@lovrabet/rabetbase-cli 2.3.16-beta.3 → 2.3.16-beta.5

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 (568) hide show
  1. package/lib/api/api-doc.d.ts +9 -0
  2. package/lib/api/api-doc.js +1 -1
  3. package/lib/api/fetch-model-list.d.ts +2 -0
  4. package/lib/api/fetch-model-list.js +1 -1
  5. package/lib/api/generate-api-file.d.ts +8 -0
  6. package/lib/api/generate-api-file.js +1 -1
  7. package/lib/auth/auth-server-ui.d.ts +13 -0
  8. package/lib/auth/auth-server-ui.js +1 -1
  9. package/lib/auth/auth-server.d.ts +25 -0
  10. package/lib/auth/auth-server.js +1 -1
  11. package/lib/auth/constant.d.ts +2 -0
  12. package/lib/auth/constant.js +1 -1
  13. package/lib/auth/get-cookie.d.ts +1 -0
  14. package/lib/auth/get-cookie.js +1 -1
  15. package/lib/auth/get-session-user.d.ts +51 -0
  16. package/lib/auth/get-session-user.js +1 -1
  17. package/lib/auth/is-session-valid.d.ts +1 -0
  18. package/lib/auth/is-session-valid.js +1 -1
  19. package/lib/auth/login-success-html.d.ts +5 -0
  20. package/lib/auth/login-success-html.js +1 -1
  21. package/lib/auth/logout.d.ts +1 -0
  22. package/lib/auth/logout.js +1 -1
  23. package/lib/cli-flags.d.ts +12 -0
  24. package/lib/cli-flags.js +1 -1
  25. package/lib/cli.d.ts +2 -0
  26. package/lib/cli.js +1 -1
  27. package/lib/commands/api/generate.d.ts +2 -0
  28. package/lib/commands/api/generate.js +1 -1
  29. package/lib/commands/api/index.d.ts +2 -0
  30. package/lib/commands/api/index.js +1 -1
  31. package/lib/commands/api/list.d.ts +2 -0
  32. package/lib/commands/api/list.js +1 -1
  33. package/lib/commands/api/pull.d.ts +2 -0
  34. package/lib/commands/api/pull.js +1 -1
  35. package/lib/commands/api/shared.d.ts +18 -0
  36. package/lib/commands/api/shared.js +1 -1
  37. package/lib/commands/app/index.d.ts +5 -0
  38. package/lib/commands/app/index.js +1 -1
  39. package/lib/commands/app/list.d.ts +10 -0
  40. package/lib/commands/app/list.js +1 -1
  41. package/lib/commands/app/members-list.d.ts +2 -0
  42. package/lib/commands/app/members-list.js +1 -1
  43. package/lib/commands/app/remote-directory.d.ts +11 -0
  44. package/lib/commands/app/remote-directory.js +1 -1
  45. package/lib/commands/app/shared.d.ts +46 -0
  46. package/lib/commands/app/shared.js +1 -1
  47. package/lib/commands/app-config/delete.d.ts +2 -0
  48. package/lib/commands/app-config/delete.js +1 -1
  49. package/lib/commands/app-config/get.d.ts +2 -0
  50. package/lib/commands/app-config/get.js +1 -1
  51. package/lib/commands/app-config/index.d.ts +2 -0
  52. package/lib/commands/app-config/index.js +1 -1
  53. package/lib/commands/app-config/list.d.ts +2 -0
  54. package/lib/commands/app-config/list.js +1 -1
  55. package/lib/commands/app-config/set.d.ts +2 -0
  56. package/lib/commands/app-config/set.js +1 -1
  57. package/lib/commands/app-config/shared.d.ts +105 -0
  58. package/lib/commands/app-config/shared.js +1 -1
  59. package/lib/commands/auth/index.d.ts +2 -0
  60. package/lib/commands/auth/index.js +1 -1
  61. package/lib/commands/bff/create.d.ts +4 -0
  62. package/lib/commands/bff/create.js +1 -1
  63. package/lib/commands/bff/delete.d.ts +2 -0
  64. package/lib/commands/bff/delete.js +1 -1
  65. package/lib/commands/bff/detail.d.ts +2 -0
  66. package/lib/commands/bff/detail.js +1 -1
  67. package/lib/commands/bff/index.d.ts +5 -0
  68. package/lib/commands/bff/index.js +1 -1
  69. package/lib/commands/bff/list.d.ts +2 -0
  70. package/lib/commands/bff/list.js +1 -1
  71. package/lib/commands/bff/pull.d.ts +2 -0
  72. package/lib/commands/bff/pull.js +1 -1
  73. package/lib/commands/bff/push.d.ts +2 -0
  74. package/lib/commands/bff/push.js +1 -1
  75. package/lib/commands/bff/status.d.ts +2 -0
  76. package/lib/commands/bff/status.js +1 -1
  77. package/lib/commands/cli-skill/index.d.ts +8 -0
  78. package/lib/commands/cli-skill/index.js +1 -1
  79. package/lib/commands/cli-update.d.ts +2 -0
  80. package/lib/commands/cli-update.js +1 -1
  81. package/lib/commands/codegen/index.d.ts +2 -0
  82. package/lib/commands/codegen/index.js +1 -1
  83. package/lib/commands/codegen/sdk.d.ts +2 -0
  84. package/lib/commands/codegen/sdk.js +1 -1
  85. package/lib/commands/codegen/sql.d.ts +2 -0
  86. package/lib/commands/codegen/sql.js +1 -1
  87. package/lib/commands/common/app-registry.d.ts +17 -0
  88. package/lib/commands/common/app-registry.js +1 -1
  89. package/lib/commands/common/app-selector.d.ts +17 -0
  90. package/lib/commands/common/app-selector.js +1 -1
  91. package/lib/commands/common/async-task.d.ts +11 -0
  92. package/lib/commands/common/async-task.js +1 -1
  93. package/lib/commands/common/dry-run.d.ts +12 -0
  94. package/lib/commands/common/dry-run.js +1 -1
  95. package/lib/commands/common/flags.d.ts +26 -0
  96. package/lib/commands/common/flags.js +1 -1
  97. package/lib/commands/common/local-file.d.ts +6 -0
  98. package/lib/commands/common/local-file.js +1 -1
  99. package/lib/commands/common/validate.d.ts +13 -0
  100. package/lib/commands/common/validate.js +1 -1
  101. package/lib/commands/config/get.d.ts +5 -0
  102. package/lib/commands/config/get.js +1 -1
  103. package/lib/commands/config/index.d.ts +5 -0
  104. package/lib/commands/config/index.js +1 -1
  105. package/lib/commands/config/list.d.ts +5 -0
  106. package/lib/commands/config/list.js +1 -1
  107. package/lib/commands/config/set.d.ts +5 -0
  108. package/lib/commands/config/set.js +1 -1
  109. package/lib/commands/config/shared.d.ts +16 -0
  110. package/lib/commands/config/shared.js +1 -1
  111. package/lib/commands/data/filter.d.ts +7 -0
  112. package/lib/commands/data/filter.js +1 -1
  113. package/lib/commands/data/getOne.d.ts +7 -0
  114. package/lib/commands/data/getOne.js +1 -1
  115. package/lib/commands/data/index.d.ts +8 -0
  116. package/lib/commands/data/index.js +1 -1
  117. package/lib/commands/data/shared.d.ts +33 -0
  118. package/lib/commands/data/shared.js +1 -1
  119. package/lib/commands/dataset/business-group-update.d.ts +18 -0
  120. package/lib/commands/dataset/business-group-update.js +1 -1
  121. package/lib/commands/dataset/capability.d.ts +11 -0
  122. package/lib/commands/dataset/capability.js +1 -1
  123. package/lib/commands/dataset/delete.d.ts +2 -0
  124. package/lib/commands/dataset/delete.js +1 -1
  125. package/lib/commands/dataset/detail.d.ts +2 -0
  126. package/lib/commands/dataset/detail.js +1 -1
  127. package/lib/commands/dataset/extend-update.d.ts +26 -0
  128. package/lib/commands/dataset/extend-update.js +1 -1
  129. package/lib/commands/dataset/field-update.d.ts +27 -0
  130. package/lib/commands/dataset/field-update.js +1 -1
  131. package/lib/commands/dataset/generate.d.ts +3 -0
  132. package/lib/commands/dataset/generate.js +1 -1
  133. package/lib/commands/dataset/index.d.ts +2 -0
  134. package/lib/commands/dataset/index.js +1 -1
  135. package/lib/commands/dataset/list.d.ts +2 -0
  136. package/lib/commands/dataset/list.js +1 -1
  137. package/lib/commands/dataset/operations.d.ts +2 -0
  138. package/lib/commands/dataset/operations.js +1 -1
  139. package/lib/commands/dataset/relation-audit.d.ts +2 -0
  140. package/lib/commands/dataset/relation-audit.js +1 -1
  141. package/lib/commands/dataset/relation-create.d.ts +2 -0
  142. package/lib/commands/dataset/relation-create.js +1 -1
  143. package/lib/commands/dataset/relation-delete.d.ts +2 -0
  144. package/lib/commands/dataset/relation-delete.js +1 -1
  145. package/lib/commands/dataset/relation-shared.d.ts +128 -0
  146. package/lib/commands/dataset/relation-shared.js +1 -1
  147. package/lib/commands/dataset/relation-update.d.ts +2 -0
  148. package/lib/commands/dataset/relation-update.js +1 -1
  149. package/lib/commands/dataset/relations.d.ts +53 -0
  150. package/lib/commands/dataset/relations.js +1 -1
  151. package/lib/commands/dataset/rename.d.ts +17 -0
  152. package/lib/commands/dataset/rename.js +1 -1
  153. package/lib/commands/dataset/restore.d.ts +2 -0
  154. package/lib/commands/dataset/restore.js +1 -1
  155. package/lib/commands/db/analysis-batching.d.ts +30 -0
  156. package/lib/commands/db/analysis-batching.js +1 -1
  157. package/lib/commands/db/analyze-batch-plan.d.ts +2 -0
  158. package/lib/commands/db/analyze-batch-plan.js +1 -1
  159. package/lib/commands/db/analyze-cancel.d.ts +2 -0
  160. package/lib/commands/db/analyze-cancel.js +1 -1
  161. package/lib/commands/db/analyze-start.d.ts +2 -0
  162. package/lib/commands/db/analyze-start.js +1 -1
  163. package/lib/commands/db/analyze-status.d.ts +2 -0
  164. package/lib/commands/db/analyze-status.js +1 -1
  165. package/lib/commands/db/create.d.ts +2 -0
  166. package/lib/commands/db/create.js +1 -1
  167. package/lib/commands/db/delete.d.ts +2 -0
  168. package/lib/commands/db/delete.js +1 -1
  169. package/lib/commands/db/detail.d.ts +2 -0
  170. package/lib/commands/db/detail.js +1 -1
  171. package/lib/commands/db/diff.d.ts +2 -0
  172. package/lib/commands/db/diff.js +1 -1
  173. package/lib/commands/db/index.d.ts +5 -0
  174. package/lib/commands/db/index.js +1 -1
  175. package/lib/commands/db/list.d.ts +2 -0
  176. package/lib/commands/db/list.js +1 -1
  177. package/lib/commands/db/shared.d.ts +15 -0
  178. package/lib/commands/db/shared.js +1 -1
  179. package/lib/commands/db/tables.d.ts +2 -0
  180. package/lib/commands/db/tables.js +1 -1
  181. package/lib/commands/db/test.d.ts +2 -0
  182. package/lib/commands/db/test.js +1 -1
  183. package/lib/commands/db/update.d.ts +2 -0
  184. package/lib/commands/db/update.js +1 -1
  185. package/lib/commands/doctor.d.ts +2 -0
  186. package/lib/commands/doctor.js +1 -1
  187. package/lib/commands/file/index.d.ts +2 -0
  188. package/lib/commands/file/index.js +1 -1
  189. package/lib/commands/init/index.d.ts +11 -0
  190. package/lib/commands/init/index.js +1 -1
  191. package/lib/commands/issue/index.d.ts +2 -0
  192. package/lib/commands/issue/index.js +1 -1
  193. package/lib/commands/issue/nudge.d.ts +23 -0
  194. package/lib/commands/issue/nudge.js +1 -1
  195. package/lib/commands/issue/report.d.ts +2 -0
  196. package/lib/commands/issue/report.js +1 -1
  197. package/lib/commands/issue/shared.d.ts +32 -0
  198. package/lib/commands/issue/shared.js +1 -1
  199. package/lib/commands/kb/create.d.ts +2 -0
  200. package/lib/commands/kb/create.js +1 -1
  201. package/lib/commands/kb/delete.d.ts +2 -0
  202. package/lib/commands/kb/delete.js +1 -1
  203. package/lib/commands/kb/detail.d.ts +2 -0
  204. package/lib/commands/kb/detail.js +1 -1
  205. package/lib/commands/kb/index.d.ts +2 -0
  206. package/lib/commands/kb/index.js +1 -1
  207. package/lib/commands/kb/list.d.ts +2 -0
  208. package/lib/commands/kb/list.js +1 -1
  209. package/lib/commands/kb/shared.d.ts +33 -0
  210. package/lib/commands/kb/shared.js +1 -1
  211. package/lib/commands/kb/update.d.ts +2 -0
  212. package/lib/commands/kb/update.js +1 -1
  213. package/lib/commands/logs/index.d.ts +5 -0
  214. package/lib/commands/logs/index.js +1 -1
  215. package/lib/commands/menu/asset-update.d.ts +2 -0
  216. package/lib/commands/menu/asset-update.js +1 -1
  217. package/lib/commands/menu/delete.d.ts +2 -0
  218. package/lib/commands/menu/delete.js +1 -1
  219. package/lib/commands/menu/external-link-create.d.ts +3 -0
  220. package/lib/commands/menu/external-link-create.js +1 -1
  221. package/lib/commands/menu/external-link-update.d.ts +2 -0
  222. package/lib/commands/menu/external-link-update.js +1 -1
  223. package/lib/commands/menu/group-create.d.ts +2 -0
  224. package/lib/commands/menu/group-create.js +1 -1
  225. package/lib/commands/menu/group-update.d.ts +2 -0
  226. package/lib/commands/menu/group-update.js +1 -1
  227. package/lib/commands/menu/index.d.ts +17 -0
  228. package/lib/commands/menu/index.js +1 -1
  229. package/lib/commands/menu/list.d.ts +2 -0
  230. package/lib/commands/menu/list.js +1 -1
  231. package/lib/commands/menu/move.d.ts +2 -0
  232. package/lib/commands/menu/move.js +1 -1
  233. package/lib/commands/menu/regroup-start.d.ts +2 -0
  234. package/lib/commands/menu/regroup-start.js +1 -1
  235. package/lib/commands/menu/rename.d.ts +2 -0
  236. package/lib/commands/menu/rename.js +1 -1
  237. package/lib/commands/menu/shared/compare-table.d.ts +27 -0
  238. package/lib/commands/menu/shared/compare-table.js +1 -1
  239. package/lib/commands/menu/shared/delete-plan.d.ts +51 -0
  240. package/lib/commands/menu/shared/delete-plan.js +1 -1
  241. package/lib/commands/menu/shared/facts.d.ts +12 -0
  242. package/lib/commands/menu/shared/facts.js +1 -1
  243. package/lib/commands/menu/shared/index.d.ts +12 -0
  244. package/lib/commands/menu/shared/index.js +1 -1
  245. package/lib/commands/menu/shared/inquirer.d.ts +10 -0
  246. package/lib/commands/menu/shared/inquirer.js +1 -1
  247. package/lib/commands/menu/shared/local-pages.d.ts +12 -0
  248. package/lib/commands/menu/shared/local-pages.js +1 -1
  249. package/lib/commands/menu/shared/logic.d.ts +28 -0
  250. package/lib/commands/menu/shared/logic.js +1 -1
  251. package/lib/commands/menu/shared/mutations.d.ts +69 -0
  252. package/lib/commands/menu/shared/mutations.js +1 -1
  253. package/lib/commands/menu/shared/service.d.ts +17 -0
  254. package/lib/commands/menu/shared/service.js +1 -1
  255. package/lib/commands/menu/shared/sync-core.d.ts +7 -0
  256. package/lib/commands/menu/shared/sync-core.js +1 -1
  257. package/lib/commands/menu/shared/types.d.ts +162 -0
  258. package/lib/commands/menu/shared/update-core.d.ts +11 -0
  259. package/lib/commands/menu/shared/update-core.js +1 -1
  260. package/lib/commands/menu/shared/valid-url.d.ts +6 -0
  261. package/lib/commands/menu/shared/valid-url.js +1 -1
  262. package/lib/commands/menu/sync.d.ts +2 -0
  263. package/lib/commands/menu/sync.js +1 -1
  264. package/lib/commands/notification/config-list.d.ts +2 -0
  265. package/lib/commands/notification/config-list.js +1 -1
  266. package/lib/commands/notification/index.d.ts +2 -0
  267. package/lib/commands/notification/index.js +1 -1
  268. package/lib/commands/ocr/index.d.ts +2 -0
  269. package/lib/commands/ocr/index.js +1 -1
  270. package/lib/commands/page/generate-start.d.ts +2 -0
  271. package/lib/commands/page/generate-start.js +1 -1
  272. package/lib/commands/page/generate-status.d.ts +2 -0
  273. package/lib/commands/page/generate-status.js +1 -1
  274. package/lib/commands/page/index.d.ts +2 -0
  275. package/lib/commands/page/index.js +1 -1
  276. package/lib/commands/page/pull.d.ts +2 -0
  277. package/lib/commands/page/pull.js +1 -1
  278. package/lib/commands/page/push.d.ts +2 -0
  279. package/lib/commands/page/push.js +1 -1
  280. package/lib/commands/page/relation-audit.d.ts +2 -0
  281. package/lib/commands/page/relation-audit.js +1 -1
  282. package/lib/commands/page/restore.d.ts +2 -0
  283. package/lib/commands/page/restore.js +1 -1
  284. package/lib/commands/page/shared.d.ts +105 -0
  285. package/lib/commands/page/shared.js +1 -1
  286. package/lib/commands/page/standard-page-status.d.ts +2 -0
  287. package/lib/commands/page/standard-page-status.js +1 -1
  288. package/lib/commands/page/sync.d.ts +2 -0
  289. package/lib/commands/page/sync.js +1 -1
  290. package/lib/commands/permit/index.d.ts +2 -0
  291. package/lib/commands/permit/index.js +1 -1
  292. package/lib/commands/permit/page-get.d.ts +2 -0
  293. package/lib/commands/permit/page-get.js +1 -1
  294. package/lib/commands/permit/page-set.d.ts +2 -0
  295. package/lib/commands/permit/page-set.js +1 -1
  296. package/lib/commands/permit/role-apis-set.d.ts +2 -0
  297. package/lib/commands/permit/role-apis-set.js +1 -1
  298. package/lib/commands/permit/role-menus-set.d.ts +2 -0
  299. package/lib/commands/permit/role-menus-set.js +1 -1
  300. package/lib/commands/permit/role-menus.d.ts +2 -0
  301. package/lib/commands/permit/role-menus.js +1 -1
  302. package/lib/commands/permit/shared.d.ts +74 -0
  303. package/lib/commands/permit/shared.js +1 -1
  304. package/lib/commands/project/create/enhanced-guided-create.d.ts +7 -0
  305. package/lib/commands/project/create/enhanced-guided-create.js +1 -1
  306. package/lib/commands/project/create/format-elapsed.d.ts +1 -0
  307. package/lib/commands/project/create/format-elapsed.js +1 -1
  308. package/lib/commands/project/create/main.d.ts +6 -0
  309. package/lib/commands/project/create/main.js +1 -1
  310. package/lib/commands/project/create/non-interactive.d.ts +9 -0
  311. package/lib/commands/project/create/non-interactive.js +1 -1
  312. package/lib/commands/project/create/project-template-path.d.ts +4 -0
  313. package/lib/commands/project/create/project-template-path.js +1 -1
  314. package/lib/commands/project/create/use-copy-project-template.d.ts +1 -0
  315. package/lib/commands/project/create/use-copy-project-template.js +1 -1
  316. package/lib/commands/project/create/use-format-code.d.ts +1 -0
  317. package/lib/commands/project/create/use-format-code.js +1 -1
  318. package/lib/commands/project/create/use-install-dependencies.d.ts +1 -0
  319. package/lib/commands/project/create/use-install-dependencies.js +1 -1
  320. package/lib/commands/project/index.d.ts +2 -0
  321. package/lib/commands/project/index.js +1 -1
  322. package/lib/commands/project/upgrade.d.ts +1 -0
  323. package/lib/commands/project/upgrade.js +1 -1
  324. package/lib/commands/registry.d.ts +66 -0
  325. package/lib/commands/registry.js +1 -1
  326. package/lib/commands/role/create.d.ts +2 -0
  327. package/lib/commands/role/create.js +1 -1
  328. package/lib/commands/role/delete.d.ts +2 -0
  329. package/lib/commands/role/delete.js +1 -1
  330. package/lib/commands/role/detail.d.ts +2 -0
  331. package/lib/commands/role/detail.js +1 -1
  332. package/lib/commands/role/index.d.ts +2 -0
  333. package/lib/commands/role/index.js +1 -1
  334. package/lib/commands/role/list.d.ts +2 -0
  335. package/lib/commands/role/list.js +1 -1
  336. package/lib/commands/role/shared.d.ts +107 -0
  337. package/lib/commands/role/shared.js +1 -1
  338. package/lib/commands/role/update.d.ts +2 -0
  339. package/lib/commands/role/update.js +1 -1
  340. package/lib/commands/role/user-add.d.ts +2 -0
  341. package/lib/commands/role/user-add.js +1 -1
  342. package/lib/commands/role/user-remove.d.ts +2 -0
  343. package/lib/commands/role/user-remove.js +1 -1
  344. package/lib/commands/role/user-resolve.d.ts +2 -0
  345. package/lib/commands/role/user-resolve.js +1 -1
  346. package/lib/commands/run/index.d.ts +2 -0
  347. package/lib/commands/run/index.js +1 -1
  348. package/lib/commands/schema.d.ts +5 -0
  349. package/lib/commands/schema.js +1 -1
  350. package/lib/commands/sql/create.d.ts +10 -0
  351. package/lib/commands/sql/create.js +1 -1
  352. package/lib/commands/sql/delete.d.ts +5 -0
  353. package/lib/commands/sql/delete.js +1 -1
  354. package/lib/commands/sql/detail.d.ts +2 -0
  355. package/lib/commands/sql/detail.js +1 -1
  356. package/lib/commands/sql/exec.d.ts +2 -0
  357. package/lib/commands/sql/exec.js +1 -1
  358. package/lib/commands/sql/index.d.ts +5 -0
  359. package/lib/commands/sql/index.js +1 -1
  360. package/lib/commands/sql/list.d.ts +2 -0
  361. package/lib/commands/sql/list.js +1 -1
  362. package/lib/commands/sql/pull.d.ts +5 -0
  363. package/lib/commands/sql/pull.js +1 -1
  364. package/lib/commands/sql/push.d.ts +5 -0
  365. package/lib/commands/sql/push.js +1 -1
  366. package/lib/commands/sql/shared.d.ts +23 -0
  367. package/lib/commands/sql/shared.js +1 -1
  368. package/lib/commands/sql/status.d.ts +5 -0
  369. package/lib/commands/sql/status.js +1 -1
  370. package/lib/commands/sql/validate.d.ts +2 -0
  371. package/lib/commands/sql/validate.js +1 -1
  372. package/lib/commands/task/index.d.ts +2 -0
  373. package/lib/commands/task/index.js +1 -1
  374. package/lib/commands/task/status.d.ts +2 -0
  375. package/lib/commands/task/status.js +1 -1
  376. package/lib/commands/tenant/index.d.ts +2 -0
  377. package/lib/commands/tenant/index.js +1 -1
  378. package/lib/commands/tenant/members-list.d.ts +2 -0
  379. package/lib/commands/tenant/members-list.js +1 -1
  380. package/lib/commands/tenant/shared.d.ts +10 -0
  381. package/lib/commands/tenant/shared.js +1 -1
  382. package/lib/commands/workspace/add.d.ts +6 -0
  383. package/lib/commands/workspace/add.js +1 -1
  384. package/lib/commands/workspace/index.d.ts +11 -0
  385. package/lib/commands/workspace/index.js +1 -1
  386. package/lib/commands/workspace/remove.d.ts +6 -0
  387. package/lib/commands/workspace/remove.js +1 -1
  388. package/lib/config/schema.d.ts +50 -0
  389. package/lib/config/schema.js +1 -1
  390. package/lib/constant/cdn.d.ts +1 -0
  391. package/lib/constant/cdn.js +1 -1
  392. package/lib/constant/cli.d.ts +34 -0
  393. package/lib/constant/cli.js +1 -1
  394. package/lib/constant/defaults.d.ts +10 -0
  395. package/lib/constant/defaults.js +1 -1
  396. package/lib/constant/domain.d.ts +14 -0
  397. package/lib/constant/domain.js +1 -1
  398. package/lib/constant/env.d.ts +11 -0
  399. package/lib/constant/env.js +1 -1
  400. package/lib/constant/output.d.ts +1 -0
  401. package/lib/constant/output.js +1 -1
  402. package/lib/constant/paths.d.ts +5 -0
  403. package/lib/constant/paths.js +1 -1
  404. package/lib/constant/risk.d.ts +1 -0
  405. package/lib/constant/risk.js +1 -1
  406. package/lib/context/app-resolver.d.ts +36 -0
  407. package/lib/context/app-resolver.js +1 -1
  408. package/lib/context/auth-resolver.d.ts +5 -0
  409. package/lib/context/auth-resolver.js +1 -1
  410. package/lib/context/config-loader.d.ts +61 -0
  411. package/lib/context/config-loader.js +1 -1
  412. package/lib/context.d.ts +102 -0
  413. package/lib/context.js +1 -1
  414. package/lib/core/alias-resolver.d.ts +31 -0
  415. package/lib/core/alias-resolver.js +1 -1
  416. package/lib/core/api-client.d.ts +1018 -0
  417. package/lib/core/api-client.js +1 -1
  418. package/lib/core/bff/config.d.ts +8 -0
  419. package/lib/core/bff/config.js +1 -1
  420. package/lib/core/bff/file-system.d.ts +28 -0
  421. package/lib/core/bff/file-system.js +1 -1
  422. package/lib/core/bff/hash.d.ts +7 -0
  423. package/lib/core/bff/hash.js +1 -1
  424. package/lib/core/bff/lock.d.ts +25 -0
  425. package/lib/core/bff/lock.js +1 -1
  426. package/lib/core/bff/types.d.ts +92 -0
  427. package/lib/core/bff/utils.d.ts +25 -0
  428. package/lib/core/bff/utils.js +1 -1
  429. package/lib/core/db-resolver.d.ts +43 -0
  430. package/lib/core/db-resolver.js +1 -1
  431. package/lib/core/page/file-system.d.ts +6 -0
  432. package/lib/core/page/file-system.js +1 -1
  433. package/lib/core/page/hash.d.ts +4 -0
  434. package/lib/core/page/hash.js +1 -1
  435. package/lib/core/page/lock.d.ts +8 -0
  436. package/lib/core/page/lock.js +1 -1
  437. package/lib/core/page/types.d.ts +22 -0
  438. package/lib/core/sql-index-auditor.d.ts +33 -0
  439. package/lib/core/sql-index-auditor.js +1 -1
  440. package/lib/core/sql-sync/config.d.ts +7 -0
  441. package/lib/core/sql-sync/config.js +1 -1
  442. package/lib/core/sql-sync/file-system.d.ts +7 -0
  443. package/lib/core/sql-sync/file-system.js +1 -1
  444. package/lib/core/sql-sync/hash.d.ts +5 -0
  445. package/lib/core/sql-sync/hash.js +1 -1
  446. package/lib/core/sql-sync/lock.d.ts +14 -0
  447. package/lib/core/sql-sync/lock.js +1 -1
  448. package/lib/core/sql-sync/types.d.ts +43 -0
  449. package/lib/core/sql-sync/utils.d.ts +10 -0
  450. package/lib/core/sql-sync/utils.js +1 -1
  451. package/lib/core/sql-validator.d.ts +34 -0
  452. package/lib/core/sql-validator.js +1 -1
  453. package/lib/errors.d.ts +3 -0
  454. package/lib/errors.js +1 -1
  455. package/lib/framework/build-all-flags.d.ts +2 -0
  456. package/lib/framework/build-all-flags.js +1 -1
  457. package/lib/framework/error-output.d.ts +9 -0
  458. package/lib/framework/error-output.js +1 -1
  459. package/lib/framework/explicit-yes.d.ts +3 -0
  460. package/lib/framework/explicit-yes.js +1 -1
  461. package/lib/framework/flags.d.ts +3 -0
  462. package/lib/framework/flags.js +1 -1
  463. package/lib/framework/help.d.ts +4 -0
  464. package/lib/framework/help.js +1 -1
  465. package/lib/framework/index.d.ts +11 -0
  466. package/lib/framework/index.js +1 -1
  467. package/lib/framework/output.d.ts +15 -0
  468. package/lib/framework/output.js +1 -1
  469. package/lib/framework/response.d.ts +2 -0
  470. package/lib/framework/response.js +1 -1
  471. package/lib/framework/runner-alias.d.ts +14 -0
  472. package/lib/framework/runner-alias.js +1 -1
  473. package/lib/framework/runner.d.ts +36 -0
  474. package/lib/framework/runner.js +1 -1
  475. package/lib/framework/schema-export.d.ts +3 -0
  476. package/lib/framework/schema-export.js +1 -1
  477. package/lib/framework/types.d.ts +63 -0
  478. package/lib/framework/types.js +1 -1
  479. package/lib/generated/build-info.d.ts +4 -0
  480. package/lib/generated/build-info.js +1 -1
  481. package/lib/help.d.ts +1 -0
  482. package/lib/help.js +1 -1
  483. package/lib/runtime/confirmation.d.ts +4 -0
  484. package/lib/runtime/confirmation.js +1 -0
  485. package/lib/runtime/event.d.ts +5 -0
  486. package/lib/runtime/event.js +1 -0
  487. package/lib/runtime/index.d.ts +7 -0
  488. package/lib/runtime/index.js +1 -0
  489. package/lib/runtime/queue.d.ts +5 -0
  490. package/lib/runtime/queue.js +1 -0
  491. package/lib/runtime/resolve.d.ts +8 -0
  492. package/lib/runtime/resolve.js +1 -0
  493. package/lib/runtime/types.d.ts +50 -0
  494. package/lib/runtime/types.js +1 -0
  495. package/lib/skills/main.d.ts +41 -0
  496. package/lib/skills/main.js +1 -1
  497. package/lib/skills/npx-skills-add.d.ts +99 -0
  498. package/lib/skills/npx-skills-add.js +1 -1
  499. package/lib/skills/skill-presence.d.ts +44 -0
  500. package/lib/skills/skill-presence.js +1 -1
  501. package/lib/telemetry/cli-command-trace.d.ts +12 -0
  502. package/lib/telemetry/cli-command-trace.js +1 -1
  503. package/lib/telemetry/cli-help-trace.d.ts +8 -0
  504. package/lib/telemetry/cli-help-trace.js +1 -1
  505. package/lib/telemetry/ensure-cli-otel-config.d.ts +6 -0
  506. package/lib/telemetry/ensure-cli-otel-config.js +1 -1
  507. package/lib/telemetry/register-otel-exit-shutdown.d.ts +3 -0
  508. package/lib/telemetry/register-otel-exit-shutdown.js +1 -1
  509. package/lib/telemetry/send-cli-trace-log.d.ts +17 -0
  510. package/lib/telemetry/send-cli-trace-log.js +1 -1
  511. package/lib/telemetry/send-platform-issue-collect-log.d.ts +26 -0
  512. package/lib/telemetry/send-platform-issue-collect-log.js +1 -1
  513. package/lib/types/index.d.ts +93 -0
  514. package/lib/utils/ai_config.d.ts +47 -0
  515. package/lib/utils/ai_config.js +1 -1
  516. package/lib/utils/apply-jq-filter.d.ts +1 -0
  517. package/lib/utils/apply-jq-filter.js +1 -1
  518. package/lib/utils/cdn-config.d.ts +42 -0
  519. package/lib/utils/cdn-config.js +1 -1
  520. package/lib/utils/check-sdk-version.d.ts +23 -0
  521. package/lib/utils/check-sdk-version.js +1 -1
  522. package/lib/utils/cli-version-check.d.ts +37 -0
  523. package/lib/utils/cli-version-check.js +1 -1
  524. package/lib/utils/cli-version-policy.d.ts +9 -0
  525. package/lib/utils/cli-version-policy.js +1 -1
  526. package/lib/utils/config.d.ts +42 -0
  527. package/lib/utils/config.js +1 -1
  528. package/lib/utils/copy-directory.d.ts +1 -0
  529. package/lib/utils/copy-directory.js +1 -1
  530. package/lib/utils/entity-with-id.d.ts +30 -0
  531. package/lib/utils/entity-with-id.js +1 -1
  532. package/lib/utils/file-utils.d.ts +25 -0
  533. package/lib/utils/file-utils.js +1 -1
  534. package/lib/utils/guides-cdn.d.ts +80 -0
  535. package/lib/utils/guides-cdn.js +1 -1
  536. package/lib/utils/http-client.d.ts +30 -0
  537. package/lib/utils/http-client.js +1 -1
  538. package/lib/utils/is-non-interactive.d.ts +7 -0
  539. package/lib/utils/is-non-interactive.js +1 -1
  540. package/lib/utils/logger.d.ts +62 -0
  541. package/lib/utils/logger.js +1 -1
  542. package/lib/utils/params.d.ts +15 -0
  543. package/lib/utils/params.js +1 -1
  544. package/lib/utils/platform.d.ts +21 -0
  545. package/lib/utils/platform.js +1 -1
  546. package/lib/utils/rules-cdn.d.ts +38 -0
  547. package/lib/utils/rules-cdn.js +1 -1
  548. package/lib/utils/sleep.d.ts +1 -0
  549. package/lib/utils/sleep.js +1 -1
  550. package/lib/utils/template-replacer.d.ts +55 -0
  551. package/lib/utils/template-replacer.js +1 -1
  552. package/lib/utils/update-notice.d.ts +10 -0
  553. package/lib/utils/update-notice.js +1 -1
  554. package/lib/utils/version.d.ts +1 -0
  555. package/lib/utils/version.js +1 -1
  556. package/lib/utils/with-active-cookie.d.ts +1 -0
  557. package/lib/utils/with-active-cookie.js +1 -1
  558. package/lib/utils/write-cli-side-channel.d.ts +6 -0
  559. package/lib/utils/write-cli-side-channel.js +1 -1
  560. package/package.json +9 -1
  561. package/lib/commands/page/react/create.js +0 -1
  562. package/lib/commands/page/react/detail.js +0 -1
  563. package/lib/commands/page/react/list.js +0 -1
  564. package/lib/commands/page/react/publish.js +0 -1
  565. package/lib/commands/page/react/shared.js +0 -1
  566. package/lib/commands/page/react/syntax.js +0 -1
  567. package/lib/commands/page/react/template.js +0 -1
  568. package/lib/commands/page/react/update.js +0 -1
