@nocobase/cli 2.1.0-alpha.4 → 2.1.0-alpha.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/LICENSE.txt +107 -0
  2. package/README.md +393 -19
  3. package/README.zh-CN.md +343 -0
  4. package/bin/run.cmd +3 -0
  5. package/bin/run.js +135 -0
  6. package/bin/session-env.js +39 -0
  7. package/dist/commands/api/resource/create.js +15 -0
  8. package/dist/commands/api/resource/destroy.js +15 -0
  9. package/dist/commands/api/resource/get.js +15 -0
  10. package/dist/commands/api/resource/index.js +20 -0
  11. package/dist/commands/api/resource/list.js +16 -0
  12. package/dist/commands/api/resource/query.js +15 -0
  13. package/dist/commands/api/resource/update.js +15 -0
  14. package/dist/commands/app/down.js +301 -0
  15. package/dist/commands/app/logs.js +114 -0
  16. package/dist/commands/app/restart.js +158 -0
  17. package/dist/commands/app/start.js +305 -0
  18. package/dist/commands/app/stop.js +115 -0
  19. package/dist/commands/app/upgrade.js +636 -0
  20. package/dist/commands/backup/create.js +147 -0
  21. package/dist/commands/backup/index.js +20 -0
  22. package/dist/commands/backup/restore.js +105 -0
  23. package/{src/cli.js → dist/commands/build.js} +4 -11
  24. package/dist/commands/config/delete.js +30 -0
  25. package/dist/commands/config/get.js +29 -0
  26. package/dist/commands/config/index.js +20 -0
  27. package/dist/commands/config/list.js +29 -0
  28. package/dist/commands/config/set.js +35 -0
  29. package/dist/commands/db/check.js +240 -0
  30. package/dist/commands/db/logs.js +85 -0
  31. package/dist/commands/db/ps.js +60 -0
  32. package/dist/commands/db/shared.js +96 -0
  33. package/dist/commands/db/start.js +71 -0
  34. package/dist/commands/db/stop.js +71 -0
  35. package/{templates/plugin/src/client/models/index.ts → dist/commands/dev.js} +4 -4
  36. package/{src/commands/locale/react-js-cron/index.js → dist/commands/down.js} +3 -8
  37. package/dist/commands/download.js +13 -0
  38. package/dist/commands/env/add.js +366 -0
  39. package/dist/commands/env/auth.js +130 -0
  40. package/dist/commands/env/current.js +21 -0
  41. package/dist/commands/env/info.js +157 -0
  42. package/dist/commands/env/list.js +44 -0
  43. package/dist/commands/env/remove.js +84 -0
  44. package/dist/commands/env/shared.js +158 -0
  45. package/dist/commands/env/status.js +90 -0
  46. package/dist/commands/env/update.js +74 -0
  47. package/dist/commands/env/use.js +38 -0
  48. package/dist/commands/examples/prompts-stages.js +150 -0
  49. package/dist/commands/examples/prompts-test.js +181 -0
  50. package/dist/commands/init.js +1092 -0
  51. package/dist/commands/install.js +2378 -0
  52. package/dist/commands/license/activate.js +360 -0
  53. package/dist/commands/license/env.js +94 -0
  54. package/dist/commands/license/generate-id.js +108 -0
  55. package/dist/commands/license/id.js +70 -0
  56. package/dist/commands/license/index.js +20 -0
  57. package/dist/commands/license/plugins/clean.js +115 -0
  58. package/dist/commands/license/plugins/index.js +20 -0
  59. package/dist/commands/license/plugins/list.js +64 -0
  60. package/dist/commands/license/plugins/shared.js +325 -0
  61. package/dist/commands/license/plugins/sync.js +285 -0
  62. package/dist/commands/license/shared.js +423 -0
  63. package/dist/commands/license/status.js +64 -0
  64. package/dist/commands/logs.js +12 -0
  65. package/dist/commands/plugin/disable.js +86 -0
  66. package/dist/commands/plugin/enable.js +86 -0
  67. package/dist/commands/plugin/list.js +82 -0
  68. package/dist/commands/pm/disable.js +12 -0
  69. package/dist/commands/pm/enable.js +12 -0
  70. package/dist/commands/pm/list.js +12 -0
  71. package/dist/commands/restart.js +12 -0
  72. package/dist/commands/scaffold/migration.js +38 -0
  73. package/dist/commands/scaffold/plugin.js +37 -0
  74. package/dist/commands/self/check.js +71 -0
  75. package/dist/commands/self/index.js +20 -0
  76. package/dist/commands/self/update.js +95 -0
  77. package/dist/commands/session/id.js +24 -0
  78. package/dist/commands/session/remove.js +57 -0
  79. package/dist/commands/session/setup.js +62 -0
  80. package/dist/commands/skills/check.js +69 -0
  81. package/dist/commands/skills/index.js +20 -0
  82. package/dist/commands/skills/install.js +80 -0
  83. package/dist/commands/skills/remove.js +80 -0
  84. package/dist/commands/skills/update.js +87 -0
  85. package/dist/commands/source/build.js +58 -0
  86. package/dist/commands/source/dev.js +182 -0
  87. package/dist/commands/source/download.js +880 -0
  88. package/dist/commands/source/publish.js +109 -0
  89. package/dist/commands/source/registry/logs.js +70 -0
  90. package/dist/commands/source/registry/start.js +57 -0
  91. package/dist/commands/source/registry/status.js +33 -0
  92. package/dist/commands/source/registry/stop.js +48 -0
  93. package/dist/commands/source/test.js +477 -0
  94. package/dist/commands/start.js +12 -0
  95. package/dist/commands/stop.js +12 -0
  96. package/dist/commands/test.js +12 -0
  97. package/dist/commands/upgrade.js +12 -0
  98. package/dist/commands/v1.js +210 -0
  99. package/dist/generated/command-registry.js +133 -0
  100. package/dist/help/runtime-help.js +23 -0
  101. package/dist/lib/api-client.js +329 -0
  102. package/dist/lib/app-health.js +126 -0
  103. package/dist/lib/app-managed-resources.js +316 -0
  104. package/dist/lib/app-runtime.js +180 -0
  105. package/dist/lib/auth-store.js +368 -0
  106. package/dist/lib/backup.js +171 -0
  107. package/dist/lib/bootstrap.js +403 -0
  108. package/dist/lib/build-config.js +18 -0
  109. package/dist/lib/builtin-db.js +86 -0
  110. package/dist/lib/cli-config.js +176 -0
  111. package/dist/lib/cli-home.js +47 -0
  112. package/dist/lib/cli-locale.js +129 -0
  113. package/dist/lib/command-discovery.js +39 -0
  114. package/dist/lib/db-connection-check.js +158 -0
  115. package/dist/lib/docker-env-file.js +52 -0
  116. package/dist/lib/docker-image.js +37 -0
  117. package/dist/lib/env-auth.js +873 -0
  118. package/dist/lib/env-config.js +94 -0
  119. package/dist/lib/env-guard.js +62 -0
  120. package/dist/lib/generated-command.js +186 -0
  121. package/dist/lib/http-request.js +49 -0
  122. package/dist/lib/inquirer-theme.js +17 -0
  123. package/dist/lib/inquirer.js +244 -0
  124. package/dist/lib/naming.js +70 -0
  125. package/dist/lib/object-utils.js +76 -0
  126. package/dist/lib/openapi.js +62 -0
  127. package/dist/lib/plugin-storage.js +64 -0
  128. package/dist/lib/post-processors.js +23 -0
  129. package/dist/lib/prompt-catalog-core.js +185 -0
  130. package/dist/lib/prompt-catalog-terminal.js +375 -0
  131. package/{src/index.js → dist/lib/prompt-catalog.js} +2 -6
  132. package/dist/lib/prompt-validators.js +240 -0
  133. package/dist/lib/prompt-web-ui.js +2103 -0
  134. package/dist/lib/resource-command.js +357 -0
  135. package/dist/lib/resource-request.js +104 -0
  136. package/dist/lib/run-npm.js +275 -0
  137. package/dist/lib/runtime-env-vars.js +32 -0
  138. package/dist/lib/runtime-generator.js +498 -0
  139. package/dist/lib/runtime-store.js +56 -0
  140. package/dist/lib/self-manager.js +301 -0
  141. package/dist/lib/session-id.js +17 -0
  142. package/dist/lib/session-integration.js +703 -0
  143. package/dist/lib/session-store.js +118 -0
  144. package/dist/lib/skills-manager.js +360 -0
  145. package/dist/lib/source-publish.js +306 -0
  146. package/dist/lib/source-registry.js +188 -0
  147. package/dist/lib/startup-update.js +285 -0
  148. package/dist/lib/ui.js +155 -0
  149. package/dist/locale/en-US.json +344 -0
  150. package/dist/locale/zh-CN.json +344 -0
  151. package/dist/post-processors/data-modeling.js +84 -0
  152. package/dist/post-processors/data-source-manager.js +138 -0
  153. package/dist/post-processors/index.js +19 -0
  154. package/nocobase-ctl.config.json +388 -0
  155. package/package.json +100 -26
  156. package/LICENSE +0 -661
  157. package/bin/index.js +0 -39
  158. package/nocobase.conf.tpl +0 -95
  159. package/src/commands/benchmark.js +0 -73
  160. package/src/commands/build.js +0 -49
  161. package/src/commands/clean.js +0 -30
  162. package/src/commands/client.js +0 -166
  163. package/src/commands/create-nginx-conf.js +0 -37
  164. package/src/commands/create-plugin.js +0 -33
  165. package/src/commands/dev.js +0 -200
  166. package/src/commands/doc.js +0 -76
  167. package/src/commands/e2e.js +0 -265
  168. package/src/commands/global.js +0 -43
  169. package/src/commands/index.js +0 -45
  170. package/src/commands/instance-id.js +0 -47
  171. package/src/commands/locale/cronstrue.js +0 -122
  172. package/src/commands/locale/react-js-cron/en-US.json +0 -75
  173. package/src/commands/locale/react-js-cron/zh-CN.json +0 -33
  174. package/src/commands/locale/react-js-cron/zh-TW.json +0 -33
  175. package/src/commands/locale.js +0 -81
  176. package/src/commands/p-test.js +0 -88
  177. package/src/commands/perf.js +0 -63
  178. package/src/commands/pkg.js +0 -321
  179. package/src/commands/pm2.js +0 -37
  180. package/src/commands/postinstall.js +0 -88
  181. package/src/commands/start.js +0 -148
  182. package/src/commands/tar.js +0 -36
  183. package/src/commands/test-coverage.js +0 -55
  184. package/src/commands/test.js +0 -107
  185. package/src/commands/umi.js +0 -33
  186. package/src/commands/update-deps.js +0 -72
  187. package/src/commands/upgrade.js +0 -47
  188. package/src/commands/view-license-key.js +0 -44
  189. package/src/license.js +0 -76
  190. package/src/logger.js +0 -75
  191. package/src/plugin-generator.js +0 -80
  192. package/src/util.js +0 -517
  193. package/templates/bundle-status.html +0 -338
  194. package/templates/create-app-package.json +0 -39
  195. package/templates/plugin/.npmignore.tpl +0 -2
  196. package/templates/plugin/README.md.tpl +0 -1
  197. package/templates/plugin/client.d.ts +0 -2
  198. package/templates/plugin/client.js +0 -1
  199. package/templates/plugin/package.json.tpl +0 -11
  200. package/templates/plugin/server.d.ts +0 -2
  201. package/templates/plugin/server.js +0 -1
  202. package/templates/plugin/src/client/client.d.ts +0 -249
  203. package/templates/plugin/src/client/index.tsx.tpl +0 -1
  204. package/templates/plugin/src/client/locale.ts +0 -21
  205. package/templates/plugin/src/client/plugin.tsx.tpl +0 -10
  206. package/templates/plugin/src/index.ts +0 -2
  207. package/templates/plugin/src/locale/en-US.json +0 -1
  208. package/templates/plugin/src/locale/zh-CN.json +0 -1
  209. package/templates/plugin/src/server/collections/.gitkeep +0 -0
  210. package/templates/plugin/src/server/index.ts.tpl +0 -1
  211. package/templates/plugin/src/server/plugin.ts.tpl +0 -19
