@sveltejs/kit 1.0.0-next.32 → 1.0.0-next.320

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 (73) hide show
  1. package/README.md +12 -9
  2. package/assets/app/env.js +20 -0
  3. package/assets/app/navigation.js +24 -0
  4. package/assets/app/paths.js +1 -0
  5. package/assets/app/stores.js +97 -0
  6. package/assets/client/singletons.js +13 -0
  7. package/assets/client/start.js +1687 -0
  8. package/assets/components/error.svelte +18 -2
  9. package/assets/env.js +8 -0
  10. package/assets/paths.js +13 -0
  11. package/assets/server/index.js +3411 -0
  12. package/dist/chunks/amp_hook.js +56 -0
  13. package/dist/chunks/cert.js +28154 -0
  14. package/dist/chunks/constants.js +663 -0
  15. package/dist/chunks/filesystem.js +110 -0
  16. package/dist/chunks/index.js +515 -0
  17. package/dist/chunks/index2.js +1335 -0
  18. package/dist/chunks/index3.js +118 -0
  19. package/dist/chunks/index4.js +186 -0
  20. package/dist/chunks/index5.js +251 -0
  21. package/dist/chunks/index6.js +15737 -0
  22. package/dist/chunks/index7.js +4207 -0
  23. package/dist/chunks/misc.js +78 -0
  24. package/dist/chunks/multipart-parser.js +449 -0
  25. package/dist/chunks/object.js +83 -0
  26. package/dist/chunks/sync.js +974 -0
  27. package/dist/chunks/url.js +56 -0
  28. package/dist/cli.js +1024 -65
  29. package/dist/hooks.js +28 -0
  30. package/dist/install-fetch.js +6518 -0
  31. package/dist/node.js +94 -0
  32. package/package.json +95 -62
  33. package/svelte-kit.js +0 -1
  34. package/types/ambient.d.ts +298 -0
  35. package/types/index.d.ts +278 -0
  36. package/types/internal.d.ts +320 -0
  37. package/types/private.d.ts +242 -0
  38. package/CHANGELOG.md +0 -350
  39. package/assets/runtime/app/navigation.js +0 -23
  40. package/assets/runtime/app/navigation.js.map +0 -1
  41. package/assets/runtime/app/paths.js +0 -2
  42. package/assets/runtime/app/paths.js.map +0 -1
  43. package/assets/runtime/app/stores.js +0 -78
  44. package/assets/runtime/app/stores.js.map +0 -1
  45. package/assets/runtime/internal/singletons.js +0 -15
  46. package/assets/runtime/internal/singletons.js.map +0 -1
  47. package/assets/runtime/internal/start.js +0 -591
  48. package/assets/runtime/internal/start.js.map +0 -1
  49. package/assets/runtime/utils-85ebcc60.js +0 -18
  50. package/assets/runtime/utils-85ebcc60.js.map +0 -1
  51. package/dist/api.js +0 -32
  52. package/dist/api.js.map +0 -1
  53. package/dist/cli.js.map +0 -1
  54. package/dist/create_app.js +0 -577
  55. package/dist/create_app.js.map +0 -1
  56. package/dist/index.js +0 -329
  57. package/dist/index.js.map +0 -1
  58. package/dist/index2.js +0 -14363
  59. package/dist/index2.js.map +0 -1
  60. package/dist/index3.js +0 -544
  61. package/dist/index3.js.map +0 -1
  62. package/dist/index4.js +0 -71
  63. package/dist/index4.js.map +0 -1
  64. package/dist/index5.js +0 -465
  65. package/dist/index5.js.map +0 -1
  66. package/dist/index6.js +0 -727
  67. package/dist/index6.js.map +0 -1
  68. package/dist/renderer.js +0 -2413
  69. package/dist/renderer.js.map +0 -1
  70. package/dist/standard.js +0 -100
  71. package/dist/standard.js.map +0 -1
  72. package/dist/utils.js +0 -57
  73. package/dist/utils.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index4.js","sources":["../src/api/start/index.js"],"sourcesContent":["import * as fs from 'fs';\nimport * as http from 'http';\nimport { parse, URLSearchParams } from 'url';\nimport sirv from 'sirv';\nimport { get_body } from '@sveltejs/app-utils/http';\nimport { join, resolve } from 'path';\n\nconst mutable = (dir) =>\n\tsirv(dir, {\n\t\tetag: true,\n\t\tmaxAge: 0\n\t});\n\nexport async function start({ port, config }) {\n\tconst app_file = resolve('.svelte/build/optimized/server/app.js');\n\tconst app = await import(app_file);\n\n\tconst static_handler = fs.existsSync(config.files.assets)\n\t\t? mutable(config.files.assets)\n\t\t: (_req, _res, next) => next();\n\n\tconst assets_handler = sirv('.svelte/build/optimized/client', {\n\t\tmaxAge: 31536000,\n\t\timmutable: true\n\t});\n\n\treturn new Promise((fulfil) => {\n\t\tconst server = http.createServer((req, res) => {\n\t\t\tconst parsed = parse(req.url || '');\n\n\t\t\tassets_handler(req, res, () => {\n\t\t\t\tstatic_handler(req, res, async () => {\n\t\t\t\t\tconst rendered = await app.render(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmethod: req.method,\n\t\t\t\t\t\t\theaders: req.headers,\n\t\t\t\t\t\t\tpath: parsed.pathname,\n\t\t\t\t\t\t\tbody: await get_body(req),\n\t\t\t\t\t\t\tquery: new URLSearchParams(parsed.query || '')\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpaths: {\n\t\t\t\t\t\t\t\tbase: '',\n\t\t\t\t\t\t\t\tassets: '/.'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tget_stack: (error) => error.stack, // TODO should this return a sourcemapped stacktrace?\n\t\t\t\t\t\t\tget_static_file: (file) => fs.readFileSync(join(config.files.assets, file))\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t\tif (rendered) {\n\t\t\t\t\t\tres.writeHead(rendered.status, rendered.headers);\n\t\t\t\t\t\tres.end(rendered.body);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tres.statusCode = 404;\n\t\t\t\t\t\tres.end('Not found');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\tserver.listen(port, () => {\n\t\t\tfulfil(server);\n\t\t});\n\n\t\treturn server;\n\t});\n}\n"],"names":["fs.existsSync","http.createServer","fs.readFileSync"],"mappings":";;;;;;;AAOA,MAAM,OAAO,GAAG,CAAC,GAAG;AACpB,CAAC,IAAI,CAAC,GAAG,EAAE;AACX,EAAE,IAAI,EAAE,IAAI;AACZ,EAAE,MAAM,EAAE,CAAC;AACX,EAAE,CAAC,CAAC;AACJ;AACO,eAAe,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;AAC9C,CAAC,MAAM,QAAQ,GAAG,OAAO,CAAC,uCAAuC,CAAC,CAAC;AACnE,CAAC,MAAM,GAAG,GAAG,MAAM,OAAO,QAAQ,CAAC,CAAC;AACpC;AACA,CAAC,MAAM,cAAc,GAAGA,UAAa,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;AAC1D,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;AAChC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC;AACjC;AACA,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,gCAAgC,EAAE;AAC/D,EAAE,MAAM,EAAE,QAAQ;AAClB,EAAE,SAAS,EAAE,IAAI;AACjB,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK;AAChC,EAAE,MAAM,MAAM,GAAGC,YAAiB,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK;AACjD,GAAG,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;AACvC;AACA,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM;AAClC,IAAI,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY;AACzC,KAAK,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,MAAM;AACtC,MAAM;AACN,OAAO,MAAM,EAAE,GAAG,CAAC,MAAM;AACzB,OAAO,OAAO,EAAE,GAAG,CAAC,OAAO;AAC3B,OAAO,IAAI,EAAE,MAAM,CAAC,QAAQ;AAC5B,OAAO,IAAI,EAAE,MAAM,QAAQ,CAAC,GAAG,CAAC;AAChC,OAAO,KAAK,EAAE,IAAI,eAAe,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;AACrD,OAAO;AACP,MAAM;AACN,OAAO,KAAK,EAAE;AACd,QAAQ,IAAI,EAAE,EAAE;AAChB,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ;AACR,OAAO,SAAS,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;AACxC,OAAO,eAAe,EAAE,CAAC,IAAI,KAAKC,YAAe,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAClF,OAAO;AACP,MAAM,CAAC;AACP;AACA,KAAK,IAAI,QAAQ,EAAE;AACnB,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;AACvD,MAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC7B,MAAM,MAAM;AACZ,MAAM,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;AAC3B,MAAM,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC3B,MAAM;AACN,KAAK,CAAC,CAAC;AACP,IAAI,CAAC,CAAC;AACN,GAAG,CAAC,CAAC;AACL;AACA,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM;AAC5B,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAClB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE,CAAC,CAAC;AACJ;;;;"}
package/dist/index5.js DELETED
@@ -1,465 +0,0 @@
1
- import { readdirSync, statSync, existsSync, createReadStream } from 'fs';
2
- import { resolve, join, normalize } from 'path';
3
- import { M as Mime_1, s as standard } from './standard.js';
4
-
5
- function list(dir, callback, pre='') {
6
- dir = resolve('.', dir);
7
- let arr = readdirSync(dir);
8
- let i=0, abs, stats;
9
- for (; i < arr.length; i++) {
10
- abs = join(dir, arr[i]);
11
- stats = statSync(abs);
12
- stats.isDirectory()
13
- ? list(abs, callback, join(pre, arr[i]))
14
- : callback(join(pre, arr[i]), abs, stats);
15
- }
16
- }
17
-
18
- function parse(str) {
19
- let i=0, j=0, k, v;
20
- let out={}, arr=str.split('&');
21
- for (; i < arr.length; i++) {
22
- j = arr[i].indexOf('=');
23
- v = !!~j && arr[i].substring(j+1) || '';
24
- k = !!~j ? arr[i].substring(0, j) : arr[i];
25
- out[k] = out[k] !== void 0 ? [].concat(out[k], v) : v;
26
- }
27
- return out;
28
- }
29
-
30
- function parser (req, toDecode) {
31
- let url = req.url;
32
- if (url == null) return;
33
-
34
- let obj = req._parsedUrl;
35
- if (obj && obj._raw === url) return obj;
36
-
37
- obj = {
38
- path: url,
39
- pathname: url,
40
- search: null,
41
- query: null,
42
- href: url,
43
- _raw: url
44
- };
45
-
46
- if (url.length > 1) {
47
- if (toDecode && !req._decoded && !!~url.indexOf('%', 1)) {
48
- let nxt = url;
49
- try { nxt = decodeURIComponent(url); } catch (e) {/* bad */}
50
- url = req.url = obj.href = obj.path = obj.pathname = obj._raw = nxt;
51
- req._decoded = true;
52
- }
53
-
54
- let idx = url.indexOf('?', 1);
55
-
56
- if (idx !== -1) {
57
- obj.search = url.substring(idx);
58
- obj.query = obj.search.substring(1);
59
- obj.pathname = url.substring(0, idx);
60
- if (toDecode && obj.query.length > 0) {
61
- obj.query = parse(obj.query);
62
- }
63
- }
64
- }
65
-
66
- return (req._parsedUrl = obj);
67
- }
68
-
69
- var lite = new Mime_1(standard);
70
-
71
- const noop = () => {};
72
-
73
- function isMatch(uri, arr) {
74
- for (let i=0; i < arr.length; i++) {
75
- if (arr[i].test(uri)) return true;
76
- }
77
- }
78
-
79
- function toAssume(uri, extns) {
80
- let i=0, x, len=uri.length - 1;
81
- if (uri.charCodeAt(len) === 47) {
82
- uri = uri.substring(0, len);
83
- }
84
-
85
- let arr=[], tmp=`${uri}/index`;
86
- for (; i < extns.length; i++) {
87
- x = extns[i] ? `.${extns[i]}` : '';
88
- if (uri) arr.push(uri + x);
89
- arr.push(tmp + x);
90
- }
91
-
92
- return arr;
93
- }
94
-
95
- function viaCache(cache, uri, extns) {
96
- let i=0, data, arr=toAssume(uri, extns);
97
- for (; i < arr.length; i++) {
98
- if (data = cache[arr[i]]) return data;
99
- }
100
- }
101
-
102
- function viaLocal(dir, isEtag, uri, extns) {
103
- let i=0, arr=toAssume(uri, extns);
104
- let abs, stats, name, headers;
105
- for (; i < arr.length; i++) {
106
- abs = normalize(join(dir, name=arr[i]));
107
- if (abs.startsWith(dir) && existsSync(abs)) {
108
- stats = statSync(abs);
109
- if (stats.isDirectory()) continue;
110
- headers = toHeaders(name, stats, isEtag);
111
- headers['Cache-Control'] = isEtag ? 'no-cache' : 'no-store';
112
- return { abs, stats, headers };
113
- }
114
- }
115
- }
116
-
117
- function is404(req, res) {
118
- return (res.statusCode=404,res.end());
119
- }
120
-
121
- function send(req, res, file, stats, headers) {
122
- let code=200, tmp, opts={};
123
- headers = { ...headers };
124
-
125
- for (let key in headers) {
126
- tmp = res.getHeader(key);
127
- if (tmp) headers[key] = tmp;
128
- }
129
-
130
- if (tmp = res.getHeader('content-type')) {
131
- headers['Content-Type'] = tmp;
132
- }
133
-
134
- if (req.headers.range) {
135
- code = 206;
136
- let [x, y] = req.headers.range.replace('bytes=', '').split('-');
137
- let end = opts.end = parseInt(y, 10) || stats.size - 1;
138
- let start = opts.start = parseInt(x, 10) || 0;
139
-
140
- if (start >= stats.size || end >= stats.size) {
141
- res.setHeader('Content-Range', `bytes */${stats.size}`);
142
- res.statusCode = 416;
143
- return res.end();
144
- }
145
-
146
- headers['Content-Range'] = `bytes ${start}-${end}/${stats.size}`;
147
- headers['Content-Length'] = (end - start + 1);
148
- headers['Accept-Ranges'] = 'bytes';
149
- }
150
-
151
- res.writeHead(code, headers);
152
- createReadStream(file, opts).pipe(res);
153
- }
154
-
155
- function isEncoding(name, type, headers) {
156
- headers['Content-Encoding'] = type;
157
- headers['Content-Type'] = lite.getType(name.replace(/\.([^.]*)$/, '')) || '';
158
- }
159
-
160
- function toHeaders(name, stats, isEtag) {
161
- let headers = {
162
- 'Content-Length': stats.size,
163
- 'Content-Type': lite.getType(name) || '',
164
- 'Last-Modified': stats.mtime.toUTCString(),
165
- };
166
- if (isEtag) headers['ETag'] = `W/"${stats.size}-${stats.mtime.getTime()}"`;
167
- if (/\.br$/.test(name)) isEncoding(name, 'br', headers);
168
- if (/\.gz$/.test(name)) isEncoding(name, 'gzip', headers);
169
- return headers;
170
- }
171
-
172
- function sirv (dir, opts={}) {
173
- dir = resolve(dir || '.');
174
-
175
- let isNotFound = opts.onNoMatch || is404;
176
- let setHeaders = opts.setHeaders || noop;
177
-
178
- let extensions = opts.extensions || ['html', 'htm'];
179
- let gzips = opts.gzip && extensions.map(x => `${x}.gz`).concat('gz');
180
- let brots = opts.brotli && extensions.map(x => `${x}.br`).concat('br');
181
-
182
- const FILES = {};
183
-
184
- let fallback = '/';
185
- let isEtag = !!opts.etag;
186
- let isSPA = !!opts.single;
187
- if (typeof opts.single === 'string') {
188
- let idx = opts.single.lastIndexOf('.');
189
- fallback += !!~idx ? opts.single.substring(0, idx) : opts.single;
190
- }
191
-
192
- let ignores = [];
193
- if (opts.ignores !== false) {
194
- ignores.push(/[/]([A-Za-z\s\d~$._-]+\.\w+){1,}$/); // any extn
195
- if (opts.dotfiles) ignores.push(/\/\.\w/);
196
- else ignores.push(/\/\.well-known/);
197
- [].concat(opts.ignores || []).forEach(x => {
198
- ignores.push(new RegExp(x, 'i'));
199
- });
200
- }
201
-
202
- let cc = opts.maxAge != null && `public,max-age=${opts.maxAge}`;
203
- if (cc && opts.immutable) cc += ',immutable';
204
- else if (cc && opts.maxAge === 0) cc += ',must-revalidate';
205
-
206
- if (!opts.dev) {
207
- list(dir, (name, abs, stats) => {
208
- if (/\.well-known[\\+\/]/.test(name)) ; // keep
209
- else if (!opts.dotfiles && /(^\.|[\\+|\/+]\.)/.test(name)) return;
210
-
211
- let headers = toHeaders(name, stats, isEtag);
212
- if (cc) headers['Cache-Control'] = cc;
213
-
214
- FILES['/' + name.normalize().replace(/\\+/g, '/')] = { abs, stats, headers };
215
- });
216
- }
217
-
218
- let lookup = opts.dev ? viaLocal.bind(0, dir, isEtag) : viaCache.bind(0, FILES);
219
-
220
- return function (req, res, next) {
221
- let extns = [''];
222
- let val = req.headers['accept-encoding'] || '';
223
- if (gzips && val.includes('gzip')) extns.unshift(...gzips);
224
- if (brots && /(br|brotli)/i.test(val)) extns.unshift(...brots);
225
- extns.push(...extensions); // [...br, ...gz, orig, ...exts]
226
-
227
- let pathname = req.path || parser(req, true).pathname;
228
- let data = lookup(pathname, extns) || isSPA && !isMatch(pathname, ignores) && lookup(fallback, extns);
229
- if (!data) return next ? next() : isNotFound(req, res);
230
-
231
- if (isEtag && req.headers['if-none-match'] === data.headers['ETag']) {
232
- res.writeHead(304);
233
- return res.end();
234
- }
235
-
236
- if (gzips || brots) {
237
- res.setHeader('Vary', 'Accept-Encoding');
238
- }
239
-
240
- setHeaders(res, pathname, data.stats);
241
- send(req, res, data.abs, data.stats, data.headers);
242
- };
243
- }
244
-
245
- function read_only_form_data() {
246
- const map = new Map();
247
-
248
- return {
249
- append(key, value) {
250
- if (map.has(key)) {
251
- map.get(key).push(value);
252
- } else {
253
- map.set(key, [value]);
254
- }
255
- },
256
-
257
- data: new ReadOnlyFormData(map)
258
- };
259
- }
260
-
261
- class ReadOnlyFormData {
262
- #map;
263
-
264
- constructor(map) {
265
- this.#map = map;
266
- }
267
-
268
- get(key) {
269
- const value = this.#map.get(key);
270
- return value && value[0];
271
- }
272
-
273
- getAll(key) {
274
- return this.#map.get(key);
275
- }
276
-
277
- has(key) {
278
- return this.#map.has(key);
279
- }
280
-
281
- *[Symbol.iterator]() {
282
- for (const [key, value] of this.#map) {
283
- for (let i = 0; i < value.length; i += 1) {
284
- yield [key, value[i]];
285
- }
286
- }
287
- }
288
-
289
- *entries() {
290
- for (const [key, value] of this.#map) {
291
- for (let i = 0; i < value.length; i += 1) {
292
- yield [key, value[i]];
293
- }
294
- }
295
- }
296
-
297
- *keys() {
298
- for (const [key, value] of this.#map) {
299
- for (let i = 0; i < value.length; i += 1) {
300
- yield key;
301
- }
302
- }
303
- }
304
-
305
- *values() {
306
- for (const [, value] of this.#map) {
307
- for (let i = 0; i < value.length; i += 1) {
308
- yield value;
309
- }
310
- }
311
- }
312
- }
313
-
314
- function get_body(req) {
315
- const headers = req.headers;
316
- const has_body =
317
- headers['content-type'] !== undefined &&
318
- // https://github.com/jshttp/type-is/blob/c1f4388c71c8a01f79934e68f630ca4a15fffcd6/index.js#L81-L95
319
- (headers['transfer-encoding'] !== undefined || !isNaN(Number(headers['content-length'])));
320
-
321
- if (!has_body) return Promise.resolve(undefined);
322
-
323
- const [type, ...directives] = headers['content-type'].split(/;\s*/);
324
-
325
- switch (type) {
326
- case 'application/octet-stream':
327
- return get_buffer(req);
328
-
329
- case 'text/plain':
330
- return get_text(req);
331
-
332
- case 'application/json':
333
- return get_json(req);
334
-
335
- case 'application/x-www-form-urlencoded':
336
- return get_urlencoded(req);
337
-
338
- case 'multipart/form-data': {
339
- const boundary = directives.find((directive) => directive.startsWith('boundary='));
340
- if (!boundary) throw new Error('Missing boundary');
341
- return get_multipart(req, boundary.slice('boundary='.length));
342
- }
343
- default:
344
- throw new Error(`Invalid Content-Type ${type}`);
345
- }
346
- }
347
-
348
- async function get_json(req) {
349
- return JSON.parse(await get_text(req));
350
- }
351
-
352
- async function get_urlencoded(req) {
353
- const text = await get_text(req);
354
-
355
- const { data, append } = read_only_form_data();
356
-
357
- text
358
- .replace(/\+/g, ' ')
359
- .split('&')
360
- .forEach((str) => {
361
- const [key, value] = str.split('=');
362
- append(decodeURIComponent(key), decodeURIComponent(value));
363
- });
364
-
365
- return data;
366
- }
367
-
368
- async function get_multipart(req, boundary) {
369
- const text = await get_text(req);
370
- const parts = text.split(`--${boundary}`);
371
-
372
- const nope = () => {
373
- throw new Error('Malformed form data');
374
- };
375
-
376
- if (parts[0] !== '' || parts[parts.length - 1].trim() !== '--') {
377
- nope();
378
- }
379
-
380
- const { data, append } = read_only_form_data();
381
-
382
- parts.slice(1, -1).forEach((part) => {
383
- const match = /\s*([\s\S]+?)\r\n\r\n([\s\S]*)\s*/.exec(part);
384
- const raw_headers = match[1];
385
- const body = match[2].trim();
386
-
387
- let key;
388
- raw_headers.split('\r\n').forEach((str) => {
389
- const [raw_header, ...raw_directives] = str.split('; ');
390
- let [name, value] = raw_header.split(': ');
391
-
392
- name = name.toLowerCase();
393
-
394
- const directives = {};
395
- raw_directives.forEach((raw_directive) => {
396
- const [name, value] = raw_directive.split('=');
397
- directives[name] = JSON.parse(value); // TODO is this right?
398
- });
399
-
400
- if (name === 'content-disposition') {
401
- if (value !== 'form-data') nope();
402
-
403
- if (directives.filename) {
404
- // TODO we probably don't want to do this automatically
405
- throw new Error('File upload is not yet implemented');
406
- }
407
-
408
- if (directives.name) {
409
- key = directives.name;
410
- }
411
- }
412
- });
413
-
414
- if (!key) nope();
415
-
416
- append(key, body);
417
- });
418
-
419
- return data;
420
- }
421
-
422
- function get_text(req) {
423
- return new Promise((fulfil, reject) => {
424
- let data = '';
425
-
426
- req.on('error', reject);
427
-
428
- req.on('data', (chunk) => {
429
- data += chunk;
430
- });
431
-
432
- req.on('end', () => {
433
- fulfil(data);
434
- });
435
- });
436
- }
437
-
438
- function get_buffer(req) {
439
- return new Promise((fulfil, reject) => {
440
- let data = new Uint8Array(0);
441
-
442
- req.on('error', reject);
443
-
444
- req.on('data', (chunk) => {
445
- const new_data = new Uint8Array(data.length + chunk.length);
446
-
447
- for (let i = 0; i < data.length; i += 1) {
448
- new_data[i] = data[i];
449
- }
450
-
451
- for (let i = 0; i < chunk.length; i += 1) {
452
- new_data[i + data.length] = chunk[i];
453
- }
454
-
455
- data = new_data;
456
- });
457
-
458
- req.on('end', () => {
459
- fulfil(data.buffer);
460
- });
461
- });
462
- }
463
-
464
- export { get_body as g, sirv as s };
465
- //# sourceMappingURL=index5.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index5.js","sources":["../../../node_modules/.pnpm/totalist@1.1.0/node_modules/totalist/sync/index.mjs","../../../node_modules/.pnpm/@polka/url@1.0.0-next.11/node_modules/@polka/url/build.mjs","../../../node_modules/.pnpm/mime@2.5.0/node_modules/mime/lite.js","../../../node_modules/.pnpm/sirv@1.0.11/node_modules/sirv/build.mjs","../../app-utils/http/index.js"],"sourcesContent":["import { join, resolve } from 'path';\nimport { readdirSync, statSync } from 'fs';\n\nexport default function list(dir, callback, pre='') {\n\tdir = resolve('.', dir);\n\tlet arr = readdirSync(dir);\n\tlet i=0, abs, stats;\n\tfor (; i < arr.length; i++) {\n\t\tabs = join(dir, arr[i]);\n\t\tstats = statSync(abs);\n\t\tstats.isDirectory()\n\t\t\t? list(abs, callback, join(pre, arr[i]))\n\t\t\t: callback(join(pre, arr[i]), abs, stats);\n\t}\n}\n","function parse(str) {\n\tlet i=0, j=0, k, v;\n\tlet out={}, arr=str.split('&');\n\tfor (; i < arr.length; i++) {\n\t\tj = arr[i].indexOf('=');\n\t\tv = !!~j && arr[i].substring(j+1) || '';\n\t\tk = !!~j ? arr[i].substring(0, j) : arr[i];\n\t\tout[k] = out[k] !== void 0 ? [].concat(out[k], v) : v;\n\t}\n\treturn out;\n}\n\nexport default function (req, toDecode) {\n\tlet url = req.url;\n\tif (url == null) return;\n\n\tlet obj = req._parsedUrl;\n\tif (obj && obj._raw === url) return obj;\n\n\tobj = {\n\t\tpath: url,\n\t\tpathname: url,\n\t\tsearch: null,\n\t\tquery: null,\n\t\thref: url,\n\t\t_raw: url\n\t};\n\n\tif (url.length > 1) {\n\t\tif (toDecode && !req._decoded && !!~url.indexOf('%', 1)) {\n\t\t\tlet nxt = url;\n\t\t\ttry { nxt = decodeURIComponent(url) } catch (e) {/* bad */}\n\t\t\turl = req.url = obj.href = obj.path = obj.pathname = obj._raw = nxt;\n\t\t\treq._decoded = true;\n\t\t}\n\n\t\tlet idx = url.indexOf('?', 1);\n\n\t\tif (idx !== -1) {\n\t\t\tobj.search = url.substring(idx);\n\t\t\tobj.query = obj.search.substring(1);\n\t\t\tobj.pathname = url.substring(0, idx);\n\t\t\tif (toDecode && obj.query.length > 0) {\n\t\t\t\tobj.query = parse(obj.query);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn (req._parsedUrl = obj);\n}\n","'use strict';\n\nlet Mime = require('./Mime');\nmodule.exports = new Mime(require('./types/standard'));\n","import * as fs from 'fs';\nimport { join, normalize, resolve } from 'path';\nimport list from 'totalist/sync';\nimport parser from '@polka/url';\nimport mime from 'mime/lite';\n\nconst noop = () => {};\n\nfunction isMatch(uri, arr) {\n\tfor (let i=0; i < arr.length; i++) {\n\t\tif (arr[i].test(uri)) return true;\n\t}\n}\n\nfunction toAssume(uri, extns) {\n\tlet i=0, x, len=uri.length - 1;\n\tif (uri.charCodeAt(len) === 47) {\n\t\turi = uri.substring(0, len);\n\t}\n\n\tlet arr=[], tmp=`${uri}/index`;\n\tfor (; i < extns.length; i++) {\n\t\tx = extns[i] ? `.${extns[i]}` : '';\n\t\tif (uri) arr.push(uri + x);\n\t\tarr.push(tmp + x);\n\t}\n\n\treturn arr;\n}\n\nfunction viaCache(cache, uri, extns) {\n\tlet i=0, data, arr=toAssume(uri, extns);\n\tfor (; i < arr.length; i++) {\n\t\tif (data = cache[arr[i]]) return data;\n\t}\n}\n\nfunction viaLocal(dir, isEtag, uri, extns) {\n\tlet i=0, arr=toAssume(uri, extns);\n\tlet abs, stats, name, headers;\n\tfor (; i < arr.length; i++) {\n\t\tabs = normalize(join(dir, name=arr[i]));\n\t\tif (abs.startsWith(dir) && fs.existsSync(abs)) {\n\t\t\tstats = fs.statSync(abs);\n\t\t\tif (stats.isDirectory()) continue;\n\t\t\theaders = toHeaders(name, stats, isEtag);\n\t\t\theaders['Cache-Control'] = isEtag ? 'no-cache' : 'no-store';\n\t\t\treturn { abs, stats, headers };\n\t\t}\n\t}\n}\n\nfunction is404(req, res) {\n\treturn (res.statusCode=404,res.end());\n}\n\nfunction send(req, res, file, stats, headers) {\n\tlet code=200, tmp, opts={};\n\theaders = { ...headers };\n\n\tfor (let key in headers) {\n\t\ttmp = res.getHeader(key);\n\t\tif (tmp) headers[key] = tmp;\n\t}\n\n\tif (tmp = res.getHeader('content-type')) {\n\t\theaders['Content-Type'] = tmp;\n\t}\n\n\tif (req.headers.range) {\n\t\tcode = 206;\n\t\tlet [x, y] = req.headers.range.replace('bytes=', '').split('-');\n\t\tlet end = opts.end = parseInt(y, 10) || stats.size - 1;\n\t\tlet start = opts.start = parseInt(x, 10) || 0;\n\n\t\tif (start >= stats.size || end >= stats.size) {\n\t\t\tres.setHeader('Content-Range', `bytes */${stats.size}`);\n\t\t\tres.statusCode = 416;\n\t\t\treturn res.end();\n\t\t}\n\n\t\theaders['Content-Range'] = `bytes ${start}-${end}/${stats.size}`;\n\t\theaders['Content-Length'] = (end - start + 1);\n\t\theaders['Accept-Ranges'] = 'bytes';\n\t}\n\n\tres.writeHead(code, headers);\n\tfs.createReadStream(file, opts).pipe(res);\n}\n\nfunction isEncoding(name, type, headers) {\n\theaders['Content-Encoding'] = type;\n\theaders['Content-Type'] = mime.getType(name.replace(/\\.([^.]*)$/, '')) || '';\n}\n\nfunction toHeaders(name, stats, isEtag) {\n\tlet headers = {\n\t\t'Content-Length': stats.size,\n\t\t'Content-Type': mime.getType(name) || '',\n\t\t'Last-Modified': stats.mtime.toUTCString(),\n\t};\n\tif (isEtag) headers['ETag'] = `W/\"${stats.size}-${stats.mtime.getTime()}\"`;\n\tif (/\\.br$/.test(name)) isEncoding(name, 'br', headers);\n\tif (/\\.gz$/.test(name)) isEncoding(name, 'gzip', headers);\n\treturn headers;\n}\n\nexport default function (dir, opts={}) {\n\tdir = resolve(dir || '.');\n\n\tlet isNotFound = opts.onNoMatch || is404;\n\tlet setHeaders = opts.setHeaders || noop;\n\n\tlet extensions = opts.extensions || ['html', 'htm'];\n\tlet gzips = opts.gzip && extensions.map(x => `${x}.gz`).concat('gz');\n\tlet brots = opts.brotli && extensions.map(x => `${x}.br`).concat('br');\n\n\tconst FILES = {};\n\n\tlet fallback = '/';\n\tlet isEtag = !!opts.etag;\n\tlet isSPA = !!opts.single;\n\tif (typeof opts.single === 'string') {\n\t\tlet idx = opts.single.lastIndexOf('.');\n\t\tfallback += !!~idx ? opts.single.substring(0, idx) : opts.single;\n\t}\n\n\tlet ignores = [];\n\tif (opts.ignores !== false) {\n\t\tignores.push(/[/]([A-Za-z\\s\\d~$._-]+\\.\\w+){1,}$/); // any extn\n\t\tif (opts.dotfiles) ignores.push(/\\/\\.\\w/);\n\t\telse ignores.push(/\\/\\.well-known/);\n\t\t[].concat(opts.ignores || []).forEach(x => {\n\t\t\tignores.push(new RegExp(x, 'i'));\n\t\t});\n\t}\n\n\tlet cc = opts.maxAge != null && `public,max-age=${opts.maxAge}`;\n\tif (cc && opts.immutable) cc += ',immutable';\n\telse if (cc && opts.maxAge === 0) cc += ',must-revalidate';\n\n\tif (!opts.dev) {\n\t\tlist(dir, (name, abs, stats) => {\n\t\t\tif (/\\.well-known[\\\\+\\/]/.test(name)) {} // keep\n\t\t\telse if (!opts.dotfiles && /(^\\.|[\\\\+|\\/+]\\.)/.test(name)) return;\n\n\t\t\tlet headers = toHeaders(name, stats, isEtag);\n\t\t\tif (cc) headers['Cache-Control'] = cc;\n\n\t\t\tFILES['/' + name.normalize().replace(/\\\\+/g, '/')] = { abs, stats, headers };\n\t\t});\n\t}\n\n\tlet lookup = opts.dev ? viaLocal.bind(0, dir, isEtag) : viaCache.bind(0, FILES);\n\n\treturn function (req, res, next) {\n\t\tlet extns = [''];\n\t\tlet val = req.headers['accept-encoding'] || '';\n\t\tif (gzips && val.includes('gzip')) extns.unshift(...gzips);\n\t\tif (brots && /(br|brotli)/i.test(val)) extns.unshift(...brots);\n\t\textns.push(...extensions); // [...br, ...gz, orig, ...exts]\n\n\t\tlet pathname = req.path || parser(req, true).pathname;\n\t\tlet data = lookup(pathname, extns) || isSPA && !isMatch(pathname, ignores) && lookup(fallback, extns);\n\t\tif (!data) return next ? next() : isNotFound(req, res);\n\n\t\tif (isEtag && req.headers['if-none-match'] === data.headers['ETag']) {\n\t\t\tres.writeHead(304);\n\t\t\treturn res.end();\n\t\t}\n\n\t\tif (gzips || brots) {\n\t\t\tres.setHeader('Vary', 'Accept-Encoding');\n\t\t}\n\n\t\tsetHeaders(res, pathname, data.stats);\n\t\tsend(req, res, data.abs, data.stats, data.headers);\n\t};\n}\n","function read_only_form_data() {\n\tconst map = new Map();\n\n\treturn {\n\t\tappend(key, value) {\n\t\t\tif (map.has(key)) {\n\t\t\t\tmap.get(key).push(value);\n\t\t\t} else {\n\t\t\t\tmap.set(key, [value]);\n\t\t\t}\n\t\t},\n\n\t\tdata: new ReadOnlyFormData(map)\n\t};\n}\n\nclass ReadOnlyFormData {\n\t#map;\n\n\tconstructor(map) {\n\t\tthis.#map = map;\n\t}\n\n\tget(key) {\n\t\tconst value = this.#map.get(key);\n\t\treturn value && value[0];\n\t}\n\n\tgetAll(key) {\n\t\treturn this.#map.get(key);\n\t}\n\n\thas(key) {\n\t\treturn this.#map.has(key);\n\t}\n\n\t*[Symbol.iterator]() {\n\t\tfor (const [key, value] of this.#map) {\n\t\t\tfor (let i = 0; i < value.length; i += 1) {\n\t\t\t\tyield [key, value[i]];\n\t\t\t}\n\t\t}\n\t}\n\n\t*entries() {\n\t\tfor (const [key, value] of this.#map) {\n\t\t\tfor (let i = 0; i < value.length; i += 1) {\n\t\t\t\tyield [key, value[i]];\n\t\t\t}\n\t\t}\n\t}\n\n\t*keys() {\n\t\tfor (const [key, value] of this.#map) {\n\t\t\tfor (let i = 0; i < value.length; i += 1) {\n\t\t\t\tyield key;\n\t\t\t}\n\t\t}\n\t}\n\n\t*values() {\n\t\tfor (const [, value] of this.#map) {\n\t\t\tfor (let i = 0; i < value.length; i += 1) {\n\t\t\t\tyield value;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction get_body(req) {\n\tconst headers = req.headers;\n\tconst has_body =\n\t\theaders['content-type'] !== undefined &&\n\t\t// https://github.com/jshttp/type-is/blob/c1f4388c71c8a01f79934e68f630ca4a15fffcd6/index.js#L81-L95\n\t\t(headers['transfer-encoding'] !== undefined || !isNaN(Number(headers['content-length'])));\n\n\tif (!has_body) return Promise.resolve(undefined);\n\n\tconst [type, ...directives] = headers['content-type'].split(/;\\s*/);\n\n\tswitch (type) {\n\t\tcase 'application/octet-stream':\n\t\t\treturn get_buffer(req);\n\n\t\tcase 'text/plain':\n\t\t\treturn get_text(req);\n\n\t\tcase 'application/json':\n\t\t\treturn get_json(req);\n\n\t\tcase 'application/x-www-form-urlencoded':\n\t\t\treturn get_urlencoded(req);\n\n\t\tcase 'multipart/form-data': {\n\t\t\tconst boundary = directives.find((directive) => directive.startsWith('boundary='));\n\t\t\tif (!boundary) throw new Error('Missing boundary');\n\t\t\treturn get_multipart(req, boundary.slice('boundary='.length));\n\t\t}\n\t\tdefault:\n\t\t\tthrow new Error(`Invalid Content-Type ${type}`);\n\t}\n}\n\nasync function get_json(req) {\n\treturn JSON.parse(await get_text(req));\n}\n\nasync function get_urlencoded(req) {\n\tconst text = await get_text(req);\n\n\tconst { data, append } = read_only_form_data();\n\n\ttext\n\t\t.replace(/\\+/g, ' ')\n\t\t.split('&')\n\t\t.forEach((str) => {\n\t\t\tconst [key, value] = str.split('=');\n\t\t\tappend(decodeURIComponent(key), decodeURIComponent(value));\n\t\t});\n\n\treturn data;\n}\n\nasync function get_multipart(req, boundary) {\n\tconst text = await get_text(req);\n\tconst parts = text.split(`--${boundary}`);\n\n\tconst nope = () => {\n\t\tthrow new Error('Malformed form data');\n\t};\n\n\tif (parts[0] !== '' || parts[parts.length - 1].trim() !== '--') {\n\t\tnope();\n\t}\n\n\tconst { data, append } = read_only_form_data();\n\n\tparts.slice(1, -1).forEach((part) => {\n\t\tconst match = /\\s*([\\s\\S]+?)\\r\\n\\r\\n([\\s\\S]*)\\s*/.exec(part);\n\t\tconst raw_headers = match[1];\n\t\tconst body = match[2].trim();\n\n\t\tlet key;\n\t\traw_headers.split('\\r\\n').forEach((str) => {\n\t\t\tconst [raw_header, ...raw_directives] = str.split('; ');\n\t\t\tlet [name, value] = raw_header.split(': ');\n\n\t\t\tname = name.toLowerCase();\n\n\t\t\tconst directives = {};\n\t\t\traw_directives.forEach((raw_directive) => {\n\t\t\t\tconst [name, value] = raw_directive.split('=');\n\t\t\t\tdirectives[name] = JSON.parse(value); // TODO is this right?\n\t\t\t});\n\n\t\t\tif (name === 'content-disposition') {\n\t\t\t\tif (value !== 'form-data') nope();\n\n\t\t\t\tif (directives.filename) {\n\t\t\t\t\t// TODO we probably don't want to do this automatically\n\t\t\t\t\tthrow new Error('File upload is not yet implemented');\n\t\t\t\t}\n\n\t\t\t\tif (directives.name) {\n\t\t\t\t\tkey = directives.name;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (!key) nope();\n\n\t\tappend(key, body);\n\t});\n\n\treturn data;\n}\n\nfunction get_text(req) {\n\treturn new Promise((fulfil, reject) => {\n\t\tlet data = '';\n\n\t\treq.on('error', reject);\n\n\t\treq.on('data', (chunk) => {\n\t\t\tdata += chunk;\n\t\t});\n\n\t\treq.on('end', () => {\n\t\t\tfulfil(data);\n\t\t});\n\t});\n}\n\nfunction get_buffer(req) {\n\treturn new Promise((fulfil, reject) => {\n\t\tlet data = new Uint8Array(0);\n\n\t\treq.on('error', reject);\n\n\t\treq.on('data', (chunk) => {\n\t\t\tconst new_data = new Uint8Array(data.length + chunk.length);\n\n\t\t\tfor (let i = 0; i < data.length; i += 1) {\n\t\t\t\tnew_data[i] = data[i];\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < chunk.length; i += 1) {\n\t\t\t\tnew_data[i + data.length] = chunk[i];\n\t\t\t}\n\n\t\t\tdata = new_data;\n\t\t});\n\n\t\treq.on('end', () => {\n\t\t\tfulfil(data.buffer);\n\t\t});\n\t});\n}\n\nexport { get_body };\n//# sourceMappingURL=index.js.map\n"],"names":["Mime","require$$0","fs.existsSync","fs.statSync","fs.createReadStream","mime"],"mappings":"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"}