typescript-class-helpers 13.0.23 → 13.0.25
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 +1 -0
- package/app.js +6 -34
- package/app.js.map +1 -1
- package/browser/esm2020/lib/errors-messages.mjs +2 -2
- package/browser/fesm2015/typescript-class-helpers.mjs +1 -1
- package/browser/fesm2015/typescript-class-helpers.mjs.map +1 -1
- package/browser/fesm2020/typescript-class-helpers.mjs +1 -1
- package/browser/fesm2020/typescript-class-helpers.mjs.map +1 -1
- package/browser/lib/errors-messages.d.ts +1 -1
- package/client/esm2020/lib/errors-messages.mjs +2 -2
- package/client/fesm2015/typescript-class-helpers.mjs +1 -1
- package/client/fesm2015/typescript-class-helpers.mjs.map +1 -1
- package/client/fesm2020/typescript-class-helpers.mjs +1 -1
- package/client/fesm2020/typescript-class-helpers.mjs.map +1 -1
- package/client/lib/errors-messages.d.ts +1 -1
- package/index.js +1 -1
- package/lib/classname.js +1 -1
- package/lib/describe-class.js +1 -1
- package/lib/errors-messages.js +1 -1
- package/lib/index.js +1 -1
- package/lib/models.js +1 -1
- package/lib/registerd-db.js +1 -1
- package/lib/set-class-name.js +1 -1
- package/lib/storage.js +1 -1
- package/lib/symbols.js +1 -1
- package/package.json +3 -3
- package/tmp-environment.json +30 -31
- package/websql/README.md +24 -0
- package/websql/esm2020/lib/classname.mjs +172 -0
- package/websql/esm2020/lib/describe-class.mjs +64 -0
- package/websql/esm2020/lib/errors-messages.mjs +12 -0
- package/websql/esm2020/lib/index.mjs +144 -0
- package/websql/esm2020/lib/models.mjs +25 -0
- package/websql/esm2020/lib/registerd-db.mjs +5 -0
- package/websql/esm2020/lib/set-class-name.mjs +97 -0
- package/websql/esm2020/lib/storage.mjs +22 -0
- package/websql/esm2020/lib/symbols.mjs +7 -0
- package/websql/esm2020/public-api.mjs +2 -0
- package/websql/esm2020/typescript-class-helpers.mjs +5 -0
- package/websql/fesm2015/typescript-class-helpers.mjs +532 -0
- package/websql/fesm2015/typescript-class-helpers.mjs.map +1 -0
- package/websql/fesm2020/typescript-class-helpers.mjs +532 -0
- package/websql/fesm2020/typescript-class-helpers.mjs.map +1 -0
- package/websql/lib/classname.d.ts +16 -0
- package/websql/lib/describe-class.d.ts +6 -0
- package/websql/lib/errors-messages.d.ts +1 -0
- package/websql/lib/index.d.ts +33 -0
- package/websql/lib/models.d.ts +56 -0
- package/websql/lib/registerd-db.d.ts +5 -0
- package/websql/lib/set-class-name.d.ts +2 -0
- package/websql/lib/storage.d.ts +1 -0
- package/websql/lib/symbols.d.ts +6 -0
- package/websql/package.json +31 -0
- package/websql/public-api.d.ts +1 -0
- package/websql/typescript-class-helpers.d.ts +5 -0
package/tmp-environment.json
CHANGED
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
},
|
|
46
46
|
"name": "typescript-class-helpers",
|
|
47
47
|
"description": "Usefull helper to have in your typescript project",
|
|
48
|
-
"version": "13.0.
|
|
48
|
+
"version": "13.0.25",
|
|
49
49
|
"scripts": {
|
|
50
50
|
"test": "mocha --require ts-node/register src/**/*.spec.ts",
|
|
51
51
|
"test:watch": "mocha --compilers ts-node/register src/**/*.spec.ts --watch"
|
|
@@ -66,15 +66,14 @@
|
|
|
66
66
|
"homepage": "https://github.com/darekf77/typescript-class-helpers#readme",
|
|
67
67
|
"dependencies": {
|
|
68
68
|
"enum-values": "1.2.1",
|
|
69
|
-
"ng2-logger": "~13.0.
|
|
69
|
+
"ng2-logger": "~13.0.25"
|
|
70
70
|
},
|
|
71
71
|
"license": "MIT",
|
|
72
72
|
"private": false,
|
|
73
|
-
"lastBuildTagHash": "
|
|
73
|
+
"lastBuildTagHash": "1e96cd61995645d0904fb280d2a04ee7386ae5af",
|
|
74
74
|
"devDependencies": {
|
|
75
75
|
"@angular-devkit/build-angular": "~13.2.5",
|
|
76
76
|
"@angular-devkit/core": "~13.2.6",
|
|
77
|
-
"@angular/animations": "~13.2.0",
|
|
78
77
|
"@angular/cdk": "~13.2.4",
|
|
79
78
|
"@angular/cli": "~13.2.5",
|
|
80
79
|
"@angular/common": "~13.2.0",
|
|
@@ -141,13 +140,13 @@
|
|
|
141
140
|
"@types/vinyl": "2.0.2",
|
|
142
141
|
"@types/watch": "1.0.0",
|
|
143
142
|
"accepts": "1.3.4",
|
|
143
|
+
"any-project-cli": "~0.0.9",
|
|
144
144
|
"axios": "0.17.1",
|
|
145
|
-
"background-worker-process": "~13.0.
|
|
145
|
+
"background-worker-process": "~13.0.21",
|
|
146
146
|
"bcryptjs": "2.4.3",
|
|
147
|
-
"better-sqlite3": "7.
|
|
147
|
+
"better-sqlite3": "7.6.2",
|
|
148
148
|
"body-parser": "1.18.2",
|
|
149
149
|
"bootstrap": "5.1.3",
|
|
150
|
-
"bs4-breakpoint": "13.0.28",
|
|
151
150
|
"buffer-shims": "1.0.0",
|
|
152
151
|
"callsite-record": "4.1.3",
|
|
153
152
|
"chai": "4.2.0",
|
|
@@ -181,10 +180,10 @@
|
|
|
181
180
|
"fbgraph": "1.4.1",
|
|
182
181
|
"file-loader": "1.1.5",
|
|
183
182
|
"firedev": "^13",
|
|
184
|
-
"firedev-crud": "~13.0.
|
|
185
|
-
"firedev-crud-deamon": "~13.0.
|
|
186
|
-
"firedev-ports": "~13.0.
|
|
187
|
-
"firedev-storage": "~13.0.
|
|
183
|
+
"firedev-crud": "~13.0.29",
|
|
184
|
+
"firedev-crud-deamon": "~13.0.20",
|
|
185
|
+
"firedev-ports": "~13.0.23",
|
|
186
|
+
"firedev-storage": "~13.0.15",
|
|
188
187
|
"fkill": "6.1.0",
|
|
189
188
|
"font-awesome": "4.7.0",
|
|
190
189
|
"fs-extra": "8.1.0",
|
|
@@ -195,17 +194,17 @@
|
|
|
195
194
|
"http-proxy": "1.16.2",
|
|
196
195
|
"http-proxy-middleware": "0.19.1",
|
|
197
196
|
"http-server": "0.11.1",
|
|
198
|
-
"incremental-compiler": "~13.0.
|
|
197
|
+
"incremental-compiler": "~13.0.26",
|
|
199
198
|
"inquirer": "7.3.3",
|
|
200
199
|
"inquirer-autocomplete-prompt": "1.3.0",
|
|
201
200
|
"is-elevated": "3.0.0",
|
|
202
|
-
"isomorphic-region-loader": "1.0.2",
|
|
201
|
+
"isomorphic-region-loader": "~1.0.2",
|
|
203
202
|
"istanbul-instrumenter-loader": "2.0.0",
|
|
204
203
|
"jasmine-core": "4.0.0",
|
|
205
204
|
"jscodeshift": "0.6.3",
|
|
206
205
|
"json-stringify-safe": "5.0.1",
|
|
207
|
-
"json10": "~13.0.
|
|
208
|
-
"json10-writer": "~13.0.
|
|
206
|
+
"json10": "~13.0.22",
|
|
207
|
+
"json10-writer": "~13.0.20",
|
|
209
208
|
"json5": "2.1.3",
|
|
210
209
|
"json5-writer": "0.2.0",
|
|
211
210
|
"karma": "6.3.0",
|
|
@@ -217,7 +216,7 @@
|
|
|
217
216
|
"lnk": "1.0.1",
|
|
218
217
|
"lockfile": "1.0.4",
|
|
219
218
|
"lodash": "4.17.4",
|
|
220
|
-
"lodash-walk-object": "~13.0.
|
|
219
|
+
"lodash-walk-object": "~13.0.22",
|
|
221
220
|
"lodash.get": ">= 4",
|
|
222
221
|
"lodash.isequal": ">= 4",
|
|
223
222
|
"lodash.merge": ">= 4",
|
|
@@ -230,10 +229,10 @@
|
|
|
230
229
|
"mkdirp": "0.5.1",
|
|
231
230
|
"mocha": "5.2.0",
|
|
232
231
|
"moment": "2.22.2",
|
|
233
|
-
"morphi": "~13.0.
|
|
232
|
+
"morphi": "~13.0.47",
|
|
234
233
|
"ng-packagr": "13.0.0",
|
|
235
234
|
"ng-talkback": "~13.0.14",
|
|
236
|
-
"ng2-rest": "~13.0.
|
|
235
|
+
"ng2-rest": "~13.0.30",
|
|
237
236
|
"ng4-icons": "~13.0.16",
|
|
238
237
|
"ng4-modal": "~13.0.18",
|
|
239
238
|
"ngx-bootstrap": "8.0.0",
|
|
@@ -272,25 +271,25 @@
|
|
|
272
271
|
"sloc": "0.2.0",
|
|
273
272
|
"socket.io": "2.4.1",
|
|
274
273
|
"sort-package-json": "1.11.0",
|
|
275
|
-
"static-columns": "13.0.
|
|
274
|
+
"static-columns": "~13.0.23",
|
|
276
275
|
"string-similarity": "4.0.2",
|
|
277
276
|
"sudo-block": "3.0.0",
|
|
278
277
|
"systeminformation": "3.45.7",
|
|
279
278
|
"task.js": "0.1.5",
|
|
280
|
-
"tnp-cli": "~13.0.
|
|
281
|
-
"tnp-config": "~13.0.
|
|
282
|
-
"tnp-core": "~13.0.
|
|
283
|
-
"tnp-db": "~13.0.
|
|
284
|
-
"tnp-helpers": "~13.0.
|
|
285
|
-
"tnp-models": "~13.0.
|
|
279
|
+
"tnp-cli": "~13.0.25",
|
|
280
|
+
"tnp-config": "~13.0.31",
|
|
281
|
+
"tnp-core": "~13.0.65",
|
|
282
|
+
"tnp-db": "~13.0.30",
|
|
283
|
+
"tnp-helpers": "~13.0.36",
|
|
284
|
+
"tnp-models": "~13.0.24",
|
|
286
285
|
"tnp-ui": "~13.0.19",
|
|
287
286
|
"ts-debug": "1.3.0",
|
|
288
287
|
"ts-loader": "2.3.1",
|
|
289
288
|
"ts-node": "10.7.0",
|
|
290
289
|
"tslib": "~2.3.0",
|
|
291
|
-
"typeorm": "~0.
|
|
290
|
+
"typeorm": "~0.3.7",
|
|
292
291
|
"typescript": "~4.5.2",
|
|
293
|
-
"typescript-class-helpers": "~13.0.
|
|
292
|
+
"typescript-class-helpers": "~13.0.24",
|
|
294
293
|
"typescript-formatter": "~7.2.2",
|
|
295
294
|
"underscore": "1.9.1",
|
|
296
295
|
"uuid": "8.3.2",
|
|
@@ -301,9 +300,9 @@
|
|
|
301
300
|
}
|
|
302
301
|
},
|
|
303
302
|
"build": {
|
|
304
|
-
"number":
|
|
305
|
-
"date": "2022-
|
|
306
|
-
"hash": "
|
|
303
|
+
"number": 251,
|
|
304
|
+
"date": "2022-10-01T13:47:27.000Z",
|
|
305
|
+
"hash": "25a0e8857f77dd3ca192d25fd08dc382d5083c3b",
|
|
307
306
|
"options": {}
|
|
308
307
|
},
|
|
309
308
|
"currentProjectName": "typescript-class-helpers",
|
|
@@ -311,7 +310,7 @@
|
|
|
311
310
|
"currentProjectLaunchConfiguration": "{\"version\":\"0.2.0\",\"configurations\":[{\"type\":\"node\",\"request\":\"launch\",\"name\":\"Launch Server standalone\",\"program\":\"${workspaceFolder}/run.js\",\"args\":[\"--ENVoverride=%7B%0A%20%20%20%20%22clientProjectName%22%3A%20%22typescript-class-helpers%22%0A%7D\"],\"runtimeArgs\":[\"--nolazy\",\"-r\",\"ts-node/register\",\"--experimental-worker\"]},{\"name\":\"Debugger with ng serve\",\"type\":\"chrome\",\"request\":\"launch\",\"preLaunchTask\":\"Ng Serve\",\"postDebugTask\":\"terminateall\",\"sourceMaps\":true,\"webRoot\":\"${workspaceFolder}\",\"sourceMapPathOverrides\":{\"webpack:/*\":\"${webRoot}/*\",\"/./*\":\"${webRoot}/*\",\"/tmp-src/*\":\"${webRoot}/*\",\"/*\":\"*\",\"/./~/*\":\"${webRoot}/node_modules/*\"}},{\"type\":\"node\",\"request\":\"attach\",\"name\":\"Attach to global cli tool\",\"port\":9229,\"skipFiles\":[\"<node_internals>/**\"]}],\"compounds\":[{\"name\":\"Debug backend/frontend\",\"configurations\":[\"Launch Server standalone\",\"Debugger with ng serve\"]}]}",
|
|
312
311
|
"currentProjectTasksConfiguration": "{\"version\":\"2.0.0\",\"tasks\":[{\"label\":\"terminateall\",\"command\":\"echo ${input:terminate}\",\"type\":\"shell\",\"problemMatcher\":[]},{\"label\":\"Ng Serve\",\"type\":\"shell\",\"command\":\"tnp build\",\"isBackground\":true,\"presentation\":{\"reveal\":\"always\"},\"group\":{\"kind\":\"build\",\"isDefault\":true},\"problemMatcher\":{\"owner\":\"typescript\",\"source\":\"ts\",\"applyTo\":\"closedDocuments\",\"fileLocation\":[\"relative\",\"${cwd}\"],\"pattern\":\"$tsc\",\"background\":{\"activeOnStart\":true,\"beginsPattern\":{\"regexp\":\"(.*?)\"},\"endsPattern\":{\"regexp\":\"Compiled |Failed to compile.\"}}}}],\"inputs\":[{\"id\":\"terminate\",\"type\":\"command\",\"command\":\"workbench.action.tasks.terminate\",\"args\":\"terminateAll\"}]}",
|
|
313
312
|
"currentProjectType": "isomorphic-lib",
|
|
314
|
-
"currentFrameworkVersion": "13.0.
|
|
313
|
+
"currentFrameworkVersion": "13.0.102",
|
|
315
314
|
"currentProjectIsStrictSite": false,
|
|
316
315
|
"currentProjectIsDependencySite": false,
|
|
317
316
|
"currentProjectIsStatic": false,
|
package/websql/README.md
ADDED
|
@@ -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,172 @@
|
|
|
1
|
+
import { _ } from 'tnp-core/websql';
|
|
2
|
+
import { Models } from './models';
|
|
3
|
+
import { SYMBOL } from './symbols';
|
|
4
|
+
import { TchHelpers } from './index';
|
|
5
|
+
import { Helpers } from 'tnp-core/websql';
|
|
6
|
+
import { getStorage } from './storage';
|
|
7
|
+
import { setClassName } from './set-class-name';
|
|
8
|
+
import { registerd } from './registerd-db';
|
|
9
|
+
import { ERROR_MSG_CLASS_WITHOUT_DECORATOR } from './errors-messages';
|
|
10
|
+
function getClasses() {
|
|
11
|
+
const s = getStorage();
|
|
12
|
+
return s[SYMBOL.CLASSES];
|
|
13
|
+
}
|
|
14
|
+
export var CLASSNAME;
|
|
15
|
+
(function (CLASSNAME_1) {
|
|
16
|
+
function getClassConfig(target, configs = [], callerTarget) {
|
|
17
|
+
if (!_.isFunction(target)) {
|
|
18
|
+
throw `[typescript-class-helper][getClassConfig] Cannot get class config from: ${target}`;
|
|
19
|
+
}
|
|
20
|
+
let config;
|
|
21
|
+
const parentClass = Object.getPrototypeOf(target);
|
|
22
|
+
const isValidParent = (_.isFunction(parentClass) && parentClass.name !== '');
|
|
23
|
+
if (registerd.classes.includes(target)) {
|
|
24
|
+
config = registerd.configs[registerd.classes.findIndex(c => c === target)];
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
config = new Models.ClassConfig();
|
|
28
|
+
config.classReference = target;
|
|
29
|
+
registerd.classes.push(target);
|
|
30
|
+
}
|
|
31
|
+
registerd.configs[registerd.classes.findIndex(c => c === target)] = config;
|
|
32
|
+
if (callerTarget) {
|
|
33
|
+
const callerTargetConfig = registerd.configs[registerd.classes.findIndex(c => c === callerTarget)];
|
|
34
|
+
if (!config.vChildren.includes(callerTargetConfig)) {
|
|
35
|
+
config.vChildren.push(callerTargetConfig);
|
|
36
|
+
}
|
|
37
|
+
callerTargetConfig.vParent = config;
|
|
38
|
+
}
|
|
39
|
+
configs.push(config);
|
|
40
|
+
return isValidParent ? getClassConfig(parentClass, configs, target) : configs;
|
|
41
|
+
}
|
|
42
|
+
CLASSNAME_1.getClassConfig = getClassConfig;
|
|
43
|
+
/**
|
|
44
|
+
* PLEASE PROVIDE NAME AS TYPED STRING, NOT VARIABLE
|
|
45
|
+
* Decorator requred for production mode
|
|
46
|
+
* @param name Name of class
|
|
47
|
+
*/
|
|
48
|
+
function CLASSNAME(className, options) {
|
|
49
|
+
return function (target) {
|
|
50
|
+
// console.log(`CLASSNAME Inited ${className}`)
|
|
51
|
+
return setClassName(target, className, options);
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
CLASSNAME_1.CLASSNAME = CLASSNAME;
|
|
55
|
+
function getClassName(target, production = false) {
|
|
56
|
+
if (_.isNil(target)) {
|
|
57
|
+
// console.log(target);
|
|
58
|
+
// Helpers.warn(`[typescript-class-helpers][getClassName] target is nil`)
|
|
59
|
+
return void 0;
|
|
60
|
+
}
|
|
61
|
+
if (_.isString(target)) {
|
|
62
|
+
console.log(target);
|
|
63
|
+
Helpers.warn(`[typescript-class-helpers][getClassName] target is string: '${target}', produciton: ${production}`);
|
|
64
|
+
return target;
|
|
65
|
+
}
|
|
66
|
+
if (!_.isFunction(target)) {
|
|
67
|
+
console.log(target);
|
|
68
|
+
Helpers.warn(`[typescript-class-helpers][getClassName] target is not a class`);
|
|
69
|
+
return void 0;
|
|
70
|
+
}
|
|
71
|
+
const configs = getClassConfig(target);
|
|
72
|
+
const config = _.first(configs);
|
|
73
|
+
const classNameInBrowser = config?.classNameInBrowser;
|
|
74
|
+
if (Helpers.isBrowser && _.isString(classNameInBrowser)) {
|
|
75
|
+
return classNameInBrowser;
|
|
76
|
+
}
|
|
77
|
+
const className = config?.className;
|
|
78
|
+
if (className) {
|
|
79
|
+
return className;
|
|
80
|
+
}
|
|
81
|
+
if (production) {
|
|
82
|
+
console.log('class without @CLASS.NAME deocrator', target);
|
|
83
|
+
throw new Error(ERROR_MSG_CLASS_WITHOUT_DECORATOR);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
// Helpers.log('check for ' + target.name)
|
|
87
|
+
// setTimeout(() => {
|
|
88
|
+
// // Helpers.log('check for ' + target.name + ' === ' + config.className)/
|
|
89
|
+
// // TODO this may work, but not yet in singleton/morphi
|
|
90
|
+
// if (!config.className) {
|
|
91
|
+
// if (target?.name && target.name !== 'Object') {
|
|
92
|
+
// ConfigHelpers.log(`[typescript-class-helpers] Please use @CLASS.NAME`
|
|
93
|
+
// + `('${(target?.name && !!target.name) ? target.name : '...'}') decorator for class ${target?.name}`)
|
|
94
|
+
// }
|
|
95
|
+
// }
|
|
96
|
+
// })
|
|
97
|
+
}
|
|
98
|
+
return target.name;
|
|
99
|
+
}
|
|
100
|
+
CLASSNAME_1.getClassName = getClassName;
|
|
101
|
+
// @ts-ignore
|
|
102
|
+
function getObjectIndexPropertyValue(obj) {
|
|
103
|
+
const className = TchHelpers.getNameFromObject(obj);
|
|
104
|
+
// console.log('className',className)
|
|
105
|
+
let c = getClasses().find(c => c.className === className);
|
|
106
|
+
// console.log('c',c)
|
|
107
|
+
if (c) {
|
|
108
|
+
return c.uniqueKey;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
CLASSNAME_1.getObjectIndexPropertyValue = getObjectIndexPropertyValue;
|
|
112
|
+
// @ts-ignore
|
|
113
|
+
function getClassFamilyByClassName(className) {
|
|
114
|
+
let c = getClasses().find(c => c.className === className);
|
|
115
|
+
// console.log('getClasses()', getClasses())
|
|
116
|
+
if (c) {
|
|
117
|
+
return c.classFamily;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
CLASSNAME_1.getClassFamilyByClassName = getClassFamilyByClassName;
|
|
121
|
+
// @ts-ignore
|
|
122
|
+
function getObjectClassFamily(obj) {
|
|
123
|
+
const className = TchHelpers.getNameFromObject(obj);
|
|
124
|
+
// console.log('className',className)
|
|
125
|
+
let c = getClasses().find(c => c.className === className);
|
|
126
|
+
// console.log('c',c)
|
|
127
|
+
if (c) {
|
|
128
|
+
return c.classFamily;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
CLASSNAME_1.getObjectClassFamily = getObjectClassFamily;
|
|
132
|
+
function getObjectIndexValue(obj) {
|
|
133
|
+
const className = TchHelpers.getNameFromObject(obj);
|
|
134
|
+
// console.log('className',className)
|
|
135
|
+
let c = getClasses().find(c => c.className === className);
|
|
136
|
+
// console.log('c',c)
|
|
137
|
+
if (c && _.isString(c.uniqueKey)) {
|
|
138
|
+
return obj[c.uniqueKey];
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
CLASSNAME_1.getObjectIndexValue = getObjectIndexValue;
|
|
142
|
+
function getClassBy(className) {
|
|
143
|
+
let res;
|
|
144
|
+
if (Array.isArray(className)) {
|
|
145
|
+
if (className.length !== 1) {
|
|
146
|
+
throw `Mapping error... please use proper class names:
|
|
147
|
+
{
|
|
148
|
+
propertyObject: 'MyClassName',
|
|
149
|
+
propertyWithArray: ['MyClassName']
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
`;
|
|
153
|
+
}
|
|
154
|
+
className = className[0];
|
|
155
|
+
}
|
|
156
|
+
if (typeof className === 'function') { // TODO QUICK_FIX
|
|
157
|
+
res = className;
|
|
158
|
+
}
|
|
159
|
+
if (className === 'Date') {
|
|
160
|
+
res = Date;
|
|
161
|
+
}
|
|
162
|
+
let c = getClasses().find(c => c.className === className);
|
|
163
|
+
if (c) {
|
|
164
|
+
res = c.target;
|
|
165
|
+
}
|
|
166
|
+
// console.log(`getClassBy "${className} return \n\n ${res} \n\n`)
|
|
167
|
+
// @ts-ignore
|
|
168
|
+
return res;
|
|
169
|
+
}
|
|
170
|
+
CLASSNAME_1.getClassBy = getClassBy;
|
|
171
|
+
})(CLASSNAME || (CLASSNAME = {}));
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3NuYW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS13ZWJzcWwvdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3Byb2plY3RzL3R5cGVzY3JpcHQtY2xhc3MtaGVscGVycy9zcmMvbGliL2NsYXNzbmFtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNsQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUd0RSxTQUFTLFVBQVU7SUFDakIsTUFBTSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUM7SUFDdkIsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBUSxDQUFDO0FBQ2xDLENBQUM7QUFDRCxNQUFNLEtBQVcsU0FBUyxDQTBLekI7QUExS0QsV0FBaUIsV0FBUztJQUV4QixTQUFnQixjQUFjLENBQUMsTUFBZ0IsRUFBRSxVQUFnQyxFQUFFLEVBQUUsWUFBdUI7UUFDMUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDekIsTUFBTSwyRUFBMkUsTUFBTSxFQUFFLENBQUE7U0FDMUY7UUFFRCxJQUFJLE1BQTBC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LFNBQVMsQ0FBQyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQVJlLCtCQUFtQixzQkFRbEMsQ0FBQTtJQUVELFNBQWdCLFVBQVUsQ0FBQyxTQUE0QjtRQUNyRCxJQUFJLEdBQUcsQ0FBQztRQUNSLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM1QixJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUMxQixNQUFNOzs7Ozs7U0FNTCxDQUFBO2FBQ0Y7WUFDRCxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ3pCO1FBQ0QsSUFBSSxPQUFPLFNBQVMsS0FBSyxVQUFVLEVBQUUsRUFBRSxpQkFBaUI7WUFDdEQsR0FBRyxHQUFHLFNBQVMsQ0FBQztTQUNqQjtRQUNELElBQUksU0FBUyxLQUFLLE1BQU0sRUFBRTtZQUN4QixHQUFHLEdBQUcsSUFBSSxDQUFDO1NBQ1o7UUFFRCxJQUFJLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBRTFELElBQUksQ0FBQyxFQUFFO1lBQ0wsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7U0FDaEI7UUFDRCxrRUFBa0U7UUFDbEUsYUFBYTtRQUNiLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQTdCZSxzQkFBVSxhQTZCekIsQ0FBQTtBQUVILENBQUMsRUExS2dCLFNBQVMsS0FBVCxTQUFTLFFBMEt6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF8gfSBmcm9tICd0bnAtY29yZS93ZWJzcWwnO1xuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgU1lNQk9MIH0gZnJvbSAnLi9zeW1ib2xzJztcbmltcG9ydCB7IFRjaEhlbHBlcnMgfSBmcm9tICcuL2luZGV4JztcbmltcG9ydCB7IEhlbHBlcnMgfSBmcm9tICd0bnAtY29yZS93ZWJzcWwnO1xuaW1wb3J0IHsgZ2V0U3RvcmFnZSB9IGZyb20gJy4vc3RvcmFnZSc7XG5pbXBvcnQgeyBzZXRDbGFzc05hbWUgfSBmcm9tICcuL3NldC1jbGFzcy1uYW1lJztcbmltcG9ydCB7IHJlZ2lzdGVyZCB9IGZyb20gJy4vcmVnaXN0ZXJkLWRiJztcbmltcG9ydCB7IEVSUk9SX01TR19DTEFTU19XSVRIT1VUX0RFQ09SQVRPUiB9IGZyb20gJy4vZXJyb3JzLW1lc3NhZ2VzJztcblxuXG5mdW5jdGlvbiBnZXRDbGFzc2VzKCk6IE1vZGVscy5DbGFzc01ldGFbXSB7XG4gIGNvbnN0IHMgPSBnZXRTdG9yYWdlKCk7XG4gIHJldHVybiBzW1NZTUJPTC5DTEFTU0VTXSBhcyBhbnk7XG59XG5leHBvcnQgbmFtZXNwYWNlIENMQVNTTkFNRSB7XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldENsYXNzQ29uZmlnKHRhcmdldDogRnVuY3Rpb24sIGNvbmZpZ3M6IE1vZGVscy5DbGFzc0NvbmZpZ1tdID0gW10sIGNhbGxlclRhcmdldD86IEZ1bmN0aW9uKTogTW9kZWxzLkNsYXNzQ29uZmlnW10ge1xuICAgIGlmICghXy5pc0Z1bmN0aW9uKHRhcmdldCkpIHtcbiAgICAgIHRocm93IGBbdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJdW2dldENsYXNzQ29uZmlnXSBDYW5ub3QgZ2V0IGNsYXNzIGNvbmZpZyBmcm9tOiAke3RhcmdldH1gXG4gICAgfVxuXG4gICAgbGV0IGNvbmZpZzogTW9kZWxzLkNsYXNzQ29uZmlnO1xuICAgIGNvbnN0IHBhcmVudENsYXNzID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRhcmdldCk7XG4gICAgY29uc3QgaXNWYWxpZFBhcmVudCA9IChfLmlzRnVuY3Rpb24ocGFyZW50Q2xhc3MpICYmIHBhcmVudENsYXNzLm5hbWUgIT09ICcnKTtcblxuICAgIGlmIChyZWdpc3RlcmQuY2xhc3Nlcy5pbmNsdWRlcyh0YXJnZXQpKSB7XG4gICAgICBjb25maWcgPSByZWdpc3RlcmQuY29uZmlnc1tyZWdpc3RlcmQuY2xhc3Nlcy5maW5kSW5kZXgoYyA9PiBjID09PSB0YXJnZXQpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uZmlnID0gbmV3IE1vZGVscy5DbGFzc0NvbmZpZygpO1xuICAgICAgY29uZmlnLmNsYXNzUmVmZXJlbmNlID0gdGFyZ2V0O1xuICAgICAgcmVnaXN0ZXJkLmNsYXNzZXMucHVzaCh0YXJnZXQpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyZC5jb25maWdzW3JlZ2lzdGVyZC5jbGFzc2VzLmZpbmRJbmRleChjID0+IGMgPT09IHRhcmdldCldID0gY29uZmlnO1xuICAgIGlmIChjYWxsZXJUYXJnZXQpIHtcbiAgICAgIGNvbnN0IGNhbGxlclRhcmdldENvbmZpZyA9IHJlZ2lzdGVyZC5jb25maWdzW3JlZ2lzdGVyZC5jbGFzc2VzLmZpbmRJbmRleChjID0+IGMgPT09IGNhbGxlclRhcmdldCldO1xuICAgICAgaWYgKCFjb25maWcudkNoaWxkcmVuLmluY2x1ZGVzKGNhbGxlclRhcmdldENvbmZpZykpIHtcbiAgICAgICAgY29uZmlnLnZDaGlsZHJlbi5wdXNoKGNhbGxlclRhcmdldENvbmZpZyk7XG4gICAgICB9XG4gICAgICBjYWxsZXJUYXJnZXRDb25maWcudlBhcmVudCA9IGNvbmZpZztcbiAgICB9XG5cbiAgICBjb25maWdzLnB1c2goY29uZmlnKTtcblxuICAgIHJldHVybiBpc1ZhbGlkUGFyZW50ID8gZ2V0Q2xhc3NDb25maWcocGFyZW50Q2xhc3MsIGNvbmZpZ3MsIHRhcmdldCkgOiBjb25maWdzO1xuICB9XG5cbiAgLyoqXG4gICAqIFBMRUFTRSBQUk9WSURFIE5BTUUgQVMgVFlQRUQgU1RSSU5HLCBOT1QgVkFSSUFCTEVcbiAgICogRGVjb3JhdG9yIHJlcXVyZWQgZm9yIHByb2R1Y3Rpb24gbW9kZVxuICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIGNsYXNzXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gQ0xBU1NOQU1FKGNsYXNzTmFtZTogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBNb2RlbHMuQ0xBU1NOQU1FT3B0aW9ucykge1xuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBGdW5jdGlvbikge1xuICAgICAgLy8gY29uc29sZS5sb2coYENMQVNTTkFNRSBJbml0ZWQgJHtjbGFzc05hbWV9YClcbiAgICAgIHJldHVybiBzZXRDbGFzc05hbWUodGFyZ2V0LCBjbGFzc05hbWUsIG9wdGlvbnMpO1xuICAgIH0gYXMgYW55O1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldENsYXNzTmFtZSh0YXJnZXQ6IEZ1bmN0aW9uLCBwcm9kdWN0aW9uID0gZmFsc2UpIHtcbiAgICBpZiAoXy5pc05pbCh0YXJnZXQpKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyh0YXJnZXQpO1xuICAgICAgLy8gSGVscGVycy53YXJuKGBbdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzXVtnZXRDbGFzc05hbWVdIHRhcmdldCBpcyBuaWxgKVxuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9XG4gICAgaWYgKF8uaXNTdHJpbmcodGFyZ2V0KSkge1xuICAgICAgY29uc29sZS5sb2codGFyZ2V0KTtcbiAgICAgIEhlbHBlcnMud2FybihgW3R5cGVzY3JpcHQtY2xhc3MtaGVscGVyc11bZ2V0Q2xhc3NOYW1lXSB0YXJnZXQgaXMgc3RyaW5nOiAnJHt0YXJnZXR9JywgcHJvZHVjaXRvbjogJHtwcm9kdWN0aW9ufWApXG4gICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH1cbiAgICBpZiAoIV8uaXNGdW5jdGlvbih0YXJnZXQpKSB7XG4gICAgICBjb25zb2xlLmxvZyh0YXJnZXQpO1xuICAgICAgSGVscGVycy53YXJuKGBbdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzXVtnZXRDbGFzc05hbWVdIHRhcmdldCBpcyBub3QgYSBjbGFzc2ApXG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZ3MgPSBnZXRDbGFzc0NvbmZpZyh0YXJnZXQpO1xuICAgIGNvbnN0IGNvbmZpZyA9IF8uZmlyc3QoY29uZmlncyk7XG5cbiAgICBjb25zdCBjbGFzc05hbWVJbkJyb3dzZXIgPSBjb25maWc/LmNsYXNzTmFtZUluQnJvd3NlcjtcblxuICAgIGlmIChIZWxwZXJzLmlzQnJvd3NlciAmJiBfLmlzU3RyaW5nKGNsYXNzTmFtZUluQnJvd3NlcikpIHtcbiAgICAgIHJldHVybiBjbGFzc05hbWVJbkJyb3dzZXI7XG4gICAgfVxuXG4gICAgY29uc3QgY2xhc3NOYW1lID0gY29uZmlnPy5jbGFzc05hbWU7XG5cbiAgICBpZiAoY2xhc3NOYW1lKSB7XG4gICAgICByZXR1cm4gY2xhc3NOYW1lO1xuICAgIH1cblxuICAgIGlmIChwcm9kdWN0aW9uKSB7XG4gICAgICBjb25zb2xlLmxvZygnY2xhc3Mgd2l0aG91dCBAQ0xBU1MuTkFNRSBkZW9jcmF0b3InLCB0YXJnZXQgYXMgYW55KVxuICAgICAgdGhyb3cgbmV3IEVycm9yKEVSUk9SX01TR19DTEFTU19XSVRIT1VUX0RFQ09SQVRPUik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEhlbHBlcnMubG9nKCdjaGVjayBmb3IgJyArIHRhcmdldC5uYW1lKVxuICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyAgIC8vIEhlbHBlcnMubG9nKCdjaGVjayBmb3IgJyArIHRhcmdldC5uYW1lICsgJyA9PT0gJyArIGNvbmZpZy5jbGFzc05hbWUpL1xuICAgICAgLy8gICAvLyBUT0RPIHRoaXMgbWF5IHdvcmssIGJ1dCBub3QgeWV0IGluIHNpbmdsZXRvbi9tb3JwaGlcbiAgICAgIC8vICAgaWYgKCFjb25maWcuY2xhc3NOYW1lKSB7XG4gICAgICAvLyAgICAgaWYgKHRhcmdldD8ubmFtZSAmJiB0YXJnZXQubmFtZSAhPT0gJ09iamVjdCcpIHtcbiAgICAgIC8vICAgICAgIENvbmZpZ0hlbHBlcnMubG9nKGBbdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzXSBQbGVhc2UgdXNlIEBDTEFTUy5OQU1FYFxuICAgICAgLy8gICAgICAgICArIGAoJyR7KHRhcmdldD8ubmFtZSAmJiAhIXRhcmdldC5uYW1lKSA/IHRhcmdldC5uYW1lIDogJy4uLid9JykgZGVjb3JhdG9yIGZvciBjbGFzcyAke3RhcmdldD8ubmFtZX1gKVxuICAgICAgLy8gICAgIH1cbiAgICAgIC8vICAgfVxuICAgICAgLy8gfSlcblxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0Lm5hbWU7XG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRPYmplY3RJbmRleFByb3BlcnR5VmFsdWUob2JqOiBhbnkpIHtcbiAgICBjb25zdCBjbGFzc05hbWUgPSBUY2hIZWxwZXJzLmdldE5hbWVGcm9tT2JqZWN0KG9iaik7XG4gICAgLy8gY29uc29sZS5sb2coJ2NsYXNzTmFtZScsY2xhc3NOYW1lKVxuICAgIGxldCBjID0gZ2V0Q2xhc3NlcygpLmZpbmQoYyA9PiBjLmNsYXNzTmFtZSA9PT0gY2xhc3NOYW1lKTtcbiAgICAvLyBjb25zb2xlLmxvZygnYycsYylcbiAgICBpZiAoYykge1xuICAgICAgcmV0dXJuIGMudW5pcXVlS2V5O1xuICAgIH1cbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgZXhwb3J0IGZ1bmN0aW9uIGdldENsYXNzRmFtaWx5QnlDbGFzc05hbWUoY2xhc3NOYW1lOiBzdHJpbmcpIHtcbiAgICBsZXQgYyA9IGdldENsYXNzZXMoKS5maW5kKGMgPT4gYy5jbGFzc05hbWUgPT09IGNsYXNzTmFtZSk7XG4gICAgLy8gY29uc29sZS5sb2coJ2dldENsYXNzZXMoKScsIGdldENsYXNzZXMoKSlcbiAgICBpZiAoYykge1xuICAgICAgcmV0dXJuIGMuY2xhc3NGYW1pbHk7XG4gICAgfVxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBleHBvcnQgZnVuY3Rpb24gZ2V0T2JqZWN0Q2xhc3NGYW1pbHkob2JqOiBhbnkpIHtcbiAgICBjb25zdCBjbGFzc05hbWUgPSBUY2hIZWxwZXJzLmdldE5hbWVGcm9tT2JqZWN0KG9iaik7XG4gICAgLy8gY29uc29sZS5sb2coJ2NsYXNzTmFtZScsY2xhc3NOYW1lKVxuICAgIGxldCBjID0gZ2V0Q2xhc3NlcygpLmZpbmQoYyA9PiBjLmNsYXNzTmFtZSA9PT0gY2xhc3NOYW1lKTtcbiAgICAvLyBjb25zb2xlLmxvZygnYycsYylcbiAgICBpZiAoYykge1xuICAgICAgcmV0dXJuIGMuY2xhc3NGYW1pbHk7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldE9iamVjdEluZGV4VmFsdWUob2JqOiBhbnkpIHtcbiAgICBjb25zdCBjbGFzc05hbWUgPSBUY2hIZWxwZXJzLmdldE5hbWVGcm9tT2JqZWN0KG9iaik7XG4gICAgLy8gY29uc29sZS5sb2coJ2NsYXNzTmFtZScsY2xhc3NOYW1lKVxuICAgIGxldCBjID0gZ2V0Q2xhc3NlcygpLmZpbmQoYyA9PiBjLmNsYXNzTmFtZSA9PT0gY2xhc3NOYW1lKTtcbiAgICAvLyBjb25zb2xlLmxvZygnYycsYylcbiAgICBpZiAoYyAmJiBfLmlzU3RyaW5nKGMudW5pcXVlS2V5KSkge1xuICAgICAgcmV0dXJuIG9ialtjLnVuaXF1ZUtleV07XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldENsYXNzQnkoY2xhc3NOYW1lOiBzdHJpbmcgfCBGdW5jdGlvbik6IEZ1bmN0aW9uIHtcbiAgICBsZXQgcmVzO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNsYXNzTmFtZSkpIHtcbiAgICAgIGlmIChjbGFzc05hbWUubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgIHRocm93IGBNYXBwaW5nIGVycm9yLi4uIHBsZWFzZSB1c2UgcHJvcGVyIGNsYXNzIG5hbWVzOlxuICB7XG4gICAgcHJvcGVydHlPYmplY3Q6ICdNeUNsYXNzTmFtZScsXG4gICAgcHJvcGVydHlXaXRoQXJyYXk6IFsnTXlDbGFzc05hbWUnXVxuICB9XG5cbiAgICAgICAgYFxuICAgICAgfVxuICAgICAgY2xhc3NOYW1lID0gY2xhc3NOYW1lWzBdXG4gICAgfVxuICAgIGlmICh0eXBlb2YgY2xhc3NOYW1lID09PSAnZnVuY3Rpb24nKSB7IC8vIFRPRE8gUVVJQ0tfRklYXG4gICAgICByZXMgPSBjbGFzc05hbWU7XG4gICAgfVxuICAgIGlmIChjbGFzc05hbWUgPT09ICdEYXRlJykge1xuICAgICAgcmVzID0gRGF0ZTtcbiAgICB9XG5cbiAgICBsZXQgYyA9IGdldENsYXNzZXMoKS5maW5kKGMgPT4gYy5jbGFzc05hbWUgPT09IGNsYXNzTmFtZSk7XG5cbiAgICBpZiAoYykge1xuICAgICAgcmVzID0gYy50YXJnZXQ7XG4gICAgfVxuICAgIC8vIGNvbnNvbGUubG9nKGBnZXRDbGFzc0J5IFwiJHtjbGFzc05hbWV9IHJldHVybiBcXG5cXG4gJHtyZXN9IFxcblxcbmApXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiByZXM7XG4gIH1cblxufVxuIl19
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { _ } from 'tnp-core/websql';
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpYmUtY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItYnVuZGxlLXdlYnNxbC90eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvcHJvamVjdHMvdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3NyYy9saWIvZGVzY3JpYmUtY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFJbkM7OztJQUdJO0FBQ0osTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUNuRCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsTUFBZ0IsRUFBRSxNQUFNLEdBQUcsS0FBSztJQUN6RSxhQUFhO0lBQ2IsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLElBQUksTUFBTSxFQUFFO1FBQ1YsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEQsSUFBSSxLQUFLLEVBQUU7WUFDVCxhQUFhO1lBQ2IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQy9FO0tBQ0Y7SUFDRCxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzlELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFFdEQsQ0FBQztBQUVEOzs7S0FHSztBQUNMLE1BQU0sVUFBVSxpQ0FBaUMsQ0FBQyxNQUFnQjtJQUNoRSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUE7SUFDWixJQUFJLE1BQU0sRUFBRTtRQUNWLGFBQWE7UUFDYixJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDaEMsYUFBYTtZQUNiLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztpQkFDdEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNaLGFBQWE7Z0JBQ2IsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQztpQkFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2IsYUFBYTtnQkFDYixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUNELGFBQWE7UUFDYixJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN0QixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNsQixNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztxQkFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ2IsYUFBYTtvQkFDYixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUNsQixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFBO1NBQ0g7YUFBTSxJQUFJLE9BQU8sRUFBRTtZQUVsQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztpQkFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNiLGFBQWE7Z0JBQ2IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNsQixDQUFDLENBQUMsQ0FBQztTQUNOO0tBQ0Y7SUFFRCxJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4RSxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5pbXBvcnQgeyBTWU1CT0wgfSBmcm9tICcuL3N5bWJvbHMnO1xuXG5cblxuLyoqXG4gICogQERFUFJFQ0FURURcbiAgKiBEZXNjcmliZSBmaWVsZHMgYXNzaWduZWQgaW4gY2xhc3NcbiAgKi9cbmNvbnN0IEZSZWdFeCA9IG5ldyBSZWdFeHAoLyg/OnRoaXNcXC4pKC4rPyg/PSApKS9nKTtcbmV4cG9ydCBmdW5jdGlvbiBkZXNjcmliZUZyb21DbGFzc1N0cmluZ2lmeSh0YXJnZXQ6IEZ1bmN0aW9uLCBwYXJlbnQgPSBmYWxzZSk6IHN0cmluZ1tdIHtcbiAgLy8gQHRzLWlnbm9yZVxuICB2YXIgcmVzdWx0ID0gW107XG4gIGlmIChwYXJlbnQpIHtcbiAgICB2YXIgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGFyZ2V0LnByb3RvdHlwZSk7XG4gICAgaWYgKHByb3RvKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KGRlc2NyaWJlRnJvbUNsYXNzU3RyaW5naWZ5KHByb3RvLmNvbnN0cnVjdG9yLCBwYXJlbnQpKTtcbiAgICB9XG4gIH1cbiAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdCh0YXJnZXQudG9TdHJpbmcoKS5tYXRjaChGUmVnRXgpIHx8IFtdKTtcbiAgcmV0dXJuIHJlc3VsdC5tYXAocHJvcCA9PiBwcm9wLnJlcGxhY2UoJ3RoaXMuJywgJycpKVxuXG59XG5cbi8qKlxuICAgKiBEZXNjcmliZSBmaWVsZHMgYXNzaWduZSB0aHJvdWdoIEBEZWZhdWx0TW9kZWxXaXRoTWFwcGluZyBkZWNvcmF0b3JcbiAgICogd2l0aG91dCBmdW5jdGlvbnNcbiAgICovXG5leHBvcnQgZnVuY3Rpb24gZGVzY3JpYmVCeURlZmF1bHRNb2RlbHNBbmRNYXBwaW5nKHRhcmdldDogRnVuY3Rpb24pOiBzdHJpbmdbXSB7XG4gIGxldCByZXMgPSB7fVxuICBpZiAodGFyZ2V0KSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICh0YXJnZXRbU1lNQk9MLkRFRkFVTFRfTU9ERUxdKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBPYmplY3Qua2V5cyh0YXJnZXRbU1lNQk9MLkRFRkFVTFRfTU9ERUxdKVxuICAgICAgICAuZmlsdGVyKGtleSA9PiB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHJldHVybiAhXy5pc0Z1bmN0aW9uKHRhcmdldFtTWU1CT0wuREVGQVVMVF9NT0RFTF1ba2V5XSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHJldHVybiByZXNba2V5XSA9IG51bGw7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgbGV0IG1hcHBpbmcgPSB0YXJnZXRbU1lNQk9MLk1PREVMU19NQVBQSU5HXTtcbiAgICBpZiAoXy5pc0FycmF5KG1hcHBpbmcpKSB7XG4gICAgICBtYXBwaW5nLmZvckVhY2gobSA9PiB7XG4gICAgICAgIE9iamVjdC5rZXlzKG0pXG4gICAgICAgICAgLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHJlc1trZXldID0gbnVsbDtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgfSBlbHNlIGlmIChtYXBwaW5nKSB7XG5cbiAgICAgIE9iamVjdC5rZXlzKG1hcHBpbmcpXG4gICAgICAgIC5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHJlc1trZXldID0gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbGV0IHByb3BOYW1lcyA9IE9iamVjdC5rZXlzKHJlcykuZmlsdGVyKGYgPT4gISFmKTtcbiAgcHJvcE5hbWVzID0gKCFwcm9wTmFtZXMuaW5jbHVkZXMoJ2lkJykgPyBbJ2lkJ10gOiBbXSkuY29uY2F0KHByb3BOYW1lcyk7XG4gIHJldHVybiBwcm9wTmFtZXM7XG59XG4iXX0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const ERROR_MSG_CLASS_WITHOUT_DECORATOR = `[typescript-class-helpers][getClassName(...)](PRODUCTION MODE ERROR)
|
|
2
|
+
Please use decoartor @CLASSNAME for each entity or controller
|
|
3
|
+
This is preventing class name problem in minified code.
|
|
4
|
+
|
|
5
|
+
import { CLASS } from 'typescript-class-helpers';
|
|
6
|
+
|
|
7
|
+
@CLASS.NAME('ExampleClass')
|
|
8
|
+
class ExampleClass {
|
|
9
|
+
...
|
|
10
|
+
}
|
|
11
|
+
`;
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLW1lc3NhZ2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS13ZWJzcWwvdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3Byb2plY3RzL3R5cGVzY3JpcHQtY2xhc3MtaGVscGVycy9zcmMvbGliL2Vycm9ycy1tZXNzYWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBRzs7Ozs7Ozs7OztDQVVoRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEVSUk9SX01TR19DTEFTU19XSVRIT1VUX0RFQ09SQVRPUiA9IGBbdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzXVtnZXRDbGFzc05hbWUoLi4uKV0oUFJPRFVDVElPTiBNT0RFIEVSUk9SKVxuUGxlYXNlIHVzZSBkZWNvYXJ0b3IgQENMQVNTTkFNRSBmb3IgZWFjaCBlbnRpdHkgb3IgY29udHJvbGxlclxuVGhpcyBpcyBwcmV2ZW50aW5nIGNsYXNzIG5hbWUgcHJvYmxlbSBpbiBtaW5pZmllZCBjb2RlLlxuXG5pbXBvcnQgeyBDTEFTUyB9IGZyb20gJ3R5cGVzY3JpcHQtY2xhc3MtaGVscGVycyc7XG5cbkBDTEFTUy5OQU1FKCdFeGFtcGxlQ2xhc3MnKVxuY2xhc3MgRXhhbXBsZUNsYXNzIHtcbiAgLi4uXG59XG5gO1xuIl19
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { _ } from 'tnp-core/websql';
|
|
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 TchHelpers {
|
|
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 getConfigs(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: TchHelpers.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 = TchHelpers.getConfigs(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 = TchHelpers.getConfigs(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
|
+
getConfigs: TchHelpers.getConfigs,
|
|
78
|
+
getConfig: (target) => {
|
|
79
|
+
return _.first(TchHelpers.getConfigs(target));
|
|
80
|
+
},
|
|
81
|
+
getFromObject: TchHelpers.getFromObject,
|
|
82
|
+
getName: TchHelpers.getName,
|
|
83
|
+
getNameFromObject: TchHelpers.getNameFromObject,
|
|
84
|
+
describeProperites: TchHelpers.describeProperites,
|
|
85
|
+
OBJECT: (obj) => {
|
|
86
|
+
return {
|
|
87
|
+
get indexValue() {
|
|
88
|
+
return CLASSNAME.getObjectIndexValue(obj);
|
|
89
|
+
},
|
|
90
|
+
get indexProperty() {
|
|
91
|
+
return CLASSNAME.getObjectIndexPropertyValue(obj);
|
|
92
|
+
},
|
|
93
|
+
get isClassObject() {
|
|
94
|
+
if (!_.isObject(obj) || _.isArray(obj) || _.isRegExp(obj) ||
|
|
95
|
+
_.isBuffer(obj) || _.isArrayBuffer(obj)) {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
if (_.isDate(obj)) {
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
const className = CLASS.getNameFromObject(obj);
|
|
102
|
+
return _.isString(className) && className !== 'Object';
|
|
103
|
+
},
|
|
104
|
+
isEqual: (anotherObj, compareDeep = false) => {
|
|
105
|
+
if (!CLASS.OBJECT(obj).isClassObject || !CLASS.OBJECT(anotherObj).isClassObject) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
if (obj === anotherObj) {
|
|
109
|
+
// console.log(`EQ v1: , v2: - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`, obj, anotherObj)
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
const v1 = CLASSNAME.getObjectIndexValue(obj);
|
|
113
|
+
const v2 = CLASSNAME.getObjectIndexValue(anotherObj);
|
|
114
|
+
const f1 = CLASSNAME.getObjectClassFamily(obj);
|
|
115
|
+
const f2 = CLASSNAME.getObjectClassFamily(anotherObj);
|
|
116
|
+
const isFamilyDiff = (!_.isString(f1) || !_.isString(f2) || (f1 !== f2));
|
|
117
|
+
// console.log(`DIFF FAMILY ${isFamilyDiff} v1: ${CLASSNAME.getObjectClassFamily(obj)}, v2: ${CLASSNAME.getObjectClassFamily(anotherObj)} - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`)
|
|
118
|
+
if (isFamilyDiff) {
|
|
119
|
+
// console.log(`DIFF v1: ${v1}, v2: ${v2} - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`)
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
if (!CLASS.OBJECT(obj).isClassObject || !CLASS.OBJECT(anotherObj).isClassObject) {
|
|
123
|
+
// console.log(`NOT CLASS v1: ${v1}, v2: ${v2} - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`)
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
// console.log(`v1: ${v1} ,class ${CLASS.getNameFromObject(obj)} ,prop: ${CLASS.OBJECT(obj).indexProperty}`)
|
|
127
|
+
// console.log(`v2: ${v2} ,class ${CLASS.getNameFromObject(anotherObj)} ,prop: ${CLASS.OBJECT(anotherObj).indexProperty}`)
|
|
128
|
+
// console.log(`v1: ${v1}, v2: ${v2} - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`)
|
|
129
|
+
// console.log('')
|
|
130
|
+
if ((_.isNumber(v1) && _.isNumber(v2)) || (_.isString(v1) && _.isString(v2))) {
|
|
131
|
+
const res = (v1 === v2);
|
|
132
|
+
// @ts-ignore
|
|
133
|
+
return res;
|
|
134
|
+
}
|
|
135
|
+
if (compareDeep) {
|
|
136
|
+
return _.isEqual(v1, v2);
|
|
137
|
+
}
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
export * from 'enum-values';
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItYnVuZGxlLXdlYnNxbC90eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvcHJvamVjdHMvdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3NyYy9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLGlDQUFpQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVuQyxNQUFNLE9BQU8sVUFBVTtJQUVyQixNQUFNLENBQUMsS0FBSyxDQUFDLFNBQTRCO1FBQ3ZDLE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFTO1FBQzVCLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ25DLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRTtZQUNqQixPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUM7U0FDdEI7UUFDRCxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2xDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMs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QTBIO2dCQUMxSCw4SEFBOEg7Z0JBQzlILGtCQUFrQjtnQkFDbEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7b0JBRTVFLE1BQU0sR0FBRyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO29CQUN4QixhQUFhO29CQUNiLE9BQU8sR0FBRyxDQUFDO2lCQUNaO2dCQUNELElBQUksV0FBVyxFQUFFO29CQUNmLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7aUJBQ3pCO2dCQUNELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztTQUNGLENBQUE7SUFDSCxDQUFDO0NBQ0YsQ0FBQTtBQUVELGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5pbXBvcnQgeyBDTEFTU05BTUUgfSBmcm9tICcuL2NsYXNzbmFtZSc7XG5pbXBvcnQgeyBkZXNjcmliZUZyb21DbGFzc1N0cmluZ2lmeSwgZGVzY3JpYmVCeURlZmF1bHRNb2RlbHNBbmRNYXBwaW5nIH0gZnJvbSAnLi9kZXNjcmliZS1jbGFzcyc7XG5pbXBvcnQgeyBNb2RlbHMgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBzZXRDbGFzc05hbWUgfSBmcm9tICcuL3NldC1jbGFzcy1uYW1lJztcblxuZXhwb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuZXhwb3J0IHsgU1lNQk9MIH0gZnJvbSAnLi9zeW1ib2xzJztcblxuZXhwb3J0IGNsYXNzIFRjaEhlbHBlcnMge1xuXG4gIHN0YXRpYyBnZXRCeShjbGFzc05hbWU6IHN0cmluZyB8IEZ1bmN0aW9uKSB7XG4gICAgcmV0dXJuIENMQVNTTkFNRS5nZXRDbGFzc0J5KGNsYXNzTmFtZSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0RnJvbU9iamVjdChvOiBPYmplY3QpIHtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZChvKSB8fCBfLmlzTnVsbChvKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoby5jb25zdHJ1Y3Rvcikge1xuICAgICAgcmV0dXJuIG8uY29uc3RydWN0b3I7XG4gICAgfVxuICAgIGNvbnN0IHAgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YobylcbiAgICByZXR1cm4gcCAmJiBwLmNvbnN0cnVjdG9yO1xuICB9XG5cbiAgc3RhdGljIGdldE5hbWUodGFyZ2V0OiBGdW5jdGlvbiwgcHJvZHVjdGlvbiA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIENMQVNTTkFNRS5nZXRDbGFzc05hbWUodGFyZ2V0LCBwcm9kdWN0aW9uKSBhcyBzdHJpbmc7XG4gIH1cblxuICBzdGF0aWMgZ2V0TmFtZUZyb21PYmplY3QobzogT2JqZWN0KSB7XG4gICAgY29uc3QgZm5DTGFzcyA9IHRoaXMuZ2V0RnJvbU9iamVjdChvKTtcbiAgICByZXR1cm4gdGhpcy5nZXROYW1lKGZuQ0xhc3MpO1xuICB9XG5cbiAgc3RhdGljIGdldENvbmZpZ3ModGFyZ2V0OiBGdW5jdGlvbik6IE1vZGVscy5DbGFzc0NvbmZpZ1tdIHtcbiAgICByZXR1cm4gQ0xBU1NOQU1FLmdldENsYXNzQ29uZmlnKHRhcmdldClcbiAgfVxuXG4gIHN0YXRpYyBkZXNjcmliZVByb3Blcml0ZXModGFyZ2V0OiBGdW5jdGlvbikge1xuICAgIGNvbnN0IGQxID0gZGVzY3JpYmVGcm9tQ2xhc3NTdHJpbmdpZnkodGFyZ2V0KTtcbiAgICBjb25zdCBkMiA9IGRlc2NyaWJlQnlEZWZhdWx0TW9kZWxzQW5kTWFwcGluZyh0YXJnZXQpO1xuICAgIGxldCB1bmlxID0ge307XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGQxLmNvbmNhdChkMikuZm9yRWFjaChwID0+IHVuaXFbcF0gPSBwKTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModW5pcSlcbiAgICAgIC5maWx0ZXIoZCA9PiAhIWQpXG4gICAgICAuZmlsdGVyKGQgPT4gdHlwZW9mIHRhcmdldC5wcm90b3R5cGVbZF0gIT09ICdmdW5jdGlvbicpXG4gIH1cblxufVxuXG5cbmV4cG9ydCBjb25zdCBDTEFTUyA9IHtcbiAgTkFNRTogQ0xBU1NOQU1FLkNMQVNTTkFNRSxcbiAgc2V0TmFtZTogc2V0Q2xhc3NOYW1lLFxuICBnZXRCeTogVGNoSGVscGVycy5nZXRCeSxcbiAgZ2V0U2luZ2xldG9uPFQgPSBhbnk+KHRhcmdldDogRnVuY3Rpb24pIHtcbiAgICBpZiAodHlwZW9mIHRhcmdldCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc29sZS5lcnJvcihgW3R5cGVzY3JpcHQtY2xhc3MtaGVscGVyc11bc2V0U2luZ2xldG9uT2JqXSBUeXBlIG9mIHRhcmdldCBpcyBub3QgYSBmdW5jdGlvbmApXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3QgY29uZmlnID0gVGNoSGVscGVycy5nZXRDb25maWdzKHRhcmdldClbMF1cbiAgICAvLyBjb25zb2xlLmxvZyhgZ2V0U2luZ2xldG9uIGZvciAke3RhcmdldC5uYW1lfTogYCwgY29uZmlnLnNpbmdsZXRvbilcblxuICAgIHJldHVybiBjb25maWcuc2luZ2xldG9uIGFzIFQ7XG4gIH0sXG4gIHNldFNpbmdsZXRvbk9iaih0YXJnZXQ6IEZ1bmN0aW9uLCBzaW5nbGV0b25PYmplY3Q6IGFueSkge1xuICAgIC8vIGNvbnNvbGUubG9nKCdTRVQgU0lOR0xFVE9OJywgc2luZ2xldG9uT2JqZWN0KVxuICAgIGlmICh0eXBlb2YgdGFyZ2V0ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBbdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzXVtzZXRTaW5nbGV0b25PYmpdIFR5cGUgb2YgdGFyZ2V0IGlzIG5vdCBhIGZ1bmN0aW9uYClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHNpbmdsZXRvbk9iamVjdCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFt0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnNdW3NldFNpbmdsZXRvbk9ial0gU2luZ2xldG9uIGluc3RhbmNlIGNhbnQgYmUgYW4gYXJyYXlgKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBzaW5nbGV0b25PYmplY3QgIT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBbdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzXVtzZXRTaW5nbGV0b25PYmpdIFNpbmdsZXRvbiBpbnN0YW5jZSBjYW50IG11c3QgYmUgYSBvYmplY3RgKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgY2xhc3NOYW1lID0gQ0xBU1MuZ2V0TmFtZSh0YXJnZXQpO1xuXG5cbiAgICAvLyBjb25zb2xlLmxvZyhgU0lOR0xFVE9OIFNFVCBmb3IgVEFSR0VUICR7Y2xhc3NOYW1lfWApXG4gICAgY29uc3QgY29uZmlnID0gVGNoSGVscGVycy5nZXRDb25maWdzKHRhcmdldClbMF1cblxuICAgIGlmIChjb25maWcuc2luZ2xldG9uKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFt0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnNdIFlvdSBhcmUgdHJ5aW5nIHRvIHNldCBzaW5nbGV0b24gb2YgXCIke2NsYXNzTmFtZX1cIiBzZWNvbmQgdGltZSB3aXRoIGRpZmZlcmVudCBvYmplY3QuYClcbiAgICB9XG5cbiAgICBjb25maWcuc2luZ2xldG9uID0gc2luZ2xldG9uT2JqZWN0O1xuICB9LFxuICBnZXRDb25maWdzOiBUY2hIZWxwZXJzLmdldENvbmZpZ3MsXG4gIGdldENvbmZpZzogKHRhcmdldDogRnVuY3Rpb24pID0+IHtcbiAgICByZXR1cm4gXy5maXJzdChUY2hIZWxwZXJzLmdldENvbmZpZ3ModGFyZ2V0KSk7XG4gIH0sXG4gIGdldEZyb21PYmplY3Q6IFRjaEhlbHBlcnMuZ2V0RnJvbU9iamVjdCxcbiAgZ2V0TmFtZTogVGNoSGVscGVycy5nZXROYW1lLFxuICBnZXROYW1lRnJvbU9iamVjdDogVGNoSGVscGVycy5nZXROYW1lRnJvbU9iamVjdCxcbiAgZGVzY3JpYmVQcm9wZXJpdGVzOiBUY2hIZWxwZXJzLmRlc2NyaWJlUHJvcGVyaXRlcyxcbiAgT0JKRUNUOiAob2JqOiBhbnkpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0IGluZGV4VmFsdWUoKSB7XG4gICAgICAgIHJldHVybiBDTEFTU05BTUUuZ2V0T2JqZWN0SW5kZXhWYWx1ZShvYmopO1xuICAgICAgfSxcbiAgICAgIGdldCBpbmRleFByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gQ0xBU1NOQU1FLmdldE9iamVjdEluZGV4UHJvcGVydHlWYWx1ZShvYmopO1xuICAgICAgfSxcbiAgICAgIGdldCBpc0NsYXNzT2JqZWN0KCkge1xuXG4gICAgICAgIGlmICghXy5pc09iamVjdChvYmopIHx8IF8uaXNBcnJheShvYmopIHx8IF8uaXNSZWdFeHAob2JqKSB8fFxuICAgICAgICAgIF8uaXNCdWZmZXIob2JqKSB8fCBfLmlzQXJyYXlCdWZmZXIob2JqKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXy5pc0RhdGUob2JqKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IENMQVNTLmdldE5hbWVGcm9tT2JqZWN0KG9iailcbiAgICAgICAgcmV0dXJuIF8uaXNTdHJpbmcoY2xhc3NOYW1lKSAmJiBjbGFzc05hbWUgIT09ICdPYmplY3QnO1xuICAgICAgfSxcbiAgICAgIGlzRXF1YWw6IChhbm90aGVyT2JqOiBhbnksIGNvbXBhcmVEZWVwID0gZmFsc2UpID0+IHtcbiAgICAgICAgaWYgKCFDTEFTUy5PQkpFQ1Qob2JqKS5pc0NsYXNzT2JqZWN0IHx8ICFDTEFTUy5PQkpFQ1QoYW5vdGhlck9iaikuaXNDbGFzc09iamVjdCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob2JqID09PSBhbm90aGVyT2JqKSB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coYEVRIHYxOiAsIHYyOiAgLSBjbGFzczEgJHtDTEFTUy5nZXROYW1lRnJvbU9iamVjdChvYmopfSwgY2xhc3MyICR7Q0xBU1MuZ2V0TmFtZUZyb21PYmplY3QoYW5vdGhlck9iail9YCwgb2JqLCBhbm90aGVyT2JqKVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHYxID0gQ0xBU1NOQU1FLmdldE9iamVjdEluZGV4VmFsdWUob2JqKTtcbiAgICAgICAgY29uc3QgdjIgPSBDTEFTU05BTUUuZ2V0T2JqZWN0SW5kZXhWYWx1ZShhbm90aGVyT2JqKTtcbiAgICAgICAgY29uc3QgZjEgPSBDTEFTU05BTUUuZ2V0T2JqZWN0Q2xhc3NGYW1pbHkob2JqKVxuICAgICAgICBjb25zdCBmMiA9IENMQVNTTkFNRS5nZXRPYmplY3RDbGFzc0ZhbWlseShhbm90aGVyT2JqKVxuICAgICAgICBjb25zdCBpc0ZhbWlseURpZmYgPSAoIV8uaXNTdHJpbmcoZjEpIHx8ICFfLmlzU3RyaW5nKGYyKSB8fCAoZjEgIT09IGYyKSk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBESUZGIEZBTUlMWSAke2lzRmFtaWx5RGlmZn0gdjE6ICR7Q0xBU1NOQU1FLmdldE9iamVjdENsYXNzRmFtaWx5KG9iail9LCB2MjogJHtDTEFTU05BTUUuZ2V0T2JqZWN0Q2xhc3NGYW1pbHkoYW5vdGhlck9iail9IC0gY2xhc3MxICR7Q0xBU1MuZ2V0TmFtZUZyb21PYmplY3Qob2JqKX0sIGNsYXNzMiAke0NMQVNTLmdldE5hbWVGcm9tT2JqZWN0KGFub3RoZXJPYmopfWApXG4gICAgICAgIGlmIChpc0ZhbWlseURpZmYpIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhgRElGRiB2MTogJHt2MX0sIHYyOiAke3YyfSAtIGNsYXNzMSAke0NMQVNTLmdldE5hbWVGcm9tT2JqZWN0KG9iail9LCBjbGFzczIgJHtDTEFTUy5nZXROYW1lRnJvbU9iamVjdChhbm90aGVyT2JqKX1gKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIUNMQVNTLk9CSkVDVChvYmopLmlzQ2xhc3NPYmplY3QgfHwgIUNMQVNTLk9CSkVDVChhbm90aGVyT2JqKS5pc0NsYXNzT2JqZWN0KSB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coYE5PVCBDTEFTUyB2MTogJHt2MX0sIHYyOiAke3YyfSAtIGNsYXNzMSAke0NMQVNTLmdldE5hbWVGcm9tT2JqZWN0KG9iail9LCBjbGFzczIgJHtDTEFTUy5nZXROYW1lRnJvbU9iamVjdChhbm90aGVyT2JqKX1gKVxuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gY29uc29sZS5sb2coYHYxOiAke3YxfSAsY2xhc3MgJHtDTEFTUy5nZXROYW1lRnJvbU9iamVjdChvYmopfSAscHJvcDogJHtDTEFTUy5PQkpFQ1Qob2JqKS5pbmRleFByb3BlcnR5fWApXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGB2MjogJHt2Mn0gLGNsYXNzICR7Q0xBU1MuZ2V0TmFtZUZyb21PYmplY3QoYW5vdGhlck9iail9ICxwcm9wOiAke0NMQVNTLk9CSkVDVChhbm90aGVyT2JqKS5pbmRleFByb3BlcnR5fWApXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGB2MTogJHt2MX0sIHYyOiAke3YyfSAtIGNsYXNzMSAke0NMQVNTLmdldE5hbWVGcm9tT2JqZWN0KG9iail9LCBjbGFzczIgJHtDTEFTUy5nZXROYW1lRnJvbU9iamVjdChhbm90aGVyT2JqKX1gKVxuICAgICAgICAvLyBjb25zb2xlLmxvZygnJylcbiAgICAgICAgaWYgKChfLmlzTnVtYmVyKHYxKSAmJiBfLmlzTnVtYmVyKHYyKSkgfHwgKF8uaXNTdHJpbmcodjEpICYmIF8uaXNTdHJpbmcodjIpKSkge1xuXG4gICAgICAgICAgY29uc3QgcmVzID0gKHYxID09PSB2Mik7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbXBhcmVEZWVwKSB7XG4gICAgICAgICAgcmV0dXJuIF8uaXNFcXVhbCh2MSwgdjIpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgKiBmcm9tICdlbnVtLXZhbHVlcyc7XG4iXX0=
|