@lovrabet/rabetbase-cli 2.4.5 → 2.4.6-beta.2

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 (347) hide show
  1. package/README.md +3 -2
  2. package/lib/api/api-doc.js +1 -1
  3. package/lib/api/fetch-model-list.js +1 -1
  4. package/lib/api/generate-api-file.js +1 -1
  5. package/lib/auth/auth-server-ui.js +1 -1
  6. package/lib/auth/auth-server.js +1 -1
  7. package/lib/auth/constant.js +1 -1
  8. package/lib/auth/get-cookie.js +1 -1
  9. package/lib/auth/get-session-user.js +1 -1
  10. package/lib/auth/is-session-valid.js +1 -1
  11. package/lib/auth/login-success-html.js +1 -1
  12. package/lib/auth/logout.js +1 -1
  13. package/lib/cli-flags.js +1 -1
  14. package/lib/cli.js +1 -1
  15. package/lib/commands/api/generate.js +1 -1
  16. package/lib/commands/api/index.js +1 -1
  17. package/lib/commands/api/list.js +1 -1
  18. package/lib/commands/api/pull.js +1 -1
  19. package/lib/commands/api/shared.js +1 -1
  20. package/lib/commands/app/index.js +1 -1
  21. package/lib/commands/app/list.js +1 -1
  22. package/lib/commands/app/members-list.js +1 -1
  23. package/lib/commands/app/remote-directory.js +1 -1
  24. package/lib/commands/app/shared.js +1 -1
  25. package/lib/commands/app-config/delete.js +1 -1
  26. package/lib/commands/app-config/get.js +1 -1
  27. package/lib/commands/app-config/index.js +1 -1
  28. package/lib/commands/app-config/list.js +1 -1
  29. package/lib/commands/app-config/set.js +1 -1
  30. package/lib/commands/app-config/shared.js +1 -1
  31. package/lib/commands/auth/index.js +1 -1
  32. package/lib/commands/bff/create.js +1 -1
  33. package/lib/commands/bff/delete.js +1 -1
  34. package/lib/commands/bff/detail.js +1 -1
  35. package/lib/commands/bff/index.js +1 -1
  36. package/lib/commands/bff/list.js +1 -1
  37. package/lib/commands/bff/pull.js +1 -1
  38. package/lib/commands/bff/push.js +1 -1
  39. package/lib/commands/bff/status.js +1 -1
  40. package/lib/commands/cli-skill/index.js +1 -1
  41. package/lib/commands/cli-update.js +1 -1
  42. package/lib/commands/codegen/index.js +1 -1
  43. package/lib/commands/codegen/sdk.js +1 -1
  44. package/lib/commands/codegen/sql.js +1 -1
  45. package/lib/commands/common/app-registry.js +1 -1
  46. package/lib/commands/common/app-selector.js +1 -1
  47. package/lib/commands/common/async-task.js +1 -1
  48. package/lib/commands/common/dry-run.js +1 -1
  49. package/lib/commands/common/flags.js +1 -1
  50. package/lib/commands/common/local-file.js +1 -1
  51. package/lib/commands/common/validate.js +1 -1
  52. package/lib/commands/config/get.js +1 -1
  53. package/lib/commands/config/index.js +1 -1
  54. package/lib/commands/config/list.js +1 -1
  55. package/lib/commands/config/set.js +1 -1
  56. package/lib/commands/config/shared.js +1 -1
  57. package/lib/commands/data/filter.js +1 -1
  58. package/lib/commands/data/getOne.js +1 -1
  59. package/lib/commands/data/index.js +1 -1
  60. package/lib/commands/data/shared.js +1 -1
  61. package/lib/commands/dataset/business-group-update.js +1 -1
  62. package/lib/commands/dataset/business-groups.js +1 -1
  63. package/lib/commands/dataset/capability.js +1 -1
  64. package/lib/commands/dataset/delete.js +1 -1
  65. package/lib/commands/dataset/detail.js +1 -1
  66. package/lib/commands/dataset/extend-update.js +1 -1
  67. package/lib/commands/dataset/field-update.js +1 -1
  68. package/lib/commands/dataset/generate.js +1 -1
  69. package/lib/commands/dataset/index.js +1 -1
  70. package/lib/commands/dataset/list.js +1 -1
  71. package/lib/commands/dataset/operations.js +1 -1
  72. package/lib/commands/dataset/relation-audit.js +1 -1
  73. package/lib/commands/dataset/relation-create.js +1 -1
  74. package/lib/commands/dataset/relation-delete.js +1 -1
  75. package/lib/commands/dataset/relation-shared.js +1 -1
  76. package/lib/commands/dataset/relation-update.js +1 -1
  77. package/lib/commands/dataset/relations.js +1 -1
  78. package/lib/commands/dataset/rename.js +1 -1
  79. package/lib/commands/dataset/restore.js +1 -1
  80. package/lib/commands/db/analysis-batching.js +1 -1
  81. package/lib/commands/db/analyze-batch-plan.js +1 -1
  82. package/lib/commands/db/analyze-cancel.js +1 -1
  83. package/lib/commands/db/analyze-start.js +1 -1
  84. package/lib/commands/db/analyze-status.js +1 -1
  85. package/lib/commands/db/create.js +1 -1
  86. package/lib/commands/db/delete.js +1 -1
  87. package/lib/commands/db/detail.js +1 -1
  88. package/lib/commands/db/diff-refresh-start.js +1 -1
  89. package/lib/commands/db/diff-refresh-status.js +1 -1
  90. package/lib/commands/db/diff.js +1 -1
  91. package/lib/commands/db/index.js +1 -1
  92. package/lib/commands/db/list.js +1 -1
  93. package/lib/commands/db/shared.js +1 -1
  94. package/lib/commands/db/tables.js +1 -1
  95. package/lib/commands/db/test.js +1 -1
  96. package/lib/commands/db/update.js +1 -1
  97. package/lib/commands/doctor.js +1 -1
  98. package/lib/commands/file/index.js +1 -1
  99. package/lib/commands/init/index.js +1 -1
  100. package/lib/commands/issue/index.js +1 -1
  101. package/lib/commands/issue/nudge.js +1 -1
  102. package/lib/commands/issue/report.js +1 -1
  103. package/lib/commands/issue/shared.js +1 -1
  104. package/lib/commands/kb/create.js +1 -1
  105. package/lib/commands/kb/delete.js +1 -1
  106. package/lib/commands/kb/detail.js +1 -1
  107. package/lib/commands/kb/index.js +1 -1
  108. package/lib/commands/kb/list.js +1 -1
  109. package/lib/commands/kb/shared.js +1 -1
  110. package/lib/commands/kb/update.js +1 -1
  111. package/lib/commands/logs/index.js +1 -1
  112. package/lib/commands/menu/asset-update.js +1 -1
  113. package/lib/commands/menu/delete.js +1 -1
  114. package/lib/commands/menu/external-link-create.js +1 -1
  115. package/lib/commands/menu/external-link-update.js +1 -1
  116. package/lib/commands/menu/group-create.js +1 -1
  117. package/lib/commands/menu/group-update.js +1 -1
  118. package/lib/commands/menu/index.js +1 -1
  119. package/lib/commands/menu/list.js +1 -1
  120. package/lib/commands/menu/move.js +1 -1
  121. package/lib/commands/menu/regroup-start.js +1 -1
  122. package/lib/commands/menu/rename.js +1 -1
  123. package/lib/commands/menu/shared/compare-table.js +1 -1
  124. package/lib/commands/menu/shared/delete-plan.js +1 -1
  125. package/lib/commands/menu/shared/facts.js +1 -1
  126. package/lib/commands/menu/shared/index.js +1 -1
  127. package/lib/commands/menu/shared/inquirer.js +1 -1
  128. package/lib/commands/menu/shared/local-pages.js +1 -1
  129. package/lib/commands/menu/shared/logic.js +1 -1
  130. package/lib/commands/menu/shared/mutations.d.ts +8 -7
  131. package/lib/commands/menu/shared/mutations.js +1 -1
  132. package/lib/commands/menu/shared/service.js +1 -1
  133. package/lib/commands/menu/shared/sync-core.js +1 -1
  134. package/lib/commands/menu/shared/types.d.ts +17 -2
  135. package/lib/commands/menu/shared/update-core.js +1 -1
  136. package/lib/commands/menu/shared/valid-url.js +1 -1
  137. package/lib/commands/menu/sync.js +1 -1
  138. package/lib/commands/{page/standard-page-status.d.ts → menu/visibility-update.d.ts} +1 -1
  139. package/lib/commands/menu/visibility-update.js +1 -0
  140. package/lib/commands/notification/config-create.js +1 -1
  141. package/lib/commands/notification/config-delete.js +1 -1
  142. package/lib/commands/notification/config-list.js +1 -1
  143. package/lib/commands/notification/config-update.js +1 -1
  144. package/lib/commands/notification/index.js +1 -1
  145. package/lib/commands/notification/shared.js +1 -1
  146. package/lib/commands/ocr/index.js +1 -1
  147. package/lib/commands/page/create.d.ts +2 -0
  148. package/lib/commands/page/create.js +1 -0
  149. package/lib/commands/page/{react → custom}/detail.d.ts +1 -1
  150. package/lib/commands/page/custom/detail.js +1 -0
  151. package/lib/commands/page/{react → custom}/list.d.ts +1 -1
  152. package/lib/commands/page/custom/list.js +1 -0
  153. package/lib/commands/page/{react → custom}/publish.d.ts +1 -1
  154. package/lib/commands/page/custom/publish.js +1 -0
  155. package/lib/commands/page/{react → custom}/shared.d.ts +15 -15
  156. package/lib/commands/page/custom/shared.js +1 -0
  157. package/lib/commands/page/{react → custom}/syntax.d.ts +2 -2
  158. package/lib/commands/page/custom/syntax.js +1 -0
  159. package/lib/commands/page/custom/template.js +1 -0
  160. package/lib/commands/page/{react → custom}/update.d.ts +1 -1
  161. package/lib/commands/page/custom/update.js +1 -0
  162. package/lib/commands/page/data-list-status.d.ts +2 -0
  163. package/lib/commands/page/data-list-status.js +1 -0
  164. package/lib/commands/page/generate-start.js +1 -1
  165. package/lib/commands/page/generate-status.js +1 -1
  166. package/lib/commands/page/index.js +1 -1
  167. package/lib/commands/page/pull.js +1 -1
  168. package/lib/commands/page/push.js +1 -1
  169. package/lib/commands/page/relation-audit.js +1 -1
  170. package/lib/commands/page/restore.js +1 -1
  171. package/lib/commands/page/shared.d.ts +18 -18
  172. package/lib/commands/page/shared.js +1 -1
  173. package/lib/commands/page/sync.js +1 -1
  174. package/lib/commands/project/create/enhanced-guided-create.js +1 -1
  175. package/lib/commands/project/create/format-elapsed.js +1 -1
  176. package/lib/commands/project/create/main.js +1 -1
  177. package/lib/commands/project/create/materialize-project-template.js +1 -1
  178. package/lib/commands/project/create/project-name.js +1 -1
  179. package/lib/commands/project/create/project-template-archive.js +1 -1
  180. package/lib/commands/project/create/project-template-path.js +1 -1
  181. package/lib/commands/project/create/use-copy-project-template.js +1 -1
  182. package/lib/commands/project/create/use-format-code.js +1 -1
  183. package/lib/commands/project/create/use-install-dependencies.js +1 -1
  184. package/lib/commands/project/index.js +1 -1
  185. package/lib/commands/project/upgrade.js +1 -1
  186. package/lib/commands/registry.js +1 -1
  187. package/lib/commands/role/delete.js +1 -1
  188. package/lib/commands/role/detail.js +1 -1
  189. package/lib/commands/role/index.js +1 -1
  190. package/lib/commands/role/list.js +1 -1
  191. package/lib/commands/role/shared.js +1 -1
  192. package/lib/commands/role/update.js +1 -1
  193. package/lib/commands/role/user-add.js +1 -1
  194. package/lib/commands/role/user-remove.js +1 -1
  195. package/lib/commands/role/user-resolve.js +1 -1
  196. package/lib/commands/run/index.js +1 -1
  197. package/lib/commands/schema.js +1 -1
  198. package/lib/commands/sql/create.js +1 -1
  199. package/lib/commands/sql/delete.js +1 -1
  200. package/lib/commands/sql/detail.js +1 -1
  201. package/lib/commands/sql/exec.js +1 -1
  202. package/lib/commands/sql/index.js +1 -1
  203. package/lib/commands/sql/list.js +1 -1
  204. package/lib/commands/sql/pull.js +1 -1
  205. package/lib/commands/sql/push.js +1 -1
  206. package/lib/commands/sql/shared.js +1 -1
  207. package/lib/commands/sql/status.js +1 -1
  208. package/lib/commands/sql/validate.js +1 -1
  209. package/lib/commands/task/index.js +1 -1
  210. package/lib/commands/task/status.js +1 -1
  211. package/lib/commands/tenant/index.js +1 -1
  212. package/lib/commands/tenant/members-list.js +1 -1
  213. package/lib/commands/tenant/shared.js +1 -1
  214. package/lib/commands/user-account/dingding-sandbox-bind.js +1 -1
  215. package/lib/commands/user-account/index.js +1 -1
  216. package/lib/commands/workspace/add.js +1 -1
  217. package/lib/commands/workspace/index.js +1 -1
  218. package/lib/commands/workspace/remove.js +1 -1
  219. package/lib/config/schema.js +1 -1
  220. package/lib/constant/cdn.js +1 -1
  221. package/lib/constant/cli.js +1 -1
  222. package/lib/constant/defaults.js +1 -1
  223. package/lib/constant/domain.js +1 -1
  224. package/lib/constant/env.js +1 -1
  225. package/lib/constant/output.js +1 -1
  226. package/lib/constant/paths.js +1 -1
  227. package/lib/constant/risk.js +1 -1
  228. package/lib/context/app-resolver.js +1 -1
  229. package/lib/context/auth-resolver.js +1 -1
  230. package/lib/context/config-loader.js +1 -1
  231. package/lib/context.js +1 -1
  232. package/lib/core/alias-resolver.js +1 -1
  233. package/lib/core/api-client.d.ts +43 -43
  234. package/lib/core/api-client.js +1 -1
  235. package/lib/core/bff/config.js +1 -1
  236. package/lib/core/bff/file-system.js +1 -1
  237. package/lib/core/bff/hash.js +1 -1
  238. package/lib/core/bff/lock.js +1 -1
  239. package/lib/core/bff/utils.d.ts +3 -1
  240. package/lib/core/bff/utils.js +1 -1
  241. package/lib/core/db-resolver.js +1 -1
  242. package/lib/core/page/file-system.js +1 -1
  243. package/lib/core/page/hash.js +1 -1
  244. package/lib/core/page/lock.js +1 -1
  245. package/lib/core/sql-index-auditor.js +1 -1
  246. package/lib/core/sql-sync/config.js +1 -1
  247. package/lib/core/sql-sync/file-system.js +1 -1
  248. package/lib/core/sql-sync/hash.js +1 -1
  249. package/lib/core/sql-sync/lock.js +1 -1
  250. package/lib/core/sql-sync/utils.js +1 -1
  251. package/lib/core/sql-validator.js +1 -1
  252. package/lib/errors.js +1 -1
  253. package/lib/framework/build-all-flags.js +1 -1
  254. package/lib/framework/error-output.js +1 -1
  255. package/lib/framework/explicit-yes.js +1 -1
  256. package/lib/framework/flags.js +1 -1
  257. package/lib/framework/help.js +1 -1
  258. package/lib/framework/index.js +1 -1
  259. package/lib/framework/output.js +1 -1
  260. package/lib/framework/response.js +1 -1
  261. package/lib/framework/runner-alias.js +1 -1
  262. package/lib/framework/runner.js +1 -1
  263. package/lib/framework/schema-export.js +1 -1
  264. package/lib/framework/types.js +1 -1
  265. package/lib/generated/build-info.d.ts +4 -4
  266. package/lib/generated/build-info.js +1 -1
  267. package/lib/help.js +1 -1
  268. package/lib/postinstall.js +1 -1
  269. package/lib/runtime/confirmation.js +1 -1
  270. package/lib/runtime/event.js +1 -1
  271. package/lib/runtime/index.js +1 -1
  272. package/lib/runtime/queue.js +1 -1
  273. package/lib/runtime/resolve.js +1 -1
  274. package/lib/skills/builtin-skill.js +1 -1
  275. package/lib/skills/main.js +1 -1
  276. package/lib/skills/npx-skills-add.js +1 -1
  277. package/lib/skills/skill-presence.js +1 -1
  278. package/lib/telemetry/cli-command-trace.js +1 -1
  279. package/lib/telemetry/cli-help-trace.js +1 -1
  280. package/lib/telemetry/ensure-cli-otel-config.js +1 -1
  281. package/lib/telemetry/register-otel-exit-shutdown.js +1 -1
  282. package/lib/telemetry/send-cli-trace-log.js +1 -1
  283. package/lib/telemetry/send-platform-issue-collect-log.js +1 -1
  284. package/lib/utils/ai_config.js +1 -1
  285. package/lib/utils/apply-jq-filter.js +1 -1
  286. package/lib/utils/cdn-config.js +1 -1
  287. package/lib/utils/check-sdk-version.js +1 -1
  288. package/lib/utils/cli-version-check.js +1 -1
  289. package/lib/utils/cli-version-policy.js +1 -1
  290. package/lib/utils/config.js +1 -1
  291. package/lib/utils/entity-with-id.js +1 -1
  292. package/lib/utils/file-utils.js +1 -1
  293. package/lib/utils/guides-cdn.js +1 -1
  294. package/lib/utils/http-client.js +1 -1
  295. package/lib/utils/is-non-interactive.js +1 -1
  296. package/lib/utils/logger.js +1 -1
  297. package/lib/utils/params.js +1 -1
  298. package/lib/utils/platform.js +1 -1
  299. package/lib/utils/rules-cdn.js +1 -1
  300. package/lib/utils/sleep.js +1 -1
  301. package/lib/utils/template-replacer.js +1 -1
  302. package/lib/utils/update-notice.js +1 -1
  303. package/lib/utils/version.js +1 -1
  304. package/lib/utils/with-active-cookie.js +1 -1
  305. package/lib/utils/write-cli-side-channel.js +1 -1
  306. package/package.json +1 -1
  307. package/skills/rabetbase/SKILL.md +35 -34
  308. package/skills/rabetbase/guides/backend-function.md +63 -18
  309. package/skills/rabetbase/guides/bff-creation-workflow.md +2 -0
  310. package/skills/rabetbase/guides/{react-custom-page-workflow.md → custom-page-workflow.md} +45 -45
  311. package/skills/rabetbase/guides/page-development-workflow.md +22 -22
  312. package/skills/rabetbase/knowledge/{react-page → custom-page}/components.md +2 -2
  313. package/skills/rabetbase/knowledge/{react-page → custom-page}/generation-standards.md +6 -6
  314. package/skills/rabetbase/knowledge/page-schema/LrSmartTable.md +6 -6
  315. package/skills/rabetbase/knowledge/page-schema/external-resources-usage.md +1 -1
  316. package/skills/rabetbase/references/rabetbase-bff-create.md +2 -0
  317. package/skills/rabetbase/references/{rabetbase-standard-page-status.md → rabetbase-data-list-status.md} +6 -6
  318. package/skills/rabetbase/references/rabetbase-dataset-generate.md +1 -1
  319. package/skills/rabetbase/references/rabetbase-dataset-relation-mutations.md +1 -1
  320. package/skills/rabetbase/references/rabetbase-dataset-relations.md +1 -1
  321. package/skills/rabetbase/references/rabetbase-dataset-restore.md +1 -1
  322. package/skills/rabetbase/references/rabetbase-menu-list.md +4 -2
  323. package/skills/rabetbase/references/rabetbase-menu-visibility-update.md +59 -0
  324. package/skills/rabetbase/references/rabetbase-page-create.md +31 -0
  325. package/skills/rabetbase/references/{rabetbase-page-react-detail.md → rabetbase-page-custom-detail.md} +5 -5
  326. package/skills/rabetbase/references/{rabetbase-page-react-list.md → rabetbase-page-custom-list.md} +4 -4
  327. package/skills/rabetbase/references/{rabetbase-page-react-publish.md → rabetbase-page-custom-publish.md} +6 -6
  328. package/skills/rabetbase/references/{rabetbase-page-react-update.md → rabetbase-page-custom-update.md} +6 -6
  329. package/skills/rabetbase/references/rabetbase-page-generate-start.md +5 -4
  330. package/skills/rabetbase/references/rabetbase-page-generate-status.md +4 -4
  331. package/skills/rabetbase/references/rabetbase-page-pull.md +2 -2
  332. package/skills/rabetbase/references/rabetbase-page-relation-binding.md +1 -1
  333. package/skills/rabetbase/references/rabetbase-page-restore.md +7 -7
  334. package/skills/rabetbase/references/rabetbase-page-sync.md +3 -3
  335. package/skills/rabetbase.manifest.json +13 -12
  336. package/lib/commands/page/react/create.d.ts +0 -2
  337. package/lib/commands/page/react/create.js +0 -1
  338. package/lib/commands/page/react/detail.js +0 -1
  339. package/lib/commands/page/react/list.js +0 -1
  340. package/lib/commands/page/react/publish.js +0 -1
  341. package/lib/commands/page/react/shared.js +0 -1
  342. package/lib/commands/page/react/syntax.js +0 -1
  343. package/lib/commands/page/react/template.js +0 -1
  344. package/lib/commands/page/react/update.js +0 -1
  345. package/lib/commands/page/standard-page-status.js +0 -1
  346. package/skills/rabetbase/references/rabetbase-page-react-create.md +0 -29
  347. /package/lib/commands/page/{react → custom}/template.d.ts +0 -0
