Skip to content

Commit 06d8101

Browse files
committed
revert: Revert "fix(types): headers and payloads may only be JSON values and primitives"
This reverts commit 24f306e. Closes #534
1 parent ec4762d commit 06d8101

File tree

12 files changed

+14
-108
lines changed

12 files changed

+14
-108
lines changed

docs/modules/types.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,6 @@ Support from the community to continue maintaining and improving this module is
1010

1111
### Type Aliases
1212

13-
- [JsonArray](../types/types.JsonArray.md)
14-
- [JsonObject](../types/types.JsonObject.md)
15-
- [JsonPrimitive](../types/types.JsonPrimitive.md)
16-
- [JsonValue](../types/types.JsonValue.md)
1713
- [KeyLike](../types/types.KeyLike.md)
1814

1915
### Interfaces

docs/types/types.JsonArray.md

Lines changed: 0 additions & 9 deletions
This file was deleted.

docs/types/types.JsonObject.md

Lines changed: 0 additions & 9 deletions
This file was deleted.

docs/types/types.JsonPrimitive.md

Lines changed: 0 additions & 9 deletions
This file was deleted.

docs/types/types.JsonValue.md

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/jwe/flattened/encrypt.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import encrypt from '../../runtime/encrypt.js'
33
import { deflate } from '../../runtime/zlib.js'
44