@@ -0,0 +1,181 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+ import { Args, Command, Flags } from '@oclif/core';
10
+ import { runPromptCatalog, } from "../../lib/prompt-catalog.js";
11
+ import { applyCliLocale, CLI_LOCALE_FLAG_DESCRIPTION, CLI_LOCALE_FLAG_OPTIONS, } from "../../lib/cli-locale.js";
12
+ import { printInfo } from "../../lib/ui.js";
13
+ import { runPromptCatalogWebUI, } from "../../lib/prompt-web-ui.js";
14
+ export default class PromptsTest extends Command {
15
+ static hidden = true;
16
+ static args = {
17
+ file: Args.string({ description: 'file to read', required: false }),
18
+ };
19
+ static description = 'Demo: declarative `prompts` catalog + `initialValues` + `yesInitialValues` / per-block `yesInitialValue`; runner is `runPromptCatalog`.';
20
+ static examples = [
21
+ '<%= config.bin %> <%= command.id %>',
22
+ '<%= config.bin %> <%= command.id %> -t Ada --boolean',
23
+ '<%= config.bin %> <%= command.id %> -y',
24
+ '<%= config.bin %> <%= command.id %> -y ./README.md -p secret',
25
+ '<%= config.bin %> <%= command.id %> --ui',
26
+ ];
27
+ static flags = {
28
+ ui: Flags.boolean({
29
+ description: 'Open a browser to configure the same parameters in a form (served only on 127.0.0.1). Uses `runPromptCatalogWebUI` with this command’s `prompts` catalog. Submit to continue; then `runPromptCatalog` runs in this terminal with the submitted preset.',
30
+ default: false,
31
+ }),
32
+ yes: Flags.boolean({
33
+ char: 'y',
34
+ description: 'Accept defaults only (no prompts); uses `yesInitialValues` merged over `initialValues`, then per-block `yesInitialValue`. Same as non-TTY.',
35
+ default: false,
36
+ }),
37
+ locale: Flags.string({
38
+ description: CLI_LOCALE_FLAG_DESCRIPTION,
39
+ options: CLI_LOCALE_FLAG_OPTIONS,
40
+ }),
41
+ file: Flags.string({
42
+ char: 'f',
43
+ description: 'Merged into initialValues.file (default for the text prompt when set)',
44
+ }),
45
+ text: Flags.string({
46
+ char: 't',
47
+ description: 'Merged into initialValues.text (default for the text prompt when set)',
48
+ }),
49
+ boolean: Flags.boolean({
50
+ char: 'b',
51
+ description: 'Merged into initialValues.boolean (default for confirm when set)',
52
+ allowNo: true,
53
+ }),
54
+ select: Flags.string({
55
+ char: 's',
56
+ description: 'Merged into initialValues.select (default for select when set)',
57
+ options: ['option1', 'option2', 'option3'],
58
+ }),
59
+ password: Flags.string({
60
+ char: 'p',
61
+ description: 'Merged into initialValues.password (required when -y / non-TTY if password is required)',
62
+ }),
63
+ integer: Flags.integer({
64
+ char: 'i',
65
+ description: 'Merged into initialValues.integer (default for integer prompt when set)',
66
+ }),
67
+ };
68
+ static prompts = {
69
+ intro1: {
70
+ type: 'intro',
71
+ title: 'Welcome to the prompts test!',
72
+ },
73
+ file: {
74
+ type: 'text',
75
+ message: 'File to read',
76
+ initialValue: '',
77
+ placeholder: 'Enter the file to read',
78
+ yesInitialValue: 'package.json',
79
+ required: true,
80
+ },
81
+ text: {
82
+ type: 'text',
83
+ message: 'What is your name?',
84
+ initialValue: 'world',
85
+ placeholder: 'Your name',
86
+ /**
87
+ * Example: async validation (the terminal prompt layer re-prompts; Web UI returns 400 on submit with this message).
88
+ */
89
+ validate: async (v) => {
90
+ if (String(v).trim().length < 2) {
91
+ return 'Name must be at least 2 characters';
92
+ }
93
+ return undefined;
94
+ },
95
+ },
96
+ boolean: {
97
+ type: 'boolean',
98
+ message: 'Do you want to continue?',
99
+ initialValue: true,
100
+ },
101
+ select: {
102
+ type: 'select',
103
+ message: 'Select an option',
104
+ options: ['option1', 'option2', 'option3'],
105
+ initialValue: 'option1',
106
+ yesInitialValue: 'option2',
107
+ },
108
+ onOption1: {
109
+ type: 'run',
110
+ when: (values) => values.select === 'option1',
111
+ run: (values) => {
112
+ printInfo(`run block: select is option1 (current keys: ${Object.keys(values).join(', ')})`);
113
+ },
114
+ },
115
+ password: {
116
+ type: 'password',
117
+ message: 'Enter your password',
118
+ yesInitialValue: 'demo-secret',
119
+ required: true,
120
+ },
121
+ integer: {
122
+ type: 'integer',
123
+ message: 'Enter an integer',
124
+ initialValue: 0,
125
+ placeholder: 'e.g. 42',
126
+ hidden: (values) => values.select === 'option1',
127
+ },
128
+ outro1: {
129
+ type: 'outro',
130
+ message: 'Done.',
131
+ },
132
+ };
133
+ async run() {
134
+ const { args, flags } = await this.parse(PromptsTest);
135
+ applyCliLocale(flags.locale);
136
+ let presetValues = this.buildPresetValuesFromParsed(args, flags);
137
+ if (flags.ui) {
138
+ presetValues = await runPromptCatalogWebUI(PromptsTest.prompts, {
139
+ values: presetValues,
140
+ pageTitle: 'nb prompts-test — UI',
141
+ documentHeading: 'nb prompts-test',
142
+ onServerStart: ({ host, port, url }) => {
143
+ this.log(`Local Web UI ready — ${url} (listening on ${host}:${port}). Submit the form in the browser to continue.`);
144
+ },
145
+ onOpenBrowserError: (url, err) => {
146
+ this.log(`Open this URL in a browser: ${url} (${err instanceof Error ? err.message : String(err)})`);
147
+ },
148
+ });
149
+ }
150
+ const results = await runPromptCatalog(PromptsTest.prompts, {
151
+ initialValues: {},
152
+ values: presetValues,
153
+ yes: flags.yes || flags.ui,
154
+ });
155
+ this.log(JSON.stringify(results, null, 2));
156
+ }
157
+ /** Map oclif parse result into `values` presets: each key here skips that prompt (no terminal prompt UI). */
158
+ buildPresetValuesFromParsed(args, flags) {
159
+ const preset = {};
160
+ const file = args.file ?? flags.file;
161
+ if (file !== undefined) {
162
+ preset.file = file;
163
+ }
164
+ if (flags.text !== undefined) {
165
+ preset.text = flags.text;
166
+ }
167
+ if (flags.boolean !== undefined) {
168
+ preset.boolean = flags.boolean;
169
+ }
170
+ if (flags.select !== undefined) {
171
+ preset.select = flags.select;
172
+ }
173
+ if (flags.password !== undefined) {
174
+ preset.password = flags.password;
175
+ }
176
+ if (flags.integer !== undefined) {
177
+ preset.integer = flags.integer;
178
+ }
179
+ return preset;
180
+ }
181
+ }