@fluentui-react-native/framework-base 0.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 (141) hide show
  1. package/CHANGELOG.json +20 -0
  2. package/CHANGELOG.md +13 -0
  3. package/README.md +20 -0
  4. package/babel.config.js +1 -0
  5. package/eslint.config.js +3 -0
  6. package/lib/immutable-merge/Merge.d.ts +78 -0
  7. package/lib/immutable-merge/Merge.d.ts.map +1 -0
  8. package/lib/immutable-merge/Merge.js +179 -0
  9. package/lib/immutable-merge/Merge.js.map +1 -0
  10. package/lib/immutable-merge/Merge.test.d.ts +2 -0
  11. package/lib/immutable-merge/Merge.test.d.ts.map +1 -0
  12. package/lib/immutable-merge/Merge.test.js +262 -0
  13. package/lib/immutable-merge/Merge.test.js.map +1 -0
  14. package/lib/index.d.ts +9 -0
  15. package/lib/index.d.ts.map +1 -0
  16. package/lib/index.js +7 -0
  17. package/lib/index.js.map +1 -0
  18. package/lib/memo-cache/getCacheEntry.d.ts +22 -0
  19. package/lib/memo-cache/getCacheEntry.d.ts.map +1 -0
  20. package/lib/memo-cache/getCacheEntry.js +49 -0
  21. package/lib/memo-cache/getCacheEntry.js.map +1 -0
  22. package/lib/memo-cache/getCacheEntry.test.d.ts +2 -0
  23. package/lib/memo-cache/getCacheEntry.test.d.ts.map +1 -0
  24. package/lib/memo-cache/getCacheEntry.test.js +95 -0
  25. package/lib/memo-cache/getCacheEntry.test.js.map +1 -0
  26. package/lib/memo-cache/getMemoCache.d.ts +11 -0
  27. package/lib/memo-cache/getMemoCache.d.ts.map +1 -0
  28. package/lib/memo-cache/getMemoCache.js +29 -0
  29. package/lib/memo-cache/getMemoCache.js.map +1 -0
  30. package/lib/memo-cache/getMemoCache.test.d.ts +2 -0
  31. package/lib/memo-cache/getMemoCache.test.d.ts.map +1 -0
  32. package/lib/memo-cache/getMemoCache.test.js +78 -0
  33. package/lib/memo-cache/getMemoCache.test.js.map +1 -0
  34. package/lib/memo-cache/index.d.ts +4 -0
  35. package/lib/memo-cache/index.d.ts.map +1 -0
  36. package/lib/memo-cache/index.js +3 -0
  37. package/lib/memo-cache/index.js.map +1 -0
  38. package/lib/memo-cache/memoize.d.ts +6 -0
  39. package/lib/memo-cache/memoize.d.ts.map +1 -0
  40. package/lib/memo-cache/memoize.js +17 -0
  41. package/lib/memo-cache/memoize.js.map +1 -0
  42. package/lib/memo-cache/memoize.test.d.ts +2 -0
  43. package/lib/memo-cache/memoize.test.d.ts.map +1 -0
  44. package/lib/memo-cache/memoize.test.js +45 -0
  45. package/lib/memo-cache/memoize.test.js.map +1 -0
  46. package/lib/merge-props/index.d.ts +4 -0
  47. package/lib/merge-props/index.d.ts.map +1 -0
  48. package/lib/merge-props/index.js +3 -0
  49. package/lib/merge-props/index.js.map +1 -0
  50. package/lib/merge-props/mergeProps.d.ts +6 -0
  51. package/lib/merge-props/mergeProps.d.ts.map +1 -0
  52. package/lib/merge-props/mergeProps.js +17 -0
  53. package/lib/merge-props/mergeProps.js.map +1 -0
  54. package/lib/merge-props/mergeStyles.d.ts +16 -0
  55. package/lib/merge-props/mergeStyles.d.ts.map +1 -0
  56. package/lib/merge-props/mergeStyles.js +32 -0
  57. package/lib/merge-props/mergeStyles.js.map +1 -0
  58. package/lib/merge-props/mergeStyles.test.d.ts +2 -0
  59. package/lib/merge-props/mergeStyles.test.d.ts.map +1 -0
  60. package/lib/merge-props/mergeStyles.test.js +94 -0
  61. package/lib/merge-props/mergeStyles.test.js.map +1 -0
  62. package/lib/merge-props/mergeStyles.types.d.ts +12 -0
  63. package/lib/merge-props/mergeStyles.types.d.ts.map +1 -0
  64. package/lib/merge-props/mergeStyles.types.js +2 -0
  65. package/lib/merge-props/mergeStyles.types.js.map +1 -0
  66. package/lib-commonjs/immutable-merge/Merge.d.ts +78 -0
  67. package/lib-commonjs/immutable-merge/Merge.d.ts.map +1 -0
  68. package/lib-commonjs/immutable-merge/Merge.js +186 -0
  69. package/lib-commonjs/immutable-merge/Merge.js.map +1 -0
  70. package/lib-commonjs/immutable-merge/Merge.test.d.ts +2 -0
  71. package/lib-commonjs/immutable-merge/Merge.test.d.ts.map +1 -0
  72. package/lib-commonjs/immutable-merge/Merge.test.js +264 -0
  73. package/lib-commonjs/immutable-merge/Merge.test.js.map +1 -0
  74. package/lib-commonjs/index.d.ts +9 -0
  75. package/lib-commonjs/index.d.ts.map +1 -0
  76. package/lib-commonjs/index.js +18 -0
  77. package/lib-commonjs/index.js.map +1 -0
  78. package/lib-commonjs/memo-cache/getCacheEntry.d.ts +22 -0
  79. package/lib-commonjs/memo-cache/getCacheEntry.d.ts.map +1 -0
  80. package/lib-commonjs/memo-cache/getCacheEntry.js +53 -0
  81. package/lib-commonjs/memo-cache/getCacheEntry.js.map +1 -0
  82. package/lib-commonjs/memo-cache/getCacheEntry.test.d.ts +2 -0
  83. package/lib-commonjs/memo-cache/getCacheEntry.test.d.ts.map +1 -0
  84. package/lib-commonjs/memo-cache/getCacheEntry.test.js +97 -0
  85. package/lib-commonjs/memo-cache/getCacheEntry.test.js.map +1 -0
  86. package/lib-commonjs/memo-cache/getMemoCache.d.ts +11 -0
  87. package/lib-commonjs/memo-cache/getMemoCache.d.ts.map +1 -0
  88. package/lib-commonjs/memo-cache/getMemoCache.js +33 -0
  89. package/lib-commonjs/memo-cache/getMemoCache.js.map +1 -0
  90. package/lib-commonjs/memo-cache/getMemoCache.test.d.ts +2 -0
  91. package/lib-commonjs/memo-cache/getMemoCache.test.d.ts.map +1 -0
  92. package/lib-commonjs/memo-cache/getMemoCache.test.js +80 -0
  93. package/lib-commonjs/memo-cache/getMemoCache.test.js.map +1 -0
  94. package/lib-commonjs/memo-cache/index.d.ts +4 -0
  95. package/lib-commonjs/memo-cache/index.d.ts.map +1 -0
  96. package/lib-commonjs/memo-cache/index.js +8 -0
  97. package/lib-commonjs/memo-cache/index.js.map +1 -0
  98. package/lib-commonjs/memo-cache/memoize.d.ts +6 -0
  99. package/lib-commonjs/memo-cache/memoize.d.ts.map +1 -0
  100. package/lib-commonjs/memo-cache/memoize.js +21 -0
  101. package/lib-commonjs/memo-cache/memoize.js.map +1 -0
  102. package/lib-commonjs/memo-cache/memoize.test.d.ts +2 -0
  103. package/lib-commonjs/memo-cache/memoize.test.d.ts.map +1 -0
  104. package/lib-commonjs/memo-cache/memoize.test.js +47 -0
  105. package/lib-commonjs/memo-cache/memoize.test.js.map +1 -0
  106. package/lib-commonjs/merge-props/index.d.ts +4 -0
  107. package/lib-commonjs/merge-props/index.d.ts.map +1 -0
  108. package/lib-commonjs/merge-props/index.js +8 -0
  109. package/lib-commonjs/merge-props/index.js.map +1 -0
  110. package/lib-commonjs/merge-props/mergeProps.d.ts +6 -0
  111. package/lib-commonjs/merge-props/mergeProps.d.ts.map +1 -0
  112. package/lib-commonjs/merge-props/mergeProps.js +21 -0
  113. package/lib-commonjs/merge-props/mergeProps.js.map +1 -0
  114. package/lib-commonjs/merge-props/mergeStyles.d.ts +16 -0
  115. package/lib-commonjs/merge-props/mergeStyles.d.ts.map +1 -0
  116. package/lib-commonjs/merge-props/mergeStyles.js +38 -0
  117. package/lib-commonjs/merge-props/mergeStyles.js.map +1 -0
  118. package/lib-commonjs/merge-props/mergeStyles.test.d.ts +2 -0
  119. package/lib-commonjs/merge-props/mergeStyles.test.d.ts.map +1 -0
  120. package/lib-commonjs/merge-props/mergeStyles.test.js +96 -0
  121. package/lib-commonjs/merge-props/mergeStyles.test.js.map +1 -0
  122. package/lib-commonjs/merge-props/mergeStyles.types.d.ts +12 -0
  123. package/lib-commonjs/merge-props/mergeStyles.types.d.ts.map +1 -0
  124. package/lib-commonjs/merge-props/mergeStyles.types.js +3 -0
  125. package/lib-commonjs/merge-props/mergeStyles.types.js.map +1 -0
  126. package/package.json +58 -0
  127. package/src/immutable-merge/Merge.test.ts +342 -0
  128. package/src/immutable-merge/Merge.ts +255 -0
  129. package/src/index.ts +20 -0
  130. package/src/memo-cache/getCacheEntry.test.ts +120 -0
  131. package/src/memo-cache/getCacheEntry.ts +67 -0
  132. package/src/memo-cache/getMemoCache.test.ts +91 -0
  133. package/src/memo-cache/getMemoCache.ts +37 -0
  134. package/src/memo-cache/index.ts +3 -0
  135. package/src/memo-cache/memoize.test.ts +48 -0
  136. package/src/memo-cache/memoize.ts +17 -0
  137. package/src/merge-props/index.ts +3 -0
  138. package/src/merge-props/mergeProps.ts +20 -0
  139. package/src/merge-props/mergeStyles.test.ts +124 -0
  140. package/src/merge-props/mergeStyles.ts +40 -0
  141. package/src/merge-props/mergeStyles.types.ts +9 -0
