@frontegg/rest-api 3.1.63 → 3.1.65

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.
@@ -0,0 +1,27 @@
1
+ import { IUserApplicationsIdPayload, IUserApplicationsDataPayload, IApplicationsResponse, IAssignUserToApplicationsBody, IUsersApplicationsIdPayload } from "./interfaces";
2
+ /**
3
+ * Get applications id array for single user by user id
4
+ * @param userId - user id to find his applications id array
5
+ * @returns all app ids as string[]
6
+ */
7
+ export declare function getUserApplicationsId({ userId }: IUserApplicationsIdPayload): Promise<string[]>;
8
+ /**
9
+ * Get applications id array for multiple users by user id array
10
+ * @param userIds - array of all user id's
11
+ * @returns object that maps every user id to his applications id array
12
+ */
13
+ export declare function getUsersApplicationsId({ userIds }: IUsersApplicationsIdPayload): Promise<Record<string, string[]>>;
14
+ /**
15
+ * Get applications data by array of application ids
16
+ * @param appIds - array of application ids
17
+ * @returns IApplicationsResponse
18
+ */
19
+ export declare function getUserApplicationsData({ appIds }: IUserApplicationsDataPayload): Promise<IApplicationsResponse>;
20
+ /**
21
+ * Assign user to multiple applications
22
+ * @param appIds - string[]
23
+ * @param tenantId - string
24
+ * @param userId - string
25
+ * @returns void
26
+ */
27
+ export declare function assignUserToApplications(body: IAssignUserToApplicationsBody): Promise<void>;
@@ -0,0 +1,24 @@
1
+ import { urls } from "../constants";
2
+ import { Post, Get } from "../fetch";
3
+ export async function getUserApplicationsId({
4
+ userId
5
+ }) {
6
+ return Get(`${urls.identity.applications.v1}/${userId}/apps`);
7
+ }
8
+ export async function getUsersApplicationsId({
9
+ userIds
10
+ }) {
11
+ return Get(`${urls.identity.applications.v1}/users-apps`, {
12
+ userIds: userIds.join(',')
13
+ });
14
+ }
15
+ export async function getUserApplicationsData({
16
+ appIds
17
+ }) {
18
+ return Get(urls.applications.v1, {
19
+ ids: appIds.join(',')
20
+ });
21
+ }
22
+ export async function assignUserToApplications(body) {
23
+ return Post(`${urls.identity.applications.v1}/user-apps`, body);
24
+ }
@@ -0,0 +1,34 @@
1
+ export declare type IUserApplicationsIdPayload = {
2
+ userId: string;
3
+ };
4
+ export declare type IUsersApplicationsIdPayload = {
5
+ userIds: string[];
6
+ };
7
+ export declare type IUserApplicationsDataPayload = {
8
+ appIds: string[];
9
+ };
10
+ export declare type IAssignUserToApplicationsBody = {
11
+ userId: string;
12
+ tenantId: string;
13
+ appIds: string[];
14
+ };
15
+ export declare enum ApplicationAccessType {
16
+ FREE_ACCESS = "FREE_ACCESS",
17
+ MANAGED_ACCESS = "MANAGED_ACCESS"
18
+ }
19
+ export declare type IApplicationsResponse = {
20
+ id: string;
21
+ accessType: ApplicationAccessType;
22
+ appURL: string;
23
+ loginURL: string;
24
+ isDefault: boolean;
25
+ isActive: boolean;
26
+ name: string;
27
+ logoURL: string;
28
+ createdAt: string;
29
+ updatedAt: string;
30
+ type: string;
31
+ frontendStack: string;
32
+ description: string;
33
+ integrationFinishedAt: string;
34
+ };
@@ -0,0 +1,6 @@
1
+ export let ApplicationAccessType;
2
+
3
+ (function (ApplicationAccessType) {
4
+ ApplicationAccessType["FREE_ACCESS"] = "FREE_ACCESS";
5
+ ApplicationAccessType["MANAGED_ACCESS"] = "MANAGED_ACCESS";
6
+ })(ApplicationAccessType || (ApplicationAccessType = {}));
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "module": "./index.js",
4
+ "main": "../node/applications/index.js",
5
+ "types": "./index.d.ts"
6
+ }
package/auth/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export * from "./secutiry-poilicy";
2
2
  export * from "./enums";
