From 4b5232518643fd459535246ab147c6da659035f6 Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Sat, 18 Nov 2023 04:07:06 +0200 Subject: [PATCH 1/8] chore(backend): Expose /errors subpath export --- packages/backend/package.json | 23 +++++++++++++++++++ .../backend/src/__tests__/exports.test.ts | 15 ++++++++++-- packages/backend/src/{tokens => }/errors.ts | 0 .../backend/src/tokens/__tests__/keys.test.ts | 2 +- .../src/tokens/__tests__/request.test.ts | 2 +- packages/backend/src/tokens/authStatus.ts | 2 +- packages/backend/src/tokens/handshake.ts | 2 +- packages/backend/src/tokens/index.ts | 1 - packages/backend/src/tokens/jwt/assertions.ts | 2 +- packages/backend/src/tokens/jwt/verifyJwt.ts | 2 +- packages/backend/src/tokens/keys.ts | 12 +++++----- packages/backend/src/tokens/request.ts | 4 ++-- packages/backend/src/tokens/verify.ts | 2 +- packages/backend/tsup.config.ts | 3 +-- .../__snapshots__/exports.test.ts.snap | 2 -- 15 files changed, 52 insertions(+), 22 deletions(-) rename packages/backend/src/{tokens => }/errors.ts (100%) diff --git a/packages/backend/package.json b/packages/backend/package.json index c0f09ad239b..99e3b3ea7b0 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -24,6 +24,29 @@ "default": "./dist/runtime/browser/crypto.mjs" } }, + "exports": { + ".": { + "import": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "require": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } + }, + "./errors": { + "import": { + "types": "./dist/errors.d.mts", + "default": "./dist/errors.mjs" + }, + "require": { + "types": "./dist/errors.d.ts", + "default": "./dist/errors.js" + } + }, + "./package.json": "./package.json" + }, "main": "./dist/index.js", "module": "./dist/esm/index.js", "types": "./dist/types/index.d.ts", diff --git a/packages/backend/src/__tests__/exports.test.ts b/packages/backend/src/__tests__/exports.test.ts index fa5233c0d27..feed0701b6e 100644 --- a/packages/backend/src/__tests__/exports.test.ts +++ b/packages/backend/src/__tests__/exports.test.ts @@ -1,5 +1,6 @@ import type QUnit from 'qunit'; +import * as errorExports from '../errors'; import * as publicExports from '../index'; export default (QUnit: QUnit) => { @@ -29,8 +30,6 @@ export default (QUnit: QUnit) => { 'Session', 'SignInToken', 'Token', - 'TokenVerificationError', - 'TokenVerificationErrorReason', 'User', 'Verification', 'buildRequestUrl', @@ -55,4 +54,16 @@ export default (QUnit: QUnit) => { assert.deepEqual(Object.keys(publicExports).sort(), exportedApiKeys); }); }); + + module('subpath /errors exports', () => { + test('should not include a breaking change', assert => { + const exportedApiKeys = [ + 'TokenVerificationError', + 'TokenVerificationErrorAction', + 'TokenVerificationErrorCode', + 'TokenVerificationErrorReason', + ]; + assert.deepEqual(Object.keys(errorExports).sort(), exportedApiKeys); + }); + }); }; diff --git a/packages/backend/src/tokens/errors.ts b/packages/backend/src/errors.ts similarity index 100% rename from packages/backend/src/tokens/errors.ts rename to packages/backend/src/errors.ts diff --git a/packages/backend/src/tokens/__tests__/keys.test.ts b/packages/backend/src/tokens/__tests__/keys.test.ts index e6b60afcdca..eb60a7a2d3e 100644 --- a/packages/backend/src/tokens/__tests__/keys.test.ts +++ b/packages/backend/src/tokens/__tests__/keys.test.ts @@ -1,9 +1,9 @@ import type QUnit from 'qunit'; import sinon from 'sinon'; +import { TokenVerificationError, TokenVerificationErrorAction, TokenVerificationErrorReason } from '../../errors'; import runtime from '../../runtime'; import { jsonError, jsonOk } from '../../util/testUtils'; -import { TokenVerificationError, TokenVerificationErrorAction, TokenVerificationErrorReason } from '../errors'; import { mockJwks, mockJwtPayload, diff --git a/packages/backend/src/tokens/__tests__/request.test.ts b/packages/backend/src/tokens/__tests__/request.test.ts index 6a9b48d2a0d..a2a03e9ce82 100644 --- a/packages/backend/src/tokens/__tests__/request.test.ts +++ b/packages/backend/src/tokens/__tests__/request.test.ts @@ -1,10 +1,10 @@ import type QUnit from 'qunit'; import sinon from 'sinon'; +import { TokenVerificationErrorReason } from '../../errors'; import runtime from '../../runtime'; import { jsonOk } from '../../util/testUtils'; import { AuthErrorReason, type AuthReason, AuthStatus, type RequestState } from '../authStatus'; -import { TokenVerificationErrorReason } from '../errors'; import { mockInvalidSignatureJwt, mockJwks, mockJwt, mockJwtPayload, mockMalformedJwt } from '../fixtures'; import type { AuthenticateRequestOptions } from '../request'; import { authenticateRequest, loadOptionsFromHeaders } from '../request'; diff --git a/packages/backend/src/tokens/authStatus.ts b/packages/backend/src/tokens/authStatus.ts index a44e67f3a94..37552107b33 100644 --- a/packages/backend/src/tokens/authStatus.ts +++ b/packages/backend/src/tokens/authStatus.ts @@ -1,9 +1,9 @@ import type { JwtPayload } from '@clerk/types'; import { createBackendApiClient } from '../api'; +import type { TokenVerificationErrorReason } from '../errors'; import type { SignedInAuthObject, SignedInAuthObjectOptions, SignedOutAuthObject } from './authObjects'; import { signedInAuthObject, signedOutAuthObject } from './authObjects'; -import type { TokenVerificationErrorReason } from './errors'; export enum AuthStatus { SignedIn = 'signed-in', diff --git a/packages/backend/src/tokens/handshake.ts b/packages/backend/src/tokens/handshake.ts index 5c867e4a804..fb993ce6ffd 100644 --- a/packages/backend/src/tokens/handshake.ts +++ b/packages/backend/src/tokens/handshake.ts @@ -1,4 +1,4 @@ -import { TokenVerificationError, TokenVerificationErrorAction, TokenVerificationErrorReason } from './errors'; +import { TokenVerificationError, TokenVerificationErrorAction, TokenVerificationErrorReason } from '../errors'; import { decodeJwt, hasValidSignature, type VerifyJwtOptions } from './jwt'; import { assertHeaderAlgorithm, assertHeaderType } from './jwt/assertions'; import { loadClerkJWKFromLocal, loadClerkJWKFromRemote } from './keys'; diff --git a/packages/backend/src/tokens/index.ts b/packages/backend/src/tokens/index.ts index 50642216e4b..511068c5d83 100644 --- a/packages/backend/src/tokens/index.ts +++ b/packages/backend/src/tokens/index.ts @@ -1,7 +1,6 @@ export * from './authObjects'; export { AuthStatus } from './authStatus'; export type { RequestState } from './authStatus'; -export { TokenVerificationError, TokenVerificationErrorReason } from './errors'; export * from './factory'; export { debugRequestState } from './request'; export type { AuthenticateRequestOptions, OptionalVerifyTokenOptions } from './request'; diff --git a/packages/backend/src/tokens/jwt/assertions.ts b/packages/backend/src/tokens/jwt/assertions.ts index f91e9b2636f..4417597895c 100644 --- a/packages/backend/src/tokens/jwt/assertions.ts +++ b/packages/backend/src/tokens/jwt/assertions.ts @@ -1,4 +1,4 @@ -import { TokenVerificationError, TokenVerificationErrorAction, TokenVerificationErrorReason } from '../errors'; +import { TokenVerificationError, TokenVerificationErrorAction, TokenVerificationErrorReason } from '../../errors'; import { algs } from './algorithms'; export type IssuerResolver = string | ((iss: string) => boolean); diff --git a/packages/backend/src/tokens/jwt/verifyJwt.ts b/packages/backend/src/tokens/jwt/verifyJwt.ts index a0b4d218082..4e7c89b3fbc 100644 --- a/packages/backend/src/tokens/jwt/verifyJwt.ts +++ b/packages/backend/src/tokens/jwt/verifyJwt.ts @@ -1,10 +1,10 @@ import type { Jwt, JwtPayload } from '@clerk/types'; +import { TokenVerificationError, TokenVerificationErrorAction, TokenVerificationErrorReason } from '../../errors'; // DO NOT CHANGE: Runtime needs to be imported as a default export so that we can stub its dependencies with Sinon.js // For more information refer to https://sinonjs.org/how-to/stub-dependency/ import runtime from '../../runtime'; import { base64url } from '../../util/rfc4648'; -import { TokenVerificationError, TokenVerificationErrorAction, TokenVerificationErrorReason } from '../errors'; import { getCryptoAlgorithm } from './algorithms'; import { assertActivationClaim, diff --git a/packages/backend/src/tokens/keys.ts b/packages/backend/src/tokens/keys.ts index 34bbfdcb8df..553da86f546 100644 --- a/packages/backend/src/tokens/keys.ts +++ b/packages/backend/src/tokens/keys.ts @@ -1,16 +1,16 @@ import { API_URL, API_VERSION, JWKS_CACHE_TTL_MS, MAX_CACHE_LAST_UPDATED_AT_SECONDS } from '../constants'; +import { + TokenVerificationError, + TokenVerificationErrorAction, + TokenVerificationErrorCode, + TokenVerificationErrorReason, +} from '../errors'; // DO NOT CHANGE: Runtime needs to be imported as a default export so that we can stub its dependencies with Sinon.js // For more information refer to https://sinonjs.org/how-to/stub-dependency/ import runtime from '../runtime'; import { joinPaths } from '../util/path'; import { getErrorObjectByCode } from '../util/request'; import { callWithRetry } from '../util/shared'; -import { - TokenVerificationError, - TokenVerificationErrorAction, - TokenVerificationErrorCode, - TokenVerificationErrorReason, -} from './errors'; type JsonWebKeyWithKid = JsonWebKey & { kid: string }; diff --git a/packages/backend/src/tokens/request.ts b/packages/backend/src/tokens/request.ts index fa65c36cf25..aa5fc506b28 100644 --- a/packages/backend/src/tokens/request.ts +++ b/packages/backend/src/tokens/request.ts @@ -2,13 +2,13 @@ import { parsePublishableKey } from '@clerk/shared/keys'; import type { JwtPayload } from '@clerk/types'; import { constants } from '../constants'; +import type { TokenCarrier } from '../errors'; +import { TokenVerificationError, TokenVerificationErrorReason } from '../errors'; import { assertValidSecretKey } from '../util/assertValidSecretKey'; import { buildRequest, stripAuthorizationHeader } from '../util/IsomorphicRequest'; import { isDevelopmentFromSecretKey } from '../util/shared'; import type { AuthStatusOptionsType, RequestState } from './authStatus'; import { AuthErrorReason, handshake, signedIn, signedOut } from './authStatus'; -import type { TokenCarrier } from './errors'; -import { TokenVerificationError, TokenVerificationErrorReason } from './errors'; import { verifyHandshakeToken } from './handshake'; import { decodeJwt } from './jwt'; import { verifyToken, type VerifyTokenOptions } from './verify'; diff --git a/packages/backend/src/tokens/verify.ts b/packages/backend/src/tokens/verify.ts index 9801ed30e42..ae31cce8abb 100644 --- a/packages/backend/src/tokens/verify.ts +++ b/packages/backend/src/tokens/verify.ts @@ -1,6 +1,6 @@ import type { JwtPayload } from '@clerk/types'; -import { TokenVerificationError, TokenVerificationErrorAction, TokenVerificationErrorReason } from './errors'; +import { TokenVerificationError, TokenVerificationErrorAction, TokenVerificationErrorReason } from '../errors'; import type { VerifyJwtOptions } from './jwt'; import { decodeJwt, verifyJwt } from './jwt'; import type { LoadClerkJWKFromRemoteOptions } from './keys'; diff --git a/packages/backend/tsup.config.ts b/packages/backend/tsup.config.ts index 294370b7aff..458fd27d4ff 100644 --- a/packages/backend/tsup.config.ts +++ b/packages/backend/tsup.config.ts @@ -10,7 +10,7 @@ export default defineConfig(overrideOptions => { const shouldPublish = !!overrideOptions.env?.publish; const common: Options = { - entry: ['src/index.ts'], + entry: ['src/index.ts', 'src/errors.ts'], onSuccess: `cpy 'src/runtime/**/*.{mjs,js,cjs}' dist/runtime`, sourcemap: true, define: { @@ -19,7 +19,6 @@ export default defineConfig(overrideOptions => { __DEV__: `${isWatch}`, }, external: ['#crypto'], - legacyOutput: true, bundle: true, clean: true, minify: false, diff --git a/packages/sdk-node/src/__tests__/__snapshots__/exports.test.ts.snap b/packages/sdk-node/src/__tests__/__snapshots__/exports.test.ts.snap index f847f40c962..1c1222dcb2d 100644 --- a/packages/sdk-node/src/__tests__/__snapshots__/exports.test.ts.snap +++ b/packages/sdk-node/src/__tests__/__snapshots__/exports.test.ts.snap @@ -25,8 +25,6 @@ exports[`module exports should not change unless explicitly set 1`] = ` "Session", "SignInToken", "Token", - "TokenVerificationError", - "TokenVerificationErrorReason", "User", "Verification", "allowlistIdentifiers", From ad14f807112e5e588c93aa6407f948fbdc2169e9 Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Thu, 14 Dec 2023 14:40:37 +0200 Subject: [PATCH 2/8] fix(backend): Fix type issue with exported type resolution --- packages/backend/package.json | 2 -- packages/backend/src/index.ts | 11 +++++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index 99e3b3ea7b0..1f25417c81c 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -48,8 +48,6 @@ "./package.json": "./package.json" }, "main": "./dist/index.js", - "module": "./dist/esm/index.js", - "types": "./dist/types/index.d.ts", "files": [ "dist" ], diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts index 4b1bcafe9c5..e6273107ed1 100644 --- a/packages/backend/src/index.ts +++ b/packages/backend/src/index.ts @@ -2,7 +2,7 @@ import type { TelemetryCollectorOptions } from '@clerk/shared/telemetry'; import { TelemetryCollector } from '@clerk/shared/telemetry'; import type { SDKMetadata } from '@clerk/types'; -import type { CreateBackendApiOptions } from './api'; +import type { ApiClient, CreateBackendApiOptions } from './api'; import { createBackendApiClient } from './api'; import type { CreateAuthenticateRequestOptions } from './tokens'; import { createAuthenticateRequest } from './tokens'; @@ -25,7 +25,14 @@ export type ClerkOptions = CreateBackendApiOptions & > > & { sdkMetadata?: SDKMetadata; telemetry?: Pick }; -export function createClerkClient(options: ClerkOptions) { +// The current exported type resolves the following issue in packages importing createClerkClient +// TS4023: Exported variable 'clerkClient' has or is using name 'AuthErrorReason' from external module "/packages/backend/dist/index" but cannot be named. +export type ClerkClient = { + telemetry: TelemetryCollector; +} & ApiClient & + ReturnType; + +export function createClerkClient(options: ClerkOptions): ClerkClient { const opts = { ...options }; const apiClient = createBackendApiClient(opts); const requestState = createAuthenticateRequest({ options: opts, apiClient }); From 08f345914241f1cfa559eeaba526eb4352b530f6 Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Thu, 14 Dec 2023 20:23:39 +0200 Subject: [PATCH 3/8] chore(backend): Generate declarations using tsc and use generated d.ts for both esm and cjs This change resolves issues with inferred types. Eg: ``` The inferred type of 'auth' cannot be named without a reference to ... ``` --- packages/backend/package.json | 4 ++-- packages/backend/tsconfig.declarations.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index 1f25417c81c..78639b35521 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -27,7 +27,7 @@ "exports": { ".": { "import": { - "types": "./dist/index.d.mts", + "types": "./dist/index.d.ts", "default": "./dist/index.mjs" }, "require": { @@ -37,7 +37,7 @@ }, "./errors": { "import": { - "types": "./dist/errors.d.mts", + "types": "./dist/errors.d.ts", "default": "./dist/errors.mjs" }, "require": { diff --git a/packages/backend/tsconfig.declarations.json b/packages/backend/tsconfig.declarations.json index c42a5efd18e..4a7735336e2 100644 --- a/packages/backend/tsconfig.declarations.json +++ b/packages/backend/tsconfig.declarations.json @@ -7,6 +7,6 @@ "emitDeclarationOnly": true, "declarationMap": true, "sourceMap": false, - "declarationDir": "./dist/types" + "declarationDir": "./dist" } } From 077642bd164d9ed43b4688d464af38ffedbafe41 Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Thu, 14 Dec 2023 14:46:53 +0200 Subject: [PATCH 4/8] chore(clerk-sdk-node): Drop top-level re-exported BAPI client methods Removing those, resolves some issues with our type resolution and also makes our exposed API cleaner. ``` // Before import { users } from "@clerk/clerk-sdk-node" // After import { clerkClient } from "@clerk/clerk-sdk-node" clerkClient.users --- .../__snapshots__/exports.test.ts.snap | 10 ------- packages/sdk-node/src/index.ts | 28 ------------------- 2 files changed, 38 deletions(-) diff --git a/packages/sdk-node/src/__tests__/__snapshots__/exports.test.ts.snap b/packages/sdk-node/src/__tests__/__snapshots__/exports.test.ts.snap index 1c1222dcb2d..9128626cdbb 100644 --- a/packages/sdk-node/src/__tests__/__snapshots__/exports.test.ts.snap +++ b/packages/sdk-node/src/__tests__/__snapshots__/exports.test.ts.snap @@ -27,10 +27,8 @@ exports[`module exports should not change unless explicitly set 1`] = ` "Token", "User", "Verification", - "allowlistIdentifiers", "buildRequestUrl", "clerkClient", - "clients", "constants", "createAuthenticateRequest", "createClerkClient", @@ -40,23 +38,15 @@ exports[`module exports should not change unless explicitly set 1`] = ` "debugRequestState", "decodeJwt", "deserialize", - "domains", - "emailAddresses", - "emails", "hasValidSignature", - "invitations", "makeAuthObjectSerializable", - "organizations", - "phoneNumbers", "prunePrivateMetadata", "redirect", "requireAuth", "sanitizeAuthObject", - "sessions", "signJwt", "signedInAuthObject", "signedOutAuthObject", - "users", "verifyJwt", "verifyToken", "withAuth", diff --git a/packages/sdk-node/src/index.ts b/packages/sdk-node/src/index.ts index e235d41e9c0..7aa1b40e041 100644 --- a/packages/sdk-node/src/index.ts +++ b/packages/sdk-node/src/index.ts @@ -10,42 +10,14 @@ import type { WithAuthProp, } from './types'; -// eslint-disable-next-line import/export export * from '@clerk/backend'; /** * The order of these exports is important, as we want Clerk from clerk/sdk-node * to shadow the Clerk export from clerk/backend, because it needs to support * 2 additional apis: clerk.expressWithAuth, clerk.expressRequireAuth */ -// eslint-disable-next-line import/export export { clerkClient, ClerkExpressRequireAuth, ClerkExpressWithAuth, createClerkClient }; -const { - users, - sessions, - emailAddresses, - phoneNumbers, - emails, - invitations, - organizations, - clients, - allowlistIdentifiers, - domains, -} = clerkClient; - -export { - allowlistIdentifiers, - clients, - domains, - emailAddresses, - emails, - invitations, - organizations, - phoneNumbers, - sessions, - users, -}; - export type { ClerkMiddleware, ClerkMiddlewareOptions, LooseAuthProp, RequireAuthProp, StrictAuthProp, WithAuthProp }; export { createClerkExpressRequireAuth, createClerkExpressWithAuth }; From d225d561cdb1381573cd18cdbfcae72595af4814 Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Thu, 14 Dec 2023 14:59:51 +0200 Subject: [PATCH 5/8] chore(backend): Drop `deserialize` from top-level export --- .changeset/fifty-snakes-accept.md | 12 ++++++++++ .changeset/tasty-terms-fly.md | 23 +++++++++++++++++++ .../backend/src/__tests__/exports.test.ts | 1 - packages/backend/src/api/resources/index.ts | 1 - .../__snapshots__/exports.test.ts.snap | 1 - 5 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 .changeset/fifty-snakes-accept.md create mode 100644 .changeset/tasty-terms-fly.md diff --git a/.changeset/fifty-snakes-accept.md b/.changeset/fifty-snakes-accept.md new file mode 100644 index 00000000000..f8b6f90fc8d --- /dev/null +++ b/.changeset/fifty-snakes-accept.md @@ -0,0 +1,12 @@ +--- +'@clerk/clerk-sdk-node': major +--- + +Internal top-level BAPI resources was dropped to resolve some issues with our type resolution and also make our exposed API cleaner. +```typescript +// Before +import { users } from "@clerk/clerk-sdk-node" +// After +import { clerkClient } from "@clerk/clerk-sdk-node" +clerkClient.users +``` \ No newline at end of file diff --git a/.changeset/tasty-terms-fly.md b/.changeset/tasty-terms-fly.md new file mode 100644 index 00000000000..bb1b1533458 --- /dev/null +++ b/.changeset/tasty-terms-fly.md @@ -0,0 +1,23 @@ +--- +'@clerk/clerk-sdk-node': major +'@clerk/backend': major +'@clerk/nextjs': major +--- + +Changes in `@clerk/backend` exports: +- Drop Internal `deserialize` helper +- Introduce `/errors` subpath export, eg: + ```typescript + import { + TokenVerificationError, + TokenVerificationErrorAction, + TokenVerificationErrorCode, + TokenVerificationErrorReason } from '@clerk/backend/errors'; + ``` +- Drop errors from top-level export + ```typescript + // Before + import { TokenVerificationError, TokenVerificationErrorReason } from '@clerk/backend'; + // After + import { TokenVerificationError, TokenVerificationErrorReason } from '@clerk/backend/errors'; + ``` diff --git a/packages/backend/src/__tests__/exports.test.ts b/packages/backend/src/__tests__/exports.test.ts index feed0701b6e..b1e16ba037b 100644 --- a/packages/backend/src/__tests__/exports.test.ts +++ b/packages/backend/src/__tests__/exports.test.ts @@ -39,7 +39,6 @@ export default (QUnit: QUnit) => { 'createIsomorphicRequest', 'debugRequestState', 'decodeJwt', - 'deserialize', 'hasValidSignature', 'makeAuthObjectSerializable', 'prunePrivateMetadata', diff --git a/packages/backend/src/api/resources/index.ts b/packages/backend/src/api/resources/index.ts index 936494c56eb..1ec010007d5 100644 --- a/packages/backend/src/api/resources/index.ts +++ b/packages/backend/src/api/resources/index.ts @@ -1,7 +1,6 @@ export * from './AllowlistIdentifier'; export * from './Client'; export * from './DeletedObject'; -export * from './Deserializer'; export * from './Email'; export * from './EmailAddress'; diff --git a/packages/sdk-node/src/__tests__/__snapshots__/exports.test.ts.snap b/packages/sdk-node/src/__tests__/__snapshots__/exports.test.ts.snap index 9128626cdbb..3f04f9e024b 100644 --- a/packages/sdk-node/src/__tests__/__snapshots__/exports.test.ts.snap +++ b/packages/sdk-node/src/__tests__/__snapshots__/exports.test.ts.snap @@ -37,7 +37,6 @@ exports[`module exports should not change unless explicitly set 1`] = ` "createIsomorphicRequest", "debugRequestState", "decodeJwt", - "deserialize", "hasValidSignature", "makeAuthObjectSerializable", "prunePrivateMetadata", From 802b762912d575c6bc94e5dbaa71e6a481807ea3 Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Fri, 15 Dec 2023 12:17:58 +0200 Subject: [PATCH 6/8] Update .changeset/fifty-snakes-accept.md Co-authored-by: Nikos Douvlis --- .changeset/fifty-snakes-accept.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/fifty-snakes-accept.md b/.changeset/fifty-snakes-accept.md index f8b6f90fc8d..2282fff834d 100644 --- a/.changeset/fifty-snakes-accept.md +++ b/.changeset/fifty-snakes-accept.md @@ -2,7 +2,7 @@ '@clerk/clerk-sdk-node': major --- -Internal top-level BAPI resources was dropped to resolve some issues with our type resolution and also make our exposed API cleaner. +Drop all pre-instantiated Backend API resources (`allowlistIdentifiers`, `clients`, `emailAddresses`, `emails`, `invitations`, `organizations`, `phoneNumbers`, `redirectUrls`, `sessions`, `signInTokens`, `users`, `domains`). Use the `clerkClient` import instead. ```typescript // Before import { users } from "@clerk/clerk-sdk-node" From 75b6bee26c2c710d036ba49967e2ade781e1a7b7 Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Fri, 15 Dec 2023 13:02:38 +0200 Subject: [PATCH 7/8] chore(repo): Disable attw for backend package MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The attw was failing in attw due to ``` 🎭 Masquerading as CJS ``` --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7787ef6a948..5d0b3ca3411 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -58,11 +58,11 @@ jobs: - name: Lint types using attw timeout-minutes: ${{ fromJSON(vars.TIMEOUT_MINUTES_SHORT) }} - run: npx turbo lint:attw $TURBO_ARGS --filter=!nextjs --only + run: npx turbo lint:attw $TURBO_ARGS --filter=!nextjs --filter=!backend --only - name: Lint types using attw [Errors Allowed] timeout-minutes: ${{ fromJSON(vars.TIMEOUT_MINUTES_SHORT) }} - run: npx turbo lint:attw $TURBO_ARGS --filter=nextjs --continue --only + run: npx turbo lint:attw $TURBO_ARGS --filter=nextjs --filter=backend --continue --only continue-on-error: true # TODO: Remove this when all related errors are fixed - name: Run lint From 637d245d1357fd308bdc671561c38bbd29cfb9a2 Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Fri, 15 Dec 2023 13:22:55 +0200 Subject: [PATCH 8/8] fix(backend): Improve node esm support --- packages/backend/src/runtime.ts | 2 +- packages/backend/src/runtime/browser/crypto.mjs | 2 +- packages/backend/src/runtime/node/crypto.js | 12 +----------- 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/packages/backend/src/runtime.ts b/packages/backend/src/runtime.ts index 8de0004e8a2..c8ae4f0c9b1 100644 --- a/packages/backend/src/runtime.ts +++ b/packages/backend/src/runtime.ts @@ -13,7 +13,7 @@ */ // @ts-ignore - These are package subpaths -import crypto from '#crypto'; +import { webcrypto as crypto } from '#crypto'; type Runtime = { crypto: Crypto; diff --git a/packages/backend/src/runtime/browser/crypto.mjs b/packages/backend/src/runtime/browser/crypto.mjs index fe98f115451..558f375dd4a 100644 --- a/packages/backend/src/runtime/browser/crypto.mjs +++ b/packages/backend/src/runtime/browser/crypto.mjs @@ -1 +1 @@ -export default crypto; +export const webcrypto = crypto; diff --git a/packages/backend/src/runtime/node/crypto.js b/packages/backend/src/runtime/node/crypto.js index e192b979353..dc45bca829a 100644 --- a/packages/backend/src/runtime/node/crypto.js +++ b/packages/backend/src/runtime/node/crypto.js @@ -1,11 +1 @@ -let webcrypto; -try { - webcrypto = require('node:crypto').webcrypto; - if (!webcrypto) { - webcrypto = global.crypto; - } -} catch (e) { - webcrypto = global.crypto; -} - -module.exports = webcrypto; +module.exports.webcrypto = require('node:crypto').webcrypto;