From 3b4771370975d0ff729eadf14a2e8aa3c4f31345 Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Mon, 25 Sep 2023 21:03:13 +0300 Subject: [PATCH 1/8] chore(clerk-js): Warn about Clerk.getOrganizationMemberships() deprecation --- packages/clerk-js/src/core/clerk.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/clerk-js/src/core/clerk.ts b/packages/clerk-js/src/core/clerk.ts index 5e2c652b588..dc63bebdb43 100644 --- a/packages/clerk-js/src/core/clerk.ts +++ b/packages/clerk-js/src/core/clerk.ts @@ -1,6 +1,7 @@ import type { LocalStorageBroadcastChannel } from '@clerk/shared'; import { addClerkPrefix, + deprecated, handleValueOrFn, inClientSide, is4xxError, @@ -1080,6 +1081,7 @@ export default class Clerk implements ClerkInterface { * @deprecated use User.getOrganizationMemberships */ public getOrganizationMemberships = async (): Promise => { + deprecated('getOrganizationMemberships', 'Use User.getOrganizationMemberships'); return await OrganizationMembership.retrieve(); }; From 435583cba96dd8ced672e978de4fe8e645cb86c8 Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Mon, 25 Sep 2023 21:08:17 +0300 Subject: [PATCH 2/8] chore(clerk-js): Warn about Organization.create(a: string) deprecation --- packages/clerk-js/src/core/resources/Organization.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/clerk-js/src/core/resources/Organization.ts b/packages/clerk-js/src/core/resources/Organization.ts index c60077d46f9..f19607406ae 100644 --- a/packages/clerk-js/src/core/resources/Organization.ts +++ b/packages/clerk-js/src/core/resources/Organization.ts @@ -67,6 +67,11 @@ export class Organization extends BaseResource implements OrganizationResource { if (typeof paramsOrName === 'string') { // DX: Deprecated v3.5.2 name = paramsOrName; + deprecated( + 'create', + 'Calling `create` with a string is deprecated. Use an object of type CreateOrganizationParams instead.', + 'organization:create', + ); } else { name = paramsOrName.name; slug = paramsOrName.slug; From c866c0e9dd0325c5109e6cb0f0f5cd21e9fff501 Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Mon, 25 Sep 2023 21:32:49 +0300 Subject: [PATCH 3/8] chore(clerk-js): Warn about Organization.retrieve limit & offset deprecation --- .../core/resources/OrganizationMembership.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/packages/clerk-js/src/core/resources/OrganizationMembership.ts b/packages/clerk-js/src/core/resources/OrganizationMembership.ts index 991c7f95afa..c6225543d6f 100644 --- a/packages/clerk-js/src/core/resources/OrganizationMembership.ts +++ b/packages/clerk-js/src/core/resources/OrganizationMembership.ts @@ -1,3 +1,4 @@ +import { deprecated } from '@clerk/shared'; import type { ClerkPaginatedResponse, ClerkResourceReloadParams, @@ -29,6 +30,22 @@ export class OrganizationMembership extends BaseResource implements Organization static retrieve: GetOrganizationMembershipsClass = async retrieveMembershipsParams => { const isDeprecatedParams = typeof retrieveMembershipsParams === 'undefined' || !retrieveMembershipsParams?.paginated; + + if (!(retrieveMembershipsParams as RetrieveMembershipsParams)?.limit) { + deprecated( + 'limit', + 'Use `pageSize` instead in OrganizationMembership.retrieve.', + 'organization-membership:limit', + ); + } + if (!(retrieveMembershipsParams as RetrieveMembershipsParams)?.offset) { + deprecated( + 'offset', + 'Use `initialPage` instead in OrganizationMembership.retrieve.', + 'organization-membership:offset', + ); + } + return await BaseResource._fetch({ path: '/me/organization_memberships', method: 'GET', From a1a0fc36ca9991f246f38056ab2cd4042408de8f Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Mon, 25 Sep 2023 21:34:01 +0300 Subject: [PATCH 4/8] chore(clerk-js): Warn about svgUrl deprecation --- packages/clerk-js/src/ui/common/constants.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/clerk-js/src/ui/common/constants.ts b/packages/clerk-js/src/ui/common/constants.ts index 5e5b693a6ce..6ed53f9888e 100644 --- a/packages/clerk-js/src/ui/common/constants.ts +++ b/packages/clerk-js/src/ui/common/constants.ts @@ -1,3 +1,4 @@ +import { deprecated } from '@clerk/shared'; import type { Attribute, Web3Provider } from '@clerk/types'; import type { LocalizationKey } from '../localization/localizationKeys'; @@ -102,6 +103,7 @@ export function getWeb3ProviderData(name: Web3Provider): Web3ProviderData | unde * @deprecated In favor of iconImageUrl */ export function svgUrl(id: string): string { + deprecated('svgUrl', 'Use `iconImageUrl` instead'); return `https://images.clerk.com/static/${id}.svg`; } From 04c7e257c651f9dda65f4328632b2dcf70ef9ca1 Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Mon, 25 Sep 2023 22:02:18 +0300 Subject: [PATCH 5/8] chore(clerk-js): Warn about avatarUrl/logoUrl/faviconUrl/profileImageUrl deprecations --- .../clerk-js/src/core/resources/DisplayConfig.ts | 14 ++++++++++---- .../clerk-js/src/core/resources/ExternalAccount.ts | 4 +++- .../clerk-js/src/core/resources/Organization.ts | 4 +++- .../src/core/resources/OrganizationMembership.ts | 3 +++ .../resources/OrganizationMembershipRequest.ts | 3 +++ packages/clerk-js/src/core/resources/User.ts | 3 +++ 6 files changed, 25 insertions(+), 6 deletions(-) diff --git a/packages/clerk-js/src/core/resources/DisplayConfig.ts b/packages/clerk-js/src/core/resources/DisplayConfig.ts index 40fad446923..ee83cca78a7 100644 --- a/packages/clerk-js/src/core/resources/DisplayConfig.ts +++ b/packages/clerk-js/src/core/resources/DisplayConfig.ts @@ -1,3 +1,4 @@ +import { deprecatedProperty } from '@clerk/shared'; import type { DisplayConfigJSON, DisplayConfigResource, DisplayThemeJSON, PreferredSignInStrategy } from '@clerk/types'; import { BaseResource } from './internal'; @@ -18,9 +19,13 @@ export class DisplayConfig extends BaseResource implements DisplayConfigResource instanceEnvironmentType!: string; faviconImageUrl!: string; logoImageUrl!: string; - // TODO: Remove + /** + * @deprecated Use `logoImageUrl` instead. + */ logoUrl!: string; - // TODO: Remove + /** + * @deprecated Use `faviconImageUrl` instead. + */ faviconUrl!: string; preferredSignInStrategy!: PreferredSignInStrategy; signInUrl!: string; @@ -52,9 +57,7 @@ export class DisplayConfig extends BaseResource implements DisplayConfigResource this.preferredSignInStrategy = data.preferred_sign_in_strategy; this.logoImageUrl = data.logo_image_url; this.faviconImageUrl = data.favicon_image_url; - // TODO: Remove this.logoUrl = data.logo_url; - // TODO: Remove this.faviconUrl = data.favicon_url; this.homeUrl = data.home_url; this.signInUrl = data.sign_in_url; @@ -77,3 +80,6 @@ export class DisplayConfig extends BaseResource implements DisplayConfigResource return this; } } + +deprecatedProperty(DisplayConfig, 'logoUrl', 'Use `logoImageUrl` instead.'); +deprecatedProperty(DisplayConfig, 'faviconUrl', 'Use `faviconImageUrl` instead.'); diff --git a/packages/clerk-js/src/core/resources/ExternalAccount.ts b/packages/clerk-js/src/core/resources/ExternalAccount.ts index c03cda08265..fe17d38c820 100644 --- a/packages/clerk-js/src/core/resources/ExternalAccount.ts +++ b/packages/clerk-js/src/core/resources/ExternalAccount.ts @@ -1,4 +1,4 @@ -import { titleize } from '@clerk/shared'; +import { deprecatedProperty, titleize } from '@clerk/shared'; import type { ExternalAccountJSON, ExternalAccountResource, @@ -84,3 +84,5 @@ export class ExternalAccount extends BaseResource implements ExternalAccountReso return this.username || this.emailAddress || this.label; } } + +deprecatedProperty(ExternalAccount, 'avatarUrl', 'Use `imageUrl` instead.'); diff --git a/packages/clerk-js/src/core/resources/Organization.ts b/packages/clerk-js/src/core/resources/Organization.ts index f19607406ae..25c224aef5b 100644 --- a/packages/clerk-js/src/core/resources/Organization.ts +++ b/packages/clerk-js/src/core/resources/Organization.ts @@ -1,4 +1,4 @@ -import { deprecated } from '@clerk/shared'; +import { deprecated, deprecatedProperty } from '@clerk/shared'; import type { AddMemberParams, ClerkPaginatedResponse, @@ -343,3 +343,5 @@ export class Organization extends BaseResource implements OrganizationResource { return this.fromJSON(currentOrganization?.organization as OrganizationJSON); } } + +deprecatedProperty(Organization, 'logoUrl', 'Use `imageUrl` instead.'); diff --git a/packages/clerk-js/src/core/resources/OrganizationMembership.ts b/packages/clerk-js/src/core/resources/OrganizationMembership.ts index c6225543d6f..f8c72c27034 100644 --- a/packages/clerk-js/src/core/resources/OrganizationMembership.ts +++ b/packages/clerk-js/src/core/resources/OrganizationMembership.ts @@ -138,6 +138,9 @@ export class OrganizationMembership extends BaseResource implements Organization } } +// TODO(@dimkl): deprecate nested property +// deprecatedProperty(OrganizationMembership, 'publicUserData.profileImageUrl', 'Use `imageUrl` instead.'); + export type UpdateOrganizationMembershipParams = { role: MembershipRole; }; diff --git a/packages/clerk-js/src/core/resources/OrganizationMembershipRequest.ts b/packages/clerk-js/src/core/resources/OrganizationMembershipRequest.ts index 071315c426b..37e46b9ea26 100644 --- a/packages/clerk-js/src/core/resources/OrganizationMembershipRequest.ts +++ b/packages/clerk-js/src/core/resources/OrganizationMembershipRequest.ts @@ -51,3 +51,6 @@ export class OrganizationMembershipRequest extends BaseResource implements Organ return this; } } + +// TODO(@dimkl): deprecate nested property +// deprecatedProperty(OrganizationMembershipRequest, 'publicUserData.profileImageUrl', 'Use `imageUrl` instead.'); diff --git a/packages/clerk-js/src/core/resources/User.ts b/packages/clerk-js/src/core/resources/User.ts index fd73b78d550..eab0bdd37c5 100644 --- a/packages/clerk-js/src/core/resources/User.ts +++ b/packages/clerk-js/src/core/resources/User.ts @@ -1,3 +1,4 @@ +import { deprecatedProperty } from '@clerk/shared'; import type { BackupCodeJSON, BackupCodeResource, @@ -347,3 +348,5 @@ export class User extends BaseResource implements UserResource { return this; } } + +deprecatedProperty(User, 'profileImageUrl', 'Use `imageUrl` instead.'); From ede23a2ff659e79d49852a3d42729c07c3335024 Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Mon, 25 Sep 2023 22:05:44 +0300 Subject: [PATCH 6/8] chore(clerk-js): Add changeset for clerk-js deprecation warnings --- .changeset/four-chairs-lay.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .changeset/four-chairs-lay.md diff --git a/.changeset/four-chairs-lay.md b/.changeset/four-chairs-lay.md new file mode 100644 index 00000000000..d9bb7449d97 --- /dev/null +++ b/.changeset/four-chairs-lay.md @@ -0,0 +1,10 @@ +--- +'@clerk/clerk-js': patch +--- + +Apply deprecation warnings clerk-js package for: +- Organization.create() using string parameter +- Organization.retrieve() `limit` & `offset` +- Clerk.getOrganizationMemberships() +- `svgUrl` +- `avatarUrl`/`logoUrl`/`faviconUrl`/`profileImageUrl` From e5dbd319af0060ea889bbfc5e04dc82056f9123e Mon Sep 17 00:00:00 2001 From: Dimitris Klouvas Date: Thu, 28 Sep 2023 14:04:12 +0300 Subject: [PATCH 7/8] chore(clerk-js): Update snapshots to omit the deprecated class properties The `logoUrl` properties from the snapshots even though they still exist in those classes because of the way the deprecation helper works to mark the property as deprecated. The deprecation helper redefine the property in the class prototype using a getter/setter that shows a warning in getter using the Object.defineProperty(). By redefining a property, that property is not considered class own property any more which causes the jest snapshot and the JSON.stringify() to omit that property. This is a side-effect of the deprecation implementation and not a spec but i think that we are okay to proceed with omitting the properties from snapshots. --- .../src/core/resources/__snapshots__/Organization.test.ts.snap | 1 - .../resources/__snapshots__/OrganizationMembership.test.ts.snap | 1 - 2 files changed, 2 deletions(-) diff --git a/packages/clerk-js/src/core/resources/__snapshots__/Organization.test.ts.snap b/packages/clerk-js/src/core/resources/__snapshots__/Organization.test.ts.snap index 184db5902e2..88d97e3313a 100644 --- a/packages/clerk-js/src/core/resources/__snapshots__/Organization.test.ts.snap +++ b/packages/clerk-js/src/core/resources/__snapshots__/Organization.test.ts.snap @@ -18,7 +18,6 @@ Organization { "imageUrl": "https://clerk.com", "inviteMember": [Function], "inviteMembers": [Function], - "logoUrl": "https://url-for-logo.png", "maxAllowedMemberships": 3, "membersCount": 1, "name": "test_name", diff --git a/packages/clerk-js/src/core/resources/__snapshots__/OrganizationMembership.test.ts.snap b/packages/clerk-js/src/core/resources/__snapshots__/OrganizationMembership.test.ts.snap index a3bbcee34d5..f0150e56c5d 100644 --- a/packages/clerk-js/src/core/resources/__snapshots__/OrganizationMembership.test.ts.snap +++ b/packages/clerk-js/src/core/resources/__snapshots__/OrganizationMembership.test.ts.snap @@ -22,7 +22,6 @@ OrganizationMembership { "imageUrl": "https://clerk.com", "inviteMember": [Function], "inviteMembers": [Function], - "logoUrl": "https://path-to-logo.png", "maxAllowedMemberships": 3, "membersCount": 1, "name": "test_name", From af4b7bab01ae0fd7f4218d13fcd56c8675dcd813 Mon Sep 17 00:00:00 2001 From: panteliselef Date: Wed, 27 Sep 2023 15:18:43 +0300 Subject: [PATCH 8/8] chore(clerk-js): Use deprecate util for Organization.getMemberships params --- .changeset/forty-crews-fetch.md | 5 +++++ .../clerk-js/src/core/resources/Organization.ts | 13 +++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 .changeset/forty-crews-fetch.md diff --git a/.changeset/forty-crews-fetch.md b/.changeset/forty-crews-fetch.md new file mode 100644 index 00000000000..92d886824c6 --- /dev/null +++ b/.changeset/forty-crews-fetch.md @@ -0,0 +1,5 @@ +--- +'@clerk/clerk-js': patch +--- + +Use our deprecate utility to log warnings about deprecated usage of Organization.getMemberships diff --git a/packages/clerk-js/src/core/resources/Organization.ts b/packages/clerk-js/src/core/resources/Organization.ts index 25c224aef5b..5f327a1ee85 100644 --- a/packages/clerk-js/src/core/resources/Organization.ts +++ b/packages/clerk-js/src/core/resources/Organization.ts @@ -24,6 +24,7 @@ import type { UpdateMembershipParams, UpdateOrganizationParams, } from '@clerk/types'; +import type { GetMembershipsParams } from '@clerk/types'; import { unixEpochToDate } from '../../utils/date'; import { convertPageToOffset } from '../../utils/pagesToOffset'; @@ -166,6 +167,18 @@ export class Organization extends BaseResource implements OrganizationResource { getMemberships: GetMemberships = async getMembershipsParams => { const isDeprecatedParams = typeof getMembershipsParams === 'undefined' || !getMembershipsParams?.paginated; + + if (!(getMembershipsParams as GetMembershipsParams)?.limit) { + deprecated( + 'limit', + 'Use `pageSize` instead in Organization.getMemberships.', + 'organization:getMemberships:limit', + ); + } + if (!(getMembershipsParams as GetMembershipsParams)?.offset) { + deprecated('offset', 'Use `initialPage` instead in Organization.limit.', 'organization:getMemberships:offset'); + } + return await BaseResource._fetch({ path: `/organizations/${this.id}/memberships`, method: 'GET',