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

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