@marko/compiler 5.39.20 → 5.39.22

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.
@@ -1,5 +1,4 @@
1
1
  "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.default = void 0;var _traverse = _interopRequireDefault(require("@babel/traverse"));
2
- var _crypto = require("crypto");
3
2
  var _path = _interopRequireDefault(require("path"));
4
3
 
5
4
  var t = _interopRequireWildcard(require("../babel-types"));
@@ -10,6 +9,7 @@ var _taglib = require("../taglib");
10
9
  var _config = _interopRequireDefault(require("../taglib/config"));
11
10
  var _buildCodeFrame = require("../util/build-code-frame");
12
11
  var _mergeErrors = _interopRequireDefault(require("../util/merge-errors"));
12
+ var _quickHash = require("../util/quick-hash");
13
13
  var _shouldOptimize = _interopRequireDefault(require("../util/should-optimize"));
14
14
  var _tryLoadTranslator = _interopRequireDefault(require("../util/try-load-translator"));
15
15
  var _file = require("./file");
@@ -159,10 +159,8 @@ function getMarkoFile(code, fileOpts, markoOpts) {
159
159
  const isMigrate = markoOpts.output === "migrate";
160
160
  const canCache = !(isSource || isMigrate);
161
161
  const id = (0, _tags.getTemplateId)(markoOpts, filename);
162
- const contentHash = canCache && (0, _crypto.createHash)("MD5").update(code).digest("hex");
163
- const cacheKey = canCache && (0, _crypto.createHash)("MD5").update(id).digest("hex");
164
-
165
- let cached = canCache && compileCache.get(cacheKey);
162
+ const contentHash = canCache && new _quickHash.Hash().update(code).digest();
163
+ let cached = canCache && compileCache.get(id);
166
164
 
167
165
  if (cached) {
168
166
  if (cached.contentHash !== contentHash) {
@@ -302,7 +300,7 @@ function getMarkoFile(code, fileOpts, markoOpts) {
302
300
  }
303
301
  }
304
302
 
305
- compileCache.set(cacheKey, {
303
+ compileCache.set(id, {
306
304
  time: Date.now(),
307
305
  file,
308
306
  contentHash
@@ -313,7 +311,7 @@ function getMarkoFile(code, fileOpts, markoOpts) {
313
311
  file.___compileStage = "analyze";
314
312
  traverseAll(file, translator.analyze);
315
313
  } catch (e) {
316
- compileCache.delete(cacheKey);
314
+ compileCache.delete(id);
317
315
  throw e;
318
316
  }
319
317
  }
@@ -1,9 +1,9 @@
1
1
  "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.findAttributeTags = findAttributeTags;exports.findParentTag = findParentTag;exports.getArgOrSequence = getArgOrSequence;exports.getFullyResolvedTagName = getFullyResolvedTagName;exports.getMacroIdentifier = getMacroIdentifier;exports.getMacroIdentifierForName = getMacroIdentifierForName;exports.getTagDef = getTagDef;exports.getTagTemplate = getTagTemplate;exports.getTemplateId = getTemplateId;exports.hasMacro = hasMacro;exports.isAttributeTag = isAttributeTag;exports.isDynamicTag = isDynamicTag;exports.isLoopTag = isLoopTag;exports.isMacroTag = isMacroTag;exports.isNativeTag = isNativeTag;exports.isTransparentTag = isTransparentTag;exports.loadFileForImport = loadFileForImport;exports.loadFileForTag = loadFileForTag;exports.registerMacro = registerMacro;exports.resolveTagImport = resolveTagImport;var _compiler = require("@marko/compiler");
2
- var _crypto = require("crypto");
2
+ var _modules = _interopRequireDefault(require("@marko/compiler/modules"));
3
3
  var _lassoPackageRoot = require("lasso-package-root");
4
4
  var _path = require("path");
5
- var _resolveFrom = _interopRequireDefault(require("resolve-from"));
6
5
 
6
+ var _quickHash = require("../util/quick-hash");
7
7
  var _diagnostics = require("./diagnostics");
8
8
  var _imports = require("./imports");
9
9
  var _taglib = require("./taglib");
@@ -281,7 +281,7 @@ function loadFileForImport(file, request) {
281
281
  const filename =
282
282
  relativeRequest[0] === "." ?
283
283
  (0, _path.resolve)(file.opts.filename, "..", relativeRequest) :
284
- (0, _resolveFrom.default)((0, _path.dirname)(file.opts.filename), relativeRequest);
284
+ _modules.default.resolve(relativeRequest, (0, _path.dirname)(file.opts.filename));
285
285
  const markoMeta = file.metadata.marko;
286
286
  const { analyzedTags } = markoMeta;
287
287
  if (analyzedTags) {
@@ -350,12 +350,12 @@ function getTemplateId(opts, request, child) {
350
350
  }
351
351
  }
352
352
 
353
- const hash = (0, _crypto.createHash)("shake256", templateIdHashOpts).update(id);
353
+ const hash = new _quickHash.Hash().update(id);
354
354
  if (child) {
355
355
  hash.update(child);
356
356
  }
357
357
 
358
- return encodeTemplateId(parseInt(hash.digest("hex"), 16));
358
+ return encodeTemplateId(hash.digest());
359
359
  }
360
360
 
361
361
  return id + (child ? `_${child}` : "");
@@ -408,21 +408,16 @@ function createNewFileOpts(opts, filename) {
408
408
  };
409
409
  }
410
410
 
411
- function encodeTemplateId(index) {
412
- const encodeChars =
413
- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_0123456789";
414
- const encodeLen = encodeChars.length;
415
- const encodeStartLen = encodeLen - 11; // Avoids chars that cannot start a property name and _ (reserved).
416
- let cur = index;
417
- let mod = cur % encodeStartLen;
418
- let id = encodeChars[mod];
419
- cur = (cur - mod) / encodeStartLen;
420
-
421
- while (cur > 0) {
422
- mod = cur % encodeLen;
423
- id += encodeChars[mod];
424
- cur = (cur - mod) / encodeLen;
411
+ function encodeTemplateId(id) {
412
+ const c = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_0123456789";
413
+ let n = id;
414
+ let r = c[n % 53]; // Avoids chars that cannot start a property name and _ (reserved).
415
+ n = Math.floor(n / 53);
416
+
417
+ // ensure at most 7 characters.
418
+ for (let i = 6; n > 0 && i--; n = Math.floor(n / 64)) {
419
+ r += c[n & 63];
425
420
  }
426
421
 
427
- return id;
422
+ return r;
428
423
  }
package/dist/index.js CHANGED
@@ -6,6 +6,7 @@ var _pluginTransformTypescript = _interopRequireDefault(require("@babel/plugin-t
6
6
  var _babelUtils = require("@marko/compiler/babel-utils");
7
7
  var _path = _interopRequireDefault(require("path"));
8
8
 
9
+ var _modules = _interopRequireDefault(require("../modules"));
9
10
  var _babelPlugin = _interopRequireDefault(require("./babel-plugin"));
10
11
  var _config = _interopRequireDefault(require("./config"));
11
12
  var taglib = _interopRequireWildcard(require("./taglib"));exports.taglib = taglib;
@@ -15,8 +16,6 @@ var _shouldOptimize = _interopRequireDefault(require("./util/should-optimize"));
15
16
  var _tryLoadTranslator = _interopRequireDefault(require("./util/try-load-translator"));function _getRequireWildcardCache(e) {if ("function" != typeof WeakMap) return null;var r = new WeakMap(),t = new WeakMap();return (_getRequireWildcardCache = function (e) {return e ? t : r;})(e);}function _interopRequireWildcard(e, r) {if (!r && e && e.__esModule) return e;if (null === e || "object" != typeof e && "function" != typeof e) return { default: e };var t = _getRequireWildcardCache(r);if (t && t.has(e)) return t.get(e);var n = { __proto__: null },a = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];}return n.default = e, t && t.set(e, n), n;}
16
17
 
17
18
 
18
- const CWD = process.cwd();
19
-
20
19
  let globalConfig = exports.globalConfig = { ..._config.default };
21
20
  function configure(newConfig) {
22
21
  exports.globalConfig = globalConfig = { ..._config.default, ...newConfig };
@@ -103,7 +102,9 @@ function getBaseBabelConfig(filename, { babelConfig, ...markoConfig }) {
103
102
 
104
103
 
105
104
  const baseBabelConfig = {
106
- filenameRelative: filename ? _path.default.relative(CWD, filename) : undefined,
105
+ filenameRelative: filename ?
106
+ _path.default.relative(_modules.default.cwd, filename) :
107
+ undefined,
107
108
  sourceRoot: filename ? _path.default.dirname(filename) : undefined,
108
109
  sourceFileName: filename ? _path.default.basename(filename) : undefined,
109
110
  configFile: isTranslated,
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  var nodePath = require("path");
3
3
  var lassoPackageRoot = require("lasso-package-root");
4
- var resolveFrom = require("resolve-from").silent;
4
+ var markoModules = require("../../../modules");
5
5
  var taglibConfig = require("../config");
6
6
  var taglibLoader = require("../loader");
7
7
  var findCache = {};
@@ -119,9 +119,9 @@ function find(dirname, registeredTaglibs, tagDiscoveryDirs) {
119
119
  // Now look for `marko.json` from installed packages
120
120
  getAllDependencyNames(rootPkg).forEach((name) => {
121
121
  if (!excludedPackages[name]) {
122
- let taglibPath = resolveFrom(
123
- rootPkg.__dirname,
124
- nodePath.join(name, "marko.json")
122
+ let taglibPath = markoModules.tryResolve(
123
+ nodePath.join(name, "marko.json"),
124
+ rootPkg.__dirname
125
125
  );
126
126
  if (taglibPath) {
127
127
  var taglib = taglibLoader.loadTaglibFromFile(taglibPath, true);
@@ -139,7 +139,7 @@ function resolveTaglib(id) {
139
139
  break;
140
140
  }
141
141
 
142
- const resolved = _modules.default.require.resolve(id);
142
+ const resolved = _modules.default.resolve(id);
143
143
  return [resolved, _modules.default.require(resolved)];
144
144
  }
145
145
 
@@ -4,7 +4,6 @@ var ok = require("assert").ok;
4
4
  var nodePath = require("path");
5
5
  var createError = require("raptor-util/createError");
6
6
  var isObjectEmpty = require("raptor-util/isObjectEmpty");
7
- var resolveFrom = require("resolve-from").silent;
8
7
  var markoModules = require("../../../modules");
9
8
  var taglibConfig = require("../config");
10
9
  var loaders = require("./loaders");
@@ -13,7 +12,9 @@ var types = require("./types");
13
12
  var hasOwnProperty = Object.prototype.hasOwnProperty;
14
13
 
15
14
  function resolveRelative(dirname, value) {
16
- return value[0] === "." ? resolveFrom(dirname, value) || value : value;
15
+ return value[0] === "." ?
16
+ markoModules.tryResolve(value, dirname) || value :
17
+ value;
17
18
  }
18
19
 
19
20
  function resolveWithMarkoExt(dirname, value) {
@@ -25,13 +26,13 @@ function resolveWithMarkoExt(dirname, value) {
25
26
  {
26
27
  markoModules.require.extensions[".marko"] = undefined;
27
28
  try {
28
- return resolveFrom(dirname, value) || value;
29
+ return markoModules.tryResolve(value, dirname) || value;
29
30
  } finally {
30
31
  delete markoModules.require.extensions[".marko"];
31
32
  }
32
33
  }
33
34
 
34
- return resolveFrom(dirname, value);
35
+ return markoModules.tryResolve(value, dirname) || value;
35
36
  }
36
37
 
37
38
  function removeDashes(str) {
@@ -3,7 +3,6 @@
3
3
  var ok = require("assert").ok;
4
4
  var nodePath = require("path");
5
5
  var createError = require("raptor-util/createError");
6
- var resolveFrom = require("resolve-from").silent;
7
6
  var markoModules = require("../../../modules");
8
7
  var taglibFS = require("../config");
9
8
  var DependencyChain = require("./DependencyChain");
@@ -15,7 +14,9 @@ var types = require("./types");
15
14
  var hasOwnProperty = Object.prototype.hasOwnProperty;
16
15
 
17
16
  function resolveRelative(dirname, value) {
18
- return value[0] === "." ? resolveFrom(dirname, value) || value : value;
17
+ return value[0] === "." ?
18
+ markoModules.tryResolve(value, dirname) || value :
19
+ value;
19
20
  }
20
21
 
21
22
  function normalizeHook(dirname, value) {
@@ -289,7 +290,7 @@ class TaglibLoader {
289
290
  if (typeof curImport === "string") {
290
291
  var basename = nodePath.basename(curImport);
291
292
  if (basename === "package.json") {
292
- var packagePath = resolveFrom(dirname, curImport);
293
+ var packagePath = markoModules.tryResolve(curImport, dirname);
293
294
  var packageDir = nodePath.dirname(packagePath);
294
295
  var pkg = jsonFileReader.readFileSync(packagePath);
295
296
  var dependencies = pkg.dependencies;
@@ -298,9 +299,9 @@ class TaglibLoader {
298
299
  for (var j = 0; j < dependencyNames.length; j++) {
299
300
  var dependencyName = dependencyNames[j];
300
301
 
301
- importPath = resolveFrom(
302
- packageDir,
303
- nodePath.join(dependencyName, "marko.json")
302
+ importPath = markoModules.tryResolve(
303
+ nodePath.join(dependencyName, "marko.json"),
304
+ packageDir
304
305
  );
305
306
 
306
307
  if (importPath) {
@@ -309,7 +310,7 @@ class TaglibLoader {
309
310
  }
310
311
  }
311
312
  } else {
312
- importPath = resolveFrom(dirname, curImport);
313
+ importPath = markoModules.tryResolve(curImport, dirname);
313
314
  if (importPath) {
314
315
  taglib.addImport(importPath);
315
316
  } else {
@@ -0,0 +1,35 @@
1
+ "use strict";exports.__esModule = true;exports.Hash = void 0; /**
2
+ * Outputs a noncryptographic hash as a safe integer (<= Number.MAX_SAFE_INTEGER).
3
+ */
4
+ class Hash {
5
+ a = 0xdeadbeef;
6
+ b = 0x9e3779b9;
7
+
8
+ update(s) {
9
+ let a = this.a;
10
+ let b = this.b;
11
+ for (let i = s.length; i--;) {
12
+ a = Math.imul(a ^ s.charCodeAt(i), 0x85ebca6b);
13
+ a = a << 13 | a >>> 19;
14
+ b = Math.imul(b ^ a, 0xc2b2ae35);
15
+ b = b << 17 | b >>> 15;
16
+ a ^= b >>> 11;
17
+ b ^= a >>> 7;
18
+ }
19
+
20
+ this.a = a;
21
+ this.b = b;
22
+ return this;
23
+ }
24
+
25
+ digest() {
26
+ let a = this.a;
27
+ let b = this.b;
28
+ a = Math.imul(a ^ b, 0x27d4eb2f);
29
+ a ^= a >>> 16;
30
+ b = Math.imul(b ^ a, 0x165667b1);
31
+ b ^= b >>> 15;
32
+ a = Math.imul(a ^ b >>> 13, 0x5bd1e995);
33
+ return (b & 0x1fffff) * 0x100000000 + a;
34
+ }
35
+ }exports.Hash = Hash;
@@ -1,11 +1,11 @@
1
1
  "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.default = _default;var _modules = _interopRequireDefault(require("../../modules"));
2
- var _config = _interopRequireDefault(require("../config"));
3
2
  const cache = {};
4
3
 
5
- function _default(requested = _config.default.translator) {
4
+ function _default(requested) {
6
5
  if (typeof requested === "string") {
7
6
  return (
8
- cache[requested] || (cache[requested] = _modules.default.require(requested)));
7
+ cache[requested] || (
8
+ cache[requested] = _modules.default.require(_modules.default.resolve(requested))));
9
9
 
10
10
  }
11
11
 
package/modules.js CHANGED
@@ -1,4 +1,28 @@
1
1
  "use strict";
2
2
 
3
- exports.require =
4
- process.env.BUNDLE || typeof document === "object" ? undefined : require;
3
+ if (process.env.BUNDLE || typeof document === "object") {
4
+ exports.cwd = "/";
5
+ exports.root = "/";
6
+ exports.require = undefined;
7
+ exports.resolve = undefined;
8
+ exports.tryResolve = undefined;
9
+ } else {
10
+ const resolveFrom = require("resolve-from");
11
+ const cwd = process.cwd();
12
+ const root = (() => {
13
+ try {
14
+ return require("lasso-package-root").getRootDir(cwd) || cwd;
15
+ } catch {
16
+ return cwd;
17
+ }
18
+ })();
19
+ exports.cwd = cwd;
20
+ exports.root = root;
21
+ exports.require = require;
22
+ exports.resolve = (id, from) => {
23
+ return resolveFrom(from || root, id);
24
+ };
25
+ exports.tryResolve = (id, from) => {
26
+ return resolveFrom.silent(from || root, id);
27
+ };
28
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marko/compiler",
3
- "version": "5.39.20",
3
+ "version": "5.39.22",
4
4
  "description": "Marko template to JS compiler.",
5
5
  "keywords": [
6
6
  "babel",
@@ -87,7 +87,7 @@
87
87
  "source-map-support": "^0.5.21"
88
88
  },
89
89
  "devDependencies": {
90
- "marko": "^5.37.31"
90
+ "marko": "^5.37.33"
91
91
  },
92
92
  "engines": {
93
93
  "node": "18 || 20 || >=22"