@cubist-labs/cubesigner-sdk 0.2.28 → 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 (143) 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 -1
  88. package/dist/src/api.js +66 -1
  89. package/dist/src/client.d.ts +35 -14
  90. package/dist/src/client.js +12 -8
  91. package/dist/src/events.js +1 -1
  92. package/dist/src/index.d.ts +6 -11
  93. package/dist/src/index.js +9 -25
  94. package/dist/src/key.d.ts +18 -7
  95. package/dist/src/key.js +52 -19
  96. package/dist/src/role.d.ts +46 -3
  97. package/dist/src/role.js +60 -8
  98. package/dist/src/schema.d.ts +206 -72
  99. package/dist/src/schema.js +1 -1
  100. package/dist/src/schema_types.d.ts +3 -0
  101. package/dist/src/schema_types.js +1 -1
  102. package/dist/src/session/signer_session_manager.d.ts +38 -14
  103. package/dist/src/session/signer_session_manager.js +93 -33
  104. package/dist/src/util.d.ts +14 -0
  105. package/dist/src/util.js +24 -27
  106. package/package.json +19 -46
  107. package/src/api.ts +79 -0
  108. package/src/client.ts +12 -8
  109. package/src/events.ts +2 -0
  110. package/src/index.ts +10 -24
  111. package/src/key.ts +36 -18
  112. package/src/role.ts +78 -7
  113. package/src/schema.ts +269 -110
  114. package/src/schema_types.ts +3 -0
  115. package/src/session/session_storage.ts +0 -32
  116. package/src/session/signer_session_manager.ts +124 -36
  117. package/src/util.ts +19 -10
  118. package/tsconfig.json +1 -21
  119. package/LICENSE-APACHE +0 -177
  120. package/LICENSE-MIT +0 -25
  121. package/NOTICE +0 -13
  122. package/dist/examples/ethers.d.ts +0 -1
  123. package/dist/examples/ethers.js +0 -142
  124. package/dist/src/ethers/index.d.ts +0 -95
  125. package/dist/src/ethers/index.js +0 -215
  126. package/dist/src/fido.js +0 -148
  127. package/dist/src/session/cognito_manager.d.ts +0 -71
  128. package/dist/src/session/cognito_manager.js +0 -129
  129. package/dist/src/session/generic.d.ts +0 -47
  130. package/dist/src/session/generic.js +0 -3
  131. package/dist/src/session/management_session_manager.d.ts +0 -59
  132. package/dist/src/session/management_session_manager.js +0 -111
  133. package/dist/src/session/oidc_session_manager.d.ts +0 -78
  134. package/dist/src/session/oidc_session_manager.js +0 -142
  135. package/dist/src/session/session_manager.d.ts +0 -99
  136. package/dist/src/session/session_manager.js +0 -136
  137. package/dist/src/sign.d.ts +0 -114
  138. package/dist/src/sign.js +0 -248
  139. package/dist/test/sessions.d.ts +0 -35
  140. package/dist/test/sessions.js +0 -56
  141. package/src/ethers/index.ts +0 -253
  142. package/src/session/cognito_manager.ts +0 -161
  143. package/src/session/session_manager.ts +0 -165
package/README.md CHANGED
@@ -21,10 +21,11 @@ is in the works!
21
21
 
22
22
  ## Installing the SDK
23
23
 
24
- You can install the SDK from npm, or from GitHub:
24
+ You can install the SDK from npm:
25
25
 
26
26
  ```bash
27
- npm install --save "@cubist-labs/cubesigner-sdk" "github:cubist-labs/CubeSigner-TypeScript-SDK"
27
+ npm install --save "@cubist-labs/cubesigner-sdk"
28
+ npm install --save "@cubist-labs/cubesigner-sdk-fs-storage" # support for filesystem-backed sessions
28
29
  ```
29
30
 
30
31
  ## Logging into CubeSigner
@@ -43,7 +44,7 @@ setup. We'll create a signing key, then sign some EVM
43
44
  transactions, and then add a security policy to restrict the kinds of
44
45
  transactions that CubeSigner is allowed to sign.
45
46
 
46
- To start, we'll instantiate the top-level `CubeSigner` class from an
47
+ To start, we'll instantiate the top-level `CubeSignerClient` class from an
47
48
  existing CubeSigner management session already stored on disk
48
49
  (remember, you must already be logged in).
49
50
 
@@ -52,33 +53,32 @@ examples below.
52
53
 
53
54
  ```typescript
54
55
  import * as cs from "@cubist-labs/cubesigner-sdk";
56
+ import { JsonFileSessionStorage, loadManagementSession } from "@cubist-labs/cubesigner-sdk-fs-storage";
55
57
  import assert from "assert";
56
58
  ```
