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