@pulse-compute/jwt 0.0.0 → 1.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/README.md +58 -3
  2. package/as/index.as.ts +388 -0
  3. package/conformance/native-contract.json +53 -0
  4. package/dist/bearer.d.ts +4 -0
  5. package/dist/bearer.d.ts.map +1 -0
  6. package/dist/bearer.js +33 -0
  7. package/dist/bearer.js.map +1 -0
  8. package/dist/crypto-verifier.d.ts +19 -0
  9. package/dist/crypto-verifier.d.ts.map +1 -0
  10. package/dist/crypto-verifier.js +225 -0
  11. package/dist/crypto-verifier.js.map +1 -0
  12. package/dist/errors.d.ts +14 -0
  13. package/dist/errors.d.ts.map +1 -0
  14. package/dist/errors.js +65 -0
  15. package/dist/errors.js.map +1 -0
  16. package/dist/index.d.ts +19 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +21 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/internal/clock.d.ts +7 -0
  21. package/dist/internal/clock.d.ts.map +1 -0
  22. package/dist/internal/clock.js +34 -0
  23. package/dist/internal/clock.js.map +1 -0
  24. package/dist/internal/data.d.ts +12 -0
  25. package/dist/internal/data.d.ts.map +1 -0
  26. package/dist/internal/data.js +86 -0
  27. package/dist/internal/data.js.map +1 -0
  28. package/dist/internal/package-runtime.d.ts +9 -0
  29. package/dist/internal/package-runtime.d.ts.map +1 -0
  30. package/dist/internal/package-runtime.js +14 -0
  31. package/dist/internal/package-runtime.js.map +1 -0
  32. package/dist/internal/registered-claims.d.ts +3 -0
  33. package/dist/internal/registered-claims.d.ts.map +1 -0
  34. package/dist/internal/registered-claims.js +84 -0
  35. package/dist/internal/registered-claims.js.map +1 -0
  36. package/dist/internal/verifier-authority.d.ts +24 -0
  37. package/dist/internal/verifier-authority.d.ts.map +1 -0
  38. package/dist/internal/verifier-authority.js +101 -0
  39. package/dist/internal/verifier-authority.js.map +1 -0
  40. package/dist/options.d.ts +113 -0
  41. package/dist/options.d.ts.map +1 -0
  42. package/dist/options.js +382 -0
  43. package/dist/options.js.map +1 -0
  44. package/dist/provider.d.ts +7 -0
  45. package/dist/provider.d.ts.map +1 -0
  46. package/dist/provider.js +7 -0
  47. package/dist/provider.js.map +1 -0
  48. package/dist/result.d.ts +17 -0
  49. package/dist/result.d.ts.map +1 -0
  50. package/dist/result.js +96 -0
  51. package/dist/result.js.map +1 -0
  52. package/dist/token.d.ts +20 -0
  53. package/dist/token.d.ts.map +1 -0
  54. package/dist/token.js +323 -0
  55. package/dist/token.js.map +1 -0
  56. package/package.json +64 -6
  57. package/pulse.package.json +75 -0
  58. package/pulsewasm.compiler.cjs +1258 -0
  59. package/pulsewasm.manifest.cjs +117 -0
  60. package/pulsewasm.native.cjs +60 -0
