vona-module-a-startup 5.0.34 → 5.1.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 (43) hide show
  1. package/LICENSE +0 -0
  2. package/dist/.metadata/index.d.ts +1 -0
  3. package/dist/.metadata/index.d.ts.map +1 -0
  4. package/dist/.metadata/this.d.ts +1 -0
  5. package/dist/.metadata/this.d.ts.map +1 -0
  6. package/dist/bean/cacheRedis.startupDebounce.d.ts +1 -0
  7. package/dist/bean/cacheRedis.startupDebounce.d.ts.map +1 -0
  8. package/dist/bean/hmr.startup.d.ts +1 -0
  9. package/dist/bean/hmr.startup.d.ts.map +1 -0
  10. package/dist/bean/meta.redlock.d.ts +1 -0
  11. package/dist/bean/meta.redlock.d.ts.map +1 -0
  12. package/dist/config/config.d.ts +1 -0
  13. package/dist/config/config.d.ts.map +1 -0
  14. package/dist/index.d.ts +1 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +24 -26
  17. package/dist/index.js.map +1 -0
  18. package/dist/lib/index.d.ts +1 -0
  19. package/dist/lib/index.d.ts.map +1 -0
  20. package/dist/lib/startup.d.ts +1 -0
  21. package/dist/lib/startup.d.ts.map +1 -0
  22. package/dist/monkey.d.ts +1 -0
  23. package/dist/monkey.d.ts.map +1 -0
  24. package/dist/service/startup.d.ts +2 -1
  25. package/dist/service/startup.d.ts.map +1 -0
  26. package/dist/types/index.d.ts +1 -0
  27. package/dist/types/index.d.ts.map +1 -0
  28. package/dist/types/startup.d.ts +1 -0
  29. package/dist/types/startup.d.ts.map +1 -0
  30. package/package.json +32 -27
  31. package/src/.metadata/index.ts +170 -0
  32. package/src/.metadata/this.ts +2 -0
  33. package/src/bean/cacheRedis.startupDebounce.ts +11 -0
  34. package/src/bean/hmr.startup.ts +12 -0
  35. package/src/bean/meta.redlock.ts +8 -0
  36. package/src/config/config.ts +9 -0
  37. package/src/index.ts +3 -0
  38. package/src/lib/index.ts +1 -0
  39. package/src/lib/startup.ts +7 -0
  40. package/src/monkey.ts +15 -0
  41. package/src/service/startup.ts +160 -0
  42. package/src/types/index.ts +1 -0
  43. package/src/types/startup.ts +37 -0
package/LICENSE CHANGED
File without changes
@@ -121,3 +121,4 @@ declare module 'vona' {
121
121
  }
122
122
  }
123
123
  /** scope: end */
124
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/.metadata/index.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export declare const __ThisModule__ = "a-startup";
2
2
  export { ScopeModuleAStartup as ScopeModule } from './index.ts';
3
+ //# sourceMappingURL=this.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"this.d.ts","sourceRoot":"","sources":["../../src/.metadata/this.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,IAAI,WAAW,EAAE,MAAM,YAAY,CAAC"}
@@ -3,3 +3,4 @@ export type TCacheRedisStartupDebounceKey = `startupDebounce:${string}`;
3
3
  export type TCacheRedisStartupDebounceData = boolean;
4
4
  export declare class CacheRedisStartupDebounce extends BeanCacheRedisBase<TCacheRedisStartupDebounceKey, TCacheRedisStartupDebounceData> {
5
5
  }
6
+ //# sourceMappingURL=cacheRedis.startupDebounce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cacheRedis.startupDebounce.d.ts","sourceRoot":"","sources":["../../src/bean/cacheRedis.startupDebounce.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAc,MAAM,qBAAqB,CAAC;AAErE,MAAM,MAAM,6BAA6B,GAAG,mBAAmB,MAAM,EAAE,CAAC;AACxE,MAAM,MAAM,8BAA8B,GAAG,OAAO,CAAC;AAErD,qBAKa,yBAA0B,SAAQ,kBAAkB,CAAC,6BAA6B,EAAE,8BAA8B,CAAC;CAAG"}
@@ -4,3 +4,4 @@ import { BeanBase } from 'vona';
4
4
  export declare class HmrStartup extends BeanBase implements IHmrReload {
5
5
  reload(_beanOptions: IDecoratorBeanOptionsBase): Promise<void>;
6
6
  }
