vona-cli-set-api 1.1.129 → 1.1.131

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.
@@ -4,7 +4,7 @@ import { $makeMetadata } from 'vona-module-a-openapiutils';
4
4
  import { $Dto } from 'vona-module-a-orm';
5
5
  import { Dto } from 'vona-module-a-web';
6
6
  import { Model<%=argv.detailResourceNameCapitalize%> } from '<%=argv.detailPackageName%>';
7
- import { ZovaRender } from 'zova-rest-cabloy-basic-admin';
7
+ import { ZovaRender } from '<%=argv.restAdminNpm%>';
8
8
 
9
9
  export interface IDtoOptions<%=cli.helper.firstCharToUpperCase(argv.detailDtoBaseName)%> extends IDecoratorDtoOptions {}
10
10
 
@@ -3,14 +3,14 @@ import type { IDecoratorDtoOptions } from 'vona-module-a-web';
3
3
  import { $Dto } from 'vona-module-a-orm';
4
4
  import { Dto } from 'vona-module-a-web';
5
5
  import { Model<%=argv.detailResourceNameCapitalize%> } from '<%=argv.detailPackageName%>';
6
- import { ZovaRender } from 'zova-rest-cabloy-basic-admin';
6
+ import { ZovaRender } from '<%=argv.restAdminNpm%>';
7
7
 
8
8
  import { Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoBaseName)%> } from './<%=argv.detailDtoBaseName%>.tsx';
9
9
 
10
10
  export interface IDtoOptions<%=cli.helper.firstCharToUpperCase(argv.detailDtoMutateName)%> extends IDecoratorDtoOptions {}
11
11
 
12
12
  @Dto<IDtoOptions<%=cli.helper.firstCharToUpperCase(argv.detailDtoMutateName)%>>({
13
- blocks: [ZovaRender.block('basic-details:blockForm')],
13
+ blocks: [ZovaRender.block('<%=argv.detailsModuleName%>:blockForm')],
14
14
  })
15
15
  export class Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoMutateName)%> extends $Dto.mutate(() => Model<%=argv.detailResourceNameCapitalize%>, {
16
16
  dtoClass: Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoBaseName)%>,
@@ -4,7 +4,7 @@ import { $makeMetadata, Api, v } from 'vona-module-a-openapiutils';
4
4
  import { $Dto } from 'vona-module-a-orm';
5
5
  import { Dto } from 'vona-module-a-web';
6
6
  import { Model<%=argv.detailResourceNameCapitalize%> } from '<%=argv.detailPackageName%>';
7
- import { ZovaRender } from 'zova-rest-cabloy-basic-admin';
7
+ import { ZovaRender } from '<%=argv.restAdminNpm%>';
8
8
 
9
9
  import { $locale } from '../.metadata/locales.ts';
10
10
  import { Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoBaseName)%> } from './<%=argv.detailDtoBaseName%>.tsx';
