@fkn/lib 0.5.4 → 0.6.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.
Files changed (192) hide show
  1. package/account.cjs +1 -1
  2. package/account.js +2 -2
  3. package/api/account.d.ts +7 -0
  4. package/api/broker-bridge.d.ts +12 -0
  5. package/api/connect-store.d.ts +9 -0
  6. package/api/connect.d.ts +2 -0
  7. package/api/data-plane.d.ts +28 -0
  8. package/api/dns/index.d.ts +1 -0
  9. package/api/dns/lookup.d.ts +8 -0
  10. package/api/index.d.ts +78 -0
  11. package/api/install-prompt.d.ts +2 -0
  12. package/api/local-net/index.d.ts +43 -0
  13. package/api/overlay-mount.d.ts +2 -0
  14. package/api/overlay.d.ts +17 -0
  15. package/api/packages/host.d.ts +12 -0
  16. package/api/packages/identity.d.ts +1 -0
  17. package/api/packages/index.d.ts +34 -0
  18. package/api/packages/picker.d.ts +28 -0
  19. package/api/packages/registry.d.ts +20 -0
  20. package/api/packages/store.d.ts +6 -0
  21. package/api/packages/types.d.ts +56 -0
  22. package/api/preconnect.d.ts +1 -0
  23. package/api/proxy/index.d.ts +1 -0
  24. package/api/proxy/proxy-fetch.d.ts +5 -0
  25. package/api/quota.d.ts +10 -0
  26. package/api/rate-token.d.ts +3 -0
  27. package/api/session-limit.d.ts +1 -0
  28. package/api/storage.d.ts +20 -0
  29. package/api/toast.d.ts +1 -0
  30. package/api/token-source.d.ts +4 -0
  31. package/api/ui-events.d.ts +8 -0
  32. package/api/ui-host.d.ts +2 -0
  33. package/api/webvpn/index.d.ts +3 -0
  34. package/api/webvpn/packets/metadata.d.ts +31 -0
  35. package/api/webvpn/packets/tcp-listener.d.ts +39 -0
  36. package/api/webvpn/packets/tcp.d.ts +88 -0
  37. package/api/webvpn/packets/udp.d.ts +183 -0
  38. package/api/webvpn/packets/utils.d.ts +24 -0
  39. package/api/webvpn/tcp-listener.d.ts +11 -0
  40. package/api/webvpn/tcp.d.ts +33 -0
  41. package/api/webvpn/udp.d.ts +33 -0
  42. package/api/webvpn/utils.d.ts +26 -0
  43. package/api/webvpn/webtransport.d.ts +62 -0
  44. package/api/worker/client.d.ts +3 -0
  45. package/api/worker/protocol.d.ts +15 -0
  46. package/{api-CDb2pv7C.cjs → api-DD5v1qP9.cjs} +1 -1
  47. package/{background-TtzKw6g0.js → background-BVBbBOmL.js} +41 -66
  48. package/background-B_VgpARk.cjs +1 -0
  49. package/cloud/dgram.cjs +1 -1
  50. package/cloud/dgram.js +2 -4
  51. package/cloud/dns.cjs +1 -1
  52. package/cloud/dns.js +0 -1
  53. package/cloud/fs/promises.cjs +1 -1
  54. package/cloud/fs/promises.js +0 -3
  55. package/cloud/fs.cjs +1 -1
  56. package/cloud/fs.js +3 -4
  57. package/cloud/http.cjs +1 -1
  58. package/cloud/http.js +0 -3
  59. package/cloud/net.cjs +1 -1
  60. package/cloud/net.js +2 -3
  61. package/cloud-5o7yJHeX.cjs +1 -0
  62. package/cloud-BFyf2uC7.js +112 -0
  63. package/cloud.cjs +1 -1
  64. package/cloud.js +8 -12
  65. package/connect-button-BBEjXzB3.cjs +1 -0
  66. package/connect-button-Ds9KpXHe.js +7 -0
  67. package/desktop.cjs +1 -1
  68. package/desktop.js +1 -1
  69. package/dgram-CE43gJq9.cjs +1 -0
  70. package/{dgram-DS5_yPc5.js → dgram-wtjARbt0.js} +30 -22
  71. package/dgram.cjs +1 -1
  72. package/dgram.js +1 -3
  73. package/dns.cjs +1 -1
  74. package/dns.js +2 -2
  75. package/extension-CPj10qwa.js +67 -0
  76. package/extension-D-NUXxzF.cjs +1 -0
  77. package/extension.cjs +1 -1
  78. package/extension.js +3 -5
  79. package/fs/promises.cjs +1 -1
  80. package/fs/promises.js +1 -4
  81. package/fs-BfmfMBiw.cjs +1 -0
  82. package/{fs-CQ-eWjXw.js → fs-D6nNf1mR.js} +4 -4
  83. package/fs.cjs +1 -1
  84. package/fs.js +1 -4
  85. package/http.cjs +2 -2
  86. package/http.js +7 -7
  87. package/index.cjs +1 -1
  88. package/index.js +23 -38
  89. package/{account.d.ts → lib/account.d.ts} +5 -8
  90. package/lib/api.d.ts +300 -0
  91. package/lib/auto.d.ts +5 -0
  92. package/lib/cloud/dgram.d.ts +2 -0
  93. package/lib/cloud/dns.d.ts +1 -0
  94. package/lib/cloud/frame.d.ts +3 -0
  95. package/lib/cloud/fs-promises.d.ts +5 -0
  96. package/lib/cloud/fs.d.ts +22 -0
  97. package/lib/cloud/http.d.ts +2 -0
  98. package/lib/cloud/net.d.ts +2 -0
  99. package/lib/cloud.d.ts +10 -0
  100. package/lib/connect-button.d.ts +1 -0
  101. package/lib/connect.d.ts +1 -0
  102. package/{desktop.d.ts → lib/desktop.d.ts} +6 -8
  103. package/lib/dns.d.ts +6 -0
  104. package/lib/dom.d.ts +2 -0
  105. package/lib/extension-prompt.d.ts +1 -0
  106. package/lib/extension.d.ts +4 -0
  107. package/lib/fkn-target.d.ts +1 -0
  108. package/lib/frame.d.ts +2 -0
  109. package/lib/fs/content-type.d.ts +1 -0
  110. package/lib/fs/hybrid.d.ts +10 -0
  111. package/lib/fs/index.d.ts +87 -0
  112. package/lib/fs/opfs.d.ts +8 -0
  113. package/lib/fs/promises.d.ts +8 -0
  114. package/lib/fs/types.d.ts +16 -0
  115. package/lib/index.d.ts +18 -0
  116. package/lib/node-fs/index.d.ts +95 -0
  117. package/lib/node-fs/shared.d.ts +39 -0
  118. package/lib/node-fs/store.d.ts +21 -0
  119. package/lib/opfs/index.d.ts +84 -0
  120. package/lib/opfs/promises.d.ts +8 -0
  121. package/lib/overlay.d.ts +14 -0
  122. package/lib/packages.d.ts +69 -0
  123. package/lib/proxy.d.ts +5 -0
  124. package/lib/quota.d.ts +20 -0
  125. package/lib/react.d.ts +7 -0
  126. package/lib/relay.d.ts +5 -0
  127. package/lib/storage.d.ts +22 -0
  128. package/lib/webvpn/dgram.d.ts +86 -0
  129. package/lib/webvpn/http.d.ts +180 -0
  130. package/lib/webvpn/index.d.ts +1 -0
  131. package/lib/webvpn/net.d.ts +132 -0
  132. package/lib/webvpn/utils.d.ts +32 -0
  133. package/net-CpuAhaQC.cjs +1 -0
  134. package/{net-Bl6_W3bd.js → net-DKMWPXb_.js} +3 -3
  135. package/net.cjs +1 -1
  136. package/net.js +2 -3
  137. package/node-fs-C0eKnboT.cjs +1 -0
  138. package/{node-fs-Bd_UUx1m.js → node-fs-Dbf93qP7.js} +40 -17
  139. package/opfs/promises.cjs +1 -1
  140. package/opfs/promises.js +2 -3
  141. package/{opfs-BfcYLPGb.js → opfs-7_GmzQ93.js} +1 -1
  142. package/opfs-uClkgnb5.cjs +1 -0
  143. package/opfs.cjs +1 -1
  144. package/opfs.js +33 -32
  145. package/package.json +31 -21
  146. package/packages.cjs +1 -0
  147. package/packages.js +150 -0
  148. package/{locator-DxAsGV_o.js → proxy-C8SG1Beo.js} +542 -344
  149. package/proxy-bPaU3-Cz.cjs +53 -0
  150. package/react.cjs +1 -0
  151. package/react.js +18 -0
  152. package/{chunk-CPXzm0be.js → rolldown-runtime-DF993M8W.js} +1 -1
  153. package/rolldown-runtime-Doa5O59j.cjs +1 -0
  154. package/sandbox.d.ts +7 -0
  155. package/storage-OkwsFLN1.cjs +1 -0
  156. package/{storage-BcJfnkm3.js → storage-TmeyhZGt.js} +2 -2
  157. package/{utils-BsNRWMfl.cjs → utils-CoimMjf9.cjs} +1 -1
  158. package/background-Dk_vaVP1.cjs +0 -1
  159. package/chunk-B6C_zzib.cjs +0 -1
  160. package/cloud/dgram.d.ts +0 -537
  161. package/cloud/dns.d.ts +0 -12
  162. package/cloud/fs/promises.d.ts +0 -45
  163. package/cloud/fs.d.ts +0 -75
  164. package/cloud/http.d.ts +0 -767
  165. package/cloud/net.d.ts +0 -606
  166. package/cloud-BrY9dKwV.cjs +0 -1
  167. package/cloud-C-LK4DWa.js +0 -33
  168. package/cloud.d.ts +0 -1053
  169. package/dgram-C5rGcbej.cjs +0 -1
  170. package/dgram.d.ts +0 -541
  171. package/dns.d.ts +0 -12
  172. package/extension-9Uv_0HdS.cjs +0 -1
  173. package/extension-Dgz0UTy0.js +0 -245
  174. package/extension.d.ts +0 -852
  175. package/favicon.svg +0 -5
  176. package/fs/promises.d.ts +0 -65
  177. package/fs-Bc6087fG.cjs +0 -1
  178. package/fs.d.ts +0 -138
  179. package/http.d.ts +0 -767
  180. package/index.d.ts +0 -2254
  181. package/locator-Cf7M3QKN.cjs +0 -53
  182. package/net-C5kWnI4C.cjs +0 -1
  183. package/net.d.ts +0 -606
  184. package/node-fs-lrlD_zqB.cjs +0 -1
  185. package/opfs/promises.d.ts +0 -46
  186. package/opfs-Dsi4FkJU.cjs +0 -1
  187. package/opfs.d.ts +0 -83
  188. package/proxy-A9UvWUaF.cjs +0 -1
  189. package/proxy-wiZN4eTR.js +0 -14
  190. package/storage-C2-_-bTO.cjs +0 -1
  191. /package/{api-ByfayMm1.js → api--bnCFd4w.js} +0 -0
  192. /package/{utils-CNydj3OT.js → utils-DPtyxGQu.js} +0 -0
