@workos-inc/node 6.1.0 → 6.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,6 +4,9 @@
4
4
  "user_id": "user_01H5JQDV7R7ATEYZDEG0W5PRYS",
5
5
  "organization_id": "organization_01H5JQDV7R7ATEYZDEG0W5PRYS",
6
6
  "status": "active",
7
+ "role": {
8
+ "slug": "member"
9
+ },
7
10
  "created_at": "2023-07-18T02:07:19.911Z",
8
11
  "updated_at": "2023-07-18T02:07:19.911Z"
9
12
  }
@@ -1,8 +1,10 @@
1
1
  export interface CreateOrganizationMembershipOptions {
2
2
  organizationId: string;
3
3
  userId: string;
4
+ roleSlug?: string;
4
5
  }
5
6
  export interface SerializedCreateOrganizationMembershipOptions {
6
7
  organization_id: string;
7
8
  user_id: string;
9
+ role_slug?: string;
8
10
  }
@@ -1,3 +1,4 @@
1
+ import { RoleResponse } from './role.interface';
1
2
  export interface OrganizationMembership {
2
3
  object: 'organization_membership';
3
4
  id: string;
@@ -6,6 +7,7 @@ export interface OrganizationMembership {
6
7
  userId: string;
7
8
  createdAt: string;
8
9
  updatedAt: string;
10
+ role: RoleResponse;
9
11
  }
10
12
  export interface OrganizationMembershipResponse {
11
13
  object: 'organization_membership';
@@ -15,4 +17,5 @@ export interface OrganizationMembershipResponse {
15
17
  user_id: string;
16
18
  created_at: string;
17
19
  updated_at: string;
20
+ role: RoleResponse;
18
21
  }
@@ -0,0 +1,3 @@
1
+ export interface RoleResponse {
2
+ slug: string;
3
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ export interface UpdateOrganizationMembershipOptions {
2
+ roleSlug?: string;
3
+ }
4
+ export interface SerializedUpdateOrganizationMembershipOptions {
5
+ role_slug?: string;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -5,7 +5,7 @@ export interface UpdateUserOptions {
5
5
  emailVerified?: boolean;
6
6
  password?: string;
7
7
  passwordHash?: string;
8
- passwordHashType?: 'bcrypt' | 'firebase-scrypt';
8
+ passwordHashType?: 'bcrypt' | 'firebase-scrypt' | 'ssha';
9
9
  }
10
10
  export interface SerializedUpdateUserOptions {
11
11
  first_name?: string;
@@ -13,5 +13,5 @@ export interface SerializedUpdateUserOptions {
13
13
  email_verified?: boolean;
14
14
  password?: string;
15
15
  password_hash?: string;
16
- password_hash_type?: 'bcrypt' | 'firebase-scrypt';
16
+ password_hash_type?: 'bcrypt' | 'firebase-scrypt' | 'ssha';
17
17
  }
@@ -4,5 +4,6 @@ exports.serializeCreateOrganizationMembershipOptions = void 0;
4
4
  const serializeCreateOrganizationMembershipOptions = (options) => ({
5
5
  organization_id: options.organizationId,
6
6
  user_id: options.userId,
7
+ role_slug: options.roleSlug,
7
8
  });
8
9
  exports.serializeCreateOrganizationMembershipOptions = serializeCreateOrganizationMembershipOptions;
@@ -9,5 +9,6 @@ const deserializeOrganizationMembership = (organizationMembership) => ({
9
9
  status: organizationMembership.status,
10
10
  createdAt: organizationMembership.created_at,
11
11
  updatedAt: organizationMembership.updated_at,
12
+ role: organizationMembership.role,
12
13
  });
13
14
  exports.deserializeOrganizationMembership = deserializeOrganizationMembership;
@@ -0,0 +1,2 @@
1
+ import { UpdateOrganizationMembershipOptions, SerializedUpdateOrganizationMembershipOptions } from '../interfaces/update-organization-membership-options.interface';
2
+ export declare const serializeUpdateOrganizationMembershipOptions: (options: UpdateOrganizationMembershipOptions) => SerializedUpdateOrganizationMembershipOptions;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serializeUpdateOrganizationMembershipOptions = void 0;
4
+ const serializeUpdateOrganizationMembershipOptions = (options) => ({
5
+ role_slug: options.roleSlug,
6
+ });
7
+ exports.serializeUpdateOrganizationMembershipOptions = serializeUpdateOrganizationMembershipOptions;
@@ -13,6 +13,7 @@ import { AuthenticateWithEmailVerificationOptions } from './interfaces/authentic
13
13
  import { AuthenticateWithOrganizationSelectionOptions } from './interfaces/authenticate-with-organization-selection.interface';
14
14
  import { Factor, FactorWithSecrets } from './interfaces/factor.interface';
15
15
  import { RevokeSessionOptions } from './interfaces/revoke-session-options.interface';
16
+ import { UpdateOrganizationMembershipOptions } from './interfaces/update-organization-membership-options.interface';
16
17
  export declare class UserManagement {
17
18
  private readonly workos;
18
19
  constructor(workos: WorkOS);
@@ -47,6 +48,7 @@ export declare class UserManagement {
47
48
  getOrganizationMembership(organizationMembershipId: string): Promise<OrganizationMembership>;
48
49
  listOrganizationMemberships(options: ListOrganizationMembershipsOptions): Promise<AutoPaginatable<OrganizationMembership>>;
49
50
  createOrganizationMembership(options: CreateOrganizationMembershipOptions): Promise<OrganizationMembership>;
51
+ updateOrganizationMembership(organizationMembershipId: string, options: UpdateOrganizationMembershipOptions): Promise<OrganizationMembership>;
50
52
  deleteOrganizationMembership(organizationMembershipId: string): Promise<void>;
51
53
  getInvitation(invitationId: string): Promise<Invitation>;
52
54
  listInvitations(options: ListInvitationsOptions): Promise<AutoPaginatable<Invitation>>;
@@ -57,4 +59,5 @@ export declare class UserManagement {
57
59
  getLogoutUrl({ sessionId }: {
58
60
  sessionId: string;
59
61
  }): string;
62
+ getJwksUrl(clientId: string): string;
60
63
  }
@@ -25,6 +25,7 @@ const authenticate_with_email_verification_serializer_1 = require("./serializers
25
25
  const authenticate_with_organization_selection_options_serializer_1 = require("./serializers/authenticate-with-organization-selection-options.serializer");
26
26
  const factor_serializer_1 = require("./serializers/factor.serializer");
27
27
  const revoke_session_options_interface_1 = require("./interfaces/revoke-session-options.interface");
28
+ const update_organization_membership_options_serializer_1 = require("./serializers/update-organization-membership-options.serializer");
28
29
  const toQueryString = (options) => {
29
30
  const searchParams = new URLSearchParams();
30
31
  const keys = Object.keys(options).sort();
@@ -175,6 +176,12 @@ class UserManagement {
175
176
  return (0, organization_membership_serializer_1.deserializeOrganizationMembership)(data);
176
177
  });
177
178
  }
179
+ updateOrganizationMembership(organizationMembershipId, options) {
180
+ return __awaiter(this, void 0, void 0, function* () {
181
+ const { data } = yield this.workos.put(`/user_management/organization_memberships/${organizationMembershipId}`, (0, update_organization_membership_options_serializer_1.serializeUpdateOrganizationMembershipOptions)(options));
182
+ return (0, organization_membership_serializer_1.deserializeOrganizationMembership)(data);
183
+ });
184
+ }
178
185
  deleteOrganizationMembership(organizationMembershipId) {
179
186
  return __awaiter(this, void 0, void 0, function* () {
180
187
  yield this.workos.delete(`/user_management/organization_memberships/${organizationMembershipId}`);
@@ -231,5 +238,11 @@ class UserManagement {
231
238
  }
232
239
  return `${this.workos.baseURL}/user_management/sessions/logout?session_id=${sessionId}`;
233
240
  }
241
+ getJwksUrl(clientId) {
242
+ if (!clientId) {
243
+ throw TypeError('clientId must be a valid clientId');
244
+ }
245
+ return `${this.workos.baseURL}/sso/jwks/${clientId}`;
246
+ }
234
247
  }
235
248
  exports.UserManagement = UserManagement;
@@ -531,6 +531,29 @@ describe('UserManagement', () => {
531
531
  organizationId: 'organization_01H5JQDV7R7ATEYZDEG0W5PRYS',
532
532
  userId: 'user_01H5JQDV7R7ATEYZDEG0W5PRYS',
533
533
  status: 'active',
534
+ role: {
535
+ slug: 'member',
536
+ },
537
+ });
538
+ }));
539
+ });
540
+ describe('updateOrganizationMembership', () => {
541
+ it('sends an update organization membership request', () => __awaiter(void 0, void 0, void 0, function* () {
542
+ (0, test_utils_1.fetchOnce)(organization_membership_json_1.default, {
543
+ status: 200,
544
+ });
545
+ const organizationMembership = yield workos.userManagement.updateOrganizationMembership(organizationMembershipId, {
546
+ roleSlug: 'member',
547
+ });
548
+ expect((0, test_utils_1.fetchURL)()).toContain(`/user_management/organization_memberships/${organizationMembershipId}`);
549
+ expect(organizationMembership).toMatchObject({
550
+ object: 'organization_membership',
551
+ organizationId: 'organization_01H5JQDV7R7ATEYZDEG0W5PRYS',
552
+ userId: 'user_01H5JQDV7R7ATEYZDEG0W5PRYS',
553
+ status: 'active',
554
+ role: {
555
+ slug: 'member',
556
+ },
534
557
  });
535
558
  }));
536
559
  });
@@ -761,4 +784,17 @@ describe('UserManagement', () => {
761
784
  expect(url).toBe('https://api.workos.com/user_management/sessions/logout?session_id=123456');
762
785
  });
763
786
  });
787
+ describe('getJwksUrl', () => {
788
+ it('returns the jwks url', () => {
789
+ const workos = new workos_1.WorkOS('sk_test_Sz3IQjepeSWaI4cMS4ms4sMuU');
790
+ const url = workos.userManagement.getJwksUrl('client_whatever');
791
+ expect(url).toBe('https://api.workos.com/sso/jwks/client_whatever');
792
+ });
793
+ it('throws an error if the clientId is blank', () => {
794
+ const workos = new workos_1.WorkOS('sk_test_Sz3IQjepeSWaI4cMS4ms4sMuU');
795
+ expect(() => {
796
+ workos.userManagement.getJwksUrl('');
797
+ }).toThrowError(TypeError);
798
+ });
799
+ });
764
800
  });
package/lib/workos.js CHANGED
@@ -24,7 +24,7 @@ const audit_logs_1 = require("./audit-logs/audit-logs");
24
24
  const user_management_1 = require("./user-management/user-management");
25
25
  const bad_request_exception_1 = require("./common/exceptions/bad-request.exception");
26
26
  const fetch_client_1 = require("./common/utils/fetch-client");
27
- const VERSION = '6.1.0';
27
+ const VERSION = '6.3.0';
28
28
  const DEFAULT_HOSTNAME = 'api.workos.com';
29
29
  class WorkOS {
30
30
  constructor(key, options = {}) {
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "6.1.0",
2
+ "version": "6.3.0",
3
3
  "name": "@workos-inc/node",
4
4
  "author": "WorkOS",
5
5
  "description": "A Node wrapper for the WorkOS API",