@package-verse/esmpack 1.0.29 → 1.0.32
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/core/Queue.js +30 -0
- package/dist/core/Queue.js.map +1 -0
- package/dist/core/TaskManager.js +69 -0
- package/dist/core/TaskManager.js.map +1 -0
- package/dist/core/hasPackDecorator.js +9 -0
- package/dist/core/hasPackDecorator.js.map +1 -0
- package/dist/pack/FilePacker.js +55 -37
- package/dist/pack/FilePacker.js.map +1 -1
- package/dist/pack/RewriteJS.js +5 -0
- package/dist/pack/RewriteJS.js.map +1 -0
- package/dist/pack/pack.js +69 -1
- package/dist/pack/pack.js.map +1 -1
- package/dist/parser/babel.js +1 -1
- package/dist/parser/babel.js.map +1 -1
- package/dist/serve/WebServer.js +2 -1
- package/dist/serve/WebServer.js.map +1 -1
- package/dist/serve/send/sendFileList.js +6 -4
- package/dist/serve/send/sendFileList.js.map +1 -1
- package/dist/serve/send/sendJS.js +1 -1
- package/dist/serve/send/sendJS.js.map +1 -1
- package/package.json +1 -1
- package/src/core/Queue.ts +34 -0
- package/src/core/TaskManager.ts +88 -0
- package/src/core/hasPackDecorator.ts +10 -0
- package/src/pack/FilePacker.ts +60 -49
- package/src/pack/RewriteJS.ts +7 -0
- package/src/pack/pack.ts +85 -0
- package/src/parser/babel.ts +1 -1
- package/src/serve/WebServer.ts +2 -1
- package/src/serve/send/sendFileList.ts +7 -5
- package/src/serve/send/sendJS.ts +2 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export default class Queue {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.head = 0;
|
|
4
|
+
this.tail = 0;
|
|
5
|
+
this.store = new Map();
|
|
6
|
+
}
|
|
7
|
+
peek() {
|
|
8
|
+
return this.store.get(this.head);
|
|
9
|
+
}
|
|
10
|
+
enqueue(item) {
|
|
11
|
+
this.store.set(this.tail, item);
|
|
12
|
+
this.tail++;
|
|
13
|
+
}
|
|
14
|
+
dequeue() {
|
|
15
|
+
const { head, tail } = this;
|
|
16
|
+
const size = tail - head;
|
|
17
|
+
if (size <= 0) {
|
|
18
|
+
return void 0;
|
|
19
|
+
}
|
|
20
|
+
const item = this.store.get(head);
|
|
21
|
+
this.store.delete(head);
|
|
22
|
+
this.head++;
|
|
23
|
+
if (this.head === this.tail) {
|
|
24
|
+
this.head = 0;
|
|
25
|
+
this.tail = 0;
|
|
26
|
+
}
|
|
27
|
+
return item;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=Queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Queue.js","sourceRoot":"","sources":["../../src/core/Queue.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,OAAO,OAAO,KAAK;IAA1B;QAEI,SAAI,GAAG,CAAC,CAAC;QACT,SAAI,GAAG,CAAC,CAAC;QAET,UAAK,GAAiB,IAAI,GAAG,EAAE,CAAC;IA2BpC,CAAC;IAzBG,IAAI;QACA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAEM,OAAO,CAAC,IAAO;QAClB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;IAChB,CAAC;IAEM,OAAO;QACV,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACzB,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;YACd,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CAEJ"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import Queue from "./Queue.js";
|
|
2
|
+
const sleep = (n) => new Promise((r) => setTimeout(r, n));
|
|
3
|
+
export default class TaskManager {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.rateLimit = 10;
|
|
6
|
+
this.running = new Set();
|
|
7
|
+
this.waiting = new Queue();
|
|
8
|
+
}
|
|
9
|
+
queueRun(fx) {
|
|
10
|
+
const pr = new Promise((resolve, reject) => {
|
|
11
|
+
this.waiting.enqueue({ resolve, reject, fx });
|
|
12
|
+
});
|
|
13
|
+
// this is to prevent uncaught promise error.
|
|
14
|
+
// eslint-disable-next-line no-console
|
|
15
|
+
pr.catch((error) => console.error(error));
|
|
16
|
+
this.processQueue();
|
|
17
|
+
return pr;
|
|
18
|
+
}
|
|
19
|
+
wait() {
|
|
20
|
+
return new Promise((resolve) => {
|
|
21
|
+
this.runAfterEnd(resolve);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
processQueue() {
|
|
25
|
+
for (;;) {
|
|
26
|
+
if (this.running.size >= this.rateLimit) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const t = this.waiting.dequeue();
|
|
30
|
+
if (!t) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const { fx, resolve, reject } = t;
|
|
34
|
+
this.running.add(fx);
|
|
35
|
+
fx().then((r) => {
|
|
36
|
+
this.running.delete(fx);
|
|
37
|
+
setTimeout(() => this.processQueue(), 1);
|
|
38
|
+
resolve(r);
|
|
39
|
+
}, (e) => {
|
|
40
|
+
this.running.delete(fx);
|
|
41
|
+
setTimeout(() => this.processQueue(), 1);
|
|
42
|
+
reject(e);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* You can queue this function that will be
|
|
48
|
+
* executed after all pending fetch tasks
|
|
49
|
+
* are finished
|
|
50
|
+
* @param fx any function
|
|
51
|
+
*/
|
|
52
|
+
runAfterEnd(fx) {
|
|
53
|
+
(async () => {
|
|
54
|
+
for (;;) {
|
|
55
|
+
await sleep(100);
|
|
56
|
+
if (this.running.size > 0) {
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
await sleep(10);
|
|
60
|
+
if (this.running.size > 0) {
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
fx();
|
|
66
|
+
})().catch(console.error);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=TaskManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskManager.js","sourceRoot":"","sources":["../../src/core/TaskManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE1D,MAAM,CAAC,OAAO,OAAO,WAAW;IAAhC;QAEW,cAAS,GAAG,EAAE,CAAC;QAEd,YAAO,GAAa,IAAI,GAAG,EAAE,CAAC;QAE9B,YAAO,GAAmC,IAAI,KAAK,EAAE,CAAC;IA6ElE,CAAC;IA3EU,QAAQ,CAAK,EAAiC;QAEjD,MAAM,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,6CAA6C;QAC7C,sCAAsC;QACtC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAE1C,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,OAAO,EAAiB,CAAC;IAC7B,CAAC;IAEM,IAAI;QACP,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACjC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACP,CAAC;IAES,YAAY;QAClB,SAAQ,CAAC;YACL,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACtC,OAAO;YACX,CAAC;YAED,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,CAAC,CAAC,EAAE,CAAC;gBACL,OAAO;YACX,CAAC;YAED,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;YAElC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAErB,EAAE,EAAE,CAAC,IAAI,CACL,CAAC,CAAC,EAAE,EAAE;gBACF,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACxB,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;gBACzC,OAAO,CAAC,CAAC,CAAC,CAAC;YACf,CAAC,EACD,CAAC,CAAC,EAAE,EAAE;gBACF,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACxB,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;gBACzC,MAAM,CAAC,CAAC,CAAC,CAAC;YACd,CAAC,CACJ,CAAC;QAEN,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,WAAW,CAAC,EAAa;QAC5B,CAAC,KAAK,IAAI,EAAE;YACR,SAAQ,CAAC;gBACL,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;oBACxB,SAAS;gBACb,CAAC;gBACD,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;gBAChB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;oBACxB,SAAS;gBACb,CAAC;gBACD,MAAM;YACV,CAAC;YACD,EAAE,EAAE,CAAC;QACT,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;CAEJ"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { readFile } from "node:fs/promises";
|
|
3
|
+
export default function hasPackDecorator(filePath) {
|
|
4
|
+
return /((@Pack)|("@web-atoms\/core\/dist\/Pack\.js"))/mu.test(readFileSync(filePath, "utf-8"));
|
|
5
|
+
}
|
|
6
|
+
export async function hasPackDecoratorAsync(filePath) {
|
|
7
|
+
return /((@Pack)|("@web-atoms\/core\/dist\/Pack\.js"))/mu.test(await readFile(filePath, "utf-8"));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=hasPackDecorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hasPackDecorator.js","sourceRoot":"","sources":["../../src/core/hasPackDecorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,QAAgB;IACrD,OAAO,kDAAkD,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AACpG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,QAAgB;IACxD,OAAO,kDAAkD,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AACtG,CAAC"}
|
package/dist/pack/FilePacker.js
CHANGED
|
@@ -1,58 +1,76 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
import { Babel } from "../parser/babel.js";
|
|
3
|
-
import
|
|
3
|
+
import { packageInfo } from "../serve/send/packageInfo.js";
|
|
4
|
+
import TaskManager from "../core/TaskManager.js";
|
|
4
5
|
/**
|
|
5
6
|
* File Packer must do following tasks...
|
|
6
7
|
* 1. Create import-map based on the package.json
|
|
7
8
|
* 2. Replace all non js imports ...
|
|
8
9
|
*
|
|
9
10
|
* For App.js following packed scripts will be generated.
|
|
10
|
-
* 1. App.
|
|
11
|
-
* 2.
|
|
12
|
-
*
|
|
11
|
+
* 1. App.pack.js will be generated
|
|
12
|
+
* 2. This will install import-map
|
|
13
|
+
* 3. Import map must add fully qualified url with version
|
|
14
|
+
* 3. And it will add module preloader
|
|
15
|
+
* 4. And it will load fully qualified App.js
|
|
13
16
|
*/
|
|
14
17
|
export default class FilePacker {
|
|
15
|
-
constructor(root,
|
|
18
|
+
constructor(root, resolve) {
|
|
16
19
|
this.root = root;
|
|
17
|
-
this.
|
|
18
|
-
this.
|
|
19
|
-
this.
|
|
20
|
-
this.
|
|
21
|
-
this.pathImports = [];
|
|
22
|
-
// empty
|
|
23
|
-
// let us make src relative to the root if an absolute path was supplied
|
|
24
|
-
if (path.isAbsolute(this.src)) {
|
|
25
|
-
this.src = path.relative(this.root, this.src);
|
|
26
|
-
}
|
|
27
|
-
this.absoluteSrc = path.resolve(this.root, this.src);
|
|
20
|
+
this.resolve = resolve;
|
|
21
|
+
this.imports = [];
|
|
22
|
+
this.done = new Set();
|
|
23
|
+
this.tm = new TaskManager();
|
|
28
24
|
}
|
|
29
|
-
async pack() {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
25
|
+
async pack({ file, root = this.root, packageName = packageInfo.name, moduleUrl = this.moduleUrl(file, packageName, root) }) {
|
|
26
|
+
if (!this.done.has(moduleUrl)) {
|
|
27
|
+
this.imports.push(moduleUrl);
|
|
28
|
+
}
|
|
29
|
+
this.done.add(moduleUrl);
|
|
30
|
+
const fileDir = path.dirname(file);
|
|
31
|
+
const resolve = (url, sourceFile) => {
|
|
32
|
+
if (!url.endsWith(".js")) {
|
|
33
|
+
return url;
|
|
34
|
+
}
|
|
35
|
+
url = this.resolve(url, sourceFile);
|
|
36
|
+
if (url.startsWith(".")) {
|
|
37
|
+
const dependencyFile = path.join(fileDir, url);
|
|
38
|
+
url = path.relative(root, dependencyFile).replaceAll("\\", "/");
|
|
39
|
+
url = `${packageName}/${url}`;
|
|
40
|
+
if (this.done.has(url)) {
|
|
41
|
+
return url;
|
|
42
|
+
}
|
|
43
|
+
this.tm.queueRun(() => this.pack({ file: dependencyFile, root, packageName, moduleUrl: url }));
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
if (this.done.has(url)) {
|
|
47
|
+
return url;
|
|
48
|
+
}
|
|
49
|
+
const dependencyFile = this.root + "/node_modules/" + url;
|
|
50
|
+
const tokens = url.split("/");
|
|
51
|
+
let packageName = tokens.shift();
|
|
52
|
+
if (packageName.startsWith("@")) {
|
|
53
|
+
packageName += tokens.shift();
|
|
54
|
+
}
|
|
55
|
+
const rootFolder = this.root + "/node_modules/" + packageName;
|
|
56
|
+
this.tm.queueRun(() => this.pack({
|
|
57
|
+
file: dependencyFile,
|
|
58
|
+
root: rootFolder,
|
|
59
|
+
packageName,
|
|
60
|
+
moduleUrl: url
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
return url;
|
|
64
|
+
};
|
|
33
65
|
// we don't need the code
|
|
34
66
|
await Babel.transformAsync({
|
|
35
|
-
file
|
|
67
|
+
file,
|
|
36
68
|
resolve,
|
|
37
69
|
dynamicResolve: resolve
|
|
38
70
|
});
|
|
39
71
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if (url.endsWith(".css")) {
|
|
43
|
-
this.cssImports.push(moduleUrl);
|
|
44
|
-
return url;
|
|
45
|
-
}
|
|
46
|
-
if (url.endsWith(".json")) {
|
|
47
|
-
this.jsonImports.push(moduleUrl);
|
|
48
|
-
return url;
|
|
49
|
-
}
|
|
50
|
-
if (!url.endsWith(".js")) {
|
|
51
|
-
}
|
|
52
|
-
return url;
|
|
53
|
-
}
|
|
54
|
-
moduleUrl(url, sourceFile) {
|
|
55
|
-
return url;
|
|
72
|
+
moduleUrl(file, packageName = packageInfo.name, root = this.root) {
|
|
73
|
+
return packageName + "/" + path.relative(root, file).replaceAll("\\", "/");
|
|
56
74
|
}
|
|
57
75
|
}
|
|
58
76
|
//# sourceMappingURL=FilePacker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilePacker.js","sourceRoot":"","sources":["../../src/pack/FilePacker.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,
|
|
1
|
+
{"version":3,"file":"FilePacker.js","sourceRoot":"","sources":["../../src/pack/FilePacker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RewriteJS.js","sourceRoot":"","sources":["../../src/pack/RewriteJS.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,SAAS;IAE1B;IAEA,CAAC;CAEJ"}
|
package/dist/pack/pack.js
CHANGED
|
@@ -1,2 +1,70 @@
|
|
|
1
|
-
|
|
1
|
+
import { opendir, writeFile } from "node:fs/promises";
|
|
2
|
+
import { fileArgument, ProcessOptions } from "../ProcessArgs.js";
|
|
3
|
+
import path, { join, parse, relative } from "node:path";
|
|
4
|
+
import TaskManager from "../core/TaskManager.js";
|
|
5
|
+
import { hasPackDecoratorAsync } from "../core/hasPackDecorator.js";
|
|
6
|
+
import { Babel } from "../parser/babel.js";
|
|
7
|
+
import { existsSync } from "node:fs";
|
|
8
|
+
import FilePacker from "./FilePacker.js";
|
|
9
|
+
async function processJS({ fullPath, relativePath }) {
|
|
10
|
+
const resolve = (url, sourceFile) => {
|
|
11
|
+
if (!url.startsWith(".")) {
|
|
12
|
+
return url;
|
|
13
|
+
}
|
|
14
|
+
if (url.endsWith(".js")) {
|
|
15
|
+
return url;
|
|
16
|
+
}
|
|
17
|
+
if (!sourceFile) {
|
|
18
|
+
sourceFile = fullPath;
|
|
19
|
+
}
|
|
20
|
+
const dir = path.dirname(fullPath);
|
|
21
|
+
const absoluteSourcePath = path.resolve(dir, path.dirname(sourceFile));
|
|
22
|
+
const referencedAbsolutePath = path.join(absoluteSourcePath, url);
|
|
23
|
+
if (existsSync(referencedAbsolutePath)) {
|
|
24
|
+
const relative = path.relative(dir, referencedAbsolutePath).replaceAll("\\", "/");
|
|
25
|
+
return relative;
|
|
26
|
+
}
|
|
27
|
+
return url;
|
|
28
|
+
};
|
|
29
|
+
// rewrite non JS imports
|
|
30
|
+
const code = await Babel.transformAsync({
|
|
31
|
+
file: fullPath,
|
|
32
|
+
resolve
|
|
33
|
+
});
|
|
34
|
+
await writeFile(fullPath, code, "utf-8");
|
|
35
|
+
if (fullPath.endsWith(".pack.js")) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (await hasPackDecoratorAsync(fullPath)) {
|
|
39
|
+
// need to create a packed file...
|
|
40
|
+
console.log(`Packing ${fullPath}`);
|
|
41
|
+
const fp = new FilePacker(ProcessOptions.cwd, resolve);
|
|
42
|
+
const moduleUrl = fp.moduleUrl(fullPath);
|
|
43
|
+
fp.done.add(moduleUrl);
|
|
44
|
+
await fp.pack({ file: fullPath });
|
|
45
|
+
await fp.tm.wait();
|
|
46
|
+
const packed = fp.imports.map((x) => `import "${x}";`).join("\n");
|
|
47
|
+
const main = `${packed}
|
|
48
|
+
import app from "${moduleUrl}";
|
|
49
|
+
ESMPack.render(app);
|
|
50
|
+
`;
|
|
51
|
+
const { dir, name } = parse(fullPath);
|
|
52
|
+
await writeFile(`${dir}/${name}.pack.js`, main, "utf-8");
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
const dir = await opendir(fileArgument
|
|
56
|
+
? join(ProcessOptions.cwd, fileArgument)
|
|
57
|
+
: ProcessOptions.cwd, { recursive: true });
|
|
58
|
+
const tm = new TaskManager();
|
|
59
|
+
for await (const { name, parentPath } of dir) {
|
|
60
|
+
if (!name.endsWith(".js")) {
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
const fullPath = join(parentPath, name);
|
|
64
|
+
const relativePath = relative(ProcessOptions.cwd, fullPath);
|
|
65
|
+
tm.queueRun(() => processJS({ fullPath, relativePath }));
|
|
66
|
+
}
|
|
67
|
+
tm.runAfterEnd(() => {
|
|
68
|
+
console.log(`Done`);
|
|
69
|
+
});
|
|
2
70
|
//# sourceMappingURL=pack.js.map
|
package/dist/pack/pack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack.js","sourceRoot":"","sources":["../../src/pack/pack.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"pack.js","sourceRoot":"","sources":["../../src/pack/pack.ts"],"names":[],"mappings":"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"}
|
package/dist/parser/babel.js
CHANGED
|
@@ -11,7 +11,7 @@ export class Babel {
|
|
|
11
11
|
const result = transformSync(code, p);
|
|
12
12
|
return result.code;
|
|
13
13
|
}
|
|
14
|
-
static async transformAsync({ file, resolve, dynamicResolve }) {
|
|
14
|
+
static async transformAsync({ file, resolve, dynamicResolve = void 0 }) {
|
|
15
15
|
const presets = Babel.prepareOptions(file, dynamicResolve, resolve);
|
|
16
16
|
const p = { ...presets, filename: file };
|
|
17
17
|
const code = await readFile(file, "utf8");
|
package/dist/parser/babel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"babel.js","sourceRoot":"","sources":["../../src/parser/babel.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,aAAa,EAAE,KAAK,IAAI,UAAU,EAAG,MAAM,aAAa,CAAC;AAC9F,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,MAAM,OAAO,KAAK;IAEd,MAAM,CAAC,SAAS,CAAC,EACb,IAAI,EACJ,OAAO,EACP,cAAc,EAKjB;QAEG,MAAM,OAAO,GAAqB,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QAEtF,MAAM,CAAC,GAAG,EAAE,GAAI,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACtC,OAAO,MAAM,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EACxB,IAAI,EACJ,OAAO,EACP,cAAc,
|
|
1
|
+
{"version":3,"file":"babel.js","sourceRoot":"","sources":["../../src/parser/babel.ts"],"names":[],"mappings":"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"}
|
package/dist/serve/WebServer.js
CHANGED
|
@@ -14,7 +14,8 @@ export default function WebServer(req, res) {
|
|
|
14
14
|
if (!pathname) {
|
|
15
15
|
// send list...
|
|
16
16
|
res.writeHead(301, {
|
|
17
|
-
"location": "/node_modules/@package-verse/esmpack/App.html"
|
|
17
|
+
"location": "/node_modules/@package-verse/esmpack/App.html",
|
|
18
|
+
"cache-control": "no-cache,no-store"
|
|
18
19
|
});
|
|
19
20
|
res.end();
|
|
20
21
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebServer.js","sourceRoot":"","sources":["../../src/serve/WebServer.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,aAAa,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,UAAU,MAAM,sBAAsB,CAAC;AAC9C,OAAO,eAAe,MAAM,2BAA2B,CAAC;AACxD,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAGlD,IAAI,UAAU,CAAC;AAEf,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,GAAoB,EAAE,GAAmB;IACvE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAE3C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,eAAe;QACf,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;YACf,UAAU,EAAE,+CAA+C;
|
|
1
|
+
{"version":3,"file":"WebServer.js","sourceRoot":"","sources":["../../src/serve/WebServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { readdirSync,
|
|
1
|
+
import { readdirSync, statSync } from "node:fs";
|
|
2
2
|
import { join, relative } from "node:path";
|
|
3
3
|
import { ProcessOptions } from "../../ProcessArgs.js";
|
|
4
|
+
import hasPackDecorator from "../../core/hasPackDecorator.js";
|
|
4
5
|
export default function sendFileList(url, req, res) {
|
|
5
6
|
const packed = /yes|true/i.test(url.searchParams.get("packed"));
|
|
6
7
|
const search = url.searchParams.get("search") || "";
|
|
@@ -12,7 +13,8 @@ export default function sendFileList(url, req, res) {
|
|
|
12
13
|
&& !d.parentPath.replaceAll("\\", "/").includes("node_modules/")
|
|
13
14
|
&& (search ? d.name.toLowerCase().includes(search.toLowerCase()) : true))
|
|
14
15
|
.map((d) => {
|
|
15
|
-
const
|
|
16
|
+
const filePath = join(d.parentPath, d.name);
|
|
17
|
+
const fullPath = relative(ProcessOptions.cwd, filePath).replaceAll("\\", "/");
|
|
16
18
|
let size = 0, mtime = new Date();
|
|
17
19
|
try {
|
|
18
20
|
const s = statSync(fullPath);
|
|
@@ -20,7 +22,7 @@ export default function sendFileList(url, req, res) {
|
|
|
20
22
|
mtime = s.mtime;
|
|
21
23
|
}
|
|
22
24
|
catch { }
|
|
23
|
-
const isPacked =
|
|
25
|
+
const isPacked = hasPackDecorator(filePath);
|
|
24
26
|
return { name: d.name, dir: d.parentPath, fullPath, isPacked, size, mtime };
|
|
25
27
|
})
|
|
26
28
|
.filter((x) => packed ? x.isPacked : true)
|
|
@@ -34,7 +36,7 @@ export default function sendFileList(url, req, res) {
|
|
|
34
36
|
const text = JSON.stringify(entries);
|
|
35
37
|
res.writeHead(200, {
|
|
36
38
|
"Content-Type": "text/json",
|
|
37
|
-
"cache-control": "no-cache"
|
|
39
|
+
"cache-control": "no-cache,no-store"
|
|
38
40
|
});
|
|
39
41
|
res.end(text);
|
|
40
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sendFileList.js","sourceRoot":"","sources":["../../../src/serve/send/sendFileList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"sendFileList.js","sourceRoot":"","sources":["../../../src/serve/send/sendFileList.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,7 +41,7 @@ export default function sendJS(filePath, req, res) {
|
|
|
41
41
|
text += `\n//# sourceMappingURL=${base}.map`;
|
|
42
42
|
res.writeHead(200, {
|
|
43
43
|
"content-type": "text/javascript",
|
|
44
|
-
"cache-control": "no-cache"
|
|
44
|
+
"cache-control": "no-cache,no-store"
|
|
45
45
|
});
|
|
46
46
|
res.end(text);
|
|
47
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sendJS.js","sourceRoot":"","sources":["../../../src/serve/send/sendJS.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,QAAgB,EAAE,GAAoB,EAAE,GAAmB;IAEtF,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,UAAkB,EAAE,EAAE;QAEhD,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,GAAG,CAAC;QACf,CAAC;QAED,IAAG,CAAC,UAAU,EAAE,CAAC;YACb,UAAU,GAAG,QAAQ,CAAC;QAC1B,CAAC;QAED,8BAA8B;QAE9B,+DAA+D;QAC/D,qCAAqC;QACrC,wCAAwC;QACxC,yCAAyC;QACzC,+CAA+C;QAC/C,QAAQ;QAER,2BAA2B;QAC3B,sCAAsC;QACtC,kCAAkC;QAClC,YAAY;QACZ,QAAQ;QAER,kBAAkB;QAClB,IAAI;QAGJ,kCAAkC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACxE,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QAClE,IAAI,UAAU,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAClF,kCAAkC;YAClC,+BAA+B;YAC/B,IAAI;YACJ,OAAO,QAAQ,CAAC;QACpB,CAAC;QAGD,OAAO,GAAG,CAAC;IACf,CAAC,CAAC;IAGF,IAAI,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAC,CAAC,CAAC;IAEhF,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEjC,IAAI,IAAI,0BAA0B,IAAI,MAAM,CAAC;IAE7C,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;QACf,cAAc,EAAE,iBAAiB;QACjC,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"sendJS.js","sourceRoot":"","sources":["../../../src/serve/send/sendJS.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,QAAgB,EAAE,GAAoB,EAAE,GAAmB;IAEtF,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,UAAkB,EAAE,EAAE;QAEhD,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,GAAG,CAAC;QACf,CAAC;QAED,IAAG,CAAC,UAAU,EAAE,CAAC;YACb,UAAU,GAAG,QAAQ,CAAC;QAC1B,CAAC;QAED,8BAA8B;QAE9B,+DAA+D;QAC/D,qCAAqC;QACrC,wCAAwC;QACxC,yCAAyC;QACzC,+CAA+C;QAC/C,QAAQ;QAER,2BAA2B;QAC3B,sCAAsC;QACtC,kCAAkC;QAClC,YAAY;QACZ,QAAQ;QAER,kBAAkB;QAClB,IAAI;QAGJ,kCAAkC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACxE,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QAClE,IAAI,UAAU,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAClF,kCAAkC;YAClC,+BAA+B;YAC/B,IAAI;YACJ,OAAO,QAAQ,CAAC;QACpB,CAAC;QAGD,OAAO,GAAG,CAAC;IACf,CAAC,CAAC;IAGF,IAAI,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAC,CAAC,CAAC;IAEhF,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEjC,IAAI,IAAI,0BAA0B,IAAI,MAAM,CAAC;IAE7C,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;QACf,cAAc,EAAE,iBAAiB;QACjC,eAAe,EAAE,mBAAmB;KAEvC,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
|
|
2
|
+
export default class Queue<T> {
|
|
3
|
+
|
|
4
|
+
head = 0;
|
|
5
|
+
tail = 0;
|
|
6
|
+
|
|
7
|
+
store: Map<any,any> = new Map();
|
|
8
|
+
|
|
9
|
+
peek() {
|
|
10
|
+
return this.store.get(this.head);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
public enqueue(item: T) {
|
|
14
|
+
this.store.set(this.tail, item);
|
|
15
|
+
this.tail++;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
public dequeue() {
|
|
19
|
+
const { head, tail } = this;
|
|
20
|
+
const size = tail - head;
|
|
21
|
+
if (size <= 0) {
|
|
22
|
+
return void 0;
|
|
23
|
+
}
|
|
24
|
+
const item = this.store.get(head);
|
|
25
|
+
this.store.delete(head);
|
|
26
|
+
this.head++;
|
|
27
|
+
if (this.head === this.tail) {
|
|
28
|
+
this.head = 0;
|
|
29
|
+
this.tail = 0;
|
|
30
|
+
}
|
|
31
|
+
return item;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import Queue from "./Queue.js";
|
|
2
|
+
|
|
3
|
+
const sleep = (n) => new Promise((r) => setTimeout(r, n));
|
|
4
|
+
|
|
5
|
+
export default class TaskManager {
|
|
6
|
+
|
|
7
|
+
public rateLimit = 10;
|
|
8
|
+
|
|
9
|
+
private running: Set<any> = new Set();
|
|
10
|
+
|
|
11
|
+
private waiting: Queue<{ resolve, reject, fx }> = new Queue();
|
|
12
|
+
|
|
13
|
+
public queueRun<TR>(fx: (... a: any[]) => Promise<TR>): Promise<TR> {
|
|
14
|
+
|
|
15
|
+
const pr = new Promise((resolve, reject) => {
|
|
16
|
+
this.waiting.enqueue({ resolve, reject, fx });
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
// this is to prevent uncaught promise error.
|
|
20
|
+
// eslint-disable-next-line no-console
|
|
21
|
+
pr.catch((error) => console.error(error));
|
|
22
|
+
|
|
23
|
+
this.processQueue();
|
|
24
|
+
|
|
25
|
+
return pr as Promise<TR>;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
public wait() {
|
|
29
|
+
return new Promise<void>((resolve) => {
|
|
30
|
+
this.runAfterEnd(resolve);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
protected processQueue() {
|
|
35
|
+
for(;;) {
|
|
36
|
+
if (this.running.size >= this.rateLimit) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const t = this.waiting.dequeue();
|
|
41
|
+
if (!t) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const { fx, resolve, reject } = t;
|
|
46
|
+
|
|
47
|
+
this.running.add(fx);
|
|
48
|
+
|
|
49
|
+
fx().then(
|
|
50
|
+
(r) => {
|
|
51
|
+
this.running.delete(fx);
|
|
52
|
+
setTimeout(() => this.processQueue(), 1);
|
|
53
|
+
resolve(r);
|
|
54
|
+
},
|
|
55
|
+
(e) => {
|
|
56
|
+
this.running.delete(fx);
|
|
57
|
+
setTimeout(() => this.processQueue(), 1);
|
|
58
|
+
reject(e);
|
|
59
|
+
}
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* You can queue this function that will be
|
|
67
|
+
* executed after all pending fetch tasks
|
|
68
|
+
* are finished
|
|
69
|
+
* @param fx any function
|
|
70
|
+
*/
|
|
71
|
+
public runAfterEnd(fx: () => any) {
|
|
72
|
+
(async () => {
|
|
73
|
+
for(;;) {
|
|
74
|
+
await sleep(100);
|
|
75
|
+
if (this.running.size > 0) {
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
await sleep(10);
|
|
79
|
+
if (this.running.size > 0) {
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
fx();
|
|
85
|
+
})().catch(console.error);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { readFile } from "node:fs/promises";
|
|
3
|
+
|
|
4
|
+
export default function hasPackDecorator(filePath: string) {
|
|
5
|
+
return /((@Pack)|("@web-atoms\/core\/dist\/Pack\.js"))/mu.test(readFileSync(filePath, "utf-8"));
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export async function hasPackDecoratorAsync(filePath: string) {
|
|
9
|
+
return /((@Pack)|("@web-atoms\/core\/dist\/Pack\.js"))/mu.test(await readFile(filePath, "utf-8"));
|
|
10
|
+
}
|