@utoo/web 1.1.0 → 1.2.0-rc.2
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/esm/f4423b245e72d3fa009d.wasm +0 -0
- package/esm/internalProject.d.ts +1 -0
- package/esm/internalProject.js +10 -85
- package/esm/loaderWorker.js +2 -0
- package/esm/loaderWorker.js.LICENSE.txt +44 -0
- package/esm/loaderWorkerPool.d.ts +3 -0
- package/esm/loaderWorkerPool.js +125 -0
- package/esm/project.d.ts +1 -0
- package/esm/project.js +2 -0
- package/esm/sabcom.d.ts +31 -0
- package/esm/sabcom.js +71 -0
- package/esm/type.d.ts +1 -0
- package/esm/utoo/index.d.ts +72 -47
- package/esm/utoo/index.js +257 -165
- package/esm/utoo/index_bg.wasm +0 -0
- package/esm/webpackLoaders/worker/cjs.js +253 -58
- package/esm/webpackLoaders/worker/index.d.ts +2 -2
- package/esm/webpackLoaders/worker/index.js +36 -26
- package/esm/webpackLoaders/worker/polyfills/fastGlobPolyfill.d.ts +2 -0
- package/esm/webpackLoaders/worker/polyfills/fastGlobPolyfill.js +48 -0
- package/esm/webpackLoaders/worker/polyfills/fsPolyfill.d.ts +124 -0
- package/esm/webpackLoaders/worker/polyfills/fsPolyfill.js +316 -0
- package/esm/webpackLoaders/worker/polyfills/fsPromisesPolyfill.d.ts +9 -0
- package/esm/webpackLoaders/worker/polyfills/fsPromisesPolyfill.js +9 -0
- package/esm/webpackLoaders/worker/polyfills/nodePolyFills.d.ts +94 -0
- package/esm/webpackLoaders/worker/polyfills/nodePolyFills.js +229 -0
- package/esm/webpackLoaders/worker/polyfills/workerThreadsPolyfill.d.ts +7 -0
- package/esm/webpackLoaders/worker/polyfills/workerThreadsPolyfill.js +16 -0
- package/esm/webpackLoaders/worker/type.d.ts +1 -1
- package/package.json +11 -11
- package/esm/webpackLoaders/worker/nodePolyFills.d.ts +0 -14
- package/esm/webpackLoaders/worker/nodePolyFills.js +0 -24
- package/esm/webpackLoaders/workerContent.d.ts +0 -2
- package/esm/webpackLoaders/workerContent.js +0 -1
|
Binary file
|
package/esm/internalProject.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ declare class InternalEndpoint implements ProjectEndpoint {
|
|
|
4
4
|
projectInternal?: ProjectInternal;
|
|
5
5
|
wasmInit?: ReturnType<typeof initWasm>;
|
|
6
6
|
options?: Omit<ProjectOptions, "workerUrl" | "serviceWorker">;
|
|
7
|
+
loaderWorkerPoolInitialized: boolean;
|
|
7
8
|
mount(opt: Omit<ProjectOptions, "workerUrl" | "serviceWorker">): Promise<void>;
|
|
8
9
|
install(packageLock: string, maxConcurrentDownloads?: number): Promise<void>;
|
|
9
10
|
build(): Promise<any>;
|
package/esm/internalProject.js
CHANGED
|
@@ -1,86 +1,9 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import webpackLoadersCode from "./webpackLoaders/workerContent";
|
|
4
|
-
let nextWorkerId = 0;
|
|
5
|
-
const loaderWorkers = {};
|
|
6
|
-
async function getTurbopackLoaderAssets() {
|
|
7
|
-
const turbopackLoaderAssets = {};
|
|
8
|
-
const dirEntries = await internalEndpoint.projectInternal.readDir(".turbopack");
|
|
9
|
-
await Promise.all(dirEntries.map(async (entry) => {
|
|
10
|
-
// only collect .js files
|
|
11
|
-
if (entry.type === "file" && entry.name.endsWith(".js")) {
|
|
12
|
-
turbopackLoaderAssets[`./${entry.name}`] =
|
|
13
|
-
await internalEndpoint.projectInternal.readToString(`.turbopack/${entry.name}`);
|
|
14
|
-
}
|
|
15
|
-
}));
|
|
16
|
-
return turbopackLoaderAssets;
|
|
17
|
-
}
|
|
18
|
-
const createOrScalePool = async (binding, loadersImportMap) => {
|
|
19
|
-
while (true) {
|
|
20
|
-
try {
|
|
21
|
-
let poolOptions = await recvPoolRequest();
|
|
22
|
-
const { filename: entrypoint, maxConcurrency } = poolOptions;
|
|
23
|
-
const concurrency = Math.max(maxConcurrency, navigator.hardwareConcurrency);
|
|
24
|
-
const workers = loaderWorkers[entrypoint] || (loaderWorkers[entrypoint] = []);
|
|
25
|
-
if (workers.length < concurrency) {
|
|
26
|
-
for (let i = workers.length; i < concurrency; i++) {
|
|
27
|
-
nextWorkerId += 1;
|
|
28
|
-
const turbopackLoaderAssets = await getTurbopackLoaderAssets();
|
|
29
|
-
const blob = new Blob([webpackLoadersCode], {
|
|
30
|
-
type: "text/javascript",
|
|
31
|
-
});
|
|
32
|
-
const workerUrl = URL.createObjectURL(blob);
|
|
33
|
-
const worker = new Worker(workerUrl);
|
|
34
|
-
worker.postMessage([
|
|
35
|
-
// @ts-ignore
|
|
36
|
-
initWasm.__wbindgen_wasm_module,
|
|
37
|
-
binding.memory,
|
|
38
|
-
{
|
|
39
|
-
workerData: {
|
|
40
|
-
poolId: entrypoint,
|
|
41
|
-
workerId: nextWorkerId,
|
|
42
|
-
},
|
|
43
|
-
loaderAssets: {
|
|
44
|
-
importMaps: { ...turbopackLoaderAssets, ...loadersImportMap },
|
|
45
|
-
entrypoint: entrypoint.replace(".turbopack/", ""),
|
|
46
|
-
},
|
|
47
|
-
},
|
|
48
|
-
]);
|
|
49
|
-
// @ts-ignore
|
|
50
|
-
worker.workerId = nextWorkerId;
|
|
51
|
-
// @ts-ignore
|
|
52
|
-
workers.push(worker);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
else if (workers.length > concurrency) {
|
|
56
|
-
const workersToStop = workers.splice(0, workers.length - concurrency);
|
|
57
|
-
workersToStop.forEach((worker) => worker.terminate());
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
catch (_e) {
|
|
61
|
-
// rust channel closed. do nothing
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
const waitingForWorkerTermination = async () => {
|
|
67
|
-
while (true) {
|
|
68
|
-
try {
|
|
69
|
-
const { filename, workerId } = await recvWorkerTermination();
|
|
70
|
-
const workers = loaderWorkers[filename];
|
|
71
|
-
const workerIdx = workers.findIndex((worker) => worker.workerId === workerId);
|
|
72
|
-
if (workerIdx > -1) {
|
|
73
|
-
const worker = workers.splice(workerIdx, 1);
|
|
74
|
-
worker[0].terminate();
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
catch (_e) {
|
|
78
|
-
// rust channel closed. do nothing
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
};
|
|
1
|
+
import { runLoaderWorkerPool } from "./loaderWorkerPool";
|
|
2
|
+
import initWasm, { init_log_filter, Project as ProjectInternal, } from "./utoo";
|
|
83
3
|
class InternalEndpoint {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.loaderWorkerPoolInitialized = false;
|
|
6
|
+
}
|
|
84
7
|
// This should be called only once
|
|
85
8
|
async mount(opt) {
|
|
86
9
|
var _a;
|
|
@@ -100,10 +23,12 @@ class InternalEndpoint {
|
|
|
100
23
|
return;
|
|
101
24
|
}
|
|
102
25
|
async build() {
|
|
103
|
-
var _a;
|
|
26
|
+
var _a, _b;
|
|
104
27
|
const binding = await this.wasmInit;
|
|
105
|
-
|
|
106
|
-
|
|
28
|
+
if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.loaderWorkerUrl) && !this.loaderWorkerPoolInitialized) {
|
|
29
|
+
runLoaderWorkerPool(binding, this.options.cwd, this.projectInternal, this.options.loaderWorkerUrl, (_b = this.options) === null || _b === void 0 ? void 0 : _b.loadersImportMap);
|
|
30
|
+
this.loaderWorkerPoolInitialized = true;
|
|
31
|
+
}
|
|
107
32
|
return await this.projectInternal.build();
|
|
108
33
|
}
|
|
109
34
|
async readFile(path, encoding) {
|