@vantail/api 0.1.4-dev.13 → 0.1.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../src/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/D,MAAM,WAAW,qBAAqB;IACpC,gFAAgF;IAChF,GAAG,EAAE,MAAM,CAAC;IACZ,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,qBAAqB;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe,CAAC,IAAI,GAAG,MAAM;IAC5C,2DAA2D;IAC3D,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,EAAE,EAAE,OAAO,CAAC;IACZ,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,IAAI,CAAC;CACZ;AAYD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,OAAO;IAClB,oDAAoD;IACpD,OAAO,YACI,qBAAqB,KAC7B,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAKnC,gEAAgE;IAChE,IAAI,GAAS,CAAC,GAAG,OAAO,WACb,qBAAqB,KAC7B,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAW9B,wCAAwC;IACxC,MAAM,YACK,qBAAqB,KAC7B,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;CAIxC,CAAC"}
1
+ {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../src/network.ts"],"names":[],"mappings":"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"}
package/dist/network.js CHANGED
@@ -1,5 +1,7 @@
1
1
  import { decode, encode } from "./binary.js";
2
- import { invoke } from "./transport.js";
2
+ import { VantailError } from "./error.js";
3
+ import { ErrorCode } from "./protocol.js";
4
+ import { invoke, invokeTracked, listen } from "./transport.js";
3
5
  /**
4
6
  * HTTP from the runtime rather than the webview.
5
7
  *
@@ -24,9 +26,20 @@ import { invoke } from "./transport.js";
24
26
  * body: JSON.stringify({ lights: [{ on: 1, brightness: 80 }] }),
25
27
  * });
26
28
  * ```
29
+ *
30
+ * Every URL is checked against `permissions.network.allow` first, redirects
31
+ * included. An application that has to reach a host its user names at run
32
+ * time - an API client, a link checker - says so with `allow: ["*"]`.
27
33
  */
28
34
  export const network = {
29
- /** Send a request and read the response as text. */
35
+ /**
36
+ * Send a request and read the response as text.
37
+ *
38
+ * The body is decoded as UTF-8, and anything that is not valid UTF-8 is
39
+ * replaced with U+FFFD rather than failing. Use {@link network.binary} when
40
+ * the response might not be text, or when you need the bytes exactly;
41
+ * `bodyBytes` is there to tell you when the two disagree.
42
+ */
30
43
  request: async (options) => {
31
44
  const response = await send(options, "text");
32
45
  return { ...response, body: response.body };
@@ -41,19 +54,318 @@ export const network = {
41
54
  throw new SyntaxError(`${response.url} did not return JSON (${response.status}): ${String(cause)}`);
42
55
  }
43
56
  },
44
- /** The same, with the body as bytes. */
57
+ /**
58
+ * The same, with the body as bytes.
59
+ *
60
+ * The better default for anything that is not certainly UTF-8 text: the
61
+ * byte count is exact and nothing is replaced on the way through.
62
+ */
45
63
  binary: async (options) => {
46
64
  const response = await send(options, "base64");
47
65
  return { ...response, body: decode(response.body) };
48
66
  },
67
+ /**
68
+ * A response delivered as it arrives, as text.
69
+ *
70
+ * This is how server-sent events and long-polling are consumed from the
71
+ * runtime at all: `network.request` waits for the whole body, which for a
72
+ * stream that stays open is forever. The webview's own `EventSource` works
73
+ * and is the right tool when CORS allows it - this is for when it does not,
74
+ * and for when the request needs headers `EventSource` cannot set.
75
+ *
76
+ * ```ts
77
+ * const stream = await network.stream({
78
+ * url: `${base}/events`,
79
+ * headers: { authorization: `Bearer ${token}`, accept: "text/event-stream" },
80
+ * });
81
+ *
82
+ * let buffer = "";
83
+ * stream.onChunk((chunk) => {
84
+ * buffer += chunk;
85
+ * // SSE separates events with a blank line.
86
+ * const events = buffer.split("\n\n");
87
+ * buffer = events.pop() ?? "";
88
+ * for (const event of events) handle(event);
89
+ * });
90
+ * stream.onEnd(({ error }) => { if (error) retry(); });
91
+ * ```
92
+ *
93
+ * Chunks are decoded as UTF-8 with any character split across a chunk
94
+ * boundary held back and joined to the next one, so a stream of JSON stays
95
+ * parseable.
96
+ */
97
+ stream: (options) => open(options, "text", (data) => data),
98
+ /**
99
+ * The same, as bytes - for a download, or anything that is not text.
100
+ *
101
+ * The whole body never has to be held in memory at once, which is what
102
+ * `network.binary` cannot avoid.
103
+ */
104
+ streamBinary: (options) => open(options, "base64", (data) => decode(data)),
105
+ /**
106
+ * A WebSocket opened by the runtime rather than the page.
107
+ *
108
+ * The webview has its own `WebSocket` and it is the right tool when it can
109
+ * do the job. It cannot set a header on the opening handshake, which is how
110
+ * most APIs authenticate one - so the token goes in the query string, where
111
+ * it ends up in the server's logs. This can set headers, and is not subject
112
+ * to the page's origin rules.
113
+ *
114
+ * ```ts
115
+ * const socket = await network.socket({
116
+ * url: "wss://api.example.com/live",
117
+ * headers: { authorization: `Bearer ${token}` },
118
+ * protocols: ["graphql-transport-ws"],
119
+ * });
120
+ *
121
+ * socket.onMessage((data) => {
122
+ * if (typeof data === "string") handle(JSON.parse(data));
123
+ * });
124
+ * socket.onClose(({ code, error }) => { if (error) reconnect(); });
125
+ *
126
+ * await socket.send(JSON.stringify({ type: "subscribe", topic }));
127
+ * ```
128
+ *
129
+ * Pings are answered by the runtime, so a socket stays up without the
130
+ * application doing anything. Send latency is bounded at about 10ms: one
131
+ * thread owns the socket, and a send waits for its read to come up for air.
132
+ */
133
+ socket: async (options) => {
134
+ const { signal, ...rest } = options;
135
+ if (signal?.aborted)
136
+ throw cancelled();
137
+ let requestId;
138
+ const opening = invokeTracked("network.socket", rest, (id) => {
139
+ requestId = id;
140
+ });
141
+ // Same two-phase shape as a stream: before the handshake completes there
142
+ // is no socket to close, so the request is what gets abandoned.
143
+ const abortHandshake = () => {
144
+ if (requestId === undefined)
145
+ return;
146
+ void invoke("network.cancel", { id: requestId }).catch(() => { });
147
+ };
148
+ signal?.addEventListener("abort", abortHandshake, { once: true });
149
+ let opened;
150
+ try {
151
+ opened = await opening;
152
+ }
153
+ finally {
154
+ signal?.removeEventListener("abort", abortHandshake);
155
+ }
156
+ const socket = connect(opened);
157
+ if (signal) {
158
+ if (signal.aborted)
159
+ void socket.close().catch(() => { });
160
+ else {
161
+ signal.addEventListener("abort", () => {
162
+ void socket.close().catch(() => { });
163
+ }, { once: true });
164
+ }
165
+ }
166
+ return socket;
167
+ },
49
168
  };
169
+ function connect(opened) {
170
+ const { id, url, protocol } = opened;
171
+ const messageHandlers = new Set();
172
+ const closeHandlers = new Set();
173
+ let pending = [];
174
+ let closed;
175
+ const stopMessages = listen("network.message", (payload) => {
176
+ if (payload.id !== id)
177
+ return;
178
+ const data = payload.binary ? decode(payload.data) : payload.data;
179
+ if (messageHandlers.size === 0) {
180
+ pending.push(data);
181
+ return;
182
+ }
183
+ for (const handler of [...messageHandlers])
184
+ handler(data);
185
+ });
186
+ const stopClose = listen("network.socketClosed", (payload) => {
187
+ if (payload.id !== id)
188
+ return;
189
+ stopMessages();
190
+ stopClose();
191
+ closed = {
192
+ reason: payload.reason,
193
+ cancelled: payload.cancelled,
194
+ ...(payload.code === null ? {} : { code: payload.code }),
195
+ ...(payload.error ? { error: payload.error } : {}),
196
+ };
197
+ for (const handler of [...closeHandlers])
198
+ handler(closed);
199
+ messageHandlers.clear();
200
+ closeHandlers.clear();
201
+ });
202
+ return {
203
+ id,
204
+ url,
205
+ ...(protocol ? { protocol } : {}),
206
+ send: (data) => invoke("network.socketSend", { id, data }),
207
+ sendBytes: (data) => invoke("network.socketSend", {
208
+ id,
209
+ data: encode(data),
210
+ binary: true,
211
+ }),
212
+ onMessage(handler) {
213
+ messageHandlers.add(handler);
214
+ if (pending.length > 0) {
215
+ const backlog = pending;
216
+ pending = [];
217
+ for (const message of backlog)
218
+ handler(message);
219
+ }
220
+ return () => messageHandlers.delete(handler);
221
+ },
222
+ onClose(handler) {
223
+ // Attaching after it has already closed still hears about it.
224
+ if (closed) {
225
+ handler(closed);
226
+ return () => { };
227
+ }
228
+ closeHandlers.add(handler);
229
+ return () => closeHandlers.delete(handler);
230
+ },
231
+ close: (code, reason) => invoke("network.socketClose", { id, code, reason }),
232
+ };
233
+ }
234
+ async function open(options, responseType, decodeChunk) {
235
+ const { bytes, body, signal, ...rest } = options;
236
+ if (signal?.aborted)
237
+ throw cancelled();
238
+ const params = {
239
+ ...rest,
240
+ responseType,
241
+ ...(bytes === undefined ? {} : { bodyBase64: encode(bytes) }),
242
+ ...(bytes === undefined && body !== undefined ? { body } : {}),
243
+ };
244
+ // Two phases, one signal. Before the head arrives there is no stream id to
245
+ // cancel, so the request id is what gets abandoned; afterwards it is the
246
+ // stream. The caller sees one `signal` and one `cancel()`.
247
+ let requestId;
248
+ const opened = invokeTracked("network.stream", params, (id) => {
249
+ requestId = id;
250
+ });
251
+ const abortHead = () => {
252
+ if (requestId === undefined)
253
+ return;
254
+ void invoke("network.cancel", { id: requestId }).catch(() => { });
255
+ };
256
+ signal?.addEventListener("abort", abortHead, { once: true });
257
+ let head;
258
+ try {
259
+ head = await opened;
260
+ }
261
+ finally {
262
+ signal?.removeEventListener("abort", abortHead);
263
+ }
264
+ const { id, ...rest2 } = head;
265
+ const stream = track(id, rest2, decodeChunk);
266
+ if (signal) {
267
+ // It may have aborted while the head was still on its way.
268
+ if (signal.aborted)
269
+ void stream.cancel().catch(() => { });
270
+ else {
271
+ signal.addEventListener("abort", () => {
272
+ void stream.cancel().catch(() => { });
273
+ }, { once: true });
274
+ }
275
+ }
276
+ return stream;
277
+ }
278
+ function track(id, head, decodeChunk) {
279
+ const chunkHandlers = new Set();
280
+ const endHandlers = new Set();
281
+ // Held until somebody is listening, so the first events of a stream are not
282
+ // lost to an `await` between opening it and subscribing.
283
+ let pending = [];
284
+ let ended;
285
+ const stopChunks = listen("network.chunk", (payload) => {
286
+ if (payload.id !== id)
287
+ return;
288
+ const chunk = decodeChunk(payload.data);
289
+ if (chunkHandlers.size === 0) {
290
+ pending.push(chunk);
291
+ return;
292
+ }
293
+ for (const handler of [...chunkHandlers])
294
+ handler(chunk);
295
+ });
296
+ const stopEnd = listen("network.end", (payload) => {
297
+ if (payload.id !== id)
298
+ return;
299
+ stopChunks();
300
+ stopEnd();
301
+ ended = {
302
+ cancelled: payload.cancelled,
303
+ ...(payload.error ? { error: payload.error } : {}),
304
+ };
305
+ for (const handler of [...endHandlers])
306
+ handler(ended);
307
+ chunkHandlers.clear();
308
+ endHandlers.clear();
309
+ });
310
+ return {
311
+ ...head,
312
+ id,
313
+ onChunk(handler) {
314
+ chunkHandlers.add(handler);
315
+ // Whatever arrived before anyone was listening, in order.
316
+ if (pending.length > 0) {
317
+ const backlog = pending;
318
+ pending = [];
319
+ for (const chunk of backlog)
320
+ handler(chunk);
321
+ }
322
+ return () => chunkHandlers.delete(handler);
323
+ },
324
+ onEnd(handler) {
325
+ // Attaching after it already finished still hears about it, rather than
326
+ // waiting for an event that has been and gone.
327
+ if (ended) {
328
+ handler(ended);
329
+ return () => { };
330
+ }
331
+ endHandlers.add(handler);
332
+ return () => endHandlers.delete(handler);
333
+ },
334
+ cancel: () => invoke("network.cancelStream", { id }),
335
+ };
336
+ }
50
337
  async function send(options, responseType) {
51
- const { bytes, body, ...rest } = options;
52
- return invoke("network.request", {
338
+ const { bytes, body, signal, ...rest } = options;
339
+ if (signal?.aborted) {
340
+ throw cancelled();
341
+ }
342
+ const params = {
53
343
  ...rest,
54
344
  responseType,
55
345
  ...(bytes === undefined ? {} : { bodyBase64: encode(bytes) }),
56
346
  ...(bytes === undefined && body !== undefined ? { body } : {}),
347
+ };
348
+ if (!signal)
349
+ return invoke("network.request", params);
350
+ let id;
351
+ const answered = invokeTracked("network.request", params, (sent) => {
352
+ id = sent;
57
353
  });
354
+ const abort = () => {
355
+ if (id === undefined)
356
+ return;
357
+ // The runtime rejects `answered` itself, so there is nothing to do with
358
+ // the outcome here - including the case where the request had already
359
+ // finished and there was nothing left to cancel.
360
+ void invoke("network.cancel", { id }).catch(() => { });
361
+ };
362
+ signal.addEventListener("abort", abort, { once: true });
363
+ try {
364
+ return await answered;
365
+ }
366
+ finally {
367
+ signal.removeEventListener("abort", abort);
368
+ }
58
369
  }
370
+ const cancelled = () => new VantailError(ErrorCode.CANCELLED, "The request was cancelled");
59
371
  //# sourceMappingURL=network.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"network.js","sourceRoot":"","sources":["../src/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAoB,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAwCxC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,oDAAoD;IACpD,OAAO,EAAE,KAAK,EACZ,OAA8B,EACI,EAAE;QACpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC;IAED,gEAAgE;IAChE,IAAI,EAAE,KAAK,EACT,OAA8B,EACD,EAAE;QAC/B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,OAAO,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAM,EAAE,CAAC;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,WAAW,CACnB,GAAG,QAAQ,CAAC,GAAG,yBAAyB,QAAQ,CAAC,MAAM,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,CAC7E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,MAAM,EAAE,KAAK,EACX,OAA8B,EACQ,EAAE;QACxC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC/C,OAAO,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACtD,CAAC;CACF,CAAC;AAEF,KAAK,UAAU,IAAI,CACjB,OAA8B,EAC9B,YAA+B;IAE/B,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IACzC,OAAO,MAAM,CAAc,iBAAiB,EAAE;QAC5C,GAAG,IAAI;QACP,YAAY;QACZ,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7D,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../src/network.ts"],"names":[],"mappings":"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"}
package/dist/path.d.ts ADDED
@@ -0,0 +1,63 @@
1
+ /**
2
+ * The path operations, for one platform's idea of a path.
3
+ *
4
+ * `path` is this for the platform the application is running on. `path.posix`
5
+ * and `path.win32` are the other two, for the times you are handling a path
6
+ * that came from somewhere else - a config file written on a colleague's
7
+ * machine, a path inside an archive.
8
+ */
9
+ export interface PathApi {
10
+ /** `/` everywhere but Windows. */
11
+ readonly sep: "/" | "\\";
12
+ /**
13
+ * Join segments with a single separator and tidy the result.
14
+ *
15
+ * ```ts
16
+ * path.join(await os.appDataDir(), "projects", name + ".json");
17
+ * ```
18
+ */
19
+ join(...parts: string[]): string;
20
+ /** Collapse `.`, `..` and repeated separators. */
21
+ normalize(path: string): string;
22
+ /** Everything before the last segment. `.` when there is nothing. */
23
+ dirname(path: string): string;
24
+ /** The last segment, optionally without a trailing `suffix`. */
25
+ basename(path: string, suffix?: string): string;
26
+ /** The extension including its dot, or `""`. A dotfile has none. */
27
+ extname(path: string): string;
28
+ /** Whether the path names a location without needing a starting point. */
29
+ isAbsolute(path: string): boolean;
30
+ /** The same operations for POSIX paths, whatever platform this is. */
31
+ readonly posix: PathApi;
32
+ /** The same operations for Windows paths, whatever platform this is. */
33
+ readonly win32: PathApi;
34
+ }
35
+ /**
36
+ * Joining and taking apart file paths, without a round trip.
37
+ *
38
+ * A webview has no `path` module, and asking the runtime per join would put
39
+ * an IPC call inside every directory walk - so every application that touches
40
+ * more than one file ends up rewriting `join`, `dirname` and `basename`, and
41
+ * getting the Windows separator subtly wrong. This is that code, once.
42
+ *
43
+ * These are string operations. Nothing here touches the filesystem, so
44
+ * nothing here needs a permission: `path.join` will happily build a path the
45
+ * application is not allowed to read, and `filesystem` will then refuse it.
46
+ *
47
+ * ```ts
48
+ * import { os, path, filesystem } from "@vantail/api";
49
+ *
50
+ * const file = path.join(await os.appDataDir(), "projects", "notes.md");
51
+ * path.basename(file); // "notes.md"
52
+ * path.basename(file, ".md"); // "notes"
53
+ * path.extname(file); // ".md"
54
+ * path.dirname(file); // ".../projects"
55
+ * ```
56
+ *
57
+ * There is deliberately no `resolve`: a webview has no current working
58
+ * directory to resolve against. Start from `os.appDataDir()`,
59
+ * `os.homeDir()` or a path the user picked in a dialog, which is also the
60
+ * only kind of path `filesystem` will accept.
61
+ */
62
+ export declare const path: PathApi;
63
+ //# sourceMappingURL=path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,WAAW,OAAO;IACtB,kCAAkC;IAClC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;IAEzB;;;;;;OAMG;IACH,IAAI,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAEjC,kDAAkD;IAClD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAEhC,qEAAqE;IACrE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAE9B,gEAAgE;IAChE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEhD,oEAAoE;IACpE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAE9B,0EAA0E;IAC1E,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAElC,sEAAsE;IACtE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,wEAAwE;IACxE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAgLD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,IAAI,EAAE,OACoC,CAAC"}
package/dist/path.js ADDED
@@ -0,0 +1,177 @@
1
+ import { os } from "./os.js";
2
+ const NONE = { raw: "", prefix: "", absolute: false };
3
+ function flavour(sep) {
4
+ const win = sep === "\\";
5
+ const splitter = win ? /[\\/]+/ : /\/+/;
6
+ const trailing = win ? /[\\/]+$/ : /\/+$/;
7
+ const isSep = (char) => char === "/" || (win && char === "\\");
8
+ const lastSep = (text) => win
9
+ ? Math.max(text.lastIndexOf("\\"), text.lastIndexOf("/"))
10
+ : text.lastIndexOf("/");
11
+ function rootOf(path) {
12
+ if (!win) {
13
+ return path.startsWith("/")
14
+ ? { raw: "/", prefix: "/", absolute: true }
15
+ : NONE;
16
+ }
17
+ // `\\server\share`, which is a root in its own right - the server and the
18
+ // share are not segments you can `..` your way out of.
19
+ const unc = /^[\\/]{2}([^\\/]+)[\\/]+([^\\/]+)[\\/]?/.exec(path);
20
+ if (unc) {
21
+ return {
22
+ raw: unc[0],
23
+ prefix: `\\\\${unc[1]}\\${unc[2]}\\`,
24
+ absolute: true,
25
+ };
26
+ }
27
+ const drive = /^[a-zA-Z]:[\\/]/.exec(path);
28
+ if (drive) {
29
+ return { raw: drive[0], prefix: `${path.slice(0, 2)}\\`, absolute: true };
30
+ }
31
+ // `C:file` is relative to whatever the current directory on C: is, which
32
+ // makes it a prefix but not an absolute path.
33
+ if (/^[a-zA-Z]:/.test(path)) {
34
+ return { raw: path.slice(0, 2), prefix: path.slice(0, 2), absolute: false };
35
+ }
36
+ // `\file` is absolute on the current drive.
37
+ if (/^[\\/]/.test(path)) {
38
+ return { raw: path.slice(0, 1), prefix: "\\", absolute: true };
39
+ }
40
+ return NONE;
41
+ }
42
+ function isAbsolute(path) {
43
+ return rootOf(path).absolute;
44
+ }
45
+ function normalize(path) {
46
+ if (path === "")
47
+ return ".";
48
+ const root = rootOf(path);
49
+ const parts = [];
50
+ for (const segment of path.slice(root.raw.length).split(splitter)) {
51
+ if (segment === "" || segment === ".")
52
+ continue;
53
+ if (segment === "..") {
54
+ // Climbing out of an absolute root goes nowhere, the way the
55
+ // filesystem itself treats `/..`.
56
+ if (parts.length > 0 && parts[parts.length - 1] !== "..")
57
+ parts.pop();
58
+ else if (!root.absolute)
59
+ parts.push("..");
60
+ continue;
61
+ }
62
+ parts.push(segment);
63
+ }
64
+ let out = parts.join(sep);
65
+ // A trailing separator is how a path says "this is a directory", so it
66
+ // survives.
67
+ if (out !== "" && trailing.test(path))
68
+ out += sep;
69
+ if (out === "")
70
+ return root.prefix === "" ? "." : root.prefix;
71
+ return root.prefix + out;
72
+ }
73
+ function join(...parts) {
74
+ const joined = parts.filter((part) => part !== "").join(sep);
75
+ return joined === "" ? "." : normalize(joined);
76
+ }
77
+ function dirname(path) {
78
+ if (path === "")
79
+ return ".";
80
+ // A slice rather than a rebuild, so the separators the caller wrote come
81
+ // back unchanged - `dirname("C:/foo/bar")` is `"C:/foo"`, not
82
+ // `"C:\\foo"`. Only `normalize` is in the business of tidying.
83
+ const rootEnd = rootOf(path).raw.length;
84
+ // Trailing separators are not the cut: `dirname("foo/bar/")` is `"foo"`.
85
+ let end = path.length;
86
+ while (end > rootEnd && isSep(path[end - 1]))
87
+ end -= 1;
88
+ let at = -1;
89
+ for (let i = end - 1; i >= rootEnd; i -= 1) {
90
+ if (isSep(path[i])) {
91
+ at = i;
92
+ break;
93
+ }
94
+ }
95
+ // Nothing but a single name after the root: the answer is the root, or
96
+ // "here" when there was no root at all.
97
+ if (at < 0)
98
+ return rootEnd === 0 ? "." : path.slice(0, rootEnd);
99
+ return path.slice(0, at);
100
+ }
101
+ function basename(path, suffix) {
102
+ // Asking for the name of a path that is nothing but the suffix leaves
103
+ // nothing, which is what Node answers too.
104
+ if (suffix !== undefined && suffix !== "" && suffix === path)
105
+ return "";
106
+ const rest = path.replace(trailing, "");
107
+ const at = lastSep(rest);
108
+ let name = at < 0 ? rest : rest.slice(at + 1);
109
+ // A bare drive is a root, not a name.
110
+ if (win && /^[a-zA-Z]:$/.test(name))
111
+ name = "";
112
+ if (suffix !== undefined &&
113
+ suffix !== "" &&
114
+ name !== suffix &&
115
+ name.endsWith(suffix)) {
116
+ name = name.slice(0, -suffix.length);
117
+ }
118
+ return name;
119
+ }
120
+ function extname(path) {
121
+ const name = basename(path);
122
+ const at = name.lastIndexOf(".");
123
+ // `0` is a dotfile - `.gitignore` is a name, not an extension.
124
+ if (at <= 0)
125
+ return "";
126
+ return name.slice(at);
127
+ }
128
+ const api = {
129
+ sep,
130
+ join,
131
+ normalize,
132
+ dirname,
133
+ basename,
134
+ extname,
135
+ isAbsolute,
136
+ };
137
+ return api;
138
+ }
139
+ const posix = flavour("/");
140
+ const win32 = flavour("\\");
141
+ // Each flavour can reach the other two, so `path.posix.join` works whichever
142
+ // one `path` turned out to be.
143
+ for (const api of [posix, win32]) {
144
+ Object.defineProperties(api, {
145
+ posix: { value: posix, enumerable: true },
146
+ win32: { value: win32, enumerable: true },
147
+ });
148
+ }
149
+ /**
150
+ * Joining and taking apart file paths, without a round trip.
151
+ *
152
+ * A webview has no `path` module, and asking the runtime per join would put
153
+ * an IPC call inside every directory walk - so every application that touches
154
+ * more than one file ends up rewriting `join`, `dirname` and `basename`, and
155
+ * getting the Windows separator subtly wrong. This is that code, once.
156
+ *
157
+ * These are string operations. Nothing here touches the filesystem, so
158
+ * nothing here needs a permission: `path.join` will happily build a path the
159
+ * application is not allowed to read, and `filesystem` will then refuse it.
160
+ *
161
+ * ```ts
162
+ * import { os, path, filesystem } from "@vantail/api";
163
+ *
164
+ * const file = path.join(await os.appDataDir(), "projects", "notes.md");
165
+ * path.basename(file); // "notes.md"
166
+ * path.basename(file, ".md"); // "notes"
167
+ * path.extname(file); // ".md"
168
+ * path.dirname(file); // ".../projects"
169
+ * ```
170
+ *
171
+ * There is deliberately no `resolve`: a webview has no current working
172
+ * directory to resolve against. Start from `os.appDataDir()`,
173
+ * `os.homeDir()` or a path the user picked in a dialog, which is also the
174
+ * only kind of path `filesystem` will accept.
175
+ */
176
+ export const path = os.infoSync()?.platform === "windows" ? win32 : posix;
177
+ //# sourceMappingURL=path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.js","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,8 @@ export declare const ErrorCode: {
40
40
  readonly INVALID_UTF8: "INVALID_UTF8";
41
41
  readonly UNSUPPORTED: "UNSUPPORTED";
42
42
  readonly INTERNAL: "INTERNAL";
43
+ /** The caller abandoned the request before it answered. */
44
+ readonly CANCELLED: "CANCELLED";
43
45
  };
44
46
  export type ErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode];
45
47
  /** The object the runtime injects before any page script runs. */
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,mBAAmB,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG,mBAAmB,CAAC;AAEpE,wBAAgB,cAAc,CAC5B,OAAO,EAAE,eAAe,GACvB,OAAO,IAAI,mBAAmB,CAEhC;AAED,8EAA8E;AAC9E,eAAO,MAAM,SAAS;aACpB,UAAU,EAAE,YAAY;aACxB,cAAc,EAAE,gBAAgB;aAChC,cAAc,EAAE,gBAAgB;aAChC,iBAAiB,EAAE,mBAAmB;aACtC,SAAS,EAAE,WAAW;aACtB,cAAc,EAAE,gBAAgB;aAChC,QAAQ,EAAE,UAAU;aACpB,YAAY,EAAE,cAAc;aAC5B,WAAW,EAAE,aAAa;aAC1B,QAAQ,EAAE,UAAU;CACZ,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAEnE,kEAAkE;AAClE,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE;QACH,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,OAAO,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC3C,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACrE;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,WAAW,CAAC,EAAE,aAAa,CAAC;KAC7B;CACF"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,mBAAmB,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG,mBAAmB,CAAC;AAEpE,wBAAgB,cAAc,CAC5B,OAAO,EAAE,eAAe,GACvB,OAAO,IAAI,mBAAmB,CAEhC;AAED,8EAA8E;AAC9E,eAAO,MAAM,SAAS;aACpB,UAAU,EAAE,YAAY;aACxB,cAAc,EAAE,gBAAgB;aAChC,cAAc,EAAE,gBAAgB;aAChC,iBAAiB,EAAE,mBAAmB;aACtC,SAAS,EAAE,WAAW;aACtB,cAAc,EAAE,gBAAgB;aAChC,QAAQ,EAAE,UAAU;aACpB,YAAY,EAAE,cAAc;aAC5B,WAAW,EAAE,aAAa;aAC1B,QAAQ,EAAE,UAAU;IACpB,2DAA2D;aAC3D,SAAS,EAAE,WAAW;CACd,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAEnE,kEAAkE;AAClE,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE;QACH,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,OAAO,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC3C,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACrE;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,WAAW,CAAC,EAAE,aAAa,CAAC;KAC7B;CACF"}