@sveltejs/kit 1.0.0-next.37 → 1.0.0-next.372

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