typescript-class-helpers 18.0.28 → 19.0.0

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.
Files changed (37) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/package.json +1 -1
  3. package/taon.jsonc +37 -24
  4. package/tmp-environment.json +24 -3
  5. package/browser/esm2022/lib/classname.mjs +0 -164
  6. package/browser/esm2022/lib/describe-class.mjs +0 -72
  7. package/browser/esm2022/lib/errors-messages.mjs +0 -14
  8. package/browser/esm2022/lib/index.mjs +0 -186
  9. package/browser/esm2022/lib/models.mjs +0 -36
  10. package/browser/esm2022/lib/registerd-db.mjs +0 -6
  11. package/browser/esm2022/lib/set-class-name.mjs +0 -90
  12. package/browser/esm2022/lib/storage.mjs +0 -24
  13. package/browser/esm2022/lib/symbols.mjs +0 -9
  14. package/browser/esm2022/public-api.mjs +0 -2
  15. package/browser/esm2022/typescript-class-helpers.mjs +0 -5
  16. package/client/esm2022/lib/classname.mjs +0 -164
  17. package/client/esm2022/lib/describe-class.mjs +0 -72
  18. package/client/esm2022/lib/errors-messages.mjs +0 -14
  19. package/client/esm2022/lib/index.mjs +0 -186
  20. package/client/esm2022/lib/models.mjs +0 -36
  21. package/client/esm2022/lib/registerd-db.mjs +0 -6
  22. package/client/esm2022/lib/set-class-name.mjs +0 -90
  23. package/client/esm2022/lib/storage.mjs +0 -24
  24. package/client/esm2022/lib/symbols.mjs +0 -9
  25. package/client/esm2022/public-api.mjs +0 -2
  26. package/client/esm2022/typescript-class-helpers.mjs +0 -5
  27. package/websql/esm2022/lib/classname.mjs +0 -164
  28. package/websql/esm2022/lib/describe-class.mjs +0 -72
  29. package/websql/esm2022/lib/errors-messages.mjs +0 -14
  30. package/websql/esm2022/lib/index.mjs +0 -186
  31. package/websql/esm2022/lib/models.mjs +0 -34
  32. package/websql/esm2022/lib/registerd-db.mjs +0 -6
  33. package/websql/esm2022/lib/set-class-name.mjs +0 -90
  34. package/websql/esm2022/lib/storage.mjs +0 -24
  35. package/websql/esm2022/lib/symbols.mjs +0 -9
  36. package/websql/esm2022/public-api.mjs +0 -2
  37. package/websql/esm2022/typescript-class-helpers.mjs +0 -5
@@ -1,6 +1,6 @@
1
1
  THIS FILE IS GENERATED. THIS FILE IS GENERATED. THIS FILE IS GENERATED.
2
2
 
3
- Assets from this folder are being shipped with this npm package (typescript-class-helpers@18.0.27)
3
+ Assets from this folder are being shipped with this npm package (typescript-class-helpers@18.0.29)
4
4
  created from this project.
5
5
 
6
6
  THIS FILE IS GENERATED.THIS FILE IS GENERATED. THIS FILE IS GENERATED.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typescript-class-helpers",
3
- "version": "18.0.28",
3
+ "version": "19.0.0",
4
4
  "scripts": {
5
5
  "test": "mocha --require ts-node/register src/**/*.spec.ts",
6
6
  "test:watch": "mocha --compilers ts-node/register src/**/*.spec.ts --watch"
package/taon.jsonc CHANGED
@@ -1,31 +1,44 @@
1
1
  {
2
2
  "resources": [],
3
- "type": "isomorphic-lib",
4
- "version": "v18",
5
- "dependenciesNamesForNpmLib": ["ng2-logger", "enum-values"],
6
- "additionalNpmNames": ["taon-class-helpers"],
7
3
 
8
- "packageJsonOverride": {
9
- "author": "Dariusz Filipiak",
4
+ "overrided": {
5
+ "includeAsDev": [],
6
+ "includeOnly": ["ng2-logger", "enum-values"],
7
+ "ignoreDepsPattern": [],
8
+ "dependencies": {},
9
+ "linkedFolders": [],
10
+ "npmFixes": []
11
+ },
12
+
13
+ "smartContainerBuildTarget": "",
14
+ "linkedRepos": [],
10
15
 
11
- "bugs": {
12
- "url": "https://github.com/darekf77/typescript-class-helpers/issues"
13
- },
16
+ "libReleaseOptions": {
17
+ "nodts": false,
18
+ "obscure": false,
19
+ "ugly": false,
20
+ "includeNodeModules": false,
21
+ "cliBuildNoDts": false,
22
+ "cliBuildObscure": false,
23
+ "cliBuildIncludeNodeModules": false,
24
+ "cliBuildUglify": false
25
+ },
14
26
 
15
- "description": "Usefull helper to have in your typescript project",
16
- "homepage": "https://github.com/darekf77/typescript-class-helpers#readme",
17
- "keywords": ["ng2-rest", "docs", "documentation"],
18
- "license": "MIT",
19
- "private": false,
27
+ "smartContainerTarget": "",
28
+ "type": "isomorphic-lib",
29
+ "version": "v18",
30
+ "additionalNpmNames": ["taon-class-helpers"],
31
+ "license": "MIT",
32
+ "private": false,
20
33
 
21
- "repository": {
22
- "type": "git",
23
- "url": "git+https://github.com/darekf77/typescript-class-helpers.git"
24
- },
34
+ "scripts": {
35
+ "test": "mocha --require ts-node/register src/**/*.spec.ts",
36
+ "test:watch": "mocha --compilers ts-node/register src/**/*.spec.ts --watch"
37
+ },
25
38
 
26
- "scripts": {
27
- "test": "mocha --require ts-node/register src/**/*.spec.ts",
28
- "test:watch": "mocha --compilers ts-node/register src/**/*.spec.ts --watch"
29
- }
30
- }
31
- }
39
+ "description": "Usefull helper to have in your typescript project",
40
+ "author": "Dariusz Filipiak",
41
+ "homepage": "https://github.com/darekf77/typescript-class-helpers#readme",
42
+ "keywords": ["ng2-rest", "docs", "documentation"],
43
+ "workerPlugins": {}
44
+ }
@@ -3,10 +3,31 @@
3
3
  "domain": "typescript-class-helpers.example.domain.com",
4
4
  "title": "Typescript Class Helpers"
5
5
  },
6
+ "paths": {},
7
+ "config": {},
8
+ "container": {},
9
+ "ports": {},
10
+ "init": {},
11
+ "build": {
12
+ "pwa": {},
13
+ "watch": false
14
+ },
15
+ "loading": {
16
+ "preAngularBootstrap": {},
17
+ "afterAngularBootstrap": {}
18
+ },
19
+ "release": {
20
+ "cli": {},
21
+ "lib": {},
22
+ "autoReleaseUsingConfig": true,
23
+ "releaseVersionBumpType": "major",
24
+ "releaseType": "manual",
25
+ "targetArtifact": "npm-lib-and-cli-tool"
26
+ },
27
+ "copyToManager": {},
6
28
  "buildInfo": {
7
- "number": 469,
8
- "date": "2025-04-09T23:06:32.000Z",
9
- "hash": "2fba1fe3a9669780b365e7ae5aa070a48877fdb1"
29
+ "date": "2025-04-18T12:38:20.000Z",
30
+ "hash": "e01487da10986782e8eccbe0c2d04b0fe5bd249a"
10
31
  },
11
32
  "currentProjectName": "typescript-class-helpers",
12
33
  "currentProjectType": "isomorphic-lib",
