@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.
Files changed (56) hide show
  1. package/README.md +105 -76
  2. package/dist/es/Config.mjs +63 -85
  3. package/dist/es/builtinTools/browserRuntime/BrowserCommandRunner.mjs +201 -0
  4. package/dist/es/builtinTools/browserRuntime/PythonRunner.mjs +356 -0
  5. package/dist/es/builtinTools/browserRuntime/WorkspaceBashFs.mjs +350 -0
  6. package/dist/es/builtinTools/browserRuntime/assets.mjs +9 -0
  7. package/dist/es/builtinTools/browserRuntime/loadBash.mjs +17 -0
  8. package/dist/es/builtinTools/browserRuntime/pyodideRunner.py.mjs +96 -0
  9. package/dist/es/builtinTools/browserRuntime/pyodideWorker.mjs +242 -0
  10. package/dist/es/builtinTools/command.mjs +56 -0
  11. package/dist/es/builtinTools/constants.mjs +10 -0
  12. package/dist/es/builtinTools/createBuiltinToolsPlugin.mjs +236 -0
  13. package/dist/es/builtinTools/overview.mjs +77 -0
  14. package/dist/es/builtinTools/paths.mjs +63 -0
  15. package/dist/es/builtinTools/schemas.mjs +216 -0
  16. package/dist/es/builtinTools/tools.mjs +471 -0
  17. package/dist/es/index.mjs +49 -48
  18. package/dist/es/localFiles/adapters/FileSystemAccessAdapter.mjs +193 -103
  19. package/dist/es/localFiles/adapters/HostBridgeAdapter.mjs +138 -77
  20. package/dist/es/localFiles/adapters/MemoryWorkspaceAdapter.mjs +132 -97
  21. package/dist/es/localFiles/adapters/WorkspaceFileAdapter.mjs +32 -28
  22. package/dist/es/localFiles/constants.mjs +1 -1
  23. package/dist/es/localFiles/host/connectHostBridge.mjs +22 -18
  24. package/dist/es/localFiles/host/protocol.mjs +6 -5
  25. package/dist/es/localFiles/schemas.mjs +45 -60
  26. package/dist/es/localFiles/validate.mjs +37 -37
  27. package/dist/es/localFiles/workspace/LocalWorkspace.mjs +71 -52
  28. package/dist/es/package.json.mjs +33 -27
  29. package/dist/lib/index.js +372 -9
  30. package/dist/src/Config.d.ts +2 -2
  31. package/dist/src/builtinTools/browserRuntime/BrowserCommandRunner.d.ts +26 -0
  32. package/dist/src/builtinTools/browserRuntime/PythonRunner.d.ts +67 -0
  33. package/dist/src/builtinTools/browserRuntime/WorkspaceBashFs.d.ts +51 -0
  34. package/dist/src/builtinTools/browserRuntime/assets.d.ts +13 -0
  35. package/dist/src/builtinTools/browserRuntime/loadBash.d.ts +3 -0
  36. package/dist/src/builtinTools/browserRuntime/pyodideWorker.d.ts +44 -0
  37. package/dist/src/builtinTools/command.d.ts +26 -0
  38. package/dist/src/builtinTools/constants.d.ts +17 -0
  39. package/dist/src/builtinTools/createBuiltinToolsPlugin.d.ts +11 -0
  40. package/dist/src/builtinTools/overview.d.ts +5 -0
  41. package/dist/src/builtinTools/paths.d.ts +15 -0
  42. package/dist/src/builtinTools/schemas.d.ts +3 -0
  43. package/dist/src/builtinTools/tools.d.ts +60 -0
  44. package/dist/src/localFiles/adapters/FileSystemAccessAdapter.d.ts +4 -1
  45. package/dist/src/localFiles/adapters/HostBridgeAdapter.d.ts +20 -1
  46. package/dist/src/localFiles/adapters/MemoryWorkspaceAdapter.d.ts +4 -1
  47. package/dist/src/localFiles/adapters/WorkspaceFileAdapter.d.ts +14 -0
  48. package/dist/src/localFiles/adapters/fsaTypes.d.ts +2 -0
  49. package/dist/src/localFiles/constants.d.ts +2 -1
  50. package/dist/src/localFiles/host/protocol.d.ts +13 -0
  51. package/dist/src/localFiles/index.d.ts +3 -2
  52. package/dist/src/localFiles/schemas.d.ts +2 -3
  53. package/dist/src/localFiles/types.d.ts +14 -1
  54. package/dist/src/localFiles/workspace/LocalWorkspace.d.ts +12 -0
  55. package/package.json +8 -2
  56. package/dist/es/localFiles/createLocalPythonPlugin.mjs +0 -196
