@flaxia/node 0.3.7 → 0.5.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 (113) hide show
  1. package/README.md +43 -19
  2. package/dist/__tests__/consent-policy.test.d.ts +2 -0
  3. package/dist/__tests__/consent-policy.test.d.ts.map +1 -0
  4. package/dist/assets/VectorStoreEngine.js +140 -85
  5. package/dist/assets/ai-inference.js +336 -40
  6. package/dist/assets/container.js +368 -260
  7. package/dist/assets/egress-guard.js +174 -0
  8. package/dist/assets/image-process.js +184 -19
  9. package/dist/assets/nudenet.js +2 -2
  10. package/dist/assets/webgpuProbe.js +357 -0
  11. package/dist/client/SignalingClient.d.ts +6 -0
  12. package/dist/client/SignalingClient.d.ts.map +1 -1
  13. package/dist/client/__tests__/mobile-lifecycle.test.d.ts +2 -0
  14. package/dist/client/__tests__/mobile-lifecycle.test.d.ts.map +1 -0
  15. package/dist/client/mobile-lifecycle.d.ts +20 -0
  16. package/dist/client/mobile-lifecycle.d.ts.map +1 -0
  17. package/dist/consent/ConsentUI.d.ts +44 -5
  18. package/dist/consent/ConsentUI.d.ts.map +1 -1
  19. package/dist/consent/notice.d.ts +29 -0
  20. package/dist/consent/notice.d.ts.map +1 -0
  21. package/dist/consent/storage.d.ts +91 -7
  22. package/dist/consent/storage.d.ts.map +1 -1
  23. package/dist/executor/WorkerPool.d.ts +42 -2
  24. package/dist/executor/WorkerPool.d.ts.map +1 -1
  25. package/dist/executor/__tests__/WorkerPool.swarm.test.d.ts +13 -0
  26. package/dist/executor/__tests__/WorkerPool.swarm.test.d.ts.map +1 -0
  27. package/dist/executor/__tests__/container-executor.test.d.ts +2 -0
  28. package/dist/executor/__tests__/container-executor.test.d.ts.map +1 -0
  29. package/dist/executor/__tests__/egress-guard.test.d.ts +2 -0
  30. package/dist/executor/__tests__/egress-guard.test.d.ts.map +1 -0
  31. package/dist/executor/__tests__/resourceReporter.test.d.ts +2 -0
  32. package/dist/executor/__tests__/resourceReporter.test.d.ts.map +1 -0
  33. package/dist/executor/__tests__/webgpuProbe.test.d.ts +2 -0
  34. package/dist/executor/__tests__/webgpuProbe.test.d.ts.map +1 -0
  35. package/dist/executor/container-executor.d.ts +49 -1
  36. package/dist/executor/container-executor.d.ts.map +1 -1
  37. package/dist/executor/egress-guard.d.ts +105 -0
  38. package/dist/executor/egress-guard.d.ts.map +1 -0
  39. package/dist/executor/memoryProbe.d.ts +30 -0
  40. package/dist/executor/memoryProbe.d.ts.map +1 -1
  41. package/dist/executor/resourceReporter.d.ts +15 -0
  42. package/dist/executor/resourceReporter.d.ts.map +1 -0
  43. package/dist/executor/throttle.d.ts +62 -4
  44. package/dist/executor/throttle.d.ts.map +1 -1
  45. package/dist/executor/webgpuProbe.d.ts +20 -0
  46. package/dist/executor/webgpuProbe.d.ts.map +1 -0
  47. package/dist/index.d.ts +2 -0
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +1423 -235
  50. package/dist/swarm/__tests__/adapter.test.d.ts +2 -0
  51. package/dist/swarm/__tests__/adapter.test.d.ts.map +1 -0
  52. package/dist/swarm/__tests__/controller.test.d.ts +2 -0
  53. package/dist/swarm/__tests__/controller.test.d.ts.map +1 -0
  54. package/dist/swarm/__tests__/defects.test.d.ts +16 -0
  55. package/dist/swarm/__tests__/defects.test.d.ts.map +1 -0
  56. package/dist/swarm/__tests__/hardening.test.d.ts +2 -0
  57. package/dist/swarm/__tests__/hardening.test.d.ts.map +1 -0
  58. package/dist/swarm/__tests__/peer-quality.test.d.ts +2 -0
  59. package/dist/swarm/__tests__/peer-quality.test.d.ts.map +1 -0
  60. package/dist/swarm/__tests__/peer-transport.test.d.ts +2 -0
  61. package/dist/swarm/__tests__/peer-transport.test.d.ts.map +1 -0
  62. package/dist/swarm/__tests__/runtime.test.d.ts +2 -0
  63. package/dist/swarm/__tests__/runtime.test.d.ts.map +1 -0
  64. package/dist/swarm/__tests__/session.test.d.ts +2 -0
  65. package/dist/swarm/__tests__/session.test.d.ts.map +1 -0
  66. package/dist/swarm/adapter.d.ts +115 -0
  67. package/dist/swarm/adapter.d.ts.map +1 -0
  68. package/dist/swarm/controller.d.ts +91 -0
  69. package/dist/swarm/controller.d.ts.map +1 -0
  70. package/dist/swarm/messages.d.ts +41 -0
  71. package/dist/swarm/messages.d.ts.map +1 -0
  72. package/dist/swarm/peer-quality.d.ts +14 -0
  73. package/dist/swarm/peer-quality.d.ts.map +1 -0
  74. package/dist/swarm/peer-transport.d.ts +81 -0
  75. package/dist/swarm/peer-transport.d.ts.map +1 -0
  76. package/dist/swarm/runtime.d.ts +20 -0
  77. package/dist/swarm/runtime.d.ts.map +1 -0
  78. package/dist/swarm/session.d.ts +73 -0
  79. package/dist/swarm/session.d.ts.map +1 -0
  80. package/dist/swarm-engine.js +7496 -0
  81. package/dist/vector-store/HNSWIndex.d.ts +30 -0
  82. package/dist/vector-store/HNSWIndex.d.ts.map +1 -1
  83. package/dist/vector-store/VectorStoreEngine.d.ts +43 -0
  84. package/dist/vector-store/VectorStoreEngine.d.ts.map +1 -1
  85. package/dist/vector-store/__tests__/HNSWIndex.test.d.ts +2 -0
  86. package/dist/vector-store/__tests__/HNSWIndex.test.d.ts.map +1 -0
  87. package/dist/vector-store/__tests__/VectorStoreEngine.test.d.ts +2 -0
  88. package/dist/vector-store/__tests__/VectorStoreEngine.test.d.ts.map +1 -0
  89. package/dist/worker/__tests__/main.worker.abort.test.d.ts +2 -0
  90. package/dist/worker/__tests__/main.worker.abort.test.d.ts.map +1 -0
  91. package/dist/worker/__tests__/main.worker.control.test.d.ts +2 -0
  92. package/dist/worker/__tests__/main.worker.control.test.d.ts.map +1 -0
  93. package/dist/worker.js +766 -67
  94. package/dist/workloads/__tests__/model-pipeline-cache.test.d.ts +2 -0
  95. package/dist/workloads/__tests__/model-pipeline-cache.test.d.ts.map +1 -0
  96. package/dist/workloads/__tests__/nudenet.test.d.ts +2 -0
  97. package/dist/workloads/__tests__/nudenet.test.d.ts.map +1 -0
  98. package/dist/workloads/ai-inference.d.ts +8 -1
  99. package/dist/workloads/ai-inference.d.ts.map +1 -1
  100. package/dist/workloads/ai-model-registry.d.ts +72 -0
  101. package/dist/workloads/ai-model-registry.d.ts.map +1 -0
  102. package/dist/workloads/container.d.ts +1 -1
  103. package/dist/workloads/container.d.ts.map +1 -1
  104. package/dist/workloads/image-process.d.ts +27 -0
  105. package/dist/workloads/image-process.d.ts.map +1 -1
  106. package/dist/workloads/model-pipeline-cache.d.ts +48 -0
  107. package/dist/workloads/model-pipeline-cache.d.ts.map +1 -0
  108. package/dist/workloads/nudenet.d.ts +8 -0
  109. package/dist/workloads/nudenet.d.ts.map +1 -1
  110. package/package.json +3 -2
  111. package/dist/assets/memoryProbe.js +0 -28
  112. package/dist/client/WebRTCPeer.d.ts +0 -8
  113. package/dist/client/WebRTCPeer.d.ts.map +0 -1