@@ -0,0 +1,382 @@
1
+ import { normalizeP256PublicKeyCoordinates } from '@pulse-compute/crypto';
2
+ import { jwtError } from './errors.js';
3
+ import { jwtDataRecord, jwtDenseArrayValues, } from './internal/data.js';
4
+ export const JWT_ALGORITHMS = Object.freeze(['HS256', 'RS256', 'ES256', 'EdDSA']);
5
+ const PRIVATE_JWK_MEMBERS = Object.freeze(['d', 'p', 'q', 'dp', 'dq', 'qi', 'oth', 'k']);
6
+ const JWK_MEMBERS = new Set([
7
+ 'kty', 'use', 'key_ops', 'alg', 'kid', 'ext',
8
+ 'n', 'e', 'crv', 'x', 'y', 'x5c', 'x5t', 'x5t#S256',
9
+ ]);
10
+ const ES256_JWK_MEMBERS = new Set([
11
+ 'kty', 'crv', 'x', 'y', 'alg', 'use', 'key_ops', 'kid',
12
+ ]);
13
+ const MAX_JWKS_KEYS = 16;
14
+ const MAX_REQUIRED_CLAIMS = 32;
15
+ const MAX_CLOCK_TOLERANCE_SECONDS = 300;
16
+ const MAX_TOKEN_AGE_SECONDS = 31_536_000;
17
+ /**
18
+ * G0 contract freeze only. G3 owns making these rules executable.
19
+ *
20
+ * JWT owns public JWK/JWKS shape and deterministic key selection. The
21
+ * crypto-owned adapter owns coordinate/signature decoding into fixed bytes.
22
+ */
23
+ export const JWT_ES256_KEY_NORMALIZATION_CONTRACT = Object.freeze({
24
+ version: 'pulse.jwt.es256-key-normalization.v1',
25
+ status: 'executable-g3',
26
+ algorithm: 'ES256',
27
+ inlineJwk: Object.freeze({
28
+ requiredMembers: Object.freeze(['kty', 'crv', 'x', 'y']),
29
+ optionalMembers: Object.freeze([
30
+ 'alg',
31
+ 'use',
32
+ 'key_ops',
33
+ 'kid',
34
+ ]),
35
+ exactValues: Object.freeze({
36
+ kty: 'EC',
37
+ crv: 'P-256',
38
+ alg: 'absent-or-ES256',
39
+ use: 'absent-or-sig',
40
+ key_ops: 'absent-or-exactly-verify',
41
+ }),
42
+ coordinateEncoding: 'canonical-unpadded-base64url',
43
+ coordinateBytes: 32,
44
+ privateMembersRejected: true,
45
+ unknownMembersRejected: true,
46
+ certificateMembersRejected: true,
47
+ }),
48
+ jwks: Object.freeze({
49
+ kind: 'bounded-static-inline',
50
+ entriesMaximum: MAX_JWKS_KEYS,
51
+ remoteDiscovery: false,
52
+ fetch: false,
53
+ cache: false,
54
+ refresh: false,
55
+ duplicateKid: 'reject-entire-set',
56
+ selection: 'kid-exact-or-single-eligible-key',
57
+ selectedKeyFailure: 'terminal-no-retry',
58
+ }),
59
+ cryptoAdapter: Object.freeze({
60
+ publicKeyType: 'p256-public-key-bytes',
61
+ publicKeyEncoding: 'x-y-big-endian',
62
+ publicKeyBytes: 64,
63
+ signatureEncoding: 'jose-r-s-big-endian',
64
+ signatureBytes: 64,
65
+ derAccepted: false,
66
+ highS: 'accepted-if-otherwise-valid',
67
+ }),
68
+ exactSigningInput: true,
69
+ claimsBeforeAuthenticity: false,
70
+ automaticFallback: false,
71
+ });
72
+ function requireKnownKeys(entries, allowed, category) {
73
+ if ([...entries.keys()].some((key) => !allowed.has(key))) {
74
+ throw jwtError(category === 'key' ? 'PULSE_JWT_KEY_INVALID' : 'PULSE_JWT_OPERATION_FAILED', { category });
75
+ }
76
+ }
77
+ function nonEmptyString(value, category) {
78
+ if (typeof value !== 'string' || value.trim().length === 0 || value.includes('\0')) {
79
+ throw jwtError(category === 'key' ? 'PULSE_JWT_KEY_INVALID' : 'PULSE_JWT_OPERATION_FAILED', { category });
80
+ }
81
+ return value;
82
+ }
83
+ function arrayDataValues(value, category) {
84
+ const output = jwtDenseArrayValues(value);
85
+ if (!output) {
86
+ throw jwtError(category === 'key' ? 'PULSE_JWT_KEY_INVALID' : 'PULSE_JWT_OPERATION_FAILED', { category });
87
+ }
88
+ return output;
89
+ }
90
+ function stringList(value, category, maximum) {
91
+ const values = arrayDataValues(value, category);
92
+ if (values.length === 0) {
93
+ throw jwtError(category === 'key' ? 'PULSE_JWT_KEY_INVALID' : 'PULSE_JWT_OPERATION_FAILED', { category });
94
+ }
95
+ if (maximum !== undefined && values.length > maximum) {
96
+ throw jwtError('PULSE_JWT_LIMIT_EXCEEDED', {
97
+ category,
98
+ limit: maximum,
99
+ actual: values.length,
100
+ });
101
+ }
102
+ const normalized = values.map((entry) => nonEmptyString(entry, category));
103
+ if (new Set(normalized).size !== normalized.length) {
104
+ throw jwtError(category === 'key' ? 'PULSE_JWT_KEY_INVALID' : 'PULSE_JWT_OPERATION_FAILED', { category });
105
+ }
106
+ return Object.freeze(normalized);
107
+ }
108
+ function optionalStringOrList(value, category) {
109
+ if (value === undefined)
110
+ return undefined;
111
+ if (Array.isArray(value))
112
+ return stringList(value, category);
113
+ return nonEmptyString(value, category);
114
+ }
115
+ function integerOption(value, name, minimum, maximum) {
116
+ if (value === undefined)
117
+ return undefined;
118
+ if (!Number.isSafeInteger(value) || Number(value) < minimum) {
119
+ throw jwtError('PULSE_JWT_OPERATION_FAILED', { category: name });
120
+ }
121
+ if (Number(value) > maximum) {
122
+ throw jwtError('PULSE_JWT_LIMIT_EXCEEDED', {
123
+ category: name,
124
+ limit: maximum,
125
+ actual: Number(value),
126
+ });
127
+ }
128
+ return Number(value);
129
+ }
130
+ function normalizeAlgorithms(value) {
131
+ const values = arrayDataValues(value, 'options');
132
+ if (values.length === 0) {
133
+ throw jwtError('PULSE_JWT_ALGORITHM_NOT_ALLOWED', { category: 'algorithms' });
134
+ }
135
+ if (values.length > JWT_ALGORITHMS.length) {
136
+ throw jwtError('PULSE_JWT_LIMIT_EXCEEDED', {
137
+ category: 'algorithms',
138
+ limit: JWT_ALGORITHMS.length,
139
+ actual: values.length,
140
+ });
141
+ }
142
+ const output = values.map((entry) => {
143
+ if (typeof entry !== 'string' || !JWT_ALGORITHMS.includes(entry)) {
144
+ throw jwtError('PULSE_JWT_ALGORITHM_NOT_ALLOWED', { category: 'algorithms' });
145
+ }
146
+ return entry;
147
+ });
148
+ if (new Set(output).size !== output.length) {
149
+ throw jwtError('PULSE_JWT_ALGORITHM_NOT_ALLOWED', { category: 'algorithms' });
150
+ }
151
+ return Object.freeze(output);
152
+ }
153
+ function compatibleAlgorithm(jwk, algorithm) {
154
+ const record = jwtDataRecord(jwk);
155
+ if (!record)
156
+ return false;
157
+ const keyAlgorithm = record.get('alg');
158
+ const keyType = record.get('kty');
159
+ const curve = record.get('crv');
160
+ if (keyAlgorithm !== undefined && keyAlgorithm !== algorithm)
161
+ return false;
162
+ if (algorithm === 'RS256')
163
+ return keyType === 'RSA';
164
+ if (algorithm === 'ES256')
165
+ return keyType === 'EC' && curve === 'P-256';
166
+ if (algorithm === 'EdDSA')
167
+ return keyType === 'OKP' && curve === 'Ed25519';
168
+ return false;
169
+ }
170
+ function normalizePublicJwk(value) {
171
+ const record = jwtDataRecord(value);
172
+ if (!record)
173
+ throw jwtError('PULSE_JWT_KEY_INVALID', { category: 'key' });
174
+ const declaredType = record.get('kty');
175
+ if ([...record.keys()].some((key) => PRIVATE_JWK_MEMBERS.includes(key))
176
+ || [...record.keys()].some((key) => (declaredType === 'EC'
177
+ ? !ES256_JWK_MEMBERS.has(key)
178
+ : !JWK_MEMBERS.has(key)))) {
179
+ throw jwtError('PULSE_JWT_KEY_INVALID', { category: 'key' });
180
+ }
181
+ const kty = nonEmptyString(record.get('kty'), 'key');
182
+ const output = { kty };
183
+ for (const name of ['use', 'alg', 'kid', 'n', 'e', 'crv', 'x', 'y', 'x5t', 'x5t#S256']) {
184
+ const entry = record.get(name);
185
+ if (entry !== undefined)
186
+ output[name] = nonEmptyString(entry, 'key');
187
+ }
188
+ const ext = record.get('ext');
189
+ if (ext !== undefined) {
190
+ if (typeof ext !== 'boolean')
191
+ throw jwtError('PULSE_JWT_KEY_INVALID', { category: 'key' });
192
+ output.ext = ext;
193
+ }
194
+ const keyOperations = record.get('key_ops');
195
+ if (keyOperations !== undefined) {
196
+ const operations = stringList(keyOperations, 'key');
197
+ if (!operations.includes('verify') || operations.some((operation) => operation !== 'verify')) {
198
+ throw jwtError('PULSE_JWT_KEY_INVALID', { category: 'key' });
199
+ }
200
+ output.key_ops = operations;
201
+ }
202
+ const certificateChain = record.get('x5c');
203
+ if (certificateChain !== undefined)
204
+ output.x5c = stringList(certificateChain, 'key');
205
+ if (output.use !== undefined && output.use !== 'sig') {
206
+ throw jwtError('PULSE_JWT_KEY_INVALID', { category: 'key' });
207
+ }
208
+ if (kty === 'RSA') {
209
+ nonEmptyString(output.n, 'key');
210
+ nonEmptyString(output.e, 'key');
211
+ }
212
+ else if (kty === 'EC') {
213
+ if (output.crv !== 'P-256')
214
+ throw jwtError('PULSE_JWT_KEY_INVALID', { category: 'key' });
215
+ const x = nonEmptyString(output.x, 'key');
216
+ const y = nonEmptyString(output.y, 'key');
217
+ if (output.alg !== undefined && output.alg !== 'ES256') {
218
+ throw jwtError('PULSE_JWT_KEY_INVALID', { category: 'algorithm-key-mismatch' });
219
+ }
220
+ const normalized = normalizeP256PublicKeyCoordinates({ x, y });
221
+ if (!normalized.ok) {
222
+ throw jwtError('PULSE_JWT_KEY_INVALID', { category: 'key-coordinate' });
223
+ }
224
+ normalized.key.bytes.fill(0);
225
+ }
226
+ else if (kty === 'OKP') {
227
+ if (output.crv !== 'Ed25519')
228
+ throw jwtError('PULSE_JWT_KEY_INVALID', { category: 'key' });
229
+ nonEmptyString(output.x, 'key');
230
+ }
231
+ else {
232
+ throw jwtError('PULSE_JWT_KEY_INVALID', { category: 'key' });
233
+ }
234
+ if (output.alg !== undefined && !JWT_ALGORITHMS.includes(String(output.alg))) {
235
+ throw jwtError('PULSE_JWT_KEY_INVALID', { category: 'key' });
236
+ }
237
+ return Object.freeze(output);
238
+ }
239
+ function assertKeyAlgorithms(key, algorithms) {
240
+ if (key.type === 'secret') {
241
+ if (algorithms.some((algorithm) => algorithm !== 'HS256')) {
242
+ throw jwtError('PULSE_JWT_KEY_INVALID', { category: 'algorithm-key-mismatch' });
243
+ }
244
+ return;
245
+ }
246
+ if (algorithms.includes('HS256')) {
247
+ throw jwtError('PULSE_JWT_KEY_INVALID', { category: 'algorithm-key-mismatch' });
248
+ }
249
+ const keys = key.type === 'jwk' ? [key.key] : key.keys;
250
+ if (algorithms.some((algorithm) => !keys.some((jwk) => compatibleAlgorithm(jwk, algorithm)))) {
251
+ throw jwtError('PULSE_JWT_KEY_INVALID', { category: 'algorithm-key-mismatch' });
252
+ }
253
+ }
254
+ function normalizeKey(value, algorithms) {
255
+ const record = jwtDataRecord(value);
256
+ if (!record)
257
+ throw jwtError('PULSE_JWT_KEY_INVALID', { category: 'key' });
258
+ const type = record.get('type');
259
+ if (type === 'secret') {
260
+ requireKnownKeys(record, new Set(['type', 'binding']), 'key');
261
+ const key = Object.freeze({
262
+ type,
263
+ binding: nonEmptyString(record.get('binding'), 'key'),
264
+ });
265
+ assertKeyAlgorithms(key, algorithms);
266
+ return key;
267
+ }
268
+ if (type === 'jwk') {
269
+ requireKnownKeys(record, new Set(['type', 'key']), 'key');
270
+ const key = Object.freeze({
271
+ type,
272
+ key: normalizePublicJwk(record.get('key')),
273
+ });
274
+ assertKeyAlgorithms(key, algorithms);
275
+ return key;
276
+ }
277
+ if (type === 'jwks') {
278
+ requireKnownKeys(record, new Set(['type', 'keys']), 'key');
279
+ const keyValues = arrayDataValues(record.get('keys'), 'key');
280
+ if (keyValues.length === 0) {
281
+ throw jwtError('PULSE_JWT_KEY_INVALID', { category: 'key' });
282
+ }
283
+ if (keyValues.length > MAX_JWKS_KEYS) {
284
+ throw jwtError('PULSE_JWT_LIMIT_EXCEEDED', {
285
+ category: 'jwks',
286
+ limit: MAX_JWKS_KEYS,
287
+ actual: keyValues.length,
288
+ });
289
+ }
290
+ const keys = Object.freeze(keyValues.map(normalizePublicJwk));
291
+ const kids = keys.map((entry) => entry.kid).filter((kid) => kid !== undefined);
292
+ if (new Set(kids).size !== kids.length) {
293
+ throw jwtError('PULSE_JWT_KEY_INVALID', { category: 'duplicate-kid' });
294
+ }
295
+ const key = Object.freeze({ type, keys });
296
+ assertKeyAlgorithms(key, algorithms);
297
+ return key;
298
+ }
299
+ throw jwtError('PULSE_JWT_KEY_INVALID', { category: 'key' });
300
+ }
301
+ export function normalizeJwtVerifyOptions(value) {
302
+ const record = jwtDataRecord(value);
303
+ if (!record)
304
+ throw jwtError('PULSE_JWT_OPERATION_FAILED', { category: 'options' });
305
+ requireKnownKeys(record, new Set([
306
+ 'algorithms', 'key', 'issuer', 'audience', 'subject', 'typ',
307
+ 'clockToleranceSeconds', 'maxTokenAgeSeconds', 'requiredClaims', 'claimsSchema',
308
+ ]), 'options');
309
+ const algorithms = normalizeAlgorithms(record.get('algorithms'));
310
+ const key = normalizeKey(record.get('key'), algorithms);
311
+ const issuer = optionalStringOrList(record.get('issuer'), 'options');
312
+ const audience = optionalStringOrList(record.get('audience'), 'options');
313
+ const subjectValue = record.get('subject');
314
+ const typValue = record.get('typ');
315
+ const subject = subjectValue === undefined ? undefined : nonEmptyString(subjectValue, 'options');
316
+ const typ = typValue === undefined ? undefined : nonEmptyString(typValue, 'options');
317
+ const clockToleranceSeconds = integerOption(record.get('clockToleranceSeconds'), 'clock-tolerance', 0, MAX_CLOCK_TOLERANCE_SECONDS);
318
+ const maxTokenAgeSeconds = integerOption(record.get('maxTokenAgeSeconds'), 'max-token-age', 1, MAX_TOKEN_AGE_SECONDS);
319
+ const requiredClaimsValue = record.get('requiredClaims');
320
+ const requiredClaims = requiredClaimsValue === undefined
321
+ ? undefined
322
+ : stringList(requiredClaimsValue, 'options', MAX_REQUIRED_CLAIMS);
323
+ const claimsSchemaValue = record.get('claimsSchema');
324
+ const claimsSchema = claimsSchemaValue === undefined
325
+ ? undefined
326
+ : nonEmptyString(claimsSchemaValue, 'options');
327
+ return Object.freeze({
328
+ algorithms,
329
+ key,
330
+ ...(issuer === undefined ? {} : { issuer }),
331
+ ...(audience === undefined ? {} : { audience }),
332
+ ...(subject === undefined ? {} : { subject }),
333
+ ...(typ === undefined ? {} : { typ }),
334
+ ...(clockToleranceSeconds === undefined ? {} : { clockToleranceSeconds }),
335
+ ...(maxTokenAgeSeconds === undefined ? {} : { maxTokenAgeSeconds }),
336
+ ...(requiredClaims === undefined ? {} : { requiredClaims }),
337
+ ...(claimsSchema === undefined ? {} : { claimsSchema }),
338
+ });
339
+ }
340
+ export function isJwkCompatibleWithAlgorithm(jwk, algorithm) {
341
+ return compatibleAlgorithm(jwk, algorithm);
342
+ }
343
+ export function selectEs256VerificationJwk(key, kid) {
344
+ if (key.type === 'secret') {
345
+ throw jwtError('PULSE_JWT_KEY_INVALID', {
346
+ category: 'algorithm-key-mismatch',
347
+ });
348
+ }
349
+ if (key.type === 'jwk') {
350
+ if (!compatibleAlgorithm(key.key, 'ES256')) {
351
+ throw jwtError('PULSE_JWT_KEY_INVALID', {
352
+ category: 'algorithm-key-mismatch',
353
+ });
354
+ }
355
+ if (kid !== undefined && key.key.kid !== undefined && key.key.kid !== kid) {
356
+ throw jwtError('PULSE_JWT_KEY_INVALID', { category: 'unknown-kid' });
357
+ }
358
+ return key.key;
359
+ }
360
+ if (kid !== undefined) {
361
+ const selected = key.keys.filter((entry) => entry.kid === kid);
362
+ if (selected.length !== 1) {
363
+ throw jwtError('PULSE_JWT_KEY_INVALID', {
364
+ category: selected.length === 0 ? 'unknown-kid' : 'duplicate-kid',
365
+ });
366
+ }
367
+ if (!compatibleAlgorithm(selected[0], 'ES256')) {
368
+ throw jwtError('PULSE_JWT_KEY_INVALID', {
369
+ category: 'algorithm-key-mismatch',
370
+ });
371
+ }
372
+ return selected[0];
373
+ }
374
+ const eligible = key.keys.filter((entry) => (compatibleAlgorithm(entry, 'ES256')));
375
+ if (eligible.length !== 1) {
376
+ throw jwtError('PULSE_JWT_KEY_INVALID', {
377
+ category: eligible.length === 0 ? 'missing-kid' : 'ambiguous-key',
378
+ });
379
+ }
380
+ return eligible[0];
381
+ }
382
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { verifyJwtWithCrypto, type JwtCryptoMacVerify, type JwtCryptoVerifier, type JwtCryptoVerifierHost, type JwtCryptoVerifierInput, } from './crypto-verifier.js';
2
+ export { normalizeJwtVerifyOptions, type JwtAlgorithm, type JwtClaims, type JwtJsonPrimitive, type JwtJsonValue, type JwtPublicJwk, type JwtVerificationKey, type JwtVerifyOptions, } from './options.js';
3
+ export { normalizeJwtVerification, type DeepReadonly, type JwtProtectedHeader, type JwtVerification, } from './result.js';
4
+ export { JwtError, JWT_ERROR_CODES, isJwtError, jwtError, type JwtErrorCode, } from './errors.js';
5
+ export { bearerFromAuthorizationValue, } from './bearer.js';
6
+ export { captureJwtCurrentDate, type JwtCapturedWallClock, type JwtWallClockCapture, } from './internal/clock.js';
7
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,yBAAyB,EACzB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,wBAAwB,EACxB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,eAAe,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,QAAQ,EACR,eAAe,EACf,UAAU,EACV,QAAQ,EACR,KAAK,YAAY,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,4BAA4B,GAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,qBAAqB,EACrB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { verifyJwtWithCrypto, } from './crypto-verifier.js';
2
+ export { normalizeJwtVerifyOptions, } from './options.js';
3
+ export { normalizeJwtVerification, } from './result.js';
4
+ export { JwtError, JWT_ERROR_CODES, isJwtError, jwtError, } from './errors.js';
5
+ export { bearerFromAuthorizationValue, } from './bearer.js';
6
+ export { captureJwtCurrentDate, } from './internal/clock.js';
7
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,GAKpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,yBAAyB,GAQ1B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,wBAAwB,GAIzB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,QAAQ,EACR,eAAe,EACf,UAAU,EACV,QAAQ,GAET,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,4BAA4B,GAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,qBAAqB,GAGtB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { JwtAlgorithm, JwtClaims } from './options.js';
2
+ export type DeepReadonly<Value> = Value extends JwtJsonPrimitive ? Value : Value extends readonly (infer Item)[] ? readonly DeepReadonly<Item>[] : Value extends object ? {
3
+ readonly [Key in keyof Value]: DeepReadonly<Value[Key]>;
4
+ } : never;
5
+ type JwtJsonPrimitive = string | number | boolean | null;
6
+ export interface JwtProtectedHeader {
7
+ readonly alg: JwtAlgorithm;
8
+ readonly kid?: string;
9
+ readonly typ?: string;
10
+ }
11
+ export interface JwtVerification<Claims = JwtClaims> {
12
+ readonly claims: DeepReadonly<Claims>;
13
+ readonly protectedHeader: Readonly<JwtProtectedHeader>;
14
+ }
15
+ export declare function normalizeJwtVerification<Claims = JwtClaims>(value: unknown): JwtVerification<Claims>;
16
+ export {};
17
+ //# sourceMappingURL=result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAgB,MAAM,cAAc,CAAC;AAE1E,MAAM,MAAM,YAAY,CAAC,KAAK,IAC5B,KAAK,SAAS,gBAAgB,GAAG,KAAK,GAClC,KAAK,SAAS,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,GAAG,SAAS,YAAY,CAAC,IAAI,CAAC,EAAE,GACnE,KAAK,SAAS,MAAM,GAAG;IAAE,QAAQ,EAAE,GAAG,IAAI,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CAAE,GAChF,KAAK,CAAC;AAEhB,KAAK,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAEzD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;IAC3B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe,CAAC,MAAM,GAAG,SAAS;IACjD,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;CACxD;AAmDD,wBAAgB,wBAAwB,CAAC,MAAM,GAAG,SAAS,EACzD,KAAK,EAAE,OAAO,GACb,eAAe,CAAC,MAAM,CAAC,CA+CzB"}
package/dist/result.js ADDED
@@ -0,0 +1,96 @@
1
+ import { jwtError } from './errors.js';
2
+ import { defineJwtDataProperty, isJwtOrdinaryObject, jwtDataEntries, jwtDenseArrayValues, jwtOwnDataProperty, } from './internal/data.js';
3
+ function dataProperty(value, name) {
4
+ const property = jwtOwnDataProperty(value, name);
5
+ return property.valid && property.present ? property.value : undefined;
6
+ }
7
+ function cloneJson(value, path, depth, seen) {
8
+ if (depth > 32)
9
+ throw jwtError('PULSE_JWT_OPERATION_FAILED', { category: 'result-depth' });
10
+ if (value === null || typeof value === 'string' || typeof value === 'boolean')
11
+ return value;
12
+ if (typeof value === 'number') {
13
+ if (!Number.isFinite(value))
14
+ throw jwtError('PULSE_JWT_OPERATION_FAILED', { category: 'result-value' });
15
+ return Object.is(value, -0) ? 0 : value;
16
+ }
17
+ if (!value || typeof value !== 'object') {
18
+ throw jwtError('PULSE_JWT_OPERATION_FAILED', { category: 'result-value' });
19
+ }
20
+ if (seen.has(value))
21
+ throw jwtError('PULSE_JWT_OPERATION_FAILED', { category: 'result-value' });
22
+ seen.add(value);
23
+ try {
24
+ if (Array.isArray(value)) {
25
+ const entries = jwtDenseArrayValues(value);
26
+ if (!entries)
27
+ throw jwtError('PULSE_JWT_OPERATION_FAILED', { category: 'result-value' });
28
+ const output = [];
29
+ for (let index = 0; index < entries.length; index += 1) {
30
+ output.push(cloneJson(entries[index], `${path}[${index}]`, depth + 1, seen));
31
+ }
32
+ return Object.freeze(output);
33
+ }
34
+ if (!isJwtOrdinaryObject(value)) {
35
+ throw jwtError('PULSE_JWT_OPERATION_FAILED', { category: 'result-value' });
36
+ }
37
+ const entries = jwtDataEntries(value);
38
+ if (!entries)
39
+ throw jwtError('PULSE_JWT_OPERATION_FAILED', { category: 'result-value' });
40
+ const output = {};
41
+ for (const [key, child] of entries) {
42
+ defineJwtDataProperty(output, key, cloneJson(child, `${path}.${key}`, depth + 1, seen));
43
+ }
44
+ return Object.freeze(output);
45
+ }
46
+ finally {
47
+ seen.delete(value);
48
+ }
49
+ }
50
+ export function normalizeJwtVerification(value) {
51
+ if (!isJwtOrdinaryObject(value)) {
52
+ throw jwtError('PULSE_JWT_OPERATION_FAILED', { category: 'result' });
53
+ }
54
+ const record = value;
55
+ const recordEntries = jwtDataEntries(record);
56
+ if (!recordEntries
57
+ || recordEntries.length !== 2
58
+ || !recordEntries.some(([name]) => name === 'claims')
59
+ || !recordEntries.some(([name]) => name === 'protectedHeader')) {
60
+ throw jwtError('PULSE_JWT_OPERATION_FAILED', { category: 'result' });
61
+ }
62
+ const header = dataProperty(record, 'protectedHeader');
63
+ if (!isJwtOrdinaryObject(header)) {
64
+ throw jwtError('PULSE_JWT_OPERATION_FAILED', { category: 'result-header' });
65
+ }
66
+ const headerRecord = header;
67
+ const headerEntries = jwtDataEntries(headerRecord);
68
+ if (!headerEntries || headerEntries.some(([name]) => !['alg', 'kid', 'typ'].includes(name))) {
69
+ throw jwtError('PULSE_JWT_OPERATION_FAILED', { category: 'result-header' });
70
+ }
71
+ const alg = dataProperty(headerRecord, 'alg');
72
+ if (!['HS256', 'RS256', 'ES256', 'EdDSA'].includes(String(alg))) {
73
+ throw jwtError('PULSE_JWT_OPERATION_FAILED', { category: 'result-header' });
74
+ }
75
+ const kid = dataProperty(headerRecord, 'kid');
76
+ const typ = dataProperty(headerRecord, 'typ');
77
+ if (kid !== undefined && typeof kid !== 'string') {
78
+ throw jwtError('PULSE_JWT_OPERATION_FAILED', { category: 'result-header' });
79
+ }
80
+ if (typ !== undefined && typeof typ !== 'string') {
81
+ throw jwtError('PULSE_JWT_OPERATION_FAILED', { category: 'result-header' });
82
+ }
83
+ const claims = cloneJson(dataProperty(record, 'claims'), '$', 0, new Set());
84
+ if (!claims || typeof claims !== 'object' || Array.isArray(claims)) {
85
+ throw jwtError('PULSE_JWT_OPERATION_FAILED', { category: 'result-claims' });
86
+ }
87
+ return Object.freeze({
88
+ claims: claims,
89
+ protectedHeader: Object.freeze({
90
+ alg: alg,
91
+ ...(kid === undefined ? {} : { kid }),
92
+ ...(typ === undefined ? {} : { typ }),
93
+ }),
94
+ });
95
+ }
96
+ //# sourceMappingURL=result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.js","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { JwtClaims, JwtJsonValue } from './options.js';
2
+ export interface JwtPreflight {
3
+ readonly protectedHeader: Readonly<Record<string, JwtJsonValue>>;
4
+ readonly claimsText: string;
5
+ }
6
+ export interface JwtCompactSignatureInput {
7
+ readonly signingInput: Uint8Array;
8
+ readonly signature: Uint8Array;
9
+ }
10
+ export interface JwtCompactParts {
11
+ readonly signingInput: Uint8Array;
12
+ readonly signatureSegment: string;
13
+ }
14
+ export declare function preflightCompactJwt(token: string | undefined): JwtPreflight;
15
+ export declare function protectedAlgorithm(header: Readonly<Record<string, JwtJsonValue>>): string;
16
+ export declare function protectedHeaderString(header: Readonly<Record<string, JwtJsonValue>>, name: 'kid' | 'typ'): string | undefined;
17
+ export declare function parseVerifiedClaims(preflight: JwtPreflight): JwtClaims;
18
+ export declare function compactJwtSignatureInput(token: string): JwtCompactSignatureInput;
19
+ export declare function compactJwtParts(token: string): JwtCompactParts;
20
+ //# sourceMappingURL=token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAQ5D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IACjE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC;IAClC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAsOD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAqC3E;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,GAAG,MAAM,CAgBzF;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,EAC9C,IAAI,EAAE,KAAK,GAAG,KAAK,GAClB,MAAM,GAAG,SAAS,CAUpB;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,YAAY,GAAG,SAAS,CAEtE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,wBAAwB,CAMhF;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAS9D"}