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.
Files changed (115) hide show
  1. package/README.md +182 -0
  2. package/dist/cjs/cli.d.ts +16 -0
  3. package/dist/cjs/cli.d.ts.map +1 -0
  4. package/dist/cjs/cli.js +168 -0
  5. package/dist/cjs/cli.js.map +1 -0
  6. package/dist/cjs/client.d.ts +116 -0
  7. package/dist/cjs/client.d.ts.map +1 -0
  8. package/dist/cjs/client.js +353 -0
  9. package/dist/cjs/client.js.map +1 -0
  10. package/dist/cjs/crypto-browser.d.ts +7 -0
  11. package/dist/cjs/crypto-browser.d.ts.map +1 -0
  12. package/dist/cjs/crypto-browser.js +37 -0
  13. package/dist/cjs/crypto-browser.js.map +1 -0
  14. package/dist/cjs/crypto-node.d.ts +4 -0
  15. package/dist/cjs/crypto-node.d.ts.map +1 -0
  16. package/dist/cjs/crypto-node.js +30 -0
  17. package/dist/cjs/crypto-node.js.map +1 -0
  18. package/dist/cjs/crypto.d.ts +6 -0
  19. package/dist/cjs/crypto.d.ts.map +1 -0
  20. package/dist/cjs/crypto.js +4 -0
  21. package/dist/cjs/crypto.js.map +1 -0
  22. package/dist/cjs/errors.d.ts +76 -0
  23. package/dist/cjs/errors.d.ts.map +1 -0
  24. package/dist/cjs/errors.js +119 -0
  25. package/dist/cjs/errors.js.map +1 -0
  26. package/dist/cjs/http.d.ts +35 -0
  27. package/dist/cjs/http.d.ts.map +1 -0
  28. package/dist/cjs/http.js +160 -0
  29. package/dist/cjs/http.js.map +1 -0
  30. package/dist/cjs/index.browser.d.ts +31 -0
  31. package/dist/cjs/index.browser.d.ts.map +1 -0
  32. package/dist/cjs/index.browser.js +54 -0
  33. package/dist/cjs/index.browser.js.map +1 -0
  34. package/dist/cjs/index.d.ts +26 -0
  35. package/dist/cjs/index.d.ts.map +1 -0
  36. package/dist/cjs/index.js +50 -0
  37. package/dist/cjs/index.js.map +1 -0
  38. package/dist/cjs/keys.d.ts +12 -0
  39. package/dist/cjs/keys.d.ts.map +1 -0
  40. package/dist/cjs/keys.js +17 -0
  41. package/dist/cjs/keys.js.map +1 -0
  42. package/dist/cjs/models.d.ts +197 -0
  43. package/dist/cjs/models.d.ts.map +1 -0
  44. package/dist/cjs/models.js +246 -0
  45. package/dist/cjs/models.js.map +1 -0
  46. package/dist/cjs/package.json +1 -0
  47. package/dist/cjs/pagination.d.ts +21 -0
  48. package/dist/cjs/pagination.d.ts.map +1 -0
  49. package/dist/cjs/pagination.js +50 -0
  50. package/dist/cjs/pagination.js.map +1 -0
  51. package/dist/cjs/verify.d.ts +50 -0
  52. package/dist/cjs/verify.d.ts.map +1 -0
  53. package/dist/cjs/verify.js +500 -0
  54. package/dist/cjs/verify.js.map +1 -0
  55. package/dist/cjs/webhooks.d.ts +36 -0
  56. package/dist/cjs/webhooks.d.ts.map +1 -0
  57. package/dist/cjs/webhooks.js +71 -0
  58. package/dist/cjs/webhooks.js.map +1 -0
  59. package/dist/esm/cli.d.ts +16 -0
  60. package/dist/esm/cli.d.ts.map +1 -0
  61. package/dist/esm/cli.js +164 -0
  62. package/dist/esm/cli.js.map +1 -0
  63. package/dist/esm/client.d.ts +116 -0
  64. package/dist/esm/client.d.ts.map +1 -0
  65. package/dist/esm/client.js +316 -0
  66. package/dist/esm/client.js.map +1 -0
  67. package/dist/esm/crypto-browser.d.ts +7 -0
  68. package/dist/esm/crypto-browser.d.ts.map +1 -0
  69. package/dist/esm/crypto-browser.js +34 -0
  70. package/dist/esm/crypto-browser.js.map +1 -0
  71. package/dist/esm/crypto-node.d.ts +4 -0
  72. package/dist/esm/crypto-node.d.ts.map +1 -0
  73. package/dist/esm/crypto-node.js +27 -0
  74. package/dist/esm/crypto-node.js.map +1 -0
  75. package/dist/esm/crypto.d.ts +6 -0
  76. package/dist/esm/crypto.d.ts.map +1 -0
  77. package/dist/esm/crypto.js +3 -0
  78. package/dist/esm/crypto.js.map +1 -0
  79. package/dist/esm/errors.d.ts +76 -0
  80. package/dist/esm/errors.d.ts.map +1 -0
  81. package/dist/esm/errors.js +105 -0
  82. package/dist/esm/errors.js.map +1 -0
  83. package/dist/esm/http.d.ts +35 -0
  84. package/dist/esm/http.d.ts.map +1 -0
  85. package/dist/esm/http.js +156 -0
  86. package/dist/esm/http.js.map +1 -0
  87. package/dist/esm/index.browser.d.ts +31 -0
  88. package/dist/esm/index.browser.d.ts.map +1 -0
  89. package/dist/esm/index.browser.js +31 -0
  90. package/dist/esm/index.browser.js.map +1 -0
  91. package/dist/esm/index.d.ts +26 -0
  92. package/dist/esm/index.d.ts.map +1 -0
  93. package/dist/esm/index.js +26 -0
  94. package/dist/esm/index.js.map +1 -0
  95. package/dist/esm/keys.d.ts +12 -0
  96. package/dist/esm/keys.d.ts.map +1 -0
  97. package/dist/esm/keys.js +14 -0
  98. package/dist/esm/keys.js.map +1 -0
  99. package/dist/esm/models.d.ts +197 -0
  100. package/dist/esm/models.d.ts.map +1 -0
  101. package/dist/esm/models.js +226 -0
  102. package/dist/esm/models.js.map +1 -0
  103. package/dist/esm/pagination.d.ts +21 -0
  104. package/dist/esm/pagination.d.ts.map +1 -0
  105. package/dist/esm/pagination.js +46 -0
  106. package/dist/esm/pagination.js.map +1 -0
  107. package/dist/esm/verify.d.ts +50 -0
  108. package/dist/esm/verify.d.ts.map +1 -0
  109. package/dist/esm/verify.js +491 -0
  110. package/dist/esm/verify.js.map +1 -0
  111. package/dist/esm/webhooks.d.ts +36 -0
  112. package/dist/esm/webhooks.d.ts.map +1 -0
  113. package/dist/esm/webhooks.js +67 -0
  114. package/dist/esm/webhooks.js.map +1 -0
  115. package/package.json +65 -0
