one 2.7.5 → 2.7.6
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/android/src/main/java/com/margelo/nitro/one/HybridOneFileSystem.kt +2 -10
- package/android/src/main/java/com/margelo/nitro/one/HybridOneFonts.kt +8 -21
- package/android/src/main/java/com/margelo/nitro/one/OneAtomicWrite.kt +19 -0
- package/android/src/main/java/com/margelo/nitro/one/OneUpdatesLauncher.kt +2 -8
- package/dist/cjs/cli/buildPageWorker.cjs +2 -1
- package/dist/cjs/cli/buildPageWorker.native.cjs +2 -1
- package/dist/cjs/cli/buildPageWorker.native.js +2 -1
- package/dist/cjs/cli/buildPageWorker.native.js.map +1 -1
- package/dist/cjs/cli/workerPool.cjs +4 -1
- package/dist/cjs/cli/workerPool.native.cjs +6 -1
- package/dist/cjs/cli/workerPool.native.js +6 -1
- package/dist/cjs/cli/workerPool.native.js.map +1 -1
- package/dist/cjs/platform/compose.android.cjs +2 -2
- package/dist/cjs/platform/compose.android.js +2 -2
- package/dist/cjs/platform/compose.android.js.map +1 -1
- package/dist/cjs/platform/generated/Controls.native.cjs +6 -6
- package/dist/cjs/platform/generated/Controls.native.js +6 -6
- package/dist/cjs/platform/generated/Controls.native.js.map +1 -1
- package/dist/cjs/platform/syncStore.cjs +15 -5
- package/dist/cjs/platform/syncStore.native.cjs +20 -8
- package/dist/cjs/platform/syncStore.native.js +20 -8
- package/dist/cjs/platform/syncStore.native.js.map +1 -1
- package/dist/esm/cli/buildPageWorker.mjs +2 -1
- package/dist/esm/cli/buildPageWorker.mjs.map +1 -1
- package/dist/esm/cli/buildPageWorker.native.js +2 -1
- package/dist/esm/cli/buildPageWorker.native.js.map +1 -1
- package/dist/esm/cli/workerPool.mjs +4 -1
- package/dist/esm/cli/workerPool.mjs.map +1 -1
- package/dist/esm/cli/workerPool.native.js +6 -1
- package/dist/esm/cli/workerPool.native.js.map +1 -1
- package/dist/esm/platform/compose.android.js +3 -3
- package/dist/esm/platform/compose.android.js.map +1 -1
- package/dist/esm/platform/generated/Controls.native.js +7 -7
- package/dist/esm/platform/generated/Controls.native.js.map +1 -1
- package/dist/esm/platform/syncStore.mjs +14 -5
- package/dist/esm/platform/syncStore.mjs.map +1 -1
- package/dist/esm/platform/syncStore.native.js +19 -8
- package/dist/esm/platform/syncStore.native.js.map +1 -1
- package/package.json +15 -15
- package/src/cli/buildPageWorker.ts +4 -1
- package/src/cli/workerPool.test.ts +62 -0
- package/src/cli/workerPool.ts +5 -1
- package/src/platform/compose.android.tsx +5 -7
- package/src/platform/generated/Controls.native.tsx +7 -7
- package/src/platform/syncNativeState.ts +1 -1
- package/src/platform/syncStore.ts +21 -10
- package/types/cli/workerPool.d.ts.map +1 -1
- package/types/platform/compose.android.d.ts.map +1 -1
- package/types/platform/syncStore.d.ts +1 -0
- package/types/platform/syncStore.d.ts.map +1 -1
|
@@ -69,11 +69,7 @@ class HybridOneFileSystem : HybridOneFileSystemSpec() {
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
-
|
|
73
|
-
try {
|
|
74
|
-
FileOutputStream(staging).use { it.write(bytes) }
|
|
75
|
-
Os.rename(staging.path, target.path)
|
|
76
|
-
} finally { staging.delete() }
|
|
72
|
+
writeAtomically(target, bytes)
|
|
77
73
|
}
|
|
78
74
|
|
|
79
75
|
override fun copy(fromUri: String, toUri: String): Promise<Unit> = query("copy") {
|
|
@@ -458,11 +454,7 @@ class HybridOneFileSystem : HybridOneFileSystemSpec() {
|
|
|
458
454
|
FileOutputStream(target, true).use { it.write(data) }
|
|
459
455
|
return
|
|
460
456
|
}
|
|
461
|
-
|
|
462
|
-
try {
|
|
463
|
-
FileOutputStream(staging).use { it.write(data) }
|
|
464
|
-
Os.rename(staging.path, target.path)
|
|
465
|
-
} finally { staging.delete() }
|
|
457
|
+
writeAtomically(target, data)
|
|
466
458
|
}
|
|
467
459
|
|
|
468
460
|
private fun entryName(name: String): String {
|
|
@@ -126,8 +126,10 @@ class HybridOneFonts : HybridOneFontsSpec() {
|
|
|
126
126
|
}
|
|
127
127
|
// the resource name carries no extension; createFromFile sniffs
|
|
128
128
|
// the content, so the suffix is only a label.
|
|
129
|
-
val
|
|
129
|
+
val directory = File(context.cacheDir, "one-fonts")
|
|
130
|
+
val file = File(directory, "$resourceName.ttf")
|
|
130
131
|
if (!file.isFile) {
|
|
132
|
+
directory.mkdirs()
|
|
131
133
|
writeAtomically(file, bytes)
|
|
132
134
|
}
|
|
133
135
|
return file
|
|
@@ -137,7 +139,8 @@ class HybridOneFonts : HybridOneFontsSpec() {
|
|
|
137
139
|
val extension = url.path.substringAfterLast('.', "ttf").lowercase()
|
|
138
140
|
val digest = MessageDigest.getInstance("SHA-256").digest(url.toString().toByteArray())
|
|
139
141
|
val fileName = digest.joinToString("") { "%02x".format(it) } + "." + extension
|
|
140
|
-
val
|
|
142
|
+
val directory = File(context.cacheDir, "one-fonts")
|
|
143
|
+
val file = File(directory, fileName)
|
|
141
144
|
if (file.isFile) {
|
|
142
145
|
return file
|
|
143
146
|
}
|
|
@@ -145,26 +148,10 @@ class HybridOneFonts : HybridOneFontsSpec() {
|
|
|
145
148
|
if (bytes.isEmpty()) {
|
|
146
149
|
throw OneNativeError("E_FONTS_DOWNLOAD", "Fonts.load: \"$name\" downloaded zero bytes")
|
|
147
150
|
}
|
|
151
|
+
// concurrent loads of one font (a strictmode double mount) each
|
|
152
|
+
// write this file while another may have mapped it for Typeface.
|
|
153
|
+
directory.mkdirs()
|
|
148
154
|
writeAtomically(file, bytes)
|
|
149
155
|
return file
|
|
150
156
|
}
|
|
151
|
-
|
|
152
|
-
// concurrent loads of one font (a StrictMode double mount, or two
|
|
153
|
-
// screens) each write the cache file. writing in place truncates a file
|
|
154
|
-
// another load has already mapped for Typeface, which faults with
|
|
155
|
-
// SIGBUS, so each write goes to its own temp file and renames over the
|
|
156
|
-
// target, like the ios atomic write.
|
|
157
|
-
private fun writeAtomically(file: File, bytes: ByteArray) {
|
|
158
|
-
val directory = file.parentFile ?: throw IllegalStateException("Fonts: no cache directory")
|
|
159
|
-
directory.mkdirs()
|
|
160
|
-
val temp = File.createTempFile(file.name, ".part", directory)
|
|
161
|
-
try {
|
|
162
|
-
temp.writeBytes(bytes)
|
|
163
|
-
if (!temp.renameTo(file)) {
|
|
164
|
-
throw IllegalStateException("Fonts: could not move ${temp.name} into place")
|
|
165
|
-
}
|
|
166
|
-
} finally {
|
|
167
|
-
temp.delete()
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
157
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
package com.margelo.nitro.one
|
|
2
|
+
|
|
3
|
+
import android.system.Os
|
|
4
|
+
import java.io.File
|
|
5
|
+
import java.io.FileOutputStream
|
|
6
|
+
|
|
7
|
+
// replaces a file whole: the bytes go to a sibling temp file that renames
|
|
8
|
+
// over the target, so a reader that already opened or mapped the old file
|
|
9
|
+
// keeps it intact and nobody sees a partial write. truncating in place
|
|
10
|
+
// faults a reader that mapped the file (SIGBUS).
|
|
11
|
+
internal fun writeAtomically(target: File, bytes: ByteArray) {
|
|
12
|
+
val staging = File.createTempFile(".one-write-", null, target.parentFile)
|
|
13
|
+
try {
|
|
14
|
+
FileOutputStream(staging).use { it.write(bytes) }
|
|
15
|
+
Os.rename(staging.path, target.path)
|
|
16
|
+
} finally {
|
|
17
|
+
staging.delete()
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -294,14 +294,8 @@ object OneUpdatesLauncher {
|
|
|
294
294
|
val launching = state.launching
|
|
295
295
|
if (launching != null) json.put("launching", launching)
|
|
296
296
|
else json.put("launching", JSONObject.NULL)
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
val tmp = File(dir, "$STATE_FILE_NAME.tmp")
|
|
300
|
-
tmp.writeText(json.toString())
|
|
301
|
-
if (!tmp.renameTo(stateFile())) {
|
|
302
|
-
tmp.copyTo(stateFile(), overwrite = true)
|
|
303
|
-
tmp.delete()
|
|
304
|
-
}
|
|
297
|
+
directory().mkdirs()
|
|
298
|
+
writeAtomically(stateFile(), json.toString().toByteArray())
|
|
305
299
|
}
|
|
306
300
|
|
|
307
301
|
// MARK: - shared helpers
|
|
@@ -50,10 +50,11 @@ import_node_worker_threads.parentPort.on("message", async (msg) => {
|
|
|
50
50
|
const result = await runWithAsyncLocalContext(async () => {
|
|
51
51
|
return await buildPage(msg.args.serverEntry, msg.args.routerRoot, msg.args.path, msg.args.relativeId, msg.args.params, msg.args.foundRoute, msg.args.clientManifestEntry, msg.args.staticDir, msg.args.clientDir, msg.args.builtMiddlewares, msg.args.serverJsPath, msg.args.preloads, msg.args.allCSS, msg.args.layoutCSS, msg.args.routePreloads, msg.args.allCSSContents, msg.args.criticalPreloads, msg.args.deferredPreloads, msg.args.useAfterLCP, msg.args.useAfterLCPAggressive);
|
|
52
52
|
});
|
|
53
|
+
const { loaderData: _loaderData, cssContents: _cssContents, ...buildInfo } = result;
|
|
53
54
|
import_node_worker_threads.parentPort.postMessage({
|
|
54
55
|
type: "done",
|
|
55
56
|
id: msg.id,
|
|
56
|
-
result
|
|
57
|
+
result: buildInfo
|
|
57
58
|
});
|
|
58
59
|
} catch (err) {
|
|
59
60
|
import_node_worker_threads.parentPort.postMessage({
|
|
@@ -52,10 +52,11 @@ import_worker_threads.parentPort.on("message", async function(msg) {
|
|
|
52
52
|
var result = await runWithAsyncLocalContext(async function() {
|
|
53
53
|
return await buildPage(msg.args.serverEntry, msg.args.routerRoot, msg.args.path, msg.args.relativeId, msg.args.params, msg.args.foundRoute, msg.args.clientManifestEntry, msg.args.staticDir, msg.args.clientDir, msg.args.builtMiddlewares, msg.args.serverJsPath, msg.args.preloads, msg.args.allCSS, msg.args.layoutCSS, msg.args.routePreloads, msg.args.allCSSContents, msg.args.criticalPreloads, msg.args.deferredPreloads, msg.args.useAfterLCP, msg.args.useAfterLCPAggressive);
|
|
54
54
|
});
|
|
55
|
+
var { loaderData: _loaderData, cssContents: _cssContents, ...buildInfo } = result;
|
|
55
56
|
import_worker_threads.parentPort.postMessage({
|
|
56
57
|
type: "done",
|
|
57
58
|
id: msg.id,
|
|
58
|
-
result
|
|
59
|
+
result: buildInfo
|
|
59
60
|
});
|
|
60
61
|
} catch (err) {
|
|
61
62
|
import_worker_threads.parentPort.postMessage({
|
|
@@ -52,10 +52,11 @@ import_worker_threads.parentPort.on("message", async function(msg) {
|
|
|
52
52
|
var result = await runWithAsyncLocalContext(async function() {
|
|
53
53
|
return await buildPage(msg.args.serverEntry, msg.args.routerRoot, msg.args.path, msg.args.relativeId, msg.args.params, msg.args.foundRoute, msg.args.clientManifestEntry, msg.args.staticDir, msg.args.clientDir, msg.args.builtMiddlewares, msg.args.serverJsPath, msg.args.preloads, msg.args.allCSS, msg.args.layoutCSS, msg.args.routePreloads, msg.args.allCSSContents, msg.args.criticalPreloads, msg.args.deferredPreloads, msg.args.useAfterLCP, msg.args.useAfterLCPAggressive);
|
|
54
54
|
});
|
|
55
|
+
var { loaderData: _loaderData, cssContents: _cssContents, ...buildInfo } = result;
|
|
55
56
|
import_worker_threads.parentPort.postMessage({
|
|
56
57
|
type: "done",
|
|
57
58
|
id: msg.id,
|
|
58
|
-
result
|
|
59
|
+
result: buildInfo
|
|
59
60
|
});
|
|
60
61
|
} catch (err) {
|
|
61
62
|
import_worker_threads.parentPort.postMessage({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildPageWorker.native.js","names":[],"sources":["cjs/cli/buildPageWorker.native.js"],"sourcesContent":["\"use strict\";\nvar import_worker_threads = require(\"worker_threads\");\nvar import_workerImport = require(\"../utils/workerImport\");\nvar import_setServerGlobals = require(\"../server/setServerGlobals\");\nconst import_meta = {};\nif (!import_worker_threads.parentPort) {\n console.error(\"Must be run as a worker thread\");\n process.exit(1);\n}\n(0, import_setServerGlobals.setServerGlobals)();\nif (!process.env.NODE_ENV) {\n process.env.NODE_ENV = \"production\";\n}\nvar buildPageFn = null;\nvar runWithAsyncLocalContextFn = null;\nvar initialized = false;\nasync function ensureImports() {\n if (!buildPageFn) {\n var mod = await (0, import_workerImport.workerImport)(\"./buildPage\", import_meta.url);\n buildPageFn = mod.buildPage;\n }\n if (!runWithAsyncLocalContextFn) {\n var mod1 = await (0, import_workerImport.workerImport)(\"../vite/one-server-only\", import_meta.url);\n runWithAsyncLocalContextFn = mod1.runWithAsyncLocalContext;\n }\n return {\n buildPage: buildPageFn,\n runWithAsyncLocalContext: runWithAsyncLocalContextFn\n };\n}\nasync function initializeWorker(oneOptions) {\n if (initialized) return;\n if (!oneOptions) {\n throw new Error(\"Worker must receive oneOptions from main thread\");\n }\n globalThis[\"__vxrnPluginConfig__\"] = oneOptions;\n initialized = true;\n}\nimport_worker_threads.parentPort.on(\"message\", async function(msg) {\n if (msg.type === \"init\") {\n await initializeWorker(msg.oneOptions);\n import_worker_threads.parentPort.postMessage({\n type: \"init-done\",\n id: msg.id\n });\n return;\n }\n if (msg.type === \"build\") {\n try {\n var { buildPage, runWithAsyncLocalContext } = await ensureImports();\n var result = await runWithAsyncLocalContext(async function() {\n return await buildPage(msg.args.serverEntry, msg.args.routerRoot, msg.args.path, msg.args.relativeId, msg.args.params, msg.args.foundRoute, msg.args.clientManifestEntry, msg.args.staticDir, msg.args.clientDir, msg.args.builtMiddlewares, msg.args.serverJsPath, msg.args.preloads, msg.args.allCSS, msg.args.layoutCSS, msg.args.routePreloads, msg.args.allCSSContents, msg.args.criticalPreloads, msg.args.deferredPreloads, msg.args.useAfterLCP, msg.args.useAfterLCPAggressive);\n });\n import_worker_threads.parentPort.postMessage({\n type: \"done\",\n id: msg.id,\n result\n });\n } catch (err) {\n import_worker_threads.parentPort.postMessage({\n type: \"error\",\n id: msg.id,\n error: err instanceof Error ? err.message : String(err),\n stack: err instanceof Error ? err.stack : void 0\n });\n }\n }\n});\nimport_worker_threads.parentPort.postMessage({\n type: \"ready\"\n});\n//# sourceMappingURL=buildPageWorker.js.map\n"],"mappings":";;;AACA,IAAI,wBAAwB,QAAQ,gBAAgB;AACpD,IAAI,sBAAsB,QAAQ,iCAAuB;AACzD,IAAI,0BAA0B,QAAQ,sCAA4B;AAClE,MAAM,cAAc,CAAC;AACrB,IAAI,CAAC,sBAAsB,YAAY;CACrC,QAAQ,MAAM,gCAAgC;CAC9C,QAAQ,KAAK,CAAC;AAChB;CACC,GAAG,wBAAwB,iBAAgB,CAAE;AAC9C,IAAI,CAAC,QAAQ,IAAI,UAAU;CACzB,QAAQ,IAAI,WAAW;AACzB;AACA,IAAI,cAAc;AAClB,IAAI,6BAA6B;AACjC,IAAI,cAAc;AAClB,eAAe,gBAAgB;CAC7B,IAAI,CAAC,aAAa;EAChB,IAAI,MAAM,OAAO,GAAG,oBAAoB,aAAY,CAAE,eAAe,YAAY,GAAG;EACpF,cAAc,IAAI;CACpB;CACA,IAAI,CAAC,4BAA4B;EAC/B,IAAI,OAAO,OAAO,GAAG,oBAAoB,aAAY,CAAE,2BAA2B,YAAY,GAAG;EACjG,6BAA6B,KAAK;CACpC;CACA,OAAO;EACL,WAAW;EACX,0BAA0B;CAC5B;AACF;AACA,eAAe,iBAAiB,YAAY;CAC1C,IAAI,aAAa;CACjB,IAAI,CAAC,YAAY;EACf,MAAM,IAAI,MAAM,iDAAiD;CACnE;CACA,WAAW,0BAA0B;CACrC,cAAc;AAChB;AACA,sBAAsB,WAAW,GAAG,WAAW,eAAe,KAAK;CACjE,IAAI,IAAI,SAAS,QAAQ;EACvB,MAAM,iBAAiB,IAAI,UAAU;EACrC,sBAAsB,WAAW,YAAY;GAC3C,MAAM;GACN,IAAI,IAAI;EACV,CAAC;EACD;CACF;CACA,IAAI,IAAI,SAAS,SAAS;EACxB,IAAI;GACF,IAAI,EAAE,WAAW,6BAA6B,MAAM,cAAc;GAClE,IAAI,SAAS,MAAM,yBAAyB,iBAAiB;IAC3D,OAAO,MAAM,UAAU,IAAI,KAAK,aAAa,IAAI,KAAK,YAAY,IAAI,KAAK,MAAM,IAAI,KAAK,YAAY,IAAI,KAAK,QAAQ,IAAI,KAAK,YAAY,IAAI,KAAK,qBAAqB,IAAI,KAAK,WAAW,IAAI,KAAK,WAAW,IAAI,KAAK,kBAAkB,IAAI,KAAK,cAAc,IAAI,KAAK,UAAU,IAAI,KAAK,QAAQ,IAAI,KAAK,WAAW,IAAI,KAAK,eAAe,IAAI,KAAK,gBAAgB,IAAI,KAAK,kBAAkB,IAAI,KAAK,kBAAkB,IAAI,KAAK,aAAa,IAAI,KAAK,qBAAqB;GACzd,CAAC;GACD,sBAAsB,WAAW,YAAY;IAC3C,MAAM;IACN,IAAI,IAAI;IACR;
|
|
1
|
+
{"version":3,"file":"buildPageWorker.native.js","names":[],"sources":["cjs/cli/buildPageWorker.native.js"],"sourcesContent":["\"use strict\";\nvar import_worker_threads = require(\"worker_threads\");\nvar import_workerImport = require(\"../utils/workerImport\");\nvar import_setServerGlobals = require(\"../server/setServerGlobals\");\nconst import_meta = {};\nif (!import_worker_threads.parentPort) {\n console.error(\"Must be run as a worker thread\");\n process.exit(1);\n}\n(0, import_setServerGlobals.setServerGlobals)();\nif (!process.env.NODE_ENV) {\n process.env.NODE_ENV = \"production\";\n}\nvar buildPageFn = null;\nvar runWithAsyncLocalContextFn = null;\nvar initialized = false;\nasync function ensureImports() {\n if (!buildPageFn) {\n var mod = await (0, import_workerImport.workerImport)(\"./buildPage\", import_meta.url);\n buildPageFn = mod.buildPage;\n }\n if (!runWithAsyncLocalContextFn) {\n var mod1 = await (0, import_workerImport.workerImport)(\"../vite/one-server-only\", import_meta.url);\n runWithAsyncLocalContextFn = mod1.runWithAsyncLocalContext;\n }\n return {\n buildPage: buildPageFn,\n runWithAsyncLocalContext: runWithAsyncLocalContextFn\n };\n}\nasync function initializeWorker(oneOptions) {\n if (initialized) return;\n if (!oneOptions) {\n throw new Error(\"Worker must receive oneOptions from main thread\");\n }\n globalThis[\"__vxrnPluginConfig__\"] = oneOptions;\n initialized = true;\n}\nimport_worker_threads.parentPort.on(\"message\", async function(msg) {\n if (msg.type === \"init\") {\n await initializeWorker(msg.oneOptions);\n import_worker_threads.parentPort.postMessage({\n type: \"init-done\",\n id: msg.id\n });\n return;\n }\n if (msg.type === \"build\") {\n try {\n var { buildPage, runWithAsyncLocalContext } = await ensureImports();\n var result = await runWithAsyncLocalContext(async function() {\n return await buildPage(msg.args.serverEntry, msg.args.routerRoot, msg.args.path, msg.args.relativeId, msg.args.params, msg.args.foundRoute, msg.args.clientManifestEntry, msg.args.staticDir, msg.args.clientDir, msg.args.builtMiddlewares, msg.args.serverJsPath, msg.args.preloads, msg.args.allCSS, msg.args.layoutCSS, msg.args.routePreloads, msg.args.allCSSContents, msg.args.criticalPreloads, msg.args.deferredPreloads, msg.args.useAfterLCP, msg.args.useAfterLCPAggressive);\n });\n var { loaderData: _loaderData, cssContents: _cssContents, ...buildInfo } = result;\n import_worker_threads.parentPort.postMessage({\n type: \"done\",\n id: msg.id,\n result: buildInfo\n });\n } catch (err) {\n import_worker_threads.parentPort.postMessage({\n type: \"error\",\n id: msg.id,\n error: err instanceof Error ? err.message : String(err),\n stack: err instanceof Error ? err.stack : void 0\n });\n }\n }\n});\nimport_worker_threads.parentPort.postMessage({\n type: \"ready\"\n});\n//# sourceMappingURL=buildPageWorker.js.map\n"],"mappings":";;;AACA,IAAI,wBAAwB,QAAQ,gBAAgB;AACpD,IAAI,sBAAsB,QAAQ,iCAAuB;AACzD,IAAI,0BAA0B,QAAQ,sCAA4B;AAClE,MAAM,cAAc,CAAC;AACrB,IAAI,CAAC,sBAAsB,YAAY;CACrC,QAAQ,MAAM,gCAAgC;CAC9C,QAAQ,KAAK,CAAC;AAChB;CACC,GAAG,wBAAwB,iBAAgB,CAAE;AAC9C,IAAI,CAAC,QAAQ,IAAI,UAAU;CACzB,QAAQ,IAAI,WAAW;AACzB;AACA,IAAI,cAAc;AAClB,IAAI,6BAA6B;AACjC,IAAI,cAAc;AAClB,eAAe,gBAAgB;CAC7B,IAAI,CAAC,aAAa;EAChB,IAAI,MAAM,OAAO,GAAG,oBAAoB,aAAY,CAAE,eAAe,YAAY,GAAG;EACpF,cAAc,IAAI;CACpB;CACA,IAAI,CAAC,4BAA4B;EAC/B,IAAI,OAAO,OAAO,GAAG,oBAAoB,aAAY,CAAE,2BAA2B,YAAY,GAAG;EACjG,6BAA6B,KAAK;CACpC;CACA,OAAO;EACL,WAAW;EACX,0BAA0B;CAC5B;AACF;AACA,eAAe,iBAAiB,YAAY;CAC1C,IAAI,aAAa;CACjB,IAAI,CAAC,YAAY;EACf,MAAM,IAAI,MAAM,iDAAiD;CACnE;CACA,WAAW,0BAA0B;CACrC,cAAc;AAChB;AACA,sBAAsB,WAAW,GAAG,WAAW,eAAe,KAAK;CACjE,IAAI,IAAI,SAAS,QAAQ;EACvB,MAAM,iBAAiB,IAAI,UAAU;EACrC,sBAAsB,WAAW,YAAY;GAC3C,MAAM;GACN,IAAI,IAAI;EACV,CAAC;EACD;CACF;CACA,IAAI,IAAI,SAAS,SAAS;EACxB,IAAI;GACF,IAAI,EAAE,WAAW,6BAA6B,MAAM,cAAc;GAClE,IAAI,SAAS,MAAM,yBAAyB,iBAAiB;IAC3D,OAAO,MAAM,UAAU,IAAI,KAAK,aAAa,IAAI,KAAK,YAAY,IAAI,KAAK,MAAM,IAAI,KAAK,YAAY,IAAI,KAAK,QAAQ,IAAI,KAAK,YAAY,IAAI,KAAK,qBAAqB,IAAI,KAAK,WAAW,IAAI,KAAK,WAAW,IAAI,KAAK,kBAAkB,IAAI,KAAK,cAAc,IAAI,KAAK,UAAU,IAAI,KAAK,QAAQ,IAAI,KAAK,WAAW,IAAI,KAAK,eAAe,IAAI,KAAK,gBAAgB,IAAI,KAAK,kBAAkB,IAAI,KAAK,kBAAkB,IAAI,KAAK,aAAa,IAAI,KAAK,qBAAqB;GACzd,CAAC;GACD,IAAI,EAAE,YAAY,aAAa,aAAa,cAAc,GAAG,cAAc;GAC3E,sBAAsB,WAAW,YAAY;IAC3C,MAAM;IACN,IAAI,IAAI;IACR,QAAQ;GACV,CAAC;EACH,SAAS,KAAK;GACZ,sBAAsB,WAAW,YAAY;IAC3C,MAAM;IACN,IAAI,IAAI;IACR,OAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;IACtD,OAAO,eAAe,QAAQ,IAAI,QAAQ,KAAK;GACjD,CAAC;EACH;CACF;AACF,CAAC;AACD,sBAAsB,WAAW,YAAY,EAC3C,MAAM,QACR,CAAC"}
|
|
@@ -135,7 +135,10 @@ var BuildWorkerPool = class {
|
|
|
135
135
|
return new Promise((resolve, reject) => {
|
|
136
136
|
const pending = {
|
|
137
137
|
id,
|
|
138
|
-
resolve
|
|
138
|
+
resolve: (result) => resolve({
|
|
139
|
+
...result,
|
|
140
|
+
cssContents: args.allCSSContents
|
|
141
|
+
}),
|
|
139
142
|
reject
|
|
140
143
|
};
|
|
141
144
|
this.taskQueue.push({
|
|
@@ -205,7 +205,12 @@ var BuildWorkerPool = /* @__PURE__ */ (function() {
|
|
|
205
205
|
return new Promise(function(resolve, reject) {
|
|
206
206
|
var pending = {
|
|
207
207
|
id,
|
|
208
|
-
resolve
|
|
208
|
+
resolve: function resolve1(result) {
|
|
209
|
+
return resolve({
|
|
210
|
+
...result,
|
|
211
|
+
cssContents: args.allCSSContents
|
|
212
|
+
});
|
|
213
|
+
},
|
|
209
214
|
reject
|
|
210
215
|
};
|
|
211
216
|
_this.taskQueue.push({
|
|
@@ -205,7 +205,12 @@ var BuildWorkerPool = /* @__PURE__ */ (function() {
|
|
|
205
205
|
return new Promise(function(resolve, reject) {
|
|
206
206
|
var pending = {
|
|
207
207
|
id,
|
|
208
|
-
resolve
|
|
208
|
+
resolve: function resolve1(result) {
|
|
209
|
+
return resolve({
|
|
210
|
+
...result,
|
|
211
|
+
cssContents: args.allCSSContents
|
|
212
|
+
});
|
|
213
|
+
},
|
|
209
214
|
reject
|
|
210
215
|
};
|
|
211
216
|
_this.taskQueue.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workerPool.native.js","names":[],"sources":["cjs/cli/workerPool.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar workerPool_exports = {};\n__export(workerPool_exports, {\n BuildWorkerPool: () => BuildWorkerPool,\n getWorkerPool: () => getWorkerPool,\n terminateWorkerPool: () => terminateWorkerPool\n});\nmodule.exports = __toCommonJS(workerPool_exports);\nvar import_worker_threads = require(\"worker_threads\");\nvar import_os = require(\"os\");\nvar import_url = require(\"url\");\nvar import_path = require(\"path\");\nconst import_meta = {};\nfunction _class_call_check(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else obj[key] = value;\n return obj;\n}\nvar workerDirectory = typeof __dirname === \"string\" ? (0, import_path.join)(__dirname, \"..\", \"..\", \"esm\", \"cli\") : (0, import_path.dirname)((0, import_url.fileURLToPath)(import_meta.url));\nvar BuildWorkerPool = /* @__PURE__ */ (function() {\n \"use strict\";\n function BuildWorkerPool2() {\n var _this, _loop = function(i2) {\n var worker = new import_worker_threads.Worker(workerPath);\n worker.on(\"message\", function(msg) {\n if (msg.type === \"ready\") {\n _this1.readyCount++;\n _this1.available.push(worker);\n if (_this1.readyCount === size) {\n _this1._resolveReady();\n }\n } else if (msg.type === \"init-done\") {\n _this1.initCount++;\n if (_this1.initCount === size) {\n _this1._resolveInitialized();\n }\n _this1.dispatch();\n } else if (msg.type === \"done\" || msg.type === \"error\") {\n var pending = _this1.pendingById.get(msg.id);\n if (pending) {\n _this1.pendingById.delete(msg.id);\n if (msg.type === \"done\") {\n pending.resolve(msg.result);\n } else {\n pending.reject(new Error(msg.error));\n }\n }\n _this1.available.push(worker);\n _this1.dispatch();\n }\n });\n worker.on(\"error\", function(err) {\n console.error(\"[BuildWorkerPool] Worker error:\", err);\n });\n _this.workers.push(worker);\n };\n var _this1 = this;\n var size = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : Math.max(1, (0, import_os.cpus)().length - 1);\n _class_call_check(this, BuildWorkerPool2);\n _define_property(this, \"workers\", []);\n _define_property(this, \"available\", []);\n _define_property(this, \"taskQueue\", []);\n _define_property(this, \"pendingById\", /* @__PURE__ */ new Map());\n _define_property(this, \"nextId\", 0);\n _define_property(this, \"readyCount\", 0);\n _define_property(this, \"initCount\", 0);\n _define_property(this, \"_ready\", void 0);\n _define_property(this, \"_resolveReady\", void 0);\n _define_property(this, \"_initialized\", void 0);\n _define_property(this, \"_resolveInitialized\", void 0);\n _define_property(this, \"_terminated\", false);\n this._ready = new Promise(function(resolve) {\n _this1._resolveReady = resolve;\n });\n this._initialized = new Promise(function(resolve) {\n _this1._resolveInitialized = resolve;\n });\n var workerPath = (0, import_path.join)(workerDirectory, \"buildPageWorker.mjs\");\n for (var i = 0; i < size; i++) _this = this, _loop(i);\n }\n _create_class(BuildWorkerPool2, [\n {\n key: \"size\",\n get: function get() {\n return this.workers.length;\n }\n },\n {\n key: \"initialize\",\n value: (\n // initialize all workers with pre-loaded config from main thread\n async function initialize(oneOptions) {\n await this._ready;\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = this.workers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var worker = _step.value;\n worker.postMessage({\n type: \"init\",\n id: this.nextId++,\n oneOptions\n });\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n await this._initialized;\n }\n )\n },\n {\n key: \"dispatch\",\n value: function dispatch() {\n while (this.available.length > 0 && this.taskQueue.length > 0) {\n var worker = this.available.shift();\n var { msg, pending } = this.taskQueue.shift();\n this.pendingById.set(pending.id, pending);\n worker.postMessage(msg);\n }\n }\n },\n {\n key: \"buildPage\",\n value: async function buildPage(args) {\n var _this = this;\n var _args_foundRoute_layouts, _args_foundRoute_middlewares;\n if (this._terminated) {\n throw new Error(\"Worker pool has been terminated\");\n }\n var serializedRoute = {\n type: args.foundRoute.type,\n file: args.foundRoute.file,\n // only keep serializable layout data\n layouts: (_args_foundRoute_layouts = args.foundRoute.layouts) === null || _args_foundRoute_layouts === void 0 ? void 0 : _args_foundRoute_layouts.map(function(layout) {\n return {\n contextKey: layout.contextKey,\n loaderServerPath: layout.loaderServerPath,\n layoutRenderMode: layout.layoutRenderMode\n };\n }),\n // only keep contextKey from middlewares\n middlewares: (_args_foundRoute_middlewares = args.foundRoute.middlewares) === null || _args_foundRoute_middlewares === void 0 ? void 0 : _args_foundRoute_middlewares.map(function(mw) {\n return {\n contextKey: mw.contextKey\n };\n })\n };\n var id = this.nextId++;\n var msg = {\n type: \"build\",\n id,\n args: {\n ...args,\n foundRoute: serializedRoute\n }\n };\n return new Promise(function(resolve, reject) {\n var pending = {\n id,\n resolve,\n reject\n };\n _this.taskQueue.push({\n msg,\n pending\n });\n _this.dispatch();\n });\n }\n },\n {\n key: \"terminate\",\n value: async function terminate() {\n this._terminated = true;\n await Promise.all(this.workers.map(function(w) {\n return w.terminate();\n }));\n this.workers = [];\n this.available = [];\n }\n }\n ]);\n return BuildWorkerPool2;\n})();\nvar pool = null;\nfunction getWorkerPool(size) {\n if (!pool) {\n pool = new BuildWorkerPool(size);\n }\n return pool;\n}\nasync function terminateWorkerPool() {\n if (pool) {\n await pool.terminate();\n pool = null;\n }\n}\n//# sourceMappingURL=workerPool.js.map\n"],"mappings":";;;AACA,IAAI,YAAY,OAAO;AACvB,IAAI,mBAAmB,OAAO;AAC9B,IAAI,oBAAoB,OAAO;AAC/B,IAAI,eAAe,OAAO,UAAU;AACpC,IAAI,YAAY,QAAQ,QAAQ;CAC9B,KAAK,IAAI,QAAQ,KACf,UAAU,QAAQ,MAAM;EAAE,KAAK,IAAI;EAAO,YAAY;CAAK,CAAC;AAChE;AACA,IAAI,eAAe,IAAI,MAAM,QAAQ,SAAS;CAC5C,IAAI,QAAQ,OAAO,SAAS,YAAY,OAAO,SAAS,YAAY;EAClE,KAAK,IAAI,OAAO,kBAAkB,IAAI,GACpC,IAAI,CAAC,aAAa,KAAK,IAAI,GAAG,KAAK,QAAQ,QACzC,UAAU,IAAI,KAAK;GAAE,WAAW,KAAK;GAAM,YAAY,EAAE,OAAO,iBAAiB,MAAM,GAAG,MAAM,KAAK;EAAW,CAAC;CACvH;CACA,OAAO;AACT;AACA,IAAI,gBAAgB,QAAQ,YAAY,UAAU,CAAC,GAAG,cAAc,EAAE,OAAO,KAAK,CAAC,GAAG,GAAG;AACzF,IAAI,qBAAqB,CAAC;AAC1B,SAAS,oBAAoB;CAC3B,uBAAuB;CACvB,qBAAqB;CACrB,2BAA2B;AAC7B,CAAC;AACD,OAAO,UAAU,aAAa,kBAAkB;AAChD,IAAI,wBAAwB,QAAQ,gBAAgB;AACpD,IAAI,YAAY,QAAQ,IAAI;AAC5B,IAAI,aAAa,QAAQ,KAAK;AAC9B,IAAI,cAAc,QAAQ,MAAM;AAChC,MAAM,cAAc,CAAC;AACrB,SAAS,kBAAkB,UAAU,aAAa;CAChD,IAAI,EAAE,oBAAoB,cAAc,MAAM,IAAI,UAAU,mCAAmC;AACjG;AACA,SAAS,kBAAkB,QAAQ,OAAO;CACxC,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;EACrC,IAAI,aAAa,MAAM;EACvB,WAAW,aAAa,WAAW,cAAc;EACjD,WAAW,eAAe;EAC1B,IAAI,WAAW,YAAY,WAAW,WAAW;EACjD,OAAO,eAAe,QAAQ,WAAW,KAAK,UAAU;CAC1D;AACF;AACA,SAAS,cAAc,aAAa,YAAY,aAAa;CAC3D,IAAI,YAAY,kBAAkB,YAAY,WAAW,UAAU;CACnE,IAAI,aAAa,kBAAkB,aAAa,WAAW;CAC3D,OAAO;AACT;AACA,SAAS,iBAAiB,KAAK,KAAK,OAAO;CACzC,IAAI,OAAO,KAAK;EACd,OAAO,eAAe,KAAK,KAAK;GAC9B;GACA,YAAY;GACZ,cAAc;GACd,UAAU;EACZ,CAAC;CACH,OAAO,IAAI,OAAO;CAClB,OAAO;AACT;AACA,IAAI,kBAAkB,OAAO,cAAc,YAAY,GAAG,YAAY,KAAI,CAAE,WAAW,MAAM,MAAM,OAAO,KAAK,KAAK,GAAG,YAAY,QAAO,EAAG,GAAG,WAAW,cAAa,CAAE,YAAY,GAAG,CAAC;AAC1L,IAAI,kBAAkC,iBAAC,WAAW;CAChD;CACA,SAAS,mBAAmB;EAC1B,IAAI,OAAO,QAAQ,SAAS,IAAI;GAC9B,IAAI,SAAS,IAAI,sBAAsB,OAAO,UAAU;GACxD,OAAO,GAAG,WAAW,SAAS,KAAK;IACjC,IAAI,IAAI,SAAS,SAAS;KACxB,OAAO;KACP,OAAO,UAAU,KAAK,MAAM;KAC5B,IAAI,OAAO,eAAe,MAAM;MAC9B,OAAO,cAAc;KACvB;IACF,OAAO,IAAI,IAAI,SAAS,aAAa;KACnC,OAAO;KACP,IAAI,OAAO,cAAc,MAAM;MAC7B,OAAO,oBAAoB;KAC7B;KACA,OAAO,SAAS;IAClB,OAAO,IAAI,IAAI,SAAS,UAAU,IAAI,SAAS,SAAS;KACtD,IAAI,UAAU,OAAO,YAAY,IAAI,IAAI,EAAE;KAC3C,IAAI,SAAS;MACX,OAAO,YAAY,OAAO,IAAI,EAAE;MAChC,IAAI,IAAI,SAAS,QAAQ;OACvB,QAAQ,QAAQ,IAAI,MAAM;MAC5B,OAAO;OACL,QAAQ,OAAO,IAAI,MAAM,IAAI,KAAK,CAAC;MACrC;KACF;KACA,OAAO,UAAU,KAAK,MAAM;KAC5B,OAAO,SAAS;IAClB;GACF,CAAC;GACD,OAAO,GAAG,SAAS,SAAS,KAAK;IAC/B,QAAQ,MAAM,mCAAmC,GAAG;GACtD,CAAC;GACD,MAAM,QAAQ,KAAK,MAAM;EAC3B;EACA,IAAI,SAAS;EACb,IAAI,OAAO,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK,KAAK,IAAI,IAAI,GAAG,UAAU,KAAI,CAAE,CAAC,CAAC,SAAS,CAAC;EACxH,kBAAkB,MAAM,gBAAgB;EACxC,iBAAiB,MAAM,WAAW,CAAC,CAAC;EACpC,iBAAiB,MAAM,aAAa,CAAC,CAAC;EACtC,iBAAiB,MAAM,aAAa,CAAC,CAAC;EACtC,iBAAiB,MAAM,+BAA+B,IAAI,IAAI,CAAC;EAC/D,iBAAiB,MAAM,UAAU,CAAC;EAClC,iBAAiB,MAAM,cAAc,CAAC;EACtC,iBAAiB,MAAM,aAAa,CAAC;EACrC,iBAAiB,MAAM,UAAU,KAAK,CAAC;EACvC,iBAAiB,MAAM,iBAAiB,KAAK,CAAC;EAC9C,iBAAiB,MAAM,gBAAgB,KAAK,CAAC;EAC7C,iBAAiB,MAAM,uBAAuB,KAAK,CAAC;EACpD,iBAAiB,MAAM,eAAe,KAAK;EAC3C,KAAK,SAAS,IAAI,QAAQ,SAAS,SAAS;GAC1C,OAAO,gBAAgB;EACzB,CAAC;EACD,KAAK,eAAe,IAAI,QAAQ,SAAS,SAAS;GAChD,OAAO,sBAAsB;EAC/B,CAAC;EACD,IAAI,cAAc,GAAG,YAAY,KAAI,CAAE,iBAAiB,qBAAqB;EAC7E,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,KAAK,QAAQ,MAAM,MAAM,CAAC;CACtD;CACA,cAAc,kBAAkB;EAC9B;GACE,KAAK;GACL,KAAK,SAAS,MAAM;IAClB,OAAO,KAAK,QAAQ;GACtB;EACF;EACA;GACE,KAAK;GACL,QAEE,eAAe,WAAW,YAAY;IACpC,MAAM,KAAK;IACX,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;IACvF,IAAI;KACF,KAAK,IAAI,YAAY,KAAK,QAAQ,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM;MAC7J,IAAI,SAAS,MAAM;MACnB,OAAO,YAAY;OACjB,MAAM;OACN,IAAI,KAAK;OACT;MACF,CAAC;KACH;IACF,SAAS,KAAK;KACZ,oBAAoB;KACpB,iBAAiB;IACnB,UAAU;KACR,IAAI;MACF,IAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;OAC1D,UAAU,OAAO;MACnB;KACF,UAAU;MACR,IAAI,mBAAmB;OACrB,MAAM;MACR;KACF;IACF;IACA,MAAM,KAAK;GACb;EAEJ;EACA;GACE,KAAK;GACL,OAAO,SAAS,WAAW;IACzB,OAAO,KAAK,UAAU,SAAS,KAAK,KAAK,UAAU,SAAS,GAAG;KAC7D,IAAI,SAAS,KAAK,UAAU,MAAM;KAClC,IAAI,EAAE,KAAK,YAAY,KAAK,UAAU,MAAM;KAC5C,KAAK,YAAY,IAAI,QAAQ,IAAI,OAAO;KACxC,OAAO,YAAY,GAAG;IACxB;GACF;EACF;EACA;GACE,KAAK;GACL,OAAO,eAAe,UAAU,MAAM;IACpC,IAAI,QAAQ;IACZ,IAAI,0BAA0B;IAC9B,IAAI,KAAK,aAAa;KACpB,MAAM,IAAI,MAAM,iCAAiC;IACnD;IACA,IAAI,kBAAkB;KACpB,MAAM,KAAK,WAAW;KACtB,MAAM,KAAK,WAAW;KAEtB,UAAU,2BAA2B,KAAK,WAAW,aAAa,QAAQ,6BAA6B,KAAK,IAAI,KAAK,IAAI,yBAAyB,IAAI,SAAS,QAAQ;MACrK,OAAO;OACL,YAAY,OAAO;OACnB,kBAAkB,OAAO;OACzB,kBAAkB,OAAO;MAC3B;KACF,CAAC;KAED,cAAc,+BAA+B,KAAK,WAAW,iBAAiB,QAAQ,iCAAiC,KAAK,IAAI,KAAK,IAAI,6BAA6B,IAAI,SAAS,IAAI;MACrL,OAAO,EACL,YAAY,GAAG,WACjB;KACF,CAAC;IACH;IACA,IAAI,KAAK,KAAK;IACd,IAAI,MAAM;KACR,MAAM;KACN;KACA,MAAM;MACJ,GAAG;MACH,YAAY;KACd;IACF;IACA,OAAO,IAAI,QAAQ,SAAS,SAAS,QAAQ;KAC3C,IAAI,UAAU;MACZ;MACA;MACA;KACF;KACA,MAAM,UAAU,KAAK;MACnB;MACA;KACF,CAAC;KACD,MAAM,SAAS;IACjB,CAAC;GACH;EACF;EACA;GACE,KAAK;GACL,OAAO,eAAe,YAAY;IAChC,KAAK,cAAc;IACnB,MAAM,QAAQ,IAAI,KAAK,QAAQ,IAAI,SAAS,GAAG;KAC7C,OAAO,EAAE,UAAU;IACrB,CAAC,CAAC;IACF,KAAK,UAAU,CAAC;IAChB,KAAK,YAAY,CAAC;GACpB;EACF;CACF,CAAC;CACD,OAAO;AACT,EAAC,CAAE;AACH,IAAI,OAAO;AACX,SAAS,cAAc,MAAM;CAC3B,IAAI,CAAC,MAAM;EACT,OAAO,IAAI,gBAAgB,IAAI;CACjC;CACA,OAAO;AACT;AACA,eAAe,sBAAsB;CACnC,IAAI,MAAM;EACR,MAAM,KAAK,UAAU;EACrB,OAAO;CACT;AACF"}
|
|
1
|
+
{"version":3,"file":"workerPool.native.js","names":[],"sources":["cjs/cli/workerPool.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar workerPool_exports = {};\n__export(workerPool_exports, {\n BuildWorkerPool: () => BuildWorkerPool,\n getWorkerPool: () => getWorkerPool,\n terminateWorkerPool: () => terminateWorkerPool\n});\nmodule.exports = __toCommonJS(workerPool_exports);\nvar import_worker_threads = require(\"worker_threads\");\nvar import_os = require(\"os\");\nvar import_url = require(\"url\");\nvar import_path = require(\"path\");\nconst import_meta = {};\nfunction _class_call_check(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else obj[key] = value;\n return obj;\n}\nvar workerDirectory = typeof __dirname === \"string\" ? (0, import_path.join)(__dirname, \"..\", \"..\", \"esm\", \"cli\") : (0, import_path.dirname)((0, import_url.fileURLToPath)(import_meta.url));\nvar BuildWorkerPool = /* @__PURE__ */ (function() {\n \"use strict\";\n function BuildWorkerPool2() {\n var _this, _loop = function(i2) {\n var worker = new import_worker_threads.Worker(workerPath);\n worker.on(\"message\", function(msg) {\n if (msg.type === \"ready\") {\n _this1.readyCount++;\n _this1.available.push(worker);\n if (_this1.readyCount === size) {\n _this1._resolveReady();\n }\n } else if (msg.type === \"init-done\") {\n _this1.initCount++;\n if (_this1.initCount === size) {\n _this1._resolveInitialized();\n }\n _this1.dispatch();\n } else if (msg.type === \"done\" || msg.type === \"error\") {\n var pending = _this1.pendingById.get(msg.id);\n if (pending) {\n _this1.pendingById.delete(msg.id);\n if (msg.type === \"done\") {\n pending.resolve(msg.result);\n } else {\n pending.reject(new Error(msg.error));\n }\n }\n _this1.available.push(worker);\n _this1.dispatch();\n }\n });\n worker.on(\"error\", function(err) {\n console.error(\"[BuildWorkerPool] Worker error:\", err);\n });\n _this.workers.push(worker);\n };\n var _this1 = this;\n var size = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : Math.max(1, (0, import_os.cpus)().length - 1);\n _class_call_check(this, BuildWorkerPool2);\n _define_property(this, \"workers\", []);\n _define_property(this, \"available\", []);\n _define_property(this, \"taskQueue\", []);\n _define_property(this, \"pendingById\", /* @__PURE__ */ new Map());\n _define_property(this, \"nextId\", 0);\n _define_property(this, \"readyCount\", 0);\n _define_property(this, \"initCount\", 0);\n _define_property(this, \"_ready\", void 0);\n _define_property(this, \"_resolveReady\", void 0);\n _define_property(this, \"_initialized\", void 0);\n _define_property(this, \"_resolveInitialized\", void 0);\n _define_property(this, \"_terminated\", false);\n this._ready = new Promise(function(resolve) {\n _this1._resolveReady = resolve;\n });\n this._initialized = new Promise(function(resolve) {\n _this1._resolveInitialized = resolve;\n });\n var workerPath = (0, import_path.join)(workerDirectory, \"buildPageWorker.mjs\");\n for (var i = 0; i < size; i++) _this = this, _loop(i);\n }\n _create_class(BuildWorkerPool2, [\n {\n key: \"size\",\n get: function get() {\n return this.workers.length;\n }\n },\n {\n key: \"initialize\",\n value: (\n // initialize all workers with pre-loaded config from main thread\n async function initialize(oneOptions) {\n await this._ready;\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = this.workers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var worker = _step.value;\n worker.postMessage({\n type: \"init\",\n id: this.nextId++,\n oneOptions\n });\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n await this._initialized;\n }\n )\n },\n {\n key: \"dispatch\",\n value: function dispatch() {\n while (this.available.length > 0 && this.taskQueue.length > 0) {\n var worker = this.available.shift();\n var { msg, pending } = this.taskQueue.shift();\n this.pendingById.set(pending.id, pending);\n worker.postMessage(msg);\n }\n }\n },\n {\n key: \"buildPage\",\n value: async function buildPage(args) {\n var _this = this;\n var _args_foundRoute_layouts, _args_foundRoute_middlewares;\n if (this._terminated) {\n throw new Error(\"Worker pool has been terminated\");\n }\n var serializedRoute = {\n type: args.foundRoute.type,\n file: args.foundRoute.file,\n // only keep serializable layout data\n layouts: (_args_foundRoute_layouts = args.foundRoute.layouts) === null || _args_foundRoute_layouts === void 0 ? void 0 : _args_foundRoute_layouts.map(function(layout) {\n return {\n contextKey: layout.contextKey,\n loaderServerPath: layout.loaderServerPath,\n layoutRenderMode: layout.layoutRenderMode\n };\n }),\n // only keep contextKey from middlewares\n middlewares: (_args_foundRoute_middlewares = args.foundRoute.middlewares) === null || _args_foundRoute_middlewares === void 0 ? void 0 : _args_foundRoute_middlewares.map(function(mw) {\n return {\n contextKey: mw.contextKey\n };\n })\n };\n var id = this.nextId++;\n var msg = {\n type: \"build\",\n id,\n args: {\n ...args,\n foundRoute: serializedRoute\n }\n };\n return new Promise(function(resolve, reject) {\n var pending = {\n id,\n resolve: function resolve1(result) {\n return resolve({\n ...result,\n cssContents: args.allCSSContents\n });\n },\n reject\n };\n _this.taskQueue.push({\n msg,\n pending\n });\n _this.dispatch();\n });\n }\n },\n {\n key: \"terminate\",\n value: async function terminate() {\n this._terminated = true;\n await Promise.all(this.workers.map(function(w) {\n return w.terminate();\n }));\n this.workers = [];\n this.available = [];\n }\n }\n ]);\n return BuildWorkerPool2;\n})();\nvar pool = null;\nfunction getWorkerPool(size) {\n if (!pool) {\n pool = new BuildWorkerPool(size);\n }\n return pool;\n}\nasync function terminateWorkerPool() {\n if (pool) {\n await pool.terminate();\n pool = null;\n }\n}\n//# sourceMappingURL=workerPool.js.map\n"],"mappings":";;;AACA,IAAI,YAAY,OAAO;AACvB,IAAI,mBAAmB,OAAO;AAC9B,IAAI,oBAAoB,OAAO;AAC/B,IAAI,eAAe,OAAO,UAAU;AACpC,IAAI,YAAY,QAAQ,QAAQ;CAC9B,KAAK,IAAI,QAAQ,KACf,UAAU,QAAQ,MAAM;EAAE,KAAK,IAAI;EAAO,YAAY;CAAK,CAAC;AAChE;AACA,IAAI,eAAe,IAAI,MAAM,QAAQ,SAAS;CAC5C,IAAI,QAAQ,OAAO,SAAS,YAAY,OAAO,SAAS,YAAY;EAClE,KAAK,IAAI,OAAO,kBAAkB,IAAI,GACpC,IAAI,CAAC,aAAa,KAAK,IAAI,GAAG,KAAK,QAAQ,QACzC,UAAU,IAAI,KAAK;GAAE,WAAW,KAAK;GAAM,YAAY,EAAE,OAAO,iBAAiB,MAAM,GAAG,MAAM,KAAK;EAAW,CAAC;CACvH;CACA,OAAO;AACT;AACA,IAAI,gBAAgB,QAAQ,YAAY,UAAU,CAAC,GAAG,cAAc,EAAE,OAAO,KAAK,CAAC,GAAG,GAAG;AACzF,IAAI,qBAAqB,CAAC;AAC1B,SAAS,oBAAoB;CAC3B,uBAAuB;CACvB,qBAAqB;CACrB,2BAA2B;AAC7B,CAAC;AACD,OAAO,UAAU,aAAa,kBAAkB;AAChD,IAAI,wBAAwB,QAAQ,gBAAgB;AACpD,IAAI,YAAY,QAAQ,IAAI;AAC5B,IAAI,aAAa,QAAQ,KAAK;AAC9B,IAAI,cAAc,QAAQ,MAAM;AAChC,MAAM,cAAc,CAAC;AACrB,SAAS,kBAAkB,UAAU,aAAa;CAChD,IAAI,EAAE,oBAAoB,cAAc,MAAM,IAAI,UAAU,mCAAmC;AACjG;AACA,SAAS,kBAAkB,QAAQ,OAAO;CACxC,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;EACrC,IAAI,aAAa,MAAM;EACvB,WAAW,aAAa,WAAW,cAAc;EACjD,WAAW,eAAe;EAC1B,IAAI,WAAW,YAAY,WAAW,WAAW;EACjD,OAAO,eAAe,QAAQ,WAAW,KAAK,UAAU;CAC1D;AACF;AACA,SAAS,cAAc,aAAa,YAAY,aAAa;CAC3D,IAAI,YAAY,kBAAkB,YAAY,WAAW,UAAU;CACnE,IAAI,aAAa,kBAAkB,aAAa,WAAW;CAC3D,OAAO;AACT;AACA,SAAS,iBAAiB,KAAK,KAAK,OAAO;CACzC,IAAI,OAAO,KAAK;EACd,OAAO,eAAe,KAAK,KAAK;GAC9B;GACA,YAAY;GACZ,cAAc;GACd,UAAU;EACZ,CAAC;CACH,OAAO,IAAI,OAAO;CAClB,OAAO;AACT;AACA,IAAI,kBAAkB,OAAO,cAAc,YAAY,GAAG,YAAY,KAAI,CAAE,WAAW,MAAM,MAAM,OAAO,KAAK,KAAK,GAAG,YAAY,QAAO,EAAG,GAAG,WAAW,cAAa,CAAE,YAAY,GAAG,CAAC;AAC1L,IAAI,kBAAkC,iBAAC,WAAW;CAChD;CACA,SAAS,mBAAmB;EAC1B,IAAI,OAAO,QAAQ,SAAS,IAAI;GAC9B,IAAI,SAAS,IAAI,sBAAsB,OAAO,UAAU;GACxD,OAAO,GAAG,WAAW,SAAS,KAAK;IACjC,IAAI,IAAI,SAAS,SAAS;KACxB,OAAO;KACP,OAAO,UAAU,KAAK,MAAM;KAC5B,IAAI,OAAO,eAAe,MAAM;MAC9B,OAAO,cAAc;KACvB;IACF,OAAO,IAAI,IAAI,SAAS,aAAa;KACnC,OAAO;KACP,IAAI,OAAO,cAAc,MAAM;MAC7B,OAAO,oBAAoB;KAC7B;KACA,OAAO,SAAS;IAClB,OAAO,IAAI,IAAI,SAAS,UAAU,IAAI,SAAS,SAAS;KACtD,IAAI,UAAU,OAAO,YAAY,IAAI,IAAI,EAAE;KAC3C,IAAI,SAAS;MACX,OAAO,YAAY,OAAO,IAAI,EAAE;MAChC,IAAI,IAAI,SAAS,QAAQ;OACvB,QAAQ,QAAQ,IAAI,MAAM;MAC5B,OAAO;OACL,QAAQ,OAAO,IAAI,MAAM,IAAI,KAAK,CAAC;MACrC;KACF;KACA,OAAO,UAAU,KAAK,MAAM;KAC5B,OAAO,SAAS;IAClB;GACF,CAAC;GACD,OAAO,GAAG,SAAS,SAAS,KAAK;IAC/B,QAAQ,MAAM,mCAAmC,GAAG;GACtD,CAAC;GACD,MAAM,QAAQ,KAAK,MAAM;EAC3B;EACA,IAAI,SAAS;EACb,IAAI,OAAO,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK,KAAK,IAAI,IAAI,GAAG,UAAU,KAAI,CAAE,CAAC,CAAC,SAAS,CAAC;EACxH,kBAAkB,MAAM,gBAAgB;EACxC,iBAAiB,MAAM,WAAW,CAAC,CAAC;EACpC,iBAAiB,MAAM,aAAa,CAAC,CAAC;EACtC,iBAAiB,MAAM,aAAa,CAAC,CAAC;EACtC,iBAAiB,MAAM,+BAA+B,IAAI,IAAI,CAAC;EAC/D,iBAAiB,MAAM,UAAU,CAAC;EAClC,iBAAiB,MAAM,cAAc,CAAC;EACtC,iBAAiB,MAAM,aAAa,CAAC;EACrC,iBAAiB,MAAM,UAAU,KAAK,CAAC;EACvC,iBAAiB,MAAM,iBAAiB,KAAK,CAAC;EAC9C,iBAAiB,MAAM,gBAAgB,KAAK,CAAC;EAC7C,iBAAiB,MAAM,uBAAuB,KAAK,CAAC;EACpD,iBAAiB,MAAM,eAAe,KAAK;EAC3C,KAAK,SAAS,IAAI,QAAQ,SAAS,SAAS;GAC1C,OAAO,gBAAgB;EACzB,CAAC;EACD,KAAK,eAAe,IAAI,QAAQ,SAAS,SAAS;GAChD,OAAO,sBAAsB;EAC/B,CAAC;EACD,IAAI,cAAc,GAAG,YAAY,KAAI,CAAE,iBAAiB,qBAAqB;EAC7E,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,KAAK,QAAQ,MAAM,MAAM,CAAC;CACtD;CACA,cAAc,kBAAkB;EAC9B;GACE,KAAK;GACL,KAAK,SAAS,MAAM;IAClB,OAAO,KAAK,QAAQ;GACtB;EACF;EACA;GACE,KAAK;GACL,QAEE,eAAe,WAAW,YAAY;IACpC,MAAM,KAAK;IACX,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;IACvF,IAAI;KACF,KAAK,IAAI,YAAY,KAAK,QAAQ,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM;MAC7J,IAAI,SAAS,MAAM;MACnB,OAAO,YAAY;OACjB,MAAM;OACN,IAAI,KAAK;OACT;MACF,CAAC;KACH;IACF,SAAS,KAAK;KACZ,oBAAoB;KACpB,iBAAiB;IACnB,UAAU;KACR,IAAI;MACF,IAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;OAC1D,UAAU,OAAO;MACnB;KACF,UAAU;MACR,IAAI,mBAAmB;OACrB,MAAM;MACR;KACF;IACF;IACA,MAAM,KAAK;GACb;EAEJ;EACA;GACE,KAAK;GACL,OAAO,SAAS,WAAW;IACzB,OAAO,KAAK,UAAU,SAAS,KAAK,KAAK,UAAU,SAAS,GAAG;KAC7D,IAAI,SAAS,KAAK,UAAU,MAAM;KAClC,IAAI,EAAE,KAAK,YAAY,KAAK,UAAU,MAAM;KAC5C,KAAK,YAAY,IAAI,QAAQ,IAAI,OAAO;KACxC,OAAO,YAAY,GAAG;IACxB;GACF;EACF;EACA;GACE,KAAK;GACL,OAAO,eAAe,UAAU,MAAM;IACpC,IAAI,QAAQ;IACZ,IAAI,0BAA0B;IAC9B,IAAI,KAAK,aAAa;KACpB,MAAM,IAAI,MAAM,iCAAiC;IACnD;IACA,IAAI,kBAAkB;KACpB,MAAM,KAAK,WAAW;KACtB,MAAM,KAAK,WAAW;KAEtB,UAAU,2BAA2B,KAAK,WAAW,aAAa,QAAQ,6BAA6B,KAAK,IAAI,KAAK,IAAI,yBAAyB,IAAI,SAAS,QAAQ;MACrK,OAAO;OACL,YAAY,OAAO;OACnB,kBAAkB,OAAO;OACzB,kBAAkB,OAAO;MAC3B;KACF,CAAC;KAED,cAAc,+BAA+B,KAAK,WAAW,iBAAiB,QAAQ,iCAAiC,KAAK,IAAI,KAAK,IAAI,6BAA6B,IAAI,SAAS,IAAI;MACrL,OAAO,EACL,YAAY,GAAG,WACjB;KACF,CAAC;IACH;IACA,IAAI,KAAK,KAAK;IACd,IAAI,MAAM;KACR,MAAM;KACN;KACA,MAAM;MACJ,GAAG;MACH,YAAY;KACd;IACF;IACA,OAAO,IAAI,QAAQ,SAAS,SAAS,QAAQ;KAC3C,IAAI,UAAU;MACZ;MACA,SAAS,SAAS,SAAS,QAAQ;OACjC,OAAO,QAAQ;QACb,GAAG;QACH,aAAa,KAAK;OACpB,CAAC;MACH;MACA;KACF;KACA,MAAM,UAAU,KAAK;MACnB;MACA;KACF,CAAC;KACD,MAAM,SAAS;IACjB,CAAC;GACH;EACF;EACA;GACE,KAAK;GACL,OAAO,eAAe,YAAY;IAChC,KAAK,cAAc;IACnB,MAAM,QAAQ,IAAI,KAAK,QAAQ,IAAI,SAAS,GAAG;KAC7C,OAAO,EAAE,UAAU;IACrB,CAAC,CAAC;IACF,KAAK,UAAU,CAAC;IAChB,KAAK,YAAY,CAAC;GACpB;EACF;CACF,CAAC;CACD,OAAO;AACT,EAAC,CAAE;AACH,IAAI,OAAO;AACX,SAAS,cAAc,MAAM;CAC3B,IAAI,CAAC,MAAM;EACT,OAAO,IAAI,gBAAgB,IAAI;CACjC;CACA,OAAO;AACT;AACA,eAAe,sBAAsB;CACnC,IAAI,MAAM;EACR,MAAM,KAAK,UAAU;EACrB,OAAO;CACT;AACF"}
|
|
@@ -1234,7 +1234,7 @@ function TextField(param) {
|
|
|
1234
1234
|
var syncHandle = (0, import_syncNativeState.syncHandleOf)(text);
|
|
1235
1235
|
var syncedText = (0, import_syncNativeState.useSyncValue)(text);
|
|
1236
1236
|
var controlled = (0, import_controlled.useControlled)(function(event) {
|
|
1237
|
-
|
|
1237
|
+
(0, import_syncStore.publishNativeSyncState)(syncHandle);
|
|
1238
1238
|
onTextChange(event.text);
|
|
1239
1239
|
}, revision);
|
|
1240
1240
|
var controlledFocus = (0, import_controlled.useControlled)(function(event) {
|
|
@@ -1795,7 +1795,7 @@ function SyncSwitch(param) {
|
|
|
1795
1795
|
disabled: !enabled,
|
|
1796
1796
|
familyOptions: { syncCallbackId: callbackId },
|
|
1797
1797
|
onNativeComposeNodeBooleanValueChange: function onNativeComposeNodeBooleanValueChange() {
|
|
1798
|
-
return
|
|
1798
|
+
return (0, import_syncStore.publishNativeSyncState)(isOn);
|
|
1799
1799
|
}
|
|
1800
1800
|
});
|
|
1801
1801
|
}
|
|
@@ -1234,7 +1234,7 @@ function TextField(param) {
|
|
|
1234
1234
|
var syncHandle = (0, import_syncNativeState.syncHandleOf)(text);
|
|
1235
1235
|
var syncedText = (0, import_syncNativeState.useSyncValue)(text);
|
|
1236
1236
|
var controlled = (0, import_controlled.useControlled)(function(event) {
|
|
1237
|
-
|
|
1237
|
+
(0, import_syncStore.publishNativeSyncState)(syncHandle);
|
|
1238
1238
|
onTextChange(event.text);
|
|
1239
1239
|
}, revision);
|
|
1240
1240
|
var controlledFocus = (0, import_controlled.useControlled)(function(event) {
|
|
@@ -1795,7 +1795,7 @@ function SyncSwitch(param) {
|
|
|
1795
1795
|
disabled: !enabled,
|
|
1796
1796
|
familyOptions: { syncCallbackId: callbackId },
|
|
1797
1797
|
onNativeComposeNodeBooleanValueChange: function onNativeComposeNodeBooleanValueChange() {
|
|
1798
|
-
return
|
|
1798
|
+
return (0, import_syncStore.publishNativeSyncState)(isOn);
|
|
1799
1799
|
}
|
|
1800
1800
|
});
|
|
1801
1801
|
}
|