typescript-class-helpers 13.2.1 → 13.2.2
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.js +3 -3
- package/browser/README.md +24 -24
- package/browser/esm2020/lib/classname.mjs +150 -150
- package/browser/esm2020/lib/describe-class.mjs +65 -65
- 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 +470 -470
- package/browser/fesm2020/typescript-class-helpers.mjs +470 -470
- 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 +65 -65
- 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 +470 -470
- package/client/fesm2020/typescript-class-helpers.mjs +470 -470
- 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/typescript-class-helpers.d.ts +4 -4
- package/index.d.ts +1 -1
- package/lib/classname.d.ts +16 -16
- package/lib/describe-class.d.ts +6 -6
- package/lib/errors-messages.d.ts +1 -1
- package/lib/index.d.ts +33 -33
- package/lib/models.d.ts +68 -68
- package/lib/registerd-db.d.ts +5 -5
- package/lib/set-class-name.d.ts +2 -2
- package/lib/storage.d.ts +1 -1
- package/lib/symbols.d.ts +6 -6
- package/package.json +3 -3
- package/package.json_devDependencies.json +223 -223
- package/package.json_tnp.json5 +48 -48
- package/tmp-environment.json +35 -38
- package/websql/README.md +24 -24
- package/websql/esm2020/lib/classname.mjs +150 -150
- package/websql/esm2020/lib/describe-class.mjs +65 -65
- 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 +468 -468
- package/websql/fesm2020/typescript-class-helpers.mjs +468 -468
- 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
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"domain": "typescript-class-helpers.example.domain.com",
|
|
3
|
-
"name": "local",
|
|
4
3
|
"isCoreProject": false,
|
|
5
4
|
"ip": "localhost",
|
|
6
5
|
"packageJSON": {
|
|
@@ -49,7 +48,7 @@
|
|
|
49
48
|
},
|
|
50
49
|
"name": "typescript-class-helpers",
|
|
51
50
|
"description": "Usefull helper to have in your typescript project",
|
|
52
|
-
"version": "13.2.
|
|
51
|
+
"version": "13.2.2",
|
|
53
52
|
"scripts": {
|
|
54
53
|
"test": "mocha --require ts-node/register src/**/*.spec.ts",
|
|
55
54
|
"test:watch": "mocha --compilers ts-node/register src/**/*.spec.ts --watch"
|
|
@@ -70,11 +69,11 @@
|
|
|
70
69
|
"homepage": "https://github.com/darekf77/typescript-class-helpers#readme",
|
|
71
70
|
"dependencies": {
|
|
72
71
|
"enum-values": "1.2.1",
|
|
73
|
-
"ng2-logger": "~13.1.
|
|
72
|
+
"ng2-logger": "~13.1.16"
|
|
74
73
|
},
|
|
75
74
|
"license": "MIT",
|
|
76
75
|
"private": false,
|
|
77
|
-
"lastBuildTagHash": "
|
|
76
|
+
"lastBuildTagHash": "a60faaa9cc20f65ab1c00236361d173064ca105d",
|
|
78
77
|
"devDependencies": {
|
|
79
78
|
"@angular-devkit/build-angular": "~13.3.9",
|
|
80
79
|
"@angular-devkit/core": "~13.3.9",
|
|
@@ -144,9 +143,9 @@
|
|
|
144
143
|
"@types/vinyl": "2.0.2",
|
|
145
144
|
"@types/watch": "1.0.0",
|
|
146
145
|
"accepts": "1.3.4",
|
|
147
|
-
"any-project-cli": "~13.1.
|
|
146
|
+
"any-project-cli": "~13.1.23",
|
|
148
147
|
"axios": "1.3.5",
|
|
149
|
-
"background-worker-process": "~13.1.
|
|
148
|
+
"background-worker-process": "~13.1.38",
|
|
150
149
|
"base32": "0.0.7",
|
|
151
150
|
"bcryptjs": "2.4.3",
|
|
152
151
|
"better-sqlite3": "7.6.2",
|
|
@@ -189,12 +188,12 @@
|
|
|
189
188
|
"file-loader": "1.1.5",
|
|
190
189
|
"file-saver": "2.0.5",
|
|
191
190
|
"firedev": "^13",
|
|
192
|
-
"firedev-crud": "~13.1.
|
|
193
|
-
"firedev-crud-deamon": "~13.1.
|
|
194
|
-
"firedev-ports": "~13.1.
|
|
195
|
-
"firedev-storage": "~13.1.
|
|
196
|
-
"firedev-typeorm": "~13.1.
|
|
197
|
-
"firedev-ui": "~13.1.
|
|
191
|
+
"firedev-crud": "~13.1.43",
|
|
192
|
+
"firedev-crud-deamon": "~13.1.33",
|
|
193
|
+
"firedev-ports": "~13.1.37",
|
|
194
|
+
"firedev-storage": "~13.1.28",
|
|
195
|
+
"firedev-typeorm": "~13.1.18",
|
|
196
|
+
"firedev-ui": "~13.1.8",
|
|
198
197
|
"fkill": "6.1.0",
|
|
199
198
|
"font-awesome": "4.7.0",
|
|
200
199
|
"form-data": "4.0.0",
|
|
@@ -206,17 +205,17 @@
|
|
|
206
205
|
"http-proxy": "1.16.2",
|
|
207
206
|
"http-proxy-middleware": "0.19.1",
|
|
208
207
|
"http-server": "0.11.1",
|
|
209
|
-
"incremental-compiler": "~13.1.
|
|
208
|
+
"incremental-compiler": "~13.1.17",
|
|
210
209
|
"inquirer": "7.3.3",
|
|
211
210
|
"inquirer-autocomplete-prompt": "1.3.0",
|
|
212
211
|
"is-elevated": "3.0.0",
|
|
213
|
-
"isomorphic-region-loader": "~13.1.
|
|
212
|
+
"isomorphic-region-loader": "~13.1.31",
|
|
214
213
|
"istanbul-instrumenter-loader": "2.0.0",
|
|
215
214
|
"jasmine-core": "4.0.0",
|
|
216
215
|
"jscodeshift": "0.6.3",
|
|
217
216
|
"json-stringify-safe": "5.0.1",
|
|
218
|
-
"json10": "~13.1.
|
|
219
|
-
"json10-writer": "~13.1.
|
|
217
|
+
"json10": "~13.1.36",
|
|
218
|
+
"json10-writer": "~13.1.34",
|
|
220
219
|
"json5": "2.1.3",
|
|
221
220
|
"json5-writer": "0.2.0",
|
|
222
221
|
"jszip": "3.10.1",
|
|
@@ -230,33 +229,32 @@
|
|
|
230
229
|
"localforage": "1.10.0",
|
|
231
230
|
"lockfile": "1.0.4",
|
|
232
231
|
"lodash": "4.17.4",
|
|
233
|
-
"lodash-walk-object": "~13.1.
|
|
234
|
-
"lodash.get": ">= 4",
|
|
235
|
-
"lodash.isequal": ">= 4",
|
|
236
|
-
"lodash.merge": ">= 4",
|
|
237
|
-
"lodash.set": ">= 4",
|
|
232
|
+
"lodash-walk-object": "~13.1.36",
|
|
238
233
|
"lowdb": "1.0.0",
|
|
239
|
-
"magic-renamer": "~13.1.
|
|
234
|
+
"magic-renamer": "~13.1.25",
|
|
240
235
|
"material-design-icons": "3.0.1",
|
|
241
236
|
"method-override": "2.3.10",
|
|
242
237
|
"minimist": "1.2.0",
|
|
243
238
|
"mkdirp": "0.5.1",
|
|
244
239
|
"mocha": "5.2.0",
|
|
245
240
|
"moment": "2.22.2",
|
|
246
|
-
"morphi": "~13.1
|
|
241
|
+
"morphi": "~13.2.1",
|
|
247
242
|
"ng-packagr": "13.0.0",
|
|
248
243
|
"ng-talkback": "~13.1.19",
|
|
249
244
|
"ng2-file-upload": "1.3.0",
|
|
250
|
-
"ng2-rest": "~13.1
|
|
245
|
+
"ng2-rest": "~13.2.1",
|
|
251
246
|
"ng4-icons": "~13.1.21",
|
|
252
247
|
"ng4-modal": "~13.1.23",
|
|
253
248
|
"ngx-bootstrap": "8.0.0",
|
|
254
249
|
"ngx-editor": "12.2.1",
|
|
250
|
+
"ngx-highlightjs": "6.1.3",
|
|
255
251
|
"ngx-moment": "6.0.2",
|
|
256
252
|
"ngx-pipes": "3.0.0",
|
|
253
|
+
"ngx-progressbar": "8.0.0",
|
|
254
|
+
"ngx-scrollbar": "9.0.2",
|
|
257
255
|
"ngx-store": "3.1.1",
|
|
258
256
|
"ngx-toastr": "14.2.2",
|
|
259
|
-
"ngx-wig": "
|
|
257
|
+
"ngx-wig": "1.2.7",
|
|
260
258
|
"node-cli-tester": "~13.1.19",
|
|
261
259
|
"node-localstorage": "2.1.6",
|
|
262
260
|
"node-notifier": "6.0.0",
|
|
@@ -287,17 +285,17 @@
|
|
|
287
285
|
"socket.io": "2.4.1",
|
|
288
286
|
"sort-package-json": "1.11.0",
|
|
289
287
|
"sql.js": "1.8.0",
|
|
290
|
-
"static-columns": "~13.
|
|
288
|
+
"static-columns": "~13.3.2",
|
|
291
289
|
"string-similarity": "4.0.2",
|
|
292
290
|
"sudo-block": "3.0.0",
|
|
293
291
|
"systeminformation": "3.45.7",
|
|
294
292
|
"task.js": "0.1.5",
|
|
295
|
-
"tnp-cli": "~13.1.
|
|
296
|
-
"tnp-config": "~13.1.
|
|
297
|
-
"tnp-core": "~13.2.
|
|
298
|
-
"tnp-db": "~13.1.
|
|
299
|
-
"tnp-helpers": "~13.1.
|
|
300
|
-
"tnp-models": "~13.1.
|
|
293
|
+
"tnp-cli": "~13.1.51",
|
|
294
|
+
"tnp-config": "~13.1.67",
|
|
295
|
+
"tnp-core": "~13.2.9",
|
|
296
|
+
"tnp-db": "~13.1.16",
|
|
297
|
+
"tnp-helpers": "~13.1.26",
|
|
298
|
+
"tnp-models": "~13.1.18",
|
|
301
299
|
"tnp-ui": "~13.1.27",
|
|
302
300
|
"ts-debug": "1.3.0",
|
|
303
301
|
"ts-loader": "2.3.1",
|
|
@@ -305,7 +303,7 @@
|
|
|
305
303
|
"tslib": "~2.3.0",
|
|
306
304
|
"typeorm": "~0.3.10",
|
|
307
305
|
"typescript": "~4.6.2",
|
|
308
|
-
"typescript-class-helpers": "~13.1
|
|
306
|
+
"typescript-class-helpers": "~13.2.1",
|
|
309
307
|
"typescript-formatter": "~7.2.2",
|
|
310
308
|
"underscore": "1.9.1",
|
|
311
309
|
"uuid": "8.3.2",
|
|
@@ -317,17 +315,16 @@
|
|
|
317
315
|
}
|
|
318
316
|
},
|
|
319
317
|
"build": {
|
|
320
|
-
"number":
|
|
321
|
-
"date": "2023-04-
|
|
322
|
-
"hash": "
|
|
318
|
+
"number": 299,
|
|
319
|
+
"date": "2023-04-23T03:34:54.000Z",
|
|
320
|
+
"hash": "4d08984b67676d63becad2e878f7d3497391d861",
|
|
323
321
|
"options": {}
|
|
324
322
|
},
|
|
325
323
|
"currentProjectName": "typescript-class-helpers",
|
|
326
|
-
"currentProjectPort": 4000,
|
|
327
324
|
"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\"]}]}",
|
|
328
325
|
"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\"}]}",
|
|
329
326
|
"currentProjectType": "isomorphic-lib",
|
|
330
|
-
"currentFrameworkVersion": "13.1.
|
|
327
|
+
"currentFrameworkVersion": "13.1.181",
|
|
331
328
|
"currentProjectIsStrictSite": false,
|
|
332
329
|
"currentProjectIsDependencySite": false,
|
|
333
330
|
"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==
|