typescript-class-helpers 21.0.32 → 21.0.35

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 (86) hide show
  1. package/browser/fesm2022/typescript-class-helpers-browser.mjs +119 -559
  2. package/browser/fesm2022/typescript-class-helpers-browser.mjs.map +1 -1
  3. package/browser/package.json +1 -1
  4. package/browser/types/typescript-class-helpers-browser.d.ts +13 -148
  5. package/browser-prod/fesm2022/typescript-class-helpers-browser.mjs +94 -529
  6. package/browser-prod/fesm2022/typescript-class-helpers-browser.mjs.map +1 -1
  7. package/browser-prod/package.json +1 -1
  8. package/browser-prod/types/typescript-class-helpers-browser.d.ts +12 -139
  9. package/browser-prod.split-namespaces.json +19 -29
  10. package/lib/build-info._auto-generated_.d.ts +1 -1
  11. package/lib/build-info._auto-generated_.js +1 -1
  12. package/lib/index.d.ts +1 -48
  13. package/lib/index.js +15 -197
  14. package/lib/index.js.map +1 -1
  15. package/lib/package.json +1 -1
  16. package/lib/typescript-class-helpers.d.ts +18 -0
  17. package/lib/typescript-class-helpers.js +182 -0
  18. package/lib/typescript-class-helpers.js.map +1 -0
  19. package/lib-prod/build-info._auto-generated_.d.ts +1 -1
  20. package/lib-prod/build-info._auto-generated_.js +1 -1
  21. package/lib-prod/index.d.ts +1 -48
  22. package/lib-prod/index.js +1 -193
  23. package/lib-prod/index.js.map +1 -1
  24. package/lib-prod/package.json +1 -1
  25. package/lib-prod/typescript-class-helpers.d.ts +16 -0
  26. package/lib-prod/typescript-class-helpers.js +168 -0
  27. package/lib-prod/typescript-class-helpers.js.map +1 -0
  28. package/lib-prod.split-namespaces.json +19 -29
  29. package/package.json +1 -1
  30. package/websql/fesm2022/typescript-class-helpers-websql.mjs +119 -558
  31. package/websql/fesm2022/typescript-class-helpers-websql.mjs.map +1 -1
  32. package/websql/package.json +1 -1
  33. package/websql/types/typescript-class-helpers-websql.d.ts +13 -149
  34. package/websql-prod/fesm2022/typescript-class-helpers-websql.mjs +94 -528
  35. package/websql-prod/fesm2022/typescript-class-helpers-websql.mjs.map +1 -1
  36. package/websql-prod/package.json +1 -1
  37. package/websql-prod/types/typescript-class-helpers-websql.d.ts +12 -140
  38. package/websql-prod.split-namespaces.json +19 -29
  39. package/lib/classname.d.ts +0 -16
  40. package/lib/classname.js +0 -198
  41. package/lib/classname.js.map +0 -1
  42. package/lib/describe-class.d.ts +0 -6
  43. package/lib/describe-class.js +0 -77
  44. package/lib/describe-class.js.map +0 -1
  45. package/lib/errors-messages.d.ts +0 -1
  46. package/lib/errors-messages.js +0 -15
  47. package/lib/errors-messages.js.map +0 -1
  48. package/lib/models.d.ts +0 -83
  49. package/lib/models.js +0 -63
  50. package/lib/models.js.map +0 -1
  51. package/lib/registerd-db.d.ts +0 -5
  52. package/lib/registerd-db.js +0 -8
  53. package/lib/registerd-db.js.map +0 -1
  54. package/lib/set-class-name.d.ts +0 -2
  55. package/lib/set-class-name.js +0 -100
  56. package/lib/set-class-name.js.map +0 -1
  57. package/lib/storage.d.ts +0 -1
  58. package/lib/storage.js +0 -27
  59. package/lib/storage.js.map +0 -1
  60. package/lib/symbols.d.ts +0 -7
  61. package/lib/symbols.js +0 -12
  62. package/lib/symbols.js.map +0 -1
  63. package/lib-prod/classname.d.ts +0 -14
  64. package/lib-prod/classname.js +0 -186
  65. package/lib-prod/classname.js.map +0 -1
  66. package/lib-prod/describe-class.d.ts +0 -6
  67. package/lib-prod/describe-class.js +0 -73
  68. package/lib-prod/describe-class.js.map +0 -1
  69. package/lib-prod/errors-messages.d.ts +0 -1
  70. package/lib-prod/errors-messages.js +0 -12
  71. package/lib-prod/errors-messages.js.map +0 -1
  72. package/lib-prod/models.d.ts +0 -81
  73. package/lib-prod/models.js +0 -55
  74. package/lib-prod/models.js.map +0 -1
  75. package/lib-prod/registerd-db.d.ts +0 -5
  76. package/lib-prod/registerd-db.js +0 -5
  77. package/lib-prod/registerd-db.js.map +0 -1
  78. package/lib-prod/set-class-name.d.ts +0 -2
  79. package/lib-prod/set-class-name.js +0 -97
  80. package/lib-prod/set-class-name.js.map +0 -1
  81. package/lib-prod/storage.d.ts +0 -1
  82. package/lib-prod/storage.js +0 -24
  83. package/lib-prod/storage.js.map +0 -1
  84. package/lib-prod/symbols.d.ts +0 -7
  85. package/lib-prod/symbols.js +0 -9
  86. package/lib-prod/symbols.js.map +0 -1
