@cubist-labs/cubesigner-sdk 0.2.24 → 0.3.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 (147) hide show
  1. package/README.md +30 -28
  2. package/dist/cjs/package.json +41 -0
  3. package/dist/cjs/spec/env/beta.json +9 -0
  4. package/dist/cjs/spec/env/gamma.json +9 -0
  5. package/dist/cjs/spec/env/prod.json +9 -0
  6. package/dist/cjs/src/api.d.ts +634 -0
  7. package/dist/cjs/src/api.js +1309 -0
  8. package/dist/cjs/src/client.d.ts +575 -0
  9. package/dist/cjs/src/client.js +378 -0
  10. package/dist/cjs/src/env.d.ts +15 -0
  11. package/dist/cjs/src/env.js +35 -0
  12. package/dist/cjs/src/error.d.ts +29 -0
  13. package/dist/cjs/src/error.js +36 -0
  14. package/dist/cjs/src/events.d.ts +84 -0
  15. package/dist/cjs/src/events.js +195 -0
  16. package/dist/cjs/src/index.d.ts +203 -0
  17. package/dist/cjs/src/index.js +298 -0
  18. package/dist/cjs/src/key.d.ts +152 -0
  19. package/dist/cjs/src/key.js +242 -0
  20. package/dist/{src/fido.d.ts → cjs/src/mfa.d.ts} +33 -15
  21. package/dist/cjs/src/mfa.js +169 -0
  22. package/dist/cjs/src/org.d.ts +99 -0
  23. package/dist/cjs/src/org.js +95 -0
  24. package/dist/cjs/src/paginator.d.ts +76 -0
  25. package/dist/cjs/src/paginator.js +99 -0
  26. package/dist/cjs/src/response.d.ts +101 -0
  27. package/dist/cjs/src/response.js +164 -0
  28. package/dist/cjs/src/role.d.ts +283 -0
  29. package/dist/cjs/src/role.js +253 -0
  30. package/dist/cjs/src/schema.d.ts +6209 -0
  31. package/dist/cjs/src/schema.js +7 -0
  32. package/dist/cjs/src/schema_types.d.ts +113 -0
  33. package/dist/cjs/src/schema_types.js +3 -0
  34. package/dist/cjs/src/session/session_storage.d.ts +27 -0
  35. package/dist/cjs/src/session/session_storage.js +47 -0
  36. package/dist/cjs/src/session/signer_session_manager.d.ts +125 -0
  37. package/dist/cjs/src/session/signer_session_manager.js +239 -0
  38. package/dist/cjs/src/signer_session.d.ts +41 -0
  39. package/dist/cjs/src/signer_session.js +77 -0
  40. package/dist/cjs/src/user_export.d.ts +52 -0
  41. package/dist/cjs/src/user_export.js +129 -0
  42. package/dist/cjs/src/util.d.ts +56 -0
  43. package/dist/cjs/src/util.js +86 -0
  44. package/dist/esm/package.json +41 -0
  45. package/dist/esm/spec/env/beta.json +9 -0
  46. package/dist/esm/spec/env/gamma.json +9 -0
  47. package/dist/esm/spec/env/prod.json +9 -0
  48. package/dist/esm/src/api.d.ts +634 -0
  49. package/dist/esm/src/api.js +1299 -0
  50. package/dist/esm/src/client.d.ts +575 -0
  51. package/dist/esm/src/client.js +374 -0
  52. package/dist/esm/src/env.d.ts +15 -0
  53. package/dist/esm/src/env.js +9 -0
  54. package/dist/esm/src/error.d.ts +29 -0
  55. package/dist/esm/src/error.js +31 -0
  56. package/dist/esm/src/events.d.ts +84 -0
  57. package/dist/esm/src/events.js +189 -0
  58. package/dist/esm/src/index.d.ts +203 -0
  59. package/dist/esm/src/index.js +276 -0
  60. package/dist/esm/src/key.d.ts +152 -0
  61. package/dist/esm/src/key.js +236 -0
  62. package/dist/esm/src/mfa.d.ts +94 -0
  63. package/dist/esm/src/mfa.js +163 -0
  64. package/dist/esm/src/org.d.ts +99 -0
  65. package/dist/esm/src/org.js +91 -0
  66. package/dist/esm/src/paginator.d.ts +76 -0
  67. package/dist/esm/src/paginator.js +94 -0
  68. package/dist/esm/src/response.d.ts +101 -0
  69. package/dist/esm/src/response.js +159 -0
  70. package/dist/esm/src/role.d.ts +283 -0
  71. package/dist/esm/src/role.js +248 -0
  72. package/dist/esm/src/schema.d.ts +6209 -0
  73. package/dist/esm/src/schema.js +6 -0
  74. package/dist/esm/src/schema_types.d.ts +113 -0
  75. package/dist/esm/src/schema_types.js +2 -0
  76. package/dist/esm/src/session/session_storage.d.ts +27 -0
  77. package/dist/esm/src/session/session_storage.js +43 -0
  78. package/dist/esm/src/session/signer_session_manager.d.ts +125 -0
  79. package/dist/esm/src/session/signer_session_manager.js +235 -0
  80. package/dist/esm/src/signer_session.d.ts +41 -0
  81. package/dist/esm/src/signer_session.js +72 -0
  82. package/dist/esm/src/user_export.d.ts +52 -0
  83. package/dist/esm/src/user_export.js +99 -0
  84. package/dist/esm/src/util.d.ts +56 -0
  85. package/dist/esm/src/util.js +76 -0
  86. package/dist/package.json +13 -45
  87. package/dist/src/api.d.ts +29 -18
  88. package/dist/src/api.js +70 -17
  89. package/dist/src/client.d.ts +35 -14
  90. package/dist/src/client.js +12 -8
  91. package/dist/src/error.d.ts +29 -0
  92. package/dist/src/error.js +36 -0
  93. package/dist/src/events.d.ts +1 -1
  94. package/dist/src/events.js +1 -1
  95. package/dist/src/index.d.ts +8 -11
  96. package/dist/src/index.js +11 -25
  97. package/dist/src/key.d.ts +18 -7
  98. package/dist/src/key.js +52 -19
  99. package/dist/src/role.d.ts +46 -3
  100. package/dist/src/role.js +60 -8
  101. package/dist/src/schema.d.ts +206 -72
  102. package/dist/src/schema.js +1 -1
  103. package/dist/src/schema_types.d.ts +3 -0
  104. package/dist/src/schema_types.js +1 -1
  105. package/dist/src/session/signer_session_manager.d.ts +49 -13
  106. package/dist/src/session/signer_session_manager.js +104 -26
  107. package/dist/src/util.d.ts +14 -0
  108. package/dist/src/util.js +24 -27
  109. package/package.json +19 -46
  110. package/src/api.ts +81 -23
  111. package/src/client.ts +12 -8
  112. package/src/error.ts +42 -0
  113. package/src/events.ts +3 -1
  114. package/src/index.ts +12 -24
  115. package/src/key.ts +36 -18
  116. package/src/role.ts +78 -7
  117. package/src/schema.ts +269 -110
  118. package/src/schema_types.ts +3 -0
  119. package/src/session/session_storage.ts +0 -32
  120. package/src/session/signer_session_manager.ts +137 -28
  121. package/src/util.ts +19 -10
  122. package/tsconfig.json +1 -21
  123. package/LICENSE-APACHE +0 -177
  124. package/LICENSE-MIT +0 -25
  125. package/NOTICE +0 -13
  126. package/dist/examples/ethers.d.ts +0 -1
  127. package/dist/examples/ethers.js +0 -142
  128. package/dist/src/ethers/index.d.ts +0 -95
  129. package/dist/src/ethers/index.js +0 -208
  130. package/dist/src/fido.js +0 -148
  131. package/dist/src/session/cognito_manager.d.ts +0 -71
  132. package/dist/src/session/cognito_manager.js +0 -129
  133. package/dist/src/session/generic.d.ts +0 -47
  134. package/dist/src/session/generic.js +0 -3
  135. package/dist/src/session/management_session_manager.d.ts +0 -59
  136. package/dist/src/session/management_session_manager.js +0 -111
  137. package/dist/src/session/oidc_session_manager.d.ts +0 -78
  138. package/dist/src/session/oidc_session_manager.js +0 -142
  139. package/dist/src/session/session_manager.d.ts +0 -99
  140. package/dist/src/session/session_manager.js +0 -136
  141. package/dist/src/sign.d.ts +0 -114
  142. package/dist/src/sign.js +0 -248
  143. package/dist/test/sessions.d.ts +0 -35
  144. package/dist/test/sessions.js +0 -56
  145. package/src/ethers/index.ts +0 -249
  146. package/src/session/cognito_manager.ts +0 -161
  147. package/src/session/session_manager.ts +0 -165
