@econ-v1/app-sdk 7.6.62 → 7.6.63

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.
@@ -197,7 +197,14 @@ var BURGER_EXPORTS = {
197
197
  "timingSafeEqual",
198
198
  "createCipheriv",
199
199
  "createDecipheriv",
200
- "scryptSync"
200
+ "scryptSync",
201
+ "KeyObject",
202
+ "generateKeyPairSync",
203
+ "generateKeyPair",
204
+ "createPublicKey",
205
+ "createPrivateKey",
206
+ "diffieHellman",
207
+ "hkdfSync"
201
208
  ],
202
209
  "burger:buffer": ["Buffer"],
203
210
  "burger:sqlite": ["Database"],
@@ -192,7 +192,14 @@ var BURGER_EXPORTS = {
192
192
  "timingSafeEqual",
193
193
  "createCipheriv",
194
194
  "createDecipheriv",
195
- "scryptSync"
195
+ "scryptSync",
196
+ "KeyObject",
197
+ "generateKeyPairSync",
198
+ "generateKeyPair",
199
+ "createPublicKey",
200
+ "createPrivateKey",
201
+ "diffieHellman",
202
+ "hkdfSync"
196
203
  ],
197
204
  "burger:buffer": ["Buffer"],
198
205
  "burger:sqlite": ["Database"],
@@ -1,6 +1,6 @@
1
- // Globals present in every Burger runtime in Phase 1 (Contract C5).
2
- // Pair with `"lib": ["ES2023"]` and no DOM lib: fetch, URL, streams, etc. are
3
- // deliberately absent until Phase 2.
1
+ // Globals present in every Burger runtime (Contract C5 and the packs since).
2
+ // Pair with `"lib": ["ES2023"]` and no DOM lib: WebSocket, EventTarget, Blob,
3
+ // etc. are deliberately absent.
4
4
 