@@ -1,326 +1,103 @@
1
- import { CoreModels, _, Helpers, UtilsOs } from 'tnp-core/websql';
1
+ import { _, Helpers, CoreModels } from 'tnp-core/websql';
2
2
 
3
- var Models;
4
- (function (Models) {
5
- /**
6
- * @deprecated
7
- */
8
- class ParamConfig {
9
- }
10
- Models.ParamConfig = ParamConfig;
11
- /**
12
- * @deprecated
13
- */
14
- class MethodConfig {
15
- constructor() {
16
- //#endregion
17
- this.parameters = {};
18
- }
19
- }
20
- Models.MethodConfig = MethodConfig;
21
- /**
22
- * @deprecated
23
- */
24
- class ClassConfig {
25
- constructor() {
26
- // @ts-ignore
27
- this.singleton = void 0;
28
- this.injections = [];
29
- this.vChildren = [];
30
- this.methods = {};
31
- }
3
+ /* */
4
+ const REGISTRY_SYMBOL = Symbol.for('TAON.CLASS_REGISTRY');
5
+ function getRegistry() {
6
+ const g = globalThis;
7
+ if (!g[REGISTRY_SYMBOL]) {
8
+ g[REGISTRY_SYMBOL] = new Map();
32
9
  }
33
- Models.ClassConfig = ClassConfig;
34
- })(Models || (Models = {}));
35
-
36
- const SYMBOL = {
37
- MODELS_MAPPING: Symbol(),
38
- DEFAULT_MODEL: Symbol(),
39
- STORAGE: 'classesstorage',
40
- CLASSES: 'classes',
41
- ClassNameStaticProperty: CoreModels.ClassNameStaticProperty,
42
- };
43
-
44
- function defaultValues() {
45
- return _.cloneDeep({
46
- [SYMBOL.CLASSES]: []
47
- });
10
+ return g[REGISTRY_SYMBOL];
48
11
  }
49
- function getStorage(property) {
50
- /* */
51
- /* */
52
- /* */
53
- /* */
54
- if (typeof property === 'string') {
55
- const storageInClassStaticProp = getStorage();
56
- return storageInClassStaticProp[property];
12
+ const classes = getRegistry();
13
+ function getClassName(target) {
14
+ if (_.isNil(target)) {
15
+ return void 0;
57
16
  }
58
- if (typeof defaultValues.prototype[SYMBOL.STORAGE] === 'undefined') {
59
- defaultValues.prototype[SYMBOL.STORAGE] = defaultValues();
17
+ if (_.isString(target)) {
18
+ return target;
60
19
  }
61
- return defaultValues.prototype[SYMBOL.STORAGE];
62
- }
63
-
64
- function getClasses$1() {
65
- const s = getStorage();
66
- return s[SYMBOL.CLASSES];
67
- }
68
- // @ts-ignore
69
- function setClassName(target, className, options) {
70
- let { classFamily, uniqueKey, classNameInBrowser, singleton } = options || {
71
- classFamily: void 0,
72
- uniqueKey: 'id',
73
- classNameInBrowser: void 0,
74
- singleton: void 0,
75
- autoinstance: false
76
- };
77
- if (!_.isUndefined(singleton) && _.isBoolean(singleton) && singleton) {
78
- singleton = 'first-instance';
20
+ if (target === Date) {
21
+ return 'Date';
79
22
  }
80
- if (!uniqueKey) {
81
- uniqueKey = 'id';
23
+ if (target === FormData) {
24
+ return 'FormData';
82
25
  }
83
- if (target) {
84
- const config = _.first(CLASSNAME.getClassConfig(target));
85
- config.className = className;
86
- config.uniqueKey = uniqueKey;
87
- config.classNameInBrowser = classNameInBrowser;
88
- // console.log(`Setting class Name to "${target.name}"`)
26
+ if (!_.isFunction(target)) {
27
+ // console.log(target);
28
+ Helpers.log(`[typescript-class-helpers][getClassName] target is not a class`);
29
+ return void 0;
89
30
  }
90
- const existed = getClasses$1()
91
- .find(f => f.className === className);
92
- if (existed) {
93
- existed.target = target;
31
+ if (!_.isNil(target[CoreModels.ClassNameStaticProperty])) {
32
+ return target[CoreModels.ClassNameStaticProperty];
94
33
  }
95
- else {
96
- const res = {
97
- className,
98
- classNameInBrowser,
99
- target,
100
- uniqueKey,
101
- classFamily
102
- };
103
- if (_.isUndefined(classFamily)) {
104
- Object.defineProperty(res, 'classFamily', {
105
- get: function () {
106
- const parent = Object.getPrototypeOf(target);
107
- if (!_.isFunction(parent) || parent.name === 'Object' || parent.name === '') {
108
- return className;
109
- }
110
- const classNameNew = CLASSNAME.getClassName(parent);
111
- return CLASSNAME.getClassFamilyByClassName(classNameNew);
112
- }
113
- });
114
- }
115
- getClasses$1().push(res);
34
+ // special thing when cloning classes
35
+ if (target.name?.startsWith('class_')) {
36
+ return '';
116
37
  }
117
- const Original = target;
118
- if (singleton === 'first-instance' || singleton === 'last-instance') {
119
- const obj = {
120
- // @ts-ignore
121
- decoratedConstructor: function (...args) {
122
- // console.log(`DECORATED CONSTRUCTOR OF ${Original.name}`)
123
- const context = Original.apply(this, args);
124
- const existedSingleton = CLASS.getSingleton(Original);
125
- if (!existedSingleton || singleton === 'last-instance') {
126
- CLASS.setSingletonObj(Original, this);
127
- CLASS.setSingletonObj(obj.decoratedConstructor, this);
128
- // console.log(`Singleton created for "${className}", mode: ${singleton} `);
129
- }
130
- else {
131
- // console.log('ingleton exists')
132
- }
133
- return context;
134
- }
135
- };
136
- // copy prototype so intanceof operator still works
137
- obj.decoratedConstructor.prototype = Original.prototype;
138
- // @ts-ignore
139
- Object.keys(Original).forEach((name) => { obj.decoratedConstructor[name] = Original[name]; });
140
- Object.defineProperty(obj.decoratedConstructor, 'name', {
141
- value: className,
142
- configurable: true,
143
- });
144
- // (obj.decoratedConstructor as any).name = className;
145
- // console.log('return new contruor', decoratedConstructor)
146
- return obj.decoratedConstructor;
38
+ return;
39
+ }
40
+ function getFromObject(o) {
41
+ if (_.isUndefined(o) || _.isNull(o)) {
42
+ return;
147
43
  }
148
- else if (singleton === 'autoinstance') {
149
- // console.log(`AUTOINSTANCE FOR ${target.name}`)
150
- const auto = new Original();
151
- CLASS.setSingletonObj(Original, auto);
152
- // console.log(`Singleton created for "${className}", mode: ${singleton} `)
44
+ if (o.constructor) {
45
+ return o.constructor;
153
46
  }
47
+ const p = Object.getPrototypeOf(o);
48
+ return p && p.constructor;
154
49
  }
155
-
156
- const registerd = {
157
- configs: [],
158
- classes: [],
159
- };
160
-
161
- const ERROR_MSG_CLASS_WITHOUT_DECORATOR = `[typescript-class-helpers][getClassName(...)](PRODUCTION MODE ERROR)
162
- Please use decoartor @CLASSNAME for each entity or controller
163
- This is preventing class name problem in minified code.
164
-
165
- import { CLASS } from 'typescript-class-helpers';
166
-
167
- @CLASS.NAME('ExampleClass')
168
- class ExampleClass {
169
- ...
170
- }
171
- `;
172
-
173
- /* */
174
- /* */
175
- function getClasses() {
176
- const s = getStorage();
177
- return s[SYMBOL.CLASSES];
178
- }
179
- var CLASSNAME;
180
- (function (CLASSNAME_1) {
181
- function getClassConfig(target, configs = [], callerTarget) {
182
- if (!_.isFunction(target)) {
183
- throw `[typescript-class-helper][getClassConfig] Cannot get class config from: ${target}`;
184
- }
185
- let config;
186
- const parentClass = Object.getPrototypeOf(target);
187
- const isValidParent = _.isFunction(parentClass) && parentClass.name !== '';
188
- if (registerd.classes.includes(target)) {
189
- config =
190
- registerd.configs[registerd.classes.findIndex(c => c === target)];
191
- }
192
- else {
193
- config = new Models.ClassConfig();
194
- config.classReference = target;
195
- registerd.classes.push(target);
196
- }
197
- registerd.configs[registerd.classes.findIndex(c => c === target)] = config;
198
- if (callerTarget) {
199
- const callerTargetConfig = registerd.configs[registerd.classes.findIndex(c => c === callerTarget)];
200
- if (!config.vChildren.includes(callerTargetConfig)) {
201
- config.vChildren.push(callerTargetConfig);
202
- }
203
- callerTargetConfig.vParent = config;
204
- }
205
- configs.push(config);
206
- return isValidParent
207
- ? getClassConfig(parentClass, configs, target)
208
- : configs;
209
- }
210
- CLASSNAME_1.getClassConfig = getClassConfig;
50
+ const notAllowedAsMethodName = [
51
+ 'length',
52
+ 'name',
53
+ 'arguments',
54
+ 'caller',
55
+ 'constructor',
56
+ 'apply',
57
+ 'bind',
58
+ 'call',
59
+ 'toString',
60
+ '__defineGetter__',
61
+ '__defineSetter__',
62
+ 'hasOwnProperty',
63
+ '__lookupGetter__',
64
+ '__lookupSetter__',
65
+ 'isPrototypeOf',
66
+ 'propertyIsEnumerable',
67
+ 'valueOf',
68
+ '__proto__',
69
+ 'toLocaleString',
70
+ ];
71
+ var CLASS;
72
+ (function (CLASS) {
211
73
  /**
212
74
  * PLEASE PROVIDE NAME AS TYPED STRING, NOT VARIABLE
213
75
  * Decorator requred for production mode
214
76
  * @param name Name of class
215
77
  */
216
- function CLASSNAME(className, options) {
78
+ function NAME(className) {
217
79
  return function (target) {
218
- // console.log(`CLASSNAME Inited ${className}`)
219
- return setClassName(target, className, options);
80
+ return setClassName(target, className);
220
81
  };
221
82
  }
222
- CLASSNAME_1.CLASSNAME = CLASSNAME;
223
- function getClassName(target, production = false) {
224
- if (_.isNil(target)) {
225
- // console.log(target);
226
- // Helpers.warn(`[typescript-class-helpers][getClassName] target is nil`)
227
- return void 0;
228
- }
229
- if (_.isString(target)) {
230
- // console.log(target);
231
- Helpers.log(`[typescript-class-helpers][getClassName] target is string: '${target}', produciton: ${production}`);
232
- return target;
233
- }
234
- if (target === Date) {
235
- return 'Date';
236
- }
237
- if (target === FormData) {
238
- return 'FormData';
239
- }
240
- if (!_.isFunction(target)) {
241
- // console.log(target);
242
- Helpers.log(`[typescript-class-helpers][getClassName] target is not a class`);
243
- return void 0;
244
- }
245
- if (target[SYMBOL.ClassNameStaticProperty]) {
246
- return target[SYMBOL.ClassNameStaticProperty];
247
- }
248
- const configs = getClassConfig(target);
249
- const config = _.first(configs);
250
- const classNameInBrowser = config?.classNameInBrowser;
251
- if (UtilsOs.isBrowser && _.isString(classNameInBrowser)) {
252
- return classNameInBrowser;
253
- }
254
- const className = config?.className;
255
- if (typeof className === 'string') {
256
- return className;
257
- }
258
- if (production) {
259
- console.log('class without @CLASS.NAME deocrator', target);
260
- throw new Error(ERROR_MSG_CLASS_WITHOUT_DECORATOR);
261
- }
262
- else {
263
- // Helpers.log('check for ' + target.name)
264
- // setTimeout(() => {
265
- // // Helpers.log('check for ' + target.name + ' === ' + config.className)/
266
- // // TODO this may work, but not yet in singleton/morphi
267
- // if (!config.className) {
268
- // if (target?.name && target.name !== 'Object') {
269
- // ConfigHelpers.log(`[typescript-class-helpers] Please use @CLASS.NAME`
270
- // + `('${(target?.name && !!target.name) ? target.name : '...'}') decorator for class ${target?.name}`)
271
- // }
272
- // }
273
- // })
274
- }
275
- // special thing when cloning classes
276
- if (target.name?.startsWith('class_')) {
277
- return '';
278
- }
279
- return target.name;
83
+ CLASS.NAME = NAME;
84
+ function setName(target, className) {
85
+ setClassName(target, className);
280
86
  }
281
- CLASSNAME_1.getClassName = getClassName;
282
- // @ts-ignore
283
- function getObjectIndexPropertyValue(obj) {
284
- const className = TchHelpers.getNameFromObject(obj);
285
- // console.log('className',className)
286
- let c = getClasses().find(c => c.className === className);
287
- // console.log('c',c)
288
- if (c) {
289
- return c.uniqueKey;
87
+ CLASS.setName = setName;
88
+ function getClassNameFromObjInstanceOrClassFn(target) {
89
+ if (typeof target === 'object') {
90
+ return getNameFromObject(target);
290
91
  }
92
+ return getClassName(target);
291
93
  }
292
- CLASSNAME_1.getObjectIndexPropertyValue = getObjectIndexPropertyValue;
293
- // @ts-ignore
294
- function getClassFamilyByClassName(className) {
295
- let c = getClasses().find(c => c.className === className);
296
- // console.log('getClasses()', getClasses())
297
- if (c) {
298
- return c.classFamily;
299
- }
94
+ CLASS.getClassNameFromObjInstanceOrClassFn = getClassNameFromObjInstanceOrClassFn;
95
+ function setClassName(target, className) {
96
+ target[CoreModels.ClassNameStaticProperty] = className;
97
+ classes.set(className, target);
300
98
  }
301
- CLASSNAME_1.getClassFamilyByClassName = getClassFamilyByClassName;
302
- // @ts-ignore
303
- function getObjectClassFamily(obj) {
304
- const className = TchHelpers.getNameFromObject(obj);
305
- // console.log('className',className)
306
- let c = getClasses().find(c => c.className === className);
307
- // console.log('c',c)
308
- if (c) {
309
- return c.classFamily;
310
- }
311
- }
312
- CLASSNAME_1.getObjectClassFamily = getObjectClassFamily;
313
- function getObjectIndexValue(obj) {
314
- const className = TchHelpers.getNameFromObject(obj);
315
- // console.log('className',className)
316
- let c = getClasses().find(c => c.className === className);
317
- // console.log('c',c)
318
- if (c && _.isString(c.uniqueKey)) {
319
- return obj[c.uniqueKey];
320
- }
321
- }
322
- CLASSNAME_1.getObjectIndexValue = getObjectIndexValue;
323
- function getClassBy(className) {
99
+ CLASS.setClassName = setClassName;
100
+ function getBy(className) {
324
101
  let res;
325
102
  if (Array.isArray(className)) {
326
103
  if (className.length !== 1) {
@@ -344,93 +121,11 @@ var CLASSNAME;
344
121
  if (className === 'FormData') {
345
122
  res = FormData;
346
123
  }
347
- let c = getClasses().find(c => c.className === className);
348
- if (c) {
349
- res = c.target;
350
- }
351
- // console.log(`getClassBy "${className} return \n\n ${res} \n\n`)
352
- // @ts-ignore
353
- return res;
354
- }
355
- CLASSNAME_1.getClassBy = getClassBy;
356
- })(CLASSNAME || (CLASSNAME = {}));
357
-
358
- /**
359
- * @DEPRECATED
360
- * Describe fields assigned in class
361
- */
362
- const FRegEx = new RegExp(/(?:this\.)(.+?(?= ))/g);
363
- function describeFromClassStringify(target, parent = false) {
364
- // @ts-ignore
365
- var result = [];
366
- if (parent) {
367
- var proto = Object.getPrototypeOf(target.prototype);
368
- if (proto) {
369
- // @ts-ignore
370
- result = result.concat(describeFromClassStringify(proto.constructor, parent));
371
- }
372
- }
373
- const classString = target.toString();
374
- const matches = classString.match(FRegEx) || [];
375
- // console.log({
376
- // classString,
377
- // });
378
- result = result.concat(matches);
379
- return result.map(prop => prop
380
- .replace('this.', '')
381
- .replace('.', '')
382
- .replace(')', '')
383
- .replace('(', ''));
384
- }
385
- /**
386
- * Describe fields assigne through @DefaultModelWithMapping decorator
387
- * without functions
388
- */
389
- function describeByDefaultModelsAndMapping(target) {
390
- let res = {};
391
- if (target) {
392
- // @ts-ignore
393
- if (target[SYMBOL.DEFAULT_MODEL]) {
394
- // @ts-ignore
395
- Object.keys(target[SYMBOL.DEFAULT_MODEL])
396
- .filter(key => {
397
- // @ts-ignore
398
- return !_.isFunction(target[SYMBOL.DEFAULT_MODEL][key]);
399
- })
400
- .forEach(key => {
401
- // @ts-ignore
402
- return res[key] = null;
403
- });
404
- }
405
- // @ts-ignore
406
- let mapping = target[SYMBOL.MODELS_MAPPING];
407
- if (_.isArray(mapping)) {
408
- mapping.forEach(m => {
409
- Object.keys(m)
410
- .forEach(key => {
411
- // @ts-ignore
412
- res[key] = null;
413
- });
414
- });
415
- }
416
- else if (mapping) {
417
- Object.keys(mapping)
418
- .forEach(key => {
419
- // @ts-ignore
420
- res[key] = null;
421
- });
422
- }
124
+ const classFromMap = classes.get(className);
125
+ return classFromMap ? classFromMap : res;
423
126
  }
424
- let propNames = Object.keys(res).filter(f => !!f);
425
- propNames = (!propNames.includes('id') ? ['id'] : []).concat(propNames);
426
- return propNames;
427
- }
428
-
429
- class TchHelpers {
430
- static getBy(className) {
431
- return CLASSNAME.getClassBy(className);
432
- }
433
- static getFromObject(o) {
127
+ CLASS.getBy = getBy;
128
+ function getFromObject(o) {
434
129
  if (_.isUndefined(o) || _.isNull(o)) {
435
130
  return;
436
131
  }
@@ -440,183 +135,49 @@ class TchHelpers {
440
135
  const p = Object.getPrototypeOf(o);
441
136
  return p && p.constructor;
442
137
  }
443
- static getName(target, production = false) {
444
- return CLASSNAME.getClassName(target, production);
445
- }
446
- static getNameFromObject(o) {
447
- const fnCLass = this.getFromObject(o);
448
- return this.getName(fnCLass);
449
- }
450
- static getConfigs(target) {
451
- return CLASSNAME.getClassConfig(target);
452
- }
453
- static describeProperites(target) {
454
- const d1 = describeFromClassStringify(target);
455
- const d2 = describeByDefaultModelsAndMapping(target);
456
- let uniq = {};
457
- // @ts-ignore
458
- d1.concat(d2).forEach(p => uniq[p] = p);
459
- return Object.keys(uniq)
460
- .filter(d => !!d)
461
- .filter(d => typeof target.prototype[d] !== 'function');
462
- }
463
- }
464
- const notAllowedAsMethodName = [
465
- 'length', 'name',
466
- 'arguments', 'caller',
467
- 'constructor', 'apply',
468
- 'bind', 'call',
469
- 'toString',
470
- '__defineGetter__',
471
- '__defineSetter__', 'hasOwnProperty',
472
- '__lookupGetter__', '__lookupSetter__',
473
- 'isPrototypeOf', 'propertyIsEnumerable',
474
- 'valueOf', '__proto__', 'toLocaleString',
475
- ];
476
- const getMethodsNames = (classOrClassInstance, allMethodsNames = []) => {
477
- if (!classOrClassInstance) {
478
- return allMethodsNames;
479
- }
480
- const isClassFunction = _.isFunction(classOrClassInstance);
481
- const classFun = (isClassFunction ? classOrClassInstance : Object.getPrototypeOf(classOrClassInstance));
482
- const objectToCheck = isClassFunction ? classOrClassInstance?.prototype : classOrClassInstance;
483
- const prototypeObj = Object.getPrototypeOf(objectToCheck || {});
484
- const properties = _.uniq([
485
- ...Object.getOwnPropertyNames(objectToCheck || {}),
486
- ...Object.getOwnPropertyNames(prototypeObj || {}),
487
- ...Object.keys(objectToCheck || {}),
488
- ...Object.keys(prototypeObj || {}),
489
- ])
490
- .filter(f => !!f && !notAllowedAsMethodName.includes(f));
491
- properties.filter((methodName) => typeof objectToCheck[methodName] === 'function').forEach(p => allMethodsNames.push(p));
492
- if (!classFun || !classFun.constructor || classFun?.constructor?.name === 'Object') {
493
- return allMethodsNames;
494
- }
495
- return getMethodsNames(Object.getPrototypeOf(classFun), allMethodsNames);
496
- };
497
- const CLASS = {
498
- NAME: CLASSNAME.CLASSNAME,
499
- setName: setClassName,
500
- getBy: TchHelpers.getBy,
501
- /**
502
- * @deprecated
503
- */
504
- getSingleton(target) {
505
- if (typeof target !== 'function') {
506
- console.error(`[typescript-class-helpers][setSingletonObj] Type of target is not a function`);
507
- return;
508
- }
509
- const config = TchHelpers.getConfigs(target)[0];
510
- // console.log(`getSingleton for ${target.name}: `, config.singleton)
511
- return config.singleton;
512
- },
513
- /**
514
- * @deprecated
515
- */
516
- setSingletonObj(target, singletonObject) {
517
- // console.log('SET SINGLETON', singletonObject)
518
- if (typeof target !== 'function') {
519
- console.error(`[typescript-class-helpers][setSingletonObj] Type of target is not a function`);
520
- return;
521
- }
522
- if (Array.isArray(singletonObject)) {
523
- console.error(`[typescript-class-helpers][setSingletonObj] Singleton instance cant be an array`);
524
- return;
525
- }
526
- if (typeof singletonObject !== 'object') {
527
- console.error(`[typescript-class-helpers][setSingletonObj] Singleton instance cant must be a object`);
528
- return;
529
- }
530
- const className = CLASS.getName(target);
531
- // console.log(`SINGLETON SET for TARGET ${className}`)
532
- const config = TchHelpers.getConfigs(target)[0];
533
- if (config.singleton) {
534
- console.warn(`[typescript-class-helpers] You are trying to set singleton of "${className}" second time with different object.`);
535
- }
536
- config.singleton = singletonObject;
537
- },
538
- /**
539
- * @deprecated
540
- */
541
- getConfigs: TchHelpers.getConfigs,
542
- /**
543
- * @deprecated
544
- */
545
- getConfig: (target) => {
546
- return _.first(TchHelpers.getConfigs(target));
547
- },
548
- getMethodsNames(classOrClassInstance) {
549
- return getMethodsNames(classOrClassInstance);
550
- },
551
- getFromObject: TchHelpers.getFromObject,
552
- getName: TchHelpers.getName,
553
- getNameFromObject: TchHelpers.getNameFromObject,
554
- describeProperites: TchHelpers.describeProperites,
555
- /**
556
- * @deprecated
557
- */
558
- OBJECT: (obj) => {
559
- return {
560
- get indexValue() {
561
- return CLASSNAME.getObjectIndexValue(obj);
562
- },
563
- get indexProperty() {
564
- return CLASSNAME.getObjectIndexPropertyValue(obj);
565
- },
566
- get isClassObject() {
567
- if (!_.isObject(obj) || _.isArray(obj) || _.isRegExp(obj) ||
568
- _.isBuffer(obj) || _.isArrayBuffer(obj)) {
569
- return false;
570
- }
571
- if (_.isDate(obj)) {
572
- return true;
573
- }
574
- const className = CLASS.getNameFromObject(obj);
575
- return _.isString(className) && className !== 'Object';
576
- },
577
- isEqual: (anotherObj, compareDeep = false) => {
578
- if (!CLASS.OBJECT(obj).isClassObject || !CLASS.OBJECT(anotherObj).isClassObject) {
579
- return false;
580
- }
581
- if (obj === anotherObj) {
582
- // console.log(`EQ v1: , v2: - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`, obj, anotherObj)
583
- return true;
584
- }
585
- const v1 = CLASSNAME.getObjectIndexValue(obj);
586
- const v2 = CLASSNAME.getObjectIndexValue(anotherObj);
587
- const f1 = CLASSNAME.getObjectClassFamily(obj);
588
- const f2 = CLASSNAME.getObjectClassFamily(anotherObj);
589
- const isFamilyDiff = (!_.isString(f1) || !_.isString(f2) || (f1 !== f2));
590
- // console.log(`DIFF FAMILY ${isFamilyDiff} v1: ${CLASSNAME.getObjectClassFamily(obj)}, v2: ${CLASSNAME.getObjectClassFamily(anotherObj)} - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`)
591
- if (isFamilyDiff) {
592
- // console.log(`DIFF v1: ${v1}, v2: ${v2} - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`)
593
- return false;
594
- }
595
- if (!CLASS.OBJECT(obj).isClassObject || !CLASS.OBJECT(anotherObj).isClassObject) {
596
- // console.log(`NOT CLASS v1: ${v1}, v2: ${v2} - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`)
597
- return false;
598
- }
599
- // console.log(`v1: ${v1} ,class ${CLASS.getNameFromObject(obj)} ,prop: ${CLASS.OBJECT(obj).indexProperty}`)
600
- // console.log(`v2: ${v2} ,class ${CLASS.getNameFromObject(anotherObj)} ,prop: ${CLASS.OBJECT(anotherObj).indexProperty}`)
601
- // console.log(`v1: ${v1}, v2: ${v2} - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`)
602
- // console.log('')
603
- if ((_.isNumber(v1) && _.isNumber(v2)) || (_.isString(v1) && _.isString(v2))) {
604
- const res = (v1 === v2);
605
- // @ts-ignore
606
- return res;
607
- }
608
- if (compareDeep) {
609
- return _.isEqual(v1, v2);
610
- }
611
- return false;
612
- }
613
- };
614
- }
615
- };
138
+ CLASS.getFromObject = getFromObject;
139
+ function getName(target) {
140
+ return getClassName(target);
141
+ }
142
+ CLASS.getName = getName;
143
+ function getNameFromObject(o) {
144
+ const fnCLass = getFromObject(o);
145
+ return getName(fnCLass);
146
+ }
147
+ CLASS.getNameFromObject = getNameFromObject;
148
+ CLASS.getMethodsNames = (classOrClassInstance, allMethodsNames = []) => {
149
+ if (!classOrClassInstance) {
150
+ return allMethodsNames;
151
+ }
152
+ const isClassFunction = _.isFunction(classOrClassInstance);
153
+ const classFun = isClassFunction
154
+ ? classOrClassInstance
155
+ : Object.getPrototypeOf(classOrClassInstance);
156
+ const objectToCheck = isClassFunction
157
+ ? classOrClassInstance?.prototype
158
+ : classOrClassInstance;
159
+ const prototypeObj = Object.getPrototypeOf(objectToCheck || {});
160
+ const properties = _.uniq([
161
+ ...Object.getOwnPropertyNames(objectToCheck || {}),
162
+ ...Object.getOwnPropertyNames(prototypeObj || {}),
163
+ ...Object.keys(objectToCheck || {}),
164
+ ...Object.keys(prototypeObj || {}),
165
+ ]).filter(f => !!f && !notAllowedAsMethodName.includes(f));
166
+ properties
167
+ .filter(methodName => typeof objectToCheck[methodName] === 'function')
168
+ .forEach(p => allMethodsNames.push(p));
169
+ if (!classFun ||
170
+ !classFun.constructor ||
171
+ classFun?.constructor?.name === 'Object') {
172
+ return allMethodsNames;
173
+ }
174
+ return CLASS.getMethodsNames(Object.getPrototypeOf(classFun), allMethodsNames);
175
+ };
176
+ })(CLASS || (CLASS = {}));
616
177
 
617
178
  /**
618
179
  * Generated bundle index. Do not edit.
619
180
  */
620
181
 
621
- export { CLASS, Models, SYMBOL, TchHelpers };
182
+ export { CLASS, getClassName, getFromObject };
622
183
  //# sourceMappingURL=typescript-class-helpers-websql.mjs.map