burnledger 0.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.
- package/README.md +182 -0
- package/dist/cjs/cli.d.ts +16 -0
- package/dist/cjs/cli.d.ts.map +1 -0
- package/dist/cjs/cli.js +168 -0
- package/dist/cjs/cli.js.map +1 -0
- package/dist/cjs/client.d.ts +116 -0
- package/dist/cjs/client.d.ts.map +1 -0
- package/dist/cjs/client.js +353 -0
- package/dist/cjs/client.js.map +1 -0
- package/dist/cjs/crypto-browser.d.ts +7 -0
- package/dist/cjs/crypto-browser.d.ts.map +1 -0
- package/dist/cjs/crypto-browser.js +37 -0
- package/dist/cjs/crypto-browser.js.map +1 -0
- package/dist/cjs/crypto-node.d.ts +4 -0
- package/dist/cjs/crypto-node.d.ts.map +1 -0
- package/dist/cjs/crypto-node.js +30 -0
- package/dist/cjs/crypto-node.js.map +1 -0
- package/dist/cjs/crypto.d.ts +6 -0
- package/dist/cjs/crypto.d.ts.map +1 -0
- package/dist/cjs/crypto.js +4 -0
- package/dist/cjs/crypto.js.map +1 -0
- package/dist/cjs/errors.d.ts +76 -0
- package/dist/cjs/errors.d.ts.map +1 -0
- package/dist/cjs/errors.js +119 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/http.d.ts +35 -0
- package/dist/cjs/http.d.ts.map +1 -0
- package/dist/cjs/http.js +160 -0
- package/dist/cjs/http.js.map +1 -0
- package/dist/cjs/index.browser.d.ts +31 -0
- package/dist/cjs/index.browser.d.ts.map +1 -0
- package/dist/cjs/index.browser.js +54 -0
- package/dist/cjs/index.browser.js.map +1 -0
- package/dist/cjs/index.d.ts +26 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +50 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/keys.d.ts +12 -0
- package/dist/cjs/keys.d.ts.map +1 -0
- package/dist/cjs/keys.js +17 -0
- package/dist/cjs/keys.js.map +1 -0
- package/dist/cjs/models.d.ts +197 -0
- package/dist/cjs/models.d.ts.map +1 -0
- package/dist/cjs/models.js +246 -0
- package/dist/cjs/models.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/pagination.d.ts +21 -0
- package/dist/cjs/pagination.d.ts.map +1 -0
- package/dist/cjs/pagination.js +50 -0
- package/dist/cjs/pagination.js.map +1 -0
- package/dist/cjs/verify.d.ts +50 -0
- package/dist/cjs/verify.d.ts.map +1 -0
- package/dist/cjs/verify.js +500 -0
- package/dist/cjs/verify.js.map +1 -0
- package/dist/cjs/webhooks.d.ts +36 -0
- package/dist/cjs/webhooks.d.ts.map +1 -0
- package/dist/cjs/webhooks.js +71 -0
- package/dist/cjs/webhooks.js.map +1 -0
- package/dist/esm/cli.d.ts +16 -0
- package/dist/esm/cli.d.ts.map +1 -0
- package/dist/esm/cli.js +164 -0
- package/dist/esm/cli.js.map +1 -0
- package/dist/esm/client.d.ts +116 -0
- package/dist/esm/client.d.ts.map +1 -0
- package/dist/esm/client.js +316 -0
- package/dist/esm/client.js.map +1 -0
- package/dist/esm/crypto-browser.d.ts +7 -0
- package/dist/esm/crypto-browser.d.ts.map +1 -0
- package/dist/esm/crypto-browser.js +34 -0
- package/dist/esm/crypto-browser.js.map +1 -0
- package/dist/esm/crypto-node.d.ts +4 -0
- package/dist/esm/crypto-node.d.ts.map +1 -0
- package/dist/esm/crypto-node.js +27 -0
- package/dist/esm/crypto-node.js.map +1 -0
- package/dist/esm/crypto.d.ts +6 -0
- package/dist/esm/crypto.d.ts.map +1 -0
- package/dist/esm/crypto.js +3 -0
- package/dist/esm/crypto.js.map +1 -0
- package/dist/esm/errors.d.ts +76 -0
- package/dist/esm/errors.d.ts.map +1 -0
- package/dist/esm/errors.js +105 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/http.d.ts +35 -0
- package/dist/esm/http.d.ts.map +1 -0
- package/dist/esm/http.js +156 -0
- package/dist/esm/http.js.map +1 -0
- package/dist/esm/index.browser.d.ts +31 -0
- package/dist/esm/index.browser.d.ts.map +1 -0
- package/dist/esm/index.browser.js +31 -0
- package/dist/esm/index.browser.js.map +1 -0
- package/dist/esm/index.d.ts +26 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +26 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/keys.d.ts +12 -0
- package/dist/esm/keys.d.ts.map +1 -0
- package/dist/esm/keys.js +14 -0
- package/dist/esm/keys.js.map +1 -0
- package/dist/esm/models.d.ts +197 -0
- package/dist/esm/models.d.ts.map +1 -0
- package/dist/esm/models.js +226 -0
- package/dist/esm/models.js.map +1 -0
- package/dist/esm/pagination.d.ts +21 -0
- package/dist/esm/pagination.d.ts.map +1 -0
- package/dist/esm/pagination.js +46 -0
- package/dist/esm/pagination.js.map +1 -0
- package/dist/esm/verify.d.ts +50 -0
- package/dist/esm/verify.d.ts.map +1 -0
- package/dist/esm/verify.js +491 -0
- package/dist/esm/verify.js.map +1 -0
- package/dist/esm/webhooks.d.ts +36 -0
- package/dist/esm/webhooks.d.ts.map +1 -0
- package/dist/esm/webhooks.js +67 -0
- package/dist/esm/webhooks.js.map +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/** Browser CryptoOps implementation using WebCrypto (crypto.subtle).
|
|
2
|
+
*
|
|
3
|
+
* Ed25519 support: Chrome 113+, Firefox 128+, Safari 17+.
|
|
4
|
+
*/
|
|
5
|
+
export const browserCrypto = {
|
|
6
|
+
async sha256(data) {
|
|
7
|
+
const hash = await crypto.subtle.digest("SHA-256", toBuffer(data));
|
|
8
|
+
return new Uint8Array(hash);
|
|
9
|
+
},
|
|
10
|
+
async ed25519Verify(publicKey, data, signature) {
|
|
11
|
+
try {
|
|
12
|
+
const spki = concatBytes(ED25519_DER_PREFIX, publicKey);
|
|
13
|
+
const key = await crypto.subtle.importKey("spki", toBuffer(spki), { name: "Ed25519" }, false, ["verify"]);
|
|
14
|
+
return crypto.subtle.verify("Ed25519", key, toBuffer(signature), toBuffer(data));
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
const ED25519_DER_PREFIX = new Uint8Array([
|
|
22
|
+
0x30, 0x2a, 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, 0x70, 0x03, 0x21, 0x00,
|
|
23
|
+
]);
|
|
24
|
+
/** Ensure the Uint8Array is backed by a plain ArrayBuffer (not SharedArrayBuffer). */
|
|
25
|
+
function toBuffer(data) {
|
|
26
|
+
return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
|
|
27
|
+
}
|
|
28
|
+
function concatBytes(a, b) {
|
|
29
|
+
const out = new Uint8Array(a.length + b.length);
|
|
30
|
+
out.set(a, 0);
|
|
31
|
+
out.set(b, a.length);
|
|
32
|
+
return out;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=crypto-browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto-browser.js","sourceRoot":"","sources":["../../src/crypto-browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,CAAC,MAAM,aAAa,GAAc;IACtC,KAAK,CAAC,MAAM,CAAC,IAAgB;QAC3B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACnE,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,SAAqB,EACrB,IAAgB,EAChB,SAAqB;QAErB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,WAAW,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;YACxD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CACvC,MAAM,EACN,QAAQ,CAAC,IAAI,CAAC,EACd,EAAE,IAAI,EAAE,SAAS,EAAE,EACnB,KAAK,EACL,CAAC,QAAQ,CAAC,CACX,CAAC;YACF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACnF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF,CAAC;AAEF,MAAM,kBAAkB,GAAG,IAAI,UAAU,CAAC;IACxC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;CACvE,CAAC,CAAC;AAEH,sFAAsF;AACtF,SAAS,QAAQ,CAAC,IAAgB;IAChC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAgB,CAAC;AAC9F,CAAC;AAED,SAAS,WAAW,CAAC,CAAa,EAAE,CAAa;IAC/C,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAChD,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACd,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACrB,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto-node.d.ts","sourceRoot":"","sources":["../../src/crypto-node.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAG7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAM7C,eAAO,MAAM,UAAU,EAAE,SAuBxB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** Node.js CryptoOps implementation wrapping node:crypto. */
|
|
2
|
+
import { createHash, verify } from "node:crypto";
|
|
3
|
+
const ED25519_DER_PREFIX = new Uint8Array([
|
|
4
|
+
0x30, 0x2a, 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, 0x70, 0x03, 0x21, 0x00,
|
|
5
|
+
]);
|
|
6
|
+
export const nodeCrypto = {
|
|
7
|
+
async sha256(data) {
|
|
8
|
+
const hash = createHash("sha256").update(data).digest();
|
|
9
|
+
return new Uint8Array(hash);
|
|
10
|
+
},
|
|
11
|
+
async ed25519Verify(publicKey, data, signature) {
|
|
12
|
+
try {
|
|
13
|
+
const spki = concatBytes(ED25519_DER_PREFIX, publicKey);
|
|
14
|
+
return verify(null, data, { key: Buffer.from(spki), format: "der", type: "spki" }, signature);
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
function concatBytes(a, b) {
|
|
22
|
+
const out = new Uint8Array(a.length + b.length);
|
|
23
|
+
out.set(a, 0);
|
|
24
|
+
out.set(b, a.length);
|
|
25
|
+
return out;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=crypto-node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto-node.js","sourceRoot":"","sources":["../../src/crypto-node.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGjD,MAAM,kBAAkB,GAAG,IAAI,UAAU,CAAC;IACxC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;CACvE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAc;IACnC,KAAK,CAAC,MAAM,CAAC,IAAgB;QAC3B,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACxD,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,SAAqB,EACrB,IAAgB,EAChB,SAAqB;QAErB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,WAAW,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;YACxD,OAAO,MAAM,CACX,IAAI,EACJ,IAAI,EACJ,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EACvD,SAAS,CACV,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF,CAAC;AAEF,SAAS,WAAW,CAAC,CAAa,EAAE,CAAa;IAC/C,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAChD,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACd,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACrB,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Pluggable cryptographic operations for Node.js and browser environments. */
|
|
2
|
+
export interface CryptoOps {
|
|
3
|
+
sha256(data: Uint8Array): Promise<Uint8Array>;
|
|
4
|
+
ed25519Verify(publicKey: Uint8Array, data: Uint8Array, signature: Uint8Array): Promise<boolean>;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=crypto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAE/E,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9C,aAAa,CACX,SAAS,EAAE,UAAU,EACrB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"AAAA,+EAA+E"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/** Exception hierarchy for the BurnLedger SDK.
|
|
2
|
+
*
|
|
3
|
+
* Maps HTTP status codes to typed errors. Every error includes
|
|
4
|
+
* enough context for log correlation.
|
|
5
|
+
*/
|
|
6
|
+
export declare class BurnLedgerError extends Error {
|
|
7
|
+
constructor(message: string);
|
|
8
|
+
}
|
|
9
|
+
export declare class ApiError extends BurnLedgerError {
|
|
10
|
+
readonly code: string;
|
|
11
|
+
readonly statusCode: number;
|
|
12
|
+
readonly requestId: string;
|
|
13
|
+
constructor(opts: {
|
|
14
|
+
code: string;
|
|
15
|
+
message: string;
|
|
16
|
+
requestId: string;
|
|
17
|
+
statusCode: number;
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
export declare class AuthenticationError extends ApiError {
|
|
21
|
+
constructor(opts: {
|
|
22
|
+
code: string;
|
|
23
|
+
message: string;
|
|
24
|
+
requestId: string;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
export declare class NotFoundError extends ApiError {
|
|
28
|
+
constructor(opts: {
|
|
29
|
+
code: string;
|
|
30
|
+
message: string;
|
|
31
|
+
requestId: string;
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
export declare class ConflictError extends ApiError {
|
|
35
|
+
constructor(opts: {
|
|
36
|
+
code: string;
|
|
37
|
+
message: string;
|
|
38
|
+
requestId: string;
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
export declare class ValidationError extends ApiError {
|
|
42
|
+
constructor(opts: {
|
|
43
|
+
code: string;
|
|
44
|
+
message: string;
|
|
45
|
+
requestId: string;
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
export declare class RateLimitError extends ApiError {
|
|
49
|
+
readonly retryAfter: number | undefined;
|
|
50
|
+
constructor(opts: {
|
|
51
|
+
code: string;
|
|
52
|
+
message: string;
|
|
53
|
+
requestId: string;
|
|
54
|
+
retryAfter?: number;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
export declare class ServerError extends ApiError {
|
|
58
|
+
constructor(opts: {
|
|
59
|
+
code: string;
|
|
60
|
+
message: string;
|
|
61
|
+
requestId: string;
|
|
62
|
+
statusCode: number;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
export declare class TimeoutError extends BurnLedgerError {
|
|
66
|
+
readonly operation: string;
|
|
67
|
+
readonly elapsed: number;
|
|
68
|
+
constructor(operation: string, elapsed: number);
|
|
69
|
+
}
|
|
70
|
+
export declare class VerificationError extends BurnLedgerError {
|
|
71
|
+
readonly reason: string;
|
|
72
|
+
constructor(reason: string);
|
|
73
|
+
}
|
|
74
|
+
/** Parse an API error envelope and throw the appropriate exception. */
|
|
75
|
+
export declare function raiseForError(statusCode: number, body: Record<string, unknown>, retryAfter?: number): never;
|
|
76
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,QAAS,SAAQ,eAAe;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,IAAI,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB;CASF;AAED,qBAAa,mBAAoB,SAAQ,QAAQ;gBACnC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;CAIvE;AAED,qBAAa,aAAc,SAAQ,QAAQ;gBAC7B,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;CAIvE;AAED,qBAAa,aAAc,SAAQ,QAAQ;gBAC7B,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;CAIvE;AAED,qBAAa,eAAgB,SAAQ,QAAQ;gBAC/B,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;CAIvE;AAED,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE5B,IAAI,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB;CAKF;AAED,qBAAa,WAAY,SAAQ,QAAQ;gBAC3B,IAAI,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB;CAIF;AAED,qBAAa,YAAa,SAAQ,eAAe;IAC/C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEb,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAM/C;AAED,qBAAa,iBAAkB,SAAQ,eAAe;IACpD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,MAAM,EAAE,MAAM;CAK3B;AAkBD,uEAAuE;AACvE,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,CAAC,EAAE,MAAM,GAClB,KAAK,CAqBP"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/** Exception hierarchy for the BurnLedger SDK.
|
|
2
|
+
*
|
|
3
|
+
* Maps HTTP status codes to typed errors. Every error includes
|
|
4
|
+
* enough context for log correlation.
|
|
5
|
+
*/
|
|
6
|
+
export class BurnLedgerError extends Error {
|
|
7
|
+
constructor(message) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.name = "BurnLedgerError";
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export class ApiError extends BurnLedgerError {
|
|
13
|
+
code;
|
|
14
|
+
statusCode;
|
|
15
|
+
requestId;
|
|
16
|
+
constructor(opts) {
|
|
17
|
+
super(`[${opts.statusCode}] ${opts.code}: ${opts.message} (request_id=${opts.requestId})`);
|
|
18
|
+
this.name = "ApiError";
|
|
19
|
+
this.code = opts.code;
|
|
20
|
+
this.statusCode = opts.statusCode;
|
|
21
|
+
this.requestId = opts.requestId;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export class AuthenticationError extends ApiError {
|
|
25
|
+
constructor(opts) {
|
|
26
|
+
super({ ...opts, statusCode: 401 });
|
|
27
|
+
this.name = "AuthenticationError";
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export class NotFoundError extends ApiError {
|
|
31
|
+
constructor(opts) {
|
|
32
|
+
super({ ...opts, statusCode: 404 });
|
|
33
|
+
this.name = "NotFoundError";
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export class ConflictError extends ApiError {
|
|
37
|
+
constructor(opts) {
|
|
38
|
+
super({ ...opts, statusCode: 409 });
|
|
39
|
+
this.name = "ConflictError";
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export class ValidationError extends ApiError {
|
|
43
|
+
constructor(opts) {
|
|
44
|
+
super({ ...opts, statusCode: 422 });
|
|
45
|
+
this.name = "ValidationError";
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export class RateLimitError extends ApiError {
|
|
49
|
+
retryAfter;
|
|
50
|
+
constructor(opts) {
|
|
51
|
+
super({ ...opts, statusCode: 429 });
|
|
52
|
+
this.name = "RateLimitError";
|
|
53
|
+
this.retryAfter = opts.retryAfter;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export class ServerError extends ApiError {
|
|
57
|
+
constructor(opts) {
|
|
58
|
+
super(opts);
|
|
59
|
+
this.name = "ServerError";
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export class TimeoutError extends BurnLedgerError {
|
|
63
|
+
operation;
|
|
64
|
+
elapsed;
|
|
65
|
+
constructor(operation, elapsed) {
|
|
66
|
+
super(`${operation}: timed out after ${elapsed.toFixed(1)}s`);
|
|
67
|
+
this.name = "TimeoutError";
|
|
68
|
+
this.operation = operation;
|
|
69
|
+
this.elapsed = elapsed;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
export class VerificationError extends BurnLedgerError {
|
|
73
|
+
reason;
|
|
74
|
+
constructor(reason) {
|
|
75
|
+
super(reason);
|
|
76
|
+
this.name = "VerificationError";
|
|
77
|
+
this.reason = reason;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const STATUS_TO_CLASS = {
|
|
81
|
+
401: AuthenticationError,
|
|
82
|
+
404: NotFoundError,
|
|
83
|
+
409: ConflictError,
|
|
84
|
+
422: ValidationError,
|
|
85
|
+
429: RateLimitError,
|
|
86
|
+
};
|
|
87
|
+
/** Parse an API error envelope and throw the appropriate exception. */
|
|
88
|
+
export function raiseForError(statusCode, body, retryAfter) {
|
|
89
|
+
const err = (body.error ?? {});
|
|
90
|
+
const code = err.code ?? "UNKNOWN";
|
|
91
|
+
const message = err.message ?? "";
|
|
92
|
+
const requestId = err.request_id ?? "";
|
|
93
|
+
const Cls = STATUS_TO_CLASS[statusCode];
|
|
94
|
+
if (Cls === RateLimitError) {
|
|
95
|
+
throw new RateLimitError({ code, message, requestId, retryAfter });
|
|
96
|
+
}
|
|
97
|
+
if (Cls) {
|
|
98
|
+
throw new Cls({ code, message, requestId });
|
|
99
|
+
}
|
|
100
|
+
if (statusCode >= 500) {
|
|
101
|
+
throw new ServerError({ code, message, requestId, statusCode });
|
|
102
|
+
}
|
|
103
|
+
throw new ApiError({ code, message, requestId, statusCode });
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/** HTTP transport layer wrapping native fetch.
|
|
2
|
+
*
|
|
3
|
+
* Handles: Bearer auth, response envelope unwrapping, retry on 5xx/transport
|
|
4
|
+
* errors, Retry-After respect on 429, and raw byte streaming for PDFs.
|
|
5
|
+
*/
|
|
6
|
+
export interface TransportOptions {
|
|
7
|
+
baseUrl: string;
|
|
8
|
+
apiKey: string;
|
|
9
|
+
timeout: number;
|
|
10
|
+
maxRetries: number;
|
|
11
|
+
}
|
|
12
|
+
export declare class Transport {
|
|
13
|
+
private readonly baseUrl;
|
|
14
|
+
private readonly apiKey;
|
|
15
|
+
private readonly timeout;
|
|
16
|
+
private readonly maxRetries;
|
|
17
|
+
constructor(opts: TransportOptions);
|
|
18
|
+
/** Make a request and return the unwrapped `data` field. */
|
|
19
|
+
request(method: string, path: string, opts?: {
|
|
20
|
+
json?: unknown;
|
|
21
|
+
params?: Record<string, string | number>;
|
|
22
|
+
authenticated?: boolean;
|
|
23
|
+
}): Promise<unknown>;
|
|
24
|
+
/** Make a request and return the full response envelope (for pagination). */
|
|
25
|
+
requestRaw(method: string, path: string, opts?: {
|
|
26
|
+
json?: unknown;
|
|
27
|
+
params?: Record<string, string | number>;
|
|
28
|
+
authenticated?: boolean;
|
|
29
|
+
}): Promise<Record<string, unknown>>;
|
|
30
|
+
/** Make a request and return raw bytes (for PDF downloads). */
|
|
31
|
+
requestBytes(method: string, path: string, opts?: {
|
|
32
|
+
authenticated?: boolean;
|
|
33
|
+
}): Promise<Uint8Array>;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,IAAI,EAAE,gBAAgB;IAOlC,4DAA4D;IACtD,OAAO,CACX,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;QACzC,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,GACA,OAAO,CAAC,OAAO,CAAC;IAKnB,6EAA6E;IACvE,UAAU,CACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;QACzC,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,GACA,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IA2FnC,+DAA+D;IACzD,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,GACjC,OAAO,CAAC,UAAU,CAAC;CAyBvB"}
|
package/dist/esm/http.js
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/** HTTP transport layer wrapping native fetch.
|
|
2
|
+
*
|
|
3
|
+
* Handles: Bearer auth, response envelope unwrapping, retry on 5xx/transport
|
|
4
|
+
* errors, Retry-After respect on 429, and raw byte streaming for PDFs.
|
|
5
|
+
*/
|
|
6
|
+
import { raiseForError } from "./errors.js";
|
|
7
|
+
export class Transport {
|
|
8
|
+
baseUrl;
|
|
9
|
+
apiKey;
|
|
10
|
+
timeout;
|
|
11
|
+
maxRetries;
|
|
12
|
+
constructor(opts) {
|
|
13
|
+
this.baseUrl = opts.baseUrl.replace(/\/+$/, "");
|
|
14
|
+
this.apiKey = opts.apiKey;
|
|
15
|
+
this.timeout = opts.timeout;
|
|
16
|
+
this.maxRetries = opts.maxRetries;
|
|
17
|
+
}
|
|
18
|
+
/** Make a request and return the unwrapped `data` field. */
|
|
19
|
+
async request(method, path, opts) {
|
|
20
|
+
const envelope = await this.requestRaw(method, path, opts);
|
|
21
|
+
return envelope.data;
|
|
22
|
+
}
|
|
23
|
+
/** Make a request and return the full response envelope (for pagination). */
|
|
24
|
+
async requestRaw(method, path, opts) {
|
|
25
|
+
const authenticated = opts?.authenticated ?? true;
|
|
26
|
+
const headers = {
|
|
27
|
+
Accept: "application/json",
|
|
28
|
+
};
|
|
29
|
+
if (authenticated) {
|
|
30
|
+
headers["Authorization"] = `Bearer ${this.apiKey}`;
|
|
31
|
+
}
|
|
32
|
+
let url = `${this.baseUrl}${path}`;
|
|
33
|
+
if (opts?.params) {
|
|
34
|
+
const qs = new URLSearchParams();
|
|
35
|
+
for (const [k, v] of Object.entries(opts.params)) {
|
|
36
|
+
qs.set(k, String(v));
|
|
37
|
+
}
|
|
38
|
+
url += `?${qs.toString()}`;
|
|
39
|
+
}
|
|
40
|
+
const body = opts?.json !== undefined ? JSON.stringify(opts.json) : undefined;
|
|
41
|
+
if (body !== undefined) {
|
|
42
|
+
headers["Content-Type"] = "application/json";
|
|
43
|
+
}
|
|
44
|
+
if (method.toUpperCase() === "POST") {
|
|
45
|
+
// One key per logical call, reused across all retries of this call, so a
|
|
46
|
+
// 5xx/transport retry is deduplicated by the server instead of issuing a
|
|
47
|
+
// second certificate.
|
|
48
|
+
headers["Idempotency-Key"] = randomIdempotencyKey();
|
|
49
|
+
}
|
|
50
|
+
let lastError;
|
|
51
|
+
for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
|
|
52
|
+
if (attempt > 0) {
|
|
53
|
+
// Backoff with ±25% jitter so coordinated 5xx events don't produce
|
|
54
|
+
// a synchronized retry storm from every client at the same instant.
|
|
55
|
+
const base = 500 * 2 ** (attempt - 1);
|
|
56
|
+
const jitter = base * 0.25 * (Math.random() * 2 - 1);
|
|
57
|
+
await sleep(base + jitter);
|
|
58
|
+
}
|
|
59
|
+
const controller = new AbortController();
|
|
60
|
+
const timer = setTimeout(() => controller.abort(), this.timeout * 1000);
|
|
61
|
+
let resp;
|
|
62
|
+
try {
|
|
63
|
+
resp = await fetch(url, {
|
|
64
|
+
method,
|
|
65
|
+
headers,
|
|
66
|
+
body,
|
|
67
|
+
signal: controller.signal,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
clearTimeout(timer);
|
|
72
|
+
lastError = err instanceof Error ? err : new Error(String(err));
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
clearTimeout(timer);
|
|
77
|
+
}
|
|
78
|
+
if (resp.status === 204) {
|
|
79
|
+
return {};
|
|
80
|
+
}
|
|
81
|
+
if (resp.status === 429) {
|
|
82
|
+
const retryAfter = parseRetryAfter(resp);
|
|
83
|
+
const errorBody = await safeJson(resp);
|
|
84
|
+
raiseForError(resp.status, errorBody, retryAfter);
|
|
85
|
+
}
|
|
86
|
+
if (resp.status >= 500 && attempt < this.maxRetries) {
|
|
87
|
+
lastError = new Error(`Server error ${resp.status}`);
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
if (resp.status >= 400) {
|
|
91
|
+
const errorBody = await safeJson(resp);
|
|
92
|
+
raiseForError(resp.status, errorBody);
|
|
93
|
+
}
|
|
94
|
+
return (await resp.json());
|
|
95
|
+
}
|
|
96
|
+
throw new Error(`Request failed after ${this.maxRetries + 1} attempts: ${lastError?.message}`);
|
|
97
|
+
}
|
|
98
|
+
/** Make a request and return raw bytes (for PDF downloads). */
|
|
99
|
+
async requestBytes(method, path, opts) {
|
|
100
|
+
const authenticated = opts?.authenticated ?? true;
|
|
101
|
+
const headers = {};
|
|
102
|
+
if (authenticated) {
|
|
103
|
+
headers["Authorization"] = `Bearer ${this.apiKey}`;
|
|
104
|
+
}
|
|
105
|
+
const url = `${this.baseUrl}${path}`;
|
|
106
|
+
const controller = new AbortController();
|
|
107
|
+
const timer = setTimeout(() => controller.abort(), this.timeout * 1000);
|
|
108
|
+
let resp;
|
|
109
|
+
try {
|
|
110
|
+
resp = await fetch(url, { method, headers, signal: controller.signal });
|
|
111
|
+
}
|
|
112
|
+
finally {
|
|
113
|
+
clearTimeout(timer);
|
|
114
|
+
}
|
|
115
|
+
if (resp.status >= 400) {
|
|
116
|
+
const errorBody = await safeJson(resp);
|
|
117
|
+
raiseForError(resp.status, errorBody);
|
|
118
|
+
}
|
|
119
|
+
return new Uint8Array(await resp.arrayBuffer());
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
function parseRetryAfter(resp) {
|
|
123
|
+
const raw = resp.headers.get("Retry-After");
|
|
124
|
+
if (raw == null)
|
|
125
|
+
return undefined;
|
|
126
|
+
const n = Number(raw);
|
|
127
|
+
return Number.isFinite(n) ? n : undefined;
|
|
128
|
+
}
|
|
129
|
+
async function safeJson(resp) {
|
|
130
|
+
// Read once. resp.json() consumes the stream on failure too — calling
|
|
131
|
+
// resp.text() afterward would throw "body already used" and the real
|
|
132
|
+
// status code would be lost.
|
|
133
|
+
const text = await resp.text();
|
|
134
|
+
try {
|
|
135
|
+
return JSON.parse(text);
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
return {
|
|
139
|
+
error: { code: "UNKNOWN", message: text, request_id: "" },
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
function sleep(ms) {
|
|
144
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
145
|
+
}
|
|
146
|
+
// randomIdempotencyKey returns a RFC 4122 v4 UUID using the Web Crypto API,
|
|
147
|
+
// available in both browsers and Node 18+ (wherever fetch is present).
|
|
148
|
+
function randomIdempotencyKey() {
|
|
149
|
+
const b = new Uint8Array(16);
|
|
150
|
+
globalThis.crypto.getRandomValues(b);
|
|
151
|
+
b[6] = (b[6] & 0x0f) | 0x40; // version 4
|
|
152
|
+
b[8] = (b[8] & 0x3f) | 0x80; // variant 10
|
|
153
|
+
const h = Array.from(b, (x) => x.toString(16).padStart(2, "0")).join("");
|
|
154
|
+
return `${h.slice(0, 8)}-${h.slice(8, 12)}-${h.slice(12, 16)}-${h.slice(16, 20)}-${h.slice(20)}`;
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** BurnLedger TypeScript SDK — browser entry point.
|
|
2
|
+
*
|
|
3
|
+
* Uses WebCrypto (crypto.subtle) for Ed25519 and SHA-256.
|
|
4
|
+
* Requires Chrome 113+, Firefox 128+, or Safari 17+.
|
|
5
|
+
*
|
|
6
|
+
* Does NOT export verifyWebhookSignature (server-side only, uses node:crypto).
|
|
7
|
+
*/
|
|
8
|
+
export { BurnLedger } from "./client.js";
|
|
9
|
+
export type { BurnLedgerOptions } from "./client.js";
|
|
10
|
+
export { BurnLedgerError, ApiError, AuthenticationError, NotFoundError, ConflictError, ValidationError, RateLimitError, ServerError, TimeoutError, VerificationError, } from "./errors.js";
|
|
11
|
+
export { Transport } from "./http.js";
|
|
12
|
+
export type { TransportOptions } from "./http.js";
|
|
13
|
+
export type { ProofMode, AttestationStatus, CertificateStatus, TransparencyStatus, HealthStatus, ConnectorType, HashScope, LogEntryType, VerificationResult, TransparencyResult, System, SystemAttestation, Attestation, VerificationSystem, VerifyResult, CertificateResponse, RevocationStatus, Webhook, SignedTreeHead, LogEntry, InclusionProof, ConsistencyProof, } from "./models.js";
|
|
14
|
+
export { Paginator } from "./pagination.js";
|
|
15
|
+
export type { CryptoOps } from "./crypto.js";
|
|
16
|
+
export type { PublicKeyInfo } from "./verify.js";
|
|
17
|
+
export { issuanceBytes, hexToBytes, bytesToHex } from "./verify.js";
|
|
18
|
+
import type { PublicKeyInfo } from "./verify.js";
|
|
19
|
+
import type { VerificationResult, TransparencyResult } from "./models.js";
|
|
20
|
+
type Cert = Record<string, unknown>;
|
|
21
|
+
/** Verify all signatures on a deletion certificate offline. */
|
|
22
|
+
export declare function verifyCertificate(certificate: Cert, publicKeys: Map<string, PublicKeyInfo>): Promise<VerificationResult>;
|
|
23
|
+
/** Verify the transparency proof embedded in a certificate. */
|
|
24
|
+
export declare function verifyTransparency(certificate: Cert, publicKeys: Map<string, PublicKeyInfo>): Promise<TransparencyResult>;
|
|
25
|
+
/** Construct a PublicKeyInfo from a hex-encoded Ed25519 public key. */
|
|
26
|
+
export declare function publicKeyFromHex(hexKey: string, opts?: {
|
|
27
|
+
revoked?: boolean;
|
|
28
|
+
}): Promise<PublicKeyInfo>;
|
|
29
|
+
/** Verify a Merkle consistency proof between two tree states (RFC 6962). */
|
|
30
|
+
export declare function verifyConsistency(oldSize: number, newSize: number, oldRoot: Uint8Array, newRoot: Uint8Array, proof: Uint8Array[]): Promise<boolean>;
|
|
31
|
+
//# sourceMappingURL=index.browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../../src/index.browser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EACL,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,WAAW,EACX,YAAY,EACZ,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAElD,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,MAAM,EACN,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,OAAO,EACP,cAAc,EACd,QAAQ,EACR,cAAc,EACd,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE1E,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpC,+DAA+D;AAC/D,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,IAAI,EACjB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,GACrC,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,IAAI,EACjB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,GACrC,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3B,OAAO,CAAC,aAAa,CAAC,CAExB;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,UAAU,EAAE,GAClB,OAAO,CAAC,OAAO,CAAC,CAElB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** BurnLedger TypeScript SDK — browser entry point.
|
|
2
|
+
*
|
|
3
|
+
* Uses WebCrypto (crypto.subtle) for Ed25519 and SHA-256.
|
|
4
|
+
* Requires Chrome 113+, Firefox 128+, or Safari 17+.
|
|
5
|
+
*
|
|
6
|
+
* Does NOT export verifyWebhookSignature (server-side only, uses node:crypto).
|
|
7
|
+
*/
|
|
8
|
+
export { BurnLedger } from "./client.js";
|
|
9
|
+
export { BurnLedgerError, ApiError, AuthenticationError, NotFoundError, ConflictError, ValidationError, RateLimitError, ServerError, TimeoutError, VerificationError, } from "./errors.js";
|
|
10
|
+
export { Transport } from "./http.js";
|
|
11
|
+
export { Paginator } from "./pagination.js";
|
|
12
|
+
export { issuanceBytes, hexToBytes, bytesToHex } from "./verify.js";
|
|
13
|
+
import { browserCrypto } from "./crypto-browser.js";
|
|
14
|
+
import { verifyCertificate as _verifyCertificate, verifyTransparency as _verifyTransparency, verifyConsistency as _verifyConsistency, publicKeyFromHex as _publicKeyFromHex, } from "./verify.js";
|
|
15
|
+
/** Verify all signatures on a deletion certificate offline. */
|
|
16
|
+
export function verifyCertificate(certificate, publicKeys) {
|
|
17
|
+
return _verifyCertificate(browserCrypto, certificate, publicKeys);
|
|
18
|
+
}
|
|
19
|
+
/** Verify the transparency proof embedded in a certificate. */
|
|
20
|
+
export function verifyTransparency(certificate, publicKeys) {
|
|
21
|
+
return _verifyTransparency(browserCrypto, certificate, publicKeys);
|
|
22
|
+
}
|
|
23
|
+
/** Construct a PublicKeyInfo from a hex-encoded Ed25519 public key. */
|
|
24
|
+
export function publicKeyFromHex(hexKey, opts) {
|
|
25
|
+
return _publicKeyFromHex(browserCrypto, hexKey, opts);
|
|
26
|
+
}
|
|
27
|
+
/** Verify a Merkle consistency proof between two tree states (RFC 6962). */
|
|
28
|
+
export function verifyConsistency(oldSize, newSize, oldRoot, newRoot, proof) {
|
|
29
|
+
return _verifyConsistency(browserCrypto, oldSize, newSize, oldRoot, newRoot, proof);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=index.browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.browser.js","sourceRoot":"","sources":["../../src/index.browser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EACL,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,WAAW,EACX,YAAY,EACZ,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AA4BtC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,iBAAiB,IAAI,kBAAkB,EACvC,kBAAkB,IAAI,mBAAmB,EACzC,iBAAiB,IAAI,kBAAkB,EACvC,gBAAgB,IAAI,iBAAiB,GACtC,MAAM,aAAa,CAAC;AAMrB,+DAA+D;AAC/D,MAAM,UAAU,iBAAiB,CAC/B,WAAiB,EACjB,UAAsC;IAEtC,OAAO,kBAAkB,CAAC,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AACpE,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,kBAAkB,CAChC,WAAiB,EACjB,UAAsC;IAEtC,OAAO,mBAAmB,CAAC,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AACrE,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,gBAAgB,CAC9B,MAAc,EACd,IAA4B;IAE5B,OAAO,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,iBAAiB,CAC/B,OAAe,EACf,OAAe,EACf,OAAmB,EACnB,OAAmB,EACnB,KAAmB;IAEnB,OAAO,kBAAkB,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACtF,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** BurnLedger TypeScript SDK — public API (Node.js entry point). */
|
|
2
|
+
export { BurnLedger } from "./client.js";
|
|
3
|
+
export type { BurnLedgerOptions } from "./client.js";
|
|
4
|
+
export { BurnLedgerError, ApiError, AuthenticationError, NotFoundError, ConflictError, ValidationError, RateLimitError, ServerError, TimeoutError, VerificationError, } from "./errors.js";
|
|
5
|
+
export { Transport } from "./http.js";
|
|
6
|
+
export type { TransportOptions } from "./http.js";
|
|
7
|
+
export type { ProofMode, AttestationStatus, CertificateStatus, TransparencyStatus, HealthStatus, ConnectorType, HashScope, LogEntryType, VerificationResult, TransparencyResult, ApiKeyRole, System, SystemAttestation, Attestation, VerificationSystem, VerifyResult, CertificateResponse, RevocationStatus, Webhook, SignedTreeHead, LogEntry, InclusionProof, ConsistencyProof, BatchAttestationResponse, BatchAttestationError, MonthlyCount, CertificateStats, WebhookRotateResponse, WebhookDelivery, ApiKeyListItem, ApiKeyResponse, PlanUsage, Profile, SystemHealth, } from "./models.js";
|
|
8
|
+
export { Paginator } from "./pagination.js";
|
|
9
|
+
export type { CryptoOps } from "./crypto.js";
|
|
10
|
+
export type { PublicKeyInfo } from "./verify.js";
|
|
11
|
+
export { issuanceBytes, hexToBytes, bytesToHex } from "./verify.js";
|
|
12
|
+
import type { PublicKeyInfo } from "./verify.js";
|
|
13
|
+
import type { VerificationResult, TransparencyResult } from "./models.js";
|
|
14
|
+
type Cert = Record<string, unknown>;
|
|
15
|
+
/** Verify all signatures on a deletion certificate offline. */
|
|
16
|
+
export declare function verifyCertificate(certificate: Cert, publicKeys: Map<string, PublicKeyInfo>): Promise<VerificationResult>;
|
|
17
|
+
/** Verify the transparency proof embedded in a certificate. */
|
|
18
|
+
export declare function verifyTransparency(certificate: Cert, publicKeys: Map<string, PublicKeyInfo>): Promise<TransparencyResult>;
|
|
19
|
+
/** Construct a PublicKeyInfo from a hex-encoded Ed25519 public key. */
|
|
20
|
+
export declare function publicKeyFromHex(hexKey: string, opts?: {
|
|
21
|
+
revoked?: boolean;
|
|
22
|
+
}): Promise<PublicKeyInfo>;
|
|
23
|
+
/** Verify a Merkle consistency proof between two tree states (RFC 6962). */
|
|
24
|
+
export declare function verifyConsistency(oldSize: number, newSize: number, oldRoot: Uint8Array, newRoot: Uint8Array, proof: Uint8Array[]): Promise<boolean>;
|
|
25
|
+
export { verifyWebhookSignature } from "./webhooks.js";
|
|
26
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EACL,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,WAAW,EACX,YAAY,EACZ,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAElD,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,EACV,MAAM,EACN,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,OAAO,EACP,cAAc,EACd,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,wBAAwB,EACxB,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,cAAc,EACd,cAAc,EACd,SAAS,EACT,OAAO,EACP,YAAY,GACb,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE1E,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpC,+DAA+D;AAC/D,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,IAAI,EACjB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,GACrC,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,IAAI,EACjB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,GACrC,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3B,OAAO,CAAC,aAAa,CAAC,CAExB;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,UAAU,EAAE,GAClB,OAAO,CAAC,OAAO,CAAC,CAElB;AAED,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** BurnLedger TypeScript SDK — public API (Node.js entry point). */
|
|
2
|
+
export { BurnLedger } from "./client.js";
|
|
3
|
+
export { BurnLedgerError, ApiError, AuthenticationError, NotFoundError, ConflictError, ValidationError, RateLimitError, ServerError, TimeoutError, VerificationError, } from "./errors.js";
|
|
4
|
+
export { Transport } from "./http.js";
|
|
5
|
+
export { Paginator } from "./pagination.js";
|
|
6
|
+
export { issuanceBytes, hexToBytes, bytesToHex } from "./verify.js";
|
|
7
|
+
import { nodeCrypto } from "./crypto-node.js";
|
|
8
|
+
import { verifyCertificate as _verifyCertificate, verifyTransparency as _verifyTransparency, verifyConsistency as _verifyConsistency, publicKeyFromHex as _publicKeyFromHex, } from "./verify.js";
|
|
9
|
+
/** Verify all signatures on a deletion certificate offline. */
|
|
10
|
+
export function verifyCertificate(certificate, publicKeys) {
|
|
11
|
+
return _verifyCertificate(nodeCrypto, certificate, publicKeys);
|
|
12
|
+
}
|
|
13
|
+
/** Verify the transparency proof embedded in a certificate. */
|
|
14
|
+
export function verifyTransparency(certificate, publicKeys) {
|
|
15
|
+
return _verifyTransparency(nodeCrypto, certificate, publicKeys);
|
|
16
|
+
}
|
|
17
|
+
/** Construct a PublicKeyInfo from a hex-encoded Ed25519 public key. */
|
|
18
|
+
export function publicKeyFromHex(hexKey, opts) {
|
|
19
|
+
return _publicKeyFromHex(nodeCrypto, hexKey, opts);
|
|
20
|
+
}
|
|
21
|
+
/** Verify a Merkle consistency proof between two tree states (RFC 6962). */
|
|
22
|
+
export function verifyConsistency(oldSize, newSize, oldRoot, newRoot, proof) {
|
|
23
|
+
return _verifyConsistency(nodeCrypto, oldSize, newSize, oldRoot, newRoot, proof);
|
|
24
|
+
}
|
|
25
|
+
export { verifyWebhookSignature } from "./webhooks.js";
|
|
26
|
+
//# sourceMappingURL=index.js.map
|