3
- export { setTabTenantInSessionStorage, getTabTenantFromSessionStorage, getCurrentUserTenantsFunction } from './utils';
3
+ export { setTabTenantInSessionStorage, getTabTenantFromSessionStorage, getCurrentUserTenantsFunction, removeTabTenantFromSessionStorage } from './utils';
4
4
  import { ISamlRolesGroup } from "../teams/interfaces";
5
5
  import { IAcceptInvitation, IActivateAccount, IAllowedToRememberMfaDevice, ICreateSamlGroup, IDeleteApiToken, IDisableMfa, IEnrollMfaResponse, IForgotPassword, IGetActivateAccountStrategy, IGetActivateAccountStrategyResponse, IGetUserById, IGetUserPasswordConfig, ILogin, ILoginResponse, ILoginViaSocialLogin, ILoginViaSocialLoginResponse, ILoginWithMfa, IOidcPostLogin, IOidcConfiguration, IPostLogin, IPreLogin, IRecoverMFAToken, IResendActivationEmail, IResetPassword, ISamlConfiguration, ISamlVendorConfigResponse, ISignUpResponse, ISignUpUser, ISocialLoginProviderConfiguration, ITenantApiTokensData, IUpdateSamlConfiguration, IUpdateSamlGroup, IUpdateSamlRoles, IUpdateSamlVendorMetadata, IUpdateTenantApiTokensData, IUpdateUserApiTokensData, IUserApiTokensData, IUserIdResponse, IVendorConfig, IVerifyMfa, IVerifyMfaResponse, TestConfig, ISSOPublicConfiguration, IPreLoginWithIdpTypeResponse, IPasswordlessPreLogin, IPasswordlessPostLogin, ICreateSSODomain, IVerifyInviteToken, ISSODomain, ISSOConfigurationDefaultRoles, ISSOConfiguration, IUpdateSSOConfiguration, IOidcPostLoginV2, IExchangeOAuthTokens, IOAuthTokenResponse, ISocialLoginProviderConfigurationV2, ILoginResponseV2, IResetPhoneNumber, IVerifyResetPhoneNumber, IChangePhoneNumber, IVerifyResetPhoneNumberResponse, IResetPhoneNumberResponse, IWebAuthnPreLogin, IWebAuthnPostLogin, IVerifyNewWebAuthnDevice, IWebAuthnPreLoginResponse, ICreateNewDeviceSessionResponse, IAuthStrategiesConfig, ISessionResponse, IChangePhoneNumberWithVerification, IChangePhoneNumberWithVerificationResponse, IVerifyChangePhoneNumber, ISessionConfigurations, IResendInvitationEmail, IPreEnrollMFA, IEnrollMFAAuthenticatorApp, IPreEnrollMFASMS, IEnrollMFASMS, IEnrollMFAWebAuthn, IPreEnrollMFAAuthenticatorAppResponse, IPreEnrollMFAWebAuthnResponse, IVerifyMFAAuthenticatorApp, IPreVerifyMFA, IPreVerifyMFASMSResponse, IVerifyMFASMS, IPreVerifyMFAWebAuthnResponse, IVerifyMFAWebAuthn, IPreEnrollMFASMSResponse, IPreDisableMFASMSResponse, IDisableMFASMS, IDisableMFAWebAuthn, IPreDisableMFAWebAuthnResponse, UserMFADevicesResponse, WithoutMFAToken, IMFAStrategiesResponse, IOAuthLogout, IGetUserAccessTokens, IGetTenantAccessTokens, IDeleteAccessToken, ICreateTenantAccessTokenData, ICreateUserAccessTokenData, IWebAuthnDevices, ICustomSocialLoginProviderConfigurationV1, ILoginResponseV3, IPreVerifyMFAEmailCodeResponse, IVerifyMFAEmailCode, ICreateOrUpdateSSOConfigurationByMetadataUrl, GenerateStepUpRequest, GenerateStepUpResponse } from './interfaces';
