@fkn/lib 0.9.19 → 0.9.21
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/account.cjs +1 -1
- package/account.js +24 -17
- package/{api-DnO1DsJC.d.ts → api-B0qRPCcX.d.ts} +36 -37
- package/api-BqRjtWm_.js +311 -0
- package/api-CKO3Hw-O.cjs +3 -0
- package/busy-Bp1E3JPT.js +24 -0
- package/busy-Dv8wzE5M.cjs +1 -0
- package/cloud/dgram.cjs +1 -1
- package/cloud/dgram.js +1 -1
- package/cloud/fetch.cjs +1 -1
- package/cloud/fetch.d.ts +1 -1
- package/cloud/fetch.js +1 -1
- package/cloud/fs.cjs +1 -1
- package/cloud/fs.js +2 -2
- package/cloud/net.cjs +1 -1
- package/cloud/net.d.ts +1 -1
- package/cloud/net.js +1 -1
- package/cloud-BCQTex58.cjs +1 -0
- package/{cloud-uE4g-WqI.d.ts → cloud-BTpJn4jy.d.ts} +3 -3
- package/cloud-BlR1He17.js +212 -0
- package/cloud.cjs +1 -1
- package/cloud.d.ts +3 -3
- package/cloud.js +4 -4
- package/dgram-9hn582qO.cjs +1 -0
- package/{dgram-DlGl_ho1.js → dgram-TB03kqMr.js} +55 -49
- package/dgram.cjs +1 -1
- package/dgram.d.ts +2 -1
- package/dgram.js +1 -1
- package/dns.cjs +1 -1
- package/dns.js +1 -1
- package/extension-BI2NxGtC.js +78 -0
- package/{extension-CN9oFZ0Q.d.ts → extension-CMPZjuaV.d.ts} +1 -1
- package/extension-rFQQpEqJ.cjs +1 -0
- package/extension.cjs +1 -1
- package/extension.d.ts +2 -2
- package/extension.js +3 -3
- package/fs/promises.cjs +1 -1
- package/fs/promises.js +1 -1
- package/fs-BUcpl9k4.cjs +1 -0
- package/fs-bpb3Ysdd.js +347 -0
- package/fs.cjs +1 -1
- package/fs.js +1 -1
- package/http.cjs +1 -1
- package/http.d.ts +1 -1
- package/http.js +1 -1
- package/{index-DLaonjpx.d.ts → index-DY8WjklJ.d.ts} +82 -0
- package/index.cjs +1 -1
- package/index.d.ts +12 -18
- package/index.js +92 -39
- package/lib-DbiVHPXE.cjs +53 -0
- package/{lib-CegQxwDI.js → lib-k3lstfa4.js} +178 -131
- package/net-C2fIMWFr.cjs +1 -0
- package/{net-l7JVHsIR.d.ts → net-CnYxw_sB.d.ts} +3 -1
- package/{net-BbmQeMpt.js → net-Ct8ywVAk.js} +52 -41
- package/net.cjs +1 -1
- package/net.d.ts +1 -1
- package/net.js +1 -1
- package/node-fs-BZCQUmeE.js +404 -0
- package/node-fs-DZPGCYWg.cjs +1 -0
- package/opfs.cjs +1 -1
- package/opfs.js +1 -1
- package/package.json +1 -1
- package/{packages-vX-1yfRK.d.ts → packages-Cn8S-Hkn.d.ts} +20 -20
- package/packages.cjs +1 -1
- package/packages.d.ts +1 -1
- package/packages.js +165 -149
- package/proxy--aljNHvG.js +69 -0
- package/{proxy-7ib45Uo-.d.ts → proxy-CuXtzxSQ.d.ts} +1 -1
- package/proxy-oHfEx1cn.cjs +1 -0
- package/{storage-C8hBot2f.js → storage-C1nW5Tvh.js} +1 -1
- package/{storage-BW-jDLUL.cjs → storage-rXHvV2FU.cjs} +1 -1
- package/api-DQ-V4Lls.js +0 -220
- package/api-kHMHDGar.cjs +0 -3
- package/cloud-BQoppUw4.cjs +0 -1
- package/cloud-C8CeqUht.js +0 -130
- package/dgram-D2Or5f2e.cjs +0 -1
- package/extension-4BM5hKrn.cjs +0 -1
- package/extension-DVO10P3i.js +0 -78
- package/fs-BW5mVMmu.js +0 -340
- package/fs-DJm0bhjg.cjs +0 -1
- package/lib-ulyxIbTr.cjs +0 -53
- package/net-COzDDBnS.cjs +0 -1
- package/node-fs-BMR2yCEt.cjs +0 -1
- package/node-fs-DKfokOlh.js +0 -401
- package/proxy-B0gNjT8-.cjs +0 -1
- package/proxy-BpqvCJmA.js +0 -43
package/net-C2fIMWFr.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-CKO3Hw-O.cjs"),n=require("./busy-Dv8wzE5M.cjs"),r=require("./utils-QfNXtEhb.cjs");let i=require("stream"),a=require("events");var o=e.t({Server:()=>c,Socket:()=>s,_default:()=>f,connect:()=>l,createConnection:()=>u,createServer:()=>d,default:()=>f,isIP:()=>r.r,isIPv4:()=>r.i,isIPv6:()=>r.a}),s=class extends i.Stream.Duplex{_localAddress;_remoteAddress;_webVPNTcpSocketPromise;constructor(e){if(e?.fd!==void 0)throw Error(`FKN WebVPN does not support file descriptors`);super(e),e?.connection&&this.__webvpn_tcp_socket_init__(e.connection)}_busyRelease;__webvpn_tcp_socket_init__(e,t){if(this._busyRelease??=n.t(`tcp socket`),t&&(this._localAddress={address:t.localAddress,family:t.localFamily,port:t.localPort},this._remoteAddress={address:t.remoteAddress,family:t.remoteFamily,port:t.remotePort}),this._webVPNTcpSocketPromise=e.then(e=>{let t=e.dataReadableStream.getReader(),n=e.dataWritableStream.getWriter();return this._localAddress={address:e.localAddress,family:e.localFamily,port:e.localPort},this._remoteAddress={address:e.remoteAddress,family:e.remoteFamily,port:e.remotePort},{...e,reader:t,writer:n}}).catch(e=>{this.emit(`error`,e)}),!this._webVPNTcpSocketPromise)throw Error(`Socket not connected`);return this._webVPNTcpSocketPromise.then(e=>{if(!e){this._busyRelease?.();return}this.emit(`connect`)}),this._webVPNTcpSocketPromise}_read(e){if(!this._webVPNTcpSocketPromise)throw Error(`Socket not connected`);this._webVPNTcpSocketPromise.then(e=>{if(!e){this.push(null);return}e.reader.read().then(({value:e,done:t})=>{if(t){this.push(null);return}this._restartTimeoutTimer(),this.push(e)}).catch(e=>{this.destroy(e)})})}_write(e,t,n){if(!this._webVPNTcpSocketPromise){n(Error(`Socket not connected`));return}this._webVPNTcpSocketPromise.then(async t=>{if(!t)throw Error(`Socket not connected`);await t.writer.ready,await t.writer.write(e),this._restartTimeoutTimer(),n()}).catch(n)}connect(...e){let n=r.c(...e),i=this.__webvpn_tcp_socket_init__(t.r.then(e=>e.cloud.webvpn.tcpSocket({remoteAddress:n.host??`localhost`,remotePort:n.port})));return n.callback&&i.then(e=>{e&&n.callback.call(this)}),this}_final(e){if(!this._webVPNTcpSocketPromise){e();return}this._webVPNTcpSocketPromise.then(async e=>{e&&await e.writer.close()}).then(()=>e(),t=>e(t))}_destroy(e,t){if(this._timeoutTimer&&clearTimeout(this._timeoutTimer),this._busyRelease?.(),!this._webVPNTcpSocketPromise){t(e);return}this._webVPNTcpSocketPromise.then(async e=>{e&&await(this._resetRequested?e.resetAndDestroy():e.destroy())}).then(()=>t(e),()=>t(e))}destroySoon(){if(this.writableFinished){this.destroy();return}this.once(`finish`,()=>this.destroy()),this.end()}_resetRequested=!1;resetAndDestroy(){return this._resetRequested=!0,this.destroy(),this}_timeoutMs;_timeoutTimer;_restartTimeoutTimer(){this._timeoutTimer&&clearTimeout(this._timeoutTimer),this._timeoutMs&&(this._timeoutTimer=setTimeout(()=>this.emit(`timeout`),this._timeoutMs))}setTimeout(e,t){return t&&this.on(`timeout`,t),this._timeoutMs=e,this._restartTimeoutTimer(),this}setNoDelay(e){let t=e??!0;return this._setTcpOption({type:0,value:t}),this}setKeepAlive(e,t){let n=e??!1,r=t!==void 0&&t>0?Math.max(1,Math.round(t/1e3)):0;return this._setTcpOption({type:2,enabled:n,initialDelaySeconds:r}),this}setSendBufferSize(e){return this._setTcpOption({type:3,value:e}),this}setRecvBufferSize(e){return this._setTcpOption({type:4,value:e}),this}_typeOfService;getTypeOfService(){return this._typeOfService??0}setTypeOfService(e){return this._typeOfService=e,this}_setTcpOption(e){if(!this._webVPNTcpSocketPromise){this.emit(`error`,Error(`Cannot set socket option before connect`));return}this._webVPNTcpSocketPromise.then(async t=>{if(t)try{await t.setOption(e)}catch(e){this.emit(`error`,e)}})}write(e,t,...n){return super.write(e,t,...n)}address(){return this._localAddress??{}}unref(){return this}ref(){return this}autoSelectFamilyAttemptedAddresses;bufferSize;bytesRead;bytesWritten;connecting;pending;get localAddress(){if(!this._localAddress)throw Error(`Socket is not connected`);return this._localAddress.address}get localPort(){if(!this._localAddress)throw Error(`Socket is not connected`);return this._localAddress.port}get localFamily(){if(!this._localAddress)throw Error(`Socket is not connected`);return this._localAddress.family}readyState;get remoteAddress(){if(!this._remoteAddress)throw Error(`Socket is not connected`);return this._remoteAddress.address}get remotePort(){if(!this._remoteAddress)throw Error(`Socket is not connected`);return this._remoteAddress.port}get remoteFamily(){if(!this._remoteAddress)throw Error(`Socket is not connected`);return this._remoteAddress.family}timeout},c=class extends a.EventEmitter{_localAddress;_webVPNTcpSocketListenerPromise;constructor(e,t){super(e),t&&this.on(`connection`,t),e?.connection&&this.__webvpn_tcp_socket_listener_init__(e.connection)}_busyRelease;__webvpn_tcp_socket_listener_init__(e){return this._busyRelease??=n.t(`tcp server`),this._webVPNTcpSocketListenerPromise=e.then(e=>(this._localAddress={address:e.localAddress,family:e.localFamily,port:e.localPort},e)).catch(e=>{this.emit(`error`,e)}),this._webVPNTcpSocketListenerPromise.then(e=>{if(!e){this._busyRelease?.();return}this.emit(`listening`)}),this._webVPNTcpSocketListenerPromise}listen(...e){let n=r.c(...e);this._closeEmitted=!1;let i=e=>{let t=new s;t.__webvpn_tcp_socket_init__(Promise.resolve(e),e),this.emit(`connection`,t)},a=e=>{this._localAddress=void 0;try{e&&this.listenerCount(`error`)>0&&this.emit(`error`,e)}finally{this._emitClose()}},o=e=>t.r.then(t=>t.cloud.webvpn.tcpSocketListener({localAddress:e,localPort:n.port,onConnection:i,onClose:a})),c=n.host?o(n.host):o(`::`).catch(()=>o(`0.0.0.0`)),l=this.__webvpn_tcp_socket_listener_init__(c);return n.callback&&l.then(e=>{e&&n.callback.call(this)}),this}_closeEmitted=!1;_emitClose(){this._closeEmitted||(this._closeEmitted=!0,this._busyRelease?.(),this.emit(`close`))}close(e){return this._webVPNTcpSocketListenerPromise&&this._webVPNTcpSocketListenerPromise.then(async t=>{if(t)try{await t.close(),this._localAddress=void 0,this._emitClose(),e&&e()}catch(t){this._localAddress=void 0,this._emitClose(),e&&e(t)}}),this}address(){return this._localAddress??null}getConnections(e){throw Error(`Method not implemented.`)}ref(){return this}unref(){return this}maxConnections;connections;listening;async[Symbol.asyncDispose](){}},l=(e,t)=>new s().connect(e,t),u=(e,t)=>new s().connect(e,t),d=(e,t)=>{typeof e==`function`&&(t=e,e=void 0);let n=new c(e);return t&&n.on(`connection`,t),n},f={Socket:s,Server:c,connect:l,createConnection:u,createServer:d,isIP:r.r,isIPv4:r.i,isIPv6:r.a};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return c}});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as TcpSocketOption, r as LocalTcpSocket, t as Resolvers } from "./api-
|
|
1
|
+
import { i as TcpSocketOption, r as LocalTcpSocket, t as Resolvers } from "./api-B0qRPCcX.js";
|
|
2
2
|
import { AddressInfo, ListenOptions, Server, ServerOpts, Socket, SocketConnectOpts, SocketConstructorOpts } from "net";
|
|
3
3
|
import { DuplexOptions, Stream } from "stream";
|
|
4
4
|
import { EventEmitter } from "events";
|
|
@@ -44,6 +44,7 @@ declare class Socket$2 extends Stream.Duplex implements Socket {
|
|
|
44
44
|
* cannot name with no alert and no reply, which reads from outside as the relay never delivering
|
|
45
45
|
* the connection at all.
|
|
46
46
|
*/
|
|
47
|
+
_busyRelease?: () => void;
|
|
47
48
|
__webvpn_tcp_socket_init__(connection: ReturnType<WebVpnTcpSocket>, endpoints?: Awaited<ReturnType<WebVpnTcpSocket>>): Promise<(LocalTcpSocket & {
|
|
48
49
|
reader: ReadableStreamDefaultReader<Uint8Array>;
|
|
49
50
|
writer: WritableStreamDefaultWriter<Uint8Array>;
|
|
@@ -108,6 +109,7 @@ declare class Server$1 extends EventEmitter implements Server {
|
|
|
108
109
|
constructor(options?: ServerOpts & EventEmitterOptions & {
|
|
109
110
|
connection?: ReturnType<WebVpnTcpSocketListener>;
|
|
110
111
|
}, connectionListener?: (socket: Socket$2) => void);
|
|
112
|
+
_busyRelease?: () => void;
|
|
111
113
|
__webvpn_tcp_socket_listener_init__(connection: ReturnType<WebVpnTcpSocketListener>): Promise<{
|
|
112
114
|
localAddress: string;
|
|
113
115
|
localFamily: "IPv4" | "IPv6";
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
|
|
2
|
-
import { t } from "./api-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import { r as t } from "./api-BqRjtWm_.js";
|
|
3
|
+
import { t as n } from "./busy-Bp1E3JPT.js";
|
|
4
|
+
import { a as r, c as i, i as a, r as o } from "./utils-DVlbuXmW.js";
|
|
5
|
+
import { Stream as s } from "stream";
|
|
6
|
+
import { EventEmitter as c } from "events";
|
|
6
7
|
//#region src/lib/webvpn/net.ts
|
|
7
|
-
var
|
|
8
|
-
Server: () =>
|
|
9
|
-
Socket: () =>
|
|
10
|
-
_default: () =>
|
|
11
|
-
connect: () =>
|
|
12
|
-
createConnection: () =>
|
|
13
|
-
createServer: () =>
|
|
14
|
-
default: () =>
|
|
15
|
-
isIP: () =>
|
|
16
|
-
isIPv4: () =>
|
|
17
|
-
isIPv6: () =>
|
|
18
|
-
}),
|
|
8
|
+
var l = /* @__PURE__ */ e({
|
|
9
|
+
Server: () => d,
|
|
10
|
+
Socket: () => u,
|
|
11
|
+
_default: () => h,
|
|
12
|
+
connect: () => f,
|
|
13
|
+
createConnection: () => p,
|
|
14
|
+
createServer: () => m,
|
|
15
|
+
default: () => h,
|
|
16
|
+
isIP: () => o,
|
|
17
|
+
isIPv4: () => a,
|
|
18
|
+
isIPv6: () => r
|
|
19
|
+
}), u = class extends s.Duplex {
|
|
19
20
|
_localAddress;
|
|
20
21
|
_remoteAddress;
|
|
21
22
|
_webVPNTcpSocketPromise;
|
|
@@ -23,8 +24,9 @@ var c = /* @__PURE__ */ e({
|
|
|
23
24
|
if (e?.fd !== void 0) throw Error("FKN WebVPN does not support file descriptors");
|
|
24
25
|
super(e), e?.connection && this.__webvpn_tcp_socket_init__(e.connection);
|
|
25
26
|
}
|
|
27
|
+
_busyRelease;
|
|
26
28
|
__webvpn_tcp_socket_init__(e, t) {
|
|
27
|
-
if (t && (this._localAddress = {
|
|
29
|
+
if (this._busyRelease ??= n("tcp socket"), t && (this._localAddress = {
|
|
28
30
|
address: t.localAddress,
|
|
29
31
|
family: t.localFamily,
|
|
30
32
|
port: t.localPort
|
|
@@ -51,7 +53,11 @@ var c = /* @__PURE__ */ e({
|
|
|
51
53
|
this.emit("error", e);
|
|
52
54
|
}), !this._webVPNTcpSocketPromise) throw Error("Socket not connected");
|
|
53
55
|
return this._webVPNTcpSocketPromise.then((e) => {
|
|
54
|
-
|
|
56
|
+
if (!e) {
|
|
57
|
+
this._busyRelease?.();
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
this.emit("connect");
|
|
55
61
|
}), this._webVPNTcpSocketPromise;
|
|
56
62
|
}
|
|
57
63
|
_read(e) {
|
|
@@ -83,11 +89,11 @@ var c = /* @__PURE__ */ e({
|
|
|
83
89
|
}).catch(n);
|
|
84
90
|
}
|
|
85
91
|
connect(...e) {
|
|
86
|
-
let n =
|
|
92
|
+
let n = i(...e), r = this.__webvpn_tcp_socket_init__(t.then((e) => e.cloud.webvpn.tcpSocket({
|
|
87
93
|
remoteAddress: n.host ?? "localhost",
|
|
88
94
|
remotePort: n.port
|
|
89
95
|
})));
|
|
90
|
-
return n.callback &&
|
|
96
|
+
return n.callback && r.then((e) => {
|
|
91
97
|
e && n.callback.call(this);
|
|
92
98
|
}), this;
|
|
93
99
|
}
|
|
@@ -101,7 +107,7 @@ var c = /* @__PURE__ */ e({
|
|
|
101
107
|
}).then(() => e(), (t) => e(t));
|
|
102
108
|
}
|
|
103
109
|
_destroy(e, t) {
|
|
104
|
-
if (this._timeoutTimer && clearTimeout(this._timeoutTimer), !this._webVPNTcpSocketPromise) {
|
|
110
|
+
if (this._timeoutTimer && clearTimeout(this._timeoutTimer), this._busyRelease?.(), !this._webVPNTcpSocketPromise) {
|
|
105
111
|
t(e);
|
|
106
112
|
return;
|
|
107
113
|
}
|
|
@@ -219,28 +225,33 @@ var c = /* @__PURE__ */ e({
|
|
|
219
225
|
return this._remoteAddress.family;
|
|
220
226
|
}
|
|
221
227
|
timeout;
|
|
222
|
-
},
|
|
228
|
+
}, d = class extends c {
|
|
223
229
|
_localAddress;
|
|
224
230
|
_webVPNTcpSocketListenerPromise;
|
|
225
231
|
constructor(e, t) {
|
|
226
232
|
super(e), t && this.on("connection", t), e?.connection && this.__webvpn_tcp_socket_listener_init__(e.connection);
|
|
227
233
|
}
|
|
234
|
+
_busyRelease;
|
|
228
235
|
__webvpn_tcp_socket_listener_init__(e) {
|
|
229
|
-
return this._webVPNTcpSocketListenerPromise = e.then((e) => (this._localAddress = {
|
|
236
|
+
return this._busyRelease ??= n("tcp server"), this._webVPNTcpSocketListenerPromise = e.then((e) => (this._localAddress = {
|
|
230
237
|
address: e.localAddress,
|
|
231
238
|
family: e.localFamily,
|
|
232
239
|
port: e.localPort
|
|
233
240
|
}, e)).catch((e) => {
|
|
234
241
|
this.emit("error", e);
|
|
235
242
|
}), this._webVPNTcpSocketListenerPromise.then((e) => {
|
|
236
|
-
|
|
243
|
+
if (!e) {
|
|
244
|
+
this._busyRelease?.();
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
this.emit("listening");
|
|
237
248
|
}), this._webVPNTcpSocketListenerPromise;
|
|
238
249
|
}
|
|
239
250
|
listen(...e) {
|
|
240
|
-
let n =
|
|
251
|
+
let n = i(...e);
|
|
241
252
|
this._closeEmitted = !1;
|
|
242
|
-
let
|
|
243
|
-
let t = new
|
|
253
|
+
let r = (e) => {
|
|
254
|
+
let t = new u();
|
|
244
255
|
t.__webvpn_tcp_socket_init__(Promise.resolve(e), e), this.emit("connection", t);
|
|
245
256
|
}, a = (e) => {
|
|
246
257
|
this._localAddress = void 0;
|
|
@@ -252,7 +263,7 @@ var c = /* @__PURE__ */ e({
|
|
|
252
263
|
}, o = (e) => t.then((t) => t.cloud.webvpn.tcpSocketListener({
|
|
253
264
|
localAddress: e,
|
|
254
265
|
localPort: n.port,
|
|
255
|
-
onConnection:
|
|
266
|
+
onConnection: r,
|
|
256
267
|
onClose: a
|
|
257
268
|
})), s = n.host ? o(n.host) : o("::").catch(() => o("0.0.0.0")), c = this.__webvpn_tcp_socket_listener_init__(s);
|
|
258
269
|
return n.callback && c.then((e) => {
|
|
@@ -261,7 +272,7 @@ var c = /* @__PURE__ */ e({
|
|
|
261
272
|
}
|
|
262
273
|
_closeEmitted = !1;
|
|
263
274
|
_emitClose() {
|
|
264
|
-
this._closeEmitted || (this._closeEmitted = !0, this.emit("close"));
|
|
275
|
+
this._closeEmitted || (this._closeEmitted = !0, this._busyRelease?.(), this.emit("close"));
|
|
265
276
|
}
|
|
266
277
|
close(e) {
|
|
267
278
|
return this._webVPNTcpSocketListenerPromise && this._webVPNTcpSocketListenerPromise.then(async (t) => {
|
|
@@ -288,19 +299,19 @@ var c = /* @__PURE__ */ e({
|
|
|
288
299
|
connections;
|
|
289
300
|
listening;
|
|
290
301
|
async [Symbol.asyncDispose]() {}
|
|
291
|
-
},
|
|
302
|
+
}, f = (e, t) => new u().connect(e, t), p = (e, t) => new u().connect(e, t), m = (e, t) => {
|
|
292
303
|
typeof e == "function" && (t = e, e = void 0);
|
|
293
|
-
let n = new
|
|
304
|
+
let n = new d(e);
|
|
294
305
|
return t && n.on("connection", t), n;
|
|
295
|
-
},
|
|
296
|
-
Socket:
|
|
297
|
-
Server:
|
|
298
|
-
connect:
|
|
299
|
-
createConnection:
|
|
300
|
-
createServer:
|
|
301
|
-
isIP:
|
|
302
|
-
isIPv4:
|
|
303
|
-
isIPv6:
|
|
306
|
+
}, h = {
|
|
307
|
+
Socket: u,
|
|
308
|
+
Server: d,
|
|
309
|
+
connect: f,
|
|
310
|
+
createConnection: p,
|
|
311
|
+
createServer: m,
|
|
312
|
+
isIP: o,
|
|
313
|
+
isIPv4: a,
|
|
314
|
+
isIPv6: r
|
|
304
315
|
};
|
|
305
316
|
//#endregion
|
|
306
|
-
export {
|
|
317
|
+
export { p as a, f as i, u as n, m as o, h as r, l as s, d as t };
|
package/net.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./utils-QfNXtEhb.cjs"),t=require("./net-
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./utils-QfNXtEhb.cjs"),t=require("./net-C2fIMWFr.cjs");exports.Server=t.t,exports.Socket=t.n,exports._default=t.r,exports.default=t.r,exports.connect=t.i,exports.createConnection=t.a,exports.createServer=t.o,exports.isIP=e.r,exports.isIPv4=e.i,exports.isIPv6=e.a;
|
package/net.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as createConnection, c as isIP, i as connect, l as isIPv4, n as Socket, o as createServer, r as _default, t as Server, u as isIPv6 } from "./net-
|
|
1
|
+
import { a as createConnection, c as isIP, i as connect, l as isIPv4, n as Socket, o as createServer, r as _default, t as Server, u as isIPv6 } from "./net-CnYxw_sB.js";
|
|
2
2
|
export { Server, Socket, _default, _default as default, connect, createConnection, createServer, isIP, isIPv4, isIPv6 };
|
package/net.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { a as e, i as t, r as n } from "./utils-DVlbuXmW.js";
|
|
2
|
-
import { a as r, i, n as a, o, r as s, t as c } from "./net-
|
|
2
|
+
import { a as r, i, n as a, o, r as s, t as c } from "./net-Ct8ywVAk.js";
|
|
3
3
|
export { c as Server, a as Socket, s as _default, s as default, i as connect, r as createConnection, o as createServer, n as isIP, t as isIPv4, e as isIPv6 };
|
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
import { r as e } from "./busy-Bp1E3JPT.js";
|
|
2
|
+
import { Buffer as t } from "buffer";
|
|
3
|
+
//#region src/lib/fs/content-type.ts
|
|
4
|
+
var n = {
|
|
5
|
+
json: "application/json",
|
|
6
|
+
txt: "text/plain",
|
|
7
|
+
html: "text/html",
|
|
8
|
+
htm: "text/html",
|
|
9
|
+
css: "text/css",
|
|
10
|
+
js: "text/javascript",
|
|
11
|
+
mjs: "text/javascript",
|
|
12
|
+
xml: "application/xml",
|
|
13
|
+
csv: "text/csv",
|
|
14
|
+
md: "text/markdown",
|
|
15
|
+
svg: "image/svg+xml",
|
|
16
|
+
png: "image/png",
|
|
17
|
+
jpg: "image/jpeg",
|
|
18
|
+
jpeg: "image/jpeg",
|
|
19
|
+
gif: "image/gif",
|
|
20
|
+
webp: "image/webp",
|
|
21
|
+
pdf: "application/pdf",
|
|
22
|
+
wasm: "application/wasm"
|
|
23
|
+
}, r = (e, t) => {
|
|
24
|
+
if (t) return t;
|
|
25
|
+
let r = e.split("/").pop() ?? "", i = r.lastIndexOf(".");
|
|
26
|
+
if (!(i <= 0)) return n[r.slice(i + 1).toLowerCase()];
|
|
27
|
+
}, i = (e, t) => ({
|
|
28
|
+
size: e,
|
|
29
|
+
mtimeMs: t,
|
|
30
|
+
mtime: new Date(t),
|
|
31
|
+
atimeMs: t,
|
|
32
|
+
ctimeMs: t,
|
|
33
|
+
mode: 420,
|
|
34
|
+
isFile: () => !0,
|
|
35
|
+
isDirectory: () => !1,
|
|
36
|
+
isSymbolicLink: () => !1
|
|
37
|
+
}), a = (e = 0) => ({
|
|
38
|
+
size: 0,
|
|
39
|
+
mtimeMs: e,
|
|
40
|
+
mtime: new Date(e),
|
|
41
|
+
atimeMs: e,
|
|
42
|
+
ctimeMs: e,
|
|
43
|
+
mode: 493,
|
|
44
|
+
isFile: () => !1,
|
|
45
|
+
isDirectory: () => !0,
|
|
46
|
+
isSymbolicLink: () => !1
|
|
47
|
+
}), o = (e, t, n) => {
|
|
48
|
+
let r = /* @__PURE__ */ Error(`${e}: ${{
|
|
49
|
+
ENOENT: "no such file or directory",
|
|
50
|
+
EEXIST: "file already exists",
|
|
51
|
+
ENOTDIR: "not a directory",
|
|
52
|
+
EISDIR: "illegal operation on a directory",
|
|
53
|
+
ENOTEMPTY: "directory not empty",
|
|
54
|
+
ERR_FS_EISDIR: "is a directory"
|
|
55
|
+
}[e] ?? e}, ${n} '${t}'`);
|
|
56
|
+
return r.code = e, r.path = t, r.syscall = n, r;
|
|
57
|
+
}, s = (e) => {
|
|
58
|
+
let t = [];
|
|
59
|
+
for (let n of e.split("/")) if (!(!n || n === ".")) {
|
|
60
|
+
if (n === "..") {
|
|
61
|
+
t.pop();
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
t.push(n);
|
|
65
|
+
}
|
|
66
|
+
return t.join("/");
|
|
67
|
+
}, c = (e) => e.split("/").slice(0, -1).join("/"), l = (e) => typeof e == "string" ? e : e instanceof URL ? decodeURIComponent(e.pathname) : e.toString(), u = (e) => typeof e == "string" ? e : e?.encoding ?? void 0, d = (e) => typeof e == "object" ? e?.contentType : void 0, f = (e) => typeof e == "object" && !!e?.recursive, p = (e, n) => {
|
|
68
|
+
let r = u(n);
|
|
69
|
+
return r ? t.from(e).toString(r) : t.from(e);
|
|
70
|
+
}, m = (e, n) => {
|
|
71
|
+
if (typeof e == "string") return new Uint8Array(t.from(e, u(n) ?? "utf8"));
|
|
72
|
+
if (e instanceof Uint8Array) return e.slice();
|
|
73
|
+
if (e instanceof ArrayBuffer) return new Uint8Array(e).slice();
|
|
74
|
+
if (ArrayBuffer.isView(e)) return new Uint8Array(e.buffer, e.byteOffset, e.byteLength).slice();
|
|
75
|
+
throw TypeError("The \"data\" argument must be of type string, Buffer, TypedArray, or DataView");
|
|
76
|
+
}, h = (t) => {
|
|
77
|
+
let n = /* @__PURE__ */ new Map([["", {
|
|
78
|
+
kind: "dir",
|
|
79
|
+
mtimeMs: 0
|
|
80
|
+
}]]), l = /* @__PURE__ */ new Set(), u = /* @__PURE__ */ new Set();
|
|
81
|
+
e("unsaved files", () => l.size > 0 || u.size > 0);
|
|
82
|
+
let d = /* @__PURE__ */ new Set(), f = () => Date.now(), p = (e) => {
|
|
83
|
+
if (!e) return;
|
|
84
|
+
let t = e.split("/"), r = "";
|
|
85
|
+
for (let e of t) {
|
|
86
|
+
r = r ? `${r}/${e}` : e;
|
|
87
|
+
let t = n.get(r);
|
|
88
|
+
if (!t) n.set(r, {
|
|
89
|
+
kind: "dir",
|
|
90
|
+
mtimeMs: f()
|
|
91
|
+
});
|
|
92
|
+
else if (t.kind === "file") throw o("ENOTDIR", r, "mkdir");
|
|
93
|
+
}
|
|
94
|
+
}, m, h = 0, g = async () => {
|
|
95
|
+
let e = await t.list().catch(() => []), r = /* @__PURE__ */ new Set(), i = !1;
|
|
96
|
+
for (let a of e) {
|
|
97
|
+
let e = s(a.path);
|
|
98
|
+
if (r.add(e), !u.has(e) && !(l.has(e) && !d.has(e))) try {
|
|
99
|
+
let r = await (await t.readFile(a.path)).arrayBuffer();
|
|
100
|
+
if (u.has(e) || l.has(e) && !d.has(e)) continue;
|
|
101
|
+
p(c(e));
|
|
102
|
+
let i = Date.parse(a.updatedAt ?? "");
|
|
103
|
+
n.set(e, {
|
|
104
|
+
kind: "file",
|
|
105
|
+
data: new Uint8Array(r),
|
|
106
|
+
mtimeMs: Number.isFinite(i) ? i : f(),
|
|
107
|
+
contentType: a.contentType ?? void 0
|
|
108
|
+
}), d.delete(e), l.delete(e);
|
|
109
|
+
} catch {
|
|
110
|
+
i = !0, d.add(e);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
for (let e of d) r.has(e) || d.delete(e);
|
|
114
|
+
h = i ? Date.now() : 0;
|
|
115
|
+
}, _ = () => (m && (h === 0 || Date.now() - h < 5e3) || (m = g()), m), v = async () => {
|
|
116
|
+
m = void 0, h = 0, await _();
|
|
117
|
+
}, y = async () => {
|
|
118
|
+
let e = [...l].map(async (e) => {
|
|
119
|
+
if (d.has(e)) return;
|
|
120
|
+
let i = n.get(e);
|
|
121
|
+
if (i?.kind !== "file") {
|
|
122
|
+
l.delete(e);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
let a = i.data, o = r(e, i.contentType);
|
|
126
|
+
try {
|
|
127
|
+
await t.writeFile(e, a, o ? { contentType: o } : void 0);
|
|
128
|
+
let r = n.get(e);
|
|
129
|
+
r?.kind === "file" && r.data === a && l.delete(e);
|
|
130
|
+
} catch {}
|
|
131
|
+
}), i = [...u].map(async (e) => {
|
|
132
|
+
try {
|
|
133
|
+
await t.remove(e), u.delete(e);
|
|
134
|
+
} catch {}
|
|
135
|
+
});
|
|
136
|
+
await Promise.all([...e, ...i]);
|
|
137
|
+
}, b, x = () => {
|
|
138
|
+
b ||= setTimeout(() => {
|
|
139
|
+
b = void 0, y().catch(() => {});
|
|
140
|
+
}, 250);
|
|
141
|
+
};
|
|
142
|
+
typeof addEventListener < "u" && (addEventListener("pagehide", () => {
|
|
143
|
+
y().catch(() => {});
|
|
144
|
+
}), addEventListener("visibilitychange", () => {
|
|
145
|
+
typeof document < "u" && document.visibilityState === "hidden" && y().catch(() => {});
|
|
146
|
+
}));
|
|
147
|
+
let S = (e) => e.kind === "file" ? i(e.data.byteLength, e.mtimeMs) : a(e.mtimeMs), C = (e) => Object.assign(/* @__PURE__ */ Error(`storage: ${e} exists but could not be read, retry once its scope is available`), { code: "FKN_E2E_LOCKED" }), w = (e) => {
|
|
148
|
+
let t = s(e);
|
|
149
|
+
return n.has(t) || d.has(t);
|
|
150
|
+
}, T = (e) => {
|
|
151
|
+
let t = s(e), r = n.get(t);
|
|
152
|
+
if (!r) throw d.has(t) ? C(e) : o("ENOENT", e, "stat");
|
|
153
|
+
return S(r);
|
|
154
|
+
}, E = (e) => {
|
|
155
|
+
let t = s(e), r = n.get(t);
|
|
156
|
+
if (!r) throw d.has(t) ? C(e) : o("ENOENT", e, "open");
|
|
157
|
+
if (r.kind === "dir") throw o("EISDIR", e, "read");
|
|
158
|
+
return r.data;
|
|
159
|
+
}, D = (e, t) => {
|
|
160
|
+
let n = new Uint8Array(e.byteLength + t.byteLength);
|
|
161
|
+
return n.set(e, 0), n.set(t, e.byteLength), n;
|
|
162
|
+
}, O = (e, t, r, i) => {
|
|
163
|
+
let a = s(e);
|
|
164
|
+
if (!a) throw o("EISDIR", e, "open");
|
|
165
|
+
if (d.has(a)) throw C(e);
|
|
166
|
+
let m = n.get(a);
|
|
167
|
+
if (m?.kind === "dir") throw o("EISDIR", e, "open");
|
|
168
|
+
p(c(a));
|
|
169
|
+
let h = r && m?.kind === "file" ? D(m.data, t) : t;
|
|
170
|
+
n.set(a, {
|
|
171
|
+
kind: "file",
|
|
172
|
+
data: h,
|
|
173
|
+
mtimeMs: f(),
|
|
174
|
+
contentType: i ?? (m?.kind === "file" ? m.contentType : void 0)
|
|
175
|
+
}), l.add(a), u.delete(a), x();
|
|
176
|
+
}, k = (e, t) => {
|
|
177
|
+
let r = s(e);
|
|
178
|
+
if (r) {
|
|
179
|
+
if (n.has(r)) {
|
|
180
|
+
if (t) return;
|
|
181
|
+
throw o("EEXIST", e, "mkdir");
|
|
182
|
+
}
|
|
183
|
+
if (!t && !n.has(c(r))) throw o("ENOENT", e, "mkdir");
|
|
184
|
+
p(r);
|
|
185
|
+
}
|
|
186
|
+
}, A = (e) => {
|
|
187
|
+
let t = s(e), r = n.get(t);
|
|
188
|
+
if (!r) throw o("ENOENT", e, "scandir");
|
|
189
|
+
if (r.kind === "file") throw o("ENOTDIR", e, "scandir");
|
|
190
|
+
let i = t ? `${t}/` : "", a = /* @__PURE__ */ new Set();
|
|
191
|
+
for (let e of [...n.keys(), ...d]) {
|
|
192
|
+
if (!e || !e.startsWith(i)) continue;
|
|
193
|
+
let t = e.slice(i.length);
|
|
194
|
+
t && a.add(t.split("/")[0]);
|
|
195
|
+
}
|
|
196
|
+
return [...a];
|
|
197
|
+
}, j = (e, { op: t, recursive: r, force: i }) => {
|
|
198
|
+
let a = s(e), c = n.get(a);
|
|
199
|
+
if (!c && d.has(a)) {
|
|
200
|
+
if (t === "rmdir") throw o("ENOTDIR", e, "rmdir");
|
|
201
|
+
d.delete(a), l.delete(a), u.add(a), x();
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
if (!c) {
|
|
205
|
+
if (i || t === "rmdir" && r) return;
|
|
206
|
+
throw o("ENOENT", e, t === "rmdir" ? "rmdir" : "unlink");
|
|
207
|
+
}
|
|
208
|
+
if (t === "unlink" && c.kind === "dir") throw o("EISDIR", e, "unlink");
|
|
209
|
+
if (t === "rmdir" && c.kind === "file") throw o("ENOTDIR", e, "rmdir");
|
|
210
|
+
if (t === "rm" && c.kind === "dir" && !r) throw o("ERR_FS_EISDIR", e, "rm");
|
|
211
|
+
let f = `${a}/`, p = [...n.keys()].filter((e) => e.startsWith(f));
|
|
212
|
+
if (p.length && !r) throw o("ENOTEMPTY", e, "rmdir");
|
|
213
|
+
for (let e of [a, ...p]) {
|
|
214
|
+
let t = n.get(e);
|
|
215
|
+
n.delete(e), t?.kind === "file" && (l.delete(e), u.add(e));
|
|
216
|
+
}
|
|
217
|
+
x();
|
|
218
|
+
};
|
|
219
|
+
return {
|
|
220
|
+
mount: _,
|
|
221
|
+
remount: v,
|
|
222
|
+
flush: y,
|
|
223
|
+
exists: w,
|
|
224
|
+
stat: T,
|
|
225
|
+
readFile: E,
|
|
226
|
+
writeFile: O,
|
|
227
|
+
mkdir: k,
|
|
228
|
+
readdir: A,
|
|
229
|
+
remove: j,
|
|
230
|
+
rename: (e, t) => {
|
|
231
|
+
let r = s(e), i = s(t);
|
|
232
|
+
if (!r) throw o("EBUSY", e, "rename");
|
|
233
|
+
if (i === r || i.startsWith(`${r}/`)) throw o("EINVAL", e, "rename");
|
|
234
|
+
if (d.has(r)) throw C(e);
|
|
235
|
+
if (d.has(i)) throw C(t);
|
|
236
|
+
let a = n.get(r);
|
|
237
|
+
if (!a) throw o("ENOENT", e, "rename");
|
|
238
|
+
let f = n.get(i);
|
|
239
|
+
if (f) {
|
|
240
|
+
if (f.kind !== a.kind) throw o(a.kind === "dir" ? "ENOTDIR" : "EISDIR", t, "rename");
|
|
241
|
+
j(i, {
|
|
242
|
+
op: "rm",
|
|
243
|
+
recursive: !0,
|
|
244
|
+
force: !0
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
p(c(i));
|
|
248
|
+
let m = `${r}/`, h = [r, ...[...n.keys()].filter((e) => e.startsWith(m))];
|
|
249
|
+
for (let e of h) {
|
|
250
|
+
let t = i + e.slice(r.length), a = n.get(e);
|
|
251
|
+
n.set(t, a), n.delete(e), a.kind === "file" && (l.add(t), u.delete(t), l.delete(e), u.add(e));
|
|
252
|
+
}
|
|
253
|
+
x();
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
}, g = (e, t) => typeof e == "function" ? e : t, _ = (e) => typeof e == "function" ? void 0 : e, v = (e, t) => {
|
|
257
|
+
e.then((e) => t(null, e), (e) => t(e));
|
|
258
|
+
}, y = (e) => {
|
|
259
|
+
let t = h(e), n = (e, n) => p(t.readFile(l(e)), n), r = (e, n, r) => t.writeFile(l(e), m(n, r), !1, d(r)), i = (e, n, r) => t.writeFile(l(e), m(n, r), !0, d(r)), a = (e) => t.exists(l(e)), s = (e) => t.stat(l(e)), c = (e) => t.readdir(l(e)), u = (e, n) => t.mkdir(l(e), f(n)), v = (e, n) => t.remove(l(e), {
|
|
260
|
+
op: "rm",
|
|
261
|
+
...n
|
|
262
|
+
}), y = (e, n) => t.remove(l(e), {
|
|
263
|
+
op: "rmdir",
|
|
264
|
+
...n
|
|
265
|
+
}), b = (e) => t.remove(l(e), { op: "unlink" }), x = (e, n) => t.rename(l(e), l(n)), S = (e, n) => {
|
|
266
|
+
t.mount().finally(() => {
|
|
267
|
+
let t;
|
|
268
|
+
try {
|
|
269
|
+
t = e();
|
|
270
|
+
} catch (e) {
|
|
271
|
+
n(e);
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
n(null, t);
|
|
275
|
+
});
|
|
276
|
+
}, C = (e) => t.mount().then(() => e());
|
|
277
|
+
return {
|
|
278
|
+
available: e.available,
|
|
279
|
+
readFileSync: n,
|
|
280
|
+
writeFileSync: r,
|
|
281
|
+
appendFileSync: i,
|
|
282
|
+
existsSync: a,
|
|
283
|
+
statSync: s,
|
|
284
|
+
lstatSync: s,
|
|
285
|
+
readdirSync: c,
|
|
286
|
+
mkdirSync: u,
|
|
287
|
+
rmSync: v,
|
|
288
|
+
rmdirSync: y,
|
|
289
|
+
unlinkSync: b,
|
|
290
|
+
renameSync: x,
|
|
291
|
+
readFile: (e, n, r) => S(() => p(t.readFile(l(e)), _(n)), g(n, r)),
|
|
292
|
+
writeFile: (e, n, r, i) => S(() => t.writeFile(l(e), m(n, _(r)), !1, d(_(r))), g(r, i)),
|
|
293
|
+
appendFile: (e, n, r, i) => S(() => t.writeFile(l(e), m(n, _(r)), !0, d(_(r))), g(r, i)),
|
|
294
|
+
stat: (e, n) => S(() => t.stat(l(e)), n),
|
|
295
|
+
readdir: (e, n, r) => S(() => t.readdir(l(e)), g(n, r)),
|
|
296
|
+
mkdir: (e, n, r) => S(() => t.mkdir(l(e), f(_(n))), g(n, r)),
|
|
297
|
+
rm: (e, n, r) => S(() => t.remove(l(e), {
|
|
298
|
+
op: "rm",
|
|
299
|
+
..._(n)
|
|
300
|
+
}), g(n, r)),
|
|
301
|
+
unlink: (e, n) => S(() => t.remove(l(e), { op: "unlink" }), n),
|
|
302
|
+
rename: (e, n, r) => S(() => t.rename(l(e), l(n)), r),
|
|
303
|
+
exists: (e, n) => {
|
|
304
|
+
t.mount().finally(() => n(t.exists(l(e))));
|
|
305
|
+
},
|
|
306
|
+
promises: {
|
|
307
|
+
readFile: (e, n) => C(() => p(t.readFile(l(e)), n)),
|
|
308
|
+
writeFile: (e, n, r) => C(() => t.writeFile(l(e), m(n, r), !1, d(r))),
|
|
309
|
+
appendFile: (e, n, r) => C(() => t.writeFile(l(e), m(n, r), !0, d(r))),
|
|
310
|
+
stat: (e) => C(() => t.stat(l(e))),
|
|
311
|
+
lstat: (e) => C(() => t.stat(l(e))),
|
|
312
|
+
readdir: (e) => C(() => t.readdir(l(e))),
|
|
313
|
+
mkdir: (e, n) => C(() => t.mkdir(l(e), f(n))),
|
|
314
|
+
rm: (e, n) => C(() => t.remove(l(e), {
|
|
315
|
+
op: "rm",
|
|
316
|
+
...n
|
|
317
|
+
})),
|
|
318
|
+
rmdir: (e, n) => C(() => t.remove(l(e), {
|
|
319
|
+
op: "rmdir",
|
|
320
|
+
...n
|
|
321
|
+
})),
|
|
322
|
+
unlink: (e) => C(() => t.remove(l(e), { op: "unlink" })),
|
|
323
|
+
rename: (e, n) => C(() => t.rename(l(e), l(n))),
|
|
324
|
+
access: (e) => C(() => {
|
|
325
|
+
if (!t.exists(l(e))) throw o("ENOENT", l(e), "access");
|
|
326
|
+
})
|
|
327
|
+
},
|
|
328
|
+
mount: t.mount,
|
|
329
|
+
flush: t.flush,
|
|
330
|
+
remount: t.remount
|
|
331
|
+
};
|
|
332
|
+
}, b = (e) => {
|
|
333
|
+
let t = async (t, n) => {
|
|
334
|
+
let r = await e.readFile(l(t));
|
|
335
|
+
return p(new Uint8Array(await r.arrayBuffer()), n);
|
|
336
|
+
}, n = async (t, n, i) => {
|
|
337
|
+
let a = l(t), o = r(a, d(i));
|
|
338
|
+
await e.writeFile(a, m(n, i), o ? { contentType: o } : void 0);
|
|
339
|
+
}, c = (t) => e.remove(l(t)), u = async (t, n) => {
|
|
340
|
+
let r = s(l(t)), i = s(l(n));
|
|
341
|
+
if (r === i) return;
|
|
342
|
+
let a = await e.readFile(r);
|
|
343
|
+
await e.writeFile(i, a), await e.remove(r);
|
|
344
|
+
}, f = async (t) => {
|
|
345
|
+
let n = s(l(t)), r = n ? `${n}/` : "", i = /* @__PURE__ */ new Set();
|
|
346
|
+
for (let t of await e.list()) {
|
|
347
|
+
let e = s(t.path);
|
|
348
|
+
if (r && !e.startsWith(r)) continue;
|
|
349
|
+
let n = e.slice(r.length);
|
|
350
|
+
n && i.add(n.split("/")[0]);
|
|
351
|
+
}
|
|
352
|
+
return [...i];
|
|
353
|
+
}, h = async (e, t) => {}, y = async (t, n) => {
|
|
354
|
+
let r = s(l(t));
|
|
355
|
+
if (!n?.recursive) {
|
|
356
|
+
await e.remove(l(t));
|
|
357
|
+
return;
|
|
358
|
+
}
|
|
359
|
+
let i = `${r}/`, a = await e.list();
|
|
360
|
+
await Promise.all(a.filter((e) => {
|
|
361
|
+
let t = s(e.path);
|
|
362
|
+
return t === r || t.startsWith(i);
|
|
363
|
+
}).map((t) => e.remove(t.path).catch(() => {})));
|
|
364
|
+
}, b = async (t) => {
|
|
365
|
+
let n = s(l(t)), r = await e.list(), c = r.find((e) => s(e.path) === n);
|
|
366
|
+
if (c) {
|
|
367
|
+
let e = Date.parse(c.updatedAt ?? "");
|
|
368
|
+
return i(c.size, Number.isFinite(e) ? e : 0);
|
|
369
|
+
}
|
|
370
|
+
if (r.some((e) => s(e.path).startsWith(`${n}/`))) return a();
|
|
371
|
+
throw o("ENOENT", l(t), "stat");
|
|
372
|
+
}, x = {
|
|
373
|
+
readFile: t,
|
|
374
|
+
writeFile: n,
|
|
375
|
+
unlink: c,
|
|
376
|
+
rename: u,
|
|
377
|
+
readdir: f,
|
|
378
|
+
mkdir: h,
|
|
379
|
+
rm: y,
|
|
380
|
+
rmdir: y,
|
|
381
|
+
stat: b,
|
|
382
|
+
lstat: b,
|
|
383
|
+
access: async (e) => {
|
|
384
|
+
await b(e);
|
|
385
|
+
}
|
|
386
|
+
};
|
|
387
|
+
return {
|
|
388
|
+
available: e.available,
|
|
389
|
+
promises: x,
|
|
390
|
+
readFile: (e, n, r) => v(t(e, _(n)), g(n, r)),
|
|
391
|
+
writeFile: (e, t, r, i) => v(n(e, t, _(r)), g(r, i)),
|
|
392
|
+
unlink: (e, t) => v(c(e), t),
|
|
393
|
+
rename: (e, t, n) => v(u(e, t), n),
|
|
394
|
+
readdir: (e, t, n) => v(f(e), g(t, n)),
|
|
395
|
+
mkdir: (e, t, n) => v(h(), g(t, n)),
|
|
396
|
+
rm: (e, t, n) => v(y(e, _(t)), g(t, n)),
|
|
397
|
+
stat: (e, t) => v(b(e), t)
|
|
398
|
+
};
|
|
399
|
+
};
|
|
400
|
+
function x(e, t) {
|
|
401
|
+
return t.memfs ? y(e) : b(e);
|
|
402
|
+
}
|
|
403
|
+
//#endregion
|
|
404
|
+
export { x as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./busy-Dv8wzE5M.cjs");let t=require("buffer");var n={json:`application/json`,txt:`text/plain`,html:`text/html`,htm:`text/html`,css:`text/css`,js:`text/javascript`,mjs:`text/javascript`,xml:`application/xml`,csv:`text/csv`,md:`text/markdown`,svg:`image/svg+xml`,png:`image/png`,jpg:`image/jpeg`,jpeg:`image/jpeg`,gif:`image/gif`,webp:`image/webp`,pdf:`application/pdf`,wasm:`application/wasm`},r=(e,t)=>{if(t)return t;let r=e.split(`/`).pop()??``,i=r.lastIndexOf(`.`);if(!(i<=0))return n[r.slice(i+1).toLowerCase()]},i=(e,t)=>({size:e,mtimeMs:t,mtime:new Date(t),atimeMs:t,ctimeMs:t,mode:420,isFile:()=>!0,isDirectory:()=>!1,isSymbolicLink:()=>!1}),a=(e=0)=>({size:0,mtimeMs:e,mtime:new Date(e),atimeMs:e,ctimeMs:e,mode:493,isFile:()=>!1,isDirectory:()=>!0,isSymbolicLink:()=>!1}),o=(e,t,n)=>{let r=Error(`${e}: ${{ENOENT:`no such file or directory`,EEXIST:`file already exists`,ENOTDIR:`not a directory`,EISDIR:`illegal operation on a directory`,ENOTEMPTY:`directory not empty`,ERR_FS_EISDIR:`is a directory`}[e]??e}, ${n} '${t}'`);return r.code=e,r.path=t,r.syscall=n,r},s=e=>{let t=[];for(let n of e.split(`/`))if(!(!n||n===`.`)){if(n===`..`){t.pop();continue}t.push(n)}return t.join(`/`)},c=e=>e.split(`/`).slice(0,-1).join(`/`),l=e=>typeof e==`string`?e:e instanceof URL?decodeURIComponent(e.pathname):e.toString(),u=e=>typeof e==`string`?e:e?.encoding??void 0,d=e=>typeof e==`object`?e?.contentType:void 0,f=e=>typeof e==`object`&&!!e?.recursive,p=(e,n)=>{let r=u(n);return r?t.Buffer.from(e).toString(r):t.Buffer.from(e)},m=(e,n)=>{if(typeof e==`string`)return new Uint8Array(t.Buffer.from(e,u(n)??`utf8`));if(e instanceof Uint8Array)return e.slice();if(e instanceof ArrayBuffer)return new Uint8Array(e).slice();if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength).slice();throw TypeError(`The "data" argument must be of type string, Buffer, TypedArray, or DataView`)},h=t=>{let n=new Map([[``,{kind:`dir`,mtimeMs:0}]]),l=new Set,u=new Set;e.r(`unsaved files`,()=>l.size>0||u.size>0);let d=new Set,f=()=>Date.now(),p=e=>{if(!e)return;let t=e.split(`/`),r=``;for(let e of t){r=r?`${r}/${e}`:e;let t=n.get(r);if(!t)n.set(r,{kind:`dir`,mtimeMs:f()});else if(t.kind===`file`)throw o(`ENOTDIR`,r,`mkdir`)}},m,h=0,g=async()=>{let e=await t.list().catch(()=>[]),r=new Set,i=!1;for(let a of e){let e=s(a.path);if(r.add(e),!u.has(e)&&!(l.has(e)&&!d.has(e)))try{let r=await(await t.readFile(a.path)).arrayBuffer();if(u.has(e)||l.has(e)&&!d.has(e))continue;p(c(e));let i=Date.parse(a.updatedAt??``);n.set(e,{kind:`file`,data:new Uint8Array(r),mtimeMs:Number.isFinite(i)?i:f(),contentType:a.contentType??void 0}),d.delete(e),l.delete(e)}catch{i=!0,d.add(e)}}for(let e of d)r.has(e)||d.delete(e);h=i?Date.now():0},_=()=>(m&&(h===0||Date.now()-h<5e3)||(m=g()),m),v=async()=>{m=void 0,h=0,await _()},y=async()=>{let e=[...l].map(async e=>{if(d.has(e))return;let i=n.get(e);if(i?.kind!==`file`){l.delete(e);return}let a=i.data,o=r(e,i.contentType);try{await t.writeFile(e,a,o?{contentType:o}:void 0);let r=n.get(e);r?.kind===`file`&&r.data===a&&l.delete(e)}catch{}}),i=[...u].map(async e=>{try{await t.remove(e),u.delete(e)}catch{}});await Promise.all([...e,...i])},b,x=()=>{b||=setTimeout(()=>{b=void 0,y().catch(()=>{})},250)};typeof addEventListener<`u`&&(addEventListener(`pagehide`,()=>{y().catch(()=>{})}),addEventListener(`visibilitychange`,()=>{typeof document<`u`&&document.visibilityState===`hidden`&&y().catch(()=>{})}));let S=e=>e.kind===`file`?i(e.data.byteLength,e.mtimeMs):a(e.mtimeMs),C=e=>Object.assign(Error(`storage: ${e} exists but could not be read, retry once its scope is available`),{code:`FKN_E2E_LOCKED`}),w=e=>{let t=s(e);return n.has(t)||d.has(t)},T=e=>{let t=s(e),r=n.get(t);if(!r)throw d.has(t)?C(e):o(`ENOENT`,e,`stat`);return S(r)},E=e=>{let t=s(e),r=n.get(t);if(!r)throw d.has(t)?C(e):o(`ENOENT`,e,`open`);if(r.kind===`dir`)throw o(`EISDIR`,e,`read`);return r.data},D=(e,t)=>{let n=new Uint8Array(e.byteLength+t.byteLength);return n.set(e,0),n.set(t,e.byteLength),n},O=(e,t,r,i)=>{let a=s(e);if(!a)throw o(`EISDIR`,e,`open`);if(d.has(a))throw C(e);let m=n.get(a);if(m?.kind===`dir`)throw o(`EISDIR`,e,`open`);p(c(a));let h=r&&m?.kind===`file`?D(m.data,t):t;n.set(a,{kind:`file`,data:h,mtimeMs:f(),contentType:i??(m?.kind===`file`?m.contentType:void 0)}),l.add(a),u.delete(a),x()},k=(e,t)=>{let r=s(e);if(r){if(n.has(r)){if(t)return;throw o(`EEXIST`,e,`mkdir`)}if(!t&&!n.has(c(r)))throw o(`ENOENT`,e,`mkdir`);p(r)}},A=e=>{let t=s(e),r=n.get(t);if(!r)throw o(`ENOENT`,e,`scandir`);if(r.kind===`file`)throw o(`ENOTDIR`,e,`scandir`);let i=t?`${t}/`:``,a=new Set;for(let e of[...n.keys(),...d]){if(!e||!e.startsWith(i))continue;let t=e.slice(i.length);t&&a.add(t.split(`/`)[0])}return[...a]},j=(e,{op:t,recursive:r,force:i})=>{let a=s(e),c=n.get(a);if(!c&&d.has(a)){if(t===`rmdir`)throw o(`ENOTDIR`,e,`rmdir`);d.delete(a),l.delete(a),u.add(a),x();return}if(!c){if(i||t===`rmdir`&&r)return;throw o(`ENOENT`,e,t===`rmdir`?`rmdir`:`unlink`)}if(t===`unlink`&&c.kind===`dir`)throw o(`EISDIR`,e,`unlink`);if(t===`rmdir`&&c.kind===`file`)throw o(`ENOTDIR`,e,`rmdir`);if(t===`rm`&&c.kind===`dir`&&!r)throw o(`ERR_FS_EISDIR`,e,`rm`);let f=`${a}/`,p=[...n.keys()].filter(e=>e.startsWith(f));if(p.length&&!r)throw o(`ENOTEMPTY`,e,`rmdir`);for(let e of[a,...p]){let t=n.get(e);n.delete(e),t?.kind===`file`&&(l.delete(e),u.add(e))}x()};return{mount:_,remount:v,flush:y,exists:w,stat:T,readFile:E,writeFile:O,mkdir:k,readdir:A,remove:j,rename:(e,t)=>{let r=s(e),i=s(t);if(!r)throw o(`EBUSY`,e,`rename`);if(i===r||i.startsWith(`${r}/`))throw o(`EINVAL`,e,`rename`);if(d.has(r))throw C(e);if(d.has(i))throw C(t);let a=n.get(r);if(!a)throw o(`ENOENT`,e,`rename`);let f=n.get(i);if(f){if(f.kind!==a.kind)throw o(a.kind===`dir`?`ENOTDIR`:`EISDIR`,t,`rename`);j(i,{op:`rm`,recursive:!0,force:!0})}p(c(i));let m=`${r}/`,h=[r,...[...n.keys()].filter(e=>e.startsWith(m))];for(let e of h){let t=i+e.slice(r.length),a=n.get(e);n.set(t,a),n.delete(e),a.kind===`file`&&(l.add(t),u.delete(t),l.delete(e),u.add(e))}x()}}},g=(e,t)=>typeof e==`function`?e:t,_=e=>typeof e==`function`?void 0:e,v=(e,t)=>{e.then(e=>t(null,e),e=>t(e))},y=e=>{let t=h(e),n=(e,n)=>p(t.readFile(l(e)),n),r=(e,n,r)=>t.writeFile(l(e),m(n,r),!1,d(r)),i=(e,n,r)=>t.writeFile(l(e),m(n,r),!0,d(r)),a=e=>t.exists(l(e)),s=e=>t.stat(l(e)),c=e=>t.readdir(l(e)),u=(e,n)=>t.mkdir(l(e),f(n)),v=(e,n)=>t.remove(l(e),{op:`rm`,...n}),y=(e,n)=>t.remove(l(e),{op:`rmdir`,...n}),b=e=>t.remove(l(e),{op:`unlink`}),x=(e,n)=>t.rename(l(e),l(n)),S=(e,n)=>{t.mount().finally(()=>{let t;try{t=e()}catch(e){n(e);return}n(null,t)})},C=e=>t.mount().then(()=>e());return{available:e.available,readFileSync:n,writeFileSync:r,appendFileSync:i,existsSync:a,statSync:s,lstatSync:s,readdirSync:c,mkdirSync:u,rmSync:v,rmdirSync:y,unlinkSync:b,renameSync:x,readFile:(e,n,r)=>S(()=>p(t.readFile(l(e)),_(n)),g(n,r)),writeFile:(e,n,r,i)=>S(()=>t.writeFile(l(e),m(n,_(r)),!1,d(_(r))),g(r,i)),appendFile:(e,n,r,i)=>S(()=>t.writeFile(l(e),m(n,_(r)),!0,d(_(r))),g(r,i)),stat:(e,n)=>S(()=>t.stat(l(e)),n),readdir:(e,n,r)=>S(()=>t.readdir(l(e)),g(n,r)),mkdir:(e,n,r)=>S(()=>t.mkdir(l(e),f(_(n))),g(n,r)),rm:(e,n,r)=>S(()=>t.remove(l(e),{op:`rm`,..._(n)}),g(n,r)),unlink:(e,n)=>S(()=>t.remove(l(e),{op:`unlink`}),n),rename:(e,n,r)=>S(()=>t.rename(l(e),l(n)),r),exists:(e,n)=>{t.mount().finally(()=>n(t.exists(l(e))))},promises:{readFile:(e,n)=>C(()=>p(t.readFile(l(e)),n)),writeFile:(e,n,r)=>C(()=>t.writeFile(l(e),m(n,r),!1,d(r))),appendFile:(e,n,r)=>C(()=>t.writeFile(l(e),m(n,r),!0,d(r))),stat:e=>C(()=>t.stat(l(e))),lstat:e=>C(()=>t.stat(l(e))),readdir:e=>C(()=>t.readdir(l(e))),mkdir:(e,n)=>C(()=>t.mkdir(l(e),f(n))),rm:(e,n)=>C(()=>t.remove(l(e),{op:`rm`,...n})),rmdir:(e,n)=>C(()=>t.remove(l(e),{op:`rmdir`,...n})),unlink:e=>C(()=>t.remove(l(e),{op:`unlink`})),rename:(e,n)=>C(()=>t.rename(l(e),l(n))),access:e=>C(()=>{if(!t.exists(l(e)))throw o(`ENOENT`,l(e),`access`)})},mount:t.mount,flush:t.flush,remount:t.remount}},b=e=>{let t=async(t,n)=>{let r=await e.readFile(l(t));return p(new Uint8Array(await r.arrayBuffer()),n)},n=async(t,n,i)=>{let a=l(t),o=r(a,d(i));await e.writeFile(a,m(n,i),o?{contentType:o}:void 0)},c=t=>e.remove(l(t)),u=async(t,n)=>{let r=s(l(t)),i=s(l(n));if(r===i)return;let a=await e.readFile(r);await e.writeFile(i,a),await e.remove(r)},f=async t=>{let n=s(l(t)),r=n?`${n}/`:``,i=new Set;for(let t of await e.list()){let e=s(t.path);if(r&&!e.startsWith(r))continue;let n=e.slice(r.length);n&&i.add(n.split(`/`)[0])}return[...i]},h=async(e,t)=>{},y=async(t,n)=>{let r=s(l(t));if(!n?.recursive){await e.remove(l(t));return}let i=`${r}/`,a=await e.list();await Promise.all(a.filter(e=>{let t=s(e.path);return t===r||t.startsWith(i)}).map(t=>e.remove(t.path).catch(()=>{})))},b=async t=>{let n=s(l(t)),r=await e.list(),c=r.find(e=>s(e.path)===n);if(c){let e=Date.parse(c.updatedAt??``);return i(c.size,Number.isFinite(e)?e:0)}if(r.some(e=>s(e.path).startsWith(`${n}/`)))return a();throw o(`ENOENT`,l(t),`stat`)},x={readFile:t,writeFile:n,unlink:c,rename:u,readdir:f,mkdir:h,rm:y,rmdir:y,stat:b,lstat:b,access:async e=>{await b(e)}};return{available:e.available,promises:x,readFile:(e,n,r)=>v(t(e,_(n)),g(n,r)),writeFile:(e,t,r,i)=>v(n(e,t,_(r)),g(r,i)),unlink:(e,t)=>v(c(e),t),rename:(e,t,n)=>v(u(e,t),n),readdir:(e,t,n)=>v(f(e),g(t,n)),mkdir:(e,t,n)=>v(h(),g(t,n)),rm:(e,t,n)=>v(y(e,_(t)),g(t,n)),stat:(e,t)=>v(b(e),t)}};function x(e,t){return t.memfs?y(e):b(e)}Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return x}});
|
package/opfs.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./node-fs-
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./node-fs-DZPGCYWg.cjs"),n=require("./opfs-CXMESVLc.cjs");var r=e.t({appendFile:()=>b,appendFileSync:()=>c,available:()=>a,default:()=>i,exists:()=>D,existsSync:()=>l,flush:()=>A,lstatSync:()=>d,mkdir:()=>C,mkdirSync:()=>p,mount:()=>k,promises:()=>O,readFile:()=>v,readFileSync:()=>o,readdir:()=>S,readdirSync:()=>f,remount:()=>j,rename:()=>E,renameSync:()=>_,rm:()=>w,rmSync:()=>m,rmdirSync:()=>h,stat:()=>x,statSync:()=>u,unlink:()=>T,unlinkSync:()=>g,writeFile:()=>y,writeFileSync:()=>s}),i=t.t(n.r,{memfs:!0}),{available:a,readFileSync:o,writeFileSync:s,appendFileSync:c,existsSync:l,statSync:u,lstatSync:d,readdirSync:f,mkdirSync:p,rmSync:m,rmdirSync:h,unlinkSync:g,renameSync:_,readFile:v,writeFile:y,appendFile:b,stat:x,readdir:S,mkdir:C,rm:w,unlink:T,rename:E,exists:D,promises:O,mount:k,flush:A,remount:j}=i;exports.appendFile=b,exports.appendFileSync=c,exports.available=a,exports.default=i,exports.exists=D,exports.existsSync=l,exports.flush=A,exports.lstatSync=d,exports.mkdir=C,exports.mkdirSync=p,exports.mount=k,exports.promises=O,exports.readFile=v,exports.readFileSync=o,exports.readdir=S,exports.readdirSync=f,exports.remount=j,exports.rename=E,exports.renameSync=_,exports.rm=w,exports.rmSync=m,exports.rmdirSync=h,exports.stat=x,exports.statSync=u,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return r}}),exports.unlink=T,exports.unlinkSync=g,exports.writeFile=y,exports.writeFileSync=s;
|