@archtx/utils 6.0.0 → 6.1.1

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 (98) hide show
  1. package/dist/exports.d.ts +29 -29
  2. package/dist/exports.js +29 -29
  3. package/dist/exports.js.map +1 -1
  4. package/dist/src/array-values-or-undefined.d.ts +1 -0
  5. package/dist/src/array-values-or-undefined.js +6 -0
  6. package/dist/src/array-values-or-undefined.js.map +1 -0
  7. package/dist/src/bool-or-undefined.d.ts +1 -0
  8. package/dist/src/bool-or-undefined.js +2 -0
  9. package/dist/src/bool-or-undefined.js.map +1 -0
  10. package/dist/src/constants/millisecond-time.d.ts +7 -0
  11. package/dist/src/constants/millisecond-time.js +8 -0
  12. package/dist/src/constants/millisecond-time.js.map +1 -0
  13. package/dist/src/constants/second-time.d.ts +6 -0
  14. package/dist/src/constants/second-time.js +7 -0
  15. package/dist/src/constants/second-time.js.map +1 -0
  16. package/dist/src/datetime/iso-string.d.ts +2 -0
  17. package/dist/src/datetime/iso-string.js +10 -0
  18. package/dist/src/datetime/iso-string.js.map +1 -0
  19. package/dist/src/deep-clone.d.ts +1 -0
  20. package/dist/src/deep-clone.js +27 -0
  21. package/dist/src/deep-clone.js.map +1 -0
  22. package/dist/src/deep-equal.d.ts +7 -0
  23. package/dist/src/deep-equal.js +52 -0
  24. package/dist/src/deep-equal.js.map +1 -0
  25. package/dist/src/deep-equal.test.d.ts +1 -0
  26. package/dist/src/deep-equal.test.js +97 -0
  27. package/dist/src/deep-equal.test.js.map +1 -0
  28. package/dist/src/deep-freeze.d.ts +7 -0
  29. package/dist/src/deep-freeze.js +20 -0
  30. package/dist/src/deep-freeze.js.map +1 -0
  31. package/dist/src/deep-merge.d.ts +1 -0
  32. package/dist/src/deep-merge.js +27 -0
  33. package/dist/src/deep-merge.js.map +1 -0
  34. package/dist/src/ensure-array.d.ts +16 -0
  35. package/dist/src/ensure-array.js +26 -0
  36. package/dist/src/ensure-array.js.map +1 -0
  37. package/dist/src/format-decimal.d.ts +1 -0
  38. package/dist/src/format-decimal.js +9 -0
  39. package/dist/src/format-decimal.js.map +1 -0
  40. package/dist/src/is-hex-color.d.ts +1 -0
  41. package/dist/src/is-hex-color.js +4 -0
  42. package/dist/src/is-hex-color.js.map +1 -0
  43. package/dist/src/is-prod.d.ts +1 -0
  44. package/dist/src/is-prod.js +2 -0
  45. package/dist/src/is-prod.js.map +1 -0
  46. package/dist/src/make-uuid.test.d.ts +1 -0
  47. package/dist/src/make-uuid.test.js +23 -0
  48. package/dist/src/make-uuid.test.js.map +1 -0
  49. package/dist/src/object-diff-paths.d.ts +9 -0
  50. package/dist/src/object-diff-paths.js +39 -0
  51. package/dist/src/object-diff-paths.js.map +1 -0
  52. package/dist/src/object-diff-paths.test.d.ts +1 -0
  53. package/dist/src/object-diff-paths.test.js +141 -0
  54. package/dist/src/object-diff-paths.test.js.map +1 -0
  55. package/dist/src/object-values-to-dot-notation.d.ts +1 -0
  56. package/dist/src/object-values-to-dot-notation.js +23 -0
  57. package/dist/src/object-values-to-dot-notation.js.map +1 -0
  58. package/dist/src/object-values-to-dot-notation.test.d.ts +1 -0
  59. package/dist/src/object-values-to-dot-notation.test.js +21 -0
  60. package/dist/src/object-values-to-dot-notation.test.js.map +1 -0
  61. package/dist/src/object.d.ts +7 -0
  62. package/dist/src/object.js +19 -0
  63. package/dist/src/object.js.map +1 -0
  64. package/dist/src/random-color.d.ts +1 -0
  65. package/dist/src/random-color.js +4 -0
  66. package/dist/src/random-color.js.map +1 -0
  67. package/dist/src/sanitize-obj-props.d.ts +1 -0
  68. package/dist/src/sanitize-obj-props.js +5 -0
  69. package/dist/src/sanitize-obj-props.js.map +1 -0
  70. package/dist/src/sleep.d.ts +1 -0
  71. package/dist/src/sleep.js +6 -0
  72. package/dist/src/sleep.js.map +1 -0
  73. package/dist/src/strings/is-email.d.ts +1 -0
  74. package/dist/src/strings/is-email.js +5 -0
  75. package/dist/src/strings/is-email.js.map +1 -0
  76. package/dist/src/strings/is-url.d.ts +1 -0
  77. package/dist/src/strings/is-url.js +10 -0
  78. package/dist/src/strings/is-url.js.map +1 -0
  79. package/dist/src/strings/make-uuid.d.ts +16 -0
  80. package/dist/src/strings/make-uuid.js +25 -0
  81. package/dist/src/strings/make-uuid.js.map +1 -0
  82. package/dist/src/strings/obfuscate-string.d.ts +21 -0
  83. package/dist/src/strings/obfuscate-string.js +46 -0
  84. package/dist/src/strings/obfuscate-string.js.map +1 -0
  85. package/dist/src/strings/pluralize.d.ts +5 -0
  86. package/dist/src/strings/pluralize.js +17 -0
  87. package/dist/src/strings/pluralize.js.map +1 -0
  88. package/dist/src/strings/reproducible-hash.d.ts +5 -0
  89. package/dist/src/strings/reproducible-hash.js +23 -0
  90. package/dist/src/strings/reproducible-hash.js.map +1 -0
  91. package/dist/src/timeout.d.ts +8 -0
  92. package/dist/src/timeout.js +14 -0
  93. package/dist/src/timeout.js.map +1 -0
  94. package/dist/src/undefined-default.d.ts +1 -0
  95. package/dist/src/undefined-default.js +2 -0
  96. package/dist/src/undefined-default.js.map +1 -0
  97. package/dist/tsconfig.tsbuildinfo +1 -0
  98. package/package.json +11 -6
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Get the "lodash" paths of deep difference values between two objects or arrays.
3
+ *
4
+ * @param o1 {object|array}
5
+ * @param o2 {object|array}
6
+ * @param curPath {string}
7
+ * @param diffs {array<string>} ie: ["a.b.c.z", "a.c.[1].name"]
8
+ */
9
+ export declare function objectDiffPaths(o1: Record<any, any> | any, o2: Record<any, any> | any, curPath?: string, diffs?: string[]): string[];
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Get the "lodash" paths of deep difference values between two objects or arrays.
3
+ *
4
+ * @param o1 {object|array}
5
+ * @param o2 {object|array}
6
+ * @param curPath {string}
7
+ * @param diffs {array<string>} ie: ["a.b.c.z", "a.c.[1].name"]
8
+ */
9
+ export function objectDiffPaths(o1, o2, curPath = '', diffs = []) {
10
+ if (typeof o1 !== typeof o2)
11
+ return curPath ? diffs.concat(curPath) : [];
12
+ if (typeof o1 !== 'object') {
13
+ if (o1 !== o2) {
14
+ diffs = curPath ? diffs.concat(curPath) : [];
15
+ }
16
+ return diffs;
17
+ }
18
+ const keys = unionKeys(o1, o2);
19
+ for (const key of keys) {
20
+ const isArr = Array.isArray(o1);
21
+ const path = curPath
22
+ ? curPath + '.' + (isArr ? '[' : '') + key + (isArr ? ']' : '')
23
+ : key;
24
+ diffs = objectDiffPaths(o1[key], o2[key], path, diffs);
25
+ }
26
+ return diffs;
27
+ }
28
+ function unionKeys(o1, o2) {
29
+ const keys = getKeys(o1).concat(getKeys(o2));
30
+ const o = keys.reduce((acc, cur) => {
31
+ acc[cur] = true;
32
+ return acc;
33
+ }, {});
34
+ return Object.keys(o);
35
+ }
36
+ function getKeys(o) {
37
+ return typeof o === 'undefined' || o === null ? [] : Object.keys(o);
38
+ }
39
+ //# sourceMappingURL=object-diff-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-diff-paths.js","sourceRoot":"","sources":["../../src/object-diff-paths.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,EAA0B,EAC1B,EAA0B,EAC1B,OAAO,GAAG,EAAE,EACZ,QAAkB,EAAE;IAEpB,IAAI,OAAO,EAAE,KAAK,OAAO,EAAE;QAAE,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAExE,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC3B,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACd,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAC9C,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAE9B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC/B,MAAM,IAAI,GAAG,OAAO;YAClB,CAAC,CAAC,OAAO,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,CAAC,CAAC,GAAG,CAAA;QACP,KAAK,GAAG,eAAe,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IACxD,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,SAAS,CAAC,EAAoB,EAAE,EAAoB;IAC3D,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;IAC5C,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,GAAG,EAAE,EAAE;QACtC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;QAEf,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAE,CAAC,CAAA;IACN,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACvB,CAAC;AAED,SAAS,OAAO,CAAC,CAAmB;IAClC,OAAO,OAAO,CAAC,KAAK,WAAW,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACrE,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,141 @@
1
+ import assert from 'assert';
2
+ import { get } from 'lodash-es';
3
+ import { objectDiffPaths } from './object-diff-paths.js';
4
+ describe('object diff', () => {
5
+ it('different types', () => {
6
+ const o1 = 1;
7
+ const o2 = true;
8
+ const diff = objectDiffPaths(o1, o2);
9
+ assert.deepEqual(diff, []);
10
+ });
11
+ it('empty objects', () => {
12
+ const o1 = {};
13
+ const o2 = {};
14
+ const diff = objectDiffPaths(o1, o2);
15
+ assert.deepEqual(diff, []);
16
+ });
17
+ it('empty objects', () => {
18
+ const o1 = {};
19
+ const o2 = {};
20
+ const diff = objectDiffPaths(o1, o2);
21
+ assert.deepEqual(diff, []);
22
+ });
23
+ it('a single object entry is different', () => {
24
+ const o1 = {
25
+ a: {
26
+ b: {
27
+ c: { s: 't' },
28
+ },
29
+ },
30
+ };
31
+ const o2 = { ...o1, a: { ...o1.a, b: { ...o1.a.b, d: 'e' } } };
32
+ const diff = objectDiffPaths(o1, o2);
33
+ assert.deepEqual(diff, ['a.b.d']);
34
+ });
35
+ it('null vs undefined', () => {
36
+ const o1 = {
37
+ foo: null,
38
+ };
39
+ const o2 = {
40
+ foo: undefined,
41
+ };
42
+ const diff = objectDiffPaths(o1, o2);
43
+ assert.deepEqual(diff, ['foo']);
44
+ });
45
+ it('entries are missing/different from each objects', () => {
46
+ const o1 = {
47
+ a: {
48
+ b: {
49
+ fn: () => 4,
50
+ arr: [1, 2, 3],
51
+ c: {
52
+ s: 't',
53
+ y: 'g',
54
+ },
55
+ },
56
+ },
57
+ };
58
+ const o2 = {
59
+ ...o1,
60
+ a: {
61
+ ...o1.a,
62
+ b: {
63
+ ...o1.a.b,
64
+ fn: () => 4,
65
+ arr: [1, 2, 3, 4, 5],
66
+ c: { s: 'e', t: 'e' },
67
+ },
68
+ },
69
+ };
70
+ const diff = objectDiffPaths(o1, o2);
71
+ assert.deepEqual(diff, [
72
+ 'a.b.fn',
73
+ 'a.b.arr.[3]',
74
+ 'a.b.arr.[4]',
75
+ 'a.b.c.s',
76
+ 'a.b.c.y',
77
+ 'a.b.c.t',
78
+ ]);
79
+ });
80
+ it('nested arrays', () => {
81
+ const o1 = {
82
+ a: {
83
+ arr: [
84
+ 1,
85
+ [{ one: 1, two: 1 }],
86
+ {
87
+ foo: 'bar',
88
+ },
89
+ 4,
90
+ ],
91
+ },
92
+ };
93
+ const o2 = {
94
+ ...o1,
95
+ a: {
96
+ ...o1.a,
97
+ arr: [
98
+ 1,
99
+ [{ one: 2, two: 2 }],
100
+ {
101
+ foo: 'bar',
102
+ },
103
+ 4,
104
+ ],
105
+ },
106
+ };
107
+ const diff = objectDiffPaths(o1, o2);
108
+ assert.deepEqual(diff, ['a.arr.[1].[0].one', 'a.arr.[1].[0].two']);
109
+ });
110
+ it('lodash compatibility', () => {
111
+ const o1 = {
112
+ a: {
113
+ arr: [
114
+ 1,
115
+ [{ one: 1, two: 1 }],
116
+ {
117
+ foo: 'bar',
118
+ },
119
+ 4,
120
+ ],
121
+ },
122
+ };
123
+ const o2 = {
124
+ ...o1,
125
+ a: {
126
+ ...o1.a,
127
+ arr: [
128
+ 1,
129
+ [{ one: 42, two: 2 }],
130
+ {
131
+ foo: 'bar',
132
+ },
133
+ 4,
134
+ ],
135
+ },
136
+ };
137
+ const diff = objectDiffPaths(o1, o2);
138
+ assert.equal(get(o2, diff[0]), 42);
139
+ });
140
+ });
141
+ //# sourceMappingURL=object-diff-paths.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-diff-paths.test.js","sourceRoot":"","sources":["../../src/object-diff-paths.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const objectValuesToDotNotation: (obj: Record<string, unknown>) => [string, unknown][];
@@ -0,0 +1,23 @@
1
+ // credit: https://github.com/segment-boneyard/tableize
2
+ function tableize(obj) {
3
+ const ret = {};
4
+ type(ret, obj, '');
5
+ return ret;
6
+ }
7
+ function type(schema, obj, prefix) {
8
+ Object.keys(obj).forEach((key) => {
9
+ const val = obj[key];
10
+ key = prefix + key;
11
+ if (typeof val === 'object') {
12
+ type(schema, val, key + '.');
13
+ }
14
+ else {
15
+ schema[key] = val;
16
+ }
17
+ });
18
+ }
19
+ export const objectValuesToDotNotation = (obj) => {
20
+ const results = tableize(obj);
21
+ return Object.entries(results);
22
+ };
23
+ //# sourceMappingURL=object-values-to-dot-notation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-values-to-dot-notation.js","sourceRoot":"","sources":["../../src/object-values-to-dot-notation.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,SAAS,QAAQ,CAAC,GAA4B;IAC5C,MAAM,GAAG,GAAG,EAAE,CAAA;IACd,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;IAClB,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,IAAI,CACX,MAA+B,EAC/B,GAA4B,EAC5B,MAAc;IAEd,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC/B,MAAM,GAAG,GAAQ,GAAG,CAAC,GAAG,CAAC,CAAA;QAEzB,GAAG,GAAG,MAAM,GAAG,GAAG,CAAA;QAElB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,CAAA;QAC9B,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;QACnB,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,GAA4B,EACP,EAAE;IACvB,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;IAE7B,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AAChC,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,21 @@
1
+ import { objectValuesToDotNotation } from './object-values-to-dot-notation.js';
2
+ describe('objectValuesToDotNotation', () => {
3
+ it('converts an object to dot notation', () => {
4
+ const anpObj = {
5
+ admin: {
6
+ permissions: {
7
+ manageOrganization: true,
8
+ },
9
+ },
10
+ ops: {
11
+ access: {
12
+ canViewOtherUsers: true
13
+ }
14
+ }
15
+ };
16
+ const result = objectValuesToDotNotation(anpObj);
17
+ expect(result[0]).toEqual(['admin.permissions.manageOrganization', true]);
18
+ expect(result[1]).toEqual(['ops.access.canViewOtherUsers', true]);
19
+ });
20
+ });
21
+ //# sourceMappingURL=object-values-to-dot-notation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-values-to-dot-notation.test.js","sourceRoot":"","sources":["../../src/object-values-to-dot-notation.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAA;AAE9E,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,MAAM,GAAG;YACb,KAAK,EAAE;gBACL,WAAW,EAAE;oBACX,kBAAkB,EAAE,IAAI;iBACzB;aACF;YACD,GAAG,EAAE;gBACH,MAAM,EAAE;oBACN,iBAAiB,EAAE,IAAI;iBACxB;aACF;SACF,CAAA;QAED,MAAM,MAAM,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAA;QAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,sCAAsC,EAAE,IAAI,CAAC,CAAC,CAAA;QACzE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,8BAA8B,EAAE,IAAI,CAAC,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Checks an object for a property and that it's not undefined.
3
+ * @param obj
4
+ * @param key
5
+ */
6
+ export declare function hasPropertyDefined(obj: Record<string, any>, key: string): boolean;
7
+ export declare function removeUndefined(obj: Record<any, any>): Partial<Record<any, any>>;
@@ -0,0 +1,19 @@
1
+ import clean from 'clean-deep';
2
+ /**
3
+ * Checks an object for a property and that it's not undefined.
4
+ * @param obj
5
+ * @param key
6
+ */
7
+ export function hasPropertyDefined(obj, key) {
8
+ return key in obj && obj[key] !== undefined;
9
+ }
10
+ export function removeUndefined(obj) {
11
+ return clean.default(obj, {
12
+ emptyArrays: false,
13
+ emptyObjects: false,
14
+ NaNValues: true,
15
+ nullValues: false,
16
+ undefinedValues: true,
17
+ });
18
+ }
19
+ //# sourceMappingURL=object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAA;AAE9B;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAwB,EAAE,GAAW;IACtE,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAqB;IACnD,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACxB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,KAAK;QACjB,eAAe,EAAE,IAAI;KACtB,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function randomHEXColor(): string;
@@ -0,0 +1,4 @@
1
+ export function randomHEXColor() {
2
+ return '#' + ((Math.random() * 0xffffff) << 0).toString(16).padStart(6, '0');
3
+ }
4
+ //# sourceMappingURL=random-color.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random-color.js","sourceRoot":"","sources":["../../src/random-color.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc;IAC5B,OAAO,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAC9E,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function sanitizeObjProps<Props>(allowedProperties: string[], props: Props): Props;
@@ -0,0 +1,5 @@
1
+ import { pick } from 'lodash-es';
2
+ export function sanitizeObjProps(allowedProperties, props) {
3
+ return pick(props, allowedProperties);
4
+ }
5
+ //# sourceMappingURL=sanitize-obj-props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitize-obj-props.js","sourceRoot":"","sources":["../../src/sanitize-obj-props.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,UAAU,gBAAgB,CAC9B,iBAA2B,EAC3B,KAAY;IAEZ,OAAO,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAU,CAAA;AAChD,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const sleep: (ms?: number) => Promise<unknown>;
@@ -0,0 +1,6 @@
1
+ export const sleep = (ms = 0) => new Promise((resolve) => {
2
+ setTimeout(() => {
3
+ resolve(true);
4
+ }, ms);
5
+ });
6
+ //# sourceMappingURL=sleep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sleep.js","sourceRoot":"","sources":["../../src/sleep.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAE,GAAE,CAAC,EAAE,EAAE,CAC7B,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;IACtB,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,CAAC,IAAI,CAAC,CAAA;IACf,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export declare function isEmail(email: string): boolean;
@@ -0,0 +1,5 @@
1
+ export function isEmail(email) {
2
+ const re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
3
+ return re.test(String(email).trim().toLowerCase());
4
+ }
5
+ //# sourceMappingURL=is-email.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-email.js","sourceRoot":"","sources":["../../../src/strings/is-email.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,MAAM,EAAE,GACN,uJAAuJ,CAAA;IACzJ,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;AACpD,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function isUrl(str: string): boolean;
@@ -0,0 +1,10 @@
1
+ export function isUrl(str) {
2
+ const pattern = new RegExp('^(https?:\\/\\/)?' + // protocol
3
+ '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // modules name
4
+ '((\\d{1,3}\\.){3}\\d{1,3}))' + // OR ip (v4) address
5
+ '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path
6
+ '(\\?[;&a-z\\d%_.~+=-]*)?' + // query string
7
+ '(\\#[-a-z\\d_]*)?$', 'i');
8
+ return !!pattern.test(str);
9
+ }
10
+ //# sourceMappingURL=is-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-url.js","sourceRoot":"","sources":["../../../src/strings/is-url.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,MAAM,OAAO,GAAG,IAAI,MAAM,CACxB,mBAAmB,GAAG,WAAW;QAC/B,kDAAkD,GAAG,eAAe;QACpE,6BAA6B,GAAG,qBAAqB;QACrD,iCAAiC,GAAG,gBAAgB;QACpD,0BAA0B,GAAG,eAAe;QAC5C,oBAAoB,EACtB,GAAG,CACJ,CAAA;IAED,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC5B,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * This func is used by Entities to create `id` fields, some Entities embed the OrganizationEntity's `id` in their
3
+ * own `id`, in these cases, the `organizationId` is passed as an arg. The position of the embedded organizationId
4
+ * should always be last.
5
+ *
6
+ * The default size we implement here is 14 char,
7
+ *
8
+ * Note: for size, check the collision probability calculator: https://zelark.github.io/nano-id-cc/
9
+ *
10
+ * @param prefix
11
+ * @param opts
12
+ */
13
+ export declare const makeUuid: (prefix?: string | number, opts?: {
14
+ postfix?: string;
15
+ size?: number;
16
+ }) => string;
@@ -0,0 +1,25 @@
1
+ import { customAlphabet } from 'nanoid';
2
+ const CUSTOM_ALPHABET = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz-';
3
+ const generator = customAlphabet(CUSTOM_ALPHABET, 20);
4
+ /**
5
+ * This func is used by Entities to create `id` fields, some Entities embed the OrganizationEntity's `id` in their
6
+ * own `id`, in these cases, the `organizationId` is passed as an arg. The position of the embedded organizationId
7
+ * should always be last.
8
+ *
9
+ * The default size we implement here is 14 char,
10
+ *
11
+ * Note: for size, check the collision probability calculator: https://zelark.github.io/nano-id-cc/
12
+ *
13
+ * @param prefix
14
+ * @param opts
15
+ */
16
+ export const makeUuid = (prefix, opts) => {
17
+ const prfx = prefix || '';
18
+ const psfx = opts?.postfix ? `${opts?.postfix}` : '';
19
+ // no spaces or line-breaks allowed
20
+ // The only special chars allowed are "-" and "_"
21
+ return `${prfx}${generator(opts?.size)}${psfx}`
22
+ .trim()
23
+ .replace(/[^a-zA-Z0-9\-_]/g, '');
24
+ };
25
+ //# sourceMappingURL=make-uuid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-uuid.js","sourceRoot":"","sources":["../../../src/strings/make-uuid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AAEvC,MAAM,eAAe,GACnB,kEAAkE,CAAA;AACpE,MAAM,SAAS,GAAG,cAAc,CAAC,eAAe,EAAE,EAAE,CAAC,CAAA;AAErD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,MAAwB,EACxB,IAA0C,EAC1C,EAAE;IACF,MAAM,IAAI,GAAG,MAAM,IAAI,EAAE,CAAA;IACzB,MAAM,IAAI,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAEpD,mCAAmC;IACnC,iDAAiD;IACjD,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE;SAC5C,IAAI,EAAE;SACN,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAA;AACpC,CAAC,CAAA"}
@@ -0,0 +1,21 @@
1
+ type ObfuscatedString = string;
2
+ export declare function isObfuscatedString(str: string): boolean;
3
+ /**
4
+ * This function is used to obfuscate a string so that it can be used in a URL
5
+ * and is not easily guessable.
6
+ *
7
+ * @note this function earmarks an obfuscated string with a prefix to identify
8
+ * it as an obfuscated string. This is useful for when you need to determine
9
+ * whether a string is obfuscated or not.
10
+ */
11
+ export declare function obfuscateString(str: string): ObfuscatedString;
12
+ /**
13
+ * This function is used to de-obfuscate a string that was obfuscated using
14
+ * the obfuscateString function.
15
+ *
16
+ * @note this function will throw an error if the string is not obfuscated
17
+ */
18
+ export declare function deObfuscateString(obufscatedString: ObfuscatedString, opts?: {
19
+ throw?: boolean;
20
+ }): string;
21
+ export {};
@@ -0,0 +1,46 @@
1
+ import { ParamError } from '@archtx/core';
2
+ const OBFUSCATED_STRING_PREFIX = 'oBfSs';
3
+ export function isObfuscatedString(str) {
4
+ return str.startsWith(OBFUSCATED_STRING_PREFIX);
5
+ }
6
+ /**
7
+ * This function is used to obfuscate a string so that it can be used in a URL
8
+ * and is not easily guessable.
9
+ *
10
+ * @note this function earmarks an obfuscated string with a prefix to identify
11
+ * it as an obfuscated string. This is useful for when you need to determine
12
+ * whether a string is obfuscated or not.
13
+ */
14
+ export function obfuscateString(str) {
15
+ if (!str)
16
+ throw new ParamError('obfuscateString str is required');
17
+ if (isObfuscatedString(str))
18
+ throw new ParamError('obfuscateString str is already obfuscated');
19
+ const encoded = Buffer.from(str).toString('base64');
20
+ return (OBFUSCATED_STRING_PREFIX +
21
+ encoded.replace('+', '-').replace('/', '_').replace(/=+$/g, ''));
22
+ }
23
+ /**
24
+ * This function is used to de-obfuscate a string that was obfuscated using
25
+ * the obfuscateString function.
26
+ *
27
+ * @note this function will throw an error if the string is not obfuscated
28
+ */
29
+ export function deObfuscateString(obufscatedString, opts = { throw: true }) {
30
+ if (!obufscatedString)
31
+ throw new ParamError('deObfuscateString string is required');
32
+ if (!isObfuscatedString(obufscatedString)) {
33
+ if (opts?.throw) {
34
+ throw new ParamError('obfuscateString str is already obfuscated');
35
+ }
36
+ else {
37
+ return obufscatedString;
38
+ }
39
+ }
40
+ // remove the earmark prefix
41
+ obufscatedString = obufscatedString.replace(OBFUSCATED_STRING_PREFIX, '');
42
+ obufscatedString += Array(5 - (obufscatedString.length % 4)).join('=');
43
+ obufscatedString = obufscatedString.replace('-', '+').replace('_', '/');
44
+ return Buffer.from(obufscatedString, 'base64').toString();
45
+ }
46
+ //# sourceMappingURL=obfuscate-string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"obfuscate-string.js","sourceRoot":"","sources":["../../../src/strings/obfuscate-string.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAIzC,MAAM,wBAAwB,GAAG,OAAO,CAAA;AAExC,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,OAAO,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAA;AACjD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,UAAU,CAAC,iCAAiC,CAAC,CAAA;IAEjE,IAAI,kBAAkB,CAAC,GAAG,CAAC;QACzB,MAAM,IAAI,UAAU,CAClB,2CAA2C,CAC5C,CAAA;IAEH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAEnD,OAAO,CACL,wBAAwB;QACxB,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAChE,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,gBAAkC,EAClC,OAA4B,EAAE,KAAK,EAAE,IAAI,EAAE;IAE3C,IAAI,CAAC,gBAAgB;QACnB,MAAM,IAAI,UAAU,CAAC,sCAAsC,CAAC,CAAA;IAE9D,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC1C,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,UAAU,CAClB,2CAA2C,CAC5C,CAAA;QACH,CAAC;aAAM,CAAC;YACN,OAAO,gBAAgB,CAAA;QACzB,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAA;IAEzE,gBAAgB,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAEtE,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAEvE,OAAO,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAA;AAC3D,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @example pluralize('Location', 3) // "Locations"
3
+ * @example pluralize(['Entry', 'Entries'], 2) // "Entries"
4
+ */
5
+ export declare function pluralize(txt: string | string[], count?: number): string;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @example pluralize('Location', 3) // "Locations"
3
+ * @example pluralize(['Entry', 'Entries'], 2) // "Entries"
4
+ */
5
+ export function pluralize(txt, count = 0) {
6
+ if (count > 1) {
7
+ if (Array.isArray(txt)) {
8
+ return txt[1];
9
+ }
10
+ return txt + 's';
11
+ }
12
+ if (Array.isArray(txt)) {
13
+ return txt[0];
14
+ }
15
+ return txt;
16
+ }
17
+ //# sourceMappingURL=pluralize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluralize.js","sourceRoot":"","sources":["../../../src/strings/pluralize.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,GAAsB,EAAE,KAAK,GAAE,CAAC;IACxD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,GAAG,CAAC,CAAC,CAAC,CAAA;QACf,CAAC;QACD,OAAO,GAAG,GAAG,GAAG,CAAA;IAClB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,CAAC,CAAC,CAAA;IACf,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * This function creates a reproducible hash from a given string input.
3
+ * @param input
4
+ */
5
+ export declare function createReproducibleHash(input: string): string;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * This function creates a reproducible hash from a given string input.
3
+ * @param input
4
+ */
5
+ export function createReproducibleHash(input) {
6
+ // Simple implementation using a common string hashing algorithm
7
+ let hash = 0;
8
+ const prime = 31;
9
+ // Handle empty string
10
+ if (input.length === 0) {
11
+ return '0';
12
+ }
13
+ // Apply hashing algorithm
14
+ for (let i = 0; i < input.length; i++) {
15
+ // Get char code
16
+ const char = input.charCodeAt(i);
17
+ // Apply prime multiplication and add char code
18
+ hash = (hash * prime + char) & 0xffffffff;
19
+ }
20
+ // Convert to hex string
21
+ return hash.toString(16);
22
+ }
23
+ //# sourceMappingURL=reproducible-hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reproducible-hash.js","sourceRoot":"","sources":["../../../src/strings/reproducible-hash.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,gEAAgE;IAChE,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,MAAM,KAAK,GAAG,EAAE,CAAA;IAEhB,sBAAsB;IACtB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,0BAA0B;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,gBAAgB;QAChB,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAChC,+CAA+C;QAC/C,IAAI,GAAG,CAAC,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,UAAU,CAAA;IAC3C,CAAC;IAED,wBAAwB;IACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;AAC1B,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Invokes a callback function after a specified timeout.
3
+ *
4
+ * @param {function} callback - The callback function to be invoked after the timeout.
5
+ * @param {number} timeoutMs - The timeout duration in milliseconds.
6
+ * @return {Promise<function>} A promise that resolves to a function that can be called to cancel the timeout.
7
+ */
8
+ export declare function timeout(callback: () => void, timeoutMs: number): Promise<() => void>;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Invokes a callback function after a specified timeout.
3
+ *
4
+ * @param {function} callback - The callback function to be invoked after the timeout.
5
+ * @param {number} timeoutMs - The timeout duration in milliseconds.
6
+ * @return {Promise<function>} A promise that resolves to a function that can be called to cancel the timeout.
7
+ */
8
+ export async function timeout(callback, timeoutMs) {
9
+ const clearTimer = setTimeout(callback, timeoutMs);
10
+ return () => {
11
+ clearTimeout(clearTimer);
12
+ };
13
+ }
14
+ //# sourceMappingURL=timeout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeout.js","sourceRoot":"","sources":["../../src/timeout.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,QAAoB,EACpB,SAAiB;IAEjB,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IAElD,OAAO,GAAG,EAAE;QACV,YAAY,CAAC,UAAU,CAAC,CAAA;IAC1B,CAAC,CAAA;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const undefinedDefault: (value: any, defaultValue: any) => any;
@@ -0,0 +1,2 @@
1
+ export const undefinedDefault = (value, defaultValue) => typeof value === 'undefined' ? defaultValue : value;
2
+ //# sourceMappingURL=undefined-default.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"undefined-default.js","sourceRoot":"","sources":["../../src/undefined-default.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAU,EAAE,YAAiB,EAAE,EAAE,CAC9D,OAAO,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAA"}