7
+ //# sourceMappingURL=hmr.startup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hmr.startup.d.ts","sourceRoot":"","sources":["../../src/bean/hmr.startup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,MAAM,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAGhC,qBACa,UAAW,SAAQ,QAAS,YAAW,UAAU;IACtD,MAAM,CAAC,YAAY,EAAE,yBAAyB;CAGrD"}
@@ -3,3 +3,4 @@ export type TypeRedlockLockResource = never;
3
3
  export type TypeRedlockLockIsolateResource = `startup.${string}`;
4
4
  export declare class MetaRedlock extends BeanRedlockBase<TypeRedlockLockResource, TypeRedlockLockIsolateResource> {
5
5
  }
6
+ //# sourceMappingURL=meta.redlock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta.redlock.d.ts","sourceRoot":"","sources":["../../src/bean/meta.redlock.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAC5C,MAAM,MAAM,8BAA8B,GAAG,WAAW,MAAM,EAAE,CAAC;AAEjE,qBACa,WAAY,SAAQ,eAAe,CAAC,uBAAuB,EAAE,8BAA8B,CAAC;CAAG"}
@@ -4,3 +4,4 @@ export declare function config(_app: VonaApplication): {
4
4
  debounce: number;
5
5
  };
6
6
  };
7
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAE5C,wBAAgB,MAAM,CAAC,IAAI,EAAE,eAAe;;;;EAM3C"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './.metadata/index.ts';
2
2
  export * from './lib/index.ts';
3
3
  export * from './types/index.ts';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -1,21 +1,18 @@
1
1
  import { BeanInfo, BeanBase, cast, BeanSimple, BeanScopeBase, createBeanDecorator } from 'vona';
2
- import path from 'node:path';
2
+ import { __decorate } from 'tslib';
3
3
  import { isNil } from '@cabloy/utils';
4
4
  import fse from 'fs-extra';
5
+ import path from 'node:path';
5
6
  import { Service, Scope } from 'vona-module-a-bean';
6
7
  import { CacheRedis, BeanCacheRedisBase } from 'vona-module-a-cache';
7
8
  import { Meta } from 'vona-module-a-meta';
8
9
  import { BeanRedlockBase } from 'vona-module-a-redlock';
9
- import { Hmr } from 'vona-module-a-hmr';
10
+ import { Hmr } from 'vona-module-a-hmrbase';
10
11
 
