@fastkit/plugboy 0.3.0 → 1.0.0-next.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.
Files changed (62) hide show
  1. package/README.md +8 -5
  2. package/dist/cli.d.mts +5 -0
  3. package/dist/cli.mjs +33 -129
  4. package/dist/cli.mjs.map +1 -1
  5. package/dist/combine-rules-CWp-M491.mjs +66 -0
  6. package/dist/combine-rules-CWp-M491.mjs.map +1 -0
  7. package/dist/dependencies/bundle-require.d.mts +1 -0
  8. package/dist/dependencies/bundle-require.mjs +3 -3
  9. package/dist/dependencies/cac.d.mts +1 -0
  10. package/dist/dependencies/cac.mjs +3 -3
  11. package/dist/dependencies/glob.d.mts +1 -0
  12. package/dist/dependencies/glob.mjs +3 -3
  13. package/dist/dependencies/inquirer.d.mts +1 -0
  14. package/dist/dependencies/inquirer.mjs +3 -3
  15. package/dist/dependencies/pkg-types.d.mts +1 -0
  16. package/dist/dependencies/pkg-types.mjs +3 -3
  17. package/dist/dependencies/sort-package-json.d.mts +2 -0
  18. package/dist/dependencies/sort-package-json.mjs +5 -4
  19. package/dist/dependencies/sort-package-json.mjs.map +1 -1
  20. package/dist/dependencies/tsdown.d.mts +1 -0
  21. package/dist/dependencies/tsdown.mjs +3 -0
  22. package/dist/optimize-layer-CK8NR_VC.mjs +58 -0
  23. package/dist/optimize-layer-CK8NR_VC.mjs.map +1 -0
  24. package/dist/optimize-media-Bxy27Cj7.mjs +86 -0
  25. package/dist/optimize-media-Bxy27Cj7.mjs.map +1 -0
  26. package/dist/plugboy.d.mts +6284 -0
  27. package/dist/plugboy.mjs +3 -103
  28. package/dist/runtime-utils.d.mts +28 -0
  29. package/dist/runtime-utils.mjs +94 -0
  30. package/dist/runtime-utils.mjs.map +1 -0
  31. package/dist/workspace-DvJYpZA7.mjs +1414 -0
  32. package/dist/workspace-DvJYpZA7.mjs.map +1 -0
  33. package/env.d.ts +0 -18
  34. package/package.json +15 -12
  35. package/dist/chunk-IDJLTVUE.mjs +0 -1619
  36. package/dist/chunk-IDJLTVUE.mjs.map +0 -1
  37. package/dist/cli.d.ts +0 -3
  38. package/dist/combine-rules-2CRG6D4B.mjs +0 -69
  39. package/dist/combine-rules-2CRG6D4B.mjs.map +0 -1
  40. package/dist/dependencies/bundle-require.d.ts +0 -7
  41. package/dist/dependencies/bundle-require.mjs.map +0 -1
  42. package/dist/dependencies/cac.d.ts +0 -1
  43. package/dist/dependencies/cac.mjs.map +0 -1
  44. package/dist/dependencies/esbuild.d.ts +0 -1
  45. package/dist/dependencies/esbuild.mjs +0 -3
  46. package/dist/dependencies/esbuild.mjs.map +0 -1
  47. package/dist/dependencies/glob.d.ts +0 -1
  48. package/dist/dependencies/glob.mjs.map +0 -1
  49. package/dist/dependencies/inquirer.d.ts +0 -1
  50. package/dist/dependencies/inquirer.mjs.map +0 -1
  51. package/dist/dependencies/pkg-types.d.ts +0 -1
  52. package/dist/dependencies/pkg-types.mjs.map +0 -1
  53. package/dist/dependencies/sort-package-json.d.ts +0 -2
  54. package/dist/dependencies/tsup.d.ts +0 -1
  55. package/dist/dependencies/tsup.mjs +0 -3
  56. package/dist/dependencies/tsup.mjs.map +0 -1
  57. package/dist/optimize-layer-Q35C25P4.mjs +0 -61
  58. package/dist/optimize-layer-Q35C25P4.mjs.map +0 -1
  59. package/dist/optimize-media-ZZWDHLLV.mjs +0 -99
  60. package/dist/optimize-media-ZZWDHLLV.mjs.map +0 -1
  61. package/dist/plugboy.d.ts +0 -777
  62. package/dist/plugboy.mjs.map +0 -1
package/README.md CHANGED
@@ -3,11 +3,11 @@
3
3
 
