vona-cli-set-api 1.0.58 → 1.0.61

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.
@@ -0,0 +1,28 @@
1
+ server {
2
+
3
+ resolver 127.0.0.11 ipv6=off;
4
+
5
+ listen 80;
6
+ server_name localhost;
7
+
8
+ set $node_ip app;
9
+ set $node_port 7102;
10
+
11
+ location / {
12
+ proxy_http_version 1.1;
13
+ proxy_set_header X-Real-IP $remote_addr;
14
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
15
+ proxy_set_header X-Forwarded-Host $server_name;
16
+ proxy_set_header X-Forwarded-Proto $scheme;
17
+ proxy_set_header Host $http_host;
18
+ proxy_set_header X-NginX-Proxy true;
19
+ proxy_set_header Upgrade $http_upgrade;
20
+ proxy_set_header Connection "upgrade";
21
+ proxy_pass http://$node_ip:$node_port$request_uri;
22
+ proxy_redirect off;
23
+ proxy_buffer_size 64k;
24
+ proxy_buffers 4 32k;
25
+ proxy_busy_buffers_size 64k;
26
+ }
27
+
28
+ }
@@ -0,0 +1,12 @@
1
+ FROM node:24
2
+
3
+ RUN mkdir -p /opt/node/app/dist
4
+ WORKDIR /opt/node/app
5
+
6
+ COPY ./scripts /opt/node/app/scripts
7
+
8
+ RUN chmod +x /opt/node/app/scripts/*.sh
9
+
10
+ # start
11
+
12
+ CMD node ./dist/docker/bootstrap.js
@@ -0,0 +1,80 @@
1
+ version: '3.7'
2
+
3
+ services:
4
+ app:
5
+ depends_on:
6
+ - pg
7
+ - mysql
8
+ - redis
9
+ build:
10
+ context: .
11
+ dockerfile: docker-compose-dockerfile-app
12
+ restart: always
13
+ ports:
14
+ - '7202:7102'
15
+ volumes:
16
+ - ./docker-compose/output/dist/docker:/opt/node/app/dist/docker
17
+ - ./docker-compose/output/app/vona:/root/vona
18
+ - ./docker-compose/logs/app:/root/logs
19
+ command: [./scripts/wait-for-it.sh, 'pg:5432', 'mysql:3306', 'redis:6379', -s, --, ./scripts/app-init.sh]
20
+
21
+ nginx:
22
+ image: nginx:latest
23
+ depends_on:
24
+ - app
25
+ restart: always
26
+ ports:
27
+ - '80:80'
28
+ volumes:
29
+ - ./docker-compose/output/app/vona:/usr/share/nginx/app/vona
30
+ - ./docker-compose/logs/nginx:/var/log/nginx
31
+ - ./docker-compose/config/nginx/conf.d:/etc/nginx/conf.d
32
+
33
+ pg:
34
+ image: postgres:17
35
+ restart: always
36
+ ports:
37
+ - '35432:5432'
38
+ # set shared memory limit when using docker compose
39
+ shm_size: 128mb
40
+ # or set shared memory limit when deploy via swarm stack
41
+ volumes:
42
+ - ./docker-compose/data/pg:/var/lib/postgresql/data
43
+ environment:
44
+ POSTGRES_DB: <%=argv.name%>
45
+ POSTGRES_USER: <%=argv.DATABASE_CLIENT_PG_USER%>
46
+ POSTGRES_PASSWORD: '<%=argv.DATABASE_CLIENT_PG_PASSWORD%>'
47
+
48
+ mysql:
49
+ image: mysql:8.1
50
+ command:
51
+ - --default-authentication-plugin=mysql_native_password
52
+ - --character-set-server=utf8mb4
53
+ - --collation-server=utf8mb4_general_ci
54
+ - --skip-host-cache
55
+ - --skip-name-resolve
56
+ - --slow_query_log=1
57
+ - --long_query_time=0.5
58
+ - --log-queries-not-using-indexes=1
59
+ - --lower_case_table_names=1
60
+ restart: always
61
+ ports:
62
+ - '33306:3306'
63
+ volumes:
64
+ - ./docker-compose/data/mysql:/var/lib/mysql
65
+ environment:
66
+ MYSQL_ROOT_PASSWORD: '<%=argv.DATABASE_CLIENT_MYSQL_PASSWORD_ROOT%>'
67
+ MYSQL_DATABASE: <%=argv.name%>
68
+ MYSQL_USER: <%=argv.DATABASE_CLIENT_MYSQL_USER%>
69
+ MYSQL_PASSWORD: '<%=argv.DATABASE_CLIENT_MYSQL_PASSWORD%>'
70
+ security_opt:
71
+ - seccomp:unconfined
72
+
73
+ redis:
74
+ image: redis:latest
75
+ command: [redis-server, --appendonly, yes]
76
+ restart: always
77
+ ports:
78
+ - '36379:6379'
79
+ volumes:
80
+ - ./docker-compose/data/redis:/data
@@ -32,6 +32,8 @@ BUILD_SOURCEMAP = false
32
32
  BUILD_MINIFY = true
33
33
  BUILD_INLINEDYNAMICIMPORTS = true
34
34
  BUILD_LOG_CIRCULAR_DEPENDENCY = false
35
+ BUILD_COPY_DIST =
36
+ BUILD_COPY_RELEASE =
35
37
 
36
38
  # test
37
39
 
@@ -1,6 +1,11 @@
1
1
  # server
2
2
 
3
3
  SERVER_KEYS = <%=argv.SERVER_KEYS_PROD%>
4
+ SERVER_WORKERS = 1
5
+
6
+ # build
7
+
8
+ BUILD_COPY_DIST = ./docker-compose/output/dist
4
9
 
5
10
  # database
6
11
 
@@ -46,7 +46,7 @@
46
46
  }
47
47
  },
48
48
  "dependencies": {
49
- "vona": "^5.0.33"
49
+ "vona": "^5.0.34"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@cabloy/lint": "^5.0.16",
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env bash
2
2
 
3
- cp /opt/node/app/dist/* -r /root/output/app/dist
4
- npm run start:backend
3
+ # cp /opt/node/app/dist/* -r /root/output/app/dist
4
+ # npm run start:backend
5
+ node ./dist/docker/bootstrap.js
@@ -3,6 +3,8 @@ import { metadataCustomSnippet } from '@cabloy/cli';
3
3
  import { catchError } from '@cabloy/utils';
4
4
  import { locale_transform } from '../utils.ts';
5
5
 
6
+ const __resources = { Name: 'Name', Description: 'Description' };
7
+
6
8
  declare module '@cabloy/cli' {
7
9
  interface ICommandArgv {
8
10
  module: string;
@@ -22,6 +24,6 @@ export default metadataCustomSnippet({
22
24
  return fs.readFileSync(targetFile).toString('utf8');
23
25
  },
24
26
  async transform({ ast, argv }) {
25
- return locale_transform({ ast, argv });
27
+ return locale_transform({ ast, argv, resources: __resources });
26
28
  },
27
29
  });
@@ -1,10 +1,12 @@
1
1
  import { metadataCustomSnippet } from '@cabloy/cli';
2
2
  import { locale_transform } from '../utils.ts';
3
3
 
4
+ const __resources = { Name: '名称', Description: '描述' };
5
+
4
6
  export default metadataCustomSnippet({
5
7
  file: 'src/config/locale/zh-cn.ts',
6
8
  language: 'gogo',
7
9
  async transform({ ast, argv }) {
8
- return locale_transform({ ast, argv });
10
+ return locale_transform({ ast, argv, resources: __resources });
9
11
  },
10
12
  });
@@ -1,14 +1,13 @@
1
- const __names = ['Name', 'Description'];
2
-
3
- export async function locale_transform({ ast, argv }) {
4
- const names = __names.concat(argv.resourceNameCapitalize);
1
+ export async function locale_transform({ ast, argv, resources }) {
2
+ const names = Object.keys(resources).concat(argv.resourceNameCapitalize);
5
3
  const nodes = ast.find('export default {$$$0}');
6
4
  for (const name of names) {
7
5
  const node = nodes.match.$$$0.find(node => {
8
6
  return (node as any).key.name === name;
9
7
  });
10
8
  if (!node) {
11
- const code = `${name}: '${name}',`;
9
+ const value = resources[name] ?? argv.resourceNameCapitalize;
10
+ const code = `${name}: '${value}',`;
12
11
  ast.replace(
13
12
  'export default {$$$0}',
14
13
  `export default { $$$0, \n ${code}}`,
@@ -48,6 +48,23 @@ export class CliBinBuild extends BeanCliBase {
48
48
  const outReleasesDir = path.join(projectPath, getOutReleasesDir());
49
49
  await rimraf(outReleasesDir);
50
50
  fse.copySync(outDir, outReleasesDir);
51
+ // copy
52
+ if (process.env.BUILD_COPY_DIST) {
53
+ const envDist = path.isAbsolute(process.env.BUILD_COPY_DIST)
54
+ ? process.env.BUILD_COPY_DIST
55
+ : path.join(projectPath, process.env.BUILD_COPY_DIST);
56
+ const outDirCopy = path.join(envDist, path.basename(outDir));
57
+ fse.removeSync(outDirCopy);
58
+ fse.copySync(outDir, outDirCopy);
59
+ }
60
+ if (process.env.BUILD_COPY_RELEASE) {
61
+ const envRelease = path.isAbsolute(process.env.BUILD_COPY_RELEASE)
62
+ ? process.env.BUILD_COPY_RELEASE
63
+ : path.join(projectPath, process.env.BUILD_COPY_RELEASE);
64
+ const outReleasesDirCopy = path.join(envRelease, path.basename(outReleasesDir));
65
+ fse.removeSync(outReleasesDirCopy);
66
+ fse.copySync(outDir, outReleasesDirCopy);
67
+ }
51
68
  }
52
69
  async _assets(_projectPath, modulesMeta, outDir) {
53
70
  const assetsPath = path.join(outDir, 'assets');
@@ -34,7 +34,7 @@ export class CliCreateProject extends BeanCliBase {
34
34
  argv.DATABASE_CLIENT_MYSQL_USER = 'web_user';
35
35
  argv.DATABASE_CLIENT_MYSQL_PASSWORD = randomize('*', 16, { exclude: '\\\'"$' });
36
36
  argv.DATABASE_CLIENT_MYSQL_PASSWORD_ROOT = randomize('*', 16, { exclude: '\\\'"$' });
37
- argv.DATABASE_CLIENT_PG_USER = 'web_user';
37
+ argv.DATABASE_CLIENT_PG_USER = 'postgres';
38
38
  argv.DATABASE_CLIENT_PG_PASSWORD = randomize('*', 16, { exclude: '\\\'"$' });
39
39
  argv.DATABASE_CLIENT_PG_PASSWORD_ROOT = randomize('*', 16, { exclude: '\\\'"$' });
40
40
  // template
@@ -46,6 +46,8 @@ export class CliCreateProject extends BeanCliBase {
46
46
  snippetsPath: null,
47
47
  boilerplatePath: `create/project/${template}/boilerplate`,
48
48
  });
49
+ // create docker-compose/data/pg
50
+ fse.ensureDirSync(path.join(targetDir, 'docker-compose/data/pg'));
49
51
  // copy package.json
50
52
  fse.copyFileSync(path.join(targetDir, 'package.original.json'), path.join(targetDir, 'package.json'));
51
53
  // npm run init
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "vona-cli-set-api",
3
3
  "type": "module",
4
- "version": "1.0.58",
4
+ "version": "1.0.61",
5
5
  "description": "vona cli-set-api",
6
6
  "publishConfig": {
7
7
  "access": "public"