@@ -0,0 +1,180 @@
1
+ import type { IncomingHttpHeaders, OutgoingHttpHeaders, RequestOptions } from 'http';
2
+ import { Stream } from 'stream';
3
+ import { Buffer } from 'buffer';
4
+ import { Socket as NetSocket, Server as NetServer } from './net';
5
+ export declare const METHODS: string[];
6
+ export declare const STATUS_CODES: Record<number, string>;
7
+ export interface ParsedHead {
8
+ /** request only */
9
+ method?: string;
10
+ /** request only */
11
+ url?: string;
12
+ /** response only */
13
+ statusCode?: number;
14
+ /** response only */
15
+ statusMessage?: string;
16
+ httpVersionMajor: number;
17
+ httpVersionMinor: number;
18
+ httpVersion: string;
19
+ headers: IncomingHttpHeaders;
20
+ rawHeaders: string[];
21
+ }
22
+ interface ParserHandlers {
23
+ onHeaders: (head: ParsedHead) => void;
24
+ onBody: (chunk: Uint8Array) => void;
25
+ onComplete: () => void;
26
+ }
27
+ export declare class HTTPParser {
28
+ private readonly mode;
29
+ private readonly handlers;
30
+ private buf;
31
+ private state;
32
+ private framing;
33
+ private bodyRemaining;
34
+ private chunkState;
35
+ skipBody: boolean;
36
+ constructor(mode: 'request' | 'response', handlers: ParserHandlers);
37
+ execute(chunk: Uint8Array): void;
38
+ finish(): void;
39
+ private reset;
40
+ private parseHead;
41
+ private applyVersion;
42
+ private addHeader;
43
+ private setupBody;
44
+ private consumeBody;
45
+ private consumeChunked;
46
+ }
47
+ export declare class IncomingMessage extends Stream.Readable {
48
+ httpVersion: string;
49
+ httpVersionMajor: number;
50
+ httpVersionMinor: number;
51
+ headers: IncomingHttpHeaders;
52
+ rawHeaders: string[];
53
+ trailers: Record<string, string>;
54
+ rawTrailers: string[];
55
+ /** request only */
56
+ method?: string;
57
+ /** request only */
58
+ url?: string;
59
+ /** response only */
60
+ statusCode?: number;
61
+ /** response only */
62
+ statusMessage?: string;
63
+ complete: boolean;
64
+ socket: NetSocket;
65
+ constructor(socket: NetSocket);
66
+ get connection(): NetSocket;
67
+ _applyHead(head: ParsedHead): void;
68
+ _read(): void;
69
+ setTimeout(msecs: number, callback?: () => void): this;
70
+ }
71
+ declare abstract class OutgoingMessage extends Stream.Writable {
72
+ private _headerStore;
73
+ headersSent: boolean;
74
+ chunkedEncoding: boolean;
75
+ finished: boolean;
76
+ protected _bodyWritten: boolean;
77
+ abstract socket: NetSocket | null;
78
+ setHeader(name: string, value: number | string | readonly string[]): this;
79
+ getHeader(name: string): number | string | string[] | undefined;
80
+ getHeaderNames(): string[];
81
+ getHeaders(): OutgoingHttpHeaders;
82
+ hasHeader(name: string): boolean;
83
+ removeHeader(name: string): void;
84
+ protected _storeHeader(startLine: string): string;
85
+ protected abstract _shouldSendBody(): boolean;
86
+ protected abstract _implicitHeader(): void;
87
+ protected _writeToSocket(data: Buffer, callback: (error?: Error | null) => void): void;
88
+ write(chunk: unknown, encoding?: BufferEncoding | ((error: Error | null | undefined) => void), callback?: (error: Error | null | undefined) => void): boolean;
89
+ _write(chunk: Buffer, _encoding: BufferEncoding, callback: (error?: Error | null) => void): void;
90
+ _final(callback: (error?: Error | null) => void): void;
91
+ end(chunk?: unknown, encoding?: BufferEncoding | (() => void), callback?: () => void): this;
92
+ protected _headBlock?: string;
93
+ }
94
+ export interface ServerResponseOptions {
95
+ req: IncomingMessage;
96
+ }
97
+ export declare class ServerResponse extends OutgoingMessage {
98
+ statusCode: number;
99
+ statusMessage?: string;
100
+ private _writeHeadCalled;
101
+ sendDate: boolean;
102
+ req: IncomingMessage;
103
+ socket: NetSocket | null;
104
+ _keepAlive: boolean;
105
+ constructor(req: IncomingMessage);
106
+ protected _shouldSendBody(): boolean;
107
+ writeHead(statusCode: number, statusMessage?: string | OutgoingHttpHeaders | OutgoingHttpHeaders[keyof OutgoingHttpHeaders][], headers?: OutgoingHttpHeaders): this;
108
+ private _appendHeader;
109
+ protected _implicitHeader(): void;
110
+ writeContinue(): void;
111
+ setTimeout(msecs: number, callback?: () => void): this;
112
+ }
113
+ export interface ClientRequestArgs extends RequestOptions {
114
+ host?: string;
115
+ hostname?: string;
116
+ port?: number | string;
117
+ path?: string;
118
+ }
119
+ export declare class ClientRequest extends OutgoingMessage {
120
+ method: string;
121
+ path: string;
122
+ host: string;
123
+ protocol: string;
124
+ socket: NetSocket;
125
+ /** alias retained for Node compatibility */
126
+ get connection(): NetSocket;
127
+ res: IncomingMessage | null;
128
+ aborted: boolean;
129
+ private _aborted;
130
+ constructor(options: ClientRequestArgs, callback?: (res: IncomingMessage) => void);
131
+ protected _shouldSendBody(): boolean;
132
+ protected _implicitHeader(): void;
133
+ private _attachResponseParser;
134
+ abort(): void;
135
+ destroy(error?: Error): this;
136
+ end(chunk?: unknown, encoding?: unknown, callback?: unknown): this;
137
+ protected _writeToSocket(data: Buffer, callback: (error?: Error | null) => void): void;
138
+ setTimeout(timeout: number, callback?: () => void): this;
139
+ setNoDelay(noDelay?: boolean): void;
140
+ setSocketKeepAlive(enable?: boolean, initialDelay?: number): void;
141
+ }
142
+ export type RequestListener = (req: IncomingMessage, res: ServerResponse) => void;
143
+ declare class ServerImpl extends NetServer {
144
+ constructor(options?: object | RequestListener, requestListener?: RequestListener);
145
+ private _handleConnection;
146
+ }
147
+ export declare const Server: typeof ServerImpl;
148
+ export type Server = ServerImpl;
149
+ export declare class Agent {
150
+ maxSockets: number;
151
+ maxFreeSockets: number;
152
+ keepAlive: boolean;
153
+ options: Record<string, unknown>;
154
+ constructor(options?: Record<string, unknown>);
155
+ getName(options?: {
156
+ host?: string;
157
+ port?: number;
158
+ localAddress?: string;
159
+ }): string;
160
+ destroy(): void;
161
+ }
162
+ export declare const globalAgent: Agent;
163
+ export declare const request: (...args: [options: string | URL | ClientRequestArgs, callback?: (res: IncomingMessage) => void] | [url: string | URL, options: ClientRequestArgs, callback?: (res: IncomingMessage) => void]) => ClientRequest;
164
+ export declare const get: (...args: [options: string | URL | ClientRequestArgs, callback?: (res: IncomingMessage) => void] | [url: string | URL, options: ClientRequestArgs, callback?: (res: IncomingMessage) => void]) => ClientRequest;
165
+ export declare const createServer: (options?: object | RequestListener, requestListener?: RequestListener) => Server;
166
+ export declare const _default: {
167
+ METHODS: string[];
168
+ STATUS_CODES: Record<number, string>;
169
+ Agent: typeof Agent;
170
+ globalAgent: Agent;
171
+ Server: typeof ServerImpl;
172
+ ServerResponse: typeof ServerResponse;
173
+ IncomingMessage: typeof IncomingMessage;
174
+ ClientRequest: typeof ClientRequest;
175
+ OutgoingMessage: typeof OutgoingMessage;
176
+ createServer: typeof createServer;
177
+ request: typeof request;
178
+ get: typeof get;
179
+ };
180
+ export default _default;
@@ -0,0 +1 @@
1
+ export * from './utils';
@@ -0,0 +1,132 @@
1
+ import type { Socket as NetSocket, SocketConnectOpts, SocketConstructorOpts, Server as TCPServer, ServerOpts, ListenOptions, AddressInfo } from 'net';
2
+ import type { Resolvers } from '../api';
3
+ import { DuplexOptions, Stream } from 'stream';
4
+ type WebVpnTcpSocket = Resolvers['cloud']['webvpn']['tcpSocket'];
5
+ type WebVpnTcpSocketListener = Resolvers['cloud']['webvpn']['tcpSocketListener'];
6
+ import { EventEmitter } from 'events';
7
+ import { isIP, isIPv4, isIPv6 } from './utils';
8
+ export declare class Socket extends Stream.Duplex implements NetSocket {
9
+ _localAddress?: {
10
+ address: string;
11
+ family: string;
12
+ port: number;
13
+ };
14
+ _remoteAddress?: {
15
+ address: string;
16
+ family: string;
17
+ port: number;
18
+ };
19
+ _webVPNTcpSocketPromise?: Promise<(Awaited<ReturnType<WebVpnTcpSocket>> & {
20
+ reader: ReadableStreamDefaultReader<Uint8Array>;
21
+ writer: WritableStreamDefaultWriter<Uint8Array>;
22
+ }) | undefined>;
23
+ constructor(options?: SocketConstructorOpts & DuplexOptions & {
24
+ connection?: ReturnType<WebVpnTcpSocket>;
25
+ });
26
+ __webvpn_tcp_socket_init__(connection: ReturnType<WebVpnTcpSocket>): Promise<(import("../../api/local-net").LocalTcpSocket & {
27
+ reader: ReadableStreamDefaultReader<Uint8Array>;
28
+ writer: WritableStreamDefaultWriter<Uint8Array>;
29
+ }) | undefined>;
30
+ /** STREAM IMPL */
31
+ _read(size: number): void;
32
+ _write(chunk: Uint8Array, encoding: BufferEncoding, callback: (error?: Error | null) => void): void;
33
+ /** SOCKET IMPL */
34
+ connect(options: SocketConnectOpts, connectionListener?: (() => void) | undefined): this;
35
+ connect(port: number, host: string, connectionListener?: (() => void) | undefined): this;
36
+ connect(port: number, connectionListener?: (() => void) | undefined): this;
37
+ connect(path: string, connectionListener?: (() => void) | undefined): this;
38
+ connect(port: unknown, host?: unknown, connectionListener?: unknown): this;
39
+ _end(chunk: any, cb?: () => void): this;
40
+ _end(chunk: any, encoding?: BufferEncoding, cb?: () => void): this;
41
+ _destroy(error?: Error | null | undefined): this;
42
+ destroySoon(): void;
43
+ resetAndDestroy(): this;
44
+ _timeoutMs?: number;
45
+ _timeoutTimer?: ReturnType<typeof setTimeout>;
46
+ _restartTimeoutTimer(): void;
47
+ setTimeout(timeout: number, callback?: (() => void) | undefined): this;
48
+ setNoDelay(noDelay?: boolean | undefined): this;
49
+ setKeepAlive(enable?: boolean | undefined, initialDelay?: number | undefined): this;
50
+ setSendBufferSize(size: number): this;
51
+ setRecvBufferSize(size: number): this;
52
+ _typeOfService?: number;
53
+ getTypeOfService(): number;
54
+ setTypeOfService(tos: number): this;
55
+ _setTcpOption(option: import('../../api/webvpn/tcp').TcpSocketOption): void;
56
+ write(buffer: Uint8Array | string, cb?: (err?: Error) => void): boolean;
57
+ write(str: Uint8Array | string, encoding?: BufferEncoding, cb?: (err?: Error) => void): boolean;
58
+ address(): AddressInfo | {};
59
+ unref(): this;
60
+ ref(): this;
61
+ autoSelectFamilyAttemptedAddresses: string[];
62
+ bufferSize: number;
63
+ bytesRead: number;
64
+ bytesWritten: number;
65
+ connecting: boolean;
66
+ pending: boolean;
67
+ get localAddress(): string;
68
+ get localPort(): number;
69
+ get localFamily(): string;
70
+ readyState: 'opening' | 'open' | 'readOnly' | 'writeOnly' | 'closed';
71
+ get remoteAddress(): string;
72
+ get remotePort(): number;
73
+ get remoteFamily(): string;
74
+ timeout?: number | undefined;
75
+ }
76
+ interface EventEmitterOptions {
77
+ /**
78
+ * Enables automatic capturing of promise rejection.
79
+ */
80
+ captureRejections?: boolean | undefined;
81
+ }
82
+ export declare class Server extends EventEmitter implements TCPServer {
83
+ _localAddress?: {
84
+ address: string;
85
+ family: string;
86
+ port: number;
87
+ };
88
+ _webVPNTcpSocketListenerPromise?: Promise<Awaited<ReturnType<WebVpnTcpSocketListener>> | undefined>;
89
+ constructor(options?: ServerOpts & EventEmitterOptions & {
90
+ connection?: ReturnType<WebVpnTcpSocketListener>;
91
+ }, connectionListener?: (socket: Socket) => void);
92
+ __webvpn_tcp_socket_listener_init__(connection: ReturnType<WebVpnTcpSocketListener>): Promise<{
93
+ localAddress: string;
94
+ localFamily: "IPv4" | "IPv6";
95
+ localPort: number;
96
+ close: () => Promise<void>;
97
+ } | undefined>;
98
+ listen(port?: number | undefined, hostname?: string | undefined, backlog?: number | undefined, listeningListener?: (() => void) | undefined): this;
99
+ listen(port?: number | undefined, hostname?: string | undefined, listeningListener?: (() => void) | undefined): this;
100
+ listen(port?: number | undefined, backlog?: number | undefined, listeningListener?: (() => void) | undefined): this;
101
+ listen(port?: number | undefined, listeningListener?: (() => void) | undefined): this;
102
+ listen(path: string, backlog?: number | undefined, listeningListener?: (() => void) | undefined): this;
103
+ listen(path: string, listeningListener?: (() => void) | undefined): this;
104
+ listen(options: ListenOptions, listeningListener?: (() => void) | undefined): this;
105
+ listen(handle: any, backlog?: number | undefined, listeningListener?: (() => void) | undefined): this;
106
+ listen(handle: any, listeningListener?: (() => void) | undefined): this;
107
+ listen(port?: unknown, hostname?: unknown, backlog?: unknown, listeningListener?: unknown): this;
108
+ close(callback?: ((err?: Error | undefined) => void) | undefined): this;
109
+ address(): string | AddressInfo | null;
110
+ getConnections(cb: (error: Error | null, count: number) => void): this;
111
+ ref(): this;
112
+ unref(): this;
113
+ maxConnections: number;
114
+ connections: number;
115
+ listening: boolean;
116
+ [Symbol.asyncDispose](): Promise<void>;
117
+ }
118
+ export declare const connect: (options: SocketConnectOpts, connectionListener?: () => void) => Socket;
119
+ export declare const createConnection: (options: SocketConnectOpts, connectionListener?: () => void) => Socket;
120
+ export declare const createServer: (options?: ServerOpts | ((socket: Socket) => void), connectionListener?: (socket: Socket) => void) => Server;
121
+ export { isIP, isIPv4, isIPv6 };
122
+ export declare const _default: {
123
+ Socket: typeof Socket;
124
+ Server: typeof Server;
125
+ connect: typeof connect;
126
+ createConnection: typeof createConnection;
127
+ createServer: typeof createServer;
128
+ isIP: typeof isIP;
129
+ isIPv4: typeof isIPv4;
130
+ isIPv6: typeof isIPv6;
131
+ };
132
+ export default _default;
@@ -0,0 +1,32 @@
1
+ import type { ListenOptions, SocketConnectOpts } from 'net';
2
+ import { BindOptions } from 'dgram';
3
+ export declare const textEncoder: TextEncoder;
4
+ export declare const textDecoder: TextDecoder;
5
+ export declare const isIPv4: (input: string) => boolean;
6
+ export declare const isIPv6: (input: string) => boolean;
7
+ export declare const isIP: (input: string) => 0 | 4 | 6;
8
+ type TcpConnectArgs = [options: SocketConnectOpts, connectionListener?: () => void] | [port: number, host: string, connectionListener?: () => void] | [port: number, connectionListener?: () => void] | [path: string, connectionListener?: () => void];
9
+ type TcpListenArgs = [port?: number, hostname?: string, backlog?: number, listeningListener?: (() => void)] | [port?: number, hostname?: string, listeningListener?: (() => void)] | [port?: number, backlog?: number, listeningListener?: (() => void)] | [port?: number, listeningListener?: (() => void)] | [path: string, backlog?: number, listeningListener?: (() => void)] | [path: string, listeningListener?: (() => void)] | [options: ListenOptions, listeningListener?: (() => void)] | [handle: any, backlog?: number, listeningListener?: (() => void)] | [handle: any, listeningListener?: (() => void)];
10
+ export declare const normalizeNetArgs: <T extends TcpConnectArgs | TcpListenArgs>(...args: T) => {
11
+ port: number;
12
+ host: string | undefined;
13
+ callback: (() => void) | undefined;
14
+ } | ((T[0] extends object ? T[0] : never) & {
15
+ callback: (() => void) | undefined;
16
+ });
17
+ export declare const normalizeDgramBindArgs: (...args: [port?: number, address?: string, callback?: () => void] | [port?: number, callback?: () => void] | [callback?: () => void] | [options: BindOptions, callback?: () => void]) => {
18
+ exclusive?: boolean | undefined;
19
+ fd?: number | undefined;
20
+ address: string | undefined;
21
+ port: number;
22
+ callback: (() => void) | undefined;
23
+ };
24
+ export declare const normalizeDgramSendArgs: (...args: [msg: string | readonly any[] | Uint8Array, port: number, address: string, callback: (error: Error | null, bytes: number) => void] | [msg: string | readonly any[] | Uint8Array, port: number, callback: (error: Error | null, bytes: number) => void] | [msg: string | readonly any[] | Uint8Array, callback: (error: Error | null, bytes: number) => void] | [msg: string | Uint8Array, offset: number, length: number, port: number, address: string, callback: (error: Error | null, bytes: number) => void] | [msg: string | Uint8Array, offset: number, length: number, port: number, callback: (error: Error | null, bytes: number) => void] | [msg: string | Uint8Array, offset: number, length: number, callback: (error: Error | null, bytes: number) => void]) => {
25
+ message: string | readonly any[] | Uint8Array<ArrayBufferLike>;
26
+ offset: number | ((error: Error | null, bytes: number) => void);
27
+ length: number;
28
+ port: number;
29
+ address: string | undefined;
30
+ callback: (() => void) | undefined;
31
+ };
32
+ export {};
@@ -0,0 +1 @@
1
+ const e=require("./rolldown-runtime-Doa5O59j.cjs"),t=require("./api-DD5v1qP9.cjs"),n=require("./utils-CoimMjf9.cjs");let r=require("stream"),i=require("events");var a=e.n({Server:()=>s,Socket:()=>o,_default:()=>d,connect:()=>c,createConnection:()=>l,createServer:()=>u,default:()=>d,isIP:()=>n.t,isIPv4:()=>n.n,isIPv6:()=>n.r}),o=class extends r.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)}__webvpn_tcp_socket_init__(e){if(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=>{e&&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 r=n.o(...e),i=this.__webvpn_tcp_socket_init__(t.t.then(e=>e.cloud.webvpn.tcpSocket({remoteAddress:r.host??`localhost`,remotePort:r.port})));return r.callback&&i.then(e=>{e&&r.callback.call(this)}),this}_end(...e){return this._webVPNTcpSocketPromise?(e.length!==0&&this.write(e[0],e[1],e[2]),this._webVPNTcpSocketPromise.then(async e=>{e&&await e.end()}),this):this}_destroy(e){return this._timeoutTimer&&clearTimeout(this._timeoutTimer),this._webVPNTcpSocketPromise&&this._webVPNTcpSocketPromise.then(async e=>{e&&await e.destroy()}),this}destroySoon(){this._webVPNTcpSocketPromise&&this._webVPNTcpSocketPromise.then(async e=>{e&&await e.destroySoon()})}resetAndDestroy(){return this._webVPNTcpSocketPromise&&this._webVPNTcpSocketPromise.then(async e=>{e&&await e.resetAndDestroy()}),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},s=class extends i.EventEmitter{_localAddress;_webVPNTcpSocketListenerPromise;constructor(e,t){super(e),t&&this.on(`connection`,t),e?.connection&&this.__webvpn_tcp_socket_listener_init__(e.connection)}__webvpn_tcp_socket_listener_init__(e){return 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=>{e&&this.emit(`listening`)}),this._webVPNTcpSocketListenerPromise}listen(...e){let r=n.o(...e),i=e=>{let t=new o({connection:Promise.resolve(e)});this.emit(`connection`,t)},a=e=>t.t.then(t=>t.cloud.webvpn.tcpSocketListener({localAddress:e,localPort:r.port,onConnection:i})),s=r.host?a(r.host):a(`::`).catch(()=>a(`0.0.0.0`)),c=this.__webvpn_tcp_socket_listener_init__(s);return r.callback&&c.then(e=>{e&&r.callback.call(this)}),this}close(e){return this._webVPNTcpSocketListenerPromise&&this._webVPNTcpSocketListenerPromise.then(async t=>{if(t)try{await t.close(),this._localAddress=void 0,this.emit(`close`),e&&e()}catch(t){this._localAddress=void 0,this.emit(`close`),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](){}},c=(e,t)=>new o().connect(e,t),l=(e,t)=>new o().connect(e,t),u=(e,t)=>{typeof e==`function`&&(t=e,e=void 0);let n=new s(e);return t&&n.on(`connection`,t),n},d={Socket:o,Server:s,connect:c,createConnection:l,createServer:u,isIP:n.t,isIPv4:n.n,isIPv6:n.r};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return s}});
@@ -1,6 +1,6 @@
1
- import { n as e } from "./chunk-CPXzm0be.js";
2
- import { t } from "./api-ByfayMm1.js";
3
- import { n, o as r, r as i, t as a } from "./utils-CNydj3OT.js";
1
+ import { n as e } from "./rolldown-runtime-DF993M8W.js";
2
+ import { t } from "./api--bnCFd4w.js";
3
+ import { n, o as r, r as i, t as a } from "./utils-DPtyxGQu.js";
4
4
  import { Stream as o } from "stream";
5
5
  import { EventEmitter as s } from "events";
6
6
  //#region src/lib/webvpn/net.ts
package/net.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}}),require(`./api-CDb2pv7C.cjs`);const e=require(`./utils-BsNRWMfl.cjs`),t=require(`./net-C5kWnI4C.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.t,exports.isIPv4=e.n,exports.isIPv6=e.r;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./utils-CoimMjf9.cjs"),t=require("./net-CpuAhaQC.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.t,exports.isIPv4=e.n,exports.isIPv6=e.r;
package/net.js CHANGED
@@ -1,4 +1,3 @@
1
- import "./api-ByfayMm1.js";
2
- import { n as e, r as t, t as n } from "./utils-CNydj3OT.js";
3
- import { a as r, i, n as a, o, r as s, t as c } from "./net-Bl6_W3bd.js";
1
+ import { n as e, r as t, t as n } from "./utils-DPtyxGQu.js";
2
+ import { a as r, i, n as a, o, r as s, t as c } from "./net-DKMWPXb_.js";
4
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, e as isIPv4, t as isIPv6 };
@@ -0,0 +1 @@
1
+ let e=require("buffer");var t={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`},n=(e,n)=>{if(n)return n;let r=e.split(`/`).pop()??``,i=r.lastIndexOf(`.`);if(!(i<=0))return t[r.slice(i+1).toLowerCase()]},r=(e,t)=>({size:e,mtimeMs:t,mtime:new Date(t),atimeMs:t,ctimeMs:t,mode:420,isFile:()=>!0,isDirectory:()=>!1,isSymbolicLink:()=>!1}),i=(e=0)=>({size:0,mtimeMs:e,mtime:new Date(e),atimeMs:e,ctimeMs:e,mode:493,isFile:()=>!1,isDirectory:()=>!0,isSymbolicLink:()=>!1}),a=(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},o=e=>{let t=[];for(let n of e.split(`/`))if(!(!n||n===`.`)){if(n===`..`){t.pop();continue}t.push(n)}return t.join(`/`)},s=e=>e.split(`/`).slice(0,-1).join(`/`),c=e=>typeof e==`string`?e:e instanceof URL?decodeURIComponent(e.pathname):e.toString(),l=e=>typeof e==`string`?e:e?.encoding??void 0,u=e=>typeof e==`object`?e?.contentType:void 0,d=e=>typeof e==`object`&&!!e?.recursive,f=(t,n)=>{let r=l(n);return r?e.Buffer.from(t).toString(r):e.Buffer.from(t)},p=(t,n)=>{if(typeof t==`string`)return new Uint8Array(e.Buffer.from(t,l(n)??`utf8`));if(t instanceof Uint8Array)return t.slice();if(t instanceof ArrayBuffer)return new Uint8Array(t).slice();if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength).slice();throw TypeError(`The "data" argument must be of type string, Buffer, TypedArray, or DataView`)},m=e=>{let t=new Map([[``,{kind:`dir`,mtimeMs:0}]]),c=new Set,l=new Set,u=()=>Date.now(),d=e=>{if(!e)return;let n=e.split(`/`),r=``;for(let e of n){r=r?`${r}/${e}`:e;let n=t.get(r);if(!n)t.set(r,{kind:`dir`,mtimeMs:u()});else if(n.kind===`file`)throw a(`ENOTDIR`,r,`mkdir`)}},f,p=()=>f??=(async()=>{let n=await e.list().catch(()=>[]);for(let r of n)try{let n=o(r.path);if(c.has(n))continue;let i=await(await e.readFile(r.path)).arrayBuffer();if(c.has(n)||l.has(n))continue;d(s(n));let a=Date.parse(r.updatedAt??``);t.set(n,{kind:`file`,data:new Uint8Array(i),mtimeMs:Number.isFinite(a)?a:u(),contentType:r.contentType??void 0})}catch{}})(),m=async()=>{f=void 0,await p()},h=async()=>{let r=[...c].map(async r=>{let i=t.get(r);if(i?.kind!==`file`){c.delete(r);return}let a=i.data,o=n(r,i.contentType);try{await e.writeFile(r,a,o?{contentType:o}:void 0);let n=t.get(r);n?.kind===`file`&&n.data===a&&c.delete(r)}catch{}}),i=[...l].map(async t=>{try{await e.remove(t),l.delete(t)}catch{}});await Promise.all([...r,...i])},g,_=()=>{g||=setTimeout(()=>{g=void 0,h().catch(()=>{})},250)};typeof addEventListener<`u`&&(addEventListener(`pagehide`,()=>{h().catch(()=>{})}),addEventListener(`visibilitychange`,()=>{typeof document<`u`&&document.visibilityState===`hidden`&&h().catch(()=>{})}));let v=e=>e.kind===`file`?r(e.data.byteLength,e.mtimeMs):i(e.mtimeMs),y=e=>t.has(o(e)),b=e=>{let n=t.get(o(e));if(!n)throw a(`ENOENT`,e,`stat`);return v(n)},x=e=>{let n=t.get(o(e));if(!n)throw a(`ENOENT`,e,`open`);if(n.kind===`dir`)throw a(`EISDIR`,e,`read`);return n.data},S=(e,t)=>{let n=new Uint8Array(e.byteLength+t.byteLength);return n.set(e,0),n.set(t,e.byteLength),n},C=(e,n,r,i)=>{let f=o(e);if(!f)throw a(`EISDIR`,e,`open`);let p=t.get(f);if(p?.kind===`dir`)throw a(`EISDIR`,e,`open`);d(s(f));let m=r&&p?.kind===`file`?S(p.data,n):n;t.set(f,{kind:`file`,data:m,mtimeMs:u(),contentType:i??(p?.kind===`file`?p.contentType:void 0)}),c.add(f),l.delete(f),_()},w=(e,n)=>{let r=o(e);if(r){if(t.has(r)){if(n)return;throw a(`EEXIST`,e,`mkdir`)}if(!n&&!t.has(s(r)))throw a(`ENOENT`,e,`mkdir`);d(r)}},T=e=>{let n=o(e),r=t.get(n);if(!r)throw a(`ENOENT`,e,`scandir`);if(r.kind===`file`)throw a(`ENOTDIR`,e,`scandir`);let i=n?`${n}/`:``,s=new Set;for(let e of t.keys()){if(!e||!e.startsWith(i))continue;let t=e.slice(i.length);t&&s.add(t.split(`/`)[0])}return[...s]},E=(e,{op:n,recursive:r,force:i})=>{let s=o(e),u=t.get(s);if(!u){if(i||n===`rmdir`&&r)return;throw a(`ENOENT`,e,n===`rmdir`?`rmdir`:`unlink`)}if(n===`unlink`&&u.kind===`dir`)throw a(`EISDIR`,e,`unlink`);if(n===`rmdir`&&u.kind===`file`)throw a(`ENOTDIR`,e,`rmdir`);if(n===`rm`&&u.kind===`dir`&&!r)throw a(`ERR_FS_EISDIR`,e,`rm`);let d=`${s}/`,f=[...t.keys()].filter(e=>e.startsWith(d));if(f.length&&!r)throw a(`ENOTEMPTY`,e,`rmdir`);for(let e of[s,...f]){let n=t.get(e);t.delete(e),n?.kind===`file`&&(c.delete(e),l.add(e))}_()};return{mount:p,remount:m,flush:h,exists:y,stat:b,readFile:x,writeFile:C,mkdir:w,readdir:T,remove:E,rename:(e,n)=>{let r=o(e),i=o(n);if(!r)throw a(`EBUSY`,e,`rename`);if(i===r||i.startsWith(`${r}/`))throw a(`EINVAL`,e,`rename`);let u=t.get(r);if(!u)throw a(`ENOENT`,e,`rename`);let f=t.get(i);if(f){if(f.kind!==u.kind)throw a(u.kind===`dir`?`ENOTDIR`:`EISDIR`,n,`rename`);E(i,{op:`rm`,recursive:!0,force:!0})}d(s(i));let p=`${r}/`,m=[r,...[...t.keys()].filter(e=>e.startsWith(p))];for(let e of m){let n=i+e.slice(r.length),a=t.get(e);t.set(n,a),t.delete(e),a.kind===`file`&&(c.add(n),l.delete(n),c.delete(e),l.add(e))}_()}}},h=(e,t)=>typeof e==`function`?e:t,g=e=>typeof e==`function`?void 0:e,_=(e,t)=>{e.then(e=>t(null,e),e=>t(e))},v=e=>{let t=m(e),n=(e,n)=>f(t.readFile(c(e)),n),r=(e,n,r)=>t.writeFile(c(e),p(n,r),!1,u(r)),i=(e,n,r)=>t.writeFile(c(e),p(n,r),!0,u(r)),o=e=>t.exists(c(e)),s=e=>t.stat(c(e)),l=e=>t.readdir(c(e)),_=(e,n)=>t.mkdir(c(e),d(n)),v=(e,n)=>t.remove(c(e),{op:`rm`,...n}),y=(e,n)=>t.remove(c(e),{op:`rmdir`,...n}),b=e=>t.remove(c(e),{op:`unlink`}),x=(e,n)=>t.rename(c(e),c(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:o,statSync:s,lstatSync:s,readdirSync:l,mkdirSync:_,rmSync:v,rmdirSync:y,unlinkSync:b,renameSync:x,readFile:(e,n,r)=>S(()=>f(t.readFile(c(e)),g(n)),h(n,r)),writeFile:(e,n,r,i)=>S(()=>t.writeFile(c(e),p(n,g(r)),!1,u(g(r))),h(r,i)),appendFile:(e,n,r,i)=>S(()=>t.writeFile(c(e),p(n,g(r)),!0,u(g(r))),h(r,i)),stat:(e,n)=>S(()=>t.stat(c(e)),n),readdir:(e,n,r)=>S(()=>t.readdir(c(e)),h(n,r)),mkdir:(e,n,r)=>S(()=>t.mkdir(c(e),d(g(n))),h(n,r)),rm:(e,n,r)=>S(()=>t.remove(c(e),{op:`rm`,...g(n)}),h(n,r)),unlink:(e,n)=>S(()=>t.remove(c(e),{op:`unlink`}),n),rename:(e,n,r)=>S(()=>t.rename(c(e),c(n)),r),exists:(e,n)=>{t.mount().finally(()=>n(t.exists(c(e))))},promises:{readFile:(e,n)=>C(()=>f(t.readFile(c(e)),n)),writeFile:(e,n,r)=>C(()=>t.writeFile(c(e),p(n,r),!1,u(r))),appendFile:(e,n,r)=>C(()=>t.writeFile(c(e),p(n,r),!0,u(r))),stat:e=>C(()=>t.stat(c(e))),lstat:e=>C(()=>t.stat(c(e))),readdir:e=>C(()=>t.readdir(c(e))),mkdir:(e,n)=>C(()=>t.mkdir(c(e),d(n))),rm:(e,n)=>C(()=>t.remove(c(e),{op:`rm`,...n})),rmdir:(e,n)=>C(()=>t.remove(c(e),{op:`rmdir`,...n})),unlink:e=>C(()=>t.remove(c(e),{op:`unlink`})),rename:(e,n)=>C(()=>t.rename(c(e),c(n))),access:e=>C(()=>{if(!t.exists(c(e)))throw a(`ENOENT`,c(e),`access`)})},mount:t.mount,flush:t.flush,remount:t.remount}},y=e=>{let t=async(t,n)=>{let r=await e.readFile(c(t));return f(new Uint8Array(await r.arrayBuffer()),n)},s=async(t,r,i)=>{let a=c(t),o=n(a,u(i));await e.writeFile(a,p(r,i),o?{contentType:o}:void 0)},l=t=>e.remove(c(t)),d=async(t,n)=>{let r=o(c(t)),i=o(c(n));if(r===i)return;let a=await e.readFile(r);await e.writeFile(i,a),await e.remove(r)},m=async t=>{let n=o(c(t)),r=n?`${n}/`:``,i=new Set;for(let t of await e.list()){let e=o(t.path);if(r&&!e.startsWith(r))continue;let n=e.slice(r.length);n&&i.add(n.split(`/`)[0])}return[...i]},v=async(e,t)=>{},y=async(t,n)=>{let r=o(c(t));if(!n?.recursive){await e.remove(c(t));return}let i=`${r}/`,a=await e.list();await Promise.all(a.filter(e=>{let t=o(e.path);return t===r||t.startsWith(i)}).map(t=>e.remove(t.path).catch(()=>{})))},b=async t=>{let n=o(c(t)),s=await e.list(),l=s.find(e=>o(e.path)===n);if(l){let e=Date.parse(l.updatedAt??``);return r(l.size,Number.isFinite(e)?e:0)}if(s.some(e=>o(e.path).startsWith(`${n}/`)))return i();throw a(`ENOENT`,c(t),`stat`)},x={readFile:t,writeFile:s,unlink:l,rename:d,readdir:m,mkdir:v,rm:y,rmdir:y,stat:b,lstat:b,access:async e=>{await b(e)}};return{available:e.available,promises:x,readFile:(e,n,r)=>_(t(e,g(n)),h(n,r)),writeFile:(e,t,n,r)=>_(s(e,t,g(n)),h(n,r)),unlink:(e,t)=>_(l(e),t),rename:(e,t,n)=>_(d(e,t),n),readdir:(e,t,n)=>_(m(e),h(t,n)),mkdir:(e,t,n)=>_(v(),h(t,n)),rm:(e,t,n)=>_(y(e,g(t)),h(t,n)),stat:(e,t)=>_(b(e),t)}};function b(e,t){return t.memfs?v(e):y(e)}Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return b}});
@@ -49,7 +49,8 @@ var t = {
49
49
  EEXIST: "file already exists",
50
50
  ENOTDIR: "not a directory",
51
51
  EISDIR: "illegal operation on a directory",
52
- ENOTEMPTY: "directory not empty"
52
+ ENOTEMPTY: "directory not empty",
53
+ ERR_FS_EISDIR: "is a directory"
53
54
  }[e] ?? e}, ${n} '${t}'`);
54
55
  return r.code = e, r.path = t, r.syscall = n, r;
55
56
  }, o = (e) => {
@@ -72,7 +73,7 @@ var t = {
72
73
  if (ArrayBuffer.isView(t)) return new Uint8Array(t.buffer, t.byteOffset, t.byteLength).slice();
73
74
  throw TypeError("The \"data\" argument must be of type string, Buffer, TypedArray, or DataView");
74
75
  }, m = (e) => {
75
- let t = new Map([["", {
76
+ let t = /* @__PURE__ */ new Map([["", {
76
77
  kind: "dir",
77
78
  mtimeMs: 0
78
79
  }]]), c = /* @__PURE__ */ new Set(), l = /* @__PURE__ */ new Set(), u = () => Date.now(), d = (e) => {
@@ -180,15 +181,18 @@ var t = {
180
181
  t && s.add(t.split("/")[0]);
181
182
  }
182
183
  return [...s];
183
- }, E = (e, n) => {
184
- let r = o(e);
185
- if (!t.get(r)) {
186
- if (n) return;
187
- throw a("ENOENT", e, "unlink");
184
+ }, E = (e, { op: n, recursive: r, force: i }) => {
185
+ let s = o(e), u = t.get(s);
186
+ if (!u) {
187
+ if (i || n === "rmdir" && r) return;
188
+ throw a("ENOENT", e, n === "rmdir" ? "rmdir" : "unlink");
188
189
  }
189
- let i = `${r}/`, s = [...t.keys()].filter((e) => e.startsWith(i));
190
- if (s.length && !n) throw a("ENOTEMPTY", e, "rmdir");
191
- for (let e of [r, ...s]) {
190
+ if (n === "unlink" && u.kind === "dir") throw a("EISDIR", e, "unlink");
191
+ if (n === "rmdir" && u.kind === "file") throw a("ENOTDIR", e, "rmdir");
192
+ if (n === "rm" && u.kind === "dir" && !r) throw a("ERR_FS_EISDIR", e, "rm");
193
+ let d = `${s}/`, f = [...t.keys()].filter((e) => e.startsWith(d));
194
+ if (f.length && !r) throw a("ENOTEMPTY", e, "rmdir");
195
+ for (let e of [s, ...f]) {
192
196
  let n = t.get(e);
193
197
  t.delete(e), n?.kind === "file" && (c.delete(e), l.add(e));
194
198
  }
@@ -214,7 +218,11 @@ var t = {
214
218
  let f = t.get(i);
215
219
  if (f) {
216
220
  if (f.kind !== u.kind) throw a(u.kind === "dir" ? "ENOTDIR" : "EISDIR", n, "rename");
217
- E(i, !0);
221
+ E(i, {
222
+ op: "rm",
223
+ recursive: !0,
224
+ force: !0
225
+ });
218
226
  }
219
227
  d(s(i));
220
228
  let p = `${r}/`, m = [r, ...[...t.keys()].filter((e) => e.startsWith(p))];
@@ -228,7 +236,13 @@ var t = {
228
236
  }, h = (e, t) => typeof e == "function" ? e : t, g = (e) => typeof e == "function" ? void 0 : e, _ = (e, t) => {
229
237
  e.then((e) => t(null, e), (e) => t(e));
230
238
  }, v = (e) => {
231
- let t = m(e), n = (e, n) => f(t.readFile(c(e)), n), r = (e, n, r) => t.writeFile(c(e), p(n, r), !1, u(r)), i = (e, n, r) => t.writeFile(c(e), p(n, r), !0, u(r)), o = (e) => t.exists(c(e)), s = (e) => t.stat(c(e)), l = (e) => t.readdir(c(e)), _ = (e, n) => t.mkdir(c(e), d(n)), v = (e, n) => t.remove(c(e), !!n?.recursive), y = (e, n) => t.remove(c(e), !!n?.recursive), b = (e) => t.remove(c(e), !1), x = (e, n) => t.rename(c(e), c(n)), S = (e, n) => {
239
+ let t = m(e), n = (e, n) => f(t.readFile(c(e)), n), r = (e, n, r) => t.writeFile(c(e), p(n, r), !1, u(r)), i = (e, n, r) => t.writeFile(c(e), p(n, r), !0, u(r)), o = (e) => t.exists(c(e)), s = (e) => t.stat(c(e)), l = (e) => t.readdir(c(e)), _ = (e, n) => t.mkdir(c(e), d(n)), v = (e, n) => t.remove(c(e), {
240
+ op: "rm",
241
+ ...n
242
+ }), y = (e, n) => t.remove(c(e), {
243
+ op: "rmdir",
244
+ ...n
245
+ }), b = (e) => t.remove(c(e), { op: "unlink" }), x = (e, n) => t.rename(c(e), c(n)), S = (e, n) => {
232
246
  t.mount().finally(() => {
233
247
  let t;
234
248
  try {
@@ -260,8 +274,11 @@ var t = {
260
274
  stat: (e, n) => S(() => t.stat(c(e)), n),
261
275
  readdir: (e, n, r) => S(() => t.readdir(c(e)), h(n, r)),
262
276
  mkdir: (e, n, r) => S(() => t.mkdir(c(e), d(g(n))), h(n, r)),
263
- rm: (e, n, r) => S(() => t.remove(c(e), !!g(n)?.recursive), h(n, r)),
264
- unlink: (e, n) => S(() => t.remove(c(e), !1), n),
277
+ rm: (e, n, r) => S(() => t.remove(c(e), {
278
+ op: "rm",
279
+ ...g(n)
280
+ }), h(n, r)),
281
+ unlink: (e, n) => S(() => t.remove(c(e), { op: "unlink" }), n),
265
282
  rename: (e, n, r) => S(() => t.rename(c(e), c(n)), r),
266
283
  exists: (e, n) => {
267
284
  t.mount().finally(() => n(t.exists(c(e))));
@@ -274,9 +291,15 @@ var t = {
274
291
  lstat: (e) => C(() => t.stat(c(e))),
275
292
  readdir: (e) => C(() => t.readdir(c(e))),
276
293
  mkdir: (e, n) => C(() => t.mkdir(c(e), d(n))),
277
- rm: (e, n) => C(() => t.remove(c(e), !!n?.recursive)),
278
- rmdir: (e, n) => C(() => t.remove(c(e), !!n?.recursive)),
279
- unlink: (e) => C(() => t.remove(c(e), !1)),
294
+ rm: (e, n) => C(() => t.remove(c(e), {
295
+ op: "rm",
296
+ ...n
297
+ })),
298
+ rmdir: (e, n) => C(() => t.remove(c(e), {
299
+ op: "rmdir",
300
+ ...n
301
+ })),
302
+ unlink: (e) => C(() => t.remove(c(e), { op: "unlink" })),
280
303
  rename: (e, n) => C(() => t.rename(c(e), c(n))),
281
304
  access: (e) => C(() => {
282
305
  if (!t.exists(c(e))) throw a("ENOENT", c(e), "access");
package/opfs/promises.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../node-fs-lrlD_zqB.cjs`);var{readFile:e,writeFile:t,appendFile:n,unlink:r,rename:i,readdir:a,mkdir:o,rm:s,rmdir:c,stat:l,lstat:u,access:d}=require(`../opfs.cjs`).promises;exports.access=d,exports.appendFile=n,exports.lstat=u,exports.mkdir=o,exports.readFile=e,exports.readdir=a,exports.rename=i,exports.rm=s,exports.rmdir=c,exports.stat=l,exports.unlink=r,exports.writeFile=t;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../opfs.cjs");var{readFile:t,writeFile:n,appendFile:r,unlink:i,rename:a,readdir:o,mkdir:s,rm:c,rmdir:l,stat:u,lstat:d,access:f}=e.promises,p=e.promises;exports.access=f,exports.appendFile=r,exports.default=p,exports.lstat=d,exports.mkdir=s,exports.readFile=t,exports.readdir=o,exports.rename=a,exports.rm=c,exports.rmdir=l,exports.stat=u,exports.unlink=i,exports.writeFile=n;
package/opfs/promises.js CHANGED
@@ -1,6 +1,5 @@
1
- import "../node-fs-Bd_UUx1m.js";
2
1
  import { promises as e } from "../opfs.js";
