@econ-v1/app-sdk 7.6.64 → 7.6.66

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.
@@ -3,7 +3,7 @@
3
3
  * they become. Everything here is data; `classifySpecifier` is the only
4
4
  * decision function.
5
5
  */
6
- export declare const BURGER_MODULES: readonly ["burger:host", "burger:fs", "burger:fs/promises", "burger:path", "burger:os", "burger:worker_threads", "burger:crypto", "burger:buffer", "burger:sqlite", "burger:zlib", "burger:async_hooks", "burger:zod", "burger:test"];
6
+ export declare const BURGER_MODULES: readonly ["burger:host", "burger:fs", "burger:fs/promises", "burger:path", "burger:os", "burger:worker_threads", "burger:crypto", "burger:buffer", "burger:sqlite", "burger:zlib", "burger:async_hooks", "burger:zod", "burger:net", "burger:tls", "burger:dns/promises", "burger:test"];
7
7
  export type BurgerModule = (typeof BURGER_MODULES)[number];
8
8
  /** C5/C6 "Aliased from" columns (plus `fs/promises`, the module form of `fs.promises`). */
9
9
  export declare const ALIASES: ReadonlyMap<string, BurgerModule>;
@@ -42,6 +42,12 @@ export declare const NODE_BUILTINS: ReadonlySet<string>;
42
42
  * `burger:zod` (node-app-burger ADR 015, >= 0.3.12) has no `node:`/`bun:`
43
43
  * alias: an app imports it by name (`import { install } from "burger:zod";
44
44
  * install(z);`) to compile its zod 3 schemas into plain check functions.
45
+ *
46
+ * SOCKET PACK (node-app-burger ADR 018, >= 0.3.15): `burger:net`, `burger:tls`
47
+ * and `burger:dns/promises` are a client subset, what node-app-api-store's
48
+ * timed HTTP client (ADR-120) uses: `net.connect`/`createConnection`, `isIP`,
49
+ * `Socket` (no `createServer`), `tls.connect` with certificate checks always
50
+ * on (`rejectUnauthorized: false` throws), and `lookup`.
45
51
  */
46
52
  export declare const BURGER_EXPORTS: Readonly<Record<BurgerModule, readonly string[]>>;
