@kikiutils/shared 14.1.1 → 15.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/dist/buffer.d.ts +0 -1
  2. package/dist/buffer.d.ts.map +1 -1
  3. package/dist/buffer.js +1 -2
  4. package/dist/buffer.js.map +1 -1
  5. package/dist/classes/path.d.ts +1 -28
  6. package/dist/classes/path.d.ts.map +1 -1
  7. package/dist/classes/path.js +1 -35
  8. package/dist/classes/path.js.map +1 -1
  9. package/dist/classes/precision-number.d.ts.map +1 -1
  10. package/dist/classes/precision-number.js +1 -2
  11. package/dist/classes/precision-number.js.map +1 -1
  12. package/dist/classes/ssh-client.d.ts.map +1 -1
  13. package/dist/classes/ssh-client.js +1 -2
  14. package/dist/classes/ssh-client.js.map +1 -1
  15. package/dist/clipboard.d.ts.map +1 -1
  16. package/dist/clipboard.js +1 -1
  17. package/dist/consola.d.ts +3 -4
  18. package/dist/consola.d.ts.map +1 -1
  19. package/dist/consola.js +1 -2
  20. package/dist/consola.js.map +1 -1
  21. package/dist/crypto-hash.d.ts +0 -1
  22. package/dist/crypto-hash.d.ts.map +1 -1
  23. package/dist/crypto-hash.js +1 -2
  24. package/dist/crypto-hash.js.map +1 -1
  25. package/dist/datetime.d.ts.map +1 -1
  26. package/dist/datetime.js +1 -2
  27. package/dist/datetime.js.map +1 -1
  28. package/dist/element-plus.d.ts.map +1 -1
  29. package/dist/element-plus.js +1 -1
  30. package/dist/enum.d.ts.map +1 -1
  31. package/dist/enum.js +1 -1
  32. package/dist/env.d.ts.map +1 -1
  33. package/dist/env.js +1 -1
  34. package/dist/env.js.map +1 -1
  35. package/dist/event-awaiter.d.ts.map +1 -1
  36. package/dist/event-awaiter.js +7 -7
  37. package/dist/event-awaiter.js.map +1 -1
  38. package/dist/general.d.ts.map +1 -1
  39. package/dist/general.js +1 -1
  40. package/dist/hash.d.ts.map +1 -1
  41. package/dist/hash.js +1 -2
  42. package/dist/hash.js.map +1 -1
  43. package/dist/math.d.ts.map +1 -1
  44. package/dist/math.js +1 -2
  45. package/dist/math.js.map +1 -1
  46. package/dist/number.d.ts +0 -1
  47. package/dist/number.d.ts.map +1 -1
  48. package/dist/number.js +1 -2
  49. package/dist/number.js.map +1 -1
  50. package/dist/object.d.ts.map +1 -1
  51. package/dist/object.js +1 -1
  52. package/dist/pino.d.ts +3 -4
  53. package/dist/pino.d.ts.map +1 -1
  54. package/dist/pino.js +6 -12
  55. package/dist/pino.js.map +1 -1
  56. package/dist/random.d.ts.map +1 -1
  57. package/dist/random.js +1 -1
  58. package/dist/storages/lru/keyed-store.d.ts.map +1 -1
  59. package/dist/storages/lru/keyed-store.js +1 -1
  60. package/dist/storages/redis/keyed-store.d.ts.map +1 -1
  61. package/dist/storages/redis/keyed-store.js +1 -1
  62. package/dist/storages/redis/msgpack.d.ts.map +1 -1
  63. package/dist/storages/redis/msgpack.js +1 -2
  64. package/dist/storages/redis/msgpack.js.map +1 -1
  65. package/dist/storages/redis/types.d.ts.map +1 -1
  66. package/dist/storages/redis/types.js +1 -1
  67. package/dist/string.d.ts.map +1 -1
  68. package/dist/string.js +2 -2
  69. package/dist/string.js.map +1 -1
  70. package/dist/time.d.ts.map +1 -1
  71. package/dist/time.js +1 -1
  72. package/dist/time.js.map +1 -1
  73. package/dist/types/filtered-key-path.d.ts +3 -4
  74. package/dist/types/filtered-key-path.d.ts.map +1 -1
  75. package/dist/types/index.d.ts.map +1 -1
  76. package/dist/types/vue.d.ts +0 -1
  77. package/dist/types/vue.d.ts.map +1 -1
  78. package/dist/url.d.ts.map +1 -1
  79. package/dist/url.js +1 -1
  80. package/dist/vue.d.ts +0 -1
  81. package/dist/vue.d.ts.map +1 -1
  82. package/dist/vue.js +1 -2
  83. package/dist/vue.js.map +1 -1
  84. package/dist/web.d.ts.map +1 -1
  85. package/dist/web.js +1 -2
  86. package/dist/web.js.map +1 -1
  87. package/package.json +27 -43
  88. package/src/classes/path.ts +0 -47
  89. package/src/string.ts +1 -1
package/dist/buffer.d.ts CHANGED
@@ -2,7 +2,6 @@ import { BinaryInput } from "./types/index.js";
2
2
  import { Buffer } from "node:buffer";
3
3
 
4
4
  //#region src/buffer.d.ts