5
5
  interface BurgerConsole {
6
6
  log(...data: unknown[]): void;
@@ -20,11 +20,19 @@ declare function queueMicrotask(callback: () => void): void;
20
20
  declare function setImmediate(handler: (...args: any[]) => void, ...args: any[]): number;
21
21
  declare function clearImmediate(id: number | undefined): void;
22
22
 
23
+ /** QuickJS's built-in DOMException: `name` defaults to "Error", `code` is the legacy number of the name (20 for AbortError). */
24
+ declare class DOMException extends Error {
25
+ constructor(message?: string, name?: string);
26
+ readonly code: number;
27
+ }
28
+
23
29
  /**
24
30
  * Agent runtime pack (node-app-burger ADR 003, >= 0.3.3): the WHATWG pair
25
31
  * without the DOM. Listeners receive a plain `{ type: "abort", target,
26
32
  * currentTarget }`; there is no EventTarget or Event class. The default
27
- * reason is an Error named AbortError; a timeout's is named TimeoutError.
33
+ * reason is a DOMException named AbortError (code 20); a timeout's is named
34
+ * TimeoutError (code 23). Releases before 0.3.10 (fetch pack, ADR 011) used an
35
+ * Error with the same name.
28
36
  */
29
37
  interface BurgerAbortEvent {
30
38
  readonly type: "abort";
@@ -58,7 +66,12 @@ declare class TextEncoder {
58
66
  declare class TextDecoder {
59
67
  constructor(label?: "utf-8" | "utf8", options?: { fatal?: boolean; ignoreBOM?: boolean });
60
68
  readonly encoding: "utf-8";
61
- decode(input?: Uint8Array | ArrayBuffer): string;
69
+ /**
70
+ * `{ stream: true }` (text and bytes pack, node-app-burger ADR 007, >= 0.3.6): a UTF-8
71
+ * sequence the chunk cuts off is held and joined with the next call; a call without `stream`
72
+ * flushes it. Older Burger ignores `stream`.
73
+ */
74
+ decode(input?: ArrayBuffer | ArrayBufferView, options?: { stream?: boolean }): string;
62
75
  }
63
76
 
64
77
  declare var performance: { now(): number };
@@ -74,6 +87,107 @@ type Buffer = import("burger:buffer").Buffer;
74
87
 
75
88
  declare function structuredClone<T>(value: T): T;
76
89
 
90
+ /**
91
+ * Fetch pack (node-app-burger ADR 011, >= 0.3.10): `fetch`, `Response`,
92
+ * `Headers` and `ReadableStream`, with
93
+ * Node's and Bun's semantics over HTTP/1.1 and HTTP/2 (ALPN), TLS with
94
+ * Mozilla's roots plus `NODE_EXTRA_CA_CERTS`, gzip/deflate/br decoding and up
95
+ * to 20 redirects. Errors are `TypeError`s carrying Bun's `code`
96
+ * (`ECONNREFUSED`, `ENOTFOUND`, `CERT_HAS_EXPIRED`, ...); an abort rejects
97
+ * with the signal's reason, and an abort or `cancel()` during the body closes
98
+ * an HTTP/1.1 socket (never pooled) or resets an HTTP/2 stream. No `Request`,
99
+ * `FormData`, `Blob`, `clone()`, `tee`/`pipeTo` or BYOB readers.
100
+ */
101
+ type HeadersInit = Headers | Iterable<readonly [string, string]> | Record<string, string>;
102
+ type BodyInit = string | ArrayBuffer | ArrayBufferView | URLSearchParams | ReadableStream<Uint8Array>;
103
+ declare class Headers {
104
+ constructor(init?: HeadersInit);
105
+ append(name: string, value: string): void;
106
+ delete(name: string): void;
107
+ get(name: string): string | null;
108
+ getSetCookie(): string[];
109
+ has(name: string): boolean;
110
+ set(name: string, value: string): void;
111
+ forEach(callback: (value: string, name: string, headers: Headers) => void, thisArg?: unknown): void;
112
+ entries(): IterableIterator<[string, string]>;
113
+ keys(): IterableIterator<string>;
114
+ values(): IterableIterator<string>;
115
+ [Symbol.iterator](): IterableIterator<[string, string]>;
116
+ }
117
+ type ReadableStreamReadResult<R> = { done: false; value: R } | { done: true; value: undefined };
118
+ interface ReadableStreamDefaultController<R = unknown> {
119
+ readonly desiredSize: number | null;
120
+ enqueue(chunk: R): void;
121
+ close(): void;
122
+ error(reason?: unknown): void;
123
+ }
124
+ interface UnderlyingDefaultSource<R = unknown> {
125
+ start?(controller: ReadableStreamDefaultController<R>): void | PromiseLike<void>;
126
+ pull?(controller: ReadableStreamDefaultController<R>): void | PromiseLike<void>;
127
+ cancel?(reason?: unknown): void | PromiseLike<void>;
128
+ }
129
+ interface QueuingStrategy<R = unknown> {
130
+ highWaterMark?: number;
131
+ size?(chunk: R): number;
132
+ }
133
+ declare class ReadableStreamDefaultReader<R = unknown> {
134
+ constructor(stream: ReadableStream<R>);
135
+ readonly closed: Promise<void>;
136
+ read(): Promise<ReadableStreamReadResult<R>>;
137
+ cancel(reason?: unknown): Promise<void>;
138
+ releaseLock(): void;
139
+ }
140
+ declare class ReadableStream<R = unknown> {
141
+ constructor(underlyingSource?: UnderlyingDefaultSource<R>, strategy?: QueuingStrategy<R>);
142
+ readonly locked: boolean;
143
+ cancel(reason?: unknown): Promise<void>;
144
+ getReader(): ReadableStreamDefaultReader<R>;
145
+ values(options?: { preventCancel?: boolean }): AsyncIterableIterator<R>;
146
+ [Symbol.asyncIterator](options?: { preventCancel?: boolean }): AsyncIterableIterator<R>;
147
+ /**
148
+ * Burger only (ADR 011): the body as batches of complete lines, without
149
+ * their `\n` (and a `\r` before it), one batch per read. For a fetch body
150
+ * the bytes are split and decoded natively off the app thread, so a UTF-8
151
+ * character cut across reads is never broken. Feature-detect it
152
+ * (`typeof body.readLines === "function"`) in code that also runs on Bun.
153
+ */
154
+ readLines(): AsyncIterableIterator<string[]>;
155
+ }
156
+ interface ResponseInit {
157
+ status?: number;
158
+ statusText?: string;
159
+ headers?: HeadersInit;
160
+ }
161
+ declare class Response {
162
+ constructor(body?: BodyInit | null, init?: ResponseInit);
163
+ readonly type: "basic" | "default" | "error";
164
+ readonly url: string;
165
+ readonly redirected: boolean;
166
+ readonly status: number;
167
+ readonly ok: boolean;
168
+ readonly statusText: string;
169
+ readonly headers: Headers;
170
+ readonly body: ReadableStream<Uint8Array> | null;
171
+ readonly bodyUsed: boolean;
172
+ text(): Promise<string>;
173
+ /** `any` as in bun-types and lib.dom, so code that type-checks against Bun compiles here unchanged. */
174
+ json(): Promise<any>;
175
+ arrayBuffer(): Promise<ArrayBuffer>;
176
+ bytes(): Promise<Uint8Array>;
177
+ static json(data: unknown, init?: ResponseInit): Response;
178
+ static error(): Response;
179
+ static redirect(url: string, status?: 301 | 302 | 303 | 307 | 308): Response;
180
+ }
181
+ interface RequestInit {
182
+ method?: string;
183
+ headers?: HeadersInit;
184
+ body?: BodyInit | null;
185
+ redirect?: "follow" | "error" | "manual";
186
+ signal?: AbortSignal | null;
187
+ }
188
+ /** `input` is a URL string, or an object with `href` (a URL) or `url`. */
189
+ declare function fetch(input: string | { readonly href: string } | { readonly url: string }, init?: RequestInit): Promise<Response>;
190
+
77
191
  interface BurgerProcessMemoryUsage {
78
192
  heapUsed: number;
79
193
  heapTotal: number;
@@ -145,3 +259,48 @@ declare var onmessage: ((event: BurgerWorkerMessageEvent) => void) | null;
145
259
  declare function addEventListener(type: "message", listener: (event: BurgerWorkerMessageEvent) => void): void;
146
260
  declare function removeEventListener(type: "message", listener: (event: BurgerWorkerMessageEvent) => void): void;
147
261
  declare var self: typeof globalThis;
262
+
263
+ /**
264
+ * URL pack (node-app-burger ADR 010, >= 0.3.9): the WHATWG
265
+ * `URL` and `URLSearchParams` with Node's behaviour, parsed by Ada (the
266
+ * parser Node uses). A parse failure throws a TypeError with
267
+ * `code: "ERR_INVALID_URL"`. No `URL.createObjectURL`/`revokeObjectURL`
268
+ * (Burger has no Blob) and no `node:url` module.
269
+ */
270
+ declare class URL {
271
+ constructor(url: string | { toString(): string }, base?: string | URL);
272
+ static canParse(url: string | { toString(): string }, base?: string | URL): boolean;
273
+ static parse(url: string | { toString(): string }, base?: string | URL): URL | null;
274
+ href: string;
275
+ readonly origin: string;
276
+ protocol: string;
277
+ username: string;
278
+ password: string;
279
+ host: string;
280
+ hostname: string;
281
+ port: string;
282
+ pathname: string;
283
+ search: string;
284
+ readonly searchParams: URLSearchParams;
285
+ hash: string;
286
+ toString(): string;
287
+ toJSON(): string;
288
+ }
289
+
290
+ declare class URLSearchParams {
291
+ constructor(init?: string | URLSearchParams | Iterable<readonly [string, string] | readonly string[]> | Record<string, string>);
292
+ readonly size: number;
293
+ append(name: string, value: string): void;
294
+ delete(name: string, value?: string): void;
295
+ get(name: string): string | null;
296
+ getAll(name: string): string[];
297
+ has(name: string, value?: string): boolean;
298
+ set(name: string, value: string): void;
299
+ sort(): void;
300
+ forEach<This = undefined>(callback: (this: This, value: string, name: string, params: URLSearchParams) => void, thisArg?: This): void;
301
+ keys(): IterableIterator<string>;
302
+ values(): IterableIterator<string>;
303
+ entries(): IterableIterator<[string, string]>;
304
+ [Symbol.iterator](): IterableIterator<[string, string]>;
305
+ toString(): string;
306
+ }
@@ -360,6 +360,66 @@ declare module "burger:crypto" {
360
360
  }
361
361
  export function scryptSync(password: BinaryLike, salt: BinaryLike, keylen: number, options?: ScryptOptions): Buffer;
362
362
 
363
+ /**
364
+ * X25519 keys, diffieHellman and hkdfSync (node-app-burger ADR 012, the
365
+ * release after 0.3.10), for node-app-api-store's sealed sessions. Keys are
366
+ * X25519 only: other key types throw. Key bytes stay native until exported.
367
+ */
368
+ export type KeyFormat = "pem" | "der" | "jwk";
369
+ export interface X25519Jwk {
370
+ kty: "OKP";
371
+ crv: "X25519";
372
+ x: string;
373
+ d?: string;
374
+ }
375
+ export interface PublicKeyExportOptions<F extends KeyFormat = KeyFormat> {
376
+ format: F;
377
+ type?: "spki";
378
+ }
379
+ export interface PrivateKeyExportOptions<F extends KeyFormat = KeyFormat> {
380
+ format: F;
381
+ type?: "pkcs8";
382
+ }
383
+ export class KeyObject {
384
+ private constructor();
385
+ readonly type: "public" | "private";
386
+ readonly asymmetricKeyType: "x25519";
387
+ readonly asymmetricKeyDetails: {};
388
+ equals(otherKeyObject: KeyObject): boolean;
389
+ export(options: { format: "pem"; type: "spki" | "pkcs8" }): string;
390
+ export(options: { format: "der"; type: "spki" | "pkcs8" }): Buffer;
391
+ export(options: { format: "jwk" }): X25519Jwk;
392
+ }
393
+ export interface KeyInput {
394
+ key: string | ArrayBuffer | ArrayBufferView;
395
+ format?: "pem" | "der";
396
+ type?: "spki" | "pkcs8";
397
+ encoding?: string;
398
+ passphrase?: string | Uint8Array;
399
+ }
400
+ export interface JwkKeyInput {
401
+ key: X25519Jwk;
402
+ format: "jwk";
403
+ }
404
+ export function createPublicKey(key: string | ArrayBuffer | ArrayBufferView | KeyObject | KeyInput | JwkKeyInput | { key: KeyObject }): KeyObject;
405
+ export function createPrivateKey(key: string | ArrayBuffer | ArrayBufferView | KeyInput | JwkKeyInput): KeyObject;
406
+ export function diffieHellman(options: { privateKey: KeyObject; publicKey: KeyObject }): Buffer;
407
+ export function hkdfSync(digest: HashAlgorithm, ikm: BinaryLike, salt: BinaryLike, info: BinaryLike, keylen: number): ArrayBuffer;
408
+
409
+ export interface KeyPairKeyObjectResult {
410
+ publicKey: KeyObject;
411
+ privateKey: KeyObject;
412
+ }
413
+ export interface KeyPairEncodings {
414
+ publicKeyEncoding?: { type: "spki"; format: "pem" | "der" } | { format: "jwk" };
415
+ privateKeyEncoding?: { type: "pkcs8"; format: "pem" | "der" } | { format: "jwk" };
416
+ }
417
+ type Encoded<E> = E extends { format: "pem" } ? string : E extends { format: "der" } ? Buffer : E extends { format: "jwk" } ? X25519Jwk : KeyObject;
418
+ export function generateKeyPairSync(type: "x25519"): KeyPairKeyObjectResult;
419
+ export function generateKeyPairSync<O extends KeyPairEncodings>(type: "x25519", options: O): { publicKey: Encoded<O["publicKeyEncoding"]>; privateKey: Encoded<O["privateKeyEncoding"]> };
420
+ export function generateKeyPair(type: "x25519", callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void): void;
421
+ export function generateKeyPair<O extends KeyPairEncodings>(type: "x25519", options: O, callback: (err: Error | null, publicKey: Encoded<O["publicKeyEncoding"]>, privateKey: Encoded<O["privateKeyEncoding"]>) => void): void;
422
+
363
423
  const crypto: {
364
424
  randomUUID: typeof randomUUID;
365
425
  randomBytes: typeof randomBytes;
@@ -369,6 +429,13 @@ declare module "burger:crypto" {
369
429
  createCipheriv: typeof createCipheriv;
370
430
  createDecipheriv: typeof createDecipheriv;
371
431
  scryptSync: typeof scryptSync;
432
+ KeyObject: typeof KeyObject;
433
+ generateKeyPairSync: typeof generateKeyPairSync;
434
+ generateKeyPair: typeof generateKeyPair;
435
+ createPublicKey: typeof createPublicKey;
436
+ createPrivateKey: typeof createPrivateKey;
437
+ diffieHellman: typeof diffieHellman;
438
+ hkdfSync: typeof hkdfSync;
372
439
  };
373
440
  export default crypto;
374
441
  }
@@ -442,6 +509,70 @@ declare module "burger:buffer" {
442
509
  compare(target: Uint8Array): -1 | 0 | 1;
443
510
  subarray(start?: number, end?: number): Buffer;
444
511
  slice(start?: number, end?: number): Buffer;
512
+ /**
513
+ * Text and bytes pack (node-app-burger ADR 007, >= 0.3.6), Node 26 semantics: a number
514
+ * searches for its low 8 bits, a string for its bytes in `encoding`, a view for its bytes.
515
+ * `end` (exclusive) is optional; a string in its place is the encoding.
516
+ */
517
+ indexOf(value: number | string | Uint8Array, byteOffset?: number | BufferEncoding, end?: number | BufferEncoding, encoding?: BufferEncoding): number;
518
+ lastIndexOf(value: number | string | Uint8Array, byteOffset?: number | BufferEncoding, end?: number | BufferEncoding, encoding?: BufferEncoding): number;
519
+ includes(value: number | string | Uint8Array, byteOffset?: number | BufferEncoding, end?: number | BufferEncoding, encoding?: BufferEncoding): boolean;
520
+ /** Text and bytes pack (ADR 007, >= 0.3.6): Node's integer reads; `Uint` aliases are the same functions. */
521
+ readUInt8(offset?: number): number;
522
+ readUint8(offset?: number): number;
523
+ readUInt16LE(offset?: number): number;
524
+ readUint16LE(offset?: number): number;
525
+ readUInt16BE(offset?: number): number;
526
+ readUint16BE(offset?: number): number;
527
+ readUInt32LE(offset?: number): number;
528
+ readUint32LE(offset?: number): number;
529
+ readUInt32BE(offset?: number): number;
530
+ readUint32BE(offset?: number): number;
531
+ readUIntLE(offset: number, byteLength: number): number;
532
+ readUintLE(offset: number, byteLength: number): number;
533
+ readUIntBE(offset: number, byteLength: number): number;
534
+ readUintBE(offset: number, byteLength: number): number;
535
+ readInt8(offset?: number): number;
536
+ readInt16LE(offset?: number): number;
537
+ readInt16BE(offset?: number): number;
538
+ readInt32LE(offset?: number): number;
539
+ readInt32BE(offset?: number): number;
540
+ readIntLE(offset: number, byteLength: number): number;
541
+ readIntBE(offset: number, byteLength: number): number;
542
+ readBigUInt64LE(offset?: number): bigint;
543
+ readBigUint64LE(offset?: number): bigint;
544
+ readBigUInt64BE(offset?: number): bigint;
545
+ readBigUint64BE(offset?: number): bigint;
546
+ readBigInt64LE(offset?: number): bigint;
547
+ readBigInt64BE(offset?: number): bigint;
548
+ /** Text and bytes pack (ADR 007, >= 0.3.6): Node's integer writes; each returns the offset after the value. */
549
+ writeUInt8(value: number, offset?: number): number;
550
+ writeUint8(value: number, offset?: number): number;
551
+ writeUInt16LE(value: number, offset?: number): number;
552
+ writeUint16LE(value: number, offset?: number): number;
553
+ writeUInt16BE(value: number, offset?: number): number;
554
+ writeUint16BE(value: number, offset?: number): number;
555
+ writeUInt32LE(value: number, offset?: number): number;
556
+ writeUint32LE(value: number, offset?: number): number;
557
+ writeUInt32BE(value: number, offset?: number): number;
558
+ writeUint32BE(value: number, offset?: number): number;
559
+ writeUIntLE(value: number, offset: number, byteLength: number): number;
560
+ writeUintLE(value: number, offset: number, byteLength: number): number;
561
+ writeUIntBE(value: number, offset: number, byteLength: number): number;
562
+ writeUintBE(value: number, offset: number, byteLength: number): number;
563
+ writeInt8(value: number, offset?: number): number;
564
+ writeInt16LE(value: number, offset?: number): number;
565
+ writeInt16BE(value: number, offset?: number): number;
566
+ writeInt32LE(value: number, offset?: number): number;
567
+ writeInt32BE(value: number, offset?: number): number;
568
+ writeIntLE(value: number, offset: number, byteLength: number): number;
569
+ writeIntBE(value: number, offset: number, byteLength: number): number;
570
+ writeBigUInt64LE(value: bigint, offset?: number): number;
571
+ writeBigUint64LE(value: bigint, offset?: number): number;
572
+ writeBigUInt64BE(value: bigint, offset?: number): number;
573
+ writeBigUint64BE(value: bigint, offset?: number): number;
574
+ writeBigInt64LE(value: bigint, offset?: number): number;
575
+ writeBigInt64BE(value: bigint, offset?: number): number;
445
576
  }
446
577
 
447
578
  export interface BufferConstructor {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@econ-v1/app-sdk",
3
- "version": "7.6.62",
3
+ "version": "7.6.63",
4
4
  "description": "TypeScript SDK for building Node mini-app plugins (Bun runtime) on the Lightning-powered marketplace daemon",
5
5
  "license": "MIT OR Apache-2.0",
6
6
  "author": "Node contributors",