@nocobase/cli 2.2.0-beta.8 → 2.3.0-alpha.1

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 (32) hide show
  1. package/assets/env-proxy/nginx/app.conf.tpl +23 -0
  2. package/assets/env-proxy/nginx/nocobase.conf.tpl +5 -0
  3. package/assets/env-proxy/nginx/snippets/dist-location.conf +5 -0
  4. package/assets/env-proxy/nginx/snippets/gzip.conf +17 -0
  5. package/assets/env-proxy/nginx/snippets/log-format-http.conf +13 -0
  6. package/assets/env-proxy/nginx/snippets/maps-http.conf +14 -0
  7. package/assets/env-proxy/nginx/snippets/mime-types.conf +98 -0
  8. package/assets/env-proxy/nginx/snippets/proxy-location.conf +18 -0
  9. package/assets/env-proxy/nginx/snippets/spa-location.conf +6 -0
  10. package/assets/env-proxy/nginx/snippets/uploads-location.conf +21 -0
  11. package/dist/commands/app/start.js +4 -1
  12. package/dist/commands/env/info.js +11 -1
  13. package/dist/commands/init.js +11 -1
  14. package/dist/commands/install.js +61 -130
  15. package/dist/commands/proxy/caddy/generate.js +93 -7
  16. package/dist/commands/proxy/nginx/generate.js +98 -7
  17. package/dist/commands/revision/create.js +1 -1
  18. package/dist/commands/source/download.js +18 -14
  19. package/dist/lib/app-managed-resources.js +3 -2
  20. package/dist/lib/auth-store.js +68 -0
  21. package/dist/lib/cli-config.js +54 -1
  22. package/dist/lib/docker-image.js +94 -6
  23. package/dist/lib/env-config.js +5 -0
  24. package/dist/lib/env-proxy-config.js +48 -0
  25. package/dist/lib/env-proxy.js +193 -59
  26. package/dist/lib/prompt-catalog-terminal.js +32 -19
  27. package/dist/lib/prompt-web-ui.js +13 -2
  28. package/dist/lib/proxy-caddy.js +77 -9
  29. package/dist/lib/proxy-nginx.js +71 -11
  30. package/dist/locale/en-US.json +38 -38
  31. package/dist/locale/zh-CN.json +38 -38
  32. package/package.json +3 -2