11
- var _dec$4, _dec2$4, _class$4;
12
- let ServiceStartup = (_dec$4 = Service(), _dec2$4 = BeanInfo({
13
- module: "a-startup"
14
- }), _dec$4(_class$4 = _dec2$4(_class$4 = class ServiceStartup extends BeanBase {
12
+ let ServiceStartup = class ServiceStartup extends BeanBase {
15
13
  async appStart() {
16
14
  // clear keys
17
15
  await this._clearResources();
18
-
19
16
  // run startups: not after
20
17
  for (const startup of this._startups) {
21
18
  const startupOptions = startup.beanOptions.options;
@@ -32,7 +29,6 @@ let ServiceStartup = (_dec$4 = Service(), _dec2$4 = BeanInfo({
32
29
  await this.runStartup(startup.name, null);
33
30
  }
34
31
  }
35
-
36
32
  // version init : force: should be false
37
33
  if (this.app.meta.isTest || this.app.meta.isDev) {
38
34
  await this._appReadyInstanceStartup('', true);
@@ -47,7 +43,6 @@ let ServiceStartup = (_dec$4 = Service(), _dec2$4 = BeanInfo({
47
43
  await this._appReadyInstanceStartup(instanceName, wait);
48
44
  }
49
45
  }
50
-
51
46
  // version test
52
47
  if (this.app.meta.isTest) {
53
48
  const instanceName = '';
@@ -140,30 +135,33 @@ let ServiceStartup = (_dec$4 = Service(), _dec2$4 = BeanInfo({
140
135
  // .app/public
141
136
  await fse.remove(path.join(this.app.config.server.publicDir, '1'));
142
137
  }
143
- }) || _class$4) || _class$4);
138
+ };
139
+ ServiceStartup = __decorate([Service(), BeanInfo({
140
+ module: "a-startup"
141
+ })], ServiceStartup);
144
142
 
145
- var _dec$3, _dec2$3, _class$3;
146
- let CacheRedisStartupDebounce = (_dec$3 = CacheRedis({
143
+ let CacheRedisStartupDebounce = class CacheRedisStartupDebounce extends BeanCacheRedisBase {};
144
+ CacheRedisStartupDebounce = __decorate([CacheRedis({
147
145
  disableInstance: true,
148
146
  disableTransactionCompensate: true,
149
147
  client: 'worker'
150
- }), _dec2$3 = BeanInfo({
148
+ }), BeanInfo({
151
149
  module: "a-startup"
152
- }), _dec$3(_class$3 = _dec2$3(_class$3 = class CacheRedisStartupDebounce extends BeanCacheRedisBase {}) || _class$3) || _class$3);
150
+ })], CacheRedisStartupDebounce);
153
151
 
154
- var _dec$2, _dec2$2, _class$2;
155
- let MetaRedlock = (_dec$2 = Meta(), _dec2$2 = BeanInfo({
152
+ let MetaRedlock = class MetaRedlock extends BeanRedlockBase {};
153
+ MetaRedlock = __decorate([Meta(), BeanInfo({
156
154
  module: "a-startup"
157
- }), _dec$2(_class$2 = _dec2$2(_class$2 = class MetaRedlock extends BeanRedlockBase {}) || _class$2) || _class$2);
155
+ })], MetaRedlock);
158
156
 
159
- var _dec$1, _dec2$1, _class$1;
160
- let HmrStartup = (_dec$1 = Hmr(), _dec2$1 = BeanInfo({
161
- module: "a-startup"
162
- }), _dec$1(_class$1 = _dec2$1(_class$1 = class HmrStartup extends BeanBase {
157
+ let HmrStartup = class HmrStartup extends BeanBase {
163
158
  async reload(_beanOptions) {
164
159
  this.app.bean.worker.reload();
165
160
  }
166
- }) || _class$1) || _class$1);
161
+ };
162
+ HmrStartup = __decorate([Hmr(), BeanInfo({
163
+ module: "a-startup"
164
+ })], HmrStartup);
167
165
 
168
166
  function config(_app) {
169
167
  return {
@@ -184,11 +182,10 @@ class Monkey extends BeanSimple {
184
182
  }
185
183
  }
186
184
 
187
- var _dec, _dec2, _class;
188
- let ScopeModuleAStartup = (_dec = Scope(), _dec2 = BeanInfo({
185
+ let ScopeModuleAStartup = class ScopeModuleAStartup extends BeanScopeBase {};
186
+ ScopeModuleAStartup = __decorate([Scope(), BeanInfo({
189
187
  module: "a-startup"
190
- }), _dec(_class = _dec2(_class = class ScopeModuleAStartup extends BeanScopeBase {}) || _class) || _class);
191
-
188
+ })], ScopeModuleAStartup);
192
189
  /** scope: end */
193
190
 
194
191
  function Startup(options) {
@@ -196,3 +193,4 @@ function Startup(options) {
196
193
  }
197
194
 
198
195
  export { CacheRedisStartupDebounce, HmrStartup, MetaRedlock, Monkey, ScopeModuleAStartup, ServiceStartup, Startup, config };
196
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/service/startup.ts","../src/bean/cacheRedis.startupDebounce.ts","../src/bean/meta.redlock.ts","../src/bean/hmr.startup.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","__instanceTest","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","path","join","publicDir","__decorate","Service","__z_BeanInfo","module","CacheRedisStartupDebounce","BeanCacheRedisBase","CacheRedis","disableInstance","disableTransactionCompensate","client","MetaRedlock","BeanRedlockBase","Meta","HmrStartup","reload","_beanOptions","worker","Hmr","_app","__ThisModule__","Monkey","BeanSimple","ScopeModuleAStartup","BeanScopeBase","Scope","Startup","createBeanDecorator"],"mappings":"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"}
@@ -1 +1,2 @@
1
1
  export * from './startup.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
@@ -1,2 +1,3 @@
1
1
  import type { IDecoratorStartupOptions } from '../types/startup.ts';
2
2
  export declare function Startup(options?: IDecoratorStartupOptions): ClassDecorator;
3
+ //# sourceMappingURL=startup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startup.d.ts","sourceRoot":"","sources":["../../src/lib/startup.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAEpE,wBAAgB,OAAO,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,cAAc,CAE1E"}
package/dist/monkey.d.ts CHANGED
@@ -4,3 +4,4 @@ export declare class Monkey extends BeanSimple implements IMonkeyAppStart, IMonk
4
4
  appStart(): Promise<void>;
5
5
  appReady(): Promise<void>;
6
6
  }
7
+ //# sourceMappingURL=monkey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monkey.d.ts","sourceRoot":"","sources":["../src/monkey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAIlC,qBAAa,MAAO,SAAQ,UAAW,YAAW,eAAe,EAAE,eAAe;IAC1E,QAAQ;IAIR,QAAQ;CAGf"}
@@ -1,7 +1,7 @@
1
1
  import type { IInstanceRecord } from 'vona';
2
2
  import type { IOnionSlice } from 'vona-module-a-onion';
3
- import type { IInstanceStartupOptions, IStartupRecord } from '../types/startup.ts';
4
3
  import { BeanBase } from 'vona';
4
+ import type { IInstanceStartupOptions, IStartupRecord } from '../types/startup.ts';
5
5
  export declare class ServiceStartup extends BeanBase {
6
6
  appStart(): Promise<void>;
7
7
  appReady(): Promise<void>;
@@ -13,3 +13,4 @@ export declare class ServiceStartup extends BeanBase {
13
13
  private get _startups();
14
14
  private _clearResources;
15
15
  }
16
+ //# sourceMappingURL=startup.d.ts.map
@@ -0,0 +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;AAKvD,OAAO,EAAE,QAAQ,EAAQ,MAAM,MAAM,CAAC;AAGtC,OAAO,KAAK,EAA4B,uBAAuB,EAAmB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE9H,qBACa,cAAe,SAAQ,QAAQ;IACpC,QAAQ;IAaR,QAAQ;YAuCA,wBAAwB;IAOhC,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,eAAe,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,uBAAuB;IAmB9G,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;IAc7B,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;IAkB7B,kBAAkB,CAAC,YAAY,EAAE,MAAM,eAAe,EAAE,OAAO,CAAC,EAAE,uBAAuB;IAmB/F,OAAO,KAAK,SAAS,GAEpB;YAEa,eAAe;CAO9B"}
@@ -1 +1,2 @@
1
1
  export * from './startup.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
@@ -29,3 +29,4 @@ declare module 'vona' {
29
29
  startup: never;
30
30
  }
31
31
  }
32
+ //# sourceMappingURL=startup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startup.d.ts","sourceRoot":"","sources":["../../src/types/startup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAEzG,MAAM,WAAW,cAAc;CAAG;AAElC,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,wBAAyB,SAAQ,4BAA4B,EAAE,iBAAiB,CAAC,MAAM,cAAc,CAAC;IACrH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC;AAED,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAiB,SAAS;QACxB,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC;KACvC;CACF;AAED,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,YAAY;QAC3B,OAAO,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;KACpC;IAED,UAAiB,gBAAgB;QAC/B,OAAO,EAAE,KAAK,CAAC;KAChB;CACF"}
package/package.json CHANGED
@@ -1,26 +1,18 @@
1
1
  {
2
2
  "name": "vona-module-a-startup",
3
- "type": "module",
4
- "version": "5.0.34",
5
- "title": "a-startup",
6
- "vonaModule": {
7
- "dependencies": {},
8
- "onions": {
9
- "startup": {
10
- "optionsGlobalInterfaceName": "IDecoratorStartupOptions",
11
- "optionsGlobalInterfaceFrom": "vona-module-a-startup",
12
- "boilerplate": "boilerplate"
13
- }
14
- },
15
- "capabilities": {
16
- "monkey": true
17
- }
18
- },
3
+ "version": "5.1.1",
19
4
  "description": "",
20
- "author": "",
21
5
  "keywords": [
22
6
  "Vona Module"
23
7
  ],
8
+ "author": "",
9
+ "files": [
10
+ "assets",
11
+ "cli",
12
+ "dist",
13
+ "src"
14
+ ],
15
+ "type": "module",
24
16
  "exports": {
25
17
  ".": {
26
18
  "types": [
@@ -31,17 +23,30 @@
31
23
  },
32
24
  "./package.json": "./package.json"
33
25
  },
34
- "files": [
35
- "assets",
36
- "cli",
37
- "dist"
38
- ],
26
+ "scripts": {
27
+ "clean": "rimraf dist tsconfig.build.tsbuildinfo",
28
+ "tsc:publish": "npm run clean && vona :bin:buildModule --sourcemap && tsc -p tsconfig.build.json",
29
+ "prepublishOnly": "npm run tsc:publish",
30
+ "prepack": "clean-package",
31
+ "postpack": "clean-package restore && npm run clean"
32
+ },
39
33
  "devDependencies": {
40
34
  "clean-package": "^2.2.0",
41
35
  "rimraf": "^6.0.1"
42
36
  },
43
- "scripts": {
44
- "clean": "rimraf dist tsconfig.build.tsbuildinfo",
45
- "tsc:publish": "npm run clean && vona :bin:buildModule && tsc -p tsconfig.build.json"
46
- }
47
- }
37
+ "title": "a-startup",
38
+ "vonaModule": {
39
+ "dependencies": {},
40
+ "onions": {
41
+ "startup": {
42
+ "optionsGlobalInterfaceName": "IDecoratorStartupOptions",
43
+ "optionsGlobalInterfaceFrom": "vona-module-a-startup",
44
+ "boilerplate": "boilerplate"
45
+ }
46
+ },
47
+ "capabilities": {
48
+ "monkey": true
49
+ }
50
+ },
51
+ "gitHead": "991189da4443b789fcf77872990b901ccf43bccb"
52
+ }
@@ -0,0 +1,170 @@
1
+ // eslint-disable
2
+ /** service: begin */
3
+ export * from '../service/startup.ts';
4
+
5
+ import 'vona-module-a-bean';
6
+ declare module 'vona-module-a-bean' {
7
+
8
+ export interface IServiceRecord {
9
+ 'a-startup:startup': never;
10
+ }
11
+
12
+
13
+ }
14
+ declare module 'vona-module-a-startup' {
15
+
16
+ export interface ServiceStartup {
17
+ /** @internal */
18
+ get scope(): ScopeModuleAStartup;
19
+ }
20
+
21
+ export interface ServiceStartup {
22
+ get $beanFullName(): 'a-startup.service.startup';
23
+ get $onionName(): 'a-startup:startup';
24
+
25
+ }
26
+ }
27
+ /** service: end */
28
+ /** service: begin */
29
+ import type { ServiceStartup } from '../service/startup.ts';
30
+ export interface IModuleService {
31
+ 'startup': ServiceStartup;
32
+ }
33
+ /** service: end */
34
+ /** service: begin */
35
+
36
+ import 'vona';
37
+ declare module 'vona' {
38
+ export interface IBeanRecordGeneral {
39
+ 'a-startup.service.startup': ServiceStartup;
40
+ }
41
+ }
42
+ /** service: end */
43
+ /** cacheRedis: begin */
44
+ export * from '../bean/cacheRedis.startupDebounce.ts';
45
+
46
+ import { type IDecoratorCacheRedisOptions } from 'vona-module-a-cache';
47
+ declare module 'vona-module-a-cache' {
48
+
49
+ export interface ICacheRedisRecord {
50
+ 'a-startup:startupDebounce': IDecoratorCacheRedisOptions;
51
+ }
52
+
53
+
54
+ }
55
+ declare module 'vona-module-a-startup' {
56
+
57
+ export interface CacheRedisStartupDebounce {
58
+ /** @internal */
59
+ get scope(): ScopeModuleAStartup;
60
+ }
61
+
62
+ export interface CacheRedisStartupDebounce {
63
+ get $beanFullName(): 'a-startup.cacheRedis.startupDebounce';
64
+ get $onionName(): 'a-startup:startupDebounce';
65
+ get $onionOptions(): IDecoratorCacheRedisOptions;
66
+ }
67
+ }
68
+ /** cacheRedis: end */
69
+ /** cacheRedis: begin */
70
+ import type { CacheRedisStartupDebounce } from '../bean/cacheRedis.startupDebounce.ts';
71
+ export interface IModuleCacheRedis {
72
+ 'startupDebounce': CacheRedisStartupDebounce;
73
+ }
74
+ /** cacheRedis: end */
75
+ /** meta: begin */
76
+ export * from '../bean/meta.redlock.ts';
77
+
78
+ import 'vona-module-a-meta';
79
+ declare module 'vona-module-a-meta' {
80
+
81
+ export interface IMetaRecord {
82
+ 'a-startup:redlock': never;
83
+ }
84
+
85
+
86
+ }
87
+ declare module 'vona-module-a-startup' {
88
+
89
+ export interface MetaRedlock {
90
+ /** @internal */
91
+ get scope(): ScopeModuleAStartup;
92
+ }
93
+
94
+ export interface MetaRedlock {
95
+ get $beanFullName(): 'a-startup.meta.redlock';
96
+ get $onionName(): 'a-startup:redlock';
97
+
98
+ }
99
+ }
100
+ /** meta: end */
101
+ /** meta redlock: begin */
102
+ import type { MetaRedlock } from '../bean/meta.redlock.ts';
103
+ /** meta redlock: end */
104
+ /** hmr: begin */
105
+ export * from '../bean/hmr.startup.ts';
106
+
107
+ import 'vona';
108
+ declare module 'vona' {
109
+
110
+ export interface IHmrRecord {
111
+ 'a-startup:startup': never;
112
+ }
113
+
114
+
115
+ }
116
+ declare module 'vona-module-a-startup' {
117
+
118
+ export interface HmrStartup {
119
+ /** @internal */
120
+ get scope(): ScopeModuleAStartup;
121
+ }
122
+
123
+ export interface HmrStartup {
124
+ get $beanFullName(): 'a-startup.hmr.startup';
125
+ get $onionName(): 'a-startup:startup';
126
+
127
+ }
128
+ }
129
+ /** hmr: end */
130
+ /** config: begin */
131
+ export * from '../config/config.ts';
132
+ import type { config } from '../config/config.ts';
133
+ /** config: end */
134
+ /** monkey: begin */
135
+ export * from '../monkey.ts';
136
+ /** monkey: end */
137
+ /** scope: begin */
138
+ import { BeanScopeBase, type BeanScopeUtil, type TypeModuleConfig } from 'vona';
139
+ import { Scope } from 'vona-module-a-bean';
140
+
141
+ @Scope()
142
+ export class ScopeModuleAStartup extends BeanScopeBase {}
143
+
144
+ export interface ScopeModuleAStartup {
145
+ util: BeanScopeUtil;
146
+ config: TypeModuleConfig<typeof config>;
147
+ service: IModuleService;
148
+ cacheRedis: IModuleCacheRedis;
149
+ redlock: MetaRedlock;
150
+ }
151
+
152
+ import 'vona';
153
+ declare module 'vona' {
154
+ export interface IBeanScopeRecord {
155
+ 'a-startup': ScopeModuleAStartup;
156
+ }
157
+
158
+ export interface IBeanScopeContainer {
159
+ startup: ScopeModuleAStartup;
160
+ }
161
+
162
+ export interface IBeanScopeConfig {
163
+ 'a-startup': ReturnType<typeof config>;
164
+ }
165
+
166
+
167
+
168
+
169
+ }
170
+ /** scope: end */
@@ -0,0 +1,2 @@
1
+ export const __ThisModule__ = 'a-startup';
2
+ export { ScopeModuleAStartup as ScopeModule } from './index.ts';
@@ -0,0 +1,11 @@
1
+ import { BeanCacheRedisBase, CacheRedis } from 'vona-module-a-cache';
2
+
3
+ export type TCacheRedisStartupDebounceKey = `startupDebounce:${string}`;
4
+ export type TCacheRedisStartupDebounceData = boolean;
5
+
6
+ @CacheRedis({
7
+ disableInstance: true,
8
+ disableTransactionCompensate: true,
9
+ client: 'worker',
10
+ })
11
+ export class CacheRedisStartupDebounce extends BeanCacheRedisBase<TCacheRedisStartupDebounceKey, TCacheRedisStartupDebounceData> {}
@@ -0,0 +1,12 @@
1
+ import type { IDecoratorBeanOptionsBase } from 'vona';
2
+ import type { IHmrReload } from 'vona-module-a-hmr';
3
+
4
+ import { BeanBase } from 'vona';
5
+ import { Hmr } from 'vona-module-a-hmrbase';
6
+
7
+ @Hmr()
8
+ export class HmrStartup extends BeanBase implements IHmrReload {
9
+ async reload(_beanOptions: IDecoratorBeanOptionsBase) {
10
+ this.app.bean.worker.reload();
11
+ }
12
+ }
@@ -0,0 +1,8 @@
1
+ import { Meta } from 'vona-module-a-meta';
2
+ import { BeanRedlockBase } from 'vona-module-a-redlock';
3
+
4
+ export type TypeRedlockLockResource = never;
5
+ export type TypeRedlockLockIsolateResource = `startup.${string}`;
6
+
7
+ @Meta()
8
+ export class MetaRedlock extends BeanRedlockBase<TypeRedlockLockResource, TypeRedlockLockIsolateResource> {}
@@ -0,0 +1,9 @@
1
+ import type { VonaApplication } from 'vona';
2
+
3
+ export function config(_app: VonaApplication) {
4
+ return {
5
+ startup: {
6
+ debounce: 10 * 1000,
7
+ },
8
+ };
9
+ }
package/src/index.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './.metadata/index.ts';
2
+ export * from './lib/index.ts';
3
+ export * from './types/index.ts';
@@ -0,0 +1 @@
1
+ export * from './startup.ts';
@@ -0,0 +1,7 @@
1
+ import { createBeanDecorator } from 'vona';
2
+
3
+ import type { IDecoratorStartupOptions } from '../types/startup.ts';
4
+
5
+ export function Startup(options?: IDecoratorStartupOptions): ClassDecorator {
6
+ return createBeanDecorator('startup', options);
7
+ }
package/src/monkey.ts ADDED
@@ -0,0 +1,15 @@
1
+ import type { IMonkeyAppReady, IMonkeyAppStart } from 'vona';
2
+
3
+ import { BeanSimple } from 'vona';
4
+
5
+ import { __ThisModule__ } from './.metadata/this.ts';
6
+
7
+ export class Monkey extends BeanSimple implements IMonkeyAppStart, IMonkeyAppReady {
8
+ async appStart() {
9
+ await this.app.scope(__ThisModule__).service.startup.appStart();
10
+ }
11
+
12
+ async appReady() {
13
+ await this.app.scope(__ThisModule__).service.startup.appReady();
14
+ }
15
+ }
@@ -0,0 +1,160 @@
1
+ import type { IInstanceRecord } from 'vona';
2
+ import type { IOnionSlice } from 'vona-module-a-onion';
3
+
4
+ import { isNil } from '@cabloy/utils';
5
+ import fse from 'fs-extra';
6
+ import path from 'node:path';
7
+ import { BeanBase, cast } from 'vona';
8
+ import { Service } from 'vona-module-a-bean';
9
+
10
+ import type { IDecoratorStartupOptions, IInstanceStartupOptions, IStartupExecute, IStartupRecord } from '../types/startup.ts';
11
+
12
+ @Service()
13
+ export class ServiceStartup extends BeanBase {
14
+ async appStart() {
15
+ // clear keys
16
+ await this._clearResources();
17
+
18
+ // run startups: not after
19
+ for (const startup of this._startups) {
20
+ const startupOptions = startup.beanOptions.options;
21
+ if (!startupOptions?.instance && startupOptions?.after !== true) {
22
+ await this.runStartup(startup.name, null);
23
+ }
24
+ }
25
+ }
26
+
27
+ async appReady() {
28
+ // run startups: after
29
+ for (const startup of this._startups) {
30
+ const startupOptions = startup.beanOptions.options;
31
+ if (!startupOptions?.instance && startupOptions?.after === true) {
32
+ await this.runStartup(startup.name, null);
33
+ }
34
+ }
35
+
36
+ // version init : force: should be false
37
+ if (this.app.meta.isTest || this.app.meta.isDev) {
38
+ await this._appReadyInstanceStartup('', true);
39
+ } else {
40
+ // only start static instances (defined in config)
41
+ for (const key in this.app.config.instance.instances) {
42
+ const instanceName = key as keyof IInstanceRecord;
43
+ const configInstanceBase = this.app.config.instance.instances[instanceName];
44
+ if (configInstanceBase === false) continue;
45
+ // need not await for prod
46
+ const wait = this.app.config.server.listen.disable;
47
+ await this._appReadyInstanceStartup(instanceName, wait);
48
+ }
49
+ }
50
+
51
+ // version test
52
+ if (this.app.meta.isTest) {
53
+ const instanceName = '';
54
+ await this.bean.executor.newCtx(
55
+ async () => {
56
+ await this.$scope.version.service.version.__instanceTest(instanceName);
57
+ },
58
+ {
59
+ dbInfo: { level: 1 },
60
+ instanceName,
61
+ },
62
+ );
63
+ }
64
+ }
65
+
66
+ private async _appReadyInstanceStartup(instanceName: keyof IInstanceRecord, wait: boolean) {
67
+ const res = this.$scope.instance.service.instance.instanceStartupIsolate(instanceName, { force: false });
68
+ if (wait) {
69
+ await res;
70
+ }
71
+ }
72
+
73
+ async runStartup(startupName: string, instanceName?: keyof IInstanceRecord | null, options?: IInstanceStartupOptions) {
74
+ const startup = this.bean.onion.startup.onionsNormal[startupName];
75
+ const startupOptions = startup.beanOptions.options as IDecoratorStartupOptions;
76
+ // normal
77
+ if (!startupOptions.debounce) {
78
+ return await this._runStartupInner(startup, instanceName, options);
79
+ }
80
+ // debounce: lock
81
+ return await this.scope.redlock.lockIsolate(
82
+ `startup.${startupName}`,
83
+ async () => {
84
+ return await this._runStartupLock(startup, instanceName, options);
85
+ },
86
+ {
87
+ instanceName,
88
+ },
89
+ );
90
+ }
91
+
92
+ async _runStartupLock<T extends keyof IStartupRecord>(
93
+ startup: IOnionSlice<IStartupRecord, T>,
94
+ instanceName?: keyof IInstanceRecord | null,
95
+ options?: IInstanceStartupOptions,
96
+ ) {
97
+ // ignore debounce for test
98
+ if (!options?.force && !this.app.meta.isTest) {
99
+ const startupOptions = startup.beanOptions.options as IDecoratorStartupOptions;
100
+ const cacheKey = `startupDebounce:${startup.name}${!isNil(instanceName) ? `:${this.ctx.instance.id}` : ''}` as const;
101
+ const debounce = typeof startupOptions.debounce === 'number' ? startupOptions.debounce : this.scope.config.startup.debounce;
102
+ const flag = await this.scope.cacheRedis.startupDebounce.getset(true, cacheKey, { ttl: debounce });
103
+ if (flag) return;
104
+ }
105
+ // perform
106
+ await this._runStartupInner(startup, instanceName, options);
107
+ }
108
+
109
+ async _runStartupInner<T extends keyof IStartupRecord>(
110
+ startup: IOnionSlice<IStartupRecord, T>,
111
+ instanceName?: keyof IInstanceRecord | null,
112
+ options?: IInstanceStartupOptions,
113
+ ) {
114
+ this.$logger.silly(`startup${startup.beanOptions?.options?.instance ? ' instance' : ''}: ${startup.name}, pid: ${process.pid}`);
115
+ const startupOptions = startup.beanOptions.options as IDecoratorStartupOptions;
116
+ // execute
117
+ return await this.bean.executor.newCtx(
118
+ async () => {
119
+ const bean = cast<IStartupExecute>(this.bean._getBean(startup.beanOptions.beanFullName as any));
120
+ await bean.execute(options);
121
+ },
122
+ {
123
+ dbInfo: { level: 1 },
124
+ instanceName,
125
+ transaction: startupOptions.transaction,
126
+ },
127
+ );
128
+ }
129
+
130
+ async runStartupInstance(instanceName: keyof IInstanceRecord, options?: IInstanceStartupOptions) {
131
+ // run startups: not after
132
+ for (const startup of this._startups) {
133
+ const startupOptions = startup.beanOptions.options;
134
+ if (startupOptions?.instance && startupOptions?.after !== true) {
135
+ await this.runStartup(startup.name, instanceName, options);
136
+ }
137
+ }
138
+ // set flag
139
+ this.app.meta.appReadyInstances[instanceName] = true;
140
+ // run startups: after
141
+ for (const startup of this._startups) {
142
+ const startupOptions = startup.beanOptions.options;
143
+ if (startupOptions?.instance && startupOptions?.after === true) {
144
+ await this.runStartup(startup.name, instanceName, options);
145
+ }
146
+ }
147
+ }
148
+
149
+ private get _startups() {
150
+ return this.bean.onion.startup.getOnionsEnabledCached();
151
+ }
152
+
153
+ private async _clearResources() {
154
+ if (!this.app.meta.isTest) return;
155
+ // redis
156
+ await this.$scope.redis.service.redis.clearAllData();
157
+ // .app/public
158
+ await fse.remove(path.join(this.app.config.server.publicDir, '1'));
159
+ }
160
+ }
@@ -0,0 +1 @@
1
+ export * from './startup.ts';
@@ -0,0 +1,37 @@
1
+ import type { OmitNever } from 'vona';
2
+ import type { ConfigInstanceBase } from 'vona-module-a-instance';
3
+ import type { IOnionOptionsDeps, ServiceOnion, TypeOnionOptionsEnableSimple } from 'vona-module-a-onion';
4
+
5
+ export interface IStartupRecord {}
6
+
7
+ export interface IStartupExecute {
8
+ execute: (options?: IInstanceStartupOptions) => Promise<void>;
9
+ }
10
+
11
+ export interface IDecoratorStartupOptions extends TypeOnionOptionsEnableSimple, IOnionOptionsDeps<keyof IStartupRecord> {
12
+ instance?: boolean;
13
+ debounce?: boolean | number;
14
+ transaction?: boolean;
15
+ after?: boolean;
16
+ }
17
+
18
+ export interface IInstanceStartupOptions {
19
+ force?: boolean;
20
+ configInstanceBase?: ConfigInstanceBase;
21
+ }
22
+
23
+ declare module 'vona-module-a-onion' {
24
+ export interface BeanOnion {
25
+ startup: ServiceOnion<IStartupRecord>;
26
+ }
27
+ }
28
+
29
+ declare module 'vona' {
30
+ export interface ConfigOnions {
31
+ startup: OmitNever<IStartupRecord>;
32
+ }
33
+
34
+ export interface IBeanSceneRecord {
35
+ startup: never;
36
+ }
37
+ }