@powerhousedao/shared 6.2.3-dev.4 → 6.2.3-dev.40

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 (273) 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-CHjY5epu.d.mts +27 -0
  88. package/dist/clis/args/service-CHjY5epu.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-CR5lvv_A.mjs +231 -0
  121. package/dist/clis/build-config-CR5lvv_A.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 +1382 -1221
  138. package/dist/clis/index.d.mts.map +1 -1
  139. package/dist/clis/index.mjs +257 -71
  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-DM26OWlT.d.mts +541 -0
  152. package/dist/clis/types-DM26OWlT.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-CXhzL512.js} +33 -8
  157. package/dist/config-loader-CXhzL512.js.map +1 -0
  158. package/dist/connect/config-loader.d.ts +15 -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 +190 -56
  162. package/dist/connect/index.d.ts.map +1 -1
  163. package/dist/connect/index.js +303 -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-CZasmdmu.d.ts +9 -0
  169. package/dist/constants-CZasmdmu.d.ts.map +1 -0
  170. package/dist/constants.d.ts +3 -2
  171. package/dist/constants.js +11 -5
  172. package/dist/constants.js.map +1 -1
  173. package/dist/document-drive/index.d.ts +131 -105
  174. package/dist/document-drive/index.d.ts.map +1 -1
  175. package/dist/document-drive/index.js +116 -54
  176. package/dist/document-drive/index.js.map +1 -1
  177. package/dist/document-model/index.d.ts +4 -4
  178. package/dist/document-model/index.js +294 -231
  179. package/dist/document-model/index.js.map +1 -1
  180. package/dist/document-model/mock.d.ts +2 -3
  181. package/dist/document-model/mock.d.ts.map +1 -1
  182. package/dist/document-model/mock.js +2 -1
  183. package/dist/document-model/mock.js.map +1 -1
  184. package/dist/document-model/utils.d.ts +3 -2
  185. package/dist/document-model/utils.js +1 -1
  186. package/dist/index-DdXp-CVw.d.ts +36 -0
  187. package/dist/index-DdXp-CVw.d.ts.map +1 -0
  188. package/dist/index.d.ts +7 -6
  189. package/dist/index.js.map +1 -1
  190. package/dist/processors/index.d.ts +3 -2
  191. package/dist/processors/index.js +63 -4
  192. package/dist/processors/index.js.map +1 -1
  193. package/dist/purge-v06m_oGz.js +381 -0
  194. package/dist/purge-v06m_oGz.js.map +1 -0
  195. package/dist/registry/index.d.ts +15 -15
  196. package/dist/registry/index.d.ts.map +1 -1
  197. package/dist/registry/index.js +24 -6
  198. package/dist/registry/index.js.map +1 -1
  199. package/dist/registry/manifest-slim.d.ts +4 -3
  200. package/dist/registry/manifest-slim.d.ts.map +1 -1
  201. package/dist/registry/manifest-slim.js +21 -0
  202. package/dist/registry/manifest-slim.js.map +1 -1
  203. package/dist/registry/updates.d.ts +3 -3
  204. package/dist/registry/updates.d.ts.map +1 -1
  205. package/dist/registry/updates.js.map +1 -1
  206. package/dist/registry/urls.d.ts +2 -2
  207. package/dist/registry/urls.d.ts.map +1 -1
  208. package/dist/registry/urls.js.map +1 -1
  209. package/dist/{types-YqLqb0Zb.d.ts → types-B11NGQOQ.d.ts} +39 -43
  210. package/dist/types-B11NGQOQ.d.ts.map +1 -0
  211. package/dist/{types-C1in4fl3.d.ts → types-Bsp8VL2y.d.ts} +2 -2
  212. package/dist/types-Bsp8VL2y.d.ts.map +1 -0
  213. package/dist/{types-CpnWmiFY.d.ts → types-CFbd2nan.d.ts} +2012 -821
  214. package/dist/types-CFbd2nan.d.ts.map +1 -0
  215. package/dist/{utils-DP122OSS.d.ts → utils-BrKxCmKx.d.ts} +2 -2
  216. package/dist/utils-BrKxCmKx.d.ts.map +1 -0
  217. package/dist/{utils-aaTmfxFW.js → utils-CSF716ux.js} +10 -3
  218. package/dist/utils-CSF716ux.js.map +1 -0
  219. package/package.json +10 -5
  220. package/dist/clis/args/access-token--9H57y8J.d.mts +0 -18
  221. package/dist/clis/args/access-token--9H57y8J.d.mts.map +0 -1
  222. package/dist/clis/args/common-CcYbXrBx.mjs.map +0 -1
  223. package/dist/clis/args/common-zPBoTNJF.d.mts +0 -183
  224. package/dist/clis/args/common-zPBoTNJF.d.mts.map +0 -1
  225. package/dist/clis/args/connect-BVVvCmL9.mjs.map +0 -1
  226. package/dist/clis/args/connect-BtU0MTTc.d.mts +0 -443
  227. package/dist/clis/args/connect-BtU0MTTc.d.mts.map +0 -1
  228. package/dist/clis/args/generate-CA916Fvj.mjs.map +0 -1
  229. package/dist/clis/args/generate-DnV-bfXt.d.mts +0 -87
  230. package/dist/clis/args/generate-DnV-bfXt.d.mts.map +0 -1
  231. package/dist/clis/args/help-CjAsudUn.d.mts +0 -193
  232. package/dist/clis/args/help-CjAsudUn.d.mts.map +0 -1
  233. package/dist/clis/args/init-CUXyfquF.d.mts +0 -55
  234. package/dist/clis/args/init-CUXyfquF.d.mts.map +0 -1
  235. package/dist/clis/args/inspect-DtZeoA5c.d.mts +0 -15
  236. package/dist/clis/args/inspect-DtZeoA5c.d.mts.map +0 -1
  237. package/dist/clis/args/install-CkP8zcHb.d.mts +0 -40
  238. package/dist/clis/args/install-CkP8zcHb.d.mts.map +0 -1
  239. package/dist/clis/args/list-BGf8s_gj.d.mts +0 -12
  240. package/dist/clis/args/list-BGf8s_gj.d.mts.map +0 -1
  241. package/dist/clis/args/login-DNsHwvqk.d.mts +0 -27
  242. package/dist/clis/args/login-DNsHwvqk.d.mts.map +0 -1
  243. package/dist/clis/args/magic-string.es-h_0HDQBQ.mjs.map +0 -1
  244. package/dist/clis/args/migrate-sixkWhxm.d.mts +0 -21
  245. package/dist/clis/args/migrate-sixkWhxm.d.mts.map +0 -1
  246. package/dist/clis/args/publish-Dqe5DUst.d.mts +0 -18
  247. package/dist/clis/args/publish-Dqe5DUst.d.mts.map +0 -1
  248. package/dist/clis/args/registry-C_RfTsKB.d.mts +0 -19
  249. package/dist/clis/args/registry-C_RfTsKB.d.mts.map +0 -1
  250. package/dist/clis/args/service-DhIkf8-O.d.mts +0 -22
  251. package/dist/clis/args/service-DhIkf8-O.d.mts.map +0 -1
  252. package/dist/clis/args/switchboard-BlPaq2at.d.mts +0 -72
  253. package/dist/clis/args/switchboard-BlPaq2at.d.mts.map +0 -1
  254. package/dist/clis/args/uninstall-BpA3YYbw.d.mts +0 -31
  255. package/dist/clis/args/uninstall-BpA3YYbw.d.mts.map +0 -1
  256. package/dist/clis/args/unpublish-CvwaIimG.d.mts +0 -24
  257. package/dist/clis/args/unpublish-CvwaIimG.d.mts.map +0 -1
  258. package/dist/clis/args/vetra-CoMvTJK7.d.mts +0 -113
  259. package/dist/clis/args/vetra-CoMvTJK7.d.mts.map +0 -1
  260. package/dist/clis/build-config.mjs.map +0 -1
  261. package/dist/clis/constants.d.mts.map +0 -1
  262. package/dist/config-loader-B845Hidf.js.map +0 -1
  263. package/dist/constants-BP_gjn8g.d.ts +0 -8
  264. package/dist/constants-BP_gjn8g.d.ts.map +0 -1
  265. package/dist/index-C_iVZe7f.d.ts +0 -7
  266. package/dist/index-C_iVZe7f.d.ts.map +0 -1
  267. package/dist/index-DyYIJtVy.d.ts +0 -836
  268. package/dist/index-DyYIJtVy.d.ts.map +0 -1
  269. package/dist/types-C1in4fl3.d.ts.map +0 -1
  270. package/dist/types-CpnWmiFY.d.ts.map +0 -1
  271. package/dist/types-YqLqb0Zb.d.ts.map +0 -1
  272. package/dist/utils-DP122OSS.d.ts.map +0 -1
  273. package/dist/utils-aaTmfxFW.js.map +0 -1
@@ -1,7 +1,6 @@
1
- import { _ as AnalyticsMetric, a as AnalyticsSeriesInput, b as CompoundOperator, c as CompoundAnalyticsExpression, d as ConversionMetric, f as IAnalyticsStore, g as AnalyticsGranularity, h as AnalyticsPathSegment, i as AnalyticsSeries, l as CompoundAnalyticsInputs, m as AnalyticsPath, n as AnalyticsOperand, o as AnalyticsSeriesQuery, p as MultiCurrencyConversion, r as AnalyticsQuery, s as AnalyticsUpdateCallback, t as AnalyticsDimension, u as CompoundAnalyticsQuery, v as AnalyticsPeriodType, y as AnalyticsSerializerTypes } from "../types-C1in4fl3.js";
2
-
1
+ import { _ as AnalyticsMetric, a as AnalyticsSeriesInput, b as CompoundOperator, c as CompoundAnalyticsExpression, d as ConversionMetric, f as IAnalyticsStore, g as AnalyticsGranularity, h as AnalyticsPathSegment, i as AnalyticsSeries, l as CompoundAnalyticsInputs, m as AnalyticsPath, n as AnalyticsOperand, o as AnalyticsSeriesQuery, p as MultiCurrencyConversion, r as AnalyticsQuery, s as AnalyticsUpdateCallback, t as AnalyticsDimension, u as CompoundAnalyticsQuery, v as AnalyticsPeriodType, y as AnalyticsSerializerTypes } from "../types-Bsp8VL2y.js";
3
2
  //#region analytics/analytics-period.d.ts
