typescript-class-helpers 13.2.10 → 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.
Files changed (92) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/browser/README.md +24 -24
  3. package/browser/esm2020/lib/classname.mjs +150 -150
  4. package/browser/esm2020/lib/describe-class.mjs +71 -71
  5. package/browser/esm2020/lib/errors-messages.mjs +3 -3
  6. package/browser/esm2020/lib/index.mjs +134 -134
  7. package/browser/esm2020/lib/models.mjs +26 -26
  8. package/browser/esm2020/lib/registerd-db.mjs +5 -5
  9. package/browser/esm2020/lib/set-class-name.mjs +89 -89
  10. package/browser/esm2020/lib/storage.mjs +23 -23
  11. package/browser/esm2020/lib/symbols.mjs +7 -7
  12. package/browser/esm2020/public-api.mjs +1 -1
  13. package/browser/esm2020/typescript-class-helpers.mjs +4 -4
  14. package/browser/fesm2015/typescript-class-helpers.mjs +476 -476
  15. package/browser/fesm2020/typescript-class-helpers.mjs +476 -476
  16. package/browser/lib/classname.d.ts +15 -15
  17. package/browser/lib/describe-class.d.ts +5 -5
  18. package/browser/lib/index.d.ts +32 -32
  19. package/browser/lib/models.d.ts +66 -66
  20. package/browser/lib/registerd-db.d.ts +4 -4
  21. package/browser/lib/set-class-name.d.ts +1 -1
  22. package/browser/lib/symbols.d.ts +5 -5
  23. package/browser/typescript-class-helpers.d.ts +4 -4
  24. package/client/README.md +24 -24
  25. package/client/esm2020/lib/classname.mjs +150 -150
  26. package/client/esm2020/lib/describe-class.mjs +71 -71
  27. package/client/esm2020/lib/errors-messages.mjs +3 -3
  28. package/client/esm2020/lib/index.mjs +134 -134
  29. package/client/esm2020/lib/models.mjs +26 -26
  30. package/client/esm2020/lib/registerd-db.mjs +5 -5
  31. package/client/esm2020/lib/set-class-name.mjs +89 -89
  32. package/client/esm2020/lib/storage.mjs +23 -23
  33. package/client/esm2020/lib/symbols.mjs +7 -7
  34. package/client/esm2020/public-api.mjs +1 -1
  35. package/client/esm2020/typescript-class-helpers.mjs +4 -4
  36. package/client/fesm2015/typescript-class-helpers.mjs +476 -476
  37. package/client/fesm2020/typescript-class-helpers.mjs +476 -476
  38. package/client/lib/classname.d.ts +15 -15
  39. package/client/lib/describe-class.d.ts +5 -5
  40. package/client/lib/index.d.ts +32 -32
  41. package/client/lib/models.d.ts +66 -66
  42. package/client/lib/registerd-db.d.ts +4 -4
  43. package/client/lib/set-class-name.d.ts +1 -1
  44. package/client/lib/symbols.d.ts +5 -5
  45. package/client/package.json +37 -42
  46. package/client/typescript-class-helpers.d.ts +4 -4
  47. package/index.d.ts +1 -1
  48. package/index.js.map +1 -1
  49. package/lib/classname.d.ts +16 -16
  50. package/lib/classname.js.map +1 -1
  51. package/lib/describe-class.d.ts +6 -6
  52. package/lib/describe-class.js.map +1 -1
  53. package/lib/errors-messages.d.ts +1 -1
  54. package/lib/errors-messages.js.map +1 -1
  55. package/lib/index.d.ts +33 -33
  56. package/lib/index.js.map +1 -1
  57. package/lib/models.d.ts +68 -68
  58. package/lib/models.js.map +1 -1
  59. package/lib/registerd-db.d.ts +5 -5
  60. package/lib/registerd-db.js.map +1 -1
  61. package/lib/set-class-name.d.ts +2 -2
  62. package/lib/set-class-name.js.map +1 -1
  63. package/lib/storage.d.ts +1 -1
  64. package/lib/storage.js.map +1 -1
  65. package/lib/symbols.d.ts +6 -6
  66. package/lib/symbols.js.map +1 -1
  67. package/package.json +3 -3
  68. package/package.json_devDependencies.json +223 -223
  69. package/package.json_tnp.json5 +51 -48
  70. package/tmp-environment.json +44 -47
  71. package/websql/README.md +24 -24
  72. package/websql/esm2020/lib/classname.mjs +150 -150
  73. package/websql/esm2020/lib/describe-class.mjs +71 -71
  74. package/websql/esm2020/lib/errors-messages.mjs +3 -3
  75. package/websql/esm2020/lib/index.mjs +134 -134
  76. package/websql/esm2020/lib/models.mjs +24 -24
  77. package/websql/esm2020/lib/registerd-db.mjs +5 -5
  78. package/websql/esm2020/lib/set-class-name.mjs +89 -89
  79. package/websql/esm2020/lib/storage.mjs +23 -23
  80. package/websql/esm2020/lib/symbols.mjs +7 -7
  81. package/websql/esm2020/public-api.mjs +1 -1
  82. package/websql/esm2020/typescript-class-helpers.mjs +4 -4
  83. package/websql/fesm2015/typescript-class-helpers.mjs +474 -474
  84. package/websql/fesm2020/typescript-class-helpers.mjs +474 -474
  85. package/websql/lib/classname.d.ts +15 -15
  86. package/websql/lib/describe-class.d.ts +5 -5
  87. package/websql/lib/index.d.ts +32 -32
  88. package/websql/lib/models.d.ts +67 -67
  89. package/websql/lib/registerd-db.d.ts +4 -4
  90. package/websql/lib/set-class-name.d.ts +1 -1
  91. package/websql/lib/symbols.d.ts +5 -5
  92. package/websql/typescript-class-helpers.d.ts +4 -4
