@flaxia/node 0.3.6 → 0.5.0
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.
- package/README.md +51 -15
- package/dist/__tests__/consent-policy.test.d.ts +2 -0
- package/dist/__tests__/consent-policy.test.d.ts.map +1 -0
- package/dist/__tests__/public-api.test.d.ts +2 -0
- package/dist/__tests__/public-api.test.d.ts.map +1 -0
- package/dist/assets/VectorStoreEngine.js +140 -85
- package/dist/assets/ai-inference.js +173 -33
- package/dist/assets/container.js +368 -260
- package/dist/assets/dist.js +209 -0
- package/dist/assets/egress-guard.js +174 -0
- package/dist/assets/image-process.js +184 -19
- package/dist/assets/nudenet.js +2 -2
- package/dist/client/SignalingClient.d.ts +6 -0
- package/dist/client/SignalingClient.d.ts.map +1 -1
- package/dist/consent/ConsentUI.d.ts +44 -5
- package/dist/consent/ConsentUI.d.ts.map +1 -1
- package/dist/consent/notice.d.ts +29 -0
- package/dist/consent/notice.d.ts.map +1 -0
- package/dist/consent/storage.d.ts +91 -7
- package/dist/consent/storage.d.ts.map +1 -1
- package/dist/executor/WorkerPool.d.ts +35 -1
- package/dist/executor/WorkerPool.d.ts.map +1 -1
- package/dist/executor/__tests__/WorkerPool.swarm.test.d.ts +13 -0
- package/dist/executor/__tests__/WorkerPool.swarm.test.d.ts.map +1 -0
- package/dist/executor/__tests__/container-executor.test.d.ts +2 -0
- package/dist/executor/__tests__/container-executor.test.d.ts.map +1 -0
- package/dist/executor/__tests__/egress-guard.test.d.ts +2 -0
- package/dist/executor/__tests__/egress-guard.test.d.ts.map +1 -0
- package/dist/executor/__tests__/webgpuProbe.test.d.ts +2 -0
- package/dist/executor/__tests__/webgpuProbe.test.d.ts.map +1 -0
- package/dist/executor/container-executor.d.ts +49 -1
- package/dist/executor/container-executor.d.ts.map +1 -1
- package/dist/executor/egress-guard.d.ts +105 -0
- package/dist/executor/egress-guard.d.ts.map +1 -0
- package/dist/executor/memoryProbe.d.ts +25 -0
- package/dist/executor/memoryProbe.d.ts.map +1 -1
- package/dist/executor/throttle.d.ts +62 -4
- package/dist/executor/throttle.d.ts.map +1 -1
- package/dist/executor/webgpuProbe.d.ts +9 -0
- package/dist/executor/webgpuProbe.d.ts.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +766 -230
- package/dist/swarm/__tests__/adapter.test.d.ts +2 -0
- package/dist/swarm/__tests__/adapter.test.d.ts.map +1 -0
- package/dist/swarm/__tests__/controller.test.d.ts +2 -0
- package/dist/swarm/__tests__/controller.test.d.ts.map +1 -0
- package/dist/swarm/__tests__/defects.test.d.ts +16 -0
- package/dist/swarm/__tests__/defects.test.d.ts.map +1 -0
- package/dist/swarm/__tests__/hardening.test.d.ts +2 -0
- package/dist/swarm/__tests__/hardening.test.d.ts.map +1 -0
- package/dist/swarm/__tests__/runtime.test.d.ts +2 -0
- package/dist/swarm/__tests__/runtime.test.d.ts.map +1 -0
- package/dist/swarm/__tests__/session.test.d.ts +2 -0
- package/dist/swarm/__tests__/session.test.d.ts.map +1 -0
- package/dist/swarm/adapter.d.ts +115 -0
- package/dist/swarm/adapter.d.ts.map +1 -0
- package/dist/swarm/controller.d.ts +87 -0
- package/dist/swarm/controller.d.ts.map +1 -0
- package/dist/swarm/messages.d.ts +41 -0
- package/dist/swarm/messages.d.ts.map +1 -0
- package/dist/swarm/runtime.d.ts +16 -0
- package/dist/swarm/runtime.d.ts.map +1 -0
- package/dist/swarm/session.d.ts +73 -0
- package/dist/swarm/session.d.ts.map +1 -0
- package/dist/swarm-engine.js +7477 -0
- package/dist/vector-store/HNSWIndex.d.ts +30 -0
- package/dist/vector-store/HNSWIndex.d.ts.map +1 -1
- package/dist/vector-store/VectorStoreEngine.d.ts +43 -0
- package/dist/vector-store/VectorStoreEngine.d.ts.map +1 -1
- package/dist/vector-store/__tests__/HNSWIndex.test.d.ts +2 -0
- package/dist/vector-store/__tests__/HNSWIndex.test.d.ts.map +1 -0
- package/dist/vector-store/__tests__/VectorStoreEngine.test.d.ts +2 -0
- package/dist/vector-store/__tests__/VectorStoreEngine.test.d.ts.map +1 -0
- package/dist/worker/__tests__/main.worker.abort.test.d.ts +2 -0
- package/dist/worker/__tests__/main.worker.abort.test.d.ts.map +1 -0
- package/dist/worker/__tests__/main.worker.control.test.d.ts +2 -0
- package/dist/worker/__tests__/main.worker.control.test.d.ts.map +1 -0
- package/dist/worker.js +643 -67
- package/dist/workloads/__tests__/nudenet.test.d.ts +2 -0
- package/dist/workloads/__tests__/nudenet.test.d.ts.map +1 -0
- package/dist/workloads/ai-inference.d.ts +2 -1
- package/dist/workloads/ai-inference.d.ts.map +1 -1
- package/dist/workloads/ai-model-registry.d.ts +72 -0
- package/dist/workloads/ai-model-registry.d.ts.map +1 -0
- package/dist/workloads/container.d.ts +1 -1
- package/dist/workloads/container.d.ts.map +1 -1
- package/dist/workloads/image-process.d.ts +27 -0
- package/dist/workloads/image-process.d.ts.map +1 -1
- package/dist/workloads/nudenet.d.ts +8 -0
- package/dist/workloads/nudenet.d.ts.map +1 -1
- package/package.json +3 -2
- package/dist/assets/memoryProbe.js +0 -28
- package/dist/client/WebRTCPeer.d.ts +0 -8
- package/dist/client/WebRTCPeer.d.ts.map +0 -1
package/dist/assets/container.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
74
|
+
}, u = class e {
|
|
74
75
|
static dir(t) {
|
|
75
76
|
let n = new e();
|
|
76
|
-
return n.tag = 0, n.inner = new
|
|
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
|
-
},
|
|
82
|
+
}, d = class {
|
|
82
83
|
enable(e) {
|
|
83
|
-
this.log =
|
|
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
|
|
93
|
+
function f(e, t) {
|
|
93
94
|
return e ? console.log.bind(console, "%c%s", "color: #265BA0", t) : () => {};
|
|
94
95
|
}
|
|
95
|
-
var
|
|
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
|
-
},
|
|
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
|
|
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(
|
|
113
|
-
this.args = [], this.env = [], this.fds = [],
|
|
114
|
-
let
|
|
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(
|
|
118
|
-
n.setUint32(e,
|
|
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
|
|
121
|
-
return n.setUint32(t, r, !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(
|
|
125
|
-
for (let i = 0; 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(
|
|
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
|
|
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(
|
|
134
|
-
n.setUint32(e,
|
|
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
|
|
137
|
-
return n.setUint32(t, r, !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(
|
|
141
|
-
for (let i = 0; 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(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
177
|
+
return o.fds[e] == null ? 8 : 0;
|
|
177
178
|
},
|
|
178
179
|
fd_allocate(e, t, n) {
|
|
179
|
-
return
|
|
180
|
+
return o.fds[e] == null ? 8 : o.fds[e].fd_allocate(t, n);
|
|
180
181
|
},
|
|
181
182
|
fd_close(e) {
|
|
182
|
-
if (
|
|
183
|
-
let t =
|
|
184
|
-
return
|
|
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
|
|
189
|
+
return o.fds[e] == null ? 8 : o.fds[e].fd_sync();
|
|
189
190
|
},
|
|
190
191
|
fd_fdstat_get(e, t) {
|
|
191
|
-
if (
|
|
192
|
-
let { ret: n, fdstat: r } =
|
|
193
|
-
return r?.write_bytes(new DataView(
|
|
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
|
|
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
|
|
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 (
|
|
204
|
-
let { ret: n, filestat: r } =
|
|
205
|
-
return r?.write_bytes(new DataView(
|
|
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
|
|
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
|
|
213
|
+
return o.fds[e] == null ? 8 : o.fds[e].fd_filestat_set_times(t, n, r);
|
|
213
214
|
},
|
|
214
|
-
fd_pread(
|
|
215
|
-
let
|
|
216
|
-
if (
|
|
217
|
-
let l =
|
|
218
|
-
for (let
|
|
219
|
-
let { ret: n, data: r } =
|
|
220
|
-
if (n != 0) return
|
|
221
|
-
if (
|
|
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
|
|
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(
|
|
228
|
-
if (
|
|
229
|
-
let { ret: r, prestat: i } =
|
|
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 (
|
|
235
|
-
let { ret: r, prestat: i } =
|
|
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(
|
|
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,
|
|
242
|
-
let
|
|
243
|
-
if (
|
|
244
|
-
let l =
|
|
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 =
|
|
247
|
-
if (r != 0) return
|
|
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
|
|
251
|
+
return s.setUint32(a, u, !0), 0;
|
|
251
252
|
} else return 8;
|
|
252
253
|
},
|
|
253
|
-
fd_read(
|
|
254
|
-
let a = new DataView(
|
|
255
|
-
if (
|
|
256
|
-
let
|
|
257
|
-
for (let
|
|
258
|
-
let { ret: n, data: r } =
|
|
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 (
|
|
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(
|
|
267
|
-
if (
|
|
268
|
-
let
|
|
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 } =
|
|
271
|
-
if (l != 0) return a.setUint32(i,
|
|
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 -
|
|
274
|
-
|
|
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),
|
|
279
|
-
|
|
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(
|
|
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,
|
|
285
|
+
return a.setUint32(i, c, !0), 0;
|
|
285
286
|
} else return 8;
|
|
286
287
|
},
|
|
287
288
|
fd_renumber(e, t) {
|
|
288
|
-
if (
|
|
289
|
-
let n =
|
|
290
|
-
return n == 0 ? (
|
|
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(
|
|
295
|
-
if (
|
|
296
|
-
let { ret: a, offset:
|
|
297
|
-
return i.setBigInt64(r,
|
|
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
|
|
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(
|
|
305
|
-
if (
|
|
306
|
-
let { ret: r, offset: i } =
|
|
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,
|
|
311
|
-
let a = new DataView(
|
|
312
|
-
if (
|
|
313
|
-
let
|
|
314
|
-
for (let t of
|
|
315
|
-
let 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 +=
|
|
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(
|
|
324
|
-
if (
|
|
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
|
|
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(
|
|
331
|
-
if (
|
|
332
|
-
let
|
|
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,
|
|
337
|
-
let
|
|
338
|
-
if (
|
|
339
|
-
let l = new TextDecoder("utf-8").decode(
|
|
340
|
-
return
|
|
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,
|
|
344
|
-
let
|
|
345
|
-
if (
|
|
346
|
-
let l = new TextDecoder("utf-8").decode(
|
|
347
|
-
return f == null ? d :
|
|
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,
|
|
351
|
-
let u = new DataView(
|
|
352
|
-
if (
|
|
353
|
-
let
|
|
354
|
-
|
|
355
|
-
let { ret: m, fd_obj: h } =
|
|
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
|
-
|
|
358
|
-
let g =
|
|
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
|
|
364
|
-
if (
|
|
365
|
-
let l = new TextDecoder("utf-8").decode(
|
|
366
|
-
|
|
367
|
-
let { ret: u, data:
|
|
368
|
-
if (
|
|
369
|
-
let e = new TextEncoder().encode(
|
|
370
|
-
if (e.length > i) return
|
|
371
|
-
|
|
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(
|
|
378
|
-
if (
|
|
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
|
|
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
|
|
385
|
-
if (
|
|
386
|
-
let
|
|
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 =
|
|
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(
|
|
394
|
-
return
|
|
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(
|
|
398
|
-
if (
|
|
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
|
|
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
|
|
406
|
-
let r = new DataView(
|
|
407
|
-
if (
|
|
408
|
-
let
|
|
409
|
-
if (l === 1)
|
|
410
|
-
else if (l === 0)
|
|
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
|
|
413
|
-
for (;
|
|
414
|
-
return new
|
|
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
|
|
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(
|
|
425
|
-
if ("crypto" in globalThis && (typeof SharedArrayBuffer > "u" || !(
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
|
|
584
|
+
_.next_ino = 1n;
|
|
584
585
|
//#endregion
|
|
585
586
|
//#region ../../node_modules/@bjorn3/browser_wasi_shim/dist/fs_mem.js
|
|
586
|
-
var
|
|
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
|
|
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
|
-
},
|
|
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
|
|
709
|
+
fdstat: new a(3, 0)
|
|
709
710
|
};
|
|
710
711
|
}
|
|
711
712
|
fd_readdir_single(e) {
|
|
712
|
-
if (
|
|
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
|
|
715
|
+
dirent: new i(1n, this.dir.ino, ".", 3)
|
|
715
716
|
};
|
|
716
717
|
if (e == 1n) return {
|
|
717
718
|
ret: 0,
|
|
718
|
-
dirent: new
|
|
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,
|
|
725
|
+
let [t, n] = Array.from(this.dir.contents.entries())[Number(e - 2n)];
|
|
725
726
|
return {
|
|
726
727
|
ret: 0,
|
|
727
|
-
dirent: new
|
|
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 } =
|
|
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 } =
|
|
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 } =
|
|
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 } =
|
|
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
|
|
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 } =
|
|
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 } =
|
|
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 } =
|
|
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
|
|
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
|
-
},
|
|
879
|
+
}, b = class extends y {
|
|
879
880
|
fd_prestat_get() {
|
|
880
881
|
return {
|
|
881
882
|
ret: 0,
|
|
882
|
-
prestat:
|
|
883
|
+
prestat: u.dir(this.prestat_name)
|
|
883
884
|
};
|
|
884
885
|
}
|
|
885
886
|
constructor(e, t) {
|
|
886
|
-
super(new
|
|
887
|
+
super(new C(t)), this.prestat_name = e;
|
|
887
888
|
}
|
|
888
|
-
},
|
|
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
|
|
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
|
|
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
|
-
},
|
|
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
|
-
},
|
|
950
|
+
}, C = class e extends _ {
|
|
950
951
|
parent_ino() {
|
|
951
|
-
return this.parent == null ?
|
|
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
|
|
957
|
+
fd_obj: new y(this)
|
|
957
958
|
};
|
|
958
959
|
}
|
|
959
960
|
stat() {
|
|
960
|
-
return new
|
|
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
|
|
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 } =
|
|
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
|
-
|
|
1044
|
+
p.log("create", i);
|
|
1044
1045
|
let l;
|
|
1045
|
-
return l = n ? new e(/* @__PURE__ */ new Map()) : new
|
|
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
|
-
},
|
|
1055
|
-
|
|
1056
|
-
|
|
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
|
-
|
|
1059
|
+
r = new URL(e);
|
|
1082
1060
|
} catch {
|
|
1083
1061
|
throw Error(`Invalid image URL: ${e}`);
|
|
1084
1062
|
}
|
|
1085
|
-
if (
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
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
|
|
1092
|
-
let { image:
|
|
1093
|
-
console.log(`Starting container: ${
|
|
1094
|
-
let
|
|
1095
|
-
for (let [e, t] of
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
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 =
|
|
1214
|
+
let e = _.start(C);
|
|
1107
1215
|
return {
|
|
1108
1216
|
files: {},
|
|
1109
|
-
stdout:
|
|
1110
|
-
stderr:
|
|
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:
|
|
1117
|
-
stderr:
|
|
1224
|
+
stdout: u.join(""),
|
|
1225
|
+
stderr: d.join(""),
|
|
1118
1226
|
exitCode: -1
|
|
1119
1227
|
};
|
|
1120
1228
|
}
|
|
1121
|
-
},
|
|
1122
|
-
let
|
|
1229
|
+
}, V = async (e, t = [], n) => {
|
|
1230
|
+
let r = performance.now();
|
|
1123
1231
|
try {
|
|
1124
|
-
let
|
|
1125
|
-
return console.log(`[flaxia-node] container: done durationMs=${Math.round(performance.now() -
|
|
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 {
|
|
1239
|
+
export { V as handleContainer };
|