3
2
  //#region src/lib/opfs/promises.ts
4
- var { readFile: t, writeFile: n, appendFile: r, unlink: i, rename: a, readdir: o, mkdir: s, rm: c, rmdir: l, stat: u, lstat: d, access: f } = e;
3
+ var { readFile: t, writeFile: n, appendFile: r, unlink: i, rename: a, readdir: o, mkdir: s, rm: c, rmdir: l, stat: u, lstat: d, access: f } = e, p = e;
5
4
  //#endregion
6
- export { f as access, r as appendFile, d as lstat, s as mkdir, t as readFile, o as readdir, a as rename, c as rm, l as rmdir, u as stat, i as unlink, n as writeFile };
5
+ export { f as access, r as appendFile, p as default, d as lstat, s as mkdir, t as readFile, o as readdir, a as rename, c as rm, l as rmdir, u as stat, i as unlink, n as writeFile };
@@ -1,4 +1,4 @@
1
- import { n as e } from "./chunk-CPXzm0be.js";
1
+ import { n as e } from "./rolldown-runtime-DF993M8W.js";
2
2
  //#region src/lib/fs/opfs.ts
3
3
  var t = /* @__PURE__ */ e({
4
4
  available: () => a,
@@ -0,0 +1 @@
1
+ var e=require("./rolldown-runtime-Doa5O59j.cjs").n({available:()=>i,list:()=>c,readFile:()=>o,remove:()=>s,writeFile:()=>a}),t=()=>navigator.storage.getDirectory(),n=e=>{let t=e.split(`/`).filter(e=>e&&e!==`.`);if(t.some(e=>e===`..`)||!t.length)throw Error(`opfs: invalid path`);return t},r=async(e,n)=>{let r=await t();for(let t of e)r=await r.getDirectoryHandle(t,{create:n});return r},i=async()=>{try{return typeof navigator<`u`&&!!navigator.storage?.getDirectory&&!!await t()}catch{return!1}},a=async(e,t,i)=>{let a=n(e),o=a.pop(),s=await(await(await r(a,!0)).getFileHandle(o,{create:!0})).createWritable({keepExistingData:!1});try{let e=t instanceof Blob?t:new Blob([t],i?.contentType?{type:i.contentType}:void 0);await s.write(e)}finally{await s.close()}},o=async e=>{let t=n(e),i=t.pop();return(await(await r(t,!1)).getFileHandle(i)).getFile()},s=async e=>{let t=n(e),i=t.pop();await(await r(t,!1)).removeEntry(i,{recursive:!0})},c=async()=>{let e=[],n=async(t,r)=>{for await(let[i,a]of t.entries()){let t=r?`${r}/${i}`:i;if(a.kind===`file`){let n=await a.getFile();e.push({path:t,size:n.size,contentType:n.type||null,updatedAt:new Date(n.lastModified).toISOString()})}else await n(a,t)}};return await n(await t(),``),e};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return i}});
package/opfs.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./chunk-B6C_zzib.cjs`),t=require(`./node-fs-lrlD_zqB.cjs`),n=require(`./opfs-Dsi4FkJU.cjs`);var r=e.n({appendFile:()=>y,appendFileSync:()=>s,available:()=>i,exists:()=>E,existsSync:()=>c,flush:()=>k,lstatSync:()=>u,mkdir:()=>S,mkdirSync:()=>f,mount:()=>O,promises:()=>D,readFile:()=>_,readFileSync:()=>a,readdir:()=>x,readdirSync:()=>d,remount:()=>A,rename:()=>T,renameSync:()=>g,rm:()=>C,rmSync:()=>p,rmdirSync:()=>m,stat:()=>b,statSync:()=>l,unlink:()=>w,unlinkSync:()=>h,writeFile:()=>v,writeFileSync:()=>o}),{available:i,readFileSync:a,writeFileSync:o,appendFileSync:s,existsSync:c,statSync:l,lstatSync:u,readdirSync:d,mkdirSync:f,rmSync:p,rmdirSync:m,unlinkSync:h,renameSync:g,readFile:_,writeFile:v,appendFile:y,stat:b,readdir:x,mkdir:S,rm:C,unlink:w,rename:T,exists:E,promises:D,mount:O,flush:k,remount:A}=t.t(n.r,{memfs:!0});exports.appendFile=y,exports.appendFileSync=s,exports.available=i,exports.exists=E,exports.existsSync=c,exports.flush=k,exports.lstatSync=u,exports.mkdir=S,exports.mkdirSync=f,exports.mount=O,exports.promises=D,exports.readFile=_,exports.readFileSync=a,exports.readdir=x,exports.readdirSync=d,exports.remount=A,exports.rename=T,exports.renameSync=g,exports.rm=C,exports.rmSync=p,exports.rmdirSync=m,exports.stat=b,exports.statSync=l,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return r}}),exports.unlink=w,exports.unlinkSync=h,exports.writeFile=v,exports.writeFileSync=o;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./rolldown-runtime-Doa5O59j.cjs"),t=require("./node-fs-C0eKnboT.cjs"),n=require("./opfs-uClkgnb5.cjs");var r=e.n({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;
package/opfs.js CHANGED
@@ -1,35 +1,36 @@
1
- import { n as e } from "./chunk-CPXzm0be.js";
2
- import { t } from "./node-fs-Bd_UUx1m.js";
3
- import { r as n } from "./opfs-BfcYLPGb.js";
1
+ import { n as e } from "./rolldown-runtime-DF993M8W.js";
2
+ import { t } from "./node-fs-Dbf93qP7.js";
3
+ import { r as n } from "./opfs-7_GmzQ93.js";
4
4
  //#region src/lib/opfs/index.ts
5
5
  var r = /* @__PURE__ */ e({
6
- appendFile: () => y,
7
- appendFileSync: () => s,
8
- available: () => i,
9
- exists: () => E,
10
- existsSync: () => c,
11
- flush: () => k,
12
- lstatSync: () => u,
13
- mkdir: () => S,
14
- mkdirSync: () => f,
15
- mount: () => O,
16
- promises: () => D,
17
- readFile: () => _,
18
- readFileSync: () => a,
19
- readdir: () => x,
20
- readdirSync: () => d,
21
- remount: () => A,
22
- rename: () => T,
23
- renameSync: () => g,
24
- rm: () => C,
25
- rmSync: () => p,
26
- rmdirSync: () => m,
27
- stat: () => b,
28
- statSync: () => l,
29
- unlink: () => w,
30
- unlinkSync: () => h,
31
- writeFile: () => v,
32
- writeFileSync: () => o
33
- }), { available: i, readFileSync: a, writeFileSync: o, appendFileSync: s, existsSync: c, statSync: l, lstatSync: u, readdirSync: d, mkdirSync: f, rmSync: p, rmdirSync: m, unlinkSync: h, renameSync: g, readFile: _, writeFile: v, appendFile: y, stat: b, readdir: x, mkdir: S, rm: C, unlink: w, rename: T, exists: E, promises: D, mount: O, flush: k, remount: A } = t(n, { memfs: !0 });
6
+ appendFile: () => b,
7
+ appendFileSync: () => c,
8
+ available: () => a,
9
+ default: () => i,
10
+ exists: () => D,
11
+ existsSync: () => l,
12
+ flush: () => A,
13
+ lstatSync: () => d,
14
+ mkdir: () => C,
15
+ mkdirSync: () => p,
16
+ mount: () => k,
17
+ promises: () => O,
18
+ readFile: () => v,
19
+ readFileSync: () => o,
20
+ readdir: () => S,
21
+ readdirSync: () => f,
22
+ remount: () => j,
23
+ rename: () => E,
24
+ renameSync: () => _,
25
+ rm: () => w,
26
+ rmSync: () => m,
27
+ rmdirSync: () => h,
28
+ stat: () => x,
29
+ statSync: () => u,
30
+ unlink: () => T,
31
+ unlinkSync: () => g,
32
+ writeFile: () => y,
33
+ writeFileSync: () => s
34
+ }), i = t(n, { 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;
34
35
  //#endregion
35
- export { y as appendFile, s as appendFileSync, i as available, E as exists, c as existsSync, k as flush, u as lstatSync, S as mkdir, f as mkdirSync, O as mount, D as promises, _ as readFile, a as readFileSync, x as readdir, d as readdirSync, A as remount, T as rename, g as renameSync, C as rm, p as rmSync, m as rmdirSync, b as stat, l as statSync, r as t, w as unlink, h as unlinkSync, v as writeFile, o as writeFileSync };
36
+ export { b as appendFile, c as appendFileSync, a as available, i as default, D as exists, l as existsSync, A as flush, d as lstatSync, C as mkdir, p as mkdirSync, k as mount, O as promises, v as readFile, o as readFileSync, S as readdir, f as readdirSync, j as remount, E as rename, _ as renameSync, w as rm, m as rmSync, h as rmdirSync, x as stat, u as statSync, r as t, T as unlink, g as unlinkSync, y as writeFile, s as writeFileSync };