@normed/bundle 4.5.2 → 4.5.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/CHANGELOG.md CHANGED
@@ -6,6 +6,10 @@ Given a version number MAJOR.MINOR.PATCH, increment the:
6
6
  2. MINOR version when you add functionality in a backwards compatible manner, and
7
7
  3. PATCH version when you make backwards compatible bug fixes.
8
8
 
9
+ # 4.5.3
10
+
11
+ * MINOR: Less files referenced from pug templates are now compiled to CSS. The `href` is rewritten to point to the compiled `.css` file with a content hash.
12
+
9
13
  # 4.5.2
10
14
 
11
15
  * PATCH: Fixes incorrect asset path resolution in pug templates when using custom `assetNames` configuration. Asset paths are now correctly computed relative to the HTML output location.
@@ -25376,8 +25376,8 @@ var require_plugin_manager = __commonJS({
25376
25376
  var PluginManager = (
25377
25377
  /** @class */
25378
25378
  function() {
25379
- function PluginManager2(less2) {
25380
- this.less = less2;
25379
+ function PluginManager2(less3) {
25380
+ this.less = less3;
25381
25381
  this.visitors = [];
25382
25382
  this.preProcessors = [];
25383
25383
  this.postProcessors = [];
@@ -25385,7 +25385,7 @@ var require_plugin_manager = __commonJS({
25385
25385
  this.fileManagers = [];
25386
25386
  this.iterator = -1;
25387
25387
  this.pluginCache = {};
25388
- this.Loader = new less2.PluginLoader(less2);
25388
+ this.Loader = new less3.PluginLoader(less3);
25389
25389
  }
25390
25390
  PluginManager2.prototype.addPlugins = function(plugins) {
25391
25391
  if (plugins) {
@@ -25467,9 +25467,9 @@ var require_plugin_manager = __commonJS({
25467
25467
  }()
25468
25468
  );
25469
25469
  var pm;
25470
- var PluginManagerFactory = function(less2, newFactory) {
25470
+ var PluginManagerFactory = function(less3, newFactory) {
25471
25471
  if (newFactory || !pm) {
25472
- pm = new PluginManager(less2);
25472
+ pm = new PluginManager(less3);
25473
25473
  }
25474
25474
  return pm;
25475
25475
  };
@@ -25782,8 +25782,8 @@ var require_import_manager = __commonJS({
25782
25782
  var ImportManager = (
25783
25783
  /** @class */
25784
25784
  function() {
25785
- function ImportManager2(less2, context, rootFileInfo) {
25786
- this.less = less2;
25785
+ function ImportManager2(less3, context, rootFileInfo) {
25786
+ this.less = less3;
25787
25787
  this.rootFilename = rootFileInfo.filename;
25788
25788
  this.paths = context.paths || [];
25789
25789
  this.contents = {};
@@ -26397,8 +26397,8 @@ var require_plugin_loader = __commonJS({
26397
26397
  var tslib_1 = require_tslib();
26398
26398
  var path_1 = tslib_1.__importDefault(require("path"));
26399
26399
  var abstract_plugin_loader_js_1 = tslib_1.__importDefault(require_abstract_plugin_loader());
26400
- var PluginLoader = function(less2) {
26401
- this.less = less2;
26400
+ var PluginLoader = function(less3) {
26401
+ this.less = less3;
26402
26402
  this.require = function(prefix) {
26403
26403
  prefix = path_1.default.dirname(prefix);
26404
26404
  return function(id) {
@@ -27079,17 +27079,17 @@ var require_less_node = __commonJS({
27079
27079
  var file_manager_1 = tslib_1.__importDefault(require_file_manager());
27080
27080
  var url_file_manager_1 = tslib_1.__importDefault(require_url_file_manager());
27081
27081
  var less_1 = tslib_1.__importDefault(require_less());
27082
- var less2 = (0, less_1.default)(environment_1.default, [new file_manager_1.default(), new url_file_manager_1.default()]);
27082
+ var less3 = (0, less_1.default)(environment_1.default, [new file_manager_1.default(), new url_file_manager_1.default()]);
27083
27083
  var lessc_helper_1 = tslib_1.__importDefault(require_lessc_helper());
27084
- less2.createFromEnvironment = less_1.default;
27085
- less2.lesscHelper = lessc_helper_1.default;
27086
- less2.PluginLoader = require_plugin_loader().default;
27087
- less2.fs = require_fs2().default;
27088
- less2.FileManager = file_manager_1.default;
27089
- less2.UrlFileManager = url_file_manager_1.default;
27090
- less2.options = require_default_options().default();
27091
- require_image_size().default(less2.environment);
27092
- exports2.default = less2;
27084
+ less3.createFromEnvironment = less_1.default;
27085
+ less3.lesscHelper = lessc_helper_1.default;
27086
+ less3.PluginLoader = require_plugin_loader().default;
27087
+ less3.fs = require_fs2().default;
27088
+ less3.FileManager = file_manager_1.default;
27089
+ less3.UrlFileManager = url_file_manager_1.default;
27090
+ less3.options = require_default_options().default();
27091
+ require_image_size().default(less3.environment);
27092
+ exports2.default = less3;
27093
27093
  }
27094
27094
  });
27095
27095
 
@@ -69136,11 +69136,25 @@ var import_pug = __toESM(require_lib14());
69136
69136
  var import_fs4 = __toESM(require("fs"));
69137
69137
  var import_path5 = __toESM(require("path"));
69138
69138
  var import_crypto = __toESM(require("crypto"));
69139
+ var import_less2 = __toESM(require_less2());
69140
+ var less2 = import_less2.default;
69139
69141
  function computeContentHash(content) {
69140
69142
  const hash = import_crypto.default.createHash("sha256").update(content).digest();
69141
69143
  const num = hash.readUInt32BE(0);
69142
69144
  return num.toString(36).toUpperCase().padStart(8, "0").slice(0, 8);
69143
69145
  }
69146
+ function isCompilableAsset(assetPath) {
69147
+ return assetPath.endsWith(".less");
69148
+ }
69149
+ async function compileLess(absoluteSource) {
69150
+ const fileData = await import_fs4.default.promises.readFile(absoluteSource, {
69151
+ encoding: "utf8"
69152
+ });
69153
+ const lessResult = await less2.render(fileData, {
69154
+ paths: [import_path5.default.dirname(absoluteSource)]
69155
+ });
69156
+ return { content: lessResult.css, outputExt: ".css" };
69157
+ }
69144
69158
  var ASSET_ATTRIBUTES = {
69145
69159
  img: ["src", "srcset"],
69146
69160
  video: ["src", "poster"],
@@ -69284,11 +69298,21 @@ async function processAsset(assetPath, pugDir, pugFilePath, outdir, outbase, ass
69284
69298
  return null;
69285
69299
  }
69286
69300
  try {
69287
- const content = await import_fs4.default.promises.readFile(absoluteSource);
69301
+ let content;
69302
+ let compiledContent;
69303
+ let outputAssetPath = assetPath;
69304
+ if (isCompilableAsset(assetPath)) {
69305
+ const compiled = await compileLess(absoluteSource);
69306
+ content = compiled.content;
69307
+ compiledContent = compiled.content;
69308
+ outputAssetPath = assetPath.replace(/\.less$/, compiled.outputExt);
69309
+ } else {
69310
+ content = await import_fs4.default.promises.readFile(absoluteSource);
69311
+ }
69288
69312
  const hash = computeContentHash(content);
69289
69313
  const hashedFilename = applyAssetNamesTemplate(
69290
69314
  assetNames,
69291
- assetPath,
69315
+ outputAssetPath,
69292
69316
  hash,
69293
69317
  outbase
69294
69318
  );
@@ -69306,7 +69330,8 @@ async function processAsset(assetPath, pugDir, pugFilePath, outdir, outbase, ass
69306
69330
  originalPath: assetPath,
69307
69331
  hashedPath: htmlPath,
69308
69332
  absoluteSource,
69309
- absoluteOutput
69333
+ absoluteOutput,
69334
+ compiledContent
69310
69335
  });
69311
69336
  processedAssets.set(absoluteSource, htmlPath);
69312
69337
  return htmlPath;
@@ -69315,13 +69340,19 @@ async function processAsset(assetPath, pugDir, pugFilePath, outdir, outbase, ass
69315
69340
  }
69316
69341
  }
69317
69342
  async function copyAssets(assets) {
69318
- const copied = /* @__PURE__ */ new Set();
69343
+ const written = /* @__PURE__ */ new Set();
69319
69344
  for (const asset of assets) {
69320
- if (copied.has(asset.absoluteOutput)) continue;
69321
- copied.add(asset.absoluteOutput);
69345
+ if (written.has(asset.absoluteOutput)) continue;
69346
+ written.add(asset.absoluteOutput);
69322
69347
  const outputDir = import_path5.default.dirname(asset.absoluteOutput);
69323
69348
  await import_fs4.default.promises.mkdir(outputDir, { recursive: true });
69324
- await import_fs4.default.promises.copyFile(asset.absoluteSource, asset.absoluteOutput);
69349
+ if (asset.compiledContent !== void 0) {
69350
+ await import_fs4.default.promises.writeFile(asset.absoluteOutput, asset.compiledContent, {
69351
+ encoding: "utf8"
69352
+ });
69353
+ } else {
69354
+ await import_fs4.default.promises.copyFile(asset.absoluteSource, asset.absoluteOutput);
69355
+ }
69325
69356
  }
69326
69357
  }
69327
69358
  var filters = {