@tamagui/static 2.7.7 → 3.0.0-beta.1093.1

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 (335) hide show
  1. package/dist/cjs/check-dep-versions.cjs +354 -0
  2. package/dist/cjs/checkDeps.cjs +301 -0
  3. package/dist/cjs/compiler.cjs +349 -0
  4. package/dist/cjs/compilerHost.cjs +2285 -0
  5. package/dist/cjs/componentDiscovery.cjs +94 -0
  6. package/dist/cjs/constants.cjs +32 -0
  7. package/dist/cjs/domStructuralPass.cjs +121 -0
  8. package/dist/cjs/exports.cjs +44 -0
  9. package/dist/cjs/extractor/addLocalExports.cjs +63 -0
  10. package/dist/cjs/extractor/bundle.cjs +229 -0
  11. package/dist/cjs/extractor/bundleConfig.cjs +769 -0
  12. package/dist/cjs/extractor/concatClassName.cjs +120 -0
  13. package/dist/cjs/extractor/detectModuleFormat.cjs +53 -0
  14. package/dist/cjs/extractor/esbuildAliasPlugin.cjs +46 -0
  15. package/dist/cjs/extractor/esbuildTsconfigPaths.cjs +91 -0
  16. package/dist/cjs/extractor/getTamaguiConfigPathFromOptionsConfig.cjs +42 -0
  17. package/dist/cjs/extractor/loadTamagui.cjs +394 -0
  18. package/dist/cjs/extractor/regenerateConfig.cjs +160 -0
  19. package/dist/cjs/extractor/watchTamaguiConfig.cjs +63 -0
  20. package/dist/cjs/getPragmaOptions.cjs +66 -0
  21. package/dist/cjs/helpers/memoize.cjs +41 -0
  22. package/dist/cjs/helpers/requireTamaguiCore.cjs +39 -0
  23. package/dist/cjs/index.cjs +33 -0
  24. package/dist/cjs/registerRequire.cjs +219 -0
  25. package/dist/cjs/server.cjs +65 -0
  26. package/dist/cjs/staticEvaluationIgnoredModules.cjs +85 -0
  27. package/dist/cjs/types.cjs +16 -0
  28. package/dist/cjs/zero/artifact.cjs +144 -0
  29. package/dist/cjs/zero/graph.cjs +208 -0
  30. package/dist/cjs/zero/identity.cjs +60 -0
  31. package/dist/cjs/zero/index.cjs +33 -0
  32. package/dist/cjs/zero/islands.cjs +234 -0
  33. package/dist/cjs/zero/options.cjs +162 -0
  34. package/dist/cjs/zero/ownership.cjs +78 -0
  35. package/dist/cjs/zero/theme.cjs +337 -0
  36. package/dist/cjs/zero/transform.cjs +207 -0
  37. package/dist/esm/check-dep-versions.mjs +329 -0
  38. package/dist/esm/check-dep-versions.mjs.map +1 -0
  39. package/dist/esm/checkDeps.mjs +279 -0
  40. package/dist/esm/checkDeps.mjs.map +1 -0
  41. package/dist/esm/compiler.mjs +319 -0
  42. package/dist/esm/compiler.mjs.map +1 -0
  43. package/dist/esm/compilerHost.mjs +2263 -0
  44. package/dist/esm/compilerHost.mjs.map +1 -0
  45. package/dist/esm/componentDiscovery.mjs +69 -0
  46. package/dist/esm/componentDiscovery.mjs.map +1 -0
  47. package/dist/esm/constants.mjs +7 -0
  48. package/dist/esm/constants.mjs.map +1 -0
  49. package/dist/esm/domStructuralPass.mjs +102 -0
  50. package/dist/esm/domStructuralPass.mjs.map +1 -0
  51. package/dist/esm/exports.mjs +29 -0
  52. package/dist/esm/extractor/addLocalExports.mjs +44 -0
  53. package/dist/esm/extractor/addLocalExports.mjs.map +1 -0
  54. package/dist/esm/extractor/bundle.mjs +199 -0
  55. package/dist/esm/extractor/bundle.mjs.map +1 -0
  56. package/dist/esm/extractor/bundleConfig.mjs +728 -0
  57. package/dist/esm/extractor/bundleConfig.mjs.map +1 -0
  58. package/dist/esm/extractor/concatClassName.mjs +100 -0
  59. package/dist/esm/extractor/concatClassName.mjs.map +1 -0
  60. package/dist/esm/extractor/detectModuleFormat.mjs +31 -0
  61. package/dist/esm/extractor/detectModuleFormat.mjs.map +1 -0
  62. package/dist/esm/extractor/esbuildAliasPlugin.mjs +26 -0
  63. package/dist/esm/extractor/esbuildAliasPlugin.mjs.map +1 -0
  64. package/dist/esm/extractor/esbuildTsconfigPaths.mjs +63 -0
  65. package/dist/esm/extractor/esbuildTsconfigPaths.mjs.map +1 -0
  66. package/dist/esm/extractor/getTamaguiConfigPathFromOptionsConfig.mjs +23 -0
  67. package/dist/esm/extractor/getTamaguiConfigPathFromOptionsConfig.mjs.map +1 -0
  68. package/dist/esm/extractor/loadTamagui.mjs +357 -0
  69. package/dist/esm/extractor/loadTamagui.mjs.map +1 -0
  70. package/dist/esm/extractor/regenerateConfig.mjs +131 -0
  71. package/dist/esm/extractor/regenerateConfig.mjs.map +1 -0
  72. package/dist/esm/extractor/watchTamaguiConfig.mjs +43 -0
  73. package/dist/esm/extractor/watchTamaguiConfig.mjs.map +1 -0
  74. package/dist/esm/getPragmaOptions.mjs +46 -0
  75. package/dist/esm/getPragmaOptions.mjs.map +1 -0
  76. package/dist/esm/helpers/memoize.mjs +21 -0
  77. package/dist/esm/helpers/memoize.mjs.map +1 -0
  78. package/dist/esm/helpers/requireTamaguiCore.mjs +19 -0
  79. package/dist/esm/helpers/requireTamaguiCore.mjs.map +1 -0
  80. package/dist/esm/index.mjs +8 -0
  81. package/dist/esm/index.mjs.map +1 -0
  82. package/dist/esm/registerRequire.mjs +195 -0
  83. package/dist/esm/registerRequire.mjs.map +1 -0
  84. package/dist/esm/server.mjs +40 -0
  85. package/dist/esm/server.mjs.map +1 -0
  86. package/dist/esm/setup.mjs +0 -0
  87. package/dist/esm/staticEvaluationIgnoredModules.mjs +61 -0
  88. package/dist/esm/staticEvaluationIgnoredModules.mjs.map +1 -0
  89. package/dist/esm/types.mjs +0 -0
  90. package/dist/esm/zero/artifact.mjs +119 -0
  91. package/dist/esm/zero/artifact.mjs.map +1 -0
  92. package/dist/esm/zero/graph.mjs +170 -0
  93. package/dist/esm/zero/graph.mjs.map +1 -0
  94. package/dist/esm/zero/identity.mjs +36 -0
  95. package/dist/esm/zero/identity.mjs.map +1 -0
  96. package/dist/esm/zero/index.mjs +19 -0
  97. package/dist/esm/zero/islands.mjs +200 -0
  98. package/dist/esm/zero/islands.mjs.map +1 -0
  99. package/dist/esm/zero/options.mjs +129 -0
  100. package/dist/esm/zero/options.mjs.map +1 -0
  101. package/dist/esm/zero/ownership.mjs +48 -0
  102. package/dist/esm/zero/ownership.mjs.map +1 -0
  103. package/dist/esm/zero/theme.mjs +313 -0
  104. package/dist/esm/zero/theme.mjs.map +1 -0
  105. package/dist/esm/zero/transform.mjs +182 -0
  106. package/dist/esm/zero/transform.mjs.map +1 -0
  107. package/package.json +38 -47
  108. package/src/check-dep-versions.ts +2 -2
  109. package/src/checkDeps.ts +3 -2
  110. package/src/compiler.ts +506 -0
  111. package/src/compilerHost.ts +3752 -0
  112. package/src/componentDiscovery.ts +105 -0
  113. package/src/constants.ts +0 -5
  114. package/src/domStructuralPass.ts +190 -0
  115. package/src/exports.ts +5 -6
  116. package/src/extractor/addLocalExports.ts +49 -0
  117. package/src/extractor/bundle.ts +38 -40
  118. package/src/extractor/bundleConfig.ts +368 -187
  119. package/src/extractor/concatClassName.ts +21 -24
  120. package/src/extractor/getTamaguiConfigPathFromOptionsConfig.ts +13 -5
  121. package/src/extractor/loadTamagui.ts +196 -143
  122. package/src/extractor/regenerateConfig.ts +65 -13
  123. package/src/extractor/watchTamaguiConfig.ts +6 -1
  124. package/src/helpers/requireTamaguiCore.ts +6 -1
  125. package/src/registerRequire.ts +94 -132
  126. package/src/staticEvaluationIgnoredModules.ts +74 -0
  127. package/src/types.ts +2 -107
  128. package/src/zero/artifact.ts +142 -0
  129. package/src/zero/graph.ts +359 -0
  130. package/src/zero/identity.ts +73 -0
  131. package/src/zero/index.ts +9 -0
  132. package/src/zero/islands.ts +265 -0
  133. package/src/zero/options.ts +239 -0
  134. package/src/zero/ownership.ts +113 -0
  135. package/src/zero/theme.ts +526 -0
  136. package/src/zero/transform.ts +329 -0
  137. package/types/check-dep-versions.d.ts.map +1 -1
  138. package/types/checkDeps.d.ts.map +1 -1
  139. package/types/compiler.d.ts +134 -0
  140. package/types/compiler.d.ts.map +1 -0
  141. package/types/compilerHost.d.ts +38 -0
  142. package/types/compilerHost.d.ts.map +1 -0
  143. package/types/componentDiscovery.d.ts +27 -0
  144. package/types/componentDiscovery.d.ts.map +1 -0
  145. package/types/constants.d.ts +0 -1
  146. package/types/constants.d.ts.map +1 -1
  147. package/types/domStructuralPass.d.ts +3 -0
  148. package/types/domStructuralPass.d.ts.map +1 -0
  149. package/types/exports.d.ts +5 -6
  150. package/types/exports.d.ts.map +1 -1
  151. package/types/extractor/addLocalExports.d.ts +3 -0
  152. package/types/extractor/addLocalExports.d.ts.map +1 -0
  153. package/types/extractor/bundle.d.ts +66 -65
  154. package/types/extractor/bundle.d.ts.map +1 -1
  155. package/types/extractor/bundleConfig.d.ts +26 -4
  156. package/types/extractor/bundleConfig.d.ts.map +1 -1
  157. package/types/extractor/esbuildAliasPlugin.d.ts.map +1 -1
  158. package/types/extractor/getTamaguiConfigPathFromOptionsConfig.d.ts +1 -1
  159. package/types/extractor/getTamaguiConfigPathFromOptionsConfig.d.ts.map +1 -1
  160. package/types/extractor/loadTamagui.d.ts +26 -3
  161. package/types/extractor/loadTamagui.d.ts.map +1 -1
  162. package/types/extractor/regenerateConfig.d.ts +1 -1
  163. package/types/extractor/regenerateConfig.d.ts.map +1 -1
  164. package/types/extractor/watchTamaguiConfig.d.ts.map +1 -1
  165. package/types/getPragmaOptions.d.ts +1 -1
  166. package/types/helpers/memoize.d.ts +1 -1
  167. package/types/helpers/memoize.d.ts.map +1 -1
  168. package/types/helpers/requireTamaguiCore.d.ts.map +1 -1
  169. package/types/index.d.ts.map +1 -1
  170. package/types/registerRequire.d.ts +2 -2
  171. package/types/registerRequire.d.ts.map +1 -1
  172. package/types/staticEvaluationIgnoredModules.d.ts +9 -0
  173. package/types/staticEvaluationIgnoredModules.d.ts.map +1 -0
  174. package/types/types.d.ts +2 -90
  175. package/types/types.d.ts.map +1 -1
  176. package/types/zero/artifact.d.ts +44 -0
  177. package/types/zero/artifact.d.ts.map +1 -0
  178. package/types/zero/graph.d.ts +139 -0
  179. package/types/zero/graph.d.ts.map +1 -0
  180. package/types/zero/identity.d.ts +33 -0
  181. package/types/zero/identity.d.ts.map +1 -0
  182. package/types/zero/index.d.ts +10 -0
  183. package/types/zero/index.d.ts.map +1 -0
  184. package/types/zero/islands.d.ts +56 -0
  185. package/types/zero/islands.d.ts.map +1 -0
  186. package/types/zero/options.d.ts +58 -0
  187. package/types/zero/options.d.ts.map +1 -0
  188. package/types/zero/ownership.d.ts +51 -0
  189. package/types/zero/ownership.d.ts.map +1 -0
  190. package/types/zero/theme.d.ts +85 -0
  191. package/types/zero/theme.d.ts.map +1 -0
  192. package/types/zero/transform.d.ts +53 -0
  193. package/types/zero/transform.d.ts.map +1 -0
  194. package/dist/check-dep-versions.cjs +0 -372
  195. package/dist/checkDeps.cjs +0 -271
  196. package/dist/constants.cjs +0 -51
  197. package/dist/exports.cjs +0 -48
  198. package/dist/extractor/accessSafe.cjs +0 -48
  199. package/dist/extractor/babelParse.cjs +0 -56
  200. package/dist/extractor/buildClassName.cjs +0 -86
  201. package/dist/extractor/bundle.cjs +0 -234
  202. package/dist/extractor/bundleConfig.cjs +0 -729
  203. package/dist/extractor/concatClassName.cjs +0 -129
  204. package/dist/extractor/createEvaluator.cjs +0 -88
  205. package/dist/extractor/createExtractor.cjs +0 -1968
  206. package/dist/extractor/createLogger.cjs +0 -50
  207. package/dist/extractor/detectModuleFormat.cjs +0 -55
  208. package/dist/extractor/ensureImportingConcat.cjs +0 -54
  209. package/dist/extractor/errors.cjs +0 -28
  210. package/dist/extractor/esbuildAliasPlugin.cjs +0 -56
  211. package/dist/extractor/esbuildTsconfigPaths.cjs +0 -108
  212. package/dist/extractor/evaluateAstNode.cjs +0 -128
  213. package/dist/extractor/extractHelpers.cjs +0 -182
  214. package/dist/extractor/extractMediaStyle.cjs +0 -169
  215. package/dist/extractor/extractToClassNames.cjs +0 -475
  216. package/dist/extractor/extractToNative.cjs +0 -369
  217. package/dist/extractor/findTopmostFunction.cjs +0 -43
  218. package/dist/extractor/generatedUid.cjs +0 -58
  219. package/dist/extractor/getPrefixLogs.cjs +0 -31
  220. package/dist/extractor/getPropValueFromAttributes.cjs +0 -85
  221. package/dist/extractor/getSourceModule.cjs +0 -100
  222. package/dist/extractor/getStaticBindingsForScope.cjs +0 -213
  223. package/dist/extractor/getTamaguiConfigPathFromOptionsConfig.cjs +0 -41
  224. package/dist/extractor/hasTopLevelAwait.cjs +0 -62
  225. package/dist/extractor/hoistClassNames.cjs +0 -76
  226. package/dist/extractor/literalToAst.cjs +0 -109
  227. package/dist/extractor/loadFile.cjs +0 -17
  228. package/dist/extractor/loadTamagui.cjs +0 -373
  229. package/dist/extractor/logLines.cjs +0 -43
  230. package/dist/extractor/normalizeTernaries.cjs +0 -100
  231. package/dist/extractor/propsToFontFamilyCache.cjs +0 -42
  232. package/dist/extractor/regenerateConfig.cjs +0 -178
  233. package/dist/extractor/removeUnusedHooks.cjs +0 -108
  234. package/dist/extractor/timer.cjs +0 -52
  235. package/dist/extractor/validHTMLAttributes.cjs +0 -79
  236. package/dist/extractor/watchTamaguiConfig.cjs +0 -70
  237. package/dist/getPragmaOptions.cjs +0 -73
  238. package/dist/helpers/memoize.cjs +0 -45
  239. package/dist/helpers/requireTamaguiCore.cjs +0 -40
  240. package/dist/index.cjs +0 -42
  241. package/dist/registerRequire.cjs +0 -209
  242. package/dist/server.cjs +0 -82
  243. package/dist/types.cjs +0 -18
  244. package/dist/worker.cjs +0 -111
  245. package/src/extractor/accessSafe.ts +0 -22
  246. package/src/extractor/babelParse.ts +0 -38
  247. package/src/extractor/buildClassName.ts +0 -76
  248. package/src/extractor/createEvaluator.ts +0 -82
  249. package/src/extractor/createExtractor.ts +0 -2970
  250. package/src/extractor/createLogger.ts +0 -41
  251. package/src/extractor/ensureImportingConcat.ts +0 -36
  252. package/src/extractor/errors.ts +0 -1
  253. package/src/extractor/evaluateAstNode.ts +0 -136
  254. package/src/extractor/extractHelpers.ts +0 -211
  255. package/src/extractor/extractMediaStyle.ts +0 -194
  256. package/src/extractor/extractToClassNames.ts +0 -733
  257. package/src/extractor/extractToNative.ts +0 -506
  258. package/src/extractor/findTopmostFunction.ts +0 -24
  259. package/src/extractor/generatedUid.ts +0 -41
  260. package/src/extractor/getPrefixLogs.ts +0 -9
  261. package/src/extractor/getPropValueFromAttributes.ts +0 -95
  262. package/src/extractor/getSourceModule.ts +0 -96
  263. package/src/extractor/getStaticBindingsForScope.ts +0 -237
  264. package/src/extractor/hasTopLevelAwait.ts +0 -28
  265. package/src/extractor/hoistClassNames.ts +0 -52
  266. package/src/extractor/literalToAst.ts +0 -85
  267. package/src/extractor/loadFile.ts +0 -17
  268. package/src/extractor/logLines.ts +0 -16
  269. package/src/extractor/normalizeTernaries.ts +0 -89
  270. package/src/extractor/propsToFontFamilyCache.ts +0 -18
  271. package/src/extractor/removeUnusedHooks.ts +0 -83
  272. package/src/extractor/timer.ts +0 -25
  273. package/src/extractor/validHTMLAttributes.ts +0 -52
  274. package/src/worker.ts +0 -142
  275. package/types/extractor/accessSafe.d.ts +0 -3
  276. package/types/extractor/accessSafe.d.ts.map +0 -1
  277. package/types/extractor/babelParse.d.ts +0 -5
  278. package/types/extractor/babelParse.d.ts.map +0 -1
  279. package/types/extractor/buildClassName.d.ts +0 -7
  280. package/types/extractor/buildClassName.d.ts.map +0 -1
  281. package/types/extractor/createEvaluator.d.ts +0 -12
  282. package/types/extractor/createEvaluator.d.ts.map +0 -1
  283. package/types/extractor/createExtractor.d.ts +0 -32
  284. package/types/extractor/createExtractor.d.ts.map +0 -1
  285. package/types/extractor/createLogger.d.ts +0 -3
  286. package/types/extractor/createLogger.d.ts.map +0 -1
  287. package/types/extractor/ensureImportingConcat.d.ts +0 -4
  288. package/types/extractor/ensureImportingConcat.d.ts.map +0 -1
  289. package/types/extractor/errors.d.ts +0 -3
  290. package/types/extractor/errors.d.ts.map +0 -1
  291. package/types/extractor/evaluateAstNode.d.ts +0 -3
  292. package/types/extractor/evaluateAstNode.d.ts.map +0 -1
  293. package/types/extractor/extractHelpers.d.ts +0 -28
  294. package/types/extractor/extractHelpers.d.ts.map +0 -1
  295. package/types/extractor/extractMediaStyle.d.ts +0 -11
  296. package/types/extractor/extractMediaStyle.d.ts.map +0 -1
  297. package/types/extractor/extractToClassNames.d.ts +0 -25
  298. package/types/extractor/extractToClassNames.d.ts.map +0 -1
  299. package/types/extractor/extractToNative.d.ts +0 -13
  300. package/types/extractor/extractToNative.d.ts.map +0 -1
  301. package/types/extractor/findTopmostFunction.d.ts +0 -4
  302. package/types/extractor/findTopmostFunction.d.ts.map +0 -1
  303. package/types/extractor/generatedUid.d.ts +0 -5
  304. package/types/extractor/generatedUid.d.ts.map +0 -1
  305. package/types/extractor/getPrefixLogs.d.ts +0 -3
  306. package/types/extractor/getPrefixLogs.d.ts.map +0 -1
  307. package/types/extractor/getPropValueFromAttributes.d.ts +0 -19
  308. package/types/extractor/getPropValueFromAttributes.d.ts.map +0 -1
  309. package/types/extractor/getSourceModule.d.ts +0 -16
  310. package/types/extractor/getSourceModule.d.ts.map +0 -1
  311. package/types/extractor/getStaticBindingsForScope.d.ts +0 -5
  312. package/types/extractor/getStaticBindingsForScope.d.ts.map +0 -1
  313. package/types/extractor/hasTopLevelAwait.d.ts +0 -2
  314. package/types/extractor/hasTopLevelAwait.d.ts.map +0 -1
  315. package/types/extractor/hoistClassNames.d.ts +0 -6
  316. package/types/extractor/hoistClassNames.d.ts.map +0 -1
  317. package/types/extractor/literalToAst.d.ts +0 -4
  318. package/types/extractor/literalToAst.d.ts.map +0 -1
  319. package/types/extractor/loadFile.d.ts +0 -1
  320. package/types/extractor/loadFile.d.ts.map +0 -1
  321. package/types/extractor/logLines.d.ts +0 -2
  322. package/types/extractor/logLines.d.ts.map +0 -1
  323. package/types/extractor/normalizeTernaries.d.ts +0 -5
  324. package/types/extractor/normalizeTernaries.d.ts.map +0 -1
  325. package/types/extractor/propsToFontFamilyCache.d.ts +0 -4
  326. package/types/extractor/propsToFontFamilyCache.d.ts.map +0 -1
  327. package/types/extractor/removeUnusedHooks.d.ts +0 -3
  328. package/types/extractor/removeUnusedHooks.d.ts.map +0 -1
  329. package/types/extractor/timer.d.ts +0 -5
  330. package/types/extractor/timer.d.ts.map +0 -1
  331. package/types/extractor/validHTMLAttributes.d.ts +0 -52
  332. package/types/extractor/validHTMLAttributes.d.ts.map +0 -1
  333. package/types/worker.d.ts +0 -46
  334. package/types/worker.d.ts.map +0 -1
  335. /package/dist/{setup.cjs → cjs/setup.cjs} +0 -0
