From c695529089f55baef72b86e3b73b8cd9f4f58e6d Mon Sep 17 00:00:00 2001 From: Peter Perlepes Date: Tue, 3 May 2022 13:52:37 +0300 Subject: [PATCH 1/7] feat(nextjs,clerk-sdk-node,remix): Add claims attribute to req.auth --- .../backend-core/src/util/createGetToken.ts | 1 + packages/edge/src/vercel-edge/index.ts | 9 +++++- packages/edge/src/vercel-edge/types.ts | 4 ++- .../edge/src/vercel-edge/utils/getAuthData.ts | 29 ------------------- .../utils/injectAuthIntoRequest.ts | 3 +- packages/gatsby-plugin-clerk/src/ssr/utils.ts | 2 ++ packages/nextjs/src/middleware/types.ts | 1 + .../src/middleware/utils/getAuthData.ts | 2 +- .../middleware/utils/injectAuthIntoRequest.ts | 4 +-- packages/remix/src/ssr/getAuthData.ts | 3 +- packages/sdk-node/src/Clerk.ts | 4 +++ .../sdk-node/src/__tests__/middleware.test.ts | 2 ++ packages/types/src/ssr.ts | 1 + 13 files changed, 29 insertions(+), 36 deletions(-) delete mode 100644 packages/edge/src/vercel-edge/utils/getAuthData.ts diff --git a/packages/backend-core/src/util/createGetToken.ts b/packages/backend-core/src/util/createGetToken.ts index efd70f91f7c..54bb080b59c 100644 --- a/packages/backend-core/src/util/createGetToken.ts +++ b/packages/backend-core/src/util/createGetToken.ts @@ -45,5 +45,6 @@ export const createSignedOutState = () => { userId: null, user: null, getToken: signedOutGetToken, + claims: null, }; }; diff --git a/packages/edge/src/vercel-edge/index.ts b/packages/edge/src/vercel-edge/index.ts index 520049ea8f4..18ccf786a32 100644 --- a/packages/edge/src/vercel-edge/index.ts +++ b/packages/edge/src/vercel-edge/index.ts @@ -122,7 +122,14 @@ export function withEdgeMiddlewareAuth( fetcher: (...args) => ClerkAPI.sessions.getToken(...args), }); - const authRequest = injectAuthIntoRequest(req, { user, session, sessionId, userId, getToken }); + const authRequest = injectAuthIntoRequest(req, { + user, + session, + sessionId, + userId, + getToken, + claims: sessionClaims as Record, + }); return handler(authRequest, event); }; } diff --git a/packages/edge/src/vercel-edge/types.ts b/packages/edge/src/vercel-edge/types.ts index 4446dd5c66e..b7b4d350ffb 100644 --- a/packages/edge/src/vercel-edge/types.ts +++ b/packages/edge/src/vercel-edge/types.ts @@ -1,6 +1,6 @@ import type { Session, User } from '@clerk/backend-core'; -import type { NextFetchEvent, NextRequest, NextResponse } from 'next/server'; import { ServerGetToken } from '@clerk/types'; +import type { NextFetchEvent, NextRequest, NextResponse } from 'next/server'; export type WithEdgeMiddlewareAuthOptions = { loadUser?: boolean; @@ -37,6 +37,7 @@ export type EdgeMiddlewareAuth = { sessionId: string | null; userId: string | null; getToken: ServerGetToken; + claims: Record | null; }; export type AuthData = { @@ -45,4 +46,5 @@ export type AuthData = { userId: string | null; user: User | undefined | null; getToken: ServerGetToken; + claims: Record | null; }; diff --git a/packages/edge/src/vercel-edge/utils/getAuthData.ts b/packages/edge/src/vercel-edge/utils/getAuthData.ts deleted file mode 100644 index 123f3917225..00000000000 --- a/packages/edge/src/vercel-edge/utils/getAuthData.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { createGetToken, JWTPayload } from '@clerk/backend-core'; -import { NextRequest } from 'next/server'; - -import { ClerkAPI } from '../ClerkAPI'; -import { AuthData, WithEdgeMiddlewareAuthOptions } from '../types'; - -/** - * @internal - */ -export async function getAuthData( - req: NextRequest, - { sid, sub, loadSession, loadUser }: WithEdgeMiddlewareAuthOptions & JWTPayload, -): Promise { - const [user, session] = await Promise.all([ - loadUser ? ClerkAPI.users.getUser(sub as string) : Promise.resolve(undefined), - loadSession ? ClerkAPI.sessions.getSession(sid as string) : Promise.resolve(undefined), - ]); - - const sessionId = sid; - const userId = sub; - const getToken = createGetToken({ - sessionId, - cookieToken: req.cookies['__session'], - headerToken: req.headers.get('authorization')?.replace('Bearer ', ''), - fetcher: (...args) => ClerkAPI.sessions.getToken(...args), - }); - - return { sessionId, userId, getToken, user, session }; -} diff --git a/packages/edge/src/vercel-edge/utils/injectAuthIntoRequest.ts b/packages/edge/src/vercel-edge/utils/injectAuthIntoRequest.ts index 36a62d3ea7f..1df52a93990 100644 --- a/packages/edge/src/vercel-edge/utils/injectAuthIntoRequest.ts +++ b/packages/edge/src/vercel-edge/utils/injectAuthIntoRequest.ts @@ -3,11 +3,12 @@ import { NextRequest } from 'next/server'; import { AuthData, RequestWithAuth } from '../types'; export function injectAuthIntoRequest(req: NextRequest, authData: AuthData): RequestWithAuth { - const { user, session, userId, sessionId, getToken } = authData; + const { user, session, userId, sessionId, getToken, claims } = authData; const auth = { userId, sessionId, getToken, + claims, }; /* Object.assign is used here as NextRequest properties also include Symbols */ diff --git a/packages/gatsby-plugin-clerk/src/ssr/utils.ts b/packages/gatsby-plugin-clerk/src/ssr/utils.ts index 4155e56397a..6b7c8dadae0 100644 --- a/packages/gatsby-plugin-clerk/src/ssr/utils.ts +++ b/packages/gatsby-plugin-clerk/src/ssr/utils.ts @@ -9,6 +9,8 @@ import { GetServerDataPropsWithAuth } from './types'; */ export function injectAuthIntoContext(context: GetServerDataProps, authData: AuthData): GetServerDataPropsWithAuth { const { user, session, ...auth } = authData || {}; + // FIXME: Add auth.claims addition + // @ts-ignore return { ...context, auth, user, session }; } diff --git a/packages/nextjs/src/middleware/types.ts b/packages/nextjs/src/middleware/types.ts index 75f98ed2578..f17c0f30970 100644 --- a/packages/nextjs/src/middleware/types.ts +++ b/packages/nextjs/src/middleware/types.ts @@ -24,6 +24,7 @@ export type AuthData = { userId: string | null; user: User | undefined | null; getToken: (...args: any) => Promise; + claims: Record | null; }; export type ContextWithAuth = GetServerSidePropsContext & { diff --git a/packages/nextjs/src/middleware/utils/getAuthData.ts b/packages/nextjs/src/middleware/utils/getAuthData.ts index 0b7d9dab2b6..7f7f4b57a65 100644 --- a/packages/nextjs/src/middleware/utils/getAuthData.ts +++ b/packages/nextjs/src/middleware/utils/getAuthData.ts @@ -59,7 +59,7 @@ export async function getAuthData( loadSession ? sessions.getSession(sessionId) : Promise.resolve(undefined), ]); - return { sessionId, userId, user, session, getToken }; + return { sessionId, userId, user, session, getToken, claims: sessionClaims }; } catch (err) { return createSignedOutState(); } diff --git a/packages/nextjs/src/middleware/utils/injectAuthIntoRequest.ts b/packages/nextjs/src/middleware/utils/injectAuthIntoRequest.ts index 5ef4dda0469..583bdffb88b 100644 --- a/packages/nextjs/src/middleware/utils/injectAuthIntoRequest.ts +++ b/packages/nextjs/src/middleware/utils/injectAuthIntoRequest.ts @@ -7,8 +7,8 @@ import { AuthData, ContextWithAuth } from '../types'; * @internal */ export function injectAuthIntoRequest(ctx: GetServerSidePropsContext, authData: AuthData): ContextWithAuth { - const { user, session, userId, sessionId, getToken } = authData; - (ctx.req as any).auth = { userId, sessionId, getToken }; + const { user, session, userId, sessionId, getToken, claims } = authData; + (ctx.req as any).auth = { userId, sessionId, getToken, claims }; (ctx.req as any).user = user; (ctx.req as any).session = session; return ctx as ContextWithAuth; diff --git a/packages/remix/src/ssr/getAuthData.ts b/packages/remix/src/ssr/getAuthData.ts index 033d48fc8ce..338f48b81a0 100644 --- a/packages/remix/src/ssr/getAuthData.ts +++ b/packages/remix/src/ssr/getAuthData.ts @@ -11,6 +11,7 @@ export type AuthData = { userId: string | null; user: User | undefined | null; getToken: ServerGetToken; + claims: Record | null; }; /** @@ -64,7 +65,7 @@ export async function getAuthData( fetcher: (...args) => sessions.getToken(...args), }); - return { authData: { sessionId, userId, user, session, getToken } }; + return { authData: { sessionId, userId, user, session, getToken, claims: sessionClaims } }; } catch (e) { return { authData: createSignedOutState() }; } diff --git a/packages/sdk-node/src/Clerk.ts b/packages/sdk-node/src/Clerk.ts index f088a7bbfc4..b1049872bf3 100644 --- a/packages/sdk-node/src/Clerk.ts +++ b/packages/sdk-node/src/Clerk.ts @@ -43,6 +43,7 @@ export type WithAuthProp = T & { sessionId: string | null; userId: string | null; getToken: ServerGetToken; + claims: Record | null; }; }; @@ -51,6 +52,7 @@ export type RequireAuthProp = T & { sessionId: string; userId: string; getToken: ServerGetToken; + claims: Record; }; }; @@ -290,6 +292,7 @@ export default class Clerk extends ClerkBackendAPI { sessionId: sessionClaims?.sid, fetcher: (...args) => this.sessions.getToken(...args), }), + claims: sessionClaims, }; return next(); @@ -305,6 +308,7 @@ export default class Clerk extends ClerkBackendAPI { userId: null, sessionId: null, getToken: createSignedOutState().getToken, + claims: null, }; // Call onError if provided diff --git a/packages/sdk-node/src/__tests__/middleware.test.ts b/packages/sdk-node/src/__tests__/middleware.test.ts index 81fa5e50265..d253503109e 100644 --- a/packages/sdk-node/src/__tests__/middleware.test.ts +++ b/packages/sdk-node/src/__tests__/middleware.test.ts @@ -32,12 +32,14 @@ const mockAuthProp = { getToken: mockGetToken, userId: 'user_id', sessionId: 'session_id', + claims: mockGetAuthStateClaims, }; const mockAuthSignedOutProp = { getToken: mockGetToken, userId: null, sessionId: null, + claims: null, }; const mockToken = jwt.sign(mockGetAuthStateClaims, 'mock-secret'); diff --git a/packages/types/src/ssr.ts b/packages/types/src/ssr.ts index 690d01481d2..7b4ea481e76 100644 --- a/packages/types/src/ssr.ts +++ b/packages/types/src/ssr.ts @@ -9,6 +9,7 @@ export type ServerSideAuth = { sessionId: string | null; userId: string | null; getToken: ServerGetToken; + claims: Record | null; }; type SsrSessionState = From ad496f95b27dd6286f94399d485bbcd774d90a2d Mon Sep 17 00:00:00 2001 From: Giannis Katsanos Date: Thu, 5 May 2022 12:19:56 +0300 Subject: [PATCH 2/7] feat(backend-core): Update organization metadata Added a new method in the organizations API to update and merge organization metadata. The method name is updateOrganizationMetadata. It triggers a PATCH /v1/organizations/:id/metadata request to the Clerk API and accepts publicMetadata and privateMetadata parameters. The metadata will be merged with any existing metadata on the organization. --- packages/backend-core/API.md | 19 ++++++++++ .../__tests__/apis/OrganizationApi.test.ts | 37 +++++++++++++++++++ .../src/api/collection/OrganizationApi.ts | 12 ++++++ 3 files changed, 68 insertions(+) diff --git a/packages/backend-core/API.md b/packages/backend-core/API.md index f71a97a0ca0..72352a6cd80 100644 --- a/packages/backend-core/API.md +++ b/packages/backend-core/API.md @@ -20,6 +20,7 @@ Reference of the methods supported in the Clerk Backend API wrapper. [API refere - [revokeInvitation(invitationId)](#revokeinvitationinvitationId) - [Organization operations](#organization-operations) - [createOrganization(params)](#createorganizationparams) + - [updateOrganizationMetadata(params)](#updateorganizationmetadataparams) - [Session operations](#session-operations) - [getSessionList({ clientId, userId })](#getsessionlist-clientid-userid-) - [getSession(sessionId)](#getsessionsessionid) @@ -170,6 +171,24 @@ const organization = await clerkAPI.organizations.createOrganization({ }); ``` +#### updateOrganizationMetadata(params) + +Update an organization's metadata attributes by merging existing values with the provided parameters. + +You can remove metadata keys at any level by setting their value to `null`. + +Available parameters are: + +- _publicMetadata_ Metadata saved on the organization, that is visible to both your Frontend and Backend APIs. +- _privateMetadata_ Metadata saved on the organization, that is only visible to your Backend API. + +```js +const organization = await clerkAPI.organizations.updateOrganizationMetadata({ + publicMetadata: { color: 'blue' }, + privateMetadata: { sandbox_mode: true }, +}); +``` + ## Session operations Session operations are exposed by the `sessions` sub-api (`clerkAPI.sessions`). diff --git a/packages/backend-core/src/__tests__/apis/OrganizationApi.test.ts b/packages/backend-core/src/__tests__/apis/OrganizationApi.test.ts index 7e44b3fd12d..ec6abe51abd 100644 --- a/packages/backend-core/src/__tests__/apis/OrganizationApi.test.ts +++ b/packages/backend-core/src/__tests__/apis/OrganizationApi.test.ts @@ -49,3 +49,40 @@ test('createOrganization() creates an organization', async () => { }), ); }); + +test('updateOrganizationMetadata() updates organization metadata', async () => { + const id = 'org_randomid'; + const publicMetadata = { hello: 'world' }; + const privateMetadata = { goodbye: 'world' }; + const resJSON = { + object: 'organization', + id, + name: 'Org', + public_metadata: publicMetadata, + private_metadata: privateMetadata, + created_at: 1611948436, + updated_at: 1611948436, + }; + + nock('https://api.clerk.dev') + .patch(`/v1/organizations/${id}/metadata`, { + public_metadata: JSON.stringify(publicMetadata), + private_metadata: JSON.stringify(privateMetadata), + }) + .reply(200, resJSON); + + const organization = await TestBackendAPIClient.organizations.updateOrganizationMetadata(id, { + publicMetadata, + privateMetadata, + }); + expect(organization).toEqual( + new Organization({ + id, + name: resJSON.name, + publicMetadata, + privateMetadata, + createdAt: resJSON.created_at, + updatedAt: resJSON.updated_at, + }), + ); +}); diff --git a/packages/backend-core/src/api/collection/OrganizationApi.ts b/packages/backend-core/src/api/collection/OrganizationApi.ts index 135aaf504a6..c8bbba12d69 100644 --- a/packages/backend-core/src/api/collection/OrganizationApi.ts +++ b/packages/backend-core/src/api/collection/OrganizationApi.ts @@ -19,6 +19,8 @@ type OrganizationMetadataRequestBody = { privateMetadata?: string; }; +type UpdateMetadataParams = OrganizationMetadataParams; + export class OrganizationApi extends AbstractApi { public async createOrganization(params: CreateParams) { const { publicMetadata, privateMetadata } = params; @@ -34,6 +36,16 @@ export class OrganizationApi extends AbstractApi { }, }); } + + public async updateOrganizationMetadata(organizationId: string, params: UpdateMetadataParams) { + this.requireId(organizationId); + + return this._restClient.makeRequest({ + method: 'PATCH', + path: `${basePath}/${organizationId}/metadata`, + bodyParams: stringifyMetadataParams(params), + }); + } } function stringifyMetadataParams( From 9e55b7c2cafdcbcf6d8c210e668a22e07580cdb6 Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Thu, 5 May 2022 21:51:21 +0300 Subject: [PATCH 3/7] fix(clerk-react): Pass initialState directly to ClerkContextProvider --- packages/react/src/contexts/ClerkContextProvider.tsx | 9 +++------ packages/react/src/contexts/ClerkProvider.tsx | 5 +++-- packages/react/src/isomorphicClerk.ts | 7 +------ 3 files changed, 7 insertions(+), 14 deletions(-) diff --git a/packages/react/src/contexts/ClerkContextProvider.tsx b/packages/react/src/contexts/ClerkContextProvider.tsx index 3e42636d9ed..0c12437be12 100644 --- a/packages/react/src/contexts/ClerkContextProvider.tsx +++ b/packages/react/src/contexts/ClerkContextProvider.tsx @@ -10,20 +10,17 @@ import { UserContext } from './UserContext'; type ClerkContextWrapperProps = { isomorphicClerk: IsomorphicClerk; + initialState: InitialState | undefined; children: React.ReactNode; clerkLoaded: boolean; }; type ClerkContextProviderState = Resources; -export function ClerkContextProvider({ - isomorphicClerk, - children, - clerkLoaded, -}: ClerkContextWrapperProps): JSX.Element | null { +export function ClerkContextProvider(props: ClerkContextWrapperProps): JSX.Element | null { + const { isomorphicClerk, children, clerkLoaded, initialState } = props; const clerk = isomorphicClerk; - const initialState = clerk.initialState; const [state, setState] = React.useState({ client: clerk.client as ClientResource, session: clerk.session, diff --git a/packages/react/src/contexts/ClerkProvider.tsx b/packages/react/src/contexts/ClerkProvider.tsx index d85b5ec1ddd..fa124c3e74c 100644 --- a/packages/react/src/contexts/ClerkProvider.tsx +++ b/packages/react/src/contexts/ClerkProvider.tsx @@ -18,8 +18,8 @@ function ClerkProviderBase(props: ClerkProviderProps): JSX.Element { const [clerkLoaded, setClerkLoaded] = useState(false); const clerk = useMemo(() => { - const { frontendApi = '', Clerk: ClerkConstructor, initialState, ...options } = props; - return IsomorphicClerk.getOrCreateInstance({ frontendApi, options, Clerk: ClerkConstructor, initialState }); + const { frontendApi = '', Clerk: ClerkConstructor, ...options } = props; + return IsomorphicClerk.getOrCreateInstance({ frontendApi, options, Clerk: ClerkConstructor }); }, []); useEffect(() => { @@ -29,6 +29,7 @@ function ClerkProviderBase(props: ClerkProviderProps): JSX.Element { return ( diff --git a/packages/react/src/isomorphicClerk.ts b/packages/react/src/isomorphicClerk.ts index 17ec79d976c..cb390cf7070 100644 --- a/packages/react/src/isomorphicClerk.ts +++ b/packages/react/src/isomorphicClerk.ts @@ -5,7 +5,6 @@ import type { CreateOrganizationParams, HandleMagicLinkVerificationParams, HandleOAuthCallbackParams, - InitialState, OrganizationMembershipResource, OrganizationResource, RedirectOptions, @@ -39,7 +38,6 @@ type NewIsomorphicClerkParams = { frontendApi: string; options: IsomorphicClerkOptions; Clerk: ClerkProp | null; - initialState?: InitialState; }; export default class IsomorphicClerk { @@ -59,8 +57,6 @@ export default class IsomorphicClerk { #loaded = false; - initialState: InitialState | undefined; - get loaded(): boolean { return this.#loaded; } @@ -79,11 +75,10 @@ export default class IsomorphicClerk { throw new Error('An IsomorphicClerk instance already exists. Use IsomorphicClerk.getOrCreateInstance instead'); } - const { Clerk = null, frontendApi, initialState, options = {} } = params || {}; + const { Clerk = null, frontendApi, options = {} } = params || {}; this.frontendApi = frontendApi; this.options = options; this.Clerk = Clerk; - this.initialState = initialState; this.mode = inClientSide() ? 'browser' : 'server'; } From 91b62175cadd82b38747cc6d7a0216f42c89b5fe Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Fri, 6 May 2022 00:29:47 +0300 Subject: [PATCH 4/7] fix(clerk-react): Make isomorphicClerk loading idempotent --- .../src/contexts/ClerkContextProvider.tsx | 24 +++++++++++++------ packages/react/src/contexts/ClerkProvider.tsx | 21 ++++------------ packages/react/src/isomorphicClerk.ts | 7 +++--- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/packages/react/src/contexts/ClerkContextProvider.tsx b/packages/react/src/contexts/ClerkContextProvider.tsx index 0c12437be12..02d766e5f5b 100644 --- a/packages/react/src/contexts/ClerkContextProvider.tsx +++ b/packages/react/src/contexts/ClerkContextProvider.tsx @@ -1,25 +1,24 @@ import { ActiveSessionResource, ClientResource, InitialState, Resources, UserResource } from '@clerk/types'; import React from 'react'; -import IsomorphicClerk from '../isomorphicClerk'; +import IsomorphicClerk, { NewIsomorphicClerkParams } from '../isomorphicClerk'; import { AuthContext } from './AuthContext'; import { ClientContext } from './ClientContext'; import { IsomorphicClerkContext } from './IsomorphicClerkContext'; import { SessionContext } from './SessionContext'; import { UserContext } from './UserContext'; -type ClerkContextWrapperProps = { - isomorphicClerk: IsomorphicClerk; +type ClerkContextProvider = { + isomorphicClerkOptions: NewIsomorphicClerkParams; initialState: InitialState | undefined; children: React.ReactNode; - clerkLoaded: boolean; }; type ClerkContextProviderState = Resources; -export function ClerkContextProvider(props: ClerkContextWrapperProps): JSX.Element | null { - const { isomorphicClerk, children, clerkLoaded, initialState } = props; - const clerk = isomorphicClerk; +export function ClerkContextProvider(props: ClerkContextProvider): JSX.Element | null { + const { isomorphicClerkOptions, initialState, children } = props; + const { isomorphicClerk: clerk, loaded: clerkLoaded } = useLoadedIsomorphicClerk(isomorphicClerkOptions); const [state, setState] = React.useState({ client: clerk.client as ClientResource, @@ -62,6 +61,17 @@ export function ClerkContextProvider(props: ClerkContextWrapperProps): JSX.Eleme ); } +const useLoadedIsomorphicClerk = (options: NewIsomorphicClerkParams) => { + const [loaded, setLoaded] = React.useState(false); + const isomorphicClerk = React.useMemo(() => IsomorphicClerk.getOrCreateInstance(options), []); + + React.useEffect(() => { + isomorphicClerk.addOnLoaded(() => setLoaded(true)); + }, []); + + return { isomorphicClerk, loaded }; +}; + // This should be provided from isomorphicClerk // TODO: move inside isomorphicClerk function deriveState( diff --git a/packages/react/src/contexts/ClerkProvider.tsx b/packages/react/src/contexts/ClerkProvider.tsx index fa124c3e74c..bb78782d808 100644 --- a/packages/react/src/contexts/ClerkProvider.tsx +++ b/packages/react/src/contexts/ClerkProvider.tsx @@ -1,8 +1,7 @@ import { InitialState } from '@clerk/types'; -import React, { useEffect, useMemo, useState } from 'react'; +import React from 'react'; import { multipleClerkProvidersError } from '../errors'; -import IsomorphicClerk from '../isomorphicClerk'; import type { IsomorphicClerkOptions } from '../types'; import { withMaxAllowedInstancesGuard } from '../utils'; import { ClerkContextProvider } from './ClerkContextProvider'; @@ -15,25 +14,15 @@ export interface ClerkProviderProps extends IsomorphicClerkOptions { } function ClerkProviderBase(props: ClerkProviderProps): JSX.Element { - const [clerkLoaded, setClerkLoaded] = useState(false); - - const clerk = useMemo(() => { - const { frontendApi = '', Clerk: ClerkConstructor, ...options } = props; - return IsomorphicClerk.getOrCreateInstance({ frontendApi, options, Clerk: ClerkConstructor }); - }, []); - - useEffect(() => { - void clerk.loadClerkJS().then(() => setClerkLoaded(true)); - }, []); + const { initialState, children, Clerk, frontendApi, ...options } = props; return ( - {props.children} + {children} ); diff --git a/packages/react/src/isomorphicClerk.ts b/packages/react/src/isomorphicClerk.ts index cb390cf7070..98c2ce65761 100644 --- a/packages/react/src/isomorphicClerk.ts +++ b/packages/react/src/isomorphicClerk.ts @@ -34,14 +34,14 @@ type MethodName = { }[keyof T]; type MethodCallback = () => void; -type NewIsomorphicClerkParams = { +export type NewIsomorphicClerkParams = { frontendApi: string; options: IsomorphicClerkOptions; Clerk: ClerkProp | null; }; export default class IsomorphicClerk { - private mode: string; + private mode: 'browser' | 'server'; private frontendApi: string; private options: IsomorphicClerkOptions; private Clerk: ClerkProp; @@ -80,10 +80,11 @@ export default class IsomorphicClerk { this.options = options; this.Clerk = Clerk; this.mode = inClientSide() ? 'browser' : 'server'; + void this.loadClerkJS(); } async loadClerkJS(): Promise { - if (this.#loaded) { + if (this.mode !== 'browser' || this.#loaded) { return; } From d22b808cf9eee2570be83f247fd25543a0202fd6 Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Fri, 6 May 2022 01:03:13 +0300 Subject: [PATCH 5/7] fix(clerk-react): Make getOrCreateInstance handle both SSR and CSR instantiation --- packages/react/src/isomorphicClerk.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/react/src/isomorphicClerk.ts b/packages/react/src/isomorphicClerk.ts index 98c2ce65761..516ba6cc5d2 100644 --- a/packages/react/src/isomorphicClerk.ts +++ b/packages/react/src/isomorphicClerk.ts @@ -64,17 +64,16 @@ export default class IsomorphicClerk { static #instance: IsomorphicClerk; static getOrCreateInstance(params: NewIsomorphicClerkParams) { - if (!this.#instance) { + // During SSR: a new instance should be created for every request + // During CSR: use the cached instance for the whole lifetime of the app + // This method should be idempotent in both scenarios + if (!inClientSide() || !this.#instance) { this.#instance = new IsomorphicClerk(params); } return this.#instance; } constructor(params: NewIsomorphicClerkParams) { - if (IsomorphicClerk.#instance) { - throw new Error('An IsomorphicClerk instance already exists. Use IsomorphicClerk.getOrCreateInstance instead'); - } - const { Clerk = null, frontendApi, options = {} } = params || {}; this.frontendApi = frontendApi; this.options = options; From 6da7041e06b467616390516ce941f05789147150 Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Fri, 6 May 2022 01:08:12 +0300 Subject: [PATCH 6/7] chore(release): Publish - @clerk/clerk-expo@0.9.19-staging.0 - @clerk/nextjs@3.5.2-staging.0 - @clerk/clerk-react@3.2.13-staging.0 - @clerk/remix@0.3.17-staging.0 --- package-lock.json | 44 ++++++++++++++++++++++++++++-------- packages/expo/CHANGELOG.md | 4 ++++ packages/expo/package.json | 4 ++-- packages/nextjs/CHANGELOG.md | 4 ++++ packages/nextjs/package.json | 4 ++-- packages/react/CHANGELOG.md | 8 +++++++ packages/react/package.json | 2 +- packages/react/src/info.ts | 2 +- packages/remix/CHANGELOG.md | 4 ++++ packages/remix/package.json | 4 ++-- 10 files changed, 62 insertions(+), 18 deletions(-) diff --git a/package-lock.json b/package-lock.json index 865501923bb..14c0b6323be 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34892,11 +34892,11 @@ }, "packages/expo": { "name": "@clerk/clerk-expo", - "version": "0.9.18", + "version": "0.9.19-staging.0", "license": "MIT", "dependencies": { "@clerk/clerk-js": "^3.10.0", - "@clerk/clerk-react": "^3.2.12", + "@clerk/clerk-react": "^3.2.13-staging.0", "base-64": "^1.0.0" }, "devDependencies": { @@ -34958,6 +34958,21 @@ "tslib": "^2.3.1" } }, + "packages/gatsby-plugin-clerk/node_modules/@clerk/clerk-react": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/@clerk/clerk-react/-/clerk-react-3.2.11.tgz", + "integrity": "sha512-rtTUagchK0029yz7hU5GVNcuihX5N3Wo4KIVg7W6DtS+zJC1Jr6CePGf7EARCLJAZsrkL8SaGJ+uisA1pfsPGw==", + "dependencies": { + "@clerk/types": "^2.8.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16" + } + }, "packages/gatsby-plugin-clerk/node_modules/@clerk/clerk-sdk-node": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/@clerk/clerk-sdk-node/-/clerk-sdk-node-3.3.5.tgz", @@ -35045,10 +35060,10 @@ }, "packages/nextjs": { "name": "@clerk/nextjs", - "version": "3.5.1", + "version": "3.5.2-staging.0", "license": "MIT", "dependencies": { - "@clerk/clerk-react": "^3.2.12", + "@clerk/clerk-react": "^3.2.13-staging.0", "@clerk/clerk-sdk-node": "^3.3.11", "@clerk/edge": "^1.3.8", "@clerk/types": "^2.9.0", @@ -35081,7 +35096,7 @@ }, "packages/react": { "name": "@clerk/clerk-react", - "version": "3.2.12", + "version": "3.2.13-staging.0", "license": "MIT", "dependencies": { "@clerk/types": "^2.9.0", @@ -35121,10 +35136,10 @@ }, "packages/remix": { "name": "@clerk/remix", - "version": "0.3.16", + "version": "0.3.17-staging.0", "license": "MIT", "dependencies": { - "@clerk/clerk-react": "^3.2.12", + "@clerk/clerk-react": "^3.2.13-staging.0", "@clerk/clerk-sdk-node": "^3.3.11", "@clerk/types": "^2.9.0", "cookie": "^0.5.0", @@ -36580,7 +36595,7 @@ "version": "file:packages/expo", "requires": { "@clerk/clerk-js": "^3.10.0", - "@clerk/clerk-react": "^3.2.12", + "@clerk/clerk-react": "^3.2.13-staging.0", "@clerk/types": "^2.9.0", "@types/jest": "^27.4.0", "@types/node": "^16.11.9", @@ -36807,7 +36822,7 @@ "@clerk/nextjs": { "version": "file:packages/nextjs", "requires": { - "@clerk/clerk-react": "^3.2.12", + "@clerk/clerk-react": "^3.2.13-staging.0", "@clerk/clerk-sdk-node": "^3.3.11", "@clerk/edge": "^1.3.8", "@clerk/types": "^2.9.0", @@ -36835,7 +36850,7 @@ "@clerk/remix": { "version": "file:packages/remix", "requires": { - "@clerk/clerk-react": "^3.2.12", + "@clerk/clerk-react": "^3.2.13-staging.0", "@clerk/clerk-sdk-node": "^3.3.11", "@clerk/types": "^2.9.0", "@types/cookie": "^0.5.0", @@ -49666,6 +49681,15 @@ "tslib": "^2.3.1" } }, + "@clerk/clerk-react": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/@clerk/clerk-react/-/clerk-react-3.2.11.tgz", + "integrity": "sha512-rtTUagchK0029yz7hU5GVNcuihX5N3Wo4KIVg7W6DtS+zJC1Jr6CePGf7EARCLJAZsrkL8SaGJ+uisA1pfsPGw==", + "requires": { + "@clerk/types": "^2.8.0", + "tslib": "^2.3.1" + } + }, "@clerk/clerk-sdk-node": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/@clerk/clerk-sdk-node/-/clerk-sdk-node-3.3.5.tgz", diff --git a/packages/expo/CHANGELOG.md b/packages/expo/CHANGELOG.md index debb00add12..e9778daf699 100644 --- a/packages/expo/CHANGELOG.md +++ b/packages/expo/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.9.19-staging.0](https://github.com/clerkinc/javascript/compare/@clerk/clerk-expo@0.9.18...@clerk/clerk-expo@0.9.19-staging.0) (2022-05-05) + +**Note:** Version bump only for package @clerk/clerk-expo + ### [0.9.18](https://github.com/clerkinc/javascript/compare/@clerk/clerk-expo@0.9.18-staging.0...@clerk/clerk-expo@0.9.18) (2022-05-05) **Note:** Version bump only for package @clerk/clerk-expo diff --git a/packages/expo/package.json b/packages/expo/package.json index ba085561389..eb51388fd5b 100644 --- a/packages/expo/package.json +++ b/packages/expo/package.json @@ -1,6 +1,6 @@ { "name": "@clerk/clerk-expo", - "version": "0.9.18", + "version": "0.9.19-staging.0", "license": "MIT", "description": "Clerk.dev React Native/Expo library", "keywords": [ @@ -27,7 +27,7 @@ }, "dependencies": { "@clerk/clerk-js": "^3.10.0", - "@clerk/clerk-react": "^3.2.12", + "@clerk/clerk-react": "^3.2.13-staging.0", "base-64": "^1.0.0" }, "devDependencies": { diff --git a/packages/nextjs/CHANGELOG.md b/packages/nextjs/CHANGELOG.md index c513bd7463e..29c98f359ef 100644 --- a/packages/nextjs/CHANGELOG.md +++ b/packages/nextjs/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [3.5.2-staging.0](https://github.com/clerkinc/javascript/compare/@clerk/nextjs@3.5.1...@clerk/nextjs@3.5.2-staging.0) (2022-05-05) + +**Note:** Version bump only for package @clerk/nextjs + ### [3.5.1](https://github.com/clerkinc/javascript/compare/@clerk/nextjs@3.5.1-staging.0...@clerk/nextjs@3.5.1) (2022-05-05) **Note:** Version bump only for package @clerk/nextjs diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index dcd5d8020d1..f368fd1ae6d 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@clerk/nextjs", - "version": "3.5.1", + "version": "3.5.2-staging.0", "license": "MIT", "description": "Clerk.dev SDK for NextJS", "keywords": [ @@ -32,7 +32,7 @@ "dev": "tsc -p tsconfig.build.json --watch" }, "dependencies": { - "@clerk/clerk-react": "^3.2.12", + "@clerk/clerk-react": "^3.2.13-staging.0", "@clerk/clerk-sdk-node": "^3.3.11", "@clerk/edge": "^1.3.8", "@clerk/types": "^2.9.0", diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index fc020ca4dff..fae8625f84c 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [3.2.13-staging.0](https://github.com/clerkinc/javascript/compare/@clerk/clerk-react@3.2.12...@clerk/clerk-react@3.2.13-staging.0) (2022-05-05) + +### Bug Fixes + +- **clerk-react:** Make getOrCreateInstance handle both SSR and CSR instantiation ([8f9481c](https://github.com/clerkinc/javascript/commit/8f9481cf088c63b3cd3192cb1396596a98b11980)) +- **clerk-react:** Make isomorphicClerk loading idempotent ([221919c](https://github.com/clerkinc/javascript/commit/221919ceab5ad1631073f8ba7564c869ebf7a890)) +- **clerk-react:** Pass initialState directly to ClerkContextProvider ([cb777d4](https://github.com/clerkinc/javascript/commit/cb777d4651710fda248036fdc5398e0dac7aa337)) + ### [3.2.12](https://github.com/clerkinc/javascript/compare/@clerk/clerk-react@3.2.12-staging.0...@clerk/clerk-react@3.2.12) (2022-05-05) **Note:** Version bump only for package @clerk/clerk-react diff --git a/packages/react/package.json b/packages/react/package.json index 23d0b9ef577..63747db1e0e 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@clerk/clerk-react", - "version": "3.2.12", + "version": "3.2.13-staging.0", "license": "MIT", "description": "Clerk.dev React library", "keywords": [ diff --git a/packages/react/src/info.ts b/packages/react/src/info.ts index 358fb5bbddb..7a3ec7960bf 100644 --- a/packages/react/src/info.ts +++ b/packages/react/src/info.ts @@ -1,3 +1,3 @@ /** DO NOT EDIT: This file is automatically generated by ../scripts/info.js */ -export const LIB_VERSION = '3.2.12'; +export const LIB_VERSION = '3.2.13-staging.0'; export const LIB_NAME = '@clerk/clerk-react'; diff --git a/packages/remix/CHANGELOG.md b/packages/remix/CHANGELOG.md index 4bf92980237..9b0582c7d95 100644 --- a/packages/remix/CHANGELOG.md +++ b/packages/remix/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.3.17-staging.0](https://github.com/clerkinc/javascript/compare/@clerk/remix@0.3.16...@clerk/remix@0.3.17-staging.0) (2022-05-05) + +**Note:** Version bump only for package @clerk/remix + ### [0.3.16](https://github.com/clerkinc/javascript/compare/@clerk/remix@0.3.16-staging.0...@clerk/remix@0.3.16) (2022-05-05) **Note:** Version bump only for package @clerk/remix diff --git a/packages/remix/package.json b/packages/remix/package.json index bc27a427567..8bf490418e5 100644 --- a/packages/remix/package.json +++ b/packages/remix/package.json @@ -1,6 +1,6 @@ { "name": "@clerk/remix", - "version": "0.3.16", + "version": "0.3.17-staging.0", "license": "MIT", "description": "Clerk.dev SDK for Remix", "keywords": [ @@ -32,7 +32,7 @@ "dev": "tsc -p tsconfig.build.json --watch" }, "dependencies": { - "@clerk/clerk-react": "^3.2.12", + "@clerk/clerk-react": "^3.2.13-staging.0", "@clerk/clerk-sdk-node": "^3.3.11", "@clerk/types": "^2.9.0", "cookie": "^0.5.0", From fa2f20ba6fec276bdb12100f60222519b4571a3f Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Fri, 6 May 2022 13:52:45 +0300 Subject: [PATCH 7/7] chore(release): Publish - @clerk/backend-core@1.6.0 - @clerk/clerk-js@3.10.1 - @clerk/edge@1.4.0 - @clerk/clerk-expo@0.9.19 - @clerk/nextjs@3.6.0 - @clerk/clerk-react@3.2.13 - @clerk/remix@0.4.0 - @clerk/clerk-sdk-node@3.4.0 - @clerk/shared@0.2.2 - @clerk/types@2.10.0 --- package-lock.json | 116 ++++++++++++----------------- packages/backend-core/CHANGELOG.md | 7 ++ packages/backend-core/package.json | 4 +- packages/clerk-js/CHANGELOG.md | 4 + packages/clerk-js/package.json | 6 +- packages/edge/CHANGELOG.md | 6 ++ packages/edge/package.json | 4 +- packages/edge/src/info.ts | 2 +- packages/expo/CHANGELOG.md | 4 + packages/expo/package.json | 8 +- packages/nextjs/CHANGELOG.md | 6 ++ packages/nextjs/package.json | 10 +-- packages/react/CHANGELOG.md | 8 ++ packages/react/package.json | 4 +- packages/react/src/info.ts | 2 +- packages/remix/CHANGELOG.md | 6 ++ packages/remix/package.json | 8 +- packages/sdk-node/CHANGELOG.md | 6 ++ packages/sdk-node/package.json | 6 +- packages/sdk-node/src/info.ts | 2 +- packages/shared/CHANGELOG.md | 4 + packages/shared/package.json | 4 +- packages/types/CHANGELOG.md | 6 ++ packages/types/package.json | 2 +- 24 files changed, 134 insertions(+), 101 deletions(-) diff --git a/package-lock.json b/package-lock.json index 14c0b6323be..2dff61903da 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34730,10 +34730,10 @@ }, "packages/backend-core": { "name": "@clerk/backend-core", - "version": "1.5.6", + "version": "1.6.0", "license": "MIT", "dependencies": { - "@clerk/types": "^2.9.0", + "@clerk/types": "^2.10.0", "camelcase-keys": "^7.0.1", "query-string": "^7.0.1", "snakecase-keys": "^5.1.2", @@ -34760,10 +34760,10 @@ }, "packages/clerk-js": { "name": "@clerk/clerk-js", - "version": "3.10.0", + "version": "3.10.1", "license": "MIT", "dependencies": { - "@clerk/types": "^2.9.0", + "@clerk/types": "^2.10.0", "@popperjs/core": "^2.4.4", "browser-tabs-lock": "^1.2.15", "classnames": "^2.3.1", @@ -34783,7 +34783,7 @@ "@babel/preset-env": "^7.12.1", "@babel/preset-react": "^7.12.5", "@babel/preset-typescript": "^7.12.1", - "@clerk/shared": "^0.2.1", + "@clerk/shared": "^0.2.2", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.2", "@svgr/webpack": "^6.2.1", "@testing-library/dom": "^7.28.1", @@ -34866,10 +34866,10 @@ }, "packages/edge": { "name": "@clerk/edge", - "version": "1.3.8", + "version": "1.4.0", "license": "MIT", "dependencies": { - "@clerk/backend-core": "^1.5.6", + "@clerk/backend-core": "^1.6.0", "@peculiar/webcrypto": "^1.2.3", "next": "^12.0.7" }, @@ -34892,15 +34892,15 @@ }, "packages/expo": { "name": "@clerk/clerk-expo", - "version": "0.9.19-staging.0", + "version": "0.9.19", "license": "MIT", "dependencies": { - "@clerk/clerk-js": "^3.10.0", - "@clerk/clerk-react": "^3.2.13-staging.0", + "@clerk/clerk-js": "^3.10.1", + "@clerk/clerk-react": "^3.2.13", "base-64": "^1.0.0" }, "devDependencies": { - "@clerk/types": "^2.9.0", + "@clerk/types": "^2.10.0", "@types/jest": "^27.4.0", "@types/node": "^16.11.9", "@types/react": "^17.0.39", @@ -34958,21 +34958,6 @@ "tslib": "^2.3.1" } }, - "packages/gatsby-plugin-clerk/node_modules/@clerk/clerk-react": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/@clerk/clerk-react/-/clerk-react-3.2.11.tgz", - "integrity": "sha512-rtTUagchK0029yz7hU5GVNcuihX5N3Wo4KIVg7W6DtS+zJC1Jr6CePGf7EARCLJAZsrkL8SaGJ+uisA1pfsPGw==", - "dependencies": { - "@clerk/types": "^2.8.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "react": ">=16" - } - }, "packages/gatsby-plugin-clerk/node_modules/@clerk/clerk-sdk-node": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/@clerk/clerk-sdk-node/-/clerk-sdk-node-3.3.5.tgz", @@ -35060,13 +35045,13 @@ }, "packages/nextjs": { "name": "@clerk/nextjs", - "version": "3.5.2-staging.0", + "version": "3.6.0", "license": "MIT", "dependencies": { - "@clerk/clerk-react": "^3.2.13-staging.0", - "@clerk/clerk-sdk-node": "^3.3.11", - "@clerk/edge": "^1.3.8", - "@clerk/types": "^2.9.0", + "@clerk/clerk-react": "^3.2.13", + "@clerk/clerk-sdk-node": "^3.4.0", + "@clerk/edge": "^1.4.0", + "@clerk/types": "^2.10.0", "tslib": "^2.3.1" }, "devDependencies": { @@ -35096,10 +35081,10 @@ }, "packages/react": { "name": "@clerk/clerk-react", - "version": "3.2.13-staging.0", + "version": "3.2.13", "license": "MIT", "dependencies": { - "@clerk/types": "^2.9.0", + "@clerk/types": "^2.10.0", "tslib": "^2.3.1" }, "devDependencies": { @@ -35136,12 +35121,12 @@ }, "packages/remix": { "name": "@clerk/remix", - "version": "0.3.17-staging.0", + "version": "0.4.0", "license": "MIT", "dependencies": { - "@clerk/clerk-react": "^3.2.13-staging.0", - "@clerk/clerk-sdk-node": "^3.3.11", - "@clerk/types": "^2.9.0", + "@clerk/clerk-react": "^3.2.13", + "@clerk/clerk-sdk-node": "^3.4.0", + "@clerk/types": "^2.10.0", "cookie": "^0.5.0", "tslib": "^2.3.1" }, @@ -35188,11 +35173,11 @@ }, "packages/sdk-node": { "name": "@clerk/clerk-sdk-node", - "version": "3.3.11", + "version": "3.4.0", "license": "MIT", "dependencies": { - "@clerk/backend-core": "^1.5.6", - "@clerk/types": "^2.9.0", + "@clerk/backend-core": "^1.6.0", + "@clerk/types": "^2.10.0", "@peculiar/webcrypto": "^1.2.3", "camelcase-keys": "^6.2.2", "cookies": "^0.8.0", @@ -35265,12 +35250,12 @@ }, "packages/shared": { "name": "@clerk/shared", - "version": "0.2.1", + "version": "0.2.2", "devDependencies": { "@babel/core": "^7.13.14", "@babel/preset-env": "^7.13.12", "@babel/preset-react": "^7.13.13", - "@clerk/types": "^2.9.0", + "@clerk/types": "^2.10.0", "@popperjs/core": "^2.5.4", "@sentry/browser": "^6.3.0", "@svgr/webpack": "^6.2.1", @@ -35324,7 +35309,7 @@ }, "packages/types": { "name": "@clerk/types", - "version": "2.9.0", + "version": "2.10.0", "license": "MIT", "devDependencies": { "@types/jest": "^27.4.0", @@ -36566,7 +36551,7 @@ "@clerk/backend-core": { "version": "file:packages/backend-core", "requires": { - "@clerk/types": "^2.9.0", + "@clerk/types": "^2.10.0", "@peculiar/webcrypto": "^1.3.2", "@types/jest": "^27.4.0", "@types/node": "^16.11.12", @@ -36594,9 +36579,9 @@ "@clerk/clerk-expo": { "version": "file:packages/expo", "requires": { - "@clerk/clerk-js": "^3.10.0", - "@clerk/clerk-react": "^3.2.13-staging.0", - "@clerk/types": "^2.9.0", + "@clerk/clerk-js": "^3.10.1", + "@clerk/clerk-react": "^3.2.13", + "@clerk/types": "^2.10.0", "@types/jest": "^27.4.0", "@types/node": "^16.11.9", "@types/react": "^17.0.39", @@ -36627,8 +36612,8 @@ "@babel/preset-env": "^7.12.1", "@babel/preset-react": "^7.12.5", "@babel/preset-typescript": "^7.12.1", - "@clerk/shared": "^0.2.1", - "@clerk/types": "^2.9.0", + "@clerk/shared": "^0.2.2", + "@clerk/types": "^2.10.0", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.2", "@popperjs/core": "^2.4.4", "@svgr/webpack": "^6.2.1", @@ -36712,7 +36697,7 @@ "@clerk/clerk-react": { "version": "file:packages/react", "requires": { - "@clerk/types": "^2.9.0", + "@clerk/types": "^2.10.0", "@testing-library/dom": "^7.28.1", "@testing-library/jest-dom": "^5.11.6", "@testing-library/react": "^11.2.1", @@ -36744,8 +36729,8 @@ "@clerk/clerk-sdk-node": { "version": "file:packages/sdk-node", "requires": { - "@clerk/backend-core": "^1.5.6", - "@clerk/types": "^2.9.0", + "@clerk/backend-core": "^1.6.0", + "@clerk/types": "^2.10.0", "@peculiar/webcrypto": "^1.2.3", "@types/cookies": "^0.7.7", "@types/express": "^4.17.11", @@ -36801,7 +36786,7 @@ "@clerk/edge": { "version": "file:packages/edge", "requires": { - "@clerk/backend-core": "^1.5.6", + "@clerk/backend-core": "^1.6.0", "@peculiar/webcrypto": "^1.2.3", "@types/jest": "^27.4.0", "@types/node": "^16.11.12", @@ -36822,10 +36807,10 @@ "@clerk/nextjs": { "version": "file:packages/nextjs", "requires": { - "@clerk/clerk-react": "^3.2.13-staging.0", - "@clerk/clerk-sdk-node": "^3.3.11", - "@clerk/edge": "^1.3.8", - "@clerk/types": "^2.9.0", + "@clerk/clerk-react": "^3.2.13", + "@clerk/clerk-sdk-node": "^3.4.0", + "@clerk/edge": "^1.4.0", + "@clerk/types": "^2.10.0", "@types/jest": "^27.4.0", "@types/node": "^16.11.9", "@types/react": "^17.0.39", @@ -36850,9 +36835,9 @@ "@clerk/remix": { "version": "file:packages/remix", "requires": { - "@clerk/clerk-react": "^3.2.13-staging.0", - "@clerk/clerk-sdk-node": "^3.3.11", - "@clerk/types": "^2.9.0", + "@clerk/clerk-react": "^3.2.13", + "@clerk/clerk-sdk-node": "^3.4.0", + "@clerk/types": "^2.10.0", "@types/cookie": "^0.5.0", "@types/jest": "^27.4.0", "@types/node": "^16.11.9", @@ -36892,7 +36877,7 @@ "@babel/core": "^7.13.14", "@babel/preset-env": "^7.13.12", "@babel/preset-react": "^7.13.13", - "@clerk/types": "^2.9.0", + "@clerk/types": "^2.10.0", "@popperjs/core": "^2.5.4", "@sentry/browser": "^6.3.0", "@svgr/webpack": "^6.2.1", @@ -49681,15 +49666,6 @@ "tslib": "^2.3.1" } }, - "@clerk/clerk-react": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/@clerk/clerk-react/-/clerk-react-3.2.11.tgz", - "integrity": "sha512-rtTUagchK0029yz7hU5GVNcuihX5N3Wo4KIVg7W6DtS+zJC1Jr6CePGf7EARCLJAZsrkL8SaGJ+uisA1pfsPGw==", - "requires": { - "@clerk/types": "^2.8.0", - "tslib": "^2.3.1" - } - }, "@clerk/clerk-sdk-node": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/@clerk/clerk-sdk-node/-/clerk-sdk-node-3.3.5.tgz", diff --git a/packages/backend-core/CHANGELOG.md b/packages/backend-core/CHANGELOG.md index ae7fa7de687..b9999d00bbf 100644 --- a/packages/backend-core/CHANGELOG.md +++ b/packages/backend-core/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.6.0](https://github.com/clerkinc/javascript/compare/@clerk/backend-core@1.5.6...@clerk/backend-core@1.6.0) (2022-05-06) + +### Features + +- **backend-core:** Update organization metadata ([ad496f9](https://github.com/clerkinc/javascript/commit/ad496f95b27dd6286f94399d485bbcd774d90a2d)) +- **nextjs,clerk-sdk-node,remix:** Add claims attribute to req.auth ([c695529](https://github.com/clerkinc/javascript/commit/c695529089f55baef72b86e3b73b8cd9f4f58e6d)) + ### [1.5.6](https://github.com/clerkinc/javascript/compare/@clerk/backend-core@1.5.6-staging.0...@clerk/backend-core@1.5.6) (2022-05-05) **Note:** Version bump only for package @clerk/backend-core diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index b81254b5b8a..123cd84e96d 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -1,6 +1,6 @@ { "name": "@clerk/backend-core", - "version": "1.5.6", + "version": "1.6.0", "license": "MIT", "description": "Clerk Backend API core resources and authentication utilities for JavaScript environments.", "scripts": { @@ -12,7 +12,7 @@ "main": "dist/cjs/index.js", "module": "dist/mjs/index.js", "dependencies": { - "@clerk/types": "^2.9.0", + "@clerk/types": "^2.10.0", "camelcase-keys": "^7.0.1", "query-string": "^7.0.1", "snakecase-keys": "^5.1.2", diff --git a/packages/clerk-js/CHANGELOG.md b/packages/clerk-js/CHANGELOG.md index f1f557b9d50..a96b26140ff 100644 --- a/packages/clerk-js/CHANGELOG.md +++ b/packages/clerk-js/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [3.10.1](https://github.com/clerkinc/javascript/compare/@clerk/clerk-js@3.10.0...@clerk/clerk-js@3.10.1) (2022-05-06) + +**Note:** Version bump only for package @clerk/clerk-js + ## [3.10.0](https://github.com/clerkinc/javascript/compare/@clerk/clerk-js@3.10.0-staging.0...@clerk/clerk-js@3.10.0) (2022-05-05) **Note:** Version bump only for package @clerk/clerk-js diff --git a/packages/clerk-js/package.json b/packages/clerk-js/package.json index 085db9a59e2..05a7b57e4a0 100644 --- a/packages/clerk-js/package.json +++ b/packages/clerk-js/package.json @@ -1,6 +1,6 @@ { "name": "@clerk/clerk-js", - "version": "3.10.0", + "version": "3.10.1", "license": "MIT", "description": "Clerk.dev JS library", "keywords": [ @@ -38,7 +38,7 @@ "test:coverage": "jest --collectCoverage" }, "dependencies": { - "@clerk/types": "^2.9.0", + "@clerk/types": "^2.10.0", "@popperjs/core": "^2.4.4", "browser-tabs-lock": "^1.2.15", "classnames": "^2.3.1", @@ -58,7 +58,7 @@ "@babel/preset-env": "^7.12.1", "@babel/preset-react": "^7.12.5", "@babel/preset-typescript": "^7.12.1", - "@clerk/shared": "^0.2.1", + "@clerk/shared": "^0.2.2", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.2", "@svgr/webpack": "^6.2.1", "@testing-library/dom": "^7.28.1", diff --git a/packages/edge/CHANGELOG.md b/packages/edge/CHANGELOG.md index f63bf4d59ba..de98f787810 100644 --- a/packages/edge/CHANGELOG.md +++ b/packages/edge/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.4.0](https://github.com/clerkinc/javascript/compare/@clerk/edge@1.3.8...@clerk/edge@1.4.0) (2022-05-06) + +### Features + +- **nextjs,clerk-sdk-node,remix:** Add claims attribute to req.auth ([c695529](https://github.com/clerkinc/javascript/commit/c695529089f55baef72b86e3b73b8cd9f4f58e6d)) + ### [1.3.8](https://github.com/clerkinc/javascript/compare/@clerk/edge@1.3.8-staging.0...@clerk/edge@1.3.8) (2022-05-05) **Note:** Version bump only for package @clerk/edge diff --git a/packages/edge/package.json b/packages/edge/package.json index 326db4c0845..ab999fb8605 100644 --- a/packages/edge/package.json +++ b/packages/edge/package.json @@ -1,6 +1,6 @@ { "name": "@clerk/edge", - "version": "1.3.8", + "version": "1.4.0", "license": "MIT", "description": "Clerk SDK for serverless and edge environments", "keywords": [ @@ -36,7 +36,7 @@ "build": "node ./scripts/info.cjs && tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && ./moduleTypeFix" }, "dependencies": { - "@clerk/backend-core": "^1.5.6", + "@clerk/backend-core": "^1.6.0", "@peculiar/webcrypto": "^1.2.3", "next": "^12.0.7" }, diff --git a/packages/edge/src/info.ts b/packages/edge/src/info.ts index fd2bd57d246..3e21203df16 100644 --- a/packages/edge/src/info.ts +++ b/packages/edge/src/info.ts @@ -1,3 +1,3 @@ /** DO NOT EDIT: This file is automatically generated by ../scripts/info.js */ -export const LIB_VERSION = '1.3.8'; +export const LIB_VERSION = '1.4.0'; export const LIB_NAME = '@clerk/edge'; diff --git a/packages/expo/CHANGELOG.md b/packages/expo/CHANGELOG.md index e9778daf699..36e62dec08b 100644 --- a/packages/expo/CHANGELOG.md +++ b/packages/expo/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.9.19](https://github.com/clerkinc/javascript/compare/@clerk/clerk-expo@0.9.18...@clerk/clerk-expo@0.9.19) (2022-05-06) + +**Note:** Version bump only for package @clerk/clerk-expo + ### [0.9.19-staging.0](https://github.com/clerkinc/javascript/compare/@clerk/clerk-expo@0.9.18...@clerk/clerk-expo@0.9.19-staging.0) (2022-05-05) **Note:** Version bump only for package @clerk/clerk-expo diff --git a/packages/expo/package.json b/packages/expo/package.json index eb51388fd5b..23c00815ef5 100644 --- a/packages/expo/package.json +++ b/packages/expo/package.json @@ -1,6 +1,6 @@ { "name": "@clerk/clerk-expo", - "version": "0.9.19-staging.0", + "version": "0.9.19", "license": "MIT", "description": "Clerk.dev React Native/Expo library", "keywords": [ @@ -26,12 +26,12 @@ "dev": "tsc -p tsconfig.build.json --watch" }, "dependencies": { - "@clerk/clerk-js": "^3.10.0", - "@clerk/clerk-react": "^3.2.13-staging.0", + "@clerk/clerk-js": "^3.10.1", + "@clerk/clerk-react": "^3.2.13", "base-64": "^1.0.0" }, "devDependencies": { - "@clerk/types": "^2.9.0", + "@clerk/types": "^2.10.0", "@types/jest": "^27.4.0", "@types/node": "^16.11.9", "@types/react": "^17.0.39", diff --git a/packages/nextjs/CHANGELOG.md b/packages/nextjs/CHANGELOG.md index 29c98f359ef..1b3aae57205 100644 --- a/packages/nextjs/CHANGELOG.md +++ b/packages/nextjs/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [3.6.0](https://github.com/clerkinc/javascript/compare/@clerk/nextjs@3.5.1...@clerk/nextjs@3.6.0) (2022-05-06) + +### Features + +- **nextjs,clerk-sdk-node,remix:** Add claims attribute to req.auth ([c695529](https://github.com/clerkinc/javascript/commit/c695529089f55baef72b86e3b73b8cd9f4f58e6d)) + ### [3.5.2-staging.0](https://github.com/clerkinc/javascript/compare/@clerk/nextjs@3.5.1...@clerk/nextjs@3.5.2-staging.0) (2022-05-05) **Note:** Version bump only for package @clerk/nextjs diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index f368fd1ae6d..0a06b8acfcd 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@clerk/nextjs", - "version": "3.5.2-staging.0", + "version": "3.6.0", "license": "MIT", "description": "Clerk.dev SDK for NextJS", "keywords": [ @@ -32,10 +32,10 @@ "dev": "tsc -p tsconfig.build.json --watch" }, "dependencies": { - "@clerk/clerk-react": "^3.2.13-staging.0", - "@clerk/clerk-sdk-node": "^3.3.11", - "@clerk/edge": "^1.3.8", - "@clerk/types": "^2.9.0", + "@clerk/clerk-react": "^3.2.13", + "@clerk/clerk-sdk-node": "^3.4.0", + "@clerk/edge": "^1.4.0", + "@clerk/types": "^2.10.0", "tslib": "^2.3.1" }, "devDependencies": { diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index fae8625f84c..3fe2a9ce275 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [3.2.13](https://github.com/clerkinc/javascript/compare/@clerk/clerk-react@3.2.12...@clerk/clerk-react@3.2.13) (2022-05-06) + +### Bug Fixes + +- **clerk-react:** Make getOrCreateInstance handle both SSR and CSR instantiation ([d22b808](https://github.com/clerkinc/javascript/commit/d22b808cf9eee2570be83f247fd25543a0202fd6)) +- **clerk-react:** Make isomorphicClerk loading idempotent ([91b6217](https://github.com/clerkinc/javascript/commit/91b62175cadd82b38747cc6d7a0216f42c89b5fe)) +- **clerk-react:** Pass initialState directly to ClerkContextProvider ([9e55b7c](https://github.com/clerkinc/javascript/commit/9e55b7c2cafdcbcf6d8c210e668a22e07580cdb6)) + ### [3.2.13-staging.0](https://github.com/clerkinc/javascript/compare/@clerk/clerk-react@3.2.12...@clerk/clerk-react@3.2.13-staging.0) (2022-05-05) ### Bug Fixes diff --git a/packages/react/package.json b/packages/react/package.json index 63747db1e0e..362b6b77381 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@clerk/clerk-react", - "version": "3.2.13-staging.0", + "version": "3.2.13", "license": "MIT", "description": "Clerk.dev React library", "keywords": [ @@ -28,7 +28,7 @@ "test": "jest" }, "dependencies": { - "@clerk/types": "^2.9.0", + "@clerk/types": "^2.10.0", "tslib": "^2.3.1" }, "devDependencies": { diff --git a/packages/react/src/info.ts b/packages/react/src/info.ts index 7a3ec7960bf..d99b6d377f6 100644 --- a/packages/react/src/info.ts +++ b/packages/react/src/info.ts @@ -1,3 +1,3 @@ /** DO NOT EDIT: This file is automatically generated by ../scripts/info.js */ -export const LIB_VERSION = '3.2.13-staging.0'; +export const LIB_VERSION = '3.2.13'; export const LIB_NAME = '@clerk/clerk-react'; diff --git a/packages/remix/CHANGELOG.md b/packages/remix/CHANGELOG.md index 9b0582c7d95..78fd1e0cfe2 100644 --- a/packages/remix/CHANGELOG.md +++ b/packages/remix/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.4.0](https://github.com/clerkinc/javascript/compare/@clerk/remix@0.3.16...@clerk/remix@0.4.0) (2022-05-06) + +### Features + +- **nextjs,clerk-sdk-node,remix:** Add claims attribute to req.auth ([c695529](https://github.com/clerkinc/javascript/commit/c695529089f55baef72b86e3b73b8cd9f4f58e6d)) + ### [0.3.17-staging.0](https://github.com/clerkinc/javascript/compare/@clerk/remix@0.3.16...@clerk/remix@0.3.17-staging.0) (2022-05-05) **Note:** Version bump only for package @clerk/remix diff --git a/packages/remix/package.json b/packages/remix/package.json index 8bf490418e5..009d3a1b88b 100644 --- a/packages/remix/package.json +++ b/packages/remix/package.json @@ -1,6 +1,6 @@ { "name": "@clerk/remix", - "version": "0.3.17-staging.0", + "version": "0.4.0", "license": "MIT", "description": "Clerk.dev SDK for Remix", "keywords": [ @@ -32,9 +32,9 @@ "dev": "tsc -p tsconfig.build.json --watch" }, "dependencies": { - "@clerk/clerk-react": "^3.2.13-staging.0", - "@clerk/clerk-sdk-node": "^3.3.11", - "@clerk/types": "^2.9.0", + "@clerk/clerk-react": "^3.2.13", + "@clerk/clerk-sdk-node": "^3.4.0", + "@clerk/types": "^2.10.0", "cookie": "^0.5.0", "tslib": "^2.3.1" }, diff --git a/packages/sdk-node/CHANGELOG.md b/packages/sdk-node/CHANGELOG.md index c233f8c0ebd..d0448df1e03 100644 --- a/packages/sdk-node/CHANGELOG.md +++ b/packages/sdk-node/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [3.4.0](https://github.com/clerkinc/javascript/compare/@clerk/clerk-sdk-node@3.3.11...@clerk/clerk-sdk-node@3.4.0) (2022-05-06) + +### Features + +- **nextjs,clerk-sdk-node,remix:** Add claims attribute to req.auth ([c695529](https://github.com/clerkinc/javascript/commit/c695529089f55baef72b86e3b73b8cd9f4f58e6d)) + ### [3.3.11](https://github.com/clerkinc/javascript/compare/@clerk/clerk-sdk-node@3.3.11-staging.0...@clerk/clerk-sdk-node@3.3.11) (2022-05-05) **Note:** Version bump only for package @clerk/clerk-sdk-node diff --git a/packages/sdk-node/package.json b/packages/sdk-node/package.json index e20f5baa2b9..eac0ced123b 100644 --- a/packages/sdk-node/package.json +++ b/packages/sdk-node/package.json @@ -1,5 +1,5 @@ { - "version": "3.3.11", + "version": "3.4.0", "license": "MIT", "main": "dist/index.js", "module": "esm/index.js", @@ -47,8 +47,8 @@ "typescript": "^4.6.2" }, "dependencies": { - "@clerk/backend-core": "^1.5.6", - "@clerk/types": "^2.9.0", + "@clerk/backend-core": "^1.6.0", + "@clerk/types": "^2.10.0", "@peculiar/webcrypto": "^1.2.3", "camelcase-keys": "^6.2.2", "cookies": "^0.8.0", diff --git a/packages/sdk-node/src/info.ts b/packages/sdk-node/src/info.ts index 2e61f9e0ee2..543517c67d8 100644 --- a/packages/sdk-node/src/info.ts +++ b/packages/sdk-node/src/info.ts @@ -1,3 +1,3 @@ /** DO NOT EDIT: This file is automatically generated by ../scripts/info.js */ -export const LIB_VERSION = '3.3.11'; +export const LIB_VERSION = '3.4.0'; export const LIB_NAME = '@clerk/clerk-sdk-node'; diff --git a/packages/shared/CHANGELOG.md b/packages/shared/CHANGELOG.md index e3ea5ac93bb..6a55371beae 100644 --- a/packages/shared/CHANGELOG.md +++ b/packages/shared/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.2.2](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.2.1...@clerk/shared@0.2.2) (2022-05-06) + +**Note:** Version bump only for package @clerk/shared + ### [0.2.1](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.2.1-staging.0...@clerk/shared@0.2.1) (2022-05-05) **Note:** Version bump only for package @clerk/shared diff --git a/packages/shared/package.json b/packages/shared/package.json index 660daa0df08..7af97a5285a 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -1,6 +1,6 @@ { "name": "@clerk/shared", - "version": "0.2.1", + "version": "0.2.2", "private": true, "main": "index.js", "module": "index.js", @@ -26,7 +26,7 @@ "@babel/core": "^7.13.14", "@babel/preset-env": "^7.13.12", "@babel/preset-react": "^7.13.13", - "@clerk/types": "^2.9.0", + "@clerk/types": "^2.10.0", "@popperjs/core": "^2.5.4", "@sentry/browser": "^6.3.0", "@svgr/webpack": "^6.2.1", diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index 97624e8de2e..990044dcd45 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.10.0](https://github.com/clerkinc/javascript/compare/@clerk/types@2.9.0...@clerk/types@2.10.0) (2022-05-06) + +### Features + +- **nextjs,clerk-sdk-node,remix:** Add claims attribute to req.auth ([c695529](https://github.com/clerkinc/javascript/commit/c695529089f55baef72b86e3b73b8cd9f4f58e6d)) + ## [2.9.0](https://github.com/clerkinc/javascript/compare/@clerk/types@2.9.0-staging.0...@clerk/types@2.9.0) (2022-05-05) **Note:** Version bump only for package @clerk/types diff --git a/packages/types/package.json b/packages/types/package.json index 54e6d3cbe24..34c9dbc0554 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@clerk/types", - "version": "2.9.0", + "version": "2.10.0", "license": "MIT", "description": "Typings for Clerk libraries.", "keywords": [