Comparing version 3.5.0 to 3.5.1
@@ -5,2 +5,9 @@ # Changelog | ||
## [3.5.1](https://github.com/panva/jose/compare/v3.5.0...v3.5.1) (2021-01-10) | ||
### Bug Fixes | ||
* workaround for RangeError in browser runtime base64url ([ed32b0d](https://github.com/panva/jose/commit/ed32b0d46ee570e405e0d88b43aecd8ef6fea129)) | ||
## [3.5.0](https://github.com/panva/jose/compare/v3.4.0...v3.5.0) (2020-12-17) | ||
@@ -7,0 +14,0 @@ |
@@ -100,3 +100,3 @@ import { JOSEAlgNotAllowed, JOSENotSupported, JWEInvalid } from '../../util/errors.js'; | ||
} | ||
cek = await generateCek(enc); | ||
cek = generateCek(enc); | ||
} | ||
@@ -103,0 +103,0 @@ const iv = base64url(jwe.iv); |
@@ -115,3 +115,3 @@ import ivFactory from '../../lib/iv.js'; | ||
} | ||
this._iv || (this._iv = await generateIv(enc)); | ||
this._iv || (this._iv = generateIv(enc)); | ||
let additionalData; | ||
@@ -118,0 +118,0 @@ let protectedHeader; |
@@ -5,10 +5,10 @@ import parseJwk from './parse.js'; | ||
export default async function EmbeddedJWK(protectedHeader, token) { | ||
const combinedHeader = { | ||
const joseHeader = { | ||
...protectedHeader, | ||
...token.header, | ||
}; | ||
if (!isObject(combinedHeader.jwk)) { | ||
if (!isObject(joseHeader.jwk)) { | ||
throw new JWSInvalid('"jwk" (JSON Web Key) Header Parameter must be a JSON object'); | ||
} | ||
const key = (await parseJwk(combinedHeader.jwk, combinedHeader.alg, true)); | ||
const key = await parseJwk(joseHeader.jwk, joseHeader.alg, true); | ||
if (key.type !== 'public') { | ||
@@ -15,0 +15,0 @@ throw new JWSInvalid('"jwk" (JSON Web Key) Header Parameter must be a public key'); |
@@ -44,2 +44,5 @@ import FlattenedSign from '../flattened/sign.js'; | ||
async sign() { | ||
if (!this._signatures.length) { | ||
throw new JWSInvalid('at least one signature must be added'); | ||
} | ||
const jws = { | ||
@@ -46,0 +49,0 @@ signatures: [], |
@@ -41,3 +41,3 @@ import cekFactory, { bitLengths as cekLengths } from '../lib/cek.js'; | ||
} | ||
cek = providedCek || (await generateCek(enc)); | ||
cek = providedCek || generateCek(enc); | ||
const kwAlg = alg.substr(-6); | ||
@@ -52,3 +52,3 @@ encryptedKey = await aesKw(kwAlg, sharedSecret, cek); | ||
case 'RSA-OAEP-512': { | ||
cek = providedCek || (await generateCek(enc)); | ||
cek = providedCek || generateCek(enc); | ||
encryptedKey = await rsaEs(alg, key, cek); | ||
@@ -60,3 +60,3 @@ break; | ||
case 'PBES2-HS512+A256KW': { | ||
cek = providedCek || (await generateCek(enc)); | ||
cek = providedCek || generateCek(enc); | ||
const { p2c, p2s } = providedParameters; | ||
@@ -69,3 +69,3 @@ ({ encryptedKey, ...parameters } = await pbes2Kw(alg, key, cek, p2c, p2s)); | ||
case 'A256KW': { | ||
cek = providedCek || (await generateCek(enc)); | ||
cek = providedCek || generateCek(enc); | ||
encryptedKey = await aesKw(alg, key, cek); | ||
@@ -77,3 +77,3 @@ break; | ||
case 'A256GCMKW': { | ||
cek = providedCek || (await generateCek(enc)); | ||
cek = providedCek || generateCek(enc); | ||
const { iv } = providedParameters; | ||
@@ -80,0 +80,0 @@ ({ encryptedKey, ...parameters } = await aesGcmKw(alg, key, cek, iv)); |
@@ -9,3 +9,3 @@ import encrypt from './encrypt.js'; | ||
const jweAlgorithm = alg.substr(0, 7); | ||
iv || (iv = await generateIv(jweAlgorithm)); | ||
iv || (iv = generateIv(jweAlgorithm)); | ||
const { ciphertext: encryptedKey, tag } = await encrypt(jweAlgorithm, cek, key, iv, new Uint8Array()); | ||
@@ -12,0 +12,0 @@ return { encryptedKey, iv: base64url(iv), tag: base64url(tag) }; |
@@ -8,3 +8,8 @@ import { encoder, decoder } from '../lib/buffer_utils.js'; | ||
} | ||
const base64string = globalThis.btoa(String.fromCharCode.apply(0, [...unencoded])); | ||
const CHUNK_SIZE = 0x8000; | ||
const arr = []; | ||
for (let i = 0; i < unencoded.length; i += CHUNK_SIZE) { | ||
arr.push(String.fromCharCode.apply(null, unencoded.subarray(i, i + CHUNK_SIZE))); | ||
} | ||
const base64string = globalThis.btoa(arr.join('')); | ||
return base64string.replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_'); | ||
@@ -18,6 +23,11 @@ }; | ||
encoded = encoded.replace(/-/g, '+').replace(/_/g, '/').replace(/\s/g, ''); | ||
return new Uint8Array(globalThis | ||
.atob(encoded) | ||
.split('') | ||
.map((c) => c.charCodeAt(0))); | ||
try { | ||
return new Uint8Array(globalThis | ||
.atob(encoded) | ||
.split('') | ||
.map((c) => c.charCodeAt(0))); | ||
} | ||
catch (_a) { | ||
throw new TypeError('The input to be decoded is not correctly encoded.'); | ||
} | ||
}; |
@@ -102,3 +102,3 @@ "use strict"; | ||
} | ||
cek = await generateCek(enc); | ||
cek = generateCek(enc); | ||
} | ||
@@ -105,0 +105,0 @@ const iv = base64url_js_1.decode(jwe.iv); |
@@ -117,3 +117,3 @@ "use strict"; | ||
} | ||
this._iv || (this._iv = await generateIv(enc)); | ||
this._iv || (this._iv = generateIv(enc)); | ||
let additionalData; | ||
@@ -120,0 +120,0 @@ let protectedHeader; |
@@ -7,10 +7,10 @@ "use strict"; | ||
async function EmbeddedJWK(protectedHeader, token) { | ||
const combinedHeader = { | ||
const joseHeader = { | ||
...protectedHeader, | ||
...token.header, | ||
}; | ||
if (!is_object_js_1.default(combinedHeader.jwk)) { | ||
if (!is_object_js_1.default(joseHeader.jwk)) { | ||
throw new errors_js_1.JWSInvalid('"jwk" (JSON Web Key) Header Parameter must be a JSON object'); | ||
} | ||
const key = (await parse_js_1.default(combinedHeader.jwk, combinedHeader.alg, true)); | ||
const key = await parse_js_1.default(joseHeader.jwk, joseHeader.alg, true); | ||
if (key.type !== 'public') { | ||
@@ -17,0 +17,0 @@ throw new errors_js_1.JWSInvalid('"jwk" (JSON Web Key) Header Parameter must be a public key'); |
@@ -46,2 +46,5 @@ "use strict"; | ||
async sign() { | ||
if (!this._signatures.length) { | ||
throw new errors_js_1.JWSInvalid('at least one signature must be added'); | ||
} | ||
const jws = { | ||
@@ -48,0 +51,0 @@ signatures: [], |
@@ -43,3 +43,3 @@ "use strict"; | ||
} | ||
cek = providedCek || (await generateCek(enc)); | ||
cek = providedCek || generateCek(enc); | ||
const kwAlg = alg.substr(-6); | ||
@@ -54,3 +54,3 @@ encryptedKey = await aeskw_js_1.wrap(kwAlg, sharedSecret, cek); | ||
case 'RSA-OAEP-512': { | ||
cek = providedCek || (await generateCek(enc)); | ||
cek = providedCek || generateCek(enc); | ||
encryptedKey = await rsaes_js_1.encrypt(alg, key, cek); | ||
@@ -62,3 +62,3 @@ break; | ||
case 'PBES2-HS512+A256KW': { | ||
cek = providedCek || (await generateCek(enc)); | ||
cek = providedCek || generateCek(enc); | ||
const { p2c, p2s } = providedParameters; | ||
@@ -71,3 +71,3 @@ ({ encryptedKey, ...parameters } = await pbes2kw_js_1.encrypt(alg, key, cek, p2c, p2s)); | ||
case 'A256KW': { | ||
cek = providedCek || (await generateCek(enc)); | ||
cek = providedCek || generateCek(enc); | ||
encryptedKey = await aeskw_js_1.wrap(alg, key, cek); | ||
@@ -79,3 +79,3 @@ break; | ||
case 'A256GCMKW': { | ||
cek = providedCek || (await generateCek(enc)); | ||
cek = providedCek || generateCek(enc); | ||
const { iv } = providedParameters; | ||
@@ -82,0 +82,0 @@ ({ encryptedKey, ...parameters } = await aesgcmkw_js_1.wrap(alg, key, cek, iv)); |
@@ -12,3 +12,3 @@ "use strict"; | ||
const jweAlgorithm = alg.substr(0, 7); | ||
iv || (iv = await generateIv(jweAlgorithm)); | ||
iv || (iv = generateIv(jweAlgorithm)); | ||
const { ciphertext: encryptedKey, tag } = await encrypt_js_1.default(jweAlgorithm, cek, key instanceof Uint8Array ? key : key.export(), iv, new Uint8Array()); | ||
@@ -15,0 +15,0 @@ return { encryptedKey, iv: base64url_js_1.encode(iv), tag: base64url_js_1.encode(tag) }; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const crypto_1 = require("crypto"); | ||
const digest = (algorithm, data) => { | ||
return crypto_1.createHash(algorithm).update(data).digest(); | ||
}; | ||
const digest = (algorithm, data) => crypto_1.createHash(algorithm).update(data).digest(); | ||
exports.default = digest; |
@@ -8,7 +8,3 @@ "use strict"; | ||
const deflateRaw = util_1.promisify(zlib_1.deflateRaw); | ||
exports.inflate = async (input) => { | ||
return inflateRaw(input); | ||
}; | ||
exports.deflate = async (input) => { | ||
return deflateRaw(input); | ||
}; | ||
exports.inflate = (input) => inflateRaw(input); | ||
exports.deflate = (input) => deflateRaw(input); |
@@ -100,3 +100,3 @@ import { JOSEAlgNotAllowed, JOSENotSupported, JWEInvalid } from '../../util/errors.js'; | ||
} | ||
cek = await generateCek(enc); | ||
cek = generateCek(enc); | ||
} | ||
@@ -103,0 +103,0 @@ const iv = base64url(jwe.iv); |
@@ -115,3 +115,3 @@ import ivFactory from '../../lib/iv.js'; | ||
} | ||
this._iv || (this._iv = await generateIv(enc)); | ||
this._iv || (this._iv = generateIv(enc)); | ||
let additionalData; | ||
@@ -118,0 +118,0 @@ let protectedHeader; |
@@ -5,10 +5,10 @@ import parseJwk from './parse.js'; | ||
export default async function EmbeddedJWK(protectedHeader, token) { | ||
const combinedHeader = { | ||
const joseHeader = { | ||
...protectedHeader, | ||
...token.header, | ||
}; | ||
if (!isObject(combinedHeader.jwk)) { | ||
if (!isObject(joseHeader.jwk)) { | ||
throw new JWSInvalid('"jwk" (JSON Web Key) Header Parameter must be a JSON object'); | ||
} | ||
const key = (await parseJwk(combinedHeader.jwk, combinedHeader.alg, true)); | ||
const key = await parseJwk(joseHeader.jwk, joseHeader.alg, true); | ||
if (key.type !== 'public') { | ||
@@ -15,0 +15,0 @@ throw new JWSInvalid('"jwk" (JSON Web Key) Header Parameter must be a public key'); |
@@ -44,2 +44,5 @@ import FlattenedSign from '../flattened/sign.js'; | ||
async sign() { | ||
if (!this._signatures.length) { | ||
throw new JWSInvalid('at least one signature must be added'); | ||
} | ||
const jws = { | ||
@@ -46,0 +49,0 @@ signatures: [], |
@@ -41,3 +41,3 @@ import cekFactory, { bitLengths as cekLengths } from '../lib/cek.js'; | ||
} | ||
cek = providedCek || (await generateCek(enc)); | ||
cek = providedCek || generateCek(enc); | ||
const kwAlg = alg.substr(-6); | ||
@@ -52,3 +52,3 @@ encryptedKey = await aesKw(kwAlg, sharedSecret, cek); | ||
case 'RSA-OAEP-512': { | ||
cek = providedCek || (await generateCek(enc)); | ||
cek = providedCek || generateCek(enc); | ||
encryptedKey = await rsaEs(alg, key, cek); | ||
@@ -60,3 +60,3 @@ break; | ||
case 'PBES2-HS512+A256KW': { | ||
cek = providedCek || (await generateCek(enc)); | ||
cek = providedCek || generateCek(enc); | ||
const { p2c, p2s } = providedParameters; | ||
@@ -69,3 +69,3 @@ ({ encryptedKey, ...parameters } = await pbes2Kw(alg, key, cek, p2c, p2s)); | ||
case 'A256KW': { | ||
cek = providedCek || (await generateCek(enc)); | ||
cek = providedCek || generateCek(enc); | ||
encryptedKey = await aesKw(alg, key, cek); | ||
@@ -77,3 +77,3 @@ break; | ||
case 'A256GCMKW': { | ||
cek = providedCek || (await generateCek(enc)); | ||
cek = providedCek || generateCek(enc); | ||
const { iv } = providedParameters; | ||
@@ -80,0 +80,0 @@ ({ encryptedKey, ...parameters } = await aesGcmKw(alg, key, cek, iv)); |
@@ -9,3 +9,3 @@ import encrypt from './encrypt.js'; | ||
const jweAlgorithm = alg.substr(0, 7); | ||
iv || (iv = await generateIv(jweAlgorithm)); | ||
iv || (iv = generateIv(jweAlgorithm)); | ||
const { ciphertext: encryptedKey, tag } = await encrypt(jweAlgorithm, cek, key instanceof Uint8Array ? key : key.export(), iv, new Uint8Array()); | ||
@@ -12,0 +12,0 @@ return { encryptedKey, iv: base64url(iv), tag: base64url(tag) }; |
import { createHash } from 'crypto'; | ||
const digest = (algorithm, data) => { | ||
return createHash(algorithm).update(data).digest(); | ||
}; | ||
const digest = (algorithm, data) => createHash(algorithm).update(data).digest(); | ||
export default digest; |
@@ -5,7 +5,3 @@ import { promisify } from 'util'; | ||
const deflateRaw = promisify(deflateRawCb); | ||
export const inflate = async (input) => { | ||
return inflateRaw(input); | ||
}; | ||
export const deflate = async (input) => { | ||
return deflateRaw(input); | ||
}; | ||
export const inflate = (input) => inflateRaw(input); | ||
export const deflate = (input) => deflateRaw(input); |
@@ -102,3 +102,3 @@ "use strict"; | ||
} | ||
cek = await generateCek(enc); | ||
cek = generateCek(enc); | ||
} | ||
@@ -105,0 +105,0 @@ const iv = base64url_js_1.decode(jwe.iv); |
@@ -117,3 +117,3 @@ "use strict"; | ||
} | ||
this._iv ||= await generateIv(enc); | ||
this._iv ||= generateIv(enc); | ||
let additionalData; | ||
@@ -120,0 +120,0 @@ let protectedHeader; |
@@ -7,10 +7,10 @@ "use strict"; | ||
async function EmbeddedJWK(protectedHeader, token) { | ||
const combinedHeader = { | ||
const joseHeader = { | ||
...protectedHeader, | ||
...token.header, | ||
}; | ||
if (!is_object_js_1.default(combinedHeader.jwk)) { | ||
if (!is_object_js_1.default(joseHeader.jwk)) { | ||
throw new errors_js_1.JWSInvalid('"jwk" (JSON Web Key) Header Parameter must be a JSON object'); | ||
} | ||
const key = (await parse_js_1.default(combinedHeader.jwk, combinedHeader.alg, true)); | ||
const key = await parse_js_1.default(joseHeader.jwk, joseHeader.alg, true); | ||
if (key.type !== 'public') { | ||
@@ -17,0 +17,0 @@ throw new errors_js_1.JWSInvalid('"jwk" (JSON Web Key) Header Parameter must be a public key'); |
@@ -46,2 +46,5 @@ "use strict"; | ||
async sign() { | ||
if (!this._signatures.length) { | ||
throw new errors_js_1.JWSInvalid('at least one signature must be added'); | ||
} | ||
const jws = { | ||
@@ -48,0 +51,0 @@ signatures: [], |
@@ -43,3 +43,3 @@ "use strict"; | ||
} | ||
cek = providedCek || (await generateCek(enc)); | ||
cek = providedCek || generateCek(enc); | ||
const kwAlg = alg.substr(-6); | ||
@@ -54,3 +54,3 @@ encryptedKey = await aeskw_js_1.wrap(kwAlg, sharedSecret, cek); | ||
case 'RSA-OAEP-512': { | ||
cek = providedCek || (await generateCek(enc)); | ||
cek = providedCek || generateCek(enc); | ||
encryptedKey = await rsaes_js_1.encrypt(alg, key, cek); | ||
@@ -62,3 +62,3 @@ break; | ||
case 'PBES2-HS512+A256KW': { | ||
cek = providedCek || (await generateCek(enc)); | ||
cek = providedCek || generateCek(enc); | ||
const { p2c, p2s } = providedParameters; | ||
@@ -71,3 +71,3 @@ ({ encryptedKey, ...parameters } = await pbes2kw_js_1.encrypt(alg, key, cek, p2c, p2s)); | ||
case 'A256KW': { | ||
cek = providedCek || (await generateCek(enc)); | ||
cek = providedCek || generateCek(enc); | ||
encryptedKey = await aeskw_js_1.wrap(alg, key, cek); | ||
@@ -79,3 +79,3 @@ break; | ||
case 'A256GCMKW': { | ||
cek = providedCek || (await generateCek(enc)); | ||
cek = providedCek || generateCek(enc); | ||
const { iv } = providedParameters; | ||
@@ -82,0 +82,0 @@ ({ encryptedKey, ...parameters } = await aesgcmkw_js_1.wrap(alg, key, cek, iv)); |
@@ -12,3 +12,3 @@ "use strict"; | ||
const jweAlgorithm = alg.substr(0, 7); | ||
iv ||= await generateIv(jweAlgorithm); | ||
iv ||= generateIv(jweAlgorithm); | ||
const { ciphertext: encryptedKey, tag } = await encrypt_js_1.default(jweAlgorithm, cek, key, iv, new Uint8Array()); | ||
@@ -15,0 +15,0 @@ return { encryptedKey, iv: base64url_js_1.encode(iv), tag: base64url_js_1.encode(tag) }; |
@@ -8,7 +8,3 @@ "use strict"; | ||
const deflateRaw = util_1.promisify(zlib_1.deflateRaw); | ||
exports.inflate = async (input) => { | ||
return inflateRaw(input); | ||
}; | ||
exports.deflate = async (input) => { | ||
return deflateRaw(input); | ||
}; | ||
exports.inflate = (input) => inflateRaw(input); | ||
exports.deflate = (input) => deflateRaw(input); |
@@ -100,3 +100,3 @@ import { JOSEAlgNotAllowed, JOSENotSupported, JWEInvalid } from '../../util/errors.js'; | ||
} | ||
cek = await generateCek(enc); | ||
cek = generateCek(enc); | ||
} | ||
@@ -103,0 +103,0 @@ const iv = base64url(jwe.iv); |
@@ -115,3 +115,3 @@ import ivFactory from '../../lib/iv.js'; | ||
} | ||
this._iv ||= await generateIv(enc); | ||
this._iv ||= generateIv(enc); | ||
let additionalData; | ||
@@ -118,0 +118,0 @@ let protectedHeader; |
@@ -5,10 +5,10 @@ import parseJwk from './parse.js'; | ||
export default async function EmbeddedJWK(protectedHeader, token) { | ||
const combinedHeader = { | ||
const joseHeader = { | ||
...protectedHeader, | ||
...token.header, | ||
}; | ||
if (!isObject(combinedHeader.jwk)) { | ||
if (!isObject(joseHeader.jwk)) { | ||
throw new JWSInvalid('"jwk" (JSON Web Key) Header Parameter must be a JSON object'); | ||
} | ||
const key = (await parseJwk(combinedHeader.jwk, combinedHeader.alg, true)); | ||
const key = await parseJwk(joseHeader.jwk, joseHeader.alg, true); | ||
if (key.type !== 'public') { | ||
@@ -15,0 +15,0 @@ throw new JWSInvalid('"jwk" (JSON Web Key) Header Parameter must be a public key'); |
@@ -44,2 +44,5 @@ import FlattenedSign from '../flattened/sign.js'; | ||
async sign() { | ||
if (!this._signatures.length) { | ||
throw new JWSInvalid('at least one signature must be added'); | ||
} | ||
const jws = { | ||
@@ -46,0 +49,0 @@ signatures: [], |
@@ -41,3 +41,3 @@ import cekFactory, { bitLengths as cekLengths } from '../lib/cek.js'; | ||
} | ||
cek = providedCek || (await generateCek(enc)); | ||
cek = providedCek || generateCek(enc); | ||
const kwAlg = alg.substr(-6); | ||
@@ -52,3 +52,3 @@ encryptedKey = await aesKw(kwAlg, sharedSecret, cek); | ||
case 'RSA-OAEP-512': { | ||
cek = providedCek || (await generateCek(enc)); | ||
cek = providedCek || generateCek(enc); | ||
encryptedKey = await rsaEs(alg, key, cek); | ||
@@ -60,3 +60,3 @@ break; | ||
case 'PBES2-HS512+A256KW': { | ||
cek = providedCek || (await generateCek(enc)); | ||
cek = providedCek || generateCek(enc); | ||
const { p2c, p2s } = providedParameters; | ||
@@ -69,3 +69,3 @@ ({ encryptedKey, ...parameters } = await pbes2Kw(alg, key, cek, p2c, p2s)); | ||
case 'A256KW': { | ||
cek = providedCek || (await generateCek(enc)); | ||
cek = providedCek || generateCek(enc); | ||
encryptedKey = await aesKw(alg, key, cek); | ||
@@ -77,3 +77,3 @@ break; | ||
case 'A256GCMKW': { | ||
cek = providedCek || (await generateCek(enc)); | ||
cek = providedCek || generateCek(enc); | ||
const { iv } = providedParameters; | ||
@@ -80,0 +80,0 @@ ({ encryptedKey, ...parameters } = await aesGcmKw(alg, key, cek, iv)); |
@@ -9,3 +9,3 @@ import encrypt from './encrypt.js'; | ||
const jweAlgorithm = alg.substr(0, 7); | ||
iv ||= await generateIv(jweAlgorithm); | ||
iv ||= generateIv(jweAlgorithm); | ||
const { ciphertext: encryptedKey, tag } = await encrypt(jweAlgorithm, cek, key, iv, new Uint8Array()); | ||
@@ -12,0 +12,0 @@ return { encryptedKey, iv: base64url(iv), tag: base64url(tag) }; |
@@ -5,7 +5,3 @@ import { promisify } from 'util'; | ||
const deflateRaw = promisify(deflateRawCb); | ||
export const inflate = async (input) => { | ||
return inflateRaw(input); | ||
}; | ||
export const deflate = async (input) => { | ||
return deflateRaw(input); | ||
}; | ||
export const inflate = (input) => inflateRaw(input); | ||
export const deflate = (input) => deflateRaw(input); |
import type { JWSHeaderParameters, JWTClaimVerificationOptions, JWTPayload } from '../types.d'; | ||
import ProduceJWT from '../lib/jwt_producer.js'; | ||
/** | ||
* The UnsecuredJWT class is a utility for creating `{ "alg": "none" }` Unsecured JWTs. | ||
* The UnsecuredJWT class is a utility for dealing with `{ "alg": "none" }` Unsecured JWTs. | ||
* | ||
@@ -6,0 +6,0 @@ * @example |
import type { JWSHeaderParameters, JWEHeaderParameters } from '../types.d'; | ||
export declare type ProtectedHeaderParameters = JWSHeaderParameters & JWEHeaderParameters; | ||
/** | ||
* Decodes the Protected Header of a JWE/JWS/JWT token utilizing any encoding. | ||
* Decodes the Protected Header of a JWE/JWS/JWT token utilizing any JOSE serialization. | ||
* | ||
@@ -25,4 +25,4 @@ * @example | ||
* | ||
* @param token JWE/JWS/JWT token in any encoding. | ||
* @param token JWE/JWS/JWT token in any JOSE serialization. | ||
*/ | ||
export default function decodeProtectedHeader(token: string | object): ProtectedHeaderParameters; |
{ | ||
"name": "jose", | ||
"version": "3.5.0", | ||
"version": "3.5.1", | ||
"description": "Universal 'JSON Web Almost Everything' - JWA, JWS, JWE, JWT, JWK with no dependencies", | ||
"keywords": [ | ||
"browser", | ||
"compact", | ||
@@ -352,9 +353,9 @@ "decode", | ||
"c8": "^7.3.5", | ||
"esbuild": "0.8.12", | ||
"eslint": "^7.14.0", | ||
"eslint-config-airbnb-base": "^14.2.1", | ||
"eslint-config-airbnb-typescript": "^12.0.0", | ||
"eslint-config-prettier": "^6.14.0", | ||
"eslint-plugin-import": "^2.22.1", | ||
"eslint-plugin-jsdoc": "^30.7.8", | ||
"esbuild": "0.8.31", | ||
"eslint": "7.17.0", | ||
"eslint-config-airbnb-base": "14.2.1", | ||
"eslint-config-airbnb-typescript": "12.0.0", | ||
"eslint-config-prettier": "7.1.0", | ||
"eslint-plugin-import": "2.22.1", | ||
"eslint-plugin-jsdoc": "30.7.13", | ||
"glob": "^7.1.6", | ||
@@ -371,4 +372,4 @@ "karma": "^5.2.3", | ||
"typedoc": "0.19.2", | ||
"typedoc-plugin-markdown": "3.0.11", | ||
"typescript": "~4.0.5" | ||
"typedoc-plugin-markdown": "3.1.1", | ||
"typescript": "4.0.5" | ||
}, | ||
@@ -375,0 +376,0 @@ "c8": { |
@@ -197,5 +197,3 @@ # jose | ||
Yes the bundle size is on the larger side, that is because each module is actually published | ||
5 times so that it can remain truly without dependencies and be universal / isomorphic. | ||
The source TS files are also published with inline docs so that your IDE's Intelligent code | ||
completion works and has the exact same documentation as published. | ||
multiple times so that it can remain truly without dependencies and be universal / isomorphic. | ||
@@ -202,0 +200,0 @@ Nevertheless, since each module can be required independently and is fully tree-shakeable, the |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
676779
15914
262