@@ -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 can be used in npm package "typescript-class-helpers@13.2.10"
3
+ Assets from this folder are being shipped with this npm package (typescript-class-helpers@13.2.12)
4
4
  created from this project.
5
5
 
6
6
  THIS FILE IS GENERATED.THIS FILE IS GENERATED. THIS FILE IS GENERATED.
package/browser/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/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 = 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/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 = 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3NuYW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS90eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvcHJvamVjdHMvdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3NyYy9saWIvY2xhc3NuYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RFLEtBQUs7QUFDTCxLQUFLO0FBR0wsU0FBUyxVQUFVO0lBQ2pCLE1BQU0sQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDO0lBQ3ZCLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQVEsQ0FBQztBQUNsQyxDQUFDO0FBQ0QsTUFBTSxLQUFXLFNBQVMsQ0E4S3pCO0FBOUtELFdBQWlCLFdBQVM7SUFFeEIsU0FBZ0IsY0FBYyxDQUFDLE1BQWdCLEVBQUUsVUFBZ0MsRUFBRSxFQUFFLFlBQXVCO1FBQzFHLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pCLE1BQU0sMkVBQTJFLE1BQU0sRUFBRSxDQUFBO1NBQzFGO1FB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LENBQUMsQ0FBQTtTQUN6QjtRQUNELElBQUksT0FBTyxTQUFTLEtBQUssVUFBVSxFQUFFLEVBQUUsaUJBQWlCO1lBQ3RELEdBQUcsR0FBRyxTQUFTLENBQUM7U0FDakI7UUFDRCxJQUFJLFNBQVMsS0FBSyxNQUFNLEVBQUU7WUFDeEIsR0FBRyxHQUFHLElBQUksQ0FBQztTQUNaO1FBRUQsSUFBSSxTQUFTLEtBQUssVUFBVSxFQUFFO1lBQzVCLEdBQUcsR0FBRyxRQUFRLENBQUM7U0FDaEI7UUFFRCxJQUFJLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBRTFELElBQUksQ0FBQyxFQUFFO1lBQ0wsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7U0FDaEI7UUFFRCxhQUFhO1FBQ2IsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBakNlLHNCQUFVLGFBaUN6QixDQUFBO0FBRUgsQ0FBQyxFQTlLZ0IsU0FBUyxLQUFULFNBQVMsUUE4S3pCO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxzRUFBc0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgeyBNb2RlbHMgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBTWU1CT0wgfSBmcm9tICcuL3N5bWJvbHMnO1xuaW1wb3J0IHsgVGNoSGVscGVycyB9IGZyb20gJy4vaW5kZXgnO1xuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgZ2V0U3RvcmFnZSB9IGZyb20gJy4vc3RvcmFnZSc7XG5pbXBvcnQgeyBzZXRDbGFzc05hbWUgfSBmcm9tICcuL3NldC1jbGFzcy1uYW1lJztcbmltcG9ydCB7IHJlZ2lzdGVyZCB9IGZyb20gJy4vcmVnaXN0ZXJkLWRiJztcbmltcG9ydCB7IEVSUk9SX01TR19DTEFTU19XSVRIT1VUX0RFQ09SQVRPUiB9IGZyb20gJy4vZXJyb3JzLW1lc3NhZ2VzJztcbi8qICovXG4vKiAqL1xuICBcblxuZnVuY3Rpb24gZ2V0Q2xhc3NlcygpOiBNb2RlbHMuQ2xhc3NNZXRhW10ge1xuICBjb25zdCBzID0gZ2V0U3RvcmFnZSgpO1xuICByZXR1cm4gc1tTWU1CT0wuQ0xBU1NFU10gYXMgYW55O1xufVxuZXhwb3J0IG5hbWVzcGFjZSBDTEFTU05BTUUge1xuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRDbGFzc0NvbmZpZyh0YXJnZXQ6IEZ1bmN0aW9uLCBjb25maWdzOiBNb2RlbHMuQ2xhc3NDb25maWdbXSA9IFtdLCBjYWxsZXJUYXJnZXQ/OiBGdW5jdGlvbik6IE1vZGVscy5DbGFzc0NvbmZpZ1tdIHtcbiAgICBpZiAoIV8uaXNGdW5jdGlvbih0YXJnZXQpKSB7XG4gICAgICB0aHJvdyBgW3R5cGVzY3JpcHQtY2xhc3MtaGVscGVyXVtnZXRDbGFzc0NvbmZpZ10gQ2Fubm90IGdldCBjbGFzcyBjb25maWcgZnJvbTogJHt0YXJnZXR9YFxuICAgIH1cblxuICAgIGxldCBjb25maWc6IE1vZGVscy5DbGFzc0NvbmZpZztcbiAgICBjb25zdCBwYXJlbnRDbGFzcyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0YXJnZXQpO1xuICAgIGNvbnN0IGlzVmFsaWRQYXJlbnQgPSAoXy5pc0Z1bmN0aW9uKHBhcmVudENsYXNzKSAmJiBwYXJlbnRDbGFzcy5uYW1lICE9PSAnJyk7XG5cbiAgICBpZiAocmVnaXN0ZXJkLmNsYXNzZXMuaW5jbHVkZXModGFyZ2V0KSkge1xuICAgICAgY29uZmlnID0gcmVnaXN0ZXJkLmNvbmZpZ3NbcmVnaXN0ZXJkLmNsYXNzZXMuZmluZEluZGV4KGMgPT4gYyA9PT0gdGFyZ2V0KV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbmZpZyA9IG5ldyBNb2RlbHMuQ2xhc3NDb25maWcoKTtcbiAgICAgIGNvbmZpZy5jbGFzc1JlZmVyZW5jZSA9IHRhcmdldDtcbiAgICAgIHJlZ2lzdGVyZC5jbGFzc2VzLnB1c2godGFyZ2V0KTtcbiAgICB9XG5cbiAgICByZWdpc3RlcmQuY29uZmlnc1tyZWdpc3RlcmQuY2xhc3Nlcy5maW5kSW5kZXgoYyA9PiBjID09PSB0YXJnZXQpXSA9IGNvbmZpZztcbiAgICBpZiAoY2FsbGVyVGFyZ2V0KSB7XG4gICAgICBjb25zdCBjYWxsZXJUYXJnZXRDb25maWcgPSByZWdpc3RlcmQuY29uZmlnc1tyZWdpc3RlcmQuY2xhc3Nlcy5maW5kSW5kZXgoYyA9PiBjID09PSBjYWxsZXJUYXJnZXQpXTtcbiAgICAgIGlmICghY29uZmlnLnZDaGlsZHJlbi5pbmNsdWRlcyhjYWxsZXJUYXJnZXRDb25maWcpKSB7XG4gICAgICAgIGNvbmZpZy52Q2hpbGRyZW4ucHVzaChjYWxsZXJUYXJnZXRDb25maWcpO1xuICAgICAgfVxuICAgICAgY2FsbGVyVGFyZ2V0Q29uZmlnLnZQYXJlbnQgPSBjb25maWc7XG4gICAgfVxuXG4gICAgY29uZmlncy5wdXNoKGNvbmZpZyk7XG5cbiAgICByZXR1cm4gaXNWYWxpZFBhcmVudCA/IGdldENsYXNzQ29uZmlnKHBhcmVudENsYXNzLCBjb25maWdzLCB0YXJnZXQpIDogY29uZmlncztcbiAgfVxuXG4gIC8qKlxuICAgKiBQTEVBU0UgUFJPVklERSBOQU1FIEFTIFRZUEVEIFNUUklORywgTk9UIFZBUklBQkxFXG4gICAqIERlY29yYXRvciByZXF1cmVkIGZvciBwcm9kdWN0aW9uIG1vZGVcbiAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiBjbGFzc1xuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIENMQVNTTkFNRShjbGFzc05hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zPzogTW9kZWxzLkNMQVNTTkFNRU9wdGlvbnMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogRnVuY3Rpb24pIHtcblxuICAgICAgcmV0dXJuIHNldENsYXNzTmFtZSh0YXJnZXQsIGNsYXNzTmFtZSwgb3B0aW9ucyk7XG4gICAgfSBhcyBhbnk7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0Q2xhc3NOYW1lKHRhcmdldDogRnVuY3Rpb24sIHByb2R1Y3Rpb24gPSBmYWxzZSkge1xuICAgIGlmIChfLmlzTmlsKHRhcmdldCkpIHtcblxuXG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgICBpZiAoXy5pc1N0cmluZyh0YXJnZXQpKSB7XG4gICAgICBjb25zb2xlLmxvZyh0YXJnZXQpO1xuICAgICAgSGVscGVycy53YXJuKGBbdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzXVtnZXRDbGFzc05hbWVdIHRhcmdldCBpcyBzdHJpbmc6ICcke3RhcmdldH0nLCBwcm9kdWNpdG9uOiAke3Byb2R1Y3Rpb259YClcbiAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuICAgIGlmICghXy5pc0Z1bmN0aW9uKHRhcmdldCkpIHtcbiAgICAgIGNvbnNvbGUubG9nKHRhcmdldCk7XG4gICAgICBIZWxwZXJzLndhcm4oYFt0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnNdW2dldENsYXNzTmFtZV0gdGFyZ2V0IGlzIG5vdCBhIGNsYXNzYClcbiAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlncyA9IGdldENsYXNzQ29uZmlnKHRhcmdldCk7XG4gICAgY29uc3QgY29uZmlnID0gXy5maXJzdChjb25maWdzKTtcblxuICAgIGNvbnN0IGNsYXNzTmFtZUluQnJvd3NlciA9IGNvbmZpZz8uY2xhc3NOYW1lSW5Ccm93c2VyO1xuXG4gICAgaWYgKEhlbHBlcnMuaXNCcm93c2VyICYmIF8uaXNTdHJpbmcoY2xhc3NOYW1lSW5Ccm93c2VyKSkge1xuICAgICAgcmV0dXJuIGNsYXNzTmFtZUluQnJvd3NlcjtcbiAgICB9XG5cbiAgICBjb25zdCBjbGFzc05hbWUgPSBjb25maWc/LmNsYXNzTmFtZTtcblxuICAgIGlmIChjbGFzc05hbWUpIHtcbiAgICAgIHJldHVybiBjbGFzc05hbWU7XG4gICAgfVxuXG4gICAgaWYgKHByb2R1Y3Rpb24pIHtcbiAgICAgIGNvbnNvbGUubG9nKCdjbGFzcyB3aXRob3V0IEBDTEFTUy5OQU1FIGRlb2NyYXRvcicsIHRhcmdldCBhcyBhbnkpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoRVJST1JfTVNHX0NMQVNTX1dJVEhPVVRfREVDT1JBVE9SKTtcbiAgICB9IGVsc2Uge1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0Lm5hbWU7XG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRPYmplY3RJbmRleFByb3BlcnR5VmFsdWUob2JqOiBhbnkpIHtcbiAgICBjb25zdCBjbGFzc05hbWUgPSBUY2hIZWxwZXJzLmdldE5hbWVGcm9tT2JqZWN0KG9iaik7XG5cbiAgICBsZXQgYyA9IGdldENsYXNzZXMoKS5maW5kKGMgPT4gYy5jbGFzc05hbWUgPT09IGNsYXNzTmFtZSk7XG5cbiAgICBpZiAoYykge1xuICAgICAgcmV0dXJuIGMudW5pcXVlS2V5O1xuICAgIH1cbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgZXhwb3J0IGZ1bmN0aW9uIGdldENsYXNzRmFtaWx5QnlDbGFzc05hbWUoY2xhc3NOYW1lOiBzdHJpbmcpIHtcbiAgICBsZXQgYyA9IGdldENsYXNzZXMoKS5maW5kKGMgPT4gYy5jbGFzc05hbWUgPT09IGNsYXNzTmFtZSk7XG5cbiAgICBpZiAoYykge1xuICAgICAgcmV0dXJuIGMuY2xhc3NGYW1pbHk7XG4gICAgfVxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBleHBvcnQgZnVuY3Rpb24gZ2V0T2JqZWN0Q2xhc3NGYW1pbHkob2JqOiBhbnkpIHtcbiAgICBjb25zdCBjbGFzc05hbWUgPSBUY2hIZWxwZXJzLmdldE5hbWVGcm9tT2JqZWN0KG9iaik7XG5cbiAgICBsZXQgYyA9IGdldENsYXNzZXMoKS5maW5kKGMgPT4gYy5jbGFzc05hbWUgPT09IGNsYXNzTmFtZSk7XG5cbiAgICBpZiAoYykge1xuICAgICAgcmV0dXJuIGMuY2xhc3NGYW1pbHk7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldE9iamVjdEluZGV4VmFsdWUob2JqOiBhbnkpIHtcbiAgICBjb25zdCBjbGFzc05hbWUgPSBUY2hIZWxwZXJzLmdldE5hbWVGcm9tT2JqZWN0KG9iaik7XG5cbiAgICBsZXQgYyA9IGdldENsYXNzZXMoKS5maW5kKGMgPT4gYy5jbGFzc05hbWUgPT09IGNsYXNzTmFtZSk7XG5cbiAgICBpZiAoYyAmJiBfLmlzU3RyaW5nKGMudW5pcXVlS2V5KSkge1xuICAgICAgcmV0dXJuIG9ialtjLnVuaXF1ZUtleV07XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldENsYXNzQnkoY2xhc3NOYW1lOiBzdHJpbmcgfCBGdW5jdGlvbik6IEZ1bmN0aW9uIHtcbiAgICBsZXQgcmVzO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNsYXNzTmFtZSkpIHtcbiAgICAgIGlmIChjbGFzc05hbWUubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgIHRocm93IGBNYXBwaW5nIGVycm9yLi4uIHBsZWFzZSB1c2UgcHJvcGVyIGNsYXNzIG5hbWVzOlxuICB7XG4gICAgcHJvcGVydHlPYmplY3Q6ICdNeUNsYXNzTmFtZScsXG4gICAgcHJvcGVydHlXaXRoQXJyYXk6IFsnTXlDbGFzc05hbWUnXVxuICB9XG5cbiAgICAgICAgYFxuICAgICAgfVxuICAgICAgY2xhc3NOYW1lID0gY2xhc3NOYW1lWzBdXG4gICAgfVxuICAgIGlmICh0eXBlb2YgY2xhc3NOYW1lID09PSAnZnVuY3Rpb24nKSB7IC8vIFRPRE8gUVVJQ0tfRklYXG4gICAgICByZXMgPSBjbGFzc05hbWU7XG4gICAgfVxuICAgIGlmIChjbGFzc05hbWUgPT09ICdEYXRlJykge1xuICAgICAgcmVzID0gRGF0ZTtcbiAgICB9XG5cbiAgICBpZiAoY2xhc3NOYW1lID09PSAnRm9ybURhdGEnKSB7XG4gICAgICByZXMgPSBGb3JtRGF0YTtcbiAgICB9XG5cbiAgICBsZXQgYyA9IGdldENsYXNzZXMoKS5maW5kKGMgPT4gYy5jbGFzc05hbWUgPT09IGNsYXNzTmFtZSk7XG5cbiAgICBpZiAoYykge1xuICAgICAgcmVzID0gYy50YXJnZXQ7XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiByZXM7XG4gIH1cblxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzIGxpYi9jbGFzc25hbWUudHMiXX0=
@@ -1,72 +1,72 @@
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
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
72
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpYmUtY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItYnVuZGxlL3R5cGVzY3JpcHQtY2xhc3MtaGVscGVycy9wcm9qZWN0cy90eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvc3JjL2xpYi9kZXNjcmliZS1jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUluQzs7O0lBR0k7QUFDSixNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBQ25ELE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxNQUFnQixFQUFFLE1BQU0sR0FBRyxLQUFLO0lBQ3pFLGFBQWE7SUFDYixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDaEIsSUFBSSxNQUFNLEVBQUU7UUFDVixJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRCxJQUFJLEtBQUssRUFBRTtZQUNULGFBQWE7WUFDYixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDL0U7S0FDRjtJQUNELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0QyxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUsvQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoQyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJO1NBQzNCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1NBQ3BCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1NBQ2hCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1NBQ2hCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQ2xCLENBQUE7QUFFSCxDQUFDO0FBRUQ7OztLQUdLO0FBQ0wsTUFBTSxVQUFVLGlDQUFpQyxDQUFDLE1BQWdCO0lBQ2hFLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQTtJQUNaLElBQUksTUFBTSxFQUFFO1FBQ1YsYUFBYTtRQUNiLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNoQyxhQUFhO1lBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2lCQUN0QyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ1osYUFBYTtnQkFDYixPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDMUQsQ0FBQyxDQUFDO2lCQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDYixhQUFhO2dCQUNiLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBQztTQUNOO1FBQ0QsYUFBYTtRQUNiLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3RCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xCLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3FCQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDYixhQUFhO29CQUNiLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ2xCLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUE7U0FDSDthQUFNLElBQUksT0FBTyxFQUFFO1lBRWxCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO2lCQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2IsYUFBYTtnQkFDYixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUFDO1NBQ047S0FDRjtJQUVELElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hFLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDJFQUEyRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF8gfSBmcm9tICd0bnAtY29yZS9icm93c2VyJztcbmltcG9ydCB7IFNZTUJPTCB9IGZyb20gJy4vc3ltYm9scyc7XG5cblxuXG4vKipcbiAgKiBAREVQUkVDQVRFRFxuICAqIERlc2NyaWJlIGZpZWxkcyBhc3NpZ25lZCBpbiBjbGFzc1xuICAqL1xuY29uc3QgRlJlZ0V4ID0gbmV3IFJlZ0V4cCgvKD86dGhpc1xcLikoLis/KD89ICkpL2cpO1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2NyaWJlRnJvbUNsYXNzU3RyaW5naWZ5KHRhcmdldDogRnVuY3Rpb24sIHBhcmVudCA9IGZhbHNlKTogc3RyaW5nW10ge1xuICAvLyBAdHMtaWdub3JlXG4gIHZhciByZXN1bHQgPSBbXTtcbiAgaWYgKHBhcmVudCkge1xuICAgIHZhciBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0YXJnZXQucHJvdG90eXBlKTtcbiAgICBpZiAocHJvdG8pIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQoZGVzY3JpYmVGcm9tQ2xhc3NTdHJpbmdpZnkocHJvdG8uY29uc3RydWN0b3IsIHBhcmVudCkpO1xuICAgIH1cbiAgfVxuICBjb25zdCBjbGFzc1N0cmluZyA9IHRhcmdldC50b1N0cmluZygpO1xuICBjb25zdCBtYXRjaGVzID0gY2xhc3NTdHJpbmcubWF0Y2goRlJlZ0V4KSB8fCBbXVxuXG5cblxuXG4gIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQobWF0Y2hlcyk7XG4gIHJldHVybiByZXN1bHQubWFwKHByb3AgPT4gcHJvcFxuICAgIC5yZXBsYWNlKCd0aGlzLicsICcnKVxuICAgIC5yZXBsYWNlKCcuJywgJycpXG4gICAgLnJlcGxhY2UoJyknLCAnJylcbiAgICAucmVwbGFjZSgnKCcsICcnKVxuICApXG5cbn1cblxuLyoqXG4gICAqIERlc2NyaWJlIGZpZWxkcyBhc3NpZ25lIHRocm91Z2ggQERlZmF1bHRNb2RlbFdpdGhNYXBwaW5nIGRlY29yYXRvclxuICAgKiB3aXRob3V0IGZ1bmN0aW9uc1xuICAgKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXNjcmliZUJ5RGVmYXVsdE1vZGVsc0FuZE1hcHBpbmcodGFyZ2V0OiBGdW5jdGlvbik6IHN0cmluZ1tdIHtcbiAgbGV0IHJlcyA9IHt9XG4gIGlmICh0YXJnZXQpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKHRhcmdldFtTWU1CT0wuREVGQVVMVF9NT0RFTF0pIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIE9iamVjdC5rZXlzKHRhcmdldFtTWU1CT0wuREVGQVVMVF9NT0RFTF0pXG4gICAgICAgIC5maWx0ZXIoa2V5ID0+IHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgcmV0dXJuICFfLmlzRnVuY3Rpb24odGFyZ2V0W1NZTUJPTC5ERUZBVUxUX01PREVMXVtrZXldKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgcmV0dXJuIHJlc1trZXldID0gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBsZXQgbWFwcGluZyA9IHRhcmdldFtTWU1CT0wuTU9ERUxTX01BUFBJTkddO1xuICAgIGlmIChfLmlzQXJyYXkobWFwcGluZykpIHtcbiAgICAgIG1hcHBpbmcuZm9yRWFjaChtID0+IHtcbiAgICAgICAgT2JqZWN0LmtleXMobSlcbiAgICAgICAgICAuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgcmVzW2tleV0gPSBudWxsO1xuICAgICAgICAgIH0pO1xuICAgICAgfSlcbiAgICB9IGVsc2UgaWYgKG1hcHBpbmcpIHtcblxuICAgICAgT2JqZWN0LmtleXMobWFwcGluZylcbiAgICAgICAgLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgcmVzW2tleV0gPSBudWxsO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBsZXQgcHJvcE5hbWVzID0gT2JqZWN0LmtleXMocmVzKS5maWx0ZXIoZiA9PiAhIWYpO1xuICBwcm9wTmFtZXMgPSAoIXByb3BOYW1lcy5pbmNsdWRlcygnaWQnKSA/IFsnaWQnXSA6IFtdKS5jb25jYXQocHJvcE5hbWVzKTtcbiAgcmV0dXJuIHByb3BOYW1lcztcbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXR5cGVzY3JpcHQtY2xhc3MtaGVscGVycyBsaWIvZGVzY3JpYmUtY2xhc3MudHMiXX0=
@@ -8,7 +8,7 @@ import { CLASS } from 'typescript-class-helpers/browser';
8
8
  class ExampleClass {
9
9
  ...
10
10
  }