@@ -0,0 +1,23 @@
1
+ # Rendered by `nb env proxy`.
2
+ # Context:
3
+ # publicBasePath={{publicBasePath}}
4
+ # apiBasePath={{apiBasePath}}
5
+ # wsPath={{wsPath}}
6
+ # v2PublicPath={{v2PublicPath}}
7
+ # backendUrl={{backendUrl}}
8
+ # snippetsDir={{snippetsDir}}
9
+ # uploadsDir={{uploadsDir}}
10
+ # distRootDir={{distRootDir}}
11
+ # entryDir={{entryDir}}
12
+ # publicDir={{publicDir}}
13
+
14
+ server {
15
+ listen 80;
16
+ server_name _;
17
+
18
+ # Add custom directives or locations above the managed block as needed.
19
+
20
+ {{managedConfigBlock}}
21
+
22
+ # Add custom directives or locations below the managed block as needed.
23
+ }
@@ -0,0 +1,5 @@
1
+ # Managed by `nb env proxy`. Changes will be overwritten.
2
+
3
+ include {{snippetsDir}}/log-format-http.conf;
4
+ include {{snippetsDir}}/maps-http.conf;
5
+ include {{appConfigIncludePath}};
@@ -0,0 +1,5 @@
1
+ expires 365d;
2
+ add_header Cache-Control "public" always;
3
+
4
+ access_log off;
5
+ autoindex off;
@@ -0,0 +1,17 @@
1
+ gzip on;
2
+ gzip_types
3
+ text/plain
4
+ text/css
5
+ text/xml
6
+ text/markdown
7
+ text/javascript
8
+ application/javascript
9
+ application/json
10
+ application/manifest+json
11
+ application/atom+xml
12
+ application/rss+xml
13
+ application/xml
14
+ application/xml+rss
15
+ application/xhtml+xml
16
+ application/wasm
17
+ image/svg+xml;
@@ -0,0 +1,13 @@
1
+ log_format apm '"$time_local" client=$remote_addr '
2
+ 'method=$request_method request="$request" '
3
+ 'request_length=$request_length '
4
+ 'status=$status bytes_sent=$bytes_sent '
5
+ 'body_bytes_sent=$body_bytes_sent '
6
+ 'referer=$http_referer '
7
+ 'user_agent="$http_user_agent" '
8
+ 'upstream_addr=$upstream_addr '
9
+ 'upstream_status=$upstream_status '
10
+ 'request_time=$request_time '
11
+ 'upstream_response_time=$upstream_response_time '
12
+ 'upstream_connect_time=$upstream_connect_time '
13
+ 'upstream_header_time=$upstream_header_time';
@@ -0,0 +1,14 @@
1
+ map $http_upgrade $connection_upgrade {
2
+ default upgrade;
3
+ "" close;
4
+ }
5
+
6
+ map $http_x_forwarded_proto $upstream_x_forwarded_proto {
7
+ default $http_x_forwarded_proto;
8
+ "" $scheme;
9
+ }
10
+
11
+ map $http_host $final_host {
12
+ default $http_host;
13
+ "" $host;
14
+ }
@@ -0,0 +1,98 @@
1
+ types {
2
+ text/html html htm shtml;
3
+ text/css css;
4
+ text/xml xml;
5
+ image/gif gif;
6
+ image/jpeg jpeg jpg;
7
+ application/javascript js mjs;
8
+ application/atom+xml atom;
9
+ application/rss+xml rss;
10
+
11
+ text/mathml mml;
12
+ text/plain txt;
13
+ text/vnd.sun.j2me.app-descriptor jad;
14
+ text/vnd.wap.wml wml;
15
+ text/x-component htc;
16
+
17
+ image/avif avif;
18
+ image/png png;
19
+ image/svg+xml svg svgz;
20
+ image/tiff tif tiff;
21
+ image/vnd.wap.wbmp wbmp;
22
+ image/webp webp;
23
+ image/x-icon ico;
24
+ image/x-jng jng;
25
+ image/x-ms-bmp bmp;
26
+
27
+ font/woff woff;
28
+ font/woff2 woff2;
29
+
30
+ application/java-archive jar war ear;
31
+ application/json json;
32
+ application/mac-binhex40 hqx;
33
+ application/msword doc;
34
+ application/pdf pdf;
35
+ application/postscript ps eps ai;
36
+ application/rtf rtf;
37
+ application/vnd.apple.mpegurl m3u8;
38
+ application/vnd.google-earth.kml+xml kml;
39
+ application/vnd.google-earth.kmz kmz;
40
+ application/vnd.ms-excel xls;
41
+ application/vnd.ms-fontobject eot;
42
+ application/vnd.ms-powerpoint ppt;
43
+ application/vnd.oasis.opendocument.graphics odg;
44
+ application/vnd.oasis.opendocument.presentation odp;
45
+ application/vnd.oasis.opendocument.spreadsheet ods;
46
+ application/vnd.oasis.opendocument.text odt;
47
+ application/vnd.openxmlformats-officedocument.presentationml.presentation
48
+ pptx;
49
+ application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
50
+ xlsx;
51
+ application/vnd.openxmlformats-officedocument.wordprocessingml.document
52
+ docx;
53
+ application/vnd.wap.wmlc wmlc;
54
+ application/wasm wasm;
55
+ application/x-7z-compressed 7z;
56
+ application/x-cocoa cco;
57
+ application/x-java-archive-diff jardiff;
58
+ application/x-java-jnlp-file jnlp;
59
+ application/x-makeself run;
60
+ application/x-perl pl pm;
61
+ application/x-pilot prc pdb;
62
+ application/x-rar-compressed rar;
63
+ application/x-redhat-package-manager rpm;
64
+ application/x-sea sea;
65
+ application/x-shockwave-flash swf;
66
+ application/x-stuffit sit;
67
+ application/x-tcl tcl tk;
68
+ application/x-x509-ca-cert der pem crt;
69
+ application/x-xpinstall xpi;
70
+ application/xhtml+xml xhtml;
71
+ application/xspf+xml xspf;
72
+ application/zip zip;
73
+
74
+ application/octet-stream bin exe dll;
75
+ application/octet-stream deb;
76
+ application/octet-stream dmg;
77
+ application/octet-stream iso img;
78
+ application/octet-stream msi msp msm;
79
+
80
+ audio/midi mid midi kar;
81
+ audio/mpeg mp3;
82
+ audio/ogg ogg;
83
+ audio/x-m4a m4a;
84
+ audio/x-realaudio ra;
85
+
86
+ video/3gpp 3gpp 3gp;
87
+ video/mp2t ts;
88
+ video/mp4 mp4;
89
+ video/mpeg mpeg mpg;
90
+ video/quicktime mov;
91
+ video/webm webm;
92
+ video/x-flv flv;
93
+ video/x-m4v m4v;
94
+ video/x-mng mng;
95
+ video/x-ms-asf asx asf;
96
+ video/x-ms-wmv wmv;
97
+ video/x-msvideo avi;
98
+ }
@@ -0,0 +1,18 @@
1
+ proxy_http_version 1.1;
2
+
3
+ proxy_set_header Upgrade $http_upgrade;
4
+ proxy_set_header Connection $connection_upgrade;
5
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
6
+ proxy_set_header X-Forwarded-Proto $upstream_x_forwarded_proto;
7
+ proxy_set_header Host $final_host;
8
+ proxy_set_header Referer $http_referer;
9
+ proxy_set_header User-Agent $http_user_agent;
10
+
11
+ add_header Cache-Control "no-cache, no-store" always;
12
+ proxy_cache_bypass $http_upgrade;
13
+
14
+ proxy_connect_timeout 600;
15
+ proxy_send_timeout 600;
16
+ proxy_read_timeout 600;
17
+ send_timeout 600;
18
+ proxy_buffering off;
@@ -0,0 +1,6 @@
1
+ add_header Cache-Control "no-store, no-cache, must-revalidate" always;
2
+ add_header X-Robots-Tag "noindex, nofollow" always;
3
+
4
+ if_modified_since off;
5
+ expires off;
6
+ etag off;
@@ -0,0 +1,21 @@
1
+ add_header Cache-Control "public" always;
2
+ add_header X-Content-Type-Options "nosniff" always;
3
+
4
+ access_log off;
5
+ autoindex off;
6
+
7
+ # Force potentially renderable uploaded files to download.
8
+ location ~* \.(?:htm|html|svg|svgz|xhtml)$ {
9
+ add_header Cache-Control "public" always;
10
+ add_header X-Content-Type-Options "nosniff" always;
11
+ add_header Content-Disposition "attachment" always;
12
+ }
13
+
14
+ # Let Markdown files render as plain Markdown text.
15
+ location ~* \.md$ {
16
+ default_type text/markdown;
17
+
18
+ add_header Cache-Control "public" always;
19
+ add_header X-Content-Type-Options "nosniff" always;
20
+ add_header Content-Disposition "inline" always;
21
+ }
@@ -37,6 +37,9 @@ function buildLicenseSyncArgv(envName, options) {
37
37
  }
