@geekmidas/constructs 3.0.13 → 3.1.0

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 (127) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/AWSScheduledFunction-B3cHQSdp.cjs +255 -0
  3. package/dist/AWSScheduledFunction-B3cHQSdp.cjs.map +1 -0
  4. package/dist/AWSScheduledFunction-BRGjgD-i.mjs +243 -0
  5. package/dist/AWSScheduledFunction-BRGjgD-i.mjs.map +1 -0
  6. package/dist/AWSScheduledFunction-BnYDnzsF.d.mts +117 -0
  7. package/dist/AWSScheduledFunction-BnYDnzsF.d.mts.map +1 -0
  8. package/dist/AWSScheduledFunction-vjanLO3-.d.cts +117 -0
  9. package/dist/AWSScheduledFunction-vjanLO3-.d.cts.map +1 -0
  10. package/dist/{Construct-D0n7QTaI.d.mts → Construct-BY0NBQLj.d.mts} +1 -1
  11. package/dist/{Construct-D0n7QTaI.d.mts.map → Construct-BY0NBQLj.d.mts.map} +1 -1
  12. package/dist/{Construct-CdJY2DJS.mjs → Construct-CLIPPqUP.mjs} +3 -28
  13. package/dist/{Construct-CdJY2DJS.mjs.map → Construct-CLIPPqUP.mjs.map} +1 -1
  14. package/dist/{Construct-CXqvzglu.d.cts → Construct-cjIs74Gb.d.cts} +1 -1
  15. package/dist/{Construct-CXqvzglu.d.cts.map → Construct-cjIs74Gb.d.cts.map} +1 -1
  16. package/dist/{Endpoint-NvjIednd.d.mts → Endpoint-4gVYt12g.d.mts} +5 -5
  17. package/dist/{Endpoint-NvjIednd.d.mts.map → Endpoint-4gVYt12g.d.mts.map} +1 -1
  18. package/dist/{Endpoint-CE7qHX5S.d.cts → Endpoint-BlMZIwBY.d.cts} +4 -4
  19. package/dist/{Endpoint-CE7qHX5S.d.cts.map → Endpoint-BlMZIwBY.d.cts.map} +1 -1
  20. package/dist/{HonoEndpointAdaptor-DyYv0IoU.mjs → HonoEndpointAdaptor-6k-rI44C.mjs} +5 -4
  21. package/dist/{HonoEndpointAdaptor-DyYv0IoU.mjs.map → HonoEndpointAdaptor-6k-rI44C.mjs.map} +1 -1
  22. package/dist/{HonoEndpointAdaptor-DFdgCwYU.cjs → HonoEndpointAdaptor-CNIsjEw-.cjs} +6 -5
  23. package/dist/{HonoEndpointAdaptor-DFdgCwYU.cjs.map → HonoEndpointAdaptor-CNIsjEw-.cjs.map} +1 -1
  24. package/dist/{Subscriber-D8WkA8np.d.cts → Subscriber-C6YXAmTp.d.cts} +3 -3
  25. package/dist/{Subscriber-D8WkA8np.d.cts.map → Subscriber-C6YXAmTp.d.cts.map} +1 -1
  26. package/dist/{Subscriber-Tft61-YG.d.mts → Subscriber-CjOHxO0l.d.mts} +3 -3
  27. package/dist/{Subscriber-Tft61-YG.d.mts.map → Subscriber-CjOHxO0l.d.mts.map} +1 -1
  28. package/dist/adaptors/aws.cjs +12 -209
  29. package/dist/adaptors/aws.cjs.map +1 -1
  30. package/dist/adaptors/aws.d.cts +11 -66
  31. package/dist/adaptors/aws.d.cts.map +1 -1
  32. package/dist/adaptors/aws.d.mts +11 -66
  33. package/dist/adaptors/aws.d.mts.map +1 -1
  34. package/dist/adaptors/aws.mjs +11 -208
  35. package/dist/adaptors/aws.mjs.map +1 -1
  36. package/dist/adaptors/hono.cjs +6 -4
  37. package/dist/adaptors/hono.d.cts +4 -4
  38. package/dist/adaptors/hono.d.mts +4 -4
  39. package/dist/adaptors/hono.mjs +7 -5
  40. package/dist/adaptors/middy.cjs +120 -0
  41. package/dist/adaptors/middy.cjs.map +1 -0
  42. package/dist/adaptors/middy.d.cts +139 -0
  43. package/dist/adaptors/middy.d.cts.map +1 -0
  44. package/dist/adaptors/middy.d.mts +139 -0
  45. package/dist/adaptors/middy.d.mts.map +1 -0
  46. package/dist/adaptors/middy.mjs +118 -0
  47. package/dist/adaptors/middy.mjs.map +1 -0
  48. package/dist/adaptors/testing.cjs +9 -7
  49. package/dist/adaptors/testing.cjs.map +1 -1
  50. package/dist/adaptors/testing.d.cts +6 -6
  51. package/dist/adaptors/testing.d.mts +6 -6
  52. package/dist/adaptors/testing.mjs +7 -5
  53. package/dist/adaptors/testing.mjs.map +1 -1
  54. package/dist/chunk-B4qE4VCv.mjs +27 -0
  55. package/dist/crons/index.cjs +4 -1
  56. package/dist/crons/index.cjs.map +1 -1
  57. package/dist/crons/index.d.cts +6 -22
  58. package/dist/crons/index.d.cts.map +1 -1
  59. package/dist/crons/index.d.mts +5 -21
  60. package/dist/crons/index.d.mts.map +1 -1
  61. package/dist/crons/index.mjs +6 -3
  62. package/dist/crons/index.mjs.map +1 -1
  63. package/dist/endpoints/index.cjs +5 -3
  64. package/dist/endpoints/index.cjs.map +1 -1
  65. package/dist/endpoints/index.d.cts +7 -7
  66. package/dist/endpoints/index.d.mts +5 -5
  67. package/dist/endpoints/index.mjs +6 -3
  68. package/dist/endpoints/index.mjs.map +1 -1
  69. package/dist/functions/index.cjs +1 -1
  70. package/dist/functions/index.d.cts +2 -2
  71. package/dist/functions/index.d.mts +2 -2
  72. package/dist/functions/index.mjs +2 -2
  73. package/dist/{functions-GmSHFbpr.mjs → functions-BMR-1CIQ.mjs} +1639 -1638
  74. package/dist/functions-BMR-1CIQ.mjs.map +1 -0
  75. package/dist/{functions-CX21wstW.cjs → functions-_OAiwGYh.cjs} +1637 -1637
  76. package/dist/functions-_OAiwGYh.cjs.map +1 -0
  77. package/dist/{index-CzIMpK-e.d.cts → index-Dj3uvqCO.d.cts} +39 -38
  78. package/dist/index-Dj3uvqCO.d.cts.map +1 -0
  79. package/dist/{index-Cq4fz8uM.d.mts → index-DoiHTgUQ.d.mts} +35 -34
  80. package/dist/index-DoiHTgUQ.d.mts.map +1 -0
  81. package/dist/index.d.cts +3 -3
  82. package/dist/index.d.mts +3 -3
  83. package/dist/index.mjs +1 -1
  84. package/dist/{lazyAccessors-zNy6P6Cg.cjs → lazyAccessors-B4rtX68K.cjs} +6 -889
  85. package/dist/lazyAccessors-B4rtX68K.cjs.map +1 -0
  86. package/dist/{lazyAccessors-5h-aWohM.mjs → lazyAccessors-D-UHg0YJ.mjs} +9 -873
  87. package/dist/lazyAccessors-D-UHg0YJ.mjs.map +1 -0
  88. package/dist/lodash-CM4k4sZD.cjs +836 -0
  89. package/dist/lodash-CM4k4sZD.cjs.map +1 -0
  90. package/dist/lodash-DiUeLbQy.mjs +831 -0
  91. package/dist/lodash-DiUeLbQy.mjs.map +1 -0
  92. package/dist/{processAudits-B0PbJf1Z.mjs → processAudits-BEiSkgH3.mjs} +1 -1
  93. package/dist/{processAudits-B0PbJf1Z.mjs.map → processAudits-BEiSkgH3.mjs.map} +1 -1
  94. package/dist/{processAudits-B_a9bDPs.cjs → processAudits-CPcACKCA.cjs} +1 -1
  95. package/dist/{processAudits-B_a9bDPs.cjs.map → processAudits-CPcACKCA.cjs.map} +1 -1
  96. package/dist/publisher-BZgcrVPy.cjs +53 -0
  97. package/dist/publisher-BZgcrVPy.cjs.map +1 -0
  98. package/dist/publisher-CnpeMv-r.mjs +41 -0
  99. package/dist/publisher-CnpeMv-r.mjs.map +1 -0
  100. package/dist/subscribers/index.d.cts +2 -2
  101. package/dist/subscribers/index.d.mts +2 -2
  102. package/dist/subscribers/index.mjs +1 -1
  103. package/dist/{telemetry-COvVBKBM.d.mts → telemetry-Bp4DLvdQ.d.mts} +1 -1
  104. package/dist/{telemetry-Bt0vK4ma.d.cts.map → telemetry-Bp4DLvdQ.d.mts.map} +1 -1
  105. package/dist/{telemetry-Bt0vK4ma.d.cts → telemetry-Dqx-D3F7.d.cts} +1 -1
  106. package/dist/{telemetry-COvVBKBM.d.mts.map → telemetry-Dqx-D3F7.d.cts.map} +1 -1
  107. package/dist/{types-B8YlI4cx.d.cts → types-BdAaYDvd.d.cts} +1 -1
  108. package/dist/{types-B8YlI4cx.d.cts.map → types-BdAaYDvd.d.cts.map} +1 -1
  109. package/dist/{types-BA3eK4xj.d.mts → types-j0ti0JTY.d.mts} +1 -1
  110. package/dist/{types-BA3eK4xj.d.mts.map → types-j0ti0JTY.d.mts.map} +1 -1
  111. package/dist/types.d.cts +1 -1
  112. package/dist/types.d.mts +1 -1
  113. package/package.json +24 -14
  114. package/src/adaptors/__tests__/middy.spec.ts +212 -0
  115. package/src/adaptors/__tests__/trpc.spec.ts +9 -2
  116. package/src/adaptors/aws.ts +1 -0
  117. package/src/adaptors/middy.ts +225 -0
  118. package/src/crons/AWSScheduledFunction.ts +72 -0
  119. package/src/crons/__tests__/AWSScheduledFunction.spec.ts +152 -0
  120. package/src/crons/index.ts +1 -0
  121. package/tsdown.config.ts +1 -0
  122. package/dist/functions-CX21wstW.cjs.map +0 -1
  123. package/dist/functions-GmSHFbpr.mjs.map +0 -1
  124. package/dist/index-Cq4fz8uM.d.mts.map +0 -1
  125. package/dist/index-CzIMpK-e.d.cts.map +0 -1
  126. package/dist/lazyAccessors-5h-aWohM.mjs.map +0 -1
  127. package/dist/lazyAccessors-zNy6P6Cg.cjs.map +0 -1
@@ -1,10 +1,11 @@
1
- import { Construct, ConstructType, __commonJS, __toESM } from "./Construct-CdJY2DJS.mjs";
2
- import { ConsoleLogger } from "@geekmidas/logger/console";
1
+ import { __commonJS, __toESM } from "./chunk-B4qE4VCv.mjs";
2
+ import { Construct, ConstructType } from "./Construct-CLIPPqUP.mjs";
3
3
  import { UnprocessableEntityError } from "@geekmidas/errors";
4
+ import { ConsoleLogger } from "@geekmidas/logger/console";
4
5
  import { parseSchema } from "@geekmidas/schema/parser";
5
6
 