11
- `;
12
- ;
13
- ({}); // @--end-of-file-for-module=typescript-class-helpers lib/errors-messages.ts
11
+ `;
12
+ ;
13
+ ({}); // @--end-of-file-for-module=typescript-class-helpers lib/errors-messages.ts
14
14
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLW1lc3NhZ2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS90eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvcHJvamVjdHMvdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3NyYy9saWIvZXJyb3JzLW1lc3NhZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFHOzs7Ozs7Ozs7O0NBVWhELENBQUM7QUFFRCxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDRFQUE0RSIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IGNvbnN0IEVSUk9SX01TR19DTEFTU19XSVRIT1VUX0RFQ09SQVRPUiA9IGBbdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzXVtnZXRDbGFzc05hbWUoLi4uKV0oUFJPRFVDVElPTiBNT0RFIEVSUk9SKVxuUGxlYXNlIHVzZSBkZWNvYXJ0b3IgQENMQVNTTkFNRSBmb3IgZWFjaCBlbnRpdHkgb3IgY29udHJvbGxlclxuVGhpcyBpcyBwcmV2ZW50aW5nIGNsYXNzIG5hbWUgcHJvYmxlbSBpbiBtaW5pZmllZCBjb2RlLlxuXG5pbXBvcnQgeyBDTEFTUyB9IGZyb20gJ3R5cGVzY3JpcHQtY2xhc3MtaGVscGVycy9icm93c2VyJztcblxuQENMQVNTLk5BTUUoJ0V4YW1wbGVDbGFzcycpXG5jbGFzcyBFeGFtcGxlQ2xhc3Mge1xuICAuLi5cbn1cbmA7XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMgbGliL2Vycm9ycy1tZXNzYWdlcy50cyJdfQ==