package/src/role.ts CHANGED
@@ -48,6 +48,13 @@ export type TxDepositPubkey = { TxDeposit: { kind: DepositContract; pubkey: stri
48
48
  */
49
49
  export type TxDepositRole = { TxDeposit: { kind: DepositContract; role_id: string } };
50
50
 
51
+ /**
52
+ * Only allow connections from clients whose IP addresses match any of these IPv4 CIDR blocks.
53
+ *
54
+ * @example { SourceIpAllowlist: [ "123.456.78.9/16" ] }
55
+ */
56
+ export type SourceIpAllowlist = { SourceIpAllowlist: string[] };
57
+
51
58
  /** All different kinds of sensitive operations. */
52
59
  export enum OperationKind {
53
60
  BlobSign = "BlobSign", // eslint-disable-line no-unused-vars
@@ -100,6 +107,17 @@ export type RequireMfa = {
100
107
  export const AllowRawBlobSigning = "AllowRawBlobSigning" as const;
101
108
  export type AllowRawBlobSigning = typeof AllowRawBlobSigning;
102
109
 
110
+ /** Allow EIP-191 signing */
111
+ export const AllowEip191Signing = "AllowEip191Signing" as const;
112
+ export type AllowEip191Signing = typeof AllowEip191Signing;
113
+
114
+ /** Allow EIP-712 signing */
115
+ export const AllowEip712Signing = "AllowEip712Signing" as const;
116
+ export type AllowEip712Signing = typeof AllowEip712Signing;
117
+
118
+ /** Key policies that restrict the requests that the signing endpoints accept */
119
+ type KeyDenyPolicy = TxReceiver | TxDeposit | SourceIpAllowlist | RequireMfa;
120
+
103
121
  /**
104
122
  * Key policy
105
123
  *
@@ -124,7 +142,15 @@ export type AllowRawBlobSigning = typeof AllowRawBlobSigning;
124
142
  * }
125
143
  * ]
126
144
  */
127
- export type KeyPolicy = (TxReceiver | TxDeposit | RequireMfa | AllowRawBlobSigning)[];
145
+ export type KeyPolicy = (
146
+ | KeyDenyPolicy
147
+ | AllowRawBlobSigning
148
+ | AllowEip191Signing
149
+ | AllowEip712Signing
150
+ )[];
151
+
152
+ /** Role policy */
153
+ export type RolePolicy = KeyDenyPolicy[];
128
154
 
129
155
  /** A key guarded by a policy. */
130
156
  export class KeyWithPolicies {
@@ -154,15 +180,30 @@ export class KeyWithPolicies {
154
180
  /** Roles. */
155
181
  export class Role {
156
182
  readonly #csc: CubeSignerClient;
183
+ /** The role information */
184
+ #data: RoleInfo;
157
185
 
158
186
  /** Human-readable name for the role */
159
- public readonly name?: string;
187
+ get name(): string | undefined {
188
+ return this.#data.name ?? undefined;
189
+ }
160
190
 
161
191
  /**
162
192
  * The ID of the role.
163
193
  * @example Role#bfe3eccb-731e-430d-b1e5-ac1363e6b06b
164
194
  */
165
- readonly id: string;
195
+ get id(): string {
196
+ return this.#data.role_id;
197
+ }
198
+
199
+ /**
200
+ * @return {RoleInfo} the cached properties of this role. The cached properties
201
+ * reflect the state of the last fetch or update (e.g., after awaiting
202
+ * `Role.enabled()` or `Role.disable()`).
203
+ */
204
+ get cached(): RoleInfo {
205
+ return this.#data;
206
+ }
166
207
 
167
208
  /** Delete the role. */
168
209
  async delete(): Promise<void> {
@@ -185,6 +226,35 @@ export class Role {
185
226
  await this.update({ enabled: false });
186
227
  }
187
228
 
229
+ /**
230
+ * Set new policy (overwriting any policies previously set for this role)
231
+ * @param {RolePolicy} policy The new policy to set
232
+ */
233
+ async setPolicy(policy: RolePolicy) {
234
+ await this.update({ policy: policy as unknown as Record<string, never>[] });
235
+ }
236
+
237
+ /**
238
+ * Append to existing role policy. This append is not atomic---it uses
239
+ * {@link policy} to fetch the current policy and then {@link setPolicy}
240
+ * to set the policy---and should not be used in across concurrent sessions.
241
+ *
242
+ * @param {RolePolicy} policy The policy to append to the existing one.
243
+ */
244
+ async appendPolicy(policy: RolePolicy) {
245
+ const existing = await this.policy();
246
+ await this.setPolicy([...existing, ...policy]);
247
+ }
248
+
249
+ /**
250
+ * Get the policy for the role.
251
+ * @return {Promise<RolePolicy>} The policy for the role.
252
+ */
253
+ async policy(): Promise<RolePolicy> {
254
+ const data = await this.fetch();
255
+ return (data.policy ?? []) as unknown as RolePolicy;
256
+ }
257
+
188
258
  /**
189
259
  * The list of all users with access to the role.
190
260
  * @example [
@@ -301,8 +371,7 @@ export class Role {
301
371
  */
302
372
  constructor(csc: CubeSignerClient, data: RoleInfo) {
303
373
  this.#csc = csc;
304
- this.id = data.role_id;
305
- this.name = data.name ?? undefined;
374
+ this.#data = data;
306
375
  }
307
376
 
308
377
  /**
@@ -312,7 +381,8 @@ export class Role {
312
381
  * @return {Promise<RoleInfo>} The updated role information.
313
382
  */
314
383
  private async update(request: UpdateRoleRequest): Promise<RoleInfo> {
315
- return await this.#csc.roleUpdate(this.id, request);
384
+ this.#data = await this.#csc.roleUpdate(this.id, request);
385
+ return this.#data;
316
386
  }
317
387
 
318
388
  /**
@@ -322,6 +392,7 @@ export class Role {
322
392
  * @internal
323
393
  */
324
394
  private async fetch(): Promise<RoleInfo> {
325
- return await this.#csc.roleGet(this.id);
395
+ this.#data = await this.#csc.roleGet(this.id);
396
+ return this.#data;
326
397
  }
327
398
  }