typescript-class-helpers 1.0.41 → 1.0.47
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/app.d.ts +0 -0
- package/app.js +2 -0
- package/app.js.map +1 -0
- package/browser/README.md +24 -0
- package/browser/esm2020/lib/classname.mjs +164 -0
- package/browser/esm2020/lib/describe-class.mjs +64 -0
- package/browser/esm2020/lib/index.mjs +141 -0
- package/browser/esm2020/lib/models.mjs +23 -0
- package/browser/esm2020/lib/set-class-name.mjs +96 -0
- package/browser/esm2020/lib/storage.mjs +18 -0
- package/browser/esm2020/lib/symbols.mjs +11 -0
- package/browser/esm2020/public-api.mjs +2 -0
- package/browser/esm2020/typescript-class-helpers.mjs +5 -0
- package/browser/fesm2015/typescript-class-helpers.mjs +503 -0
- package/browser/fesm2015/typescript-class-helpers.mjs.map +1 -0
- package/browser/fesm2020/typescript-class-helpers.mjs +503 -0
- package/browser/fesm2020/typescript-class-helpers.mjs.map +1 -0
- package/browser/{classname.d.ts → lib/classname.d.ts} +0 -0
- package/browser/{describe-class.d.ts → lib/describe-class.d.ts} +0 -0
- package/browser/{index.d.ts → lib/index.d.ts} +0 -0
- package/browser/{models.d.ts → lib/models.d.ts} +0 -0
- package/browser/{set-class-name.d.ts → lib/set-class-name.d.ts} +0 -0
- package/browser/{storage.d.ts → lib/storage.d.ts} +0 -0
- package/browser/{symbols.d.ts → lib/symbols.d.ts} +0 -0
- package/browser/package.json +31 -0
- package/browser/public-api.d.ts +1 -0
- package/browser/typescript-class-helpers.d.ts +5 -0
- package/client/README.md +24 -0
- package/client/esm2020/lib/classname.mjs +164 -0
- package/client/esm2020/lib/describe-class.mjs +64 -0
- package/client/esm2020/lib/index.mjs +141 -0
- package/client/esm2020/lib/models.mjs +23 -0
- package/client/esm2020/lib/set-class-name.mjs +96 -0
- package/client/esm2020/lib/storage.mjs +18 -0
- package/client/esm2020/lib/symbols.mjs +11 -0
- package/client/esm2020/public-api.mjs +2 -0
- package/client/esm2020/typescript-class-helpers.mjs +5 -0
- package/client/fesm2015/typescript-class-helpers.mjs +503 -0
- package/client/fesm2015/typescript-class-helpers.mjs.map +1 -0
- package/client/fesm2020/typescript-class-helpers.mjs +503 -0
- package/client/fesm2020/typescript-class-helpers.mjs.map +1 -0
- package/{classname.d.ts → client/lib/classname.d.ts} +0 -0
- package/client/{describe-class.d.ts → lib/describe-class.d.ts} +0 -0
- package/client/{index.d.ts → lib/index.d.ts} +0 -0
- package/client/{models.d.ts → lib/models.d.ts} +0 -0
- package/client/{set-class-name.d.ts → lib/set-class-name.d.ts} +0 -0
- package/client/{storage.d.ts → lib/storage.d.ts} +0 -0
- package/client/{symbols.d.ts → lib/symbols.d.ts} +0 -0
- package/client/package.json +25 -24
- package/client/public-api.d.ts +1 -0
- package/client/typescript-class-helpers.d.ts +5 -0
- package/index.d.ts +1 -32
- package/index.js +3 -148
- package/index.js.map +1 -1
- package/{client → lib}/classname.d.ts +0 -0
- package/{classname.js → lib/classname.js} +18 -5
- package/lib/classname.js.map +1 -0
- package/{describe-class.d.ts → lib/describe-class.d.ts} +0 -0
- package/{describe-class.js → lib/describe-class.js} +17 -3
- package/lib/describe-class.js.map +1 -0
- package/{helpers-messages.d.ts → lib/helpers-messages.d.ts} +0 -0
- package/{helpers-messages.js → lib/helpers-messages.js} +2 -1
- package/lib/helpers-messages.js.map +1 -0
- package/lib/index.d.ts +32 -0
- package/lib/index.js +154 -0
- package/lib/index.js.map +1 -0
- package/{models.d.ts → lib/models.d.ts} +0 -0
- package/{models.js → lib/models.js} +3 -1
- package/lib/models.js.map +1 -0
- package/{set-class-name.d.ts → lib/set-class-name.d.ts} +0 -0
- package/{set-class-name.js → lib/set-class-name.js} +8 -2
- package/lib/set-class-name.js.map +1 -0
- package/{storage.d.ts → lib/storage.d.ts} +0 -0
- package/{storage.js → lib/storage.js} +2 -1
- package/lib/storage.js.map +1 -0
- package/{symbols.d.ts → lib/symbols.d.ts} +0 -0
- package/{symbols.js → lib/symbols.js} +2 -1
- package/lib/symbols.js.map +1 -0
- package/package.json +4 -4
- package/package.json_devDependencies.json +25 -25
- package/package.json_tnp.json +2 -1
- package/package.json_tnp.json5 +37 -0
- package/tmp-environment.json +78 -112
- package/browser/classname.js +0 -152
- package/browser/classname.js.map +0 -1
- package/browser/describe-class.js +0 -51
- package/browser/describe-class.js.map +0 -1
- package/browser/es5/classname.js +0 -162
- package/browser/es5/describe-class.js +0 -66
- package/browser/es5/helpers-messages.js +0 -42
- package/browser/es5/index.js +0 -211
- package/browser/es5/models.js +0 -36
- package/browser/es5/set-class-name.js +0 -112
- package/browser/es5/storage.js +0 -27
- package/browser/es5/symbols.js +0 -16
- package/browser/helpers-messages.d.ts +0 -18
- package/browser/helpers-messages.js +0 -26
- package/browser/helpers-messages.js.map +0 -1
- package/browser/index.js +0 -139
- package/browser/index.js.map +0 -1
- package/browser/models.js +0 -22
- package/browser/models.js.map +0 -1
- package/browser/set-class-name.js +0 -91
- package/browser/set-class-name.js.map +0 -1
- package/browser/storage.js +0 -18
- package/browser/storage.js.map +0 -1
- package/browser/symbols.js +0 -11
- package/browser/symbols.js.map +0 -1
- package/classname.js.map +0 -1
- package/client/classname.js +0 -152
- package/client/classname.js.map +0 -1
- package/client/describe-class.js +0 -51
- package/client/describe-class.js.map +0 -1
- package/client/es5/classname.js +0 -162
- package/client/es5/describe-class.js +0 -66
- package/client/es5/helpers-messages.js +0 -42
- package/client/es5/index.js +0 -211
- package/client/es5/models.js +0 -36
- package/client/es5/set-class-name.js +0 -112
- package/client/es5/storage.js +0 -27
- package/client/es5/symbols.js +0 -16
- package/client/helpers-messages.d.ts +0 -18
- package/client/helpers-messages.js +0 -26
- package/client/helpers-messages.js.map +0 -1
- package/client/index.js +0 -139
- package/client/index.js.map +0 -1
- package/client/models.js +0 -22
- package/client/models.js.map +0 -1
- package/client/set-class-name.js +0 -91
- package/client/set-class-name.js.map +0 -1
- package/client/storage.js +0 -18
- package/client/storage.js.map +0 -1
- package/client/symbols.js +0 -11
- package/client/symbols.js.map +0 -1
- package/describe-class.js.map +0 -1
- package/helpers-messages.js.map +0 -1
- package/models.js.map +0 -1
- package/set-class-name.js.map +0 -1
- package/storage.js.map +0 -1
- package/symbols.js.map +0 -1
package/app.d.ts
ADDED
|
File without changes
|
package/app.js
ADDED
package/app.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# MyLib
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
|
|
8
|
+
> Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
+
|
|
10
|
+
## Build
|
|
11
|
+
|
|
12
|
+
Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
+
|
|
14
|
+
## Publishing
|
|
15
|
+
|
|
16
|
+
After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
|
|
17
|
+
|
|
18
|
+
## Running unit tests
|
|
19
|
+
|
|
20
|
+
Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
+
|
|
22
|
+
## Further help
|
|
23
|
+
|
|
24
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { _ } from 'tnp-core/browser';
|
|
2
|
+
import { Models } from './models';
|
|
3
|
+
import { SYMBOL } from './symbols';
|
|
4
|
+
import { Helpers } from './index';
|
|
5
|
+
import { Helpers as ConfigHelpers } from 'tnp-core/browser';
|
|
6
|
+
import { getStorage } from './storage';
|
|
7
|
+
import { setClassName } from './set-class-name';
|
|
8
|
+
function getClasses() {
|
|
9
|
+
const s = getStorage();
|
|
10
|
+
return s[SYMBOL.CLASSES];
|
|
11
|
+
}
|
|
12
|
+
export var CLASSNAME;
|
|
13
|
+
(function (CLASSNAME_1) {
|
|
14
|
+
function getClassConfig(target, configs = []) {
|
|
15
|
+
if (!_.isFunction(target)) {
|
|
16
|
+
throw `[typescript-class-helper][getClassConfig] Cannot get class config from: ${target}`;
|
|
17
|
+
}
|
|
18
|
+
const meta = SYMBOL.CLASS_META_CONFIG;
|
|
19
|
+
let config;
|
|
20
|
+
// @ts-ignore
|
|
21
|
+
if (!target[meta]) {
|
|
22
|
+
config = new Models.ClassConfig();
|
|
23
|
+
config.classReference = target;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
// @ts-ignore
|
|
27
|
+
config = target[meta];
|
|
28
|
+
var parentClass = Object.getPrototypeOf(target);
|
|
29
|
+
if (config.classReference === parentClass) {
|
|
30
|
+
const childConfig = new Models.ClassConfig();
|
|
31
|
+
childConfig.vParent = config;
|
|
32
|
+
childConfig.classReference = target;
|
|
33
|
+
// @ts-ignore
|
|
34
|
+
config.vChildren.push(childConfig);
|
|
35
|
+
config = childConfig;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// @ts-ignore
|
|
39
|
+
target[meta] = config;
|
|
40
|
+
configs.push(config);
|
|
41
|
+
return (_.isFunction(parentClass) && parentClass.name !== '') ? getClassConfig(parentClass, configs) : configs;
|
|
42
|
+
}
|
|
43
|
+
CLASSNAME_1.getClassConfig = getClassConfig;
|
|
44
|
+
/**
|
|
45
|
+
* PLEASE PROVIDE NAME AS TYPED STRING, NOT VARIABLE
|
|
46
|
+
* Decorator requred for production mode
|
|
47
|
+
* @param name Name of class
|
|
48
|
+
*/
|
|
49
|
+
function CLASSNAME(className, options) {
|
|
50
|
+
return function (target) {
|
|
51
|
+
// console.log(`CLASSNAME Inited ${className}`)
|
|
52
|
+
return setClassName(target, className, options);
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
CLASSNAME_1.CLASSNAME = CLASSNAME;
|
|
56
|
+
function getClassName(target, production = false) {
|
|
57
|
+
if (_.isString(target)) {
|
|
58
|
+
console.trace(target);
|
|
59
|
+
console.warn(`[typescript-class-helpers][getClassName] target is string: '${target}', produciton: ${production}`);
|
|
60
|
+
return target;
|
|
61
|
+
}
|
|
62
|
+
if (!_.isFunction(target)) {
|
|
63
|
+
console.trace(target);
|
|
64
|
+
console.error(`[typescript-class-helpers][getClassName] target is not a class`);
|
|
65
|
+
return void 0;
|
|
66
|
+
}
|
|
67
|
+
// @ts-ignore
|
|
68
|
+
if (ConfigHelpers.isBrowser && _.isString(target[SYMBOL.CLASSNAMEKEYBROWSER])) {
|
|
69
|
+
// @ts-ignore
|
|
70
|
+
return target[SYMBOL.CLASSNAMEKEYBROWSER];
|
|
71
|
+
}
|
|
72
|
+
// @ts-ignore
|
|
73
|
+
if (target[SYMBOL.CLASSNAMEKEY]) {
|
|
74
|
+
// @ts-ignore
|
|
75
|
+
return target[SYMBOL.CLASSNAMEKEY];
|
|
76
|
+
}
|
|
77
|
+
if (production) {
|
|
78
|
+
console.error(`[typescript-class-helpers][getClassName(...)](PRODUCTION MODE ERROR)
|
|
79
|
+
Please use decoartor @CLASSNAME for each entity or controller
|
|
80
|
+
This is preventing class name problem in minified code.
|
|
81
|
+
|
|
82
|
+
import { CLASS } from 'typescript-class-helpers';
|
|
83
|
+
|
|
84
|
+
@CLASS.NAME('ExampleClass')
|
|
85
|
+
class ExampleClass {
|
|
86
|
+
...
|
|
87
|
+
}
|
|
88
|
+
`, target);
|
|
89
|
+
}
|
|
90
|
+
return target.name;
|
|
91
|
+
}
|
|
92
|
+
CLASSNAME_1.getClassName = getClassName;
|
|
93
|
+
// @ts-ignore
|
|
94
|
+
function getObjectIndexPropertyValue(obj) {
|
|
95
|
+
const className = Helpers.getNameFromObject(obj);
|
|
96
|
+
// console.log('className',className)
|
|
97
|
+
let c = getClasses().find(c => c.className === className);
|
|
98
|
+
// console.log('c',c)
|
|
99
|
+
if (c) {
|
|
100
|
+
return c.uniqueKey;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
CLASSNAME_1.getObjectIndexPropertyValue = getObjectIndexPropertyValue;
|
|
104
|
+
// @ts-ignore
|
|
105
|
+
function getClassFamilyByClassName(className) {
|
|
106
|
+
let c = getClasses().find(c => c.className === className);
|
|
107
|
+
// console.log('getClasses()', getClasses())
|
|
108
|
+
if (c) {
|
|
109
|
+
return c.classFamily;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
CLASSNAME_1.getClassFamilyByClassName = getClassFamilyByClassName;
|
|
113
|
+
// @ts-ignore
|
|
114
|
+
function getObjectClassFamily(obj) {
|
|
115
|
+
const className = Helpers.getNameFromObject(obj);
|
|
116
|
+
// console.log('className',className)
|
|
117
|
+
let c = getClasses().find(c => c.className === className);
|
|
118
|
+
// console.log('c',c)
|
|
119
|
+
if (c) {
|
|
120
|
+
return c.classFamily;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
CLASSNAME_1.getObjectClassFamily = getObjectClassFamily;
|
|
124
|
+
function getObjectIndexValue(obj) {
|
|
125
|
+
const className = Helpers.getNameFromObject(obj);
|
|
126
|
+
// console.log('className',className)
|
|
127
|
+
let c = getClasses().find(c => c.className === className);
|
|
128
|
+
// console.log('c',c)
|
|
129
|
+
if (c && _.isString(c.uniqueKey)) {
|
|
130
|
+
return obj[c.uniqueKey];
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
CLASSNAME_1.getObjectIndexValue = getObjectIndexValue;
|
|
134
|
+
function getClassBy(className) {
|
|
135
|
+
let res;
|
|
136
|
+
if (Array.isArray(className)) {
|
|
137
|
+
if (className.length !== 1) {
|
|
138
|
+
throw `Mapping error... please use proper class names:
|
|
139
|
+
{
|
|
140
|
+
propertyObject: 'MyClassName',
|
|
141
|
+
propertyWithArray: ['MyClassName']
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
`;
|
|
145
|
+
}
|
|
146
|
+
className = className[0];
|
|
147
|
+
}
|
|
148
|
+
if (typeof className === 'function') { // TODO QUICK_FIX
|
|
149
|
+
res = className;
|
|
150
|
+
}
|
|
151
|
+
if (className === 'Date') {
|
|
152
|
+
res = Date;
|
|
153
|
+
}
|
|
154
|
+
let c = getClasses().find(c => c.className === className);
|
|
155
|
+
if (c) {
|
|
156
|
+
res = c.target;
|
|
157
|
+
}
|
|
158
|
+
// console.log(`getClassBy "${className} return \n\n ${res} \n\n`)
|
|
159
|
+
// @ts-ignore
|
|
160
|
+
return res;
|
|
161
|
+
}
|
|
162
|
+
CLASSNAME_1.getClassBy = getClassBy;
|
|
163
|
+
})(CLASSNAME || (CLASSNAME = {}));
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3NuYW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS90eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvcHJvamVjdHMvdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3NyYy9saWIvY2xhc3NuYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLEVBQUUsT0FBTyxJQUFJLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhELFNBQVMsVUFBVTtJQUNqQixNQUFNLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQztJQUN2QixPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFRLENBQUM7QUFDbEMsQ0FBQztBQUVELE1BQU0sS0FBVyxTQUFTLENBZ0t6QjtBQWhLRCxXQUFpQixXQUFTO0lBRXhCLFNBQ0UsY0FBYyxDQUFDLE1BQWdCLEVBQUUsVUFBZ0MsRUFBRTtRQUNuRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN6QixNQUFNLDJFQUEyRSxNQUFNLEVBQUUsQ0FBQTtTQUMxRjtRQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztRQUN0QyxJQUFJLE1BQTBCLENBQUM7UUFFL0IsYUFBYTtRQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVB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QWhLZ0IsU0FBUyxLQUFULFNBQVMsUUFnS3pCIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmltcG9ydCB7IF8gfSBmcm9tICd0bnAtY29yZS9icm93c2VyJztcbmltcG9ydCB7IE1vZGVscyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IFNZTUJPTCB9IGZyb20gJy4vc3ltYm9scyc7XG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAnLi9pbmRleCc7XG5pbXBvcnQgeyBIZWxwZXJzIGFzIENvbmZpZ0hlbHBlcnMgfSBmcm9tICd0bnAtY29yZS9icm93c2VyJztcbmltcG9ydCB7IGdldFN0b3JhZ2UgfSBmcm9tICcuL3N0b3JhZ2UnO1xuaW1wb3J0IHsgc2V0Q2xhc3NOYW1lIH0gZnJvbSAnLi9zZXQtY2xhc3MtbmFtZSc7XG5cbmZ1bmN0aW9uIGdldENsYXNzZXMoKTogTW9kZWxzLkNsYXNzTWV0YVtdIHtcbiAgY29uc3QgcyA9IGdldFN0b3JhZ2UoKTtcbiAgcmV0dXJuIHNbU1lNQk9MLkNMQVNTRVNdIGFzIGFueTtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBDTEFTU05BTUUge1xuXG4gIGV4cG9ydCBmdW5jdGlvblxuICAgIGdldENsYXNzQ29uZmlnKHRhcmdldDogRnVuY3Rpb24sIGNvbmZpZ3M6IE1vZGVscy5DbGFzc0NvbmZpZ1tdID0gW10pOiBNb2RlbHMuQ2xhc3NDb25maWdbXSB7XG4gICAgaWYgKCFfLmlzRnVuY3Rpb24odGFyZ2V0KSkge1xuICAgICAgdGhyb3cgYFt0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcl1bZ2V0Q2xhc3NDb25maWddIENhbm5vdCBnZXQgY2xhc3MgY29uZmlnIGZyb206ICR7dGFyZ2V0fWBcbiAgICB9XG5cbiAgICBjb25zdCBtZXRhID0gU1lNQk9MLkNMQVNTX01FVEFfQ09ORklHO1xuICAgIGxldCBjb25maWc6IE1vZGVscy5DbGFzc0NvbmZpZztcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoIXRhcmdldFttZXRhXSkge1xuICAgICAgY29uZmlnID0gbmV3IE1vZGVscy5DbGFzc0NvbmZpZygpO1xuICAgICAgY29uZmlnLmNsYXNzUmVmZXJlbmNlID0gdGFyZ2V0O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25maWcgPSB0YXJnZXRbbWV0YV07XG4gICAgICB2YXIgcGFyZW50Q2xhc3MgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGFyZ2V0KVxuICAgICAgaWYgKGNvbmZpZy5jbGFzc1JlZmVyZW5jZSA9PT0gcGFyZW50Q2xhc3MpIHtcbiAgICAgICAgY29uc3QgY2hpbGRDb25maWcgPSBuZXcgTW9kZWxzLkNsYXNzQ29uZmlnKCk7XG4gICAgICAgIGNoaWxkQ29uZmlnLnZQYXJlbnQgPSBjb25maWc7XG4gICAgICAgIGNoaWxkQ29uZmlnLmNsYXNzUmVmZXJlbmNlID0gdGFyZ2V0O1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGNvbmZpZy52Q2hpbGRyZW4ucHVzaChjaGlsZENvbmZpZylcbiAgICAgICAgY29uZmlnID0gY2hpbGRDb25maWc7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0YXJnZXRbbWV0YV0gPSBjb25maWc7XG4gICAgY29uZmlncy5wdXNoKGNvbmZpZyk7XG4gICAgcmV0dXJuIChfLmlzRnVuY3Rpb24ocGFyZW50Q2xhc3MpICYmIHBhcmVudENsYXNzLm5hbWUgIT09ICcnKSA/IGdldENsYXNzQ29uZmlnKHBhcmVudENsYXNzLCBjb25maWdzKSA6IGNvbmZpZ3M7XG4gIH1cblxuXG5cblxuICAvKipcbiAgICogUExFQVNFIFBST1ZJREUgTkFNRSBBUyBUWVBFRCBTVFJJTkcsIE5PVCBWQVJJQUJMRVxuICAgKiBEZWNvcmF0b3IgcmVxdXJlZCBmb3IgcHJvZHVjdGlvbiBtb2RlXG4gICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgY2xhc3NcbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBDTEFTU05BTUUoY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IE1vZGVscy5DTEFTU05BTUVPcHRpb25zKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IEZ1bmN0aW9uKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhgQ0xBU1NOQU1FIEluaXRlZCAke2NsYXNzTmFtZX1gKVxuICAgICAgcmV0dXJuIHNldENsYXNzTmFtZSh0YXJnZXQsIGNsYXNzTmFtZSwgb3B0aW9ucyk7XG4gICAgfSBhcyBhbnk7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0Q2xhc3NOYW1lKHRhcmdldDogRnVuY3Rpb24sIHByb2R1Y3Rpb24gPSBmYWxzZSkge1xuICAgIGlmIChfLmlzU3RyaW5nKHRhcmdldCkpIHtcbiAgICAgIGNvbnNvbGUudHJhY2UodGFyZ2V0KTtcbiAgICAgIGNvbnNvbGUud2FybihgW3R5cGVzY3JpcHQtY2xhc3MtaGVscGVyc11bZ2V0Q2xhc3NOYW1lXSB0YXJnZXQgaXMgc3RyaW5nOiAnJHt0YXJnZXR9JywgcHJvZHVjaXRvbjogJHtwcm9kdWN0aW9ufWApXG4gICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH1cbiAgICBpZiAoIV8uaXNGdW5jdGlvbih0YXJnZXQpKSB7XG4gICAgICBjb25zb2xlLnRyYWNlKHRhcmdldCk7XG4gICAgICBjb25zb2xlLmVycm9yKGBbdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzXVtnZXRDbGFzc05hbWVdIHRhcmdldCBpcyBub3QgYSBjbGFzc2ApXG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoQ29uZmlnSGVscGVycy5pc0Jyb3dzZXIgJiYgXy5pc1N0cmluZyh0YXJnZXRbU1lNQk9MLkNMQVNTTkFNRUtFWUJST1dTRVJdKSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIHRhcmdldFtTWU1CT0wuQ0xBU1NOQU1FS0VZQlJPV1NFUl07XG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAodGFyZ2V0W1NZTUJPTC5DTEFTU05BTUVLRVldKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gdGFyZ2V0W1NZTUJPTC5DTEFTU05BTUVLRVldO1xuICAgIH1cbiAgICBpZiAocHJvZHVjdGlvbikge1xuICAgICAgY29uc29sZS5lcnJvcihgW3R5cGVzY3JpcHQtY2xhc3MtaGVscGVyc11bZ2V0Q2xhc3NOYW1lKC4uLildKFBST0RVQ1RJT04gTU9ERSBFUlJPUilcbiAgICAgICAgICAgICAgUGxlYXNlIHVzZSBkZWNvYXJ0b3IgQENMQVNTTkFNRSBmb3IgZWFjaCBlbnRpdHkgb3IgY29udHJvbGxlclxuICAgICAgICAgICAgICBUaGlzIGlzIHByZXZlbnRpbmcgY2xhc3MgbmFtZSBwcm9ibGVtIGluIG1pbmlmaWVkIGNvZGUuXG5cbiAgICAgICAgICAgICAgaW1wb3J0IHsgQ0xBU1MgfSBmcm9tICd0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMnO1xuXG4gICAgICAgICAgICAgIEBDTEFTUy5OQU1FKCdFeGFtcGxlQ2xhc3MnKVxuICAgICAgICAgICAgICBjbGFzcyBFeGFtcGxlQ2xhc3Mge1xuICAgICAgICAgICAgICAgIC4uLlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGAsIHRhcmdldClcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldC5uYW1lO1xuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBleHBvcnQgZnVuY3Rpb24gZ2V0T2JqZWN0SW5kZXhQcm9wZXJ0eVZhbHVlKG9iajogYW55KSB7XG4gICAgY29uc3QgY2xhc3NOYW1lID0gSGVscGVycy5nZXROYW1lRnJvbU9iamVjdChvYmopO1xuICAgIC8vIGNvbnNvbGUubG9nKCdjbGFzc05hbWUnLGNsYXNzTmFtZSlcbiAgICBsZXQgYyA9IGdldENsYXNzZXMoKS5maW5kKGMgPT4gYy5jbGFzc05hbWUgPT09IGNsYXNzTmFtZSk7XG4gICAgLy8gY29uc29sZS5sb2coJ2MnLGMpXG4gICAgaWYgKGMpIHtcbiAgICAgIHJldHVybiBjLnVuaXF1ZUtleTtcbiAgICB9XG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRDbGFzc0ZhbWlseUJ5Q2xhc3NOYW1lKGNsYXNzTmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IGMgPSBnZXRDbGFzc2VzKCkuZmluZChjID0+IGMuY2xhc3NOYW1lID09PSBjbGFzc05hbWUpO1xuICAgIC8vIGNvbnNvbGUubG9nKCdnZXRDbGFzc2VzKCknLCBnZXRDbGFzc2VzKCkpXG4gICAgaWYgKGMpIHtcbiAgICAgIHJldHVybiBjLmNsYXNzRmFtaWx5O1xuICAgIH1cbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgZXhwb3J0IGZ1bmN0aW9uIGdldE9iamVjdENsYXNzRmFtaWx5KG9iajogYW55KSB7XG4gICAgY29uc3QgY2xhc3NOYW1lID0gSGVscGVycy5nZXROYW1lRnJvbU9iamVjdChvYmopO1xuICAgIC8vIGNvbnNvbGUubG9nKCdjbGFzc05hbWUnLGNsYXNzTmFtZSlcbiAgICBsZXQgYyA9IGdldENsYXNzZXMoKS5maW5kKGMgPT4gYy5jbGFzc05hbWUgPT09IGNsYXNzTmFtZSk7XG4gICAgLy8gY29uc29sZS5sb2coJ2MnLGMpXG4gICAgaWYgKGMpIHtcbiAgICAgIHJldHVybiBjLmNsYXNzRmFtaWx5O1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRPYmplY3RJbmRleFZhbHVlKG9iajogYW55KSB7XG4gICAgY29uc3QgY2xhc3NOYW1lID0gSGVscGVycy5nZXROYW1lRnJvbU9iamVjdChvYmopO1xuICAgIC8vIGNvbnNvbGUubG9nKCdjbGFzc05hbWUnLGNsYXNzTmFtZSlcbiAgICBsZXQgYyA9IGdldENsYXNzZXMoKS5maW5kKGMgPT4gYy5jbGFzc05hbWUgPT09IGNsYXNzTmFtZSk7XG4gICAgLy8gY29uc29sZS5sb2coJ2MnLGMpXG4gICAgaWYgKGMgJiYgXy5pc1N0cmluZyhjLnVuaXF1ZUtleSkpIHtcbiAgICAgIHJldHVybiBvYmpbYy51bmlxdWVLZXldO1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRDbGFzc0J5KGNsYXNzTmFtZTogc3RyaW5nIHwgRnVuY3Rpb24pOiBGdW5jdGlvbiB7XG4gICAgbGV0IHJlcztcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjbGFzc05hbWUpKSB7XG4gICAgICBpZiAoY2xhc3NOYW1lLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICB0aHJvdyBgTWFwcGluZyBlcnJvci4uLiBwbGVhc2UgdXNlIHByb3BlciBjbGFzcyBuYW1lczpcbiAge1xuICAgIHByb3BlcnR5T2JqZWN0OiAnTXlDbGFzc05hbWUnLFxuICAgIHByb3BlcnR5V2l0aEFycmF5OiBbJ015Q2xhc3NOYW1lJ11cbiAgfVxuXG4gICAgICAgIGBcbiAgICAgIH1cbiAgICAgIGNsYXNzTmFtZSA9IGNsYXNzTmFtZVswXVxuICAgIH1cbiAgICBpZiAodHlwZW9mIGNsYXNzTmFtZSA9PT0gJ2Z1bmN0aW9uJykgeyAvLyBUT0RPIFFVSUNLX0ZJWFxuICAgICAgcmVzID0gY2xhc3NOYW1lO1xuICAgIH1cbiAgICBpZiAoY2xhc3NOYW1lID09PSAnRGF0ZScpIHtcbiAgICAgIHJlcyA9IERhdGU7XG4gICAgfVxuXG4gICAgbGV0IGMgPSBnZXRDbGFzc2VzKCkuZmluZChjID0+IGMuY2xhc3NOYW1lID09PSBjbGFzc05hbWUpO1xuXG4gICAgaWYgKGMpIHtcbiAgICAgIHJlcyA9IGMudGFyZ2V0O1xuICAgIH1cbiAgICAvLyBjb25zb2xlLmxvZyhgZ2V0Q2xhc3NCeSBcIiR7Y2xhc3NOYW1lfSByZXR1cm4gXFxuXFxuICR7cmVzfSBcXG5cXG5gKVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { _ } from 'tnp-core/browser';
|
|
2
|
+
import { SYMBOL } from './symbols';
|
|
3
|
+
/**
|
|
4
|
+
* @DEPRECATED
|
|
5
|
+
* Describe fields assigned in class
|
|
6
|
+
*/
|
|
7
|
+
const FRegEx = new RegExp(/(?:this\.)(.+?(?= ))/g);
|
|
8
|
+
export function describeFromClassStringify(target, parent = false) {
|
|
9
|
+
// @ts-ignore
|
|
10
|
+
var result = [];
|
|
11
|
+
if (parent) {
|
|
12
|
+
var proto = Object.getPrototypeOf(target.prototype);
|
|
13
|
+
if (proto) {
|
|
14
|
+
// @ts-ignore
|
|
15
|
+
result = result.concat(describeFromClassStringify(proto.constructor, parent));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
result = result.concat(target.toString().match(FRegEx) || []);
|
|
19
|
+
return result.map(prop => prop.replace('this.', ''));
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Describe fields assigne through @DefaultModelWithMapping decorator
|
|
23
|
+
* without functions
|
|
24
|
+
*/
|
|
25
|
+
export function describeByDefaultModelsAndMapping(target) {
|
|
26
|
+
let res = {};
|
|
27
|
+
if (target) {
|
|
28
|
+
// @ts-ignore
|
|
29
|
+
if (target[SYMBOL.DEFAULT_MODEL]) {
|
|
30
|
+
// @ts-ignore
|
|
31
|
+
Object.keys(target[SYMBOL.DEFAULT_MODEL])
|
|
32
|
+
.filter(key => {
|
|
33
|
+
// @ts-ignore
|
|
34
|
+
return !_.isFunction(target[SYMBOL.DEFAULT_MODEL][key]);
|
|
35
|
+
})
|
|
36
|
+
.forEach(key => {
|
|
37
|
+
// @ts-ignore
|
|
38
|
+
return res[key] = null;
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
// @ts-ignore
|
|
42
|
+
let mapping = target[SYMBOL.MODELS_MAPPING];
|
|
43
|
+
if (_.isArray(mapping)) {
|
|
44
|
+
mapping.forEach(m => {
|
|
45
|
+
Object.keys(m)
|
|
46
|
+
.forEach(key => {
|
|
47
|
+
// @ts-ignore
|
|
48
|
+
res[key] = null;
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
else if (mapping) {
|
|
53
|
+
Object.keys(mapping)
|
|
54
|
+
.forEach(key => {
|
|
55
|
+
// @ts-ignore
|
|
56
|
+
res[key] = null;
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
let propNames = Object.keys(res).filter(f => !!f);
|
|
61
|
+
propNames = (!propNames.includes('id') ? ['id'] : []).concat(propNames);
|
|
62
|
+
return propNames;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpYmUtY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItYnVuZGxlL3R5cGVzY3JpcHQtY2xhc3MtaGVscGVycy9wcm9qZWN0cy90eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvc3JjL2xpYi9kZXNjcmliZS1jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUluQzs7O0lBR0k7QUFDSixNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBQ25ELE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxNQUFnQixFQUFFLE1BQU0sR0FBRyxLQUFLO0lBQ3pFLGFBQWE7SUFDYixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDaEIsSUFBSSxNQUFNLEVBQUU7UUFDVixJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRCxJQUFJLEtBQUssRUFBRTtZQUNULGFBQWE7WUFDYixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDL0U7S0FDRjtJQUNELE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUQsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUV0RCxDQUFDO0FBRUQ7OztLQUdLO0FBQ0wsTUFBTSxVQUFVLGlDQUFpQyxDQUFDLE1BQWdCO0lBQ2hFLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQTtJQUNaLElBQUksTUFBTSxFQUFFO1FBQ1YsYUFBYTtRQUNiLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNoQyxhQUFhO1lBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2lCQUN0QyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ1osYUFBYTtnQkFDYixPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDMUQsQ0FBQyxDQUFDO2lCQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDYixhQUFhO2dCQUNiLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBQztTQUNOO1FBQ0QsYUFBYTtRQUNiLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3RCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xCLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3FCQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDYixhQUFhO29CQUNiLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ2xCLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUE7U0FDSDthQUFNLElBQUksT0FBTyxFQUFFO1lBRWxCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO2lCQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2IsYUFBYTtnQkFDYixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUFDO1NBQ047S0FDRjtJQUVELElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hFLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgU1lNQk9MIH0gZnJvbSAnLi9zeW1ib2xzJztcblxuXG5cbi8qKlxuICAqIEBERVBSRUNBVEVEXG4gICogRGVzY3JpYmUgZmllbGRzIGFzc2lnbmVkIGluIGNsYXNzXG4gICovXG5jb25zdCBGUmVnRXggPSBuZXcgUmVnRXhwKC8oPzp0aGlzXFwuKSguKz8oPz0gKSkvZyk7XG5leHBvcnQgZnVuY3Rpb24gZGVzY3JpYmVGcm9tQ2xhc3NTdHJpbmdpZnkodGFyZ2V0OiBGdW5jdGlvbiwgcGFyZW50ID0gZmFsc2UpOiBzdHJpbmdbXSB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAocGFyZW50KSB7XG4gICAgdmFyIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRhcmdldC5wcm90b3R5cGUpO1xuICAgIGlmIChwcm90bykge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChkZXNjcmliZUZyb21DbGFzc1N0cmluZ2lmeShwcm90by5jb25zdHJ1Y3RvciwgcGFyZW50KSk7XG4gICAgfVxuICB9XG4gIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQodGFyZ2V0LnRvU3RyaW5nKCkubWF0Y2goRlJlZ0V4KSB8fCBbXSk7XG4gIHJldHVybiByZXN1bHQubWFwKHByb3AgPT4gcHJvcC5yZXBsYWNlKCd0aGlzLicsICcnKSlcblxufVxuXG4vKipcbiAgICogRGVzY3JpYmUgZmllbGRzIGFzc2lnbmUgdGhyb3VnaCBARGVmYXVsdE1vZGVsV2l0aE1hcHBpbmcgZGVjb3JhdG9yXG4gICAqIHdpdGhvdXQgZnVuY3Rpb25zXG4gICAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2NyaWJlQnlEZWZhdWx0TW9kZWxzQW5kTWFwcGluZyh0YXJnZXQ6IEZ1bmN0aW9uKTogc3RyaW5nW10ge1xuICBsZXQgcmVzID0ge31cbiAgaWYgKHRhcmdldCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAodGFyZ2V0W1NZTUJPTC5ERUZBVUxUX01PREVMXSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgT2JqZWN0LmtleXModGFyZ2V0W1NZTUJPTC5ERUZBVUxUX01PREVMXSlcbiAgICAgICAgLmZpbHRlcihrZXkgPT4ge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICByZXR1cm4gIV8uaXNGdW5jdGlvbih0YXJnZXRbU1lNQk9MLkRFRkFVTFRfTU9ERUxdW2tleV0pO1xuICAgICAgICB9KVxuICAgICAgICAuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICByZXR1cm4gcmVzW2tleV0gPSBudWxsO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGxldCBtYXBwaW5nID0gdGFyZ2V0W1NZTUJPTC5NT0RFTFNfTUFQUElOR107XG4gICAgaWYgKF8uaXNBcnJheShtYXBwaW5nKSkge1xuICAgICAgbWFwcGluZy5mb3JFYWNoKG0gPT4ge1xuICAgICAgICBPYmplY3Qua2V5cyhtKVxuICAgICAgICAgIC5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByZXNba2V5XSA9IG51bGw7XG4gICAgICAgICAgfSk7XG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAobWFwcGluZykge1xuXG4gICAgICBPYmplY3Qua2V5cyhtYXBwaW5nKVxuICAgICAgICAuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICByZXNba2V5XSA9IG51bGw7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGxldCBwcm9wTmFtZXMgPSBPYmplY3Qua2V5cyhyZXMpLmZpbHRlcihmID0+ICEhZik7XG4gIHByb3BOYW1lcyA9ICghcHJvcE5hbWVzLmluY2x1ZGVzKCdpZCcpID8gWydpZCddIDogW10pLmNvbmNhdChwcm9wTmFtZXMpO1xuICByZXR1cm4gcHJvcE5hbWVzO1xufVxuIl19
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { _ } from 'tnp-core/browser';
|
|
2
|
+
import { CLASSNAME } from './classname';
|
|
3
|
+
import { describeFromClassStringify, describeByDefaultModelsAndMapping } from './describe-class';
|
|
4
|
+
import { setClassName } from './set-class-name';
|
|
5
|
+
export { Models } from './models';
|
|
6
|
+
export { SYMBOL } from './symbols';
|
|
7
|
+
export class Helpers {
|
|
8
|
+
static getBy(className) {
|
|
9
|
+
return CLASSNAME.getClassBy(className);
|
|
10
|
+
}
|
|
11
|
+
static getFromObject(o) {
|
|
12
|
+
if (_.isUndefined(o) || _.isNull(o)) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
if (o.constructor) {
|
|
16
|
+
return o.constructor;
|
|
17
|
+
}
|
|
18
|
+
const p = Object.getPrototypeOf(o);
|
|
19
|
+
return p && p.constructor;
|
|
20
|
+
}
|
|
21
|
+
static getName(target, production = false) {
|
|
22
|
+
return CLASSNAME.getClassName(target, production);
|
|
23
|
+
}
|
|
24
|
+
static getNameFromObject(o) {
|
|
25
|
+
const fnCLass = this.getFromObject(o);
|
|
26
|
+
return this.getName(fnCLass);
|
|
27
|
+
}
|
|
28
|
+
static getConfig(target) {
|
|
29
|
+
return CLASSNAME.getClassConfig(target);
|
|
30
|
+
}
|
|
31
|
+
static describeProperites(target) {
|
|
32
|
+
const d1 = describeFromClassStringify(target);
|
|
33
|
+
const d2 = describeByDefaultModelsAndMapping(target);
|
|
34
|
+
let uniq = {};
|
|
35
|
+
// @ts-ignore
|
|
36
|
+
d1.concat(d2).forEach(p => uniq[p] = p);
|
|
37
|
+
return Object.keys(uniq)
|
|
38
|
+
.filter(d => !!d)
|
|
39
|
+
.filter(d => typeof target.prototype[d] !== 'function');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export const CLASS = {
|
|
43
|
+
NAME: CLASSNAME.CLASSNAME,
|
|
44
|
+
setName: setClassName,
|
|
45
|
+
getBy: Helpers.getBy,
|
|
46
|
+
getSingleton(target) {
|
|
47
|
+
if (typeof target !== 'function') {
|
|
48
|
+
console.error(`[typescript-class-helpers][setSingletonObj] Type of target is not a function`);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const config = Helpers.getConfig(target)[0];
|
|
52
|
+
// console.log(`getSingleton for ${target.name}: `, config.singleton)
|
|
53
|
+
return config.singleton;
|
|
54
|
+
},
|
|
55
|
+
setSingletonObj(target, singletonObject) {
|
|
56
|
+
// console.log('SET SINGLETON', singletonObject)
|
|
57
|
+
if (typeof target !== 'function') {
|
|
58
|
+
console.error(`[typescript-class-helpers][setSingletonObj] Type of target is not a function`);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (Array.isArray(singletonObject)) {
|
|
62
|
+
console.error(`[typescript-class-helpers][setSingletonObj] Singleton instance cant be an array`);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (typeof singletonObject !== 'object') {
|
|
66
|
+
console.error(`[typescript-class-helpers][setSingletonObj] Singleton instance cant must be a object`);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const className = CLASS.getName(target);
|
|
70
|
+
// console.log(`SINGLETON SET for TARGET ${className}`)
|
|
71
|
+
const config = Helpers.getConfig(target)[0];
|
|
72
|
+
if (config.singleton) {
|
|
73
|
+
console.warn(`[typescript-class-helpers] You are trying to set singleton of "${className}" second time with different object.`);
|
|
74
|
+
}
|
|
75
|
+
config.singleton = singletonObject;
|
|
76
|
+
},
|
|
77
|
+
getConfig: Helpers.getConfig,
|
|
78
|
+
getFromObject: Helpers.getFromObject,
|
|
79
|
+
getName: Helpers.getName,
|
|
80
|
+
getNameFromObject: Helpers.getNameFromObject,
|
|
81
|
+
describeProperites: Helpers.describeProperites,
|
|
82
|
+
OBJECT: (obj) => {
|
|
83
|
+
return {
|
|
84
|
+
get indexValue() {
|
|
85
|
+
return CLASSNAME.getObjectIndexValue(obj);
|
|
86
|
+
},
|
|
87
|
+
get indexProperty() {
|
|
88
|
+
return CLASSNAME.getObjectIndexPropertyValue(obj);
|
|
89
|
+
},
|
|
90
|
+
get isClassObject() {
|
|
91
|
+
if (!_.isObject(obj) || _.isArray(obj) || _.isRegExp(obj) ||
|
|
92
|
+
_.isBuffer(obj) || _.isArrayBuffer(obj)) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
if (_.isDate(obj)) {
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
const className = CLASS.getNameFromObject(obj);
|
|
99
|
+
return _.isString(className) && className !== 'Object';
|
|
100
|
+
},
|
|
101
|
+
isEqual: (anotherObj, compareDeep = false) => {
|
|
102
|
+
if (!CLASS.OBJECT(obj).isClassObject || !CLASS.OBJECT(anotherObj).isClassObject) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
if (obj === anotherObj) {
|
|
106
|
+
// console.log(`EQ v1: , v2: - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`, obj, anotherObj)
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
const v1 = CLASSNAME.getObjectIndexValue(obj);
|
|
110
|
+
const v2 = CLASSNAME.getObjectIndexValue(anotherObj);
|
|
111
|
+
const f1 = CLASSNAME.getObjectClassFamily(obj);
|
|
112
|
+
const f2 = CLASSNAME.getObjectClassFamily(anotherObj);
|
|
113
|
+
const isFamilyDiff = (!_.isString(f1) || !_.isString(f2) || (f1 !== f2));
|
|
114
|
+
// console.log(`DIFF FAMILY ${isFamilyDiff} v1: ${CLASSNAME.getObjectClassFamily(obj)}, v2: ${CLASSNAME.getObjectClassFamily(anotherObj)} - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`)
|
|
115
|
+
if (isFamilyDiff) {
|
|
116
|
+
// console.log(`DIFF v1: ${v1}, v2: ${v2} - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`)
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
if (!CLASS.OBJECT(obj).isClassObject || !CLASS.OBJECT(anotherObj).isClassObject) {
|
|
120
|
+
// console.log(`NOT CLASS v1: ${v1}, v2: ${v2} - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`)
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
// console.log(`v1: ${v1} ,class ${CLASS.getNameFromObject(obj)} ,prop: ${CLASS.OBJECT(obj).indexProperty}`)
|
|
124
|
+
// console.log(`v2: ${v2} ,class ${CLASS.getNameFromObject(anotherObj)} ,prop: ${CLASS.OBJECT(anotherObj).indexProperty}`)
|
|
125
|
+
// console.log(`v1: ${v1}, v2: ${v2} - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`)
|
|
126
|
+
// console.log('')
|
|
127
|
+
if ((_.isNumber(v1) && _.isNumber(v2)) || (_.isString(v1) && _.isString(v2))) {
|
|
128
|
+
const res = (v1 === v2);
|
|
129
|
+
// @ts-ignore
|
|
130
|
+
return res;
|
|
131
|
+
}
|
|
132
|
+
if (compareDeep) {
|
|
133
|
+
return _.isEqual(v1, v2);
|
|
134
|
+
}
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
export * from 'enum-values';
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItYnVuZGxlL3R5cGVzY3JpcHQtY2xhc3MtaGVscGVycy9wcm9qZWN0cy90eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvc3JjL2xpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNsQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRW5DLE1BQU0sT0FBTyxPQUFPO0lBRWxCLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBNEI7UUFDdkMsT0FBTyxTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYSxDQUFDLENBQVM7UUFDNUIsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbkMsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFO1lBQ2pCLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQztTQUN0QjtRQUNELE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDbEMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFnQixF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QUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO29CQUU1RSxNQUFNLEdBQUcsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztvQkFDeEIsYUFBYTtvQkFDYixPQUFPLEdBQUcsQ0FBQztpQkFDWjtnQkFDRCxJQUFJLFdBQVcsRUFBRTtvQkFDZixPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO2lCQUN6QjtnQkFDRCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7U0FDRixDQUFBO0lBQ0gsQ0FBQztDQUNGLENBQUE7QUFFRCxjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgeyBDTEFTU05BTUUgfSBmcm9tICcuL2NsYXNzbmFtZSc7XG5pbXBvcnQgeyBkZXNjcmliZUZyb21DbGFzc1N0cmluZ2lmeSwgZGVzY3JpYmVCeURlZmF1bHRNb2RlbHNBbmRNYXBwaW5nIH0gZnJvbSAnLi9kZXNjcmliZS1jbGFzcyc7XG5pbXBvcnQgeyBNb2RlbHMgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBzZXRDbGFzc05hbWUgfSBmcm9tICcuL3NldC1jbGFzcy1uYW1lJztcblxuZXhwb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuZXhwb3J0IHsgU1lNQk9MIH0gZnJvbSAnLi9zeW1ib2xzJztcblxuZXhwb3J0IGNsYXNzIEhlbHBlcnMge1xuXG4gIHN0YXRpYyBnZXRCeShjbGFzc05hbWU6IHN0cmluZyB8IEZ1bmN0aW9uKSB7XG4gICAgcmV0dXJuIENMQVNTTkFNRS5nZXRDbGFzc0J5KGNsYXNzTmFtZSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0RnJvbU9iamVjdChvOiBPYmplY3QpIHtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZChvKSB8fCBfLmlzTnVsbChvKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoby5jb25zdHJ1Y3Rvcikge1xuICAgICAgcmV0dXJuIG8uY29uc3RydWN0b3I7XG4gICAgfVxuICAgIGNvbnN0IHAgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YobylcbiAgICByZXR1cm4gcCAmJiBwLmNvbnN0cnVjdG9yO1xuICB9XG5cbiAgc3RhdGljIGdldE5hbWUodGFyZ2V0OiBGdW5jdGlvbiwgcHJvZHVjdGlvbiA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIENMQVNTTkFNRS5nZXRDbGFzc05hbWUodGFyZ2V0LCBwcm9kdWN0aW9uKSBhcyBzdHJpbmc7XG4gIH1cblxuICBzdGF0aWMgZ2V0TmFtZUZyb21PYmplY3QobzogT2JqZWN0KSB7XG4gICAgY29uc3QgZm5DTGFzcyA9IHRoaXMuZ2V0RnJvbU9iamVjdChvKTtcbiAgICByZXR1cm4gdGhpcy5nZXROYW1lKGZuQ0xhc3MpO1xuICB9XG5cbiAgc3RhdGljIGdldENvbmZpZyh0YXJnZXQ6IEZ1bmN0aW9uKTogTW9kZWxzLkNsYXNzQ29uZmlnW10ge1xuICAgIHJldHVybiBDTEFTU05BTUUuZ2V0Q2xhc3NDb25maWcodGFyZ2V0KVxuICB9XG5cbiAgc3RhdGljIGRlc2NyaWJlUHJvcGVyaXRlcyh0YXJnZXQ6IEZ1bmN0aW9uKSB7XG4gICAgY29uc3QgZDEgPSBkZXNjcmliZUZyb21DbGFzc1N0cmluZ2lmeSh0YXJnZXQpO1xuICAgIGNvbnN0IGQyID0gZGVzY3JpYmVCeURlZmF1bHRNb2RlbHNBbmRNYXBwaW5nKHRhcmdldCk7XG4gICAgbGV0IHVuaXEgPSB7fTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZDEuY29uY2F0KGQyKS5mb3JFYWNoKHAgPT4gdW5pcVtwXSA9IHApO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh1bmlxKVxuICAgICAgLmZpbHRlcihkID0+ICEhZClcbiAgICAgIC5maWx0ZXIoZCA9PiB0eXBlb2YgdGFyZ2V0LnByb3RvdHlwZVtkXSAhPT0gJ2Z1bmN0aW9uJylcbiAgfVxuXG59XG5cblxuZXhwb3J0IGNvbnN0IENMQVNTID0ge1xuICBOQU1FOiBDTEFTU05BTUUuQ0xBU1NOQU1FLFxuICBzZXROYW1lOiBzZXRDbGFzc05hbWUsXG4gIGdldEJ5OiBIZWxwZXJzLmdldEJ5LFxuICBnZXRTaW5nbGV0b248VCA9IGFueT4odGFyZ2V0OiBGdW5jdGlvbikge1xuICAgIGlmICh0eXBlb2YgdGFyZ2V0ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBbdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzXVtzZXRTaW5nbGV0b25PYmpdIFR5cGUgb2YgdGFyZ2V0IGlzIG5vdCBhIGZ1bmN0aW9uYClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBjb25maWcgPSBIZWxwZXJzLmdldENvbmZpZyh0YXJnZXQpWzBdXG4gICAgLy8gY29uc29sZS5sb2coYGdldFNpbmdsZXRvbiBmb3IgJHt0YXJnZXQubmFtZX06IGAsIGNvbmZpZy5zaW5nbGV0b24pXG5cbiAgICByZXR1cm4gY29uZmlnLnNpbmdsZXRvbiBhcyBUO1xuICB9LFxuICBzZXRTaW5nbGV0b25PYmoodGFyZ2V0OiBGdW5jdGlvbiwgc2luZ2xldG9uT2JqZWN0OiBhbnkpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnU0VUIFNJTkdMRVRPTicsIHNpbmdsZXRvbk9iamVjdClcbiAgICBpZiAodHlwZW9mIHRhcmdldCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc29sZS5lcnJvcihgW3R5cGVzY3JpcHQtY2xhc3MtaGVscGVyc11bc2V0U2luZ2xldG9uT2JqXSBUeXBlIG9mIHRhcmdldCBpcyBub3QgYSBmdW5jdGlvbmApXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShzaW5nbGV0b25PYmplY3QpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBbdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzXVtzZXRTaW5nbGV0b25PYmpdIFNpbmdsZXRvbiBpbnN0YW5jZSBjYW50IGJlIGFuIGFycmF5YClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygc2luZ2xldG9uT2JqZWN0ICE9PSAnb2JqZWN0Jykge1xuICAgICAgY29uc29sZS5lcnJvcihgW3R5cGVzY3JpcHQtY2xhc3MtaGVscGVyc11bc2V0U2luZ2xldG9uT2JqXSBTaW5nbGV0b24gaW5zdGFuY2UgY2FudCBtdXN0IGJlIGEgb2JqZWN0YClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGNsYXNzTmFtZSA9IENMQVNTLmdldE5hbWUodGFyZ2V0KTtcblxuXG4gICAgLy8gY29uc29sZS5sb2coYFNJTkdMRVRPTiBTRVQgZm9yIFRBUkdFVCAke2NsYXNzTmFtZX1gKVxuICAgIGNvbnN0IGNvbmZpZyA9IEhlbHBlcnMuZ2V0Q29uZmlnKHRhcmdldClbMF1cblxuICAgIGlmIChjb25maWcuc2luZ2xldG9uKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFt0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnNdIFlvdSBhcmUgdHJ5aW5nIHRvIHNldCBzaW5nbGV0b24gb2YgXCIke2NsYXNzTmFtZX1cIiBzZWNvbmQgdGltZSB3aXRoIGRpZmZlcmVudCBvYmplY3QuYClcbiAgICB9XG5cbiAgICBjb25maWcuc2luZ2xldG9uID0gc2luZ2xldG9uT2JqZWN0O1xuICB9LFxuICBnZXRDb25maWc6IEhlbHBlcnMuZ2V0Q29uZmlnLFxuICBnZXRGcm9tT2JqZWN0OiBIZWxwZXJzLmdldEZyb21PYmplY3QsXG4gIGdldE5hbWU6IEhlbHBlcnMuZ2V0TmFtZSxcbiAgZ2V0TmFtZUZyb21PYmplY3Q6IEhlbHBlcnMuZ2V0TmFtZUZyb21PYmplY3QsXG4gIGRlc2NyaWJlUHJvcGVyaXRlczogSGVscGVycy5kZXNjcmliZVByb3Blcml0ZXMsXG4gIE9CSkVDVDogKG9iajogYW55KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdldCBpbmRleFZhbHVlKCkge1xuICAgICAgICByZXR1cm4gQ0xBU1NOQU1FLmdldE9iamVjdEluZGV4VmFsdWUob2JqKTtcbiAgICAgIH0sXG4gICAgICBnZXQgaW5kZXhQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIENMQVNTTkFNRS5nZXRPYmplY3RJbmRleFByb3BlcnR5VmFsdWUob2JqKTtcbiAgICAgIH0sXG4gICAgICBnZXQgaXNDbGFzc09iamVjdCgpIHtcblxuICAgICAgICBpZiAoIV8uaXNPYmplY3Qob2JqKSB8fCBfLmlzQXJyYXkob2JqKSB8fCBfLmlzUmVnRXhwKG9iaikgfHxcbiAgICAgICAgICBfLmlzQnVmZmVyKG9iaikgfHwgXy5pc0FycmF5QnVmZmVyKG9iaikpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF8uaXNEYXRlKG9iaikpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjbGFzc05hbWUgPSBDTEFTUy5nZXROYW1lRnJvbU9iamVjdChvYmopXG4gICAgICAgIHJldHVybiBfLmlzU3RyaW5nKGNsYXNzTmFtZSkgJiYgY2xhc3NOYW1lICE9PSAnT2JqZWN0JztcbiAgICAgIH0sXG4gICAgICBpc0VxdWFsOiAoYW5vdGhlck9iajogYW55LCBjb21wYXJlRGVlcCA9IGZhbHNlKSA9PiB7XG4gICAgICAgIGlmICghQ0xBU1MuT0JKRUNUKG9iaikuaXNDbGFzc09iamVjdCB8fCAhQ0xBU1MuT0JKRUNUKGFub3RoZXJPYmopLmlzQ2xhc3NPYmplY3QpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9iaiA9PT0gYW5vdGhlck9iaikge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGBFUSB2MTogLCB2MjogIC0gY2xhc3MxICR7Q0xBU1MuZ2V0TmFtZUZyb21PYmplY3Qob2JqKX0sIGNsYXNzMiAke0NMQVNTLmdldE5hbWVGcm9tT2JqZWN0KGFub3RoZXJPYmopfWAsIG9iaiwgYW5vdGhlck9iailcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2MSA9IENMQVNTTkFNRS5nZXRPYmplY3RJbmRleFZhbHVlKG9iaik7XG4gICAgICAgIGNvbnN0IHYyID0gQ0xBU1NOQU1FLmdldE9iamVjdEluZGV4VmFsdWUoYW5vdGhlck9iaik7XG4gICAgICAgIGNvbnN0IGYxID0gQ0xBU1NOQU1FLmdldE9iamVjdENsYXNzRmFtaWx5KG9iailcbiAgICAgICAgY29uc3QgZjIgPSBDTEFTU05BTUUuZ2V0T2JqZWN0Q2xhc3NGYW1pbHkoYW5vdGhlck9iailcbiAgICAgICAgY29uc3QgaXNGYW1pbHlEaWZmID0gKCFfLmlzU3RyaW5nKGYxKSB8fCAhXy5pc1N0cmluZyhmMikgfHwgKGYxICE9PSBmMikpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgRElGRiBGQU1JTFkgJHtpc0ZhbWlseURpZmZ9IHYxOiAke0NMQVNTTkFNRS5nZXRPYmplY3RDbGFzc0ZhbWlseShvYmopfSwgdjI6ICR7Q0xBU1NOQU1FLmdldE9iamVjdENsYXNzRmFtaWx5KGFub3RoZXJPYmopfSAtIGNsYXNzMSAke0NMQVNTLmdldE5hbWVGcm9tT2JqZWN0KG9iail9LCBjbGFzczIgJHtDTEFTUy5nZXROYW1lRnJvbU9iamVjdChhbm90aGVyT2JqKX1gKVxuICAgICAgICBpZiAoaXNGYW1pbHlEaWZmKSB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coYERJRkYgdjE6ICR7djF9LCB2MjogJHt2Mn0gLSBjbGFzczEgJHtDTEFTUy5nZXROYW1lRnJvbU9iamVjdChvYmopfSwgY2xhc3MyICR7Q0xBU1MuZ2V0TmFtZUZyb21PYmplY3QoYW5vdGhlck9iail9YClcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFDTEFTUy5PQkpFQ1Qob2JqKS5pc0NsYXNzT2JqZWN0IHx8ICFDTEFTUy5PQkpFQ1QoYW5vdGhlck9iaikuaXNDbGFzc09iamVjdCkge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGBOT1QgQ0xBU1MgdjE6ICR7djF9LCB2MjogJHt2Mn0gLSBjbGFzczEgJHtDTEFTUy5nZXROYW1lRnJvbU9iamVjdChvYmopfSwgY2xhc3MyICR7Q0xBU1MuZ2V0TmFtZUZyb21PYmplY3QoYW5vdGhlck9iail9YClcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGB2MTogJHt2MX0gLGNsYXNzICR7Q0xBU1MuZ2V0TmFtZUZyb21PYmplY3Qob2JqKX0gLHByb3A6ICR7Q0xBU1MuT0JKRUNUKG9iaikuaW5kZXhQcm9wZXJ0eX1gKVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgdjI6ICR7djJ9ICxjbGFzcyAke0NMQVNTLmdldE5hbWVGcm9tT2JqZWN0KGFub3RoZXJPYmopfSAscHJvcDogJHtDTEFTUy5PQkpFQ1QoYW5vdGhlck9iaikuaW5kZXhQcm9wZXJ0eX1gKVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgdjE6ICR7djF9LCB2MjogJHt2Mn0gLSBjbGFzczEgJHtDTEFTUy5nZXROYW1lRnJvbU9iamVjdChvYmopfSwgY2xhc3MyICR7Q0xBU1MuZ2V0TmFtZUZyb21PYmplY3QoYW5vdGhlck9iail9YClcbiAgICAgICAgLy8gY29uc29sZS5sb2coJycpXG4gICAgICAgIGlmICgoXy5pc051bWJlcih2MSkgJiYgXy5pc051bWJlcih2MikpIHx8IChfLmlzU3RyaW5nKHYxKSAmJiBfLmlzU3RyaW5nKHYyKSkpIHtcblxuICAgICAgICAgIGNvbnN0IHJlcyA9ICh2MSA9PT0gdjIpO1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb21wYXJlRGVlcCkge1xuICAgICAgICAgIHJldHVybiBfLmlzRXF1YWwodjEsIHYyKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0ICogZnJvbSAnZW51bS12YWx1ZXMnO1xuIl19
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export var Models;
|
|
2
|
+
(function (Models) {
|
|
3
|
+
class ParamConfig {
|
|
4
|
+
}
|
|
5
|
+
Models.ParamConfig = ParamConfig;
|
|
6
|
+
class MethodConfig {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.parameters = {};
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
Models.MethodConfig = MethodConfig;
|
|
12
|
+
class ClassConfig {
|
|
13
|
+
constructor() {
|
|
14
|
+
// @ts-ignore
|
|
15
|
+
this.singleton = void 0;
|
|
16
|
+
this.injections = [];
|
|
17
|
+
this.vChildren = [];
|
|
18
|
+
this.methods = {};
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
Models.ClassConfig = ClassConfig;
|
|
22
|
+
})(Models || (Models = {}));
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS90eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvcHJvamVjdHMvdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3NyYy9saWIvbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sS0FBVyxNQUFNLENBcUR0QjtBQXJERCxXQUFpQixNQUFNO0lBY3JCLE1BQWEsV0FBVztLQU12QjtJQU5ZLGtCQUFXLGNBTXZCLENBQUE7SUFFRCxNQUFhLFlBQVk7UUFBekI7WUFPRSxlQUFVLEdBQXlDLEVBQUUsQ0FBQztRQUN4RCxDQUFDO0tBQUE7SUFSWSxtQkFBWSxlQVF4QixDQUFBO0lBVUQsTUFBYSxXQUFXO1FBQXhCO1lBRUUsYUFBYTtZQUNiLGNBQVMsR0FBVyxLQUFLLENBQUMsQ0FBQztZQUMzQixlQUFVLEdBQWtELEVBQUUsQ0FBQztZQUcvRCxjQUFTLEdBQW1CLEVBQUUsQ0FBQztZQUcvQixZQUFPLEdBQTJDLEVBQUUsQ0FBQztRQUN2RCxDQUFDO0tBQUE7SUFYWSxrQkFBVyxjQVd2QixDQUFBO0FBRUgsQ0FBQyxFQXJEZ0IsTUFBTSxLQUFOLE1BQU0sUUFxRHRCIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmltcG9ydCB7IENvbmZpZ01vZGVscyB9IGZyb20gJ3RucC1jb25maWcvYnJvd3Nlcic7XG5cbmV4cG9ydCBuYW1lc3BhY2UgTW9kZWxzIHtcblxuXG4gIGV4cG9ydCB0eXBlIENMQVNTTkFNRU9wdGlvbnMgPSB7XG4gICAgdW5pcXVlS2V5Pzogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIGF1dG9pbnN0YW5jZSAtIGNyZWF0ZSBpbnN0YW5jZSBvZiBzaW5nbGV0b24gYXV0b21hdGljbHkgaW5zaWRlIGRlY29yYXRvclxuICAgICAqIGZpcnN0LWluc3RhbmNlIC0gdXNlIGZpcnN0IGluc3RhY2Ugb2YgY3JlYXRlZCBjbGFzcyBhcyBkZWNvcmF0b3JcbiAgICAgKi9cbiAgICBzaW5nbGV0b24/OiAnYXV0b2luc3RhbmNlJyB8ICdmaXJzdC1pbnN0YW5jZScgfCAnbGFzdC1pbnN0YW5jZScgfCBib29sZWFuLFxuICAgIGNsYXNzRmFtaWx5Pzogc3RyaW5nLFxuICAgIGNsYXNzTmFtZUluQnJvd3Nlcj86IHN0cmluZyxcbiAgfVxuXG4gIGV4cG9ydCBjbGFzcyBQYXJhbUNvbmZpZyB7XG4gICAgcGFyYW1OYW1lOiBzdHJpbmc7XG4gICAgcGFyYW1UeXBlOiBDb25maWdNb2RlbHMuUGFyYW1UeXBlO1xuICAgIGluZGV4OiBudW1iZXI7XG4gICAgZGVmYXVsdFR5cGU6IGFueTtcbiAgICBleHBpcmVJblNlY29uZHM/OiBudW1iZXI7XG4gIH1cblxuICBleHBvcnQgY2xhc3MgTWV0aG9kQ29uZmlnIHtcbiAgICBtZXRob2ROYW1lOiBzdHJpbmc7XG4gICAgcGF0aDogc3RyaW5nO1xuICAgIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcjtcbiAgICB0eXBlOiBDb25maWdNb2RlbHMuSHR0cE1ldGhvZDtcbiAgICByZWFsdGltZVVwZGF0ZTogYm9vbGVhbjtcblxuICAgIHBhcmFtZXRlcnM6IHsgW3BhcmFtTmFtZTogc3RyaW5nXTogUGFyYW1Db25maWcgfSA9IHt9O1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBDbGFzc01ldGEge1xuICAgIHVuaXF1ZUtleT86IHN0cmluZztcbiAgICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gICAgY2xhc3NGYW1pbHk/OiBzdHJpbmc7XG4gICAgY2xhc3NOYW1lSW5Ccm93c2VyPzogc3RyaW5nO1xuICAgIHRhcmdldD86IEZ1bmN0aW9uO1xuICB9XG5cbiAgZXhwb3J0IGNsYXNzIENsYXNzQ29uZmlnIHtcbiAgICBicm93c2VyVHJhbnNmb3JtRm4/OiAoZW50aXR5OiBhbnkpID0+IGFueTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgc2luZ2xldG9uOiBPYmplY3QgPSB2b2lkIDA7XG4gICAgaW5qZWN0aW9uczogeyBnZXR0ZXI6IEZ1bmN0aW9uLCBwcm9wZXJ0eU5hbWU6IHN0cmluZzsgfVtdID0gW107XG4gICAgY2FsY3VsYXRlZFBhdGg6IHN0cmluZztcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgdkNoaWxkcmVuPzogQ2xhc3NDb25maWdbXSA9IFtdO1xuICAgIHZQYXJlbnQ/OiBDbGFzc0NvbmZpZztcbiAgICBjbGFzc1JlZmVyZW5jZTogRnVuY3Rpb247XG4gICAgbWV0aG9kczogeyBbbWV0aG9kTmFtZTogc3RyaW5nXTogTWV0aG9kQ29uZmlnIH0gPSB7fTtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { _ } from 'tnp-core/browser';
|
|
2
|
+
import { SYMBOL } from './symbols';
|
|
3
|
+
import { getStorage } from './storage';
|
|
4
|
+
import { CLASSNAME } from './classname';
|
|
5
|
+
import { CLASS } from './index';
|
|
6
|
+
function getClasses() {
|
|
7
|
+
const s = getStorage();
|
|
8
|
+
return s[SYMBOL.CLASSES];
|
|
9
|
+
}
|
|
10
|
+
// @ts-ignore
|
|
11
|
+
export function setClassName(target, className, options) {
|
|
12
|
+
let { classFamily, uniqueKey, classNameInBrowser, singleton } = options || {
|
|
13
|
+
classFamily: void 0,
|
|
14
|
+
uniqueKey: 'id',
|
|
15
|
+
classNameInBrowser: void 0,
|
|
16
|
+
singleton: void 0,
|
|
17
|
+
autoinstance: false
|
|
18
|
+
};
|
|
19
|
+
if (!_.isUndefined(singleton) && _.isBoolean(singleton) && singleton) {
|
|
20
|
+
singleton = 'first-instance';
|
|
21
|
+
}
|
|
22
|
+
if (!uniqueKey) {
|
|
23
|
+
uniqueKey = 'id';
|
|
24
|
+
}
|
|
25
|
+
if (target) {
|
|
26
|
+
// @ts-ignore
|
|
27
|
+
target[SYMBOL.CLASSNAMEKEY] = className;
|
|
28
|
+
// @ts-ignore
|
|
29
|
+
target[SYMBOL.CLASSNAMEKEYBROWSER] = classNameInBrowser;
|
|
30
|
+
}
|
|
31
|
+
const existed = getClasses()
|
|
32
|
+
.find(f => f.className === className);
|
|
33
|
+
if (existed) {
|
|
34
|
+
existed.target = target;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
const res = {
|
|
38
|
+
className,
|
|
39
|
+
classNameInBrowser,
|
|
40
|
+
target,
|
|
41
|
+
uniqueKey,
|
|
42
|
+
classFamily
|
|
43
|
+
};
|
|
44
|
+
if (_.isUndefined(classFamily)) {
|
|
45
|
+
Object.defineProperty(res, 'classFamily', {
|
|
46
|
+
get: function () {
|
|
47
|
+
const parent = Object.getPrototypeOf(target);
|
|
48
|
+
if (!_.isFunction(parent) || parent.name === 'Object' || parent.name === '') {
|
|
49
|
+
return className;
|
|
50
|
+
}
|
|
51
|
+
const classNameNew = CLASSNAME.getClassName(parent);
|
|
52
|
+
return CLASSNAME.getClassFamilyByClassName(classNameNew);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
getClasses().push(res);
|
|
57
|
+
}
|
|
58
|
+
const Original = target;
|
|
59
|
+
if (singleton === 'first-instance' || singleton === 'last-instance') {
|
|
60
|
+
const obj = {
|
|
61
|
+
// @ts-ignore
|
|
62
|
+
decoratedConstructor: function (...args) {
|
|
63
|
+
// console.log(`DECORATED CONSTRUCTOR OF ${Original.name}`)
|
|
64
|
+
const context = Original.apply(this, args);
|
|
65
|
+
const existedSingleton = CLASS.getSingleton(Original);
|
|
66
|
+
if (!existedSingleton || singleton === 'last-instance') {
|
|
67
|
+
CLASS.setSingletonObj(Original, this);
|
|
68
|
+
CLASS.setSingletonObj(obj.decoratedConstructor, this);
|
|
69
|
+
// console.log(`Singleton created for "${className}", mode: ${singleton} `);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
// console.log('ingleton exists')
|
|
73
|
+
}
|
|
74
|
+
return context;
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
// copy prototype so intanceof operator still works
|
|
78
|
+
obj.decoratedConstructor.prototype = Original.prototype;
|
|
79
|
+
// @ts-ignore
|
|
80
|
+
Object.keys(Original).forEach((name) => { obj.decoratedConstructor[name] = Original[name]; });
|
|
81
|
+
Object.defineProperty(obj.decoratedConstructor, 'name', {
|
|
82
|
+
value: className,
|
|
83
|
+
configurable: true,
|
|
84
|
+
});
|
|
85
|
+
// (obj.decoratedConstructor as any).name = className;
|
|
86
|
+
// console.log('return new contruor', decoratedConstructor)
|
|
87
|
+
return obj.decoratedConstructor;
|
|
88
|
+
}
|
|
89
|
+
else if (singleton === 'autoinstance') {
|
|
90
|
+
// console.log(`AUTOINSTANCE FOR ${target.name}`)
|
|
91
|
+
const auto = new Original();
|
|
92
|
+
CLASS.setSingletonObj(Original, auto);
|
|
93
|
+
// console.log(`Singleton created for "${className}", mode: ${singleton} `)
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LWNsYXNzLW5hbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItYnVuZGxlL3R5cGVzY3JpcHQtY2xhc3MtaGVscGVycy9wcm9qZWN0cy90eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvc3JjL2xpYi9zZXQtY2xhc3MtbmFtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVuQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUdoQyxTQUFTLFVBQVU7SUFDakIsTUFBTSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUM7SUFDdkIsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBUSxDQUFDO0FBQ2xDLENBQUM7QUFFRCxhQUFhO0FBQ2IsTUFBTSxVQUFVLFlBQVksQ0FBQyxNQUFnQixFQUFFLFNBQWlCLEVBQUUsT0FBaUM7SUFFakcsSUFBSSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxJQUFJO1FBQ3pFLFdBQVcsRUFBRSxLQUFLLENBQUM7UUFDbkIsU0FBUyxFQUFFLElBQUk7UUFDZixrQkFBa0IsRUFBRSxLQUFLLENBQUM7UUFDMUIsU0FBUyxFQUFFLEtBQUssQ0FBQztRQUNqQixZQUFZLEVBQUUsS0FBSztLQUNPLENBQUM7SUFFN0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxTQUFTLEVBQUU7UUFDcEUsU0FBUyxH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TUFBTSxFQUFFO1lBQ3RELEtBQUssRUFBRSxTQUFTO1lBQ2hCLFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQTtRQUNGLHNEQUFzRDtRQUN0RCwyREFBMkQ7UUFDM0QsT0FBTyxHQUFHLENBQUMsb0JBQW9CLENBQUM7S0FDakM7U0FBTSxJQUFJLFNBQVMsS0FBSyxjQUFjLEVBQUU7UUFFdkMsaURBQWlEO1FBQ2pELE1BQU0sSUFBSSxHQUFHLElBQUssUUFBZ0IsRUFBRSxDQUFDO1FBQ3JDLEtBQUssQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3JDLDJFQUEyRTtLQUU1RTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgU1lNQk9MIH0gZnJvbSAnLi9zeW1ib2xzJztcbmltcG9ydCB7IE1vZGVscyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IGdldFN0b3JhZ2UgfSBmcm9tICcuL3N0b3JhZ2UnO1xuaW1wb3J0IHsgQ0xBU1NOQU1FIH0gZnJvbSAnLi9jbGFzc25hbWUnO1xuaW1wb3J0IHsgQ0xBU1MgfSBmcm9tICcuL2luZGV4JztcblxuXG5mdW5jdGlvbiBnZXRDbGFzc2VzKCk6IE1vZGVscy5DbGFzc01ldGFbXSB7XG4gIGNvbnN0IHMgPSBnZXRTdG9yYWdlKCk7XG4gIHJldHVybiBzW1NZTUJPTC5DTEFTU0VTXSBhcyBhbnk7XG59XG5cbi8vIEB0cy1pZ25vcmVcbmV4cG9ydCBmdW5jdGlvbiBzZXRDbGFzc05hbWUodGFyZ2V0OiBGdW5jdGlvbiwgY2xhc3NOYW1lOiBzdHJpbmcsIG9wdGlvbnM/OiBNb2RlbHMuQ0xBU1NOQU1FT3B0aW9ucykge1xuXG4gIGxldCB7IGNsYXNzRmFtaWx5LCB1bmlxdWVLZXksIGNsYXNzTmFtZUluQnJvd3Nlciwgc2luZ2xldG9uIH0gPSBvcHRpb25zIHx8IHtcbiAgICBjbGFzc0ZhbWlseTogdm9pZCAwLFxuICAgIHVuaXF1ZUtleTogJ2lkJyxcbiAgICBjbGFzc05hbWVJbkJyb3dzZXI6IHZvaWQgMCxcbiAgICBzaW5nbGV0b246IHZvaWQgMCxcbiAgICBhdXRvaW5zdGFuY2U6IGZhbHNlXG4gIH0gYXMgTW9kZWxzLkNMQVNTTkFNRU9wdGlvbnM7XG5cbiAgaWYgKCFfLmlzVW5kZWZpbmVkKHNpbmdsZXRvbikgJiYgXy5pc0Jvb2xlYW4oc2luZ2xldG9uKSAmJiBzaW5nbGV0b24pIHtcbiAgICBzaW5nbGV0b24gPSAnZmlyc3QtaW5zdGFuY2UnXG4gIH1cblxuICBpZiAoIXVuaXF1ZUtleSkge1xuICAgIHVuaXF1ZUtleSA9ICdpZCdcbiAgfVxuXG4gIGlmICh0YXJnZXQpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGFyZ2V0W1NZTUJPTC5DTEFTU05BTUVLRVldID0gY2xhc3NOYW1lO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0YXJnZXRbU1lNQk9MLkNMQVNTTkFNRUtFWUJST1dTRVJdID0gY2xhc3NOYW1lSW5Ccm93c2VyO1xuICB9XG5cbiAgY29uc3QgZXhpc3RlZCA9IChnZXRDbGFzc2VzKCkgYXMgeyBjbGFzc05hbWU6IHN0cmluZzsgdGFyZ2V0OiBGdW5jdGlvbjsgfVtdKVxuICAgIC5maW5kKGYgPT4gZi5jbGFzc05hbWUgPT09IGNsYXNzTmFtZSlcblxuICBpZiAoZXhpc3RlZCkge1xuICAgIGV4aXN0ZWQudGFyZ2V0ID0gdGFyZ2V0O1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHJlcyA9IHtcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNsYXNzTmFtZUluQnJvd3NlcixcbiAgICAgIHRhcmdldCxcbiAgICAgIHVuaXF1ZUtleSxcbiAgICAgIGNsYXNzRmFtaWx5XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQoY2xhc3NGYW1pbHkpKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzLCAnY2xhc3NGYW1pbHknLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IHBhcmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0YXJnZXQpO1xuICAgICAgICAgIGlmICghXy5pc0Z1bmN0aW9uKHBhcmVudCkgfHwgcGFyZW50Lm5hbWUgPT09ICdPYmplY3QnIHx8IHBhcmVudC5uYW1lID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIGNsYXNzTmFtZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgY2xhc3NOYW1lTmV3ID0gQ0xBU1NOQU1FLmdldENsYXNzTmFtZShwYXJlbnQpXG4gICAgICAgICAgcmV0dXJuIENMQVNTTkFNRS5nZXRDbGFzc0ZhbWlseUJ5Q2xhc3NOYW1lKGNsYXNzTmFtZU5ldylcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgZ2V0Q2xhc3NlcygpLnB1c2gocmVzKVxuICB9XG4gIGNvbnN0IE9yaWdpbmFsID0gdGFyZ2V0O1xuXG5cbiAgaWYgKHNpbmdsZXRvbiA9PT0gJ2ZpcnN0LWluc3RhbmNlJyB8fCBzaW5nbGV0b24gPT09ICdsYXN0LWluc3RhbmNlJykge1xuICAgIGNvbnN0IG9iaiA9IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGRlY29yYXRlZENvbnN0cnVjdG9yOiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgREVDT1JBVEVEIENPTlNUUlVDVE9SIE9GICR7T3JpZ2luYWwubmFtZX1gKVxuICAgICAgICBjb25zdCBjb250ZXh0ID0gT3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG5cbiAgICAgICAgY29uc3QgZXhpc3RlZFNpbmdsZXRvbiA9IENMQVNTLmdldFNpbmdsZXRvbihPcmlnaW5hbClcbiAgICAgICAgaWYgKCFleGlzdGVkU2luZ2xldG9uIHx8IHNpbmdsZXRvbiA9PT0gJ2xhc3QtaW5zdGFuY2UnKSB7XG4gICAgICAgICAgQ0xBU1Muc2V0U2luZ2xldG9uT2JqKE9yaWdpbmFsLCB0aGlzKVxuICAgICAgICAgIENMQVNTLnNldFNpbmdsZXRvbk9iaihvYmouZGVjb3JhdGVkQ29uc3RydWN0b3IsIHRoaXMpXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coYFNpbmdsZXRvbiBjcmVhdGVkIGZvciBcIiR7Y2xhc3NOYW1lfVwiLCBtb2RlOiAke3NpbmdsZXRvbn0gYCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ2luZ2xldG9uIGV4aXN0cycpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGV4dDtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gY29weSBwcm90b3R5cGUgc28gaW50YW5jZW9mIG9wZXJhdG9yIHN0aWxsIHdvcmtzXG4gICAgb2JqLmRlY29yYXRlZENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IE9yaWdpbmFsLnByb3RvdHlwZTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgT2JqZWN0LmtleXMoT3JpZ2luYWwpLmZvckVhY2goKG5hbWU6IHN0cmluZykgPT4geyBvYmouZGVjb3JhdGVkQ29uc3RydWN0b3JbbmFtZV0gPSAoPGFueT5PcmlnaW5hbClbbmFtZV07IH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmouZGVjb3JhdGVkQ29uc3RydWN0b3IsICduYW1lJywge1xuICAgICAgdmFsdWU6IGNsYXNzTmFtZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB9KVxuICAgIC8vIChvYmouZGVjb3JhdGVkQ29uc3RydWN0b3IgYXMgYW55KS5uYW1lID0gY2xhc3NOYW1lO1xuICAgIC8vIGNvbnNvbGUubG9nKCdyZXR1cm4gbmV3IGNvbnRydW9yJywgZGVjb3JhdGVkQ29uc3RydWN0b3IpXG4gICAgcmV0dXJuIG9iai5kZWNvcmF0ZWRDb25zdHJ1Y3RvcjtcbiAgfSBlbHNlIGlmIChzaW5nbGV0b24gPT09ICdhdXRvaW5zdGFuY2UnKSB7XG5cbiAgICAvLyBjb25zb2xlLmxvZyhgQVVUT0lOU1RBTkNFIEZPUiAke3RhcmdldC5uYW1lfWApXG4gICAgY29uc3QgYXV0byA9IG5ldyAoT3JpZ2luYWwgYXMgYW55KSgpO1xuICAgIENMQVNTLnNldFNpbmdsZXRvbk9iaihPcmlnaW5hbCwgYXV0bylcbiAgICAvLyBjb25zb2xlLmxvZyhgU2luZ2xldG9uIGNyZWF0ZWQgZm9yIFwiJHtjbGFzc05hbWV9XCIsIG1vZGU6ICR7c2luZ2xldG9ufSBgKVxuXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { SYMBOL } from './symbols';
|
|
2
|
+
import { _ } from 'tnp-core/browser';
|
|
3
|
+
function defaultValues() {
|
|
4
|
+
return _.cloneDeep({
|
|
5
|
+
[SYMBOL.CLASSES]: []
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
export function getStorage(property) {
|
|
9
|
+
if (typeof property === 'string') {
|
|
10
|
+
const storageInClassStaticProp = getStorage();
|
|
11
|
+
return storageInClassStaticProp[property];
|
|
12
|
+
}
|
|
13
|
+
if (typeof defaultValues.prototype[SYMBOL.STORAGE] === 'undefined') {
|
|
14
|
+
defaultValues.prototype[SYMBOL.STORAGE] = defaultValues();
|
|
15
|
+
}
|
|
16
|
+
return defaultValues.prototype[SYMBOL.STORAGE];
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUvdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3Byb2plY3RzL3R5cGVzY3JpcHQtY2xhc3MtaGVscGVycy9zcmMvbGliL3N0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFckMsU0FBUyxhQUFhO0lBQ3BCLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNqQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFO0tBQ3JCLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFVLFFBQWlCO0lBSW5ELElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFFO1FBRWhDLE1BQU0sd0JBQXdCLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDOUMsT0FBTyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsQ0FBQTtLQUMxQztJQUVELElBQUksT0FBTyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxXQUFXLEVBQUU7UUFDbEUsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsYUFBYSxFQUFFLENBQUE7S0FDMUQ7SUFDRCxPQUFPLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBQ2hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgU1lNQk9MIH0gZnJvbSAnLi9zeW1ib2xzJztcbmltcG9ydCB7IF8gfSBmcm9tICd0bnAtY29yZS9icm93c2VyJztcblxuZnVuY3Rpb24gZGVmYXVsdFZhbHVlcygpIHtcbiAgcmV0dXJuIF8uY2xvbmVEZWVwKHtcbiAgICBbU1lNQk9MLkNMQVNTRVNdOiBbXVxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RvcmFnZTxUID0gYW55Pihwcm9wZXJ0eT86IHN0cmluZyk6IFQge1xuXG5cblxuICBpZiAodHlwZW9mIHByb3BlcnR5ID09PSAnc3RyaW5nJykge1xuXG4gICAgY29uc3Qgc3RvcmFnZUluQ2xhc3NTdGF0aWNQcm9wID0gZ2V0U3RvcmFnZSgpO1xuICAgIHJldHVybiBzdG9yYWdlSW5DbGFzc1N0YXRpY1Byb3BbcHJvcGVydHldXG4gIH1cblxuICBpZiAodHlwZW9mIGRlZmF1bHRWYWx1ZXMucHJvdG90eXBlW1NZTUJPTC5TVE9SQUdFXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBkZWZhdWx0VmFsdWVzLnByb3RvdHlwZVtTWU1CT0wuU1RPUkFHRV0gPSBkZWZhdWx0VmFsdWVzKClcbiAgfVxuICByZXR1cm4gZGVmYXVsdFZhbHVlcy5wcm90b3R5cGVbU1lNQk9MLlNUT1JBR0VdXG59XG5cbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const SYMBOL = {
|
|
2
|
+
MODELS_MAPPING: Symbol(),
|
|
3
|
+
DEFAULT_MODEL: Symbol(),
|
|
4
|
+
CLASSNAMEKEY: Symbol(),
|
|
5
|
+
// SINGLETON: Symbol(),
|
|
6
|
+
CLASSNAMEKEYBROWSER: Symbol(),
|
|
7
|
+
CLASS_META_CONFIG: Symbol(),
|
|
8
|
+
STORAGE: 'classesstorage',
|
|
9
|
+
CLASSES: 'classes',
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltYm9scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUvdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3Byb2plY3RzL3R5cGVzY3JpcHQtY2xhc3MtaGVscGVycy9zcmMvbGliL3N5bWJvbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHO0lBQ3BCLGNBQWMsRUFBRSxNQUFNLEVBQUU7SUFDeEIsYUFBYSxFQUFFLE1BQU0sRUFBRTtJQUN2QixZQUFZLEVBQUUsTUFBTSxFQUFFO0lBQ3RCLHVCQUF1QjtJQUN2QixtQkFBbUIsRUFBRSxNQUFNLEVBQUU7SUFDN0IsaUJBQWlCLEVBQUUsTUFBTSxFQUFFO0lBQzNCLE9BQU8sRUFBRSxnQkFBZ0I7SUFDekIsT0FBTyxFQUFFLFNBQVM7Q0FDbkIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5leHBvcnQgY29uc3QgU1lNQk9MID0ge1xuICBNT0RFTFNfTUFQUElORzogU3ltYm9sKCksXG4gIERFRkFVTFRfTU9ERUw6IFN5bWJvbCgpLFxuICBDTEFTU05BTUVLRVk6IFN5bWJvbCgpLFxuICAvLyBTSU5HTEVUT046IFN5bWJvbCgpLFxuICBDTEFTU05BTUVLRVlCUk9XU0VSOiBTeW1ib2woKSxcbiAgQ0xBU1NfTUVUQV9DT05GSUc6IFN5bWJvbCgpLFxuICBTVE9SQUdFOiAnY2xhc3Nlc3N0b3JhZ2UnLFxuICBDTEFTU0VTOiAnY2xhc3NlcycsXG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './lib';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUvdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3Byb2plY3RzL3R5cGVzY3JpcHQtY2xhc3MtaGVscGVycy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliJztcbiJdfQ==
|