4
- declare class AnalyticsPeriod {
3
+ export declare class AnalyticsPeriod {
5
4
  get type(): AnalyticsPeriodType;
6
5
  get year(): number;
7
6
  get quarter(): number | null;
@@ -39,5 +38,6 @@ declare class AnalyticsPeriod {
39
38
  }
40
39
  type PeriodTriple = [number, number | undefined, number | undefined];
41
40
  //#endregion
42
- export { AnalyticsDimension, AnalyticsGranularity, AnalyticsMetric, AnalyticsOperand, AnalyticsPath, AnalyticsPathSegment, AnalyticsPeriod, AnalyticsPeriodType, AnalyticsQuery, AnalyticsSerializerTypes, AnalyticsSeries, AnalyticsSeriesInput, AnalyticsSeriesQuery, AnalyticsUpdateCallback, CompoundAnalyticsExpression, CompoundAnalyticsInputs, CompoundAnalyticsQuery, CompoundOperator, ConversionMetric, IAnalyticsStore, MultiCurrencyConversion };
41
+ export { AnalyticsDimension, AnalyticsGranularity, AnalyticsMetric, AnalyticsOperand, AnalyticsPath, AnalyticsPathSegment, AnalyticsPeriodType, AnalyticsQuery, AnalyticsSerializerTypes, AnalyticsSeries, AnalyticsSeriesInput, AnalyticsSeriesQuery, AnalyticsUpdateCallback, CompoundAnalyticsExpression, CompoundAnalyticsInputs, CompoundAnalyticsQuery, CompoundOperator, ConversionMetric, IAnalyticsStore, MultiCurrencyConversion };
42
+ export {};
43
43
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../analytics/analytics-period.ts"],"mappings":";;;cAEa,eAAA;EAAA,IACP,IAAA,CAAA,GAAQ,mBAAA;EAAA,IAGR,IAAA,CAAA;EAAA,IAGA,OAAA,CAAA;EAAA,IAGA,KAAA,CAAA;EAAA,QAII,KAAA;EAAA,QACA,KAAA;EAAA,QACA,QAAA;EAAA,QACA,MAAA;EAED,MAAA,CAAA;;;;SAOO,UAAA,CAAW,MAAA,WAAiB,eAAA;EAAA,OA2B5B,SAAA,CACZ,EAAA,EAAI,eAAA,WACJ,EAAA,EAAI,eAAA,YACH,eAAA;EAAA,OA0BW,iBAAA,CAAkB,IAAA,UAAc,OAAA,WAAkB,YAAA;EAAA,OAMlD,eAAA,CAAgB,IAAA,UAAc,KAAA,WAAgB,YAAA;cAOzC,IAAA,UAAc,OAAA,WAAkB,KAAA;EAY5C,MAAA,CAAO,MAAA,EAAQ,eAAA;EAOf,QAAA,CAAA;EAgBA,cAAA,CAAA;EAsBA,UAAA,CAAW,MAAA,EAAQ,eAAA;EAInB,WAAA,CAAY,MAAA,EAAQ,eAAA;EAIpB,QAAA,CAAS,MAAA,EAAQ,eAAA;EAIjB,UAAA,CAAA,GAAc,eAAA;EAUd,SAAA,CAAA,GAAa,eAAA;EAUb,UAAA,CAAW,CAAA,YAAgB,eAAA;EAI3B,cAAA,CAAe,CAAA,YAAgB,eAAA;EAAA,QAI9B,MAAA;EAAA,QAIA,IAAA;EAAA,QAIA,qBAAA;EAAA,QAYA,WAAA;EAAA,QAsBA,WAAA;EAAA,QAQA,cAAA;EAAA,QASA,YAAA;AAAA;AAAA,KAuBL,YAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../analytics/analytics-period.ts"],"mappings":";;qBAEa;MACP,QAAQ;MAGR;MAGA;MAGA;UAII;UACA;UACA;UACA;EAED;;;;SAOO,WAAW,iBAAiB;SA2B5B,UACZ,IAAI,0BACJ,IAAI,2BACH;SA0BW,kBAAkB,cAAc,kBAAkB;SAMlD,gBAAgB,cAAc,gBAAgB;EAO5D,YAAmB,cAAc,kBAAkB;EAY5C,OAAO,QAAQ;EAOf;EAgBA;EAsBA,WAAW,QAAQ;EAInB,YAAY,QAAQ;EAIpB,SAAS,QAAQ;EAIjB,cAAc;EAUd,aAAa;EAUb,WAAW,aAAgB;EAI3B,eAAe,aAAgB;UAI9B;UAIA;UAIA;UAYA;UAsBA;UAQA;UASA;;KAuBL"}
@@ -46,7 +46,8 @@ var AnalyticsPath = class AnalyticsPath {
46
46
  }
47
47
  _segments;
48
48
  static fromString(path) {
49
- return new AnalyticsPath(parseSeparatedList(path, "/").map((segment) => AnalyticsPathSegment.fromString(segment)));
49
+ const segments = parseSeparatedList(path, "/").map((segment) => AnalyticsPathSegment.fromString(segment));
50
+ return new AnalyticsPath(segments);
50
51
  }
51
52
  static fromStringArray(segments) {
52
53
  return new AnalyticsPath(segments.map((segment) => AnalyticsPathSegment.fromString(segment)));
@@ -55,14 +56,15 @@ var AnalyticsPath = class AnalyticsPath {
55
56
  return new AnalyticsPath(segments);
56
57
  }
57
58
  static fromJSON(json) {
58
- return new AnalyticsPath(json._v.split("/").map((segment) => AnalyticsPathSegment.fromString(segment)));
59
+ const segments = json._v.split("/").map((segment) => AnalyticsPathSegment.fromString(segment));
60
+ return new AnalyticsPath(segments);
59
61
  }
60
62
  constructor(segments) {
61
63
  this._segments = segments;
62
64
  }
63
65
  toJSON() {
64
66
  return {
65
- _t: AnalyticsSerializerTypes.AnalyticsPath,
67
+ _t: 0,
66
68
  _v: this.toString()
67
69
  };
68
70
  }
@@ -115,7 +117,7 @@ var AnalyticsPathSegment = class AnalyticsPathSegment {
115
117
  }
116
118
  toJSON() {
117
119
  return {
118
- _t: AnalyticsSerializerTypes.AnalyticsPathSegment,
120
+ _t: 1,
119
121
  _v: this.toString()
120
122
  };
121
123
  }
@@ -153,23 +155,24 @@ var AnalyticsPeriod = class AnalyticsPeriod {
153
155
  get month() {
154
156
  return this._month;
155
157
  }
156
- _type = AnalyticsPeriodType.Year;
158
+ _type = 0;
157
159
  _year = 1970;
158
160
  _quarter = null;
159
161
  _month = null;
160
162
  toJSON() {
161
163
  return {
162
- _t: AnalyticsSerializerTypes.AnalyticsPeriod,
164
+ _t: 2,
163
165
  _v: this.toString()
164
166
  };
165
167
  }
166
168
  static fromString(period) {
167
169
  let result;
168
170
  if (period.length === 4) result = new AnalyticsPeriod(Number.parseInt(period));
169
- else if (period.length === 7) if (period[4] !== "/") throw new Error(`Invalid period string: '${period}'`);
170
- else if (period[5] === "Q") result = new AnalyticsPeriod(Number.parseInt(period.slice(0, 4)), Number.parseInt(period[6]));
171
- else result = new AnalyticsPeriod(Number.parseInt(period.slice(0, 4)), void 0, Number.parseInt(period.slice(5)));
172
- else throw new Error(`Invalid period string: '${period}'`);
171
+ else if (period.length === 7) {
172
+ if (period[4] !== "/") throw new Error(`Invalid period string: '${period}'`);
173
+ else if (period[5] === "Q") result = new AnalyticsPeriod(Number.parseInt(period.slice(0, 4)), Number.parseInt(period[6]));
174
+ else result = new AnalyticsPeriod(Number.parseInt(period.slice(0, 4)), void 0, Number.parseInt(period.slice(5)));
175
+ } else throw new Error(`Invalid period string: '${period}'`);
173
176
  return result;
174
177
  }
175
178
  static fillRange(p1, p2) {
@@ -210,9 +213,9 @@ var AnalyticsPeriod = class AnalyticsPeriod {
210
213
  return this.toString() === (typeof period === "string" ? period : period.toString());
211
214
  }
212
215
  toString() {
213
- let result = this._year + (this._type === AnalyticsPeriodType.Year ? "" : "/");
214
- if (this._type === AnalyticsPeriodType.Quarter) result += "Q" + this._quarter;
215
- else if (this._type === AnalyticsPeriodType.Month) {
216
+ let result = this._year + (this._type === 0 ? "" : "/");
217
+ if (this._type === 1) result += "Q" + this._quarter;
218
+ else if (this._type === 2) {
216
219
  if (this._month < 10) result += "0";
217
220
  result += this._month;
218
221
  }
@@ -221,17 +224,15 @@ var AnalyticsPeriod = class AnalyticsPeriod {
221
224
  startAsSqlDate() {
222
225
  let result = this._year + "-";
223
226
  switch (this._type) {
224
- case AnalyticsPeriodType.Month:
227
+ case 2:
225
228
  result += (this._month < 10 ? "0" : "") + this.month;
226
229
  break;
227
- case AnalyticsPeriodType.Quarter: {
230
+ case 1: {
228
231
  const firstMonth = (this._quarter - 1) * 3 + 1;
229
232
  result += (firstMonth < 10 ? "0" : "") + firstMonth;
230
233
  break;
231
234
  }
232
- case AnalyticsPeriodType.Year:
233
- result += "01";
234
- break;
235
+ case 0: result += "01";
235
236
  }
236
237
  return result + "-01";
237
238
  }
@@ -246,12 +247,12 @@ var AnalyticsPeriod = class AnalyticsPeriod {
246
247
  }
247
248
  firstMonth() {
248
249
  let month = this._month || 1;
249
- if (this._type === AnalyticsPeriodType.Quarter) month = (this._quarter - 1) * 3 + 1;
250
+ if (this._type === 1) month = (this._quarter - 1) * 3 + 1;
250
251
  return new AnalyticsPeriod(this._year, void 0, month);
251
252
  }
252
253
  lastMonth() {
253
254
  let month = this._month || 12;
254
- if (this._type === AnalyticsPeriodType.Quarter) month = this._quarter * 3;
255
+ if (this._type === 1) month = this._quarter * 3;
255
256
  return new AnalyticsPeriod(this._year, void 0, month);
256
257
  }
257
258
  nextPeriod(n = 1) {
@@ -272,8 +273,8 @@ var AnalyticsPeriod = class AnalyticsPeriod {
272
273
  }
273
274
  _addPeriods(periods) {
274
275
  let result;
275
- if (this._type === AnalyticsPeriodType.Year) result = new AnalyticsPeriod(this._year + periods);
276
- else if (this._type === AnalyticsPeriodType.Quarter) {
276
+ if (this._type === 0) result = new AnalyticsPeriod(this._year + periods);
277
+ else if (this._type === 1) {
277
278
  const [y, q] = AnalyticsPeriod.normalizeQuarters(this._year, this._quarter + periods);
278
279
  result = new AnalyticsPeriod(y, q);
279
280
  } else {
@@ -289,14 +290,14 @@ var AnalyticsPeriod = class AnalyticsPeriod {
289
290
  _initAsQuarter(quarter) {
290
291
  if (quarter < 1 || quarter > 4) throw new Error(`Invalid period quarter: ${quarter}`);
291
292
  this._quarter = quarter;
292
- this._type = AnalyticsPeriodType.Quarter;
293
+ this._type = 1;
293
294
  }
294
295
  _initAsMonth(month) {
295
296
  if (month < 1 || month > 12) throw new Error(`Invalid period month: ${month}`);
296
297
  if (this.quarter == null) this._initAsQuarter(Math.floor((month - 1) / 3) + 1);
297
298
  else if (this.quarter !== Math.floor((month - 1) / 3) + 1) throw new Error(`Period month ${month} outside of quarter ${this.quarter}`);
298
299
  this._month = month;
299
- this._type = AnalyticsPeriodType.Month;
300
+ this._type = 2;
300
301
  }
301
302
  };
302
303
  function moduloButWithoutBugs(base, n) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../analytics/constants.ts","../../analytics/analytics-path.ts","../../analytics/analytics-period.ts"],"sourcesContent":["export enum AnalyticsSerializerTypes {\n AnalyticsPath,\n AnalyticsPathSegment,\n AnalyticsPeriod,\n}\n\nexport enum AnalyticsPeriodType {\n Year,\n Quarter,\n Month,\n}\n\nexport enum AnalyticsMetric {\n Budget,\n Forecast,\n Actuals,\n PaymentsOnChain,\n PaymentsOffChainIncluded,\n FTEs,\n}\nexport enum CompoundOperator {\n VectorAdd,\n VectorSubtract,\n ScalarMultiply,\n ScalarDivide,\n}\nexport enum AnalyticsGranularity {\n Total,\n Annual,\n SemiAnnual,\n Quarterly,\n Monthly,\n Weekly,\n Daily,\n Hourly,\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport { AnalyticsSerializerTypes } from \"./constants.js\";\n\nexport class AnalyticsPath {\n get segments(): AnalyticsPathSegment[] {\n return this._segments;\n }\n\n private _segments: AnalyticsPathSegment[];\n\n public static fromString(path: string): AnalyticsPath {\n const segments = parseSeparatedList(path, \"/\").map((segment) =>\n AnalyticsPathSegment.fromString(segment),\n );\n\n return new AnalyticsPath(segments);\n }\n\n public static fromStringArray(segments: string[]): AnalyticsPath {\n return new AnalyticsPath(\n segments.map((segment) => AnalyticsPathSegment.fromString(segment)),\n );\n }\n\n public static fromArray(segments: AnalyticsPathSegment[]): AnalyticsPath {\n return new AnalyticsPath(segments);\n }\n\n public static fromJSON(json: any): AnalyticsPath {\n const segments = json._v\n .split(\"/\")\n .map((segment: string) => AnalyticsPathSegment.fromString(segment));\n return new AnalyticsPath(segments);\n }\n\n constructor(segments: AnalyticsPathSegment[]) {\n this._segments = segments;\n }\n\n public toJSON() {\n return {\n _t: AnalyticsSerializerTypes.AnalyticsPath,\n _v: this.toString(),\n };\n }\n\n public toString(tail: string = \"\"): string {\n return this._segments.map((s) => s.toString()).join(\"/\") + tail;\n }\n\n public firstSegment(): AnalyticsPathSegment {\n return this._segments.length > 0\n ? this._segments[0]\n : new AnalyticsPathSegment();\n }\n\n public reduce(): AnalyticsPath {\n const result = this._segments.slice(1);\n\n if (result.length < 1) {\n result.push(new AnalyticsPathSegment());\n }\n\n return new AnalyticsPath(result);\n }\n\n public applyLod(levelOfDetail: number): AnalyticsPath {\n const segments = [...this._segments];\n\n while (segments.length < levelOfDetail) {\n segments.push(new AnalyticsPathSegment());\n }\n\n return new AnalyticsPath(segments.slice(0, levelOfDetail));\n }\n}\n\nexport class AnalyticsPathSegment {\n get filters(): NullableStrings {\n return this._filters;\n }\n get groups(): NullableStrings {\n return this._groups;\n }\n\n private _filters: NullableStrings = null;\n private _groups: NullableStrings = null;\n\n public static fromString(segment: string): AnalyticsPathSegment {\n const elements = parseSeparatedList(segment, \":\");\n\n let filtersArg: NullableStrings;\n if (elements[0] === \"*\") {\n filtersArg = null;\n } else {\n filtersArg = parseSeparatedList(elements[0], \",\").map((f) =>\n AnalyticsPathSegment.unescape(f),\n );\n }\n\n let groupsArg: NullableStrings;\n if (elements[1] === undefined || elements[1].length < 1) {\n groupsArg = [];\n } else if (elements[1] === \"*\") {\n groupsArg = null;\n } else {\n groupsArg = parseSeparatedList(elements[1], \",\").map((g) =>\n AnalyticsPathSegment.unescape(g),\n );\n }\n\n return new AnalyticsPathSegment(filtersArg, groupsArg);\n }\n\n public static escape(segment: string): string {\n // Put a backslash in front of the control characters \\ : / and ,\n return segment.replace(/(\\\\|:|\\/|,)/gi, \"\\\\$1\");\n }\n\n public static unescape(segment: string): string {\n // Remove backslashes in front of any character\n return segment.replace(/\\\\(.)/gi, \"$1\");\n }\n\n constructor(filters: NullableStrings = null, groups: NullableStrings = []) {\n this._filters = filters;\n this._groups = groups;\n }\n\n public toJSON() {\n return {\n _t: AnalyticsSerializerTypes.AnalyticsPathSegment,\n _v: this.toString(),\n };\n }\n\n public toString(): string {\n let result = \"\";\n\n if (this._filters === null) {\n result += \"*\";\n } else {\n result += this._filters\n .map((f) => AnalyticsPathSegment.escape(f))\n .join(\",\");\n }\n\n if (this._groups === null) {\n result += \":*\";\n } else if (this._groups.length > 0) {\n result +=\n \":\" + this._groups.map((g) => AnalyticsPathSegment.escape(g)).join(\",\");\n }\n\n return result;\n }\n}\n\ntype NullableStrings = string[] | null;\ntype PathSeparator = \"/\" | \":\" | \",\";\n\n// Defining constant regexes instead of dynamic patterns for compiler optimization\nconst unescapedSeparatorPattern = {\n \":\": /(?<!\\\\):/,\n \",\": /(?<!\\\\),/,\n \"/\": /(?<!\\\\)\\//,\n};\n\nfunction parseSeparatedList(list: string, separator: PathSeparator): string[] {\n /*\n The basic mechanism is that we split the string by commas that \n aren't escaped with a backslash, using the unescapedSeparatorPattern:\n\n - abc,def becomes ['abc', 'def']\n - abc\\,def becomes ['abc,def']\n\n However, we need to deal with an edge case where the backslash \n itself is escaped with a backslash:\n \n - abc\\\\,def must result in ['abc\\\\', 'def']\n - whereas unescapedCommaPattern would result in ['abc\\\\,def']\n\n For this edge case, we are first replacing all double backslashes with @@\n\n - abc\\\\,def is first transformed to abc@@,def\n - unescapedCommaPattern would now result in ['abc@@', 'def']\n - substituting @@ with \\\\ again now gives the intended result ['abc\\\\', 'def']\n\n However, we still want to support the literal string @@ in the input too.\n So, instead of always using @@ as a replacement, we're going to determine a unique \n string first by adding as many @ as needed. \n \n - If the original string has @@ in it, we'll use @@@\n - If the original string has @@ and @@@ in it, we'll use @@@@\n - Etc.\n */\n\n let substituteString = \"@@\";\n while (list.indexOf(substituteString) > -1) {\n substituteString += \"@\";\n }\n\n return list\n .replaceAll(\"\\\\\\\\\", substituteString)\n .split(unescapedSeparatorPattern[separator])\n .map((e) => e.replaceAll(substituteString, \"\\\\\\\\\"));\n}\n","import { AnalyticsPeriodType, AnalyticsSerializerTypes } from \"./constants.js\";\n\nexport class AnalyticsPeriod {\n get type(): AnalyticsPeriodType {\n return this._type;\n }\n get year(): number {\n return this._year;\n }\n get quarter(): number | null {\n return this._quarter;\n }\n get month(): number | null {\n return this._month;\n }\n\n private _type: AnalyticsPeriodType = AnalyticsPeriodType.Year;\n private _year: number = 1970;\n private _quarter: number | null = null;\n private _month: number | null = null;\n\n public toJSON() {\n return {\n _t: AnalyticsSerializerTypes.AnalyticsPeriod,\n _v: this.toString(),\n };\n }\n\n public static fromString(period: string): AnalyticsPeriod {\n let result: AnalyticsPeriod;\n\n if (period.length === 4) {\n result = new AnalyticsPeriod(Number.parseInt(period));\n } else if (period.length === 7) {\n if (period[4] !== \"/\") {\n throw new Error(`Invalid period string: '${period}'`);\n } else if (period[5] === \"Q\") {\n result = new AnalyticsPeriod(\n Number.parseInt(period.slice(0, 4)),\n Number.parseInt(period[6]),\n );\n } else {\n result = new AnalyticsPeriod(\n Number.parseInt(period.slice(0, 4)),\n undefined,\n Number.parseInt(period.slice(5)),\n );\n }\n } else {\n throw new Error(`Invalid period string: '${period}'`);\n }\n\n return result;\n }\n\n public static fillRange(\n p1: AnalyticsPeriod | string,\n p2: AnalyticsPeriod | string,\n ): AnalyticsPeriod[] {\n const obj1 = typeof p1 === \"string\" ? AnalyticsPeriod.fromString(p1) : p1,\n obj2 = typeof p2 === \"string\" ? AnalyticsPeriod.fromString(p2) : p2;\n\n if (obj1.type !== obj2.type) {\n throw new Error(\n `Cannot fill range of different type periods ${obj1.toString()} and ${obj2.toString()}.`,\n );\n }\n\n const [first, last] = obj1.comesBefore(obj2) ? [obj1, obj2] : [obj2, obj1];\n const result = [first];\n\n let next = first.nextPeriod();\n while (next.comesBefore(last)) {\n result.push(next);\n next = next.nextPeriod();\n }\n\n if (!last.equals(first)) {\n result.push(last);\n }\n\n return result;\n }\n\n public static normalizeQuarters(year: number, quarter: number): PeriodTriple {\n const newYear = year + Math.floor((quarter - 1) / 4);\n const newQuarter = moduloButWithoutBugs(quarter - 1, 4) + 1;\n return [newYear, newQuarter, undefined];\n }\n\n public static normalizeMonths(year: number, month: number): PeriodTriple {\n const newYear = year + Math.floor((month - 1) / 12);\n const newMonth = moduloButWithoutBugs(month - 1, 12) + 1;\n const newQuarter = Math.floor((newMonth - 1) / 3) + 1;\n return [newYear, newQuarter, newMonth];\n }\n\n public constructor(year: number, quarter?: number, month?: number) {\n this._initAsYear(year);\n\n if (quarter !== undefined) {\n this._initAsQuarter(quarter);\n }\n\n if (month !== undefined) {\n this._initAsMonth(month);\n }\n }\n\n public equals(period: AnalyticsPeriod | string): boolean {\n return (\n this.toString() ===\n (typeof period === \"string\" ? period : period.toString())\n );\n }\n\n public toString(): string {\n let result =\n this._year + (this._type === AnalyticsPeriodType.Year ? \"\" : \"/\");\n\n if (this._type === AnalyticsPeriodType.Quarter) {\n result += \"Q\" + this._quarter;\n } else if (this._type === AnalyticsPeriodType.Month) {\n if ((this._month as number) < 10) {\n result += \"0\";\n }\n result += this._month;\n }\n\n return result;\n }\n\n public startAsSqlDate(): string {\n let result = this._year + \"-\";\n\n switch (this._type) {\n case AnalyticsPeriodType.Month:\n result += ((this._month as number) < 10 ? \"0\" : \"\") + this.month;\n break;\n\n case AnalyticsPeriodType.Quarter: {\n const firstMonth = ((this._quarter as number) - 1) * 3 + 1;\n result += ((firstMonth as number) < 10 ? \"0\" : \"\") + firstMonth;\n break;\n }\n\n case AnalyticsPeriodType.Year:\n result += \"01\";\n break;\n }\n\n return result + \"-01\";\n }\n\n public comesAfter(period: AnalyticsPeriod): boolean {\n return this._start() > period._end();\n }\n\n public comesBefore(period: AnalyticsPeriod): boolean {\n return period._start() > this._end();\n }\n\n public contains(period: AnalyticsPeriod): boolean {\n return this._start() <= period._start() && this._end() >= period._end();\n }\n\n public firstMonth(): AnalyticsPeriod {\n let month: number = this._month || 1;\n\n if (this._type === AnalyticsPeriodType.Quarter) {\n month = ((this._quarter as number) - 1) * 3 + 1;\n }\n\n return new AnalyticsPeriod(this._year, undefined, month);\n }\n\n public lastMonth(): AnalyticsPeriod {\n let month: number = this._month || 12;\n\n if (this._type === AnalyticsPeriodType.Quarter) {\n month = (this._quarter as number) * 3;\n }\n\n return new AnalyticsPeriod(this._year, undefined, month);\n }\n\n public nextPeriod(n: number = 1): AnalyticsPeriod {\n return this._addPeriods(n);\n }\n\n public previousPeriod(n: number = 1): AnalyticsPeriod {\n return this._addPeriods(-n);\n }\n\n private _start(): number {\n return this._getNumericComparator(false);\n }\n\n private _end(): number {\n return this._getNumericComparator(true);\n }\n\n private _getNumericComparator(endOfPeriod: boolean): number {\n const defaultQuarter = endOfPeriod ? 4 : 1,\n defaultMonth =\n ((this._quarter || defaultQuarter) - 1) * 3 + (endOfPeriod ? 3 : 1),\n result =\n this._year * 1000 +\n (this._quarter || defaultQuarter) * 100 +\n (this._month || defaultMonth);\n\n return result;\n }\n\n private _addPeriods(periods: number): AnalyticsPeriod {\n let result: AnalyticsPeriod;\n\n if (this._type === AnalyticsPeriodType.Year) {\n result = new AnalyticsPeriod(this._year + periods);\n } else if (this._type === AnalyticsPeriodType.Quarter) {\n const [y, q] = AnalyticsPeriod.normalizeQuarters(\n this._year,\n (this._quarter as number) + periods,\n );\n result = new AnalyticsPeriod(y, q);\n } else {\n const [y, _, m] = AnalyticsPeriod.normalizeMonths(\n this._year,\n (this._month as number) + periods,\n );\n result = new AnalyticsPeriod(y, undefined, m);\n }\n\n return result;\n }\n\n private _initAsYear(year: number) {\n if (year < 1970 || year > 2100) {\n throw new Error(`Invalid period year: '${year}'`);\n }\n\n this._year = year;\n }\n\n private _initAsQuarter(quarter: number) {\n if (quarter < 1 || quarter > 4) {\n throw new Error(`Invalid period quarter: ${quarter}`);\n }\n\n this._quarter = quarter;\n this._type = AnalyticsPeriodType.Quarter;\n }\n\n private _initAsMonth(month: number) {\n if (month < 1 || month > 12) {\n throw new Error(`Invalid period month: ${month}`);\n }\n\n if (this.quarter == null) {\n this._initAsQuarter(Math.floor((month - 1) / 3) + 1);\n } else if (this.quarter !== Math.floor((month - 1) / 3) + 1) {\n throw new Error(\n `Period month ${month} outside of quarter ${this.quarter}`,\n );\n }\n\n this._month = month;\n this._type = AnalyticsPeriodType.Month;\n }\n}\n\n// See https://stackoverflow.com/questions/4467539/javascript-modulo-gives-a-negative-result-for-negative-numbers\nfunction moduloButWithoutBugs(base: number, n: number) {\n return ((base % n) + n) % n;\n}\n\ntype PeriodTriple = [number, number | undefined, number | undefined];\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../analytics/constants.ts","../../analytics/analytics-path.ts","../../analytics/analytics-period.ts"],"sourcesContent":["export enum AnalyticsSerializerTypes {\n AnalyticsPath,\n AnalyticsPathSegment,\n AnalyticsPeriod,\n}\n\nexport enum AnalyticsPeriodType {\n Year,\n Quarter,\n Month,\n}\n\nexport enum AnalyticsMetric {\n Budget,\n Forecast,\n Actuals,\n PaymentsOnChain,\n PaymentsOffChainIncluded,\n FTEs,\n}\nexport enum CompoundOperator {\n VectorAdd,\n VectorSubtract,\n ScalarMultiply,\n ScalarDivide,\n}\nexport enum AnalyticsGranularity {\n Total,\n Annual,\n SemiAnnual,\n Quarterly,\n Monthly,\n Weekly,\n Daily,\n Hourly,\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport { AnalyticsSerializerTypes } from \"./constants.js\";\n\nexport class AnalyticsPath {\n get segments(): AnalyticsPathSegment[] {\n return this._segments;\n }\n\n private _segments: AnalyticsPathSegment[];\n\n public static fromString(path: string): AnalyticsPath {\n const segments = parseSeparatedList(path, \"/\").map((segment) =>\n AnalyticsPathSegment.fromString(segment),\n );\n\n return new AnalyticsPath(segments);\n }\n\n public static fromStringArray(segments: string[]): AnalyticsPath {\n return new AnalyticsPath(\n segments.map((segment) => AnalyticsPathSegment.fromString(segment)),\n );\n }\n\n public static fromArray(segments: AnalyticsPathSegment[]): AnalyticsPath {\n return new AnalyticsPath(segments);\n }\n\n public static fromJSON(json: any): AnalyticsPath {\n const segments = json._v\n .split(\"/\")\n .map((segment: string) => AnalyticsPathSegment.fromString(segment));\n return new AnalyticsPath(segments);\n }\n\n constructor(segments: AnalyticsPathSegment[]) {\n this._segments = segments;\n }\n\n public toJSON() {\n return {\n _t: AnalyticsSerializerTypes.AnalyticsPath,\n _v: this.toString(),\n };\n }\n\n public toString(tail: string = \"\"): string {\n return this._segments.map((s) => s.toString()).join(\"/\") + tail;\n }\n\n public firstSegment(): AnalyticsPathSegment {\n return this._segments.length > 0\n ? this._segments[0]\n : new AnalyticsPathSegment();\n }\n\n public reduce(): AnalyticsPath {\n const result = this._segments.slice(1);\n\n if (result.length < 1) {\n result.push(new AnalyticsPathSegment());\n }\n\n return new AnalyticsPath(result);\n }\n\n public applyLod(levelOfDetail: number): AnalyticsPath {\n const segments = [...this._segments];\n\n while (segments.length < levelOfDetail) {\n segments.push(new AnalyticsPathSegment());\n }\n\n return new AnalyticsPath(segments.slice(0, levelOfDetail));\n }\n}\n\nexport class AnalyticsPathSegment {\n get filters(): NullableStrings {\n return this._filters;\n }\n get groups(): NullableStrings {\n return this._groups;\n }\n\n private _filters: NullableStrings = null;\n private _groups: NullableStrings = null;\n\n public static fromString(segment: string): AnalyticsPathSegment {\n const elements = parseSeparatedList(segment, \":\");\n\n let filtersArg: NullableStrings;\n if (elements[0] === \"*\") {\n filtersArg = null;\n } else {\n filtersArg = parseSeparatedList(elements[0], \",\").map((f) =>\n AnalyticsPathSegment.unescape(f),\n );\n }\n\n let groupsArg: NullableStrings;\n if (elements[1] === undefined || elements[1].length < 1) {\n groupsArg = [];\n } else if (elements[1] === \"*\") {\n groupsArg = null;\n } else {\n groupsArg = parseSeparatedList(elements[1], \",\").map((g) =>\n AnalyticsPathSegment.unescape(g),\n );\n }\n\n return new AnalyticsPathSegment(filtersArg, groupsArg);\n }\n\n public static escape(segment: string): string {\n // Put a backslash in front of the control characters \\ : / and ,\n return segment.replace(/(\\\\|:|\\/|,)/gi, \"\\\\$1\");\n }\n\n public static unescape(segment: string): string {\n // Remove backslashes in front of any character\n return segment.replace(/\\\\(.)/gi, \"$1\");\n }\n\n constructor(filters: NullableStrings = null, groups: NullableStrings = []) {\n this._filters = filters;\n this._groups = groups;\n }\n\n public toJSON() {\n return {\n _t: AnalyticsSerializerTypes.AnalyticsPathSegment,\n _v: this.toString(),\n };\n }\n\n public toString(): string {\n let result = \"\";\n\n if (this._filters === null) {\n result += \"*\";\n } else {\n result += this._filters\n .map((f) => AnalyticsPathSegment.escape(f))\n .join(\",\");\n }\n\n if (this._groups === null) {\n result += \":*\";\n } else if (this._groups.length > 0) {\n result +=\n \":\" + this._groups.map((g) => AnalyticsPathSegment.escape(g)).join(\",\");\n }\n\n return result;\n }\n}\n\ntype NullableStrings = string[] | null;\ntype PathSeparator = \"/\" | \":\" | \",\";\n\n// Defining constant regexes instead of dynamic patterns for compiler optimization\nconst unescapedSeparatorPattern = {\n \":\": /(?<!\\\\):/,\n \",\": /(?<!\\\\),/,\n \"/\": /(?<!\\\\)\\//,\n};\n\nfunction parseSeparatedList(list: string, separator: PathSeparator): string[] {\n /*\n The basic mechanism is that we split the string by commas that \n aren't escaped with a backslash, using the unescapedSeparatorPattern:\n\n - abc,def becomes ['abc', 'def']\n - abc\\,def becomes ['abc,def']\n\n However, we need to deal with an edge case where the backslash \n itself is escaped with a backslash:\n \n - abc\\\\,def must result in ['abc\\\\', 'def']\n - whereas unescapedCommaPattern would result in ['abc\\\\,def']\n\n For this edge case, we are first replacing all double backslashes with @@\n\n - abc\\\\,def is first transformed to abc@@,def\n - unescapedCommaPattern would now result in ['abc@@', 'def']\n - substituting @@ with \\\\ again now gives the intended result ['abc\\\\', 'def']\n\n However, we still want to support the literal string @@ in the input too.\n So, instead of always using @@ as a replacement, we're going to determine a unique \n string first by adding as many @ as needed. \n \n - If the original string has @@ in it, we'll use @@@\n - If the original string has @@ and @@@ in it, we'll use @@@@\n - Etc.\n */\n\n let substituteString = \"@@\";\n while (list.indexOf(substituteString) > -1) {\n substituteString += \"@\";\n }\n\n return list\n .replaceAll(\"\\\\\\\\\", substituteString)\n .split(unescapedSeparatorPattern[separator])\n .map((e) => e.replaceAll(substituteString, \"\\\\\\\\\"));\n}\n","import { AnalyticsPeriodType, AnalyticsSerializerTypes } from \"./constants.js\";\n\nexport class AnalyticsPeriod {\n get type(): AnalyticsPeriodType {\n return this._type;\n }\n get year(): number {\n return this._year;\n }\n get quarter(): number | null {\n return this._quarter;\n }\n get month(): number | null {\n return this._month;\n }\n\n private _type: AnalyticsPeriodType = AnalyticsPeriodType.Year;\n private _year: number = 1970;\n private _quarter: number | null = null;\n private _month: number | null = null;\n\n public toJSON() {\n return {\n _t: AnalyticsSerializerTypes.AnalyticsPeriod,\n _v: this.toString(),\n };\n }\n\n public static fromString(period: string): AnalyticsPeriod {\n let result: AnalyticsPeriod;\n\n if (period.length === 4) {\n result = new AnalyticsPeriod(Number.parseInt(period));\n } else if (period.length === 7) {\n if (period[4] !== \"/\") {\n throw new Error(`Invalid period string: '${period}'`);\n } else if (period[5] === \"Q\") {\n result = new AnalyticsPeriod(\n Number.parseInt(period.slice(0, 4)),\n Number.parseInt(period[6]),\n );\n } else {\n result = new AnalyticsPeriod(\n Number.parseInt(period.slice(0, 4)),\n undefined,\n Number.parseInt(period.slice(5)),\n );\n }\n } else {\n throw new Error(`Invalid period string: '${period}'`);\n }\n\n return result;\n }\n\n public static fillRange(\n p1: AnalyticsPeriod | string,\n p2: AnalyticsPeriod | string,\n ): AnalyticsPeriod[] {\n const obj1 = typeof p1 === \"string\" ? AnalyticsPeriod.fromString(p1) : p1,\n obj2 = typeof p2 === \"string\" ? AnalyticsPeriod.fromString(p2) : p2;\n\n if (obj1.type !== obj2.type) {\n throw new Error(\n `Cannot fill range of different type periods ${obj1.toString()} and ${obj2.toString()}.`,\n );\n }\n\n const [first, last] = obj1.comesBefore(obj2) ? [obj1, obj2] : [obj2, obj1];\n const result = [first];\n\n let next = first.nextPeriod();\n while (next.comesBefore(last)) {\n result.push(next);\n next = next.nextPeriod();\n }\n\n if (!last.equals(first)) {\n result.push(last);\n }\n\n return result;\n }\n\n public static normalizeQuarters(year: number, quarter: number): PeriodTriple {\n const newYear = year + Math.floor((quarter - 1) / 4);\n const newQuarter = moduloButWithoutBugs(quarter - 1, 4) + 1;\n return [newYear, newQuarter, undefined];\n }\n\n public static normalizeMonths(year: number, month: number): PeriodTriple {\n const newYear = year + Math.floor((month - 1) / 12);\n const newMonth = moduloButWithoutBugs(month - 1, 12) + 1;\n const newQuarter = Math.floor((newMonth - 1) / 3) + 1;\n return [newYear, newQuarter, newMonth];\n }\n\n public constructor(year: number, quarter?: number, month?: number) {\n this._initAsYear(year);\n\n if (quarter !== undefined) {\n this._initAsQuarter(quarter);\n }\n\n if (month !== undefined) {\n this._initAsMonth(month);\n }\n }\n\n public equals(period: AnalyticsPeriod | string): boolean {\n return (\n this.toString() ===\n (typeof period === \"string\" ? period : period.toString())\n );\n }\n\n public toString(): string {\n let result =\n this._year + (this._type === AnalyticsPeriodType.Year ? \"\" : \"/\");\n\n if (this._type === AnalyticsPeriodType.Quarter) {\n result += \"Q\" + this._quarter;\n } else if (this._type === AnalyticsPeriodType.Month) {\n if ((this._month as number) < 10) {\n result += \"0\";\n }\n result += this._month;\n }\n\n return result;\n }\n\n public startAsSqlDate(): string {\n let result = this._year + \"-\";\n\n switch (this._type) {\n case AnalyticsPeriodType.Month:\n result += ((this._month as number) < 10 ? \"0\" : \"\") + this.month;\n break;\n\n case AnalyticsPeriodType.Quarter: {\n const firstMonth = ((this._quarter as number) - 1) * 3 + 1;\n result += ((firstMonth as number) < 10 ? \"0\" : \"\") + firstMonth;\n break;\n }\n\n case AnalyticsPeriodType.Year:\n result += \"01\";\n break;\n }\n\n return result + \"-01\";\n }\n\n public comesAfter(period: AnalyticsPeriod): boolean {\n return this._start() > period._end();\n }\n\n public comesBefore(period: AnalyticsPeriod): boolean {\n return period._start() > this._end();\n }\n\n public contains(period: AnalyticsPeriod): boolean {\n return this._start() <= period._start() && this._end() >= period._end();\n }\n\n public firstMonth(): AnalyticsPeriod {\n let month: number = this._month || 1;\n\n if (this._type === AnalyticsPeriodType.Quarter) {\n month = ((this._quarter as number) - 1) * 3 + 1;\n }\n\n return new AnalyticsPeriod(this._year, undefined, month);\n }\n\n public lastMonth(): AnalyticsPeriod {\n let month: number = this._month || 12;\n\n if (this._type === AnalyticsPeriodType.Quarter) {\n month = (this._quarter as number) * 3;\n }\n\n return new AnalyticsPeriod(this._year, undefined, month);\n }\n\n public nextPeriod(n: number = 1): AnalyticsPeriod {\n return this._addPeriods(n);\n }\n\n public previousPeriod(n: number = 1): AnalyticsPeriod {\n return this._addPeriods(-n);\n }\n\n private _start(): number {\n return this._getNumericComparator(false);\n }\n\n private _end(): number {\n return this._getNumericComparator(true);\n }\n\n private _getNumericComparator(endOfPeriod: boolean): number {\n const defaultQuarter = endOfPeriod ? 4 : 1,\n defaultMonth =\n ((this._quarter || defaultQuarter) - 1) * 3 + (endOfPeriod ? 3 : 1),\n result =\n this._year * 1000 +\n (this._quarter || defaultQuarter) * 100 +\n (this._month || defaultMonth);\n\n return result;\n }\n\n private _addPeriods(periods: number): AnalyticsPeriod {\n let result: AnalyticsPeriod;\n\n if (this._type === AnalyticsPeriodType.Year) {\n result = new AnalyticsPeriod(this._year + periods);\n } else if (this._type === AnalyticsPeriodType.Quarter) {\n const [y, q] = AnalyticsPeriod.normalizeQuarters(\n this._year,\n (this._quarter as number) + periods,\n );\n result = new AnalyticsPeriod(y, q);\n } else {\n const [y, _, m] = AnalyticsPeriod.normalizeMonths(\n this._year,\n (this._month as number) + periods,\n );\n result = new AnalyticsPeriod(y, undefined, m);\n }\n\n return result;\n }\n\n private _initAsYear(year: number) {\n if (year < 1970 || year > 2100) {\n throw new Error(`Invalid period year: '${year}'`);\n }\n\n this._year = year;\n }\n\n private _initAsQuarter(quarter: number) {\n if (quarter < 1 || quarter > 4) {\n throw new Error(`Invalid period quarter: ${quarter}`);\n }\n\n this._quarter = quarter;\n this._type = AnalyticsPeriodType.Quarter;\n }\n\n private _initAsMonth(month: number) {\n if (month < 1 || month > 12) {\n throw new Error(`Invalid period month: ${month}`);\n }\n\n if (this.quarter == null) {\n this._initAsQuarter(Math.floor((month - 1) / 3) + 1);\n } else if (this.quarter !== Math.floor((month - 1) / 3) + 1) {\n throw new Error(\n `Period month ${month} outside of quarter ${this.quarter}`,\n );\n }\n\n this._month = month;\n this._type = AnalyticsPeriodType.Month;\n }\n}\n\n// See https://stackoverflow.com/questions/4467539/javascript-modulo-gives-a-negative-result-for-negative-numbers\nfunction moduloButWithoutBugs(base: number, n: number) {\n return ((base % n) + n) % n;\n}\n\ntype PeriodTriple = [number, number | undefined, number | undefined];\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { o as debugArgs } from "./common-CcYbXrBx.mjs";
1
+ import { o as debugArgs } from "./common-BXabdhiO.mjs";
2
2
  import { option, optional, string } from "cmd-ts";
3
3
  //#region clis/args/access-token.ts
4
4
  const accessTokenArgs = {
@@ -19,4 +19,4 @@ const accessTokenArgs = {
19
19
  //#endregion
20
20
  export { accessTokenArgs as t };
21
21
 
22
- //# sourceMappingURL=access-token-To5LaIfL.mjs.map
22
+ //# sourceMappingURL=access-token-3Hqv_U8I.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"access-token-To5LaIfL.mjs","names":[],"sources":["../../../clis/args/access-token.ts"],"sourcesContent":["import { option, optional, string } from \"cmd-ts\";\nimport { debugArgs } from \"./common.js\";\nimport { DEFAULT_EXPIRY_DAYS } from \"../constants.js\";\n\nexport const accessTokenArgs = {\n expiry: option({\n long: \"expiry\",\n type: optional(string),\n description: `Token expiry duration. Supports: \"7d\" (days), \"24h\" (hours), \"3600\" or \"3600s\" (seconds)`,\n defaultValue: () => `${DEFAULT_EXPIRY_DAYS}d` as const,\n defaultValueIsSerializable: true,\n }),\n audience: option({\n long: \"audience\",\n type: optional(string),\n description: \"Target audience URL for the token\",\n }),\n ...debugArgs,\n};\n"],"mappings":";;;AAIA,MAAa,kBAAkB;CAC7B,QAAQ,OAAO;EACb,MAAM;EACN,MAAM,SAAS,OAAO;EACtB,aAAa;EACb,oBAAoB;EACpB,4BAA4B;EAC7B,CAAC;CACF,UAAU,OAAO;EACf,MAAM;EACN,MAAM,SAAS,OAAO;EACtB,aAAa;EACd,CAAC;CACF,GAAG;CACJ"}
1
+ {"version":3,"file":"access-token-3Hqv_U8I.mjs","names":[],"sources":["../../../clis/args/access-token.ts"],"sourcesContent":["import { option, optional, string } from \"cmd-ts\";\nimport { debugArgs } from \"./common.js\";\nimport { DEFAULT_EXPIRY_DAYS } from \"../constants.js\";\n\nexport const accessTokenArgs = {\n expiry: option({\n long: \"expiry\",\n type: optional(string),\n description: `Token expiry duration. Supports: \"7d\" (days), \"24h\" (hours), \"3600\" or \"3600s\" (seconds)`,\n defaultValue: () => `${DEFAULT_EXPIRY_DAYS}d` as const,\n defaultValueIsSerializable: true,\n }),\n audience: option({\n long: \"audience\",\n type: optional(string),\n description: \"Target audience URL for the token\",\n }),\n ...debugArgs,\n};\n"],"mappings":";;;AAIA,MAAa,kBAAkB;CAC7B,QAAQ,OAAO;EACb,MAAM;EACN,MAAM,SAAS,MAAM;EACrB,aAAa;EACb,oBAAoB;EACpB,4BAA4B;CAC9B,CAAC;CACD,UAAU,OAAO;EACf,MAAM;EACN,MAAM,SAAS,MAAM;EACrB,aAAa;CACf,CAAC;CACD,GAAG;AACL"}
@@ -0,0 +1,16 @@
1
+ //#region clis/args/access-token.d.ts
2
+ declare const accessTokenArgs: {
3
+ debug: Partial<import("cmd-ts/dist/cjs/argparser.js").Register> & {
4
+ parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<boolean | undefined>>;
5
+ } & import("cmd-ts/dist/cjs/helpdoc.js").ProvidesHelp & import("cmd-ts/dist/cjs/argparser.js").Register & Partial<import("cmd-ts/dist/cjs/helpdoc.js").Descriptive>;
6
+ expiry: Partial<import("cmd-ts/dist/cjs/argparser.js").Register> & {
7
+ parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<string | undefined>>;
8
+ } & import("cmd-ts/dist/cjs/helpdoc.js").ProvidesHelp & Partial<import("cmd-ts/dist/cjs/helpdoc.js").Descriptive>;
9
+ audience: Partial<import("cmd-ts/dist/cjs/argparser.js").Register> & {
10
+ parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<string | undefined>>;
11
+ } & import("cmd-ts/dist/cjs/helpdoc.js").ProvidesHelp & Partial<import("cmd-ts/dist/cjs/helpdoc.js").Descriptive>;
12
+ };
13
+ //#endregion
14
+ export { accessTokenArgs as t };
15
+ export {};
16
+ //# sourceMappingURL=access-token-C5sKsH2O.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access-token-C5sKsH2O.d.mts","names":[],"sources":["../../../clis/args/access-token.ts"],"mappings":";cAIa"}
@@ -1,2 +1,3 @@
1
- import { t as accessTokenArgs } from "./access-token--9H57y8J.mjs";
2
- export { accessTokenArgs };
1
+ import { t as accessTokenArgs } from "./access-token-C5sKsH2O.mjs";
2
+ export { accessTokenArgs };
3
+ export {};
@@ -1,2 +1,2 @@
1
- import { t as accessTokenArgs } from "./access-token-To5LaIfL.mjs";
1
+ import { t as accessTokenArgs } from "./access-token-3Hqv_U8I.mjs";
2
2
  export { accessTokenArgs };
@@ -26,12 +26,21 @@ const DEFAULT_CONNECT_OUTDIR = ".ph/connect-build/dist/";
26
26
  const DEFAULT_RENOWN_URL = "https://www.renown.id";
27
27
  const DEFAULT_SWITCHBOARD_PORT = 4001;
28
28
  const DEFAULT_VETRA_DRIVE_ID = "vetra";
29
- join(homedir(), ".ph");
29
+ const HOME_DIR = homedir();
30
+ join(HOME_DIR, ".ph");
30
31
  const VERSIONED_PEER_DEPENDENCIES = ["document-model", "@powerhousedao/reactor-browser"];
31
- const FEATURE_DEPENDENCIES = { analyticsProcessor: {
32
- peerVersioned: ["@powerhousedao/analytics-engine-core"],
33
- peerExternal: {}
34
- } };
32
+ const FEATURE_DEPENDENCIES = {
33
+ analyticsProcessor: {
34
+ peerVersioned: ["@powerhousedao/analytics-engine-core"],
35
+ peerExternal: {},
36
+ devVersioned: []
37
+ },
38
+ piece: {
39
+ peerVersioned: [],
40
+ peerExternal: {},
41
+ devVersioned: ["@powerhousedao/pieces-framework"]
42
+ }
43
+ };
35
44
  [...VERSIONED_PEER_DEPENDENCIES, ...FEATURE_DEPENDENCIES.analyticsProcessor.peerVersioned];
36
45
  const DEFAULT_CONFIG = {
37
46
  documentModelsDir: "./document-models",
@@ -76,6 +85,20 @@ const buildArgs = {
76
85
  defaultValue: () => "dist",
77
86
  defaultValueIsSerializable: true
78
87
  }),
88
+ noSharedDeps: flag({
89
+ type: boolean,
90
+ long: "no-shared-deps",
91
+ description: "Bundle the shared dependency set instead of externalizing it (default: externalize)",
92
+ defaultValue: () => false,
93
+ defaultValueIsSerializable: true
94
+ }),
95
+ ignoreTypeErrors: flag({
96
+ type: boolean,
97
+ long: "ignore-type-errors",
98
+ description: "Unsafe: build even when tsc reports type errors, without asking. The package can load and still fail at runtime",
99
+ defaultValue: () => false,
100
+ defaultValueIsSerializable: true
101
+ }),
79
102
  ...debugArgs
80
103
  };
81
104
  const packageManagerArgs = {
@@ -181,7 +204,7 @@ const vetraSwitchboardArgs = {
181
204
  const defaultDrivesUrl = option({
182
205
  type: optional(string),
183
206
  long: "default-drives-url",
184
- description: "The default drives url to use in connect",
207
+ description: "Comma-separated drive URLs to use as Connect's default drives.",
185
208
  defaultValue: () => ""
186
209
  });
187
210
  const logLevel = option({
@@ -277,4 +300,4 @@ const commonServerArgs = {
277
300
  //#endregion
278
301
  export { SERVICE_ACTIONS as A, DEFAULT_CONNECT_OUTDIR as C, DEFAULT_SWITCHBOARD_PORT as D, DEFAULT_RENOWN_URL as E, DEFAULT_VETRA_CONNECT_PORT as O, getConfig as S, DEFAULT_CONNECT_STUDIO_PORT as T, packageManagerArgs as _, connectBasePath as a, renownSwitchboardUrl as b, disableLocalPackages as c, getPackageManagerCommand as d, https as f, logLevel as g, localPackage as h, commonServerArgs as i, DEFAULT_VETRA_DRIVE_ID as k, drivesPreserveStrategy as l, httpsKeyFile as m, buildArgs as n, debugArgs as o, httpsCertFile as p, commonArgs as r, defaultDrivesUrl as s, AGENTS$1 as t, force as u, packages as v, DEFAULT_CONNECT_PREVIEW_PORT as w, vetraSwitchboardArgs as x, renownNamespace as y };
279
302
 
280
- //# sourceMappingURL=common-CcYbXrBx.mjs.map
303
+ //# sourceMappingURL=common-BXabdhiO.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common-BXabdhiO.mjs","names":["AGENTS","_AGENTS"],"sources":["../../../clis/constants.ts","../../../clis/file-system/get-config.ts","../../../clis/args/common.ts"],"sourcesContent":["import { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport type { Manifest } from \"../document-model/types.js\";\nimport type { PowerhouseConfig } from \"./types.js\";\n\nexport const SERVICE_ACTIONS = [\n \"start\",\n \"stop\",\n \"status\",\n \"setup\",\n \"restart\",\n] as const;\n\nexport const SECONDS_IN_DAY = 24 * 60 * 60;\nexport const DEFAULT_EXPIRY_DAYS = 7;\nexport const DEFAULT_EXPIRY_SECONDS = DEFAULT_EXPIRY_DAYS * SECONDS_IN_DAY;\n\nexport const DRIVES_PRESERVE_STRATEGIES = [\n \"preserve-all\",\n \"preserve-by-url-and-detach\",\n] as const;\n\nexport const LOG_LEVELS = [\n \"debug\",\n \"info\",\n \"warn\",\n \"error\",\n \"verbose\",\n] as const;\n\nexport const DEFAULT_TIMEOUT = 300 as const;\n\nexport const DEFAULT_CONNECT_STUDIO_PORT = 3000 as const;\n\nexport const DEFAULT_VETRA_CONNECT_PORT = 3001 as const;\n\nexport const DEFAULT_CONNECT_PREVIEW_PORT = 4173 as const;\n\nexport const DEFAULT_CONNECT_OUTDIR = \".ph/connect-build/dist/\" as const;\n\nexport const DEFAULT_RENOWN_URL = \"https://www.renown.id\" as const;\n\nexport const DEFAULT_REGISTRY_URL = \"https://registry.vetra.io\" as const;\n\nexport const DEFAULT_SWITCHBOARD_PORT = 4001 as const;\n\n// Per-project dev-server port bands. `ph init` assigns each project a port\n// triple derived from its name, so two projects never collide and an agent's\n// MCP URL can be baked into .mcp.json before a session starts.\n//\n// Two hard constraints picked these bands, both below 10000:\n//\n// 1. Below the OS ephemeral range. Linux allocates outbound source ports\n// from 32768-60999 (`/proc/sys/net/ipv4/ip_local_port_range`); macOS and\n// Windows start at 49152. A listener parked in that window can lose a\n// race to a transient outbound socket, which would surface as a\n// `--strictPort` failure blaming a project conflict that does not exist.\n// 2. Below 10000, which is where ph-clint starts. ph-clint derives its own\n// per-CLI ports by hashing into 10000-59900, so staying under 10000\n// keeps the two schemes from ever contending.\n//\n// Within those limits the blocks were chosen by measuring which ports the\n// Powerhouse repos actually reference: 2000-2999 has none, 7000-7999 has one,\n// 6000-6999 has five. See PROJECT_PORT_DENYLIST in project-ports.ts for the\n// individual ports skipped inside them.\nexport const PROJECT_PORT_BAND_SIZE = 1000 as const;\nexport const PROJECT_PORT_BAND_SWITCHBOARD = 7000 as const;\nexport const PROJECT_PORT_BAND_STUDIO = 6000 as const;\nexport const PROJECT_PORT_BAND_VETRA_CONNECT = 2000 as const;\n\nexport const DEFAULT_VETRA_DRIVE_ID = \"vetra\" as const;\n\nexport const MINIMUM_NODE_VERSION = \"24.0.0\" as const;\nexport const PH_BIN = \"ph-cli-legacy\" as const;\nexport const POWERHOUSE_CONFIG_FILE = \"powerhouse.config.json\" as const;\nexport const PH_GLOBAL_DIR_NAME = \".ph\" as const;\n// Keep PH_GLOBAL_PROJECT_NAME for backwards compatibility\nexport const PH_GLOBAL_PROJECT_NAME = PH_GLOBAL_DIR_NAME;\n\nexport const HOME_DIR = homedir();\n\nexport const POWERHOUSE_GLOBAL_DIR = join(HOME_DIR, PH_GLOBAL_DIR_NAME);\n\n// Workspace packages that go in peerDependencies of every generated project.\nexport const VERSIONED_PEER_DEPENDENCIES = [\n \"document-model\",\n \"@powerhousedao/reactor-browser\",\n];\n\ntype PeerSpec = { peer: string; dev: string };\n\nexport const REACTOR_API_PACKAGE = \"@powerhousedao/reactor-api\";\nexport const ANALYTICS_ENGINE_CORE_PACKAGE =\n \"@powerhousedao/analytics-engine-core\";\nexport const GRAPHQL_PACKAGE = \"graphql\";\nexport const GRAPHQL_TAG_PACKAGE = \"graphql-tag\";\nexport const PIECES_FRAMEWORK_PACKAGE = \"@powerhousedao/pieces-framework\";\n\n// External peerDependencies of every generated project.\n// `peer` is the consumer-facing range; `dev` is the exact build-tested pin.\n// graphql / graphql-tag are always-on because the workspace packages pulled\n// in by every `ph init` project (codegen, reactor-api, reactor-browser,\n// vetra-packages) declare them as peers — even projects without subgraphs\n// need them in scope so pnpm hoists a single graphql instance.\nexport const PEER_EXTERNAL_DEPENDENCIES = {\n [GRAPHQL_PACKAGE]: { peer: \"^16\", dev: \"16.12.0\" },\n [GRAPHQL_TAG_PACKAGE]: { peer: \"^2\", dev: \"2.12.6\" },\n react: { peer: \"^19\", dev: \"19.2.6\" },\n \"react-dom\": { peer: \"^19\", dev: \"19.2.6\" },\n zod: { peer: \"^4\", dev: \"4.3.6\" },\n} as const satisfies Record<string, PeerSpec>;\n\n// Per-feature deps added dynamically by codegen when required. `devVersioned`\n// is for a workspace package the build inlines, which no consumer provides.\nexport const FEATURE_DEPENDENCIES = {\n analyticsProcessor: {\n peerVersioned: [ANALYTICS_ENGINE_CORE_PACKAGE],\n peerExternal: {},\n devVersioned: [],\n },\n // Each piece is bundled whole (build-pieces.mts), framework included, so the\n // framework is only ever needed to compile the piece's own source.\n piece: {\n peerVersioned: [],\n peerExternal: {},\n devVersioned: [PIECES_FRAMEWORK_PACKAGE],\n },\n} as const satisfies Record<\n string,\n {\n peerVersioned: readonly string[];\n peerExternal: Record<string, PeerSpec>;\n devVersioned: readonly string[];\n }\n>;\n\nexport const VERSIONED_DEPENDENCIES = [\n ...VERSIONED_PEER_DEPENDENCIES,\n ...FEATURE_DEPENDENCIES.analyticsProcessor.peerVersioned,\n];\n\n// Transitive dependencies whose postinstall scripts the generated project\n// trusts. Mirrors the `allowBuilds` map in the boilerplate's\n// pnpm-workspace.yaml and is also passed as `--allow-build` flags to\n// `pnpm dlx @powerhousedao/ph-cli init` so pnpm 11's strict-dep-builds\n// default doesn't prompt during the outer dlx download.\nexport const BOILERPLATE_ALLOWED_BUILDS = [\n \"@apollo/protobufjs\",\n \"@datadog/pprof\",\n \"@parcel/watcher\",\n \"@reown/appkit\",\n \"bufferutil\",\n \"esbuild\",\n \"keccak\",\n \"protobufjs\",\n \"utf-8-validate\",\n] as const;\n\n// Single-version pins the boilerplate enforces on generated projects,\n// avoiding duplicates from coexisting version ranges. Rendered as pnpm\n// `overrides` (pnpm-workspace.yaml) and as yarn v1 `resolutions`\n// (package.json). Generated-project only — never change the monorepo\n// catalog for this (a re-resolution there pulls a tsc-crashing TS6 beta).\nexport const BOILERPLATE_DEPENDENCY_OVERRIDES = {\n \"date-fns\": \"4.3.0\",\n vite: \"8.0.14\",\n rolldown: \"1.0.2\",\n} as const satisfies Record<string, string>;\n\nexport const VERSIONED_DEV_DEPENDENCIES = [\n \"@powerhousedao/ph-cli\",\n \"@powerhousedao/reactor\",\n \"@powerhousedao/shared\",\n \"@powerhousedao/connect\",\n \"@powerhousedao/design-system\",\n];\n\nexport const packageJsonExports = {\n \".\": {\n types: \"./dist/types/index.d.ts\",\n browser: \"./dist/browser/index.js\",\n node: \"./dist/node/index.mjs\",\n },\n \"./reactor\": {\n types: \"./dist/types/reactor/index.d.ts\",\n browser: \"./dist/browser/reactor/index.js\",\n },\n \"./document-models\": {\n types: \"./dist/types/document-models/index.d.ts\",\n browser: \"./dist/browser/document-models/index.js\",\n node: \"./dist/node/document-models/index.mjs\",\n },\n \"./document-models/*\": {\n types: \"./dist/types/document-models/*/index.d.ts\",\n browser: \"./dist/browser/document-models/*/index.js\",\n node: \"./dist/node/document-models/*/index.mjs\",\n },\n \"./editors\": {\n types: \"./dist/types/editors/index.d.ts\",\n browser: \"./dist/browser/editors/index.js\",\n node: \"./dist/node/editors/index.mjs\",\n },\n \"./editors/*\": {\n types: \"./dist/types/editors/*/editor.d.ts\",\n browser: \"./dist/browser/editors/*/editor.js\",\n node: \"./dist/node/editors/*/editor.mjs\",\n },\n \"./subgraphs\": {\n types: \"./dist/types/subgraphs/index.d.ts\",\n browser: \"./dist/browser/subgraphs/index.js\",\n node: \"./dist/node/subgraphs/index.mjs\",\n },\n \"./processors\": {\n types: \"./dist/types/processors/index.d.ts\",\n browser: \"./dist/browser/processors/index.js\",\n node: \"./dist/node/processors/index.mjs\",\n },\n // Node only, as the build is: a piece is loaded by a host process, never by\n // the browser. Without these a package can build a piece and still fail the\n // `packageName/pieces` import a host resolves it through.\n \"./pieces\": {\n types: \"./dist/types/pieces/index.d.ts\",\n node: \"./dist/node/pieces/index.mjs\",\n },\n \"./pieces/*\": {\n types: \"./dist/types/pieces/*/index.d.ts\",\n node: \"./dist/node/pieces/*/index.mjs\",\n },\n \"./manifest\": \"./dist/powerhouse.manifest.json\",\n \"./style.css\": \"./dist/style.css\",\n} as const;\n\nexport const packageScripts = {\n \"test:watch\": \"vitest\",\n lint: \"oxlint --type-aware --type-check\",\n \"lint:fix\": \"oxlint --type-aware --type-check --fix\",\n format: \"oxfmt\",\n \"format:check\": \"oxfmt --check\",\n tsc: \"tsc\",\n \"tsc:watch\": \"tsc --watch\",\n generate: \"ph-cli generate\",\n connect: \"ph-cli connect\",\n build: \"ph-cli build\",\n reactor: \"ph-cli reactor\",\n service: \"ph-cli service\",\n vetra: \"ph-cli vetra\",\n \"service-startup\":\n \"bash ./node_modules/@powerhousedao/ph-cli/dist/scripts/service-startup.sh\",\n \"service-unstartup\":\n \"bash ./node_modules/@powerhousedao/ph-cli/dist/scripts/service-unstartup.sh\",\n} as const;\n\nexport const externalDependencies = {} as const;\n\n// eslint/prettier devDependencies present in projects scaffolded before the oxc migration.\n// Stripped from package.json during `ph migrate`.\nexport const LEGACY_LINT_FORMAT_DEPENDENCIES = [\n \"@eslint/js\",\n \"eslint\",\n \"eslint-config-prettier\",\n \"eslint-plugin-prettier\",\n \"eslint-plugin-react\",\n \"eslint-plugin-react-hooks\",\n \"globals\",\n \"prettier\",\n \"typescript-eslint\",\n] as const;\n\n// Legacy lint/format config files written by eslint/prettier boilerplate.\n// Removed from the project root during `ph migrate`.\nexport const LEGACY_LINT_FORMAT_FILES = [\n \"eslint.config.js\",\n \"eslint.config.mjs\",\n \"eslint.config.cjs\",\n \"eslint.config.ts\",\n \".eslintrc\",\n \".eslintrc.js\",\n \".eslintrc.cjs\",\n \".eslintrc.json\",\n \".eslintrc.yml\",\n \".eslintrc.yaml\",\n \".eslintignore\",\n \".prettierrc\",\n \".prettierrc.js\",\n \".prettierrc.cjs\",\n \".prettierrc.json\",\n \".prettierrc.yml\",\n \".prettierrc.yaml\",\n \"prettier.config.js\",\n \"prettier.config.cjs\",\n \"prettier.config.mjs\",\n \".prettierignore\",\n] as const;\n\nexport const externalDevDependencies = {\n \"@electric-sql/pglite\": \"0.3.15\",\n \"@electric-sql/pglite-tools\": \"0.2.20\",\n \"@powerhousedao/document-engineering\": \"1.40.5\",\n \"@tailwindcss/cli\": \"^4.1.18\",\n \"@tailwindcss/vite\": \"^4.1.18\",\n \"@types/node\": \"^24.9.2\",\n \"@types/react\": \"^19.2.3\",\n \"@types/react-dom\": \"^19.2.3\",\n \"@vitejs/plugin-react\": \"^6.0.1\",\n \"@vitest/coverage-v8\": \"4.1.1\",\n oxfmt: \"0.68.0\",\n oxlint: \"1.70.0\",\n \"oxlint-tsgolint\": \"0.23.0\",\n tailwindcss: \"^4.1.16\",\n typescript: \"~7.0.2\",\n vite: \"^8.0.10\",\n \"vite-tsconfig-paths\": \"6.1.1\",\n vitest: \"4.1.1\",\n} as const;\n\nexport const defaultManifest: Manifest = {\n name: \"\",\n description: \"\",\n category: \"\",\n publisher: {\n name: \"\",\n url: \"\",\n },\n documentModels: [],\n editors: [],\n apps: [],\n subgraphs: [],\n processors: [],\n};\n\nconst DEFAULT_DOCUMENT_MODELS_DIR = \"./document-models\";\nconst DEFAULT_EDITORS_DIR = \"./editors\";\nconst DEFAULT_PROCESSORS_DIR = \"./processors\";\nconst DEFAULT_SUBGRAPHS_DIR = \"./subgraphs\";\nconst DEFAULT_IMPORT_SCRIPTS_DIR = \"./scripts\";\nconst DEFAULT_SKIP_FORMAT = false;\nconst DEFAULT_LOG_LEVEL = \"info\";\n\nexport const DEFAULT_CONFIG: PowerhouseConfig = {\n documentModelsDir: DEFAULT_DOCUMENT_MODELS_DIR,\n editorsDir: DEFAULT_EDITORS_DIR,\n processorsDir: DEFAULT_PROCESSORS_DIR,\n subgraphsDir: DEFAULT_SUBGRAPHS_DIR,\n importScriptsDir: DEFAULT_IMPORT_SCRIPTS_DIR,\n skipFormat: DEFAULT_SKIP_FORMAT,\n logLevel: DEFAULT_LOG_LEVEL,\n auth: {\n enabled: false,\n admins: [],\n },\n};\n","import { readFileSync } from \"node:fs\";\nimport { DEFAULT_CONFIG } from \"../constants.js\";\nimport type { PowerhouseConfig } from \"../types.js\";\n\nexport function getConfig(path = \"./powerhouse.config.json\") {\n let config: PowerhouseConfig = { ...DEFAULT_CONFIG };\n try {\n const configStr = readFileSync(path, \"utf-8\");\n const userConfig = JSON.parse(configStr) as PowerhouseConfig;\n config = { ...config, ...userConfig };\n } catch {\n // console.warn(\"No powerhouse.config.json found, using defaults\");\n }\n\n return config;\n}\n","import {\n array,\n boolean,\n command,\n flag,\n multioption,\n number,\n oneOf,\n option,\n optional,\n string,\n} from \"cmd-ts\";\n// Sub-path: avoids pulling the package-manager-detector runtime here,\n// which `oneOf(AGENTS)` below would force at module load.\nimport type { Agent } from \"package-manager-detector\";\nimport { AGENTS as _AGENTS } from \"package-manager-detector/constants\";\nimport {\n DEFAULT_TIMEOUT,\n DRIVES_PRESERVE_STRATEGIES,\n LOG_LEVELS,\n} from \"../constants.js\";\nimport { getConfig } from \"../file-system/get-config.js\";\n\nexport const AGENTS: Agent[] = _AGENTS;\n\nexport const debugArgs = {\n debug: flag({\n type: optional(boolean),\n long: \"debug\",\n description: \"Log arguments passed to this command\",\n }),\n};\n\nexport const buildArgs = {\n outDir: option({\n type: string,\n long: \"out-dir\",\n description: \"Where to output the bundled code\",\n defaultValue: () => \"dist\" as const,\n defaultValueIsSerializable: true,\n }),\n noSharedDeps: flag({\n type: boolean,\n long: \"no-shared-deps\",\n description:\n \"Bundle the shared dependency set instead of externalizing it (default: externalize)\",\n defaultValue: () => false as const,\n defaultValueIsSerializable: true,\n }),\n ignoreTypeErrors: flag({\n type: boolean,\n long: \"ignore-type-errors\",\n description:\n \"Unsafe: build even when tsc reports type errors, without asking. The package can load and still fail at runtime\",\n defaultValue: () => false as const,\n defaultValueIsSerializable: true,\n }),\n ...debugArgs,\n};\n\nexport const packageManagerArgs = {\n packageManager: option({\n type: optional(oneOf(AGENTS)),\n long: \"package-manager\",\n short: \"p\",\n description:\n \"Specify the package manager to use for your project. Can be one of: `npm`, `pnpm`, `yarn`, or `bun`. Defaults to your environment package manager.\",\n }),\n npm: flag({\n type: optional(boolean),\n long: \"npm\",\n description: \"Use 'npm' as package manager\",\n }),\n pnpm: flag({\n type: optional(boolean),\n long: \"pnpm\",\n description: \"Use 'pnpm' as package manager\",\n }),\n yarn: flag({\n type: optional(boolean),\n long: \"yarn\",\n description: \"Use 'yarn' as package manager\",\n }),\n bun: flag({\n type: optional(boolean),\n long: \"bun\",\n description: \"Use 'bun' as package manager\",\n }),\n};\nexport const getPackageManagerCommand = command({\n name: \"get-package-manager\",\n args: packageManagerArgs,\n handler: (args) => args,\n});\nexport const packages = option({\n type: optional(string),\n long: \"packages\",\n description: \"Comma-separated list of package names to load\",\n env: \"PH_PACKAGES\" as const,\n});\n\nexport const localPackage = option({\n type: optional(string),\n long: \"local-package\",\n description: \"Path to local package to load during development\",\n env: \"PH_LOCAL_PACKAGE\" as const,\n});\n\nexport const disableLocalPackages = flag({\n type: boolean,\n long: \"ignore-local\",\n description: \"Do not load local packages from this project\",\n defaultValue: () => false,\n});\n\nexport const httpsKeyFile = option({\n type: optional(string),\n long: \"https-key-file\",\n description: \"path to the ssl key file\",\n defaultValue: () => {\n const baseConfig = getConfig();\n const https = baseConfig.reactor?.https;\n if (https === undefined) return undefined;\n if (typeof https === \"boolean\") return undefined;\n return https.keyPath;\n },\n});\n\nexport const httpsCertFile = option({\n type: optional(string),\n long: \"https-cert-file\",\n description: \"path to the ssl cert file\",\n defaultValue: () => {\n const baseConfig = getConfig();\n const https = baseConfig.reactor?.https;\n if (https === undefined) return undefined;\n if (typeof https === \"boolean\") return undefined;\n return https.certPath;\n },\n});\n\nexport const https = flag({\n type: optional(boolean),\n long: \"https\",\n description: \"Use https\",\n defaultValue: () => {\n const baseConfig = getConfig();\n const https = baseConfig.reactor?.https;\n if (typeof https === \"boolean\") return https;\n return undefined;\n },\n});\n\nexport const vetraSwitchboardArgs = {\n https,\n httpsKeyFile,\n httpsCertFile,\n dev: flag({\n type: optional(boolean),\n long: \"dev\",\n description: \"enable development mode to load local packages\",\n }),\n remoteDrives: multioption({\n type: array(string),\n long: \"remote-drives\",\n description: \"Specify remote drive URLs to use\",\n defaultValue: () => [],\n }),\n disableLocalPackages,\n ...debugArgs,\n};\n\nexport const defaultDrivesUrl = option({\n type: optional(string),\n long: \"default-drives-url\",\n description: \"Comma-separated drive URLs to use as Connect's default drives.\",\n defaultValue: () => \"\",\n});\n\nexport const logLevel = option({\n type: oneOf(LOG_LEVELS),\n long: \"log-level\",\n description: \"Log level for the application\",\n defaultValue: () => \"info\" as const,\n defaultValueIsSerializable: true,\n env: \"PH_CONNECT_LOG_LEVEL\" as const,\n});\n\nexport const connectBasePath = option({\n long: \"base\",\n type: string,\n description: \"Base path for the app\",\n defaultValue: () => \"/\",\n});\n\nexport const renownNamespace = option({\n type: optional(string),\n long: \"renown-namespace\",\n description:\n \"Renown localStorage namespace; share it across Connects to share login.\",\n});\n\nexport const renownSwitchboardUrl = option({\n type: optional(string),\n long: \"renown-switchboard-url\",\n description:\n \"Override connect.renown.switchboardUrl. When set, enables in-page Renown sign-in.\",\n});\n\nexport const drivesPreserveStrategy = option({\n type: oneOf(DRIVES_PRESERVE_STRATEGIES),\n long: \"drive-preserve-strategy\",\n description: \"The preservation strategy to use on default drives\",\n defaultValue: () => \"preserve-by-url-and-detach\" as const,\n defaultValueIsSerializable: true,\n});\n\nexport const force = flag({\n type: optional(boolean),\n long: \"force\",\n description:\n \"Force dep pre-optimization regardless of whether deps have changed.\",\n});\n\nexport const commonArgs = {\n connectBasePath,\n logLevel,\n packages,\n localPackage,\n disableLocalPackages,\n defaultDrivesUrl,\n drivesPreserveStrategy,\n force,\n ...debugArgs,\n};\n\nexport const commonServerArgs = {\n host: option({\n type: optional(string),\n long: \"host\",\n description:\n \"Expose the server to the network. Pass an IP (e.g. 0.0.0.0) to bind to a specific address.\",\n }),\n open: flag({\n type: optional(boolean),\n long: \"open\",\n description: \"Open browser on startup\",\n }),\n cors: flag({\n type: optional(boolean),\n long: \"cors\",\n description: \"Enable CORS\",\n }),\n strictPort: flag({\n type: optional(boolean),\n long: \"strictPort\",\n description: \"Exit if specified port is already in use\",\n }),\n printUrls: flag({\n type: boolean,\n long: \"print-urls\",\n description: \"Print server urls\",\n defaultValue: () => true,\n defaultValueIsSerializable: true,\n }),\n bindCLIShortcuts: flag({\n type: boolean,\n long: \"bind-cli-shortcuts\",\n description: \"Bind CLI shortcuts\",\n defaultValue: () => true,\n defaultValueIsSerializable: true,\n }),\n watchTimeout: option({\n type: number,\n long: \"watch-timeout\",\n description: \"Amount of time to wait before a file is considered changed\",\n defaultValue: () => DEFAULT_TIMEOUT,\n defaultValueIsSerializable: true,\n }),\n};\n"],"mappings":"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"}