@sveltejs/kit 1.0.0-next.30 → 1.0.0-next.300

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 (75) 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 +1614 -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 +2847 -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 +521 -0
  17. package/dist/chunks/index2.js +1326 -0
  18. package/dist/chunks/index3.js +119 -0
  19. package/dist/chunks/index4.js +197 -0
  20. package/dist/chunks/index5.js +251 -0
  21. package/dist/chunks/index6.js +15585 -0
  22. package/dist/chunks/index7.js +4207 -0
  23. package/dist/chunks/misc.js +3 -0
  24. package/dist/chunks/multipart-parser.js +449 -0
  25. package/dist/chunks/object.js +83 -0
  26. package/dist/chunks/routing.js +39 -0
  27. package/dist/chunks/sync.js +1055 -0
  28. package/dist/chunks/url.js +56 -0
  29. package/dist/cli.js +1016 -91
  30. package/dist/hooks.js +28 -0
  31. package/dist/install-fetch.js +6518 -0
  32. package/dist/node.js +94 -0
  33. package/package.json +92 -54
  34. package/svelte-kit.js +2 -0
  35. package/types/ambient.d.ts +298 -0
  36. package/types/index.d.ts +262 -0
  37. package/types/internal.d.ts +321 -0
  38. package/types/private.d.ts +273 -0
  39. package/CHANGELOG.md +0 -338
  40. package/assets/runtime/app/navigation.js +0 -23
  41. package/assets/runtime/app/navigation.js.map +0 -1
  42. package/assets/runtime/app/paths.js +0 -2
  43. package/assets/runtime/app/paths.js.map +0 -1
  44. package/assets/runtime/app/stores.js +0 -78
  45. package/assets/runtime/app/stores.js.map +0 -1
  46. package/assets/runtime/internal/singletons.js +0 -15
  47. package/assets/runtime/internal/singletons.js.map +0 -1
  48. package/assets/runtime/internal/start.js +0 -591
  49. package/assets/runtime/internal/start.js.map +0 -1
  50. package/assets/runtime/utils-85ebcc60.js +0 -18
  51. package/assets/runtime/utils-85ebcc60.js.map +0 -1
  52. package/dist/api.js +0 -44
  53. package/dist/api.js.map +0 -1
  54. package/dist/cli.js.map +0 -1
  55. package/dist/create_app.js +0 -580
  56. package/dist/create_app.js.map +0 -1
  57. package/dist/index.js +0 -368
  58. package/dist/index.js.map +0 -1
  59. package/dist/index2.js +0 -12035
  60. package/dist/index2.js.map +0 -1
  61. package/dist/index3.js +0 -549
  62. package/dist/index3.js.map +0 -1
  63. package/dist/index4.js +0 -74
  64. package/dist/index4.js.map +0 -1
  65. package/dist/index5.js +0 -464
  66. package/dist/index5.js.map +0 -1
  67. package/dist/index6.js +0 -735
  68. package/dist/index6.js.map +0 -1
  69. package/dist/renderer.js +0 -2425
  70. package/dist/renderer.js.map +0 -1
  71. package/dist/standard.js +0 -101
  72. package/dist/standard.js.map +0 -1
  73. package/dist/utils.js +0 -58
  74. package/dist/utils.js.map +0 -1
  75. package/svelte-kit +0 -3
