vona-module-a-startup 5.1.16 → 5.1.18

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.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { BeanInfo, BeanBase, cast, getRuntimePathPhysicalRoot, BeanSimple, BeanScopeBase, createBeanDecorator } from 'vona';
1
+ import { BeanInfo, BeanBase, withIsolatedTestDatabaseDiscovery, cast, assertIsolatedTestConfig, getRuntimePathPhysicalRoot, BeanSimple, BeanScopeBase, createBeanDecorator } from 'vona';
2
2
  import { __decorate } from 'tslib';
3
3
  import { isNil } from '@cabloy/utils';
4
4
  import fse from 'fs-extra';
@@ -10,13 +10,32 @@ import { BeanRedlockBase } from 'vona-module-a-redlock';
10
10
 
11
11
  let ServiceStartup = class ServiceStartup extends BeanBase {
12
12
  async appStart() {
13
+ // db:reset is a one-shot data preparation command, not a development server.
14
+ if (this.app.meta.isDev && process.env.VONA_DB_RESET === 'true') {
15
+ this.app.config.server.listen.disable = true;
16
+ }
13
17
  // clear keys
14
18
  await this._clearResources();
15
19
  // run startups: not after
16
20
  for (const startup of this._startups) {
17
21
  const startupOptions = startup.beanOptions.options;
18
22
  if (!startupOptions?.instance && startupOptions?.after !== true) {
19
- await this.runStartup(startup.name, null);
23
+ // A previous dev startup may have left databaseInit's debounce key in Redis.
24
+ // Only the explicit reset must bypass that key to guarantee recreation.
25
+ const force = this.app.meta.isDev && process.env.VONA_DB_RESET === 'true' && startup.name === 'a-version:databaseInit';
26
+ const run = () => this.runStartup(startup.name, null, force ? {
27
+ force: true
28
+ } : undefined);
29
+ if (this.app.meta.env.VONA_TEST_RUN_ID && startup.name === 'a-version:databaseInit') {
30
+ const defaultClient = this.app.config.database.defaultClient;
31
+ if (typeof defaultClient !== 'string') {
32
+ throw new TypeError('Isolated test requires a static default database client');
33
+ }
34
+ const client = this.app.config.database.clients[defaultClient];
35
+ await withIsolatedTestDatabaseDiscovery(this.app, defaultClient, client, run);
36
+ } else {
37
+ await run();
38
+ }
20
39
  }
21
40
  }
22
41
  }
@@ -42,22 +61,25 @@ let ServiceStartup = class ServiceStartup extends BeanBase {
42
61
  await this._appReadyInstanceStartup(instanceName, wait);
43
62
  }
44
63
  }
45
- // version seed
46
- if (this.app.meta.isTest) {
47
- const instanceName = '';
48
- await this.bean.executor.newCtx(async () => {
49
- await this.$scope.version.service.version.__instanceSeed(instanceName);
50
- }, {
51
- dbInfo: {
52
- level: 1
53
- },
54
- instanceName
55
- });
64
+ // Seed test runs and explicit development resets only, after instance initialization.
65
+ if (this.app.meta.isTest || this.app.meta.isDev && process.env.VONA_DB_RESET === 'true') {
66
+ await this.seedDefaultInstance();
56
67
  }
57
68
  }