4
4
  🌐 English | [日本語](https://github.com/dadajam4/fastkit/blob/main/packages/plugboy/README-ja.md)
5
5
 
6
- A monorepo-compatible module bundler and project management tool. Provides a high-speed build system based on esbuild, tsup, and other tools.
6
+ A monorepo-compatible module bundler and project management tool. Provides a high-speed build system based on tsdown, and other tools.
7
7
 
8
8
  ## Features
9
9
 
10
- - **High-Speed Build**: Ultra-fast bundling based on esbuild and tsup
10
+ - **High-Speed Build**: Ultra-fast bundling based on tsdown
11
11
  - **Monorepo Support**: Integrated management of multi-package projects
12
12
  - **Full TypeScript Support**: Automatic type definition generation and optimization
13
13
  - **Plugin System**: Extensible architecture
@@ -49,6 +49,7 @@ plugboy gen [workspaceName]
49
49
  ### Workspace Configuration
50
50
 
51
51
  **`plugboy.workspace.ts`**:
52
+
52
53
  ```typescript
53
54
  import { defineWorkspaceConfig } from '@fastkit/plugboy';
54
55
 
@@ -70,13 +71,14 @@ export default defineWorkspaceConfig({
70
71
  ### Project Configuration
71
72
 
72
73
  **`plugboy.project.ts`**:
74
+
73
75
  ```typescript
74
76
  import { defineProjectConfig } from '@fastkit/plugboy';
75
77
 
76
78
  export default defineProjectConfig({
77
79
  workspacesDir: 'packages',
78
80
  peerDependencies: {
79
- 'vue': '^3.4.0'
81
+ 'vue': '^3.5.0'
80
82
  },
81
83
  scripts: [
82
84
  {
@@ -149,7 +151,7 @@ export default defineProjectConfig({
149
151
  workspacesDir: 'packages',
150
152
  peerDependencies: {
151
153
  'react': '^18.0.0',
152
- 'vue': '^3.4.0'
154
+ 'vue': '^3.5.0'
153
155
  }
154
156
  });
155
157
  ```
@@ -341,8 +343,9 @@ export default defineWorkspaceConfig({
341
343
  ## Dependencies
342
344
 
343
345
  ### Main Dependencies
346
+
344
347
  - `esbuild`: High-speed JavaScript builder
345
- - `tsup`: TypeScript build tool
348
+ - `tsdown`: TypeScript build tool
346
349
  - `cac`: CLI creation library
347
350
  - `glob`: File matching
348
351
  - `cssnano`: CSS optimization
package/dist/cli.d.mts ADDED
@@ -0,0 +1,5 @@
1
+ //#region src/cli.d.ts
2
+ declare function main(): Promise<void>;
3
+ //#endregion
4
+ export { main };
5
+ //# sourceMappingURL=cli.d.mts.map
package/dist/cli.mjs CHANGED
@@ -1,136 +1,40 @@
1
- import {
2
- generateWorkspace,
3
- getWorkspace
4
- } from "./chunk-IDJLTVUE.mjs";
5
-
6
- // src/cli.ts
1
+ import { i as getWorkspace, t as generateWorkspace } from "./workspace-DvJYpZA7.mjs";
7
2
  import { cac } from "cac";
8
3
 
9
- // package.json
10
- var package_default = {
11
- name: "@fastkit/plugboy",
12
- version: "0.3.0",
13
- description: "",
14
- keywords: [],
15
- repository: {
16
- type: "git",
17
- url: "git+https://github.com/dadajam4/fastkit.git"
18
- },
19
- license: "MIT",
20
- author: "dadajam4",
21
- type: "module",
22
- exports: {
23
- "./package.json": "./package.json",
24
- "./dependencies/bundle-require": {
25
- import: "./dist/dependencies/bundle-require.mjs",
26
- types: "./dist/dependencies/bundle-require.d.ts"
27
- },
28
- "./dependencies/cac": {
29
- import: "./dist/dependencies/cac.mjs",
30
- types: "./dist/dependencies/cac.d.ts"
31
- },
32
- "./dependencies/esbuild": {
33
- import: "./dist/dependencies/esbuild.mjs",
34
- types: "./dist/dependencies/esbuild.d.ts"
35
- },
36
- "./dependencies/glob": {
37
- import: "./dist/dependencies/glob.mjs",
38
- types: "./dist/dependencies/glob.d.ts"
39
- },
40
- "./dependencies/inquirer": {
41
- import: "./dist/dependencies/inquirer.mjs",
42
- types: "./dist/dependencies/inquirer.d.ts"
43
- },
44
- "./dependencies/pkg-types": {
45
- import: "./dist/dependencies/pkg-types.mjs",
46
- types: "./dist/dependencies/pkg-types.d.ts"
47
- },
48
- "./dependencies/sort-package-json": {
49
- import: "./dist/dependencies/sort-package-json.mjs",
50
- types: "./dist/dependencies/sort-package-json.d.ts"
51
- },
52
- "./dependencies/tsup": {
53
- import: "./dist/dependencies/tsup.mjs",
54
- types: "./dist/dependencies/tsup.d.ts"
55
- },
56
- "./env": {
57
- types: "./env.d.ts"
58
- },
59
- ".": {
60
- import: "./dist/plugboy.mjs",
61
- types: "./dist/plugboy.d.ts"
62
- }
63
- },
64
- bin: {
65
- plugboy: "./cli.mjs"
66
- },
67
- files: [
68
- "env.d.ts",
69
- "cli.mjs",
70
- "dist"
71
- ],
72
- scripts: {
73
- build: "tsup",
74
- clean: "rm -rf .turbo && rm -rf node_modules && rm -rf dist",
75
- eslint: "eslint . --ext ts,tsx,js,vue,html,yaml",
76
- "eslint:fix": "eslint . --ext ts,tsx,js,vue,html,yaml --fix",
77
- lint: "pnpm run eslint",
78
- format: "pnpm run eslint:fix",
79
- typecheck: "tsc --noEmit --skipLibCheck",
80
- test: "vitest run"
81
- },
82
- dependencies: {
83
- "@inquirer/prompts": "^7.8.6",
84
- "@swc/core": "^1.13.5",
85
- "bundle-require": "^5.1.0",
86
- cac: "^6.7.14",
87
- cssnano: "^7.1.1",
88
- esbuild: "^0.25.10",
89
- execa: "^9.6.0",
90
- glob: "^11.0.3",
91
- "pkg-types": "^2.3.0",
92
- "sort-package-json": "^3.4.0",
93
- tsup: "^8.5.0"
94
- }
95
- };
4
+ //#region package.json
5
+ var version = "1.0.0-next.1";
96
6
 
97
- // src/cli.ts
7
+ //#endregion
8
+ //#region src/cli.ts
98
9
  async function main() {
99
- const cli = cac("plugboy");
100
- cli.version(package_default.version);
101
- cli.command("json", "Apply workspace settings in package.json.").action(async (files, options) => {
102
- const workspace = await getWorkspace();
103
- await workspace.preparePackageJSON();
104
- });
105
- cli.command("stub", "Link workspace distributions and source directories.").action(async (files, options) => {
106
- const workspace = await getWorkspace();
107
- await workspace.preparePackageJSON();
108
- await workspace.stub();
109
- });
110
- cli.command(
111
- "build",
112
- "Guess all entries in the workspace and bundle the source code."
113
- ).action(async (files, options) => {
114
- const workspace = await getWorkspace();
115
- await workspace.preparePackageJSON();
116
- await workspace.build();
117
- });
118
- cli.command("clean", "Deletes the distribution directory of the workspace.").action(async (files, options) => {
119
- const workspace = await getWorkspace();
120
- await workspace.preparePackageJSON();
121
- await workspace.clean();
122
- });
123
- cli.command(
124
- "generate [workspaceName]",
125
- "Generate a workspace for your project."
126
- ).alias("gen").action(async (workspaceName, options) => {
127
- await generateWorkspace(workspaceName);
128
- });
129
- cli.help();
130
- cli.parse();
10
+ const cli = cac("plugboy");
11
+ cli.version(version);
12
+ cli.command("json", "Apply workspace settings in package.json.").action(async (files, options) => {
13
+ await (await getWorkspace()).preparePackageJSON();
14
+ });
15
+ cli.command("stub", "Link workspace distributions and source directories.").action(async (files, options) => {
16
+ const workspace = await getWorkspace();
17
+ await workspace.preparePackageJSON();
18
+ await workspace.stub();
19
+ });
20
+ cli.command("build", "Guess all entries in the workspace and bundle the source code.").action(async (files, options) => {
21
+ const workspace = await getWorkspace();
22
+ await workspace.preparePackageJSON();
23
+ await workspace.build();
24
+ });
25
+ cli.command("clean", "Deletes the distribution directory of the workspace.").action(async (files, options) => {
26
+ const workspace = await getWorkspace();
27
+ await workspace.preparePackageJSON();
28
+ await workspace.clean();
29
+ });
30
+ cli.command("generate [workspaceName]", "Generate a workspace for your project.").alias("gen").action(async (workspaceName, options) => {
31
+ await generateWorkspace(workspaceName);
32
+ });
33
+ cli.help();
34
+ cli.parse();
131
35
  }
132
36
  main();
133
- export {
134
- main
135
- };
37
+
38
+ //#endregion
39
+ export { main };
136
40
  //# sourceMappingURL=cli.mjs.map
package/dist/cli.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli.ts","../package.json"],"sourcesContent":["import { cac } from 'cac';\nimport { getWorkspace, generateWorkspace } from './workspace';\nimport pkg from '../package.json';\n\nexport async function main() {\n const cli = cac('plugboy');\n cli.version(pkg.version);\n\n cli\n .command('json', 'Apply workspace settings in package.json.')\n .action(async (files, options) => {\n const workspace = await getWorkspace();\n await workspace.preparePackageJSON();\n });\n\n cli\n .command('stub', 'Link workspace distributions and source directories.')\n .action(async (files, options) => {\n const workspace = await getWorkspace();\n await workspace.preparePackageJSON();\n await workspace.stub();\n });\n\n cli\n .command(\n 'build',\n 'Guess all entries in the workspace and bundle the source code.',\n )\n .action(async (files, options) => {\n const workspace = await getWorkspace();\n await workspace.preparePackageJSON();\n await workspace.build();\n });\n\n cli\n .command('clean', 'Deletes the distribution directory of the workspace.')\n .action(async (files, options) => {\n const workspace = await getWorkspace();\n await workspace.preparePackageJSON();\n await workspace.clean();\n });\n\n cli\n .command(\n 'generate [workspaceName]',\n 'Generate a workspace for your project.',\n )\n .alias('gen')\n .action(async (workspaceName: string | undefined, options) => {\n await generateWorkspace(workspaceName);\n });\n\n cli.help();\n cli.parse();\n}\n\nmain();\n","{\n \"name\": \"@fastkit/plugboy\",\n \"version\": \"0.3.0\",\n \"description\": \"\",\n \"keywords\": [],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/dadajam4/fastkit.git\"\n },\n \"license\": \"MIT\",\n \"author\": \"dadajam4\",\n \"type\": \"module\",\n \"exports\": {\n \"./package.json\": \"./package.json\",\n \"./dependencies/bundle-require\": {\n \"import\": \"./dist/dependencies/bundle-require.mjs\",\n \"types\": \"./dist/dependencies/bundle-require.d.ts\"\n },\n \"./dependencies/cac\": {\n \"import\": \"./dist/dependencies/cac.mjs\",\n \"types\": \"./dist/dependencies/cac.d.ts\"\n },\n \"./dependencies/esbuild\": {\n \"import\": \"./dist/dependencies/esbuild.mjs\",\n \"types\": \"./dist/dependencies/esbuild.d.ts\"\n },\n \"./dependencies/glob\": {\n \"import\": \"./dist/dependencies/glob.mjs\",\n \"types\": \"./dist/dependencies/glob.d.ts\"\n },\n \"./dependencies/inquirer\": {\n \"import\": \"./dist/dependencies/inquirer.mjs\",\n \"types\": \"./dist/dependencies/inquirer.d.ts\"\n },\n \"./dependencies/pkg-types\": {\n \"import\": \"./dist/dependencies/pkg-types.mjs\",\n \"types\": \"./dist/dependencies/pkg-types.d.ts\"\n },\n \"./dependencies/sort-package-json\": {\n \"import\": \"./dist/dependencies/sort-package-json.mjs\",\n \"types\": \"./dist/dependencies/sort-package-json.d.ts\"\n },\n \"./dependencies/tsup\": {\n \"import\": \"./dist/dependencies/tsup.mjs\",\n \"types\": \"./dist/dependencies/tsup.d.ts\"\n },\n \"./env\": {\n \"types\": \"./env.d.ts\"\n },\n \".\": {\n \"import\": \"./dist/plugboy.mjs\",\n \"types\": \"./dist/plugboy.d.ts\"\n }\n },\n \"bin\": {\n \"plugboy\": \"./cli.mjs\"\n },\n \"files\": [\n \"env.d.ts\",\n \"cli.mjs\",\n \"dist\"\n ],\n \"scripts\": {\n \"build\": \"tsup\",\n \"clean\": \"rm -rf .turbo && rm -rf node_modules && rm -rf dist\",\n \"eslint\": \"eslint . --ext ts,tsx,js,vue,html,yaml\",\n \"eslint:fix\": \"eslint . --ext ts,tsx,js,vue,html,yaml --fix\",\n \"lint\": \"pnpm run eslint\",\n \"format\": \"pnpm run eslint:fix\",\n \"typecheck\": \"tsc --noEmit --skipLibCheck\",\n \"test\": \"vitest run\"\n },\n \"dependencies\": {\n \"@inquirer/prompts\": \"^7.8.6\",\n \"@swc/core\": \"^1.13.5\",\n \"bundle-require\": \"^5.1.0\",\n \"cac\": \"^6.7.14\",\n \"cssnano\": \"^7.1.1\",\n \"esbuild\": \"^0.25.10\",\n \"execa\": \"^9.6.0\",\n \"glob\": \"^11.0.3\",\n \"pkg-types\": \"^2.3.0\",\n \"sort-package-json\": \"^3.4.0\",\n \"tsup\": \"^8.5.0\"\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"file":"cli.mjs","names":["pkg.version"],"sources":["../package.json","../src/cli.ts"],"sourcesContent":["","import { cac } from 'cac';\nimport { getWorkspace, generateWorkspace } from './workspace';\nimport pkg from '../package.json';\n\nexport async function main() {\n const cli = cac('plugboy');\n cli.version(pkg.version);\n\n cli\n .command('json', 'Apply workspace settings in package.json.')\n .action(async (files, options) => {\n const workspace = await getWorkspace();\n await workspace.preparePackageJSON();\n });\n\n cli\n .command('stub', 'Link workspace distributions and source directories.')\n .action(async (files, options) => {\n const workspace = await getWorkspace();\n await workspace.preparePackageJSON();\n await workspace.stub();\n });\n\n cli\n .command(\n 'build',\n 'Guess all entries in the workspace and bundle the source code.',\n )\n .action(async (files, options) => {\n const workspace = await getWorkspace();\n await workspace.preparePackageJSON();\n await workspace.build();\n });\n\n cli\n .command('clean', 'Deletes the distribution directory of the workspace.')\n .action(async (files, options) => {\n const workspace = await getWorkspace();\n await workspace.preparePackageJSON();\n await workspace.clean();\n });\n\n cli\n .command(\n 'generate [workspaceName]',\n 'Generate a workspace for your project.',\n )\n .alias('gen')\n .action(async (workspaceName: string | undefined, options) => {\n await generateWorkspace(workspaceName);\n });\n\n cli.help();\n cli.parse();\n}\n\nmain();\n"],"mappings":";;;;;;;;ACIA,eAAsB,OAAO;CAC3B,MAAM,MAAM,IAAI,UAAU;AAC1B,KAAI,QAAQA,QAAY;AAExB,KACG,QAAQ,QAAQ,4CAA4C,CAC5D,OAAO,OAAO,OAAO,YAAY;AAEhC,SADkB,MAAM,cAAc,EACtB,oBAAoB;GACpC;AAEJ,KACG,QAAQ,QAAQ,uDAAuD,CACvE,OAAO,OAAO,OAAO,YAAY;EAChC,MAAM,YAAY,MAAM,cAAc;AACtC,QAAM,UAAU,oBAAoB;AACpC,QAAM,UAAU,MAAM;GACtB;AAEJ,KACG,QACC,SACA,iEACD,CACA,OAAO,OAAO,OAAO,YAAY;EAChC,MAAM,YAAY,MAAM,cAAc;AACtC,QAAM,UAAU,oBAAoB;AACpC,QAAM,UAAU,OAAO;GACvB;AAEJ,KACG,QAAQ,SAAS,uDAAuD,CACxE,OAAO,OAAO,OAAO,YAAY;EAChC,MAAM,YAAY,MAAM,cAAc;AACtC,QAAM,UAAU,oBAAoB;AACpC,QAAM,UAAU,OAAO;GACvB;AAEJ,KACG,QACC,4BACA,yCACD,CACA,MAAM,MAAM,CACZ,OAAO,OAAO,eAAmC,YAAY;AAC5D,QAAM,kBAAkB,cAAc;GACtC;AAEJ,KAAI,MAAM;AACV,KAAI,OAAO;;AAGb,MAAM"}
@@ -0,0 +1,66 @@
1
+ import postcss, { Root } from "postcss";
2
+
3
+ //#region src/postcss/plugins/combine-rules.ts
4
+ function buildFilterFn(spec) {
5
+ return (rule) => {
6
+ if (typeof spec === "function") return spec(rule);
7
+ const { selector } = rule;
8
+ return spec.some((target) => {
9
+ if (typeof target === "string") return selector === target;
10
+ return target.test(selector);
11
+ });
12
+ };
13
+ }
14
+ function combineContainerRules(container, filter) {
15
+ const { nodes } = container;
16
+ if (!nodes) return;
17
+ const rules = nodes.filter(filter);
18
+ const combinedRules = [];
19
+ rules.forEach((rule) => {
20
+ const { selector } = rule;
21
+ let combinedRule = combinedRules.find((c) => c.selector === selector);
22
+ if (!combinedRule) {
23
+ combinedRule = {
24
+ selector,
25
+ rules: [],
26
+ container: rule
27
+ };
28
+ combinedRules.push(combinedRule);
29
+ }
30
+ combinedRule.rules.push(rule);
31
+ });
32
+ combinedRules.forEach((combinedRule) => {
33
+ combinedRule.rules.forEach((rule, index) => {
34
+ if (index === 0) return;
35
+ const { nodes } = rule;
36
+ if (!nodes) return;
37
+ nodes.forEach((node) => {
38
+ combinedRule.container.append(node.clone());
39
+ });
40
+ rule.remove();
41
+ });
42
+ });
43
+ }
44
+ function combineRules(css, opts) {
45
+ const root = css instanceof Root ? css : postcss.parse(css);
46
+ const filter = buildFilterFn(opts.rules);
47
+ combineContainerRules(root, filter);
48
+ root.walkAtRules((atRule) => {
49
+ combineContainerRules(atRule, filter);
50
+ });
51
+ return root;
52
+ }
53
+ const PLUGIN_NAME = "combine-rules";
54
+ function CombineRules(opts) {
55
+ return {
56
+ postcssPlugin: PLUGIN_NAME,
57
+ Once(root) {
58
+ combineRules(root, opts);
59
+ }
60
+ };
61
+ }
62
+ CombineRules.postcss = true;
63
+
64
+ //#endregion
65
+ export { CombineRules };
66
+ //# sourceMappingURL=combine-rules-CWp-M491.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combine-rules-CWp-M491.mjs","names":[],"sources":["../src/postcss/plugins/combine-rules.ts"],"sourcesContent":["import postcss, { Plugin, Root, Container, Rule } from 'postcss';\n\nexport type RuleFilter = string | RegExp;\n\nexport type RuleSpecFn = (rule: Rule) => boolean;\n\nexport type RuleSpec = RuleFilter[] | RuleSpecFn;\n\nexport interface CombineRulesOptions {\n rules: RuleSpec;\n}\n\nfunction buildFilterFn(spec: RuleSpec): RuleSpecFn {\n return (rule) => {\n if (typeof spec === 'function') return spec(rule);\n const { selector } = rule;\n return spec.some((target) => {\n if (typeof target === 'string') return selector === target;\n return target.test(selector);\n });\n };\n}\n\nexport function combineContainerRules(\n container: Container,\n filter: RuleSpecFn,\n) {\n const { nodes } = container;\n if (!nodes) return;\n\n const rules: Rule[] = (nodes as Rule[]).filter(filter);\n const combinedRules: { selector: string; rules: Rule[]; container: Rule }[] =\n [];\n rules.forEach((rule) => {\n const { selector } = rule;\n let combinedRule = combinedRules.find((c) => c.selector === selector);\n if (!combinedRule) {\n combinedRule = {\n selector,\n rules: [],\n container: rule,\n };\n combinedRules.push(combinedRule);\n }\n combinedRule.rules.push(rule);\n });\n\n combinedRules.forEach((combinedRule) => {\n combinedRule.rules.forEach((rule, index) => {\n if (index === 0) return;\n\n const { nodes } = rule;\n if (!nodes) return;\n nodes.forEach((node) => {\n combinedRule.container.append(node.clone());\n });\n rule.remove();\n });\n });\n}\n\nexport function combineRules(\n css: string | { toString(): string } | Root,\n opts: CombineRulesOptions,\n): Root {\n const root = css instanceof Root ? css : postcss.parse(css);\n const filter = buildFilterFn(opts.rules);\n combineContainerRules(root, filter);\n root.walkAtRules((atRule) => {\n combineContainerRules(atRule, filter);\n });\n return root;\n}\n\nconst PLUGIN_NAME = 'combine-rules';\n\nexport function CombineRules(opts: CombineRulesOptions): Plugin {\n return {\n postcssPlugin: PLUGIN_NAME,\n Once(root) {\n combineRules(root, opts);\n },\n };\n}\n\nCombineRules.postcss = true;\n\nexport default CombineRules;\n"],"mappings":";;;AAYA,SAAS,cAAc,MAA4B;AACjD,SAAQ,SAAS;AACf,MAAI,OAAO,SAAS,WAAY,QAAO,KAAK,KAAK;EACjD,MAAM,EAAE,aAAa;AACrB,SAAO,KAAK,MAAM,WAAW;AAC3B,OAAI,OAAO,WAAW,SAAU,QAAO,aAAa;AACpD,UAAO,OAAO,KAAK,SAAS;IAC5B;;;AAIN,SAAgB,sBACd,WACA,QACA;CACA,MAAM,EAAE,UAAU;AAClB,KAAI,CAAC,MAAO;CAEZ,MAAM,QAAiB,MAAiB,OAAO,OAAO;CACtD,MAAM,gBACJ,EAAE;AACJ,OAAM,SAAS,SAAS;EACtB,MAAM,EAAE,aAAa;EACrB,IAAI,eAAe,cAAc,MAAM,MAAM,EAAE,aAAa,SAAS;AACrE,MAAI,CAAC,cAAc;AACjB,kBAAe;IACb;IACA,OAAO,EAAE;IACT,WAAW;IACZ;AACD,iBAAc,KAAK,aAAa;;AAElC,eAAa,MAAM,KAAK,KAAK;GAC7B;AAEF,eAAc,SAAS,iBAAiB;AACtC,eAAa,MAAM,SAAS,MAAM,UAAU;AAC1C,OAAI,UAAU,EAAG;GAEjB,MAAM,EAAE,UAAU;AAClB,OAAI,CAAC,MAAO;AACZ,SAAM,SAAS,SAAS;AACtB,iBAAa,UAAU,OAAO,KAAK,OAAO,CAAC;KAC3C;AACF,QAAK,QAAQ;IACb;GACF;;AAGJ,SAAgB,aACd,KACA,MACM;CACN,MAAM,OAAO,eAAe,OAAO,MAAM,QAAQ,MAAM,IAAI;CAC3D,MAAM,SAAS,cAAc,KAAK,MAAM;AACxC,uBAAsB,MAAM,OAAO;AACnC,MAAK,aAAa,WAAW;AAC3B,wBAAsB,QAAQ,OAAO;GACrC;AACF,QAAO;;AAGT,MAAM,cAAc;AAEpB,SAAgB,aAAa,MAAmC;AAC9D,QAAO;EACL,eAAe;EACf,KAAK,MAAM;AACT,gBAAa,MAAM,KAAK;;EAE3B;;AAGH,aAAa,UAAU"}
@@ -0,0 +1 @@
1
+ export * from "bundle-require";
@@ -1,3 +1,3 @@
1
- // src/dependencies/bundle-require.ts
2
- export * from "bundle-require";
3
- //# sourceMappingURL=bundle-require.mjs.map
1
+ export * from "bundle-require"
2
+
3
+ export { };
@@ -0,0 +1 @@
1
+ export * from "cac";
@@ -1,3 +1,3 @@
1
- // src/dependencies/cac.ts
2
- export * from "cac";
3
- //# sourceMappingURL=cac.mjs.map
1
+ export * from "cac"
2
+
3
+ export { };
@@ -0,0 +1 @@
1
+ export * from "glob";
@@ -1,3 +1,3 @@
1
- // src/dependencies/glob.ts
2
- export * from "glob";
3
- //# sourceMappingURL=glob.mjs.map
1
+ export * from "glob"
2
+
3
+ export { };
@@ -0,0 +1 @@
1
+ export * from "@inquirer/prompts";
@@ -1,3 +1,3 @@
1
- // src/dependencies/inquirer.ts
2
- export * from "@inquirer/prompts";
3
- //# sourceMappingURL=inquirer.mjs.map
1
+ export * from "@inquirer/prompts"
2
+
3
+ export { };
@@ -0,0 +1 @@
1
+ export * from "pkg-types";
@@ -1,3 +1,3 @@
1
- // src/dependencies/pkg-types.ts
2
- export * from "pkg-types";
3
- //# sourceMappingURL=pkg-types.mjs.map
1
+ export * from "pkg-types"
2
+
3
+ export { };
@@ -0,0 +1,2 @@
1
+ import sortPackageJson from "sort-package-json";
2
+ export { sortPackageJson as default };
@@ -1,7 +1,8 @@
1
- // src/dependencies/sort-package-json.ts
2
1
  import sortPackageJson from "sort-package-json";
2
+
3
+ //#region src/dependencies/sort-package-json.ts
3
4
  var sort_package_json_default = sortPackageJson;
4
- export {
5
- sort_package_json_default as default
6
- };
5
+
6
+ //#endregion
7
+ export { sort_package_json_default as default };
7
8
  //# sourceMappingURL=sort-package-json.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/dependencies/sort-package-json.ts"],"sourcesContent":["import sortPackageJson from 'sort-package-json';\n\nexport default sortPackageJson;\n"],"mappings":";AAAA,OAAO,qBAAqB;AAE5B,IAAO,4BAAQ;","names":[]}
1
+ {"version":3,"file":"sort-package-json.mjs","names":[],"sources":["../../src/dependencies/sort-package-json.ts"],"sourcesContent":["import sortPackageJson from 'sort-package-json';\n\nexport default sortPackageJson;\n"],"mappings":";;;AAEA,gCAAe"}
@@ -0,0 +1 @@
1
+ export * from "tsdown";
@@ -0,0 +1,3 @@
1
+ export * from "tsdown"
2
+
3
+ export { };
@@ -0,0 +1,58 @@
1
+ import postcss, { Root } from "postcss";
2
+
3
+ //#region src/postcss/plugins/optimize-layer.ts
4
+ function resolveFilter(spec, defaults) {
5
+ if (!spec) return () => defaults;
6
+ if (typeof spec === "function") return spec;
7
+ const conditions = Array.isArray(spec) ? spec : [spec];
8
+ return (layerName) => conditions.some((condition) => typeof condition === "string" ? layerName.includes(condition) : condition.test(layerName));
9
+ }
10
+ function optimizeLayer(css, opts = {}) {
11
+ const root = css instanceof Root ? css : postcss.parse(css);
12
+ const layers = [];
13
+ const include = resolveFilter(opts.include, true);
14
+ const exclude = resolveFilter(opts.exclude, false);
15
+ const getLayer = (layerRule) => {
16
+ const name = layerRule.params;
17
+ const layer = layers.find((_layer) => _layer.name === name);
18
+ if (layer) return {
19
+ layer,
20
+ atFirst: false
21
+ };
22
+ const created = {
23
+ name,
24
+ rule: layerRule
25
+ };
26
+ layers.push(created);
27
+ return {
28
+ layer: created,
29
+ atFirst: true
30
+ };
31
+ };
32
+ root.walkAtRules("layer", (layerRule) => {
33
+ if (layerRule.parent?.type !== "root") return;
34
+ const { params, nodes } = layerRule;
35
+ if (!nodes || !include(params, layerRule) || exclude(params, layerRule)) return;
36
+ const { layer, atFirst } = getLayer(layerRule);
37
+ if (atFirst) return;
38
+ layerRule.nodes?.forEach((node) => {
39
+ layer.rule.append(node.clone());
40
+ });
41
+ layerRule.remove();
42
+ });
43
+ return root;
44
+ }
45
+ const PLUGIN_NAME = "optimize-layer";
46
+ function OptimizeLayer(opts) {
47
+ return {
48
+ postcssPlugin: PLUGIN_NAME,
49
+ Once(root) {
50
+ optimizeLayer(root, opts);
51
+ }
52
+ };
53
+ }
54
+ OptimizeLayer.postcss = true;
55
+
56
+ //#endregion
57
+ export { OptimizeLayer };
58
+ //# sourceMappingURL=optimize-layer-CK8NR_VC.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimize-layer-CK8NR_VC.mjs","names":[],"sources":["../src/postcss/plugins/optimize-layer.ts"],"sourcesContent":["import postcss, { AtRule, Plugin, Root } from 'postcss';\n\ntype Filter = (layerName: string, rule: AtRule) => boolean;\n\ntype FilterSpec = string | RegExp | (string | RegExp)[] | Filter;\n\nexport interface OptimizeLayerOptions {\n include?: FilterSpec;\n exclude?: FilterSpec;\n}\n\nfunction resolveFilter(\n spec: FilterSpec | undefined,\n defaults: boolean,\n): Filter {\n if (!spec) return () => defaults;\n if (typeof spec === 'function') return spec;\n const conditions = Array.isArray(spec) ? spec : [spec];\n return (layerName) =>\n conditions.some((condition) =>\n typeof condition === 'string'\n ? layerName.includes(condition)\n : condition.test(layerName),\n );\n}\n\ninterface Layer {\n name: string;\n rule: AtRule;\n}\n\nexport function optimizeLayer(\n css: string | { toString(): string } | Root,\n opts: OptimizeLayerOptions = {},\n): Root {\n const root = css instanceof Root ? css : postcss.parse(css);\n const layers: Layer[] = [];\n const include = resolveFilter(opts.include, true);\n const exclude = resolveFilter(opts.exclude, false);\n\n const getLayer = (\n layerRule: AtRule,\n ): {\n layer: Layer;\n atFirst: boolean;\n } => {\n const name = layerRule.params;\n const layer = layers.find((_layer) => _layer.name === name);\n if (layer)\n return {\n layer,\n atFirst: false,\n };\n\n const created: Layer = { name, rule: layerRule };\n layers.push(created);\n return {\n layer: created,\n atFirst: true,\n };\n };\n\n root.walkAtRules('layer', (layerRule) => {\n if (layerRule.parent?.type !== 'root') return;\n const { params, nodes } = layerRule;\n if (!nodes || !include(params, layerRule) || exclude(params, layerRule))\n return;\n\n const { layer, atFirst } = getLayer(layerRule);\n\n if (atFirst) return;\n\n layerRule.nodes?.forEach((node) => {\n layer.rule.append(node.clone());\n });\n\n layerRule.remove();\n });\n\n return root;\n}\n\nconst PLUGIN_NAME = 'optimize-layer';\n\nexport function OptimizeLayer(opts?: OptimizeLayerOptions): Plugin {\n return {\n postcssPlugin: PLUGIN_NAME,\n Once(root) {\n optimizeLayer(root, opts);\n },\n };\n}\n\nOptimizeLayer.postcss = true;\n\nexport default OptimizeLayer;\n"],"mappings":";;;AAWA,SAAS,cACP,MACA,UACQ;AACR,KAAI,CAAC,KAAM,cAAa;AACxB,KAAI,OAAO,SAAS,WAAY,QAAO;CACvC,MAAM,aAAa,MAAM,QAAQ,KAAK,GAAG,OAAO,CAAC,KAAK;AACtD,SAAQ,cACN,WAAW,MAAM,cACf,OAAO,cAAc,WACjB,UAAU,SAAS,UAAU,GAC7B,UAAU,KAAK,UAAU,CAC9B;;AAQL,SAAgB,cACd,KACA,OAA6B,EAAE,EACzB;CACN,MAAM,OAAO,eAAe,OAAO,MAAM,QAAQ,MAAM,IAAI;CAC3D,MAAM,SAAkB,EAAE;CAC1B,MAAM,UAAU,cAAc,KAAK,SAAS,KAAK;CACjD,MAAM,UAAU,cAAc,KAAK,SAAS,MAAM;CAElD,MAAM,YACJ,cAIG;EACH,MAAM,OAAO,UAAU;EACvB,MAAM,QAAQ,OAAO,MAAM,WAAW,OAAO,SAAS,KAAK;AAC3D,MAAI,MACF,QAAO;GACL;GACA,SAAS;GACV;EAEH,MAAM,UAAiB;GAAE;GAAM,MAAM;GAAW;AAChD,SAAO,KAAK,QAAQ;AACpB,SAAO;GACL,OAAO;GACP,SAAS;GACV;;AAGH,MAAK,YAAY,UAAU,cAAc;AACvC,MAAI,UAAU,QAAQ,SAAS,OAAQ;EACvC,MAAM,EAAE,QAAQ,UAAU;AAC1B,MAAI,CAAC,SAAS,CAAC,QAAQ,QAAQ,UAAU,IAAI,QAAQ,QAAQ,UAAU,CACrE;EAEF,MAAM,EAAE,OAAO,YAAY,SAAS,UAAU;AAE9C,MAAI,QAAS;AAEb,YAAU,OAAO,SAAS,SAAS;AACjC,SAAM,KAAK,OAAO,KAAK,OAAO,CAAC;IAC/B;AAEF,YAAU,QAAQ;GAClB;AAEF,QAAO;;AAGT,MAAM,cAAc;AAEpB,SAAgB,cAAc,MAAqC;AACjE,QAAO;EACL,eAAe;EACf,KAAK,MAAM;AACT,iBAAc,MAAM,KAAK;;EAE5B;;AAGH,cAAc,UAAU"}
@@ -0,0 +1,86 @@
1
+ import postcss, { AtRule, Root } from "postcss";
2
+
3
+ //#region src/postcss/plugins/optimize-media.ts
4
+ function resolveFilter(spec, defaults) {
5
+ if (!spec) return () => defaults;
6
+ if (typeof spec === "function") return spec;
7
+ const conditions = Array.isArray(spec) ? spec : [spec];
8
+ return (layerName) => conditions.some((condition) => typeof condition === "string" ? layerName.includes(condition) : condition.test(layerName));
9
+ }
10
+ function parseMedia(mediaRule) {
11
+ const { params, parent } = mediaRule;
12
+ if (!parent) throw mediaRule.error("@media rules require a parent container.");
13
+ return {
14
+ query: params,
15
+ rule: mediaRule,
16
+ container: parent
17
+ };
18
+ }
19
+ function isSourceMapAnnotation(node) {
20
+ if (!node) return false;
21
+ if (node.type !== "comment") return false;
22
+ return node.text.toLowerCase().startsWith("# sourcemappingurl=");
23
+ }
24
+ function getSourceMapAnnotation(container) {
25
+ const maybeAnnotation = container.last;
26
+ if (isSourceMapAnnotation(maybeAnnotation)) return maybeAnnotation;
27
+ }
28
+ function optimizeMedia(css, opts = {}) {
29
+ const root = css instanceof Root ? css : postcss.parse(css);
30
+ const include = resolveFilter(opts.include, true);
31
+ const exclude = resolveFilter(opts.exclude, false);
32
+ const sourceMap = getSourceMapAnnotation(root);
33
+ const containerMap = /* @__PURE__ */ new Map();
34
+ root.walkAtRules("media", (mediaRule) => {
35
+ const media = parseMedia(mediaRule);
36
+ if (!mediaRule.nodes || !include(media.query, media) || exclude(media.query, media)) return;
37
+ let bucket = containerMap.get(media.container);
38
+ if (!bucket) {
39
+ bucket = [];
40
+ containerMap.set(media.container, bucket);
41
+ }
42
+ bucket.push(media);
43
+ });
44
+ containerMap.forEach((bucket, container) => {
45
+ if (opts.sort) bucket.sort(opts.sort);
46
+ const combinedRules = [];
47
+ bucket.forEach((media) => {
48
+ let rule = combinedRules.find((r) => r.query === media.query);
49
+ if (!rule) {
50
+ rule = {
51
+ query: media.query,
52
+ medias: []
53
+ };
54
+ combinedRules.push(rule);
55
+ }
56
+ rule.medias.push(media);
57
+ });
58
+ combinedRules.forEach((rule) => {
59
+ const nodes = rule.medias.map((media) => (media.rule.nodes || []).map((node) => node.clone())).flat();
60
+ const newAtRule = new AtRule({
61
+ name: "media",
62
+ params: rule.query,
63
+ nodes
64
+ });
65
+ rule.medias.forEach((media) => media.rule.remove());
66
+ container.append(newAtRule);
67
+ });
68
+ });
69
+ containerMap.clear();
70
+ if (sourceMap) root.append(sourceMap);
71
+ return root;
72
+ }
73
+ const PLUGIN_NAME = "optimize-media";
74
+ function OptimizeMedia(opts) {
75
+ return {
76
+ postcssPlugin: PLUGIN_NAME,
77
+ Once(root) {
78
+ optimizeMedia(root, opts);
79
+ }
80
+ };
81
+ }
82
+ OptimizeMedia.postcss = true;
83
+
84
+ //#endregion
85
+ export { OptimizeMedia };
86
+ //# sourceMappingURL=optimize-media-Bxy27Cj7.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimize-media-Bxy27Cj7.mjs","names":[],"sources":["../src/postcss/plugins/optimize-media.ts"],"sourcesContent":["import postcss, {\n AtRule,\n Plugin,\n Root,\n Container,\n ChildNode,\n Comment,\n} from 'postcss';\n\ninterface Media {\n query: string;\n rule: AtRule;\n container: Container;\n}\n\ntype Filter = (query: string, media: Media) => boolean;\n\ntype FilterSpec = string | RegExp | (string | RegExp)[] | Filter;\n\nfunction resolveFilter(\n spec: FilterSpec | undefined,\n defaults: boolean,\n): Filter {\n if (!spec) return () => defaults;\n if (typeof spec === 'function') return spec;\n const conditions = Array.isArray(spec) ? spec : [spec];\n return (layerName) =>\n conditions.some((condition) =>\n typeof condition === 'string'\n ? layerName.includes(condition)\n : condition.test(layerName),\n );\n}\n\ntype SortMedia = (a: Media, b: Media) => number;\n\nexport interface OptimizeMediaOptions {\n include?: FilterSpec;\n exclude?: FilterSpec;\n sort?: SortMedia;\n}\n\nfunction parseMedia(mediaRule: AtRule): Media {\n const { params, parent } = mediaRule;\n if (!parent) {\n throw mediaRule.error('@media rules require a parent container.');\n }\n return {\n query: params,\n rule: mediaRule,\n container: parent,\n };\n}\n\nfunction isSourceMapAnnotation(node: ChildNode | undefined): node is Comment {\n if (!node) return false;\n if (node.type !== 'comment') return false;\n return node.text.toLowerCase().startsWith('# sourcemappingurl=');\n}\n\nfunction getSourceMapAnnotation(container: Container): ChildNode | undefined {\n const maybeAnnotation = container.last;\n if (isSourceMapAnnotation(maybeAnnotation)) {\n return maybeAnnotation;\n }\n}\n\nexport function optimizeMedia(\n css: string | { toString(): string } | Root,\n opts: OptimizeMediaOptions = {},\n): Root {\n const root = css instanceof Root ? css : postcss.parse(css);\n const include = resolveFilter(opts.include, true);\n const exclude = resolveFilter(opts.exclude, false);\n\n const sourceMap = getSourceMapAnnotation(root);\n\n const containerMap = new Map<Container, Media[]>();\n\n root.walkAtRules('media', (mediaRule) => {\n const media = parseMedia(mediaRule);\n if (\n !mediaRule.nodes ||\n !include(media.query, media) ||\n exclude(media.query, media)\n )\n return;\n\n let bucket = containerMap.get(media.container);\n if (!bucket) {\n bucket = [];\n containerMap.set(media.container, bucket);\n }\n bucket.push(media);\n });\n\n containerMap.forEach((bucket, container) => {\n if (opts.sort) {\n bucket.sort(opts.sort);\n }\n\n const combinedRules: {\n query: string;\n medias: Media[];\n }[] = [];\n\n bucket.forEach((media) => {\n let rule = combinedRules.find((r) => r.query === media.query);\n if (!rule) {\n rule = { query: media.query, medias: [] };\n combinedRules.push(rule);\n }\n rule.medias.push(media);\n });\n\n combinedRules.forEach((rule) => {\n const nodes = rule.medias\n .map((media) => (media.rule.nodes || []).map((node) => node.clone()))\n .flat();\n const newAtRule = new AtRule({\n name: 'media',\n params: rule.query,\n nodes,\n });\n rule.medias.forEach((media) => media.rule.remove());\n container.append(newAtRule);\n });\n });\n\n containerMap.clear();\n\n if (sourceMap) {\n root.append(sourceMap);\n }\n\n return root;\n}\n\nconst PLUGIN_NAME = 'optimize-media';\n\nexport function OptimizeMedia(opts?: OptimizeMediaOptions): Plugin {\n return {\n postcssPlugin: PLUGIN_NAME,\n Once(root) {\n optimizeMedia(root, opts);\n },\n };\n}\n\nOptimizeMedia.postcss = true;\n\nexport default OptimizeMedia;\n"],"mappings":";;;AAmBA,SAAS,cACP,MACA,UACQ;AACR,KAAI,CAAC,KAAM,cAAa;AACxB,KAAI,OAAO,SAAS,WAAY,QAAO;CACvC,MAAM,aAAa,MAAM,QAAQ,KAAK,GAAG,OAAO,CAAC,KAAK;AACtD,SAAQ,cACN,WAAW,MAAM,cACf,OAAO,cAAc,WACjB,UAAU,SAAS,UAAU,GAC7B,UAAU,KAAK,UAAU,CAC9B;;AAWL,SAAS,WAAW,WAA0B;CAC5C,MAAM,EAAE,QAAQ,WAAW;AAC3B,KAAI,CAAC,OACH,OAAM,UAAU,MAAM,2CAA2C;AAEnE,QAAO;EACL,OAAO;EACP,MAAM;EACN,WAAW;EACZ;;AAGH,SAAS,sBAAsB,MAA8C;AAC3E,KAAI,CAAC,KAAM,QAAO;AAClB,KAAI,KAAK,SAAS,UAAW,QAAO;AACpC,QAAO,KAAK,KAAK,aAAa,CAAC,WAAW,sBAAsB;;AAGlE,SAAS,uBAAuB,WAA6C;CAC3E,MAAM,kBAAkB,UAAU;AAClC,KAAI,sBAAsB,gBAAgB,CACxC,QAAO;;AAIX,SAAgB,cACd,KACA,OAA6B,EAAE,EACzB;CACN,MAAM,OAAO,eAAe,OAAO,MAAM,QAAQ,MAAM,IAAI;CAC3D,MAAM,UAAU,cAAc,KAAK,SAAS,KAAK;CACjD,MAAM,UAAU,cAAc,KAAK,SAAS,MAAM;CAElD,MAAM,YAAY,uBAAuB,KAAK;CAE9C,MAAM,+BAAe,IAAI,KAAyB;AAElD,MAAK,YAAY,UAAU,cAAc;EACvC,MAAM,QAAQ,WAAW,UAAU;AACnC,MACE,CAAC,UAAU,SACX,CAAC,QAAQ,MAAM,OAAO,MAAM,IAC5B,QAAQ,MAAM,OAAO,MAAM,CAE3B;EAEF,IAAI,SAAS,aAAa,IAAI,MAAM,UAAU;AAC9C,MAAI,CAAC,QAAQ;AACX,YAAS,EAAE;AACX,gBAAa,IAAI,MAAM,WAAW,OAAO;;AAE3C,SAAO,KAAK,MAAM;GAClB;AAEF,cAAa,SAAS,QAAQ,cAAc;AAC1C,MAAI,KAAK,KACP,QAAO,KAAK,KAAK,KAAK;EAGxB,MAAM,gBAGA,EAAE;AAER,SAAO,SAAS,UAAU;GACxB,IAAI,OAAO,cAAc,MAAM,MAAM,EAAE,UAAU,MAAM,MAAM;AAC7D,OAAI,CAAC,MAAM;AACT,WAAO;KAAE,OAAO,MAAM;KAAO,QAAQ,EAAE;KAAE;AACzC,kBAAc,KAAK,KAAK;;AAE1B,QAAK,OAAO,KAAK,MAAM;IACvB;AAEF,gBAAc,SAAS,SAAS;GAC9B,MAAM,QAAQ,KAAK,OAChB,KAAK,WAAW,MAAM,KAAK,SAAS,EAAE,EAAE,KAAK,SAAS,KAAK,OAAO,CAAC,CAAC,CACpE,MAAM;GACT,MAAM,YAAY,IAAI,OAAO;IAC3B,MAAM;IACN,QAAQ,KAAK;IACb;IACD,CAAC;AACF,QAAK,OAAO,SAAS,UAAU,MAAM,KAAK,QAAQ,CAAC;AACnD,aAAU,OAAO,UAAU;IAC3B;GACF;AAEF,cAAa,OAAO;AAEpB,KAAI,UACF,MAAK,OAAO,UAAU;AAGxB,QAAO;;AAGT,MAAM,cAAc;AAEpB,SAAgB,cAAc,MAAqC;AACjE,QAAO;EACL,eAAe;EACf,KAAK,MAAM;AACT,iBAAc,MAAM,KAAK;;EAE5B;;AAGH,cAAc,UAAU"}