@poppinss/utils 7.0.0-next.4 → 7.0.0-next.5

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.
package/README.md CHANGED
@@ -627,6 +627,123 @@ const rawValue = secret.release()
627
627
  rawValue === opaque_raw_token // true
628
628
  ```
629
629
 
630
+ ## ImportsBag
631
+
632
+ The `ImportsBag` class helps you manage and deduplicate import statements when generating code. It automatically merges imports from the same source and generates properly formatted import statements.
633
+
634
+ This is particularly useful when building code generators, AST transformers, or any tool that needs to collect and output import statements.
635
+
636
+ ```ts
637
+ import { ImportsBag } from '@poppinss/utils'
638
+
639
+ const bag = new ImportsBag()
640
+
641
+ // Add named imports
642
+ bag.add({
643
+ source: 'lodash',
644
+ namedImports: ['debounce'],
645
+ })
646
+
647
+ // Add more imports from the same source - they will be merged
648
+ bag.add({
649
+ source: 'lodash',
650
+ namedImports: ['throttle', 'debounce'], // duplicate "debounce" will be removed
651
+ })
652
+
653
+ // Add default import with named imports
654
+ bag.add({
655
+ source: 'react',
656
+ defaultImport: 'React',
657
+ namedImports: ['useState', 'useEffect'],
658
+ })
659
+
660
+ // Add type imports
661
+ bag.add({
662
+ source: 'express',
663
+ typeImports: ['Request', 'Response'],
664
+ })
665
+
666
+ // Generate import statements
667
+ console.log(bag.toString())
668
+ // import { debounce, throttle } from 'lodash'
669
+ // import React, { useState, useEffect } from 'react'
670
+ // import type { Request, Response } from 'express'
671
+ ```
672
+
673
+ ### Import Types
674
+
675
+ The `ImportsBag` supports three types of imports:
676
+
677
+ - **Default imports**: `defaultImport: 'React'` generates `import React from 'react'`
678
+ - **Named imports**: `namedImports: ['useState']` generates `import { useState } from 'react'`
679
+ - **Type imports**: `typeImports: ['FC']` generates `import type { FC } from 'react'`
680
+
681
+ You can combine default and named imports in a single statement, but type imports are always generated as separate statements.
682
+
683
+ ```ts
684
+ bag.add({
685
+ source: 'react',
686
+ defaultImport: 'React',
687
+ namedImports: ['useState'],
688
+ typeImports: ['FC'],
689
+ })
690
+
691
+ console.log(bag.toString())
692
+ // import React, { useState } from 'react'
693
+ // import type { FC } from 'react'
694
+ ```
695
+
696
+ ### Deduplication
697
+
698
+ The `ImportsBag` automatically deduplicates imports from the same source:
699
+
700
+ - Named and type imports are deduplicated when calling `toArray()` or `toString()`
701
+ - Default imports are replaced (the last one wins)
702
+ - Imports are merged by source, so multiple `add()` calls for the same source will combine all imports
703
+
704
+ ```ts
705
+ bag.add({ source: 'lodash', namedImports: ['debounce'] })
706
+ bag.add({ source: 'lodash', namedImports: ['throttle'] })
707
+ bag.add({ source: 'lodash', namedImports: ['debounce'] }) // duplicate
708
+
709
+ console.log(bag.toString())
710
+ // import { debounce, throttle } from 'lodash'
711
+ ```
712
+
713
+ ### Methods
714
+
715
+ #### add(importInfo)
716
+
717
+ Add an import to the bag. Returns `this` for method chaining.
718
+
719
+ ```ts
720
+ bag
721
+ .add({ source: 'lodash', namedImports: ['debounce'] })
722
+ .add({ source: 'express', typeImports: ['Request'] })
723
+ ```
724
+
725
+ #### toArray()
726
+
727
+ Returns an array of deduplicated `ImportInfo` objects.
728
+
729
+ ```ts
730
+ const imports = bag.toArray()
731
+ // [
732
+ // { source: 'lodash', defaultImport: undefined, namedImports: ['debounce'], typeImports: undefined },
733
+ // { source: 'express', defaultImport: undefined, namedImports: undefined, typeImports: ['Request'] }
734
+ // ]
735
+ ```
736
+
737
+ #### toString()
738
+
739
+ Generates formatted import statements as a string.
740
+
741
+ ```ts
742
+ const code = bag.toString()
743
+ // import { debounce } from 'lodash'
744
+ // import type { Request } from 'express'
745
+ ```
746
+
630
747
  [gh-workflow-image]: https://img.shields.io/github/actions/workflow/status/poppinss/utils/checks.yml?style=for-the-badge
631
748
  [gh-workflow-url]: https://github.com/poppinss/utils/actions/workflows/checks.yml 'Github action'
632
749
  [typescript-image]: https://img.shields.io/badge/Typescript-294E80.svg?style=for-the-badge&logo=typescript
@@ -0,0 +1,23 @@
1
+ import "node:module";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
11
+ key = keys[i];
12
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
13
+ get: ((k) => from[k]).bind(null, key),
14
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
+ });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
20
+ value: mod,
21
+ enumerable: true
22
+ }) : target, mod));
23
+ export { __toESM as n, __commonJSMin as t };
package/build/index.d.ts CHANGED
@@ -6,4 +6,5 @@ export { naturalSort } from './src/natural_sort.js';
6
6
  export { isScriptFile } from './src/is_script_file.js';
7
7
  export { importDefault } from './src/import_default.js';
8
8
  export { MessageBuilder } from './src/message_builder.js';
9
+ export { ImportsBag, type ImportInfo } from './src/imports_bag.js';
9
10
  export { defineStaticProperty } from './src/define_static_property.js';
package/build/index.js CHANGED
@@ -1,11 +1,11 @@
1
- import { n as safeParse, t as safeStringify } from "./main-_zxQ-frM.js";
2
- import { n as naturalSort, t as isScriptFile } from "./is_script_file-CbSEfxE_.js";
1
+ import { n as __toESM } from "./chunk-BNZ4_A-W.js";
2
+ import { n as isScriptFile, r as naturalSort, t as require_main } from "./main-CdreHl1_.js";
3
3
  import { r as RuntimeException } from "./exception-L7vjh-Gv.js";
4
+ import { n as safeParse, t as safeStringify } from "./main-aO4h7ygK.js";
4
5
  import { flattie } from "flattie";
5
6
  import { Buffer } from "node:buffer";
6
7
  import { timingSafeEqual } from "node:crypto";
7
8
  import string from "@poppinss/string";
8
- import lodash from "@poppinss/utils/lodash";
9
9
  const REDACTED = "[redacted]";
10
10
  var Secret = class Secret {
11
11
  #value;
@@ -85,6 +85,52 @@ var MessageBuilder = class {
85
85
  return parsed.message;
86
86
  }
87
87
  };
88
+ var ImportsBag = class {
89
+ #imports = /* @__PURE__ */ new Map();
90
+ #generateImportStatement(imp) {
91
+ const parts = [];
92
+ if (imp.defaultImport || imp.namedImports && imp.namedImports.length > 0) {
93
+ const importParts = [];
94
+ if (imp.defaultImport) importParts.push(imp.defaultImport);
95
+ if (imp.namedImports && imp.namedImports.length > 0) importParts.push(`{ ${imp.namedImports.join(", ")} }`);
96
+ parts.push(`import ${importParts.join(", ")} from '${imp.source}'`);
97
+ }
98
+ if (imp.typeImports && imp.typeImports.length > 0) parts.push(`import type { ${imp.typeImports.join(", ")} } from '${imp.source}'`);
99
+ return parts.join("\n");
100
+ }
101
+ add(importInfo) {
102
+ const existing = this.#imports.get(importInfo.source);
103
+ if (existing) {
104
+ if (importInfo.defaultImport) existing.defaultImport = importInfo.defaultImport;
105
+ if (importInfo.namedImports) {
106
+ if (!existing.namedImports) existing.namedImports = [];
107
+ existing.namedImports.push(...importInfo.namedImports);
108
+ }
109
+ if (importInfo.typeImports) {
110
+ if (!existing.typeImports) existing.typeImports = [];
111
+ existing.typeImports.push(...importInfo.typeImports);
112
+ }
113
+ } else this.#imports.set(importInfo.source, {
114
+ source: importInfo.source,
115
+ defaultImport: importInfo.defaultImport,
116
+ namedImports: importInfo.namedImports ? [...importInfo.namedImports] : void 0,
117
+ typeImports: importInfo.typeImports ? [...importInfo.typeImports] : void 0
118
+ });
119
+ return this;
120
+ }
121
+ toArray() {
122
+ return Array.from(this.#imports.values()).map((imp) => ({
123
+ source: imp.source,
124
+ defaultImport: imp.defaultImport,
125
+ namedImports: imp.namedImports ? [...new Set(imp.namedImports)] : void 0,
126
+ typeImports: imp.typeImports ? [...new Set(imp.typeImports)] : void 0
127
+ }));
128
+ }
129
+ toString() {
130
+ return this.toArray().map((imp) => this.#generateImportStatement(imp)).join("\n");
131
+ }
132
+ };
133
+ var import_main = /* @__PURE__ */ __toESM(require_main());
88
134
  function defineStaticProperty(self, propertyName, { initialValue, strategy }) {
89
135
  if (!self.hasOwnProperty(propertyName)) {
90
136
  const value = self[propertyName];
@@ -98,11 +144,11 @@ function defineStaticProperty(self, propertyName, { initialValue, strategy }) {
98
144
  return;
99
145
  }
100
146
  Object.defineProperty(self, propertyName, {
101
- value: typeof strategy === "function" ? strategy(value) : lodash.cloneDeep(value),
147
+ value: typeof strategy === "function" ? strategy(value) : import_main.default.cloneDeep(value),
102
148
  configurable: true,
103
149
  enumerable: true,
104
150
  writable: true
105
151
  });
106
152
  }
107
153
  }
108
- export { MessageBuilder, Secret, compose, defineStaticProperty, flatten, importDefault, isScriptFile, naturalSort, safeEqual };
154
+ export { ImportsBag, MessageBuilder, Secret, compose, defineStaticProperty, flatten, importDefault, isScriptFile, naturalSort, safeEqual };
@@ -0,0 +1,694 @@
1
+ import { t as __commonJSMin } from "./chunk-BNZ4_A-W.js";
2
+ import { extname } from "node:path";
3
+ function naturalSort(current, next) {
4
+ return current.localeCompare(next, void 0, {
5
+ numeric: true,
6
+ sensitivity: "base"
7
+ });
8
+ }
9
+ const JS_MODULES = [
10
+ ".js",
11
+ ".json",
12
+ ".cjs",
13
+ ".mjs"
14
+ ];
15
+ function isScriptFile(filePath) {
16
+ const ext = extname(filePath);
17
+ if (JS_MODULES.includes(ext)) return true;
18
+ if (ext === ".ts" && !filePath.endsWith(".d.ts")) return true;
19
+ return false;
20
+ }
21
+ var require_main = /* @__PURE__ */ __commonJSMin(((exports, module) => {
22
+ (function() {
23
+ function t(t$1, e$1, n$1) {
24
+ switch (n$1.length) {
25
+ case 0: return t$1.call(e$1);
26
+ case 1: return t$1.call(e$1, n$1[0]);
27
+ case 2: return t$1.call(e$1, n$1[0], n$1[1]);
28
+ case 3: return t$1.call(e$1, n$1[0], n$1[1], n$1[2]);
29
+ }
30
+ return t$1.apply(e$1, n$1);
31
+ }
32
+ function e(t$1, e$1) {
33
+ for (var n$1 = -1, r$1 = null == t$1 ? 0 : t$1.length; ++n$1 < r$1 && false !== e$1(t$1[n$1], n$1, t$1););
34
+ }
35
+ function n(t$1, e$1) {
36
+ for (var n$1 = -1, r$1 = null == t$1 ? 0 : t$1.length, u$1 = 0, o$1 = []; ++n$1 < r$1;) {
37
+ var c$1 = t$1[n$1];
38
+ e$1(c$1, n$1, t$1) && (o$1[u$1++] = c$1);
39
+ }
40
+ return o$1;
41
+ }
42
+ function r(t$1, e$1) {
43
+ for (var n$1 = -1, r$1 = null == t$1 ? 0 : t$1.length, u$1 = Array(r$1); ++n$1 < r$1;) u$1[n$1] = e$1(t$1[n$1], n$1, t$1);
44
+ return u$1;
45
+ }
46
+ function u(t$1, e$1) {
47
+ for (var n$1 = -1, r$1 = e$1.length, u$1 = t$1.length; ++n$1 < r$1;) t$1[u$1 + n$1] = e$1[n$1];
48
+ return t$1;
49
+ }
50
+ function o(t$1) {
51
+ return function(e$1) {
52
+ return t$1(e$1);
53
+ };
54
+ }
55
+ function c(t$1) {
56
+ var e$1 = Object;
57
+ return function(n$1) {
58
+ return t$1(e$1(n$1));
59
+ };
60
+ }
61
+ function i() {}
62
+ function f(t$1) {
63
+ var e$1 = -1, n$1 = null == t$1 ? 0 : t$1.length;
64
+ for (this.clear(); ++e$1 < n$1;) {
65
+ var r$1 = t$1[e$1];
66
+ this.set(r$1[0], r$1[1]);
67
+ }
68
+ }
69
+ function a(t$1) {
70
+ var e$1 = -1, n$1 = null == t$1 ? 0 : t$1.length;
71
+ for (this.clear(); ++e$1 < n$1;) {
72
+ var r$1 = t$1[e$1];
73
+ this.set(r$1[0], r$1[1]);
74
+ }
75
+ }
76
+ function l(t$1) {
77
+ var e$1 = -1, n$1 = null == t$1 ? 0 : t$1.length;
78
+ for (this.clear(); ++e$1 < n$1;) {
79
+ var r$1 = t$1[e$1];
80
+ this.set(r$1[0], r$1[1]);
81
+ }
82
+ }
83
+ function s(t$1) {
84
+ this.size = (this.__data__ = new a(t$1)).size;
85
+ }
86
+ function b(t$1, e$1) {
87
+ var n$1 = Ye(t$1), r$1 = !n$1 && Xe(t$1), u$1 = !n$1 && !r$1 && Ze(t$1), o$1 = !n$1 && !r$1 && !u$1 && nn(t$1);
88
+ if (n$1 = n$1 || r$1 || u$1 || o$1) {
89
+ for (var r$1 = t$1.length, c$1 = String, i$1 = -1, f$1 = Array(r$1); ++i$1 < r$1;) f$1[i$1] = c$1(i$1);
90
+ r$1 = f$1;
91
+ } else r$1 = [];
92
+ var a$1, c$1 = r$1.length;
93
+ for (a$1 in t$1) !e$1 && !fe.call(t$1, a$1) || n$1 && ("length" == a$1 || u$1 && ("offset" == a$1 || "parent" == a$1) || o$1 && ("buffer" == a$1 || "byteLength" == a$1 || "byteOffset" == a$1) || ut(a$1, c$1)) || r$1.push(a$1);
94
+ return r$1;
95
+ }
96
+ function p(t$1, e$1, n$1) {
97
+ (n$1 === Mt || bt(t$1[e$1], n$1)) && (n$1 !== Mt || e$1 in t$1) || d(t$1, e$1, n$1);
98
+ }
99
+ function h(t$1, e$1, n$1) {
100
+ var r$1 = t$1[e$1];
101
+ fe.call(t$1, e$1) && bt(r$1, n$1) && (n$1 !== Mt || e$1 in t$1) || d(t$1, e$1, n$1);
102
+ }
103
+ function y(t$1, e$1) {
104
+ for (var n$1 = t$1.length; n$1--;) if (bt(t$1[n$1][0], e$1)) return n$1;
105
+ return -1;
106
+ }
107
+ function j(t$1, e$1) {
108
+ return t$1 && V(e$1, St(e$1), t$1);
109
+ }
110
+ function _(t$1, e$1) {
111
+ return t$1 && V(e$1, zt(e$1), t$1);
112
+ }
113
+ function d(t$1, e$1, n$1) {
114
+ "__proto__" == e$1 && we ? we(t$1, e$1, {
115
+ configurable: true,
116
+ enumerable: true,
117
+ value: n$1,
118
+ writable: true
119
+ }) : t$1[e$1] = n$1;
120
+ }
121
+ function g(t$1, n$1, r$1, u$1, o$1, c$1) {
122
+ var i$1, f$1 = 1 & n$1, a$1 = 2 & n$1, l$1 = 4 & n$1;
123
+ if (r$1 && (i$1 = o$1 ? r$1(t$1, u$1, o$1, c$1) : r$1(t$1)), i$1 !== Mt) return i$1;
124
+ if (!_t(t$1)) return t$1;
125
+ if (u$1 = Ye(t$1)) {
126
+ if (i$1 = tt(t$1), !f$1) return T(t$1, i$1);
127
+ } else {
128
+ var b$1 = Je(t$1), p$1 = "[object Function]" == b$1 || "[object GeneratorFunction]" == b$1;
129
+ if (Ze(t$1)) return R(t$1, f$1);
130
+ if ("[object Object]" == b$1 || "[object Arguments]" == b$1 || p$1 && !o$1) {
131
+ if (i$1 = a$1 || p$1 ? {} : et(t$1), !f$1) return a$1 ? G(t$1, _(i$1, t$1)) : N(t$1, j(i$1, t$1));
132
+ } else {
133
+ if (!Gt[b$1]) return o$1 ? t$1 : {};
134
+ i$1 = nt(t$1, b$1, f$1);
135
+ }
136
+ }
137
+ if (c$1 || (c$1 = new s()), o$1 = c$1.get(t$1)) return o$1;
138
+ if (c$1.set(t$1, i$1), en(t$1)) return t$1.forEach(function(e$1) {
139
+ i$1.add(g(e$1, n$1, r$1, e$1, t$1, c$1));
140
+ }), i$1;
141
+ if (tn(t$1)) return t$1.forEach(function(e$1, u$2) {
142
+ i$1.set(u$2, g(e$1, n$1, r$1, u$2, t$1, c$1));
143
+ }), i$1;
144
+ var a$1 = l$1 ? a$1 ? Q : K : a$1 ? zt : St, y$1 = u$1 ? Mt : a$1(t$1);
145
+ return e(y$1 || t$1, function(e$1, u$2) {
146
+ y$1 && (u$2 = e$1, e$1 = t$1[u$2]), h(i$1, u$2, g(e$1, n$1, r$1, u$2, t$1, c$1));
147
+ }), i$1;
148
+ }
149
+ function v(t$1, e$1, n$1, r$1, o$1) {
150
+ var c$1 = -1, i$1 = t$1.length;
151
+ for (n$1 || (n$1 = rt), o$1 || (o$1 = []); ++c$1 < i$1;) {
152
+ var f$1 = t$1[c$1];
153
+ 0 < e$1 && n$1(f$1) ? 1 < e$1 ? v(f$1, e$1 - 1, n$1, r$1, o$1) : u(o$1, f$1) : r$1 || (o$1[o$1.length] = f$1);
154
+ }
155
+ return o$1;
156
+ }
157
+ function A(t$1, e$1) {
158
+ e$1 = C(e$1, t$1);
159
+ for (var n$1 = 0, r$1 = e$1.length; null != t$1 && n$1 < r$1;) t$1 = t$1[it(e$1[n$1++])];
160
+ return n$1 && n$1 == r$1 ? t$1 : Mt;
161
+ }
162
+ function m(t$1, e$1, n$1) {
163
+ return e$1 = e$1(t$1), Ye(t$1) ? e$1 : u(e$1, n$1(t$1));
164
+ }
165
+ function w(t$1) {
166
+ if (null == t$1) t$1 = t$1 === Mt ? "[object Undefined]" : "[object Null]";
167
+ else if (me && me in Object(t$1)) {
168
+ var e$1 = fe.call(t$1, me), n$1 = t$1[me];
169
+ try {
170
+ t$1[me] = Mt;
171
+ var r$1 = true;
172
+ } catch (t$2) {}
173
+ var u$1 = le.call(t$1);
174
+ r$1 && (e$1 ? t$1[me] = n$1 : delete t$1[me]), t$1 = u$1;
175
+ } else t$1 = le.call(t$1);
176
+ return t$1;
177
+ }
178
+ function O(t$1, e$1) {
179
+ return null != t$1 && fe.call(t$1, e$1);
180
+ }
181
+ function S(t$1, e$1) {
182
+ return null != t$1 && e$1 in Object(t$1);
183
+ }
184
+ function z(t$1) {
185
+ return dt(t$1) && "[object Arguments]" == w(t$1);
186
+ }
187
+ function x(t$1) {
188
+ return dt(t$1) && "[object Map]" == Je(t$1);
189
+ }
190
+ function k(t$1) {
191
+ return dt(t$1) && "[object Set]" == Je(t$1);
192
+ }
193
+ function F(t$1) {
194
+ return dt(t$1) && jt(t$1.length) && !!Nt[w(t$1)];
195
+ }
196
+ function I(t$1) {
197
+ if (!ot(t$1)) return ze(t$1);
198
+ var e$1, n$1 = [];
199
+ for (e$1 in Object(t$1)) fe.call(t$1, e$1) && "constructor" != e$1 && n$1.push(e$1);
200
+ return n$1;
201
+ }
202
+ function M(t$1, e$1, n$1, r$1, u$1) {
203
+ t$1 !== e$1 && Ne(e$1, function(o$1, c$1) {
204
+ if (_t(o$1)) {
205
+ u$1 || (u$1 = new s());
206
+ var i$1 = u$1, f$1 = "__proto__" == c$1 ? Mt : t$1[c$1], a$1 = "__proto__" == c$1 ? Mt : e$1[c$1], l$1 = i$1.get(a$1);
207
+ if (l$1) p(t$1, c$1, l$1);
208
+ else {
209
+ var l$1 = r$1 ? r$1(f$1, a$1, c$1 + "", t$1, e$1, i$1) : Mt, b$1 = l$1 === Mt;
210
+ if (b$1) {
211
+ var h$1 = Ye(a$1), y$1 = !h$1 && Ze(a$1), j$1 = !h$1 && !y$1 && nn(a$1), l$1 = a$1;
212
+ h$1 || y$1 || j$1 ? Ye(f$1) ? l$1 = f$1 : ht(f$1) ? l$1 = T(f$1) : y$1 ? (b$1 = false, l$1 = R(a$1, true)) : j$1 ? (b$1 = false, l$1 = L(a$1, true)) : l$1 = [] : gt(a$1) || Xe(a$1) ? (l$1 = f$1, Xe(f$1) ? l$1 = mt(f$1) : (!_t(f$1) || n$1 && yt(f$1)) && (l$1 = et(a$1))) : b$1 = false;
213
+ }
214
+ b$1 && (i$1.set(a$1, l$1), M(l$1, a$1, n$1, r$1, i$1), i$1.delete(a$1)), p(t$1, c$1, l$1);
215
+ }
216
+ } else i$1 = r$1 ? r$1("__proto__" == c$1 ? Mt : t$1[c$1], o$1, c$1 + "", t$1, e$1, u$1) : Mt, i$1 === Mt && (i$1 = o$1), p(t$1, c$1, i$1);
217
+ }, zt);
218
+ }
219
+ function E(t$1, e$1) {
220
+ return U(t$1, e$1, function(e$2, n$1) {
221
+ return Ot(t$1, n$1);
222
+ });
223
+ }
224
+ function U(t$1, e$1, n$1) {
225
+ for (var r$1 = -1, u$1 = e$1.length, o$1 = {}; ++r$1 < u$1;) {
226
+ var c$1 = e$1[r$1], i$1 = A(t$1, c$1);
227
+ n$1(i$1, c$1) && D(o$1, C(c$1, t$1), i$1);
228
+ }
229
+ return o$1;
230
+ }
231
+ function P(t$1) {
232
+ return Ke(ct(t$1, void 0, kt), t$1 + "");
233
+ }
234
+ function D(t$1, e$1, n$1) {
235
+ if (!_t(t$1)) return t$1;
236
+ e$1 = C(e$1, t$1);
237
+ for (var r$1 = -1, u$1 = e$1.length, o$1 = u$1 - 1, c$1 = t$1; null != c$1 && ++r$1 < u$1;) {
238
+ var i$1 = it(e$1[r$1]), f$1 = n$1;
239
+ if (r$1 != o$1) {
240
+ var a$1 = c$1[i$1], f$1 = Mt;
241
+ f$1 === Mt && (f$1 = _t(a$1) ? a$1 : ut(e$1[r$1 + 1]) ? [] : {});
242
+ }
243
+ h(c$1, i$1, f$1), c$1 = c$1[i$1];
244
+ }
245
+ return t$1;
246
+ }
247
+ function $(t$1) {
248
+ if (typeof t$1 == "string") return t$1;
249
+ if (Ye(t$1)) return r(t$1, $) + "";
250
+ if (At(t$1)) return Te ? Te.call(t$1) : "";
251
+ var e$1 = t$1 + "";
252
+ return "0" == e$1 && 1 / t$1 == -Et ? "-0" : e$1;
253
+ }
254
+ function B(t$1, e$1) {
255
+ e$1 = C(e$1, t$1);
256
+ var n$1;
257
+ if (2 > e$1.length) n$1 = t$1;
258
+ else {
259
+ n$1 = e$1;
260
+ var r$1 = 0, u$1 = -1, o$1 = -1, c$1 = n$1.length;
261
+ for (0 > r$1 && (r$1 = -r$1 > c$1 ? 0 : c$1 + r$1), u$1 = u$1 > c$1 ? c$1 : u$1, 0 > u$1 && (u$1 += c$1), c$1 = r$1 > u$1 ? 0 : u$1 - r$1 >>> 0, r$1 >>>= 0, u$1 = Array(c$1); ++o$1 < c$1;) u$1[o$1] = n$1[o$1 + r$1];
262
+ n$1 = A(t$1, u$1);
263
+ }
264
+ return t$1 = n$1, null == t$1 || delete t$1[it(lt(e$1))];
265
+ }
266
+ function C(t$1, e$1) {
267
+ var n$1;
268
+ return Ye(t$1) ? n$1 = t$1 : (Ye(t$1) ? n$1 = false : (n$1 = typeof t$1, n$1 = !("number" != n$1 && "symbol" != n$1 && "boolean" != n$1 && null != t$1 && !At(t$1)) || Pt.test(t$1) || !Ut.test(t$1) || null != e$1 && t$1 in Object(e$1)), n$1 = n$1 ? [t$1] : Qe(wt(t$1))), n$1;
269
+ }
270
+ function R(t$1, e$1) {
271
+ if (e$1) return t$1.slice();
272
+ var n$1 = t$1.length, n$1 = je ? je(n$1) : new t$1.constructor(n$1);
273
+ return t$1.copy(n$1), n$1;
274
+ }
275
+ function W(t$1) {
276
+ var e$1 = new t$1.constructor(t$1.byteLength);
277
+ return new ye(e$1).set(new ye(t$1)), e$1;
278
+ }
279
+ function L(t$1, e$1) {
280
+ return new t$1.constructor(e$1 ? W(t$1.buffer) : t$1.buffer, t$1.byteOffset, t$1.length);
281
+ }
282
+ function T(t$1, e$1) {
283
+ var n$1 = -1, r$1 = t$1.length;
284
+ for (e$1 || (e$1 = Array(r$1)); ++n$1 < r$1;) e$1[n$1] = t$1[n$1];
285
+ return e$1;
286
+ }
287
+ function V(t$1, e$1, n$1) {
288
+ var r$1 = !n$1;
289
+ n$1 || (n$1 = {});
290
+ for (var u$1 = -1, o$1 = e$1.length; ++u$1 < o$1;) {
291
+ var c$1 = e$1[u$1], i$1 = Mt;
292
+ i$1 === Mt && (i$1 = t$1[c$1]), r$1 ? d(n$1, c$1, i$1) : h(n$1, c$1, i$1);
293
+ }
294
+ return n$1;
295
+ }
296
+ function N(t$1, e$1) {
297
+ return V(t$1, qe(t$1), e$1);
298
+ }
299
+ function G(t$1, e$1) {
300
+ return V(t$1, He(t$1), e$1);
301
+ }
302
+ function q(t$1) {
303
+ return P(function(e$1, n$1) {
304
+ var r$1, u$1 = -1, o$1 = n$1.length, c$1 = 1 < o$1 ? n$1[o$1 - 1] : Mt, i$1 = 2 < o$1 ? n$1[2] : Mt, c$1 = 3 < t$1.length && typeof c$1 == "function" ? (o$1--, c$1) : Mt;
305
+ if (r$1 = i$1) {
306
+ r$1 = n$1[0];
307
+ var f$1 = n$1[1];
308
+ if (_t(i$1)) {
309
+ var a$1 = typeof f$1;
310
+ r$1 = !!("number" == a$1 ? pt(i$1) && ut(f$1, i$1.length) : "string" == a$1 && f$1 in i$1) && bt(i$1[f$1], r$1);
311
+ } else r$1 = false;
312
+ }
313
+ for (r$1 && (c$1 = 3 > o$1 ? Mt : c$1, o$1 = 1), e$1 = Object(e$1); ++u$1 < o$1;) (i$1 = n$1[u$1]) && t$1(e$1, i$1, u$1, c$1);
314
+ return e$1;
315
+ });
316
+ }
317
+ function H(t$1) {
318
+ return gt(t$1) ? Mt : t$1;
319
+ }
320
+ function J(t$1) {
321
+ return Ke(ct(t$1, Mt, at), t$1 + "");
322
+ }
323
+ function K(t$1) {
324
+ return m(t$1, St, qe);
325
+ }
326
+ function Q(t$1) {
327
+ return m(t$1, zt, He);
328
+ }
329
+ function X(t$1, e$1) {
330
+ var n$1 = t$1.__data__, r$1 = typeof e$1;
331
+ return ("string" == r$1 || "number" == r$1 || "symbol" == r$1 || "boolean" == r$1 ? "__proto__" !== e$1 : null === e$1) ? n$1[typeof e$1 == "string" ? "string" : "hash"] : n$1.map;
332
+ }
333
+ function Y(t$1, e$1) {
334
+ var n$1 = null == t$1 ? Mt : t$1[e$1];
335
+ return (!_t(n$1) || ae && ae in n$1 ? 0 : (yt(n$1) ? be : Ct).test(ft(n$1))) ? n$1 : Mt;
336
+ }
337
+ function Z(t$1, e$1, n$1) {
338
+ e$1 = C(e$1, t$1);
339
+ for (var r$1 = -1, u$1 = e$1.length, o$1 = false; ++r$1 < u$1;) {
340
+ var c$1 = it(e$1[r$1]);
341
+ if (!(o$1 = null != t$1 && n$1(t$1, c$1))) break;
342
+ t$1 = t$1[c$1];
343
+ }
344
+ return o$1 || ++r$1 != u$1 ? o$1 : (u$1 = null == t$1 ? 0 : t$1.length, !!u$1 && jt(u$1) && ut(c$1, u$1) && (Ye(t$1) || Xe(t$1)));
345
+ }
346
+ function tt(t$1) {
347
+ var e$1 = t$1.length, n$1 = new t$1.constructor(e$1);
348
+ return e$1 && "string" == typeof t$1[0] && fe.call(t$1, "index") && (n$1.index = t$1.index, n$1.input = t$1.input), n$1;
349
+ }
350
+ function et(t$1) {
351
+ return typeof t$1.constructor != "function" || ot(t$1) ? {} : Ve(_e(t$1));
352
+ }
353
+ function nt(t$1, e$1, n$1) {
354
+ var r$1 = t$1.constructor;
355
+ switch (e$1) {
356
+ case "[object ArrayBuffer]": return W(t$1);
357
+ case "[object Boolean]":
358
+ case "[object Date]": return new r$1(+t$1);
359
+ case "[object DataView]": return e$1 = n$1 ? W(t$1.buffer) : t$1.buffer, new t$1.constructor(e$1, t$1.byteOffset, t$1.byteLength);
360
+ case "[object Float32Array]":
361
+ case "[object Float64Array]":
362
+ case "[object Int8Array]":
363
+ case "[object Int16Array]":
364
+ case "[object Int32Array]":
365
+ case "[object Uint8Array]":
366
+ case "[object Uint8ClampedArray]":
367
+ case "[object Uint16Array]":
368
+ case "[object Uint32Array]": return L(t$1, n$1);
369
+ case "[object Map]": return new r$1();
370
+ case "[object Number]":
371
+ case "[object String]": return new r$1(t$1);
372
+ case "[object RegExp]": return e$1 = new t$1.constructor(t$1.source, Bt.exec(t$1)), e$1.lastIndex = t$1.lastIndex, e$1;
373
+ case "[object Set]": return new r$1();
374
+ case "[object Symbol]": return Le ? Object(Le.call(t$1)) : {};
375
+ }
376
+ }
377
+ function rt(t$1) {
378
+ return Ye(t$1) || Xe(t$1) || !!(Ae && t$1 && t$1[Ae]);
379
+ }
380
+ function ut(t$1, e$1) {
381
+ var n$1 = typeof t$1;
382
+ return e$1 = null == e$1 ? 9007199254740991 : e$1, !!e$1 && ("number" == n$1 || "symbol" != n$1 && Rt.test(t$1)) && -1 < t$1 && 0 == t$1 % 1 && t$1 < e$1;
383
+ }
384
+ function ot(t$1) {
385
+ var e$1 = t$1 && t$1.constructor;
386
+ return t$1 === (typeof e$1 == "function" && e$1.prototype || oe);
387
+ }
388
+ function ct(e$1, n$1, r$1) {
389
+ return n$1 = xe(n$1 === Mt ? e$1.length - 1 : n$1, 0), function() {
390
+ for (var u$1 = arguments, o$1 = -1, c$1 = xe(u$1.length - n$1, 0), i$1 = Array(c$1); ++o$1 < c$1;) i$1[o$1] = u$1[n$1 + o$1];
391
+ for (o$1 = -1, c$1 = Array(n$1 + 1); ++o$1 < n$1;) c$1[o$1] = u$1[o$1];
392
+ return c$1[n$1] = r$1(i$1), t(e$1, this, c$1);
393
+ };
394
+ }
395
+ function it(t$1) {
396
+ if (typeof t$1 == "string" || At(t$1)) return t$1;
397
+ var e$1 = t$1 + "";
398
+ return "0" == e$1 && 1 / t$1 == -Et ? "-0" : e$1;
399
+ }
400
+ function ft(t$1) {
401
+ if (null != t$1) {
402
+ try {
403
+ return ie.call(t$1);
404
+ } catch (t$2) {}
405
+ return t$1 + "";
406
+ }
407
+ return "";
408
+ }
409
+ function at(t$1) {
410
+ return (null == t$1 ? 0 : t$1.length) ? v(t$1, 1) : [];
411
+ }
412
+ function lt(t$1) {
413
+ var e$1 = null == t$1 ? 0 : t$1.length;
414
+ return e$1 ? t$1[e$1 - 1] : Mt;
415
+ }
416
+ function st(t$1, e$1) {
417
+ function n$1() {
418
+ var r$1 = arguments, u$1 = e$1 ? e$1.apply(this, r$1) : r$1[0], o$1 = n$1.cache;
419
+ return o$1.has(u$1) ? o$1.get(u$1) : (r$1 = t$1.apply(this, r$1), n$1.cache = o$1.set(u$1, r$1) || o$1, r$1);
420
+ }
421
+ if (typeof t$1 != "function" || null != e$1 && typeof e$1 != "function") throw new TypeError("Expected a function");
422
+ return n$1.cache = new (st.Cache || l)(), n$1;
423
+ }
424
+ function bt(t$1, e$1) {
425
+ return t$1 === e$1 || t$1 !== t$1 && e$1 !== e$1;
426
+ }
427
+ function pt(t$1) {
428
+ return null != t$1 && jt(t$1.length) && !yt(t$1);
429
+ }
430
+ function ht(t$1) {
431
+ return dt(t$1) && pt(t$1);
432
+ }
433
+ function yt(t$1) {
434
+ return !!_t(t$1) && (t$1 = w(t$1), "[object Function]" == t$1 || "[object GeneratorFunction]" == t$1 || "[object AsyncFunction]" == t$1 || "[object Proxy]" == t$1);
435
+ }
436
+ function jt(t$1) {
437
+ return typeof t$1 == "number" && -1 < t$1 && 0 == t$1 % 1 && 9007199254740991 >= t$1;
438
+ }
439
+ function _t(t$1) {
440
+ var e$1 = typeof t$1;
441
+ return null != t$1 && ("object" == e$1 || "function" == e$1);
442
+ }
443
+ function dt(t$1) {
444
+ return null != t$1 && typeof t$1 == "object";
445
+ }
446
+ function gt(t$1) {
447
+ return !(!dt(t$1) || "[object Object]" != w(t$1)) && (t$1 = _e(t$1), null === t$1 || (t$1 = fe.call(t$1, "constructor") && t$1.constructor, typeof t$1 == "function" && t$1 instanceof t$1 && ie.call(t$1) == se));
448
+ }
449
+ function vt(t$1) {
450
+ return typeof t$1 == "string" || !Ye(t$1) && dt(t$1) && "[object String]" == w(t$1);
451
+ }
452
+ function At(t$1) {
453
+ return typeof t$1 == "symbol" || dt(t$1) && "[object Symbol]" == w(t$1);
454
+ }
455
+ function mt(t$1) {
456
+ return V(t$1, zt(t$1));
457
+ }
458
+ function wt(t$1) {
459
+ return null == t$1 ? "" : $(t$1);
460
+ }
461
+ function Ot(t$1, e$1) {
462
+ return null != t$1 && Z(t$1, e$1, S);
463
+ }
464
+ function St(t$1) {
465
+ return pt(t$1) ? b(t$1) : I(t$1);
466
+ }
467
+ function zt(t$1) {
468
+ if (pt(t$1)) t$1 = b(t$1, true);
469
+ else if (_t(t$1)) {
470
+ var e$1, n$1 = ot(t$1), r$1 = [];
471
+ for (e$1 in t$1) ("constructor" != e$1 || !n$1 && fe.call(t$1, e$1)) && r$1.push(e$1);
472
+ t$1 = r$1;
473
+ } else {
474
+ if (e$1 = [], null != t$1) for (n$1 in Object(t$1)) e$1.push(n$1);
475
+ t$1 = e$1;
476
+ }
477
+ return t$1;
478
+ }
479
+ function xt(t$1) {
480
+ return function() {
481
+ return t$1;
482
+ };
483
+ }
484
+ function kt(t$1) {
485
+ return t$1;
486
+ }
487
+ function Ft() {
488
+ return [];
489
+ }
490
+ function It() {
491
+ return false;
492
+ }
493
+ var Mt, Et = Infinity, Ut = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, Pt = /^\w*$/, Dt = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, $t = /\\(\\)?/g, Bt = /\w*$/, Ct = /^\[object .+?Constructor\]$/, Rt = /^(?:0|[1-9]\d*)$/, Tt = RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]?|[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?)*", "g"), Vt = RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]"), Nt = {};
494
+ Nt["[object Float32Array]"] = Nt["[object Float64Array]"] = Nt["[object Int8Array]"] = Nt["[object Int16Array]"] = Nt["[object Int32Array]"] = Nt["[object Uint8Array]"] = Nt["[object Uint8ClampedArray]"] = Nt["[object Uint16Array]"] = Nt["[object Uint32Array]"] = true, Nt["[object Arguments]"] = Nt["[object Array]"] = Nt["[object ArrayBuffer]"] = Nt["[object Boolean]"] = Nt["[object DataView]"] = Nt["[object Date]"] = Nt["[object Error]"] = Nt["[object Function]"] = Nt["[object Map]"] = Nt["[object Number]"] = Nt["[object Object]"] = Nt["[object RegExp]"] = Nt["[object Set]"] = Nt["[object String]"] = Nt["[object WeakMap]"] = false;
495
+ var Gt = {};
496
+ Gt["[object Arguments]"] = Gt["[object Array]"] = Gt["[object ArrayBuffer]"] = Gt["[object DataView]"] = Gt["[object Boolean]"] = Gt["[object Date]"] = Gt["[object Float32Array]"] = Gt["[object Float64Array]"] = Gt["[object Int8Array]"] = Gt["[object Int16Array]"] = Gt["[object Int32Array]"] = Gt["[object Map]"] = Gt["[object Number]"] = Gt["[object Object]"] = Gt["[object RegExp]"] = Gt["[object Set]"] = Gt["[object String]"] = Gt["[object Symbol]"] = Gt["[object Uint8Array]"] = Gt["[object Uint8ClampedArray]"] = Gt["[object Uint16Array]"] = Gt["[object Uint32Array]"] = true, Gt["[object Error]"] = Gt["[object Function]"] = Gt["[object WeakMap]"] = false;
497
+ var qt, Ht = typeof global == "object" && global && global.Object === Object && global, Jt = typeof self == "object" && self && self.Object === Object && self, Kt = Ht || Jt || Function("return this")(), Qt = typeof exports == "object" && exports && !exports.nodeType && exports, Xt = Qt && typeof module == "object" && module && !module.nodeType && module, Yt = Xt && Xt.exports === Qt, Zt = Yt && Ht.process;
498
+ t: {
499
+ try {
500
+ qt = Zt && Zt.binding && Zt.binding("util");
501
+ break t;
502
+ } catch (t$1) {}
503
+ qt = void 0;
504
+ }
505
+ var te = qt && qt.isMap, ee = qt && qt.isSet, ne = qt && qt.isTypedArray, re = function(t$1) {
506
+ return function(e$1) {
507
+ return null == e$1 ? Mt : e$1[t$1];
508
+ };
509
+ }("length"), ue = Array.prototype, oe = Object.prototype, ce = Kt["__core-js_shared__"], ie = Function.prototype.toString, fe = oe.hasOwnProperty, ae = function() {
510
+ var t$1 = /[^.]+$/.exec(ce && ce.keys && ce.keys.IE_PROTO || "");
511
+ return t$1 ? "Symbol(src)_1." + t$1 : "";
512
+ }(), le = oe.toString, se = ie.call(Object), be = RegExp("^" + ie.call(fe).replace(/[\\^$.*+?()[\]{}|]/g, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"), pe = Yt ? Kt.Buffer : Mt, he = Kt.Symbol, ye = Kt.Uint8Array, je = pe ? pe.a : Mt, _e = c(Object.getPrototypeOf), de = Object.create, ge = oe.propertyIsEnumerable, ve = ue.splice, Ae = he ? he.isConcatSpreadable : Mt, me = he ? he.toStringTag : Mt, we = function() {
513
+ try {
514
+ var t$1 = Y(Object, "defineProperty");
515
+ return t$1({}, "", {}), t$1;
516
+ } catch (t$2) {}
517
+ }(), Oe = Object.getOwnPropertySymbols, Se = pe ? pe.isBuffer : Mt, ze = c(Object.keys), xe = Math.max, ke = Date.now, Fe = Y(Kt, "DataView"), Ie = Y(Kt, "Map"), Me = Y(Kt, "Promise"), Ee = Y(Kt, "Set"), Ue = Y(Kt, "WeakMap"), Pe = Y(Object, "create"), De = ft(Fe), $e = ft(Ie), Be = ft(Me), Ce = ft(Ee), Re = ft(Ue), We = he ? he.prototype : Mt, Le = We ? We.valueOf : Mt, Te = We ? We.toString : Mt, Ve = function() {
518
+ function t$1() {}
519
+ return function(e$1) {
520
+ return _t(e$1) ? de ? de(e$1) : (t$1.prototype = e$1, e$1 = new t$1(), t$1.prototype = Mt, e$1) : {};
521
+ };
522
+ }();
523
+ f.prototype.clear = function() {
524
+ this.__data__ = Pe ? Pe(null) : {}, this.size = 0;
525
+ }, f.prototype.delete = function(t$1) {
526
+ return t$1 = this.has(t$1) && delete this.__data__[t$1], this.size -= t$1 ? 1 : 0, t$1;
527
+ }, f.prototype.get = function(t$1) {
528
+ var e$1 = this.__data__;
529
+ return Pe ? (t$1 = e$1[t$1], "__lodash_hash_undefined__" === t$1 ? Mt : t$1) : fe.call(e$1, t$1) ? e$1[t$1] : Mt;
530
+ }, f.prototype.has = function(t$1) {
531
+ var e$1 = this.__data__;
532
+ return Pe ? e$1[t$1] !== Mt : fe.call(e$1, t$1);
533
+ }, f.prototype.set = function(t$1, e$1) {
534
+ var n$1 = this.__data__;
535
+ return this.size += this.has(t$1) ? 0 : 1, n$1[t$1] = Pe && e$1 === Mt ? "__lodash_hash_undefined__" : e$1, this;
536
+ }, a.prototype.clear = function() {
537
+ this.__data__ = [], this.size = 0;
538
+ }, a.prototype.delete = function(t$1) {
539
+ var e$1 = this.__data__;
540
+ return t$1 = y(e$1, t$1), !(0 > t$1) && (t$1 == e$1.length - 1 ? e$1.pop() : ve.call(e$1, t$1, 1), --this.size, true);
541
+ }, a.prototype.get = function(t$1) {
542
+ var e$1 = this.__data__;
543
+ return t$1 = y(e$1, t$1), 0 > t$1 ? Mt : e$1[t$1][1];
544
+ }, a.prototype.has = function(t$1) {
545
+ return -1 < y(this.__data__, t$1);
546
+ }, a.prototype.set = function(t$1, e$1) {
547
+ var n$1 = this.__data__, r$1 = y(n$1, t$1);
548
+ return 0 > r$1 ? (++this.size, n$1.push([t$1, e$1])) : n$1[r$1][1] = e$1, this;
549
+ }, l.prototype.clear = function() {
550
+ this.size = 0, this.__data__ = {
551
+ hash: new f(),
552
+ map: new (Ie || a)(),
553
+ string: new f()
554
+ };
555
+ }, l.prototype.delete = function(t$1) {
556
+ return t$1 = X(this, t$1).delete(t$1), this.size -= t$1 ? 1 : 0, t$1;
557
+ }, l.prototype.get = function(t$1) {
558
+ return X(this, t$1).get(t$1);
559
+ }, l.prototype.has = function(t$1) {
560
+ return X(this, t$1).has(t$1);
561
+ }, l.prototype.set = function(t$1, e$1) {
562
+ var n$1 = X(this, t$1), r$1 = n$1.size;
563
+ return n$1.set(t$1, e$1), this.size += n$1.size == r$1 ? 0 : 1, this;
564
+ }, s.prototype.clear = function() {
565
+ this.__data__ = new a(), this.size = 0;
566
+ }, s.prototype.delete = function(t$1) {
567
+ var e$1 = this.__data__;
568
+ return t$1 = e$1.delete(t$1), this.size = e$1.size, t$1;
569
+ }, s.prototype.get = function(t$1) {
570
+ return this.__data__.get(t$1);
571
+ }, s.prototype.has = function(t$1) {
572
+ return this.__data__.has(t$1);
573
+ }, s.prototype.set = function(t$1, e$1) {
574
+ var n$1 = this.__data__;
575
+ if (n$1 instanceof a) {
576
+ var r$1 = n$1.__data__;
577
+ if (!Ie || 199 > r$1.length) return r$1.push([t$1, e$1]), this.size = ++n$1.size, this;
578
+ n$1 = this.__data__ = new l(r$1);
579
+ }
580
+ return n$1.set(t$1, e$1), this.size = n$1.size, this;
581
+ };
582
+ var Ne = function(t$1) {
583
+ return function(e$1, n$1, r$1) {
584
+ var u$1 = -1, o$1 = Object(e$1);
585
+ r$1 = r$1(e$1);
586
+ for (var c$1 = r$1.length; c$1--;) {
587
+ var i$1 = r$1[t$1 ? c$1 : ++u$1];
588
+ if (false === n$1(o$1[i$1], i$1, o$1)) break;
589
+ }
590
+ return e$1;
591
+ };
592
+ }(), Ge = we ? function(t$1, e$1) {
593
+ return we(t$1, "toString", {
594
+ configurable: true,
595
+ enumerable: false,
596
+ value: xt(e$1),
597
+ writable: true
598
+ });
599
+ } : kt, qe = Oe ? function(t$1) {
600
+ return null == t$1 ? [] : (t$1 = Object(t$1), n(Oe(t$1), function(e$1) {
601
+ return ge.call(t$1, e$1);
602
+ }));
603
+ } : Ft, He = Oe ? function(t$1) {
604
+ for (var e$1 = []; t$1;) u(e$1, qe(t$1)), t$1 = _e(t$1);
605
+ return e$1;
606
+ } : Ft, Je = w;
607
+ (Fe && "[object DataView]" != Je(new Fe(/* @__PURE__ */ new ArrayBuffer(1))) || Ie && "[object Map]" != Je(new Ie()) || Me && "[object Promise]" != Je(Me.resolve()) || Ee && "[object Set]" != Je(new Ee()) || Ue && "[object WeakMap]" != Je(new Ue())) && (Je = function(t$1) {
608
+ var e$1 = w(t$1);
609
+ if (t$1 = (t$1 = "[object Object]" == e$1 ? t$1.constructor : Mt) ? ft(t$1) : "") switch (t$1) {
610
+ case De: return "[object DataView]";
611
+ case $e: return "[object Map]";
612
+ case Be: return "[object Promise]";
613
+ case Ce: return "[object Set]";
614
+ case Re: return "[object WeakMap]";
615
+ }
616
+ return e$1;
617
+ });
618
+ var Ke = function(t$1) {
619
+ var e$1 = 0, n$1 = 0;
620
+ return function() {
621
+ var r$1 = ke(), u$1 = 16 - (r$1 - n$1);
622
+ if (n$1 = r$1, 0 < u$1) {
623
+ if (800 <= ++e$1) return arguments[0];
624
+ } else e$1 = 0;
625
+ return t$1.apply(Mt, arguments);
626
+ };
627
+ }(Ge), Qe = function(t$1) {
628
+ t$1 = st(t$1, function(t$2) {
629
+ return 500 === e$1.size && e$1.clear(), t$2;
630
+ });
631
+ var e$1 = t$1.cache;
632
+ return t$1;
633
+ }(function(t$1) {
634
+ var e$1 = [];
635
+ return 46 === t$1.charCodeAt(0) && e$1.push(""), t$1.replace(Dt, function(t$2, n$1, r$1, u$1) {
636
+ e$1.push(r$1 ? u$1.replace($t, "$1") : n$1 || t$2);
637
+ }), e$1;
638
+ });
639
+ st.Cache = l;
640
+ var Xe = z(function() {
641
+ return arguments;
642
+ }()) ? z : function(t$1) {
643
+ return dt(t$1) && fe.call(t$1, "callee") && !ge.call(t$1, "callee");
644
+ }, Ye = Array.isArray, Ze = Se || It, tn = te ? o(te) : x, en = ee ? o(ee) : k, nn = ne ? o(ne) : F, rn = q(function(t$1, e$1, n$1) {
645
+ M(t$1, e$1, n$1);
646
+ }), un = q(function(t$1, e$1, n$1, r$1) {
647
+ M(t$1, e$1, n$1, r$1);
648
+ }), on = J(function(t$1, e$1) {
649
+ var n$1 = {};
650
+ if (null == t$1) return n$1;
651
+ var u$1 = false;
652
+ e$1 = r(e$1, function(e$2) {
653
+ return e$2 = C(e$2, t$1), u$1 || (u$1 = 1 < e$2.length), e$2;
654
+ }), V(t$1, Q(t$1), n$1), u$1 && (n$1 = g(n$1, 7, H));
655
+ for (var o$1 = e$1.length; o$1--;) B(n$1, e$1[o$1]);
656
+ return n$1;
657
+ }), cn = J(function(t$1, e$1) {
658
+ return null == t$1 ? {} : E(t$1, e$1);
659
+ });
660
+ i.constant = xt, i.flatten = at, i.keys = St, i.keysIn = zt, i.memoize = st, i.merge = rn, i.mergeWith = un, i.omit = on, i.pick = cn, i.set = function(t$1, e$1, n$1) {
661
+ return null == t$1 ? t$1 : D(t$1, e$1, n$1);
662
+ }, i.toPath = function(t$1) {
663
+ return Ye(t$1) ? r(t$1, it) : At(t$1) ? [t$1] : T(Qe(wt(t$1)));
664
+ }, i.toPlainObject = mt, i.unset = function(t$1, e$1) {
665
+ return null == t$1 || B(t$1, e$1);
666
+ }, i.clone = function(t$1) {
667
+ return g(t$1, 4);
668
+ }, i.cloneDeep = function(t$1) {
669
+ return g(t$1, 5);
670
+ }, i.cloneDeepWith = function(t$1, e$1) {
671
+ return e$1 = typeof e$1 == "function" ? e$1 : Mt, g(t$1, 5, e$1);
672
+ }, i.cloneWith = function(t$1, e$1) {
673
+ return e$1 = typeof e$1 == "function" ? e$1 : Mt, g(t$1, 4, e$1);
674
+ }, i.eq = bt, i.get = function(t$1, e$1, n$1) {
675
+ return t$1 = null == t$1 ? Mt : A(t$1, e$1), t$1 === Mt ? n$1 : t$1;
676
+ }, i.has = function(t$1, e$1) {
677
+ return null != t$1 && Z(t$1, e$1, O);
678
+ }, i.hasIn = Ot, i.identity = kt, i.isArguments = Xe, i.isArray = Ye, i.isArrayLike = pt, i.isArrayLikeObject = ht, i.isBuffer = Ze, i.isFunction = yt, i.isLength = jt, i.isMap = tn, i.isObject = _t, i.isObjectLike = dt, i.isPlainObject = gt, i.isSet = en, i.isString = vt, i.isSymbol = At, i.isTypedArray = nn, i.last = lt, i.stubArray = Ft, i.stubFalse = It, i.size = function(t$1) {
679
+ if (null == t$1) return 0;
680
+ if (pt(t$1)) {
681
+ if (vt(t$1)) if (Vt.test(t$1)) {
682
+ for (var e$1 = Tt.lastIndex = 0; Tt.test(t$1);) ++e$1;
683
+ t$1 = e$1;
684
+ } else t$1 = re(t$1);
685
+ else t$1 = t$1.length;
686
+ return t$1;
687
+ }
688
+ return e$1 = Je(t$1), "[object Map]" == e$1 || "[object Set]" == e$1 ? t$1.size : I(t$1).length;
689
+ }, i.toString = wt, i.VERSION = "4.17.5", typeof define == "function" && typeof define.amd == "object" && define.amd ? (Kt._ = i, define(function() {
690
+ return i;
691
+ })) : Xt ? ((Xt.exports = i)._ = i, Qt._ = i) : Kt._ = i;
692
+ }).call(exports);
693
+ }));
694
+ export { isScriptFile as n, naturalSort as r, require_main as t };
@@ -1,25 +1,4 @@
1
- import "node:module";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
11
- key = keys[i];
12
- if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
13
- get: ((k) => from[k]).bind(null, key),
14
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
- });
16
- }
17
- return to;
18
- };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
20
- value: mod,
21
- enumerable: true
22
- }) : target, mod));
1
+ import { n as __toESM, t as __commonJSMin } from "./chunk-BNZ4_A-W.js";
23
2
  var import_secure_json_parse = (/* @__PURE__ */ __commonJSMin(((exports, module) => {
24
3
  const hasBuffer = typeof Buffer !== "undefined";
25
4
  const suspectProtoRx = /"(?:_|\\u005[Ff])(?:_|\\u005[Ff])(?:p|\\u0070)(?:r|\\u0072)(?:o|\\u006[Ff])(?:t|\\u0074)(?:o|\\u006[Ff])(?:_|\\u005[Ff])(?:_|\\u005[Ff])"\s*:/;
@@ -73,7 +52,7 @@ var import_secure_json_parse = (/* @__PURE__ */ __commonJSMin(((exports, module)
73
52
  }
74
53
  return obj;
75
54
  }
76
- function parse$1(text, reviver, options) {
55
+ function parse(text, reviver, options) {
77
56
  const { stackTraceLimit } = Error;
78
57
  Error.stackTraceLimit = 0;
79
58
  try {
@@ -82,7 +61,7 @@ var import_secure_json_parse = (/* @__PURE__ */ __commonJSMin(((exports, module)
82
61
  Error.stackTraceLimit = stackTraceLimit;
83
62
  }
84
63
  }
85
- function safeParse$1(text, reviver) {
64
+ function safeParse(text, reviver) {
86
65
  const { stackTraceLimit } = Error;
87
66
  Error.stackTraceLimit = 0;
88
67
  try {
@@ -93,10 +72,10 @@ var import_secure_json_parse = (/* @__PURE__ */ __commonJSMin(((exports, module)
93
72
  Error.stackTraceLimit = stackTraceLimit;
94
73
  }
95
74
  }
96
- module.exports = parse$1;
97
- module.exports.default = parse$1;
98
- module.exports.parse = parse$1;
99
- module.exports.safeParse = safeParse$1;
75
+ module.exports = parse;
76
+ module.exports.default = parse;
77
+ module.exports.parse = parse;
78
+ module.exports.safeParse = safeParse;
100
79
  module.exports.scan = filter;
101
80
  })))();
102
81
  function safeParse(jsonString, reviver) {
@@ -107,13 +86,13 @@ function safeParse(jsonString, reviver) {
107
86
  }
108
87
  var import_safe_stable_stringify = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exports, module) => {
109
88
  const { hasOwnProperty } = Object.prototype;
110
- const stringify$2 = configure$1();
111
- stringify$2.configure = configure$1;
112
- stringify$2.stringify = stringify$2;
113
- stringify$2.default = stringify$2;
114
- exports.stringify = stringify$2;
115
- exports.configure = configure$1;
116
- module.exports = stringify$2;
89
+ const stringify = configure();
90
+ stringify.configure = configure;
91
+ stringify.stringify = stringify;
92
+ stringify.default = stringify;
93
+ exports.stringify = stringify;
94
+ exports.configure = configure;
95
+ module.exports = stringify;
117
96
  const strEscapeSequencesRegExp = /[\u0000-\u001f\u0022\u005c\ud800-\udfff]/;
118
97
  function strEscape(str) {
119
98
  if (str.length < 5e3 && !strEscapeSequencesRegExp.test(str)) return `"${str}"`;
@@ -201,7 +180,7 @@ var import_safe_stable_stringify = /* @__PURE__ */ __toESM((/* @__PURE__ */ __co
201
180
  };
202
181
  }
203
182
  }
204
- function configure$1(options) {
183
+ function configure(options) {
205
184
  options = { ...options };
206
185
  const fail = getStrictOption(options);
207
186
  if (fail) {
@@ -498,7 +477,7 @@ var import_safe_stable_stringify = /* @__PURE__ */ __toESM((/* @__PURE__ */ __co
498
477
  default: return fail ? fail(value) : void 0;
499
478
  }
500
479
  }
501
- function stringify$3(value, replacer, space) {
480
+ function stringify$2(value, replacer, space) {
502
481
  if (arguments.length > 1) {
503
482
  let spacer = "";
504
483
  if (typeof space === "number") spacer = " ".repeat(Math.min(space, 10));
@@ -511,7 +490,7 @@ var import_safe_stable_stringify = /* @__PURE__ */ __toESM((/* @__PURE__ */ __co
511
490
  }
512
491
  return stringifySimple("", value, []);
513
492
  }
514
- return stringify$3;
493
+ return stringify$2;
515
494
  }
516
495
  })))(), 1);
517
496
  const configure = import_safe_stable_stringify.configure;
@@ -1,7 +1,7 @@
1
- import { n as naturalSort, t as isScriptFile } from "../../is_script_file-CbSEfxE_.js";
1
+ import { n as __toESM } from "../../chunk-BNZ4_A-W.js";
2
+ import { n as isScriptFile, r as naturalSort, t as require_main } from "../../main-CdreHl1_.js";
2
3
  import { extname, join, relative, sep } from "node:path";
3
4
  import string from "@poppinss/string";
4
- import lodash from "@poppinss/utils/lodash";
5
5
  import { readdir, stat } from "node:fs/promises";
6
6
  import { fileURLToPath, pathToFileURL } from "node:url";
7
7
  async function fsReadAll(location, options) {
@@ -36,12 +36,13 @@ async function fsReadAll(location, options) {
36
36
  if (normalizedOptions.filter) return files.filter(normalizedOptions.filter).sort(normalizedOptions.sort);
37
37
  return files.sort(normalizedOptions.sort);
38
38
  }
39
+ var import_main = /* @__PURE__ */ __toESM(require_main());
39
40
  async function importFile(basePath, fileURL, values, options) {
40
41
  const filePath = fileURLToPath(fileURL);
41
42
  const fileExtension = extname(filePath);
42
43
  const collectionKey = relative(basePath, filePath).replace(/* @__PURE__ */ new RegExp(`${fileExtension}$`), "").split(sep);
43
44
  const exportedValue = fileExtension === ".json" ? await import(fileURL, { with: { type: "json" } }) : await import(fileURL);
44
- lodash.set(values, options.transformKeys ? options.transformKeys(collectionKey) : collectionKey, exportedValue.default ? exportedValue.default : { ...exportedValue });
45
+ import_main.default.set(values, options.transformKeys ? options.transformKeys(collectionKey) : collectionKey, exportedValue.default ? exportedValue.default : { ...exportedValue });
45
46
  }
46
47
  async function fsImportAll(location, options) {
47
48
  options = options || {};
@@ -1,2 +1,3 @@
1
- import { n as safeParse, t as safeStringify } from "../../main-_zxQ-frM.js";
1
+ import "../../chunk-BNZ4_A-W.js";
2
+ import { n as safeParse, t as safeStringify } from "../../main-aO4h7ygK.js";
2
3
  export { safeParse, safeStringify };
@@ -0,0 +1,24 @@
1
+ export type ImportInfo = {
2
+ source: string;
3
+ defaultImport?: string;
4
+ namedImports?: string[];
5
+ typeImports?: string[];
6
+ };
7
+ /**
8
+ * ImportsBag manages and deduplicates imports from the same source
9
+ */
10
+ export declare class ImportsBag {
11
+ #private;
12
+ /**
13
+ * Add an import to the bag
14
+ */
15
+ add(importInfo: ImportInfo): this;
16
+ /**
17
+ * Get deduplicated imports as an array
18
+ */
19
+ toArray(): ImportInfo[];
20
+ /**
21
+ * Get deduplicated imports as a formatted string
22
+ */
23
+ toString(): string;
24
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poppinss/utils",
3
- "version": "7.0.0-next.4",
3
+ "version": "7.0.0-next.5",
4
4
  "description": "Handy utilities for repetitive work",
5
5
  "main": "build/index.js",
6
6
  "type": "module",
@@ -46,24 +46,24 @@
46
46
  "@adonisjs/logger": "^6.0.7",
47
47
  "@adonisjs/prettier-config": "^1.4.5",
48
48
  "@adonisjs/tsconfig": "^2.0.0-next.3",
49
- "@japa/assert": "^4.1.1",
50
- "@japa/expect-type": "^2.0.3",
51
- "@japa/runner": "^4.4.0",
49
+ "@japa/assert": "^4.2.0",
50
+ "@japa/expect-type": "^2.0.4",
51
+ "@japa/runner": "^5.0.0",
52
52
  "@poppinss/ts-exec": "^1.4.1",
53
- "@release-it/conventional-changelog": "^10.0.3",
53
+ "@release-it/conventional-changelog": "^10.0.4",
54
54
  "@types/fs-extra": "^11.0.4",
55
- "@types/node": "^25.0.1",
55
+ "@types/node": "^25.0.3",
56
56
  "c8": "^10.1.3",
57
- "eslint": "^9.39.1",
58
- "fs-extra": "^11.3.2",
57
+ "eslint": "^9.39.2",
58
+ "fs-extra": "^11.3.3",
59
59
  "lodash": "^4.17.21",
60
60
  "lodash-cli": "^4.17.5",
61
61
  "move-file-cli": "^3.0.0",
62
62
  "prettier": "^3.7.4",
63
- "release-it": "^19.1.0",
63
+ "release-it": "^19.2.2",
64
64
  "safe-stable-stringify": "^2.5.0",
65
65
  "secure-json-parse": "^4.1.0",
66
- "tsdown": "^0.17.3",
66
+ "tsdown": "^0.18.4",
67
67
  "typescript": "^5.9.3"
68
68
  },
69
69
  "dependencies": {
@@ -1,20 +0,0 @@
1
- import { extname } from "node:path";
2
- function naturalSort(current, next) {
3
- return current.localeCompare(next, void 0, {
4
- numeric: true,
5
- sensitivity: "base"
6
- });
7
- }
8
- const JS_MODULES = [
9
- ".js",
10
- ".json",
11
- ".cjs",
12
- ".mjs"
13
- ];
14
- function isScriptFile(filePath) {
15
- const ext = extname(filePath);
16
- if (JS_MODULES.includes(ext)) return true;
17
- if (ext === ".ts" && !filePath.endsWith(".d.ts")) return true;
18
- return false;
19
- }
20
- export { naturalSort as n, isScriptFile as t };