taon 19.0.39 → 19.0.46
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/README.md +160 -160
- package/bin/start.js +279 -279
- package/bin/taon +6 -6
- package/bin/taon-debug +5 -5
- package/bin/taon-debug-brk +5 -5
- package/browser/README.md +24 -24
- package/browser/fesm2022/taon.mjs +113 -31
- package/browser/fesm2022/taon.mjs.map +1 -1
- package/browser/lib/context-db-migrations.d.ts +1 -1
- package/browser/lib/create-context.d.ts +9 -0
- package/browser/lib/endpoint-context.d.ts +4 -0
- package/browser/package.json +1 -1
- package/cli.js.map +1 -1
- package/index.js.map +1 -1
- package/lib/base-classes/base-abstract-entity.js.map +1 -1
- package/lib/base-classes/base-angular-service.js.map +1 -1
- package/lib/base-classes/base-class.js.map +1 -1
- package/lib/base-classes/base-context.js.map +1 -1
- package/lib/base-classes/base-controller.js.map +1 -1
- package/lib/base-classes/base-crud-controller.js.map +1 -1
- package/lib/base-classes/base-custom-repository.js.map +1 -1
- package/lib/base-classes/base-entity.js.map +1 -1
- package/lib/base-classes/base-injector.js.map +1 -1
- package/lib/base-classes/base-migration.js.map +1 -1
- package/lib/base-classes/base-provider.js.map +1 -1
- package/lib/base-classes/base-repository.js.map +1 -1
- package/lib/base-classes/base-subscriber-for-entity.js.map +1 -1
- package/lib/base-classes/base.js.map +1 -1
- package/lib/build-info._auto-generated_.d.ts +1 -1
- package/lib/build-info._auto-generated_.js +1 -1
- package/lib/build-info._auto-generated_.js.map +1 -1
- package/lib/constants.js.map +1 -1
- package/lib/context-db-migrations.js.map +1 -1
- package/lib/create-context.d.ts +9 -0
- package/lib/create-context.js +10 -2
- package/lib/create-context.js.map +1 -1
- package/lib/decorators/classes/controller-decorator.js.map +1 -1
- package/lib/decorators/classes/entity-decorator.js.map +1 -1
- package/lib/decorators/classes/migration-decorator.js.map +1 -1
- package/lib/decorators/classes/provider-decorator.js.map +1 -1
- package/lib/decorators/classes/repository-decorator.js.map +1 -1
- package/lib/decorators/classes/subscriber-decorator.js.map +1 -1
- package/lib/decorators/http/http-decorators.js.map +1 -1
- package/lib/decorators/http/http-methods-decorators.js.map +1 -1
- package/lib/decorators/http/http-params-decorators.js.map +1 -1
- package/lib/dependency-injection/di-container.js.map +1 -1
- package/lib/endpoint-context.d.ts +4 -0
- package/lib/endpoint-context.js +205 -121
- package/lib/endpoint-context.js.map +1 -1
- package/lib/entity-process.js.map +1 -1
- package/lib/env/env.angular-node-app.d.ts +6 -0
- package/lib/env/env.angular-node-app.js +8 -2
- package/lib/env/env.angular-node-app.js.map +1 -1
- package/lib/env/env.docs-webapp.d.ts +6 -0
- package/lib/env/env.docs-webapp.js +8 -2
- package/lib/env/env.docs-webapp.js.map +1 -1
- package/lib/env/env.electron-app.d.ts +6 -0
- package/lib/env/env.electron-app.js +8 -2
- package/lib/env/env.electron-app.js.map +1 -1
- package/lib/env/env.mobile-app.d.ts +6 -0
- package/lib/env/env.mobile-app.js +8 -2
- package/lib/env/env.mobile-app.js.map +1 -1
- package/lib/env/env.npm-lib-and-cli-tool.d.ts +6 -0
- package/lib/env/env.npm-lib-and-cli-tool.js +8 -2
- package/lib/env/env.npm-lib-and-cli-tool.js.map +1 -1
- package/lib/env/env.vscode-plugin.d.ts +6 -0
- package/lib/env/env.vscode-plugin.js +8 -2
- package/lib/env/env.vscode-plugin.js.map +1 -1
- package/lib/env/index.js.map +1 -1
- package/lib/formly/formly-group-wrapper-component.js.map +1 -1
- package/lib/formly/formly-repeat-component.js.map +1 -1
- package/lib/formly/formly.models.js.map +1 -1
- package/lib/formly/fromly.js.map +1 -1
- package/lib/formly/type-from-entity.js.map +1 -1
- package/lib/get-response-value.js.map +1 -1
- package/lib/helpers/class-helpers.js.map +1 -1
- package/lib/helpers/taon-helpers.js.map +1 -1
- package/lib/index._auto-generated_.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/inject.js.map +1 -1
- package/lib/models.js.map +1 -1
- package/lib/orm.js.map +1 -1
- package/lib/realtime/realtime-client.js.map +1 -1
- package/lib/realtime/realtime-core.js.map +1 -1
- package/lib/realtime/realtime-server.js.map +1 -1
- package/lib/realtime/realtime-strategy/index.js.map +1 -1
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc.js.map +1 -1
- package/lib/realtime/realtime-strategy/realtime-strategy-mock.js.map +1 -1
- package/lib/realtime/realtime-strategy/realtime-strategy-socket-io.js.map +1 -1
- package/lib/realtime/realtime-strategy/realtime-strategy.js.map +1 -1
- package/lib/realtime/realtime-subs-manager.js.map +1 -1
- package/lib/realtime/realtime.models.js.map +1 -1
- package/lib/symbols.js.map +1 -1
- package/lib/ui/index.js +2 -2
- package/lib/ui/index.js.map +1 -1
- package/lib/ui/taon-admin-mode-configuration/index.js +2 -2
- package/lib/ui/taon-admin-mode-configuration/index.js.map +1 -1
- package/lib/validators.js.map +1 -1
- package/migrations/index.js.map +1 -1
- package/migrations/migrations_index._auto-generated_.js.map +1 -1
- package/old-app .js.map +1 -1
- package/package.json +2 -1
- package/playground.js.map +1 -1
- package/websql/README.md +24 -24
- package/websql/fesm2022/taon.mjs +135 -62
- package/websql/fesm2022/taon.mjs.map +1 -1
- package/websql/lib/create-context.d.ts +9 -0
- package/websql/lib/endpoint-context.d.ts +4 -0
- package/websql/package.json +1 -1
- package/browser/lib/env.d.ts +0 -3
- package/lib/env.d.ts +0 -2
- package/lib/env.js +0 -7
- package/lib/env.js.map +0 -1
- package/lib/storage.d.ts +0 -1
- package/lib/storage.js +0 -6
- package/lib/storage.js.map +0 -1
- package/websql/lib/env.d.ts +0 -3
package/websql/fesm2022/taon.mjs
CHANGED
|
@@ -14,7 +14,6 @@ import axios from 'axios';
|
|
|
14
14
|
import { JSON10 } from 'json10/websql';
|
|
15
15
|
import { Observable, Subject, from } from 'rxjs';
|
|
16
16
|
import { io } from 'socket.io-client';
|
|
17
|
-
import { Stor } from 'taon-storage/websql';
|
|
18
17
|
import { MySqlQuerySource } from 'taon-type-sql/websql';
|
|
19
18
|
|
|
20
19
|
//#region @websql
|
|
@@ -1374,8 +1373,6 @@ class DITaonContainer {
|
|
|
1374
1373
|
}
|
|
1375
1374
|
}
|
|
1376
1375
|
|
|
1377
|
-
const ENV$1 = Helpers.isBrowser ? window['ENV'] : global['ENV'];
|
|
1378
|
-
|
|
1379
1376
|
const getResponseValue = (response, options) => {
|
|
1380
1377
|
//#region @websqlFunc
|
|
1381
1378
|
const { req, res } = options || {};
|
|
@@ -2551,8 +2548,9 @@ class RealtimeCore {
|
|
|
2551
2548
|
}
|
|
2552
2549
|
}
|
|
2553
2550
|
|
|
2551
|
+
//#region import
|
|
2554
2552
|
//#endregion
|
|
2555
|
-
const ENV =
|
|
2553
|
+
const ENV = globalThis['ENV'];
|
|
2556
2554
|
// @Injectable({ providedIn: 'root' }) TODO make it angular service
|
|
2557
2555
|
class TaonAdminService {
|
|
2558
2556
|
static get Instance() {
|
|
@@ -2595,22 +2593,6 @@ class TaonAdminService {
|
|
|
2595
2593
|
}
|
|
2596
2594
|
logout() { }
|
|
2597
2595
|
}
|
|
2598
|
-
__decorate([
|
|
2599
|
-
(Stor.property.in.localstorage.for(TaonAdminService).withDefaultValue(false)),
|
|
2600
|
-
__metadata("design:type", Boolean)
|
|
2601
|
-
], TaonAdminService.prototype, "adminPanelIsOpen", void 0);
|
|
2602
|
-
__decorate([
|
|
2603
|
-
(Stor.property.in.localstorage.for(TaonAdminService).withDefaultValue(false)),
|
|
2604
|
-
__metadata("design:type", Boolean)
|
|
2605
|
-
], TaonAdminService.prototype, "draggablePopupMode", void 0);
|
|
2606
|
-
__decorate([
|
|
2607
|
-
(Stor.property.in.localstorage.for(TaonAdminService).withDefaultValue(false)),
|
|
2608
|
-
__metadata("design:type", Boolean)
|
|
2609
|
-
], TaonAdminService.prototype, "draggablePopupModeFullScreen", void 0);
|
|
2610
|
-
__decorate([
|
|
2611
|
-
(Stor.property.in.localstorage.for(TaonAdminService).withDefaultValue(false)),
|
|
2612
|
-
__metadata("design:type", Boolean)
|
|
2613
|
-
], TaonAdminService.prototype, "keepWebsqlDbDataAfterReload", void 0);
|
|
2614
2596
|
|
|
2615
2597
|
//#endregion
|
|
2616
2598
|
class EndpointContext {
|
|
@@ -2668,6 +2650,11 @@ class EndpointContext {
|
|
|
2668
2650
|
constructor(originalConfig, configFn) {
|
|
2669
2651
|
this.originalConfig = originalConfig;
|
|
2670
2652
|
this.configFn = configFn;
|
|
2653
|
+
//#region static
|
|
2654
|
+
/**
|
|
2655
|
+
* JUST FOR TESTING PURPOSES
|
|
2656
|
+
*/
|
|
2657
|
+
this.USE_MARIADB_MYSQL_IN_DOCKER = false;
|
|
2671
2658
|
//#endregion
|
|
2672
2659
|
// public static findForTraget(classFnOrObject: any): EndpointContext {
|
|
2673
2660
|
// const obj = ClassHelpers.getClassFnFromObject(classFnOrObject) || {};
|
|
@@ -2839,7 +2826,7 @@ class EndpointContext {
|
|
|
2839
2826
|
this.onlyMigrationRun = onlyMigrationRun;
|
|
2840
2827
|
// @ts-ignore
|
|
2841
2828
|
this.onlyMigrationRevertToTimestamp = onlyMigrationRevertToTimestamp;
|
|
2842
|
-
this.config = this.configFn(
|
|
2829
|
+
this.config = this.configFn({});
|
|
2843
2830
|
if (_.isObject(this.config.database)) {
|
|
2844
2831
|
this.config.database = Models.DatabaseConfig.from(this.config.database).databaseConfigTypeORM;
|
|
2845
2832
|
}
|
|
@@ -2903,10 +2890,34 @@ class EndpointContext {
|
|
|
2903
2890
|
//#endregion
|
|
2904
2891
|
//#region resolve database config
|
|
2905
2892
|
if (this.config.database === true) {
|
|
2893
|
+
this.logFramework &&
|
|
2894
|
+
console.log(`
|
|
2895
|
+
|
|
2896
|
+
ASSIGNING AUTO GENERATED DATABASE CONFIG
|
|
2897
|
+
|
|
2898
|
+
`);
|
|
2906
2899
|
this.databaseConfig = this.getAutoGeneratedConfig();
|
|
2907
2900
|
}
|
|
2908
2901
|
else if (_.isObject(this.config.database)) {
|
|
2909
|
-
this.
|
|
2902
|
+
this.logFramework &&
|
|
2903
|
+
console.log(`
|
|
2904
|
+
|
|
2905
|
+
OVERRIDE DATABASE CONFIG FROM CONFIGURATION
|
|
2906
|
+
|
|
2907
|
+
`);
|
|
2908
|
+
this.databaseConfig = this.getAutoGeneratedConfig();
|
|
2909
|
+
walk.Object(this.config.database, (value, lodashPath) => {
|
|
2910
|
+
if (_.isNil(value) || _.isFunction(value) || _.isObject(value)) {
|
|
2911
|
+
// skipping
|
|
2912
|
+
}
|
|
2913
|
+
else {
|
|
2914
|
+
this.logFramework &&
|
|
2915
|
+
console.info(`Overriding database config: ${lodashPath}=${value}`);
|
|
2916
|
+
_.set(this.databaseConfig, lodashPath, value);
|
|
2917
|
+
}
|
|
2918
|
+
}, {
|
|
2919
|
+
walkGetters: false,
|
|
2920
|
+
});
|
|
2910
2921
|
}
|
|
2911
2922
|
//#endregion
|
|
2912
2923
|
//#region resolve session
|
|
@@ -3057,23 +3068,66 @@ class EndpointContext {
|
|
|
3057
3068
|
//#endregion
|
|
3058
3069
|
//#region methods & getters / get auto generated config
|
|
3059
3070
|
getAutoGeneratedConfig() {
|
|
3071
|
+
this.logFramework &&
|
|
3072
|
+
console.log(`
|
|
3073
|
+
|
|
3074
|
+
|
|
3075
|
+
IS RUNNING IN DOCKER: ${UtilsOs.isRunningInDocker()}
|
|
3076
|
+
|
|
3077
|
+
`);
|
|
3060
3078
|
//#region @websqlFunc
|
|
3061
3079
|
let databaseConfig = Models.DatabaseConfig.from({});
|
|
3062
3080
|
if (UtilsOs.isRunningInDocker()) {
|
|
3063
|
-
|
|
3064
|
-
|
|
3065
|
-
|
|
3066
|
-
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3081
|
+
if (this.USE_MARIADB_MYSQL_IN_DOCKER) {
|
|
3082
|
+
// Helpers.info('Running in docker, using in mysql database');
|
|
3083
|
+
// // TODO auto resolve database config in docker
|
|
3084
|
+
// databaseConfig = Models.DatabaseConfig.from({
|
|
3085
|
+
// database: `db-${this.contextName}.sqlite`,
|
|
3086
|
+
// type: 'mysql',
|
|
3087
|
+
// recreateMode: 'PRESERVE_DATA+MIGRATIONS',
|
|
3088
|
+
// logging: this.logDb,
|
|
3089
|
+
// databasePort: 3306,
|
|
3090
|
+
// databaseHost: 'localhost',
|
|
3091
|
+
// databaseUsername: 'root',
|
|
3092
|
+
// databasePassword: 'admin',
|
|
3093
|
+
// });
|
|
3094
|
+
}
|
|
3095
|
+
else {
|
|
3096
|
+
// TOOD @LAST for now.. just use sqljs in docker
|
|
3097
|
+
this.logFramework &&
|
|
3098
|
+
console.log(`
|
|
3099
|
+
|
|
3100
|
+
USING GENERATED CONFIG FOR SQLJS IN DOCKER
|
|
3101
|
+
|
|
3102
|
+
`);
|
|
3103
|
+
/* */
|
|
3104
|
+
/* */
|
|
3105
|
+
/* */
|
|
3106
|
+
/* */
|
|
3107
|
+
/* */
|
|
3108
|
+
databaseConfig = databaseConfig = Models.DatabaseConfig.from({
|
|
3109
|
+
location: `db-${this.contextName}.sqlite`,
|
|
3110
|
+
type: 'sqljs',
|
|
3111
|
+
useLocalForage: false,
|
|
3112
|
+
recreateMode: 'PRESERVE_DATA+MIGRATIONS',
|
|
3113
|
+
logging: true,
|
|
3114
|
+
});
|
|
3115
|
+
/* */
|
|
3116
|
+
/* */
|
|
3117
|
+
/* */
|
|
3118
|
+
/* */
|
|
3119
|
+
/* */
|
|
3120
|
+
/* */
|
|
3121
|
+
/* */
|
|
3122
|
+
/* */
|
|
3123
|
+
/* */
|
|
3124
|
+
/* */
|
|
3125
|
+
/* */
|
|
3126
|
+
/* */
|
|
3127
|
+
}
|
|
3075
3128
|
}
|
|
3076
3129
|
else {
|
|
3130
|
+
//#region auto resolve db config
|
|
3077
3131
|
this.logFramework &&
|
|
3078
3132
|
Helpers.info(`[taon][database] Automatically resolving database config for mode ${this.mode}`);
|
|
3079
3133
|
switch (this.mode) {
|
|
@@ -3133,6 +3187,7 @@ class EndpointContext {
|
|
|
3133
3187
|
break;
|
|
3134
3188
|
//#endregion
|
|
3135
3189
|
}
|
|
3190
|
+
//#endregion
|
|
3136
3191
|
}
|
|
3137
3192
|
return databaseConfig.databaseConfigTypeORM;
|
|
3138
3193
|
//#endregion
|
|
@@ -3167,6 +3222,7 @@ class EndpointContext {
|
|
|
3167
3222
|
/* */
|
|
3168
3223
|
/* */
|
|
3169
3224
|
/* */
|
|
3225
|
+
/* */
|
|
3170
3226
|
return (void 0);
|
|
3171
3227
|
}
|
|
3172
3228
|
//#endregion
|
|
@@ -3603,6 +3659,18 @@ class EndpointContext {
|
|
|
3603
3659
|
return ClassHelpers.getOrginalClass(entityFn);
|
|
3604
3660
|
});
|
|
3605
3661
|
const subscribers = this.getClassFunByArr(Models.ClassType.SUBSCRIBER);
|
|
3662
|
+
let autoSave = false;
|
|
3663
|
+
if (!_.isNil(this.databaseConfig.autoSave)) {
|
|
3664
|
+
autoSave = this.databaseConfig.autoSave;
|
|
3665
|
+
}
|
|
3666
|
+
else {
|
|
3667
|
+
if (this.USE_MARIADB_MYSQL_IN_DOCKER) {
|
|
3668
|
+
autoSave = !UtilsOs.isRunningInDocker(); // in docker I am using mysql or posgress
|
|
3669
|
+
}
|
|
3670
|
+
else {
|
|
3671
|
+
autoSave = true; // on docker with sqljs I need to save db
|
|
3672
|
+
}
|
|
3673
|
+
}
|
|
3606
3674
|
const dataSourceDbConfig = _.isObject(this.databaseConfig)
|
|
3607
3675
|
? {
|
|
3608
3676
|
type: this.databaseConfig.type,
|
|
@@ -3618,9 +3686,7 @@ class EndpointContext {
|
|
|
3618
3686
|
synchronize: this.isRunOrRevertOnlyMigrationAppStart
|
|
3619
3687
|
? false
|
|
3620
3688
|
: this.databaseConfig.synchronize,
|
|
3621
|
-
autoSave
|
|
3622
|
-
? this.databaseConfig.autoSave
|
|
3623
|
-
: !UtilsOs.isRunningInDocker(), // in docker I am using mysql or posgress
|
|
3689
|
+
autoSave,
|
|
3624
3690
|
dropSchema: this.isRunOrRevertOnlyMigrationAppStart
|
|
3625
3691
|
? false
|
|
3626
3692
|
: this.databaseConfig.dropSchema,
|
|
@@ -3641,7 +3707,10 @@ class EndpointContext {
|
|
|
3641
3707
|
await this.connection.initialize();
|
|
3642
3708
|
}
|
|
3643
3709
|
catch (error) {
|
|
3710
|
+
console.error(`[taon][typeorm] Error while initializing connection for ${this.contextName}, ERROR STARTED `);
|
|
3711
|
+
console.error(error?.stack || '< No stack trace > ');
|
|
3644
3712
|
console.error(error?.message || error);
|
|
3713
|
+
console.error(`[taon][typeorm] Error while initializing connection for ${this.contextName}, ERROR ENDS `);
|
|
3645
3714
|
}
|
|
3646
3715
|
if (!this.connection?.isInitialized) {
|
|
3647
3716
|
console.log('WRONG CONFIG', dataSourceDbConfig);
|
|
@@ -4219,14 +4288,8 @@ class EndpointContext {
|
|
|
4219
4288
|
this.logHttp && console.log(`${type?.toUpperCase()} ${expressPath} `);
|
|
4220
4289
|
// console.log('INITING', methodConfig); // TODO inject in static
|
|
4221
4290
|
//#region resolve storage
|
|
4222
|
-
|
|
4223
|
-
|
|
4224
|
-
storage = window;
|
|
4225
|
-
}
|
|
4226
|
-
/* */
|
|
4227
|
-
/* */
|
|
4228
|
-
/* */
|
|
4229
|
-
/* */
|
|
4291
|
+
// TODO not a good idea
|
|
4292
|
+
const storage = globalThis;
|
|
4230
4293
|
//#endregion
|
|
4231
4294
|
const orgMethods = target.prototype[methodConfig.methodName];
|
|
4232
4295
|
//#region handle electron ipc request
|
|
@@ -4274,22 +4337,23 @@ class EndpointContext {
|
|
|
4274
4337
|
//#region resolve variables
|
|
4275
4338
|
const MIN_TIMEOUT = 500;
|
|
4276
4339
|
const MIN_TIMEOUT_STEP = 200;
|
|
4277
|
-
const
|
|
4278
|
-
|
|
4279
|
-
|
|
4280
|
-
|
|
4281
|
-
|
|
4282
|
-
|
|
4283
|
-
|
|
4284
|
-
|
|
4285
|
-
|
|
4286
|
-
|
|
4287
|
-
|
|
4288
|
-
|
|
4289
|
-
|
|
4290
|
-
|
|
4291
|
-
|
|
4292
|
-
|
|
4340
|
+
const globalThisVar = globalThis; // TODO not a good idea! probably should be in context
|
|
4341
|
+
const timeout = globalThisVar[Symbols.old.WEBSQL_REST_PROGRESS_TIMEOUT] || MIN_TIMEOUT;
|
|
4342
|
+
let updateFun = globalThisVar[Symbols.old.WEBSQL_REST_PROGRESS_FUN];
|
|
4343
|
+
if (!globalThisVar[Symbols.old.WEBSQL_REST_PROGRESS_FUN]) {
|
|
4344
|
+
globalThisVar[Symbols.old.WEBSQL_REST_PROGRESS_FUN] = new Subject();
|
|
4345
|
+
}
|
|
4346
|
+
updateFun = globalThisVar[Symbols.old.WEBSQL_REST_PROGRESS_FUN];
|
|
4347
|
+
let startFun = globalThisVar[Symbols.old.WEBSQL_REST_PROGRESS_FUN_START];
|
|
4348
|
+
if (!globalThisVar[Symbols.old.WEBSQL_REST_PROGRESS_FUN_START]) {
|
|
4349
|
+
globalThisVar[Symbols.old.WEBSQL_REST_PROGRESS_FUN_START] = new Subject();
|
|
4350
|
+
}
|
|
4351
|
+
startFun = globalThisVar[Symbols.old.WEBSQL_REST_PROGRESS_FUN_START];
|
|
4352
|
+
let doneFun = globalThisVar[Symbols.old.WEBSQL_REST_PROGRESS_FUN_DONE];
|
|
4353
|
+
if (!globalThisVar[Symbols.old.WEBSQL_REST_PROGRESS_FUN_DONE]) {
|
|
4354
|
+
globalThisVar[Symbols.old.WEBSQL_REST_PROGRESS_FUN_DONE] = new Subject();
|
|
4355
|
+
}
|
|
4356
|
+
doneFun = globalThisVar[Symbols.old.WEBSQL_REST_PROGRESS_FUN_DONE];
|
|
4293
4357
|
let periodsToUpdate = 0;
|
|
4294
4358
|
if (timeout >= MIN_TIMEOUT) {
|
|
4295
4359
|
periodsToUpdate = Math.floor(timeout / MIN_TIMEOUT_STEP);
|
|
@@ -4541,13 +4605,22 @@ instead
|
|
|
4541
4605
|
|
|
4542
4606
|
//#region imports
|
|
4543
4607
|
//#endregion
|
|
4608
|
+
/**
|
|
4609
|
+
* @returns function that returns context function.
|
|
4610
|
+
* Context function can be used to dynamically
|
|
4611
|
+
* create context with specific configuration.
|
|
4612
|
+
*/
|
|
4544
4613
|
const createContextTemplate = (configFn) => {
|
|
4545
4614
|
return () => {
|
|
4546
4615
|
return createContext(configFn);
|
|
4547
4616
|
};
|
|
4548
4617
|
};
|
|
4618
|
+
/**
|
|
4619
|
+
* REQURIED PROPERTY:
|
|
4620
|
+
* - contextName
|
|
4621
|
+
*/
|
|
4549
4622
|
const createContext = (configFn) => {
|
|
4550
|
-
let config = configFn(
|
|
4623
|
+
let config = configFn({});
|
|
4551
4624
|
const endpointContextRef = new EndpointContext(config, configFn);
|
|
4552
4625
|
const res = {
|
|
4553
4626
|
//#region types
|