vona-core 5.0.124 → 5.0.126

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,5 +1,5 @@
1
1
  import '@cabloy/json5';
2
- import { combineApiPathControllerAndActionRaw, combineApiPathControllerAndAction, combineApiPath, combineResourceName, sleep, isUndefined, isClass, isNilOrEmptyString, evaluateExpressions, catchErrorSync, isEmptyObject, catchError, hashkey } from '@cabloy/utils';
2
+ import { combineApiPathControllerAndActionRaw, combineApiPathControllerAndAction, combineApiPath, combineResourceName, forEach, forEachSync, sleep, isUndefined, isClass, isNilOrEmptyString, evaluateExpressions, catchErrorSync, isEmptyObject, catchError, hashkey } from '@cabloy/utils';
3
3
  import { toLowerCaseFirstChar, splitWords } from '@cabloy/word-utils';
4
4
  import path from 'node:path';
5
5
  import crypto from 'node:crypto';
@@ -168,15 +168,14 @@ class AppUtil extends BeanSimple {
168
168
  }
169
169
  return error;
170
170
  }
171
- async monkeyModule(ebAppMonkey, ebModulesMonkey, monkeyName, moduleTarget, ...monkeyData) {
171
+ async monkeyModule(ebAppMonkey, ebModulesMonkey, order, monkeyName, moduleTarget, ...monkeyData) {
172
172
  // self: main
173
173
  if (moduleTarget && moduleTarget.mainInstance && moduleTarget.mainInstance[monkeyName]) {
174
174
  // @ts-ignore ignore
175
175
  await moduleTarget.mainInstance[monkeyName](...monkeyData);
176
176
  }
177
177
  // module monkey
178
- for (const key in ebModulesMonkey) {
179
- const moduleMonkey = ebModulesMonkey[key];
178
+ await forEach(ebModulesMonkey, order, async moduleMonkey => {
180
179
  if (moduleMonkey.monkeyInstance && moduleMonkey.monkeyInstance[monkeyName]) {
181
180
  if (moduleTarget === undefined) {
182
181
  // @ts-ignore ignore
@@ -186,7 +185,7 @@ class AppUtil extends BeanSimple {
186
185
  await moduleMonkey.monkeyInstance[monkeyName](moduleTarget, ...monkeyData);
187
186
  }
188
187
  }
189
- }
188
+ });
190
189
  // app monkey
191
190
  if (ebAppMonkey && ebAppMonkey[monkeyName]) {
192
191
  if (moduleTarget === undefined) {
@@ -196,15 +195,14 @@ class AppUtil extends BeanSimple {
196
195
  }
197
196
  }
198
197
  }
199
- monkeyModuleSync(ebAppMonkey, ebModulesMonkey, monkeyName, moduleTarget, ...monkeyData) {
198
+ monkeyModuleSync(ebAppMonkey, ebModulesMonkey, order, monkeyName, moduleTarget, ...monkeyData) {
200
199
  // self: main
201
200
  if (moduleTarget && moduleTarget.mainInstance && moduleTarget.mainInstance[monkeyName]) {
202
201
  // @ts-ignore ignore
203
202
  moduleTarget.mainInstance[monkeyName](...monkeyData);
204
203
  }
205
204
  // module monkey
206
- for (const key in ebModulesMonkey) {
207
- const moduleMonkey = ebModulesMonkey[key];
205
+ forEachSync(ebModulesMonkey, order, moduleMonkey => {
208
206
  if (moduleMonkey.monkeyInstance && moduleMonkey.monkeyInstance[monkeyName]) {
209
207
  if (moduleTarget === undefined) {
210
208
  // @ts-ignore ignore
@@ -214,7 +212,7 @@ class AppUtil extends BeanSimple {
214
212
  moduleMonkey.monkeyInstance[monkeyName](moduleTarget, ...monkeyData);
215
213
  }
216
214
  }
217
- }
215
+ });
218
216
  // app monkey
219
217
  if (ebAppMonkey && ebAppMonkey[monkeyName]) {
220
218
  if (moduleTarget === undefined) {
@@ -740,7 +738,7 @@ class BeanBase extends BeanBaseSimple {
740
738
  return this[SymbolLoggerChildren][clientName][childName];
741
739
  }
742
740
  $mutate(args) {
743
- this.app.meta.hmr?.mutateBeanInstance(this.$beanFullName, this[SymbolBeanInstanceKey], args);
741
+ this.app.meta.hmr.mutateBeanInstance(this.$beanFullName, this[SymbolBeanInstanceKey], args);
744
742
  }
745
743
  get $scope() {
746
744
  return this.app.meta.scopeContainer;
@@ -1055,7 +1053,7 @@ class BeanContainer {
1055
1053
  const key = __getSelectorKey(fullName, withSelector, args[0]);
1056
1054
  __setPropertyValue(beanInstance, SymbolBeanInstanceKey, key);
1057
1055
  this[SymbolBeanContainerInstances][key] = beanInstance;
1058
- this.containerType === 'app' && this.app.meta.hmr?.addBeanInstance(fullName, key, args, withSelector);
1056
+ this.containerType === 'app' && this.app.meta.hmr.addBeanInstance(fullName, key, args, withSelector);
1059
1057
  }
1060
1058
  }
1061
1059
  // init
@@ -1114,7 +1112,7 @@ class BeanContainer {
1114
1112
  if (!beanInstance[SymbolBeanInstancePropsLazy]) beanInstance[SymbolBeanInstancePropsLazy] = {};
1115
1113
  if (!beanInstance[SymbolBeanInstancePropsLazy][prop]) {
1116
1114
  beanInstance[SymbolBeanInstancePropsLazy][prop] = self._injectBeanInstanceProp(beanInstance, targetBeanFullName, useOptions);
1117
- self.containerType === 'app' && self.app.meta.hmr?.addBeanInstanceProp(beanInstance, prop, targetBeanFullName);
1115
+ self.containerType === 'app' && self.app.meta.hmr.addBeanInstanceProp(beanInstance, prop, targetBeanFullName);
1118
1116
  }
1119
1117
  return beanInstance[SymbolBeanInstancePropsLazy][prop];
1120
1118
  }
@@ -2305,9 +2303,7 @@ class AppMeta extends BeanSimple {
2305
2303
  this.locale = this.bean._newBean(AppLocale);
2306
2304
 
2307
2305
  // hmr
2308
- if (process.env.META_MODE === 'dev') {
2309
- this.hmr = this.bean._newBean(AppHmr);
2310
- }
2306
+ this.hmr = this.bean._newBean(AppHmr);
2311
2307
 
2312
2308
  // text
2313
2309
  this.text = this.locale.createLocaleText();
@@ -2365,13 +2361,13 @@ class AppMeta extends BeanSimple {
2365
2361
  // appClose
2366
2362
  this.appClose = true;
2367
2363
  // hook: appClose
2368
- await this.app.util.monkeyModule(this.app.meta.appMonkey, this.app.meta.modulesMonkey, 'appClose');
2364
+ await this.app.util.monkeyModule(this.app.meta.appMonkey, this.app.meta.modulesMonkey, false, 'appClose');
2369
2365
  // ctx counter
2370
2366
  await this.app.meta.ctxCounter.awaitUntilZero();
2371
2367
  // appClosed
2372
2368
  this.appClosed = true;
2373
2369
  // hook: appClosed
2374
- await this.app.util.monkeyModule(this.app.meta.appMonkey, this.app.meta.modulesMonkey, 'appClosed');
2370
+ await this.app.util.monkeyModule(this.app.meta.appMonkey, this.app.meta.modulesMonkey, false, 'appClosed');
2375
2371
  // container dispose
2376
2372
  await this.app.bean.dispose();
2377
2373
  // logger dispose
@@ -2697,7 +2693,7 @@ async function loadConfig (app, modules) {
2697
2693
  if (module.resource.config) {
2698
2694
  const configModule = await module.resource.config(app, app.options.env);
2699
2695
  // configNew is not used by now
2700
- await app.util.monkeyModule(app.meta.appMonkey, app.meta.modulesMonkey, 'configLoaded', module, configModule);
2696
+ await app.util.monkeyModule(app.meta.appMonkey, app.meta.modulesMonkey, true, 'configLoaded', module, configModule);
2701
2697
  app.config.modules[module.info.relativeName] = deepExtend({}, configModule, app.config.modules[module.info.relativeName]);
2702
2698
  }
2703
2699
  }
@@ -2808,7 +2804,7 @@ class ModuleTools extends BeanSimple {
2808
2804
  const modulesArray = modulesMeta.modulesMeta.moduleNames.map(relativeName => modules[relativeName]);
2809
2805
  app.meta.modules = modules;
2810
2806
  app.meta.modulesArray = modulesArray;
2811
- app.meta.modulesMonkey = {};
2807
+ app.meta.modulesMonkey = [];
2812
2808
  return modules;
2813
2809
  }
2814
2810
  async load() {
@@ -2820,14 +2816,14 @@ class ModuleTools extends BeanSimple {
2820
2816
  }
2821
2817
  if (module.resource.Monkey) {
2822
2818
  module.monkeyInstance = app.bean._newBean(module.resource.Monkey, module);
2823
- app.meta.modulesMonkey[module.info.relativeName] = module;
2819
+ app.meta.modulesMonkey.push(module);
2824
2820
  }
2825
2821
  }
2826
2822
  }
2827
- async monkey(monkeyName) {
2823
+ async monkey(order, monkeyName) {
2828
2824
  const app = this.app;
2829
2825
  for (const module of app.meta.modulesArray) {
2830
- await app.util.monkeyModule(app.meta.appMonkey, app.meta.modulesMonkey, monkeyName, module);
2826
+ await app.util.monkeyModule(app.meta.appMonkey, app.meta.modulesMonkey, order, monkeyName, module);
2831
2827
  }
2832
2828
  }
2833
2829
  }
@@ -2842,14 +2838,14 @@ class ModuleLoader extends BeanSimple {
2842
2838
  // load modules
2843
2839
  await moduleTools.load();
2844
2840
  // monkey modules
2845
- await moduleTools.monkey('moduleLoading');
2841
+ await moduleTools.monkey(true, 'moduleLoading');
2846
2842
  await loadConfig(app, modules);
2847
2843
  await loadLocales(app, modules);
2848
2844
  loadErrors(app, modules);
2849
2845
  loadConstants(app, modules);
2850
2846
 
2851
2847
  // monkey modules
2852
- await moduleTools.monkey('moduleLoaded');
2848
+ await moduleTools.monkey(true, 'moduleLoaded');
2853
2849
  }
2854
2850
  }
2855
2851
 
@@ -2884,14 +2880,14 @@ class Start {
2884
2880
  async _start_appStart() {
2885
2881
  const app = this.app;
2886
2882
  // hook: appStart
2887
- await app.util.monkeyModule(app.meta.appMonkey, app.meta.modulesMonkey, 'appStart');
2883
+ await app.util.monkeyModule(app.meta.appMonkey, app.meta.modulesMonkey, true, 'appStart');
2888
2884
  }
2889
2885
  async _start_appReady() {
2890
2886
  const app = this.app;
2891
2887
  app.meta.appReady = true;
2892
2888
  app.meta.appReadyInstances = {};
2893
2889
  // hook: appReady
2894
- await app.util.monkeyModule(app.meta.appMonkey, app.meta.modulesMonkey, 'appReady');
2890
+ await app.util.monkeyModule(app.meta.appMonkey, app.meta.modulesMonkey, true, 'appReady');
2895
2891
  }
2896
2892
  async _start_appStarted() {
2897
2893
  const app = this.app;
@@ -2899,7 +2895,7 @@ class Start {
2899
2895
  // event: appStarted
2900
2896
  app.emit(EnumAppEvent.AppStarted);
2901
2897
  // hook: appStarted
2902
- await app.util.monkeyModule(app.meta.appMonkey, app.meta.modulesMonkey, 'appStarted');
2898
+ await app.util.monkeyModule(app.meta.appMonkey, app.meta.modulesMonkey, true, 'appStarted');
2903
2899
  }
2904
2900
  async _start_appConfig() {
2905
2901
  const app = this.app;
@@ -19,7 +19,7 @@ export declare class AppMeta extends BeanSimple {
19
19
  error: ErrorClass;
20
20
  logger: AppLogger;
21
21
  locale: AppLocale;
22
- hmr?: AppHmr;
22
+ hmr: AppHmr;
23
23
  text: IModuleLocaleText;
24
24
  scopeContainer: BeanScopeContainer;
25
25
  appMonkey?: IAppMonkey;
@@ -27,7 +27,7 @@ export declare class AppMeta extends BeanSimple {
27
27
  metadata: AppMetadata;
28
28
  modules: Record<string, IModule>;
29
29
  modulesArray: IModule[];
30
- modulesMonkey: Record<string, IModule>;
30
+ modulesMonkey: IModule[];
31
31
  constants: Record<string, any>;
32
32
  locales: TypeModuleResourceLocales;
33
33
  localeModules: TypeModuleResourceLocaleModules;
@@ -3,5 +3,5 @@ import { BeanSimple } from '../bean/beanSimple.ts';
3
3
  export declare class ModuleTools extends BeanSimple {
4
4
  prepare(): Promise<Record<string, IModule>>;
5
5
  load(): Promise<void>;
6
- monkey(monkeyName: any): Promise<void>;
6
+ monkey(order: boolean, monkeyName: any): Promise<void>;
7
7
  }
@@ -37,8 +37,8 @@ export declare class AppUtil extends BeanSimple {
37
37
  get prodRootPath(): string;
38
38
  getAssetPathPhysical(moduleName: ModuleInfo.IModuleInfo | string, scene: keyof IModuleAssetSceneRecord, assetPath?: string): string;
39
39
  createError(data: any, returnObject?: boolean): any;
40
- monkeyModule(ebAppMonkey: any, ebModulesMonkey: any, monkeyName: TypeMonkeyName, moduleTarget?: IModule, ...monkeyData: any[]): Promise<void>;
41
- monkeyModuleSync(ebAppMonkey: any, ebModulesMonkey: any, monkeyName: TypeMonkeyName, moduleTarget?: IModule, ...monkeyData: any[]): void;
40
+ monkeyModule(ebAppMonkey: any, ebModulesMonkey: IModule[], order: boolean, monkeyName: TypeMonkeyName, moduleTarget?: IModule, ...monkeyData: any[]): Promise<void>;
41
+ monkeyModuleSync(ebAppMonkey: any, ebModulesMonkey: IModule[], order: boolean, monkeyName: TypeMonkeyName, moduleTarget?: IModule, ...monkeyData: any[]): void;
42
42
  detectErrorMessage(err: Error): string;
43
43
  detectStatus(err: Error): number;
44
44
  accepts(): "json" | "html";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "vona-core",
3
3
  "type": "module",
4
- "version": "5.0.124",
4
+ "version": "5.0.126",
5
5
  "description": "vona",
6
6
  "publishConfig": {
7
7
  "access": "public"
@@ -32,7 +32,7 @@
32
32
  "@cabloy/module-info": "^1.3.34",
33
33
  "@cabloy/module-info-pro": "^1.0.42",
34
34
  "@cabloy/type-fest": "^5.3.1",
35
- "@cabloy/utils": "^2.0.12",
35
+ "@cabloy/utils": "^2.0.13",
36
36
  "@cabloy/word-utils": "^2.0.2",
37
37
  "@cabloy/zod-errors-custom": "^2.0.6",
38
38
  "@cabloy/zod-openapi": "^1.0.8",