47
53
  /**
@@ -35,6 +35,9 @@ var BURGER_MODULES = [
35
35
  "burger:zlib",
36
36
  "burger:async_hooks",
37
37
  "burger:zod",
38
+ "burger:net",
39
+ "burger:tls",
40
+ "burger:dns/promises",
38
41
  "burger:test"
39
42
  ];
40
43
  var ALIASES = new Map([
@@ -57,7 +60,13 @@ var ALIASES = new Map([
57
60
  ["zlib", "burger:zlib"],
58
61
  ["node:async_hooks", "burger:async_hooks"],
59
62
  ["async_hooks", "burger:async_hooks"],
60
- ["bun:test", "burger:test"]
63
+ ["bun:test", "burger:test"],
64
+ ["node:net", "burger:net"],
65
+ ["net", "burger:net"],
66
+ ["node:tls", "burger:tls"],
67
+ ["tls", "burger:tls"],
68
+ ["node:dns/promises", "burger:dns/promises"],
69
+ ["dns/promises", "burger:dns/promises"]
61
70
  ]);
62
71
  var NODE_BUILTINS = new Set([
63
72
  "_http_agent",
@@ -218,6 +227,9 @@ var BURGER_EXPORTS = {
218
227
  ],
219
228
  "burger:async_hooks": ["AsyncLocalStorage"],
220
229
  "burger:zod": ["install", "compile"],
230
+ "burger:net": ["Socket", "connect", "createConnection", "isIP", "isIPv4", "isIPv6"],
231
+ "burger:tls": ["TLSSocket", "connect"],
232
+ "burger:dns/promises": ["lookup"],
221
233
  "burger:test": [
222
234
  "describe",
223
235
  "test",
@@ -243,7 +255,10 @@ var BURGER_DEFAULT_EXPORT = {
243
255
  "burger:sqlite": true,
244
256
  "burger:zlib": true,
245
257
  "burger:async_hooks": true,
246
- "burger:zod": true
258
+ "burger:zod": true,
259
+ "burger:net": true,
260
+ "burger:tls": true,
261
+ "burger:dns/promises": true
247
262
  };
248
263
  var BURGER_MODULE_SET = new Set(BURGER_MODULES);
249
264
  function classifySpecifier(specifier) {
@@ -30,6 +30,9 @@ var BURGER_MODULES = [
30
30
  "burger:zlib",
31
31
  "burger:async_hooks",
32
32
  "burger:zod",
33
+ "burger:net",
34
+ "burger:tls",
35
+ "burger:dns/promises",
33
36
  "burger:test"
34
37
  ];
35
38
  var ALIASES = new Map([
@@ -52,7 +55,13 @@ var ALIASES = new Map([
52
55
  ["zlib", "burger:zlib"],
53
56
  ["node:async_hooks", "burger:async_hooks"],
54
57
  ["async_hooks", "burger:async_hooks"],
55
- ["bun:test", "burger:test"]
58
+ ["bun:test", "burger:test"],
59
+ ["node:net", "burger:net"],
60
+ ["net", "burger:net"],
61
+ ["node:tls", "burger:tls"],
62
+ ["tls", "burger:tls"],
63
+ ["node:dns/promises", "burger:dns/promises"],
64
+ ["dns/promises", "burger:dns/promises"]
56
65
  ]);
57
66
  var NODE_BUILTINS = new Set([
58
67
  "_http_agent",
@@ -213,6 +222,9 @@ var BURGER_EXPORTS = {
213
222
  ],
214
223
  "burger:async_hooks": ["AsyncLocalStorage"],
215
224
  "burger:zod": ["install", "compile"],
225
+ "burger:net": ["Socket", "connect", "createConnection", "isIP", "isIPv4", "isIPv6"],
226
+ "burger:tls": ["TLSSocket", "connect"],
227
+ "burger:dns/promises": ["lookup"],
216
228
  "burger:test": [
217
229
  "describe",
218
230
  "test",
@@ -238,7 +250,10 @@ var BURGER_DEFAULT_EXPORT = {
238
250
  "burger:sqlite": true,
239
251
  "burger:zlib": true,
240
252
  "burger:async_hooks": true,
241
- "burger:zod": true
253
+ "burger:zod": true,
254
+ "burger:net": true,
255
+ "burger:tls": true,
256
+ "burger:dns/promises": true
242
257
  };
243
258
  var BURGER_MODULE_SET = new Set(BURGER_MODULES);
244
259
  function classifySpecifier(specifier) {
@@ -24,3 +24,10 @@ declare module "zlib" { export * from "burger:zlib"; export { default } from "bu
24
24
  declare module "node:async_hooks" { export * from "burger:async_hooks"; export { default } from "burger:async_hooks"; }
25
25
  declare module "async_hooks" { export * from "burger:async_hooks"; export { default } from "burger:async_hooks"; }
26
26
  declare module "bun:test" { export * from "burger:test"; }
27
+ // Socket pack (node-app-burger ADR 018, >= 0.3.15): the client subset of net, tls and dns/promises.
28
+ declare module "node:net" { export * from "burger:net"; export { default } from "burger:net"; }
29
+ declare module "net" { export * from "burger:net"; export { default } from "burger:net"; }
30
+ declare module "node:tls" { export * from "burger:tls"; export { default } from "burger:tls"; }
31
+ declare module "tls" { export * from "burger:tls"; export { default } from "burger:tls"; }
32
+ declare module "node:dns/promises" { export * from "burger:dns/promises"; export { default } from "burger:dns/promises"; }
33
+ declare module "dns/promises" { export * from "burger:dns/promises"; export { default } from "burger:dns/promises"; }
@@ -511,6 +511,198 @@ declare module "burger:zod" {
511
511
  export default burgerZod;
512
512
  }
513
513
 
514
+ /** Socket pack (node-app-burger ADR 018, >= 0.3.15): the client subset of `node:net` that
515
+ * node-app-api-store's timed HTTP client (ADR-120) uses. No servers, no IPC paths, no
516
+ * `allowHalfOpen`. At most 32 open sockets per app (one more fails with `EMFILE`). */
517
+ declare module "burger:net" {
518
+ import type { Buffer, BufferEncoding } from "burger:buffer";
519
+
520
+ export interface SocketConnectOpts {
521
+ port: number | string;
522
+ host?: string;
523
+ noDelay?: boolean;
524
+ }
525
+
526
+ export interface SocketAddress {
527
+ address: string;
528
+ family: "IPv4" | "IPv6";
529
+ port: number;
530
+ }
531
+
532
+ export interface SocketEvents {
533
+ connect: [];
534
+ ready: [];
535
+ data: [data: Buffer];
536
+ end: [];
537
+ finish: [];
538
+ drain: [];
539
+ error: [error: Error];
540
+ close: [hadError: boolean];
541
+ lookup: [error: Error | null, address: string, family: number, host: string];
542
+ }
543
+
544
+ type Listener<Args extends unknown[]> = (...args: Args) => void;
545
+ /** Any listener: every function type is assignable to it. */
546
+ export type AnyListener = (...args: never[]) => void;
547
+
548
+ /** A TCP client socket: Node's net.Socket events and methods, the part a client uses. */
549
+ export class Socket {
550
+ constructor(options?: { noDelay?: boolean });
551
+ readonly connecting: boolean;
552
+ readonly destroyed: boolean;
553
+ readonly pending: boolean;
554
+ readonly readable: boolean;
555
+ readonly writable: boolean;
556
+ readonly readyState: "opening" | "open" | "readOnly" | "writeOnly" | "closed";
557
+ readonly remoteAddress: string | undefined;
558
+ readonly remotePort: number | undefined;
559
+ readonly remoteFamily: "IPv4" | "IPv6" | undefined;
560
+ readonly localAddress: string | undefined;
561
+ readonly localPort: number | undefined;
562
+ readonly localFamily: "IPv4" | "IPv6" | undefined;
563
+ readonly bytesRead: number;
564
+ readonly bytesWritten: number;
565
+ connect(options: SocketConnectOpts, connectListener?: () => void): this;
566
+ connect(port: number, host?: string, connectListener?: () => void): this;
567
+ /** `false` once 16 KiB wait to be sent; `drain` follows when they are gone. */
568
+ write(data: string | Uint8Array, callback?: (error: Error | null) => void): boolean;
569
+ write(data: string | Uint8Array, encoding?: BufferEncoding, callback?: (error: Error | null) => void): boolean;
570
+ end(callback?: () => void): this;
571
+ end(data: string | Uint8Array, callback?: () => void): this;
572
+ end(data: string | Uint8Array, encoding?: BufferEncoding, callback?: () => void): this;
573
+ destroy(error?: Error): this;
574
+ pause(): this;
575
+ resume(): this;
576
+ isPaused(): boolean;
577
+ setNoDelay(noDelay?: boolean): this;
578
+ ref(): this;
579
+ unref(): this;
580
+ address(): SocketAddress | Record<string, never>;
581
+ on<Name extends keyof SocketEvents>(event: Name, listener: Listener<SocketEvents[Name]>): this;
582
+ on(event: string | symbol, listener: AnyListener): this;
583
+ addListener<Name extends keyof SocketEvents>(event: Name, listener: Listener<SocketEvents[Name]>): this;
584
+ addListener(event: string | symbol, listener: AnyListener): this;
585
+ prependListener<Name extends keyof SocketEvents>(event: Name, listener: Listener<SocketEvents[Name]>): this;
586
+ prependListener(event: string | symbol, listener: AnyListener): this;
587
+ once<Name extends keyof SocketEvents>(event: Name, listener: Listener<SocketEvents[Name]>): this;
588
+ once(event: string | symbol, listener: AnyListener): this;
589
+ prependOnceListener<Name extends keyof SocketEvents>(event: Name, listener: Listener<SocketEvents[Name]>): this;
590
+ prependOnceListener(event: string | symbol, listener: AnyListener): this;
591
+ off(event: string | symbol, listener: AnyListener): this;
592
+ removeListener(event: string | symbol, listener: AnyListener): this;
593
+ removeAllListeners(event?: string | symbol): this;
594
+ emit(event: string | symbol, ...args: unknown[]): boolean;
595
+ listenerCount(event: string | symbol, listener?: AnyListener): number;
596
+ listeners(event: string | symbol): AnyListener[];
597
+ rawListeners(event: string | symbol): AnyListener[];
598
+ eventNames(): Array<string | symbol>;
599
+ setMaxListeners(n: number): this;
600
+ getMaxListeners(): number;
601
+ }
602
+
603
+ export function connect(options: SocketConnectOpts, connectListener?: () => void): Socket;
604
+ export function connect(port: number, host?: string, connectListener?: () => void): Socket;
605
+ export function createConnection(options: SocketConnectOpts, connectListener?: () => void): Socket;
606
+ export function createConnection(port: number, host?: string, connectListener?: () => void): Socket;
607
+ /** 4, 6, or 0 when `input` is no IP address (Node's patterns, zone ids included). */
608
+ export function isIP(input: string): number;
609
+ export function isIPv4(input: string): boolean;
610
+ export function isIPv6(input: string): boolean;
611
+
612
+ type SocketClass = Socket;
613
+ type SocketConnectOptsType = SocketConnectOpts;
614
+ const net: {
615
+ Socket: typeof Socket;
616
+ connect: typeof connect;
617
+ createConnection: typeof createConnection;
618
+ isIP: typeof isIP;
619
+ isIPv4: typeof isIPv4;
620
+ isIPv6: typeof isIPv6;
621
+ };
622
+ /** `net.Socket` as a type through the default import, as Node's typings allow. */
623
+ namespace net {
624
+ export type Socket = SocketClass;
625
+ export type SocketConnectOpts = SocketConnectOptsType;
626
+ }
627
+ export default net;
628
+ }
629
+
630
+ /** Socket pack (node-app-burger ADR 018, >= 0.3.15): `tls.connect` over rustls, Mozilla's roots
631
+ * plus `NODE_EXTRA_CA_CERTS`, certificate and host checks always on. `rejectUnauthorized: false`
632
+ * and the options that change the handshake (`key`, `cert`, `ciphers`, `minVersion`, ...) throw. */
633
+ declare module "burger:tls" {
634
+ import type { Buffer } from "burger:buffer";
635
+ import { Socket, type AnyListener, type SocketEvents } from "burger:net";
636
+
637
+ export interface ConnectionOptions {
638
+ host?: string;
639
+ port?: number;
640
+ /** A connected or connecting `net.Socket` to run the handshake over. */
641
+ socket?: Socket;
642
+ /** The name the certificate is checked against and sent as SNI. */
643
+ servername?: string;
644
+ ALPNProtocols?: Array<string | Uint8Array> | Uint8Array;
645
+ /** PEM certificates that replace the bundled roots, as Node's `ca`. */
646
+ ca?: string | Buffer | Array<string | Buffer>;
647
+ noDelay?: boolean;
648
+ /** Only `true` (the default) is accepted. */
649
+ rejectUnauthorized?: true;
650
+ }
651
+
652
+ export interface TLSSocketEvents extends SocketEvents {
653
+ secureConnect: [];
654
+ }
655
+
656
+ type Listener<Args extends unknown[]> = (...args: Args) => void;
657
+
658
+ export class TLSSocket extends Socket {
659
+ readonly encrypted: true;
660
+ readonly authorized: boolean;
661
+ readonly authorizationError: Error | null;
662
+ /** The protocol the server chose by ALPN, or `false`. */
663
+ readonly alpnProtocol: string | false;
664
+ /** "TLSv1.3" or "TLSv1.2" once connected; `null` before. */
665
+ getProtocol(): string | null;
666
+ on<Name extends keyof TLSSocketEvents>(event: Name, listener: Listener<TLSSocketEvents[Name]>): this;
667
+ on(event: string | symbol, listener: AnyListener): this;
668
+ once<Name extends keyof TLSSocketEvents>(event: Name, listener: Listener<TLSSocketEvents[Name]>): this;
669
+ once(event: string | symbol, listener: AnyListener): this;
670
+ }
671
+
672
+ export function connect(options: ConnectionOptions, secureConnectListener?: () => void): TLSSocket;
673
+ export function connect(port: number, host?: string, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket;
674
+ export function connect(port: number, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket;
675
+
676
+ type TLSSocketClass = TLSSocket;
677
+ type ConnectionOptionsType = ConnectionOptions;
678
+ const tls: { TLSSocket: typeof TLSSocket; connect: typeof connect };
679
+ /** `tls.ConnectionOptions` and `tls.TLSSocket` as types through the default import. */
680
+ namespace tls {
681
+ export type TLSSocket = TLSSocketClass;
682
+ export type ConnectionOptions = ConnectionOptionsType;
683
+ }
684
+ export default tls;
685
+ }
686
+
687
+ /** Socket pack (node-app-burger ADR 018, >= 0.3.15): `lookup` from `node:dns/promises`,
688
+ * `getaddrinfo` off the app thread and not cached. `node:dns` itself is not provided. */
689
+ declare module "burger:dns/promises" {
690
+ export interface LookupAddress {
691
+ address: string;
692
+ family: number;
693
+ }
694
+
695
+ export interface LookupOptions {
696
+ family?: 0 | 4 | 6 | "IPv4" | "IPv6";
697
+ all?: boolean;
698
+ }
699
+
700
+ export function lookup(hostname: string, options: LookupOptions & { all: true }): Promise<LookupAddress[]>;
701
+ export function lookup(hostname: string, options?: LookupOptions | 0 | 4 | 6): Promise<LookupAddress>;
702
+ const dnsPromises: { lookup: typeof lookup };
703
+ export default dnsPromises;
704
+ }
705
+
514
706
  declare module "burger:buffer" {
515
707
  export type BufferEncoding = "utf8" | "utf-8" | "hex" | "base64" | "base64url" | "latin1" | "binary" | "ascii";
516
708
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@econ-v1/app-sdk",
3
- "version": "7.6.64",
3
+ "version": "7.6.66",
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",