@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/src/passwordless.ts
DELETED
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import { PromiseClient } from '@connectrpc/connect';
|
|
2
|
-
import GrpcConnect from './connect';
|
|
3
|
-
import CoreClient from './core';
|
|
4
|
-
import { PasswordlessService } from './pkg/grpc/scalekit/v1/auth/passwordless_connect';
|
|
5
|
-
import {
|
|
6
|
-
SendPasswordlessResponse,
|
|
7
|
-
VerifyPasswordLessResponse,
|
|
8
|
-
TemplateType,
|
|
9
|
-
SendPasswordlessRequest,
|
|
10
|
-
VerifyPasswordLessRequest
|
|
11
|
-
} from './pkg/grpc/scalekit/v1/auth/passwordless_pb';
|
|
12
|
-
|
|
13
|
-
export default class PasswordlessClient {
|
|
14
|
-
private client: PromiseClient<typeof PasswordlessService>;
|
|
15
|
-
constructor(
|
|
16
|
-
private readonly grpcConncet: GrpcConnect,
|
|
17
|
-
private readonly coreClient: CoreClient
|
|
18
|
-
) {
|
|
19
|
-
this.client = this.grpcConncet.createClient(PasswordlessService);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Send a passwordless authentication email
|
|
24
|
-
* @param {string} email The email address to send the passwordless link to
|
|
25
|
-
* @param {object} options The options for sending the passwordless email
|
|
26
|
-
* @param {TemplateType} options.template The template type (SIGNIN/SIGNUP)
|
|
27
|
-
* @param {string} options.state Optional state parameter to maintain state between request and callback
|
|
28
|
-
* @param {string} options.magiclinkAuthUri Optional auth URI for magic link authentication
|
|
29
|
-
* @param {number} options.expiresIn Optional expiration time in seconds (default: 3600)
|
|
30
|
-
* @param {object} options.templateVariables Optional template variables
|
|
31
|
-
* @returns {Promise<SendPasswordlessResponse>} The response containing:
|
|
32
|
-
* - authRequestId: Unique identifier for the passwordless authentication request
|
|
33
|
-
* - expiresAt: Expiration time in seconds since epoch
|
|
34
|
-
* - expiresIn: Expiration time in seconds
|
|
35
|
-
* - passwordlessType: Type of passwordless authentication (OTP/LINK/LINK_OTP)
|
|
36
|
-
*/
|
|
37
|
-
async sendPasswordlessEmail(
|
|
38
|
-
email: string,
|
|
39
|
-
options?: {
|
|
40
|
-
template?: TemplateType;
|
|
41
|
-
state?: string;
|
|
42
|
-
magiclinkAuthUri?: string;
|
|
43
|
-
expiresIn?: number;
|
|
44
|
-
templateVariables?: Record<string, string>;
|
|
45
|
-
}
|
|
46
|
-
): Promise<SendPasswordlessResponse> {
|
|
47
|
-
if (!email || typeof email !== 'string') {
|
|
48
|
-
throw new Error('Email must be a valid string');
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
let templateValue: TemplateType | undefined;
|
|
52
|
-
if (options?.template) {
|
|
53
|
-
if (typeof options.template === 'string') {
|
|
54
|
-
templateValue = TemplateType[options.template as keyof typeof TemplateType];
|
|
55
|
-
if (templateValue === undefined) {
|
|
56
|
-
throw new Error('Invalid template type');
|
|
57
|
-
}
|
|
58
|
-
} else {
|
|
59
|
-
templateValue = options.template;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
if (options?.state && typeof options.state !== 'string') {
|
|
64
|
-
throw new Error('State must be a string');
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
if (options?.magiclinkAuthUri && typeof options.magiclinkAuthUri !== 'string') {
|
|
68
|
-
throw new Error('Magic link auth URI must be a string');
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
const request: SendPasswordlessRequest = new SendPasswordlessRequest({
|
|
72
|
-
email,
|
|
73
|
-
template: templateValue,
|
|
74
|
-
state: options?.state,
|
|
75
|
-
magiclinkAuthUri: options?.magiclinkAuthUri,
|
|
76
|
-
expiresIn: options?.expiresIn,
|
|
77
|
-
templateVariables: options?.templateVariables || {}
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
return this.coreClient.connectExec(
|
|
81
|
-
this.client.sendPasswordlessEmail,
|
|
82
|
-
request
|
|
83
|
-
);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Verify a passwordless authentication code or link token
|
|
88
|
-
* @param {object} credential The credential to verify
|
|
89
|
-
* @param {string} credential.code The one-time code received via email
|
|
90
|
-
* @param {string} credential.linkToken The link token received via email
|
|
91
|
-
* @param {string} [authRequestId] Optional auth request ID from the send response
|
|
92
|
-
* @returns {Promise<VerifyPasswordLessResponse>} The response containing:
|
|
93
|
-
* - email: The email address that was verified
|
|
94
|
-
* - state: Optional state parameter that was passed in the send request
|
|
95
|
-
* - template: The template type used for the authentication
|
|
96
|
-
* - passwordlessType: Type of passwordless authentication used
|
|
97
|
-
*/
|
|
98
|
-
async verifyPasswordlessEmail(
|
|
99
|
-
credential: { code?: string; linkToken?: string },
|
|
100
|
-
authRequestId?: string
|
|
101
|
-
): Promise<VerifyPasswordLessResponse> {
|
|
102
|
-
if (!credential.code && !credential.linkToken) {
|
|
103
|
-
throw new Error('Either code or linkToken must be provided');
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
const request = new VerifyPasswordLessRequest({
|
|
107
|
-
authRequestId,
|
|
108
|
-
authCredential: credential.code
|
|
109
|
-
? { case: "code", value: credential.code }
|
|
110
|
-
: { case: "linkToken", value: credential.linkToken! }
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
return this.coreClient.connectExec(
|
|
114
|
-
this.client.verifyPasswordlessEmail,
|
|
115
|
-
request
|
|
116
|
-
);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* Resend a passwordless authentication email
|
|
121
|
-
* @param {string} authRequestId The auth request ID from the original send response
|
|
122
|
-
* @returns {Promise<SendPasswordlessResponse>} The response containing:
|
|
123
|
-
* - authRequestId: New unique identifier for the passwordless authentication request
|
|
124
|
-
* - expiresAt: New expiration time in seconds since epoch
|
|
125
|
-
* - expiresIn: New expiration time in seconds
|
|
126
|
-
* - passwordlessType: Type of passwordless authentication (OTP/LINK/LINK_OTP)
|
|
127
|
-
*/
|
|
128
|
-
async resendPasswordlessEmail(
|
|
129
|
-
authRequestId: string
|
|
130
|
-
): Promise<SendPasswordlessResponse> {
|
|
131
|
-
return this.coreClient.connectExec(
|
|
132
|
-
this.client.resendPasswordlessEmail,
|
|
133
|
-
{
|
|
134
|
-
authRequestId
|
|
135
|
-
}
|
|
136
|
-
);
|
|
137
|
-
}
|
|
138
|
-
}
|
package/src/permission.ts
DELETED
|
@@ -1,310 +0,0 @@
|
|
|
1
|
-
import { Empty, PartialMessage } from "@bufbuild/protobuf";
|
|
2
|
-
import { PromiseClient } from "@connectrpc/connect";
|
|
3
|
-
import GrpcConnect from "./connect";
|
|
4
|
-
import CoreClient from "./core";
|
|
5
|
-
import { RolesService } from "./pkg/grpc/scalekit/v1/roles/roles_connect";
|
|
6
|
-
import {
|
|
7
|
-
CreatePermissionRequest,
|
|
8
|
-
CreatePermissionResponse,
|
|
9
|
-
GetPermissionRequest,
|
|
10
|
-
GetPermissionResponse,
|
|
11
|
-
UpdatePermissionRequest,
|
|
12
|
-
UpdatePermissionResponse,
|
|
13
|
-
ListPermissionsRequest,
|
|
14
|
-
ListPermissionsResponse,
|
|
15
|
-
DeletePermissionRequest,
|
|
16
|
-
ListRolePermissionsRequest,
|
|
17
|
-
ListRolePermissionsResponse,
|
|
18
|
-
AddPermissionsToRoleRequest,
|
|
19
|
-
AddPermissionsToRoleResponse,
|
|
20
|
-
RemovePermissionFromRoleRequest,
|
|
21
|
-
ListEffectiveRolePermissionsRequest,
|
|
22
|
-
ListEffectiveRolePermissionsResponse,
|
|
23
|
-
CreatePermission,
|
|
24
|
-
} from "./pkg/grpc/scalekit/v1/roles/roles_pb";
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Client for managing permissions and role-permission assignments.
|
|
28
|
-
*
|
|
29
|
-
* Permissions represent granular access controls defining specific actions users can perform
|
|
30
|
-
* on resources (e.g., 'read:documents', 'write:settings', 'delete:users'). This client provides
|
|
31
|
-
* comprehensive permission management including CRUD operations and role assignment.
|
|
32
|
-
*
|
|
33
|
-
* **Key Concepts:**
|
|
34
|
-
* - **Direct Permissions**: Explicitly assigned to a role
|
|
35
|
-
* - **Effective Permissions**: Direct + inherited from parent roles through hierarchy
|
|
36
|
-
* - **Permission Format**: 'action:resource' (e.g., 'read:invoices', 'admin:users')
|
|
37
|
-
*
|
|
38
|
-
* @example
|
|
39
|
-
* const scalekitClient = new ScalekitClient(envUrl, clientId, clientSecret);
|
|
40
|
-
* const permissionClient = scalekitClient.permission;
|
|
41
|
-
*
|
|
42
|
-
* @see {@link https://docs.scalekit.com/apis/#tag/permissions | Permission API Documentation}
|
|
43
|
-
*/
|
|
44
|
-
export default class PermissionClient {
|
|
45
|
-
private client: PromiseClient<typeof RolesService>;
|
|
46
|
-
|
|
47
|
-
constructor(
|
|
48
|
-
private readonly grpcConnect: GrpcConnect,
|
|
49
|
-
private readonly coreClient: CoreClient
|
|
50
|
-
) {
|
|
51
|
-
this.client = this.grpcConnect.createClient(RolesService);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Creates a new permission defining a specific action users can perform.
|
|
56
|
-
*
|
|
57
|
-
* Permissions represent granular access controls following the 'action:resource' format.
|
|
58
|
-
* Use this to define the building blocks of your access control system.
|
|
59
|
-
*
|
|
60
|
-
* @param {CreatePermission} permission - Permission object containing:
|
|
61
|
-
* - name: Permission identifier in 'action:resource' format (e.g., 'read:documents', 'write:settings')
|
|
62
|
-
* - description: Optional explanation of what this permission grants
|
|
63
|
-
*
|
|
64
|
-
* @returns {Promise<CreatePermissionResponse>} Created permission with ID and timestamps
|
|
65
|
-
*
|
|
66
|
-
* @example
|
|
67
|
-
* // Create basic permissions
|
|
68
|
-
* await scalekitClient.permission.createPermission({
|
|
69
|
-
* name: 'read:invoices',
|
|
70
|
-
* description: 'View invoice details'
|
|
71
|
-
* });
|
|
72
|
-
|
|
73
|
-
*
|
|
74
|
-
* @see {@link https://docs.scalekit.com/apis/#tag/permissions | Create Permission API}
|
|
75
|
-
*/
|
|
76
|
-
async createPermission(
|
|
77
|
-
permission: CreatePermission
|
|
78
|
-
): Promise<CreatePermissionResponse> {
|
|
79
|
-
return this.coreClient.connectExec(this.client.createPermission, {
|
|
80
|
-
permission,
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Retrieves complete information for a specific permission.
|
|
86
|
-
*
|
|
87
|
-
* @param {string} permissionName - Permission identifier (e.g., 'read:documents')
|
|
88
|
-
*
|
|
89
|
-
* @returns {Promise<GetPermissionResponse>} Permission details including description and timestamps
|
|
90
|
-
*
|
|
91
|
-
* @example
|
|
92
|
-
* const response = await scalekitClient.permission.getPermission('read:invoices');
|
|
93
|
-
* console.log('Description:', response.permission.description);
|
|
94
|
-
*
|
|
95
|
-
* @see {@link https://docs.scalekit.com/apis/#tag/permissions | Get Permission API}
|
|
96
|
-
*/
|
|
97
|
-
async getPermission(permissionName: string): Promise<GetPermissionResponse> {
|
|
98
|
-
return this.coreClient.connectExec(this.client.getPermission, {
|
|
99
|
-
permissionName,
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Lists all permissions with pagination support.
|
|
105
|
-
*
|
|
106
|
-
* View all permission definitions for auditing, role management, or understanding available access controls.
|
|
107
|
-
*
|
|
108
|
-
* @param {string} [pageToken] - Token for retrieving the next page
|
|
109
|
-
* @param {number} [pageSize] - Number of permissions per page (max: 100)
|
|
110
|
-
*
|
|
111
|
-
* @returns {Promise<ListPermissionsResponse>} Paginated list of permissions
|
|
112
|
-
*
|
|
113
|
-
* @example
|
|
114
|
-
* // List all permissions
|
|
115
|
-
* const response = await scalekitClient.permission.listPermissions();
|
|
116
|
-
* response.permissions.forEach(perm => {
|
|
117
|
-
* console.log(`${perm.name}: ${perm.description}`);
|
|
118
|
-
* });
|
|
119
|
-
*
|
|
120
|
-
* @example
|
|
121
|
-
* // Paginate through permissions
|
|
122
|
-
* let pageToken = undefined;
|
|
123
|
-
* do {
|
|
124
|
-
* const response = await scalekitClient.permission.listPermissions(pageToken, 50);
|
|
125
|
-
* // Process permissions
|
|
126
|
-
* pageToken = response.nextPageToken;
|
|
127
|
-
* } while (pageToken);
|
|
128
|
-
*
|
|
129
|
-
* @see {@link https://docs.scalekit.com/apis/#tag/permissions | List Permissions API}
|
|
130
|
-
*/
|
|
131
|
-
async listPermissions(
|
|
132
|
-
pageToken?: string,
|
|
133
|
-
pageSize?: number
|
|
134
|
-
): Promise<ListPermissionsResponse> {
|
|
135
|
-
const request: PartialMessage<ListPermissionsRequest> = {};
|
|
136
|
-
if (pageToken) {
|
|
137
|
-
request.pageToken = pageToken;
|
|
138
|
-
}
|
|
139
|
-
if (pageSize) {
|
|
140
|
-
request.pageSize = pageSize;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
return this.coreClient.connectExec(this.client.listPermissions, request);
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
/**
|
|
147
|
-
* Updates an existing permission's attributes.
|
|
148
|
-
*
|
|
149
|
-
* Note: The permission name itself cannot be changed as it serves as the immutable identifier.
|
|
150
|
-
*
|
|
151
|
-
* @param {string} permissionName - Permission to update
|
|
152
|
-
* @param {CreatePermission} permission - Updated permission properties
|
|
153
|
-
*
|
|
154
|
-
* @returns {Promise<UpdatePermissionResponse>} Updated permission details
|
|
155
|
-
*
|
|
156
|
-
* @example
|
|
157
|
-
* await scalekitClient.permission.updatePermission('read:invoices', {
|
|
158
|
-
* name: 'read:invoices',
|
|
159
|
-
* description: 'View invoice details and history (updated)'
|
|
160
|
-
* });
|
|
161
|
-
*
|
|
162
|
-
* @see {@link https://docs.scalekit.com/apis/#tag/permissions | Update Permission API}
|
|
163
|
-
*/
|
|
164
|
-
async updatePermission(
|
|
165
|
-
permissionName: string,
|
|
166
|
-
permission: CreatePermission
|
|
167
|
-
): Promise<UpdatePermissionResponse> {
|
|
168
|
-
return this.coreClient.connectExec(this.client.updatePermission, {
|
|
169
|
-
permissionName,
|
|
170
|
-
permission,
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* Permanently removes a permission.
|
|
176
|
-
*
|
|
177
|
-
* Ensure no active roles depend on the permission before deletion.
|
|
178
|
-
*
|
|
179
|
-
* @param {string} permissionName - Permission identifier to delete
|
|
180
|
-
*
|
|
181
|
-
* @returns {Promise<Empty>} Empty response on success
|
|
182
|
-
*
|
|
183
|
-
* @example
|
|
184
|
-
* await scalekitClient.permission.deletePermission('deprecated:feature');
|
|
185
|
-
*
|
|
186
|
-
* @see {@link https://docs.scalekit.com/apis/#tag/permissions | Delete Permission API}
|
|
187
|
-
*/
|
|
188
|
-
async deletePermission(permissionName: string): Promise<Empty> {
|
|
189
|
-
return this.coreClient.connectExec(this.client.deletePermission, {
|
|
190
|
-
permissionName,
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
* Lists direct permissions assigned to a role (excluding inherited permissions).
|
|
196
|
-
*
|
|
197
|
-
* Use this to view explicit permission assignments without inheritance from base roles.
|
|
198
|
-
*
|
|
199
|
-
* @param {string} roleName - Role to examine
|
|
200
|
-
*
|
|
201
|
-
* @returns {Promise<ListRolePermissionsResponse>} List of directly assigned permissions only
|
|
202
|
-
*
|
|
203
|
-
* @example
|
|
204
|
-
* const response = await scalekitClient.permission.listRolePermissions('editor');
|
|
205
|
-
* console.log('Direct permissions:', response.permissions);
|
|
206
|
-
*
|
|
207
|
-
* @see {@link https://docs.scalekit.com/apis/#tag/permissions | List Role Permissions API}
|
|
208
|
-
* @see {@link listEffectiveRolePermissions} - Get all permissions including inherited
|
|
209
|
-
*/
|
|
210
|
-
async listRolePermissions(
|
|
211
|
-
roleName: string
|
|
212
|
-
): Promise<ListRolePermissionsResponse> {
|
|
213
|
-
return this.coreClient.connectExec(this.client.listRolePermissions, {
|
|
214
|
-
roleName,
|
|
215
|
-
});
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
/**
|
|
219
|
-
* Grants additional permissions to a role without removing existing assignments.
|
|
220
|
-
*
|
|
221
|
-
* This is an incremental operation that adds new permissions while preserving existing ones.
|
|
222
|
-
* System validates permission existence before assignment.
|
|
223
|
-
*
|
|
224
|
-
* @param {string} roleName - Target role to enhance
|
|
225
|
-
* @param {string[]} permissionNames - Array of permission identifiers to add
|
|
226
|
-
*
|
|
227
|
-
* @returns {Promise<AddPermissionsToRoleResponse>} Updated list of all role permissions
|
|
228
|
-
*
|
|
229
|
-
* @example
|
|
230
|
-
* // Add multiple permissions to a role
|
|
231
|
-
* await scalekitClient.permission.addPermissionsToRole('editor', [
|
|
232
|
-
* 'read:documents',
|
|
233
|
-
* 'write:documents',
|
|
234
|
-
* 'edit:documents'
|
|
235
|
-
* ]);
|
|
236
|
-
*
|
|
237
|
-
* @example
|
|
238
|
-
* // Incrementally add permissions
|
|
239
|
-
* await scalekitClient.permission.addPermissionsToRole('support', ['read:tickets']);
|
|
240
|
-
* await scalekitClient.permission.addPermissionsToRole('support', ['update:tickets']);
|
|
241
|
-
*
|
|
242
|
-
* @see {@link https://docs.scalekit.com/apis/#tag/permissions | Add Permissions to Role API}
|
|
243
|
-
*/
|
|
244
|
-
async addPermissionsToRole(
|
|
245
|
-
roleName: string,
|
|
246
|
-
permissionNames: string[]
|
|
247
|
-
): Promise<AddPermissionsToRoleResponse> {
|
|
248
|
-
return this.coreClient.connectExec(this.client.addPermissionsToRole, {
|
|
249
|
-
roleName,
|
|
250
|
-
permissionNames,
|
|
251
|
-
});
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
/**
|
|
255
|
-
* Revokes a specific permission from a role, restricting access for all assigned users.
|
|
256
|
-
*
|
|
257
|
-
* Only affects direct assignments; doesn't impact inherited permissions from base roles.
|
|
258
|
-
*
|
|
259
|
-
* @param {string} roleName - Role to modify
|
|
260
|
-
* @param {string} permissionName - Permission to remove
|
|
261
|
-
*
|
|
262
|
-
* @returns {Promise<Empty>} Empty response on success
|
|
263
|
-
*
|
|
264
|
-
* @example
|
|
265
|
-
* // Remove delete permission from editor role
|
|
266
|
-
* await scalekitClient.permission.removePermissionFromRole('editor', 'delete:documents');
|
|
267
|
-
*
|
|
268
|
-
* @see {@link https://docs.scalekit.com/apis/#tag/permissions | Remove Permission from Role API}
|
|
269
|
-
*/
|
|
270
|
-
async removePermissionFromRole(
|
|
271
|
-
roleName: string,
|
|
272
|
-
permissionName: string
|
|
273
|
-
): Promise<Empty> {
|
|
274
|
-
return this.coreClient.connectExec(this.client.removePermissionFromRole, {
|
|
275
|
-
roleName,
|
|
276
|
-
permissionName,
|
|
277
|
-
});
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
/**
|
|
281
|
-
* Lists all effective permissions for a role including both direct and inherited permissions.
|
|
282
|
-
*
|
|
283
|
-
* This returns the complete set of capabilities available through the role hierarchy.
|
|
284
|
-
* Essential for understanding the full scope of access granted to users assigned to this role.
|
|
285
|
-
*
|
|
286
|
-
* @param {string} roleName - Role to analyze
|
|
287
|
-
*
|
|
288
|
-
* @returns {Promise<ListEffectiveRolePermissionsResponse>} Complete list including inherited permissions
|
|
289
|
-
*
|
|
290
|
-
* @example
|
|
291
|
-
* // Compare direct vs effective permissions
|
|
292
|
-
* const direct = await scalekitClient.permission.listRolePermissions('senior_editor');
|
|
293
|
-
* const effective = await scalekitClient.permission.listEffectiveRolePermissions('senior_editor');
|
|
294
|
-
*
|
|
295
|
-
* console.log('Direct permissions:', direct.permissions.length);
|
|
296
|
-
* console.log('Total effective permissions:', effective.permissions.length);
|
|
297
|
-
* console.log('Inherited:', effective.permissions.length - direct.permissions.length);
|
|
298
|
-
*
|
|
299
|
-
* @see {@link https://docs.scalekit.com/apis/#tag/permissions | List Effective Role Permissions API}
|
|
300
|
-
* @see {@link listRolePermissions} - Get only direct permissions
|
|
301
|
-
*/
|
|
302
|
-
async listEffectiveRolePermissions(
|
|
303
|
-
roleName: string
|
|
304
|
-
): Promise<ListEffectiveRolePermissionsResponse> {
|
|
305
|
-
return this.coreClient.connectExec(
|
|
306
|
-
this.client.listEffectiveRolePermissions,
|
|
307
|
-
{ roleName }
|
|
308
|
-
);
|
|
309
|
-
}
|
|
310
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
// @generated by protoc-gen-connect-es v1.4.0 with parameter "target=ts"
|
|
2
|
-
// @generated from file scalekit/v1/auditlogs/auditlogs.proto (package scalekit.v1.auditlogs, syntax proto3)
|
|
3
|
-
/* eslint-disable */
|
|
4
|
-
// @ts-nocheck
|
|
5
|
-
|
|
6
|
-
import { ListAuthLogRequest, ListAuthLogResponse } from "./auditlogs_pb.js";
|
|
7
|
-
import { MethodKind } from "@bufbuild/protobuf";
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* @generated from service scalekit.v1.auditlogs.AuditLogsService
|
|
11
|
-
*/
|
|
12
|
-
export const AuditLogsService = {
|
|
13
|
-
typeName: "scalekit.v1.auditlogs.AuditLogsService",
|
|
14
|
-
methods: {
|
|
15
|
-
/**
|
|
16
|
-
* @generated from rpc scalekit.v1.auditlogs.AuditLogsService.ListAuthRequests
|
|
17
|
-
*/
|
|
18
|
-
listAuthRequests: {
|
|
19
|
-
name: "ListAuthRequests",
|
|
20
|
-
I: ListAuthLogRequest,
|
|
21
|
-
O: ListAuthLogResponse,
|
|
22
|
-
kind: MethodKind.Unary,
|
|
23
|
-
},
|
|
24
|
-
}
|
|
25
|
-
} as const;
|
|
26
|
-
|