@marko/vite 2.0.0 → 2.0.3
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.
- package/LICENSE +1 -1
- package/dist/chunk-HWRQJHCN.mjs +22 -0
- package/dist/chunk-MPTD6LHF.mjs +65 -0
- package/dist/chunk-VL2HLMVE.mjs +80 -0
- package/dist/chunk-Z64RCGRQ.mjs +74 -0
- package/dist/components/vite.marko +34 -0
- package/dist/esbuild-plugin.d.ts +3 -0
- package/dist/esbuild-plugin.js +97 -0
- package/dist/esbuild-plugin.mjs +6 -0
- package/dist/{cjs/index.d.ts → index.d.ts} +1 -1
- package/dist/index.js +416 -0
- package/dist/index.mjs +400 -0
- package/dist/{cjs/manifest-generator.d.ts → manifest-generator.d.ts} +0 -0
- package/dist/manifest-generator.js +88 -0
- package/dist/manifest-generator.mjs +9 -0
- package/dist/{cjs/render-assets-transform.d.ts → render-assets-transform.d.ts} +0 -0
- package/dist/render-assets-transform.js +34 -0
- package/dist/render-assets-transform.mjs +13 -0
- package/dist/{cjs/serializer.d.ts → serializer.d.ts} +0 -0
- package/dist/serializer.js +100 -0
- package/dist/serializer.mjs +6 -0
- package/dist/{cjs/server-entry-template.d.ts → server-entry-template.d.ts} +0 -0
- package/dist/server-entry-template.js +45 -0
- package/dist/server-entry-template.mjs +6 -0
- package/package.json +62 -45
- package/CHANGELOG.md +0 -72
- package/components/vite-watch.marko +0 -31
- package/components/vite.marko +0 -31
- package/dist/cjs/esbuild-plugin.d.ts +0 -0
- package/dist/cjs/esbuild-plugin.js +0 -2
- package/dist/cjs/esbuild-plugin.js.map +0 -1
- package/dist/cjs/index.js +0 -417
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/manifest-generator.js +0 -63
- package/dist/cjs/manifest-generator.js.map +0 -1
- package/dist/cjs/render-assets-transform.js +0 -12
- package/dist/cjs/render-assets-transform.js.map +0 -1
- package/dist/cjs/serializer.js +0 -81
- package/dist/cjs/serializer.js.map +0 -1
- package/dist/cjs/server-entry-template.js +0 -22
- package/dist/cjs/server-entry-template.js.map +0 -1
- package/dist/esm/esbuild-plugin.d.ts +0 -0
- package/dist/esm/esbuild-plugin.js +0 -2
- package/dist/esm/esbuild-plugin.js.map +0 -1
- package/dist/esm/index.d.ts +0 -10
- package/dist/esm/index.js +0 -413
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/manifest-generator.d.ts +0 -11
- package/dist/esm/manifest-generator.js +0 -57
- package/dist/esm/manifest-generator.js.map +0 -1
- package/dist/esm/render-assets-transform.d.ts +0 -3
- package/dist/esm/render-assets-transform.js +0 -10
- package/dist/esm/render-assets-transform.js.map +0 -1
- package/dist/esm/serializer.d.ts +0 -2
- package/dist/esm/serializer.js +0 -78
- package/dist/esm/serializer.js.map +0 -1
- package/dist/esm/server-entry-template.d.ts +0 -6
- package/dist/esm/server-entry-template.js +0 -19
- package/dist/esm/server-entry-template.js.map +0 -1
package/dist/index.js
ADDED
|
@@ -0,0 +1,416 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
|
|
21
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
22
|
+
var src_exports = {};
|
|
23
|
+
__export(src_exports, {
|
|
24
|
+
default: () => markoPlugin
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(src_exports);
|
|
27
|
+
var import_os = __toESM(require("os"));
|
|
28
|
+
var import_fs = __toESM(require("fs"));
|
|
29
|
+
var import_path = __toESM(require("path"));
|
|
30
|
+
var import_crypto = __toESM(require("crypto"));
|
|
31
|
+
var import_anymatch = __toESM(require("anymatch"));
|
|
32
|
+
var import_url = require("url");
|
|
33
|
+
var import_relative_import_path = require("relative-import-path");
|
|
34
|
+
var import_server_entry_template = __toESM(require("./server-entry-template"));
|
|
35
|
+
var import_manifest_generator = require("./manifest-generator");
|
|
36
|
+
var import_esbuild_plugin = __toESM(require("./esbuild-plugin"));
|
|
37
|
+
const import_meta = {};
|
|
38
|
+
const normalizePath = import_path.default.sep === "\\" ? (id) => id.replace(/\\/g, "/") : (id) => id;
|
|
39
|
+
const virtualFiles = /* @__PURE__ */ new Map();
|
|
40
|
+
const queryReg = /\?marko-.+$/;
|
|
41
|
+
const browserEntryQuery = "?marko-browser-entry";
|
|
42
|
+
const serverEntryQuery = "?marko-server-entry";
|
|
43
|
+
const virtualFileQuery = "?marko-virtual";
|
|
44
|
+
const markoExt = ".marko";
|
|
45
|
+
const htmlExt = ".html";
|
|
46
|
+
const resolveOpts = { skipSelf: true };
|
|
47
|
+
const cache = /* @__PURE__ */ new Map();
|
|
48
|
+
const thisFile = typeof __filename === "string" ? __filename : (0, import_url.fileURLToPath)(import_meta.url);
|
|
49
|
+
let tempDir;
|
|
50
|
+
function markoPlugin(opts = {}) {
|
|
51
|
+
var _a;
|
|
52
|
+
let compiler;
|
|
53
|
+
const { runtimeId, linked = true } = opts;
|
|
54
|
+
const baseConfig = {
|
|
55
|
+
cache,
|
|
56
|
+
runtimeId,
|
|
57
|
+
sourceMaps: true,
|
|
58
|
+
writeVersionComment: false,
|
|
59
|
+
babelConfig: {
|
|
60
|
+
...opts.babelConfig,
|
|
61
|
+
caller: {
|
|
62
|
+
name: "@marko/vite",
|
|
63
|
+
supportsStaticESM: true,
|
|
64
|
+
supportsDynamicImport: true,
|
|
65
|
+
supportsTopLevelAwait: true,
|
|
66
|
+
supportsExportNamespaceFrom: true,
|
|
67
|
+
...(_a = opts.babelConfig) == null ? void 0 : _a.caller
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
const resolveViteVirtualDep = (from, dep) => {
|
|
72
|
+
const query = `${virtualFileQuery}&id=${normalizePath(dep.virtualPath)}`;
|
|
73
|
+
const id = normalizePath(from) + query;
|
|
74
|
+
if (devServer) {
|
|
75
|
+
const prev = virtualFiles.get(id);
|
|
76
|
+
if (prev && prev.code !== dep.code) {
|
|
77
|
+
devServer.moduleGraph.invalidateModule(devServer.moduleGraph.getModuleById(id));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
virtualFiles.set(id, dep);
|
|
81
|
+
return `./${import_path.default.basename(from) + query}`;
|
|
82
|
+
};
|
|
83
|
+
const ssrConfig = {
|
|
84
|
+
...baseConfig,
|
|
85
|
+
resolveVirtualDependency: resolveViteVirtualDep,
|
|
86
|
+
output: "html"
|
|
87
|
+
};
|
|
88
|
+
const domConfig = {
|
|
89
|
+
...baseConfig,
|
|
90
|
+
resolveVirtualDependency: resolveViteVirtualDep,
|
|
91
|
+
output: "dom"
|
|
92
|
+
};
|
|
93
|
+
const hydrateConfig = {
|
|
94
|
+
...baseConfig,
|
|
95
|
+
resolveVirtualDependency: resolveViteVirtualDep,
|
|
96
|
+
output: "hydrate"
|
|
97
|
+
};
|
|
98
|
+
let root;
|
|
99
|
+
let devEntryFile;
|
|
100
|
+
let isBuild = false;
|
|
101
|
+
let isSSRBuild = false;
|
|
102
|
+
let devServer;
|
|
103
|
+
let registeredTag = false;
|
|
104
|
+
let serverManifest;
|
|
105
|
+
const transformWatchFiles = /* @__PURE__ */ new Map();
|
|
106
|
+
const transformOptionalFiles = /* @__PURE__ */ new Map();
|
|
107
|
+
return [
|
|
108
|
+
{
|
|
109
|
+
name: "marko-vite:pre",
|
|
110
|
+
enforce: "pre",
|
|
111
|
+
async config(config, env) {
|
|
112
|
+
var _a2, _b, _c;
|
|
113
|
+
compiler ?? (compiler = await import(opts.compiler || "@marko/compiler"));
|
|
114
|
+
root = normalizePath(config.root || process.cwd());
|
|
115
|
+
devEntryFile = import_path.default.join(root, "index.html");
|
|
116
|
+
isBuild = env.command === "build";
|
|
117
|
+
isSSRBuild = isBuild && linked && Boolean(config.build.ssr);
|
|
118
|
+
if (linked && !registeredTag) {
|
|
119
|
+
const transformer = import_path.default.resolve(thisFile, "../render-assets-transform");
|
|
120
|
+
registeredTag = normalizePath(import_path.default.resolve(thisFile, "../components", "vite.marko"));
|
|
121
|
+
compiler.taglib.register("@marko/vite", {
|
|
122
|
+
"<_vite>": { template: registeredTag },
|
|
123
|
+
"<head>": { transformer },
|
|
124
|
+
"<body>": { transformer }
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
const lookup = compiler.taglib.buildLookup(root);
|
|
128
|
+
const taglibDeps = [];
|
|
129
|
+
for (const name in lookup.taglibsById) {
|
|
130
|
+
const taglib = lookup.taglibsById[name];
|
|
131
|
+
if (!/^marko-(.+-)?core$/.test(taglib.id) && /[\\/]node_modules[\\/]/.test(taglib.dirname)) {
|
|
132
|
+
for (const tagName in taglib.tags) {
|
|
133
|
+
const tag = taglib.tags[tagName];
|
|
134
|
+
const entry = tag.template || tag.renderer;
|
|
135
|
+
if (entry) {
|
|
136
|
+
taglibDeps.push((0, import_relative_import_path.relativeImportPath)(devEntryFile, entry));
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
const optimizeDeps = config.optimizeDeps ?? (config.optimizeDeps = {});
|
|
142
|
+
optimizeDeps.include = Array.from(/* @__PURE__ */ new Set([
|
|
143
|
+
...optimizeDeps.include || [],
|
|
144
|
+
...compiler.getRuntimeEntryFiles("dom", opts.translator),
|
|
145
|
+
...compiler.getRuntimeEntryFiles("html", opts.translator),
|
|
146
|
+
...taglibDeps
|
|
147
|
+
]));
|
|
148
|
+
const ssr = config.ssr ?? (config.ssr = {});
|
|
149
|
+
if (ssr.noExternal !== true) {
|
|
150
|
+
ssr.noExternal = Array.from(new Set(taglibDeps.concat(ssr.noExternal || [])));
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
...config,
|
|
154
|
+
optimizeDeps: {
|
|
155
|
+
...config.optimizeDeps,
|
|
156
|
+
extensions: [".marko", ...((_a2 = config.optimizeDeps) == null ? void 0 : _a2.extensions) || []],
|
|
157
|
+
esbuildOptions: {
|
|
158
|
+
plugins: [
|
|
159
|
+
(0, import_esbuild_plugin.default)(compiler, baseConfig),
|
|
160
|
+
...((_c = (_b = config.optimizeDeps) == null ? void 0 : _b.esbuildOptions) == null ? void 0 : _c.plugins) || []
|
|
161
|
+
]
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
},
|
|
166
|
+
configureServer(_server) {
|
|
167
|
+
ssrConfig.hot = domConfig.hot = true;
|
|
168
|
+
devServer = _server;
|
|
169
|
+
devServer.watcher.on("all", (type, filename) => {
|
|
170
|
+
for (const [id, files] of transformWatchFiles) {
|
|
171
|
+
if ((0, import_anymatch.default)(files, filename)) {
|
|
172
|
+
devServer.watcher.emit("change", id);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
if (type === "add" || type === "unlink") {
|
|
176
|
+
let clearedCache = false;
|
|
177
|
+
for (const [id, files] of transformOptionalFiles) {
|
|
178
|
+
if ((0, import_anymatch.default)(files, filename)) {
|
|
179
|
+
if (!clearedCache) {
|
|
180
|
+
baseConfig.cache.clear();
|
|
181
|
+
clearedCache = true;
|
|
182
|
+
}
|
|
183
|
+
devServer.watcher.emit("change", id);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
},
|
|
189
|
+
async buildStart(inputOptions) {
|
|
190
|
+
if (isBuild && linked && !isSSRBuild) {
|
|
191
|
+
const serverMetaFile = await getServerManifestFile(root);
|
|
192
|
+
this.addWatchFile(serverMetaFile);
|
|
193
|
+
try {
|
|
194
|
+
serverManifest = JSON.parse(await import_fs.default.promises.readFile(serverMetaFile, "utf-8"));
|
|
195
|
+
inputOptions.input = toHTMLEntries(root, serverManifest.entries);
|
|
196
|
+
} catch (err) {
|
|
197
|
+
this.error(`You must run the "ssr" build before the "browser" build.`);
|
|
198
|
+
}
|
|
199
|
+
if (isEmpty(inputOptions.input)) {
|
|
200
|
+
this.error("No Marko files were found when compiling the server.");
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
},
|
|
204
|
+
async resolveId(importee, importer, importOpts, ssr = importOpts.ssr) {
|
|
205
|
+
var _a2;
|
|
206
|
+
if (virtualFiles.has(importee)) {
|
|
207
|
+
return importee;
|
|
208
|
+
}
|
|
209
|
+
let importeeQuery = getMarkoQuery(importee);
|
|
210
|
+
if (importeeQuery) {
|
|
211
|
+
importee = importee.slice(0, -importeeQuery.length);
|
|
212
|
+
} else if (ssr && linked && importer && importer !== devEntryFile && isMarkoFile(importee) && !isMarkoFile(importer.replace(queryReg, ""))) {
|
|
213
|
+
importeeQuery = serverEntryQuery;
|
|
214
|
+
} else if (!ssr && isBuild && importer && isMarkoFile(importee) && ((_a2 = this.getModuleInfo(importer)) == null ? void 0 : _a2.isEntry)) {
|
|
215
|
+
importeeQuery = browserEntryQuery;
|
|
216
|
+
}
|
|
217
|
+
if (importeeQuery) {
|
|
218
|
+
const resolved = importee[0] === "." ? {
|
|
219
|
+
id: normalizePath(importer ? import_path.default.resolve(importer, "..", importee) : import_path.default.resolve(root, importee))
|
|
220
|
+
} : await this.resolve(importee, importer, resolveOpts);
|
|
221
|
+
if (resolved) {
|
|
222
|
+
resolved.id += importeeQuery;
|
|
223
|
+
}
|
|
224
|
+
return resolved;
|
|
225
|
+
}
|
|
226
|
+
return null;
|
|
227
|
+
},
|
|
228
|
+
async load(id) {
|
|
229
|
+
switch (getMarkoQuery(id)) {
|
|
230
|
+
case serverEntryQuery: {
|
|
231
|
+
const fileName = id.slice(0, -serverEntryQuery.length);
|
|
232
|
+
let entryData;
|
|
233
|
+
if (isBuild) {
|
|
234
|
+
const relativeFileName = import_path.default.posix.relative(root, fileName);
|
|
235
|
+
const entryId = toEntryId(relativeFileName);
|
|
236
|
+
serverManifest ?? (serverManifest = {
|
|
237
|
+
entries: {},
|
|
238
|
+
chunksNeedingAssets: []
|
|
239
|
+
});
|
|
240
|
+
serverManifest.entries[entryId] = relativeFileName;
|
|
241
|
+
entryData = JSON.stringify(entryId);
|
|
242
|
+
} else {
|
|
243
|
+
entryData = JSON.stringify(await (0, import_manifest_generator.generateDocManifest)(await devServer.transformIndexHtml("/", (0, import_manifest_generator.generateInputDoc)(fileNameToURL(fileName, root)))));
|
|
244
|
+
}
|
|
245
|
+
return (0, import_server_entry_template.default)({
|
|
246
|
+
fileName,
|
|
247
|
+
entryData,
|
|
248
|
+
runtimeId
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
case browserEntryQuery:
|
|
252
|
+
return import_fs.default.promises.readFile(id.slice(0, -browserEntryQuery.length), "utf-8");
|
|
253
|
+
}
|
|
254
|
+
return virtualFiles.get(id) || null;
|
|
255
|
+
},
|
|
256
|
+
async transformIndexHtml(html) {
|
|
257
|
+
if (isBuild) {
|
|
258
|
+
return html;
|
|
259
|
+
}
|
|
260
|
+
return html.replace(/(src\s*=\s*(['"])(?:(?!\2).)*\.marko)(?:\?((?:(?!\2).)*))?\2/gim, (_, prefix, quote, query) => prefix + browserEntryQuery + (query ? "&" + query : "") + quote);
|
|
261
|
+
},
|
|
262
|
+
async transform(source, id, ssr) {
|
|
263
|
+
const query = getMarkoQuery(id);
|
|
264
|
+
if (query && !query.startsWith(virtualFileQuery)) {
|
|
265
|
+
id = id.slice(0, -query.length);
|
|
266
|
+
if (query === serverEntryQuery) {
|
|
267
|
+
id = `${id.slice(0, -markoExt.length)}.entry.marko`;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
if (!isMarkoFile(id)) {
|
|
271
|
+
return null;
|
|
272
|
+
}
|
|
273
|
+
const compiled = await compiler.compile(source, id, (typeof ssr === "object" ? ssr.ssr : ssr) ? ssrConfig : query === browserEntryQuery ? hydrateConfig : domConfig);
|
|
274
|
+
const { map, meta } = compiled;
|
|
275
|
+
let { code } = compiled;
|
|
276
|
+
if (query !== browserEntryQuery && devServer) {
|
|
277
|
+
code += `
|
|
278
|
+
if (import.meta.hot) import.meta.hot.accept();`;
|
|
279
|
+
}
|
|
280
|
+
if (devServer) {
|
|
281
|
+
const templateName = getBasenameWithoutExt(id);
|
|
282
|
+
const optionalFilePrefix = import_path.default.dirname(id) + import_path.default.sep + (templateName === "index" ? "" : `${templateName}.`);
|
|
283
|
+
for (const file of meta.watchFiles) {
|
|
284
|
+
this.addWatchFile(file);
|
|
285
|
+
}
|
|
286
|
+
transformOptionalFiles.set(id, [
|
|
287
|
+
`${optionalFilePrefix}style.*`,
|
|
288
|
+
`${optionalFilePrefix}component.*`,
|
|
289
|
+
`${optionalFilePrefix}component-browser.*`,
|
|
290
|
+
`${optionalFilePrefix}marko-tag.json`
|
|
291
|
+
]);
|
|
292
|
+
transformWatchFiles.set(id, meta.watchFiles);
|
|
293
|
+
}
|
|
294
|
+
return { code, map };
|
|
295
|
+
}
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
name: "marko-vite:post",
|
|
299
|
+
apply: "build",
|
|
300
|
+
enforce: "post",
|
|
301
|
+
async generateBundle(outputOptions, bundle, isWrite) {
|
|
302
|
+
if (!linked) {
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
if (!isWrite) {
|
|
306
|
+
this.error(`Linked builds are currently only supported when in "write" mode.`);
|
|
307
|
+
}
|
|
308
|
+
if (!serverManifest) {
|
|
309
|
+
this.error("No Marko files were found when bundling the server in linked mode.");
|
|
310
|
+
}
|
|
311
|
+
if (isSSRBuild) {
|
|
312
|
+
const dir = outputOptions.dir ? import_path.default.resolve(outputOptions.dir) : import_path.default.resolve(outputOptions.file, "..");
|
|
313
|
+
for (const fileName in bundle) {
|
|
314
|
+
const chunk = bundle[fileName];
|
|
315
|
+
if (chunk.type === "chunk") {
|
|
316
|
+
for (const id in chunk.modules) {
|
|
317
|
+
if (id === registeredTag) {
|
|
318
|
+
serverManifest.chunksNeedingAssets.push(import_path.default.resolve(dir, fileName));
|
|
319
|
+
break;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
await import_fs.default.promises.writeFile(await getServerManifestFile(root), JSON.stringify(serverManifest));
|
|
325
|
+
} else {
|
|
326
|
+
const browserManifest = {};
|
|
327
|
+
for (const entryId in serverManifest.entries) {
|
|
328
|
+
const fileName = serverManifest.entries[entryId];
|
|
329
|
+
let chunkId = fileName + htmlExt;
|
|
330
|
+
let chunk = bundle[chunkId];
|
|
331
|
+
if (!chunk) {
|
|
332
|
+
chunkId = chunkId.replace(/\//g, "\\");
|
|
333
|
+
chunk = bundle[chunkId];
|
|
334
|
+
}
|
|
335
|
+
if ((chunk == null ? void 0 : chunk.type) === "asset") {
|
|
336
|
+
browserManifest[entryId] = await (0, import_manifest_generator.generateDocManifest)(chunk.source.toString());
|
|
337
|
+
delete bundle[chunkId];
|
|
338
|
+
} else {
|
|
339
|
+
this.error(`Marko template had unexpected output from vite, ${fileName}`);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
const manifestStr = `;var __MARKO_MANIFEST__=${JSON.stringify(browserManifest)};
|
|
343
|
+
`;
|
|
344
|
+
for (const fileName of serverManifest.chunksNeedingAssets) {
|
|
345
|
+
await import_fs.default.promises.appendFile(fileName, manifestStr);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
];
|
|
351
|
+
}
|
|
352
|
+
function getMarkoQuery(id) {
|
|
353
|
+
var _a;
|
|
354
|
+
return ((_a = queryReg.exec(id)) == null ? void 0 : _a[0]) || "";
|
|
355
|
+
}
|
|
356
|
+
function isMarkoFile(id) {
|
|
357
|
+
return id.endsWith(markoExt);
|
|
358
|
+
}
|
|
359
|
+
function toHTMLEntries(root, serverEntries) {
|
|
360
|
+
const result = [];
|
|
361
|
+
for (const id in serverEntries) {
|
|
362
|
+
const markoFile = import_path.default.posix.join(root, serverEntries[id]);
|
|
363
|
+
const htmlFile = markoFile + htmlExt;
|
|
364
|
+
virtualFiles.set(htmlFile, {
|
|
365
|
+
code: (0, import_manifest_generator.generateInputDoc)(markoFile)
|
|
366
|
+
});
|
|
367
|
+
result.push(htmlFile);
|
|
368
|
+
}
|
|
369
|
+
return result;
|
|
370
|
+
}
|
|
371
|
+
async function getServerManifestFile(root) {
|
|
372
|
+
return import_path.default.join(await getTempDir(root), "manifest.json");
|
|
373
|
+
}
|
|
374
|
+
function getTempDir(root) {
|
|
375
|
+
return tempDir || (tempDir = (async () => {
|
|
376
|
+
const dir = import_path.default.join(import_os.default.tmpdir(), `marko-vite-${import_crypto.default.createHash("SHA1").update(root).digest("hex")}`);
|
|
377
|
+
try {
|
|
378
|
+
const stat = await import_fs.default.promises.stat(dir);
|
|
379
|
+
if (stat.isDirectory()) {
|
|
380
|
+
return dir;
|
|
381
|
+
}
|
|
382
|
+
} catch {
|
|
383
|
+
await import_fs.default.promises.mkdir(dir);
|
|
384
|
+
return dir;
|
|
385
|
+
}
|
|
386
|
+
throw new Error("Unable to create temp directory");
|
|
387
|
+
})());
|
|
388
|
+
}
|
|
389
|
+
function toEntryId(id) {
|
|
390
|
+
const lastSepIndex = id.lastIndexOf(import_path.default.sep);
|
|
391
|
+
let name = id.slice(lastSepIndex + 1, id.indexOf(".", lastSepIndex));
|
|
392
|
+
if (name === "index" || name === "template") {
|
|
393
|
+
name = id.slice(id.lastIndexOf(import_path.default.sep, lastSepIndex - 1) + 1, lastSepIndex);
|
|
394
|
+
}
|
|
395
|
+
return `${name}_${import_crypto.default.createHash("SHA1").update(id).digest("base64").replace(/[/+]/g, "-").slice(0, 4)}`;
|
|
396
|
+
}
|
|
397
|
+
function fileNameToURL(fileName, root) {
|
|
398
|
+
const relativeURL = import_path.default.posix.relative((0, import_url.pathToFileURL)(root).pathname, (0, import_url.pathToFileURL)(fileName).pathname);
|
|
399
|
+
if (relativeURL[0] === ".") {
|
|
400
|
+
throw new Error("@marko/vite: Entry templates must exist under the current root directory.");
|
|
401
|
+
}
|
|
402
|
+
return `/${relativeURL}`;
|
|
403
|
+
}
|
|
404
|
+
function getBasenameWithoutExt(file) {
|
|
405
|
+
const baseStart = file.lastIndexOf(import_path.default.sep) + 1;
|
|
406
|
+
const extStart = file.indexOf(".", baseStart + 1);
|
|
407
|
+
return file.slice(baseStart, extStart);
|
|
408
|
+
}
|
|
409
|
+
function isEmpty(obj) {
|
|
410
|
+
for (const _ in obj) {
|
|
411
|
+
return false;
|
|
412
|
+
}
|
|
413
|
+
return true;
|
|
414
|
+
}
|
|
415
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
416
|
+
0 && (module.exports = {});
|