@marko/vite 2.0.0 → 2.1.1

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 (50) hide show
  1. package/{components → dist/components}/vite-watch.marko +0 -0
  2. package/{components → dist/components}/vite.marko +0 -0
  3. package/dist/{cjs/index.d.ts → index.d.ts} +0 -0
  4. package/dist/index.js +415 -0
  5. package/dist/index.mjs +410 -0
  6. package/dist/{cjs/manifest-generator.d.ts → manifest-generator.d.ts} +0 -0
  7. package/dist/manifest-generator.js +88 -0
  8. package/dist/manifest-generator.mjs +60 -0
  9. package/dist/{cjs/render-assets-transform.d.ts → render-assets-transform.d.ts} +0 -0
  10. package/dist/render-assets-transform.js +21 -0
  11. package/dist/render-assets-transform.mjs +12 -0
  12. package/dist/{cjs/serializer.d.ts → serializer.d.ts} +0 -0
  13. package/dist/serializer.js +103 -0
  14. package/dist/serializer.mjs +78 -0
  15. package/dist/{cjs/server-entry-template.d.ts → server-entry-template.d.ts} +0 -0
  16. package/dist/server-entry-template.js +45 -0
  17. package/dist/server-entry-template.mjs +20 -0
  18. package/package.json +44 -42
  19. package/CHANGELOG.md +0 -72
  20. package/dist/cjs/esbuild-plugin.d.ts +0 -0
  21. package/dist/cjs/esbuild-plugin.js +0 -2
  22. package/dist/cjs/esbuild-plugin.js.map +0 -1
  23. package/dist/cjs/index.js +0 -417
  24. package/dist/cjs/index.js.map +0 -1
  25. package/dist/cjs/manifest-generator.js +0 -63
  26. package/dist/cjs/manifest-generator.js.map +0 -1
  27. package/dist/cjs/render-assets-transform.js +0 -12
  28. package/dist/cjs/render-assets-transform.js.map +0 -1
  29. package/dist/cjs/serializer.js +0 -81
  30. package/dist/cjs/serializer.js.map +0 -1
  31. package/dist/cjs/server-entry-template.js +0 -22
  32. package/dist/cjs/server-entry-template.js.map +0 -1
  33. package/dist/esm/esbuild-plugin.d.ts +0 -0
  34. package/dist/esm/esbuild-plugin.js +0 -2
  35. package/dist/esm/esbuild-plugin.js.map +0 -1
  36. package/dist/esm/index.d.ts +0 -10
  37. package/dist/esm/index.js +0 -413
  38. package/dist/esm/index.js.map +0 -1
  39. package/dist/esm/manifest-generator.d.ts +0 -11
  40. package/dist/esm/manifest-generator.js +0 -57
  41. package/dist/esm/manifest-generator.js.map +0 -1
  42. package/dist/esm/render-assets-transform.d.ts +0 -3
  43. package/dist/esm/render-assets-transform.js +0 -10
  44. package/dist/esm/render-assets-transform.js.map +0 -1
  45. package/dist/esm/serializer.d.ts +0 -2
  46. package/dist/esm/serializer.js +0 -78
  47. package/dist/esm/serializer.js.map +0 -1
  48. package/dist/esm/server-entry-template.d.ts +0 -6
  49. package/dist/esm/server-entry-template.js +0 -19
  50. package/dist/esm/server-entry-template.js.map +0 -1
