typescript-class-helpers 13.2.11 → 13.2.12
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/assets/shared/shared_folder_info.txt +1 -1
- package/browser/README.md +24 -24
- package/browser/esm2020/lib/classname.mjs +150 -150
- package/browser/esm2020/lib/describe-class.mjs +71 -71
- package/browser/esm2020/lib/errors-messages.mjs +3 -3
- package/browser/esm2020/lib/index.mjs +134 -134
- package/browser/esm2020/lib/models.mjs +26 -26
- package/browser/esm2020/lib/registerd-db.mjs +5 -5
- package/browser/esm2020/lib/set-class-name.mjs +89 -89
- package/browser/esm2020/lib/storage.mjs +23 -23
- package/browser/esm2020/lib/symbols.mjs +7 -7
- package/browser/esm2020/public-api.mjs +1 -1
- package/browser/esm2020/typescript-class-helpers.mjs +4 -4
- package/browser/fesm2015/typescript-class-helpers.mjs +476 -476
- package/browser/fesm2020/typescript-class-helpers.mjs +476 -476
- package/browser/lib/classname.d.ts +15 -15
- package/browser/lib/describe-class.d.ts +5 -5
- package/browser/lib/index.d.ts +32 -32
- package/browser/lib/models.d.ts +66 -66
- package/browser/lib/registerd-db.d.ts +4 -4
- package/browser/lib/set-class-name.d.ts +1 -1
- package/browser/lib/symbols.d.ts +5 -5
- package/browser/typescript-class-helpers.d.ts +4 -4
- package/client/README.md +24 -24
- package/client/esm2020/lib/classname.mjs +150 -150
- package/client/esm2020/lib/describe-class.mjs +71 -71
- package/client/esm2020/lib/errors-messages.mjs +3 -3
- package/client/esm2020/lib/index.mjs +134 -134
- package/client/esm2020/lib/models.mjs +26 -26
- package/client/esm2020/lib/registerd-db.mjs +5 -5
- package/client/esm2020/lib/set-class-name.mjs +89 -89
- package/client/esm2020/lib/storage.mjs +23 -23
- package/client/esm2020/lib/symbols.mjs +7 -7
- package/client/esm2020/public-api.mjs +1 -1
- package/client/esm2020/typescript-class-helpers.mjs +4 -4
- package/client/fesm2015/typescript-class-helpers.mjs +476 -476
- package/client/fesm2020/typescript-class-helpers.mjs +476 -476
- package/client/lib/classname.d.ts +15 -15
- package/client/lib/describe-class.d.ts +5 -5
- package/client/lib/index.d.ts +32 -32
- package/client/lib/models.d.ts +66 -66
- package/client/lib/registerd-db.d.ts +4 -4
- package/client/lib/set-class-name.d.ts +1 -1
- package/client/lib/symbols.d.ts +5 -5
- package/client/package.json +28 -28
- package/client/typescript-class-helpers.d.ts +4 -4
- package/index.d.ts +1 -1
- package/index.js.map +1 -1
- package/lib/classname.d.ts +16 -16
- package/lib/classname.js.map +1 -1
- package/lib/describe-class.d.ts +6 -6
- package/lib/describe-class.js.map +1 -1
- package/lib/errors-messages.d.ts +1 -1
- package/lib/errors-messages.js.map +1 -1
- package/lib/index.d.ts +33 -33
- package/lib/index.js.map +1 -1
- package/lib/models.d.ts +68 -68
- package/lib/models.js.map +1 -1
- package/lib/registerd-db.d.ts +5 -5
- package/lib/registerd-db.js.map +1 -1
- package/lib/set-class-name.d.ts +2 -2
- package/lib/set-class-name.js.map +1 -1
- package/lib/storage.d.ts +1 -1
- package/lib/storage.js.map +1 -1
- package/lib/symbols.d.ts +6 -6
- package/lib/symbols.js.map +1 -1
- package/package.json +3 -3
- package/package.json_devDependencies.json +223 -223
- package/package.json_tnp.json5 +51 -48
- package/tmp-environment.json +34 -33
- package/websql/README.md +24 -24
- package/websql/esm2020/lib/classname.mjs +150 -150
- package/websql/esm2020/lib/describe-class.mjs +71 -71
- package/websql/esm2020/lib/errors-messages.mjs +3 -3
- package/websql/esm2020/lib/index.mjs +134 -134
- package/websql/esm2020/lib/models.mjs +24 -24
- package/websql/esm2020/lib/registerd-db.mjs +5 -5
- package/websql/esm2020/lib/set-class-name.mjs +89 -89
- package/websql/esm2020/lib/storage.mjs +23 -23
- package/websql/esm2020/lib/symbols.mjs +7 -7
- package/websql/esm2020/public-api.mjs +1 -1
- package/websql/esm2020/typescript-class-helpers.mjs +4 -4
- package/websql/fesm2015/typescript-class-helpers.mjs +474 -474
- package/websql/fesm2020/typescript-class-helpers.mjs +474 -474
- package/websql/lib/classname.d.ts +15 -15
- package/websql/lib/describe-class.d.ts +5 -5
- package/websql/lib/index.d.ts +32 -32
- package/websql/lib/models.d.ts +67 -67
- package/websql/lib/registerd-db.d.ts +4 -4
- package/websql/lib/set-class-name.d.ts +1 -1
- package/websql/lib/symbols.d.ts +5 -5
- package/websql/typescript-class-helpers.d.ts +4 -4
package/tmp-environment.json
CHANGED
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
],
|
|
14
14
|
"ignoreDepsPattern": [],
|
|
15
15
|
"dependencies": {},
|
|
16
|
-
"linkedFolders": []
|
|
16
|
+
"linkedFolders": [],
|
|
17
|
+
"npmFixes": []
|
|
17
18
|
},
|
|
18
19
|
"linkedProjects": [],
|
|
19
20
|
"smartContainerBuildTarget": "",
|
|
@@ -48,7 +49,7 @@
|
|
|
48
49
|
},
|
|
49
50
|
"name": "typescript-class-helpers",
|
|
50
51
|
"description": "Usefull helper to have in your typescript project",
|
|
51
|
-
"version": "13.2.
|
|
52
|
+
"version": "13.2.12",
|
|
52
53
|
"scripts": {
|
|
53
54
|
"test": "mocha --require ts-node/register src/**/*.spec.ts",
|
|
54
55
|
"test:watch": "mocha --compilers ts-node/register src/**/*.spec.ts --watch"
|
|
@@ -69,11 +70,11 @@
|
|
|
69
70
|
"homepage": "https://github.com/darekf77/typescript-class-helpers#readme",
|
|
70
71
|
"dependencies": {
|
|
71
72
|
"enum-values": "1.2.1",
|
|
72
|
-
"ng2-logger": "~13.1.
|
|
73
|
+
"ng2-logger": "~13.1.24"
|
|
73
74
|
},
|
|
74
75
|
"license": "MIT",
|
|
75
76
|
"private": false,
|
|
76
|
-
"lastBuildTagHash": "
|
|
77
|
+
"lastBuildTagHash": "288bb65caaab923c211a73f8da996fef9082f692",
|
|
77
78
|
"devDependencies": {
|
|
78
79
|
"@angular-devkit/build-angular": "~13.3.9",
|
|
79
80
|
"@angular-devkit/core": "~13.3.9",
|
|
@@ -145,14 +146,15 @@
|
|
|
145
146
|
"@types/watch": "1.0.0",
|
|
146
147
|
"accepts": "1.3.4",
|
|
147
148
|
"angular-material-css-vars": "5.0.0",
|
|
148
|
-
"any-project-cli": "~13.1.
|
|
149
|
+
"any-project-cli": "~13.1.26",
|
|
149
150
|
"axios": "1.3.5",
|
|
150
|
-
"background-worker-process": "~13.1.
|
|
151
|
+
"background-worker-process": "~13.1.43",
|
|
151
152
|
"base32": "0.0.7",
|
|
152
153
|
"bcryptjs": "2.4.3",
|
|
153
154
|
"better-sqlite3": "7.6.2",
|
|
154
155
|
"body-parser": "1.18.2",
|
|
155
156
|
"bootstrap": "4.6.2",
|
|
157
|
+
"bs4-breakpoint": "13.0.33",
|
|
156
158
|
"buffer-shims": "1.0.0",
|
|
157
159
|
"callsite-record": "4.1.3",
|
|
158
160
|
"chai": "4.2.0",
|
|
@@ -187,12 +189,12 @@
|
|
|
187
189
|
"file-loader": "1.1.5",
|
|
188
190
|
"file-saver": "2.0.5",
|
|
189
191
|
"firedev": "^13",
|
|
190
|
-
"firedev-crud": "~13.1.
|
|
191
|
-
"firedev-crud-deamon": "~13.1.
|
|
192
|
-
"firedev-ports": "~13.1.
|
|
193
|
-
"firedev-storage": "~13.2.
|
|
194
|
-
"firedev-typeorm": "~13.1.
|
|
195
|
-
"firedev-ui": "~13.
|
|
192
|
+
"firedev-crud": "~13.1.48",
|
|
193
|
+
"firedev-crud-deamon": "~13.1.38",
|
|
194
|
+
"firedev-ports": "~13.1.42",
|
|
195
|
+
"firedev-storage": "~13.2.35",
|
|
196
|
+
"firedev-typeorm": "~13.1.30",
|
|
197
|
+
"firedev-ui": "~13.2.7",
|
|
196
198
|
"fkill": "6.1.0",
|
|
197
199
|
"font-awesome": "4.7.0",
|
|
198
200
|
"form-data": "4.0.0",
|
|
@@ -206,18 +208,17 @@
|
|
|
206
208
|
"http-proxy-middleware": "0.19.1",
|
|
207
209
|
"http-server": "0.11.1",
|
|
208
210
|
"immutable": "4.3.0",
|
|
209
|
-
"incremental-compiler": "~13.1.
|
|
211
|
+
"incremental-compiler": "~13.1.24",
|
|
210
212
|
"inquirer": "7.3.3",
|
|
211
213
|
"inquirer-autocomplete-prompt": "1.3.0",
|
|
212
214
|
"is-elevated": "3.0.0",
|
|
213
|
-
"isomorphic-region-loader": "~13.1.
|
|
215
|
+
"isomorphic-region-loader": "~13.1.36",
|
|
214
216
|
"istanbul-instrumenter-loader": "2.0.0",
|
|
215
217
|
"jasmine-core": "4.0.0",
|
|
216
|
-
"jimp": "0.22.8",
|
|
217
218
|
"jscodeshift": "0.6.3",
|
|
218
219
|
"json-stringify-safe": "5.0.1",
|
|
219
|
-
"json10": "~13.1.
|
|
220
|
-
"json10-writer": "~13.1.
|
|
220
|
+
"json10": "~13.1.43",
|
|
221
|
+
"json10-writer": "~13.1.39",
|
|
221
222
|
"json5": "2.1.3",
|
|
222
223
|
"json5-writer": "0.2.0",
|
|
223
224
|
"jszip": "3.10.1",
|
|
@@ -231,20 +232,20 @@
|
|
|
231
232
|
"localforage": "1.10.0",
|
|
232
233
|
"lockfile": "1.0.4",
|
|
233
234
|
"lodash": "4.17.4",
|
|
234
|
-
"lodash-walk-object": "~13.1.
|
|
235
|
+
"lodash-walk-object": "~13.1.43",
|
|
235
236
|
"lowdb": "1.0.0",
|
|
236
|
-
"magic-renamer": "~13.1.
|
|
237
|
+
"magic-renamer": "~13.1.40",
|
|
237
238
|
"material-design-icons": "3.0.1",
|
|
238
239
|
"method-override": "2.3.10",
|
|
239
240
|
"minimist": "1.2.0",
|
|
240
241
|
"mkdirp": "0.5.1",
|
|
241
242
|
"mocha": "5.2.0",
|
|
242
243
|
"moment": "2.22.2",
|
|
243
|
-
"morphi": "~13.2.
|
|
244
|
+
"morphi": "~13.2.10",
|
|
244
245
|
"ng-in-viewport": "13.0.1",
|
|
245
246
|
"ng-packagr": "13.0.0",
|
|
246
247
|
"ng-talkback": "~13.1.19",
|
|
247
|
-
"ng2-rest": "~13.2.
|
|
248
|
+
"ng2-rest": "~13.2.7",
|
|
248
249
|
"ngx-ace-wrapper": "12",
|
|
249
250
|
"ngx-editor": "12.2.1",
|
|
250
251
|
"ngx-highlightjs": "6.1.3",
|
|
@@ -289,21 +290,21 @@
|
|
|
289
290
|
"string-similarity": "4.0.2",
|
|
290
291
|
"sudo-block": "3.0.0",
|
|
291
292
|
"systeminformation": "3.45.7",
|
|
293
|
+
"task.js": "0.1.5",
|
|
292
294
|
"threads": "1.7.0",
|
|
293
|
-
"tnp-cli": "~13.1.
|
|
294
|
-
"tnp-config": "~13.1.
|
|
295
|
-
"tnp-core": "~13.2.
|
|
296
|
-
"tnp-db": "~13.1.
|
|
297
|
-
"tnp-helpers": "~13.1.
|
|
298
|
-
"tnp-models": "~13.1.
|
|
299
|
-
"tnp-ui": "~13.1.27",
|
|
295
|
+
"tnp-cli": "~13.1.59",
|
|
296
|
+
"tnp-config": "~13.1.75",
|
|
297
|
+
"tnp-core": "~13.2.19",
|
|
298
|
+
"tnp-db": "~13.1.20",
|
|
299
|
+
"tnp-helpers": "~13.1.37",
|
|
300
|
+
"tnp-models": "~13.1.26",
|
|
300
301
|
"ts-debug": "1.3.0",
|
|
301
302
|
"ts-loader": "2.3.1",
|
|
302
303
|
"ts-node": "10.7.0",
|
|
303
304
|
"tslib": "~2.3.0",
|
|
304
305
|
"typeorm": "~0.3.10",
|
|
305
306
|
"typescript": "~4.6.2",
|
|
306
|
-
"typescript-class-helpers": "~13.2.
|
|
307
|
+
"typescript-class-helpers": "~13.2.11",
|
|
307
308
|
"typescript-formatter": "~7.2.2",
|
|
308
309
|
"underscore": "1.9.1",
|
|
309
310
|
"uuid": "8.3.2",
|
|
@@ -316,9 +317,9 @@
|
|
|
316
317
|
}
|
|
317
318
|
},
|
|
318
319
|
"build": {
|
|
319
|
-
"number":
|
|
320
|
-
"date": "2023-
|
|
321
|
-
"hash": "
|
|
320
|
+
"number": 319,
|
|
321
|
+
"date": "2023-06-01T12:42:51.000Z",
|
|
322
|
+
"hash": "b6c184679ad8e60c06955aa3b05370b2501fd437",
|
|
322
323
|
"options": {}
|
|
323
324
|
},
|
|
324
325
|
"currentProjectName": "typescript-class-helpers",
|
|
@@ -326,7 +327,7 @@
|
|
|
326
327
|
"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\"]}]}",
|
|
327
328
|
"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\"}]}",
|
|
328
329
|
"currentProjectType": "isomorphic-lib",
|
|
329
|
-
"currentFrameworkVersion": "13.1.
|
|
330
|
+
"currentFrameworkVersion": "13.1.198",
|
|
330
331
|
"currentProjectIsStrictSite": false,
|
|
331
332
|
"currentProjectIsDependencySite": false,
|
|
332
333
|
"currentProjectIsStatic": false,
|
package/websql/README.md
CHANGED
|
@@ -1,24 +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.
|
|
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.
|
|
@@ -1,157 +1,157 @@
|
|
|
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
|
-
/* */
|
|
11
|
-
/* */
|
|
12
|
-
function getClasses() {
|
|
13
|
-
const s = getStorage();
|
|
14
|
-
return s[SYMBOL.CLASSES];
|
|
15
|
-
}
|
|
16
|
-
export var CLASSNAME;
|
|
17
|
-
(function (CLASSNAME_1) {
|
|
18
|
-
function getClassConfig(target, configs = [], callerTarget) {
|
|
19
|
-
if (!_.isFunction(target)) {
|
|
20
|
-
throw `[typescript-class-helper][getClassConfig] Cannot get class config from: ${target}`;
|
|
21
|
-
}
|
|
22
|
-
let config;
|
|
23
|
-
const parentClass = Object.getPrototypeOf(target);
|
|
24
|
-
const isValidParent = (_.isFunction(parentClass) && parentClass.name !== '');
|
|
25
|
-
if (registerd.classes.includes(target)) {
|
|
26
|
-
config = registerd.configs[registerd.classes.findIndex(c => c === target)];
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
config = new Models.ClassConfig();
|
|
30
|
-
config.classReference = target;
|
|
31
|
-
registerd.classes.push(target);
|
|
32
|
-
}
|
|
33
|
-
registerd.configs[registerd.classes.findIndex(c => c === target)] = config;
|
|
34
|
-
if (callerTarget) {
|
|
35
|
-
const callerTargetConfig = registerd.configs[registerd.classes.findIndex(c => c === callerTarget)];
|
|
36
|
-
if (!config.vChildren.includes(callerTargetConfig)) {
|
|
37
|
-
config.vChildren.push(callerTargetConfig);
|
|
38
|
-
}
|
|
39
|
-
callerTargetConfig.vParent = config;
|
|
40
|
-
}
|
|
41
|
-
configs.push(config);
|
|
42
|
-
return isValidParent ? getClassConfig(parentClass, configs, target) : configs;
|
|
43
|
-
}
|
|
44
|
-
CLASSNAME_1.getClassConfig = getClassConfig;
|
|
45
|
-
/**
|
|
46
|
-
* PLEASE PROVIDE NAME AS TYPED STRING, NOT VARIABLE
|
|
47
|
-
* Decorator requred for production mode
|
|
48
|
-
* @param name Name of class
|
|
49
|
-
*/
|
|
50
|
-
function CLASSNAME(className, options) {
|
|
51
|
-
return function (target) {
|
|
52
|
-
return setClassName(target, className, options);
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
CLASSNAME_1.CLASSNAME = CLASSNAME;
|
|
56
|
-
function getClassName(target, production = false) {
|
|
57
|
-
if (_.isNil(target)) {
|
|
58
|
-
return void 0;
|
|
59
|
-
}
|
|
60
|
-
if (_.isString(target)) {
|
|
61
|
-
console.log(target);
|
|
62
|
-
Helpers.warn(`[typescript-class-helpers][getClassName] target is string: '${target}', produciton: ${production}`);
|
|
63
|
-
return target;
|
|
64
|
-
}
|
|
65
|
-
if (!_.isFunction(target)) {
|
|
66
|
-
console.log(target);
|
|
67
|
-
Helpers.warn(`[typescript-class-helpers][getClassName] target is not a class`);
|
|
68
|
-
return void 0;
|
|
69
|
-
}
|
|
70
|
-
const configs = getClassConfig(target);
|
|
71
|
-
const config = _.first(configs);
|
|
72
|
-
const classNameInBrowser = config?.classNameInBrowser;
|
|
73
|
-
if (Helpers.isBrowser && _.isString(classNameInBrowser)) {
|
|
74
|
-
return classNameInBrowser;
|
|
75
|
-
}
|
|
76
|
-
const className = config?.className;
|
|
77
|
-
if (className) {
|
|
78
|
-
return className;
|
|
79
|
-
}
|
|
80
|
-
if (production) {
|
|
81
|
-
console.log('class without @CLASS.NAME deocrator', target);
|
|
82
|
-
throw new Error(ERROR_MSG_CLASS_WITHOUT_DECORATOR);
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
}
|
|
86
|
-
return target.name;
|
|
87
|
-
}
|
|
88
|
-
CLASSNAME_1.getClassName = getClassName;
|
|
89
|
-
// @ts-ignore
|
|
90
|
-
function getObjectIndexPropertyValue(obj) {
|
|
91
|
-
const className = TchHelpers.getNameFromObject(obj);
|
|
92
|
-
let c = getClasses().find(c => c.className === className);
|
|
93
|
-
if (c) {
|
|
94
|
-
return c.uniqueKey;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
CLASSNAME_1.getObjectIndexPropertyValue = getObjectIndexPropertyValue;
|
|
98
|
-
// @ts-ignore
|
|
99
|
-
function getClassFamilyByClassName(className) {
|
|
100
|
-
let c = getClasses().find(c => c.className === className);
|
|
101
|
-
if (c) {
|
|
102
|
-
return c.classFamily;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
CLASSNAME_1.getClassFamilyByClassName = getClassFamilyByClassName;
|
|
106
|
-
// @ts-ignore
|
|
107
|
-
function getObjectClassFamily(obj) {
|
|
108
|
-
const className = TchHelpers.getNameFromObject(obj);
|
|
109
|
-
let c = getClasses().find(c => c.className === className);
|
|
110
|
-
if (c) {
|
|
111
|
-
return c.classFamily;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
CLASSNAME_1.getObjectClassFamily = getObjectClassFamily;
|
|
115
|
-
function getObjectIndexValue(obj) {
|
|
116
|
-
const className = TchHelpers.getNameFromObject(obj);
|
|
117
|
-
let c = getClasses().find(c => c.className === className);
|
|
118
|
-
if (c && _.isString(c.uniqueKey)) {
|
|
119
|
-
return obj[c.uniqueKey];
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
CLASSNAME_1.getObjectIndexValue = getObjectIndexValue;
|
|
123
|
-
function getClassBy(className) {
|
|
124
|
-
let res;
|
|
125
|
-
if (Array.isArray(className)) {
|
|
126
|
-
if (className.length !== 1) {
|
|
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
|
+
/* */
|
|
11
|
+
/* */
|
|
12
|
+
function getClasses() {
|
|
13
|
+
const s = getStorage();
|
|
14
|
+
return s[SYMBOL.CLASSES];
|
|
15
|
+
}
|
|
16
|
+
export var CLASSNAME;
|
|
17
|
+
(function (CLASSNAME_1) {
|
|
18
|
+
function getClassConfig(target, configs = [], callerTarget) {
|
|
19
|
+
if (!_.isFunction(target)) {
|
|
20
|
+
throw `[typescript-class-helper][getClassConfig] Cannot get class config from: ${target}`;
|
|
21
|
+
}
|
|
22
|
+
let config;
|
|
23
|
+
const parentClass = Object.getPrototypeOf(target);
|
|
24
|
+
const isValidParent = (_.isFunction(parentClass) && parentClass.name !== '');
|
|
25
|
+
if (registerd.classes.includes(target)) {
|
|
26
|
+
config = registerd.configs[registerd.classes.findIndex(c => c === target)];
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
config = new Models.ClassConfig();
|
|
30
|
+
config.classReference = target;
|
|
31
|
+
registerd.classes.push(target);
|
|
32
|
+
}
|
|
33
|
+
registerd.configs[registerd.classes.findIndex(c => c === target)] = config;
|
|
34
|
+
if (callerTarget) {
|
|
35
|
+
const callerTargetConfig = registerd.configs[registerd.classes.findIndex(c => c === callerTarget)];
|
|
36
|
+
if (!config.vChildren.includes(callerTargetConfig)) {
|
|
37
|
+
config.vChildren.push(callerTargetConfig);
|
|
38
|
+
}
|
|
39
|
+
callerTargetConfig.vParent = config;
|
|
40
|
+
}
|
|
41
|
+
configs.push(config);
|
|
42
|
+
return isValidParent ? getClassConfig(parentClass, configs, target) : configs;
|
|
43
|
+
}
|
|
44
|
+
CLASSNAME_1.getClassConfig = getClassConfig;
|
|
45
|
+
/**
|
|
46
|
+
* PLEASE PROVIDE NAME AS TYPED STRING, NOT VARIABLE
|
|
47
|
+
* Decorator requred for production mode
|
|
48
|
+
* @param name Name of class
|
|
49
|
+
*/
|
|
50
|
+
function CLASSNAME(className, options) {
|
|
51
|
+
return function (target) {
|
|
52
|
+
return setClassName(target, className, options);
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
CLASSNAME_1.CLASSNAME = CLASSNAME;
|
|
56
|
+
function getClassName(target, production = false) {
|
|
57
|
+
if (_.isNil(target)) {
|
|
58
|
+
return void 0;
|
|
59
|
+
}
|
|
60
|
+
if (_.isString(target)) {
|
|
61
|
+
console.log(target);
|
|
62
|
+
Helpers.warn(`[typescript-class-helpers][getClassName] target is string: '${target}', produciton: ${production}`);
|
|
63
|
+
return target;
|
|
64
|
+
}
|
|
65
|
+
if (!_.isFunction(target)) {
|
|
66
|
+
console.log(target);
|
|
67
|
+
Helpers.warn(`[typescript-class-helpers][getClassName] target is not a class`);
|
|
68
|
+
return void 0;
|
|
69
|
+
}
|
|
70
|
+
const configs = getClassConfig(target);
|
|
71
|
+
const config = _.first(configs);
|
|
72
|
+
const classNameInBrowser = config?.classNameInBrowser;
|
|
73
|
+
if (Helpers.isBrowser && _.isString(classNameInBrowser)) {
|
|
74
|
+
return classNameInBrowser;
|
|
75
|
+
}
|
|
76
|
+
const className = config?.className;
|
|
77
|
+
if (className) {
|
|
78
|
+
return className;
|
|
79
|
+
}
|
|
80
|
+
if (production) {
|
|
81
|
+
console.log('class without @CLASS.NAME deocrator', target);
|
|
82
|
+
throw new Error(ERROR_MSG_CLASS_WITHOUT_DECORATOR);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
}
|
|
86
|
+
return target.name;
|
|
87
|
+
}
|
|
88
|
+
CLASSNAME_1.getClassName = getClassName;
|
|
89
|
+
// @ts-ignore
|
|
90
|
+
function getObjectIndexPropertyValue(obj) {
|
|
91
|
+
const className = TchHelpers.getNameFromObject(obj);
|
|
92
|
+
let c = getClasses().find(c => c.className === className);
|
|
93
|
+
if (c) {
|
|
94
|
+
return c.uniqueKey;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
CLASSNAME_1.getObjectIndexPropertyValue = getObjectIndexPropertyValue;
|
|
98
|
+
// @ts-ignore
|
|
99
|
+
function getClassFamilyByClassName(className) {
|
|
100
|
+
let c = getClasses().find(c => c.className === className);
|
|
101
|
+
if (c) {
|
|
102
|
+
return c.classFamily;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
CLASSNAME_1.getClassFamilyByClassName = getClassFamilyByClassName;
|
|
106
|
+
// @ts-ignore
|
|
107
|
+
function getObjectClassFamily(obj) {
|
|
108
|
+
const className = TchHelpers.getNameFromObject(obj);
|
|
109
|
+
let c = getClasses().find(c => c.className === className);
|
|
110
|
+
if (c) {
|
|
111
|
+
return c.classFamily;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
CLASSNAME_1.getObjectClassFamily = getObjectClassFamily;
|
|
115
|
+
function getObjectIndexValue(obj) {
|
|
116
|
+
const className = TchHelpers.getNameFromObject(obj);
|
|
117
|
+
let c = getClasses().find(c => c.className === className);
|
|
118
|
+
if (c && _.isString(c.uniqueKey)) {
|
|
119
|
+
return obj[c.uniqueKey];
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
CLASSNAME_1.getObjectIndexValue = getObjectIndexValue;
|
|
123
|
+
function getClassBy(className) {
|
|
124
|
+
let res;
|
|
125
|
+
if (Array.isArray(className)) {
|
|
126
|
+
if (className.length !== 1) {
|
|
127
127
|
throw `Mapping error... please use proper class names:
|
|
128
128
|
{
|
|
129
129
|
propertyObject: 'MyClassName',
|
|
130
130
|
propertyWithArray: ['MyClassName']
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
-
`;
|
|
134
|
-
}
|
|
135
|
-
className = className[0];
|
|
136
|
-
}
|
|
137
|
-
if (typeof className === 'function') { // TODO QUICK_FIX
|
|
138
|
-
res = className;
|
|
139
|
-
}
|
|
140
|
-
if (className === 'Date') {
|
|
141
|
-
res = Date;
|
|
142
|
-
}
|
|
143
|
-
if (className === 'FormData') {
|
|
144
|
-
res = FormData;
|
|
145
|
-
}
|
|
146
|
-
let c = getClasses().find(c => c.className === className);
|
|
147
|
-
if (c) {
|
|
148
|
-
res = c.target;
|
|
149
|
-
}
|
|
150
|
-
// @ts-ignore
|
|
151
|
-
return res;
|
|
152
|
-
}
|
|
153
|
-
CLASSNAME_1.getClassBy = getClassBy;
|
|
154
|
-
})(CLASSNAME || (CLASSNAME = {}));
|
|
155
|
-
;
|
|
156
|
-
({}); // @--end-of-file-for-module=typescript-class-helpers lib/classname.ts
|
|
133
|
+
`;
|
|
134
|
+
}
|
|
135
|
+
className = className[0];
|
|
136
|
+
}
|
|
137
|
+
if (typeof className === 'function') { // TODO QUICK_FIX
|
|
138
|
+
res = className;
|
|
139
|
+
}
|
|
140
|
+
if (className === 'Date') {
|
|
141
|
+
res = Date;
|
|
142
|
+
}
|
|
143
|
+
if (className === 'FormData') {
|
|
144
|
+
res = FormData;
|
|
145
|
+
}
|
|
146
|
+
let c = getClasses().find(c => c.className === className);
|
|
147
|
+
if (c) {
|
|
148
|
+
res = c.target;
|
|
149
|
+
}
|
|
150
|
+
// @ts-ignore
|
|
151
|
+
return res;
|
|
152
|
+
}
|
|
153
|
+
CLASSNAME_1.getClassBy = getClassBy;
|
|
154
|
+
})(CLASSNAME || (CLASSNAME = {}));
|
|
155
|
+
;
|
|
156
|
+
({}); // @--end-of-file-for-module=typescript-class-helpers lib/classname.ts
|
|
157
157
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3NuYW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS13ZWJzcWwvdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3Byb2plY3RzL3R5cGVzY3JpcHQtY2xhc3MtaGVscGVycy9zcmMvbGliL2NsYXNzbmFtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNsQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RSxLQUFLO0FBQ0wsS0FBSztBQUdMLFNBQVMsVUFBVTtJQUNqQixNQUFNLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQztJQUN2QixPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFRLENBQUM7QUFDbEMsQ0FBQztBQUNELE1BQU0sS0FBVyxTQUFTLENBOEt6QjtBQTlLRCxXQUFpQixXQUFTO0lBRXhCLFNBQWdCLGNBQWMsQ0FBQyxNQUFnQixFQUFFLFVBQWdDLEVBQUUsRUFBRSxZQUF1QjtRQUMxRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN6QixNQUFNLDJFQUEyRSxNQUFNLEVBQUUsQ0FBQTtT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QUMsQ0FBQyxDQUFDLENBQUE7U0FDekI7UUFDRCxJQUFJLE9BQU8sU0FBUyxLQUFLLFVBQVUsRUFBRSxFQUFFLGlCQUFpQjtZQUN0RCxHQUFHLEdBQUcsU0FBUyxDQUFDO1NBQ2pCO1FBQ0QsSUFBSSxTQUFTLEtBQUssTUFBTSxFQUFFO1lBQ3hCLEdBQUcsR0FBRyxJQUFJLENBQUM7U0FDWjtRQUVELElBQUksU0FBUyxLQUFLLFVBQVUsRUFBRTtZQUM1QixHQUFHLEdBQUcsUUFBUSxDQUFDO1NBQ2hCO1FBRUQsSUFBSSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQztRQUUxRCxJQUFJLENBQUMsRUFBRTtZQUNMLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO1NBQ2hCO1FBRUQsYUFBYTtRQUNiLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQWpDZSxzQkFBVSxhQWlDekIsQ0FBQTtBQUVILENBQUMsRUE5S2dCLFNBQVMsS0FBVCxTQUFTLFFBOEt6QjtBQUVBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsc0VBQXNFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5pbXBvcnQgeyBNb2RlbHMgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBTWU1CT0wgfSBmcm9tICcuL3N5bWJvbHMnO1xuaW1wb3J0IHsgVGNoSGVscGVycyB9IGZyb20gJy4vaW5kZXgnO1xuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5pbXBvcnQgeyBnZXRTdG9yYWdlIH0gZnJvbSAnLi9zdG9yYWdlJztcbmltcG9ydCB7IHNldENsYXNzTmFtZSB9IGZyb20gJy4vc2V0LWNsYXNzLW5hbWUnO1xuaW1wb3J0IHsgcmVnaXN0ZXJkIH0gZnJvbSAnLi9yZWdpc3RlcmQtZGInO1xuaW1wb3J0IHsgRVJST1JfTVNHX0NMQVNTX1dJVEhPVVRfREVDT1JBVE9SIH0gZnJvbSAnLi9lcnJvcnMtbWVzc2FnZXMnO1xuLyogKi9cbi8qICovXG4gIFxuXG5mdW5jdGlvbiBnZXRDbGFzc2VzKCk6IE1vZGVscy5DbGFzc01ldGFbXSB7XG4gIGNvbnN0IHMgPSBnZXRTdG9yYWdlKCk7XG4gIHJldHVybiBzW1NZTUJPTC5DTEFTU0VTXSBhcyBhbnk7XG59XG5leHBvcnQgbmFtZXNwYWNlIENMQVNTTkFNRSB7XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldENsYXNzQ29uZmlnKHRhcmdldDogRnVuY3Rpb24sIGNvbmZpZ3M6IE1vZGVscy5DbGFzc0NvbmZpZ1tdID0gW10sIGNhbGxlclRhcmdldD86IEZ1bmN0aW9uKTogTW9kZWxzLkNsYXNzQ29uZmlnW10ge1xuICAgIGlmICghXy5pc0Z1bmN0aW9uKHRhcmdldCkpIHtcbiAgICAgIHRocm93IGBbdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJdW2dldENsYXNzQ29uZmlnXSBDYW5ub3QgZ2V0IGNsYXNzIGNvbmZpZyBmcm9tOiAke3RhcmdldH1gXG4gICAgfVxuXG4gICAgbGV0IGNvbmZpZzogTW9kZWxzLkNsYXNzQ29uZmlnO1xuICAgIGNvbnN0IHBhcmVudENsYXNzID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRhcmdldCk7XG4gICAgY29uc3QgaXNWYWxpZFBhcmVudCA9IChfLmlzRnVuY3Rpb24ocGFyZW50Q2xhc3MpICYmIHBhcmVudENsYXNzLm5hbWUgIT09ICcnKTtcblxuICAgIGlmIChyZWdpc3RlcmQuY2xhc3Nlcy5pbmNsdWRlcyh0YXJnZXQpKSB7XG4gICAgICBjb25maWcgPSByZWdpc3RlcmQuY29uZmlnc1tyZWdpc3RlcmQuY2xhc3Nlcy5maW5kSW5kZXgoYyA9PiBjID09PSB0YXJnZXQpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uZmlnID0gbmV3IE1vZGVscy5DbGFzc0NvbmZpZygpO1xuICAgICAgY29uZmlnLmNsYXNzUmVmZXJlbmNlID0gdGFyZ2V0O1xuICAgICAgcmVnaXN0ZXJkLmNsYXNzZXMucHVzaCh0YXJnZXQpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyZC5jb25maWdzW3JlZ2lzdGVyZC5jbGFzc2VzLmZpbmRJbmRleChjID0+IGMgPT09IHRhcmdldCldID0gY29uZmlnO1xuICAgIGlmIChjYWxsZXJUYXJnZXQpIHtcbiAgICAgIGNvbnN0IGNhbGxlclRhcmdldENvbmZpZyA9IHJlZ2lzdGVyZC5jb25maWdzW3JlZ2lzdGVyZC5jbGFzc2VzLmZpbmRJbmRleChjID0+IGMgPT09IGNhbGxlclRhcmdldCldO1xuICAgICAgaWYgKCFjb25maWcudkNoaWxkcmVuLmluY2x1ZGVzKGNhbGxlclRhcmdldENvbmZpZykpIHtcbiAgICAgICAgY29uZmlnLnZDaGlsZHJlbi5wdXNoKGNhbGxlclRhcmdldENvbmZpZyk7XG4gICAgICB9XG4gICAgICBjYWxsZXJUYXJnZXRDb25maWcudlBhcmVudCA9IGNvbmZpZztcbiAgICB9XG5cbiAgICBjb25maWdzLnB1c2goY29uZmlnKTtcblxuICAgIHJldHVybiBpc1ZhbGlkUGFyZW50ID8gZ2V0Q2xhc3NDb25maWcocGFyZW50Q2xhc3MsIGNvbmZpZ3MsIHRhcmdldCkgOiBjb25maWdzO1xuICB9XG5cbiAgLyoqXG4gICAqIFBMRUFTRSBQUk9WSURFIE5BTUUgQVMgVFlQRUQgU1RSSU5HLCBOT1QgVkFSSUFCTEVcbiAgICogRGVjb3JhdG9yIHJlcXVyZWQgZm9yIHByb2R1Y3Rpb24gbW9kZVxuICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIGNsYXNzXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gQ0xBU1NOQU1FKGNsYXNzTmFtZTogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBNb2RlbHMuQ0xBU1NOQU1FT3B0aW9ucykge1xuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBGdW5jdGlvbikge1xuXG4gICAgICByZXR1cm4gc2V0Q2xhc3NOYW1lKHRhcmdldCwgY2xhc3NOYW1lLCBvcHRpb25zKTtcbiAgICB9IGFzIGFueTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRDbGFzc05hbWUodGFyZ2V0OiBGdW5jdGlvbiwgcHJvZHVjdGlvbiA9IGZhbHNlKSB7XG4gICAgaWYgKF8uaXNOaWwodGFyZ2V0KSkge1xuXG5cbiAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgfVxuICAgIGlmIChfLmlzU3RyaW5nKHRhcmdldCkpIHtcbiAgICAgIGNvbnNvbGUubG9nKHRhcmdldCk7XG4gICAgICBIZWxwZXJzLndhcm4oYFt0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnNdW2dldENsYXNzTmFtZV0gdGFyZ2V0IGlzIHN0cmluZzogJyR7dGFyZ2V0fScsIHByb2R1Y2l0b246ICR7cHJvZHVjdGlvbn1gKVxuICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG4gICAgaWYgKCFfLmlzRnVuY3Rpb24odGFyZ2V0KSkge1xuICAgICAgY29uc29sZS5sb2codGFyZ2V0KTtcbiAgICAgIEhlbHBlcnMud2FybihgW3R5cGVzY3JpcHQtY2xhc3MtaGVscGVyc11bZ2V0Q2xhc3NOYW1lXSB0YXJnZXQgaXMgbm90IGEgY2xhc3NgKVxuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWdzID0gZ2V0Q2xhc3NDb25maWcodGFyZ2V0KTtcbiAgICBjb25zdCBjb25maWcgPSBfLmZpcnN0KGNvbmZpZ3MpO1xuXG4gICAgY29uc3QgY2xhc3NOYW1lSW5Ccm93c2VyID0gY29uZmlnPy5jbGFzc05hbWVJbkJyb3dzZXI7XG5cbiAgICBpZiAoSGVscGVycy5pc0Jyb3dzZXIgJiYgXy5pc1N0cmluZyhjbGFzc05hbWVJbkJyb3dzZXIpKSB7XG4gICAgICByZXR1cm4gY2xhc3NOYW1lSW5Ccm93c2VyO1xuICAgIH1cblxuICAgIGNvbnN0IGNsYXNzTmFtZSA9IGNvbmZpZz8uY2xhc3NOYW1lO1xuXG4gICAgaWYgKGNsYXNzTmFtZSkge1xuICAgICAgcmV0dXJuIGNsYXNzTmFtZTtcbiAgICB9XG5cbiAgICBpZiAocHJvZHVjdGlvbikge1xuICAgICAgY29uc29sZS5sb2coJ2NsYXNzIHdpdGhvdXQgQENMQVNTLk5BTUUgZGVvY3JhdG9yJywgdGFyZ2V0IGFzIGFueSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihFUlJPUl9NU0dfQ0xBU1NfV0lUSE9VVF9ERUNPUkFUT1IpO1xuICAgIH0gZWxzZSB7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQubmFtZTtcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgZXhwb3J0IGZ1bmN0aW9uIGdldE9iamVjdEluZGV4UHJvcGVydHlWYWx1ZShvYmo6IGFueSkge1xuICAgIGNvbnN0IGNsYXNzTmFtZSA9IFRjaEhlbHBlcnMuZ2V0TmFtZUZyb21PYmplY3Qob2JqKTtcblxuICAgIGxldCBjID0gZ2V0Q2xhc3NlcygpLmZpbmQoYyA9PiBjLmNsYXNzTmFtZSA9PT0gY2xhc3NOYW1lKTtcblxuICAgIGlmIChjKSB7XG4gICAgICByZXR1cm4gYy51bmlxdWVLZXk7XG4gICAgfVxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBleHBvcnQgZnVuY3Rpb24gZ2V0Q2xhc3NGYW1pbHlCeUNsYXNzTmFtZShjbGFzc05hbWU6IHN0cmluZykge1xuICAgIGxldCBjID0gZ2V0Q2xhc3NlcygpLmZpbmQoYyA9PiBjLmNsYXNzTmFtZSA9PT0gY2xhc3NOYW1lKTtcblxuICAgIGlmIChjKSB7XG4gICAgICByZXR1cm4gYy5jbGFzc0ZhbWlseTtcbiAgICB9XG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRPYmplY3RDbGFzc0ZhbWlseShvYmo6IGFueSkge1xuICAgIGNvbnN0IGNsYXNzTmFtZSA9IFRjaEhlbHBlcnMuZ2V0TmFtZUZyb21PYmplY3Qob2JqKTtcblxuICAgIGxldCBjID0gZ2V0Q2xhc3NlcygpLmZpbmQoYyA9PiBjLmNsYXNzTmFtZSA9PT0gY2xhc3NOYW1lKTtcblxuICAgIGlmIChjKSB7XG4gICAgICByZXR1cm4gYy5jbGFzc0ZhbWlseTtcbiAgICB9XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0T2JqZWN0SW5kZXhWYWx1ZShvYmo6IGFueSkge1xuICAgIGNvbnN0IGNsYXNzTmFtZSA9IFRjaEhlbHBlcnMuZ2V0TmFtZUZyb21PYmplY3Qob2JqKTtcblxuICAgIGxldCBjID0gZ2V0Q2xhc3NlcygpLmZpbmQoYyA9PiBjLmNsYXNzTmFtZSA9PT0gY2xhc3NOYW1lKTtcblxuICAgIGlmIChjICYmIF8uaXNTdHJpbmcoYy51bmlxdWVLZXkpKSB7XG4gICAgICByZXR1cm4gb2JqW2MudW5pcXVlS2V5XTtcbiAgICB9XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0Q2xhc3NCeShjbGFzc05hbWU6IHN0cmluZyB8IEZ1bmN0aW9uKTogRnVuY3Rpb24ge1xuICAgIGxldCByZXM7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2xhc3NOYW1lKSkge1xuICAgICAgaWYgKGNsYXNzTmFtZS5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgdGhyb3cgYE1hcHBpbmcgZXJyb3IuLi4gcGxlYXNlIHVzZSBwcm9wZXIgY2xhc3MgbmFtZXM6XG4gIHtcbiAgICBwcm9wZXJ0eU9iamVjdDogJ015Q2xhc3NOYW1lJyxcbiAgICBwcm9wZXJ0eVdpdGhBcnJheTogWydNeUNsYXNzTmFtZSddXG4gIH1cblxuICAgICAgICBgXG4gICAgICB9XG4gICAgICBjbGFzc05hbWUgPSBjbGFzc05hbWVbMF1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjbGFzc05hbWUgPT09ICdmdW5jdGlvbicpIHsgLy8gVE9ETyBRVUlDS19GSVhcbiAgICAgIHJlcyA9IGNsYXNzTmFtZTtcbiAgICB9XG4gICAgaWYgKGNsYXNzTmFtZSA9PT0gJ0RhdGUnKSB7XG4gICAgICByZXMgPSBEYXRlO1xuICAgIH1cblxuICAgIGlmIChjbGFzc05hbWUgPT09ICdGb3JtRGF0YScpIHtcbiAgICAgIHJlcyA9IEZvcm1EYXRhO1xuICAgIH1cblxuICAgIGxldCBjID0gZ2V0Q2xhc3NlcygpLmZpbmQoYyA9PiBjLmNsYXNzTmFtZSA9PT0gY2xhc3NOYW1lKTtcblxuICAgIGlmIChjKSB7XG4gICAgICByZXMgPSBjLnRhcmdldDtcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMgbGliL2NsYXNzbmFtZS50cyJdfQ==
|