@voiceflow/common 8.2.8 → 8.3.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 (206) hide show
  1. package/build/cjs/constants/environment.js +1 -1
  2. package/build/cjs/constants/regexp.d.ts +5 -5
  3. package/build/cjs/constants/regexp.d.ts.map +1 -1
  4. package/build/cjs/crypto/base64.js +4 -4
  5. package/build/cjs/crypto/hex2abc.d.ts.map +1 -1
  6. package/build/cjs/crypto/synchronous.d.ts +1 -1
  7. package/build/cjs/crypto/synchronous.d.ts.map +1 -1
  8. package/build/cjs/crypto/synchronous.js +2 -2
  9. package/build/cjs/types.d.ts +26 -26
  10. package/build/cjs/types.d.ts.map +1 -1
  11. package/build/cjs/utils/array.d.ts +3 -3
  12. package/build/cjs/utils/array.d.ts.map +1 -1
  13. package/build/cjs/utils/array.js +2 -3
  14. package/build/cjs/utils/emails.d.ts.map +1 -1
  15. package/build/cjs/utils/functional.d.ts +4 -4
  16. package/build/cjs/utils/functional.d.ts.map +1 -1
  17. package/build/cjs/utils/functional.js +0 -1
  18. package/build/cjs/utils/id.d.ts +1 -1
  19. package/build/cjs/utils/id.d.ts.map +1 -1
  20. package/build/cjs/utils/intent.d.ts +6 -6
  21. package/build/cjs/utils/intent.d.ts.map +1 -1
  22. package/build/cjs/utils/intent.js +5 -3
  23. package/build/cjs/utils/mathjs.js +1 -1
  24. package/build/cjs/utils/normalized.d.ts +5 -5
  25. package/build/cjs/utils/normalized.d.ts.map +1 -1
  26. package/build/cjs/utils/number.d.ts.map +1 -1
  27. package/build/cjs/utils/number.js +2 -2
  28. package/build/cjs/utils/object/common.d.ts +1 -1
  29. package/build/cjs/utils/object/common.d.ts.map +1 -1
  30. package/build/cjs/utils/object/common.js +2 -2
  31. package/build/cjs/utils/object/deepMap.d.ts +1 -1
  32. package/build/cjs/utils/object/deepMap.d.ts.map +1 -1
  33. package/build/cjs/utils/object/deepMap.js +0 -2
  34. package/build/cjs/utils/object/diff.d.ts +1 -1
  35. package/build/cjs/utils/object/diff.d.ts.map +1 -1
  36. package/build/cjs/utils/object/diff.js +2 -2
  37. package/build/cjs/utils/object/keys.d.ts +2 -1
  38. package/build/cjs/utils/object/keys.d.ts.map +1 -1
  39. package/build/cjs/utils/promise.d.ts.map +1 -1
  40. package/build/cjs/utils/protocol.d.ts +2 -2
  41. package/build/cjs/utils/protocol.d.ts.map +1 -1
  42. package/build/cjs/utils/slot.d.ts.map +1 -1
  43. package/build/cjs/utils/slot.js +2 -2
  44. package/build/cjs/utils/time.js +14 -14
  45. package/build/cjs/utils/typeguard.d.ts +2 -2
  46. package/build/cjs/utils/typeguard.d.ts.map +1 -1
  47. package/build/cjs/utils/variables.d.ts +2 -2
  48. package/build/cjs/utils/variables.d.ts.map +1 -1
  49. package/build/esm/constants/regexp.d.ts +5 -5
  50. package/build/esm/constants/regexp.d.ts.map +1 -1
  51. package/build/esm/crypto/base64.js +2 -2
  52. package/build/esm/crypto/hex2abc.d.ts.map +1 -1
  53. package/build/esm/crypto/synchronous.d.ts +1 -1
  54. package/build/esm/crypto/synchronous.d.ts.map +1 -1
  55. package/build/esm/crypto/synchronous.js +1 -1
  56. package/build/esm/types.d.ts +26 -26
  57. package/build/esm/types.d.ts.map +1 -1
  58. package/build/esm/utils/array.d.ts +3 -3
  59. package/build/esm/utils/array.d.ts.map +1 -1
  60. package/build/esm/utils/array.js +2 -3
  61. package/build/esm/utils/emails.d.ts.map +1 -1
  62. package/build/esm/utils/functional.d.ts +4 -4
  63. package/build/esm/utils/functional.d.ts.map +1 -1
  64. package/build/esm/utils/functional.js +0 -1
  65. package/build/esm/utils/id.d.ts +1 -1
  66. package/build/esm/utils/id.d.ts.map +1 -1
  67. package/build/esm/utils/intent.d.ts +6 -6
  68. package/build/esm/utils/intent.d.ts.map +1 -1
  69. package/build/esm/utils/intent.js +5 -3
  70. package/build/esm/utils/mathjs.js +1 -1
  71. package/build/esm/utils/normalized.d.ts +5 -5
  72. package/build/esm/utils/normalized.d.ts.map +1 -1
  73. package/build/esm/utils/number.d.ts.map +1 -1
  74. package/build/esm/utils/number.js +1 -1
  75. package/build/esm/utils/object/common.d.ts +1 -1
  76. package/build/esm/utils/object/common.d.ts.map +1 -1
  77. package/build/esm/utils/object/common.js +1 -1
  78. package/build/esm/utils/object/deepMap.d.ts +1 -1
  79. package/build/esm/utils/object/deepMap.d.ts.map +1 -1
  80. package/build/esm/utils/object/deepMap.js +0 -2
  81. package/build/esm/utils/object/diff.d.ts +1 -1
  82. package/build/esm/utils/object/diff.d.ts.map +1 -1
  83. package/build/esm/utils/object/diff.js +1 -1
  84. package/build/esm/utils/object/keys.d.ts +2 -1
  85. package/build/esm/utils/object/keys.d.ts.map +1 -1
  86. package/build/esm/utils/promise.d.ts.map +1 -1
  87. package/build/esm/utils/protocol.d.ts +2 -2
  88. package/build/esm/utils/protocol.d.ts.map +1 -1
  89. package/build/esm/utils/slot.d.ts.map +1 -1
  90. package/build/esm/utils/slot.js +1 -1
  91. package/build/esm/utils/time.js +7 -7
  92. package/build/esm/utils/typeguard.d.ts +2 -2
  93. package/build/esm/utils/typeguard.d.ts.map +1 -1
  94. package/build/esm/utils/variables.d.ts +2 -2
  95. package/build/esm/utils/variables.d.ts.map +1 -1
  96. package/package.json +46 -48
  97. package/build/cjs/crypto/hex2abc.test.d.ts +0 -2
  98. package/build/cjs/crypto/hex2abc.test.d.ts.map +0 -1
  99. package/build/cjs/crypto/hex2abc.test.js +0 -12
  100. package/build/cjs/crypto/murmurhash.test.d.ts +0 -2
  101. package/build/cjs/crypto/murmurhash.test.d.ts.map +0 -1
  102. package/build/cjs/crypto/murmurhash.test.js +0 -23
  103. package/build/cjs/utils/__fixtures__/name.json +0 -64
  104. package/build/cjs/utils/array.test.d.ts +0 -2
  105. package/build/cjs/utils/array.test.d.ts.map +0 -1
  106. package/build/cjs/utils/array.test.js +0 -237
  107. package/build/cjs/utils/email.test.d.ts +0 -2
  108. package/build/cjs/utils/email.test.d.ts.map +0 -1
  109. package/build/cjs/utils/email.test.js +0 -22
  110. package/build/cjs/utils/functional.test.d.ts +0 -2
  111. package/build/cjs/utils/functional.test.d.ts.map +0 -1
  112. package/build/cjs/utils/functional.test.js +0 -139
  113. package/build/cjs/utils/id.test.d.ts +0 -2
  114. package/build/cjs/utils/id.test.d.ts.map +0 -1
  115. package/build/cjs/utils/id.test.js +0 -66
  116. package/build/cjs/utils/intent.test.d.ts +0 -2
  117. package/build/cjs/utils/intent.test.d.ts.map +0 -1
  118. package/build/cjs/utils/intent.test.js +0 -100
  119. package/build/cjs/utils/map.test.d.ts +0 -2
  120. package/build/cjs/utils/map.test.d.ts.map +0 -1
  121. package/build/cjs/utils/map.test.js +0 -22
  122. package/build/cjs/utils/object/common.test.d.ts +0 -2
  123. package/build/cjs/utils/object/common.test.d.ts.map +0 -1
  124. package/build/cjs/utils/object/common.test.js +0 -175
  125. package/build/cjs/utils/object/deepMap.test.d.ts +0 -2
  126. package/build/cjs/utils/object/deepMap.test.d.ts.map +0 -1
  127. package/build/cjs/utils/object/deepMap.test.js +0 -114
  128. package/build/cjs/utils/object/diff.test.d.ts +0 -2
  129. package/build/cjs/utils/object/diff.test.d.ts.map +0 -1
  130. package/build/cjs/utils/object/diff.test.js +0 -19
  131. package/build/cjs/utils/object/keys.test.d.ts +0 -2
  132. package/build/cjs/utils/object/keys.test.d.ts.map +0 -1
  133. package/build/cjs/utils/object/keys.test.js +0 -15
  134. package/build/cjs/utils/promise.test.d.ts +0 -2
  135. package/build/cjs/utils/promise.test.d.ts.map +0 -1
  136. package/build/cjs/utils/promise.test.js +0 -25
  137. package/build/cjs/utils/protocol.test.d.ts +0 -2
  138. package/build/cjs/utils/protocol.test.d.ts.map +0 -1
  139. package/build/cjs/utils/protocol.test.js +0 -40
  140. package/build/cjs/utils/slot.test.d.ts +0 -2
  141. package/build/cjs/utils/slot.test.d.ts.map +0 -1
  142. package/build/cjs/utils/slot.test.js +0 -38
  143. package/build/cjs/utils/string.test.d.ts +0 -2
  144. package/build/cjs/utils/string.test.d.ts.map +0 -1
  145. package/build/cjs/utils/string.test.js +0 -53
  146. package/build/cjs/utils/timezones.test.d.ts +0 -2
  147. package/build/cjs/utils/timezones.test.d.ts.map +0 -1
  148. package/build/cjs/utils/timezones.test.js +0 -12
  149. package/build/cjs/utils/typeguard.test.d.ts +0 -2
  150. package/build/cjs/utils/typeguard.test.d.ts.map +0 -1
  151. package/build/cjs/utils/typeguard.test.js +0 -55
  152. package/build/esm/crypto/hex2abc.test.d.ts +0 -2
  153. package/build/esm/crypto/hex2abc.test.d.ts.map +0 -1
  154. package/build/esm/crypto/hex2abc.test.js +0 -10
  155. package/build/esm/crypto/murmurhash.test.d.ts +0 -2
  156. package/build/esm/crypto/murmurhash.test.d.ts.map +0 -1
  157. package/build/esm/crypto/murmurhash.test.js +0 -21
  158. package/build/esm/utils/__fixtures__/name.json +0 -64
  159. package/build/esm/utils/array.test.d.ts +0 -2
  160. package/build/esm/utils/array.test.d.ts.map +0 -1
  161. package/build/esm/utils/array.test.js +0 -235
  162. package/build/esm/utils/email.test.d.ts +0 -2
  163. package/build/esm/utils/email.test.d.ts.map +0 -1
  164. package/build/esm/utils/email.test.js +0 -20
  165. package/build/esm/utils/functional.test.d.ts +0 -2
  166. package/build/esm/utils/functional.test.d.ts.map +0 -1
  167. package/build/esm/utils/functional.test.js +0 -137
  168. package/build/esm/utils/id.test.d.ts +0 -2
  169. package/build/esm/utils/id.test.d.ts.map +0 -1
  170. package/build/esm/utils/id.test.js +0 -64
  171. package/build/esm/utils/intent.test.d.ts +0 -2
  172. package/build/esm/utils/intent.test.d.ts.map +0 -1
  173. package/build/esm/utils/intent.test.js +0 -75
  174. package/build/esm/utils/map.test.d.ts +0 -2
  175. package/build/esm/utils/map.test.d.ts.map +0 -1
  176. package/build/esm/utils/map.test.js +0 -20
  177. package/build/esm/utils/object/common.test.d.ts +0 -2
  178. package/build/esm/utils/object/common.test.d.ts.map +0 -1
  179. package/build/esm/utils/object/common.test.js +0 -173
  180. package/build/esm/utils/object/deepMap.test.d.ts +0 -2
  181. package/build/esm/utils/object/deepMap.test.d.ts.map +0 -1
  182. package/build/esm/utils/object/deepMap.test.js +0 -109
  183. package/build/esm/utils/object/diff.test.d.ts +0 -2
  184. package/build/esm/utils/object/diff.test.d.ts.map +0 -1
  185. package/build/esm/utils/object/diff.test.js +0 -17
  186. package/build/esm/utils/object/keys.test.d.ts +0 -2
  187. package/build/esm/utils/object/keys.test.d.ts.map +0 -1
  188. package/build/esm/utils/object/keys.test.js +0 -13
  189. package/build/esm/utils/promise.test.d.ts +0 -2
  190. package/build/esm/utils/promise.test.d.ts.map +0 -1
  191. package/build/esm/utils/promise.test.js +0 -23
  192. package/build/esm/utils/protocol.test.d.ts +0 -2
  193. package/build/esm/utils/protocol.test.d.ts.map +0 -1
  194. package/build/esm/utils/protocol.test.js +0 -38
  195. package/build/esm/utils/slot.test.d.ts +0 -2
  196. package/build/esm/utils/slot.test.d.ts.map +0 -1
  197. package/build/esm/utils/slot.test.js +0 -13
  198. package/build/esm/utils/string.test.d.ts +0 -2
  199. package/build/esm/utils/string.test.d.ts.map +0 -1
  200. package/build/esm/utils/string.test.js +0 -51
  201. package/build/esm/utils/timezones.test.d.ts +0 -2
  202. package/build/esm/utils/timezones.test.d.ts.map +0 -1
  203. package/build/esm/utils/timezones.test.js +0 -10
  204. package/build/esm/utils/typeguard.test.d.ts +0 -2
  205. package/build/esm/utils/typeguard.test.d.ts.map +0 -1
  206. package/build/esm/utils/typeguard.test.js +0 -53