@@ -1,10 +0,0 @@
1
- import * as vite from "vite";
2
- import type * as Compiler from "@marko/compiler";
3
- export interface Options {
4
- linked?: boolean;
5
- compiler?: string;
6
- runtimeId?: string;
7
- translator?: string;
8
- babelConfig?: Compiler.Config["babelConfig"];
9
- }
10
- export default function markoPlugin(opts?: Options): vite.Plugin[];
package/dist/esm/index.js DELETED
@@ -1,413 +0,0 @@
1
- import os from "os";
2
- import fs from "fs";
3
- import path from "path";
4
- import crypto from "crypto";
5
- import { pathToFileURL } from "url";
6
- import anyMatch from "anymatch";
7
- import getServerEntryTemplate from "./server-entry-template";
8
- import { generateInputDoc, generateDocManifest, } from "./manifest-generator";
9
- const virtualFiles = new Map();
10
- const defaultCompiler = require.resolve("@marko/compiler");
11
- const queryReg = /\?marko-.+$/;
12
- const browserEntryQuery = "?marko-browser-entry";
13
- const serverEntryQuery = "?marko-server-entry";
14
- const virtualFileQuery = "?marko-virtual";
15
- const markoExt = ".marko";
16
- const htmlExt = ".html";
17
- const resolveOpts = { skipSelf: true };
18
- let tempDir;
19
- export default function markoPlugin(opts = {}) {
20
- var _a;
21
- // eslint-disable-next-line @typescript-eslint/no-var-requires
22
- const compiler = require(opts.compiler || defaultCompiler);
23
- const { runtimeId, linked = true } = opts;
24
- const baseConfig = {
25
- runtimeId,
26
- sourceMaps: true,
27
- writeVersionComment: false,
28
- cache: new Map(),
29
- babelConfig: {
30
- ...opts.babelConfig,
31
- caller: {
32
- name: "@marko/vite",
33
- supportsStaticESM: true,
34
- supportsDynamicImport: true,
35
- supportsTopLevelAwait: true,
36
- supportsExportNamespaceFrom: true,
37
- ...(_a = opts.babelConfig) === null || _a === void 0 ? void 0 : _a.caller,
38
- },
39
- },
40
- };
41
- const ssrConfig = {
42
- ...baseConfig,
43
- output: "html",
44
- };
45
- const domConfig = {
46
- ...baseConfig,
47
- resolveVirtualDependency(from, dep) {
48
- const query = `${virtualFileQuery}&id=${dep.virtualPath}`;
49
- const id = from + query;
50
- if (devServer) {
51
- const prev = virtualFiles.get(id);
52
- if (prev && prev.code !== dep.code) {
53
- devServer.moduleGraph.invalidateModule(devServer.moduleGraph.getModuleById(id));
54
- }
55
- }
56
- virtualFiles.set(id, dep);
57
- return `./${path.basename(from) + query}`;
58
- },
59
- output: "dom",
60
- };
61
- const hydrateConfig = {
62
- ...domConfig,
63
- output: "hydrate",
64
- };
65
- let root;
66
- let isBuild = false;
67
- let isSSRBuild = false;
68
- let devServer;
69
- let registeredTag = false;
70
- let serverManifest;
71
- const transformWatchFiles = new Map();
72
- const transformOptionalFiles = new Map();
73
- return [
74
- {
75
- name: "marko-vite:pre",
76
- enforce: "pre",
77
- async config(config, env) {
78
- var _a, _b, _c, _d, _e;
79
- var _f;
80
- root = config.root || process.cwd();
81
- isBuild = env.command === "build";
82
- isSSRBuild = isBuild && linked && Boolean(config.build.ssr);
83
- if (!registeredTag) {
84
- // Here we inject either the watchMode vite tag, or the build one.
85
- registeredTag = path.resolve(__dirname.slice(0, __dirname.lastIndexOf("vite") + 4), "components", isBuild ? "vite.marko" : "vite-watch.marko");
86
- compiler.taglib.register("@marko/vite", {
87
- "<_vite>": {
88
- template: registeredTag,
89
- },
90
- "<head>": {
91
- transformer: require.resolve("./render-assets-transform"),
92
- },
93
- "<body>": {
94
- transformer: require.resolve("./render-assets-transform"),
95
- },
96
- });
97
- }
98
- if (!isBuild) {
99
- const lookup = compiler.taglib.buildLookup(root);
100
- const domRuntimeDeps = compiler.getRuntimeEntryFiles("dom", opts.translator);
101
- const htmlRuntimeDeps = compiler.getRuntimeEntryFiles("html", opts.translator);
102
- const taglibDeps = [];
103
- for (const name in lookup.taglibsById) {
104
- const taglib = lookup.taglibsById[name];
105
- if (/[\\/]node_modules[\\/](?!@marko[\\/])/.test(taglib.dirname)) {
106
- for (const tagName in taglib.tags) {
107
- const tag = taglib.tags[tagName];
108
- const entry = tag.template || tag.renderer;
109
- if (entry) {
110
- taglibDeps.push(entry.replace(/^.*?[\\/]node_modules[\\/]/, ""));
111
- }
112
- }
113
- }
114
- }
115
- const domDeps = Array.from(new Set(domRuntimeDeps.concat(taglibDeps)));
116
- const serverDeps = Array.from(new Set(htmlRuntimeDeps.concat(taglibDeps)));
117
- const optimizeDeps = ((_a = config.optimizeDeps) !== null && _a !== void 0 ? _a : (config.optimizeDeps = {}));
118
- (_b = optimizeDeps.include) !== null && _b !== void 0 ? _b : (optimizeDeps.include = []);
119
- optimizeDeps.include = optimizeDeps.include.concat(domDeps.filter((dep) => path.extname(dep) !== markoExt));
120
- (_c = optimizeDeps.exclude) !== null && _c !== void 0 ? _c : (optimizeDeps.exclude = []);
121
- optimizeDeps.exclude = optimizeDeps.exclude.concat(domDeps.filter((dep) => path.extname(dep) === markoExt));
122
- const ssr = ((_d = (_f = config).ssr) !== null && _d !== void 0 ? _d : (_f.ssr = {}));
123
- (_e = ssr.external) !== null && _e !== void 0 ? _e : (ssr.external = []);
124
- ssr.external = ssr.external.concat(serverDeps);
125
- // Vite cannot handle commonjs modules, which many Marko component libraries
126
- // use in conjunction with the `.marko` files. To support this
127
- // we tell Vite to ignore all `.marko` files in node_modules for the server.
128
- // and instead use the require hook.
129
- (await import("@marko/compiler/register")).default({
130
- ...ssrConfig,
131
- sourceMaps: "inline",
132
- modules: "cjs",
133
- });
134
- }
135
- },
136
- configureServer(_server) {
137
- ssrConfig.hot = domConfig.hot = true;
138
- devServer = _server;
139
- devServer.watcher.on("all", (type, filename) => {
140
- for (const [id, files] of transformWatchFiles) {
141
- if (anyMatch(files, filename)) {
142
- devServer.watcher.emit("change", id);
143
- }
144
- }
145
- if (type === "add" || type === "unlink") {
146
- let clearedCache = false;
147
- for (const [id, files] of transformOptionalFiles) {
148
- if (anyMatch(files, filename)) {
149
- if (!clearedCache) {
150
- baseConfig.cache.clear();
151
- clearedCache = true;
152
- }
153
- devServer.watcher.emit("change", id);
154
- }
155
- }
156
- }
157
- });
158
- },
159
- async buildStart(inputOptions) {
160
- if (isBuild && linked && !isSSRBuild) {
161
- const serverMetaFile = await getServerManifestFile(root);
162
- this.addWatchFile(serverMetaFile);
163
- try {
164
- serverManifest = JSON.parse(await fs.promises.readFile(serverMetaFile, "utf-8"));
165
- inputOptions.input = toHTMLEntries(root, serverManifest.entries);
166
- }
167
- catch (err) {
168
- this.error(`You must run the "ssr" build before the "browser" build.`);
169
- }
170
- if (isEmpty(inputOptions.input)) {
171
- this.error("No Marko files were found when compiling the server.");
172
- }
173
- }
174
- },
175
- async resolveId(importee, importer, _importOpts, ssr) {
176
- const importeeIsAbsolute = path.isAbsolute(importee);
177
- if (!importeeIsAbsolute || importee.startsWith(root)) {
178
- let importeeQuery = getMarkoQuery(importee);
179
- if (importeeQuery) {
180
- importee = importee.slice(0, -importeeQuery.length);
181
- }
182
- else if (ssr &&
183
- linked &&
184
- importer &&
185
- isMarkoFile(importee) &&
186
- !isMarkoFile(importer.replace(queryReg, ""))) {
187
- importeeQuery = serverEntryQuery;
188
- }
189
- else if (virtualFiles.has(importee)) {
190
- return importee;
191
- }
192
- if (importeeQuery) {
193
- const resolved = importeeIsAbsolute
194
- ? { id: importee }
195
- : importee[0] === "."
196
- ? {
197
- id: importer
198
- ? path.resolve(importer, "..", importee)
199
- : path.resolve(root, importee),
200
- }
201
- : await this.resolve(importee, importer, resolveOpts);
202
- if (resolved) {
203
- resolved.id += importeeQuery;
204
- }
205
- return resolved;
206
- }
207
- }
208
- return null;
209
- },
210
- async load(id) {
211
- const query = getMarkoQuery(id);
212
- if (query) {
213
- if (!id.startsWith(root)) {
214
- id = path.join(root, id);
215
- }
216
- switch (query) {
217
- case serverEntryQuery: {
218
- const fileName = id.slice(0, -serverEntryQuery.length);
219
- let entryData;
220
- if (isBuild) {
221
- const relativeFileName = path.relative(root, fileName);
222
- const entryId = toEntryId(relativeFileName);
223
- serverManifest !== null && serverManifest !== void 0 ? serverManifest : (serverManifest = {
224
- entries: {},
225
- chunksNeedingAssets: [],
226
- });
227
- serverManifest.entries[entryId] = relativeFileName;
228
- entryData = JSON.stringify(entryId);
229
- }
230
- else {
231
- entryData = JSON.stringify(await generateDocManifest(await devServer.transformIndexHtml("/", generateInputDoc(fileNameToURL(fileName, root) + browserEntryQuery))));
232
- }
233
- return getServerEntryTemplate({
234
- fileName,
235
- entryData,
236
- runtimeId,
237
- });
238
- }
239
- case browserEntryQuery:
240
- return fs.promises.readFile(id.slice(0, -browserEntryQuery.length), "utf-8");
241
- }
242
- }
243
- return virtualFiles.get(id) || null;
244
- },
245
- async transform(source, id, ssr) {
246
- const query = getMarkoQuery(id);
247
- if (query && !query.startsWith(virtualFileQuery)) {
248
- id = id.slice(0, -query.length);
249
- if (query === serverEntryQuery) {
250
- id = `${id.slice(0, -markoExt.length)}.entry.marko`;
251
- }
252
- }
253
- if (!isMarkoFile(id)) {
254
- return null;
255
- }
256
- const compiled = await compiler.compile(source, id, ssr
257
- ? ssrConfig
258
- : query === browserEntryQuery
259
- ? hydrateConfig
260
- : domConfig);
261
- const { map, meta } = compiled;
262
- let { code } = compiled;
263
- if (query !== browserEntryQuery && devServer) {
264
- code += `\nif (import.meta.hot) import.meta.hot.accept();`;
265
- }
266
- if (devServer) {
267
- const templateName = getBasenameWithoutExt(id);
268
- const optionalFilePrefix = path.dirname(id) +
269
- path.sep +
270
- (templateName === "index" ? "" : `${templateName}.`);
271
- const optionalFiles = [
272
- `${optionalFilePrefix}style.*`,
273
- `${optionalFilePrefix}component.*`,
274
- `${optionalFilePrefix}component-browser.*`,
275
- `${optionalFilePrefix}marko-tag.json`,
276
- ];
277
- for (const file of optionalFiles) {
278
- this.addWatchFile(file);
279
- }
280
- for (const file of meta.watchFiles) {
281
- this.addWatchFile(file);
282
- }
283
- transformOptionalFiles.set(id, optionalFiles);
284
- transformWatchFiles.set(id, meta.watchFiles);
285
- }
286
- return { code, map };
287
- },
288
- },
289
- {
290
- name: "marko-vite:post",
291
- apply: "build",
292
- enforce: "post",
293
- async generateBundle(outputOptions, bundle, isWrite) {
294
- if (!linked) {
295
- return;
296
- }
297
- if (!isWrite) {
298
- this.error(`Linked builds are currently only supported when in "write" mode.`);
299
- }
300
- if (!serverManifest) {
301
- this.error("No Marko files were found when bundling the server in linked mode.");
302
- }
303
- if (isSSRBuild) {
304
- const dir = outputOptions.dir
305
- ? path.resolve(outputOptions.dir)
306
- : path.resolve(outputOptions.file, "..");
307
- for (const fileName in bundle) {
308
- const chunk = bundle[fileName];
309
- if (chunk.type === "chunk") {
310
- for (const id in chunk.modules) {
311
- if (id === registeredTag) {
312
- serverManifest.chunksNeedingAssets.push(path.resolve(dir, fileName));
313
- break;
314
- }
315
- }
316
- }
317
- }
318
- await fs.promises.writeFile(await getServerManifestFile(root), JSON.stringify(serverManifest));
319
- }
320
- else {
321
- const browserManifest = {};
322
- for (const entryId in serverManifest.entries) {
323
- const fileName = serverManifest.entries[entryId];
324
- const chunkId = fileName + htmlExt;
325
- const chunk = bundle[chunkId];
326
- if ((chunk === null || chunk === void 0 ? void 0 : chunk.type) === "asset") {
327
- browserManifest[entryId] = await generateDocManifest(chunk.source.toString());
328
- delete bundle[chunkId];
329
- }
330
- else {
331
- this.error(`Marko template had unexpected output from vite, ${fileName}`);
332
- }
333
- }
334
- const manifestStr = `;var __MARKO_MANIFEST__=${JSON.stringify(browserManifest)};\n`;
335
- for (const fileName of serverManifest.chunksNeedingAssets) {
336
- await fs.promises.appendFile(fileName, manifestStr);
337
- }
338
- }
339
- },
340
- },
341
- ];
342
- }
343
- function getMarkoQuery(id) {
344
- var _a;
345
- return ((_a = queryReg.exec(id)) === null || _a === void 0 ? void 0 : _a[0]) || "";
346
- }
347
- function isMarkoFile(id) {
348
- return id.endsWith(markoExt);
349
- }
350
- function toHTMLEntries(root, serverEntries) {
351
- const result = [];
352
- for (const id in serverEntries) {
353
- const markoFile = path.join(root, serverEntries[id]);
354
- const htmlFile = markoFile + htmlExt;
355
- virtualFiles.set(htmlFile, {
356
- code: generateInputDoc(markoFile + browserEntryQuery),
357
- });
358
- result.push(htmlFile);
359
- }
360
- return result;
361
- }
362
- async function getServerManifestFile(root) {
363
- return path.join(await getTempDir(root), "manifest.json");
364
- }
365
- function getTempDir(root) {
366
- return (tempDir ||
367
- (tempDir = (async () => {
368
- const dir = path.join(os.tmpdir(), `marko-vite-${crypto.createHash("SHA1").update(root).digest("hex")}`);
369
- try {
370
- const stat = await fs.promises.stat(dir);
371
- if (stat.isDirectory()) {
372
- return dir;
373
- }
374
- }
375
- catch (_a) {
376
- await fs.promises.mkdir(dir);
377
- return dir;
378
- }
379
- throw new Error("Unable to create temp directory");
380
- })()));
381
- }
382
- function toEntryId(id) {
383
- const lastSepIndex = id.lastIndexOf(path.sep);
384
- let name = id.slice(lastSepIndex + 1, id.indexOf(".", lastSepIndex));
385
- if (name === "index" || name === "template") {
386
- name = id.slice(id.lastIndexOf(path.sep, lastSepIndex - 1) + 1, lastSepIndex);
387
- }
388
- return `${name}_${crypto
389
- .createHash("SHA1")
390
- .update(id)
391
- .digest("base64")
392
- .replace(/[/+]/g, "-")
393
- .slice(0, 4)}`;
394
- }
395
- function fileNameToURL(fileName, root) {
396
- const relativeURL = path.posix.relative(pathToFileURL(root).pathname, pathToFileURL(fileName).pathname);
397
- if (relativeURL[0] === ".") {
398
- throw new Error("@marko/vite: Entry templates must exist under the current root directory.");
399
- }
400
- return `/${relativeURL}`;
401
- }
402
- function getBasenameWithoutExt(file) {
403
- const baseStart = file.lastIndexOf(path.sep) + 1;
404
- const extStart = file.indexOf(".", baseStart + 1);
405
- return file.slice(baseStart, extStart);
406
- }
407
- function isEmpty(obj) {
408
- for (const _ in obj) {
409
- return false;
410
- }
411
- return true;
412
- }
413
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import serialize from "./serializer";
2
- declare type SerializedOrNull = null | ReturnType<typeof serialize>;
3
- export interface DocManifest {
4
- "head-prepend": SerializedOrNull;
5
- head: SerializedOrNull;
6
- "body-prepend": SerializedOrNull;
7
- body: SerializedOrNull;
8
- }
9
- export declare function generateDocManifest(rawHtml: string): Promise<DocManifest>;
10
- export declare function generateInputDoc(entry: string): string;
11
- export {};
@@ -1,57 +0,0 @@
1
- import { Parser } from "htmlparser2";
2
- import { ElementType } from "domelementtype";
3
- import { DomHandler } from "domhandler";
4
- import serialize from "./serializer";
5
- const MARKER_COMMENT = "MARKO_VITE";
6
- export function generateDocManifest(rawHtml) {
7
- return new Promise((resolve, reject) => {
8
- const parser = new Parser(new DomHandler(function (err, dom) {
9
- if (err) {
10
- return reject(err);
11
- }
12
- const htmlChildren = dom.find(isElement).childNodes;
13
- const headPrepend = [];
14
- const head = [];
15
- const bodyPrepend = [];
16
- const body = [];
17
- splitNodesByMarker(htmlChildren.find((node) => isElement(node) && node.tagName === "head").childNodes, headPrepend, head);
18
- splitNodesByMarker(htmlChildren.find((node) => isElement(node) && node.tagName === "body").childNodes, bodyPrepend, body);
19
- resolve({
20
- "head-prepend": serializeOrNull(headPrepend),
21
- head: serializeOrNull(head),
22
- "body-prepend": serializeOrNull(bodyPrepend),
23
- body: serializeOrNull(body),
24
- });
25
- }));
26
- parser.write(rawHtml);
27
- parser.end();
28
- });
29
- }
30
- export function generateInputDoc(entry) {
31
- return `<!DOCTYPE html><html><head><!--${MARKER_COMMENT}--></head><body><!--${MARKER_COMMENT}--><script type="module" src=${JSON.stringify(entry)}></script></body></html>`;
32
- }
33
- function serializeOrNull(nodes) {
34
- const result = serialize(nodes);
35
- if (result.length) {
36
- return result;
37
- }
38
- return null;
39
- }
40
- function splitNodesByMarker(nodes, before, after) {
41
- for (let i = 0; i < nodes.length; i++) {
42
- let node = nodes[i];
43
- if (node.data === MARKER_COMMENT) {
44
- i++;
45
- for (; i < nodes.length; i++) {
46
- node = nodes[i];
47
- after.push(node);
48
- }
49
- break;
50
- }
51
- before.push(node);
52
- }
53
- }
54
- function isElement(node) {
55
- return node.type === ElementType.Tag;
56
- }
57
- //# sourceMappingURL=manifest-generator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manifest-generator.js","sourceRoot":"","sources":["../../src/manifest-generator.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { types } from "@marko/compiler";
2
- declare const _default: (tag: types.NodePath<types.MarkoTag>, t: typeof types) => void;
3
- export default _default;
@@ -1,10 +0,0 @@
1
- export default (tag, t) => {
2
- const body = tag.get("body");
3
- const tagName = tag.get("name").node.value;
4
- body.unshiftContainer("body", renderAssetsCall(t, `${tagName}-prepend`));
5
- body.pushContainer("body", renderAssetsCall(t, tagName));
6
- };
7
- function renderAssetsCall(t, slot) {
8
- return t.callExpression(t.memberExpression(t.memberExpression(t.identifier("out"), t.identifier("global")), t.identifier("___viteRenderAssets")), [t.identifier("out"), t.stringLiteral(slot)]);
9
- }
10
- //# sourceMappingURL=render-assets-transform.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"render-assets-transform.js","sourceRoot":"","sources":["../../src/render-assets-transform.ts"],"names":[],"mappings":"AACA,eAAe,CAAC,GAAmC,EAAE,CAAe,EAAE,EAAE;IACtE,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAA4B,CAAC,KAAK,CAAC;IACpE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,EAAE,GAAG,OAAO,UAAU,CAAC,CAAC,CAAC;IACzE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3D,CAAC,CAAC;AAEF,SAAS,gBAAgB,CAAC,CAAe,EAAE,IAAY;IACrD,OAAO,CAAC,CAAC,cAAc,CACrB,CAAC,CAAC,gBAAgB,CAChB,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAC/D,CAAC,CAAC,UAAU,CAAC,qBAAqB,CAAC,CACpC,EACD,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAC7C,CAAC;AACJ,CAAC"}
@@ -1,2 +0,0 @@
1
- import type { Node } from "domhandler";
2
- export default function serialize(nodes: Node[], parts?: string[]): string[];
@@ -1,78 +0,0 @@
1
- import { ElementType } from "domelementtype";
2
- const voidElements = new Set([
3
- "area",
4
- "base",
5
- "br",
6
- "col",
7
- "embed",
8
- "hr",
9
- "img",
10
- "input",
11
- "link",
12
- "meta",
13
- "param",
14
- "source",
15
- "track",
16
- "wbr",
17
- ]);
18
- export default function serialize(nodes, parts) {
19
- let curString = parts ? parts.pop() : "";
20
- parts !== null && parts !== void 0 ? parts : (parts = []);
21
- for (const node of nodes) {
22
- switch (node.type) {
23
- case ElementType.Tag:
24
- case ElementType.Style:
25
- case ElementType.Script: {
26
- const tag = node;
27
- const { name } = tag;
28
- curString += `<${name}`;
29
- switch (tag.tagName) {
30
- case "script":
31
- parts.push(curString);
32
- curString = "";
33
- break;
34
- case "style":
35
- parts.push(curString);
36
- curString = "";
37
- break;
38
- case "link":
39
- if (tag.attribs.rel === "stylesheet") {
40
- parts.push(curString);
41
- curString = "";
42
- }
43
- break;
44
- }
45
- for (const attr of tag.attributes) {
46
- curString += ` ${attr.value === ""
47
- ? attr.name
48
- : `${attr.name}="${attr.value.replace(/"/g, "&#39;")}"`}`;
49
- }
50
- curString += ">";
51
- if (tag.children.length) {
52
- parts.push(curString);
53
- serialize(tag.children, parts);
54
- curString = parts.pop();
55
- }
56
- if (!voidElements.has(name)) {
57
- curString += `</${name}>`;
58
- }
59
- break;
60
- }
61
- case ElementType.Text: {
62
- const text = node.data;
63
- if (!/^\s*$/.test(text)) {
64
- curString += text;
65
- }
66
- break;
67
- }
68
- case ElementType.Comment:
69
- curString += `<!--${node.data}-->`;
70
- break;
71
- }
72
- }
73
- if (curString) {
74
- parts.push(curString);
75
- }
76
- return parts;
77
- }
78
- //# sourceMappingURL=serializer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../src/serializer.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- declare const _default: (opts: {
2
- fileName: string;
3
- entryData: string;
4
- runtimeId?: string;
5
- }) => Promise<string>;
6
- export default _default;