@marko/vite 2.2.5 → 2.2.8

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/dist/index.js CHANGED
@@ -55,6 +55,7 @@ var import_url = require("url");
55
55
  var import_server_entry_template = __toESM(require("./server-entry-template"));
56
56
  var import_manifest_generator = require("./manifest-generator");
57
57
  const import_meta = {};
58
+ const normalizePath = import_path.default.sep === "\\" ? (id) => id.replace(/\\/g, "/") : (id) => id;
58
59
  const virtualFiles = /* @__PURE__ */ new Map();
59
60
  const queryReg = /\?marko-.+$/;
60
61
  const browserEntryQuery = "?marko-browser-entry";
@@ -89,8 +90,8 @@ function markoPlugin(opts = {}) {
89
90
  });
90
91
  const domConfig = __spreadProps(__spreadValues({}, baseConfig), {
91
92
  resolveVirtualDependency(from, dep) {
92
- const query = `${virtualFileQuery}&id=${dep.virtualPath}`;
93
- const id = from + query;
93
+ const query = `${virtualFileQuery}&id=${encodeURIComponent(dep.virtualPath)}`;
94
+ const id = normalizePath(from) + query;
94
95
  if (devServer) {
95
96
  const prev = virtualFiles.get(id);
96
97
  if (prev && prev.code !== dep.code) {
@@ -106,6 +107,7 @@ function markoPlugin(opts = {}) {
106
107
  output: "hydrate"
107
108
  });
108
109
  let root;
110
+ let devEntryFile;
109
111
  let isBuild = false;
110
112
  let isSSRBuild = false;
111
113
  let devServer;
@@ -119,12 +121,13 @@ function markoPlugin(opts = {}) {
119
121
  enforce: "pre",
120
122
  async config(config, env) {
121
123
  compiler ?? (compiler = await import(opts.compiler || "@marko/compiler"));
122
- root = config.root || process.cwd();
124
+ root = normalizePath(config.root || process.cwd());
125
+ devEntryFile = import_path.default.join(root, "index.html");
123
126
  isBuild = env.command === "build";
124
127
  isSSRBuild = isBuild && linked && Boolean(config.build.ssr);
125
128
  if (!registeredTag) {
126
129
  const transformer = import_path.default.resolve(thisFile, "../render-assets-transform");
127
- registeredTag = import_path.default.resolve(thisFile, "../components", isBuild ? "vite.marko" : "vite-watch.marko");
130
+ registeredTag = normalizePath(import_path.default.resolve(thisFile, "../components", isBuild ? "vite.marko" : "vite-watch.marko"));
128
131
  compiler.taglib.register("@marko/vite", {
129
132
  "<_vite>": { template: registeredTag },
130
133
  "<head>": { transformer },
@@ -210,14 +213,14 @@ function markoPlugin(opts = {}) {
210
213
  let importeeQuery = getMarkoQuery(importee);
211
214
  if (importeeQuery) {
212
215
  importee = importee.slice(0, -importeeQuery.length);
213
- } else if (ssr && linked && importer && isMarkoFile(importee) && !isMarkoFile(importer.replace(queryReg, ""))) {
216
+ } else if (ssr && linked && importer && importer !== devEntryFile && isMarkoFile(importee) && !isMarkoFile(importer.replace(queryReg, ""))) {
214
217
  importeeQuery = serverEntryQuery;
215
218
  } else if (!ssr && isBuild && importer && isMarkoFile(importee) && ((_a2 = this.getModuleInfo(importer)) == null ? void 0 : _a2.isEntry)) {
216
219
  importeeQuery = browserEntryQuery;
217
220
  }
218
221
  if (importeeQuery) {
219
222
  const resolved = importee[0] === "." ? {
220
- id: importer ? import_path.default.resolve(importer, "..", importee) : import_path.default.resolve(root, importee)
223
+ id: normalizePath(importer ? import_path.default.resolve(importer, "..", importee) : import_path.default.resolve(root, importee))
221
224
  } : await this.resolve(importee, importer, resolveOpts);
222
225
  if (resolved) {
223
226
  resolved.id += importeeQuery;
@@ -227,36 +230,30 @@ function markoPlugin(opts = {}) {
227
230
  return null;
228
231
  },
229
232
  async load(id) {
230
- const query = getMarkoQuery(id);
231
- if (query) {
232
- if (!id.startsWith(root)) {
233
- id = import_path.default.join(root, id);
234
- }
235
- switch (query) {
236
- case serverEntryQuery: {
237
- const fileName = id.slice(0, -serverEntryQuery.length);
238
- let entryData;
239
- if (isBuild) {
240
- const relativeFileName = import_path.default.relative(root, fileName);
241
- const entryId = toEntryId(relativeFileName);
242
- serverManifest ?? (serverManifest = {
243
- entries: {},
244
- chunksNeedingAssets: []
245
- });
246
- serverManifest.entries[entryId] = relativeFileName;
247
- entryData = JSON.stringify(entryId);
248
- } else {
249
- entryData = JSON.stringify(await (0, import_manifest_generator.generateDocManifest)(await devServer.transformIndexHtml("/", (0, import_manifest_generator.generateInputDoc)(fileNameToURL(fileName, root)))));
250
- }
251
- return (0, import_server_entry_template.default)({
252
- fileName,
253
- entryData,
254
- runtimeId
233
+ switch (getMarkoQuery(id)) {
234
+ case serverEntryQuery: {
235
+ const fileName = id.slice(0, -serverEntryQuery.length);
236
+ let entryData;
237
+ if (isBuild) {
238
+ const relativeFileName = import_path.default.posix.relative(root, fileName);
239
+ const entryId = toEntryId(relativeFileName);
240
+ serverManifest ?? (serverManifest = {
241
+ entries: {},
242
+ chunksNeedingAssets: []
255
243
  });
244
+ serverManifest.entries[entryId] = relativeFileName;
245
+ entryData = JSON.stringify(entryId);
246
+ } else {
247
+ entryData = JSON.stringify(await (0, import_manifest_generator.generateDocManifest)(await devServer.transformIndexHtml("/", (0, import_manifest_generator.generateInputDoc)(fileNameToURL(fileName, root)))));
256
248
  }
257
- case browserEntryQuery:
258
- return import_fs.default.promises.readFile(id.slice(0, -browserEntryQuery.length), "utf-8");
249
+ return (0, import_server_entry_template.default)({
250
+ fileName,
251
+ entryData,
252
+ runtimeId
253
+ });
259
254
  }
255
+ case browserEntryQuery:
256
+ return import_fs.default.promises.readFile(id.slice(0, -browserEntryQuery.length), "utf-8");
260
257
  }
261
258
  return virtualFiles.get(id) || null;
262
259
  },
@@ -362,7 +359,7 @@ function isMarkoFile(id) {
362
359
  function toHTMLEntries(root, serverEntries) {
363
360
  const result = [];
364
361
  for (const id in serverEntries) {
365
- const markoFile = import_path.default.join(root, serverEntries[id]);
362
+ const markoFile = import_path.default.posix.join(root, serverEntries[id]);
366
363
  const htmlFile = markoFile + htmlExt;
367
364
  virtualFiles.set(htmlFile, {
368
365
  code: (0, import_manifest_generator.generateInputDoc)(markoFile)
package/dist/index.mjs CHANGED
@@ -18,6 +18,7 @@ import path from "path";
18
18
  import crypto from "crypto";
19
19
  import anyMatch from "anymatch";
20
20
  import { pathToFileURL, fileURLToPath } from "url";
21
+ var normalizePath = path.sep === "\\" ? (id) => id.replace(/\\/g, "/") : (id) => id;
21
22
  var virtualFiles = /* @__PURE__ */ new Map();
22
23
  var queryReg = /\?marko-.+$/;
23
24
  var browserEntryQuery = "?marko-browser-entry";
@@ -52,8 +53,8 @@ function markoPlugin(opts = {}) {
52
53
  });
53
54
  const domConfig = __spreadProps(__spreadValues({}, baseConfig), {
54
55
  resolveVirtualDependency(from, dep) {
55
- const query = `${virtualFileQuery}&id=${dep.virtualPath}`;
56
- const id = from + query;
56
+ const query = `${virtualFileQuery}&id=${encodeURIComponent(dep.virtualPath)}`;
57
+ const id = normalizePath(from) + query;
57
58
  if (devServer) {
58
59
  const prev = virtualFiles.get(id);
59
60
  if (prev && prev.code !== dep.code) {
@@ -69,6 +70,7 @@ function markoPlugin(opts = {}) {
69
70
  output: "hydrate"
70
71
  });
71
72
  let root;
73
+ let devEntryFile;
72
74
  let isBuild = false;
73
75
  let isSSRBuild = false;
74
76
  let devServer;
@@ -82,12 +84,13 @@ function markoPlugin(opts = {}) {
82
84
  enforce: "pre",
83
85
  async config(config, env) {
84
86
  compiler ?? (compiler = await import(opts.compiler || "@marko/compiler"));
85
- root = config.root || process.cwd();
87
+ root = normalizePath(config.root || process.cwd());
88
+ devEntryFile = path.join(root, "index.html");
86
89
  isBuild = env.command === "build";
87
90
  isSSRBuild = isBuild && linked && Boolean(config.build.ssr);
88
91
  if (!registeredTag) {
89
92
  const transformer = path.resolve(thisFile, "../render-assets-transform");
90
- registeredTag = path.resolve(thisFile, "../components", isBuild ? "vite.marko" : "vite-watch.marko");
93
+ registeredTag = normalizePath(path.resolve(thisFile, "../components", isBuild ? "vite.marko" : "vite-watch.marko"));
91
94
  compiler.taglib.register("@marko/vite", {
92
95
  "<_vite>": { template: registeredTag },
93
96
  "<head>": { transformer },
@@ -173,14 +176,14 @@ function markoPlugin(opts = {}) {
173
176
  let importeeQuery = getMarkoQuery(importee);
174
177
  if (importeeQuery) {
175
178
  importee = importee.slice(0, -importeeQuery.length);
176
- } else if (ssr && linked && importer && isMarkoFile(importee) && !isMarkoFile(importer.replace(queryReg, ""))) {
179
+ } else if (ssr && linked && importer && importer !== devEntryFile && isMarkoFile(importee) && !isMarkoFile(importer.replace(queryReg, ""))) {
177
180
  importeeQuery = serverEntryQuery;
178
181
  } else if (!ssr && isBuild && importer && isMarkoFile(importee) && ((_a2 = this.getModuleInfo(importer)) == null ? void 0 : _a2.isEntry)) {
179
182
  importeeQuery = browserEntryQuery;
180
183
  }
181
184
  if (importeeQuery) {
182
185
  const resolved = importee[0] === "." ? {
183
- id: importer ? path.resolve(importer, "..", importee) : path.resolve(root, importee)
186
+ id: normalizePath(importer ? path.resolve(importer, "..", importee) : path.resolve(root, importee))
184
187
  } : await this.resolve(importee, importer, resolveOpts);
185
188
  if (resolved) {
186
189
  resolved.id += importeeQuery;
@@ -190,36 +193,30 @@ function markoPlugin(opts = {}) {
190
193
  return null;
191
194
  },
192
195
  async load(id) {
193
- const query = getMarkoQuery(id);
194
- if (query) {
195
- if (!id.startsWith(root)) {
196
- id = path.join(root, id);
197
- }
198
- switch (query) {
199
- case serverEntryQuery: {
200
- const fileName = id.slice(0, -serverEntryQuery.length);
201
- let entryData;
202
- if (isBuild) {
203
- const relativeFileName = path.relative(root, fileName);
204
- const entryId = toEntryId(relativeFileName);
205
- serverManifest ?? (serverManifest = {
206
- entries: {},
207
- chunksNeedingAssets: []
208
- });
209
- serverManifest.entries[entryId] = relativeFileName;
210
- entryData = JSON.stringify(entryId);
211
- } else {
212
- entryData = JSON.stringify(await generateDocManifest(await devServer.transformIndexHtml("/", generateInputDoc(fileNameToURL(fileName, root)))));
213
- }
214
- return server_entry_template_default({
215
- fileName,
216
- entryData,
217
- runtimeId
196
+ switch (getMarkoQuery(id)) {
197
+ case serverEntryQuery: {
198
+ const fileName = id.slice(0, -serverEntryQuery.length);
199
+ let entryData;
200
+ if (isBuild) {
201
+ const relativeFileName = path.posix.relative(root, fileName);
202
+ const entryId = toEntryId(relativeFileName);
203
+ serverManifest ?? (serverManifest = {
204
+ entries: {},
205
+ chunksNeedingAssets: []
218
206
  });
207
+ serverManifest.entries[entryId] = relativeFileName;
208
+ entryData = JSON.stringify(entryId);
209
+ } else {
210
+ entryData = JSON.stringify(await generateDocManifest(await devServer.transformIndexHtml("/", generateInputDoc(fileNameToURL(fileName, root)))));
219
211
  }
220
- case browserEntryQuery:
221
- return fs.promises.readFile(id.slice(0, -browserEntryQuery.length), "utf-8");
212
+ return server_entry_template_default({
213
+ fileName,
214
+ entryData,
215
+ runtimeId
216
+ });
222
217
  }
218
+ case browserEntryQuery:
219
+ return fs.promises.readFile(id.slice(0, -browserEntryQuery.length), "utf-8");
223
220
  }
224
221
  return virtualFiles.get(id) || null;
225
222
  },
@@ -325,7 +322,7 @@ function isMarkoFile(id) {
325
322
  function toHTMLEntries(root, serverEntries) {
326
323
  const result = [];
327
324
  for (const id in serverEntries) {
328
- const markoFile = path.join(root, serverEntries[id]);
325
+ const markoFile = path.posix.join(root, serverEntries[id]);
329
326
  const htmlFile = markoFile + htmlExt;
330
327
  virtualFiles.set(htmlFile, {
331
328
  code: generateInputDoc(markoFile)
@@ -31,7 +31,7 @@ var render_assets_transform_default = (tag, t) => {
31
31
  body.pushContainer("body", renderAssetsCall(t, tagName));
32
32
  };
33
33
  function renderAssetsCall(t, slot) {
34
- return t.callExpression(t.memberExpression(t.memberExpression(t.identifier("out"), t.identifier("global")), t.identifier("___viteRenderAssets")), [t.identifier("out"), t.stringLiteral(slot)]);
34
+ return t.expressionStatement(t.callExpression(t.memberExpression(t.memberExpression(t.identifier("out"), t.identifier("global")), t.identifier("___viteRenderAssets")), [t.identifier("out"), t.stringLiteral(slot)]));
35
35
  }
36
36
  module.exports = __toCommonJS(render_assets_transform_exports);
37
37
  // Annotate the CommonJS export names for ESM import in node:
@@ -8,7 +8,7 @@ var render_assets_transform_default = (tag, t) => {
8
8
  body.pushContainer("body", renderAssetsCall(t, tagName));
9
9
  };
10
10
  function renderAssetsCall(t, slot) {
11
- return t.callExpression(t.memberExpression(t.memberExpression(t.identifier("out"), t.identifier("global")), t.identifier("___viteRenderAssets")), [t.identifier("out"), t.stringLiteral(slot)]);
11
+ return t.expressionStatement(t.callExpression(t.memberExpression(t.memberExpression(t.identifier("out"), t.identifier("global")), t.identifier("___viteRenderAssets")), [t.identifier("out"), t.stringLiteral(slot)]));
12
12
  }
13
13
  export {
14
14
  render_assets_transform_default as default
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@marko/vite",
3
3
  "description": "A Marko plugin for Vite",
4
- "version": "2.2.5",
4
+ "version": "2.2.8",
5
5
  "author": "Dylan Piercey <dpiercey@ebay.com>",
6
6
  "bugs": "https://github.com/marko-js/vite/issues",
7
7
  "dependencies": {
@@ -11,29 +11,37 @@
11
11
  "htmlparser2": "^7.2.0"
12
12
  },
13
13
  "devDependencies": {
14
- "@commitlint/cli": "^16.0.1",
15
- "@commitlint/config-conventional": "^16.0.0",
16
- "@marko/compiler": "^5.17.6",
17
- "@types/mocha": "^9.0.0",
18
- "@types/node": "^17.0.6",
19
- "@typescript-eslint/eslint-plugin": "^5.8.1",
20
- "@typescript-eslint/parser": "^5.8.1",
21
- "esbuild": "^0.14.10",
22
- "esbuild-register": "^3.3.1",
23
- "eslint": "^8.6.0",
24
- "eslint-config-prettier": "^8.3.0",
25
- "fast-glob": "^3.2.7",
14
+ "@commitlint/cli": "^16.2.1",
15
+ "@commitlint/config-conventional": "^16.2.1",
16
+ "@marko/compiler": "^5.19.1",
17
+ "@marko/fixture-snapshots": "^2.1.6",
18
+ "@marko/testing-library": "^6.0.0",
19
+ "@types/jsdom": "^16.2.14",
20
+ "@types/mocha": "^9.1.0",
21
+ "@types/node": "^17.0.21",
22
+ "@types/serve-handler": "^6.1.1",
23
+ "@typescript-eslint/eslint-plugin": "^5.14.0",
24
+ "@typescript-eslint/parser": "^5.14.0",
25
+ "cross-env": "^7.0.3",
26
+ "esbuild": "^0.14.25",
27
+ "esbuild-register": "^3.3.2",
28
+ "eslint": "^8.10.0",
29
+ "eslint-config-prettier": "^8.5.0",
30
+ "fast-glob": "^3.2.11",
26
31
  "fixpack": "^4.0.0",
27
32
  "husky": "^7.0.4",
28
- "lint-staged": "^12.1.4",
29
- "marko": "^5.17.6",
30
- "mocha": "^9.1.3",
31
- "mocha-snap": "^4.2.1",
33
+ "jsdom": "^19.0.0",
34
+ "lint-staged": "^12.3.5",
35
+ "marko": "^5.19.0",
36
+ "mocha": "^9.2.1",
37
+ "mocha-snap": "^4.3.0",
32
38
  "nyc": "^15.1.0",
39
+ "playwright": "^1.19.2",
33
40
  "prettier": "^2.5.1",
34
- "semantic-release": "^18.0.1",
35
- "typescript": "^4.5.4",
36
- "vite": "^2.7.10"
41
+ "semantic-release": "^19.0.2",
42
+ "serve-handler": "^6.1.3",
43
+ "typescript": "^4.6.2",
44
+ "vite": "^2.8.6"
37
45
  },
38
46
  "exports": {
39
47
  ".": {
@@ -73,8 +81,8 @@
73
81
  "format": "npm run lint:eslint -- --fix && npm run lint:prettier -- --write && (fixpack || true)",
74
82
  "lint": "tsc -b && npm run lint:eslint && npm run lint:prettier -- -l && fixpack",
75
83
  "lint:eslint": "eslint -f visualstudio .",
76
- "lint:prettier": "prettier '**/*{.ts,.js,.json,.md,.yml,rc}'",
77
- "mocha": "NODE_ENV=test mocha 'src/**/__tests__/*.test.ts'",
84
+ "lint:prettier": "prettier \"./**/*{.ts,.js,.json,.md,.yml,rc}\"",
85
+ "mocha": "cross-env NODE_ENV=test mocha \"./src/**/__tests__/*.test.ts\"",
78
86
  "prepare": "husky install",
79
87
  "prepublishOnly": "npm run build",
80
88
  "release": "semantic-release",