69
+ async seedDefaultInstance() {
70
+ const instanceName = '';
71
+ await this.bean.executor.newCtx(async () => {
72
+ await this.$scope.version.service.version.__instanceSeed(instanceName);
73
+ }, {
74
+ dbInfo: {
75
+ level: 1
76
+ },
77
+ instanceName
78
+ });
79
+ }
58
80
  async _appReadyInstanceStartup(instanceName, wait) {
59
81
  const res = this.$scope.instance.service.instance.instanceStartupIsolate(instanceName, {
60
- force: false
82
+ force: this.app.meta.isDev && process.env.VONA_DB_RESET === 'true'
61
83
  });
62
84
  if (wait) {
63
85
  await res;
@@ -129,6 +151,7 @@ let ServiceStartup = class ServiceStartup extends BeanBase {
129
151
  }
130
152
  async _clearResources() {
131
153
  if (!this.app.meta.isTest) return;
154
+ assertIsolatedTestConfig(this.app);
132
155
  // redis
133
156
  await this.$scope.redis.service.redis.clearAllData();
134
157
  // .app/public
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/service/startup.ts","../src/bean/cacheRedis.startupDebounce.ts","../src/bean/hmr.startup.ts","../src/bean/meta.redlock.ts","../src/config/config.ts","../src/.metadata/this.ts","../src/monkey.ts","../src/.metadata/index.ts","../src/lib/startup.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":["ServiceStartup","BeanBase","appStart","_clearResources","startup","_startups","startupOptions","beanOptions","options","instance","after","runStartup","name","appReady","app","meta","isTest","isDev","_appReadyInstanceStartup","key","config","instances","instanceName","configInstanceBase","wait","server","listen","disable","bean","executor","newCtx","$scope","version","service","__instanceSeed","dbInfo","level","res","instanceStartupIsolate","force","startupName","onion","onionsNormal","debounce","_runStartupInner","scope","redlock","lockIsolate","_runStartupLock","cacheKey","isNil","ctx","id","flag","cacheRedis","startupDebounce","getset","ttl","$logger","silly","process","pid","cast","_getBean","beanFullName","execute","transaction","runStartupInstance","appReadyInstances","getOnionsEnabledCached","redis","clearAllData","fse","remove","publicDir","getRuntimePathPhysicalRoot","__decorate","Service","__z_BeanInfo","module","CacheRedisStartupDebounce","ServiceCacheRedisBase","CacheRedis","disableInstance","disableTransactionCompensate","client","HmrStartup","reload","_beanOptions","worker","Hmr","MetaRedlock","BeanRedlockBase","Meta","_app","__ThisModule__","Monkey","BeanSimple","ScopeModuleAStartup","BeanScopeBase","Scope","Startup","createBeanDecorator"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/service/startup.ts","../src/bean/cacheRedis.startupDebounce.ts","../src/bean/hmr.startup.ts","../src/bean/meta.redlock.ts","../src/config/config.ts","../src/.metadata/this.ts","../src/monkey.ts","../src/.metadata/index.ts","../src/lib/startup.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":["ServiceStartup","BeanBase","appStart","app","meta","isDev","process","env","VONA_DB_RESET","config","server","listen","disable","_clearResources","startup","_startups","startupOptions","beanOptions","options","instance","after","force","name","run","runStartup","undefined","VONA_TEST_RUN_ID","defaultClient","database","TypeError","client","clients","withIsolatedTestDatabaseDiscovery","appReady","isTest","_appReadyInstanceStartup","key","instances","instanceName","configInstanceBase","wait","seedDefaultInstance","bean","executor","newCtx","$scope","version","service","__instanceSeed","dbInfo","level","res","instanceStartupIsolate","startupName","onion","onionsNormal","debounce","_runStartupInner","scope","redlock","lockIsolate","_runStartupLock","cacheKey","isNil","ctx","id","flag","cacheRedis","startupDebounce","getset","ttl","$logger","silly","pid","cast","_getBean","beanFullName","execute","transaction","runStartupInstance","appReadyInstances","getOnionsEnabledCached","assertIsolatedTestConfig","redis","clearAllData","fse","remove","publicDir","getRuntimePathPhysicalRoot","__decorate","Service","__z_BeanInfo","module","CacheRedisStartupDebounce","ServiceCacheRedisBase","CacheRedis","disableInstance","disableTransactionCompensate","HmrStartup","reload","_beanOptions","worker","Hmr","MetaRedlock","BeanRedlockBase","Meta","_app","__ThisModule__","Monkey","BeanSimple","ScopeModuleAStartup","BeanScopeBase","Scope","Startup","createBeanDecorator"],"mappings":"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"}
@@ -5,6 +5,7 @@ import type { IInstanceStartupOptions, IStartupRecord } from '../types/startup.t
5
5
  export declare class ServiceStartup extends BeanBase {
6
6
  appStart(): Promise<void>;
7
7
  appReady(): Promise<void>;
8
+ private seedDefaultInstance;
8
9
  private _appReadyInstanceStartup;
9
10
  runStartup(startupName: string, instanceName?: keyof IInstanceRecord | null, options?: IInstanceStartupOptions): Promise<void>;
10
11
  _runStartupLock<T extends keyof IStartupRecord>(startup: IOnionSlice<IStartupRecord, T>, instanceName?: keyof IInstanceRecord | null, options?: IInstanceStartupOptions): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"startup.d.ts","sourceRoot":"","sources":["../../src/service/startup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvD,OAAO,EAAE,QAAQ,EAAoC,MAAM,MAAM,CAAC;AAGlE,OAAO,KAAK,EAEV,uBAAuB,EAEvB,cAAc,EACf,MAAM,qBAAqB,CAAC;AAE7B,qBACa,cAAe,SAAQ,QAAQ;IACpC,QAAQ;IAaR,QAAQ;YAuCA,wBAAwB;IAShC,UAAU,CACd,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,eAAe,GAAG,IAAI,EAC3C,OAAO,CAAC,EAAE,uBAAuB;IAoB7B,eAAe,CAAC,CAAC,SAAS,MAAM,cAAc,EAClD,OAAO,EAAE,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,EACvC,YAAY,CAAC,EAAE,MAAM,eAAe,GAAG,IAAI,EAC3C,OAAO,CAAC,EAAE,uBAAuB;IAoB7B,gBAAgB,CAAC,CAAC,SAAS,MAAM,cAAc,EACnD,OAAO,EAAE,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,EACvC,YAAY,CAAC,EAAE,MAAM,eAAe,GAAG,IAAI,EAC3C,OAAO,CAAC,EAAE,uBAAuB;IAsB7B,kBAAkB,CAAC,YAAY,EAAE,MAAM,eAAe,EAAE,OAAO,CAAC,EAAE,uBAAuB;IAmB/F,OAAO,KAAK,SAAS,GAEpB;YAEa,eAAe;CAS9B"}
1
+ {"version":3,"file":"startup.d.ts","sourceRoot":"","sources":["../../src/service/startup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvD,OAAO,EAEL,QAAQ,EAIT,MAAM,MAAM,CAAC;AAGd,OAAO,KAAK,EAEV,uBAAuB,EAEvB,cAAc,EACf,MAAM,qBAAqB,CAAC;AAE7B,qBACa,cAAe,SAAQ,QAAQ;IACpC,QAAQ;IAiCR,QAAQ;YA8BA,mBAAmB;YAUnB,wBAAwB;IAShC,UAAU,CACd,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,eAAe,GAAG,IAAI,EAC3C,OAAO,CAAC,EAAE,uBAAuB;IAoB7B,eAAe,CAAC,CAAC,SAAS,MAAM,cAAc,EAClD,OAAO,EAAE,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,EACvC,YAAY,CAAC,EAAE,MAAM,eAAe,GAAG,IAAI,EAC3C,OAAO,CAAC,EAAE,uBAAuB;IAoB7B,gBAAgB,CAAC,CAAC,SAAS,MAAM,cAAc,EACnD,OAAO,EAAE,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,EACvC,YAAY,CAAC,EAAE,MAAM,eAAe,GAAG,IAAI,EAC3C,OAAO,CAAC,EAAE,uBAAuB;IAsB7B,kBAAkB,CAAC,YAAY,EAAE,MAAM,eAAe,EAAE,OAAO,CAAC,EAAE,uBAAuB;IAmB/F,OAAO,KAAK,SAAS,GAEpB;YAEa,eAAe;CAU9B"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "vona-module-a-startup",
3
- "version": "5.1.16",
4
- "gitHead": "eb85d771ef75776a439e56df3af8be6a3a36c1c2",
3
+ "version": "5.1.18",
4
+ "gitHead": "bc3034e45e4f728199560c682b3432d47381ceb4",
5
5
  "description": "",
6
6
  "keywords": [
7
7
  "Vona Module"
@@ -3,7 +3,13 @@ import type { IOnionSlice } from 'vona-module-a-onion';
3
3
 
4
4
  import { isNil } from '@cabloy/utils';
5
5
  import fse from 'fs-extra';
6
- import { BeanBase, cast, getRuntimePathPhysicalRoot } from 'vona';
6
+ import {
7
+ assertIsolatedTestConfig,
8
+ BeanBase,
9
+ cast,
10
+ getRuntimePathPhysicalRoot,
11
+ withIsolatedTestDatabaseDiscovery,
12
+ } from 'vona';
7
13
  import { Service } from 'vona-module-a-bean';
8
14
 
9
15
  import type {
@@ -16,6 +22,10 @@ import type {
16
22
  @Service()
17
23
  export class ServiceStartup extends BeanBase {
18
24
  async appStart() {
25
+ // db:reset is a one-shot data preparation command, not a development server.
26
+ if (this.app.meta.isDev && process.env.VONA_DB_RESET === 'true') {
27
+ this.app.config.server.listen.disable = true;
28
+ }
19
29
  // clear keys
20
30
  await this._clearResources();
21
31
 
@@ -23,7 +33,23 @@ export class ServiceStartup extends BeanBase {
23
33
  for (const startup of this._startups) {
24
34
  const startupOptions = startup.beanOptions.options;
25
35
  if (!startupOptions?.instance && startupOptions?.after !== true) {
26
- await this.runStartup(startup.name, null);
36
+ // A previous dev startup may have left databaseInit's debounce key in Redis.
37
+ // Only the explicit reset must bypass that key to guarantee recreation.
38
+ const force =
39
+ this.app.meta.isDev &&
40
+ process.env.VONA_DB_RESET === 'true' &&
41
+ startup.name === 'a-version:databaseInit';
42
+ const run = () => this.runStartup(startup.name, null, force ? { force: true } : undefined);
43
+ if (this.app.meta.env.VONA_TEST_RUN_ID && startup.name === 'a-version:databaseInit') {
44
+ const defaultClient = this.app.config.database.defaultClient;
45
+ if (typeof defaultClient !== 'string') {
46
+ throw new TypeError('Isolated test requires a static default database client');
47
+ }
48
+ const client = this.app.config.database.clients[defaultClient];
49
+ await withIsolatedTestDatabaseDiscovery(this.app, defaultClient, client, run);
50
+ } else {
51
+ await run();
52
+ }
27
53
  }
28
54
  }
29
55
  }
@@ -52,24 +78,25 @@ export class ServiceStartup extends BeanBase {
52
78
  }
53
79
  }
54
80
 
55
- // version seed
56
- if (this.app.meta.isTest) {
57
- const instanceName = '';
58
- await this.bean.executor.newCtx(
59
- async () => {
60
- await this.$scope.version.service.version.__instanceSeed(instanceName);
61
- },
62
- {
63
- dbInfo: { level: 1 },
64
- instanceName,
65
- },
66
- );
81
+ // Seed test runs and explicit development resets only, after instance initialization.
82
+ if (this.app.meta.isTest || (this.app.meta.isDev && process.env.VONA_DB_RESET === 'true')) {
83
+ await this.seedDefaultInstance();
67
84
  }
68
85
  }
69
86
 
87
+ private async seedDefaultInstance() {
88
+ const instanceName = '';
89
+ await this.bean.executor.newCtx(
90
+ async () => {
91
+ await this.$scope.version.service.version.__instanceSeed(instanceName);
92
+ },
93
+ { dbInfo: { level: 1 }, instanceName },
94
+ );
95
+ }
96
+
70
97
  private async _appReadyInstanceStartup(instanceName: keyof IInstanceRecord, wait: boolean) {
71
98
  const res = this.$scope.instance.service.instance.instanceStartupIsolate(instanceName, {
72
- force: false,
99
+ force: this.app.meta.isDev && process.env.VONA_DB_RESET === 'true',
73
100
  });
74
101
  if (wait) {
75
102
  await res;
@@ -172,6 +199,7 @@ export class ServiceStartup extends BeanBase {
172
199
 
173
200
  private async _clearResources() {
174
201
  if (!this.app.meta.isTest) return;
202
+ assertIsolatedTestConfig(this.app);
175
203
  // redis
176
204
  await this.$scope.redis.service.redis.clearAllData();
177
205
  // .app/public