38
38
  function resolveHookCommand(value) {
39
39
  const text = String(value ?? '').trim();
40
+ if (text === 'init') {
41
+ return text;
42
+ }
40
43
  if (text === 'app:restart' || text === 'app:upgrade') {
41
44
  return text;
42
45
  }
@@ -225,7 +228,7 @@ export default class AppStart extends Command {
225
228
  }),
226
229
  'hook-command': Flags.string({
227
230
  hidden: true,
228
- options: ['app:start', 'app:restart', 'app:upgrade'],
231
+ options: ['init', 'app:start', 'app:restart', 'app:upgrade'],
229
232
  }),
230
233
  };
231
234
  async run() {
@@ -170,8 +170,13 @@ export default class EnvInfo extends Command {
170
170
  'auth.accessToken': authGroup.accessToken,
171
171
  'auth.refreshToken': authGroup.refreshToken,
172
172
  };
173
+ const envGroup = {
174
+ name: runtime.envName,
175
+ kind: runtime.kind,
176
+ };
173
177
  const output = {
174
178
  ok: true,
179
+ name: runtime.envName,
175
180
  env: runtime.envName,
176
181
  kind: runtime.kind,
177
182
  app: serializeGroup(appGroup),
@@ -197,6 +202,11 @@ export default class EnvInfo extends Command {
197
202
  this.log(JSON.stringify(output, null, 2));
198
203
  return;
199
204
  }
200
- this.log([createGroupTable('App', appGroup), createGroupTable('DB', dbGroup), createGroupTable('API', apiGroup)].join('\n\n'));
205
+ this.log([
206
+ createGroupTable('Env', envGroup),
207
+ createGroupTable('App', appGroup),
208
+ createGroupTable('DB', dbGroup),
209
+ createGroupTable('API', apiGroup),
210
+ ].join('\n\n'));
201
211
  }
202
212
  }
