@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.
- package/README.md +30 -28
- package/dist/cjs/package.json +41 -0
- package/dist/cjs/spec/env/beta.json +9 -0
- package/dist/cjs/spec/env/gamma.json +9 -0
- package/dist/cjs/spec/env/prod.json +9 -0
- package/dist/cjs/src/api.d.ts +634 -0
- package/dist/cjs/src/api.js +1309 -0
- package/dist/cjs/src/client.d.ts +575 -0
- package/dist/cjs/src/client.js +378 -0
- package/dist/cjs/src/env.d.ts +15 -0
- package/dist/cjs/src/env.js +35 -0
- package/dist/cjs/src/error.d.ts +29 -0
- package/dist/cjs/src/error.js +36 -0
- package/dist/cjs/src/events.d.ts +84 -0
- package/dist/cjs/src/events.js +195 -0
- package/dist/cjs/src/index.d.ts +203 -0
- package/dist/cjs/src/index.js +298 -0
- package/dist/cjs/src/key.d.ts +152 -0
- package/dist/cjs/src/key.js +242 -0
- package/dist/{src/fido.d.ts → cjs/src/mfa.d.ts} +33 -15
- package/dist/cjs/src/mfa.js +169 -0
- package/dist/cjs/src/org.d.ts +99 -0
- package/dist/cjs/src/org.js +95 -0
- package/dist/cjs/src/paginator.d.ts +76 -0
- package/dist/cjs/src/paginator.js +99 -0
- package/dist/cjs/src/response.d.ts +101 -0
- package/dist/cjs/src/response.js +164 -0
- package/dist/cjs/src/role.d.ts +283 -0
- package/dist/cjs/src/role.js +253 -0
- package/dist/cjs/src/schema.d.ts +6209 -0
- package/dist/cjs/src/schema.js +7 -0
- package/dist/cjs/src/schema_types.d.ts +113 -0
- package/dist/cjs/src/schema_types.js +3 -0
- package/dist/cjs/src/session/session_storage.d.ts +27 -0
- package/dist/cjs/src/session/session_storage.js +47 -0
- package/dist/cjs/src/session/signer_session_manager.d.ts +125 -0
- package/dist/cjs/src/session/signer_session_manager.js +239 -0
- package/dist/cjs/src/signer_session.d.ts +41 -0
- package/dist/cjs/src/signer_session.js +77 -0
- package/dist/cjs/src/user_export.d.ts +52 -0
- package/dist/cjs/src/user_export.js +129 -0
- package/dist/cjs/src/util.d.ts +56 -0
- package/dist/cjs/src/util.js +86 -0
- package/dist/esm/package.json +41 -0
- package/dist/esm/spec/env/beta.json +9 -0
- package/dist/esm/spec/env/gamma.json +9 -0
- package/dist/esm/spec/env/prod.json +9 -0
- package/dist/esm/src/api.d.ts +634 -0
- package/dist/esm/src/api.js +1299 -0
- package/dist/esm/src/client.d.ts +575 -0
- package/dist/esm/src/client.js +374 -0
- package/dist/esm/src/env.d.ts +15 -0
- package/dist/esm/src/env.js +9 -0
- package/dist/esm/src/error.d.ts +29 -0
- package/dist/esm/src/error.js +31 -0
- package/dist/esm/src/events.d.ts +84 -0
- package/dist/esm/src/events.js +189 -0
- package/dist/esm/src/index.d.ts +203 -0
- package/dist/esm/src/index.js +276 -0
- package/dist/esm/src/key.d.ts +152 -0
- package/dist/esm/src/key.js +236 -0
- package/dist/esm/src/mfa.d.ts +94 -0
- package/dist/esm/src/mfa.js +163 -0
- package/dist/esm/src/org.d.ts +99 -0
- package/dist/esm/src/org.js +91 -0
- package/dist/esm/src/paginator.d.ts +76 -0
- package/dist/esm/src/paginator.js +94 -0
- package/dist/esm/src/response.d.ts +101 -0
- package/dist/esm/src/response.js +159 -0
- package/dist/esm/src/role.d.ts +283 -0
- package/dist/esm/src/role.js +248 -0
- package/dist/esm/src/schema.d.ts +6209 -0
- package/dist/esm/src/schema.js +6 -0
- package/dist/esm/src/schema_types.d.ts +113 -0
- package/dist/esm/src/schema_types.js +2 -0
- package/dist/esm/src/session/session_storage.d.ts +27 -0
- package/dist/esm/src/session/session_storage.js +43 -0
- package/dist/esm/src/session/signer_session_manager.d.ts +125 -0
- package/dist/esm/src/session/signer_session_manager.js +235 -0
- package/dist/esm/src/signer_session.d.ts +41 -0
- package/dist/esm/src/signer_session.js +72 -0
- package/dist/esm/src/user_export.d.ts +52 -0
- package/dist/esm/src/user_export.js +99 -0
- package/dist/esm/src/util.d.ts +56 -0
- package/dist/esm/src/util.js +76 -0
- package/dist/package.json +13 -45
- package/dist/src/api.d.ts +29 -1
- package/dist/src/api.js +66 -1
- package/dist/src/client.d.ts +35 -14
- package/dist/src/client.js +12 -8
- package/dist/src/events.js +1 -1
- package/dist/src/index.d.ts +6 -11
- package/dist/src/index.js +9 -25
- package/dist/src/key.d.ts +18 -7
- package/dist/src/key.js +52 -19
- package/dist/src/role.d.ts +46 -3
- package/dist/src/role.js +60 -8
- package/dist/src/schema.d.ts +206 -72
- package/dist/src/schema.js +1 -1
- package/dist/src/schema_types.d.ts +3 -0
- package/dist/src/schema_types.js +1 -1
- package/dist/src/session/signer_session_manager.d.ts +38 -14
- package/dist/src/session/signer_session_manager.js +93 -33
- package/dist/src/util.d.ts +14 -0
- package/dist/src/util.js +24 -27
- package/package.json +19 -46
- package/src/api.ts +79 -0
- package/src/client.ts +12 -8
- package/src/events.ts +2 -0
- package/src/index.ts +10 -24
- package/src/key.ts +36 -18
- package/src/role.ts +78 -7
- package/src/schema.ts +269 -110
- package/src/schema_types.ts +3 -0
- package/src/session/session_storage.ts +0 -32
- package/src/session/signer_session_manager.ts +124 -36
- package/src/util.ts +19 -10
- package/tsconfig.json +1 -21
- package/LICENSE-APACHE +0 -177
- package/LICENSE-MIT +0 -25
- package/NOTICE +0 -13
- package/dist/examples/ethers.d.ts +0 -1
- package/dist/examples/ethers.js +0 -142
- package/dist/src/ethers/index.d.ts +0 -95
- package/dist/src/ethers/index.js +0 -215
- package/dist/src/fido.js +0 -148
- package/dist/src/session/cognito_manager.d.ts +0 -71
- package/dist/src/session/cognito_manager.js +0 -129
- package/dist/src/session/generic.d.ts +0 -47
- package/dist/src/session/generic.js +0 -3
- package/dist/src/session/management_session_manager.d.ts +0 -59
- package/dist/src/session/management_session_manager.js +0 -111
- package/dist/src/session/oidc_session_manager.d.ts +0 -78
- package/dist/src/session/oidc_session_manager.js +0 -142
- package/dist/src/session/session_manager.d.ts +0 -99
- package/dist/src/session/session_manager.js +0 -136
- package/dist/src/sign.d.ts +0 -114
- package/dist/src/sign.js +0 -248
- package/dist/test/sessions.d.ts +0 -35
- package/dist/test/sessions.js +0 -56
- package/src/ethers/index.ts +0 -253
- package/src/session/cognito_manager.ts +0 -161
- 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
|
|
24
|
+
You can install the SDK from npm:
|
|
25
25
|
|
|
26
26
|
```bash
|
|
27
|
-
npm install --save "@cubist-labs/cubesigner-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 `
|
|
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 `
|
|
60
|
+
### Instantiate `CubeSignerClient`
|
|
59
61
|
|
|
60
|
-
The first order of business is to create an instance of `
|
|
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
|
|
68
|
+
const cubesigner = await loadManagementSession();
|
|
67
69
|
```
|
|
68
70
|
|
|
69
|
-
Alternatively, 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
|
|
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.
|
|
79
|
-
new cs.
|
|
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
|
|
94
|
+
assert(me.org_ids.length === 1); // assume that the user is a member of exactly one org
|
|
95
95
|
|
|
96
|
-
const org =
|
|
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
|
|
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
|
-
|
|
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
|
|
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.
|
|
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
|
|
347
|
-
|
|
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
|
-
|
|
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,
|
|
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.
|
|
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
|
+
}
|