@@ -13,23 +13,23 @@ export interface IDtoOptions<%=cli.helper.firstCharToUpperCase(argv.detailDtoRes
13
13
 
14
14
  @Dto<IDtoOptions<%=cli.helper.firstCharToUpperCase(argv.detailDtoResItemName)%>>({
15
15
  blocks: [
16
- ZovaRender.block('basic-details:blockDetails', {
16
+ ZovaRender.block('<%=argv.detailsModuleName%>:blockDetails', {
17
17
  blocks: [
18
- ZovaRender.block('basic-details:blockToolbarBulk', {
18
+ ZovaRender.block('<%=argv.detailsModuleName%>:blockToolbarBulk', {
19
19
  actions: [
20
- ZovaRender.detailsActionBulk('basic-details:actionCreate', {
20
+ ZovaRender.detailsActionBulk('<%=argv.detailsModuleName%>:actionCreate', {
21
21
  dialogOptions: { title: $locale('Add<%=argv.detailDialogTitleCapitalize%>') },
22
22
  permission: { formScene: ['create', 'edit'] },
23
23
  }),
24
24
  ],
25
25
  }),
26
- ZovaRender.block('basic-details:blockTable'),
26
+ ZovaRender.block('<%=argv.detailsModuleName%>:blockTable'),
27
27
  ],
28
28
  }),
29
29
  ],
30
30
  fields: {
31
31
  name: $makeMetadata(
32
- ZovaRender.cell('basic-details:actionView', {
32
+ ZovaRender.cell('<%=argv.detailsModuleName%>:actionView', {
33
33
  dialogOptions: { title: $locale('View<%=argv.detailDialogTitleCapitalize%>') },
34
34
  }),
35
35
  ),
@@ -38,19 +38,19 @@ export interface IDtoOptions<%=cli.helper.firstCharToUpperCase(argv.detailDtoRes
38
38
  export class Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoResItemName)%> extends $Dto.get(() => Model<%=argv.detailResourceNameCapitalize%>, {
39
39
  dtoClass: Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoBaseName)%>,
40
40
  }) {
41
- @Api.field(v.title('#'), ZovaRender.order(1, 'core'), ZovaRender.cell('basic-details:lineNumber'))
41
+ @Api.field(v.title('#'), ZovaRender.order(1, 'core'), ZovaRender.cell('<%=argv.detailsModuleName%>:lineNumber'))
42
42
  _lineNumber?: number;
43
43
 
44
44
  @Api.field(
45
45
  v.title($locale('Operations')),
46
46
  ZovaRender.order(1, 'max'),
47
- ZovaRender.cell('basic-details:actionOperationsRow', {
47
+ ZovaRender.cell('<%=argv.detailsModuleName%>:actionOperationsRow', {
48
48
  actions: [
49
- ZovaRender.detailsActionRow('basic-details:actionUpdate', {
49
+ ZovaRender.detailsActionRow('<%=argv.detailsModuleName%>:actionUpdate', {
50
50
  dialogOptions: { title: $locale('Edit<%=argv.detailDialogTitleCapitalize%>') },
51
51
  permission: { formScene: ['create', 'edit'] },
52
52
  }),
53
- ZovaRender.detailsActionRow('basic-details:actionDelete', {
53
+ ZovaRender.detailsActionRow('<%=argv.detailsModuleName%>:actionDelete', {
54
54
  permission: { formScene: ['create', 'edit'] },
55
55
  }),
56
56
  ],
@@ -3,14 +3,14 @@ import type { IDecoratorDtoOptions } from 'vona-module-a-web';
3
3
  import { $Dto } from 'vona-module-a-orm';
4
4
  import { Dto } from 'vona-module-a-web';
5
5
  import { Model<%=argv.detailResourceNameCapitalize%> } from '<%=argv.detailPackageName%>';
6
- import { ZovaRender } from 'zova-rest-cabloy-basic-admin';
6
+ import { ZovaRender } from '<%=argv.restAdminNpm%>';
7
7
 
8
8
  import { Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoBaseName)%> } from './<%=argv.detailDtoBaseName%>.tsx';
9
9
 
10
10
  export interface IDtoOptions<%=cli.helper.firstCharToUpperCase(argv.detailDtoViewName)%> extends IDecoratorDtoOptions {}
11
11
 
12
12
  @Dto<IDtoOptions<%=cli.helper.firstCharToUpperCase(argv.detailDtoViewName)%>>({
13
- blocks: [ZovaRender.block('basic-details:blockForm')],
13
+ blocks: [ZovaRender.block('<%=argv.detailsModuleName%>:blockForm')],
14
14
  })
15
15
  export class Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoViewName)%> extends $Dto.get(() => Model<%=argv.detailResourceNameCapitalize%>, {
16
16
  dtoClass: Dto<%=cli.helper.firstCharToUpperCase(argv.detailDtoBaseName)%>,
package/dist/index.js CHANGED
@@ -2055,6 +2055,10 @@ class CliToolsMasterDetail extends BeanCliBase {
2055
2055
  argv.detailDtoResItemName = `detail${argv.detailResourceNameCapitalize}ResItem`;
2056
2056
  argv.detailFieldPrivateName = `_${argv.relationName}`;
2057
2057
  argv.detailDialogTitleCapitalize = argv.detailModuleCapitalize;
2058
+ const editionName = fs.existsSync(path.join(argv.projectPath, '__CABLOY_START__')) ? 'start' : 'basic';
2059
+ argv.restAdminNpm = `zova-rest-cabloy-${editionName}-admin`;
2060
+ argv.detailsModuleName = `${editionName}-details`;
2061
+ argv.detailCrudCommand = `:tools:crud${this._capitalize(editionName)}`;
2058
2062
  }
2059
2063
  async _ensureDetailModule() {
2060
2064
  const {
@@ -2339,7 +2343,7 @@ class CliToolsMasterDetail extends BeanCliBase {
2339
2343
  content = this._replaceStrict(content, "import { $Dto } from 'vona-module-a-orm';", "import { $makeMetadata, Api, v } from 'vona-module-a-openapiutils';\nimport { $Dto } from 'vona-module-a-orm';", fileName);
2340
2344
  }
2341
2345
  if (!content.includes("import { $locale } from '../.metadata/locales.ts';")) {
2342
- content = this._replaceStrict(content, "import { ZovaRender } from 'zova-rest-cabloy-basic-admin';\n", "import { ZovaRender } from 'zova-rest-cabloy-basic-admin';\n\nimport { $locale } from '../.metadata/locales.ts';\n", fileName);
2346
+ content = this._replaceStrict(content, `import { ZovaRender } from '${argv.restAdminNpm}';\n`, `import { ZovaRender } from '${argv.restAdminNpm}';\n\nimport { $locale } from '../.metadata/locales.ts';\n`, fileName);
2343
2347
  }
2344
2348
  const importMarker = `import { Model${argv.resourceNameCapitalize} } from '../model/${argv.resourceName}.ts';\n`;
2345
2349
  if (!content.includes(`import { Dto${detailDtoClassCapitalize} } from './`)) {
@@ -2375,7 +2379,7 @@ class CliToolsMasterDetail extends BeanCliBase {
2375
2379
  const {
2376
2380
  argv
2377
2381
  } = this.context;
2378
- return ` ${argv.relationName}: $makeMetadata(\n v.title($locale('${argv.relationNameCapitalize}')),\n ZovaRender.order(5),\n ZovaRender.field('basic-details:formFieldDetails'),\n${scene === 'Create' ? ' v.optional(),\n' : ''} ),\n`;
2382
+ return ` ${argv.relationName}: $makeMetadata(\n v.title($locale('${argv.relationNameCapitalize}')),\n ZovaRender.order(5),\n ZovaRender.field('${argv.detailsModuleName}:formFieldDetails'),\n${scene === 'Create' ? ' v.optional(),\n' : ''} ),\n`;
2379
2383
  }
2380
2384
  _masterDtoClassReplaceSource(scene) {
2381
2385
  const {
@@ -2410,7 +2414,7 @@ class CliToolsMasterDetail extends BeanCliBase {
2410
2414
  const {
2411
2415
  argv
2412
2416
  } = this.context;
2413
- await this.helper.invokeCli([':tools:crudBasic', argv.detailResourceName, `--module=${argv.detailModule}`, '--nometadata'], {
2417
+ await this.helper.invokeCli([argv.detailCrudCommand, argv.detailResourceName, `--module=${argv.detailModule}`, '--nometadata'], {
2414
2418
  cwd: argv.projectPath
2415
2419
  });
2416
2420
  }
@@ -27,6 +27,9 @@ declare module '@cabloy/cli' {
27
27
  detailDialogTitleCapitalize: string;
28
28
  createdDetailModule?: boolean;
29
29
  createdDetailResource?: boolean;
30
+ restAdminNpm: string;
31
+ detailsModuleName: string;
32
+ detailCrudCommand: string;
30
33
  }
31
34
  }
32
35
  export declare class CliToolsMasterDetail extends BeanCliBase {
@@ -5,6 +5,7 @@ import { globby } from 'globby';
5
5
  import { createWriteStream } from 'node:fs';
6
6
  import os from 'node:os';
7
7
  import path from 'node:path';
8
+ import { pipeline } from 'node:stream/promises';
8
9
  import { run } from 'node:test';
9
10
  import { lcov, spec } from 'node:test/reporters';
10
11
  import { fileURLToPath } from 'node:url';
@@ -100,19 +101,24 @@ async function testRun(projectPath, coverage, patterns) {
100
101
  }
101
102
  });
102
103
  const summaryPromise = waitForTestSummary(testStream);
103
- if (coverage) {
104
- const reporterDir = path.join(projectPath, 'coverage');
105
- fse.ensureDirSync(reporterDir);
106
- const reporterLcov = createWriteStream(path.join(reporterDir, 'lcov.info'));
107
- testStream.compose(lcov).pipe(reporterLcov);
108
- }
109
- else {
110
- testStream.compose(spec).pipe(process.stdout);
111
- }
112
- const summarySuccess = await summaryPromise;
104
+ const reporterPromise = coverage
105
+ ? (() => {
106
+ const reporterDir = path.join(projectPath, 'coverage');
107
+ fse.ensureDirSync(reporterDir);
108
+ const reporterLcov = createWriteStream(path.join(reporterDir, 'lcov.info'));
109
+ return pipeline(testStream.compose(lcov), reporterLcov);
110
+ })()
111
+ : pipeline(testStream.compose(spec), process.stdout, { end: false });
112
+ const [summarySuccess, [, reporterError]] = await Promise.all([
113
+ summaryPromise,
114
+ catchError(() => reporterPromise),
115
+ ]);
113
116
  if (!summarySuccess) {
114
117
  throw new Error('node:test reported failed tests');
115
118
  }
119
+ if (reporterError) {
120
+ throw reporterError;
121
+ }
116
122
  }
117
123
  catch (error) {
118
124
  testError = error;
@@ -139,15 +145,19 @@ function waitForTestSummary(testStream) {
139
145
  }
140
146
  async function prepareConcurrency(app) {
141
147
  // check
148
+ const configured = process.env.TEST_CONCURRENCY;
142
149
  let concurrency = 1;
143
- if (process.env.TEST_CONCURRENCY === 'true') {
144
- concurrency = os.cpus().length;
145
- }
146
- else if (process.env.TEST_CONCURRENCY === 'false') {
150
+ if (configured === 'false') {
147
151
  concurrency = 1;
148
152
  }
153
+ else if (configured === undefined || configured === 'true') {
154
+ concurrency = Math.max(1, os.cpus().length);
155
+ }
149
156
  else {
150
- concurrency = Number.parseInt(process.env.TEST_CONCURRENCY);
157
+ concurrency = Number.parseInt(configured, 10);
158
+ if (!Number.isSafeInteger(concurrency) || concurrency < 1) {
159
+ throw new Error(`TEST_CONCURRENCY must be true, false, or a positive integer; received ${configured}`);
160
+ }
151
161
  }
152
162
  if (concurrency === 1)
153
163
  return concurrency;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "vona-cli-set-api",
3
- "version": "1.1.129",
4
- "gitHead": "cd41414765dfc186953f59e31d654ecb8ab2ed41",
3
+ "version": "1.1.131",
4
+ "gitHead": "fac7768bb7db22ff0180dc59d711efba5b853ae7",
5
5
  "description": "vona cli-set-api",
6
6
  "keywords": [
7
7
  "framework",
@@ -73,7 +73,7 @@
73
73
  "ts-node-maintained": "^10.9.6",
74
74
  "urllib": "^4.9.0",
75
75
  "uuid": "^11.1.0",
76
- "vona-core": "^5.1.32",
76
+ "vona-core": "^5.1.34",
77
77
  "why-is-node-running": "^3.2.2",
78
78
  "yargs-parser": "^22.0.0"
79
79
  }