@@ -0,0 +1,208 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
23
+ value: mod,
24
+ enumerable: true
25
+ }) : target, mod));
26
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
27
+ var graph_exports = {};
28
+ __export(graph_exports, {
29
+ checkZeroGraph: () => checkZeroGraph,
30
+ erasedExportEscape: () => erasedExportEscape,
31
+ formatZeroGraphFailure: () => formatZeroGraphFailure,
32
+ formatZeroViolations: () => formatZeroViolations,
33
+ isForbiddenZeroModuleId: () => isForbiddenZeroModuleId,
34
+ isTamaguiModuleId: () => isTamaguiModuleId,
35
+ offsetToLineColumn: () => offsetToLineColumn,
36
+ owningPackageOf: () => owningPackageOf,
37
+ owningPackageOfDir: () => owningPackageOfDir,
38
+ sortZeroViolations: () => sortZeroViolations,
39
+ writeZeroGraphReceipt: () => writeZeroGraphReceipt,
40
+ writeZeroViolationReport: () => writeZeroViolationReport
41
+ });
42
+ module.exports = __toCommonJS(graph_exports);
43
+ var import_compiler_core = require("@tamagui/compiler-core");
44
+ var import_node_fs = require("node:fs");
45
+ var import_node_path = __toESM(require("node:path"), 1);
46
+ const ALLOWED_ZERO_MODULE = /animated-number/;
47
+ const owningPackageCache = /* @__PURE__ */ new Map();
48
+ function owningPackageOf(id) {
49
+ const clean = id.split(/[?#]/, 1)[0];
50
+ if (!clean || clean.startsWith("\0") || !import_node_path.default.isAbsolute(clean)) return null;
51
+ return owningPackageOfDir(import_node_path.default.dirname(clean));
52
+ }
53
+ function owningPackageOfDir(from) {
54
+ if (!from || !import_node_path.default.isAbsolute(from)) return null;
55
+ let dir = from;
56
+ const visited = [];
57
+ while (true) {
58
+ const cached = owningPackageCache.get(dir);
59
+ if (cached !== void 0) {
60
+ for (const seen of visited) owningPackageCache.set(seen, cached);
61
+ return cached;
62
+ }
63
+ visited.push(dir);
64
+ const manifest = import_node_path.default.join(dir, "package.json");
65
+ if ((0, import_node_fs.existsSync)(manifest)) {
66
+ let owner = null;
67
+ try {
68
+ owner = {
69
+ name: JSON.parse((0, import_node_fs.readFileSync)(manifest, "utf8")).name ?? null,
70
+ manifest
71
+ };
72
+ } catch {
73
+ owner = {
74
+ name: null,
75
+ manifest
76
+ };
77
+ }
78
+ for (const seen of visited) owningPackageCache.set(seen, owner);
79
+ return owner;
80
+ }
81
+ const parent = import_node_path.default.dirname(dir);
82
+ if (parent === dir) {
83
+ for (const seen of visited) owningPackageCache.set(seen, null);
84
+ return null;
85
+ }
86
+ dir = parent;
87
+ }
88
+ }
89
+ function isTamaguiModuleId(id, ownManifest) {
90
+ const owner = owningPackageOf(id);
91
+ if (!owner?.name) return false;
92
+ if (ownManifest && owner.manifest === ownManifest) return false;
93
+ return owner.name === "tamagui" || owner.name.startsWith("@tamagui/");
94
+ }
95
+ function isForbiddenZeroModuleId(id, ownManifest) {
96
+ if (!isTamaguiModuleId(id, ownManifest)) return false;
97
+ return !ALLOWED_ZERO_MODULE.test(id);
98
+ }
99
+ function shortestChain(target, entries, importersOf) {
100
+ const entrySet = new Set(entries);
101
+ const seen = /* @__PURE__ */ new Set([target]);
102
+ const queue = [[target]];
103
+ let longest = [target];
104
+ while (queue.length) {
105
+ const chain = queue.shift();
106
+ const head = chain[0];
107
+ if (entrySet.has(head)) return chain;
108
+ if (chain.length > longest.length) longest = chain;
109
+ for (const importer of importersOf.get(head) ?? []) {
110
+ if (seen.has(importer)) continue;
111
+ seen.add(importer);
112
+ queue.push([importer, ...chain]);
113
+ }
114
+ }
115
+ return longest;
116
+ }
117
+ function checkZeroGraph(input) {
118
+ const importersOf = new Map(input.importerEdges);
119
+ for (const module2 of input.modules) {
120
+ if (!importersOf.has(module2.id)) importersOf.set(module2.id, module2.importers ?? []);
121
+ }
122
+ const ownManifest = input.root ? owningPackageOfDir(input.root)?.manifest ?? null : null;
123
+ const tamaguiModules = input.modules.map((module2) => module2.id).filter((id) => isTamaguiModuleId(id, ownManifest)).sort();
124
+ const forbidden = tamaguiModules.filter((id) => isForbiddenZeroModuleId(id, ownManifest)).map((id) => ({
125
+ id,
126
+ chain: shortestChain(id, input.entries, importersOf),
127
+ owner: owningPackageOf(id)?.name ?? ""
128
+ }));
129
+ return {
130
+ tamaguiModules,
131
+ forbidden
132
+ };
133
+ }
134
+ function formatZeroGraphFailure(receipt) {
135
+ const lines = [`[tamagui zero-runtime] ${receipt.integration} zero entry graph contains ${receipt.forbidden.length} forbidden Tamagui module(s)`, ""];
136
+ for (const entry of receipt.forbidden) {
137
+ lines.push(entry.owner ? `${entry.id} (package ${entry.owner})` : entry.id);
138
+ lines.push(entry.chain.length > 1 ? ` ${entry.chain.join("\n -> ")}` : ` (this bundler exposed no importer edges for that module)`);
139
+ }
140
+ lines.push("");
141
+ lines.push(import_compiler_core.ZERO_FAILURE_FOOTER);
142
+ return lines.join("\n");
143
+ }
144
+ function writeZeroGraphReceipt(outDir, name, receipt) {
145
+ (0, import_node_fs.mkdirSync)(outDir, { recursive: true });
146
+ const file = import_node_path.default.join(outDir, `${name}.graph.json`);
147
+ (0, import_node_fs.writeFileSync)(file, `${JSON.stringify(receipt, null, 2)}
148
+ `);
149
+ return file;
150
+ }
151
+ function sortZeroViolations(sites) {
152
+ return [...sites].sort((left, right) => (left.file < right.file ? -1 : left.file > right.file ? 1 : 0) || left.line - right.line || left.column - right.column || left.rule - right.rule || (left.message < right.message ? -1 : left.message > right.message ? 1 : 0));
153
+ }
154
+ function formatZeroViolations(sites) {
155
+ const sorted = sortZeroViolations(sites);
156
+ const lines = [`[tamagui zero-runtime] build failed with ${sorted.length} violations`, ""];
157
+ for (const site of sorted) {
158
+ lines.push(`Rule ${site.rule} ${site.code}`);
159
+ lines.push(`${site.file}:${site.line}:${site.column}${site.component ? ` ${site.component}` : ""}`);
160
+ lines.push(` ${site.message}`);
161
+ lines.push("");
162
+ }
163
+ lines.push(import_compiler_core.ZERO_FAILURE_FOOTER);
164
+ return lines.join("\n");
165
+ }
166
+ function writeZeroViolationReport(outDir, name, report) {
167
+ (0, import_node_fs.mkdirSync)(outDir, { recursive: true });
168
+ const file = import_node_path.default.join(outDir, `${name}.violations.json`);
169
+ (0, import_node_fs.writeFileSync)(file, `${JSON.stringify({
170
+ integration: report.integration,
171
+ mode: report.mode,
172
+ count: report.violations.length,
173
+ violations: sortZeroViolations(report.violations)
174
+ }, null, 2)}
175
+ `);
176
+ return file;
177
+ }
178
+ function erasedExportEscape(input) {
179
+ for (const [moduleId, names] of input.erasedExports) {
180
+ if (names.length === 0) continue;
181
+ if (!input.importersOf.has(moduleId)) {
182
+ return `[tamagui zero-runtime] ${input.integration} erased the exported definition(s) ${names.join(", ")} from ${moduleId}, and then could not find that module in its own graph, so nothing proved the erasure was safe.
183
+
184
+ ${import_compiler_core.ZERO_FAILURE_FOOTER}`;
185
+ }
186
+ const untransformed = (input.importersOf.get(moduleId) ?? []).filter((importer) => !input.transformed.has(importer));
187
+ if (untransformed.length === 0) continue;
188
+ return `[tamagui zero-runtime] ${input.integration} erased the exported definition(s) ${names.join(", ")} from ${moduleId}, but ${untransformed.length} importer(s) in this entry graph were never zero-transformed and may still reference them:
189
+ ${untransformed.join("\n ")}
190
+
191
+ ${import_compiler_core.ZERO_FAILURE_FOOTER}`;
192
+ }
193
+ return null;
194
+ }
195
+ function offsetToLineColumn(source, offset) {
196
+ let line = 1;
197
+ let lineStart = 0;
198
+ for (let index = 0; index < offset && index < source.length; index++) {
199
+ if (source.charCodeAt(index) === 10) {
200
+ line++;
201
+ lineStart = index + 1;
202
+ }
203
+ }
204
+ return {
205
+ line,
206
+ column: offset - lineStart + 1
207
+ };
208
+ }
@@ -0,0 +1,60 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
21
+ var identity_exports = {};
22
+ __export(identity_exports, {
23
+ ZERO_COMPILER_VERSION: () => ZERO_COMPILER_VERSION,
24
+ canonicalizeBridgeManifest: () => canonicalizeBridgeManifest,
25
+ hashBridgeManifest: () => hashBridgeManifest,
26
+ hashZeroIdentity: () => hashZeroIdentity
27
+ });
28
+ module.exports = __toCommonJS(identity_exports);
29
+ var import_compiler_core = require("@tamagui/compiler-core");
30
+ var import_node_crypto = require("node:crypto");
31
+ const ZERO_COMPILER_VERSION = `zero-1/plan-${import_compiler_core.LOWERED_MODULE_PLAN_VERSION}`;
32
+ function hashZeroIdentity(identity) {
33
+ const canonical = {
34
+ runtimeLiteral: identity.runtimeLiteral,
35
+ target: identity.target,
36
+ configGeneration: identity.configGeneration,
37
+ cssHash: identity.cssHash,
38
+ compilerVersion: identity.compilerVersion,
39
+ islandEntries: [...identity.islandEntries].sort(),
40
+ bridgeManifestHash: identity.bridgeManifestHash,
41
+ islandOutputHashes: Object.fromEntries(Object.entries(identity.islandOutputHashes).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0))
42
+ };
43
+ return (0, import_node_crypto.createHash)("sha256").update(JSON.stringify(canonical)).digest("hex").slice(0, 24);
44
+ }
45
+ function canonicalizeBridgeManifest(manifest) {
46
+ if (Array.isArray(manifest)) {
47
+ return manifest.map((entry) => canonicalizeBridgeManifest(entry));
48
+ }
49
+ if (manifest && typeof manifest === "object") {
50
+ const sorted = {};
51
+ for (const key of Object.keys(manifest).sort()) {
52
+ sorted[key] = canonicalizeBridgeManifest(manifest[key]);
53
+ }
54
+ return sorted;
55
+ }
56
+ return manifest;
57
+ }
58
+ function hashBridgeManifest(manifest) {
59
+ return (0, import_node_crypto.createHash)("sha256").update(JSON.stringify(canonicalizeBridgeManifest(manifest))).digest("hex").slice(0, 16);
60
+ }
@@ -0,0 +1,33 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
21
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
22
+ var zero_exports = {};
23
+ __export(zero_exports, { isTamaguiSpecifier: () => import_compiler_core.isTamaguiSpecifier });
24
+ module.exports = __toCommonJS(zero_exports);
25
+ var import_compiler_core = require("@tamagui/compiler-core");
26
+ __reExport(zero_exports, require("./artifact.cjs"), module.exports);
27
+ __reExport(zero_exports, require("./graph.cjs"), module.exports);
28
+ __reExport(zero_exports, require("./identity.cjs"), module.exports);
29
+ __reExport(zero_exports, require("./islands.cjs"), module.exports);
30
+ __reExport(zero_exports, require("./options.cjs"), module.exports);
31
+ __reExport(zero_exports, require("./ownership.cjs"), module.exports);
32
+ __reExport(zero_exports, require("./theme.cjs"), module.exports);
33
+ __reExport(zero_exports, require("./transform.cjs"), module.exports);
@@ -0,0 +1,234 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
23
+ value: mod,
24
+ enumerable: true
25
+ }) : target, mod));
26
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
27
+ var islands_exports = {};
28
+ __export(islands_exports, {
29
+ ISLAND_EXTERNAL_GLOBALS: () => ISLAND_EXTERNAL_GLOBALS,
30
+ ISLAND_EXTERNAL_GLOBAL_PATHS: () => ISLAND_EXTERNAL_GLOBAL_PATHS,
31
+ ISLAND_REGISTRY_KEY: () => ISLAND_REGISTRY_KEY,
32
+ ISLAND_RUNTIME_KEY: () => ISLAND_RUNTIME_KEY,
33
+ generateIslandEntrySource: () => generateIslandEntrySource,
34
+ generateIslandLoaderSource: () => generateIslandLoaderSource,
35
+ mergeIslandBridges: () => mergeIslandBridges,
36
+ writeIslandModules: () => writeIslandModules
37
+ });
38
+ module.exports = __toCommonJS(islands_exports);
39
+ var import_node_fs = require("node:fs");
40
+ var import_node_path = __toESM(require("node:path"), 1);
41
+ const ISLAND_RUNTIME_KEY = "__tamagui_island_runtime__";
42
+ const ISLAND_REGISTRY_KEY = "__tamagui_islands__";
43
+ function writeIfChanged(file, content) {
44
+ (0, import_node_fs.mkdirSync)(import_node_path.default.dirname(file), { recursive: true });
45
+ let existing = null;
46
+ try {
47
+ existing = (0, import_node_fs.readFileSync)(file, "utf8");
48
+ } catch {
49
+ existing = null;
50
+ }
51
+ if (existing !== content) (0, import_node_fs.writeFileSync)(file, content);
52
+ }
53
+ function importPath(from, to) {
54
+ const relative = import_node_path.default.relative(import_node_path.default.dirname(from), to).replace(/\\/g, "/");
55
+ return relative.startsWith(".") ? relative : `./${relative}`;
56
+ }
57
+ function generateIslandLoaderSource(input) {
58
+ return `// generated by @tamagui/static zero-runtime. do not edit.
59
+ import * as React from 'react'
60
+ import * as ReactDOM from 'react-dom'
61
+ import * as JSXRuntime from 'react/jsx-runtime'
62
+
63
+ const ISLAND_ID = ${JSON.stringify(input.island.id)}
64
+ const ISLAND_SRC = ${JSON.stringify(input.scriptUrl)}
65
+ const CSS_HREF = ${JSON.stringify(input.cssHref)}
66
+ const INTEGRATION = ${JSON.stringify(input.integration)}
67
+
68
+ function sharedRuntime() {
69
+ const scope = globalThis
70
+ if (!scope[${JSON.stringify(ISLAND_RUNTIME_KEY)}]) {
71
+ scope[${JSON.stringify(ISLAND_RUNTIME_KEY)}] = {
72
+ react: React,
73
+ reactDom: ReactDOM,
74
+ jsxRuntime: JSXRuntime,
75
+ }
76
+ }
77
+ if (!scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}]) {
78
+ scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}] = {}
79
+ }
80
+ return scope
81
+ }
82
+
83
+ // The one accepted runtime recovery in zero-runtime mode, and it is loud on
84
+ // purpose. "Unimported" is not decidable at build time for a published zero
85
+ // artifact on Next or Metro, so the loader still guarantees the island has its
86
+ // styles; on a correct build this never runs.
87
+ function ensureZeroStylesheet() {
88
+ const links = document.querySelectorAll('link[rel="stylesheet"]')
89
+ for (let index = 0; index < links.length; index++) {
90
+ const href = links[index].getAttribute('href') || ''
91
+ if (href === CSS_HREF || href.split('?')[0].endsWith(CSS_HREF)) return
92
+ }
93
+ console.error(
94
+ '[tamagui zero-runtime] the page did not link the generated CSS artifact ' +
95
+ CSS_HREF +
96
+ ', so island "' +
97
+ ISLAND_ID +
98
+ '" (' +
99
+ INTEGRATION +
100
+ ') is loading it at runtime. On a correct build this never happens: the ' +
101
+ 'artifact is generated by the build and must be linked by the document ' +
102
+ 'that mounts the island. Fix the document, not this recovery.'
103
+ )
104
+ const link = document.createElement('link')
105
+ link.rel = 'stylesheet'
106
+ link.href = CSS_HREF
107
+ link.setAttribute('data-tamagui-zero-css', '1')
108
+ document.head.appendChild(link)
109
+ }
110
+
111
+ let pending = null
112
+
113
+ function loadIsland() {
114
+ const scope = sharedRuntime()
115
+ const registered = scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}][ISLAND_ID]
116
+ if (registered) return Promise.resolve(registered)
117
+ if (!pending) {
118
+ pending = new Promise((resolve, reject) => {
119
+ ensureZeroStylesheet()
120
+ const script = document.createElement('script')
121
+ script.src = ISLAND_SRC
122
+ script.async = true
123
+ script.onload = () => {
124
+ const mod = scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}][ISLAND_ID]
125
+ if (mod) resolve(mod)
126
+ else reject(new Error('tamagui island ' + ISLAND_ID + ' did not register'))
127
+ }
128
+ script.onerror = () => reject(new Error('tamagui island ' + ISLAND_ID + ' failed to load ' + ISLAND_SRC))
129
+ document.head.appendChild(script)
130
+ })
131
+ }
132
+ return pending
133
+ }
134
+
135
+ export default function TamaguiIsland(props) {
136
+ const bridgeId = props['data-tamagui-bridge'] || 'root'
137
+ const [Loaded, setLoaded] = React.useState(null)
138
+
139
+ React.useEffect(() => {
140
+ let cancelled = false
141
+ loadIsland().then((mod) => {
142
+ if (!cancelled) setLoaded(() => mod.Island)
143
+ })
144
+ return () => {
145
+ cancelled = true
146
+ }
147
+ }, [])
148
+
149
+ if (!Loaded) {
150
+ return React.createElement('div', {
151
+ 'data-tamagui-island': ISLAND_ID,
152
+ 'data-tamagui-bridge': bridgeId,
153
+ })
154
+ }
155
+
156
+ const forwarded = {}
157
+ for (const key in props) forwarded[key] = props[key]
158
+ forwarded['data-tamagui-island'] = ISLAND_ID
159
+ return React.createElement(Loaded, forwarded)
160
+ }
161
+ `;
162
+ }
163
+ function generateIslandEntrySource(input) {
164
+ const entry = input.island.entry;
165
+ return `// generated by @tamagui/static zero-runtime. do not edit.
166
+ import * as React from 'react'
167
+ import { TamaguiProvider, Theme } from 'tamagui'
168
+ import { createThemeUpdateState } from '@tamagui/web/theme-update'
169
+ import config from ${JSON.stringify(importPath(entry, input.configPath))}
170
+ import IslandRoot from ${JSON.stringify(importPath(entry, input.island.module))}
171
+
172
+ export function Island(props) {
173
+ const bridge = props.__tamaguiBridge
174
+ const inner = {}
175
+ for (const key in props) {
176
+ if (key !== '__tamaguiBridge') inner[key] = props[key]
177
+ }
178
+ let node = React.createElement(IslandRoot, inner)
179
+ const layers = (bridge && bridge.layers) || []
180
+ for (let index = layers.length - 1; index >= 0; index--) {
181
+ node = React.createElement(
182
+ Theme,
183
+ {
184
+ _themeUpdate: createThemeUpdateState(
185
+ layers[index].inlineValues,
186
+ layers[index].inlineClassName
187
+ ),
188
+ forceClassName: true,
189
+ },
190
+ node
191
+ )
192
+ }
193
+ // isSubtreeRoot: the island shares a document with a zero page that already
194
+ // has its own compiled theme spans, so its provider must not write a theme
195
+ // class onto html or body and must carry its own theme on its own node.
196
+ return React.createElement(
197
+ TamaguiProvider,
198
+ {
199
+ config,
200
+ defaultTheme: (bridge && bridge.name) || 'light',
201
+ disableInjectCSS: true,
202
+ isSubtreeRoot: true,
203
+ },
204
+ node
205
+ )
206
+ }
207
+
208
+ const scope = globalThis
209
+ if (!scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}]) scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}] = {}
210
+ scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}][${JSON.stringify(input.island.id)}] = { Island }
211
+ `;
212
+ }
213
+ function writeIslandModules(input) {
214
+ writeIfChanged(input.island.loader, generateIslandLoaderSource(input));
215
+ writeIfChanged(input.island.entry, generateIslandEntrySource(input));
216
+ }
217
+ const ISLAND_EXTERNAL_GLOBAL_PATHS = {
218
+ react: [ISLAND_RUNTIME_KEY, "react"],
219
+ "react-dom": [ISLAND_RUNTIME_KEY, "reactDom"],
220
+ "react/jsx-runtime": [ISLAND_RUNTIME_KEY, "jsxRuntime"]
221
+ };
222
+ const ISLAND_EXTERNAL_GLOBALS = Object.fromEntries(Object.entries(ISLAND_EXTERNAL_GLOBAL_PATHS).map(([name, segments]) => [name, `globalThis.${segments.join(".")}`]));
223
+ function mergeIslandBridges(target, incoming) {
224
+ for (const [islandId, bridges] of incoming) {
225
+ const list = target.get(islandId) ?? [];
226
+ for (const bridge of bridges) {
227
+ const index = list.findIndex((existing) => existing.id === bridge.id);
228
+ if (index >= 0) list[index] = bridge;
229
+ else list.push(bridge);
230
+ }
231
+ list.sort((left, right) => left.id < right.id ? -1 : left.id > right.id ? 1 : 0);
232
+ target.set(islandId, list);
233
+ }
234
+ }