typescript-class-helpers 13.0.24 → 13.0.26

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 (45) hide show
  1. package/app.d.ts +1 -0
  2. package/app.js +5 -33
  3. package/app.js.map +1 -1
  4. package/browser/esm2020/lib/errors-messages.mjs +2 -2
  5. package/browser/fesm2015/typescript-class-helpers.mjs +1 -1
  6. package/browser/fesm2015/typescript-class-helpers.mjs.map +1 -1
  7. package/browser/fesm2020/typescript-class-helpers.mjs +1 -1
  8. package/browser/fesm2020/typescript-class-helpers.mjs.map +1 -1
  9. package/browser/lib/errors-messages.d.ts +1 -1
  10. package/client/esm2020/lib/errors-messages.mjs +2 -2
  11. package/client/fesm2015/typescript-class-helpers.mjs +1 -1
  12. package/client/fesm2015/typescript-class-helpers.mjs.map +1 -1
  13. package/client/fesm2020/typescript-class-helpers.mjs +1 -1
  14. package/client/fesm2020/typescript-class-helpers.mjs.map +1 -1
  15. package/client/lib/errors-messages.d.ts +1 -1
  16. package/package.json +3 -3
  17. package/tmp-environment.json +47 -39
  18. package/websql/README.md +24 -0
  19. package/websql/esm2020/lib/classname.mjs +172 -0
  20. package/websql/esm2020/lib/describe-class.mjs +64 -0
  21. package/websql/esm2020/lib/errors-messages.mjs +12 -0
  22. package/websql/esm2020/lib/index.mjs +144 -0
  23. package/websql/esm2020/lib/models.mjs +24 -0
  24. package/websql/esm2020/lib/registerd-db.mjs +5 -0
  25. package/websql/esm2020/lib/set-class-name.mjs +97 -0
  26. package/websql/esm2020/lib/storage.mjs +22 -0
  27. package/websql/esm2020/lib/symbols.mjs +7 -0
  28. package/websql/esm2020/public-api.mjs +2 -0
  29. package/websql/esm2020/typescript-class-helpers.mjs +5 -0
  30. package/websql/fesm2015/typescript-class-helpers.mjs +531 -0
  31. package/websql/fesm2015/typescript-class-helpers.mjs.map +1 -0
  32. package/websql/fesm2020/typescript-class-helpers.mjs +531 -0
  33. package/websql/fesm2020/typescript-class-helpers.mjs.map +1 -0
  34. package/websql/lib/classname.d.ts +16 -0
  35. package/websql/lib/describe-class.d.ts +6 -0
  36. package/websql/lib/errors-messages.d.ts +1 -0
  37. package/websql/lib/index.d.ts +33 -0
  38. package/websql/lib/models.d.ts +57 -0
  39. package/websql/lib/registerd-db.d.ts +5 -0
  40. package/websql/lib/set-class-name.d.ts +2 -0
  41. package/websql/lib/storage.d.ts +1 -0
  42. package/websql/lib/symbols.d.ts +6 -0
  43. package/websql/package.json +31 -0
  44. package/websql/public-api.d.ts +1 -0
  45. package/websql/typescript-class-helpers.d.ts +5 -0