5
-
6
5
  /**
7
6
  * Converts various binary data types to a Node.js Buffer.
8
7
  *
@@ -1 +1 @@
1
- {"version":3,"file":"buffer.d.ts","names":[],"sources":["../src/buffer.ts"],"sourcesContent":[],"mappings":";;;;;;;AAkCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAsB,QAAA,QAAgB,cAAW,QAAA,OAAA"}
1
+ {"version":3,"file":"buffer.d.ts","names":[],"sources":["../src/buffer.ts"],"mappings":";;;;;;AAkCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAsB,QAAA,CAAS,KAAA,EAAO,WAAA,GAAW,OAAA,CAAA,MAAA,CAAA,eAAA"}
package/dist/buffer.js CHANGED
@@ -1,5 +1,4 @@
1
1
  import { Buffer } from "node:buffer";
2
-
3
2
  //#region src/buffer.ts
4
3
  /**
5
4
  * Converts various binary data types to a Node.js Buffer.
@@ -38,7 +37,7 @@ async function toBuffer(input) {
38
37
  if (typeof input.arrayBuffer === "function") return Buffer.from(await input.arrayBuffer());
39
38
  throw new TypeError("The provided input is not a supported binary type (Blob, Buffer, File, ArrayBuffer, or Uint8Array).");
40
39
  }
41
-
42
40
  //#endregion
43
41
  export { toBuffer };
42
+
44
43
  //# sourceMappingURL=buffer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"buffer.js","names":[],"sources":["../src/buffer.ts"],"sourcesContent":["import { Buffer } from 'node:buffer';\n\nimport type { BinaryInput } from './types';\n\n/**\n * Converts various binary data types to a Node.js Buffer.\n *\n * This function provides a unified, efficient way to convert different binary formats\n * (Blob, Buffer, File, ArrayBuffer, or Uint8Array) into a Node.js Buffer.\n * It prioritizes zero-copy conversions for TypedArrays and ArrayBuffers to ensure\n * optimal performance.\n *\n * @param {ArrayBuffer | Blob | Buffer | File | Uint8Array} input - The binary data input to convert.\n * Supports Blob, Buffer, File, ArrayBuffer, and Uint8Array.\n *\n * @returns {Promise<Buffer>} A promise that resolves to a Node.js Buffer.\n *\n * @example\n * ```typescript\n * import { toBuffer } from '@kikiutils/shared/buffer';\n *\n * // From ArrayBuffer\n * const ab = new ArrayBuffer(8);\n * const bufferFromAB = await toBuffer(ab);\n *\n * // From Uint8Array (Zero-copy)\n * const u8 = new Uint8Array([10, 20, 30]);\n * const bufferFromU8 = await toBuffer(u8);\n *\n * // From Blob or File\n * const blob = new Blob(['data'], { type: 'text/plain' });\n * const bufferFromBlob = await toBuffer(blob);\n * ```\n */\nexport async function toBuffer(input: BinaryInput) {\n if (Buffer.isBuffer(input)) return input;\n if (input instanceof ArrayBuffer) return Buffer.from(input);\n if (input instanceof Uint8Array) return Buffer.from(input.buffer, input.byteOffset, input.byteLength);\n if (typeof input.arrayBuffer === 'function') return Buffer.from(await input.arrayBuffer());\n // eslint-disable-next-line style/max-len\n throw new TypeError('The provided input is not a supported binary type (Blob, Buffer, File, ArrayBuffer, or Uint8Array).');\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,eAAsB,SAAS,OAAoB;AAC/C,KAAI,OAAO,SAAS,MAAM,CAAE,QAAO;AACnC,KAAI,iBAAiB,YAAa,QAAO,OAAO,KAAK,MAAM;AAC3D,KAAI,iBAAiB,WAAY,QAAO,OAAO,KAAK,MAAM,QAAQ,MAAM,YAAY,MAAM,WAAW;AACrG,KAAI,OAAO,MAAM,gBAAgB,WAAY,QAAO,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAE1F,OAAM,IAAI,UAAU,sGAAsG"}
1
+ {"version":3,"file":"buffer.js","names":[],"sources":["../src/buffer.ts"],"sourcesContent":["import { Buffer } from 'node:buffer';\n\nimport type { BinaryInput } from './types';\n\n/**\n * Converts various binary data types to a Node.js Buffer.\n *\n * This function provides a unified, efficient way to convert different binary formats\n * (Blob, Buffer, File, ArrayBuffer, or Uint8Array) into a Node.js Buffer.\n * It prioritizes zero-copy conversions for TypedArrays and ArrayBuffers to ensure\n * optimal performance.\n *\n * @param {ArrayBuffer | Blob | Buffer | File | Uint8Array} input - The binary data input to convert.\n * Supports Blob, Buffer, File, ArrayBuffer, and Uint8Array.\n *\n * @returns {Promise<Buffer>} A promise that resolves to a Node.js Buffer.\n *\n * @example\n * ```typescript\n * import { toBuffer } from '@kikiutils/shared/buffer';\n *\n * // From ArrayBuffer\n * const ab = new ArrayBuffer(8);\n * const bufferFromAB = await toBuffer(ab);\n *\n * // From Uint8Array (Zero-copy)\n * const u8 = new Uint8Array([10, 20, 30]);\n * const bufferFromU8 = await toBuffer(u8);\n *\n * // From Blob or File\n * const blob = new Blob(['data'], { type: 'text/plain' });\n * const bufferFromBlob = await toBuffer(blob);\n * ```\n */\nexport async function toBuffer(input: BinaryInput) {\n if (Buffer.isBuffer(input)) return input;\n if (input instanceof ArrayBuffer) return Buffer.from(input);\n if (input instanceof Uint8Array) return Buffer.from(input.buffer, input.byteOffset, input.byteLength);\n if (typeof input.arrayBuffer === 'function') return Buffer.from(await input.arrayBuffer());\n // eslint-disable-next-line style/max-len\n throw new TypeError('The provided input is not a supported binary type (Blob, Buffer, File, ArrayBuffer, or Uint8Array).');\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,eAAsB,SAAS,OAAoB;AAC/C,KAAI,OAAO,SAAS,MAAM,CAAE,QAAO;AACnC,KAAI,iBAAiB,YAAa,QAAO,OAAO,KAAK,MAAM;AAC3D,KAAI,iBAAiB,WAAY,QAAO,OAAO,KAAK,MAAM,QAAQ,MAAM,YAAY,MAAM,WAAW;AACrG,KAAI,OAAO,MAAM,gBAAgB,WAAY,QAAO,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAE1F,OAAM,IAAI,UAAU,sGAAsG"}
@@ -1,13 +1,10 @@
1
1
  import { Buffer } from "node:buffer";
2
2
  import * as fsp from "node:fs/promises";
3
3
  import * as nodePath from "node:path";
4
- import * as fsExtra from "fs-extra";
5
4
  import { Abortable } from "node:events";
6
5
  import * as fs from "node:fs";
7
- import { JFReadOptions, JFWriteOptions } from "jsonfile";
8
6
 
9
7
  //#region src/classes/path.d.ts
10
- type DoNotRemoveOrUseThisType = typeof fsExtra;
11
8
  type DropFirstParameters<T extends (...args: any) => any> = Parameters<T> extends [any, ...infer R] ? R : never;
12
9
  type PathLike = fs.PathLike | Path;
13
10
  /**
@@ -190,31 +187,7 @@ declare class Path {
190
187
  * @see {@link fsp.writeFile}
191
188
  */
192
189
  writeFile(...args: DropFirstParameters<typeof fsp.writeFile>): Promise<void>;
193
- /**
194
- * @see {@link fsExtra.ensureDir}
195
- */
196
- ensureDir(options?: fsExtra.EnsureDirOptions | number): Promise<void>;
197
- /**
198
- * @see {@link fsExtra.ensureDir}
199
- */
200
- mkdirp: (options?: fsExtra.EnsureDirOptions | number) => Promise<void>;
201
- /**
202
- * @see {@link fsExtra.ensureDir}
203
- */
204
- mkdirs: (options?: fsExtra.EnsureDirOptions | number) => Promise<void>;
205
- /**
206
- * @see {@link fsExtra.readJson}
207
- */
208
- readJson<T = any>(options?: JFReadOptions): Promise<T>;
209
- /**
210
- * @see {@link fsExtra.remove}
211
- */
212
- remove(): Promise<void>;
213
- /**
214
- * @see {@link fsExtra.writeJson}
215
- */
216
- writeJson(data: any, options?: JFWriteOptions): Promise<void>;
217
190
  }
218
191
  //#endregion
219
- export { DoNotRemoveOrUseThisType, Path, PathLike };
192
+ export { Path, PathLike };
220
193
  //# sourceMappingURL=path.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"path.d.ts","names":[],"sources":["../../src/classes/path.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"path.d.ts","names":[],"sources":["../../src/classes/path.ts"],"mappings":"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"}
@@ -1,7 +1,5 @@
1
1
  import * as fsp from "node:fs/promises";
2
2
  import { basename, dirname, extname, format, isAbsolute, join, normalize, parse, relative, resolve, toNamespacedPath } from "node:path";
3
- import * as fsExtra from "fs-extra";
4
-
5
3
  //#region src/classes/path.ts
6
4
  /**
7
5
  * Class representing a file system path with various utility methods for path operations.
@@ -206,40 +204,8 @@ var Path = class Path {
206
204
  writeFile(...args) {
207
205
  return fsp.writeFile(this.#value, ...args);
208
206
  }
209
- /**
210
- * @see {@link fsExtra.ensureDir}
211
- */
212
- ensureDir(options) {
213
- return fsExtra.ensureDir(this.#value, options);
214
- }
215
- /**
216
- * @see {@link fsExtra.ensureDir}
217
- */
218
- mkdirp = this.ensureDir;
219
- /**
220
- * @see {@link fsExtra.ensureDir}
221
- */
222
- mkdirs = this.ensureDir;
223
- /**
224
- * @see {@link fsExtra.readJson}
225
- */
226
- async readJson(options) {
227
- return await fsExtra.readJson(this.#value, options);
228
- }
229
- /**
230
- * @see {@link fsExtra.remove}
231
- */
232
- remove() {
233
- return fsExtra.remove(this.#value);
234
- }
235
- /**
236
- * @see {@link fsExtra.writeJson}
237
- */
238
- writeJson(data, options) {
239
- return fsExtra.writeJson(this.#value, data, options);
240
- }
241
207
  };
242
-
243
208
  //#endregion
244
209
  export { Path };
210
+
245
211
  //# sourceMappingURL=path.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"path.js","names":["#value","#toStrings","#newInstance"],"sources":["../../src/classes/path.ts"],"sourcesContent":["import type { Buffer } from 'node:buffer';\nimport type { Abortable } from 'node:events';\nimport type * as fs from 'node:fs';\nimport * as fsp from 'node:fs/promises';\nimport {\n basename,\n dirname,\n extname,\n format,\n isAbsolute,\n join,\n normalize,\n parse,\n relative,\n resolve,\n toNamespacedPath,\n} from 'node:path';\nimport type * as nodePath from 'node:path';\n\nimport * as fsExtra from 'fs-extra';\nimport type {\n JFReadOptions,\n JFWriteOptions,\n} from 'jsonfile';\n\nexport type DoNotRemoveOrUseThisType = typeof fsExtra;\ntype DropFirstParameters<T extends (...args: any) => any> = Parameters<T> extends [any, ...infer R] ? R : never;\nexport type PathLike = fs.PathLike | Path;\n\n/**\n * Class representing a file system path with various utility methods for path operations.\n *\n * All methods in the `Path` class are immutable, returning new instances with modified values\n * and leaving the original instance unchanged.\n */\nexport class Path {\n readonly #value: string;\n\n constructor(...paths: PathLike[]) {\n this.#value = join(...this.#toStrings(paths));\n }\n\n // Symbols\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return this.#value;\n }\n\n [Symbol.toPrimitive](hint: string) {\n if (hint === 'number') throw new TypeError('Cannot convert a Path to a number');\n return this.#value;\n }\n\n // Private methods\n #newInstance(...paths: PathLike[]) {\n return new Path(...paths);\n }\n\n #toStrings(paths: PathLike[]) {\n return paths.map((path) => path.toString());\n }\n\n // Public getters\n\n /**\n * @see {@link nodePath.dirname}\n */\n get parent() {\n return this.dirname();\n }\n\n /**\n * Returns the internal path string value.\n */\n get value() {\n return this.#value;\n }\n\n // Public static methods\n\n /**\n * @see {@link nodePath.format}\n */\n static format(pathObject: nodePath.FormatInputPathObject) {\n return new Path(format(pathObject));\n }\n\n /**\n * @see {@link nodePath.resolve}\n */\n static resolve(...paths: PathLike[]) {\n return new this(...paths).resolve();\n }\n\n // Public base methods\n\n /**\n * @see {@link nodePath.basename}\n */\n basename(suffix?: string) {\n return basename(this.#value, suffix);\n }\n\n /**\n * @see {@link nodePath.dirname}\n */\n dirname() {\n return this.#newInstance(dirname(this.#value));\n }\n\n /**\n * @see {@link nodePath.extname}\n */\n extname() {\n return extname(this.#value);\n }\n\n /**\n * @see {@link nodePath.isAbsolute}\n */\n isAbsolute() {\n return isAbsolute(this.#value);\n }\n\n /**\n * @see {@link nodePath.normalize}\n */\n normalize() {\n return this.#newInstance(normalize(this.#value));\n }\n\n /**\n * @see {@link nodePath.join}\n */\n join(...paths: PathLike[]) {\n return this.#newInstance(this.#value, ...this.#toStrings(paths));\n }\n\n /**\n * @see {@link nodePath.parse}\n */\n parse() {\n return parse(this.#value);\n }\n\n /**\n * @see {@link nodePath.relative}\n */\n relative(to: PathLike) {\n return this.#newInstance(relative(this.#value, to.toString()));\n }\n\n /**\n * @see {@link nodePath.resolve}\n */\n resolve() {\n return this.#newInstance(resolve(this.#value));\n }\n\n toJSON() {\n return this.#value;\n }\n\n /**\n * @see {@link nodePath.toNamespacedPath}\n */\n toNamespacedPath() {\n return toNamespacedPath(this.#value);\n }\n\n /**\n * Converts the Path instance to a string.\n * This method returns the internal path string value,\n * making it useful for implicit and explicit string conversions.\n */\n toString() {\n return this.#value;\n }\n\n // Some commonly used promise fs methods\n\n /**\n * @see {@link fsp.access}\n */\n access(...args: DropFirstParameters<typeof fsp.access>) {\n return fsp.access(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.appendFile}\n */\n appendFile(...args: DropFirstParameters<typeof fsp.appendFile>) {\n return fsp.appendFile(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.chmod}\n */\n chmod(...args: DropFirstParameters<typeof fsp.chmod>) {\n return fsp.chmod(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.chown}\n */\n chown(...args: DropFirstParameters<typeof fsp.chown>) {\n return fsp.chown(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.copyFile}\n */\n copyFile(...args: DropFirstParameters<typeof fsp.copyFile>) {\n return fsp.copyFile(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.mkdir}\n */\n mkdir(\n options: fs.MakeDirectoryOptions & {\n recursive: true;\n },\n ): Promise<string>;\n mkdir(\n options?:\n | (fs.MakeDirectoryOptions & {\n recursive?: false;\n })\n | fs.Mode\n | null,\n ): Promise<void>;\n mkdir(options?: fs.MakeDirectoryOptions | fs.Mode | null): Promise<string | undefined>;\n mkdir(...args: any): any {\n return fsp.mkdir(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.open}\n */\n open(...args: DropFirstParameters<typeof fsp.open>) {\n return fsp.open(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.readdir}\n */\n readdir(\n path: PathLike,\n options?:\n | BufferEncoding\n | (fs.ObjectEncodingOptions & {\n recursive?: boolean;\n withFileTypes?: false;\n })\n | null,\n ): Promise<string[]>;\n readdir(\n path: PathLike,\n options:\n | 'buffer'\n | {\n encoding: 'buffer';\n recursive?: boolean;\n withFileTypes?: false;\n },\n ): Promise<Buffer[]>;\n readdir(\n path: PathLike,\n options?:\n | BufferEncoding\n | (fs.ObjectEncodingOptions & {\n recursive?: boolean;\n withFileTypes?: false;\n })\n | null,\n ): Promise<Buffer[] | string[]>;\n readdir(\n path: PathLike,\n options: fs.ObjectEncodingOptions & {\n recursive?: boolean;\n withFileTypes: true;\n },\n ): Promise<fs.Dirent[]>;\n readdir(\n path: PathLike,\n options: {\n encoding: 'buffer';\n recursive?: boolean;\n withFileTypes: true;\n },\n ): Promise<fs.Dirent<Buffer>[]>;\n readdir(...args: any): any {\n return fsp.readdir(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.readFile}\n */\n readFile(\n options?:\n | (Abortable & {\n encoding?: null;\n flag?: fs.OpenMode;\n })\n | null,\n ): Promise<Buffer>;\n readFile(\n options:\n | (Abortable & {\n encoding: BufferEncoding;\n flag?: fs.OpenMode;\n })\n | BufferEncoding,\n ): Promise<string>;\n readFile(\n options?:\n | (\n & Abortable\n & fs.ObjectEncodingOptions\n & { flag?: fs.OpenMode }\n )\n | BufferEncoding\n | null,\n ): Promise<Buffer | string>;\n readFile(...args: any): any {\n return fsp.readFile(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.rename}\n */\n rename(newPath: PathLike) {\n return fsp.rename(this.#value, newPath.toString());\n }\n\n /**\n * @see {@link fsp.rm}\n */\n rm(...args: DropFirstParameters<typeof fsp.rm>) {\n return fsp.rm(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.rmdir}\n */\n rmdir(...args: DropFirstParameters<typeof fsp.rmdir>) {\n return fsp.rmdir(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.stat}\n */\n stat(\n opts?: fs.StatOptions & {\n bigint?: false;\n },\n ): Promise<fs.Stats>;\n stat(\n opts: fs.StatOptions & {\n bigint: true;\n },\n ): Promise<fs.BigIntStats>;\n stat(opts?: fs.StatOptions): Promise<fs.BigIntStats | fs.Stats>;\n stat(...args: any): any {\n return fsp.stat(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.truncate}\n */\n truncate(...args: DropFirstParameters<typeof fsp.truncate>) {\n return fsp.truncate(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.unlink}\n */\n unlink() {\n return fsp.unlink(this.#value);\n }\n\n /**\n * @see {@link fsp.writeFile}\n */\n writeFile(...args: DropFirstParameters<typeof fsp.writeFile>) {\n return fsp.writeFile(this.#value, ...args);\n }\n\n // Some commonly used promise fs extra methods\n\n /**\n * @see {@link fsExtra.ensureDir}\n */\n ensureDir(options?: fsExtra.EnsureDirOptions | number) {\n return fsExtra.ensureDir(this.#value, options);\n }\n\n /**\n * @see {@link fsExtra.ensureDir}\n */\n mkdirp = this.ensureDir;\n\n /**\n * @see {@link fsExtra.ensureDir}\n */\n mkdirs = this.ensureDir;\n\n /**\n * @see {@link fsExtra.readJson}\n */\n async readJson<T = any>(options?: JFReadOptions) {\n return await fsExtra.readJson(this.#value, options) as T;\n }\n\n /**\n * @see {@link fsExtra.remove}\n */\n remove() {\n return fsExtra.remove(this.#value);\n }\n\n /**\n * @see {@link fsExtra.writeJson}\n */\n writeJson(data: any, options?: JFWriteOptions) {\n return fsExtra.writeJson(this.#value, data, options);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"path.js","names":["#value","#toStrings","#newInstance"],"sources":["../../src/classes/path.ts"],"sourcesContent":["import type { Buffer } from 'node:buffer';\nimport type { Abortable } from 'node:events';\nimport type * as fs from 'node:fs';\nimport * as fsp from 'node:fs/promises';\nimport {\n basename,\n dirname,\n extname,\n format,\n isAbsolute,\n join,\n normalize,\n parse,\n relative,\n resolve,\n toNamespacedPath,\n} from 'node:path';\nimport type * as nodePath from 'node:path';\n\ntype DropFirstParameters<T extends (...args: any) => any> = Parameters<T> extends [any, ...infer R] ? R : never;\nexport type PathLike = fs.PathLike | Path;\n\n/**\n * Class representing a file system path with various utility methods for path operations.\n *\n * All methods in the `Path` class are immutable, returning new instances with modified values\n * and leaving the original instance unchanged.\n */\nexport class Path {\n readonly #value: string;\n\n constructor(...paths: PathLike[]) {\n this.#value = join(...this.#toStrings(paths));\n }\n\n // Symbols\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return this.#value;\n }\n\n [Symbol.toPrimitive](hint: string) {\n if (hint === 'number') throw new TypeError('Cannot convert a Path to a number');\n return this.#value;\n }\n\n // Private methods\n #newInstance(...paths: PathLike[]) {\n return new Path(...paths);\n }\n\n #toStrings(paths: PathLike[]) {\n return paths.map((path) => path.toString());\n }\n\n // Public getters\n\n /**\n * @see {@link nodePath.dirname}\n */\n get parent() {\n return this.dirname();\n }\n\n /**\n * Returns the internal path string value.\n */\n get value() {\n return this.#value;\n }\n\n // Public static methods\n\n /**\n * @see {@link nodePath.format}\n */\n static format(pathObject: nodePath.FormatInputPathObject) {\n return new Path(format(pathObject));\n }\n\n /**\n * @see {@link nodePath.resolve}\n */\n static resolve(...paths: PathLike[]) {\n return new this(...paths).resolve();\n }\n\n // Public base methods\n\n /**\n * @see {@link nodePath.basename}\n */\n basename(suffix?: string) {\n return basename(this.#value, suffix);\n }\n\n /**\n * @see {@link nodePath.dirname}\n */\n dirname() {\n return this.#newInstance(dirname(this.#value));\n }\n\n /**\n * @see {@link nodePath.extname}\n */\n extname() {\n return extname(this.#value);\n }\n\n /**\n * @see {@link nodePath.isAbsolute}\n */\n isAbsolute() {\n return isAbsolute(this.#value);\n }\n\n /**\n * @see {@link nodePath.normalize}\n */\n normalize() {\n return this.#newInstance(normalize(this.#value));\n }\n\n /**\n * @see {@link nodePath.join}\n */\n join(...paths: PathLike[]) {\n return this.#newInstance(this.#value, ...this.#toStrings(paths));\n }\n\n /**\n * @see {@link nodePath.parse}\n */\n parse() {\n return parse(this.#value);\n }\n\n /**\n * @see {@link nodePath.relative}\n */\n relative(to: PathLike) {\n return this.#newInstance(relative(this.#value, to.toString()));\n }\n\n /**\n * @see {@link nodePath.resolve}\n */\n resolve() {\n return this.#newInstance(resolve(this.#value));\n }\n\n toJSON() {\n return this.#value;\n }\n\n /**\n * @see {@link nodePath.toNamespacedPath}\n */\n toNamespacedPath() {\n return toNamespacedPath(this.#value);\n }\n\n /**\n * Converts the Path instance to a string.\n * This method returns the internal path string value,\n * making it useful for implicit and explicit string conversions.\n */\n toString() {\n return this.#value;\n }\n\n // Some commonly used promise fs methods\n\n /**\n * @see {@link fsp.access}\n */\n access(...args: DropFirstParameters<typeof fsp.access>) {\n return fsp.access(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.appendFile}\n */\n appendFile(...args: DropFirstParameters<typeof fsp.appendFile>) {\n return fsp.appendFile(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.chmod}\n */\n chmod(...args: DropFirstParameters<typeof fsp.chmod>) {\n return fsp.chmod(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.chown}\n */\n chown(...args: DropFirstParameters<typeof fsp.chown>) {\n return fsp.chown(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.copyFile}\n */\n copyFile(...args: DropFirstParameters<typeof fsp.copyFile>) {\n return fsp.copyFile(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.mkdir}\n */\n mkdir(\n options: fs.MakeDirectoryOptions & {\n recursive: true;\n },\n ): Promise<string>;\n mkdir(\n options?:\n | (fs.MakeDirectoryOptions & {\n recursive?: false;\n })\n | fs.Mode\n | null,\n ): Promise<void>;\n mkdir(options?: fs.MakeDirectoryOptions | fs.Mode | null): Promise<string | undefined>;\n mkdir(...args: any): any {\n return fsp.mkdir(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.open}\n */\n open(...args: DropFirstParameters<typeof fsp.open>) {\n return fsp.open(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.readdir}\n */\n readdir(\n path: PathLike,\n options?:\n | BufferEncoding\n | (fs.ObjectEncodingOptions & {\n recursive?: boolean;\n withFileTypes?: false;\n })\n | null,\n ): Promise<string[]>;\n readdir(\n path: PathLike,\n options:\n | 'buffer'\n | {\n encoding: 'buffer';\n recursive?: boolean;\n withFileTypes?: false;\n },\n ): Promise<Buffer[]>;\n readdir(\n path: PathLike,\n options?:\n | BufferEncoding\n | (fs.ObjectEncodingOptions & {\n recursive?: boolean;\n withFileTypes?: false;\n })\n | null,\n ): Promise<Buffer[] | string[]>;\n readdir(\n path: PathLike,\n options: fs.ObjectEncodingOptions & {\n recursive?: boolean;\n withFileTypes: true;\n },\n ): Promise<fs.Dirent[]>;\n readdir(\n path: PathLike,\n options: {\n encoding: 'buffer';\n recursive?: boolean;\n withFileTypes: true;\n },\n ): Promise<fs.Dirent<Buffer>[]>;\n readdir(...args: any): any {\n return fsp.readdir(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.readFile}\n */\n readFile(\n options?:\n | (Abortable & {\n encoding?: null;\n flag?: fs.OpenMode;\n })\n | null,\n ): Promise<Buffer>;\n readFile(\n options:\n | (Abortable & {\n encoding: BufferEncoding;\n flag?: fs.OpenMode;\n })\n | BufferEncoding,\n ): Promise<string>;\n readFile(\n options?:\n | (\n & Abortable\n & fs.ObjectEncodingOptions\n & { flag?: fs.OpenMode }\n )\n | BufferEncoding\n | null,\n ): Promise<Buffer | string>;\n readFile(...args: any): any {\n return fsp.readFile(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.rename}\n */\n rename(newPath: PathLike) {\n return fsp.rename(this.#value, newPath.toString());\n }\n\n /**\n * @see {@link fsp.rm}\n */\n rm(...args: DropFirstParameters<typeof fsp.rm>) {\n return fsp.rm(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.rmdir}\n */\n rmdir(...args: DropFirstParameters<typeof fsp.rmdir>) {\n return fsp.rmdir(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.stat}\n */\n stat(\n opts?: fs.StatOptions & {\n bigint?: false;\n },\n ): Promise<fs.Stats>;\n stat(\n opts: fs.StatOptions & {\n bigint: true;\n },\n ): Promise<fs.BigIntStats>;\n stat(opts?: fs.StatOptions): Promise<fs.BigIntStats | fs.Stats>;\n stat(...args: any): any {\n return fsp.stat(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.truncate}\n */\n truncate(...args: DropFirstParameters<typeof fsp.truncate>) {\n return fsp.truncate(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.unlink}\n */\n unlink() {\n return fsp.unlink(this.#value);\n }\n\n /**\n * @see {@link fsp.writeFile}\n */\n writeFile(...args: DropFirstParameters<typeof fsp.writeFile>) {\n return fsp.writeFile(this.#value, ...args);\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"precision-number.d.ts","names":[],"sources":["../../src/classes/precision-number.ts"],"sourcesContent":[],"mappings":";;;KAEY,oBAAA,GAAuB,OAAA,CAAQ,QAAQ;;AAAnD,CAAA;AAkBA;;;;;;;;;;;;;;;;AA4HuB,cA5HV,eAAA,CA4HU;EAAoB,CAAA,OAAA;EAYxB,WAAA,CAAA,KAAA,CAAA,EAjIJ,oBAiII,EAAA,aAAA,CAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EA/HD,OAAA,CAAQ,QA+HP;EAAoB,CAnHlC,MAAA,CAAO,WAAA,EAmH2B,IAAA,EAAA,MAAA,CAAA,EAAA,MAAA,GAAA,MAAA;EAI1B,IAAA,KAAA,CAAA,CAAA,EAAA,MAAA;EAIK,OAAA,OAAA,CAAA,KAAA,EA1GH,oBA0GG,EAAA,aAAA,CAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAxGA,OAAA,CAAQ,QAwGR,CAAA,EAAA,MAAA;EAAoB,aAAA,CAAA,CAAA,EAAA,IAAA;EAQ6B,SAAQ,CAAA,KAAA,EArGtD,oBAqGsD,CAAA,EAAA,IAAA;EAIxD,MAAA,CAAA,KAAA,EApGD,oBAoGC,CAAA,EAAA,OAAA;EAAoB,EAAA,CAAA,KAAA,EAhGzB,oBAgGyB,CAAA,EAAA,OAAA;EAAA,GAAA,CAAA,KAAA,EA5FxB,oBA4FwB,CAAA,EAAA,OAAA;;;;;;;YAhEzB;aAIC;eAIE;;cAUD;eAKC;qBAKE;qBAII,uBAAoB;;iBAYxB,uBAAoB;eAI1B;gBAIK,uBAAoB;;6CAQ6B,OAAA,CAAQ;iBAIxD,uBAAoB"}
1
+ {"version":3,"file":"precision-number.d.ts","names":[],"sources":["../../src/classes/precision-number.ts"],"mappings":";;;KAEY,oBAAA,GAAuB,OAAA,CAAQ,KAAA,GAAQ,eAAA;EAAoB,QAAA;AAAA;;;;;;;;;;AAkBvE;;;;;;;cAAa,eAAA;EAAA;cAOL,KAAA,GAAO,oBAAA,EACP,aAAA,WACA,QAAA,GAAU,OAAA,CAAQ,QAAA;EAAA,CAYrB,MAAA,CAAO,WAAA,EAAa,IAAA;EAAA,IAWjB,KAAA,CAAA;EAAA,OAKG,OAAA,CACH,KAAA,EAAO,oBAAA,EACP,aAAA,WACA,QAAA,GAAU,OAAA,CAAQ,QAAA;EAMtB,aAAA,CAAA;EAKA,SAAA,CAAU,KAAA,EAAO,oBAAA;EAKjB,MAAA,CAAO,KAAA,EAAO,oBAAA;EAId,EAAA,CAAG,KAAA,EAAO,oBAAA;EAIV,GAAA,CAAI,KAAA,EAAO,oBAAA;EAIX,QAAA,CAAA;EAIA,SAAA,CAAA;EAIA,KAAA,CAAA;EAIA,UAAA,CAAA;EAIA,UAAA,CAAA;EAIA,MAAA,CAAA;EAIA,EAAA,CAAG,KAAA,EAAO,oBAAA;EAIV,GAAA,CAAI,KAAA,EAAO,oBAAA;EAIX,KAAA,CAAM,KAAA,EAAO,oBAAA;EAKb,MAAA,CAAA;EAKA,IAAA,CAAK,KAAA,EAAO,oBAAA;EAKZ,KAAA,CAAM,KAAA,EAAO,oBAAA;EAKb,eAAA,CAAA,GAAe,eAAA;EAIf,WAAA,CAAY,KAAA,EAAO,oBAAA,GAAoB,eAAA;EAQvC,MAAA,CAAA;EAIA,OAAA,CAAQ,KAAA,EAAO,oBAAA,GAAoB,eAAA;EAInC,SAAA,CAAA,GAAS,eAAA;EAIT,MAAA,CAAO,KAAA,EAAO,oBAAA,GAAoB,eAAA;EAIlC,QAAA,CAAA;EAIA,OAAA,CAAQ,aAAA,WAA6C,QAAA,GAAU,OAAA,CAAQ,QAAA;EAIvE,OAAA,CAAQ,KAAA,EAAO,oBAAA,GAAoB,eAAA;AAAA"}
@@ -1,5 +1,4 @@
1
1
  import { Decimal } from "decimal.js";
2
-
3
2
  //#region src/classes/precision-number.ts
4
3
  /**
5
4
  * Class representing a precision number with configurable decimal places and rounding.
@@ -127,7 +126,7 @@ var PrecisionNumber = class PrecisionNumber {
127
126
  return new PrecisionNumber(this.#decimal.times(value.toString().trim()), this.#decimalPlaces, this.#rounding);
128
127
  }
129
128
  };
130
-
131
129
  //#endregion
132
130
  export { PrecisionNumber };
131
+
133
132
  //# sourceMappingURL=precision-number.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"precision-number.js","names":["#decimalPlaces","#rounding","#decimal","#decimalToFixedDecimal"],"sources":["../../src/classes/precision-number.ts"],"sourcesContent":["import { Decimal } from 'decimal.js';\n\nexport type PrecisionNumberValue = Decimal.Value | PrecisionNumber | { toString: () => string };\n\n/**\n * Class representing a precision number with configurable decimal places and rounding.\n *\n * This class leverages the Decimal.js library to ensure accurate arithmetic operations\n * with floating point numbers. It provides methods for various arithmetic operations\n * (addition, subtraction, multiplication, division) as well as comparison and utility\n * methods to check the state of the number (e.g., if it is finite, an integer, zero, etc.).\n *\n * The class also includes custom symbol methods to support Node.js inspection and primitive\n * type conversion.\n *\n * The class supports in-place modification methods that alter the current instance's value,\n * such as `plus`, `minus`, `times`, `dividedBy`, and others. Additionally, methods prefixed\n * with `to` (e.g., `toPlus`, `toMinus`) return a new instance of `PrecisionNumber` with the\n * modified value, leaving the original instance unchanged.\n */\nexport class PrecisionNumber {\n // Private properties\n readonly #decimalPlaces: number;\n readonly #rounding: Decimal.Rounding;\n #decimal: Decimal;\n\n constructor(\n value: PrecisionNumberValue = '0',\n decimalPlaces: number = 2,\n rounding: Decimal.Rounding = Decimal.ROUND_DOWN,\n ) {\n this.#decimalPlaces = decimalPlaces;\n this.#rounding = rounding;\n this.#decimal = this.#decimalToFixedDecimal(new Decimal(value.toString().trim()));\n }\n\n // Symbols\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return this.value;\n }\n\n [Symbol.toPrimitive](hint: string) {\n if (hint === 'number') return this.#decimal.toNumber();\n return this.value;\n }\n\n // Private methods\n #decimalToFixedDecimal(decimal: Decimal) {\n return decimal.toDecimalPlaces(this.#decimalPlaces, this.#rounding);\n }\n\n // Public getters\n get value() {\n return this.#decimal.toFixed(this.#decimalPlaces, this.#rounding);\n }\n\n // Static methods\n static toFixed(\n value: PrecisionNumberValue,\n decimalPlaces: number = 2,\n rounding: Decimal.Rounding = Decimal.ROUND_DOWN,\n ) {\n return new Decimal(value.toString().trim()).toFixed(decimalPlaces, rounding);\n }\n\n // Public methods\n absoluteValue() {\n this.#decimal = this.#decimalToFixedDecimal(this.#decimal.absoluteValue());\n return this;\n }\n\n dividedBy(value: PrecisionNumberValue) {\n this.#decimal = this.#decimalToFixedDecimal(this.#decimal.dividedBy(value.toString().trim()));\n return this;\n }\n\n equals(value: PrecisionNumberValue) {\n return this.#decimal.equals(value.toString().trim());\n }\n\n gt(value: PrecisionNumberValue) {\n return this.#decimal.gt(value.toString().trim());\n }\n\n gte(value: PrecisionNumberValue) {\n return this.#decimal.gte(value.toString().trim());\n }\n\n isFinite() {\n return this.#decimal.isFinite();\n }\n\n isInteger() {\n return this.#decimal.isInteger();\n }\n\n isNaN() {\n return this.#decimal.isNaN();\n }\n\n isNegative() {\n return this.#decimal.isNegative();\n }\n\n isPositive() {\n return this.#decimal.isPositive();\n }\n\n isZero() {\n return this.#decimal.isZero();\n }\n\n lt(value: PrecisionNumberValue) {\n return this.#decimal.lt(value.toString().trim());\n }\n\n lte(value: PrecisionNumberValue) {\n return this.#decimal.lte(value.toString().trim());\n }\n\n minus(value: PrecisionNumberValue) {\n this.#decimal = this.#decimalToFixedDecimal(this.#decimal.minus(value.toString().trim()));\n return this;\n }\n\n negate() {\n this.#decimal = this.#decimalToFixedDecimal(this.#decimal.negated());\n return this;\n }\n\n plus(value: PrecisionNumberValue) {\n this.#decimal = this.#decimalToFixedDecimal(this.#decimal.plus(value.toString().trim()));\n return this;\n }\n\n times(value: PrecisionNumberValue) {\n this.#decimal = this.#decimalToFixedDecimal(this.#decimal.times(value.toString().trim()));\n return this;\n }\n\n toAbsoluteValue() {\n return new PrecisionNumber(this.#decimal.absoluteValue(), this.#decimalPlaces, this.#rounding);\n }\n\n toDividedBy(value: PrecisionNumberValue) {\n return new PrecisionNumber(\n this.#decimal.dividedBy(value.toString().trim()),\n this.#decimalPlaces,\n this.#rounding,\n );\n }\n\n toJSON() {\n return this.value;\n }\n\n toMinus(value: PrecisionNumberValue) {\n return new PrecisionNumber(this.#decimal.minus(value.toString().trim()), this.#decimalPlaces, this.#rounding);\n }\n\n toNegated() {\n return new PrecisionNumber(this.#decimal.negated(), this.#decimalPlaces, this.#rounding);\n }\n\n toPlus(value: PrecisionNumberValue) {\n return new PrecisionNumber(this.#decimal.plus(value.toString().trim()), this.#decimalPlaces, this.#rounding);\n }\n\n toString() {\n return this.value;\n }\n\n toFixed(decimalPlaces: number = this.#decimalPlaces, rounding: Decimal.Rounding = this.#rounding) {\n return this.#decimal.toFixed(decimalPlaces, rounding);\n }\n\n toTimes(value: PrecisionNumberValue) {\n return new PrecisionNumber(this.#decimal.times(value.toString().trim()), this.#decimalPlaces, this.#rounding);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAoBA,IAAa,kBAAb,MAAa,gBAAgB;CAEzB,CAASA;CACT,CAASC;CACT;CAEA,YACI,QAA8B,KAC9B,gBAAwB,GACxB,WAA6B,QAAQ,YACvC;AACE,QAAKD,gBAAiB;AACtB,QAAKC,WAAY;AACjB,QAAKC,UAAW,MAAKC,sBAAuB,IAAI,QAAQ,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;;CAIrF,CAAC,OAAO,IAAI,6BAA6B,IAAI;AACzC,SAAO,KAAK;;CAGhB,CAAC,OAAO,aAAa,MAAc;AAC/B,MAAI,SAAS,SAAU,QAAO,MAAKD,QAAS,UAAU;AACtD,SAAO,KAAK;;CAIhB,uBAAuB,SAAkB;AACrC,SAAO,QAAQ,gBAAgB,MAAKF,eAAgB,MAAKC,SAAU;;CAIvE,IAAI,QAAQ;AACR,SAAO,MAAKC,QAAS,QAAQ,MAAKF,eAAgB,MAAKC,SAAU;;CAIrE,OAAO,QACH,OACA,gBAAwB,GACxB,WAA6B,QAAQ,YACvC;AACE,SAAO,IAAI,QAAQ,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,eAAe,SAAS;;CAIhF,gBAAgB;AACZ,QAAKC,UAAW,MAAKC,sBAAuB,MAAKD,QAAS,eAAe,CAAC;AAC1E,SAAO;;CAGX,UAAU,OAA6B;AACnC,QAAKA,UAAW,MAAKC,sBAAuB,MAAKD,QAAS,UAAU,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;AAC7F,SAAO;;CAGX,OAAO,OAA6B;AAChC,SAAO,MAAKA,QAAS,OAAO,MAAM,UAAU,CAAC,MAAM,CAAC;;CAGxD,GAAG,OAA6B;AAC5B,SAAO,MAAKA,QAAS,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC;;CAGpD,IAAI,OAA6B;AAC7B,SAAO,MAAKA,QAAS,IAAI,MAAM,UAAU,CAAC,MAAM,CAAC;;CAGrD,WAAW;AACP,SAAO,MAAKA,QAAS,UAAU;;CAGnC,YAAY;AACR,SAAO,MAAKA,QAAS,WAAW;;CAGpC,QAAQ;AACJ,SAAO,MAAKA,QAAS,OAAO;;CAGhC,aAAa;AACT,SAAO,MAAKA,QAAS,YAAY;;CAGrC,aAAa;AACT,SAAO,MAAKA,QAAS,YAAY;;CAGrC,SAAS;AACL,SAAO,MAAKA,QAAS,QAAQ;;CAGjC,GAAG,OAA6B;AAC5B,SAAO,MAAKA,QAAS,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC;;CAGpD,IAAI,OAA6B;AAC7B,SAAO,MAAKA,QAAS,IAAI,MAAM,UAAU,CAAC,MAAM,CAAC;;CAGrD,MAAM,OAA6B;AAC/B,QAAKA,UAAW,MAAKC,sBAAuB,MAAKD,QAAS,MAAM,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;AACzF,SAAO;;CAGX,SAAS;AACL,QAAKA,UAAW,MAAKC,sBAAuB,MAAKD,QAAS,SAAS,CAAC;AACpE,SAAO;;CAGX,KAAK,OAA6B;AAC9B,QAAKA,UAAW,MAAKC,sBAAuB,MAAKD,QAAS,KAAK,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;AACxF,SAAO;;CAGX,MAAM,OAA6B;AAC/B,QAAKA,UAAW,MAAKC,sBAAuB,MAAKD,QAAS,MAAM,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;AACzF,SAAO;;CAGX,kBAAkB;AACd,SAAO,IAAI,gBAAgB,MAAKA,QAAS,eAAe,EAAE,MAAKF,eAAgB,MAAKC,SAAU;;CAGlG,YAAY,OAA6B;AACrC,SAAO,IAAI,gBACP,MAAKC,QAAS,UAAU,MAAM,UAAU,CAAC,MAAM,CAAC,EAChD,MAAKF,eACL,MAAKC,SACR;;CAGL,SAAS;AACL,SAAO,KAAK;;CAGhB,QAAQ,OAA6B;AACjC,SAAO,IAAI,gBAAgB,MAAKC,QAAS,MAAM,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,MAAKF,eAAgB,MAAKC,SAAU;;CAGjH,YAAY;AACR,SAAO,IAAI,gBAAgB,MAAKC,QAAS,SAAS,EAAE,MAAKF,eAAgB,MAAKC,SAAU;;CAG5F,OAAO,OAA6B;AAChC,SAAO,IAAI,gBAAgB,MAAKC,QAAS,KAAK,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,MAAKF,eAAgB,MAAKC,SAAU;;CAGhH,WAAW;AACP,SAAO,KAAK;;CAGhB,QAAQ,gBAAwB,MAAKD,eAAgB,WAA6B,MAAKC,UAAW;AAC9F,SAAO,MAAKC,QAAS,QAAQ,eAAe,SAAS;;CAGzD,QAAQ,OAA6B;AACjC,SAAO,IAAI,gBAAgB,MAAKA,QAAS,MAAM,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,MAAKF,eAAgB,MAAKC,SAAU"}
1
+ {"version":3,"file":"precision-number.js","names":["#decimalPlaces","#rounding","#decimal","#decimalToFixedDecimal"],"sources":["../../src/classes/precision-number.ts"],"sourcesContent":["import { Decimal } from 'decimal.js';\n\nexport type PrecisionNumberValue = Decimal.Value | PrecisionNumber | { toString: () => string };\n\n/**\n * Class representing a precision number with configurable decimal places and rounding.\n *\n * This class leverages the Decimal.js library to ensure accurate arithmetic operations\n * with floating point numbers. It provides methods for various arithmetic operations\n * (addition, subtraction, multiplication, division) as well as comparison and utility\n * methods to check the state of the number (e.g., if it is finite, an integer, zero, etc.).\n *\n * The class also includes custom symbol methods to support Node.js inspection and primitive\n * type conversion.\n *\n * The class supports in-place modification methods that alter the current instance's value,\n * such as `plus`, `minus`, `times`, `dividedBy`, and others. Additionally, methods prefixed\n * with `to` (e.g., `toPlus`, `toMinus`) return a new instance of `PrecisionNumber` with the\n * modified value, leaving the original instance unchanged.\n */\nexport class PrecisionNumber {\n // Private properties\n readonly #decimalPlaces: number;\n readonly #rounding: Decimal.Rounding;\n #decimal: Decimal;\n\n constructor(\n value: PrecisionNumberValue = '0',\n decimalPlaces: number = 2,\n rounding: Decimal.Rounding = Decimal.ROUND_DOWN,\n ) {\n this.#decimalPlaces = decimalPlaces;\n this.#rounding = rounding;\n this.#decimal = this.#decimalToFixedDecimal(new Decimal(value.toString().trim()));\n }\n\n // Symbols\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return this.value;\n }\n\n [Symbol.toPrimitive](hint: string) {\n if (hint === 'number') return this.#decimal.toNumber();\n return this.value;\n }\n\n // Private methods\n #decimalToFixedDecimal(decimal: Decimal) {\n return decimal.toDecimalPlaces(this.#decimalPlaces, this.#rounding);\n }\n\n // Public getters\n get value() {\n return this.#decimal.toFixed(this.#decimalPlaces, this.#rounding);\n }\n\n // Static methods\n static toFixed(\n value: PrecisionNumberValue,\n decimalPlaces: number = 2,\n rounding: Decimal.Rounding = Decimal.ROUND_DOWN,\n ) {\n return new Decimal(value.toString().trim()).toFixed(decimalPlaces, rounding);\n }\n\n // Public methods\n absoluteValue() {\n this.#decimal = this.#decimalToFixedDecimal(this.#decimal.absoluteValue());\n return this;\n }\n\n dividedBy(value: PrecisionNumberValue) {\n this.#decimal = this.#decimalToFixedDecimal(this.#decimal.dividedBy(value.toString().trim()));\n return this;\n }\n\n equals(value: PrecisionNumberValue) {\n return this.#decimal.equals(value.toString().trim());\n }\n\n gt(value: PrecisionNumberValue) {\n return this.#decimal.gt(value.toString().trim());\n }\n\n gte(value: PrecisionNumberValue) {\n return this.#decimal.gte(value.toString().trim());\n }\n\n isFinite() {\n return this.#decimal.isFinite();\n }\n\n isInteger() {\n return this.#decimal.isInteger();\n }\n\n isNaN() {\n return this.#decimal.isNaN();\n }\n\n isNegative() {\n return this.#decimal.isNegative();\n }\n\n isPositive() {\n return this.#decimal.isPositive();\n }\n\n isZero() {\n return this.#decimal.isZero();\n }\n\n lt(value: PrecisionNumberValue) {\n return this.#decimal.lt(value.toString().trim());\n }\n\n lte(value: PrecisionNumberValue) {\n return this.#decimal.lte(value.toString().trim());\n }\n\n minus(value: PrecisionNumberValue) {\n this.#decimal = this.#decimalToFixedDecimal(this.#decimal.minus(value.toString().trim()));\n return this;\n }\n\n negate() {\n this.#decimal = this.#decimalToFixedDecimal(this.#decimal.negated());\n return this;\n }\n\n plus(value: PrecisionNumberValue) {\n this.#decimal = this.#decimalToFixedDecimal(this.#decimal.plus(value.toString().trim()));\n return this;\n }\n\n times(value: PrecisionNumberValue) {\n this.#decimal = this.#decimalToFixedDecimal(this.#decimal.times(value.toString().trim()));\n return this;\n }\n\n toAbsoluteValue() {\n return new PrecisionNumber(this.#decimal.absoluteValue(), this.#decimalPlaces, this.#rounding);\n }\n\n toDividedBy(value: PrecisionNumberValue) {\n return new PrecisionNumber(\n this.#decimal.dividedBy(value.toString().trim()),\n this.#decimalPlaces,\n this.#rounding,\n );\n }\n\n toJSON() {\n return this.value;\n }\n\n toMinus(value: PrecisionNumberValue) {\n return new PrecisionNumber(this.#decimal.minus(value.toString().trim()), this.#decimalPlaces, this.#rounding);\n }\n\n toNegated() {\n return new PrecisionNumber(this.#decimal.negated(), this.#decimalPlaces, this.#rounding);\n }\n\n toPlus(value: PrecisionNumberValue) {\n return new PrecisionNumber(this.#decimal.plus(value.toString().trim()), this.#decimalPlaces, this.#rounding);\n }\n\n toString() {\n return this.value;\n }\n\n toFixed(decimalPlaces: number = this.#decimalPlaces, rounding: Decimal.Rounding = this.#rounding) {\n return this.#decimal.toFixed(decimalPlaces, rounding);\n }\n\n toTimes(value: PrecisionNumberValue) {\n return new PrecisionNumber(this.#decimal.times(value.toString().trim()), this.#decimalPlaces, this.#rounding);\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ssh-client.d.ts","names":[],"sources":["../../src/classes/ssh-client.ts"],"sourcesContent":[],"mappings":";;;;;;;cAkBM;;EAAA,SAAA,KAAA,EAAA,CAAA;EAYO,SAAA,KAAS,EAAA,CAAA;EAM+E,SAAA,IAAA,EAAA,CAAA;EActF,SAAA,MAAA,EAAA,CAAA;EAIE,SAAA,MAAA,EAAA,CAAA,GAAA;EAoB0B,SAAA,KAAA,EAAA,CAAA;EAAqB,SAAA,OAAA,EAAA,GAAA;EAAA,SAAA,IAAA,EAAA,CAAA;CAIf;AAAqB,cAhDzD,SAAA,CAgDyD;EAAA,CAAA,OAAA;EAa/B,WAAA,CAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,IAAA,CAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAvD8D,MAuD9D;EAA2B,IAAA,OAAA,CAAA,CAAA,EAzCnD,OAyCmD;EAAoB,OAAA,CAAA,CAAA,EArCrE,OAqCqE,CAAA,OAAA,CAAA;EAAyB,UAAA,CAAA,CAAA,EAAA,OAAA;EAAxE,WAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAjBI,qBAiBJ,CAAA,EAjByB,OAiBzB,CAAA,IAAA,GAjByB,SAAA,CAAA,sBAiBzB,CAAA;EAA2B,iBAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAbjB,qBAaiB,CAAA,EAbI,OAaJ,CAAA,IAAA,GAbI,SAAA,CAAA,sBAaJ,CAAA;EAAoB,MAAA,EAAA,CAAA,cAAA,EAA/C,QAA+C,EAAA,eAAA,EAApB,QAAoB,EAAA,OAAA,CAAA,EAAA,yBAAA,EAAA,GAAyB,OAAzB,CAAA,OAAA,CAAA;EAAyB,YAAA,CAAA,cAAA,EAAxE,QAAwE,EAAA,eAAA,EAA7C,QAA6C,EAAA,OAAA,CAAA,EAAzB,yBAAyB,CAAA,EAAA,OAAA,CAAA,OAAA,CAAA;EAU5F,OAAA,CAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EACC,QADD,EAAA,SAAA,CAAA,EAEC,QAFD,CAEU,WAFV,CAAA,EAAA,eAAA,CAAA,EAGO,QAHP,CAGgB,eAHhB,CAAA,CAAA,EAGgC,OAHhC,CAAA,OAAA,CAAA;EACC,WAAA,CAAA,CAAA,EAAA,OAAA;EACS,KAAA,CAAA,IAAA,EAgBP,QAhBO,CAAA,EAgBC,OAhBD,CAAA,OAAA,CAAA;EAAT,MAAA,EAAA,CAAA,cAAA,EA4BmB,QA5BnB,EAAA,eAAA,EA4B8C,QA5B9C,EAAA,OAAA,CAAA,EA4BkE,yBA5BlE,EAAA,GA4B2F,OA5B3F,CAAA,OAAA,CAAA;EACe,YAAA,CAAA,cAAA,EA2BI,QA3BJ,EAAA,eAAA,EA2B+B,QA3B/B,EAAA,OAAA,CAAA,EA2BmD,yBA3BnD,CAAA,EA2B4E,OA3B5E,CAAA,OAAA,CAAA;EAAT,OAAA,CAAA,SAAA,EAqCP,QArCO,EAAA,UAAA,EAsCN,QAtCM,EAAA,SAAA,CAAA,EAuCN,QAvCM,CAuCG,WAvCH,CAAA,EAAA,eAAA,CAAA,EAwCA,QAxCA,CAwCS,eAxCT,CAAA,CAAA,EAwCyB,OAxCzB,CAAA,OAAA,CAAA;EAAyB,QAAA,CAAA,KAAA,EAAA;IAe7B,KAAA,EAoCa,QApCb;IAAQ,MAAA,EAoCuB,QApCvB;EAYS,CAAA,EAAA,EAAA,OAAA,CAAA,EAwBsC,kBAxBtC,CAAA,EAwBwD,OAxBxD,CAAA,OAAA,CAAA;EAA2B,cAAA,CAAA,KAAA,EAAA,MAAA,OAuC3B,qCAvC2B,CAAA,EAAA,IAAA"}
1
+ {"version":3,"file":"ssh-client.d.ts","names":[],"sources":["../../src/classes/ssh-client.ts"],"mappings":";;;;;;;cAkBM,qCAAA;EAAA;;;;;;;;;;cAYO,SAAA;EAAA;cAMG,IAAA,UAAc,QAAA,UAAkB,QAAA,UAAkB,IAAA,WAAmB,aAAA,GAAgB,MAAA;EAAA,IAc7F,OAAA,CAAA,GAAO,OAAA;EAIL,OAAA,CAAA,GAAO,OAAA;EAUb,UAAA,CAAA;EAUA,WAAA,CAAY,OAAA,UAAiB,OAAA,GAAU,qBAAA,GAAqB,OAAA,QAAA,SAAA,CAAA,sBAAA;EAI5D,iBAAA,CAAkB,OAAA,UAAiB,OAAA,GAAU,qBAAA,GAAqB,OAAA,QAAA,SAAA,CAAA,sBAAA;EAWlE,MAAA,GAAM,cAAA,EAE6B,QAAA,EAAQ,eAAA,EAAmB,QAAA,EAAQ,OAAA,GAAY,yBAAA,KAAyB,OAAA;EAArG,YAAA,CAAa,cAAA,EAAgB,QAAA,EAAU,eAAA,EAAiB,QAAA,EAAU,OAAA,GAAU,yBAAA,GAAyB,OAAA;EASrG,OAAA,CACF,SAAA,EAAW,QAAA,EACX,UAAA,EAAY,QAAA,EACZ,SAAA,GAAY,QAAA,CAAS,WAAA,GACrB,eAAA,GAAkB,QAAA,CAAS,eAAA,IAAgB,OAAA;EAW/C,WAAA,CAAA;EAIM,KAAA,CAAM,IAAA,EAAM,QAAA,GAAQ,OAAA;EAU1B,MAAA,GAAM,cAAA,EAE6B,QAAA,EAAQ,eAAA,EAAmB,QAAA,EAAQ,OAAA,GAAY,yBAAA,KAAyB,OAAA;EAArG,YAAA,CAAa,cAAA,EAAgB,QAAA,EAAU,eAAA,EAAiB,QAAA,EAAU,OAAA,GAAU,yBAAA,GAAyB,OAAA;EASrG,OAAA,CACF,SAAA,EAAW,QAAA,EACX,UAAA,EAAY,QAAA,EACZ,SAAA,GAAY,QAAA,CAAS,WAAA,GACrB,eAAA,GAAkB,QAAA,CAAS,eAAA,IAAgB,OAAA;EAWzC,QAAA,CAAS,KAAA;IAAS,KAAA,EAAO,QAAA;IAAU,MAAA,EAAQ,QAAA;EAAA,KAAc,OAAA,GAAU,kBAAA,GAAkB,OAAA;EAe3F,cAAA,CAAe,KAAA,eAAoB,qCAAA;AAAA"}
@@ -1,6 +1,5 @@
1
1
  import { createConsola } from "consola";
2
2
  import { NodeSSH } from "node-ssh";
3
-
4
3
  //#region src/classes/ssh-client.ts
5
4
  const loggerLevelStringToConsolaLogLevelMap = {
6
5
  debug: 4,
@@ -125,7 +124,7 @@ var SshClient = class {
125
124
  this.#logger.level = loggerLevelStringToConsolaLogLevelMap[level];
126
125
  }
127
126
  };
128
-
129
127
  //#endregion
130
128
  export { SshClient };
129
+
131
130
  //# sourceMappingURL=ssh-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ssh-client.js","names":["#connectConfig","#logger","#nodeSsh"],"sources":["../../src/classes/ssh-client.ts"],"sourcesContent":["import { createConsola } from 'consola';\nimport type { ConsolaInstance } from 'consola';\nimport { NodeSSH } from 'node-ssh';\nimport type {\n Config,\n SSHExecCommandOptions,\n SSHGetPutDirectoryOptions,\n SSHPutFilesOptions,\n} from 'node-ssh';\nimport type {\n SFTPWrapper,\n TransferOptions,\n} from 'ssh2';\n\nimport type { Nullable } from '../types';\n\nimport type { PathLike } from './path';\n\nconst loggerLevelStringToConsolaLogLevelMap = {\n debug: 4,\n error: 0,\n fatal: 0,\n info: 3,\n normal: 2,\n silent: -999,\n trace: 5,\n verbose: 999,\n warn: 1,\n} as const;\n\nexport class SshClient {\n readonly #connectConfig: Config;\n readonly #logger: ConsolaInstance;\n\n #nodeSsh: NodeSSH;\n\n constructor(host: string, username: string, password: string, port: number = 22, connectConfig?: Config) {\n this.#connectConfig = {\n ...connectConfig,\n host,\n password,\n port,\n username,\n };\n\n this.#logger = createConsola();\n this.#nodeSsh = new NodeSSH();\n if (process.env.NODE_ENV === 'production') this.setLoggerLevel('error');\n }\n\n get nodeSsh() {\n return this.#nodeSsh;\n }\n\n async connect() {\n try {\n this.#nodeSsh = await this.#nodeSsh.connect(this.#connectConfig);\n return true;\n } catch (error) {\n this.#logger.error(error);\n return false;\n }\n }\n\n disconnect() {\n try {\n this.#nodeSsh.dispose();\n return true;\n } catch (error) {\n this.#logger.error(error);\n return false;\n }\n }\n\n execCommand(command: string, options?: SSHExecCommandOptions) {\n return this.#nodeSsh.execCommand(command, options).catch(() => {});\n }\n\n execCommandWithIo(command: string, options?: SSHExecCommandOptions) {\n return this.execCommand(\n command,\n {\n ...options,\n onStderr: (data) => process.stderr.write(data.toString()),\n onStdout: (data) => process.stdout.write(data.toString()),\n },\n );\n }\n\n getDir = this.getDirectory;\n\n async getDirectory(localDirectory: PathLike, remoteDirectory: PathLike, options?: SSHGetPutDirectoryOptions) {\n try {\n return await this.#nodeSsh.getDirectory(localDirectory.toString(), remoteDirectory.toString(), options);\n } catch (error) {\n this.#logger.error(error);\n return false;\n }\n }\n\n async getFile(\n localFile: PathLike,\n remoteFile: PathLike,\n givenSftp?: Nullable<SFTPWrapper>,\n transferOptions?: Nullable<TransferOptions>,\n ) {\n try {\n await this.#nodeSsh.getFile(localFile.toString(), remoteFile.toString(), givenSftp, transferOptions);\n return true;\n } catch (error) {\n this.#logger.error(error);\n return false;\n }\n }\n\n isConnected() {\n return this.#nodeSsh.isConnected();\n }\n\n async mkdir(path: PathLike) {\n try {\n await this.#nodeSsh.mkdir(path.toString());\n return true;\n } catch (error) {\n this.#logger.error(error);\n return false;\n }\n }\n\n putDir = this.putDirectory;\n\n async putDirectory(localDirectory: PathLike, remoteDirectory: PathLike, options?: SSHGetPutDirectoryOptions) {\n try {\n return await this.#nodeSsh.putDirectory(localDirectory.toString(), remoteDirectory.toString(), options);\n } catch (error) {\n this.#logger.error(error);\n return false;\n }\n }\n\n async putFile(\n localFile: PathLike,\n remoteFile: PathLike,\n givenSftp?: Nullable<SFTPWrapper>,\n transferOptions?: Nullable<TransferOptions>,\n ) {\n try {\n await this.#nodeSsh.putFile(localFile.toString(), remoteFile.toString(), givenSftp, transferOptions);\n return true;\n } catch (error) {\n this.#logger.error(error);\n return false;\n }\n }\n\n async putFiles(files: { local: PathLike; remote: PathLike }[], options?: SSHPutFilesOptions) {\n try {\n const convertedFiles = files.map(({ local, remote }) => ({\n local: local.toString(),\n remote: remote.toString(),\n }));\n\n await this.#nodeSsh.putFiles(convertedFiles, options);\n return true;\n } catch (error) {\n this.#logger.error(error);\n return false;\n }\n }\n\n setLoggerLevel(level: keyof typeof loggerLevelStringToConsolaLogLevelMap) {\n this.#logger.level = loggerLevelStringToConsolaLogLevelMap[level];\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ssh-client.js","names":["#connectConfig","#logger","#nodeSsh"],"sources":["../../src/classes/ssh-client.ts"],"sourcesContent":["import { createConsola } from 'consola';\nimport type { ConsolaInstance } from 'consola';\nimport { NodeSSH } from 'node-ssh';\nimport type {\n Config,\n SSHExecCommandOptions,\n SSHGetPutDirectoryOptions,\n SSHPutFilesOptions,\n} from 'node-ssh';\nimport type {\n SFTPWrapper,\n TransferOptions,\n} from 'ssh2';\n\nimport type { Nullable } from '../types';\n\nimport type { PathLike } from './path';\n\nconst loggerLevelStringToConsolaLogLevelMap = {\n debug: 4,\n error: 0,\n fatal: 0,\n info: 3,\n normal: 2,\n silent: -999,\n trace: 5,\n verbose: 999,\n warn: 1,\n} as const;\n\nexport class SshClient {\n readonly #connectConfig: Config;\n readonly #logger: ConsolaInstance;\n\n #nodeSsh: NodeSSH;\n\n constructor(host: string, username: string, password: string, port: number = 22, connectConfig?: Config) {\n this.#connectConfig = {\n ...connectConfig,\n host,\n password,\n port,\n username,\n };\n\n this.#logger = createConsola();\n this.#nodeSsh = new NodeSSH();\n if (process.env.NODE_ENV === 'production') this.setLoggerLevel('error');\n }\n\n get nodeSsh() {\n return this.#nodeSsh;\n }\n\n async connect() {\n try {\n this.#nodeSsh = await this.#nodeSsh.connect(this.#connectConfig);\n return true;\n } catch (error) {\n this.#logger.error(error);\n return false;\n }\n }\n\n disconnect() {\n try {\n this.#nodeSsh.dispose();\n return true;\n } catch (error) {\n this.#logger.error(error);\n return false;\n }\n }\n\n execCommand(command: string, options?: SSHExecCommandOptions) {\n return this.#nodeSsh.execCommand(command, options).catch(() => {});\n }\n\n execCommandWithIo(command: string, options?: SSHExecCommandOptions) {\n return this.execCommand(\n command,\n {\n ...options,\n onStderr: (data) => process.stderr.write(data.toString()),\n onStdout: (data) => process.stdout.write(data.toString()),\n },\n );\n }\n\n getDir = this.getDirectory;\n\n async getDirectory(localDirectory: PathLike, remoteDirectory: PathLike, options?: SSHGetPutDirectoryOptions) {\n try {\n return await this.#nodeSsh.getDirectory(localDirectory.toString(), remoteDirectory.toString(), options);\n } catch (error) {\n this.#logger.error(error);\n return false;\n }\n }\n\n async getFile(\n localFile: PathLike,\n remoteFile: PathLike,\n givenSftp?: Nullable<SFTPWrapper>,\n transferOptions?: Nullable<TransferOptions>,\n ) {\n try {\n await this.#nodeSsh.getFile(localFile.toString(), remoteFile.toString(), givenSftp, transferOptions);\n return true;\n } catch (error) {\n this.#logger.error(error);\n return false;\n }\n }\n\n isConnected() {\n return this.#nodeSsh.isConnected();\n }\n\n async mkdir(path: PathLike) {\n try {\n await this.#nodeSsh.mkdir(path.toString());\n return true;\n } catch (error) {\n this.#logger.error(error);\n return false;\n }\n }\n\n putDir = this.putDirectory;\n\n async putDirectory(localDirectory: PathLike, remoteDirectory: PathLike, options?: SSHGetPutDirectoryOptions) {\n try {\n return await this.#nodeSsh.putDirectory(localDirectory.toString(), remoteDirectory.toString(), options);\n } catch (error) {\n this.#logger.error(error);\n return false;\n }\n }\n\n async putFile(\n localFile: PathLike,\n remoteFile: PathLike,\n givenSftp?: Nullable<SFTPWrapper>,\n transferOptions?: Nullable<TransferOptions>,\n ) {\n try {\n await this.#nodeSsh.putFile(localFile.toString(), remoteFile.toString(), givenSftp, transferOptions);\n return true;\n } catch (error) {\n this.#logger.error(error);\n return false;\n }\n }\n\n async putFiles(files: { local: PathLike; remote: PathLike }[], options?: SSHPutFilesOptions) {\n try {\n const convertedFiles = files.map(({ local, remote }) => ({\n local: local.toString(),\n remote: remote.toString(),\n }));\n\n await this.#nodeSsh.putFiles(convertedFiles, options);\n return true;\n } catch (error) {\n this.#logger.error(error);\n return false;\n }\n }\n\n setLoggerLevel(level: keyof typeof loggerLevelStringToConsolaLogLevelMap) {\n this.#logger.level = loggerLevelStringToConsolaLogLevelMap[level];\n }\n}\n"],"mappings":";;;AAkBA,MAAM,wCAAwC;CAC1C,OAAO;CACP,OAAO;CACP,OAAO;CACP,MAAM;CACN,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,SAAS;CACT,MAAM;CACT;AAED,IAAa,YAAb,MAAuB;CACnB;CACA;CAEA;CAEA,YAAY,MAAc,UAAkB,UAAkB,OAAe,IAAI,eAAwB;AACrG,QAAA,gBAAsB;GAClB,GAAG;GACH;GACA;GACA;GACA;GACH;AAED,QAAA,SAAe,eAAe;AAC9B,QAAA,UAAgB,IAAI,SAAS;AAC7B,MAAI,QAAQ,IAAI,aAAa,aAAc,MAAK,eAAe,QAAQ;;CAG3E,IAAI,UAAU;AACV,SAAO,MAAA;;CAGX,MAAM,UAAU;AACZ,MAAI;AACA,SAAA,UAAgB,MAAM,MAAA,QAAc,QAAQ,MAAA,cAAoB;AAChE,UAAO;WACF,OAAO;AACZ,SAAA,OAAa,MAAM,MAAM;AACzB,UAAO;;;CAIf,aAAa;AACT,MAAI;AACA,SAAA,QAAc,SAAS;AACvB,UAAO;WACF,OAAO;AACZ,SAAA,OAAa,MAAM,MAAM;AACzB,UAAO;;;CAIf,YAAY,SAAiB,SAAiC;AAC1D,SAAO,MAAA,QAAc,YAAY,SAAS,QAAQ,CAAC,YAAY,GAAG;;CAGtE,kBAAkB,SAAiB,SAAiC;AAChE,SAAO,KAAK,YACR,SACA;GACI,GAAG;GACH,WAAW,SAAS,QAAQ,OAAO,MAAM,KAAK,UAAU,CAAC;GACzD,WAAW,SAAS,QAAQ,OAAO,MAAM,KAAK,UAAU,CAAC;GAC5D,CACJ;;CAGL,SAAS,KAAK;CAEd,MAAM,aAAa,gBAA0B,iBAA2B,SAAqC;AACzG,MAAI;AACA,UAAO,MAAM,MAAA,QAAc,aAAa,eAAe,UAAU,EAAE,gBAAgB,UAAU,EAAE,QAAQ;WAClG,OAAO;AACZ,SAAA,OAAa,MAAM,MAAM;AACzB,UAAO;;;CAIf,MAAM,QACF,WACA,YACA,WACA,iBACF;AACE,MAAI;AACA,SAAM,MAAA,QAAc,QAAQ,UAAU,UAAU,EAAE,WAAW,UAAU,EAAE,WAAW,gBAAgB;AACpG,UAAO;WACF,OAAO;AACZ,SAAA,OAAa,MAAM,MAAM;AACzB,UAAO;;;CAIf,cAAc;AACV,SAAO,MAAA,QAAc,aAAa;;CAGtC,MAAM,MAAM,MAAgB;AACxB,MAAI;AACA,SAAM,MAAA,QAAc,MAAM,KAAK,UAAU,CAAC;AAC1C,UAAO;WACF,OAAO;AACZ,SAAA,OAAa,MAAM,MAAM;AACzB,UAAO;;;CAIf,SAAS,KAAK;CAEd,MAAM,aAAa,gBAA0B,iBAA2B,SAAqC;AACzG,MAAI;AACA,UAAO,MAAM,MAAA,QAAc,aAAa,eAAe,UAAU,EAAE,gBAAgB,UAAU,EAAE,QAAQ;WAClG,OAAO;AACZ,SAAA,OAAa,MAAM,MAAM;AACzB,UAAO;;;CAIf,MAAM,QACF,WACA,YACA,WACA,iBACF;AACE,MAAI;AACA,SAAM,MAAA,QAAc,QAAQ,UAAU,UAAU,EAAE,WAAW,UAAU,EAAE,WAAW,gBAAgB;AACpG,UAAO;WACF,OAAO;AACZ,SAAA,OAAa,MAAM,MAAM;AACzB,UAAO;;;CAIf,MAAM,SAAS,OAAgD,SAA8B;AACzF,MAAI;GACA,MAAM,iBAAiB,MAAM,KAAK,EAAE,OAAO,cAAc;IACrD,OAAO,MAAM,UAAU;IACvB,QAAQ,OAAO,UAAU;IAC5B,EAAE;AAEH,SAAM,MAAA,QAAc,SAAS,gBAAgB,QAAQ;AACrD,UAAO;WACF,OAAO;AACZ,SAAA,OAAa,MAAM,MAAM;AACzB,UAAO;;;CAIf,eAAe,OAA2D;AACtE,QAAA,OAAa,QAAQ,sCAAsC"}
@@ -1 +1 @@
1
- {"version":3,"file":"clipboard.d.ts","names":[],"sources":["../src/clipboard.ts"],"sourcesContent":[],"mappings":";KAAK,UAAA;EAAA,KAAA,EAAA,OAAU;EAgCO,EAAA,EAAA,KAAA;CAA0B,GAAA;EAAgB,EAAA,EAAA,IAAA;CAA+B;;;AA8C/F;;;;;;;;;;;;;;;;;;;;;;;;;;iBA9CsB,mBAAA,OAA0B,gBAAgB,uBAAuB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8CzE,mBAAA,gBAAmC,QAAQ"}
1
+ {"version":3,"file":"clipboard.d.ts","names":[],"sources":["../src/clipboard.ts"],"mappings":";KAAK,UAAA;EACC,KAAA;EAAgB,EAAA;AAAA;EAChB,EAAA;AAAA;;;;;AA8BN;;;;;;;;;;;;;;;;;AA8CA;;;;;;;iBA9CsB,mBAAA,CAAoB,IAAA,EAAM,IAAA,EAAM,OAAA,GAAU,oBAAA,GAAuB,OAAA,CAAQ,UAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8CzE,mBAAA,CAAoB,IAAA,WAAe,OAAA,CAAQ,UAAA"}
package/dist/clipboard.js CHANGED
@@ -80,7 +80,7 @@ async function copyTextToClipboard(text) {
80
80
  };
81
81
  }
82
82
  }
83
-
84
83
  //#endregion
85
84
  export { copyBlobToClipboard, copyTextToClipboard };
85
+
86
86
  //# sourceMappingURL=clipboard.js.map
package/dist/consola.d.ts CHANGED
@@ -1,7 +1,6 @@
1
- import * as consola0 from "consola";
1
+ import * as consola from "consola";
2
2
 
3
3
  //#region src/consola.d.ts
4
-
5
4
  /**
6
5
  * A consola logger instance.
7
6
  *
@@ -23,8 +22,8 @@ import * as consola0 from "consola";
23
22
  * logger.level = 3;
24
23
  * ```
25
24
  */
26
- declare const consolaLogger: consola0.ConsolaInstance;
27
- declare const logger: consola0.ConsolaInstance;
25
+ declare const consolaLogger: consola.ConsolaInstance;
26
+ declare const logger: consola.ConsolaInstance;
28
27
  //#endregion
29
28
  export { consolaLogger, logger };
30
29
  //# sourceMappingURL=consola.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"consola.d.ts","names":[],"sources":["../src/consola.ts"],"sourcesContent":[],"mappings":";;;;;;;AAuBA;AACA;;;;;;;;;;;;;;;;;cADa,eAA+B,QAAA,CAAlB;cACb,QAAsB,QAAA,CAAhB"}
1
+ {"version":3,"file":"consola.d.ts","names":[],"sources":["../src/consola.ts"],"mappings":";;;;;;AAuBA;;;;;AACA;;;;;;;;;;;;;cADa,aAAA,EAA+B,OAAA,CAAlB,eAAA;AAAA,cACb,MAAA,EAAsB,OAAA,CAAhB,eAAA"}
package/dist/consola.js CHANGED
@@ -1,5 +1,4 @@
1
1
  import { createConsola } from "consola";
2
-
3
2
  //#region src/consola.ts
4
3
  /**
5
4
  * A consola logger instance.
@@ -26,7 +25,7 @@ const consolaLogger = createConsola();
26
25
  const logger = consolaLogger;
27
26
  if (process.env.CONSOLA_LOGGER_LEVEL !== void 0) consolaLogger.level = +process.env.CONSOLA_LOGGER_LEVEL;
28
27
  else consolaLogger.level = process.env.NODE_ENV === "production" ? 0 : consolaLogger.level;
29
-
30
28
  //#endregion
31
29
  export { consolaLogger, logger };
30
+
32
31
  //# sourceMappingURL=consola.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"consola.js","names":[],"sources":["../src/consola.ts"],"sourcesContent":["import { createConsola } from 'consola';\n\n/**\n * A consola logger instance.\n *\n * The logger's level is determined based on the `CONSOLA_LOGGER_LEVEL` and `NODE_ENV` environment variables.\n * If `CONSOLA_LOGGER_LEVEL` is set, it will be used; otherwise, if `NODE_ENV` is `production`,\n * the level will be set to `0`.\n *\n * To manually change the level, assign the desired level to `logger.level`.\n *\n * See available levels [here](https://github.com/unjs/consola?tab=readme-ov-file#log-level).\n *\n * @example\n * ```typescript\n * import { logger } from '@kikiutils/shared/consola';\n *\n * logger.info('test'); // ℹ test 3:56:30 AM\n *\n * // Manually change the level\n * logger.level = 3;\n * ```\n */\nexport const consolaLogger = createConsola();\nexport const logger = consolaLogger;\nif (process.env.CONSOLA_LOGGER_LEVEL !== undefined) consolaLogger.level = +process.env.CONSOLA_LOGGER_LEVEL;\nelse consolaLogger.level = process.env.NODE_ENV === 'production' ? 0 : consolaLogger.level;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAuBA,MAAa,gBAAgB,eAAe;AAC5C,MAAa,SAAS;AACtB,IAAI,QAAQ,IAAI,yBAAyB,OAAW,eAAc,QAAQ,CAAC,QAAQ,IAAI;IAClF,eAAc,QAAQ,QAAQ,IAAI,aAAa,eAAe,IAAI,cAAc"}
1
+ {"version":3,"file":"consola.js","names":[],"sources":["../src/consola.ts"],"sourcesContent":["import { createConsola } from 'consola';\n\n/**\n * A consola logger instance.\n *\n * The logger's level is determined based on the `CONSOLA_LOGGER_LEVEL` and `NODE_ENV` environment variables.\n * If `CONSOLA_LOGGER_LEVEL` is set, it will be used; otherwise, if `NODE_ENV` is `production`,\n * the level will be set to `0`.\n *\n * To manually change the level, assign the desired level to `logger.level`.\n *\n * See available levels [here](https://github.com/unjs/consola?tab=readme-ov-file#log-level).\n *\n * @example\n * ```typescript\n * import { logger } from '@kikiutils/shared/consola';\n *\n * logger.info('test'); // ℹ test 3:56:30 AM\n *\n * // Manually change the level\n * logger.level = 3;\n * ```\n */\nexport const consolaLogger = createConsola();\nexport const logger = consolaLogger;\nif (process.env.CONSOLA_LOGGER_LEVEL !== undefined) consolaLogger.level = +process.env.CONSOLA_LOGGER_LEVEL;\nelse consolaLogger.level = process.env.NODE_ENV === 'production' ? 0 : consolaLogger.level;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAuBA,MAAa,gBAAgB,eAAe;AAC5C,MAAa,SAAS;AACtB,IAAI,QAAQ,IAAI,yBAAyB,KAAA,EAAW,eAAc,QAAQ,CAAC,QAAQ,IAAI;IAClF,eAAc,QAAQ,QAAQ,IAAI,aAAa,eAAe,IAAI,cAAc"}
@@ -1,7 +1,6 @@
1
1
  import { BinaryLike, BinaryToTextEncoding } from "node:crypto";
2
2
 
3
3
  //#region src/crypto-hash.d.ts
4
-
5
4
  declare function cryptoMd5(data: BinaryLike, outputEncoding?: BinaryToTextEncoding): string;
6
5
  declare function cryptoMd5ToBuffer(data: BinaryLike): NonSharedBuffer;
7
6
  declare function cryptoSha3224(data: BinaryLike, outputEncoding?: BinaryToTextEncoding): string;
@@ -1 +1 @@
1
- {"version":3,"file":"crypto-hash.d.ts","names":[],"sources":["../src/crypto-hash.ts"],"sourcesContent":[],"mappings":";;;;iBAsBgB,SAAA,OAAgB,6BAA4B;iBAI5C,iBAAA,OAAwB,aAAU;iBAIlC,aAAA,OAAoB,6BAA4B;iBAIhD,qBAAA,OAA4B,aAAU;iBAItC,aAAA,OAAoB,6BAA4B;iBAIhD,qBAAA,OAA4B,aAAU;iBAItC,aAAA,OAAoB,6BAA4B;iBAIhD,qBAAA,OAA4B,aAAU;iBAItC,aAAA,OAAoB,6BAA4B;iBAIhD,qBAAA,OAA4B,aAAU"}
1
+ {"version":3,"file":"crypto-hash.d.ts","names":[],"sources":["../src/crypto-hash.ts"],"mappings":";;;iBAsBgB,SAAA,CAAU,IAAA,EAAM,UAAA,EAAY,cAAA,GAAgB,oBAAA;AAAA,iBAI5C,iBAAA,CAAkB,IAAA,EAAM,UAAA,GAAU,eAAA;AAAA,iBAIlC,aAAA,CAAc,IAAA,EAAM,UAAA,EAAY,cAAA,GAAgB,oBAAA;AAAA,iBAIhD,qBAAA,CAAsB,IAAA,EAAM,UAAA,GAAU,eAAA;AAAA,iBAItC,aAAA,CAAc,IAAA,EAAM,UAAA,EAAY,cAAA,GAAgB,oBAAA;AAAA,iBAIhD,qBAAA,CAAsB,IAAA,EAAM,UAAA,GAAU,eAAA;AAAA,iBAItC,aAAA,CAAc,IAAA,EAAM,UAAA,EAAY,cAAA,GAAgB,oBAAA;AAAA,iBAIhD,qBAAA,CAAsB,IAAA,EAAM,UAAA,GAAU,eAAA;AAAA,iBAItC,aAAA,CAAc,IAAA,EAAM,UAAA,EAAY,cAAA,GAAgB,oBAAA;AAAA,iBAIhD,qBAAA,CAAsB,IAAA,EAAM,UAAA,GAAU,eAAA"}
@@ -1,5 +1,4 @@
1
1
  import { createHash } from "node:crypto";
2
-
3
2
  //#region src/crypto-hash.ts
4
3
  /**
5
4
  * This file provides a set of functions for creating hash digests using different algorithms and bit lengths.
@@ -46,7 +45,7 @@ function cryptoSha3512(data, outputEncoding = "hex") {
46
45
  function cryptoSha3512ToBuffer(data) {
47
46
  return createHash("sha3-512").update(data).digest();
48
47
  }
49
-
50
48
  //#endregion
51
49
  export { cryptoMd5, cryptoMd5ToBuffer, cryptoSha3224, cryptoSha3224ToBuffer, cryptoSha3256, cryptoSha3256ToBuffer, cryptoSha3384, cryptoSha3384ToBuffer, cryptoSha3512, cryptoSha3512ToBuffer };
50
+
52
51
  //# sourceMappingURL=crypto-hash.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"crypto-hash.js","names":[],"sources":["../src/crypto-hash.ts"],"sourcesContent":["/**\n * This file provides a set of functions for creating hash digests using different algorithms and bit lengths.\n * It includes functions for generating SHA-3 hash digests with bit lengths of 224, 256, 384, and 512,\n * as well as a function for generating MD5 hash digests.\n *\n * These functions use the Node.js crypto module to generate the hashes.\n * Can only be used in Node.js/Deno/Bun runtimes.\n *\n * @example\n * ```typescript\n * import { cryptoSha3256 } from '@kikiutils/shared/crypto-hash';\n *\n * console.log(cryptoSha3256('test')); // 36f028580bb02cc8272a9a020f4200e346e276ae664e45ee80745574e2f5ab80\n * ```\n */\n\nimport { createHash } from 'node:crypto';\nimport type {\n BinaryLike,\n BinaryToTextEncoding,\n} from 'node:crypto';\n\nexport function cryptoMd5(data: BinaryLike, outputEncoding: BinaryToTextEncoding = 'hex') {\n return createHash('md5').update(data).digest(outputEncoding);\n}\n\nexport function cryptoMd5ToBuffer(data: BinaryLike) {\n return createHash('md5').update(data).digest();\n}\n\nexport function cryptoSha3224(data: BinaryLike, outputEncoding: BinaryToTextEncoding = 'hex') {\n return createHash('sha3-224').update(data).digest(outputEncoding);\n}\n\nexport function cryptoSha3224ToBuffer(data: BinaryLike) {\n return createHash('sha3-224').update(data).digest();\n}\n\nexport function cryptoSha3256(data: BinaryLike, outputEncoding: BinaryToTextEncoding = 'hex') {\n return createHash('sha3-256').update(data).digest(outputEncoding);\n}\n\nexport function cryptoSha3256ToBuffer(data: BinaryLike) {\n return createHash('sha3-256').update(data).digest();\n}\n\nexport function cryptoSha3384(data: BinaryLike, outputEncoding: BinaryToTextEncoding = 'hex') {\n return createHash('sha3-384').update(data).digest(outputEncoding);\n}\n\nexport function cryptoSha3384ToBuffer(data: BinaryLike) {\n return createHash('sha3-384').update(data).digest();\n}\n\nexport function cryptoSha3512(data: BinaryLike, outputEncoding: BinaryToTextEncoding = 'hex') {\n return createHash('sha3-512').update(data).digest(outputEncoding);\n}\n\nexport function cryptoSha3512ToBuffer(data: BinaryLike) {\n return createHash('sha3-512').update(data).digest();\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAsBA,SAAgB,UAAU,MAAkB,iBAAuC,OAAO;AACtF,QAAO,WAAW,MAAM,CAAC,OAAO,KAAK,CAAC,OAAO,eAAe;;AAGhE,SAAgB,kBAAkB,MAAkB;AAChD,QAAO,WAAW,MAAM,CAAC,OAAO,KAAK,CAAC,QAAQ;;AAGlD,SAAgB,cAAc,MAAkB,iBAAuC,OAAO;AAC1F,QAAO,WAAW,WAAW,CAAC,OAAO,KAAK,CAAC,OAAO,eAAe;;AAGrE,SAAgB,sBAAsB,MAAkB;AACpD,QAAO,WAAW,WAAW,CAAC,OAAO,KAAK,CAAC,QAAQ;;AAGvD,SAAgB,cAAc,MAAkB,iBAAuC,OAAO;AAC1F,QAAO,WAAW,WAAW,CAAC,OAAO,KAAK,CAAC,OAAO,eAAe;;AAGrE,SAAgB,sBAAsB,MAAkB;AACpD,QAAO,WAAW,WAAW,CAAC,OAAO,KAAK,CAAC,QAAQ;;AAGvD,SAAgB,cAAc,MAAkB,iBAAuC,OAAO;AAC1F,QAAO,WAAW,WAAW,CAAC,OAAO,KAAK,CAAC,OAAO,eAAe;;AAGrE,SAAgB,sBAAsB,MAAkB;AACpD,QAAO,WAAW,WAAW,CAAC,OAAO,KAAK,CAAC,QAAQ;;AAGvD,SAAgB,cAAc,MAAkB,iBAAuC,OAAO;AAC1F,QAAO,WAAW,WAAW,CAAC,OAAO,KAAK,CAAC,OAAO,eAAe;;AAGrE,SAAgB,sBAAsB,MAAkB;AACpD,QAAO,WAAW,WAAW,CAAC,OAAO,KAAK,CAAC,QAAQ"}
1
+ {"version":3,"file":"crypto-hash.js","names":[],"sources":["../src/crypto-hash.ts"],"sourcesContent":["/**\n * This file provides a set of functions for creating hash digests using different algorithms and bit lengths.\n * It includes functions for generating SHA-3 hash digests with bit lengths of 224, 256, 384, and 512,\n * as well as a function for generating MD5 hash digests.\n *\n * These functions use the Node.js crypto module to generate the hashes.\n * Can only be used in Node.js/Deno/Bun runtimes.\n *\n * @example\n * ```typescript\n * import { cryptoSha3256 } from '@kikiutils/shared/crypto-hash';\n *\n * console.log(cryptoSha3256('test')); // 36f028580bb02cc8272a9a020f4200e346e276ae664e45ee80745574e2f5ab80\n * ```\n */\n\nimport { createHash } from 'node:crypto';\nimport type {\n BinaryLike,\n BinaryToTextEncoding,\n} from 'node:crypto';\n\nexport function cryptoMd5(data: BinaryLike, outputEncoding: BinaryToTextEncoding = 'hex') {\n return createHash('md5').update(data).digest(outputEncoding);\n}\n\nexport function cryptoMd5ToBuffer(data: BinaryLike) {\n return createHash('md5').update(data).digest();\n}\n\nexport function cryptoSha3224(data: BinaryLike, outputEncoding: BinaryToTextEncoding = 'hex') {\n return createHash('sha3-224').update(data).digest(outputEncoding);\n}\n\nexport function cryptoSha3224ToBuffer(data: BinaryLike) {\n return createHash('sha3-224').update(data).digest();\n}\n\nexport function cryptoSha3256(data: BinaryLike, outputEncoding: BinaryToTextEncoding = 'hex') {\n return createHash('sha3-256').update(data).digest(outputEncoding);\n}\n\nexport function cryptoSha3256ToBuffer(data: BinaryLike) {\n return createHash('sha3-256').update(data).digest();\n}\n\nexport function cryptoSha3384(data: BinaryLike, outputEncoding: BinaryToTextEncoding = 'hex') {\n return createHash('sha3-384').update(data).digest(outputEncoding);\n}\n\nexport function cryptoSha3384ToBuffer(data: BinaryLike) {\n return createHash('sha3-384').update(data).digest();\n}\n\nexport function cryptoSha3512(data: BinaryLike, outputEncoding: BinaryToTextEncoding = 'hex') {\n return createHash('sha3-512').update(data).digest(outputEncoding);\n}\n\nexport function cryptoSha3512ToBuffer(data: BinaryLike) {\n return createHash('sha3-512').update(data).digest();\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAsBA,SAAgB,UAAU,MAAkB,iBAAuC,OAAO;AACtF,QAAO,WAAW,MAAM,CAAC,OAAO,KAAK,CAAC,OAAO,eAAe;;AAGhE,SAAgB,kBAAkB,MAAkB;AAChD,QAAO,WAAW,MAAM,CAAC,OAAO,KAAK,CAAC,QAAQ;;AAGlD,SAAgB,cAAc,MAAkB,iBAAuC,OAAO;AAC1F,QAAO,WAAW,WAAW,CAAC,OAAO,KAAK,CAAC,OAAO,eAAe;;AAGrE,SAAgB,sBAAsB,MAAkB;AACpD,QAAO,WAAW,WAAW,CAAC,OAAO,KAAK,CAAC,QAAQ;;AAGvD,SAAgB,cAAc,MAAkB,iBAAuC,OAAO;AAC1F,QAAO,WAAW,WAAW,CAAC,OAAO,KAAK,CAAC,OAAO,eAAe;;AAGrE,SAAgB,sBAAsB,MAAkB;AACpD,QAAO,WAAW,WAAW,CAAC,OAAO,KAAK,CAAC,QAAQ;;AAGvD,SAAgB,cAAc,MAAkB,iBAAuC,OAAO;AAC1F,QAAO,WAAW,WAAW,CAAC,OAAO,KAAK,CAAC,OAAO,eAAe;;AAGrE,SAAgB,sBAAsB,MAAkB;AACpD,QAAO,WAAW,WAAW,CAAC,OAAO,KAAK,CAAC,QAAQ;;AAGvD,SAAgB,cAAc,MAAkB,iBAAuC,OAAO;AAC1F,QAAO,WAAW,WAAW,CAAC,OAAO,KAAK,CAAC,OAAO,eAAe;;AAGrE,SAAgB,sBAAsB,MAAkB;AACpD,QAAO,WAAW,WAAW,CAAC,OAAO,KAAK,CAAC,QAAQ"}
@@ -1 +1 @@
1
- {"version":3,"file":"datetime.d.ts","names":[],"sources":["../src/datetime.ts"],"sourcesContent":[],"mappings":";;;KAkBY,aAAA;;AAAZ;AA6BA;;;;;AA+BA;;;;;;;AAyEA;;;;;;;;;;;;;iBAxGgB,UAAA,OAAiB,QAAQ,uCAA8D;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA+BvF,oBAAA,OACN,YACA;;iBAGa;;;;;;;;;;;;;;;;;;;;;iBAoEP,wBAAA,uBAA+C"}
1
+ {"version":3,"file":"datetime.d.ts","names":[],"sources":["../src/datetime.ts"],"mappings":";;;KAkBY,aAAA;;AAAZ;;;;;AA6BA;;;;;;;;;;;;;;;;AA+BA;;;;;iBA/BgB,UAAA,CAAW,IAAA,EAAM,OAAA,CAAQ,IAAA,QAAY,MAAA,WAAwC,OAAA,GAAU,aAAA;;;;;;;;;;;;;;;;;;;AAwGvG;;;;;;;;;iBAzEgB,oBAAA,CACZ,IAAA,EAAM,IAAA,EACN,IAAA,EAAM,aAAA,EACN,OAAA;EACI,wBAAA;EACA,YAAA,GAAe,GAAA;AAAA;;;;;;;;;;;;;;;;;;;;iBAoEP,wBAAA,CAAyB,UAAA,YAAsB,IAAA"}
package/dist/datetime.js CHANGED
@@ -1,5 +1,4 @@
1
1
  import { endOfDay, endOfMonth, endOfWeek, format, startOfDay, startOfMonth, startOfWeek, subDays, subMonths, subWeeks } from "date-fns";
2
-
3
2
  //#region src/datetime.ts
4
3
  /**
5
4
  * Formats a given date, timestamp, or date string into a specified format.
@@ -125,7 +124,7 @@ function getMidnightDateFromToday(offsetDays = 0) {
125
124
  date.setHours(0, 0, 0, 0);
126
125
  return date;
127
126
  }
128
-
129
127
  //#endregion
130
128
  export { formatDate, getDateRangeFromDate, getMidnightDateFromToday };
129
+
131
130
  //# sourceMappingURL=datetime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"datetime.js","names":["dateFnsFormat","format"],"sources":["../src/datetime.ts"],"sourcesContent":["import {\n format as dateFnsFormat,\n endOfDay,\n endOfMonth,\n endOfWeek,\n startOfDay,\n startOfMonth,\n startOfWeek,\n subDays,\n subMonths,\n subWeeks,\n} from 'date-fns';\nimport type {\n DateArg,\n Day,\n FormatOptions,\n} from 'date-fns';\n\nexport type DateRangeType = 'lastMonth' | 'lastWeek' | 'thisMonth' | 'thisWeek' | 'today' | 'yesterday';\n\n/**\n * Formats a given date, timestamp, or date string into a specified format.\n *\n * This function is a wrapper around `date-fns/format`.\n *\n * @param {DateArg<Date>} date - The input date to format. Can be a Date object, a timestamp, or a string\n * @param {string} [format] - The target format string\n * @param {FormatOptions} [options] - Optional formatting options passed to `date-fns/format`\n *\n * @returns {string} The formatted date string\n *\n * @example\n * ```typescript\n * import { formatDate } from '@kikiutils/shared/datetime';\n *\n * // Format a Date object\n * console.log(formatDate(new Date(), 'yyyy-MM-dd')); // 2024-07-10\n *\n * // Format a timestamp\n * console.log(formatDate(1657814400000, 'yyyy-MM-dd')); // 2022-07-15\n *\n * // Format a date string\n * console.log(formatDate('2024-07-10T00:00:00Z', 'yyyy-MM-dd')); // 2024-07-10\n * ```\n *\n * @see https://date-fns.org/docs/format\n */\nexport function formatDate(date: DateArg<Date> & {}, format: string = 'yyyy-MM-dd HH:mm:ss', options?: FormatOptions) {\n return dateFnsFormat(date, format, options);\n}\n\n/**\n * Get the date range (start and end) based on a given date and range type.\n *\n * Supports common range types like 'lastMonth', 'lastWeek', 'thisMonth', 'thisWeek', 'today', and 'yesterday'.\n *\n * @param {Date} date - The reference date\n * @param {DateRangeType} type - The range type to compute\n * @param {object} [options] - Optional settings\n * @param {boolean} [options.setEndDateToNextDayStart] - If true, set `endDate` to 00:00:00.000 of the next day\n * @param {Day} [options.weekStartsOn] - The start day of the week (0 = Sunday, 1 = Monday, ..., 6 = Saturday)\n *\n * @returns {{ startDate: Date, endDate: Date }} An object with `startDate` and `endDate`\n *\n * @example\n * ```typescript\n * import { getDateRangeFromDate } from '@kikiutils/shared/datetime';\n *\n * // Get the date range for last month\n * const date = new Date('2023-07-01');\n * console.log(getDateRangeFromDate(date, 'lastMonth'));\n * // { startDate: 2023-06-01T00:00:00.000Z, endDate: 2023-06-30T23:59:59.999Z }\n *\n * // Get this week's range with Sunday as the first day\n * console.log(getDateRangeFromDate(date, 'thisWeek', { weekStartsOn: 0 }));\n * // { startDate: 2023-06-25T00:00:00.000Z, endDate: 2023-07-01T23:59:59.999Z }\n * ```\n */\nexport function getDateRangeFromDate(\n date: Date,\n type: DateRangeType,\n options?: {\n setEndDateToNextDayStart?: boolean;\n weekStartsOn?: Day;\n },\n) {\n let endDate: Date;\n let startDate: Date;\n switch (type) {\n case 'lastMonth':\n {\n const lastMonth = subMonths(date, 1);\n endDate = endOfMonth(lastMonth);\n startDate = startOfMonth(lastMonth);\n }\n\n break;\n case 'lastWeek':\n {\n const lastWeek = subWeeks(date, 1);\n endDate = endOfWeek(lastWeek, { weekStartsOn: options?.weekStartsOn ?? 1 });\n startDate = startOfWeek(lastWeek, { weekStartsOn: options?.weekStartsOn ?? 1 });\n }\n\n break;\n case 'thisMonth':\n endDate = endOfMonth(date);\n startDate = startOfMonth(date);\n break;\n case 'thisWeek':\n endDate = endOfWeek(date, { weekStartsOn: options?.weekStartsOn ?? 1 });\n startDate = startOfWeek(date, { weekStartsOn: options?.weekStartsOn ?? 1 });\n break;\n case 'today':\n endDate = endOfDay(date);\n startDate = startOfDay(date);\n break;\n case 'yesterday':\n {\n const yesterday = subDays(date, 1);\n endDate = endOfDay(yesterday);\n startDate = startOfDay(yesterday);\n }\n\n break;\n default: throw new Error(`Unsupported date range type: ${type}`);\n }\n\n if (options?.setEndDateToNextDayStart) endDate.setHours(24, 0, 0, 0);\n return {\n endDate,\n startDate,\n };\n}\n\n/**\n * Returns a `Date` object set to midnight (00:00:00) of today, with an optional day offset.\n *\n * @param {number} [offsetDays] - Number of days to offset from today. Can be negative\n *\n * @returns {Date} A `Date` object at 00:00:00 of the offset day\n *\n * @example\n * ```typescript\n * import { getMidnightDateFromToday } from '@kikiutils/shared/datetime';\n *\n * console.log(getMidnightDateFromToday()); // today at 00:00:00\n * console.log(getMidnightDateFromToday(3)); // 3 days from today at 00:00:00\n * console.log(getMidnightDateFromToday(-1)); // yesterday at 00:00:00\n * ```\n */\nexport function getMidnightDateFromToday(offsetDays: number = 0) {\n const date = new Date();\n date.setDate(date.getDate() + offsetDays);\n date.setHours(0, 0, 0, 0);\n return date;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,SAAgB,WAAW,MAA0B,WAAiB,uBAAuB,SAAyB;AAClH,QAAOA,OAAc,MAAMC,UAAQ,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8B/C,SAAgB,qBACZ,MACA,MACA,SAIF;CACE,IAAI;CACJ,IAAI;AACJ,SAAQ,MAAR;EACI,KAAK;GACD;IACI,MAAM,YAAY,UAAU,MAAM,EAAE;AACpC,cAAU,WAAW,UAAU;AAC/B,gBAAY,aAAa,UAAU;;AAGvC;EACJ,KAAK;GACD;IACI,MAAM,WAAW,SAAS,MAAM,EAAE;AAClC,cAAU,UAAU,UAAU,EAAE,cAAc,SAAS,gBAAgB,GAAG,CAAC;AAC3E,gBAAY,YAAY,UAAU,EAAE,cAAc,SAAS,gBAAgB,GAAG,CAAC;;AAGnF;EACJ,KAAK;AACD,aAAU,WAAW,KAAK;AAC1B,eAAY,aAAa,KAAK;AAC9B;EACJ,KAAK;AACD,aAAU,UAAU,MAAM,EAAE,cAAc,SAAS,gBAAgB,GAAG,CAAC;AACvE,eAAY,YAAY,MAAM,EAAE,cAAc,SAAS,gBAAgB,GAAG,CAAC;AAC3E;EACJ,KAAK;AACD,aAAU,SAAS,KAAK;AACxB,eAAY,WAAW,KAAK;AAC5B;EACJ,KAAK;GACD;IACI,MAAM,YAAY,QAAQ,MAAM,EAAE;AAClC,cAAU,SAAS,UAAU;AAC7B,gBAAY,WAAW,UAAU;;AAGrC;EACJ,QAAS,OAAM,IAAI,MAAM,gCAAgC,OAAO;;AAGpE,KAAI,SAAS,yBAA0B,SAAQ,SAAS,IAAI,GAAG,GAAG,EAAE;AACpE,QAAO;EACH;EACA;EACH;;;;;;;;;;;;;;;;;;AAmBL,SAAgB,yBAAyB,aAAqB,GAAG;CAC7D,MAAM,uBAAO,IAAI,MAAM;AACvB,MAAK,QAAQ,KAAK,SAAS,GAAG,WAAW;AACzC,MAAK,SAAS,GAAG,GAAG,GAAG,EAAE;AACzB,QAAO"}
1
+ {"version":3,"file":"datetime.js","names":["dateFnsFormat","format"],"sources":["../src/datetime.ts"],"sourcesContent":["import {\n format as dateFnsFormat,\n endOfDay,\n endOfMonth,\n endOfWeek,\n startOfDay,\n startOfMonth,\n startOfWeek,\n subDays,\n subMonths,\n subWeeks,\n} from 'date-fns';\nimport type {\n DateArg,\n Day,\n FormatOptions,\n} from 'date-fns';\n\nexport type DateRangeType = 'lastMonth' | 'lastWeek' | 'thisMonth' | 'thisWeek' | 'today' | 'yesterday';\n\n/**\n * Formats a given date, timestamp, or date string into a specified format.\n *\n * This function is a wrapper around `date-fns/format`.\n *\n * @param {DateArg<Date>} date - The input date to format. Can be a Date object, a timestamp, or a string\n * @param {string} [format] - The target format string\n * @param {FormatOptions} [options] - Optional formatting options passed to `date-fns/format`\n *\n * @returns {string} The formatted date string\n *\n * @example\n * ```typescript\n * import { formatDate } from '@kikiutils/shared/datetime';\n *\n * // Format a Date object\n * console.log(formatDate(new Date(), 'yyyy-MM-dd')); // 2024-07-10\n *\n * // Format a timestamp\n * console.log(formatDate(1657814400000, 'yyyy-MM-dd')); // 2022-07-15\n *\n * // Format a date string\n * console.log(formatDate('2024-07-10T00:00:00Z', 'yyyy-MM-dd')); // 2024-07-10\n * ```\n *\n * @see https://date-fns.org/docs/format\n */\nexport function formatDate(date: DateArg<Date> & {}, format: string = 'yyyy-MM-dd HH:mm:ss', options?: FormatOptions) {\n return dateFnsFormat(date, format, options);\n}\n\n/**\n * Get the date range (start and end) based on a given date and range type.\n *\n * Supports common range types like 'lastMonth', 'lastWeek', 'thisMonth', 'thisWeek', 'today', and 'yesterday'.\n *\n * @param {Date} date - The reference date\n * @param {DateRangeType} type - The range type to compute\n * @param {object} [options] - Optional settings\n * @param {boolean} [options.setEndDateToNextDayStart] - If true, set `endDate` to 00:00:00.000 of the next day\n * @param {Day} [options.weekStartsOn] - The start day of the week (0 = Sunday, 1 = Monday, ..., 6 = Saturday)\n *\n * @returns {{ startDate: Date, endDate: Date }} An object with `startDate` and `endDate`\n *\n * @example\n * ```typescript\n * import { getDateRangeFromDate } from '@kikiutils/shared/datetime';\n *\n * // Get the date range for last month\n * const date = new Date('2023-07-01');\n * console.log(getDateRangeFromDate(date, 'lastMonth'));\n * // { startDate: 2023-06-01T00:00:00.000Z, endDate: 2023-06-30T23:59:59.999Z }\n *\n * // Get this week's range with Sunday as the first day\n * console.log(getDateRangeFromDate(date, 'thisWeek', { weekStartsOn: 0 }));\n * // { startDate: 2023-06-25T00:00:00.000Z, endDate: 2023-07-01T23:59:59.999Z }\n * ```\n */\nexport function getDateRangeFromDate(\n date: Date,\n type: DateRangeType,\n options?: {\n setEndDateToNextDayStart?: boolean;\n weekStartsOn?: Day;\n },\n) {\n let endDate: Date;\n let startDate: Date;\n switch (type) {\n case 'lastMonth':\n {\n const lastMonth = subMonths(date, 1);\n endDate = endOfMonth(lastMonth);\n startDate = startOfMonth(lastMonth);\n }\n\n break;\n case 'lastWeek':\n {\n const lastWeek = subWeeks(date, 1);\n endDate = endOfWeek(lastWeek, { weekStartsOn: options?.weekStartsOn ?? 1 });\n startDate = startOfWeek(lastWeek, { weekStartsOn: options?.weekStartsOn ?? 1 });\n }\n\n break;\n case 'thisMonth':\n endDate = endOfMonth(date);\n startDate = startOfMonth(date);\n break;\n case 'thisWeek':\n endDate = endOfWeek(date, { weekStartsOn: options?.weekStartsOn ?? 1 });\n startDate = startOfWeek(date, { weekStartsOn: options?.weekStartsOn ?? 1 });\n break;\n case 'today':\n endDate = endOfDay(date);\n startDate = startOfDay(date);\n break;\n case 'yesterday':\n {\n const yesterday = subDays(date, 1);\n endDate = endOfDay(yesterday);\n startDate = startOfDay(yesterday);\n }\n\n break;\n default: throw new Error(`Unsupported date range type: ${type}`);\n }\n\n if (options?.setEndDateToNextDayStart) endDate.setHours(24, 0, 0, 0);\n return {\n endDate,\n startDate,\n };\n}\n\n/**\n * Returns a `Date` object set to midnight (00:00:00) of today, with an optional day offset.\n *\n * @param {number} [offsetDays] - Number of days to offset from today. Can be negative\n *\n * @returns {Date} A `Date` object at 00:00:00 of the offset day\n *\n * @example\n * ```typescript\n * import { getMidnightDateFromToday } from '@kikiutils/shared/datetime';\n *\n * console.log(getMidnightDateFromToday()); // today at 00:00:00\n * console.log(getMidnightDateFromToday(3)); // 3 days from today at 00:00:00\n * console.log(getMidnightDateFromToday(-1)); // yesterday at 00:00:00\n * ```\n */\nexport function getMidnightDateFromToday(offsetDays: number = 0) {\n const date = new Date();\n date.setDate(date.getDate() + offsetDays);\n date.setHours(0, 0, 0, 0);\n return date;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,SAAgB,WAAW,MAA0B,WAAiB,uBAAuB,SAAyB;AAClH,QAAOA,OAAc,MAAMC,UAAQ,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8B/C,SAAgB,qBACZ,MACA,MACA,SAIF;CACE,IAAI;CACJ,IAAI;AACJ,SAAQ,MAAR;EACI,KAAK;GACD;IACI,MAAM,YAAY,UAAU,MAAM,EAAE;AACpC,cAAU,WAAW,UAAU;AAC/B,gBAAY,aAAa,UAAU;;AAGvC;EACJ,KAAK;GACD;IACI,MAAM,WAAW,SAAS,MAAM,EAAE;AAClC,cAAU,UAAU,UAAU,EAAE,cAAc,SAAS,gBAAgB,GAAG,CAAC;AAC3E,gBAAY,YAAY,UAAU,EAAE,cAAc,SAAS,gBAAgB,GAAG,CAAC;;AAGnF;EACJ,KAAK;AACD,aAAU,WAAW,KAAK;AAC1B,eAAY,aAAa,KAAK;AAC9B;EACJ,KAAK;AACD,aAAU,UAAU,MAAM,EAAE,cAAc,SAAS,gBAAgB,GAAG,CAAC;AACvE,eAAY,YAAY,MAAM,EAAE,cAAc,SAAS,gBAAgB,GAAG,CAAC;AAC3E;EACJ,KAAK;AACD,aAAU,SAAS,KAAK;AACxB,eAAY,WAAW,KAAK;AAC5B;EACJ,KAAK;GACD;IACI,MAAM,YAAY,QAAQ,MAAM,EAAE;AAClC,cAAU,SAAS,UAAU;AAC7B,gBAAY,WAAW,UAAU;;AAGrC;EACJ,QAAS,OAAM,IAAI,MAAM,gCAAgC,OAAO;;AAGpE,KAAI,SAAS,yBAA0B,SAAQ,SAAS,IAAI,GAAG,GAAG,EAAE;AACpE,QAAO;EACH;EACA;EACH;;;;;;;;;;;;;;;;;;AAmBL,SAAgB,yBAAyB,aAAqB,GAAG;CAC7D,MAAM,uBAAO,IAAI,MAAM;AACvB,MAAK,QAAQ,KAAK,SAAS,GAAG,WAAW;AACzC,MAAK,SAAS,GAAG,GAAG,GAAG,EAAE;AACzB,QAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"element-plus.d.ts","names":[],"sources":["../src/element-plus.ts"],"sourcesContent":[],"mappings":";;;;KAGY,wBAAA,GAA2B;;AAAvC;AAyBA;;;;;;;;;;;;;;;;;;;;;iBAAgB,gCAAA,UACH,mCACA,eACV"}
1
+ {"version":3,"file":"element-plus.d.ts","names":[],"sources":["../src/element-plus.ts"],"mappings":";;;;KAGY,wBAAA,GAA2B,QAAA;;AAAvC;;;;;AAyBA;;;;;;;;;;;;;;;;;iBAAgB,gCAAA,CACZ,OAAA,EAAS,YAAA,aACT,OAAA,GAAS,YAAA,GACV,YAAA"}
@@ -31,7 +31,7 @@ function createElFormItemRuleWithDefaults(message, options = {}) {
31
31
  type: options.type ?? "string"
32
32
  };
33
33
  }
34
-
35
34
  //#endregion
36
35
  export { createElFormItemRuleWithDefaults };
36
+
37
37
  //# sourceMappingURL=element-plus.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"enum.d.ts","names":[],"sources":["../src/enum.ts"],"sourcesContent":[],"mappings":";;AAuBA;;;;;;;AA2BA;;;;;;;AAkDA;;;;;;;;iBA7EgB,8BAA8B,iCAAiC,IAAI,QAAQ,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;iBA2BnF,8BAA8B,iCAAiC,IAAI,QAAQ,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkDnF,wBAAwB,iCAAiC,KAAK,QAAQ"}
1
+ {"version":3,"file":"enum.d.ts","names":[],"sources":["../src/enum.ts"],"mappings":";;AAuBA;;;;;;;;;;;;;;;;;;;AA2BA;;;iBA3BgB,mBAAA,WAA8B,MAAA,cAAA,CAAqB,UAAA,EAAY,CAAA,GAAI,OAAA,CAAQ,CAAA,OAAQ,CAAA;;;;;;;;;;;;;;;;AA6EnG;;;;;;;;iBAlDgB,mBAAA,WAA8B,MAAA,cAAA,CAAqB,UAAA,EAAY,CAAA,GAAI,OAAA,CAAQ,CAAA,OAAQ,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkDnF,aAAA,WAAwB,MAAA,cAAA,CAAqB,UAAA,EAAY,CAAA,IAAK,CAAA,OAAQ,CAAA"}
package/dist/enum.js CHANGED
@@ -102,7 +102,7 @@ function getEnumValues(enumObject) {
102
102
  if (!values.some((value) => typeof value === "number")) return values;
103
103
  return Object.keys(enumObject).filter((key) => Number.isNaN(Number(key))).map((key) => enumObject[key]);
104
104
  }
105
-
106
105
  //#endregion
107
106
  export { getEnumNumberValues, getEnumStringValues, getEnumValues };
107
+
108
108
  //# sourceMappingURL=enum.js.map
package/dist/env.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","names":[],"sources":["../src/env.ts"],"sourcesContent":[],"mappings":";;AAOA;AAqCA;;;;;cArCa,wBAAA,SAAiC,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqC9B,mBAAA"}
1
+ {"version":3,"file":"env.d.ts","names":[],"sources":["../src/env.ts"],"mappings":";;AAOA;;;;;;cAAa,wBAAA,SAAiC,KAAA;EAAA,SACjC,GAAA;EAOc;;AA6B3B;;;cA7BgB,GAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;iBA6BA,mBAAA,CAAoB,GAAA"}