tyfigo 0.2.0 → 0.2.1
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/plugins/esbuild.mjs +1 -1
- package/dist/plugins/rolldown.mjs +1 -1
- package/dist/plugins/rollup.mjs +1 -1
- package/dist/plugins/rsbuild.mjs +1 -1
- package/dist/plugins/rspack.mjs +1 -1
- package/dist/plugins/vite.mjs +1 -1
- package/dist/plugins/webpack.mjs +1 -1
- package/dist/{unplugin-Bkc569Qw.mjs → unplugin-BoZ7PwTA.mjs} +27 -6
- package/dist/unplugin-BoZ7PwTA.mjs.map +1 -0
- package/package.json +2 -2
- package/dist/unplugin-Bkc569Qw.mjs.map +0 -1
package/dist/plugins/esbuild.mjs
CHANGED
package/dist/plugins/rollup.mjs
CHANGED
package/dist/plugins/rsbuild.mjs
CHANGED
package/dist/plugins/rspack.mjs
CHANGED
package/dist/plugins/vite.mjs
CHANGED
package/dist/plugins/webpack.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { n as configPathPattern } from "./formats-Bf8-iQw-.mjs";
|
|
2
2
|
import { i as tyfigoImportPattern, n as isServerPlatform, r as loadConfigImport, t as findNodeOnlyImports } from "./shared-DOMPQnVO.mjs";
|
|
3
|
+
import { existsSync } from "node:fs";
|
|
3
4
|
import { createUnplugin } from "unplugin";
|
|
4
5
|
// src/plugins/unplugin.ts
|
|
5
6
|
const webpackMode = (compiler) => compiler.options.mode === "none" ? void 0 : compiler.options.mode;
|
|
@@ -7,6 +8,8 @@ const unpluginFactory = (options = {}) => {
|
|
|
7
8
|
let viteCommand;
|
|
8
9
|
let viteMode;
|
|
9
10
|
let rolldownPlatform;
|
|
11
|
+
let viteServer;
|
|
12
|
+
const missingLayers = /* @__PURE__ */ new Map();
|
|
10
13
|
const detect = (context, loadOptions) => {
|
|
11
14
|
const native = context.getNativeBuildContext?.();
|
|
12
15
|
if (native?.framework === "webpack" || native?.framework === "rspack") {
|
|
@@ -48,7 +51,10 @@ const unpluginFactory = (options = {}) => {
|
|
|
48
51
|
environment: options.environment ?? (target === "server" && detected.bundle ? void 0 : detected.mode),
|
|
49
52
|
runtime: options.runtime
|
|
50
53
|
});
|
|
51
|
-
for (const file of result.watchFiles)
|
|
54
|
+
for (const file of result.watchFiles) if (viteServer && !existsSync(file)) {
|
|
55
|
+
missingLayers.set(file, (missingLayers.get(file) ?? /* @__PURE__ */ new Set()).add(id));
|
|
56
|
+
viteServer.watcher.add(file);
|
|
57
|
+
} else this.addWatchFile(file);
|
|
52
58
|
return {
|
|
53
59
|
code: result.code,
|
|
54
60
|
moduleType: "js"
|
|
@@ -69,10 +75,25 @@ const unpluginFactory = (options = {}) => {
|
|
|
69
75
|
if (messages.length > 0) throw new Error(messages.join("\n"));
|
|
70
76
|
}
|
|
71
77
|
},
|
|
72
|
-
vite: {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
78
|
+
vite: {
|
|
79
|
+
configResolved(config) {
|
|
80
|
+
viteCommand = config.command;
|
|
81
|
+
viteMode = config.mode;
|
|
82
|
+
},
|
|
83
|
+
configureServer(server) {
|
|
84
|
+
viteServer = server;
|
|
85
|
+
server.watcher.on("add", (file) => {
|
|
86
|
+
const ids = missingLayers.get(file);
|
|
87
|
+
if (!ids) return;
|
|
88
|
+
missingLayers.delete(file);
|
|
89
|
+
for (const environment of Object.values(server.environments)) for (const id of ids) {
|
|
90
|
+
const module = environment.moduleGraph.getModuleById(id);
|
|
91
|
+
if (module) environment.moduleGraph.invalidateModule(module);
|
|
92
|
+
}
|
|
93
|
+
server.ws.send({ type: "full-reload" });
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
},
|
|
76
97
|
rolldown: { options(input) {
|
|
77
98
|
rolldownPlatform = input.platform;
|
|
78
99
|
} },
|
|
@@ -82,4 +103,4 @@ const unpluginFactory = (options = {}) => {
|
|
|
82
103
|
const tyfigo = createUnplugin(unpluginFactory);
|
|
83
104
|
export { tyfigo as t };
|
|
84
105
|
|
|
85
|
-
//# sourceMappingURL=unplugin-
|
|
106
|
+
//# sourceMappingURL=unplugin-BoZ7PwTA.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unplugin-BoZ7PwTA.mjs","names":[],"sources":["../src/plugins/unplugin.ts"],"sourcesContent":["import { existsSync } from 'node:fs';\n\nimport { createUnplugin } from 'unplugin';\n\nimport { findNodeOnlyImports, isServerPlatform, loadConfigImport, tyfigoImportPattern } from './shared.ts';\n\nimport { configPathPattern } from '../core/index.ts';\n\nimport type { LoadOptions } from '../runtime/load.ts';\nimport type { TyfigoPluginOptions, WebpackLikeCompiler } from './shared.ts';\nimport type { UnpluginBuildContext, UnpluginFactory } from 'unplugin';\nimport type { ViteDevServer } from 'vite';\n\nexport type { TyfigoPluginOptions } from './shared.ts';\n\nconst webpackMode = (compiler: WebpackLikeCompiler) =>\n\tcompiler.options.mode === 'none' ? undefined : compiler.options.mode;\n\ninterface ViteContext {\n\treadonly environment?: { readonly config: { readonly consumer: string } };\n}\n\nexport const unpluginFactory: UnpluginFactory<TyfigoPluginOptions | undefined, false> = (options = {}) => {\n\tlet viteCommand: string | undefined;\n\tlet viteMode: string | undefined;\n\tlet rolldownPlatform: string | undefined;\n\tlet viteServer: ViteDevServer | undefined;\n\tconst missingLayers = new Map<string, Set<string>>();\n\n\tconst detect = (\n\t\tcontext: UnpluginBuildContext,\n\t\tloadOptions: { readonly ssr?: boolean } | undefined,\n\t): Pick<LoadOptions, 'target' | 'bundle'> & { readonly mode?: string | undefined } => {\n\t\tconst native = context.getNativeBuildContext?.();\n\t\tif (native?.framework === 'webpack' || native?.framework === 'rspack') {\n\t\t\tconst compiler = native.compiler as WebpackLikeCompiler;\n\t\t\treturn {\n\t\t\t\ttarget: isServerPlatform(compiler.platform) ? 'server' : 'browser',\n\t\t\t\tbundle: true,\n\t\t\t\tmode: webpackMode(compiler),\n\t\t\t};\n\t\t}\n\t\tif (native?.framework === 'esbuild') {\n\t\t\treturn { target: native.build.initialOptions.platform === 'node' ? 'server' : 'browser', bundle: true };\n\t\t}\n\t\tif (viteCommand) {\n\t\t\tconst consumer = (context as ViteContext).environment?.config.consumer;\n\t\t\treturn {\n\t\t\t\ttarget: (consumer === undefined ? loadOptions?.ssr : consumer === 'server') ? 'server' : 'browser',\n\t\t\t\tbundle: viteCommand === 'build',\n\t\t\t\tmode: viteMode,\n\t\t\t};\n\t\t}\n\t\treturn { target: rolldownPlatform === 'node' ? 'server' : 'browser', bundle: true };\n\t};\n\n\treturn {\n\t\tname: 'tyfigo',\n\t\tenforce: 'pre',\n\t\tload: {\n\t\t\tfilter: { id: configPathPattern },\n\t\t\thandler(id, loadOptions?: { readonly ssr?: boolean }) {\n\t\t\t\tconst detected = detect(this, loadOptions);\n\t\t\t\tconst target = options.target ?? detected.target;\n\t\t\t\tconst result = loadConfigImport(id, {\n\t\t\t\t\ttarget,\n\t\t\t\t\tbundle: detected.bundle,\n\t\t\t\t\tenvironment:\n\t\t\t\t\t\toptions.environment ?? (target === 'server' && detected.bundle ? undefined : detected.mode),\n\t\t\t\t\truntime: options.runtime,\n\t\t\t\t});\n\t\t\t\tfor (const file of result.watchFiles) {\n\t\t\t\t\tif (viteServer && !existsSync(file)) {\n\t\t\t\t\t\tmissingLayers.set(file, (missingLayers.get(file) ?? new Set()).add(id));\n\t\t\t\t\t\tviteServer.watcher.add(file);\n\t\t\t\t\t} else this.addWatchFile(file);\n\t\t\t\t}\n\t\t\t\treturn { code: result.code, moduleType: 'js' };\n\t\t\t},\n\t\t},\n\t\ttransform: {\n\t\t\tfilter: {\n\t\t\t\tid: { include: /\\.(?:[cm]?[jt]sx?|vue|svelte|astro)(?:\\?|$)/u, exclude: /[\\\\/]node_modules[\\\\/]/u },\n\t\t\t\tcode: tyfigoImportPattern,\n\t\t\t},\n\t\t\thandler(code, id, transformOptions?: { readonly ssr?: boolean }) {\n\t\t\t\tif ((options.target ?? detect(this, transformOptions).target) !== 'browser') return;\n\t\t\t\tconst messages = findNodeOnlyImports(code, id);\n\t\t\t\tif (messages.length > 0) throw new Error(messages.join('\\n'));\n\t\t\t},\n\t\t},\n\t\tvite: {\n\t\t\tconfigResolved(config) {\n\t\t\t\tviteCommand = config.command;\n\t\t\t\tviteMode = config.mode;\n\t\t\t},\n\t\t\tconfigureServer(server) {\n\t\t\t\tviteServer = server;\n\t\t\t\tserver.watcher.on('add', (file) => {\n\t\t\t\t\tconst ids = missingLayers.get(file);\n\t\t\t\t\tif (!ids) return;\n\t\t\t\t\tmissingLayers.delete(file);\n\t\t\t\t\tfor (const environment of Object.values(server.environments)) {\n\t\t\t\t\t\tfor (const id of ids) {\n\t\t\t\t\t\t\tconst module = environment.moduleGraph.getModuleById(id);\n\t\t\t\t\t\t\tif (module) environment.moduleGraph.invalidateModule(module);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tserver.ws.send({ type: 'full-reload' });\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\trolldown: {\n\t\t\toptions(input) {\n\t\t\t\trolldownPlatform = input.platform;\n\t\t\t},\n\t\t},\n\t\tesbuild: { loader: 'js' },\n\t};\n};\n\nexport const tyfigo = createUnplugin(unpluginFactory);\n"],"mappings":";;;;;AAeA,MAAM,eAAe,aACpB,SAAS,QAAQ,SAAS,SAAS,KAAA,IAAY,SAAS,QAAQ;AAMjE,MAAa,mBAA4E,UAAU,CAAC,MAAM;CACzG,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,MAAM,gCAAgB,IAAI,IAAyB;CAEnD,MAAM,UACL,SACA,gBACqF;EACrF,MAAM,SAAS,QAAQ,wBAAwB;EAC/C,IAAI,QAAQ,cAAc,aAAa,QAAQ,cAAc,UAAU;GACtE,MAAM,WAAW,OAAO;GACxB,OAAO;IACN,QAAQ,iBAAiB,SAAS,QAAQ,IAAI,WAAW;IACzD,QAAQ;IACR,MAAM,YAAY,QAAQ;GAC3B;EACD;EACA,IAAI,QAAQ,cAAc,WACzB,OAAO;GAAE,QAAQ,OAAO,MAAM,eAAe,aAAa,SAAS,WAAW;GAAW,QAAQ;EAAK;EAEvG,IAAI,aAAa;GAChB,MAAM,WAAY,QAAwB,aAAa,OAAO;GAC9D,OAAO;IACN,SAAS,aAAa,KAAA,IAAY,aAAa,MAAM,aAAa,YAAY,WAAW;IACzF,QAAQ,gBAAgB;IACxB,MAAM;GACP;EACD;EACA,OAAO;GAAE,QAAQ,qBAAqB,SAAS,WAAW;GAAW,QAAQ;EAAK;CACnF;CAEA,OAAO;EACN,MAAM;EACN,SAAS;EACT,MAAM;GACL,QAAQ,EAAE,IAAI,kBAAkB;GAChC,QAAQ,IAAI,aAA0C;IACrD,MAAM,WAAW,OAAO,MAAM,WAAW;IACzC,MAAM,SAAS,QAAQ,UAAU,SAAS;IAC1C,MAAM,SAAS,iBAAiB,IAAI;KACnC;KACA,QAAQ,SAAS;KACjB,aACC,QAAQ,gBAAgB,WAAW,YAAY,SAAS,SAAS,KAAA,IAAY,SAAS;KACvF,SAAS,QAAQ;IAClB,CAAC;IACD,KAAK,MAAM,QAAQ,OAAO,YACzB,IAAI,cAAc,CAAC,WAAW,IAAI,GAAG;KACpC,cAAc,IAAI,OAAO,cAAc,IAAI,IAAI,qBAAK,IAAI,IAAI,EAAA,CAAG,IAAI,EAAE,CAAC;KACtE,WAAW,QAAQ,IAAI,IAAI;IAC5B,OAAO,KAAK,aAAa,IAAI;IAE9B,OAAO;KAAE,MAAM,OAAO;KAAM,YAAY;IAAK;GAC9C;EACD;EACA,WAAW;GACV,QAAQ;IACP,IAAI;KAAE,SAAS;KAAgD,SAAS;IAA0B;IAClG,MAAM;GACP;GACA,QAAQ,MAAM,IAAI,kBAA+C;IAChE,KAAK,QAAQ,UAAU,OAAO,MAAM,gBAAgB,CAAC,CAAC,YAAY,WAAW;IAC7E,MAAM,WAAW,oBAAoB,MAAM,EAAE;IAC7C,IAAI,SAAS,SAAS,GAAG,MAAM,IAAI,MAAM,SAAS,KAAK,IAAI,CAAC;GAC7D;EACD;EACA,MAAM;GACL,eAAe,QAAQ;IACtB,cAAc,OAAO;IACrB,WAAW,OAAO;GACnB;GACA,gBAAgB,QAAQ;IACvB,aAAa;IACb,OAAO,QAAQ,GAAG,QAAQ,SAAS;KAClC,MAAM,MAAM,cAAc,IAAI,IAAI;KAClC,IAAI,CAAC,KAAK;KACV,cAAc,OAAO,IAAI;KACzB,KAAK,MAAM,eAAe,OAAO,OAAO,OAAO,YAAY,GAC1D,KAAK,MAAM,MAAM,KAAK;MACrB,MAAM,SAAS,YAAY,YAAY,cAAc,EAAE;MACvD,IAAI,QAAQ,YAAY,YAAY,iBAAiB,MAAM;KAC5D;KAED,OAAO,GAAG,KAAK,EAAE,MAAM,cAAc,CAAC;IACvC,CAAC;GACF;EACD;EACA,UAAU,EACT,QAAQ,OAAO;GACd,mBAAmB,MAAM;EAC1B,EACD;EACA,SAAS,EAAE,QAAQ,KAAK;CACzB;AACD;AAEA,MAAa,SAAS,eAAe,eAAe"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tyfigo",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Typed, validated application config for TypeScript: import layered YAML, TOML, JSONC, JSON5, INI, .properties and XML config files, typed by a TypeScript 7.1 content mapper",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"config",
|
|
@@ -212,7 +212,7 @@
|
|
|
212
212
|
},
|
|
213
213
|
"lint-staged": {
|
|
214
214
|
"*": "oxfmt --no-error-on-unmatched-pattern",
|
|
215
|
-
"*.{js,mjs,cjs,ts,mts,cts}": "oxlint --fix"
|
|
215
|
+
"*.{js,mjs,cjs,ts,mts,cts}": "oxlint --fix --no-error-on-unmatched-pattern"
|
|
216
216
|
},
|
|
217
217
|
"commitlint": {
|
|
218
218
|
"extends": [
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unplugin-Bkc569Qw.mjs","names":[],"sources":["../src/plugins/unplugin.ts"],"sourcesContent":["import { createUnplugin } from 'unplugin';\n\nimport { findNodeOnlyImports, isServerPlatform, loadConfigImport, tyfigoImportPattern } from './shared.ts';\n\nimport { configPathPattern } from '../core/index.ts';\n\nimport type { LoadOptions } from '../runtime/load.ts';\nimport type { TyfigoPluginOptions, WebpackLikeCompiler } from './shared.ts';\nimport type { UnpluginBuildContext, UnpluginFactory } from 'unplugin';\n\nexport type { TyfigoPluginOptions } from './shared.ts';\n\nconst webpackMode = (compiler: WebpackLikeCompiler) =>\n\tcompiler.options.mode === 'none' ? undefined : compiler.options.mode;\n\ninterface ViteContext {\n\treadonly environment?: { readonly config: { readonly consumer: string } };\n}\n\nexport const unpluginFactory: UnpluginFactory<TyfigoPluginOptions | undefined, false> = (options = {}) => {\n\tlet viteCommand: string | undefined;\n\tlet viteMode: string | undefined;\n\tlet rolldownPlatform: string | undefined;\n\n\tconst detect = (\n\t\tcontext: UnpluginBuildContext,\n\t\tloadOptions: { readonly ssr?: boolean } | undefined,\n\t): Pick<LoadOptions, 'target' | 'bundle'> & { readonly mode?: string | undefined } => {\n\t\tconst native = context.getNativeBuildContext?.();\n\t\tif (native?.framework === 'webpack' || native?.framework === 'rspack') {\n\t\t\tconst compiler = native.compiler as WebpackLikeCompiler;\n\t\t\treturn {\n\t\t\t\ttarget: isServerPlatform(compiler.platform) ? 'server' : 'browser',\n\t\t\t\tbundle: true,\n\t\t\t\tmode: webpackMode(compiler),\n\t\t\t};\n\t\t}\n\t\tif (native?.framework === 'esbuild') {\n\t\t\treturn { target: native.build.initialOptions.platform === 'node' ? 'server' : 'browser', bundle: true };\n\t\t}\n\t\tif (viteCommand) {\n\t\t\tconst consumer = (context as ViteContext).environment?.config.consumer;\n\t\t\treturn {\n\t\t\t\ttarget: (consumer === undefined ? loadOptions?.ssr : consumer === 'server') ? 'server' : 'browser',\n\t\t\t\tbundle: viteCommand === 'build',\n\t\t\t\tmode: viteMode,\n\t\t\t};\n\t\t}\n\t\treturn { target: rolldownPlatform === 'node' ? 'server' : 'browser', bundle: true };\n\t};\n\n\treturn {\n\t\tname: 'tyfigo',\n\t\tenforce: 'pre',\n\t\tload: {\n\t\t\tfilter: { id: configPathPattern },\n\t\t\thandler(id, loadOptions?: { readonly ssr?: boolean }) {\n\t\t\t\tconst detected = detect(this, loadOptions);\n\t\t\t\tconst target = options.target ?? detected.target;\n\t\t\t\tconst result = loadConfigImport(id, {\n\t\t\t\t\ttarget,\n\t\t\t\t\tbundle: detected.bundle,\n\t\t\t\t\tenvironment:\n\t\t\t\t\t\toptions.environment ?? (target === 'server' && detected.bundle ? undefined : detected.mode),\n\t\t\t\t\truntime: options.runtime,\n\t\t\t\t});\n\t\t\t\tfor (const file of result.watchFiles) this.addWatchFile(file);\n\t\t\t\treturn { code: result.code, moduleType: 'js' };\n\t\t\t},\n\t\t},\n\t\ttransform: {\n\t\t\tfilter: {\n\t\t\t\tid: { include: /\\.(?:[cm]?[jt]sx?|vue|svelte|astro)(?:\\?|$)/u, exclude: /[\\\\/]node_modules[\\\\/]/u },\n\t\t\t\tcode: tyfigoImportPattern,\n\t\t\t},\n\t\t\thandler(code, id, transformOptions?: { readonly ssr?: boolean }) {\n\t\t\t\tif ((options.target ?? detect(this, transformOptions).target) !== 'browser') return;\n\t\t\t\tconst messages = findNodeOnlyImports(code, id);\n\t\t\t\tif (messages.length > 0) throw new Error(messages.join('\\n'));\n\t\t\t},\n\t\t},\n\t\tvite: {\n\t\t\tconfigResolved(config) {\n\t\t\t\tviteCommand = config.command;\n\t\t\t\tviteMode = config.mode;\n\t\t\t},\n\t\t},\n\t\trolldown: {\n\t\t\toptions(input) {\n\t\t\t\trolldownPlatform = input.platform;\n\t\t\t},\n\t\t},\n\t\tesbuild: { loader: 'js' },\n\t};\n};\n\nexport const tyfigo = createUnplugin(unpluginFactory);\n"],"mappings":";;;;AAYA,MAAM,eAAe,aACpB,SAAS,QAAQ,SAAS,SAAS,KAAA,IAAY,SAAS,QAAQ;AAMjE,MAAa,mBAA4E,UAAU,CAAC,MAAM;CACzG,IAAI;CACJ,IAAI;CACJ,IAAI;CAEJ,MAAM,UACL,SACA,gBACqF;EACrF,MAAM,SAAS,QAAQ,wBAAwB;EAC/C,IAAI,QAAQ,cAAc,aAAa,QAAQ,cAAc,UAAU;GACtE,MAAM,WAAW,OAAO;GACxB,OAAO;IACN,QAAQ,iBAAiB,SAAS,QAAQ,IAAI,WAAW;IACzD,QAAQ;IACR,MAAM,YAAY,QAAQ;GAC3B;EACD;EACA,IAAI,QAAQ,cAAc,WACzB,OAAO;GAAE,QAAQ,OAAO,MAAM,eAAe,aAAa,SAAS,WAAW;GAAW,QAAQ;EAAK;EAEvG,IAAI,aAAa;GAChB,MAAM,WAAY,QAAwB,aAAa,OAAO;GAC9D,OAAO;IACN,SAAS,aAAa,KAAA,IAAY,aAAa,MAAM,aAAa,YAAY,WAAW;IACzF,QAAQ,gBAAgB;IACxB,MAAM;GACP;EACD;EACA,OAAO;GAAE,QAAQ,qBAAqB,SAAS,WAAW;GAAW,QAAQ;EAAK;CACnF;CAEA,OAAO;EACN,MAAM;EACN,SAAS;EACT,MAAM;GACL,QAAQ,EAAE,IAAI,kBAAkB;GAChC,QAAQ,IAAI,aAA0C;IACrD,MAAM,WAAW,OAAO,MAAM,WAAW;IACzC,MAAM,SAAS,QAAQ,UAAU,SAAS;IAC1C,MAAM,SAAS,iBAAiB,IAAI;KACnC;KACA,QAAQ,SAAS;KACjB,aACC,QAAQ,gBAAgB,WAAW,YAAY,SAAS,SAAS,KAAA,IAAY,SAAS;KACvF,SAAS,QAAQ;IAClB,CAAC;IACD,KAAK,MAAM,QAAQ,OAAO,YAAY,KAAK,aAAa,IAAI;IAC5D,OAAO;KAAE,MAAM,OAAO;KAAM,YAAY;IAAK;GAC9C;EACD;EACA,WAAW;GACV,QAAQ;IACP,IAAI;KAAE,SAAS;KAAgD,SAAS;IAA0B;IAClG,MAAM;GACP;GACA,QAAQ,MAAM,IAAI,kBAA+C;IAChE,KAAK,QAAQ,UAAU,OAAO,MAAM,gBAAgB,CAAC,CAAC,YAAY,WAAW;IAC7E,MAAM,WAAW,oBAAoB,MAAM,EAAE;IAC7C,IAAI,SAAS,SAAS,GAAG,MAAM,IAAI,MAAM,SAAS,KAAK,IAAI,CAAC;GAC7D;EACD;EACA,MAAM,EACL,eAAe,QAAQ;GACtB,cAAc,OAAO;GACrB,WAAW,OAAO;EACnB,EACD;EACA,UAAU,EACT,QAAQ,OAAO;GACd,mBAAmB,MAAM;EAC1B,EACD;EACA,SAAS,EAAE,QAAQ,KAAK;CACzB;AACD;AAEA,MAAa,SAAS,eAAe,eAAe"}
|