57
59
 
58
- ### Instantiate `CubeSigner`
60
+ ### Instantiate `CubeSignerClient`
59
61
 
60
- The first order of business is to create an instance of `CubeSigner`.
62
+ The first order of business is to create an instance of `CubeSignerClient`.
61
63
  We can do that by simply loading the management session token from the
62
64
  default location on disk (which is where the `cs login` command saves
63
65
  it):
64
66
 
65
67
  ```typescript
66
- const cubesigner = await cs.CubeSigner.loadManagementSession();
68
+ const cubesigner = await loadManagementSession();
67
69
  ```
68
70
 
69
- Alternatively, a `CubeSigner` instance can be created by explicitly providing a
70
- session manager:
71
+ Alternatively, a `CubeSignerClient` instance can be created by explicitly
72
+ providing a session manager:
71
73
 
72
74
  ```typescript
73
75
  // Load session from a JSON file
74
- const fileStorage = new cs.JsonFileSessionStorage<cs.CognitoSessionInfo>(
76
+ const fileStorage = new JsonFileSessionStorage<cs.SignerSessionData>(
75
77
  `${process.env.HOME}/.config/cubesigner/management-session.json`,
76
78
  );
77
79
  // Create a session manager for a management token
78
- const sessionMgr = await cs.CognitoSessionManager.loadFromStorage(fileStorage);
79
- new cs.CubeSigner({
80
- sessionMgr,
81
- });
80
+ const sessionMgr = await cs.SignerSessionManager.loadFromStorage(fileStorage);
81
+ new cs.CubeSignerClient(sessionMgr);
82
82
  ```
83
83
 
84
84
  ### Get `User` and `Org` info
@@ -91,9 +91,9 @@ const me = await cubesigner.aboutMe();
91
91
  console.log(me);
92
92
  assert(me.user_id); // each user has a globally unique ID
93
93
  assert(me.org_ids); // IDs of all organizations this user is a member of
94
- assert(me.org_ids.length > 0); // assume that the user is a member of at least one org
94
+ assert(me.org_ids.length === 1); // assume that the user is a member of exactly one org
95
95
 
96
- const org = await cubesigner.getOrg(me.org_ids[0]);
96
+ const org = new cs.Org(cubesigner);
97
97
  assert(await org.enabled()); // assume that the org is enabled
98
98
  ```
99
99
 
@@ -149,7 +149,7 @@ in-memory storage suffices; otherwise, opting for
149
149
  ```typescript
150
150
  // this storage persists the signer session token to a file
151
151
  // named 'session.json' in the current working directory
152
- new cs.JsonFileSessionStorage("session.json");
152
+ new JsonFileSessionStorage("session.json");
153
153
  ```
154
154
 
155
155
  ### Sign an Ethereum transaction
@@ -200,9 +200,11 @@ assert(sig.data().rlp_signed_tx);
200
200
  ### Using ethers.js instead of the SDK directly
201
201
 
202
202
  ```typescript
203
- const { ethers } = require("ethers");
203
+ import { Signer } from "@cubist-labs/cubesigner-sdk-ethers-v6";
204
+ import { ethers } from "ethers";
205
+
204
206
  // Create new Signer
205
- const ethersSigner = new cs.ethers.Signer(secpKey.materialId, session);
207
+ const ethersSigner = new Signer(secpKey.materialId, session);
206
208
  assert((await ethersSigner.getAddress()) === secpKey.materialId);
207
209
  // sign transaction as usual:
208
210
  console.log(
@@ -320,7 +322,7 @@ Next, create a `MemorySessionStorage` containing the previously
320
322
  exported signer token, and just load the session from it.
321
323
 
322
324
  ```typescript
323
- const signerSession = await cs.CubeSigner.loadSignerSession(
325
+ const signerSession = await cs.SignerSession.loadSignerSession(
324
326
  // alternatively, load 'token' from file or environment variable
325
327
  new cs.MemorySessionStorage(token),
326
328
  );
@@ -343,13 +345,15 @@ CubeSigner supports the [OIDC](https://openid.net/developers/how-connect-works/)
343
345
  standard for authenticating third-party users.
344
346
 
345
347
  First, we need an OIDC token. We can get one from Google or any other
346
- supported OIDC issuer, including CubeSigner! Remember that we had to
347
- [log in](#logging-into-cubesigner) before we could instantiate
348
- `CubeSigner`; now we can simply ask that instance of `CubeSigner` to
349
- export the underlying token:
348
+ supported OIDC issuer! For the purpose of this example, we'll assume
349
+ the OIDC token is stored in the `OIDC_TOKEN` environment variable
350
350
 
351
351
  ```typescript
352
- const oidcToken = await cubesigner.sessionMgr!.token();
352
+ import * as dotenv from "dotenv"; // npm install dotenv@16.3.1
353
+ dotenv.config();
354
+
355
+ const oidcToken = process.env["OIDC_TOKEN"];
356
+ assert(oidcToken);
353
357
  ```
354
358
 
355
359
  Before we can use the OIDC token for authentication, we must add an org policy
@@ -373,7 +377,7 @@ of `SignerSession`, required by all signing endpoints, e.g., `signEvm`)
373
377
  ```typescript
374
378
  const oidcSession = new cs.SignerSession(
375
379
  // we'll use this session for both signing and approving MFA request, hence the following scopes
376
- await cubesigner.oidcAuth(oidcToken, org.id, ["manage:mfa", "sign:*"]),
380
+ await cubesigner.oidcAuth(oidcToken, ["manage:mfa", "sign:*"]),
377
381
  );
378
382
  ```
379
383
 
@@ -382,9 +386,7 @@ required by all management endpoints, e.g., retrieving user
382
386
  information, configuring user MFA methods, etc.).
383
387
 
384
388
  ```typescript
385
- const oidcCubeSigner = new cs.CubeSigner({
386
- sessionMgr: await cubesigner.oidcAuth(oidcToken, org.id, ["manage:*"]),
387
- });
389
+ const oidcCubeSigner = new cs.CubeSignerClient(await cubesigner.oidcAuth(oidcToken, ["manage:*"]));
388
390
  ```
389
391
 
390
392
  > **Info**
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@cubist-labs/cubesigner-sdk",
3
+ "version": "0.3.1",
4
+ "description": "CubeSigner TypeScript SDK",
5
+ "license": "MIT OR Apache-2.0",
6
+ "author": "Cubist, Inc.",
7
+ "main": "dist/cjs/src/index.js",
8
+ "files": [
9
+ "tsconfig.json",
10
+ "src/**",
11
+ "dist/**",
12
+ "../..NOTICE",
13
+ "../..LICENSE-APACHE",
14
+ "../..LICENSE-MIT"
15
+ ],
16
+ "exports": {
17
+ "require": "./dist/cjs/src/index.js",
18
+ "import": "./dist/esm/src/index.js"
19
+ },
20
+ "scripts": {
21
+ "build": "npm run build:cjs && npm run build:mjs",
22
+ "prepack": "npm run build",
23
+ "build:cjs": "tsc -p . --outDir dist/cjs --module commonjs --moduleResolution node",
24
+ "build:mjs": "tsc -p . --outDir dist/esm --module es2022",
25
+ "gen-schema": "openapi-typescript ./spec/openapi.json --output ./src/schema.ts",
26
+ "test": "jest --maxWorkers=1",
27
+ "typedoc": "typedoc"
28
+ },
29
+ "dependencies": {
30
+ "openapi-fetch": "0.6.1"
31
+ },
32
+ "optionalDependencies": {
33
+ "@hpke/core": "^1.2.5"
34
+ },
35
+ "engines": {
36
+ "node": ">=18.0.0"
37
+ },
38
+ "directories": {
39
+ "test": "test"
40
+ }
41
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "Dev-CubeSignerStack": {
3
+ "ClientId": "405mhvv13llufju1ruvnq42rdc",
4
+ "LongLivedClientId": "6he1bnm17s0dv8bb4hjim6fs6i",
5
+ "Region": "us-east-1",
6
+ "UserPoolId": "us-east-1_79ljlRRfX",
7
+ "SignerApiRoot": "https://beta.signer.cubist.dev"
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "Dev-CubeSignerStack": {
3
+ "ClientId": "1tiou9ecj058khiidmhj4ds4rj",
4
+ "LongLivedClientId": "4jiuai7mtl5164of3drmvej234",
5
+ "Region": "us-east-1",
6
+ "UserPoolId": "us-east-1_RU7HEslOW",
7
+ "SignerApiRoot": "https://gamma.signer.cubist.dev"
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "Dev-CubeSignerStack": {
3
+ "ClientId": "2saesgbmeu8p981sk33sr6nq1j",
4
+ "LongLivedClientId": "79qoe43lbiphd7jv0emqadtoia",
5
+ "Region": "us-east-1",
6
+ "UserPoolId": "us-east-1_lLLal8vGd",
7
+ "SignerApiRoot": "https://prod.signer.cubist.dev"
8
+ }
9
+ }