package/CHANGELOG.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "@fluentui-react-native/framework-base",
3
+ "entries": [
4
+ {
5
+ "date": "Wed, 16 Jul 2025 20:02:37 GMT",
6
+ "version": "0.1.1",
7
+ "tag": "@fluentui-react-native/framework-base_v0.1.1",
8
+ "comments": {
9
+ "patch": [
10
+ {
11
+ "author": "jasonmo@microsoft.com",
12
+ "package": "@fluentui-react-native/framework-base",
13
+ "commit": "6ed0a256caf94e287c6a9120ec5d0458bd5c7bfc",
14
+ "comment": "create common framework-base package to share common utiltities more broadly"
15
+ }
16
+ ]
17
+ }
18
+ }
19
+ ]
20
+ }
package/CHANGELOG.md ADDED
@@ -0,0 +1,13 @@
1
+ # Change Log - @fluentui-react-native/framework-base
2
+
3
+ <!-- This log was last generated on Wed, 16 Jul 2025 20:02:37 GMT and should not be manually modified. -->
4
+
5
+ <!-- Start content -->
6
+
7
+ ## 0.1.1
8
+
9
+ Wed, 16 Jul 2025 20:02:37 GMT
10
+
11
+ ### Patches
12
+
13
+ - create common framework-base package to share common utiltities more broadly (jasonmo@microsoft.com)
package/README.md ADDED
@@ -0,0 +1,20 @@
1
+ # Framework Base package
2
+
3
+ This package provides core types and helpers used by both the old and new versions of the framework.
4
+
5
+ Several previously standalone packages have had their implementations moved into this package. This allows them to share certain typings and helpers without having to work around circular dependency issues. The moved packages are:
6
+
7
+ - `@fluentui-react-native/immutable-merge`
8
+ - `@fluentui-react-native/memo-cache`
9
+ - `@fluentui-react-native/merge-props`
10
+
11
+ The functionality in these packages can be imported either by the base entry point for the package, or by using dedicated exports. The previous packages will continue to exist for the time being but are now just references to their individual exports. Note that export maps require special handling for metro bundling (with the exception of the jsx-runtime export) so the export maps are primarily for use
12
+ in JS/web projects.
13
+
14
+ ## Type Helpers
15
+
16
+ - TODO: There are a number of issues with the way types are handled in the larger fluentui-react-native project, helpers and core types will be added here to help solve inference issues, avoid hard typecasts, and help the project eventually move to typescript 5.x.
17
+
18
+ ## JSX Helpers
19
+
20
+ - TODO: Both classic and the new jsx-runtime helpers will eventually come out of this package and be shared between old and new frameworks. This will be necessary to improve typing across the board.
@@ -0,0 +1 @@
1
+ module.exports = require('@fluentui-react-native/scripts/configs/babel.config');
@@ -0,0 +1,3 @@
1
+ const baseConfig = require('@fluentui-react-native/eslint-config-rules');
2
+
3
+ module.exports = baseConfig;
@@ -0,0 +1,78 @@
1
+ /**
2
+ * The basic options for recursion at a given level. Two types for two behaviors:
3
+ *
4
+ * boolean:
5
+ * - if true, recurse indefinitely
6
+ * - if false, don't recurse
7
+ *
8
+ * number:
9
+ * - if 0, don't recurse from this level
10
+ * - if > 0, recurse that many times then stop
11
+ * - if < 0, recurse indefinitely
12
+ */
13
+ export type RecursionOption = boolean | number;
14
+ /**
15
+ * a function that can be set to merge arguments
16
+ */
17
+ export type CustomRecursionHandler = (...vals: any[]) => any;
18
+ /**
19
+ * built in handler functions that can be applied for a given key
20
+ */
21
+ export type BuiltinRecursionHandlers = 'appendArray';
22
+ /**
23
+ * Handlers for recursion of a given key or type. These can either be functions or a reference to a supported
24
+ * built-in merge routine
25
+ */
26
+ export type RecursionHandler = BuiltinRecursionHandlers | CustomRecursionHandler;
27
+ /**
28
+ * Base object type for merges, avoids using object since that is too broad. In particular things like null and arrays
29
+ * are not valid object types for the purposes of this library.
30
+ */
31
+ export type ObjectBase = {};
32
+ /**
33
+ *
34
+ */
35
+ export type TypeofResult = 'undefined' | 'object' | 'boolean' | 'number' | 'string' | 'symbol' | 'bigint' | 'function';
36
+ export type ExpandedTypeof = TypeofResult | 'array' | 'null';
37
+ /**
38
+ * configuration object for the merge, key names are matched with a few exceptions:
39
+ * - object: matches non-array object types
40
+ * - array: matches array types
41
+ * - [key: string]: matches anything by name
42
+ */
43
+ export interface MergeOptions {
44
+ [objectTypeOrKeyName: string]: RecursionOption | RecursionHandler | MergeOptions;
45
+ }
46
+ /**
47
+ * Filter a set of unknown values to only include those that extend ObjectBase
48
+ * @param values - array of values to filter
49
+ * @returns the filtered set of values
50
+ */
51
+ export declare function filterToObjects<T extends ObjectBase = ObjectBase>(values: unknown[]): T[];
52
+ /**
53
+ * Recursively immutable merge sets of objects infinitely deep. This behaves like a standard deep merge with arrays replacing
54
+ * one another rather than appending. If appending arrays is desireable this can be configured via immutableMergeCore
55
+ *
56
+ * @param objs - variable input array of typed objects to merge
57
+ */
58
+ export declare function immutableMerge<T extends ObjectBase>(...objs: (T | undefined)[]): T | undefined;
59
+ /**
60
+ * Version of immutable merge that can be configured to behave in a variety of manners. See the documentation for details.
61
+ *
62
+ * @param options - configuration options for the merge, this dictates what keys will be handled in what way
63
+ * @param objs - set of objects to merge together
64
+ */
65
+ export declare function immutableMergeCore<T extends ObjectBase>(options: RecursionOption | MergeOptions, ...objs: (T | undefined)[]): T | undefined;
66
+ /**
67
+ * Process one or more immutable objects ensuring that handlers are called on every entry that applies. If a single object
68
+ * is passed in and no changes are made, that object will be returned. If updates happen from the handlers it will return the
69
+ * minimally mutated object.
70
+ *
71
+ * The use case for this might be a style transformation on a deeply nested object. If no changes are made the object won't be
72
+ * updated but in the case where something needs to be transformed this will perform the minimal mutations.
73
+ *
74
+ * @param processors - set of processor functions for handling keys
75
+ * @param objs - one or more objects to process. If multiple objects are passed they will be merged
76
+ */
77
+ export declare function processImmutable<T extends ObjectBase>(options: MergeOptions, ...objs: (T | undefined)[]): T | undefined;
78
+ //# sourceMappingURL=Merge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Merge.d.ts","sourceRoot":"","sources":["../../src/immutable-merge/Merge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,CAAC;AAE/C;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,aAAa,CAAC;AAErD;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,wBAAwB,GAAG,sBAAsB,CAAC;AAEjF;;;GAGG;AAEH,MAAM,MAAM,UAAU,GAAG,EAAE,CAAC;AAE5B;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AACvH,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,OAAO,GAAG,MAAM,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,CAAC,mBAAmB,EAAE,MAAM,GAAG,eAAe,GAAG,gBAAgB,GAAG,YAAY,CAAC;CAClF;AAqGD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,CAEzF;AA2DD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,UAAU,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,CAAC,GAAG,SAAS,CAE9F;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,UAAU,EACrD,OAAO,EAAE,eAAe,GAAG,YAAY,EACvC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,GACzB,CAAC,GAAG,SAAS,CAEf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,CAAC,GAAG,SAAS,CAEvH"}
@@ -0,0 +1,179 @@
1
+ /**
2
+ * built in handlers for the module
3
+ */
4
+ const _builtinHandlers = {
5
+ appendArray: (...objs) => {
6
+ return [].concat(...objs);
7
+ },
8
+ };
9
+ /**
10
+ * This processes the various type options for merge core and turns them into a MergeConfig
11
+ * @param options - options passed into immutableMergeCore
12
+ */
13
+ function normalizeOptions(options) {
14
+ return typeof options === 'boolean'
15
+ ? [{ object: options }, options]
16
+ : typeof options === 'number'
17
+ ? [{ object: options >= 0 ? options : true }, options !== 0]
18
+ : [options, true];
19
+ }
20
+ /**
21
+ * Provide a more sensible type result that expands upon the built in typeof operator
22
+ * In particular this will differentiate arrays and nulls from standard objects
23
+ * @param val - value to check type
24
+ */
25
+ function getEntityType(val) {
26
+ switch (typeof val) {
27
+ case 'object':
28
+ if (val === null) {
29
+ return 'null';
30
+ }
31
+ else if (Array.isArray(val)) {
32
+ return 'array';
33
+ }
34
+ return 'object';
35
+ default:
36
+ return typeof val;
37
+ }
38
+ }
39
+ /** resolve custom handlers if they are applicable */
40
+ function resolveIfHandler(option) {
41
+ return typeof option === 'function' ? option : typeof option === 'string' ? _builtinHandlers[option] : undefined;
42
+ }
43
+ /** pass array configurations down, this allows for saying all arrays should be appended rather than replaced */
44
+ function getTypesMixin(config) {
45
+ return config.array ? { array: config.array } : {};
46
+ }
47
+ /** resolve the object behaviors for configuration */
48
+ function resolveForObject(option, mixin) {
49
+ if (typeof option === 'boolean') {
50
+ // booleans won't recurse if false, otherwise recurse infinitely
51
+ return option ? { object: option, ...mixin } : mixin;
52
+ }
53
+ else if (typeof option === 'number') {
54
+ // numbers get decremented or set to false if we've reached zero. Negative values will have been converted to boolean true
55
+ return option === 0 ? mixin : { object: option - 1, ...mixin };
56
+ }
57
+ else {
58
+ // otherwise it is an object type so just pass the child object through
59
+ return option;
60
+ }
61
+ }
62
+ /**
63
+ * Figure out the handler for this property.
64
+ * It will either be a function, a config object to pass to a recursive call, or undefined
65
+ * in the undefined case, this key will be left as-is
66
+ */
67
+ function getHandlerForPropertyOfType(config, propKey, propType) {
68
+ let result = undefined;
69
+ const option = config[propKey] !== undefined ? config[propKey] : config[propType] !== undefined ? config[propType] : undefined;
70
+ if (option !== undefined) {
71
+ // try to resolve the option as a handler, either function or built-in first. This is the only option that is valid for non-object types.
72
+ result = resolveIfHandler(option);
73
+ // if it is an object then resolve boolean, number or config types
74
+ if (result === undefined && propType === 'object') {
75
+ result = resolveForObject(option, getTypesMixin(config));
76
+ }
77
+ }
78
+ return result;
79
+ }
80
+ /**
81
+ * Assign properties of source objects to a new target object. This is just a type wrapper around Object.assign
82
+ * @param objs - array of objects to merge
83
+ * @returns the result of object assign on the objects, typed to T
84
+ */
85
+ function assignToNewObject(...objs) {
86
+ return Object.assign({}, ...objs);
87
+ }
88
+ /**
89
+ * Filter a set of unknown values to only include those that extend ObjectBase
90
+ * @param values - array of values to filter
91
+ * @returns the filtered set of values
92
+ */
93
+ export function filterToObjects(values) {
94
+ return values.filter((v) => v && getEntityType(v) === 'object' && Object.getOwnPropertyNames(v).length > 0);
95
+ }
96
+ /**
97
+ * This will merge two or more objects together using an immutable style merge pattern. If there is only one object or
98
+ * if there is only one object with values, that object itself will be returned, with two or more objects the keys within will
99
+ * be first merged with Object.assign and then optionally will recurse to merge sub objects as specified by the options.
100
+ *
101
+ * Note that this tries hard to not create extra objects, because of this merging an object with an empty object will not
102
+ * create a new object.
103
+ *
104
+ * @param mergeOptions - options driving behavior of the merge. See MergeOptions for a description
105
+ * @param singleMode - normally if there is only one branch to follow in the merge the routine will not recurse. If single mode
106
+ * is true the routine will progress through all branches of the hierarchy. Useful if using a processor function that needs to be run.
107
+ * @param objs - an array of objects to merge together
108
+ */
109
+ function immutableMergeWorker(mergeOptions, singleMode, ...objs) {
110
+ const setToMerge = filterToObjects(objs);
111
+ const [options, mightRecurse] = normalizeOptions(mergeOptions);
112
+ const processSingle = singleMode && setToMerge.length === 1;
113
+ // there is work to do if there is more than one object to merge or if we are processing single objects
114
+ if (setToMerge.length > 1 || (processSingle && setToMerge.length === 1)) {
115
+ // now assign everything to get the normal property precedence (and merge all the keys)
116
+ let result = processSingle ? undefined : assignToNewObject(...setToMerge);
117
+ const processSet = result || setToMerge[0];
118
+ for (const key in processSet) {
119
+ if (processSet.hasOwnProperty(key)) {
120
+ // only process if there is potential work to do
121
+ if (mightRecurse) {
122
+ const originalVal = processSet[key];
123
+ const entityType = getEntityType(originalVal);
124
+ const handler = getHandlerForPropertyOfType(options, key, entityType);
125
+ if (handler !== undefined) {
126
+ const values = setToMerge.map((set) => set[key]).filter((v) => v !== undefined);
127
+ const updatedVal = typeof handler === 'function'
128
+ ? handler(...values)
129
+ : immutableMergeWorker(handler, singleMode, ...filterToObjects(values));
130
+ if (updatedVal !== originalVal) {
131
+ result = result || assignToNewObject(...setToMerge);
132
+ result[key] = updatedVal;
133
+ }
134
+ }
135
+ }
136
+ // delete undefined keys from the object, otherwise there is no easy way to delete keys
137
+ if (!processSingle && result[key] === undefined) {
138
+ delete result[key];
139
+ }
140
+ }
141
+ }
142
+ // in the single processing case return the original if nothing changed, otherwise return result
143
+ return result || processSet;
144
+ }
145
+ return setToMerge.length > 0 ? setToMerge[0] : undefined;
146
+ }
147
+ /**
148
+ * Recursively immutable merge sets of objects infinitely deep. This behaves like a standard deep merge with arrays replacing
149
+ * one another rather than appending. If appending arrays is desireable this can be configured via immutableMergeCore
150
+ *
151
+ * @param objs - variable input array of typed objects to merge
152
+ */
153
+ export function immutableMerge(...objs) {
154
+ return immutableMergeWorker(true, false, ...objs);
155
+ }
156
+ /**
157
+ * Version of immutable merge that can be configured to behave in a variety of manners. See the documentation for details.
158
+ *
159
+ * @param options - configuration options for the merge, this dictates what keys will be handled in what way
160
+ * @param objs - set of objects to merge together
161
+ */
162
+ export function immutableMergeCore(options, ...objs) {
163
+ return immutableMergeWorker(options, false, ...objs);
164
+ }
165
+ /**
166
+ * Process one or more immutable objects ensuring that handlers are called on every entry that applies. If a single object
167
+ * is passed in and no changes are made, that object will be returned. If updates happen from the handlers it will return the
168
+ * minimally mutated object.
169
+ *
170
+ * The use case for this might be a style transformation on a deeply nested object. If no changes are made the object won't be
171
+ * updated but in the case where something needs to be transformed this will perform the minimal mutations.
172
+ *
173
+ * @param processors - set of processor functions for handling keys
174
+ * @param objs - one or more objects to process. If multiple objects are passed they will be merged
175
+ */
176
+ export function processImmutable(options, ...objs) {
177
+ return immutableMergeWorker(options, true, ...objs);
178
+ }
179
+ //# sourceMappingURL=Merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Merge.js","sourceRoot":"","sources":["../../src/immutable-merge/Merge.ts"],"names":[],"mappings":"AAqDA;;GAEG;AACH,MAAM,gBAAgB,GAAgE;IACpF,WAAW,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;QAC9B,OAAO,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC;AAEF;;;GAGG;AACH,SAAS,gBAAgB,CAAC,OAAuC;IAC/D,OAAO,OAAO,OAAO,KAAK,SAAS;QACjC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC;QAChC,CAAC,CAAC,OAAO,OAAO,KAAK,QAAQ;YAC7B,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,KAAK,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,GAAY;IACjC,QAAQ,OAAO,GAAG,EAAE;QAClB,KAAK,QAAQ;YACX,IAAI,GAAG,KAAK,IAAI,EAAE;gBAChB,OAAO,MAAM,CAAC;aACf;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBAC7B,OAAO,OAAO,CAAC;aAChB;YACD,OAAO,QAAQ,CAAC;QAClB;YACE,OAAO,OAAO,GAAmB,CAAC;KACrC;AACH,CAAC;AAED,qDAAqD;AACrD,SAAS,gBAAgB,CAAC,MAAyD;IACjF,OAAO,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACnH,CAAC;AAED,gHAAgH;AAChH,SAAS,aAAa,CAAC,MAAoB;IACzC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACrD,CAAC;AAED,qDAAqD;AACrD,SAAS,gBAAgB,CAAC,MAAyD,EAAE,KAAmB;IACtG,IAAI,OAAO,MAAM,KAAK,SAAS,EAAE;QAC/B,gEAAgE;QAChE,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;KACtD;SAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QACrC,2HAA2H;QAC3H,OAAO,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;KAChE;SAAM;QACL,uEAAuE;QACvE,OAAO,MAAsB,CAAC;KAC/B;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,2BAA2B,CAClC,MAAoB,EACpB,OAAe,EACf,QAAgB;IAEhB,IAAI,MAAM,GAAsD,SAAS,CAAC;IAC1E,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE/H,IAAI,MAAM,KAAK,SAAS,EAAE;QACxB,0IAA0I;QAC1I,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAElC,kEAAkE;QAClE,IAAI,MAAM,KAAK,SAAS,IAAI,QAAQ,KAAK,QAAQ,EAAE;YACjD,MAAM,GAAG,gBAAgB,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;SAC1D;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAuB,GAAG,IAAS;IAC3D,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAoC,MAAiB;IAClF,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAQ,CAAC;AACrH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,oBAAoB,CAAuB,YAA4C,EAAE,UAAmB,EAAE,GAAG,IAAS;IACjI,MAAM,UAAU,GAAG,eAAe,CAAI,IAAI,CAAC,CAAC;IAC5C,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC/D,MAAM,aAAa,GAAG,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;IAE5D,uGAAuG;IACvG,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;QACvE,uFAAuF;QACvF,IAAI,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,UAAU,CAAC,CAAC;QAC1E,MAAM,UAAU,GAAG,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAE3C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;YAC5B,IAAI,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;gBAClC,gDAAgD;gBAChD,IAAI,YAAY,EAAE;oBAChB,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;oBACpC,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;oBAC9C,MAAM,OAAO,GAAG,2BAA2B,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;oBACtE,IAAI,OAAO,KAAK,SAAS,EAAE;wBACzB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;wBAChF,MAAM,UAAU,GACd,OAAO,OAAO,KAAK,UAAU;4BAC3B,CAAC,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;4BACpB,CAAC,CAAC,oBAAoB,CAAa,OAAO,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;wBACxF,IAAI,UAAU,KAAK,WAAW,EAAE;4BAC9B,MAAM,GAAG,MAAM,IAAI,iBAAiB,CAAC,GAAG,UAAU,CAAC,CAAC;4BACpD,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;yBAC1B;qBACF;iBACF;gBAED,uFAAuF;gBACvF,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;oBAC/C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;iBACpB;aACF;SACF;QAED,gGAAgG;QAChG,OAAO,MAAM,IAAI,UAAU,CAAC;KAC7B;IACD,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAuB,GAAG,IAAuB;IAC7E,OAAO,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;AACpD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAuC,EACvC,GAAG,IAAuB;IAE1B,OAAO,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAuB,OAAqB,EAAE,GAAG,IAAuB;IACtG,OAAO,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Merge.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Merge.test.d.ts","sourceRoot":"","sources":["../../src/immutable-merge/Merge.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,262 @@
1
+ import { immutableMerge, immutableMergeCore, processImmutable } from './Merge';
2
+ const sett1 = {
3
+ root: {
4
+ p2: 1,
5
+ nm: { nm1: 1 },
6
+ style: { s1: 'foo', s2: 2, nm: { nm1: 1 } },
7
+ },
8
+ fakeSlot: {
9
+ ps2: 2,
10
+ },
11
+ };
12
+ const sett2 = {
13
+ root: {
14
+ p1: 'sett2',
15
+ p2: 2,
16
+ nm: { nm2: 2 },
17
+ },
18
+ fakeSlot: {
19
+ style: { s1: 'sett2' },
20
+ },
21
+ };
22
+ const sett1plus2 = {
23
+ root: {
24
+ p1: 'sett2',
25
+ p2: 2,
26
+ nm: { nm2: 2 },
27
+ style: { s1: 'foo', s2: 2, nm: { nm1: 1 } },
28
+ },
29
+ fakeSlot: {
30
+ ps2: 2,
31
+ style: { s1: 'sett2' },
32
+ },
33
+ };
34
+ const sett3 = {
35
+ root: {
36
+ p1: 'sett3',
37
+ style: { s2: 3, nm: { nm2: 2 } },
38
+ },
39
+ };
40
+ const sett1plus3 = {
41
+ root: {
42
+ p1: 'sett3',
43
+ p2: 1,
44
+ nm: { nm1: 1 },
45
+ style: { s1: 'foo', s2: 3, nm: { nm2: 2 } },
46
+ },
47
+ fakeSlot: {
48
+ ps2: 2,
49
+ },
50
+ };
51
+ const sett1plus2plus3 = {
52
+ root: {
53
+ p1: 'sett3',
54
+ p2: 2,
55
+ nm: { nm2: 2 },
56
+ style: { s1: 'foo', s2: 3, nm: { nm2: 2 } },
57
+ },
58
+ fakeSlot: {
59
+ ps2: 2,
60
+ style: { s1: 'sett2' },
61
+ },
62
+ };
63
+ const mergeOptions = {
64
+ object: {
65
+ style: 0,
66
+ },
67
+ };
68
+ const deep1 = {
69
+ a: { b: { c: 1 } },
70
+ b: { c: { d: { d: 'foo' } } },
71
+ c: { e: 4 },
72
+ };
73
+ const deep2 = {
74
+ a: { b1: 3, b: { c: 2 } },
75
+ b: { c: { d2: 'bar' } },
76
+ c: { e2: { f: 'baz' } },
77
+ };
78
+ const deepMerged = {
79
+ a: { b1: 3, b: { c: 2 } },
80
+ b: { c: { d: { d: 'foo' }, d2: 'bar' } },
81
+ c: { e: 4, e2: { f: 'baz' } },
82
+ };
83
+ const singleToChange = {
84
+ a: { b: { c: { changeMe: { color: 'blue' } } } },
85
+ b: { d: { changeMe: { font: 'fixed' } } },
86
+ };
87
+ const singleWithChanges = {
88
+ a: { b: { c: { changeMe: { color: 'changed' } } } },
89
+ b: { d: { changeMe: { font: 'fixed' } } },
90
+ };
91
+ const _colorKey = 'color';
92
+ const changeMeHandler = (...objs) => {
93
+ // written always assuming only one entry
94
+ if (objs.length === 1) {
95
+ const firstObj = objs[0];
96
+ if (firstObj[_colorKey]) {
97
+ return { ...firstObj, color: 'changed' };
98
+ }
99
+ return firstObj;
100
+ }
101
+ return undefined;
102
+ };
103
+ const changeMeOption1 = {
104
+ a: {
105
+ b: {
106
+ c: {
107
+ changeMe: changeMeHandler,
108
+ },
109
+ },
110
+ },
111
+ };
112
+ const changeMeOption2 = {
113
+ object: {
114
+ object: {
115
+ object: {
116
+ changeMe: changeMeHandler,
117
+ },
118
+ changeMe: changeMeHandler,
119
+ },
120
+ },
121
+ };
122
+ describe('Immutable merge unit tests', () => {
123
+ test('merge one returns same object', () => {
124
+ const obj = {
125
+ a: 'a',
126
+ b: 2,
127
+ };
128
+ expect(immutableMerge(obj, undefined)).toBe(obj);
129
+ expect(immutableMerge(undefined, obj)).toBe(obj);
130
+ });
131
+ test('merge flat is like assign', () => {
132
+ const obj1 = { a: 'a', b: 1 };
133
+ const obj2 = { b: 2, c: true };
134
+ const merged = { a: 'a', b: 2, c: true };
135
+ expect(immutableMerge(obj1, obj2)).toEqual(merged);
136
+ expect(immutableMergeCore(0, obj1, obj2)).toEqual(merged);
137
+ expect(immutableMergeCore(true, obj1, obj2)).toEqual(merged);
138
+ });
139
+ const dm1 = {
140
+ a: { b: { c: { foo: 'foo', bar: 'bar' } } },
141
+ d: { e: 1, f: { g: 'hello', h: 2 } },
142
+ };
143
+ const dm2 = {
144
+ a: { b: { c: { bar: 'bar2', baz: 'baz' } }, i: 'world' },
145
+ d: { j: 4 },
146
+ };
147
+ test('deep merge', () => {
148
+ expect(immutableMerge(dm1, dm2)).toEqual({
149
+ a: { b: { c: { foo: 'foo', bar: 'bar2', baz: 'baz' } }, i: 'world' },
150
+ d: { e: 1, f: { g: 'hello', h: 2 }, j: 4 },
151
+ });
152
+ });
153
+ test('merge zero levels', () => {
154
+ expect(immutableMergeCore(0, dm1, dm2)).toEqual(dm2);
155
+ });
156
+ test('merge one level deep', () => {
157
+ const result = {
158
+ a: dm2.a,
159
+ d: { ...dm1.d, ...dm2.d },
160
+ };
161
+ expect(immutableMergeCore(1, dm1, dm2)).toEqual(result);
162
+ expect(immutableMergeCore({ object: 0 }, dm1, dm2)).toEqual(result);
163
+ });
164
+ test('merge with empty object', () => {
165
+ const merged = immutableMergeCore(mergeOptions, sett1, {});
166
+ expect(merged).toBe(sett1);
167
+ const merged2 = immutableMergeCore(mergeOptions, {}, sett2);
168
+ expect(merged2).toBe(sett2);
169
+ });
170
+ test('merge sett1 and sett2', () => {
171
+ const merged = immutableMergeCore(mergeOptions, sett1, sett2);
172
+ expect(merged).toEqual(sett1plus2);
173
+ expect(merged.root.style).toBe(sett1.root.style);
174
+ expect(merged.fakeSlot.style).toBe(sett2.fakeSlot.style);
175
+ });
176
+ test('merge sett1 and sett3', () => {
177
+ const merged = immutableMergeCore(mergeOptions, sett1, sett3);
178
+ expect(merged).toEqual(sett1plus3);
179
+ expect(merged.fakeSlot).toBe(sett1.fakeSlot);
180
+ });
181
+ test('merge three', () => {
182
+ const merged = immutableMergeCore(mergeOptions, sett1, sett2, sett3);
183
+ expect(merged).toEqual(sett1plus2plus3);
184
+ });
185
+ test('deepMerge', () => {
186
+ const merged = immutableMergeCore(-1, deep1, deep2);
187
+ expect(merged).toEqual(deepMerged);
188
+ expect(merged.b.c.d).toBe(deep1.b.c.d);
189
+ expect(merged.a.b).not.toBe(deep2.a.b);
190
+ });
191
+ test('singleProcessNoChange', () => {
192
+ const merged = processImmutable({ object: true }, singleToChange);
193
+ expect(merged).toBe(singleToChange);
194
+ });
195
+ test('single process with change', () => {
196
+ const merged = processImmutable(changeMeOption1, singleToChange);
197
+ expect(merged).toEqual(singleWithChanges);
198
+ expect(merged).not.toBe(singleToChange);
199
+ expect(merged.b).toBe(singleToChange.b);
200
+ });
201
+ test('single process with change - alternative', () => {
202
+ const merged = processImmutable(changeMeOption2, singleToChange);
203
+ expect(merged).toEqual(singleWithChanges);
204
+ expect(merged).not.toBe(singleToChange);
205
+ expect(merged.b).toBe(singleToChange.b);
206
+ });
207
+ const withArray1 = {
208
+ baseArray: [1, 2, 3],
209
+ sub: { subArray: ['a', 'b', 'c'] },
210
+ };
211
+ const withArray2 = {
212
+ baseArray: [4, 5, 6],
213
+ sub: { subArray: ['d', 'e', 'f'] },
214
+ };
215
+ test('arrays overwrite each other', () => {
216
+ const merged = immutableMergeCore({ depth: -1 }, withArray1, withArray2);
217
+ expect(merged).toEqual(withArray2);
218
+ expect(merged).not.toBe(withArray2);
219
+ });
220
+ const withObj = {
221
+ a: { foo: 'bar' },
222
+ b: 2,
223
+ };
224
+ const withNonObj = {
225
+ a: 'hello',
226
+ b: 3,
227
+ };
228
+ test('last writer wins for objects and non-objects', () => {
229
+ const merged = immutableMerge(withObj, withNonObj);
230
+ expect(merged).toEqual(withNonObj);
231
+ const merged2 = immutableMerge(withNonObj, withObj);
232
+ expect(merged2).toEqual(withObj);
233
+ });
234
+ const arrayMerger = (...targets) => {
235
+ const arrays = targets.filter((t) => Array.isArray(t));
236
+ let result = [];
237
+ arrays.forEach((v) => (result = result.concat(...v)));
238
+ return result;
239
+ };
240
+ test('arrays can merge with handler', () => {
241
+ const merged = immutableMergeCore({
242
+ object: {
243
+ subArray: arrayMerger,
244
+ },
245
+ }, withArray1, withArray2);
246
+ expect(merged).toEqual({
247
+ baseArray: [4, 5, 6],
248
+ sub: { subArray: ['a', 'b', 'c', 'd', 'e', 'f'] },
249
+ });
250
+ });
251
+ test('arrays can merge deeply', () => {
252
+ const merged = immutableMergeCore({
253
+ object: true,
254
+ array: 'appendArray',
255
+ }, withArray1, withArray2);
256
+ expect(merged).toEqual({
257
+ baseArray: [1, 2, 3, 4, 5, 6],
258
+ sub: { subArray: ['a', 'b', 'c', 'd', 'e', 'f'] },
259
+ });
260
+ });
261
+ });
262
+ //# sourceMappingURL=Merge.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Merge.test.js","sourceRoot":"","sources":["../../src/immutable-merge/Merge.test.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ export { immutableMerge, immutableMergeCore, processImmutable, filterToObjects } from './immutable-merge/Merge';
2
+ export type { BuiltinRecursionHandlers, CustomRecursionHandler, MergeOptions, ObjectBase, RecursionHandler, RecursionOption, } from './immutable-merge/Merge';
3
+ export type { GetMemoValue } from './memo-cache/getMemoCache';
4
+ export { getMemoCache } from './memo-cache/getMemoCache';
5
+ export { memoize } from './memo-cache/memoize';
6
+ export type { StyleProp } from './merge-props/mergeStyles.types';
7
+ export { mergeStyles } from './merge-props/mergeStyles';
8
+ export { mergeProps } from './merge-props/mergeProps';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAChH,YAAY,EACV,wBAAwB,EACxB,sBAAsB,EACtB,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AAGjC,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,YAAY,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC"}
package/lib/index.js ADDED
@@ -0,0 +1,7 @@
1
+ // immutable-merge exports
2
+ export { immutableMerge, immutableMergeCore, processImmutable, filterToObjects } from './immutable-merge/Merge';
3
+ export { getMemoCache } from './memo-cache/getMemoCache';
4
+ export { memoize } from './memo-cache/memoize';
5
+ export { mergeStyles } from './merge-props/mergeStyles';
6
+ export { mergeProps } from './merge-props/mergeProps';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAYhH,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAI/C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC"}