@divriots/jampack 0.9.1 → 0.9.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.
Files changed (2) hide show
  1. package/dist/optimize.js +32 -1
  2. package/package.json +1 -1
package/dist/optimize.js CHANGED
@@ -28,7 +28,7 @@ async function analyse(file) {
28
28
  const spinnerImg = ora({ prefixText: ' ' }).start();
29
29
  for (let i = 0; i < imgsArray.length; i++) {
30
30
  const imgElement = imgsArray[i];
31
- spinnerImg.text = kleur.dim(`<img> [${i + 1}/${imgsArray.length}] ${$(imgElement).attr('src')} `);
31
+ spinnerImg.text = kleur.dim(`<img> [${i + 1}/${imgsArray.length}] ${$(imgElement).attr('src')}`);
32
32
  const isAboveTheFold = imgElement.startIndex < theFold;
33
33
  try {
34
34
  await processImage(file, $, imgElement, isAboveTheFold);
@@ -52,6 +52,31 @@ async function analyse(file) {
52
52
  else {
53
53
  spinnerImg.succeed();
54
54
  }
55
+ const iframes = $('iframe');
56
+ const iframesArray = [];
57
+ iframes.each(async (index, ifElement) => {
58
+ iframesArray.push(ifElement);
59
+ });
60
+ // Process iframes sequentially
61
+ const spinnerIframe = ora({ prefixText: ' ' }).start();
62
+ for (let i = 0; i < iframesArray.length; i++) {
63
+ const ifElement = iframesArray[i];
64
+ spinnerIframe.text = kleur.dim(`<iframe> [${i + 1}/${iframesArray.length}] ${$(ifElement).attr('src')}`);
65
+ const isAboveTheFold = ifElement.startIndex < theFold;
66
+ try {
67
+ await processIframe(file, $, ifElement, isAboveTheFold);
68
+ }
69
+ catch (e) {
70
+ $state.reportIssue(file, {
71
+ type: 'erro',
72
+ msg: e.message ||
73
+ `Unexpected error while processing image: ${JSON.stringify(e)}`,
74
+ });
75
+ }
76
+ }
77
+ // Reset spinner
78
+ spinnerIframe.text = kleur.dim(`<iframe> [${imgsArray.length}/${imgsArray.length}]`);
79
+ spinnerIframe.succeed();
55
80
  // Remove the fold
56
81
  if (theFold) {
57
82
  $('the-fold').remove();
@@ -572,6 +597,12 @@ async function setImageSize(htmlfile, img, image) {
572
597
  // Something when wrong
573
598
  throw new Error(`Unexpected issue when resolving image size "${image.src}"`);
574
599
  }
600
+ async function processIframe(htmlfile, $, imgElement, isAboveTheFold) {
601
+ const iframe = $(imgElement);
602
+ if (!isAboveTheFold) {
603
+ iframe.attr('loading', 'lazy');
604
+ }
605
+ }
575
606
  export async function optimize(include, exclude) {
576
607
  const glob = include ? [include] : ['**/*.{htm,html}'];
577
608
  if (exclude)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@divriots/jampack",
3
- "version": "0.9.1",
3
+ "version": "0.9.3",
4
4
  "description": "Packer for static websites",
5
5
  "author": "Georges Gomes @georges-gomes",
6
6
  "bin": {