@sveltejs/kit 1.0.0-next.36 → 1.0.0-next.362

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 (64) hide show
  1. package/README.md +12 -9
  2. package/assets/app/env.js +28 -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 +1793 -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 +3460 -0
  12. package/dist/chunks/_commonjsHelpers.js +3 -0
  13. package/dist/chunks/error.js +661 -0
  14. package/dist/chunks/index.js +15744 -0
  15. package/dist/chunks/index2.js +210 -0
  16. package/dist/chunks/multipart-parser.js +445 -0
  17. package/dist/chunks/sync.js +980 -0
  18. package/dist/chunks/write_tsconfig.js +274 -0
  19. package/dist/cli.js +64 -117
  20. package/dist/hooks.js +28 -0
  21. package/dist/node/polyfills.js +12237 -0
  22. package/dist/node.js +5855 -0
  23. package/dist/vite.js +3141 -0
  24. package/package.json +100 -55
  25. package/types/ambient.d.ts +345 -0
  26. package/types/index.d.ts +293 -0
  27. package/types/internal.d.ts +318 -0
  28. package/types/private.d.ts +235 -0
  29. package/CHANGELOG.md +0 -377
  30. package/assets/runtime/app/navigation.js +0 -23
  31. package/assets/runtime/app/navigation.js.map +0 -1
  32. package/assets/runtime/app/paths.js +0 -2
  33. package/assets/runtime/app/paths.js.map +0 -1
  34. package/assets/runtime/app/stores.js +0 -78
  35. package/assets/runtime/app/stores.js.map +0 -1
  36. package/assets/runtime/internal/singletons.js +0 -15
  37. package/assets/runtime/internal/singletons.js.map +0 -1
  38. package/assets/runtime/internal/start.js +0 -614
  39. package/assets/runtime/internal/start.js.map +0 -1
  40. package/assets/runtime/utils-85ebcc60.js +0 -18
  41. package/assets/runtime/utils-85ebcc60.js.map +0 -1
  42. package/dist/api.js +0 -28
  43. package/dist/api.js.map +0 -1
  44. package/dist/cli.js.map +0 -1
  45. package/dist/create_app.js +0 -502
  46. package/dist/create_app.js.map +0 -1
  47. package/dist/index.js +0 -327
  48. package/dist/index.js.map +0 -1
  49. package/dist/index2.js +0 -3497
  50. package/dist/index2.js.map +0 -1
  51. package/dist/index3.js +0 -296
  52. package/dist/index3.js.map +0 -1
  53. package/dist/index4.js +0 -311
  54. package/dist/index4.js.map +0 -1
  55. package/dist/index5.js +0 -221
  56. package/dist/index5.js.map +0 -1
  57. package/dist/index6.js +0 -730
  58. package/dist/index6.js.map +0 -1
  59. package/dist/renderer.js +0 -2429
  60. package/dist/renderer.js.map +0 -1
  61. package/dist/standard.js +0 -100
  62. package/dist/standard.js.map +0 -1
  63. package/dist/utils.js +0 -61
  64. package/dist/utils.js.map +0 -1