6
- //#region ../../node_modules/.pnpm/lodash.get@4.4.2/node_modules/lodash.get/index.js
7
- var require_lodash$1 = __commonJS({ "../../node_modules/.pnpm/lodash.get@4.4.2/node_modules/lodash.get/index.js"(exports, module) {
7
+ //#region ../../node_modules/.pnpm/lodash.uniqby@4.7.0/node_modules/lodash.uniqby/index.js
8
+ var require_lodash$1 = __commonJS({ "../../node_modules/.pnpm/lodash.uniqby@4.7.0/node_modules/lodash.uniqby/index.js"(exports, module) {
8
9
  /**
9
10
  * lodash (Custom Build) <https://lodash.com/>
10
11
  * Build: `lodash modularize exports="npm" -o ./`
@@ -13,14 +14,19 @@ var require_lodash$1 = __commonJS({ "../../node_modules/.pnpm/lodash.get@4.4.2/n
13
14
  * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
14
15
  * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
15
16
  */
17
+ /** Used as the size to enable large array optimizations. */
18
+ var LARGE_ARRAY_SIZE = 200;
16
19
  /** Used as the `TypeError` message for "Functions" methods. */
17
20
  var FUNC_ERROR_TEXT$1 = "Expected a function";
18
21
  /** Used to stand-in for `undefined` hash values. */
19
22
  var HASH_UNDEFINED$1 = "__lodash_hash_undefined__";
23
+ /** Used to compose bitmasks for comparison styles. */
24
+ var UNORDERED_COMPARE_FLAG = 1, PARTIAL_COMPARE_FLAG = 2;
20
25
  /** Used as references for various `Number` constants. */
21
- var INFINITY$1 = Infinity;
26
+ var INFINITY$1 = Infinity, MAX_SAFE_INTEGER = 9007199254740991;
22
27
  /** `Object#toString` result references. */
23
- var funcTag$1 = "[object Function]", genTag$1 = "[object GeneratorFunction]", symbolTag$1 = "[object Symbol]";
28
+ var argsTag = "[object Arguments]", arrayTag = "[object Array]", boolTag = "[object Boolean]", dateTag = "[object Date]", errorTag = "[object Error]", funcTag$1 = "[object Function]", genTag$1 = "[object GeneratorFunction]", mapTag = "[object Map]", numberTag = "[object Number]", objectTag = "[object Object]", promiseTag = "[object Promise]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag$1 = "[object Symbol]", weakMapTag = "[object WeakMap]";
29
+ var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]";
24
30
  /** Used to match property names within property paths. */
25
31
  var reIsDeepProp$1 = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp$1 = /^\w*$/, reLeadingDot$1 = /^\./, rePropName$1 = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
26
32
  /**
@@ -32,12 +38,165 @@ var require_lodash$1 = __commonJS({ "../../node_modules/.pnpm/lodash.get@4.4.2/n
32
38
  var reEscapeChar$1 = /\\(\\)?/g;
33
39
  /** Used to detect host constructors (Safari). */
34
40
  var reIsHostCtor$1 = /^\[object .+?Constructor\]$/;
41
+ /** Used to detect unsigned integer values. */
42
+ var reIsUint = /^(?:0|[1-9]\d*)$/;
43
+ /** Used to identify `toStringTag` values of typed arrays. */
44
+ var typedArrayTags = {};
45
+ typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
46
+ typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag$1] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
35
47
  /** Detect free variable `global` from Node.js. */
36
48
  var freeGlobal$1 = typeof global == "object" && global && global.Object === Object && global;
37
49
  /** Detect free variable `self`. */
38
50
  var freeSelf$1 = typeof self == "object" && self && self.Object === Object && self;
39
51
  /** Used as a reference to the global object. */
40
52
  var root$1 = freeGlobal$1 || freeSelf$1 || Function("return this")();
53
+ /** Detect free variable `exports`. */
54
+ var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
55
+ /** Detect free variable `module`. */
56
+ var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module;
57
+ /** Detect the popular CommonJS extension `module.exports`. */
58
+ var moduleExports = freeModule && freeModule.exports === freeExports;
59
+ /** Detect free variable `process` from Node.js. */
60
+ var freeProcess = moduleExports && freeGlobal$1.process;
61
+ /** Used to access faster Node.js helpers. */
62
+ var nodeUtil = function() {
63
+ try {
64
+ return freeProcess && freeProcess.binding("util");
65
+ } catch (e) {}
66
+ }();
67
+ var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
68
+ /**
69
+ * A specialized version of `_.includes` for arrays without support for
70
+ * specifying an index to search from.
71
+ *
72
+ * @private
73
+ * @param {Array} [array] The array to inspect.
74
+ * @param {*} target The value to search for.
75
+ * @returns {boolean} Returns `true` if `target` is found, else `false`.
76
+ */
77
+ function arrayIncludes(array, value) {
78
+ var length = array ? array.length : 0;
79
+ return !!length && baseIndexOf(array, value, 0) > -1;
80
+ }
81
+ /**
82
+ * This function is like `arrayIncludes` except that it accepts a comparator.
83
+ *
84
+ * @private
85
+ * @param {Array} [array] The array to inspect.
86
+ * @param {*} target The value to search for.
87
+ * @param {Function} comparator The comparator invoked per element.
88
+ * @returns {boolean} Returns `true` if `target` is found, else `false`.
89
+ */
90
+ function arrayIncludesWith(array, value, comparator) {
91
+ var index = -1, length = array ? array.length : 0;
92
+ while (++index < length) if (comparator(value, array[index])) return true;
93
+ return false;
94
+ }
95
+ /**
96
+ * A specialized version of `_.some` for arrays without support for iteratee
97
+ * shorthands.
98
+ *
99
+ * @private
100
+ * @param {Array} [array] The array to iterate over.
101
+ * @param {Function} predicate The function invoked per iteration.
102
+ * @returns {boolean} Returns `true` if any element passes the predicate check,
103
+ * else `false`.
104
+ */
105
+ function arraySome(array, predicate) {
106
+ var index = -1, length = array ? array.length : 0;
107
+ while (++index < length) if (predicate(array[index], index, array)) return true;
108
+ return false;
109
+ }
110
+ /**
111
+ * The base implementation of `_.findIndex` and `_.findLastIndex` without
112
+ * support for iteratee shorthands.
113
+ *
114
+ * @private
115
+ * @param {Array} array The array to inspect.
116
+ * @param {Function} predicate The function invoked per iteration.
117
+ * @param {number} fromIndex The index to search from.
118
+ * @param {boolean} [fromRight] Specify iterating from right to left.
119
+ * @returns {number} Returns the index of the matched value, else `-1`.
120
+ */
121
+ function baseFindIndex(array, predicate, fromIndex, fromRight) {
122
+ var length = array.length, index = fromIndex + (fromRight ? 1 : -1);
123
+ while (fromRight ? index-- : ++index < length) if (predicate(array[index], index, array)) return index;
124
+ return -1;
125
+ }
126
+ /**
127
+ * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
128
+ *
129
+ * @private
130
+ * @param {Array} array The array to inspect.
131
+ * @param {*} value The value to search for.
132
+ * @param {number} fromIndex The index to search from.
133
+ * @returns {number} Returns the index of the matched value, else `-1`.
134
+ */
135
+ function baseIndexOf(array, value, fromIndex) {
136
+ if (value !== value) return baseFindIndex(array, baseIsNaN, fromIndex);
137
+ var index = fromIndex - 1, length = array.length;
138
+ while (++index < length) if (array[index] === value) return index;
139
+ return -1;
140
+ }
141
+ /**
142
+ * The base implementation of `_.isNaN` without support for number objects.
143
+ *
144
+ * @private
145
+ * @param {*} value The value to check.
146
+ * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
147
+ */
148
+ function baseIsNaN(value) {
149
+ return value !== value;
150
+ }
151
+ /**
152
+ * The base implementation of `_.property` without support for deep paths.
153
+ *
154
+ * @private
155
+ * @param {string} key The key of the property to get.
156
+ * @returns {Function} Returns the new accessor function.
157
+ */
158
+ function baseProperty(key) {
159
+ return function(object) {
160
+ return object == null ? void 0 : object[key];
161
+ };
162
+ }
163
+ /**
164
+ * The base implementation of `_.times` without support for iteratee shorthands
165
+ * or max array length checks.
166
+ *
167
+ * @private
168
+ * @param {number} n The number of times to invoke `iteratee`.
169
+ * @param {Function} iteratee The function invoked per iteration.
170
+ * @returns {Array} Returns the array of results.
171
+ */
172
+ function baseTimes(n, iteratee) {
173
+ var index = -1, result = Array(n);
174
+ while (++index < n) result[index] = iteratee(index);
175
+ return result;
176
+ }
177
+ /**
178
+ * The base implementation of `_.unary` without support for storing metadata.
179
+ *
180
+ * @private
181
+ * @param {Function} func The function to cap arguments for.
182
+ * @returns {Function} Returns the new capped function.
183
+ */
184
+ function baseUnary(func) {
185
+ return function(value) {
186
+ return func(value);
187
+ };
188
+ }
189
+ /**
190
+ * Checks if a cache value for `key` exists.
191
+ *
192
+ * @private
193
+ * @param {Object} cache The cache to query.
194
+ * @param {string} key The key of the entry to check.
195
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
196
+ */
197
+ function cacheHas(cache, key) {
198
+ return cache.has(key);
199
+ }
41
200
  /**
42
201
  * Gets the value at `key` of `object`.
43
202
  *
@@ -63,6 +222,47 @@ var require_lodash$1 = __commonJS({ "../../node_modules/.pnpm/lodash.get@4.4.2/n
63
222
  } catch (e) {}
64
223
  return result;
65
224
  }
225
+ /**
226
+ * Converts `map` to its key-value pairs.
227
+ *
228
+ * @private
229
+ * @param {Object} map The map to convert.
230
+ * @returns {Array} Returns the key-value pairs.
231
+ */
232
+ function mapToArray(map) {
233
+ var index = -1, result = Array(map.size);
234
+ map.forEach(function(value, key) {
235
+ result[++index] = [key, value];
236
+ });
237
+ return result;
238
+ }
239
+ /**
240
+ * Creates a unary function that invokes `func` with its argument transformed.
241
+ *
242
+ * @private
243
+ * @param {Function} func The function to wrap.
244
+ * @param {Function} transform The argument transform.
245
+ * @returns {Function} Returns the new function.
246
+ */
247
+ function overArg(func, transform) {
248
+ return function(arg) {
249
+ return func(transform(arg));
250
+ };
251
+ }
252
+ /**
253
+ * Converts `set` to an array of its values.
254
+ *
255
+ * @private
256
+ * @param {Object} set The set to convert.
257
+ * @returns {Array} Returns the values.
258
+ */
259
+ function setToArray(set) {
260
+ var index = -1, result = Array(set.size);
261
+ set.forEach(function(value) {
262
+ result[++index] = value;
263
+ });
264
+ return result;
265
+ }
66
266
  /** Used for built-in method references. */
67
267
  var arrayProto$1 = Array.prototype, funcProto$1 = Function.prototype, objectProto$1 = Object.prototype;
68
268
  /** Used to detect overreaching core-js shims. */
@@ -85,10 +285,13 @@ var require_lodash$1 = __commonJS({ "../../node_modules/.pnpm/lodash.get@4.4.2/n
85
285
  /** Used to detect if a method is native. */
86
286
  var reIsNative$1 = RegExp("^" + funcToString$1.call(hasOwnProperty$1).replace(reRegExpChar$1, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$");
87
287
  /** Built-in value references. */
88
- var Symbol$1 = root$1.Symbol, splice$1 = arrayProto$1.splice;
89
- var Map$1 = getNative$1(root$1, "Map"), nativeCreate$1 = getNative$1(Object, "create");
288
+ var Symbol$1 = root$1.Symbol, Uint8Array = root$1.Uint8Array, propertyIsEnumerable = objectProto$1.propertyIsEnumerable, splice$1 = arrayProto$1.splice;
289
+ var nativeKeys = overArg(Object.keys, Object);
290
+ var DataView = getNative$1(root$1, "DataView"), Map$1 = getNative$1(root$1, "Map"), Promise$1 = getNative$1(root$1, "Promise"), Set = getNative$1(root$1, "Set"), WeakMap = getNative$1(root$1, "WeakMap"), nativeCreate$1 = getNative$1(Object, "create");
291
+ /** Used to detect maps, sets, and weakmaps. */
292
+ var dataViewCtorString = toSource$1(DataView), mapCtorString = toSource$1(Map$1), promiseCtorString = toSource$1(Promise$1), setCtorString = toSource$1(Set), weakMapCtorString = toSource$1(WeakMap);
90
293
  /** Used to convert symbols to primitives and strings. */
91
- var symbolProto$1 = Symbol$1 ? Symbol$1.prototype : void 0, symbolToString$1 = symbolProto$1 ? symbolProto$1.toString : void 0;
294
+ var symbolProto$1 = Symbol$1 ? Symbol$1.prototype : void 0, symbolValueOf = symbolProto$1 ? symbolProto$1.valueOf : void 0, symbolToString$1 = symbolProto$1 ? symbolProto$1.toString : void 0;
92
295
  /**
93
296
  * Creates a hash object.
94
297
  *
@@ -350,1732 +553,1768 @@ var require_lodash$1 = __commonJS({ "../../node_modules/.pnpm/lodash.get@4.4.2/n
350
553
  MapCache$1.prototype.has = mapCacheHas$1;
351
554
  MapCache$1.prototype.set = mapCacheSet$1;
352
555
  /**
353
- * Gets the index at which the `key` is found in `array` of key-value pairs.
556
+ *
557
+ * Creates an array cache object to store unique values.
354
558
  *
355
559
  * @private
356
- * @param {Array} array The array to inspect.
357
- * @param {*} key The key to search for.
358
- * @returns {number} Returns the index of the matched value, else `-1`.
560
+ * @constructor
561
+ * @param {Array} [values] The values to cache.
359
562
  */
360
- function assocIndexOf$1(array, key) {
361
- var length = array.length;
362
- while (length--) if (eq$1(array[length][0], key)) return length;
363
- return -1;
563
+ function SetCache(values) {
564
+ var index = -1, length = values ? values.length : 0;
565
+ this.__data__ = new MapCache$1();
566
+ while (++index < length) this.add(values[index]);
364
567
  }
365
568
  /**
366
- * The base implementation of `_.get` without support for default values.
569
+ * Adds `value` to the array cache.
367
570
  *
368
571
  * @private
369
- * @param {Object} object The object to query.
370
- * @param {Array|string} path The path of the property to get.
371
- * @returns {*} Returns the resolved value.
572
+ * @name add
573
+ * @memberOf SetCache
574
+ * @alias push
575
+ * @param {*} value The value to cache.
576
+ * @returns {Object} Returns the cache instance.
372
577
  */
373
- function baseGet$1(object, path) {
374
- path = isKey$1(path, object) ? [path] : castPath$1(path);
375
- var index = 0, length = path.length;
376
- while (object != null && index < length) object = object[toKey$1(path[index++])];
377
- return index && index == length ? object : void 0;
578
+ function setCacheAdd(value) {
579
+ this.__data__.set(value, HASH_UNDEFINED$1);
580
+ return this;
378
581
  }
379
582
  /**
380
- * The base implementation of `_.isNative` without bad shim checks.
583
+ * Checks if `value` is in the array cache.
381
584
  *
382
585
  * @private
383
- * @param {*} value The value to check.
384
- * @returns {boolean} Returns `true` if `value` is a native function,
385
- * else `false`.
586
+ * @name has
587
+ * @memberOf SetCache
588
+ * @param {*} value The value to search for.
589
+ * @returns {number} Returns `true` if `value` is found, else `false`.
386
590
  */
387
- function baseIsNative$1(value) {
388
- if (!isObject$1(value) || isMasked$1(value)) return false;
389
- var pattern = isFunction$1(value) || isHostObject$1(value) ? reIsNative$1 : reIsHostCtor$1;
390
- return pattern.test(toSource$1(value));
591
+ function setCacheHas(value) {
592
+ return this.__data__.has(value);
391
593
  }
594
+ SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
595
+ SetCache.prototype.has = setCacheHas;
392
596
  /**
393
- * The base implementation of `_.toString` which doesn't convert nullish
394
- * values to empty strings.
597
+ * Creates a stack cache object to store key-value pairs.
395
598
  *
396
599
  * @private
397
- * @param {*} value The value to process.
398
- * @returns {string} Returns the string.
600
+ * @constructor
601
+ * @param {Array} [entries] The key-value pairs to cache.
399
602
  */
400
- function baseToString$1(value) {
401
- if (typeof value == "string") return value;
402
- if (isSymbol$1(value)) return symbolToString$1 ? symbolToString$1.call(value) : "";
403
- var result = value + "";
404
- return result == "0" && 1 / value == -INFINITY$1 ? "-0" : result;
603
+ function Stack(entries) {
604
+ this.__data__ = new ListCache$1(entries);
405
605
  }
406
606
  /**
407
- * Casts `value` to a path array if it's not one.
607
+ * Removes all key-value entries from the stack.
408
608
  *
409
609
  * @private
410
- * @param {*} value The value to inspect.
411
- * @returns {Array} Returns the cast property path array.
610
+ * @name clear
611
+ * @memberOf Stack
412
612
  */
413
- function castPath$1(value) {
414
- return isArray$1(value) ? value : stringToPath$1(value);
613
+ function stackClear() {
614
+ this.__data__ = new ListCache$1();
415
615
  }
416
616
  /**
417
- * Gets the data for `map`.
617
+ * Removes `key` and its value from the stack.
418
618
  *
419
619
  * @private
420
- * @param {Object} map The map to query.
421
- * @param {string} key The reference key.
422
- * @returns {*} Returns the map data.
620
+ * @name delete
621
+ * @memberOf Stack
622
+ * @param {string} key The key of the value to remove.
623
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
423
624
  */
424
- function getMapData$1(map, key) {
425
- var data = map.__data__;
426
- return isKeyable$1(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
625
+ function stackDelete(key) {
626
+ return this.__data__["delete"](key);
427
627
  }
428
628
  /**
429
- * Gets the native function at `key` of `object`.
629
+ * Gets the stack value for `key`.
430
630
  *
431
631
  * @private
432
- * @param {Object} object The object to query.
433
- * @param {string} key The key of the method to get.
434
- * @returns {*} Returns the function if it's native, else `undefined`.
632
+ * @name get
633
+ * @memberOf Stack
634
+ * @param {string} key The key of the value to get.
635
+ * @returns {*} Returns the entry value.
435
636
  */
436
- function getNative$1(object, key) {
437
- var value = getValue$1(object, key);
438
- return baseIsNative$1(value) ? value : void 0;
637
+ function stackGet(key) {
638
+ return this.__data__.get(key);
439
639
  }
440
640
  /**
441
- * Checks if `value` is a property name and not a property path.
641
+ * Checks if a stack value for `key` exists.
442
642
  *
443
643
  * @private
444
- * @param {*} value The value to check.
445
- * @param {Object} [object] The object to query keys on.
446
- * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
644
+ * @name has
645
+ * @memberOf Stack
646
+ * @param {string} key The key of the entry to check.
647
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
447
648
  */
448
- function isKey$1(value, object) {
449
- if (isArray$1(value)) return false;
450
- var type = typeof value;
451
- if (type == "number" || type == "symbol" || type == "boolean" || value == null || isSymbol$1(value)) return true;
452
- return reIsPlainProp$1.test(value) || !reIsDeepProp$1.test(value) || object != null && value in Object(object);
649
+ function stackHas(key) {
650
+ return this.__data__.has(key);
453
651
  }
454
652
  /**
455
- * Checks if `value` is suitable for use as unique object key.
653
+ * Sets the stack `key` to `value`.
456
654
  *
457
655
  * @private
458
- * @param {*} value The value to check.
459
- * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
656
+ * @name set
657
+ * @memberOf Stack
658
+ * @param {string} key The key of the value to set.
659
+ * @param {*} value The value to set.
660
+ * @returns {Object} Returns the stack cache instance.
460
661
  */
461
- function isKeyable$1(value) {
462
- var type = typeof value;
463
- return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null;
662
+ function stackSet(key, value) {
663
+ var cache = this.__data__;
664
+ if (cache instanceof ListCache$1) {
665
+ var pairs = cache.__data__;
666
+ if (!Map$1 || pairs.length < LARGE_ARRAY_SIZE - 1) {
667
+ pairs.push([key, value]);
668
+ return this;
669
+ }
670
+ cache = this.__data__ = new MapCache$1(pairs);
671
+ }
672
+ cache.set(key, value);
673
+ return this;
464
674
  }
675
+ Stack.prototype.clear = stackClear;
676
+ Stack.prototype["delete"] = stackDelete;
677
+ Stack.prototype.get = stackGet;
678
+ Stack.prototype.has = stackHas;
679
+ Stack.prototype.set = stackSet;
465
680
  /**
466
- * Checks if `func` has its source masked.
681
+ * Creates an array of the enumerable property names of the array-like `value`.
467
682
  *
468
683
  * @private
469
- * @param {Function} func The function to check.
470
- * @returns {boolean} Returns `true` if `func` is masked, else `false`.
684
+ * @param {*} value The value to query.
685
+ * @param {boolean} inherited Specify returning inherited property names.
686
+ * @returns {Array} Returns the array of property names.
471
687
  */
472
- function isMasked$1(func) {
473
- return !!maskSrcKey$1 && maskSrcKey$1 in func;
688
+ function arrayLikeKeys(value, inherited) {
689
+ var result = isArray$1(value) || isArguments(value) ? baseTimes(value.length, String) : [];
690
+ var length = result.length, skipIndexes = !!length;
691
+ for (var key in value) if ((inherited || hasOwnProperty$1.call(value, key)) && !(skipIndexes && (key == "length" || isIndex(key, length)))) result.push(key);
692
+ return result;
474
693
  }
475
694
  /**
476
- * Converts `string` to a property path array.
695
+ * Gets the index at which the `key` is found in `array` of key-value pairs.
477
696
  *
478
697
  * @private
479
- * @param {string} string The string to convert.
480
- * @returns {Array} Returns the property path array.
698
+ * @param {Array} array The array to inspect.
699
+ * @param {*} key The key to search for.
700
+ * @returns {number} Returns the index of the matched value, else `-1`.
481
701
  */
482
- var stringToPath$1 = memoize$1(function(string) {
483
- string = toString$1(string);
484
- var result = [];
485
- if (reLeadingDot$1.test(string)) result.push("");
486
- string.replace(rePropName$1, function(match, number, quote, string$1) {
487
- result.push(quote ? string$1.replace(reEscapeChar$1, "$1") : number || match);
488
- });
489
- return result;
490
- });
702
+ function assocIndexOf$1(array, key) {
703
+ var length = array.length;
704
+ while (length--) if (eq$1(array[length][0], key)) return length;
705
+ return -1;
706
+ }
491
707
  /**
492
- * Converts `value` to a string key if it's not a string or symbol.
708
+ * The base implementation of `_.get` without support for default values.
493
709
  *
494
710
  * @private
495
- * @param {*} value The value to inspect.
496
- * @returns {string|symbol} Returns the key.
711
+ * @param {Object} object The object to query.
712
+ * @param {Array|string} path The path of the property to get.
713
+ * @returns {*} Returns the resolved value.
497
714
  */
498
- function toKey$1(value) {
499
- if (typeof value == "string" || isSymbol$1(value)) return value;
500
- var result = value + "";
501
- return result == "0" && 1 / value == -INFINITY$1 ? "-0" : result;
715
+ function baseGet$1(object, path) {
716
+ path = isKey$1(path, object) ? [path] : castPath$1(path);
717
+ var index = 0, length = path.length;
718
+ while (object != null && index < length) object = object[toKey$1(path[index++])];
719
+ return index && index == length ? object : void 0;
502
720
  }
503
721
  /**
504
- * Converts `func` to its source code.
722
+ * The base implementation of `getTag`.
505
723
  *
506
724
  * @private
507
- * @param {Function} func The function to process.
508
- * @returns {string} Returns the source code.
725
+ * @param {*} value The value to query.
726
+ * @returns {string} Returns the `toStringTag`.
509
727
  */
510
- function toSource$1(func) {
511
- if (func != null) {
512
- try {
513
- return funcToString$1.call(func);
514
- } catch (e) {}
515
- try {
516
- return func + "";
517
- } catch (e) {}
518
- }
519
- return "";
728
+ function baseGetTag(value) {
729
+ return objectToString$1.call(value);
520
730
  }
521
731
  /**
522
- * Creates a function that memoizes the result of `func`. If `resolver` is
523
- * provided, it determines the cache key for storing the result based on the
524
- * arguments provided to the memoized function. By default, the first argument
525
- * provided to the memoized function is used as the map cache key. The `func`
526
- * is invoked with the `this` binding of the memoized function.
527
- *
528
- * **Note:** The cache is exposed as the `cache` property on the memoized
529
- * function. Its creation may be customized by replacing the `_.memoize.Cache`
530
- * constructor with one whose instances implement the
531
- * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
532
- * method interface of `delete`, `get`, `has`, and `set`.
533
- *
534
- * @static
535
- * @memberOf _
536
- * @since 0.1.0
537
- * @category Function
538
- * @param {Function} func The function to have its output memoized.
539
- * @param {Function} [resolver] The function to resolve the cache key.
540
- * @returns {Function} Returns the new memoized function.
541
- * @example
542
- *
543
- * var object = { 'a': 1, 'b': 2 };
544
- * var other = { 'c': 3, 'd': 4 };
545
- *
546
- * var values = _.memoize(_.values);
547
- * values(object);
548
- * // => [1, 2]
549
- *
550
- * values(other);
551
- * // => [3, 4]
552
- *
553
- * object.a = 2;
554
- * values(object);
555
- * // => [1, 2]
556
- *
557
- * // Modify the result cache.
558
- * values.cache.set(object, ['a', 'b']);
559
- * values(object);
560
- * // => ['a', 'b']
732
+ * The base implementation of `_.hasIn` without support for deep paths.
561
733
  *
562
- * // Replace `_.memoize.Cache`.
563
- * _.memoize.Cache = WeakMap;
734
+ * @private
735
+ * @param {Object} [object] The object to query.
736
+ * @param {Array|string} key The key to check.
737
+ * @returns {boolean} Returns `true` if `key` exists, else `false`.
564
738
  */
565
- function memoize$1(func, resolver) {
566
- if (typeof func != "function" || resolver && typeof resolver != "function") throw new TypeError(FUNC_ERROR_TEXT$1);
567
- var memoized = function() {
568
- var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;
569
- if (cache.has(key)) return cache.get(key);
570
- var result = func.apply(this, args);
571
- memoized.cache = cache.set(key, result);
572
- return result;
573
- };
574
- memoized.cache = new (memoize$1.Cache || MapCache$1)();
575
- return memoized;
739
+ function baseHasIn(object, key) {
740
+ return object != null && key in Object(object);
576
741
  }
577
- memoize$1.Cache = MapCache$1;
578
742
  /**
579
- * Performs a
580
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
581
- * comparison between two values to determine if they are equivalent.
743
+ * The base implementation of `_.isEqual` which supports partial comparisons
744
+ * and tracks traversed objects.
582
745
  *
583
- * @static
584
- * @memberOf _
585
- * @since 4.0.0
586
- * @category Lang
746
+ * @private
587
747
  * @param {*} value The value to compare.
588
748
  * @param {*} other The other value to compare.
749
+ * @param {Function} [customizer] The function to customize comparisons.
750
+ * @param {boolean} [bitmask] The bitmask of comparison flags.
751
+ * The bitmask may be composed of the following flags:
752
+ * 1 - Unordered comparison
753
+ * 2 - Partial comparison
754
+ * @param {Object} [stack] Tracks traversed `value` and `other` objects.
589
755
  * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
590
- * @example
591
- *
592
- * var object = { 'a': 1 };
593
- * var other = { 'a': 1 };
594
- *
595
- * _.eq(object, object);
596
- * // => true
597
- *
598
- * _.eq(object, other);
599
- * // => false
600
- *
601
- * _.eq('a', 'a');
602
- * // => true
603
- *
604
- * _.eq('a', Object('a'));
605
- * // => false
606
- *
607
- * _.eq(NaN, NaN);
608
- * // => true
609
756
  */
610
- function eq$1(value, other) {
611
- return value === other || value !== value && other !== other;
757
+ function baseIsEqual(value, other, customizer, bitmask, stack) {
758
+ if (value === other) return true;
759
+ if (value == null || other == null || !isObject$1(value) && !isObjectLike$1(other)) return value !== value && other !== other;
760
+ return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);
612
761
  }
613
762
  /**
614
- * Checks if `value` is classified as an `Array` object.
615
- *
616
- * @static
617
- * @memberOf _
618
- * @since 0.1.0
619
- * @category Lang
620
- * @param {*} value The value to check.
621
- * @returns {boolean} Returns `true` if `value` is an array, else `false`.
622
- * @example
623
- *
624
- * _.isArray([1, 2, 3]);
625
- * // => true
626
- *
627
- * _.isArray(document.body.children);
628
- * // => false
629
- *
630
- * _.isArray('abc');
631
- * // => false
763
+ * A specialized version of `baseIsEqual` for arrays and objects which performs
764
+ * deep comparisons and tracks traversed objects enabling objects with circular
765
+ * references to be compared.
632
766
  *
633
- * _.isArray(_.noop);
634
- * // => false
767
+ * @private
768
+ * @param {Object} object The object to compare.
769
+ * @param {Object} other The other object to compare.
770
+ * @param {Function} equalFunc The function to determine equivalents of values.
771
+ * @param {Function} [customizer] The function to customize comparisons.
772
+ * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`
773
+ * for more details.
774
+ * @param {Object} [stack] Tracks traversed `object` and `other` objects.
775
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
635
776
  */
636
- var isArray$1 = Array.isArray;
777
+ function baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {
778
+ var objIsArr = isArray$1(object), othIsArr = isArray$1(other), objTag = arrayTag, othTag = arrayTag;
779
+ if (!objIsArr) {
780
+ objTag = getTag(object);
781
+ objTag = objTag == argsTag ? objectTag : objTag;
782
+ }
783
+ if (!othIsArr) {
784
+ othTag = getTag(other);
785
+ othTag = othTag == argsTag ? objectTag : othTag;
786
+ }
787
+ var objIsObj = objTag == objectTag && !isHostObject$1(object), othIsObj = othTag == objectTag && !isHostObject$1(other), isSameTag = objTag == othTag;
788
+ if (isSameTag && !objIsObj) {
789
+ stack || (stack = new Stack());
790
+ return objIsArr || isTypedArray(object) ? equalArrays(object, other, equalFunc, customizer, bitmask, stack) : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);
791
+ }
792
+ if (!(bitmask & PARTIAL_COMPARE_FLAG)) {
793
+ var objIsWrapped = objIsObj && hasOwnProperty$1.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty$1.call(other, "__wrapped__");
794
+ if (objIsWrapped || othIsWrapped) {
795
+ var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;
796
+ stack || (stack = new Stack());
797
+ return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);
798
+ }
799
+ }
800
+ if (!isSameTag) return false;
801
+ stack || (stack = new Stack());
802
+ return equalObjects(object, other, equalFunc, customizer, bitmask, stack);
803
+ }
637
804
  /**
638
- * Checks if `value` is classified as a `Function` object.
639
- *
640
- * @static
641
- * @memberOf _
642
- * @since 0.1.0
643
- * @category Lang
644
- * @param {*} value The value to check.
645
- * @returns {boolean} Returns `true` if `value` is a function, else `false`.
646
- * @example
647
- *
648
- * _.isFunction(_);
649
- * // => true
805
+ * The base implementation of `_.isMatch` without support for iteratee shorthands.
650
806
  *
651
- * _.isFunction(/abc/);
652
- * // => false
807
+ * @private
808
+ * @param {Object} object The object to inspect.
809
+ * @param {Object} source The object of property values to match.
810
+ * @param {Array} matchData The property names, values, and compare flags to match.
811
+ * @param {Function} [customizer] The function to customize comparisons.
812
+ * @returns {boolean} Returns `true` if `object` is a match, else `false`.
653
813
  */
654
- function isFunction$1(value) {
655
- var tag = isObject$1(value) ? objectToString$1.call(value) : "";
656
- return tag == funcTag$1 || tag == genTag$1;
814
+ function baseIsMatch(object, source, matchData, customizer) {
815
+ var index = matchData.length, length = index, noCustomizer = !customizer;
816
+ if (object == null) return !length;
817
+ object = Object(object);
818
+ while (index--) {
819
+ var data = matchData[index];
820
+ if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) return false;
821
+ }
822
+ while (++index < length) {
823
+ data = matchData[index];
824
+ var key = data[0], objValue = object[key], srcValue = data[1];
825
+ if (noCustomizer && data[2]) {
826
+ if (objValue === void 0 && !(key in object)) return false;
827
+ } else {
828
+ var stack = new Stack();
829
+ if (customizer) var result = customizer(objValue, srcValue, key, object, source, stack);
830
+ if (!(result === void 0 ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack) : result)) return false;
831
+ }
832
+ }
833
+ return true;
657
834
  }
658
835
  /**
659
- * Checks if `value` is the
660
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
661
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
836
+ * The base implementation of `_.isNative` without bad shim checks.
662
837
  *
663
- * @static
664
- * @memberOf _
665
- * @since 0.1.0
666
- * @category Lang
838
+ * @private
667
839
  * @param {*} value The value to check.
668
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
669
- * @example
670
- *
671
- * _.isObject({});
672
- * // => true
673
- *
674
- * _.isObject([1, 2, 3]);
675
- * // => true
676
- *
677
- * _.isObject(_.noop);
678
- * // => true
679
- *
680
- * _.isObject(null);
681
- * // => false
840
+ * @returns {boolean} Returns `true` if `value` is a native function,
841
+ * else `false`.
682
842
  */
683
- function isObject$1(value) {
684
- var type = typeof value;
685
- return !!value && (type == "object" || type == "function");
843
+ function baseIsNative$1(value) {
844
+ if (!isObject$1(value) || isMasked$1(value)) return false;
845
+ var pattern = isFunction$1(value) || isHostObject$1(value) ? reIsNative$1 : reIsHostCtor$1;
846
+ return pattern.test(toSource$1(value));
686
847
  }
687
848
  /**
688
- * Checks if `value` is object-like. A value is object-like if it's not `null`
689
- * and has a `typeof` result of "object".
849
+ * The base implementation of `_.isTypedArray` without Node.js optimizations.
690
850
  *
691
- * @static
692
- * @memberOf _
693
- * @since 4.0.0
694
- * @category Lang
851
+ * @private
695
852
  * @param {*} value The value to check.
696
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
697
- * @example
698
- *
699
- * _.isObjectLike({});
700
- * // => true
701
- *
702
- * _.isObjectLike([1, 2, 3]);
703
- * // => true
853
+ * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
854
+ */
855
+ function baseIsTypedArray(value) {
856
+ return isObjectLike$1(value) && isLength(value.length) && !!typedArrayTags[objectToString$1.call(value)];
857
+ }
858
+ /**
859
+ * The base implementation of `_.iteratee`.
704
860
  *
705
- * _.isObjectLike(_.noop);
706
- * // => false
861
+ * @private
862
+ * @param {*} [value=_.identity] The value to convert to an iteratee.
863
+ * @returns {Function} Returns the iteratee.
864
+ */
865
+ function baseIteratee(value) {
866
+ if (typeof value == "function") return value;
867
+ if (value == null) return identity;
868
+ if (typeof value == "object") return isArray$1(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);
869
+ return property(value);
870
+ }
871
+ /**
872
+ * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
707
873
  *
708
- * _.isObjectLike(null);
709
- * // => false
874
+ * @private
875
+ * @param {Object} object The object to query.
876
+ * @returns {Array} Returns the array of property names.
710
877
  */
711
- function isObjectLike$1(value) {
712
- return !!value && typeof value == "object";
878
+ function baseKeys(object) {
879
+ if (!isPrototype(object)) return nativeKeys(object);
880
+ var result = [];
881
+ for (var key in Object(object)) if (hasOwnProperty$1.call(object, key) && key != "constructor") result.push(key);
882
+ return result;
713
883
  }
714
884
  /**
715
- * Checks if `value` is classified as a `Symbol` primitive or object.
885
+ * The base implementation of `_.matches` which doesn't clone `source`.
716
886
  *
717
- * @static
718
- * @memberOf _
719
- * @since 4.0.0
720
- * @category Lang
721
- * @param {*} value The value to check.
722
- * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
723
- * @example
887
+ * @private
888
+ * @param {Object} source The object of property values to match.
889
+ * @returns {Function} Returns the new spec function.
890
+ */
891
+ function baseMatches(source) {
892
+ var matchData = getMatchData(source);
893
+ if (matchData.length == 1 && matchData[0][2]) return matchesStrictComparable(matchData[0][0], matchData[0][1]);
894
+ return function(object) {
895
+ return object === source || baseIsMatch(object, source, matchData);
896
+ };
897
+ }
898
+ /**
899
+ * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
724
900
  *
725
- * _.isSymbol(Symbol.iterator);
726
- * // => true
901
+ * @private
902
+ * @param {string} path The path of the property to get.
903
+ * @param {*} srcValue The value to match.
904
+ * @returns {Function} Returns the new spec function.
905
+ */
906
+ function baseMatchesProperty(path, srcValue) {
907
+ if (isKey$1(path) && isStrictComparable(srcValue)) return matchesStrictComparable(toKey$1(path), srcValue);
908
+ return function(object) {
909
+ var objValue = get$2(object, path);
910
+ return objValue === void 0 && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, void 0, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);
911
+ };
912
+ }
913
+ /**
914
+ * A specialized version of `baseProperty` which supports deep paths.
727
915
  *
728
- * _.isSymbol('abc');
729
- * // => false
916
+ * @private
917
+ * @param {Array|string} path The path of the property to get.
918
+ * @returns {Function} Returns the new accessor function.
730
919
  */
731
- function isSymbol$1(value) {
732
- return typeof value == "symbol" || isObjectLike$1(value) && objectToString$1.call(value) == symbolTag$1;
920
+ function basePropertyDeep(path) {
921
+ return function(object) {
922
+ return baseGet$1(object, path);
923
+ };
733
924
  }
734
925
  /**
735
- * Converts `value` to a string. An empty string is returned for `null`
736
- * and `undefined` values. The sign of `-0` is preserved.
926
+ * The base implementation of `_.toString` which doesn't convert nullish
927
+ * values to empty strings.
737
928
  *
738
- * @static
739
- * @memberOf _
740
- * @since 4.0.0
741
- * @category Lang
929
+ * @private
742
930
  * @param {*} value The value to process.
743
931
  * @returns {string} Returns the string.
744
- * @example
745
- *
746
- * _.toString(null);
747
- * // => ''
748
- *
749
- * _.toString(-0);
750
- * // => '-0'
751
- *
752
- * _.toString([1, 2, 3]);
753
- * // => '1,2,3'
754
932
  */
755
- function toString$1(value) {
756
- return value == null ? "" : baseToString$1(value);
933
+ function baseToString$1(value) {
934
+ if (typeof value == "string") return value;
935
+ if (isSymbol$1(value)) return symbolToString$1 ? symbolToString$1.call(value) : "";
936
+ var result = value + "";
937
+ return result == "0" && 1 / value == -INFINITY$1 ? "-0" : result;
757
938
  }
758
939
  /**
759
- * Gets the value at `path` of `object`. If the resolved value is
760
- * `undefined`, the `defaultValue` is returned in its place.
940
+ * The base implementation of `_.uniqBy` without support for iteratee shorthands.
761
941
  *
762
- * @static
763
- * @memberOf _
764
- * @since 3.7.0
765
- * @category Object
766
- * @param {Object} object The object to query.
767
- * @param {Array|string} path The path of the property to get.
768
- * @param {*} [defaultValue] The value returned for `undefined` resolved values.
769
- * @returns {*} Returns the resolved value.
770
- * @example
771
- *
772
- * var object = { 'a': [{ 'b': { 'c': 3 } }] };
773
- *
774
- * _.get(object, 'a[0].b.c');
775
- * // => 3
776
- *
777
- * _.get(object, ['a', '0', 'b', 'c']);
778
- * // => 3
779
- *
780
- * _.get(object, 'a.b.c', 'default');
781
- * // => 'default'
942
+ * @private
943
+ * @param {Array} array The array to inspect.
944
+ * @param {Function} [iteratee] The iteratee invoked per element.
945
+ * @param {Function} [comparator] The comparator invoked per element.
946
+ * @returns {Array} Returns the new duplicate free array.
782
947
  */
783
- function get$2(object, path, defaultValue) {
784
- var result = object == null ? void 0 : baseGet$1(object, path);
785
- return result === void 0 ? defaultValue : result;
786
- }
787
- module.exports = get$2;
788
- } });
789
-
790
- //#endregion
791
- //#region src/functions/BaseFunctionBuilder.ts
792
- var import_lodash$2 = __toESM(require_lodash$1(), 1);
793
- const DEFAULT_LOGGER$3 = new ConsoleLogger();
794
- var BaseFunctionBuilder = class BaseFunctionBuilder {
795
- inputSchema;
796
- outputSchema;
797
- _timeout;
798
- _services = [];
799
- _logger = DEFAULT_LOGGER$3;
800
- _events = [];
801
- _publisher;
802
- _auditorStorage;
803
- _databaseService;
804
- static isStandardSchemaV1(s) {
805
- const schema = s["~standard"];
806
- return schema && typeof schema.validate === "function";
807
- }
808
- static async parseComposableStandardSchema(data, schema) {
809
- if (BaseFunctionBuilder.isStandardSchemaV1(schema)) {
810
- const validated = await schema["~standard"].validate(data);
811
- if (validated.issues) throw validated.issues;
812
- return validated.value;
813
- }
814
- const result = {};
815
- for (const key in schema) {
816
- const item = schema[key];
817
- if (BaseFunctionBuilder.isStandardSchemaV1(item)) {
818
- const value = (0, import_lodash$2.default)(data, key);
819
- const validated = await item["~standard"].validate(value);
820
- if (validated.issues) throw validated.issues;
821
- result[key] = validated.value;
948
+ function baseUniq(array, iteratee, comparator) {
949
+ var index = -1, includes = arrayIncludes, length = array.length, isCommon = true, result = [], seen = result;
950
+ if (comparator) {
951
+ isCommon = false;
952
+ includes = arrayIncludesWith;
953
+ } else if (length >= LARGE_ARRAY_SIZE) {
954
+ var set = iteratee ? null : createSet(array);
955
+ if (set) return setToArray(set);
956
+ isCommon = false;
957
+ includes = cacheHas;
958
+ seen = new SetCache();
959
+ } else seen = iteratee ? [] : result;
960
+ outer: while (++index < length) {
961
+ var value = array[index], computed = iteratee ? iteratee(value) : value;
962
+ value = comparator || value !== 0 ? value : 0;
963
+ if (isCommon && computed === computed) {
964
+ var seenIndex = seen.length;
965
+ while (seenIndex--) if (seen[seenIndex] === computed) continue outer;
966
+ if (iteratee) seen.push(computed);
967
+ result.push(value);
968
+ } else if (!includes(seen, computed, comparator)) {
969
+ if (seen !== result) seen.push(computed);
970
+ result.push(value);
822
971
  }
823
972
  }
824
973
  return result;
825
974
  }
826
- constructor(type = ConstructType.Function) {
827
- this.type = type;
828
- }
829
- timeout(timeout) {
830
- this._timeout = timeout;
831
- return this;
832
- }
833
- event(event) {
834
- this._events.push(event);
835
- return this;
836
- }
837
- publisher(publisher) {
838
- this._publisher = publisher;
839
- return this;
840
- }
841
- auditor(storage) {
842
- this._auditorStorage = storage;
843
- return this;
844
- }
845
- /**
846
- * Set the database service for this function.
847
- * The database will be available in the handler context as `db`.
848
- */
849
- database(service) {
850
- this._databaseService = service;
851
- return this;
852
- }
853
- };
854
-
855
- //#endregion
856
- //#region ../../node_modules/.pnpm/lodash.uniqby@4.7.0/node_modules/lodash.uniqby/index.js
857
- var require_lodash = __commonJS({ "../../node_modules/.pnpm/lodash.uniqby@4.7.0/node_modules/lodash.uniqby/index.js"(exports, module) {
858
- /**
859
- * lodash (Custom Build) <https://lodash.com/>
860
- * Build: `lodash modularize exports="npm" -o ./`
861
- * Copyright jQuery Foundation and other contributors <https://jquery.org/>
862
- * Released under MIT license <https://lodash.com/license>
863
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
864
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
865
- */
866
- /** Used as the size to enable large array optimizations. */
867
- var LARGE_ARRAY_SIZE = 200;
868
- /** Used as the `TypeError` message for "Functions" methods. */
869
- var FUNC_ERROR_TEXT = "Expected a function";
870
- /** Used to stand-in for `undefined` hash values. */
871
- var HASH_UNDEFINED = "__lodash_hash_undefined__";
872
- /** Used to compose bitmasks for comparison styles. */
873
- var UNORDERED_COMPARE_FLAG = 1, PARTIAL_COMPARE_FLAG = 2;
874
- /** Used as references for various `Number` constants. */
875
- var INFINITY = Infinity, MAX_SAFE_INTEGER = 9007199254740991;
876
- /** `Object#toString` result references. */
877
- var argsTag = "[object Arguments]", arrayTag = "[object Array]", boolTag = "[object Boolean]", dateTag = "[object Date]", errorTag = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag = "[object Map]", numberTag = "[object Number]", objectTag = "[object Object]", promiseTag = "[object Promise]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]", weakMapTag = "[object WeakMap]";
878
- var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]";
879
- /** Used to match property names within property paths. */
880
- var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/, reLeadingDot = /^\./, rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
881
- /**
882
- * Used to match `RegExp`
883
- * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
884
- */
885
- var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
886
- /** Used to match backslashes in property paths. */
887
- var reEscapeChar = /\\(\\)?/g;
888
- /** Used to detect host constructors (Safari). */
889
- var reIsHostCtor = /^\[object .+?Constructor\]$/;
890
- /** Used to detect unsigned integer values. */
891
- var reIsUint = /^(?:0|[1-9]\d*)$/;
892
- /** Used to identify `toStringTag` values of typed arrays. */
893
- var typedArrayTags = {};
894
- typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
895
- typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
896
- /** Detect free variable `global` from Node.js. */
897
- var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
898
- /** Detect free variable `self`. */
899
- var freeSelf = typeof self == "object" && self && self.Object === Object && self;
900
- /** Used as a reference to the global object. */
901
- var root = freeGlobal || freeSelf || Function("return this")();
902
- /** Detect free variable `exports`. */
903
- var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
904
- /** Detect free variable `module`. */
905
- var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module;
906
- /** Detect the popular CommonJS extension `module.exports`. */
907
- var moduleExports = freeModule && freeModule.exports === freeExports;
908
- /** Detect free variable `process` from Node.js. */
909
- var freeProcess = moduleExports && freeGlobal.process;
910
- /** Used to access faster Node.js helpers. */
911
- var nodeUtil = function() {
912
- try {
913
- return freeProcess && freeProcess.binding("util");
914
- } catch (e) {}
915
- }();
916
- var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
917
- /**
918
- * A specialized version of `_.includes` for arrays without support for
919
- * specifying an index to search from.
920
- *
921
- * @private
922
- * @param {Array} [array] The array to inspect.
923
- * @param {*} target The value to search for.
924
- * @returns {boolean} Returns `true` if `target` is found, else `false`.
925
- */
926
- function arrayIncludes(array, value) {
927
- var length = array ? array.length : 0;
928
- return !!length && baseIndexOf(array, value, 0) > -1;
929
- }
930
- /**
931
- * This function is like `arrayIncludes` except that it accepts a comparator.
932
- *
933
- * @private
934
- * @param {Array} [array] The array to inspect.
935
- * @param {*} target The value to search for.
936
- * @param {Function} comparator The comparator invoked per element.
937
- * @returns {boolean} Returns `true` if `target` is found, else `false`.
938
- */
939
- function arrayIncludesWith(array, value, comparator) {
940
- var index = -1, length = array ? array.length : 0;
941
- while (++index < length) if (comparator(value, array[index])) return true;
942
- return false;
943
- }
944
975
  /**
945
- * A specialized version of `_.some` for arrays without support for iteratee
946
- * shorthands.
976
+ * Casts `value` to a path array if it's not one.
947
977
  *
948
978
  * @private
949
- * @param {Array} [array] The array to iterate over.
950
- * @param {Function} predicate The function invoked per iteration.
951
- * @returns {boolean} Returns `true` if any element passes the predicate check,
952
- * else `false`.
979
+ * @param {*} value The value to inspect.
980
+ * @returns {Array} Returns the cast property path array.
953
981
  */
954
- function arraySome(array, predicate) {
955
- var index = -1, length = array ? array.length : 0;
956
- while (++index < length) if (predicate(array[index], index, array)) return true;
957
- return false;
982
+ function castPath$1(value) {
983
+ return isArray$1(value) ? value : stringToPath$1(value);
958
984
  }
959
985
  /**
960
- * The base implementation of `_.findIndex` and `_.findLastIndex` without
961
- * support for iteratee shorthands.
986
+ * Creates a set object of `values`.
962
987
  *
963
988
  * @private
964
- * @param {Array} array The array to inspect.
965
- * @param {Function} predicate The function invoked per iteration.
966
- * @param {number} fromIndex The index to search from.
967
- * @param {boolean} [fromRight] Specify iterating from right to left.
968
- * @returns {number} Returns the index of the matched value, else `-1`.
989
+ * @param {Array} values The values to add to the set.
990
+ * @returns {Object} Returns the new set.
969
991
  */
970
- function baseFindIndex(array, predicate, fromIndex, fromRight) {
971
- var length = array.length, index = fromIndex + (fromRight ? 1 : -1);
972
- while (fromRight ? index-- : ++index < length) if (predicate(array[index], index, array)) return index;
973
- return -1;
974
- }
992
+ var createSet = !(Set && 1 / setToArray(new Set([, -0]))[1] == INFINITY$1) ? noop : function(values) {
993
+ return new Set(values);
994
+ };
975
995
  /**
976
- * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
996
+ * A specialized version of `baseIsEqualDeep` for arrays with support for
997
+ * partial deep comparisons.
977
998
  *
978
999
  * @private
979
- * @param {Array} array The array to inspect.
980
- * @param {*} value The value to search for.
981
- * @param {number} fromIndex The index to search from.
982
- * @returns {number} Returns the index of the matched value, else `-1`.
1000
+ * @param {Array} array The array to compare.
1001
+ * @param {Array} other The other array to compare.
1002
+ * @param {Function} equalFunc The function to determine equivalents of values.
1003
+ * @param {Function} customizer The function to customize comparisons.
1004
+ * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`
1005
+ * for more details.
1006
+ * @param {Object} stack Tracks traversed `array` and `other` objects.
1007
+ * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
983
1008
  */
984
- function baseIndexOf(array, value, fromIndex) {
985
- if (value !== value) return baseFindIndex(array, baseIsNaN, fromIndex);
986
- var index = fromIndex - 1, length = array.length;
987
- while (++index < length) if (array[index] === value) return index;
988
- return -1;
1009
+ function equalArrays(array, other, equalFunc, customizer, bitmask, stack) {
1010
+ var isPartial = bitmask & PARTIAL_COMPARE_FLAG, arrLength = array.length, othLength = other.length;
1011
+ if (arrLength != othLength && !(isPartial && othLength > arrLength)) return false;
1012
+ var stacked = stack.get(array);
1013
+ if (stacked && stack.get(other)) return stacked == other;
1014
+ var index = -1, result = true, seen = bitmask & UNORDERED_COMPARE_FLAG ? new SetCache() : void 0;
1015
+ stack.set(array, other);
1016
+ stack.set(other, array);
1017
+ while (++index < arrLength) {
1018
+ var arrValue = array[index], othValue = other[index];
1019
+ if (customizer) var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);
1020
+ if (compared !== void 0) {
1021
+ if (compared) continue;
1022
+ result = false;
1023
+ break;
1024
+ }
1025
+ if (seen) {
1026
+ if (!arraySome(other, function(othValue$1, othIndex) {
1027
+ if (!seen.has(othIndex) && (arrValue === othValue$1 || equalFunc(arrValue, othValue$1, customizer, bitmask, stack))) return seen.add(othIndex);
1028
+ })) {
1029
+ result = false;
1030
+ break;
1031
+ }
1032
+ } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {
1033
+ result = false;
1034
+ break;
1035
+ }
1036
+ }
1037
+ stack["delete"](array);
1038
+ stack["delete"](other);
1039
+ return result;
989
1040
  }
990
1041
  /**
991
- * The base implementation of `_.isNaN` without support for number objects.
1042
+ * A specialized version of `baseIsEqualDeep` for comparing objects of
1043
+ * the same `toStringTag`.
992
1044
  *
993
- * @private
994
- * @param {*} value The value to check.
995
- * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
996
- */
997
- function baseIsNaN(value) {
998
- return value !== value;
999
- }
1000
- /**
1001
- * The base implementation of `_.property` without support for deep paths.
1045
+ * **Note:** This function only supports comparing values with tags of
1046
+ * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
1002
1047
  *
1003
1048
  * @private
1004
- * @param {string} key The key of the property to get.
1005
- * @returns {Function} Returns the new accessor function.
1049
+ * @param {Object} object The object to compare.
1050
+ * @param {Object} other The other object to compare.
1051
+ * @param {string} tag The `toStringTag` of the objects to compare.
1052
+ * @param {Function} equalFunc The function to determine equivalents of values.
1053
+ * @param {Function} customizer The function to customize comparisons.
1054
+ * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`
1055
+ * for more details.
1056
+ * @param {Object} stack Tracks traversed `object` and `other` objects.
1057
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
1006
1058
  */
1007
- function baseProperty(key) {
1008
- return function(object) {
1009
- return object == null ? void 0 : object[key];
1010
- };
1059
+ function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {
1060
+ switch (tag) {
1061
+ case dataViewTag:
1062
+ if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) return false;
1063
+ object = object.buffer;
1064
+ other = other.buffer;
1065
+ case arrayBufferTag:
1066
+ if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) return false;
1067
+ return true;
1068
+ case boolTag:
1069
+ case dateTag:
1070
+ case numberTag: return eq$1(+object, +other);
1071
+ case errorTag: return object.name == other.name && object.message == other.message;
1072
+ case regexpTag:
1073
+ case stringTag: return object == other + "";
1074
+ case mapTag: var convert = mapToArray;
1075
+ case setTag:
1076
+ var isPartial = bitmask & PARTIAL_COMPARE_FLAG;
1077
+ convert || (convert = setToArray);
1078
+ if (object.size != other.size && !isPartial) return false;
1079
+ var stacked = stack.get(object);
1080
+ if (stacked) return stacked == other;
1081
+ bitmask |= UNORDERED_COMPARE_FLAG;
1082
+ stack.set(object, other);
1083
+ var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);
1084
+ stack["delete"](object);
1085
+ return result;
1086
+ case symbolTag$1: if (symbolValueOf) return symbolValueOf.call(object) == symbolValueOf.call(other);
1087
+ }
1088
+ return false;
1011
1089
  }
1012
1090
  /**
1013
- * The base implementation of `_.times` without support for iteratee shorthands
1014
- * or max array length checks.
1091
+ * A specialized version of `baseIsEqualDeep` for objects with support for
1092
+ * partial deep comparisons.
1015
1093
  *
1016
1094
  * @private
1017
- * @param {number} n The number of times to invoke `iteratee`.
1018
- * @param {Function} iteratee The function invoked per iteration.
1019
- * @returns {Array} Returns the array of results.
1095
+ * @param {Object} object The object to compare.
1096
+ * @param {Object} other The other object to compare.
1097
+ * @param {Function} equalFunc The function to determine equivalents of values.
1098
+ * @param {Function} customizer The function to customize comparisons.
1099
+ * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`
1100
+ * for more details.
1101
+ * @param {Object} stack Tracks traversed `object` and `other` objects.
1102
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
1020
1103
  */
1021
- function baseTimes(n, iteratee) {
1022
- var index = -1, result = Array(n);
1023
- while (++index < n) result[index] = iteratee(index);
1104
+ function equalObjects(object, other, equalFunc, customizer, bitmask, stack) {
1105
+ var isPartial = bitmask & PARTIAL_COMPARE_FLAG, objProps = keys(object), objLength = objProps.length, othProps = keys(other), othLength = othProps.length;
1106
+ if (objLength != othLength && !isPartial) return false;
1107
+ var index = objLength;
1108
+ while (index--) {
1109
+ var key = objProps[index];
1110
+ if (!(isPartial ? key in other : hasOwnProperty$1.call(other, key))) return false;
1111
+ }
1112
+ var stacked = stack.get(object);
1113
+ if (stacked && stack.get(other)) return stacked == other;
1114
+ var result = true;
1115
+ stack.set(object, other);
1116
+ stack.set(other, object);
1117
+ var skipCtor = isPartial;
1118
+ while (++index < objLength) {
1119
+ key = objProps[index];
1120
+ var objValue = object[key], othValue = other[key];
1121
+ if (customizer) var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);
1122
+ if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack) : compared)) {
1123
+ result = false;
1124
+ break;
1125
+ }
1126
+ skipCtor || (skipCtor = key == "constructor");
1127
+ }
1128
+ if (result && !skipCtor) {
1129
+ var objCtor = object.constructor, othCtor = other.constructor;
1130
+ if (objCtor != othCtor && "constructor" in object && "constructor" in other && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) result = false;
1131
+ }
1132
+ stack["delete"](object);
1133
+ stack["delete"](other);
1024
1134
  return result;
1025
1135
  }
1026
1136
  /**
1027
- * The base implementation of `_.unary` without support for storing metadata.
1137
+ * Gets the data for `map`.
1028
1138
  *
1029
1139
  * @private
1030
- * @param {Function} func The function to cap arguments for.
1031
- * @returns {Function} Returns the new capped function.
1140
+ * @param {Object} map The map to query.
1141
+ * @param {string} key The reference key.
1142
+ * @returns {*} Returns the map data.
1032
1143
  */
1033
- function baseUnary(func) {
1034
- return function(value) {
1035
- return func(value);
1036
- };
1144
+ function getMapData$1(map, key) {
1145
+ var data = map.__data__;
1146
+ return isKeyable$1(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
1037
1147
  }
1038
1148
  /**
1039
- * Checks if a cache value for `key` exists.
1149
+ * Gets the property names, values, and compare flags of `object`.
1040
1150
  *
1041
1151
  * @private
1042
- * @param {Object} cache The cache to query.
1043
- * @param {string} key The key of the entry to check.
1044
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
1152
+ * @param {Object} object The object to query.
1153
+ * @returns {Array} Returns the match data of `object`.
1045
1154
  */
1046
- function cacheHas(cache, key) {
1047
- return cache.has(key);
1155
+ function getMatchData(object) {
1156
+ var result = keys(object), length = result.length;
1157
+ while (length--) {
1158
+ var key = result[length], value = object[key];
1159
+ result[length] = [
1160
+ key,
1161
+ value,
1162
+ isStrictComparable(value)
1163
+ ];
1164
+ }
1165
+ return result;
1048
1166
  }
1049
1167
  /**
1050
- * Gets the value at `key` of `object`.
1168
+ * Gets the native function at `key` of `object`.
1051
1169
  *
1052
1170
  * @private
1053
- * @param {Object} [object] The object to query.
1054
- * @param {string} key The key of the property to get.
1055
- * @returns {*} Returns the property value.
1171
+ * @param {Object} object The object to query.
1172
+ * @param {string} key The key of the method to get.
1173
+ * @returns {*} Returns the function if it's native, else `undefined`.
1056
1174
  */
1057
- function getValue(object, key) {
1058
- return object == null ? void 0 : object[key];
1175
+ function getNative$1(object, key) {
1176
+ var value = getValue$1(object, key);
1177
+ return baseIsNative$1(value) ? value : void 0;
1059
1178
  }
1060
1179
  /**
1061
- * Checks if `value` is a host object in IE < 9.
1180
+ * Gets the `toStringTag` of `value`.
1062
1181
  *
1063
1182
  * @private
1064
- * @param {*} value The value to check.
1065
- * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
1183
+ * @param {*} value The value to query.
1184
+ * @returns {string} Returns the `toStringTag`.
1066
1185
  */
1067
- function isHostObject(value) {
1068
- var result = false;
1069
- if (value != null && typeof value.toString != "function") try {
1070
- result = !!(value + "");
1071
- } catch (e) {}
1186
+ var getTag = baseGetTag;
1187
+ if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map$1 && getTag(new Map$1()) != mapTag || Promise$1 && getTag(Promise$1.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) getTag = function(value) {
1188
+ var result = objectToString$1.call(value), Ctor = result == objectTag ? value.constructor : void 0, ctorString = Ctor ? toSource$1(Ctor) : void 0;
1189
+ if (ctorString) switch (ctorString) {
1190
+ case dataViewCtorString: return dataViewTag;
1191
+ case mapCtorString: return mapTag;
1192
+ case promiseCtorString: return promiseTag;
1193
+ case setCtorString: return setTag;
1194
+ case weakMapCtorString: return weakMapTag;
1195
+ }
1072
1196
  return result;
1073
- }
1197
+ };
1074
1198
  /**
1075
- * Converts `map` to its key-value pairs.
1199
+ * Checks if `path` exists on `object`.
1076
1200
  *
1077
1201
  * @private
1078
- * @param {Object} map The map to convert.
1079
- * @returns {Array} Returns the key-value pairs.
1202
+ * @param {Object} object The object to query.
1203
+ * @param {Array|string} path The path to check.
1204
+ * @param {Function} hasFunc The function to check properties.
1205
+ * @returns {boolean} Returns `true` if `path` exists, else `false`.
1080
1206
  */
1081
- function mapToArray(map) {
1082
- var index = -1, result = Array(map.size);
1083
- map.forEach(function(value, key) {
1084
- result[++index] = [key, value];
1085
- });
1086
- return result;
1207
+ function hasPath(object, path, hasFunc) {
1208
+ path = isKey$1(path, object) ? [path] : castPath$1(path);
1209
+ var result, index = -1, length = path.length;
1210
+ while (++index < length) {
1211
+ var key = toKey$1(path[index]);
1212
+ if (!(result = object != null && hasFunc(object, key))) break;
1213
+ object = object[key];
1214
+ }
1215
+ if (result) return result;
1216
+ var length = object ? object.length : 0;
1217
+ return !!length && isLength(length) && isIndex(key, length) && (isArray$1(object) || isArguments(object));
1087
1218
  }
1088
1219
  /**
1089
- * Creates a unary function that invokes `func` with its argument transformed.
1220
+ * Checks if `value` is a valid array-like index.
1090
1221
  *
1091
1222
  * @private
1092
- * @param {Function} func The function to wrap.
1093
- * @param {Function} transform The argument transform.
1094
- * @returns {Function} Returns the new function.
1223
+ * @param {*} value The value to check.
1224
+ * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
1225
+ * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
1095
1226
  */
1096
- function overArg(func, transform) {
1097
- return function(arg) {
1098
- return func(transform(arg));
1099
- };
1227
+ function isIndex(value, length) {
1228
+ length = length == null ? MAX_SAFE_INTEGER : length;
1229
+ return !!length && (typeof value == "number" || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;
1100
1230
  }
1101
1231
  /**
1102
- * Converts `set` to an array of its values.
1232
+ * Checks if `value` is a property name and not a property path.
1103
1233
  *
1104
1234
  * @private
1105
- * @param {Object} set The set to convert.
1106
- * @returns {Array} Returns the values.
1235
+ * @param {*} value The value to check.
1236
+ * @param {Object} [object] The object to query keys on.
1237
+ * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
1107
1238
  */
1108
- function setToArray(set) {
1109
- var index = -1, result = Array(set.size);
1110
- set.forEach(function(value) {
1111
- result[++index] = value;
1112
- });
1113
- return result;
1239
+ function isKey$1(value, object) {
1240
+ if (isArray$1(value)) return false;
1241
+ var type = typeof value;
1242
+ if (type == "number" || type == "symbol" || type == "boolean" || value == null || isSymbol$1(value)) return true;
1243
+ return reIsPlainProp$1.test(value) || !reIsDeepProp$1.test(value) || object != null && value in Object(object);
1114
1244
  }
1115
- /** Used for built-in method references. */
1116
- var arrayProto = Array.prototype, funcProto = Function.prototype, objectProto = Object.prototype;
1117
- /** Used to detect overreaching core-js shims. */
1118
- var coreJsData = root["__core-js_shared__"];
1119
- /** Used to detect methods masquerading as native. */
1120
- var maskSrcKey = function() {
1121
- var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
1122
- return uid ? "Symbol(src)_1." + uid : "";
1123
- }();
1124
- /** Used to resolve the decompiled source of functions. */
1125
- var funcToString = funcProto.toString;
1126
- /** Used to check objects for own properties. */
1127
- var hasOwnProperty = objectProto.hasOwnProperty;
1128
- /**
1129
- * Used to resolve the
1130
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
1131
- * of values.
1132
- */
1133
- var objectToString = objectProto.toString;
1134
- /** Used to detect if a method is native. */
1135
- var reIsNative = RegExp("^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$");
1136
- /** Built-in value references. */
1137
- var Symbol = root.Symbol, Uint8Array = root.Uint8Array, propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice;
1138
- var nativeKeys = overArg(Object.keys, Object);
1139
- var DataView = getNative(root, "DataView"), Map = getNative(root, "Map"), Promise$1 = getNative(root, "Promise"), Set = getNative(root, "Set"), WeakMap = getNative(root, "WeakMap"), nativeCreate = getNative(Object, "create");
1140
- /** Used to detect maps, sets, and weakmaps. */
1141
- var dataViewCtorString = toSource(DataView), mapCtorString = toSource(Map), promiseCtorString = toSource(Promise$1), setCtorString = toSource(Set), weakMapCtorString = toSource(WeakMap);
1142
- /** Used to convert symbols to primitives and strings. */
1143
- var symbolProto = Symbol ? Symbol.prototype : void 0, symbolValueOf = symbolProto ? symbolProto.valueOf : void 0, symbolToString = symbolProto ? symbolProto.toString : void 0;
1144
1245
  /**
1145
- * Creates a hash object.
1246
+ * Checks if `value` is suitable for use as unique object key.
1146
1247
  *
1147
1248
  * @private
1148
- * @constructor
1149
- * @param {Array} [entries] The key-value pairs to cache.
1249
+ * @param {*} value The value to check.
1250
+ * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
1150
1251
  */
1151
- function Hash(entries) {
1152
- var index = -1, length = entries ? entries.length : 0;
1153
- this.clear();
1154
- while (++index < length) {
1155
- var entry = entries[index];
1156
- this.set(entry[0], entry[1]);
1157
- }
1252
+ function isKeyable$1(value) {
1253
+ var type = typeof value;
1254
+ return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null;
1158
1255
  }
1159
1256
  /**
1160
- * Removes all key-value entries from the hash.
1257
+ * Checks if `func` has its source masked.
1161
1258
  *
1162
1259
  * @private
1163
- * @name clear
1164
- * @memberOf Hash
1260
+ * @param {Function} func The function to check.
1261
+ * @returns {boolean} Returns `true` if `func` is masked, else `false`.
1165
1262
  */
1166
- function hashClear() {
1167
- this.__data__ = nativeCreate ? nativeCreate(null) : {};
1263
+ function isMasked$1(func) {
1264
+ return !!maskSrcKey$1 && maskSrcKey$1 in func;
1168
1265
  }
1169
1266
  /**
1170
- * Removes `key` and its value from the hash.
1267
+ * Checks if `value` is likely a prototype object.
1171
1268
  *
1172
1269
  * @private
1173
- * @name delete
1174
- * @memberOf Hash
1175
- * @param {Object} hash The hash to modify.
1176
- * @param {string} key The key of the value to remove.
1177
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
1270
+ * @param {*} value The value to check.
1271
+ * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
1178
1272
  */
1179
- function hashDelete(key) {
1180
- return this.has(key) && delete this.__data__[key];
1273
+ function isPrototype(value) {
1274
+ var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto$1;
1275
+ return value === proto;
1181
1276
  }
1182
1277
  /**
1183
- * Gets the hash value for `key`.
1278
+ * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
1184
1279
  *
1185
1280
  * @private
1186
- * @name get
1187
- * @memberOf Hash
1188
- * @param {string} key The key of the value to get.
1189
- * @returns {*} Returns the entry value.
1281
+ * @param {*} value The value to check.
1282
+ * @returns {boolean} Returns `true` if `value` if suitable for strict
1283
+ * equality comparisons, else `false`.
1190
1284
  */
1191
- function hashGet(key) {
1192
- var data = this.__data__;
1193
- if (nativeCreate) {
1194
- var result = data[key];
1195
- return result === HASH_UNDEFINED ? void 0 : result;
1196
- }
1197
- return hasOwnProperty.call(data, key) ? data[key] : void 0;
1285
+ function isStrictComparable(value) {
1286
+ return value === value && !isObject$1(value);
1198
1287
  }
1199
1288
  /**
1200
- * Checks if a hash value for `key` exists.
1289
+ * A specialized version of `matchesProperty` for source values suitable
1290
+ * for strict equality comparisons, i.e. `===`.
1201
1291
  *
1202
1292
  * @private
1203
- * @name has
1204
- * @memberOf Hash
1205
- * @param {string} key The key of the entry to check.
1206
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
1293
+ * @param {string} key The key of the property to get.
1294
+ * @param {*} srcValue The value to match.
1295
+ * @returns {Function} Returns the new spec function.
1207
1296
  */
1208
- function hashHas(key) {
1209
- var data = this.__data__;
1210
- return nativeCreate ? data[key] !== void 0 : hasOwnProperty.call(data, key);
1297
+ function matchesStrictComparable(key, srcValue) {
1298
+ return function(object) {
1299
+ if (object == null) return false;
1300
+ return object[key] === srcValue && (srcValue !== void 0 || key in Object(object));
1301
+ };
1211
1302
  }
1212
1303
  /**
1213
- * Sets the hash `key` to `value`.
1304
+ * Converts `string` to a property path array.
1214
1305
  *
1215
1306
  * @private
1216
- * @name set
1217
- * @memberOf Hash
1218
- * @param {string} key The key of the value to set.
1219
- * @param {*} value The value to set.
1220
- * @returns {Object} Returns the hash instance.
1307
+ * @param {string} string The string to convert.
1308
+ * @returns {Array} Returns the property path array.
1221
1309
  */
1222
- function hashSet(key, value) {
1223
- var data = this.__data__;
1224
- data[key] = nativeCreate && value === void 0 ? HASH_UNDEFINED : value;
1225
- return this;
1226
- }
1227
- Hash.prototype.clear = hashClear;
1228
- Hash.prototype["delete"] = hashDelete;
1229
- Hash.prototype.get = hashGet;
1230
- Hash.prototype.has = hashHas;
1231
- Hash.prototype.set = hashSet;
1310
+ var stringToPath$1 = memoize$1(function(string) {
1311
+ string = toString$1(string);
1312
+ var result = [];
1313
+ if (reLeadingDot$1.test(string)) result.push("");
1314
+ string.replace(rePropName$1, function(match, number, quote, string$1) {
1315
+ result.push(quote ? string$1.replace(reEscapeChar$1, "$1") : number || match);
1316
+ });
1317
+ return result;
1318
+ });
1232
1319
  /**
1233
- * Creates an list cache object.
1320
+ * Converts `value` to a string key if it's not a string or symbol.
1234
1321
  *
1235
1322
  * @private
1236
- * @constructor
1237
- * @param {Array} [entries] The key-value pairs to cache.
1323
+ * @param {*} value The value to inspect.
1324
+ * @returns {string|symbol} Returns the key.
1238
1325
  */
1239
- function ListCache(entries) {
1240
- var index = -1, length = entries ? entries.length : 0;
1241
- this.clear();
1242
- while (++index < length) {
1243
- var entry = entries[index];
1244
- this.set(entry[0], entry[1]);
1245
- }
1326
+ function toKey$1(value) {
1327
+ if (typeof value == "string" || isSymbol$1(value)) return value;
1328
+ var result = value + "";
1329
+ return result == "0" && 1 / value == -INFINITY$1 ? "-0" : result;
1246
1330
  }
1247
1331
  /**
1248
- * Removes all key-value entries from the list cache.
1332
+ * Converts `func` to its source code.
1249
1333
  *
1250
1334
  * @private
1251
- * @name clear
1252
- * @memberOf ListCache
1335
+ * @param {Function} func The function to process.
1336
+ * @returns {string} Returns the source code.
1253
1337
  */
1254
- function listCacheClear() {
1255
- this.__data__ = [];
1338
+ function toSource$1(func) {
1339
+ if (func != null) {
1340
+ try {
1341
+ return funcToString$1.call(func);
1342
+ } catch (e) {}
1343
+ try {
1344
+ return func + "";
1345
+ } catch (e) {}
1346
+ }
1347
+ return "";
1256
1348
  }
1257
1349
  /**
1258
- * Removes `key` and its value from the list cache.
1350
+ * This method is like `_.uniq` except that it accepts `iteratee` which is
1351
+ * invoked for each element in `array` to generate the criterion by which
1352
+ * uniqueness is computed. The iteratee is invoked with one argument: (value).
1259
1353
  *
1260
- * @private
1261
- * @name delete
1262
- * @memberOf ListCache
1263
- * @param {string} key The key of the value to remove.
1264
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
1354
+ * @static
1355
+ * @memberOf _
1356
+ * @since 4.0.0
1357
+ * @category Array
1358
+ * @param {Array} array The array to inspect.
1359
+ * @param {Function} [iteratee=_.identity]
1360
+ * The iteratee invoked per element.
1361
+ * @returns {Array} Returns the new duplicate free array.
1362
+ * @example
1363
+ *
1364
+ * _.uniqBy([2.1, 1.2, 2.3], Math.floor);
1365
+ * // => [2.1, 1.2]
1366
+ *
1367
+ * // The `_.property` iteratee shorthand.
1368
+ * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
1369
+ * // => [{ 'x': 1 }, { 'x': 2 }]
1265
1370
  */
1266
- function listCacheDelete(key) {
1267
- var data = this.__data__, index = assocIndexOf(data, key);
1268
- if (index < 0) return false;
1269
- var lastIndex = data.length - 1;
1270
- if (index == lastIndex) data.pop();
1271
- else splice.call(data, index, 1);
1272
- return true;
1371
+ function uniqBy$2(array, iteratee) {
1372
+ return array && array.length ? baseUniq(array, baseIteratee(iteratee, 2)) : [];
1273
1373
  }
1274
1374
  /**
1275
- * Gets the list cache value for `key`.
1375
+ * Creates a function that memoizes the result of `func`. If `resolver` is
1376
+ * provided, it determines the cache key for storing the result based on the
1377
+ * arguments provided to the memoized function. By default, the first argument
1378
+ * provided to the memoized function is used as the map cache key. The `func`
1379
+ * is invoked with the `this` binding of the memoized function.
1276
1380
  *
1277
- * @private
1278
- * @name get
1279
- * @memberOf ListCache
1280
- * @param {string} key The key of the value to get.
1281
- * @returns {*} Returns the entry value.
1381
+ * **Note:** The cache is exposed as the `cache` property on the memoized
1382
+ * function. Its creation may be customized by replacing the `_.memoize.Cache`
1383
+ * constructor with one whose instances implement the
1384
+ * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
1385
+ * method interface of `delete`, `get`, `has`, and `set`.
1386
+ *
1387
+ * @static
1388
+ * @memberOf _
1389
+ * @since 0.1.0
1390
+ * @category Function
1391
+ * @param {Function} func The function to have its output memoized.
1392
+ * @param {Function} [resolver] The function to resolve the cache key.
1393
+ * @returns {Function} Returns the new memoized function.
1394
+ * @example
1395
+ *
1396
+ * var object = { 'a': 1, 'b': 2 };
1397
+ * var other = { 'c': 3, 'd': 4 };
1398
+ *
1399
+ * var values = _.memoize(_.values);
1400
+ * values(object);
1401
+ * // => [1, 2]
1402
+ *
1403
+ * values(other);
1404
+ * // => [3, 4]
1405
+ *
1406
+ * object.a = 2;
1407
+ * values(object);
1408
+ * // => [1, 2]
1409
+ *
1410
+ * // Modify the result cache.
1411
+ * values.cache.set(object, ['a', 'b']);
1412
+ * values(object);
1413
+ * // => ['a', 'b']
1414
+ *
1415
+ * // Replace `_.memoize.Cache`.
1416
+ * _.memoize.Cache = WeakMap;
1282
1417
  */
1283
- function listCacheGet(key) {
1284
- var data = this.__data__, index = assocIndexOf(data, key);
1285
- return index < 0 ? void 0 : data[index][1];
1418
+ function memoize$1(func, resolver) {
1419
+ if (typeof func != "function" || resolver && typeof resolver != "function") throw new TypeError(FUNC_ERROR_TEXT$1);
1420
+ var memoized = function() {
1421
+ var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;
1422
+ if (cache.has(key)) return cache.get(key);
1423
+ var result = func.apply(this, args);
1424
+ memoized.cache = cache.set(key, result);
1425
+ return result;
1426
+ };
1427
+ memoized.cache = new (memoize$1.Cache || MapCache$1)();
1428
+ return memoized;
1286
1429
  }
1430
+ memoize$1.Cache = MapCache$1;
1287
1431
  /**
1288
- * Checks if a list cache value for `key` exists.
1432
+ * Performs a
1433
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
1434
+ * comparison between two values to determine if they are equivalent.
1289
1435
  *
1290
- * @private
1291
- * @name has
1292
- * @memberOf ListCache
1293
- * @param {string} key The key of the entry to check.
1294
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
1436
+ * @static
1437
+ * @memberOf _
1438
+ * @since 4.0.0
1439
+ * @category Lang
1440
+ * @param {*} value The value to compare.
1441
+ * @param {*} other The other value to compare.
1442
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
1443
+ * @example
1444
+ *
1445
+ * var object = { 'a': 1 };
1446
+ * var other = { 'a': 1 };
1447
+ *
1448
+ * _.eq(object, object);
1449
+ * // => true
1450
+ *
1451
+ * _.eq(object, other);
1452
+ * // => false
1453
+ *
1454
+ * _.eq('a', 'a');
1455
+ * // => true
1456
+ *
1457
+ * _.eq('a', Object('a'));
1458
+ * // => false
1459
+ *
1460
+ * _.eq(NaN, NaN);
1461
+ * // => true
1295
1462
  */
1296
- function listCacheHas(key) {
1297
- return assocIndexOf(this.__data__, key) > -1;
1463
+ function eq$1(value, other) {
1464
+ return value === other || value !== value && other !== other;
1298
1465
  }
1299
1466
  /**
1300
- * Sets the list cache `key` to `value`.
1467
+ * Checks if `value` is likely an `arguments` object.
1301
1468
  *
1302
- * @private
1303
- * @name set
1304
- * @memberOf ListCache
1305
- * @param {string} key The key of the value to set.
1306
- * @param {*} value The value to set.
1307
- * @returns {Object} Returns the list cache instance.
1469
+ * @static
1470
+ * @memberOf _
1471
+ * @since 0.1.0
1472
+ * @category Lang
1473
+ * @param {*} value The value to check.
1474
+ * @returns {boolean} Returns `true` if `value` is an `arguments` object,
1475
+ * else `false`.
1476
+ * @example
1477
+ *
1478
+ * _.isArguments(function() { return arguments; }());
1479
+ * // => true
1480
+ *
1481
+ * _.isArguments([1, 2, 3]);
1482
+ * // => false
1308
1483
  */
1309
- function listCacheSet(key, value) {
1310
- var data = this.__data__, index = assocIndexOf(data, key);
1311
- if (index < 0) data.push([key, value]);
1312
- else data[index][1] = value;
1313
- return this;
1484
+ function isArguments(value) {
1485
+ return isArrayLikeObject(value) && hasOwnProperty$1.call(value, "callee") && (!propertyIsEnumerable.call(value, "callee") || objectToString$1.call(value) == argsTag);
1314
1486
  }
1315
- ListCache.prototype.clear = listCacheClear;
1316
- ListCache.prototype["delete"] = listCacheDelete;
1317
- ListCache.prototype.get = listCacheGet;
1318
- ListCache.prototype.has = listCacheHas;
1319
- ListCache.prototype.set = listCacheSet;
1320
1487
  /**
1321
- * Creates a map cache object to store key-value pairs.
1488
+ * Checks if `value` is classified as an `Array` object.
1489
+ *
1490
+ * @static
1491
+ * @memberOf _
1492
+ * @since 0.1.0
1493
+ * @category Lang
1494
+ * @param {*} value The value to check.
1495
+ * @returns {boolean} Returns `true` if `value` is an array, else `false`.
1496
+ * @example
1497
+ *
1498
+ * _.isArray([1, 2, 3]);
1499
+ * // => true
1500
+ *
1501
+ * _.isArray(document.body.children);
1502
+ * // => false
1503
+ *
1504
+ * _.isArray('abc');
1505
+ * // => false
1506
+ *
1507
+ * _.isArray(_.noop);
1508
+ * // => false
1509
+ */
1510
+ var isArray$1 = Array.isArray;
1511
+ /**
1512
+ * Checks if `value` is array-like. A value is considered array-like if it's
1513
+ * not a function and has a `value.length` that's an integer greater than or
1514
+ * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
1322
1515
  *
1323
- * @private
1324
- * @constructor
1325
- * @param {Array} [entries] The key-value pairs to cache.
1516
+ * @static
1517
+ * @memberOf _
1518
+ * @since 4.0.0
1519
+ * @category Lang
1520
+ * @param {*} value The value to check.
1521
+ * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
1522
+ * @example
1523
+ *
1524
+ * _.isArrayLike([1, 2, 3]);
1525
+ * // => true
1526
+ *
1527
+ * _.isArrayLike(document.body.children);
1528
+ * // => true
1529
+ *
1530
+ * _.isArrayLike('abc');
1531
+ * // => true
1532
+ *
1533
+ * _.isArrayLike(_.noop);
1534
+ * // => false
1326
1535
  */
1327
- function MapCache(entries) {
1328
- var index = -1, length = entries ? entries.length : 0;
1329
- this.clear();
1330
- while (++index < length) {
1331
- var entry = entries[index];
1332
- this.set(entry[0], entry[1]);
1333
- }
1536
+ function isArrayLike(value) {
1537
+ return value != null && isLength(value.length) && !isFunction$1(value);
1334
1538
  }
1335
1539
  /**
1336
- * Removes all key-value entries from the map.
1540
+ * This method is like `_.isArrayLike` except that it also checks if `value`
1541
+ * is an object.
1337
1542
  *
1338
- * @private
1339
- * @name clear
1340
- * @memberOf MapCache
1543
+ * @static
1544
+ * @memberOf _
1545
+ * @since 4.0.0
1546
+ * @category Lang
1547
+ * @param {*} value The value to check.
1548
+ * @returns {boolean} Returns `true` if `value` is an array-like object,
1549
+ * else `false`.
1550
+ * @example
1551
+ *
1552
+ * _.isArrayLikeObject([1, 2, 3]);
1553
+ * // => true
1554
+ *
1555
+ * _.isArrayLikeObject(document.body.children);
1556
+ * // => true
1557
+ *
1558
+ * _.isArrayLikeObject('abc');
1559
+ * // => false
1560
+ *
1561
+ * _.isArrayLikeObject(_.noop);
1562
+ * // => false
1341
1563
  */
1342
- function mapCacheClear() {
1343
- this.__data__ = {
1344
- "hash": new Hash(),
1345
- "map": new (Map || ListCache)(),
1346
- "string": new Hash()
1347
- };
1564
+ function isArrayLikeObject(value) {
1565
+ return isObjectLike$1(value) && isArrayLike(value);
1348
1566
  }
1349
1567
  /**
1350
- * Removes `key` and its value from the map.
1568
+ * Checks if `value` is classified as a `Function` object.
1351
1569
  *
1352
- * @private
1353
- * @name delete
1354
- * @memberOf MapCache
1355
- * @param {string} key The key of the value to remove.
1356
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
1570
+ * @static
1571
+ * @memberOf _
1572
+ * @since 0.1.0
1573
+ * @category Lang
1574
+ * @param {*} value The value to check.
1575
+ * @returns {boolean} Returns `true` if `value` is a function, else `false`.
1576
+ * @example
1577
+ *
1578
+ * _.isFunction(_);
1579
+ * // => true
1580
+ *
1581
+ * _.isFunction(/abc/);
1582
+ * // => false
1357
1583
  */
1358
- function mapCacheDelete(key) {
1359
- return getMapData(this, key)["delete"](key);
1584
+ function isFunction$1(value) {
1585
+ var tag = isObject$1(value) ? objectToString$1.call(value) : "";
1586
+ return tag == funcTag$1 || tag == genTag$1;
1360
1587
  }
1361
1588
  /**
1362
- * Gets the map value for `key`.
1589
+ * Checks if `value` is a valid array-like length.
1363
1590
  *
1364
- * @private
1365
- * @name get
1366
- * @memberOf MapCache
1367
- * @param {string} key The key of the value to get.
1368
- * @returns {*} Returns the entry value.
1591
+ * **Note:** This method is loosely based on
1592
+ * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
1593
+ *
1594
+ * @static
1595
+ * @memberOf _
1596
+ * @since 4.0.0
1597
+ * @category Lang
1598
+ * @param {*} value The value to check.
1599
+ * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
1600
+ * @example
1601
+ *
1602
+ * _.isLength(3);
1603
+ * // => true
1604
+ *
1605
+ * _.isLength(Number.MIN_VALUE);
1606
+ * // => false
1607
+ *
1608
+ * _.isLength(Infinity);
1609
+ * // => false
1610
+ *
1611
+ * _.isLength('3');
1612
+ * // => false
1369
1613
  */
1370
- function mapCacheGet(key) {
1371
- return getMapData(this, key).get(key);
1614
+ function isLength(value) {
1615
+ return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
1372
1616
  }
1373
1617
  /**
1374
- * Checks if a map value for `key` exists.
1618
+ * Checks if `value` is the
1619
+ * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
1620
+ * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
1375
1621
  *
1376
- * @private
1377
- * @name has
1378
- * @memberOf MapCache
1379
- * @param {string} key The key of the entry to check.
1380
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
1622
+ * @static
1623
+ * @memberOf _
1624
+ * @since 0.1.0
1625
+ * @category Lang
1626
+ * @param {*} value The value to check.
1627
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
1628
+ * @example
1629
+ *
1630
+ * _.isObject({});
1631
+ * // => true
1632
+ *
1633
+ * _.isObject([1, 2, 3]);
1634
+ * // => true
1635
+ *
1636
+ * _.isObject(_.noop);
1637
+ * // => true
1638
+ *
1639
+ * _.isObject(null);
1640
+ * // => false
1381
1641
  */
1382
- function mapCacheHas(key) {
1383
- return getMapData(this, key).has(key);
1642
+ function isObject$1(value) {
1643
+ var type = typeof value;
1644
+ return !!value && (type == "object" || type == "function");
1384
1645
  }
1385
1646
  /**
1386
- * Sets the map `key` to `value`.
1647
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
1648
+ * and has a `typeof` result of "object".
1387
1649
  *
1388
- * @private
1389
- * @name set
1390
- * @memberOf MapCache
1391
- * @param {string} key The key of the value to set.
1392
- * @param {*} value The value to set.
1393
- * @returns {Object} Returns the map cache instance.
1650
+ * @static
1651
+ * @memberOf _
1652
+ * @since 4.0.0
1653
+ * @category Lang
1654
+ * @param {*} value The value to check.
1655
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
1656
+ * @example
1657
+ *
1658
+ * _.isObjectLike({});
1659
+ * // => true
1660
+ *
1661
+ * _.isObjectLike([1, 2, 3]);
1662
+ * // => true
1663
+ *
1664
+ * _.isObjectLike(_.noop);
1665
+ * // => false
1666
+ *
1667
+ * _.isObjectLike(null);
1668
+ * // => false
1394
1669
  */
1395
- function mapCacheSet(key, value) {
1396
- getMapData(this, key).set(key, value);
1397
- return this;
1670
+ function isObjectLike$1(value) {
1671
+ return !!value && typeof value == "object";
1398
1672
  }
1399
- MapCache.prototype.clear = mapCacheClear;
1400
- MapCache.prototype["delete"] = mapCacheDelete;
1401
- MapCache.prototype.get = mapCacheGet;
1402
- MapCache.prototype.has = mapCacheHas;
1403
- MapCache.prototype.set = mapCacheSet;
1404
1673
  /**
1674
+ * Checks if `value` is classified as a `Symbol` primitive or object.
1405
1675
  *
1406
- * Creates an array cache object to store unique values.
1676
+ * @static
1677
+ * @memberOf _
1678
+ * @since 4.0.0
1679
+ * @category Lang
1680
+ * @param {*} value The value to check.
1681
+ * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
1682
+ * @example
1407
1683
  *
1408
- * @private
1409
- * @constructor
1410
- * @param {Array} [values] The values to cache.
1684
+ * _.isSymbol(Symbol.iterator);
1685
+ * // => true
1686
+ *
1687
+ * _.isSymbol('abc');
1688
+ * // => false
1411
1689
  */
1412
- function SetCache(values) {
1413
- var index = -1, length = values ? values.length : 0;
1414
- this.__data__ = new MapCache();
1415
- while (++index < length) this.add(values[index]);
1690
+ function isSymbol$1(value) {
1691
+ return typeof value == "symbol" || isObjectLike$1(value) && objectToString$1.call(value) == symbolTag$1;
1416
1692
  }
1417
1693
  /**
1418
- * Adds `value` to the array cache.
1694
+ * Checks if `value` is classified as a typed array.
1419
1695
  *
1420
- * @private
1421
- * @name add
1422
- * @memberOf SetCache
1423
- * @alias push
1424
- * @param {*} value The value to cache.
1425
- * @returns {Object} Returns the cache instance.
1696
+ * @static
1697
+ * @memberOf _
1698
+ * @since 3.0.0
1699
+ * @category Lang
1700
+ * @param {*} value The value to check.
1701
+ * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
1702
+ * @example
1703
+ *
1704
+ * _.isTypedArray(new Uint8Array);
1705
+ * // => true
1706
+ *
1707
+ * _.isTypedArray([]);
1708
+ * // => false
1426
1709
  */
1427
- function setCacheAdd(value) {
1428
- this.__data__.set(value, HASH_UNDEFINED);
1429
- return this;
1430
- }
1710
+ var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
1431
1711
  /**
1432
- * Checks if `value` is in the array cache.
1712
+ * Converts `value` to a string. An empty string is returned for `null`
1713
+ * and `undefined` values. The sign of `-0` is preserved.
1714
+ *
1715
+ * @static
1716
+ * @memberOf _
1717
+ * @since 4.0.0
1718
+ * @category Lang
1719
+ * @param {*} value The value to process.
1720
+ * @returns {string} Returns the string.
1721
+ * @example
1722
+ *
1723
+ * _.toString(null);
1724
+ * // => ''
1433
1725
  *
1434
- * @private
1435
- * @name has
1436
- * @memberOf SetCache
1437
- * @param {*} value The value to search for.
1438
- * @returns {number} Returns `true` if `value` is found, else `false`.
1726
+ * _.toString(-0);
1727
+ * // => '-0'
1728
+ *
1729
+ * _.toString([1, 2, 3]);
1730
+ * // => '1,2,3'
1439
1731
  */
1440
- function setCacheHas(value) {
1441
- return this.__data__.has(value);
1732
+ function toString$1(value) {
1733
+ return value == null ? "" : baseToString$1(value);
1442
1734
  }
1443
- SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
1444
- SetCache.prototype.has = setCacheHas;
1445
1735
  /**
1446
- * Creates a stack cache object to store key-value pairs.
1736
+ * Gets the value at `path` of `object`. If the resolved value is
1737
+ * `undefined`, the `defaultValue` is returned in its place.
1447
1738
  *
1448
- * @private
1449
- * @constructor
1450
- * @param {Array} [entries] The key-value pairs to cache.
1739
+ * @static
1740
+ * @memberOf _
1741
+ * @since 3.7.0
1742
+ * @category Object
1743
+ * @param {Object} object The object to query.
1744
+ * @param {Array|string} path The path of the property to get.
1745
+ * @param {*} [defaultValue] The value returned for `undefined` resolved values.
1746
+ * @returns {*} Returns the resolved value.
1747
+ * @example
1748
+ *
1749
+ * var object = { 'a': [{ 'b': { 'c': 3 } }] };
1750
+ *
1751
+ * _.get(object, 'a[0].b.c');
1752
+ * // => 3
1753
+ *
1754
+ * _.get(object, ['a', '0', 'b', 'c']);
1755
+ * // => 3
1756
+ *
1757
+ * _.get(object, 'a.b.c', 'default');
1758
+ * // => 'default'
1451
1759
  */
1452
- function Stack(entries) {
1453
- this.__data__ = new ListCache(entries);
1760
+ function get$2(object, path, defaultValue) {
1761
+ var result = object == null ? void 0 : baseGet$1(object, path);
1762
+ return result === void 0 ? defaultValue : result;
1454
1763
  }
1455
1764
  /**
1456
- * Removes all key-value entries from the stack.
1765
+ * Checks if `path` is a direct or inherited property of `object`.
1457
1766
  *
1458
- * @private
1459
- * @name clear
1460
- * @memberOf Stack
1767
+ * @static
1768
+ * @memberOf _
1769
+ * @since 4.0.0
1770
+ * @category Object
1771
+ * @param {Object} object The object to query.
1772
+ * @param {Array|string} path The path to check.
1773
+ * @returns {boolean} Returns `true` if `path` exists, else `false`.
1774
+ * @example
1775
+ *
1776
+ * var object = _.create({ 'a': _.create({ 'b': 2 }) });
1777
+ *
1778
+ * _.hasIn(object, 'a');
1779
+ * // => true
1780
+ *
1781
+ * _.hasIn(object, 'a.b');
1782
+ * // => true
1783
+ *
1784
+ * _.hasIn(object, ['a', 'b']);
1785
+ * // => true
1786
+ *
1787
+ * _.hasIn(object, 'b');
1788
+ * // => false
1461
1789
  */
1462
- function stackClear() {
1463
- this.__data__ = new ListCache();
1790
+ function hasIn(object, path) {
1791
+ return object != null && hasPath(object, path, baseHasIn);
1464
1792
  }
1465
1793
  /**
1466
- * Removes `key` and its value from the stack.
1794
+ * Creates an array of the own enumerable property names of `object`.
1467
1795
  *
1468
- * @private
1469
- * @name delete
1470
- * @memberOf Stack
1471
- * @param {string} key The key of the value to remove.
1472
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
1796
+ * **Note:** Non-object values are coerced to objects. See the
1797
+ * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
1798
+ * for more details.
1799
+ *
1800
+ * @static
1801
+ * @since 0.1.0
1802
+ * @memberOf _
1803
+ * @category Object
1804
+ * @param {Object} object The object to query.
1805
+ * @returns {Array} Returns the array of property names.
1806
+ * @example
1807
+ *
1808
+ * function Foo() {
1809
+ * this.a = 1;
1810
+ * this.b = 2;
1811
+ * }
1812
+ *
1813
+ * Foo.prototype.c = 3;
1814
+ *
1815
+ * _.keys(new Foo);
1816
+ * // => ['a', 'b'] (iteration order is not guaranteed)
1817
+ *
1818
+ * _.keys('hi');
1819
+ * // => ['0', '1']
1473
1820
  */
1474
- function stackDelete(key) {
1475
- return this.__data__["delete"](key);
1821
+ function keys(object) {
1822
+ return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
1476
1823
  }
1477
1824
  /**
1478
- * Gets the stack value for `key`.
1825
+ * This method returns the first argument it receives.
1479
1826
  *
1480
- * @private
1481
- * @name get
1482
- * @memberOf Stack
1483
- * @param {string} key The key of the value to get.
1484
- * @returns {*} Returns the entry value.
1827
+ * @static
1828
+ * @since 0.1.0
1829
+ * @memberOf _
1830
+ * @category Util
1831
+ * @param {*} value Any value.
1832
+ * @returns {*} Returns `value`.
1833
+ * @example
1834
+ *
1835
+ * var object = { 'a': 1 };
1836
+ *
1837
+ * console.log(_.identity(object) === object);
1838
+ * // => true
1485
1839
  */
1486
- function stackGet(key) {
1487
- return this.__data__.get(key);
1840
+ function identity(value) {
1841
+ return value;
1488
1842
  }
1489
1843
  /**
1490
- * Checks if a stack value for `key` exists.
1844
+ * This method returns `undefined`.
1491
1845
  *
1492
- * @private
1493
- * @name has
1494
- * @memberOf Stack
1495
- * @param {string} key The key of the entry to check.
1496
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
1846
+ * @static
1847
+ * @memberOf _
1848
+ * @since 2.3.0
1849
+ * @category Util
1850
+ * @example
1851
+ *
1852
+ * _.times(2, _.noop);
1853
+ * // => [undefined, undefined]
1497
1854
  */
1498
- function stackHas(key) {
1499
- return this.__data__.has(key);
1500
- }
1855
+ function noop() {}
1501
1856
  /**
1502
- * Sets the stack `key` to `value`.
1857
+ * Creates a function that returns the value at `path` of a given object.
1503
1858
  *
1504
- * @private
1505
- * @name set
1506
- * @memberOf Stack
1507
- * @param {string} key The key of the value to set.
1508
- * @param {*} value The value to set.
1509
- * @returns {Object} Returns the stack cache instance.
1859
+ * @static
1860
+ * @memberOf _
1861
+ * @since 2.4.0
1862
+ * @category Util
1863
+ * @param {Array|string} path The path of the property to get.
1864
+ * @returns {Function} Returns the new accessor function.
1865
+ * @example
1866
+ *
1867
+ * var objects = [
1868
+ * { 'a': { 'b': 2 } },
1869
+ * { 'a': { 'b': 1 } }
1870
+ * ];
1871
+ *
1872
+ * _.map(objects, _.property('a.b'));
1873
+ * // => [2, 1]
1874
+ *
1875
+ * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
1876
+ * // => [1, 2]
1510
1877
  */
1511
- function stackSet(key, value) {
1512
- var cache = this.__data__;
1513
- if (cache instanceof ListCache) {
1514
- var pairs = cache.__data__;
1515
- if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {
1516
- pairs.push([key, value]);
1517
- return this;
1518
- }
1519
- cache = this.__data__ = new MapCache(pairs);
1520
- }
1521
- cache.set(key, value);
1522
- return this;
1878
+ function property(path) {
1879
+ return isKey$1(path) ? baseProperty(toKey$1(path)) : basePropertyDeep(path);
1523
1880
  }
1524
- Stack.prototype.clear = stackClear;
1525
- Stack.prototype["delete"] = stackDelete;
1526
- Stack.prototype.get = stackGet;
1527
- Stack.prototype.has = stackHas;
1528
- Stack.prototype.set = stackSet;
1881
+ module.exports = uniqBy$2;
1882
+ } });
1883
+
1884
+ //#endregion
1885
+ //#region ../../node_modules/.pnpm/lodash.get@4.4.2/node_modules/lodash.get/index.js
1886
+ var require_lodash = __commonJS({ "../../node_modules/.pnpm/lodash.get@4.4.2/node_modules/lodash.get/index.js"(exports, module) {
1529
1887
  /**
1530
- * Creates an array of the enumerable property names of the array-like `value`.
1531
- *
1532
- * @private
1533
- * @param {*} value The value to query.
1534
- * @param {boolean} inherited Specify returning inherited property names.
1535
- * @returns {Array} Returns the array of property names.
1888
+ * lodash (Custom Build) <https://lodash.com/>
1889
+ * Build: `lodash modularize exports="npm" -o ./`
1890
+ * Copyright jQuery Foundation and other contributors <https://jquery.org/>
1891
+ * Released under MIT license <https://lodash.com/license>
1892
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
1893
+ * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1536
1894
  */
1537
- function arrayLikeKeys(value, inherited) {
1538
- var result = isArray(value) || isArguments(value) ? baseTimes(value.length, String) : [];
1539
- var length = result.length, skipIndexes = !!length;
1540
- for (var key in value) if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == "length" || isIndex(key, length)))) result.push(key);
1541
- return result;
1542
- }
1895
+ /** Used as the `TypeError` message for "Functions" methods. */
1896
+ var FUNC_ERROR_TEXT = "Expected a function";
1897
+ /** Used to stand-in for `undefined` hash values. */
1898
+ var HASH_UNDEFINED = "__lodash_hash_undefined__";
1899
+ /** Used as references for various `Number` constants. */
1900
+ var INFINITY = Infinity;
1901
+ /** `Object#toString` result references. */
1902
+ var funcTag = "[object Function]", genTag = "[object GeneratorFunction]", symbolTag = "[object Symbol]";
1903
+ /** Used to match property names within property paths. */
1904
+ var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/, reLeadingDot = /^\./, rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
1543
1905
  /**
1544
- * Gets the index at which the `key` is found in `array` of key-value pairs.
1545
- *
1546
- * @private
1547
- * @param {Array} array The array to inspect.
1548
- * @param {*} key The key to search for.
1549
- * @returns {number} Returns the index of the matched value, else `-1`.
1906
+ * Used to match `RegExp`
1907
+ * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
1550
1908
  */
1551
- function assocIndexOf(array, key) {
1552
- var length = array.length;
1553
- while (length--) if (eq(array[length][0], key)) return length;
1554
- return -1;
1555
- }
1909
+ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
1910
+ /** Used to match backslashes in property paths. */
1911
+ var reEscapeChar = /\\(\\)?/g;
1912
+ /** Used to detect host constructors (Safari). */
1913
+ var reIsHostCtor = /^\[object .+?Constructor\]$/;
1914
+ /** Detect free variable `global` from Node.js. */
1915
+ var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
1916
+ /** Detect free variable `self`. */
1917
+ var freeSelf = typeof self == "object" && self && self.Object === Object && self;
1918
+ /** Used as a reference to the global object. */
1919
+ var root = freeGlobal || freeSelf || Function("return this")();
1556
1920
  /**
1557
- * The base implementation of `_.get` without support for default values.
1921
+ * Gets the value at `key` of `object`.
1558
1922
  *
1559
1923
  * @private
1560
- * @param {Object} object The object to query.
1561
- * @param {Array|string} path The path of the property to get.
1562
- * @returns {*} Returns the resolved value.
1924
+ * @param {Object} [object] The object to query.
1925
+ * @param {string} key The key of the property to get.
1926
+ * @returns {*} Returns the property value.
1563
1927
  */
1564
- function baseGet(object, path) {
1565
- path = isKey(path, object) ? [path] : castPath(path);
1566
- var index = 0, length = path.length;
1567
- while (object != null && index < length) object = object[toKey(path[index++])];
1568
- return index && index == length ? object : void 0;
1928
+ function getValue(object, key) {
1929
+ return object == null ? void 0 : object[key];
1569
1930
  }
1570
1931
  /**
1571
- * The base implementation of `getTag`.
1932
+ * Checks if `value` is a host object in IE < 9.
1572
1933
  *
1573
1934
  * @private
1574
- * @param {*} value The value to query.
1575
- * @returns {string} Returns the `toStringTag`.
1935
+ * @param {*} value The value to check.
1936
+ * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
1576
1937
  */
1577
- function baseGetTag(value) {
1578
- return objectToString.call(value);
1938
+ function isHostObject(value) {
1939
+ var result = false;
1940
+ if (value != null && typeof value.toString != "function") try {
1941
+ result = !!(value + "");
1942
+ } catch (e) {}
1943
+ return result;
1579
1944
  }
1945
+ /** Used for built-in method references. */
1946
+ var arrayProto = Array.prototype, funcProto = Function.prototype, objectProto = Object.prototype;
1947
+ /** Used to detect overreaching core-js shims. */
1948
+ var coreJsData = root["__core-js_shared__"];
1949
+ /** Used to detect methods masquerading as native. */
1950
+ var maskSrcKey = function() {
1951
+ var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
1952
+ return uid ? "Symbol(src)_1." + uid : "";
1953
+ }();
1954
+ /** Used to resolve the decompiled source of functions. */
1955
+ var funcToString = funcProto.toString;
1956
+ /** Used to check objects for own properties. */
1957
+ var hasOwnProperty = objectProto.hasOwnProperty;
1580
1958
  /**
1581
- * The base implementation of `_.hasIn` without support for deep paths.
1959
+ * Used to resolve the
1960
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
1961
+ * of values.
1962
+ */
1963
+ var objectToString = objectProto.toString;
1964
+ /** Used to detect if a method is native. */
1965
+ var reIsNative = RegExp("^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$");
1966
+ /** Built-in value references. */
1967
+ var Symbol = root.Symbol, splice = arrayProto.splice;
1968
+ var Map = getNative(root, "Map"), nativeCreate = getNative(Object, "create");
1969
+ /** Used to convert symbols to primitives and strings. */
1970
+ var symbolProto = Symbol ? Symbol.prototype : void 0, symbolToString = symbolProto ? symbolProto.toString : void 0;
1971
+ /**
1972
+ * Creates a hash object.
1582
1973
  *
1583
1974
  * @private
1584
- * @param {Object} [object] The object to query.
1585
- * @param {Array|string} key The key to check.
1586
- * @returns {boolean} Returns `true` if `key` exists, else `false`.
1975
+ * @constructor
1976
+ * @param {Array} [entries] The key-value pairs to cache.
1587
1977
  */
1588
- function baseHasIn(object, key) {
1589
- return object != null && key in Object(object);
1978
+ function Hash(entries) {
1979
+ var index = -1, length = entries ? entries.length : 0;
1980
+ this.clear();
1981
+ while (++index < length) {
1982
+ var entry = entries[index];
1983
+ this.set(entry[0], entry[1]);
1984
+ }
1590
1985
  }
1591
1986
  /**
1592
- * The base implementation of `_.isEqual` which supports partial comparisons
1593
- * and tracks traversed objects.
1987
+ * Removes all key-value entries from the hash.
1594
1988
  *
1595
1989
  * @private
1596
- * @param {*} value The value to compare.
1597
- * @param {*} other The other value to compare.
1598
- * @param {Function} [customizer] The function to customize comparisons.
1599
- * @param {boolean} [bitmask] The bitmask of comparison flags.
1600
- * The bitmask may be composed of the following flags:
1601
- * 1 - Unordered comparison
1602
- * 2 - Partial comparison
1603
- * @param {Object} [stack] Tracks traversed `value` and `other` objects.
1604
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
1990
+ * @name clear
1991
+ * @memberOf Hash
1605
1992
  */
1606
- function baseIsEqual(value, other, customizer, bitmask, stack) {
1607
- if (value === other) return true;
1608
- if (value == null || other == null || !isObject(value) && !isObjectLike(other)) return value !== value && other !== other;
1609
- return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);
1993
+ function hashClear() {
1994
+ this.__data__ = nativeCreate ? nativeCreate(null) : {};
1610
1995
  }
1611
1996
  /**
1612
- * A specialized version of `baseIsEqual` for arrays and objects which performs
1613
- * deep comparisons and tracks traversed objects enabling objects with circular
1614
- * references to be compared.
1997
+ * Removes `key` and its value from the hash.
1615
1998
  *
1616
1999
  * @private
1617
- * @param {Object} object The object to compare.
1618
- * @param {Object} other The other object to compare.
1619
- * @param {Function} equalFunc The function to determine equivalents of values.
1620
- * @param {Function} [customizer] The function to customize comparisons.
1621
- * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`
1622
- * for more details.
1623
- * @param {Object} [stack] Tracks traversed `object` and `other` objects.
1624
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
2000
+ * @name delete
2001
+ * @memberOf Hash
2002
+ * @param {Object} hash The hash to modify.
2003
+ * @param {string} key The key of the value to remove.
2004
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
1625
2005
  */
1626
- function baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {
1627
- var objIsArr = isArray(object), othIsArr = isArray(other), objTag = arrayTag, othTag = arrayTag;
1628
- if (!objIsArr) {
1629
- objTag = getTag(object);
1630
- objTag = objTag == argsTag ? objectTag : objTag;
1631
- }
1632
- if (!othIsArr) {
1633
- othTag = getTag(other);
1634
- othTag = othTag == argsTag ? objectTag : othTag;
1635
- }
1636
- var objIsObj = objTag == objectTag && !isHostObject(object), othIsObj = othTag == objectTag && !isHostObject(other), isSameTag = objTag == othTag;
1637
- if (isSameTag && !objIsObj) {
1638
- stack || (stack = new Stack());
1639
- return objIsArr || isTypedArray(object) ? equalArrays(object, other, equalFunc, customizer, bitmask, stack) : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);
1640
- }
1641
- if (!(bitmask & PARTIAL_COMPARE_FLAG)) {
1642
- var objIsWrapped = objIsObj && hasOwnProperty.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty.call(other, "__wrapped__");
1643
- if (objIsWrapped || othIsWrapped) {
1644
- var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;
1645
- stack || (stack = new Stack());
1646
- return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);
1647
- }
1648
- }
1649
- if (!isSameTag) return false;
1650
- stack || (stack = new Stack());
1651
- return equalObjects(object, other, equalFunc, customizer, bitmask, stack);
2006
+ function hashDelete(key) {
2007
+ return this.has(key) && delete this.__data__[key];
1652
2008
  }
1653
2009
  /**
1654
- * The base implementation of `_.isMatch` without support for iteratee shorthands.
2010
+ * Gets the hash value for `key`.
1655
2011
  *
1656
2012
  * @private
1657
- * @param {Object} object The object to inspect.
1658
- * @param {Object} source The object of property values to match.
1659
- * @param {Array} matchData The property names, values, and compare flags to match.
1660
- * @param {Function} [customizer] The function to customize comparisons.
1661
- * @returns {boolean} Returns `true` if `object` is a match, else `false`.
2013
+ * @name get
2014
+ * @memberOf Hash
2015
+ * @param {string} key The key of the value to get.
2016
+ * @returns {*} Returns the entry value.
1662
2017
  */
1663
- function baseIsMatch(object, source, matchData, customizer) {
1664
- var index = matchData.length, length = index, noCustomizer = !customizer;
1665
- if (object == null) return !length;
1666
- object = Object(object);
1667
- while (index--) {
1668
- var data = matchData[index];
1669
- if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) return false;
1670
- }
1671
- while (++index < length) {
1672
- data = matchData[index];
1673
- var key = data[0], objValue = object[key], srcValue = data[1];
1674
- if (noCustomizer && data[2]) {
1675
- if (objValue === void 0 && !(key in object)) return false;
1676
- } else {
1677
- var stack = new Stack();
1678
- if (customizer) var result = customizer(objValue, srcValue, key, object, source, stack);
1679
- if (!(result === void 0 ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack) : result)) return false;
1680
- }
2018
+ function hashGet(key) {
2019
+ var data = this.__data__;
2020
+ if (nativeCreate) {
2021
+ var result = data[key];
2022
+ return result === HASH_UNDEFINED ? void 0 : result;
1681
2023
  }
1682
- return true;
2024
+ return hasOwnProperty.call(data, key) ? data[key] : void 0;
1683
2025
  }
1684
2026
  /**
1685
- * The base implementation of `_.isNative` without bad shim checks.
2027
+ * Checks if a hash value for `key` exists.
1686
2028
  *
1687
2029
  * @private
1688
- * @param {*} value The value to check.
1689
- * @returns {boolean} Returns `true` if `value` is a native function,
1690
- * else `false`.
2030
+ * @name has
2031
+ * @memberOf Hash
2032
+ * @param {string} key The key of the entry to check.
2033
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
1691
2034
  */
1692
- function baseIsNative(value) {
1693
- if (!isObject(value) || isMasked(value)) return false;
1694
- var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor;
1695
- return pattern.test(toSource(value));
2035
+ function hashHas(key) {
2036
+ var data = this.__data__;
2037
+ return nativeCreate ? data[key] !== void 0 : hasOwnProperty.call(data, key);
1696
2038
  }
1697
2039
  /**
1698
- * The base implementation of `_.isTypedArray` without Node.js optimizations.
2040
+ * Sets the hash `key` to `value`.
1699
2041
  *
1700
2042
  * @private
1701
- * @param {*} value The value to check.
1702
- * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
2043
+ * @name set
2044
+ * @memberOf Hash
2045
+ * @param {string} key The key of the value to set.
2046
+ * @param {*} value The value to set.
2047
+ * @returns {Object} Returns the hash instance.
1703
2048
  */
1704
- function baseIsTypedArray(value) {
1705
- return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objectToString.call(value)];
2049
+ function hashSet(key, value) {
2050
+ var data = this.__data__;
2051
+ data[key] = nativeCreate && value === void 0 ? HASH_UNDEFINED : value;
2052
+ return this;
1706
2053
  }
2054
+ Hash.prototype.clear = hashClear;
2055
+ Hash.prototype["delete"] = hashDelete;
2056
+ Hash.prototype.get = hashGet;
2057
+ Hash.prototype.has = hashHas;
2058
+ Hash.prototype.set = hashSet;
1707
2059
  /**
1708
- * The base implementation of `_.iteratee`.
2060
+ * Creates an list cache object.
1709
2061
  *
1710
2062
  * @private
1711
- * @param {*} [value=_.identity] The value to convert to an iteratee.
1712
- * @returns {Function} Returns the iteratee.
2063
+ * @constructor
2064
+ * @param {Array} [entries] The key-value pairs to cache.
1713
2065
  */
1714
- function baseIteratee(value) {
1715
- if (typeof value == "function") return value;
1716
- if (value == null) return identity;
1717
- if (typeof value == "object") return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);
1718
- return property(value);
2066
+ function ListCache(entries) {
2067
+ var index = -1, length = entries ? entries.length : 0;
2068
+ this.clear();
2069
+ while (++index < length) {
2070
+ var entry = entries[index];
2071
+ this.set(entry[0], entry[1]);
2072
+ }
1719
2073
  }
1720
2074
  /**
1721
- * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
2075
+ * Removes all key-value entries from the list cache.
1722
2076
  *
1723
2077
  * @private
1724
- * @param {Object} object The object to query.
1725
- * @returns {Array} Returns the array of property names.
2078
+ * @name clear
2079
+ * @memberOf ListCache
1726
2080
  */
1727
- function baseKeys(object) {
1728
- if (!isPrototype(object)) return nativeKeys(object);
1729
- var result = [];
1730
- for (var key in Object(object)) if (hasOwnProperty.call(object, key) && key != "constructor") result.push(key);
1731
- return result;
2081
+ function listCacheClear() {
2082
+ this.__data__ = [];
1732
2083
  }
1733
2084
  /**
1734
- * The base implementation of `_.matches` which doesn't clone `source`.
2085
+ * Removes `key` and its value from the list cache.
1735
2086
  *
1736
2087
  * @private
1737
- * @param {Object} source The object of property values to match.
1738
- * @returns {Function} Returns the new spec function.
2088
+ * @name delete
2089
+ * @memberOf ListCache
2090
+ * @param {string} key The key of the value to remove.
2091
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
1739
2092
  */
1740
- function baseMatches(source) {
1741
- var matchData = getMatchData(source);
1742
- if (matchData.length == 1 && matchData[0][2]) return matchesStrictComparable(matchData[0][0], matchData[0][1]);
1743
- return function(object) {
1744
- return object === source || baseIsMatch(object, source, matchData);
1745
- };
2093
+ function listCacheDelete(key) {
2094
+ var data = this.__data__, index = assocIndexOf(data, key);
2095
+ if (index < 0) return false;
2096
+ var lastIndex = data.length - 1;
2097
+ if (index == lastIndex) data.pop();
2098
+ else splice.call(data, index, 1);
2099
+ return true;
1746
2100
  }
1747
2101
  /**
1748
- * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
2102
+ * Gets the list cache value for `key`.
1749
2103
  *
1750
2104
  * @private
1751
- * @param {string} path The path of the property to get.
1752
- * @param {*} srcValue The value to match.
1753
- * @returns {Function} Returns the new spec function.
2105
+ * @name get
2106
+ * @memberOf ListCache
2107
+ * @param {string} key The key of the value to get.
2108
+ * @returns {*} Returns the entry value.
1754
2109
  */
1755
- function baseMatchesProperty(path, srcValue) {
1756
- if (isKey(path) && isStrictComparable(srcValue)) return matchesStrictComparable(toKey(path), srcValue);
1757
- return function(object) {
1758
- var objValue = get(object, path);
1759
- return objValue === void 0 && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, void 0, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);
1760
- };
2110
+ function listCacheGet(key) {
2111
+ var data = this.__data__, index = assocIndexOf(data, key);
2112
+ return index < 0 ? void 0 : data[index][1];
1761
2113
  }
1762
2114
  /**
1763
- * A specialized version of `baseProperty` which supports deep paths.
2115
+ * Checks if a list cache value for `key` exists.
1764
2116
  *
1765
2117
  * @private
1766
- * @param {Array|string} path The path of the property to get.
1767
- * @returns {Function} Returns the new accessor function.
2118
+ * @name has
2119
+ * @memberOf ListCache
2120
+ * @param {string} key The key of the entry to check.
2121
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
1768
2122
  */
1769
- function basePropertyDeep(path) {
1770
- return function(object) {
1771
- return baseGet(object, path);
1772
- };
2123
+ function listCacheHas(key) {
2124
+ return assocIndexOf(this.__data__, key) > -1;
1773
2125
  }
1774
2126
  /**
1775
- * The base implementation of `_.toString` which doesn't convert nullish
1776
- * values to empty strings.
2127
+ * Sets the list cache `key` to `value`.
1777
2128
  *
1778
2129
  * @private
1779
- * @param {*} value The value to process.
1780
- * @returns {string} Returns the string.
2130
+ * @name set
2131
+ * @memberOf ListCache
2132
+ * @param {string} key The key of the value to set.
2133
+ * @param {*} value The value to set.
2134
+ * @returns {Object} Returns the list cache instance.
1781
2135
  */
1782
- function baseToString(value) {
1783
- if (typeof value == "string") return value;
1784
- if (isSymbol(value)) return symbolToString ? symbolToString.call(value) : "";
1785
- var result = value + "";
1786
- return result == "0" && 1 / value == -INFINITY ? "-0" : result;
2136
+ function listCacheSet(key, value) {
2137
+ var data = this.__data__, index = assocIndexOf(data, key);
2138
+ if (index < 0) data.push([key, value]);
2139
+ else data[index][1] = value;
2140
+ return this;
1787
2141
  }
2142
+ ListCache.prototype.clear = listCacheClear;
2143
+ ListCache.prototype["delete"] = listCacheDelete;
2144
+ ListCache.prototype.get = listCacheGet;
2145
+ ListCache.prototype.has = listCacheHas;
2146
+ ListCache.prototype.set = listCacheSet;
1788
2147
  /**
1789
- * The base implementation of `_.uniqBy` without support for iteratee shorthands.
2148
+ * Creates a map cache object to store key-value pairs.
1790
2149
  *
1791
2150
  * @private
1792
- * @param {Array} array The array to inspect.
1793
- * @param {Function} [iteratee] The iteratee invoked per element.
1794
- * @param {Function} [comparator] The comparator invoked per element.
1795
- * @returns {Array} Returns the new duplicate free array.
2151
+ * @constructor
2152
+ * @param {Array} [entries] The key-value pairs to cache.
1796
2153
  */
1797
- function baseUniq(array, iteratee, comparator) {
1798
- var index = -1, includes = arrayIncludes, length = array.length, isCommon = true, result = [], seen = result;
1799
- if (comparator) {
1800
- isCommon = false;
1801
- includes = arrayIncludesWith;
1802
- } else if (length >= LARGE_ARRAY_SIZE) {
1803
- var set = iteratee ? null : createSet(array);
1804
- if (set) return setToArray(set);
1805
- isCommon = false;
1806
- includes = cacheHas;
1807
- seen = new SetCache();
1808
- } else seen = iteratee ? [] : result;
1809
- outer: while (++index < length) {
1810
- var value = array[index], computed = iteratee ? iteratee(value) : value;
1811
- value = comparator || value !== 0 ? value : 0;
1812
- if (isCommon && computed === computed) {
1813
- var seenIndex = seen.length;
1814
- while (seenIndex--) if (seen[seenIndex] === computed) continue outer;
1815
- if (iteratee) seen.push(computed);
1816
- result.push(value);
1817
- } else if (!includes(seen, computed, comparator)) {
1818
- if (seen !== result) seen.push(computed);
1819
- result.push(value);
1820
- }
2154
+ function MapCache(entries) {
2155
+ var index = -1, length = entries ? entries.length : 0;
2156
+ this.clear();
2157
+ while (++index < length) {
2158
+ var entry = entries[index];
2159
+ this.set(entry[0], entry[1]);
1821
2160
  }
1822
- return result;
1823
2161
  }
1824
2162
  /**
1825
- * Casts `value` to a path array if it's not one.
2163
+ * Removes all key-value entries from the map.
1826
2164
  *
1827
2165
  * @private
1828
- * @param {*} value The value to inspect.
1829
- * @returns {Array} Returns the cast property path array.
2166
+ * @name clear
2167
+ * @memberOf MapCache
1830
2168
  */
1831
- function castPath(value) {
1832
- return isArray(value) ? value : stringToPath(value);
2169
+ function mapCacheClear() {
2170
+ this.__data__ = {
2171
+ "hash": new Hash(),
2172
+ "map": new (Map || ListCache)(),
2173
+ "string": new Hash()
2174
+ };
1833
2175
  }
1834
2176
  /**
1835
- * Creates a set object of `values`.
2177
+ * Removes `key` and its value from the map.
1836
2178
  *
1837
2179
  * @private
1838
- * @param {Array} values The values to add to the set.
1839
- * @returns {Object} Returns the new set.
2180
+ * @name delete
2181
+ * @memberOf MapCache
2182
+ * @param {string} key The key of the value to remove.
2183
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
1840
2184
  */
1841
- var createSet = !(Set && 1 / setToArray(new Set([, -0]))[1] == INFINITY) ? noop : function(values) {
1842
- return new Set(values);
1843
- };
2185
+ function mapCacheDelete(key) {
2186
+ return getMapData(this, key)["delete"](key);
2187
+ }
1844
2188
  /**
1845
- * A specialized version of `baseIsEqualDeep` for arrays with support for
1846
- * partial deep comparisons.
2189
+ * Gets the map value for `key`.
1847
2190
  *
1848
2191
  * @private
1849
- * @param {Array} array The array to compare.
1850
- * @param {Array} other The other array to compare.
1851
- * @param {Function} equalFunc The function to determine equivalents of values.
1852
- * @param {Function} customizer The function to customize comparisons.
1853
- * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`
1854
- * for more details.
1855
- * @param {Object} stack Tracks traversed `array` and `other` objects.
1856
- * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
2192
+ * @name get
2193
+ * @memberOf MapCache
2194
+ * @param {string} key The key of the value to get.
2195
+ * @returns {*} Returns the entry value.
1857
2196
  */
1858
- function equalArrays(array, other, equalFunc, customizer, bitmask, stack) {
1859
- var isPartial = bitmask & PARTIAL_COMPARE_FLAG, arrLength = array.length, othLength = other.length;
1860
- if (arrLength != othLength && !(isPartial && othLength > arrLength)) return false;
1861
- var stacked = stack.get(array);
1862
- if (stacked && stack.get(other)) return stacked == other;
1863
- var index = -1, result = true, seen = bitmask & UNORDERED_COMPARE_FLAG ? new SetCache() : void 0;
1864
- stack.set(array, other);
1865
- stack.set(other, array);
1866
- while (++index < arrLength) {
1867
- var arrValue = array[index], othValue = other[index];
1868
- if (customizer) var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);
1869
- if (compared !== void 0) {
1870
- if (compared) continue;
1871
- result = false;
1872
- break;
1873
- }
1874
- if (seen) {
1875
- if (!arraySome(other, function(othValue$1, othIndex) {
1876
- if (!seen.has(othIndex) && (arrValue === othValue$1 || equalFunc(arrValue, othValue$1, customizer, bitmask, stack))) return seen.add(othIndex);
1877
- })) {
1878
- result = false;
1879
- break;
1880
- }
1881
- } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {
1882
- result = false;
1883
- break;
1884
- }
1885
- }
1886
- stack["delete"](array);
1887
- stack["delete"](other);
1888
- return result;
2197
+ function mapCacheGet(key) {
2198
+ return getMapData(this, key).get(key);
1889
2199
  }
1890
2200
  /**
1891
- * A specialized version of `baseIsEqualDeep` for comparing objects of
1892
- * the same `toStringTag`.
1893
- *
1894
- * **Note:** This function only supports comparing values with tags of
1895
- * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
2201
+ * Checks if a map value for `key` exists.
1896
2202
  *
1897
2203
  * @private
1898
- * @param {Object} object The object to compare.
1899
- * @param {Object} other The other object to compare.
1900
- * @param {string} tag The `toStringTag` of the objects to compare.
1901
- * @param {Function} equalFunc The function to determine equivalents of values.
1902
- * @param {Function} customizer The function to customize comparisons.
1903
- * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`
1904
- * for more details.
1905
- * @param {Object} stack Tracks traversed `object` and `other` objects.
1906
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
2204
+ * @name has
2205
+ * @memberOf MapCache
2206
+ * @param {string} key The key of the entry to check.
2207
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
1907
2208
  */
1908
- function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {
1909
- switch (tag) {
1910
- case dataViewTag:
1911
- if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) return false;
1912
- object = object.buffer;
1913
- other = other.buffer;
1914
- case arrayBufferTag:
1915
- if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) return false;
1916
- return true;
1917
- case boolTag:
1918
- case dateTag:
1919
- case numberTag: return eq(+object, +other);
1920
- case errorTag: return object.name == other.name && object.message == other.message;
1921
- case regexpTag:
1922
- case stringTag: return object == other + "";
1923
- case mapTag: var convert = mapToArray;
1924
- case setTag:
1925
- var isPartial = bitmask & PARTIAL_COMPARE_FLAG;
1926
- convert || (convert = setToArray);
1927
- if (object.size != other.size && !isPartial) return false;
1928
- var stacked = stack.get(object);
1929
- if (stacked) return stacked == other;
1930
- bitmask |= UNORDERED_COMPARE_FLAG;
1931
- stack.set(object, other);
1932
- var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);
1933
- stack["delete"](object);
1934
- return result;
1935
- case symbolTag: if (symbolValueOf) return symbolValueOf.call(object) == symbolValueOf.call(other);
1936
- }
1937
- return false;
2209
+ function mapCacheHas(key) {
2210
+ return getMapData(this, key).has(key);
1938
2211
  }
1939
2212
  /**
1940
- * A specialized version of `baseIsEqualDeep` for objects with support for
1941
- * partial deep comparisons.
2213
+ * Sets the map `key` to `value`.
1942
2214
  *
1943
2215
  * @private
1944
- * @param {Object} object The object to compare.
1945
- * @param {Object} other The other object to compare.
1946
- * @param {Function} equalFunc The function to determine equivalents of values.
1947
- * @param {Function} customizer The function to customize comparisons.
1948
- * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`
1949
- * for more details.
1950
- * @param {Object} stack Tracks traversed `object` and `other` objects.
1951
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
2216
+ * @name set
2217
+ * @memberOf MapCache
2218
+ * @param {string} key The key of the value to set.
2219
+ * @param {*} value The value to set.
2220
+ * @returns {Object} Returns the map cache instance.
1952
2221
  */
1953
- function equalObjects(object, other, equalFunc, customizer, bitmask, stack) {
1954
- var isPartial = bitmask & PARTIAL_COMPARE_FLAG, objProps = keys(object), objLength = objProps.length, othProps = keys(other), othLength = othProps.length;
1955
- if (objLength != othLength && !isPartial) return false;
1956
- var index = objLength;
1957
- while (index--) {
1958
- var key = objProps[index];
1959
- if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) return false;
1960
- }
1961
- var stacked = stack.get(object);
1962
- if (stacked && stack.get(other)) return stacked == other;
1963
- var result = true;
1964
- stack.set(object, other);
1965
- stack.set(other, object);
1966
- var skipCtor = isPartial;
1967
- while (++index < objLength) {
1968
- key = objProps[index];
1969
- var objValue = object[key], othValue = other[key];
1970
- if (customizer) var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);
1971
- if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack) : compared)) {
1972
- result = false;
1973
- break;
1974
- }
1975
- skipCtor || (skipCtor = key == "constructor");
1976
- }
1977
- if (result && !skipCtor) {
1978
- var objCtor = object.constructor, othCtor = other.constructor;
1979
- if (objCtor != othCtor && "constructor" in object && "constructor" in other && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) result = false;
1980
- }
1981
- stack["delete"](object);
1982
- stack["delete"](other);
1983
- return result;
2222
+ function mapCacheSet(key, value) {
2223
+ getMapData(this, key).set(key, value);
2224
+ return this;
1984
2225
  }
2226
+ MapCache.prototype.clear = mapCacheClear;
2227
+ MapCache.prototype["delete"] = mapCacheDelete;
2228
+ MapCache.prototype.get = mapCacheGet;
2229
+ MapCache.prototype.has = mapCacheHas;
2230
+ MapCache.prototype.set = mapCacheSet;
1985
2231
  /**
1986
- * Gets the data for `map`.
2232
+ * Gets the index at which the `key` is found in `array` of key-value pairs.
1987
2233
  *
1988
2234
  * @private
1989
- * @param {Object} map The map to query.
1990
- * @param {string} key The reference key.
1991
- * @returns {*} Returns the map data.
2235
+ * @param {Array} array The array to inspect.
2236
+ * @param {*} key The key to search for.
2237
+ * @returns {number} Returns the index of the matched value, else `-1`.
1992
2238
  */
1993
- function getMapData(map, key) {
1994
- var data = map.__data__;
1995
- return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
2239
+ function assocIndexOf(array, key) {
2240
+ var length = array.length;
2241
+ while (length--) if (eq(array[length][0], key)) return length;
2242
+ return -1;
1996
2243
  }
1997
2244
  /**
1998
- * Gets the property names, values, and compare flags of `object`.
2245
+ * The base implementation of `_.get` without support for default values.
1999
2246
  *
2000
2247
  * @private
2001
2248
  * @param {Object} object The object to query.
2002
- * @returns {Array} Returns the match data of `object`.
2249
+ * @param {Array|string} path The path of the property to get.
2250
+ * @returns {*} Returns the resolved value.
2003
2251
  */
2004
- function getMatchData(object) {
2005
- var result = keys(object), length = result.length;
2006
- while (length--) {
2007
- var key = result[length], value = object[key];
2008
- result[length] = [
2009
- key,
2010
- value,
2011
- isStrictComparable(value)
2012
- ];
2013
- }
2014
- return result;
2252
+ function baseGet(object, path) {
2253
+ path = isKey(path, object) ? [path] : castPath(path);
2254
+ var index = 0, length = path.length;
2255
+ while (object != null && index < length) object = object[toKey(path[index++])];
2256
+ return index && index == length ? object : void 0;
2015
2257
  }
2016
2258
  /**
2017
- * Gets the native function at `key` of `object`.
2259
+ * The base implementation of `_.isNative` without bad shim checks.
2018
2260
  *
2019
2261
  * @private
2020
- * @param {Object} object The object to query.
2021
- * @param {string} key The key of the method to get.
2022
- * @returns {*} Returns the function if it's native, else `undefined`.
2262
+ * @param {*} value The value to check.
2263
+ * @returns {boolean} Returns `true` if `value` is a native function,
2264
+ * else `false`.
2023
2265
  */
2024
- function getNative(object, key) {
2025
- var value = getValue(object, key);
2026
- return baseIsNative(value) ? value : void 0;
2266
+ function baseIsNative(value) {
2267
+ if (!isObject(value) || isMasked(value)) return false;
2268
+ var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor;
2269
+ return pattern.test(toSource(value));
2027
2270
  }
2028
2271
  /**
2029
- * Gets the `toStringTag` of `value`.
2272
+ * The base implementation of `_.toString` which doesn't convert nullish
2273
+ * values to empty strings.
2030
2274
  *
2031
2275
  * @private
2032
- * @param {*} value The value to query.
2033
- * @returns {string} Returns the `toStringTag`.
2276
+ * @param {*} value The value to process.
2277
+ * @returns {string} Returns the string.
2034
2278
  */
2035
- var getTag = baseGetTag;
2036
- if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise$1 && getTag(Promise$1.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) getTag = function(value) {
2037
- var result = objectToString.call(value), Ctor = result == objectTag ? value.constructor : void 0, ctorString = Ctor ? toSource(Ctor) : void 0;
2038
- if (ctorString) switch (ctorString) {
2039
- case dataViewCtorString: return dataViewTag;
2040
- case mapCtorString: return mapTag;
2041
- case promiseCtorString: return promiseTag;
2042
- case setCtorString: return setTag;
2043
- case weakMapCtorString: return weakMapTag;
2044
- }
2045
- return result;
2046
- };
2279
+ function baseToString(value) {
2280
+ if (typeof value == "string") return value;
2281
+ if (isSymbol(value)) return symbolToString ? symbolToString.call(value) : "";
2282
+ var result = value + "";
2283
+ return result == "0" && 1 / value == -INFINITY ? "-0" : result;
2284
+ }
2047
2285
  /**
2048
- * Checks if `path` exists on `object`.
2286
+ * Casts `value` to a path array if it's not one.
2049
2287
  *
2050
2288
  * @private
2051
- * @param {Object} object The object to query.
2052
- * @param {Array|string} path The path to check.
2053
- * @param {Function} hasFunc The function to check properties.
2054
- * @returns {boolean} Returns `true` if `path` exists, else `false`.
2289
+ * @param {*} value The value to inspect.
2290
+ * @returns {Array} Returns the cast property path array.
2055
2291
  */
2056
- function hasPath(object, path, hasFunc) {
2057
- path = isKey(path, object) ? [path] : castPath(path);
2058
- var result, index = -1, length = path.length;
2059
- while (++index < length) {
2060
- var key = toKey(path[index]);
2061
- if (!(result = object != null && hasFunc(object, key))) break;
2062
- object = object[key];
2063
- }
2064
- if (result) return result;
2065
- var length = object ? object.length : 0;
2066
- return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object));
2292
+ function castPath(value) {
2293
+ return isArray(value) ? value : stringToPath(value);
2067
2294
  }
2068
2295
  /**
2069
- * Checks if `value` is a valid array-like index.
2296
+ * Gets the data for `map`.
2070
2297
  *
2071
2298
  * @private
2072
- * @param {*} value The value to check.
2073
- * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
2074
- * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
2299
+ * @param {Object} map The map to query.
2300
+ * @param {string} key The reference key.
2301
+ * @returns {*} Returns the map data.
2075
2302
  */
2076
- function isIndex(value, length) {
2077
- length = length == null ? MAX_SAFE_INTEGER : length;
2078
- return !!length && (typeof value == "number" || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;
2303
+ function getMapData(map, key) {
2304
+ var data = map.__data__;
2305
+ return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
2306
+ }
2307
+ /**
2308
+ * Gets the native function at `key` of `object`.
2309
+ *
2310
+ * @private
2311
+ * @param {Object} object The object to query.
2312
+ * @param {string} key The key of the method to get.
2313
+ * @returns {*} Returns the function if it's native, else `undefined`.
2314
+ */
2315
+ function getNative(object, key) {
2316
+ var value = getValue(object, key);
2317
+ return baseIsNative(value) ? value : void 0;
2079
2318
  }
2080
2319
  /**
2081
2320
  * Checks if `value` is a property name and not a property path.
@@ -2113,43 +2352,6 @@ var require_lodash = __commonJS({ "../../node_modules/.pnpm/lodash.uniqby@4.7.0/
2113
2352
  return !!maskSrcKey && maskSrcKey in func;
2114
2353
  }
2115
2354
  /**
2116
- * Checks if `value` is likely a prototype object.
2117
- *
2118
- * @private
2119
- * @param {*} value The value to check.
2120
- * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
2121
- */
2122
- function isPrototype(value) {
2123
- var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto;
2124
- return value === proto;
2125
- }
2126
- /**
2127
- * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
2128
- *
2129
- * @private
2130
- * @param {*} value The value to check.
2131
- * @returns {boolean} Returns `true` if `value` if suitable for strict
2132
- * equality comparisons, else `false`.
2133
- */
2134
- function isStrictComparable(value) {
2135
- return value === value && !isObject(value);
2136
- }
2137
- /**
2138
- * A specialized version of `matchesProperty` for source values suitable
2139
- * for strict equality comparisons, i.e. `===`.
2140
- *
2141
- * @private
2142
- * @param {string} key The key of the property to get.
2143
- * @param {*} srcValue The value to match.
2144
- * @returns {Function} Returns the new spec function.
2145
- */
2146
- function matchesStrictComparable(key, srcValue) {
2147
- return function(object) {
2148
- if (object == null) return false;
2149
- return object[key] === srcValue && (srcValue !== void 0 || key in Object(object));
2150
- };
2151
- }
2152
- /**
2153
2355
  * Converts `string` to a property path array.
2154
2356
  *
2155
2357
  * @private
@@ -2196,31 +2398,6 @@ var require_lodash = __commonJS({ "../../node_modules/.pnpm/lodash.uniqby@4.7.0/
2196
2398
  return "";
2197
2399
  }
2198
2400
  /**
2199
- * This method is like `_.uniq` except that it accepts `iteratee` which is
2200
- * invoked for each element in `array` to generate the criterion by which
2201
- * uniqueness is computed. The iteratee is invoked with one argument: (value).
2202
- *
2203
- * @static
2204
- * @memberOf _
2205
- * @since 4.0.0
2206
- * @category Array
2207
- * @param {Array} array The array to inspect.
2208
- * @param {Function} [iteratee=_.identity]
2209
- * The iteratee invoked per element.
2210
- * @returns {Array} Returns the new duplicate free array.
2211
- * @example
2212
- *
2213
- * _.uniqBy([2.1, 1.2, 2.3], Math.floor);
2214
- * // => [2.1, 1.2]
2215
- *
2216
- * // The `_.property` iteratee shorthand.
2217
- * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
2218
- * // => [{ 'x': 1 }, { 'x': 2 }]
2219
- */
2220
- function uniqBy$2(array, iteratee) {
2221
- return array && array.length ? baseUniq(array, baseIteratee(iteratee, 2)) : [];
2222
- }
2223
- /**
2224
2401
  * Creates a function that memoizes the result of `func`. If `resolver` is
2225
2402
  * provided, it determines the cache key for storing the result based on the
2226
2403
  * arguments provided to the memoized function. By default, the first argument
@@ -2292,127 +2469,50 @@ var require_lodash = __commonJS({ "../../node_modules/.pnpm/lodash.uniqby@4.7.0/
2292
2469
  * @example
2293
2470
  *
2294
2471
  * var object = { 'a': 1 };
2295
- * var other = { 'a': 1 };
2296
- *
2297
- * _.eq(object, object);
2298
- * // => true
2299
- *
2300
- * _.eq(object, other);
2301
- * // => false
2302
- *
2303
- * _.eq('a', 'a');
2304
- * // => true
2305
- *
2306
- * _.eq('a', Object('a'));
2307
- * // => false
2308
- *
2309
- * _.eq(NaN, NaN);
2310
- * // => true
2311
- */
2312
- function eq(value, other) {
2313
- return value === other || value !== value && other !== other;
2314
- }
2315
- /**
2316
- * Checks if `value` is likely an `arguments` object.
2317
- *
2318
- * @static
2319
- * @memberOf _
2320
- * @since 0.1.0
2321
- * @category Lang
2322
- * @param {*} value The value to check.
2323
- * @returns {boolean} Returns `true` if `value` is an `arguments` object,
2324
- * else `false`.
2325
- * @example
2326
- *
2327
- * _.isArguments(function() { return arguments; }());
2328
- * // => true
2329
- *
2330
- * _.isArguments([1, 2, 3]);
2331
- * // => false
2332
- */
2333
- function isArguments(value) {
2334
- return isArrayLikeObject(value) && hasOwnProperty.call(value, "callee") && (!propertyIsEnumerable.call(value, "callee") || objectToString.call(value) == argsTag);
2335
- }
2336
- /**
2337
- * Checks if `value` is classified as an `Array` object.
2338
- *
2339
- * @static
2340
- * @memberOf _
2341
- * @since 0.1.0
2342
- * @category Lang
2343
- * @param {*} value The value to check.
2344
- * @returns {boolean} Returns `true` if `value` is an array, else `false`.
2345
- * @example
2346
- *
2347
- * _.isArray([1, 2, 3]);
2348
- * // => true
2349
- *
2350
- * _.isArray(document.body.children);
2351
- * // => false
2352
- *
2353
- * _.isArray('abc');
2354
- * // => false
2355
- *
2356
- * _.isArray(_.noop);
2357
- * // => false
2358
- */
2359
- var isArray = Array.isArray;
2360
- /**
2361
- * Checks if `value` is array-like. A value is considered array-like if it's
2362
- * not a function and has a `value.length` that's an integer greater than or
2363
- * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
2364
- *
2365
- * @static
2366
- * @memberOf _
2367
- * @since 4.0.0
2368
- * @category Lang
2369
- * @param {*} value The value to check.
2370
- * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
2371
- * @example
2472
+ * var other = { 'a': 1 };
2372
2473
  *
2373
- * _.isArrayLike([1, 2, 3]);
2474
+ * _.eq(object, object);
2374
2475
  * // => true
2375
2476
  *
2376
- * _.isArrayLike(document.body.children);
2377
- * // => true
2477
+ * _.eq(object, other);
2478
+ * // => false
2378
2479
  *
2379
- * _.isArrayLike('abc');
2480
+ * _.eq('a', 'a');
2380
2481
  * // => true
2381
2482
  *
2382
- * _.isArrayLike(_.noop);
2483
+ * _.eq('a', Object('a'));
2383
2484
  * // => false
2485
+ *
2486
+ * _.eq(NaN, NaN);
2487
+ * // => true
2384
2488
  */
2385
- function isArrayLike(value) {
2386
- return value != null && isLength(value.length) && !isFunction(value);
2489
+ function eq(value, other) {
2490
+ return value === other || value !== value && other !== other;
2387
2491
  }
2388
2492
  /**
2389
- * This method is like `_.isArrayLike` except that it also checks if `value`
2390
- * is an object.
2493
+ * Checks if `value` is classified as an `Array` object.
2391
2494
  *
2392
2495
  * @static
2393
2496
  * @memberOf _
2394
- * @since 4.0.0
2497
+ * @since 0.1.0
2395
2498
  * @category Lang
2396
2499
  * @param {*} value The value to check.
2397
- * @returns {boolean} Returns `true` if `value` is an array-like object,
2398
- * else `false`.
2500
+ * @returns {boolean} Returns `true` if `value` is an array, else `false`.
2399
2501
  * @example
2400
2502
  *
2401
- * _.isArrayLikeObject([1, 2, 3]);
2503
+ * _.isArray([1, 2, 3]);
2402
2504
  * // => true
2403
2505
  *
2404
- * _.isArrayLikeObject(document.body.children);
2405
- * // => true
2506
+ * _.isArray(document.body.children);
2507
+ * // => false
2406
2508
  *
2407
- * _.isArrayLikeObject('abc');
2509
+ * _.isArray('abc');
2408
2510
  * // => false
2409
2511
  *
2410
- * _.isArrayLikeObject(_.noop);
2512
+ * _.isArray(_.noop);
2411
2513
  * // => false
2412
2514
  */
2413
- function isArrayLikeObject(value) {
2414
- return isObjectLike(value) && isArrayLike(value);
2415
- }
2515
+ var isArray = Array.isArray;
2416
2516
  /**
2417
2517
  * Checks if `value` is classified as a `Function` object.
2418
2518
  *
@@ -2435,35 +2535,6 @@ var require_lodash = __commonJS({ "../../node_modules/.pnpm/lodash.uniqby@4.7.0/
2435
2535
  return tag == funcTag || tag == genTag;
2436
2536
  }
2437
2537
  /**
2438
- * Checks if `value` is a valid array-like length.
2439
- *
2440
- * **Note:** This method is loosely based on
2441
- * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
2442
- *
2443
- * @static
2444
- * @memberOf _
2445
- * @since 4.0.0
2446
- * @category Lang
2447
- * @param {*} value The value to check.
2448
- * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
2449
- * @example
2450
- *
2451
- * _.isLength(3);
2452
- * // => true
2453
- *
2454
- * _.isLength(Number.MIN_VALUE);
2455
- * // => false
2456
- *
2457
- * _.isLength(Infinity);
2458
- * // => false
2459
- *
2460
- * _.isLength('3');
2461
- * // => false
2462
- */
2463
- function isLength(value) {
2464
- return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
2465
- }
2466
- /**
2467
2538
  * Checks if `value` is the
2468
2539
  * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
2469
2540
  * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
@@ -2540,24 +2611,6 @@ var require_lodash = __commonJS({ "../../node_modules/.pnpm/lodash.uniqby@4.7.0/
2540
2611
  return typeof value == "symbol" || isObjectLike(value) && objectToString.call(value) == symbolTag;
2541
2612
  }
2542
2613
  /**
2543
- * Checks if `value` is classified as a typed array.
2544
- *
2545
- * @static
2546
- * @memberOf _
2547
- * @since 3.0.0
2548
- * @category Lang
2549
- * @param {*} value The value to check.
2550
- * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
2551
- * @example
2552
- *
2553
- * _.isTypedArray(new Uint8Array);
2554
- * // => true
2555
- *
2556
- * _.isTypedArray([]);
2557
- * // => false
2558
- */
2559
- var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
2560
- /**
2561
2614
  * Converts `value` to a string. An empty string is returned for `null`
2562
2615
  * and `undefined` values. The sign of `-0` is preserved.
2563
2616
  *
@@ -2606,133 +2659,81 @@ var require_lodash = __commonJS({ "../../node_modules/.pnpm/lodash.uniqby@4.7.0/
2606
2659
  * _.get(object, 'a.b.c', 'default');
2607
2660
  * // => 'default'
2608
2661
  */
2609
- function get(object, path, defaultValue) {
2662
+ function get$1(object, path, defaultValue) {
2610
2663
  var result = object == null ? void 0 : baseGet(object, path);
2611
2664
  return result === void 0 ? defaultValue : result;
2612
2665
  }
2613
- /**
2614
- * Checks if `path` is a direct or inherited property of `object`.
2615
- *
2616
- * @static
2617
- * @memberOf _
2618
- * @since 4.0.0
2619
- * @category Object
2620
- * @param {Object} object The object to query.
2621
- * @param {Array|string} path The path to check.
2622
- * @returns {boolean} Returns `true` if `path` exists, else `false`.
2623
- * @example
2624
- *
2625
- * var object = _.create({ 'a': _.create({ 'b': 2 }) });
2626
- *
2627
- * _.hasIn(object, 'a');
2628
- * // => true
2629
- *
2630
- * _.hasIn(object, 'a.b');
2631
- * // => true
2632
- *
2633
- * _.hasIn(object, ['a', 'b']);
2634
- * // => true
2635
- *
2636
- * _.hasIn(object, 'b');
2637
- * // => false
2638
- */
2639
- function hasIn(object, path) {
2640
- return object != null && hasPath(object, path, baseHasIn);
2666
+ module.exports = get$1;
2667
+ } });
2668
+
2669
+ //#endregion
2670
+ //#region src/functions/BaseFunctionBuilder.ts
2671
+ var import_lodash$2 = __toESM(require_lodash(), 1);
2672
+ const DEFAULT_LOGGER$3 = new ConsoleLogger();
2673
+ var BaseFunctionBuilder = class BaseFunctionBuilder {
2674
+ inputSchema;
2675
+ outputSchema;
2676
+ _timeout;
2677
+ _services = [];
2678
+ _logger = DEFAULT_LOGGER$3;
2679
+ _events = [];
2680
+ _publisher;
2681
+ _auditorStorage;
2682
+ _databaseService;
2683
+ static isStandardSchemaV1(s) {
2684
+ const schema = s["~standard"];
2685
+ return schema && typeof schema.validate === "function";
2641
2686
  }
2642
- /**
2643
- * Creates an array of the own enumerable property names of `object`.
2644
- *
2645
- * **Note:** Non-object values are coerced to objects. See the
2646
- * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
2647
- * for more details.
2648
- *
2649
- * @static
2650
- * @since 0.1.0
2651
- * @memberOf _
2652
- * @category Object
2653
- * @param {Object} object The object to query.
2654
- * @returns {Array} Returns the array of property names.
2655
- * @example
2656
- *
2657
- * function Foo() {
2658
- * this.a = 1;
2659
- * this.b = 2;
2660
- * }
2661
- *
2662
- * Foo.prototype.c = 3;
2663
- *
2664
- * _.keys(new Foo);
2665
- * // => ['a', 'b'] (iteration order is not guaranteed)
2666
- *
2667
- * _.keys('hi');
2668
- * // => ['0', '1']
2669
- */
2670
- function keys(object) {
2671
- return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
2687
+ static async parseComposableStandardSchema(data, schema) {
2688
+ if (BaseFunctionBuilder.isStandardSchemaV1(schema)) {
2689
+ const validated = await schema["~standard"].validate(data);
2690
+ if (validated.issues) throw validated.issues;
2691
+ return validated.value;
2692
+ }
2693
+ const result = {};
2694
+ for (const key in schema) {
2695
+ const item = schema[key];
2696
+ if (BaseFunctionBuilder.isStandardSchemaV1(item)) {
2697
+ const value = (0, import_lodash$2.default)(data, key);
2698
+ const validated = await item["~standard"].validate(value);
2699
+ if (validated.issues) throw validated.issues;
2700
+ result[key] = validated.value;
2701
+ }
2702
+ }
2703
+ return result;
2672
2704
  }
2673
- /**
2674
- * This method returns the first argument it receives.
2675
- *
2676
- * @static
2677
- * @since 0.1.0
2678
- * @memberOf _
2679
- * @category Util
2680
- * @param {*} value Any value.
2681
- * @returns {*} Returns `value`.
2682
- * @example
2683
- *
2684
- * var object = { 'a': 1 };
2685
- *
2686
- * console.log(_.identity(object) === object);
2687
- * // => true
2688
- */
2689
- function identity(value) {
2690
- return value;
2705
+ constructor(type = ConstructType.Function) {
2706
+ this.type = type;
2707
+ }
2708
+ timeout(timeout) {
2709
+ this._timeout = timeout;
2710
+ return this;
2711
+ }
2712
+ event(event) {
2713
+ this._events.push(event);
2714
+ return this;
2715
+ }
2716
+ publisher(publisher) {
2717
+ this._publisher = publisher;
2718
+ return this;
2719
+ }
2720
+ auditor(storage) {
2721
+ this._auditorStorage = storage;
2722
+ return this;
2691
2723
  }
2692
2724
  /**
2693
- * This method returns `undefined`.
2694
- *
2695
- * @static
2696
- * @memberOf _
2697
- * @since 2.3.0
2698
- * @category Util
2699
- * @example
2700
- *
2701
- * _.times(2, _.noop);
2702
- * // => [undefined, undefined]
2703
- */
2704
- function noop() {}
2705
- /**
2706
- * Creates a function that returns the value at `path` of a given object.
2707
- *
2708
- * @static
2709
- * @memberOf _
2710
- * @since 2.4.0
2711
- * @category Util
2712
- * @param {Array|string} path The path of the property to get.
2713
- * @returns {Function} Returns the new accessor function.
2714
- * @example
2715
- *
2716
- * var objects = [
2717
- * { 'a': { 'b': 2 } },
2718
- * { 'a': { 'b': 1 } }
2719
- * ];
2720
- *
2721
- * _.map(objects, _.property('a.b'));
2722
- * // => [2, 1]
2723
- *
2724
- * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
2725
- * // => [1, 2]
2725
+ * Set the database service for this function.
2726
+ * The database will be available in the handler context as `db`.
2726
2727
  */
2727
- function property(path) {
2728
- return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
2728
+ database(service) {
2729
+ this._databaseService = service;
2730
+ return this;
2729
2731
  }
2730
- module.exports = uniqBy$2;
2731
- } });
2732
+ };
2732
2733
 
2733
2734
  //#endregion
2734
2735
  //#region src/functions/Function.ts
2735
- var import_lodash$1 = __toESM(require_lodash(), 1);
2736
+ var import_lodash$1 = __toESM(require_lodash$1(), 1);
2736
2737
  const DEFAULT_LOGGER$2 = new ConsoleLogger();
2737
2738
  var Function$1 = class Function$1 extends Construct {
2738
2739
  __IS_FUNCTION__ = true;
@@ -2784,7 +2785,7 @@ var Function$1 = class Function$1 extends Construct {
2784
2785
 
2785
2786
  //#endregion
2786
2787
  //#region src/functions/FunctionBuilder.ts
2787
- var import_lodash = __toESM(require_lodash(), 1);
2788
+ var import_lodash = __toESM(require_lodash$1(), 1);
2788
2789
  const DEFAULT_LOGGER$1 = new ConsoleLogger();
2789
2790
  var FunctionBuilder = class extends BaseFunctionBuilder {
2790
2791
  _memorySize;
@@ -2860,5 +2861,5 @@ var FunctionBuilder = class extends BaseFunctionBuilder {
2860
2861
  const f = new FunctionBuilder();
2861
2862
 
2862
2863
  //#endregion
2863
- export { BaseFunctionBuilder, Function$1 as Function, FunctionBuilder, f, require_lodash };
2864
- //# sourceMappingURL=functions-GmSHFbpr.mjs.map
2864
+ export { BaseFunctionBuilder, Function$1 as Function, FunctionBuilder, f, require_lodash$1 as require_lodash };
2865
+ //# sourceMappingURL=functions-BMR-1CIQ.mjs.map