@glodon-aiot/bot-client-sdk 3.26.0-alpha.4 → 3.26.0-alpha.5
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 +105 -76
- package/dist/es/Config.mjs +63 -85
- package/dist/es/builtinTools/browserRuntime/BrowserCommandRunner.mjs +201 -0
- package/dist/es/builtinTools/browserRuntime/PythonRunner.mjs +356 -0
- package/dist/es/builtinTools/browserRuntime/WorkspaceBashFs.mjs +350 -0
- package/dist/es/builtinTools/browserRuntime/assets.mjs +9 -0
- package/dist/es/builtinTools/browserRuntime/loadBash.mjs +17 -0
- package/dist/es/builtinTools/browserRuntime/pyodideRunner.py.mjs +96 -0
- package/dist/es/builtinTools/browserRuntime/pyodideWorker.mjs +242 -0
- package/dist/es/builtinTools/command.mjs +56 -0
- package/dist/es/builtinTools/constants.mjs +10 -0
- package/dist/es/builtinTools/createBuiltinToolsPlugin.mjs +236 -0
- package/dist/es/builtinTools/overview.mjs +77 -0
- package/dist/es/builtinTools/paths.mjs +63 -0
- package/dist/es/builtinTools/schemas.mjs +216 -0
- package/dist/es/builtinTools/tools.mjs +471 -0
- package/dist/es/index.mjs +49 -48
- package/dist/es/localFiles/adapters/FileSystemAccessAdapter.mjs +193 -103
- package/dist/es/localFiles/adapters/HostBridgeAdapter.mjs +138 -77
- package/dist/es/localFiles/adapters/MemoryWorkspaceAdapter.mjs +132 -97
- package/dist/es/localFiles/adapters/WorkspaceFileAdapter.mjs +32 -28
- package/dist/es/localFiles/constants.mjs +1 -1
- package/dist/es/localFiles/host/connectHostBridge.mjs +22 -18
- package/dist/es/localFiles/host/protocol.mjs +6 -5
- package/dist/es/localFiles/schemas.mjs +45 -60
- package/dist/es/localFiles/validate.mjs +37 -37
- package/dist/es/localFiles/workspace/LocalWorkspace.mjs +71 -52
- package/dist/es/package.json.mjs +33 -27
- package/dist/lib/index.js +372 -9
- package/dist/src/Config.d.ts +2 -2
- package/dist/src/builtinTools/browserRuntime/BrowserCommandRunner.d.ts +26 -0
- package/dist/src/builtinTools/browserRuntime/PythonRunner.d.ts +67 -0
- package/dist/src/builtinTools/browserRuntime/WorkspaceBashFs.d.ts +51 -0
- package/dist/src/builtinTools/browserRuntime/assets.d.ts +13 -0
- package/dist/src/builtinTools/browserRuntime/loadBash.d.ts +3 -0
- package/dist/src/builtinTools/browserRuntime/pyodideWorker.d.ts +44 -0
- package/dist/src/builtinTools/command.d.ts +26 -0
- package/dist/src/builtinTools/constants.d.ts +17 -0
- package/dist/src/builtinTools/createBuiltinToolsPlugin.d.ts +11 -0
- package/dist/src/builtinTools/overview.d.ts +5 -0
- package/dist/src/builtinTools/paths.d.ts +15 -0
- package/dist/src/builtinTools/schemas.d.ts +3 -0
- package/dist/src/builtinTools/tools.d.ts +60 -0
- package/dist/src/localFiles/adapters/FileSystemAccessAdapter.d.ts +4 -1
- package/dist/src/localFiles/adapters/HostBridgeAdapter.d.ts +20 -1
- package/dist/src/localFiles/adapters/MemoryWorkspaceAdapter.d.ts +4 -1
- package/dist/src/localFiles/adapters/WorkspaceFileAdapter.d.ts +14 -0
- package/dist/src/localFiles/adapters/fsaTypes.d.ts +2 -0
- package/dist/src/localFiles/constants.d.ts +2 -1
- package/dist/src/localFiles/host/protocol.d.ts +13 -0
- package/dist/src/localFiles/index.d.ts +3 -2
- package/dist/src/localFiles/schemas.d.ts +2 -3
- package/dist/src/localFiles/types.d.ts +14 -1
- package/dist/src/localFiles/workspace/LocalWorkspace.d.ts +12 -0
- package/package.json +8 -2
- package/dist/es/localFiles/createLocalPythonPlugin.mjs +0 -196
|
@@ -1,172 +1,233 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
var m = (
|
|
5
|
-
if (t = Symbol[
|
|
1
|
+
var N = Object.defineProperty;
|
|
2
|
+
var f = Object.getOwnPropertySymbols;
|
|
3
|
+
var O = Object.prototype.hasOwnProperty, T = Object.prototype.propertyIsEnumerable;
|
|
4
|
+
var m = (i, t) => {
|
|
5
|
+
if (t = Symbol[i])
|
|
6
6
|
return t;
|
|
7
|
-
throw Error("Symbol." +
|
|
7
|
+
throw Error("Symbol." + i + " is not defined");
|
|
8
8
|
};
|
|
9
|
-
var u = (
|
|
9
|
+
var u = (i, t, e) => t in i ? N(i, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : i[t] = e, b = (i, t) => {
|
|
10
10
|
for (var e in t || (t = {}))
|
|
11
|
-
|
|
12
|
-
if (
|
|
13
|
-
for (var e of
|
|
14
|
-
|
|
15
|
-
return
|
|
11
|
+
O.call(t, e) && u(i, e, t[e]);
|
|
12
|
+
if (f)
|
|
13
|
+
for (var e of f(t))
|
|
14
|
+
T.call(t, e) && u(i, e, t[e]);
|
|
15
|
+
return i;
|
|
16
16
|
};
|
|
17
|
-
var p = (
|
|
18
|
-
var
|
|
19
|
-
var
|
|
17
|
+
var p = (i, t, e) => (u(i, typeof t != "symbol" ? t + "" : t, e), e);
|
|
18
|
+
var l = (i, t, e) => new Promise((r, o) => {
|
|
19
|
+
var s = (n) => {
|
|
20
20
|
try {
|
|
21
|
-
|
|
21
|
+
c(e.next(n));
|
|
22
22
|
} catch (d) {
|
|
23
|
-
|
|
23
|
+
o(d);
|
|
24
24
|
}
|
|
25
|
-
},
|
|
25
|
+
}, a = (n) => {
|
|
26
26
|
try {
|
|
27
|
-
|
|
27
|
+
c(e.throw(n));
|
|
28
28
|
} catch (d) {
|
|
29
|
-
|
|
29
|
+
o(d);
|
|
30
30
|
}
|
|
31
|
-
},
|
|
32
|
-
|
|
31
|
+
}, c = (n) => n.done ? r(n.value) : Promise.resolve(n.value).then(s, a);
|
|
32
|
+
c((e = e.apply(i, t)).next());
|
|
33
33
|
});
|
|
34
|
-
var w = (
|
|
35
|
-
import { domError as
|
|
34
|
+
var w = (i, t, e) => (t = i[m("asyncIterator")]) ? t.call(i) : (i = i[m("iterator")](), t = {}, e = (r, o) => (o = i[r]) && (t[r] = (s) => new Promise((a, c, n) => (s = o.call(i, s), n = s.done, Promise.resolve(s.value).then((d) => a({ value: d, done: n }), c)))), e("next"), e("return"), t);
|
|
35
|
+
import { domError as h, toChunks as L } from "./WorkspaceFileAdapter.mjs";
|
|
36
36
|
import { throwIfAborted as A } from "../errors.mjs";
|
|
37
|
-
import { HOST_CHANNEL as M } from "../host/protocol.mjs";
|
|
38
|
-
const
|
|
39
|
-
function
|
|
37
|
+
import { SANDBOX_PROTOCOL as C, HOST_CHANNEL as M } from "../host/protocol.mjs";
|
|
38
|
+
const x = 3e4;
|
|
39
|
+
function B(i) {
|
|
40
40
|
let t = "";
|
|
41
|
-
for (let r = 0; r <
|
|
42
|
-
t += String.fromCharCode(...
|
|
41
|
+
for (let r = 0; r < i.length; r += 32768)
|
|
42
|
+
t += String.fromCharCode(...i.subarray(r, r + 32768));
|
|
43
43
|
return btoa(t);
|
|
44
44
|
}
|
|
45
|
-
function
|
|
46
|
-
const t = atob(
|
|
45
|
+
function k(i) {
|
|
46
|
+
const t = atob(i), e = new Uint8Array(t.length);
|
|
47
47
|
for (let r = 0; r < t.length; r++)
|
|
48
48
|
e[r] = t.charCodeAt(r);
|
|
49
49
|
return e;
|
|
50
50
|
}
|
|
51
|
-
function
|
|
52
|
-
const e =
|
|
51
|
+
function v(i, t) {
|
|
52
|
+
const e = i && typeof i == "object" ? i : {}, r = e.kind === "directory" ? "directory" : "file", o = {
|
|
53
53
|
name: typeof e.name == "string" && e.name ? e.name : t,
|
|
54
54
|
kind: r
|
|
55
55
|
};
|
|
56
|
-
return r === "file" && typeof e.size == "number" && (
|
|
56
|
+
return r === "file" && typeof e.size == "number" && (o.size = e.size), typeof e.lastModified == "number" && (o.lastModified = e.lastModified), o;
|
|
57
57
|
}
|
|
58
|
-
class
|
|
58
|
+
class q {
|
|
59
59
|
constructor(t, e = "") {
|
|
60
60
|
p(this, "displayName");
|
|
61
|
+
/** 宿主最近一次 workspace 消息声明的能力。 */
|
|
62
|
+
p(this, "capabilities", /* @__PURE__ */ new Set());
|
|
63
|
+
/** 宿主随 sandbox-exec 声明的沙箱包版本和协议。 */
|
|
64
|
+
p(this, "sandboxVersion");
|
|
65
|
+
p(this, "sandboxProtocol");
|
|
61
66
|
p(this, "seq", 0);
|
|
62
67
|
p(this, "pending", /* @__PURE__ */ new Map());
|
|
63
68
|
this.view = t, this.displayName = e;
|
|
64
69
|
}
|
|
70
|
+
setCapabilities(t, e = {}) {
|
|
71
|
+
const r = Array.isArray(t) ? t.filter((o) => typeof o == "string") : [];
|
|
72
|
+
this.capabilities = new Set(r), this.sandboxVersion = typeof e.version == "string" ? e.version : void 0, this.sandboxProtocol = typeof e.protocol == "number" ? e.protocol : void 0;
|
|
73
|
+
}
|
|
74
|
+
/** 声明了 sandbox-exec 且协议版本与 SDK 一致时才把命令交给宿主。 */
|
|
75
|
+
get canExec() {
|
|
76
|
+
return this.capabilities.has("sandbox-exec") && this.sandboxProtocol === C;
|
|
77
|
+
}
|
|
78
|
+
requireCapability(t) {
|
|
79
|
+
if (!this.capabilities.has(t))
|
|
80
|
+
throw h("NotAllowedError", `宿主未声明 ${t}。`);
|
|
81
|
+
}
|
|
65
82
|
settle(t) {
|
|
66
83
|
const e = this.pending.get(t.id);
|
|
67
84
|
if (e) {
|
|
68
85
|
if (clearTimeout(e.timer), this.pending.delete(t.id), t.ok === !1) {
|
|
69
|
-
e.reject(
|
|
86
|
+
e.reject(h(t.name || "NotAllowedError", t.message || t.name || "NotAllowedError"));
|
|
70
87
|
return;
|
|
71
88
|
}
|
|
72
89
|
e.resolve(t);
|
|
73
90
|
}
|
|
74
91
|
}
|
|
75
|
-
call(t, e, r,
|
|
92
|
+
call(t, e, r, o = x) {
|
|
76
93
|
A(r);
|
|
77
|
-
const
|
|
78
|
-
return new Promise((
|
|
79
|
-
const
|
|
80
|
-
this.pending.delete(
|
|
81
|
-
},
|
|
82
|
-
clearTimeout(
|
|
94
|
+
const s = `host-${++this.seq}`;
|
|
95
|
+
return new Promise((a, c) => {
|
|
96
|
+
const n = setTimeout(() => {
|
|
97
|
+
this.pending.delete(s), c(h("AbortError"));
|
|
98
|
+
}, o), d = () => {
|
|
99
|
+
clearTimeout(n), this.pending.delete(s), c(h("AbortError"));
|
|
83
100
|
};
|
|
84
101
|
r == null || r.addEventListener("abort", d, {
|
|
85
102
|
once: !0
|
|
86
|
-
}), this.pending.set(
|
|
87
|
-
resolve: (
|
|
88
|
-
r == null || r.removeEventListener("abort", d),
|
|
103
|
+
}), this.pending.set(s, {
|
|
104
|
+
resolve: (E) => {
|
|
105
|
+
r == null || r.removeEventListener("abort", d), a(E);
|
|
89
106
|
},
|
|
90
|
-
reject:
|
|
91
|
-
timer:
|
|
107
|
+
reject: c,
|
|
108
|
+
timer: n
|
|
92
109
|
}), this.view.postMessage(b({
|
|
93
110
|
channel: M,
|
|
94
|
-
id:
|
|
111
|
+
id: s,
|
|
95
112
|
op: t
|
|
96
113
|
}, e));
|
|
97
114
|
});
|
|
98
115
|
}
|
|
99
116
|
stat(t) {
|
|
100
|
-
return
|
|
117
|
+
return l(this, null, function* () {
|
|
101
118
|
const e = yield this.call("stat", {
|
|
102
119
|
path: t
|
|
103
120
|
});
|
|
104
|
-
return
|
|
121
|
+
return v(e.entry, t.split("/").pop() || this.displayName);
|
|
105
122
|
});
|
|
106
123
|
}
|
|
107
124
|
listEntries(t, e) {
|
|
108
|
-
return
|
|
125
|
+
return l(this, null, function* () {
|
|
109
126
|
const r = yield this.call("list", {
|
|
110
127
|
path: t
|
|
111
128
|
}, e);
|
|
112
|
-
return (Array.isArray(r.entries) ? r.entries : []).map((
|
|
129
|
+
return (Array.isArray(r.entries) ? r.entries : []).map((s) => v(s, ""));
|
|
113
130
|
});
|
|
114
131
|
}
|
|
115
132
|
readFile(t) {
|
|
116
|
-
return
|
|
117
|
-
var
|
|
133
|
+
return l(this, null, function* () {
|
|
134
|
+
var o;
|
|
118
135
|
const e = yield this.call("read", {
|
|
119
136
|
path: t
|
|
120
|
-
}), r =
|
|
137
|
+
}), r = k((o = e.contentBase64) != null ? o : "");
|
|
121
138
|
return new Blob([r]);
|
|
122
139
|
});
|
|
123
140
|
}
|
|
124
|
-
|
|
125
|
-
return
|
|
126
|
-
|
|
127
|
-
|
|
141
|
+
createDirectory(t) {
|
|
142
|
+
return l(this, null, function* () {
|
|
143
|
+
this.requireCapability("fs-mutate"), yield this.call("mkdir", {
|
|
144
|
+
path: t
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
remove(r) {
|
|
149
|
+
return l(this, arguments, function* (t, e = {}) {
|
|
150
|
+
this.requireCapability("fs-mutate"), yield this.call("remove", {
|
|
151
|
+
path: t,
|
|
152
|
+
recursive: e.recursive === !0
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
move(t, e) {
|
|
157
|
+
return l(this, null, function* () {
|
|
158
|
+
this.requireCapability("fs-mutate"), yield this.call("move", {
|
|
159
|
+
from: t,
|
|
160
|
+
to: e
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
exec(t) {
|
|
165
|
+
return l(this, null, function* () {
|
|
166
|
+
var o, s, a;
|
|
167
|
+
this.requireCapability("sandbox-exec");
|
|
168
|
+
const e = (o = t.timeoutMs) != null ? o : x, r = yield this.call("exec", {
|
|
169
|
+
protocol: C,
|
|
170
|
+
cwd: t.cwd,
|
|
171
|
+
command: t.command,
|
|
172
|
+
argv: t.argv,
|
|
173
|
+
timeoutMs: e
|
|
174
|
+
}, t.signal, e + 15e3);
|
|
175
|
+
if (r.timedOut)
|
|
176
|
+
throw h("AbortError", "命令运行超时。");
|
|
177
|
+
return {
|
|
178
|
+
exitCode: typeof r.exitCode == "number" ? r.exitCode : 1,
|
|
179
|
+
stdout: (s = r.stdout) != null ? s : "",
|
|
180
|
+
stderr: (a = r.stderr) != null ? a : "",
|
|
181
|
+
cwd: typeof r.cwd == "string" ? r.cwd : void 0
|
|
182
|
+
};
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
runPython(t, e, r, o) {
|
|
186
|
+
return l(this, null, function* () {
|
|
187
|
+
var a, c;
|
|
188
|
+
const s = yield this.call("run_python", {
|
|
128
189
|
path: t,
|
|
129
190
|
args: e,
|
|
130
191
|
timeoutMs: r
|
|
131
|
-
},
|
|
192
|
+
}, o, r + 15e3);
|
|
132
193
|
return {
|
|
133
|
-
exitCode: typeof
|
|
134
|
-
timedOut:
|
|
135
|
-
stdout: (
|
|
136
|
-
stderr: (
|
|
194
|
+
exitCode: typeof s.exitCode == "number" ? s.exitCode : 1,
|
|
195
|
+
timedOut: s.timedOut === !0,
|
|
196
|
+
stdout: (a = s.stdout) != null ? a : "",
|
|
197
|
+
stderr: (c = s.stderr) != null ? c : ""
|
|
137
198
|
};
|
|
138
199
|
});
|
|
139
200
|
}
|
|
140
|
-
writeFile(
|
|
141
|
-
return
|
|
142
|
-
const
|
|
201
|
+
writeFile(o, s) {
|
|
202
|
+
return l(this, arguments, function* (t, e, r = {}) {
|
|
203
|
+
const a = [];
|
|
143
204
|
try {
|
|
144
|
-
for (var
|
|
145
|
-
const
|
|
146
|
-
A(r.signal),
|
|
205
|
+
for (var E = w(L(e)), U, F, I; U = !(F = yield E.next()).done; U = !1) {
|
|
206
|
+
const y = F.value;
|
|
207
|
+
A(r.signal), a.push(y);
|
|
147
208
|
}
|
|
148
209
|
} catch (F) {
|
|
149
210
|
I = [F];
|
|
150
211
|
} finally {
|
|
151
212
|
try {
|
|
152
|
-
|
|
213
|
+
U && (F = E.return) && (yield F.call(E));
|
|
153
214
|
} finally {
|
|
154
215
|
if (I)
|
|
155
216
|
throw I[0];
|
|
156
217
|
}
|
|
157
218
|
}
|
|
158
|
-
const
|
|
219
|
+
const c = a.reduce((y, g) => y + g.byteLength, 0), n = new Uint8Array(c);
|
|
159
220
|
let d = 0;
|
|
160
|
-
|
|
161
|
-
|
|
221
|
+
a.forEach((y) => {
|
|
222
|
+
n.set(y, d), d += y.byteLength;
|
|
162
223
|
}), yield this.call("write", {
|
|
163
224
|
path: t,
|
|
164
|
-
contentBase64:
|
|
225
|
+
contentBase64: B(n),
|
|
165
226
|
createDirectories: r.createDirectories === !0
|
|
166
227
|
}, r.signal);
|
|
167
228
|
});
|
|
168
229
|
}
|
|
169
230
|
}
|
|
170
231
|
export {
|
|
171
|
-
|
|
232
|
+
q as HostBridgeAdapter
|
|
172
233
|
};
|
|
@@ -1,161 +1,196 @@
|
|
|
1
|
-
var
|
|
2
|
-
var g = (
|
|
3
|
-
if (
|
|
4
|
-
return
|
|
5
|
-
throw Error("Symbol." +
|
|
1
|
+
var M = Object.defineProperty;
|
|
2
|
+
var g = (n, r) => {
|
|
3
|
+
if (r = Symbol[n])
|
|
4
|
+
return r;
|
|
5
|
+
throw Error("Symbol." + n + " is not defined");
|
|
6
6
|
};
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var i = (
|
|
7
|
+
var N = (n, r, e) => r in n ? M(n, r, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[r] = e;
|
|
8
|
+
var k = (n, r, e) => (N(n, typeof r != "symbol" ? r + "" : r, e), e);
|
|
9
|
+
var h = (n, r, e) => new Promise((o, t) => {
|
|
10
|
+
var i = (c) => {
|
|
11
11
|
try {
|
|
12
|
-
|
|
13
|
-
} catch (
|
|
14
|
-
|
|
12
|
+
s(e.next(c));
|
|
13
|
+
} catch (l) {
|
|
14
|
+
t(l);
|
|
15
15
|
}
|
|
16
|
-
},
|
|
16
|
+
}, d = (c) => {
|
|
17
17
|
try {
|
|
18
|
-
|
|
19
|
-
} catch (
|
|
20
|
-
|
|
18
|
+
s(e.throw(c));
|
|
19
|
+
} catch (l) {
|
|
20
|
+
t(l);
|
|
21
21
|
}
|
|
22
|
-
},
|
|
23
|
-
|
|
22
|
+
}, s = (c) => c.done ? o(c.value) : Promise.resolve(c.value).then(i, d);
|
|
23
|
+
s((e = e.apply(n, r)).next());
|
|
24
24
|
});
|
|
25
|
-
var
|
|
26
|
-
import { domError as
|
|
27
|
-
import { throwIfAborted as
|
|
28
|
-
import { splitPath as
|
|
29
|
-
function
|
|
25
|
+
var E = (n, r, e) => (r = n[g("asyncIterator")]) ? r.call(n) : (n = n[g("iterator")](), r = {}, e = (o, t) => (t = n[o]) && (r[o] = (i) => new Promise((d, s, c) => (i = t.call(n, i), c = i.done, Promise.resolve(i.value).then((l) => d({ value: l, done: c }), s)))), e("next"), e("return"), r);
|
|
26
|
+
import { domError as a, toChunks as b, isSameOrInside as I } from "./WorkspaceFileAdapter.mjs";
|
|
27
|
+
import { throwIfAborted as p } from "../errors.mjs";
|
|
28
|
+
import { splitPath as f } from "../security/pathPolicy.mjs";
|
|
29
|
+
function D() {
|
|
30
30
|
return {
|
|
31
31
|
kind: "directory",
|
|
32
32
|
children: /* @__PURE__ */ new Map()
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
35
|
class x {
|
|
36
|
-
constructor(
|
|
37
|
-
|
|
38
|
-
this.displayName =
|
|
36
|
+
constructor(r = {}, e = "memory-workspace") {
|
|
37
|
+
k(this, "root", D());
|
|
38
|
+
this.displayName = e, Object.entries(r).forEach(([o, t]) => this.seed(o, t));
|
|
39
39
|
}
|
|
40
40
|
/**
|
|
41
41
|
* 直接写入文件(含中间目录),用于构造测试数据或模拟外部修改。
|
|
42
42
|
* 以 `/` 结尾的路径表示创建空目录。
|
|
43
43
|
*/
|
|
44
|
-
seed(
|
|
45
|
-
const
|
|
46
|
-
if (
|
|
47
|
-
this.resolveDirectory(
|
|
44
|
+
seed(r, e = "", o = Date.now()) {
|
|
45
|
+
const t = r.split("/").filter(Boolean);
|
|
46
|
+
if (r.endsWith("/")) {
|
|
47
|
+
this.resolveDirectory(t, !0);
|
|
48
48
|
return;
|
|
49
49
|
}
|
|
50
|
-
const i =
|
|
50
|
+
const i = t.pop();
|
|
51
51
|
if (!i)
|
|
52
52
|
return;
|
|
53
|
-
const
|
|
54
|
-
|
|
53
|
+
const d = this.resolveDirectory(t, !0), s = typeof e == "string" ? new TextEncoder().encode(e) : e;
|
|
54
|
+
d.children.set(i, {
|
|
55
55
|
kind: "file",
|
|
56
|
-
data:
|
|
57
|
-
lastModified:
|
|
56
|
+
data: s,
|
|
57
|
+
lastModified: o
|
|
58
58
|
});
|
|
59
59
|
}
|
|
60
|
-
resolveDirectory(
|
|
61
|
-
let
|
|
62
|
-
for (const
|
|
63
|
-
let i =
|
|
60
|
+
resolveDirectory(r, e = !1) {
|
|
61
|
+
let o = this.root;
|
|
62
|
+
for (const t of r) {
|
|
63
|
+
let i = o.children.get(t);
|
|
64
64
|
if (!i) {
|
|
65
|
-
if (!
|
|
66
|
-
throw
|
|
67
|
-
i =
|
|
65
|
+
if (!e)
|
|
66
|
+
throw a("NotFoundError");
|
|
67
|
+
i = D(), o.children.set(t, i);
|
|
68
68
|
}
|
|
69
69
|
if (i.kind !== "directory")
|
|
70
|
-
throw
|
|
71
|
-
|
|
70
|
+
throw a("TypeMismatchError");
|
|
71
|
+
o = i;
|
|
72
72
|
}
|
|
73
|
-
return
|
|
73
|
+
return o;
|
|
74
74
|
}
|
|
75
|
-
resolveNode(
|
|
76
|
-
const
|
|
77
|
-
if (
|
|
75
|
+
resolveNode(r) {
|
|
76
|
+
const e = f(r), o = e.pop();
|
|
77
|
+
if (o === void 0)
|
|
78
78
|
return this.root;
|
|
79
|
-
const
|
|
80
|
-
if (!
|
|
81
|
-
throw
|
|
82
|
-
return
|
|
79
|
+
const t = this.resolveDirectory(e).children.get(o);
|
|
80
|
+
if (!t)
|
|
81
|
+
throw a("NotFoundError");
|
|
82
|
+
return t;
|
|
83
83
|
}
|
|
84
|
-
stat(
|
|
85
|
-
return
|
|
86
|
-
var
|
|
87
|
-
const
|
|
88
|
-
return
|
|
89
|
-
name:
|
|
84
|
+
stat(r) {
|
|
85
|
+
return h(this, null, function* () {
|
|
86
|
+
var t;
|
|
87
|
+
const e = this.resolveNode(r), o = (t = f(r).pop()) != null ? t : this.displayName;
|
|
88
|
+
return e.kind === "directory" ? {
|
|
89
|
+
name: o,
|
|
90
90
|
kind: "directory"
|
|
91
91
|
} : {
|
|
92
|
-
name:
|
|
92
|
+
name: o,
|
|
93
93
|
kind: "file",
|
|
94
|
-
size:
|
|
95
|
-
lastModified:
|
|
94
|
+
size: e.data.byteLength,
|
|
95
|
+
lastModified: e.lastModified
|
|
96
96
|
};
|
|
97
97
|
});
|
|
98
98
|
}
|
|
99
|
-
listEntries(
|
|
100
|
-
return
|
|
101
|
-
|
|
102
|
-
const
|
|
103
|
-
return Array.from(
|
|
104
|
-
name:
|
|
99
|
+
listEntries(r, e) {
|
|
100
|
+
return h(this, null, function* () {
|
|
101
|
+
p(e);
|
|
102
|
+
const o = this.resolveDirectory(f(r));
|
|
103
|
+
return Array.from(o.children.entries()).map(([t, i]) => i.kind === "directory" ? {
|
|
104
|
+
name: t,
|
|
105
105
|
kind: "directory"
|
|
106
106
|
} : {
|
|
107
|
-
name:
|
|
107
|
+
name: t,
|
|
108
108
|
kind: "file",
|
|
109
109
|
size: i.data.byteLength,
|
|
110
110
|
lastModified: i.lastModified
|
|
111
111
|
});
|
|
112
112
|
});
|
|
113
113
|
}
|
|
114
|
-
readFile(
|
|
115
|
-
return
|
|
116
|
-
const
|
|
117
|
-
if (
|
|
118
|
-
throw
|
|
119
|
-
return new Blob([
|
|
114
|
+
readFile(r) {
|
|
115
|
+
return h(this, null, function* () {
|
|
116
|
+
const e = this.resolveNode(r);
|
|
117
|
+
if (e.kind !== "file")
|
|
118
|
+
throw a("TypeMismatchError");
|
|
119
|
+
return new Blob([e.data]);
|
|
120
120
|
});
|
|
121
121
|
}
|
|
122
|
-
writeFile(
|
|
123
|
-
return
|
|
124
|
-
const
|
|
125
|
-
if (!
|
|
126
|
-
throw
|
|
127
|
-
const
|
|
128
|
-
if ((
|
|
129
|
-
throw
|
|
130
|
-
const
|
|
122
|
+
writeFile(t, i) {
|
|
123
|
+
return h(this, arguments, function* (r, e, o = {}) {
|
|
124
|
+
const d = f(r), s = d.pop();
|
|
125
|
+
if (!s)
|
|
126
|
+
throw a("TypeMismatchError");
|
|
127
|
+
const c = this.resolveDirectory(d, o.createDirectories), l = c.children.get(s);
|
|
128
|
+
if ((l == null ? void 0 : l.kind) === "directory")
|
|
129
|
+
throw a("TypeMismatchError");
|
|
130
|
+
const y = [];
|
|
131
131
|
let u = 0;
|
|
132
132
|
try {
|
|
133
|
-
for (var
|
|
134
|
-
const
|
|
135
|
-
|
|
133
|
+
for (var O = E(b(e)), W, j, C; W = !(j = yield O.next()).done; W = !1) {
|
|
134
|
+
const m = j.value;
|
|
135
|
+
p(o.signal), y.push(m), u += m.byteLength;
|
|
136
136
|
}
|
|
137
|
-
} catch (
|
|
138
|
-
|
|
137
|
+
} catch (j) {
|
|
138
|
+
C = [j];
|
|
139
139
|
} finally {
|
|
140
140
|
try {
|
|
141
|
-
|
|
141
|
+
W && (j = O.return) && (yield j.call(O));
|
|
142
142
|
} finally {
|
|
143
|
-
if (
|
|
144
|
-
throw
|
|
143
|
+
if (C)
|
|
144
|
+
throw C[0];
|
|
145
145
|
}
|
|
146
146
|
}
|
|
147
|
-
|
|
148
|
-
const
|
|
147
|
+
p(o.signal);
|
|
148
|
+
const v = new Uint8Array(u);
|
|
149
149
|
let w = 0;
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
}),
|
|
150
|
+
y.forEach((m) => {
|
|
151
|
+
v.set(m, w), w += m.byteLength;
|
|
152
|
+
}), c.children.set(s, {
|
|
153
153
|
kind: "file",
|
|
154
|
-
data:
|
|
154
|
+
data: v,
|
|
155
155
|
lastModified: Date.now()
|
|
156
156
|
});
|
|
157
157
|
});
|
|
158
158
|
}
|
|
159
|
+
createDirectory(r) {
|
|
160
|
+
return h(this, null, function* () {
|
|
161
|
+
this.resolveDirectory(f(r), !0);
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
remove(o) {
|
|
165
|
+
return h(this, arguments, function* (r, e = {}) {
|
|
166
|
+
const t = f(r), i = t.pop();
|
|
167
|
+
if (i === void 0)
|
|
168
|
+
throw a("InvalidModificationError");
|
|
169
|
+
const d = this.resolveDirectory(t), s = d.children.get(i);
|
|
170
|
+
if (!s)
|
|
171
|
+
throw a("NotFoundError");
|
|
172
|
+
if (s.kind === "directory" && s.children.size > 0 && !e.recursive)
|
|
173
|
+
throw a("InvalidModificationError");
|
|
174
|
+
d.children.delete(i);
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
move(r, e) {
|
|
178
|
+
return h(this, null, function* () {
|
|
179
|
+
const o = f(r), t = f(e), i = o.pop(), d = t.pop();
|
|
180
|
+
if (i === void 0 || d === void 0)
|
|
181
|
+
throw a("InvalidModificationError");
|
|
182
|
+
const s = this.resolveDirectory(o), c = s.children.get(i);
|
|
183
|
+
if (!c)
|
|
184
|
+
throw a("NotFoundError");
|
|
185
|
+
const l = this.resolveDirectory(t);
|
|
186
|
+
if (I(r, e))
|
|
187
|
+
throw a("InvalidModificationError");
|
|
188
|
+
const y = l.children.get(d);
|
|
189
|
+
if (y && (y.kind === "directory" || c.kind === "directory"))
|
|
190
|
+
throw a("InvalidModificationError");
|
|
191
|
+
s.children.delete(i), l.children.set(d, c);
|
|
192
|
+
});
|
|
193
|
+
}
|
|
159
194
|
}
|
|
160
195
|
export {
|
|
161
196
|
x as MemoryWorkspaceAdapter
|