burnledger 0.4.0 → 0.6.0
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 +11 -4
- package/dist/cjs/anchor.d.ts +71 -0
- package/dist/cjs/anchor.d.ts.map +1 -0
- package/dist/cjs/anchor.js +279 -0
- package/dist/cjs/anchor.js.map +1 -0
- package/dist/cjs/client.d.ts +26 -2
- package/dist/cjs/client.d.ts.map +1 -1
- package/dist/cjs/client.js +27 -5
- package/dist/cjs/client.js.map +1 -1
- package/dist/cjs/enclave-seal.d.ts +101 -0
- package/dist/cjs/enclave-seal.d.ts.map +1 -0
- package/dist/cjs/enclave-seal.js +479 -0
- package/dist/cjs/enclave-seal.js.map +1 -0
- package/dist/cjs/errors.d.ts +42 -1
- package/dist/cjs/errors.d.ts.map +1 -1
- package/dist/cjs/errors.js +44 -2
- package/dist/cjs/errors.js.map +1 -1
- package/dist/cjs/http.d.ts +21 -1
- package/dist/cjs/http.d.ts.map +1 -1
- package/dist/cjs/http.js +76 -12
- package/dist/cjs/http.js.map +1 -1
- package/dist/cjs/index.browser.d.ts +2 -4
- package/dist/cjs/index.browser.d.ts.map +1 -1
- package/dist/cjs/index.browser.js.map +1 -1
- package/dist/cjs/index.d.ts +16 -11
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +20 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/keys.d.ts +66 -0
- package/dist/cjs/keys.d.ts.map +1 -1
- package/dist/cjs/keys.js +128 -3
- package/dist/cjs/keys.js.map +1 -1
- package/dist/cjs/models.d.ts +41 -3
- package/dist/cjs/models.d.ts.map +1 -1
- package/dist/cjs/models.js +25 -4
- package/dist/cjs/models.js.map +1 -1
- package/dist/cjs/verify.d.ts +72 -6
- package/dist/cjs/verify.d.ts.map +1 -1
- package/dist/cjs/verify.js +392 -62
- package/dist/cjs/verify.js.map +1 -1
- package/dist/cjs/web-verifier.d.ts +54 -5
- package/dist/cjs/web-verifier.d.ts.map +1 -1
- package/dist/cjs/web-verifier.js +36 -3
- package/dist/cjs/web-verifier.js.map +1 -1
- package/dist/esm/anchor.d.ts +71 -0
- package/dist/esm/anchor.d.ts.map +1 -0
- package/dist/esm/anchor.js +275 -0
- package/dist/esm/anchor.js.map +1 -0
- package/dist/esm/cli.d.ts +45 -14
- package/dist/esm/cli.d.ts.map +1 -1
- package/dist/esm/cli.js +357 -50
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/client.d.ts +26 -2
- package/dist/esm/client.d.ts.map +1 -1
- package/dist/esm/client.js +27 -5
- package/dist/esm/client.js.map +1 -1
- package/dist/esm/enclave-seal.d.ts +101 -0
- package/dist/esm/enclave-seal.d.ts.map +1 -0
- package/dist/esm/enclave-seal.js +472 -0
- package/dist/esm/enclave-seal.js.map +1 -0
- package/dist/esm/errors.d.ts +42 -1
- package/dist/esm/errors.d.ts.map +1 -1
- package/dist/esm/errors.js +43 -1
- package/dist/esm/errors.js.map +1 -1
- package/dist/esm/http.d.ts +21 -1
- package/dist/esm/http.d.ts.map +1 -1
- package/dist/esm/http.js +75 -12
- package/dist/esm/http.js.map +1 -1
- package/dist/esm/index.browser.d.ts +2 -4
- package/dist/esm/index.browser.d.ts.map +1 -1
- package/dist/esm/index.browser.js.map +1 -1
- package/dist/esm/index.d.ts +16 -11
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +11 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/keys.d.ts +66 -0
- package/dist/esm/keys.d.ts.map +1 -1
- package/dist/esm/keys.js +125 -3
- package/dist/esm/keys.js.map +1 -1
- package/dist/esm/models.d.ts +41 -3
- package/dist/esm/models.d.ts.map +1 -1
- package/dist/esm/models.js +24 -4
- package/dist/esm/models.js.map +1 -1
- package/dist/esm/verify.d.ts +72 -6
- package/dist/esm/verify.d.ts.map +1 -1
- package/dist/esm/verify.js +390 -63
- package/dist/esm/verify.js.map +1 -1
- package/dist/esm/web-verifier.d.ts +54 -5
- package/dist/esm/web-verifier.d.ts.map +1 -1
- package/dist/esm/web-verifier.js +40 -3
- package/dist/esm/web-verifier.js.map +1 -1
- package/package.json +1 -1
- package/src/anchor.ts +330 -0
- package/src/cli.ts +389 -54
- package/src/client.ts +46 -4
- package/src/enclave-seal.ts +582 -0
- package/src/errors.ts +47 -2
- package/src/http.ts +79 -12
- package/src/index.browser.ts +2 -2
- package/src/index.ts +28 -9
- package/src/keys.ts +176 -3
- package/src/models.ts +72 -7
- package/src/verify.ts +467 -72
- package/src/web-verifier.ts +58 -5
package/README.md
CHANGED
|
@@ -133,6 +133,13 @@ new BurnLedger({
|
|
|
133
133
|
| `savePdf(id, path)` | `Promise<void>` |
|
|
134
134
|
| `getRevocationStatus(id)` | `Promise<RevocationStatus>` |
|
|
135
135
|
| `revokeCertificate(id, opts)` | `Promise<CertificateResponse>` |
|
|
136
|
+
| `batchRevokeCertificates(ids, opts)` | `Promise<BatchRevokeResponse>` |
|
|
137
|
+
|
|
138
|
+
`batchRevokeCertificates` takes up to `MAX_BATCH_REVOKE` (100) ids under one
|
|
139
|
+
reason and resolves whether all, some or none were revoked: the failures are
|
|
140
|
+
in `errors`, each naming the request `index` and `certificateId`, so a
|
|
141
|
+
partially failed batch is inspected, not caught. More than 100 ids throws
|
|
142
|
+
before any request is made; chunk larger sets by `MAX_BATCH_REVOKE`.
|
|
136
143
|
|
|
137
144
|
### Webhooks
|
|
138
145
|
|
|
@@ -143,16 +150,16 @@ new BurnLedger({
|
|
|
143
150
|
| `deleteWebhook(id)` | `Promise<void>` |
|
|
144
151
|
| `rotateWebhookSecret(id)` | `Promise<WebhookRotateResponse>` |
|
|
145
152
|
| `commitWebhookRotation(id)` | `Promise<void>` |
|
|
146
|
-
| `listFailedDeliveries(
|
|
147
|
-
| `retryDelivery(
|
|
148
|
-
| `resolveDelivery(
|
|
153
|
+
| `listFailedDeliveries(opts?)` | `Paginator<WebhookDelivery>` |
|
|
154
|
+
| `retryDelivery(deliveryId)` | `Promise<void>` |
|
|
155
|
+
| `resolveDelivery(deliveryId)` | `Promise<void>` |
|
|
149
156
|
|
|
150
157
|
### API Keys
|
|
151
158
|
|
|
152
159
|
| Method | Returns |
|
|
153
160
|
|--------|---------|
|
|
154
161
|
| `listApiKeys()` | `Promise<ApiKeyListItem[]>` |
|
|
155
|
-
| `createApiKey()` | `Promise<ApiKeyResponse>` |
|
|
162
|
+
| `createApiKey({ teamId? })` | `Promise<ApiKeyResponse>` |
|
|
156
163
|
| `revokeApiKey(id)` | `Promise<void>` |
|
|
157
164
|
|
|
158
165
|
### Transparency Log
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/** The statement's log anchor, tested against the log's own signed head.
|
|
2
|
+
*
|
|
3
|
+
* A certificate status statement is an OFF-LOG document. Nothing stops the
|
|
4
|
+
* issuer signing two of them, at the same instant, saying different things
|
|
5
|
+
* about the same record to two different readers — that is the split-view
|
|
6
|
+
* attack on revocation status, and no signature by the issuer can rule out a
|
|
7
|
+
* second signature by the issuer.
|
|
8
|
+
*
|
|
9
|
+
* What the statement DOES carry is an anchor: sth_tree_size and sth_root_hash,
|
|
10
|
+
* signed, naming the log head the issuer had in front of it when it spoke.
|
|
11
|
+
* Until now this CLI PRINTED that anchor and never checked it, so the field was
|
|
12
|
+
* decoration. Checking it does not make the statement append-only, and this
|
|
13
|
+
* file must not be read as claiming it does. What it buys is narrower and real:
|
|
14
|
+
*
|
|
15
|
+
* - A statement can no longer name a tree the log does not have. The anchor
|
|
16
|
+
* must be a PREFIX of the head the log publishes now, proved by an RFC 6962
|
|
17
|
+
* consistency proof, or this CLI refuses the statement.
|
|
18
|
+
* - So an issuer wanting to show two readers different revocation status has
|
|
19
|
+
* two options, and both leave marks. Anchor both statements to the same
|
|
20
|
+
* head, and the two statements are directly comparable signed evidence of
|
|
21
|
+
* equivocation. Anchor them to different heads, and the log itself has
|
|
22
|
+
* forked — which is what the witness's published record exists to catch,
|
|
23
|
+
* and which no amount of re-signing can hide.
|
|
24
|
+
*
|
|
25
|
+
* What it does NOT close: a reader who checks one statement, alone, against a
|
|
26
|
+
* log the issuer also controls learns only that the issuer is self-consistent.
|
|
27
|
+
* Split view is detected by comparing notes — between readers, or against the
|
|
28
|
+
* witness — and this check is what makes the note worth comparing.
|
|
29
|
+
*
|
|
30
|
+
* This is a port of cmd/cli/anchor.go, verdict for verdict and word for word.
|
|
31
|
+
* Three CLIs that disagree about the same record are worse than one that never
|
|
32
|
+
* checked, so the detail strings are copied rather than paraphrased: a reader
|
|
33
|
+
* diffing the Go and the npm output must see the same line.
|
|
34
|
+
*/
|
|
35
|
+
import type { CryptoOps } from "./crypto.js";
|
|
36
|
+
import type { PublicKeyInfo } from "./verify.js";
|
|
37
|
+
/** What a reader learns about a statement's log anchor.
|
|
38
|
+
*
|
|
39
|
+
* The three words are the whole point of the feature, and the two that are not
|
|
40
|
+
* CONFIRMED are not interchangeable:
|
|
41
|
+
*
|
|
42
|
+
* - UNVERIFIED — the log could not be asked, or its answer could not be read.
|
|
43
|
+
* NOT a refusal: the statement still verifies on its own signature, and the
|
|
44
|
+
* exit code is what it would have been without this check. But the reader
|
|
45
|
+
* must not be told the anchor was checked.
|
|
46
|
+
* - INCONSISTENT — the log published a head the anchored one cannot be a
|
|
47
|
+
* prefix of. That is the issuer contradicting itself about an append-only
|
|
48
|
+
* structure, proved from its own signatures, and it is a refusal.
|
|
49
|
+
*/
|
|
50
|
+
export type AnchorVerdict = "CONFIRMED" | "UNVERIFIED" | "INCONSISTENT";
|
|
51
|
+
export declare const ANCHOR_CONFIRMED = "CONFIRMED";
|
|
52
|
+
export declare const ANCHOR_UNVERIFIED = "UNVERIFIED";
|
|
53
|
+
export declare const ANCHOR_INCONSISTENT = "INCONSISTENT";
|
|
54
|
+
export interface AnchorResult {
|
|
55
|
+
readonly verdict: AnchorVerdict;
|
|
56
|
+
readonly detail: string;
|
|
57
|
+
}
|
|
58
|
+
/** Test the statement's signed anchor against the log's own signed head.
|
|
59
|
+
*
|
|
60
|
+
* `key` is the key that signed the STATEMENT, taken from the reader's --keys
|
|
61
|
+
* file. The head is verified against it before a single field of the head is
|
|
62
|
+
* used: an unverified head is an unattributed one, and letting it decide
|
|
63
|
+
* whether the anchor is consistent would hand that decision to whoever answered
|
|
64
|
+
* the HTTP request.
|
|
65
|
+
*
|
|
66
|
+
* `statement` must already have passed unwrapStatusStatement, which is what
|
|
67
|
+
* guarantees `sth_root_hash` is 32 bytes of hex. That is the boundary check;
|
|
68
|
+
* this function does not repeat it.
|
|
69
|
+
*/
|
|
70
|
+
export declare function checkStatementAnchor(crypto: CryptoOps, apiUrl: string, statement: Record<string, unknown>, key: PublicKeyInfo): Promise<AnchorResult>;
|
|
71
|
+
//# sourceMappingURL=anchor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anchor.d.ts","sourceRoot":"","sources":["../../src/anchor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAQ7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,YAAY,GAAG,cAAc,CAAC;AAExE,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAC5C,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAC9C,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAElD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAcD;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,YAAY,CAAC,CAqFvB"}
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/** The statement's log anchor, tested against the log's own signed head.
|
|
3
|
+
*
|
|
4
|
+
* A certificate status statement is an OFF-LOG document. Nothing stops the
|
|
5
|
+
* issuer signing two of them, at the same instant, saying different things
|
|
6
|
+
* about the same record to two different readers — that is the split-view
|
|
7
|
+
* attack on revocation status, and no signature by the issuer can rule out a
|
|
8
|
+
* second signature by the issuer.
|
|
9
|
+
*
|
|
10
|
+
* What the statement DOES carry is an anchor: sth_tree_size and sth_root_hash,
|
|
11
|
+
* signed, naming the log head the issuer had in front of it when it spoke.
|
|
12
|
+
* Until now this CLI PRINTED that anchor and never checked it, so the field was
|
|
13
|
+
* decoration. Checking it does not make the statement append-only, and this
|
|
14
|
+
* file must not be read as claiming it does. What it buys is narrower and real:
|
|
15
|
+
*
|
|
16
|
+
* - A statement can no longer name a tree the log does not have. The anchor
|
|
17
|
+
* must be a PREFIX of the head the log publishes now, proved by an RFC 6962
|
|
18
|
+
* consistency proof, or this CLI refuses the statement.
|
|
19
|
+
* - So an issuer wanting to show two readers different revocation status has
|
|
20
|
+
* two options, and both leave marks. Anchor both statements to the same
|
|
21
|
+
* head, and the two statements are directly comparable signed evidence of
|
|
22
|
+
* equivocation. Anchor them to different heads, and the log itself has
|
|
23
|
+
* forked — which is what the witness's published record exists to catch,
|
|
24
|
+
* and which no amount of re-signing can hide.
|
|
25
|
+
*
|
|
26
|
+
* What it does NOT close: a reader who checks one statement, alone, against a
|
|
27
|
+
* log the issuer also controls learns only that the issuer is self-consistent.
|
|
28
|
+
* Split view is detected by comparing notes — between readers, or against the
|
|
29
|
+
* witness — and this check is what makes the note worth comparing.
|
|
30
|
+
*
|
|
31
|
+
* This is a port of cmd/cli/anchor.go, verdict for verdict and word for word.
|
|
32
|
+
* Three CLIs that disagree about the same record are worse than one that never
|
|
33
|
+
* checked, so the detail strings are copied rather than paraphrased: a reader
|
|
34
|
+
* diffing the Go and the npm output must see the same line.
|
|
35
|
+
*/
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.ANCHOR_INCONSISTENT = exports.ANCHOR_UNVERIFIED = exports.ANCHOR_CONFIRMED = void 0;
|
|
38
|
+
exports.checkStatementAnchor = checkStatementAnchor;
|
|
39
|
+
const verify_js_1 = require("./verify.js");
|
|
40
|
+
exports.ANCHOR_CONFIRMED = "CONFIRMED";
|
|
41
|
+
exports.ANCHOR_UNVERIFIED = "UNVERIFIED";
|
|
42
|
+
exports.ANCHOR_INCONSISTENT = "INCONSISTENT";
|
|
43
|
+
/** How much of a log response this will buffer, matching cmd/cli/online.go.
|
|
44
|
+
* A head is a few hundred bytes and a consistency proof is at most 64 hashes;
|
|
45
|
+
* anything near this size is a misbehaving or hostile server, not an answer. */
|
|
46
|
+
const MAX_RESPONSE_BYTES = 1 << 20;
|
|
47
|
+
const REQUEST_TIMEOUT_MS = 10_000;
|
|
48
|
+
/** Test the statement's signed anchor against the log's own signed head.
|
|
49
|
+
*
|
|
50
|
+
* `key` is the key that signed the STATEMENT, taken from the reader's --keys
|
|
51
|
+
* file. The head is verified against it before a single field of the head is
|
|
52
|
+
* used: an unverified head is an unattributed one, and letting it decide
|
|
53
|
+
* whether the anchor is consistent would hand that decision to whoever answered
|
|
54
|
+
* the HTTP request.
|
|
55
|
+
*
|
|
56
|
+
* `statement` must already have passed unwrapStatusStatement, which is what
|
|
57
|
+
* guarantees `sth_root_hash` is 32 bytes of hex. That is the boundary check;
|
|
58
|
+
* this function does not repeat it.
|
|
59
|
+
*/
|
|
60
|
+
async function checkStatementAnchor(crypto, apiUrl, statement, key) {
|
|
61
|
+
const treeSize = statement.sth_tree_size;
|
|
62
|
+
if (typeof treeSize !== "number" || !Number.isSafeInteger(treeSize) || treeSize < 0) {
|
|
63
|
+
// Go's uint64 field would have failed to unmarshal, taking the whole
|
|
64
|
+
// document with it; here the document already parsed, so the anchor is what
|
|
65
|
+
// is unusable. Either way nothing was established, which is UNVERIFIED.
|
|
66
|
+
return unverified("the statement's anchored tree size is not a usable integer");
|
|
67
|
+
}
|
|
68
|
+
if (treeSize === 0)
|
|
69
|
+
return unverified("the statement names no log head to anchor to");
|
|
70
|
+
let head;
|
|
71
|
+
try {
|
|
72
|
+
head = await fetchLogHead(apiUrl);
|
|
73
|
+
}
|
|
74
|
+
catch (e) {
|
|
75
|
+
return unverified(`could not read the log head: ${message(e)}`);
|
|
76
|
+
}
|
|
77
|
+
let headPayload;
|
|
78
|
+
try {
|
|
79
|
+
headPayload = (0, verify_js_1.buildTreeHeadPayload)(head);
|
|
80
|
+
}
|
|
81
|
+
catch (e) {
|
|
82
|
+
return unverified(`could not rebuild the log head payload: ${message(e)}`);
|
|
83
|
+
}
|
|
84
|
+
const headSignature = (0, verify_js_1.hexToBytes)(head.signature);
|
|
85
|
+
if (!(await crypto.ed25519Verify(key.keyBytes, headPayload, headSignature))) {
|
|
86
|
+
return unverified("the log head is not signed by the key that signed the statement, so it says nothing about it");
|
|
87
|
+
}
|
|
88
|
+
const headSize = head.tree_size;
|
|
89
|
+
const headRoot = (0, verify_js_1.hexToBytes)(head.root_hash);
|
|
90
|
+
const statementRoot = (0, verify_js_1.hexToBytes)(statement.sth_root_hash);
|
|
91
|
+
// A head SMALLER than one the same issuer signed into a statement means the
|
|
92
|
+
// log went backwards. An append-only structure cannot do that, so this needs
|
|
93
|
+
// no proof to refuse.
|
|
94
|
+
if (headSize < treeSize) {
|
|
95
|
+
return {
|
|
96
|
+
verdict: exports.ANCHOR_INCONSISTENT,
|
|
97
|
+
detail: `the statement is anchored to tree size ${treeSize} but the log now publishes ` +
|
|
98
|
+
`${headSize} — an append-only log does not shrink`,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
if (headSize === treeSize) {
|
|
102
|
+
// Consistency is equality at the same size, and it still has to be checked
|
|
103
|
+
// rather than assumed: two different roots signed for one tree size is the
|
|
104
|
+
// fork, stated as plainly as it can be.
|
|
105
|
+
if (!bytesEqual(headRoot, statementRoot)) {
|
|
106
|
+
return {
|
|
107
|
+
verdict: exports.ANCHOR_INCONSISTENT,
|
|
108
|
+
detail: `two different roots signed for tree size ${treeSize}: ` +
|
|
109
|
+
`${(0, verify_js_1.bytesToHex)(statementRoot.slice(0, 8))} in the statement, ` +
|
|
110
|
+
`${(0, verify_js_1.bytesToHex)(headRoot.slice(0, 8))} from the log`,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
return {
|
|
114
|
+
verdict: exports.ANCHOR_CONFIRMED,
|
|
115
|
+
detail: `statement anchored to the log's current head (tree size ${headSize})`,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
let proof;
|
|
119
|
+
try {
|
|
120
|
+
proof = await fetchConsistencyProof(apiUrl, treeSize, headSize);
|
|
121
|
+
}
|
|
122
|
+
catch (e) {
|
|
123
|
+
return unverified(`could not read a consistency proof: ${message(e)}`);
|
|
124
|
+
}
|
|
125
|
+
if (!(await (0, verify_js_1.verifyConsistency)(crypto, treeSize, headSize, statementRoot, headRoot, proof))) {
|
|
126
|
+
return {
|
|
127
|
+
verdict: exports.ANCHOR_INCONSISTENT,
|
|
128
|
+
detail: `the log cannot prove tree size ${treeSize} is a prefix of its current size ` +
|
|
129
|
+
`${headSize} — the statement is anchored to a different history`,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
verdict: exports.ANCHOR_CONFIRMED,
|
|
134
|
+
detail: `statement's head (tree size ${treeSize}) proved to be a prefix of the log's ` +
|
|
135
|
+
`current head (tree size ${headSize})`,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
function unverified(detail) {
|
|
139
|
+
return { verdict: exports.ANCHOR_UNVERIFIED, detail };
|
|
140
|
+
}
|
|
141
|
+
function message(e) {
|
|
142
|
+
return e instanceof Error ? e.message : String(e);
|
|
143
|
+
}
|
|
144
|
+
function bytesEqual(a, b) {
|
|
145
|
+
if (a.length !== b.length)
|
|
146
|
+
return false;
|
|
147
|
+
for (let i = 0; i < a.length; i++)
|
|
148
|
+
if (a[i] !== b[i])
|
|
149
|
+
return false;
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
/** Read GET /v1/log/head and validate every field the signature covers.
|
|
153
|
+
*
|
|
154
|
+
* `log_id` is one of them. The endpoint serves none today (handler/log.go
|
|
155
|
+
* signedTreeHeadResponse) and BurnLedger's signer refuses to issue a head that
|
|
156
|
+
* names a log, but buildTreeHeadPayload picks the signing domain from the
|
|
157
|
+
* field, so a head that carries one has to reach it: dropped, the head rebuilds
|
|
158
|
+
* under burnledger.sth.v3, fails its signature and is reported unattributable —
|
|
159
|
+
* while the record path verifies the very same bytes. cmd/cli/anchor.go reads
|
|
160
|
+
* exactly these five fields, and all three CLIs are held to one fixture,
|
|
161
|
+
* testdata/named_head_anchor.json, so a head from a log that stamps its id gets
|
|
162
|
+
* one verdict rather than three.
|
|
163
|
+
*/
|
|
164
|
+
async function fetchLogHead(apiUrl) {
|
|
165
|
+
const envelope = await getJson(`${base(apiUrl)}/v1/log/head`);
|
|
166
|
+
const body = unwrapData(envelope);
|
|
167
|
+
const treeSize = body.tree_size;
|
|
168
|
+
if (typeof treeSize !== "number" || !Number.isSafeInteger(treeSize) || treeSize < 0) {
|
|
169
|
+
throw new Error("log head: tree_size is not an exact non-negative integer");
|
|
170
|
+
}
|
|
171
|
+
requireHex(body, "root_hash", 32);
|
|
172
|
+
requireHex(body, "signature", 64);
|
|
173
|
+
// Absent and null both mean "names no log", as they do for Go's string
|
|
174
|
+
// field; anything else that is not a string is a head this build cannot
|
|
175
|
+
// read, which Go's decoder also refuses.
|
|
176
|
+
if (body.log_id != null && typeof body.log_id !== "string") {
|
|
177
|
+
throw new Error("log head: log_id is not a string");
|
|
178
|
+
}
|
|
179
|
+
// Validated here rather than left to the payload rebuild, so that a head with
|
|
180
|
+
// an unreadable timestamp reports the same thing the Go CLI reports.
|
|
181
|
+
try {
|
|
182
|
+
(0, verify_js_1.formatTimestamp)(body.timestamp);
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
throw new Error("log head: timestamp is not RFC 3339");
|
|
186
|
+
}
|
|
187
|
+
return body;
|
|
188
|
+
}
|
|
189
|
+
async function fetchConsistencyProof(apiUrl, oldSize, newSize) {
|
|
190
|
+
const url = `${base(apiUrl)}/v1/log/proof/consistency?old_size=${oldSize}&new_size=${newSize}`;
|
|
191
|
+
const body = unwrapData(await getJson(url));
|
|
192
|
+
const raw = body.proof;
|
|
193
|
+
// Go decodes `"proof": null` to an empty slice, and an empty proof is a real
|
|
194
|
+
// answer at some tree sizes. An absent or null field is that, not an error.
|
|
195
|
+
if (raw === null || raw === undefined)
|
|
196
|
+
return [];
|
|
197
|
+
if (!Array.isArray(raw))
|
|
198
|
+
throw new Error("consistency proof: proof is not an array");
|
|
199
|
+
return raw.map((h, i) => {
|
|
200
|
+
if (typeof h !== "string" || !/^[0-9a-fA-F]{64}$/.test(h)) {
|
|
201
|
+
throw new Error(`consistency proof: proof[${i}] is not 32 bytes of hex`);
|
|
202
|
+
}
|
|
203
|
+
return (0, verify_js_1.hexToBytes)(h);
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
function base(apiUrl) {
|
|
207
|
+
return apiUrl.replace(/\/+$/, "");
|
|
208
|
+
}
|
|
209
|
+
/** The API wraps every response in {"data": ...}. A body with no data object is
|
|
210
|
+
* an answer this build cannot read — never a finding about the record. */
|
|
211
|
+
function unwrapData(parsed) {
|
|
212
|
+
if (parsed === null || typeof parsed !== "object") {
|
|
213
|
+
throw new Error("response is not a JSON object");
|
|
214
|
+
}
|
|
215
|
+
const doc = parsed;
|
|
216
|
+
const data = doc.data;
|
|
217
|
+
if (data === null || typeof data !== "object") {
|
|
218
|
+
throw new Error("response has no data object");
|
|
219
|
+
}
|
|
220
|
+
return data;
|
|
221
|
+
}
|
|
222
|
+
function requireHex(doc, field, bytes) {
|
|
223
|
+
const v = doc[field];
|
|
224
|
+
if (typeof v !== "string" || !new RegExp(`^[0-9a-fA-F]{${bytes * 2}}$`).test(v)) {
|
|
225
|
+
throw new Error(`log head: ${field} is not ${bytes} bytes of hex`);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
/** Read one public log endpoint under the same size cap and timeout as the
|
|
229
|
+
* status fetch, and with the same absence of credentials: every endpoint this
|
|
230
|
+
* file touches is public by design, and sending an API key to whatever
|
|
231
|
+
* --api-url happens to point at is a credential leak the check never needed. */
|
|
232
|
+
async function getJson(url) {
|
|
233
|
+
const controller = new AbortController();
|
|
234
|
+
const timer = setTimeout(() => { controller.abort(); }, REQUEST_TIMEOUT_MS);
|
|
235
|
+
try {
|
|
236
|
+
const res = await fetch(url, { signal: controller.signal });
|
|
237
|
+
const body = await readCapped(res);
|
|
238
|
+
if (!res.ok)
|
|
239
|
+
throw new Error(`API returned ${res.status}`);
|
|
240
|
+
try {
|
|
241
|
+
return JSON.parse(body);
|
|
242
|
+
}
|
|
243
|
+
catch (e) {
|
|
244
|
+
throw new Error(`parse response: ${message(e)}`);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
finally {
|
|
248
|
+
clearTimeout(timer);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
/** Read a response body, stopping at the cap instead of buffering whatever a
|
|
252
|
+
* hostile server decides to send. The stream is cancelled on the way out, so an
|
|
253
|
+
* endless body costs one megabyte and not the process. */
|
|
254
|
+
async function readCapped(res) {
|
|
255
|
+
const reader = res.body?.getReader();
|
|
256
|
+
if (reader === undefined)
|
|
257
|
+
return "";
|
|
258
|
+
const chunks = [];
|
|
259
|
+
let total = 0;
|
|
260
|
+
for (;;) {
|
|
261
|
+
const { done, value } = await reader.read();
|
|
262
|
+
if (done)
|
|
263
|
+
break;
|
|
264
|
+
total += value.length;
|
|
265
|
+
if (total > MAX_RESPONSE_BYTES) {
|
|
266
|
+
await reader.cancel();
|
|
267
|
+
throw new Error(`read response: body exceeds ${MAX_RESPONSE_BYTES} bytes`);
|
|
268
|
+
}
|
|
269
|
+
chunks.push(value);
|
|
270
|
+
}
|
|
271
|
+
const joined = new Uint8Array(total);
|
|
272
|
+
let at = 0;
|
|
273
|
+
for (const c of chunks) {
|
|
274
|
+
joined.set(c, at);
|
|
275
|
+
at += c.length;
|
|
276
|
+
}
|
|
277
|
+
return new TextDecoder().decode(joined);
|
|
278
|
+
}
|
|
279
|
+
//# sourceMappingURL=anchor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anchor.js","sourceRoot":"","sources":["../../src/anchor.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/client.d.ts
CHANGED
|
@@ -3,14 +3,25 @@
|
|
|
3
3
|
* Single class — Node.js is all-async, no sync/async split needed.
|
|
4
4
|
* Pagination uses AsyncIterable<T> via Paginator.
|
|
5
5
|
*/
|
|
6
|
-
import type { ApiKeyListItem, ApiKeyResponse, Attestation, BatchAttestationResponse, CertificateResponse, CertificateStats, ConsistencyProof, InclusionProof, LogEntry, Profile, RevocationStatus, SignedTreeHead, System, SystemHealth, VerifyResult, Webhook, WebhookDelivery, WebhookRotateResponse } from "./models.js";
|
|
6
|
+
import type { ApiKeyListItem, ApiKeyResponse, Attestation, BatchAttestationResponse, BatchRevokeResponse, CertificateResponse, CertificateStats, ConsistencyProof, InclusionProof, LogEntry, Profile, RevocationStatus, SignedTreeHead, System, SystemHealth, VerifyResult, Webhook, WebhookDelivery, WebhookRotateResponse } from "./models.js";
|
|
7
7
|
import { Paginator } from "./pagination.js";
|
|
8
8
|
export interface BurnLedgerOptions {
|
|
9
9
|
apiKey: string;
|
|
10
10
|
baseUrl?: string;
|
|
11
11
|
timeout?: number;
|
|
12
12
|
maxRetries?: number;
|
|
13
|
+
/**
|
|
14
|
+
* Team to act as, sent as X-Team-ID beside the key.
|
|
15
|
+
*
|
|
16
|
+
* Omit it and the API uses the caller's default team — the first one they
|
|
17
|
+
* joined — which is the right answer for a single-team account and the wrong
|
|
18
|
+
* one for anybody else.
|
|
19
|
+
*/
|
|
20
|
+
teamId?: string;
|
|
13
21
|
}
|
|
22
|
+
/** Per-call cap on POST /v1/certificates/batch-revoke, the same 100 the
|
|
23
|
+
* server enforces (service.maxBatchRevoke). Chunk larger sets by this. */
|
|
24
|
+
export declare const MAX_BATCH_REVOKE = 100;
|
|
14
25
|
export declare class BurnLedger {
|
|
15
26
|
private readonly transport;
|
|
16
27
|
constructor(opts: BurnLedgerOptions);
|
|
@@ -69,6 +80,11 @@ export declare class BurnLedger {
|
|
|
69
80
|
revokeCertificate(certificateId: string, opts: {
|
|
70
81
|
reason: string;
|
|
71
82
|
}): Promise<CertificateResponse>;
|
|
83
|
+
/** Revokes up to MAX_BATCH_REVOKE records under one reason. Partial
|
|
84
|
+
* completion is the normal case, not an exception: inspect `errors`. */
|
|
85
|
+
batchRevokeCertificates(certificateIds: string[], opts: {
|
|
86
|
+
reason: string;
|
|
87
|
+
}): Promise<BatchRevokeResponse>;
|
|
72
88
|
getCertificateStats(): Promise<CertificateStats>;
|
|
73
89
|
exportCertificates(opts?: {
|
|
74
90
|
format?: "csv" | "jsonl";
|
|
@@ -93,9 +109,17 @@ export declare class BurnLedger {
|
|
|
93
109
|
listApiKeys(opts?: {
|
|
94
110
|
limit?: number;
|
|
95
111
|
}): Paginator<ApiKeyListItem>;
|
|
96
|
-
|
|
112
|
+
/** Create an API key. `teamId` pins it to one team the caller belongs to:
|
|
113
|
+
* a pinned key always acts for that team and refuses a conflicting
|
|
114
|
+
* `X-Team-ID` with 403. Omitted means unpinned — the server resolves the
|
|
115
|
+
* team per request, as every key created before pinning existed does. */
|
|
116
|
+
createApiKey(params?: {
|
|
117
|
+
teamId?: string;
|
|
118
|
+
}): Promise<ApiKeyResponse>;
|
|
97
119
|
revokeApiKey(keyId: string): Promise<void>;
|
|
98
120
|
getMe(): Promise<Profile>;
|
|
121
|
+
/** Rename the account. `email` must be the current address: changing it
|
|
122
|
+
* needs a dashboard session, and an API key is refused with 403. */
|
|
99
123
|
updateMe(params: {
|
|
100
124
|
name: string;
|
|
101
125
|
email: string;
|
package/dist/cjs/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,WAAW,EACX,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,OAAO,EACP,gBAAgB,EAChB,cAAc,EACd,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,eAAe,EACf,qBAAqB,EACtB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/client.js
CHANGED
|
@@ -38,11 +38,14 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
38
38
|
};
|
|
39
39
|
})();
|
|
40
40
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
-
exports.BurnLedger = void 0;
|
|
41
|
+
exports.BurnLedger = exports.MAX_BATCH_REVOKE = void 0;
|
|
42
42
|
const errors_js_1 = require("./errors.js");
|
|
43
43
|
const http_js_1 = require("./http.js");
|
|
44
44
|
const models_js_1 = require("./models.js");
|
|
45
45
|
const pagination_js_1 = require("./pagination.js");
|
|
46
|
+
/** Per-call cap on POST /v1/certificates/batch-revoke, the same 100 the
|
|
47
|
+
* server enforces (service.maxBatchRevoke). Chunk larger sets by this. */
|
|
48
|
+
exports.MAX_BATCH_REVOKE = 100;
|
|
46
49
|
class BurnLedger {
|
|
47
50
|
transport;
|
|
48
51
|
constructor(opts) {
|
|
@@ -51,6 +54,7 @@ class BurnLedger {
|
|
|
51
54
|
apiKey: opts.apiKey,
|
|
52
55
|
timeout: opts.timeout ?? 30,
|
|
53
56
|
maxRetries: opts.maxRetries ?? 2,
|
|
57
|
+
teamId: opts.teamId,
|
|
54
58
|
});
|
|
55
59
|
}
|
|
56
60
|
close() {
|
|
@@ -180,6 +184,17 @@ class BurnLedger {
|
|
|
180
184
|
const data = await this.transport.request("POST", `/v1/certificates/${certificateId}/revoke`, { json: { reason: opts.reason } });
|
|
181
185
|
return (0, models_js_1.parseCertificateResponse)(data);
|
|
182
186
|
}
|
|
187
|
+
/** Revokes up to MAX_BATCH_REVOKE records under one reason. Partial
|
|
188
|
+
* completion is the normal case, not an exception: inspect `errors`. */
|
|
189
|
+
async batchRevokeCertificates(certificateIds, opts) {
|
|
190
|
+
if (certificateIds.length > exports.MAX_BATCH_REVOKE) {
|
|
191
|
+
// The server answers 400 and revokes nothing; failing here spares the
|
|
192
|
+
// caller a rate-limited round trip for a request that cannot succeed.
|
|
193
|
+
throw new Error(`batchRevokeCertificates: ${certificateIds.length} ids exceeds the limit of ${exports.MAX_BATCH_REVOKE} per call`);
|
|
194
|
+
}
|
|
195
|
+
const data = await this.transport.request("POST", "/v1/certificates/batch-revoke", { json: { certificate_ids: certificateIds, reason: opts.reason } });
|
|
196
|
+
return (0, models_js_1.parseBatchRevokeResponse)(data);
|
|
197
|
+
}
|
|
183
198
|
async getCertificateStats() {
|
|
184
199
|
const data = await this.transport.request("GET", "/v1/certificates/stats");
|
|
185
200
|
return (0, models_js_1.parseCertificateStats)(data);
|
|
@@ -233,10 +248,15 @@ class BurnLedger {
|
|
|
233
248
|
listApiKeys(opts) {
|
|
234
249
|
return new pagination_js_1.Paginator(this.transport, "/v1/api-keys", models_js_1.parseApiKeyListItem, { params: { limit: opts?.limit ?? 25 } });
|
|
235
250
|
}
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
251
|
+
/** Create an API key. `teamId` pins it to one team the caller belongs to:
|
|
252
|
+
* a pinned key always acts for that team and refuses a conflicting
|
|
253
|
+
* `X-Team-ID` with 403. Omitted means unpinned — the server resolves the
|
|
254
|
+
* team per request, as every key created before pinning existed does. */
|
|
255
|
+
async createApiKey(params) {
|
|
256
|
+
const json = {};
|
|
257
|
+
if (params?.teamId !== undefined)
|
|
258
|
+
json.team_id = params.teamId;
|
|
259
|
+
const data = await this.transport.request("POST", "/v1/api-keys", { json });
|
|
240
260
|
return (0, models_js_1.parseApiKeyResponse)(data);
|
|
241
261
|
}
|
|
242
262
|
async revokeApiKey(keyId) {
|
|
@@ -247,6 +267,8 @@ class BurnLedger {
|
|
|
247
267
|
const data = await this.transport.request("GET", "/v1/me");
|
|
248
268
|
return (0, models_js_1.parseProfile)(data);
|
|
249
269
|
}
|
|
270
|
+
/** Rename the account. `email` must be the current address: changing it
|
|
271
|
+
* needs a dashboard session, and an API key is refused with 403. */
|
|
250
272
|
async updateMe(params) {
|
|
251
273
|
const data = await this.transport.request("PATCH", "/v1/me", {
|
|
252
274
|
json: { name: params.name, email: params.email },
|
package/dist/cjs/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,2CAA2D;AAC3D,uCAAsC;AAqBtC,2CAmBqB;AACrB,mDAA4C;AAW5C;IACmB,SAAS,CAAY;IAEtC,YAAY,IAAuB;QACjC,IAAI,CAAC,SAAS,GAAG,IAAI,mBAAS,CAAC;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,2BAA2B;YACpD,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,CAAC;SACjC,CAAC,CAAC;IACL,CAAC;IAED,KAAK;QACH,oEAAoE;QACpE,2DAA2D;IAC7D,CAAC;IAED,CAAC,MAAM,CAAC,YAAY,CAAC;QACnB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,kBAAkB;IAElB,KAAK,CAAC,cAAc,CAAC,IAepB;QACC,MAAM,MAAM,GAAG,uBAAuB,CACpC,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,GAAG,CACT,CAAC;QACF,MAAM,IAAI,GAAG;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,cAAc,EAAE,IAAI,CAAC,aAAa;YAClC,iBAAiB,EAAE,MAAM;YACzB,aAAa,EAAE,IAAI,CAAC,YAAY;YAChC,UAAU,EAAE,IAAI,CAAC,SAAS,IAAI,WAAW;YACzC,YAAY,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;YACtC,WAAW,EAAE,IAAI,CAAC,UAAU,IAAI,SAAS;YACzC,SAAS,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;YACnD,aAAa,EAAE,IAAI,CAAC,YAAY,IAAI,KAAK;SAC1C,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE;YAC/D,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;QACH,OAAO,IAAA,uBAAW,EAAC,IAAW,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAgB;QAC9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CACvC,KAAK,EACL,eAAe,QAAQ,EAAE,CAC1B,CAAC;QACF,OAAO,IAAA,uBAAW,EAAC,IAAW,CAAC,CAAC;IAClC,CAAC;IAED,WAAW,CAAC,IAAyB;QACnC,OAAO,IAAI,yBAAS,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,uBAAW,EAAE;YAC/D,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,EAAE;SACrC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,QAAgB;QACrC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,eAAe,QAAQ,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAgB;QAChC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CACvC,MAAM,EACN,eAAe,QAAQ,eAAe,CACvC,CAAC;QACF,OAAO,IAAA,uBAAW,EAAC,IAAW,CAAC,CAAC;IAClC,CAAC;IAED,uBAAuB;IAEvB,KAAK,CAAC,MAAM,CACV,iBAAyB,EACzB,IAKC;QAED,MAAM,IAAI,GAA4B;YACpC,kBAAkB,EAAE,iBAAiB;YACrC,UAAU,EAAE,IAAI,EAAE,SAAS,IAAI,OAAO;YACtC,UAAU,EAAE,IAAI,EAAE,SAAS,IAAI,KAAK;SACrC,CAAC;QACF,IAAI,IAAI,EAAE,SAAS,KAAK,SAAS;YAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;QACpE,IAAI,IAAI,EAAE,UAAU,KAAK,SAAS;YAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;QAEvE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,kBAAkB,EAAE;YACpE,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;QACH,OAAO,IAAA,4BAAgB,EAAC,IAAW,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,aAAqB;QACxC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CACvC,KAAK,EACL,oBAAoB,aAAa,EAAE,CACpC,CAAC;QACF,OAAO,IAAA,4BAAgB,EAAC,IAAW,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,OAAO,CACX,aAAqB,EACrB,IAAkD;QAElD,OAAO,IAAI,CAAC;YACV,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;YAC/C,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,sBAAsB;YACpD,SAAS,EAAE,WAAW,aAAa,GAAG;YACtC,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE;YAC5B,YAAY,EAAE,IAAI,EAAE,YAAY,IAAI,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CACV,aAAqB,EACrB,iBAAyB,EACzB,IAAkD;QAElD,MAAM,IAAI,GAAG,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;QACvD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CACvC,MAAM,EACN,oBAAoB,aAAa,SAAS,EAC1C,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;QACF,MAAM,MAAM,GAAG,IAAA,6BAAiB,EAAC,IAAW,CAAC,CAAC;QAE9C,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,CAAC,CAAC;QACnC,IAAI,OAAO,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAClD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC;YACV,KAAK,EAAE,KAAK,IAAI,EAAE;gBAChB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CACpC,MAAM,EACN,oBAAoB,aAAa,SAAS,EAC1C,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;gBACF,OAAO,IAAA,6BAAiB,EAAC,CAAQ,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW;YACrC,SAAS,EAAE,UAAU,aAAa,GAAG;YACrC,OAAO;YACP,YAAY,EAAE,IAAI,EAAE,YAAY,IAAI,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAKjB;QACC,MAAM,IAAI,GAAG;YACX,mBAAmB,EAAE,IAAI,CAAC,kBAAkB;YAC5C,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,UAAU,EAAE,IAAI,CAAC,SAAS,IAAI,OAAO;YACrC,UAAU,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK;SACpC,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,wBAAwB,EAAE;YAC1E,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;QACH,OAAO,IAAA,yCAA6B,EAAC,IAAW,CAAC,CAAC;IACpD,CAAC;IAED,uBAAuB;IAEvB,KAAK,CAAC,cAAc,CAAC,aAAqB;QACxC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CACvC,KAAK,EACL,oBAAoB,aAAa,EAAE,CACpC,CAAC;QACF,OAAO,IAAA,oCAAwB,EAAC,IAAW,CAAC,CAAC;IAC/C,CAAC;IAED,gBAAgB,CAAC,IAEhB;QACC,OAAO,IAAI,yBAAS,CAClB,IAAI,CAAC,SAAS,EACd,kBAAkB,EAClB,oCAAwB,EACxB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,EAAE,EAAE,CACzC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAAqB;QACrC,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAChC,KAAK,EACL,oBAAoB,aAAa,MAAM,CACxC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,aAAqB,EAAE,IAAY;QAC/C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,EAAE,SAAS,EAAE,GAAG,wDAAa,kBAAkB,GAAC,CAAC;QACvD,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,aAAqB;QAC7C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CACvC,KAAK,EACL,oBAAoB,aAAa,oBAAoB,CACtD,CAAC;QACF,OAAO,IAAA,iCAAqB,EAAC,IAAW,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,aAAqB,EACrB,IAAwB;QAExB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CACvC,MAAM,EACN,oBAAoB,aAAa,SAAS,EAC1C,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAClC,CAAC;QACF,OAAO,IAAA,oCAAwB,EAAC,IAAW,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;QAC3E,OAAO,IAAA,iCAAqB,EAAC,IAAW,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,IAKxB;QACC,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,IAAI,IAAI,EAAE,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5D,IAAI,IAAI,EAAE,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5D,IAAI,IAAI,EAAE,WAAW,KAAK,SAAS;YAAE,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;QAC5E,IAAI,IAAI,EAAE,YAAY,KAAK,SAAS;YAAE,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC;QAE/E,MAAM,EAAE,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC;QAC9E,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,mBAAmB;IAEnB,KAAK,CAAC,eAAe,CAAC,IAAqB;QACzC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE;YAChE,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;SACxB,CAAC,CAAC;QACH,OAAO,IAAA,wBAAY,EAAC,IAAW,CAAC,CAAC;IACnC,CAAC;IAED,YAAY,CAAC,IAAyB;QACpC,OAAO,IAAI,yBAAS,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,wBAAY,EAAE;YACjE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,EAAE;SACrC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,gBAAgB,SAAS,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,SAAiB;QACzC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CACvC,MAAM,EACN,gBAAgB,SAAS,gBAAgB,CAC1C,CAAC;QACF,OAAO,IAAA,sCAA0B,EAAC,IAAW,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,SAAiB;QAC3C,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAC1B,MAAM,EACN,gBAAgB,SAAS,kBAAkB,CAC5C,CAAC;IACJ,CAAC;IAED,oBAAoB,CAAC,IAAyB;QAC5C,OAAO,IAAI,yBAAS,CAClB,IAAI,CAAC,SAAS,EACd,gCAAgC,EAChC,gCAAoB,EACpB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,EAAE,EAAE,CACzC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,UAAkB;QACpC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAC1B,MAAM,EACN,2BAA2B,UAAU,QAAQ,CAC9C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,UAAkB;QACtC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAC1B,QAAQ,EACR,2BAA2B,UAAU,EAAE,CACxC,CAAC;IACJ,CAAC;IAED,mBAAmB;IAEnB,WAAW,CAAC,IAAyB;QACnC,OAAO,IAAI,yBAAS,CAClB,IAAI,CAAC,SAAS,EACd,cAAc,EACd,+BAAmB,EACnB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,EAAE,EAAE,CACzC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE;YAChE,IAAI,EAAE,EAAE;SACT,CAAC,CAAC;QACH,OAAO,IAAA,+BAAmB,EAAC,IAAW,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAa;QAC9B,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,gBAAgB,KAAK,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,kBAAkB;IAElB,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC3D,OAAO,IAAA,wBAAY,EAAC,IAAW,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAuC;QACpD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE;YAC3D,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;SACjD,CAAC,CAAC;QACH,OAAO,IAAA,wBAAY,EAAC,IAAW,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED,wBAAwB;IAExB,KAAK,CAAC,eAAe,CAAC,QAAgB;QACpC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CACvC,KAAK,EACL,eAAe,QAAQ,SAAS,CACjC,CAAC;QACF,OAAO,IAAA,6BAAiB,EAAC,IAAW,CAAC,CAAC;IACxC,CAAC;IAED,6CAA6C;IAE7C,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,EAAE;YAC/D,aAAa,EAAE,KAAK;SACrB,CAAC,CAAC;QACH,OAAO,IAAA,+BAAmB,EAAC,IAAW,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAa;QAC7B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CACvC,KAAK,EACL,iBAAiB,KAAK,EAAE,EACxB,EAAE,aAAa,EAAE,KAAK,EAAE,CACzB,CAAC;QACF,OAAO,IAAA,yBAAa,EAAC,IAAW,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAGnB;QACC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,iBAAiB,EAAE;YAClE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;YAC5C,aAAa,EAAE,KAAK;SACrB,CAAC,CAAC;QACH,OAAQ,IAAc,CAAC,GAAG,CAAC,yBAAa,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,IAGvB;QACC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CACvC,KAAK,EACL,yBAAyB,EACzB;YACE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE;YACvD,aAAa,EAAE,KAAK;SACrB,CACF,CAAC;QACF,OAAO,IAAA,+BAAmB,EAAC,IAAW,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,IAGzB;QACC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CACvC,KAAK,EACL,2BAA2B,EAC3B;YACE,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE;YAC1D,aAAa,EAAE,KAAK;SACrB,CACF,CAAC;QACF,OAAO,IAAA,iCAAqB,EAAC,IAAW,CAAC,CAAC;IAC5C,CAAC;CACF;;AAED,8EAA8E;AAC9E,+BAA+B;AAC/B,8EAA8E;AAE9E,SAAS,uBAAuB,CAC9B,gBAAqD,EACrD,GAAuB,EACvB,GAAuB;IAEvB,MAAM,WAAW,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,IAAI,WAAW,GAAG,CAAC,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CACb,mGAAmG,CACpG,CAAC;IACJ,CAAC;IACD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IACtC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IACtC,IAAI,gBAAgB,KAAK,SAAS;QAAE,OAAO,gBAAgB,CAAC;IAC5D,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,KAAK,UAAU,IAAI,CAAI,IAMtB;IACC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IAClD,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAExC,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QACvE,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,IAAI,wBAAY,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,MAAS,CAAC;QACd,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,0BAAc,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBAClE,MAAM,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;gBACnC,SAAS;YACX,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAChD,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,wBAAY,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;QACvB,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|