@amekusa/util.js 2.1.0 → 2.2.0

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.
@@ -604,7 +604,7 @@ class AssetImporter {
604
604
  for (let i = 0; i < find.length; i++) {
605
605
  let r;
606
606
  switch (method) {
607
- case 'module':
607
+ case 'require':
608
608
  try {
609
609
  r = require.resolve(find[i]);
610
610
  } catch (e) {
@@ -629,8 +629,10 @@ class AssetImporter {
629
629
  }
630
630
  /**
631
631
  * Imports all items in the queue at once.
632
+ * @return {Promise}
632
633
  */
633
634
  import() {
635
+ let tasks = [];
634
636
  let typeMap = {
635
637
  '.css': 'style',
636
638
  '.js': 'script',
@@ -665,17 +667,19 @@ class AssetImporter {
665
667
  let dst = path.join(this.config.dst, url);
666
668
  dstDir = path.dirname(dst);
667
669
  if (!fs.existsSync(dstDir)) fs.mkdirSync(dstDir, {recursive:true});
670
+
671
+ // create/copy file
668
672
  if (create) {
669
- fs.writeFileSync(dst, src);
670
673
  console.log('---- File Creation ----');
671
674
  console.log(' type:', type);
672
675
  console.log(' dst:', dst);
676
+ tasks.push(fsp.writeFile(dst, src));
673
677
  } else {
674
- fs.copyFileSync(src, dst);
675
678
  console.log('---- File Import ----');
676
679
  console.log(' type:', type);
677
680
  console.log(' src:', src);
678
681
  console.log(' dst:', dst);
682
+ tasks.push(fsp.copyFile(src, dst));
679
683
  }
680
684
  }
681
685
 
@@ -684,6 +688,8 @@ class AssetImporter {
684
688
  this.results[type].push({type, url});
685
689
  }
686
690
  }
691
+
692
+ return tasks.length ? Promise.all(tasks) : Promise.resolve();
687
693
  }
688
694
  /**
689
695
  * Outputs HTML tags for imported items.
@@ -695,6 +701,7 @@ class AssetImporter {
695
701
  if (type) {
696
702
  let tmpl = templates[type];
697
703
  if (!tmpl) return '';
704
+ if (Array.isArray(tmpl)) tmpl = tmpl.join('\n');
698
705
  let items = this.results[type];
699
706
  r = new Array(items.length);
700
707
  for (let i = 0; i < items.length; i++) {
@@ -712,14 +719,15 @@ class AssetImporter {
712
719
  }
713
720
 
714
721
  const templates = {
715
- 'script':
722
+ script: [
716
723
  `<script src="%s"></script>`,
717
-
718
- 'script:module':
724
+ ],
725
+ module: [
719
726
  `<script type="module" src="%s"></script>`,
720
-
721
- 'style':
727
+ ],
728
+ style: [
722
729
  `<link rel="stylesheet" href="%s">`,
730
+ ],
723
731
  };/**
724
732
  * Alias of `os.homedir()`.
725
733
  * @type {string}
@@ -1,4 +1,4 @@
1
- import os from'node:os';import fs from'node:fs';import*as fsp from'node:fs/promises';import path,{join,basename,dirname}from'node:path';import {Transform}from'node:stream';import {env}from'node:process';import {exec as exec$1}from'node:child_process';import assert from'node:assert';/*!
1
+ import os from'node:os';import fs,{existsSync,mkdirSync}from'node:fs';import*as fsp from'node:fs/promises';import {writeFile,copyFile}from'node:fs/promises';import path,{join,basename,dirname}from'node:path';import {Transform}from'node:stream';import {env}from'node:process';import {exec as exec$1}from'node:child_process';import assert from'node:assert';/*!
2
2
  * === @amekusa/util.js/gen === *
3
3
  * MIT License
4
4
  *
@@ -604,7 +604,7 @@ class AssetImporter {
604
604
  for (let i = 0; i < find.length; i++) {
605
605
  let r;
606
606
  switch (method) {
607
- case 'module':
607
+ case 'require':
608
608
  try {
609
609
  r = require.resolve(find[i]);
610
610
  } catch (e) {
@@ -614,12 +614,12 @@ class AssetImporter {
614
614
  return r;
615
615
  case 'local':
616
616
  r = join(this.config.src, find[i]);
617
- if (fs.existsSync(r)) return r;
617
+ if (existsSync(r)) return r;
618
618
  break;
619
619
  case 'local:absolute':
620
620
  case 'local:abs':
621
621
  r = find[i];
622
- if (fs.existsSync(r)) return r;
622
+ if (existsSync(r)) return r;
623
623
  break;
624
624
  default:
625
625
  throw `invalid resolution method: ${method}`;
@@ -629,8 +629,10 @@ class AssetImporter {
629
629
  }
630
630
  /**
631
631
  * Imports all items in the queue at once.
632
+ * @return {Promise}
632
633
  */
633
634
  import() {
635
+ let tasks = [];
634
636
  let typeMap = {
635
637
  '.css': 'style',
636
638
  '.js': 'script',
@@ -664,18 +666,20 @@ class AssetImporter {
664
666
  url = join(dstDir, dstFile);
665
667
  let dst = join(this.config.dst, url);
666
668
  dstDir = dirname(dst);
667
- if (!fs.existsSync(dstDir)) fs.mkdirSync(dstDir, {recursive:true});
669
+ if (!existsSync(dstDir)) mkdirSync(dstDir, {recursive:true});
670
+
671
+ // create/copy file
668
672
  if (create) {
669
- fs.writeFileSync(dst, src);
670
673
  console.log('---- File Creation ----');
671
674
  console.log(' type:', type);
672
675
  console.log(' dst:', dst);
676
+ tasks.push(writeFile(dst, src));
673
677
  } else {
674
- fs.copyFileSync(src, dst);
675
678
  console.log('---- File Import ----');
676
679
  console.log(' type:', type);
677
680
  console.log(' src:', src);
678
681
  console.log(' dst:', dst);
682
+ tasks.push(copyFile(src, dst));
679
683
  }
680
684
  }
681
685
 
@@ -684,6 +688,8 @@ class AssetImporter {
684
688
  this.results[type].push({type, url});
685
689
  }
686
690
  }
691
+
692
+ return tasks.length ? Promise.all(tasks) : Promise.resolve();
687
693
  }
688
694
  /**
689
695
  * Outputs HTML tags for imported items.
@@ -695,6 +701,7 @@ class AssetImporter {
695
701
  if (type) {
696
702
  let tmpl = templates[type];
697
703
  if (!tmpl) return '';
704
+ if (Array.isArray(tmpl)) tmpl = tmpl.join('\n');
698
705
  let items = this.results[type];
699
706
  r = new Array(items.length);
700
707
  for (let i = 0; i < items.length; i++) {
@@ -712,14 +719,15 @@ class AssetImporter {
712
719
  }
713
720
 
714
721
  const templates = {
715
- 'script':
722
+ script: [
716
723
  `<script src="%s"></script>`,
717
-
718
- 'script:module':
724
+ ],
725
+ module: [
719
726
  `<script type="module" src="%s"></script>`,
720
-
721
- 'style':
727
+ ],
728
+ style: [
722
729
  `<link rel="stylesheet" href="%s">`,
730
+ ],
723
731
  };/**
724
732
  * Alias of `os.homedir()`.
725
733
  * @type {string}
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org/"
7
7
  },
8
- "version": "2.1.0",
8
+ "version": "2.2.0",
9
9
  "description": "General purpose utility for JS",
10
10
  "type": "module",
11
11
  "files": [