@promigence/sdk 0.1.0-beta.12

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 (104) hide show
  1. package/NOTICE +14 -0
  2. package/README.md +54 -0
  3. package/dist/blake3.d.ts +10 -0
  4. package/dist/blake3.js +111 -0
  5. package/dist/bundle.d.ts +96 -0
  6. package/dist/bundle.js +227 -0
  7. package/dist/ca-guard.d.ts +1 -0
  8. package/dist/ca-guard.js +166 -0
  9. package/dist/caller.d.ts +73 -0
  10. package/dist/caller.js +47 -0
  11. package/dist/cjs/blake3.d.ts +10 -0
  12. package/dist/cjs/blake3.js +116 -0
  13. package/dist/cjs/bundle.d.ts +96 -0
  14. package/dist/cjs/bundle.js +242 -0
  15. package/dist/cjs/ca-guard.d.ts +1 -0
  16. package/dist/cjs/ca-guard.js +174 -0
  17. package/dist/cjs/caller.d.ts +73 -0
  18. package/dist/cjs/caller.js +57 -0
  19. package/dist/cjs/client.d.ts +3015 -0
  20. package/dist/cjs/client.js +2617 -0
  21. package/dist/cjs/command-errors.d.ts +41 -0
  22. package/dist/cjs/command-errors.js +43 -0
  23. package/dist/cjs/context.d.ts +119 -0
  24. package/dist/cjs/context.js +598 -0
  25. package/dist/cjs/core.d.ts +285 -0
  26. package/dist/cjs/core.js +290 -0
  27. package/dist/cjs/credstore.d.ts +90 -0
  28. package/dist/cjs/credstore.js +219 -0
  29. package/dist/cjs/dispatcher.d.ts +58 -0
  30. package/dist/cjs/dispatcher.js +91 -0
  31. package/dist/cjs/github.d.ts +158 -0
  32. package/dist/cjs/github.js +84 -0
  33. package/dist/cjs/gitlab.d.ts +104 -0
  34. package/dist/cjs/gitlab.js +24 -0
  35. package/dist/cjs/handles.d.ts +82 -0
  36. package/dist/cjs/handles.js +139 -0
  37. package/dist/cjs/hint.d.ts +1 -0
  38. package/dist/cjs/hint.js +10 -0
  39. package/dist/cjs/http2.d.ts +206 -0
  40. package/dist/cjs/http2.js +1932 -0
  41. package/dist/cjs/index.d.ts +34 -0
  42. package/dist/cjs/index.js +31 -0
  43. package/dist/cjs/keyed.gen.d.ts +1 -0
  44. package/dist/cjs/keyed.gen.js +10 -0
  45. package/dist/cjs/models.gen.d.ts +6162 -0
  46. package/dist/cjs/models.gen.js +2 -0
  47. package/dist/cjs/package.json +1 -0
  48. package/dist/cjs/proxy.d.ts +40 -0
  49. package/dist/cjs/proxy.js +257 -0
  50. package/dist/cjs/pty.d.ts +171 -0
  51. package/dist/cjs/pty.js +504 -0
  52. package/dist/cjs/sandbox.d.ts +537 -0
  53. package/dist/cjs/sandbox.js +736 -0
  54. package/dist/cjs/ssh.d.ts +25 -0
  55. package/dist/cjs/ssh.js +117 -0
  56. package/dist/cjs/trace.d.ts +33 -0
  57. package/dist/cjs/trace.js +88 -0
  58. package/dist/cjs/transport-worker.d.ts +1 -0
  59. package/dist/cjs/transport-worker.js +468 -0
  60. package/dist/cjs/warm.d.ts +1 -0
  61. package/dist/cjs/warm.js +43 -0
  62. package/dist/client.d.ts +3015 -0
  63. package/dist/client.js +2583 -0
  64. package/dist/command-errors.d.ts +41 -0
  65. package/dist/command-errors.js +36 -0
  66. package/dist/context.d.ts +119 -0
  67. package/dist/context.js +588 -0
  68. package/dist/core.d.ts +285 -0
  69. package/dist/core.js +266 -0
  70. package/dist/credstore.d.ts +90 -0
  71. package/dist/credstore.js +206 -0
  72. package/dist/dispatcher.d.ts +58 -0
  73. package/dist/dispatcher.js +86 -0
  74. package/dist/github.d.ts +158 -0
  75. package/dist/github.js +78 -0
  76. package/dist/gitlab.d.ts +104 -0
  77. package/dist/gitlab.js +20 -0
  78. package/dist/handles.d.ts +82 -0
  79. package/dist/handles.js +135 -0
  80. package/dist/hint.d.ts +1 -0
  81. package/dist/hint.js +7 -0
  82. package/dist/http2.d.ts +206 -0
  83. package/dist/http2.js +1921 -0
  84. package/dist/index.d.ts +34 -0
  85. package/dist/index.js +15 -0
  86. package/dist/keyed.gen.d.ts +1 -0
  87. package/dist/keyed.gen.js +7 -0
  88. package/dist/models.gen.d.ts +6162 -0
  89. package/dist/models.gen.js +1 -0
  90. package/dist/proxy.d.ts +40 -0
  91. package/dist/proxy.js +249 -0
  92. package/dist/pty.d.ts +171 -0
  93. package/dist/pty.js +496 -0
  94. package/dist/sandbox.d.ts +537 -0
  95. package/dist/sandbox.js +725 -0
  96. package/dist/ssh.d.ts +25 -0
  97. package/dist/ssh.js +114 -0
  98. package/dist/trace.d.ts +33 -0
  99. package/dist/trace.js +80 -0
  100. package/dist/transport-worker.d.ts +1 -0
  101. package/dist/transport-worker.js +466 -0
  102. package/dist/warm.d.ts +1 -0
  103. package/dist/warm.js +40 -0
  104. package/package.json +54 -0
