typescript-class-helpers 1.0.40 → 1.0.44

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 (137) hide show
  1. package/browser/README.md +24 -0
  2. package/browser/esm2020/lib/classname.mjs +164 -0
  3. package/browser/esm2020/lib/describe-class.mjs +64 -0
  4. package/browser/esm2020/lib/index.mjs +141 -0
  5. package/browser/esm2020/lib/models.mjs +23 -0
  6. package/browser/esm2020/lib/set-class-name.mjs +96 -0
  7. package/browser/esm2020/lib/storage.mjs +18 -0
  8. package/browser/esm2020/lib/symbols.mjs +11 -0
  9. package/browser/esm2020/public-api.mjs +2 -0
  10. package/browser/esm2020/typescript-class-helpers.mjs +5 -0
  11. package/browser/fesm2015/typescript-class-helpers.mjs +503 -0
  12. package/browser/fesm2015/typescript-class-helpers.mjs.map +1 -0
  13. package/browser/fesm2020/typescript-class-helpers.mjs +503 -0
  14. package/browser/fesm2020/typescript-class-helpers.mjs.map +1 -0
  15. package/{classname.d.ts → browser/lib/classname.d.ts} +3 -3
  16. package/browser/{describe-class.d.ts → lib/describe-class.d.ts} +0 -0
  17. package/{client → browser/lib}/index.d.ts +2 -2
  18. package/browser/{models.d.ts → lib/models.d.ts} +0 -0
  19. package/{client → browser/lib}/set-class-name.d.ts +1 -1
  20. package/browser/{storage.d.ts → lib/storage.d.ts} +0 -0
  21. package/browser/{symbols.d.ts → lib/symbols.d.ts} +0 -0
  22. package/browser/package.json +31 -0
  23. package/browser/public-api.d.ts +1 -0
  24. package/browser/typescript-class-helpers.d.ts +5 -0
  25. package/client/README.md +24 -0
  26. package/client/esm2020/lib/classname.mjs +164 -0
  27. package/client/esm2020/lib/describe-class.mjs +64 -0
  28. package/client/esm2020/lib/index.mjs +141 -0
  29. package/client/esm2020/lib/models.mjs +23 -0
  30. package/client/esm2020/lib/set-class-name.mjs +96 -0
  31. package/client/esm2020/lib/storage.mjs +18 -0
  32. package/client/esm2020/lib/symbols.mjs +11 -0
  33. package/client/esm2020/public-api.mjs +2 -0
  34. package/client/esm2020/typescript-class-helpers.mjs +5 -0
  35. package/client/fesm2015/typescript-class-helpers.mjs +503 -0
  36. package/client/fesm2015/typescript-class-helpers.mjs.map +1 -0
  37. package/client/fesm2020/typescript-class-helpers.mjs +503 -0
  38. package/client/fesm2020/typescript-class-helpers.mjs.map +1 -0
  39. package/client/{classname.d.ts → lib/classname.d.ts} +3 -3
  40. package/client/{describe-class.d.ts → lib/describe-class.d.ts} +0 -0
  41. package/client/lib/index.d.ts +32 -0
  42. package/client/{models.d.ts → lib/models.d.ts} +0 -0
  43. package/{set-class-name.d.ts → client/lib/set-class-name.d.ts} +1 -1
  44. package/client/{storage.d.ts → lib/storage.d.ts} +0 -0
  45. package/client/{symbols.d.ts → lib/symbols.d.ts} +0 -0
  46. package/client/package.json +25 -24
  47. package/client/public-api.d.ts +1 -0
  48. package/client/typescript-class-helpers.d.ts +5 -0
  49. package/index.d.ts +1 -32
  50. package/index.js +3 -148
  51. package/index.js.map +1 -1
  52. package/{browser → lib}/classname.d.ts +0 -0
  53. package/{classname.js → lib/classname.js} +18 -5
  54. package/lib/classname.js.map +1 -0
  55. package/{describe-class.d.ts → lib/describe-class.d.ts} +0 -0
  56. package/{describe-class.js → lib/describe-class.js} +17 -3
  57. package/lib/describe-class.js.map +1 -0
  58. package/{helpers-messages.d.ts → lib/helpers-messages.d.ts} +0 -0
  59. package/{helpers-messages.js → lib/helpers-messages.js} +2 -1
  60. package/lib/helpers-messages.js.map +1 -0
  61. package/{browser → lib}/index.d.ts +0 -0
  62. package/lib/index.js +154 -0
  63. package/lib/index.js.map +1 -0
  64. package/{models.d.ts → lib/models.d.ts} +0 -0
  65. package/{models.js → lib/models.js} +3 -1
  66. package/lib/models.js.map +1 -0
  67. package/{browser → lib}/set-class-name.d.ts +0 -0
  68. package/{set-class-name.js → lib/set-class-name.js} +8 -2
  69. package/lib/set-class-name.js.map +1 -0
  70. package/{storage.d.ts → lib/storage.d.ts} +0 -0
  71. package/{storage.js → lib/storage.js} +2 -1
  72. package/lib/storage.js.map +1 -0
  73. package/{symbols.d.ts → lib/symbols.d.ts} +0 -0
  74. package/{symbols.js → lib/symbols.js} +2 -1
  75. package/lib/symbols.js.map +1 -0
  76. package/package.json +4 -4
  77. package/package.json_devDependencies.json +25 -25
  78. package/package.json_tnp.json +2 -1
  79. package/package.json_tnp.json5 +36 -0
  80. package/tmp-environment.json +69 -106
  81. package/browser/classname.js +0 -152
  82. package/browser/classname.js.map +0 -1
  83. package/browser/describe-class.js +0 -51
  84. package/browser/describe-class.js.map +0 -1
  85. package/browser/es5/classname.js +0 -162
  86. package/browser/es5/describe-class.js +0 -66
  87. package/browser/es5/helpers-messages.js +0 -42
  88. package/browser/es5/index.js +0 -211
  89. package/browser/es5/models.js +0 -36
  90. package/browser/es5/set-class-name.js +0 -112
  91. package/browser/es5/storage.js +0 -27
  92. package/browser/es5/symbols.js +0 -16
  93. package/browser/helpers-messages.d.ts +0 -18
  94. package/browser/helpers-messages.js +0 -26
  95. package/browser/helpers-messages.js.map +0 -1
  96. package/browser/index.js +0 -139
  97. package/browser/index.js.map +0 -1
  98. package/browser/models.js +0 -22
  99. package/browser/models.js.map +0 -1
  100. package/browser/set-class-name.js +0 -91
  101. package/browser/set-class-name.js.map +0 -1
  102. package/browser/storage.js +0 -18
  103. package/browser/storage.js.map +0 -1
  104. package/browser/symbols.js +0 -11
  105. package/browser/symbols.js.map +0 -1
  106. package/classname.js.map +0 -1
  107. package/client/classname.js +0 -152
  108. package/client/classname.js.map +0 -1
  109. package/client/describe-class.js +0 -51
  110. package/client/describe-class.js.map +0 -1
  111. package/client/es5/classname.js +0 -162
  112. package/client/es5/describe-class.js +0 -66
  113. package/client/es5/helpers-messages.js +0 -42
  114. package/client/es5/index.js +0 -211
  115. package/client/es5/models.js +0 -36
  116. package/client/es5/set-class-name.js +0 -112
  117. package/client/es5/storage.js +0 -27
  118. package/client/es5/symbols.js +0 -16
  119. package/client/helpers-messages.d.ts +0 -18
  120. package/client/helpers-messages.js +0 -26
  121. package/client/helpers-messages.js.map +0 -1
  122. package/client/index.js +0 -139
  123. package/client/index.js.map +0 -1
  124. package/client/models.js +0 -22
  125. package/client/models.js.map +0 -1
  126. package/client/set-class-name.js +0 -91
  127. package/client/set-class-name.js.map +0 -1
  128. package/client/storage.js +0 -18
  129. package/client/storage.js.map +0 -1
  130. package/client/symbols.js +0 -11
  131. package/client/symbols.js.map +0 -1
  132. package/describe-class.js.map +0 -1
  133. package/helpers-messages.js.map +0 -1
  134. package/models.js.map +0 -1
  135. package/set-class-name.js.map +0 -1
  136. package/storage.js.map +0 -1
  137. package/symbols.js.map +0 -1
