@ai-switch/tauri-plugin-runtime 0.1.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/LICENSE +21 -0
- package/README.md +327 -0
- package/THIRD_PARTY_NOTICES.md +210 -0
- package/dist/bridge/handshake.d.ts +11 -0
- package/dist/bridge/json-codec.d.ts +4 -0
- package/dist/bridge/rpc-peer.d.ts +7 -0
- package/dist/bridge/rpc-types.d.ts +20 -0
- package/dist/chunk-CFQSUF5W.js +1794 -0
- package/dist/chunk-JSBRDJBE.js +30 -0
- package/dist/chunk-K5YWIJN6.js +389 -0
- package/dist/chunk-PW7XHHWG.js +403 -0
- package/dist/chunk-RKQEK7DY.js +13879 -0
- package/dist/chunk-WT62GTMC.js +18 -0
- package/dist/chunk-YI6NQ6WR.js +513 -0
- package/dist/host/event-router.d.ts +19 -0
- package/dist/host/file-handles.d.ts +15 -0
- package/dist/host/host.d.ts +2 -0
- package/dist/host/index.d.ts +4 -0
- package/dist/host/index.js +791 -0
- package/dist/host/policy.d.ts +7 -0
- package/dist/host/requests.d.ts +13 -0
- package/dist/host/types.d.ts +19 -0
- package/dist/host/view.d.ts +18 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +9 -0
- package/dist/node/buffer.d.ts +7 -0
- package/dist/node/buffer.js +8 -0
- package/dist/node/events.d.ts +12 -0
- package/dist/node/events.js +458 -0
- package/dist/node/fs/backend.d.ts +8 -0
- package/dist/node/fs/callback-types.d.ts +43 -0
- package/dist/node/fs/callbacks.d.ts +3 -0
- package/dist/node/fs/client.d.ts +3 -0
- package/dist/node/fs/errors.d.ts +5 -0
- package/dist/node/fs/lifecycle.d.ts +11 -0
- package/dist/node/fs/options.d.ts +7 -0
- package/dist/node/fs/promises.d.ts +33 -0
- package/dist/node/fs/promises.js +30 -0
- package/dist/node/fs/transfer.d.ts +7 -0
- package/dist/node/fs/types.d.ts +86 -0
- package/dist/node/fs.d.ts +36 -0
- package/dist/node/fs.js +92 -0
- package/dist/node/path.d.ts +20 -0
- package/dist/node/path.js +434 -0
- package/dist/plugin/client.d.ts +4 -0
- package/dist/plugin/connection.d.ts +6 -0
- package/dist/plugin/errors.d.ts +3 -0
- package/dist/plugin/index.d.ts +6 -0
- package/dist/plugin/index.js +12 -0
- package/dist/plugin/types.d.ts +28 -0
- package/dist/protocol/capabilities.d.ts +8 -0
- package/dist/protocol/errors.d.ts +14 -0
- package/dist/protocol/generated/capabilities.generated.d.ts +56 -0
- package/dist/protocol/generated/fs.generated.d.ts +178 -0
- package/dist/protocol/generated/host-event.generated.d.ts +17 -0
- package/dist/protocol/generated/manifest.generated.d.ts +64 -0
- package/dist/protocol/generated/session.generated.d.ts +93 -0
- package/dist/protocol/generated/types.generated.d.ts +6 -0
- package/dist/protocol/generated/validators.generated.d.mts +24 -0
- package/dist/protocol/generated/wire.generated.d.ts +63 -0
- package/dist/protocol/index.d.ts +18 -0
- package/dist/protocol/index.js +746 -0
- package/dist/protocol/json-safety.d.ts +3 -0
- package/dist/protocol/limits.d.ts +11 -0
- package/dist/protocol/manifest.d.ts +5 -0
- package/dist/protocol/path-policy.d.ts +2 -0
- package/dist/protocol/schema/capabilities.schema.json +301 -0
- package/dist/protocol/schema/fs.schema.json +900 -0
- package/dist/protocol/schema/host-event.schema.json +116 -0
- package/dist/protocol/schema/manifest.schema.json +60 -0
- package/dist/protocol/schema/session.schema.json +145 -0
- package/dist/protocol/schema/wire.schema.json +358 -0
- package/dist/protocol/session.d.ts +3 -0
- package/dist/protocol/types.d.ts +27 -0
- package/dist/protocol/validation.d.ts +2 -0
- package/dist/protocol/wire.d.ts +16 -0
- package/package.json +95 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function checkedTimeout(value: number): number;
|
|
2
|
+
export declare function checkedOrigin(origin: string): string;
|
|
3
|
+
export declare function requireAssetOrigin(assetUrl: string, origins: readonly string[]): void;
|
|
4
|
+
export declare function randomId(prefix?: string): string;
|
|
5
|
+
export declare function randomNonce(): string;
|
|
6
|
+
/** Bound a trusted control operation even if its physical transport cannot abort. */
|
|
7
|
+
export declare function bounded<T>(operation: () => Promise<T>, timeoutMs: number): Promise<T>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { JsonObject, JsonValue } from "../protocol/types.js";
|
|
2
|
+
import type { HostTransport } from "../protocol/wire.js";
|
|
3
|
+
type Operation = "capability.call" | "subscription.open";
|
|
4
|
+
export interface SessionRequests {
|
|
5
|
+
run(operation: Operation, args: JsonObject, signal?: AbortSignal, onLate?: (result: JsonValue) => void | Promise<void>): Promise<JsonValue>;
|
|
6
|
+
abortAll(reason: Error): void;
|
|
7
|
+
}
|
|
8
|
+
export declare function createSessionRequests(options: {
|
|
9
|
+
transport: HostTransport;
|
|
10
|
+
sessionId: string;
|
|
11
|
+
timeoutMs: number;
|
|
12
|
+
}): SessionRequests;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { HostTransport } from "../protocol/wire.js";
|
|
2
|
+
export interface PluginView {
|
|
3
|
+
readonly pluginId: string;
|
|
4
|
+
readonly element: HTMLIFrameElement;
|
|
5
|
+
dispose(): Promise<void>;
|
|
6
|
+
}
|
|
7
|
+
export interface PluginHost {
|
|
8
|
+
mount(options: {
|
|
9
|
+
pluginId: string;
|
|
10
|
+
container: HTMLElement;
|
|
11
|
+
}): Promise<PluginView>;
|
|
12
|
+
dispose(): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
export interface PluginHostOptions {
|
|
15
|
+
transport: HostTransport;
|
|
16
|
+
allowedAssetOrigins?: string[];
|
|
17
|
+
handshakeTimeoutMs?: number;
|
|
18
|
+
requestTimeoutMs?: number;
|
|
19
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { HostEvent, SessionDescriptor } from "../protocol/generated/types.generated.js";
|
|
2
|
+
import type { HostTransport } from "../protocol/wire.js";
|
|
3
|
+
import type { PluginView } from "./types.js";
|
|
4
|
+
export interface ManagedView {
|
|
5
|
+
view: PluginView;
|
|
6
|
+
ready: Promise<PluginView>;
|
|
7
|
+
accept(event: HostEvent): void;
|
|
8
|
+
dispose(reason?: Error): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare function createManagedView(options: {
|
|
11
|
+
descriptor: SessionDescriptor;
|
|
12
|
+
container: HTMLElement;
|
|
13
|
+
transport: HostTransport;
|
|
14
|
+
handshakeTimeoutMs: number;
|
|
15
|
+
requestTimeoutMs: number;
|
|
16
|
+
closeSession(): Promise<void>;
|
|
17
|
+
onDisposed(): void;
|
|
18
|
+
}): ManagedView;
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type EventName = string | symbol;
|
|
2
|
+
export type EventListener = (this: EventEmitter, ...args: any[]) => void;
|
|
3
|
+
/** Intentionally exposes only the portable five-method listener/emit subset. */
|
|
4
|
+
export declare class EventEmitter {
|
|
5
|
+
#private;
|
|
6
|
+
on(event: EventName, listener: EventListener): this;
|
|
7
|
+
once(event: EventName, listener: EventListener): this;
|
|
8
|
+
off(event: EventName, listener: EventListener): this;
|
|
9
|
+
emit(event: EventName, ...args: unknown[]): boolean;
|
|
10
|
+
removeAllListeners(event?: EventName): this;
|
|
11
|
+
}
|
|
12
|
+
export default EventEmitter;
|
|
@@ -0,0 +1,458 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__commonJS,
|
|
3
|
+
__toESM
|
|
4
|
+
} from "../chunk-JSBRDJBE.js";
|
|
5
|
+
|
|
6
|
+
// ../../node_modules/.pnpm/events@3.3.0/node_modules/events/events.js
|
|
7
|
+
var require_events = __commonJS({
|
|
8
|
+
"../../node_modules/.pnpm/events@3.3.0/node_modules/events/events.js"(exports, module) {
|
|
9
|
+
"use strict";
|
|
10
|
+
var R = typeof Reflect === "object" ? Reflect : null;
|
|
11
|
+
var ReflectApply = R && typeof R.apply === "function" ? R.apply : function ReflectApply2(target, receiver, args) {
|
|
12
|
+
return Function.prototype.apply.call(target, receiver, args);
|
|
13
|
+
};
|
|
14
|
+
var ReflectOwnKeys;
|
|
15
|
+
if (R && typeof R.ownKeys === "function") {
|
|
16
|
+
ReflectOwnKeys = R.ownKeys;
|
|
17
|
+
} else if (Object.getOwnPropertySymbols) {
|
|
18
|
+
ReflectOwnKeys = function ReflectOwnKeys2(target) {
|
|
19
|
+
return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target));
|
|
20
|
+
};
|
|
21
|
+
} else {
|
|
22
|
+
ReflectOwnKeys = function ReflectOwnKeys2(target) {
|
|
23
|
+
return Object.getOwnPropertyNames(target);
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function ProcessEmitWarning(warning) {
|
|
27
|
+
if (console && console.warn) console.warn(warning);
|
|
28
|
+
}
|
|
29
|
+
var NumberIsNaN = Number.isNaN || function NumberIsNaN2(value) {
|
|
30
|
+
return value !== value;
|
|
31
|
+
};
|
|
32
|
+
function EventEmitter2() {
|
|
33
|
+
EventEmitter2.init.call(this);
|
|
34
|
+
}
|
|
35
|
+
module.exports = EventEmitter2;
|
|
36
|
+
module.exports.once = once;
|
|
37
|
+
EventEmitter2.EventEmitter = EventEmitter2;
|
|
38
|
+
EventEmitter2.prototype._events = void 0;
|
|
39
|
+
EventEmitter2.prototype._eventsCount = 0;
|
|
40
|
+
EventEmitter2.prototype._maxListeners = void 0;
|
|
41
|
+
var defaultMaxListeners = 10;
|
|
42
|
+
function checkListener2(listener) {
|
|
43
|
+
if (typeof listener !== "function") {
|
|
44
|
+
throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
Object.defineProperty(EventEmitter2, "defaultMaxListeners", {
|
|
48
|
+
enumerable: true,
|
|
49
|
+
get: function() {
|
|
50
|
+
return defaultMaxListeners;
|
|
51
|
+
},
|
|
52
|
+
set: function(arg) {
|
|
53
|
+
if (typeof arg !== "number" || arg < 0 || NumberIsNaN(arg)) {
|
|
54
|
+
throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + ".");
|
|
55
|
+
}
|
|
56
|
+
defaultMaxListeners = arg;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
EventEmitter2.init = function() {
|
|
60
|
+
if (this._events === void 0 || this._events === Object.getPrototypeOf(this)._events) {
|
|
61
|
+
this._events = /* @__PURE__ */ Object.create(null);
|
|
62
|
+
this._eventsCount = 0;
|
|
63
|
+
}
|
|
64
|
+
this._maxListeners = this._maxListeners || void 0;
|
|
65
|
+
};
|
|
66
|
+
EventEmitter2.prototype.setMaxListeners = function setMaxListeners(n) {
|
|
67
|
+
if (typeof n !== "number" || n < 0 || NumberIsNaN(n)) {
|
|
68
|
+
throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + ".");
|
|
69
|
+
}
|
|
70
|
+
this._maxListeners = n;
|
|
71
|
+
return this;
|
|
72
|
+
};
|
|
73
|
+
function _getMaxListeners(that) {
|
|
74
|
+
if (that._maxListeners === void 0)
|
|
75
|
+
return EventEmitter2.defaultMaxListeners;
|
|
76
|
+
return that._maxListeners;
|
|
77
|
+
}
|
|
78
|
+
EventEmitter2.prototype.getMaxListeners = function getMaxListeners() {
|
|
79
|
+
return _getMaxListeners(this);
|
|
80
|
+
};
|
|
81
|
+
EventEmitter2.prototype.emit = function emit(type) {
|
|
82
|
+
var args = [];
|
|
83
|
+
for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);
|
|
84
|
+
var doError = type === "error";
|
|
85
|
+
var events = this._events;
|
|
86
|
+
if (events !== void 0)
|
|
87
|
+
doError = doError && events.error === void 0;
|
|
88
|
+
else if (!doError)
|
|
89
|
+
return false;
|
|
90
|
+
if (doError) {
|
|
91
|
+
var er;
|
|
92
|
+
if (args.length > 0)
|
|
93
|
+
er = args[0];
|
|
94
|
+
if (er instanceof Error) {
|
|
95
|
+
throw er;
|
|
96
|
+
}
|
|
97
|
+
var err = new Error("Unhandled error." + (er ? " (" + er.message + ")" : ""));
|
|
98
|
+
err.context = er;
|
|
99
|
+
throw err;
|
|
100
|
+
}
|
|
101
|
+
var handler = events[type];
|
|
102
|
+
if (handler === void 0)
|
|
103
|
+
return false;
|
|
104
|
+
if (typeof handler === "function") {
|
|
105
|
+
ReflectApply(handler, this, args);
|
|
106
|
+
} else {
|
|
107
|
+
var len = handler.length;
|
|
108
|
+
var listeners = arrayClone(handler, len);
|
|
109
|
+
for (var i = 0; i < len; ++i)
|
|
110
|
+
ReflectApply(listeners[i], this, args);
|
|
111
|
+
}
|
|
112
|
+
return true;
|
|
113
|
+
};
|
|
114
|
+
function _addListener(target, type, listener, prepend) {
|
|
115
|
+
var m;
|
|
116
|
+
var events;
|
|
117
|
+
var existing;
|
|
118
|
+
checkListener2(listener);
|
|
119
|
+
events = target._events;
|
|
120
|
+
if (events === void 0) {
|
|
121
|
+
events = target._events = /* @__PURE__ */ Object.create(null);
|
|
122
|
+
target._eventsCount = 0;
|
|
123
|
+
} else {
|
|
124
|
+
if (events.newListener !== void 0) {
|
|
125
|
+
target.emit(
|
|
126
|
+
"newListener",
|
|
127
|
+
type,
|
|
128
|
+
listener.listener ? listener.listener : listener
|
|
129
|
+
);
|
|
130
|
+
events = target._events;
|
|
131
|
+
}
|
|
132
|
+
existing = events[type];
|
|
133
|
+
}
|
|
134
|
+
if (existing === void 0) {
|
|
135
|
+
existing = events[type] = listener;
|
|
136
|
+
++target._eventsCount;
|
|
137
|
+
} else {
|
|
138
|
+
if (typeof existing === "function") {
|
|
139
|
+
existing = events[type] = prepend ? [listener, existing] : [existing, listener];
|
|
140
|
+
} else if (prepend) {
|
|
141
|
+
existing.unshift(listener);
|
|
142
|
+
} else {
|
|
143
|
+
existing.push(listener);
|
|
144
|
+
}
|
|
145
|
+
m = _getMaxListeners(target);
|
|
146
|
+
if (m > 0 && existing.length > m && !existing.warned) {
|
|
147
|
+
existing.warned = true;
|
|
148
|
+
var w = new Error("Possible EventEmitter memory leak detected. " + existing.length + " " + String(type) + " listeners added. Use emitter.setMaxListeners() to increase limit");
|
|
149
|
+
w.name = "MaxListenersExceededWarning";
|
|
150
|
+
w.emitter = target;
|
|
151
|
+
w.type = type;
|
|
152
|
+
w.count = existing.length;
|
|
153
|
+
ProcessEmitWarning(w);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return target;
|
|
157
|
+
}
|
|
158
|
+
EventEmitter2.prototype.addListener = function addListener(type, listener) {
|
|
159
|
+
return _addListener(this, type, listener, false);
|
|
160
|
+
};
|
|
161
|
+
EventEmitter2.prototype.on = EventEmitter2.prototype.addListener;
|
|
162
|
+
EventEmitter2.prototype.prependListener = function prependListener(type, listener) {
|
|
163
|
+
return _addListener(this, type, listener, true);
|
|
164
|
+
};
|
|
165
|
+
function onceWrapper() {
|
|
166
|
+
if (!this.fired) {
|
|
167
|
+
this.target.removeListener(this.type, this.wrapFn);
|
|
168
|
+
this.fired = true;
|
|
169
|
+
if (arguments.length === 0)
|
|
170
|
+
return this.listener.call(this.target);
|
|
171
|
+
return this.listener.apply(this.target, arguments);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
function _onceWrap(target, type, listener) {
|
|
175
|
+
var state = { fired: false, wrapFn: void 0, target, type, listener };
|
|
176
|
+
var wrapped = onceWrapper.bind(state);
|
|
177
|
+
wrapped.listener = listener;
|
|
178
|
+
state.wrapFn = wrapped;
|
|
179
|
+
return wrapped;
|
|
180
|
+
}
|
|
181
|
+
EventEmitter2.prototype.once = function once2(type, listener) {
|
|
182
|
+
checkListener2(listener);
|
|
183
|
+
this.on(type, _onceWrap(this, type, listener));
|
|
184
|
+
return this;
|
|
185
|
+
};
|
|
186
|
+
EventEmitter2.prototype.prependOnceListener = function prependOnceListener(type, listener) {
|
|
187
|
+
checkListener2(listener);
|
|
188
|
+
this.prependListener(type, _onceWrap(this, type, listener));
|
|
189
|
+
return this;
|
|
190
|
+
};
|
|
191
|
+
EventEmitter2.prototype.removeListener = function removeListener(type, listener) {
|
|
192
|
+
var list, events, position, i, originalListener;
|
|
193
|
+
checkListener2(listener);
|
|
194
|
+
events = this._events;
|
|
195
|
+
if (events === void 0)
|
|
196
|
+
return this;
|
|
197
|
+
list = events[type];
|
|
198
|
+
if (list === void 0)
|
|
199
|
+
return this;
|
|
200
|
+
if (list === listener || list.listener === listener) {
|
|
201
|
+
if (--this._eventsCount === 0)
|
|
202
|
+
this._events = /* @__PURE__ */ Object.create(null);
|
|
203
|
+
else {
|
|
204
|
+
delete events[type];
|
|
205
|
+
if (events.removeListener)
|
|
206
|
+
this.emit("removeListener", type, list.listener || listener);
|
|
207
|
+
}
|
|
208
|
+
} else if (typeof list !== "function") {
|
|
209
|
+
position = -1;
|
|
210
|
+
for (i = list.length - 1; i >= 0; i--) {
|
|
211
|
+
if (list[i] === listener || list[i].listener === listener) {
|
|
212
|
+
originalListener = list[i].listener;
|
|
213
|
+
position = i;
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
if (position < 0)
|
|
218
|
+
return this;
|
|
219
|
+
if (position === 0)
|
|
220
|
+
list.shift();
|
|
221
|
+
else {
|
|
222
|
+
spliceOne(list, position);
|
|
223
|
+
}
|
|
224
|
+
if (list.length === 1)
|
|
225
|
+
events[type] = list[0];
|
|
226
|
+
if (events.removeListener !== void 0)
|
|
227
|
+
this.emit("removeListener", type, originalListener || listener);
|
|
228
|
+
}
|
|
229
|
+
return this;
|
|
230
|
+
};
|
|
231
|
+
EventEmitter2.prototype.off = EventEmitter2.prototype.removeListener;
|
|
232
|
+
EventEmitter2.prototype.removeAllListeners = function removeAllListeners(type) {
|
|
233
|
+
var listeners, events, i;
|
|
234
|
+
events = this._events;
|
|
235
|
+
if (events === void 0)
|
|
236
|
+
return this;
|
|
237
|
+
if (events.removeListener === void 0) {
|
|
238
|
+
if (arguments.length === 0) {
|
|
239
|
+
this._events = /* @__PURE__ */ Object.create(null);
|
|
240
|
+
this._eventsCount = 0;
|
|
241
|
+
} else if (events[type] !== void 0) {
|
|
242
|
+
if (--this._eventsCount === 0)
|
|
243
|
+
this._events = /* @__PURE__ */ Object.create(null);
|
|
244
|
+
else
|
|
245
|
+
delete events[type];
|
|
246
|
+
}
|
|
247
|
+
return this;
|
|
248
|
+
}
|
|
249
|
+
if (arguments.length === 0) {
|
|
250
|
+
var keys = Object.keys(events);
|
|
251
|
+
var key;
|
|
252
|
+
for (i = 0; i < keys.length; ++i) {
|
|
253
|
+
key = keys[i];
|
|
254
|
+
if (key === "removeListener") continue;
|
|
255
|
+
this.removeAllListeners(key);
|
|
256
|
+
}
|
|
257
|
+
this.removeAllListeners("removeListener");
|
|
258
|
+
this._events = /* @__PURE__ */ Object.create(null);
|
|
259
|
+
this._eventsCount = 0;
|
|
260
|
+
return this;
|
|
261
|
+
}
|
|
262
|
+
listeners = events[type];
|
|
263
|
+
if (typeof listeners === "function") {
|
|
264
|
+
this.removeListener(type, listeners);
|
|
265
|
+
} else if (listeners !== void 0) {
|
|
266
|
+
for (i = listeners.length - 1; i >= 0; i--) {
|
|
267
|
+
this.removeListener(type, listeners[i]);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return this;
|
|
271
|
+
};
|
|
272
|
+
function _listeners(target, type, unwrap) {
|
|
273
|
+
var events = target._events;
|
|
274
|
+
if (events === void 0)
|
|
275
|
+
return [];
|
|
276
|
+
var evlistener = events[type];
|
|
277
|
+
if (evlistener === void 0)
|
|
278
|
+
return [];
|
|
279
|
+
if (typeof evlistener === "function")
|
|
280
|
+
return unwrap ? [evlistener.listener || evlistener] : [evlistener];
|
|
281
|
+
return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);
|
|
282
|
+
}
|
|
283
|
+
EventEmitter2.prototype.listeners = function listeners(type) {
|
|
284
|
+
return _listeners(this, type, true);
|
|
285
|
+
};
|
|
286
|
+
EventEmitter2.prototype.rawListeners = function rawListeners(type) {
|
|
287
|
+
return _listeners(this, type, false);
|
|
288
|
+
};
|
|
289
|
+
EventEmitter2.listenerCount = function(emitter, type) {
|
|
290
|
+
if (typeof emitter.listenerCount === "function") {
|
|
291
|
+
return emitter.listenerCount(type);
|
|
292
|
+
} else {
|
|
293
|
+
return listenerCount.call(emitter, type);
|
|
294
|
+
}
|
|
295
|
+
};
|
|
296
|
+
EventEmitter2.prototype.listenerCount = listenerCount;
|
|
297
|
+
function listenerCount(type) {
|
|
298
|
+
var events = this._events;
|
|
299
|
+
if (events !== void 0) {
|
|
300
|
+
var evlistener = events[type];
|
|
301
|
+
if (typeof evlistener === "function") {
|
|
302
|
+
return 1;
|
|
303
|
+
} else if (evlistener !== void 0) {
|
|
304
|
+
return evlistener.length;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
return 0;
|
|
308
|
+
}
|
|
309
|
+
EventEmitter2.prototype.eventNames = function eventNames() {
|
|
310
|
+
return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];
|
|
311
|
+
};
|
|
312
|
+
function arrayClone(arr, n) {
|
|
313
|
+
var copy = new Array(n);
|
|
314
|
+
for (var i = 0; i < n; ++i)
|
|
315
|
+
copy[i] = arr[i];
|
|
316
|
+
return copy;
|
|
317
|
+
}
|
|
318
|
+
function spliceOne(list, index) {
|
|
319
|
+
for (; index + 1 < list.length; index++)
|
|
320
|
+
list[index] = list[index + 1];
|
|
321
|
+
list.pop();
|
|
322
|
+
}
|
|
323
|
+
function unwrapListeners(arr) {
|
|
324
|
+
var ret = new Array(arr.length);
|
|
325
|
+
for (var i = 0; i < ret.length; ++i) {
|
|
326
|
+
ret[i] = arr[i].listener || arr[i];
|
|
327
|
+
}
|
|
328
|
+
return ret;
|
|
329
|
+
}
|
|
330
|
+
function once(emitter, name) {
|
|
331
|
+
return new Promise(function(resolve, reject) {
|
|
332
|
+
function errorListener(err) {
|
|
333
|
+
emitter.removeListener(name, resolver);
|
|
334
|
+
reject(err);
|
|
335
|
+
}
|
|
336
|
+
function resolver() {
|
|
337
|
+
if (typeof emitter.removeListener === "function") {
|
|
338
|
+
emitter.removeListener("error", errorListener);
|
|
339
|
+
}
|
|
340
|
+
resolve([].slice.call(arguments));
|
|
341
|
+
}
|
|
342
|
+
;
|
|
343
|
+
eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });
|
|
344
|
+
if (name !== "error") {
|
|
345
|
+
addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });
|
|
346
|
+
}
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
function addErrorHandlerIfEventEmitter(emitter, handler, flags) {
|
|
350
|
+
if (typeof emitter.on === "function") {
|
|
351
|
+
eventTargetAgnosticAddListener(emitter, "error", handler, flags);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
function eventTargetAgnosticAddListener(emitter, name, listener, flags) {
|
|
355
|
+
if (typeof emitter.on === "function") {
|
|
356
|
+
if (flags.once) {
|
|
357
|
+
emitter.once(name, listener);
|
|
358
|
+
} else {
|
|
359
|
+
emitter.on(name, listener);
|
|
360
|
+
}
|
|
361
|
+
} else if (typeof emitter.addEventListener === "function") {
|
|
362
|
+
emitter.addEventListener(name, function wrapListener(arg) {
|
|
363
|
+
if (flags.once) {
|
|
364
|
+
emitter.removeEventListener(name, wrapListener);
|
|
365
|
+
}
|
|
366
|
+
listener(arg);
|
|
367
|
+
});
|
|
368
|
+
} else {
|
|
369
|
+
throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
|
|
375
|
+
// src/node/events.ts
|
|
376
|
+
var import_events = __toESM(require_events(), 1);
|
|
377
|
+
function checkEvent(event) {
|
|
378
|
+
if (typeof event !== "string" && typeof event !== "symbol") throw new TypeError("Event names must be strings or symbols.");
|
|
379
|
+
}
|
|
380
|
+
function checkListener(listener) {
|
|
381
|
+
if (typeof listener !== "function") throw new TypeError("Event listeners must be functions.");
|
|
382
|
+
}
|
|
383
|
+
var EventEmitter = class {
|
|
384
|
+
#emitter = new import_events.default();
|
|
385
|
+
#registrations = /* @__PURE__ */ new Map();
|
|
386
|
+
#remove(event, registration) {
|
|
387
|
+
const entries = this.#registrations.get(event);
|
|
388
|
+
if (!entries) return;
|
|
389
|
+
const index = entries.indexOf(registration);
|
|
390
|
+
if (index !== -1) entries.splice(index, 1);
|
|
391
|
+
if (!entries.length) this.#registrations.delete(event);
|
|
392
|
+
}
|
|
393
|
+
#add(event, listener, once) {
|
|
394
|
+
checkEvent(event);
|
|
395
|
+
checkListener(listener);
|
|
396
|
+
const registration = {
|
|
397
|
+
listener,
|
|
398
|
+
invoke: (...args) => {
|
|
399
|
+
if (once) this.#remove(event, registration);
|
|
400
|
+
listener.apply(this, args);
|
|
401
|
+
}
|
|
402
|
+
};
|
|
403
|
+
const entries = this.#registrations.get(event) ?? [];
|
|
404
|
+
entries.push(registration);
|
|
405
|
+
this.#registrations.set(event, entries);
|
|
406
|
+
try {
|
|
407
|
+
if (once) this.#emitter.once(event, registration.invoke);
|
|
408
|
+
else this.#emitter.on(event, registration.invoke);
|
|
409
|
+
} catch (error) {
|
|
410
|
+
this.#remove(event, registration);
|
|
411
|
+
throw error;
|
|
412
|
+
}
|
|
413
|
+
return this;
|
|
414
|
+
}
|
|
415
|
+
on(event, listener) {
|
|
416
|
+
return this.#add(event, listener, false);
|
|
417
|
+
}
|
|
418
|
+
once(event, listener) {
|
|
419
|
+
return this.#add(event, listener, true);
|
|
420
|
+
}
|
|
421
|
+
off(event, listener) {
|
|
422
|
+
checkEvent(event);
|
|
423
|
+
checkListener(listener);
|
|
424
|
+
const entries = this.#registrations.get(event);
|
|
425
|
+
let registration;
|
|
426
|
+
if (entries) for (let index = entries.length - 1; index >= 0; index--) {
|
|
427
|
+
if (entries[index].listener === listener) {
|
|
428
|
+
registration = entries[index];
|
|
429
|
+
break;
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
if (registration) {
|
|
433
|
+
this.#remove(event, registration);
|
|
434
|
+
this.#emitter.off(event, registration.invoke);
|
|
435
|
+
}
|
|
436
|
+
return this;
|
|
437
|
+
}
|
|
438
|
+
emit(event, ...args) {
|
|
439
|
+
checkEvent(event);
|
|
440
|
+
return this.#emitter.emit(event, ...args);
|
|
441
|
+
}
|
|
442
|
+
removeAllListeners(event) {
|
|
443
|
+
if (event === void 0) {
|
|
444
|
+
this.#registrations.clear();
|
|
445
|
+
this.#emitter.removeAllListeners();
|
|
446
|
+
} else {
|
|
447
|
+
checkEvent(event);
|
|
448
|
+
this.#registrations.delete(event);
|
|
449
|
+
this.#emitter.removeAllListeners(event);
|
|
450
|
+
}
|
|
451
|
+
return this;
|
|
452
|
+
}
|
|
453
|
+
};
|
|
454
|
+
var events_default = EventEmitter;
|
|
455
|
+
export {
|
|
456
|
+
EventEmitter,
|
|
457
|
+
events_default as default
|
|
458
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type FileContext } from "./lifecycle.js";
|
|
2
|
+
import type { CapabilityCall, FsMethod, FsRequest, FsResult } from "./types.js";
|
|
3
|
+
export interface FsBackend {
|
|
4
|
+
invoke<M extends FsMethod>(context: FileContext, method: M, params: FsRequest<M>, observe?: (result: unknown, late: boolean) => void): Promise<FsResult<M>>;
|
|
5
|
+
abort(handle: string): Promise<boolean>;
|
|
6
|
+
}
|
|
7
|
+
export declare function createBackend(call: CapabilityCall): FsBackend;
|
|
8
|
+
export declare function responseHandle(value: unknown): string | undefined;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Buffer } from "../buffer.js";
|
|
2
|
+
import type { AppendFileOptions, DirectoryEntry, FileStats, FsError, FsPromises, MkdirOptions, ReadBufferOptions, ReadFileOptions, ReadTextOptions, ReaddirOptions, RemoveOptions, WriteFileOptions } from "./types.js";
|
|
3
|
+
export type VoidCallback = (error: FsError | null) => void;
|
|
4
|
+
export type ValueCallback<T> = (...args: [error: FsError, data: undefined] | [error: null, data: T]) => void;
|
|
5
|
+
export type UnsupportedSync = (...args: unknown[]) => never;
|
|
6
|
+
export interface CallbackFs {
|
|
7
|
+
readonly promises: FsPromises;
|
|
8
|
+
readFile(path: string, callback: ValueCallback<Buffer>): void;
|
|
9
|
+
readFile(path: string, options: ReadBufferOptions | undefined, callback: ValueCallback<Buffer>): void;
|
|
10
|
+
readFile(path: string, options: ReadTextOptions, callback: ValueCallback<string>): void;
|
|
11
|
+
readFile(path: string, options: ReadFileOptions | undefined, callback: ValueCallback<Buffer | string>): void;
|
|
12
|
+
writeFile(path: string, data: string | Uint8Array, callback: VoidCallback): void;
|
|
13
|
+
writeFile(path: string, data: string | Uint8Array, options: WriteFileOptions | undefined, callback: VoidCallback): void;
|
|
14
|
+
appendFile(path: string, data: string | Uint8Array, callback: VoidCallback): void;
|
|
15
|
+
appendFile(path: string, data: string | Uint8Array, options: AppendFileOptions | undefined, callback: VoidCallback): void;
|
|
16
|
+
readdir(path: string, callback: ValueCallback<string[]>): void;
|
|
17
|
+
readdir(path: string, options: {
|
|
18
|
+
withFileTypes?: false;
|
|
19
|
+
} | undefined, callback: ValueCallback<string[]>): void;
|
|
20
|
+
readdir(path: string, options: {
|
|
21
|
+
withFileTypes: true;
|
|
22
|
+
}, callback: ValueCallback<DirectoryEntry[]>): void;
|
|
23
|
+
readdir(path: string, options: ReaddirOptions | undefined, callback: ValueCallback<string[] | DirectoryEntry[]>): void;
|
|
24
|
+
stat(path: string, callback: ValueCallback<FileStats>): void;
|
|
25
|
+
mkdir(path: string, callback: VoidCallback): void;
|
|
26
|
+
mkdir(path: string, options: {
|
|
27
|
+
recursive?: false;
|
|
28
|
+
} | undefined, callback: VoidCallback): void;
|
|
29
|
+
mkdir(path: string, options: MkdirOptions, callback: ValueCallback<string | undefined>): void;
|
|
30
|
+
rename(from: string, to: string, callback: VoidCallback): void;
|
|
31
|
+
copyFile(from: string, to: string, callback: VoidCallback): void;
|
|
32
|
+
rm(path: string, callback: VoidCallback): void;
|
|
33
|
+
rm(path: string, options: RemoveOptions | undefined, callback: VoidCallback): void;
|
|
34
|
+
readFileSync: UnsupportedSync;
|
|
35
|
+
writeFileSync: UnsupportedSync;
|
|
36
|
+
appendFileSync: UnsupportedSync;
|
|
37
|
+
readdirSync: UnsupportedSync;
|
|
38
|
+
statSync: UnsupportedSync;
|
|
39
|
+
mkdirSync: UnsupportedSync;
|
|
40
|
+
renameSync: UnsupportedSync;
|
|
41
|
+
copyFileSync: UnsupportedSync;
|
|
42
|
+
rmSync: UnsupportedSync;
|
|
43
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { CapabilityCall, FsClientOptions, FsPromises } from "./types.js";
|
|
2
|
+
import type { SessionInfo } from "../../protocol/wire.js";
|
|
3
|
+
export declare function createFsClient(call: CapabilityCall, session: () => Promise<SessionInfo>, options?: FsClientOptions): FsPromises;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { FsError } from "./types.js";
|
|
2
|
+
export declare function invalidArgument(): never;
|
|
3
|
+
export declare function checkArity(count: number, min: number, max: number): void;
|
|
4
|
+
export declare function toFsError(error: unknown, syscall: string, path?: unknown, dest?: unknown): FsError;
|
|
5
|
+
export declare function unsupportedSync(): never;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { SessionInfo } from "../../protocol/wire.js";
|
|
2
|
+
import type { FsClientOptions } from "./types.js";
|
|
3
|
+
export declare function checkSignal(signal: AbortSignal): void;
|
|
4
|
+
export declare function boundedOperation<T>(action: (signal: AbortSignal) => Promise<T>, signal?: AbortSignal, timeoutMs?: number, onLate?: (value: T) => void): Promise<T>;
|
|
5
|
+
export interface FileContext {
|
|
6
|
+
info: SessionInfo;
|
|
7
|
+
signal: AbortSignal;
|
|
8
|
+
}
|
|
9
|
+
export declare function createLifecycle(session: () => Promise<SessionInfo>, options: FsClientOptions): {
|
|
10
|
+
run<T>(action: (context: FileContext) => Promise<T>): Promise<T>;
|
|
11
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Buffer } from "../buffer.js";
|
|
2
|
+
export declare function filePath(value: unknown): string;
|
|
3
|
+
export declare function readEncoding(value: unknown): "utf8" | null;
|
|
4
|
+
export declare function writeMode(value: unknown, append: boolean): "w" | "wx" | "a" | "ax";
|
|
5
|
+
export declare function boolOptions(value: unknown, allowed: readonly string[]): Record<string, boolean>;
|
|
6
|
+
export declare function snapshotData(data: unknown): Buffer;
|
|
7
|
+
export declare function virtualRoot(path: string): string;
|