@rspack/core 0.0.15 → 0.0.17

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 (111) hide show
  1. package/dist/ResolverFactory.d.ts +49 -0
  2. package/dist/ResolverFactory.d.ts.map +1 -0
  3. package/dist/ResolverFactory.js +117 -0
  4. package/dist/ResolverFactory.js.map +1 -0
  5. package/dist/compilation.d.ts +7 -3
  6. package/dist/compilation.d.ts.map +1 -1
  7. package/dist/compilation.js +18 -12
  8. package/dist/compilation.js.map +1 -1
  9. package/dist/compiler.d.ts +3 -0
  10. package/dist/compiler.d.ts.map +1 -1
  11. package/dist/compiler.js +3 -0
  12. package/dist/compiler.js.map +1 -1
  13. package/dist/config/cache.d.ts.map +1 -1
  14. package/dist/config/cache.js +3 -4
  15. package/dist/config/cache.js.map +1 -1
  16. package/dist/config/defaults.d.ts.map +1 -1
  17. package/dist/config/defaults.js +105 -4
  18. package/dist/config/defaults.js.map +1 -1
  19. package/dist/config/devtool.d.ts +1 -0
  20. package/dist/config/devtool.d.ts.map +1 -1
  21. package/dist/config/devtool.js +5 -1
  22. package/dist/config/devtool.js.map +1 -1
  23. package/dist/config/index.d.ts +10 -7
  24. package/dist/config/index.d.ts.map +1 -1
  25. package/dist/config/index.js +10 -3
  26. package/dist/config/index.js.map +1 -1
  27. package/dist/config/module.d.ts +38 -3
  28. package/dist/config/module.d.ts.map +1 -1
  29. package/dist/config/module.js +209 -47
  30. package/dist/config/module.js.map +1 -1
  31. package/dist/config/node.d.ts +9 -0
  32. package/dist/config/node.d.ts.map +1 -0
  33. package/dist/config/node.js +15 -0
  34. package/dist/config/node.js.map +1 -0
  35. package/dist/config/optimization.d.ts +5 -0
  36. package/dist/config/optimization.d.ts.map +1 -1
  37. package/dist/config/optimization.js +3 -1
  38. package/dist/config/optimization.js.map +1 -1
  39. package/dist/config/plugin.d.ts +1 -1
  40. package/dist/config/plugin.d.ts.map +1 -1
  41. package/dist/config/target.js +1 -1
  42. package/dist/config/target.js.map +1 -1
  43. package/dist/node/NodeEnvironmentPlugin.d.ts +27 -0
  44. package/dist/node/NodeEnvironmentPlugin.d.ts.map +1 -0
  45. package/dist/node/NodeEnvironmentPlugin.js +54 -0
  46. package/dist/node/NodeEnvironmentPlugin.js.map +1 -0
  47. package/dist/rspack.d.ts.map +1 -1
  48. package/dist/rspack.js +6 -15
  49. package/dist/rspack.js.map +1 -1
  50. package/dist/rspackOptionsApply.d.ts.map +1 -1
  51. package/dist/rspackOptionsApply.js +29 -0
  52. package/dist/rspackOptionsApply.js.map +1 -1
  53. package/dist/stats.d.ts +1 -0
  54. package/dist/stats.d.ts.map +1 -1
  55. package/dist/stats.js +3 -0
  56. package/dist/stats.js.map +1 -1
  57. package/dist/util/cleverMerge.d.ts +79 -0
  58. package/dist/util/cleverMerge.d.ts.map +1 -0
  59. package/dist/util/cleverMerge.js +531 -0
  60. package/dist/util/cleverMerge.js.map +1 -0
  61. package/dist/util/createHash.d.ts +7 -0
  62. package/dist/util/createHash.d.ts.map +1 -0
  63. package/dist/util/createHash.js +166 -0
  64. package/dist/util/createHash.js.map +1 -0
  65. package/dist/util/createSource.d.ts +6 -0
  66. package/dist/util/createSource.d.ts.map +1 -0
  67. package/dist/util/createSource.js +48 -0
  68. package/dist/util/createSource.js.map +1 -0
  69. package/dist/util/hash/BatchedHash.d.ts +16 -0
  70. package/dist/util/hash/BatchedHash.d.ts.map +1 -0
  71. package/dist/util/hash/BatchedHash.js +61 -0
  72. package/dist/util/hash/BatchedHash.js.map +1 -0
  73. package/dist/util/hash/index.d.ts +19 -0
  74. package/dist/util/hash/index.d.ts.map +1 -0
  75. package/dist/util/hash/index.js +28 -0
  76. package/dist/util/hash/index.js.map +1 -0
  77. package/dist/util/hash/md4.d.ts +3 -0
  78. package/dist/util/hash/md4.d.ts.map +1 -0
  79. package/dist/util/hash/md4.js +13 -0
  80. package/dist/util/hash/md4.js.map +1 -0
  81. package/dist/util/hash/wasm-hash.d.ts +7 -0
  82. package/dist/util/hash/wasm-hash.d.ts.map +1 -0
  83. package/dist/util/hash/wasm-hash.js +162 -0
  84. package/dist/util/hash/wasm-hash.js.map +1 -0
  85. package/dist/util/hash/xxhash64.d.ts +3 -0
  86. package/dist/util/hash/xxhash64.d.ts.map +1 -0
  87. package/dist/util/hash/xxhash64.js +13 -0
  88. package/dist/util/hash/xxhash64.js.map +1 -0
  89. package/dist/util/identifier.d.ts +77 -0
  90. package/dist/util/identifier.d.ts.map +1 -0
  91. package/dist/util/identifier.js +345 -0
  92. package/dist/util/identifier.js.map +1 -0
  93. package/dist/util/index.d.ts +6 -0
  94. package/dist/util/index.d.ts.map +1 -0
  95. package/dist/util/index.js +18 -0
  96. package/dist/util/index.js.map +1 -0
  97. package/dist/util/memoize.d.ts +2 -0
  98. package/dist/util/memoize.d.ts.map +1 -0
  99. package/dist/util/memoize.js +22 -0
  100. package/dist/util/memoize.js.map +1 -0
  101. package/package.json +25 -13
  102. package/dist/bundle.js +0 -1
  103. package/dist/dd.js +0 -1
  104. package/dist/dynamic_js.xxxx.js +0 -1
  105. package/dist/main.js +0 -1
  106. package/dist/main.xxxx.js +0 -1
  107. package/dist/runtime.js +0 -1
  108. package/dist/web/polyfillBuiltins.d.ts +0 -5
  109. package/dist/web/polyfillBuiltins.d.ts.map +0 -1
  110. package/dist/web/polyfillBuiltins.js +0 -43
  111. package/dist/web/polyfillBuiltins.js.map +0 -1