@@ -1,173 +0,0 @@
1
- import { hasProperty, isObject, mapEntry, mapValue, omit, omitBy, pick, pickBy, selectField, selectID, selectKey, selectValue, shallowPartialEquals, } from './common.js';
2
- describe('Utils | object | common', () => {
3
- describe('selectField()', () => {
4
- it('creates function', () => {
5
- expect(typeof selectField('field')).toBe('function');
6
- });
7
- it('works', () => {
8
- expect(selectField('field')({ field: 1 })).toBe(1);
9
- expect(selectField('field2')({ field1: 1, field2: 2 })).toBe(2);
10
- });
11
- });
12
- describe('selectID()', () => {
13
- it('works', () => {
14
- expect(selectID({ id: '1' })).toBe('1');
15
- expect(selectID({ id: 0 })).toBe(0);
16
- });
17
- });
18
- describe('selectKey()', () => {
19
- it('works', () => {
20
- expect(selectKey({ key: '1' })).toBe('1');
21
- expect(selectKey({ key: 0 })).toBe(0);
22
- });
23
- });
24
- describe('selectValue()', () => {
25
- it('works', () => {
26
- expect(selectValue({ value: '1' })).toBe('1');
27
- expect(selectValue({ value: 0 })).toBe(0);
28
- });
29
- });
30
- describe('isObject()', () => {
31
- it('works positive', () => {
32
- expect(isObject({})).toBe(true);
33
- expect(isObject({})).toBe(true);
34
- expect(isObject([])).toBe(true);
35
- // eslint-disable-next-line no-new-wrappers
36
- expect(isObject(new Number(1))).toBe(true);
37
- });
38
- it('works negative', () => {
39
- expect(isObject(null)).toBe(false);
40
- expect(isObject(undefined)).toBe(false);
41
- expect(isObject('')).toBe(false);
42
- expect(isObject('lorem')).toBe(false);
43
- expect(isObject(0)).toBe(false);
44
- expect(isObject(Symbol('s'))).toBe(false);
45
- });
46
- });
47
- describe('hasProperty()', () => {
48
- it('works', () => {
49
- expect(hasProperty({ value: '1' }, 'value')).toBe(true);
50
- expect(hasProperty({}, 'key')).toBe(false);
51
- });
52
- });
53
- describe('omit()', () => {
54
- it('works with 0-3 keys', () => {
55
- expect(omit({ value1: '1' }, [])).toEqual({ value1: '1' });
56
- expect(omit({ value1: '1' }, ['value1'])).toEqual({});
57
- expect(omit({ value1: '1', value2: '2', value3: 3 }, ['value1', 'value2'])).toEqual({ value3: 3 });
58
- expect(omit({ value1: '1', value2: '2', value3: 3, value4: 4 }, ['value1', 'value2', 'value3'])).toEqual({ value4: 4 });
59
- });
60
- it('works with 3+ keys', () => {
61
- expect(omit({ value1: '1', value2: '2', value3: 3 }, ['value1', 'value2', 'value3'])).toEqual({});
62
- expect(omit({ value1: '1', value2: '2', value3: 3, value4: undefined, value5: null }, ['value1', 'value2', 'value3', 'value5'])).toEqual({
63
- value4: undefined,
64
- });
65
- });
66
- });
67
- describe('pick()', () => {
68
- it('works with 0-3 keys', () => {
69
- expect(pick({ value1: '1' }, [])).toEqual({});
70
- expect(pick({ value1: '1' }, ['value1'])).toEqual({ value1: '1' });
71
- expect(pick({ value1: '1', value2: '2', value3: 3 }, ['value1', 'value2'])).toEqual({ value1: '1', value2: '2' });
72
- expect(pick({ value1: '1', value2: '2', value3: 3, value4: 4 }, ['value1', 'value2', 'value3'])).toEqual({
73
- value1: '1',
74
- value2: '2',
75
- value3: 3,
76
- });
77
- });
78
- it('works with 3+ keys', () => {
79
- expect(pick({ value1: '1', value2: '2', value3: 3 }, ['value1', 'value2', 'value3'])).toEqual({ value1: '1', value2: '2', value3: 3 });
80
- expect(pick({ value1: '1', value2: '2', value3: 3, value4: undefined, value5: null }, ['value1', 'value2', 'value3', 'value5'])).toEqual({
81
- value1: '1',
82
- value2: '2',
83
- value3: 3,
84
- value5: null,
85
- });
86
- });
87
- it('works with undefined keys', () => {
88
- expect(pick({ value1: '1', value2: '2' }, ['value1', 'value2', 'value3'])).toEqual({ value1: '1', value2: '2' });
89
- });
90
- });
91
- describe('omitBy()', () => {
92
- it('works', () => {
93
- const keys = new Set(['value1', 'value2', 'value5']);
94
- expect(omitBy({ value1: '1' }, () => false)).toEqual({ value1: '1' });
95
- expect(omitBy({ value1: '1' }, (key) => keys.has(key))).toEqual({});
96
- expect(omitBy({ value1: '1', value2: '2', value3: 3 }, (key) => keys.has(key))).toEqual({ value3: 3 });
97
- expect(omitBy({ value1: '1', value2: '2', value3: 3 }, (key) => key === 'value3' || keys.has(key))).toEqual({});
98
- expect(omitBy({ value1: '1', value2: '2', value3: 3, value4: undefined, value5: null }, (key) => keys.has(key))).toEqual({
99
- value3: 3,
100
- value4: undefined,
101
- });
102
- });
103
- });
104
- describe('pickBy()', () => {
105
- it('works', () => {
106
- const keys = new Set(['value1', 'value2', 'value5']);
107
- expect(pickBy({ value1: '1' }, () => false)).toEqual({});
108
- expect(pickBy({ value1: '1' }, (key) => keys.has(key))).toEqual({ value1: '1' });
109
- expect(pickBy({ value1: '1', value2: '2', value3: 3 }, (key) => keys.has(key))).toEqual({
110
- value1: '1',
111
- value2: '2',
112
- });
113
- expect(pickBy({ value1: '1', value2: '2', value3: 3 }, (key) => key === 'value3' || keys.has(key))).toEqual({
114
- value1: '1',
115
- value2: '2',
116
- value3: 3,
117
- });
118
- expect(pickBy({ value1: '1', value2: '2', value3: 3, value4: undefined, value5: null }, (key) => keys.has(key))).toEqual({
119
- value1: '1',
120
- value2: '2',
121
- value5: null,
122
- });
123
- });
124
- });
125
- describe('mapValue()', () => {
126
- it('works', () => {
127
- const objects = {
128
- a: { id: 1 },
129
- b: { id: 2 },
130
- c: { id: 3 },
131
- };
132
- expect(mapValue(objects, ({ id }) => id)).toEqual({ a: 1, b: 2, c: 3 });
133
- });
134
- });
135
- describe('mapEntry()', () => {
136
- it('works', () => {
137
- const objects = {
138
- a: { id: 1 },
139
- b: { id: 2 },
140
- c: { id: 3 },
141
- };
142
- expect(mapEntry(objects, ([key, { id }]) => [`new_${key}`, id])).toEqual({ new_a: 1, new_b: 2, new_c: 3 });
143
- });
144
- });
145
- describe('shallowPartialEquals()', () => {
146
- it('works', () => {
147
- const obj1 = {
148
- a: 1,
149
- b: 2,
150
- };
151
- const obj1Update = {
152
- a: 1,
153
- c: undefined,
154
- };
155
- expect(shallowPartialEquals(obj1, obj1Update)).toBe(false);
156
- const obj2 = {
157
- a: 1,
158
- b: 2,
159
- };
160
- const obj2Update = {
161
- a: 1,
162
- };
163
- expect(shallowPartialEquals(obj2, obj2Update)).toBe(true);
164
- const obj3 = {
165
- a: 1,
166
- };
167
- const obj3Update = {
168
- b: 1,
169
- };
170
- expect(shallowPartialEquals(obj3, obj3Update)).toBe(false);
171
- });
172
- });
173
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=deepMap.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deepMap.test.d.ts","sourceRoot":"","sources":["../../../../src/utils/object/deepMap.test.ts"],"names":[],"mappings":""}
@@ -1,109 +0,0 @@
1
- import ObjectID from 'bson-objectid';
2
- import { deepMap, deepMapKeys } from './deepMap.js';
3
- describe('Utils | object | deepMap', () => {
4
- describe('deepMap()', () => {
5
- const transform = (n) => (typeof n === 'number' ? n ** 2 : Number(n) ** 2);
6
- it('transforms simple object', () => {
7
- expect(deepMap({ two: 2, three: '3' }, transform)).toEqual({ two: 4, three: 9 });
8
- });
9
- it('transforms simple array', () => {
10
- expect(deepMap(['2', 3], transform)).toEqual([4, 9]);
11
- });
12
- it("don't change non plain objects", () => {
13
- const transform = (n) => (typeof n === 'string' ? Number(n) ** 2 : n);
14
- const date = new Date();
15
- expect(deepMap(['2', date], transform)).toEqual([4, date]);
16
- });
17
- it('transform objectID', () => {
18
- const originalID = new ObjectID();
19
- const transformedID = new ObjectID();
20
- const transform = (n) => (n === originalID ? transformedID : n);
21
- const date = new Date();
22
- expect(deepMap(['2', date, originalID], transform)).toEqual(['2', date, transformedID]);
23
- });
24
- it('transforms object with nested objects/arrays', () => {
25
- expect(deepMap({ two: '2', obj: { three: '3', four: 4 }, arr: [5, '6'] }, transform)).toEqual({
26
- two: 4,
27
- obj: { three: 9, four: 16 },
28
- arr: [25, 36],
29
- });
30
- });
31
- it('transforms array with nested objects/arrays', () => {
32
- expect(deepMap([2, { three: 3, four: 4 }, [5, 6]], transform)).toEqual([4, { three: 9, four: 16 }, [25, 36]]);
33
- });
34
- it('transforms an object with circular references', () => {
35
- const obj = { two: 2, arr: [3, 4], self: null, arr2: null };
36
- obj.self = obj;
37
- obj.arr2 = obj.arr;
38
- const exp = { two: 4, arr: [9, 16], self: null, arr2: null };
39
- exp.self = exp;
40
- exp.arr2 = exp.arr;
41
- expect(deepMap(obj, transform)).toEqual(exp);
42
- });
43
- it('transforms object in place', () => {
44
- const arr = [3];
45
- const obj = { two: 2, arr };
46
- const result = deepMap(obj, transform, { inPlace: true });
47
- expect(result).toEqual({ two: 4, arr: [9] });
48
- expect(result).toEqual(obj);
49
- });
50
- it('transforms sub-objects/sub-arrays in place', () => {
51
- const arr = [3];
52
- const obj = { two: 2, arr };
53
- expect(deepMap(obj, transform, { inPlace: true }).arr).toEqual(arr);
54
- });
55
- it('defaults to false', () => {
56
- const arr = [3];
57
- const obj = { two: 2, arr };
58
- expect(deepMap(obj, transform)).not.toEqual(obj);
59
- });
60
- it('mapFunction is called once per primitive value', () => {
61
- const square = jest.fn(transform);
62
- deepMap({ two: 2, obj: { three: 3 }, arr: [4] }, square);
63
- expect(square).toHaveBeenCalledTimes(3);
64
- });
65
- it('mapFunction is called with value and key', () => {
66
- const square = jest.fn(transform);
67
- deepMap({ two: 2, arr: [3, 6] }, square);
68
- expect(square).toHaveBeenNthCalledWith(1, 2, 'two');
69
- expect(square).toHaveBeenNthCalledWith(2, 3, 0);
70
- expect(square).toHaveBeenNthCalledWith(3, 6, 1);
71
- });
72
- });
73
- describe('deepMapKeys()', () => {
74
- const transform = (key) => key.toUpperCase();
75
- it('transforms keys of simple object', () => {
76
- expect(deepMapKeys({ one: 1, two: 2 }, transform)).toEqual({ ONE: 1, TWO: 2 });
77
- });
78
- it('transforms keys of object with nested objects/arrays', () => {
79
- expect(deepMapKeys({ one: 1, obj: { two: 2, three: 3 }, arr: [4, 5] }, transform)).toEqual({
80
- ONE: 1,
81
- OBJ: { TWO: 2, THREE: 3 },
82
- ARR: [4, 5],
83
- });
84
- });
85
- it('transforms keys of array with nested object/array', () => {
86
- expect(deepMapKeys([1, { two: 2, three: 3, arr: [4, { five: 5 }] }], transform)).toEqual([1, { TWO: 2, THREE: 3, ARR: [4, { FIVE: 5 }] }]);
87
- });
88
- it('transforms an object with circular references', () => {
89
- const obj = { one: 1, arr: [2, 3], self: null, arr2: [] };
90
- obj.self = obj;
91
- obj.arr2 = obj.arr;
92
- const exp = { ONE: 1, ARR: [2, 3], SELF: null, ARR2: [] };
93
- exp.SELF = exp;
94
- exp.ARR2 = exp.ARR;
95
- expect(deepMapKeys(obj, transform)).toEqual(exp);
96
- });
97
- it('mapFunction is called once per object property', () => {
98
- const caps = jest.fn(transform);
99
- deepMapKeys({ one: 1, obj: { two: 2, three: 3 }, arr: [4, 5] }, caps);
100
- expect(caps).toHaveBeenCalledTimes(5);
101
- });
102
- it('mapFunction is called with key and value', () => {
103
- const caps = jest.fn(transform);
104
- deepMapKeys({ one: 1, arr: [2, 3] }, caps);
105
- expect(caps).toHaveBeenNthCalledWith(1, 'one', 1);
106
- expect(caps).toHaveBeenNthCalledWith(2, 'arr', [2, 3]);
107
- });
108
- });
109
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=diff.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"diff.test.d.ts","sourceRoot":"","sources":["../../../../src/utils/object/diff.test.ts"],"names":[],"mappings":""}
@@ -1,17 +0,0 @@
1
- import { getTopLevelDiff } from './diff.js';
2
- describe('Utils | object | diff', () => {
3
- describe('getTopLevelDiff()', () => {
4
- it('gets diff of arrays', () => {
5
- expect(getTopLevelDiff(['foo', 'bar', 'fuzz'], ['fizz', 'buzz', 'fuzz'])).toEqual(['foo', 'bar']);
6
- });
7
- it('gets diff of objects', () => {
8
- expect(getTopLevelDiff({ foo: 1, bar: 2, fuzz: 3 }, { fizz: 4, buzz: 5, fuzz: 3 })).toEqual({ foo: 1, bar: 2 });
9
- });
10
- it('gets diff of objects with custom compare', () => {
11
- expect(getTopLevelDiff({ foo: 1, bar: 2, fuzz: 6 }, { fizz: 4, buzz: 5, fuzz: 9 }, (lhs, rhs) => typeof lhs === typeof rhs)).toEqual({
12
- foo: 1,
13
- bar: 2,
14
- });
15
- });
16
- });
17
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=keys.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keys.test.d.ts","sourceRoot":"","sources":["../../../../src/utils/object/keys.test.ts"],"names":[],"mappings":""}
@@ -1,13 +0,0 @@
1
- import { getKeys } from './keys.js';
2
- describe('Utils | object | keys', () => {
3
- describe('getKeys()', () => {
4
- it('gets keys with a strict type', () => {
5
- const foo = Symbol('foo');
6
- const bar = Symbol('bar');
7
- const fizz = Symbol('fizz');
8
- const keys = getKeys({ [foo]: 1, [bar]: 2, [fizz]: 3 });
9
- // this would throw a compiler error if `keys[0]` was a `string`
10
- keys[0] === foo;
11
- });
12
- });
13
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=promise.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"promise.test.d.ts","sourceRoot":"","sources":["../../../src/utils/promise.test.ts"],"names":[],"mappings":""}
@@ -1,23 +0,0 @@
1
- import { delay, rejectIn } from './promise.js';
2
- describe('Utils | promise', () => {
3
- describe('delay()', () => {
4
- it('delay for the provided time before resolving', async () => {
5
- const timeout = 10;
6
- const start = Date.now();
7
- await delay(timeout);
8
- expect(Date.now() - start).toBeGreaterThanOrEqual(timeout);
9
- });
10
- });
11
- describe('rejectIn()', () => {
12
- it('delay for the provided time before rejecting', async () => {
13
- const timeout = 10;
14
- const start = Date.now();
15
- try {
16
- await rejectIn(timeout);
17
- }
18
- catch (err) {
19
- expect(Date.now() - start).toBeGreaterThanOrEqual(timeout);
20
- }
21
- });
22
- });
23
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=protocol.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"protocol.test.d.ts","sourceRoot":"","sources":["../../../src/utils/protocol.test.ts"],"names":[],"mappings":""}
@@ -1,38 +0,0 @@
1
- import { Channel, createChannel, typeFactory } from './protocol.js';
2
- describe('Utils | protocol', () => {
3
- describe('typeFactory()', () => {
4
- it('should generate a prefixed type', () => {
5
- expect(typeFactory('red', 'blue')('green')).toBe('red.blue.green');
6
- });
7
- });
8
- describe('Channel', () => {
9
- describe('build()', () => {
10
- it('store original build function directly', () => {
11
- const channel = new Channel(['foo', 'bar'], ({ foo, bar }) => `${foo}/fizz/buzz/${bar}`);
12
- expect(channel.build({ foo: '123', bar: '456' })).toBe('123/fizz/buzz/456');
13
- });
14
- });
15
- describe('buildMatcher()', () => {
16
- it('store build a matcher using the provided argument names', () => {
17
- const channel = new Channel(['foo', 'bar'], ({ foo, bar }) => `${foo}/fizz/buzz/${bar}`);
18
- expect(channel.buildMatcher()).toBe(':foo/fizz/buzz/:bar');
19
- });
20
- });
21
- describe('extend()', () => {
22
- it('create a channel built to be suffixed to the output of an existing channel', () => {
23
- const fooChannel = new Channel(['foo'], ({ foo }) => `foo/${foo}`);
24
- const barChannel = fooChannel.extend(['bar'], ({ bar }) => `bar/${bar}`);
25
- expect(barChannel.buildMatcher()).toBe('foo/:foo/bar/:bar');
26
- expect(barChannel.build({ foo: '123', bar: '456' })).toBe('foo/123/bar/456');
27
- });
28
- });
29
- describe('createChannel()', () => {
30
- it('constructs a new Channel', () => {
31
- const channel = createChannel(['foo'], ({ foo }) => `foo/${foo}`);
32
- expect(channel).toBeInstanceOf(Channel);
33
- expect(channel.buildMatcher()).toBe('foo/:foo');
34
- expect(channel.build({ foo: '123' })).toBe('foo/123');
35
- });
36
- });
37
- });
38
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=slot.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"slot.test.d.ts","sourceRoot":"","sources":["../../../src/utils/slot.test.ts"],"names":[],"mappings":""}
@@ -1,13 +0,0 @@
1
- import * as SlotUtils from './slot.js';
2
- describe('Utils | slot', () => {
3
- describe('getValueWithSynonyms', () => {
4
- it('extracts synonyms', () => {
5
- expect(SlotUtils.getValueWithSynonyms('a, b, c, d')).toEqual(['a', ['b', 'c', 'd']]);
6
- });
7
- });
8
- describe('mapSlotAnnotations', () => {
9
- it('renames keys and maps', () => {
10
- expect(SlotUtils.mapSlotAnnotations('test {{[name].key}} thing', () => ({ key: 'newKey', name: 'newName' }))).toEqual('test {{[newName].newKey}} thing');
11
- });
12
- });
13
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=string.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"string.test.d.ts","sourceRoot":"","sources":["../../../src/utils/string.test.ts"],"names":[],"mappings":""}
@@ -1,51 +0,0 @@
1
- import { arrayStringReplace, capitalizeAllWords, capitalizeFirstLetter, conditionalReplace, removeTrailingUnderscores, stripHTMLTags, } from './string.js';
2
- describe('Utils | string', () => {
3
- describe('capitalizeFirstLetter()', () => {
4
- it('capitalizes the first letter', () => {
5
- expect(capitalizeFirstLetter('')).toBe('');
6
- expect(capitalizeFirstLetter('123')).toBe('123');
7
- expect(capitalizeFirstLetter('abc')).toBe('Abc');
8
- });
9
- });
10
- describe('capitalizeAllWords()', () => {
11
- it('capitalizes all the space-delimited words', () => {
12
- expect(capitalizeAllWords('')).toBe('');
13
- expect(capitalizeAllWords('abc')).toBe('Abc');
14
- expect(capitalizeAllWords('abc def')).toBe('Abc Def');
15
- });
16
- });
17
- describe('arrayStringReplace()', () => {
18
- it('replace a pattern for each item in an array', () => {
19
- expect(arrayStringReplace('x', 'y', [])).toEqual([]);
20
- expect(arrayStringReplace('x', 'y', ['foo'])).toEqual(['foo']);
21
- expect(arrayStringReplace('x', 'y', ['xyz', 'foo', 'fox', 'bar'])).toEqual(['yyz', 'foo', 'foy', 'bar']);
22
- });
23
- });
24
- describe('stripHTMLTags()', () => {
25
- it('remove HTML tags from a string', () => {
26
- expect(stripHTMLTags('')).toBe('');
27
- expect(stripHTMLTags('<')).toBe('<');
28
- expect(stripHTMLTags('<>')).toBe('<>');
29
- expect(stripHTMLTags('<foo>')).toBe('');
30
- expect(stripHTMLTags('a b c d')).toBe('a b c d');
31
- expect(stripHTMLTags('a <foo> b <bar> c <fizz> d')).toBe('a b c d');
32
- });
33
- });
34
- describe('removeTrailingUnderscores()', () => {
35
- it('remove leading and trailing underscore characters', () => {
36
- expect(removeTrailingUnderscores('')).toBe('');
37
- expect(removeTrailingUnderscores('foo')).toBe('foo');
38
- expect(removeTrailingUnderscores('__foo')).toBe('foo');
39
- expect(removeTrailingUnderscores('foo__')).toBe('foo');
40
- expect(removeTrailingUnderscores('__foo__')).toBe('foo');
41
- });
42
- });
43
- describe('conditionalReplace()', () => {
44
- it('do nothing with falsey value', () => {
45
- expect(conditionalReplace('fizz', /i/)).toBe('fizz');
46
- });
47
- it('use truthy value as replacement value', () => {
48
- expect(conditionalReplace('fizz', /i/, 'u')).toBe('fuzz');
49
- });
50
- });
51
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=timezones.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"timezones.test.d.ts","sourceRoot":"","sources":["../../../src/utils/timezones.test.ts"],"names":[],"mappings":""}
@@ -1,10 +0,0 @@
1
- import { unique } from './array.js';
2
- import { TIMEZONES } from './timezones.js';
3
- describe('Utils | timezones', () => {
4
- describe('TIMEZONES', () => {
5
- it('a list of all timezones', () => {
6
- expect(TIMEZONES.length).toBe(490);
7
- expect(unique(TIMEZONES)).toEqual(TIMEZONES);
8
- });
9
- });
10
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=typeguard.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"typeguard.test.d.ts","sourceRoot":"","sources":["../../../src/utils/typeguard.test.ts"],"names":[],"mappings":""}
@@ -1,53 +0,0 @@
1
- import { createTypedTypeguardCreator, createTypeguardCreator } from './typeguard.js';
2
- describe('Utils | typeguard', () => {
3
- describe('createTypeguardCreator()', () => {
4
- it('casts the guarded argument', () => {
5
- const createTypeguard = createTypeguardCreator();
6
- const input = 'foo';
7
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
8
- const assertTyped = (_arg) => undefined;
9
- const typeguard = createTypeguard('foo');
10
- if (typeguard(input)) {
11
- assertTyped(input);
12
- }
13
- });
14
- it('typeguard against a single value', () => {
15
- const createTypeguard = createTypeguardCreator();
16
- const typeguard = createTypeguard('foo');
17
- expect(typeguard('foo')).toBe(true);
18
- expect(typeguard('bar')).toBe(false);
19
- });
20
- it('typeguard against an array of values', () => {
21
- const createTypeguard = createTypeguardCreator();
22
- const typeguard = createTypeguard(['foo', 'bar']);
23
- expect(typeguard('foo')).toBe(true);
24
- expect(typeguard('bar')).toBe(true);
25
- expect(typeguard('fizz')).toBe(false);
26
- });
27
- });
28
- describe('createTypedTypeguardCreator()', () => {
29
- it('casts the guarded argument', () => {
30
- const createTypeguard = createTypedTypeguardCreator();
31
- const input = { type: 'foo', id: 123 };
32
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
33
- const assertTyped = (_arg) => undefined;
34
- const typeguard = createTypeguard('foo');
35
- if (typeguard(input)) {
36
- assertTyped(input);
37
- }
38
- });
39
- it('typeguard against a single value', () => {
40
- const createTypeguard = createTypedTypeguardCreator();
41
- const typeguard = createTypeguard('foo');
42
- expect(typeguard({ type: 'foo', id: 1 })).toBe(true);
43
- expect(typeguard({ type: 'bar', id: 2 })).toBe(false);
44
- });
45
- it('typeguard against an array of values', () => {
46
- const createTypeguard = createTypedTypeguardCreator();
47
- const typeguard = createTypeguard(['foo', 'bar']);
48
- expect(typeguard({ type: 'foo', id: 1 })).toBe(true);
49
- expect(typeguard({ type: 'bar', id: 2 })).toBe(true);
50
- expect(typeguard({ type: 'fizz', id: 3 })).toBe(false);
51
- });
52
- });
53
- });