@workos-inc/node 6.3.0 → 6.4.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.
@@ -1,6 +1,6 @@
1
1
  import { DirectoryUser, DirectoryUserResponse, DirectoryGroup, DirectoryGroupResponse, EventDirectory, EventDirectoryResponse } from '../../directory-sync/interfaces';
2
2
  import { Connection, ConnectionResponse } from '../../sso/interfaces';
3
- import { User, UserResponse } from '../../user-management/interfaces';
3
+ import { Session, SessionResponse, User, UserResponse } from '../../user-management/interfaces';
4
4
  import { OrganizationMembership, OrganizationMembershipResponse } from '../../user-management/interfaces/organization-membership.interface';
5
5
  export interface EventBase {
6
6
  id: string;
@@ -162,6 +162,14 @@ export interface UserDeletedEventResponse extends EventResponseBase {
162
162
  event: 'user.deleted';
163
163
  data: UserResponse;
164
164
  }
165
+ export interface UserImpersonatedEvent extends EventBase {
166
+ event: 'user.impersonated';
167
+ data: Session;
168
+ }
169
+ export interface UserImpersonatedEventResponse extends EventResponseBase {
170
+ event: 'user.impersonated';
171
+ data: SessionResponse;
172
+ }
165
173
  export interface OrganizationMembershipAdded extends EventBase {
166
174
  event: 'organization_membership.added';
167
175
  data: OrganizationMembership;
@@ -186,7 +194,7 @@ export interface OrganizationMembershipRemovedResponse extends EventResponseBase
186
194
  event: 'organization_membership.removed';
187
195
  data: OrganizationMembershipResponse;
188
196
  }
189
- export type Event = ConnectionActivatedEvent | ConnectionDeactivatedEvent | ConnectionDeletedEvent | DsyncActivatedEvent | DsyncDeactivatedEvent | DsyncDeletedEvent | DsyncGroupCreatedEvent | DsyncGroupUpdatedEvent | DsyncGroupDeletedEvent | DsyncGroupUserAddedEvent | DsyncGroupUserRemovedEvent | DsyncUserCreatedEvent | DsyncUserUpdatedEvent | DsyncUserDeletedEvent | UserCreatedEvent | UserUpdatedEvent | UserDeletedEvent | OrganizationMembershipAdded | OrganizationMembershipUpdated | OrganizationMembershipRemoved;
190
- export type EventResponse = ConnectionActivatedEventResponse | ConnectionDeactivatedEventResponse | ConnectionDeletedEventResponse | DsyncActivatedEventResponse | DsyncDeactivatedEventResponse | DsyncDeletedEventResponse | DsyncGroupCreatedEventResponse | DsyncGroupUpdatedEventResponse | DsyncGroupDeletedEventResponse | DsyncGroupUserAddedEventResponse | DsyncGroupUserRemovedEventResponse | DsyncUserCreatedEventResponse | DsyncUserUpdatedEventResponse | DsyncUserDeletedEventResponse | UserCreatedEventResponse | UserUpdatedEventResponse | UserDeletedEventResponse | OrganizationMembershipAddedResponse | OrganizationMembershipUpdatedResponse | OrganizationMembershipRemovedResponse;
191
- export type EventName = 'connection.activated' | 'connection.deactivated' | 'connection.deleted' | 'dsync.activated' | 'dsync.deactivated' | 'dsync.deleted' | 'dsync.group.created' | 'dsync.group.deleted' | 'dsync.group.updated' | 'dsync.group.user_added' | 'dsync.group.user_removed' | 'dsync.user.created' | 'dsync.user.deleted' | 'dsync.user.updated' | 'user.created' | 'user.updated' | 'user.deleted' | 'organization_membership.added' | 'organization_membership.updated' | 'organization_membership.removed';
197
+ export type Event = ConnectionActivatedEvent | ConnectionDeactivatedEvent | ConnectionDeletedEvent | DsyncActivatedEvent | DsyncDeactivatedEvent | DsyncDeletedEvent | DsyncGroupCreatedEvent | DsyncGroupUpdatedEvent | DsyncGroupDeletedEvent | DsyncGroupUserAddedEvent | DsyncGroupUserRemovedEvent | DsyncUserCreatedEvent | DsyncUserUpdatedEvent | DsyncUserDeletedEvent | UserCreatedEvent | UserUpdatedEvent | UserDeletedEvent | UserImpersonatedEvent | OrganizationMembershipAdded | OrganizationMembershipUpdated | OrganizationMembershipRemoved;
198
+ export type EventResponse = ConnectionActivatedEventResponse | ConnectionDeactivatedEventResponse | ConnectionDeletedEventResponse | DsyncActivatedEventResponse | DsyncDeactivatedEventResponse | DsyncDeletedEventResponse | DsyncGroupCreatedEventResponse | DsyncGroupUpdatedEventResponse | DsyncGroupDeletedEventResponse | DsyncGroupUserAddedEventResponse | DsyncGroupUserRemovedEventResponse | DsyncUserCreatedEventResponse | DsyncUserUpdatedEventResponse | DsyncUserDeletedEventResponse | UserCreatedEventResponse | UserUpdatedEventResponse | UserDeletedEventResponse | UserImpersonatedEventResponse | OrganizationMembershipAddedResponse | OrganizationMembershipUpdatedResponse | OrganizationMembershipRemovedResponse;
199
+ export type EventName = Event['event'];
192
200
  export {};
@@ -5,6 +5,7 @@ const serializers_1 = require("../../directory-sync/serializers");
5
5
  const serializers_2 = require("../../sso/serializers");
6
6
  const serializers_3 = require("../../user-management/serializers");
7
7
  const organization_membership_serializer_1 = require("../../user-management/serializers/organization-membership.serializer");
8
+ const session_serializer_1 = require("../../user-management/serializers/session.serializer");
8
9
  const deserializeEvent = (event) => {
9
10
  const eventBase = {
10
11
  id: event.id,
@@ -41,6 +42,8 @@ const deserializeEvent = (event) => {
41
42
  case 'user.updated':
42
43
  case 'user.deleted':
43
44
  return Object.assign(Object.assign({}, eventBase), { event: event.event, data: (0, serializers_3.deserializeUser)(event.data) });
45
+ case 'user.impersonated':
46
+ return Object.assign(Object.assign({}, eventBase), { event: event.event, data: (0, session_serializer_1.deserializeSession)(event.data) });
44
47
  case 'organization_membership.added':
45
48
  case 'organization_membership.updated':
46
49
  case 'organization_membership.removed':
@@ -1,5 +1,5 @@
1
1
  import { MockParams } from 'jest-fetch-mock';
2
- export declare function fetchOnce(response?: any, { status, headers, ...rest }?: MockParams): import("jest-fetch-mock").FetchMock;
2
+ export declare function fetchOnce(response?: {}, { status, headers, ...rest }?: MockParams): import("jest-fetch-mock").FetchMock;
3
3
  export declare function fetchURL(): string | Request | undefined;
4
4
  export declare function fetchSearchParams(): {
5
5
  [k: string]: string;
@@ -1,15 +1,18 @@
1
+ import { Impersonator, ImpersonatorResponse } from './impersonator.interface';
1
2
  import { User, UserResponse } from './user.interface';
2
3
  export interface AuthenticationResponse {
3
4
  user: User;
4
5
  organizationId?: string;
5
6
  accessToken?: string;
6
7
  refreshToken?: string;
8
+ impersonator?: Impersonator;
7
9
  }
8
10
  export interface AuthenticationResponseResponse {
9
11
  user: UserResponse;
10
12
  organization_id?: string;
11
13
  access_token?: string;
12
14
  refresh_token?: string;
15
+ impersonator?: ImpersonatorResponse;
13
16
  }
14
17
  export interface RefreshAuthenticationResponse {
15
18
  accessToken: string;
@@ -0,0 +1,8 @@
1
+ export interface Impersonator {
2
+ email: string;
3
+ reason: string | null;
4
+ }
5
+ export interface ImpersonatorResponse {
6
+ email: string;
7
+ reason: string | null;
8
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -15,4 +15,5 @@ export * from './send-verification-email-options';
15
15
  export * from './update-user-options.interface';
16
16
  export * from './update-user-password-options.interface';
17
17
  export * from './user.interface';
18
+ export * from './session.interface';
18
19
  export * from './verify-email-options.interface';
@@ -31,4 +31,5 @@ __exportStar(require("./send-verification-email-options"), exports);
31
31
  __exportStar(require("./update-user-options.interface"), exports);
32
32
  __exportStar(require("./update-user-password-options.interface"), exports);
33
33
  __exportStar(require("./user.interface"), exports);
34
+ __exportStar(require("./session.interface"), exports);
34
35
  __exportStar(require("./verify-email-options.interface"), exports);
@@ -0,0 +1,19 @@
1
+ import { Impersonator } from './impersonator.interface';
2
+ export interface Session {
3
+ object: 'session';
4
+ id: string;
5
+ userId: string;
6
+ ipAddress: string | null;
7
+ userAgent: string | null;
8
+ organizationId?: string;
9
+ impersonator?: Impersonator;
10
+ }
11
+ export interface SessionResponse {
12
+ object: 'session';
13
+ id: string;
14
+ user_id: string;
15
+ ip_address: string | null;
16
+ user_agent: string | null;
17
+ organization_id?: string;
18
+ impersonator?: Impersonator;
19
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -14,8 +14,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
14
14
  exports.deserializeRefreshAuthenticationResponse = exports.deserializeAuthenticationResponse = void 0;
15
15
  const user_serializer_1 = require("./user.serializer");
16
16
  const deserializeAuthenticationResponse = (authenticationResponse) => {
17
- const { user, organization_id, access_token, refresh_token } = authenticationResponse, rest = __rest(authenticationResponse, ["user", "organization_id", "access_token", "refresh_token"]);
18
- return Object.assign({ user: (0, user_serializer_1.deserializeUser)(user), organizationId: organization_id, accessToken: access_token, refreshToken: refresh_token }, rest);
17
+ const { user, organization_id, access_token, refresh_token, impersonator } = authenticationResponse, rest = __rest(authenticationResponse, ["user", "organization_id", "access_token", "refresh_token", "impersonator"]);
18
+ return Object.assign({ user: (0, user_serializer_1.deserializeUser)(user), organizationId: organization_id, accessToken: access_token, refreshToken: refresh_token, impersonator }, rest);
19
19
  };
20
20
  exports.deserializeAuthenticationResponse = deserializeAuthenticationResponse;
21
21
  const deserializeRefreshAuthenticationResponse = (refreshAuthenticationResponse) => {
@@ -0,0 +1,2 @@
1
+ import { Session, SessionResponse } from '../interfaces';
2
+ export declare const deserializeSession: (session: SessionResponse) => Session;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deserializeSession = void 0;
4
+ const deserializeSession = (session) => ({
5
+ object: 'session',
6
+ id: session.id,
7
+ userId: session.user_id,
8
+ ipAddress: session.ip_address,
9
+ userAgent: session.user_agent,
10
+ organizationId: session.organization_id,
11
+ impersonator: session.impersonator,
12
+ });
13
+ exports.deserializeSession = deserializeSession;
@@ -155,6 +155,30 @@ describe('UserManagement', () => {
155
155
  },
156
156
  });
157
157
  }));
158
+ describe('when the code is for an impersonator', () => {
159
+ it('deserializes the impersonator metadata', () => __awaiter(void 0, void 0, void 0, function* () {
160
+ (0, test_utils_1.fetchOnce)({
161
+ user: user_json_1.default,
162
+ impersonator: {
163
+ email: 'admin@example.com',
164
+ reason: 'A good reason.',
165
+ },
166
+ });
167
+ const resp = yield workos.userManagement.authenticateWithCode({
168
+ clientId: 'proj_whatever',
169
+ code: 'or this',
170
+ });
171
+ expect(resp).toMatchObject({
172
+ user: {
173
+ email: 'test01@example.com',
174
+ },
175
+ impersonator: {
176
+ email: 'admin@example.com',
177
+ reason: 'A good reason.',
178
+ },
179
+ });
180
+ }));
181
+ });
158
182
  });
159
183
  describe('authenticateWithRefreshToken', () => {
160
184
  it('sends a refresh_token authentication request', () => __awaiter(void 0, void 0, void 0, function* () {
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.3.0';
27
+ const VERSION = '6.4.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.3.0",
2
+ "version": "6.4.0",
3
3
  "name": "@workos-inc/node",
4
4
  "author": "WorkOS",
5
5
  "description": "A Node wrapper for the WorkOS API",