@form8ion/react-components-scaffolder 3.1.0 → 4.0.0-beta.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/lib/index.js +10 -12
- package/lib/index.js.map +1 -1
- package/package.json +9 -12
- package/lib/index.mjs +0 -73
- package/lib/index.mjs.map +0 -1
package/lib/index.js
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var makeDir = require('make-dir');
|
|
7
|
-
var cypressScaffolder = require('@form8ion/cypress-scaffolder');
|
|
1
|
+
import deepmerge from 'deepmerge';
|
|
2
|
+
import { promises } from 'node:fs';
|
|
3
|
+
import { resolve } from 'node:path';
|
|
4
|
+
import mkdir from 'make-dir';
|
|
5
|
+
import { scaffold } from '@form8ion/cypress-scaffolder';
|
|
8
6
|
|
|
9
7
|
const STORYBOOK_BUILD_DIRECTORY = 'storybook-static';
|
|
10
8
|
|
|
11
9
|
async function scaffoldStorybook ({projectRoot}) {
|
|
12
|
-
const storybookDirectory = await
|
|
10
|
+
const storybookDirectory = await mkdir(`${projectRoot}/.storybook`);
|
|
13
11
|
|
|
14
|
-
await
|
|
15
|
-
|
|
12
|
+
await promises.copyFile(
|
|
13
|
+
resolve(__dirname, '..', 'templates', 'storybook-config.js'),
|
|
16
14
|
`${storybookDirectory}/main.js`
|
|
17
15
|
);
|
|
18
16
|
|
|
@@ -42,7 +40,7 @@ async function scaffoldIntegration ({projectRoot}) {
|
|
|
42
40
|
},
|
|
43
41
|
devDependencies: ['serve', 'start-server-and-test']
|
|
44
42
|
},
|
|
45
|
-
await
|
|
43
|
+
await scaffold({projectRoot, testDirectory: 'test/integration/', testBaseUrl: baseUrl})
|
|
46
44
|
);
|
|
47
45
|
}
|
|
48
46
|
|
|
@@ -71,5 +69,5 @@ async function scaffolder ({projectRoot, tests}) {
|
|
|
71
69
|
]);
|
|
72
70
|
}
|
|
73
71
|
|
|
74
|
-
|
|
72
|
+
export { scaffolder as scaffold };
|
|
75
73
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/storybook.js","../src/testing/integration.js","../src/testing/scaffolder.js","../src/scaffolder.js"],"sourcesContent":["import {promises} from 'fs';\nimport {resolve} from 'path';\
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/storybook.js","../src/testing/integration.js","../src/testing/scaffolder.js","../src/scaffolder.js"],"sourcesContent":["import {promises as fs} from 'node:fs';\nimport {resolve} from 'node:path';\nimport mkdir from 'make-dir';\n\nexport const STORYBOOK_BUILD_DIRECTORY = 'storybook-static';\n\nexport default async function ({projectRoot}) {\n const storybookDirectory = await mkdir(`${projectRoot}/.storybook`);\n\n await fs.copyFile(\n resolve(__dirname, '..', 'templates', 'storybook-config.js'),\n `${storybookDirectory}/main.js`\n );\n\n return {\n scripts: {\n start: 'start-storybook --port 8888 --ci',\n 'build:storybook': 'build-storybook --quiet'\n },\n devDependencies: [\n '@storybook/react',\n 'babel-loader',\n 'webpack'\n ],\n vcsIgnore: {directories: [`/${STORYBOOK_BUILD_DIRECTORY}/`]}\n };\n}\n","import deepmerge from 'deepmerge';\nimport {scaffold as scaffoldCypress} from '@form8ion/cypress-scaffolder';\n\nimport {STORYBOOK_BUILD_DIRECTORY} from '../storybook.js';\n\nexport default async function ({projectRoot}) {\n const baseUrl = 'http://localhost:5000';\n\n return deepmerge(\n {\n scripts: {\n preserve: 'run-s build:storybook',\n serve: `serve ${STORYBOOK_BUILD_DIRECTORY}/`,\n 'test:integration': `start-server-and-test 'npm run serve' ${baseUrl} cypress:run`\n },\n devDependencies: ['serve', 'start-server-and-test']\n },\n await scaffoldCypress({projectRoot, testDirectory: 'test/integration/', testBaseUrl: baseUrl})\n );\n}\n","import deepmerge from 'deepmerge';\n\nimport scaffoldIntegration from './integration.js';\n\nexport default async function ({projectRoot, tests}) {\n const integrationResults = tests.integration ? await scaffoldIntegration({projectRoot}) : {};\n\n return deepmerge(\n {devDependencies: [...tests.unit ? ['enzyme', 'enzyme-adapter-react-16'] : []]},\n integrationResults\n );\n}\n","import deepmerge from 'deepmerge';\n\nimport scaffoldTesting from './testing/index.js';\nimport scaffoldStorybook from './storybook.js';\n\nexport default async function ({projectRoot, tests}) {\n const [testingResults, storybookResults] = await Promise.all([\n scaffoldTesting({projectRoot, tests}),\n scaffoldStorybook({projectRoot})\n ]);\n\n return deepmerge.all([\n {\n dependencies: ['react', 'react-dom', 'prop-types'],\n eslintConfigs: ['react']\n },\n testingResults,\n storybookResults\n ]);\n}\n"],"names":["fs","scaffoldCypress"],"mappings":";;;;;;AAIO,MAAM,yBAAyB,GAAG,kBAAkB;;AAE5C,gCAAc,EAAE,CAAC,WAAW,CAAC,EAAE;AAC9C,EAAE,MAAM,kBAAkB,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;;AAErE,EAAE,MAAMA,QAAE,CAAC,QAAQ;AACnB,IAAI,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,qBAAqB,CAAC;AAChE,IAAI,CAAC,EAAE,kBAAkB,CAAC,QAAQ;AAClC,GAAG;;AAEH,EAAE,OAAO;AACT,IAAI,OAAO,EAAE;AACb,MAAM,KAAK,EAAE,kCAAkC;AAC/C,MAAM,iBAAiB,EAAE;AACzB,KAAK;AACL,IAAI,eAAe,EAAE;AACrB,MAAM,kBAAkB;AACxB,MAAM,cAAc;AACpB,MAAM;AACN,KAAK;AACL,IAAI,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC,CAAC,CAAC;AAC/D,GAAG;AACH;;ACrBe,kCAAc,EAAE,CAAC,WAAW,CAAC,EAAE;AAC9C,EAAE,MAAM,OAAO,GAAG,uBAAuB;;AAEzC,EAAE,OAAO,SAAS;AAClB,IAAI;AACJ,MAAM,OAAO,EAAE;AACf,QAAQ,QAAQ,EAAE,uBAAuB;AACzC,QAAQ,KAAK,EAAE,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAAC;AACpD,QAAQ,kBAAkB,EAAE,CAAC,sCAAsC,EAAE,OAAO,CAAC,YAAY;AACzF,OAAO;AACP,MAAM,eAAe,EAAE,CAAC,OAAO,EAAE,uBAAuB;AACxD,KAAK;AACL,IAAI,MAAMC,QAAe,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,OAAO,CAAC;AACjG,GAAG;AACH;;ACfe,8BAAc,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE;AACrD,EAAE,MAAM,kBAAkB,GAAG,KAAK,CAAC,WAAW,GAAG,MAAM,mBAAmB,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE;;AAE9F,EAAE,OAAO,SAAS;AAClB,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,yBAAyB,CAAC,GAAG,EAAE,CAAC,CAAC;AACnF,IAAI;AACJ,GAAG;AACH;;ACNe,yBAAc,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE;AACrD,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;AAC/D,IAAI,eAAe,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACzC,IAAI,iBAAiB,CAAC,CAAC,WAAW,CAAC;AACnC,GAAG,CAAC;;AAEJ,EAAE,OAAO,SAAS,CAAC,GAAG,CAAC;AACvB,IAAI;AACJ,MAAM,YAAY,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,CAAC;AACxD,MAAM,aAAa,EAAE,CAAC,OAAO;AAC7B,KAAK;AACL,IAAI,cAAc;AAClB,IAAI;AACJ,GAAG,CAAC;AACJ;;;;"}
|
package/package.json
CHANGED
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
"name": "@form8ion/react-components-scaffolder",
|
|
3
3
|
"description": "opinionated scaffolder for React component-library projects",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"version": "
|
|
6
|
-
"type": "
|
|
5
|
+
"version": "4.0.0-beta.1",
|
|
6
|
+
"type": "module",
|
|
7
7
|
"author": "Matt Travi <npm@travi.org> (https://matt.travi.org/)",
|
|
8
8
|
"repository": "form8ion/react-components-scaffolder",
|
|
9
9
|
"bugs": "https://github.com/form8ion/react-components-scaffolder/issues",
|
|
10
10
|
"homepage": "https://npm.im/@form8ion/react-components-scaffolder",
|
|
11
11
|
"main": "./lib/index.js",
|
|
12
|
-
"
|
|
12
|
+
"exports": "./lib/index.js",
|
|
13
13
|
"sideEffects": false,
|
|
14
14
|
"scripts": {
|
|
15
15
|
"pretest": "run-s build",
|
|
@@ -27,10 +27,10 @@
|
|
|
27
27
|
"watch": "run-s 'build:js -- --watch'",
|
|
28
28
|
"prepack": "run-s build",
|
|
29
29
|
"test:unit": "cross-env NODE_ENV=test c8 run-s test:unit:base",
|
|
30
|
-
"test:unit:base": "DEBUG=any
|
|
30
|
+
"test:unit:base": "DEBUG=any vitest run",
|
|
31
31
|
"lint:gherkin": "gherkin-lint",
|
|
32
32
|
"test:integration": "run-s 'test:integration:base -- --profile noWip'",
|
|
33
|
-
"test:integration:base": "DEBUG=any cucumber-js test/integration
|
|
33
|
+
"test:integration:base": "DEBUG=any cucumber-js test/integration",
|
|
34
34
|
"test:integration:debug": "DEBUG=test run-s test:integration",
|
|
35
35
|
"test:integration:wip": "run-s 'test:integration:base -- --profile wip'",
|
|
36
36
|
"test:integration:focus": "run-s 'test:integration:base -- --profile focus'",
|
|
@@ -52,33 +52,30 @@
|
|
|
52
52
|
"make-dir": "^4.0.0"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@babel/register": "7.25.9",
|
|
56
55
|
"@cucumber/cucumber": "11.2.0",
|
|
57
|
-
"@form8ion/babel-preset": "1.6.150",
|
|
58
56
|
"@form8ion/commitlint-config": "2.0.8",
|
|
59
|
-
"@form8ion/eslint-config": "7.0.
|
|
57
|
+
"@form8ion/eslint-config": "7.0.13",
|
|
60
58
|
"@form8ion/eslint-config-cucumber": "1.4.1",
|
|
61
|
-
"@form8ion/eslint-config-
|
|
59
|
+
"@form8ion/eslint-config-vitest": "1.0.0",
|
|
62
60
|
"@form8ion/javascript": "14.6.0",
|
|
63
61
|
"@form8ion/remark-lint-preset": "6.0.7",
|
|
64
62
|
"@rollup/plugin-node-resolve": "16.0.3",
|
|
65
63
|
"@travi/any": "3.1.2",
|
|
66
64
|
"ban-sensitive-files": "1.10.7",
|
|
67
65
|
"c8": "10.1.3",
|
|
68
|
-
"chai": "4.5.0",
|
|
69
66
|
"cross-env": "7.0.3",
|
|
70
67
|
"cz-conventional-changelog": "3.3.0",
|
|
71
68
|
"gherkin-lint": "4.2.4",
|
|
72
69
|
"husky": "9.1.7",
|
|
73
70
|
"lockfile-lint": "4.14.0",
|
|
74
|
-
"mocha": "11.1.0",
|
|
75
71
|
"npm-run-all2": "7.0.2",
|
|
76
72
|
"publint": "0.3.16",
|
|
77
73
|
"remark-cli": "12.0.1",
|
|
78
74
|
"rimraf": "6.0.1",
|
|
79
75
|
"rollup": "4.54.0",
|
|
80
76
|
"rollup-plugin-auto-external": "2.0.0",
|
|
81
|
-
"
|
|
77
|
+
"vitest": "4.0.16",
|
|
78
|
+
"vitest-when": "0.10.0"
|
|
82
79
|
},
|
|
83
80
|
"peerDependencies": {
|
|
84
81
|
"@form8ion/javascript": ">=2.0.0"
|
package/lib/index.mjs
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import deepmerge from 'deepmerge';
|
|
2
|
-
import { promises } from 'fs';
|
|
3
|
-
import { resolve } from 'path';
|
|
4
|
-
import makeDir from 'make-dir';
|
|
5
|
-
import { scaffold } from '@form8ion/cypress-scaffolder';
|
|
6
|
-
|
|
7
|
-
const STORYBOOK_BUILD_DIRECTORY = 'storybook-static';
|
|
8
|
-
|
|
9
|
-
async function scaffoldStorybook ({projectRoot}) {
|
|
10
|
-
const storybookDirectory = await makeDir(`${projectRoot}/.storybook`);
|
|
11
|
-
|
|
12
|
-
await promises.copyFile(
|
|
13
|
-
resolve(__dirname, '..', 'templates', 'storybook-config.js'),
|
|
14
|
-
`${storybookDirectory}/main.js`
|
|
15
|
-
);
|
|
16
|
-
|
|
17
|
-
return {
|
|
18
|
-
scripts: {
|
|
19
|
-
start: 'start-storybook --port 8888 --ci',
|
|
20
|
-
'build:storybook': 'build-storybook --quiet'
|
|
21
|
-
},
|
|
22
|
-
devDependencies: [
|
|
23
|
-
'@storybook/react',
|
|
24
|
-
'babel-loader',
|
|
25
|
-
'webpack'
|
|
26
|
-
],
|
|
27
|
-
vcsIgnore: {directories: [`/${STORYBOOK_BUILD_DIRECTORY}/`]}
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
async function scaffoldIntegration ({projectRoot}) {
|
|
32
|
-
const baseUrl = 'http://localhost:5000';
|
|
33
|
-
|
|
34
|
-
return deepmerge(
|
|
35
|
-
{
|
|
36
|
-
scripts: {
|
|
37
|
-
preserve: 'run-s build:storybook',
|
|
38
|
-
serve: `serve ${STORYBOOK_BUILD_DIRECTORY}/`,
|
|
39
|
-
'test:integration': `start-server-and-test 'npm run serve' ${baseUrl} cypress:run`
|
|
40
|
-
},
|
|
41
|
-
devDependencies: ['serve', 'start-server-and-test']
|
|
42
|
-
},
|
|
43
|
-
await scaffold({projectRoot, testDirectory: 'test/integration/', testBaseUrl: baseUrl})
|
|
44
|
-
);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
async function scaffoldTesting ({projectRoot, tests}) {
|
|
48
|
-
const integrationResults = tests.integration ? await scaffoldIntegration({projectRoot}) : {};
|
|
49
|
-
|
|
50
|
-
return deepmerge(
|
|
51
|
-
{devDependencies: [...tests.unit ? ['enzyme', 'enzyme-adapter-react-16'] : []]},
|
|
52
|
-
integrationResults
|
|
53
|
-
);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
async function scaffolder ({projectRoot, tests}) {
|
|
57
|
-
const [testingResults, storybookResults] = await Promise.all([
|
|
58
|
-
scaffoldTesting({projectRoot, tests}),
|
|
59
|
-
scaffoldStorybook({projectRoot})
|
|
60
|
-
]);
|
|
61
|
-
|
|
62
|
-
return deepmerge.all([
|
|
63
|
-
{
|
|
64
|
-
dependencies: ['react', 'react-dom', 'prop-types'],
|
|
65
|
-
eslintConfigs: ['react']
|
|
66
|
-
},
|
|
67
|
-
testingResults,
|
|
68
|
-
storybookResults
|
|
69
|
-
]);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export { scaffolder as scaffold };
|
|
73
|
-
//# sourceMappingURL=index.mjs.map
|
package/lib/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/storybook.js","../src/testing/integration.js","../src/testing/scaffolder.js","../src/scaffolder.js"],"sourcesContent":["import {promises} from 'fs';\nimport {resolve} from 'path';\n\nimport mkdir from '../thirdparty-wrappers/make-dir.js';\n\nexport const STORYBOOK_BUILD_DIRECTORY = 'storybook-static';\n\nexport default async function ({projectRoot}) {\n const storybookDirectory = await mkdir(`${projectRoot}/.storybook`);\n\n await promises.copyFile(\n resolve(__dirname, '..', 'templates', 'storybook-config.js'),\n `${storybookDirectory}/main.js`\n );\n\n return {\n scripts: {\n start: 'start-storybook --port 8888 --ci',\n 'build:storybook': 'build-storybook --quiet'\n },\n devDependencies: [\n '@storybook/react',\n 'babel-loader',\n 'webpack'\n ],\n vcsIgnore: {directories: [`/${STORYBOOK_BUILD_DIRECTORY}/`]}\n };\n}\n","import deepmerge from 'deepmerge';\nimport {scaffold as scaffoldCypress} from '@form8ion/cypress-scaffolder';\n\nimport {STORYBOOK_BUILD_DIRECTORY} from '../storybook.js';\n\nexport default async function ({projectRoot}) {\n const baseUrl = 'http://localhost:5000';\n\n return deepmerge(\n {\n scripts: {\n preserve: 'run-s build:storybook',\n serve: `serve ${STORYBOOK_BUILD_DIRECTORY}/`,\n 'test:integration': `start-server-and-test 'npm run serve' ${baseUrl} cypress:run`\n },\n devDependencies: ['serve', 'start-server-and-test']\n },\n await scaffoldCypress({projectRoot, testDirectory: 'test/integration/', testBaseUrl: baseUrl})\n );\n}\n","import deepmerge from 'deepmerge';\n\nimport scaffoldIntegration from './integration.js';\n\nexport default async function ({projectRoot, tests}) {\n const integrationResults = tests.integration ? await scaffoldIntegration({projectRoot}) : {};\n\n return deepmerge(\n {devDependencies: [...tests.unit ? ['enzyme', 'enzyme-adapter-react-16'] : []]},\n integrationResults\n );\n}\n","import deepmerge from 'deepmerge';\n\nimport scaffoldTesting from './testing/index.js';\nimport scaffoldStorybook from './storybook.js';\n\nexport default async function ({projectRoot, tests}) {\n const [testingResults, storybookResults] = await Promise.all([\n scaffoldTesting({projectRoot, tests}),\n scaffoldStorybook({projectRoot})\n ]);\n\n return deepmerge.all([\n {\n dependencies: ['react', 'react-dom', 'prop-types'],\n eslintConfigs: ['react']\n },\n testingResults,\n storybookResults\n ]);\n}\n"],"names":["mkdir","scaffoldCypress"],"mappings":";;;;;;AAKO,MAAM,yBAAyB,GAAG,kBAAkB;;AAE5C,gCAAc,EAAE,CAAC,WAAW,CAAC,EAAE;AAC9C,EAAE,MAAM,kBAAkB,GAAG,MAAMA,OAAK,CAAC,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;;AAErE,EAAE,MAAM,QAAQ,CAAC,QAAQ;AACzB,IAAI,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,qBAAqB,CAAC;AAChE,IAAI,CAAC,EAAE,kBAAkB,CAAC,QAAQ;AAClC,GAAG;;AAEH,EAAE,OAAO;AACT,IAAI,OAAO,EAAE;AACb,MAAM,KAAK,EAAE,kCAAkC;AAC/C,MAAM,iBAAiB,EAAE;AACzB,KAAK;AACL,IAAI,eAAe,EAAE;AACrB,MAAM,kBAAkB;AACxB,MAAM,cAAc;AACpB,MAAM;AACN,KAAK;AACL,IAAI,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC,CAAC,CAAC;AAC/D,GAAG;AACH;;ACtBe,kCAAc,EAAE,CAAC,WAAW,CAAC,EAAE;AAC9C,EAAE,MAAM,OAAO,GAAG,uBAAuB;;AAEzC,EAAE,OAAO,SAAS;AAClB,IAAI;AACJ,MAAM,OAAO,EAAE;AACf,QAAQ,QAAQ,EAAE,uBAAuB;AACzC,QAAQ,KAAK,EAAE,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAAC;AACpD,QAAQ,kBAAkB,EAAE,CAAC,sCAAsC,EAAE,OAAO,CAAC,YAAY;AACzF,OAAO;AACP,MAAM,eAAe,EAAE,CAAC,OAAO,EAAE,uBAAuB;AACxD,KAAK;AACL,IAAI,MAAMC,QAAe,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,OAAO,CAAC;AACjG,GAAG;AACH;;ACfe,8BAAc,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE;AACrD,EAAE,MAAM,kBAAkB,GAAG,KAAK,CAAC,WAAW,GAAG,MAAM,mBAAmB,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE;;AAE9F,EAAE,OAAO,SAAS;AAClB,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,yBAAyB,CAAC,GAAG,EAAE,CAAC,CAAC;AACnF,IAAI;AACJ,GAAG;AACH;;ACNe,yBAAc,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE;AACrD,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;AAC/D,IAAI,eAAe,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACzC,IAAI,iBAAiB,CAAC,CAAC,WAAW,CAAC;AACnC,GAAG,CAAC;;AAEJ,EAAE,OAAO,SAAS,CAAC,GAAG,CAAC;AACvB,IAAI;AACJ,MAAM,YAAY,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,CAAC;AACxD,MAAM,aAAa,EAAE,CAAC,OAAO;AAC7B,KAAK;AACL,IAAI,cAAc;AAClB,IAAI;AACJ,GAAG,CAAC;AACJ;;;;"}
|