@@ -0,0 +1,31 @@
1
+ # page create
2
+
3
+ 创建 JSX 自定义页面,并同时创建菜单入口。命令固定返回 `pageType=CUSTOM`。
4
+
5
+ 该命令不接受 `--page-type`。工作台、看板、门户或复杂交互仍然属于 CUSTOM 页面;`rabetbase project` 管理独立子应用工程,不是页面类型或复杂页面的兜底入口。
6
+
7
+ ```bash
8
+ rabetbase page create --page-pattern BLANK --name "客户看板" --appcode <appCode> --dry-run --format compress
9
+ rabetbase page create --page-pattern BLANK --name "客户看板" --parent-menu-id 100 --appcode <appCode>
10
+ rabetbase page create --name "客户看板" --page-content '<json>' --appcode <appCode>
11
+ ```
12
+
13
+ ## 参数
14
+
15
+ | 参数 | 必填 | 说明 |
16
+ |---|---|---|
17
+ | `--name <name>` | 否 | 可选页面名称,1–100 个字符;省略时默认 `自定义页面_<timestamp>` |
18
+ | `--parent-menu-id <id>` | 否 | 父菜单 ID |
19
+ | `--page-pattern <pattern>` | 条件必填 | 页面模式;当前只支持 `BLANK`,与 `--page-content` 必须且只能提供一个 |
20
+ | `--page-content <json>` | 条件必填 | 完整页面文件 JSON;对象的键为相对路径,值为文件内容,与 `--page-pattern` 必须且只能提供一个 |
21
+ | `--appcode <code>` | 是 | 目标应用 code |
22
+
23
+ ## 执行步骤
24
+
25
+ 1. 使用基础模板时传 `--page-pattern BLANK`;已有完整源码时只传 `--page-content`。
26
+ 2. 使用 `--dry-run` 确认页面名称、父菜单与最终页面文件。
27
+ 3. 确认后使用相同参数执行创建。
28
+ 4. 从结构化输出的 `data.after.pageId` 确认新页面 ID,并核对 `data.pageType=CUSTOM`;模式创建返回 `data.pagePattern=BLANK`,完整源码创建返回 `null`。
29
+ 5. 输出的 `pageUrl` 用于查看最新保存内容,包含尚未发布的修改;`editPageUrl` 用于打开页面编辑器,继续修改页面。
30
+
31
+ 页面创建始终同时创建菜单。`BLANK` 模式会按应用语言设置生成词包;读取设置失败时使用默认中英文词包。未发布模式会在本地失败,不请求服务端。
@@ -1,16 +1,16 @@
1
- # page react-detail
1
+ # page custom-detail
2
2
 
3
- 查询 React 自定义页面详情。
3
+ 查询自定义页面详情。
4
4
 
5
5
  ```bash
6
- rabetbase page react-detail --id <pageId> --format compress
6
+ rabetbase page custom-detail --id <pageId> --format compress
7
7
  ```
8
8
 
9
9
  ## 参数
10
10
 
11
11
  | 参数 | 必填 | 说明 |
12
12
  |---|---|---|
13
- | `--id <pageId>` | 是 | React 自定义页面 ID |
13
+ | `--id <pageId>` | 是 | 自定义页面 ID |
14
14
  | `--appcode <code>` | 否 | 目标应用 code,省略时根据 `pageId` 查询 |
15
15
 
16
16
  ## 输出
@@ -23,4 +23,4 @@ rabetbase page react-detail --id <pageId> --format compress
23
23
  - `runtimePageUrl`:查看已发布内容的页面地址,仅在有已发布内容时返回;格式为 `https://<appCode>.app.lovrabet.com/<pageCode>`(线上)或 `https://<appCode>.daily.lovrabet.com/<pageCode>`(日常)