@@ -16,7 +16,8 @@ import { getEnv, upsertEnv } from "../lib/auth-store.js";
16
16
  import { runPromptCatalog, } from "../lib/prompt-catalog.js";
17
17
  import { applyCliLocale, localeText, translateCli } from "../lib/cli-locale.js";
18
18
  import { resolveConfiguredEnvPath, resolveDefaultConfigScope, resolveEnvRelativePath } from '../lib/cli-home.js';
19
- import { resolveDefaultApiHost, resolveDefaultUiHost } from '../lib/cli-config.js';
19
+ import { getCliConfigValue, resolveDefaultApiHost, resolveDefaultUiHost } from '../lib/cli-config.js';
20
+ import { resolveOfficialDockerRegistry } from '../lib/docker-image.js';
20
21
  import { areConfiguredPathsEquivalent, deriveConfiguredSourcePath, deriveConfiguredStoragePath, inferConfiguredAppPathFromLegacyConfig, } from '../lib/env-paths.js';
21
22
  import { formatMissingManagedAppEnvMessage } from '../lib/app-runtime.js';
22
23
  import { runPromptCatalogWebUI } from "../lib/prompt-web-ui.js";
@@ -697,6 +698,12 @@ Prompt modes:
697
698
  if (flags.yes && !Object.prototype.hasOwnProperty.call(downloadSeed, 'source')) {
698
699
  downloadSeed.source = 'docker';
699
700
  }
701
+ const builtinDbImageRegistry = String(presetValues.dockerRegistry ?? '').trim() ||
702
+ resolveOfficialDockerRegistry(await getCliConfigValue('nb-image-registry'));
703
+ if (!Object.prototype.hasOwnProperty.call(presetValues, 'dockerRegistry')) {
704
+ out.dockerRegistry = builtinDbImageRegistry;
705
+ }
706
+ out.builtinDbImageRegistry = builtinDbImageRegistry;
700
707
  const dbInitial = await Install.buildDbPromptInitialValues({
701
708
  flags,
702
709
  downloadResults: downloadSeed,
@@ -704,6 +711,9 @@ Prompt modes:
704
711
  warnOnPortFallback: false,
705
712
  });
706
713
  for (const [key, value] of Object.entries(dbInitial)) {
714
+ if (key === 'builtinDbImage') {
715
+ continue;
716
+ }
707
717
  if (!Object.prototype.hasOwnProperty.call(presetValues, key)) {
708
718
  out[key] = value;
709
719
  }