@@ -0,0 +1,353 @@
1
+ "use strict";
2
+ /** Async BurnLedger API client.
3
+ *
4
+ * Single class — Node.js is all-async, no sync/async split needed.
5
+ * Pagination uses AsyncIterable<T> via Paginator.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.BurnLedger = void 0;
42
+ const errors_js_1 = require("./errors.js");
43
+ const http_js_1 = require("./http.js");
44
+ const models_js_1 = require("./models.js");
45
+ const pagination_js_1 = require("./pagination.js");
46
+ class BurnLedger {
47
+ transport;
48
+ constructor(opts) {
49
+ this.transport = new http_js_1.Transport({
50
+ baseUrl: opts.baseUrl ?? "https://api.burnledger.io",
51
+ apiKey: opts.apiKey,
52
+ timeout: opts.timeout ?? 30,
53
+ maxRetries: opts.maxRetries ?? 2,
54
+ });
55
+ }
56
+ close() {
57
+ // Transport uses native fetch — no persistent connections to close.
58
+ // Method exists for API symmetry and future extensibility.
59
+ }
60
+ [Symbol.asyncDispose]() {
61
+ this.close();
62
+ return Promise.resolve();
63
+ }
64
+ // --- Systems ---
65
+ async registerSystem(opts) {
66
+ const config = resolveConnectionConfig(opts.connectionConfig, opts.dsn, opts.uri);
67
+ const body = {
68
+ name: opts.name,
69
+ connector_type: opts.connectorType,
70
+ connection_config: config,
71
+ subject_query: opts.subjectQuery,
72
+ hash_scope: opts.hashScope ?? "existence",
73
+ max_records: opts.maxRecords ?? 1_000_000,
74
+ max_bytes: opts.maxBytes ?? 10 * 1024 * 1024 * 1024,
75
+ query_timeout: opts.queryTimeout ?? "30s",
76
+ };
77
+ const data = await this.transport.request("POST", "/v1/systems", {
78
+ json: body,
79
+ });
80
+ return (0, models_js_1.parseSystem)(data);
81
+ }
82
+ async getSystem(systemId) {
83
+ const data = await this.transport.request("GET", `/v1/systems/${systemId}`);
84
+ return (0, models_js_1.parseSystem)(data);
85
+ }
86
+ listSystems(opts) {
87
+ return new pagination_js_1.Paginator(this.transport, "/v1/systems", models_js_1.parseSystem, {
88
+ params: { limit: opts?.limit ?? 25 },
89
+ });
90
+ }
91
+ async deregisterSystem(systemId) {
92
+ await this.transport.request("DELETE", `/v1/systems/${systemId}`);
93
+ }
94
+ async healthCheck(systemId) {
95
+ const data = await this.transport.request("POST", `/v1/systems/${systemId}/health-check`);
96
+ return (0, models_js_1.parseSystem)(data);
97
+ }
98
+ // --- Attestations ---
99
+ async attest(subjectIdentifier, opts) {
100
+ const body = {
101
+ subject_identifier: subjectIdentifier,
102
+ proof_mode: opts?.proofMode ?? "count",
103
+ expires_in: opts?.expiresIn ?? "72h",
104
+ };
105
+ if (opts?.systemIds !== undefined)
106
+ body.system_ids = opts.systemIds;
107
+ if (opts?.webhookUrl !== undefined)
108
+ body.webhook_url = opts.webhookUrl;
109
+ const data = await this.transport.request("POST", "/v1/attestations", {
110
+ json: body,
111
+ });
112
+ return (0, models_js_1.parseAttestation)(data);
113
+ }
114
+ async getAttestation(attestationId) {
115
+ const data = await this.transport.request("GET", `/v1/attestations/${attestationId}`);
116
+ return (0, models_js_1.parseAttestation)(data);
117
+ }
118
+ async waitFor(attestationId, opts) {
119
+ return poll({
120
+ fetch: () => this.getAttestation(attestationId),
121
+ done: (att) => att.status !== "PENDING_VERIFICATION",
122
+ operation: `waitFor(${attestationId})`,
123
+ timeout: opts?.timeout ?? 60,
124
+ pollInterval: opts?.pollInterval ?? 2,
125
+ });
126
+ }
127
+ async verify(attestationId, subjectIdentifier, opts) {
128
+ const body = { subject_identifier: subjectIdentifier };
129
+ const data = await this.transport.request("POST", `/v1/attestations/${attestationId}/verify`, { json: body });
130
+ const result = (0, models_js_1.parseVerifyResult)(data);
131
+ const timeout = opts?.timeout ?? 0;
132
+ if (timeout <= 0 || result.status === "CERTIFIED") {
133
+ return result;
134
+ }
135
+ return poll({
136
+ fetch: async () => {
137
+ const d = await this.transport.request("POST", `/v1/attestations/${attestationId}/verify`, { json: body });
138
+ return (0, models_js_1.parseVerifyResult)(d);
139
+ },
140
+ done: (r) => r.status === "CERTIFIED",
141
+ operation: `verify(${attestationId})`,
142
+ timeout,
143
+ pollInterval: opts?.pollInterval ?? 2,
144
+ });
145
+ }
146
+ async batchAttest(opts) {
147
+ const body = {
148
+ subject_identifiers: opts.subjectIdentifiers,
149
+ system_ids: opts.systemIds,
150
+ proof_mode: opts.proofMode ?? "count",
151
+ expires_in: opts.expiresIn ?? "72h",
152
+ };
153
+ const data = await this.transport.request("POST", "/v1/attestations/batch", {
154
+ json: body,
155
+ });
156
+ return (0, models_js_1.parseBatchAttestationResponse)(data);
157
+ }
158
+ // --- Certificates ---
159
+ async getCertificate(certificateId) {
160
+ const data = await this.transport.request("GET", `/v1/certificates/${certificateId}`);
161
+ return (0, models_js_1.parseCertificateResponse)(data);
162
+ }
163
+ listCertificates(opts) {
164
+ return new pagination_js_1.Paginator(this.transport, "/v1/certificates", models_js_1.parseCertificateResponse, { params: { limit: opts?.limit ?? 25 } });
165
+ }
166
+ async downloadPdf(certificateId) {
167
+ return this.transport.requestBytes("GET", `/v1/certificates/${certificateId}/pdf`);
168
+ }
169
+ async savePdf(certificateId, path) {
170
+ const pdf = await this.downloadPdf(certificateId);
171
+ const { writeFile } = await Promise.resolve().then(() => __importStar(require("node:fs/promises")));
172
+ await writeFile(path, pdf);
173
+ }
174
+ async getRevocationStatus(certificateId) {
175
+ const data = await this.transport.request("GET", `/v1/certificates/${certificateId}/revocation-status`);
176
+ return (0, models_js_1.parseRevocationStatus)(data);
177
+ }
178
+ async revokeCertificate(certificateId, opts) {
179
+ const data = await this.transport.request("POST", `/v1/certificates/${certificateId}/revoke`, { json: { reason: opts.reason } });
180
+ return (0, models_js_1.parseCertificateResponse)(data);
181
+ }
182
+ async getCertificateStats() {
183
+ const data = await this.transport.request("GET", "/v1/certificates/stats");
184
+ return (0, models_js_1.parseCertificateStats)(data);
185
+ }
186
+ async exportCertificates(opts) {
187
+ const params = {};
188
+ if (opts?.format !== undefined)
189
+ params.format = opts.format;
190
+ if (opts?.status !== undefined)
191
+ params.status = opts.status;
192
+ if (opts?.issuedAfter !== undefined)
193
+ params.issued_after = opts.issuedAfter;
194
+ if (opts?.issuedBefore !== undefined)
195
+ params.issued_before = opts.issuedBefore;
196
+ const qs = new URLSearchParams(params).toString();
197
+ const path = qs ? `/v1/certificates/export?${qs}` : "/v1/certificates/export";
198
+ return this.transport.requestBytes("GET", path);
199
+ }
200
+ // --- Webhooks ---
201
+ async registerWebhook(opts) {
202
+ const data = await this.transport.request("POST", "/v1/webhooks", {
203
+ json: { url: opts.url },
204
+ });
205
+ return (0, models_js_1.parseWebhook)(data);
206
+ }
207
+ listWebhooks(opts) {
208
+ return new pagination_js_1.Paginator(this.transport, "/v1/webhooks", models_js_1.parseWebhook, {
209
+ params: { limit: opts?.limit ?? 25 },
210
+ });
211
+ }
212
+ async deleteWebhook(webhookId) {
213
+ await this.transport.request("DELETE", `/v1/webhooks/${webhookId}`);
214
+ }
215
+ async rotateWebhookSecret(webhookId) {
216
+ const data = await this.transport.request("POST", `/v1/webhooks/${webhookId}/rotate-secret`);
217
+ return (0, models_js_1.parseWebhookRotateResponse)(data);
218
+ }
219
+ async commitWebhookRotation(webhookId) {
220
+ await this.transport.request("POST", `/v1/webhooks/${webhookId}/commit-rotation`);
221
+ }
222
+ listFailedDeliveries(opts) {
223
+ return new pagination_js_1.Paginator(this.transport, "/v1/webhooks/deliveries/failed", models_js_1.parseWebhookDelivery, { params: { limit: opts?.limit ?? 25 } });
224
+ }
225
+ async retryDelivery(deliveryId) {
226
+ await this.transport.request("POST", `/v1/webhooks/deliveries/${deliveryId}/retry`);
227
+ }
228
+ async resolveDelivery(deliveryId) {
229
+ await this.transport.request("DELETE", `/v1/webhooks/deliveries/${deliveryId}`);
230
+ }
231
+ // --- API Keys ---
232
+ listApiKeys(opts) {
233
+ return new pagination_js_1.Paginator(this.transport, "/v1/api-keys", models_js_1.parseApiKeyListItem, { params: { limit: opts?.limit ?? 25 } });
234
+ }
235
+ async createApiKey() {
236
+ const data = await this.transport.request("POST", "/v1/api-keys", {
237
+ json: {},
238
+ });
239
+ return (0, models_js_1.parseApiKeyResponse)(data);
240
+ }
241
+ async revokeApiKey(keyId) {
242
+ await this.transport.request("DELETE", `/v1/api-keys/${keyId}`);
243
+ }
244
+ // --- Profile ---
245
+ async getMe() {
246
+ const data = await this.transport.request("GET", "/v1/me");
247
+ return (0, models_js_1.parseProfile)(data);
248
+ }
249
+ async updateMe(params) {
250
+ const data = await this.transport.request("PATCH", "/v1/me", {
251
+ json: { name: params.name, email: params.email },
252
+ });
253
+ return (0, models_js_1.parseProfile)(data);
254
+ }
255
+ async deleteMe() {
256
+ await this.transport.request("DELETE", "/v1/me");
257
+ }
258
+ // --- System Health ---
259
+ async getSystemHealth(systemId) {
260
+ const data = await this.transport.request("GET", `/v1/systems/${systemId}/health`);
261
+ return (0, models_js_1.parseSystemHealth)(data);
262
+ }
263
+ // --- Transparency log (public, no auth) ---
264
+ async getLogHead() {
265
+ const data = await this.transport.request("GET", "/v1/log/head", {
266
+ authenticated: false,
267
+ });
268
+ return (0, models_js_1.parseSignedTreeHead)(data);
269
+ }
270
+ async getLogEntry(index) {
271
+ const data = await this.transport.request("GET", `/v1/log/entry/${index}`, { authenticated: false });
272
+ return (0, models_js_1.parseLogEntry)(data);
273
+ }
274
+ async getLogEntries(opts) {
275
+ const data = await this.transport.request("GET", "/v1/log/entries", {
276
+ params: { start: opts.start, end: opts.end },
277
+ authenticated: false,
278
+ });
279
+ return data.map(models_js_1.parseLogEntry);
280
+ }
281
+ async getInclusionProof(opts) {
282
+ const data = await this.transport.request("GET", "/v1/log/proof/inclusion", {
283
+ params: { index: opts.index, tree_size: opts.treeSize },
284
+ authenticated: false,
285
+ });
286
+ return (0, models_js_1.parseInclusionProof)(data);
287
+ }
288
+ async getConsistencyProof(opts) {
289
+ const data = await this.transport.request("GET", "/v1/log/proof/consistency", {
290
+ params: { old_size: opts.oldSize, new_size: opts.newSize },
291
+ authenticated: false,
292
+ });
293
+ return (0, models_js_1.parseConsistencyProof)(data);
294
+ }
295
+ }
296
+ exports.BurnLedger = BurnLedger;
297
+ // ---------------------------------------------------------------------------
298
+ // Connection config resolution
299
+ // ---------------------------------------------------------------------------
300
+ function resolveConnectionConfig(connectionConfig, dsn, uri) {
301
+ const convenience = (dsn !== undefined ? 1 : 0) + (uri !== undefined ? 1 : 0);
302
+ if (convenience > 0 && connectionConfig !== undefined) {
303
+ throw new Error("Cannot provide both connectionConfig and a convenience parameter (dsn/uri). Use one or the other.");
304
+ }
305
+ if (convenience > 1) {
306
+ throw new Error("Cannot provide both dsn and uri.");
307
+ }
308
+ if (dsn !== undefined)
309
+ return { dsn };
310
+ if (uri !== undefined)
311
+ return { uri };
312
+ if (connectionConfig !== undefined)
313
+ return connectionConfig;
314
+ return {};
315
+ }
316
+ // ---------------------------------------------------------------------------
317
+ // Polling helper
318
+ // ---------------------------------------------------------------------------
319
+ async function poll(opts) {
320
+ const deadline = Date.now() + opts.timeout * 1000;
321
+ let interval = opts.pollInterval * 1000;
322
+ while (true) {
323
+ const elapsed = (Date.now() - (deadline - opts.timeout * 1000)) / 1000;
324
+ if (Date.now() >= deadline) {
325
+ throw new errors_js_1.TimeoutError(opts.operation, elapsed);
326
+ }
327
+ let result;
328
+ try {
329
+ result = await opts.fetch();
330
+ }
331
+ catch (err) {
332
+ if (err instanceof errors_js_1.RateLimitError && err.retryAfter !== undefined) {
333
+ await sleep(err.retryAfter * 1000);
334
+ continue;
335
+ }
336
+ throw err;
337
+ }
338
+ if (opts.done(result)) {
339
+ return result;
340
+ }
341
+ const remaining = deadline - Date.now();
342
+ const sleepTime = Math.min(interval, remaining);
343
+ if (sleepTime <= 0) {
344
+ throw new errors_js_1.TimeoutError(opts.operation, elapsed);
345
+ }
346
+ await sleep(sleepTime);
347
+ interval = Math.min(interval * 1.5, 30_000);
348
+ }
349
+ }
350
+ function sleep(ms) {
351
+ return new Promise((resolve) => setTimeout(resolve, ms));
352
+ }
353
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /** Browser CryptoOps implementation using WebCrypto (crypto.subtle).
2
+ *
3
+ * Ed25519 support: Chrome 113+, Firefox 128+, Safari 17+.
4
+ */
5
+ import type { CryptoOps } from "./crypto.js";
6
+ export declare const browserCrypto: CryptoOps;
7
+ //# sourceMappingURL=crypto-browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto-browser.d.ts","sourceRoot":"","sources":["../../src/crypto-browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,aAAa,EAAE,SAyB3B,CAAC"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ /** Browser CryptoOps implementation using WebCrypto (crypto.subtle).
3
+ *
4
+ * Ed25519 support: Chrome 113+, Firefox 128+, Safari 17+.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.browserCrypto = void 0;
8
+ exports.browserCrypto = {
9
+ async sha256(data) {
10
+ const hash = await crypto.subtle.digest("SHA-256", toBuffer(data));
11
+ return new Uint8Array(hash);
12
+ },
13
+ async ed25519Verify(publicKey, data, signature) {
14
+ try {
15
+ const spki = concatBytes(ED25519_DER_PREFIX, publicKey);
16
+ const key = await crypto.subtle.importKey("spki", toBuffer(spki), { name: "Ed25519" }, false, ["verify"]);
17
+ return crypto.subtle.verify("Ed25519", key, toBuffer(signature), toBuffer(data));
18
+ }
19
+ catch {
20
+ return false;
21
+ }
22
+ },
23
+ };
24
+ const ED25519_DER_PREFIX = new Uint8Array([
25
+ 0x30, 0x2a, 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, 0x70, 0x03, 0x21, 0x00,
26
+ ]);
27
+ /** Ensure the Uint8Array is backed by a plain ArrayBuffer (not SharedArrayBuffer). */
28
+ function toBuffer(data) {
29
+ return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
30
+ }
31
+ function concatBytes(a, b) {
32
+ const out = new Uint8Array(a.length + b.length);
33
+ out.set(a, 0);
34
+ out.set(b, a.length);
35
+ return out;
36
+ }
37
+ //# 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;;;AAIU,QAAA,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,4 @@
1
+ /** Node.js CryptoOps implementation wrapping node:crypto. */
2
+ import type { CryptoOps } from "./crypto.js";
3
+ export declare const nodeCrypto: CryptoOps;
4
+ //# sourceMappingURL=crypto-node.d.ts.map
@@ -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,30 @@
1
+ "use strict";
2
+ /** Node.js CryptoOps implementation wrapping node:crypto. */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.nodeCrypto = void 0;
5
+ const node_crypto_1 = require("node:crypto");
6
+ const ED25519_DER_PREFIX = new Uint8Array([
7
+ 0x30, 0x2a, 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, 0x70, 0x03, 0x21, 0x00,
8
+ ]);
9
+ exports.nodeCrypto = {
10
+ async sha256(data) {
11
+ const hash = (0, node_crypto_1.createHash)("sha256").update(data).digest();
12
+ return new Uint8Array(hash);
13
+ },
14
+ async ed25519Verify(publicKey, data, signature) {
15
+ try {
16
+ const spki = concatBytes(ED25519_DER_PREFIX, publicKey);
17
+ return (0, node_crypto_1.verify)(null, data, { key: Buffer.from(spki), format: "der", type: "spki" }, signature);
18
+ }
19
+ catch {
20
+ return false;
21
+ }
22
+ },
23
+ };
24
+ function concatBytes(a, b) {
25
+ const out = new Uint8Array(a.length + b.length);
26
+ out.set(a, 0);
27
+ out.set(b, a.length);
28
+ return out;
29
+ }
30
+ //# 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,6CAAiD;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;AAEU,QAAA,UAAU,GAAc;IACnC,KAAK,CAAC,MAAM,CAAC,IAAgB;QAC3B,MAAM,IAAI,GAAG,IAAA,wBAAU,EAAC,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,IAAA,oBAAM,EACX,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,4 @@
1
+ "use strict";
2
+ /** Pluggable cryptographic operations for Node.js and browser environments. */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=crypto.js.map
@@ -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"}