@@ -0,0 +1,531 @@
1
+ import { _, Helpers } from 'tnp-core/websql';
2
+ export * from 'enum-values';
3
+
4
+ var Models;
5
+ (function (Models) {
6
+ class ParamConfig {
7
+ }
8
+ Models.ParamConfig = ParamConfig;
9
+ class MethodConfig {
10
+ constructor() {
11
+ //#endregion
12
+ this.parameters = {};
13
+ }
14
+ }
15
+ Models.MethodConfig = MethodConfig;
16
+ class ClassConfig {
17
+ constructor() {
18
+ // @ts-ignore
19
+ this.singleton = void 0;
20
+ this.injections = [];
21
+ this.vChildren = [];
22
+ this.methods = {};
23
+ }
24
+ }
25
+ Models.ClassConfig = ClassConfig;
26
+ })(Models || (Models = {}));
27
+
28
+ const SYMBOL = {
29
+ MODELS_MAPPING: Symbol(),
30
+ DEFAULT_MODEL: Symbol(),
31
+ STORAGE: 'classesstorage',
32
+ CLASSES: 'classes',
33
+ };
34
+
35
+ function defaultValues() {
36
+ return _.cloneDeep({
37
+ [SYMBOL.CLASSES]: []
38
+ });
39
+ }
40
+ function getStorage(property) {
41
+ /* */
42
+ /* */
43
+ /* */
44
+ /* */
45
+ if (typeof property === 'string') {
46
+ const storageInClassStaticProp = getStorage();
47
+ return storageInClassStaticProp[property];
48
+ }
49
+ if (typeof defaultValues.prototype[SYMBOL.STORAGE] === 'undefined') {
50
+ defaultValues.prototype[SYMBOL.STORAGE] = defaultValues();
51
+ }
52
+ return defaultValues.prototype[SYMBOL.STORAGE];
53
+ }
54
+
55
+ function getClasses$1() {
56
+ const s = getStorage();
57
+ return s[SYMBOL.CLASSES];
58
+ }
59
+ // @ts-ignore
60
+ function setClassName(target, className, options) {
61
+ let { classFamily, uniqueKey, classNameInBrowser, singleton } = options || {
62
+ classFamily: void 0,
63
+ uniqueKey: 'id',
64
+ classNameInBrowser: void 0,
65
+ singleton: void 0,
66
+ autoinstance: false
67
+ };
68
+ if (!_.isUndefined(singleton) && _.isBoolean(singleton) && singleton) {
69
+ singleton = 'first-instance';
70
+ }
71
+ if (!uniqueKey) {
72
+ uniqueKey = 'id';
73
+ }
74
+ if (target) {
75
+ const config = _.first(CLASSNAME.getClassConfig(target));
76
+ config.className = className;
77
+ config.uniqueKey = uniqueKey;
78
+ config.classNameInBrowser = classNameInBrowser;
79
+ // console.log(`Setting class Name to "${target.name}"`)
80
+ }
81
+ const existed = getClasses$1()
82
+ .find(f => f.className === className);
83
+ if (existed) {
84
+ existed.target = target;
85
+ }
86
+ else {
87
+ const res = {
88
+ className,
89
+ classNameInBrowser,
90
+ target,
91
+ uniqueKey,
92
+ classFamily
93
+ };
94
+ if (_.isUndefined(classFamily)) {
95
+ Object.defineProperty(res, 'classFamily', {
96
+ get: function () {
97
+ const parent = Object.getPrototypeOf(target);
98
+ if (!_.isFunction(parent) || parent.name === 'Object' || parent.name === '') {
99
+ return className;
100
+ }
101
+ const classNameNew = CLASSNAME.getClassName(parent);
102
+ return CLASSNAME.getClassFamilyByClassName(classNameNew);
103
+ }
104
+ });
105
+ }
106
+ getClasses$1().push(res);
107
+ }
108
+ const Original = target;
109
+ if (singleton === 'first-instance' || singleton === 'last-instance') {
110
+ const obj = {
111
+ // @ts-ignore
112
+ decoratedConstructor: function (...args) {
113
+ // console.log(`DECORATED CONSTRUCTOR OF ${Original.name}`)
114
+ const context = Original.apply(this, args);
115
+ const existedSingleton = CLASS.getSingleton(Original);
116
+ if (!existedSingleton || singleton === 'last-instance') {
117
+ CLASS.setSingletonObj(Original, this);
118
+ CLASS.setSingletonObj(obj.decoratedConstructor, this);
119
+ // console.log(`Singleton created for "${className}", mode: ${singleton} `);
120
+ }
121
+ else {
122
+ // console.log('ingleton exists')
123
+ }
124
+ return context;
125
+ }
126
+ };
127
+ // copy prototype so intanceof operator still works
128
+ obj.decoratedConstructor.prototype = Original.prototype;
129
+ // @ts-ignore
130
+ Object.keys(Original).forEach((name) => { obj.decoratedConstructor[name] = Original[name]; });
131
+ Object.defineProperty(obj.decoratedConstructor, 'name', {
132
+ value: className,
133
+ configurable: true,
134
+ });
135
+ // (obj.decoratedConstructor as any).name = className;
136
+ // console.log('return new contruor', decoratedConstructor)
137
+ return obj.decoratedConstructor;
138
+ }
139
+ else if (singleton === 'autoinstance') {
140
+ // console.log(`AUTOINSTANCE FOR ${target.name}`)
141
+ const auto = new Original();
142
+ CLASS.setSingletonObj(Original, auto);
143
+ // console.log(`Singleton created for "${className}", mode: ${singleton} `)
144
+ }
145
+ }
146
+
147
+ const registerd = {
148
+ configs: [],
149
+ classes: [],
150
+ };
151
+
152
+ const ERROR_MSG_CLASS_WITHOUT_DECORATOR = `[typescript-class-helpers][getClassName(...)](PRODUCTION MODE ERROR)
153
+ Please use decoartor @CLASSNAME for each entity or controller
154
+ This is preventing class name problem in minified code.
155
+
156
+ import { CLASS } from 'typescript-class-helpers';
157
+
158
+ @CLASS.NAME('ExampleClass')
159
+ class ExampleClass {
160
+ ...
161
+ }
162
+ `;
163
+
164
+ function getClasses() {
165
+ const s = getStorage();
166
+ return s[SYMBOL.CLASSES];
167
+ }
168
+ var CLASSNAME;
169
+ (function (CLASSNAME_1) {
170
+ function getClassConfig(target, configs = [], callerTarget) {
171
+ if (!_.isFunction(target)) {
172
+ throw `[typescript-class-helper][getClassConfig] Cannot get class config from: ${target}`;
173
+ }
174
+ let config;
175
+ const parentClass = Object.getPrototypeOf(target);
176
+ const isValidParent = (_.isFunction(parentClass) && parentClass.name !== '');
177
+ if (registerd.classes.includes(target)) {
178
+ config = registerd.configs[registerd.classes.findIndex(c => c === target)];
179
+ }
180
+ else {
181
+ config = new Models.ClassConfig();
182
+ config.classReference = target;
183
+ registerd.classes.push(target);
184
+ }
185
+ registerd.configs[registerd.classes.findIndex(c => c === target)] = config;
186
+ if (callerTarget) {
187
+ const callerTargetConfig = registerd.configs[registerd.classes.findIndex(c => c === callerTarget)];
188
+ if (!config.vChildren.includes(callerTargetConfig)) {
189
+ config.vChildren.push(callerTargetConfig);
190
+ }
191
+ callerTargetConfig.vParent = config;
192
+ }
193
+ configs.push(config);
194
+ return isValidParent ? getClassConfig(parentClass, configs, target) : configs;
195
+ }
196
+ CLASSNAME_1.getClassConfig = getClassConfig;
197
+ /**
198
+ * PLEASE PROVIDE NAME AS TYPED STRING, NOT VARIABLE
199
+ * Decorator requred for production mode
200
+ * @param name Name of class
201
+ */
202
+ function CLASSNAME(className, options) {
203
+ return function (target) {
204
+ // console.log(`CLASSNAME Inited ${className}`)
205
+ return setClassName(target, className, options);
206
+ };
207
+ }
208
+ CLASSNAME_1.CLASSNAME = CLASSNAME;
209
+ function getClassName(target, production = false) {
210
+ if (_.isNil(target)) {
211
+ // console.log(target);
212
+ // Helpers.warn(`[typescript-class-helpers][getClassName] target is nil`)
213
+ return void 0;
214
+ }
215
+ if (_.isString(target)) {
216
+ console.log(target);
217
+ Helpers.warn(`[typescript-class-helpers][getClassName] target is string: '${target}', produciton: ${production}`);
218
+ return target;
219
+ }
220
+ if (!_.isFunction(target)) {
221
+ console.log(target);
222
+ Helpers.warn(`[typescript-class-helpers][getClassName] target is not a class`);
223
+ return void 0;
224
+ }
225
+ const configs = getClassConfig(target);
226
+ const config = _.first(configs);
227
+ const classNameInBrowser = config?.classNameInBrowser;
228
+ if (Helpers.isBrowser && _.isString(classNameInBrowser)) {
229
+ return classNameInBrowser;
230
+ }
231
+ const className = config?.className;
232
+ if (className) {
233
+ return className;
234
+ }
235
+ if (production) {
236
+ console.log('class without @CLASS.NAME deocrator', target);
237
+ throw new Error(ERROR_MSG_CLASS_WITHOUT_DECORATOR);
238
+ }
239
+ else {
240
+ // Helpers.log('check for ' + target.name)
241
+ // setTimeout(() => {
242
+ // // Helpers.log('check for ' + target.name + ' === ' + config.className)/
243
+ // // TODO this may work, but not yet in singleton/morphi
244
+ // if (!config.className) {
245
+ // if (target?.name && target.name !== 'Object') {
246
+ // ConfigHelpers.log(`[typescript-class-helpers] Please use @CLASS.NAME`
247
+ // + `('${(target?.name && !!target.name) ? target.name : '...'}') decorator for class ${target?.name}`)
248
+ // }
249
+ // }
250
+ // })
251
+ }
252
+ return target.name;
253
+ }
254
+ CLASSNAME_1.getClassName = getClassName;
255
+ // @ts-ignore
256
+ function getObjectIndexPropertyValue(obj) {
257
+ const className = TchHelpers.getNameFromObject(obj);
258
+ // console.log('className',className)
259
+ let c = getClasses().find(c => c.className === className);
260
+ // console.log('c',c)
261
+ if (c) {
262
+ return c.uniqueKey;
263
+ }
264
+ }
265
+ CLASSNAME_1.getObjectIndexPropertyValue = getObjectIndexPropertyValue;
266
+ // @ts-ignore
267
+ function getClassFamilyByClassName(className) {
268
+ let c = getClasses().find(c => c.className === className);
269
+ // console.log('getClasses()', getClasses())
270
+ if (c) {
271
+ return c.classFamily;
272
+ }
273
+ }
274
+ CLASSNAME_1.getClassFamilyByClassName = getClassFamilyByClassName;
275
+ // @ts-ignore
276
+ function getObjectClassFamily(obj) {
277
+ const className = TchHelpers.getNameFromObject(obj);
278
+ // console.log('className',className)
279
+ let c = getClasses().find(c => c.className === className);
280
+ // console.log('c',c)
281
+ if (c) {
282
+ return c.classFamily;
283
+ }
284
+ }
285
+ CLASSNAME_1.getObjectClassFamily = getObjectClassFamily;
286
+ function getObjectIndexValue(obj) {
287
+ const className = TchHelpers.getNameFromObject(obj);
288
+ // console.log('className',className)
289
+ let c = getClasses().find(c => c.className === className);
290
+ // console.log('c',c)
291
+ if (c && _.isString(c.uniqueKey)) {
292
+ return obj[c.uniqueKey];
293
+ }
294
+ }
295
+ CLASSNAME_1.getObjectIndexValue = getObjectIndexValue;
296
+ function getClassBy(className) {
297
+ let res;
298
+ if (Array.isArray(className)) {
299
+ if (className.length !== 1) {
300
+ throw `Mapping error... please use proper class names:
301
+ {
302
+ propertyObject: 'MyClassName',
303
+ propertyWithArray: ['MyClassName']
304
+ }
305
+
306
+ `;
307
+ }
308
+ className = className[0];
309
+ }
310
+ if (typeof className === 'function') { // TODO QUICK_FIX
311
+ res = className;
312
+ }
313
+ if (className === 'Date') {
314
+ res = Date;
315
+ }
316
+ let c = getClasses().find(c => c.className === className);
317
+ if (c) {
318
+ res = c.target;
319
+ }
320
+ // console.log(`getClassBy "${className} return \n\n ${res} \n\n`)
321
+ // @ts-ignore
322
+ return res;
323
+ }
324
+ CLASSNAME_1.getClassBy = getClassBy;
325
+ })(CLASSNAME || (CLASSNAME = {}));
326
+
327
+ /**
328
+ * @DEPRECATED
329
+ * Describe fields assigned in class
330
+ */
331
+ const FRegEx = new RegExp(/(?:this\.)(.+?(?= ))/g);
332
+ function describeFromClassStringify(target, parent = false) {
333
+ // @ts-ignore
334
+ var result = [];
335
+ if (parent) {
336
+ var proto = Object.getPrototypeOf(target.prototype);
337
+ if (proto) {
338
+ // @ts-ignore
339
+ result = result.concat(describeFromClassStringify(proto.constructor, parent));
340
+ }
341
+ }
342
+ result = result.concat(target.toString().match(FRegEx) || []);
343
+ return result.map(prop => prop.replace('this.', ''));
344
+ }
345
+ /**
346
+ * Describe fields assigne through @DefaultModelWithMapping decorator
347
+ * without functions
348
+ */
349
+ function describeByDefaultModelsAndMapping(target) {
350
+ let res = {};
351
+ if (target) {
352
+ // @ts-ignore
353
+ if (target[SYMBOL.DEFAULT_MODEL]) {
354
+ // @ts-ignore
355
+ Object.keys(target[SYMBOL.DEFAULT_MODEL])
356
+ .filter(key => {
357
+ // @ts-ignore
358
+ return !_.isFunction(target[SYMBOL.DEFAULT_MODEL][key]);
359
+ })
360
+ .forEach(key => {
361
+ // @ts-ignore
362
+ return res[key] = null;
363
+ });
364
+ }
365
+ // @ts-ignore
366
+ let mapping = target[SYMBOL.MODELS_MAPPING];
367
+ if (_.isArray(mapping)) {
368
+ mapping.forEach(m => {
369
+ Object.keys(m)
370
+ .forEach(key => {
371
+ // @ts-ignore
372
+ res[key] = null;
373
+ });
374
+ });
375
+ }
376
+ else if (mapping) {
377
+ Object.keys(mapping)
378
+ .forEach(key => {
379
+ // @ts-ignore
380
+ res[key] = null;
381
+ });
382
+ }
383
+ }
384
+ let propNames = Object.keys(res).filter(f => !!f);
385
+ propNames = (!propNames.includes('id') ? ['id'] : []).concat(propNames);
386
+ return propNames;
387
+ }
388
+
389
+ class TchHelpers {
390
+ static getBy(className) {
391
+ return CLASSNAME.getClassBy(className);
392
+ }
393
+ static getFromObject(o) {
394
+ if (_.isUndefined(o) || _.isNull(o)) {
395
+ return;
396
+ }
397
+ if (o.constructor) {
398
+ return o.constructor;
399
+ }
400
+ const p = Object.getPrototypeOf(o);
401
+ return p && p.constructor;
402
+ }
403
+ static getName(target, production = false) {
404
+ return CLASSNAME.getClassName(target, production);
405
+ }
406
+ static getNameFromObject(o) {
407
+ const fnCLass = this.getFromObject(o);
408
+ return this.getName(fnCLass);
409
+ }
410
+ static getConfigs(target) {
411
+ return CLASSNAME.getClassConfig(target);
412
+ }
413
+ static describeProperites(target) {
414
+ const d1 = describeFromClassStringify(target);
415
+ const d2 = describeByDefaultModelsAndMapping(target);
416
+ let uniq = {};
417
+ // @ts-ignore
418
+ d1.concat(d2).forEach(p => uniq[p] = p);
419
+ return Object.keys(uniq)
420
+ .filter(d => !!d)
421
+ .filter(d => typeof target.prototype[d] !== 'function');
422
+ }
423
+ }
424
+ const CLASS = {
425
+ NAME: CLASSNAME.CLASSNAME,
426
+ setName: setClassName,
427
+ getBy: TchHelpers.getBy,
428
+ getSingleton(target) {
429
+ if (typeof target !== 'function') {
430
+ console.error(`[typescript-class-helpers][setSingletonObj] Type of target is not a function`);
431
+ return;
432
+ }
433
+ const config = TchHelpers.getConfigs(target)[0];
434
+ // console.log(`getSingleton for ${target.name}: `, config.singleton)
435
+ return config.singleton;
436
+ },
437
+ setSingletonObj(target, singletonObject) {
438
+ // console.log('SET SINGLETON', singletonObject)
439
+ if (typeof target !== 'function') {
440
+ console.error(`[typescript-class-helpers][setSingletonObj] Type of target is not a function`);
441
+ return;
442
+ }
443
+ if (Array.isArray(singletonObject)) {
444
+ console.error(`[typescript-class-helpers][setSingletonObj] Singleton instance cant be an array`);
445
+ return;
446
+ }
447
+ if (typeof singletonObject !== 'object') {
448
+ console.error(`[typescript-class-helpers][setSingletonObj] Singleton instance cant must be a object`);
449
+ return;
450
+ }
451
+ const className = CLASS.getName(target);
452
+ // console.log(`SINGLETON SET for TARGET ${className}`)
453
+ const config = TchHelpers.getConfigs(target)[0];
454
+ if (config.singleton) {
455
+ console.warn(`[typescript-class-helpers] You are trying to set singleton of "${className}" second time with different object.`);
456
+ }
457
+ config.singleton = singletonObject;
458
+ },
459
+ getConfigs: TchHelpers.getConfigs,
460
+ getConfig: (target) => {
461
+ return _.first(TchHelpers.getConfigs(target));
462
+ },
463
+ getFromObject: TchHelpers.getFromObject,
464
+ getName: TchHelpers.getName,
465
+ getNameFromObject: TchHelpers.getNameFromObject,
466
+ describeProperites: TchHelpers.describeProperites,
467
+ OBJECT: (obj) => {
468
+ return {
469
+ get indexValue() {
470
+ return CLASSNAME.getObjectIndexValue(obj);
471
+ },
472
+ get indexProperty() {
473
+ return CLASSNAME.getObjectIndexPropertyValue(obj);
474
+ },
475
+ get isClassObject() {
476
+ if (!_.isObject(obj) || _.isArray(obj) || _.isRegExp(obj) ||
477
+ _.isBuffer(obj) || _.isArrayBuffer(obj)) {
478
+ return false;
479
+ }
480
+ if (_.isDate(obj)) {
481
+ return true;
482
+ }
483
+ const className = CLASS.getNameFromObject(obj);
484
+ return _.isString(className) && className !== 'Object';
485
+ },
486
+ isEqual: (anotherObj, compareDeep = false) => {
487
+ if (!CLASS.OBJECT(obj).isClassObject || !CLASS.OBJECT(anotherObj).isClassObject) {
488
+ return false;
489
+ }
490
+ if (obj === anotherObj) {
491
+ // console.log(`EQ v1: , v2: - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`, obj, anotherObj)
492
+ return true;
493
+ }
494
+ const v1 = CLASSNAME.getObjectIndexValue(obj);
495
+ const v2 = CLASSNAME.getObjectIndexValue(anotherObj);
496
+ const f1 = CLASSNAME.getObjectClassFamily(obj);
497
+ const f2 = CLASSNAME.getObjectClassFamily(anotherObj);
498
+ const isFamilyDiff = (!_.isString(f1) || !_.isString(f2) || (f1 !== f2));
499
+ // console.log(`DIFF FAMILY ${isFamilyDiff} v1: ${CLASSNAME.getObjectClassFamily(obj)}, v2: ${CLASSNAME.getObjectClassFamily(anotherObj)} - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`)
500
+ if (isFamilyDiff) {
501
+ // console.log(`DIFF v1: ${v1}, v2: ${v2} - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`)
502
+ return false;
503
+ }
504
+ if (!CLASS.OBJECT(obj).isClassObject || !CLASS.OBJECT(anotherObj).isClassObject) {
505
+ // console.log(`NOT CLASS v1: ${v1}, v2: ${v2} - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`)
506
+ return false;
507
+ }
508
+ // console.log(`v1: ${v1} ,class ${CLASS.getNameFromObject(obj)} ,prop: ${CLASS.OBJECT(obj).indexProperty}`)
509
+ // console.log(`v2: ${v2} ,class ${CLASS.getNameFromObject(anotherObj)} ,prop: ${CLASS.OBJECT(anotherObj).indexProperty}`)
510
+ // console.log(`v1: ${v1}, v2: ${v2} - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`)
511
+ // console.log('')
512
+ if ((_.isNumber(v1) && _.isNumber(v2)) || (_.isString(v1) && _.isString(v2))) {
513
+ const res = (v1 === v2);
514
+ // @ts-ignore
515
+ return res;
516
+ }
517
+ if (compareDeep) {
518
+ return _.isEqual(v1, v2);
519
+ }
520
+ return false;
521
+ }
522
+ };
523
+ }
524
+ };
525
+
526
+ /**
527
+ * Generated bundle index. Do not edit.
528
+ */
529
+
530
+ export { CLASS, Models, SYMBOL, TchHelpers };
531
+ //# sourceMappingURL=typescript-class-helpers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript-class-helpers.mjs","sources":["../../../tmp-libs-for-bundle-websql/typescript-class-helpers/projects/typescript-class-helpers/src/lib/models.ts","../../../tmp-libs-for-bundle-websql/typescript-class-helpers/projects/typescript-class-helpers/src/lib/symbols.ts","../../../tmp-libs-for-bundle-websql/typescript-class-helpers/projects/typescript-class-helpers/src/lib/storage.ts","../../../tmp-libs-for-bundle-websql/typescript-class-helpers/projects/typescript-class-helpers/src/lib/set-class-name.ts","../../../tmp-libs-for-bundle-websql/typescript-class-helpers/projects/typescript-class-helpers/src/lib/registerd-db.ts","../../../tmp-libs-for-bundle-websql/typescript-class-helpers/projects/typescript-class-helpers/src/lib/errors-messages.ts","../../../tmp-libs-for-bundle-websql/typescript-class-helpers/projects/typescript-class-helpers/src/lib/classname.ts","../../../tmp-libs-for-bundle-websql/typescript-class-helpers/projects/typescript-class-helpers/src/lib/describe-class.ts","../../../tmp-libs-for-bundle-websql/typescript-class-helpers/projects/typescript-class-helpers/src/lib/index.ts","../../../tmp-libs-for-bundle-websql/typescript-class-helpers/projects/typescript-class-helpers/src/typescript-class-helpers.ts"],"sourcesContent":["import { ConfigModels } from 'tnp-config/websql';\n\nexport namespace Models {\n\n\n export type CLASSNAMEOptions = {\n uniqueKey?: string,\n /**\n * autoinstance - create instance of singleton automaticly inside decorator\n * first-instance - use first instace of created class as decorator\n */\n singleton?: 'autoinstance' | 'first-instance' | 'last-instance' | boolean,\n classFamily?: string,\n classNameInBrowser?: string,\n }\n\n export class ParamConfig {\n paramName: string;\n paramType: ConfigModels.ParamType;\n index: number;\n defaultType: any;\n expireInSeconds?: number;\n }\n\n export class MethodConfig {\n methodName: string;\n path: string;\n descriptor: PropertyDescriptor;\n type: ConfigModels.HttpMethod;\n realtimeUpdate: boolean;\n //#region @websql\n requestHandler: any;\n //#endregion\n parameters: { [paramName: string]: ParamConfig } = {};\n }\n\n export interface ClassMeta {\n uniqueKey?: string;\n className?: string;\n classFamily?: string;\n classNameInBrowser?: string;\n target?: Function;\n }\n\n export class ClassConfig {\n browserTransformFn?: (entity: any) => any;\n // @ts-ignore\n singleton: Object = void 0;\n injections: { getter: Function, propertyName: string; }[] = [];\n calculatedPath: string;\n path: string;\n vChildren?: ClassConfig[] = [];\n vParent?: ClassConfig;\n classReference: Function;\n className?: string;\n uniqueKey?: string;\n classNameInBrowser?: string;\n methods: { [methodName: string]: MethodConfig } = {};\n }\n\n}\n","export const SYMBOL = {\n MODELS_MAPPING: Symbol(),\n DEFAULT_MODEL: Symbol(),\n STORAGE: 'classesstorage',\n CLASSES: 'classes',\n}\n","import { Helpers } from 'tnp-core/websql';\nimport { SYMBOL } from './symbols';\nimport { _ } from 'tnp-core/websql';\n\nfunction defaultValues() {\n return _.cloneDeep({\n [SYMBOL.CLASSES]: []\n })\n}\n\nexport function getStorage<T = any>(property?: string): T {\n\n/* */\n/* */\n/* */\n/* */\n \n\n if (typeof property === 'string') {\n\n const storageInClassStaticProp = getStorage();\n return storageInClassStaticProp[property]\n }\n\n if (typeof defaultValues.prototype[SYMBOL.STORAGE] === 'undefined') {\n defaultValues.prototype[SYMBOL.STORAGE] = defaultValues()\n }\n return defaultValues.prototype[SYMBOL.STORAGE]\n}\n\n","import { _ } from 'tnp-core/websql';\nimport { SYMBOL } from './symbols';\nimport { Models } from './models';\nimport { getStorage } from './storage';\nimport { CLASSNAME } from './classname';\nimport { CLASS } from './index';\n\n\nfunction getClasses(): Models.ClassMeta[] {\n const s = getStorage();\n return s[SYMBOL.CLASSES] as any;\n}\n\n// @ts-ignore\nexport function setClassName(target: Function, className: string, options?: Models.CLASSNAMEOptions) {\n\n let { classFamily, uniqueKey, classNameInBrowser, singleton } = options || {\n classFamily: void 0,\n uniqueKey: 'id',\n classNameInBrowser: void 0,\n singleton: void 0,\n autoinstance: false\n } as Models.CLASSNAMEOptions;\n\n if (!_.isUndefined(singleton) && _.isBoolean(singleton) && singleton) {\n singleton = 'first-instance'\n }\n\n if (!uniqueKey) {\n uniqueKey = 'id'\n }\n\n if (target) {\n const config = _.first(CLASSNAME.getClassConfig(target));\n config.className = className;\n config.uniqueKey = uniqueKey;\n config.classNameInBrowser = classNameInBrowser;\n // console.log(`Setting class Name to \"${target.name}\"`)\n }\n\n const existed = (getClasses() as { className: string; target: Function; }[])\n .find(f => f.className === className)\n\n if (existed) {\n existed.target = target;\n } else {\n const res = {\n className,\n classNameInBrowser,\n target,\n uniqueKey,\n classFamily\n }\n\n if (_.isUndefined(classFamily)) {\n Object.defineProperty(res, 'classFamily', {\n get: function () {\n const parent = Object.getPrototypeOf(target);\n if (!_.isFunction(parent) || parent.name === 'Object' || parent.name === '') {\n return className;\n }\n const classNameNew = CLASSNAME.getClassName(parent)\n return CLASSNAME.getClassFamilyByClassName(classNameNew)\n }\n })\n }\n getClasses().push(res)\n }\n const Original = target;\n\n\n if (singleton === 'first-instance' || singleton === 'last-instance') {\n const obj = {\n // @ts-ignore\n decoratedConstructor: function (...args) {\n // console.log(`DECORATED CONSTRUCTOR OF ${Original.name}`)\n const context = Original.apply(this, args);\n\n const existedSingleton = CLASS.getSingleton(Original)\n if (!existedSingleton || singleton === 'last-instance') {\n CLASS.setSingletonObj(Original, this)\n CLASS.setSingletonObj(obj.decoratedConstructor, this)\n // console.log(`Singleton created for \"${className}\", mode: ${singleton} `);\n }\n else {\n // console.log('ingleton exists')\n }\n\n return context;\n }\n };\n\n // copy prototype so intanceof operator still works\n obj.decoratedConstructor.prototype = Original.prototype;\n // @ts-ignore\n Object.keys(Original).forEach((name: string) => { obj.decoratedConstructor[name] = (<any>Original)[name]; });\n Object.defineProperty(obj.decoratedConstructor, 'name', {\n value: className,\n configurable: true,\n })\n // (obj.decoratedConstructor as any).name = className;\n // console.log('return new contruor', decoratedConstructor)\n return obj.decoratedConstructor;\n } else if (singleton === 'autoinstance') {\n\n // console.log(`AUTOINSTANCE FOR ${target.name}`)\n const auto = new (Original as any)();\n CLASS.setSingletonObj(Original, auto)\n // console.log(`Singleton created for \"${className}\", mode: ${singleton} `)\n\n }\n}\n","import { Models } from './models';\nexport const registerd = {\n configs: [] as Models.ClassConfig[],\n classes: [] as Function[],\n}\n","export const ERROR_MSG_CLASS_WITHOUT_DECORATOR = `[typescript-class-helpers][getClassName(...)](PRODUCTION MODE ERROR)\nPlease use decoartor @CLASSNAME for each entity or controller\nThis is preventing class name problem in minified code.\n\nimport { CLASS } from 'typescript-class-helpers';\n\n@CLASS.NAME('ExampleClass')\nclass ExampleClass {\n ...\n}\n`;\n","import { _ } from 'tnp-core/websql';\nimport { Models } from './models';\nimport { SYMBOL } from './symbols';\nimport { TchHelpers } from './index';\nimport { Helpers } from 'tnp-core/websql';\nimport { getStorage } from './storage';\nimport { setClassName } from './set-class-name';\nimport { registerd } from './registerd-db';\nimport { ERROR_MSG_CLASS_WITHOUT_DECORATOR } from './errors-messages';\n\n\nfunction getClasses(): Models.ClassMeta[] {\n const s = getStorage();\n return s[SYMBOL.CLASSES] as any;\n}\nexport namespace CLASSNAME {\n\n export function getClassConfig(target: Function, configs: Models.ClassConfig[] = [], callerTarget?: Function): Models.ClassConfig[] {\n if (!_.isFunction(target)) {\n throw `[typescript-class-helper][getClassConfig] Cannot get class config from: ${target}`\n }\n\n let config: Models.ClassConfig;\n const parentClass = Object.getPrototypeOf(target);\n const isValidParent = (_.isFunction(parentClass) && parentClass.name !== '');\n\n if (registerd.classes.includes(target)) {\n config = registerd.configs[registerd.classes.findIndex(c => c === target)];\n } else {\n config = new Models.ClassConfig();\n config.classReference = target;\n registerd.classes.push(target);\n }\n\n registerd.configs[registerd.classes.findIndex(c => c === target)] = config;\n if (callerTarget) {\n const callerTargetConfig = registerd.configs[registerd.classes.findIndex(c => c === callerTarget)];\n if (!config.vChildren.includes(callerTargetConfig)) {\n config.vChildren.push(callerTargetConfig);\n }\n callerTargetConfig.vParent = config;\n }\n\n configs.push(config);\n\n return isValidParent ? getClassConfig(parentClass, configs, target) : configs;\n }\n\n /**\n * PLEASE PROVIDE NAME AS TYPED STRING, NOT VARIABLE\n * Decorator requred for production mode\n * @param name Name of class\n */\n export function CLASSNAME(className: string,\n options?: Models.CLASSNAMEOptions) {\n return function (target: Function) {\n // console.log(`CLASSNAME Inited ${className}`)\n return setClassName(target, className, options);\n } as any;\n }\n\n export function getClassName(target: Function, production = false) {\n if (_.isNil(target)) {\n // console.log(target);\n // Helpers.warn(`[typescript-class-helpers][getClassName] target is nil`)\n return void 0;\n }\n if (_.isString(target)) {\n console.log(target);\n Helpers.warn(`[typescript-class-helpers][getClassName] target is string: '${target}', produciton: ${production}`)\n return target;\n }\n if (!_.isFunction(target)) {\n console.log(target);\n Helpers.warn(`[typescript-class-helpers][getClassName] target is not a class`)\n return void 0;\n }\n\n const configs = getClassConfig(target);\n const config = _.first(configs);\n\n const classNameInBrowser = config?.classNameInBrowser;\n\n if (Helpers.isBrowser && _.isString(classNameInBrowser)) {\n return classNameInBrowser;\n }\n\n const className = config?.className;\n\n if (className) {\n return className;\n }\n\n if (production) {\n console.log('class without @CLASS.NAME deocrator', target as any)\n throw new Error(ERROR_MSG_CLASS_WITHOUT_DECORATOR);\n } else {\n // Helpers.log('check for ' + target.name)\n // setTimeout(() => {\n // // Helpers.log('check for ' + target.name + ' === ' + config.className)/\n // // TODO this may work, but not yet in singleton/morphi\n // if (!config.className) {\n // if (target?.name && target.name !== 'Object') {\n // ConfigHelpers.log(`[typescript-class-helpers] Please use @CLASS.NAME`\n // + `('${(target?.name && !!target.name) ? target.name : '...'}') decorator for class ${target?.name}`)\n // }\n // }\n // })\n\n }\n return target.name;\n }\n\n // @ts-ignore\n export function getObjectIndexPropertyValue(obj: any) {\n const className = TchHelpers.getNameFromObject(obj);\n // console.log('className',className)\n let c = getClasses().find(c => c.className === className);\n // console.log('c',c)\n if (c) {\n return c.uniqueKey;\n }\n }\n\n // @ts-ignore\n export function getClassFamilyByClassName(className: string) {\n let c = getClasses().find(c => c.className === className);\n // console.log('getClasses()', getClasses())\n if (c) {\n return c.classFamily;\n }\n }\n\n // @ts-ignore\n export function getObjectClassFamily(obj: any) {\n const className = TchHelpers.getNameFromObject(obj);\n // console.log('className',className)\n let c = getClasses().find(c => c.className === className);\n // console.log('c',c)\n if (c) {\n return c.classFamily;\n }\n }\n\n export function getObjectIndexValue(obj: any) {\n const className = TchHelpers.getNameFromObject(obj);\n // console.log('className',className)\n let c = getClasses().find(c => c.className === className);\n // console.log('c',c)\n if (c && _.isString(c.uniqueKey)) {\n return obj[c.uniqueKey];\n }\n }\n\n export function getClassBy(className: string | Function): Function {\n let res;\n if (Array.isArray(className)) {\n if (className.length !== 1) {\n throw `Mapping error... please use proper class names:\n {\n propertyObject: 'MyClassName',\n propertyWithArray: ['MyClassName']\n }\n\n `\n }\n className = className[0]\n }\n if (typeof className === 'function') { // TODO QUICK_FIX\n res = className;\n }\n if (className === 'Date') {\n res = Date;\n }\n\n let c = getClasses().find(c => c.className === className);\n\n if (c) {\n res = c.target;\n }\n // console.log(`getClassBy \"${className} return \\n\\n ${res} \\n\\n`)\n // @ts-ignore\n return res;\n }\n\n}\n","import { _ } from 'tnp-core/websql';\nimport { SYMBOL } from './symbols';\n\n\n\n/**\n * @DEPRECATED\n * Describe fields assigned in class\n */\nconst FRegEx = new RegExp(/(?:this\\.)(.+?(?= ))/g);\nexport function describeFromClassStringify(target: Function, parent = false): string[] {\n // @ts-ignore\n var result = [];\n if (parent) {\n var proto = Object.getPrototypeOf(target.prototype);\n if (proto) {\n // @ts-ignore\n result = result.concat(describeFromClassStringify(proto.constructor, parent));\n }\n }\n result = result.concat(target.toString().match(FRegEx) || []);\n return result.map(prop => prop.replace('this.', ''))\n\n}\n\n/**\n * Describe fields assigne through @DefaultModelWithMapping decorator\n * without functions\n */\nexport function describeByDefaultModelsAndMapping(target: Function): string[] {\n let res = {}\n if (target) {\n // @ts-ignore\n if (target[SYMBOL.DEFAULT_MODEL]) {\n // @ts-ignore\n Object.keys(target[SYMBOL.DEFAULT_MODEL])\n .filter(key => {\n // @ts-ignore\n return !_.isFunction(target[SYMBOL.DEFAULT_MODEL][key]);\n })\n .forEach(key => {\n // @ts-ignore\n return res[key] = null;\n });\n }\n // @ts-ignore\n let mapping = target[SYMBOL.MODELS_MAPPING];\n if (_.isArray(mapping)) {\n mapping.forEach(m => {\n Object.keys(m)\n .forEach(key => {\n // @ts-ignore\n res[key] = null;\n });\n })\n } else if (mapping) {\n\n Object.keys(mapping)\n .forEach(key => {\n // @ts-ignore\n res[key] = null;\n });\n }\n }\n\n let propNames = Object.keys(res).filter(f => !!f);\n propNames = (!propNames.includes('id') ? ['id'] : []).concat(propNames);\n return propNames;\n}\n","import { _ } from 'tnp-core/websql';\nimport { CLASSNAME } from './classname';\nimport { describeFromClassStringify, describeByDefaultModelsAndMapping } from './describe-class';\nimport { Models } from './models';\nimport { setClassName } from './set-class-name';\n\nexport { Models } from './models';\nexport { SYMBOL } from './symbols';\n\nexport class TchHelpers {\n\n static getBy(className: string | Function) {\n return CLASSNAME.getClassBy(className);\n }\n\n static getFromObject(o: Object) {\n if (_.isUndefined(o) || _.isNull(o)) {\n return;\n }\n if (o.constructor) {\n return o.constructor;\n }\n const p = Object.getPrototypeOf(o)\n return p && p.constructor;\n }\n\n static getName(target: Function, production = false) {\n return CLASSNAME.getClassName(target, production) as string;\n }\n\n static getNameFromObject(o: Object) {\n const fnCLass = this.getFromObject(o);\n return this.getName(fnCLass);\n }\n\n static getConfigs(target: Function): Models.ClassConfig[] {\n return CLASSNAME.getClassConfig(target)\n }\n\n static describeProperites(target: Function) {\n const d1 = describeFromClassStringify(target);\n const d2 = describeByDefaultModelsAndMapping(target);\n let uniq = {};\n // @ts-ignore\n d1.concat(d2).forEach(p => uniq[p] = p);\n return Object.keys(uniq)\n .filter(d => !!d)\n .filter(d => typeof target.prototype[d] !== 'function')\n }\n\n}\n\n\nexport const CLASS = {\n NAME: CLASSNAME.CLASSNAME,\n setName: setClassName,\n getBy: TchHelpers.getBy,\n getSingleton<T = any>(target: Function) {\n if (typeof target !== 'function') {\n console.error(`[typescript-class-helpers][setSingletonObj] Type of target is not a function`)\n return\n }\n const config = TchHelpers.getConfigs(target)[0]\n // console.log(`getSingleton for ${target.name}: `, config.singleton)\n\n return config.singleton as T;\n },\n setSingletonObj(target: Function, singletonObject: any) {\n // console.log('SET SINGLETON', singletonObject)\n if (typeof target !== 'function') {\n console.error(`[typescript-class-helpers][setSingletonObj] Type of target is not a function`)\n return\n }\n\n if (Array.isArray(singletonObject)) {\n console.error(`[typescript-class-helpers][setSingletonObj] Singleton instance cant be an array`)\n return\n }\n\n if (typeof singletonObject !== 'object') {\n console.error(`[typescript-class-helpers][setSingletonObj] Singleton instance cant must be a object`)\n return\n }\n\n const className = CLASS.getName(target);\n\n\n // console.log(`SINGLETON SET for TARGET ${className}`)\n const config = TchHelpers.getConfigs(target)[0]\n\n if (config.singleton) {\n console.warn(`[typescript-class-helpers] You are trying to set singleton of \"${className}\" second time with different object.`)\n }\n\n config.singleton = singletonObject;\n },\n getConfigs: TchHelpers.getConfigs,\n getConfig: (target: Function) => {\n return _.first(TchHelpers.getConfigs(target));\n },\n getFromObject: TchHelpers.getFromObject,\n getName: TchHelpers.getName,\n getNameFromObject: TchHelpers.getNameFromObject,\n describeProperites: TchHelpers.describeProperites,\n OBJECT: (obj: any) => {\n return {\n get indexValue() {\n return CLASSNAME.getObjectIndexValue(obj);\n },\n get indexProperty() {\n return CLASSNAME.getObjectIndexPropertyValue(obj);\n },\n get isClassObject() {\n\n if (!_.isObject(obj) || _.isArray(obj) || _.isRegExp(obj) ||\n _.isBuffer(obj) || _.isArrayBuffer(obj)) {\n return false;\n }\n if (_.isDate(obj)) {\n return true;\n }\n const className = CLASS.getNameFromObject(obj)\n return _.isString(className) && className !== 'Object';\n },\n isEqual: (anotherObj: any, compareDeep = false) => {\n if (!CLASS.OBJECT(obj).isClassObject || !CLASS.OBJECT(anotherObj).isClassObject) {\n return false;\n }\n if (obj === anotherObj) {\n // console.log(`EQ v1: , v2: - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`, obj, anotherObj)\n return true;\n }\n const v1 = CLASSNAME.getObjectIndexValue(obj);\n const v2 = CLASSNAME.getObjectIndexValue(anotherObj);\n const f1 = CLASSNAME.getObjectClassFamily(obj)\n const f2 = CLASSNAME.getObjectClassFamily(anotherObj)\n const isFamilyDiff = (!_.isString(f1) || !_.isString(f2) || (f1 !== f2));\n // console.log(`DIFF FAMILY ${isFamilyDiff} v1: ${CLASSNAME.getObjectClassFamily(obj)}, v2: ${CLASSNAME.getObjectClassFamily(anotherObj)} - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`)\n if (isFamilyDiff) {\n // console.log(`DIFF v1: ${v1}, v2: ${v2} - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`)\n return false;\n }\n if (!CLASS.OBJECT(obj).isClassObject || !CLASS.OBJECT(anotherObj).isClassObject) {\n // console.log(`NOT CLASS v1: ${v1}, v2: ${v2} - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`)\n return false\n }\n\n // console.log(`v1: ${v1} ,class ${CLASS.getNameFromObject(obj)} ,prop: ${CLASS.OBJECT(obj).indexProperty}`)\n // console.log(`v2: ${v2} ,class ${CLASS.getNameFromObject(anotherObj)} ,prop: ${CLASS.OBJECT(anotherObj).indexProperty}`)\n // console.log(`v1: ${v1}, v2: ${v2} - class1 ${CLASS.getNameFromObject(obj)}, class2 ${CLASS.getNameFromObject(anotherObj)}`)\n // console.log('')\n if ((_.isNumber(v1) && _.isNumber(v2)) || (_.isString(v1) && _.isString(v2))) {\n\n const res = (v1 === v2);\n // @ts-ignore\n return res;\n }\n if (compareDeep) {\n return _.isEqual(v1, v2)\n }\n return false;\n }\n }\n }\n}\n\nexport * from 'enum-values';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["getClasses"],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Models } from './models';
2
+ export declare namespace CLASSNAME {
3
+ function getClassConfig(target: Function, configs?: Models.ClassConfig[], callerTarget?: Function): Models.ClassConfig[];
4
+ /**
5
+ * PLEASE PROVIDE NAME AS TYPED STRING, NOT VARIABLE
6
+ * Decorator requred for production mode
7
+ * @param name Name of class
8
+ */
9
+ function CLASSNAME(className: string, options?: Models.CLASSNAMEOptions): any;
10
+ function getClassName(target: Function, production?: boolean): string;
11
+ function getObjectIndexPropertyValue(obj: any): string;
12
+ function getClassFamilyByClassName(className: string): string;
13
+ function getObjectClassFamily(obj: any): string;
14
+ function getObjectIndexValue(obj: any): any;
15
+ function getClassBy(className: string | Function): Function;
16
+ }
@@ -0,0 +1,6 @@
1
+ export declare function describeFromClassStringify(target: Function, parent?: boolean): string[];
2
+ /**
3
+ * Describe fields assigne through @DefaultModelWithMapping decorator
4
+ * without functions
5
+ */
6
+ export declare function describeByDefaultModelsAndMapping(target: Function): string[];
@@ -0,0 +1 @@
1
+ export declare const ERROR_MSG_CLASS_WITHOUT_DECORATOR = "[typescript-class-helpers][getClassName(...)](PRODUCTION MODE ERROR)\nPlease use decoartor @CLASSNAME for each entity or controller\nThis is preventing class name problem in minified code.\n\nimport { CLASS } from 'typescript-class-helpers';\n\n@CLASS.NAME('ExampleClass')\nclass ExampleClass {\n ...\n}\n";