Skip to content

Commit

Permalink
refactor: redo exports to support broader tooling
Browse files Browse the repository at this point in the history
BREAKING CHANGE: All module named exports have moved from subpaths to
just "jose". For example, `import { jwtVerify } from 'jose/jwt/verify'`
is now just `import { jwtVerify } from 'jose'`.

BREAKING CHANGE: All submodule default exports and named have been
removed in favour of just "jose" named exports.
  • Loading branch information
panva committed Oct 14, 2021
1 parent 3e137d2 commit dd2cf9e
Show file tree
Hide file tree
Showing 50 changed files with 265 additions and 508 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ jobs:
uses: actions/checkout@v2
with:
fetch-depth: 0
- run: git push origin $GITHUB_SHA:v3.x
- run: git push origin $GITHUB_SHA:v4.x
- run: git rm -r dist/**/*
- run: |
git config --local user.email "panva.ip@gmail.com"
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ If you or your business use `jose`, please consider becoming a [sponsor][support
- JSON Web Key Set (JWKS)
- [Verify using a remote JWKSet](docs/functions/jwks_remote.createRemoteJWKSet.md#readme)
- Key Pair or Secret Generation
- [Asymmetric Key Pair Generation](docs/functions/util_generate_key_pair.generateKeyPair.md#readme)
- [Symmetric Secret Generation](docs/functions/util_generate_secret.generateSecret.md#readme)
- [Asymmetric Key Pair Generation](docs/functions/key_generate_key_pair.generateKeyPair.md#readme)
- [Symmetric Secret Generation](docs/functions/key_generate_secret.generateSecret.md#readme)
- Key Export
- [JWK Export](docs/functions/key_export.exportJWK.md#readme)
- [Private Key Export](docs/functions/key_export.exportPKCS8.md#readme)
Expand Down
4 changes: 2 additions & 2 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ If you or your business use `jose`, please consider becoming a [sponsor][support
- JSON Web Key Set (JWKS)
- [Verify using a remote JWKSet](functions/jwks_remote.createRemoteJWKSet.md#readme)
- Key Pair or Secret Generation
- [Asymmetric Key Pair Generation](functions/util_generate_key_pair.generateKeyPair.md#readme)
- [Symmetric Secret Generation](functions/util_generate_secret.generateSecret.md#readme)
- [Asymmetric Key Pair Generation](functions/key_generate_key_pair.generateKeyPair.md#readme)
- [Symmetric Secret Generation](functions/key_generate_secret.generateSecret.md#readme)
- Key Export
- [JWK Export](functions/key_export.exportJWK.md#readme)
- [Private Key Export](functions/key_export.exportPKCS8.md#readme)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Function: generateKeyPair

**generateKeyPair**(`alg`, `options?`): `Promise`<[`GenerateKeyPairResult`](../interfaces/util_generate_key_pair.GenerateKeyPairResult.md)\>
**generateKeyPair**(`alg`, `options?`): `Promise`<[`GenerateKeyPairResult`](../interfaces/key_generate_key_pair.GenerateKeyPairResult.md)\>

Generates a private and a public key for a given JWA algorithm identifier.
This can only generate asymmetric key pairs. For symmetric secrets use the
Expand Down Expand Up @@ -36,8 +36,8 @@ import { generateKeyPair } from 'https://deno.land/x/jose@v3.20.3/index.ts'
| Name | Type | Description |
| :------ | :------ | :------ |
| `alg` | `string` | JWA Algorithm Identifier to be used with the generated key pair. |
| `options?` | [`GenerateKeyPairOptions`](../interfaces/util_generate_key_pair.GenerateKeyPairOptions.md) | Additional options passed down to the key pair generation. |
| `options?` | [`GenerateKeyPairOptions`](../interfaces/key_generate_key_pair.GenerateKeyPairOptions.md) | Additional options passed down to the key pair generation. |

#### Returns

`Promise`<[`GenerateKeyPairResult`](../interfaces/util_generate_key_pair.GenerateKeyPairResult.md)\>
`Promise`<[`GenerateKeyPairResult`](../interfaces/key_generate_key_pair.GenerateKeyPairResult.md)\>
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ import { generateSecret } from 'https://deno.land/x/jose@v3.20.3/index.ts'
| Name | Type | Description |
| :------ | :------ | :------ |
| `alg` | `string` | JWA Algorithm Identifier to be used with the generated secret. |
| `options?` | [`GenerateSecretOptions`](../interfaces/util_generate_secret.GenerateSecretOptions.md) | Additional options passed down to the secret generation. |
| `options?` | [`GenerateSecretOptions`](../interfaces/key_generate_secret.GenerateSecretOptions.md) | Additional options passed down to the secret generation. |

#### Returns

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@

### Properties

- [crv](util_generate_key_pair.GenerateKeyPairOptions.md#crv)
- [extractable](util_generate_key_pair.GenerateKeyPairOptions.md#extractable)
- [modulusLength](util_generate_key_pair.GenerateKeyPairOptions.md#moduluslength)
- [crv](key_generate_key_pair.GenerateKeyPairOptions.md#crv)
- [extractable](key_generate_key_pair.GenerateKeyPairOptions.md#extractable)
- [modulusLength](key_generate_key_pair.GenerateKeyPairOptions.md#moduluslength)

## Properties

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

### Properties

- [privateKey](util_generate_key_pair.GenerateKeyPairResult.md#privatekey)
- [publicKey](util_generate_key_pair.GenerateKeyPairResult.md#publickey)
- [privateKey](key_generate_key_pair.GenerateKeyPairResult.md#privatekey)
- [publicKey](key_generate_key_pair.GenerateKeyPairResult.md#publickey)

## Properties

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

### Properties

- [extractable](util_generate_secret.GenerateSecretOptions.md#extractable)
- [extractable](key_generate_secret.GenerateSecretOptions.md#extractable)

## Properties

Expand Down
12 changes: 12 additions & 0 deletions docs/modules/key_generate_key_pair.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Module: key/generate\_key\_pair

## Table of contents

### Interfaces

- [GenerateKeyPairOptions](../interfaces/key_generate_key_pair.GenerateKeyPairOptions.md)
- [GenerateKeyPairResult](../interfaces/key_generate_key_pair.GenerateKeyPairResult.md)

### Functions

- [generateKeyPair](../functions/key_generate_key_pair.generateKeyPair.md)
11 changes: 11 additions & 0 deletions docs/modules/key_generate_secret.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Module: key/generate\_secret

## Table of contents

### Interfaces

- [GenerateSecretOptions](../interfaces/key_generate_secret.GenerateSecretOptions.md)

### Functions

- [generateSecret](../functions/key_generate_secret.generateSecret.md)
12 changes: 0 additions & 12 deletions docs/modules/util_generate_key_pair.md

This file was deleted.

11 changes: 0 additions & 11 deletions docs/modules/util_generate_secret.md

This file was deleted.

145 changes: 8 additions & 137 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -64,145 +64,16 @@
}
},
"exports": {
"./package.json": "./package.json",
"./jwe/compact/decrypt": {
"browser": "./dist/browser/jwe/compact/decrypt.js",
"import": "./dist/node/esm/jwe/compact/decrypt.js",
"require": "./dist/node/cjs/jwe/compact/decrypt.js"
".": {
"browser": "./dist/browser/index.js",
"import": "./dist/node/esm/index.js",
"require": "./dist/node/cjs/index.js"
},
"./jwe/compact/encrypt": {
"browser": "./dist/browser/jwe/compact/encrypt.js",
"import": "./dist/node/esm/jwe/compact/encrypt.js",
"require": "./dist/node/cjs/jwe/compact/encrypt.js"
},
"./jwe/flattened/decrypt": {
"browser": "./dist/browser/jwe/flattened/decrypt.js",
"import": "./dist/node/esm/jwe/flattened/decrypt.js",
"require": "./dist/node/cjs/jwe/flattened/decrypt.js"
},
"./jwe/flattened/encrypt": {
"browser": "./dist/browser/jwe/flattened/encrypt.js",
"import": "./dist/node/esm/jwe/flattened/encrypt.js",
"require": "./dist/node/cjs/jwe/flattened/encrypt.js"
},
"./jwe/general/decrypt": {
"browser": "./dist/browser/jwe/general/decrypt.js",
"import": "./dist/node/esm/jwe/general/decrypt.js",
"require": "./dist/node/cjs/jwe/general/decrypt.js"
},
"./jwk/embedded": {
"browser": "./dist/browser/jwk/embedded.js",
"import": "./dist/node/esm/jwk/embedded.js",
"require": "./dist/node/cjs/jwk/embedded.js"
},
"./jwk/thumbprint": {
"browser": "./dist/browser/jwk/thumbprint.js",
"import": "./dist/node/esm/jwk/thumbprint.js",
"require": "./dist/node/cjs/jwk/thumbprint.js"
},
"./jwks/remote": {
"browser": "./dist/browser/jwks/remote.js",
"import": "./dist/node/esm/jwks/remote.js",
"require": "./dist/node/cjs/jwks/remote.js"
},
"./jws/compact/sign": {
"browser": "./dist/browser/jws/compact/sign.js",
"import": "./dist/node/esm/jws/compact/sign.js",
"require": "./dist/node/cjs/jws/compact/sign.js"
},
"./jws/compact/verify": {
"browser": "./dist/browser/jws/compact/verify.js",
"import": "./dist/node/esm/jws/compact/verify.js",
"require": "./dist/node/cjs/jws/compact/verify.js"
},
"./jws/flattened/sign": {
"browser": "./dist/browser/jws/flattened/sign.js",
"import": "./dist/node/esm/jws/flattened/sign.js",
"require": "./dist/node/cjs/jws/flattened/sign.js"
},
"./jws/flattened/verify": {
"browser": "./dist/browser/jws/flattened/verify.js",
"import": "./dist/node/esm/jws/flattened/verify.js",
"require": "./dist/node/cjs/jws/flattened/verify.js"
},
"./jws/general/sign": {
"browser": "./dist/browser/jws/general/sign.js",
"import": "./dist/node/esm/jws/general/sign.js",
"require": "./dist/node/cjs/jws/general/sign.js"
},
"./jws/general/verify": {
"browser": "./dist/browser/jws/general/verify.js",
"import": "./dist/node/esm/jws/general/verify.js",
"require": "./dist/node/cjs/jws/general/verify.js"
},
"./jwt/decrypt": {
"browser": "./dist/browser/jwt/decrypt.js",
"import": "./dist/node/esm/jwt/decrypt.js",
"require": "./dist/node/cjs/jwt/decrypt.js"
},
"./jwt/encrypt": {
"browser": "./dist/browser/jwt/encrypt.js",
"import": "./dist/node/esm/jwt/encrypt.js",
"require": "./dist/node/cjs/jwt/encrypt.js"
},
"./jwt/sign": {
"browser": "./dist/browser/jwt/sign.js",
"import": "./dist/node/esm/jwt/sign.js",
"require": "./dist/node/cjs/jwt/sign.js"
},
"./jwt/unsecured": {
"browser": "./dist/browser/jwt/unsecured.js",
"import": "./dist/node/esm/jwt/unsecured.js",
"require": "./dist/node/cjs/jwt/unsecured.js"
},
"./jwt/verify": {
"browser": "./dist/browser/jwt/verify.js",
"import": "./dist/node/esm/jwt/verify.js",
"require": "./dist/node/cjs/jwt/verify.js"
},
"./key/export": {
"browser": "./dist/browser/key/export.js",
"import": "./dist/node/esm/key/export.js",
"require": "./dist/node/cjs/key/export.js"
},
"./key/import": {
"browser": "./dist/browser/key/import.js",
"import": "./dist/node/esm/key/import.js",
"require": "./dist/node/cjs/key/import.js"
},
"./util/base64url": {
"browser": "./dist/browser/util/base64url.js",
"import": "./dist/node/esm/util/base64url.js",
"require": "./dist/node/cjs/util/base64url.js"
},
"./util/decode_protected_header": {
"browser": "./dist/browser/util/decode_protected_header.js",
"import": "./dist/node/esm/util/decode_protected_header.js",
"require": "./dist/node/cjs/util/decode_protected_header.js"
},
"./util/errors": {
"browser": "./dist/browser/util/errors.js",
"import": "./dist/node/esm/util/errors.js",
"require": "./dist/node/cjs/util/errors.js"
},
"./util/generate_key_pair": {
"browser": "./dist/browser/util/generate_key_pair.js",
"import": "./dist/node/esm/util/generate_key_pair.js",
"require": "./dist/node/cjs/util/generate_key_pair.js"
},
"./util/generate_secret": {
"browser": "./dist/browser/util/generate_secret.js",
"import": "./dist/node/esm/util/generate_secret.js",
"require": "./dist/node/cjs/util/generate_secret.js"
}
},
"typesVersions": {
"*": {
"*": [
"./dist/types/*"
]
}
"./package.json": "./package.json"
},
"main": "./dist/node/cjs/index.js",
"browser": "./dist/browser/index.js",
"types": "./dist/types/index.d.ts",
"files": [
"dist/**/package.json",
"dist/**/*.js",
Expand Down
40 changes: 40 additions & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
export { compactDecrypt } from './jwe/compact/decrypt.js'
export { flattenedDecrypt } from './jwe/flattened/decrypt.js'
export { generalDecrypt } from './jwe/general/decrypt.js'

export { compactVerify } from './jws/compact/verify.js'
export { flattenedVerify } from './jws/flattened/verify.js'
export { generalVerify } from './jws/general/verify.js'

export { jwtVerify } from './jwt/verify.js'
export { jwtDecrypt } from './jwt/decrypt.js'

export { CompactEncrypt } from './jwe/compact/encrypt.js'
export { FlattenedEncrypt } from './jwe/flattened/encrypt.js'

export { CompactSign } from './jws/compact/sign.js'
export { FlattenedSign } from './jws/flattened/sign.js'
export { GeneralSign } from './jws/general/sign.js'

export { SignJWT } from './jwt/sign.js'
export { EncryptJWT } from './jwt/encrypt.js'

export { calculateJwkThumbprint } from './jwk/thumbprint.js'
export { EmbeddedJWK } from './jwk/embedded.js'

export { createRemoteJWKSet } from './jwks/remote.js'

export { UnsecuredJWT } from './jwt/unsecured.js'

export { exportPKCS8, exportSPKI, exportJWK } from './key/export.js'

export { importSPKI, importPKCS8, importX509, importJWK } from './key/import.js'

export { decodeProtectedHeader } from './util/decode_protected_header.js'

export * as errors from './util/errors.js'

export { generateKeyPair } from './key/generate_key_pair.js'
export { generateSecret } from './key/generate_secret.js'

export * as base64url from './util/base64url.js'
File renamed without changes.
File renamed without changes.
4 changes: 2 additions & 2 deletions src/runtime/browser/generate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import { isCloudflareWorkers, isNodeJs } from './global.js'
import crypto from './webcrypto.js'
import { JOSENotSupported } from '../../util/errors.js'
import random from './random.js'
import type { GenerateKeyPairOptions } from '../../util/generate_key_pair.js'
import type { GenerateSecretOptions } from '../../util/generate_secret.js'
import type { GenerateKeyPairOptions } from '../../key/generate_key_pair.js'
import type { GenerateSecretOptions } from '../../key/generate_secret.js'

export async function generateSecret(alg: string, options?: GenerateSecretOptions) {
let length: number
Expand Down
1 change: 1 addition & 0 deletions src/runtime/node/aeskw.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { Buffer } from 'buffer'
import { KeyObject, createDecipheriv, createCipheriv } from 'crypto'
import { JOSENotSupported } from '../../util/errors.js'
import type { AesKwUnwrapFunction, AesKwWrapFunction } from '../interfaces.d'
Expand Down
1 change: 1 addition & 0 deletions src/runtime/node/asn1.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { createPrivateKey, createPublicKey, KeyObject } from 'crypto'
import { Buffer } from 'buffer'
import { isCryptoKey, getKeyObject } from './webcrypto.js'
import type { PEMExportFunction, PEMImportFunction } from '../interfaces.d'
import isKeyObject from './is_key_object.js'
Expand Down
1 change: 1 addition & 0 deletions src/runtime/node/asn1_sequence_encoder.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { Buffer } from 'buffer'
import { JOSENotSupported } from '../../util/errors.js'

const tagInteger = 0x02
Expand Down
1 change: 1 addition & 0 deletions src/runtime/node/base64url.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { Buffer } from 'buffer'
import { decoder } from '../../lib/buffer_utils.js'

let encodeImpl: (input: Uint8Array | string) => string
Expand Down
4 changes: 2 additions & 2 deletions src/runtime/node/generate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import { promisify } from 'util'
import random from './random.js'
import { setModulusLength } from './check_modulus_length.js'
import { JOSENotSupported } from '../../util/errors.js'
import type { GenerateKeyPairOptions } from '../../util/generate_key_pair.js'
import type { GenerateSecretOptions } from '../../util/generate_secret.js'
import type { GenerateKeyPairOptions } from '../../key/generate_key_pair.js'
import type { GenerateSecretOptions } from '../../key/generate_secret.js'

const generate = promisify(generateKeyPairCb)

Expand Down
1 change: 1 addition & 0 deletions src/runtime/node/get_named_curve.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { Buffer } from 'buffer'
import type { KeyObject } from 'crypto'
import { createPublicKey } from 'crypto'
import { JOSENotSupported } from '../../util/errors.js'
Expand Down
1 change: 1 addition & 0 deletions src/runtime/node/jwk_to_key.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { Buffer } from 'buffer'
import { createPrivateKey, createPublicKey, createSecretKey } from 'crypto'
import type { KeyObject, PublicKeyInput, PrivateKeyInput } from 'crypto'

Expand Down
Loading

0 comments on commit dd2cf9e

Please sign in to comment.