@@ -0,0 +1,531 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+ /** @type {WeakMap<object, WeakMap<object, object>>} */
7
+ const mergeCache = new WeakMap();
8
+ /** @type {WeakMap<object, Map<string, Map<string|number|boolean, object>>>} */
9
+ const setPropertyCache = new WeakMap();
10
+ const DELETE = Symbol("DELETE");
11
+ const DYNAMIC_INFO = Symbol("cleverMerge dynamic info");
12
+ /**
13
+ * Merges two given objects and caches the result to avoid computation if same objects passed as arguments again.
14
+ * @template T
15
+ * @template O
16
+ * @example
17
+ * // performs cleverMerge(first, second), stores the result in WeakMap and returns result
18
+ * cachedCleverMerge({a: 1}, {a: 2})
19
+ * {a: 2}
20
+ * // when same arguments passed, gets the result from WeakMap and returns it.
21
+ * cachedCleverMerge({a: 1}, {a: 2})
22
+ * {a: 2}
23
+ * @param {T} first first object
24
+ * @param {O} second second object
25
+ * @returns {T & O | T | O} merged object of first and second object
26
+ */
27
+ const cachedCleverMerge = (first, second) => {
28
+ if (second === undefined)
29
+ return first;
30
+ if (first === undefined)
31
+ return second;
32
+ if (typeof second !== "object" || second === null)
33
+ return second;
34
+ if (typeof first !== "object" || first === null)
35
+ return first;
36
+ let innerCache = mergeCache.get(first);
37
+ if (innerCache === undefined) {
38
+ innerCache = new WeakMap();
39
+ mergeCache.set(first, innerCache);
40
+ }
41
+ const prevMerge = innerCache.get(second);
42
+ if (prevMerge !== undefined)
43
+ return prevMerge;
44
+ const newMerge = _cleverMerge(first, second, true);
45
+ innerCache.set(second, newMerge);
46
+ return newMerge;
47
+ };
48
+ /**
49
+ * @template T
50
+ * @param {Partial<T>} obj object
51
+ * @param {string} property property
52
+ * @param {string|number|boolean} value assignment value
53
+ * @returns {T} new object
54
+ */
55
+ const cachedSetProperty = (obj, property, value) => {
56
+ let mapByProperty = setPropertyCache.get(obj);
57
+ if (mapByProperty === undefined) {
58
+ mapByProperty = new Map();
59
+ setPropertyCache.set(obj, mapByProperty);
60
+ }
61
+ let mapByValue = mapByProperty.get(property);
62
+ if (mapByValue === undefined) {
63
+ mapByValue = new Map();
64
+ mapByProperty.set(property, mapByValue);
65
+ }
66
+ let result = mapByValue.get(value);
67
+ if (result)
68
+ return result;
69
+ result = {
70
+ ...obj,
71
+ [property]: value
72
+ };
73
+ mapByValue.set(value, result);
74
+ return result;
75
+ };
76
+ /**
77
+ * @typedef {Object} ObjectParsedPropertyEntry
78
+ * @property {any | undefined} base base value
79
+ * @property {string | undefined} byProperty the name of the selector property
80
+ * @property {Map<string, any>} byValues value depending on selector property, merged with base
81
+ */
82
+ /**
83
+ * @typedef {Object} ParsedObject
84
+ * @property {Map<string, ObjectParsedPropertyEntry>} static static properties (key is property name)
85
+ * @property {{ byProperty: string, fn: Function } | undefined} dynamic dynamic part
86
+ */
87
+ /** @type {WeakMap<object, ParsedObject>} */
88
+ const parseCache = new WeakMap();
89
+ /**
90
+ * @param {object} obj the object
91
+ * @returns {ParsedObject} parsed object
92
+ */
93
+ const cachedParseObject = obj => {
94
+ const entry = parseCache.get(obj);
95
+ if (entry !== undefined)
96
+ return entry;
97
+ const result = parseObject(obj);
98
+ parseCache.set(obj, result);
99
+ return result;
100
+ };
101
+ /**
102
+ * @param {object} obj the object
103
+ * @returns {ParsedObject} parsed object
104
+ */
105
+ const parseObject = obj => {
106
+ const info = new Map();
107
+ let dynamicInfo;
108
+ const getInfo = p => {
109
+ const entry = info.get(p);
110
+ if (entry !== undefined)
111
+ return entry;
112
+ const newEntry = {
113
+ base: undefined,
114
+ byProperty: undefined,
115
+ byValues: undefined
116
+ };
117
+ info.set(p, newEntry);
118
+ return newEntry;
119
+ };
120
+ for (const key of Object.keys(obj)) {
121
+ if (key.startsWith("by")) {
122
+ const byProperty = key;
123
+ const byObj = obj[byProperty];
124
+ if (typeof byObj === "object") {
125
+ for (const byValue of Object.keys(byObj)) {
126
+ const obj = byObj[byValue];
127
+ for (const key of Object.keys(obj)) {
128
+ const entry = getInfo(key);
129
+ if (entry.byProperty === undefined) {
130
+ entry.byProperty = byProperty;
131
+ entry.byValues = new Map();
132
+ }
133
+ else if (entry.byProperty !== byProperty) {
134
+ throw new Error(`${byProperty} and ${entry.byProperty} for a single property is not supported`);
135
+ }
136
+ entry.byValues.set(byValue, obj[key]);
137
+ if (byValue === "default") {
138
+ for (const otherByValue of Object.keys(byObj)) {
139
+ if (!entry.byValues.has(otherByValue))
140
+ entry.byValues.set(otherByValue, undefined);
141
+ }
142
+ }
143
+ }
144
+ }
145
+ }
146
+ else if (typeof byObj === "function") {
147
+ if (dynamicInfo === undefined) {
148
+ dynamicInfo = {
149
+ byProperty: key,
150
+ fn: byObj
151
+ };
152
+ }
153
+ else {
154
+ throw new Error(`${key} and ${dynamicInfo.byProperty} when both are functions is not supported`);
155
+ }
156
+ }
157
+ else {
158
+ const entry = getInfo(key);
159
+ entry.base = obj[key];
160
+ }
161
+ }
162
+ else {
163
+ const entry = getInfo(key);
164
+ entry.base = obj[key];
165
+ }
166
+ }
167
+ return {
168
+ static: info,
169
+ dynamic: dynamicInfo
170
+ };
171
+ };
172
+ /**
173
+ * @param {Map<string, ObjectParsedPropertyEntry>} info static properties (key is property name)
174
+ * @param {{ byProperty: string, fn: Function } | undefined} dynamicInfo dynamic part
175
+ * @returns {object} the object
176
+ */
177
+ const serializeObject = (info, dynamicInfo) => {
178
+ const obj = {};
179
+ // Setup byProperty structure
180
+ for (const entry of info.values()) {
181
+ if (entry.byProperty !== undefined) {
182
+ const byObj = (obj[entry.byProperty] = obj[entry.byProperty] || {});
183
+ for (const byValue of entry.byValues.keys()) {
184
+ byObj[byValue] = byObj[byValue] || {};
185
+ }
186
+ }
187
+ }
188
+ for (const [key, entry] of info) {
189
+ if (entry.base !== undefined) {
190
+ obj[key] = entry.base;
191
+ }
192
+ // Fill byProperty structure
193
+ if (entry.byProperty !== undefined) {
194
+ const byObj = (obj[entry.byProperty] = obj[entry.byProperty] || {});
195
+ for (const byValue of Object.keys(byObj)) {
196
+ const value = getFromByValues(entry.byValues, byValue);
197
+ if (value !== undefined)
198
+ byObj[byValue][key] = value;
199
+ }
200
+ }
201
+ }
202
+ if (dynamicInfo !== undefined) {
203
+ obj[dynamicInfo.byProperty] = dynamicInfo.fn;
204
+ }
205
+ return obj;
206
+ };
207
+ const VALUE_TYPE_UNDEFINED = 0;
208
+ const VALUE_TYPE_ATOM = 1;
209
+ const VALUE_TYPE_ARRAY_EXTEND = 2;
210
+ const VALUE_TYPE_OBJECT = 3;
211
+ const VALUE_TYPE_DELETE = 4;
212
+ /**
213
+ * @param {any} value a single value
214
+ * @returns {VALUE_TYPE_UNDEFINED | VALUE_TYPE_ATOM | VALUE_TYPE_ARRAY_EXTEND | VALUE_TYPE_OBJECT | VALUE_TYPE_DELETE} value type
215
+ */
216
+ const getValueType = value => {
217
+ if (value === undefined) {
218
+ return VALUE_TYPE_UNDEFINED;
219
+ }
220
+ else if (value === DELETE) {
221
+ return VALUE_TYPE_DELETE;
222
+ }
223
+ else if (Array.isArray(value)) {
224
+ if (value.lastIndexOf("...") !== -1)
225
+ return VALUE_TYPE_ARRAY_EXTEND;
226
+ return VALUE_TYPE_ATOM;
227
+ }
228
+ else if (typeof value === "object" &&
229
+ value !== null &&
230
+ (!value.constructor || value.constructor === Object)) {
231
+ return VALUE_TYPE_OBJECT;
232
+ }
233
+ return VALUE_TYPE_ATOM;
234
+ };
235
+ /**
236
+ * Merges two objects. Objects are deeply clever merged.
237
+ * Arrays might reference the old value with "...".
238
+ * Non-object values take preference over object values.
239
+ * @template T
240
+ * @template O
241
+ * @param {T} first first object
242
+ * @param {O} second second object
243
+ * @returns {T & O | T | O} merged object of first and second object
244
+ */
245
+ const cleverMerge = (first, second) => {
246
+ if (second === undefined)
247
+ return first;
248
+ if (first === undefined)
249
+ return second;
250
+ if (typeof second !== "object" || second === null)
251
+ return second;
252
+ if (typeof first !== "object" || first === null)
253
+ return first;
254
+ return _cleverMerge(first, second, false);
255
+ };
256
+ /**
257
+ * Merges two objects. Objects are deeply clever merged.
258
+ * @param {object} first first object
259
+ * @param {object} second second object
260
+ * @param {boolean} internalCaching should parsing of objects and nested merges be cached
261
+ * @returns {object} merged object of first and second object
262
+ */
263
+ const _cleverMerge = (first, second, internalCaching = false) => {
264
+ const firstObject = internalCaching
265
+ ? cachedParseObject(first)
266
+ : parseObject(first);
267
+ const { static: firstInfo, dynamic: firstDynamicInfo } = firstObject;
268
+ // If the first argument has a dynamic part we modify the dynamic part to merge the second argument
269
+ if (firstDynamicInfo !== undefined) {
270
+ let { byProperty, fn } = firstDynamicInfo;
271
+ const fnInfo = fn[DYNAMIC_INFO];
272
+ if (fnInfo) {
273
+ second = internalCaching
274
+ ? cachedCleverMerge(fnInfo[1], second)
275
+ : cleverMerge(fnInfo[1], second);
276
+ fn = fnInfo[0];
277
+ }
278
+ const newFn = (...args) => {
279
+ const fnResult = fn(...args);
280
+ return internalCaching
281
+ ? cachedCleverMerge(fnResult, second)
282
+ : cleverMerge(fnResult, second);
283
+ };
284
+ newFn[DYNAMIC_INFO] = [fn, second];
285
+ return serializeObject(firstObject.static, { byProperty, fn: newFn });
286
+ }
287
+ // If the first part is static only, we merge the static parts and keep the dynamic part of the second argument
288
+ const secondObject = internalCaching
289
+ ? cachedParseObject(second)
290
+ : parseObject(second);
291
+ const { static: secondInfo, dynamic: secondDynamicInfo } = secondObject;
292
+ /** @type {Map<string, ObjectParsedPropertyEntry>} */
293
+ const resultInfo = new Map();
294
+ for (const [key, firstEntry] of firstInfo) {
295
+ const secondEntry = secondInfo.get(key);
296
+ const entry = secondEntry !== undefined
297
+ ? mergeEntries(firstEntry, secondEntry, internalCaching)
298
+ : firstEntry;
299
+ resultInfo.set(key, entry);
300
+ }
301
+ for (const [key, secondEntry] of secondInfo) {
302
+ if (!firstInfo.has(key)) {
303
+ resultInfo.set(key, secondEntry);
304
+ }
305
+ }
306
+ return serializeObject(resultInfo, secondDynamicInfo);
307
+ };
308
+ /**
309
+ * @param {ObjectParsedPropertyEntry} firstEntry a
310
+ * @param {ObjectParsedPropertyEntry} secondEntry b
311
+ * @param {boolean} internalCaching should parsing of objects and nested merges be cached
312
+ * @returns {ObjectParsedPropertyEntry} new entry
313
+ */
314
+ const mergeEntries = (firstEntry, secondEntry, internalCaching) => {
315
+ switch (getValueType(secondEntry.base)) {
316
+ case VALUE_TYPE_ATOM:
317
+ case VALUE_TYPE_DELETE:
318
+ // No need to consider firstEntry at all
319
+ // second value override everything
320
+ // = second.base + second.byProperty
321
+ return secondEntry;
322
+ case VALUE_TYPE_UNDEFINED:
323
+ if (!firstEntry.byProperty) {
324
+ // = first.base + second.byProperty
325
+ return {
326
+ base: firstEntry.base,
327
+ byProperty: secondEntry.byProperty,
328
+ byValues: secondEntry.byValues
329
+ };
330
+ }
331
+ else if (firstEntry.byProperty !== secondEntry.byProperty) {
332
+ throw new Error(`${firstEntry.byProperty} and ${secondEntry.byProperty} for a single property is not supported`);
333
+ }
334
+ else {
335
+ // = first.base + (first.byProperty + second.byProperty)
336
+ // need to merge first and second byValues
337
+ const newByValues = new Map(firstEntry.byValues);
338
+ for (const [key, value] of secondEntry.byValues) {
339
+ const firstValue = getFromByValues(firstEntry.byValues, key);
340
+ newByValues.set(key, mergeSingleValue(firstValue, value, internalCaching));
341
+ }
342
+ return {
343
+ base: firstEntry.base,
344
+ byProperty: firstEntry.byProperty,
345
+ byValues: newByValues
346
+ };
347
+ }
348
+ default: {
349
+ if (!firstEntry.byProperty) {
350
+ // The simple case
351
+ // = (first.base + second.base) + second.byProperty
352
+ return {
353
+ base: mergeSingleValue(firstEntry.base, secondEntry.base, internalCaching),
354
+ byProperty: secondEntry.byProperty,
355
+ byValues: secondEntry.byValues
356
+ };
357
+ }
358
+ let newBase;
359
+ const intermediateByValues = new Map(firstEntry.byValues);
360
+ for (const [key, value] of intermediateByValues) {
361
+ intermediateByValues.set(key, mergeSingleValue(value, secondEntry.base, internalCaching));
362
+ }
363
+ if (Array.from(firstEntry.byValues.values()).every(value => {
364
+ const type = getValueType(value);
365
+ return type === VALUE_TYPE_ATOM || type === VALUE_TYPE_DELETE;
366
+ })) {
367
+ // = (first.base + second.base) + ((first.byProperty + second.base) + second.byProperty)
368
+ newBase = mergeSingleValue(firstEntry.base, secondEntry.base, internalCaching);
369
+ }
370
+ else {
371
+ // = first.base + ((first.byProperty (+default) + second.base) + second.byProperty)
372
+ newBase = firstEntry.base;
373
+ if (!intermediateByValues.has("default"))
374
+ intermediateByValues.set("default", secondEntry.base);
375
+ }
376
+ if (!secondEntry.byProperty) {
377
+ // = first.base + (first.byProperty + second.base)
378
+ return {
379
+ base: newBase,
380
+ byProperty: firstEntry.byProperty,
381
+ byValues: intermediateByValues
382
+ };
383
+ }
384
+ else if (firstEntry.byProperty !== secondEntry.byProperty) {
385
+ throw new Error(`${firstEntry.byProperty} and ${secondEntry.byProperty} for a single property is not supported`);
386
+ }
387
+ const newByValues = new Map(intermediateByValues);
388
+ for (const [key, value] of secondEntry.byValues) {
389
+ const firstValue = getFromByValues(intermediateByValues, key);
390
+ newByValues.set(key, mergeSingleValue(firstValue, value, internalCaching));
391
+ }
392
+ return {
393
+ base: newBase,
394
+ byProperty: firstEntry.byProperty,
395
+ byValues: newByValues
396
+ };
397
+ }
398
+ }
399
+ };
400
+ /**
401
+ * @param {Map<string, any>} byValues all values
402
+ * @param {string} key value of the selector
403
+ * @returns {any | undefined} value
404
+ */
405
+ const getFromByValues = (byValues, key) => {
406
+ if (key !== "default" && byValues.has(key)) {
407
+ return byValues.get(key);
408
+ }
409
+ return byValues.get("default");
410
+ };
411
+ /**
412
+ * @param {any} a value
413
+ * @param {any} b value
414
+ * @param {boolean} internalCaching should parsing of objects and nested merges be cached
415
+ * @returns {any} value
416
+ */
417
+ const mergeSingleValue = (a, b, internalCaching) => {
418
+ const bType = getValueType(b);
419
+ const aType = getValueType(a);
420
+ switch (bType) {
421
+ case VALUE_TYPE_DELETE:
422
+ case VALUE_TYPE_ATOM:
423
+ return b;
424
+ case VALUE_TYPE_OBJECT: {
425
+ return aType !== VALUE_TYPE_OBJECT
426
+ ? b
427
+ : internalCaching
428
+ ? cachedCleverMerge(a, b)
429
+ : cleverMerge(a, b);
430
+ }
431
+ case VALUE_TYPE_UNDEFINED:
432
+ return a;
433
+ case VALUE_TYPE_ARRAY_EXTEND:
434
+ switch (aType !== VALUE_TYPE_ATOM
435
+ ? aType
436
+ : Array.isArray(a)
437
+ ? VALUE_TYPE_ARRAY_EXTEND
438
+ : VALUE_TYPE_OBJECT) {
439
+ case VALUE_TYPE_UNDEFINED:
440
+ return b;
441
+ case VALUE_TYPE_DELETE:
442
+ return b.filter(item => item !== "...");
443
+ case VALUE_TYPE_ARRAY_EXTEND: {
444
+ const newArray = [];
445
+ for (const item of b) {
446
+ if (item === "...") {
447
+ for (const item of a) {
448
+ newArray.push(item);
449
+ }
450
+ }
451
+ else {
452
+ newArray.push(item);
453
+ }
454
+ }
455
+ return newArray;
456
+ }
457
+ case VALUE_TYPE_OBJECT:
458
+ return b.map(item => (item === "..." ? a : item));
459
+ default:
460
+ throw new Error("Not implemented");
461
+ }
462
+ default:
463
+ throw new Error("Not implemented");
464
+ }
465
+ };
466
+ /**
467
+ * @template T
468
+ * @param {T} obj the object
469
+ * @returns {T} the object without operations like "..." or DELETE
470
+ */
471
+ const removeOperations = obj => {
472
+ const newObj = /** @type {T} */ ({});
473
+ for (const key of Object.keys(obj)) {
474
+ const value = obj[key];
475
+ const type = getValueType(value);
476
+ switch (type) {
477
+ case VALUE_TYPE_UNDEFINED:
478
+ case VALUE_TYPE_DELETE:
479
+ break;
480
+ case VALUE_TYPE_OBJECT:
481
+ newObj[key] = removeOperations(value);
482
+ break;
483
+ case VALUE_TYPE_ARRAY_EXTEND:
484
+ newObj[key] = value.filter(i => i !== "...");
485
+ break;
486
+ default:
487
+ newObj[key] = value;
488
+ break;
489
+ }
490
+ }
491
+ return newObj;
492
+ };
493
+ /**
494
+ * @template T
495
+ * @template {string} P
496
+ * @param {T} obj the object
497
+ * @param {P} byProperty the by description
498
+ * @param {...any} values values
499
+ * @returns {Omit<T, P>} object with merged byProperty
500
+ */
501
+ const resolveByProperty = (obj, byProperty, ...values) => {
502
+ if (typeof obj !== "object" || obj === null || !(byProperty in obj)) {
503
+ return obj;
504
+ }
505
+ const { [byProperty]: _byValue, ..._remaining } = /** @type {object} */ (obj);
506
+ const remaining = /** @type {T} */ (_remaining);
507
+ const byValue = /** @type {Record<string, T> | function(...any[]): T} */ (_byValue);
508
+ if (typeof byValue === "object") {
509
+ const key = values[0];
510
+ if (key in byValue) {
511
+ return cachedCleverMerge(remaining, byValue[key]);
512
+ }
513
+ else if ("default" in byValue) {
514
+ return cachedCleverMerge(remaining, byValue.default);
515
+ }
516
+ else {
517
+ return /** @type {T} */ (remaining);
518
+ }
519
+ }
520
+ else if (typeof byValue === "function") {
521
+ const result = byValue.apply(null, values);
522
+ return cachedCleverMerge(remaining, resolveByProperty(result, byProperty, ...values));
523
+ }
524
+ };
525
+ exports.cachedSetProperty = cachedSetProperty;
526
+ exports.cachedCleverMerge = cachedCleverMerge;
527
+ exports.cleverMerge = cleverMerge;
528
+ exports.resolveByProperty = resolveByProperty;
529
+ exports.removeOperations = removeOperations;
530
+ exports.DELETE = DELETE;
531
+ //# sourceMappingURL=cleverMerge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleverMerge.js","sourceRoot":"","sources":["../../src/util/cleverMerge.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Creates a hash by name or function
3
+ * @param {string | typeof Hash} algorithm the algorithm name or a constructor creating a hash
4
+ * @returns {Hash} the hash
5
+ */
6
+ export declare const createHash: (algorithm: any) => any;
7
+ //# sourceMappingURL=createHash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createHash.d.ts","sourceRoot":"","sources":["../../src/util/createHash.ts"],"names":[],"mappings":"AAkIA;;;;GAIG;AACH,eAAO,MAAM,UAAU,yBAkCtB,CAAC"}