@@ -0,0 +1,468 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const dns = require("node:dns");
4
+ const node_fs_1 = require("node:fs");
5
+ const http2 = require("node:http2");
6
+ const node_net_1 = require("node:net");
7
+ const tls = require("node:tls");
8
+ const wt = require("node:worker_threads");
9
+ const ca_guard_js_1 = require("./ca-guard.js");
10
+ const { NGHTTP2_CANCEL, NGHTTP2_REFUSED_STREAM } = http2.constants;
11
+ const MAX_UNPROCESSED_RESENDS = 3;
12
+ const MAX_REPLAYS = 1;
13
+ const STREAM_WINDOW = 8 * 1024 * 1024;
14
+ const SESSION_WINDOW = 32 * 1024 * 1024;
15
+ const DEFAULT_STREAM_LIMIT = 100;
16
+ const MAX_STREAM_LIMIT = 1_000;
17
+ const hrNow = () => Number(process.hrtime.bigint()) / 1e6;
18
+ function start(init) {
19
+ const port = init.port;
20
+ const origin = new URL(init.origin);
21
+ const host = origin.hostname.replace(/^\[(.*)\]$/, "$1");
22
+ const tcpPort = origin.port ? Number(origin.port) : 443;
23
+ for (const h of init.distrustedForTest ?? [])
24
+ ca_guard_js_1.__caGuardInternals.addForTest(h);
25
+ const sessions = [];
26
+ const inflight = new Map();
27
+ let everReady = false;
28
+ let closed = false;
29
+ let draining;
30
+ let running = 0;
31
+ let idleTimer;
32
+ let pendingConnects = 0;
33
+ const post = (m, transfer) => {
34
+ try {
35
+ port.postMessage(m, transfer ?? []);
36
+ }
37
+ catch { }
38
+ };
39
+ const live = () => sessions.filter((e) => !e.retired && !e.session.closed && !e.session.destroyed);
40
+ const end = (reason) => {
41
+ if (closed)
42
+ return;
43
+ closed = true;
44
+ if (idleTimer !== undefined)
45
+ clearTimeout(idleTimer);
46
+ if (pumpTimer !== undefined)
47
+ clearTimeout(pumpTimer);
48
+ if (pumpSoon !== undefined)
49
+ clearImmediate(pumpSoon);
50
+ for (const w of waiting.splice(0))
51
+ w.resolve(null);
52
+ for (const e of sessions) {
53
+ try {
54
+ e.session.close();
55
+ }
56
+ catch { }
57
+ }
58
+ for (const c of inflight.values())
59
+ c.cancel();
60
+ post({ t: "closed", reason });
61
+ try {
62
+ port.close();
63
+ }
64
+ catch { }
65
+ };
66
+ const armIdle = (ms) => {
67
+ if (idleTimer !== undefined)
68
+ clearTimeout(idleTimer);
69
+ idleTimer = setTimeout(() => { if (running === 0)
70
+ end("idle"); }, ms);
71
+ };
72
+ const drain = (reason) => {
73
+ if (closed || draining !== undefined)
74
+ return;
75
+ draining = reason;
76
+ post({ t: "draining", reason });
77
+ if (running === 0)
78
+ end(reason);
79
+ };
80
+ const retire = (e) => {
81
+ if (e.retired)
82
+ return;
83
+ e.retired = true;
84
+ if (!everReady)
85
+ return;
86
+ const n = live().length;
87
+ if (n === 0 && pendingConnects === 0)
88
+ drain("sessions closed");
89
+ else
90
+ post({ t: "sessions", sessions: n });
91
+ };
92
+ let context;
93
+ try {
94
+ context = tls.createSecureContext();
95
+ }
96
+ catch {
97
+ context = undefined;
98
+ }
99
+ const connect = (address) => new Promise((resolve) => {
100
+ let done = false;
101
+ const finish = (e) => { if (!done) {
102
+ done = true;
103
+ clearTimeout(timer);
104
+ resolve(e);
105
+ } };
106
+ const timer = setTimeout(() => { try {
107
+ socket.destroy();
108
+ }
109
+ catch { } finish(null); }, init.connectTimeoutMs);
110
+ const socket = tls.connect({
111
+ host: address,
112
+ port: tcpPort,
113
+ ...((0, node_net_1.isIP)(host) !== 0 ? {} : { servername: host }),
114
+ ALPNProtocols: ["h2", "http/1.1"],
115
+ checkServerIdentity: ca_guard_js_1.guardCertChain,
116
+ ...(context === undefined ? {} : { secureContext: context }),
117
+ });
118
+ socket.once("error", () => finish(null));
119
+ socket.once("secureConnect", () => {
120
+ if (socket.alpnProtocol !== "h2") {
121
+ socket.destroy();
122
+ finish(null);
123
+ return;
124
+ }
125
+ let session;
126
+ try {
127
+ session = http2.connect(origin.origin, { createConnection: () => socket, settings: { enablePush: false, initialWindowSize: STREAM_WINDOW } });
128
+ }
129
+ catch {
130
+ socket.destroy();
131
+ finish(null);
132
+ return;
133
+ }
134
+ const entry = { session, active: 0, retired: false, goawayLast: undefined, nextFree: 0, granted: 0, index: -1, addr: address, localPort: socket.localPort ?? 0 };
135
+ try {
136
+ session.setLocalWindowSize(SESSION_WINDOW);
137
+ }
138
+ catch { }
139
+ session.on("error", () => retire(entry));
140
+ session.on("close", () => retire(entry));
141
+ session.on("frameError", () => { });
142
+ session.on("goaway", (_c, last) => {
143
+ entry.goawayLast = Math.min(entry.goawayLast ?? last, last);
144
+ retire(entry);
145
+ });
146
+ session.once("remoteSettings", () => finish(entry));
147
+ });
148
+ });
149
+ const lookup = () => new Promise((resolve) => {
150
+ if ((0, node_net_1.isIP)(host) !== 0) {
151
+ resolve([host]);
152
+ return;
153
+ }
154
+ const name = host.toLowerCase();
155
+ let named = false;
156
+ const v4 = [];
157
+ try {
158
+ for (const line of (0, node_fs_1.readFileSync)(init.hostsFile || "/etc/hosts", "utf8").split("\n")) {
159
+ const f = line.replace(/#.*/, "").trim().split(/\s+/);
160
+ if (f.length < 2 || !f.slice(1).some((n) => n.toLowerCase() === name))
161
+ continue;
162
+ named = true;
163
+ if ((0, node_net_1.isIPv4)(f[0]) && !v4.includes(f[0]))
164
+ v4.push(f[0]);
165
+ }
166
+ }
167
+ catch { }
168
+ if (named) {
169
+ resolve(v4);
170
+ return;
171
+ }
172
+ try {
173
+ const r = new dns.Resolver({ timeout: init.lookupTimeoutMs, tries: 1 });
174
+ if (Array.isArray(init.servers) && init.servers.length > 0)
175
+ r.setServers(init.servers);
176
+ r.resolve4(name, (err, addrs) => resolve(!err && Array.isArray(addrs) ? addrs : []));
177
+ }
178
+ catch {
179
+ resolve([]);
180
+ }
181
+ });
182
+ const limitOf = (e) => {
183
+ try {
184
+ const m = e.session.remoteSettings?.maxConcurrentStreams;
185
+ return typeof m === "number" && m > 0 ? Math.min(m, MAX_STREAM_LIMIT) : DEFAULT_STREAM_LIMIT;
186
+ }
187
+ catch {
188
+ return DEFAULT_STREAM_LIMIT;
189
+ }
190
+ };
191
+ const open = async () => {
192
+ const addrs = await lookup();
193
+ if (closed)
194
+ return;
195
+ if (addrs.length === 0) {
196
+ end("lookup failed");
197
+ return;
198
+ }
199
+ const n = Math.max(1, init.sessions);
200
+ pendingConnects = n;
201
+ const tries = Array.from({ length: n }, (_, i) => connect(addrs[i % addrs.length]).then((e) => {
202
+ pendingConnects--;
203
+ if (closed) {
204
+ if (e)
205
+ try {
206
+ e.session.close();
207
+ }
208
+ catch { }
209
+ return;
210
+ }
211
+ if (e !== null) {
212
+ e.index = sessions.length;
213
+ sessions.push(e);
214
+ if (!everReady) {
215
+ everReady = true;
216
+ armIdle(init.firstUseMs);
217
+ }
218
+ post({ t: "ready", sessions: live().length, limit: limitOf(e), index: e.index, addr: e.addr, localPort: e.localPort, hr: Number(process.hrtime.bigint()) / 1e6 });
219
+ }
220
+ else if (pendingConnects === 0 && live().length === 0) {
221
+ if (everReady)
222
+ drain("sessions closed");
223
+ else
224
+ end("connect failed");
225
+ }
226
+ }));
227
+ await Promise.all(tries);
228
+ };
229
+ const gapMs = Math.max(0, init.gapUs) / 1000;
230
+ const waiting = [];
231
+ let rr = 0;
232
+ let rrAny = 0;
233
+ let pumpTimer;
234
+ let pumpSoon;
235
+ const freeNow = (l, now) => {
236
+ for (let i = 0; i < l.length; i++) {
237
+ const k = (rr + i) % l.length;
238
+ const e = l[k];
239
+ if (e.nextFree <= now) {
240
+ rr = k + 1;
241
+ return e;
242
+ }
243
+ }
244
+ return undefined;
245
+ };
246
+ const pump = () => {
247
+ pumpTimer = undefined;
248
+ pumpSoon = undefined;
249
+ while (waiting.length > 0) {
250
+ const l = live();
251
+ if (l.length === 0) {
252
+ for (const w of waiting.splice(0))
253
+ w.resolve(null);
254
+ return;
255
+ }
256
+ const now = hrNow();
257
+ const e = freeNow(l, now);
258
+ if (e === undefined)
259
+ break;
260
+ e.nextFree = now + gapMs;
261
+ e.granted = now;
262
+ waiting.shift().resolve(e);
263
+ }
264
+ if (waiting.length === 0)
265
+ return;
266
+ let next = Infinity;
267
+ for (const e of live())
268
+ next = Math.min(next, e.nextFree);
269
+ const wait = next - hrNow();
270
+ if (wait > 2)
271
+ pumpTimer = setTimeout(pump, Math.floor(wait) - 1);
272
+ else
273
+ pumpSoon = setImmediate(pump);
274
+ };
275
+ const nextSession = (id, paced) => {
276
+ const l = live();
277
+ if (l.length === 0)
278
+ return null;
279
+ if (gapMs <= 0) {
280
+ let best = l[0];
281
+ for (const e of l)
282
+ if (e.active < best.active)
283
+ best = e;
284
+ return best;
285
+ }
286
+ if (!paced) {
287
+ const e = l[rrAny % l.length];
288
+ rrAny = (rrAny % l.length) + 1;
289
+ return e;
290
+ }
291
+ if (waiting.length === 0) {
292
+ const now = hrNow();
293
+ const e = freeNow(l, now);
294
+ if (e !== undefined) {
295
+ e.nextFree = now + gapMs;
296
+ e.granted = now;
297
+ return e;
298
+ }
299
+ }
300
+ return new Promise((resolve) => {
301
+ waiting.push({ id, resolve });
302
+ if (pumpTimer === undefined && pumpSoon === undefined)
303
+ pump();
304
+ });
305
+ };
306
+ const unwait = (id) => {
307
+ const i = waiting.findIndex((w) => w.id === id);
308
+ if (i >= 0)
309
+ waiting.splice(i, 1)[0].resolve(null);
310
+ };
311
+ const attempt = async (req, deadline) => {
312
+ const paced = req.paced !== false;
313
+ const given = nextSession(req.id, paced);
314
+ const entry = given instanceof Promise ? await given : given;
315
+ if (entry === null || cancelled.has(req.id) || entry.retired || entry.session.closed || entry.session.destroyed) {
316
+ return { kind: "failed", processed: "no", code: "ERR_HTTP2_NO_SESSION", message: "no session", unsent: true };
317
+ }
318
+ return send(req, deadline, entry, gapMs > 0 && paced ? entry.granted : 0);
319
+ };
320
+ const send = (req, deadline, entry, granted) => new Promise((resolve) => {
321
+ const remaining = deadline - Date.now();
322
+ if (remaining <= 0) {
323
+ resolve({ kind: "timeout" });
324
+ return;
325
+ }
326
+ const headers = { ...req.headers };
327
+ headers[http2.sensitiveHeaders] = req.sensitive;
328
+ const body = req.body === undefined ? undefined : Buffer.from(req.body, "utf8");
329
+ let stream;
330
+ try {
331
+ stream = entry.session.request(headers, { endStream: body === undefined });
332
+ }
333
+ catch (e) {
334
+ retire(entry);
335
+ resolve({ kind: "failed", processed: "no", code: e.code ?? "ERR", message: String(e.message ?? e), unsent: true });
336
+ return;
337
+ }
338
+ entry.active++;
339
+ post({ t: "ack", id: req.id });
340
+ const sent = init.trace !== true ? 0 : granted > 0 ? granted : hrNow();
341
+ let head = 0;
342
+ let status = 0;
343
+ let resHeaders = {};
344
+ const chunks = [];
345
+ let settled = false;
346
+ const finish = (o) => { if (!settled) {
347
+ settled = true;
348
+ clearTimeout(timer);
349
+ inflight.delete(req.id);
350
+ resolve(o);
351
+ } };
352
+ const timer = setTimeout(() => { try {
353
+ stream.close(NGHTTP2_CANCEL);
354
+ }
355
+ catch { } finish({ kind: "timeout" }); }, remaining);
356
+ inflight.set(req.id, { cancel: () => { try {
357
+ stream.close(NGHTTP2_CANCEL);
358
+ }
359
+ catch { } finish({ kind: "failed", processed: "maybe", code: "ABORT", message: "cancelled" }); } });
360
+ stream.on("response", (h) => { resHeaders = h; status = Number(h[":status"]); if (init.trace === true)
361
+ head = hrNow(); });
362
+ stream.on("data", (c) => { chunks.push(c); });
363
+ stream.on("error", () => { });
364
+ stream.on("end", () => { if (status !== 0)
365
+ finish({ kind: "res", status, headers: resHeaders, body: Buffer.concat(chunks), sent, head, end: init.trace === true ? hrNow() : 0, conn: entry.index }); });
366
+ stream.on("close", () => {
367
+ entry.active = Math.max(0, entry.active - 1);
368
+ if (settled)
369
+ return;
370
+ const rst = stream.rstCode;
371
+ let processed;
372
+ if (status !== 0)
373
+ processed = "yes";
374
+ else if (rst === NGHTTP2_REFUSED_STREAM || stream.id === undefined)
375
+ processed = "no";
376
+ else if (entry.goawayLast !== undefined && stream.id > entry.goawayLast)
377
+ processed = "no";
378
+ else
379
+ processed = "maybe";
380
+ finish({ kind: "failed", processed, code: "ERR_HTTP2_STREAM_ERROR", message: `HTTP/2 stream closed (code ${rst ?? "?"})` });
381
+ });
382
+ if (body !== undefined)
383
+ stream.end(body);
384
+ });
385
+ const active = new Set();
386
+ const cancelled = new Set();
387
+ const run = async (req) => {
388
+ if (idleTimer !== undefined) {
389
+ clearTimeout(idleTimer);
390
+ idleTimer = undefined;
391
+ }
392
+ running++;
393
+ active.add(req.id);
394
+ const got = init.trace === true ? hrNow() : 0;
395
+ const deadline = Date.now() + req.timeoutMs;
396
+ let resends = 0;
397
+ let replays = 0;
398
+ const back = () => { post({ t: "err", id: req.id, kind: "back", resends, replays }); };
399
+ for (;;) {
400
+ if (cancelled.has(req.id))
401
+ break;
402
+ const out = await attempt(req, deadline);
403
+ if (cancelled.has(req.id))
404
+ break;
405
+ if (out.kind === "res") {
406
+ const ab = out.body.buffer.slice(out.body.byteOffset, out.body.byteOffset + out.body.byteLength);
407
+ post({ t: "res", id: req.id, status: out.status, headers: out.headers, body: ab, replayed: replays > 0, ...(init.trace === true ? { w: [got, out.sent, out.head, out.end], conn: out.conn } : {}) }, [ab]);
408
+ break;
409
+ }
410
+ if (out.kind === "timeout") {
411
+ post({ t: "err", id: req.id, kind: "timeout" });
412
+ break;
413
+ }
414
+ if (out.unsent === true) {
415
+ back();
416
+ break;
417
+ }
418
+ if (out.processed === "no") {
419
+ if (++resends <= MAX_UNPROCESSED_RESENDS) {
420
+ if (live().length > 0)
421
+ continue;
422
+ back();
423
+ break;
424
+ }
425
+ post({ t: "err", id: req.id, kind: "failed", processed: "no", code: out.code, message: out.message });
426
+ break;
427
+ }
428
+ if (out.processed === "maybe" && req.replayable && replays < MAX_REPLAYS) {
429
+ replays++;
430
+ if (live().length > 0)
431
+ continue;
432
+ back();
433
+ break;
434
+ }
435
+ post({ t: "err", id: req.id, kind: "failed", processed: out.processed, code: out.code, message: out.message });
436
+ break;
437
+ }
438
+ active.delete(req.id);
439
+ cancelled.delete(req.id);
440
+ running--;
441
+ if (running > 0 || closed)
442
+ return;
443
+ if (draining !== undefined)
444
+ end(draining);
445
+ else
446
+ armIdle(init.idleMs);
447
+ };
448
+ port.on("message", (m) => {
449
+ if (closed)
450
+ return;
451
+ if (m?.t === "req")
452
+ void run(m);
453
+ else if (m?.t === "drain")
454
+ drain("asked");
455
+ else if (m?.t === "cancel" && typeof m.id === "number") {
456
+ if (active.has(m.id))
457
+ cancelled.add(m.id);
458
+ unwait(m.id);
459
+ inflight.get(m.id)?.cancel();
460
+ }
461
+ else if (m?.t === "crash-for-test")
462
+ setImmediate(() => { throw new Error("transport thread crash (test)"); });
463
+ });
464
+ void open();
465
+ }
466
+ if (!wt.isMainThread && wt.workerData && typeof wt.workerData === "object" && wt.workerData.promigenceTransport === true) {
467
+ start(wt.workerData);
468
+ }
@@ -0,0 +1 @@
1
+ export declare function warmUp(): void;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.warmUp = warmUp;
4
+ const node_net_1 = require("node:net");
5
+ const core_js_1 = require("./core.js");
6
+ const client_js_1 = require("./client.js");
7
+ const http2_js_1 = require("./http2.js");
8
+ const sandbox_js_1 = require("./sandbox.js");
9
+ const trace_js_1 = require("./trace.js");
10
+ function quietly(f) {
11
+ try {
12
+ const r = f();
13
+ if (r instanceof Promise)
14
+ r.catch(() => { });
15
+ }
16
+ catch {
17
+ }
18
+ }
19
+ function warmUp() {
20
+ try {
21
+ (0, trace_js_1.untraced)(() => {
22
+ quietly(() => (0, client_js_1.newIdempotencyKey)());
23
+ quietly(() => (0, client_js_1.isKeyedCreate)("POST", "/runs?wait_ms=1"));
24
+ quietly(() => (0, client_js_1.serverAppMs)("app;dur=1.00"));
25
+ quietly(() => (0, http2_js_1.warmTransport)());
26
+ quietly(() => { (0, node_net_1.isIP)("a.b"); (0, node_net_1.isIP)("a.b"); });
27
+ let client;
28
+ quietly(() => { client = new client_js_1.PromigenceClient({ apiKey: "warm", apiUrl: core_js_1.DEFAULT_API_URL }); });
29
+ if (client === undefined)
30
+ return;
31
+ const c = client;
32
+ quietly(() => c.request(undefined));
33
+ quietly(() => c.runs.start(undefined));
34
+ quietly(() => c.sandboxes.exec("sbx_0", undefined));
35
+ quietly(() => sandbox_js_1.Sandbox.create({ client: c, tier: "small" }));
36
+ quietly(() => sandbox_js_1.Sandbox.forkHandlesWith("", undefined, {}));
37
+ const make = sandbox_js_1.Sandbox;
38
+ quietly(() => new make({ sandboxId: "sbx_0", runId: "run_0", snapshot: "", client: c }).commands.run("", null));
39
+ });
40
+ }
41
+ catch {
42
+ }
43
+ }