@dressed/framework 0.3.0 → 0.5.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/dist/bin/dressed.js +5 -9
- package/dist/bin/dressed.js.map +1 -1
- package/dist/build/build.js +19 -3
- package/dist/build/build.js.map +1 -1
- package/dist/build/index.d.ts +1 -1
- package/dist/build/index.js +1 -1
- package/dist/build/index.js.map +1 -1
- package/dist/build/utils.d.ts +8 -0
- package/dist/build/utils.js +32 -0
- package/dist/build/utils.js.map +1 -0
- package/dist/types/config.d.ts +5 -3
- package/package.json +4 -3
- package/dist/utils.d.ts +0 -7
- package/dist/utils.js +0 -48
- package/dist/utils.js.map +0 -1
package/dist/bin/dressed.js
CHANGED
|
@@ -5,7 +5,7 @@ import { Command, InvalidArgumentError } from "commander";
|
|
|
5
5
|
import { logger } from "dressed/utils";
|
|
6
6
|
import build from "../build/build.js";
|
|
7
7
|
import bundleFiles from "../build/bundle.js";
|
|
8
|
-
import {
|
|
8
|
+
import { generateCategoryExports, generateFileImport, normalizeImportPath } from "../build/utils.js";
|
|
9
9
|
const program = new Command().name("dressed").description("A sleek, serverless-ready Discord bot framework.");
|
|
10
10
|
program
|
|
11
11
|
.command("build")
|
|
@@ -21,13 +21,9 @@ program
|
|
|
21
21
|
return parsed;
|
|
22
22
|
})
|
|
23
23
|
.option("-R, --root <root>", "Source root for the bot, defaults to `src`")
|
|
24
|
-
.option("-
|
|
25
|
-
.action(async ({ instance, register, endpoint, port, root,
|
|
26
|
-
const { commands, components, events, configPath } = await build({
|
|
27
|
-
endpoint,
|
|
28
|
-
port,
|
|
29
|
-
build: { root, extensions: extensions === null || extensions === void 0 ? void 0 : extensions.split(",").map((e) => e.trim()) },
|
|
30
|
-
});
|
|
24
|
+
.option("-I, --include <includes...>", "Glob patterns for handler files, defaults to `**/*.{js,ts,mjs}`")
|
|
25
|
+
.action(async ({ instance, register, endpoint, port, root, include, }) => {
|
|
26
|
+
const { commands, components, events, configPath } = await build({ endpoint, port, build: { root, include } });
|
|
31
27
|
const categories = [commands, components, events];
|
|
32
28
|
const outputContent = `
|
|
33
29
|
${instance || register
|
|
@@ -36,7 +32,7 @@ ${instance || register
|
|
|
36
32
|
import { config as dressedConfig } from "dressed/utils";
|
|
37
33
|
import config from "${configPath ? normalizeImportPath(configPath) : "./dressed.config.mjs"}";
|
|
38
34
|
Object.assign(dressedConfig, config);
|
|
39
|
-
${[categories.map((c) => c.map(
|
|
35
|
+
${[categories.map((c) => c.map(generateFileImport)), generateCategoryExports(categories)].flat(2).join("")}
|
|
40
36
|
export { config };
|
|
41
37
|
${register ? "registerCommands(commands);" : ""}
|
|
42
38
|
${instance ? "createServer(commands, components, events);" : ""}`.trim();
|
package/dist/bin/dressed.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dressed.js","sourceRoot":"","sources":["../../src/bin/dressed.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,KAAK,MAAM,mBAAmB,CAAC;AACtC,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"dressed.js","sourceRoot":"","sources":["../../src/bin/dressed.ts"],"names":[],"mappings":"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"}
|
package/dist/build/build.js
CHANGED
|
@@ -10,11 +10,11 @@ import { appendFileSync, mkdirSync, readdirSync, writeFileSync } from "node:fs";
|
|
|
10
10
|
import { basename, extname, resolve } from "node:path";
|
|
11
11
|
import { getApp } from "dressed";
|
|
12
12
|
import { botEnv, config as dressedConfig, logger } from "dressed/utils";
|
|
13
|
-
import { categoryExports, crawlDir, importFileString, override } from "../utils.js";
|
|
14
13
|
import bundleFiles from "./bundle.js";
|
|
15
14
|
import { parseCommands } from "./parsers/commands.js";
|
|
16
15
|
import { parseComponents } from "./parsers/components.js";
|
|
17
16
|
import { parseEvents } from "./parsers/events.js";
|
|
17
|
+
import { crawlDir, generateCategoryExports, generateFileImport } from "./utils.js";
|
|
18
18
|
/**
|
|
19
19
|
* Builds the bot imports and other variables.
|
|
20
20
|
*/
|
|
@@ -35,9 +35,9 @@ export default async function build(config = {}, { bundle = bundleFiles } = {})
|
|
|
35
35
|
}
|
|
36
36
|
const root = (_b = (_a = config.build) === null || _a === void 0 ? void 0 : _a.root) !== null && _b !== void 0 ? _b : "src";
|
|
37
37
|
const categories = ["commands", "components", "events"];
|
|
38
|
-
const files = await Promise.all(categories.map((d) => { var _a; return crawlDir(root, d, (_a = config.build) === null || _a === void 0 ? void 0 : _a.
|
|
38
|
+
const files = await Promise.all(categories.map((d) => { var _a; return crawlDir(root, d, (_a = config.build) === null || _a === void 0 ? void 0 : _a.include); }));
|
|
39
39
|
const entriesPath = ".dressed/tmp/entries.ts";
|
|
40
|
-
writeFileSync(entriesPath, [files.map((c) => c.map(
|
|
40
|
+
writeFileSync(entriesPath, [files.map((c) => c.map(generateFileImport)), generateCategoryExports(files)].flat(2).join(""));
|
|
41
41
|
logger.defer("Bundling handlers");
|
|
42
42
|
await bundle(entriesPath, ".dressed/tmp");
|
|
43
43
|
const { commands, components, events } = await import(__rewriteRelativeImportExtension(resolve(entriesPath.replace(".ts", ".mjs"))));
|
|
@@ -85,4 +85,20 @@ async function fetchMissingVars() {
|
|
|
85
85
|
logger.error("Failed to fetch missing variables");
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
|
+
/** Deep merges two objects, producing a new object where values from {@link b} override those from {@link a}. */
|
|
89
|
+
function override(a, b) {
|
|
90
|
+
const result = { ...a };
|
|
91
|
+
for (const key in b) {
|
|
92
|
+
const k = key;
|
|
93
|
+
const bv = b[k];
|
|
94
|
+
const av = a[k];
|
|
95
|
+
if (bv !== undefined && typeof bv === "object" && bv !== null && !Array.isArray(bv)) {
|
|
96
|
+
result[k] = override(av !== null && av !== void 0 ? av : {}, bv);
|
|
97
|
+
}
|
|
98
|
+
else if (bv !== undefined) {
|
|
99
|
+
result[k] = bv;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return result;
|
|
103
|
+
}
|
|
88
104
|
//# sourceMappingURL=build.js.map
|
package/dist/build/build.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/build/build.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAExE,OAAO,
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/build/build.ts"],"names":[],"mappings":"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"}
|
package/dist/build/index.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* This separation is intended to shield esbuild from bundling, as Next.js especially seems to freak out when it's referenced
|
|
3
|
-
*
|
|
4
3
|
* @module
|
|
5
4
|
*/
|
|
6
5
|
export { default } from "./build.ts";
|
|
@@ -8,3 +7,4 @@ export * from "./parsers/commands.ts";
|
|
|
8
7
|
export * from "./parsers/components.ts";
|
|
9
8
|
export * from "./parsers/events.ts";
|
|
10
9
|
export * from "./parsers/index.ts";
|
|
10
|
+
export * from "./utils.ts";
|
package/dist/build/index.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* This separation is intended to shield esbuild from bundling, as Next.js especially seems to freak out when it's referenced
|
|
3
|
-
*
|
|
4
3
|
* @module
|
|
5
4
|
*/
|
|
6
5
|
export { default } from "./build.js";
|
|
@@ -8,4 +7,5 @@ export * from "./parsers/commands.js";
|
|
|
8
7
|
export * from "./parsers/components.js";
|
|
9
8
|
export * from "./parsers/events.js";
|
|
10
9
|
export * from "./parsers/index.js";
|
|
10
|
+
export * from "./utils.js";
|
|
11
11
|
//# sourceMappingURL=index.js.map
|
package/dist/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/build/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/build/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { WalkEntry } from "../types/walk.ts";
|
|
2
|
+
/** @returns Import string-able {@link path} relative to the `.dressed` folder */
|
|
3
|
+
export declare function normalizeImportPath(path: string): string;
|
|
4
|
+
export declare function generateFileImport(file: WalkEntry): `import * as h${string} from "${string}";`;
|
|
5
|
+
/** @returns ESM exports for the input {@link categories} */
|
|
6
|
+
export declare function generateCategoryExports(categories: WalkEntry[][]): string[];
|
|
7
|
+
/** Recursively check for files */
|
|
8
|
+
export declare function crawlDir(root: string, dir: string, include?: string[]): Promise<WalkEntry[]>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { basename, extname, join, relative, resolve } from "node:path";
|
|
4
|
+
import { cwd } from "node:process";
|
|
5
|
+
import { logger } from "dressed/utils";
|
|
6
|
+
import glob from "fast-glob";
|
|
7
|
+
const hash = (v) => createHash("sha1").update(v).digest("hex");
|
|
8
|
+
/** @returns Import string-able {@link path} relative to the `.dressed` folder */
|
|
9
|
+
export function normalizeImportPath(path) {
|
|
10
|
+
return relative(".dressed/tmp", path).replace(/\\/g, "/");
|
|
11
|
+
}
|
|
12
|
+
export function generateFileImport(file) {
|
|
13
|
+
return `import * as h${hash(file.path)} from "${normalizeImportPath(file.path)}";`;
|
|
14
|
+
}
|
|
15
|
+
/** @returns ESM exports for the input {@link categories} */
|
|
16
|
+
export function generateCategoryExports(categories) {
|
|
17
|
+
return categories.map((c, i) => `export const ${["commands", "components", "events"][i]} = [${c.map((f) => JSON.stringify({ ...f, exports: null }).replace('"exports":null', `"exports":h${hash(f.path)}`))}];`);
|
|
18
|
+
}
|
|
19
|
+
/** Recursively check for files */
|
|
20
|
+
export async function crawlDir(root, dir, include = ["**/*.{js,ts,mjs}"]) {
|
|
21
|
+
const dirPath = resolve(root, dir);
|
|
22
|
+
if (!existsSync(dirPath)) {
|
|
23
|
+
logger.warn(`${dir.slice(0, 1).toUpperCase() + dir.slice(1)} directory not found`);
|
|
24
|
+
return [];
|
|
25
|
+
}
|
|
26
|
+
const entries = await glob(include, { cwd: dirPath });
|
|
27
|
+
return entries.map((e) => {
|
|
28
|
+
const path = relative(cwd(), join(dirPath, e));
|
|
29
|
+
return { name: basename(path, extname(path)), path };
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/build/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACvE,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAEvE,iFAAiF;AACjF,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAe;IAChD,OAAO,gBAAgB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAa,CAAC;AAC9F,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,uBAAuB,CAAC,UAAyB;IAC/D,OAAO,UAAU,CAAC,GAAG,CACnB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,gBAAgB,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACxE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,cAAc,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAChG,IAAI,CACR,CAAC;AACJ,CAAC;AAED,kCAAkC;AAClC,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY,EAAE,GAAW,EAAE,OAAO,GAAG,CAAC,kBAAkB,CAAC;IACtF,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAEnC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;QACnF,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;IACtD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACvB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/types/config.d.ts
CHANGED
|
@@ -9,9 +9,11 @@ export interface DressedConfig extends CoreDressedConfig {
|
|
|
9
9
|
*/
|
|
10
10
|
root?: string;
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
13
|
-
* @default ["js
|
|
12
|
+
* Glob patterns for handler files to include
|
|
13
|
+
* @default ["**\/*.{js,ts,mjs}"]
|
|
14
|
+
* @example ["**\/*.{ts,tsx}", "!**\/*.test.ts"]
|
|
15
|
+
* // Exclude test files
|
|
14
16
|
*/
|
|
15
|
-
|
|
17
|
+
include?: string[];
|
|
16
18
|
};
|
|
17
19
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dressed/framework",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "A framework for creating Discord bots using Dressed.",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"dist": "rm -fr dist && tsc",
|
|
@@ -10,8 +10,9 @@
|
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@dressed/matcher": "^1.4.0",
|
|
13
|
-
"commander": "^14.0.
|
|
14
|
-
"esbuild": "^0.27.
|
|
13
|
+
"commander": "^14.0.3",
|
|
14
|
+
"esbuild": "^0.27.3",
|
|
15
|
+
"fast-glob": "^3.3.3"
|
|
15
16
|
},
|
|
16
17
|
"peerDependencies": {
|
|
17
18
|
"dressed": "^2.0.0-canary.1"
|
package/dist/utils.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { WalkEntry } from "./types/walk.ts";
|
|
2
|
-
export declare const normalizeImportPath: (path: string) => string;
|
|
3
|
-
export declare function importFileString(file: WalkEntry): string;
|
|
4
|
-
export declare function categoryExports(categories: WalkEntry[][]): string[];
|
|
5
|
-
/** Deep merges two objects, producing a new object where values from `b` override those from `a`. */
|
|
6
|
-
export declare function override<T>(a: Partial<T>, b: Partial<T>): Partial<T>;
|
|
7
|
-
export declare function crawlDir(root: string, dir: string, extensions?: string[]): Promise<WalkEntry[]>;
|
package/dist/utils.js
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { createHash } from "node:crypto";
|
|
2
|
-
import { existsSync } from "node:fs";
|
|
3
|
-
import { readdir } from "node:fs/promises";
|
|
4
|
-
import { basename, extname, join, relative, resolve } from "node:path";
|
|
5
|
-
import { cwd } from "node:process";
|
|
6
|
-
import { logger } from "dressed/utils";
|
|
7
|
-
const hash = (v) => createHash("sha1").update(v).digest("hex");
|
|
8
|
-
export const normalizeImportPath = (path) => relative(".dressed/tmp", path).replace(/\\/g, "/");
|
|
9
|
-
export function importFileString(file) {
|
|
10
|
-
return `import * as h${hash(file.path)} from "${normalizeImportPath(file.path)}";`;
|
|
11
|
-
}
|
|
12
|
-
export function categoryExports(categories) {
|
|
13
|
-
return categories.map((c, i) => `export const ${["commands", "components", "events"][i]} = [${c.map((f) => {
|
|
14
|
-
const exportKey = `"exports":h${hash(f.path)}`;
|
|
15
|
-
return JSON.stringify({ ...f, exports: null }).replace('"exports":null', exportKey);
|
|
16
|
-
})}];`);
|
|
17
|
-
}
|
|
18
|
-
/** Deep merges two objects, producing a new object where values from `b` override those from `a`. */
|
|
19
|
-
export function override(a, b) {
|
|
20
|
-
const result = { ...a };
|
|
21
|
-
for (const key in b) {
|
|
22
|
-
const k = key;
|
|
23
|
-
const bv = b[k];
|
|
24
|
-
const av = a[k];
|
|
25
|
-
if (bv !== undefined && typeof bv === "object" && bv !== null && !Array.isArray(bv)) {
|
|
26
|
-
result[k] = override(av !== null && av !== void 0 ? av : {}, bv);
|
|
27
|
-
}
|
|
28
|
-
else if (bv !== undefined) {
|
|
29
|
-
result[k] = bv;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return result;
|
|
33
|
-
}
|
|
34
|
-
export async function crawlDir(root, dir, extensions = ["js", "ts", "mjs"]) {
|
|
35
|
-
const dirPath = resolve(root, dir);
|
|
36
|
-
if (!existsSync(dirPath)) {
|
|
37
|
-
logger.warn(`${dir.slice(0, 1).toUpperCase() + dir.slice(1)} directory not found`);
|
|
38
|
-
return [];
|
|
39
|
-
}
|
|
40
|
-
const entries = await readdir(dirPath, { recursive: true });
|
|
41
|
-
return entries
|
|
42
|
-
.filter((e) => extensions.includes(extname(e).slice(1)))
|
|
43
|
-
.map((e) => {
|
|
44
|
-
const path = relative(cwd(), join(dirPath, e));
|
|
45
|
-
return { name: basename(path, extname(path)), path };
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|