24
24
  - `editPageUrl`:打开页面编辑器的地址,可继续修改页面;线上为 `https://app.lovrabet.com/app/<appCode>/ide/<pageId>`,日常为 `https://daily.lovrabet.com/web-app/app/<appCode>/ide/<pageId>`
25
25
 
26
- `data.codeContent` 是当前完整页面文件,可在本地完成新增、修改或删除后,作为 `page react-update --page-content <json>` 的完整页面内容提交。
26
+ `data.codeContent` 是当前完整页面文件,可在本地完成新增、修改或删除后,作为 `page custom-update --page-content <json>` 的完整页面内容提交。
@@ -1,14 +1,14 @@
1
- # 查询 React 自定义页面 ID
1
+ # 查询自定义页面 ID
2
2
 
3
3
  ## 命令
4
4
 
5
5
  ```bash
6
- rabetbase page react-list --appcode <appCode> --format json
6
+ rabetbase page custom-list --appcode <appCode> --format json
7
7
  ```
8
8
 
9
9
  ## 适用场景
10
10
 
11
- 需要查找 React 自定义页面的 `pageId`,再执行 `page react-detail`、`page react-update` 或 `page react-publish`。
11
+ 需要查找 自定义页面的 `pageId`,再执行 `page custom-detail`、`page custom-update` 或 `page custom-publish`。
12
12
 
13
13
  ## 参数
14
14
 
@@ -16,7 +16,7 @@ rabetbase page react-list --appcode <appCode> --format json
16
16
 
17
17
  ## 输出
18
18
 
19
- `data.pages` 是当前应用中可操作的 React 自定义页面列表
19
+ `data.pages` 是当前应用中可操作的 自定义页面列表
20
20
 
21
21
  - `label`:页面名称
22
22
  - `pageUrl`:查看最新保存内容的页面地址,包含尚未发布的修改;日常为 `https://daily.lovrabet.com/web-app/app/<appCode>/pages/<path>`,线上为 `https://app.lovrabet.com/app/<appCode>/pages/<path>`
@@ -1,22 +1,22 @@
1
- # page react-publish
1
+ # page custom-publish
2
2
 
3
- 发布 React 自定义页面的当前保存内容。
3
+ 发布自定义页面的当前保存内容。
4
4
 
5
5
  ```bash
6
- rabetbase page react-publish --id <pageId> --dry-run --format compress
7
- rabetbase page react-publish --id <pageId> --remark "发布说明"
6
+ rabetbase page custom-publish --id <pageId> --dry-run --format compress
7
+ rabetbase page custom-publish --id <pageId> --remark "发布说明"
8
8
  ```
9
9
 
10
10
  ## 参数
11
11
 
12
12
  | 参数 | 必填 | 说明 |
13
13
  |---|---|---|
14
- | `--id <pageId>` | 是 | React 自定义页面 ID |
14
+ | `--id <pageId>` | 是 | 自定义页面 ID |
15
15
  | `--remark <text>` | 否 | 发布备注 |
16
16
 
17
17
  ## 执行步骤
18
18
 
19
- 1. 先使用 `page react-detail` 检查 `status` 和页面版本
19
+ 1. 先使用 `page custom-detail` 检查 `status` 和页面版本
20
20
  2. `status` 为 `FORMAL` 时表示当前内容已经发布,跳过发布,继续查看已发布页面或后续流程
21
21
  3. `status` 不是 `FORMAL` 时,使用 `--dry-run` 确认目标页面和发布备注
22
22
  4. 审阅预览后,使用相同参数移除 `--dry-run` 执行发布
@@ -1,23 +1,23 @@
1
- # page react-update
1
+ # page custom-update
2
2
 
3
- 以完整页面文件 JSON 更新 React 自定义页面,并创建新的保存版本。未包含的文件会被删除。
3
+ 以完整页面文件 JSON 更新 自定义页面,并创建新的保存版本。未包含的文件会被删除。
4
4
 
5
5
  ```bash
6
- rabetbase page react-update --id <pageId> --page-content '<json>' --dry-run --format compress
7
- rabetbase page react-update --id <pageId> --page-content '<json>' --appcode <appCode>
6
+ rabetbase page custom-update --id <pageId> --page-content '<json>' --dry-run --format compress
7
+ rabetbase page custom-update --id <pageId> --page-content '<json>' --appcode <appCode>
8
8
  ```
9
9
 
10
10
  ## 参数
11
11
 
12
12
  | 参数 | 必填 | 说明 |
13
13
  |---|---|---|
14
- | `--id <pageId>` | 是 | React 自定义页面 ID |
14
+ | `--id <pageId>` | 是 | 自定义页面 ID |
15
15
  | `--page-content <json>` | 是 | 完整页面文件 JSON;对象的键为相对路径,值为文件内容 |
16
16
  | `--appcode <code>` | 否 | 目标应用 code,省略时根据 `pageId` 查询 |
17
17
 
18
18
  ## 执行步骤
19
19
 
20
- 1. 先使用 `page react-detail` 读取 `data.codeContent` 中的完整页面文件。
20
+ 1. 先使用 `page custom-detail` 读取 `data.codeContent` 中的完整页面文件。
21
21
  2. 在本地完成所有文件新增、修改或删除后,使用 `--dry-run` 确认完整页面文件。
22
22
  3. 确认后使用相同参数执行更新。
23
23
  4. 从结构化输出的 `data.after.version` 确认已保存新版本。
@@ -1,6 +1,6 @@
1
1
  # page generate-start
2
2
 
3
- 异步提交或复用智能列表页(Smart List Page)生成任务。
3
+ 异步提交或复用数据列表页(Data List Page)生成任务。
4
4
 
5
5
  ## 命令
6
6
 
@@ -17,10 +17,11 @@ rabetbase page generate-start --alias order --apply --format json
17
17
 
18
18
  ## 行为说明
19
19
 
20
- - 这是智能列表页生成的 **async-first 提交入口**。
20
+ - 这是数据列表页生成的 **async-first 提交入口**。
21
21
  - **默认仅返回 dry-run 预览,不会调用 `generate-standard-pages/start`**;需要真正提交任务必须显式加 `--apply`。`--dry-run` 与不传 `--apply` 行为等价。
22
- - CLI 会先查 `standard-page-status` 做前置判定。
22
+ - CLI 会先执行 `page data-list-status` 做前置判定;底层仍调用既有服务端 `standard-page-status` 接口。
23
23
  - 若允许生成且传入 `--apply`,CLI 会自动生成 `clientOperationId`,并调用 Java 侧 `generate-standard-pages/start`。
24
+ - 提交结果固定返回 `pageType=DATA_LIST` 与 `pagePattern=CRUD_PAGE_SET`;命令不接受 `--page-type` 或 `--page-pattern`。
24
25
  - 返回结果里的 `operationId` 是服务端 job 主标识;`clientOperationId` 是调用方恢复 / 幂等锚点。
25
26
  - `query.command` 默认给出 `operationId` 查询;调用方若只保留了 `clientOperationId`,也可以用它恢复到同一条任务查询。
26
27
  - Agent / 自动化编排优先直接复用返回值里的 `query.command`,不要自己重新拼接恢复查询命令。
@@ -29,4 +30,4 @@ rabetbase page generate-start --alias order --apply --format json
29
30
  ## 参考
30
31
 
31
32
  - [rabetbase-page-generate-status.md](rabetbase-page-generate-status.md)
32
- - [rabetbase-standard-page-status.md](rabetbase-standard-page-status.md)
33
+ - [rabetbase-data-list-status.md](rabetbase-data-list-status.md)
@@ -1,6 +1,6 @@
1
1
  # page generate-status
2
2
 
3
- 查询智能列表页(Smart List Page)生成任务状态。
3
+ 查询数据列表页(Data List Page)生成任务状态。
4
4
 
5
5
  ## 命令
6
6
 
@@ -20,13 +20,13 @@ rabetbase page generate-status --datasetcode 097b7361b76c42bcb12b923fa5a08861 --
20
20
  ## 行为说明
21
21
 
22
22
  - 命令查询的是**任务状态**,不是页面事实。
23
- - 当任务进入成功终态时,CLI 会补查 `standard-page-status`,把页面事实一并附在结果里,方便你直接判断是否形成完整智能列表页组。
23
+ - 当任务进入成功终态时,CLI 会补查 `page data-list-status`,把页面事实一并附在结果里,方便你直接判断是否形成完整数据列表页组。
24
24
  - 若任务仍在 `PENDING/PROCESSING/RUNNING`,结果会保持机器可读的 `status / nextAction / query`。
25
25
  - 提交生成后保存 `taskId`、`operationId` 与 `clientOperationId`;超时、未知状态或网络失败时复用原标识查询,不重新执行 `generate-start --apply`,不得自动重提。
26
- - 成功终态时,页面组锚点位于 `data.standardPageStatus.pageSets[].versionTag`。存在多个完整组、残留页或冲突时交给用户确认,不猜测 `versionTag`。
26
+ - 成功终态时,页面组锚点位于 `data.dataListPageStatus.pageSets[].versionTag`。存在多个完整组、残留页或冲突时交给用户确认,不猜测 `versionTag`。
27
27
  - 确认页面组后,使用 `page pull --datasetcode <code> --version-tag <tag>` 精确拉取。
28
28
 
29
29
  ## 参考
30
30
 
31
31
  - [rabetbase-page-generate-start.md](rabetbase-page-generate-start.md)
32
- - [rabetbase-standard-page-status.md](rabetbase-standard-page-status.md)
32
+ - [rabetbase-data-list-status.md](rabetbase-data-list-status.md)
@@ -1,6 +1,6 @@
1
1
  # page pull
2
2
 
3
- 拉取智能列表页(Smart List Page,DOV2 `smart_page`)的 formal schema 到本地 **`.rabetbase/page/<appCode>/`**,进入 `pull -> IDE 编辑 -> push` 工作流。
3
+ 拉取数据列表页(Data List Page,DOV2 `smart_page`)的 formal schema 到本地 **`.rabetbase/page/<appCode>/`**,进入 `pull -> IDE 编辑 -> push` 工作流。
4
4
 
5
5
  ## 命令
6
6
 
@@ -34,7 +34,7 @@ rabetbase page pull --datasetcode 097b7361b76c42bcb12b923fa5a08861 --dry-run --f
34
34
  - 单页模式:按 `pageId` 拉取单个页面并更新 lock
35
35
  - 批量模式:按数据集筛选关联页面;若存在多个 `versionTag` 组且未指定 `--version-tag`,命令会 fail-fast
36
36
  - 本地文件存在未推送修改且未传 `--force` 时,会跳过或报冲突
37
- - 页面生成链路中的 `versionTag` 来自 `page generate-status` 的 `data.standardPageStatus.pageSets[]`;存在多个候选组时先由用户确认,不按顺序或时间猜测
37
+ - 页面生成链路中的 `versionTag` 来自 `page generate-status` 的 `data.dataListPageStatus.pageSets[]`;存在多个候选组时先由用户确认,不按顺序或时间猜测
38
38
 
39
39
  ## 提示
40
40
 
@@ -1,6 +1,6 @@
1
1
  # page relation binding
2
2
 
3
- 页面关系绑定用于校准 Smart List Page 中选择类字段的 options 来源。执行前先读取数据集关系事实,再审计页面 schema,最后通过本地 schema 工作流做可回滚修改。
3
+ 页面关系绑定用于校准 Data List Page 中选择类字段的 options 来源。执行前先读取数据集关系事实,再审计页面 schema,最后通过本地 schema 工作流做可回滚修改。
4
4
 
5
5
  ## 执行流程
6
6
 
@@ -1,13 +1,13 @@
1
1
  # page restore
2
2
 
3
- 恢复当前应用下一条已删除的 STANDARD JSX 页面。
3
+ 恢复当前应用下一条已删除的数据列表页(Data List Page)或自定义页面(Custom Page)。
4
4
 
5
5
  ## 命令
6
6
 
7
7
  ```bash
8
8
  rabetbase page restore --id 1023895 --dry-run --format json
9
9
  rabetbase page restore --id 1023895 --format json
10
- rabetbase page restore --id 1450 --page-type JSX --format json
10
+ rabetbase page restore --id 1450 --page-type CUSTOM --format json
11
11
  ```
12
12
 
13
13
  ## 参数
@@ -15,17 +15,17 @@ rabetbase page restore --id 1450 --page-type JSX --format json
15
15
  | Flag | 类型 | 必填 | 默认 | 说明 |
16
16
  |------|------|------|------|------|
17
17
  | `--id <pageId>` | number | 是 | — | 已删除页面 ID,必须为正整数 |
18
- | `--page-type <type>` | string | 否 | — | `STANDARD` 或 `JSX`;用于缩小查询范围或消除跨类型同 ID 歧义 |
18
+ | `--page-type <type>` | string | 否 | — | `DATA_LIST` 或 `CUSTOM`;用于缩小查询范围或消除跨类型同 ID 歧义 |
19
19
  | `--dry-run` | boolean | 否 | `false` | 定位页面并预览恢复请求,不执行恢复 |
