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.
Files changed (50) hide show
  1. package/android/src/main/java/com/margelo/nitro/one/HybridOneFileSystem.kt +2 -10
  2. package/android/src/main/java/com/margelo/nitro/one/HybridOneFonts.kt +8 -21
  3. package/android/src/main/java/com/margelo/nitro/one/OneAtomicWrite.kt +19 -0
  4. package/android/src/main/java/com/margelo/nitro/one/OneUpdatesLauncher.kt +2 -8
  5. package/dist/cjs/cli/buildPageWorker.cjs +2 -1
  6. package/dist/cjs/cli/buildPageWorker.native.cjs +2 -1
  7. package/dist/cjs/cli/buildPageWorker.native.js +2 -1
  8. package/dist/cjs/cli/buildPageWorker.native.js.map +1 -1
  9. package/dist/cjs/cli/workerPool.cjs +4 -1
  10. package/dist/cjs/cli/workerPool.native.cjs +6 -1
  11. package/dist/cjs/cli/workerPool.native.js +6 -1
  12. package/dist/cjs/cli/workerPool.native.js.map +1 -1
  13. package/dist/cjs/platform/compose.android.cjs +2 -2
  14. package/dist/cjs/platform/compose.android.js +2 -2
  15. package/dist/cjs/platform/compose.android.js.map +1 -1
  16. package/dist/cjs/platform/generated/Controls.native.cjs +6 -6
  17. package/dist/cjs/platform/generated/Controls.native.js +6 -6
  18. package/dist/cjs/platform/generated/Controls.native.js.map +1 -1
  19. package/dist/cjs/platform/syncStore.cjs +15 -5
  20. package/dist/cjs/platform/syncStore.native.cjs +20 -8
  21. package/dist/cjs/platform/syncStore.native.js +20 -8
  22. package/dist/cjs/platform/syncStore.native.js.map +1 -1
  23. package/dist/esm/cli/buildPageWorker.mjs +2 -1
  24. package/dist/esm/cli/buildPageWorker.mjs.map +1 -1
  25. package/dist/esm/cli/buildPageWorker.native.js +2 -1
  26. package/dist/esm/cli/buildPageWorker.native.js.map +1 -1
  27. package/dist/esm/cli/workerPool.mjs +4 -1
  28. package/dist/esm/cli/workerPool.mjs.map +1 -1
  29. package/dist/esm/cli/workerPool.native.js +6 -1
  30. package/dist/esm/cli/workerPool.native.js.map +1 -1
  31. package/dist/esm/platform/compose.android.js +3 -3
  32. package/dist/esm/platform/compose.android.js.map +1 -1
  33. package/dist/esm/platform/generated/Controls.native.js +7 -7
  34. package/dist/esm/platform/generated/Controls.native.js.map +1 -1
  35. package/dist/esm/platform/syncStore.mjs +14 -5
  36. package/dist/esm/platform/syncStore.mjs.map +1 -1
  37. package/dist/esm/platform/syncStore.native.js +19 -8
  38. package/dist/esm/platform/syncStore.native.js.map +1 -1
  39. package/package.json +15 -15
  40. package/src/cli/buildPageWorker.ts +4 -1
  41. package/src/cli/workerPool.test.ts +62 -0
  42. package/src/cli/workerPool.ts +5 -1
  43. package/src/platform/compose.android.tsx +5 -7
  44. package/src/platform/generated/Controls.native.tsx +7 -7
  45. package/src/platform/syncNativeState.ts +1 -1
  46. package/src/platform/syncStore.ts +21 -10
  47. package/types/cli/workerPool.d.ts.map +1 -1
  48. package/types/platform/compose.android.d.ts.map +1 -1
  49. package/types/platform/syncStore.d.ts +1 -0
  50. package/types/platform/syncStore.d.ts.map +1 -1
@@ -69,11 +69,7 @@ class HybridOneFileSystem : HybridOneFileSystemSpec() {
69
69
  }
70
70
  }
71
71
  }
72
- val staging = File.createTempFile(".one-write-", null, target.parentFile)
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
- val staging = File.createTempFile(".one-write-", null, target.parentFile)
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 file = File(File(context.cacheDir, "one-fonts"), "$resourceName.ttf")
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 file = File(File(context.cacheDir, "one-fonts"), fileName)
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
- val dir = directory()
298
- dir.mkdirs()
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;GACF,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"}
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":"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"}
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":"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"}
@@ -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
- syncHandle === null || syncHandle === void 0 ? void 0 : syncHandle.set(syncHandle.get());
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 isOn.set(isOn.value);
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
- syncHandle === null || syncHandle === void 0 ? void 0 : syncHandle.set(syncHandle.get());
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 isOn.set(isOn.value);
1798
+ return (0, import_syncStore.publishNativeSyncState)(isOn);
1799
1799
  }
1800
1800
  });
1801
1801
  }