@@ -1,164 +0,0 @@
1
- import { _ } from 'tnp-core/browser';
2
- import { Models } from './models';
3
- import { SYMBOL } from './symbols';
4
- import { TchHelpers } from './index';
5
- import { Helpers } from 'tnp-core/browser';
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 =
27
- registerd.configs[registerd.classes.findIndex(c => c === target)];
28
- }
29
- else {
30
- config = new Models.ClassConfig();
31
- config.classReference = target;
32
- registerd.classes.push(target);
33
- }
34
- registerd.configs[registerd.classes.findIndex(c => c === target)] = config;
35
- if (callerTarget) {
36
- const callerTargetConfig = registerd.configs[registerd.classes.findIndex(c => c === callerTarget)];
37
- if (!config.vChildren.includes(callerTargetConfig)) {
38
- config.vChildren.push(callerTargetConfig);
39
- }
40
- callerTargetConfig.vParent = config;
41
- }
42
- configs.push(config);
43
- return isValidParent
44
- ? getClassConfig(parentClass, configs, target)
45
- : configs;
46
- }
47
- CLASSNAME_1.getClassConfig = getClassConfig;
48
- /**
49
- * PLEASE PROVIDE NAME AS TYPED STRING, NOT VARIABLE
50
- * Decorator requred for production mode
51
- * @param name Name of class
52
- */
53
- function CLASSNAME(className, options) {
54
- return function (target) {
55
- return setClassName(target, className, options);
56
- };
57
- }
58
- CLASSNAME_1.CLASSNAME = CLASSNAME;
59
- function getClassName(target, production = false) {
60
- if (_.isNil(target)) {
61
- return void 0;
62
- }
63
- if (_.isString(target)) {
64
- Helpers.log(`[typescript-class-helpers][getClassName] target is string: '${target}', produciton: ${production}`);
65
- return target;
66
- }
67
- if (!_.isFunction(target)) {
68
- Helpers.log(`[typescript-class-helpers][getClassName] target is not a class`);
69
- return void 0;
70
- }
71
- if (target[SYMBOL.ClassNameStaticProperty]) {
72
- return target[SYMBOL.ClassNameStaticProperty];
73
- }
74
- const configs = getClassConfig(target);
75
- const config = _.first(configs);
76
- const classNameInBrowser = config?.classNameInBrowser;
77
- if (Helpers.isBrowser && _.isString(classNameInBrowser)) {
78
- return classNameInBrowser;
79
- }
80
- const className = config?.className;
81
- if (typeof className === 'string') {
82
- return className;
83
- }
84
- if (production) {
85
- console.log('class without @CLASS.NAME deocrator', target);
86
- throw new Error(ERROR_MSG_CLASS_WITHOUT_DECORATOR);
87
- }
88
- else {
89
- }
90
- if (target.name?.startsWith('class_')) {
91
- return '';
92
- }
93
- return target.name;
94
- }
95
- CLASSNAME_1.getClassName = getClassName;
96
- // @ts-ignore
97
- function getObjectIndexPropertyValue(obj) {
98
- const className = TchHelpers.getNameFromObject(obj);
99
- let c = getClasses().find(c => c.className === className);
100
- if (c) {
101
- return c.uniqueKey;
102
- }
103
- }
104
- CLASSNAME_1.getObjectIndexPropertyValue = getObjectIndexPropertyValue;
105
- // @ts-ignore
106
- function getClassFamilyByClassName(className) {
107
- let c = getClasses().find(c => c.className === className);
108
- if (c) {
109
- return c.classFamily;
110
- }
111
- }
112
- CLASSNAME_1.getClassFamilyByClassName = getClassFamilyByClassName;
113
- // @ts-ignore
114
- function getObjectClassFamily(obj) {
115
- const className = TchHelpers.getNameFromObject(obj);
116
- let c = getClasses().find(c => c.className === className);
117
- if (c) {
118
- return c.classFamily;
119
- }
120
- }
121
- CLASSNAME_1.getObjectClassFamily = getObjectClassFamily;
122
- function getObjectIndexValue(obj) {
123
- const className = TchHelpers.getNameFromObject(obj);
124
- let c = getClasses().find(c => c.className === className);
125
- if (c && _.isString(c.uniqueKey)) {
126
- return obj[c.uniqueKey];
127
- }
128
- }
129
- CLASSNAME_1.getObjectIndexValue = getObjectIndexValue;
130
- function getClassBy(className) {
131
- let res;
132
- if (Array.isArray(className)) {
133
- if (className.length !== 1) {
134
- throw `Mapping error... please use proper class names:
135
- {
136
- propertyObject: 'MyClassName',
137
- propertyWithArray: ['MyClassName']
138
- }
139
-
140
- `;
141
- }
142
- className = className[0];
143
- }
144
- if (typeof className === 'function') {
145
- res = className;
146
- }
147
- if (className === 'Date') {
148
- res = Date;
149
- }
150
- if (className === 'FormData') {
151
- res = FormData;
152
- }
153
- let c = getClasses().find(c => c.className === className);
154
- if (c) {
155
- res = c.target;
156
- }
157
- // @ts-ignore
158
- return res;
159
- }
160
- CLASSNAME_1.getClassBy = getClassBy;
161
- })(CLASSNAME || (CLASSNAME = {}));
162
- ;
163
- ({}); // @--end-of-file-for-module=typescript-class-helpers lib/classname.ts
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3NuYW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3Byb2plY3RzL3R5cGVzY3JpcHQtY2xhc3MtaGVscGVycy9zcmMvbGliL2NsYXNzbmFtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNsQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RSxLQUFLO0FBQ0wsS0FBSztBQUdMLFNBQVMsVUFBVTtJQUNqQixNQUFNLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQztJQUN2QixPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFRLENBQUM7QUFDbEMsQ0FBQztBQUNELE1BQU0sS0FBVyxTQUFTLENBb016QjtBQXBNRCxXQUFpQixXQUFTO0lBQ3hCLFNBQWdCLGNBQWMsQ0FDNUIsTUFBZ0IsRUFDaEIsVUFBZ0MsRUFBRSxFQUNsQyxZQUF1QjtRQUV2QixJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzFCLE1BQU0sMkVBQTJFLE1BQU0sRUFBRSxDQUFDO1FB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b3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgU1lNQk9MIH0gZnJvbSAnLi9zeW1ib2xzJztcbmltcG9ydCB7IFRjaEhlbHBlcnMgfSBmcm9tICcuL2luZGV4JztcbmltcG9ydCB7IEhlbHBlcnMgfSBmcm9tICd0bnAtY29yZS9icm93c2VyJztcbmltcG9ydCB7IGdldFN0b3JhZ2UgfSBmcm9tICcuL3N0b3JhZ2UnO1xuaW1wb3J0IHsgc2V0Q2xhc3NOYW1lIH0gZnJvbSAnLi9zZXQtY2xhc3MtbmFtZSc7XG5pbXBvcnQgeyByZWdpc3RlcmQgfSBmcm9tICcuL3JlZ2lzdGVyZC1kYic7XG5pbXBvcnQgeyBFUlJPUl9NU0dfQ0xBU1NfV0lUSE9VVF9ERUNPUkFUT1IgfSBmcm9tICcuL2Vycm9ycy1tZXNzYWdlcyc7XG4vKiAqL1xuLyogKi9cbiAgXG5cbmZ1bmN0aW9uIGdldENsYXNzZXMoKTogTW9kZWxzLkNsYXNzTWV0YVtdIHtcbiAgY29uc3QgcyA9IGdldFN0b3JhZ2UoKTtcbiAgcmV0dXJuIHNbU1lNQk9MLkNMQVNTRVNdIGFzIGFueTtcbn1cbmV4cG9ydCBuYW1lc3BhY2UgQ0xBU1NOQU1FIHtcbiAgZXhwb3J0IGZ1bmN0aW9uIGdldENsYXNzQ29uZmlnKFxuICAgIHRhcmdldDogRnVuY3Rpb24sXG4gICAgY29uZmlnczogTW9kZWxzLkNsYXNzQ29uZmlnW10gPSBbXSxcbiAgICBjYWxsZXJUYXJnZXQ/OiBGdW5jdGlvbixcbiAgKTogTW9kZWxzLkNsYXNzQ29uZmlnW10ge1xuICAgIGlmICghXy5pc0Z1bmN0aW9uKHRhcmdldCkpIHtcbiAgICAgIHRocm93IGBbdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJdW2dldENsYXNzQ29uZmlnXSBDYW5ub3QgZ2V0IGNsYXNzIGNvbmZpZyBmcm9tOiAke3RhcmdldH1gO1xuICAgIH1cblxuICAgIGxldCBjb25maWc6IE1vZGVscy5DbGFzc0NvbmZpZztcbiAgICBjb25zdCBwYXJlbnRDbGFzcyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0YXJnZXQpO1xuICAgIGNvbnN0IGlzVmFsaWRQYXJlbnQgPSBfLmlzRnVuY3Rpb24ocGFyZW50Q2xhc3MpICYmIHBhcmVudENsYXNzLm5hbWUgIT09ICcnO1xuXG4gICAgaWYgKHJlZ2lzdGVyZC5jbGFzc2VzLmluY2x1ZGVzKHRhcmdldCkpIHtcbiAgICAgIGNvbmZpZyA9XG4gICAgICAgIHJlZ2lzdGVyZC5jb25maWdzW3JlZ2lzdGVyZC5jbGFzc2VzLmZpbmRJbmRleChjID0+IGMgPT09IHRhcmdldCldO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25maWcgPSBuZXcgTW9kZWxzLkNsYXNzQ29uZmlnKCk7XG4gICAgICBjb25maWcuY2xhc3NSZWZlcmVuY2UgPSB0YXJnZXQ7XG4gICAgICByZWdpc3RlcmQuY2xhc3Nlcy5wdXNoKHRhcmdldCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJkLmNvbmZpZ3NbcmVnaXN0ZXJkLmNsYXNzZXMuZmluZEluZGV4KGMgPT4gYyA9PT0gdGFyZ2V0KV0gPSBjb25maWc7XG4gICAgaWYgKGNhbGxlclRhcmdldCkge1xuICAgICAgY29uc3QgY2FsbGVyVGFyZ2V0Q29uZmlnID1cbiAgICAgICAgcmVnaXN0ZXJkLmNvbmZpZ3NbcmVnaXN0ZXJkLmNsYXNzZXMuZmluZEluZGV4KGMgPT4gYyA9PT0gY2FsbGVyVGFyZ2V0KV07XG4gICAgICBpZiAoIWNvbmZpZy52Q2hpbGRyZW4uaW5jbHVkZXMoY2FsbGVyVGFyZ2V0Q29uZmlnKSkge1xuICAgICAgICBjb25maWcudkNoaWxkcmVuLnB1c2goY2FsbGVyVGFyZ2V0Q29uZmlnKTtcbiAgICAgIH1cbiAgICAgIGNhbGxlclRhcmdldENvbmZpZy52UGFyZW50ID0gY29uZmlnO1xuICAgIH1cblxuICAgIGNvbmZpZ3MucHVzaChjb25maWcpO1xuXG4gICAgcmV0dXJuIGlzVmFsaWRQYXJlbnRcbiAgICAgID8gZ2V0Q2xhc3NDb25maWcocGFyZW50Q2xhc3MsIGNvbmZpZ3MsIHRhcmdldClcbiAgICAgIDogY29uZmlncztcbiAgfVxuXG4gIC8qKlxuICAgKiBQTEVBU0UgUFJPVklERSBOQU1FIEFTIFRZUEVEIFNUUklORywgTk9UIFZBUklBQkxFXG4gICAqIERlY29yYXRvciByZXF1cmVkIGZvciBwcm9kdWN0aW9uIG1vZGVcbiAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiBjbGFzc1xuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIENMQVNTTkFNRShcbiAgICBjbGFzc05hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zPzogTW9kZWxzLkNMQVNTTkFNRU9wdGlvbnMsXG4gICkge1xuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBGdW5jdGlvbikge1xuXG4gICAgICByZXR1cm4gc2V0Q2xhc3NOYW1lKHRhcmdldCwgY2xhc3NOYW1lLCBvcHRpb25zKTtcbiAgICB9IGFzIGFueTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRDbGFzc05hbWUodGFyZ2V0OiBGdW5jdGlvbiwgcHJvZHVjdGlvbiA9IGZhbHNlKSB7XG4gICAgaWYgKF8uaXNOaWwodGFyZ2V0KSkge1xuXG5cbiAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgfVxuICAgIGlmIChfLmlzU3RyaW5nKHRhcmdldCkpIHtcblxuICAgICAgSGVscGVycy5sb2coXG4gICAgICAgIGBbdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzXVtnZXRDbGFzc05hbWVdIHRhcmdldCBpcyBzdHJpbmc6ICcke3RhcmdldH0nLCBwcm9kdWNpdG9uOiAke3Byb2R1Y3Rpb259YCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH1cbiAgICBpZiAoIV8uaXNGdW5jdGlvbih0YXJnZXQpKSB7XG5cbiAgICAgIEhlbHBlcnMubG9nKFxuICAgICAgICBgW3R5cGVzY3JpcHQtY2xhc3MtaGVscGVyc11bZ2V0Q2xhc3NOYW1lXSB0YXJnZXQgaXMgbm90IGEgY2xhc3NgLFxuICAgICAgKTtcbiAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgfVxuXG4gICAgaWYgKHRhcmdldFtTWU1CT0wuQ2xhc3NOYW1lU3RhdGljUHJvcGVydHldKSB7XG4gICAgICByZXR1cm4gdGFyZ2V0W1NZTUJPTC5DbGFzc05hbWVTdGF0aWNQcm9wZXJ0eV07XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlncyA9IGdldENsYXNzQ29uZmlnKHRhcmdldCk7XG4gICAgY29uc3QgY29uZmlnID0gXy5maXJzdChjb25maWdzKTtcblxuICAgIGNvbnN0IGNsYXNzTmFtZUluQnJvd3NlciA9IGNvbmZpZz8uY2xhc3NOYW1lSW5Ccm93c2VyO1xuXG4gICAgaWYgKEhlbHBlcnMuaXNCcm93c2VyICYmIF8uaXNTdHJpbmcoY2xhc3NOYW1lSW5Ccm93c2VyKSkge1xuICAgICAgcmV0dXJuIGNsYXNzTmFtZUluQnJvd3NlcjtcbiAgICB9XG5cbiAgICBjb25zdCBjbGFzc05hbWUgPSBjb25maWc/LmNsYXNzTmFtZTtcblxuICAgIGlmICh0eXBlb2YgY2xhc3NOYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGNsYXNzTmFtZTtcbiAgICB9XG5cbiAgICBpZiAocHJvZHVjdGlvbikge1xuICAgICAgY29uc29sZS5sb2coJ2NsYXNzIHdpdGhvdXQgQENMQVNTLk5BTUUgZGVvY3JhdG9yJywgdGFyZ2V0IGFzIGFueSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoRVJST1JfTVNHX0NMQVNTX1dJVEhPVVRfREVDT1JBVE9SKTtcbiAgICB9IGVsc2Uge1xuXG5cblxuXG5cblxuXG5cblxuXG5cbiAgICB9XG5cblxuICAgIGlmICh0YXJnZXQubmFtZT8uc3RhcnRzV2l0aCgnY2xhc3NfJykpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gdGFyZ2V0Lm5hbWU7XG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRPYmplY3RJbmRleFByb3BlcnR5VmFsdWUob2JqOiBhbnkpIHtcbiAgICBjb25zdCBjbGFzc05hbWUgPSBUY2hIZWxwZXJzLmdldE5hbWVGcm9tT2JqZWN0KG9iaik7XG5cbiAgICBsZXQgYyA9IGdldENsYXNzZXMoKS5maW5kKGMgPT4gYy5jbGFzc05hbWUgPT09IGNsYXNzTmFtZSk7XG5cbiAgICBpZiAoYykge1xuICAgICAgcmV0dXJuIGMudW5pcXVlS2V5O1xuICAgIH1cbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgZXhwb3J0IGZ1bmN0aW9uIGdldENsYXNzRmFtaWx5QnlDbGFzc05hbWUoY2xhc3NOYW1lOiBzdHJpbmcpIHtcbiAgICBsZXQgYyA9IGdldENsYXNzZXMoKS5maW5kKGMgPT4gYy5jbGFzc05hbWUgPT09IGNsYXNzTmFtZSk7XG5cbiAgICBpZiAoYykge1xuICAgICAgcmV0dXJuIGMuY2xhc3NGYW1pbHk7XG4gICAgfVxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBleHBvcnQgZnVuY3Rpb24gZ2V0T2JqZWN0Q2xhc3NGYW1pbHkob2JqOiBhbnkpIHtcbiAgICBjb25zdCBjbGFzc05hbWUgPSBUY2hIZWxwZXJzLmdldE5hbWVGcm9tT2JqZWN0KG9iaik7XG5cbiAgICBsZXQgYyA9IGdldENsYXNzZXMoKS5maW5kKGMgPT4gYy5jbGFzc05hbWUgPT09IGNsYXNzTmFtZSk7XG5cbiAgICBpZiAoYykge1xuICAgICAgcmV0dXJuIGMuY2xhc3NGYW1pbHk7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldE9iamVjdEluZGV4VmFsdWUob2JqOiBhbnkpIHtcbiAgICBjb25zdCBjbGFzc05hbWUgPSBUY2hIZWxwZXJzLmdldE5hbWVGcm9tT2JqZWN0KG9iaik7XG5cbiAgICBsZXQgYyA9IGdldENsYXNzZXMoKS5maW5kKGMgPT4gYy5jbGFzc05hbWUgPT09IGNsYXNzTmFtZSk7XG5cbiAgICBpZiAoYyAmJiBfLmlzU3RyaW5nKGMudW5pcXVlS2V5KSkge1xuICAgICAgcmV0dXJuIG9ialtjLnVuaXF1ZUtleV07XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldENsYXNzQnkoY2xhc3NOYW1lOiBzdHJpbmcgfCBGdW5jdGlvbik6IEZ1bmN0aW9uIHtcbiAgICBsZXQgcmVzO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNsYXNzTmFtZSkpIHtcbiAgICAgIGlmIChjbGFzc05hbWUubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgIHRocm93IGBNYXBwaW5nIGVycm9yLi4uIHBsZWFzZSB1c2UgcHJvcGVyIGNsYXNzIG5hbWVzOlxuICB7XG4gICAgcHJvcGVydHlPYmplY3Q6ICdNeUNsYXNzTmFtZScsXG4gICAgcHJvcGVydHlXaXRoQXJyYXk6IFsnTXlDbGFzc05hbWUnXVxuICB9XG5cbiAgICAgICAgYDtcbiAgICAgIH1cbiAgICAgIGNsYXNzTmFtZSA9IGNsYXNzTmFtZVswXTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjbGFzc05hbWUgPT09ICdmdW5jdGlvbicpIHtcblxuICAgICAgcmVzID0gY2xhc3NOYW1lO1xuICAgIH1cbiAgICBpZiAoY2xhc3NOYW1lID09PSAnRGF0ZScpIHtcbiAgICAgIHJlcyA9IERhdGU7XG4gICAgfVxuXG4gICAgaWYgKGNsYXNzTmFtZSA9PT0gJ0Zvcm1EYXRhJykge1xuICAgICAgcmVzID0gRm9ybURhdGE7XG4gICAgfVxuXG4gICAgbGV0IGMgPSBnZXRDbGFzc2VzKCkuZmluZChjID0+IGMuY2xhc3NOYW1lID09PSBjbGFzc05hbWUpO1xuXG4gICAgaWYgKGMpIHtcbiAgICAgIHJlcyA9IGMudGFyZ2V0O1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gcmVzO1xuICB9XG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMgbGliL2NsYXNzbmFtZS50cyJdfQ==
@@ -1,72 +0,0 @@
1
- import { _ } from 'tnp-core/browser';
2
- import { SYMBOL } from './symbols';
3
- /**
4
- * @DEPRECATED
5
- * Describe fields assigned in class
6
- */
7
- const FRegEx = new RegExp(/(?:this\.)(.+?(?= ))/g);
8
- export function describeFromClassStringify(target, parent = false) {
9
- // @ts-ignore
10
- var result = [];
11
- if (parent) {
12
- var proto = Object.getPrototypeOf(target.prototype);
13
- if (proto) {
14
- // @ts-ignore
15
- result = result.concat(describeFromClassStringify(proto.constructor, parent));
16
- }
17
- }
18
- const classString = target.toString();
19
- const matches = classString.match(FRegEx) || [];
20
- result = result.concat(matches);
21
- return result.map(prop => prop
22
- .replace('this.', '')
23
- .replace('.', '')
24
- .replace(')', '')
25
- .replace('(', ''));
26
- }
27
- /**
28
- * Describe fields assigne through @DefaultModelWithMapping decorator
29
- * without functions
30
- */
31
- export function describeByDefaultModelsAndMapping(target) {
32
- let res = {};
33
- if (target) {
34
- // @ts-ignore
35
- if (target[SYMBOL.DEFAULT_MODEL]) {
36
- // @ts-ignore
37
- Object.keys(target[SYMBOL.DEFAULT_MODEL])
38
- .filter(key => {
39
- // @ts-ignore
40
- return !_.isFunction(target[SYMBOL.DEFAULT_MODEL][key]);
41
- })
42
- .forEach(key => {
43
- // @ts-ignore
44
- return res[key] = null;
45
- });
46
- }
47
- // @ts-ignore
48
- let mapping = target[SYMBOL.MODELS_MAPPING];
49
- if (_.isArray(mapping)) {
50
- mapping.forEach(m => {
51
- Object.keys(m)
52
- .forEach(key => {
53
- // @ts-ignore
54
- res[key] = null;
55
- });
56
- });
57
- }
58
- else if (mapping) {
59
- Object.keys(mapping)
60
- .forEach(key => {
61
- // @ts-ignore
62
- res[key] = null;
63
- });
64
- }
65
- }
66
- let propNames = Object.keys(res).filter(f => !!f);
67
- propNames = (!propNames.includes('id') ? ['id'] : []).concat(propNames);
68
- return propNames;
69
- }
70
- ;
71
- ({}); // @--end-of-file-for-module=typescript-class-helpers lib/describe-class.ts
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpYmUtY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC90eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvcHJvamVjdHMvdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3NyYy9saWIvZGVzY3JpYmUtY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFJbkM7OztJQUdJO0FBQ0osTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUNuRCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsTUFBZ0IsRUFBRSxNQUFNLEdBQUcsS0FBSztJQUN6RSxhQUFhO0lBQ2IsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLElBQUksTUFBTSxFQUFFLENBQUM7UUFDWCxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRCxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsYUFBYTtZQUNiLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNoRixDQUFDO0lBQ0gsQ0FBQztJQUNELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0QyxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUsvQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoQyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJO1NBQzNCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1NBQ3BCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1NBQ2hCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1NBQ2hCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQ2xCLENBQUE7QUFFSCxDQUFDO0FBRUQ7OztLQUdLO0FBQ0wsTUFBTSxVQUFVLGlDQUFpQyxDQUFDLE1BQWdCO0lBQ2hFLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQTtJQUNaLElBQUksTUFBTSxFQUFFLENBQUM7UUFDWCxhQUFhO1FBQ2IsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDakMsYUFBYTtZQUNiLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztpQkFDdEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNaLGFBQWE7Z0JBQ2IsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQztpQkFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2IsYUFBYTtnQkFDYixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsYUFBYTtRQUNiLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdkIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7cUJBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNiLGFBQWE7b0JBQ2IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztnQkFDbEIsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7YUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBRW5CLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO2lCQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2IsYUFBYTtnQkFDYixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4RSxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQywyRUFBMkUiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgU1lNQk9MIH0gZnJvbSAnLi9zeW1ib2xzJztcblxuXG5cbi8qKlxuICAqIEBERVBSRUNBVEVEXG4gICogRGVzY3JpYmUgZmllbGRzIGFzc2lnbmVkIGluIGNsYXNzXG4gICovXG5jb25zdCBGUmVnRXggPSBuZXcgUmVnRXhwKC8oPzp0aGlzXFwuKSguKz8oPz0gKSkvZyk7XG5leHBvcnQgZnVuY3Rpb24gZGVzY3JpYmVGcm9tQ2xhc3NTdHJpbmdpZnkodGFyZ2V0OiBGdW5jdGlvbiwgcGFyZW50ID0gZmFsc2UpOiBzdHJpbmdbXSB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAocGFyZW50KSB7XG4gICAgdmFyIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRhcmdldC5wcm90b3R5cGUpO1xuICAgIGlmIChwcm90bykge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChkZXNjcmliZUZyb21DbGFzc1N0cmluZ2lmeShwcm90by5jb25zdHJ1Y3RvciwgcGFyZW50KSk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGNsYXNzU3RyaW5nID0gdGFyZ2V0LnRvU3RyaW5nKCk7XG4gIGNvbnN0IG1hdGNoZXMgPSBjbGFzc1N0cmluZy5tYXRjaChGUmVnRXgpIHx8IFtdXG5cblxuXG5cbiAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChtYXRjaGVzKTtcbiAgcmV0dXJuIHJlc3VsdC5tYXAocHJvcCA9PiBwcm9wXG4gICAgLnJlcGxhY2UoJ3RoaXMuJywgJycpXG4gICAgLnJlcGxhY2UoJy4nLCAnJylcbiAgICAucmVwbGFjZSgnKScsICcnKVxuICAgIC5yZXBsYWNlKCcoJywgJycpXG4gIClcblxufVxuXG4vKipcbiAgICogRGVzY3JpYmUgZmllbGRzIGFzc2lnbmUgdGhyb3VnaCBARGVmYXVsdE1vZGVsV2l0aE1hcHBpbmcgZGVjb3JhdG9yXG4gICAqIHdpdGhvdXQgZnVuY3Rpb25zXG4gICAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2NyaWJlQnlEZWZhdWx0TW9kZWxzQW5kTWFwcGluZyh0YXJnZXQ6IEZ1bmN0aW9uKTogc3RyaW5nW10ge1xuICBsZXQgcmVzID0ge31cbiAgaWYgKHRhcmdldCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAodGFyZ2V0W1NZTUJPTC5ERUZBVUxUX01PREVMXSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgT2JqZWN0LmtleXModGFyZ2V0W1NZTUJPTC5ERUZBVUxUX01PREVMXSlcbiAgICAgICAgLmZpbHRlcihrZXkgPT4ge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICByZXR1cm4gIV8uaXNGdW5jdGlvbih0YXJnZXRbU1lNQk9MLkRFRkFVTFRfTU9ERUxdW2tleV0pO1xuICAgICAgICB9KVxuICAgICAgICAuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICByZXR1cm4gcmVzW2tleV0gPSBudWxsO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGxldCBtYXBwaW5nID0gdGFyZ2V0W1NZTUJPTC5NT0RFTFNfTUFQUElOR107XG4gICAgaWYgKF8uaXNBcnJheShtYXBwaW5nKSkge1xuICAgICAgbWFwcGluZy5mb3JFYWNoKG0gPT4ge1xuICAgICAgICBPYmplY3Qua2V5cyhtKVxuICAgICAgICAgIC5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByZXNba2V5XSA9IG51bGw7XG4gICAgICAgICAgfSk7XG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAobWFwcGluZykge1xuXG4gICAgICBPYmplY3Qua2V5cyhtYXBwaW5nKVxuICAgICAgICAuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICByZXNba2V5XSA9IG51bGw7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGxldCBwcm9wTmFtZXMgPSBPYmplY3Qua2V5cyhyZXMpLmZpbHRlcihmID0+ICEhZik7XG4gIHByb3BOYW1lcyA9ICghcHJvcE5hbWVzLmluY2x1ZGVzKCdpZCcpID8gWydpZCddIDogW10pLmNvbmNhdChwcm9wTmFtZXMpO1xuICByZXR1cm4gcHJvcE5hbWVzO1xufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzIGxpYi9kZXNjcmliZS1jbGFzcy50cyJdfQ==
@@ -1,14 +0,0 @@
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
- // @ts-ignore
5
- import { CLASS } from '../lib';
6
-
7
- @CLASS.NAME('ExampleClass')
8
- class ExampleClass {
9
- ...
10
- }
11
- `;
12
- ;
13
- ({}); // @--end-of-file-for-module=typescript-class-helpers lib/errors-messages.ts
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLW1lc3NhZ2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3Byb2plY3RzL3R5cGVzY3JpcHQtY2xhc3MtaGVscGVycy9zcmMvbGliL2Vycm9ycy1tZXNzYWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBRzs7Ozs7Ozs7OztDQVVoRCxDQUFDO0FBRUQsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyw0RUFBNEUiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG5leHBvcnQgY29uc3QgRVJST1JfTVNHX0NMQVNTX1dJVEhPVVRfREVDT1JBVE9SID0gYFt0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnNdW2dldENsYXNzTmFtZSguLi4pXShQUk9EVUNUSU9OIE1PREUgRVJST1IpXG5QbGVhc2UgdXNlIGRlY29hcnRvciBAQ0xBU1NOQU1FIGZvciBlYWNoIGVudGl0eSBvciBjb250cm9sbGVyXG5UaGlzIGlzIHByZXZlbnRpbmcgY2xhc3MgbmFtZSBwcm9ibGVtIGluIG1pbmlmaWVkIGNvZGUuXG4gLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgQ0xBU1MgfSBmcm9tICcuLi9saWInO1xuXG5AQ0xBU1MuTkFNRSgnRXhhbXBsZUNsYXNzJylcbmNsYXNzIEV4YW1wbGVDbGFzcyB7XG4gIC4uLlxufVxuYDtcblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXR5cGVzY3JpcHQtY2xhc3MtaGVscGVycyBsaWIvZXJyb3JzLW1lc3NhZ2VzLnRzIl19
@@ -1,186 +0,0 @@
1
- import { _ } from 'tnp-core/browser';
2
- import { CLASSNAME } from './classname';
3
- import { describeFromClassStringify, describeByDefaultModelsAndMapping } from './describe-class';
4
- import { setClassName } from './set-class-name';
5
- export { Models } from './models';
6
- export { SYMBOL } from './symbols';
7
- export class 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
- const notAllowedAsMethodName = [
43
- 'length', 'name',
44
- 'arguments', 'caller',
45
- 'constructor', 'apply',
46
- 'bind', 'call',
47
- 'toString',
48
- '__defineGetter__',
49
- '__defineSetter__', 'hasOwnProperty',
50
- '__lookupGetter__', '__lookupSetter__',
51
- 'isPrototypeOf', 'propertyIsEnumerable',
52
- 'valueOf', '__proto__', 'toLocaleString',
53
- ];
54
- const getMethodsNames = (classOrClassInstance, allMethodsNames = []) => {
55
- if (!classOrClassInstance) {
56
- return allMethodsNames;
57
- }
58
- const isClassFunction = _.isFunction(classOrClassInstance);
59
- const classFun = (isClassFunction ? classOrClassInstance : Object.getPrototypeOf(classOrClassInstance));
60
- const objectToCheck = isClassFunction ? classOrClassInstance?.prototype : classOrClassInstance;
61
- const prototypeObj = Object.getPrototypeOf(objectToCheck || {});
62
- const properties = _.uniq([
63
- ...Object.getOwnPropertyNames(objectToCheck || {}),
64
- ...Object.getOwnPropertyNames(prototypeObj || {}),
65
- ...Object.keys(objectToCheck || {}),
66
- ...Object.keys(prototypeObj || {}),
67
- ])
68
- .filter(f => !!f && !notAllowedAsMethodName.includes(f));
69
- properties.filter((methodName) => typeof objectToCheck[methodName] === 'function').forEach(p => allMethodsNames.push(p));
70
- if (!classFun || !classFun.constructor || classFun?.constructor?.name === 'Object') {
71
- return allMethodsNames;
72
- }
73
- return getMethodsNames(Object.getPrototypeOf(classFun), allMethodsNames);
74
- };
75
- export const CLASS = {
76
- NAME: CLASSNAME.CLASSNAME,
77
- setName: setClassName,
78
- getBy: TchHelpers.getBy,
79
- /**
80
- * @deprecated
81
- */
82
- getSingleton(target) {
83
- if (typeof target !== 'function') {
84
- console.error(`[typescript-class-helpers][setSingletonObj] Type of target is not a function`);
85
- return;
86
- }
87
- const config = TchHelpers.getConfigs(target)[0];
88
- return config.singleton;
89
- },
90
- /**
91
- * @deprecated
92
- */
93
- setSingletonObj(target, singletonObject) {
94
- if (typeof target !== 'function') {
95
- console.error(`[typescript-class-helpers][setSingletonObj] Type of target is not a function`);
96
- return;
97
- }
98
- if (Array.isArray(singletonObject)) {
99
- console.error(`[typescript-class-helpers][setSingletonObj] Singleton instance cant be an array`);
100
- return;
101
- }
102
- if (typeof singletonObject !== 'object') {
103
- console.error(`[typescript-class-helpers][setSingletonObj] Singleton instance cant must be a object`);
104
- return;
105
- }
106
- const className = CLASS.getName(target);
107
- const config = TchHelpers.getConfigs(target)[0];
108
- if (config.singleton) {
109
- console.warn(`[typescript-class-helpers] You are trying to set singleton of "${className}" second time with different object.`);
110
- }
111
- config.singleton = singletonObject;
112
- },
113
- /**
114
- * @deprecated
115
- */
116
- getConfigs: TchHelpers.getConfigs,
117
- /**
118
- * @deprecated
119
- */
120
- getConfig: (target) => {
121
- return _.first(TchHelpers.getConfigs(target));
122
- },
123
- getMethodsNames(classOrClassInstance) {
124
- return getMethodsNames(classOrClassInstance);
125
- },
126
- getFromObject: TchHelpers.getFromObject,
127
- getName: TchHelpers.getName,
128
- getNameFromObject: TchHelpers.getNameFromObject,
129
- describeProperites: TchHelpers.describeProperites,
130
- /**
131
- * @deprecated
132
- */
133
- OBJECT: (obj) => {
134
- return {
135
- get indexValue() {
136
- return CLASSNAME.getObjectIndexValue(obj);
137
- },
138
- get indexProperty() {
139
- return CLASSNAME.getObjectIndexPropertyValue(obj);
140
- },
141
- get isClassObject() {
142
- if (!_.isObject(obj) || _.isArray(obj) || _.isRegExp(obj) ||
143
- _.isBuffer(obj) || _.isArrayBuffer(obj)) {
144
- return false;
145
- }
146
- if (_.isDate(obj)) {
147
- return true;
148
- }
149
- const className = CLASS.getNameFromObject(obj);
150
- return _.isString(className) && className !== 'Object';
151
- },
152
- isEqual: (anotherObj, compareDeep = false) => {
153
- if (!CLASS.OBJECT(obj).isClassObject || !CLASS.OBJECT(anotherObj).isClassObject) {
154
- return false;
155
- }
156
- if (obj === anotherObj) {
157
- return true;
158
- }
159
- const v1 = CLASSNAME.getObjectIndexValue(obj);
160
- const v2 = CLASSNAME.getObjectIndexValue(anotherObj);
161
- const f1 = CLASSNAME.getObjectClassFamily(obj);
162
- const f2 = CLASSNAME.getObjectClassFamily(anotherObj);
163
- const isFamilyDiff = (!_.isString(f1) || !_.isString(f2) || (f1 !== f2));
164
- if (isFamilyDiff) {
165
- return false;
166
- }
167
- if (!CLASS.OBJECT(obj).isClassObject || !CLASS.OBJECT(anotherObj).isClassObject) {
168
- return false;
169
- }
170
- if ((_.isNumber(v1) && _.isNumber(v2)) || (_.isString(v1) && _.isString(v2))) {
171
- const res = (v1 === v2);
172
- // @ts-ignore
173
- return res;
174
- }
175
- if (compareDeep) {
176
- return _.isEqual(v1, v2);
177
- }
178
- return false;
179
- }
180
- };
181
- }
182
- };
183
- export * from 'enum-values';
184
- ;
185
- ({}); // @--end-of-file-for-module=typescript-class-helpers lib/index.ts
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC90eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvcHJvamVjdHMvdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3NyYy9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLGlDQUFpQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVuQyxNQUFNLE9BQU8sVUFBVTtJQUVyQixNQUFNLENBQUMsS0FBSyxDQUFDLFNBQTRCO1FBQ3ZDLE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFTO1FBQzVCLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDcEMsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNsQixPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUM7UUFDdkIsQ0FBQztRQUNELE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsTUFBTSxDQUFD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O29CQUNiLE9BQU8sR0FBRyxDQUFDO2dCQUNiLENBQUM7Z0JBQ0QsSUFBSSxXQUFXLEVBQUUsQ0FBQztvQkFDaEIsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQTtnQkFDMUIsQ0FBQztnQkFDRCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7U0FDRixDQUFBO0lBQ0gsQ0FBQztDQUNGLENBQUE7QUFFRCxjQUFjLGFBQWEsQ0FBQztBQUUzQixDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGtFQUFrRSIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgeyBDTEFTU05BTUUgfSBmcm9tICcuL2NsYXNzbmFtZSc7XG5pbXBvcnQgeyBkZXNjcmliZUZyb21DbGFzc1N0cmluZ2lmeSwgZGVzY3JpYmVCeURlZmF1bHRNb2RlbHNBbmRNYXBwaW5nIH0gZnJvbSAnLi9kZXNjcmliZS1jbGFzcyc7XG5pbXBvcnQgeyBNb2RlbHMgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBzZXRDbGFzc05hbWUgfSBmcm9tICcuL3NldC1jbGFzcy1uYW1lJztcblxuZXhwb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuZXhwb3J0IHsgU1lNQk9MIH0gZnJvbSAnLi9zeW1ib2xzJztcblxuZXhwb3J0IGNsYXNzIFRjaEhlbHBlcnMge1xuXG4gIHN0YXRpYyBnZXRCeShjbGFzc05hbWU6IHN0cmluZyB8IEZ1bmN0aW9uKSB7XG4gICAgcmV0dXJuIENMQVNTTkFNRS5nZXRDbGFzc0J5KGNsYXNzTmFtZSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0RnJvbU9iamVjdChvOiBPYmplY3QpIHtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZChvKSB8fCBfLmlzTnVsbChvKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoby5jb25zdHJ1Y3Rvcikge1xuICAgICAgcmV0dXJuIG8uY29uc3RydWN0b3I7XG4gICAgfVxuICAgIGNvbnN0IHAgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7XG4gICAgcmV0dXJuIHAgJiYgcC5jb25zdHJ1Y3RvcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXROYW1lKHRhcmdldDogRnVuY3Rpb24sIHByb2R1Y3Rpb24gPSBmYWxzZSkge1xuICAgIHJldHVybiBDTEFTU05BTUUuZ2V0Q2xhc3NOYW1lKHRhcmdldCwgcHJvZHVjdGlvbikgYXMgc3RyaW5nO1xuICB9XG5cbiAgc3RhdGljIGdldE5hbWVGcm9tT2JqZWN0KG86IE9iamVjdCkge1xuICAgIGNvbnN0IGZuQ0xhc3MgPSB0aGlzLmdldEZyb21PYmplY3Qobyk7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TmFtZShmbkNMYXNzKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRDb25maWdzKHRhcmdldDogRnVuY3Rpb24pOiBNb2RlbHMuQ2xhc3NDb25maWdbXSB7XG4gICAgcmV0dXJuIENMQVNTTkFNRS5nZXRDbGFzc0NvbmZpZyh0YXJnZXQpXG4gIH1cblxuICBzdGF0aWMgZGVzY3JpYmVQcm9wZXJpdGVzKHRhcmdldDogRnVuY3Rpb24pIHtcbiAgICBjb25zdCBkMSA9IGRlc2NyaWJlRnJvbUNsYXNzU3RyaW5naWZ5KHRhcmdldCk7XG4gICAgY29uc3QgZDIgPSBkZXNjcmliZUJ5RGVmYXVsdE1vZGVsc0FuZE1hcHBpbmcodGFyZ2V0KTtcbiAgICBsZXQgdW5pcSA9IHt9O1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBkMS5jb25jYXQoZDIpLmZvckVhY2gocCA9PiB1bmlxW3BdID0gcCk7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHVuaXEpXG4gICAgICAuZmlsdGVyKGQgPT4gISFkKVxuICAgICAgLmZpbHRlcihkID0+IHR5cGVvZiB0YXJnZXQucHJvdG90eXBlW2RdICE9PSAnZnVuY3Rpb24nKVxuICB9XG5cbn1cblxuY29uc3Qgbm90QWxsb3dlZEFzTWV0aG9kTmFtZSA9IFtcbiAgJ2xlbmd0aCcsICduYW1lJyxcbiAgJ2FyZ3VtZW50cycsICdjYWxsZXInLFxuICAnY29uc3RydWN0b3InLCAnYXBwbHknLFxuICAnYmluZCcsICdjYWxsJyxcbiAgJ3RvU3RyaW5nJyxcbiAgJ19fZGVmaW5lR2V0dGVyX18nLFxuICAnX19kZWZpbmVTZXR0ZXJfXycsICdoYXNPd25Qcm9wZXJ0eScsXG4gICdfX2xvb2t1cEdldHRlcl9fJywgJ19fbG9va3VwU2V0dGVyX18nLFxuICAnaXNQcm90b3R5cGVPZicsICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsXG4gICd2YWx1ZU9mJywgJ19fcHJvdG9fXycsICd0b0xvY2FsZVN0cmluZycsXG5dO1xuXG5jb25zdCBnZXRNZXRob2RzTmFtZXMgPSAoY2xhc3NPckNsYXNzSW5zdGFuY2U6IGFueSwgYWxsTWV0aG9kc05hbWVzID0gW10pOiBzdHJpbmdbXSA9PiB7XG4gIGlmICghY2xhc3NPckNsYXNzSW5zdGFuY2UpIHtcbiAgICByZXR1cm4gYWxsTWV0aG9kc05hbWVzO1xuICB9XG5cbiAgY29uc3QgaXNDbGFzc0Z1bmN0aW9uID0gXy5pc0Z1bmN0aW9uKGNsYXNzT3JDbGFzc0luc3RhbmNlKTtcbiAgY29uc3QgY2xhc3NGdW4gPSAoaXNDbGFzc0Z1bmN0aW9uID8gY2xhc3NPckNsYXNzSW5zdGFuY2UgOiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY2xhc3NPckNsYXNzSW5zdGFuY2UpKTtcbiAgY29uc3Qgb2JqZWN0VG9DaGVjayA9IGlzQ2xhc3NGdW5jdGlvbiA/IChjbGFzc09yQ2xhc3NJbnN0YW5jZSBhcyBGdW5jdGlvbik/LnByb3RvdHlwZSA6IGNsYXNzT3JDbGFzc0luc3RhbmNlO1xuICBjb25zdCBwcm90b3R5cGVPYmogPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0VG9DaGVjayB8fCB7fSk7XG5cbiAgY29uc3QgcHJvcGVydGllcyA9IF8udW5pcShbXG4gICAgLi4uT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0VG9DaGVjayB8fCB7fSksXG4gICAgLi4uT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvdG90eXBlT2JqIHx8IHt9KSxcbiAgICAuLi5PYmplY3Qua2V5cyhvYmplY3RUb0NoZWNrIHx8IHt9KSxcbiAgICAuLi5PYmplY3Qua2V5cyhwcm90b3R5cGVPYmogfHwge30pLFxuICBdKVxuICAgIC5maWx0ZXIoZiA9PiAhIWYgJiYgIW5vdEFsbG93ZWRBc01ldGhvZE5hbWUuaW5jbHVkZXMoZikpO1xuXG4gIHByb3BlcnRpZXMuZmlsdGVyKChtZXRob2ROYW1lKSA9PiB0eXBlb2Ygb2JqZWN0VG9DaGVja1ttZXRob2ROYW1lXSA9PT0gJ2Z1bmN0aW9uJykuZm9yRWFjaChwID0+IGFsbE1ldGhvZHNOYW1lcy5wdXNoKHApKTtcblxuICBpZiAoIWNsYXNzRnVuIHx8ICFjbGFzc0Z1bi5jb25zdHJ1Y3RvciB8fCBjbGFzc0Z1bj8uY29uc3RydWN0b3I/Lm5hbWUgPT09ICdPYmplY3QnKSB7XG4gICAgcmV0dXJuIGFsbE1ldGhvZHNOYW1lcztcbiAgfVxuICByZXR1cm4gZ2V0TWV0aG9kc05hbWVzKE9iamVjdC5nZXRQcm90b3R5cGVPZihjbGFzc0Z1biksIGFsbE1ldGhvZHNOYW1lcyk7XG59O1xuXG5leHBvcnQgY29uc3QgQ0xBU1MgPSB7XG4gIE5BTUU6IENMQVNTTkFNRS5DTEFTU05BTUUsXG4gIHNldE5hbWU6IHNldENsYXNzTmFtZSxcbiAgZ2V0Qnk6IFRjaEhlbHBlcnMuZ2V0QnksXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgZ2V0U2luZ2xldG9uPFQgPSBhbnk+KHRhcmdldDogRnVuY3Rpb24pIHtcbiAgICBpZiAodHlwZW9mIHRhcmdldCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc29sZS5lcnJvcihgW3R5cGVzY3JpcHQtY2xhc3MtaGVscGVyc11bc2V0U2luZ2xldG9uT2JqXSBUeXBlIG9mIHRhcmdldCBpcyBub3QgYSBmdW5jdGlvbmApXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3QgY29uZmlnID0gVGNoSGVscGVycy5nZXRDb25maWdzKHRhcmdldClbMF1cblxuXG4gICAgcmV0dXJuIGNvbmZpZy5zaW5nbGV0b24gYXMgVDtcbiAgfSxcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBzZXRTaW5nbGV0b25PYmoodGFyZ2V0OiBGdW5jdGlvbiwgc2luZ2xldG9uT2JqZWN0OiBhbnkpIHtcblxuICAgIGlmICh0eXBlb2YgdGFyZ2V0ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBbdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzXVtzZXRTaW5nbGV0b25PYmpdIFR5cGUgb2YgdGFyZ2V0IGlzIG5vdCBhIGZ1bmN0aW9uYClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHNpbmdsZXRvbk9iamVjdCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFt0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnNdW3NldFNpbmdsZXRvbk9ial0gU2luZ2xldG9uIGluc3RhbmNlIGNhbnQgYmUgYW4gYXJyYXlgKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBzaW5nbGV0b25PYmplY3QgIT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBbdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzXVtzZXRTaW5nbGV0b25PYmpdIFNpbmdsZXRvbiBpbnN0YW5jZSBjYW50IG11c3QgYmUgYSBvYmplY3RgKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgY2xhc3NOYW1lID0gQ0xBU1MuZ2V0TmFtZSh0YXJnZXQpO1xuXG5cblxuICAgIGNvbnN0IGNvbmZpZyA9IFRjaEhlbHBlcnMuZ2V0Q29uZmlncyh0YXJnZXQpWzBdXG5cbiAgICBpZiAoY29uZmlnLnNpbmdsZXRvbikge1xuICAgICAgY29uc29sZS53YXJuKGBbdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzXSBZb3UgYXJlIHRyeWluZyB0byBzZXQgc2luZ2xldG9uIG9mIFwiJHtjbGFzc05hbWV9XCIgc2Vjb25kIHRpbWUgd2l0aCBkaWZmZXJlbnQgb2JqZWN0LmApXG4gICAgfVxuXG4gICAgY29uZmlnLnNpbmdsZXRvbiA9IHNpbmdsZXRvbk9iamVjdDtcbiAgfSxcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBnZXRDb25maWdzOiBUY2hIZWxwZXJzLmdldENvbmZpZ3MsXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgZ2V0Q29uZmlnOiAodGFyZ2V0OiBGdW5jdGlvbikgPT4ge1xuICAgIHJldHVybiBfLmZpcnN0KFRjaEhlbHBlcnMuZ2V0Q29uZmlncyh0YXJnZXQpKTtcbiAgfSxcblxuXG4gIGdldE1ldGhvZHNOYW1lcyhjbGFzc09yQ2xhc3NJbnN0YW5jZTogYW55KTogc3RyaW5nW10ge1xuICAgIHJldHVybiBnZXRNZXRob2RzTmFtZXMoY2xhc3NPckNsYXNzSW5zdGFuY2UpO1xuICB9LFxuICBnZXRGcm9tT2JqZWN0OiBUY2hIZWxwZXJzLmdldEZyb21PYmplY3QsXG4gIGdldE5hbWU6IFRjaEhlbHBlcnMuZ2V0TmFtZSxcbiAgZ2V0TmFtZUZyb21PYmplY3Q6IFRjaEhlbHBlcnMuZ2V0TmFtZUZyb21PYmplY3QsXG4gIGRlc2NyaWJlUHJvcGVyaXRlczogVGNoSGVscGVycy5kZXNjcmliZVByb3Blcml0ZXMsXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgT0JKRUNUOiAob2JqOiBhbnkpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0IGluZGV4VmFsdWUoKSB7XG4gICAgICAgIHJldHVybiBDTEFTU05BTUUuZ2V0T2JqZWN0SW5kZXhWYWx1ZShvYmopO1xuICAgICAgfSxcbiAgICAgIGdldCBpbmRleFByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gQ0xBU1NOQU1FLmdldE9iamVjdEluZGV4UHJvcGVydHlWYWx1ZShvYmopO1xuICAgICAgfSxcbiAgICAgIGdldCBpc0NsYXNzT2JqZWN0KCkge1xuXG4gICAgICAgIGlmICghXy5pc09iamVjdChvYmopIHx8IF8uaXNBcnJheShvYmopIHx8IF8uaXNSZWdFeHAob2JqKSB8fFxuICAgICAgICAgIF8uaXNCdWZmZXIob2JqKSB8fCBfLmlzQXJyYXlCdWZmZXIob2JqKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXy5pc0RhdGUob2JqKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IENMQVNTLmdldE5hbWVGcm9tT2JqZWN0KG9iailcbiAgICAgICAgcmV0dXJuIF8uaXNTdHJpbmcoY2xhc3NOYW1lKSAmJiBjbGFzc05hbWUgIT09ICdPYmplY3QnO1xuICAgICAgfSxcbiAgICAgIGlzRXF1YWw6IChhbm90aGVyT2JqOiBhbnksIGNvbXBhcmVEZWVwID0gZmFsc2UpID0+IHtcbiAgICAgICAgaWYgKCFDTEFTUy5PQkpFQ1Qob2JqKS5pc0NsYXNzT2JqZWN0IHx8ICFDTEFTUy5PQkpFQ1QoYW5vdGhlck9iaikuaXNDbGFzc09iamVjdCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob2JqID09PSBhbm90aGVyT2JqKSB7XG5cbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2MSA9IENMQVNTTkFNRS5nZXRPYmplY3RJbmRleFZhbHVlKG9iaik7XG4gICAgICAgIGNvbnN0IHYyID0gQ0xBU1NOQU1FLmdldE9iamVjdEluZGV4VmFsdWUoYW5vdGhlck9iaik7XG4gICAgICAgIGNvbnN0IGYxID0gQ0xBU1NOQU1FLmdldE9iamVjdENsYXNzRmFtaWx5KG9iailcbiAgICAgICAgY29uc3QgZjIgPSBDTEFTU05BTUUuZ2V0T2JqZWN0Q2xhc3NGYW1pbHkoYW5vdGhlck9iailcbiAgICAgICAgY29uc3QgaXNGYW1pbHlEaWZmID0gKCFfLmlzU3RyaW5nKGYxKSB8fCAhXy5pc1N0cmluZyhmMikgfHwgKGYxICE9PSBmMikpO1xuXG4gICAgICAgIGlmIChpc0ZhbWlseURpZmYpIHtcblxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIUNMQVNTLk9CSkVDVChvYmopLmlzQ2xhc3NPYmplY3QgfHwgIUNMQVNTLk9CSkVDVChhbm90aGVyT2JqKS5pc0NsYXNzT2JqZWN0KSB7XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuXG5cblxuXG5cbiAgICAgICAgaWYgKChfLmlzTnVtYmVyKHYxKSAmJiBfLmlzTnVtYmVyKHYyKSkgfHwgKF8uaXNTdHJpbmcodjEpICYmIF8uaXNTdHJpbmcodjIpKSkge1xuXG4gICAgICAgICAgY29uc3QgcmVzID0gKHYxID09PSB2Mik7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbXBhcmVEZWVwKSB7XG4gICAgICAgICAgcmV0dXJuIF8uaXNFcXVhbCh2MSwgdjIpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgKiBmcm9tICdlbnVtLXZhbHVlcyc7XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMgbGliL2luZGV4LnRzIl19