20
20
  | `--format <fmt>` | string | 否 | `compress` | 输出格式 |
21
21
 
22
22
  ## 行为说明
23
23
 
24
- - 未传 `--page-type` 时,CLI 查询当前应用下 STANDARD 与 JSX 两类已删除页面,并按 `--id` 唯一定位。
25
- - 同一个数字 ID 在两类页面中同时存在时,CLI 不猜测目标;需显式传 `--page-type STANDARD` 或 `--page-type JSX`。
26
- - STANDARD 页面恢复请求只携带页面 ID;JSX 页面恢复请求同时携带当前 `appCode` 和页面 ID。
24
+ - 未传 `--page-type` 时,CLI 查询当前应用下数据列表页与自定义页面两类已删除页面,并按 `--id` 唯一定位。
25
+ - 同一个数字 ID 在两类页面中同时存在时,CLI 不猜测目标;需显式传 `--page-type DATA_LIST` 或 `--page-type CUSTOM`。
26
+ - 数据列表页恢复请求只携带页面 ID;自定义页面恢复请求同时携带当前 `appCode` 和页面 ID。
27
27
  - 自动识别时任一类型查询失败都会终止恢复,避免在无法排除同 ID 歧义时写错目标。
28
- - JSX 恢复返回未更新记录时,按状态已变化或页面已恢复处理,不报告成功。
28
+ - 自定义页面恢复返回未更新记录时,按状态已变化或页面已恢复处理,不报告成功。
29
29
 
30
30
  ## 输出
31
31
 
@@ -1,6 +1,6 @@
1
1
  # page sync
2
2
 
3
- 将数据集字段变更同步到已存在的智能列表页(Smart List Page,DOV2 `smart_page`)。
3
+ 将数据集字段变更同步到已存在的数据列表页(Data List Page,DOV2 `smart_page`)。
4
4
 
5
5
  ## 命令
6
6
 
@@ -21,8 +21,8 @@ rabetbase page sync --datasetcode 097b7361b76c42bcb12b923fa5a08861 --dry-run --f
21
21
 
22
22
  ## 行为说明
23
23
 
24
- - 该命令面向**已有智能列表页**的增量同步场景。
25
- - CLI 会先检查数据集下是否存在未删除的关联智能列表页。
24
+ - 该命令面向**已有数据列表页**的增量同步场景。
25
+ - CLI 会先检查数据集下是否存在未删除的关联数据列表页。
26
26
  - 若当前没有可同步页面,命令会 fail-fast,并提示改走 `rabetbase page generate-start --datasetcode <code>` 这条异步生成路径;具体轮询与回查流程见 [page-development-workflow.md](../guides/page-development-workflow.md)。
27
27
 
28
28
  ## 提示
@@ -2,25 +2,27 @@
2
2
  "schemaVersion": 1,
3
3
  "name": "rabetbase",
4
4
  "packageName": "@lovrabet/rabetbase-cli",
5
- "packageVersion": "2.4.5",
6
- "skillVersion": "2.4.5",
5
+ "packageVersion": "2.4.6-beta.2",
6
+ "skillVersion": "2.4.6-beta.2",
7
7
  "files": [
8
8
  "SKILL.md",
9
9
  "guides/backend-function.md",
10
10
  "guides/best-practices.md",
11
11
  "guides/bff-creation-workflow.md",
12
12
  "guides/conflict-detection.md",
13
+ "guides/custom-page-workflow.md",
13
14
  "guides/data-api-guidelines.md",
14
15
  "guides/database-connection-workflow.md",
15
16
  "guides/frontend-development.md",
16
17
  "guides/legacy-application-blueprint-workflow.md",
17
18
  "guides/menu-anomaly-manual-cleanup.md",
18
19
  "guides/page-development-workflow.md",
19
- "guides/react-custom-page-workflow.md",
20
20
  "guides/sql-creation-workflow.md",
21
21
  "guides/sql-mybatis.md",
22
22
  "guides/troubleshooting.md",
23
23
  "guides/typescript-sdk.md",
24
+ "knowledge/custom-page/components.md",
25
+ "knowledge/custom-page/generation-standards.md",
24
26
  "knowledge/page-schema/LrSmartCreate.md",
25
27
  "knowledge/page-schema/LrSmartDetail.md",
26
28
  "knowledge/page-schema/LrSmartFilter.md",
@@ -31,8 +33,6 @@
31
33
  "knowledge/page-schema/external-resources-usage.md",
32
34
  "knowledge/page-schema/field-components.md",
33
35
  "knowledge/page-schema/syntax-reference.md",
34
- "knowledge/react-page/components.md",
35
- "knowledge/react-page/generation-standards.md",
36
36
  "references/rabetbase-api-list.md",
37
37
  "references/rabetbase-api-pull.md",
38
38
  "references/rabetbase-app-config.md",
@@ -52,6 +52,7 @@
52
52
  "references/rabetbase-codegen-sdk.md",
53
53
  "references/rabetbase-codegen-sql.md",
54
54
  "references/rabetbase-config.md",
55
+ "references/rabetbase-data-list-status.md",
55
56
  "references/rabetbase-dataset-business-group-update.md",
56
57
  "references/rabetbase-dataset-business-groups.md",
57
58
  "references/rabetbase-dataset-delete.md",
@@ -92,18 +93,19 @@
92
93
  "references/rabetbase-menu-regroup-start.md",
93
94
  "references/rabetbase-menu-rename.md",
94
95
  "references/rabetbase-menu-sync.md",
96
+ "references/rabetbase-menu-visibility-update.md",
95
97
  "references/rabetbase-notification-config-list.md",
96
98
  "references/rabetbase-notification-config-mutations.md",
97
99
  "references/rabetbase-ocr.md",
100
+ "references/rabetbase-page-create.md",
101
+ "references/rabetbase-page-custom-detail.md",
102
+ "references/rabetbase-page-custom-list.md",
103
+ "references/rabetbase-page-custom-publish.md",
104
+ "references/rabetbase-page-custom-update.md",
98
105
  "references/rabetbase-page-generate-start.md",
99
106
  "references/rabetbase-page-generate-status.md",
100
107
  "references/rabetbase-page-pull.md",
101
108
  "references/rabetbase-page-push.md",
102
- "references/rabetbase-page-react-create.md",
103
- "references/rabetbase-page-react-detail.md",
104
- "references/rabetbase-page-react-list.md",
105
- "references/rabetbase-page-react-publish.md",
106
- "references/rabetbase-page-react-update.md",
107
109
  "references/rabetbase-page-relation-binding.md",
108
110
  "references/rabetbase-page-restore.md",
109
111
  "references/rabetbase-page-sync.md",
@@ -123,12 +125,11 @@
123
125
  "references/rabetbase-sql-push.md",
124
126
  "references/rabetbase-sql-status.md",
125
127
  "references/rabetbase-sql-validate.md",
126
- "references/rabetbase-standard-page-status.md",
127
128
  "references/rabetbase-task-status.md",
128
129
  "references/rabetbase-tenant-members-list.md",
129
130
  "references/rabetbase-update.md",
130
131
  "references/rabetbase-user-account.md",
131
132
  "references/rabetbase-workspace.md"
132
133
  ],
133
- "digest": "71966020af13e5faefcdb2e4ab6fd25a0574c77e6504bebba4014bdffa7f5c7c"
134
+ "digest": "299283de278e65f16331978753e25d0aa4db41adddfbcbb666903bf76942f352"
134
135
  }
