@workos-inc/node 7.54.0 → 7.55.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.
@@ -11,6 +11,7 @@ export interface AccessToken {
11
11
  role?: string;
12
12
  permissions?: string[];
13
13
  entitlements?: string[];
14
+ feature_flags?: string[];
14
15
  }
15
16
  export type SessionCookieData = Pick<AuthenticationResponse, 'accessToken' | 'impersonator' | 'organizationId' | 'refreshToken' | 'user'>;
16
17
  export declare enum AuthenticateWithSessionCookieFailureReason {
@@ -29,6 +30,7 @@ export type AuthenticateWithSessionCookieSuccessResponse = {
29
30
  role?: string;
30
31
  permissions?: string[];
31
32
  entitlements?: string[];
33
+ featureFlags?: string[];
32
34
  user: User;
33
35
  impersonator?: Impersonator;
34
36
  accessToken: string;
@@ -61,7 +61,7 @@ class Session {
61
61
  reason: interfaces_1.AuthenticateWithSessionCookieFailureReason.INVALID_JWT,
62
62
  };
63
63
  }
64
- const { sid: sessionId, org_id: organizationId, role, permissions, entitlements, } = (0, jose_1.decodeJwt)(session.accessToken);
64
+ const { sid: sessionId, org_id: organizationId, role, permissions, entitlements, feature_flags: featureFlags, } = (0, jose_1.decodeJwt)(session.accessToken);
65
65
  return {
66
66
  authenticated: true,
67
67
  sessionId,
@@ -69,6 +69,7 @@ class Session {
69
69
  role,
70
70
  permissions,
71
71
  entitlements,
72
+ featureFlags,
72
73
  user: session.user,
73
74
  impersonator: session.impersonator,
74
75
  accessToken: session.accessToken,
@@ -113,7 +114,7 @@ class Session {
113
114
  this.cookiePassword = options.cookiePassword;
114
115
  }
115
116
  this.sessionData = authenticationResponse.sealedSession;
116
- const { sid: sessionId, org_id: organizationId, role, permissions, entitlements, } = (0, jose_1.decodeJwt)(authenticationResponse.accessToken);
117
+ const { sid: sessionId, org_id: organizationId, role, permissions, entitlements, feature_flags: featureFlags, } = (0, jose_1.decodeJwt)(authenticationResponse.accessToken);
117
118
  // TODO: Returning `session` here means there's some duplicated data.
118
119
  // Slim down the return type in a future major version.
119
120
  return {
@@ -125,6 +126,7 @@ class Session {
125
126
  role,
126
127
  permissions,
127
128
  entitlements,
129
+ featureFlags,
128
130
  user: session.user,
129
131
  impersonator: session.impersonator,
130
132
  };
@@ -119,7 +119,7 @@ describe('Session', () => {
119
119
  .spyOn(jose, 'jwtVerify')
120
120
  .mockResolvedValue({});
121
121
  const cookiePassword = 'alongcookiesecretmadefortestingsessions';
122
- const accessToken = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdXRoZW50aWNhdGVkIjp0cnVlLCJpbXBlcnNvbmF0b3IiOnsiZW1haWwiOiJhZG1pbkBleGFtcGxlLmNvbSIsInJlYXNvbiI6InRlc3QifSwic2lkIjoic2Vzc2lvbl8xMjMiLCJvcmdfaWQiOiJvcmdfMTIzIiwicm9sZSI6Im1lbWJlciIsInBlcm1pc3Npb25zIjpbInBvc3RzOmNyZWF0ZSIsInBvc3RzOmRlbGV0ZSJdLCJlbnRpdGxlbWVudHMiOlsiYXVkaXQtbG9ncyJdLCJ1c2VyIjp7Im9iamVjdCI6InVzZXIiLCJpZCI6InVzZXJfMDFINUpRRFY3UjdBVEVZWkRFRzBXNVBSWVMiLCJlbWFpbCI6InRlc3RAZXhhbXBsZS5jb20ifX0.A8mDST4wtq_0vId6ALg7k2Ukr7FXrszZtdJ_6dfXeAc';
122
+ const accessToken = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdXRoZW50aWNhdGVkIjp0cnVlLCJpbXBlcnNvbmF0b3IiOnsiZW1haWwiOiJhZG1pbkBleGFtcGxlLmNvbSIsInJlYXNvbiI6InRlc3QifSwic2lkIjoic2Vzc2lvbl8xMjMiLCJvcmdfaWQiOiJvcmdfMTIzIiwicm9sZSI6Im1lbWJlciIsInBlcm1pc3Npb25zIjpbInBvc3RzOmNyZWF0ZSIsInBvc3RzOmRlbGV0ZSJdLCJlbnRpdGxlbWVudHMiOlsiYXVkaXQtbG9ncyJdLCJmZWF0dXJlX2ZsYWdzIjpbImRhcmstbW9kZSIsImJldGEtZmVhdHVyZXMiXSwidXNlciI6eyJvYmplY3QiOiJ1c2VyIiwiaWQiOiJ1c2VyXzAxSDVKUURWN1I3QVRFWVpERUcwVzVQUllTIiwiZW1haWwiOiJ0ZXN0QGV4YW1wbGUuY29tIn19.YVNjR8S2xGn2jAoLuEcBQNJ1_xY3OzjRE1-BK0zjfQE';
123
123
  const sessionData = yield (0, iron_session_1.sealData)({
124
124
  accessToken,
125
125
  refreshToken: 'def456',
@@ -148,6 +148,7 @@ describe('Session', () => {
148
148
  role: 'member',
149
149
  permissions: ['posts:create', 'posts:delete'],
150
150
  entitlements: ['audit-logs'],
151
+ featureFlags: ['dark-mode', 'beta-features'],
151
152
  user: {
152
153
  object: 'user',
153
154
  id: 'user_01H5JQDV7R7ATEYZDEG0W5PRYS',
@@ -210,7 +210,7 @@ class UserManagement {
210
210
  reason: authenticate_with_session_cookie_interface_1.AuthenticateWithSessionCookieFailureReason.INVALID_JWT,
211
211
  };
212
212
  }
213
- const { sid: sessionId, org_id: organizationId, role, permissions, entitlements, } = (0, jose_1.decodeJwt)(session.accessToken);
213
+ const { sid: sessionId, org_id: organizationId, role, permissions, entitlements, feature_flags: featureFlags, } = (0, jose_1.decodeJwt)(session.accessToken);
214
214
  return {
215
215
  authenticated: true,
216
216
  sessionId,
@@ -219,6 +219,7 @@ class UserManagement {
219
219
  user: session.user,
220
220
  permissions,
221
221
  entitlements,
222
+ featureFlags,
222
223
  accessToken: session.accessToken,
223
224
  };
224
225
  });
@@ -777,7 +777,7 @@ describe('UserManagement', () => {
777
777
  .spyOn(jose, 'jwtVerify')
778
778
  .mockResolvedValue({});
779
779
  const cookiePassword = 'alongcookiesecretmadefortestingsessions';
780
- const accessToken = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdXRoZW50aWNhdGVkIjp0cnVlLCJpbXBlcnNvbmF0b3IiOnsiZW1haWwiOiJhZG1pbkBleGFtcGxlLmNvbSIsInJlYXNvbiI6InRlc3QifSwic2lkIjoic2Vzc2lvbl8xMjMiLCJvcmdfaWQiOiJvcmdfMTIzIiwicm9sZSI6Im1lbWJlciIsInBlcm1pc3Npb25zIjpbInBvc3RzOmNyZWF0ZSIsInBvc3RzOmRlbGV0ZSJdLCJlbnRpdGxlbWVudHMiOlsiYXVkaXQtbG9ncyJdLCJ1c2VyIjp7Im9iamVjdCI6InVzZXIiLCJpZCI6InVzZXJfMDFINUpRRFY3UjdBVEVZWkRFRzBXNVBSWVMiLCJlbWFpbCI6InRlc3RAZXhhbXBsZS5jb20ifX0.A8mDST4wtq_0vId6ALg7k2Ukr7FXrszZtdJ_6dfXeAc';
780
+ const accessToken = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdXRoZW50aWNhdGVkIjp0cnVlLCJpbXBlcnNvbmF0b3IiOnsiZW1haWwiOiJhZG1pbkBleGFtcGxlLmNvbSIsInJlYXNvbiI6InRlc3QifSwic2lkIjoic2Vzc2lvbl8xMjMiLCJvcmdfaWQiOiJvcmdfMTIzIiwicm9sZSI6Im1lbWJlciIsInBlcm1pc3Npb25zIjpbInBvc3RzOmNyZWF0ZSIsInBvc3RzOmRlbGV0ZSJdLCJlbnRpdGxlbWVudHMiOlsiYXVkaXQtbG9ncyJdLCJmZWF0dXJlX2ZsYWdzIjpbImRhcmstbW9kZSIsImJldGEtZmVhdHVyZXMiXSwidXNlciI6eyJvYmplY3QiOiJ1c2VyIiwiaWQiOiJ1c2VyXzAxSDVKUURWN1I3QVRFWVpERUcwVzVQUllTIiwiZW1haWwiOiJ0ZXN0QGV4YW1wbGUuY29tIn19.YVNjR8S2xGn2jAoLuEcBQNJ1_xY3OzjRE1-BK0zjfQE';
781
781
  const sessionData = yield (0, iron_session_1.sealData)({
782
782
  accessToken,
783
783
  refreshToken: 'def456',
@@ -797,6 +797,7 @@ describe('UserManagement', () => {
797
797
  role: 'member',
798
798
  permissions: ['posts:create', 'posts:delete'],
799
799
  entitlements: ['audit-logs'],
800
+ featureFlags: ['dark-mode', 'beta-features'],
800
801
  user: expect.objectContaining({
801
802
  email: 'test@example.com',
802
803
  }),
package/lib/workos.js CHANGED
@@ -31,7 +31,7 @@ const widgets_1 = require("./widgets/widgets");
31
31
  const actions_1 = require("./actions/actions");
32
32
  const vault_1 = require("./vault/vault");
33
33
  const conflict_exception_1 = require("./common/exceptions/conflict.exception");
34
- const VERSION = '7.54.0';
34
+ const VERSION = '7.55.0';
35
35
  const DEFAULT_HOSTNAME = 'api.workos.com';
36
36
  const HEADER_AUTHORIZATION = 'Authorization';
37
37
  const HEADER_IDEMPOTENCY_KEY = 'Idempotency-Key';
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "7.54.0",
2
+ "version": "7.55.0",
3
3
  "name": "@workos-inc/node",
4
4
  "author": "WorkOS",
5
5
  "description": "A Node wrapper for the WorkOS API",