@allgemein/base 1.5.6 → 1.6.3

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/Constants.d.ts +1 -0
  2. package/Constants.js +2 -1
  3. package/Constants.js.map +1 -1
  4. package/MetadataStorage.js +4 -4
  5. package/MetadataStorage.js.map +1 -1
  6. package/browser.d.ts +1 -1
  7. package/browser.js +4 -1
  8. package/browser.js.map +1 -1
  9. package/index.d.ts +1 -1
  10. package/index.js +4 -1
  11. package/index.js.map +1 -1
  12. package/locking/LockFactory.d.ts +15 -0
  13. package/locking/LockFactory.js +60 -0
  14. package/locking/LockFactory.js.map +1 -0
  15. package/locking/Semaphore.d.ts +45 -0
  16. package/locking/Semaphore.js +108 -0
  17. package/locking/Semaphore.js.map +1 -0
  18. package/logging/AbstractLogger.js +3 -3
  19. package/logging/AbstractLogger.js.map +1 -1
  20. package/logging/Logger.js +1 -1
  21. package/logging/Logger.js.map +1 -1
  22. package/package.json +19 -12
  23. package/shared.d.ts +4 -1
  24. package/shared.js +7 -1
  25. package/shared.js.map +1 -1
  26. package/utils/ArrayUtils.d.ts +4 -0
  27. package/utils/ArrayUtils.js +91 -0
  28. package/utils/ArrayUtils.js.map +1 -0
  29. package/utils/ClassLoader.js +6 -6
  30. package/utils/ClassLoader.js.map +1 -1
  31. package/utils/ClassUtils.js +6 -6
  32. package/utils/ClassUtils.js.map +1 -1
  33. package/utils/FileUtils.d.ts +2 -2
  34. package/utils/FileUtils.js.map +1 -1
  35. package/utils/JsonUtils.js +2 -2
  36. package/utils/JsonUtils.js.map +1 -1
  37. package/utils/PlatformUtils.js +1 -1
  38. package/utils/PlatformUtils.js.map +1 -1
  39. package/utils/PlatformUtilsBrowser.js +1 -1
  40. package/utils/PlatformUtilsBrowser.js.map +1 -1
  41. package/utils/Serializer.d.ts +9 -0
  42. package/utils/Serializer.js +84 -0
  43. package/utils/Serializer.js.map +1 -0
  44. package/utils/TreeUtils.js +10 -10
  45. package/utils/TreeUtils.js.map +1 -1