@@ -1,4 +1,5 @@
1
- var e = class e {
1
+ import { n as e, t } from "./egress-guard.js";
2
+ var n = class e {
2
3
  static read_bytes(t, n) {
3
4
  let r = new e();
4
5
  return r.buf = t.getUint32(n, !0), r.buf_len = t.getUint32(n + 4, !0), r;
@@ -8,7 +9,7 @@ var e = class e {
8
9
  for (let a = 0; a < r; a++) i.push(e.read_bytes(t, n + 8 * a));
9
10
  return i;
10
11
  }
11
- }, t = class e {
12
+ }, r = class e {
12
13
  static read_bytes(t, n) {
13
14
  let r = new e();
14
15
  return r.buf = t.getUint32(n, !0), r.buf_len = t.getUint32(n + 4, !0), r;
@@ -18,7 +19,7 @@ var e = class e {
18
19
  for (let a = 0; a < r; a++) i.push(e.read_bytes(t, n + 8 * a));
19
20
  return i;
20
21
  }
21
- }, n = class {
22
+ }, i = class {
22
23
  head_length() {
23
24
  return 24;
24
25
  }
@@ -35,52 +36,52 @@ var e = class e {
35
36
  let i = new TextEncoder().encode(n);
36
37
  this.d_next = e, this.d_ino = t, this.d_namlen = i.byteLength, this.d_type = r, this.dir_name = i;
37
38
  }
38
- }, r = class {
39
+ }, a = class {
39
40
  write_bytes(e, t) {
40
41
  e.setUint8(t, this.fs_filetype), e.setUint16(t + 2, this.fs_flags, !0), e.setBigUint64(t + 8, this.fs_rights_base, !0), e.setBigUint64(t + 16, this.fs_rights_inherited, !0);
41
42
  }
42
43
  constructor(e, t) {
43
44
  this.fs_rights_base = 0n, this.fs_rights_inherited = 0n, this.fs_filetype = e, this.fs_flags = t;
44
45
  }
45
- }, i = class {
46
+ }, o = class {
46
47
  write_bytes(e, t) {
47
48
  e.setBigUint64(t, this.dev, !0), e.setBigUint64(t + 8, this.ino, !0), e.setUint8(t + 16, this.filetype), e.setBigUint64(t + 24, this.nlink, !0), e.setBigUint64(t + 32, this.size, !0), e.setBigUint64(t + 38, this.atim, !0), e.setBigUint64(t + 46, this.mtim, !0), e.setBigUint64(t + 52, this.ctim, !0);
48
49
  }
49
50
  constructor(e, t, n) {
50
51
  this.dev = 0n, this.nlink = 0n, this.atim = 0n, this.mtim = 0n, this.ctim = 0n, this.ino = e, this.filetype = t, this.size = n;
51
52
  }
52
- }, a = class e {
53
+ }, s = class e {
53
54
  static read_bytes(t, n) {
54
55
  return new e(t.getBigUint64(n, !0), t.getUint8(n + 8), t.getUint32(n + 16, !0), t.getBigUint64(n + 24, !0), t.getUint16(n + 36, !0));
55
56
  }
56
57
  constructor(e, t, n, r, i) {
57
58
  this.userdata = e, this.eventtype = t, this.clockid = n, this.timeout = r, this.flags = i;
58
59
  }
59
- }, o = class {
60
+ }, c = class {
60
61
  write_bytes(e, t) {
61
62
  e.setBigUint64(t, this.userdata, !0), e.setUint16(t + 8, this.error, !0), e.setUint8(t + 10, this.eventtype);
62
63
  }
63
64
  constructor(e, t, n) {
64
65
  this.userdata = e, this.error = t, this.eventtype = n;
65
66
  }
66
- }, s = class {
67
+ }, l = class {
67
68
  write_bytes(e, t) {
68
69
  e.setUint32(t, this.pr_name.byteLength, !0);
69
70
  }
70
71
  constructor(e) {
71
72
  this.pr_name = new TextEncoder().encode(e);
72
73
  }
73
- }, c = class e {
74
+ }, u = class e {
74
75
  static dir(t) {
75
76
  let n = new e();
76
- return n.tag = 0, n.inner = new s(t), n;
77
+ return n.tag = 0, n.inner = new l(t), n;
77
78
  }
78
79
  write_bytes(e, t) {
79
80
  e.setUint32(t, this.tag, !0), this.inner.write_bytes(e, t + 4);
80
81
  }
81
- }, l = class {
82
+ }, d = class {
82
83
  enable(e) {
83
- this.log = u(e === void 0 ? !0 : e, this.prefix);
84
+ this.log = f(e === void 0 ? !0 : e, this.prefix);
84
85
  }
85
86
  get enabled() {
86
87
  return this.isEnabled;
@@ -89,61 +90,61 @@ var e = class e {
89
90
  this.isEnabled = e, this.prefix = "wasi:", this.enable(e);
90
91
  }
91
92
  };
92
- function u(e, t) {
93
+ function f(e, t) {
93
94
  return e ? console.log.bind(console, "%c%s", "color: #265BA0", t) : () => {};
94
95
  }
95
- var d = new l(!1), f = class extends Error {
96
+ var p = new d(!1), m = class extends Error {
96
97
  constructor(e) {
97
98
  super("exit with exit code " + e), this.code = e;
98
99
  }
99
- }, p = class {
100
+ }, h = class {
100
101
  start(e) {
101
102
  this.inst = e;
102
103
  try {
103
104
  return e.exports._start(), 0;
104
105
  } catch (e) {
105
- if (e instanceof f) return e.code;
106
+ if (e instanceof m) return e.code;
106
107
  throw e;
107
108
  }
108
109
  }
109
110
  initialize(e) {
110
111
  this.inst = e, e.exports._initialize && e.exports._initialize();
111
112
  }
112
- constructor(n, r, i, s = {}) {
113
- this.args = [], this.env = [], this.fds = [], d.enable(s.debug), this.args = n, this.env = r, this.fds = i;
114
- let c = this;
113
+ constructor(e, t, i, a = {}) {
114
+ this.args = [], this.env = [], this.fds = [], p.enable(a.debug), this.args = e, this.env = t, this.fds = i;
115
+ let o = this;
115
116
  this.wasiImport = {
116
117
  args_sizes_get(e, t) {
117
- let n = new DataView(c.inst.exports.memory.buffer);
118
- n.setUint32(e, c.args.length, !0);
118
+ let n = new DataView(o.inst.exports.memory.buffer);
119
+ n.setUint32(e, o.args.length, !0);
119
120
  let r = 0;
120
- for (let e of c.args) r += e.length + 1;
121
- return n.setUint32(t, r, !0), d.log(n.getUint32(e, !0), n.getUint32(t, !0)), 0;
121
+ for (let e of o.args) r += e.length + 1;
122
+ return n.setUint32(t, r, !0), p.log(n.getUint32(e, !0), n.getUint32(t, !0)), 0;
122
123
  },
123
124
  args_get(e, t) {
124
- let n = new DataView(c.inst.exports.memory.buffer), r = new Uint8Array(c.inst.exports.memory.buffer), i = t;
125
- for (let i = 0; i < c.args.length; i++) {
125
+ let n = new DataView(o.inst.exports.memory.buffer), r = new Uint8Array(o.inst.exports.memory.buffer), i = t;
126
+ for (let i = 0; i < o.args.length; i++) {
126
127
  n.setUint32(e, t, !0), e += 4;
127
- let a = new TextEncoder().encode(c.args[i]);
128
+ let a = new TextEncoder().encode(o.args[i]);
128
129
  r.set(a, t), n.setUint8(t + a.length, 0), t += a.length + 1;
129
130
  }
130
- return d.enabled && d.log(new TextDecoder("utf-8").decode(r.slice(i, t))), 0;
131
+ return p.enabled && p.log(new TextDecoder("utf-8").decode(r.slice(i, t))), 0;
131
132
  },
132
133
  environ_sizes_get(e, t) {
133
- let n = new DataView(c.inst.exports.memory.buffer);
134
- n.setUint32(e, c.env.length, !0);
134
+ let n = new DataView(o.inst.exports.memory.buffer);
135
+ n.setUint32(e, o.env.length, !0);
135
136
  let r = 0;
136
- for (let e of c.env) r += new TextEncoder().encode(e).length + 1;
137
- return n.setUint32(t, r, !0), d.log(n.getUint32(e, !0), n.getUint32(t, !0)), 0;
137
+ for (let e of o.env) r += new TextEncoder().encode(e).length + 1;
138
+ return n.setUint32(t, r, !0), p.log(n.getUint32(e, !0), n.getUint32(t, !0)), 0;
138
139
  },
139
140
  environ_get(e, t) {
140
- let n = new DataView(c.inst.exports.memory.buffer), r = new Uint8Array(c.inst.exports.memory.buffer), i = t;
141
- for (let i = 0; i < c.env.length; i++) {
141
+ let n = new DataView(o.inst.exports.memory.buffer), r = new Uint8Array(o.inst.exports.memory.buffer), i = t;
142
+ for (let i = 0; i < o.env.length; i++) {
142
143
  n.setUint32(e, t, !0), e += 4;
143
- let a = new TextEncoder().encode(c.env[i]);
144
+ let a = new TextEncoder().encode(o.env[i]);
144
145
  r.set(a, t), n.setUint8(t + a.length, 0), t += a.length + 1;
145
146
  }
146
- return d.enabled && d.log(new TextDecoder("utf-8").decode(r.slice(i, t))), 0;
147
+ return p.enabled && p.log(new TextDecoder("utf-8").decode(r.slice(i, t))), 0;
147
148
  },
148
149
  clock_res_get(e, t) {
149
150
  let n;
@@ -156,10 +157,10 @@ var d = new l(!1), f = class extends Error {
156
157
  break;
157
158
  default: return 52;
158
159
  }
159
- return new DataView(c.inst.exports.memory.buffer).setBigUint64(t, n, !0), 0;
160
+ return new DataView(o.inst.exports.memory.buffer).setBigUint64(t, n, !0), 0;
160
161
  },
161
162
  clock_time_get(e, t, n) {
162
- let r = new DataView(c.inst.exports.memory.buffer);
163
+ let r = new DataView(o.inst.exports.memory.buffer);
163
164
  if (e === 0) r.setBigUint64(n, BigInt((/* @__PURE__ */ new Date()).getTime()) * 1000000n, !0);
164
165
  else if (e == 1) {
165
166
  let e;
@@ -173,256 +174,256 @@ var d = new l(!1), f = class extends Error {
173
174
  return 0;
174
175
  },
175
176
  fd_advise(e, t, n, r) {
176
- return c.fds[e] == null ? 8 : 0;
177
+ return o.fds[e] == null ? 8 : 0;
177
178
  },
178
179
  fd_allocate(e, t, n) {
179
- return c.fds[e] == null ? 8 : c.fds[e].fd_allocate(t, n);
180
+ return o.fds[e] == null ? 8 : o.fds[e].fd_allocate(t, n);
180
181
  },
181
182
  fd_close(e) {
182
- if (c.fds[e] != null) {
183
- let t = c.fds[e].fd_close();
184
- return c.fds[e] = void 0, t;
183
+ if (o.fds[e] != null) {
184
+ let t = o.fds[e].fd_close();
185
+ return o.fds[e] = void 0, t;
185
186
  } else return 8;
186
187
  },
187
188
  fd_datasync(e) {
188
- return c.fds[e] == null ? 8 : c.fds[e].fd_sync();
189
+ return o.fds[e] == null ? 8 : o.fds[e].fd_sync();
189
190
  },
190
191
  fd_fdstat_get(e, t) {
191
- if (c.fds[e] != null) {
192
- let { ret: n, fdstat: r } = c.fds[e].fd_fdstat_get();
193
- return r?.write_bytes(new DataView(c.inst.exports.memory.buffer), t), n;
192
+ if (o.fds[e] != null) {
193
+ let { ret: n, fdstat: r } = o.fds[e].fd_fdstat_get();
194
+ return r?.write_bytes(new DataView(o.inst.exports.memory.buffer), t), n;
194
195
  } else return 8;
195
196
  },
196
197
  fd_fdstat_set_flags(e, t) {
197
- return c.fds[e] == null ? 8 : c.fds[e].fd_fdstat_set_flags(t);
198
+ return o.fds[e] == null ? 8 : o.fds[e].fd_fdstat_set_flags(t);
198
199
  },
199
200
  fd_fdstat_set_rights(e, t, n) {
200
- return c.fds[e] == null ? 8 : c.fds[e].fd_fdstat_set_rights(t, n);
201
+ return o.fds[e] == null ? 8 : o.fds[e].fd_fdstat_set_rights(t, n);
201
202
  },
202
203
  fd_filestat_get(e, t) {
203
- if (c.fds[e] != null) {
204
- let { ret: n, filestat: r } = c.fds[e].fd_filestat_get();
205
- return r?.write_bytes(new DataView(c.inst.exports.memory.buffer), t), n;
204
+ if (o.fds[e] != null) {
205
+ let { ret: n, filestat: r } = o.fds[e].fd_filestat_get();
206
+ return r?.write_bytes(new DataView(o.inst.exports.memory.buffer), t), n;
206
207
  } else return 8;
207
208
  },
208
209
  fd_filestat_set_size(e, t) {
209
- return c.fds[e] == null ? 8 : c.fds[e].fd_filestat_set_size(t);
210
+ return o.fds[e] == null ? 8 : o.fds[e].fd_filestat_set_size(t);
210
211
  },
211
212
  fd_filestat_set_times(e, t, n, r) {
212
- return c.fds[e] == null ? 8 : c.fds[e].fd_filestat_set_times(t, n, r);
213
+ return o.fds[e] == null ? 8 : o.fds[e].fd_filestat_set_times(t, n, r);
213
214
  },
214
- fd_pread(t, n, r, i, a) {
215
- let o = new DataView(c.inst.exports.memory.buffer), s = new Uint8Array(c.inst.exports.memory.buffer);
216
- if (c.fds[t] != null) {
217
- let l = e.read_bytes_array(o, n, r), u = 0;
218
- for (let e of l) {
219
- let { ret: n, data: r } = c.fds[t].fd_pread(e.buf_len, i);
220
- if (n != 0) return o.setUint32(a, u, !0), n;
221
- if (s.set(r, e.buf), u += r.length, i += BigInt(r.length), r.length != e.buf_len) break;
215
+ fd_pread(e, t, r, i, a) {
216
+ let s = new DataView(o.inst.exports.memory.buffer), c = new Uint8Array(o.inst.exports.memory.buffer);
217
+ if (o.fds[e] != null) {
218
+ let l = n.read_bytes_array(s, t, r), u = 0;
219
+ for (let t of l) {
220
+ let { ret: n, data: r } = o.fds[e].fd_pread(t.buf_len, i);
221
+ if (n != 0) return s.setUint32(a, u, !0), n;
222
+ if (c.set(r, t.buf), u += r.length, i += BigInt(r.length), r.length != t.buf_len) break;
222
223
  }
223
- return o.setUint32(a, u, !0), 0;
224
+ return s.setUint32(a, u, !0), 0;
224
225
  } else return 8;
225
226
  },
226
227
  fd_prestat_get(e, t) {
227
- let n = new DataView(c.inst.exports.memory.buffer);
228
- if (c.fds[e] != null) {
229
- let { ret: r, prestat: i } = c.fds[e].fd_prestat_get();
228
+ let n = new DataView(o.inst.exports.memory.buffer);
229
+ if (o.fds[e] != null) {
230
+ let { ret: r, prestat: i } = o.fds[e].fd_prestat_get();
230
231
  return i?.write_bytes(n, t), r;
231
232
  } else return 8;
232
233
  },
233
234
  fd_prestat_dir_name(e, t, n) {
234
- if (c.fds[e] != null) {
235
- let { ret: r, prestat: i } = c.fds[e].fd_prestat_get();
235
+ if (o.fds[e] != null) {
236
+ let { ret: r, prestat: i } = o.fds[e].fd_prestat_get();
236
237
  if (i == null) return r;
237
238
  let a = i.inner.pr_name;
238
- return new Uint8Array(c.inst.exports.memory.buffer).set(a.slice(0, n), t), a.byteLength > n ? 37 : 0;
239
+ return new Uint8Array(o.inst.exports.memory.buffer).set(a.slice(0, n), t), a.byteLength > n ? 37 : 0;
239
240
  } else return 8;
240
241
  },
241
- fd_pwrite(e, n, r, i, a) {
242
- let o = new DataView(c.inst.exports.memory.buffer), s = new Uint8Array(c.inst.exports.memory.buffer);
243
- if (c.fds[e] != null) {
244
- let l = t.read_bytes_array(o, n, r), u = 0;
242
+ fd_pwrite(e, t, n, i, a) {
243
+ let s = new DataView(o.inst.exports.memory.buffer), c = new Uint8Array(o.inst.exports.memory.buffer);
244
+ if (o.fds[e] != null) {
245
+ let l = r.read_bytes_array(s, t, n), u = 0;
245
246
  for (let t of l) {
246
- let n = s.slice(t.buf, t.buf + t.buf_len), { ret: r, nwritten: l } = c.fds[e].fd_pwrite(n, i);
247
- if (r != 0) return o.setUint32(a, u, !0), r;
247
+ let n = c.slice(t.buf, t.buf + t.buf_len), { ret: r, nwritten: l } = o.fds[e].fd_pwrite(n, i);
248
+ if (r != 0) return s.setUint32(a, u, !0), r;
248
249
  if (u += l, i += BigInt(l), l != n.byteLength) break;
249
250
  }
250
- return o.setUint32(a, u, !0), 0;
251
+ return s.setUint32(a, u, !0), 0;
251
252
  } else return 8;
252
253
  },
253
- fd_read(t, n, r, i) {
254
- let a = new DataView(c.inst.exports.memory.buffer), o = new Uint8Array(c.inst.exports.memory.buffer);
255
- if (c.fds[t] != null) {
256
- let s = e.read_bytes_array(a, n, r), l = 0;
257
- for (let e of s) {
258
- let { ret: n, data: r } = c.fds[t].fd_read(e.buf_len);
254
+ fd_read(e, t, r, i) {
255
+ let a = new DataView(o.inst.exports.memory.buffer), s = new Uint8Array(o.inst.exports.memory.buffer);
256
+ if (o.fds[e] != null) {
257
+ let c = n.read_bytes_array(a, t, r), l = 0;
258
+ for (let t of c) {
259
+ let { ret: n, data: r } = o.fds[e].fd_read(t.buf_len);
259
260
  if (n != 0) return a.setUint32(i, l, !0), n;
260
- if (o.set(r, e.buf), l += r.length, r.length != e.buf_len) break;
261
+ if (s.set(r, t.buf), l += r.length, r.length != t.buf_len) break;
261
262
  }
262
263
  return a.setUint32(i, l, !0), 0;
263
264
  } else return 8;
264
265
  },
265
266
  fd_readdir(e, t, n, r, i) {
266
- let a = new DataView(c.inst.exports.memory.buffer), o = new Uint8Array(c.inst.exports.memory.buffer);
267
- if (c.fds[e] != null) {
268
- let s = 0;
267
+ let a = new DataView(o.inst.exports.memory.buffer), s = new Uint8Array(o.inst.exports.memory.buffer);
268
+ if (o.fds[e] != null) {
269
+ let c = 0;
269
270
  for (;;) {
270
- let { ret: l, dirent: u } = c.fds[e].fd_readdir_single(r);
271
- if (l != 0) return a.setUint32(i, s, !0), l;
271
+ let { ret: l, dirent: u } = o.fds[e].fd_readdir_single(r);
272
+ if (l != 0) return a.setUint32(i, c, !0), l;
272
273
  if (u == null) break;
273
- if (n - s < u.head_length()) {
274
- s = n;
274
+ if (n - c < u.head_length()) {
275
+ c = n;
275
276
  break;
276
277
  }
277
278
  let d = new ArrayBuffer(u.head_length());
278
- if (u.write_head_bytes(new DataView(d), 0), o.set(new Uint8Array(d).slice(0, Math.min(d.byteLength, n - s)), t), t += u.head_length(), s += u.head_length(), n - s < u.name_length()) {
279
- s = n;
279
+ if (u.write_head_bytes(new DataView(d), 0), s.set(new Uint8Array(d).slice(0, Math.min(d.byteLength, n - c)), t), t += u.head_length(), c += u.head_length(), n - c < u.name_length()) {
280
+ c = n;
280
281
  break;
281
282
  }
282
- u.write_name_bytes(o, t, n - s), t += u.name_length(), s += u.name_length(), r = u.d_next;
283
+ u.write_name_bytes(s, t, n - c), t += u.name_length(), c += u.name_length(), r = u.d_next;
283
284
  }
284
- return a.setUint32(i, s, !0), 0;
285
+ return a.setUint32(i, c, !0), 0;
285
286
  } else return 8;
286
287
  },
287
288
  fd_renumber(e, t) {
288
- if (c.fds[e] != null && c.fds[t] != null) {
289
- let n = c.fds[t].fd_close();
290
- return n == 0 ? (c.fds[t] = c.fds[e], c.fds[e] = void 0, 0) : n;
289
+ if (o.fds[e] != null && o.fds[t] != null) {
290
+ let n = o.fds[t].fd_close();
291
+ return n == 0 ? (o.fds[t] = o.fds[e], o.fds[e] = void 0, 0) : n;
291
292
  } else return 8;
292
293
  },
293
294
  fd_seek(e, t, n, r) {
294
- let i = new DataView(c.inst.exports.memory.buffer);
295
- if (c.fds[e] != null) {
296
- let { ret: a, offset: o } = c.fds[e].fd_seek(t, n);
297
- return i.setBigInt64(r, o, !0), a;
295
+ let i = new DataView(o.inst.exports.memory.buffer);
296
+ if (o.fds[e] != null) {
297
+ let { ret: a, offset: s } = o.fds[e].fd_seek(t, n);
298
+ return i.setBigInt64(r, s, !0), a;
298
299
  } else return 8;
299
300
  },
300
301
  fd_sync(e) {
301
- return c.fds[e] == null ? 8 : c.fds[e].fd_sync();
302
+ return o.fds[e] == null ? 8 : o.fds[e].fd_sync();
302
303
  },
303
304
  fd_tell(e, t) {
304
- let n = new DataView(c.inst.exports.memory.buffer);
305
- if (c.fds[e] != null) {
306
- let { ret: r, offset: i } = c.fds[e].fd_tell();
305
+ let n = new DataView(o.inst.exports.memory.buffer);
306
+ if (o.fds[e] != null) {
307
+ let { ret: r, offset: i } = o.fds[e].fd_tell();
307
308
  return n.setBigUint64(t, i, !0), r;
308
309
  } else return 8;
309
310
  },
310
- fd_write(e, n, r, i) {
311
- let a = new DataView(c.inst.exports.memory.buffer), o = new Uint8Array(c.inst.exports.memory.buffer);
312
- if (c.fds[e] != null) {
313
- let s = t.read_bytes_array(a, n, r), l = 0;
314
- for (let t of s) {
315
- let n = o.slice(t.buf, t.buf + t.buf_len), { ret: r, nwritten: s } = c.fds[e].fd_write(n);
311
+ fd_write(e, t, n, i) {
312
+ let a = new DataView(o.inst.exports.memory.buffer), s = new Uint8Array(o.inst.exports.memory.buffer);
313
+ if (o.fds[e] != null) {
314
+ let c = r.read_bytes_array(a, t, n), l = 0;
315
+ for (let t of c) {
316
+ let n = s.slice(t.buf, t.buf + t.buf_len), { ret: r, nwritten: c } = o.fds[e].fd_write(n);
316
317
  if (r != 0) return a.setUint32(i, l, !0), r;
317
- if (l += s, s != n.byteLength) break;
318
+ if (l += c, c != n.byteLength) break;
318
319
  }
319
320
  return a.setUint32(i, l, !0), 0;
320
321
  } else return 8;
321
322
  },
322
323
  path_create_directory(e, t, n) {
323
- let r = new Uint8Array(c.inst.exports.memory.buffer);
324
- if (c.fds[e] != null) {
324
+ let r = new Uint8Array(o.inst.exports.memory.buffer);
325
+ if (o.fds[e] != null) {
325
326
  let i = new TextDecoder("utf-8").decode(r.slice(t, t + n));
326
- return c.fds[e].path_create_directory(i);
327
+ return o.fds[e].path_create_directory(i);
327
328
  } else return 8;
328
329
  },
329
330
  path_filestat_get(e, t, n, r, i) {
330
- let a = new DataView(c.inst.exports.memory.buffer), o = new Uint8Array(c.inst.exports.memory.buffer);
331
- if (c.fds[e] != null) {
332
- let s = new TextDecoder("utf-8").decode(o.slice(n, n + r)), { ret: l, filestat: u } = c.fds[e].path_filestat_get(t, s);
331
+ let a = new DataView(o.inst.exports.memory.buffer), s = new Uint8Array(o.inst.exports.memory.buffer);
332
+ if (o.fds[e] != null) {
333
+ let c = new TextDecoder("utf-8").decode(s.slice(n, n + r)), { ret: l, filestat: u } = o.fds[e].path_filestat_get(t, c);
333
334
  return u?.write_bytes(a, i), l;
334
335
  } else return 8;
335
336
  },
336
- path_filestat_set_times(e, t, n, r, i, a, o) {
337
- let s = new Uint8Array(c.inst.exports.memory.buffer);
338
- if (c.fds[e] != null) {
339
- let l = new TextDecoder("utf-8").decode(s.slice(n, n + r));
340
- return c.fds[e].path_filestat_set_times(t, l, i, a, o);
337
+ path_filestat_set_times(e, t, n, r, i, a, s) {
338
+ let c = new Uint8Array(o.inst.exports.memory.buffer);
339
+ if (o.fds[e] != null) {
340
+ let l = new TextDecoder("utf-8").decode(c.slice(n, n + r));
341
+ return o.fds[e].path_filestat_set_times(t, l, i, a, s);
341
342
  } else return 8;
342
343
  },
343
- path_link(e, t, n, r, i, a, o) {
344
- let s = new Uint8Array(c.inst.exports.memory.buffer);
345
- if (c.fds[e] != null && c.fds[i] != null) {
346
- let l = new TextDecoder("utf-8").decode(s.slice(n, n + r)), u = new TextDecoder("utf-8").decode(s.slice(a, a + o)), { ret: d, inode_obj: f } = c.fds[e].path_lookup(l, t);
347
- return f == null ? d : c.fds[i].path_link(u, f, !1);
344
+ path_link(e, t, n, r, i, a, s) {
345
+ let c = new Uint8Array(o.inst.exports.memory.buffer);
346
+ if (o.fds[e] != null && o.fds[i] != null) {
347
+ let l = new TextDecoder("utf-8").decode(c.slice(n, n + r)), u = new TextDecoder("utf-8").decode(c.slice(a, a + s)), { ret: d, inode_obj: f } = o.fds[e].path_lookup(l, t);
348
+ return f == null ? d : o.fds[i].path_link(u, f, !1);
348
349
  } else return 8;
349
350
  },
350
- path_open(e, t, n, r, i, a, o, s, l) {
351
- let u = new DataView(c.inst.exports.memory.buffer), f = new Uint8Array(c.inst.exports.memory.buffer);
352
- if (c.fds[e] != null) {
353
- let p = new TextDecoder("utf-8").decode(f.slice(n, n + r));
354
- d.log(p);
355
- let { ret: m, fd_obj: h } = c.fds[e].path_open(t, p, i, a, o, s);
351
+ path_open(e, t, n, r, i, a, s, c, l) {
352
+ let u = new DataView(o.inst.exports.memory.buffer), d = new Uint8Array(o.inst.exports.memory.buffer);
353
+ if (o.fds[e] != null) {
354
+ let f = new TextDecoder("utf-8").decode(d.slice(n, n + r));
355
+ p.log(f);
356
+ let { ret: m, fd_obj: h } = o.fds[e].path_open(t, f, i, a, s, c);
356
357
  if (m != 0) return m;
357
- c.fds.push(h);
358
- let g = c.fds.length - 1;
358
+ o.fds.push(h);
359
+ let g = o.fds.length - 1;
359
360
  return u.setUint32(l, g, !0), 0;
360
361
  } else return 8;
361
362
  },
362
363
  path_readlink(e, t, n, r, i, a) {
363
- let o = new DataView(c.inst.exports.memory.buffer), s = new Uint8Array(c.inst.exports.memory.buffer);
364
- if (c.fds[e] != null) {
365
- let l = new TextDecoder("utf-8").decode(s.slice(t, t + n));
366
- d.log(l);
367
- let { ret: u, data: f } = c.fds[e].path_readlink(l);
368
- if (f != null) {
369
- let e = new TextEncoder().encode(f);
370
- if (e.length > i) return o.setUint32(a, 0, !0), 8;
371
- s.set(e, r), o.setUint32(a, e.length, !0);
364
+ let s = new DataView(o.inst.exports.memory.buffer), c = new Uint8Array(o.inst.exports.memory.buffer);
365
+ if (o.fds[e] != null) {
366
+ let l = new TextDecoder("utf-8").decode(c.slice(t, t + n));
367
+ p.log(l);
368
+ let { ret: u, data: d } = o.fds[e].path_readlink(l);
369
+ if (d != null) {
370
+ let e = new TextEncoder().encode(d);
371
+ if (e.length > i) return s.setUint32(a, 0, !0), 8;
372
+ c.set(e, r), s.setUint32(a, e.length, !0);
372
373
  }
373
374
  return u;
374
375
  } else return 8;
375
376
  },
376
377
  path_remove_directory(e, t, n) {
377
- let r = new Uint8Array(c.inst.exports.memory.buffer);
378
- if (c.fds[e] != null) {
378
+ let r = new Uint8Array(o.inst.exports.memory.buffer);
379
+ if (o.fds[e] != null) {
379
380
  let i = new TextDecoder("utf-8").decode(r.slice(t, t + n));
380
- return c.fds[e].path_remove_directory(i);
381
+ return o.fds[e].path_remove_directory(i);
381
382
  } else return 8;
382
383
  },
383
384
  path_rename(e, t, n, r, i, a) {
384
- let o = new Uint8Array(c.inst.exports.memory.buffer);
385
- if (c.fds[e] != null && c.fds[r] != null) {
386
- let s = new TextDecoder("utf-8").decode(o.slice(t, t + n)), l = new TextDecoder("utf-8").decode(o.slice(i, i + a)), { ret: u, inode_obj: d } = c.fds[e].path_unlink(s);
385
+ let s = new Uint8Array(o.inst.exports.memory.buffer);
386
+ if (o.fds[e] != null && o.fds[r] != null) {
387
+ let c = new TextDecoder("utf-8").decode(s.slice(t, t + n)), l = new TextDecoder("utf-8").decode(s.slice(i, i + a)), { ret: u, inode_obj: d } = o.fds[e].path_unlink(c);
387
388
  if (d == null) return u;
388
- if (u = c.fds[r].path_link(l, d, !0), u != 0 && c.fds[e].path_link(s, d, !0) != 0) throw "path_link should always return success when relinking an inode back to the original place";
389
+ if (u = o.fds[r].path_link(l, d, !0), u != 0 && o.fds[e].path_link(c, d, !0) != 0) throw "path_link should always return success when relinking an inode back to the original place";
389
390
  return u;
390
391
  } else return 8;
391
392
  },
392
393
  path_symlink(e, t, n, r, i) {
393
- let a = new Uint8Array(c.inst.exports.memory.buffer);
394
- return c.fds[n] == null ? 8 : (new TextDecoder("utf-8").decode(a.slice(e, e + t)), new TextDecoder("utf-8").decode(a.slice(r, r + i)), 58);
394
+ let a = new Uint8Array(o.inst.exports.memory.buffer);
395
+ return o.fds[n] == null ? 8 : (new TextDecoder("utf-8").decode(a.slice(e, e + t)), new TextDecoder("utf-8").decode(a.slice(r, r + i)), 58);
395
396
  },
396
397
  path_unlink_file(e, t, n) {
397
- let r = new Uint8Array(c.inst.exports.memory.buffer);
398
- if (c.fds[e] != null) {
398
+ let r = new Uint8Array(o.inst.exports.memory.buffer);
399
+ if (o.fds[e] != null) {
399
400
  let i = new TextDecoder("utf-8").decode(r.slice(t, t + n));
400
- return c.fds[e].path_unlink_file(i);
401
+ return o.fds[e].path_unlink_file(i);
401
402
  } else return 8;
402
403
  },
403
404
  poll_oneoff(e, t, n) {
404
405
  if (n === 0) return 28;
405
- if (n > 1) return d.log("poll_oneoff: only a single subscription is supported"), 58;
406
- let r = new DataView(c.inst.exports.memory.buffer), i = a.read_bytes(r, e), s = i.eventtype, l = i.clockid, u = i.timeout;
407
- if (s !== 0) return d.log("poll_oneoff: only clock subscriptions are supported"), 58;
408
- let f;
409
- if (l === 1) f = () => BigInt(Math.round(performance.now() * 1e6));
410
- else if (l === 0) f = () => BigInt((/* @__PURE__ */ new Date()).getTime()) * 1000000n;
406
+ if (n > 1) return p.log("poll_oneoff: only a single subscription is supported"), 58;
407
+ let r = new DataView(o.inst.exports.memory.buffer), i = s.read_bytes(r, e), a = i.eventtype, l = i.clockid, u = i.timeout;
408
+ if (a !== 0) return p.log("poll_oneoff: only clock subscriptions are supported"), 58;
409
+ let d;
410
+ if (l === 1) d = () => BigInt(Math.round(performance.now() * 1e6));
411
+ else if (l === 0) d = () => BigInt((/* @__PURE__ */ new Date()).getTime()) * 1000000n;
411
412
  else return 28;
412
- let p = i.flags & 1 ? u : f() + u;
413
- for (; p > f(););
414
- return new o(i.userdata, 0, s).write_bytes(r, t), 0;
413
+ let f = i.flags & 1 ? u : d() + u;
414
+ for (; f > d(););
415
+ return new c(i.userdata, 0, a).write_bytes(r, t), 0;
415
416
  },
416
417
  proc_exit(e) {
417
- throw new f(e);
418
+ throw new m(e);
418
419
  },
419
420
  proc_raise(e) {
420
421
  throw "raised signal " + e;
421
422
  },
422
423
  sched_yield() {},
423
424
  random_get(e, t) {
424
- let n = new Uint8Array(c.inst.exports.memory.buffer).subarray(e, e + t);
425
- if ("crypto" in globalThis && (typeof SharedArrayBuffer > "u" || !(c.inst.exports.memory.buffer instanceof SharedArrayBuffer))) for (let e = 0; e < t; e += 65536) crypto.getRandomValues(n.subarray(e, e + 65536));
425
+ let n = new Uint8Array(o.inst.exports.memory.buffer).subarray(e, e + t);
426
+ if ("crypto" in globalThis && (typeof SharedArrayBuffer > "u" || !(o.inst.exports.memory.buffer instanceof SharedArrayBuffer))) for (let e = 0; e < t; e += 65536) crypto.getRandomValues(n.subarray(e, e + 65536));
426
427
  else for (let e = 0; e < t; e++) n[e] = Math.random() * 256 | 0;
427
428
  },
428
429
  sock_recv(e, t, n) {
@@ -439,7 +440,7 @@ var d = new l(!1), f = class extends Error {
439
440
  }
440
441
  };
441
442
  }
442
- }, m = class {
443
+ }, g = class {
443
444
  fd_allocate(e, t) {
444
445
  return 58;
445
446
  }
@@ -569,7 +570,7 @@ var d = new l(!1), f = class extends Error {
569
570
  path_unlink_file(e) {
570
571
  return 58;
571
572
  }
572
- }, h = class e {
573
+ }, _ = class e {
573
574
  static issue_ino() {
574
575
  return e.next_ino++;
575
576
  }
@@ -580,10 +581,10 @@ var d = new l(!1), f = class extends Error {
580
581
  this.ino = e.issue_ino();
581
582
  }
582
583
  };
583
- h.next_ino = 1n;
584
+ _.next_ino = 1n;
584
585
  //#endregion
585
586
  //#region ../../node_modules/@bjorn3/browser_wasi_shim/dist/fs_mem.js
586
- var g = class extends m {
587
+ var v = class extends g {
587
588
  fd_allocate(e, t) {
588
589
  if (!(this.file.size > e + t)) {
589
590
  let n = new Uint8Array(Number(e + t));
@@ -594,7 +595,7 @@ var g = class extends m {
594
595
  fd_fdstat_get() {
595
596
  return {
596
597
  ret: 0,
597
- fdstat: new r(4, 0)
598
+ fdstat: new a(4, 0)
598
599
  };
599
600
  }
600
601
  fd_filestat_set_size(e) {
@@ -686,7 +687,7 @@ var g = class extends m {
686
687
  constructor(e) {
687
688
  super(), this.file_pos = 0n, this.file = e;
688
689
  }
689
- }, _ = class extends m {
690
+ }, y = class extends g {
690
691
  fd_seek(e, t) {
691
692
  return {
692
693
  ret: 8,
@@ -705,30 +706,30 @@ var g = class extends m {
705
706
  fd_fdstat_get() {
706
707
  return {
707
708
  ret: 0,
708
- fdstat: new r(3, 0)
709
+ fdstat: new a(3, 0)
709
710
  };
710
711
  }
711
712
  fd_readdir_single(e) {
712
- if (d.enabled && (d.log("readdir_single", e), d.log(e, this.dir.contents.keys())), e == 0n) return {
713
+ if (p.enabled && (p.log("readdir_single", e), p.log(e, this.dir.contents.keys())), e == 0n) return {
713
714
  ret: 0,
714
- dirent: new n(1n, this.dir.ino, ".", 3)
715
+ dirent: new i(1n, this.dir.ino, ".", 3)
715
716
  };
716
717
  if (e == 1n) return {
717
718
  ret: 0,
718
- dirent: new n(2n, this.dir.parent_ino(), "..", 3)
719
+ dirent: new i(2n, this.dir.parent_ino(), "..", 3)
719
720
  };
720
721
  if (e >= BigInt(this.dir.contents.size) + 2n) return {
721
722
  ret: 0,
722
723
  dirent: null
723
724
  };
724
- let [t, r] = Array.from(this.dir.contents.entries())[Number(e - 2n)];
725
+ let [t, n] = Array.from(this.dir.contents.entries())[Number(e - 2n)];
725
726
  return {
726
727
  ret: 0,
727
- dirent: new n(e + 1n, r.ino, t, r.stat().filetype)
728
+ dirent: new i(e + 1n, n.ino, t, n.stat().filetype)
728
729
  };
729
730
  }
730
731
  path_filestat_get(e, t) {
731
- let { ret: n, path: r } = b.from(t);
732
+ let { ret: n, path: r } = S.from(t);
732
733
  if (r == null) return {
733
734
  ret: n,
734
735
  filestat: null
@@ -743,7 +744,7 @@ var g = class extends m {
743
744
  };
744
745
  }
745
746
  path_lookup(e, t) {
746
- let { ret: n, path: r } = b.from(e);
747
+ let { ret: n, path: r } = S.from(e);
747
748
  if (r == null) return {
748
749
  ret: n,
749
750
  inode_obj: null
@@ -758,7 +759,7 @@ var g = class extends m {
758
759
  };
759
760
  }
760
761
  path_open(e, t, n, r, i, a) {
761
- let { ret: o, path: s } = b.from(t);
762
+ let { ret: o, path: s } = S.from(t);
762
763
  if (s == null) return {
763
764
  ret: o,
764
765
  fd_obj: null
@@ -793,14 +794,14 @@ var g = class extends m {
793
794
  return this.path_open(0, e, 3, 0n, 0n, 0).ret;
794
795
  }
795
796
  path_link(e, t, n) {
796
- let { ret: r, path: i } = b.from(e);
797
+ let { ret: r, path: i } = S.from(e);
797
798
  if (i == null) return r;
798
799
  if (i.is_dir) return 44;
799
800
  let { ret: a, parent_entry: o, filename: s, entry: c } = this.dir.get_parent_dir_and_entry_for_path(i, !0);
800
801
  if (o == null || s == null) return a;
801
802
  if (c != null) {
802
803
  let e = t.stat().filetype == 3, r = c.stat().filetype == 3;
803
- if (e && r) if (n && c instanceof x) {
804
+ if (e && r) if (n && c instanceof C) {
804
805
  if (c.contents.size != 0) return 55;
805
806
  } else return 20;
806
807
  else if (e && !r) return 54;
@@ -810,7 +811,7 @@ var g = class extends m {
810
811
  return !n && t.stat().filetype == 3 ? 63 : (o.contents.set(s, t), 0);
811
812
  }
812
813
  path_unlink(e) {
813
- let { ret: t, path: n } = b.from(e);
814
+ let { ret: t, path: n } = S.from(e);
814
815
  if (n == null) return {
815
816
  ret: t,
816
817
  inode_obj: null
@@ -828,16 +829,16 @@ var g = class extends m {
828
829
  });
829
830
  }
830
831
  path_unlink_file(e) {
831
- let { ret: t, path: n } = b.from(e);
832
+ let { ret: t, path: n } = S.from(e);
832
833
  if (n == null) return t;
833
834
  let { ret: r, parent_entry: i, filename: a, entry: o } = this.dir.get_parent_dir_and_entry_for_path(n, !1);
834
835
  return i == null || a == null || o == null ? r : o.stat().filetype === 3 ? 31 : (i.contents.delete(a), 0);
835
836
  }
836
837
  path_remove_directory(e) {
837
- let { ret: t, path: n } = b.from(e);
838
+ let { ret: t, path: n } = S.from(e);
838
839
  if (n == null) return t;
839
840
  let { ret: r, parent_entry: i, filename: a, entry: o } = this.dir.get_parent_dir_and_entry_for_path(n, !1);
840
- return i == null || a == null || o == null ? r : !(o instanceof x) || o.stat().filetype !== 3 ? 54 : o.contents.size === 0 ? i.contents.delete(a) ? 0 : 44 : 55;
841
+ return i == null || a == null || o == null ? r : !(o instanceof C) || o.stat().filetype !== 3 ? 54 : o.contents.size === 0 ? i.contents.delete(a) ? 0 : 44 : 55;
841
842
  }
842
843
  fd_filestat_get() {
843
844
  return {
@@ -875,17 +876,17 @@ var g = class extends m {
875
876
  constructor(e) {
876
877
  super(), this.dir = e;
877
878
  }
878
- }, v = class extends _ {
879
+ }, b = class extends y {
879
880
  fd_prestat_get() {
880
881
  return {
881
882
  ret: 0,
882
- prestat: c.dir(this.prestat_name)
883
+ prestat: u.dir(this.prestat_name)
883
884
  };
884
885
  }
885
886
  constructor(e, t) {
886
- super(new x(t)), this.prestat_name = e;
887
+ super(new C(t)), this.prestat_name = e;
887
888
  }
888
- }, y = class extends h {
889
+ }, x = class extends _ {
889
890
  path_open(e, t, n) {
890
891
  if (this.readonly && (t & BigInt(64)) == BigInt(64)) return {
891
892
  ret: 63,
@@ -898,7 +899,7 @@ var g = class extends m {
898
899
  };
899
900
  this.data = new Uint8Array([]);
900
901
  }
901
- let r = new g(this);
902
+ let r = new v(this);
902
903
  return n & 1 && r.fd_seek(0n, 2), {
903
904
  ret: 0,
904
905
  fd_obj: r
@@ -908,12 +909,12 @@ var g = class extends m {
908
909
  return BigInt(this.data.byteLength);
909
910
  }
910
911
  stat() {
911
- return new i(this.ino, 4, this.size);
912
+ return new o(this.ino, 4, this.size);
912
913
  }
913
914
  constructor(e, t) {
914
915
  super(), this.data = new Uint8Array(e), this.readonly = !!t?.readonly;
915
916
  }
916
- }, b = class e {
917
+ }, S = class e {
917
918
  static from(t) {
918
919
  let n = new e();
919
920
  if (n.is_dir = t.endsWith("/"), t.startsWith("/")) return {
@@ -946,18 +947,18 @@ var g = class extends m {
946
947
  constructor() {
947
948
  this.parts = [], this.is_dir = !1;
948
949
  }
949
- }, x = class e extends h {
950
+ }, C = class e extends _ {
950
951
  parent_ino() {
951
- return this.parent == null ? h.root_ino() : this.parent.ino;
952
+ return this.parent == null ? _.root_ino() : this.parent.ino;
952
953
  }
953
954
  path_open(e, t, n) {
954
955
  return {
955
956
  ret: 0,
956
- fd_obj: new _(this)
957
+ fd_obj: new y(this)
957
958
  };
958
959
  }
959
960
  stat() {
960
- return new i(this.ino, 3, 0n);
961
+ return new o(this.ino, 3, 0n);
961
962
  }
962
963
  get_entry_for_path(t) {
963
964
  let n = this;
@@ -968,7 +969,7 @@ var g = class extends m {
968
969
  };
969
970
  let t = n.contents.get(r);
970
971
  if (t !== void 0) n = t;
971
- else return d.log(r), {
972
+ else return p.log(r), {
972
973
  ret: 44,
973
974
  entry: null
974
975
  };
@@ -1026,7 +1027,7 @@ var g = class extends m {
1026
1027
  };
1027
1028
  }
1028
1029
  create_entry_for_path(t, n) {
1029
- let { ret: r, path: i } = b.from(t);
1030
+ let { ret: r, path: i } = S.from(t);
1030
1031
  if (i == null) return {
1031
1032
  ret: r,
1032
1033
  entry: null
@@ -1040,9 +1041,9 @@ var g = class extends m {
1040
1041
  ret: 20,
1041
1042
  entry: null
1042
1043
  };
1043
- d.log("create", i);
1044
+ p.log("create", i);
1044
1045
  let l;
1045
- return l = n ? new e(/* @__PURE__ */ new Map()) : new y(/* @__PURE__ */ new ArrayBuffer(0)), o.contents.set(s, l), c = l, {
1046
+ return l = n ? new e(/* @__PURE__ */ new Map()) : new x(/* @__PURE__ */ new ArrayBuffer(0)), o.contents.set(s, l), c = l, {
1046
1047
  ret: 0,
1047
1048
  entry: c
1048
1049
  };
@@ -1051,81 +1052,188 @@ var g = class extends m {
1051
1052
  super(), this.parent = null, t instanceof Array ? this.contents = new Map(t) : this.contents = t;
1052
1053
  for (let t of this.contents.values()) t instanceof e && (t.parent = this);
1053
1054
  }
1054
- }, S = ["https:"], C = [
1055
- "127.0.0.1",
1056
- "localhost",
1057
- "0.0.0.0",
1058
- "[::1]",
1059
- "10.",
1060
- "172.16.",
1061
- "172.17.",
1062
- "172.18.",
1063
- "172.19.",
1064
- "172.20.",
1065
- "172.21.",
1066
- "172.22.",
1067
- "172.23.",
1068
- "172.24.",
1069
- "172.25.",
1070
- "172.26.",
1071
- "172.27.",
1072
- "172.28.",
1073
- "172.29.",
1074
- "172.30.",
1075
- "172.31.",
1076
- "192.168."
1077
- ];
1078
- function w(e) {
1079
- let t;
1055
+ }, w = [], T = 128 * 1024 * 1024, E = ["application/wasm", "application/octet-stream"], D = ["application/octet-stream"], O = 4096, k = 4096, A = 65536;
1056
+ function j(e, n = w) {
1057
+ let r;
1080
1058
  try {
1081
- t = new URL(e);
1059
+ r = new URL(e);
1082
1060
  } catch {
1083
1061
  throw Error(`Invalid image URL: ${e}`);
1084
1062
  }
1085
- if (!S.includes(t.protocol)) throw Error(`Protocol not allowed: ${t.protocol}`);
1086
- let n = t.hostname.toLowerCase();
1087
- for (let e of C) if (n === e || n.startsWith(e)) throw Error(`Image URL host blocked: ${n}`);
1088
- if (!t.pathname.endsWith(".wasm")) throw Error(`Image URL must point to a .wasm file: ${t.pathname}`);
1089
- return t;
1063
+ if (n.length === 0) throw Error("container workload disabled: no container image origins are configured (set containerImageOrigins on the node host)");
1064
+ if (!n.includes(r.origin)) throw Error(`Container image origin not allowed: ${r.origin}`);
1065
+ if (!r.pathname.endsWith(".wasm")) throw Error(`Image URL must point to a .wasm file: ${r.pathname}`);
1066
+ return t(r);
1067
+ }
1068
+ function M(e) {
1069
+ if (e.byteLength < 8) throw Error("Invalid WASM image: truncated header");
1070
+ if (e[0] !== 0 || e[1] !== 97 || e[2] !== 115 || e[3] !== 109) throw Error("Invalid WASM image: bad magic number");
1071
+ if (new DataView(e.buffer, e.byteOffset, e.byteLength).getUint32(4, !0) !== 1) throw Error("Unsupported WASM image version");
1072
+ let t = 8;
1073
+ for (; t < e.byteLength;) {
1074
+ let n = e[t++], r = N(e, t);
1075
+ t = r.next;
1076
+ let i = t + r.value;
1077
+ if (i > e.byteLength) throw Error("Invalid WASM image: truncated section");
1078
+ if (n === 5) {
1079
+ let n = t, r = N(e, n);
1080
+ n = r.next;
1081
+ let a = 0, o = null;
1082
+ for (let t = 0; t < r.value; t++) {
1083
+ let t = N(e, n);
1084
+ n = t.next;
1085
+ let r = N(e, n);
1086
+ n = r.next;
1087
+ let s = (t.value & 2) != 0, c = (t.value & 1) != 0 || s, l = null;
1088
+ if (c) {
1089
+ let t = N(e, n);
1090
+ n = t.next, l = t.value;
1091
+ }
1092
+ if (n > i) throw Error("Invalid WASM image: malformed memory section");
1093
+ if (a = Math.max(a, r.value * A), l !== null) {
1094
+ let e = l * A;
1095
+ o = o === null ? e : Math.max(o, e);
1096
+ }
1097
+ }
1098
+ return {
1099
+ initialBytes: a,
1100
+ maximumBytes: o
1101
+ };
1102
+ }
1103
+ t = i;
1104
+ }
1105
+ return {
1106
+ initialBytes: 0,
1107
+ maximumBytes: null
1108
+ };
1109
+ }
1110
+ function N(e, t) {
1111
+ let n = 0, r = 0, i = t;
1112
+ for (;;) {
1113
+ if (i >= e.byteLength) throw Error("Invalid WASM image: truncated LEB128 value");
1114
+ let t = e[i++];
1115
+ if (n |= (t & 127) << r, !(t & 128)) return {
1116
+ value: n >>> 0,
1117
+ next: i
1118
+ };
1119
+ if (r += 7, r > 28) throw Error("Invalid WASM image: oversized LEB128 value");
1120
+ }
1121
+ }
1122
+ function P(e) {
1123
+ let t = e ?? 512;
1124
+ if (!Number.isFinite(t)) throw Error(`memoryLimitMb must be a finite number, got ${String(e)}`);
1125
+ return Math.min(k, Math.max(32, Math.floor(t)));
1126
+ }
1127
+ function F(e, t) {
1128
+ let n = t * 1024 * 1024, r = M(e);
1129
+ if (r.initialBytes > n) throw Error(`Container image declares ${Math.round(r.initialBytes / 1024 / 1024)}MB of initial memory, above memoryLimitMb=${t}`);
1130
+ if (r.maximumBytes === null) throw Error("Container image has no declared maximum memory; memoryLimitMb cannot be enforced");
1131
+ if (r.maximumBytes > n) throw Error(`Container image may grow to ${Math.round(r.maximumBytes / 1024 / 1024)}MB, above memoryLimitMb=${t}`);
1132
+ return r;
1133
+ }
1134
+ function I(e) {
1135
+ if (!e || e.length > 255 || e.startsWith("/") || e.includes("\\") || /[\u0000-\u001f\u007f]/.test(e) || e.split("/").some((e) => !e || e === "." || e === "..")) throw Error(`Invalid container input mount name: ${e}`);
1136
+ }
1137
+ function L(e, n) {
1138
+ let r;
1139
+ try {
1140
+ r = new URL(e);
1141
+ } catch {
1142
+ throw Error("Invalid container file-source URL");
1143
+ }
1144
+ if (r.search || r.hash) throw Error("Container file-source URLs cannot contain query strings or fragments");
1145
+ if (r.username || r.password) throw Error("Container file-source URLs cannot contain credentials");
1146
+ if (!n.includes(r.origin)) throw Error(`Container file-source origin not allowed: ${r.origin}`);
1147
+ return t(r);
1148
+ }
1149
+ function R(e) {
1150
+ if (!e || typeof e != "object" || Array.isArray(e)) return !1;
1151
+ let t = e;
1152
+ return typeof t.url == "string" && t.url.length <= 2048 && typeof t.token == "string" && t.token.length <= 4096 && /^[A-Za-z0-9_-]+\.[a-f0-9]{64}$/.test(t.token) && Number.isSafeInteger(t.size) && t.size >= 0 && t.size <= 26214400 && typeof t.sha256 == "string" && /^[a-f0-9]{64}$/.test(t.sha256);
1153
+ }
1154
+ async function z(t, n = []) {
1155
+ let r = t.files ?? {}, i = t.fileSources ?? {};
1156
+ if (!r || typeof r != "object" || Array.isArray(r)) throw Error("Container files must be a filename-to-base64 map");
1157
+ if (!i || typeof i != "object" || Array.isArray(i)) throw Error("Container fileSources must be a filename-to-source map");
1158
+ let a = Object.entries(r), o = Object.entries(i);
1159
+ if (a.length + o.length > O) throw Error(`Container input file count exceeds ${O}`);
1160
+ let s = /* @__PURE__ */ new Map(), c = 0;
1161
+ for (let [e, t] of a) {
1162
+ if (I(e), typeof t != "string") throw Error(`Container file ${e} must be base64 text`);
1163
+ if (t.length > 8738134 * 4) throw Error(`Container file ${e} exceeds the 25 MiB input limit`);
1164
+ let n;
1165
+ try {
1166
+ n = atob(t);
1167
+ } catch {
1168
+ throw Error(`Container file ${e} is not valid base64`);
1169
+ }
1170
+ let r = Uint8Array.from(n, (e) => e.charCodeAt(0));
1171
+ if (c += r.byteLength, c > 26214400) throw Error("Container input files exceed the 25 MiB limit");
1172
+ s.set(e, r);
1173
+ }
1174
+ for (let [t, r] of o) {
1175
+ if (I(t), s.has(t)) throw Error(`Container input file is defined twice: ${t}`);
1176
+ if (!R(r)) throw Error(`Container file source ${t} is malformed`);
1177
+ let i = r;
1178
+ if (c += i.size, c > 26214400) throw Error("Container input files exceed the 25 MiB limit");
1179
+ let a = await e({
1180
+ url: L(i.url, n),
1181
+ allowContentTypes: D,
1182
+ maxBytes: Math.max(1, i.size),
1183
+ timeoutMs: 6e4,
1184
+ headers: { Authorization: `Bearer ${i.token}` }
1185
+ });
1186
+ if (!a.ok || a.status !== 200) throw Error(`Failed to download container file source: HTTP ${a.status}`);
1187
+ if (a.byteLength !== i.size) throw Error(`Container file source ${t} size mismatch: expected ${i.size}, got ${a.byteLength}`);
1188
+ let o = await crypto.subtle.digest("SHA-256", a.bytes.slice().buffer);
1189
+ if ([...new Uint8Array(o)].map((e) => e.toString(16).padStart(2, "0")).join("") !== i.sha256) throw Error(`Container file source ${t} SHA-256 mismatch`);
1190
+ s.set(t, a.bytes);
1191
+ }
1192
+ return s;
1090
1193
  }
1091
- var T = async (e) => {
1092
- let { image: t, command: n, files: r, memoryLimitMb: i = 512 } = e, a = w(t);
1093
- console.log(`Starting container: ${t} with command: ${n.join(" ")}`);
1094
- let o = [], s = [], c = { write: (e) => (o.push(new TextDecoder().decode(e)), e.length) }, l = { write: (e) => (s.push(new TextDecoder().decode(e)), e.length) }, u = /* @__PURE__ */ new Map();
1095
- for (let [e, t] of Object.entries(r)) {
1096
- let n = Uint8Array.from(atob(t), (e) => e.charCodeAt(0));
1097
- u.set(e, new y(n));
1098
- }
1099
- let d = new v("/", u), f = new p(n, [], [
1100
- new y(new Uint8Array()),
1101
- { write: c.write },
1102
- { write: l.write },
1103
- d
1104
- ]), m = await (await fetch(a.toString())).arrayBuffer(), { instance: h } = await WebAssembly.instantiate(m, { wasi_snapshot_preview1: f.wasiImport });
1194
+ var B = async (t, n = [], r = w) => {
1195
+ let { image: i, command: a, memoryLimitMb: o } = t, s = j(i, r), c = P(o), l = await z(t, n);
1196
+ console.log(`Starting container: ${i} with command: ${a.join(" ")}`);
1197
+ let u = [], d = [], f = { write: (e) => (u.push(new TextDecoder().decode(e)), e.length) }, p = { write: (e) => (d.push(new TextDecoder().decode(e)), e.length) }, m = /* @__PURE__ */ new Map();
1198
+ for (let [e, t] of l) m.set(e, new x(t));
1199
+ let g = new b("/", m), _ = new h(a, [], [
1200
+ new x(new Uint8Array()),
1201
+ { write: f.write },
1202
+ { write: p.write },
1203
+ g
1204
+ ]), v = await e({
1205
+ url: s,
1206
+ allowContentTypes: E,
1207
+ maxBytes: T
1208
+ });
1209
+ if (!v.ok) throw Error(`Failed to download container image: ${s.toString()} (HTTP ${v.status})`);
1210
+ let y = v.bytes, S = F(y, c);
1211
+ console.log(`[flaxia-node] container: memory cap ${c}MB (declared initial=${Math.round(S.initialBytes / 1024 / 1024)}MB max=${S.maximumBytes === null ? "unbounded" : `${Math.round(S.maximumBytes / 1024 / 1024)}MB`})`);
1212
+ let { instance: C } = await WebAssembly.instantiate(y.slice().buffer, { wasi_snapshot_preview1: _.wasiImport });
1105
1213
  try {
1106
- let e = f.start(h);
1214
+ let e = _.start(C);
1107
1215
  return {
1108
1216
  files: {},
1109
- stdout: o.join(""),
1110
- stderr: s.join(""),
1217
+ stdout: u.join(""),
1218
+ stderr: d.join(""),
1111
1219
  exitCode: e
1112
1220
  };
1113
1221
  } catch {
1114
1222
  return {
1115
1223
  files: {},
1116
- stdout: o.join(""),
1117
- stderr: s.join(""),
1224
+ stdout: u.join(""),
1225
+ stderr: d.join(""),
1118
1226
  exitCode: -1
1119
1227
  };
1120
1228
  }
1121
- }, E = async (e) => {
1122
- let t = performance.now();
1229
+ }, V = async (e, t = [], n) => {
1230
+ let r = performance.now();
1123
1231
  try {
1124
- let n = await T(e);
1125
- return console.log(`[flaxia-node] container: done durationMs=${Math.round(performance.now() - t)} exitCode=${n.exitCode ?? "?"}`), n;
1232
+ let i = await B(e, t, n);
1233
+ return console.log(`[flaxia-node] container: done durationMs=${Math.round(performance.now() - r)} exitCode=${i.exitCode ?? "?"}`), i;
1126
1234
  } catch (e) {
1127
1235
  throw console.error(`[flaxia-node] container: failed error=${e instanceof Error ? e.message : String(e)}`), e;
1128
1236
  }
1129
1237
  };
1130
1238
  //#endregion
1131
- export { E as handleContainer };
1239
+ export { V as handleContainer };