@powerhousedao/shared 6.2.3-dev.3 → 6.2.3-dev.31

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 (269) hide show
  1. package/dist/analytics/index.d.ts +4 -4
  2. package/dist/analytics/index.d.ts.map +1 -1
  3. package/dist/analytics/index.js +25 -24
  4. package/dist/analytics/index.js.map +1 -1
  5. package/dist/clis/args/{access-token-To5LaIfL.mjs → access-token-3Hqv_U8I.mjs} +2 -2
  6. package/dist/clis/args/{access-token-To5LaIfL.mjs.map → access-token-3Hqv_U8I.mjs.map} +1 -1
  7. package/dist/clis/args/access-token-C5sKsH2O.d.mts +16 -0
  8. package/dist/clis/args/access-token-C5sKsH2O.d.mts.map +1 -0
  9. package/dist/clis/args/access-token.d.mts +3 -2
  10. package/dist/clis/args/access-token.mjs +1 -1
  11. package/dist/clis/args/{common-CcYbXrBx.mjs → common-BXabdhiO.mjs} +30 -7
  12. package/dist/clis/args/common-BXabdhiO.mjs.map +1 -0
  13. package/dist/clis/args/common-Bnm859xU.d.mts +186 -0
  14. package/dist/clis/args/common-Bnm859xU.d.mts.map +1 -0
  15. package/dist/clis/args/common.d.mts +3 -2
  16. package/dist/clis/args/common.mjs +1 -1
  17. package/dist/clis/args/{connect-BVVvCmL9.mjs → connect-BG3HkYBk.mjs} +8 -3
  18. package/dist/clis/args/connect-BG3HkYBk.mjs.map +1 -0
  19. package/dist/clis/args/connect-DjeiqXus.d.mts +450 -0
  20. package/dist/clis/args/connect-DjeiqXus.d.mts.map +1 -0
  21. package/dist/clis/args/connect.d.mts +3 -2
  22. package/dist/clis/args/connect.mjs +1 -1
  23. package/dist/clis/args/{generate-CA916Fvj.mjs → generate-BOItUNvP.mjs} +40 -2
  24. package/dist/clis/args/generate-BOItUNvP.mjs.map +1 -0
  25. package/dist/clis/args/generate-BPBBLeUD.d.mts +103 -0
  26. package/dist/clis/args/generate-BPBBLeUD.d.mts.map +1 -0
  27. package/dist/clis/args/generate.d.mts +3 -2
  28. package/dist/clis/args/generate.mjs +1 -1
  29. package/dist/clis/args/{help-Bqbgbalu.mjs → help-DS1NlcJQ.mjs} +15 -15
  30. package/dist/clis/args/{help-Bqbgbalu.mjs.map → help-DS1NlcJQ.mjs.map} +1 -1
  31. package/dist/clis/args/help-DVPTARGn.d.mts +190 -0
  32. package/dist/clis/args/help-DVPTARGn.d.mts.map +1 -0
  33. package/dist/clis/args/help.d.mts +3 -2
  34. package/dist/clis/args/help.mjs +1 -1
  35. package/dist/clis/args/index.d.mts +20 -19
  36. package/dist/clis/args/index.mjs +18 -18
  37. package/dist/clis/args/init-CFeTq4Cq.d.mts +52 -0
  38. package/dist/clis/args/init-CFeTq4Cq.d.mts.map +1 -0
  39. package/dist/clis/args/{init-rz9Ei7nq.mjs → init-Dvb42Y87.mjs} +2 -2
  40. package/dist/clis/args/{init-rz9Ei7nq.mjs.map → init-Dvb42Y87.mjs.map} +1 -1
  41. package/dist/clis/args/init.d.mts +3 -2
  42. package/dist/clis/args/init.mjs +1 -1
  43. package/dist/clis/args/inspect-BjRmtB86.d.mts +13 -0
  44. package/dist/clis/args/inspect-BjRmtB86.d.mts.map +1 -0
  45. package/dist/clis/args/{inspect-tckH8mSw.mjs → inspect-UNQgtuR0.mjs} +2 -2
  46. package/dist/clis/args/{inspect-tckH8mSw.mjs.map → inspect-UNQgtuR0.mjs.map} +1 -1
  47. package/dist/clis/args/inspect.d.mts +3 -2
  48. package/dist/clis/args/inspect.mjs +1 -1
  49. package/dist/clis/args/install-B0tMyUMw.d.mts +37 -0
  50. package/dist/clis/args/install-B0tMyUMw.d.mts.map +1 -0
  51. package/dist/clis/args/{install-Sz2DlCHh.mjs → install-F-27kF6m.mjs} +2 -2
  52. package/dist/clis/args/{install-Sz2DlCHh.mjs.map → install-F-27kF6m.mjs.map} +1 -1
  53. package/dist/clis/args/install.d.mts +3 -2
  54. package/dist/clis/args/install.mjs +1 -1
  55. package/dist/clis/args/{list-DM2d6f1m.mjs → list-Bkfn8Yuo.mjs} +2 -2
  56. package/dist/clis/args/{list-DM2d6f1m.mjs.map → list-Bkfn8Yuo.mjs.map} +1 -1
  57. package/dist/clis/args/list-DrbxA7JJ.d.mts +10 -0
  58. package/dist/clis/args/list-DrbxA7JJ.d.mts.map +1 -0
  59. package/dist/clis/args/list.d.mts +3 -2
  60. package/dist/clis/args/list.mjs +1 -1
  61. package/dist/clis/args/{login-DiKT5Jfu.mjs → login-CIFkQExi.mjs} +2 -2
  62. package/dist/clis/args/{login-DiKT5Jfu.mjs.map → login-CIFkQExi.mjs.map} +1 -1
  63. package/dist/clis/args/login-CXRJXg71.d.mts +25 -0
  64. package/dist/clis/args/login-CXRJXg71.d.mts.map +1 -0
  65. package/dist/clis/args/login.d.mts +3 -2
  66. package/dist/clis/args/login.mjs +1 -1
  67. package/dist/clis/args/{magic-string.es-h_0HDQBQ.mjs → magic-string.es-BWtG0AyA.mjs} +33 -27
  68. package/dist/clis/args/magic-string.es-BWtG0AyA.mjs.map +1 -0
  69. package/dist/clis/args/migrate-DkCQRL2D.d.mts +19 -0
  70. package/dist/clis/args/migrate-DkCQRL2D.d.mts.map +1 -0
  71. package/dist/clis/args/{migrate-CG_gWc4k.mjs → migrate-DwJGhc2d.mjs} +2 -2
  72. package/dist/clis/args/{migrate-CG_gWc4k.mjs.map → migrate-DwJGhc2d.mjs.map} +1 -1
  73. package/dist/clis/args/migrate.d.mts +3 -2
  74. package/dist/clis/args/migrate.mjs +1 -1
  75. package/dist/clis/args/publish-CeW4bOrl.d.mts +16 -0
  76. package/dist/clis/args/publish-CeW4bOrl.d.mts.map +1 -0
  77. package/dist/clis/args/{publish-DDZYsUfV.mjs → publish-DHqlGWmL.mjs} +2 -2
  78. package/dist/clis/args/{publish-DDZYsUfV.mjs.map → publish-DHqlGWmL.mjs.map} +1 -1
  79. package/dist/clis/args/publish.d.mts +3 -2
  80. package/dist/clis/args/publish.mjs +1 -1
  81. package/dist/clis/args/{registry-C_OVFQmI.mjs → registry-DIwES3l2.mjs} +2 -2
  82. package/dist/clis/args/{registry-C_OVFQmI.mjs.map → registry-DIwES3l2.mjs.map} +1 -1
  83. package/dist/clis/args/registry-DNH8xuaE.d.mts +17 -0
  84. package/dist/clis/args/registry-DNH8xuaE.d.mts.map +1 -0
  85. package/dist/clis/args/registry.d.mts +3 -2
  86. package/dist/clis/args/registry.mjs +1 -1
  87. package/dist/clis/args/service-BBx5GDTc.d.mts +27 -0
  88. package/dist/clis/args/service-BBx5GDTc.d.mts.map +1 -0
  89. package/dist/clis/args/{service-CHOOr0Gg.mjs → service-Cpjlyeu5.mjs} +2 -2
  90. package/dist/clis/args/{service-CHOOr0Gg.mjs.map → service-Cpjlyeu5.mjs.map} +1 -1
  91. package/dist/clis/args/service.d.mts +3 -2
  92. package/dist/clis/args/service.mjs +1 -1
  93. package/dist/clis/args/{switchboard-Dsp7nosi.mjs → switchboard-CCaAtU56.mjs} +2 -2
  94. package/dist/clis/args/{switchboard-Dsp7nosi.mjs.map → switchboard-CCaAtU56.mjs.map} +1 -1
  95. package/dist/clis/args/switchboard-RrNb1fUH.d.mts +70 -0
  96. package/dist/clis/args/switchboard-RrNb1fUH.d.mts.map +1 -0
  97. package/dist/clis/args/switchboard.d.mts +3 -2
  98. package/dist/clis/args/switchboard.mjs +1 -1
  99. package/dist/clis/args/{uninstall-CTwTX0u_.mjs → uninstall-3U0B8g5c.mjs} +2 -2
  100. package/dist/clis/args/{uninstall-CTwTX0u_.mjs.map → uninstall-3U0B8g5c.mjs.map} +1 -1
  101. package/dist/clis/args/uninstall-CDx7lwxn.d.mts +28 -0
  102. package/dist/clis/args/uninstall-CDx7lwxn.d.mts.map +1 -0
  103. package/dist/clis/args/uninstall.d.mts +3 -2
  104. package/dist/clis/args/uninstall.mjs +1 -1
  105. package/dist/clis/args/unpublish-CEDsk6uv.d.mts +22 -0
  106. package/dist/clis/args/unpublish-CEDsk6uv.d.mts.map +1 -0
  107. package/dist/clis/args/{unpublish-BPMkGEg5.mjs → unpublish-s9zUh6Gw.mjs} +2 -2
  108. package/dist/clis/args/{unpublish-BPMkGEg5.mjs.map → unpublish-s9zUh6Gw.mjs.map} +1 -1
  109. package/dist/clis/args/unpublish.d.mts +3 -2
  110. package/dist/clis/args/unpublish.mjs +1 -1
  111. package/dist/clis/args/{vetra-b4KUu1Ax.mjs → vetra-BUNlAAPp.mjs} +2 -2
  112. package/dist/clis/args/{vetra-b4KUu1Ax.mjs.map → vetra-BUNlAAPp.mjs.map} +1 -1
  113. package/dist/clis/args/vetra-DkDaWFPi.d.mts +111 -0
  114. package/dist/clis/args/vetra-DkDaWFPi.d.mts.map +1 -0
  115. package/dist/clis/args/vetra-ports.test.d.mts +2 -1
  116. package/dist/clis/args/vetra-ports.test.mjs +285 -180
  117. package/dist/clis/args/vetra-ports.test.mjs.map +1 -1
  118. package/dist/clis/args/vetra.d.mts +3 -2
  119. package/dist/clis/args/vetra.mjs +1 -1
  120. package/dist/clis/build-config-CmdMi_wu.mjs +230 -0
  121. package/dist/clis/build-config-CmdMi_wu.mjs.map +1 -0
  122. package/dist/clis/build-config.d.mts +44 -10614
  123. package/dist/clis/build-config.d.mts.map +1 -1
  124. package/dist/clis/build-config.mjs +2 -88
  125. package/dist/clis/build-pieces.d.mts +100 -0
  126. package/dist/clis/build-pieces.d.mts.map +1 -0
  127. package/dist/clis/build-pieces.mjs +371 -0
  128. package/dist/clis/build-pieces.mjs.map +1 -0
  129. package/dist/clis/command-names.d.mts +2 -2
  130. package/dist/clis/command-names.d.mts.map +1 -1
  131. package/dist/clis/command-names.mjs.map +1 -1
  132. package/dist/clis/constants.d.mts +3 -462
  133. package/dist/clis/constants.mjs +25 -8
  134. package/dist/clis/constants.mjs.map +1 -1
  135. package/dist/clis/index-6CZwrmQi.d.mts +11154 -0
  136. package/dist/clis/index-6CZwrmQi.d.mts.map +1 -0
  137. package/dist/clis/index.d.mts +1335 -1221
  138. package/dist/clis/index.d.mts.map +1 -1
  139. package/dist/clis/index.mjs +181 -64
  140. package/dist/clis/index.mjs.map +1 -1
  141. package/dist/clis/project-env.d.mts +4 -4
  142. package/dist/clis/project-env.d.mts.map +1 -1
  143. package/dist/clis/project-env.mjs.map +1 -1
  144. package/dist/clis/project-ports.d.mts +5 -5
  145. package/dist/clis/project-ports.d.mts.map +1 -1
  146. package/dist/clis/project-ports.mjs +1 -1
  147. package/dist/clis/project-ports.mjs.map +1 -1
  148. package/dist/clis/services/telemetry.d.mts +7 -7
  149. package/dist/clis/services/telemetry.d.mts.map +1 -1
  150. package/dist/clis/services/telemetry.mjs.map +1 -1
  151. package/dist/clis/types-CMFHKrgv.d.mts +528 -0
  152. package/dist/clis/types-CMFHKrgv.d.mts.map +1 -0
  153. package/dist/clis/utils.d.mts +4 -4
  154. package/dist/clis/utils.d.mts.map +1 -1
  155. package/dist/clis/utils.mjs.map +1 -1
  156. package/dist/{config-loader-B845Hidf.js → config-loader-CWQxMERh.js} +22 -8
  157. package/dist/config-loader-CWQxMERh.js.map +1 -0
  158. package/dist/connect/config-loader.d.ts +14 -8
  159. package/dist/connect/config-loader.d.ts.map +1 -1
  160. package/dist/connect/config-loader.js +2 -2
  161. package/dist/connect/index.d.ts +158 -56
  162. package/dist/connect/index.d.ts.map +1 -1
  163. package/dist/connect/index.js +271 -30
  164. package/dist/connect/index.js.map +1 -1
  165. package/dist/connect/json-adapter.d.ts +3 -4
  166. package/dist/connect/json-adapter.d.ts.map +1 -1
  167. package/dist/connect/json-adapter.js.map +1 -1
  168. package/dist/{constants-BP_gjn8g.d.ts → constants-DO4IYxuR.d.ts} +2 -1
  169. package/dist/constants-DO4IYxuR.d.ts.map +1 -0
  170. package/dist/constants.d.ts +3 -2
  171. package/dist/constants.js.map +1 -1
  172. package/dist/document-drive/index.d.ts +134 -100
  173. package/dist/document-drive/index.d.ts.map +1 -1
  174. package/dist/document-drive/index.js +120 -52
  175. package/dist/document-drive/index.js.map +1 -1
  176. package/dist/document-model/index.d.ts +5 -4
  177. package/dist/document-model/index.js +449 -227
  178. package/dist/document-model/index.js.map +1 -1
  179. package/dist/document-model/mock.d.ts +2 -3
  180. package/dist/document-model/mock.d.ts.map +1 -1
  181. package/dist/document-model/mock.js +2 -1
  182. package/dist/document-model/mock.js.map +1 -1
  183. package/dist/document-model/utils.d.ts +3 -2
  184. package/dist/document-model/utils.js +1 -1
  185. package/dist/{index-DyYIJtVy.d.ts → index-CDDyUSHE.d.ts} +40 -28
  186. package/dist/index-CDDyUSHE.d.ts.map +1 -0
  187. package/dist/index-D0JljlgO.d.ts +36 -0
  188. package/dist/index-D0JljlgO.d.ts.map +1 -0
  189. package/dist/index.d.ts +7 -6
  190. package/dist/index.js.map +1 -1
  191. package/dist/processors/index.d.ts +3 -2
  192. package/dist/processors/index.js +5 -1
  193. package/dist/processors/index.js.map +1 -1
  194. package/dist/registry/index.d.ts +15 -15
  195. package/dist/registry/index.d.ts.map +1 -1
  196. package/dist/registry/index.js +14 -5
  197. package/dist/registry/index.js.map +1 -1
  198. package/dist/registry/manifest-slim.d.ts +4 -3
  199. package/dist/registry/manifest-slim.d.ts.map +1 -1
  200. package/dist/registry/manifest-slim.js +21 -0
  201. package/dist/registry/manifest-slim.js.map +1 -1
  202. package/dist/registry/updates.d.ts +3 -3
  203. package/dist/registry/updates.d.ts.map +1 -1
  204. package/dist/registry/updates.js.map +1 -1
  205. package/dist/registry/urls.d.ts +2 -2
  206. package/dist/registry/urls.d.ts.map +1 -1
  207. package/dist/registry/urls.js.map +1 -1
  208. package/dist/{types-C1in4fl3.d.ts → types-Bsp8VL2y.d.ts} +2 -2
  209. package/dist/types-Bsp8VL2y.d.ts.map +1 -0
  210. package/dist/{types-YqLqb0Zb.d.ts → types-VDHUeQnm.d.ts} +23 -35
  211. package/dist/types-VDHUeQnm.d.ts.map +1 -0
  212. package/dist/{types-CpnWmiFY.d.ts → types-xLPOHE23.d.ts} +593 -437
  213. package/dist/types-xLPOHE23.d.ts.map +1 -0
  214. package/dist/{utils-DP122OSS.d.ts → utils-BrKxCmKx.d.ts} +2 -2
  215. package/dist/utils-BrKxCmKx.d.ts.map +1 -0
  216. package/dist/{utils-aaTmfxFW.js → utils-XotexSsQ.js} +3 -2
  217. package/dist/{utils-aaTmfxFW.js.map → utils-XotexSsQ.js.map} +1 -1
  218. package/package.json +10 -5
  219. package/dist/clis/args/access-token--9H57y8J.d.mts +0 -18
  220. package/dist/clis/args/access-token--9H57y8J.d.mts.map +0 -1
  221. package/dist/clis/args/common-CcYbXrBx.mjs.map +0 -1
  222. package/dist/clis/args/common-Dsf1vpHV.d.mts +0 -183
  223. package/dist/clis/args/common-Dsf1vpHV.d.mts.map +0 -1
  224. package/dist/clis/args/connect-BVVvCmL9.mjs.map +0 -1
  225. package/dist/clis/args/connect-DetTnI8g.d.mts +0 -443
  226. package/dist/clis/args/connect-DetTnI8g.d.mts.map +0 -1
  227. package/dist/clis/args/generate-CA916Fvj.mjs.map +0 -1
  228. package/dist/clis/args/generate-DnV-bfXt.d.mts +0 -87
  229. package/dist/clis/args/generate-DnV-bfXt.d.mts.map +0 -1
  230. package/dist/clis/args/help-CjAsudUn.d.mts +0 -193
  231. package/dist/clis/args/help-CjAsudUn.d.mts.map +0 -1
  232. package/dist/clis/args/init-CUXyfquF.d.mts +0 -55
  233. package/dist/clis/args/init-CUXyfquF.d.mts.map +0 -1
  234. package/dist/clis/args/inspect-DtZeoA5c.d.mts +0 -15
  235. package/dist/clis/args/inspect-DtZeoA5c.d.mts.map +0 -1
  236. package/dist/clis/args/install-CkP8zcHb.d.mts +0 -40
  237. package/dist/clis/args/install-CkP8zcHb.d.mts.map +0 -1
  238. package/dist/clis/args/list-BGf8s_gj.d.mts +0 -12
  239. package/dist/clis/args/list-BGf8s_gj.d.mts.map +0 -1
  240. package/dist/clis/args/login-DNsHwvqk.d.mts +0 -27
  241. package/dist/clis/args/login-DNsHwvqk.d.mts.map +0 -1
  242. package/dist/clis/args/magic-string.es-h_0HDQBQ.mjs.map +0 -1
  243. package/dist/clis/args/migrate-sixkWhxm.d.mts +0 -21
  244. package/dist/clis/args/migrate-sixkWhxm.d.mts.map +0 -1
  245. package/dist/clis/args/publish-Dqe5DUst.d.mts +0 -18
  246. package/dist/clis/args/publish-Dqe5DUst.d.mts.map +0 -1
  247. package/dist/clis/args/registry-C_RfTsKB.d.mts +0 -19
  248. package/dist/clis/args/registry-C_RfTsKB.d.mts.map +0 -1
  249. package/dist/clis/args/service-DhIkf8-O.d.mts +0 -22
  250. package/dist/clis/args/service-DhIkf8-O.d.mts.map +0 -1
  251. package/dist/clis/args/switchboard-BlPaq2at.d.mts +0 -72
  252. package/dist/clis/args/switchboard-BlPaq2at.d.mts.map +0 -1
  253. package/dist/clis/args/uninstall-BpA3YYbw.d.mts +0 -31
  254. package/dist/clis/args/uninstall-BpA3YYbw.d.mts.map +0 -1
  255. package/dist/clis/args/unpublish-CvwaIimG.d.mts +0 -24
  256. package/dist/clis/args/unpublish-CvwaIimG.d.mts.map +0 -1
  257. package/dist/clis/args/vetra-DLQ6lhLl.d.mts +0 -113
  258. package/dist/clis/args/vetra-DLQ6lhLl.d.mts.map +0 -1
  259. package/dist/clis/build-config.mjs.map +0 -1
  260. package/dist/clis/constants.d.mts.map +0 -1
  261. package/dist/config-loader-B845Hidf.js.map +0 -1
  262. package/dist/constants-BP_gjn8g.d.ts.map +0 -1
  263. package/dist/index-C_iVZe7f.d.ts +0 -7
  264. package/dist/index-C_iVZe7f.d.ts.map +0 -1
  265. package/dist/index-DyYIJtVy.d.ts.map +0 -1
  266. package/dist/types-C1in4fl3.d.ts.map +0 -1
  267. package/dist/types-CpnWmiFY.d.ts.map +0 -1
  268. package/dist/types-YqLqb0Zb.d.ts.map +0 -1
  269. package/dist/utils-DP122OSS.d.ts.map +0 -1
