taon 19.0.52 → 19.0.54
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/browser/fesm2022/taon.mjs +407 -239
- package/browser/fesm2022/taon.mjs.map +1 -1
- package/browser/lib/base-classes/base-angular-service.d.ts +3 -6
- package/browser/lib/base-classes/base-controller.d.ts +11 -0
- package/browser/lib/base-classes/base-file-upload.middleware.d.ts +15 -0
- package/browser/lib/base-classes/base-middleware.d.ts +30 -8
- package/browser/lib/decorators/classes/controller-config.d.ts +10 -0
- package/browser/lib/decorators/classes/controller-decorator.d.ts +2 -12
- package/browser/lib/decorators/classes/controller-options.d.ts +12 -0
- package/browser/lib/decorators/classes/entity-decorator.d.ts +2 -2
- package/browser/lib/decorators/classes/middleware-decorator.d.ts +2 -2
- package/browser/lib/decorators/classes/migration-decorator.d.ts +2 -2
- package/browser/lib/decorators/classes/provider-decorator.d.ts +2 -2
- package/browser/lib/decorators/classes/repository-decorator.d.ts +2 -2
- package/browser/lib/decorators/classes/subscriber-decorator.d.ts +2 -2
- package/browser/lib/decorators/decorator-abstract-opt.d.ts +4 -0
- package/browser/lib/decorators/http/http-methods-decorators.d.ts +8 -5
- package/browser/lib/endpoint-context.d.ts +4 -3
- package/browser/lib/helpers/class-helpers.d.ts +7 -3
- package/browser/lib/helpers/taon-helpers.d.ts +2 -1
- package/browser/lib/index.d.ts +2 -1
- package/browser/lib/models.d.ts +15 -22
- package/browser/package.json +1 -1
- package/lib/base-classes/base-angular-service.d.ts +3 -6
- package/lib/base-classes/base-angular-service.js +12 -16
- package/lib/base-classes/base-angular-service.js.map +1 -1
- package/lib/base-classes/base-context.js +4 -0
- package/lib/base-classes/base-context.js.map +1 -1
- package/lib/base-classes/base-controller.d.ts +12 -0
- package/lib/base-classes/base-controller.js +56 -1
- package/lib/base-classes/base-controller.js.map +1 -1
- package/lib/base-classes/base-file-upload.middleware.d.ts +14 -0
- package/lib/base-classes/base-file-upload.middleware.js +85 -0
- package/lib/base-classes/base-file-upload.middleware.js.map +1 -0
- package/lib/base-classes/base-middleware.d.ts +30 -12
- package/lib/base-classes/base-middleware.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/decorators/classes/controller-config.d.ts +9 -0
- package/lib/decorators/classes/controller-config.js +11 -0
- package/lib/decorators/classes/controller-config.js.map +1 -0
- package/lib/decorators/classes/controller-decorator.d.ts +2 -12
- package/lib/decorators/classes/controller-decorator.js +0 -13
- package/lib/decorators/classes/controller-decorator.js.map +1 -1
- package/lib/decorators/classes/controller-options.d.ts +11 -0
- package/lib/decorators/classes/controller-options.js +16 -0
- package/lib/decorators/classes/controller-options.js.map +1 -0
- package/lib/decorators/classes/entity-decorator.d.ts +2 -2
- package/lib/decorators/classes/entity-decorator.js +7 -9
- package/lib/decorators/classes/entity-decorator.js.map +1 -1
- package/lib/decorators/classes/middleware-decorator.d.ts +2 -2
- package/lib/decorators/classes/middleware-decorator.js +2 -2
- package/lib/decorators/classes/middleware-decorator.js.map +1 -1
- package/lib/decorators/classes/migration-decorator.d.ts +2 -2
- package/lib/decorators/classes/migration-decorator.js +2 -2
- package/lib/decorators/classes/migration-decorator.js.map +1 -1
- package/lib/decorators/classes/provider-decorator.d.ts +2 -2
- package/lib/decorators/classes/provider-decorator.js +2 -2
- package/lib/decorators/classes/provider-decorator.js.map +1 -1
- package/lib/decorators/classes/repository-decorator.d.ts +2 -2
- package/lib/decorators/classes/repository-decorator.js +2 -2
- package/lib/decorators/classes/repository-decorator.js.map +1 -1
- package/lib/decorators/classes/subscriber-decorator.d.ts +2 -2
- package/lib/decorators/classes/subscriber-decorator.js +2 -2
- package/lib/decorators/classes/subscriber-decorator.js.map +1 -1
- package/lib/decorators/decorator-abstract-opt.d.ts +3 -0
- package/lib/decorators/decorator-abstract-opt.js +8 -0
- package/lib/decorators/decorator-abstract-opt.js.map +1 -0
- package/lib/decorators/http/http-methods-decorators.d.ts +8 -5
- package/lib/decorators/http/http-methods-decorators.js +3 -2
- package/lib/decorators/http/http-methods-decorators.js.map +1 -1
- package/lib/endpoint-context.d.ts +4 -3
- package/lib/endpoint-context.js +128 -75
- package/lib/endpoint-context.js.map +1 -1
- package/lib/helpers/class-helpers.d.ts +7 -3
- package/lib/helpers/class-helpers.js +12 -6
- package/lib/helpers/class-helpers.js.map +1 -1
- package/lib/helpers/taon-helpers.d.ts +2 -1
- package/lib/helpers/taon-helpers.js +1 -1
- package/lib/helpers/taon-helpers.js.map +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.js.map +1 -1
- package/lib/models.d.ts +16 -24
- package/lib/models.js +4 -31
- package/lib/models.js.map +1 -1
- package/lib/realtime/realtime-client.js +2 -1
- package/lib/realtime/realtime-client.js.map +1 -1
- package/lib/ui/directives/index.d.ts +3 -0
- package/lib/ui/directives/index.js +5 -0
- package/lib/ui/directives/index.js.map +1 -0
- package/lib/ui/directives/safe.pipe.d.ts +7 -0
- package/lib/ui/directives/taon-inject-html.directive.d.ts +6 -0
- package/lib/ui/directives/taon-long-press.directive.d.ts +22 -0
- package/lib/ui/directives/view-mode.d.ts +5 -0
- package/lib/ui/directives/view-mode.js +10 -0
- package/lib/ui/directives/view-mode.js.map +1 -0
- package/lib/ui/index.js +2 -2
- package/lib/ui/taon-admin-mode-configuration/index.js +2 -2
- package/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +43 -0
- package/lib/ui/taon-admin-mode-configuration/taon-admin.models.d.ts +5 -0
- package/lib/ui/taon-admin-mode-configuration/taon-admin.models.js +3 -0
- package/lib/ui/taon-admin-mode-configuration/taon-admin.models.js.map +1 -0
- package/lib/ui/taon-full-material.module.d.ts +5 -0
- package/lib/ui/taon-github-fork-me-corner/index.d.ts +2 -0
- package/lib/ui/taon-github-fork-me-corner/index.js +5 -0
- package/lib/ui/taon-github-fork-me-corner/index.js.map +1 -0
- package/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.d.ts +3 -0
- package/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.d.ts +2 -0
- package/lib/ui/taon-github-fork-me-ribbon/index.d.ts +2 -0
- package/lib/ui/taon-github-fork-me-ribbon/index.js +5 -0
- package/lib/ui/taon-github-fork-me-ribbon/index.js.map +1 -0
- package/lib/ui/taon-github-fork-me-ribbon/taon-github-fork-me-ribbon.component.d.ts +3 -0
- package/lib/ui/taon-github-fork-me-ribbon/taon-github-fork-me-ribbon.module.d.ts +2 -0
- package/lib/ui/taon-notifications/index.d.ts +4 -0
- package/lib/ui/taon-notifications/index.js +24 -0
- package/lib/ui/taon-notifications/index.js.map +1 -0
- package/lib/ui/taon-notifications/taon-notifications.component.d.ts +9 -0
- package/lib/ui/taon-notifications/taon-notifications.models.d.ts +6 -0
- package/lib/ui/taon-notifications/taon-notifications.models.js +5 -0
- package/lib/ui/taon-notifications/taon-notifications.models.js.map +1 -0
- package/lib/ui/taon-notifications/taon-notifications.module.d.ts +2 -0
- package/lib/ui/taon-notifications/taon-notifications.service.d.ts +11 -0
- package/lib/ui/taon-progress-bar/index.d.ts +2 -0
- package/lib/ui/taon-progress-bar/index.js +5 -0
- package/lib/ui/taon-progress-bar/index.js.map +1 -0
- package/lib/ui/taon-progress-bar/taon-progress-bar.component.d.ts +13 -0
- package/lib/ui/taon-progress-bar/taon-progress-bar.module.d.ts +2 -0
- package/lib/ui/taon-session-passcode/index.d.ts +1 -0
- package/lib/ui/taon-session-passcode/index.js +5 -0
- package/lib/ui/taon-session-passcode/index.js.map +1 -0
- package/lib/ui/taon-session-passcode/taon-session-passcode.component.d.ts +35 -0
- package/lib/ui/taon-table/index.d.ts +2 -0
- package/lib/ui/taon-table/index.js +5 -0
- package/lib/ui/taon-table/index.js.map +1 -0
- package/lib/ui/taon-table/taon-table.component.d.ts +34 -0
- package/lib/ui/taon-table/taon-table.module.d.ts +2 -0
- package/lib/ui/taon.models.d.ts +11 -0
- package/lib/ui/taon.models.js +3 -0
- package/lib/ui/taon.models.js.map +1 -0
- package/package.json +1 -1
- package/tmp-environment.json +39 -0
- package/websql/fesm2022/taon.mjs +407 -235
- package/websql/fesm2022/taon.mjs.map +1 -1
- package/websql/lib/base-classes/base-angular-service.d.ts +3 -6
- package/websql/lib/base-classes/base-controller.d.ts +11 -0
- package/websql/lib/base-classes/base-file-upload.middleware.d.ts +15 -0
- package/websql/lib/base-classes/base-middleware.d.ts +30 -12
- package/websql/lib/decorators/classes/controller-config.d.ts +10 -0
- package/websql/lib/decorators/classes/controller-decorator.d.ts +2 -12
- package/websql/lib/decorators/classes/controller-options.d.ts +12 -0
- package/websql/lib/decorators/classes/entity-decorator.d.ts +2 -2
- package/websql/lib/decorators/classes/middleware-decorator.d.ts +2 -2
- package/websql/lib/decorators/classes/migration-decorator.d.ts +2 -2
- package/websql/lib/decorators/classes/provider-decorator.d.ts +2 -2
- package/websql/lib/decorators/classes/repository-decorator.d.ts +2 -2
- package/websql/lib/decorators/classes/subscriber-decorator.d.ts +2 -2
- package/websql/lib/decorators/decorator-abstract-opt.d.ts +4 -0
- package/websql/lib/decorators/http/http-methods-decorators.d.ts +8 -5
- package/websql/lib/endpoint-context.d.ts +4 -3
- package/websql/lib/helpers/class-helpers.d.ts +7 -3
- package/websql/lib/helpers/taon-helpers.d.ts +2 -1
- package/websql/lib/index.d.ts +2 -1
- package/websql/lib/models.d.ts +16 -24
- package/websql/package.json +1 -1
package/websql/fesm2022/taon.mjs
CHANGED
|
@@ -6,11 +6,11 @@ import * as tsorm from 'taon-typeorm/websql';
|
|
|
6
6
|
import { OrignalClassKey, Entity, Table, TableIndex, EventSubscriber, DataSource } from 'taon-typeorm/websql';
|
|
7
7
|
import { walk } from 'lodash-walk-object/websql';
|
|
8
8
|
import { SYMBOL, CLASS } from 'typescript-class-helpers/websql';
|
|
9
|
-
import { Models as Models$1, Resource, RestHeaders, Mapping } from 'ng2-rest/websql';
|
|
10
9
|
import * as i0 from '@angular/core';
|
|
11
10
|
import { InjectionToken, inject as inject$1, Injectable } from '@angular/core';
|
|
12
11
|
import axios from 'axios';
|
|
13
12
|
import { JSON10 } from 'json10/websql';
|
|
13
|
+
import { Models as Models$1, Resource, RestHeaders, Mapping } from 'ng2-rest/websql';
|
|
14
14
|
import { Observable, Subject, from } from 'rxjs';
|
|
15
15
|
import * as JSON5 from 'json5';
|
|
16
16
|
import { io } from 'socket.io-client';
|
|
@@ -122,6 +122,19 @@ var Orm;
|
|
|
122
122
|
})(Orm || (Orm = {}));
|
|
123
123
|
//#endregion
|
|
124
124
|
|
|
125
|
+
class DecoratorAbstractOpt {
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
class TaonControllerOptions extends DecoratorAbstractOpt {
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
class ControllerConfig extends TaonControllerOptions {
|
|
132
|
+
constructor() {
|
|
133
|
+
super(...arguments);
|
|
134
|
+
this.methods = {};
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
125
138
|
var Symbols;
|
|
126
139
|
(function (Symbols) {
|
|
127
140
|
Symbols.ctxInClassOrClassObj = Symbol();
|
|
@@ -312,122 +325,9 @@ var Validators;
|
|
|
312
325
|
};
|
|
313
326
|
})(Validators || (Validators = {}));
|
|
314
327
|
|
|
315
|
-
|
|
316
|
-
(function (Models) {
|
|
317
|
-
//#region models / class types
|
|
318
|
-
let ClassType;
|
|
319
|
-
(function (ClassType) {
|
|
320
|
-
ClassType["ENTITY"] = "ENTITY";
|
|
321
|
-
ClassType["CONTROLLER"] = "CONTROLLER";
|
|
322
|
-
ClassType["REPOSITORY"] = "REPOSITORY";
|
|
323
|
-
ClassType["PROVIDER"] = "PROVIDER";
|
|
324
|
-
ClassType["SUBSCRIBER"] = "SUBSCRIBER";
|
|
325
|
-
ClassType["MIGRATION"] = "MIGRATION";
|
|
326
|
-
ClassType["MIDDLEWARE"] = "MIDDLEWARE";
|
|
327
|
-
})(ClassType = Models.ClassType || (Models.ClassType = {}));
|
|
328
|
-
Models.ClassTypeKey = {
|
|
329
|
-
[ClassType.ENTITY]: 'entities',
|
|
330
|
-
[ClassType.CONTROLLER]: 'controllers',
|
|
331
|
-
[ClassType.REPOSITORY]: 'repositories',
|
|
332
|
-
[ClassType.PROVIDER]: 'providers',
|
|
333
|
-
[ClassType.SUBSCRIBER]: 'subscribers',
|
|
334
|
-
[ClassType.MIGRATION]: 'migrations',
|
|
335
|
-
[ClassType.MIDDLEWARE]: 'middlewares',
|
|
336
|
-
};
|
|
337
|
-
//#endregion
|
|
338
|
-
//#region models / database connection options
|
|
339
|
-
class DatabaseConfigTypeOrm {
|
|
340
|
-
}
|
|
341
|
-
Models.DatabaseConfigTypeOrm = DatabaseConfigTypeOrm;
|
|
342
|
-
//#endregion
|
|
343
|
-
//#region models / database config
|
|
344
|
-
class DatabaseConfig extends DatabaseConfigTypeOrm {
|
|
345
|
-
static from(databasePartialConfig) {
|
|
346
|
-
return _.merge(new DatabaseConfig(), databasePartialConfig);
|
|
347
|
-
}
|
|
348
|
-
get databaseConfigTypeORM() {
|
|
349
|
-
//#region @websqlFunc
|
|
350
|
-
const result = _.cloneDeep(this);
|
|
351
|
-
if (result.recreateMode) {
|
|
352
|
-
if (result.recreateMode === 'DROP_DB+MIGRATIONS') {
|
|
353
|
-
result.synchronize = true;
|
|
354
|
-
result.dropSchema = true;
|
|
355
|
-
}
|
|
356
|
-
else if (result.recreateMode === 'PRESERVE_DATA+MIGRATIONS') {
|
|
357
|
-
result.synchronize = false;
|
|
358
|
-
result.dropSchema = false;
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
delete result.recreateMode;
|
|
362
|
-
return result;
|
|
363
|
-
//#endregion
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
Models.DatabaseConfig = DatabaseConfig;
|
|
367
|
-
//#endregion
|
|
368
|
-
//#region models / decorator abstract options
|
|
369
|
-
class DecoratorAbstractOpt {
|
|
370
|
-
}
|
|
371
|
-
Models.DecoratorAbstractOpt = DecoratorAbstractOpt;
|
|
372
|
-
//#endregion
|
|
373
|
-
//#region models / param config
|
|
374
|
-
class ParamConfig {
|
|
375
|
-
}
|
|
376
|
-
Models.ParamConfig = ParamConfig;
|
|
377
|
-
//#endregion
|
|
378
|
-
//#region models / method config
|
|
379
|
-
class MethodConfig {
|
|
380
|
-
constructor() {
|
|
381
|
-
//#endregion
|
|
382
|
-
this.parameters = {};
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
Models.MethodConfig = MethodConfig;
|
|
386
|
-
//#endregion
|
|
387
|
-
//#region models / controller config
|
|
388
|
-
class ControllerConfig extends DecoratorAbstractOpt {
|
|
389
|
-
constructor() {
|
|
390
|
-
super(...arguments);
|
|
391
|
-
this.methods = {};
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
Models.ControllerConfig = ControllerConfig;
|
|
395
|
-
//#endregion
|
|
396
|
-
//#region models / runtime controller config
|
|
397
|
-
class RuntimeControllerConfig extends ControllerConfig {
|
|
398
|
-
}
|
|
399
|
-
Models.RuntimeControllerConfig = RuntimeControllerConfig;
|
|
400
|
-
//#endregion
|
|
401
|
-
//#region models / http
|
|
402
|
-
let Http;
|
|
403
|
-
(function (Http) {
|
|
404
|
-
Http.Rest = Models$1;
|
|
405
|
-
class Errors {
|
|
406
|
-
constructor(message, code = 400) {
|
|
407
|
-
this.message = message;
|
|
408
|
-
this.code = code;
|
|
409
|
-
this.toString = () => {
|
|
410
|
-
return this.message;
|
|
411
|
-
};
|
|
412
|
-
}
|
|
413
|
-
static create(message, code = 400) {
|
|
414
|
-
return new Errors(message, code);
|
|
415
|
-
}
|
|
416
|
-
static entityNotFound(entity) {
|
|
417
|
-
return Errors.create(`Entity ${ClassHelpers.getName(entity)} not found`);
|
|
418
|
-
}
|
|
419
|
-
static custom(message, code = 400) {
|
|
420
|
-
return Errors.create(message, code);
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
Http.Errors = Errors;
|
|
424
|
-
//#endregion
|
|
425
|
-
})(Http = Models.Http || (Models.Http = {}));
|
|
426
|
-
//#endregion
|
|
427
|
-
})(Models || (Models = {}));
|
|
428
|
-
|
|
429
|
-
/* */
|
|
328
|
+
//#region imports
|
|
430
329
|
/* */
|
|
330
|
+
//#endregion
|
|
431
331
|
var ClassHelpers;
|
|
432
332
|
(function (ClassHelpers) {
|
|
433
333
|
//#region get class from name
|
|
@@ -532,7 +432,7 @@ var ClassHelpers;
|
|
|
532
432
|
//#region get all metadata for controller
|
|
533
433
|
ClassHelpers.getControllerConfig = (target) => {
|
|
534
434
|
const classMetadataOptions = Reflect.getMetadata(Symbols.metadata.options.controller, target);
|
|
535
|
-
const classMetadata = _.merge(new
|
|
435
|
+
const classMetadata = _.merge(new ControllerConfig(), classMetadataOptions);
|
|
536
436
|
// Iterate over all methods of the class
|
|
537
437
|
const methodNames = ClassHelpers.getMethodsNames(target); // Object.getOwnPropertyNames(target.prototype);
|
|
538
438
|
// console.log(`methodNames for ${ClassHelpers.getName(target)} `, methodNames)
|
|
@@ -570,6 +470,12 @@ var ClassHelpers;
|
|
|
570
470
|
'toLocaleString',
|
|
571
471
|
];
|
|
572
472
|
//#endregion
|
|
473
|
+
/**
|
|
474
|
+
* Express async handler for middleware functions.
|
|
475
|
+
*/
|
|
476
|
+
ClassHelpers.asyncHandler = fn => (req, res, next) => {
|
|
477
|
+
Promise.resolve(fn(req, res, next)).catch(next);
|
|
478
|
+
};
|
|
573
479
|
ClassHelpers.getMethodsNames = (classOrClassInstance, allMethodsNames = []) => {
|
|
574
480
|
if (!classOrClassInstance) {
|
|
575
481
|
return Utils.uniqArray(allMethodsNames);
|
|
@@ -833,29 +739,26 @@ const inject = (entity) => {
|
|
|
833
739
|
//#region @browser
|
|
834
740
|
//#endregion
|
|
835
741
|
class BaseAngularsService {
|
|
742
|
+
//#endregion
|
|
836
743
|
constructor() {
|
|
837
744
|
//#region @browser
|
|
838
745
|
this.currentContext = inject$1(TAON_CONTEXT);
|
|
839
|
-
//#region @browser
|
|
840
|
-
this.CURRENT_HOST_BACKEND_PORT = inject$1(CURRENT_HOST_BACKEND_PORT, {
|
|
841
|
-
optional: true,
|
|
842
|
-
});
|
|
843
|
-
// #endregion
|
|
844
746
|
}
|
|
747
|
+
injectController(ctor,
|
|
845
748
|
/**
|
|
846
|
-
*
|
|
847
|
-
* Returns the host URL for the backend service
|
|
848
|
-
* that is running on localhost (normal NodeJS/ExpressJS mode).
|
|
749
|
+
* optional override context
|
|
849
750
|
*/
|
|
850
|
-
|
|
851
|
-
return
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
751
|
+
overrideCurrentContext) {
|
|
752
|
+
return inject(() => {
|
|
753
|
+
let currentContext;
|
|
754
|
+
//#region @browser
|
|
755
|
+
currentContext = overrideCurrentContext ? overrideCurrentContext : this.currentContext;
|
|
756
|
+
//#endregion
|
|
757
|
+
if (!currentContext) {
|
|
758
|
+
throw new Error('No context available. Make sure to initialize the context before injecting controllers.');
|
|
759
|
+
}
|
|
760
|
+
return currentContext ? currentContext.getClass(ctor) : void 0;
|
|
761
|
+
});
|
|
859
762
|
}
|
|
860
763
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BaseAngularsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
861
764
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BaseAngularsService }); }
|
|
@@ -864,6 +767,103 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
864
767
|
type: Injectable
|
|
865
768
|
}], ctorParameters: () => [] });
|
|
866
769
|
|
|
770
|
+
var Models;
|
|
771
|
+
(function (Models) {
|
|
772
|
+
//#region models / class types
|
|
773
|
+
let ClassType;
|
|
774
|
+
(function (ClassType) {
|
|
775
|
+
ClassType["ENTITY"] = "ENTITY";
|
|
776
|
+
ClassType["CONTROLLER"] = "CONTROLLER";
|
|
777
|
+
ClassType["REPOSITORY"] = "REPOSITORY";
|
|
778
|
+
ClassType["PROVIDER"] = "PROVIDER";
|
|
779
|
+
ClassType["SUBSCRIBER"] = "SUBSCRIBER";
|
|
780
|
+
ClassType["MIGRATION"] = "MIGRATION";
|
|
781
|
+
ClassType["MIDDLEWARE"] = "MIDDLEWARE";
|
|
782
|
+
})(ClassType = Models.ClassType || (Models.ClassType = {}));
|
|
783
|
+
Models.ClassTypeKey = {
|
|
784
|
+
[ClassType.ENTITY]: 'entities',
|
|
785
|
+
[ClassType.CONTROLLER]: 'controllers',
|
|
786
|
+
[ClassType.REPOSITORY]: 'repositories',
|
|
787
|
+
[ClassType.PROVIDER]: 'providers',
|
|
788
|
+
[ClassType.SUBSCRIBER]: 'subscribers',
|
|
789
|
+
[ClassType.MIGRATION]: 'migrations',
|
|
790
|
+
[ClassType.MIDDLEWARE]: 'middlewares',
|
|
791
|
+
};
|
|
792
|
+
//#endregion
|
|
793
|
+
//#region models / database connection options
|
|
794
|
+
class DatabaseConfigTypeOrm {
|
|
795
|
+
}
|
|
796
|
+
Models.DatabaseConfigTypeOrm = DatabaseConfigTypeOrm;
|
|
797
|
+
//#endregion
|
|
798
|
+
//#region models / database config
|
|
799
|
+
class DatabaseConfig extends DatabaseConfigTypeOrm {
|
|
800
|
+
static from(databasePartialConfig) {
|
|
801
|
+
return _.merge(new DatabaseConfig(), databasePartialConfig);
|
|
802
|
+
}
|
|
803
|
+
get databaseConfigTypeORM() {
|
|
804
|
+
//#region @websqlFunc
|
|
805
|
+
const result = _.cloneDeep(this);
|
|
806
|
+
if (result.recreateMode) {
|
|
807
|
+
if (result.recreateMode === 'DROP_DB+MIGRATIONS') {
|
|
808
|
+
result.synchronize = true;
|
|
809
|
+
result.dropSchema = true;
|
|
810
|
+
}
|
|
811
|
+
else if (result.recreateMode === 'PRESERVE_DATA+MIGRATIONS') {
|
|
812
|
+
result.synchronize = false;
|
|
813
|
+
result.dropSchema = false;
|
|
814
|
+
}
|
|
815
|
+
}
|
|
816
|
+
delete result.recreateMode;
|
|
817
|
+
return result;
|
|
818
|
+
//#endregion
|
|
819
|
+
}
|
|
820
|
+
}
|
|
821
|
+
Models.DatabaseConfig = DatabaseConfig;
|
|
822
|
+
//#endregion
|
|
823
|
+
//#region models / param config
|
|
824
|
+
class ParamConfig {
|
|
825
|
+
}
|
|
826
|
+
Models.ParamConfig = ParamConfig;
|
|
827
|
+
//#endregion
|
|
828
|
+
//#region models / method config
|
|
829
|
+
/**
|
|
830
|
+
* @link './decorators/http/http-methods-decorators.ts' TaonHttpDecoratorOptions
|
|
831
|
+
*/
|
|
832
|
+
class MethodConfig {
|
|
833
|
+
constructor() {
|
|
834
|
+
this.parameters = {};
|
|
835
|
+
}
|
|
836
|
+
}
|
|
837
|
+
Models.MethodConfig = MethodConfig;
|
|
838
|
+
//#endregion
|
|
839
|
+
//#region models / http
|
|
840
|
+
let Http;
|
|
841
|
+
(function (Http) {
|
|
842
|
+
Http.Rest = Models$1;
|
|
843
|
+
class Errors {
|
|
844
|
+
constructor(message, code = 400) {
|
|
845
|
+
this.message = message;
|
|
846
|
+
this.code = code;
|
|
847
|
+
this.toString = () => {
|
|
848
|
+
return this.message;
|
|
849
|
+
};
|
|
850
|
+
}
|
|
851
|
+
static create(message, code = 400) {
|
|
852
|
+
return new Errors(message, code);
|
|
853
|
+
}
|
|
854
|
+
static entityNotFound(entity) {
|
|
855
|
+
return Errors.create(`Entity ${ClassHelpers.getName(entity)} not found`);
|
|
856
|
+
}
|
|
857
|
+
static custom(message, code = 400) {
|
|
858
|
+
return Errors.create(message, code);
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
Http.Errors = Errors;
|
|
862
|
+
//#endregion
|
|
863
|
+
})(Http = Models.Http || (Models.Http = {}));
|
|
864
|
+
//#endregion
|
|
865
|
+
})(Models || (Models = {}));
|
|
866
|
+
|
|
867
867
|
//#region imports
|
|
868
868
|
class ContextDbMigrations {
|
|
869
869
|
//#endregion
|
|
@@ -1521,7 +1521,8 @@ class RealtimeClient {
|
|
|
1521
1521
|
};
|
|
1522
1522
|
// console.log('[browser] nspPath', nspPath);
|
|
1523
1523
|
if (this.core.ctx.config.frontendHost &&
|
|
1524
|
-
this.core.ctx.config.frontendHost !== ''
|
|
1524
|
+
this.core.ctx.config.frontendHost !== '' &&
|
|
1525
|
+
this.core.ctx.isRunningInsideDocker) {
|
|
1525
1526
|
console.log(`[${this.core.ctx.contextName}] USING FRONTEND HOST ${this.core.ctx.config.frontendHost}`);
|
|
1526
1527
|
nspPath.global = new URL(`${this.core.ctx.frontendHostUri.origin}${nspPath.global.pathname}`);
|
|
1527
1528
|
nspPath.realtime = new URL(`${this.core.ctx.frontendHostUri.origin}${nspPath.realtime.pathname}`);
|
|
@@ -3072,7 +3073,12 @@ class EndpointContext {
|
|
|
3072
3073
|
/* */
|
|
3073
3074
|
/* */
|
|
3074
3075
|
/* */
|
|
3075
|
-
|
|
3076
|
+
/* */
|
|
3077
|
+
/* */
|
|
3078
|
+
/* */
|
|
3079
|
+
/* */
|
|
3080
|
+
/* */
|
|
3081
|
+
await this.initCustomClientMiddlewares();
|
|
3076
3082
|
}
|
|
3077
3083
|
//#endregion
|
|
3078
3084
|
//#region prepare realtime
|
|
@@ -3652,6 +3658,9 @@ class EndpointContext {
|
|
|
3652
3658
|
return this.config.contextName;
|
|
3653
3659
|
}
|
|
3654
3660
|
//#endregion
|
|
3661
|
+
get cwd() {
|
|
3662
|
+
return this.config.cwd || process.cwd();
|
|
3663
|
+
}
|
|
3655
3664
|
get activeContext() {
|
|
3656
3665
|
return this.config.activeContext || null;
|
|
3657
3666
|
}
|
|
@@ -3822,7 +3831,9 @@ class EndpointContext {
|
|
|
3822
3831
|
[taon][typeorm] db prepration done.. db initialize=${this.connection?.isInitialized}
|
|
3823
3832
|
|
|
3824
3833
|
|
|
3825
|
-
`,
|
|
3834
|
+
`,
|
|
3835
|
+
// dataSourceDbConfig,
|
|
3836
|
+
{ 'this.connection': !!this.connection });
|
|
3826
3837
|
console.log(`Database file location: ${this.connection.options.database}`);
|
|
3827
3838
|
}
|
|
3828
3839
|
// const entityMetadata = getMetadataArgsStorage();
|
|
@@ -3853,6 +3864,7 @@ class EndpointContext {
|
|
|
3853
3864
|
const configs = ClassHelpers.getControllerConfigs(controllerClassFn);
|
|
3854
3865
|
// console.log(`Class config for ${ClassHelpers.getName(controllerClassFn)}`, configs)
|
|
3855
3866
|
const classConfig = configs[0];
|
|
3867
|
+
//#region update class calculate path
|
|
3856
3868
|
const parentscalculatedPath = _.slice(configs, 1)
|
|
3857
3869
|
.reverse()
|
|
3858
3870
|
.map(bc => {
|
|
@@ -3876,6 +3888,7 @@ class EndpointContext {
|
|
|
3876
3888
|
}, [])
|
|
3877
3889
|
.join('/');
|
|
3878
3890
|
}
|
|
3891
|
+
//#endregion
|
|
3879
3892
|
// console.log('calculatedPath', classConfig.calculatedPath);
|
|
3880
3893
|
_.slice(configs, 1).forEach(bc => {
|
|
3881
3894
|
const alreadyIs = classConfig.methods;
|
|
@@ -3984,44 +3997,29 @@ class EndpointContext {
|
|
|
3984
3997
|
}
|
|
3985
3998
|
//#endregion
|
|
3986
3999
|
//#region methods & getters / init middlewares
|
|
3987
|
-
async
|
|
3988
|
-
const middlewares = this.getClassesInstancesArrBy(Models.ClassType.MIDDLEWARE)
|
|
3989
|
-
|
|
3990
|
-
|
|
3991
|
-
|
|
3992
|
-
|
|
3993
|
-
|
|
3994
|
-
|
|
3995
|
-
|
|
3996
|
-
|
|
3997
|
-
|
|
3998
|
-
|
|
3999
|
-
|
|
4000
|
-
|
|
4001
|
-
|
|
4002
|
-
|
|
4003
|
-
|
|
4004
|
-
|
|
4005
|
-
|
|
4006
|
-
|
|
4007
|
-
|
|
4008
|
-
});
|
|
4009
|
-
})(middlewareInstance, this.contextName, apiPrefix, this.uriPathnameOrNothingIfRoot);
|
|
4010
|
-
}
|
|
4011
|
-
}
|
|
4000
|
+
async initCustomClientMiddlewares() {
|
|
4001
|
+
const middlewares = this.getClassesInstancesArrBy(Models.ClassType.MIDDLEWARE)
|
|
4002
|
+
.map(f => f)
|
|
4003
|
+
.filter(f => _.isFunction(f.interceptClient));
|
|
4004
|
+
middlewares.forEach(instance => {
|
|
4005
|
+
const contextName = this.contextName;
|
|
4006
|
+
const interceptorName = `${contextName}-${ClassHelpers.getName(instance)}`;
|
|
4007
|
+
Resource.request.interceptors.set(interceptorName, {
|
|
4008
|
+
intercept: ({ req, next }) => {
|
|
4009
|
+
const url = new URL(req.url);
|
|
4010
|
+
if (url.pathname.startsWith(`${this.uriPathnameOrNothingIfRoot}/${apiPrefix}/${contextName}/`)) {
|
|
4011
|
+
// console.log('intercepting', url.pathname, req);
|
|
4012
|
+
return instance.interceptClient({
|
|
4013
|
+
req,
|
|
4014
|
+
next,
|
|
4015
|
+
});
|
|
4016
|
+
}
|
|
4017
|
+
return next.handle(req);
|
|
4018
|
+
},
|
|
4019
|
+
});
|
|
4020
|
+
});
|
|
4012
4021
|
}
|
|
4013
|
-
async
|
|
4014
|
-
/* */
|
|
4015
|
-
/* */
|
|
4016
|
-
/* */
|
|
4017
|
-
/* */
|
|
4018
|
-
/* */
|
|
4019
|
-
/* */
|
|
4020
|
-
/* */
|
|
4021
|
-
/* */
|
|
4022
|
-
/* */
|
|
4023
|
-
/* */
|
|
4024
|
-
/* */
|
|
4022
|
+
async initCustomBackendMiddlewares() {
|
|
4025
4023
|
/* */
|
|
4026
4024
|
/* */
|
|
4027
4025
|
/* */
|
|
@@ -4056,6 +4054,8 @@ class EndpointContext {
|
|
|
4056
4054
|
/* */
|
|
4057
4055
|
/* */
|
|
4058
4056
|
/* */
|
|
4057
|
+
}
|
|
4058
|
+
async initBackendMiddlewares() {
|
|
4059
4059
|
/* */
|
|
4060
4060
|
/* */
|
|
4061
4061
|
/* */
|
|
@@ -4165,16 +4165,31 @@ class EndpointContext {
|
|
|
4165
4165
|
//#region methods & getters / init methods node
|
|
4166
4166
|
initServer(
|
|
4167
4167
|
//#region parameters
|
|
4168
|
-
|
|
4168
|
+
httpMethodType, methodConfig, classConfig, expressPath, target) {
|
|
4169
4169
|
//#region resolve variables
|
|
4170
|
-
|
|
4171
|
-
|
|
4172
|
-
|
|
4173
|
-
|
|
4174
|
-
|
|
4175
|
-
|
|
4176
|
-
|
|
4177
|
-
|
|
4170
|
+
const middlewareHandlers = (Array.isArray(methodConfig.middlewares) &&
|
|
4171
|
+
methodConfig.middlewares?.length > 0
|
|
4172
|
+
? methodConfig.middlewares
|
|
4173
|
+
: [])
|
|
4174
|
+
.map(middlewareClassFun => {
|
|
4175
|
+
const middlewareInstance = this.getInstanceBy(middlewareClassFun);
|
|
4176
|
+
if (middlewareInstance &&
|
|
4177
|
+
_.isFunction(middlewareInstance.interceptServerMethod)) {
|
|
4178
|
+
const middlewareFn = ClassHelpers.asyncHandler(async (req, res, next) => {
|
|
4179
|
+
await middlewareInstance.interceptServerMethod({
|
|
4180
|
+
req,
|
|
4181
|
+
res,
|
|
4182
|
+
next,
|
|
4183
|
+
}, {
|
|
4184
|
+
methodName: methodConfig.methodName,
|
|
4185
|
+
expressPath,
|
|
4186
|
+
httpRequestType: methodConfig.type,
|
|
4187
|
+
});
|
|
4188
|
+
});
|
|
4189
|
+
return middlewareFn;
|
|
4190
|
+
}
|
|
4191
|
+
})
|
|
4192
|
+
.filter(f => !!f);
|
|
4178
4193
|
// const url = this.uri;
|
|
4179
4194
|
//#region get result
|
|
4180
4195
|
const getResult = async (resolvedParams, req, res) => {
|
|
@@ -4184,7 +4199,7 @@ class EndpointContext {
|
|
|
4184
4199
|
*/
|
|
4185
4200
|
this.getInstanceBy(target),
|
|
4186
4201
|
/**
|
|
4187
|
-
* Params for
|
|
4202
|
+
* Params for method @GET, @PUT etc.
|
|
4188
4203
|
*/
|
|
4189
4204
|
resolvedParams);
|
|
4190
4205
|
let result = await getResponseValue(response, { req, res });
|
|
@@ -4223,8 +4238,9 @@ class EndpointContext {
|
|
|
4223
4238
|
//#region apply dummy websql express routers
|
|
4224
4239
|
//#region @websql
|
|
4225
4240
|
if (Helpers.isWebSQL) {
|
|
4226
|
-
if (!this.expressApp[
|
|
4227
|
-
this.expressApp[
|
|
4241
|
+
if (!this.expressApp[httpMethodType.toLowerCase()]) {
|
|
4242
|
+
this.expressApp[httpMethodType.toLowerCase()] = () => { };
|
|
4243
|
+
// TODO add middlewares for WEBSQL and ELECTRON mode
|
|
4228
4244
|
}
|
|
4229
4245
|
}
|
|
4230
4246
|
//#endregion
|
|
@@ -4443,6 +4459,7 @@ class EndpointContext {
|
|
|
4443
4459
|
/* */
|
|
4444
4460
|
/* */
|
|
4445
4461
|
/* */
|
|
4462
|
+
/* */
|
|
4446
4463
|
}
|
|
4447
4464
|
return {
|
|
4448
4465
|
expressPath: expressPath,
|
|
@@ -4456,10 +4473,31 @@ class EndpointContext {
|
|
|
4456
4473
|
*/
|
|
4457
4474
|
async initClient(
|
|
4458
4475
|
//#region parameters
|
|
4459
|
-
target,
|
|
4476
|
+
target, httpRequestType, methodConfig, // Models.Http.Rest.MethodConfig,
|
|
4477
|
+
expressPath) {
|
|
4460
4478
|
const ctx = this;
|
|
4479
|
+
//#region init middlewares
|
|
4480
|
+
const middlewares = methodConfig.middlewares
|
|
4481
|
+
.map(f => this.getInstanceBy(f))
|
|
4482
|
+
.filter(f => _.isFunction(f.interceptClientMethod));
|
|
4483
|
+
middlewares.forEach(instance => {
|
|
4484
|
+
Resource.request.methodsInterceptors.set(`${methodConfig.type?.toUpperCase()}-${expressPath}`, {
|
|
4485
|
+
intercept: ({ req, next }) => {
|
|
4486
|
+
return instance.interceptClientMethod({
|
|
4487
|
+
req,
|
|
4488
|
+
next,
|
|
4489
|
+
}, {
|
|
4490
|
+
methodName: methodConfig.methodName,
|
|
4491
|
+
expressPath,
|
|
4492
|
+
httpRequestType: httpRequestType,
|
|
4493
|
+
});
|
|
4494
|
+
},
|
|
4495
|
+
});
|
|
4496
|
+
});
|
|
4497
|
+
//#endregion
|
|
4461
4498
|
// : { received: any; /* Rest<any, any> */ }
|
|
4462
|
-
this.logHttp &&
|
|
4499
|
+
this.logHttp &&
|
|
4500
|
+
console.log(`${httpRequestType?.toUpperCase()} ${expressPath} `);
|
|
4463
4501
|
// console.log('INITING', methodConfig); // TODO inject in static
|
|
4464
4502
|
//#region resolve storage
|
|
4465
4503
|
// TODO not a good idea
|
|
@@ -4501,6 +4539,9 @@ class EndpointContext {
|
|
|
4501
4539
|
received['observable'] = from(received);
|
|
4502
4540
|
return {
|
|
4503
4541
|
received,
|
|
4542
|
+
request(axiosConfig) {
|
|
4543
|
+
return received;
|
|
4544
|
+
},
|
|
4504
4545
|
};
|
|
4505
4546
|
};
|
|
4506
4547
|
return;
|
|
@@ -4621,11 +4662,16 @@ class EndpointContext {
|
|
|
4621
4662
|
if (Helpers.isWebSQL) {
|
|
4622
4663
|
return {
|
|
4623
4664
|
received,
|
|
4665
|
+
request(axiosConfig) {
|
|
4666
|
+
// console.log('request', axiosConfgi);
|
|
4667
|
+
return received;
|
|
4668
|
+
},
|
|
4624
4669
|
};
|
|
4625
4670
|
}
|
|
4626
4671
|
};
|
|
4627
4672
|
if (Helpers.isWebSQL) {
|
|
4628
|
-
|
|
4673
|
+
// @ts-ignore
|
|
4674
|
+
return undefined;
|
|
4629
4675
|
}
|
|
4630
4676
|
//#endregion
|
|
4631
4677
|
//#endregion
|
|
@@ -4668,8 +4714,7 @@ class EndpointContext {
|
|
|
4668
4714
|
else {
|
|
4669
4715
|
rest = endpoints[ctx.uriOrigin][expressPath];
|
|
4670
4716
|
}
|
|
4671
|
-
const method =
|
|
4672
|
-
const isWithBody = method === 'put' || method === 'post';
|
|
4717
|
+
const method = httpRequestType.toLowerCase();
|
|
4673
4718
|
const pathPrams = {};
|
|
4674
4719
|
let queryParams = {};
|
|
4675
4720
|
let bodyObject = {};
|
|
@@ -4767,9 +4812,11 @@ instead
|
|
|
4767
4812
|
}
|
|
4768
4813
|
//#endregion
|
|
4769
4814
|
const httpResultObj = {
|
|
4770
|
-
received:
|
|
4771
|
-
|
|
4772
|
-
|
|
4815
|
+
received: rest.model(pathPrams)[method](bodyObject, [queryParams]),
|
|
4816
|
+
request(axiosConfig) {
|
|
4817
|
+
return rest
|
|
4818
|
+
.model(pathPrams)[method](bodyObject, [queryParams], axiosConfig);
|
|
4819
|
+
},
|
|
4773
4820
|
};
|
|
4774
4821
|
return httpResultObj;
|
|
4775
4822
|
};
|
|
@@ -4997,16 +5044,16 @@ const createContext = (configFn) => {
|
|
|
4997
5044
|
};
|
|
4998
5045
|
|
|
4999
5046
|
/**
|
|
5000
|
-
*
|
|
5047
|
+
* Provider decorator
|
|
5001
5048
|
*/
|
|
5002
|
-
function
|
|
5049
|
+
function TaonMiddleware(options) {
|
|
5003
5050
|
return function (constructor) {
|
|
5004
|
-
Reflect.defineMetadata(Symbols.metadata.options.
|
|
5051
|
+
Reflect.defineMetadata(Symbols.metadata.options.provider, options, constructor);
|
|
5005
5052
|
Reflect.defineMetadata(Symbols.metadata.className, options?.className || constructor.name, constructor);
|
|
5006
|
-
ClassHelpers.setName(constructor, options?.className);
|
|
5053
|
+
ClassHelpers.setName(constructor, options?.className || constructor.name);
|
|
5007
5054
|
};
|
|
5008
5055
|
}
|
|
5009
|
-
class
|
|
5056
|
+
class TaonMiddlewareOptions extends DecoratorAbstractOpt {
|
|
5010
5057
|
}
|
|
5011
5058
|
|
|
5012
5059
|
//#endregion
|
|
@@ -5193,6 +5240,95 @@ class BaseInjector {
|
|
|
5193
5240
|
}
|
|
5194
5241
|
}
|
|
5195
5242
|
|
|
5243
|
+
/**
|
|
5244
|
+
* TODO
|
|
5245
|
+
* - global provider available in all contexts
|
|
5246
|
+
* - provider available in own context
|
|
5247
|
+
*/
|
|
5248
|
+
class BaseMiddleware extends BaseInjector {
|
|
5249
|
+
}
|
|
5250
|
+
|
|
5251
|
+
//#endregion
|
|
5252
|
+
/**
|
|
5253
|
+
* Configurable file upload middleware (multer based)
|
|
5254
|
+
*/
|
|
5255
|
+
let BaseFileUploadMiddleware = class BaseFileUploadMiddleware extends BaseMiddleware {
|
|
5256
|
+
async interceptServerMethod({ req, res, next }, { methodName, expressPath }) {
|
|
5257
|
+
return this.middleware()(req, res, next);
|
|
5258
|
+
}
|
|
5259
|
+
//#region upload Dir
|
|
5260
|
+
uploadDir() {
|
|
5261
|
+
return crossPlatformPath([this.ctx.cwd, 'uploaded-files']);
|
|
5262
|
+
}
|
|
5263
|
+
//#endregion
|
|
5264
|
+
//#region storage
|
|
5265
|
+
storage() {
|
|
5266
|
+
/* */
|
|
5267
|
+
/* */
|
|
5268
|
+
/* */
|
|
5269
|
+
/* */
|
|
5270
|
+
/* */
|
|
5271
|
+
/* */
|
|
5272
|
+
/* */
|
|
5273
|
+
/* */
|
|
5274
|
+
/* */
|
|
5275
|
+
/* */
|
|
5276
|
+
/* */
|
|
5277
|
+
/* */
|
|
5278
|
+
/* */
|
|
5279
|
+
/* */
|
|
5280
|
+
/* */
|
|
5281
|
+
/* */
|
|
5282
|
+
/* */
|
|
5283
|
+
/* */
|
|
5284
|
+
/* */
|
|
5285
|
+
return (void 0);
|
|
5286
|
+
}
|
|
5287
|
+
//#endregion
|
|
5288
|
+
//#region upload
|
|
5289
|
+
upload() {
|
|
5290
|
+
/* */
|
|
5291
|
+
/* */
|
|
5292
|
+
/* */
|
|
5293
|
+
/* */
|
|
5294
|
+
/* */
|
|
5295
|
+
/* */
|
|
5296
|
+
/* */
|
|
5297
|
+
/* */
|
|
5298
|
+
/* */
|
|
5299
|
+
/* */
|
|
5300
|
+
/* */
|
|
5301
|
+
/* */
|
|
5302
|
+
/* */
|
|
5303
|
+
return (void 0);
|
|
5304
|
+
}
|
|
5305
|
+
//#endregion
|
|
5306
|
+
//#region middleware
|
|
5307
|
+
middleware() {
|
|
5308
|
+
/* */
|
|
5309
|
+
/* */
|
|
5310
|
+
return (void 0);
|
|
5311
|
+
}
|
|
5312
|
+
};
|
|
5313
|
+
BaseFileUploadMiddleware = __decorate([
|
|
5314
|
+
TaonMiddleware({
|
|
5315
|
+
className: 'BaseFileUploadMiddleware',
|
|
5316
|
+
})
|
|
5317
|
+
], BaseFileUploadMiddleware);
|
|
5318
|
+
|
|
5319
|
+
/**
|
|
5320
|
+
* Repository decorator
|
|
5321
|
+
*/
|
|
5322
|
+
function TaonRepository(options) {
|
|
5323
|
+
return function (constructor) {
|
|
5324
|
+
Reflect.defineMetadata(Symbols.metadata.options.repository, options, constructor);
|
|
5325
|
+
Reflect.defineMetadata(Symbols.metadata.className, options?.className || constructor.name, constructor);
|
|
5326
|
+
ClassHelpers.setName(constructor, options?.className);
|
|
5327
|
+
};
|
|
5328
|
+
}
|
|
5329
|
+
class TaonRepositoryOptions extends DecoratorAbstractOpt {
|
|
5330
|
+
}
|
|
5331
|
+
|
|
5196
5332
|
//#endregion
|
|
5197
5333
|
let BaseCustomRepository = class BaseCustomRepository extends BaseInjector {
|
|
5198
5334
|
};
|
|
@@ -5787,6 +5923,9 @@ BaseRepository = __decorate([
|
|
|
5787
5923
|
const BaseContext = createContext(() => ({
|
|
5788
5924
|
contextName: 'BaseContext',
|
|
5789
5925
|
abstract: true,
|
|
5926
|
+
middlewares: {
|
|
5927
|
+
BaseFileUploadMiddleware,
|
|
5928
|
+
},
|
|
5790
5929
|
repositories: {
|
|
5791
5930
|
// @ts-ignore
|
|
5792
5931
|
BaseRepository,
|
|
@@ -5808,14 +5947,6 @@ function TaonController(options) {
|
|
|
5808
5947
|
Reflect.defineMetadata(Symbols.metadata.className, options?.className || constructor.name, constructor);
|
|
5809
5948
|
};
|
|
5810
5949
|
}
|
|
5811
|
-
class TaonControllerOptions extends Models.DecoratorAbstractOpt {
|
|
5812
|
-
}
|
|
5813
|
-
|
|
5814
|
-
let BaseController = class BaseController extends BaseInjector {
|
|
5815
|
-
};
|
|
5816
|
-
BaseController = __decorate([
|
|
5817
|
-
TaonController({ className: 'BaseController' })
|
|
5818
|
-
], BaseController);
|
|
5819
5950
|
|
|
5820
5951
|
const metaReq = (method, path, target, propertyKey, descriptor, pathOrOptions, pathIsGlobal) => {
|
|
5821
5952
|
let options;
|
|
@@ -5828,13 +5959,14 @@ const metaReq = (method, path, target, propertyKey, descriptor, pathOrOptions, p
|
|
|
5828
5959
|
else {
|
|
5829
5960
|
options = { pathOrOptions, pathIsGlobal };
|
|
5830
5961
|
}
|
|
5831
|
-
const { overrideContentType,
|
|
5962
|
+
const { overrideContentType, overrideResponseType, middlewares } = options;
|
|
5832
5963
|
let methodConfig = Reflect.getMetadata(Symbols.metadata.options.controllerMethod, target.constructor, propertyKey);
|
|
5833
5964
|
if (!methodConfig) {
|
|
5834
5965
|
methodConfig = new Models.MethodConfig();
|
|
5835
5966
|
Reflect.defineMetadata(Symbols.metadata.options.controllerMethod, methodConfig, target.constructor, propertyKey);
|
|
5836
5967
|
}
|
|
5837
5968
|
methodConfig.methodName = propertyKey;
|
|
5969
|
+
methodConfig.middlewares = middlewares || [];
|
|
5838
5970
|
methodConfig.type = method;
|
|
5839
5971
|
if (!path) {
|
|
5840
5972
|
let paramsPathConcatedPath = '';
|
|
@@ -5856,7 +5988,7 @@ const metaReq = (method, path, target, propertyKey, descriptor, pathOrOptions, p
|
|
|
5856
5988
|
methodConfig.descriptor = descriptor;
|
|
5857
5989
|
methodConfig.global = pathIsGlobal;
|
|
5858
5990
|
methodConfig.contentType = overrideContentType;
|
|
5859
|
-
methodConfig.responseType =
|
|
5991
|
+
methodConfig.responseType = overrideResponseType;
|
|
5860
5992
|
Reflect.defineMetadata(Symbols.metadata.options.controllerMethod, methodConfig, target.constructor, propertyKey);
|
|
5861
5993
|
// console.log('methods updated', methodConfig);
|
|
5862
5994
|
};
|
|
@@ -5935,6 +6067,68 @@ function Body(name) {
|
|
|
5935
6067
|
};
|
|
5936
6068
|
}
|
|
5937
6069
|
|
|
6070
|
+
/* */
|
|
6071
|
+
/* */
|
|
6072
|
+
let BaseController = class BaseController extends BaseInjector {
|
|
6073
|
+
//#region upload form data to server
|
|
6074
|
+
uploadFormDataToServer(formData) {
|
|
6075
|
+
/* */
|
|
6076
|
+
/* */
|
|
6077
|
+
/* */
|
|
6078
|
+
/* */
|
|
6079
|
+
/* */
|
|
6080
|
+
/* */
|
|
6081
|
+
/* */
|
|
6082
|
+
/* */
|
|
6083
|
+
/* */
|
|
6084
|
+
/* */
|
|
6085
|
+
/* */
|
|
6086
|
+
/* */
|
|
6087
|
+
/* */
|
|
6088
|
+
/* */
|
|
6089
|
+
/* */
|
|
6090
|
+
/* */
|
|
6091
|
+
/* */
|
|
6092
|
+
/* */
|
|
6093
|
+
/* */
|
|
6094
|
+
/* */
|
|
6095
|
+
/* */
|
|
6096
|
+
return (void 0);
|
|
6097
|
+
}
|
|
6098
|
+
//#endregion
|
|
6099
|
+
//#region upload local file to server
|
|
6100
|
+
async uploadLocalFileToServer(absFilePath) {
|
|
6101
|
+
/* */
|
|
6102
|
+
/* */
|
|
6103
|
+
/* */
|
|
6104
|
+
/* */
|
|
6105
|
+
/* */
|
|
6106
|
+
/* */
|
|
6107
|
+
/* */
|
|
6108
|
+
/* */
|
|
6109
|
+
/* */
|
|
6110
|
+
/* */
|
|
6111
|
+
/* */
|
|
6112
|
+
/* */
|
|
6113
|
+
return (void 0);
|
|
6114
|
+
}
|
|
6115
|
+
};
|
|
6116
|
+
__decorate([
|
|
6117
|
+
POST({
|
|
6118
|
+
overrideContentType: 'multipart/form-data',
|
|
6119
|
+
middlewares: [BaseFileUploadMiddleware],
|
|
6120
|
+
}),
|
|
6121
|
+
__param(0, Body()),
|
|
6122
|
+
__metadata("design:type", Function),
|
|
6123
|
+
__metadata("design:paramtypes", [FormData]),
|
|
6124
|
+
__metadata("design:returntype", Object)
|
|
6125
|
+
], BaseController.prototype, "uploadFormDataToServer", null);
|
|
6126
|
+
BaseController = __decorate([
|
|
6127
|
+
TaonController({
|
|
6128
|
+
className: 'BaseController',
|
|
6129
|
+
})
|
|
6130
|
+
], BaseController);
|
|
6131
|
+
|
|
5938
6132
|
//#endregion
|
|
5939
6133
|
/**
|
|
5940
6134
|
* Please override property entityClassFn with entity class.
|
|
@@ -6211,14 +6405,6 @@ BaseCrudController = __decorate([
|
|
|
6211
6405
|
TaonController({ className: 'BaseCrudController' })
|
|
6212
6406
|
], BaseCrudController);
|
|
6213
6407
|
|
|
6214
|
-
/**
|
|
6215
|
-
* TODO
|
|
6216
|
-
* - global provider available in all contexts
|
|
6217
|
-
* - provider available in own context
|
|
6218
|
-
*/
|
|
6219
|
-
class BaseMiddleware extends BaseInjector {
|
|
6220
|
-
}
|
|
6221
|
-
|
|
6222
6408
|
class BaseMigration extends BaseInjector {
|
|
6223
6409
|
/**
|
|
6224
6410
|
* by default is READY to run
|
|
@@ -6255,7 +6441,7 @@ function TaonSubscriber(options) {
|
|
|
6255
6441
|
ClassHelpers.setName(constructor, options?.className);
|
|
6256
6442
|
};
|
|
6257
6443
|
}
|
|
6258
|
-
class TaonSubscriberOptions extends
|
|
6444
|
+
class TaonSubscriberOptions extends DecoratorAbstractOpt {
|
|
6259
6445
|
}
|
|
6260
6446
|
|
|
6261
6447
|
let BaseSubscriberForEntity = class BaseSubscriberForEntity extends BaseInjector {
|
|
@@ -6418,7 +6604,6 @@ var Base;
|
|
|
6418
6604
|
Base.Context = BaseContext;
|
|
6419
6605
|
})(Base || (Base = {}));
|
|
6420
6606
|
|
|
6421
|
-
//#endregion
|
|
6422
6607
|
/**
|
|
6423
6608
|
* Entity decorator
|
|
6424
6609
|
*/
|
|
@@ -6438,20 +6623,7 @@ function TaonEntity(options) {
|
|
|
6438
6623
|
CLASS.setName(constructor, options?.className); // TODO QUICK_FIX for ng2-rest
|
|
6439
6624
|
};
|
|
6440
6625
|
}
|
|
6441
|
-
class TaonEntityOptions extends
|
|
6442
|
-
}
|
|
6443
|
-
|
|
6444
|
-
/**
|
|
6445
|
-
* Provider decorator
|
|
6446
|
-
*/
|
|
6447
|
-
function TaonMiddleware(options) {
|
|
6448
|
-
return function (constructor) {
|
|
6449
|
-
Reflect.defineMetadata(Symbols.metadata.options.provider, options, constructor);
|
|
6450
|
-
Reflect.defineMetadata(Symbols.metadata.className, options?.className || constructor.name, constructor);
|
|
6451
|
-
ClassHelpers.setName(constructor, options?.className || constructor.name);
|
|
6452
|
-
};
|
|
6453
|
-
}
|
|
6454
|
-
class TaonMiddlewareOptions extends Models.DecoratorAbstractOpt {
|
|
6626
|
+
class TaonEntityOptions extends DecoratorAbstractOpt {
|
|
6455
6627
|
}
|
|
6456
6628
|
|
|
6457
6629
|
/**
|
|
@@ -6464,7 +6636,7 @@ function TaonMigration(options) {
|
|
|
6464
6636
|
ClassHelpers.setName(constructor, options?.className);
|
|
6465
6637
|
};
|
|
6466
6638
|
}
|
|
6467
|
-
class TaonMigrationOptions extends
|
|
6639
|
+
class TaonMigrationOptions extends DecoratorAbstractOpt {
|
|
6468
6640
|
}
|
|
6469
6641
|
|
|
6470
6642
|
/**
|
|
@@ -6477,7 +6649,7 @@ function TaonProvider(options) {
|
|
|
6477
6649
|
ClassHelpers.setName(constructor, options?.className || constructor.name);
|
|
6478
6650
|
};
|
|
6479
6651
|
}
|
|
6480
|
-
class TaonProviderOptions extends
|
|
6652
|
+
class TaonProviderOptions extends DecoratorAbstractOpt {
|
|
6481
6653
|
}
|
|
6482
6654
|
|
|
6483
6655
|
var Http;
|