@sveltejs/kit 1.0.0-next.38 → 1.0.0-next.382

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