@@ -552,6 +552,14 @@ function createState(baseState, globalState, localState) {
552
552
  }
553
553
  //#endregion
554
554
  //#region document-drive/src/reducers/drive.ts
555
+ /**
556
+ * The untouched base of a mutative draft, or the value itself when it is not a
557
+ * draft. Build replacement lists from it and freeze them before assigning, as
558
+ * the node reducer does, so finalize skips the walk over the assigned list.
559
+ */
560
+ function readBase(value) {
561
+ return isDraft(value) ? original(value) : value;
562
+ }
555
563
  const driveReducer = {
556
564
  setDriveNameOperation(state, action, dispatch) {
557
565
  state.name = action.input.name;
@@ -588,7 +596,8 @@ const driveReducer = {
588
596
  state.listeners.push(listener);
589
597
  },
590
598
  removeListenerOperation(state, action, dispatch) {
591
- state.listeners = state.listeners.filter((listener) => listener.listenerId !== action.input.listenerId);
599
+ const listeners = readBase(state).listeners.filter((listener) => listener.listenerId !== action.input.listenerId);
600
+ state.listeners = Object.freeze(listeners);
592
601
  },
593
602
  addTriggerOperation(state, action, dispatch) {
594
603
  const { trigger: input } = action.input;
@@ -601,7 +610,8 @@ const driveReducer = {
601
610
  state.triggers.push(trigger);
602
611
  },
603
612
  removeTriggerOperation(state, action, dispatch) {
604
- state.triggers = state.triggers.filter((trigger) => trigger.id !== action.input.triggerId);
613
+ const triggers = readBase(state).triggers.filter((trigger) => trigger.id !== action.input.triggerId);
614
+ state.triggers = Object.freeze(triggers);
605
615
  }
606
616
  };
607
617
  //#endregion
@@ -675,13 +685,64 @@ function escapeRegExp(string) {
675
685
  return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
676
686
  }
677
687
  /**
678
- * The node list as plain objects for read-only scans. Inside a mutative draft
679
- * this returns the untouched base list, so a find or filter over it does not
680
- * create a child draft per element it visits. Callers must read before they
681
- * write: the base list does not see mutations made earlier in the same action.
688
+ * A plain, unfrozen copy of the node list for read-only scans. Inside a
689
+ * mutative draft the copy is taken from the untouched base list, so a find or
690
+ * filter over it does not create a child draft per element it visits, and it is
691
+ * a copy because the stored list is frozen and V8 scans a frozen array several
692
+ * times slower than a normal one. Callers must read before they write: the base
693
+ * list does not see mutations made earlier in the same action.
682
694
  */
683
695
  function readNodes(state) {
684
- return isDraft(state) ? original(state).nodes : state.nodes;
696
+ return [...isDraft(state) ? original(state).nodes : state.nodes];
697
+ }
698
+ /**
699
+ * The given array sorted by id and frozen, in place -- it takes ownership of
700
+ * the array it is handed, which is why it is private to this module and only
701
+ * ever given a list built at the call site. The freeze is what makes assigning
702
+ * the list to a mutative draft cheap: assigning a draftable value to a draft
703
+ * property queues a finalize pass that walks every element of the assigned
704
+ * value, and the walk exits at its Object.isFrozen check instead. Elements must
705
+ * be plain nodes -- an element that is still a draft would never be replaced by
706
+ * its final value, because the walk that does that replacement is the one being
707
+ * skipped.
708
+ */
709
+ function freezeSortedById(nodes) {
710
+ nodes.sort((a, b) => a.id.localeCompare(b.id));
711
+ return Object.freeze(nodes);
712
+ }
713
+ /**
714
+ * A copy of the given list, sorted by id and frozen, which is the shape the
715
+ * node reducer assigns. Read the list with readNodes, build the new list from
716
+ * it, and pass what this returns to assignNodes. The copy is what keeps the
717
+ * freeze off the caller's array.
718
+ */
719
+ function sortNodesById(nodes) {
720
+ return freezeSortedById([...nodes]);
721
+ }
722
+ /**
723
+ * The node list with a node added, ordered by id and frozen, in the same shape
724
+ * sortNodesById returns. The list is built and sorted as plain objects, so
725
+ * inside a mutative draft the comparator never reads an element through the
726
+ * draft proxy. Pass the list read with readNodes: the draft's own list would
727
+ * put child drafts in the result, which the freeze then keeps mutative from
728
+ * resolving.
729
+ */
730
+ function insertNodeSorted(nodes, node) {
731
+ return freezeSortedById([...nodes, node]);
732
+ }
733
+ /**
734
+ * Installs a node list as state.nodes. Every assignment the node reducer makes
735
+ * goes through here, and this is the one place a frozen array crosses into
736
+ * state: the generated DocumentDriveGlobalState types nodes as a mutable
737
+ * Node[], so the cast below is where that gap is paid rather than spread over
738
+ * the reducer. Consumers must treat drive.state.global.nodes as read-only --
739
+ * mutating it in place (push, sort, splice) throws in strict mode; copy it
740
+ * first, as readNodes does. Note that UPGRADE_DOCUMENT's initialState and
741
+ * imported documents replace a whole scope and can install a list this
742
+ * function never saw.
743
+ */
744
+ function assignNodes(state, nodes) {
745
+ state.nodes = nodes;
685
746
  }
686
747
  function handleTargetNameCollisions(params) {
687
748
  const { nodes, targetParentFolder, srcName, srcKind } = params;
@@ -704,15 +765,13 @@ const nodeReducer = {
704
765
  srcKind: "file",
705
766
  targetParentFolder: action.input.parentFolder || null
706
767
  });
707
- const fileNode = {
768
+ assignNodes(state, insertNodeSorted(nodes, {
708
769
  id: action.input.id,
709
770
  name,
710
771
  kind: "file",
711
772
  parentFolder: action.input.parentFolder ?? null,
712
773
  documentType: action.input.documentType
713
- };
714
- state.nodes.push(fileNode);
715
- state.nodes.sort((a, b) => a.id.localeCompare(b.id));
774
+ }));
716
775
  dispatch?.({
717
776
  type: "CREATE_CHILD_DOCUMENT",
718
777
  input: {
@@ -731,19 +790,19 @@ const nodeReducer = {
731
790
  srcKind: "folder",
732
791
  targetParentFolder: action.input.parentFolder || null
733
792
  });
734
- state.nodes.push({
793
+ assignNodes(state, insertNodeSorted(nodes, {
735
794
  ...action.input,
736
795
  name,
737
796
  kind: "folder",
738
797
  parentFolder: action.input.parentFolder ?? null
739
- });
740
- state.nodes.sort((a, b) => a.id.localeCompare(b.id));
798
+ }));
741
799
  },
742
800
  deleteNodeOperation(state, action, dispatch) {
743
- const node = state.nodes.find((node) => node.id === action.input.id);
801
+ const nodes = readNodes(state);
802
+ const node = nodes.find((node) => node.id === action.input.id);
744
803
  if (!node) throw new Error(`Node with id ${action.input.id} not found`);
745
- const descendants = getDescendants(node, state.nodes);
746
- state.nodes = state.nodes.filter((node) => node.id !== action.input.id && !descendants.find((descendant) => descendant.id === node.id));
804
+ const descendants = getDescendants(node, nodes);
805
+ assignNodes(state, sortNodesById(nodes.filter((node) => node.id !== action.input.id && !descendants.find((descendant) => descendant.id === node.id))));
747
806
  [node, ...descendants].filter((node) => isFileNode(node)).forEach((node) => {
748
807
  dispatch?.({
749
808
  type: "DELETE_CHILD_DOCUMENT",
@@ -753,38 +812,39 @@ const nodeReducer = {
753
812
  },
754
813
  updateFileOperation(state, action) {
755
814
  if (action.input.name && !isValidName(action.input.name)) throw new Error(`Invalid name: '${action.input.name}'. Names must not be empty or contain control characters.`);
756
- state.nodes = state.nodes.map((node) => node.id === action.input.id ? {
815
+ const nodes = readNodes(state);
816
+ assignNodes(state, sortNodesById(nodes.map((node) => node.id === action.input.id ? {
757
817
  ...node,
758
818
  name: handleTargetNameCollisions({
759
- nodes: state.nodes.filter((n) => n.id !== action.input.id),
819
+ nodes: nodes.filter((n) => n.id !== action.input.id),
760
820
  srcName: action.input.name ?? node.name,
761
821
  srcKind: "file",
762
822
  targetParentFolder: action.input.parentFolder ?? node.parentFolder
763
823
  }),
764
824
  documentType: action.input.documentType ?? node.documentType
765
- } : node);
766
- state.nodes.sort((a, b) => a.id.localeCompare(b.id));
825
+ } : node)));
767
826
  },
768
827
  updateNodeOperation(state, action) {
769
828
  if (action.input.name && !isValidName(action.input.name)) throw new Error(`Invalid name: '${action.input.name}'. Names must not be empty or contain control characters.`);
770
- state.nodes = state.nodes.map((node) => node.id === action.input.id ? {
829
+ const nodes = readNodes(state);
830
+ assignNodes(state, sortNodesById(nodes.map((node) => node.id === action.input.id ? {
771
831
  ...node,
772
832
  name: handleTargetNameCollisions({
773
- nodes: state.nodes.filter((n) => n.id !== action.input.id),
833
+ nodes: nodes.filter((n) => n.id !== action.input.id),
774
834
  srcName: action.input.name ?? node.name,
775
835
  srcKind: node.kind === "file" ? "file" : "folder",
776
836
  targetParentFolder: action.input.parentFolder ?? node.parentFolder
777
837
  }),
778
838
  parentFolder: action.input.parentFolder === null ? null : node.parentFolder
779
- } : node);
780
- state.nodes.sort((a, b) => a.id.localeCompare(b.id));
839
+ } : node)));
781
840
  },
782
841
  copyNodeOperation(state, action, dispatch) {
783
- const node = state.nodes.find((node) => node.id === action.input.srcId);
842
+ const nodes = readNodes(state);
843
+ const node = nodes.find((node) => node.id === action.input.srcId);
784
844
  if (!node) throw new Error(`Node with id ${action.input.srcId} not found`);
785
- if (state.nodes.find((node) => node.id === action.input.targetId)) throw new Error(`Node with id ${action.input.targetId} already exists`);
845
+ if (nodes.find((node) => node.id === action.input.targetId)) throw new Error(`Node with id ${action.input.targetId} already exists`);
786
846
  const name = handleTargetNameCollisions({
787
- nodes: state.nodes,
847
+ nodes,
788
848
  srcName: action.input.targetName || node.name,
789
849
  srcKind: node.kind === "file" ? "file" : "folder",
790
850
  targetParentFolder: action.input.targetParentFolder || null
@@ -796,8 +856,7 @@ const nodeReducer = {
796
856
  name,
797
857
  parentFolder: action.input.targetParentFolder || null
798
858
  };
799
- state.nodes.push(newNode);
800
- state.nodes.sort((a, b) => a.id.localeCompare(b.id));
859
+ assignNodes(state, insertNodeSorted(nodes, newNode));
801
860
  if (isFileNode(newNode)) dispatch?.({
802
861
  type: "COPY_CHILD_DOCUMENT",
803
862
  input: {
@@ -808,92 +867,101 @@ const nodeReducer = {
808
867
  },
809
868
  moveNodeOperation(state, action) {
810
869
  if (action.input.srcFolder === action.input.targetParentFolder) throw new Error("Circular Reference Error: Attempting to move a node to its current parent folder");
811
- const node = state.nodes.find((node) => node.id === action.input.srcFolder);
870
+ const nodes = readNodes(state);
871
+ const node = nodes.find((node) => node.id === action.input.srcFolder);
812
872
  if (!node) throw new Error(`Node with id ${action.input.srcFolder} not found`);
813
873
  const name = handleTargetNameCollisions({
814
- nodes: state.nodes,
874
+ nodes,
815
875
  srcName: node.name,
816
876
  srcKind: node.kind === "file" ? "file" : "folder",
817
877
  targetParentFolder: action.input.targetParentFolder || null
818
878
  });
819
879
  if (isFolderNode(node)) {
820
- if (getDescendants(node, state.nodes).find((descendant) => descendant.id === action.input.targetParentFolder)) throw new Error("Circular Reference Error: Cannot move a folder to one of its descendants");
880
+ if (getDescendants(node, nodes).find((descendant) => descendant.id === action.input.targetParentFolder)) throw new Error("Circular Reference Error: Cannot move a folder to one of its descendants");
821
881
  }
822
- state.nodes = state.nodes.map((node) => {
882
+ assignNodes(state, sortNodesById(nodes.map((node) => {
823
883
  if (node.id === action.input.srcFolder) return {
824
884
  ...node,
825
885
  name,
826
886
  parentFolder: action.input.targetParentFolder || null
827
887
  };
828
888
  return node;
829
- });
830
- state.nodes.sort((a, b) => a.id.localeCompare(b.id));
889
+ })));
831
890
  }
832
891
  };
833
892
  //#endregion
834
893
  //#region document-drive/gen/reducer.ts
894
+ const schemaMemo = /* @__PURE__ */ new Map();
895
+ function memoizedSchema(makeSchema) {
896
+ let schema = schemaMemo.get(makeSchema);
897
+ if (schema === void 0) {
898
+ schema = makeSchema();
899
+ schemaMemo.set(makeSchema, schema);
900
+ }
901
+ return schema;
902
+ }
835
903
  const driveStateReducer = (state, action, dispatch) => {
836
904
  if (isDocumentAction(action)) return state;
837
905
  const typedAction = action;
838
906
  switch (typedAction.type) {
839
907
  case "ADD_FILE":
840
- AddFileInputSchema().parse(typedAction.input);
908
+ memoizedSchema(AddFileInputSchema).parse(typedAction.input);
841
909
  nodeReducer.addFileOperation(state[typedAction.scope], action, dispatch);
842
910
  break;
843
911
  case "ADD_FOLDER":
844
- AddFolderInputSchema().parse(typedAction.input);
912
+ memoizedSchema(AddFolderInputSchema).parse(typedAction.input);
845
913
  nodeReducer.addFolderOperation(state[typedAction.scope], action, dispatch);
846
914
  break;
847
915
  case "DELETE_NODE":
848
- DeleteNodeInputSchema().parse(typedAction.input);
916
+ memoizedSchema(DeleteNodeInputSchema).parse(typedAction.input);
849
917
  nodeReducer.deleteNodeOperation(state[typedAction.scope], action, dispatch);
850
918
  break;
851
919
  case "UPDATE_FILE":
852
- UpdateFileInputSchema().parse(typedAction.input);
920
+ memoizedSchema(UpdateFileInputSchema).parse(typedAction.input);
853
921
  nodeReducer.updateFileOperation(state[typedAction.scope], action, dispatch);
854
922
  break;
855
923
  case "UPDATE_NODE":
856
- UpdateNodeInputSchema().parse(typedAction.input);
924
+ memoizedSchema(UpdateNodeInputSchema).parse(typedAction.input);
857
925
  nodeReducer.updateNodeOperation(state[typedAction.scope], action, dispatch);
858
926
  break;
859
927
  case "COPY_NODE":
860
- CopyNodeInputSchema().parse(typedAction.input);
928
+ memoizedSchema(CopyNodeInputSchema).parse(typedAction.input);
861
929
  nodeReducer.copyNodeOperation(state[typedAction.scope], action, dispatch);
862
930
  break;
863
931
  case "MOVE_NODE":
864
- MoveNodeInputSchema().parse(typedAction.input);
932
+ memoizedSchema(MoveNodeInputSchema).parse(typedAction.input);
865
933
  nodeReducer.moveNodeOperation(state[typedAction.scope], action, dispatch);
866
934
  break;
867
935
  case "SET_DRIVE_NAME":
868
- SetDriveNameInputSchema().parse(typedAction.input);
936
+ memoizedSchema(SetDriveNameInputSchema).parse(typedAction.input);
869
937
  driveReducer.setDriveNameOperation(state[typedAction.scope], action, dispatch);
870
938
  break;
871
939
  case "SET_DRIVE_ICON":
872
- SetDriveIconInputSchema().parse(typedAction.input);
940
+ memoizedSchema(SetDriveIconInputSchema).parse(typedAction.input);
873
941
  driveReducer.setDriveIconOperation(state[typedAction.scope], action, dispatch);
874
942
  break;
875
943
  case "SET_SHARING_TYPE":
876
- SetSharingTypeInputSchema().parse(typedAction.input);
944
+ memoizedSchema(SetSharingTypeInputSchema).parse(typedAction.input);
877
945
  driveReducer.setSharingTypeOperation(state[typedAction.scope], action, dispatch);
878
946
  break;
879
947
  case "SET_AVAILABLE_OFFLINE":
880
- SetAvailableOfflineInputSchema().parse(typedAction.input);
948
+ memoizedSchema(SetAvailableOfflineInputSchema).parse(typedAction.input);
881
949
  driveReducer.setAvailableOfflineOperation(state[typedAction.scope], action, dispatch);
882
950
  break;
883
951
  case "ADD_LISTENER":
884
- AddListenerInputSchema().parse(typedAction.input);
952
+ memoizedSchema(AddListenerInputSchema).parse(typedAction.input);
885
953
  driveReducer.addListenerOperation(state[typedAction.scope], action, dispatch);
886
954
  break;
887
955
  case "REMOVE_LISTENER":
888
- RemoveListenerInputSchema().parse(typedAction.input);
956
+ memoizedSchema(RemoveListenerInputSchema).parse(typedAction.input);
889
957
  driveReducer.removeListenerOperation(state[typedAction.scope], action, dispatch);
890
958
  break;
891
959
  case "ADD_TRIGGER":
892
- AddTriggerInputSchema().parse(typedAction.input);
960
+ memoizedSchema(AddTriggerInputSchema).parse(typedAction.input);
893
961
  driveReducer.addTriggerOperation(state[typedAction.scope], action, dispatch);
894
962
  break;
895
963
  case "REMOVE_TRIGGER":
896
- RemoveTriggerInputSchema().parse(typedAction.input);
964
+ memoizedSchema(RemoveTriggerInputSchema).parse(typedAction.input);
897
965
  driveReducer.removeTriggerOperation(state[typedAction.scope], action, dispatch);
898
966
  break;
899
967
  default: return state;
@@ -966,6 +1034,6 @@ const driveDocumentModelModule = {
966
1034
  }
967
1035
  };
968
1036
  //#endregion
969
- export { AddFileInputSchema, AddFolderInputSchema, AddListenerInputSchema, AddTriggerInputSchema, CopyNodeInputSchema, DeleteNodeInputSchema, DocumentDriveLocalStateSchema, DocumentDriveStateSchema, DriveDocumentHeaderSchema, DriveDocumentSchema, DrivePHStateSchema, FileNodeSchema, FolderNodeSchema, ListenerCallInfoInputSchema, ListenerCallInfoSchema, ListenerFilterInputSchema, ListenerFilterSchema, ListenerInputSchema, ListenerSchema, MoveNodeInputSchema, NodeSchema, PullResponderTriggerDataInputSchema, PullResponderTriggerDataSchema, RemoveListenerInputSchema, RemoveTriggerInputSchema, SetAvailableOfflineInputSchema, SetDriveIconInputSchema, SetDriveNameInputSchema, SetSharingTypeInputSchema, TransmitterTypeSchema, TriggerDataSchema, TriggerInputSchema, TriggerSchema, TriggerTypeSchema, UpdateFileInputSchema, UpdateNodeInputSchema, addFile, addFolder, addListener, addTrigger, assertIsDocumentOfType, assertIsDriveDocument, assertIsDriveState, assertIsStateOfType, copyNode, createGlobalState, createLocalState, createState, defaultGlobalState, defaultLocalState, defaultPHState, definedNonNullAnySchema, deleteNode, driveCreateDocument, driveCreateState, driveDocumentFileExtension, driveDocumentModel, driveDocumentModelModule, driveDocumentReducer, driveDocumentType, driveLoadFromInput, driveReducer, driveSaveToFileHandle, escapeRegExp, generateNodesCopy, getAncestors, getDescendants, getNextCopyNumber, handleTargetNameCollisions, initialGlobalState, initialLocalState, isDefinedNonNullAny, isDocumentOfType, isDriveDocument, isDriveState, isFileNode, isFolderNode, isStateOfType, isValidName, moveNode, nodeReducer, readNodes, removeListener, removeTrigger, setAvailableOffline, setDriveIcon, setDriveName, setSharingType, updateFile, updateNode };
1037
+ export { AddFileInputSchema, AddFolderInputSchema, AddListenerInputSchema, AddTriggerInputSchema, CopyNodeInputSchema, DeleteNodeInputSchema, DocumentDriveLocalStateSchema, DocumentDriveStateSchema, DriveDocumentHeaderSchema, DriveDocumentSchema, DrivePHStateSchema, FileNodeSchema, FolderNodeSchema, ListenerCallInfoInputSchema, ListenerCallInfoSchema, ListenerFilterInputSchema, ListenerFilterSchema, ListenerInputSchema, ListenerSchema, MoveNodeInputSchema, NodeSchema, PullResponderTriggerDataInputSchema, PullResponderTriggerDataSchema, RemoveListenerInputSchema, RemoveTriggerInputSchema, SetAvailableOfflineInputSchema, SetDriveIconInputSchema, SetDriveNameInputSchema, SetSharingTypeInputSchema, TransmitterTypeSchema, TriggerDataSchema, TriggerInputSchema, TriggerSchema, TriggerTypeSchema, UpdateFileInputSchema, UpdateNodeInputSchema, addFile, addFolder, addListener, addTrigger, assertIsDocumentOfType, assertIsDriveDocument, assertIsDriveState, assertIsStateOfType, assignNodes, copyNode, createGlobalState, createLocalState, createState, defaultGlobalState, defaultLocalState, defaultPHState, definedNonNullAnySchema, deleteNode, driveCreateDocument, driveCreateState, driveDocumentFileExtension, driveDocumentModel, driveDocumentModelModule, driveDocumentReducer, driveDocumentType, driveLoadFromInput, driveReducer, driveSaveToFileHandle, escapeRegExp, generateNodesCopy, getAncestors, getDescendants, getNextCopyNumber, handleTargetNameCollisions, initialGlobalState, initialLocalState, insertNodeSorted, isDefinedNonNullAny, isDocumentOfType, isDriveDocument, isDriveState, isFileNode, isFolderNode, isStateOfType, isValidName, moveNode, nodeReducer, readNodes, removeListener, removeTrigger, setAvailableOffline, setDriveIcon, setDriveName, setSharingType, sortNodesById, updateFile, updateNode };
970
1038
 
971
1039
  //# sourceMappingURL=index.js.map