@uipath/flow-tool 1.201.0 → 1.202.0-preview.136

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 (234) hide show
  1. package/dist/{authoring-7r6g06c7.js → authoring-wpa6d0vf.js} +74 -48
  2. package/dist/binding-service-dh91hw9e.js +141 -0
  3. package/dist/{browser-strategy-rkcvc6tn.js → browser-strategy-6atc7v8s.js} +3 -3
  4. package/dist/connector-service-d9ph9kx1.js +948 -0
  5. package/dist/{conversion-H2VEEYLB-ng48mbf7.js → conversion-QANACVCM-zs0hhfjv.js} +39 -33
  6. package/dist/{de-5KVP66U6-f7knj511.js → de-5KVP66U6-1bnf4zt5.js} +52 -52
  7. package/dist/de-6U7ECGHH-xwsw33fk.js +35 -0
  8. package/dist/{de-5HU6GFWV-4EZK6G7N-yrh21f52.js → de-7XQXX2DK-IDWR6CAR-n4z245kt.js} +857 -845
  9. package/dist/{de-5HU6GFWV-zheyw6d2.js → de-7XQXX2DK-tqdy5n2b.js} +857 -845
  10. package/dist/{de-HKTOVV4H-d5yw5j21.js → de-HKTOVV4H-pe9w0xn8.js} +46 -46
  11. package/dist/{de-XLT4QPIP-0rtw349w.js → de-XLT4QPIP-kj81dxjc.js} +9 -9
  12. package/dist/debug-conversation-trigger-452frzyz.js +41 -0
  13. package/dist/debug-http-client-wd6xb8v4.js +31 -0
  14. package/dist/debug-service-fvyexnb1.js +58 -0
  15. package/dist/edge-service-e77bndbe.js +162 -0
  16. package/dist/{elk.bundled-pydbzeez.js → elk.bundled-vpsbxz0p.js} +3 -3
  17. package/dist/{en-MABQK6C4-REWE2WG2-8dp4cqdg.js → en-5ZGC5VQ3-EWX7ILY7-rmtj70fk.js} +898 -898
  18. package/dist/{en-MABQK6C4-nkzq2j8t.js → en-5ZGC5VQ3-h581y30k.js} +897 -897
  19. package/dist/en-EPWMLP2N-2wvge238.js +28 -0
  20. package/dist/{en-UNT7BE26-rhh65jry.js → en-LQHKFSEY-vvbe8ve9.js} +13 -11
  21. package/dist/{en-P4AS26D7-szrzfxz1.js → en-P4AS26D7-zptp77bm.js} +45 -45
  22. package/dist/{en-4KXU7N7B-66fntxa2.js → en-X3S6IZ5J-nhkg6pwn.js} +54 -60
  23. package/dist/{es-MX-H2EAXLYI-qwnqt48x.js → es-MX-H2EAXLYI-j42kfkxy.js} +46 -46
  24. package/dist/es-MX-NHTIP5YM-ar6zfx95.js +35 -0
  25. package/dist/{es-MX-OKNDG2NH-c1k1s1tg.js → es-MX-OKNDG2NH-tcac6j4g.js} +9 -9
  26. package/dist/{es-MX-POESXYP2-UW6VP5QI-cd3a79g9.js → es-MX-U2VN3SZW-KYAJ2ONK-kdram1g1.js} +857 -845
  27. package/dist/{es-MX-POESXYP2-9538722k.js → es-MX-U2VN3SZW-anynsmd8.js} +857 -845
  28. package/dist/{es-MX-XAVLOQW3-9b3cp9n8.js → es-MX-XAVLOQW3-q00km2y7.js} +52 -52
  29. package/dist/{es-NQICVYSQ-aa9z3nhs.js → es-NQICVYSQ-3dtqgget.js} +9 -9
  30. package/dist/{es-O4PAV2CR-jwfaawwk.js → es-O4PAV2CR-0g23ve3v.js} +46 -46
  31. package/dist/es-PQ3RA33Q-y4kxhjfr.js +35 -0
  32. package/dist/{es-VFPNVMP5-thm0z9sr.js → es-VFPNVMP5-bx2c337j.js} +52 -52
  33. package/dist/{es-LUTYN7U7-IY5QWOUF-k2aefzc0.js → es-ZGCPPOME-24PJEGPV-rn86z9kn.js} +857 -845
  34. package/dist/{es-LUTYN7U7-ye5zn4sn.js → es-ZGCPPOME-8gazspjj.js} +857 -845
  35. package/dist/flow-api-wv8p8xbd.js +36 -0
  36. package/dist/flow-debug-service-tfbefas6.js +741 -0
  37. package/dist/flow-eval-node-target-c6wea7rz.js +44 -0
  38. package/dist/flow-eval-run-service-01kdky72.js +961 -0
  39. package/dist/flow-eval-service-ft8e16jz.js +1338 -0
  40. package/dist/flow-init-service-mva4crty.js +35 -0
  41. package/dist/flow-io-r318sjrw.js +36 -0
  42. package/dist/flow-migrate-service-rwcdx60q.js +119 -0
  43. package/dist/flow-pack-service-p4hxyj9e.js +280 -0
  44. package/dist/flow-validate-service-j25pxpwz.js +57 -0
  45. package/dist/{fr-5YRGHXF5-q6b63yg0.js → fr-5YRGHXF5-kz1ywpv6.js} +46 -46
  46. package/dist/{fr-E5MDO4EG-exvrs7ge.js → fr-E5MDO4EG-c3mkty2t.js} +52 -52
  47. package/dist/{fr-PFHIL7YZ-cxnshwa8.js → fr-PFHIL7YZ-2n589p47.js} +9 -9
  48. package/dist/fr-R4L3OAWI-30khpsmn.js +35 -0
  49. package/dist/{fr-LJIK56LW-STG6QR3T-cextvv8q.js → fr-T3G5GZCT-TU4IKBEG-k6xz1s1f.js} +857 -845
  50. package/dist/{fr-LJIK56LW-xf3xf2kh.js → fr-T3G5GZCT-y3f7xb1q.js} +857 -845
  51. package/dist/governance-fetcher-j9cx4f1d.js +391 -0
  52. package/dist/headless-h1myzz32.js +177196 -0
  53. package/dist/hitl-service-kvt5wms4.js +256 -0
  54. package/dist/index-1kgxzh8x.js +143 -0
  55. package/dist/index-4zrwgb3c.js +111 -0
  56. package/dist/index-ev4mdg5y.js +4801 -0
  57. package/dist/{index-er6vy3jk.js → index-eybzsdcc.js} +295 -317
  58. package/dist/{index-hsadteg4.js → index-h8cph72k.js} +4 -4
  59. package/dist/{index-p50kx6jv.js → index-k5tbd184.js} +276 -276
  60. package/dist/index-n33np76r.js +630 -0
  61. package/dist/{index-9f8q2ege.js → index-p3vk57z7.js} +27 -27
  62. package/dist/{index-dhcd9b82.js → index-w0z4s69j.js} +166 -81
  63. package/dist/index.js +29 -32
  64. package/dist/{index.umd.min-drpc57vn.js → index.umd.min-fqefd9kn.js} +3 -3
  65. package/dist/init.js +24 -25
  66. package/dist/input-reader-6pwhtp8v.js +11 -0
  67. package/dist/{ja-FGEGLBJ3-w9byjhze.js → ja-BI5K3JDZ-77zat4z2.js} +857 -845
  68. package/dist/{ja-FGEGLBJ3-MG3BSWXD-vq19zt2p.js → ja-BI5K3JDZ-GTIHISTZ-s6n3r2ab.js} +857 -845
  69. package/dist/{ja-DPO5PPLO-s2a7j3nj.js → ja-DPO5PPLO-mysfmznx.js} +52 -52
  70. package/dist/{ja-P4OSE367-8ywxep9a.js → ja-P4OSE367-srr3qypg.js} +9 -9
  71. package/dist/{ja-SDAPAVCR-943p5gx7.js → ja-SDAPAVCR-kg39dfap.js} +46 -46
  72. package/dist/ja-ZHKCBE5W-x73w6x3e.js +35 -0
  73. package/dist/{js-yaml-cggj6w7q.js → js-yaml-87cdx6bm.js} +27 -19
  74. package/dist/known-types-a20evmmg.js +20 -0
  75. package/dist/ko-6W7OGLLB-mnmqc584.js +35 -0
  76. package/dist/{ko-ITOPNIYI-qz39kamf.js → ko-ITOPNIYI-hmxd2asd.js} +52 -52
  77. package/dist/{ko-TUAK3G3A-s25w0ckg.js → ko-JOBF5V7N-4bv0mjje.js} +857 -845
  78. package/dist/{ko-TUAK3G3A-TBEBKOTM-ns78t2rv.js → ko-JOBF5V7N-O7T4HKIE-ape840y0.js} +857 -845
  79. package/dist/{ko-NAGOZLC3-wb3y9yhh.js → ko-NAGOZLC3-gaxxsnd2.js} +46 -46
  80. package/dist/{ko-PYOS2KJP-5sbj5bp8.js → ko-PYOS2KJP-e7dshyxy.js} +9 -9
  81. package/dist/localization-h8a53z6p.js +47 -0
  82. package/dist/{node-gd4469ea.js → node-cnrcrrb0.js} +7973 -7166
  83. package/dist/node-service-8g5x5d2y.js +70 -0
  84. package/dist/{node-strategy-8gzp67xs.js → node-strategy-gc4sg6a2.js} +132 -16
  85. package/dist/node-sync-service-e2reh33c.js +42 -0
  86. package/dist/{packager-tool-9qecd4wb.js → packager-tool-0gctz400.js} +5 -2
  87. package/dist/{packager-tool-1cb0d5e0.js → packager-tool-0v3s8r01.js} +2 -2
  88. package/dist/{packager-tool-wckvcay0.js → packager-tool-1yh8g550.js} +9 -7
  89. package/dist/packager-tool-27avrkyk.js +15 -0
  90. package/dist/packager-tool-2wefykg9.js +106 -0
  91. package/dist/packager-tool-4fhgws0x.js +757 -0
  92. package/dist/{packager-tool-7yjpwj92.js → packager-tool-4hx14snw.js} +49 -48
  93. package/dist/{packager-tool-3wygxefb.js → packager-tool-58q3tvh7.js} +10 -10
  94. package/dist/{packager-tool-cvwr40ax.js → packager-tool-5qaxht3k.js} +1425 -550
  95. package/dist/packager-tool-5z1eg3ea.js +33289 -0
  96. package/dist/{packager-tool-17cn3xb7.js → packager-tool-6m078z5s.js} +13388 -19366
  97. package/dist/packager-tool-7b6tpg7y.js +77 -0
  98. package/dist/packager-tool-7exrv6w7.js +23 -0
  99. package/dist/packager-tool-8dszjcg5.js +4892 -0
  100. package/dist/packager-tool-8j92afwp.js +58 -0
  101. package/dist/packager-tool-94w17vf8.js +85 -0
  102. package/dist/{packager-tool-vdd02vns.js → packager-tool-9bec251q.js} +543 -1493
  103. package/dist/packager-tool-a1hbfmws.js +399 -0
  104. package/dist/{packager-tool-tq9q9m77.js → packager-tool-a42jnpy5.js} +3 -9
  105. package/dist/packager-tool-abbtfk2v.js +54 -0
  106. package/dist/packager-tool-cdwpc9fh.js +4945 -0
  107. package/dist/packager-tool-e0p2zsyc.js +97 -0
  108. package/dist/packager-tool-eebq62fq.js +540 -0
  109. package/dist/{packager-tool-m6x5sczh.js → packager-tool-em5r6g6j.js} +14 -21
  110. package/dist/packager-tool-eypvc2kv.js +23 -0
  111. package/dist/packager-tool-f0kd5kq4.js +2327 -0
  112. package/dist/packager-tool-fjaa8d3v.js +289 -0
  113. package/dist/packager-tool-g0eha8ge.js +121 -0
  114. package/dist/packager-tool-g9y14b10.js +54 -0
  115. package/dist/packager-tool-gbgfwx8f.js +2 -0
  116. package/dist/packager-tool-jc34wvrw.js +64 -0
  117. package/dist/packager-tool-k99nf3pq.js +25 -0
  118. package/dist/{packager-tool-hr0xg6q8.js → packager-tool-kn91khp6.js} +17 -13
  119. package/dist/{packager-tool-jysvpt8p.js → packager-tool-m3wkcxf5.js} +2 -2
  120. package/dist/{packager-tool-78a3szsp.js → packager-tool-m5qfverj.js} +1720 -2014
  121. package/dist/packager-tool-mwvbq6ef.js +79 -0
  122. package/dist/packager-tool-nq4rcqqg.js +87 -0
  123. package/dist/packager-tool-nxx8naxv.js +4234 -0
  124. package/dist/{packager-tool-3y0k15sv.js → packager-tool-p9stswjj.js} +2858 -19342
  125. package/dist/packager-tool-r0xpcqwg.js +188 -0
  126. package/dist/packager-tool-raq2wbwp.js +18 -0
  127. package/dist/{packager-tool-y3dezh8k.js → packager-tool-rs6jm14d.js} +6 -4
  128. package/dist/packager-tool-s9ff3kk4.js +6 -0
  129. package/dist/{packager-tool-pbsghbmj.js → packager-tool-sykgshez.js} +2 -2
  130. package/dist/packager-tool-tf3d2y8z.js +31 -0
  131. package/dist/packager-tool-tn5e7wnb.js +384 -0
  132. package/dist/packager-tool-v2rkcehq.js +457 -0
  133. package/dist/packager-tool-v86fdwvs.js +262 -0
  134. package/dist/packager-tool-v9psxdy5.js +8185 -0
  135. package/dist/packager-tool-v9rrz038.js +602 -0
  136. package/dist/packager-tool-vpqyvh4c.js +304 -0
  137. package/dist/packager-tool-wcha0e5r.js +443 -0
  138. package/dist/{packager-tool-1gt6js73.js → packager-tool-xhzfwa5p.js} +6 -4
  139. package/dist/{packager-tool-5arsyj36.js → packager-tool-yc4kw997.js} +4 -2
  140. package/dist/{packager-tool-pkq70dec.js → packager-tool-ywqc9rtf.js} +31 -3
  141. package/dist/{packager-tool-0567pxpm.js → packager-tool-z9bfhmm5.js} +10 -10
  142. package/dist/{packager-tool-gmrwvnyh.js → packager-tool-zfrp8ecz.js} +8 -58
  143. package/dist/{packager-tool-3vdpx9ng.js → packager-tool-zke08y39.js} +1121 -1846
  144. package/dist/packager-tool.js +17 -17
  145. package/dist/{pt-7TR74ZMB-1g8my56g.js → pt-7TR74ZMB-bmphh4x2.js} +46 -46
  146. package/dist/{pt-BR-7XGDXRDJ-TR5D7JYL-533wvy7p.js → pt-BR-7DYX2YPT-LZYH4YFD-bx43vx3z.js} +857 -845
  147. package/dist/{pt-BR-7XGDXRDJ-espnkgrj.js → pt-BR-7DYX2YPT-fqxqzqtf.js} +857 -845
  148. package/dist/{pt-BR-BXURWX4W-dqr4dnf9.js → pt-BR-BXURWX4W-bwfcwhk1.js} +52 -52
  149. package/dist/{pt-BR-DXXSYJDO-bn84ewp7.js → pt-BR-DXXSYJDO-a2tp13v7.js} +46 -46
  150. package/dist/pt-BR-UQCYHKMJ-q78n7q70.js +35 -0
  151. package/dist/{pt-BR-Z3TUDJHM-n7ngej6s.js → pt-BR-Z3TUDJHM-8v73x9s7.js} +9 -9
  152. package/dist/pt-D6A6MVB2-yvxca8vz.js +35 -0
  153. package/dist/{pt-TMVOOITK-myha14p9.js → pt-HTXGGX6Y-97t21dty.js} +857 -845
  154. package/dist/{pt-TMVOOITK-H2ADYHSD-ezpggv33.js → pt-HTXGGX6Y-ZHQSDFKI-vehfxadc.js} +857 -845
  155. package/dist/{pt-KSBWHAVQ-hd52bpsz.js → pt-KSBWHAVQ-mhvhgr2p.js} +9 -9
  156. package/dist/{pt-YI4VE4YQ-v7gjeg82.js → pt-YI4VE4YQ-wdkn2dcf.js} +52 -52
  157. package/dist/ro-4TMBHS5M-jz0anpt6.js +35 -0
  158. package/dist/{ro-BJFER5OI-334n28rj.js → ro-BJFER5OI-83tq8vxh.js} +46 -46
  159. package/dist/{ro-2VALF3S5-NXBJUEZN-nqw1zs33.js → ro-KTNQ3MNU-XIE6YPQN-gen8p82z.js} +857 -845
  160. package/dist/{ro-2VALF3S5-cdz5afkr.js → ro-KTNQ3MNU-y08n1x5g.js} +857 -845
  161. package/dist/{ro-RKXZUG7Z-cm3xn3fj.js → ro-RKXZUG7Z-nndrrsq7.js} +52 -52
  162. package/dist/{ro-VZUZTAMR-tccygznf.js → ro-VZUZTAMR-f4q0g3em.js} +9 -9
  163. package/dist/{ru-GSCT4ARZ-qj8dm4dp.js → ru-GSCT4ARZ-1sa9wbr8.js} +1 -1
  164. package/dist/{ru-GSCT4ARZ-FTVCGQTL-5nh4jf2e.js → ru-GSCT4ARZ-FTVCGQTL-gee86v14.js} +1 -1
  165. package/dist/{ru-T73OPRTC-mp5gn7gs.js → ru-T73OPRTC-4knxw497.js} +1 -1
  166. package/dist/{ru-WBLQ5B2U-awt245ky.js → ru-WBLQ5B2U-8r3c7v6d.js} +1 -1
  167. package/dist/ru-WBLQ5B2U-kdey8qa4.js +10 -0
  168. package/dist/{ru-WBLQ5B2U-57ezmxzz.js → ru-WBLQ5B2U-wemdzdqd.js} +1 -1
  169. package/dist/{serialization-GAW7UFOK-9hkdmmd2.js → serialization-J5QK3HPY-bgewpt6f.js} +158 -152
  170. package/dist/services/expression-validator.d.ts +28 -0
  171. package/dist/services/flow-eval-schema/types.d.ts +17 -0
  172. package/dist/services/flow-validate-service.d.ts +26 -0
  173. package/dist/services/node-validators/js-expression-syntax-validator.d.ts +6 -3
  174. package/dist/services/tidy-service.d.ts +26 -0
  175. package/dist/services/vars-reference-rule.d.ts +156 -0
  176. package/dist/shared-utils-8xdq6f04.js +20 -0
  177. package/dist/tidy-service-ashgyfwj.js +34 -0
  178. package/dist/tool.js +30 -33
  179. package/dist/{tr-AA6O2WSR-ga1xnymp.js → tr-AA6O2WSR-86ba4bdf.js} +52 -52
  180. package/dist/tr-GSQQ6SOT-hv1gyeaa.js +35 -0
  181. package/dist/{tr-RQTZ2DMS-bpgd4kma.js → tr-RQTZ2DMS-w3cwv8s4.js} +46 -46
  182. package/dist/{tr-W4AVRSQ4-bt3qqqdy.js → tr-W4AVRSQ4-hjr81xzk.js} +9 -9
  183. package/dist/{tr-RIFCEXFH-BZS7S7QK-q465b62g.js → tr-XHSSPNK7-GW5KVXR3-2w3f1ss6.js} +857 -845
  184. package/dist/{tr-RIFCEXFH-hgkb4g8y.js → tr-XHSSPNK7-cmqyc4wd.js} +857 -845
  185. package/dist/utils/handle-expansion.d.ts +16 -0
  186. package/dist/validation.js +47 -27
  187. package/dist/variable-service-er7ph4br.js +152 -0
  188. package/dist/wait-for-flow-job-45p1a444.js +134 -0
  189. package/dist/{zh-CN-IP3FMXWM-H3JI2XUM-ta4yac7h.js → zh-CN-2EHQT23P-T5XRQCVS-ac17dpc1.js} +857 -845
  190. package/dist/{zh-CN-IP3FMXWM-1cfarhcp.js → zh-CN-2EHQT23P-mr63c4xz.js} +857 -845
  191. package/dist/{zh-CN-6YRAN57T-j7jp34ws.js → zh-CN-6YRAN57T-rd7x2tqs.js} +9 -9
  192. package/dist/zh-CN-EDFRBU32-vvj7tmaq.js +35 -0
  193. package/dist/{zh-CN-R2KLHXQV-wttmznep.js → zh-CN-R2KLHXQV-agqr45ds.js} +52 -52
  194. package/dist/{zh-CN-ZC6LT4IN-vty9mvv8.js → zh-CN-ZC6LT4IN-kbzvvzz5.js} +46 -46
  195. package/dist/zh-TW-HAICM6DE-rh7k3cq7.js +35 -0
  196. package/dist/{zh-TW-AGIDXIPF-R4XZRDJZ-cgxxz5k4.js → zh-TW-MGZCE5BT-P6FLIUAR-zmq07vhs.js} +857 -845
  197. package/dist/{zh-TW-AGIDXIPF-n6r6w7vy.js → zh-TW-MGZCE5BT-c4ekmrz9.js} +857 -845
  198. package/dist/{zh-TW-R7Y5KVMU-q81f4z2p.js → zh-TW-R7Y5KVMU-m61y07e3.js} +46 -46
  199. package/dist/{zh-TW-RJGCQANM-gqn0aca0.js → zh-TW-RJGCQANM-w0x3qc1p.js} +52 -52
  200. package/dist/{zh-TW-SO2245GN-m5kh88bg.js → zh-TW-SO2245GN-n2bn1gg4.js} +9 -9
  201. package/package.json +2 -2
  202. package/dist/de-5KVP66U6-t37qr521.js +0 -161
  203. package/dist/de-WMKOGI7B-6dc1zdnp.js +0 -143
  204. package/dist/en-4KXU7N7B-24v330b5.js +0 -118
  205. package/dist/en-X4DLPKLJ-1h9gj5c1.js +0 -110
  206. package/dist/es-BVPGJUWA-0k59eqfv.js +0 -143
  207. package/dist/es-MX-U6YL5KQX-k4qvpgd4.js +0 -143
  208. package/dist/es-MX-XAVLOQW3-47a405kf.js +0 -161
  209. package/dist/es-VFPNVMP5-6sftsdxe.js +0 -161
  210. package/dist/fr-E5MDO4EG-f3x1jeqw.js +0 -161
  211. package/dist/fr-EKTTDR7Z-m2t68j0m.js +0 -143
  212. package/dist/ja-DPO5PPLO-fmbg7zt2.js +0 -161
  213. package/dist/ja-Y2YBTXNN-5sszk2zv.js +0 -143
  214. package/dist/ko-ITOPNIYI-aqy82jk8.js +0 -161
  215. package/dist/ko-S33XAV26-rfsv9myd.js +0 -143
  216. package/dist/packager-tool-0sz8se22.js +0 -10671
  217. package/dist/packager-tool-8mqydhz8.js +0 -9850
  218. package/dist/packager-tool-p9j43p8h.js +0 -115
  219. package/dist/packager-tool-v74yk918.js +0 -107
  220. package/dist/packager-tool-xj0agqpk.js +0 -11
  221. package/dist/pt-BR-BXURWX4W-xzyndmrx.js +0 -161
  222. package/dist/pt-BR-JO45SCNI-mt93s33c.js +0 -143
  223. package/dist/pt-W3NA4LIZ-fwd1q4j0.js +0 -143
  224. package/dist/pt-YI4VE4YQ-521681zf.js +0 -161
  225. package/dist/ro-RKXZUG7Z-pdztdafr.js +0 -161
  226. package/dist/ro-WLKX6HF5-b9tj8q67.js +0 -143
  227. package/dist/ru-WBLQ5B2U-8xd4gpv2.js +0 -10
  228. package/dist/ru-WBLQ5B2U-mswqs9wc.js +0 -10
  229. package/dist/tr-3U2W2XCA-43ptfc0m.js +0 -143
  230. package/dist/tr-AA6O2WSR-bj9n80k8.js +0 -161
  231. package/dist/zh-CN-IPZYQR3P-egjmvyjf.js +0 -143
  232. package/dist/zh-CN-R2KLHXQV-x6gnk2n0.js +0 -161
  233. package/dist/zh-TW-RJGCQANM-tt8j5wv2.js +0 -161
  234. package/dist/zh-TW-YPVSQVGT-b378ztph.js +0 -143