@@ -0,0 +1,105 @@
1
+ import type { AppConfigItem } from "../../core/api-client.js";
2
+ import type { CommandDefinition, DryRunResult, RuntimeContext } from "../../framework/types.js";
3
+ export interface AppConfigProjection {
4
+ appCode: string;
5
+ key: string;
6
+ tags?: string | null;
7
+ hasValue: boolean;
8
+ valueRedacted: boolean;
9
+ gmtCreate?: string;
10
+ gmtModified?: string;
11
+ value?: string | null;
12
+ }
13
+ export interface AppConfigMutationData {
14
+ operation: "create" | "update" | "delete";
15
+ selector: {
16
+ appCode: string;
17
+ key: string;
18
+ };
19
+ before: AppConfigProjection | null;
20
+ after: AppConfigProjection | null;
21
+ dryRun: boolean;
22
+ warnings: string[];
23
+ }
24
+ type AppConfigContext = Parameters<NonNullable<CommandDefinition["execute"]>>[0];
25
+ type ValueSource = {
26
+ kind: "argument";
27
+ value?: string;
28
+ } | {
29
+ kind: "stdin";
30
+ } | {
31
+ kind: "env";
32
+ name: string;
33
+ } | {
34
+ kind: "file";
35
+ path: string;
36
+ };
37
+ export declare const KEY_ARG: {
38
+ readonly name: "key";
39
+ readonly description: "Runtime app-config key";
40
+ readonly required: true;
41
+ };
42
+ export declare const VALUE_ARG: {
43
+ readonly name: "value";
44
+ readonly description: "Sensitive config value. Prefer --stdin, --from-env, or --file for secrets.";
45
+ readonly required: false;
46
+ };
47
+ export declare const TAGS_FLAG: {
48
+ readonly name: "tags";
49
+ readonly type: "string";
50
+ readonly description: "Config tags for filtering/display metadata";
51
+ };
52
+ export declare const STDIN_FLAG: {
53
+ readonly name: "stdin";
54
+ readonly type: "boolean";
55
+ readonly description: "Read config value from stdin";
56
+ readonly default: false;
57
+ };
58
+ export declare const FROM_ENV_FLAG: {
59
+ readonly name: "from-env";
60
+ readonly type: "string";
61
+ readonly description: "Read config value from the named environment variable";
62
+ };
63
+ export declare const REVEAL_FLAG: {
64
+ readonly name: "reveal";
65
+ readonly type: "boolean";
66
+ readonly description: "Reveal the sensitive value for this single key";
67
+ readonly default: false;
68
+ };
69
+ export declare function readKeyArg(ctx: RuntimeContext | AppConfigContext): string;
70
+ export declare function readOptionalTags(ctx: RuntimeContext | AppConfigContext): string | undefined;
71
+ export declare function validateKey(key: string): void;
72
+ export declare function projectAppConfig(item: AppConfigItem, options?: {
73
+ reveal?: boolean;
74
+ }): AppConfigProjection;
75
+ export declare function plannedAppConfig(params: {
76
+ appCode: string;
77
+ key: string;
78
+ tags?: string | null;
79
+ hasValue?: boolean;
80
+ }): AppConfigProjection;
81
+ export declare function buildMutationData(params: {
82
+ operation: AppConfigMutationData["operation"];
83
+ appCode: string;
84
+ key: string;
85
+ before: AppConfigProjection | null;
86
+ after: AppConfigProjection | null;
87
+ dryRun: boolean;
88
+ warnings?: string[];
89
+ }): AppConfigMutationData;
90
+ export declare function withAppConfigApiBoundary<T>(operation: string, selector: {
91
+ appCode: string;
92
+ key?: string;
93
+ }, fn: () => Promise<T>): Promise<T>;
94
+ export declare function asAppConfigDryRunResult(data: AppConfigMutationData, backend: {
95
+ method: "POST";
96
+ url: string;
97
+ }): DryRunResult & AppConfigMutationData;
98
+ export declare function assertSingleValueSource(ctx: AppConfigContext): ValueSource;
99
+ export declare function assertValueSourceReadable(source: ValueSource): Promise<void>;
100
+ export declare function readAppConfigValue(ctx: AppConfigContext): Promise<{
101
+ value: string;
102
+ source: ValueSource["kind"];
103
+ warnings: string[];
104
+ }>;
105
+ export {};
@@ -1 +1 @@
1
- function a28_0x4877(_0x4ea390,_0x1ab96b){_0x4ea390=_0x4ea390-0x159;const _0x64444f=a28_0x6444();let _0x48779a=_0x64444f[_0x4ea390];return _0x48779a;}const a28_0x314775=a28_0x4877;(function(_0x2dea6f,_0x2b8684){const _0xaee4dc=a28_0x4877,_0x2c2b6a=_0x2dea6f();while(!![]){try{const _0x4871f2=-parseInt(_0xaee4dc(0x19c))/0x1+parseInt(_0xaee4dc(0x169))/0x2*(-parseInt(_0xaee4dc(0x17c))/0x3)+parseInt(_0xaee4dc(0x166))/0x4+parseInt(_0xaee4dc(0x15e))/0x5*(parseInt(_0xaee4dc(0x161))/0x6)+-parseInt(_0xaee4dc(0x170))/0x7*(-parseInt(_0xaee4dc(0x171))/0x8)+parseInt(_0xaee4dc(0x160))/0x9+parseInt(_0xaee4dc(0x17d))/0xa*(-parseInt(_0xaee4dc(0x18a))/0xb);if(_0x4871f2===_0x2b8684)break;else _0x2c2b6a['push'](_0x2c2b6a['shift']());}catch(_0x599a39){_0x2c2b6a['push'](_0x2c2b6a['shift']());}}}(a28_0x6444,0x491f7));import{access,readFile}from'node:fs/promises';import{CliErrors}from'../../errors.js';export const KEY_ARG={'name':a28_0x314775(0x196),'description':a28_0x314775(0x18c),'required':!![]};export const VALUE_ARG={'name':a28_0x314775(0x178),'description':a28_0x314775(0x15b),'required':![]};export const TAGS_FLAG={'name':a28_0x314775(0x190),'type':a28_0x314775(0x192),'description':a28_0x314775(0x164)};export const STDIN_FLAG={'name':'stdin','type':a28_0x314775(0x177),'description':a28_0x314775(0x198),'default':![]};export const FROM_ENV_FLAG={'name':a28_0x314775(0x17f),'type':a28_0x314775(0x192),'description':a28_0x314775(0x165)};export const REVEAL_FLAG={'name':a28_0x314775(0x189),'type':a28_0x314775(0x177),'description':'Reveal\x20the\x20sensitive\x20value\x20for\x20this\x20single\x20key','default':![]};export function readKeyArg(_0x2ee9b1){const _0x2c38c4=a28_0x314775,_0x397ebd=_0x2ee9b1[_0x2c38c4(0x17a)][0x0]?.[_0x2c38c4(0x197)]()??'';return validateKey(_0x397ebd),_0x397ebd;}function a28_0x6444(){const _0x2716b8=['data','argument','1316889aGCzDm','16QxUicD','method','value\x20is\x20redacted','App\x20config\x20tags\x20length\x20cannot\x20exceed\x2032.','gmtModified','file','boolean','value','name','args','length','6JduhOJ','311490OQqKCu','Value\x20file\x20is\x20not\x20readable:\x20','from-env','str','env','after','push','bool','gmtCreate','kind','once','Missing\x20app-config\x20key.','reveal','330SHNcAN','path','Runtime\x20app-config\x20key','defineProperties','appCode:\x20','end','tags','App\x20config\x20value\x20source\x20is\x20ambiguous.','string','utf8','Environment\x20variable\x20is\x20not\x20set:\x20','\x20app\x20config.','key','trim','Read\x20config\x20value\x20from\x20stdin','App\x20config\x20key\x20length\x20cannot\x20exceed\x20256.','Use\x20exactly\x20one\x20of:\x20positional\x20<value>,\x20--stdin,\x20--from-env\x20<NAME>,\x20or\x20--file\x20<path>.','Failed\x20to\x20','205900cmoHeZ','hasValue','validation','Sensitive\x20config\x20value.\x20Prefer\x20--stdin,\x20--from-env,\x20or\x20--file\x20for\x20secrets.','setEncoding','url','316655YthiEO','slice','5227515xIzXYR','6RZDQjH','flag','operation','Config\x20tags\x20for\x20filtering/display\x20metadata','Read\x20config\x20value\x20from\x20the\x20named\x20environment\x20variable','1938668EveDsk','valueRedacted','join','65206nfQiZw','appCode','Value\x20was\x20provided\x20as\x20a\x20command\x20argument;\x20prefer\x20--stdin,\x20--from-env,\x20or\x20--file\x20for\x20secrets.','stdin','Missing\x20app-config\x20value\x20source.'];a28_0x6444=function(){return _0x2716b8;};return a28_0x6444();}export function readOptionalTags(_0x5e0dc2){const _0x346e4e=a28_0x314775,_0x979edd=_0x5e0dc2[_0x346e4e(0x180)]('tags')[_0x346e4e(0x197)]();if(!_0x979edd)return undefined;if(_0x979edd[_0x346e4e(0x17b)]>0x20)throw CliErrors[_0x346e4e(0x15a)](_0x346e4e(0x174));return _0x979edd;}export function validateKey(_0x3be51f){const _0x39b9c5=a28_0x314775;if(!_0x3be51f)throw CliErrors['validation'](_0x39b9c5(0x188));if(_0x3be51f['length']>0x100)throw CliErrors[_0x39b9c5(0x15a)](_0x39b9c5(0x199));}export function projectAppConfig(_0x1b7d9a,_0x57a699){const _0x487e1a=a28_0x314775,_0xd740e9=_0x1b7d9a['value']!==undefined&&_0x1b7d9a['value']!==null&&_0x1b7d9a['value']!=='',_0x18715c={'appCode':_0x1b7d9a[_0x487e1a(0x16a)],'key':_0x1b7d9a[_0x487e1a(0x196)],'tags':_0x1b7d9a[_0x487e1a(0x190)]??undefined,'hasValue':_0xd740e9,'valueRedacted':_0xd740e9&&!_0x57a699?.[_0x487e1a(0x189)],'gmtCreate':_0x1b7d9a[_0x487e1a(0x185)],'gmtModified':_0x1b7d9a[_0x487e1a(0x175)]};return _0x57a699?.[_0x487e1a(0x189)]&&(_0x18715c[_0x487e1a(0x178)]=_0x1b7d9a[_0x487e1a(0x178)]??'',_0x18715c[_0x487e1a(0x167)]=![]),_0x18715c;}export function plannedAppConfig(_0x44b47b){const _0x36d234=a28_0x314775,_0x160b6a=_0x44b47b[_0x36d234(0x159)]??!![];return{'appCode':_0x44b47b[_0x36d234(0x16a)],'key':_0x44b47b[_0x36d234(0x196)],'tags':_0x44b47b[_0x36d234(0x190)]??undefined,'hasValue':_0x160b6a,'valueRedacted':_0x160b6a};}export function buildMutationData(_0x3adda6){const _0x571484=a28_0x314775;return{'operation':_0x3adda6[_0x571484(0x163)],'selector':{'appCode':_0x3adda6[_0x571484(0x16a)],'key':_0x3adda6[_0x571484(0x196)]},'before':_0x3adda6['before'],'after':_0x3adda6[_0x571484(0x182)],'dryRun':_0x3adda6['dryRun'],'warnings':_0x3adda6['warnings']??[]};}export async function withAppConfigApiBoundary(_0xc7b9f0,_0x20d11f,_0x15b21f){const _0x45a4dd=a28_0x314775;try{return await _0x15b21f();}catch{const _0x46c1f8=[_0x45a4dd(0x18e)+_0x20d11f[_0x45a4dd(0x16a)]];if(_0x20d11f[_0x45a4dd(0x196)])_0x46c1f8[_0x45a4dd(0x183)]('key:\x20'+_0x20d11f[_0x45a4dd(0x196)]);_0x46c1f8[_0x45a4dd(0x183)](_0x45a4dd(0x173));throw CliErrors['apiError'](_0x45a4dd(0x19b)+_0xc7b9f0+_0x45a4dd(0x195),_0x46c1f8['join'](';\x20')+'.');}}export function asAppConfigDryRunResult(_0x231c54,_0x3818fa){const _0x4734b6=a28_0x314775;return Object[_0x4734b6(0x18d)](_0x231c54,{'method':{'value':_0x3818fa[_0x4734b6(0x172)],'enumerable':![]},'url':{'value':_0x3818fa[_0x4734b6(0x15d)],'enumerable':![]}});}export function assertSingleValueSource(_0x2cb4d3){const _0x3e1034=a28_0x314775,_0x350747=[];_0x2cb4d3[_0x3e1034(0x17a)][_0x3e1034(0x17b)]>0x1&&_0x350747[_0x3e1034(0x183)]({'kind':_0x3e1034(0x16f),'value':_0x2cb4d3[_0x3e1034(0x17a)][_0x3e1034(0x15f)](0x1)[_0x3e1034(0x168)]('\x20')});const _0x5d6680=_0x2cb4d3[_0x3e1034(0x162)](_0x3e1034(0x178));_0x5d6680!==undefined&&_0x5d6680!==null&&_0x350747['push']({'kind':_0x3e1034(0x16f),'value':String(_0x5d6680)});_0x2cb4d3[_0x3e1034(0x184)]('stdin')&&_0x350747[_0x3e1034(0x183)]({'kind':_0x3e1034(0x16c)});const _0x507f18=_0x2cb4d3[_0x3e1034(0x180)]('from-env')[_0x3e1034(0x197)]();_0x507f18&&_0x350747['push']({'kind':_0x3e1034(0x181),'name':_0x507f18});const _0x55069a=_0x2cb4d3[_0x3e1034(0x180)](_0x3e1034(0x176))[_0x3e1034(0x197)]();_0x55069a&&_0x350747['push']({'kind':_0x3e1034(0x176),'path':_0x55069a});if(_0x350747[_0x3e1034(0x17b)]===0x0)throw CliErrors[_0x3e1034(0x15a)](_0x3e1034(0x16d),'Use\x20one\x20of:\x20positional\x20<value>,\x20--stdin,\x20--from-env\x20<NAME>,\x20or\x20--file\x20<path>.');if(_0x350747['length']>0x1)throw CliErrors[_0x3e1034(0x15a)](_0x3e1034(0x191),_0x3e1034(0x19a));return _0x350747[0x0];}export async function assertValueSourceReadable(_0x130d68){const _0x583f04=a28_0x314775;if(_0x130d68[_0x583f04(0x186)]==='env'&&!(_0x130d68[_0x583f04(0x179)]in process.env))throw CliErrors[_0x583f04(0x15a)](_0x583f04(0x194)+_0x130d68[_0x583f04(0x179)]);if(_0x130d68[_0x583f04(0x186)]===_0x583f04(0x176))try{await access(_0x130d68[_0x583f04(0x18b)]);}catch{throw CliErrors['validation'](_0x583f04(0x17e)+_0x130d68[_0x583f04(0x18b)]);}}export async function readAppConfigValue(_0x43aa1b){const _0x288687=a28_0x314775,_0x33a6bb=assertSingleValueSource(_0x43aa1b),_0x43591c=[];if(_0x33a6bb[_0x288687(0x186)]==='argument')return _0x43591c[_0x288687(0x183)](_0x288687(0x16b)),{'value':_0x33a6bb[_0x288687(0x178)]??'','source':_0x33a6bb[_0x288687(0x186)],'warnings':_0x43591c};if(_0x33a6bb[_0x288687(0x186)]===_0x288687(0x16c))return{'value':await readStdin(),'source':_0x33a6bb[_0x288687(0x186)],'warnings':_0x43591c};if(_0x33a6bb[_0x288687(0x186)]==='env'){if(!(_0x33a6bb[_0x288687(0x179)]in process.env))throw CliErrors[_0x288687(0x15a)](_0x288687(0x194)+_0x33a6bb[_0x288687(0x179)]);return{'value':process.env[_0x33a6bb.name]??'','source':_0x33a6bb[_0x288687(0x186)],'warnings':_0x43591c};}return{'value':await readFile(_0x33a6bb[_0x288687(0x18b)],'utf8'),'source':_0x33a6bb['kind'],'warnings':_0x43591c};}function readStdin(){return new Promise((_0x229a5d,_0x43b55c)=>{const _0x3916a0=a28_0x4877;let _0x531efd='';process['stdin'][_0x3916a0(0x15c)](_0x3916a0(0x193)),process['stdin']['on'](_0x3916a0(0x16e),_0x6cb6f1=>{_0x531efd+=_0x6cb6f1;}),process[_0x3916a0(0x16c)][_0x3916a0(0x187)](_0x3916a0(0x18f),()=>_0x229a5d(_0x531efd)),process[_0x3916a0(0x16c)][_0x3916a0(0x187)]('error',_0x43b55c);});}
1
+ const a28_0xbe6680=a28_0x2087;(function(_0x25b175,_0x32087a){const _0x29893a=a28_0x2087,_0x3ca023=_0x25b175();while(!![]){try{const _0x252936=-parseInt(_0x29893a(0x1f5))/0x1+parseInt(_0x29893a(0x203))/0x2*(parseInt(_0x29893a(0x1eb))/0x3)+-parseInt(_0x29893a(0x1d2))/0x4+-parseInt(_0x29893a(0x20d))/0x5+parseInt(_0x29893a(0x1e8))/0x6+-parseInt(_0x29893a(0x201))/0x7+-parseInt(_0x29893a(0x1d9))/0x8*(-parseInt(_0x29893a(0x1da))/0x9);if(_0x252936===_0x32087a)break;else _0x3ca023['push'](_0x3ca023['shift']());}catch(_0x29cbc1){_0x3ca023['push'](_0x3ca023['shift']());}}}(a28_0x340d,0x763f3));import{access,readFile}from'node:fs/promises';import{CliErrors}from'../../errors.js';export const KEY_ARG={'name':'key','description':a28_0xbe6680(0x1dd),'required':!![]};export const VALUE_ARG={'name':a28_0xbe6680(0x1fc),'description':'Sensitive\x20config\x20value.\x20Prefer\x20--stdin,\x20--from-env,\x20or\x20--file\x20for\x20secrets.','required':![]};export const TAGS_FLAG={'name':a28_0xbe6680(0x1d4),'type':a28_0xbe6680(0x1f8),'description':'Config\x20tags\x20for\x20filtering/display\x20metadata'};export const STDIN_FLAG={'name':'stdin','type':a28_0xbe6680(0x1d5),'description':a28_0xbe6680(0x20e),'default':![]};export const FROM_ENV_FLAG={'name':a28_0xbe6680(0x1ea),'type':a28_0xbe6680(0x1f8),'description':a28_0xbe6680(0x20a)};export const REVEAL_FLAG={'name':a28_0xbe6680(0x200),'type':a28_0xbe6680(0x1d5),'description':a28_0xbe6680(0x1fd),'default':![]};function a28_0x2087(_0x5a2e48,_0x376546){_0x5a2e48=_0x5a2e48-0x1d2;const _0x340db1=a28_0x340d();let _0x20872f=_0x340db1[_0x5a2e48];return _0x20872f;}export function readKeyArg(_0x10b624){const _0x23d629=a28_0xbe6680,_0x4eaf01=_0x10b624[_0x23d629(0x207)][0x0]?.['trim']()??'';return validateKey(_0x4eaf01),_0x4eaf01;}function a28_0x340d(){const _0x50769e=['path','error','args','operation','Use\x20one\x20of:\x20positional\x20<value>,\x20--stdin,\x20--from-env\x20<NAME>,\x20or\x20--file\x20<path>.','Read\x20config\x20value\x20from\x20the\x20named\x20environment\x20variable','stdin','before','3720240odwfsv','Read\x20config\x20value\x20from\x20stdin','2081844UmWveO','data','tags','boolean','key:\x20','Environment\x20variable\x20is\x20not\x20set:\x20','appCode','6248aRmLYG','23454rJuzMo','utf8','length','Runtime\x20app-config\x20key','bool','trim','once','dryRun','defineProperties','setEncoding','kind','valueRedacted','Missing\x20app-config\x20key.','apiError','1649124xIVSag','argument','from-env','655770XgKWsk','Failed\x20to\x20','Missing\x20app-config\x20value\x20source.','after','validation','slice','hasValue','key','join','env','778087vjmPdx','App\x20config\x20value\x20source\x20is\x20ambiguous.','\x20app\x20config.','string','str','method','flag','value','Reveal\x20the\x20sensitive\x20value\x20for\x20this\x20single\x20key','file','push','reveal','12565xsupXx','App\x20config\x20tags\x20length\x20cannot\x20exceed\x2032.','2mbBkGu','name'];a28_0x340d=function(){return _0x50769e;};return a28_0x340d();}export function readOptionalTags(_0x15f64c){const _0x4e9a2b=a28_0xbe6680,_0x336dd9=_0x15f64c[_0x4e9a2b(0x1f9)](_0x4e9a2b(0x1d4))[_0x4e9a2b(0x1df)]();if(!_0x336dd9)return undefined;if(_0x336dd9[_0x4e9a2b(0x1dc)]>0x20)throw CliErrors['validation'](_0x4e9a2b(0x202));return _0x336dd9;}export function validateKey(_0x572bc3){const _0x3bb119=a28_0xbe6680;if(!_0x572bc3)throw CliErrors['validation'](_0x3bb119(0x1e6));if(_0x572bc3[_0x3bb119(0x1dc)]>0x100)throw CliErrors[_0x3bb119(0x1ef)]('App\x20config\x20key\x20length\x20cannot\x20exceed\x20256.');}export function projectAppConfig(_0x4ab0f7,_0x5fecf9){const _0x3f2da7=a28_0xbe6680,_0x3601fb=_0x4ab0f7['value']!==undefined&&_0x4ab0f7[_0x3f2da7(0x1fc)]!==null&&_0x4ab0f7['value']!=='',_0x128361={'appCode':_0x4ab0f7['appCode'],'key':_0x4ab0f7[_0x3f2da7(0x1f2)],'tags':_0x4ab0f7[_0x3f2da7(0x1d4)]??undefined,'hasValue':_0x3601fb,'valueRedacted':_0x3601fb&&!_0x5fecf9?.[_0x3f2da7(0x200)],'gmtCreate':_0x4ab0f7['gmtCreate'],'gmtModified':_0x4ab0f7['gmtModified']};return _0x5fecf9?.[_0x3f2da7(0x200)]&&(_0x128361[_0x3f2da7(0x1fc)]=_0x4ab0f7[_0x3f2da7(0x1fc)]??'',_0x128361[_0x3f2da7(0x1e5)]=![]),_0x128361;}export function plannedAppConfig(_0x22d53c){const _0x2cd2b0=a28_0xbe6680,_0x429d01=_0x22d53c[_0x2cd2b0(0x1f1)]??!![];return{'appCode':_0x22d53c[_0x2cd2b0(0x1d8)],'key':_0x22d53c['key'],'tags':_0x22d53c['tags']??undefined,'hasValue':_0x429d01,'valueRedacted':_0x429d01};}export function buildMutationData(_0xf06aec){const _0xa034de=a28_0xbe6680;return{'operation':_0xf06aec[_0xa034de(0x208)],'selector':{'appCode':_0xf06aec[_0xa034de(0x1d8)],'key':_0xf06aec[_0xa034de(0x1f2)]},'before':_0xf06aec[_0xa034de(0x20c)],'after':_0xf06aec[_0xa034de(0x1ee)],'dryRun':_0xf06aec[_0xa034de(0x1e1)],'warnings':_0xf06aec['warnings']??[]};}export async function withAppConfigApiBoundary(_0x4cc725,_0x56f8b0,_0x3ab429){const _0x3a21a0=a28_0xbe6680;try{return await _0x3ab429();}catch{const _0x23fe61=['appCode:\x20'+_0x56f8b0['appCode']];if(_0x56f8b0['key'])_0x23fe61[_0x3a21a0(0x1ff)](_0x3a21a0(0x1d6)+_0x56f8b0['key']);_0x23fe61['push']('value\x20is\x20redacted');throw CliErrors[_0x3a21a0(0x1e7)](_0x3a21a0(0x1ec)+_0x4cc725+_0x3a21a0(0x1f7),_0x23fe61[_0x3a21a0(0x1f3)](';\x20')+'.');}}export function asAppConfigDryRunResult(_0x48a9e7,_0x1621d6){const _0x3e7015=a28_0xbe6680;return Object[_0x3e7015(0x1e2)](_0x48a9e7,{'method':{'value':_0x1621d6[_0x3e7015(0x1fa)],'enumerable':![]},'url':{'value':_0x1621d6['url'],'enumerable':![]}});}export function assertSingleValueSource(_0x26c2bb){const _0x55d64c=a28_0xbe6680,_0x4ee359=[];_0x26c2bb[_0x55d64c(0x207)][_0x55d64c(0x1dc)]>0x1&&_0x4ee359[_0x55d64c(0x1ff)]({'kind':'argument','value':_0x26c2bb[_0x55d64c(0x207)][_0x55d64c(0x1f0)](0x1)[_0x55d64c(0x1f3)]('\x20')});const _0x8756d3=_0x26c2bb[_0x55d64c(0x1fb)](_0x55d64c(0x1fc));_0x8756d3!==undefined&&_0x8756d3!==null&&_0x4ee359[_0x55d64c(0x1ff)]({'kind':_0x55d64c(0x1e9),'value':String(_0x8756d3)});_0x26c2bb[_0x55d64c(0x1de)]('stdin')&&_0x4ee359[_0x55d64c(0x1ff)]({'kind':'stdin'});const _0x184feb=_0x26c2bb['str']('from-env')[_0x55d64c(0x1df)]();_0x184feb&&_0x4ee359[_0x55d64c(0x1ff)]({'kind':_0x55d64c(0x1f4),'name':_0x184feb});const _0x3a7c7b=_0x26c2bb[_0x55d64c(0x1f9)](_0x55d64c(0x1fe))[_0x55d64c(0x1df)]();_0x3a7c7b&&_0x4ee359[_0x55d64c(0x1ff)]({'kind':_0x55d64c(0x1fe),'path':_0x3a7c7b});if(_0x4ee359['length']===0x0)throw CliErrors[_0x55d64c(0x1ef)](_0x55d64c(0x1ed),_0x55d64c(0x209));if(_0x4ee359['length']>0x1)throw CliErrors[_0x55d64c(0x1ef)](_0x55d64c(0x1f6),'Use\x20exactly\x20one\x20of:\x20positional\x20<value>,\x20--stdin,\x20--from-env\x20<NAME>,\x20or\x20--file\x20<path>.');return _0x4ee359[0x0];}export async function assertValueSourceReadable(_0x11eb42){const _0x5e4abd=a28_0xbe6680;if(_0x11eb42[_0x5e4abd(0x1e4)]===_0x5e4abd(0x1f4)&&!(_0x11eb42[_0x5e4abd(0x204)]in process.env))throw CliErrors[_0x5e4abd(0x1ef)](_0x5e4abd(0x1d7)+_0x11eb42[_0x5e4abd(0x204)]);if(_0x11eb42['kind']===_0x5e4abd(0x1fe))try{await access(_0x11eb42[_0x5e4abd(0x205)]);}catch{throw CliErrors['validation']('Value\x20file\x20is\x20not\x20readable:\x20'+_0x11eb42[_0x5e4abd(0x205)]);}}export async function readAppConfigValue(_0x5dd48c){const _0xdbaf3=a28_0xbe6680,_0x383231=assertSingleValueSource(_0x5dd48c),_0x42cd2b=[];if(_0x383231[_0xdbaf3(0x1e4)]===_0xdbaf3(0x1e9))return _0x42cd2b[_0xdbaf3(0x1ff)]('Value\x20was\x20provided\x20as\x20a\x20command\x20argument;\x20prefer\x20--stdin,\x20--from-env,\x20or\x20--file\x20for\x20secrets.'),{'value':_0x383231[_0xdbaf3(0x1fc)]??'','source':_0x383231[_0xdbaf3(0x1e4)],'warnings':_0x42cd2b};if(_0x383231[_0xdbaf3(0x1e4)]===_0xdbaf3(0x20b))return{'value':await readStdin(),'source':_0x383231['kind'],'warnings':_0x42cd2b};if(_0x383231[_0xdbaf3(0x1e4)]===_0xdbaf3(0x1f4)){if(!(_0x383231[_0xdbaf3(0x204)]in process.env))throw CliErrors[_0xdbaf3(0x1ef)]('Environment\x20variable\x20is\x20not\x20set:\x20'+_0x383231['name']);return{'value':process.env[_0x383231.name]??'','source':_0x383231[_0xdbaf3(0x1e4)],'warnings':_0x42cd2b};}return{'value':await readFile(_0x383231[_0xdbaf3(0x205)],_0xdbaf3(0x1db)),'source':_0x383231[_0xdbaf3(0x1e4)],'warnings':_0x42cd2b};}function readStdin(){return new Promise((_0x38baa4,_0x200744)=>{const _0x5c7be9=a28_0x2087;let _0x55b490='';process['stdin'][_0x5c7be9(0x1e3)]('utf8'),process['stdin']['on'](_0x5c7be9(0x1d3),_0x76cdba=>{_0x55b490+=_0x76cdba;}),process[_0x5c7be9(0x20b)][_0x5c7be9(0x1e0)]('end',()=>_0x38baa4(_0x55b490)),process['stdin']['once'](_0x5c7be9(0x206),_0x200744);});}
@@ -0,0 +1,2 @@
1
+ import type { CommandDefinition } from "../../framework/types.js";
2
+ export declare const authDefinitions: CommandDefinition[];
@@ -1 +1 @@
1
- const a29_0x55f56b=a29_0x44e1;(function(_0x5d4479,_0x3d2738){const _0x3eddee=a29_0x44e1,_0x56eec1=_0x5d4479();while(!![]){try{const _0x1f9db9=parseInt(_0x3eddee(0x1de))/0x1+-parseInt(_0x3eddee(0x1dd))/0x2*(parseInt(_0x3eddee(0x1cb))/0x3)+-parseInt(_0x3eddee(0x1cc))/0x4+parseInt(_0x3eddee(0x1da))/0x5+parseInt(_0x3eddee(0x1d4))/0x6*(-parseInt(_0x3eddee(0x1ce))/0x7)+parseInt(_0x3eddee(0x1d2))/0x8*(parseInt(_0x3eddee(0x1cf))/0x9)+parseInt(_0x3eddee(0x1d8))/0xa*(parseInt(_0x3eddee(0x1d0))/0xb);if(_0x1f9db9===_0x3d2738)break;else _0x56eec1['push'](_0x56eec1['shift']());}catch(_0x4068de){_0x56eec1['push'](_0x56eec1['shift']());}}}(a29_0x51d4,0x8b852));function a29_0x44e1(_0x21b97c,_0x2988be){_0x21b97c=_0x21b97c-0x1c8;const _0x51d429=a29_0x51d4();let _0x44e199=_0x51d429[_0x21b97c];return _0x44e199;}import{unlinkSync,existsSync}from'node:fs';import{cookieFile}from'../../auth/constant.js';export const authDefinitions=[{'service':a29_0x55f56b(0x1d6),'command':a29_0x55f56b(0x1d7),'description':'Login\x20via\x20browser','risk':a29_0x55f56b(0x1c8),'requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':[{'name':a29_0x55f56b(0x1d3),'type':a29_0x55f56b(0x1ca),'description':a29_0x55f56b(0x1d9),'default':![]}],async 'execute'(_0x3e1aa7){const _0xe72d40=a29_0x55f56b,{runAuthServer:_0x529be9}=await import(_0xe72d40(0x1db));return await _0x529be9({'autoYes':_0x3e1aa7[_0xe72d40(0x1c9)](_0xe72d40(0x1d3)),'nonInteractive':_0x3e1aa7[_0xe72d40(0x1dc)]}),{'ok':!![]};}},{'service':a29_0x55f56b(0x1d6),'command':'logout','description':a29_0x55f56b(0x1d1),'risk':a29_0x55f56b(0x1d5),'requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':[],async 'execute'(_0x16eac8){const _0x37d3fe=a29_0x55f56b;return existsSync(cookieFile)?(unlinkSync(cookieFile),console[_0x37d3fe(0x1cd)]('✓\x20Logged\x20out')):console[_0x37d3fe(0x1cd)]('!\x20Not\x20logged\x20in'),{'ok':!![]};}}];function a29_0x51d4(){const _0x27d4ae=['write','auth','login','40ZWEryJ','Skip\x20login\x20confirmation\x20and\x20start\x20browser\x20auth\x20immediately','1365950ZEXRim','../../auth/auth-server-ui.js','nonInteractive','524nZyeaw','737775JZForM','read','bool','boolean','8109edpQWr','2525764XFNUsm','log','203xQCkyi','9neFeMz','1239172kCifJe','Clear\x20login\x20session','6136392xQeXIY','yes','65694zUFvzy'];a29_0x51d4=function(){return _0x27d4ae;};return a29_0x51d4();}
1
+ const a29_0x25d1bf=a29_0x176b;(function(_0x1346fd,_0x5c2181){const _0x3b8383=a29_0x176b,_0x2700df=_0x1346fd();while(!![]){try{const _0x1b6417=-parseInt(_0x3b8383(0x161))/0x1*(parseInt(_0x3b8383(0x174))/0x2)+-parseInt(_0x3b8383(0x15f))/0x3*(parseInt(_0x3b8383(0x16f))/0x4)+parseInt(_0x3b8383(0x162))/0x5*(parseInt(_0x3b8383(0x166))/0x6)+parseInt(_0x3b8383(0x171))/0x7*(parseInt(_0x3b8383(0x172))/0x8)+-parseInt(_0x3b8383(0x165))/0x9*(-parseInt(_0x3b8383(0x15a))/0xa)+-parseInt(_0x3b8383(0x173))/0xb+-parseInt(_0x3b8383(0x15e))/0xc*(-parseInt(_0x3b8383(0x16a))/0xd);if(_0x1b6417===_0x5c2181)break;else _0x2700df['push'](_0x2700df['shift']());}catch(_0x1e784c){_0x2700df['push'](_0x2700df['shift']());}}}(a29_0x29da,0x80a19));function a29_0x176b(_0x37321a,_0x758b43){_0x37321a=_0x37321a-0x15a;const _0x29da39=a29_0x29da();let _0x176b35=_0x29da39[_0x37321a];return _0x176b35;}import{unlinkSync,existsSync}from'node:fs';import{cookieFile}from'../../auth/constant.js';export const authDefinitions=[{'service':a29_0x25d1bf(0x15b),'command':a29_0x25d1bf(0x163),'description':a29_0x25d1bf(0x16d),'risk':a29_0x25d1bf(0x164),'requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':[{'name':'yes','type':a29_0x25d1bf(0x160),'description':a29_0x25d1bf(0x170),'default':![]}],async 'execute'(_0x56f70b){const _0x1731f4=a29_0x25d1bf,{runAuthServer:_0x40ed1c}=await import(_0x1731f4(0x169));return await _0x40ed1c({'autoYes':_0x56f70b[_0x1731f4(0x16c)](_0x1731f4(0x167)),'nonInteractive':_0x56f70b['nonInteractive']}),{'ok':!![]};}},{'service':a29_0x25d1bf(0x15b),'command':a29_0x25d1bf(0x15d),'description':a29_0x25d1bf(0x168),'risk':a29_0x25d1bf(0x15c),'requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':[],async 'execute'(_0x287839){const _0x69d5eb=a29_0x25d1bf;return existsSync(cookieFile)?(unlinkSync(cookieFile),console[_0x69d5eb(0x16b)]('✓\x20Logged\x20out')):console[_0x69d5eb(0x16b)](_0x69d5eb(0x16e)),{'ok':!![]};}}];function a29_0x29da(){const _0x515a58=['read','63UoMXgW','30ZpEaLg','yes','Clear\x20login\x20session','../../auth/auth-server-ui.js','13xIoiPn','log','bool','Login\x20via\x20browser','!\x20Not\x20logged\x20in','4iRIuAl','Skip\x20login\x20confirmation\x20and\x20start\x20browser\x20auth\x20immediately','7xmycfr','1768800rtAkpP','1833634chzBVl','86NxYqhj','451010mRWRWi','auth','write','logout','8348412BnpUYj','2931099tlhyLJ','boolean','6671HCAJwR','724945sDlLyX','login'];a29_0x29da=function(){return _0x515a58;};return a29_0x29da();}
@@ -0,0 +1,4 @@
1
+ import type { BffScriptType, HookCreationOptions } from "../../core/bff/types.js";
2
+ import type { CommandDefinition } from "../../framework/types.js";
3
+ export declare const bffCreate: CommandDefinition;
4
+ export declare function generateTemplate(scriptType: BffScriptType, functionName: string, appCode: string, description?: string, hookOptions?: HookCreationOptions): string;
@@ -1 +1 @@
1
- const a30_0x49985b=a30_0x53b2;function a30_0x53b2(_0x173810,_0x5dc9ea){_0x173810=_0x173810-0x15e;const _0x5508eb=a30_0x5508();let _0x53b284=_0x5508eb[_0x173810];return _0x53b284;}(function(_0x4e2171,_0x34c931){const _0x586f8c=a30_0x53b2,_0x3cc293=_0x4e2171();while(!![]){try{const _0x4a6065=-parseInt(_0x586f8c(0x1b3))/0x1*(parseInt(_0x586f8c(0x165))/0x2)+parseInt(_0x586f8c(0x17b))/0x3*(-parseInt(_0x586f8c(0x18a))/0x4)+parseInt(_0x586f8c(0x161))/0x5*(-parseInt(_0x586f8c(0x174))/0x6)+-parseInt(_0x586f8c(0x19b))/0x7+-parseInt(_0x586f8c(0x188))/0x8*(-parseInt(_0x586f8c(0x176))/0x9)+-parseInt(_0x586f8c(0x16b))/0xa+-parseInt(_0x586f8c(0x1b4))/0xb*(-parseInt(_0x586f8c(0x193))/0xc);if(_0x4a6065===_0x34c931)break;else _0x3cc293['push'](_0x3cc293['shift']());}catch(_0x1b204a){_0x3cc293['push'](_0x3cc293['shift']());}}}(a30_0x5508,0xca4a0));import{createInterface}from'node:readline';import{mkdir,writeFile}from'node:fs/promises';import{dirname,join}from'node:path';import{listDatasets,listBffDatasetOperations}from'../../core/api-client.js';import{loadAliasMap,resolveAlias}from'../../core/alias-resolver.js';import{resolveApiFilePath}from'../../context.js';import{loadBffProjectConfig}from'../../core/bff/config.js';import{fileExists}from'../../core/bff/file-system.js';import{isValidBffFunctionName,normalizeHookFunctionNode}from'../../core/bff/utils.js';import{CliErrors}from'../../errors.js';import{CLI_BIN_NAME}from'../../constant/cli.js';export const bffCreate={'service':a30_0x49985b(0x1b5),'command':a30_0x49985b(0x18e),'description':a30_0x49985b(0x175),'risk':'write','flags':[{'name':a30_0x49985b(0x1aa),'type':'string','required':!![],'enum':[a30_0x49985b(0x1ab),a30_0x49985b(0x17a),a30_0x49985b(0x177)],'description':a30_0x49985b(0x199)},{'name':a30_0x49985b(0x16d),'type':'string','required':!![],'description':a30_0x49985b(0x197)},{'name':a30_0x49985b(0x19c),'type':a30_0x49985b(0x17d),'description':a30_0x49985b(0x1a2)},{'name':'alias','type':a30_0x49985b(0x17d),'description':a30_0x49985b(0x1a5)},{'name':'datasetcode','type':a30_0x49985b(0x17d),'description':a30_0x49985b(0x185)},{'name':'operation-type','type':a30_0x49985b(0x17d),'description':a30_0x49985b(0x181)},{'name':a30_0x49985b(0x18b),'type':a30_0x49985b(0x17d),'description':a30_0x49985b(0x183),'enum':[a30_0x49985b(0x173),'after']}],async 'validate'(_0x53f5c1){const _0x469a92=a30_0x49985b,_0x378c07=_0x53f5c1[_0x469a92(0x16e)](_0x469a92(0x16d));if(!isValidBffFunctionName(_0x378c07))throw CliErrors[_0x469a92(0x18d)]('Invalid\x20function\x20name\x20\x22'+_0x378c07+_0x469a92(0x1ac));},async 'execute'(_0x5566cd){const _0x1fdd49=a30_0x49985b,_0x2881ef=loadBffProjectConfig(_0x5566cd[_0x1fdd49(0x16f)]),_0x5aa09e=_0x5566cd[_0x1fdd49(0x16e)](_0x1fdd49(0x1aa)),_0xb8917d=_0x5566cd[_0x1fdd49(0x16e)]('name'),_0x4ad779=_0x5566cd[_0x1fdd49(0x16e)](_0x1fdd49(0x19c))||undefined,_0x49b1c0=_0x5aa09e==='HOOK'?await resolveHookOptions(_0x2881ef,_0x5566cd):undefined,_0x43772a=buildFilePath(_0x2881ef,_0x5aa09e,_0xb8917d,_0x49b1c0);if(await fileExists(_0x43772a))throw CliErrors[_0x1fdd49(0x18d)](_0x1fdd49(0x172)+_0x43772a);await mkdir(dirname(_0x43772a),{'recursive':!![]});const _0x237aba=generateTemplate(_0x5aa09e,_0xb8917d,_0x5566cd[_0x1fdd49(0x16f)],_0x4ad779,_0x49b1c0);await writeFile(_0x43772a,_0x237aba,_0x1fdd49(0x1b1));const _0x1890ea={'type':_0x5aa09e,'name':_0xb8917d,'path':_0x43772a};if(_0x4ad779)_0x1890ea[_0x1fdd49(0x19c)]=_0x4ad779;if(_0x49b1c0){if(_0x49b1c0[_0x1fdd49(0x1a6)])_0x1890ea['alias']=_0x49b1c0[_0x1fdd49(0x1a6)];_0x1890ea[_0x1fdd49(0x1b0)]=_0x49b1c0[_0x1fdd49(0x1b0)],_0x1890ea[_0x1fdd49(0x17f)]=_0x49b1c0[_0x1fdd49(0x17f)],_0x1890ea[_0x1fdd49(0x1ad)]=_0x49b1c0[_0x1fdd49(0x1ad)];}return{'ok':!![],'data':_0x1890ea,'message':_0x1fdd49(0x180)+_0x5aa09e+'\x20function:\x20'+_0xb8917d};}};async function resolveHookOptions(_0x5586fe,_0x15bb88){const _0x452f7d=a30_0x49985b,_0x5b359b=loadAliasMap(_0x15bb88['apiDir'],undefined,resolveApiFilePath(_0x15bb88[_0x452f7d(0x192)],_0x15bb88[_0x452f7d(0x16f)])),_0x3e897d=_0x5b359b[_0x452f7d(0x189)]>0x0;let _0x192513,_0x1ec5d2,_0x489325;const _0x156267=_0x15bb88['str'](_0x452f7d(0x1a6)),_0x3bab2e=_0x15bb88[_0x452f7d(0x16e)](_0x452f7d(0x1a1));if(_0x156267){const _0x33c664=resolveAlias(_0x15bb88[_0x452f7d(0x192)],_0x156267,undefined,resolveApiFilePath(_0x15bb88['apiDir'],_0x15bb88['appCode']));if(!_0x33c664){const _0x4d5d58=_0x3e897d?_0x452f7d(0x1a0)+_0x5b359b['map'](_0x735d18=>_0x735d18[_0x452f7d(0x1a6)])['join'](',\x20'):'No\x20api.ts\x20found.\x20Run\x20`'+CLI_BIN_NAME+_0x452f7d(0x1b2);throw CliErrors['validation']('Alias\x20\x22'+_0x156267+_0x452f7d(0x18f)+_0x4d5d58);}_0x192513=_0x156267,_0x1ec5d2=_0x33c664;}else{if(_0x3bab2e){_0x1ec5d2=_0x3bab2e;const _0x23f625=_0x5b359b['find'](_0x325b73=>_0x325b73[_0x452f7d(0x1b0)]===_0x3bab2e);_0x192513=_0x23f625?.[_0x452f7d(0x1a6)];}else{if(_0x15bb88[_0x452f7d(0x198)])throw CliErrors['validation'](_0x452f7d(0x169));else{if(_0x3e897d){const _0x275e6e=_0x5b359b['map'](_0x249e04=>_0x249e04[_0x452f7d(0x1a6)]+'\x20('+_0x249e04['tableName']+')'),_0x3cfbce=await promptSelect(_0x452f7d(0x16c),_0x275e6e),_0x2b7feb=_0x5b359b[_0x3cfbce];if(!_0x2b7feb)throw CliErrors['validation'](_0x452f7d(0x170));_0x192513=_0x2b7feb[_0x452f7d(0x1a6)],_0x1ec5d2=_0x2b7feb['datasetCode'];}else{const _0x546c22=await listDatasets(_0x15bb88['appCode']);if(_0x546c22[_0x452f7d(0x189)]===0x0)throw CliErrors[_0x452f7d(0x18d)](_0x452f7d(0x162));const _0x3377d1=_0x546c22[_0x452f7d(0x160)](_0x8d19b9=>_0x8d19b9[_0x452f7d(0x16d)]+'\x20['+(_0x8d19b9[_0x452f7d(0x190)]??'UNKNOWN')+_0x452f7d(0x1b7)+_0x8d19b9[_0x452f7d(0x19a)]+')'),_0x140e2a=await promptSelect(_0x452f7d(0x16c),_0x3377d1),_0x1e9476=_0x546c22[_0x140e2a];if(!_0x1e9476)throw CliErrors['validation']('Invalid\x20dataset\x20selection.');_0x1ec5d2=_0x1e9476[_0x452f7d(0x19a)],_0x192513=undefined;}}}}const _0x369644=await listDatasets(_0x15bb88[_0x452f7d(0x16f)]),_0x4e9bfb=_0x369644[_0x452f7d(0x17c)](_0x21218f=>_0x21218f[_0x452f7d(0x19a)]===_0x1ec5d2);if(!_0x4e9bfb)throw CliErrors[_0x452f7d(0x18d)](_0x452f7d(0x19f)+_0x1ec5d2+_0x452f7d(0x186)+(_0x192513?_0x452f7d(0x196)+CLI_BIN_NAME+'\x20api\x20pull`\x20to\x20refresh.':''));_0x489325=_0x4e9bfb['id'];const _0x5e7215=_0x192513??_0x1ec5d2,_0x5f5441=await listBffDatasetOperations(_0x15bb88['appCode'],_0x489325),_0x32232f=_0x5f5441?Object['keys'](_0x5f5441):[];if(_0x32232f['length']===0x0)throw CliErrors[_0x452f7d(0x18d)]('No\x20operation\x20types\x20found\x20for\x20dataset\x20'+_0x5e7215+'.');let _0x5c43d4;const _0x52da10=_0x15bb88[_0x452f7d(0x16e)](_0x452f7d(0x184));if(_0x52da10){if(!_0x32232f[_0x452f7d(0x15f)](_0x52da10))throw CliErrors[_0x452f7d(0x18d)](_0x452f7d(0x1a8)+_0x52da10+_0x452f7d(0x195)+_0x5e7215+'.\x20'+(_0x452f7d(0x167)+_0x32232f['join'](',\x20')));_0x5c43d4=_0x52da10;}else{if(_0x15bb88[_0x452f7d(0x198)])throw CliErrors['validation'](_0x452f7d(0x1a9));const _0x5e778c=await promptSelect('Select\x20operation\x20type:',_0x32232f);_0x5c43d4=_0x32232f[_0x5e778c]??_0x32232f[0x0];}let _0x3c09ec=normalizeHookFunctionNode(_0x15bb88['str'](_0x452f7d(0x18b)));if(!_0x3c09ec){if(_0x15bb88[_0x452f7d(0x16e)](_0x452f7d(0x18b)))throw CliErrors['validation'](_0x452f7d(0x179));if(_0x15bb88[_0x452f7d(0x198)])throw CliErrors['validation'](_0x452f7d(0x16a));const _0x47649a=await promptSelect(_0x452f7d(0x191),[_0x452f7d(0x173),_0x452f7d(0x1a7)]);_0x3c09ec=[_0x452f7d(0x173),_0x452f7d(0x1a7)][_0x47649a]??_0x452f7d(0x173);}return{'alias':_0x192513,'datasetCode':_0x1ec5d2,'datasetId':_0x489325,'operationType':_0x5c43d4,'functionNode':_0x3c09ec};}async function promptSelect(_0x9f14a5,_0x53462a){const _0x5e324c=a30_0x49985b;if(_0x53462a['length']===0x1)return 0x0;for(const [_0x132344,_0x29f49a]of _0x53462a['entries']()){process[_0x5e324c(0x171)][_0x5e324c(0x1a3)]('\x20\x20'+(_0x132344+0x1)+'.\x20'+_0x29f49a+'\x0a');}const _0x41b261=createInterface({'input':process[_0x5e324c(0x187)],'output':process['stderr']});while(!![]){const _0x22931a=await new Promise(_0x273f66=>{const _0x81805c=_0x5e324c;_0x41b261[_0x81805c(0x1b6)](_0x9f14a5+'\x20',_0x273f66);}),_0x486de6=Number[_0x5e324c(0x19d)](_0x22931a[_0x5e324c(0x18c)](),0xa);if(Number[_0x5e324c(0x164)](_0x486de6)&&_0x486de6>=0x1&&_0x486de6<=_0x53462a[_0x5e324c(0x189)])return _0x41b261[_0x5e324c(0x1bd)](),_0x486de6-0x1;process[_0x5e324c(0x171)]['write'](_0x5e324c(0x1ae)+_0x53462a[_0x5e324c(0x189)]+'.\x0a');}}function a30_0x5508(){const _0x417929=['45AcVMpJ','find','string','HOOK\x20requires\x20hookOptions\x20for\x20template\x20generation.','operationType','Created\x20','Operation\x20type\x20(HOOK\x20only)','/**\x0a\x20*\x20ENDPOINT\x20function\x20template.\x0a\x20*\x0a\x20*\x20[脚本描述]\x20','Trigger\x20node\x20(HOOK\x20only)','operation-type','Dataset\x20code\x20(HOOK\x20only,\x20fallback\x20when\x20alias\x20unavailable)','\x22.\x20','stdin','8hQhjBF','length','16860kKmtaV','function-node','trim','validation','create','\x22\x20not\x20found.\x20','source','Select\x20trigger\x20node:','apiDir','12qLmNvf','/**\x0a\x20*\x20HOOK\x20function\x20template.\x0a\x20*\x0a\x20*\x20[脚本描述]\x20','\x22\x20not\x20found\x20for\x20dataset\x20','The\x20api.ts\x20may\x20be\x20stale\x20—\x20run\x20`','Function\x20name\x20(valid\x20JS\x20identifier)','nonInteractive','Script\x20type','code','7895706bMKxuO','description','parseInt','\x0a\x20*\x20[脚本类型]\x20COMMON\x0a\x20*\x20[本地路径]\x20.rabetbase/bff/COMMON/','Dataset\x20not\x20found\x20for\x20code\x20\x22','Available\x20aliases:\x20','datasetcode','Script\x20description','write','.js\x0a\x20*\x0a\x20*\x20@param\x20{Object}\x20params\x20-\x20Input\x20parameters.\x0a\x20*\x20@param\x20{Object}\x20context\x20-\x20Execution\x20context\x20(injected\x20by\x20platform).\x0a\x20*\x20@returns\x20{Promise<Object>}\x20Processing\x20result.\x0a\x20*/\x0aexport\x20default\x20async\x20function\x20','Dataset\x20alias\x20from\x20api.ts\x20(HOOK\x20only,\x20preferred)','alias','after','Operation\x20type\x20\x22','--operation-type\x20is\x20required\x20for\x20HOOK\x20in\x20non-interactive\x20mode.','type','COMMON','\x22.\x20Must\x20be\x20a\x20valid\x20JS\x20identifier\x20(e.g.\x20createOrder,\x20beforeFilter).','functionNode','\x20\x20Enter\x20a\x20number\x20between\x201\x20and\x20','\x0a\x20*\x0a\x20*\x20@param\x20{Object}\x20params\x20-\x20Request\x20parameters.\x0a\x20*\x20@param\x20{Object}\x20context\x20-\x20Execution\x20context\x20(injected\x20by\x20platform).\x0a\x20*\x20@returns\x20{Promise<Object>}\x20Business\x20result\x20(wrapped\x20in\x20response.data).\x0a\x20*/\x0aexport\x20default\x20async\x20function\x20','datasetCode','utf8','\x20api\x20pull`\x20first,\x20or\x20use\x20--datasetcode\x20instead.','1031686bcoIcD','52518829WqcSwE','bff','question',']\x20(','TODO:\x20add\x20script\x20description','\x0a\x20*\x20[触发节点]\x20','/**\x0a\x20*\x20COMMON\x20function\x20template.\x0a\x20*\x0a\x20*\x20[脚本描述]\x20','.js','scriptsRootDir','close','\x0a\x20*\x20[接口路径]\x20POST\x20/api/','includes','map','413790NfpOdj','No\x20datasets\x20found\x20for\x20this\x20app.','\x0a\x20*\x20[脚本名称]\x20','isInteger','2bwZBgm','\x0a\x20*\x0a\x20*\x20@param\x20{Object}\x20params\x20-\x20Current\x20request\x20params\x20or\x20response\x20result.\x0a\x20*\x20@param\x20{Object}\x20context\x20-\x20Execution\x20context\x20(injected\x20by\x20platform).\x0a\x20*\x20@returns\x20{Promise<Object>}\x20Modified\x20params\x20object.\x0a\x20*/\x0aexport\x20default\x20async\x20function\x20','Available:\x20','(params,\x20context)\x20{\x0a\x20\x20return\x20params;\x0a}\x0a','--alias\x20or\x20--datasetcode\x20is\x20required\x20for\x20HOOK\x20in\x20non-interactive\x20mode.','--function-node\x20is\x20required\x20for\x20HOOK\x20in\x20non-interactive\x20mode.','13629410EDJjxb','Select\x20dataset:','name','str','appCode','Invalid\x20dataset\x20selection.','stderr','File\x20already\x20exists:\x20','before','78OxlXDu','Scaffold\x20a\x20new\x20BFF\x20function\x20from\x20template','6442209ReQcKE','HOOK','HOOK\x20requires\x20alias/operation/node\x20options.','--function-node\x20must\x20be\x20\x27before\x27\x20or\x20\x27after\x27.','ENDPOINT'];a30_0x5508=function(){return _0x417929;};return a30_0x5508();}function buildFilePath(_0x1af05b,_0x91a7c7,_0x3e3bb1,_0x3b4bac){const _0x31cfd3=a30_0x49985b;if(_0x91a7c7===_0x31cfd3(0x177)){if(!_0x3b4bac)throw CliErrors['validation'](_0x31cfd3(0x178));const _0x39e3cd=_0x3b4bac['alias']??_0x3b4bac[_0x31cfd3(0x1b0)];return join(_0x1af05b[_0x31cfd3(0x1bc)],_0x31cfd3(0x177),_0x39e3cd,_0x3b4bac[_0x31cfd3(0x17f)],_0x3b4bac[_0x31cfd3(0x1ad)],_0x3e3bb1+'.js');}return join(_0x1af05b[_0x31cfd3(0x1bc)],_0x91a7c7,_0x3e3bb1+_0x31cfd3(0x1bb));}export function generateTemplate(_0x51b2f8,_0xb5f9f5,_0x30290c,_0x2e8fb4,_0x2c874b){const _0x11c988=a30_0x49985b,_0x2824b5=_0x2e8fb4?.['trim']()||_0x11c988(0x1b8);if(_0x51b2f8===_0x11c988(0x1ab))return _0x11c988(0x1ba)+_0x2824b5+_0x11c988(0x163)+_0xb5f9f5+_0x11c988(0x19e)+_0xb5f9f5+_0x11c988(0x1a4)+_0xb5f9f5+_0x11c988(0x168);if(_0x51b2f8===_0x11c988(0x17a))return _0x11c988(0x182)+_0x2824b5+'\x0a\x20*\x20[接口路径]\x20POST\x20/api/endpoint/{appCode}/{scriptName}\x0a\x20*\x20[当前示例]\x20POST\x20/api/endpoint/'+_0x30290c+'/'+_0xb5f9f5+_0x11c988(0x1af)+_0xb5f9f5+_0x11c988(0x168);if(!_0x2c874b)throw CliErrors['validation'](_0x11c988(0x17e));return _0x11c988(0x194)+_0x2824b5+_0x11c988(0x15e)+_0x30290c+'/'+_0x2c874b[_0x11c988(0x1b0)]+'/'+_0x2c874b['operationType']+_0x11c988(0x1b9)+_0x2c874b[_0x11c988(0x1ad)]+_0x11c988(0x166)+_0xb5f9f5+_0x11c988(0x168);}
1
+ const a30_0x102b87=a30_0x143c;function a30_0x143c(_0x13f236,_0x120a18){_0x13f236=_0x13f236-0x178;const _0x57648e=a30_0x5764();let _0x143cde=_0x57648e[_0x13f236];return _0x143cde;}(function(_0x5168d0,_0x1155a5){const _0x2f2e60=a30_0x143c,_0x16a60d=_0x5168d0();while(!![]){try{const _0x51ab7b=parseInt(_0x2f2e60(0x183))/0x1+-parseInt(_0x2f2e60(0x17e))/0x2+-parseInt(_0x2f2e60(0x1d6))/0x3*(parseInt(_0x2f2e60(0x19c))/0x4)+-parseInt(_0x2f2e60(0x1cb))/0x5+-parseInt(_0x2f2e60(0x1ce))/0x6+-parseInt(_0x2f2e60(0x1a1))/0x7*(parseInt(_0x2f2e60(0x1b5))/0x8)+parseInt(_0x2f2e60(0x1c8))/0x9*(parseInt(_0x2f2e60(0x1b2))/0xa);if(_0x51ab7b===_0x1155a5)break;else _0x16a60d['push'](_0x16a60d['shift']());}catch(_0xcf99ea){_0x16a60d['push'](_0x16a60d['shift']());}}}(a30_0x5764,0x51fda));import{createInterface}from'node:readline';import{mkdir,writeFile}from'node:fs/promises';import{dirname,join}from'node:path';import{listDatasets,listBffDatasetOperations}from'../../core/api-client.js';import{loadAliasMap,resolveAlias}from'../../core/alias-resolver.js';function a30_0x5764(){const _0x38e4a9=['alias','COMMON','\x0a\x20*\x0a\x20*\x20@param\x20{Object}\x20params\x20-\x20Current\x20request\x20params\x20or\x20response\x20result.\x0a\x20*\x20@param\x20{Object}\x20context\x20-\x20Execution\x20context\x20(injected\x20by\x20platform).\x0a\x20*\x20@returns\x20{Promise<Object>}\x20Modified\x20params\x20object.\x0a\x20*/\x0aexport\x20default\x20async\x20function\x20','Script\x20description','validation','\x0a\x20*\x20[接口路径]\x20POST\x20/api/endpoint/{appCode}/{scriptName}\x0a\x20*\x20[当前示例]\x20POST\x20/api/endpoint/','ENDPOINT','question','(params,\x20context)\x20{\x0a\x20\x20return\x20params;\x0a}\x0a','create','Select\x20operation\x20type:','\x20\x20Enter\x20a\x20number\x20between\x201\x20and\x20','HOOK','parseInt','nonInteractive','stdin','Invalid\x20function\x20name\x20\x22','scriptsRootDir','name','Invalid\x20dataset\x20selection.','910104cMARTT','datasetCode','includes','function-node',']\x20(','28DEKZPT','Operation\x20type\x20(HOOK\x20only)','Function\x20name\x20(valid\x20JS\x20identifier)','join','No\x20datasets\x20found\x20for\x20this\x20app.','HOOK\x20requires\x20alias/operation/node\x20options.','\x20api\x20pull`\x20first,\x20or\x20use\x20--datasetcode\x20instead.','before','read','Select\x20trigger\x20node:','\x20api\x20pull`\x20to\x20refresh.','--function-node\x20is\x20required\x20for\x20HOOK\x20in\x20non-interactive\x20mode.','functionNode','\x0a\x20*\x20[脚本类型]\x20COMMON\x0a\x20*\x20[本地路径]\x20.rabetbase/bff/COMMON/','/**\x0a\x20*\x20HOOK\x20function\x20template.\x0a\x20*\x0a\x20*\x20[脚本描述]\x20','Dataset\x20not\x20found\x20for\x20code\x20\x22','Operation\x20type\x20\x22','686050PiIQST','.js','entries','1172216epKkjm','apiDir','/**\x0a\x20*\x20ENDPOINT\x20function\x20template.\x0a\x20*\x0a\x20*\x20[脚本描述]\x20','source','File\x20already\x20exists:\x20','bff','operationType','close','operation-type','after','description','datasetcode','\x0a\x20*\x20[脚本名称]\x20','/**\x0a\x20*\x20COMMON\x20function\x20template.\x0a\x20*\x0a\x20*\x20[脚本描述]\x20','\x22\x20not\x20found.\x20','\x22\x20not\x20found\x20for\x20dataset\x20','\x0a\x20*\x0a\x20*\x20@param\x20{Object}\x20params\x20-\x20Request\x20parameters.\x0a\x20*\x20@param\x20{Object}\x20context\x20-\x20Execution\x20context\x20(injected\x20by\x20platform).\x0a\x20*\x20@returns\x20{Promise<Object>}\x20Business\x20result\x20(wrapped\x20in\x20response.data).\x0a\x20*/\x0aexport\x20default\x20async\x20function\x20','UNKNOWN','Scaffold\x20a\x20new\x20BFF\x20function\x20from\x20template','279FrPQpG','length','string','3316035wbPMXL','Alias\x20\x22','appCode','869190qcFPjG','\x0a\x20*\x20[触发节点]\x20','No\x20api.ts\x20found.\x20Run\x20`','Available:\x20','isInteger','\x20function:\x20','tableName','type','6NdFZgg','Dataset\x20alias\x20from\x20api.ts\x20(HOOK\x20only,\x20preferred)','Select\x20dataset:','write','map','str','find','325806QsLcco','--operation-type\x20is\x20required\x20for\x20HOOK\x20in\x20non-interactive\x20mode.','code','stderr','trim','221214VKXBGP','The\x20api.ts\x20may\x20be\x20stale\x20—\x20run\x20`','\x22.\x20','TODO:\x20add\x20script\x20description','.js\x0a\x20*\x0a\x20*\x20@param\x20{Object}\x20params\x20-\x20Input\x20parameters.\x0a\x20*\x20@param\x20{Object}\x20context\x20-\x20Execution\x20context\x20(injected\x20by\x20platform).\x0a\x20*\x20@returns\x20{Promise<Object>}\x20Processing\x20result.\x0a\x20*/\x0aexport\x20default\x20async\x20function\x20'];a30_0x5764=function(){return _0x38e4a9;};return a30_0x5764();}import{resolveApiFilePath}from'../../context.js';import{loadBffProjectConfig}from'../../core/bff/config.js';import{fileExists}from'../../core/bff/file-system.js';import{isValidBffFunctionName,normalizeHookFunctionNode}from'../../core/bff/utils.js';import{CliErrors}from'../../errors.js';import{CLI_BIN_NAME}from'../../constant/cli.js';export const bffCreate={'service':a30_0x102b87(0x1ba),'command':a30_0x102b87(0x191),'description':a30_0x102b87(0x1c7),'risk':a30_0x102b87(0x1a9),'flags':[{'name':'type','type':'string','required':!![],'enum':[a30_0x102b87(0x189),a30_0x102b87(0x18e),'HOOK'],'description':'Script\x20type'},{'name':'name','type':a30_0x102b87(0x1ca),'required':!![],'description':a30_0x102b87(0x1a3)},{'name':'description','type':a30_0x102b87(0x1ca),'description':a30_0x102b87(0x18b)},{'name':a30_0x102b87(0x188),'type':a30_0x102b87(0x1ca),'description':a30_0x102b87(0x178)},{'name':a30_0x102b87(0x1c0),'type':a30_0x102b87(0x1ca),'description':'Dataset\x20code\x20(HOOK\x20only,\x20fallback\x20when\x20alias\x20unavailable)'},{'name':a30_0x102b87(0x1bd),'type':a30_0x102b87(0x1ca),'description':a30_0x102b87(0x1a2)},{'name':a30_0x102b87(0x19f),'type':a30_0x102b87(0x1ca),'description':'Trigger\x20node\x20(HOOK\x20only)','enum':['before',a30_0x102b87(0x1be)]}],async 'validate'(_0x3952af){const _0x202701=a30_0x102b87,_0x43a092=_0x3952af[_0x202701(0x17c)]('name');if(!isValidBffFunctionName(_0x43a092))throw CliErrors[_0x202701(0x18c)](_0x202701(0x198)+_0x43a092+'\x22.\x20Must\x20be\x20a\x20valid\x20JS\x20identifier\x20(e.g.\x20createOrder,\x20beforeFilter).');},async 'execute'(_0x3d024f){const _0xc7f182=a30_0x102b87,_0x1ccdea=loadBffProjectConfig(_0x3d024f[_0xc7f182(0x1cd)]),_0x437bba=_0x3d024f[_0xc7f182(0x17c)](_0xc7f182(0x1d5)),_0x24e1f8=_0x3d024f[_0xc7f182(0x17c)]('name'),_0x4781ef=_0x3d024f['str'](_0xc7f182(0x1bf))||undefined,_0x7699b=_0x437bba===_0xc7f182(0x194)?await resolveHookOptions(_0x1ccdea,_0x3d024f):undefined,_0xb3b62d=buildFilePath(_0x1ccdea,_0x437bba,_0x24e1f8,_0x7699b);if(await fileExists(_0xb3b62d))throw CliErrors[_0xc7f182(0x18c)](_0xc7f182(0x1b9)+_0xb3b62d);await mkdir(dirname(_0xb3b62d),{'recursive':!![]});const _0x16e9b5=generateTemplate(_0x437bba,_0x24e1f8,_0x3d024f[_0xc7f182(0x1cd)],_0x4781ef,_0x7699b);await writeFile(_0xb3b62d,_0x16e9b5,'utf8');const _0x207748={'type':_0x437bba,'name':_0x24e1f8,'path':_0xb3b62d};if(_0x4781ef)_0x207748[_0xc7f182(0x1bf)]=_0x4781ef;if(_0x7699b){if(_0x7699b[_0xc7f182(0x188)])_0x207748[_0xc7f182(0x188)]=_0x7699b[_0xc7f182(0x188)];_0x207748[_0xc7f182(0x19d)]=_0x7699b[_0xc7f182(0x19d)],_0x207748[_0xc7f182(0x1bb)]=_0x7699b[_0xc7f182(0x1bb)],_0x207748[_0xc7f182(0x1ad)]=_0x7699b[_0xc7f182(0x1ad)];}return{'ok':!![],'data':_0x207748,'message':'Created\x20'+_0x437bba+_0xc7f182(0x1d3)+_0x24e1f8};}};async function resolveHookOptions(_0x3e3605,_0x3e84f0){const _0x15fad6=a30_0x102b87,_0xc074ad=loadAliasMap(_0x3e84f0[_0x15fad6(0x1b6)],undefined,resolveApiFilePath(_0x3e84f0['apiDir'],_0x3e84f0['appCode'])),_0x830686=_0xc074ad[_0x15fad6(0x1c9)]>0x0;let _0x58d0e1,_0xcf74ca,_0x14a7f9;const _0x1ec0d4=_0x3e84f0[_0x15fad6(0x17c)]('alias'),_0x5a8e0c=_0x3e84f0[_0x15fad6(0x17c)]('datasetcode');if(_0x1ec0d4){const _0x5ddeab=resolveAlias(_0x3e84f0['apiDir'],_0x1ec0d4,undefined,resolveApiFilePath(_0x3e84f0[_0x15fad6(0x1b6)],_0x3e84f0[_0x15fad6(0x1cd)]));if(!_0x5ddeab){const _0x5d634c=_0x830686?'Available\x20aliases:\x20'+_0xc074ad['map'](_0x2ab6ce=>_0x2ab6ce[_0x15fad6(0x188)])[_0x15fad6(0x1a4)](',\x20'):_0x15fad6(0x1d0)+CLI_BIN_NAME+_0x15fad6(0x1a7);throw CliErrors[_0x15fad6(0x18c)](_0x15fad6(0x1cc)+_0x1ec0d4+_0x15fad6(0x1c3)+_0x5d634c);}_0x58d0e1=_0x1ec0d4,_0xcf74ca=_0x5ddeab;}else{if(_0x5a8e0c){_0xcf74ca=_0x5a8e0c;const _0x5405ed=_0xc074ad[_0x15fad6(0x17d)](_0x393b74=>_0x393b74[_0x15fad6(0x19d)]===_0x5a8e0c);_0x58d0e1=_0x5405ed?.[_0x15fad6(0x188)];}else{if(_0x3e84f0['nonInteractive'])throw CliErrors['validation']('--alias\x20or\x20--datasetcode\x20is\x20required\x20for\x20HOOK\x20in\x20non-interactive\x20mode.');else{if(_0x830686){const _0x239c94=_0xc074ad[_0x15fad6(0x17b)](_0xff8819=>_0xff8819[_0x15fad6(0x188)]+'\x20('+_0xff8819[_0x15fad6(0x1d4)]+')'),_0x4040b6=await promptSelect(_0x15fad6(0x179),_0x239c94),_0x4790b4=_0xc074ad[_0x4040b6];if(!_0x4790b4)throw CliErrors[_0x15fad6(0x18c)]('Invalid\x20dataset\x20selection.');_0x58d0e1=_0x4790b4[_0x15fad6(0x188)],_0xcf74ca=_0x4790b4['datasetCode'];}else{const _0x1d23c8=await listDatasets(_0x3e84f0[_0x15fad6(0x1cd)]);if(_0x1d23c8[_0x15fad6(0x1c9)]===0x0)throw CliErrors['validation'](_0x15fad6(0x1a5));const _0x14b55a=_0x1d23c8[_0x15fad6(0x17b)](_0x558726=>_0x558726[_0x15fad6(0x19a)]+'\x20['+(_0x558726[_0x15fad6(0x1b8)]??_0x15fad6(0x1c6))+_0x15fad6(0x1a0)+_0x558726[_0x15fad6(0x180)]+')'),_0x5e0abc=await promptSelect('Select\x20dataset:',_0x14b55a),_0x1a51c1=_0x1d23c8[_0x5e0abc];if(!_0x1a51c1)throw CliErrors[_0x15fad6(0x18c)](_0x15fad6(0x19b));_0xcf74ca=_0x1a51c1[_0x15fad6(0x180)],_0x58d0e1=undefined;}}}}const _0x1b21b3=await listDatasets(_0x3e84f0[_0x15fad6(0x1cd)]),_0x2b4bb0=_0x1b21b3[_0x15fad6(0x17d)](_0x2e9c65=>_0x2e9c65[_0x15fad6(0x180)]===_0xcf74ca);if(!_0x2b4bb0)throw CliErrors[_0x15fad6(0x18c)](_0x15fad6(0x1b0)+_0xcf74ca+_0x15fad6(0x185)+(_0x58d0e1?_0x15fad6(0x184)+CLI_BIN_NAME+_0x15fad6(0x1ab):''));_0x14a7f9=_0x2b4bb0['id'];const _0x2a7b5b=_0x58d0e1??_0xcf74ca,_0x4cabcf=await listBffDatasetOperations(_0x3e84f0['appCode'],_0x14a7f9),_0xdfcfbc=_0x4cabcf?Object['keys'](_0x4cabcf):[];if(_0xdfcfbc[_0x15fad6(0x1c9)]===0x0)throw CliErrors[_0x15fad6(0x18c)]('No\x20operation\x20types\x20found\x20for\x20dataset\x20'+_0x2a7b5b+'.');let _0x45ef16;const _0x2f653e=_0x3e84f0['str'](_0x15fad6(0x1bd));if(_0x2f653e){if(!_0xdfcfbc[_0x15fad6(0x19e)](_0x2f653e))throw CliErrors[_0x15fad6(0x18c)](_0x15fad6(0x1b1)+_0x2f653e+_0x15fad6(0x1c4)+_0x2a7b5b+'.\x20'+(_0x15fad6(0x1d1)+_0xdfcfbc[_0x15fad6(0x1a4)](',\x20')));_0x45ef16=_0x2f653e;}else{if(_0x3e84f0[_0x15fad6(0x196)])throw CliErrors[_0x15fad6(0x18c)](_0x15fad6(0x17f));const _0x5670bd=await promptSelect(_0x15fad6(0x192),_0xdfcfbc);_0x45ef16=_0xdfcfbc[_0x5670bd]??_0xdfcfbc[0x0];}let _0x1a910e=normalizeHookFunctionNode(_0x3e84f0[_0x15fad6(0x17c)](_0x15fad6(0x19f)));if(!_0x1a910e){if(_0x3e84f0[_0x15fad6(0x17c)]('function-node'))throw CliErrors[_0x15fad6(0x18c)]('--function-node\x20must\x20be\x20\x27before\x27\x20or\x20\x27after\x27.');if(_0x3e84f0['nonInteractive'])throw CliErrors[_0x15fad6(0x18c)](_0x15fad6(0x1ac));const _0x3b0451=await promptSelect(_0x15fad6(0x1aa),[_0x15fad6(0x1a8),'after']);_0x1a910e=[_0x15fad6(0x1a8),_0x15fad6(0x1be)][_0x3b0451]??_0x15fad6(0x1a8);}return{'alias':_0x58d0e1,'datasetCode':_0xcf74ca,'datasetId':_0x14a7f9,'operationType':_0x45ef16,'functionNode':_0x1a910e};}async function promptSelect(_0x1252ef,_0x4560e1){const _0x4fed5e=a30_0x102b87;if(_0x4560e1[_0x4fed5e(0x1c9)]===0x1)return 0x0;for(const [_0x398236,_0x28a103]of _0x4560e1[_0x4fed5e(0x1b4)]()){process['stderr'][_0x4fed5e(0x17a)]('\x20\x20'+(_0x398236+0x1)+'.\x20'+_0x28a103+'\x0a');}const _0x5cf5b9=createInterface({'input':process[_0x4fed5e(0x197)],'output':process[_0x4fed5e(0x181)]});while(!![]){const _0x4052e0=await new Promise(_0x4cb93d=>{const _0x283c5b=_0x4fed5e;_0x5cf5b9[_0x283c5b(0x18f)](_0x1252ef+'\x20',_0x4cb93d);}),_0x451369=Number[_0x4fed5e(0x195)](_0x4052e0['trim'](),0xa);if(Number[_0x4fed5e(0x1d2)](_0x451369)&&_0x451369>=0x1&&_0x451369<=_0x4560e1[_0x4fed5e(0x1c9)])return _0x5cf5b9[_0x4fed5e(0x1bc)](),_0x451369-0x1;process[_0x4fed5e(0x181)][_0x4fed5e(0x17a)](_0x4fed5e(0x193)+_0x4560e1[_0x4fed5e(0x1c9)]+'.\x0a');}}function buildFilePath(_0x56f076,_0x5a730e,_0x3900f8,_0x509991){const _0x1bc53f=a30_0x102b87;if(_0x5a730e===_0x1bc53f(0x194)){if(!_0x509991)throw CliErrors[_0x1bc53f(0x18c)](_0x1bc53f(0x1a6));const _0xf6fb5b=_0x509991[_0x1bc53f(0x188)]??_0x509991['datasetCode'];return join(_0x56f076[_0x1bc53f(0x199)],_0x1bc53f(0x194),_0xf6fb5b,_0x509991[_0x1bc53f(0x1bb)],_0x509991['functionNode'],_0x3900f8+'.js');}return join(_0x56f076['scriptsRootDir'],_0x5a730e,_0x3900f8+_0x1bc53f(0x1b3));}export function generateTemplate(_0x2da1cc,_0x326322,_0x5d2e21,_0x4a9b4e,_0x43ca45){const _0x1ef82f=a30_0x102b87,_0x1c4b1c=_0x4a9b4e?.[_0x1ef82f(0x182)]()||_0x1ef82f(0x186);if(_0x2da1cc===_0x1ef82f(0x189))return _0x1ef82f(0x1c2)+_0x1c4b1c+_0x1ef82f(0x1c1)+_0x326322+_0x1ef82f(0x1ae)+_0x326322+_0x1ef82f(0x187)+_0x326322+_0x1ef82f(0x190);if(_0x2da1cc===_0x1ef82f(0x18e))return _0x1ef82f(0x1b7)+_0x1c4b1c+_0x1ef82f(0x18d)+_0x5d2e21+'/'+_0x326322+_0x1ef82f(0x1c5)+_0x326322+_0x1ef82f(0x190);if(!_0x43ca45)throw CliErrors['validation']('HOOK\x20requires\x20hookOptions\x20for\x20template\x20generation.');return _0x1ef82f(0x1af)+_0x1c4b1c+'\x0a\x20*\x20[接口路径]\x20POST\x20/api/'+_0x5d2e21+'/'+_0x43ca45[_0x1ef82f(0x19d)]+'/'+_0x43ca45['operationType']+_0x1ef82f(0x1cf)+_0x43ca45[_0x1ef82f(0x1ad)]+_0x1ef82f(0x18a)+_0x326322+_0x1ef82f(0x190);}
@@ -0,0 +1,2 @@
1
+ import type { CommandDefinition } from "../../framework/types.js";
2
+ export declare const bffDelete: CommandDefinition;
@@ -1 +1 @@
1
- const a31_0x2d64a6=a31_0x4951;(function(_0x467d59,_0xff1e78){const _0x2354ee=a31_0x4951,_0x1a37ca=_0x467d59();while(!![]){try{const _0x46883e=parseInt(_0x2354ee(0x1a5))/0x1*(parseInt(_0x2354ee(0x1c5))/0x2)+parseInt(_0x2354ee(0x1c6))/0x3*(parseInt(_0x2354ee(0x1a2))/0x4)+parseInt(_0x2354ee(0x1b2))/0x5*(parseInt(_0x2354ee(0x1b5))/0x6)+parseInt(_0x2354ee(0x1a0))/0x7*(parseInt(_0x2354ee(0x199))/0x8)+parseInt(_0x2354ee(0x1b3))/0x9*(-parseInt(_0x2354ee(0x1c2))/0xa)+-parseInt(_0x2354ee(0x1a6))/0xb+-parseInt(_0x2354ee(0x1b0))/0xc;if(_0x46883e===_0xff1e78)break;else _0x1a37ca['push'](_0x1a37ca['shift']());}catch(_0x27346d){_0x1a37ca['push'](_0x1a37ca['shift']());}}}(a31_0x5d54,0xa18fc));import{mkdir,readdir,rename,rmdir}from'node:fs/promises';import{dirname,join,relative,resolve,sep}from'node:path';import{deleteBffScript}from'../../core/api-client.js';import{loadBffProjectConfig}from'../../core/bff/config.js';function a31_0x4951(_0x549da2,_0x590b05){_0x549da2=_0x549da2-0x194;const _0x5d5482=a31_0x5d54();let _0x4951ec=_0x5d5482[_0x549da2];return _0x4951ec;}import{fileExists,resolveLocalFilePathFromLockKey}from'../../core/bff/file-system.js';function a31_0x5d54(){const _0x5f4fd8=['36909PHaAzC','str','11574jXcPay','lockFilePath','startsWith','filter','\x20(local\x20file\x20moved\x20to\x20trash)','toISOString','replace','trashedTo','delete','length','functions','target','validation','1130YESLFx','Deleted\x20','\x20from\x20remote\x20and\x20move\x20local\x20file\x20to\x20trash','116966JrHCna','417gFcEbV','remoteId','POST','projectRoot','Lock\x20key\x20(e.g.\x20ENDPOINT/createOrder)\x20or\x20short\x20function\x20name','join','BFF\x20lock\x20file\x20not\x20found.\x20Run\x20`push`\x20or\x20`pull`\x20first\x20to\x20initialize\x20sync\x20state.','5816ORjXNY','scriptsRootDir','Local\x20delete\x20not\x20settled\x20for\x20','apps','scriptsRoot','<timestamp>','Function\x20not\x20found:\x20','7385JeUrOV','trashDir','37588vuHawN','map','BFF\x20lock\x20file\x20not\x20found.','7bovCxK','8703596gsewQg','/api/management/library/scripts/delete','find','keys','No\x20lock\x20entry\x20found\x20for\x20\x22','lastSync','bff','\x22\x20not\x20found\x20after\x20ensureLockScope.','stringify','appCode','10590000axotJa','split','820MfUrUy'];a31_0x5d54=function(){return _0x5f4fd8;};return a31_0x5d54();}import{ensureLockScope,readBffLockFile,writeBffLockFile}from'../../core/bff/lock.js';import{CliErrors}from'../../errors.js';import{sleep}from'../../utils/sleep.js';export const bffDelete={'service':a31_0x2d64a6(0x1ac),'command':'delete','description':'Delete\x20a\x20BFF\x20script\x20from\x20remote\x20and\x20local','risk':'high-risk-write','flags':[{'name':'target','type':'string','required':!![],'description':a31_0x2d64a6(0x196)}],async 'validate'(_0x13c18b){const _0xebf5a0=a31_0x2d64a6,_0x19ff57=loadBffProjectConfig(_0x13c18b[_0xebf5a0(0x1af)]),_0x48b1d0=await readBffLockFile(_0x19ff57[_0xebf5a0(0x1b6)]);if(!_0x48b1d0)throw CliErrors[_0xebf5a0(0x1c1)](_0xebf5a0(0x198));},async 'dryRun'(_0x19400b){const _0x22696d=a31_0x2d64a6,_0x803b02=loadBffProjectConfig(_0x19400b[_0x22696d(0x1af)]),_0x442bf6=await readBffLockFile(_0x803b02[_0x22696d(0x1b6)]);if(!_0x442bf6)throw CliErrors['validation'](_0x22696d(0x1a4));const {appLock:_0x26fafc}=ensureLockScope(_0x442bf6,_0x19400b['appCode'],_0x803b02[_0x22696d(0x19d)],_0x22696d(0x1bd)),_0x24f041=_0x19400b[_0x22696d(0x1b4)](_0x22696d(0x1c0)),_0xb3e18f=Object[_0x22696d(0x1a9)](_0x26fafc[_0x22696d(0x1bf)]),_0x59fbac=resolveDeleteTarget(_0x24f041,_0xb3e18f),_0x56ec7b=_0x26fafc[_0x22696d(0x1bf)][_0x59fbac];if(!_0x56ec7b)throw CliErrors['validation'](_0x22696d(0x1aa)+_0x59fbac+'\x22.');const _0x5b9d46=resolveLocalFilePathFromLockKey(_0x803b02,_0x59fbac),_0x1a69b8=relative(_0x803b02[_0x22696d(0x195)],_0x5b9d46),_0x1659f4=join(_0x803b02[_0x22696d(0x1a1)],_0x22696d(0x19e),_0x1a69b8);return{'method':_0x22696d(0x194),'url':_0x22696d(0x1a7),'body':{'appCode':_0x19400b['appCode'],'target':_0x59fbac,'remoteId':_0x56ec7b[_0x22696d(0x1c7)],'localFilePath':_0x5b9d46,'trashedPath':_0x1659f4},'description':'Would\x20delete\x20'+_0x59fbac+_0x22696d(0x1c4)};},async 'execute'(_0x13d211){const _0x117daf=a31_0x2d64a6,_0x1ddcfa=loadBffProjectConfig(_0x13d211[_0x117daf(0x1af)]),_0x5827ce=await readBffLockFile(_0x1ddcfa['lockFilePath']);if(!_0x5827ce)throw CliErrors[_0x117daf(0x1c1)](_0x117daf(0x1a4));const {lockData:_0x3f70a4,appLock:_0x1b35c2}=ensureLockScope(_0x5827ce,_0x13d211[_0x117daf(0x1af)],_0x1ddcfa[_0x117daf(0x19d)],'delete'),_0xbfb729=JSON['parse'](JSON[_0x117daf(0x1ae)](_0x3f70a4)),_0x47fc9d=_0xbfb729[_0x117daf(0x19c)][_0x13d211[_0x117daf(0x1af)]];if(!_0x47fc9d)throw new Error('Lock\x20scope\x20for\x20app\x20\x22'+_0x13d211['appCode']+_0x117daf(0x1ad));const _0x4f42d3=_0x13d211[_0x117daf(0x1b4)](_0x117daf(0x1c0)),_0x1c32b5=Object[_0x117daf(0x1a9)](_0x47fc9d[_0x117daf(0x1bf)]),_0x19519e=resolveDeleteTarget(_0x4f42d3,_0x1c32b5),_0x2b05d9=_0x47fc9d[_0x117daf(0x1bf)][_0x19519e];if(!_0x2b05d9)throw CliErrors['validation'](_0x117daf(0x1aa)+_0x19519e+'\x22.');await deleteBffScript(_0x2b05d9[_0x117daf(0x1c7)]),delete _0x47fc9d['functions'][_0x19519e],_0x47fc9d[_0x117daf(0x1ab)]=new Date()[_0x117daf(0x1ba)](),await writeBffLockFile(_0x1ddcfa[_0x117daf(0x1b6)],_0xbfb729);const _0x3301e0=resolveLocalFilePathFromLockKey(_0x1ddcfa,_0x19519e);let _0x35bb1f;await fileExists(_0x3301e0)&&(_0x35bb1f=await moveToTrash(_0x1ddcfa[_0x117daf(0x195)],_0x1ddcfa[_0x117daf(0x1a1)],_0x3301e0),await cleanupEmptyDirectories(dirname(_0x3301e0),_0x1ddcfa[_0x117daf(0x19a)]));await waitForDeleteSettlement(_0x1ddcfa[_0x117daf(0x1b6)],_0x13d211[_0x117daf(0x1af)],_0x19519e,_0x3301e0),await sleep(0x96);const _0x3ec660={'deleted':_0x19519e,'remoteId':_0x2b05d9[_0x117daf(0x1c7)]};if(_0x35bb1f)_0x3ec660[_0x117daf(0x1bc)]=_0x35bb1f;return{'ok':!![],'data':_0x3ec660,'message':_0x117daf(0x1c3)+_0x19519e+(_0x35bb1f?_0x117daf(0x1b9):'')};}};function resolveDeleteTarget(_0x394c83,_0x20c399){const _0x43f3d8=a31_0x2d64a6;if(_0x394c83['includes']('/')){const _0x45d542=_0x20c399[_0x43f3d8(0x1a8)](_0x2f3625=>_0x2f3625===_0x394c83);if(!_0x45d542)throw CliErrors[_0x43f3d8(0x1c1)](_0x43f3d8(0x19f)+_0x394c83);return _0x45d542;}const _0x431dec=_0x20c399[_0x43f3d8(0x1b8)](_0x310e9b=>_0x310e9b[_0x43f3d8(0x1b1)]('/')['at'](-0x1)===_0x394c83);if(_0x431dec[_0x43f3d8(0x1be)]===0x0)throw CliErrors[_0x43f3d8(0x1c1)](_0x43f3d8(0x19f)+_0x394c83);if(_0x431dec[_0x43f3d8(0x1be)]>0x1)throw CliErrors[_0x43f3d8(0x1c1)]('Multiple\x20functions\x20match\x20\x22'+_0x394c83+'\x22.\x20Use\x20the\x20full\x20lock\x20key:\x0a'+_0x431dec[_0x43f3d8(0x1a3)](_0x544bf0=>'\x20\x20-\x20'+_0x544bf0)[_0x43f3d8(0x197)]('\x0a'));return _0x431dec[0x0];}async function moveToTrash(_0x2ead8f,_0x35c763,_0x3cc70f){const _0x43494d=a31_0x2d64a6,_0x29e24b=new Date()[_0x43494d(0x1ba)]()[_0x43494d(0x1bb)](/[:.]/g,'-'),_0x51a057=relative(_0x2ead8f,_0x3cc70f),_0x5cc082=join(_0x35c763,_0x29e24b,_0x51a057);return await mkdir(dirname(_0x5cc082),{'recursive':!![]}),await rename(_0x3cc70f,_0x5cc082),_0x5cc082;}async function cleanupEmptyDirectories(_0x37ca89,_0x3fb8fd){const _0x30cd87=a31_0x2d64a6;let _0x44a4b4=resolve(_0x37ca89);const _0x36449b=resolve(_0x3fb8fd);while(_0x44a4b4[_0x30cd87(0x1b7)](''+_0x36449b+sep)||_0x44a4b4===_0x36449b){if(_0x44a4b4===_0x36449b)return;try{const _0x2ec4d2=await readdir(_0x44a4b4);if(_0x2ec4d2[_0x30cd87(0x1be)]>0x0)return;await rmdir(_0x44a4b4);}catch{return;}_0x44a4b4=dirname(_0x44a4b4);}}const DELETE_SETTLE_RETRY_COUNT=0x14,DELETE_SETTLE_DELAY_MS=0x64;async function waitForDeleteSettlement(_0x52ad92,_0x1f58dd,_0x28cfe6,_0x3a1ec1){const _0x18a436=a31_0x2d64a6;for(let _0x23e4c7=0x0;_0x23e4c7<DELETE_SETTLE_RETRY_COUNT;_0x23e4c7+=0x1){const _0x569510=await readBffLockFile(_0x52ad92),_0x7a1c4f=!!_0x569510?.[_0x18a436(0x19c)]?.[_0x1f58dd]?.[_0x18a436(0x1bf)]?.[_0x28cfe6],_0x397153=await fileExists(_0x3a1ec1);if(!_0x7a1c4f&&!_0x397153)return;await sleep(DELETE_SETTLE_DELAY_MS);}throw new Error(_0x18a436(0x19b)+_0x28cfe6+'.');}
1
+ const a31_0x3f4b6e=a31_0x45f0;(function(_0x63e67e,_0x1bf61c){const _0x40d481=a31_0x45f0,_0x127228=_0x63e67e();while(!![]){try{const _0x213fb8=-parseInt(_0x40d481(0x130))/0x1*(-parseInt(_0x40d481(0x13e))/0x2)+-parseInt(_0x40d481(0x12b))/0x3+parseInt(_0x40d481(0x157))/0x4+parseInt(_0x40d481(0x14a))/0x5+-parseInt(_0x40d481(0x12e))/0x6*(parseInt(_0x40d481(0x132))/0x7)+-parseInt(_0x40d481(0x133))/0x8+parseInt(_0x40d481(0x158))/0x9;if(_0x213fb8===_0x1bf61c)break;else _0x127228['push'](_0x127228['shift']());}catch(_0x2090c2){_0x127228['push'](_0x127228['shift']());}}}(a31_0xa984,0x283da));import{mkdir,readdir,rename,rmdir}from'node:fs/promises';import{dirname,join,relative,resolve,sep}from'node:path';import{deleteBffScript}from'../../core/api-client.js';function a31_0x45f0(_0x548eb8,_0x34252a){_0x548eb8=_0x548eb8-0x127;const _0xa98410=a31_0xa984();let _0x45f054=_0xa98410[_0x548eb8];return _0x45f054;}import{loadBffProjectConfig}from'../../core/bff/config.js';import{fileExists,resolveLocalFilePathFromLockKey}from'../../core/bff/file-system.js';import{ensureLockScope,readBffLockFile,writeBffLockFile}from'../../core/bff/lock.js';import{CliErrors}from'../../errors.js';import{sleep}from'../../utils/sleep.js';export const bffDelete={'service':a31_0x3f4b6e(0x14f),'command':'delete','description':a31_0x3f4b6e(0x136),'risk':'high-risk-write','flags':[{'name':a31_0x3f4b6e(0x13f),'type':a31_0x3f4b6e(0x14c),'required':!![],'description':a31_0x3f4b6e(0x127)}],async 'validate'(_0x23d9e6){const _0x3c7cdb=a31_0x3f4b6e,_0x49cf59=loadBffProjectConfig(_0x23d9e6['appCode']),_0x2b5bfd=await readBffLockFile(_0x49cf59[_0x3c7cdb(0x156)]);if(!_0x2b5bfd)throw CliErrors['validation']('BFF\x20lock\x20file\x20not\x20found.\x20Run\x20`push`\x20or\x20`pull`\x20first\x20to\x20initialize\x20sync\x20state.');},async 'dryRun'(_0x3a610e){const _0x182782=a31_0x3f4b6e,_0x42f228=loadBffProjectConfig(_0x3a610e['appCode']),_0x1deaf5=await readBffLockFile(_0x42f228['lockFilePath']);if(!_0x1deaf5)throw CliErrors[_0x182782(0x12c)](_0x182782(0x128));const {appLock:_0x36639c}=ensureLockScope(_0x1deaf5,_0x3a610e['appCode'],_0x42f228[_0x182782(0x139)],'delete'),_0x44c06f=_0x3a610e['str'](_0x182782(0x13f)),_0x2832b3=Object[_0x182782(0x153)](_0x36639c[_0x182782(0x150)]),_0x580bf1=resolveDeleteTarget(_0x44c06f,_0x2832b3),_0xa418c4=_0x36639c[_0x182782(0x150)][_0x580bf1];if(!_0xa418c4)throw CliErrors['validation'](_0x182782(0x142)+_0x580bf1+'\x22.');const _0xe4850d=resolveLocalFilePathFromLockKey(_0x42f228,_0x580bf1),_0x1bcb89=relative(_0x42f228[_0x182782(0x148)],_0xe4850d),_0x5cf80e=join(_0x42f228['trashDir'],_0x182782(0x13d),_0x1bcb89);return{'method':_0x182782(0x134),'url':_0x182782(0x146),'body':{'appCode':_0x3a610e[_0x182782(0x154)],'target':_0x580bf1,'remoteId':_0xa418c4['remoteId'],'localFilePath':_0xe4850d,'trashedPath':_0x5cf80e},'description':_0x182782(0x140)+_0x580bf1+_0x182782(0x151)};},async 'execute'(_0x1db95e){const _0x54a25a=a31_0x3f4b6e,_0x8b0b08=loadBffProjectConfig(_0x1db95e['appCode']),_0x2fce7c=await readBffLockFile(_0x8b0b08['lockFilePath']);if(!_0x2fce7c)throw CliErrors[_0x54a25a(0x12c)](_0x54a25a(0x128));const {lockData:_0x3783da,appLock:_0x3b38c4}=ensureLockScope(_0x2fce7c,_0x1db95e[_0x54a25a(0x154)],_0x8b0b08['scriptsRoot'],_0x54a25a(0x138)),_0x40ca4c=JSON[_0x54a25a(0x147)](JSON[_0x54a25a(0x145)](_0x3783da)),_0x210d7b=_0x40ca4c[_0x54a25a(0x149)][_0x1db95e[_0x54a25a(0x154)]];if(!_0x210d7b)throw new Error(_0x54a25a(0x13c)+_0x1db95e[_0x54a25a(0x154)]+_0x54a25a(0x12d));const _0x2f42d2=_0x1db95e[_0x54a25a(0x155)](_0x54a25a(0x13f)),_0x72e730=Object['keys'](_0x210d7b[_0x54a25a(0x150)]),_0x39ab91=resolveDeleteTarget(_0x2f42d2,_0x72e730),_0x44f3ae=_0x210d7b[_0x54a25a(0x150)][_0x39ab91];if(!_0x44f3ae)throw CliErrors[_0x54a25a(0x12c)](_0x54a25a(0x142)+_0x39ab91+'\x22.');await deleteBffScript(_0x44f3ae[_0x54a25a(0x13a)]),delete _0x210d7b['functions'][_0x39ab91],_0x210d7b[_0x54a25a(0x135)]=new Date()[_0x54a25a(0x159)](),await writeBffLockFile(_0x8b0b08[_0x54a25a(0x156)],_0x40ca4c);const _0x35741b=resolveLocalFilePathFromLockKey(_0x8b0b08,_0x39ab91);let _0x5bc9de;await fileExists(_0x35741b)&&(_0x5bc9de=await moveToTrash(_0x8b0b08[_0x54a25a(0x148)],_0x8b0b08[_0x54a25a(0x129)],_0x35741b),await cleanupEmptyDirectories(dirname(_0x35741b),_0x8b0b08['scriptsRootDir']));await waitForDeleteSettlement(_0x8b0b08[_0x54a25a(0x156)],_0x1db95e['appCode'],_0x39ab91,_0x35741b),await sleep(0x96);const _0x148b04={'deleted':_0x39ab91,'remoteId':_0x44f3ae['remoteId']};if(_0x5bc9de)_0x148b04[_0x54a25a(0x137)]=_0x5bc9de;return{'ok':!![],'data':_0x148b04,'message':_0x54a25a(0x15a)+_0x39ab91+(_0x5bc9de?_0x54a25a(0x141):'')};}};function resolveDeleteTarget(_0x4624f2,_0x190e0d){const _0x1f529f=a31_0x3f4b6e;if(_0x4624f2[_0x1f529f(0x12a)]('/')){const _0x433711=_0x190e0d[_0x1f529f(0x143)](_0x15c3c7=>_0x15c3c7===_0x4624f2);if(!_0x433711)throw CliErrors[_0x1f529f(0x12c)](_0x1f529f(0x14d)+_0x4624f2);return _0x433711;}const _0xa392f=_0x190e0d[_0x1f529f(0x152)](_0x5a439c=>_0x5a439c['split']('/')['at'](-0x1)===_0x4624f2);if(_0xa392f[_0x1f529f(0x144)]===0x0)throw CliErrors[_0x1f529f(0x12c)](_0x1f529f(0x14d)+_0x4624f2);if(_0xa392f[_0x1f529f(0x144)]>0x1)throw CliErrors[_0x1f529f(0x12c)](_0x1f529f(0x13b)+_0x4624f2+'\x22.\x20Use\x20the\x20full\x20lock\x20key:\x0a'+_0xa392f[_0x1f529f(0x14e)](_0x523faa=>_0x1f529f(0x14b)+_0x523faa)['join']('\x0a'));return _0xa392f[0x0];}async function moveToTrash(_0xd45c01,_0x24873b,_0x261f5f){const _0x2873af=a31_0x3f4b6e,_0x463863=new Date()['toISOString']()[_0x2873af(0x131)](/[:.]/g,'-'),_0x248775=relative(_0xd45c01,_0x261f5f),_0x436945=join(_0x24873b,_0x463863,_0x248775);return await mkdir(dirname(_0x436945),{'recursive':!![]}),await rename(_0x261f5f,_0x436945),_0x436945;}async function cleanupEmptyDirectories(_0x561e1c,_0x485593){const _0xabae1b=a31_0x3f4b6e;let _0x2bdd7a=resolve(_0x561e1c);const _0x2b217f=resolve(_0x485593);while(_0x2bdd7a[_0xabae1b(0x12f)](''+_0x2b217f+sep)||_0x2bdd7a===_0x2b217f){if(_0x2bdd7a===_0x2b217f)return;try{const _0x34257f=await readdir(_0x2bdd7a);if(_0x34257f[_0xabae1b(0x144)]>0x0)return;await rmdir(_0x2bdd7a);}catch{return;}_0x2bdd7a=dirname(_0x2bdd7a);}}const DELETE_SETTLE_RETRY_COUNT=0x14,DELETE_SETTLE_DELAY_MS=0x64;async function waitForDeleteSettlement(_0x3909b7,_0x4439d7,_0x40087b,_0x304c65){const _0x5e9ddb=a31_0x3f4b6e;for(let _0x41e4b4=0x0;_0x41e4b4<DELETE_SETTLE_RETRY_COUNT;_0x41e4b4+=0x1){const _0xdbba90=await readBffLockFile(_0x3909b7),_0x232d0a=!!_0xdbba90?.[_0x5e9ddb(0x149)]?.[_0x4439d7]?.['functions']?.[_0x40087b],_0x139e99=await fileExists(_0x304c65);if(!_0x232d0a&&!_0x139e99)return;await sleep(DELETE_SETTLE_DELAY_MS);}throw new Error('Local\x20delete\x20not\x20settled\x20for\x20'+_0x40087b+'.');}function a31_0xa984(){const _0x20ea83=['143376SzSjSJ','validation','\x22\x20not\x20found\x20after\x20ensureLockScope.','531504PfPxme','startsWith','22416jgCOSG','replace','7gyhldT','1680304XQIMfw','POST','lastSync','Delete\x20a\x20BFF\x20script\x20from\x20remote\x20and\x20local','trashedTo','delete','scriptsRoot','remoteId','Multiple\x20functions\x20match\x20\x22','Lock\x20scope\x20for\x20app\x20\x22','<timestamp>','18HYjhbJ','target','Would\x20delete\x20','\x20(local\x20file\x20moved\x20to\x20trash)','No\x20lock\x20entry\x20found\x20for\x20\x22','find','length','stringify','/api/management/library/scripts/delete','parse','projectRoot','apps','207335xIoCFw','\x20\x20-\x20','string','Function\x20not\x20found:\x20','map','bff','functions','\x20from\x20remote\x20and\x20move\x20local\x20file\x20to\x20trash','filter','keys','appCode','str','lockFilePath','882172kAPaSa','427374xAIqYT','toISOString','Deleted\x20','Lock\x20key\x20(e.g.\x20ENDPOINT/createOrder)\x20or\x20short\x20function\x20name','BFF\x20lock\x20file\x20not\x20found.','trashDir','includes'];a31_0xa984=function(){return _0x20ea83;};return a31_0xa984();}
@@ -0,0 +1,2 @@
1
+ import type { CommandDefinition } from "../../framework/types.js";
2
+ export declare const bffDetail: CommandDefinition;
@@ -1 +1 @@
1
- const a32_0x10e839=a32_0x209a;function a32_0x209a(_0x3c7d96,_0xe8ef2a){_0x3c7d96=_0x3c7d96-0x1eb;const _0x567b96=a32_0x567b();let _0x209adf=_0x567b96[_0x3c7d96];return _0x209adf;}(function(_0x5a64bb,_0x130e49){const _0x236369=a32_0x209a,_0xb79eb8=_0x5a64bb();while(!![]){try{const _0x426908=parseInt(_0x236369(0x1f5))/0x1*(-parseInt(_0x236369(0x201))/0x2)+-parseInt(_0x236369(0x1f1))/0x3*(parseInt(_0x236369(0x202))/0x4)+-parseInt(_0x236369(0x1eb))/0x5+-parseInt(_0x236369(0x1f6))/0x6+-parseInt(_0x236369(0x1ee))/0x7+parseInt(_0x236369(0x1f0))/0x8*(parseInt(_0x236369(0x1ed))/0x9)+parseInt(_0x236369(0x1fc))/0xa*(parseInt(_0x236369(0x1ff))/0xb);if(_0x426908===_0x130e49)break;else _0xb79eb8['push'](_0xb79eb8['shift']());}catch(_0xa66da4){_0xb79eb8['push'](_0xb79eb8['shift']());}}}(a32_0x567b,0x73602));function a32_0x567b(){const _0x32b385=['5492myYqRC','4380800MLVGSh','Script\x20ID','4820337eZtTrr','21490zjsVec','updatedTime','8UuKzoa','1629odysbS','(none)','number','appCode','1CRLeHm','1323366hUDyWw','num','Get\x20BFF\x20script\x20details\x20by\x20ID','detail','bff','createdTime','100HVWPOi','Return\x20full\x20raw\x20script\x20object','verbose','2378948yTAmHm','read','760730lRIMrO'];a32_0x567b=function(){return _0x32b385;};return a32_0x567b();}import{getBffScriptInfo}from'../../core/api-client.js';export const bffDetail={'service':a32_0x10e839(0x1fa),'command':a32_0x10e839(0x1f9),'description':a32_0x10e839(0x1f8),'risk':a32_0x10e839(0x200),'flags':[{'name':'id','type':a32_0x10e839(0x1f3),'required':!![],'description':a32_0x10e839(0x1ec)},{'name':'verbose','type':'boolean','description':a32_0x10e839(0x1fd)}],async 'execute'(_0x350f5a){const _0x2a39b9=a32_0x10e839,_0xbb9e1=await getBffScriptInfo(_0x350f5a[_0x2a39b9(0x1f7)]('id')),_0xe29f35=_0x350f5a['bool'](_0x2a39b9(0x1fe));if(_0xe29f35)return{'ok':!![],'data':_0xbb9e1};return{'ok':!![],'data':{'id':_0xbb9e1['id'],'appCode':_0xbb9e1[_0x2a39b9(0x1f4)],'scriptType':_0xbb9e1['scriptType'],'description':_0xbb9e1['description']||_0x2a39b9(0x1f2),'createdTime':_0xbb9e1[_0x2a39b9(0x1fb)]??'','updatedTime':_0xbb9e1[_0x2a39b9(0x1ef)]??'','scriptContent':_0xbb9e1['scriptContent']??''}};}};
1
+ function a32_0x9c62(_0x1b041e,_0x4cd93c){_0x1b041e=_0x1b041e-0x13c;const _0x4b2dee=a32_0x4b2d();let _0x9c62=_0x4b2dee[_0x1b041e];return _0x9c62;}const a32_0x271085=a32_0x9c62;(function(_0x5a3d80,_0x55214f){const _0x160c82=a32_0x9c62,_0x5c0d98=_0x5a3d80();while(!![]){try{const _0x12dbc9=parseInt(_0x160c82(0x143))/0x1*(parseInt(_0x160c82(0x146))/0x2)+-parseInt(_0x160c82(0x147))/0x3+parseInt(_0x160c82(0x152))/0x4*(-parseInt(_0x160c82(0x144))/0x5)+parseInt(_0x160c82(0x13e))/0x6+-parseInt(_0x160c82(0x150))/0x7*(-parseInt(_0x160c82(0x148))/0x8)+-parseInt(_0x160c82(0x14f))/0x9+-parseInt(_0x160c82(0x13c))/0xa*(-parseInt(_0x160c82(0x153))/0xb);if(_0x12dbc9===_0x55214f)break;else _0x5c0d98['push'](_0x5c0d98['shift']());}catch(_0x3ca82c){_0x5c0d98['push'](_0x5c0d98['shift']());}}}(a32_0x4b2d,0xbc1f9));import{getBffScriptInfo}from'../../core/api-client.js';export const bffDetail={'service':'bff','command':a32_0x271085(0x13f),'description':a32_0x271085(0x13d),'risk':a32_0x271085(0x14a),'flags':[{'name':'id','type':a32_0x271085(0x14c),'required':!![],'description':a32_0x271085(0x151)},{'name':'verbose','type':a32_0x271085(0x14b),'description':a32_0x271085(0x149)}],async 'execute'(_0x2045f2){const _0x51d9f3=a32_0x271085,_0x51509e=await getBffScriptInfo(_0x2045f2['num']('id')),_0x168450=_0x2045f2[_0x51d9f3(0x141)](_0x51d9f3(0x145));if(_0x168450)return{'ok':!![],'data':_0x51509e};return{'ok':!![],'data':{'id':_0x51509e['id'],'appCode':_0x51509e['appCode'],'scriptType':_0x51509e['scriptType'],'description':_0x51509e['description']||_0x51d9f3(0x142),'createdTime':_0x51509e[_0x51d9f3(0x14d)]??'','updatedTime':_0x51509e[_0x51d9f3(0x140)]??'','scriptContent':_0x51509e[_0x51d9f3(0x14e)]??''}};}};function a32_0x4b2d(){const _0x213058=['4382901HhNmly','553JCMHLw','Script\x20ID','10784pMlYsc','2424037SsvCAK','70yBdZtD','Get\x20BFF\x20script\x20details\x20by\x20ID','577488cmrbhS','detail','updatedTime','bool','(none)','2sWrNQK','95HNNTtI','verbose','172502NOVhtO','1833297MCOBpc','10992vUOJkm','Return\x20full\x20raw\x20script\x20object','read','boolean','number','createdTime','scriptContent'];a32_0x4b2d=function(){return _0x213058;};return a32_0x4b2d();}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * bff 命令组 —— 声明式命令定义导出
3
+ */
4
+ import type { CommandDefinition } from "../../framework/types.js";
5
+ export declare const bffDefinitions: CommandDefinition[];
@@ -1 +1 @@
1
- function a33_0x1ad1(){const _0x4d191e=['14989vAfsrh','849000yGHjKF','7792pVUPig','419592RbaKqN','8aTKRBf','3171830XGSZfS','1085013xwhuuP','1498068Qdvope','52JxOWwH','91eaVAnq','30nqRZhy'];a33_0x1ad1=function(){return _0x4d191e;};return a33_0x1ad1();}(function(_0x29fb38,_0x49b0e1){const _0x4291e9=a33_0x56a1,_0x4a5279=_0x29fb38();while(!![]){try{const _0x135943=-parseInt(_0x4291e9(0x10f))/0x1*(-parseInt(_0x4291e9(0x10c))/0x2)+-parseInt(_0x4291e9(0x107))/0x3*(parseInt(_0x4291e9(0x108))/0x4)+parseInt(_0x4291e9(0x109))/0x5+-parseInt(_0x4291e9(0x110))/0x6+-parseInt(_0x4291e9(0x10d))/0x7*(-parseInt(_0x4291e9(0x106))/0x8)+parseInt(_0x4291e9(0x10a))/0x9*(-parseInt(_0x4291e9(0x10e))/0xa)+parseInt(_0x4291e9(0x10b))/0xb;if(_0x135943===_0x49b0e1)break;else _0x4a5279['push'](_0x4a5279['shift']());}catch(_0x3a246){_0x4a5279['push'](_0x4a5279['shift']());}}}(a33_0x1ad1,0x5f38f));function a33_0x56a1(_0x52f561,_0x26a773){_0x52f561=_0x52f561-0x106;const _0x1ad19e=a33_0x1ad1();let _0x56a1c3=_0x1ad19e[_0x52f561];return _0x56a1c3;}import{bffList}from'../../commands/bff/list.js';import{bffDetail}from'../../commands/bff/detail.js';import{bffStatus}from'../../commands/bff/status.js';import{bffCreate}from'../../commands/bff/create.js';import{bffPush}from'../../commands/bff/push.js';import{bffPull}from'../../commands/bff/pull.js';import{bffDelete}from'../../commands/bff/delete.js';export const bffDefinitions=[bffList,bffDetail,bffStatus,bffCreate,bffPush,bffPull,bffDelete];
1
+ (function(_0x888702,_0x3f5981){const _0x4351cc=a33_0x135b,_0x2b31c8=_0x888702();while(!![]){try{const _0x1e9083=parseInt(_0x4351cc(0x16d))/0x1+-parseInt(_0x4351cc(0x16e))/0x2+-parseInt(_0x4351cc(0x174))/0x3+parseInt(_0x4351cc(0x171))/0x4*(-parseInt(_0x4351cc(0x16c))/0x5)+-parseInt(_0x4351cc(0x170))/0x6*(parseInt(_0x4351cc(0x173))/0x7)+parseInt(_0x4351cc(0x16b))/0x8+-parseInt(_0x4351cc(0x16f))/0x9*(-parseInt(_0x4351cc(0x172))/0xa);if(_0x1e9083===_0x3f5981)break;else _0x2b31c8['push'](_0x2b31c8['shift']());}catch(_0x2da50f){_0x2b31c8['push'](_0x2b31c8['shift']());}}}(a33_0x1e92,0x6e608));import{bffList}from'../../commands/bff/list.js';import{bffDetail}from'../../commands/bff/detail.js';import{bffStatus}from'../../commands/bff/status.js';import{bffCreate}from'../../commands/bff/create.js';import{bffPush}from'../../commands/bff/push.js';import{bffPull}from'../../commands/bff/pull.js';import{bffDelete}from'../../commands/bff/delete.js';function a33_0x135b(_0x53dcf5,_0x329cf8){_0x53dcf5=_0x53dcf5-0x16b;const _0x1e921f=a33_0x1e92();let _0x135b24=_0x1e921f[_0x53dcf5];return _0x135b24;}export const bffDefinitions=[bffList,bffDetail,bffStatus,bffCreate,bffPush,bffPull,bffDelete];function a33_0x1e92(){const _0x6b3f81=['261LjqquI','4176KymjZe','4DDlzwr','770410GkQMQx','8071qYycPx','95163BhgEmy','646240rCbANd','1271915DVqCYW','94882XBCAgt','1738310ADqzMT'];a33_0x1e92=function(){return _0x6b3f81;};return a33_0x1e92();}
@@ -0,0 +1,2 @@
1
+ import type { CommandDefinition } from "../../framework/types.js";
2
+ export declare const bffList: CommandDefinition;
@@ -1 +1 @@
1
- const a34_0x29916e=a34_0x1e3f;(function(_0x3abd26,_0x2ead58){const _0x5de506=a34_0x1e3f,_0x12301e=_0x3abd26();while(!![]){try{const _0x2f395c=-parseInt(_0x5de506(0x17a))/0x1*(parseInt(_0x5de506(0x174))/0x2)+parseInt(_0x5de506(0x178))/0x3*(parseInt(_0x5de506(0x17f))/0x4)+parseInt(_0x5de506(0x181))/0x5+parseInt(_0x5de506(0x175))/0x6*(parseInt(_0x5de506(0x184))/0x7)+-parseInt(_0x5de506(0x17c))/0x8+-parseInt(_0x5de506(0x16c))/0x9+parseInt(_0x5de506(0x17e))/0xa;if(_0x2f395c===_0x2ead58)break;else _0x12301e['push'](_0x12301e['shift']());}catch(_0x194bce){_0x12301e['push'](_0x12301e['shift']());}}}(a34_0x1c61,0xc44ec));function a34_0x1e3f(_0x3607fd,_0x130109){_0x3607fd=_0x3607fd-0x169;const _0x1c6103=a34_0x1c61();let _0x1e3f2e=_0x1c6103[_0x3607fd];return _0x1e3f2e;}import{listBffScripts}from'../../core/api-client.js';export const bffList={'service':a34_0x29916e(0x177),'command':a34_0x29916e(0x182),'description':'List\x20BFF\x20scripts','risk':'read','flags':[{'name':'type','type':a34_0x29916e(0x169),'description':a34_0x29916e(0x170),'default':a34_0x29916e(0x176),'enum':[a34_0x29916e(0x176),'COMMON']},{'name':a34_0x29916e(0x16a),'type':a34_0x29916e(0x169),'description':a34_0x29916e(0x171)},{'name':'verbose','type':a34_0x29916e(0x180),'description':'Return\x20full\x20script\x20objects'}],async 'execute'(_0x4e79c7){const _0xf1743a=a34_0x29916e,_0x3ec5d0=await listBffScripts(_0x4e79c7[_0xf1743a(0x16d)],_0x4e79c7['str'](_0xf1743a(0x16b)),{'scriptName':_0x4e79c7[_0xf1743a(0x16e)](_0xf1743a(0x16a))||undefined}),_0x32f22c=_0x4e79c7[_0xf1743a(0x16f)](_0xf1743a(0x172));return{'ok':!![],'data':_0x32f22c?_0x3ec5d0:_0x3ec5d0[_0xf1743a(0x183)](_0x498413=>({'id':_0x498413['id'],'functionName':_0x498413[_0xf1743a(0x17b)]??'','description':_0x498413['description']||_0xf1743a(0x17d),'scriptType':_0x498413['scriptType']})),'message':_0x3ec5d0[_0xf1743a(0x173)]===0x0?_0xf1743a(0x179):undefined};}};function a34_0x1c61(){const _0x3395c2=['1883697TcRqfh','No\x20BFF\x20scripts\x20found.','370037RbUSkf','functionName','11359032ZphOEX','(unnamed)','11698040VuUHXb','8VUByUQ','boolean','4359775PPvQKW','list','map','63pidqYb','string','name','type','3414411iDgaNE','appCode','str','bool','Script\x20type\x20filter','Filter\x20by\x20script\x20name','verbose','length','8vpDoPW','523950wnwmum','ENDPOINT','bff'];a34_0x1c61=function(){return _0x3395c2;};return a34_0x1c61();}
1
+ const a34_0x4dc76=a34_0x59a8;function a34_0x59a8(_0x550963,_0x221bed){_0x550963=_0x550963-0x198;const _0x208e2d=a34_0x208e();let _0x59a89f=_0x208e2d[_0x550963];return _0x59a89f;}(function(_0x49ed46,_0x33dca1){const _0x49d051=a34_0x59a8,_0x12f1f4=_0x49ed46();while(!![]){try{const _0x4758cc=-parseInt(_0x49d051(0x1a4))/0x1+parseInt(_0x49d051(0x1ac))/0x2*(parseInt(_0x49d051(0x1b6))/0x3)+parseInt(_0x49d051(0x19f))/0x4*(-parseInt(_0x49d051(0x1a5))/0x5)+parseInt(_0x49d051(0x1b7))/0x6+-parseInt(_0x49d051(0x1b2))/0x7*(parseInt(_0x49d051(0x1b3))/0x8)+-parseInt(_0x49d051(0x1ab))/0x9*(parseInt(_0x49d051(0x19e))/0xa)+parseInt(_0x49d051(0x1a3))/0xb;if(_0x4758cc===_0x33dca1)break;else _0x12f1f4['push'](_0x12f1f4['shift']());}catch(_0x47c669){_0x12f1f4['push'](_0x12f1f4['shift']());}}}(a34_0x208e,0x32d3f));import{listBffScripts}from'../../core/api-client.js';function a34_0x208e(){const _0x3c7c6f=['17710EoIjFL','name','length','appCode','scriptType','description','9eXhsui','114888cCzBSc','str','functionName','map','Return\x20full\x20script\x20objects','verbose','64029ldZbnT','168voiOYp','ENDPOINT','Filter\x20by\x20script\x20name','21aVQKmq','2273214LSxGQl','string','bool','COMMON','List\x20BFF\x20scripts','list','(unnamed)','1859080pDLQmk','40aDuEWv','boolean','read','type','562452NupJZX','210503tryERu'];a34_0x208e=function(){return _0x3c7c6f;};return a34_0x208e();}export const bffList={'service':'bff','command':a34_0x4dc76(0x19c),'description':a34_0x4dc76(0x19b),'risk':a34_0x4dc76(0x1a1),'flags':[{'name':a34_0x4dc76(0x1a2),'type':a34_0x4dc76(0x198),'description':'Script\x20type\x20filter','default':'ENDPOINT','enum':[a34_0x4dc76(0x1b4),a34_0x4dc76(0x19a)]},{'name':a34_0x4dc76(0x1a6),'type':a34_0x4dc76(0x198),'description':a34_0x4dc76(0x1b5)},{'name':'verbose','type':a34_0x4dc76(0x1a0),'description':a34_0x4dc76(0x1b0)}],async 'execute'(_0x20d95a){const _0x38a767=a34_0x4dc76,_0x42d1b2=await listBffScripts(_0x20d95a[_0x38a767(0x1a8)],_0x20d95a[_0x38a767(0x1ad)](_0x38a767(0x1a2)),{'scriptName':_0x20d95a['str'](_0x38a767(0x1a6))||undefined}),_0x14decd=_0x20d95a[_0x38a767(0x199)](_0x38a767(0x1b1));return{'ok':!![],'data':_0x14decd?_0x42d1b2:_0x42d1b2[_0x38a767(0x1af)](_0x4c6729=>({'id':_0x4c6729['id'],'functionName':_0x4c6729[_0x38a767(0x1ae)]??'','description':_0x4c6729[_0x38a767(0x1aa)]||_0x38a767(0x19d),'scriptType':_0x4c6729[_0x38a767(0x1a9)]})),'message':_0x42d1b2[_0x38a767(0x1a7)]===0x0?'No\x20BFF\x20scripts\x20found.':undefined};}};
@@ -0,0 +1,2 @@
1
+ import type { CommandDefinition } from "../../framework/types.js";
2
+ export declare const bffPull: CommandDefinition;
@@ -1 +1 @@
1
- const a35_0x12d544=a35_0xf7df;(function(_0x3ac3a4,_0x390164){const _0x403a9d=a35_0xf7df,_0x1c2438=_0x3ac3a4();while(!![]){try{const _0x319081=-parseInt(_0x403a9d(0x1dc))/0x1+parseInt(_0x403a9d(0x1f1))/0x2+parseInt(_0x403a9d(0x1d6))/0x3*(parseInt(_0x403a9d(0x1c1))/0x4)+parseInt(_0x403a9d(0x1c8))/0x5+parseInt(_0x403a9d(0x1c2))/0x6+parseInt(_0x403a9d(0x1f5))/0x7+-parseInt(_0x403a9d(0x1df))/0x8;if(_0x319081===_0x390164)break;else _0x1c2438['push'](_0x1c2438['shift']());}catch(_0x21ae0a){_0x1c2438['push'](_0x1c2438['shift']());}}}(a35_0x21a0,0x1918a));function a35_0xf7df(_0x5c71a1,_0x4801ea){_0x5c71a1=_0x5c71a1-0x1bd;const _0x21a03b=a35_0x21a0();let _0xf7df7b=_0x21a03b[_0x5c71a1];return _0xf7df7b;}import{createInterface}from'node:readline';import{writeFile}from'node:fs/promises';import{listBffScripts,getBffScriptStatistics}from'../../core/api-client.js';import{loadAliasMap}from'../../core/alias-resolver.js';import{resolveApiFilePath}from'../../context.js';import{loadBffProjectConfig}from'../../core/bff/config.js';import{createHookLocationMap,ensureParentDirectory,fileExists,normalizeBffType,resolveRemoteScriptTarget}from'../../core/bff/file-system.js';import{computeContentHash,computeFileHash}from'../../core/bff/hash.js';import{createEmptyBffLock,ensureLockScope,readBffLockFile,writeBffLockFile}from'../../core/bff/lock.js';import{CliErrors}from'../../errors.js';export const bffPull={'service':a35_0x12d544(0x1e6),'command':'pull','description':a35_0x12d544(0x201),'risk':a35_0x12d544(0x1d7),'flags':[{'name':a35_0x12d544(0x1c6),'type':a35_0x12d544(0x203),'description':'Pull\x20only\x20this\x20script\x20type','enum':[a35_0x12d544(0x1eb),a35_0x12d544(0x1fa),a35_0x12d544(0x1f2)]},{'name':a35_0x12d544(0x1d2),'type':a35_0x12d544(0x1e5),'description':a35_0x12d544(0x1c3)}],async 'dryRun'(_0x13c30b){const _0x296d04=a35_0x12d544,_0x5c06bb=loadBffProjectConfig(_0x13c30b['appCode']),_0x325a1d=await readBffLockFile(_0x5c06bb['lockFilePath']),{appLock:_0xb021a}=ensureLockScope(_0x325a1d??createEmptyBffLock(),_0x13c30b[_0x296d04(0x1cc)],_0x5c06bb[_0x296d04(0x1e1)],_0x296d04(0x1e4)),_0x53c3b8=normalizeBffType(_0x13c30b[_0x296d04(0x1ea)](_0x296d04(0x1c6)))??undefined,_0x8fe88d=buildDatasetCodeToAliasMap(_0x13c30b['apiDir'],_0x13c30b[_0x296d04(0x1cc)]),[_0x397185,_0xeb6557]=await Promise['all']([listBffScripts(_0x13c30b['appCode'],_0x53c3b8),getBffScriptStatistics(_0x13c30b[_0x296d04(0x1cc)])]),_0x34e130=createHookLocationMap(_0xeb6557),_0x3f92a4=[];for(const _0x5dbdcb of _0x397185){const _0xac4b9b=resolveRemoteScriptTarget(_0x5c06bb,_0x5dbdcb,_0x34e130,_0xb021a[_0x296d04(0x1fd)],_0x8fe88d);if(!_0xac4b9b){_0x3f92a4[_0x296d04(0x1c5)]({'scriptType':_0x5dbdcb[_0x296d04(0x1da)],'functionName':_0x5dbdcb[_0x296d04(0x1fb)]??'','status':_0x296d04(0x1c0),'reason':_0x296d04(0x1cb)});continue;}const _0x2e8e0d=_0xb021a[_0x296d04(0x1fd)][_0xac4b9b[_0x296d04(0x1e3)]],_0x473208=_0x5dbdcb[_0x296d04(0x1bf)]!=null?computeContentHash(_0x5dbdcb['scriptContent']):undefined,_0x4e8fd9=await hasUnsyncedLocalChanges(_0xac4b9b[_0x296d04(0x202)],_0x2e8e0d,_0x473208);_0x3f92a4[_0x296d04(0x1c5)]({'lockKey':_0xac4b9b[_0x296d04(0x1e3)],'filePath':_0xac4b9b[_0x296d04(0x202)],'remoteId':_0x5dbdcb['id']??null,'status':_0x4e8fd9?_0x296d04(0x1be):_0x296d04(0x1fe)});}return{'method':_0x296d04(0x1d8),'url':_0x296d04(0x1ed)+_0x13c30b[_0x296d04(0x1cc)]+(_0x53c3b8?_0x296d04(0x1ef)+_0x53c3b8:''),'body':{'appCode':_0x13c30b[_0x296d04(0x1cc)],'filterType':_0x53c3b8??null,'files':_0x3f92a4},'description':_0x296d04(0x1d1)+_0x3f92a4[_0x296d04(0x1c9)]+'\x20remote\x20BFF\x20script(s)\x20for\x20pull'};},async 'execute'(_0x5c6562){const _0x209725=a35_0x12d544,_0x36fdfa=loadBffProjectConfig(_0x5c6562[_0x209725(0x1cc)]),_0x22235c=await readBffLockFile(_0x36fdfa[_0x209725(0x1ee)]),{lockData:_0x538d73,appLock:_0x92b9fa}=ensureLockScope(_0x22235c??createEmptyBffLock(),_0x5c6562[_0x209725(0x1cc)],_0x36fdfa[_0x209725(0x1e1)],_0x209725(0x1e4)),_0x4bd193=normalizeBffType(_0x5c6562[_0x209725(0x1ea)](_0x209725(0x1c6)))??undefined;if(_0x5c6562[_0x209725(0x1ea)](_0x209725(0x1c6))&&!_0x4bd193)throw CliErrors[_0x209725(0x1f7)](_0x209725(0x1de));const [_0x5ab903,_0x40dbad]=await Promise[_0x209725(0x1e0)]([listBffScripts(_0x5c6562[_0x209725(0x1cc)],_0x4bd193),getBffScriptStatistics(_0x5c6562[_0x209725(0x1cc)])]);if(_0x5ab903[_0x209725(0x1c9)]===0x0)return{'ok':!![],'data':{'pulled':[],'skipped':[],'failed':[]},'message':_0x209725(0x1cd)};const _0x107d33=_0x5c6562[_0x209725(0x1f0)](_0x209725(0x1d2));if(_0x107d33&&!_0x5c6562[_0x209725(0x1d4)]){const _0x44f340=await confirmForce();if(!_0x44f340)throw CliErrors[_0x209725(0x1f4)](_0x209725(0x1fc));}if(_0x107d33&&_0x5c6562['nonInteractive']){}const _0x2c7a3b=buildDatasetCodeToAliasMap(_0x5c6562[_0x209725(0x1ce)],_0x5c6562[_0x209725(0x1cc)]),_0x3c2abb=createHookLocationMap(_0x40dbad),_0x1115fe=JSON['parse'](JSON['stringify'](_0x538d73)),_0x8a2624=_0x5c6562[_0x209725(0x1cc)],_0x43b14b=_0x1115fe['apps'][_0x8a2624];if(!_0x43b14b)throw new Error(_0x209725(0x1d3)+_0x8a2624+'\x22\x20not\x20found\x20after\x20ensureLockScope.');const _0x5d656b=[],_0x3440aa=[],_0xc1fd1a=[];for(const _0x7148e4 of _0x5ab903){const _0x33ae38=resolveRemoteScriptTarget(_0x36fdfa,_0x7148e4,_0x3c2abb,_0x92b9fa[_0x209725(0x1fd)],_0x2c7a3b);if(!_0x33ae38){_0x3440aa[_0x209725(0x1c5)]({'lockKey':_0x7148e4[_0x209725(0x1da)]+'/'+_0x7148e4[_0x209725(0x1fb)],'reason':'unresolvable\x20target\x20path'});continue;}const _0x3b9601=_0x92b9fa['functions'][_0x33ae38[_0x209725(0x1e3)]];try{if(!_0x7148e4['id'])throw new Error(_0x209725(0x1e2));if(_0x7148e4['scriptContent']==null)throw new Error('Remote\x20script\x20missing\x20content.');const _0x1d55ec=_0x7148e4['scriptContent'],_0x418fbf=computeContentHash(_0x1d55ec);if(!_0x107d33){const _0xeda630=await hasUnsyncedLocalChanges(_0x33ae38[_0x209725(0x202)],_0x3b9601,_0x418fbf);if(_0xeda630){_0x3440aa[_0x209725(0x1c5)]({'lockKey':_0x33ae38[_0x209725(0x1e3)],'reason':_0x209725(0x1c7)});continue;}}await ensureParentDirectory(_0x33ae38[_0x209725(0x202)]),await writeFile(_0x33ae38[_0x209725(0x202)],_0x1d55ec,_0x209725(0x1d9));const _0x27bce8={'hash':_0x418fbf,'remoteId':_0x7148e4['id'],'version':_0x7148e4[_0x209725(0x1ec)]};_0x33ae38[_0x209725(0x1c6)]==='HOOK'&&_0x33ae38[_0x209725(0x1d0)]&&(_0x27bce8[_0x209725(0x1f3)]=_0x33ae38[_0x209725(0x1d0)]['alias'],_0x27bce8[_0x209725(0x1ca)]=_0x33ae38[_0x209725(0x1d0)]['datasetCode'],_0x27bce8[_0x209725(0x1e9)]=_0x33ae38[_0x209725(0x1d0)][_0x209725(0x1e9)],_0x27bce8[_0x209725(0x1f9)]=_0x33ae38['hookLocation'][_0x209725(0x1f9)]),_0x43b14b[_0x209725(0x1fd)][_0x33ae38[_0x209725(0x1e3)]]=_0x27bce8,_0x5d656b[_0x209725(0x1c5)]({'lockKey':_0x33ae38[_0x209725(0x1e3)],'remoteId':_0x7148e4['id']});}catch(_0x3a4bae){_0xc1fd1a[_0x209725(0x1c5)]({'lockKey':_0x33ae38[_0x209725(0x1e3)],'error':_0x3a4bae instanceof Error?_0x3a4bae[_0x209725(0x1e8)]:String(_0x3a4bae)});}}return _0x43b14b[_0x209725(0x1d5)]=new Date()[_0x209725(0x1ff)](),await writeBffLockFile(_0x36fdfa[_0x209725(0x1ee)],_0x1115fe),{'ok':_0xc1fd1a['length']===0x0,'data':{'pulled':_0x5d656b,'skipped':_0x3440aa,'failed':_0xc1fd1a},'message':_0x209725(0x200)+_0x5d656b['length']+'\x20pulled,\x20'+_0x3440aa[_0x209725(0x1c9)]+_0x209725(0x1dd)+_0xc1fd1a[_0x209725(0x1c9)]+'\x20failed'};}};function a35_0x21a0(){const _0x2790c2=['\x20skipped,\x20','--type\x20must\x20be\x20COMMON,\x20ENDPOINT,\x20or\x20HOOK.','4340096rNvHGc','all','scriptsRoot','Remote\x20script\x20missing\x20id.','lockKey','pull','boolean','bff','trim','message','operationType','str','COMMON','version','/api/management/library/scripts/list?appCode=','lockFilePath','&type=','bool','149526KkxGeZ','HOOK','alias','cancelled','1004549gIuZny','includes','validation','stdin','functionNode','ENDPOINT','functionName','Force\x20pull\x20cancelled.','functions','would_pull','toISOString','Pull\x20complete:\x20','Pull\x20remote\x20BFF\x20scripts\x20to\x20local','filePath','string','Force\x20pull\x20will\x20overwrite\x20local\x20unsynced\x20changes.\x20Continue?\x20[y/N]\x20','conflict','scriptContent','skipped','116wGAOEu','1140828HaKPEV','Force\x20overwrite\x20local\x20unsynced\x20changes','yes','push','type','local\x20unsynced\x20changes','748600kYrNZt','length','datasetCode','unresolvable\x20target\x20path','appCode','No\x20remote\x20BFF\x20scripts\x20found.','apiDir','stderr','hookLocation','Would\x20inspect\x20','force','Lock\x20scope\x20for\x20app\x20\x22','nonInteractive','lastSync','13275MrZpYs','write','GET','utf8','scriptType','toLowerCase','41147iUOBSL'];a35_0x21a0=function(){return _0x2790c2;};return a35_0x21a0();}async function hasUnsyncedLocalChanges(_0x4b689a,_0x84e014,_0x182794){if(!await fileExists(_0x4b689a))return![];const _0x2efcf8=await computeFileHash(_0x4b689a);if(!_0x84e014)return _0x182794?_0x2efcf8!==_0x182794:!![];return _0x2efcf8!==_0x84e014['hash'];}function buildDatasetCodeToAliasMap(_0x56bca4,_0xc6effb){const _0x92b599=a35_0x12d544,_0x11b060=loadAliasMap(_0x56bca4,undefined,resolveApiFilePath(_0x56bca4,_0xc6effb));return new Map(_0x11b060['map'](_0x2648d2=>[_0x2648d2[_0x92b599(0x1ca)],_0x2648d2[_0x92b599(0x1f3)]]));}async function confirmForce(){const _0x1e2ba0=a35_0x12d544,_0x76b352=createInterface({'input':process[_0x1e2ba0(0x1f8)],'output':process[_0x1e2ba0(0x1cf)]}),_0xb178b5=await new Promise(_0x124222=>{const _0x4ff449=_0x1e2ba0;_0x76b352['question'](_0x4ff449(0x1bd),_0x124222);});return _0x76b352['close'](),['y',_0x1e2ba0(0x1c4)][_0x1e2ba0(0x1f6)](_0xb178b5[_0x1e2ba0(0x1e7)]()[_0x1e2ba0(0x1db)]());}
1
+ const a35_0x151f79=a35_0x526c;(function(_0x32ab6d,_0x168313){const _0x39d838=a35_0x526c,_0x35dcd6=_0x32ab6d();while(!![]){try{const _0x11c494=-parseInt(_0x39d838(0x19d))/0x1*(parseInt(_0x39d838(0x18b))/0x2)+parseInt(_0x39d838(0x181))/0x3+-parseInt(_0x39d838(0x1b6))/0x4+parseInt(_0x39d838(0x1ab))/0x5*(parseInt(_0x39d838(0x175))/0x6)+parseInt(_0x39d838(0x18f))/0x7*(parseInt(_0x39d838(0x19e))/0x8)+parseInt(_0x39d838(0x1a6))/0x9+parseInt(_0x39d838(0x187))/0xa*(-parseInt(_0x39d838(0x194))/0xb);if(_0x11c494===_0x168313)break;else _0x35dcd6['push'](_0x35dcd6['shift']());}catch(_0x516ce0){_0x35dcd6['push'](_0x35dcd6['shift']());}}}(a35_0xfbea,0xc5f77));function a35_0xfbea(){const _0x65de9=['appCode','functionNode','hash','HOOK','4990464YoGHrX','includes','Force\x20pull\x20cancelled.','local\x20unsynced\x20changes','hookLocation','5jUpCwZ','map','Pull\x20only\x20this\x20script\x20type','apiDir','COMMON','\x22\x20not\x20found\x20after\x20ensureLockScope.','lockKey','message','Remote\x20script\x20missing\x20content.','ENDPOINT','scriptContent','3524464CdCNhw','alias','stderr','\x20remote\x20BFF\x20script(s)\x20for\x20pull','scriptsRoot','stringify','boolean','scriptType','conflict','4478412nUcnZn','Force\x20pull\x20will\x20overwrite\x20local\x20unsynced\x20changes.\x20Continue?\x20[y/N]\x20','close','nonInteractive','toLowerCase','functions','functionName','stdin','Would\x20inspect\x20','toISOString','validation','pull','2429697ewmGEz','utf8','Pull\x20remote\x20BFF\x20scripts\x20to\x20local','str','lockFilePath','parse','1566230TDFhov','operationType','Force\x20overwrite\x20local\x20unsynced\x20changes','--type\x20must\x20be\x20COMMON,\x20ENDPOINT,\x20or\x20HOOK.','2jgPkIK','filePath','\x20pulled,\x20','push','28gHbPFn','/api/management/library/scripts/list?appCode=','datasetCode','Remote\x20script\x20missing\x20id.','\x20skipped,\x20','33SfOOvJ','string','skipped','&type=','read','Pull\x20complete:\x20','apps','yes','bff','992237BBcSAr','2086592YHcysG','type','length','\x20failed'];a35_0xfbea=function(){return _0x65de9;};return a35_0xfbea();}import{createInterface}from'node:readline';import{writeFile}from'node:fs/promises';import{listBffScripts,getBffScriptStatistics}from'../../core/api-client.js';import{loadAliasMap}from'../../core/alias-resolver.js';import{resolveApiFilePath}from'../../context.js';import{loadBffProjectConfig}from'../../core/bff/config.js';import{createHookLocationMap,ensureParentDirectory,fileExists,normalizeBffType,resolveRemoteScriptTarget}from'../../core/bff/file-system.js';import{computeContentHash,computeFileHash}from'../../core/bff/hash.js';function a35_0x526c(_0x511050,_0x28458f){_0x511050=_0x511050-0x16f;const _0xfbea8e=a35_0xfbea();let _0x526cae=_0xfbea8e[_0x511050];return _0x526cae;}import{createEmptyBffLock,ensureLockScope,readBffLockFile,writeBffLockFile}from'../../core/bff/lock.js';import{CliErrors}from'../../errors.js';export const bffPull={'service':a35_0x151f79(0x19c),'command':a35_0x151f79(0x180),'description':a35_0x151f79(0x183),'risk':a35_0x151f79(0x198),'flags':[{'name':a35_0x151f79(0x19f),'type':a35_0x151f79(0x195),'description':a35_0x151f79(0x1ad),'enum':[a35_0x151f79(0x1af),a35_0x151f79(0x1b4),a35_0x151f79(0x1a5)]},{'name':'force','type':a35_0x151f79(0x172),'description':a35_0x151f79(0x189)}],async 'dryRun'(_0x5c21ca){const _0x8cbe90=a35_0x151f79,_0x2a8498=loadBffProjectConfig(_0x5c21ca[_0x8cbe90(0x1a2)]),_0x43b1cf=await readBffLockFile(_0x2a8498['lockFilePath']),{appLock:_0x4cd164}=ensureLockScope(_0x43b1cf??createEmptyBffLock(),_0x5c21ca[_0x8cbe90(0x1a2)],_0x2a8498[_0x8cbe90(0x170)],'pull'),_0x45f1c2=normalizeBffType(_0x5c21ca[_0x8cbe90(0x184)]('type'))??undefined,_0x5c43f3=buildDatasetCodeToAliasMap(_0x5c21ca['apiDir'],_0x5c21ca[_0x8cbe90(0x1a2)]),[_0xefdf6f,_0x22ef88]=await Promise['all']([listBffScripts(_0x5c21ca[_0x8cbe90(0x1a2)],_0x45f1c2),getBffScriptStatistics(_0x5c21ca[_0x8cbe90(0x1a2)])]),_0x4900ff=createHookLocationMap(_0x22ef88),_0x17015c=[];for(const _0x53a904 of _0xefdf6f){const _0x2fb0c0=resolveRemoteScriptTarget(_0x2a8498,_0x53a904,_0x4900ff,_0x4cd164['functions'],_0x5c43f3);if(!_0x2fb0c0){_0x17015c[_0x8cbe90(0x18e)]({'scriptType':_0x53a904['scriptType'],'functionName':_0x53a904[_0x8cbe90(0x17b)]??'','status':_0x8cbe90(0x196),'reason':'unresolvable\x20target\x20path'});continue;}const _0x213fa5=_0x4cd164['functions'][_0x2fb0c0['lockKey']],_0x2760d6=_0x53a904['scriptContent']!=null?computeContentHash(_0x53a904[_0x8cbe90(0x1b5)]):undefined,_0x1a6c75=await hasUnsyncedLocalChanges(_0x2fb0c0[_0x8cbe90(0x18c)],_0x213fa5,_0x2760d6);_0x17015c[_0x8cbe90(0x18e)]({'lockKey':_0x2fb0c0[_0x8cbe90(0x1b1)],'filePath':_0x2fb0c0[_0x8cbe90(0x18c)],'remoteId':_0x53a904['id']??null,'status':_0x1a6c75?_0x8cbe90(0x174):'would_pull'});}return{'method':'GET','url':_0x8cbe90(0x190)+_0x5c21ca[_0x8cbe90(0x1a2)]+(_0x45f1c2?_0x8cbe90(0x197)+_0x45f1c2:''),'body':{'appCode':_0x5c21ca[_0x8cbe90(0x1a2)],'filterType':_0x45f1c2??null,'files':_0x17015c},'description':_0x8cbe90(0x17d)+_0x17015c[_0x8cbe90(0x1a0)]+_0x8cbe90(0x16f)};},async 'execute'(_0x3084b7){const _0x2a8571=a35_0x151f79,_0x77aab4=loadBffProjectConfig(_0x3084b7[_0x2a8571(0x1a2)]),_0x33c5b8=await readBffLockFile(_0x77aab4[_0x2a8571(0x185)]),{lockData:_0x22f93d,appLock:_0xc60fa0}=ensureLockScope(_0x33c5b8??createEmptyBffLock(),_0x3084b7[_0x2a8571(0x1a2)],_0x77aab4['scriptsRoot'],'pull'),_0x389e27=normalizeBffType(_0x3084b7[_0x2a8571(0x184)](_0x2a8571(0x19f)))??undefined;if(_0x3084b7[_0x2a8571(0x184)](_0x2a8571(0x19f))&&!_0x389e27)throw CliErrors[_0x2a8571(0x17f)](_0x2a8571(0x18a));const [_0x9052ee,_0x4c203c]=await Promise['all']([listBffScripts(_0x3084b7[_0x2a8571(0x1a2)],_0x389e27),getBffScriptStatistics(_0x3084b7[_0x2a8571(0x1a2)])]);if(_0x9052ee[_0x2a8571(0x1a0)]===0x0)return{'ok':!![],'data':{'pulled':[],'skipped':[],'failed':[]},'message':'No\x20remote\x20BFF\x20scripts\x20found.'};const _0x4aa655=_0x3084b7['bool']('force');if(_0x4aa655&&!_0x3084b7[_0x2a8571(0x178)]){const _0x793ab2=await confirmForce();if(!_0x793ab2)throw CliErrors['cancelled'](_0x2a8571(0x1a8));}if(_0x4aa655&&_0x3084b7[_0x2a8571(0x178)]){}const _0x10c152=buildDatasetCodeToAliasMap(_0x3084b7[_0x2a8571(0x1ae)],_0x3084b7[_0x2a8571(0x1a2)]),_0x135802=createHookLocationMap(_0x4c203c),_0x34d2e5=JSON[_0x2a8571(0x186)](JSON[_0x2a8571(0x171)](_0x22f93d)),_0x31e212=_0x3084b7[_0x2a8571(0x1a2)],_0x3d63aa=_0x34d2e5[_0x2a8571(0x19a)][_0x31e212];if(!_0x3d63aa)throw new Error('Lock\x20scope\x20for\x20app\x20\x22'+_0x31e212+_0x2a8571(0x1b0));const _0x4b7dbc=[],_0x29c1c0=[],_0x19f51b=[];for(const _0x323f46 of _0x9052ee){const _0x43b2ea=resolveRemoteScriptTarget(_0x77aab4,_0x323f46,_0x135802,_0xc60fa0[_0x2a8571(0x17a)],_0x10c152);if(!_0x43b2ea){_0x29c1c0[_0x2a8571(0x18e)]({'lockKey':_0x323f46[_0x2a8571(0x173)]+'/'+_0x323f46['functionName'],'reason':'unresolvable\x20target\x20path'});continue;}const _0x11dc5b=_0xc60fa0[_0x2a8571(0x17a)][_0x43b2ea[_0x2a8571(0x1b1)]];try{if(!_0x323f46['id'])throw new Error(_0x2a8571(0x192));if(_0x323f46[_0x2a8571(0x1b5)]==null)throw new Error(_0x2a8571(0x1b3));const _0x31b661=_0x323f46[_0x2a8571(0x1b5)],_0x38261e=computeContentHash(_0x31b661);if(!_0x4aa655){const _0x47a2cf=await hasUnsyncedLocalChanges(_0x43b2ea[_0x2a8571(0x18c)],_0x11dc5b,_0x38261e);if(_0x47a2cf){_0x29c1c0[_0x2a8571(0x18e)]({'lockKey':_0x43b2ea['lockKey'],'reason':_0x2a8571(0x1a9)});continue;}}await ensureParentDirectory(_0x43b2ea[_0x2a8571(0x18c)]),await writeFile(_0x43b2ea['filePath'],_0x31b661,_0x2a8571(0x182));const _0x52bc76={'hash':_0x38261e,'remoteId':_0x323f46['id'],'version':_0x323f46['version']};_0x43b2ea[_0x2a8571(0x19f)]===_0x2a8571(0x1a5)&&_0x43b2ea['hookLocation']&&(_0x52bc76[_0x2a8571(0x1b7)]=_0x43b2ea[_0x2a8571(0x1aa)][_0x2a8571(0x1b7)],_0x52bc76['datasetCode']=_0x43b2ea[_0x2a8571(0x1aa)][_0x2a8571(0x191)],_0x52bc76[_0x2a8571(0x188)]=_0x43b2ea[_0x2a8571(0x1aa)]['operationType'],_0x52bc76[_0x2a8571(0x1a3)]=_0x43b2ea['hookLocation'][_0x2a8571(0x1a3)]),_0x3d63aa['functions'][_0x43b2ea[_0x2a8571(0x1b1)]]=_0x52bc76,_0x4b7dbc[_0x2a8571(0x18e)]({'lockKey':_0x43b2ea[_0x2a8571(0x1b1)],'remoteId':_0x323f46['id']});}catch(_0x400daf){_0x19f51b['push']({'lockKey':_0x43b2ea[_0x2a8571(0x1b1)],'error':_0x400daf instanceof Error?_0x400daf[_0x2a8571(0x1b2)]:String(_0x400daf)});}}return _0x3d63aa['lastSync']=new Date()[_0x2a8571(0x17e)](),await writeBffLockFile(_0x77aab4['lockFilePath'],_0x34d2e5),{'ok':_0x19f51b[_0x2a8571(0x1a0)]===0x0,'data':{'pulled':_0x4b7dbc,'skipped':_0x29c1c0,'failed':_0x19f51b},'message':_0x2a8571(0x199)+_0x4b7dbc[_0x2a8571(0x1a0)]+_0x2a8571(0x18d)+_0x29c1c0[_0x2a8571(0x1a0)]+_0x2a8571(0x193)+_0x19f51b[_0x2a8571(0x1a0)]+_0x2a8571(0x1a1)};}};async function hasUnsyncedLocalChanges(_0x1db768,_0x342176,_0x54024d){const _0x420e43=a35_0x151f79;if(!await fileExists(_0x1db768))return![];const _0x5a961c=await computeFileHash(_0x1db768);if(!_0x342176)return _0x54024d?_0x5a961c!==_0x54024d:!![];return _0x5a961c!==_0x342176[_0x420e43(0x1a4)];}function buildDatasetCodeToAliasMap(_0x5f0161,_0x59e39c){const _0x590792=a35_0x151f79,_0x3e7f64=loadAliasMap(_0x5f0161,undefined,resolveApiFilePath(_0x5f0161,_0x59e39c));return new Map(_0x3e7f64[_0x590792(0x1ac)](_0x29d867=>[_0x29d867[_0x590792(0x191)],_0x29d867[_0x590792(0x1b7)]]));}async function confirmForce(){const _0x5aa615=a35_0x151f79,_0x3a9a49=createInterface({'input':process[_0x5aa615(0x17c)],'output':process[_0x5aa615(0x1b8)]}),_0x57386b=await new Promise(_0x5b6d24=>{const _0x308946=_0x5aa615;_0x3a9a49['question'](_0x308946(0x176),_0x5b6d24);});return _0x3a9a49[_0x5aa615(0x177)](),['y',_0x5aa615(0x19b)][_0x5aa615(0x1a7)](_0x57386b['trim']()[_0x5aa615(0x179)]());}
@@ -0,0 +1,2 @@
1
+ import type { CommandDefinition } from "../../framework/types.js";
2
+ export declare const bffPush: CommandDefinition;
@@ -1 +1 @@
1
- const a36_0xa46be9=a36_0x4418;(function(_0x39ee62,_0x2f8c1c){const _0x423d31=a36_0x4418,_0x281eaa=_0x39ee62();while(!![]){try{const _0x27169f=parseInt(_0x423d31(0xfe))/0x1*(-parseInt(_0x423d31(0x10c))/0x2)+-parseInt(_0x423d31(0xf5))/0x3+-parseInt(_0x423d31(0xdc))/0x4*(-parseInt(_0x423d31(0x10d))/0x5)+parseInt(_0x423d31(0x105))/0x6+-parseInt(_0x423d31(0xd9))/0x7+-parseInt(_0x423d31(0x11e))/0x8+parseInt(_0x423d31(0xe6))/0x9;if(_0x27169f===_0x2f8c1c)break;else _0x281eaa['push'](_0x281eaa['shift']());}catch(_0x37ecdf){_0x281eaa['push'](_0x281eaa['shift']());}}}(a36_0x576b,0xba4c0));import{readFile}from'node:fs/promises';import{saveBffScript,getBffScriptInfo,listDatasets,clearBffScriptCache}from'../../core/api-client.js';import{loadAliasMap}from'../../core/alias-resolver.js';import{resolveApiFilePath}from'../../context.js';import{loadBffProjectConfig}from'../../core/bff/config.js';import{normalizeBffType,scanLocalBffFunctions}from'../../core/bff/file-system.js';function a36_0x4418(_0x20d6e0,_0x5b196d){_0x20d6e0=_0x20d6e0-0xce;const _0x576b35=a36_0x576b();let _0x441814=_0x576b35[_0x20d6e0];return _0x441814;}import{computeFileHash}from'../../core/bff/hash.js';import{createEmptyBffLock,ensureLockScope,readBffLockFile,writeBffLockFile}from'../../core/bff/lock.js';import{extractScriptDescription}from'../../core/bff/utils.js';function a36_0x576b(){const _0x4223e7=['values','get','5744334bRNZjr',':\x20missing\x20remote\x20version.\x20Run\x20`push`\x20after\x20`pull`\x20to\x20sync\x20version\x20info.','Lock\x20scope\x20for\x20app\x20\x22','runtime\x20cache\x20cleared','apiDir','toISOString','functionNode','4IDEIGp','5esedRL','Force\x20push\x20ignoring\x20hash\x20protection','code','remoteId','every','script','lockKey','Incomplete\x20HOOK\x20path:\x20','str','/api/management/library/scripts/save','runtime\x20cache\x20not\x20needed','Push\x20local\x20BFF\x20scripts\x20to\x20remote','boolean','HOOK','attempted','Push\x20complete:\x20','\x20local\x20BFF\x20script(s)\x20for\x20push\x20and\x20clear\x20runtime\x20cache\x20if\x20files\x20are\x20uploaded','5488848KjBrUP','push','filter','hash','create','bff','datasetCode','parse','\x20skipped,\x20','type','aliasToDatasetCode','join','8970213wfLTKV','would_push','COMMON','5705440awlvQM','POST','string','filePath','\x22\x20not\x20found\x20after\x20ensureLockScope.','\x22.\x20','version','name','Lock\x20file\x20not\x20settled\x20after\x20push\x20for\x20','\x20failed,\x20','12414960ayMFOh','Push\x20only\x20this\x20script\x20type','datasetId','Runtime\x20script\x20cache\x20cleared.','description','length','functions','set','--name\x20requires\x20--type\x20to\x20identify\x20the\x20function.','lastSync','appCode','force','bool','apps','utf8','3019374bRpyDE','unchanged','Push\x20only\x20the\x20named\x20function\x20(requires\x20--type)','some','operationType','lockFilePath','alias','validation','runtime\x20cache\x20clear\x20failed','13047GCktGh','datasetCodeToDataset','cleared','map','status'];a36_0x576b=function(){return _0x4223e7;};return a36_0x576b();}import{sleep}from'../../utils/sleep.js';import{CliErrors}from'../../errors.js';import{CLI_BIN_NAME}from'../../constant/cli.js';const CACHE_CLEAR_ATTEMPTS=0x2,CACHE_CLEAR_INTERVAL_MS=0x12c;export const bffPush={'service':a36_0xa46be9(0xd2),'command':a36_0xa46be9(0xce),'description':a36_0xa46be9(0x118),'risk':'high-risk-write','flags':[{'name':a36_0xa46be9(0xd6),'type':a36_0xa46be9(0xde),'description':a36_0xa46be9(0xe7),'enum':[a36_0xa46be9(0xdb),'ENDPOINT',a36_0xa46be9(0x11a)]},{'name':a36_0xa46be9(0xe3),'type':'string','description':a36_0xa46be9(0xf7)},{'name':a36_0xa46be9(0xf1),'type':a36_0xa46be9(0x119),'description':a36_0xa46be9(0x10e)}],async 'dryRun'(_0x1aaa57){const _0x239b5a=a36_0xa46be9,_0x2b1602=loadBffProjectConfig(_0x1aaa57[_0x239b5a(0xf0)]),_0x4ecb33=await readBffLockFile(_0x2b1602[_0x239b5a(0xfa)]),{appLock:_0x3588a1}=ensureLockScope(_0x4ecb33??createEmptyBffLock(),_0x1aaa57['appCode'],_0x2b1602['scriptsRoot'],_0x239b5a(0xce)),_0x4e9c18=await getTargetFunctions(_0x2b1602,_0x1aaa57),_0xa005b9=_0x1aaa57[_0x239b5a(0xf2)](_0x239b5a(0xf1)),_0x286a0d=[];for(const _0x4e8d3a of _0x4e9c18){const _0x1c529b=await computeFileHash(_0x4e8d3a[_0x239b5a(0xdf)]),_0x1c2468=_0x3588a1[_0x239b5a(0xec)][_0x4e8d3a['lockKey']],_0x1068dc=!!_0x1c2468&&_0x1c2468['hash']===_0x1c529b;_0x286a0d[_0x239b5a(0xce)]({'lockKey':_0x4e8d3a['lockKey'],'filePath':_0x4e8d3a[_0x239b5a(0xdf)],'remoteId':_0x1c2468?.[_0x239b5a(0x110)]??null,'mode':_0x1c2468?.[_0x239b5a(0x110)]?'update':_0x239b5a(0xd1),'status':!_0xa005b9&&_0x1068dc?_0x239b5a(0xf6):_0x239b5a(0xda)});}return{'method':_0x239b5a(0xdd),'url':_0x239b5a(0x116),'body':{'appCode':_0x1aaa57[_0x239b5a(0xf0)],'force':_0xa005b9,'files':_0x286a0d,'cacheClearAtRuntime':_0x286a0d[_0x239b5a(0xf8)](_0x35e934=>_0x35e934[_0x239b5a(0x102)]===_0x239b5a(0xda)),'cacheClearAtRuntimeTimes':_0x286a0d[_0x239b5a(0xf8)](_0x3efdc1=>_0x3efdc1[_0x239b5a(0x102)]===_0x239b5a(0xda))?CACHE_CLEAR_ATTEMPTS:0x0},'description':'Would\x20inspect\x20'+_0x286a0d['length']+_0x239b5a(0x11d)};},async 'execute'(_0x380745){const _0x5b83d1=a36_0xa46be9,_0x24969f=loadBffProjectConfig(_0x380745[_0x5b83d1(0xf0)]),_0x251fe9=await readBffLockFile(_0x24969f[_0x5b83d1(0xfa)]),{lockData:_0x32e0bd,appLock:_0x1db417}=ensureLockScope(_0x251fe9??createEmptyBffLock(),_0x380745[_0x5b83d1(0xf0)],_0x24969f['scriptsRoot'],_0x5b83d1(0xce)),_0x5291bb=await getTargetFunctions(_0x24969f,_0x380745);if(_0x5291bb[_0x5b83d1(0xeb)]===0x0)return{'ok':!![],'data':{'uploaded':[],'skipped':[],'failed':[]},'message':'No\x20local\x20BFF\x20functions\x20found.'};const _0x5d8666=_0x380745['bool'](_0x5b83d1(0xf1)),_0x36cd5f=JSON[_0x5b83d1(0xd4)](JSON['stringify'](_0x32e0bd)),_0x1e3a9d=_0x36cd5f[_0x5b83d1(0xf3)][_0x380745[_0x5b83d1(0xf0)]];if(!_0x1e3a9d)throw new Error(_0x5b83d1(0x107)+_0x380745[_0x5b83d1(0xf0)]+_0x5b83d1(0xe0));const _0x5d1541=await buildHookMaps(_0x380745[_0x5b83d1(0xf0)],_0x380745[_0x5b83d1(0x109)],_0x5291bb,_0x1e3a9d),_0x594230=[],_0x377c52=[],_0x10e745=[];for(const _0x5f51a9 of _0x5291bb){const _0x28d2b4=await computeFileHash(_0x5f51a9[_0x5b83d1(0xdf)]),_0xcdac03=_0x1e3a9d[_0x5b83d1(0xec)][_0x5f51a9[_0x5b83d1(0x113)]];if(!_0x5d8666&&_0xcdac03&&_0xcdac03[_0x5b83d1(0xd0)]===_0x28d2b4){_0x377c52[_0x5b83d1(0xce)]({'lockKey':_0x5f51a9[_0x5b83d1(0x113)],'reason':'unchanged'});continue;}try{await uploadSingleFunction(_0x380745[_0x5b83d1(0xf0)],_0x5f51a9,_0x1e3a9d,_0x5d1541);const _0x418a89=_0x1e3a9d['functions'][_0x5f51a9[_0x5b83d1(0x113)]];_0x594230[_0x5b83d1(0xce)]({'lockKey':_0x5f51a9[_0x5b83d1(0x113)],'remoteId':_0x418a89?.[_0x5b83d1(0x110)]??0x0});}catch(_0x1b2a68){_0x10e745[_0x5b83d1(0xce)]({'lockKey':_0x5f51a9[_0x5b83d1(0x113)],'error':_0x1b2a68 instanceof Error?_0x1b2a68['message']:String(_0x1b2a68)});}}_0x1e3a9d[_0x5b83d1(0xef)]=new Date()[_0x5b83d1(0x10a)](),await writeBffLockFile(_0x24969f[_0x5b83d1(0xfa)],_0x36cd5f),await waitForUploadedLockEntries(_0x24969f['lockFilePath'],_0x380745[_0x5b83d1(0xf0)],_0x594230['map'](_0x243358=>_0x243358[_0x5b83d1(0x113)]));let _0x1e0f1f={'attempted':![],'cleared':![]};if(_0x594230[_0x5b83d1(0xeb)]>0x0)try{let _0x5766f3='';for(let _0x27bdda=0x0;_0x27bdda<CACHE_CLEAR_ATTEMPTS;_0x27bdda+=0x1){_0x5766f3=await clearBffScriptCache(),_0x27bdda<CACHE_CLEAR_ATTEMPTS-0x1&&await sleep(CACHE_CLEAR_INTERVAL_MS);}_0x1e0f1f={'attempted':!![],'cleared':!![],'message':_0x5766f3||_0x5b83d1(0xe9)};}catch(_0x35d251){_0x1e0f1f={'attempted':!![],'cleared':![],'error':_0x35d251 instanceof Error?_0x35d251['message']:String(_0x35d251)};}const _0x4e3517=_0x10e745[_0x5b83d1(0xeb)]===0x0&&(_0x1e0f1f['attempted']?_0x1e0f1f[_0x5b83d1(0x100)]:!![]),_0x483b50=_0x1e0f1f[_0x5b83d1(0x11b)]?_0x1e0f1f[_0x5b83d1(0x100)]?_0x5b83d1(0x108):_0x5b83d1(0xfd):_0x5b83d1(0x117);return{'ok':_0x4e3517,'data':{'uploaded':_0x594230,'skipped':_0x377c52,'failed':_0x10e745,'cacheClear':_0x1e0f1f},'message':_0x5b83d1(0x11c)+_0x594230[_0x5b83d1(0xeb)]+'\x20uploaded,\x20'+_0x377c52[_0x5b83d1(0xeb)]+_0x5b83d1(0xd5)+_0x10e745['length']+_0x5b83d1(0xe5)+_0x483b50};}};async function getTargetFunctions(_0x2c447b,_0x19f329){const _0x598b88=a36_0xa46be9,_0x97f4ea=_0x19f329[_0x598b88(0x115)](_0x598b88(0xd6)),_0x20eb79=_0x19f329['str'](_0x598b88(0xe3)),_0x718a0a=normalizeBffType(_0x97f4ea)??undefined;if(_0x20eb79&&!_0x718a0a)throw CliErrors[_0x598b88(0xfc)](_0x598b88(0xee));const _0x37cf4f=await scanLocalBffFunctions(_0x2c447b,_0x718a0a);if(_0x20eb79){const _0x50642b=_0x37cf4f[_0x598b88(0xcf)](_0x6f85c7=>_0x6f85c7[_0x598b88(0xe3)]===_0x20eb79);if(_0x50642b[_0x598b88(0xeb)]===0x0)throw CliErrors['validation']('Local\x20function\x20not\x20found:\x20'+_0x718a0a+'/'+_0x20eb79);return _0x50642b;}return _0x37cf4f;}async function buildHookMaps(_0x3f2e82,_0x57fffc,_0x531b9e,_0x27126b){const _0xe27ef6=a36_0xa46be9,_0x5c1325=_0x531b9e[_0xe27ef6(0xf8)](_0x457bbf=>_0x457bbf[_0xe27ef6(0xd6)]==='HOOK');if(!_0x5c1325)return{'aliasToDatasetCode':new Map(),'datasetCodeToDataset':new Map()};const _0x40a027=loadAliasMap(_0x57fffc,undefined,resolveApiFilePath(_0x57fffc,_0x3f2e82)),_0x20e715=new Map(_0x40a027[_0xe27ef6(0x101)](_0x2f59ac=>[_0x2f59ac[_0xe27ef6(0xfb)],_0x2f59ac[_0xe27ef6(0xd3)]]));for(const _0x3fb8c7 of Object[_0xe27ef6(0x103)](_0x27126b[_0xe27ef6(0xec)])){_0x3fb8c7[_0xe27ef6(0xfb)]&&_0x3fb8c7[_0xe27ef6(0xd3)]&&!_0x20e715['has'](_0x3fb8c7[_0xe27ef6(0xfb)])&&_0x20e715[_0xe27ef6(0xed)](_0x3fb8c7['alias'],_0x3fb8c7[_0xe27ef6(0xd3)]);}const _0x5a26ba=await listDatasets(_0x3f2e82),_0x241722=new Map(_0x5a26ba[_0xe27ef6(0x101)](_0x8dfbc9=>[_0x8dfbc9[_0xe27ef6(0x10f)],_0x8dfbc9]));return{'aliasToDatasetCode':_0x20e715,'datasetCodeToDataset':_0x241722};}async function uploadSingleFunction(_0x5fffa4,_0x18e352,_0x20be4f,_0x14502e){const _0x5092c0=a36_0xa46be9,_0x369631=await readFile(_0x18e352[_0x5092c0(0xdf)],_0x5092c0(0xf4)),_0x1ab81a=await computeFileHash(_0x18e352[_0x5092c0(0xdf)]),_0x28c4da=_0x20be4f[_0x5092c0(0xec)][_0x18e352[_0x5092c0(0x113)]];if(_0x28c4da?.[_0x5092c0(0x110)]&&_0x28c4da[_0x5092c0(0xe2)]==null)throw CliErrors[_0x5092c0(0xfc)](_0x18e352[_0x5092c0(0x113)]+_0x5092c0(0x106));let _0x4e36bf=extractScriptDescription(_0x369631);if(!_0x4e36bf&&_0x28c4da?.[_0x5092c0(0x110)]){const _0x39b496=await getBffScriptInfo(_0x28c4da[_0x5092c0(0x110)]);_0x4e36bf=_0x39b496[_0x5092c0(0xea)]||undefined;}const _0x50f357={'appCode':_0x5fffa4,'functionName':_0x18e352[_0x5092c0(0xe3)],'scriptType':_0x18e352['type'],'scriptContent':_0x369631};if(_0x28c4da?.[_0x5092c0(0x110)])_0x50f357['id']=_0x28c4da[_0x5092c0(0x110)];if(_0x28c4da?.[_0x5092c0(0xe2)]!=null)_0x50f357[_0x5092c0(0xe2)]=_0x28c4da[_0x5092c0(0xe2)];if(_0x4e36bf)_0x50f357['description']=_0x4e36bf;if(_0x18e352[_0x5092c0(0xd6)]===_0x5092c0(0x11a)){const _0x50ec18=_0x18e352[_0x5092c0(0xfb)];if(!_0x50ec18||!_0x18e352[_0x5092c0(0xf9)]||!_0x18e352['functionNode'])throw CliErrors['validation'](_0x5092c0(0x114)+_0x18e352[_0x5092c0(0x113)]);const _0x2a5c6b=_0x14502e[_0x5092c0(0xd7)][_0x5092c0(0x104)](_0x50ec18)??_0x28c4da?.[_0x5092c0(0xd3)]??_0x50ec18,_0x4db32f=_0x14502e[_0x5092c0(0xff)][_0x5092c0(0x104)](_0x2a5c6b);if(!_0x4db32f)throw CliErrors[_0x5092c0(0xfc)]('Cannot\x20resolve\x20dataset\x20for\x20\x22'+_0x50ec18+_0x5092c0(0xe1)+('Run\x20`'+CLI_BIN_NAME+'\x20api\x20pull`\x20to\x20refresh\x20api.ts,\x20or\x20verify\x20the\x20dataset\x20exists.'));_0x50f357[_0x5092c0(0xe8)]=_0x4db32f['id'],_0x50f357[_0x5092c0(0xf9)]=_0x18e352[_0x5092c0(0xf9)],_0x50f357['functionNode']=_0x18e352['functionNode'];}const _0x51f9b0=await saveBffScript(_0x50f357),_0x1aa1c7=_0x51f9b0['id'],_0x5797cd=_0x51f9b0[_0x5092c0(0x112)]??await getBffScriptInfo(_0x1aa1c7),_0x200f27={'hash':_0x1ab81a,'remoteId':_0x1aa1c7,'version':_0x5797cd[_0x5092c0(0xe2)]};if(_0x18e352[_0x5092c0(0xd6)]===_0x5092c0(0x11a)){const _0x57c298=_0x18e352['alias'],_0xd0c99=_0x14502e[_0x5092c0(0xd7)]['get'](_0x57c298)??_0x28c4da?.['datasetCode']??_0x57c298;_0x14502e[_0x5092c0(0xd7)]['has'](_0x57c298)?_0x200f27['alias']=_0x57c298:_0x200f27[_0x5092c0(0xfb)]=_0x28c4da?.[_0x5092c0(0xfb)],_0x200f27[_0x5092c0(0xd3)]=_0xd0c99,_0x200f27[_0x5092c0(0xf9)]=_0x18e352[_0x5092c0(0xf9)],_0x200f27[_0x5092c0(0x10b)]=_0x18e352[_0x5092c0(0x10b)];}_0x20be4f[_0x5092c0(0xec)][_0x18e352[_0x5092c0(0x113)]]=_0x200f27;}const LOCK_SETTLE_RETRY_COUNT=0x14,LOCK_SETTLE_DELAY_MS=0x64;async function waitForUploadedLockEntries(_0x324637,_0x301d45,_0x4a61aa){const _0x2d8074=a36_0xa46be9;if(_0x4a61aa[_0x2d8074(0xeb)]===0x0)return;for(let _0xce7a63=0x0;_0xce7a63<LOCK_SETTLE_RETRY_COUNT;_0xce7a63+=0x1){const _0x592d1f=await readBffLockFile(_0x324637),_0x4de42b=_0x592d1f?.[_0x2d8074(0xf3)]?.[_0x301d45]?.['functions']??{},_0x535a21=_0x4a61aa[_0x2d8074(0x111)](_0x394ef3=>!!_0x4de42b[_0x394ef3]?.[_0x2d8074(0x110)]);if(_0x535a21)return;await sleep(LOCK_SETTLE_DELAY_MS);}throw new Error(_0x2d8074(0xe4)+_0x4a61aa[_0x2d8074(0xd8)](',\x20')+'.');}
1
+ const a36_0x21a9e9=a36_0x2388;(function(_0x1460b0,_0x21d7b9){const _0x19cc6f=a36_0x2388,_0x262f55=_0x1460b0();while(!![]){try{const _0x1742dc=parseInt(_0x19cc6f(0x15b))/0x1+parseInt(_0x19cc6f(0x183))/0x2*(parseInt(_0x19cc6f(0x1a2))/0x3)+parseInt(_0x19cc6f(0x158))/0x4*(parseInt(_0x19cc6f(0x17c))/0x5)+-parseInt(_0x19cc6f(0x198))/0x6+parseInt(_0x19cc6f(0x187))/0x7+-parseInt(_0x19cc6f(0x18b))/0x8+-parseInt(_0x19cc6f(0x177))/0x9;if(_0x1742dc===_0x21d7b9)break;else _0x262f55['push'](_0x262f55['shift']());}catch(_0x502a24){_0x262f55['push'](_0x262f55['shift']());}}}(a36_0x4c97,0x983ff));import{readFile}from'node:fs/promises';import{saveBffScript,getBffScriptInfo,listDatasets,clearBffScriptCache}from'../../core/api-client.js';import{loadAliasMap}from'../../core/alias-resolver.js';function a36_0x4c97(){const _0x4b5458=['Run\x20`','Runtime\x20script\x20cache\x20cleared.','lastSync','1012465vOTMYs','datasetCode','lockFilePath','description','length','runtime\x20cache\x20not\x20needed','functionNode','2dAJkwl','utf8','ENDPOINT','\x22.\x20','6500032QNmXGx','name','Lock\x20file\x20not\x20settled\x20after\x20push\x20for\x20','datasetId','858320PVoySs','No\x20local\x20BFF\x20functions\x20found.','stringify','version','alias','validation','unchanged','runtime\x20cache\x20cleared','remoteId','some','Push\x20local\x20BFF\x20scripts\x20to\x20remote','HOOK','str','5861202uMrvCv','\x20api\x20pull`\x20to\x20refresh\x20api.ts,\x20or\x20verify\x20the\x20dataset\x20exists.','force','\x22\x20not\x20found\x20after\x20ensureLockScope.','Push\x20only\x20the\x20named\x20function\x20(requires\x20--type)','Would\x20inspect\x20','every','operationType','Cannot\x20resolve\x20dataset\x20for\x20\x22','filter','2835060WuMGKV','bool','COMMON','hash','would_push','has','16vGdMVl','cleared','\x20skipped,\x20','520206yscxRH','set','string','Incomplete\x20HOOK\x20path:\x20','script','filePath','get','appCode','--name\x20requires\x20--type\x20to\x20identify\x20the\x20function.','\x20local\x20BFF\x20script(s)\x20for\x20push\x20and\x20clear\x20runtime\x20cache\x20if\x20files\x20are\x20uploaded','Force\x20push\x20ignoring\x20hash\x20protection','type','values','Lock\x20scope\x20for\x20app\x20\x22','create','scriptsRoot','code','toISOString','parse','map','status','datasetCodeToDataset','push','functions','aliasToDatasetCode','message','POST','Push\x20only\x20this\x20script\x20type','13464018nlhPzZ','lockKey'];a36_0x4c97=function(){return _0x4b5458;};return a36_0x4c97();}import{resolveApiFilePath}from'../../context.js';import{loadBffProjectConfig}from'../../core/bff/config.js';import{normalizeBffType,scanLocalBffFunctions}from'../../core/bff/file-system.js';import{computeFileHash}from'../../core/bff/hash.js';import{createEmptyBffLock,ensureLockScope,readBffLockFile,writeBffLockFile}from'../../core/bff/lock.js';import{extractScriptDescription}from'../../core/bff/utils.js';import{sleep}from'../../utils/sleep.js';import{CliErrors}from'../../errors.js';import{CLI_BIN_NAME}from'../../constant/cli.js';const CACHE_CLEAR_ATTEMPTS=0x2,CACHE_CLEAR_INTERVAL_MS=0x12c;export const bffPush={'service':'bff','command':a36_0x21a9e9(0x171),'description':a36_0x21a9e9(0x195),'risk':'high-risk-write','flags':[{'name':a36_0x21a9e9(0x166),'type':a36_0x21a9e9(0x15d),'description':a36_0x21a9e9(0x176),'enum':[a36_0x21a9e9(0x1a4),a36_0x21a9e9(0x185),'HOOK']},{'name':a36_0x21a9e9(0x188),'type':'string','description':a36_0x21a9e9(0x19c)},{'name':a36_0x21a9e9(0x19a),'type':'boolean','description':a36_0x21a9e9(0x165)}],async 'dryRun'(_0x2c656a){const _0x526fa3=a36_0x21a9e9,_0x23b2b4=loadBffProjectConfig(_0x2c656a[_0x526fa3(0x162)]),_0x54bc6b=await readBffLockFile(_0x23b2b4[_0x526fa3(0x17e)]),{appLock:_0x49d729}=ensureLockScope(_0x54bc6b??createEmptyBffLock(),_0x2c656a['appCode'],_0x23b2b4[_0x526fa3(0x16a)],_0x526fa3(0x171)),_0x376504=await getTargetFunctions(_0x23b2b4,_0x2c656a),_0x269e38=_0x2c656a[_0x526fa3(0x1a3)]('force'),_0x43d308=[];for(const _0x14af60 of _0x376504){const _0x3465b6=await computeFileHash(_0x14af60['filePath']),_0x38d426=_0x49d729[_0x526fa3(0x172)][_0x14af60[_0x526fa3(0x178)]],_0x5449c4=!!_0x38d426&&_0x38d426[_0x526fa3(0x1a5)]===_0x3465b6;_0x43d308['push']({'lockKey':_0x14af60['lockKey'],'filePath':_0x14af60[_0x526fa3(0x160)],'remoteId':_0x38d426?.[_0x526fa3(0x193)]??null,'mode':_0x38d426?.[_0x526fa3(0x193)]?'update':_0x526fa3(0x169),'status':!_0x269e38&&_0x5449c4?'unchanged':_0x526fa3(0x1a6)});}return{'method':_0x526fa3(0x175),'url':'/api/management/library/scripts/save','body':{'appCode':_0x2c656a[_0x526fa3(0x162)],'force':_0x269e38,'files':_0x43d308,'cacheClearAtRuntime':_0x43d308[_0x526fa3(0x194)](_0x4ff7cb=>_0x4ff7cb[_0x526fa3(0x16f)]===_0x526fa3(0x1a6)),'cacheClearAtRuntimeTimes':_0x43d308['some'](_0x19eea7=>_0x19eea7[_0x526fa3(0x16f)]==='would_push')?CACHE_CLEAR_ATTEMPTS:0x0},'description':_0x526fa3(0x19d)+_0x43d308[_0x526fa3(0x180)]+_0x526fa3(0x164)};},async 'execute'(_0x44e63e){const _0xf1418c=a36_0x21a9e9,_0x40897d=loadBffProjectConfig(_0x44e63e['appCode']),_0x43858b=await readBffLockFile(_0x40897d[_0xf1418c(0x17e)]),{lockData:_0x512bac,appLock:_0x8483a9}=ensureLockScope(_0x43858b??createEmptyBffLock(),_0x44e63e[_0xf1418c(0x162)],_0x40897d['scriptsRoot'],'push'),_0x26228d=await getTargetFunctions(_0x40897d,_0x44e63e);if(_0x26228d[_0xf1418c(0x180)]===0x0)return{'ok':!![],'data':{'uploaded':[],'skipped':[],'failed':[]},'message':_0xf1418c(0x18c)};const _0x2b137b=_0x44e63e[_0xf1418c(0x1a3)](_0xf1418c(0x19a)),_0x14e162=JSON[_0xf1418c(0x16d)](JSON[_0xf1418c(0x18d)](_0x512bac)),_0x34ba29=_0x14e162['apps'][_0x44e63e[_0xf1418c(0x162)]];if(!_0x34ba29)throw new Error(_0xf1418c(0x168)+_0x44e63e[_0xf1418c(0x162)]+_0xf1418c(0x19b));const _0xf6dfca=await buildHookMaps(_0x44e63e['appCode'],_0x44e63e['apiDir'],_0x26228d,_0x34ba29),_0x2a91ed=[],_0x569f16=[],_0x30cc35=[];for(const _0x5639bd of _0x26228d){const _0x3645b7=await computeFileHash(_0x5639bd[_0xf1418c(0x160)]),_0x11c66f=_0x34ba29[_0xf1418c(0x172)][_0x5639bd[_0xf1418c(0x178)]];if(!_0x2b137b&&_0x11c66f&&_0x11c66f['hash']===_0x3645b7){_0x569f16[_0xf1418c(0x171)]({'lockKey':_0x5639bd['lockKey'],'reason':_0xf1418c(0x191)});continue;}try{await uploadSingleFunction(_0x44e63e[_0xf1418c(0x162)],_0x5639bd,_0x34ba29,_0xf6dfca);const _0x1b83a8=_0x34ba29[_0xf1418c(0x172)][_0x5639bd[_0xf1418c(0x178)]];_0x2a91ed[_0xf1418c(0x171)]({'lockKey':_0x5639bd['lockKey'],'remoteId':_0x1b83a8?.[_0xf1418c(0x193)]??0x0});}catch(_0x3ddaf5){_0x30cc35[_0xf1418c(0x171)]({'lockKey':_0x5639bd[_0xf1418c(0x178)],'error':_0x3ddaf5 instanceof Error?_0x3ddaf5[_0xf1418c(0x174)]:String(_0x3ddaf5)});}}_0x34ba29[_0xf1418c(0x17b)]=new Date()[_0xf1418c(0x16c)](),await writeBffLockFile(_0x40897d[_0xf1418c(0x17e)],_0x14e162),await waitForUploadedLockEntries(_0x40897d[_0xf1418c(0x17e)],_0x44e63e['appCode'],_0x2a91ed[_0xf1418c(0x16e)](_0x3a24bd=>_0x3a24bd[_0xf1418c(0x178)]));let _0x5b8c9a={'attempted':![],'cleared':![]};if(_0x2a91ed[_0xf1418c(0x180)]>0x0)try{let _0x1b9e53='';for(let _0x66b7f6=0x0;_0x66b7f6<CACHE_CLEAR_ATTEMPTS;_0x66b7f6+=0x1){_0x1b9e53=await clearBffScriptCache(),_0x66b7f6<CACHE_CLEAR_ATTEMPTS-0x1&&await sleep(CACHE_CLEAR_INTERVAL_MS);}_0x5b8c9a={'attempted':!![],'cleared':!![],'message':_0x1b9e53||_0xf1418c(0x17a)};}catch(_0x5a31a2){_0x5b8c9a={'attempted':!![],'cleared':![],'error':_0x5a31a2 instanceof Error?_0x5a31a2['message']:String(_0x5a31a2)};}const _0x51152b=_0x30cc35[_0xf1418c(0x180)]===0x0&&(_0x5b8c9a['attempted']?_0x5b8c9a[_0xf1418c(0x159)]:!![]),_0x510a9f=_0x5b8c9a['attempted']?_0x5b8c9a[_0xf1418c(0x159)]?_0xf1418c(0x192):'runtime\x20cache\x20clear\x20failed':_0xf1418c(0x181);return{'ok':_0x51152b,'data':{'uploaded':_0x2a91ed,'skipped':_0x569f16,'failed':_0x30cc35,'cacheClear':_0x5b8c9a},'message':'Push\x20complete:\x20'+_0x2a91ed[_0xf1418c(0x180)]+'\x20uploaded,\x20'+_0x569f16[_0xf1418c(0x180)]+_0xf1418c(0x15a)+_0x30cc35[_0xf1418c(0x180)]+'\x20failed,\x20'+_0x510a9f};}};async function getTargetFunctions(_0x2d9c85,_0xcbd271){const _0x435bdf=a36_0x21a9e9,_0x31299e=_0xcbd271[_0x435bdf(0x197)](_0x435bdf(0x166)),_0x45b96a=_0xcbd271[_0x435bdf(0x197)]('name'),_0x1805ae=normalizeBffType(_0x31299e)??undefined;if(_0x45b96a&&!_0x1805ae)throw CliErrors[_0x435bdf(0x190)](_0x435bdf(0x163));const _0x43fdf1=await scanLocalBffFunctions(_0x2d9c85,_0x1805ae);if(_0x45b96a){const _0x304cea=_0x43fdf1[_0x435bdf(0x1a1)](_0xd59eaa=>_0xd59eaa[_0x435bdf(0x188)]===_0x45b96a);if(_0x304cea[_0x435bdf(0x180)]===0x0)throw CliErrors[_0x435bdf(0x190)]('Local\x20function\x20not\x20found:\x20'+_0x1805ae+'/'+_0x45b96a);return _0x304cea;}return _0x43fdf1;}async function buildHookMaps(_0x32459f,_0x34635a,_0x2d9904,_0x3edaee){const _0xef71d1=a36_0x21a9e9,_0x49ec86=_0x2d9904[_0xef71d1(0x194)](_0x123a09=>_0x123a09[_0xef71d1(0x166)]===_0xef71d1(0x196));if(!_0x49ec86)return{'aliasToDatasetCode':new Map(),'datasetCodeToDataset':new Map()};const _0x2f5077=loadAliasMap(_0x34635a,undefined,resolveApiFilePath(_0x34635a,_0x32459f)),_0x38c746=new Map(_0x2f5077[_0xef71d1(0x16e)](_0xa2ad61=>[_0xa2ad61[_0xef71d1(0x18f)],_0xa2ad61['datasetCode']]));for(const _0x4e495c of Object[_0xef71d1(0x167)](_0x3edaee[_0xef71d1(0x172)])){_0x4e495c[_0xef71d1(0x18f)]&&_0x4e495c[_0xef71d1(0x17d)]&&!_0x38c746[_0xef71d1(0x157)](_0x4e495c[_0xef71d1(0x18f)])&&_0x38c746[_0xef71d1(0x15c)](_0x4e495c['alias'],_0x4e495c[_0xef71d1(0x17d)]);}const _0xde5f5=await listDatasets(_0x32459f),_0x55b65c=new Map(_0xde5f5[_0xef71d1(0x16e)](_0x41252a=>[_0x41252a[_0xef71d1(0x16b)],_0x41252a]));return{'aliasToDatasetCode':_0x38c746,'datasetCodeToDataset':_0x55b65c};}async function uploadSingleFunction(_0x34d08f,_0x411bb5,_0x56588f,_0x35faf3){const _0x56a720=a36_0x21a9e9,_0x29e805=await readFile(_0x411bb5[_0x56a720(0x160)],_0x56a720(0x184)),_0x25b65a=await computeFileHash(_0x411bb5['filePath']),_0x117e5f=_0x56588f['functions'][_0x411bb5[_0x56a720(0x178)]];if(_0x117e5f?.['remoteId']&&_0x117e5f[_0x56a720(0x18e)]==null)throw CliErrors[_0x56a720(0x190)](_0x411bb5[_0x56a720(0x178)]+':\x20missing\x20remote\x20version.\x20Run\x20`push`\x20after\x20`pull`\x20to\x20sync\x20version\x20info.');let _0x5947a9=extractScriptDescription(_0x29e805);if(!_0x5947a9&&_0x117e5f?.['remoteId']){const _0x25d462=await getBffScriptInfo(_0x117e5f['remoteId']);_0x5947a9=_0x25d462[_0x56a720(0x17f)]||undefined;}const _0x1f3d6b={'appCode':_0x34d08f,'functionName':_0x411bb5[_0x56a720(0x188)],'scriptType':_0x411bb5['type'],'scriptContent':_0x29e805};if(_0x117e5f?.[_0x56a720(0x193)])_0x1f3d6b['id']=_0x117e5f[_0x56a720(0x193)];if(_0x117e5f?.[_0x56a720(0x18e)]!=null)_0x1f3d6b[_0x56a720(0x18e)]=_0x117e5f[_0x56a720(0x18e)];if(_0x5947a9)_0x1f3d6b[_0x56a720(0x17f)]=_0x5947a9;if(_0x411bb5[_0x56a720(0x166)]==='HOOK'){const _0xee211b=_0x411bb5[_0x56a720(0x18f)];if(!_0xee211b||!_0x411bb5[_0x56a720(0x19f)]||!_0x411bb5[_0x56a720(0x182)])throw CliErrors[_0x56a720(0x190)](_0x56a720(0x15e)+_0x411bb5['lockKey']);const _0x51d0f2=_0x35faf3['aliasToDatasetCode']['get'](_0xee211b)??_0x117e5f?.[_0x56a720(0x17d)]??_0xee211b,_0x13d016=_0x35faf3[_0x56a720(0x170)]['get'](_0x51d0f2);if(!_0x13d016)throw CliErrors[_0x56a720(0x190)](_0x56a720(0x1a0)+_0xee211b+_0x56a720(0x186)+(_0x56a720(0x179)+CLI_BIN_NAME+_0x56a720(0x199)));_0x1f3d6b[_0x56a720(0x18a)]=_0x13d016['id'],_0x1f3d6b['operationType']=_0x411bb5[_0x56a720(0x19f)],_0x1f3d6b[_0x56a720(0x182)]=_0x411bb5[_0x56a720(0x182)];}const _0x5c347e=await saveBffScript(_0x1f3d6b),_0x1dc2d2=_0x5c347e['id'],_0x49bf99=_0x5c347e[_0x56a720(0x15f)]??await getBffScriptInfo(_0x1dc2d2),_0x2ae672={'hash':_0x25b65a,'remoteId':_0x1dc2d2,'version':_0x49bf99['version']};if(_0x411bb5[_0x56a720(0x166)]===_0x56a720(0x196)){const _0xd34be3=_0x411bb5[_0x56a720(0x18f)],_0x132320=_0x35faf3[_0x56a720(0x173)][_0x56a720(0x161)](_0xd34be3)??_0x117e5f?.[_0x56a720(0x17d)]??_0xd34be3;_0x35faf3[_0x56a720(0x173)][_0x56a720(0x157)](_0xd34be3)?_0x2ae672[_0x56a720(0x18f)]=_0xd34be3:_0x2ae672[_0x56a720(0x18f)]=_0x117e5f?.[_0x56a720(0x18f)],_0x2ae672[_0x56a720(0x17d)]=_0x132320,_0x2ae672[_0x56a720(0x19f)]=_0x411bb5[_0x56a720(0x19f)],_0x2ae672[_0x56a720(0x182)]=_0x411bb5[_0x56a720(0x182)];}_0x56588f[_0x56a720(0x172)][_0x411bb5['lockKey']]=_0x2ae672;}const LOCK_SETTLE_RETRY_COUNT=0x14,LOCK_SETTLE_DELAY_MS=0x64;function a36_0x2388(_0x49051d,_0x13292d){_0x49051d=_0x49051d-0x157;const _0x4c97ca=a36_0x4c97();let _0x23884b=_0x4c97ca[_0x49051d];return _0x23884b;}async function waitForUploadedLockEntries(_0x3682c8,_0x300317,_0x4e951f){const _0x14397d=a36_0x21a9e9;if(_0x4e951f[_0x14397d(0x180)]===0x0)return;for(let _0x21a2b1=0x0;_0x21a2b1<LOCK_SETTLE_RETRY_COUNT;_0x21a2b1+=0x1){const _0x526230=await readBffLockFile(_0x3682c8),_0x55c206=_0x526230?.['apps']?.[_0x300317]?.[_0x14397d(0x172)]??{},_0x8e94c4=_0x4e951f[_0x14397d(0x19e)](_0x28bc62=>!!_0x55c206[_0x28bc62]?.[_0x14397d(0x193)]);if(_0x8e94c4)return;await sleep(LOCK_SETTLE_DELAY_MS);}throw new Error(_0x14397d(0x189)+_0x4e951f['join'](',\x20')+'.');}