@@ -8,9 +8,9 @@ class TreeUtils {
8
8
  if (obj === null || obj === undefined) {
9
9
  return;
10
10
  }
11
- if (lodash_1.isArray(obj)) {
11
+ if ((0, lodash_1.isArray)(obj)) {
12
12
  obj.forEach((el, j) => {
13
- const isLeaf = !lodash_1.isArray(el) && !lodash_1.isObjectLike(el);
13
+ const isLeaf = !(0, lodash_1.isArray)(el) && !(0, lodash_1.isObjectLike)(el);
14
14
  fn({
15
15
  value: el,
16
16
  key: key,
@@ -24,9 +24,9 @@ class TreeUtils {
24
24
  }
25
25
  });
26
26
  }
27
- else if (lodash_1.isObjectLike(obj)) {
28
- lodash_1.keys(obj).forEach(_key => {
29
- const isLeaf = !lodash_1.isArray(obj[_key]) && !lodash_1.isObjectLike(obj[_key]);
27
+ else if ((0, lodash_1.isObjectLike)(obj)) {
28
+ (0, lodash_1.keys)(obj).forEach((_key) => {
29
+ const isLeaf = !(0, lodash_1.isArray)(obj[_key]) && !(0, lodash_1.isObjectLike)(obj[_key]);
30
30
  fn({
31
31
  value: obj[_key],
32
32
  key: _key,
@@ -58,10 +58,10 @@ class TreeUtils {
58
58
  if (obj === null || obj === undefined) {
59
59
  return;
60
60
  }
61
- if (lodash_1.isArray(obj)) {
61
+ if ((0, lodash_1.isArray)(obj)) {
62
62
  for (let j = 0; j < obj.length; j++) {
63
63
  const el = obj[j];
64
- const isLeaf = !lodash_1.isArray(el) && !lodash_1.isObjectLike(el);
64
+ const isLeaf = !(0, lodash_1.isArray)(el) && !(0, lodash_1.isObjectLike)(el);
65
65
  await fn({
66
66
  value: el,
67
67
  key: key,
@@ -75,9 +75,9 @@ class TreeUtils {
75
75
  }
76
76
  }
77
77
  }
78
- else if (lodash_1.isObjectLike(obj)) {
79
- for (const _key of lodash_1.keys(obj)) {
80
- const isLeaf = !lodash_1.isArray(obj[_key]) && !lodash_1.isObjectLike(obj[_key]);
78
+ else if ((0, lodash_1.isObjectLike)(obj)) {
79
+ for (const _key of (0, lodash_1.keys)(obj)) {
80
+ const isLeaf = !(0, lodash_1.isArray)(obj[_key]) && !(0, lodash_1.isObjectLike)(obj[_key]);
81
81
  await fn({
82
82
  value: obj[_key],
83
83
  key: _key,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/TreeUtils.ts"],"names":[],"mappings":"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","file":"TreeUtils.js","sourcesContent":["import {isArray, isObjectLike, keys} from 'lodash';\n\nexport interface WalkValues {\n value: any;\n key: string | number;\n index: number;\n location: any;\n parent: any;\n isLeaf: boolean;\n}\n\nexport class TreeUtils {\n\n\n static walk(root: any, fn: (x: WalkValues) => void) {\n function walk(obj: any, parent: any = null, key: string | number = null, location: any[] = []) {\n if (obj === null || obj === undefined) {\n return;\n }\n if (isArray(obj)) {\n obj.forEach((el: any, j: number) => {\n const isLeaf = !isArray(el) && !isObjectLike(el);\n fn({\n value: el,\n key: key,\n index: j,\n location: [...location, ...[j]],\n parent: obj,\n isLeaf: isLeaf\n });\n if (!isLeaf) {\n walk(el, j, el, key ? [...location, ...[key], ...[j]] : [...location, ...[j]]);\n }\n });\n } else if (isObjectLike(obj)) {\n keys(obj).forEach(_key => {\n const isLeaf = !isArray(obj[_key]) && !isObjectLike(obj[_key]);\n fn({\n value: obj[_key],\n key: _key,\n parent: obj,\n index: null,\n location: [...location, ...[_key]],\n isLeaf: isLeaf\n });\n if (!isLeaf) {\n walk(obj[_key], obj, _key, [...location, ...[_key]]);\n }\n });\n } else {\n fn({\n value: obj,\n key: key,\n parent: parent,\n index: null,\n location: [...location],\n isLeaf: true\n });\n }\n }\n\n walk(root);\n }\n\n\n static async walkAsync(root: any, fn: (x: WalkValues) => void) {\n async function walk(obj: any, parent: any = null, key: string | number = null, location: any[] = []) {\n if (obj === null || obj === undefined) {\n return;\n }\n if (isArray(obj)) {\n for (let j = 0; j < obj.length; j++) {\n const el = obj[j];\n const isLeaf = !isArray(el) && !isObjectLike(el);\n await fn({\n value: el,\n key: key,\n index: j,\n location: [...location, ...[j]],\n parent: obj,\n isLeaf: isLeaf\n });\n if (!isLeaf) {\n await walk(el, j, el, key ? [...location, ...[key], ...[j]] : [...location, ...[j]]);\n }\n }\n } else if (isObjectLike(obj)) {\n for (const _key of keys(obj)) {\n const isLeaf = !isArray(obj[_key]) && !isObjectLike(obj[_key]);\n await fn({\n value: obj[_key],\n key: _key,\n parent: obj,\n index: null,\n location: [...location, ...[_key]],\n isLeaf: isLeaf\n });\n if (!isLeaf) {\n await walk(obj[_key], obj, _key, [...location, ...[_key]]);\n }\n }\n } else {\n await fn({\n value: obj,\n key: key,\n parent: parent,\n index: null,\n location: [...location],\n isLeaf: true\n });\n }\n }\n\n await walk(root);\n }\n\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../../src/utils/TreeUtils.ts"],"names":[],"mappings":"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","file":"TreeUtils.js","sourcesContent":["import {isArray, isObjectLike, keys} from 'lodash';\n\nexport interface WalkValues {\n value: any;\n key: string | number;\n index: number;\n location: any;\n parent: any;\n isLeaf: boolean;\n}\n\nexport class TreeUtils {\n\n\n static walk(root: any, fn: (x: WalkValues) => void) {\n function walk(obj: any, parent: any = null, key: string | number = null, location: any[] = []) {\n if (obj === null || obj === undefined) {\n return;\n }\n if (isArray(obj)) {\n obj.forEach((el: any, j: number) => {\n const isLeaf = !isArray(el) && !isObjectLike(el);\n fn({\n value: el,\n key: key,\n index: j,\n location: [...location, ...[j]],\n parent: obj,\n isLeaf: isLeaf\n });\n if (!isLeaf) {\n walk(el, j, el, key ? [...location, ...[key], ...[j]] : [...location, ...[j]]);\n }\n });\n } else if (isObjectLike(obj)) {\n keys(obj).forEach((_key: string) => {\n const isLeaf = !isArray(obj[_key]) && !isObjectLike(obj[_key]);\n fn({\n value: obj[_key],\n key: _key,\n parent: obj,\n index: null,\n location: [...location, ...[_key]],\n isLeaf: isLeaf\n });\n if (!isLeaf) {\n walk(obj[_key], obj, _key, [...location, ...[_key]]);\n }\n });\n } else {\n fn({\n value: obj,\n key: key,\n parent: parent,\n index: null,\n location: [...location],\n isLeaf: true\n });\n }\n }\n\n walk(root);\n }\n\n\n static async walkAsync(root: any, fn: (x: WalkValues) => void) {\n async function walk(obj: any, parent: any = null, key: string | number = null, location: any[] = []) {\n if (obj === null || obj === undefined) {\n return;\n }\n if (isArray(obj)) {\n for (let j = 0; j < obj.length; j++) {\n const el = obj[j];\n const isLeaf = !isArray(el) && !isObjectLike(el);\n await fn({\n value: el,\n key: key,\n index: j,\n location: [...location, ...[j]],\n parent: obj,\n isLeaf: isLeaf\n });\n if (!isLeaf) {\n await walk(el, j, el, key ? [...location, ...[key], ...[j]] : [...location, ...[j]]);\n }\n }\n } else if (isObjectLike(obj)) {\n for (const _key of keys(obj)) {\n const isLeaf = !isArray(obj[_key]) && !isObjectLike(obj[_key]);\n await fn({\n value: obj[_key],\n key: _key,\n parent: obj,\n index: null,\n location: [...location, ...[_key]],\n isLeaf: isLeaf\n });\n if (!isLeaf) {\n await walk(obj[_key], obj, _key, [...location, ...[_key]]);\n }\n }\n } else {\n await fn({\n value: obj,\n key: key,\n parent: parent,\n index: null,\n location: [...location],\n isLeaf: true\n });\n }\n }\n\n await walk(root);\n }\n\n\n}\n"],"sourceRoot":".."}