6
6
  import { IGetUserAuthorizationResponse, IUserProfile } from "../users/interfaces";
package/auth/index.js CHANGED
@@ -6,7 +6,7 @@ const _excluded = ["type"],
6
6
  import { getTenants } from "../tenants";
7
7
  export * from "./secutiry-poilicy";
8
8
  export * from "./enums";
9
- export { setTabTenantInSessionStorage, getTabTenantFromSessionStorage, getCurrentUserTenantsFunction } from './utils';
9
+ export { setTabTenantInSessionStorage, getTabTenantFromSessionStorage, getCurrentUserTenantsFunction, removeTabTenantFromSessionStorage } from './utils';
10
10
  import { urls } from "../constants";
11
11
  import { ContextHolder } from "../ContextHolder";
12
12
  import { Delete, Get, Patch, Post, Put } from "../fetch";
package/auth/utils.d.ts CHANGED
@@ -5,5 +5,6 @@ export interface ConditionalAction<T = any> {
5
5
  }
6
6
  export declare function executeConditionalPromise({ shouldLoad, action }: ConditionalAction): Promise<any>;
7
7
  export declare function setTabTenantInSessionStorage(tenantId: string): void;
8
+ export declare function removeTabTenantFromSessionStorage(): void;
8
9
  export declare function getTabTenantFromSessionStorage(): string | null;
9
10
  export declare function getCurrentUserTenantsFunction(): () => Promise<GetCurrentUserTenantsResponse>;
package/auth/utils.js CHANGED
@@ -18,6 +18,9 @@ export function setTabTenantInSessionStorage(tenantId) {
18
18
 
19
19
  sessionStorage.setItem(FRONTEGG_SEPARATE_TABS_BY_TENANT, tenantId);
20
20
  }
