@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.
Files changed (226) hide show
  1. package/README.md +5 -5
  2. package/{reference.md → REFERENCE.md} +530 -748
  3. package/lib/auth.d.ts +9 -6
  4. package/lib/auth.js +4 -20
  5. package/lib/auth.js.map +1 -1
  6. package/lib/connect.d.ts +3 -3
  7. package/lib/connect.js +1 -2
  8. package/lib/connect.js.map +1 -1
  9. package/lib/connection.d.ts +2 -2
  10. package/lib/connection.js +4 -4
  11. package/lib/connection.js.map +1 -1
  12. package/lib/core.js +2 -2
  13. package/lib/core.js.map +1 -1
  14. package/lib/directory.d.ts +2 -2
  15. package/lib/directory.js +7 -7
  16. package/lib/directory.js.map +1 -1
  17. package/lib/domain.d.ts +6 -5
  18. package/lib/domain.js +4 -5
  19. package/lib/domain.js.map +1 -1
  20. package/lib/errors/base-exception.d.ts +1 -1
  21. package/lib/errors/base-exception.js +1 -1
  22. package/lib/errors/base-exception.js.map +1 -1
  23. package/lib/organization.d.ts +10 -9
  24. package/lib/organization.js +11 -9
  25. package/lib/organization.js.map +1 -1
  26. package/lib/passwordless.d.ts +2 -2
  27. package/lib/passwordless.js +8 -7
  28. package/lib/passwordless.js.map +1 -1
  29. package/lib/permission.d.ts +6 -5
  30. package/lib/permission.js +10 -11
  31. package/lib/permission.js.map +1 -1
  32. package/lib/pkg/grpc/buf/validate/validate_pb.d.ts +7 -0
  33. package/lib/pkg/grpc/buf/validate/validate_pb.js +25 -0
  34. package/lib/pkg/grpc/buf/validate/validate_pb.js.map +1 -0
  35. package/lib/pkg/grpc/google/api/annotations_pb.d.ts +7 -0
  36. package/lib/pkg/grpc/google/api/annotations_pb.js +25 -0
  37. package/lib/pkg/grpc/google/api/annotations_pb.js.map +1 -0
  38. package/lib/pkg/grpc/google/api/field_behavior_pb.d.ts +7 -0
  39. package/lib/pkg/grpc/google/api/field_behavior_pb.js +25 -0
  40. package/lib/pkg/grpc/google/api/field_behavior_pb.js.map +1 -0
  41. package/lib/pkg/grpc/google/api/visibility_pb.d.ts +7 -0
  42. package/lib/pkg/grpc/google/api/visibility_pb.js +25 -0
  43. package/lib/pkg/grpc/google/api/visibility_pb.js.map +1 -0
  44. package/lib/pkg/grpc/protoc-gen-openapiv2/options/annotations_pb.d.ts +7 -0
  45. package/lib/pkg/grpc/protoc-gen-openapiv2/options/annotations_pb.js +25 -0
  46. package/lib/pkg/grpc/protoc-gen-openapiv2/options/annotations_pb.js.map +1 -0
  47. package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.d.ts +48 -42
  48. package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.js +27 -263
  49. package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.js.map +1 -1
  50. package/lib/pkg/grpc/scalekit/v1/auth/auth_pb.d.ts +371 -325
  51. package/lib/pkg/grpc/scalekit/v1/auth/auth_pb.js +132 -835
  52. package/lib/pkg/grpc/scalekit/v1/auth/auth_pb.js.map +1 -1
  53. package/lib/pkg/grpc/scalekit/v1/auth/passwordless_pb.d.ts +113 -87
  54. package/lib/pkg/grpc/scalekit/v1/auth/passwordless_pb.js +45 -201
  55. package/lib/pkg/grpc/scalekit/v1/auth/passwordless_pb.js.map +1 -1
  56. package/lib/pkg/grpc/scalekit/v1/auth/webauthn_pb.d.ts +262 -265
  57. package/lib/pkg/grpc/scalekit/v1/auth/webauthn_pb.js +92 -938
  58. package/lib/pkg/grpc/scalekit/v1/auth/webauthn_pb.js.map +1 -1
  59. package/lib/pkg/grpc/scalekit/v1/commons/commons_pb.d.ts +162 -157
  60. package/lib/pkg/grpc/scalekit/v1/commons/commons_pb.js +42 -313
  61. package/lib/pkg/grpc/scalekit/v1/commons/commons_pb.js.map +1 -1
  62. package/lib/pkg/grpc/scalekit/v1/connections/connections_pb.d.ts +1488 -1459
  63. package/lib/pkg/grpc/scalekit/v1/connections/connections_pb.js +353 -2362
  64. package/lib/pkg/grpc/scalekit/v1/connections/connections_pb.js.map +1 -1
  65. package/lib/pkg/grpc/scalekit/v1/directories/directories_pb.d.ts +520 -483
  66. package/lib/pkg/grpc/scalekit/v1/directories/directories_pb.js +224 -1555
  67. package/lib/pkg/grpc/scalekit/v1/directories/directories_pb.js.map +1 -1
  68. package/lib/pkg/grpc/scalekit/v1/domains/domains_pb.d.ts +219 -191
  69. package/lib/pkg/grpc/scalekit/v1/domains/domains_pb.js +96 -553
  70. package/lib/pkg/grpc/scalekit/v1/domains/domains_pb.js.map +1 -1
  71. package/lib/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.d.ts +76 -102
  72. package/lib/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.js +37 -393
  73. package/lib/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.js.map +1 -1
  74. package/lib/pkg/grpc/scalekit/v1/options/options_pb.d.ts +36 -26
  75. package/lib/pkg/grpc/scalekit/v1/options/options_pb.js +20 -69
  76. package/lib/pkg/grpc/scalekit/v1/options/options_pb.js.map +1 -1
  77. package/lib/pkg/grpc/scalekit/v1/organizations/organizations_pb.d.ts +447 -400
  78. package/lib/pkg/grpc/scalekit/v1/organizations/organizations_pb.js +163 -1238
  79. package/lib/pkg/grpc/scalekit/v1/organizations/organizations_pb.js.map +1 -1
  80. package/lib/pkg/grpc/scalekit/v1/roles/roles_pb.d.ts +622 -556
  81. package/lib/pkg/grpc/scalekit/v1/roles/roles_pb.js +201 -1718
  82. package/lib/pkg/grpc/scalekit/v1/roles/roles_pb.js.map +1 -1
  83. package/lib/pkg/grpc/scalekit/v1/sessions/sessions_pb.d.ts +135 -132
  84. package/lib/pkg/grpc/scalekit/v1/sessions/sessions_pb.js +55 -518
  85. package/lib/pkg/grpc/scalekit/v1/sessions/sessions_pb.js.map +1 -1
  86. package/lib/pkg/grpc/scalekit/v1/users/users_pb.d.ts +445 -413
  87. package/lib/pkg/grpc/scalekit/v1/users/users_pb.js +142 -1490
  88. package/lib/pkg/grpc/scalekit/v1/users/users_pb.js.map +1 -1
  89. package/lib/role.d.ts +8 -7
  90. package/lib/role.js +14 -14
  91. package/lib/role.js.map +1 -1
  92. package/lib/scalekit.d.ts +0 -4
  93. package/lib/scalekit.js +0 -4
  94. package/lib/scalekit.js.map +1 -1
  95. package/lib/session.js +15 -24
  96. package/lib/session.js.map +1 -1
  97. package/lib/user.d.ts +6 -5
  98. package/lib/user.js +17 -20
  99. package/lib/user.js.map +1 -1
  100. package/lib/webauthn.js +6 -5
  101. package/lib/webauthn.js.map +1 -1
  102. package/package.json +12 -10
  103. package/.github/dependabot.yml +0 -10
  104. package/.nvmrc +0 -1
  105. package/buf.gen.yaml +0 -24
  106. package/jest.config.js +0 -15
  107. package/lib/connected-accounts.d.ts +0 -119
  108. package/lib/connected-accounts.js +0 -241
  109. package/lib/connected-accounts.js.map +0 -1
  110. package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_connect.d.ts +0 -19
  111. package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_connect.js +0 -27
  112. package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_connect.js.map +0 -1
  113. package/lib/pkg/grpc/scalekit/v1/auth/auth_connect.d.ts +0 -118
  114. package/lib/pkg/grpc/scalekit/v1/auth/auth_connect.js +0 -126
  115. package/lib/pkg/grpc/scalekit/v1/auth/auth_connect.js.map +0 -1
  116. package/lib/pkg/grpc/scalekit/v1/auth/passwordless_connect.d.ts +0 -37
  117. package/lib/pkg/grpc/scalekit/v1/auth/passwordless_connect.js +0 -45
  118. package/lib/pkg/grpc/scalekit/v1/auth/passwordless_connect.js.map +0 -1
  119. package/lib/pkg/grpc/scalekit/v1/auth/webauthn_connect.d.ts +0 -82
  120. package/lib/pkg/grpc/scalekit/v1/auth/webauthn_connect.js +0 -90
  121. package/lib/pkg/grpc/scalekit/v1/auth/webauthn_connect.js.map +0 -1
  122. package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_connect.d.ts +0 -87
  123. package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_connect.js +0 -95
  124. package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_connect.js.map +0 -1
  125. package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.d.ts +0 -718
  126. package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.js +0 -893
  127. package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.js.map +0 -1
  128. package/lib/pkg/grpc/scalekit/v1/connections/connections_connect.d.ts +0 -172
  129. package/lib/pkg/grpc/scalekit/v1/connections/connections_connect.js +0 -180
  130. package/lib/pkg/grpc/scalekit/v1/connections/connections_connect.js.map +0 -1
  131. package/lib/pkg/grpc/scalekit/v1/directories/directories_connect.d.ts +0 -154
  132. package/lib/pkg/grpc/scalekit/v1/directories/directories_connect.js +0 -162
  133. package/lib/pkg/grpc/scalekit/v1/directories/directories_connect.js.map +0 -1
  134. package/lib/pkg/grpc/scalekit/v1/domains/domains_connect.d.ts +0 -73
  135. package/lib/pkg/grpc/scalekit/v1/domains/domains_connect.js +0 -81
  136. package/lib/pkg/grpc/scalekit/v1/domains/domains_connect.js.map +0 -1
  137. package/lib/pkg/grpc/scalekit/v1/organizations/organizations_connect.d.ts +0 -171
  138. package/lib/pkg/grpc/scalekit/v1/organizations/organizations_connect.js +0 -179
  139. package/lib/pkg/grpc/scalekit/v1/organizations/organizations_connect.js.map +0 -1
  140. package/lib/pkg/grpc/scalekit/v1/roles/roles_connect.d.ts +0 -250
  141. package/lib/pkg/grpc/scalekit/v1/roles/roles_connect.js +0 -258
  142. package/lib/pkg/grpc/scalekit/v1/roles/roles_connect.js.map +0 -1
  143. package/lib/pkg/grpc/scalekit/v1/sessions/sessions_connect.d.ts +0 -46
  144. package/lib/pkg/grpc/scalekit/v1/sessions/sessions_connect.js +0 -54
  145. package/lib/pkg/grpc/scalekit/v1/sessions/sessions_connect.js.map +0 -1
  146. package/lib/pkg/grpc/scalekit/v1/tools/tools_connect.d.ts +0 -75
  147. package/lib/pkg/grpc/scalekit/v1/tools/tools_connect.js +0 -83
  148. package/lib/pkg/grpc/scalekit/v1/tools/tools_connect.js.map +0 -1
  149. package/lib/pkg/grpc/scalekit/v1/tools/tools_pb.d.ts +0 -431
  150. package/lib/pkg/grpc/scalekit/v1/tools/tools_pb.js +0 -627
  151. package/lib/pkg/grpc/scalekit/v1/tools/tools_pb.js.map +0 -1
  152. package/lib/pkg/grpc/scalekit/v1/users/users_connect.d.ts +0 -173
  153. package/lib/pkg/grpc/scalekit/v1/users/users_connect.js +0 -181
  154. package/lib/pkg/grpc/scalekit/v1/users/users_connect.js.map +0 -1
  155. package/lib/tools.d.ts +0 -75
  156. package/lib/tools.js +0 -127
  157. package/lib/tools.js.map +0 -1
  158. package/src/auth.ts +0 -99
  159. package/src/connect.ts +0 -33
  160. package/src/connected-accounts.ts +0 -358
  161. package/src/connection.ts +0 -267
  162. package/src/constants/user.ts +0 -22
  163. package/src/core.ts +0 -139
  164. package/src/directory.ts +0 -431
  165. package/src/domain.ts +0 -272
  166. package/src/errors/base-exception.ts +0 -262
  167. package/src/errors/index.ts +0 -3
  168. package/src/errors/specific-exceptions.ts +0 -88
  169. package/src/index.ts +0 -10
  170. package/src/organization.ts +0 -568
  171. package/src/passwordless.ts +0 -138
  172. package/src/permission.ts +0 -310
  173. package/src/pkg/grpc/scalekit/v1/auditlogs/auditlogs_connect.ts +0 -26
  174. package/src/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.ts +0 -342
  175. package/src/pkg/grpc/scalekit/v1/auth/auth_connect.ts +0 -125
  176. package/src/pkg/grpc/scalekit/v1/auth/auth_pb.ts +0 -1213
  177. package/src/pkg/grpc/scalekit/v1/auth/passwordless_connect.ts +0 -44
  178. package/src/pkg/grpc/scalekit/v1/auth/passwordless_pb.ts +0 -336
  179. package/src/pkg/grpc/scalekit/v1/auth/webauthn_connect.ts +0 -89
  180. package/src/pkg/grpc/scalekit/v1/auth/webauthn_pb.ts +0 -1263
  181. package/src/pkg/grpc/scalekit/v1/commons/commons_pb.ts +0 -573
  182. package/src/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_connect.ts +0 -94
  183. package/src/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.ts +0 -1294
  184. package/src/pkg/grpc/scalekit/v1/connections/connections_connect.ts +0 -179
  185. package/src/pkg/grpc/scalekit/v1/connections/connections_pb.ts +0 -3846
  186. package/src/pkg/grpc/scalekit/v1/directories/directories_connect.ts +0 -161
  187. package/src/pkg/grpc/scalekit/v1/directories/directories_pb.ts +0 -2119
  188. package/src/pkg/grpc/scalekit/v1/domains/domains_connect.ts +0 -80
  189. package/src/pkg/grpc/scalekit/v1/domains/domains_pb.ts +0 -855
  190. package/src/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.ts +0 -524
  191. package/src/pkg/grpc/scalekit/v1/options/options_pb.ts +0 -230
  192. package/src/pkg/grpc/scalekit/v1/organizations/organizations_connect.ts +0 -178
  193. package/src/pkg/grpc/scalekit/v1/organizations/organizations_pb.ts +0 -1766
  194. package/src/pkg/grpc/scalekit/v1/roles/roles_connect.ts +0 -257
  195. package/src/pkg/grpc/scalekit/v1/roles/roles_pb.ts +0 -2395
  196. package/src/pkg/grpc/scalekit/v1/sessions/sessions_connect.ts +0 -53
  197. package/src/pkg/grpc/scalekit/v1/sessions/sessions_pb.ts +0 -749
  198. package/src/pkg/grpc/scalekit/v1/tools/tools_connect.ts +0 -82
  199. package/src/pkg/grpc/scalekit/v1/tools/tools_pb.ts +0 -847
  200. package/src/pkg/grpc/scalekit/v1/users/users_connect.ts +0 -180
  201. package/src/pkg/grpc/scalekit/v1/users/users_pb.ts +0 -2151
  202. package/src/role.ts +0 -461
  203. package/src/scalekit.ts +0 -809
  204. package/src/session.ts +0 -337
  205. package/src/tools.ts +0 -166
  206. package/src/types/auth.ts +0 -73
  207. package/src/types/organization.ts +0 -12
  208. package/src/types/scalekit.ts +0 -50
  209. package/src/types/user.ts +0 -21
  210. package/src/user.ts +0 -825
  211. package/src/webauthn.ts +0 -98
  212. package/tests/README.md +0 -25
  213. package/tests/connected-accounts.test.ts +0 -472
  214. package/tests/connection.test.ts +0 -42
  215. package/tests/directory.test.ts +0 -46
  216. package/tests/domain.test.ts +0 -293
  217. package/tests/organization.test.ts +0 -81
  218. package/tests/passwordless.test.ts +0 -108
  219. package/tests/permission.test.ts +0 -399
  220. package/tests/role.test.ts +0 -323
  221. package/tests/scalekit.test.ts +0 -104
  222. package/tests/setup.ts +0 -34
  223. package/tests/tools.test.ts +0 -239
  224. package/tests/users.test.ts +0 -168
  225. package/tests/utils/test-data.ts +0 -481
  226. package/tsconfig.json +0 -19
@@ -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
-