55
import type {
6-
JsonValue,
76
KeyLike,
87
FlattenedJWE,
98
JWEHeaderParameters,
@@ -226,7 +225,7 @@ export class FlattenedEncrypt {
226225

227226
let cek: KeyLike | Uint8Array
228227
{
229-
let parameters: { [parameter: string]: JsonValue | undefined } | undefined
228+
let parameters: { [propName: string]: unknown } | undefined
230229
;({ cek, encryptedKey, parameters } = await encryptKeyManagement(
231230
alg,
232231
enc,

src/lib/jwt_claims_set.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import type {
2-
JsonValue,
32
JWTPayload,
43
JWTClaimVerificationOptions,
54
JWEHeaderParameters,
@@ -41,7 +40,7 @@ export default (
4140
throw new JWTClaimValidationFailed('unexpected "typ" JWT header value', 'typ', 'check_failed')
4241
}
4342

44-
let payload!: { [propName: string]: JsonValue | undefined }
43+
let payload!: { [propName: string]: unknown }
4544
try {
4645
payload = JSON.parse(decoder.decode(encodedPayload))
4746
} catch {

src/lib/validate_crit.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
import type { JsonValue } from '../types.d'
21
import { JOSENotSupported, JWEInvalid, JWSInvalid } from '../util/errors.js'
32

43
interface CritCheckHeader {
54
b64?: boolean
65
crit?: string[]
7-
[propName: string]: JsonValue | undefined
6+
[propName: string]: unknown
87
}
98

109
function validateCrit(

src/runtime/interfaces.d.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { JWK, KeyLike, JsonValue } from '../types.d'
1+
import type { JWK, KeyLike } from '../types.d'
22
import type { PEMImportOptions } from '../key/import.js'
33

44
type AsyncOrSync<T> = Promise<T> | T
@@ -57,9 +57,7 @@ export interface DecryptFunction {
5757
): AsyncOrSync<Uint8Array>
5858
}
5959
export interface FetchFunction {
60-
(url: URL, timeout: number, options?: any): Promise<{
61-
[parameter: string]: JsonValue | undefined
62-
}>
60+
(url: URL, timeout: number, options?: any): Promise<{ [propName: string]: unknown }>
6361
}
6462
export interface DigestFunction {
6563
(digest: 'sha256' | 'sha384' | 'sha512', data: Uint8Array): AsyncOrSync<Uint8Array>

src/runtime/node/key_to_jwk.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ const keyToJWK: JWKExportFunction = (key: unknown): JWK => {
3636
) {
3737
throw new JOSENotSupported('Unsupported key asymmetricKeyType')
3838
}
39-
return <JWK>keyObject.export({ format: 'jwk' })
39+
return keyObject.export({ format: 'jwk' })
4040
}
4141

4242
switch (keyObject.type) {
@@ -112,7 +112,7 @@ const keyToJWK: JWKExportFunction = (key: unknown): JWK => {
112112
if (der.length < 100) {
113113
offset += correction
114114
}
115-
return <JWK>{
115+
return {
116116
...keyToJWK(createPublicKey(keyObject)),
117117
d: base64url(der.subarray(offset, offset + len / 2)),
118118
}
@@ -130,7 +130,7 @@ const keyToJWK: JWKExportFunction = (key: unknown): JWK => {
130130
}
131131

132132
const der = keyObject.export({ type: 'pkcs8', format: 'der' })
133-
return <JWK>{
133+
return {
134134
...keyToJWK(createPublicKey(keyObject)),
135135
d: base64url(der.subarray(-32)),
136136
}
@@ -148,7 +148,7 @@ const keyToJWK: JWKExportFunction = (key: unknown): JWK => {
148148
}
149149

150150
const der = keyObject.export({ type: 'pkcs8', format: 'der' })
151-
return <JWK>{
151+
return {
152152
...keyToJWK(createPublicKey(keyObject)),
153153
d: base64url(der.subarray(crv === 'Ed448' ? -57 : -56)),
154154
}

src/types.d.ts

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -91,11 +91,6 @@
9191
*/
9292
export type KeyLike = { type: string }
9393

94-
type JsonObject = { [Key in string]?: JsonValue }
95-
type JsonArray = JsonValue[]
96-
type JsonPrimitive = string | number | boolean | null
97-
type JsonValue = JsonPrimitive | JsonObject | JsonArray
98-
9994
/**
10095
* JSON Web Key ({@link https://www.rfc-editor.org/rfc/rfc7517 JWK}). "RSA", "EC", "OKP", and "oct"
10196
* key types are supported.
@@ -139,7 +134,7 @@ export interface JWK {
139134
/** JWK "x5u" (X.509 URL) Parameter. */
140135
x5u?: string
141136

142-
[propName: string]: JsonValue | undefined
137+
[propName: string]: unknown
143138
}
144139

145140
/**
@@ -263,7 +258,7 @@ export interface JWSHeaderParameters extends JoseHeaderParameters {
263258
crit?: string[]
264259

265260
/** Any other JWS Header member. */
266-
[propName: string]: JsonValue | undefined
261+
[propName: string]: unknown
267262
}
268263

269264
/** Recognized JWE Key Management-related Header Parameters. */
@@ -371,7 +366,7 @@ export interface JWEHeaderParameters extends JoseHeaderParameters {
371366
zip?: string
372367

373368
/** Any other JWE Header member. */
374-
[propName: string]: JsonValue | undefined
369+
[propName: string]: unknown
375370
}
376371

377372
/** Shared Interface with a "crit" property for all sign, verify, encrypt and decrypt operations. */
@@ -545,7 +540,7 @@ export interface JWTPayload {
545540
iat?: number
546541

547542
/** Any other JWT Claim Set member. */
548-
[propName: string]: JsonValue | undefined
543+
[propName: string]: unknown
549544
}
550545

551546
/**

test/types/index.test-d.ts

Lines changed: 1 addition & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { KeyObject } from 'crypto'
2-
import { expectError, expectType } from 'tsd'
2+
import { expectType } from 'tsd'
33

44
import * as lib from '../../dist/types'
55

@@ -208,47 +208,3 @@ expectType<KeyObject>(await lib.createRemoteJWKSet<KeyObject>(new URL(''))())
208208
expectType<lib.KeyLike>(await lib.EmbeddedJWK())
209209
expectType<CryptoKey>(await lib.EmbeddedJWK())
210210
expectType<KeyObject>(await lib.EmbeddedJWK())
211-
212-
{
213-
const result = await lib.jwtVerify('', new Uint8Array())
214-
switch (typeof result.payload.unknown) {
215-
case 'bigint':
216-
case 'function':
217-
case 'symbol':
218-
expectType<never>(result.payload.unknown)
219-
}
220-
221-
switch (typeof result.protectedHeader.unknown) {
222-
case 'bigint':
223-
case 'function':
224-
case 'symbol':
225-
expectType<never>(result.protectedHeader.unknown)
226-
}
227-
}
228-
229-
{
230-
const result = await lib.decodeJwt('')
231-
switch (typeof result.unknown) {
232-
case 'bigint':
233-
case 'function':
234-
case 'symbol':
235-
expectType<never>(result.unknown)
236-
}
237-
}
238-
239-
{
240-
const result = await lib.decodeProtectedHeader('')
241-
switch (typeof result.unknown) {
242-
case 'bigint':
243-
case 'function':
244-
case 'symbol':
245-
expectType<never>(result.unknown)
246-
}
247-
}
248-
249-
expectError(new lib.SignJWT({ foo() {} }))
250-
expectError(new lib.SignJWT({}).setProtectedHeader({ foo() {} }))
251-
expectError(new lib.SignJWT({ foo: Symbol() }))
252-
expectError(new lib.SignJWT({}).setProtectedHeader({ foo: Symbol() }))
253-
expectError(new lib.SignJWT({ foo: 0n }))
254-
expectError(new lib.SignJWT({}).setProtectedHeader({ foo: 0n }))

0 commit comments

Comments
 (0)