@@ -0,0 +1,97 @@
1
+ import {
2
+ en_default
3
+ } from "./packager-tool-a42jnpy5.js";
4
+ import {
5
+ __glob
6
+ } from "./packager-tool-c23zrhj8.js";
7
+ import {
8
+ __require
9
+ } from "./packager-tool-1yh8g550.js";
10
+
11
+ // ../../node_modules/@uipath/flow-schema/dist/chunk-IUN2JAAB.js
12
+ var SUPPORTED_LOCALES = ["en", "es", "pt", "de", "fr", "ja", "ko", "ru", "tr", "ro", "zh-CN", "zh-TW", "pt-BR", "es-MX"];
13
+ var DEFAULT_LOCALE = "en";
14
+ function normalizeCasing(locale) {
15
+ const [language, country] = locale.split("-");
16
+ return country ? `${language}-${country.toUpperCase()}` : language;
17
+ }
18
+ function normalizeLocale(locale) {
19
+ const cased = normalizeCasing(locale);
20
+ const supported = SUPPORTED_LOCALES;
21
+ if (supported.includes(cased))
22
+ return cased;
23
+ const base = cased.split("-")[0];
24
+ if (supported.includes(base))
25
+ return base;
26
+ return DEFAULT_LOCALE;
27
+ }
28
+ function resolveSupportedLocale(locale) {
29
+ const cased = normalizeCasing(locale);
30
+ const supported = SUPPORTED_LOCALES;
31
+ if (supported.includes(cased))
32
+ return cased;
33
+ const base = cased.split("-")[0];
34
+ if (supported.includes(base))
35
+ return base;
36
+ return null;
37
+ }
38
+ var REGISTERED = /* @__PURE__ */ new WeakMap;
39
+ function createI18nRegistrar(options) {
40
+ const { namespace, englishBundle, loadCatalog } = options;
41
+ return (instance) => {
42
+ let registered = REGISTERED.get(instance);
43
+ if (registered?.has(namespace))
44
+ return;
45
+ if (!registered) {
46
+ registered = /* @__PURE__ */ new Set;
47
+ REGISTERED.set(instance, registered);
48
+ }
49
+ registered.add(namespace);
50
+ instance.addResourceBundle("en", namespace, englishBundle, true, true);
51
+ const loaded = { en: true };
52
+ const loadForLocale = async (lng) => {
53
+ const target = resolveSupportedLocale(lng);
54
+ if (!target || loaded[target])
55
+ return;
56
+ try {
57
+ const mod = await loadCatalog(target);
58
+ instance.addResourceBundle(target, namespace, mod.default, true, true);
59
+ loaded[target] = true;
60
+ } catch (err) {
61
+ console.warn(`[i18n] Failed to load '${target}' catalog for namespace '${namespace}':`, err);
62
+ }
63
+ };
64
+ instance.on("languageChanged", (lng) => {
65
+ loadForLocale(lng);
66
+ });
67
+ if (instance.language) {
68
+ loadForLocale(instance.language);
69
+ }
70
+ };
71
+ }
72
+ var globImport_locales_json = __glob({
73
+ "../../locales/de.json": () => import("./de-5KVP66U6-1bnf4zt5.js"),
74
+ "../../locales/en.json": () => import("./en-X3S6IZ5J-nhkg6pwn.js"),
75
+ "../../locales/es-MX.json": () => import("./es-MX-XAVLOQW3-q00km2y7.js"),
76
+ "../../locales/es.json": () => import("./es-VFPNVMP5-bx2c337j.js"),
77
+ "../../locales/fr.json": () => import("./fr-E5MDO4EG-c3mkty2t.js"),
78
+ "../../locales/ja.json": () => import("./ja-DPO5PPLO-mysfmznx.js"),
79
+ "../../locales/ko.json": () => import("./ko-ITOPNIYI-hmxd2asd.js"),
80
+ "../../locales/pt-BR.json": () => import("./pt-BR-BXURWX4W-bwfcwhk1.js"),
81
+ "../../locales/pt.json": () => import("./pt-YI4VE4YQ-wdkn2dcf.js"),
82
+ "../../locales/ro.json": () => import("./ro-RKXZUG7Z-nndrrsq7.js"),
83
+ "../../locales/ru.json": () => import("./ru-WBLQ5B2U-8r3c7v6d.js"),
84
+ "../../locales/tr.json": () => import("./tr-AA6O2WSR-86ba4bdf.js"),
85
+ "../../locales/zh-CN.json": () => import("./zh-CN-R2KLHXQV-agqr45ds.js"),
86
+ "../../locales/zh-TW.json": () => import("./zh-TW-RJGCQANM-w0x3qc1p.js")
87
+ });
88
+ var VALIDATION_NAMESPACE = "validation";
89
+ var registerFlowSchemaI18n = createI18nRegistrar({
90
+ namespace: VALIDATION_NAMESPACE,
91
+ englishBundle: en_default,
92
+ loadCatalog: (lng) => globImport_locales_json(`../../locales/${lng}.json`)
93
+ });
94
+
95
+ export { SUPPORTED_LOCALES, DEFAULT_LOCALE, normalizeLocale, resolveSupportedLocale, createI18nRegistrar, VALIDATION_NAMESPACE, registerFlowSchemaI18n };
96
+
97
+ //# debugId=9CA4D26B4AC47A9264756E2164756E21
@@ -0,0 +1,540 @@
1
+ import {
2
+ catchError,
3
+ logger,
4
+ unsupportedSolutionProjectType
5
+ } from "./packager-tool-5qaxht3k.js";
6
+
7
+ // ../solution-sdk/src/solution-file.ts
8
+ var STUDIO_WEB_PROJECT_TYPE_OVERRIDES = {
9
+ ProcessOrchestration: "processOrchestration"
10
+ };
11
+ function normalizeProjectType(projectType) {
12
+ return STUDIO_WEB_PROJECT_TYPE_OVERRIDES[projectType] ?? projectType;
13
+ }
14
+ function toPortableRelativePath(relativePath) {
15
+ return relativePath.replace(/\\/g, "/");
16
+ }
17
+ async function readUipxFile(fs, solutionDir) {
18
+ const dirEntries = await fs.readdir(solutionDir);
19
+ const uipxFileName = dirEntries.find((f) => f.endsWith(".uipx"));
20
+ if (!uipxFileName) {
21
+ throw new Error(`No .uipx file found in ${solutionDir}. Run 'uip solution init' first.`);
22
+ }
23
+ const uipxContent = await fs.readFile(fs.path.join(solutionDir, uipxFileName), "utf-8");
24
+ if (!uipxContent) {
25
+ throw new Error(`Could not read .uipx file: ${uipxFileName} is empty or missing.`);
26
+ }
27
+ const [parseError, parsed] = catchError(() => JSON.parse(uipxContent));
28
+ if (parseError) {
29
+ throw new Error(`Invalid .uipx file: could not parse JSON in ${uipxFileName}.`);
30
+ }
31
+ const uipx = validateUipxFile(parsed, uipxFileName);
32
+ return { uipx, uipxFileName };
33
+ }
34
+ function validateUipxFile(parsed, uipxFileName) {
35
+ if (!isRecord(parsed)) {
36
+ throw new Error(`Invalid .uipx file: ${uipxFileName} must contain a JSON object.`);
37
+ }
38
+ if (typeof parsed.SolutionId !== "string" || !parsed.SolutionId.trim()) {
39
+ throw new Error("Invalid .uipx file: missing SolutionId.");
40
+ }
41
+ if (!Array.isArray(parsed.Projects) || parsed.Projects.length === 0) {
42
+ throw new Error("Invalid .uipx file: missing Projects.");
43
+ }
44
+ for (const [index, project] of parsed.Projects.entries()) {
45
+ if (!isRecord(project)) {
46
+ throw new Error(`Invalid .uipx file: Projects[${index}] must be an object.`);
47
+ }
48
+ if (typeof project.ProjectRelativePath !== "string" || !project.ProjectRelativePath.trim()) {
49
+ const pathHint = typeof project.Path === "string" ? " Found Path, but .uipx uses ProjectRelativePath." : "";
50
+ throw new Error(`Invalid .uipx file: Projects[${index}] is missing ProjectRelativePath.${pathHint} Use 'uip solution projects add' to add projects, or set ProjectRelativePath to the project file path, for example "Foo/project.uiproj".`);
51
+ }
52
+ }
53
+ return parsed;
54
+ }
55
+ function isRecord(value) {
56
+ return typeof value === "object" && value !== null && !Array.isArray(value);
57
+ }
58
+ async function createSolutionManifest(fs, solutionDir, solutionName, options = {}) {
59
+ const resolvedDir = fs.path.resolve(solutionDir);
60
+ if (!(options.allowExistingDir && await fs.exists(resolvedDir))) {
61
+ await fs.mkdir(resolvedDir);
62
+ }
63
+ const solutionId = crypto.randomUUID();
64
+ const manifest = {
65
+ DocVersion: "1.0.0",
66
+ StudioMinVersion: "2025.10.0",
67
+ SolutionId: solutionId,
68
+ Projects: []
69
+ };
70
+ const solutionFile = fs.path.join(resolvedDir, `${solutionName}.uipx`);
71
+ await fs.writeFile(solutionFile, `${JSON.stringify(manifest, null, 2)}
72
+ `);
73
+ return {
74
+ solutionDir: resolvedDir,
75
+ solutionFile,
76
+ solutionId
77
+ };
78
+ }
79
+ var AUTO_SOLUTION_SUFFIX = "Solution";
80
+ async function autoScaffoldSolution(fs, baseDir, projectName) {
81
+ const solutionName = `${projectName}${AUTO_SOLUTION_SUFFIX}`;
82
+ const solutionDir = fs.path.resolve(baseDir, solutionName);
83
+ const expectedSolutionFile = fs.path.join(solutionDir, `${solutionName}.uipx`);
84
+ if (await fs.exists(expectedSolutionFile)) {
85
+ return {
86
+ Name: solutionName,
87
+ Path: solutionDir,
88
+ SolutionFile: expectedSolutionFile
89
+ };
90
+ }
91
+ const { solutionFile } = await createSolutionManifest(fs, solutionDir, solutionName, { allowExistingDir: true });
92
+ return {
93
+ Name: solutionName,
94
+ Path: solutionDir,
95
+ SolutionFile: solutionFile
96
+ };
97
+ }
98
+ async function prepareProjectLocation(fs, candidateProjectDir, projectName, options = {}) {
99
+ const resolved = fs.path.resolve(candidateProjectDir);
100
+ if (options.skipRegistration) {
101
+ return { projectDir: resolved };
102
+ }
103
+ const discovery = await findNearestParentUipxFile(fs, resolved);
104
+ if (discovery.status !== "notFound") {
105
+ return { projectDir: resolved };
106
+ }
107
+ const baseDir = fs.path.dirname(resolved);
108
+ const autoCreatedSolution = await autoScaffoldSolution(fs, baseDir, projectName);
109
+ const projectDir = fs.path.join(autoCreatedSolution.Path, projectName);
110
+ await warnIfCandidateDirShadowed(fs, resolved, projectDir);
111
+ return { projectDir, autoCreatedSolution };
112
+ }
113
+ async function warnIfCandidateDirShadowed(fs, candidateDir, projectDir) {
114
+ const [, exists] = await catchError(fs.exists(candidateDir));
115
+ if (!exists) {
116
+ return;
117
+ }
118
+ const [, entries] = await catchError(fs.readdir(candidateDir));
119
+ if (!entries || entries.length === 0) {
120
+ return;
121
+ }
122
+ logger.warn(`An existing directory "${candidateDir}" was left untouched. ` + `The project was created inside the auto-created solution at "${projectDir}". ` + "Run init from inside an existing solution, or pass --skip-solution-registration, if you meant to use the existing directory.");
123
+ }
124
+ function resolveSolutionDir(fs, inputPath) {
125
+ const resolved = fs.path.resolve(inputPath);
126
+ if (resolved.endsWith(".uipx")) {
127
+ return fs.path.dirname(resolved);
128
+ }
129
+ return resolved;
130
+ }
131
+ async function updateUipxSolutionId(fs, uipxPath, newSolutionId) {
132
+ const [readError, content] = await catchError(fs.readFile(uipxPath, "utf-8"));
133
+ if (readError || !content) {
134
+ logger.error(`Could not read .uipx file for update: ${readError?.message ?? "empty file"}`);
135
+ return;
136
+ }
137
+ const [parseError, parsed] = catchError(() => JSON.parse(content));
138
+ if (parseError) {
139
+ logger.error(`Could not parse .uipx file for update: ${parseError.message}`);
140
+ return;
141
+ }
142
+ parsed.SolutionId = newSolutionId;
143
+ const [writeError] = await catchError(fs.writeFile(uipxPath, JSON.stringify(parsed, null, 4)));
144
+ if (writeError) {
145
+ logger.error(`Could not update .uipx with new SolutionId: ${writeError.message}`);
146
+ } else {
147
+ logger.info(`Updated .uipx with Studio Web SolutionId: ${newSolutionId}`);
148
+ }
149
+ }
150
+ async function findSolutionFile(fs, projectPath) {
151
+ const parentDir = fs.path.resolve(projectPath, "..");
152
+ const [dirError, entries] = await catchError(fs.readdir(parentDir));
153
+ if (dirError) {
154
+ logger.error(`Could not read parent directory for .uipx file: ${dirError.message}`);
155
+ return;
156
+ }
157
+ const uipxFile = entries.find((entry) => entry.endsWith(".uipx"));
158
+ if (!uipxFile) {
159
+ logger.info("No .uipx solution file found in parent directory.");
160
+ return;
161
+ }
162
+ const uipxPath = fs.path.join(parentDir, uipxFile);
163
+ const [readError, content] = await catchError(fs.readFile(uipxPath, "utf-8"));
164
+ if (readError || content === null) {
165
+ logger.error(`Could not read .uipx file: ${readError?.message ?? "file returned null"}`);
166
+ return;
167
+ }
168
+ const [parseError, parsed] = catchError(() => JSON.parse(content));
169
+ if (parseError) {
170
+ logger.error(`Could not parse .uipx file: ${parseError.message}`);
171
+ return;
172
+ }
173
+ const solutionId = parsed.SolutionId;
174
+ const projectId = parsed.Projects?.[0]?.Id;
175
+ if (!solutionId) {
176
+ logger.info("No SolutionId found in .uipx file.");
177
+ return;
178
+ }
179
+ logger.info(`Found solution file: ${uipxFile} (SolutionId: ${solutionId})`);
180
+ return {
181
+ solutionId,
182
+ projectId: projectId ?? crypto.randomUUID()
183
+ };
184
+ }
185
+ async function updateSolutionFile(fs, projectPath, newSolutionId) {
186
+ const parentDir = fs.path.resolve(projectPath, "..");
187
+ const [dirError, entries] = await catchError(fs.readdir(parentDir));
188
+ if (dirError)
189
+ return;
190
+ const uipxFile = entries.find((entry) => entry.endsWith(".uipx"));
191
+ if (!uipxFile)
192
+ return;
193
+ const uipxPath = fs.path.join(parentDir, uipxFile);
194
+ await updateUipxSolutionId(fs, uipxPath, newSolutionId);
195
+ }
196
+ async function tryRegisterProjectInParentSolution(fs, projectDir, options) {
197
+ if (options?.skipRegistration) {
198
+ return {
199
+ Status: "OptedOut",
200
+ Message: "Solution auto-registration skipped (--skip-solution-registration).",
201
+ Instructions: buildOptedOutInstructions(fs.path.resolve(projectDir))
202
+ };
203
+ }
204
+ const [registrationError, registration] = await catchError(registerProjectInParentSolution(fs, projectDir));
205
+ if (registrationError) {
206
+ return {
207
+ Status: "Failed",
208
+ Message: "Project registration failed.",
209
+ Instructions: buildRegistrationFailureInstructions(projectDir, registrationError.message)
210
+ };
211
+ }
212
+ return registration;
213
+ }
214
+ async function registerProjectInParentSolution(fs, projectDir) {
215
+ const resolvedProjectDir = fs.path.resolve(projectDir);
216
+ const discovery = await findNearestParentUipxFile(fs, resolvedProjectDir);
217
+ if (discovery.status === "notFound") {
218
+ return {
219
+ Status: "NotInSolution",
220
+ Message: "Project created in standalone mode; no parent .uipx solution found.",
221
+ Instructions: buildStandaloneInstructions(resolvedProjectDir)
222
+ };
223
+ }
224
+ if (discovery.status === "skipped") {
225
+ return discovery.registration;
226
+ }
227
+ const solutionFile = discovery.solutionFile;
228
+ const solutionDir = fs.path.dirname(solutionFile);
229
+ const relativeProjectDir = fs.path.relative(solutionDir, resolvedProjectDir);
230
+ if (relativeProjectDir === "" || relativeProjectDir.startsWith("..") || fs.path.isAbsolute(relativeProjectDir)) {
231
+ return {
232
+ Status: "Skipped",
233
+ Message: "Project registration skipped.",
234
+ Solution: solutionFile,
235
+ Instructions: `Project must reside within the solution folder.
236
+ Solution: ${solutionDir}
237
+ Project: ${resolvedProjectDir}`
238
+ };
239
+ }
240
+ const [projectFileError, projectFile] = await findProjectFile(fs, resolvedProjectDir);
241
+ if (projectFileError) {
242
+ return {
243
+ Status: "Failed",
244
+ Message: "Project registration failed.",
245
+ Solution: solutionFile,
246
+ Instructions: buildRegistrationFailureInstructions(resolvedProjectDir, projectFileError.message)
247
+ };
248
+ }
249
+ const [projectManifestError, projectManifest] = await readProjectManifest(fs, projectFile.filePath, projectFile.useProjectJson);
250
+ if (projectManifestError) {
251
+ return {
252
+ Status: "Failed",
253
+ Message: "Project registration failed.",
254
+ Solution: solutionFile,
255
+ Instructions: buildRegistrationFailureInstructions(resolvedProjectDir, projectManifestError.message)
256
+ };
257
+ }
258
+ const unsupportedReason = unsupportedSolutionProjectType(projectManifest.projectType);
259
+ if (unsupportedReason) {
260
+ return {
261
+ Status: "Skipped",
262
+ Message: "Project registration skipped.",
263
+ Solution: solutionFile,
264
+ Instructions: unsupportedReason
265
+ };
266
+ }
267
+ const projectRelativePath = toPortableRelativePath(fs.path.join(relativeProjectDir, projectFile.fileName));
268
+ const [solutionError, solution] = await readSolutionManifest(fs, solutionFile);
269
+ if (solutionError) {
270
+ return {
271
+ Status: "Failed",
272
+ Message: "Project registration failed.",
273
+ Solution: solutionFile,
274
+ Project: projectRelativePath,
275
+ Instructions: buildRegistrationFailureInstructions(resolvedProjectDir, solutionError.message)
276
+ };
277
+ }
278
+ const existingProject = solution.projects.find((project) => toPortableRelativePath(project.ProjectRelativePath) === projectRelativePath);
279
+ if (existingProject) {
280
+ return {
281
+ Status: "AlreadyRegistered",
282
+ Message: "Project already registered in solution.",
283
+ Solution: solutionFile,
284
+ Project: projectRelativePath,
285
+ ProjectId: typeof existingProject.Id === "string" ? existingProject.Id : undefined,
286
+ Instructions: buildRegistrationSuccessInstructions(solutionDir)
287
+ };
288
+ }
289
+ const projectId = crypto.randomUUID();
290
+ solution.projects.push({
291
+ Type: normalizeProjectType(projectManifest.projectType),
292
+ ProjectRelativePath: projectRelativePath,
293
+ Id: projectId
294
+ });
295
+ solution.content.Projects = solution.projects;
296
+ const [writeError] = await catchError(fs.writeFile(solutionFile, `${JSON.stringify(solution.content, null, 2)}
297
+ `));
298
+ if (writeError) {
299
+ return {
300
+ Status: "Failed",
301
+ Message: "Project registration failed.",
302
+ Solution: solutionFile,
303
+ Project: projectRelativePath,
304
+ Instructions: buildRegistrationFailureInstructions(resolvedProjectDir, writeError.message)
305
+ };
306
+ }
307
+ return {
308
+ Status: "Registered",
309
+ Message: "Project registered in parent solution.",
310
+ Solution: solutionFile,
311
+ Project: projectRelativePath,
312
+ ProjectId: projectId,
313
+ Instructions: buildRegistrationSuccessInstructions(solutionDir)
314
+ };
315
+ }
316
+ async function findNearestParentUipxFile(fs, projectDir) {
317
+ let currentDir = fs.path.dirname(fs.path.resolve(projectDir));
318
+ while (true) {
319
+ const [readDirError, entries] = await catchError(fs.readdir(currentDir));
320
+ if (readDirError) {
321
+ return {
322
+ status: "skipped",
323
+ registration: {
324
+ Status: "Failed",
325
+ Message: "Project registration failed.",
326
+ Instructions: buildRegistrationFailureInstructions(projectDir, `Could not inspect parent directory for a solution: ${currentDir}
327
+ ${readDirError.message}`)
328
+ }
329
+ };
330
+ }
331
+ const solutionFiles = entries.filter((entry) => entry.endsWith(".uipx"));
332
+ if (solutionFiles.length > 1) {
333
+ return {
334
+ status: "skipped",
335
+ registration: {
336
+ Status: "Skipped",
337
+ Message: "Project registration skipped.",
338
+ Instructions: `Found multiple .uipx files in ${currentDir}: ${solutionFiles.join(", ")}. Run 'uip solution projects add "${projectDir}" <solution.uipx>' to choose one.`
339
+ }
340
+ };
341
+ }
342
+ if (solutionFiles.length === 1) {
343
+ return {
344
+ status: "found",
345
+ solutionFile: fs.path.join(currentDir, solutionFiles[0])
346
+ };
347
+ }
348
+ const parentDir = fs.path.dirname(currentDir);
349
+ if (parentDir === currentDir) {
350
+ return { status: "notFound" };
351
+ }
352
+ currentDir = parentDir;
353
+ }
354
+ }
355
+ async function findProjectFile(fs, projectDir) {
356
+ const uiprojPath = fs.path.join(projectDir, "project.uiproj");
357
+ if (await fs.exists(uiprojPath)) {
358
+ return [
359
+ null,
360
+ {
361
+ filePath: uiprojPath,
362
+ fileName: "project.uiproj",
363
+ useProjectJson: false
364
+ }
365
+ ];
366
+ }
367
+ const jsonProjectPath = fs.path.join(projectDir, "project.json");
368
+ if (await fs.exists(jsonProjectPath)) {
369
+ return [
370
+ null,
371
+ {
372
+ filePath: jsonProjectPath,
373
+ fileName: "project.json",
374
+ useProjectJson: true
375
+ }
376
+ ];
377
+ }
378
+ return [
379
+ new Error(`No project file found in ${projectDir}. Expected project.uiproj or project.json.`),
380
+ null
381
+ ];
382
+ }
383
+ async function readProjectManifest(fs, filePath, useProjectJson) {
384
+ const [readError, rawContent] = await catchError(fs.readFile(filePath, "utf-8"));
385
+ if (readError || !rawContent) {
386
+ return [readError ?? new Error(`Unable to read ${filePath}.`), null];
387
+ }
388
+ const [parseError, parsed] = catchError(() => JSON.parse(rawContent));
389
+ if (parseError) {
390
+ return [
391
+ new Error(`Invalid JSON in project file: ${parseError.message}`),
392
+ null
393
+ ];
394
+ }
395
+ if (!isRecord(parsed)) {
396
+ return [new Error(`Invalid project file: ${filePath}`), null];
397
+ }
398
+ const designOptions = parsed.designOptions;
399
+ const outputType = useProjectJson && isRecord(designOptions) ? readString(designOptions.outputType) : undefined;
400
+ const projectType = outputType ?? readString(parsed.ProjectType);
401
+ if (!projectType) {
402
+ return [new Error(`ProjectType not found in ${filePath}`), null];
403
+ }
404
+ return [
405
+ null,
406
+ {
407
+ projectType
408
+ }
409
+ ];
410
+ }
411
+ async function readSolutionManifest(fs, solutionFile) {
412
+ const [readError, rawContent] = await catchError(fs.readFile(solutionFile, "utf-8"));
413
+ if (readError || !rawContent) {
414
+ return [
415
+ readError ?? new Error(`Unable to read solution file: ${solutionFile}`),
416
+ null
417
+ ];
418
+ }
419
+ const [parseError, parsed] = catchError(() => JSON.parse(rawContent));
420
+ if (parseError) {
421
+ return [
422
+ new Error(`Invalid JSON in solution file: ${parseError.message}`),
423
+ null
424
+ ];
425
+ }
426
+ if (!isRecord(parsed)) {
427
+ return [
428
+ new Error(`Invalid solution file: ${solutionFile} must contain a JSON object.`),
429
+ null
430
+ ];
431
+ }
432
+ if (!Array.isArray(parsed.Projects)) {
433
+ return [
434
+ new Error(`Invalid solution file: ${solutionFile} must contain a Projects array.`),
435
+ null
436
+ ];
437
+ }
438
+ const projects = [];
439
+ for (const [index, project] of parsed.Projects.entries()) {
440
+ if (!isRecord(project)) {
441
+ return [
442
+ new Error(`Invalid solution file: Projects[${index}] must be an object.`),
443
+ null
444
+ ];
445
+ }
446
+ const projectRelativePath = readString(project.ProjectRelativePath);
447
+ if (!projectRelativePath) {
448
+ return [
449
+ new Error(`Invalid solution file: Projects[${index}] is missing ProjectRelativePath. Use 'uip solution projects add' to repair the manifest.`),
450
+ null
451
+ ];
452
+ }
453
+ projects.push({
454
+ ...project,
455
+ Type: readString(project.Type) ?? "",
456
+ ProjectRelativePath: projectRelativePath,
457
+ Id: readString(project.Id) ?? ""
458
+ });
459
+ }
460
+ return [null, { content: parsed, projects }];
461
+ }
462
+ function readString(value) {
463
+ return typeof value === "string" && value.length > 0 ? value : undefined;
464
+ }
465
+ function buildRegistrationSuccessInstructions(solutionDir) {
466
+ return [
467
+ "The project is listed in the parent solution manifest.",
468
+ "Packing or uploading the solution will sync solution resources automatically.",
469
+ `To sync resources before packaging, run 'uip solution resources refresh --solution-folder "${solutionDir}"'.`
470
+ ].join(`
471
+ `);
472
+ }
473
+ function buildRegistrationFailureInstructions(projectDir, details) {
474
+ return [
475
+ "Automatic solution registration could not complete.",
476
+ `Run 'uip solution projects add "${projectDir}" <solution.uipx>' after checking the project and solution files.`,
477
+ `Details: ${details}`
478
+ ].join(`
479
+ `);
480
+ }
481
+ function buildStandaloneInstructions(projectDir) {
482
+ return [
483
+ "No parent solution was found by walking ancestor directories.",
484
+ "Studio Web upload, `flow debug`, and packaging require an enclosing solution.",
485
+ `To link this project to a solution, run 'uip solution init "<SolutionName>"' then 'uip solution projects add "${projectDir}" <SolutionName>.uipx'.`
486
+ ].join(`
487
+ `);
488
+ }
489
+ function buildOptedOutInstructions(projectDir) {
490
+ return [
491
+ "Automatic solution registration was skipped because --skip-solution-registration was passed.",
492
+ `To register this project later, run 'uip solution projects add "${projectDir}" <SolutionName>.uipx' from within the solution.`
493
+ ].join(`
494
+ `);
495
+ }
496
+ async function isProjectRegisteredInSolution(fs, projectDir, solutionFile) {
497
+ const [readErr, manifest] = await readSolutionManifest(fs, solutionFile);
498
+ if (readErr) {
499
+ throw readErr;
500
+ }
501
+ if (!manifest) {
502
+ throw new Error(`Unable to read solution manifest: ${solutionFile}`);
503
+ }
504
+ const solutionDir = fs.path.dirname(solutionFile);
505
+ const projectDirReal = await canonicalizePath(fs, projectDir);
506
+ for (const project of manifest.projects) {
507
+ const candidateDir = fs.path.resolve(solutionDir, fs.path.dirname(toPortableRelativePath(project.ProjectRelativePath)));
508
+ const candidateReal = await canonicalizePath(fs, candidateDir);
509
+ if (candidateReal === projectDirReal) {
510
+ return true;
511
+ }
512
+ }
513
+ return false;
514
+ }
515
+ async function canonicalizePath(fs, p) {
516
+ const [err, real] = await catchError(fs.realpath(p));
517
+ return err || !real ? p : real;
518
+ }
519
+ async function findSolutionFileUpward(fs, startDir) {
520
+ let dir = startDir;
521
+ while (true) {
522
+ const entries = await fs.readdir(dir);
523
+ const files = entries.filter((f) => f.endsWith(".uipx"));
524
+ if (files.length === 1) {
525
+ return fs.path.join(dir, files[0]);
526
+ }
527
+ if (files.length > 1) {
528
+ throw new Error(`Multiple .uipx files found in ${dir}. Please specify which solution file to use.`);
529
+ }
530
+ const parent = fs.path.dirname(dir);
531
+ if (parent === dir) {
532
+ throw new Error(`No .uipx solution file found (searched from ${startDir} to filesystem root)`);
533
+ }
534
+ dir = parent;
535
+ }
536
+ }
537
+
538
+ export { normalizeProjectType, toPortableRelativePath, readUipxFile, createSolutionManifest, autoScaffoldSolution, prepareProjectLocation, resolveSolutionDir, updateUipxSolutionId, findSolutionFile, updateSolutionFile, tryRegisterProjectInParentSolution, findNearestParentUipxFile, readSolutionManifest, isProjectRegisteredInSolution, findSolutionFileUpward };
539
+
540
+ //# debugId=C68E91587DBDE36C64756E2164756E21