@@ -0,0 +1,980 @@
1
+ import path__default from 'path';
2
+ import fs__default from 'fs';
3
+ import { $ } from './error.js';
4
+ import { fileURLToPath } from 'url';
5
+ import { p as posixify, c as copy, w as write_if_changed, t as trim, r as rimraf, a as write, b as write_tsconfig } from './write_tsconfig.js';
6
+
7
+ /**
8
+ * @param typeMap [Object] Map of MIME type -> Array[extensions]
9
+ * @param ...
10
+ */
11
+ function Mime$1() {
12
+ this._types = Object.create(null);
13
+ this._extensions = Object.create(null);
14
+
15
+ for (let i = 0; i < arguments.length; i++) {
16
+ this.define(arguments[i]);
17
+ }
18
+
19
+ this.define = this.define.bind(this);
20
+ this.getType = this.getType.bind(this);
21
+ this.getExtension = this.getExtension.bind(this);
22
+ }
23
+
24
+ /**
25
+ * Define mimetype -> extension mappings. Each key is a mime-type that maps
26
+ * to an array of extensions associated with the type. The first extension is
27
+ * used as the default extension for the type.
28
+ *
29
+ * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']});
30
+ *
31
+ * If a type declares an extension that has already been defined, an error will
32
+ * be thrown. To suppress this error and force the extension to be associated
33
+ * with the new type, pass `force`=true. Alternatively, you may prefix the
34
+ * extension with "*" to map the type to extension, without mapping the
35
+ * extension to the type.
36
+ *
37
+ * e.g. mime.define({'audio/wav', ['wav']}, {'audio/x-wav', ['*wav']});
38
+ *
39
+ *
40
+ * @param map (Object) type definitions
41
+ * @param force (Boolean) if true, force overriding of existing definitions
42
+ */
43
+ Mime$1.prototype.define = function(typeMap, force) {
44
+ for (let type in typeMap) {
45
+ let extensions = typeMap[type].map(function(t) {
46
+ return t.toLowerCase();
47
+ });
48
+ type = type.toLowerCase();
49
+
50
+ for (let i = 0; i < extensions.length; i++) {
51
+ const ext = extensions[i];
52
+
53
+ // '*' prefix = not the preferred type for this extension. So fixup the
54
+ // extension, and skip it.
55
+ if (ext[0] === '*') {
56
+ continue;
57
+ }
58
+
59
+ if (!force && (ext in this._types)) {
60
+ throw new Error(
61
+ 'Attempt to change mapping for "' + ext +
62
+ '" extension from "' + this._types[ext] + '" to "' + type +
63
+ '". Pass `force=true` to allow this, otherwise remove "' + ext +
64
+ '" from the list of extensions for "' + type + '".'
65
+ );
66
+ }
67
+
68
+ this._types[ext] = type;
69
+ }
70
+
71
+ // Use first extension as default
72
+ if (force || !this._extensions[type]) {
73
+ const ext = extensions[0];
74
+ this._extensions[type] = (ext[0] !== '*') ? ext : ext.substr(1);
75
+ }
76
+ }
77
+ };
78
+
79
+ /**
80
+ * Lookup a mime type based on extension
81
+ */
82
+ Mime$1.prototype.getType = function(path) {
83
+ path = String(path);
84
+ let last = path.replace(/^.*[/\\]/, '').toLowerCase();
85
+ let ext = last.replace(/^.*\./, '').toLowerCase();
86
+
87
+ let hasPath = last.length < path.length;
88
+ let hasDot = ext.length < last.length - 1;
89
+
90
+ return (hasDot || !hasPath) && this._types[ext] || null;
91
+ };
92
+
93
+ /**
94
+ * Return file extension associated with a mime type
95
+ */
96
+ Mime$1.prototype.getExtension = function(type) {
97
+ type = /^\s*([^;\s]*)/.test(type) && RegExp.$1;
98
+ return type && this._extensions[type.toLowerCase()] || null;
99
+ };
100
+
101
+ var Mime_1 = Mime$1;
102
+
103
+ 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"]};
104
+
105
+ 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"]};
106
+
107
+ let Mime = Mime_1;
108
+ var mime = new Mime(standard, other);
109
+
110
+ const get_runtime_path = /** @param {import('types').ValidatedKitConfig} config */ (config) =>
111
+ posixify_path(path__default.join(config.outDir, 'runtime'))
112
+ ;
113
+
114
+ /** @param {string} str */
115
+ function posixify_path(str) {
116
+ const parsed = path__default.parse(str);
117
+ return `/${parsed.dir.slice(parsed.root.length).split(path__default.sep).join('/')}/${parsed.base}`;
118
+ }
119
+
120
+ function noop() {}
121
+
122
+ /** @param {{ verbose: boolean }} opts */
123
+ function logger({ verbose }) {
124
+ /** @type {import('types').Logger} */
125
+ const log = (msg) => console.log(msg.replace(/^/gm, ' '));
126
+
127
+ /** @param {string} msg */
128
+ const err = (msg) => console.error(msg.replace(/^/gm, ' '));
129
+
130
+ log.success = (msg) => log($.green(`✔ ${msg}`));
131
+ log.error = (msg) => err($.bold().red(msg));
132
+ log.warn = (msg) => log($.bold().yellow(msg));
133
+
134
+ log.minor = verbose ? (msg) => log($.grey(msg)) : noop;
135
+ log.info = verbose ? log : noop;
136
+
137
+ return log;
138
+ }
139
+
140
+ /** @param {import('types').ManifestData} manifest_data */
141
+ function get_mime_lookup(manifest_data) {
142
+ /** @type {Record<string, string>} */
143
+ const mime = {};
144
+
145
+ manifest_data.assets.forEach((asset) => {
146
+ if (asset.type) {
147
+ const ext = path__default.extname(asset.file);
148
+ mime[ext] = asset.type;
149
+ }
150
+ });
151
+
152
+ return mime;
153
+ }
154
+
155
+ const param_pattern = /^(\.\.\.)?(\w+)(?:=(\w+))?$/;
156
+
157
+ /** @param {string} id */
158
+ function parse_route_id(id) {
159
+ /** @type {string[]} */
160
+ const names = [];
161
+
162
+ /** @type {string[]} */
163
+ const types = [];
164
+
165
+ // `/foo` should get an optional trailing slash, `/foo.json` should not
166
+ // const add_trailing_slash = !/\.[a-z]+$/.test(key);
167
+ let add_trailing_slash = true;
168
+
169
+ const pattern =
170
+ id === ''
171
+ ? /^\/$/
172
+ : new RegExp(
173
+ `^${decodeURIComponent(id)
174
+ .split(/(?:@[a-zA-Z0-9_-]+)?(?:\/|$)/)
175
+ .map((segment, i, segments) => {
176
+ // special case — /[...rest]/ could contain zero segments
177
+ const match = /^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(segment);
178
+ if (match) {
179
+ names.push(match[1]);
180
+ types.push(match[2]);
181
+ return '(?:/(.*))?';
182
+ }
183
+
184
+ const is_last = i === segments.length - 1;
185
+
186
+ return (
187
+ segment &&
188
+ '/' +
189
+ segment
190
+ .split(/\[(.+?)\]/)
191
+ .map((content, i) => {
192
+ if (i % 2) {
193
+ const [, rest, name, type] = /** @type {RegExpMatchArray} */ (
194
+ param_pattern.exec(content)
195
+ );
196
+ names.push(name);
197
+ types.push(type);
198
+ return rest ? '(.*?)' : '([^/]+?)';
199
+ }
200
+
201
+ if (is_last && content.includes('.')) add_trailing_slash = false;
202
+
203
+ return (
204
+ content // allow users to specify characters on the file system in an encoded manner
205
+ .normalize()
206
+ // We use [ and ] to denote parameters, so users must encode these on the file
207
+ // system to match against them. We don't decode all characters since others
208
+ // can already be epressed and so that '%' can be easily used directly in filenames
209
+ .replace(/%5[Bb]/g, '[')
210
+ .replace(/%5[Dd]/g, ']')
211
+ // '#', '/', and '?' can only appear in URL path segments in an encoded manner.
212
+ // They will not be touched by decodeURI so need to be encoded here, so
213
+ // that we can match against them.
214
+ // We skip '/' since you can't create a file with it on any OS
215
+ .replace(/#/g, '%23')
216
+ .replace(/\?/g, '%3F')
217
+ // escape characters that have special meaning in regex
218
+ .replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
219
+ ); // TODO handle encoding
220
+ })
221
+ .join('')
222
+ );
223
+ })
224
+ .join('')}${add_trailing_slash ? '/?' : ''}$`
225
+ );
226
+
227
+ return { pattern, names, types };
228
+ }
229
+
230
+ /**
231
+ * A portion of a file or directory name where the name has been split into
232
+ * static and dynamic parts
233
+ * @typedef {{
234
+ * content: string;
235
+ * dynamic: boolean;
236
+ * rest: boolean;
237
+ * type: string | null;
238
+ * }} Part
239
+ */
240
+
241
+ /**
242
+ * A route, consisting of an endpoint module and/or an array of components
243
+ * (n layouts and one leaf) for successful navigations and an array of
244
+ * n error components to render if navigation fails
245
+ * @typedef {{
246
+ * id: string;
247
+ * pattern: RegExp;
248
+ * segments: Part[][];
249
+ * page?: {
250
+ * a: Array<string | undefined>;
251
+ * b: Array<string | undefined>;
252
+ * };
253
+ * endpoint?: string;
254
+ * }} Unit
255
+ */
256
+
257
+ /**
258
+ * @typedef {{
259
+ * error: string | undefined;
260
+ * layouts: Record<string, { file: string, name: string }>
261
+ * }} Node
262
+ */
263
+
264
+ /**
265
+ * @typedef {Map<string, Node>} Tree
266
+ */
267
+
268
+ const layout_pattern = /^__layout(?:-([a-zA-Z0-9_-]+))?(?:@([a-zA-Z0-9_-]+))?$/;
269
+ const dunder_pattern = /(^|\/)__(?!tests?__)/; // forbid __-prefixed files/directories except __error, __layout[-...], __test__, __tests__
270
+
271
+ const DEFAULT = 'default';
272
+
273
+ /**
274
+ * @param {{
275
+ * config: import('types').ValidatedConfig;
276
+ * fallback?: string;
277
+ * cwd?: string;
278
+ * }} opts
279
+ * @returns {import('types').ManifestData}
280
+ */
281
+ function create_manifest_data({
282
+ config,
283
+ fallback = `${get_runtime_path(config.kit)}/components`,
284
+ cwd = process.cwd()
285
+ }) {
286
+ /** @type {import('types').RouteData[]} */
287
+ const routes = [];
288
+
289
+ /** @type {Map<string, Unit>} */
290
+ const units = new Map();
291
+
292
+ /** @type {Tree} */
293
+ const tree = new Map();
294
+
295
+ const default_layout = {
296
+ file: posixify(path__default.relative(cwd, `${fallback}/layout.svelte`)),
297
+ name: DEFAULT
298
+ };
299
+
300
+ // set default root layout/error
301
+ tree.set('', {
302
+ error: posixify(path__default.relative(cwd, `${fallback}/error.svelte`)),
303
+ layouts: { [DEFAULT]: default_layout }
304
+ });
305
+
306
+ const routes_base = posixify(path__default.relative(cwd, config.kit.files.routes));
307
+ const valid_extensions = [...config.extensions, ...config.kit.moduleExtensions];
308
+
309
+ if (fs__default.existsSync(config.kit.files.routes)) {
310
+ list_files(config.kit.files.routes).forEach((file) => {
311
+ const extension = valid_extensions.find((ext) => file.endsWith(ext));
312
+ if (!extension) return;
313
+
314
+ const id = file
315
+ .slice(0, -extension.length)
316
+ .replace(/(?:^|\/)index((?:@[a-zA-Z0-9_-]+)?(?:\.[a-z]+)?)?$/, '$1');
317
+ const project_relative = `${routes_base}/${file}`;
318
+
319
+ const segments = id.split('/');
320
+ const name = /** @type {string} */ (segments.pop());
321
+
322
+ if (name === '__layout.reset') {
323
+ throw new Error(
324
+ '__layout.reset has been removed in favour of named layouts: https://kit.svelte.dev/docs/layouts#named-layouts'
325
+ );
326
+ }
327
+
328
+ if (name === '__error' || layout_pattern.test(name)) {
329
+ const dir = segments.join('/');
330
+
331
+ if (!tree.has(dir)) {
332
+ tree.set(dir, {
333
+ error: undefined,
334
+ layouts: {}
335
+ });
336
+ }
337
+
338
+ const group = /** @type {Node} */ (tree.get(dir));
339
+
340
+ if (name === '__error') {
341
+ group.error = project_relative;
342
+ } else {
343
+ const match = /** @type {RegExpMatchArray} */ (layout_pattern.exec(name));
344
+
345
+ if (match[1] === DEFAULT) {
346
+ throw new Error(`${project_relative} cannot use reserved "${DEFAULT}" name`);
347
+ }
348
+
349
+ const layout_id = match[1] || DEFAULT;
350
+
351
+ const defined = group.layouts[layout_id];
352
+ if (defined && defined !== default_layout) {
353
+ throw new Error(
354
+ `Duplicate layout ${project_relative} already defined at ${defined.file}`
355
+ );
356
+ }
357
+
358
+ group.layouts[layout_id] = {
359
+ file: project_relative,
360
+ name
361
+ };
362
+ }
363
+
364
+ return;
365
+ } else if (dunder_pattern.test(file)) {
366
+ throw new Error(
367
+ `Files and directories prefixed with __ are reserved (saw ${project_relative})`
368
+ );
369
+ }
370
+
371
+ if (!config.kit.routes(file)) return;
372
+
373
+ if (/\]\[/.test(id)) {
374
+ throw new Error(`Invalid route ${project_relative} — parameters must be separated`);
375
+ }
376
+
377
+ if (count_occurrences('[', id) !== count_occurrences(']', id)) {
378
+ throw new Error(`Invalid route ${project_relative} — brackets are unbalanced`);
379
+ }
380
+
381
+ if (!units.has(id)) {
382
+ units.set(id, {
383
+ id,
384
+ pattern: parse_route_id(id).pattern,
385
+ segments: id
386
+ .split('/')
387
+ .filter(Boolean)
388
+ .map((segment) => {
389
+ /** @type {Part[]} */
390
+ const parts = [];
391
+ segment.split(/\[(.+?)\]/).map((content, i) => {
392
+ const dynamic = !!(i % 2);
393
+
394
+ if (!content) return;
395
+
396
+ parts.push({
397
+ content,
398
+ dynamic,
399
+ rest: dynamic && content.startsWith('...'),
400
+ type: (dynamic && content.split('=')[1]) || null
401
+ });
402
+ });
403
+ return parts;
404
+ }),
405
+ page: undefined,
406
+ endpoint: undefined
407
+ });
408
+ }
409
+
410
+ const unit = /** @type {Unit} */ (units.get(id));
411
+
412
+ if (config.extensions.find((ext) => file.endsWith(ext))) {
413
+ const { layouts, errors } = trace(project_relative, file, tree, config.extensions);
414
+ unit.page = {
415
+ a: layouts.concat(project_relative),
416
+ b: errors
417
+ };
418
+ } else {
419
+ unit.endpoint = project_relative;
420
+ }
421
+ });
422
+ }
423
+
424
+ /** @type {string[]} */
425
+ const components = [];
426
+
427
+ tree.forEach(({ layouts, error }) => {
428
+ // we do [default, error, ...other_layouts] so that components[0] and [1]
429
+ // are the root layout/error. kinda janky, there's probably a nicer way
430
+ if (layouts[DEFAULT]) {
431
+ components.push(layouts[DEFAULT].file);
432
+ }
433
+
434
+ if (error) {
435
+ components.push(error);
436
+ }
437
+
438
+ for (const id in layouts) {
439
+ if (id !== DEFAULT) components.push(layouts[id].file);
440
+ }
441
+ });
442
+
443
+ units.forEach((unit) => {
444
+ if (unit.page) {
445
+ const leaf = /** @type {string} */ (unit.page.a[unit.page.a.length - 1]);
446
+ components.push(leaf);
447
+ }
448
+ });
449
+
450
+ Array.from(units.values())
451
+ .sort(compare)
452
+ .forEach((unit) => {
453
+ // TODO when we introduce layout endpoints and scoped middlewares, we
454
+ // will probably want to have a single unified route type here
455
+ // (created in the list_files(...).forEach(...) callback)
456
+ if (unit.page) {
457
+ routes.push({
458
+ type: 'page',
459
+ id: unit.id,
460
+ pattern: unit.pattern,
461
+ path: unit.id.includes('[') ? '' : `/${unit.id.replace(/@(?:[a-zA-Z0-9_-]+)/g, '')}`,
462
+ shadow: unit.endpoint || null,
463
+ a: unit.page.a,
464
+ b: unit.page.b
465
+ });
466
+ } else if (unit.endpoint) {
467
+ routes.push({
468
+ type: 'endpoint',
469
+ id: unit.id,
470
+ pattern: unit.pattern,
471
+ file: unit.endpoint
472
+ });
473
+ }
474
+ });
475
+
476
+ /** @type {import('types').Asset[]} */
477
+ const assets = fs__default.existsSync(config.kit.files.assets)
478
+ ? list_files(config.kit.files.assets).map((file) => ({
479
+ file,
480
+ size: fs__default.statSync(`${config.kit.files.assets}/${file}`).size,
481
+ type: mime.getType(file)
482
+ }))
483
+ : [];
484
+
485
+ const params_base = path__default.relative(cwd, config.kit.files.params);
486
+
487
+ /** @type {Record<string, string>} */
488
+ const matchers = {};
489
+ if (fs__default.existsSync(config.kit.files.params)) {
490
+ for (const file of fs__default.readdirSync(config.kit.files.params)) {
491
+ const ext = path__default.extname(file);
492
+ if (!config.kit.moduleExtensions.includes(ext)) continue;
493
+ const type = file.slice(0, -ext.length);
494
+
495
+ if (/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(type)) {
496
+ matchers[type] = path__default.join(params_base, file);
497
+ } else {
498
+ throw new Error(
499
+ `Matcher names must match /^[a-zA-Z_][a-zA-Z0-9_]*$/ — "${file}" is invalid`
500
+ );
501
+ }
502
+ }
503
+ }
504
+
505
+ return {
506
+ assets,
507
+ components,
508
+ routes,
509
+ matchers
510
+ };
511
+ }
512
+
513
+ /**
514
+ * @param {string} file
515
+ * @param {string} path
516
+ * @param {Tree} tree
517
+ * @param {string[]} extensions
518
+ */
519
+ function trace(file, path, tree, extensions) {
520
+ /** @type {Array<string | undefined>} */
521
+ const layouts = [];
522
+
523
+ /** @type {Array<string | undefined>} */
524
+ const errors = [];
525
+
526
+ const parts = path.split('/');
527
+ const filename = /** @type {string} */ (parts.pop());
528
+ const extension = /** @type {string} */ (extensions.find((ext) => path.endsWith(ext)));
529
+ const base = filename.slice(0, -extension.length);
530
+
531
+ let layout_id = base.includes('@') ? base.split('@')[1] : DEFAULT;
532
+
533
+ if (parts.findIndex((part) => part.indexOf('@') > -1) > -1) {
534
+ throw new Error(`Invalid route ${file} - named layouts are not allowed in directories`);
535
+ }
536
+
537
+ // walk up the tree, find which __layout and __error components
538
+ // apply to this page
539
+ // eslint-disable-next-line
540
+ while (true) {
541
+ const node = tree.get(parts.join('/'));
542
+ const layout = node?.layouts[layout_id];
543
+
544
+ if (layout?.file && layouts.indexOf(layout.file) > -1) {
545
+ throw new Error(`Recursive layout detected: ${layout.file} -> ${layouts.join(' -> ')}`);
546
+ }
547
+
548
+ // any segment that has neither a __layout nor an __error can be discarded.
549
+ // in other words these...
550
+ // layouts: [a, , b, c]
551
+ // errors: [d, , e, ]
552
+ //
553
+ // ...can be compacted to these:
554
+ // layouts: [a, b, c]
555
+ // errors: [d, e, ]
556
+ if (node?.error || layout?.file) {
557
+ errors.unshift(node?.error);
558
+ layouts.unshift(layout?.file);
559
+ }
560
+
561
+ if (layout?.name.includes('@')) {
562
+ layout_id = layout.name.split('@')[1];
563
+ } else {
564
+ if (layout) layout_id = DEFAULT;
565
+ if (parts.length === 0) break;
566
+ parts.pop();
567
+ }
568
+ }
569
+
570
+ if (layout_id !== DEFAULT) {
571
+ throw new Error(`${file} references missing layout "${layout_id}"`);
572
+ }
573
+
574
+ // trim empty space off the end of the errors array
575
+ let i = errors.length;
576
+ while (i--) if (errors[i]) break;
577
+ errors.length = i + 1;
578
+
579
+ return { layouts, errors };
580
+ }
581
+
582
+ /**
583
+ * @param {Unit} a
584
+ * @param {Unit} b
585
+ */
586
+ function compare(a, b) {
587
+ const max_segments = Math.max(a.segments.length, b.segments.length);
588
+ for (let i = 0; i < max_segments; i += 1) {
589
+ const sa = a.segments[i];
590
+ const sb = b.segments[i];
591
+
592
+ // /x < /x/y, but /[...x]/y < /[...x]
593
+ if (!sa) return a.id.includes('[...') ? +1 : -1;
594
+ if (!sb) return b.id.includes('[...') ? -1 : +1;
595
+
596
+ const max_parts = Math.max(sa.length, sb.length);
597
+ for (let i = 0; i < max_parts; i += 1) {
598
+ const pa = sa[i];
599
+ const pb = sb[i];
600
+
601
+ // xy < x[y], but [x].json < [x]
602
+ if (pa === undefined) return pb.dynamic ? -1 : +1;
603
+ if (pb === undefined) return pa.dynamic ? +1 : -1;
604
+
605
+ // x < [x]
606
+ if (pa.dynamic !== pb.dynamic) {
607
+ return pa.dynamic ? +1 : -1;
608
+ }
609
+
610
+ if (pa.dynamic) {
611
+ // [x] < [...x]
612
+ if (pa.rest !== pb.rest) {
613
+ return pa.rest ? +1 : -1;
614
+ }
615
+
616
+ // [x=type] < [x]
617
+ if (!!pa.type !== !!pb.type) {
618
+ return pa.type ? -1 : +1;
619
+ }
620
+ }
621
+ }
622
+ }
623
+
624
+ const a_is_endpoint = !a.page && a.endpoint;
625
+ const b_is_endpoint = !b.page && b.endpoint;
626
+
627
+ if (a_is_endpoint !== b_is_endpoint) {
628
+ return a_is_endpoint ? -1 : +1;
629
+ }
630
+
631
+ return a < b ? -1 : 1;
632
+ }
633
+
634
+ /**
635
+ * @param {string} needle
636
+ * @param {string} haystack
637
+ */
638
+ function count_occurrences(needle, haystack) {
639
+ let count = 0;
640
+ for (let i = 0; i < haystack.length; i += 1) {
641
+ if (haystack[i] === needle) count += 1;
642
+ }
643
+ return count;
644
+ }
645
+
646
+ /**
647
+ * @param {string} dir
648
+ * @param {string} [path]
649
+ * @param {string[]} [files]
650
+ */
651
+ function list_files(dir, path = '', files = []) {
652
+ fs__default.readdirSync(dir)
653
+ .sort((a, b) => {
654
+ // sort each directory in (__layout, __error, everything else) order
655
+ // so that we can trace layouts/errors immediately
656
+
657
+ if (a.startsWith('__layout')) {
658
+ if (!b.startsWith('__layout')) return -1;
659
+ } else if (b.startsWith('__layout')) {
660
+ return 1;
661
+ } else if (a.startsWith('__')) {
662
+ if (!b.startsWith('__')) return -1;
663
+ } else if (b.startsWith('__')) {
664
+ return 1;
665
+ }
666
+
667
+ return a < b ? -1 : 1;
668
+ })
669
+ .forEach((file) => {
670
+ const full = `${dir}/${file}`;
671
+ const stats = fs__default.statSync(full);
672
+ const joined = path ? `${path}/${file}` : file;
673
+
674
+ if (stats.isDirectory()) {
675
+ list_files(full, joined, files);
676
+ } else {
677
+ files.push(joined);
678
+ }
679
+ });
680
+
681
+ return files;
682
+ }
683
+
684
+ const filename = fileURLToPath(import.meta.url);
685
+ const dirname = path__default.dirname(filename);
686
+
687
+ /** @param {string} dest */
688
+ function copy_assets(dest) {
689
+ let prefix = '..';
690
+ do {
691
+ // we jump through these hoops so that this function
692
+ // works whether or not it's been bundled
693
+ const resolved = path__default.resolve(dirname, `${prefix}/assets`);
694
+
695
+ if (fs__default.existsSync(resolved)) {
696
+ copy(resolved, dest);
697
+ return;
698
+ }
699
+
700
+ prefix = `../${prefix}`;
701
+ } while (true); // eslint-disable-line
702
+ }
703
+
704
+ const s = JSON.stringify;
705
+
706
+ /**
707
+ * Writes the client manifest to disk. The manifest is used to power the router. It contains the
708
+ * list of routes and corresponding Svelte components (i.e. pages and layouts).
709
+ * @param {import('types').ManifestData} manifest_data
710
+ * @param {string} base
711
+ * @param {string} output
712
+ */
713
+ function write_manifest(manifest_data, base, output) {
714
+ /** @type {Record<string, number>} */
715
+ const component_indexes = {};
716
+
717
+ /** @param {string} c */
718
+ const get_path = (c) => path__default.relative(base, c);
719
+
720
+ const components = `[
721
+ ${manifest_data.components
722
+ .map((component, i) => {
723
+ component_indexes[component] = i;
724
+
725
+ return `() => import(${s(get_path(component))})`;
726
+ })
727
+ .join(',\n\t\t\t\t\t')}
728
+ ]`.replace(/^\t/gm, '');
729
+
730
+ /** @param {Array<string | undefined>} parts */
731
+ const get_indices = (parts) =>
732
+ `[${parts.map((part) => (part ? component_indexes[part] : '')).join(', ')}]`;
733
+
734
+ const dictionary = `{
735
+ ${manifest_data.routes
736
+ .map((route) => {
737
+ if (route.type === 'page') {
738
+ const tuple = [get_indices(route.a), get_indices(route.b)];
739
+ if (route.shadow) tuple.push('1');
740
+
741
+ return `${s(route.id)}: [${tuple.join(', ')}]`;
742
+ }
743
+ })
744
+ .filter(Boolean)
745
+ .join(',\n\t\t')}
746
+ }`.replace(/^\t/gm, '');
747
+
748
+ write_if_changed(
749
+ `${output}/client-manifest.js`,
750
+ trim(`
751
+ export { matchers } from './client-matchers.js';
752
+
753
+ export const components = ${components};
754
+
755
+ export const dictionary = ${dictionary};
756
+ `)
757
+ );
758
+ }
759
+
760
+ /**
761
+ * @param {import('types').ManifestData} manifest_data
762
+ * @param {string} output
763
+ */
764
+ function write_matchers(manifest_data, output) {
765
+ const imports = [];
766
+ const matchers = [];
767
+
768
+ for (const key in manifest_data.matchers) {
769
+ const src = manifest_data.matchers[key];
770
+
771
+ imports.push(`import { match as ${key} } from ${s(path__default.relative(output, src))};`);
772
+ matchers.push(key);
773
+ }
774
+
775
+ const module = imports.length
776
+ ? `${imports.join('\n')}\n\nexport const matchers = { ${matchers.join(', ')} };`
777
+ : 'export const matchers = {};';
778
+
779
+ write_if_changed(`${output}/client-matchers.js`, module);
780
+ }
781
+
782
+ /**
783
+ * @param {import('types').ManifestData} manifest_data
784
+ * @param {string} output
785
+ */
786
+ function write_root(manifest_data, output) {
787
+ // TODO remove default layout altogether
788
+
789
+ const max_depth = Math.max(
790
+ ...manifest_data.routes.map((route) =>
791
+ route.type === 'page' ? route.a.filter(Boolean).length : 0
792
+ ),
793
+ 1
794
+ );
795
+
796
+ const levels = [];
797
+ for (let i = 0; i <= max_depth; i += 1) {
798
+ levels.push(i);
799
+ }
800
+
801
+ let l = max_depth;
802
+
803
+ let pyramid = `<svelte:component this={components[${l}]} {...(props_${l} || {})}/>`;
804
+
805
+ while (l--) {
806
+ pyramid = `
807
+ {#if components[${l + 1}]}
808
+ <svelte:component this={components[${l}]} {...(props_${l} || {})}>
809
+ ${pyramid.replace(/\n/g, '\n\t\t\t\t\t')}
810
+ </svelte:component>
811
+ {:else}
812
+ <svelte:component this={components[${l}]} {...(props_${l} || {})} />
813
+ {/if}
814
+ `
815
+ .replace(/^\t\t\t/gm, '')
816
+ .trim();
817
+ }
818
+
819
+ write_if_changed(
820
+ `${output}/root.svelte`,
821
+ trim(`
822
+ <!-- This file is generated by @sveltejs/kit — do not edit it! -->
823
+ <script>
824
+ import { setContext, afterUpdate, onMount } from 'svelte';
825
+
826
+ // stores
827
+ export let stores;
828
+ export let page;
829
+
830
+ export let components;
831
+ ${levels.map((l) => `export let props_${l} = null;`).join('\n\t\t\t\t')}
832
+
833
+ setContext('__svelte__', stores);
834
+
835
+ $: stores.page.set(page);
836
+ afterUpdate(stores.page.notify);
837
+
838
+ let mounted = false;
839
+ let navigated = false;
840
+ let title = null;
841
+
842
+ onMount(() => {
843
+ const unsubscribe = stores.page.subscribe(() => {
844
+ if (mounted) {
845
+ navigated = true;
846
+ title = document.title || 'untitled page';
847
+ }
848
+ });
849
+
850
+ mounted = true;
851
+ return unsubscribe;
852
+ });
853
+ </script>
854
+
855
+ ${pyramid.replace(/\n/g, '\n\t\t\t')}
856
+
857
+ {#if mounted}
858
+ <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">
859
+ {#if navigated}
860
+ {title}
861
+ {/if}
862
+ </div>
863
+ {/if}
864
+ `)
865
+ );
866
+ }
867
+
868
+ /** @param {string} imports */
869
+ const header = (imports) => `
870
+ // this file is auto-generated
871
+ import type { ${imports} } from '@sveltejs/kit';`;
872
+
873
+ /** @param {string} arg */
874
+ const endpoint = (arg) => `
875
+ export type RequestHandler<Output = ResponseBody> = GenericRequestHandler<${arg}, Output>;`;
876
+
877
+ /** @param {string} arg */
878
+ const page = (arg) => `
879
+ export type Load<
880
+ InputProps extends Record<string, any> = Record<string, any>,
881
+ OutputProps extends Record<string, any> = InputProps
882
+ > = GenericLoad<${arg}, InputProps, OutputProps>;`;
883
+
884
+ /**
885
+ * @param {import('types').ValidatedConfig} config
886
+ * @param {import('types').ManifestData} manifest_data
887
+ */
888
+ function write_types(config, manifest_data) {
889
+ rimraf(`${config.kit.outDir}/types`);
890
+
891
+ /** @type {Map<string, { params: string[], type: 'page' | 'endpoint' | 'both' }>} */
892
+ const shadow_types = new Map();
893
+
894
+ manifest_data.routes.forEach((route) => {
895
+ const file = route.type === 'endpoint' ? route.file : route.shadow;
896
+
897
+ if (file) {
898
+ const ext = /** @type {string} */ (
899
+ config.kit.moduleExtensions.find((ext) => file.endsWith(ext))
900
+ );
901
+ const key = file.slice(0, -ext.length);
902
+ shadow_types.set(key, {
903
+ params: parse_route_id(key).names,
904
+ type: route.type === 'endpoint' ? 'endpoint' : 'both'
905
+ });
906
+ }
907
+ });
908
+
909
+ manifest_data.components.forEach((component) => {
910
+ if (component.startsWith('.')) return; // exclude fallback components
911
+
912
+ const ext = /** @type {string} */ (config.extensions.find((ext) => component.endsWith(ext)));
913
+ const key = component.slice(0, -ext.length);
914
+
915
+ if (!shadow_types.has(key)) {
916
+ shadow_types.set(key, { params: parse_route_id(key).names, type: 'page' });
917
+ }
918
+ });
919
+
920
+ shadow_types.forEach(({ params, type }, key) => {
921
+ const arg =
922
+ params.length > 0 ? `{ ${params.map((param) => `${param}: string`).join('; ')} }` : '{}';
923
+
924
+ const imports = [];
925
+ const content = [];
926
+
927
+ if (type !== 'page') {
928
+ imports.push('RequestHandler as GenericRequestHandler, ResponseBody');
929
+ content.push(endpoint(arg));
930
+ }
931
+
932
+ if (type !== 'endpoint') {
933
+ imports.push('Load as GenericLoad');
934
+ content.push(page(arg));
935
+ }
936
+
937
+ content.unshift(header(imports.join(', ')));
938
+
939
+ const parts = (key || 'index').split('/');
940
+ parts.push('__types', /** @type {string} */ (parts.pop()));
941
+
942
+ write(`${config.kit.outDir}/types/${parts.join('/')}.d.ts`, content.join('\n').trim());
943
+ });
944
+ }
945
+
946
+ /** @param {import('types').ValidatedConfig} config */
947
+ function init(config) {
948
+ copy_assets(path__default.join(config.kit.outDir, 'runtime'));
949
+ write_tsconfig(config.kit);
950
+ }
951
+
952
+ /** @param {import('types').ValidatedConfig} config */
953
+ function update(config) {
954
+ const manifest_data = create_manifest_data({ config });
955
+
956
+ const output = path__default.join(config.kit.outDir, 'generated');
957
+ const base = path__default.relative('.', output);
958
+
959
+ write_manifest(manifest_data, base, output);
960
+ write_root(manifest_data, output);
961
+ write_matchers(manifest_data, output);
962
+ write_types(config, manifest_data);
963
+
964
+ return { manifest_data };
965
+ }
966
+
967
+ /** @param {import('types').ValidatedConfig} config */
968
+ function all(config) {
969
+ init(config);
970
+ return update(config);
971
+ }
972
+
973
+ var sync = /*#__PURE__*/Object.freeze({
974
+ __proto__: null,
975
+ init: init,
976
+ update: update,
977
+ all: all
978
+ });
979
+
980
+ export { get_mime_lookup as a, all as b, sync as c, get_runtime_path as g, init as i, logger as l, parse_route_id as p, s, update as u };