vona-module-a-startup 5.0.33 → 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 +26 -27
  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,29 +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
- disableTransactionCompensate: true
149
- }), _dec2$3 = BeanInfo({
146
+ disableTransactionCompensate: true,
147
+ client: 'worker'
148
+ }), BeanInfo({
150
149
  module: "a-startup"
151
- }), _dec$3(_class$3 = _dec2$3(_class$3 = class CacheRedisStartupDebounce extends BeanCacheRedisBase {}) || _class$3) || _class$3);
150
+ })], CacheRedisStartupDebounce);
152
151
 
153
- var _dec$2, _dec2$2, _class$2;
154
- let MetaRedlock = (_dec$2 = Meta(), _dec2$2 = BeanInfo({
152
+ let MetaRedlock = class MetaRedlock extends BeanRedlockBase {};
153
+ MetaRedlock = __decorate([Meta(), BeanInfo({
155
154
  module: "a-startup"
156
- }), _dec$2(_class$2 = _dec2$2(_class$2 = class MetaRedlock extends BeanRedlockBase {}) || _class$2) || _class$2);
155
+ })], MetaRedlock);
157
156
 
158
- var _dec$1, _dec2$1, _class$1;
159
- let HmrStartup = (_dec$1 = Hmr(), _dec2$1 = BeanInfo({
160
- module: "a-startup"
161
- }), _dec$1(_class$1 = _dec2$1(_class$1 = class HmrStartup extends BeanBase {
157
+ let HmrStartup = class HmrStartup extends BeanBase {
162
158
  async reload(_beanOptions) {
163
159
  this.app.bean.worker.reload();
164
160
  }
165
- }) || _class$1) || _class$1);
161
+ };
162
+ HmrStartup = __decorate([Hmr(), BeanInfo({
163
+ module: "a-startup"
164
+ })], HmrStartup);
166
165
 
167
166
  function config(_app) {
168
167
  return {
@@ -183,11 +182,10 @@ class Monkey extends BeanSimple {
183
182
  }
184
183
  }
185
184
 
186
- var _dec, _dec2, _class;
187
- let ScopeModuleAStartup = (_dec = Scope(), _dec2 = BeanInfo({
185
+ let ScopeModuleAStartup = class ScopeModuleAStartup extends BeanScopeBase {};
186
+ ScopeModuleAStartup = __decorate([Scope(), BeanInfo({
188
187
  module: "a-startup"
189
- }), _dec(_class = _dec2(_class = class ScopeModuleAStartup extends BeanScopeBase {}) || _class) || _class);
190
-
188
+ })], ScopeModuleAStartup);
191
189
  /** scope: end */
192
190
 
193
191
  function Startup(options) {
@@ -195,3 +193,4 @@ function Startup(options) {
195
193
  }
196
194
 
197
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.33",
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
+ }