taon 21.0.53 → 21.0.55
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/bin/taon +5 -5
- package/bin/taon-debug +5 -5
- package/bin/taon-debug-brk +4 -4
- package/browser/package.json +1 -1
- package/browser-prod/package.json +1 -1
- package/icon-menu-taon.svg +15 -15
- package/lib/build-info._auto-generated_.d.ts +1 -1
- package/lib/build-info._auto-generated_.js +1 -1
- package/lib/package.json +1 -1
- package/lib/ui/index.js +2 -2
- package/lib/ui/taon-admin-mode-configuration/index.js +2 -2
- package/lib-prod/base-classes/base-abstract-entity.js +17 -31
- package/lib-prod/base-classes/base-angular-service.js +83 -55
- package/lib-prod/base-classes/base-class.js +33 -35
- package/lib-prod/base-classes/base-context.js +17 -19
- package/lib-prod/base-classes/base-controller.js +146 -154
- package/lib-prod/base-classes/base-crud-controller.js +250 -221
- package/lib-prod/base-classes/base-custom-repository.js +7 -18
- package/lib-prod/base-classes/base-electron-service.js +49 -0
- package/lib-prod/base-classes/base-entity.js +20 -30
- package/lib-prod/base-classes/base-file-upload.middleware.js +72 -75
- package/lib-prod/base-classes/base-injector.js +176 -194
- package/lib-prod/base-classes/base-middleware.js +8 -5
- package/lib-prod/base-classes/base-migration.js +19 -22
- package/lib-prod/base-classes/base-provider.js +7 -5
- package/lib-prod/base-classes/base-repository.js +601 -573
- package/lib-prod/base-classes/base-subscriber-for-entity.js +143 -152
- package/lib-prod/base-classes/base.js +18 -0
- package/lib-prod/build-info._auto-generated_.js +26 -14
- package/lib-prod/config/controller-config.js +24 -24
- package/lib-prod/config/controller-options.js +2 -5
- package/lib-prod/config/method-config.js +6 -8
- package/lib-prod/config/param-config.js +2 -8
- package/lib-prod/constants.js +29 -25
- package/lib-prod/context-db-migrations.js +328 -324
- package/lib-prod/create-context.js +211 -146
- package/lib-prod/decorators/classes/controller-decorator.js +16 -20
- package/lib-prod/decorators/classes/entity-decorator.js +26 -47
- package/lib-prod/decorators/classes/middleware-decorator.js +14 -24
- package/lib-prod/decorators/classes/migration-decorator.js +13 -22
- package/lib-prod/decorators/classes/provider-decorator.js +13 -23
- package/lib-prod/decorators/classes/repository-decorator.js +13 -22
- package/lib-prod/decorators/classes/subscriber-decorator.js +13 -23
- package/lib-prod/decorators/decorator-abstract-opt.js +1 -4
- package/lib-prod/decorators/http/http-decorators.js +20 -5
- package/lib-prod/decorators/http/http-methods-decorators.js +91 -133
- package/lib-prod/decorators/http/http-params-decorators.js +36 -62
- package/lib-prod/dependency-injection/di-container.js +28 -29
- package/lib-prod/endpoint-context-storage.js +27 -32
- package/lib-prod/endpoint-context.js +2294 -1930
- package/lib-prod/entity-process.js +209 -198
- package/lib-prod/env/env.angular-node-app.js +66 -130
- package/lib-prod/env/env.docs-webapp.js +66 -130
- package/lib-prod/env/env.electron-app.js +66 -130
- package/lib-prod/env/env.mobile-app.js +66 -130
- package/lib-prod/env/env.npm-lib-and-cli-tool.js +66 -130
- package/lib-prod/env/env.vscode-plugin.js +66 -130
- package/lib-prod/env/index.js +6 -6
- package/lib-prod/express-types.js +1 -0
- package/lib-prod/formly/formly.models.js +1 -0
- package/lib-prod/formly/fromly.js +196 -175
- package/lib-prod/formly/type-from-entity.js +45 -52
- package/lib-prod/get-response-value.js +21 -18
- package/lib-prod/global-state/taon-global-state/index.js +6 -5
- package/lib-prod/global-state/taon-global-state/taon-global-state.abstract.context.js +18 -19
- package/lib-prod/global-state/taon-global-state/taon-global-state.constants.js +6 -9
- package/lib-prod/global-state/taon-global-state/taon-global-state.controller.js +40 -46
- package/lib-prod/global-state/taon-global-state/taon-global-state.entity.js +33 -46
- package/lib-prod/global-state/taon-global-state/taon-global-state.middleware.js +10 -20
- package/lib-prod/global-state/taon-global-state/taon-global-state.models.js +43 -33
- package/lib-prod/global-state/taon-global-state/taon-global-state.provider.js +10 -20
- package/lib-prod/global-state/taon-global-state/taon-global-state.repository.js +43 -44
- package/lib-prod/global-state/taon-global-state/taon-global-state.subscriber.js +20 -27
- package/lib-prod/global-state/taon-global-state/taon-global-state.utils.js +10 -10
- package/lib-prod/global-state/taon-transaction-registry/index.js +11 -10
- package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.abstract.context.js +20 -21
- package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.constants.js +4 -7
- package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.controller.js +34 -39
- package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.entity.js +34 -54
- package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.middleware.js +10 -20
- package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.models.js +7 -10
- package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.provider.js +10 -20
- package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.repository.js +29 -34
- package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.subscriber.js +20 -27
- package/lib-prod/global-state/taon-transaction-registry/taon-transaction-registry.utils.js +4 -5
- package/lib-prod/helpers/class-helpers.js +210 -177
- package/lib-prod/helpers/clone-obj.js +16 -20
- package/lib-prod/helpers/taon-helpers.js +132 -114
- package/lib-prod/index._auto-generated_.js +5 -0
- package/lib-prod/index.js +248 -227
- package/lib-prod/inject.js +88 -33
- package/lib-prod/migrations/index.js +2 -1
- package/lib-prod/migrations/migrations_index._auto-generated_.js +3 -0
- package/lib-prod/models.js +72 -103
- package/lib-prod/orm/columns.js +58 -118
- package/lib-prod/orm/index.js +56 -1
- package/lib-prod/package.json +1 -1
- package/lib-prod/realtime/realtime-client.js +188 -186
- package/lib-prod/realtime/realtime-core.js +77 -78
- package/lib-prod/realtime/realtime-server.js +225 -240
- package/lib-prod/realtime/realtime-strategy/index.js +4 -4
- package/lib-prod/realtime/realtime-strategy/realtime-strategy-ipc.js +273 -219
- package/lib-prod/realtime/realtime-strategy/realtime-strategy-mock.js +267 -240
- package/lib-prod/realtime/realtime-strategy/realtime-strategy-socket-io.js +26 -20
- package/lib-prod/realtime/realtime-strategy/realtime-strategy.js +10 -13
- package/lib-prod/realtime/realtime-subs-manager.js +82 -90
- package/lib-prod/realtime/realtime.models.js +2 -0
- package/lib-prod/symbols.js +104 -105
- package/lib-prod/ui/index.js +1 -5
- package/lib-prod/ui/taon-admin-mode-configuration/index.js +1 -5
- package/lib-prod/validators.js +43 -37
- package/lib-prod.split-namespaces.json +32 -86
- package/package.json +1 -1
- package/websql/package.json +1 -1
- package/websql-prod/package.json +1 -1
|
@@ -1,96 +1,88 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
startListenIfNotStarted(realtime) {
|
|
11
|
-
if (this.options.core.ctx.disabledRealtime) {
|
|
12
|
-
console.warn(`[Taon][startListenIfNotStarted] sockets are disabled`);
|
|
13
|
-
return;
|
|
1
|
+
//#endregion
|
|
2
|
+
import { ___NS__isString } from 'tnp-core/lib-prod';
|
|
3
|
+
import { Symbols__NS__REALTIME } from '../symbols';
|
|
4
|
+
//#endregion
|
|
5
|
+
export class RealtimeSubsManager {
|
|
6
|
+
constructor(options) {
|
|
7
|
+
this.options = options;
|
|
8
|
+
this.isListening = false;
|
|
9
|
+
this.observers = [];
|
|
14
10
|
}
|
|
15
|
-
if
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
11
|
+
//#region methods & getters / start listen if not started
|
|
12
|
+
startListenIfNotStarted(realtime) {
|
|
13
|
+
if (this.options.core.ctx.disabledRealtime) {
|
|
14
|
+
console.warn(`[Taon][startListenIfNotStarted] sockets are disabled`);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (!realtime) {
|
|
18
|
+
console.warn(`[Taon][startListenIfNotStarted] invalid socket connection`);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (!this.isListening) {
|
|
22
|
+
// console.info(`[BROWSER]][IPC] subscribe to "${this.options?.roomName}" by sending event: "${subscribeEvent}"`, this.options);
|
|
23
|
+
this.isListening = true;
|
|
24
|
+
if (this.options.customEvent) {
|
|
25
|
+
const subscribeEvent = Symbols__NS__REALTIME.ROOM_SUBSCRIBE_CUSTOM(this.options.core.ctx.contextName);
|
|
26
|
+
// this means: send to current client custom event notification
|
|
27
|
+
realtime.emit(subscribeEvent, this.options.roomName);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
if (___NS__isString(this.options.property)) {
|
|
31
|
+
const subscribeEvent = Symbols__NS__REALTIME.ROOM_SUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(this.options.core.ctx.contextName);
|
|
32
|
+
// this means: send to current client entity property events updates
|
|
33
|
+
realtime.emit(subscribeEvent, this.options.roomName);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
const subscribeEvent = Symbols__NS__REALTIME.ROOM_SUBSCRIBE_ENTITY_UPDATE_EVENTS(this.options.core.ctx.contextName);
|
|
37
|
+
// this means: send to current client entity update events
|
|
38
|
+
realtime.emit(subscribeEvent, this.options.roomName);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// subPath -> SYMBOL - (customevnet|entityupdatebyid){..}{..}
|
|
42
|
+
realtime.on(this.options.roomName, data => {
|
|
43
|
+
this.update(data);
|
|
44
|
+
});
|
|
37
45
|
}
|
|
38
|
-
}
|
|
39
|
-
realtime.on(this.options.roomName, (data) => {
|
|
40
|
-
this.update(data);
|
|
41
|
-
});
|
|
42
46
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
roomName
|
|
71
|
-
);
|
|
72
|
-
} else {
|
|
73
|
-
realtime.emit(
|
|
74
|
-
Symbols__NS__REALTIME.ROOM_UNSUBSCRIBE_ENTITY_UPDATE_EVENTS(
|
|
75
|
-
this.options.core.ctx.contextName
|
|
76
|
-
),
|
|
77
|
-
roomName
|
|
78
|
-
);
|
|
47
|
+
//#endregion
|
|
48
|
+
//#region methods & getters / add observer
|
|
49
|
+
add(observer) {
|
|
50
|
+
// log.info('Add observer')
|
|
51
|
+
this.observers.push(observer);
|
|
52
|
+
}
|
|
53
|
+
//#endregion
|
|
54
|
+
//#region methods & getters / remove observer
|
|
55
|
+
remove(observer) {
|
|
56
|
+
// log.info('Remove observer')
|
|
57
|
+
this.observers = this.observers.filter(obs => obs !== observer);
|
|
58
|
+
if (this.observers.length === 0) {
|
|
59
|
+
// log.info('Emit unsubscribe to server SERVER')
|
|
60
|
+
this.isListening = false;
|
|
61
|
+
const { core, customEvent, roomName, property } = this.options;
|
|
62
|
+
const realtime = core.socketFE;
|
|
63
|
+
if (customEvent) {
|
|
64
|
+
realtime.emit(Symbols__NS__REALTIME.ROOM_UNSUBSCRIBE_CUSTOM(this.options.core.ctx.contextName), roomName);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
if (___NS__isString(property)) {
|
|
68
|
+
realtime.emit(Symbols__NS__REALTIME.ROOM_UNSUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(this.options.core.ctx.contextName), roomName);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
realtime.emit(Symbols__NS__REALTIME.ROOM_UNSUBSCRIBE_ENTITY_UPDATE_EVENTS(this.options.core.ctx.contextName), roomName);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
79
74
|
}
|
|
80
|
-
}
|
|
81
75
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
76
|
+
//#endregion
|
|
77
|
+
//#region methods & getters / update
|
|
78
|
+
update(data) {
|
|
79
|
+
// log.data(`realtime update!!!!! observers=${this.observers?.length} `)
|
|
80
|
+
// console.log('updating', data);
|
|
81
|
+
this.observers.forEach(observer => {
|
|
82
|
+
// console.log(`observer closed: ${observer.closed}`,observer);
|
|
83
|
+
if (!observer.closed) {
|
|
84
|
+
observer.next(data);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}
|
|
93
88
|
}
|
|
94
|
-
export {
|
|
95
|
-
RealtimeSubsManager
|
|
96
|
-
};
|
package/lib-prod/symbols.js
CHANGED
|
@@ -1,109 +1,108 @@
|
|
|
1
|
-
import { OrignalClassKey } from
|
|
2
|
-
import { ___NS__camelCase } from
|
|
3
|
-
import { SYMBOL } from
|
|
1
|
+
import { OrignalClassKey } from 'taon-typeorm/lib-prod';
|
|
2
|
+
import { ___NS__camelCase } from 'tnp-core/lib-prod';
|
|
3
|
+
import { SYMBOL } from 'typescript-class-helpers/lib-prod';
|
|
4
|
+
/**
|
|
5
|
+
* for backendSocket.in(ROOM_NAME).emit(EVENT)
|
|
6
|
+
*
|
|
7
|
+
* Room names are uniqe..
|
|
8
|
+
* here I am limiting number of event for clients.
|
|
9
|
+
*/
|
|
4
10
|
class Realtime {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
11
|
+
constructor() {
|
|
12
|
+
this.KEYroomSubscribe = `roomSubscribe`;
|
|
13
|
+
this.KEYroomUnsubscribe = `roomUnsubscribe`;
|
|
14
|
+
//#endregion
|
|
15
|
+
}
|
|
16
|
+
NAMESPACE(contextName) {
|
|
17
|
+
return `${contextName}-taonRealtimeNsp`;
|
|
18
|
+
}
|
|
19
|
+
TABLE_CHANGE(contextName, tableName) {
|
|
20
|
+
return `${contextName}:listentablename${tableName}`;
|
|
21
|
+
}
|
|
22
|
+
// /**
|
|
23
|
+
// * TODO use it or not?
|
|
24
|
+
// * @deprecated
|
|
25
|
+
// */
|
|
26
|
+
// ROOM_NAME_SUBSCRIBER_EVENT(
|
|
27
|
+
// contextName: string,
|
|
28
|
+
// className: string,
|
|
29
|
+
// propertyName: string,
|
|
30
|
+
// ) {
|
|
31
|
+
// return `${contextName}:room${___NS__camelCase(className)}${propertyName}`.toLowerCase();
|
|
32
|
+
// }
|
|
33
|
+
//#region custom events in rooms
|
|
34
|
+
ROOM_NAME_CUSTOM(contextName, customEvent) {
|
|
35
|
+
return `${contextName}:CustomRoomEvent${customEvent}`;
|
|
36
|
+
}
|
|
37
|
+
ROOM_SUBSCRIBE_CUSTOM(contextName) {
|
|
38
|
+
return `${contextName}:${this.KEYroomSubscribe}CustomRoomEvent`;
|
|
39
|
+
}
|
|
40
|
+
ROOM_UNSUBSCRIBE_CUSTOM(contextName) {
|
|
41
|
+
return `${contextName}:${this.KEYroomUnsubscribe}CustomRoomEvent`;
|
|
42
|
+
}
|
|
43
|
+
//#endregion
|
|
44
|
+
//#region entity events
|
|
45
|
+
ROOM_NAME_UPDATE_ENTITY(contextName, className, entityId) {
|
|
46
|
+
return `${contextName}:room${___NS__camelCase(className)}${entityId}`.toLowerCase();
|
|
47
|
+
}
|
|
48
|
+
ROOM_SUBSCRIBE_ENTITY_UPDATE_EVENTS(contextName) {
|
|
49
|
+
return `${contextName}:${this.KEYroomSubscribe}EntityEvents`;
|
|
50
|
+
}
|
|
51
|
+
ROOM_UNSUBSCRIBE_ENTITY_UPDATE_EVENTS(contextName) {
|
|
52
|
+
return `${contextName}:${this.KEYroomUnsubscribe}EntityEvents`;
|
|
53
|
+
}
|
|
54
|
+
//#endregion
|
|
55
|
+
//#region entity property events
|
|
56
|
+
ROOM_NAME_UPDATE_ENTITY_PROPERTY(contextName, className, property, entityId) {
|
|
57
|
+
return `${contextName}:room${___NS__camelCase(className)}${___NS__camelCase(property)}${entityId}`.toLowerCase();
|
|
58
|
+
}
|
|
59
|
+
ROOM_SUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(contextName) {
|
|
60
|
+
return `${contextName}:${this.KEYroomSubscribe}EntityPropertyEvents`;
|
|
61
|
+
}
|
|
62
|
+
ROOM_UNSUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(contextName) {
|
|
63
|
+
return `${contextName}:${this.KEYroomUnsubscribe}EntityPropertyEvents`;
|
|
64
|
+
}
|
|
57
65
|
}
|
|
58
|
-
|
|
59
|
-
const
|
|
60
|
-
const
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
const
|
|
64
|
-
const
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
66
|
+
//namespace Symbols
|
|
67
|
+
export const Symbols__NS__ctxInClassOrClassObj = Symbol();
|
|
68
|
+
export const Symbols__NS__classNameStaticProperty = SYMBOL.ClassNameStaticProperty;
|
|
69
|
+
export const Symbols__NS__fullClassNameStaticProperty = `$$fullclassName$$`;
|
|
70
|
+
export const Symbols__NS__orignalClass = OrignalClassKey;
|
|
71
|
+
export const Symbols__NS__orignalClassClonesObj = `$$originalClassClonesObj$$`;
|
|
72
|
+
export const Symbols__NS__classMethodsNames = `$$classMethodsNames$$`;
|
|
73
|
+
export const Symbols__NS__REALTIME = new Realtime();
|
|
74
|
+
export const Symbols__NS__metadata = {
|
|
75
|
+
className: `class:realname`,
|
|
76
|
+
options: {
|
|
77
|
+
controller: `controller:options`,
|
|
78
|
+
entity: `entity:options`,
|
|
79
|
+
repository: `repository:options`,
|
|
80
|
+
provider: `provider:options`,
|
|
81
|
+
subscriber: `subscriber:options`,
|
|
82
|
+
migration: `migration:options`,
|
|
83
|
+
},
|
|
75
84
|
};
|
|
76
|
-
const Symbols__NS__old = {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
};
|
|
99
|
-
export {
|
|
100
|
-
Symbols__NS__REALTIME,
|
|
101
|
-
Symbols__NS__classMethodsNames,
|
|
102
|
-
Symbols__NS__classNameStaticProperty,
|
|
103
|
-
Symbols__NS__ctxInClassOrClassObj,
|
|
104
|
-
Symbols__NS__fullClassNameStaticProperty,
|
|
105
|
-
Symbols__NS__metadata,
|
|
106
|
-
Symbols__NS__old,
|
|
107
|
-
Symbols__NS__orignalClass,
|
|
108
|
-
Symbols__NS__orignalClassClonesObj
|
|
85
|
+
export const Symbols__NS__old = {
|
|
86
|
+
HAS_TABLE_IN_DB: Symbol(),
|
|
87
|
+
MDC_KEY: `modeldataconfig`,
|
|
88
|
+
WEBSQL_REST_PROGRESS_FUN: Symbol(),
|
|
89
|
+
WEBSQL_REST_PROGRESS_FUN_START: Symbol(),
|
|
90
|
+
WEBSQL_REST_PROGRESS_FUN_DONE: Symbol(),
|
|
91
|
+
WEBSQL_REST_PROGRESS_TIMEOUT: Symbol(),
|
|
92
|
+
X_TOTAL_COUNT: `x-total-count`,
|
|
93
|
+
CIRCURAL_OBJECTS_MAP_BODY: `circuralmapbody`,
|
|
94
|
+
CIRCURAL_OBJECTS_MAP_QUERY_PARAM: `circuralmapbody`,
|
|
95
|
+
MAPPING_CONFIG_HEADER: `mappingheader`,
|
|
96
|
+
MAPPING_CONFIG_HEADER_BODY_PARAMS: `mhbodyparams`,
|
|
97
|
+
MAPPING_CONFIG_HEADER_QUERY_PARAMS: `mhqueryparams`,
|
|
98
|
+
ENDPOINT_META_CONFIG: `ng2_rest_endpoint_config`,
|
|
99
|
+
CLASS_DECORATOR_CONTEXT: `$$ng2_rest_class_context`,
|
|
100
|
+
SOCKET_MSG: `socketmessageng2rest`,
|
|
101
|
+
ANGULAR: {
|
|
102
|
+
INPUT_NAMES: Symbol(),
|
|
103
|
+
},
|
|
104
|
+
ERROR_MESSAGES: {
|
|
105
|
+
CLASS_NAME_MATCH: `Please check if your "class name" matches @Controller( className ) or @Entity( className )`,
|
|
106
|
+
},
|
|
109
107
|
};
|
|
108
|
+
//end of namespace Symbols
|
package/lib-prod/ui/index.js
CHANGED
package/lib-prod/validators.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import { ___NS__isArray, ___NS__isFunction, ___NS__isUndefined } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { ___NS__isArray, ___NS__isFunction, ___NS__isUndefined } from 'tnp-core/lib-prod';
|
|
2
|
+
//namespace Validators
|
|
3
|
+
//#region vlidate class name
|
|
4
|
+
export const Validators__NS__classNameVlidation = (className, target) => {
|
|
5
|
+
setTimeout(() => {
|
|
6
|
+
// console.log(`check after timeout ${className} , production mode: ${FrameworkContext.isProductionMode}`)
|
|
7
|
+
if (___NS__isUndefined(className)) {
|
|
8
|
+
throw `[Taon]
|
|
6
9
|
Please provide "className" property for each Controller and Entity:
|
|
7
10
|
|
|
8
11
|
@Taon.Controller({ className: 'MyExampleCtrl' })
|
|
@@ -19,19 +22,21 @@ const Validators__NS__classNameVlidation = (className, target) => {
|
|
|
19
22
|
Functions/Classes names -this is only solution to preserve classes names.
|
|
20
23
|
|
|
21
24
|
`;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
return ___NS__isUndefined(className) ? target.name : className;
|
|
25
28
|
};
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
//#endregion
|
|
30
|
+
//#region validate method config
|
|
31
|
+
export const Validators__NS__checkIfMethodsWithReponseTYpeAlowed = (methods, current) => {
|
|
32
|
+
const defaultResponseType = 'text or JSON';
|
|
33
|
+
if (!current.responseType) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
for (let index = 0; index < methods.length; index++) {
|
|
37
|
+
const m = methods[index];
|
|
38
|
+
if (m.path === current.path && m.responseType !== current.responseType) {
|
|
39
|
+
throw new Error(`
|
|
35
40
|
[taon] you can have 2 methods with same path but differetn reponseType-s
|
|
36
41
|
|
|
37
42
|
${m.methodName}( ... path: ${m.path} ) -> responseType: ${m.responseType || defaultResponseType}
|
|
@@ -40,35 +45,36 @@ const Validators__NS__checkIfMethodsWithReponseTYpeAlowed = (methods, current) =
|
|
|
40
45
|
Please change path name on of the methods.
|
|
41
46
|
|
|
42
47
|
`);
|
|
48
|
+
}
|
|
43
49
|
}
|
|
44
|
-
}
|
|
45
50
|
};
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
51
|
+
//#endregion
|
|
52
|
+
//#region validate class functions
|
|
53
|
+
// TODO
|
|
54
|
+
export const Validators__NS__validateClassFunctions = (controllers, entities, proviers, repositories) => {
|
|
55
|
+
if (___NS__isArray(controllers) &&
|
|
56
|
+
controllers.filter(f => !___NS__isFunction(f)).length > 0) {
|
|
57
|
+
console.error('controllers', controllers);
|
|
58
|
+
throw `
|
|
50
59
|
|
|
51
60
|
Incorect value for property "controllers" inside Taon.Init(...)
|
|
52
61
|
|
|
53
62
|
`;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
63
|
+
}
|
|
64
|
+
if (___NS__isArray(entities) &&
|
|
65
|
+
entities.filter(f => !___NS__isFunction(f)).length > 0) {
|
|
66
|
+
console.error('entites', entities);
|
|
67
|
+
throw `
|
|
58
68
|
|
|
59
69
|
Incorect value for property "entities" inside Taon.Init(...)
|
|
60
70
|
|
|
61
71
|
`;
|
|
62
|
-
|
|
63
|
-
};
|
|
64
|
-
const Validators__NS__preventUndefinedModel = (model, id) => {
|
|
65
|
-
if (___NS__isUndefined(model)) {
|
|
66
|
-
throw `Bad update by id, config, id: ${id}`;
|
|
67
|
-
}
|
|
72
|
+
}
|
|
68
73
|
};
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
+
//#endregion
|
|
75
|
+
export const Validators__NS__preventUndefinedModel = (model, id) => {
|
|
76
|
+
if (___NS__isUndefined(model)) {
|
|
77
|
+
throw `Bad update by id, config, id: ${id}`;
|
|
78
|
+
}
|
|
74
79
|
};
|
|
80
|
+
//end of namespace Validators
|