@@ -0,0 +1,1055 @@
1
+ import path__default from 'path';
2
+ import fs__default from 'fs';
3
+ import { g as get_runtime_path, $ } from '../cli.js';
4
+ import { p as posixify, c as copy, m as mkdirp } from './filesystem.js';
5
+ import { fileURLToPath } from 'url';
6
+ import { s } from './misc.js';
7
+ import 'sade';
8
+ import 'child_process';
9
+ import 'net';
10
+ import 'os';
11
+
12
+ /**
13
+ * @param typeMap [Object] Map of MIME type -> Array[extensions]
14
+ * @param ...
15
+ */
16
+ function Mime$1() {
17
+ this._types = Object.create(null);
18
+ this._extensions = Object.create(null);
19
+
20
+ for (let i = 0; i < arguments.length; i++) {
21
+ this.define(arguments[i]);
22
+ }
23
+
24
+ this.define = this.define.bind(this);
25
+ this.getType = this.getType.bind(this);
26
+ this.getExtension = this.getExtension.bind(this);
27
+ }
28
+
29
+ /**
30
+ * Define mimetype -> extension mappings. Each key is a mime-type that maps
31
+ * to an array of extensions associated with the type. The first extension is
32
+ * used as the default extension for the type.
33
+ *
34
+ * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']});
35
+ *
36
+ * If a type declares an extension that has already been defined, an error will
37
+ * be thrown. To suppress this error and force the extension to be associated
38
+ * with the new type, pass `force`=true. Alternatively, you may prefix the
39
+ * extension with "*" to map the type to extension, without mapping the
40
+ * extension to the type.
41
+ *
42
+ * e.g. mime.define({'audio/wav', ['wav']}, {'audio/x-wav', ['*wav']});
43
+ *
44
+ *
45
+ * @param map (Object) type definitions
46
+ * @param force (Boolean) if true, force overriding of existing definitions
47
+ */
48
+ Mime$1.prototype.define = function(typeMap, force) {
49
+ for (let type in typeMap) {
50
+ let extensions = typeMap[type].map(function(t) {
51
+ return t.toLowerCase();
52
+ });
53
+ type = type.toLowerCase();
54
+
55
+ for (let i = 0; i < extensions.length; i++) {
56
+ const ext = extensions[i];
57
+
58
+ // '*' prefix = not the preferred type for this extension. So fixup the
59
+ // extension, and skip it.
60
+ if (ext[0] === '*') {
61
+ continue;
62
+ }
63
+
64
+ if (!force && (ext in this._types)) {
65
+ throw new Error(
66
+ 'Attempt to change mapping for "' + ext +
67
+ '" extension from "' + this._types[ext] + '" to "' + type +
68
+ '". Pass `force=true` to allow this, otherwise remove "' + ext +
69
+ '" from the list of extensions for "' + type + '".'
70
+ );
71
+ }
72
+
73
+ this._types[ext] = type;
74
+ }
75
+
76
+ // Use first extension as default
77
+ if (force || !this._extensions[type]) {
78
+ const ext = extensions[0];
79
+ this._extensions[type] = (ext[0] !== '*') ? ext : ext.substr(1);
80
+ }
81
+ }
82
+ };
83
+
84
+ /**
85
+ * Lookup a mime type based on extension
86
+ */
87
+ Mime$1.prototype.getType = function(path) {
88
+ path = String(path);
89
+ let last = path.replace(/^.*[/\\]/, '').toLowerCase();
90
+ let ext = last.replace(/^.*\./, '').toLowerCase();
91
+
92
+ let hasPath = last.length < path.length;
93
+ let hasDot = ext.length < last.length - 1;
94
+
95
+ return (hasDot || !hasPath) && this._types[ext] || null;
96
+ };
97
+
98
+ /**
99
+ * Return file extension associated with a mime type
100
+ */
101
+ Mime$1.prototype.getExtension = function(type) {
102
+ type = /^\s*([^;\s]*)/.test(type) && RegExp.$1;
103
+ return type && this._extensions[type.toLowerCase()] || null;
104
+ };
105
+
106
+ var Mime_1 = Mime$1;
107
+
108
+ var standard = {"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomdeleted+xml":["atomdeleted"],"application/atomsvc+xml":["atomsvc"],"application/atsc-dwd+xml":["dwd"],"application/atsc-held+xml":["held"],"application/atsc-rsat+xml":["rsat"],"application/bdoc":["bdoc"],"application/calendar+xml":["xcs"],"application/ccxml+xml":["ccxml"],"application/cdfx+xml":["cdfx"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mpd"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["es","ecma"],"application/emma+xml":["emma"],"application/emotionml+xml":["emotionml"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/express":["exp"],"application/fdt+xml":["fdt"],"application/font-tdpfr":["pfr"],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/gzip":["gz"],"application/hjson":["hjson"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/its+xml":["its"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js","mjs"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lgr+xml":["lgr"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mmt-aei+xml":["maei"],"application/mmt-usd+xml":["musd"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/n-quads":["nq"],"application/n-triples":["nt"],"application/node":["cjs"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/p2p-overlay+xml":["relo"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/provenance+xml":["provx"],"application/pskc+xml":["pskcxml"],"application/raml+yaml":["raml"],"application/rdf+xml":["rdf","owl"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/route-apd+xml":["rapd"],"application/route-s-tsid+xml":["sls"],"application/route-usd+xml":["rusd"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/senml+xml":["senmlx"],"application/sensml+xml":["sensmlx"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/sieve":["siv","sieve"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/swid+xml":["swidtag"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/toml":["toml"],"application/trig":["trig"],"application/ttml+xml":["ttml"],"application/ubjson":["ubj"],"application/urc-ressheet+xml":["rsheet"],"application/urc-targetdesc+xml":["td"],"application/voicexml+xml":["vxml"],"application/wasm":["wasm"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/xaml+xml":["xaml"],"application/xcap-att+xml":["xav"],"application/xcap-caps+xml":["xca"],"application/xcap-diff+xml":["xdf"],"application/xcap-el+xml":["xel"],"application/xcap-ns+xml":["xns"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xliff+xml":["xlf"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["*xsl","xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/3gpp":["*3gpp"],"audio/adpcm":["adp"],"audio/amr":["amr"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mobile-xmf":["mxmf"],"audio/mp3":["*mp3"],"audio/mp4":["m4a","mp4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx","opus"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/wav":["wav"],"audio/wave":["*wav"],"audio/webm":["weba"],"audio/xm":["xm"],"font/collection":["ttc"],"font/otf":["otf"],"font/ttf":["ttf"],"font/woff":["woff"],"font/woff2":["woff2"],"image/aces":["exr"],"image/apng":["apng"],"image/avif":["avif"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/dicom-rle":["drle"],"image/emf":["emf"],"image/fits":["fits"],"image/g3fax":["g3"],"image/gif":["gif"],"image/heic":["heic"],"image/heic-sequence":["heics"],"image/heif":["heif"],"image/heif-sequence":["heifs"],"image/hej2k":["hej2"],"image/hsj2":["hsj2"],"image/ief":["ief"],"image/jls":["jls"],"image/jp2":["jp2","jpg2"],"image/jpeg":["jpeg","jpg","jpe"],"image/jph":["jph"],"image/jphc":["jhc"],"image/jpm":["jpm"],"image/jpx":["jpx","jpf"],"image/jxr":["jxr"],"image/jxra":["jxra"],"image/jxrs":["jxrs"],"image/jxs":["jxs"],"image/jxsc":["jxsc"],"image/jxsi":["jxsi"],"image/jxss":["jxss"],"image/ktx":["ktx"],"image/ktx2":["ktx2"],"image/png":["png"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/t38":["t38"],"image/tiff":["tif","tiff"],"image/tiff-fx":["tfx"],"image/webp":["webp"],"image/wmf":["wmf"],"message/disposition-notification":["disposition-notification"],"message/global":["u8msg"],"message/global-delivery-status":["u8dsn"],"message/global-disposition-notification":["u8mdn"],"message/global-headers":["u8hdr"],"message/rfc822":["eml","mime"],"model/3mf":["3mf"],"model/gltf+json":["gltf"],"model/gltf-binary":["glb"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/mtl":["mtl"],"model/obj":["obj"],"model/step+xml":["stpx"],"model/step+zip":["stpz"],"model/step-xml+zip":["stpxz"],"model/stl":["stl"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["*x3db","x3dbz"],"model/x3d+fastinfoset":["x3db"],"model/x3d+vrml":["*x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"model/x3d-vrml":["x3dv"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/markdown":["markdown","md"],"text/mathml":["mml"],"text/mdx":["mdx"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/richtext":["rtx"],"text/rtf":["*rtf"],"text/sgml":["sgml","sgm"],"text/shex":["shex"],"text/slim":["slim","slm"],"text/spdx":["spdx"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vtt":["vtt"],"text/xml":["*xml"],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/iso.segment":["m4s"],"video/jpeg":["jpgv"],"video/jpm":["*jpm","jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/webm":["webm"]};
109
+
110
+ var other = {"application/prs.cww":["cww"],"application/vnd.1000minds.decision-model+xml":["1km"],"application/vnd.3gpp.pic-bw-large":["plb"],"application/vnd.3gpp.pic-bw-small":["psb"],"application/vnd.3gpp.pic-bw-var":["pvb"],"application/vnd.3gpp2.tcap":["tcap"],"application/vnd.3m.post-it-notes":["pwn"],"application/vnd.accpac.simply.aso":["aso"],"application/vnd.accpac.simply.imp":["imp"],"application/vnd.acucobol":["acu"],"application/vnd.acucorp":["atc","acutc"],"application/vnd.adobe.air-application-installer-package+zip":["air"],"application/vnd.adobe.formscentral.fcdt":["fcdt"],"application/vnd.adobe.fxp":["fxp","fxpl"],"application/vnd.adobe.xdp+xml":["xdp"],"application/vnd.adobe.xfdf":["xfdf"],"application/vnd.ahead.space":["ahead"],"application/vnd.airzip.filesecure.azf":["azf"],"application/vnd.airzip.filesecure.azs":["azs"],"application/vnd.amazon.ebook":["azw"],"application/vnd.americandynamics.acc":["acc"],"application/vnd.amiga.ami":["ami"],"application/vnd.android.package-archive":["apk"],"application/vnd.anser-web-certificate-issue-initiation":["cii"],"application/vnd.anser-web-funds-transfer-initiation":["fti"],"application/vnd.antix.game-component":["atx"],"application/vnd.apple.installer+xml":["mpkg"],"application/vnd.apple.keynote":["key"],"application/vnd.apple.mpegurl":["m3u8"],"application/vnd.apple.numbers":["numbers"],"application/vnd.apple.pages":["pages"],"application/vnd.apple.pkpass":["pkpass"],"application/vnd.aristanetworks.swi":["swi"],"application/vnd.astraea-software.iota":["iota"],"application/vnd.audiograph":["aep"],"application/vnd.balsamiq.bmml+xml":["bmml"],"application/vnd.blueice.multipass":["mpm"],"application/vnd.bmi":["bmi"],"application/vnd.businessobjects":["rep"],"application/vnd.chemdraw+xml":["cdxml"],"application/vnd.chipnuts.karaoke-mmd":["mmd"],"application/vnd.cinderella":["cdy"],"application/vnd.citationstyles.style+xml":["csl"],"application/vnd.claymore":["cla"],"application/vnd.cloanto.rp9":["rp9"],"application/vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"application/vnd.cluetrust.cartomobile-config":["c11amc"],"application/vnd.cluetrust.cartomobile-config-pkg":["c11amz"],"application/vnd.commonspace":["csp"],"application/vnd.contact.cmsg":["cdbcmsg"],"application/vnd.cosmocaller":["cmc"],"application/vnd.crick.clicker":["clkx"],"application/vnd.crick.clicker.keyboard":["clkk"],"application/vnd.crick.clicker.palette":["clkp"],"application/vnd.crick.clicker.template":["clkt"],"application/vnd.crick.clicker.wordbank":["clkw"],"application/vnd.criticaltools.wbs+xml":["wbs"],"application/vnd.ctc-posml":["pml"],"application/vnd.cups-ppd":["ppd"],"application/vnd.curl.car":["car"],"application/vnd.curl.pcurl":["pcurl"],"application/vnd.dart":["dart"],"application/vnd.data-vision.rdz":["rdz"],"application/vnd.dbf":["dbf"],"application/vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"application/vnd.dece.ttml+xml":["uvt","uvvt"],"application/vnd.dece.unspecified":["uvx","uvvx"],"application/vnd.dece.zip":["uvz","uvvz"],"application/vnd.denovo.fcselayout-link":["fe_launch"],"application/vnd.dna":["dna"],"application/vnd.dolby.mlp":["mlp"],"application/vnd.dpgraph":["dpg"],"application/vnd.dreamfactory":["dfac"],"application/vnd.ds-keypoint":["kpxx"],"application/vnd.dvb.ait":["ait"],"application/vnd.dvb.service":["svc"],"application/vnd.dynageo":["geo"],"application/vnd.ecowin.chart":["mag"],"application/vnd.enliven":["nml"],"application/vnd.epson.esf":["esf"],"application/vnd.epson.msf":["msf"],"application/vnd.epson.quickanime":["qam"],"application/vnd.epson.salt":["slt"],"application/vnd.epson.ssf":["ssf"],"application/vnd.eszigno3+xml":["es3","et3"],"application/vnd.ezpix-album":["ez2"],"application/vnd.ezpix-package":["ez3"],"application/vnd.fdf":["fdf"],"application/vnd.fdsn.mseed":["mseed"],"application/vnd.fdsn.seed":["seed","dataless"],"application/vnd.flographit":["gph"],"application/vnd.fluxtime.clip":["ftc"],"application/vnd.framemaker":["fm","frame","maker","book"],"application/vnd.frogans.fnc":["fnc"],"application/vnd.frogans.ltf":["ltf"],"application/vnd.fsc.weblaunch":["fsc"],"application/vnd.fujitsu.oasys":["oas"],"application/vnd.fujitsu.oasys2":["oa2"],"application/vnd.fujitsu.oasys3":["oa3"],"application/vnd.fujitsu.oasysgp":["fg5"],"application/vnd.fujitsu.oasysprs":["bh2"],"application/vnd.fujixerox.ddd":["ddd"],"application/vnd.fujixerox.docuworks":["xdw"],"application/vnd.fujixerox.docuworks.binder":["xbd"],"application/vnd.fuzzysheet":["fzs"],"application/vnd.genomatix.tuxedo":["txd"],"application/vnd.geogebra.file":["ggb"],"application/vnd.geogebra.tool":["ggt"],"application/vnd.geometry-explorer":["gex","gre"],"application/vnd.geonext":["gxt"],"application/vnd.geoplan":["g2w"],"application/vnd.geospace":["g3w"],"application/vnd.gmx":["gmx"],"application/vnd.google-apps.document":["gdoc"],"application/vnd.google-apps.presentation":["gslides"],"application/vnd.google-apps.spreadsheet":["gsheet"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/vnd.grafeq":["gqf","gqs"],"application/vnd.groove-account":["gac"],"application/vnd.groove-help":["ghf"],"application/vnd.groove-identity-message":["gim"],"application/vnd.groove-injector":["grv"],"application/vnd.groove-tool-message":["gtm"],"application/vnd.groove-tool-template":["tpl"],"application/vnd.groove-vcard":["vcg"],"application/vnd.hal+xml":["hal"],"application/vnd.handheld-entertainment+xml":["zmm"],"application/vnd.hbci":["hbci"],"application/vnd.hhe.lesson-player":["les"],"application/vnd.hp-hpgl":["hpgl"],"application/vnd.hp-hpid":["hpid"],"application/vnd.hp-hps":["hps"],"application/vnd.hp-jlyt":["jlt"],"application/vnd.hp-pcl":["pcl"],"application/vnd.hp-pclxl":["pclxl"],"application/vnd.hydrostatix.sof-data":["sfd-hdstx"],"application/vnd.ibm.minipay":["mpy"],"application/vnd.ibm.modcap":["afp","listafp","list3820"],"application/vnd.ibm.rights-management":["irm"],"application/vnd.ibm.secure-container":["sc"],"application/vnd.iccprofile":["icc","icm"],"application/vnd.igloader":["igl"],"application/vnd.immervision-ivp":["ivp"],"application/vnd.immervision-ivu":["ivu"],"application/vnd.insors.igm":["igm"],"application/vnd.intercon.formnet":["xpw","xpx"],"application/vnd.intergeo":["i2g"],"application/vnd.intu.qbo":["qbo"],"application/vnd.intu.qfx":["qfx"],"application/vnd.ipunplugged.rcprofile":["rcprofile"],"application/vnd.irepository.package+xml":["irp"],"application/vnd.is-xpr":["xpr"],"application/vnd.isac.fcs":["fcs"],"application/vnd.jam":["jam"],"application/vnd.jcp.javame.midlet-rms":["rms"],"application/vnd.jisp":["jisp"],"application/vnd.joost.joda-archive":["joda"],"application/vnd.kahootz":["ktz","ktr"],"application/vnd.kde.karbon":["karbon"],"application/vnd.kde.kchart":["chrt"],"application/vnd.kde.kformula":["kfo"],"application/vnd.kde.kivio":["flw"],"application/vnd.kde.kontour":["kon"],"application/vnd.kde.kpresenter":["kpr","kpt"],"application/vnd.kde.kspread":["ksp"],"application/vnd.kde.kword":["kwd","kwt"],"application/vnd.kenameaapp":["htke"],"application/vnd.kidspiration":["kia"],"application/vnd.kinar":["kne","knp"],"application/vnd.koan":["skp","skd","skt","skm"],"application/vnd.kodak-descriptor":["sse"],"application/vnd.las.las+xml":["lasxml"],"application/vnd.llamagraphics.life-balance.desktop":["lbd"],"application/vnd.llamagraphics.life-balance.exchange+xml":["lbe"],"application/vnd.lotus-1-2-3":["123"],"application/vnd.lotus-approach":["apr"],"application/vnd.lotus-freelance":["pre"],"application/vnd.lotus-notes":["nsf"],"application/vnd.lotus-organizer":["org"],"application/vnd.lotus-screencam":["scm"],"application/vnd.lotus-wordpro":["lwp"],"application/vnd.macports.portpkg":["portpkg"],"application/vnd.mapbox-vector-tile":["mvt"],"application/vnd.mcd":["mcd"],"application/vnd.medcalcdata":["mc1"],"application/vnd.mediastation.cdkey":["cdkey"],"application/vnd.mfer":["mwf"],"application/vnd.mfmp":["mfm"],"application/vnd.micrografx.flo":["flo"],"application/vnd.micrografx.igx":["igx"],"application/vnd.mif":["mif"],"application/vnd.mobius.daf":["daf"],"application/vnd.mobius.dis":["dis"],"application/vnd.mobius.mbk":["mbk"],"application/vnd.mobius.mqy":["mqy"],"application/vnd.mobius.msl":["msl"],"application/vnd.mobius.plc":["plc"],"application/vnd.mobius.txf":["txf"],"application/vnd.mophun.application":["mpn"],"application/vnd.mophun.certificate":["mpc"],"application/vnd.mozilla.xul+xml":["xul"],"application/vnd.ms-artgalry":["cil"],"application/vnd.ms-cab-compressed":["cab"],"application/vnd.ms-excel":["xls","xlm","xla","xlc","xlt","xlw"],"application/vnd.ms-excel.addin.macroenabled.12":["xlam"],"application/vnd.ms-excel.sheet.binary.macroenabled.12":["xlsb"],"application/vnd.ms-excel.sheet.macroenabled.12":["xlsm"],"application/vnd.ms-excel.template.macroenabled.12":["xltm"],"application/vnd.ms-fontobject":["eot"],"application/vnd.ms-htmlhelp":["chm"],"application/vnd.ms-ims":["ims"],"application/vnd.ms-lrm":["lrm"],"application/vnd.ms-officetheme":["thmx"],"application/vnd.ms-outlook":["msg"],"application/vnd.ms-pki.seccat":["cat"],"application/vnd.ms-pki.stl":["*stl"],"application/vnd.ms-powerpoint":["ppt","pps","pot"],"application/vnd.ms-powerpoint.addin.macroenabled.12":["ppam"],"application/vnd.ms-powerpoint.presentation.macroenabled.12":["pptm"],"application/vnd.ms-powerpoint.slide.macroenabled.12":["sldm"],"application/vnd.ms-powerpoint.slideshow.macroenabled.12":["ppsm"],"application/vnd.ms-powerpoint.template.macroenabled.12":["potm"],"application/vnd.ms-project":["mpp","mpt"],"application/vnd.ms-word.document.macroenabled.12":["docm"],"application/vnd.ms-word.template.macroenabled.12":["dotm"],"application/vnd.ms-works":["wps","wks","wcm","wdb"],"application/vnd.ms-wpl":["wpl"],"application/vnd.ms-xpsdocument":["xps"],"application/vnd.mseq":["mseq"],"application/vnd.musician":["mus"],"application/vnd.muvee.style":["msty"],"application/vnd.mynfc":["taglet"],"application/vnd.neurolanguage.nlu":["nlu"],"application/vnd.nitf":["ntf","nitf"],"application/vnd.noblenet-directory":["nnd"],"application/vnd.noblenet-sealer":["nns"],"application/vnd.noblenet-web":["nnw"],"application/vnd.nokia.n-gage.ac+xml":["*ac"],"application/vnd.nokia.n-gage.data":["ngdat"],"application/vnd.nokia.n-gage.symbian.install":["n-gage"],"application/vnd.nokia.radio-preset":["rpst"],"application/vnd.nokia.radio-presets":["rpss"],"application/vnd.novadigm.edm":["edm"],"application/vnd.novadigm.edx":["edx"],"application/vnd.novadigm.ext":["ext"],"application/vnd.oasis.opendocument.chart":["odc"],"application/vnd.oasis.opendocument.chart-template":["otc"],"application/vnd.oasis.opendocument.database":["odb"],"application/vnd.oasis.opendocument.formula":["odf"],"application/vnd.oasis.opendocument.formula-template":["odft"],"application/vnd.oasis.opendocument.graphics":["odg"],"application/vnd.oasis.opendocument.graphics-template":["otg"],"application/vnd.oasis.opendocument.image":["odi"],"application/vnd.oasis.opendocument.image-template":["oti"],"application/vnd.oasis.opendocument.presentation":["odp"],"application/vnd.oasis.opendocument.presentation-template":["otp"],"application/vnd.oasis.opendocument.spreadsheet":["ods"],"application/vnd.oasis.opendocument.spreadsheet-template":["ots"],"application/vnd.oasis.opendocument.text":["odt"],"application/vnd.oasis.opendocument.text-master":["odm"],"application/vnd.oasis.opendocument.text-template":["ott"],"application/vnd.oasis.opendocument.text-web":["oth"],"application/vnd.olpc-sugar":["xo"],"application/vnd.oma.dd2+xml":["dd2"],"application/vnd.openblox.game+xml":["obgx"],"application/vnd.openofficeorg.extension":["oxt"],"application/vnd.openstreetmap.data+xml":["osm"],"application/vnd.openxmlformats-officedocument.presentationml.presentation":["pptx"],"application/vnd.openxmlformats-officedocument.presentationml.slide":["sldx"],"application/vnd.openxmlformats-officedocument.presentationml.slideshow":["ppsx"],"application/vnd.openxmlformats-officedocument.presentationml.template":["potx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":["xlsx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.template":["xltx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":["docx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.template":["dotx"],"application/vnd.osgeo.mapguide.package":["mgp"],"application/vnd.osgi.dp":["dp"],"application/vnd.osgi.subsystem":["esa"],"application/vnd.palm":["pdb","pqa","oprc"],"application/vnd.pawaafile":["paw"],"application/vnd.pg.format":["str"],"application/vnd.pg.osasli":["ei6"],"application/vnd.picsel":["efif"],"application/vnd.pmi.widget":["wg"],"application/vnd.pocketlearn":["plf"],"application/vnd.powerbuilder6":["pbd"],"application/vnd.previewsystems.box":["box"],"application/vnd.proteus.magazine":["mgz"],"application/vnd.publishare-delta-tree":["qps"],"application/vnd.pvi.ptid1":["ptid"],"application/vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"application/vnd.rar":["rar"],"application/vnd.realvnc.bed":["bed"],"application/vnd.recordare.musicxml":["mxl"],"application/vnd.recordare.musicxml+xml":["musicxml"],"application/vnd.rig.cryptonote":["cryptonote"],"application/vnd.rim.cod":["cod"],"application/vnd.rn-realmedia":["rm"],"application/vnd.rn-realmedia-vbr":["rmvb"],"application/vnd.route66.link66+xml":["link66"],"application/vnd.sailingtracker.track":["st"],"application/vnd.seemail":["see"],"application/vnd.sema":["sema"],"application/vnd.semd":["semd"],"application/vnd.semf":["semf"],"application/vnd.shana.informed.formdata":["ifm"],"application/vnd.shana.informed.formtemplate":["itp"],"application/vnd.shana.informed.interchange":["iif"],"application/vnd.shana.informed.package":["ipk"],"application/vnd.simtech-mindmapper":["twd","twds"],"application/vnd.smaf":["mmf"],"application/vnd.smart.teacher":["teacher"],"application/vnd.software602.filler.form+xml":["fo"],"application/vnd.solent.sdkm+xml":["sdkm","sdkd"],"application/vnd.spotfire.dxp":["dxp"],"application/vnd.spotfire.sfs":["sfs"],"application/vnd.stardivision.calc":["sdc"],"application/vnd.stardivision.draw":["sda"],"application/vnd.stardivision.impress":["sdd"],"application/vnd.stardivision.math":["smf"],"application/vnd.stardivision.writer":["sdw","vor"],"application/vnd.stardivision.writer-global":["sgl"],"application/vnd.stepmania.package":["smzip"],"application/vnd.stepmania.stepchart":["sm"],"application/vnd.sun.wadl+xml":["wadl"],"application/vnd.sun.xml.calc":["sxc"],"application/vnd.sun.xml.calc.template":["stc"],"application/vnd.sun.xml.draw":["sxd"],"application/vnd.sun.xml.draw.template":["std"],"application/vnd.sun.xml.impress":["sxi"],"application/vnd.sun.xml.impress.template":["sti"],"application/vnd.sun.xml.math":["sxm"],"application/vnd.sun.xml.writer":["sxw"],"application/vnd.sun.xml.writer.global":["sxg"],"application/vnd.sun.xml.writer.template":["stw"],"application/vnd.sus-calendar":["sus","susp"],"application/vnd.svd":["svd"],"application/vnd.symbian.install":["sis","sisx"],"application/vnd.syncml+xml":["xsm"],"application/vnd.syncml.dm+wbxml":["bdm"],"application/vnd.syncml.dm+xml":["xdm"],"application/vnd.syncml.dmddf+xml":["ddf"],"application/vnd.tao.intent-module-archive":["tao"],"application/vnd.tcpdump.pcap":["pcap","cap","dmp"],"application/vnd.tmobile-livetv":["tmo"],"application/vnd.trid.tpt":["tpt"],"application/vnd.triscape.mxs":["mxs"],"application/vnd.trueapp":["tra"],"application/vnd.ufdl":["ufd","ufdl"],"application/vnd.uiq.theme":["utz"],"application/vnd.umajin":["umj"],"application/vnd.unity":["unityweb"],"application/vnd.uoml+xml":["uoml"],"application/vnd.vcx":["vcx"],"application/vnd.visio":["vsd","vst","vss","vsw"],"application/vnd.visionary":["vis"],"application/vnd.vsf":["vsf"],"application/vnd.wap.wbxml":["wbxml"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.wap.wmlscriptc":["wmlsc"],"application/vnd.webturbo":["wtb"],"application/vnd.wolfram.player":["nbp"],"application/vnd.wordperfect":["wpd"],"application/vnd.wqd":["wqd"],"application/vnd.wt.stf":["stf"],"application/vnd.xara":["xar"],"application/vnd.xfdl":["xfdl"],"application/vnd.yamaha.hv-dic":["hvd"],"application/vnd.yamaha.hv-script":["hvs"],"application/vnd.yamaha.hv-voice":["hvp"],"application/vnd.yamaha.openscoreformat":["osf"],"application/vnd.yamaha.openscoreformat.osfpvg+xml":["osfpvg"],"application/vnd.yamaha.smaf-audio":["saf"],"application/vnd.yamaha.smaf-phrase":["spf"],"application/vnd.yellowriver-custom-menu":["cmp"],"application/vnd.zul":["zir","zirz"],"application/vnd.zzazz.deck+xml":["zaz"],"application/x-7z-compressed":["7z"],"application/x-abiword":["abw"],"application/x-ace-compressed":["ace"],"application/x-apple-diskimage":["*dmg"],"application/x-arj":["arj"],"application/x-authorware-bin":["aab","x32","u32","vox"],"application/x-authorware-map":["aam"],"application/x-authorware-seg":["aas"],"application/x-bcpio":["bcpio"],"application/x-bdoc":["*bdoc"],"application/x-bittorrent":["torrent"],"application/x-blorb":["blb","blorb"],"application/x-bzip":["bz"],"application/x-bzip2":["bz2","boz"],"application/x-cbr":["cbr","cba","cbt","cbz","cb7"],"application/x-cdlink":["vcd"],"application/x-cfs-compressed":["cfs"],"application/x-chat":["chat"],"application/x-chess-pgn":["pgn"],"application/x-chrome-extension":["crx"],"application/x-cocoa":["cco"],"application/x-conference":["nsc"],"application/x-cpio":["cpio"],"application/x-csh":["csh"],"application/x-debian-package":["*deb","udeb"],"application/x-dgc-compressed":["dgc"],"application/x-director":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"],"application/x-doom":["wad"],"application/x-dtbncx+xml":["ncx"],"application/x-dtbook+xml":["dtb"],"application/x-dtbresource+xml":["res"],"application/x-dvi":["dvi"],"application/x-envoy":["evy"],"application/x-eva":["eva"],"application/x-font-bdf":["bdf"],"application/x-font-ghostscript":["gsf"],"application/x-font-linux-psf":["psf"],"application/x-font-pcf":["pcf"],"application/x-font-snf":["snf"],"application/x-font-type1":["pfa","pfb","pfm","afm"],"application/x-freearc":["arc"],"application/x-futuresplash":["spl"],"application/x-gca-compressed":["gca"],"application/x-glulx":["ulx"],"application/x-gnumeric":["gnumeric"],"application/x-gramps-xml":["gramps"],"application/x-gtar":["gtar"],"application/x-hdf":["hdf"],"application/x-httpd-php":["php"],"application/x-install-instructions":["install"],"application/x-iso9660-image":["*iso"],"application/x-iwork-keynote-sffkey":["*key"],"application/x-iwork-numbers-sffnumbers":["*numbers"],"application/x-iwork-pages-sffpages":["*pages"],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-keepass2":["kdbx"],"application/x-latex":["latex"],"application/x-lua-bytecode":["luac"],"application/x-lzh-compressed":["lzh","lha"],"application/x-makeself":["run"],"application/x-mie":["mie"],"application/x-mobipocket-ebook":["prc","mobi"],"application/x-ms-application":["application"],"application/x-ms-shortcut":["lnk"],"application/x-ms-wmd":["wmd"],"application/x-ms-wmz":["wmz"],"application/x-ms-xbap":["xbap"],"application/x-msaccess":["mdb"],"application/x-msbinder":["obd"],"application/x-mscardfile":["crd"],"application/x-msclip":["clp"],"application/x-msdos-program":["*exe"],"application/x-msdownload":["*exe","*dll","com","bat","*msi"],"application/x-msmediaview":["mvb","m13","m14"],"application/x-msmetafile":["*wmf","*wmz","*emf","emz"],"application/x-msmoney":["mny"],"application/x-mspublisher":["pub"],"application/x-msschedule":["scd"],"application/x-msterminal":["trm"],"application/x-mswrite":["wri"],"application/x-netcdf":["nc","cdf"],"application/x-ns-proxy-autoconfig":["pac"],"application/x-nzb":["nzb"],"application/x-perl":["pl","pm"],"application/x-pilot":["*prc","*pdb"],"application/x-pkcs12":["p12","pfx"],"application/x-pkcs7-certificates":["p7b","spc"],"application/x-pkcs7-certreqresp":["p7r"],"application/x-rar-compressed":["*rar"],"application/x-redhat-package-manager":["rpm"],"application/x-research-info-systems":["ris"],"application/x-sea":["sea"],"application/x-sh":["sh"],"application/x-shar":["shar"],"application/x-shockwave-flash":["swf"],"application/x-silverlight-app":["xap"],"application/x-sql":["sql"],"application/x-stuffit":["sit"],"application/x-stuffitx":["sitx"],"application/x-subrip":["srt"],"application/x-sv4cpio":["sv4cpio"],"application/x-sv4crc":["sv4crc"],"application/x-t3vm-image":["t3"],"application/x-tads":["gam"],"application/x-tar":["tar"],"application/x-tcl":["tcl","tk"],"application/x-tex":["tex"],"application/x-tex-tfm":["tfm"],"application/x-texinfo":["texinfo","texi"],"application/x-tgif":["*obj"],"application/x-ustar":["ustar"],"application/x-virtualbox-hdd":["hdd"],"application/x-virtualbox-ova":["ova"],"application/x-virtualbox-ovf":["ovf"],"application/x-virtualbox-vbox":["vbox"],"application/x-virtualbox-vbox-extpack":["vbox-extpack"],"application/x-virtualbox-vdi":["vdi"],"application/x-virtualbox-vhd":["vhd"],"application/x-virtualbox-vmdk":["vmdk"],"application/x-wais-source":["src"],"application/x-web-app-manifest+json":["webapp"],"application/x-x509-ca-cert":["der","crt","pem"],"application/x-xfig":["fig"],"application/x-xliff+xml":["*xlf"],"application/x-xpinstall":["xpi"],"application/x-xz":["xz"],"application/x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"audio/vnd.dece.audio":["uva","uvva"],"audio/vnd.digital-winds":["eol"],"audio/vnd.dra":["dra"],"audio/vnd.dts":["dts"],"audio/vnd.dts.hd":["dtshd"],"audio/vnd.lucent.voice":["lvp"],"audio/vnd.ms-playready.media.pya":["pya"],"audio/vnd.nuera.ecelp4800":["ecelp4800"],"audio/vnd.nuera.ecelp7470":["ecelp7470"],"audio/vnd.nuera.ecelp9600":["ecelp9600"],"audio/vnd.rip":["rip"],"audio/x-aac":["aac"],"audio/x-aiff":["aif","aiff","aifc"],"audio/x-caf":["caf"],"audio/x-flac":["flac"],"audio/x-m4a":["*m4a"],"audio/x-matroska":["mka"],"audio/x-mpegurl":["m3u"],"audio/x-ms-wax":["wax"],"audio/x-ms-wma":["wma"],"audio/x-pn-realaudio":["ram","ra"],"audio/x-pn-realaudio-plugin":["rmp"],"audio/x-realaudio":["*ra"],"audio/x-wav":["*wav"],"chemical/x-cdx":["cdx"],"chemical/x-cif":["cif"],"chemical/x-cmdf":["cmdf"],"chemical/x-cml":["cml"],"chemical/x-csml":["csml"],"chemical/x-xyz":["xyz"],"image/prs.btif":["btif"],"image/prs.pti":["pti"],"image/vnd.adobe.photoshop":["psd"],"image/vnd.airzip.accelerator.azv":["azv"],"image/vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"image/vnd.djvu":["djvu","djv"],"image/vnd.dvb.subtitle":["*sub"],"image/vnd.dwg":["dwg"],"image/vnd.dxf":["dxf"],"image/vnd.fastbidsheet":["fbs"],"image/vnd.fpx":["fpx"],"image/vnd.fst":["fst"],"image/vnd.fujixerox.edmics-mmr":["mmr"],"image/vnd.fujixerox.edmics-rlc":["rlc"],"image/vnd.microsoft.icon":["ico"],"image/vnd.ms-dds":["dds"],"image/vnd.ms-modi":["mdi"],"image/vnd.ms-photo":["wdp"],"image/vnd.net-fpx":["npx"],"image/vnd.pco.b16":["b16"],"image/vnd.tencent.tap":["tap"],"image/vnd.valve.source.texture":["vtf"],"image/vnd.wap.wbmp":["wbmp"],"image/vnd.xiff":["xif"],"image/vnd.zbrush.pcx":["pcx"],"image/x-3ds":["3ds"],"image/x-cmu-raster":["ras"],"image/x-cmx":["cmx"],"image/x-freehand":["fh","fhc","fh4","fh5","fh7"],"image/x-icon":["*ico"],"image/x-jng":["jng"],"image/x-mrsid-image":["sid"],"image/x-ms-bmp":["*bmp"],"image/x-pcx":["*pcx"],"image/x-pict":["pic","pct"],"image/x-portable-anymap":["pnm"],"image/x-portable-bitmap":["pbm"],"image/x-portable-graymap":["pgm"],"image/x-portable-pixmap":["ppm"],"image/x-rgb":["rgb"],"image/x-tga":["tga"],"image/x-xbitmap":["xbm"],"image/x-xpixmap":["xpm"],"image/x-xwindowdump":["xwd"],"message/vnd.wfa.wsc":["wsc"],"model/vnd.collada+xml":["dae"],"model/vnd.dwf":["dwf"],"model/vnd.gdl":["gdl"],"model/vnd.gtw":["gtw"],"model/vnd.mts":["mts"],"model/vnd.opengex":["ogex"],"model/vnd.parasolid.transmit.binary":["x_b"],"model/vnd.parasolid.transmit.text":["x_t"],"model/vnd.sap.vds":["vds"],"model/vnd.usdz+zip":["usdz"],"model/vnd.valve.source.compiled-map":["bsp"],"model/vnd.vtu":["vtu"],"text/prs.lines.tag":["dsc"],"text/vnd.curl":["curl"],"text/vnd.curl.dcurl":["dcurl"],"text/vnd.curl.mcurl":["mcurl"],"text/vnd.curl.scurl":["scurl"],"text/vnd.dvb.subtitle":["sub"],"text/vnd.fly":["fly"],"text/vnd.fmi.flexstor":["flx"],"text/vnd.graphviz":["gv"],"text/vnd.in3d.3dml":["3dml"],"text/vnd.in3d.spot":["spot"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/vnd.wap.wmlscript":["wmls"],"text/x-asm":["s","asm"],"text/x-c":["c","cc","cxx","cpp","h","hh","dic"],"text/x-component":["htc"],"text/x-fortran":["f","for","f77","f90"],"text/x-handlebars-template":["hbs"],"text/x-java-source":["java"],"text/x-lua":["lua"],"text/x-markdown":["mkd"],"text/x-nfo":["nfo"],"text/x-opml":["opml"],"text/x-org":["*org"],"text/x-pascal":["p","pas"],"text/x-processing":["pde"],"text/x-sass":["sass"],"text/x-scss":["scss"],"text/x-setext":["etx"],"text/x-sfv":["sfv"],"text/x-suse-ymp":["ymp"],"text/x-uuencode":["uu"],"text/x-vcalendar":["vcs"],"text/x-vcard":["vcf"],"video/vnd.dece.hd":["uvh","uvvh"],"video/vnd.dece.mobile":["uvm","uvvm"],"video/vnd.dece.pd":["uvp","uvvp"],"video/vnd.dece.sd":["uvs","uvvs"],"video/vnd.dece.video":["uvv","uvvv"],"video/vnd.dvb.file":["dvb"],"video/vnd.fvt":["fvt"],"video/vnd.mpegurl":["mxu","m4u"],"video/vnd.ms-playready.media.pyv":["pyv"],"video/vnd.uvvu.mp4":["uvu","uvvu"],"video/vnd.vivo":["viv"],"video/x-f4v":["f4v"],"video/x-fli":["fli"],"video/x-flv":["flv"],"video/x-m4v":["m4v"],"video/x-matroska":["mkv","mk3d","mks"],"video/x-mng":["mng"],"video/x-ms-asf":["asf","asx"],"video/x-ms-vob":["vob"],"video/x-ms-wm":["wm"],"video/x-ms-wmv":["wmv"],"video/x-ms-wmx":["wmx"],"video/x-ms-wvx":["wvx"],"video/x-msvideo":["avi"],"video/x-sgi-movie":["movie"],"video/x-smv":["smv"],"x-conference/x-cooltalk":["ice"]};
111
+
112
+ let Mime = Mime_1;
113
+ var mime = new Mime(standard, other);
114
+
115
+ /**
116
+ * A portion of a file or directory name where the name has been split into
117
+ * static and dynamic parts
118
+ * @typedef {{
119
+ * content: string;
120
+ * dynamic: boolean;
121
+ * rest: boolean;
122
+ * type: string | null;
123
+ * }} Part
124
+ * @typedef {{
125
+ * basename: string;
126
+ * name: string;
127
+ * ext: string;
128
+ * parts: Part[],
129
+ * file: string;
130
+ * is_dir: boolean;
131
+ * is_index: boolean;
132
+ * is_page: boolean;
133
+ * route_suffix: string
134
+ * }} Item
135
+ */
136
+
137
+ const specials = new Set(['__layout', '__layout.reset', '__error']);
138
+
139
+ /**
140
+ * @param {{
141
+ * config: import('types').ValidatedConfig;
142
+ * fallback?: string;
143
+ * cwd?: string;
144
+ * }} opts
145
+ * @returns {import('types').ManifestData}
146
+ */
147
+ function create_manifest_data({
148
+ config,
149
+ fallback = `${get_runtime_path(config)}/components`,
150
+ cwd = process.cwd()
151
+ }) {
152
+ /**
153
+ * @param {string} file_name
154
+ * @param {string} dir
155
+ */
156
+ function find_layout(file_name, dir) {
157
+ const files = config.extensions.map((ext) => posixify(path__default.join(dir, `${file_name}${ext}`)));
158
+ return files.find((file) => fs__default.existsSync(path__default.resolve(cwd, file)));
159
+ }
160
+
161
+ /** @type {string[]} */
162
+ const components = [];
163
+
164
+ /** @type {import('types').RouteData[]} */
165
+ const routes = [];
166
+
167
+ const default_layout = posixify(path__default.relative(cwd, `${fallback}/layout.svelte`));
168
+ const default_error = posixify(path__default.relative(cwd, `${fallback}/error.svelte`));
169
+
170
+ /**
171
+ * @param {string} dir
172
+ * @param {string[]} parent_id
173
+ * @param {Part[][]} parent_segments
174
+ * @param {string[]} parent_params
175
+ * @param {Array<string|undefined>} layout_stack // accumulated __layout.svelte components
176
+ * @param {Array<string|undefined>} error_stack // accumulated __error.svelte components
177
+ */
178
+ function walk(dir, parent_id, parent_segments, parent_params, layout_stack, error_stack) {
179
+ /** @type {Item[]} */
180
+ let items = [];
181
+ fs__default.readdirSync(dir).forEach((basename) => {
182
+ const resolved = path__default.join(dir, basename);
183
+ const file = posixify(path__default.relative(cwd, resolved));
184
+ const is_dir = fs__default.statSync(resolved).isDirectory();
185
+
186
+ const ext = is_dir
187
+ ? ''
188
+ : config.extensions.find((ext) => basename.endsWith(ext)) ||
189
+ config.kit.endpointExtensions.find((ext) => basename.endsWith(ext));
190
+
191
+ if (ext === undefined) return;
192
+
193
+ const name = ext ? basename.slice(0, -ext.length) : basename;
194
+
195
+ // TODO remove this after a while
196
+ ['layout', 'layout.reset', 'error'].forEach((reserved) => {
197
+ if (name === `$${reserved}`) {
198
+ const prefix = posixify(path__default.relative(cwd, dir));
199
+ const bad = `${prefix}/$${reserved}${ext}`;
200
+ const good = `${prefix}/__${reserved}${ext}`;
201
+
202
+ throw new Error(`${bad} should be renamed ${good}`);
203
+ }
204
+ });
205
+
206
+ if (basename.startsWith('__') && !specials.has(name)) {
207
+ throw new Error(`Files and directories prefixed with __ are reserved (saw ${file})`);
208
+ }
209
+
210
+ if (!is_dir && !/^(\.[a-z0-9]+)+$/i.test(ext)) return null; // filter out tmp files etc
211
+
212
+ if (!config.kit.routes(file)) {
213
+ return;
214
+ }
215
+
216
+ const segment = is_dir ? basename : name;
217
+
218
+ if (/\]\[/.test(segment)) {
219
+ throw new Error(`Invalid route ${file} — parameters must be separated`);
220
+ }
221
+
222
+ if (count_occurrences('[', segment) !== count_occurrences(']', segment)) {
223
+ throw new Error(`Invalid route ${file} — brackets are unbalanced`);
224
+ }
225
+
226
+ const parts = get_parts(segment, file);
227
+ const is_index = is_dir ? false : basename.startsWith('index.');
228
+ const is_page = config.extensions.indexOf(ext) !== -1;
229
+ const route_suffix = basename.slice(basename.indexOf('.'), -ext.length);
230
+
231
+ items.push({
232
+ basename,
233
+ name,
234
+ ext,
235
+ parts,
236
+ file,
237
+ is_dir,
238
+ is_index,
239
+ is_page,
240
+ route_suffix
241
+ });
242
+ });
243
+ items = items.sort(comparator);
244
+
245
+ items.forEach((item) => {
246
+ const id = parent_id.slice();
247
+ const segments = parent_segments.slice();
248
+
249
+ if (item.is_index) {
250
+ if (item.route_suffix) {
251
+ if (segments.length > 0) {
252
+ const last_segment = segments[segments.length - 1].slice();
253
+ const last_part = last_segment[last_segment.length - 1];
254
+
255
+ if (last_part.dynamic) {
256
+ last_segment.push({
257
+ dynamic: false,
258
+ rest: false,
259
+ content: item.route_suffix,
260
+ type: null
261
+ });
262
+ } else {
263
+ last_segment[last_segment.length - 1] = {
264
+ dynamic: false,
265
+ rest: false,
266
+ content: `${last_part.content}${item.route_suffix}`,
267
+ type: null
268
+ };
269
+ }
270
+
271
+ segments[segments.length - 1] = last_segment;
272
+ id[id.length - 1] += item.route_suffix;
273
+ } else {
274
+ segments.push(item.parts);
275
+ }
276
+ }
277
+ } else {
278
+ id.push(item.name);
279
+ segments.push(item.parts);
280
+ }
281
+
282
+ const params = parent_params.slice();
283
+ params.push(...item.parts.filter((p) => p.dynamic).map((p) => p.content));
284
+
285
+ // TODO seems slightly backwards to derive the simple segment representation
286
+ // from the more complex form, rather than vice versa — maybe swap it round
287
+ const simple_segments = segments.map((segment) => {
288
+ return {
289
+ dynamic: segment.some((part) => part.dynamic),
290
+ rest: segment.some((part) => part.rest),
291
+ content: segment
292
+ .map((part) => (part.dynamic ? `[${part.content}]` : part.content))
293
+ .join('')
294
+ };
295
+ });
296
+
297
+ if (item.is_dir) {
298
+ const layout_reset = find_layout('__layout.reset', item.file);
299
+ const layout = find_layout('__layout', item.file);
300
+ const error = find_layout('__error', item.file);
301
+
302
+ if (layout_reset && layout) {
303
+ throw new Error(`Cannot have __layout next to __layout.reset: ${layout_reset}`);
304
+ }
305
+
306
+ if (layout_reset) components.push(layout_reset);
307
+ if (layout) components.push(layout);
308
+ if (error) components.push(error);
309
+
310
+ walk(
311
+ path__default.join(dir, item.basename),
312
+ id,
313
+ segments,
314
+ params,
315
+ layout_reset ? [layout_reset] : layout_stack.concat(layout),
316
+ layout_reset ? [error] : error_stack.concat(error)
317
+ );
318
+ } else if (item.is_page) {
319
+ components.push(item.file);
320
+
321
+ const concatenated = layout_stack.concat(item.file);
322
+ const errors = error_stack.slice();
323
+
324
+ const pattern = get_pattern(segments, true);
325
+
326
+ let i = concatenated.length;
327
+ while (i--) {
328
+ if (!errors[i] && !concatenated[i]) {
329
+ errors.splice(i, 1);
330
+ concatenated.splice(i, 1);
331
+ }
332
+ }
333
+
334
+ i = errors.length;
335
+ while (i--) {
336
+ if (errors[i]) break;
337
+ }
338
+
339
+ errors.splice(i + 1);
340
+
341
+ const path = segments.every((segment) => segment.length === 1 && !segment[0].dynamic)
342
+ ? `/${segments.map((segment) => segment[0].content).join('/')}`
343
+ : '';
344
+
345
+ routes.push({
346
+ type: 'page',
347
+ id: id.join('/'),
348
+ segments: simple_segments,
349
+ pattern,
350
+ params,
351
+ path,
352
+ shadow: null,
353
+ a: /** @type {string[]} */ (concatenated),
354
+ b: /** @type {string[]} */ (errors)
355
+ });
356
+ } else {
357
+ const pattern = get_pattern(segments, !item.route_suffix);
358
+
359
+ routes.push({
360
+ type: 'endpoint',
361
+ id: id.join('/'),
362
+ segments: simple_segments,
363
+ pattern,
364
+ file: item.file,
365
+ params
366
+ });
367
+ }
368
+ });
369
+ }
370
+
371
+ const routes_base = path__default.relative(cwd, config.kit.files.routes);
372
+
373
+ const layout = find_layout('__layout', routes_base) || default_layout;
374
+ const error = find_layout('__error', routes_base) || default_error;
375
+
376
+ components.push(layout, error);
377
+
378
+ walk(config.kit.files.routes, [], [], [], [layout], [error]);
379
+
380
+ const lookup = new Map();
381
+ for (const route of routes) {
382
+ if (route.type === 'page') {
383
+ lookup.set(route.id, route);
384
+ }
385
+ }
386
+
387
+ let i = routes.length;
388
+ while (i--) {
389
+ const route = routes[i];
390
+ if (route.type === 'endpoint' && lookup.has(route.id)) {
391
+ lookup.get(route.id).shadow = route.file;
392
+ routes.splice(i, 1);
393
+ }
394
+ }
395
+
396
+ const assets = fs__default.existsSync(config.kit.files.assets)
397
+ ? list_files({ config, dir: config.kit.files.assets, path: '' })
398
+ : [];
399
+
400
+ const params_base = path__default.relative(cwd, config.kit.files.params);
401
+
402
+ /** @type {Record<string, string>} */
403
+ const matchers = {};
404
+ if (fs__default.existsSync(config.kit.files.params)) {
405
+ for (const file of fs__default.readdirSync(config.kit.files.params)) {
406
+ const ext = path__default.extname(file);
407
+ const type = file.slice(0, -ext.length);
408
+
409
+ if (/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(type)) {
410
+ matchers[type] = path__default.join(params_base, file);
411
+ } else {
412
+ throw new Error(
413
+ `Validator names must match /^[a-zA-Z_][a-zA-Z0-9_]*$/ — "${file}" is invalid`
414
+ );
415
+ }
416
+ }
417
+ }
418
+
419
+ return {
420
+ assets,
421
+ layout,
422
+ error,
423
+ components,
424
+ routes,
425
+ matchers
426
+ };
427
+ }
428
+
429
+ /**
430
+ * @param {string} needle
431
+ * @param {string} haystack
432
+ */
433
+ function count_occurrences(needle, haystack) {
434
+ let count = 0;
435
+ for (let i = 0; i < haystack.length; i += 1) {
436
+ if (haystack[i] === needle) count += 1;
437
+ }
438
+ return count;
439
+ }
440
+
441
+ /** @param {string} path */
442
+ function is_spread(path) {
443
+ const spread_pattern = /\[\.{3}/g;
444
+ return spread_pattern.test(path);
445
+ }
446
+
447
+ /**
448
+ * @param {Item} a
449
+ * @param {Item} b
450
+ */
451
+ function comparator(a, b) {
452
+ if (a.is_index !== b.is_index) {
453
+ if (a.is_index) return is_spread(a.file) ? 1 : -1;
454
+
455
+ return is_spread(b.file) ? -1 : 1;
456
+ }
457
+
458
+ const max = Math.max(a.parts.length, b.parts.length);
459
+
460
+ for (let i = 0; i < max; i += 1) {
461
+ const a_sub_part = a.parts[i];
462
+ const b_sub_part = b.parts[i];
463
+
464
+ if (!a_sub_part) return 1; // b is more specific, so goes first
465
+ if (!b_sub_part) return -1;
466
+
467
+ if (a_sub_part.rest && b_sub_part.rest) {
468
+ if (a.is_page !== b.is_page) {
469
+ return a.is_page ? 1 : -1;
470
+ }
471
+ // sort alphabetically
472
+ return a_sub_part.content < b_sub_part.content ? -1 : 1;
473
+ }
474
+
475
+ // If one is ...rest order it later
476
+ if (a_sub_part.rest !== b_sub_part.rest) return a_sub_part.rest ? 1 : -1;
477
+
478
+ if (a_sub_part.dynamic !== b_sub_part.dynamic) {
479
+ return a_sub_part.dynamic ? 1 : -1;
480
+ }
481
+
482
+ if (a_sub_part.dynamic && !!a_sub_part.type !== !!b_sub_part.type) {
483
+ return a_sub_part.type ? -1 : 1;
484
+ }
485
+
486
+ if (!a_sub_part.dynamic && a_sub_part.content !== b_sub_part.content) {
487
+ return (
488
+ b_sub_part.content.length - a_sub_part.content.length ||
489
+ (a_sub_part.content < b_sub_part.content ? -1 : 1)
490
+ );
491
+ }
492
+ }
493
+
494
+ if (a.is_page !== b.is_page) {
495
+ return a.is_page ? 1 : -1;
496
+ }
497
+
498
+ // otherwise sort alphabetically
499
+ return a.file < b.file ? -1 : 1;
500
+ }
501
+
502
+ /**
503
+ * @param {string} part
504
+ * @param {string} file
505
+ */
506
+ function get_parts(part, file) {
507
+ /** @type {Part[]} */
508
+ const result = [];
509
+ part.split(/\[(.+?\(.+?\)|.+?)\]/).map((str, i) => {
510
+ if (!str) return;
511
+ const dynamic = i % 2 === 1;
512
+
513
+ const [, content, type] = dynamic
514
+ ? /^((?:\.\.\.)?[a-zA-Z_][a-zA-Z0-9_]*)(?:=([a-zA-Z_][a-zA-Z0-9_]*))?$/.exec(str) || [
515
+ null,
516
+ null,
517
+ null
518
+ ]
519
+ : [null, str, null];
520
+
521
+ if (!content) {
522
+ throw new Error(
523
+ `Invalid route ${file} — parameter name and type must match /^[a-zA-Z_][a-zA-Z0-9_]*$/`
524
+ );
525
+ }
526
+
527
+ result.push({
528
+ content,
529
+ dynamic,
530
+ rest: dynamic && /^\.{3}.+$/.test(content),
531
+ type
532
+ });
533
+ });
534
+
535
+ return result;
536
+ }
537
+
538
+ /**
539
+ * @param {Part[][]} segments
540
+ * @param {boolean} add_trailing_slash
541
+ */
542
+ function get_pattern(segments, add_trailing_slash) {
543
+ const path = segments
544
+ .map((segment) => {
545
+ if (segment.length === 1 && segment[0].rest) {
546
+ // special case — `src/routes/foo/[...bar]/baz` matches `/foo/baz`
547
+ // so we need to make the leading slash optional
548
+ return '(?:\\/(.*))?';
549
+ }
550
+
551
+ const parts = segment.map((part) => {
552
+ if (part.rest) return '(.*?)';
553
+ if (part.dynamic) return '([^/]+?)';
554
+
555
+ return (
556
+ part.content
557
+ // allow users to specify characters on the file system in an encoded manner
558
+ .normalize()
559
+ // We use [ and ] to denote parameters, so users must encode these on the file
560
+ // system to match against them. We don't decode all characters since others
561
+ // can already be epressed and so that '%' can be easily used directly in filenames
562
+ .replace(/%5[Bb]/g, '[')
563
+ .replace(/%5[Dd]/g, ']')
564
+ // '#', '/', and '?' can only appear in URL path segments in an encoded manner.
565
+ // They will not be touched by decodeURI so need to be encoded here, so
566
+ // that we can match against them.
567
+ // We skip '/' since you can't create a file with it on any OS
568
+ .replace(/#/g, '%23')
569
+ .replace(/\?/g, '%3F')
570
+ // escape characters that have special meaning in regex
571
+ .replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
572
+ );
573
+ });
574
+
575
+ return '\\/' + parts.join('');
576
+ })
577
+ .join('');
578
+
579
+ const trailing = add_trailing_slash && segments.length ? '\\/?$' : '$';
580
+
581
+ return new RegExp(`^${path || '\\/'}${trailing}`);
582
+ }
583
+
584
+ /**
585
+ * @param {{
586
+ * config: import('types').ValidatedConfig;
587
+ * dir: string;
588
+ * path: string;
589
+ * files?: import('types').Asset[]
590
+ * }} args
591
+ */
592
+ function list_files({ config, dir, path, files = [] }) {
593
+ fs__default.readdirSync(dir).forEach((file) => {
594
+ const full = `${dir}/${file}`;
595
+
596
+ const stats = fs__default.statSync(full);
597
+ const joined = path ? `${path}/${file}` : file;
598
+
599
+ if (stats.isDirectory()) {
600
+ list_files({ config, dir: full, path: joined, files });
601
+ } else if (config.kit.serviceWorker.files(joined)) {
602
+ files.push({
603
+ file: joined,
604
+ size: stats.size,
605
+ type: mime.getType(joined)
606
+ });
607
+ }
608
+ });
609
+
610
+ return files;
611
+ }
612
+
613
+ const __filename = fileURLToPath(import.meta.url);
614
+ const __dirname = path__default.dirname(__filename);
615
+
616
+ /** @param {string} dest */
617
+ function copy_assets(dest) {
618
+ let prefix = '..';
619
+ do {
620
+ // we jump through these hoops so that this function
621
+ // works whether or not it's been bundled
622
+ const resolved = path__default.resolve(__dirname, `${prefix}/assets`);
623
+
624
+ if (fs__default.existsSync(resolved)) {
625
+ copy(resolved, dest);
626
+ return;
627
+ }
628
+
629
+ prefix = `../${prefix}`;
630
+ } while (true); // eslint-disable-line
631
+ }
632
+
633
+ /** @type {Map<string, string>} */
634
+ const previous_contents = new Map();
635
+
636
+ /**
637
+ * @param {string} file
638
+ * @param {string} code
639
+ */
640
+ function write_if_changed(file, code) {
641
+ if (code !== previous_contents.get(file)) {
642
+ previous_contents.set(file, code);
643
+ mkdirp(path__default.dirname(file));
644
+ fs__default.writeFileSync(file, code);
645
+ }
646
+ }
647
+
648
+ /** @param {string} str */
649
+ function trim(str) {
650
+ const indentation = /** @type {RegExpExecArray} */ (/\n?(\s*)/.exec(str))[1];
651
+ const pattern = new RegExp(`^${indentation}`, 'gm');
652
+ return str.replace(pattern, '').trim();
653
+ }
654
+
655
+ /**
656
+ * @param {import('types').ManifestData} manifest_data
657
+ * @param {string} base
658
+ * @param {string} output
659
+ */
660
+ function write_manifest(manifest_data, base, output) {
661
+ /** @type {Record<string, number>} */
662
+ const component_indexes = {};
663
+
664
+ /** @param {string} c */
665
+ const get_path = (c) => path__default.relative(base, c);
666
+
667
+ const components = `[
668
+ ${manifest_data.components
669
+ .map((component, i) => {
670
+ component_indexes[component] = i;
671
+
672
+ return `() => import(${s(get_path(component))})`;
673
+ })
674
+ .join(',\n\t\t\t\t\t')}
675
+ ]`.replace(/^\t/gm, '');
676
+
677
+ /** @param {string[]} parts */
678
+ const get_indices = (parts) =>
679
+ `[${parts.map((part) => (part ? component_indexes[part] : '')).join(', ')}]`;
680
+
681
+ const dictionary = `{
682
+ ${manifest_data.routes
683
+ .map((route) => {
684
+ if (route.type === 'page') {
685
+ const tuple = [get_indices(route.a), get_indices(route.b)];
686
+ if (route.shadow) tuple.push('1');
687
+
688
+ return `${s(route.id)}: [${tuple.join(', ')}]`;
689
+ }
690
+ })
691
+ .filter(Boolean)
692
+ .join(',\n\t\t')}
693
+ }`.replace(/^\t/gm, '');
694
+
695
+ write_if_changed(
696
+ `${output}/client-manifest.js`,
697
+ trim(`
698
+ export { matchers } from './client-matchers.js';
699
+
700
+ export const components = ${components};
701
+
702
+ export const dictionary = ${dictionary};
703
+ `)
704
+ );
705
+ }
706
+
707
+ /**
708
+ * @param {import('types').ManifestData} manifest_data
709
+ * @param {string} output
710
+ */
711
+ function write_root(manifest_data, output) {
712
+ // TODO remove default layout altogether
713
+
714
+ const max_depth = Math.max(
715
+ ...manifest_data.routes.map((route) =>
716
+ route.type === 'page' ? route.a.filter(Boolean).length : 0
717
+ ),
718
+ 1
719
+ );
720
+
721
+ const levels = [];
722
+ for (let i = 0; i <= max_depth; i += 1) {
723
+ levels.push(i);
724
+ }
725
+
726
+ let l = max_depth;
727
+
728
+ let pyramid = `<svelte:component this={components[${l}]} {...(props_${l} || {})}/>`;
729
+
730
+ while (l--) {
731
+ pyramid = `
732
+ {#if components[${l + 1}]}
733
+ <svelte:component this={components[${l}]} {...(props_${l} || {})}>
734
+ ${pyramid.replace(/\n/g, '\n\t\t\t\t\t')}
735
+ </svelte:component>
736
+ {:else}
737
+ <svelte:component this={components[${l}]} {...(props_${l} || {})} />
738
+ {/if}
739
+ `
740
+ .replace(/^\t\t\t/gm, '')
741
+ .trim();
742
+ }
743
+
744
+ write_if_changed(
745
+ `${output}/root.svelte`,
746
+ trim(`
747
+ <!-- This file is generated by @sveltejs/kit — do not edit it! -->
748
+ <script>
749
+ import { setContext, afterUpdate, onMount } from 'svelte';
750
+
751
+ // stores
752
+ export let stores;
753
+ export let page;
754
+
755
+ export let components;
756
+ ${levels.map((l) => `export let props_${l} = null;`).join('\n\t\t\t\t')}
757
+
758
+ setContext('__svelte__', stores);
759
+
760
+ $: stores.page.set(page);
761
+ afterUpdate(stores.page.notify);
762
+
763
+ let mounted = false;
764
+ let navigated = false;
765
+ let title = null;
766
+
767
+ onMount(() => {
768
+ const unsubscribe = stores.page.subscribe(() => {
769
+ if (mounted) {
770
+ navigated = true;
771
+ title = document.title || 'untitled page';
772
+ }
773
+ });
774
+
775
+ mounted = true;
776
+ return unsubscribe;
777
+ });
778
+ </script>
779
+
780
+ ${pyramid.replace(/\n/g, '\n\t\t\t')}
781
+
782
+ {#if mounted}
783
+ <div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px">
784
+ {#if navigated}
785
+ {title}
786
+ {/if}
787
+ </div>
788
+ {/if}
789
+ `)
790
+ );
791
+ }
792
+
793
+ /** @param {string} file */
794
+ const exists = (file) => fs__default.existsSync(file) && file;
795
+
796
+ /** @param {import('types').ValidatedConfig} config */
797
+ function write_tsconfig(config) {
798
+ const out = path__default.join(config.kit.outDir, 'tsconfig.json');
799
+ const user_file = exists('tsconfig.json') || exists('jsconfig.json');
800
+
801
+ if (user_file) validate(config, out, user_file);
802
+
803
+ /** @param {string} file */
804
+ const project_relative = (file) => posixify(path__default.relative('.', file));
805
+
806
+ /** @param {string} file */
807
+ const config_relative = (file) => posixify(path__default.relative(config.kit.outDir, file));
808
+
809
+ const dirs = new Set([
810
+ project_relative(path__default.dirname(config.kit.files.routes)),
811
+ project_relative(path__default.dirname(config.kit.files.lib))
812
+ ]);
813
+
814
+ /** @type {string[]} */
815
+ const include = [];
816
+ dirs.forEach((dir) => {
817
+ include.push(config_relative(`${dir}/**/*.js`));
818
+ include.push(config_relative(`${dir}/**/*.ts`));
819
+ include.push(config_relative(`${dir}/**/*.svelte`));
820
+ });
821
+
822
+ write_if_changed(
823
+ out,
824
+ JSON.stringify(
825
+ {
826
+ compilerOptions: {
827
+ moduleResolution: 'node',
828
+ module: 'es2020',
829
+ lib: ['es2020', 'DOM'],
830
+ target: 'es2020',
831
+ // svelte-preprocess cannot figure out whether you have a value or a type, so tell TypeScript
832
+ // to enforce using \`import type\` instead of \`import\` for Types.
833
+ importsNotUsedAsValues: 'error',
834
+ // TypeScript doesn't know about import usages in the template because it only sees the
835
+ // script of a Svelte file. Therefore preserve all value imports. Requires TS 4.5 or higher.
836
+ preserveValueImports: true,
837
+ isolatedModules: true,
838
+ resolveJsonModule: true,
839
+ // To have warnings/errors of the Svelte compiler at the correct position,
840
+ // enable source maps by default.
841
+ sourceMap: true,
842
+ esModuleInterop: true,
843
+ skipLibCheck: true,
844
+ forceConsistentCasingInFileNames: true,
845
+ baseUrl: config_relative('.'),
846
+ allowJs: true,
847
+ checkJs: true,
848
+ paths: {
849
+ $lib: [project_relative(config.kit.files.lib)],
850
+ '$lib/*': [project_relative(config.kit.files.lib + '/*')]
851
+ },
852
+ rootDirs: [config_relative('.'), './types']
853
+ },
854
+ include,
855
+ exclude: [config_relative('node_modules/**'), './**']
856
+ },
857
+ null,
858
+ '\t'
859
+ )
860
+ );
861
+ }
862
+
863
+ /**
864
+ * @param {import('types').ValidatedConfig} config
865
+ * @param {string} out
866
+ * @param {string} user_file
867
+ */
868
+ function validate(config, out, user_file) {
869
+ // we have to eval the file, since it's not parseable as JSON (contains comments)
870
+ const user_tsconfig_json = fs__default.readFileSync(user_file, 'utf-8');
871
+ const user_tsconfig = (0, eval)(`(${user_tsconfig_json})`);
872
+
873
+ // we need to check that the user's tsconfig extends the framework config
874
+ const extend = user_tsconfig.extends;
875
+ const extends_framework_config = extend && path__default.resolve('.', extend) === out;
876
+
877
+ if (extends_framework_config) {
878
+ const { paths: user_paths } = user_tsconfig.compilerOptions || {};
879
+
880
+ if (user_paths) {
881
+ /** @type {string[]} */
882
+ const lib = user_paths['$lib'] || [];
883
+ /** @type {string[]} */
884
+ const lib_ = user_paths['$lib/*'] || [];
885
+
886
+ const missing_lib_paths =
887
+ !lib.some((relative) => path__default.resolve('.', relative) === config.kit.files.lib) ||
888
+ !lib_.some(
889
+ (relative) => path__default.resolve('.', relative) === path__default.join(config.kit.files.lib, '/*')
890
+ );
891
+
892
+ if (missing_lib_paths) {
893
+ console.warn(
894
+ $
895
+ .bold()
896
+ .yellow(`Your compilerOptions.paths in ${user_file} should include the following:`)
897
+ );
898
+ const relative = posixify(path__default.relative('.', config.kit.files.lib));
899
+ console.warn(`{\n "$lib":["${relative}"],\n "$lib/*":["${relative}/*"]\n}`);
900
+ }
901
+ }
902
+ } else {
903
+ let relative = posixify(path__default.relative('.', out));
904
+ if (!relative.startsWith('./')) relative = './' + relative;
905
+
906
+ console.warn(
907
+ $
908
+ .bold()
909
+ .yellow(`Your ${user_file} should extend the configuration generated by SvelteKit:`)
910
+ );
911
+ console.warn(`{\n "extends": "${relative}"\n}`);
912
+ }
913
+ }
914
+
915
+ /** @param {string} imports */
916
+ const header = (imports) => `
917
+ // this file is auto-generated
918
+ import type { ${imports} } from '@sveltejs/kit';`;
919
+
920
+ /** @param {string} arg */
921
+ const endpoint = (arg) => `
922
+ export type RequestHandler<Output extends ResponseBody = ResponseBody> = GenericRequestHandler<${arg}, Output>;`;
923
+
924
+ /** @param {string} arg */
925
+ const page = (arg) => `
926
+ export type Load<
927
+ InputProps extends Record<string, any> = Record<string, any>,
928
+ OutputProps extends Record<string, any> = InputProps
929
+ > = GenericLoad<${arg}, InputProps, OutputProps>;`;
930
+
931
+ /**
932
+ * @param {import('types').ValidatedConfig} config
933
+ * @param {import('types').ManifestData} manifest_data
934
+ */
935
+ function write_types(config, manifest_data) {
936
+ /** @type {Map<string, { params: string[], type: 'page' | 'endpoint' | 'both' }>} */
937
+ const shadow_types = new Map();
938
+
939
+ /** @param {string} key */
940
+ function extract_params(key) {
941
+ /** @type {string[]} */
942
+ const params = [];
943
+
944
+ const pattern = /\[(?:\.{3})?([^\]]+)\]/g;
945
+ let match;
946
+
947
+ while ((match = pattern.exec(key))) {
948
+ params.push(match[1]);
949
+ }
950
+
951
+ return params;
952
+ }
953
+
954
+ manifest_data.routes.forEach((route) => {
955
+ const file = route.type === 'endpoint' ? route.file : route.shadow;
956
+
957
+ if (file) {
958
+ const ext = /** @type {string} */ (
959
+ config.kit.endpointExtensions.find((ext) => file.endsWith(ext))
960
+ );
961
+ const key = file.slice(0, -ext.length);
962
+ shadow_types.set(key, {
963
+ params: extract_params(key),
964
+ type: route.type === 'endpoint' ? 'endpoint' : 'both'
965
+ });
966
+ }
967
+ });
968
+
969
+ manifest_data.components.forEach((component) => {
970
+ if (component.startsWith('.')) return; // exclude fallback components
971
+
972
+ const ext = /** @type {string} */ (config.extensions.find((ext) => component.endsWith(ext)));
973
+ const key = component.slice(0, -ext.length);
974
+
975
+ if (!shadow_types.has(key)) {
976
+ shadow_types.set(key, { params: extract_params(key), type: 'page' });
977
+ }
978
+ });
979
+
980
+ shadow_types.forEach(({ params, type }, key) => {
981
+ const arg =
982
+ params.length > 0 ? `{ ${params.map((param) => `${param}: string`).join('; ')} }` : '{}';
983
+
984
+ const imports = [];
985
+ const content = [];
986
+
987
+ if (type !== 'page') {
988
+ imports.push('RequestHandler as GenericRequestHandler, ResponseBody');
989
+ content.push(endpoint(arg));
990
+ }
991
+
992
+ if (type !== 'endpoint') {
993
+ imports.push('Load as GenericLoad');
994
+ content.push(page(arg));
995
+ }
996
+
997
+ content.unshift(header(imports.join(', ')));
998
+
999
+ write_if_changed(
1000
+ `${config.kit.outDir}/types/${key || 'index'}.d.ts`,
1001
+ content.join('\n').trim()
1002
+ );
1003
+ });
1004
+ }
1005
+
1006
+ /**
1007
+ * @param {import('types').ManifestData} manifest_data
1008
+ * @param {string} output
1009
+ */
1010
+ function write_validators(manifest_data, output) {
1011
+ const imports = [];
1012
+ const matchers = [];
1013
+
1014
+ for (const key in manifest_data.matchers) {
1015
+ const src = manifest_data.matchers[key];
1016
+
1017
+ imports.push(`import { match as ${key} } from ${s(path__default.relative(output, src))};`);
1018
+ matchers.push(key);
1019
+ }
1020
+
1021
+ const module = imports.length
1022
+ ? `${imports.join('\n')}\n\nexport const matchers = { ${matchers.join(', ')} };`
1023
+ : 'export const matchers = {};';
1024
+
1025
+ write_if_changed(`${output}/client-matchers.js`, module);
1026
+ }
1027
+
1028
+ /** @param {import('types').ValidatedConfig} config */
1029
+ function init(config) {
1030
+ copy_assets(path__default.join(config.kit.outDir, 'runtime'));
1031
+ write_tsconfig(config);
1032
+ }
1033
+
1034
+ /** @param {import('types').ValidatedConfig} config */
1035
+ function update(config) {
1036
+ const manifest_data = create_manifest_data({ config });
1037
+
1038
+ const output = path__default.join(config.kit.outDir, 'generated');
1039
+ const base = path__default.relative('.', output);
1040
+
1041
+ write_manifest(manifest_data, base, output);
1042
+ write_root(manifest_data, output);
1043
+ write_validators(manifest_data, output);
1044
+ write_types(config, manifest_data);
1045
+
1046
+ return { manifest_data };
1047
+ }
1048
+
1049
+ /** @param {import('types').ValidatedConfig} config */
1050
+ function all(config) {
1051
+ init(config);
1052
+ return update(config);
1053
+ }
1054
+
1055
+ export { all, init, update };