@poppinss/utils 6.7.3 → 6.8.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.
package/README.md CHANGED
@@ -69,7 +69,7 @@ import lodash from '@poppinss/utils/lodash'
69
69
  import assert from '@poppinss/utils/assert'
70
70
 
71
71
  // main module
72
- import { base64, Exception, fsReadAll } from '@poppinss/utils'
72
+ import { base64, fsReadAll } from '@poppinss/utils'
73
73
 
74
74
  // types sub-module
75
75
  import { ReadAllFilesOptions } from '@poppinss/utils/types'
@@ -645,9 +645,11 @@ lodash.pick(collection, keys)
645
645
  ```
646
646
 
647
647
  ### Assertion helpers
648
+
648
649
  The following assertion methods offers type-safe approach for writing conditionals and throwing error when the variable has unexpected values.
649
650
 
650
651
  #### assertExists(message?: string)
652
+
651
653
  Throws [AssertionError](https://nodejs.org/api/assert.html#new-assertassertionerroroptions) when the value is `false`, `null`, or `undefined`.
652
654
 
653
655
  ```ts
@@ -660,6 +662,7 @@ assertExists(value)
660
662
  ```
661
663
 
662
664
  #### assertNotNull(value: unknown, message?: string)
665
+
663
666
  Throws [AssertionError](https://nodejs.org/api/assert.html#new-assertassertionerroroptions) when the value is `null`.
664
667
 
665
668
  ```ts
@@ -672,6 +675,7 @@ assertNotNull(value)
672
675
  ```
673
676
 
674
677
  #### assertIsDefined(value: unknown, message?: string)
678
+
675
679
  Throws [AssertionError](https://nodejs.org/api/assert.html#new-assertassertionerroroptions) when the value is `undefined`.
676
680
 
677
681
  ```ts
@@ -684,6 +688,7 @@ assertIsDefined(value)
684
688
  ```
685
689
 
686
690
  #### assertUnreachable(value: unknown)
691
+
687
692
  Throws [AssertionError](https://nodejs.org/api/assert.html#new-assertassertionerroroptions) when the method is invoked. In other words, this method always throws an exception.
688
693
 
689
694
  ```ts