@@ -0,0 +1,24 @@
1
+ # MyLib
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
8
+ > Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
9
+
10
+ ## Build
11
+
12
+ Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+
14
+ ## Publishing
15
+
16
+ After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
17
+
18
+ ## Running unit tests
19
+
20
+ Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
+
22
+ ## Further help
23
+
24
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
@@ -0,0 +1,164 @@
1
+ import { _ } from 'tnp-core/browser';
2
+ import { Models } from './models';
3
+ import { SYMBOL } from './symbols';
4
+ import { Helpers } from './index';
5
+ import { Helpers as ConfigHelpers } from 'tnp-core/browser';
6
+ import { getStorage } from './storage';
7
+ import { setClassName } from './set-class-name';
8
+ function getClasses() {
9
+ const s = getStorage();
10
+ return s[SYMBOL.CLASSES];
11
+ }
12
+ export var CLASSNAME;
13
+ (function (CLASSNAME_1) {
14
+ function getClassConfig(target, configs = []) {
15
+ if (!_.isFunction(target)) {
16
+ throw `[typescript-class-helper][getClassConfig] Cannot get class config from: ${target}`;
17
+ }
18
+ const meta = SYMBOL.CLASS_META_CONFIG;
19
+ let config;
20
+ // @ts-ignore
21
+ if (!target[meta]) {
22
+ config = new Models.ClassConfig();
23
+ config.classReference = target;
24
+ }
25
+ else {
26
+ // @ts-ignore
27
+ config = target[meta];
28
+ var parentClass = Object.getPrototypeOf(target);
29
+ if (config.classReference === parentClass) {
30
+ const childConfig = new Models.ClassConfig();
31
+ childConfig.vParent = config;
32
+ childConfig.classReference = target;
33
+ // @ts-ignore
34
+ config.vChildren.push(childConfig);
35
+ config = childConfig;
36
+ }
37
+ }
38
+ // @ts-ignore
39
+ target[meta] = config;
40
+ configs.push(config);
41
+ return (_.isFunction(parentClass) && parentClass.name !== '') ? getClassConfig(parentClass, configs) : configs;
42
+ }
43
+ CLASSNAME_1.getClassConfig = getClassConfig;
44
+ /**
45
+ * PLEASE PROVIDE NAME AS TYPED STRING, NOT VARIABLE
46
+ * Decorator requred for production mode
47
+ * @param name Name of class
48
+ */
49
+ function CLASSNAME(className, options) {
50
+ return function (target) {
51
+ // console.log(`CLASSNAME Inited ${className}`)
52
+ return setClassName(target, className, options);
53
+ };
54
+ }
55
+ CLASSNAME_1.CLASSNAME = CLASSNAME;
56
+ function getClassName(target, production = false) {
57
+ if (_.isString(target)) {
58
+ console.trace(target);
59
+ console.warn(`[typescript-class-helpers][getClassName] target is string: '${target}', produciton: ${production}`);
60
+ return target;
61
+ }
62
+ if (!_.isFunction(target)) {
63
+ console.trace(target);
64
+ console.error(`[typescript-class-helpers][getClassName] target is not a class`);
65
+ return void 0;
66
+ }
67
+ // @ts-ignore
68
+ if (ConfigHelpers.isBrowser && _.isString(target[SYMBOL.CLASSNAMEKEYBROWSER])) {
69
+ // @ts-ignore
70
+ return target[SYMBOL.CLASSNAMEKEYBROWSER];
71
+ }
72
+ // @ts-ignore
73
+ if (target[SYMBOL.CLASSNAMEKEY]) {
74
+ // @ts-ignore
75
+ return target[SYMBOL.CLASSNAMEKEY];
76
+ }
77
+ if (production) {
78
+ console.error(`[typescript-class-helpers][getClassName(...)](PRODUCTION MODE ERROR)
79
+ Please use decoartor @CLASSNAME for each entity or controller
80
+ This is preventing class name problem in minified code.
81
+
82
+ import { CLASS } from 'typescript-class-helpers';
83
+
84
+ @CLASS.NAME('ExampleClass')
85
+ class ExampleClass {
86
+ ...
87
+ }
88
+ `, target);
89
+ }
90
+ return target.name;
91
+ }
92
+ CLASSNAME_1.getClassName = getClassName;
93
+ // @ts-ignore
94
+ function getObjectIndexPropertyValue(obj) {
95
+ const className = Helpers.getNameFromObject(obj);
96
+ // console.log('className',className)
97
+ let c = getClasses().find(c => c.className === className);
98
+ // console.log('c',c)
99
+ if (c) {
100
+ return c.uniqueKey;
101
+ }
102
+ }
103
+ CLASSNAME_1.getObjectIndexPropertyValue = getObjectIndexPropertyValue;
104
+ // @ts-ignore
105
+ function getClassFamilyByClassName(className) {
106
+ let c = getClasses().find(c => c.className === className);
107
+ // console.log('getClasses()', getClasses())
108
+ if (c) {
109
+ return c.classFamily;
110
+ }
111
+ }
112
+ CLASSNAME_1.getClassFamilyByClassName = getClassFamilyByClassName;
113
+ // @ts-ignore
114
+ function getObjectClassFamily(obj) {
115
+ const className = Helpers.getNameFromObject(obj);
116
+ // console.log('className',className)
117
+ let c = getClasses().find(c => c.className === className);
118
+ // console.log('c',c)
119
+ if (c) {
120
+ return c.classFamily;
121
+ }
122
+ }
123
+ CLASSNAME_1.getObjectClassFamily = getObjectClassFamily;
124
+ function getObjectIndexValue(obj) {
125
+ const className = Helpers.getNameFromObject(obj);
126
+ // console.log('className',className)
127
+ let c = getClasses().find(c => c.className === className);
128
+ // console.log('c',c)
129
+ if (c && _.isString(c.uniqueKey)) {
130
+ return obj[c.uniqueKey];
131
+ }
132
+ }
133
+ CLASSNAME_1.getObjectIndexValue = getObjectIndexValue;
134
+ function getClassBy(className) {
135
+ let res;
136
+ if (Array.isArray(className)) {
137
+ if (className.length !== 1) {
138
+ throw `Mapping error... please use proper class names:
139
+ {
140
+ propertyObject: 'MyClassName',
141
+ propertyWithArray: ['MyClassName']
142
+ }
143
+
144
+ `;
145
+ }
146
+ className = className[0];
147
+ }
148
+ if (typeof className === 'function') { // TODO QUICK_FIX
149
+ res = className;
150
+ }
151
+ if (className === 'Date') {
152
+ res = Date;
153
+ }
154
+ let c = getClasses().find(c => c.className === className);
155
+ if (c) {
156
+ res = c.target;
157
+ }
158
+ // console.log(`getClassBy "${className} return \n\n ${res} \n\n`)
159
+ // @ts-ignore
160
+ return res;
161
+ }
162
+ CLASSNAME_1.getClassBy = getClassBy;
163
+ })(CLASSNAME || (CLASSNAME = {}));
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3NuYW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS90eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvcHJvamVjdHMvdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3NyYy9saWIvY2xhc3NuYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLEVBQUUsT0FBTyxJQUFJLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhELFNBQVMsVUFBVTtJQUNqQixNQUFNLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQztJQUN2QixPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFRLENBQUM7QUFDbEMsQ0FBQztBQUVELE1BQU0sS0FBVyxTQUFTLENBZ0t6QjtBQWhLRCxXQUFpQixXQUFTO0lBRXhCLFNBQ0UsY0FBYyxDQUFDLE1BQWdCLEVBQUUsVUFBZ0MsRUFBRTtRQUNuRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN6QixNQUFNLDJFQUEyRSxNQUFNLEVBQUUsQ0FBQTtTQUMxRjtRQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztRQUN0QyxJQUFJLE1BQTBCLENBQUM7UUFFL0IsYUFBYTtRQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVB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QWhLZ0IsU0FBUyxLQUFULFNBQVMsUUFnS3pCIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmltcG9ydCB7IF8gfSBmcm9tICd0bnAtY29yZS9icm93c2VyJztcbmltcG9ydCB7IE1vZGVscyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IFNZTUJPTCB9IGZyb20gJy4vc3ltYm9scyc7XG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAnLi9pbmRleCc7XG5pbXBvcnQgeyBIZWxwZXJzIGFzIENvbmZpZ0hlbHBlcnMgfSBmcm9tICd0bnAtY29yZS9icm93c2VyJztcbmltcG9ydCB7IGdldFN0b3JhZ2UgfSBmcm9tICcuL3N0b3JhZ2UnO1xuaW1wb3J0IHsgc2V0Q2xhc3NOYW1lIH0gZnJvbSAnLi9zZXQtY2xhc3MtbmFtZSc7XG5cbmZ1bmN0aW9uIGdldENsYXNzZXMoKTogTW9kZWxzLkNsYXNzTWV0YVtdIHtcbiAgY29uc3QgcyA9IGdldFN0b3JhZ2UoKTtcbiAgcmV0dXJuIHNbU1lNQk9MLkNMQVNTRVNdIGFzIGFueTtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBDTEFTU05BTUUge1xuXG4gIGV4cG9ydCBmdW5jdGlvblxuICAgIGdldENsYXNzQ29uZmlnKHRhcmdldDogRnVuY3Rpb24sIGNvbmZpZ3M6IE1vZGVscy5DbGFzc0NvbmZpZ1tdID0gW10pOiBNb2RlbHMuQ2xhc3NDb25maWdbXSB7XG4gICAgaWYgKCFfLmlzRnVuY3Rpb24odGFyZ2V0KSkge1xuICAgICAgdGhyb3cgYFt0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcl1bZ2V0Q2xhc3NDb25maWddIENhbm5vdCBnZXQgY2xhc3MgY29uZmlnIGZyb206ICR7dGFyZ2V0fWBcbiAgICB9XG5cbiAgICBjb25zdCBtZXRhID0gU1lNQk9MLkNMQVNTX01FVEFfQ09ORklHO1xuICAgIGxldCBjb25maWc6IE1vZGVscy5DbGFzc0NvbmZpZztcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoIXRhcmdldFttZXRhXSkge1xuICAgICAgY29uZmlnID0gbmV3IE1vZGVscy5DbGFzc0NvbmZpZygpO1xuICAgICAgY29uZmlnLmNsYXNzUmVmZXJlbmNlID0gdGFyZ2V0O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25maWcgPSB0YXJnZXRbbWV0YV07XG4gICAgICB2YXIgcGFyZW50Q2xhc3MgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGFyZ2V0KVxuICAgICAgaWYgKGNvbmZpZy5jbGFzc1JlZmVyZW5jZSA9PT0gcGFyZW50Q2xhc3MpIHtcbiAgICAgICAgY29uc3QgY2hpbGRDb25maWcgPSBuZXcgTW9kZWxzLkNsYXNzQ29uZmlnKCk7XG4gICAgICAgIGNoaWxkQ29uZmlnLnZQYXJlbnQgPSBjb25maWc7XG4gICAgICAgIGNoaWxkQ29uZmlnLmNsYXNzUmVmZXJlbmNlID0gdGFyZ2V0O1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGNvbmZpZy52Q2hpbGRyZW4ucHVzaChjaGlsZENvbmZpZylcbiAgICAgICAgY29uZmlnID0gY2hpbGRDb25maWc7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0YXJnZXRbbWV0YV0gPSBjb25maWc7XG4gICAgY29uZmlncy5wdXNoKGNvbmZpZyk7XG4gICAgcmV0dXJuIChfLmlzRnVuY3Rpb24ocGFyZW50Q2xhc3MpICYmIHBhcmVudENsYXNzLm5hbWUgIT09ICcnKSA/IGdldENsYXNzQ29uZmlnKHBhcmVudENsYXNzLCBjb25maWdzKSA6IGNvbmZpZ3M7XG4gIH1cblxuXG5cblxuICAvKipcbiAgICogUExFQVNFIFBST1ZJREUgTkFNRSBBUyBUWVBFRCBTVFJJTkcsIE5PVCBWQVJJQUJMRVxuICAgKiBEZWNvcmF0b3IgcmVxdXJlZCBmb3IgcHJvZHVjdGlvbiBtb2RlXG4gICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgY2xhc3NcbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBDTEFTU05BTUUoY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IE1vZGVscy5DTEFTU05BTUVPcHRpb25zKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IEZ1bmN0aW9uKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhgQ0xBU1NOQU1FIEluaXRlZCAke2NsYXNzTmFtZX1gKVxuICAgICAgcmV0dXJuIHNldENsYXNzTmFtZSh0YXJnZXQsIGNsYXNzTmFtZSwgb3B0aW9ucyk7XG4gICAgfSBhcyBhbnk7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0Q2xhc3NOYW1lKHRhcmdldDogRnVuY3Rpb24sIHByb2R1Y3Rpb24gPSBmYWxzZSkge1xuICAgIGlmIChfLmlzU3RyaW5nKHRhcmdldCkpIHtcbiAgICAgIGNvbnNvbGUudHJhY2UodGFyZ2V0KTtcbiAgICAgIGNvbnNvbGUud2FybihgW3R5cGVzY3JpcHQtY2xhc3MtaGVscGVyc11bZ2V0Q2xhc3NOYW1lXSB0YXJnZXQgaXMgc3RyaW5nOiAnJHt0YXJnZXR9JywgcHJvZHVjaXRvbjogJHtwcm9kdWN0aW9ufWApXG4gICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH1cbiAgICBpZiAoIV8uaXNGdW5jdGlvbih0YXJnZXQpKSB7XG4gICAgICBjb25zb2xlLnRyYWNlKHRhcmdldCk7XG4gICAgICBjb25zb2xlLmVycm9yKGBbdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzXVtnZXRDbGFzc05hbWVdIHRhcmdldCBpcyBub3QgYSBjbGFzc2ApXG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoQ29uZmlnSGVscGVycy5pc0Jyb3dzZXIgJiYgXy5pc1N0cmluZyh0YXJnZXRbU1lNQk9MLkNMQVNTTkFNRUtFWUJST1dTRVJdKSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIHRhcmdldFtTWU1CT0wuQ0xBU1NOQU1FS0VZQlJPV1NFUl07XG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAodGFyZ2V0W1NZTUJPTC5DTEFTU05BTUVLRVldKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gdGFyZ2V0W1NZTUJPTC5DTEFTU05BTUVLRVldO1xuICAgIH1cbiAgICBpZiAocHJvZHVjdGlvbikge1xuICAgICAgY29uc29sZS5lcnJvcihgW3R5cGVzY3JpcHQtY2xhc3MtaGVscGVyc11bZ2V0Q2xhc3NOYW1lKC4uLildKFBST0RVQ1RJT04gTU9ERSBFUlJPUilcbiAgICAgICAgICAgICAgUGxlYXNlIHVzZSBkZWNvYXJ0b3IgQENMQVNTTkFNRSBmb3IgZWFjaCBlbnRpdHkgb3IgY29udHJvbGxlclxuICAgICAgICAgICAgICBUaGlzIGlzIHByZXZlbnRpbmcgY2xhc3MgbmFtZSBwcm9ibGVtIGluIG1pbmlmaWVkIGNvZGUuXG5cbiAgICAgICAgICAgICAgaW1wb3J0IHsgQ0xBU1MgfSBmcm9tICd0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMnO1xuXG4gICAgICAgICAgICAgIEBDTEFTUy5OQU1FKCdFeGFtcGxlQ2xhc3MnKVxuICAgICAgICAgICAgICBjbGFzcyBFeGFtcGxlQ2xhc3Mge1xuICAgICAgICAgICAgICAgIC4uLlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGAsIHRhcmdldClcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldC5uYW1lO1xuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBleHBvcnQgZnVuY3Rpb24gZ2V0T2JqZWN0SW5kZXhQcm9wZXJ0eVZhbHVlKG9iajogYW55KSB7XG4gICAgY29uc3QgY2xhc3NOYW1lID0gSGVscGVycy5nZXROYW1lRnJvbU9iamVjdChvYmopO1xuICAgIC8vIGNvbnNvbGUubG9nKCdjbGFzc05hbWUnLGNsYXNzTmFtZSlcbiAgICBsZXQgYyA9IGdldENsYXNzZXMoKS5maW5kKGMgPT4gYy5jbGFzc05hbWUgPT09IGNsYXNzTmFtZSk7XG4gICAgLy8gY29uc29sZS5sb2coJ2MnLGMpXG4gICAgaWYgKGMpIHtcbiAgICAgIHJldHVybiBjLnVuaXF1ZUtleTtcbiAgICB9XG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRDbGFzc0ZhbWlseUJ5Q2xhc3NOYW1lKGNsYXNzTmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IGMgPSBnZXRDbGFzc2VzKCkuZmluZChjID0+IGMuY2xhc3NOYW1lID09PSBjbGFzc05hbWUpO1xuICAgIC8vIGNvbnNvbGUubG9nKCdnZXRDbGFzc2VzKCknLCBnZXRDbGFzc2VzKCkpXG4gICAgaWYgKGMpIHtcbiAgICAgIHJldHVybiBjLmNsYXNzRmFtaWx5O1xuICAgIH1cbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgZXhwb3J0IGZ1bmN0aW9uIGdldE9iamVjdENsYXNzRmFtaWx5KG9iajogYW55KSB7XG4gICAgY29uc3QgY2xhc3NOYW1lID0gSGVscGVycy5nZXROYW1lRnJvbU9iamVjdChvYmopO1xuICAgIC8vIGNvbnNvbGUubG9nKCdjbGFzc05hbWUnLGNsYXNzTmFtZSlcbiAgICBsZXQgYyA9IGdldENsYXNzZXMoKS5maW5kKGMgPT4gYy5jbGFzc05hbWUgPT09IGNsYXNzTmFtZSk7XG4gICAgLy8gY29uc29sZS5sb2coJ2MnLGMpXG4gICAgaWYgKGMpIHtcbiAgICAgIHJldHVybiBjLmNsYXNzRmFtaWx5O1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRPYmplY3RJbmRleFZhbHVlKG9iajogYW55KSB7XG4gICAgY29uc3QgY2xhc3NOYW1lID0gSGVscGVycy5nZXROYW1lRnJvbU9iamVjdChvYmopO1xuICAgIC8vIGNvbnNvbGUubG9nKCdjbGFzc05hbWUnLGNsYXNzTmFtZSlcbiAgICBsZXQgYyA9IGdldENsYXNzZXMoKS5maW5kKGMgPT4gYy5jbGFzc05hbWUgPT09IGNsYXNzTmFtZSk7XG4gICAgLy8gY29uc29sZS5sb2coJ2MnLGMpXG4gICAgaWYgKGMgJiYgXy5pc1N0cmluZyhjLnVuaXF1ZUtleSkpIHtcbiAgICAgIHJldHVybiBvYmpbYy51bmlxdWVLZXldO1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRDbGFzc0J5KGNsYXNzTmFtZTogc3RyaW5nIHwgRnVuY3Rpb24pOiBGdW5jdGlvbiB7XG4gICAgbGV0IHJlcztcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjbGFzc05hbWUpKSB7XG4gICAgICBpZiAoY2xhc3NOYW1lLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICB0aHJvdyBgTWFwcGluZyBlcnJvci4uLiBwbGVhc2UgdXNlIHByb3BlciBjbGFzcyBuYW1lczpcbiAge1xuICAgIHByb3BlcnR5T2JqZWN0OiAnTXlDbGFzc05hbWUnLFxuICAgIHByb3BlcnR5V2l0aEFycmF5OiBbJ015Q2xhc3NOYW1lJ11cbiAgfVxuXG4gICAgICAgIGBcbiAgICAgIH1cbiAgICAgIGNsYXNzTmFtZSA9IGNsYXNzTmFtZVswXVxuICAgIH1cbiAgICBpZiAodHlwZW9mIGNsYXNzTmFtZSA9PT0gJ2Z1bmN0aW9uJykgeyAvLyBUT0RPIFFVSUNLX0ZJWFxuICAgICAgcmVzID0gY2xhc3NOYW1lO1xuICAgIH1cbiAgICBpZiAoY2xhc3NOYW1lID09PSAnRGF0ZScpIHtcbiAgICAgIHJlcyA9IERhdGU7XG4gICAgfVxuXG4gICAgbGV0IGMgPSBnZXRDbGFzc2VzKCkuZmluZChjID0+IGMuY2xhc3NOYW1lID09PSBjbGFzc05hbWUpO1xuXG4gICAgaWYgKGMpIHtcbiAgICAgIHJlcyA9IGMudGFyZ2V0O1xuICAgIH1cbiAgICAvLyBjb25zb2xlLmxvZyhgZ2V0Q2xhc3NCeSBcIiR7Y2xhc3NOYW1lfSByZXR1cm4gXFxuXFxuICR7cmVzfSBcXG5cXG5gKVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,64 @@
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
+ result = result.concat(target.toString().match(FRegEx) || []);
19
+ return result.map(prop => prop.replace('this.', ''));
20
+ }
21
+ /**
22
+ * Describe fields assigne through @DefaultModelWithMapping decorator
23
+ * without functions
24
+ */
25
+ export function describeByDefaultModelsAndMapping(target) {
26
+ let res = {};
27
+ if (target) {
28
+ // @ts-ignore
29
+ if (target[SYMBOL.DEFAULT_MODEL]) {
30
+ // @ts-ignore
31
+ Object.keys(target[SYMBOL.DEFAULT_MODEL])
32
+ .filter(key => {
33
+ // @ts-ignore
34
+ return !_.isFunction(target[SYMBOL.DEFAULT_MODEL][key]);
35
+ })
36
+ .forEach(key => {
37
+ // @ts-ignore
38
+ return res[key] = null;
39
+ });
40
+ }
41
+ // @ts-ignore
42
+ let mapping = target[SYMBOL.MODELS_MAPPING];
43
+ if (_.isArray(mapping)) {
44
+ mapping.forEach(m => {
45
+ Object.keys(m)
46
+ .forEach(key => {
47
+ // @ts-ignore
48
+ res[key] = null;
49
+ });
50
+ });
51
+ }
52
+ else if (mapping) {
53
+ Object.keys(mapping)
54
+ .forEach(key => {
55
+ // @ts-ignore
56
+ res[key] = null;
57
+ });
58
+ }
59
+ }
60
+ let propNames = Object.keys(res).filter(f => !!f);
61
+ propNames = (!propNames.includes('id') ? ['id'] : []).concat(propNames);
62
+ return propNames;
63
+ }
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpYmUtY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItYnVuZGxlL3R5cGVzY3JpcHQtY2xhc3MtaGVscGVycy9wcm9qZWN0cy90eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvc3JjL2xpYi9kZXNjcmliZS1jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUluQzs7O0lBR0k7QUFDSixNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBQ25ELE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxNQUFnQixFQUFFLE1BQU0sR0FBRyxLQUFLO0lBQ3pFLGFBQWE7SUFDYixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDaEIsSUFBSSxNQUFNLEVBQUU7UUFDVixJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRCxJQUFJLEtBQUssRUFBRTtZQUNULGFBQWE7WUFDYixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDL0U7S0FDRjtJQUNELE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUQsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUV0RCxDQUFDO0FBRUQ7OztLQUdLO0FBQ0wsTUFBTSxVQUFVLGlDQUFpQyxDQUFDLE1BQWdCO0lBQ2hFLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQTtJQUNaLElBQUksTUFBTSxFQUFFO1FBQ1YsYUFBYTtRQUNiLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNoQyxhQUFhO1lBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2lCQUN0QyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ1osYUFBYTtnQkFDYixPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDMUQsQ0FBQyxDQUFDO2lCQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDYixhQUFhO2dCQUNiLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBQztTQUNOO1FBQ0QsYUFBYTtRQUNiLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3RCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xCLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3FCQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDYixhQUFhO29CQUNiLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ2xCLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUE7U0FDSDthQUFNLElBQUksT0FBTyxFQUFFO1lBRWxCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO2lCQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2IsYUFBYTtnQkFDYixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUFDO1NBQ047S0FDRjtJQUVELElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hFLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgU1lNQk9MIH0gZnJvbSAnLi9zeW1ib2xzJztcblxuXG5cbi8qKlxuICAqIEBERVBSRUNBVEVEXG4gICogRGVzY3JpYmUgZmllbGRzIGFzc2lnbmVkIGluIGNsYXNzXG4gICovXG5jb25zdCBGUmVnRXggPSBuZXcgUmVnRXhwKC8oPzp0aGlzXFwuKSguKz8oPz0gKSkvZyk7XG5leHBvcnQgZnVuY3Rpb24gZGVzY3JpYmVGcm9tQ2xhc3NTdHJpbmdpZnkodGFyZ2V0OiBGdW5jdGlvbiwgcGFyZW50ID0gZmFsc2UpOiBzdHJpbmdbXSB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAocGFyZW50KSB7XG4gICAgdmFyIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRhcmdldC5wcm90b3R5cGUpO1xuICAgIGlmIChwcm90bykge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChkZXNjcmliZUZyb21DbGFzc1N0cmluZ2lmeShwcm90by5jb25zdHJ1Y3RvciwgcGFyZW50KSk7XG4gICAgfVxuICB9XG4gIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQodGFyZ2V0LnRvU3RyaW5nKCkubWF0Y2goRlJlZ0V4KSB8fCBbXSk7XG4gIHJldHVybiByZXN1bHQubWFwKHByb3AgPT4gcHJvcC5yZXBsYWNlKCd0aGlzLicsICcnKSlcblxufVxuXG4vKipcbiAgICogRGVzY3JpYmUgZmllbGRzIGFzc2lnbmUgdGhyb3VnaCBARGVmYXVsdE1vZGVsV2l0aE1hcHBpbmcgZGVjb3JhdG9yXG4gICAqIHdpdGhvdXQgZnVuY3Rpb25zXG4gICAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2NyaWJlQnlEZWZhdWx0TW9kZWxzQW5kTWFwcGluZyh0YXJnZXQ6IEZ1bmN0aW9uKTogc3RyaW5nW10ge1xuICBsZXQgcmVzID0ge31cbiAgaWYgKHRhcmdldCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAodGFyZ2V0W1NZTUJPTC5ERUZBVUxUX01PREVMXSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgT2JqZWN0LmtleXModGFyZ2V0W1NZTUJPTC5ERUZBVUxUX01PREVMXSlcbiAgICAgICAgLmZpbHRlcihrZXkgPT4ge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICByZXR1cm4gIV8uaXNGdW5jdGlvbih0YXJnZXRbU1lNQk9MLkRFRkFVTFRfTU9ERUxdW2tleV0pO1xuICAgICAgICB9KVxuICAgICAgICAuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICByZXR1cm4gcmVzW2tleV0gPSBudWxsO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGxldCBtYXBwaW5nID0gdGFyZ2V0W1NZTUJPTC5NT0RFTFNfTUFQUElOR107XG4gICAgaWYgKF8uaXNBcnJheShtYXBwaW5nKSkge1xuICAgICAgbWFwcGluZy5mb3JFYWNoKG0gPT4ge1xuICAgICAgICBPYmplY3Qua2V5cyhtKVxuICAgICAgICAgIC5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByZXNba2V5XSA9IG51bGw7XG4gICAgICAgICAgfSk7XG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAobWFwcGluZykge1xuXG4gICAgICBPYmplY3Qua2V5cyhtYXBwaW5nKVxuICAgICAgICAuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICByZXNba2V5XSA9IG51bGw7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGxldCBwcm9wTmFtZXMgPSBPYmplY3Qua2V5cyhyZXMpLmZpbHRlcihmID0+ICEhZik7XG4gIHByb3BOYW1lcyA9ICghcHJvcE5hbWVzLmluY2x1ZGVzKCdpZCcpID8gWydpZCddIDogW10pLmNvbmNhdChwcm9wTmFtZXMpO1xuICByZXR1cm4gcHJvcE5hbWVzO1xufVxuIl19
@@ -0,0 +1,141 @@
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 Helpers {
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 getConfig(target) {
29
+ return CLASSNAME.getClassConfig(target);
30
+ }
31
+ static describeProperites(target) {
32
+ const d1 = describeFromClassStringify(target);
33
+ const d2 = describeByDefaultModelsAndMapping(target);
34
+ let uniq = {};
35
+ // @ts-ignore
36
+ d1.concat(d2).forEach(p => uniq[p] = p);
37
+ return Object.keys(uniq)
38
+ .filter(d => !!d)
39
+ .filter(d => typeof target.prototype[d] !== 'function');
40
+ }
41
+ }
42
+ export const CLASS = {
43
+ NAME: CLASSNAME.CLASSNAME,
44
+ setName: setClassName,
45
+ getBy: Helpers.getBy,
46
+ getSingleton(target) {
47
+ if (typeof target !== 'function') {
48
+ console.error(`[typescript-class-helpers][setSingletonObj] Type of target is not a function`);
49
+ return;
50
+ }
51
+ const config = Helpers.getConfig(target)[0];
52
+ // console.log(`getSingleton for ${target.name}: `, config.singleton)
53
+ return config.singleton;
54
+ },
55
+ setSingletonObj(target, singletonObject) {
56
+ // console.log('SET SINGLETON', singletonObject)
57
+ if (typeof target !== 'function') {
58
+ console.error(`[typescript-class-helpers][setSingletonObj] Type of target is not a function`);
59
+ return;
60
+ }
61
+ if (Array.isArray(singletonObject)) {
62
+ console.error(`[typescript-class-helpers][setSingletonObj] Singleton instance cant be an array`);
63
+ return;
64
+ }
65
+ if (typeof singletonObject !== 'object') {
66
+ console.error(`[typescript-class-helpers][setSingletonObj] Singleton instance cant must be a object`);
67
+ return;
68
+ }
69
+ const className = CLASS.getName(target);
70
+ // console.log(`SINGLETON SET for TARGET ${className}`)
71
+ const config = Helpers.getConfig(target)[0];
72
+ if (config.singleton) {
73
+ console.warn(`[typescript-class-helpers] You are trying to set singleton of "${className}" second time with different object.`);
74
+ }
75
+ config.singleton = singletonObject;
76
+ },
77
+ getConfig: Helpers.getConfig,
78
+ getFromObject: Helpers.getFromObject,
79
+ getName: Helpers.getName,
80
+ getNameFromObject: Helpers.getNameFromObject,
81
+ describeProperites: Helpers.describeProperites,
82
+ OBJECT: (obj) => {
83
+ return {
84
+ get indexValue() {
85
+ return CLASSNAME.getObjectIndexValue(obj);
86
+ },
87
+ get indexProperty() {
88
+ return CLASSNAME.getObjectIndexPropertyValue(obj);
89
+ },
90
+ get isClassObject() {
91
+ if (!_.isObject(obj) || _.isArray(obj) || _.isRegExp(obj) ||
92
+ _.isBuffer(obj) || _.isArrayBuffer(obj)) {
93
+ return false;
94
+ }
95
+ if (_.isDate(obj)) {
96
+ return true;
97
+ }
98
+ const className = CLASS.getNameFromObject(obj);
99
+ return _.isString(className) && className !== 'Object';
100
+ },
101
+ isEqual: (anotherObj, compareDeep = false) => {
102
+ if (!CLASS.OBJECT(obj).isClassObject || !CLASS.OBJECT(anotherObj).isClassObject) {
103
+ return false;
104
+ }
105
+ if (obj === anotherObj) {
106
+ // console.log(`EQ v1: , v2: - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`, obj, anotherObj)
107
+ return true;
108
+ }
109
+ const v1 = CLASSNAME.getObjectIndexValue(obj);
110
+ const v2 = CLASSNAME.getObjectIndexValue(anotherObj);
111
+ const f1 = CLASSNAME.getObjectClassFamily(obj);
112
+ const f2 = CLASSNAME.getObjectClassFamily(anotherObj);
113
+ const isFamilyDiff = (!_.isString(f1) || !_.isString(f2) || (f1 !== f2));
114
+ // console.log(`DIFF FAMILY ${isFamilyDiff} v1: ${CLASSNAME.getObjectClassFamily(obj)}, v2: ${CLASSNAME.getObjectClassFamily(anotherObj)} - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`)
115
+ if (isFamilyDiff) {
116
+ // console.log(`DIFF v1: ${v1}, v2: ${v2} - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`)
117
+ return false;
118
+ }
119
+ if (!CLASS.OBJECT(obj).isClassObject || !CLASS.OBJECT(anotherObj).isClassObject) {
120
+ // console.log(`NOT CLASS v1: ${v1}, v2: ${v2} - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`)
121
+ return false;
122
+ }
123
+ // console.log(`v1: ${v1} ,class ${CLASS.getNameFromObject(obj)} ,prop: ${CLASS.OBJECT(obj).indexProperty}`)
124
+ // console.log(`v2: ${v2} ,class ${CLASS.getNameFromObject(anotherObj)} ,prop: ${CLASS.OBJECT(anotherObj).indexProperty}`)
125
+ // console.log(`v1: ${v1}, v2: ${v2} - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`)
126
+ // console.log('')
127
+ if ((_.isNumber(v1) && _.isNumber(v2)) || (_.isString(v1) && _.isString(v2))) {
128
+ const res = (v1 === v2);
129
+ // @ts-ignore
130
+ return res;
131
+ }
132
+ if (compareDeep) {
133
+ return _.isEqual(v1, v2);
134
+ }
135
+ return false;
136
+ }
137
+ };
138
+ }
139
+ };
140
+ export * from 'enum-values';
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItYnVuZGxlL3R5cGVzY3JpcHQtY2xhc3MtaGVscGVycy9wcm9qZWN0cy90eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvc3JjL2xpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNsQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRW5DLE1BQU0sT0FBTyxPQUFPO0lBRWxCLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBNEI7UUFDdkMsT0FBTyxTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYSxDQUFDLENBQVM7UUFDNUIsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbkMsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFO1lBQ2pCLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQztTQUN0QjtRQUNELE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDbEMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFnQixF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QUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO29CQUU1RSxNQUFNLEdBQUcsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztvQkFDeEIsYUFBYTtvQkFDYixPQUFPLEdBQUcsQ0FBQztpQkFDWjtnQkFDRCxJQUFJLFdBQVcsRUFBRTtvQkFDZixPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO2lCQUN6QjtnQkFDRCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7U0FDRixDQUFBO0lBQ0gsQ0FBQztDQUNGLENBQUE7QUFFRCxjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgeyBDTEFTU05BTUUgfSBmcm9tICcuL2NsYXNzbmFtZSc7XG5pbXBvcnQgeyBkZXNjcmliZUZyb21DbGFzc1N0cmluZ2lmeSwgZGVzY3JpYmVCeURlZmF1bHRNb2RlbHNBbmRNYXBwaW5nIH0gZnJvbSAnLi9kZXNjcmliZS1jbGFzcyc7XG5pbXBvcnQgeyBNb2RlbHMgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBzZXRDbGFzc05hbWUgfSBmcm9tICcuL3NldC1jbGFzcy1uYW1lJztcblxuZXhwb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuZXhwb3J0IHsgU1lNQk9MIH0gZnJvbSAnLi9zeW1ib2xzJztcblxuZXhwb3J0IGNsYXNzIEhlbHBlcnMge1xuXG4gIHN0YXRpYyBnZXRCeShjbGFzc05hbWU6IHN0cmluZyB8IEZ1bmN0aW9uKSB7XG4gICAgcmV0dXJuIENMQVNTTkFNRS5nZXRDbGFzc0J5KGNsYXNzTmFtZSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0RnJvbU9iamVjdChvOiBPYmplY3QpIHtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZChvKSB8fCBfLmlzTnVsbChvKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoby5jb25zdHJ1Y3Rvcikge1xuICAgICAgcmV0dXJuIG8uY29uc3RydWN0b3I7XG4gICAgfVxuICAgIGNvbnN0IHAgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YobylcbiAgICByZXR1cm4gcCAmJiBwLmNvbnN0cnVjdG9yO1xuICB9XG5cbiAgc3RhdGljIGdldE5hbWUodGFyZ2V0OiBGdW5jdGlvbiwgcHJvZHVjdGlvbiA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIENMQVNTTkFNRS5nZXRDbGFzc05hbWUodGFyZ2V0LCBwcm9kdWN0aW9uKSBhcyBzdHJpbmc7XG4gIH1cblxuICBzdGF0aWMgZ2V0TmFtZUZyb21PYmplY3QobzogT2JqZWN0KSB7XG4gICAgY29uc3QgZm5DTGFzcyA9IHRoaXMuZ2V0RnJvbU9iamVjdChvKTtcbiAgICByZXR1cm4gdGhpcy5nZXROYW1lKGZuQ0xhc3MpO1xuICB9XG5cbiAgc3RhdGljIGdldENvbmZpZyh0YXJnZXQ6IEZ1bmN0aW9uKTogTW9kZWxzLkNsYXNzQ29uZmlnW10ge1xuICAgIHJldHVybiBDTEFTU05BTUUuZ2V0Q2xhc3NDb25maWcodGFyZ2V0KVxuICB9XG5cbiAgc3RhdGljIGRlc2NyaWJlUHJvcGVyaXRlcyh0YXJnZXQ6IEZ1bmN0aW9uKSB7XG4gICAgY29uc3QgZDEgPSBkZXNjcmliZUZyb21DbGFzc1N0cmluZ2lmeSh0YXJnZXQpO1xuICAgIGNvbnN0IGQyID0gZGVzY3JpYmVCeURlZmF1bHRNb2RlbHNBbmRNYXBwaW5nKHRhcmdldCk7XG4gICAgbGV0IHVuaXEgPSB7fTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZDEuY29uY2F0KGQyKS5mb3JFYWNoKHAgPT4gdW5pcVtwXSA9IHApO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh1bmlxKVxuICAgICAgLmZpbHRlcihkID0+ICEhZClcbiAgICAgIC5maWx0ZXIoZCA9PiB0eXBlb2YgdGFyZ2V0LnByb3RvdHlwZVtkXSAhPT0gJ2Z1bmN0aW9uJylcbiAgfVxuXG59XG5cblxuZXhwb3J0IGNvbnN0IENMQVNTID0ge1xuICBOQU1FOiBDTEFTU05BTUUuQ0xBU1NOQU1FLFxuICBzZXROYW1lOiBzZXRDbGFzc05hbWUsXG4gIGdldEJ5OiBIZWxwZXJzLmdldEJ5LFxuICBnZXRTaW5nbGV0b248VCA9IGFueT4odGFyZ2V0OiBGdW5jdGlvbikge1xuICAgIGlmICh0eXBlb2YgdGFyZ2V0ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBbdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzXVtzZXRTaW5nbGV0b25PYmpdIFR5cGUgb2YgdGFyZ2V0IGlzIG5vdCBhIGZ1bmN0aW9uYClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBjb25maWcgPSBIZWxwZXJzLmdldENvbmZpZyh0YXJnZXQpWzBdXG4gICAgLy8gY29uc29sZS5sb2coYGdldFNpbmdsZXRvbiBmb3IgJHt0YXJnZXQubmFtZX06IGAsIGNvbmZpZy5zaW5nbGV0b24pXG5cbiAgICByZXR1cm4gY29uZmlnLnNpbmdsZXRvbiBhcyBUO1xuICB9LFxuICBzZXRTaW5nbGV0b25PYmoodGFyZ2V0OiBGdW5jdGlvbiwgc2luZ2xldG9uT2JqZWN0OiBhbnkpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnU0VUIFNJTkdMRVRPTicsIHNpbmdsZXRvbk9iamVjdClcbiAgICBpZiAodHlwZW9mIHRhcmdldCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc29sZS5lcnJvcihgW3R5cGVzY3JpcHQtY2xhc3MtaGVscGVyc11bc2V0U2luZ2xldG9uT2JqXSBUeXBlIG9mIHRhcmdldCBpcyBub3QgYSBmdW5jdGlvbmApXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShzaW5nbGV0b25PYmplY3QpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBbdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzXVtzZXRTaW5nbGV0b25PYmpdIFNpbmdsZXRvbiBpbnN0YW5jZSBjYW50IGJlIGFuIGFycmF5YClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygc2luZ2xldG9uT2JqZWN0ICE9PSAnb2JqZWN0Jykge1xuICAgICAgY29uc29sZS5lcnJvcihgW3R5cGVzY3JpcHQtY2xhc3MtaGVscGVyc11bc2V0U2luZ2xldG9uT2JqXSBTaW5nbGV0b24gaW5zdGFuY2UgY2FudCBtdXN0IGJlIGEgb2JqZWN0YClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGNsYXNzTmFtZSA9IENMQVNTLmdldE5hbWUodGFyZ2V0KTtcblxuXG4gICAgLy8gY29uc29sZS5sb2coYFNJTkdMRVRPTiBTRVQgZm9yIFRBUkdFVCAke2NsYXNzTmFtZX1gKVxuICAgIGNvbnN0IGNvbmZpZyA9IEhlbHBlcnMuZ2V0Q29uZmlnKHRhcmdldClbMF1cblxuICAgIGlmIChjb25maWcuc2luZ2xldG9uKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFt0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnNdIFlvdSBhcmUgdHJ5aW5nIHRvIHNldCBzaW5nbGV0b24gb2YgXCIke2NsYXNzTmFtZX1cIiBzZWNvbmQgdGltZSB3aXRoIGRpZmZlcmVudCBvYmplY3QuYClcbiAgICB9XG5cbiAgICBjb25maWcuc2luZ2xldG9uID0gc2luZ2xldG9uT2JqZWN0O1xuICB9LFxuICBnZXRDb25maWc6IEhlbHBlcnMuZ2V0Q29uZmlnLFxuICBnZXRGcm9tT2JqZWN0OiBIZWxwZXJzLmdldEZyb21PYmplY3QsXG4gIGdldE5hbWU6IEhlbHBlcnMuZ2V0TmFtZSxcbiAgZ2V0TmFtZUZyb21PYmplY3Q6IEhlbHBlcnMuZ2V0TmFtZUZyb21PYmplY3QsXG4gIGRlc2NyaWJlUHJvcGVyaXRlczogSGVscGVycy5kZXNjcmliZVByb3Blcml0ZXMsXG4gIE9CSkVDVDogKG9iajogYW55KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdldCBpbmRleFZhbHVlKCkge1xuICAgICAgICByZXR1cm4gQ0xBU1NOQU1FLmdldE9iamVjdEluZGV4VmFsdWUob2JqKTtcbiAgICAgIH0sXG4gICAgICBnZXQgaW5kZXhQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIENMQVNTTkFNRS5nZXRPYmplY3RJbmRleFByb3BlcnR5VmFsdWUob2JqKTtcbiAgICAgIH0sXG4gICAgICBnZXQgaXNDbGFzc09iamVjdCgpIHtcblxuICAgICAgICBpZiAoIV8uaXNPYmplY3Qob2JqKSB8fCBfLmlzQXJyYXkob2JqKSB8fCBfLmlzUmVnRXhwKG9iaikgfHxcbiAgICAgICAgICBfLmlzQnVmZmVyKG9iaikgfHwgXy5pc0FycmF5QnVmZmVyKG9iaikpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF8uaXNEYXRlKG9iaikpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjbGFzc05hbWUgPSBDTEFTUy5nZXROYW1lRnJvbU9iamVjdChvYmopXG4gICAgICAgIHJldHVybiBfLmlzU3RyaW5nKGNsYXNzTmFtZSkgJiYgY2xhc3NOYW1lICE9PSAnT2JqZWN0JztcbiAgICAgIH0sXG4gICAgICBpc0VxdWFsOiAoYW5vdGhlck9iajogYW55LCBjb21wYXJlRGVlcCA9IGZhbHNlKSA9PiB7XG4gICAgICAgIGlmICghQ0xBU1MuT0JKRUNUKG9iaikuaXNDbGFzc09iamVjdCB8fCAhQ0xBU1MuT0JKRUNUKGFub3RoZXJPYmopLmlzQ2xhc3NPYmplY3QpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9iaiA9PT0gYW5vdGhlck9iaikge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGBFUSB2MTogLCB2MjogIC0gY2xhc3MxICR7Q0xBU1MuZ2V0TmFtZUZyb21PYmplY3Qob2JqKX0sIGNsYXNzMiAke0NMQVNTLmdldE5hbWVGcm9tT2JqZWN0KGFub3RoZXJPYmopfWAsIG9iaiwgYW5vdGhlck9iailcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2MSA9IENMQVNTTkFNRS5nZXRPYmplY3RJbmRleFZhbHVlKG9iaik7XG4gICAgICAgIGNvbnN0IHYyID0gQ0xBU1NOQU1FLmdldE9iamVjdEluZGV4VmFsdWUoYW5vdGhlck9iaik7XG4gICAgICAgIGNvbnN0IGYxID0gQ0xBU1NOQU1FLmdldE9iamVjdENsYXNzRmFtaWx5KG9iailcbiAgICAgICAgY29uc3QgZjIgPSBDTEFTU05BTUUuZ2V0T2JqZWN0Q2xhc3NGYW1pbHkoYW5vdGhlck9iailcbiAgICAgICAgY29uc3QgaXNGYW1pbHlEaWZmID0gKCFfLmlzU3RyaW5nKGYxKSB8fCAhXy5pc1N0cmluZyhmMikgfHwgKGYxICE9PSBmMikpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgRElGRiBGQU1JTFkgJHtpc0ZhbWlseURpZmZ9IHYxOiAke0NMQVNTTkFNRS5nZXRPYmplY3RDbGFzc0ZhbWlseShvYmopfSwgdjI6ICR7Q0xBU1NOQU1FLmdldE9iamVjdENsYXNzRmFtaWx5KGFub3RoZXJPYmopfSAtIGNsYXNzMSAke0NMQVNTLmdldE5hbWVGcm9tT2JqZWN0KG9iail9LCBjbGFzczIgJHtDTEFTUy5nZXROYW1lRnJvbU9iamVjdChhbm90aGVyT2JqKX1gKVxuICAgICAgICBpZiAoaXNGYW1pbHlEaWZmKSB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coYERJRkYgdjE6ICR7djF9LCB2MjogJHt2Mn0gLSBjbGFzczEgJHtDTEFTUy5nZXROYW1lRnJvbU9iamVjdChvYmopfSwgY2xhc3MyICR7Q0xBU1MuZ2V0TmFtZUZyb21PYmplY3QoYW5vdGhlck9iail9YClcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFDTEFTUy5PQkpFQ1Qob2JqKS5pc0NsYXNzT2JqZWN0IHx8ICFDTEFTUy5PQkpFQ1QoYW5vdGhlck9iaikuaXNDbGFzc09iamVjdCkge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGBOT1QgQ0xBU1MgdjE6ICR7djF9LCB2MjogJHt2Mn0gLSBjbGFzczEgJHtDTEFTUy5nZXROYW1lRnJvbU9iamVjdChvYmopfSwgY2xhc3MyICR7Q0xBU1MuZ2V0TmFtZUZyb21PYmplY3QoYW5vdGhlck9iail9YClcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGB2MTogJHt2MX0gLGNsYXNzICR7Q0xBU1MuZ2V0TmFtZUZyb21PYmplY3Qob2JqKX0gLHByb3A6ICR7Q0xBU1MuT0JKRUNUKG9iaikuaW5kZXhQcm9wZXJ0eX1gKVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgdjI6ICR7djJ9ICxjbGFzcyAke0NMQVNTLmdldE5hbWVGcm9tT2JqZWN0KGFub3RoZXJPYmopfSAscHJvcDogJHtDTEFTUy5PQkpFQ1QoYW5vdGhlck9iaikuaW5kZXhQcm9wZXJ0eX1gKVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgdjE6ICR7djF9LCB2MjogJHt2Mn0gLSBjbGFzczEgJHtDTEFTUy5nZXROYW1lRnJvbU9iamVjdChvYmopfSwgY2xhc3MyICR7Q0xBU1MuZ2V0TmFtZUZyb21PYmplY3QoYW5vdGhlck9iail9YClcbiAgICAgICAgLy8gY29uc29sZS5sb2coJycpXG4gICAgICAgIGlmICgoXy5pc051bWJlcih2MSkgJiYgXy5pc051bWJlcih2MikpIHx8IChfLmlzU3RyaW5nKHYxKSAmJiBfLmlzU3RyaW5nKHYyKSkpIHtcblxuICAgICAgICAgIGNvbnN0IHJlcyA9ICh2MSA9PT0gdjIpO1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb21wYXJlRGVlcCkge1xuICAgICAgICAgIHJldHVybiBfLmlzRXF1YWwodjEsIHYyKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0ICogZnJvbSAnZW51bS12YWx1ZXMnO1xuIl19
@@ -0,0 +1,23 @@
1
+ export var Models;
2
+ (function (Models) {
3
+ class ParamConfig {
4
+ }
5
+ Models.ParamConfig = ParamConfig;
6
+ class MethodConfig {
7
+ constructor() {
8
+ this.parameters = {};
9
+ }
10
+ }
11
+ Models.MethodConfig = MethodConfig;
12
+ class ClassConfig {
13
+ constructor() {
14
+ // @ts-ignore
15
+ this.singleton = void 0;
16
+ this.injections = [];
17
+ this.vChildren = [];
18
+ this.methods = {};
19
+ }
20
+ }
21
+ Models.ClassConfig = ClassConfig;
22
+ })(Models || (Models = {}));
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS90eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvcHJvamVjdHMvdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3NyYy9saWIvbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sS0FBVyxNQUFNLENBcUR0QjtBQXJERCxXQUFpQixNQUFNO0lBY3JCLE1BQWEsV0FBVztLQU12QjtJQU5ZLGtCQUFXLGNBTXZCLENBQUE7SUFFRCxNQUFhLFlBQVk7UUFBekI7WUFPRSxlQUFVLEdBQXlDLEVBQUUsQ0FBQztRQUN4RCxDQUFDO0tBQUE7SUFSWSxtQkFBWSxlQVF4QixDQUFBO0lBVUQsTUFBYSxXQUFXO1FBQXhCO1lBRUUsYUFBYTtZQUNiLGNBQVMsR0FBVyxLQUFLLENBQUMsQ0FBQztZQUMzQixlQUFVLEdBQWtELEVBQUUsQ0FBQztZQUcvRCxjQUFTLEdBQW1CLEVBQUUsQ0FBQztZQUcvQixZQUFPLEdBQTJDLEVBQUUsQ0FBQztRQUN2RCxDQUFDO0tBQUE7SUFYWSxrQkFBVyxjQVd2QixDQUFBO0FBRUgsQ0FBQyxFQXJEZ0IsTUFBTSxLQUFOLE1BQU0sUUFxRHRCIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmltcG9ydCB7IENvbmZpZ01vZGVscyB9IGZyb20gJ3RucC1jb25maWcvYnJvd3Nlcic7XG5cbmV4cG9ydCBuYW1lc3BhY2UgTW9kZWxzIHtcblxuXG4gIGV4cG9ydCB0eXBlIENMQVNTTkFNRU9wdGlvbnMgPSB7XG4gICAgdW5pcXVlS2V5Pzogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIGF1dG9pbnN0YW5jZSAtIGNyZWF0ZSBpbnN0YW5jZSBvZiBzaW5nbGV0b24gYXV0b21hdGljbHkgaW5zaWRlIGRlY29yYXRvclxuICAgICAqIGZpcnN0LWluc3RhbmNlIC0gdXNlIGZpcnN0IGluc3RhY2Ugb2YgY3JlYXRlZCBjbGFzcyBhcyBkZWNvcmF0b3JcbiAgICAgKi9cbiAgICBzaW5nbGV0b24/OiAnYXV0b2luc3RhbmNlJyB8ICdmaXJzdC1pbnN0YW5jZScgfCAnbGFzdC1pbnN0YW5jZScgfCBib29sZWFuLFxuICAgIGNsYXNzRmFtaWx5Pzogc3RyaW5nLFxuICAgIGNsYXNzTmFtZUluQnJvd3Nlcj86IHN0cmluZyxcbiAgfVxuXG4gIGV4cG9ydCBjbGFzcyBQYXJhbUNvbmZpZyB7XG4gICAgcGFyYW1OYW1lOiBzdHJpbmc7XG4gICAgcGFyYW1UeXBlOiBDb25maWdNb2RlbHMuUGFyYW1UeXBlO1xuICAgIGluZGV4OiBudW1iZXI7XG4gICAgZGVmYXVsdFR5cGU6IGFueTtcbiAgICBleHBpcmVJblNlY29uZHM/OiBudW1iZXI7XG4gIH1cblxuICBleHBvcnQgY2xhc3MgTWV0aG9kQ29uZmlnIHtcbiAgICBtZXRob2ROYW1lOiBzdHJpbmc7XG4gICAgcGF0aDogc3RyaW5nO1xuICAgIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcjtcbiAgICB0eXBlOiBDb25maWdNb2RlbHMuSHR0cE1ldGhvZDtcbiAgICByZWFsdGltZVVwZGF0ZTogYm9vbGVhbjtcblxuICAgIHBhcmFtZXRlcnM6IHsgW3BhcmFtTmFtZTogc3RyaW5nXTogUGFyYW1Db25maWcgfSA9IHt9O1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBDbGFzc01ldGEge1xuICAgIHVuaXF1ZUtleT86IHN0cmluZztcbiAgICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gICAgY2xhc3NGYW1pbHk/OiBzdHJpbmc7XG4gICAgY2xhc3NOYW1lSW5Ccm93c2VyPzogc3RyaW5nO1xuICAgIHRhcmdldD86IEZ1bmN0aW9uO1xuICB9XG5cbiAgZXhwb3J0IGNsYXNzIENsYXNzQ29uZmlnIHtcbiAgICBicm93c2VyVHJhbnNmb3JtRm4/OiAoZW50aXR5OiBhbnkpID0+IGFueTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgc2luZ2xldG9uOiBPYmplY3QgPSB2b2lkIDA7XG4gICAgaW5qZWN0aW9uczogeyBnZXR0ZXI6IEZ1bmN0aW9uLCBwcm9wZXJ0eU5hbWU6IHN0cmluZzsgfVtdID0gW107XG4gICAgY2FsY3VsYXRlZFBhdGg6IHN0cmluZztcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgdkNoaWxkcmVuPzogQ2xhc3NDb25maWdbXSA9IFtdO1xuICAgIHZQYXJlbnQ/OiBDbGFzc0NvbmZpZztcbiAgICBjbGFzc1JlZmVyZW5jZTogRnVuY3Rpb247XG4gICAgbWV0aG9kczogeyBbbWV0aG9kTmFtZTogc3RyaW5nXTogTWV0aG9kQ29uZmlnIH0gPSB7fTtcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,96 @@
1
+ import { _ } from 'tnp-core/browser';
2
+ import { SYMBOL } from './symbols';
3
+ import { getStorage } from './storage';
4
+ import { CLASSNAME } from './classname';
5
+ import { CLASS } from './index';
6
+ function getClasses() {
7
+ const s = getStorage();
8
+ return s[SYMBOL.CLASSES];
9
+ }
10
+ // @ts-ignore
11
+ export function setClassName(target, className, options) {
12
+ let { classFamily, uniqueKey, classNameInBrowser, singleton } = options || {
13
+ classFamily: void 0,
14
+ uniqueKey: 'id',
15
+ classNameInBrowser: void 0,
16
+ singleton: void 0,
17
+ autoinstance: false
18
+ };
19
+ if (!_.isUndefined(singleton) && _.isBoolean(singleton) && singleton) {
20
+ singleton = 'first-instance';
21
+ }
22
+ if (!uniqueKey) {
23
+ uniqueKey = 'id';
24
+ }
25
+ if (target) {
26
+ // @ts-ignore
27
+ target[SYMBOL.CLASSNAMEKEY] = className;
28
+ // @ts-ignore
29
+ target[SYMBOL.CLASSNAMEKEYBROWSER] = classNameInBrowser;
30
+ }
31
+ const existed = getClasses()
32
+ .find(f => f.className === className);
33
+ if (existed) {
34
+ existed.target = target;
35
+ }
36
+ else {
37
+ const res = {
38
+ className,
39
+ classNameInBrowser,
40
+ target,
41
+ uniqueKey,
42
+ classFamily
43
+ };
44
+ if (_.isUndefined(classFamily)) {
45
+ Object.defineProperty(res, 'classFamily', {
46
+ get: function () {
47
+ const parent = Object.getPrototypeOf(target);
48
+ if (!_.isFunction(parent) || parent.name === 'Object' || parent.name === '') {
49
+ return className;
50
+ }
51
+ const classNameNew = CLASSNAME.getClassName(parent);
52
+ return CLASSNAME.getClassFamilyByClassName(classNameNew);
53
+ }
54
+ });
55
+ }
56
+ getClasses().push(res);
57
+ }
58
+ const Original = target;
59
+ if (singleton === 'first-instance' || singleton === 'last-instance') {
60
+ const obj = {
61
+ // @ts-ignore
62
+ decoratedConstructor: function (...args) {
63
+ // console.log(`DECORATED CONSTRUCTOR OF ${Original.name}`)
64
+ const context = Original.apply(this, args);
65
+ const existedSingleton = CLASS.getSingleton(Original);
66
+ if (!existedSingleton || singleton === 'last-instance') {
67
+ CLASS.setSingletonObj(Original, this);
68
+ CLASS.setSingletonObj(obj.decoratedConstructor, this);
69
+ // console.log(`Singleton created for "${className}", mode: ${singleton} `);
70
+ }
71
+ else {
72
+ // console.log('ingleton exists')
73
+ }
74
+ return context;
75
+ }
76
+ };
77
+ // copy prototype so intanceof operator still works
78
+ obj.decoratedConstructor.prototype = Original.prototype;
79
+ // @ts-ignore
80
+ Object.keys(Original).forEach((name) => { obj.decoratedConstructor[name] = Original[name]; });
81
+ Object.defineProperty(obj.decoratedConstructor, 'name', {
82
+ value: className,
83
+ configurable: true,
84
+ });
85
+ // (obj.decoratedConstructor as any).name = className;
86
+ // console.log('return new contruor', decoratedConstructor)
87
+ return obj.decoratedConstructor;
88
+ }
89
+ else if (singleton === 'autoinstance') {
90
+ // console.log(`AUTOINSTANCE FOR ${target.name}`)
91
+ const auto = new Original();
92
+ CLASS.setSingletonObj(Original, auto);
93
+ // console.log(`Singleton created for "${className}", mode: ${singleton} `)
94
+ }
95
+ }
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LWNsYXNzLW5hbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItYnVuZGxlL3R5cGVzY3JpcHQtY2xhc3MtaGVscGVycy9wcm9qZWN0cy90eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvc3JjL2xpYi9zZXQtY2xhc3MtbmFtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVuQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUdoQyxTQUFTLFVBQVU7SUFDakIsTUFBTSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUM7SUFDdkIsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBUSxDQUFDO0FBQ2xDLENBQUM7QUFFRCxhQUFhO0FBQ2IsTUFBTSxVQUFVLFlBQVksQ0FBQyxNQUFnQixFQUFFLFNBQWlCLEVBQUUsT0FBaUM7SUFFakcsSUFBSSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxJQUFJO1FBQ3pFLFdBQVcsRUFBRSxLQUFLLENBQUM7UUFDbkIsU0FBUyxFQUFFLElBQUk7UUFDZixrQkFBa0IsRUFBRSxLQUFLLENBQUM7UUFDMUIsU0FBUyxFQUFFLEtBQUssQ0FBQztRQUNqQixZQUFZLEVBQUUsS0FBSztLQUNPLENBQUM7SUFFN0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxTQUFTLEVBQUU7UUFDcEUsU0FBUyxHQUFHLGdCQUFnQixDQUFBO0tBQzdCO0lBRUQsSUFBSSxDQUFDLFNBQVMsRUFBRTtRQUNkLFNBQVMsR0FBRyxJQUFJLENBQUE7S0FDakI7SUFFRCxJQUFJLE1BQU0sRUFBRTtRQUNWLGFBQWE7UUFDYixNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUN4QyxhQUFhO1FBQ2IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLGtCQUFrQixDQUFDO0tBQ3pEO0lBRUQsTUFBTSxPQUFPLEdBQUksVUFBVSxFQUFpRDtTQUN6RSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFBO0lBRXZDLElBQUksT0FBTyxFQUFFO1FBQ1gsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7S0FDekI7U0FBTTtRQUNMLE1BQU0sR0FBRyxHQUFHO1lBQ1YsU0FBUztZQUNULGtCQUFrQjtZQUNsQixNQUFNO1lBQ04sU0FBUztZQUNULFdBQVc7U0FDWixDQUFBO1FBRUQsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQzlCLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLGFBQWEsRUFBRTtnQkFDeEMsR0FBRyxFQUFFO29CQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzdDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO3dCQUMzRSxPQUFPLFNBQVMsQ0FBQztxQkFDbEI7b0JBQ0QsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQTtvQkFDbkQsT0FBTyxTQUFTLENBQUMseUJBQXlCLENBQUMsWUFBWSxDQUFDLENBQUE7Z0JBQzFELENBQUM7YUFDRixDQUFDLENBQUE7U0FDSDtRQUNELFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtLQUN2QjtJQUNELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQztJQUd4QixJQUFJLFNBQVMsS0FBSyxnQkFBZ0IsSUFBSSxTQUFTLEtBQUssZUFBZSxFQUFFO1FBQ25FLE1BQU0sR0FBRyxHQUFHO1lBQ1YsYUFBYTtZQUNiLG9CQUFvQixFQUFFLFVBQVUsR0FBRyxJQUFJO2dCQUNyQywyREFBMkQ7Z0JBQzNELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUUzQyxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUE7Z0JBQ3JELElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxTQUFTLEtBQUssZUFBZSxFQUFFO29CQUN0RCxLQUFLLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQTtvQkFDckMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLENBQUE7b0JBQ3JELDRFQUE0RTtpQkFDN0U7cUJBQ0k7b0JBQ0gsaUNBQWlDO2lCQUNsQztnQkFFRCxPQUFPLE9BQU8sQ0FBQztZQUNqQixDQUFDO1NBQ0YsQ0FBQztRQUVGLG1EQUFtRDtRQUNuRCxHQUFHLENBQUMsb0JBQW9CLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDeEQsYUFBYTtRQUNiLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQVMsUUFBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0csTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsTUFBTSxFQUFFO1lBQ3RELEtBQUssRUFBRSxTQUFTO1lBQ2hCLFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQTtRQUNGLHNEQUFzRDtRQUN0RCwyREFBMkQ7UUFDM0QsT0FBTyxHQUFHLENBQUMsb0JBQW9CLENBQUM7S0FDakM7U0FBTSxJQUFJLFNBQVMsS0FBSyxjQUFjLEVBQUU7UUFFdkMsaURBQWlEO1FBQ2pELE1BQU0sSUFBSSxHQUFHLElBQUssUUFBZ0IsRUFBRSxDQUFDO1FBQ3JDLEtBQUssQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3JDLDJFQUEyRTtLQUU1RTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgU1lNQk9MIH0gZnJvbSAnLi9zeW1ib2xzJztcbmltcG9ydCB7IE1vZGVscyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IGdldFN0b3JhZ2UgfSBmcm9tICcuL3N0b3JhZ2UnO1xuaW1wb3J0IHsgQ0xBU1NOQU1FIH0gZnJvbSAnLi9jbGFzc25hbWUnO1xuaW1wb3J0IHsgQ0xBU1MgfSBmcm9tICcuL2luZGV4JztcblxuXG5mdW5jdGlvbiBnZXRDbGFzc2VzKCk6IE1vZGVscy5DbGFzc01ldGFbXSB7XG4gIGNvbnN0IHMgPSBnZXRTdG9yYWdlKCk7XG4gIHJldHVybiBzW1NZTUJPTC5DTEFTU0VTXSBhcyBhbnk7XG59XG5cbi8vIEB0cy1pZ25vcmVcbmV4cG9ydCBmdW5jdGlvbiBzZXRDbGFzc05hbWUodGFyZ2V0OiBGdW5jdGlvbiwgY2xhc3NOYW1lOiBzdHJpbmcsIG9wdGlvbnM/OiBNb2RlbHMuQ0xBU1NOQU1FT3B0aW9ucykge1xuXG4gIGxldCB7IGNsYXNzRmFtaWx5LCB1bmlxdWVLZXksIGNsYXNzTmFtZUluQnJvd3Nlciwgc2luZ2xldG9uIH0gPSBvcHRpb25zIHx8IHtcbiAgICBjbGFzc0ZhbWlseTogdm9pZCAwLFxuICAgIHVuaXF1ZUtleTogJ2lkJyxcbiAgICBjbGFzc05hbWVJbkJyb3dzZXI6IHZvaWQgMCxcbiAgICBzaW5nbGV0b246IHZvaWQgMCxcbiAgICBhdXRvaW5zdGFuY2U6IGZhbHNlXG4gIH0gYXMgTW9kZWxzLkNMQVNTTkFNRU9wdGlvbnM7XG5cbiAgaWYgKCFfLmlzVW5kZWZpbmVkKHNpbmdsZXRvbikgJiYgXy5pc0Jvb2xlYW4oc2luZ2xldG9uKSAmJiBzaW5nbGV0b24pIHtcbiAgICBzaW5nbGV0b24gPSAnZmlyc3QtaW5zdGFuY2UnXG4gIH1cblxuICBpZiAoIXVuaXF1ZUtleSkge1xuICAgIHVuaXF1ZUtleSA9ICdpZCdcbiAgfVxuXG4gIGlmICh0YXJnZXQpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGFyZ2V0W1NZTUJPTC5DTEFTU05BTUVLRVldID0gY2xhc3NOYW1lO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0YXJnZXRbU1lNQk9MLkNMQVNTTkFNRUtFWUJST1dTRVJdID0gY2xhc3NOYW1lSW5Ccm93c2VyO1xuICB9XG5cbiAgY29uc3QgZXhpc3RlZCA9IChnZXRDbGFzc2VzKCkgYXMgeyBjbGFzc05hbWU6IHN0cmluZzsgdGFyZ2V0OiBGdW5jdGlvbjsgfVtdKVxuICAgIC5maW5kKGYgPT4gZi5jbGFzc05hbWUgPT09IGNsYXNzTmFtZSlcblxuICBpZiAoZXhpc3RlZCkge1xuICAgIGV4aXN0ZWQudGFyZ2V0ID0gdGFyZ2V0O1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHJlcyA9IHtcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNsYXNzTmFtZUluQnJvd3NlcixcbiAgICAgIHRhcmdldCxcbiAgICAgIHVuaXF1ZUtleSxcbiAgICAgIGNsYXNzRmFtaWx5XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQoY2xhc3NGYW1pbHkpKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzLCAnY2xhc3NGYW1pbHknLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IHBhcmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0YXJnZXQpO1xuICAgICAgICAgIGlmICghXy5pc0Z1bmN0aW9uKHBhcmVudCkgfHwgcGFyZW50Lm5hbWUgPT09ICdPYmplY3QnIHx8IHBhcmVudC5uYW1lID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIGNsYXNzTmFtZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgY2xhc3NOYW1lTmV3ID0gQ0xBU1NOQU1FLmdldENsYXNzTmFtZShwYXJlbnQpXG4gICAgICAgICAgcmV0dXJuIENMQVNTTkFNRS5nZXRDbGFzc0ZhbWlseUJ5Q2xhc3NOYW1lKGNsYXNzTmFtZU5ldylcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgZ2V0Q2xhc3NlcygpLnB1c2gocmVzKVxuICB9XG4gIGNvbnN0IE9yaWdpbmFsID0gdGFyZ2V0O1xuXG5cbiAgaWYgKHNpbmdsZXRvbiA9PT0gJ2ZpcnN0LWluc3RhbmNlJyB8fCBzaW5nbGV0b24gPT09ICdsYXN0LWluc3RhbmNlJykge1xuICAgIGNvbnN0IG9iaiA9IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGRlY29yYXRlZENvbnN0cnVjdG9yOiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgREVDT1JBVEVEIENPTlNUUlVDVE9SIE9GICR7T3JpZ2luYWwubmFtZX1gKVxuICAgICAgICBjb25zdCBjb250ZXh0ID0gT3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG5cbiAgICAgICAgY29uc3QgZXhpc3RlZFNpbmdsZXRvbiA9IENMQVNTLmdldFNpbmdsZXRvbihPcmlnaW5hbClcbiAgICAgICAgaWYgKCFleGlzdGVkU2luZ2xldG9uIHx8IHNpbmdsZXRvbiA9PT0gJ2xhc3QtaW5zdGFuY2UnKSB7XG4gICAgICAgICAgQ0xBU1Muc2V0U2luZ2xldG9uT2JqKE9yaWdpbmFsLCB0aGlzKVxuICAgICAgICAgIENMQVNTLnNldFNpbmdsZXRvbk9iaihvYmouZGVjb3JhdGVkQ29uc3RydWN0b3IsIHRoaXMpXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coYFNpbmdsZXRvbiBjcmVhdGVkIGZvciBcIiR7Y2xhc3NOYW1lfVwiLCBtb2RlOiAke3NpbmdsZXRvbn0gYCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ2luZ2xldG9uIGV4aXN0cycpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGV4dDtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gY29weSBwcm90b3R5cGUgc28gaW50YW5jZW9mIG9wZXJhdG9yIHN0aWxsIHdvcmtzXG4gICAgb2JqLmRlY29yYXRlZENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IE9yaWdpbmFsLnByb3RvdHlwZTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgT2JqZWN0LmtleXMoT3JpZ2luYWwpLmZvckVhY2goKG5hbWU6IHN0cmluZykgPT4geyBvYmouZGVjb3JhdGVkQ29uc3RydWN0b3JbbmFtZV0gPSAoPGFueT5PcmlnaW5hbClbbmFtZV07IH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmouZGVjb3JhdGVkQ29uc3RydWN0b3IsICduYW1lJywge1xuICAgICAgdmFsdWU6IGNsYXNzTmFtZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB9KVxuICAgIC8vIChvYmouZGVjb3JhdGVkQ29uc3RydWN0b3IgYXMgYW55KS5uYW1lID0gY2xhc3NOYW1lO1xuICAgIC8vIGNvbnNvbGUubG9nKCdyZXR1cm4gbmV3IGNvbnRydW9yJywgZGVjb3JhdGVkQ29uc3RydWN0b3IpXG4gICAgcmV0dXJuIG9iai5kZWNvcmF0ZWRDb25zdHJ1Y3RvcjtcbiAgfSBlbHNlIGlmIChzaW5nbGV0b24gPT09ICdhdXRvaW5zdGFuY2UnKSB7XG5cbiAgICAvLyBjb25zb2xlLmxvZyhgQVVUT0lOU1RBTkNFIEZPUiAke3RhcmdldC5uYW1lfWApXG4gICAgY29uc3QgYXV0byA9IG5ldyAoT3JpZ2luYWwgYXMgYW55KSgpO1xuICAgIENMQVNTLnNldFNpbmdsZXRvbk9iaihPcmlnaW5hbCwgYXV0bylcbiAgICAvLyBjb25zb2xlLmxvZyhgU2luZ2xldG9uIGNyZWF0ZWQgZm9yIFwiJHtjbGFzc05hbWV9XCIsIG1vZGU6ICR7c2luZ2xldG9ufSBgKVxuXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,18 @@
1
+ import { SYMBOL } from './symbols';
2
+ import { _ } from 'tnp-core/browser';
3
+ function defaultValues() {
4
+ return _.cloneDeep({
5
+ [SYMBOL.CLASSES]: []
6
+ });
7
+ }
8
+ export function getStorage(property) {
9
+ if (typeof property === 'string') {
10
+ const storageInClassStaticProp = getStorage();
11
+ return storageInClassStaticProp[property];
12
+ }
13
+ if (typeof defaultValues.prototype[SYMBOL.STORAGE] === 'undefined') {
14
+ defaultValues.prototype[SYMBOL.STORAGE] = defaultValues();
15
+ }
16
+ return defaultValues.prototype[SYMBOL.STORAGE];
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUvdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3Byb2plY3RzL3R5cGVzY3JpcHQtY2xhc3MtaGVscGVycy9zcmMvbGliL3N0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFckMsU0FBUyxhQUFhO0lBQ3BCLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNqQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFO0tBQ3JCLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFVLFFBQWlCO0lBSW5ELElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFFO1FBRWhDLE1BQU0sd0JBQXdCLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDOUMsT0FBTyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsQ0FBQTtLQUMxQztJQUVELElBQUksT0FBTyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxXQUFXLEVBQUU7UUFDbEUsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsYUFBYSxFQUFFLENBQUE7S0FDMUQ7SUFDRCxPQUFPLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBQ2hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgU1lNQk9MIH0gZnJvbSAnLi9zeW1ib2xzJztcbmltcG9ydCB7IF8gfSBmcm9tICd0bnAtY29yZS9icm93c2VyJztcblxuZnVuY3Rpb24gZGVmYXVsdFZhbHVlcygpIHtcbiAgcmV0dXJuIF8uY2xvbmVEZWVwKHtcbiAgICBbU1lNQk9MLkNMQVNTRVNdOiBbXVxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RvcmFnZTxUID0gYW55Pihwcm9wZXJ0eT86IHN0cmluZyk6IFQge1xuXG5cblxuICBpZiAodHlwZW9mIHByb3BlcnR5ID09PSAnc3RyaW5nJykge1xuXG4gICAgY29uc3Qgc3RvcmFnZUluQ2xhc3NTdGF0aWNQcm9wID0gZ2V0U3RvcmFnZSgpO1xuICAgIHJldHVybiBzdG9yYWdlSW5DbGFzc1N0YXRpY1Byb3BbcHJvcGVydHldXG4gIH1cblxuICBpZiAodHlwZW9mIGRlZmF1bHRWYWx1ZXMucHJvdG90eXBlW1NZTUJPTC5TVE9SQUdFXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBkZWZhdWx0VmFsdWVzLnByb3RvdHlwZVtTWU1CT0wuU1RPUkFHRV0gPSBkZWZhdWx0VmFsdWVzKClcbiAgfVxuICByZXR1cm4gZGVmYXVsdFZhbHVlcy5wcm90b3R5cGVbU1lNQk9MLlNUT1JBR0VdXG59XG5cbiJdfQ==
@@ -0,0 +1,11 @@
1
+ export const SYMBOL = {
2
+ MODELS_MAPPING: Symbol(),
3
+ DEFAULT_MODEL: Symbol(),
4
+ CLASSNAMEKEY: Symbol(),
5
+ // SINGLETON: Symbol(),
6
+ CLASSNAMEKEYBROWSER: Symbol(),
7
+ CLASS_META_CONFIG: Symbol(),
8
+ STORAGE: 'classesstorage',
9
+ CLASSES: 'classes',
10
+ };
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltYm9scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUvdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3Byb2plY3RzL3R5cGVzY3JpcHQtY2xhc3MtaGVscGVycy9zcmMvbGliL3N5bWJvbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHO0lBQ3BCLGNBQWMsRUFBRSxNQUFNLEVBQUU7SUFDeEIsYUFBYSxFQUFFLE1BQU0sRUFBRTtJQUN2QixZQUFZLEVBQUUsTUFBTSxFQUFFO0lBQ3RCLHVCQUF1QjtJQUN2QixtQkFBbUIsRUFBRSxNQUFNLEVBQUU7SUFDN0IsaUJBQWlCLEVBQUUsTUFBTSxFQUFFO0lBQzNCLE9BQU8sRUFBRSxnQkFBZ0I7SUFDekIsT0FBTyxFQUFFLFNBQVM7Q0FDbkIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5leHBvcnQgY29uc3QgU1lNQk9MID0ge1xuICBNT0RFTFNfTUFQUElORzogU3ltYm9sKCksXG4gIERFRkFVTFRfTU9ERUw6IFN5bWJvbCgpLFxuICBDTEFTU05BTUVLRVk6IFN5bWJvbCgpLFxuICAvLyBTSU5HTEVUT046IFN5bWJvbCgpLFxuICBDTEFTU05BTUVLRVlCUk9XU0VSOiBTeW1ib2woKSxcbiAgQ0xBU1NfTUVUQV9DT05GSUc6IFN5bWJvbCgpLFxuICBTVE9SQUdFOiAnY2xhc3Nlc3N0b3JhZ2UnLFxuICBDTEFTU0VTOiAnY2xhc3NlcycsXG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './lib';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUvdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3Byb2plY3RzL3R5cGVzY3JpcHQtY2xhc3MtaGVscGVycy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliJztcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS90eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvcHJvamVjdHMvdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3NyYy90eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==