21
+ export function removeTabTenantFromSessionStorage() {
22
+ sessionStorage.removeItem(FRONTEGG_SEPARATE_TABS_BY_TENANT);
23
+ }
21
24
  export function getTabTenantFromSessionStorage() {
22
25
  if (!ContextHolder.isSessionPerTenantEnabled()) {
23
26
  return null;
package/constants.d.ts CHANGED
@@ -114,6 +114,9 @@ export declare const urls: {
114
114
  impersonate: {
115
115
  v1: string;
116
116
  };
117
+ applications: {
118
+ v1: string;
119
+ };
117
120
  groups: {
118
121
  v1: string;
119
122
  configurations: {
@@ -266,5 +269,8 @@ export declare const urls: {
266
269
  v1: string;
267
270
  };
268
271
  };
272
+ applications: {
273
+ v1: string;
274
+ };
269
275
  };
270
276
  export declare const GENERIC_ERROR_MESSAGE = "We're facing some difficulties, Please try again";
package/constants.js CHANGED
@@ -114,6 +114,9 @@ export const urls = {
114
114
  impersonate: {
115
115
  v1: '/identity/resources/impersonation/v1'
116
116
  },
117
+ applications: {
118
+ v1: '/identity/resources/applications/v1'
119
+ },
117
120
  groups: {
118
121
  v1: '/identity/resources/groups/v1',
119
122
  configurations: {
@@ -265,6 +268,9 @@ export const urls = {
265
268
  insights: {
266
269
  v1: '/security-center/resources/insights/v1'
267
270
  }
271
+ },
272
+ applications: {
273
+ v1: '/applications/resources/applications/v1'
268
274
  }
269
275
  };
270
276
  export const GENERIC_ERROR_MESSAGE = `We're facing some difficulties, Please try again`;
package/fetch.js CHANGED
@@ -146,6 +146,13 @@ async function getAdditionalHeaders(context) {
146
146
  }
147
147
  }
148
148
 
149
+ if (context.appId) {
150
+ output.push({
151
+ key: 'frontegg-requested-application-id',
152
+ value: context.appId
153
+ });
154
+ }
155
+
149
156
  return output;
150
157
  }
151
158
 
package/index.d.ts CHANGED
@@ -11,6 +11,7 @@ import * as tenants from "./tenants";
11
11
  import * as accountSettings from "./account-settings";
12
12
  import * as roles from "./roles";
13
13
  import * as subscriptions from "./subscriptions";
14
+ import * as applications from "./applications";
14
15
  import { ISubscriptionCancellationPolicy, ISubscriptionStatus, PaymentMethodType, ProviderType } from "./subscriptions";
15
16
  import { FronteggApiError } from "./error";
16
17
  import * as vendor from "./vendor";
@@ -51,6 +52,7 @@ export * from "./users/interfaces";
51
52
  export * from "./entitlements/interfaces";
52
53
  export * from "./security-center/interfaces";
53
54
  export * from "./user-phone-numbers/interfaces";
55
+ export * from "./applications/interfaces";
54
56
  declare const api: {
55
57
  auth: typeof auth;
56
58
  teams: typeof teams;
@@ -73,6 +75,7 @@ declare const api: {
73
75
  entitlements: typeof entitlements;
74
76
  securityCenter: typeof securityCenter;
75
77
  userPhoneNumbers: typeof userPhoneNumbers;
78
+ applications: typeof applications;
76
79
  };
77
80
  export { fetch, ContextHolder, FronteggContext, api, FronteggApiError, AuthStrategyEnum, SocialLoginProviders, ISubscriptionCancellationPolicy, ISubscriptionStatus, PaymentMethodType, ProviderType, MachineToMachineAuthStrategy, };
78
81
  declare const _default: {
@@ -107,6 +110,7 @@ declare const _default: {
107
110
  entitlements: typeof entitlements;
108
111
  securityCenter: typeof securityCenter;
109
112
  userPhoneNumbers: typeof userPhoneNumbers;
113
+ applications: typeof applications;
110
114
  };
111
115
  FronteggApiError: typeof FronteggApiError;
112
116
  AuthStrategyEnum: typeof auth.AuthStrategyEnum;
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license Frontegg v3.1.63
1
+ /** @license Frontegg v3.1.65
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
@@ -16,6 +16,7 @@ import * as tenants from "./tenants";
16
16
  import * as accountSettings from "./account-settings";
17
17
  import * as roles from "./roles";
18
18
  import * as subscriptions from "./subscriptions";
19
+ import * as applications from "./applications";
19
20
  import { ISubscriptionCancellationPolicy, ISubscriptionStatus, PaymentMethodType, ProviderType } from "./subscriptions";
20
21
  import { FronteggApiError } from "./error";
21
22
  import * as vendor from "./vendor";
@@ -56,6 +57,7 @@ export * from "./users/interfaces";
56
57
  export * from "./entitlements/interfaces";
57
58
  export * from "./security-center/interfaces";
58
59
  export * from "./user-phone-numbers/interfaces";
60
+ export * from "./applications/interfaces";
59
61
  const api = {
60
62
  auth,
61
63
  teams,
@@ -77,7 +79,8 @@ const api = {
77
79
  users,
78
80
  entitlements,
79
81
  securityCenter,
80
- userPhoneNumbers
82
+ userPhoneNumbers,
83
+ applications
81
84
  };
82
85
  export { fetch, ContextHolder, FronteggContext, api, FronteggApiError, AuthStrategyEnum, SocialLoginProviders, ISubscriptionCancellationPolicy, ISubscriptionStatus, PaymentMethodType, ProviderType, MachineToMachineAuthStrategy };
83
86
  export default {
package/interfaces.d.ts CHANGED
@@ -61,6 +61,10 @@ export interface SessionContext {
61
61
  export interface ContextOptions {
62
62
  baseUrl: string | ((url: string) => string);
63
63
  clientId?: string;
64
+ /**
65
+ * Will be used to identify the application, use only for multi applications
66
+ */
67
+ appId?: string;
64
68
  tokenResolver?: () => Promise<string> | string;
65
69
  /**
66
70
  * custom login header value
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.assignUserToApplications = assignUserToApplications;
7
+ exports.getUserApplicationsData = getUserApplicationsData;
8
+ exports.getUserApplicationsId = getUserApplicationsId;
9
+ exports.getUsersApplicationsId = getUsersApplicationsId;
10
+
11
+ var _constants = require("../constants");
12
+
13
+ var _fetch = require("../fetch");
14
+
15
+ async function getUserApplicationsId({
16
+ userId
17
+ }) {
18
+ return (0, _fetch.Get)(`${_constants.urls.identity.applications.v1}/${userId}/apps`);
19
+ }
20
+
21
+ async function getUsersApplicationsId({
22
+ userIds
23
+ }) {
24
+ return (0, _fetch.Get)(`${_constants.urls.identity.applications.v1}/users-apps`, {
25
+ userIds: userIds.join(',')
26
+ });
27
+ }
28
+
29
+ async function getUserApplicationsData({
30
+ appIds
31
+ }) {
32
+ return (0, _fetch.Get)(_constants.urls.applications.v1, {
33
+ ids: appIds.join(',')
34
+ });
35
+ }
36
+
37
+ async function assignUserToApplications(body) {
38
+ return (0, _fetch.Post)(`${_constants.urls.identity.applications.v1}/user-apps`, body);
39
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ApplicationAccessType = void 0;
7
+ let ApplicationAccessType;
8
+ exports.ApplicationAccessType = ApplicationAccessType;
9
+
10
+ (function (ApplicationAccessType) {
11
+ ApplicationAccessType["FREE_ACCESS"] = "FREE_ACCESS";
12
+ ApplicationAccessType["MANAGED_ACCESS"] = "MANAGED_ACCESS";
13
+ })(ApplicationAccessType || (exports.ApplicationAccessType = ApplicationAccessType = {}));
@@ -157,7 +157,8 @@ var _exportNames = {
157
157
  generateStepupSession: true,
158
158
  setTabTenantInSessionStorage: true,
159
159
  getTabTenantFromSessionStorage: true,
160
- getCurrentUserTenantsFunction: true
160
+ getCurrentUserTenantsFunction: true,
161
+ removeTabTenantFromSessionStorage: true
161
162
  };
162
163
  exports.OAuthLogout = OAuthLogout;
163
164
  exports.acceptInvitation = acceptInvitation;
@@ -283,6 +284,12 @@ exports.recoverMfaToken = recoverMfaToken;
283
284
  exports.refreshToken = refreshToken;
284
285
  exports.refreshTokenV2 = refreshTokenV2;
285
286
  exports.refreshTokenV3 = refreshTokenV3;
287
+ Object.defineProperty(exports, "removeTabTenantFromSessionStorage", {
288
+ enumerable: true,
289
+ get: function () {
290
+ return _utils.removeTabTenantFromSessionStorage;
291
+ }
292
+ });
286
293
  exports.resendActivationEmail = resendActivationEmail;
287
294
  exports.resendInvitationEmail = resendInvitationEmail;
288
295
  exports.resetPassword = resetPassword;
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.executeConditionalPromise = executeConditionalPromise;
7
7
  exports.getCurrentUserTenantsFunction = getCurrentUserTenantsFunction;
8
8
  exports.getTabTenantFromSessionStorage = getTabTenantFromSessionStorage;
9
+ exports.removeTabTenantFromSessionStorage = removeTabTenantFromSessionStorage;
9
10
  exports.setTabTenantInSessionStorage = setTabTenantInSessionStorage;
10
11
 
11
12
  var _ContextHolder = require("../ContextHolder");
@@ -34,6 +35,10 @@ function setTabTenantInSessionStorage(tenantId) {
34
35
  sessionStorage.setItem(_constants.FRONTEGG_SEPARATE_TABS_BY_TENANT, tenantId);
35
36
  }
36
37
 
38
+ function removeTabTenantFromSessionStorage() {
39
+ sessionStorage.removeItem(_constants.FRONTEGG_SEPARATE_TABS_BY_TENANT);
40
+ }
41
+
37
42
  function getTabTenantFromSessionStorage() {
38
43
  if (!_ContextHolder.ContextHolder.isSessionPerTenantEnabled()) {
39
44
  return null;
package/node/constants.js CHANGED
@@ -120,6 +120,9 @@ const urls = {
120
120
  impersonate: {
121
121
  v1: '/identity/resources/impersonation/v1'
122
122
  },
123
+ applications: {
124
+ v1: '/identity/resources/applications/v1'
125
+ },
123
126
  groups: {
124
127
  v1: '/identity/resources/groups/v1',
125
128
  configurations: {
@@ -271,6 +274,9 @@ const urls = {
271
274
  insights: {
272
275
  v1: '/security-center/resources/insights/v1'
273
276
  }
277
+ },
278
+ applications: {
279
+ v1: '/applications/resources/applications/v1'
274
280
  }
275
281
  };
276
282
  exports.urls = urls;
package/node/fetch.js CHANGED
@@ -166,6 +166,13 @@ async function getAdditionalHeaders(context) {
166
166
  }
167
167
  }
168
168
 
169
+ if (context.appId) {
170
+ output.push({
171
+ key: 'frontegg-requested-application-id',
172
+ value: context.appId
173
+ });
174
+ }
175
+
169
176
  return output;
170
177
  }
171
178
 
package/node/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license Frontegg v3.1.63
1
+ /** @license Frontegg v3.1.65
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
@@ -131,6 +131,8 @@ var roles = _interopRequireWildcard(require("./roles"));
131
131
 
132
132
  var subscriptions = _interopRequireWildcard(require("./subscriptions"));
133
133
 
134
+ var applications = _interopRequireWildcard(require("./applications"));
135
+
134
136
  var _error = require("./error");
135
137
 
136
138
  var vendor = _interopRequireWildcard(require("./vendor"));
@@ -519,6 +521,20 @@ Object.keys(_interfaces22).forEach(function (key) {
519
521
  });
520
522
  });
521
523
 
524
+ var _interfaces23 = require("./applications/interfaces");
525
+
526
+ Object.keys(_interfaces23).forEach(function (key) {
527
+ if (key === "default" || key === "__esModule") return;
528
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
529
+ if (key in exports && exports[key] === _interfaces23[key]) return;
530
+ Object.defineProperty(exports, key, {
531
+ enumerable: true,
532
+ get: function () {
533
+ return _interfaces23[key];
534
+ }
535
+ });
536
+ });
537
+
522
538
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
523
539
 
524
540
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -544,7 +560,8 @@ const api = {
544
560
  users,
545
561
  entitlements,
546
562
  securityCenter,
547
- userPhoneNumbers
563
+ userPhoneNumbers,
564
+ applications
548
565
  };
549
566
  exports.api = api;
550
567
  var _default = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frontegg/rest-api",
3
- "version": "3.1.63",
3
+ "version": "3.1.65",
4
4
  "main": "./node/index.js",
5
5
  "license": "MIT",
6
6
  "dependencies": {