@@ -829,7 +834,7 @@ defineStaticProperty(UserModel, 'columns', {
829
834
  A custom exception class with support for defining the error status, error code, and help description. This class aims to standardize exceptions within your projects.
830
835
 
831
836
  ```ts
832
- import { Exception } from '@poppinss/utils'
837
+ import { Exception } from '@poppinss/utils/exception'
833
838
 
834
839
  class ResourceNotFound extends Exception {
835
840
  static code = 'E_RESOURCE_NOT_FOUND'
@@ -848,7 +853,7 @@ constructor that accepts an array of values to use for interpolation.
848
853
  The interpolation of error message is performed using the `util.format` message.
849
854
 
850
855
  ```ts
851
- import { createError } from '@poppinss/utils'
856
+ import { createError } from '@poppinss/utils/exception'
852
857
  const E_RESOURCE_NOT_FOUND = createError(
853
858
  'Unable to find resource with id %d',
854
859
  'E_RESOURCE_NOT_FOUND'
@@ -1051,7 +1056,7 @@ if (safeEqual(trustedValue, userInput)) {
1051
1056
  Convert OS-specific file paths to Unix file paths. The method is exported directly from the [slash](https://npm.im/slash) package.
1052
1057
 
1053
1058
  ```ts
1054
- import { slash } from '@poppinss/utils'
1059
+ import { slash } from '@poppinss/utils/slash'
1055
1060
  slash('foo\\bar') // foo/bar
1056
1061
  ```
1057
1062
 
@@ -1229,6 +1234,7 @@ const filename = getFilename(import.meta.url)
1229
1234
  ```
1230
1235
 
1231
1236
  #### joinToURL
1237
+
1232
1238
  Similar to the Node.js `path.join`, but instead expects the first parameter to be a URL instance or a string with the `file:///` protocol.
1233
1239
 
1234
1240
  The return value is an absolute file system path without the `file:///` protocol.
@@ -0,0 +1,55 @@
1
+ // src/exception.ts
2
+ import { format } from "node:util";
3
+ var Exception = class extends Error {
4
+ /**
5
+ * Name of the class that raised the exception.
6
+ */
7
+ name;
8
+ /**
9
+ * A status code for the error. Usually helpful when converting errors
10
+ * to HTTP responses.
11
+ */
12
+ status;
13
+ constructor(message, options) {
14
+ super(message, options);
15
+ const ErrorConstructor = this.constructor;
16
+ this.name = ErrorConstructor.name;
17
+ this.message = message || ErrorConstructor.message || "";
18
+ this.status = options?.status || ErrorConstructor.status || 500;
19
+ const code = options?.code || ErrorConstructor.code;
20
+ if (code !== void 0) {
21
+ this.code = code;
22
+ }
23
+ const help = ErrorConstructor.help;
24
+ if (help !== void 0) {
25
+ this.help = help;
26
+ }
27
+ Error.captureStackTrace(this, ErrorConstructor);
28
+ }
29
+ get [Symbol.toStringTag]() {
30
+ return this.constructor.name;
31
+ }
32
+ toString() {
33
+ if (this.code) {
34
+ return `${this.name} [${this.code}]: ${this.message}`;
35
+ }
36
+ return `${this.name}: ${this.message}`;
37
+ }
38
+ };
39
+ function createError(message, code, status) {
40
+ return class extends Exception {
41
+ static message = message;
42
+ static code = code;
43
+ static status = status;
44
+ constructor(args, options) {
45
+ super(format(message, ...args || []), options);
46
+ this.name = "Exception";
47
+ }
48
+ };
49
+ }
50
+
51
+ export {
52
+ Exception,
53
+ createError
54
+ };
55
+ //# sourceMappingURL=chunk-GGIWJLUJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/exception.ts"],"sourcesContent":["/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { format } from 'node:util'\n\n/**\n * Extended Error object with the option to set error `status` and `code`.\n * At AdonisJs, we prefer exceptions with proper error codes to handle\n * them without relying on message pattern matching.\n *\n * ```js\n * new Exception('message', 500, 'E_RUNTIME_EXCEPTION')\n * ```\n */\nexport class Exception extends Error {\n /**\n * Static properties to defined on the exception once\n * and then re-use them\n */\n declare static help?: string\n declare static code?: string\n declare static status?: number\n declare static message?: string\n\n /**\n * Name of the class that raised the exception.\n */\n name: string\n\n /**\n * Optional help description for the error. You can use it to define additional\n * human readable information for the error.\n */\n declare help?: string\n\n /**\n * A machine readable error code. This will allow the error handling logic\n * to narrow down exceptions based upon the error code.\n */\n declare code?: string\n\n /**\n * A status code for the error. Usually helpful when converting errors\n * to HTTP responses.\n */\n status: number\n\n constructor(message?: string, options?: ErrorOptions & { code?: string; status?: number }) {\n super(message, options)\n\n const ErrorConstructor = this.constructor as typeof Exception\n\n this.name = ErrorConstructor.name\n this.message = message || ErrorConstructor.message || ''\n this.status = options?.status || ErrorConstructor.status || 500\n\n const code = options?.code || ErrorConstructor.code\n if (code !== undefined) {\n this.code = code\n }\n\n const help = ErrorConstructor.help\n if (help !== undefined) {\n this.help = help\n }\n\n Error.captureStackTrace(this, ErrorConstructor)\n }\n\n get [Symbol.toStringTag]() {\n return this.constructor.name\n }\n\n toString() {\n if (this.code) {\n return `${this.name} [${this.code}]: ${this.message}`\n }\n return `${this.name}: ${this.message}`\n }\n}\n\n/**\n * Helper to create anonymous error classes\n */\nexport function createError<T extends any[] = never>(\n message: string,\n code: string,\n status?: number\n): typeof Exception & T extends never\n ? { new (args?: any, options?: ErrorOptions): Exception }\n : { new (args: T, options?: ErrorOptions): Exception } {\n return class extends Exception {\n static message = message\n static code = code\n static status = status\n\n constructor(args: T, options?: ErrorOptions) {\n super(format(message, ...(args || [])), options)\n this.name = 'Exception'\n }\n }\n}\n"],"mappings":";AASA,SAAS,cAAc;AAWhB,IAAM,YAAN,cAAwB,MAAM;AAAA;AAAA;AAAA;AAAA,EAanC;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA;AAAA,EAEA,YAAY,SAAkB,SAA6D;AACzF,UAAM,SAAS,OAAO;AAEtB,UAAM,mBAAmB,KAAK;AAE9B,SAAK,OAAO,iBAAiB;AAC7B,SAAK,UAAU,WAAW,iBAAiB,WAAW;AACtD,SAAK,SAAS,SAAS,UAAU,iBAAiB,UAAU;AAE5D,UAAM,OAAO,SAAS,QAAQ,iBAAiB;AAC/C,QAAI,SAAS,QAAW;AACtB,WAAK,OAAO;AAAA,IACd;AAEA,UAAM,OAAO,iBAAiB;AAC9B,QAAI,SAAS,QAAW;AACtB,WAAK,OAAO;AAAA,IACd;AAEA,UAAM,kBAAkB,MAAM,gBAAgB;AAAA,EAChD;AAAA,EAEA,KAAK,OAAO,WAAW,IAAI;AACzB,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEA,WAAW;AACT,QAAI,KAAK,MAAM;AACb,aAAO,GAAG,KAAK,IAAI,KAAK,KAAK,IAAI,MAAM,KAAK,OAAO;AAAA,IACrD;AACA,WAAO,GAAG,KAAK,IAAI,KAAK,KAAK,OAAO;AAAA,EACtC;AACF;AAKO,SAAS,YACd,SACA,MACA,QAGuD;AACvD,SAAO,cAAc,UAAU;AAAA,IAC7B,OAAO,UAAU;AAAA,IACjB,OAAO,OAAO;AAAA,IACd,OAAO,SAAS;AAAA,IAEhB,YAAY,MAAS,SAAwB;AAC3C,YAAM,OAAO,SAAS,GAAI,QAAQ,CAAC,CAAE,GAAG,OAAO;AAC/C,WAAK,OAAO;AAAA,IACd;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,21 @@
1
+ import {
2
+ Exception
3
+ } from "./chunk-GGIWJLUJ.js";
4
+
5
+ // src/exceptions/runtime_exception.ts
6
+ var RuntimeException = class extends Exception {
7
+ static code = "E_RUNTIME_EXCEPTION";
8
+ static status = 500;
9
+ };
10
+
11
+ // src/exceptions/invalid_arguments_exception.ts
12
+ var InvalidArgumentsException = class extends Exception {
13
+ static code = "E_INVALID_ARGUMENTS_EXCEPTION";
14
+ static status = 500;
15
+ };
16
+
17
+ export {
18
+ RuntimeException,
19
+ InvalidArgumentsException
20
+ };
21
+ //# sourceMappingURL=chunk-PNT36FCE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/exceptions/runtime_exception.ts","../src/exceptions/invalid_arguments_exception.ts"],"sourcesContent":["/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { Exception } from '../exception.js'\n\nexport class RuntimeException extends Exception {\n static code = 'E_RUNTIME_EXCEPTION'\n static status = 500\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { Exception } from '../exception.js'\n\nexport class InvalidArgumentsException extends Exception {\n static code = 'E_INVALID_ARGUMENTS_EXCEPTION'\n static status = 500\n}\n"],"mappings":";;;;;AAWO,IAAM,mBAAN,cAA+B,UAAU;AAAA,EAC9C,OAAO,OAAO;AAAA,EACd,OAAO,SAAS;AAClB;;;ACHO,IAAM,4BAAN,cAAwC,UAAU;AAAA,EACvD,OAAO,OAAO;AAAA,EACd,OAAO,SAAS;AAClB;","names":[]}
@@ -0,0 +1,7 @@
1
+ // src/slash.ts
2
+ import { default as default2 } from "slash";
3
+
4
+ export {
5
+ default2 as default
6
+ };
7
+ //# sourceMappingURL=chunk-RRTFLKKC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/slash.ts"],"sourcesContent":["/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nexport { default as slash } from 'slash'\n"],"mappings":";AASA,SAAoB,WAAXA,gBAAwB;","names":["default"]}
package/build/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  export { Secret } from './src/secret.js';
3
2
  export { base64 } from './src/base64.js';
4
3
  export { compose } from './src/compose.js';
package/build/index.js CHANGED
@@ -3,8 +3,16 @@ import {
3
3
  milliseconds_default
4
4
  } from "./chunk-NKGAOHNN.js";
5
5
  import {
6
- main_default
7
- } from "./chunk-IOBSMUFC.js";
6
+ default as default2
7
+ } from "./chunk-RRTFLKKC.js";
8
+ import {
9
+ InvalidArgumentsException,
10
+ RuntimeException
11
+ } from "./chunk-PNT36FCE.js";
12
+ import {
13
+ Exception,
14
+ createError
15
+ } from "./chunk-GGIWJLUJ.js";
8
16
 
9
17
  // index.ts
10
18
  import { fileURLToPath as fileURLToPath3 } from "node:url";
@@ -55,62 +63,6 @@ function compose(superclass, ...mixins) {
55
63
  return mixins.reduce((c, mixin) => mixin(c), superclass);
56
64
  }
57
65
 
58
- // src/exception.ts
59
- import { format } from "node:util";
60
- var Exception = class extends Error {
61
- /**
62
- * Name of the class that raised the exception.
63
- */
64
- name;
65
- /**
66
- * A status code for the error. Usually helpful when converting errors
67
- * to HTTP responses.
68
- */
69
- status;
70
- constructor(message, options) {
71
- super(message, options);
72
- const ErrorConstructor = this.constructor;
73
- this.name = ErrorConstructor.name;
74
- this.message = message || ErrorConstructor.message || "";
75
- this.status = options?.status || ErrorConstructor.status || 500;
76
- const code = options?.code || ErrorConstructor.code;
77
- if (code !== void 0) {
78
- this.code = code;
79
- }
80
- const help = ErrorConstructor.help;
81
- if (help !== void 0) {
82
- this.help = help;
83
- }
84
- Error.captureStackTrace(this, ErrorConstructor);
85
- }
86
- get [Symbol.toStringTag]() {
87
- return this.constructor.name;
88
- }
89
- toString() {
90
- if (this.code) {
91
- return `${this.name} [${this.code}]: ${this.message}`;
92
- }
93
- return `${this.name}: ${this.message}`;
94
- }
95
- };
96
- function createError(message, code, status) {
97
- return class extends Exception {
98
- static message = message;
99
- static code = code;
100
- static status = status;
101
- constructor(args, options) {
102
- super(format(message, ...args || []), options);
103
- this.name = "Exception";
104
- }
105
- };
106
- }
107
-
108
- // src/exceptions/runtime_exception.ts
109
- var RuntimeException = class extends Exception {
110
- static code = "E_RUNTIME_EXCEPTION";
111
- static status = 500;
112
- };
113
-
114
66
  // src/import_default.ts
115
67
  async function importDefault(importFn, filePath) {
116
68
  const moduleExports = await importFn();
@@ -167,9 +119,6 @@ import { join } from "node:path";
167
119
  import { readdir, stat } from "node:fs/promises";
168
120
  import { fileURLToPath, pathToFileURL } from "node:url";
169
121
 
170
- // src/slash.ts
171
- import { default as default2 } from "slash";
172
-
173
122
  // src/natural_sort.ts
174
123
  function naturalSort(current, next) {
175
124
  return current.localeCompare(next, void 0, { numeric: true, sensitivity: "base" });
@@ -247,7 +196,7 @@ async function importFile(basePath, fileURL, values, options) {
247
196
  const filePath = fileURLToPath2(fileURL);
248
197
  const fileExtension = extname2(filePath);
249
198
  const collectionKey = relative(basePath, filePath).replace(new RegExp(`${fileExtension}$`), "").split(sep);
250
- const exportedValue = fileExtension === ".json" ? await import(fileURL, { assert: { type: "json" } }) : await import(fileURL);
199
+ const exportedValue = fileExtension === ".json" ? await import(fileURL, { with: { type: "json" } }) : await import(fileURL);
251
200
  lodash2.set(
252
201
  values,
253
202
  options.transformKeys ? options.transformKeys(collectionKey) : collectionKey,
@@ -267,6 +216,42 @@ async function fsImportAll(location, options) {
267
216
  return collection;
268
217
  }
269
218
 
219
+ // src/json/safe_parse.ts
220
+ import { parse } from "secure-json-parse";
221
+ function safeParse(jsonString, reviver) {
222
+ return parse(jsonString, reviver, {
223
+ protoAction: "remove",
224
+ constructorAction: "remove"
225
+ });
226
+ }
227
+
228
+ // src/json/safe_stringify.ts
229
+ import { configure } from "safe-stable-stringify";
230
+ var stringify = configure({
231
+ bigint: false,
232
+ circularValue: void 0,
233
+ deterministic: false
234
+ });
235
+ function jsonStringifyReplacer(replacer) {
236
+ return function(key, value) {
237
+ const val = replacer ? replacer.call(this, key, value) : value;
238
+ if (typeof val === "bigint") {
239
+ return val.toString();
240
+ }
241
+ return val;
242
+ };
243
+ }
244
+ function safeStringify(value, replacer, space) {
245
+ return stringify(value, jsonStringifyReplacer(replacer), space);
246
+ }
247
+
248
+ // src/json/main.ts
249
+ var json = {
250
+ safeParse,
251
+ safeStringify
252
+ };
253
+ var main_default = json;
254
+
270
255
  // src/message_builder.ts
271
256
  var MessageBuilder = class {
272
257
  #getExpiryDate(expiresIn) {
@@ -378,12 +363,6 @@ function safeEqual(trustedValue, userInput) {
378
363
  );
379
364
  }
380
365
 
381
- // src/exceptions/invalid_arguments_exception.ts
382
- var InvalidArgumentsException = class extends Exception {
383
- static code = "E_INVALID_ARGUMENTS_EXCEPTION";
384
- static status = 500;
385
- };
386
-
387
366
  // index.ts
388
367
  function getDirname(url) {
389
368
  return pathDirname(getFilename(url));
@@ -1 +1 @@
1
- {"version":3,"sources":["../index.ts","../src/secret.ts","../src/compose.ts","../src/exception.ts","../src/exceptions/runtime_exception.ts","../src/import_default.ts","../src/define_static_property.ts","../src/flatten.ts","../src/fs_import_all.ts","../src/fs_read_all.ts","../src/slash.ts","../src/natural_sort.ts","../src/is_script_file.ts","../src/message_builder.ts","../src/object_builder.ts","../src/safe_equal.ts","../src/exceptions/invalid_arguments_exception.ts"],"sourcesContent":["/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { fileURLToPath } from 'node:url'\nimport { join as pathJoin, dirname as pathDirname } from 'node:path'\n\nexport { Secret } from './src/secret.js'\nexport { base64 } from './src/base64.js'\nexport { compose } from './src/compose.js'\nexport { importDefault } from './src/import_default.js'\nexport { defineStaticProperty } from './src/define_static_property.js'\nexport { Exception, createError } from './src/exception.js'\nexport { flatten } from './src/flatten.js'\nexport { fsImportAll } from './src/fs_import_all.js'\nexport { fsReadAll } from './src/fs_read_all.js'\nexport { isScriptFile } from './src/is_script_file.js'\nexport { MessageBuilder } from './src/message_builder.js'\nexport { naturalSort } from './src/natural_sort.js'\nexport { ObjectBuilder } from './src/object_builder.js'\nexport { safeEqual } from './src/safe_equal.js'\nexport { slash } from './src/slash.js'\nexport { RuntimeException } from './src/exceptions/runtime_exception.js'\nexport { InvalidArgumentsException } from './src/exceptions/invalid_arguments_exception.js'\n\n/**\n * Get dirname for a given file path URL\n */\nexport function getDirname(url: string | URL) {\n return pathDirname(getFilename(url))\n}\n\n/**\n * Get filename for a given file path URL\n */\nexport function getFilename(url: string | URL) {\n return fileURLToPath(url)\n}\n\n/**\n * Join paths to a URL instance or a URL string. The return\n * value will be a file path without the `file:///` protocol.\n */\nexport function joinToURL(url: string | URL, ...str: string[]) {\n return pathJoin(getDirname(url), ...str)\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nconst REDACTED = '[redacted]'\n\n/**\n * Define a Secret value that hides itself from the logs or the console\n * statements.\n *\n * The idea is to prevent accedential leaking of sensitive information.\n * Idea borrowed from.\n * https://transcend.io/blog/keep-sensitive-values-out-of-your-logs-with-types\n */\nexport class Secret<T> {\n /** The secret value */\n #value: T\n #keyword: string\n\n constructor(value: T, redactedKeyword?: string) {\n this.#value = value\n this.#keyword = redactedKeyword || REDACTED\n }\n\n toJSON(): string {\n return this.#keyword\n }\n valueOf(): string {\n return this.#keyword\n }\n [Symbol.for('nodejs.util.inspect.custom')](): string {\n return this.#keyword\n }\n toLocaleString(): string {\n return this.#keyword\n }\n toString(): string {\n return this.#keyword\n }\n\n /**\n * Returns the original value\n */\n release(): T {\n return this.#value\n }\n\n /**\n * Transform the original value and create a new\n * secret from it.\n */\n map<R>(transformFunc: (value: T) => R): Secret<R> {\n return new Secret(transformFunc(this.#value))\n }\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport type { Constructor } from './types.js'\n\ninterface UnaryFunction<T, R> {\n (source: T): R\n}\n\n/**\n * Compose a class by applying mixins to it.\n * The code is inspired by https://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/, its\n * just that I have added the support for static types too.\n */\nexport function compose<T extends Constructor, A>(superclass: T, mixin: UnaryFunction<T, A>): A\nexport function compose<T extends Constructor, A, B>(\n superclass: T,\n mixin: UnaryFunction<T, A>,\n mixinB: UnaryFunction<A, B>\n): B\nexport function compose<T extends Constructor, A, B, C>(\n superclass: T,\n mixin: UnaryFunction<T, A>,\n mixinB: UnaryFunction<A, B>,\n mixinC: UnaryFunction<B, C>\n): C\nexport function compose<T extends Constructor, A, B, C, D>(\n superclass: T,\n mixin: UnaryFunction<T, A>,\n mixinB: UnaryFunction<A, B>,\n mixinC: UnaryFunction<B, C>,\n mixinD: UnaryFunction<C, D>\n): D\nexport function compose<T extends Constructor, A, B, C, D, E>(\n superclass: T,\n mixin: UnaryFunction<T, A>,\n mixinB: UnaryFunction<A, B>,\n mixinC: UnaryFunction<B, C>,\n mixinD: UnaryFunction<C, D>,\n mixinE: UnaryFunction<D, E>\n): E\nexport function compose<T extends Constructor, A, B, C, D, E, F>(\n superclass: T,\n mixin: UnaryFunction<T, A>,\n mixinB: UnaryFunction<A, B>,\n mixinC: UnaryFunction<B, C>,\n mixinD: UnaryFunction<C, D>,\n mixinF: UnaryFunction<E, F>\n): F\nexport function compose<T extends Constructor, A, B, C, D, E, F, G>(\n superclass: T,\n mixin: UnaryFunction<T, A>,\n mixinB: UnaryFunction<A, B>,\n mixinC: UnaryFunction<B, C>,\n mixinD: UnaryFunction<C, D>,\n mixinF: UnaryFunction<E, F>,\n mixinG: UnaryFunction<F, G>\n): G\nexport function compose<T extends Constructor, A, B, C, D, E, F, G, H>(\n superclass: T,\n mixin: UnaryFunction<T, A>,\n mixinB: UnaryFunction<A, B>,\n mixinC: UnaryFunction<B, C>,\n mixinD: UnaryFunction<C, D>,\n mixinF: UnaryFunction<E, F>,\n mixinG: UnaryFunction<F, G>,\n mixinH: UnaryFunction<G, H>\n): H\nexport function compose<T extends Constructor, A, B, C, D, E, F, G, H, I>(\n superclass: T,\n mixin: UnaryFunction<T, A>,\n mixinB: UnaryFunction<A, B>,\n mixinC: UnaryFunction<B, C>,\n mixinD: UnaryFunction<C, D>,\n mixinF: UnaryFunction<E, F>,\n mixinG: UnaryFunction<F, G>,\n mixinH: UnaryFunction<G, H>,\n mixinI: UnaryFunction<H, I>\n): I\nexport function compose<T extends Constructor, Mixins extends UnaryFunction<T, T>>(\n superclass: T,\n ...mixins: Mixins[]\n) {\n return mixins.reduce((c, mixin) => mixin(c), superclass)\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { format } from 'node:util'\n\n/**\n * Extended Error object with the option to set error `status` and `code`.\n * At AdonisJs, we prefer exceptions with proper error codes to handle\n * them without relying on message pattern matching.\n *\n * ```js\n * new Exception('message', 500, 'E_RUNTIME_EXCEPTION')\n * ```\n */\nexport class Exception extends Error {\n /**\n * Static properties to defined on the exception once\n * and then re-use them\n */\n declare static help?: string\n declare static code?: string\n declare static status?: number\n declare static message?: string\n\n /**\n * Name of the class that raised the exception.\n */\n name: string\n\n /**\n * Optional help description for the error. You can use it to define additional\n * human readable information for the error.\n */\n declare help?: string\n\n /**\n * A machine readable error code. This will allow the error handling logic\n * to narrow down exceptions based upon the error code.\n */\n declare code?: string\n\n /**\n * A status code for the error. Usually helpful when converting errors\n * to HTTP responses.\n */\n status: number\n\n constructor(message?: string, options?: ErrorOptions & { code?: string; status?: number }) {\n super(message, options)\n\n const ErrorConstructor = this.constructor as typeof Exception\n\n this.name = ErrorConstructor.name\n this.message = message || ErrorConstructor.message || ''\n this.status = options?.status || ErrorConstructor.status || 500\n\n const code = options?.code || ErrorConstructor.code\n if (code !== undefined) {\n this.code = code\n }\n\n const help = ErrorConstructor.help\n if (help !== undefined) {\n this.help = help\n }\n\n Error.captureStackTrace(this, ErrorConstructor)\n }\n\n get [Symbol.toStringTag]() {\n return this.constructor.name\n }\n\n toString() {\n if (this.code) {\n return `${this.name} [${this.code}]: ${this.message}`\n }\n return `${this.name}: ${this.message}`\n }\n}\n\n/**\n * Helper to create anonymous error classes\n */\nexport function createError<T extends any[] = never>(\n message: string,\n code: string,\n status?: number\n): typeof Exception & T extends never\n ? { new (args?: any, options?: ErrorOptions): Exception }\n : { new (args: T, options?: ErrorOptions): Exception } {\n return class extends Exception {\n static message = message\n static code = code\n static status = status\n\n constructor(args: T, options?: ErrorOptions) {\n super(format(message, ...(args || [])), options)\n this.name = 'Exception'\n }\n }\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { Exception } from '../exception.js'\n\nexport class RuntimeException extends Exception {\n static code = 'E_RUNTIME_EXCEPTION'\n static status = 500\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { RuntimeException } from './exceptions/runtime_exception.js'\n\n/**\n * Dynamically import a module and ensure it has a default export\n */\nexport async function importDefault<T extends object>(\n importFn: () => Promise<T>,\n filePath?: string\n): Promise<T extends { default: infer A } ? A : never> {\n const moduleExports = await importFn()\n\n /**\n * Make sure a default export exists\n */\n if (!('default' in moduleExports)) {\n const errorMessage = filePath\n ? `Missing \"export default\" in module \"${filePath}\"`\n : `Missing \"export default\" from lazy import \"${importFn}\"`\n\n throw new RuntimeException(errorMessage, {\n cause: {\n source: importFn,\n },\n })\n }\n\n return moduleExports.default as Promise<T extends { default: infer A } ? A : never>\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport lodash from '@poppinss/utils/lodash'\n\ntype Constructor = new (...args: any[]) => any\ntype AbstractConstructor = abstract new (...args: any[]) => any\n\n/**\n * Define static properties on a class with inheritance in play.\n */\nexport function defineStaticProperty<\n T extends Constructor | AbstractConstructor,\n Prop extends keyof T,\n>(\n self: T,\n propertyName: Prop,\n {\n initialValue,\n strategy,\n }: {\n initialValue: T[Prop]\n strategy: 'inherit' | 'define' | ((value: T[Prop]) => T[Prop])\n }\n) {\n if (!self.hasOwnProperty(propertyName)) {\n const value = self[propertyName]\n\n /**\n * Define the property as it is when the strategy is set\n * to \"define\". Or the value on the prototype chain\n * is set to undefined.\n */\n if (strategy === 'define' || value === undefined) {\n Object.defineProperty(self, propertyName, {\n value: initialValue,\n configurable: true,\n enumerable: true,\n writable: true,\n })\n return\n }\n\n Object.defineProperty(self, propertyName, {\n value: typeof strategy === 'function' ? strategy(value) : lodash.cloneDeep(value),\n configurable: true,\n enumerable: true,\n writable: true,\n })\n }\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { flattie } from 'flattie'\n\n/**\n * Recursively flatten an object/array.\n */\nexport function flatten<X = Record<string, any>, Y = unknown>(\n input: Y,\n glue?: string,\n keepNullish?: boolean\n): X {\n return flattie(input, glue, keepNullish)\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { fileURLToPath } from 'node:url'\nimport lodash from '@poppinss/utils/lodash'\nimport { extname, relative, sep } from 'node:path'\n\nimport { fsReadAll } from './fs_read_all.js'\nimport { ImportAllFilesOptions } from './types.js'\nimport { isScriptFile } from './is_script_file.js'\n\n/**\n * Import the file and update the values collection with the default\n * export.\n */\nasync function importFile(\n basePath: string,\n fileURL: string,\n values: any,\n options: ImportAllFilesOptions\n) {\n /**\n * Converting URL to file path\n */\n const filePath = fileURLToPath(fileURL)\n\n /**\n * Grab file extension\n */\n const fileExtension = extname(filePath)\n\n const collectionKey = relative(basePath, filePath) // Get file relative path\n .replace(new RegExp(`${fileExtension}$`), '') // Get rid of the file extension\n .split(sep) // Convert nested paths to an array of keys\n\n /**\n * Import module\n */\n const exportedValue =\n fileExtension === '.json'\n ? await import(fileURL, { assert: { type: 'json' } })\n : await import(fileURL)\n\n lodash.set(\n values,\n options.transformKeys ? options.transformKeys(collectionKey) : collectionKey,\n exportedValue.default ? exportedValue.default : { ...exportedValue }\n )\n}\n\n/**\n * Returns an array of file paths from the given location. You can\n * optionally filter and sort files by passing relevant options\n *\n * ```ts\n * await fsReadAll(new URL('./', import.meta.url))\n *\n * await fsReadAll(new URL('./', import.meta.url), {\n * filter: (filePath) => filePath.endsWith('.js')\n * })\n\n * await fsReadAll(new URL('./', import.meta.url), {\n * absolute: true,\n * unixPaths: true\n * })\n* ```\n */\nexport async function fsImportAll(\n location: string | URL,\n options?: ImportAllFilesOptions\n): Promise<any> {\n options = options || {}\n const collection: any = {}\n const normalizedLocation = typeof location === 'string' ? location : fileURLToPath(location)\n const files = await fsReadAll(normalizedLocation, {\n filter: isScriptFile,\n ...options,\n pathType: 'url',\n })\n\n /**\n * Parallelly import all the files and mutate the values collection\n */\n await Promise.all(files.map((file) => importFile(normalizedLocation, file, collection, options!)))\n\n return collection\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { join } from 'node:path'\nimport { readdir, stat } from 'node:fs/promises'\nimport { fileURLToPath, pathToFileURL } from 'node:url'\n\nimport { slash } from './slash.js'\nimport { naturalSort } from './natural_sort.js'\nimport { ReadAllFilesOptions } from './types.js'\n\n/**\n * Filter to remove dot files\n */\nfunction filterDotFiles(fileName: string) {\n return fileName[0] !== '.'\n}\n\n/**\n * Read all files from the directory recursively\n */\nasync function readFiles(\n root: string,\n files: string[],\n options: ReadAllFilesOptions,\n relativePath: string\n): Promise<void> {\n const location = join(root, relativePath)\n const stats = await stat(location)\n\n if (stats.isDirectory()) {\n let locationFiles = await readdir(location)\n\n await Promise.all(\n locationFiles.filter(filterDotFiles).map((file) => {\n return readFiles(root, files, options, join(relativePath, file))\n })\n )\n\n return\n }\n\n const pathType = options.pathType || 'relative'\n switch (pathType) {\n case 'relative':\n files.push(relativePath)\n break\n case 'absolute':\n files.push(location)\n break\n case 'unixRelative':\n files.push(slash(relativePath))\n break\n case 'unixAbsolute':\n files.push(slash(location))\n break\n case 'url':\n files.push(pathToFileURL(location).href)\n }\n}\n\n/**\n * Returns an array of file paths from the given location. You can\n * optionally filter and sort files by passing relevant options\n *\n * ```ts\n * await fsReadAll(new URL('./', import.meta.url))\n *\n * await fsReadAll(new URL('./', import.meta.url), {\n * filter: (filePath) => filePath.endsWith('.js')\n * })\n\n * await fsReadAll(new URL('./', import.meta.url), {\n * absolute: true,\n * unixPaths: true\n * })\n* ```\n */\nexport async function fsReadAll(\n location: string | URL,\n options?: ReadAllFilesOptions\n): Promise<string[]> {\n const normalizedLocation = typeof location === 'string' ? location : fileURLToPath(location)\n const normalizedOptions = Object.assign({ absolute: false, sort: naturalSort }, options)\n const files: string[] = []\n\n /**\n * Check to see if the root directory exists and ignore\n * error when \"ignoreMissingRoot\" is set to true\n */\n try {\n await stat(normalizedLocation)\n } catch (error) {\n if (normalizedOptions.ignoreMissingRoot) {\n return []\n }\n\n throw error\n }\n\n await readFiles(normalizedLocation, files, normalizedOptions, '')\n\n if (normalizedOptions.filter) {\n return files.filter(normalizedOptions.filter).sort(normalizedOptions.sort)\n }\n\n return files.sort(normalizedOptions.sort)\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nexport { default as slash } from 'slash'\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n/**\n * Perform natural sorting with \"Array.sort()\" method\n */\nexport function naturalSort(current: string, next: string) {\n return current.localeCompare(next, undefined, { numeric: true, sensitivity: 'base' })\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { extname } from 'node:path'\nconst JS_MODULES = ['.js', '.json', '.cjs', '.mjs']\n\n/**\n * Returns `true` when file ends with `.js`, `.json` or\n * `.ts` but not `.d.ts`.\n */\nexport function isScriptFile(filePath: string) {\n const ext = extname(filePath)\n\n if (JS_MODULES.includes(ext)) {\n return true\n }\n\n if (ext === '.ts' && !filePath.endsWith('.d.ts')) {\n return true\n }\n\n return false\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport json from './json/main.js'\nimport milliseconds from './string/milliseconds.js'\n\n/**\n * Message builder exposes an API to \"JSON.stringify\" values by\n * encoding purpose and expiry date inside them.\n *\n * The return value must be further encrypted to prevent tempering.\n */\nexport class MessageBuilder {\n #getExpiryDate(expiresIn?: string | number): undefined | Date {\n if (!expiresIn) {\n return undefined\n }\n\n const expiryMs = milliseconds.parse(expiresIn)\n return new Date(Date.now() + expiryMs)\n }\n\n /**\n * Returns a boolean telling, if message has been expired or not\n */\n #isExpired(message: any) {\n if (!message.expiryDate) {\n return false\n }\n\n const expiryDate = new Date(message.expiryDate)\n return Number.isNaN(expiryDate.getTime()) || expiryDate < new Date()\n }\n\n /**\n * Builds a message by encoding expiry date and purpose inside it.\n */\n build(message: any, expiresIn?: string | number, purpose?: string): string {\n const expiryDate = this.#getExpiryDate(expiresIn)\n return json.safeStringify({ message, purpose, expiryDate })!\n }\n\n /**\n * Verifies the message for expiry and purpose.\n */\n verify<T extends any>(message: any, purpose?: string): null | T {\n const parsed = json.safeParse(message)\n\n /**\n * After JSON.parse we do not receive a valid object\n */\n if (typeof parsed !== 'object' || !parsed) {\n return null\n }\n\n /**\n * Missing \".message\" property\n */\n if (!parsed.message) {\n return null\n }\n\n /**\n * Ensure purposes are same.\n */\n if (parsed.purpose !== purpose) {\n return null\n }\n\n /**\n * Ensure isn't expired\n */\n if (this.#isExpired(parsed)) {\n return null\n }\n\n return parsed.message\n }\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { OmitProperties } from './types.js'\n\n/**\n * A simple class to build an object incrementally. It is helpful when you\n * want to add properties to the object conditionally.\n *\n * Instead of writing\n * ```\n * const obj = {\n * ...(user.id ? { id: user.id } : {}),\n * ...(user.firstName && user.lastName ? { name: `${user.firstName} ${user.lastName}` } : {}),\n * }\n * ```\n *\n * You can write\n *\n * const obj = new ObjectBuilder()\n * .add('id', user.id)\n * .add(\n * 'fullName',\n * user.firstName && user.lastName ? `${user.firstName} ${user.lastName}` : undefined\n * )\n * .toObject()\n */\nexport class ObjectBuilder<\n ReturnType extends Record<string, any>,\n IgnoreNull extends boolean = false,\n> {\n #ignoreNull: boolean\n values: ReturnType\n\n constructor(initialValue: ReturnType, ignoreNull?: IgnoreNull) {\n this.values = initialValue\n this.#ignoreNull = ignoreNull === true ? true : false\n }\n\n /**\n * Add a key-value pair to the object\n *\n * - Undefined values are ignored\n * - Null values are ignored, when `ignoreNull` is set to true\n */\n add<Prop extends string>(key: Prop, value: undefined): this\n add<Prop extends string, Value>(\n key: Prop,\n value: Value\n ): ObjectBuilder<ReturnType & { [P in Prop]: Value }, IgnoreNull>\n add<Prop extends string, Value>(key: Prop, value: Value): this {\n if (value === undefined) {\n return this\n }\n\n if (this.#ignoreNull === true && value === null) {\n return this\n }\n\n ;(this.values as any)[key] = value\n return this\n }\n\n /**\n * Remove key from the object\n */\n remove<K extends keyof ReturnType>(key: K): this {\n delete this.values[key]\n return this\n }\n\n /**\n * Find if a value exists\n */\n has<K extends keyof ReturnType>(key: K): boolean {\n return this.get(key) !== undefined\n }\n\n /**\n * Get the existing value for a given key\n */\n get<K extends keyof ReturnType>(key: K): ReturnType[K] {\n return this.values[key]\n }\n\n /**\n * Get the underlying constructed object\n */\n toObject(): IgnoreNull extends true\n ? { [K in keyof OmitProperties<ReturnType, null>]: ReturnType[K] }\n : { [K in keyof ReturnType]: ReturnType[K] } {\n return this.values\n }\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { Buffer } from 'node:buffer'\nimport { timingSafeEqual } from 'node:crypto'\n\ntype BufferSafeValue =\n | ArrayBuffer\n | SharedArrayBuffer\n | number[]\n | string\n | { valueOf(): string | object }\n | { [Symbol.toPrimitive](hint: 'string'): string }\n\n/**\n * Compare two values to see if they are equal. The comparison is done in\n * a way to avoid timing-attacks.\n */\nexport function safeEqual<T extends BufferSafeValue, U extends BufferSafeValue>(\n trustedValue: T,\n userInput: U\n): boolean {\n if (typeof trustedValue === 'string' && typeof userInput === 'string') {\n /**\n * The length of the comparison value.\n */\n const trustedLength = Buffer.byteLength(trustedValue)\n\n /**\n * Expected value\n */\n const trustedValueBuffer = Buffer.alloc(trustedLength, 0, 'utf-8')\n trustedValueBuffer.write(trustedValue)\n\n /**\n * Actual value (taken from user input)\n */\n const userValueBuffer = Buffer.alloc(trustedLength, 0, 'utf-8')\n userValueBuffer.write(userInput)\n\n /**\n * Ensure values are same and also have same length\n */\n return (\n timingSafeEqual(trustedValueBuffer, userValueBuffer) &&\n trustedLength === Buffer.byteLength(userInput)\n )\n }\n\n return timingSafeEqual(\n Buffer.from(trustedValue as ArrayBuffer | SharedArrayBuffer),\n Buffer.from(userInput as ArrayBuffer | SharedArrayBuffer)\n )\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { Exception } from '../exception.js'\n\nexport class InvalidArgumentsException extends Exception {\n static code = 'E_INVALID_ARGUMENTS_EXCEPTION'\n static status = 500\n}\n"],"mappings":"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","names":["fileURLToPath","fileURLToPath","lodash","extname","default","default","fileURLToPath","extname","lodash","fileURLToPath"]}
1
+ {"version":3,"sources":["../index.ts","../src/secret.ts","../src/compose.ts","../src/import_default.ts","../src/define_static_property.ts","../src/flatten.ts","../src/fs_import_all.ts","../src/fs_read_all.ts","../src/natural_sort.ts","../src/is_script_file.ts","../src/json/safe_parse.ts","../src/json/safe_stringify.ts","../src/json/main.ts","../src/message_builder.ts","../src/object_builder.ts","../src/safe_equal.ts"],"sourcesContent":["/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { fileURLToPath } from 'node:url'\nimport { join as pathJoin, dirname as pathDirname } from 'node:path'\n\nexport { Secret } from './src/secret.js'\nexport { base64 } from './src/base64.js'\nexport { compose } from './src/compose.js'\nexport { importDefault } from './src/import_default.js'\nexport { defineStaticProperty } from './src/define_static_property.js'\nexport { Exception, createError } from './src/exception.js'\nexport { flatten } from './src/flatten.js'\nexport { fsImportAll } from './src/fs_import_all.js'\nexport { fsReadAll } from './src/fs_read_all.js'\nexport { isScriptFile } from './src/is_script_file.js'\nexport { MessageBuilder } from './src/message_builder.js'\nexport { naturalSort } from './src/natural_sort.js'\nexport { ObjectBuilder } from './src/object_builder.js'\nexport { safeEqual } from './src/safe_equal.js'\nexport { slash } from './src/slash.js'\nexport { RuntimeException } from './src/exceptions/runtime_exception.js'\nexport { InvalidArgumentsException } from './src/exceptions/invalid_arguments_exception.js'\n\n/**\n * Get dirname for a given file path URL\n */\nexport function getDirname(url: string | URL) {\n return pathDirname(getFilename(url))\n}\n\n/**\n * Get filename for a given file path URL\n */\nexport function getFilename(url: string | URL) {\n return fileURLToPath(url)\n}\n\n/**\n * Join paths to a URL instance or a URL string. The return\n * value will be a file path without the `file:///` protocol.\n */\nexport function joinToURL(url: string | URL, ...str: string[]) {\n return pathJoin(getDirname(url), ...str)\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nconst REDACTED = '[redacted]'\n\n/**\n * Define a Secret value that hides itself from the logs or the console\n * statements.\n *\n * The idea is to prevent accidental leaking of sensitive information.\n * Idea borrowed from.\n * https://transcend.io/blog/keep-sensitive-values-out-of-your-logs-with-types\n */\nexport class Secret<T> {\n /** The secret value */\n #value: T\n #keyword: string\n\n constructor(value: T, redactedKeyword?: string) {\n this.#value = value\n this.#keyword = redactedKeyword || REDACTED\n }\n\n toJSON(): string {\n return this.#keyword\n }\n valueOf(): string {\n return this.#keyword\n }\n [Symbol.for('nodejs.util.inspect.custom')](): string {\n return this.#keyword\n }\n toLocaleString(): string {\n return this.#keyword\n }\n toString(): string {\n return this.#keyword\n }\n\n /**\n * Returns the original value\n */\n release(): T {\n return this.#value\n }\n\n /**\n * Transform the original value and create a new\n * secret from it.\n */\n map<R>(transformFunc: (value: T) => R): Secret<R> {\n return new Secret(transformFunc(this.#value))\n }\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport type { Constructor } from './types.js'\n\ninterface UnaryFunction<T, R> {\n (source: T): R\n}\n\n/**\n * Compose a class by applying mixins to it.\n * The code is inspired by https://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/, its\n * just that I have added the support for static types too.\n */\nexport function compose<T extends Constructor, A>(superclass: T, mixin: UnaryFunction<T, A>): A\nexport function compose<T extends Constructor, A, B>(\n superclass: T,\n mixin: UnaryFunction<T, A>,\n mixinB: UnaryFunction<A, B>\n): B\nexport function compose<T extends Constructor, A, B, C>(\n superclass: T,\n mixin: UnaryFunction<T, A>,\n mixinB: UnaryFunction<A, B>,\n mixinC: UnaryFunction<B, C>\n): C\nexport function compose<T extends Constructor, A, B, C, D>(\n superclass: T,\n mixin: UnaryFunction<T, A>,\n mixinB: UnaryFunction<A, B>,\n mixinC: UnaryFunction<B, C>,\n mixinD: UnaryFunction<C, D>\n): D\nexport function compose<T extends Constructor, A, B, C, D, E>(\n superclass: T,\n mixin: UnaryFunction<T, A>,\n mixinB: UnaryFunction<A, B>,\n mixinC: UnaryFunction<B, C>,\n mixinD: UnaryFunction<C, D>,\n mixinE: UnaryFunction<D, E>\n): E\nexport function compose<T extends Constructor, A, B, C, D, E, F>(\n superclass: T,\n mixin: UnaryFunction<T, A>,\n mixinB: UnaryFunction<A, B>,\n mixinC: UnaryFunction<B, C>,\n mixinD: UnaryFunction<C, D>,\n mixinF: UnaryFunction<E, F>\n): F\nexport function compose<T extends Constructor, A, B, C, D, E, F, G>(\n superclass: T,\n mixin: UnaryFunction<T, A>,\n mixinB: UnaryFunction<A, B>,\n mixinC: UnaryFunction<B, C>,\n mixinD: UnaryFunction<C, D>,\n mixinF: UnaryFunction<E, F>,\n mixinG: UnaryFunction<F, G>\n): G\nexport function compose<T extends Constructor, A, B, C, D, E, F, G, H>(\n superclass: T,\n mixin: UnaryFunction<T, A>,\n mixinB: UnaryFunction<A, B>,\n mixinC: UnaryFunction<B, C>,\n mixinD: UnaryFunction<C, D>,\n mixinF: UnaryFunction<E, F>,\n mixinG: UnaryFunction<F, G>,\n mixinH: UnaryFunction<G, H>\n): H\nexport function compose<T extends Constructor, A, B, C, D, E, F, G, H, I>(\n superclass: T,\n mixin: UnaryFunction<T, A>,\n mixinB: UnaryFunction<A, B>,\n mixinC: UnaryFunction<B, C>,\n mixinD: UnaryFunction<C, D>,\n mixinF: UnaryFunction<E, F>,\n mixinG: UnaryFunction<F, G>,\n mixinH: UnaryFunction<G, H>,\n mixinI: UnaryFunction<H, I>\n): I\nexport function compose<T extends Constructor, Mixins extends UnaryFunction<T, T>>(\n superclass: T,\n ...mixins: Mixins[]\n) {\n return mixins.reduce((c, mixin) => mixin(c), superclass)\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { RuntimeException } from './exceptions/runtime_exception.js'\n\n/**\n * Dynamically import a module and ensure it has a default export\n */\nexport async function importDefault<T extends object>(\n importFn: () => Promise<T>,\n filePath?: string\n): Promise<T extends { default: infer A } ? A : never> {\n const moduleExports = await importFn()\n\n /**\n * Make sure a default export exists\n */\n if (!('default' in moduleExports)) {\n const errorMessage = filePath\n ? `Missing \"export default\" in module \"${filePath}\"`\n : `Missing \"export default\" from lazy import \"${importFn}\"`\n\n throw new RuntimeException(errorMessage, {\n cause: {\n source: importFn,\n },\n })\n }\n\n return moduleExports.default as Promise<T extends { default: infer A } ? A : never>\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport lodash from '@poppinss/utils/lodash'\n\ntype Constructor = new (...args: any[]) => any\ntype AbstractConstructor = abstract new (...args: any[]) => any\n\n/**\n * Define static properties on a class with inheritance in play.\n */\nexport function defineStaticProperty<\n T extends Constructor | AbstractConstructor,\n Prop extends keyof T,\n>(\n self: T,\n propertyName: Prop,\n {\n initialValue,\n strategy,\n }: {\n initialValue: T[Prop]\n strategy: 'inherit' | 'define' | ((value: T[Prop]) => T[Prop])\n }\n) {\n if (!self.hasOwnProperty(propertyName)) {\n const value = self[propertyName]\n\n /**\n * Define the property as it is when the strategy is set\n * to \"define\". Or the value on the prototype chain\n * is set to undefined.\n */\n if (strategy === 'define' || value === undefined) {\n Object.defineProperty(self, propertyName, {\n value: initialValue,\n configurable: true,\n enumerable: true,\n writable: true,\n })\n return\n }\n\n Object.defineProperty(self, propertyName, {\n value: typeof strategy === 'function' ? strategy(value) : lodash.cloneDeep(value),\n configurable: true,\n enumerable: true,\n writable: true,\n })\n }\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { flattie } from 'flattie'\n\n/**\n * Recursively flatten an object/array.\n */\nexport function flatten<X = Record<string, any>, Y = unknown>(\n input: Y,\n glue?: string,\n keepNullish?: boolean\n): X {\n return flattie(input, glue, keepNullish)\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { fileURLToPath } from 'node:url'\nimport lodash from '@poppinss/utils/lodash'\nimport { extname, relative, sep } from 'node:path'\n\nimport { fsReadAll } from './fs_read_all.js'\nimport { ImportAllFilesOptions } from './types.js'\nimport { isScriptFile } from './is_script_file.js'\n\n/**\n * Import the file and update the values collection with the default\n * export.\n */\nasync function importFile(\n basePath: string,\n fileURL: string,\n values: any,\n options: ImportAllFilesOptions\n) {\n /**\n * Converting URL to file path\n */\n const filePath = fileURLToPath(fileURL)\n\n /**\n * Grab file extension\n */\n const fileExtension = extname(filePath)\n\n const collectionKey = relative(basePath, filePath) // Get file relative path\n .replace(new RegExp(`${fileExtension}$`), '') // Get rid of the file extension\n .split(sep) // Convert nested paths to an array of keys\n\n /**\n * Import module\n */\n const exportedValue =\n fileExtension === '.json'\n ? await import(fileURL, { with: { type: 'json' } })\n : await import(fileURL)\n\n lodash.set(\n values,\n options.transformKeys ? options.transformKeys(collectionKey) : collectionKey,\n exportedValue.default ? exportedValue.default : { ...exportedValue }\n )\n}\n\n/**\n * Returns an array of file paths from the given location. You can\n * optionally filter and sort files by passing relevant options\n *\n * ```ts\n * await fsReadAll(new URL('./', import.meta.url))\n *\n * await fsReadAll(new URL('./', import.meta.url), {\n * filter: (filePath) => filePath.endsWith('.js')\n * })\n\n * await fsReadAll(new URL('./', import.meta.url), {\n * absolute: true,\n * unixPaths: true\n * })\n* ```\n */\nexport async function fsImportAll(\n location: string | URL,\n options?: ImportAllFilesOptions\n): Promise<any> {\n options = options || {}\n const collection: any = {}\n const normalizedLocation = typeof location === 'string' ? location : fileURLToPath(location)\n const files = await fsReadAll(normalizedLocation, {\n filter: isScriptFile,\n ...options,\n pathType: 'url',\n })\n\n /**\n * Parallelly import all the files and mutate the values collection\n */\n await Promise.all(files.map((file) => importFile(normalizedLocation, file, collection, options!)))\n\n return collection\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { join } from 'node:path'\nimport { readdir, stat } from 'node:fs/promises'\nimport { fileURLToPath, pathToFileURL } from 'node:url'\n\nimport { slash } from './slash.js'\nimport { naturalSort } from './natural_sort.js'\nimport { ReadAllFilesOptions } from './types.js'\n\n/**\n * Filter to remove dot files\n */\nfunction filterDotFiles(fileName: string) {\n return fileName[0] !== '.'\n}\n\n/**\n * Read all files from the directory recursively\n */\nasync function readFiles(\n root: string,\n files: string[],\n options: ReadAllFilesOptions,\n relativePath: string\n): Promise<void> {\n const location = join(root, relativePath)\n const stats = await stat(location)\n\n if (stats.isDirectory()) {\n let locationFiles = await readdir(location)\n\n await Promise.all(\n locationFiles.filter(filterDotFiles).map((file) => {\n return readFiles(root, files, options, join(relativePath, file))\n })\n )\n\n return\n }\n\n const pathType = options.pathType || 'relative'\n switch (pathType) {\n case 'relative':\n files.push(relativePath)\n break\n case 'absolute':\n files.push(location)\n break\n case 'unixRelative':\n files.push(slash(relativePath))\n break\n case 'unixAbsolute':\n files.push(slash(location))\n break\n case 'url':\n files.push(pathToFileURL(location).href)\n }\n}\n\n/**\n * Returns an array of file paths from the given location. You can\n * optionally filter and sort files by passing relevant options\n *\n * ```ts\n * await fsReadAll(new URL('./', import.meta.url))\n *\n * await fsReadAll(new URL('./', import.meta.url), {\n * filter: (filePath) => filePath.endsWith('.js')\n * })\n\n * await fsReadAll(new URL('./', import.meta.url), {\n * absolute: true,\n * unixPaths: true\n * })\n* ```\n */\nexport async function fsReadAll(\n location: string | URL,\n options?: ReadAllFilesOptions\n): Promise<string[]> {\n const normalizedLocation = typeof location === 'string' ? location : fileURLToPath(location)\n const normalizedOptions = Object.assign({ absolute: false, sort: naturalSort }, options)\n const files: string[] = []\n\n /**\n * Check to see if the root directory exists and ignore\n * error when \"ignoreMissingRoot\" is set to true\n */\n try {\n await stat(normalizedLocation)\n } catch (error) {\n if (normalizedOptions.ignoreMissingRoot) {\n return []\n }\n\n throw error\n }\n\n await readFiles(normalizedLocation, files, normalizedOptions, '')\n\n if (normalizedOptions.filter) {\n return files.filter(normalizedOptions.filter).sort(normalizedOptions.sort)\n }\n\n return files.sort(normalizedOptions.sort)\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n/**\n * Perform natural sorting with \"Array.sort()\" method\n */\nexport function naturalSort(current: string, next: string) {\n return current.localeCompare(next, undefined, { numeric: true, sensitivity: 'base' })\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { extname } from 'node:path'\nconst JS_MODULES = ['.js', '.json', '.cjs', '.mjs']\n\n/**\n * Returns `true` when file ends with `.js`, `.json` or\n * `.ts` but not `.d.ts`.\n */\nexport function isScriptFile(filePath: string) {\n const ext = extname(filePath)\n\n if (JS_MODULES.includes(ext)) {\n return true\n }\n\n if (ext === '.ts' && !filePath.endsWith('.d.ts')) {\n return true\n }\n\n return false\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { parse } from 'secure-json-parse'\nimport { JSONReviver } from '../types.js'\n\n/**\n * A drop-in replacement for JSON.parse with prototype poisoning protection.\n */\nexport function safeParse(jsonString: string, reviver?: JSONReviver): any {\n return parse(jsonString, reviver, {\n protoAction: 'remove',\n constructorAction: 'remove',\n })\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { configure } from 'safe-stable-stringify'\nimport { JSONReplacer } from '../types.js'\n\nconst stringify = configure({\n bigint: false,\n circularValue: undefined,\n deterministic: false,\n})\n\n/**\n * Replacer to handle custom data types.\n *\n * - Bigints are converted to string\n */\nfunction jsonStringifyReplacer(replacer?: JSONReplacer): JSONReplacer {\n return function (key, value) {\n const val = replacer ? replacer.call(this, key, value) : value\n\n if (typeof val === 'bigint') {\n return val.toString()\n }\n\n return val\n }\n}\n\n/**\n * String Javascript values to a JSON string. Handles circular\n * references and bigints\n */\nexport function safeStringify(\n value: any,\n replacer?: JSONReplacer,\n space?: string | number\n): string | undefined {\n return stringify(value, jsonStringifyReplacer(replacer), space)\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { safeParse } from './safe_parse.js'\nimport { safeStringify } from './safe_stringify.js'\n\nconst json = {\n safeParse,\n safeStringify,\n}\n\nexport default json\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport json from './json/main.js'\nimport milliseconds from './string/milliseconds.js'\n\n/**\n * Message builder exposes an API to \"JSON.stringify\" values by\n * encoding purpose and expiry date inside them.\n *\n * The return value must be further encrypted to prevent tempering.\n */\nexport class MessageBuilder {\n #getExpiryDate(expiresIn?: string | number): undefined | Date {\n if (!expiresIn) {\n return undefined\n }\n\n const expiryMs = milliseconds.parse(expiresIn)\n return new Date(Date.now() + expiryMs)\n }\n\n /**\n * Returns a boolean telling, if message has been expired or not\n */\n #isExpired(message: any) {\n if (!message.expiryDate) {\n return false\n }\n\n const expiryDate = new Date(message.expiryDate)\n return Number.isNaN(expiryDate.getTime()) || expiryDate < new Date()\n }\n\n /**\n * Builds a message by encoding expiry date and purpose inside it.\n */\n build(message: any, expiresIn?: string | number, purpose?: string): string {\n const expiryDate = this.#getExpiryDate(expiresIn)\n return json.safeStringify({ message, purpose, expiryDate })!\n }\n\n /**\n * Verifies the message for expiry and purpose.\n */\n verify<T extends any>(message: any, purpose?: string): null | T {\n const parsed = json.safeParse(message)\n\n /**\n * After JSON.parse we do not receive a valid object\n */\n if (typeof parsed !== 'object' || !parsed) {\n return null\n }\n\n /**\n * Missing \".message\" property\n */\n if (!parsed.message) {\n return null\n }\n\n /**\n * Ensure purposes are same.\n */\n if (parsed.purpose !== purpose) {\n return null\n }\n\n /**\n * Ensure isn't expired\n */\n if (this.#isExpired(parsed)) {\n return null\n }\n\n return parsed.message\n }\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { OmitProperties } from './types.js'\n\n/**\n * A simple class to build an object incrementally. It is helpful when you\n * want to add properties to the object conditionally.\n *\n * Instead of writing\n * ```\n * const obj = {\n * ...(user.id ? { id: user.id } : {}),\n * ...(user.firstName && user.lastName ? { name: `${user.firstName} ${user.lastName}` } : {}),\n * }\n * ```\n *\n * You can write\n *\n * const obj = new ObjectBuilder()\n * .add('id', user.id)\n * .add(\n * 'fullName',\n * user.firstName && user.lastName ? `${user.firstName} ${user.lastName}` : undefined\n * )\n * .toObject()\n */\nexport class ObjectBuilder<\n ReturnType extends Record<string, any>,\n IgnoreNull extends boolean = false,\n> {\n #ignoreNull: boolean\n values: ReturnType\n\n constructor(initialValue: ReturnType, ignoreNull?: IgnoreNull) {\n this.values = initialValue\n this.#ignoreNull = ignoreNull === true ? true : false\n }\n\n /**\n * Add a key-value pair to the object\n *\n * - Undefined values are ignored\n * - Null values are ignored, when `ignoreNull` is set to true\n */\n add<Prop extends string>(key: Prop, value: undefined): this\n add<Prop extends string, Value>(\n key: Prop,\n value: Value\n ): ObjectBuilder<ReturnType & { [P in Prop]: Value }, IgnoreNull>\n add<Prop extends string, Value>(key: Prop, value: Value): this {\n if (value === undefined) {\n return this\n }\n\n if (this.#ignoreNull === true && value === null) {\n return this\n }\n\n ;(this.values as any)[key] = value\n return this\n }\n\n /**\n * Remove key from the object\n */\n remove<K extends keyof ReturnType>(key: K): this {\n delete this.values[key]\n return this\n }\n\n /**\n * Find if a value exists\n */\n has<K extends keyof ReturnType>(key: K): boolean {\n return this.get(key) !== undefined\n }\n\n /**\n * Get the existing value for a given key\n */\n get<K extends keyof ReturnType>(key: K): ReturnType[K] {\n return this.values[key]\n }\n\n /**\n * Get the underlying constructed object\n */\n toObject(): IgnoreNull extends true\n ? { [K in keyof OmitProperties<ReturnType, null>]: ReturnType[K] }\n : { [K in keyof ReturnType]: ReturnType[K] } {\n return this.values\n }\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { Buffer } from 'node:buffer'\nimport { timingSafeEqual } from 'node:crypto'\n\ntype BufferSafeValue =\n | ArrayBuffer\n | SharedArrayBuffer\n | number[]\n | string\n | { valueOf(): string | object }\n | { [Symbol.toPrimitive](hint: 'string'): string }\n\n/**\n * Compare two values to see if they are equal. The comparison is done in\n * a way to avoid timing-attacks.\n */\nexport function safeEqual<T extends BufferSafeValue, U extends BufferSafeValue>(\n trustedValue: T,\n userInput: U\n): boolean {\n if (typeof trustedValue === 'string' && typeof userInput === 'string') {\n /**\n * The length of the comparison value.\n */\n const trustedLength = Buffer.byteLength(trustedValue)\n\n /**\n * Expected value\n */\n const trustedValueBuffer = Buffer.alloc(trustedLength, 0, 'utf-8')\n trustedValueBuffer.write(trustedValue)\n\n /**\n * Actual value (taken from user input)\n */\n const userValueBuffer = Buffer.alloc(trustedLength, 0, 'utf-8')\n userValueBuffer.write(userInput)\n\n /**\n * Ensure values are same and also have same length\n */\n return (\n timingSafeEqual(trustedValueBuffer, userValueBuffer) &&\n trustedLength === Buffer.byteLength(userInput)\n )\n }\n\n return timingSafeEqual(\n Buffer.from(trustedValue as ArrayBuffer | SharedArrayBuffer),\n Buffer.from(userInput as ArrayBuffer | SharedArrayBuffer)\n )\n}\n"],"mappings":"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","names":["fileURLToPath","fileURLToPath","lodash","extname","default","fileURLToPath","extname","lodash","fileURLToPath"]}
@@ -3,35 +3,37 @@
3
3
  * Lodash (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
4
4
  * Build: `lodash include="pick,omit,has,get,set,unset,mergeWith,merge,size,clone,cloneDeep,toPath" --production`
5
5
  */
6
- ;(function(){function t(t,n,r){switch(r.length){case 0:return t.call(n);case 1:return t.call(n,r[0]);case 2:return t.call(n,r[0],r[1]);case 3:return t.call(n,r[0],r[1],r[2])}return t.apply(n,r)}function n(t,n){for(var r=-1,e=null==t?0:t.length;++r<e&&n(t[r],r,t)!==false;);return t}function r(t,n){for(var r=-1,e=null==t?0:t.length,u=0,o=[];++r<e;){var i=t[r];n(i,r,t)&&(o[u++]=i)}return o}function e(t,n){for(var r=-1,e=null==t?0:t.length,u=Array(e);++r<e;)u[r]=n(t[r],r,t);return u}function u(t,n){for(var r=-1,e=n.length,u=t.length;++r<e;)t[u+r]=n[r];
7
- return t}function o(t){return function(n){return null==n?In:n[t]}}function i(t,n){for(var r=-1,e=Array(t);++r<t;)e[r]=n(r);return e}function c(t){return function(n){return t(n)}}function f(t,n){return null==t?In:t[n]}function a(t){return Kr.test(t)}function l(t,n){return function(r){return t(n(r))}}function s(t,n){return"__proto__"==n?In:t[n]}function h(t){return a(t)?p(t):ae(t)}function p(t){for(var n=Jr.lastIndex=0;Jr.test(t);)++n;return n}function y(){}function v(t){var n=-1,r=null==t?0:t.length;
8
- for(this.clear();++n<r;){var e=t[n];this.set(e[0],e[1])}}function b(){this.__data__=De?De(null):{},this.size=0}function _(t){var n=this.has(t)&&delete this.__data__[t];return this.size-=n?1:0,n}function g(t){var n=this.__data__;if(De){var r=n[t];return r===Mn?In:r}return ve.call(n,t)?n[t]:In}function d(t){var n=this.__data__;return De?n[t]!==In:ve.call(n,t)}function j(t,n){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=De&&n===In?Mn:n,this}function w(t){var n=-1,r=null==t?0:t.length;for(this.clear();++n<r;){
9
- var e=t[n];this.set(e[0],e[1])}}function O(){this.__data__=[],this.size=0}function m(t){var n=this.__data__,r=N(n,t);return!(r<0)&&(r==n.length-1?n.pop():Se.call(n,r,1),--this.size,true)}function A(t){var n=this.__data__,r=N(n,t);return r<0?In:n[r][1]}function z(t){return N(this.__data__,t)>-1}function x(t,n){var r=this.__data__,e=N(r,t);return e<0?(++this.size,r.push([t,n])):r[e][1]=n,this}function S(t){var n=-1,r=null==t?0:t.length;for(this.clear();++n<r;){var e=t[n];this.set(e[0],e[1])}}function k(){
10
- this.size=0,this.__data__={hash:new v,map:new(Ue||w),string:new v}}function E(t){var n=$t(this,t).delete(t);return this.size-=n?1:0,n}function P(t){return $t(this,t).get(t)}function I(t){return $t(this,t).has(t)}function $(t,n){var r=$t(this,t),e=r.size;return r.set(t,n),this.size+=r.size==e?0:1,this}function F(t){this.size=(this.__data__=new w(t)).size}function L(){this.__data__=new w,this.size=0}function M(t){var n=this.__data__,r=n.delete(t);return this.size=n.size,r}function T(t){return this.__data__.get(t);
11
- }function U(t){return this.__data__.has(t)}function B(t,n){var r=this.__data__;if(r instanceof w){var e=r.__data__;if(!Ue||e.length<Fn-1)return e.push([t,n]),this.size=++r.size,this;r=this.__data__=new S(e)}return r.set(t,n),this.size=r.size,this}function C(t,n){var r=ou(t),e=!r&&uu(t),u=!r&&!e&&iu(t),o=!r&&!e&&!u&&au(t),c=r||e||u||o,f=c?i(t.length,String):[],a=f.length;for(var l in t)!n&&!ve.call(t,l)||c&&("length"==l||u&&("offset"==l||"parent"==l)||o&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||Rt(l,a))||f.push(l);
12
- return f}function R(t,n,r){(r===In||cn(t[n],r))&&(r!==In||n in t)||q(t,n,r)}function D(t,n,r){var e=t[n];ve.call(t,n)&&cn(e,r)&&(r!==In||n in t)||q(t,n,r)}function N(t,n){for(var r=t.length;r--;)if(cn(t[r][0],n))return r;return-1}function V(t,n){return t&&mt(n,On(n),t)}function W(t,n){return t&&mt(n,mn(n),t)}function q(t,n,r){"__proto__"==n&&Pe?Pe(t,n,{configurable:true,enumerable:true,value:r,writable:true}):t[n]=r}function G(t,r,e,u,o,i){var c,f=r&Un,a=r&Bn,l=r&Cn;if(e&&(c=o?e(t,u,o,i):e(t)),c!==In)return c;
13
- if(!hn(t))return t;var s=ou(t);if(s){if(c=Tt(t),!f)return Ot(t,c)}else{var h=nu(t),p=h==Qn||h==Xn;if(iu(t))return bt(t,f);if(h==nr||h==Wn||p&&!o){if(c=a||p?{}:Ut(t),!f)return a?zt(t,W(c,t)):At(t,V(c,t))}else{if(!Xr[h])return o?t:{};c=Bt(t,h,f)}}i||(i=new F);var y=i.get(t);if(y)return y;if(i.set(t,c),fu(t))return t.forEach(function(n){c.add(G(n,r,e,n,t,i))}),c;if(cu(t))return t.forEach(function(n,u){c.set(u,G(n,r,e,u,t,i))}),c;var v=l?a?It:Pt:a?mn:On,b=s?In:v(t);return n(b||t,function(n,u){b&&(u=n,
14
- n=t[u]),D(c,u,G(n,r,e,u,t,i))}),c}function H(t,n,r,e,o){var i=-1,c=t.length;for(r||(r=Ct),o||(o=[]);++i<c;){var f=t[i];n>0&&r(f)?n>1?H(f,n-1,r,e,o):u(o,f):e||(o[o.length]=f)}return o}function J(t,n){n=vt(n,t);for(var r=0,e=n.length;null!=t&&r<e;)t=t[Yt(n[r++])];return r&&r==e?t:In}function K(t,n,r){var e=n(t);return ou(t)?e:u(e,r(t))}function Q(t){return null==t?t===In?fr:tr:Ee&&Ee in Object(t)?Lt(t):Jt(t)}function X(t,n){return null!=t&&ve.call(t,n)}function Y(t,n){return null!=t&&n in Object(t);
15
- }function Z(t){return pn(t)&&Q(t)==Wn}function tt(t){return pn(t)&&nu(t)==Yn}function nt(t){return!(!hn(t)||Wt(t))&&(ln(t)?de:Sr).test(Zt(t))}function rt(t){return pn(t)&&nu(t)==or}function et(t){return pn(t)&&sn(t.length)&&!!Qr[Q(t)]}function ut(t){if(!qt(t))return Fe(t);var n=[];for(var r in Object(t))ve.call(t,r)&&"constructor"!=r&&n.push(r);return n}function ot(t){if(!hn(t))return Ht(t);var n=qt(t),r=[];for(var e in t)("constructor"!=e||!n&&ve.call(t,e))&&r.push(e);return r}function it(t,n,r,e,u){
16
- t!==n&&Xe(n,function(o,i){if(hn(o))u||(u=new F),ct(t,n,i,r,it,e,u);else{var c=e?e(s(t,i),o,i+"",t,n,u):In;c===In&&(c=o),R(t,i,c)}},mn)}function ct(t,n,r,e,u,o,i){var c=s(t,r),f=s(n,r),a=i.get(f);if(a)return R(t,r,a),In;var l=o?o(c,f,r+"",t,n,i):In,h=l===In;if(h){var p=ou(f),y=!p&&iu(f),v=!p&&!y&&au(f);l=f,p||y||v?ou(c)?l=c:an(c)?l=Ot(c):y?(h=false,l=bt(f,true)):v?(h=false,l=wt(f,true)):l=[]:yn(f)||uu(f)?(l=c,uu(c)?l=_n(c):(!hn(c)||e&&ln(c))&&(l=Ut(f))):h=false}h&&(i.set(f,l),u(l,f,e,o,i),i.delete(f)),R(t,r,l);
17
- }function ft(t,n){return at(t,n,function(n,r){return wn(t,r)})}function at(t,n,r){for(var e=-1,u=n.length,o={};++e<u;){var i=n[e],c=J(t,i);r(c,i)&&st(o,vt(i,t),c)}return o}function lt(t,n){return ru(Kt(t,n,Sn),t+"")}function st(t,n,r,e){if(!hn(t))return t;n=vt(n,t);for(var u=-1,o=n.length,i=o-1,c=t;null!=c&&++u<o;){var f=Yt(n[u]),a=r;if(u!=i){var l=c[f];a=e?e(l,f,c):In,a===In&&(a=hn(l)?l:Rt(n[u+1])?[]:{})}D(c,f,a),c=c[f]}return t}function ht(t,n,r){var e=-1,u=t.length;n<0&&(n=-n>u?0:u+n),r=r>u?u:r,
18
- r<0&&(r+=u),u=n>r?0:r-n>>>0,n>>>=0;for(var o=Array(u);++e<u;)o[e]=t[e+n];return o}function pt(t){if(typeof t=="string")return t;if(ou(t))return e(t,pt)+"";if(bn(t))return Ke?Ke.call(t):"";var n=t+"";return"0"==n&&1/t==-Nn?"-0":n}function yt(t,n){return n=vt(n,t),t=Qt(t,n),null==t||delete t[Yt(nn(n))]}function vt(t,n){return ou(t)?t:Nt(t,n)?[t]:eu(gn(t))}function bt(t,n){if(n)return t.slice();var r=t.length,e=me?me(r):new t.constructor(r);return t.copy(e),e}function _t(t){var n=new t.constructor(t.byteLength);
19
- return new Oe(n).set(new Oe(t)),n}function gt(t,n){return new t.constructor(n?_t(t.buffer):t.buffer,t.byteOffset,t.byteLength)}function dt(t){var n=new t.constructor(t.source,xr.exec(t));return n.lastIndex=t.lastIndex,n}function jt(t){return Je?Object(Je.call(t)):{}}function wt(t,n){return new t.constructor(n?_t(t.buffer):t.buffer,t.byteOffset,t.length)}function Ot(t,n){var r=-1,e=t.length;for(n||(n=Array(e));++r<e;)n[r]=t[r];return n}function mt(t,n,r,e){var u=!r;r||(r={});for(var o=-1,i=n.length;++o<i;){
20
- var c=n[o],f=e?e(r[c],t[c],c,r,t):In;f===In&&(f=t[c]),u?q(r,c,f):D(r,c,f)}return r}function At(t,n){return mt(t,Ze(t),n)}function zt(t,n){return mt(t,tu(t),n)}function xt(t){return lt(function(n,r){var e=-1,u=r.length,o=u>1?r[u-1]:In,i=u>2?r[2]:In;for(o=t.length>3&&typeof o=="function"?(u--,o):In,i&&Dt(r[0],r[1],i)&&(o=u<3?In:o,u=1),n=Object(n);++e<u;){var c=r[e];c&&t(n,c,e,o)}return n})}function St(t){return function(n,r,e){for(var u=-1,o=Object(n),i=e(n),c=i.length;c--;){var f=i[t?c:++u];if(r(o[f],f,o)===false)break;
21
- }return n}}function kt(t){return yn(t)?In:t}function Et(t){return ru(Kt(t,In,tn),t+"")}function Pt(t){return K(t,On,Ze)}function It(t){return K(t,mn,tu)}function $t(t,n){var r=t.__data__;return Vt(n)?r[typeof n=="string"?"string":"hash"]:r.map}function Ft(t,n){var r=f(t,n);return nt(r)?r:In}function Lt(t){var n=ve.call(t,Ee),r=t[Ee];try{t[Ee]=In;var e=true}catch(t){}var u=_e.call(t);return e&&(n?t[Ee]=r:delete t[Ee]),u}function Mt(t,n,r){n=vt(n,t);for(var e=-1,u=n.length,o=false;++e<u;){var i=Yt(n[e]);
22
- if(!(o=null!=t&&r(t,i)))break;t=t[i]}return o||++e!=u?o:(u=null==t?0:t.length,!!u&&sn(u)&&Rt(i,u)&&(ou(t)||uu(t)))}function Tt(t){var n=t.length,r=new t.constructor(n);return n&&"string"==typeof t[0]&&ve.call(t,"index")&&(r.index=t.index,r.input=t.input),r}function Ut(t){return typeof t.constructor!="function"||qt(t)?{}:Qe(Ae(t))}function Bt(t,n,r){var e=t.constructor;switch(n){case lr:return _t(t);case Hn:case Jn:return new e(+t);case sr:return gt(t,r);case hr:case pr:case yr:case vr:case br:case _r:
23
- case gr:case dr:case jr:return wt(t,r);case Yn:return new e;case Zn:case ir:return new e(t);case ur:return dt(t);case or:return new e;case cr:return jt(t)}}function Ct(t){return ou(t)||uu(t)||!!(ke&&t&&t[ke])}function Rt(t,n){var r=typeof t;return n=null==n?Vn:n,!!n&&("number"==r||"symbol"!=r&&kr.test(t))&&t>-1&&t%1==0&&t<n}function Dt(t,n,r){if(!hn(r))return false;var e=typeof n;return!!("number"==e?fn(r)&&Rt(n,r.length):"string"==e&&n in r)&&cn(r[n],t)}function Nt(t,n){if(ou(t))return false;var r=typeof t;
24
- return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=t&&!bn(t))||(Or.test(t)||!wr.test(t)||null!=n&&t in Object(n))}function Vt(t){var n=typeof t;return"string"==n||"number"==n||"symbol"==n||"boolean"==n?"__proto__"!==t:null===t}function Wt(t){return!!be&&be in t}function qt(t){var n=t&&t.constructor;return t===(typeof n=="function"&&n.prototype||he)}function Gt(t){var n=en(t,function(t){return r.size===Tn&&r.clear(),t}),r=n.cache;return n}function Ht(t){var n=[];if(null!=t)for(var r in Object(t))n.push(r);
25
- return n}function Jt(t){return _e.call(t)}function Kt(n,r,e){return r=Le(r===In?n.length-1:r,0),function(){for(var u=arguments,o=-1,i=Le(u.length-r,0),c=Array(i);++o<i;)c[o]=u[r+o];o=-1;for(var f=Array(r+1);++o<r;)f[o]=u[o];return f[r]=e(c),t(n,this,f)}}function Qt(t,n){return n.length<2?t:J(t,ht(n,0,-1))}function Xt(t){var n=0,r=0;return function(){var e=Me(),u=Dn-(e-r);if(r=e,u>0){if(++n>=Rn)return arguments[0]}else n=0;return t.apply(In,arguments)}}function Yt(t){if(typeof t=="string"||bn(t))return t;
26
- var n=t+"";return"0"==n&&1/t==-Nn?"-0":n}function Zt(t){if(null!=t){try{return ye.call(t)}catch(t){}try{return t+""}catch(t){}}return""}function tn(t){return(null==t?0:t.length)?H(t,1):[]}function nn(t){var n=null==t?0:t.length;return n?t[n-1]:In}function rn(t){if(null==t)return 0;if(fn(t))return vn(t)?h(t):t.length;var n=nu(t);return n==Yn||n==or?t.size:ut(t).length}function en(t,n){if(typeof t!="function"||null!=n&&typeof n!="function")throw new TypeError(Ln);var r=function(){var e=arguments,u=n?n.apply(this,e):e[0],o=r.cache;
27
- if(o.has(u))return o.get(u);var i=t.apply(this,e);return r.cache=o.set(u,i)||o,i};return r.cache=new(en.Cache||S),r}function un(t){return G(t,Cn)}function on(t){return G(t,Un|Cn)}function cn(t,n){return t===n||t!==t&&n!==n}function fn(t){return null!=t&&sn(t.length)&&!ln(t)}function an(t){return pn(t)&&fn(t)}function ln(t){if(!hn(t))return false;var n=Q(t);return n==Qn||n==Xn||n==Gn||n==er}function sn(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=Vn}function hn(t){var n=typeof t;return null!=t&&("object"==n||"function"==n);
28
- }function pn(t){return null!=t&&typeof t=="object"}function yn(t){if(!pn(t)||Q(t)!=nr)return false;var n=Ae(t);if(null===n)return true;var r=ve.call(n,"constructor")&&n.constructor;return typeof r=="function"&&r instanceof r&&ye.call(r)==ge}function vn(t){return typeof t=="string"||!ou(t)&&pn(t)&&Q(t)==ir}function bn(t){return typeof t=="symbol"||pn(t)&&Q(t)==cr}function _n(t){return mt(t,mn(t))}function gn(t){return null==t?"":pt(t)}function dn(t,n,r){var e=null==t?In:J(t,n);return e===In?r:e}function jn(t,n){
29
- return null!=t&&Mt(t,n,X)}function wn(t,n){return null!=t&&Mt(t,n,Y)}function On(t){return fn(t)?C(t):ut(t)}function mn(t){return fn(t)?C(t,true):ot(t)}function An(t,n,r){return null==t?t:st(t,n,r)}function zn(t,n){return null==t||yt(t,n)}function xn(t){return function(){return t}}function Sn(t){return t}function kn(){return[]}function En(){return false}function Pn(t){return ou(t)?e(t,Yt):bn(t)?[t]:Ot(eu(gn(t)))}var In,$n="4.17.5",Fn=200,Ln="Expected a function",Mn="__lodash_hash_undefined__",Tn=500,Un=1,Bn=2,Cn=4,Rn=800,Dn=16,Nn=1/0,Vn=9007199254740991,Wn="[object Arguments]",qn="[object Array]",Gn="[object AsyncFunction]",Hn="[object Boolean]",Jn="[object Date]",Kn="[object Error]",Qn="[object Function]",Xn="[object GeneratorFunction]",Yn="[object Map]",Zn="[object Number]",tr="[object Null]",nr="[object Object]",rr="[object Promise]",er="[object Proxy]",ur="[object RegExp]",or="[object Set]",ir="[object String]",cr="[object Symbol]",fr="[object Undefined]",ar="[object WeakMap]",lr="[object ArrayBuffer]",sr="[object DataView]",hr="[object Float32Array]",pr="[object Float64Array]",yr="[object Int8Array]",vr="[object Int16Array]",br="[object Int32Array]",_r="[object Uint8Array]",gr="[object Uint8ClampedArray]",dr="[object Uint16Array]",jr="[object Uint32Array]",wr=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Or=/^\w*$/,mr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ar=/[\\^$.*+?()[\]{}|]/g,zr=/\\(\\)?/g,xr=/\w*$/,Sr=/^\[object .+?Constructor\]$/,kr=/^(?:0|[1-9]\d*)$/,Er="\\ud800-\\udfff",Pr="\\u0300-\\u036f",Ir="\\ufe20-\\ufe2f",$r="\\u20d0-\\u20ff",Fr=Pr+Ir+$r,Lr="\\ufe0e\\ufe0f",Mr="["+Er+"]",Tr="["+Fr+"]",Ur="\\ud83c[\\udffb-\\udfff]",Br="(?:"+Tr+"|"+Ur+")",Cr="[^"+Er+"]",Rr="(?:\\ud83c[\\udde6-\\uddff]){2}",Dr="[\\ud800-\\udbff][\\udc00-\\udfff]",Nr="\\u200d",Vr=Br+"?",Wr="["+Lr+"]?",qr="(?:"+Nr+"(?:"+[Cr,Rr,Dr].join("|")+")"+Wr+Vr+")*",Gr=Wr+Vr+qr,Hr="(?:"+[Cr+Tr+"?",Tr,Rr,Dr,Mr].join("|")+")",Jr=RegExp(Ur+"(?="+Ur+")|"+Hr+Gr,"g"),Kr=RegExp("["+Nr+Er+Fr+Lr+"]"),Qr={};
30
- Qr[hr]=Qr[pr]=Qr[yr]=Qr[vr]=Qr[br]=Qr[_r]=Qr[gr]=Qr[dr]=Qr[jr]=true,Qr[Wn]=Qr[qn]=Qr[lr]=Qr[Hn]=Qr[sr]=Qr[Jn]=Qr[Kn]=Qr[Qn]=Qr[Yn]=Qr[Zn]=Qr[nr]=Qr[ur]=Qr[or]=Qr[ir]=Qr[ar]=false;var Xr={};Xr[Wn]=Xr[qn]=Xr[lr]=Xr[sr]=Xr[Hn]=Xr[Jn]=Xr[hr]=Xr[pr]=Xr[yr]=Xr[vr]=Xr[br]=Xr[Yn]=Xr[Zn]=Xr[nr]=Xr[ur]=Xr[or]=Xr[ir]=Xr[cr]=Xr[_r]=Xr[gr]=Xr[dr]=Xr[jr]=true,Xr[Kn]=Xr[Qn]=Xr[ar]=false;var Yr=typeof global=="object"&&global&&global.Object===Object&&global,Zr=typeof self=="object"&&self&&self.Object===Object&&self,te=Yr||Zr||Function("return this")(),ne=typeof exports=="object"&&exports&&!exports.nodeType&&exports,re=ne&&typeof module=="object"&&module&&!module.nodeType&&module,ee=re&&re.exports===ne,ue=ee&&Yr.process,oe=function(){
31
- try{return ue&&ue.binding&&ue.binding("util")}catch(t){}}(),ie=oe&&oe.isMap,ce=oe&&oe.isSet,fe=oe&&oe.isTypedArray,ae=o("length"),le=Array.prototype,se=Function.prototype,he=Object.prototype,pe=te["__core-js_shared__"],ye=se.toString,ve=he.hasOwnProperty,be=function(){var t=/[^.]+$/.exec(pe&&pe.keys&&pe.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),_e=he.toString,ge=ye.call(Object),de=RegExp("^"+ye.call(ve).replace(Ar,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),je=ee?te.Buffer:In,we=te.Symbol,Oe=te.Uint8Array,me=je?je.allocUnsafe:In,Ae=l(Object.getPrototypeOf,Object),ze=Object.create,xe=he.propertyIsEnumerable,Se=le.splice,ke=we?we.isConcatSpreadable:In,Ee=we?we.toStringTag:In,Pe=function(){
32
- try{var t=Ft(Object,"defineProperty");return t({},"",{}),t}catch(t){}}(),Ie=Object.getOwnPropertySymbols,$e=je?je.isBuffer:In,Fe=l(Object.keys,Object),Le=Math.max,Me=Date.now,Te=Ft(te,"DataView"),Ue=Ft(te,"Map"),Be=Ft(te,"Promise"),Ce=Ft(te,"Set"),Re=Ft(te,"WeakMap"),De=Ft(Object,"create"),Ne=Zt(Te),Ve=Zt(Ue),We=Zt(Be),qe=Zt(Ce),Ge=Zt(Re),He=we?we.prototype:In,Je=He?He.valueOf:In,Ke=He?He.toString:In,Qe=function(){function t(){}return function(n){if(!hn(n))return{};if(ze)return ze(n);t.prototype=n;
33
- var r=new t;return t.prototype=In,r}}();v.prototype.clear=b,v.prototype.delete=_,v.prototype.get=g,v.prototype.has=d,v.prototype.set=j,w.prototype.clear=O,w.prototype.delete=m,w.prototype.get=A,w.prototype.has=z,w.prototype.set=x,S.prototype.clear=k,S.prototype.delete=E,S.prototype.get=P,S.prototype.has=I,S.prototype.set=$,F.prototype.clear=L,F.prototype.delete=M,F.prototype.get=T,F.prototype.has=U,F.prototype.set=B;var Xe=St(),Ye=Pe?function(t,n){return Pe(t,"toString",{configurable:true,enumerable:false,
34
- value:xn(n),writable:true})}:Sn,Ze=Ie?function(t){return null==t?[]:(t=Object(t),r(Ie(t),function(n){return xe.call(t,n)}))}:kn,tu=Ie?function(t){for(var n=[];t;)u(n,Ze(t)),t=Ae(t);return n}:kn,nu=Q;(Te&&nu(new Te(new ArrayBuffer(1)))!=sr||Ue&&nu(new Ue)!=Yn||Be&&nu(Be.resolve())!=rr||Ce&&nu(new Ce)!=or||Re&&nu(new Re)!=ar)&&(nu=function(t){var n=Q(t),r=n==nr?t.constructor:In,e=r?Zt(r):"";if(e)switch(e){case Ne:return sr;case Ve:return Yn;case We:return rr;case qe:return or;case Ge:return ar}return n;
35
- });var ru=Xt(Ye),eu=Gt(function(t){var n=[];return 46===t.charCodeAt(0)&&n.push(""),t.replace(mr,function(t,r,e,u){n.push(e?u.replace(zr,"$1"):r||t)}),n});en.Cache=S;var uu=Z(function(){return arguments}())?Z:function(t){return pn(t)&&ve.call(t,"callee")&&!xe.call(t,"callee")},ou=Array.isArray,iu=$e||En,cu=ie?c(ie):tt,fu=ce?c(ce):rt,au=fe?c(fe):et,lu=xt(function(t,n,r){it(t,n,r)}),su=xt(function(t,n,r,e){it(t,n,r,e)}),hu=Et(function(t,n){var r={};if(null==t)return r;var u=false;n=e(n,function(n){return n=vt(n,t),
36
- u||(u=n.length>1),n}),mt(t,It(t),r),u&&(r=G(r,Un|Bn|Cn,kt));for(var o=n.length;o--;)yt(r,n[o]);return r}),pu=Et(function(t,n){return null==t?{}:ft(t,n)});y.constant=xn,y.flatten=tn,y.keys=On,y.keysIn=mn,y.memoize=en,y.merge=lu,y.mergeWith=su,y.omit=hu,y.pick=pu,y.set=An,y.toPath=Pn,y.toPlainObject=_n,y.unset=zn,y.clone=un,y.cloneDeep=on,y.eq=cn,y.get=dn,y.has=jn,y.hasIn=wn,y.identity=Sn,y.isArguments=uu,y.isArray=ou,y.isArrayLike=fn,y.isArrayLikeObject=an,y.isBuffer=iu,y.isFunction=ln,y.isLength=sn,
37
- y.isMap=cu,y.isObject=hn,y.isObjectLike=pn,y.isPlainObject=yn,y.isSet=fu,y.isString=vn,y.isSymbol=bn,y.isTypedArray=au,y.last=nn,y.stubArray=kn,y.stubFalse=En,y.size=rn,y.toString=gn,y.VERSION=$n,typeof define=="function"&&typeof define.amd=="object"&&define.amd?(te._=y, define(function(){return y})):re?((re.exports=y)._=y,ne._=y):te._=y}).call(this);
6
+ ;(function(){function t(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function e(t,e){for(var n=-1,r=null==t?0:t.length;++n<r&&false!==e(t[n],n,t););}function n(t,e){for(var n=-1,r=null==t?0:t.length,u=0,o=[];++n<r;){var c=t[n];e(c,n,t)&&(o[u++]=c)}return o}function r(t,e){for(var n=-1,r=null==t?0:t.length,u=Array(r);++n<r;)u[n]=e(t[n],n,t);return u}function u(t,e){for(var n=-1,r=e.length,u=t.length;++n<r;)t[u+n]=e[n];
7
+ return t}function o(t){return function(e){return t(e)}}function c(t){var e=Object;return function(n){return t(e(n))}}function i(){}function f(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function a(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function l(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function s(t){this.size=(this.__data__=new a(t)).size}function b(t,e){
8
+ var n=Ye(t),r=!n&&Xe(t),u=!n&&!r&&Ze(t),o=!n&&!r&&!u&&nn(t);if(n=n||r||u||o){for(var r=t.length,c=String,i=-1,f=Array(r);++i<r;)f[i]=c(i);r=f}else r=[];var a,c=r.length;for(a in t)!e&&!fe.call(t,a)||n&&("length"==a||u&&("offset"==a||"parent"==a)||o&&("buffer"==a||"byteLength"==a||"byteOffset"==a)||ut(a,c))||r.push(a);return r}function p(t,e,n){(n===Mt||bt(t[e],n))&&(n!==Mt||e in t)||d(t,e,n)}function h(t,e,n){var r=t[e];fe.call(t,e)&&bt(r,n)&&(n!==Mt||e in t)||d(t,e,n)}function y(t,e){for(var n=t.length;n--;)if(bt(t[n][0],e))return n;
9
+ return-1}function j(t,e){return t&&W(e,St(e),t)}function _(t,e){return t&&W(e,zt(e),t)}function d(t,e,n){"__proto__"==e&&we?we(t,e,{configurable:true,enumerable:true,value:n,writable:true}):t[e]=n}function g(t,n,r,u,o,c){var i,f=1&n,a=2&n,l=4&n;if(r&&(i=o?r(t,u,o,c):r(t)),i!==Mt)return i;if(!_t(t))return t;if(u=Ye(t)){if(i=tt(t),!f)return V(t,i)}else{var b=Je(t),p="[object Function]"==b||"[object GeneratorFunction]"==b;if(Ze(t))return R(t,f);if("[object Object]"==b||"[object Arguments]"==b||p&&!o){if(i=a||p?{}:et(t),
10
+ !f)return a?G(t,_(i,t)):N(t,j(i,t))}else{if(!Gt[b])return o?t:{};i=nt(t,b,f)}}if(c||(c=new s),o=c.get(t))return o;if(c.set(t,i),en(t))return t.forEach(function(e){i.add(g(e,n,r,e,t,c))}),i;if(tn(t))return t.forEach(function(e,u){i.set(u,g(e,n,r,u,t,c))}),i;var a=l?a?Q:K:a?zt:St,y=u?Mt:a(t);return e(y||t,function(e,u){y&&(u=e,e=t[u]),h(i,u,g(e,n,r,u,t,c))}),i}function v(t,e,n,r,o){var c=-1,i=t.length;for(n||(n=rt),o||(o=[]);++c<i;){var f=t[c];0<e&&n(f)?1<e?v(f,e-1,n,r,o):u(o,f):r||(o[o.length]=f)}
11
+ return o}function A(t,e){e=C(e,t);for(var n=0,r=e.length;null!=t&&n<r;)t=t[it(e[n++])];return n&&n==r?t:Mt}function m(t,e,n){return e=e(t),Ye(t)?e:u(e,n(t))}function w(t){if(null==t)t=t===Mt?"[object Undefined]":"[object Null]";else if(me&&me in Object(t)){var e=fe.call(t,me),n=t[me];try{t[me]=Mt;var r=true}catch(t){}var u=le.call(t);r&&(e?t[me]=n:delete t[me]),t=u}else t=le.call(t);return t}function O(t,e){return null!=t&&fe.call(t,e)}function S(t,e){return null!=t&&e in Object(t)}function z(t){return dt(t)&&"[object Arguments]"==w(t);
12
+ }function x(t){return dt(t)&&"[object Map]"==Je(t)}function k(t){return dt(t)&&"[object Set]"==Je(t)}function F(t){return dt(t)&&jt(t.length)&&!!Nt[w(t)]}function I(t){if(!ot(t))return ze(t);var e,n=[];for(e in Object(t))fe.call(t,e)&&"constructor"!=e&&n.push(e);return n}function M(t,e,n,r,u){t!==e&&Ne(e,function(o,c){if(_t(o)){u||(u=new s);var i=u,f="__proto__"==c?Mt:t[c],a="__proto__"==c?Mt:e[c],l=i.get(a);if(l)p(t,c,l);else{var l=r?r(f,a,c+"",t,e,i):Mt,b=l===Mt;if(b){var h=Ye(a),y=!h&&Ze(a),j=!h&&!y&&nn(a),l=a;
13
+ h||y||j?Ye(f)?l=f:ht(f)?l=V(f):y?(b=false,l=R(a,true)):j?(b=false,l=T(a,true)):l=[]:gt(a)||Xe(a)?(l=f,Xe(f)?l=mt(f):(!_t(f)||n&&yt(f))&&(l=et(a))):b=false}b&&(i.set(a,l),M(l,a,n,r,i),i.delete(a)),p(t,c,l)}}else i=r?r("__proto__"==c?Mt:t[c],o,c+"",t,e,u):Mt,i===Mt&&(i=o),p(t,c,i)},zt)}function E(t,e){return U(t,e,function(e,n){return Ot(t,n)})}function U(t,e,n){for(var r=-1,u=e.length,o={};++r<u;){var c=e[r],i=A(t,c);n(i,c)&&D(o,C(c,t),i)}return o}function P(t){return Ke(ct(t,void 0,kt),t+"")}function D(t,e,n){
14
+ if(!_t(t))return t;e=C(e,t);for(var r=-1,u=e.length,o=u-1,c=t;null!=c&&++r<u;){var i=it(e[r]),f=n;if(r!=o){var a=c[i],f=Mt;f===Mt&&(f=_t(a)?a:ut(e[r+1])?[]:{})}h(c,i,f),c=c[i]}return t}function $(t){if(typeof t=="string")return t;if(Ye(t))return r(t,$)+"";if(At(t))return Ve?Ve.call(t):"";var e=t+"";return"0"==e&&1/t==-Et?"-0":e}function B(t,e){e=C(e,t);var n;if(2>e.length)n=t;else{n=e;var r=0,u=-1,o=-1,c=n.length;for(0>r&&(r=-r>c?0:c+r),u=u>c?c:u,0>u&&(u+=c),c=r>u?0:u-r>>>0,r>>>=0,u=Array(c);++o<c;)u[o]=n[o+r];
15
+ n=A(t,u)}return t=n,null==t||delete t[it(lt(e))]}function C(t,e){var n;return Ye(t)?n=t:(Ye(t)?n=false:(n=typeof t,n=!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!At(t))||(Pt.test(t)||!Ut.test(t)||null!=e&&t in Object(e))),n=n?[t]:Qe(wt(t))),n}function R(t,e){if(e)return t.slice();var n=t.length,n=je?je(n):new t.constructor(n);return t.copy(n),n}function L(t){var e=new t.constructor(t.byteLength);return new ye(e).set(new ye(t)),e}function T(t,e){return new t.constructor(e?L(t.buffer):t.buffer,t.byteOffset,t.length);
16
+ }function V(t,e){var n=-1,r=t.length;for(e||(e=Array(r));++n<r;)e[n]=t[n];return e}function W(t,e,n){var r=!n;n||(n={});for(var u=-1,o=e.length;++u<o;){var c=e[u],i=Mt;i===Mt&&(i=t[c]),r?d(n,c,i):h(n,c,i)}return n}function N(t,e){return W(t,qe(t),e)}function G(t,e){return W(t,He(t),e)}function q(t){return P(function(e,n){var r,u=-1,o=n.length,c=1<o?n[o-1]:Mt,i=2<o?n[2]:Mt,c=3<t.length&&typeof c=="function"?(o--,c):Mt;if(r=i){r=n[0];var f=n[1];if(_t(i)){var a=typeof f;r=!!("number"==a?pt(i)&&ut(f,i.length):"string"==a&&f in i)&&bt(i[f],r);
17
+ }else r=false}for(r&&(c=3>o?Mt:c,o=1),e=Object(e);++u<o;)(i=n[u])&&t(e,i,u,c);return e})}function H(t){return gt(t)?Mt:t}function J(t){return Ke(ct(t,Mt,at),t+"")}function K(t){return m(t,St,qe)}function Q(t){return m(t,zt,He)}function X(t,e){var n=t.__data__,r=typeof e;return("string"==r||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==e:null===e)?n[typeof e=="string"?"string":"hash"]:n.map}function Y(t,e){var n=null==t?Mt:t[e];return(!_t(n)||ae&&ae in n?0:(yt(n)?be:Ct).test(ft(n)))?n:Mt}function Z(t,e,n){
18
+ e=C(e,t);for(var r=-1,u=e.length,o=false;++r<u;){var c=it(e[r]);if(!(o=null!=t&&n(t,c)))break;t=t[c]}return o||++r!=u?o:(u=null==t?0:t.length,!!u&&jt(u)&&ut(c,u)&&(Ye(t)||Xe(t)))}function tt(t){var e=t.length,n=new t.constructor(e);return e&&"string"==typeof t[0]&&fe.call(t,"index")&&(n.index=t.index,n.input=t.input),n}function et(t){return typeof t.constructor!="function"||ot(t)?{}:We(_e(t))}function nt(t,e,n){var r=t.constructor;switch(e){case"[object ArrayBuffer]":return L(t);case"[object Boolean]":
19
+ case"[object Date]":return new r(+t);case"[object DataView]":return e=n?L(t.buffer):t.buffer,new t.constructor(e,t.byteOffset,t.byteLength);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return T(t,n);case"[object Map]":return new r;case"[object Number]":case"[object String]":return new r(t);case"[object RegExp]":
20
+ return e=new t.constructor(t.source,Bt.exec(t)),e.lastIndex=t.lastIndex,e;case"[object Set]":return new r;case"[object Symbol]":return Te?Object(Te.call(t)):{}}}function rt(t){return Ye(t)||Xe(t)||!!(Ae&&t&&t[Ae])}function ut(t,e){var n=typeof t;return e=null==e?9007199254740991:e,!!e&&("number"==n||"symbol"!=n&&Rt.test(t))&&-1<t&&0==t%1&&t<e}function ot(t){var e=t&&t.constructor;return t===(typeof e=="function"&&e.prototype||oe)}function ct(e,n,r){return n=xe(n===Mt?e.length-1:n,0),function(){for(var u=arguments,o=-1,c=xe(u.length-n,0),i=Array(c);++o<c;)i[o]=u[n+o];
21
+ for(o=-1,c=Array(n+1);++o<n;)c[o]=u[o];return c[n]=r(i),t(e,this,c)}}function it(t){if(typeof t=="string"||At(t))return t;var e=t+"";return"0"==e&&1/t==-Et?"-0":e}function ft(t){if(null!=t){try{return ie.call(t)}catch(t){}return t+""}return""}function at(t){return(null==t?0:t.length)?v(t,1):[]}function lt(t){var e=null==t?0:t.length;return e?t[e-1]:Mt}function st(t,e){function n(){var r=arguments,u=e?e.apply(this,r):r[0],o=n.cache;return o.has(u)?o.get(u):(r=t.apply(this,r),n.cache=o.set(u,r)||o,
22
+ r)}if(typeof t!="function"||null!=e&&typeof e!="function")throw new TypeError("Expected a function");return n.cache=new(st.Cache||l),n}function bt(t,e){return t===e||t!==t&&e!==e}function pt(t){return null!=t&&jt(t.length)&&!yt(t)}function ht(t){return dt(t)&&pt(t)}function yt(t){return!!_t(t)&&(t=w(t),"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t)}function jt(t){return typeof t=="number"&&-1<t&&0==t%1&&9007199254740991>=t}function _t(t){
23
+ var e=typeof t;return null!=t&&("object"==e||"function"==e)}function dt(t){return null!=t&&typeof t=="object"}function gt(t){return!(!dt(t)||"[object Object]"!=w(t))&&(t=_e(t),null===t||(t=fe.call(t,"constructor")&&t.constructor,typeof t=="function"&&t instanceof t&&ie.call(t)==se))}function vt(t){return typeof t=="string"||!Ye(t)&&dt(t)&&"[object String]"==w(t)}function At(t){return typeof t=="symbol"||dt(t)&&"[object Symbol]"==w(t)}function mt(t){return W(t,zt(t))}function wt(t){return null==t?"":$(t);
24
+ }function Ot(t,e){return null!=t&&Z(t,e,S)}function St(t){return pt(t)?b(t):I(t)}function zt(t){if(pt(t))t=b(t,true);else if(_t(t)){var e,n=ot(t),r=[];for(e in t)("constructor"!=e||!n&&fe.call(t,e))&&r.push(e);t=r}else{if(e=[],null!=t)for(n in Object(t))e.push(n);t=e}return t}function xt(t){return function(){return t}}function kt(t){return t}function Ft(){return[]}function It(){return false}var Mt,Et=1/0,Ut=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Pt=/^\w*$/,Dt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,$t=/\\(\\)?/g,Bt=/\w*$/,Ct=/^\[object .+?Constructor\]$/,Rt=/^(?:0|[1-9]\d*)$/,Lt="[\\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])?)*",Tt="(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]?|[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])",Vt=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+Tt+Lt,"g"),Wt=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]"),Nt={};
25
+ 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;
26
+ var Gt={};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,
27
+ Gt["[object Error]"]=Gt["[object Function]"]=Gt["[object WeakMap]"]=false;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;t:{try{qt=Zt&&Zt.binding&&Zt.binding("util");break t}catch(t){}qt=void 0}var te=qt&&qt.isMap,ee=qt&&qt.isSet,ne=qt&&qt.isTypedArray,re=function(t){
28
+ return function(e){return null==e?Mt:e[t]}}("length"),ue=Array.prototype,oe=Object.prototype,ce=Kt["__core-js_shared__"],ie=Function.prototype.toString,fe=oe.hasOwnProperty,ae=function(){var t=/[^.]+$/.exec(ce&&ce.keys&&ce.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),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(){
29
+ try{var t=Y(Object,"defineProperty");return t({},"",{}),t}catch(t){}}(),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),Le=he?he.prototype:Mt,Te=Le?Le.valueOf:Mt,Ve=Le?Le.toString:Mt,We=function(){function t(){}return function(e){return _t(e)?de?de(e):(t.prototype=e,e=new t,t.prototype=Mt,e):{};
30
+ }}();f.prototype.clear=function(){this.__data__=Pe?Pe(null):{},this.size=0},f.prototype.delete=function(t){return t=this.has(t)&&delete this.__data__[t],this.size-=t?1:0,t},f.prototype.get=function(t){var e=this.__data__;return Pe?(t=e[t],"__lodash_hash_undefined__"===t?Mt:t):fe.call(e,t)?e[t]:Mt},f.prototype.has=function(t){var e=this.__data__;return Pe?e[t]!==Mt:fe.call(e,t)},f.prototype.set=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=Pe&&e===Mt?"__lodash_hash_undefined__":e,
31
+ this},a.prototype.clear=function(){this.__data__=[],this.size=0},a.prototype.delete=function(t){var e=this.__data__;return t=y(e,t),!(0>t)&&(t==e.length-1?e.pop():ve.call(e,t,1),--this.size,true)},a.prototype.get=function(t){var e=this.__data__;return t=y(e,t),0>t?Mt:e[t][1]},a.prototype.has=function(t){return-1<y(this.__data__,t)},a.prototype.set=function(t,e){var n=this.__data__,r=y(n,t);return 0>r?(++this.size,n.push([t,e])):n[r][1]=e,this},l.prototype.clear=function(){this.size=0,this.__data__={
32
+ hash:new f,map:new(Ie||a),string:new f}},l.prototype.delete=function(t){return t=X(this,t).delete(t),this.size-=t?1:0,t},l.prototype.get=function(t){return X(this,t).get(t)},l.prototype.has=function(t){return X(this,t).has(t)},l.prototype.set=function(t,e){var n=X(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this},s.prototype.clear=function(){this.__data__=new a,this.size=0},s.prototype.delete=function(t){var e=this.__data__;return t=e.delete(t),this.size=e.size,t},s.prototype.get=function(t){
33
+ return this.__data__.get(t)},s.prototype.has=function(t){return this.__data__.has(t)},s.prototype.set=function(t,e){var n=this.__data__;if(n instanceof a){var r=n.__data__;if(!Ie||199>r.length)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new l(r)}return n.set(t,e),this.size=n.size,this};var Ne=function(t){return function(e,n,r){var u=-1,o=Object(e);r=r(e);for(var c=r.length;c--;){var i=r[t?c:++u];if(false===n(o[i],i,o))break}return e}}(),Ge=we?function(t,e){return we(t,"toString",{configurable:true,
34
+ enumerable:false,value:xt(e),writable:true})}:kt,qe=Oe?function(t){return null==t?[]:(t=Object(t),n(Oe(t),function(e){return ge.call(t,e)}))}:Ft,He=Oe?function(t){for(var e=[];t;)u(e,qe(t)),t=_e(t);return e}:Ft,Je=w;(Fe&&"[object DataView]"!=Je(new Fe(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){var e=w(t);if(t=(t="[object Object]"==e?t.constructor:Mt)?ft(t):"")switch(t){
35
+ case De:return"[object DataView]";case $e:return"[object Map]";case Be:return"[object Promise]";case Ce:return"[object Set]";case Re:return"[object WeakMap]"}return e});var Ke=function(t){var e=0,n=0;return function(){var r=ke(),u=16-(r-n);if(n=r,0<u){if(800<=++e)return arguments[0]}else e=0;return t.apply(Mt,arguments)}}(Ge),Qe=function(t){t=st(t,function(t){return 500===e.size&&e.clear(),t});var e=t.cache;return t}(function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(Dt,function(t,n,r,u){
36
+ e.push(r?u.replace($t,"$1"):n||t)}),e});st.Cache=l;var Xe=z(function(){return arguments}())?z:function(t){return dt(t)&&fe.call(t,"callee")&&!ge.call(t,"callee")},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,e,n){M(t,e,n)}),un=q(function(t,e,n,r){M(t,e,n,r)}),on=J(function(t,e){var n={};if(null==t)return n;var u=false;e=r(e,function(e){return e=C(e,t),u||(u=1<e.length),e}),W(t,Q(t),n),u&&(n=g(n,7,H));for(var o=e.length;o--;)B(n,e[o]);return n}),cn=J(function(t,e){
37
+ return null==t?{}:E(t,e)});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,e,n){return null==t?t:D(t,e,n)},i.toPath=function(t){return Ye(t)?r(t,it):At(t)?[t]:V(Qe(wt(t)))},i.toPlainObject=mt,i.unset=function(t,e){return null==t||B(t,e)},i.clone=function(t){return g(t,4)},i.cloneDeep=function(t){return g(t,5)},i.eq=bt,i.get=function(t,e,n){return t=null==t?Mt:A(t,e),t===Mt?n:t},i.has=function(t,e){return null!=t&&Z(t,e,O);
38
+ },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){if(null==t)return 0;if(pt(t)){if(vt(t))if(Wt.test(t)){for(var e=Vt.lastIndex=0;Vt.test(t);)++e;t=e}else t=re(t);else t=t.length;return t}return e=Je(t),"[object Map]"==e||"[object Set]"==e?t.size:I(t).length;
39
+ },i.toString=wt,i.VERSION="4.17.5",typeof define=="function"&&typeof define.amd=="object"&&define.amd?(Kt._=i, define(function(){return i})):Xt?((Xt.exports=i)._=i,Qt._=i):Kt._=i}).call(this);
@@ -1,4 +1,3 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  /**
3
2
  * Helper class to base64 encode/decode values with option
4
3
  * for url encoding and decoding
@@ -0,0 +1,9 @@
1
+ import {
2
+ Exception,
3
+ createError
4
+ } from "../chunk-GGIWJLUJ.js";
5
+ export {
6
+ Exception,
7
+ createError
8
+ };
9
+ //# sourceMappingURL=exception.js.map
@@ -0,0 +1,2 @@
1
+ export * from './invalid_arguments_exception.js';
2
+ export * from './runtime_exception.js';
@@ -0,0 +1,10 @@
1
+ import {
2
+ InvalidArgumentsException,
3
+ RuntimeException
4
+ } from "../../chunk-PNT36FCE.js";
5
+ import "../../chunk-GGIWJLUJ.js";
6
+ export {
7
+ InvalidArgumentsException,
8
+ RuntimeException
9
+ };
10
+ //# sourceMappingURL=main.js.map
@@ -1,4 +1,3 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  import { ImportAllFilesOptions } from './types.js';
3
2
  /**
4
3
  * Returns an array of file paths from the given location. You can
@@ -1,4 +1,3 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  import { ReadAllFilesOptions } from './types.js';
3
2
  /**
4
3
  * Returns an array of file paths from the given location. You can
@@ -2,7 +2,7 @@
2
2
  * Define a Secret value that hides itself from the logs or the console
3
3
  * statements.
4
4
  *
5
- * The idea is to prevent accedential leaking of sensitive information.
5
+ * The idea is to prevent accidental leaking of sensitive information.
6
6
  * Idea borrowed from.
7
7
  * https://transcend.io/blog/keep-sensitive-values-out-of-your-logs-with-types
8
8
  */
@@ -0,0 +1,7 @@
1
+ import {
2
+ default as default2
3
+ } from "../chunk-RRTFLKKC.js";
4
+ export {
5
+ default2 as slash
6
+ };
7
+ //# sourceMappingURL=slash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -33,15 +33,15 @@ declare const string: {
33
33
  sentence: typeof sentence;
34
34
  condenseWhitespace: typeof condenseWhitespace;
35
35
  seconds: {
36
- format(seconds: number, long?: boolean | undefined): string;
36
+ format(seconds: number, long?: boolean): string;
37
37
  parse(duration: string | number): number;
38
38
  };
39
39
  milliseconds: {
40
- format(milliseconds: number, long?: boolean | undefined): string;
40
+ format(milliseconds: number, long?: boolean): string;
41
41
  parse(duration: string | number): number;
42
42
  };
43
43
  bytes: {
44
- format(valueInBytes: number, options?: import("bytes").BytesOptions | undefined): string;
44
+ format(valueInBytes: number, options?: import("bytes").BytesOptions): string;
45
45
  parse(unit: string | number): number;
46
46
  };
47
47
  ordinal: typeof ordinal;
@@ -3,4 +3,4 @@ import { default as slugifyPkg } from 'slugify';
3
3
  * Typings of the slugify package are a bit off and therefore we have
4
4
  * to do this manual dance of re-assigning types
5
5
  */
6
- export declare const slug: typeof slugifyPkg.default;
6
+ export declare const slug: (typeof slugifyPkg)["default"];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poppinss/utils",
3
- "version": "6.7.3",
3
+ "version": "6.8.0",
4
4
  "description": "Handy utilities for repetitive work",
5
5
  "main": "build/index.js",
6
6
  "type": "module",
@@ -22,7 +22,10 @@
22
22
  "./string": "./build/src/string/main.js",
23
23
  "./string_builder": "./build/src/string_builder.js",
24
24
  "./json": "./build/src/json/main.js",
25
- "./types": "./build/src/types.js"
25
+ "./types": "./build/src/types.js",
26
+ "./exceptions": "./build/exceptions/src/exceptions/index.js",
27
+ "./exception": "./build/src/exception.js",
28
+ "./slash": "./build/src/slash.js"
26
29
  },
27
30
  "engines": {
28
31
  "node": ">=18.16.0"
@@ -31,67 +34,56 @@
31
34
  "pretest": "npm run lint",
32
35
  "test": "npm run build:lodash && c8 npm run quick:test",
33
36
  "build:lodash": "lodash include=\"pick,omit,has,get,set,unset,mergeWith,merge,size,clone,cloneDeep,toPath\" --production && move-file ./lodash.custom.min.js build/lodash/main.cjs",
34
- "quick:test": "node --loader=ts-node/esm bin/test.ts",
35
- "clean": "del-cli build",
37
+ "lint": "eslint",
38
+ "format": "prettier --write .",
36
39
  "typecheck": "tsc --noEmit",
37
- "precompile": "npm run lint && npm run clean",
40
+ "precompile": "npm run lint",
38
41
  "compile": "tsup-node && tsc --emitDeclarationOnly --declaration",
39
42
  "build": "npm run compile && npm run build:lodash",
40
- "release": "np",
41
43
  "version": "npm run build",
42
44
  "prepublishOnly": "npm run build",
43
- "lint": "eslint . --ext=.ts",
44
- "format": "prettier --write .",
45
- "sync-labels": "github-label-sync --labels .github/labels.json poppinss/utils"
45
+ "release": "release-it",
46
+ "quick:test": "node --import=ts-node-maintained/register/esm bin/test.ts"
46
47
  },
47
- "keywords": [
48
- "toolkit",
49
- "utilities"
50
- ],
51
- "author": "virk,poppinss",
52
- "license": "MIT",
53
48
  "devDependencies": {
54
- "@adonisjs/eslint-config": "^1.3.0",
55
- "@adonisjs/logger": "^5.4.2-7",
56
- "@adonisjs/prettier-config": "^1.3.0",
57
- "@adonisjs/tsconfig": "^1.3.0",
58
- "@commitlint/cli": "^19.2.1",
59
- "@commitlint/config-conventional": "^19.1.0",
60
- "@japa/assert": "^2.1.0",
61
- "@japa/expect-type": "^2.0.1",
62
- "@japa/runner": "^3.1.1",
63
- "@swc/core": "^1.4.11",
49
+ "@adonisjs/eslint-config": "^2.0.0-beta.6",
50
+ "@adonisjs/logger": "^6.0.3",
51
+ "@adonisjs/prettier-config": "^1.4.0",
52
+ "@adonisjs/tsconfig": "^1.4.0",
53
+ "@japa/assert": "^3.0.0",
54
+ "@japa/expect-type": "^2.0.2",
55
+ "@japa/runner": "^3.1.4",
56
+ "@release-it/conventional-changelog": "^8.0.2",
57
+ "@swc/core": "^1.7.26",
64
58
  "@types/fs-extra": "^11.0.4",
65
- "@types/node": "^20.11.30",
66
- "c8": "^9.1.0",
67
- "del-cli": "^5.1.0",
68
- "eslint": "^8.57.0",
59
+ "@types/node": "^22.5.5",
60
+ "c8": "^10.1.2",
61
+ "eslint": "^9.10.0",
69
62
  "fs-extra": "^11.2.0",
70
- "github-label-sync": "^2.3.1",
71
- "husky": "^9.0.11",
72
63
  "lodash": "^4.17.21",
73
64
  "lodash-cli": "^4.17.5",
74
65
  "move-file-cli": "^3.0.0",
75
- "np": "^10.0.2",
76
- "prettier": "^3.2.5",
77
- "ts-node": "^10.9.2",
78
- "tsup": "^8.0.2",
79
- "typescript": "^5.4.3"
66
+ "prettier": "^3.3.3",
67
+ "release-it": "^17.6.0",
68
+ "ts-node-maintained": "^10.9.4",
69
+ "tsup": "^8.2.4",
70
+ "typescript": "^5.6.2"
80
71
  },
81
72
  "dependencies": {
82
73
  "@lukeed/ms": "^2.0.2",
83
74
  "@types/bytes": "^3.1.4",
84
75
  "@types/pluralize": "^0.0.33",
85
76
  "bytes": "^3.1.2",
86
- "case-anything": "^2.1.13",
77
+ "case-anything": "^3.1.0",
87
78
  "flattie": "^1.1.1",
88
79
  "pluralize": "^8.0.0",
89
- "safe-stable-stringify": "^2.4.3",
80
+ "safe-stable-stringify": "^2.5.0",
90
81
  "secure-json-parse": "^2.7.0",
91
82
  "slash": "^5.1.0",
92
83
  "slugify": "^1.6.6",
93
84
  "truncatise": "^0.0.8"
94
85
  },
86
+ "homepage": "https://github.com/poppinss/utils#readme",
95
87
  "repository": {
96
88
  "type": "git",
97
89
  "url": "git+https://github.com/poppinss/utils.git"
@@ -99,45 +91,24 @@
99
91
  "bugs": {
100
92
  "url": "https://github.com/poppinss/utils/issues"
101
93
  },
102
- "homepage": "https://github.com/poppinss/utils#readme",
103
- "c8": {
104
- "reporter": [
105
- "text",
106
- "html"
107
- ],
108
- "exclude": [
109
- "**/build/lodash/**",
110
- "tests/**",
111
- "test_helpers/**"
112
- ]
113
- },
114
- "commitlint": {
115
- "extends": [
116
- "@commitlint/config-conventional"
117
- ]
118
- },
94
+ "keywords": [
95
+ "toolkit",
96
+ "utilities"
97
+ ],
98
+ "author": "virk,poppinss",
99
+ "license": "MIT",
119
100
  "publishConfig": {
120
- "access": "public",
121
- "tag": "latest"
122
- },
123
- "np": {
124
- "message": "chore(release): %s",
125
- "tag": "latest",
126
- "branch": "main",
127
- "anyBranch": false
101
+ "provenance": true
128
102
  },
129
- "eslintConfig": {
130
- "extends": "@adonisjs/eslint-config/package"
131
- },
132
- "prettier": "@adonisjs/prettier-config",
133
103
  "tsup": {
134
104
  "entry": [
135
105
  "./index.ts",
136
106
  "./src/assert.ts",
137
107
  "./src/string/main.ts",
138
108
  "./src/string_builder.ts",
139
- "./src/json/main.ts",
140
- "./src/types.ts"
109
+ "./src/slash.ts",
110
+ "./src/exception.ts",
111
+ "./src/exceptions/main.ts"
141
112
  ],
142
113
  "outDir": "./build",
143
114
  "clean": true,
@@ -145,5 +116,41 @@
145
116
  "dts": false,
146
117
  "sourcemap": true,
147
118
  "target": "esnext"
148
- }
119
+ },
120
+ "release-it": {
121
+ "git": {
122
+ "requireCleanWorkingDir": true,
123
+ "requireUpstream": true,
124
+ "commitMessage": "chore(release): ${version}",
125
+ "tagAnnotation": "v${version}",
126
+ "push": true,
127
+ "tagName": "v${version}"
128
+ },
129
+ "github": {
130
+ "release": true
131
+ },
132
+ "npm": {
133
+ "publish": true,
134
+ "skipChecks": true
135
+ },
136
+ "plugins": {
137
+ "@release-it/conventional-changelog": {
138
+ "preset": {
139
+ "name": "angular"
140
+ }
141
+ }
142
+ }
143
+ },
144
+ "c8": {
145
+ "reporter": [
146
+ "text",
147
+ "html"
148
+ ],
149
+ "exclude": [
150
+ "**/build/lodash/**",
151
+ "tests/**",
152
+ "test_helpers/**"
153
+ ]
154
+ },
155
+ "prettier": "@adonisjs/prettier-config"
149
156
  }
@@ -1,40 +0,0 @@
1
- // src/json/safe_parse.ts
2
- import { parse } from "secure-json-parse";
3
- function safeParse(jsonString, reviver) {
4
- return parse(jsonString, reviver, {
5
- protoAction: "remove",
6
- constructorAction: "remove"
7
- });
8
- }
9
-
10
- // src/json/safe_stringify.ts
11
- import { configure } from "safe-stable-stringify";
12
- var stringify = configure({
13
- bigint: false,
14
- circularValue: void 0,
15
- deterministic: false
16
- });
17
- function jsonStringifyReplacer(replacer) {
18
- return function(key, value) {
19
- const val = replacer ? replacer.call(this, key, value) : value;
20
- if (typeof val === "bigint") {
21
- return val.toString();
22
- }
23
- return val;
24
- };
25
- }
26
- function safeStringify(value, replacer, space) {
27
- return stringify(value, jsonStringifyReplacer(replacer), space);
28
- }
29
-
30
- // src/json/main.ts
31
- var json = {
32
- safeParse,
33
- safeStringify
34
- };
35
- var main_default = json;
36
-
37
- export {
38
- main_default
39
- };
40
- //# sourceMappingURL=chunk-IOBSMUFC.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/json/safe_parse.ts","../src/json/safe_stringify.ts","../src/json/main.ts"],"sourcesContent":["/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { parse } from 'secure-json-parse'\nimport { JSONReviver } from '../types.js'\n\n/**\n * A drop-in replacement for JSON.parse with prototype poisoning protection.\n */\nexport function safeParse(jsonString: string, reviver?: JSONReviver): any {\n return parse(jsonString, reviver, {\n protoAction: 'remove',\n constructorAction: 'remove',\n })\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { configure } from 'safe-stable-stringify'\nimport { JSONReplacer } from '../types.js'\n\nconst stringify = configure({\n bigint: false,\n circularValue: undefined,\n deterministic: false,\n})\n\n/**\n * Replacer to handle custom data types.\n *\n * - Bigints are converted to string\n */\nfunction jsonStringifyReplacer(replacer?: JSONReplacer): JSONReplacer {\n return function (key, value) {\n const val = replacer ? replacer.call(this, key, value) : value\n\n if (typeof val === 'bigint') {\n return val.toString()\n }\n\n return val\n }\n}\n\n/**\n * String Javascript values to a JSON string. Handles circular\n * references and bigints\n */\nexport function safeStringify(\n value: any,\n replacer?: JSONReplacer,\n space?: string | number\n): string | undefined {\n return stringify(value, jsonStringifyReplacer(replacer), space)\n}\n","/*\n * @poppinss/utils\n *\n * (c) Poppinss\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport { safeParse } from './safe_parse.js'\nimport { safeStringify } from './safe_stringify.js'\n\nconst json = {\n safeParse,\n safeStringify,\n}\n\nexport default json\n"],"mappings":";AASA,SAAS,aAAa;AAMf,SAAS,UAAU,YAAoB,SAA4B;AACxE,SAAO,MAAM,YAAY,SAAS;AAAA,IAChC,aAAa;AAAA,IACb,mBAAmB;AAAA,EACrB,CAAC;AACH;;;ACXA,SAAS,iBAAiB;AAG1B,IAAM,YAAY,UAAU;AAAA,EAC1B,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,eAAe;AACjB,CAAC;AAOD,SAAS,sBAAsB,UAAuC;AACpE,SAAO,SAAU,KAAK,OAAO;AAC3B,UAAM,MAAM,WAAW,SAAS,KAAK,MAAM,KAAK,KAAK,IAAI;AAEzD,QAAI,OAAO,QAAQ,UAAU;AAC3B,aAAO,IAAI,SAAS;AAAA,IACtB;AAEA,WAAO;AAAA,EACT;AACF;AAMO,SAAS,cACd,OACA,UACA,OACoB;AACpB,SAAO,UAAU,OAAO,sBAAsB,QAAQ,GAAG,KAAK;AAChE;;;ACjCA,IAAM,OAAO;AAAA,EACX;AAAA,EACA;AACF;AAEA,IAAO,eAAQ;","names":[]}
@@ -1,7 +0,0 @@
1
- import {
2
- main_default
3
- } from "../../chunk-IOBSMUFC.js";
4
- export {
5
- main_default as default
6
- };
7
- //# sourceMappingURL=main.js.map
@@ -1 +0,0 @@
1
- //# sourceMappingURL=types.js.map