@@ -1,172 +1,233 @@
1
- var L = Object.defineProperty;
2
- var h = Object.getOwnPropertySymbols;
3
- var N = Object.prototype.hasOwnProperty, x = Object.prototype.propertyIsEnumerable;
4
- var m = (n, t) => {
5
- if (t = Symbol[n])
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." + n + " is not defined");
7
+ throw Error("Symbol." + i + " is not defined");
8
8
  };
9
- var u = (n, t, e) => t in n ? L(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e, b = (n, t) => {
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
- N.call(t, e) && u(n, e, t[e]);
12
- if (h)
13
- for (var e of h(t))
14
- x.call(t, e) && u(n, e, t[e]);
15
- return n;
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 = (n, t, e) => (u(n, typeof t != "symbol" ? t + "" : t, e), e);
18
- var y = (n, t, e) => new Promise((r, s) => {
19
- var o = (i) => {
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
- a(e.next(i));
21
+ c(e.next(n));
22
22
  } catch (d) {
23
- s(d);
23
+ o(d);
24
24
  }
25
- }, c = (i) => {
25
+ }, a = (n) => {
26
26
  try {
27
- a(e.throw(i));
27
+ c(e.throw(n));
28
28
  } catch (d) {
29
- s(d);
29
+ o(d);
30
30
  }
31
- }, a = (i) => i.done ? r(i.value) : Promise.resolve(i.value).then(o, c);
32
- a((e = e.apply(n, t)).next());
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 = (n, t, e) => (t = n[m("asyncIterator")]) ? t.call(n) : (n = n[m("iterator")](), t = {}, e = (r, s) => (s = n[r]) && (t[r] = (o) => new Promise((c, a, i) => (o = s.call(n, o), i = o.done, Promise.resolve(o.value).then((d) => c({ value: d, done: i }), a)))), e("next"), e("return"), t);
35
- import { domError as f, toChunks as B } from "./WorkspaceFileAdapter.mjs";
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 k = 3e4;
39
- function v(n) {
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 < n.length; r += 32768)
42
- t += String.fromCharCode(...n.subarray(r, r + 32768));
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 O(n) {
46
- const t = atob(n), e = new Uint8Array(t.length);
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 E(n, t) {
52
- const e = n && typeof n == "object" ? n : {}, r = e.kind === "directory" ? "directory" : "file", s = {
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" && (s.size = e.size), typeof e.lastModified == "number" && (s.lastModified = e.lastModified), s;
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 S {
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(f(t.name || "NotAllowedError", t.message || t.name || "NotAllowedError"));
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, s = k) {
92
+ call(t, e, r, o = x) {
76
93
  A(r);
77
- const o = `host-${++this.seq}`;
78
- return new Promise((c, a) => {
79
- const i = setTimeout(() => {
80
- this.pending.delete(o), a(f("AbortError"));
81
- }, s), d = () => {
82
- clearTimeout(i), this.pending.delete(o), a(f("AbortError"));
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(o, {
87
- resolve: (C) => {
88
- r == null || r.removeEventListener("abort", d), c(C);
103
+ }), this.pending.set(s, {
104
+ resolve: (E) => {
105
+ r == null || r.removeEventListener("abort", d), a(E);
89
106
  },
90
- reject: a,
91
- timer: i
107
+ reject: c,
108
+ timer: n
92
109
  }), this.view.postMessage(b({
93
110
  channel: M,
94
- id: o,
111
+ id: s,
95
112
  op: t
96
113
  }, e));
97
114
  });
98
115
  }
99
116
  stat(t) {
100
- return y(this, null, function* () {
117
+ return l(this, null, function* () {
101
118
  const e = yield this.call("stat", {
102
119
  path: t
103
120
  });
104
- return E(e.entry, t.split("/").pop() || this.displayName);
121
+ return v(e.entry, t.split("/").pop() || this.displayName);
105
122
  });
106
123
  }
107
124
  listEntries(t, e) {
108
- return y(this, null, function* () {
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((o) => E(o, ""));
129
+ return (Array.isArray(r.entries) ? r.entries : []).map((s) => v(s, ""));
113
130
  });
114
131
  }
115
132
  readFile(t) {
116
- return y(this, null, function* () {
117
- var s;
133
+ return l(this, null, function* () {
134
+ var o;
118
135
  const e = yield this.call("read", {
119
136
  path: t
120
- }), r = O((s = e.contentBase64) != null ? s : "");
137
+ }), r = k((o = e.contentBase64) != null ? o : "");
121
138
  return new Blob([r]);
122
139
  });
123
140
  }
124
- runPython(t, e, r, s) {
125
- return y(this, null, function* () {
126
- var c, a;
127
- const o = yield this.call("run_python", {
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
- }, s, r + 15e3);
192
+ }, o, r + 15e3);
132
193
  return {
133
- exitCode: typeof o.exitCode == "number" ? o.exitCode : 1,
134
- timedOut: o.timedOut === !0,
135
- stdout: (c = o.stdout) != null ? c : "",
136
- stderr: (a = o.stderr) != null ? a : ""
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(s, o) {
141
- return y(this, arguments, function* (t, e, r = {}) {
142
- const c = [];
201
+ writeFile(o, s) {
202
+ return l(this, arguments, function* (t, e, r = {}) {
203
+ const a = [];
143
204
  try {
144
- for (var C = w(B(e)), D, F, I; D = !(F = yield C.next()).done; D = !1) {
145
- const l = F.value;
146
- A(r.signal), c.push(l);
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
- D && (F = C.return) && (yield F.call(C));
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 a = c.reduce((l, T) => l + T.byteLength, 0), i = new Uint8Array(a);
219
+ const c = a.reduce((y, g) => y + g.byteLength, 0), n = new Uint8Array(c);
159
220
  let d = 0;
160
- c.forEach((l) => {
161
- i.set(l, d), d += l.byteLength;
221
+ a.forEach((y) => {
222
+ n.set(y, d), d += y.byteLength;
162
223
  }), yield this.call("write", {
163
224
  path: t,
164
- contentBase64: v(i),
225
+ contentBase64: B(n),
165
226
  createDirectories: r.createDirectories === !0
166
227
  }, r.signal);
167
228
  });
168
229
  }
169
230
  }
170
231
  export {
171
- S as HostBridgeAdapter
232
+ q as HostBridgeAdapter
172
233
  };
@@ -1,161 +1,196 @@
1
- var D = Object.defineProperty;
2
- var g = (s, e) => {
3
- if (e = Symbol[s])
4
- return e;
5
- throw Error("Symbol." + s + " is not defined");
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 b = (s, e, r) => e in s ? D(s, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : s[e] = r;
8
- var E = (s, e, r) => (b(s, typeof e != "symbol" ? e + "" : e, r), r);
9
- var f = (s, e, r) => new Promise((t, o) => {
10
- var i = (n) => {
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
- d(r.next(n));
13
- } catch (c) {
14
- o(c);
12
+ s(e.next(c));
13
+ } catch (l) {
14
+ t(l);
15
15
  }
16
- }, a = (n) => {
16
+ }, d = (c) => {
17
17
  try {
18
- d(r.throw(n));
19
- } catch (c) {
20
- o(c);
18
+ s(e.throw(c));
19
+ } catch (l) {
20
+ t(l);
21
21
  }
22
- }, d = (n) => n.done ? t(n.value) : Promise.resolve(n.value).then(i, a);
23
- d((r = r.apply(s, e)).next());
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 M = (s, e, r) => (e = s[g("asyncIterator")]) ? e.call(s) : (s = s[g("iterator")](), e = {}, r = (t, o) => (o = s[t]) && (e[t] = (i) => new Promise((a, d, n) => (i = o.call(s, i), n = i.done, Promise.resolve(i.value).then((c) => a({ value: c, done: n }), d)))), r("next"), r("return"), e);
26
- import { domError as l, toChunks as N } from "./WorkspaceFileAdapter.mjs";
27
- import { throwIfAborted as m } from "../errors.mjs";
28
- import { splitPath as y } from "../security/pathPolicy.mjs";
29
- function v() {
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(e = {}, r = "memory-workspace") {
37
- E(this, "root", v());
38
- this.displayName = r, Object.entries(e).forEach(([t, o]) => this.seed(t, o));
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(e, r = "", t = Date.now()) {
45
- const o = e.split("/").filter(Boolean);
46
- if (e.endsWith("/")) {
47
- this.resolveDirectory(o, !0);
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 = o.pop();
50
+ const i = t.pop();
51
51
  if (!i)
52
52
  return;
53
- const a = this.resolveDirectory(o, !0), d = typeof r == "string" ? new TextEncoder().encode(r) : r;
54
- a.children.set(i, {
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: d,
57
- lastModified: t
56
+ data: s,
57
+ lastModified: o
58
58
  });
59
59
  }
60
- resolveDirectory(e, r = !1) {
61
- let t = this.root;
62
- for (const o of e) {
63
- let i = t.children.get(o);
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 (!r)
66
- throw l("NotFoundError");
67
- i = v(), t.children.set(o, 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 l("TypeMismatchError");
71
- t = i;
70
+ throw a("TypeMismatchError");
71
+ o = i;
72
72
  }
73
- return t;
73
+ return o;
74
74
  }
75
- resolveNode(e) {
76
- const r = y(e), t = r.pop();
77
- if (t === void 0)
75
+ resolveNode(r) {
76
+ const e = f(r), o = e.pop();
77
+ if (o === void 0)
78
78
  return this.root;
79
- const o = this.resolveDirectory(r).children.get(t);
80
- if (!o)
81
- throw l("NotFoundError");
82
- return o;
79
+ const t = this.resolveDirectory(e).children.get(o);
80
+ if (!t)
81
+ throw a("NotFoundError");
82
+ return t;
83
83
  }
84
- stat(e) {
85
- return f(this, null, function* () {
86
- var o;
87
- const r = this.resolveNode(e), t = (o = y(e).pop()) != null ? o : this.displayName;
88
- return r.kind === "directory" ? {
89
- name: t,
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: t,
92
+ name: o,
93
93
  kind: "file",
94
- size: r.data.byteLength,
95
- lastModified: r.lastModified
94
+ size: e.data.byteLength,
95
+ lastModified: e.lastModified
96
96
  };
97
97
  });
98
98
  }
99
- listEntries(e, r) {
100
- return f(this, null, function* () {
101
- m(r);
102
- const t = this.resolveDirectory(y(e));
103
- return Array.from(t.children.entries()).map(([o, i]) => i.kind === "directory" ? {
104
- name: o,
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: o,
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(e) {
115
- return f(this, null, function* () {
116
- const r = this.resolveNode(e);
117
- if (r.kind !== "file")
118
- throw l("TypeMismatchError");
119
- return new Blob([r.data]);
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(o, i) {
123
- return f(this, arguments, function* (e, r, t = {}) {
124
- const a = y(e), d = a.pop();
125
- if (!d)
126
- throw l("TypeMismatchError");
127
- const n = this.resolveDirectory(a, t.createDirectories), c = n.children.get(d);
128
- if ((c == null ? void 0 : c.kind) === "directory")
129
- throw l("TypeMismatchError");
130
- const p = [];
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 W = M(N(r)), j, C, I; j = !(C = yield W.next()).done; j = !1) {
134
- const h = C.value;
135
- m(t.signal), p.push(h), u += h.byteLength;
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 (C) {
138
- I = [C];
137
+ } catch (j) {
138
+ C = [j];
139
139
  } finally {
140
140
  try {
141
- j && (C = W.return) && (yield C.call(W));
141
+ W && (j = O.return) && (yield j.call(O));
142
142
  } finally {
143
- if (I)
144
- throw I[0];
143
+ if (C)
144
+ throw C[0];
145
145
  }
146
146
  }
147
- m(t.signal);
148
- const k = new Uint8Array(u);
147
+ p(o.signal);
148
+ const v = new Uint8Array(u);
149
149
  let w = 0;
150
- p.forEach((h) => {
151
- k.set(h, w), w += h.byteLength;
152
- }), n.children.set(d, {
150
+ y.forEach((m) => {
151
+ v.set(m, w), w += m.byteLength;
152
+ }), c.children.set(s, {
153
153
  kind: "file",
154
- data: k,
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