@@ -1,2 +0,0 @@
1
- import type { CommandDefinition } from "../../../framework/types.js";
2
- export declare const pageReactCreate: CommandDefinition;
@@ -1 +0,0 @@
1
- const a147_0x3e0250=a147_0x3ee6;function a147_0x3ee6(_0x54813b,_0x39ef1a){_0x54813b=_0x54813b-0x101;const _0x32f784=a147_0x32f7();let _0x3ee611=_0x32f784[_0x54813b];return _0x3ee611;}(function(_0x404cde,_0x53e40a){const _0x4224a7=a147_0x3ee6,_0x408413=_0x404cde();while(!![]){try{const _0x5b697d=parseInt(_0x4224a7(0x12f))/0x1*(-parseInt(_0x4224a7(0x103))/0x2)+parseInt(_0x4224a7(0x107))/0x3*(-parseInt(_0x4224a7(0x12d))/0x4)+parseInt(_0x4224a7(0x101))/0x5*(-parseInt(_0x4224a7(0x128))/0x6)+-parseInt(_0x4224a7(0x116))/0x7*(-parseInt(_0x4224a7(0x12b))/0x8)+-parseInt(_0x4224a7(0x132))/0x9+-parseInt(_0x4224a7(0x11f))/0xa+-parseInt(_0x4224a7(0x119))/0xb*(-parseInt(_0x4224a7(0x111))/0xc);if(_0x5b697d===_0x53e40a)break;else _0x408413['push'](_0x408413['shift']());}catch(_0x89e5a1){_0x408413['push'](_0x408413['shift']());}}}(a147_0x32f7,0xb4246));import{APPCODE_FLAG}from'../../../commands/common/flags.js';import{buildInitialFiles}from'../../../commands/page/react/template.js';import{createReactPage,getI18nInfo}from'../../../core/api-client.js';import{CliErrors}from'../../../errors.js';import{buildReactPageDevelopmentUrl,buildReactPageEditUrl,parseReactPageContent,validateReactPageContent}from'./shared.js';const DEFAULT_REACT_PAGE_LANGUAGES=[a147_0x3e0250(0x106),'en-US'];function a147_0x32f7(){const _0x4afb6c=['input','3244EGmapm','num','794681fXtlIi','parentMenuId','isNaN','7683336hQoJtL','apiError','appCode','--parent-menu-id\x20must\x20be\x20a\x20positive\x20integer.','pageId','6566395jBsnIl','parent-menu-id','2GhKpLA','compress','stringify','zh-CN','4683gQhSXv','自定义页面_','keys','validation','Application\x20language\x20settings\x20could\x20not\x20be\x20read;\x20default\x20Chinese\x20and\x20English\x20language\x20files\x20were\x20generated.','version','length','POST','files','Optional\x20complete\x20page\x20files\x20as\x20JSON','197724zbtrrw','page.react-create','Create\x20a\x20React\x20custom\x20page\x20with\x20starter\x20files','pageName','string','8141wcaXPA','React\x20custom\x20page\x20was\x20created,\x20but\x20a\x20link\x20to\x20its\x20latest\x20saved\x20content\x20could\x20not\x20be\x20generated.','createMenu','3322rgPYcU','number','/smartapi/webcode/page/create','pageName\x20cannot\x20exceed\x20100\x20characters.','str','isInteger','908040zfkPeQ','Optional\x20React\x20custom\x20page\x20name\x20(1-100\x20characters)','react-create','trim','React\x20custom\x20page\x20creation\x20did\x20not\x20return\x20a\x20valid\x20pageId.','page','write','enableI18n','name','6degEqV','menuId','menuPath','552ZjDivV'];a147_0x32f7=function(){return _0x4afb6c;};return a147_0x32f7();}export const pageReactCreate={'service':a147_0x3e0250(0x124),'command':a147_0x3e0250(0x121),'description':a147_0x3e0250(0x113),'risk':a147_0x3e0250(0x125),'defaultOutputFormat':a147_0x3e0250(0x104),'structuredErrors':!![],'flags':[{'name':a147_0x3e0250(0x127),'type':a147_0x3e0250(0x115),'description':a147_0x3e0250(0x120)},{'name':a147_0x3e0250(0x102),'type':a147_0x3e0250(0x11a),'description':'Optional\x20parent\x20menu\x20id\x20when\x20creating\x20a\x20menu\x20entry'},{'name':'page-content','type':a147_0x3e0250(0x115),'description':a147_0x3e0250(0x110)},APPCODE_FLAG],async 'validate'(_0x4222bf){const _0x5643b1=a147_0x3e0250;await validateReactPageContent(readInput(_0x4222bf)[_0x5643b1(0x10f)]);},async 'dryRun'(_0x4568a5){const _0x4522ac=a147_0x3e0250,{input:_0x14d262}=await prepare(_0x4568a5);return{'method':_0x4522ac(0x10e),'url':_0x4522ac(0x11b),'body':{'appCode':_0x14d262[_0x4522ac(0x134)],'pageName':_0x14d262[_0x4522ac(0x114)],..._0x14d262['parentMenuId']!=null?{'parentMenuId':_0x14d262[_0x4522ac(0x130)]}:{},'createMenu':_0x14d262[_0x4522ac(0x118)],'codeContent':_0x14d262[_0x4522ac(0x10f)]},'description':'Would\x20create\x20React\x20custom\x20page\x20'+JSON[_0x4522ac(0x105)](_0x14d262['pageName'])+'\x20and\x20its\x20menu\x20entry.'};},async 'execute'(_0x276921){const _0x37db04=a147_0x3e0250,_0x1006a3=await prepare(_0x276921),_0x37a0f5=await createReactPage(_0x1006a3[_0x37db04(0x12c)]);if(!Number[_0x37db04(0x11e)](_0x37a0f5[_0x37db04(0x136)])||_0x37a0f5[_0x37db04(0x136)]<=0x0)throw CliErrors[_0x37db04(0x133)](_0x37db04(0x123));return{'ok':!![],'data':buildMutationData(_0x1006a3,_0x37a0f5),'message':'Created\x20React\x20custom\x20page\x20'+_0x37a0f5[_0x37db04(0x136)]+'.'};}};async function prepare(_0xb69fd7){const _0x413252=a147_0x3e0250;if(_0xb69fd7[_0x413252(0x11d)]('page-content')[_0x413252(0x122)]())return{'input':readInput(_0xb69fd7),'warnings':[]};let _0x50fb9b=DEFAULT_REACT_PAGE_LANGUAGES,_0x2bf4b9=[];try{const _0x1cf629=await getI18nInfo(_0xb69fd7[_0x413252(0x134)]);_0x1cf629[_0x413252(0x126)]&&_0x1cf629['langs']?.[_0x413252(0x10d)]&&(_0x50fb9b=_0x1cf629['langs']);}catch{_0x2bf4b9=[_0x413252(0x10b)];}return{'input':readInput(_0xb69fd7,_0x50fb9b),'warnings':_0x2bf4b9};}function readInput(_0x38a89d,_0x3e4cf9=DEFAULT_REACT_PAGE_LANGUAGES){const _0x57670c=a147_0x3e0250,_0x39dee9=_0x38a89d['str'](_0x57670c(0x127))[_0x57670c(0x122)]()||_0x57670c(0x108)+Date['now']();if(_0x39dee9[_0x57670c(0x10d)]>0x64)throw CliErrors[_0x57670c(0x10a)](_0x57670c(0x11c));const _0x58c49c=_0x38a89d[_0x57670c(0x12e)]('parent-menu-id',NaN),_0x5cf278=!Number[_0x57670c(0x131)](_0x58c49c);if(_0x5cf278&&(!Number[_0x57670c(0x11e)](_0x58c49c)||_0x58c49c<=0x0))throw CliErrors[_0x57670c(0x10a)](_0x57670c(0x135));const _0x486a54=_0x38a89d[_0x57670c(0x11d)]('page-content');return{'appCode':_0x38a89d[_0x57670c(0x134)],'pageName':_0x39dee9,..._0x5cf278?{'parentMenuId':_0x58c49c}:{},'createMenu':!![],'files':_0x486a54[_0x57670c(0x122)]()?parseReactPageContent(_0x486a54):buildInitialFiles(_0x39dee9,_0x3e4cf9)};}function buildMutationData(_0x257456,_0x55f6c6){const _0x3c5d60=a147_0x3e0250,{input:_0x354af2}=_0x257456,_0x1563c2=_0x55f6c6&&buildReactPageDevelopmentUrl(_0x354af2[_0x3c5d60(0x134)],_0x55f6c6[_0x3c5d60(0x12a)]),_0x392e8e=_0x55f6c6&&buildReactPageEditUrl(_0x354af2[_0x3c5d60(0x134)],_0x55f6c6['pageId']);return{'operation':_0x3c5d60(0x112),'selector':{'appCode':_0x354af2[_0x3c5d60(0x134)],'pageName':_0x354af2[_0x3c5d60(0x114)]},'before':null,'after':{'pageId':_0x55f6c6?.['pageId']??null,'pageName':_0x55f6c6?.['pageName']??_0x354af2['pageName'],'appCode':_0x55f6c6?.['appCode']??_0x354af2['appCode'],'version':_0x55f6c6?.[_0x3c5d60(0x10c)]??null,'menuId':_0x55f6c6?.[_0x3c5d60(0x129)]??null,'menuPath':_0x55f6c6?.[_0x3c5d60(0x12a)]??null,'files':_0x55f6c6?.['files']??Object[_0x3c5d60(0x109)](_0x354af2[_0x3c5d60(0x10f)])},'dryRun':_0x55f6c6===undefined,'request':_0x354af2,..._0x1563c2?{'pageUrl':_0x1563c2}:{},..._0x392e8e?{'editPageUrl':_0x392e8e}:{},'warnings':[..._0x257456['warnings'],..._0x55f6c6&&!_0x1563c2?[_0x3c5d60(0x117)]:[]]};}
@@ -1 +0,0 @@
1
- const a148_0xec7532=a148_0x2282;function a148_0x572a(){const _0x2de429=['4613ESUGFu','1002ACXpJm','isNaN','5500719cbYPOU','25910210KKNDYR','appcode','Show\x20a\x20React\x20custom\x20page\x20and\x20all\x20of\x20its\x20files','padStart','55WfQsKI','366600EChdYv','869902WbOzaX','getDate','react-detail','10532yEymMb','getHours','pageCode','React\x20custom\x20page\x20ID','number','page','608CqegnZ','cookie','join','getMinutes','compress','trim','getSeconds','getMonth','393318xKaOTk'];a148_0x572a=function(){return _0x2de429;};return a148_0x572a();}function a148_0x2282(_0x524b2d,_0x27ad0c){_0x524b2d=_0x524b2d-0xd6;const _0x572a23=a148_0x572a();let _0x22820c=_0x572a23[_0x524b2d];return _0x22820c;}(function(_0x471b44,_0x898e89){const _0x5d3b91=a148_0x2282,_0xe37328=_0x471b44();while(!![]){try{const _0x121974=-parseInt(_0x5d3b91(0xe7))/0x1+-parseInt(_0x5d3b91(0xe6))/0x2+parseInt(_0x5d3b91(0xde))/0x3*(-parseInt(_0x5d3b91(0xea))/0x4)+-parseInt(_0x5d3b91(0xe5))/0x5*(parseInt(_0x5d3b91(0xdc))/0x6)+parseInt(_0x5d3b91(0xdd))/0x7*(-parseInt(_0x5d3b91(0xf0))/0x8)+parseInt(_0x5d3b91(0xe0))/0x9+parseInt(_0x5d3b91(0xe1))/0xa;if(_0x121974===_0x898e89)break;else _0xe37328['push'](_0xe37328['shift']());}catch(_0x4767ce){_0xe37328['push'](_0xe37328['shift']());}}}(a148_0x572a,0x79af5));import{getReactPageSource}from'../../../core/api-client.js';import{buildReactPageEditUrl,buildReactPageRuntimeUrl,readReactPageId,REACT_PAGE_APPCODE_FLAG_OPTIONAL,resolveReactPageDevelopmentUrl}from'./shared.js';export const pageReactDetail={'service':a148_0xec7532(0xef),'command':a148_0xec7532(0xe9),'description':a148_0xec7532(0xe3),'risk':'read','defaultOutputFormat':a148_0xec7532(0xd8),'structuredErrors':!![],'requiresAppCode':![],'flags':[{'name':'id','type':a148_0xec7532(0xee),'required':!![],'description':a148_0xec7532(0xed)},REACT_PAGE_APPCODE_FLAG_OPTIONAL],async 'validate'(_0x58cab4){readReactPageId(_0x58cab4);},async 'execute'(_0x357a19){const _0x64dc28=a148_0xec7532,_0x18e8bf=readReactPageId(_0x357a19),_0x418504=await getReactPageSource(_0x18e8bf),{bundle:_0x360089,createTime:_0x5f0b48,updateTime:_0x4c6d26,..._0x1fbdf2}=_0x418504,_0x21a5ca=_0x418504['id']??_0x18e8bf,_0xd77bd7=_0x418504['appCode']?.['trim']()||_0x357a19['str'](_0x64dc28(0xe2))[_0x64dc28(0xd9)](),_0x2998b8=buildReactPageRuntimeUrl(_0xd77bd7,_0x418504[_0x64dc28(0xec)]),_0x52d5a2=buildReactPageEditUrl(_0xd77bd7,_0x21a5ca),_0xf2e3cf=await resolveReactPageDevelopmentUrl(_0xd77bd7,_0x21a5ca,_0x357a19[_0x64dc28(0xf1)]);return{'ok':!![],'data':{..._0x1fbdf2,..._0x2998b8?{'runtimePageUrl':_0x2998b8}:{},..._0xf2e3cf?{'pageUrl':_0xf2e3cf}:{},..._0x52d5a2?{'editPageUrl':_0x52d5a2}:{},..._0x5f0b48==null?{}:{'createTime':formatTime(_0x5f0b48)},..._0x4c6d26==null?{}:{'updateTime':formatTime(_0x4c6d26)}},'message':'Retrieved\x20React\x20custom\x20page\x20'+_0x18e8bf+'.'};}};function formatTime(_0x496c08){const _0x5c5d8e=a148_0xec7532,_0x9e6943=new Date(_0x496c08);if(Number[_0x5c5d8e(0xdf)](_0x9e6943['getTime']()))return String(_0x496c08);const _0xbb8587=[_0x9e6943['getFullYear'](),String(_0x9e6943[_0x5c5d8e(0xdb)]()+0x1)[_0x5c5d8e(0xe4)](0x2,'0'),String(_0x9e6943[_0x5c5d8e(0xe8)]())[_0x5c5d8e(0xe4)](0x2,'0')]['join']('-'),_0x5b3fe2=[String(_0x9e6943[_0x5c5d8e(0xeb)]())[_0x5c5d8e(0xe4)](0x2,'0'),String(_0x9e6943[_0x5c5d8e(0xd7)]())[_0x5c5d8e(0xe4)](0x2,'0'),String(_0x9e6943[_0x5c5d8e(0xda)]())[_0x5c5d8e(0xe4)](0x2,'0')][_0x5c5d8e(0xd6)](':');return _0xbb8587+'\x20'+_0x5b3fe2;}
@@ -1 +0,0 @@
1
- function a149_0x36d9(){const _0x5d3f56=['914081dMmXAP','read','length','type','path','page','\x20React\x20custom\x20page(s).','748638Zdlahv','pageId','3vttCVA','5737348ZVNYGV','24wNBrfm','80czTJTL','189402gAiVwj','List\x20React\x20custom\x20pages\x20in\x20the\x20current\x20app','2888154lsfdaY','8916210aohpCB','appCode','204lBjdBC','3021542nhbrcr','Found\x20','1XqKBAr','menus','react','No\x20React\x20custom\x20pages\x20found.'];a149_0x36d9=function(){return _0x5d3f56;};return a149_0x36d9();}const a149_0x2c2b09=a149_0x3727;function a149_0x3727(_0x4dc785,_0x21740c){_0x4dc785=_0x4dc785-0x146;const _0x36d9ed=a149_0x36d9();let _0x372794=_0x36d9ed[_0x4dc785];return _0x372794;}(function(_0x35ee2a,_0x3d2a67){const _0x6791b8=a149_0x3727,_0x1c8498=_0x35ee2a();while(!![]){try{const _0x1f569c=parseInt(_0x6791b8(0x14a))/0x1*(-parseInt(_0x6791b8(0x148))/0x2)+parseInt(_0x6791b8(0x157))/0x3*(parseInt(_0x6791b8(0x158))/0x4)+parseInt(_0x6791b8(0x15a))/0x5*(parseInt(_0x6791b8(0x15b))/0x6)+-parseInt(_0x6791b8(0x14e))/0x7*(-parseInt(_0x6791b8(0x159))/0x8)+-parseInt(_0x6791b8(0x15d))/0x9+-parseInt(_0x6791b8(0x15e))/0xa+parseInt(_0x6791b8(0x155))/0xb*(parseInt(_0x6791b8(0x147))/0xc);if(_0x1f569c===_0x3d2a67)break;else _0x1c8498['push'](_0x1c8498['shift']());}catch(_0x4a0522){_0x1c8498['push'](_0x1c8498['shift']());}}}(a149_0x36d9,0xbabae));import{APPCODE_FLAG}from'../../../commands/common/flags.js';import{fetchMenuSnapshot}from'../../../commands/menu/shared/facts.js';import{buildReactPageDevelopmentUrl,buildReactPageEditUrl}from'./shared.js';export const pageReactList={'service':a149_0x2c2b09(0x153),'command':'react-list','description':a149_0x2c2b09(0x15c),'risk':a149_0x2c2b09(0x14f),'defaultOutputFormat':'compress','structuredErrors':!![],'flags':[APPCODE_FLAG],async 'execute'(_0x34b169){const _0x1d1ff0=a149_0x2c2b09,_0x15b196=(await fetchMenuSnapshot(_0x34b169['appCode'],_0x34b169['cookie']))[_0x1d1ff0(0x14b)]['flatMap'](_0x31fe70=>{const _0x395fae=_0x1d1ff0;if(_0x31fe70[_0x395fae(0x151)]!==_0x395fae(0x14c)||_0x31fe70['pageId']==null)return[];const _0x6b8707=buildReactPageDevelopmentUrl(_0x34b169[_0x395fae(0x146)],_0x31fe70[_0x395fae(0x152)]),_0x2983bc=buildReactPageEditUrl(_0x34b169[_0x395fae(0x146)],_0x31fe70[_0x395fae(0x156)]);return[{'pageId':_0x31fe70[_0x395fae(0x156)],'label':_0x31fe70['label'],..._0x6b8707?{'pageUrl':_0x6b8707}:{},..._0x2983bc?{'editPageUrl':_0x2983bc}:{}}];});return{'ok':!![],'data':{'pages':_0x15b196},'message':_0x15b196['length']===0x0?_0x1d1ff0(0x14d):_0x1d1ff0(0x149)+_0x15b196[_0x1d1ff0(0x150)]+_0x1d1ff0(0x154)};}};
@@ -1 +0,0 @@
1
- const a150_0x502aaa=a150_0x1fc8;(function(_0x1ba5ad,_0xe5d363){const _0x13a577=a150_0x1fc8,_0x4e3cce=_0x1ba5ad();while(!![]){try{const _0x10f038=-parseInt(_0x13a577(0xe4))/0x1*(parseInt(_0x13a577(0xef))/0x2)+parseInt(_0x13a577(0xed))/0x3*(parseInt(_0x13a577(0xe3))/0x4)+-parseInt(_0x13a577(0xf3))/0x5+parseInt(_0x13a577(0xe6))/0x6*(parseInt(_0x13a577(0xde))/0x7)+-parseInt(_0x13a577(0xdc))/0x8+parseInt(_0x13a577(0xec))/0x9+parseInt(_0x13a577(0xea))/0xa;if(_0x10f038===_0xe5d363)break;else _0x4e3cce['push'](_0x4e3cce['shift']());}catch(_0x5f26b6){_0x4e3cce['push'](_0x4e3cce['shift']());}}}(a150_0x43e0,0x8e5d5));import{getReactPageSource,publishReactPage}from'../../../core/api-client.js';function a150_0x1fc8(_0x205d61,_0x252b8a){_0x205d61=_0x205d61-0xd9;const _0x43e0da=a150_0x43e0();let _0x1fc8ac=_0x43e0da[_0x205d61];return _0x1fc8ac;}import{CliErrors}from'../../../errors.js';import{buildReactPageEditUrl,buildReactPageRuntimeUrl,readReactPageId,resolveReactPageDevelopmentUrl}from'./shared.js';export const pageReactPublish={'service':a150_0x502aaa(0xfd),'command':a150_0x502aaa(0xff),'description':a150_0x502aaa(0xe9),'risk':a150_0x502aaa(0x100),'defaultOutputFormat':a150_0x502aaa(0xf4),'structuredErrors':!![],'requiresAppCode':![],'flags':[{'name':'id','type':'number','required':!![],'description':a150_0x502aaa(0xf8)},{'name':a150_0x502aaa(0xf2),'type':a150_0x502aaa(0xe5),'description':a150_0x502aaa(0xfb)}],async 'validate'(_0x3c14d7){readReactPageId(_0x3c14d7);},async 'dryRun'(_0x11421e){const _0x5747b4=a150_0x502aaa,_0x13f4ac=readInput(_0x11421e);return{'method':_0x5747b4(0xf5),'url':_0x5747b4(0xf1),'body':{'id':_0x13f4ac[_0x5747b4(0xeb)],..._0x13f4ac['remark']?{'remark':_0x13f4ac[_0x5747b4(0xf2)]}:{}},'description':_0x5747b4(0xdd)+_0x13f4ac[_0x5747b4(0xeb)]+'.'};},async 'execute'(_0x2876fd){const _0x248387=a150_0x502aaa,_0x3c8062=readInput(_0x2876fd);await getReactPageSource(_0x3c8062['pageId']);const _0x31a1e4=await publishReactPage(_0x3c8062);if(!Number['isInteger'](_0x31a1e4)||_0x31a1e4!==_0x3c8062['pageId'])throw CliErrors[_0x248387(0xfe)](_0x248387(0xda));const _0x13a484=await getReactPageSource(_0x3c8062[_0x248387(0xeb)]);if(_0x13a484[_0x248387(0xdf)]!==_0x248387(0xe8))throw CliErrors[_0x248387(0xfe)](_0x248387(0xf9)+(_0x13a484['status']??_0x248387(0xf7))+'.');const _0x15a138=_0x13a484[_0x248387(0xe7)]?.['trim'](),_0x163f36=buildReactPageEditUrl(_0x15a138,_0x3c8062['pageId']),_0x5fdefa=await resolveReactPageDevelopmentUrl(_0x15a138,_0x3c8062[_0x248387(0xeb)],_0x2876fd['cookie']),_0x3f66aa=buildMutationData(_0x3c8062,!![],_0x5fdefa,_0x163f36);_0x15a138&&!_0x5fdefa&&_0x3f66aa[_0x248387(0xfc)][_0x248387(0xe1)](_0x248387(0xe0));const _0x1d7513=buildReactPageRuntimeUrl(_0x13a484['appCode'],_0x13a484[_0x248387(0xf0)]);return _0x1d7513?_0x3f66aa[_0x248387(0xf6)]=_0x1d7513:_0x3f66aa[_0x248387(0xfc)][_0x248387(0xe1)](_0x248387(0xdb)),{'ok':!![],'data':_0x3f66aa,'message':_0x248387(0xfa)+_0x3c8062[_0x248387(0xeb)]+'.'};}};function a150_0x43e0(){const _0x89946c=['800167IVEqTT','string','54xTRZjR','appCode','FORMAL','Publish\x20the\x20latest\x20saved\x20content\x20of\x20a\x20React\x20custom\x20page','6930120NlUXhr','pageId','7202547fEqhpG','91203WwShWh','trim','2DIFnnR','pageCode','/smartapi/webcode/file/publish','remark','2785540ynscqT','compress','POST','runtimePageUrl','unknown','React\x20custom\x20page\x20ID','React\x20custom\x20page\x20publish\x20did\x20not\x20reach\x20published\x20status:\x20','Published\x20React\x20custom\x20page\x20','Optional\x20publish\x20remark','warnings','page','apiError','react-publish','write','page.react-publish','React\x20custom\x20page\x20publish\x20did\x20not\x20return\x20the\x20expected\x20page\x20ID.','Published\x20successfully,\x20but\x20a\x20link\x20to\x20the\x20published\x20page\x20could\x20not\x20be\x20generated.','4766696uzOiRW','Would\x20publish\x20React\x20custom\x20page\x20','267337wevcmR','status','Published\x20successfully,\x20but\x20a\x20link\x20to\x20the\x20latest\x20saved\x20content\x20could\x20not\x20be\x20generated.','push','str','92GroyAa'];a150_0x43e0=function(){return _0x89946c;};return a150_0x43e0();}function readInput(_0x5d0ceb){const _0x4a6812=a150_0x502aaa,_0x14432d=readReactPageId(_0x5d0ceb),_0x39ca96=_0x5d0ceb[_0x4a6812(0xe2)](_0x4a6812(0xf2))[_0x4a6812(0xee)]();return{'pageId':_0x14432d,..._0x39ca96?{'remark':_0x39ca96}:{}};}function buildMutationData(_0x34c61b,_0x56f90b=![],_0x4ef7db,_0x2d5e6f){const _0x47e12c=a150_0x502aaa;return{'operation':_0x47e12c(0xd9),'selector':{'pageId':_0x34c61b[_0x47e12c(0xeb)]},'before':null,'after':{'pageId':_0x34c61b[_0x47e12c(0xeb)],'status':_0x47e12c(0xe8)},'dryRun':!_0x56f90b,'request':_0x34c61b,..._0x4ef7db?{'pageUrl':_0x4ef7db}:{},..._0x2d5e6f?{'editPageUrl':_0x2d5e6f}:{},'warnings':[]};}
@@ -1 +0,0 @@
1
- const a151_0xbf4f96=a151_0x1dcd;(function(_0x4cce0f,_0x63e4a3){const _0x29f357=a151_0x1dcd,_0x1cb747=_0x4cce0f();while(!![]){try{const _0x7472dc=parseInt(_0x29f357(0x1ac))/0x1+parseInt(_0x29f357(0x193))/0x2+parseInt(_0x29f357(0x194))/0x3*(-parseInt(_0x29f357(0x192))/0x4)+parseInt(_0x29f357(0x1b4))/0x5*(-parseInt(_0x29f357(0x1a4))/0x6)+parseInt(_0x29f357(0x196))/0x7*(parseInt(_0x29f357(0x1a2))/0x8)+-parseInt(_0x29f357(0x19e))/0x9+parseInt(_0x29f357(0x1a8))/0xa;if(_0x7472dc===_0x63e4a3)break;else _0x1cb747['push'](_0x1cb747['shift']());}catch(_0x28401e){_0x1cb747['push'](_0x1cb747['shift']());}}}(a151_0x4982,0x95624));import{APPCODE_FLAG_OPTIONAL}from'../../../commands/common/flags.js';import{fetchMenuSnapshot}from'../../../commands/menu/shared/facts.js';function a151_0x4982(){const _0x1b065d=['/app','isArray','file','path','pageId','react','590ArkSIc','--id\x20must\x20be\x20a\x20positive\x20integer.','https://daily.lovrabet.com','.app.lovrabet.com','string','2570220yNxrIV','1354624OSASFc','3eNoOKb','/ide/','7427aRmgGl','values','https://app.lovrabet.com','--page-content\x20must\x20be\x20a\x20JSON\x20object\x20whose\x20values\x20are\x20file\x20content\x20strings.','Invalid\x20React\x20page\x20content:\x20','validation','parse','page-content','8295102TdwoQZ','--page-content\x20must\x20be\x20valid\x20JSON.','length','Optional\x20app\x20code\x20resolved\x20from\x20page\x20ID\x20when\x20omitted','5488YzHMOH','object','21708UGhSae','https://','/pages/','flagMissing','9735230xJWzgd','message','find','map','224352VEPpuM','/web-app/app'];a151_0x4982=function(){return _0x1b065d;};return a151_0x4982();}import{getEnv,isProduction}from'../../../constant/env.js';import{getAppBaseUrl}from'../../../constant/domain.js';import{CliErrors}from'../../../errors.js';import{validateReactPageSourceFiles}from'./syntax.js';export const REACT_PAGE_APPCODE_FLAG_OPTIONAL={...APPCODE_FLAG_OPTIONAL,'description':a151_0xbf4f96(0x1a1)};function trimOptional(_0x4d49d6){return _0x4d49d6?.['trim']()||undefined;}export function buildReactPageRuntimeUrl(_0x5634da,_0x5560fc){const _0x2b92fb=a151_0xbf4f96,_0x14e733=trimOptional(_0x5634da),_0xc996fb=trimOptional(_0x5560fc);if(!_0x14e733||!_0xc996fb)return undefined;const _0xe20357=isProduction(getEnv())?_0x14e733+_0x2b92fb(0x190):_0x14e733+'.daily.lovrabet.com';return _0x2b92fb(0x1a5)+_0xe20357+'/'+encodeURIComponent(_0xc996fb);}export function buildReactPageDevelopmentUrl(_0x20d034,_0x36cd74){const _0x23a8cc=a151_0xbf4f96,_0x1d7fbc=trimOptional(_0x20d034),_0x38d45a=trimOptional(_0x36cd74);if(!_0x1d7fbc||!_0x38d45a)return undefined;return getAppBaseUrl(_0x1d7fbc)+_0x23a8cc(0x1a6)+encodeURIComponent(_0x38d45a);}function a151_0x1dcd(_0x66d87c,_0x2660f9){_0x66d87c=_0x66d87c-0x190;const _0x4982e6=a151_0x4982();let _0x1dcd01=_0x4982e6[_0x66d87c];return _0x1dcd01;}export async function resolveReactPageDevelopmentUrl(_0xc05a5d,_0x574bc9,_0x34fefa){const _0x2708ae=a151_0xbf4f96,_0xf30107=trimOptional(_0xc05a5d);if(!_0xf30107)return undefined;try{const _0x445a67=(await fetchMenuSnapshot(_0xf30107,_0x34fefa))['menus'][_0x2708ae(0x1aa)](_0xac9ef9=>_0xac9ef9['type']===_0x2708ae(0x1b3)&&_0xac9ef9[_0x2708ae(0x1b2)]===_0x574bc9);return buildReactPageDevelopmentUrl(_0xf30107,_0x445a67?.[_0x2708ae(0x1b1)]);}catch{return undefined;}}export function buildReactPageEditUrl(_0x2b9c66,_0x116955){const _0x12a556=a151_0xbf4f96,_0x3d1520=trimOptional(_0x2b9c66);if(!_0x3d1520)return;const _0xec653=trimOptional(_0x116955==null?undefined:String(_0x116955));if(!_0xec653)return;const _0x209bf2=isProduction(getEnv())?_0x12a556(0x1ae):_0x12a556(0x1ad),_0x5cc7cf=isProduction(getEnv())?_0x12a556(0x198):_0x12a556(0x1b6);return''+_0x5cc7cf+_0x209bf2+'/'+encodeURIComponent(_0x3d1520)+_0x12a556(0x195)+encodeURIComponent(_0xec653);}export function parseReactPageContent(_0x32c053){const _0x53911c=a151_0xbf4f96;if(!_0x32c053['trim']())throw CliErrors[_0x53911c(0x1a7)](_0x53911c(0x19d));let _0x89deff;try{_0x89deff=JSON[_0x53911c(0x19c)](_0x32c053);}catch{throw CliErrors[_0x53911c(0x19b)](_0x53911c(0x19f));}if(typeof _0x89deff!==_0x53911c(0x1a3)||_0x89deff===null||Array[_0x53911c(0x1af)](_0x89deff)||Object[_0x53911c(0x197)](_0x89deff)['some'](_0xdffe35=>typeof _0xdffe35!==_0x53911c(0x191)))throw CliErrors[_0x53911c(0x19b)](_0x53911c(0x199));return _0x89deff;}export async function validateReactPageContent(_0x3db1bf){const _0x408e1a=a151_0xbf4f96,_0x304a04=await validateReactPageSourceFiles(_0x3db1bf);if(_0x304a04[_0x408e1a(0x1a0)]>0x0)throw CliErrors[_0x408e1a(0x19b)](_0x408e1a(0x19a)+_0x304a04[_0x408e1a(0x1ab)](_0x379823=>_0x379823[_0x408e1a(0x1b0)]+':\x20'+_0x379823[_0x408e1a(0x1a9)])['join'](';\x20'));}export function readReactPageId(_0x1153be){const _0xe4ebfe=a151_0xbf4f96,_0x22793d=_0x1153be['num']('id');if(!Number['isInteger'](_0x22793d)||_0x22793d<=0x0)throw CliErrors['validation'](_0xe4ebfe(0x1b5));return _0x22793d;}
@@ -1 +0,0 @@
1
- const a152_0x48b242=a152_0x3266;(function(_0x3bfcc6,_0x29b60f){const _0x522b62=a152_0x3266,_0x218828=_0x3bfcc6();while(!![]){try{const _0x2b6d2e=-parseInt(_0x522b62(0x16c))/0x1+-parseInt(_0x522b62(0x16b))/0x2+-parseInt(_0x522b62(0x175))/0x3*(parseInt(_0x522b62(0x160))/0x4)+-parseInt(_0x522b62(0x167))/0x5*(-parseInt(_0x522b62(0x16a))/0x6)+parseInt(_0x522b62(0x162))/0x7*(-parseInt(_0x522b62(0x163))/0x8)+-parseInt(_0x522b62(0x161))/0x9*(parseInt(_0x522b62(0x16f))/0xa)+parseInt(_0x522b62(0x172))/0xb*(parseInt(_0x522b62(0x16e))/0xc);if(_0x2b6d2e===_0x29b60f)break;else _0x218828['push'](_0x218828['shift']());}catch(_0x125cf9){_0x218828['push'](_0x218828['shift']());}}}(a152_0x600b,0x985b2));function a152_0x3266(_0x100c85,_0x490525){_0x100c85=_0x100c85-0x160;const _0x600b76=a152_0x600b();let _0x3266f7=_0x600b76[_0x100c85];return _0x3266f7;}import{format}from'prettier';const SOURCE_PARSERS={'.js':'babel','.jsx':a152_0x48b242(0x169),'.ts':a152_0x48b242(0x166),'.tsx':'typescript'},REACT_PAGE_EXTENSIONS=[a152_0x48b242(0x174),a152_0x48b242(0x168)];function a152_0x600b(){const _0x189a77=['2076554RaKjTg','288943EYjScF','filter','888HYOPaI','1248190FhHdKm','entries','trim','720467ymmPHv','toLowerCase','.jsx','5118lpyugp','endsWith','2404CGSYCR','63vvPMWF','7ObjvMH','8890312vccegA','Missing\x20React\x20source\x20file\x20with\x20extension\x20.jsx\x20or\x20.tsx','some','typescript','10bodhif','.tsx','babel','344460ZqAeSd'];a152_0x600b=function(){return _0x189a77;};return a152_0x600b();}export async function validateReactPageSourceFiles(_0x2c5158){const _0x1f23b0=a152_0x48b242,_0x3388f0=Object[_0x1f23b0(0x170)](_0x2c5158)[_0x1f23b0(0x16d)](([_0x4fddc2])=>getParser(_0x4fddc2));if(!_0x3388f0[_0x1f23b0(0x165)](([_0x2803db])=>isReactSourceFile(_0x2803db)))return[{'file':'page-content','message':_0x1f23b0(0x164)}];const _0x36ec40=await Promise['all'](_0x3388f0['map'](async([_0x5e28a9,_0x768356])=>{try{return await format(_0x768356,{'parser':getParser(_0x5e28a9)}),undefined;}catch(_0x133324){return{'file':_0x5e28a9,'message':_0x133324 instanceof Error?_0x133324['message']:String(_0x133324)};}}));return _0x36ec40[_0x1f23b0(0x16d)](_0x52b195=>_0x52b195!==undefined);}function getParser(_0xb1afc7){const _0x336010=a152_0x48b242,_0x531a4b=_0xb1afc7[_0x336010(0x171)]()['toLowerCase']();return Object[_0x336010(0x170)](SOURCE_PARSERS)['find'](([_0x5b7a94])=>_0x531a4b[_0x336010(0x176)](_0x5b7a94))?.[0x1];}function isReactSourceFile(_0x568d74){const _0x178a73=a152_0x48b242,_0x24d919=_0x568d74['trim']()[_0x178a73(0x173)]();return REACT_PAGE_EXTENSIONS[_0x178a73(0x165)](_0x36ea66=>_0x24d919['endsWith'](_0x36ea66));}
@@ -1 +0,0 @@
1
- (function(_0x59f409,_0x339fff){const _0x34fd25=a153_0x208d,_0x312d70=_0x59f409();while(!![]){try{const _0x458ee1=parseInt(_0x34fd25(0x6e))/0x1*(-parseInt(_0x34fd25(0x87))/0x2)+parseInt(_0x34fd25(0x85))/0x3+parseInt(_0x34fd25(0x7a))/0x4*(parseInt(_0x34fd25(0x6d))/0x5)+-parseInt(_0x34fd25(0x78))/0x6*(-parseInt(_0x34fd25(0x7e))/0x7)+-parseInt(_0x34fd25(0x6c))/0x8+parseInt(_0x34fd25(0x75))/0x9+-parseInt(_0x34fd25(0x82))/0xa*(-parseInt(_0x34fd25(0x79))/0xb);if(_0x458ee1===_0x339fff)break;else _0x312d70['push'](_0x312d70['shift']());}catch(_0x23e497){_0x312d70['push'](_0x312d70['shift']());}}}(a153_0x2f8e,0x5c830));function buildIndexFile(_0x4b1a5f){const _0x59ce0c=a153_0x208d;return _0x59ce0c(0x73)+JSON['stringify'](_0x4b1a5f)+'}</Typography.Title>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<Typography.Paragraph>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{$i18n.t(\x27pageDescription\x27,\x20\x27这是一个基础页面模板,你可以在此基础上进行开发。\x27)}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</Typography.Paragraph>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</Typography>\x0a\x20\x20\x20\x20\x20\x20</Card>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20);\x0a};\x0a\x0aexport\x20default\x20App;\x0a';}function buildStyleFile(){const _0x26e585=a153_0x208d;return _0x26e585(0x70);}function a153_0x2f8e(){const _0x57003e=['6433295fTtUDV','844hCZKvs',':\x20{\x0a\x20\x20\x20\x20','Bu\x20bir\x20temel\x20sayfa\x20şablonudur.\x20Bu\x20temaplana\x20dayanarak\x20geliştirilebilir.','stringify','3049151ndaAsc','id-ID','en-US','\x0a};\x0a','10KCMJWG','这是一个基础页面模板,你可以在此基础上进行开发。','join','1401801vVuQkW','tr-TR','21792ZqyHwD','ja-JP','5671256wBRYdK','1235NBrRrG','46DGCcBi','Ini\x20adalah\x20sebuah\x20halaman\x20dasar.\x20Anda\x20dapat\x20mengembangkan\x20ini.','.page-container\x20{\x0a\x20\x20padding:\x2024px;\x0a\x20\x20background:\x20#f0f2f5;\x0a\x20\x20min-height:\x20100vh;\x0a}\x0a',',\x0a\x20\x20}','pageDescription','import\x20React\x20from\x20\x27react\x27;\x0aimport\x20{\x20Card,\x20Typography\x20}\x20from\x20\x27antd\x27;\x0aimport\x20{\x20useSdkClient,\x20useI18n,\x20useNavigate,\x20useLocation\x20}\x20from\x20\x22@/context/app-context\x22;\x0aimport\x20{\x20locales\x20}\x20from\x20\x27../locales\x27;\x0aimport\x20\x27./index.css\x27;\x0a\x0aconst\x20App\x20=\x20()\x20=>\x20{\x0a\x20\x20const\x20client\x20=\x20useSdkClient();\x20//\x20client\x20可以用于获取其他数据集的数据\x0a\x20\x20const\x20$i18n\x20=\x20useI18n();\x20//\x20国际化多语言\x20i18n\x20实例\x0a\x20\x20const\x20navigate\x20=\x20useNavigate();\x20//\x20react-router\x20navigate\x20导航实例\x0a\x20\x20const\x20location\x20=\x20useLocation();\x20//\x20浏览器\x20location\x20实例\x0a\x0a\x20\x20$i18n.addLocale(locales);\x20//\x20添加多语言词包\x0a\x0a\x20\x20return\x20(\x0a\x20\x20\x20\x20<div\x20className=\x22page-container\x22>\x0a\x20\x20\x20\x20\x20\x20<Card>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<Typography>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<Typography.Title\x20level={2}>{','This\x20is\x20a\x20basic\x20page\x20template,\x20you\x20can\x20develop\x20based\x20on\x20it.','443061lDIfGf','map','export\x20const\x20locales\x20=\x20{\x0a','6pGYxtx'];a153_0x2f8e=function(){return _0x57003e;};return a153_0x2f8e();}function a153_0x208d(_0x29f26c,_0x5f0aa5){_0x29f26c=_0x29f26c-0x6c;const _0x2f8ec8=a153_0x2f8e();let _0x208d1a=_0x2f8ec8[_0x29f26c];return _0x208d1a;}function buildLocalesFile(_0x1ef15f){const _0x447804=a153_0x208d,_0x17d5d9=_0x1ef15f[_0x447804(0x76)](_0x653901=>{const _0x2052e8=_0x447804;let _0x10f435='';switch(_0x653901){case'zh-CN':_0x10f435=_0x2052e8(0x83);break;case _0x2052e8(0x80):_0x10f435=_0x2052e8(0x74);break;case _0x2052e8(0x88):_0x10f435='これは基本ページテンプレートです。あなたは、これに基づいて開発できます。';break;case _0x2052e8(0x86):_0x10f435=_0x2052e8(0x7c);break;case _0x2052e8(0x7f):_0x10f435=_0x2052e8(0x6f);break;default:_0x10f435=_0x2052e8(0x74);}return'\x20\x20'+JSON[_0x2052e8(0x7d)](_0x653901)+_0x2052e8(0x7b)+JSON['stringify'](_0x2052e8(0x72))+':\x20'+JSON[_0x2052e8(0x7d)](_0x10f435)+_0x2052e8(0x71);})[_0x447804(0x84)](',\x0a');return _0x447804(0x77)+_0x17d5d9+_0x447804(0x81);}export function buildInitialFiles(_0x340e88,_0x41faf2){return{'src/app/index.jsx':buildIndexFile(_0x340e88),'src/app/index.css':buildStyleFile(),'src/locales/index.js':buildLocalesFile(_0x41faf2)};}
@@ -1 +0,0 @@
1
- const a154_0x5a49d1=a154_0x5b42;(function(_0x26d2e7,_0x5a3953){const _0x3e1d3d=a154_0x5b42,_0x3bb83f=_0x26d2e7();while(!![]){try{const _0x2e4bb5=parseInt(_0x3e1d3d(0x13f))/0x1+-parseInt(_0x3e1d3d(0x144))/0x2+parseInt(_0x3e1d3d(0x149))/0x3+parseInt(_0x3e1d3d(0x14b))/0x4+-parseInt(_0x3e1d3d(0x12f))/0x5*(parseInt(_0x3e1d3d(0x13b))/0x6)+parseInt(_0x3e1d3d(0x14d))/0x7*(-parseInt(_0x3e1d3d(0x13d))/0x8)+parseInt(_0x3e1d3d(0x139))/0x9;if(_0x2e4bb5===_0x5a3953)break;else _0x3bb83f['push'](_0x3bb83f['shift']());}catch(_0xe210b1){_0x3bb83f['push'](_0x3bb83f['shift']());}}}(a154_0x4aa4,0x2116b));import{getReactPageSource,updateReactPageContent}from'../../../core/api-client.js';import{CliErrors}from'../../../errors.js';import{buildReactPageEditUrl,parseReactPageContent,resolveReactPageDevelopmentUrl,readReactPageId,REACT_PAGE_APPCODE_FLAG_OPTIONAL,validateReactPageContent}from'./shared.js';export const pageReactUpdate={'service':a154_0x5a49d1(0x141),'command':a154_0x5a49d1(0x133),'description':'Save\x20all\x20files\x20of\x20a\x20React\x20custom\x20page','risk':a154_0x5a49d1(0x143),'defaultOutputFormat':a154_0x5a49d1(0x137),'structuredErrors':!![],'requiresAppCode':![],'flags':[{'name':'id','type':a154_0x5a49d1(0x140),'required':!![],'description':a154_0x5a49d1(0x138)},{'name':a154_0x5a49d1(0x13c),'type':a154_0x5a49d1(0x142),'required':!![],'description':a154_0x5a49d1(0x135)},REACT_PAGE_APPCODE_FLAG_OPTIONAL],async 'validate'(_0x421100){const _0x1679ae=a154_0x5a49d1;readReactPageId(_0x421100),await validateReactPageContent(parseReactPageContent(_0x421100['str'](_0x1679ae(0x13c))));},async 'dryRun'(_0x9920ff){const _0x12615a=a154_0x5a49d1,_0x682e48=await readInput(_0x9920ff);return{'method':_0x12615a(0x14c),'url':'/smartapi/webcode/page/update/content','body':{'id':_0x682e48[_0x12615a(0x146)],'codeContent':_0x682e48[_0x12615a(0x130)]},'description':_0x12615a(0x13e)+_0x682e48[_0x12615a(0x146)]+'.'};},async 'execute'(_0x5a82d2){const _0x1b4aff=a154_0x5a49d1,_0x18768b=await readInput(_0x5a82d2),_0x4ffc37=await updateReactPageContent({'pageId':_0x18768b[_0x1b4aff(0x146)],'pageContent':_0x18768b[_0x1b4aff(0x130)]});if(!Number[_0x1b4aff(0x132)](_0x4ffc37[_0x1b4aff(0x134)])||_0x4ffc37[_0x1b4aff(0x134)]<=0x0)throw CliErrors[_0x1b4aff(0x13a)]('React\x20custom\x20page\x20update\x20did\x20not\x20create\x20a\x20new\x20version.');const _0x10c5c8=buildReactPageEditUrl(_0x18768b['appCode'],_0x18768b[_0x1b4aff(0x146)]),_0x55ebc9=await resolveReactPageDevelopmentUrl(_0x18768b[_0x1b4aff(0x136)],_0x18768b['pageId'],_0x5a82d2['cookie']);return{'ok':!![],'data':buildMutationData(_0x18768b,_0x4ffc37,_0x55ebc9,_0x10c5c8,_0x55ebc9?[]:['React\x20custom\x20page\x20was\x20updated,\x20but\x20a\x20link\x20to\x20its\x20latest\x20saved\x20content\x20could\x20not\x20be\x20generated.']),'message':_0x1b4aff(0x147)+_0x18768b[_0x1b4aff(0x146)]+'.'};}};async function readInput(_0x1ec0a7){const _0x803118=a154_0x5a49d1,_0x469056=readReactPageId(_0x1ec0a7),_0x383252=_0x1ec0a7['str']('appcode')[_0x803118(0x145)]()||(await getReactPageSource(_0x469056))[_0x803118(0x136)]?.['trim']();if(!_0x383252)throw CliErrors[_0x803118(0x131)](_0x803118(0x148)+_0x469056+'.');return{'appCode':_0x383252,'pageId':_0x469056,'pageContent':parseReactPageContent(_0x1ec0a7[_0x803118(0x14a)](_0x803118(0x13c)))};}function buildMutationData(_0x499b8a,_0x28a86e,_0x1fa9ac,_0x215191,_0x43a2af=[]){const _0x112315=a154_0x5a49d1;return{'operation':'page.react-update','selector':{'appCode':_0x499b8a[_0x112315(0x136)],'pageId':_0x499b8a[_0x112315(0x146)]},'before':null,'after':{'pageId':_0x28a86e?.[_0x112315(0x146)]??_0x499b8a[_0x112315(0x146)],'version':_0x28a86e?.[_0x112315(0x134)]??null,'pageContent':_0x499b8a['pageContent']},'dryRun':_0x28a86e===undefined,'request':_0x499b8a,..._0x1fa9ac?{'pageUrl':_0x1fa9ac}:{},..._0x215191?{'editPageUrl':_0x215191}:{},'warnings':_0x43a2af};}function a154_0x5b42(_0x124af4,_0x4ae279){_0x124af4=_0x124af4-0x12f;const _0x4aa4dc=a154_0x4aa4();let _0x5b4288=_0x4aa4dc[_0x124af4];return _0x5b4288;}function a154_0x4aa4(){const _0x81c3af=['Cannot\x20determine\x20the\x20appCode\x20for\x20React\x20custom\x20page\x20','733755kFCrGp','str','275436HGDFBh','POST','1004283toJLNb','516575oVyEWc','pageContent','validation','isInteger','react-update','newVersion','Complete\x20page\x20files\x20as\x20JSON','appCode','compress','React\x20custom\x20page\x20ID','501948XSzHZy','apiError','6WCBUvr','page-content','8SdThXJ','Would\x20save\x20all\x20files\x20of\x20React\x20custom\x20page\x20','147663ilHDdS','number','page','string','write','269128MucSxv','trim','pageId','Updated\x20React\x20custom\x20page\x20'];a154_0x4aa4=function(){return _0x81c3af;};return a154_0x4aa4();}
@@ -1 +0,0 @@
1
- function a158_0x3cf2(_0x53202f,_0x5cab54){_0x53202f=_0x53202f-0x85;const _0x55e630=a158_0x55e6();let _0x3cf272=_0x55e630[_0x53202f];return _0x3cf272;}const a158_0x4e2f3b=a158_0x3cf2;(function(_0x45c93f,_0x29ff1c){const _0x168326=a158_0x3cf2,_0xfb5251=_0x45c93f();while(!![]){try{const _0x379fbd=parseInt(_0x168326(0x85))/0x1*(parseInt(_0x168326(0x8b))/0x2)+parseInt(_0x168326(0x9a))/0x3+parseInt(_0x168326(0x8d))/0x4+-parseInt(_0x168326(0x96))/0x5+-parseInt(_0x168326(0x8a))/0x6*(parseInt(_0x168326(0x99))/0x7)+-parseInt(_0x168326(0xa2))/0x8+-parseInt(_0x168326(0x9f))/0x9;if(_0x379fbd===_0x29ff1c)break;else _0xfb5251['push'](_0xfb5251['shift']());}catch(_0x2ceb59){_0xfb5251['push'](_0xfb5251['shift']());}}}(a158_0x55e6,0xd3d6b));import{APPCODE_FLAG_OPTIONAL,DATASETCODE_FLAG_OPTIONAL}from'../../commands/common/flags.js';import{assessStandardPageState,getUndeletedRelatedPages,loadDatasetDetailForPage,loadStandardPageStatusForGenerate,serializeDryRunDescription,validateDatasetSelector}from'../../commands/page/shared.js';function a158_0x55e6(){const _0x3467da=['alias','related-pages-fallback','/smartapi/lovrabet/dataset/','query-standard-page-status','4704165SvJUyn','string','GET','9205616CZNMJm','1WhhwbO','Query\x20Smart\x20List\x20Page\x20facts\x20for\x20a\x20dataset','Dataset\x20alias\x20from\x20api.ts\x20(resolves\x20to\x20dataset\x20code\x20automatically)','length','name','45942AClcGJ','2901982rvZqwP','compress','5137620URaGQq','page','manualResolutionRequired','status','source','code','standard-page-status','nextAction','relatedPages','1406095kExlGg','/standard-page-status?appCode=','appCode','42PDnZiY','398529NssSiN'];a158_0x55e6=function(){return _0x3467da;};return a158_0x55e6();}export const pageStandardPageStatus={'service':a158_0x4e2f3b(0x8e),'command':a158_0x4e2f3b(0x93),'description':a158_0x4e2f3b(0x86),'risk':'read','defaultOutputFormat':a158_0x4e2f3b(0x8c),'flags':[APPCODE_FLAG_OPTIONAL,DATASETCODE_FLAG_OPTIONAL,{'name':a158_0x4e2f3b(0x9b),'type':a158_0x4e2f3b(0xa0),'description':a158_0x4e2f3b(0x87)}],async 'validate'(_0x53005a){validateDatasetSelector(_0x53005a);},async 'dryRun'(_0x2f6682){const _0xda8355=a158_0x4e2f3b,_0x3bea94=await loadDatasetDetailForPage(_0x2f6682);return{'method':_0xda8355(0xa1),'url':_0xda8355(0x9d)+_0x3bea94[_0xda8355(0x92)]+_0xda8355(0x97)+encodeURIComponent(_0x2f6682[_0xda8355(0x98)]),'description':serializeDryRunDescription({'dataset':{'id':_0x3bea94['id'],'code':_0x3bea94['code'],'name':_0x3bea94[_0xda8355(0x89)]},'action':_0xda8355(0x9e)})};},async 'execute'(_0x2c26be){const _0x3cefb5=a158_0x4e2f3b,_0x13348e=await loadDatasetDetailForPage(_0x2c26be),_0x3d3f5b=await loadStandardPageStatusForGenerate(_0x2c26be,_0x13348e['code']),_0x25f08a=getUndeletedRelatedPages(_0x13348e),_0x5ae05f=assessStandardPageState(_0x13348e['code'],_0x3d3f5b,{'fallbackUndeletedPages':_0x25f08a});return{'ok':!![],'data':{'datasetCode':_0x13348e[_0x3cefb5(0x92)],'precheckSource':_0x3d3f5b?.[_0x3cefb5(0x91)]??_0x3cefb5(0x9c),'status':_0x5ae05f[_0x3cefb5(0x90)],'manualResolutionRequired':_0x5ae05f[_0x3cefb5(0x8f)],'nextAction':_0x5ae05f[_0x3cefb5(0x94)],'standardPageStatus':_0x3d3f5b,'relatedPages':{'total':_0x13348e[_0x3cefb5(0x95)]['length'],'undeletedCount':_0x25f08a[_0x3cefb5(0x88)]}}};}};
@@ -1,29 +0,0 @@
1
- # page react-create
2
-
3
- 创建 React 自定义页面,初始化 JSX、样式和多语言词包,并同时创建菜单入口。
4
-
5
- ```bash
6
- rabetbase page react-create --name "客户看板" --appcode <appCode> --dry-run --format compress
7
- rabetbase page react-create --name "客户看板" --parent-menu-id 100 --appcode <appCode>
8
- rabetbase page react-create --name "客户看板" --page-content '<json>' --appcode <appCode>
9
- rabetbase page react-create --appcode <appCode> --dry-run --format compress
10
- ```
11
-
12
- ## 参数
13
-
14
- | 参数 | 必填 | 说明 |
15
- |---|---|---|
16
- | `--name <name>` | 否 | 可选页面名称,1–100 个字符;省略时默认 `自定义页面_<timestamp>` |
17
- | `--parent-menu-id <id>` | 否 | 父菜单 ID |
18
- | `--page-content <json>` | 否 | 完整页面文件 JSON;对象的键为相对路径,值为文件内容,省略时生成默认 JSX、样式和词包 |
19
- | `--appcode <code>` | 是 | 目标应用 code |
20
-
21
- ## 执行步骤
22
-
23
- 1. 可选传入 `--page-content` 作为完整页面文件 JSON;省略时 CLI 生成默认文件。
24
- 2. 使用 `--dry-run` 确认页面名称、父菜单与最终页面文件。
25
- 3. 确认后使用相同参数执行创建。
26
- 4. 从结构化输出的 `data.after.pageId` 确认新页面 ID,并核对页面名称和生成的文件。
27
- 5. 输出的 `pageUrl` 用于查看最新保存内容,包含尚未发布的修改;`editPageUrl` 用于打开页面编辑器,继续修改页面。
28
-
29
- 页面创建始终同时创建菜单。CLI 会按应用语言设置生成词包;读取设置失败时使用默认中英文词包。