@scalekit-sdk/node 2.2.0-beta.1 → 2.2.1
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.
- package/README.md +5 -5
- package/{reference.md → REFERENCE.md} +530 -748
- package/lib/auth.d.ts +9 -6
- package/lib/auth.js +4 -20
- package/lib/auth.js.map +1 -1
- package/lib/connect.d.ts +3 -3
- package/lib/connect.js +1 -2
- package/lib/connect.js.map +1 -1
- package/lib/connection.d.ts +2 -2
- package/lib/connection.js +4 -4
- package/lib/connection.js.map +1 -1
- package/lib/core.js +2 -2
- package/lib/core.js.map +1 -1
- package/lib/directory.d.ts +2 -2
- package/lib/directory.js +7 -7
- package/lib/directory.js.map +1 -1
- package/lib/domain.d.ts +6 -5
- package/lib/domain.js +4 -5
- package/lib/domain.js.map +1 -1
- package/lib/errors/base-exception.d.ts +1 -1
- package/lib/errors/base-exception.js +1 -1
- package/lib/errors/base-exception.js.map +1 -1
- package/lib/organization.d.ts +10 -9
- package/lib/organization.js +11 -9
- package/lib/organization.js.map +1 -1
- package/lib/passwordless.d.ts +2 -2
- package/lib/passwordless.js +8 -7
- package/lib/passwordless.js.map +1 -1
- package/lib/permission.d.ts +6 -5
- package/lib/permission.js +10 -11
- package/lib/permission.js.map +1 -1
- package/lib/pkg/grpc/buf/validate/validate_pb.d.ts +7 -0
- package/lib/pkg/grpc/buf/validate/validate_pb.js +25 -0
- package/lib/pkg/grpc/buf/validate/validate_pb.js.map +1 -0
- package/lib/pkg/grpc/google/api/annotations_pb.d.ts +7 -0
- package/lib/pkg/grpc/google/api/annotations_pb.js +25 -0
- package/lib/pkg/grpc/google/api/annotations_pb.js.map +1 -0
- package/lib/pkg/grpc/google/api/field_behavior_pb.d.ts +7 -0
- package/lib/pkg/grpc/google/api/field_behavior_pb.js +25 -0
- package/lib/pkg/grpc/google/api/field_behavior_pb.js.map +1 -0
- package/lib/pkg/grpc/google/api/visibility_pb.d.ts +7 -0
- package/lib/pkg/grpc/google/api/visibility_pb.js +25 -0
- package/lib/pkg/grpc/google/api/visibility_pb.js.map +1 -0
- package/lib/pkg/grpc/protoc-gen-openapiv2/options/annotations_pb.d.ts +7 -0
- package/lib/pkg/grpc/protoc-gen-openapiv2/options/annotations_pb.js +25 -0
- package/lib/pkg/grpc/protoc-gen-openapiv2/options/annotations_pb.js.map +1 -0
- package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.d.ts +48 -42
- package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.js +27 -263
- package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/auth/auth_pb.d.ts +371 -325
- package/lib/pkg/grpc/scalekit/v1/auth/auth_pb.js +132 -835
- package/lib/pkg/grpc/scalekit/v1/auth/auth_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/auth/passwordless_pb.d.ts +113 -87
- package/lib/pkg/grpc/scalekit/v1/auth/passwordless_pb.js +45 -201
- package/lib/pkg/grpc/scalekit/v1/auth/passwordless_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/auth/webauthn_pb.d.ts +262 -265
- package/lib/pkg/grpc/scalekit/v1/auth/webauthn_pb.js +92 -938
- package/lib/pkg/grpc/scalekit/v1/auth/webauthn_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/commons/commons_pb.d.ts +162 -157
- package/lib/pkg/grpc/scalekit/v1/commons/commons_pb.js +42 -313
- package/lib/pkg/grpc/scalekit/v1/commons/commons_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/connections/connections_pb.d.ts +1488 -1459
- package/lib/pkg/grpc/scalekit/v1/connections/connections_pb.js +353 -2362
- package/lib/pkg/grpc/scalekit/v1/connections/connections_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/directories/directories_pb.d.ts +520 -483
- package/lib/pkg/grpc/scalekit/v1/directories/directories_pb.js +224 -1555
- package/lib/pkg/grpc/scalekit/v1/directories/directories_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/domains/domains_pb.d.ts +219 -191
- package/lib/pkg/grpc/scalekit/v1/domains/domains_pb.js +96 -553
- package/lib/pkg/grpc/scalekit/v1/domains/domains_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.d.ts +76 -102
- package/lib/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.js +37 -393
- package/lib/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/options/options_pb.d.ts +36 -26
- package/lib/pkg/grpc/scalekit/v1/options/options_pb.js +20 -69
- package/lib/pkg/grpc/scalekit/v1/options/options_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/organizations/organizations_pb.d.ts +447 -400
- package/lib/pkg/grpc/scalekit/v1/organizations/organizations_pb.js +163 -1238
- package/lib/pkg/grpc/scalekit/v1/organizations/organizations_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/roles/roles_pb.d.ts +622 -556
- package/lib/pkg/grpc/scalekit/v1/roles/roles_pb.js +201 -1718
- package/lib/pkg/grpc/scalekit/v1/roles/roles_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/sessions/sessions_pb.d.ts +135 -132
- package/lib/pkg/grpc/scalekit/v1/sessions/sessions_pb.js +55 -518
- package/lib/pkg/grpc/scalekit/v1/sessions/sessions_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/users/users_pb.d.ts +445 -413
- package/lib/pkg/grpc/scalekit/v1/users/users_pb.js +142 -1490
- package/lib/pkg/grpc/scalekit/v1/users/users_pb.js.map +1 -1
- package/lib/role.d.ts +8 -7
- package/lib/role.js +14 -14
- package/lib/role.js.map +1 -1
- package/lib/scalekit.d.ts +0 -4
- package/lib/scalekit.js +0 -4
- package/lib/scalekit.js.map +1 -1
- package/lib/session.js +15 -24
- package/lib/session.js.map +1 -1
- package/lib/user.d.ts +6 -5
- package/lib/user.js +17 -20
- package/lib/user.js.map +1 -1
- package/lib/webauthn.js +6 -5
- package/lib/webauthn.js.map +1 -1
- package/package.json +12 -10
- package/.github/dependabot.yml +0 -10
- package/.nvmrc +0 -1
- package/buf.gen.yaml +0 -24
- package/jest.config.js +0 -15
- package/lib/connected-accounts.d.ts +0 -119
- package/lib/connected-accounts.js +0 -241
- package/lib/connected-accounts.js.map +0 -1
- package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_connect.d.ts +0 -19
- package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_connect.js +0 -27
- package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_connect.js.map +0 -1
- package/lib/pkg/grpc/scalekit/v1/auth/auth_connect.d.ts +0 -118
- package/lib/pkg/grpc/scalekit/v1/auth/auth_connect.js +0 -126
- package/lib/pkg/grpc/scalekit/v1/auth/auth_connect.js.map +0 -1
- package/lib/pkg/grpc/scalekit/v1/auth/passwordless_connect.d.ts +0 -37
- package/lib/pkg/grpc/scalekit/v1/auth/passwordless_connect.js +0 -45
- package/lib/pkg/grpc/scalekit/v1/auth/passwordless_connect.js.map +0 -1
- package/lib/pkg/grpc/scalekit/v1/auth/webauthn_connect.d.ts +0 -82
- package/lib/pkg/grpc/scalekit/v1/auth/webauthn_connect.js +0 -90
- package/lib/pkg/grpc/scalekit/v1/auth/webauthn_connect.js.map +0 -1
- package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_connect.d.ts +0 -87
- package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_connect.js +0 -95
- package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_connect.js.map +0 -1
- package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.d.ts +0 -718
- package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.js +0 -893
- package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.js.map +0 -1
- package/lib/pkg/grpc/scalekit/v1/connections/connections_connect.d.ts +0 -172
- package/lib/pkg/grpc/scalekit/v1/connections/connections_connect.js +0 -180
- package/lib/pkg/grpc/scalekit/v1/connections/connections_connect.js.map +0 -1
- package/lib/pkg/grpc/scalekit/v1/directories/directories_connect.d.ts +0 -154
- package/lib/pkg/grpc/scalekit/v1/directories/directories_connect.js +0 -162
- package/lib/pkg/grpc/scalekit/v1/directories/directories_connect.js.map +0 -1
- package/lib/pkg/grpc/scalekit/v1/domains/domains_connect.d.ts +0 -73
- package/lib/pkg/grpc/scalekit/v1/domains/domains_connect.js +0 -81
- package/lib/pkg/grpc/scalekit/v1/domains/domains_connect.js.map +0 -1
- package/lib/pkg/grpc/scalekit/v1/organizations/organizations_connect.d.ts +0 -171
- package/lib/pkg/grpc/scalekit/v1/organizations/organizations_connect.js +0 -179
- package/lib/pkg/grpc/scalekit/v1/organizations/organizations_connect.js.map +0 -1
- package/lib/pkg/grpc/scalekit/v1/roles/roles_connect.d.ts +0 -250
- package/lib/pkg/grpc/scalekit/v1/roles/roles_connect.js +0 -258
- package/lib/pkg/grpc/scalekit/v1/roles/roles_connect.js.map +0 -1
- package/lib/pkg/grpc/scalekit/v1/sessions/sessions_connect.d.ts +0 -46
- package/lib/pkg/grpc/scalekit/v1/sessions/sessions_connect.js +0 -54
- package/lib/pkg/grpc/scalekit/v1/sessions/sessions_connect.js.map +0 -1
- package/lib/pkg/grpc/scalekit/v1/tools/tools_connect.d.ts +0 -75
- package/lib/pkg/grpc/scalekit/v1/tools/tools_connect.js +0 -83
- package/lib/pkg/grpc/scalekit/v1/tools/tools_connect.js.map +0 -1
- package/lib/pkg/grpc/scalekit/v1/tools/tools_pb.d.ts +0 -431
- package/lib/pkg/grpc/scalekit/v1/tools/tools_pb.js +0 -627
- package/lib/pkg/grpc/scalekit/v1/tools/tools_pb.js.map +0 -1
- package/lib/pkg/grpc/scalekit/v1/users/users_connect.d.ts +0 -173
- package/lib/pkg/grpc/scalekit/v1/users/users_connect.js +0 -181
- package/lib/pkg/grpc/scalekit/v1/users/users_connect.js.map +0 -1
- package/lib/tools.d.ts +0 -75
- package/lib/tools.js +0 -127
- package/lib/tools.js.map +0 -1
- package/src/auth.ts +0 -99
- package/src/connect.ts +0 -33
- package/src/connected-accounts.ts +0 -358
- package/src/connection.ts +0 -267
- package/src/constants/user.ts +0 -22
- package/src/core.ts +0 -139
- package/src/directory.ts +0 -431
- package/src/domain.ts +0 -272
- package/src/errors/base-exception.ts +0 -262
- package/src/errors/index.ts +0 -3
- package/src/errors/specific-exceptions.ts +0 -88
- package/src/index.ts +0 -10
- package/src/organization.ts +0 -568
- package/src/passwordless.ts +0 -138
- package/src/permission.ts +0 -310
- package/src/pkg/grpc/scalekit/v1/auditlogs/auditlogs_connect.ts +0 -26
- package/src/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.ts +0 -342
- package/src/pkg/grpc/scalekit/v1/auth/auth_connect.ts +0 -125
- package/src/pkg/grpc/scalekit/v1/auth/auth_pb.ts +0 -1213
- package/src/pkg/grpc/scalekit/v1/auth/passwordless_connect.ts +0 -44
- package/src/pkg/grpc/scalekit/v1/auth/passwordless_pb.ts +0 -336
- package/src/pkg/grpc/scalekit/v1/auth/webauthn_connect.ts +0 -89
- package/src/pkg/grpc/scalekit/v1/auth/webauthn_pb.ts +0 -1263
- package/src/pkg/grpc/scalekit/v1/commons/commons_pb.ts +0 -573
- package/src/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_connect.ts +0 -94
- package/src/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.ts +0 -1294
- package/src/pkg/grpc/scalekit/v1/connections/connections_connect.ts +0 -179
- package/src/pkg/grpc/scalekit/v1/connections/connections_pb.ts +0 -3846
- package/src/pkg/grpc/scalekit/v1/directories/directories_connect.ts +0 -161
- package/src/pkg/grpc/scalekit/v1/directories/directories_pb.ts +0 -2119
- package/src/pkg/grpc/scalekit/v1/domains/domains_connect.ts +0 -80
- package/src/pkg/grpc/scalekit/v1/domains/domains_pb.ts +0 -855
- package/src/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.ts +0 -524
- package/src/pkg/grpc/scalekit/v1/options/options_pb.ts +0 -230
- package/src/pkg/grpc/scalekit/v1/organizations/organizations_connect.ts +0 -178
- package/src/pkg/grpc/scalekit/v1/organizations/organizations_pb.ts +0 -1766
- package/src/pkg/grpc/scalekit/v1/roles/roles_connect.ts +0 -257
- package/src/pkg/grpc/scalekit/v1/roles/roles_pb.ts +0 -2395
- package/src/pkg/grpc/scalekit/v1/sessions/sessions_connect.ts +0 -53
- package/src/pkg/grpc/scalekit/v1/sessions/sessions_pb.ts +0 -749
- package/src/pkg/grpc/scalekit/v1/tools/tools_connect.ts +0 -82
- package/src/pkg/grpc/scalekit/v1/tools/tools_pb.ts +0 -847
- package/src/pkg/grpc/scalekit/v1/users/users_connect.ts +0 -180
- package/src/pkg/grpc/scalekit/v1/users/users_pb.ts +0 -2151
- package/src/role.ts +0 -461
- package/src/scalekit.ts +0 -809
- package/src/session.ts +0 -337
- package/src/tools.ts +0 -166
- package/src/types/auth.ts +0 -73
- package/src/types/organization.ts +0 -12
- package/src/types/scalekit.ts +0 -50
- package/src/types/user.ts +0 -21
- package/src/user.ts +0 -825
- package/src/webauthn.ts +0 -98
- package/tests/README.md +0 -25
- package/tests/connected-accounts.test.ts +0 -472
- package/tests/connection.test.ts +0 -42
- package/tests/directory.test.ts +0 -46
- package/tests/domain.test.ts +0 -293
- package/tests/organization.test.ts +0 -81
- package/tests/passwordless.test.ts +0 -108
- package/tests/permission.test.ts +0 -399
- package/tests/role.test.ts +0 -323
- package/tests/scalekit.test.ts +0 -104
- package/tests/setup.ts +0 -34
- package/tests/tools.test.ts +0 -239
- package/tests/users.test.ts +0 -168
- package/tests/utils/test-data.ts +0 -481
- package/tsconfig.json +0 -19
package/tests/users.test.ts
DELETED
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
import ScalekitClient from '../src/scalekit';
|
|
2
|
-
import { CreateUserRequest, UpdateUserRequest } from '../src/types/user';
|
|
3
|
-
import { describe, it, expect, beforeEach, afterEach } from '@jest/globals';
|
|
4
|
-
import { TestDataGenerator, TestOrganizationManager, TestUserManager } from './utils/test-data';
|
|
5
|
-
|
|
6
|
-
describe('Users', () => {
|
|
7
|
-
let client: ScalekitClient;
|
|
8
|
-
let testOrg: string;
|
|
9
|
-
let userId: string | null = null;
|
|
10
|
-
let sharedUserData: CreateUserRequest;
|
|
11
|
-
|
|
12
|
-
beforeEach(async () => {
|
|
13
|
-
// Use global client
|
|
14
|
-
client = global.client;
|
|
15
|
-
|
|
16
|
-
// Create test organization for each test
|
|
17
|
-
testOrg = await TestOrganizationManager.createTestOrganization(client);
|
|
18
|
-
|
|
19
|
-
// Create a shared user for testing
|
|
20
|
-
sharedUserData = TestDataGenerator.generateUserData();
|
|
21
|
-
const createResponse = await client.user.createUserAndMembership(testOrg, sharedUserData);
|
|
22
|
-
userId = createResponse.user?.id || null;
|
|
23
|
-
expect(userId).toBeDefined();
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
afterEach(async () => {
|
|
27
|
-
// Clean up test resources
|
|
28
|
-
if (userId) {
|
|
29
|
-
await TestUserManager.cleanupTestUser(client, testOrg, userId);
|
|
30
|
-
userId = null;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// Clean up test organization
|
|
34
|
-
await TestOrganizationManager.cleanupTestOrganization(client, testOrg);
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
describe('listOrganizationUsers', () => {
|
|
38
|
-
it('should list users by organization', async () => {
|
|
39
|
-
// List users in the organization
|
|
40
|
-
const usersList = await client.user.listOrganizationUsers(testOrg, TestDataGenerator.generatePaginationParams());
|
|
41
|
-
|
|
42
|
-
expect(usersList).toBeDefined();
|
|
43
|
-
expect(usersList.users).toBeDefined();
|
|
44
|
-
expect(Array.isArray(usersList.users)).toBe(true);
|
|
45
|
-
expect(usersList.users.length).toBeGreaterThan(0);
|
|
46
|
-
|
|
47
|
-
// Verify basic user attributes
|
|
48
|
-
const firstUser = usersList.users[0];
|
|
49
|
-
expect(firstUser.id).toBeDefined();
|
|
50
|
-
expect(firstUser.email).toBeDefined();
|
|
51
|
-
expect(firstUser.environmentId).toBeDefined();
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
it('should handle pagination', async () => {
|
|
55
|
-
const firstPage = await client.user.listOrganizationUsers(testOrg, TestDataGenerator.generatePaginationParams(5));
|
|
56
|
-
|
|
57
|
-
expect(firstPage).toBeDefined();
|
|
58
|
-
expect(firstPage.users.length).toBeLessThanOrEqual(5);
|
|
59
|
-
|
|
60
|
-
if (firstPage.nextPageToken) {
|
|
61
|
-
const secondPage = await client.user.listOrganizationUsers(testOrg, {
|
|
62
|
-
pageSize: 5,
|
|
63
|
-
pageToken: firstPage.nextPageToken
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
expect(secondPage).toBeDefined();
|
|
67
|
-
expect(secondPage.users).toBeDefined();
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
describe('getUser', () => {
|
|
73
|
-
it('should get user by ID', async () => {
|
|
74
|
-
// Retrieve the user by ID
|
|
75
|
-
const user = await client.user.getUser(userId!);
|
|
76
|
-
|
|
77
|
-
expect(user).toBeDefined();
|
|
78
|
-
expect(user.user).toBeDefined();
|
|
79
|
-
expect(user.user?.id).toBe(userId);
|
|
80
|
-
expect(user.user?.email).toBe(sharedUserData.email);
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
describe('createUserAndMembership', () => {
|
|
85
|
-
it('should create user and membership', async () => {
|
|
86
|
-
// Create a new user for this specific test
|
|
87
|
-
const userData = TestDataGenerator.generateUserData();
|
|
88
|
-
let newUserId: string | null = null;
|
|
89
|
-
|
|
90
|
-
try {
|
|
91
|
-
const response = await client.user.createUserAndMembership(testOrg, userData);
|
|
92
|
-
|
|
93
|
-
expect(response).toBeDefined();
|
|
94
|
-
expect(response.user).toBeDefined();
|
|
95
|
-
expect(response.user?.id).toBeDefined();
|
|
96
|
-
expect(response.user?.email).toBe(userData.email);
|
|
97
|
-
expect(response.user?.metadata?.source).toBe('test');
|
|
98
|
-
|
|
99
|
-
newUserId = response.user?.id || null;
|
|
100
|
-
} finally {
|
|
101
|
-
// Clean up the new user created in this test
|
|
102
|
-
if (newUserId) {
|
|
103
|
-
await TestUserManager.cleanupTestUser(client, testOrg, newUserId);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
it('should throw error when email is missing', async () => {
|
|
109
|
-
const userData = TestDataGenerator.generateUserData({ email: '' }); // Empty email
|
|
110
|
-
|
|
111
|
-
await expect(
|
|
112
|
-
client.user.createUserAndMembership(testOrg, userData)
|
|
113
|
-
).rejects.toThrow('email is required');
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
it('should throw error when organizationId is missing', async () => {
|
|
117
|
-
const userData = TestDataGenerator.generateUserData({ email: 'test@example.com' });
|
|
118
|
-
|
|
119
|
-
await expect(
|
|
120
|
-
client.user.createUserAndMembership('', userData)
|
|
121
|
-
).rejects.toThrow('organizationId is required');
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
describe('updateUser', () => {
|
|
126
|
-
it('should update user', async () => {
|
|
127
|
-
// Modify the shared user
|
|
128
|
-
const updateData = TestDataGenerator.generateUserUpdateData();
|
|
129
|
-
|
|
130
|
-
const updatedUser = await client.user.updateUser(userId!, updateData);
|
|
131
|
-
|
|
132
|
-
expect(updatedUser).toBeDefined();
|
|
133
|
-
expect(updatedUser.user).toBeDefined();
|
|
134
|
-
expect(updatedUser.user?.id).toBe(userId);
|
|
135
|
-
expect(updatedUser.user?.userProfile?.firstName).toBe('Updated');
|
|
136
|
-
expect(updatedUser.user?.userProfile?.lastName).toBe('Name');
|
|
137
|
-
});
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
describe('resendInvite', () => {
|
|
141
|
-
it('should resend invite to user', async () => {
|
|
142
|
-
// Resend invite to the shared user
|
|
143
|
-
const resendResponse = await client.user.resendInvite(testOrg, userId!);
|
|
144
|
-
|
|
145
|
-
// Verify the response structure
|
|
146
|
-
expect(resendResponse).toBeDefined();
|
|
147
|
-
expect(resendResponse.invite).toBeDefined();
|
|
148
|
-
expect(resendResponse.invite?.userId).toBe(userId);
|
|
149
|
-
expect(resendResponse.invite?.organizationId).toBe(testOrg);
|
|
150
|
-
expect(resendResponse.invite?.status).toBe('PENDING_INVITE');
|
|
151
|
-
expect(resendResponse.invite?.createdAt).toBeDefined();
|
|
152
|
-
expect(resendResponse.invite?.expiresAt).toBeDefined();
|
|
153
|
-
expect(resendResponse.invite?.resentCount).toBe(1);
|
|
154
|
-
});
|
|
155
|
-
|
|
156
|
-
it('should throw error when organizationId is missing', async () => {
|
|
157
|
-
await expect(
|
|
158
|
-
client.user.resendInvite('', userId!)
|
|
159
|
-
).rejects.toThrow('organizationId is required');
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
it('should throw error when userId is missing', async () => {
|
|
163
|
-
await expect(
|
|
164
|
-
client.user.resendInvite(testOrg, '')
|
|
165
|
-
).rejects.toThrow('userId is required');
|
|
166
|
-
});
|
|
167
|
-
});
|
|
168
|
-
});
|
package/tests/utils/test-data.ts
DELETED
|
@@ -1,481 +0,0 @@
|
|
|
1
|
-
import { CreateUserRequest, UpdateUserRequest } from '../../src/types/user';
|
|
2
|
-
import { TemplateType } from '../../src/pkg/grpc/scalekit/v1/auth/passwordless_pb';
|
|
3
|
-
import { DomainType } from '../../src/pkg/grpc/scalekit/v1/domains/domains_pb';
|
|
4
|
-
import { CreateRole, UpdateRole, CreateOrganizationRole } from '../../src/pkg/grpc/scalekit/v1/roles/roles_pb';
|
|
5
|
-
import { CreatePermission } from '../../src/pkg/grpc/scalekit/v1/roles/roles_pb';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Test data generation utilities to reduce redundancy across test files
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
export class TestDataGenerator {
|
|
12
|
-
/**
|
|
13
|
-
* Generate a unique timestamp-based identifier
|
|
14
|
-
*/
|
|
15
|
-
static generateUniqueId(): string {
|
|
16
|
-
// Alphanumeric only (no hyphens), to satisfy backend regex constraints
|
|
17
|
-
const ts = Date.now().toString(36);
|
|
18
|
-
const rnd = Math.random().toString(36).substr(2, 9);
|
|
19
|
-
return `${ts}${rnd}`;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Generate a unique email address for testing
|
|
24
|
-
*/
|
|
25
|
-
static generateUniqueEmail(): string {
|
|
26
|
-
return `test.user.${this.generateUniqueId()}@example.com`;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Generate test organization data
|
|
31
|
-
*/
|
|
32
|
-
static generateOrganizationData() {
|
|
33
|
-
const uniqueId = this.generateUniqueId();
|
|
34
|
-
return {
|
|
35
|
-
name: `Test Org ${uniqueId}`,
|
|
36
|
-
externalId: `ext_org_${uniqueId}`
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Generate test user data
|
|
42
|
-
*/
|
|
43
|
-
static generateUserData(overrides: Partial<CreateUserRequest> = {}): CreateUserRequest {
|
|
44
|
-
const uniqueEmail = this.generateUniqueEmail();
|
|
45
|
-
|
|
46
|
-
return {
|
|
47
|
-
email: uniqueEmail,
|
|
48
|
-
userProfile: {
|
|
49
|
-
firstName: 'Test',
|
|
50
|
-
lastName: 'User'
|
|
51
|
-
},
|
|
52
|
-
metadata: {
|
|
53
|
-
source: 'test'
|
|
54
|
-
},
|
|
55
|
-
...overrides
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Generate test user update data
|
|
61
|
-
*/
|
|
62
|
-
static generateUserUpdateData(overrides: Partial<UpdateUserRequest> = {}): UpdateUserRequest {
|
|
63
|
-
return {
|
|
64
|
-
userProfile: {
|
|
65
|
-
firstName: 'Updated',
|
|
66
|
-
lastName: 'Name'
|
|
67
|
-
},
|
|
68
|
-
...overrides
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Generate test passwordless email data
|
|
74
|
-
*/
|
|
75
|
-
static generatePasswordlessEmailData(overrides: any = {}) {
|
|
76
|
-
return {
|
|
77
|
-
template: TemplateType.SIGNIN,
|
|
78
|
-
state: 'test-state',
|
|
79
|
-
expiresIn: 3600,
|
|
80
|
-
magiclinkAuthUri: 'https://example.com/auth/callback',
|
|
81
|
-
...overrides
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Generate test passwordless email with template variables
|
|
87
|
-
*/
|
|
88
|
-
static generatePasswordlessEmailWithTemplateData(overrides: any = {}) {
|
|
89
|
-
return {
|
|
90
|
-
template: TemplateType.SIGNUP,
|
|
91
|
-
templateVariables: {
|
|
92
|
-
companyName: 'Test Company',
|
|
93
|
-
appName: 'Test App'
|
|
94
|
-
},
|
|
95
|
-
magiclinkAuthUri: 'https://example.com/auth/callback',
|
|
96
|
-
...overrides
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Generate test webhook data for verification
|
|
102
|
-
*/
|
|
103
|
-
static generateWebhookData() {
|
|
104
|
-
const secret = 'whsec_test-secret';
|
|
105
|
-
const payload = '{"test": "data"}';
|
|
106
|
-
const timestamp = Math.floor(Date.now() / 1000).toString();
|
|
107
|
-
const webhookId = 'msg_test_webhook_id';
|
|
108
|
-
|
|
109
|
-
// Generate valid signature for testing
|
|
110
|
-
const crypto = require('crypto');
|
|
111
|
-
const data = `${webhookId}.${timestamp}.${payload}`;
|
|
112
|
-
const hmac = crypto.createHmac('sha256', Buffer.from('test-secret', 'base64'));
|
|
113
|
-
hmac.update(data);
|
|
114
|
-
const computedSignature = hmac.digest('base64');
|
|
115
|
-
const signature = `v1,${computedSignature}`;
|
|
116
|
-
|
|
117
|
-
return {
|
|
118
|
-
secret,
|
|
119
|
-
payload,
|
|
120
|
-
timestamp,
|
|
121
|
-
webhookId,
|
|
122
|
-
signature,
|
|
123
|
-
headers: {
|
|
124
|
-
'webhook-id': webhookId,
|
|
125
|
-
'webhook-timestamp': timestamp,
|
|
126
|
-
'webhook-signature': signature
|
|
127
|
-
}
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Generate test authorization URL options
|
|
133
|
-
*/
|
|
134
|
-
static generateAuthorizationUrlOptions(overrides: any = {}) {
|
|
135
|
-
return {
|
|
136
|
-
scopes: ['openid', 'profile'],
|
|
137
|
-
state: 'test-state',
|
|
138
|
-
nonce: 'test-nonce',
|
|
139
|
-
prompt: 'login',
|
|
140
|
-
...overrides
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* Generate test PKCE parameters
|
|
146
|
-
*/
|
|
147
|
-
static generatePKCEParams() {
|
|
148
|
-
return {
|
|
149
|
-
codeChallenge: 'test-challenge',
|
|
150
|
-
codeChallengeMethod: 'S256'
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Generate test pagination parameters
|
|
156
|
-
*/
|
|
157
|
-
static generatePaginationParams(pageSize: number = 10) {
|
|
158
|
-
return {
|
|
159
|
-
pageSize,
|
|
160
|
-
pageToken: ''
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
/**
|
|
165
|
-
* Generate test credential data for passwordless verification
|
|
166
|
-
*/
|
|
167
|
-
static generateCredentialData(type: 'code' | 'linkToken' = 'code') {
|
|
168
|
-
if (type === 'code') {
|
|
169
|
-
return { code: 'mock-code' };
|
|
170
|
-
} else {
|
|
171
|
-
return { linkToken: 'mock-link-token' };
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
/**
|
|
176
|
-
* Generate test domain data
|
|
177
|
-
*/
|
|
178
|
-
static generateDomainData(domainType?: 'allowed' | 'organization') {
|
|
179
|
-
const uniqueId = this.generateUniqueId();
|
|
180
|
-
const baseDomain = `test-domain-${uniqueId}.com`;
|
|
181
|
-
|
|
182
|
-
return {
|
|
183
|
-
domain: baseDomain,
|
|
184
|
-
domainType: domainType === 'allowed' ? 'ALLOWED_EMAIL_DOMAIN' :
|
|
185
|
-
domainType === 'organization' ? 'ORGANIZATION_DOMAIN' : undefined
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
/**
|
|
190
|
-
* Generate unique domain name for testing
|
|
191
|
-
*/
|
|
192
|
-
static generateUniqueDomainName(prefix: string = 'test'): string {
|
|
193
|
-
const uniqueId = this.generateUniqueId();
|
|
194
|
-
return `${prefix}-${uniqueId}.com`;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
/**
|
|
198
|
-
* Generate test role data
|
|
199
|
-
*/
|
|
200
|
-
static generateRoleData(overrides: Partial<CreateRole> = {}): CreateRole {
|
|
201
|
-
const uniqueId = this.generateUniqueId();
|
|
202
|
-
|
|
203
|
-
return new CreateRole({
|
|
204
|
-
name: `test_role_${uniqueId}`,
|
|
205
|
-
displayName: `Test Role ${uniqueId}`,
|
|
206
|
-
description: `Test role description ${uniqueId}`,
|
|
207
|
-
permissions: [], // Initialize empty permissions array
|
|
208
|
-
...overrides
|
|
209
|
-
});
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
/**
|
|
213
|
-
* Generate test role update data
|
|
214
|
-
*/
|
|
215
|
-
static generateRoleUpdateData(overrides: Partial<UpdateRole> = {}): UpdateRole {
|
|
216
|
-
const uniqueId = this.generateUniqueId();
|
|
217
|
-
|
|
218
|
-
return new UpdateRole({
|
|
219
|
-
displayName: `Updated Role ${uniqueId}`,
|
|
220
|
-
description: `Updated role description ${uniqueId}`,
|
|
221
|
-
...overrides
|
|
222
|
-
});
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
/**
|
|
226
|
-
* Generate test organization role data
|
|
227
|
-
*/
|
|
228
|
-
static generateOrganizationRoleData(overrides: Partial<CreateOrganizationRole> = {}): CreateOrganizationRole {
|
|
229
|
-
const uniqueId = this.generateUniqueId();
|
|
230
|
-
|
|
231
|
-
return new CreateOrganizationRole({
|
|
232
|
-
name: `test_org_role_${uniqueId}`,
|
|
233
|
-
displayName: `Test Organization Role ${uniqueId}`,
|
|
234
|
-
description: `Test organization role description ${uniqueId}`,
|
|
235
|
-
permissions: [], // Initialize empty permissions array
|
|
236
|
-
...overrides
|
|
237
|
-
});
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
/**
|
|
241
|
-
* Generate test permission data
|
|
242
|
-
*/
|
|
243
|
-
static generatePermissionData(overrides: Partial<CreatePermission> = {}): CreatePermission {
|
|
244
|
-
const uniqueId = this.generateUniqueId();
|
|
245
|
-
|
|
246
|
-
return new CreatePermission({
|
|
247
|
-
name: `test_permission_${uniqueId}`,
|
|
248
|
-
description: `Test permission description ${uniqueId}`,
|
|
249
|
-
...overrides
|
|
250
|
-
});
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
/**
|
|
255
|
-
* Test organization management utilities
|
|
256
|
-
*/
|
|
257
|
-
export class TestOrganizationManager {
|
|
258
|
-
/**
|
|
259
|
-
* Create a test organization and return its ID
|
|
260
|
-
*/
|
|
261
|
-
static async createTestOrganization(client: any): Promise<string> {
|
|
262
|
-
const orgData = TestDataGenerator.generateOrganizationData();
|
|
263
|
-
const orgResponse = await client.organization.createOrganization(
|
|
264
|
-
orgData.name,
|
|
265
|
-
{ externalId: orgData.externalId }
|
|
266
|
-
);
|
|
267
|
-
|
|
268
|
-
const testOrg = orgResponse.organization?.id || '';
|
|
269
|
-
if (!testOrg) {
|
|
270
|
-
throw new Error('Failed to create test organization');
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
return testOrg;
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
/**
|
|
277
|
-
* Clean up a test organization
|
|
278
|
-
*/
|
|
279
|
-
static async cleanupTestOrganization(client: any, testOrg: string): Promise<void> {
|
|
280
|
-
if (testOrg) {
|
|
281
|
-
try {
|
|
282
|
-
await client.organization.deleteOrganization(testOrg);
|
|
283
|
-
} catch (error) {
|
|
284
|
-
// Organization may already be deleted
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
/**
|
|
291
|
-
* Test user management utilities
|
|
292
|
-
*/
|
|
293
|
-
export class TestUserManager {
|
|
294
|
-
/**
|
|
295
|
-
* Create a test user and return user data
|
|
296
|
-
*/
|
|
297
|
-
static async createTestUser(client: any, testOrg: string, overrides: Partial<CreateUserRequest> = {}) {
|
|
298
|
-
const userData = TestDataGenerator.generateUserData(overrides);
|
|
299
|
-
const createResponse = await client.user.createUserAndMembership(testOrg, userData);
|
|
300
|
-
const createdUserId = createResponse.user?.id;
|
|
301
|
-
|
|
302
|
-
if (!createdUserId) {
|
|
303
|
-
throw new Error('Failed to create test user');
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
return {
|
|
307
|
-
userId: createdUserId,
|
|
308
|
-
userData,
|
|
309
|
-
response: createResponse
|
|
310
|
-
};
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
/**
|
|
314
|
-
* Clean up a test user
|
|
315
|
-
*/
|
|
316
|
-
static async cleanupTestUser(client: any, testOrg: string, userId: string): Promise<void> {
|
|
317
|
-
if (userId) {
|
|
318
|
-
try {
|
|
319
|
-
// Remove membership if it exists
|
|
320
|
-
await client.user.deleteMembership(testOrg, userId);
|
|
321
|
-
} catch (error) {
|
|
322
|
-
// Membership may not exist
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
try {
|
|
326
|
-
await client.user.deleteUser(userId);
|
|
327
|
-
} catch (error) {
|
|
328
|
-
// User may already be deleted
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
/**
|
|
335
|
-
* Test domain management utilities
|
|
336
|
-
*/
|
|
337
|
-
export class TestDomainManager {
|
|
338
|
-
/**
|
|
339
|
-
* Create a test domain and return domain data
|
|
340
|
-
*/
|
|
341
|
-
static async createTestDomain(client: any, testOrg: string, domainType?: 'allowed' | 'organization') {
|
|
342
|
-
const domainName = TestDataGenerator.generateUniqueDomainName();
|
|
343
|
-
const options = domainType ? {
|
|
344
|
-
domainType: domainType === 'allowed' ? DomainType.ALLOWED_EMAIL_DOMAIN : DomainType.ORGANIZATION_DOMAIN
|
|
345
|
-
} : undefined;
|
|
346
|
-
|
|
347
|
-
const response = await client.domain.createDomain(testOrg, domainName, options);
|
|
348
|
-
const createdDomainId = response.domain?.id;
|
|
349
|
-
|
|
350
|
-
if (!createdDomainId) {
|
|
351
|
-
throw new Error('Failed to create test domain');
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
return {
|
|
355
|
-
domainId: createdDomainId,
|
|
356
|
-
domainName,
|
|
357
|
-
domainType: response.domain?.domainType,
|
|
358
|
-
response
|
|
359
|
-
};
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
/**
|
|
363
|
-
* Clean up a test domain (if domain deletion is supported)
|
|
364
|
-
*/
|
|
365
|
-
static async cleanupTestDomain(client: any, testOrg: string, domainId: string): Promise<void> {
|
|
366
|
-
if (domainId) {
|
|
367
|
-
try {
|
|
368
|
-
// Note: Domain deletion may not be implemented yet
|
|
369
|
-
// await client.domain.deleteDomain(testOrg, domainId);
|
|
370
|
-
} catch (error) {
|
|
371
|
-
// Domain may already be deleted or deletion not supported
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
/**
|
|
378
|
-
* Test role management utilities
|
|
379
|
-
*/
|
|
380
|
-
export class TestRoleManager {
|
|
381
|
-
/**
|
|
382
|
-
* Create a test role and return role data
|
|
383
|
-
*/
|
|
384
|
-
static async createTestRole(client: any, overrides: Partial<CreateRole> = {}) {
|
|
385
|
-
const roleData = TestDataGenerator.generateRoleData(overrides);
|
|
386
|
-
const response = await client.role.createRole(roleData);
|
|
387
|
-
const createdRoleName = response.role?.name;
|
|
388
|
-
|
|
389
|
-
if (!createdRoleName) {
|
|
390
|
-
throw new Error('Failed to create test role');
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
return {
|
|
394
|
-
roleName: createdRoleName,
|
|
395
|
-
roleData,
|
|
396
|
-
response
|
|
397
|
-
};
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
/**
|
|
401
|
-
* Clean up a test role
|
|
402
|
-
*/
|
|
403
|
-
static async cleanupTestRole(client: any, roleName: string): Promise<void> {
|
|
404
|
-
if (roleName) {
|
|
405
|
-
try {
|
|
406
|
-
await client.role.deleteRole(roleName);
|
|
407
|
-
} catch (error) {
|
|
408
|
-
// Role may already be deleted
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
|
|
413
|
-
/**
|
|
414
|
-
* Create a test organization role and return role data
|
|
415
|
-
*/
|
|
416
|
-
static async createTestOrganizationRole(client: any, testOrg: string, overrides: Partial<CreateOrganizationRole> = {}) {
|
|
417
|
-
const roleData = TestDataGenerator.generateOrganizationRoleData(overrides);
|
|
418
|
-
const response = await client.role.createOrganizationRole(testOrg, roleData);
|
|
419
|
-
const createdRoleName = response.role?.name;
|
|
420
|
-
|
|
421
|
-
if (!createdRoleName) {
|
|
422
|
-
throw new Error('Failed to create test organization role');
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
return {
|
|
426
|
-
roleName: createdRoleName,
|
|
427
|
-
roleData,
|
|
428
|
-
response
|
|
429
|
-
};
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
/**
|
|
433
|
-
* Clean up a test organization role
|
|
434
|
-
*/
|
|
435
|
-
static async cleanupTestOrganizationRole(client: any, testOrg: string, roleName: string): Promise<void> {
|
|
436
|
-
if (roleName) {
|
|
437
|
-
try {
|
|
438
|
-
await client.role.deleteOrganizationRole(testOrg, roleName);
|
|
439
|
-
} catch (error) {
|
|
440
|
-
// Role may already be deleted
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
/**
|
|
447
|
-
* Test permission management utilities
|
|
448
|
-
*/
|
|
449
|
-
export class TestPermissionManager {
|
|
450
|
-
/**
|
|
451
|
-
* Create a test permission and return permission data
|
|
452
|
-
*/
|
|
453
|
-
static async createTestPermission(client: any, overrides: Partial<CreatePermission> = {}) {
|
|
454
|
-
const permissionData = TestDataGenerator.generatePermissionData(overrides);
|
|
455
|
-
const response = await client.permission.createPermission(permissionData);
|
|
456
|
-
const createdPermissionName = response.permission?.name;
|
|
457
|
-
|
|
458
|
-
if (!createdPermissionName) {
|
|
459
|
-
throw new Error('Failed to create test permission');
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
return {
|
|
463
|
-
permissionName: createdPermissionName,
|
|
464
|
-
permissionData,
|
|
465
|
-
response
|
|
466
|
-
};
|
|
467
|
-
}
|
|
468
|
-
|
|
469
|
-
/**
|
|
470
|
-
* Clean up a test permission
|
|
471
|
-
*/
|
|
472
|
-
static async cleanupTestPermission(client: any, permissionName: string): Promise<void> {
|
|
473
|
-
if (permissionName) {
|
|
474
|
-
try {
|
|
475
|
-
await client.permission.deletePermission(permissionName);
|
|
476
|
-
} catch (error) {
|
|
477
|
-
// Permission may already be deleted
|
|
478
|
-
}
|
|
479
|
-
}
|
|
480
|
-
}
|
|
481
|
-
}
|
package/tsconfig.json
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"noImplicitAny": false,
|
|
4
|
-
"target": "ES6",
|
|
5
|
-
"lib": ["ES2020"],
|
|
6
|
-
"module": "commonjs",
|
|
7
|
-
"declaration": true,
|
|
8
|
-
"strictNullChecks": true,
|
|
9
|
-
"strictPropertyInitialization": true,
|
|
10
|
-
"outDir": "lib",
|
|
11
|
-
"strict": true,
|
|
12
|
-
"sourceMap": true,
|
|
13
|
-
"skipLibCheck": true,
|
|
14
|
-
"esModuleInterop": true,
|
|
15
|
-
"typeRoots": ["src/types", "node_modules/@types"],
|
|
16
|
-
"moduleResolution": "Node"
|
|
17
|
-
},
|
|
18
|
-
"include": ["src"],
|
|
19
|
-
}
|