@nrwl/react 14.5.0-beta.0 → 14.5.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/CHANGELOG.md +1 -1
- package/generators.json +28 -0
- package/index.d.ts +2 -0
- package/index.js +5 -1
- package/index.js.map +1 -1
- package/package.json +10 -10
- package/plugins/component-testing/index.d.ts +29 -0
- package/plugins/component-testing/index.js +167 -0
- package/plugins/component-testing/index.js.map +1 -0
- package/src/generators/application/lib/set-defaults.js +1 -1
- package/src/generators/application/lib/set-defaults.js.map +1 -1
- package/src/generators/application/schema.d.ts +1 -0
- package/src/generators/application/schema.json +5 -0
- package/src/generators/component/component.d.ts +1 -1
- package/src/generators/component/component.js +4 -4
- package/src/generators/component/component.js.map +1 -1
- package/src/generators/component-cypress-spec/component-cypress-spec.d.ts +1 -1
- package/src/generators/component-cypress-spec/component-cypress-spec.js +10 -4
- package/src/generators/component-cypress-spec/component-cypress-spec.js.map +1 -1
- package/src/generators/component-cypress-spec/files/{__componentName__.spec.__fileExt__ → __componentName__.__fileExt__} +0 -0
- package/src/generators/component-story/component-story.d.ts +0 -1
- package/src/generators/component-story/component-story.js +3 -40
- package/src/generators/component-story/component-story.js.map +1 -1
- package/src/generators/component-story/schema.json +2 -1
- package/src/generators/component-test/component-test.d.ts +4 -0
- package/src/generators/component-test/component-test.js +66 -0
- package/src/generators/component-test/component-test.js.map +1 -0
- package/src/generators/component-test/files/__fileName__.cy__ext__ +22 -0
- package/src/generators/component-test/schema.d.ts +4 -0
- package/src/generators/component-test/schema.js +3 -0
- package/src/generators/component-test/schema.js.map +1 -0
- package/src/generators/component-test/schema.json +30 -0
- package/src/generators/cypress-component-configuration/cypress-component-configuration.d.ts +9 -0
- package/src/generators/cypress-component-configuration/cypress-component-configuration.js +108 -0
- package/src/generators/cypress-component-configuration/cypress-component-configuration.js.map +1 -0
- package/src/generators/cypress-component-configuration/files/cypress.config.ts__tpl__ +6 -0
- package/src/generators/cypress-component-configuration/schema.d.ts +5 -0
- package/src/generators/cypress-component-configuration/schema.js +3 -0
- package/src/generators/cypress-component-configuration/schema.js.map +1 -0
- package/src/generators/cypress-component-configuration/schema.json +39 -0
- package/src/generators/library/schema.d.ts +1 -1
- package/src/generators/remote/remote.js +1 -1
- package/src/generators/remote/remote.js.map +1 -1
- package/src/generators/stories/schema.json +5 -4
- package/src/generators/storybook-configuration/schema.json +5 -2
- package/src/utils/component-props.d.ts +15 -0
- package/src/utils/component-props.js +54 -0
- package/src/utils/component-props.js.map +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
-
# [14.5.0-beta.
|
|
6
|
+
# [14.5.0-beta.1](https://github.com/nrwl/nx/compare/14.4.2...14.5.0-beta.1) (2022-07-14)
|
|
7
7
|
|
|
8
8
|
**Note:** Version bump only for package @nrwl/react
|
package/generators.json
CHANGED
|
@@ -74,6 +74,20 @@
|
|
|
74
74
|
"schema": "./src/generators/hook/schema.json",
|
|
75
75
|
"description": "Create a hook.",
|
|
76
76
|
"aliases": ["h"]
|
|
77
|
+
},
|
|
78
|
+
|
|
79
|
+
"cypress-component-configuration": {
|
|
80
|
+
"factory": "./src/generators/cypress-component-configuration/cypress-component-configuration#cypressComponentConfigGenerator",
|
|
81
|
+
"schema": "./src/generators/cypress-component-configuration/schema.json",
|
|
82
|
+
"description": "Setup Cypress component testing for a React project",
|
|
83
|
+
"hidden": false
|
|
84
|
+
},
|
|
85
|
+
|
|
86
|
+
"component-test": {
|
|
87
|
+
"factory": "./src/generators/component-test/component-test#componentTestGenerator",
|
|
88
|
+
"schema": "./src/generators/component-test/schema.json",
|
|
89
|
+
"description": "Generate a Cypress component test for a React component",
|
|
90
|
+
"hidden": false
|
|
77
91
|
}
|
|
78
92
|
},
|
|
79
93
|
"generators": {
|
|
@@ -162,6 +176,20 @@
|
|
|
162
176
|
"schema": "./src/generators/remote/schema.json",
|
|
163
177
|
"x-type": "application",
|
|
164
178
|
"description": "Generate a remote react application"
|
|
179
|
+
},
|
|
180
|
+
|
|
181
|
+
"cypress-component-configuration": {
|
|
182
|
+
"factory": "./src/generators/cypress-component-configuration/cypress-component-configuration#cypressComponentConfigGenerator",
|
|
183
|
+
"schema": "./src/generators/cypress-component-configuration/schema.json",
|
|
184
|
+
"description": "Setup Cypress component testing for a React project",
|
|
185
|
+
"hidden": false
|
|
186
|
+
},
|
|
187
|
+
|
|
188
|
+
"component-test": {
|
|
189
|
+
"factory": "./src/generators/component-test/component-test#componentTestGenerator",
|
|
190
|
+
"schema": "./src/generators/component-test/schema.json",
|
|
191
|
+
"description": "Generate a Cypress component test for a React component",
|
|
192
|
+
"hidden": false
|
|
165
193
|
}
|
|
166
194
|
}
|
|
167
195
|
}
|
package/index.d.ts
CHANGED
|
@@ -13,4 +13,6 @@ export { reduxGenerator } from './src/generators/redux/redux';
|
|
|
13
13
|
export { storiesGenerator } from './src/generators/stories/stories';
|
|
14
14
|
export { storybookConfigurationGenerator } from './src/generators/storybook-configuration/configuration';
|
|
15
15
|
export { hostGenerator } from './src/generators/host/host';
|
|
16
|
+
export { cypressComponentConfigGenerator } from './src/generators/cypress-component-configuration/cypress-component-configuration';
|
|
17
|
+
export { componentTestGenerator } from './src/generators/component-test/component-test';
|
|
16
18
|
export type { SupportedStyles } from './typings/style';
|
package/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.hostGenerator = exports.storybookConfigurationGenerator = exports.storiesGenerator = exports.reduxGenerator = exports.reactInitGenerator = exports.libraryGenerator = exports.componentStoryGenerator = exports.componentCypressGenerator = exports.hookGenerator = exports.componentGenerator = exports.applicationGenerator = exports.reactVersion = exports.reactDomVersion = exports.assertValidStyle = exports.CSS_IN_JS_DEPENDENCIES = exports.createReactEslintJson = exports.extraEslintDependencies = void 0;
|
|
3
|
+
exports.componentTestGenerator = exports.cypressComponentConfigGenerator = exports.hostGenerator = exports.storybookConfigurationGenerator = exports.storiesGenerator = exports.reduxGenerator = exports.reactInitGenerator = exports.libraryGenerator = exports.componentStoryGenerator = exports.componentCypressGenerator = exports.hookGenerator = exports.componentGenerator = exports.applicationGenerator = exports.reactVersion = exports.reactDomVersion = exports.assertValidStyle = exports.CSS_IN_JS_DEPENDENCIES = exports.createReactEslintJson = exports.extraEslintDependencies = void 0;
|
|
4
4
|
var lint_1 = require("./src/utils/lint");
|
|
5
5
|
Object.defineProperty(exports, "extraEslintDependencies", { enumerable: true, get: function () { return lint_1.extraEslintDependencies; } });
|
|
6
6
|
Object.defineProperty(exports, "createReactEslintJson", { enumerable: true, get: function () { return lint_1.createReactEslintJson; } });
|
|
@@ -33,4 +33,8 @@ var configuration_1 = require("./src/generators/storybook-configuration/configur
|
|
|
33
33
|
Object.defineProperty(exports, "storybookConfigurationGenerator", { enumerable: true, get: function () { return configuration_1.storybookConfigurationGenerator; } });
|
|
34
34
|
var host_1 = require("./src/generators/host/host");
|
|
35
35
|
Object.defineProperty(exports, "hostGenerator", { enumerable: true, get: function () { return host_1.hostGenerator; } });
|
|
36
|
+
var cypress_component_configuration_1 = require("./src/generators/cypress-component-configuration/cypress-component-configuration");
|
|
37
|
+
Object.defineProperty(exports, "cypressComponentConfigGenerator", { enumerable: true, get: function () { return cypress_component_configuration_1.cypressComponentConfigGenerator; } });
|
|
38
|
+
var component_test_1 = require("./src/generators/component-test/component-test");
|
|
39
|
+
Object.defineProperty(exports, "componentTestGenerator", { enumerable: true, get: function () { return component_test_1.componentTestGenerator; } });
|
|
36
40
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../packages/react/index.ts"],"names":[],"mappings":";;;AAAA,yCAG0B;AAFxB,+GAAA,uBAAuB,OAAA;AACvB,6GAAA,qBAAqB,OAAA;AAEvB,6CAA4D;AAAnD,gHAAA,sBAAsB,OAAA;AAC/B,mDAAyD;AAAhD,6GAAA,gBAAgB,OAAA;AACzB,iDAAqE;AAA5D,2GAAA,eAAe,OAAA;AAAE,wGAAA,YAAY,OAAA;AACtC,wEAAgF;AAAvE,mHAAA,oBAAoB,OAAA;AAC7B,kEAA0E;AAAjE,+GAAA,kBAAkB,OAAA;AAC3B,mDAA2D;AAAlD,qGAAA,aAAa,OAAA;AACtB,yGAA2G;AAAlG,mIAAA,yBAAyB,OAAA;AAClC,oFAA2F;AAAlF,0HAAA,uBAAuB,OAAA;AAChC,4DAAoE;AAA3D,2GAAA,gBAAgB,OAAA;AACzB,mDAAgE;AAAvD,0GAAA,kBAAkB,OAAA;AAC3B,sDAA8D;AAArD,uGAAA,cAAc,OAAA;AACvB,4DAAoE;AAA3D,2GAAA,gBAAgB,OAAA;AACzB,wFAAyG;AAAhG,gIAAA,+BAA+B,OAAA;AACxC,mDAA2D;AAAlD,qGAAA,aAAa,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../packages/react/index.ts"],"names":[],"mappings":";;;AAAA,yCAG0B;AAFxB,+GAAA,uBAAuB,OAAA;AACvB,6GAAA,qBAAqB,OAAA;AAEvB,6CAA4D;AAAnD,gHAAA,sBAAsB,OAAA;AAC/B,mDAAyD;AAAhD,6GAAA,gBAAgB,OAAA;AACzB,iDAAqE;AAA5D,2GAAA,eAAe,OAAA;AAAE,wGAAA,YAAY,OAAA;AACtC,wEAAgF;AAAvE,mHAAA,oBAAoB,OAAA;AAC7B,kEAA0E;AAAjE,+GAAA,kBAAkB,OAAA;AAC3B,mDAA2D;AAAlD,qGAAA,aAAa,OAAA;AACtB,yGAA2G;AAAlG,mIAAA,yBAAyB,OAAA;AAClC,oFAA2F;AAAlF,0HAAA,uBAAuB,OAAA;AAChC,4DAAoE;AAA3D,2GAAA,gBAAgB,OAAA;AACzB,mDAAgE;AAAvD,0GAAA,kBAAkB,OAAA;AAC3B,sDAA8D;AAArD,uGAAA,cAAc,OAAA;AACvB,4DAAoE;AAA3D,2GAAA,gBAAgB,OAAA;AACzB,wFAAyG;AAAhG,gIAAA,+BAA+B,OAAA;AACxC,mDAA2D;AAAlD,qGAAA,aAAa,OAAA;AACtB,oIAAmI;AAA1H,kJAAA,+BAA+B,OAAA;AACxC,iFAAwF;AAA/E,wHAAA,sBAAsB,OAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nrwl/react",
|
|
3
|
-
"version": "14.5.0-beta.
|
|
3
|
+
"version": "14.5.0-beta.1",
|
|
4
4
|
"description": "The React plugin contains executors and generators for managing React applications and libraries within an Nx workspace. It provides:\n\n\n- Integration with libraries such as Jest, Cypress, and Storybook.\n\n- Generators for applications, libraries, components, hooks, and more.\n\n- Library build support for publishing packages to npm or other registries.\n\n- Utilities for automatic workspace refactoring.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -32,14 +32,14 @@
|
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@babel/core": "^7.15.0",
|
|
34
34
|
"@babel/preset-react": "^7.14.5",
|
|
35
|
-
"@nrwl/cypress": "14.5.0-beta.
|
|
36
|
-
"@nrwl/devkit": "14.5.0-beta.
|
|
37
|
-
"@nrwl/jest": "14.5.0-beta.
|
|
38
|
-
"@nrwl/js": "14.5.0-beta.
|
|
39
|
-
"@nrwl/linter": "14.5.0-beta.
|
|
40
|
-
"@nrwl/storybook": "14.5.0-beta.
|
|
41
|
-
"@nrwl/web": "14.5.0-beta.
|
|
42
|
-
"@nrwl/workspace": "14.5.0-beta.
|
|
35
|
+
"@nrwl/cypress": "14.5.0-beta.1",
|
|
36
|
+
"@nrwl/devkit": "14.5.0-beta.1",
|
|
37
|
+
"@nrwl/jest": "14.5.0-beta.1",
|
|
38
|
+
"@nrwl/js": "14.5.0-beta.1",
|
|
39
|
+
"@nrwl/linter": "14.5.0-beta.1",
|
|
40
|
+
"@nrwl/storybook": "14.5.0-beta.1",
|
|
41
|
+
"@nrwl/web": "14.5.0-beta.1",
|
|
42
|
+
"@nrwl/workspace": "14.5.0-beta.1",
|
|
43
43
|
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.1",
|
|
44
44
|
"@storybook/node-logger": "6.1.20",
|
|
45
45
|
"@svgr/webpack": "^6.1.2",
|
|
@@ -54,5 +54,5 @@
|
|
|
54
54
|
"webpack": "^5.58.1",
|
|
55
55
|
"webpack-merge": "^5.8.0"
|
|
56
56
|
},
|
|
57
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "63b74d2a5655c0c09131dfa24a0a024ca7360fca"
|
|
58
58
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Configuration } from 'webpack';
|
|
2
|
+
/**
|
|
3
|
+
* React nx preset for Cypress Component Testing
|
|
4
|
+
*
|
|
5
|
+
* This preset contains the base configuration
|
|
6
|
+
* for your component tests that nx recommends.
|
|
7
|
+
* including a devServer that supports nx workspaces.
|
|
8
|
+
* you can easily extend this within your cypress config via spreading the preset
|
|
9
|
+
* @example
|
|
10
|
+
* export default defineConfig({
|
|
11
|
+
* component: {
|
|
12
|
+
* ...nxComponentTestingPreset(__dirname)
|
|
13
|
+
* // add your own config here
|
|
14
|
+
* }
|
|
15
|
+
* })
|
|
16
|
+
*
|
|
17
|
+
* @param pathToConfig will be used to construct the output paths for videos and screenshots
|
|
18
|
+
*/
|
|
19
|
+
export declare function nxComponentTestingPreset(pathToConfig: string): {
|
|
20
|
+
devServer: {
|
|
21
|
+
readonly framework: "react";
|
|
22
|
+
readonly bundler: "webpack";
|
|
23
|
+
readonly webpackConfig: Configuration;
|
|
24
|
+
};
|
|
25
|
+
videosFolder: string;
|
|
26
|
+
screenshotsFolder: string;
|
|
27
|
+
video: boolean;
|
|
28
|
+
chromeWebSecurity: boolean;
|
|
29
|
+
};
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.nxComponentTestingPreset = void 0;
|
|
4
|
+
const cypress_preset_1 = require("@nrwl/cypress/plugins/cypress-preset");
|
|
5
|
+
const web_config_1 = require("@nrwl/web/src/utils/web.config");
|
|
6
|
+
const tsconfig_paths_webpack_plugin_1 = require("tsconfig-paths-webpack-plugin");
|
|
7
|
+
/**
|
|
8
|
+
* React nx preset for Cypress Component Testing
|
|
9
|
+
*
|
|
10
|
+
* This preset contains the base configuration
|
|
11
|
+
* for your component tests that nx recommends.
|
|
12
|
+
* including a devServer that supports nx workspaces.
|
|
13
|
+
* you can easily extend this within your cypress config via spreading the preset
|
|
14
|
+
* @example
|
|
15
|
+
* export default defineConfig({
|
|
16
|
+
* component: {
|
|
17
|
+
* ...nxComponentTestingPreset(__dirname)
|
|
18
|
+
* // add your own config here
|
|
19
|
+
* }
|
|
20
|
+
* })
|
|
21
|
+
*
|
|
22
|
+
* @param pathToConfig will be used to construct the output paths for videos and screenshots
|
|
23
|
+
*/
|
|
24
|
+
function nxComponentTestingPreset(pathToConfig) {
|
|
25
|
+
return Object.assign(Object.assign({}, (0, cypress_preset_1.nxBaseCypressPreset)(pathToConfig)), { devServer: {
|
|
26
|
+
// cypress uses string union type,
|
|
27
|
+
// need to use const to prevent typing to string
|
|
28
|
+
framework: 'react',
|
|
29
|
+
bundler: 'webpack',
|
|
30
|
+
webpackConfig: buildBaseWebpackConfig({
|
|
31
|
+
tsConfigPath: 'tsconfig.cy.json',
|
|
32
|
+
compiler: 'babel',
|
|
33
|
+
}),
|
|
34
|
+
} });
|
|
35
|
+
}
|
|
36
|
+
exports.nxComponentTestingPreset = nxComponentTestingPreset;
|
|
37
|
+
// TODO(caleb): use the webpack utils to build the config
|
|
38
|
+
// can't seem to get css modules to play nice when using it 🤔
|
|
39
|
+
function buildBaseWebpackConfig({ tsConfigPath = 'tsconfig.cy.json', compiler = 'babel', }) {
|
|
40
|
+
const extensions = ['.ts', '.tsx', '.mjs', '.js', '.jsx'];
|
|
41
|
+
const config = {
|
|
42
|
+
target: 'web',
|
|
43
|
+
resolve: {
|
|
44
|
+
extensions,
|
|
45
|
+
plugins: [
|
|
46
|
+
new tsconfig_paths_webpack_plugin_1.TsconfigPathsPlugin({
|
|
47
|
+
configFile: tsConfigPath,
|
|
48
|
+
extensions,
|
|
49
|
+
}),
|
|
50
|
+
],
|
|
51
|
+
},
|
|
52
|
+
mode: 'development',
|
|
53
|
+
devtool: false,
|
|
54
|
+
output: {
|
|
55
|
+
publicPath: '/',
|
|
56
|
+
chunkFilename: '[name].bundle.js',
|
|
57
|
+
},
|
|
58
|
+
module: {
|
|
59
|
+
rules: [
|
|
60
|
+
{
|
|
61
|
+
test: /\.(bmp|png|jpe?g|gif|webp|avif)$/,
|
|
62
|
+
type: 'asset',
|
|
63
|
+
parser: {
|
|
64
|
+
dataUrlCondition: {
|
|
65
|
+
maxSize: 10000, // 10 kB
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
CSS_MODULES_LOADER,
|
|
70
|
+
],
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
if (compiler === 'swc') {
|
|
74
|
+
config.module.rules.push({
|
|
75
|
+
test: /\.([jt])sx?$/,
|
|
76
|
+
loader: require.resolve('swc-loader'),
|
|
77
|
+
exclude: /node_modules/,
|
|
78
|
+
options: {
|
|
79
|
+
jsc: {
|
|
80
|
+
parser: {
|
|
81
|
+
syntax: 'typescript',
|
|
82
|
+
decorators: true,
|
|
83
|
+
tsx: true,
|
|
84
|
+
},
|
|
85
|
+
transform: {
|
|
86
|
+
react: {
|
|
87
|
+
runtime: 'automatic',
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
loose: true,
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
if (compiler === 'babel') {
|
|
96
|
+
config.module.rules.push({
|
|
97
|
+
test: /\.(js|jsx|mjs|ts|tsx)$/,
|
|
98
|
+
loader: require.resolve('babel-loader'),
|
|
99
|
+
options: {
|
|
100
|
+
presets: [`@nrwl/react/babel`],
|
|
101
|
+
rootMode: 'upward',
|
|
102
|
+
babelrc: true,
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
return config;
|
|
107
|
+
}
|
|
108
|
+
const loaderModulesOptions = {
|
|
109
|
+
modules: {
|
|
110
|
+
mode: 'local',
|
|
111
|
+
getLocalIdent: web_config_1.getCSSModuleLocalIdent,
|
|
112
|
+
},
|
|
113
|
+
importLoaders: 1,
|
|
114
|
+
};
|
|
115
|
+
const commonLoaders = [
|
|
116
|
+
{
|
|
117
|
+
loader: require.resolve('style-loader'),
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
loader: require.resolve('css-loader'),
|
|
121
|
+
options: loaderModulesOptions,
|
|
122
|
+
},
|
|
123
|
+
];
|
|
124
|
+
const CSS_MODULES_LOADER = {
|
|
125
|
+
test: /\.css$|\.scss$|\.sass$|\.less$|\.styl$/,
|
|
126
|
+
oneOf: [
|
|
127
|
+
{
|
|
128
|
+
test: /\.module\.css$/,
|
|
129
|
+
use: commonLoaders,
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
test: /\.module\.(scss|sass)$/,
|
|
133
|
+
use: [
|
|
134
|
+
...commonLoaders,
|
|
135
|
+
{
|
|
136
|
+
loader: require.resolve('sass-loader'),
|
|
137
|
+
options: {
|
|
138
|
+
implementation: require('sass'),
|
|
139
|
+
sassOptions: {
|
|
140
|
+
fiber: false,
|
|
141
|
+
precision: 8,
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
],
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
test: /\.module\.less$/,
|
|
149
|
+
use: [
|
|
150
|
+
...commonLoaders,
|
|
151
|
+
{
|
|
152
|
+
loader: require.resolve('less-loader'),
|
|
153
|
+
},
|
|
154
|
+
],
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
test: /\.module\.styl$/,
|
|
158
|
+
use: [
|
|
159
|
+
...commonLoaders,
|
|
160
|
+
{
|
|
161
|
+
loader: require.resolve('stylus-loader'),
|
|
162
|
+
},
|
|
163
|
+
],
|
|
164
|
+
},
|
|
165
|
+
],
|
|
166
|
+
};
|
|
167
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/react/plugins/component-testing/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ function setDefaults(host, options) {
|
|
|
7
7
|
return;
|
|
8
8
|
}
|
|
9
9
|
const workspace = (0, devkit_1.readWorkspaceConfiguration)(host);
|
|
10
|
-
if (!workspace.defaultProject) {
|
|
10
|
+
if (!options.skipDefaultProject && !workspace.defaultProject) {
|
|
11
11
|
workspace.defaultProject = options.projectName;
|
|
12
12
|
}
|
|
13
13
|
workspace.generators = workspace.generators || {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-defaults.js","sourceRoot":"","sources":["../../../../../../../packages/react/src/generators/application/lib/set-defaults.ts"],"names":[],"mappings":";;;AAAA,yCAIsB;AAGtB,SAAgB,WAAW,CAAC,IAAU,EAAE,OAAyB;IAC/D,IAAI,OAAO,CAAC,iBAAiB,EAAE;QAC7B,OAAO;KACR;IAED,MAAM,SAAS,GAAG,IAAA,mCAA0B,EAAC,IAAI,CAAC,CAAC;IAEnD,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE;
|
|
1
|
+
{"version":3,"file":"set-defaults.js","sourceRoot":"","sources":["../../../../../../../packages/react/src/generators/application/lib/set-defaults.ts"],"names":[],"mappings":";;;AAAA,yCAIsB;AAGtB,SAAgB,WAAW,CAAC,IAAU,EAAE,OAAyB;IAC/D,IAAI,OAAO,CAAC,iBAAiB,EAAE;QAC7B,OAAO;KACR;IAED,MAAM,SAAS,GAAG,IAAA,mCAA0B,EAAC,IAAI,CAAC,CAAC;IAEnD,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE;QAC5D,SAAS,CAAC,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;KAChD;IAED,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,IAAI,EAAE,CAAC;IAClD,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC;QACjC,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAE5C,MAAM,IAAI,qBAAQ,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,CAAE,CAAC;IAExD,SAAS,CAAC,UAAU,mCACf,SAAS,CAAC,UAAU,KACvB,aAAa,kCACR,IAAI,KACP,WAAW,kBACT,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,MAAM,EAAE,OAAO,CAAC,MAAM,IACnB,IAAI,CAAC,WAAW,GAErB,SAAS,kBACP,KAAK,EAAE,OAAO,CAAC,KAAK,IACjB,IAAI,CAAC,SAAS,GAEnB,OAAO,kBACL,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,MAAM,EAAE,OAAO,CAAC,MAAM,IACnB,IAAI,CAAC,OAAO,OAGpB,CAAC;IAEF,IAAA,qCAA4B,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAChD,CAAC;AAvCD,kCAuCC"}
|
|
@@ -159,6 +159,11 @@
|
|
|
159
159
|
"description": "The compiler to use.",
|
|
160
160
|
"enum": ["babel", "swc"],
|
|
161
161
|
"default": "babel"
|
|
162
|
+
},
|
|
163
|
+
"skipDefaultProject": {
|
|
164
|
+
"description": "Skip setting the project as the default project. When `false` (the default), the project is set as the default project only if there is no default project already set.",
|
|
165
|
+
"type": "boolean",
|
|
166
|
+
"default": false
|
|
162
167
|
}
|
|
163
168
|
},
|
|
164
169
|
"required": []
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Schema } from './schema';
|
|
2
1
|
import { GeneratorCallback, Tree } from '@nrwl/devkit';
|
|
2
|
+
import { Schema } from './schema';
|
|
3
3
|
export declare function componentGenerator(host: Tree, schema: Schema): Promise<GeneratorCallback>;
|
|
4
4
|
export default componentGenerator;
|
|
5
5
|
export declare const componentSchematic: (generatorOptions: Schema) => (tree: any, context: any) => Promise<any>;
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.componentSchematic = exports.componentGenerator = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const ts = require("typescript");
|
|
6
|
-
const versions_1 = require("../../utils/versions");
|
|
7
|
-
const assertion_1 = require("../../utils/assertion");
|
|
8
|
-
const add_styled_dependencies_1 = require("../../rules/add-styled-dependencies");
|
|
9
5
|
const devkit_1 = require("@nrwl/devkit");
|
|
10
6
|
const run_tasks_in_serial_1 = require("@nrwl/workspace/src/utilities/run-tasks-in-serial");
|
|
7
|
+
const ts = require("typescript");
|
|
8
|
+
const add_styled_dependencies_1 = require("../../rules/add-styled-dependencies");
|
|
9
|
+
const assertion_1 = require("../../utils/assertion");
|
|
11
10
|
const ast_utils_1 = require("../../utils/ast-utils");
|
|
11
|
+
const versions_1 = require("../../utils/versions");
|
|
12
12
|
function componentGenerator(host, schema) {
|
|
13
13
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
14
14
|
const options = yield normalizeOptions(host, schema);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../../../../packages/react/src/generators/component/component.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../../../../packages/react/src/generators/component/component.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.componentCypressSchematic = exports.createComponentSpecFile = exports.getArgsDefaultValue = exports.componentCypressGenerator = void 0;
|
|
4
|
-
const ast_utils_1 = require("../../utils/ast-utils");
|
|
5
|
-
const ts = require("typescript");
|
|
6
4
|
const devkit_1 = require("@nrwl/devkit");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const ts = require("typescript");
|
|
7
|
+
const ast_utils_1 = require("../../utils/ast-utils");
|
|
7
8
|
function componentCypressGenerator(host, schema) {
|
|
8
9
|
createComponentSpecFile(host, schema);
|
|
9
10
|
}
|
|
@@ -30,7 +31,10 @@ exports.getArgsDefaultValue = getArgsDefaultValue;
|
|
|
30
31
|
function createComponentSpecFile(tree, { project, componentPath, js, cypressProject }) {
|
|
31
32
|
const e2eProjectName = cypressProject || `${project}-e2e`;
|
|
32
33
|
const projects = (0, devkit_1.getProjects)(tree);
|
|
33
|
-
const
|
|
34
|
+
const e2eProject = projects.get(e2eProjectName);
|
|
35
|
+
// cypress >= v10 will have a cypress.config.ts < v10 will have a cypress.json
|
|
36
|
+
const isCypressV10 = tree.exists((0, path_1.join)(e2eProject.root, 'cypress.config.ts'));
|
|
37
|
+
const e2eLibIntegrationFolderPath = (0, path_1.join)(e2eProject.sourceRoot, isCypressV10 ? 'e2e' : 'integration');
|
|
34
38
|
const proj = projects.get(project);
|
|
35
39
|
const componentFilePath = (0, devkit_1.joinPathFragments)(proj.sourceRoot, componentPath);
|
|
36
40
|
const componentName = componentFilePath
|
|
@@ -71,6 +75,8 @@ function findPropsAndGenerateFileForCypress(tree, sourceFile, cmpDeclaration, e2
|
|
|
71
75
|
};
|
|
72
76
|
});
|
|
73
77
|
}
|
|
78
|
+
const isCypressV10 = (0, path_1.basename)(e2eLibIntegrationFolderPath) === 'e2e';
|
|
79
|
+
const cyFilePrefix = isCypressV10 ? 'cy' : 'spec';
|
|
74
80
|
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, './files'), `${e2eLibIntegrationFolderPath}/${fromNodeArray
|
|
75
81
|
? componentName + '--' + cmpDeclaration.name.text
|
|
76
82
|
: componentName}`, {
|
|
@@ -78,7 +84,7 @@ function findPropsAndGenerateFileForCypress(tree, sourceFile, cmpDeclaration, e2
|
|
|
78
84
|
componentName,
|
|
79
85
|
componentSelector: cmpDeclaration.name.text,
|
|
80
86
|
props,
|
|
81
|
-
fileExt: js ?
|
|
87
|
+
fileExt: js ? `${cyFilePrefix}.js` : `${cyFilePrefix}.ts`,
|
|
82
88
|
});
|
|
83
89
|
}
|
|
84
90
|
exports.default = componentCypressGenerator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-cypress-spec.js","sourceRoot":"","sources":["../../../../../../packages/react/src/generators/component-cypress-spec/component-cypress-spec.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"component-cypress-spec.js","sourceRoot":"","sources":["../../../../../../packages/react/src/generators/component-cypress-spec/component-cypress-spec.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
@@ -4,7 +4,6 @@ export interface CreateComponentStoriesFileSchema {
|
|
|
4
4
|
project: string;
|
|
5
5
|
componentPath: string;
|
|
6
6
|
}
|
|
7
|
-
export declare function getArgsDefaultValue(property: ts.SyntaxKind): string;
|
|
8
7
|
export declare function createComponentStoriesFile(host: Tree, { project, componentPath }: CreateComponentStoriesFileSchema): void;
|
|
9
8
|
export declare function findPropsAndGenerateFile(host: Tree, sourceFile: ts.SourceFile, cmpDeclaration: ts.Node, componentDirectory: string, name: string, isPlainJs: boolean, fileExt: string, fromNodeArray?: boolean): void;
|
|
10
9
|
export declare function componentStoryGenerator(host: Tree, schema: CreateComponentStoriesFileSchema): Promise<void>;
|
|
@@ -1,26 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.componentStorySchematic = exports.componentStoryGenerator = exports.findPropsAndGenerateFile = exports.createComponentStoriesFile =
|
|
3
|
+
exports.componentStorySchematic = exports.componentStoryGenerator = exports.findPropsAndGenerateFile = exports.createComponentStoriesFile = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const devkit_1 = require("@nrwl/devkit");
|
|
6
6
|
const ts = require("typescript");
|
|
7
7
|
const ast_utils_1 = require("../../utils/ast-utils");
|
|
8
|
-
|
|
9
|
-
function getArgsDefaultValue(property) {
|
|
10
|
-
const typeNameToDefault = {
|
|
11
|
-
[ts.SyntaxKind.StringKeyword]: "''",
|
|
12
|
-
[ts.SyntaxKind.NumberKeyword]: 0,
|
|
13
|
-
[ts.SyntaxKind.BooleanKeyword]: false,
|
|
14
|
-
};
|
|
15
|
-
const resolvedValue = typeNameToDefault[property];
|
|
16
|
-
if (typeof resolvedValue === undefined) {
|
|
17
|
-
return "''";
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
return resolvedValue;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
exports.getArgsDefaultValue = getArgsDefaultValue;
|
|
8
|
+
const component_props_1 = require("../../utils/component-props");
|
|
24
9
|
function createComponentStoriesFile(host, { project, componentPath }) {
|
|
25
10
|
const proj = (0, devkit_1.getProjects)(host).get(project);
|
|
26
11
|
const sourceRoot = proj.sourceRoot;
|
|
@@ -63,29 +48,7 @@ function createComponentStoriesFile(host, { project, componentPath }) {
|
|
|
63
48
|
}
|
|
64
49
|
exports.createComponentStoriesFile = createComponentStoriesFile;
|
|
65
50
|
function findPropsAndGenerateFile(host, sourceFile, cmpDeclaration, componentDirectory, name, isPlainJs, fileExt, fromNodeArray) {
|
|
66
|
-
const
|
|
67
|
-
let propsTypeName = null;
|
|
68
|
-
let props = [];
|
|
69
|
-
let argTypes = [];
|
|
70
|
-
if (propsInterface) {
|
|
71
|
-
propsTypeName = propsInterface.name.text;
|
|
72
|
-
props = propsInterface.members.map((member) => {
|
|
73
|
-
if (member.type.kind === ts.SyntaxKind.FunctionType) {
|
|
74
|
-
argTypes.push({
|
|
75
|
-
name: member.name.text,
|
|
76
|
-
type: 'action',
|
|
77
|
-
actionText: `${member.name.text} executed!`,
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
return {
|
|
82
|
-
name: member.name.text,
|
|
83
|
-
defaultValue: getArgsDefaultValue(member.type.kind),
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
props = props.filter((p) => p && p.defaultValue !== undefined);
|
|
88
|
-
}
|
|
51
|
+
const { propsTypeName, props, argTypes } = (0, component_props_1.getDefaultsForComponent)(sourceFile, cmpDeclaration);
|
|
89
52
|
(0, devkit_1.generateFiles)(host, (0, devkit_1.joinPathFragments)(__dirname, './files'), (0, devkit_1.normalizePath)(componentDirectory), {
|
|
90
53
|
componentFileName: fromNodeArray
|
|
91
54
|
? `${name}--${cmpDeclaration.name.text}`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-story.js","sourceRoot":"","sources":["../../../../../../packages/react/src/generators/component-story/component-story.ts"],"names":[],"mappings":";;;;AAAA,yCAQsB;AACtB,iCAAiC;AACjC,
|
|
1
|
+
{"version":3,"file":"component-story.js","sourceRoot":"","sources":["../../../../../../packages/react/src/generators/component-story/component-story.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
"properties": {
|
|
9
9
|
"project": {
|
|
10
10
|
"type": "string",
|
|
11
|
-
"
|
|
11
|
+
"aliases": ["name", "projectName"],
|
|
12
|
+
"description": "The project where to add the components.",
|
|
12
13
|
"examples": ["shared-ui-component"],
|
|
13
14
|
"$default": {
|
|
14
15
|
"$source": "projectName",
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.componentTestGenerator = void 0;
|
|
4
|
+
const cypress_version_1 = require("@nrwl/cypress/src/utils/cypress-version");
|
|
5
|
+
const devkit_1 = require("@nrwl/devkit");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
const ts = require("typescript");
|
|
8
|
+
const ast_utils_1 = require("../../utils/ast-utils");
|
|
9
|
+
const component_props_1 = require("../../utils/component-props");
|
|
10
|
+
function componentTestGenerator(tree, options) {
|
|
11
|
+
(0, cypress_version_1.assertMinimumCypressVersion)(10);
|
|
12
|
+
const projectConfig = (0, devkit_1.readProjectConfiguration)(tree, options.project);
|
|
13
|
+
const normalizedPath = options.componentPath.startsWith(projectConfig.sourceRoot)
|
|
14
|
+
? (0, path_1.relative)(projectConfig.sourceRoot, options.componentPath)
|
|
15
|
+
: options.componentPath;
|
|
16
|
+
const componentPath = (0, devkit_1.joinPathFragments)(projectConfig.sourceRoot, normalizedPath);
|
|
17
|
+
if (tree.exists(componentPath)) {
|
|
18
|
+
generateSpecsForComponents(tree, componentPath);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.componentTestGenerator = componentTestGenerator;
|
|
22
|
+
function generateSpecsForComponents(tree, filePath) {
|
|
23
|
+
const sourceFile = ts.createSourceFile(filePath, tree.read(filePath, 'utf-8'), ts.ScriptTarget.Latest, true);
|
|
24
|
+
const cmpNodes = (0, ast_utils_1.findExportDeclarationsForJsx)(sourceFile);
|
|
25
|
+
const componentDir = (0, path_1.dirname)(filePath);
|
|
26
|
+
const ext = (0, path_1.extname)(filePath);
|
|
27
|
+
const fileName = (0, path_1.basename)(filePath, ext);
|
|
28
|
+
const defaultExport = (0, ast_utils_1.getComponentNode)(sourceFile);
|
|
29
|
+
if (cmpNodes === null || cmpNodes === void 0 ? void 0 : cmpNodes.length) {
|
|
30
|
+
const components = cmpNodes.map((cmp) => {
|
|
31
|
+
const defaults = (0, component_props_1.getDefaultsForComponent)(sourceFile, cmp);
|
|
32
|
+
const isDefaultExport = defaultExport
|
|
33
|
+
? defaultExport.name.text === cmp.name.text
|
|
34
|
+
: false;
|
|
35
|
+
return {
|
|
36
|
+
isDefaultExport,
|
|
37
|
+
props: [...defaults.props, ...defaults.argTypes],
|
|
38
|
+
name: cmp.name.text,
|
|
39
|
+
typeName: defaults.propsTypeName,
|
|
40
|
+
};
|
|
41
|
+
});
|
|
42
|
+
const namedImports = components
|
|
43
|
+
.reduce((imports, cmp) => {
|
|
44
|
+
if (cmp.typeName) {
|
|
45
|
+
imports.push(cmp.typeName);
|
|
46
|
+
}
|
|
47
|
+
if (cmp.isDefaultExport) {
|
|
48
|
+
return imports;
|
|
49
|
+
}
|
|
50
|
+
imports.push(cmp.name);
|
|
51
|
+
return imports;
|
|
52
|
+
}, [])
|
|
53
|
+
.join(', ');
|
|
54
|
+
const namedImportStatement = namedImports.length > 0 ? `, { ${namedImports} }` : '';
|
|
55
|
+
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files'), componentDir, {
|
|
56
|
+
fileName,
|
|
57
|
+
components,
|
|
58
|
+
importStatement: defaultExport
|
|
59
|
+
? `import ${defaultExport.name.text}${namedImportStatement} from './${fileName}'`
|
|
60
|
+
: `import { ${namedImports} } from './${fileName}'`,
|
|
61
|
+
ext,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.default = componentTestGenerator;
|
|
66
|
+
//# sourceMappingURL=component-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-test.js","sourceRoot":"","sources":["../../../../../../packages/react/src/generators/component-test/component-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as React from 'react'
|
|
2
|
+
import { mount } from 'cypress/react'
|
|
3
|
+
<%- importStatement %>
|
|
4
|
+
|
|
5
|
+
<% for (let cmp of components) { %>
|
|
6
|
+
describe(<%= cmp.name %>.name, () => {<% if (cmp.typeName) { %>
|
|
7
|
+
let props: <%= cmp.typeName%>;
|
|
8
|
+
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
props = {<% for (let prop of cmp.props) { %>
|
|
11
|
+
<%- prop.name %>: <% if(prop.type === 'action') { %>undefined<% } else { %><%- prop.defaultValue %>,<% } %><% }%>
|
|
12
|
+
}
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
it('renders', () => {
|
|
16
|
+
mount(<<%= cmp.name %> {...props}/>)
|
|
17
|
+
})<% } else { %>
|
|
18
|
+
it('renders', () => {
|
|
19
|
+
mount(<<%= cmp.name %> />)
|
|
20
|
+
})<% } %>
|
|
21
|
+
})
|
|
22
|
+
<% } %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../../../packages/react/src/generators/component-test/schema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/schema",
|
|
3
|
+
"cli": "nx",
|
|
4
|
+
"$id": "NxReactCypressComponentTest",
|
|
5
|
+
"title": "Add Cypress component test",
|
|
6
|
+
"description": "Add a Cypress component test for a component.",
|
|
7
|
+
"type": "object",
|
|
8
|
+
"examples": [
|
|
9
|
+
{
|
|
10
|
+
"command": "nx g @nrwl/react:component-test --project=my-react-project --component-path=src/lib/fancy-component.tsx",
|
|
11
|
+
"description": "Create a cypress component test for FancyComponent"
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"properties": {
|
|
15
|
+
"project": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"description": "The name of the project the component is apart of",
|
|
18
|
+
"$default": {
|
|
19
|
+
"$source": "projectName"
|
|
20
|
+
},
|
|
21
|
+
"x-prompt": "What project is this component apart of?"
|
|
22
|
+
},
|
|
23
|
+
"componentPath": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"description": "Path to component, from the project source root",
|
|
26
|
+
"x-prompt": "What is the path to the component?"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"required": ["project", "componentPath"]
|
|
30
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Tree } from '@nrwl/devkit';
|
|
2
|
+
import { CypressComponentConfigurationSchema } from './schema';
|
|
3
|
+
/**
|
|
4
|
+
* This is for using cypresses own Component testing, if you want to use test
|
|
5
|
+
* storybook components then use componentCypressGenerator instead.
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
export declare function cypressComponentConfigGenerator(tree: Tree, options: CypressComponentConfigurationSchema): Promise<() => void>;
|
|
9
|
+
export default cypressComponentConfigGenerator;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cypressComponentConfigGenerator = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const cypress_1 = require("@nrwl/cypress");
|
|
6
|
+
const devkit_1 = require("@nrwl/devkit");
|
|
7
|
+
const ts = require("typescript");
|
|
8
|
+
const ast_utils_1 = require("../../utils/ast-utils");
|
|
9
|
+
const component_test_1 = require("../component-test/component-test");
|
|
10
|
+
const allowedFileExt = new RegExp(/\.[jt]sx?/g);
|
|
11
|
+
const isSpecFile = new RegExp(/(spec|test)\./g);
|
|
12
|
+
/**
|
|
13
|
+
* This is for using cypresses own Component testing, if you want to use test
|
|
14
|
+
* storybook components then use componentCypressGenerator instead.
|
|
15
|
+
*
|
|
16
|
+
*/
|
|
17
|
+
function cypressComponentConfigGenerator(tree, options) {
|
|
18
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
19
|
+
const projectConfig = (0, devkit_1.readProjectConfiguration)(tree, options.project);
|
|
20
|
+
const installTask = yield (0, cypress_1.cypressComponentProject)(tree, {
|
|
21
|
+
project: options.project,
|
|
22
|
+
skipFormat: true,
|
|
23
|
+
});
|
|
24
|
+
addFiles(tree, projectConfig, options);
|
|
25
|
+
updateTsConfig(tree, projectConfig);
|
|
26
|
+
if (options.skipFormat) {
|
|
27
|
+
yield (0, devkit_1.formatFiles)(tree);
|
|
28
|
+
}
|
|
29
|
+
return () => {
|
|
30
|
+
installTask();
|
|
31
|
+
};
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
exports.cypressComponentConfigGenerator = cypressComponentConfigGenerator;
|
|
35
|
+
function addFiles(tree, projectConfig, options) {
|
|
36
|
+
const cypressConfigPath = (0, devkit_1.joinPathFragments)(projectConfig.root, 'cypress.config.ts');
|
|
37
|
+
if (tree.exists(cypressConfigPath)) {
|
|
38
|
+
tree.delete(cypressConfigPath);
|
|
39
|
+
}
|
|
40
|
+
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files'), projectConfig.root, {
|
|
41
|
+
tpl: '',
|
|
42
|
+
});
|
|
43
|
+
if (options.generateTests) {
|
|
44
|
+
(0, devkit_1.visitNotIgnoredFiles)(tree, projectConfig.sourceRoot, (filePath) => {
|
|
45
|
+
if (isComponent(tree, filePath)) {
|
|
46
|
+
(0, component_test_1.default)(tree, {
|
|
47
|
+
project: options.project,
|
|
48
|
+
componentPath: filePath,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function updateTsConfig(tree, projectConfig) {
|
|
55
|
+
const tsConfigPath = (0, devkit_1.joinPathFragments)(projectConfig.root, projectConfig.projectType === 'library'
|
|
56
|
+
? 'tsconfig.lib.json'
|
|
57
|
+
: 'tsconfig.app.json');
|
|
58
|
+
if (tree.exists(tsConfigPath)) {
|
|
59
|
+
(0, devkit_1.updateJson)(tree, tsConfigPath, (json) => {
|
|
60
|
+
const excluded = new Set([
|
|
61
|
+
...(json.exclude || []),
|
|
62
|
+
'cypress/**/*',
|
|
63
|
+
'cypress.config.ts',
|
|
64
|
+
'**/*.cy.ts',
|
|
65
|
+
'**/*.cy.js',
|
|
66
|
+
'**/*.cy.tsx',
|
|
67
|
+
'**/*.cy.jsx',
|
|
68
|
+
]);
|
|
69
|
+
json.exclude = Array.from(excluded);
|
|
70
|
+
return json;
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
const projectBaseTsConfig = (0, devkit_1.joinPathFragments)(projectConfig.root, 'tsconfig.json');
|
|
74
|
+
if (tree.exists(projectBaseTsConfig)) {
|
|
75
|
+
(0, devkit_1.updateJson)(tree, projectBaseTsConfig, (json) => {
|
|
76
|
+
if (json.references) {
|
|
77
|
+
const hasCyTsConfig = json.references.some((r) => r.path === './tsconfig.cy.json');
|
|
78
|
+
if (!hasCyTsConfig) {
|
|
79
|
+
json.references.push({ path: './tsconfig.cy.json' });
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
const excluded = new Set([
|
|
84
|
+
...(json.exclude || []),
|
|
85
|
+
'cypress/**/*',
|
|
86
|
+
'cypress.config.ts',
|
|
87
|
+
'**/*.cy.ts',
|
|
88
|
+
'**/*.cy.js',
|
|
89
|
+
'**/*.cy.tsx',
|
|
90
|
+
'**/*.cy.jsx',
|
|
91
|
+
]);
|
|
92
|
+
json.exclude = Array.from(excluded);
|
|
93
|
+
}
|
|
94
|
+
return json;
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
function isComponent(tree, filePath) {
|
|
99
|
+
if (isSpecFile.test(filePath) || !allowedFileExt.test(filePath)) {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
const content = tree.read(filePath, 'utf-8');
|
|
103
|
+
const sourceFile = ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true);
|
|
104
|
+
const cmpDeclaration = (0, ast_utils_1.getComponentNode)(sourceFile);
|
|
105
|
+
return !!cmpDeclaration;
|
|
106
|
+
}
|
|
107
|
+
exports.default = cypressComponentConfigGenerator;
|
|
108
|
+
//# sourceMappingURL=cypress-component-configuration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cypress-component-configuration.js","sourceRoot":"","sources":["../../../../../../packages/react/src/generators/cypress-component-configuration/cypress-component-configuration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../../../packages/react/src/generators/cypress-component-configuration/schema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/schema",
|
|
3
|
+
"cli": "nx",
|
|
4
|
+
"$id": "NxReactCypressComponentTestConfiguration",
|
|
5
|
+
"title": "Add Cypress component testing",
|
|
6
|
+
"description": "Add a Cypress component testing configuration to an existing project.",
|
|
7
|
+
"type": "object",
|
|
8
|
+
"examples": [
|
|
9
|
+
{
|
|
10
|
+
"command": "nx g @nrwl/react:cypress-component-configuration --project=my-react-project",
|
|
11
|
+
"description": "Add component testing to your react project"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"command": "nx g @nrwl/react:cypress-component-configuration --project=my-react-project --generate-tests",
|
|
15
|
+
"description": "Add component testing to your react project and generate component tests for your existing components"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"properties": {
|
|
19
|
+
"project": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"description": "The name of the project to add cypress component testing configuration to",
|
|
22
|
+
"$default": {
|
|
23
|
+
"$source": "projectName"
|
|
24
|
+
},
|
|
25
|
+
"x-prompt": "What project should we add Cypress component testing to?"
|
|
26
|
+
},
|
|
27
|
+
"generateTests": {
|
|
28
|
+
"type": "boolean",
|
|
29
|
+
"description": "Generate default component tests for existing components in the project",
|
|
30
|
+
"default": false
|
|
31
|
+
},
|
|
32
|
+
"skipFormat": {
|
|
33
|
+
"type": "boolean",
|
|
34
|
+
"description": "Skip formatting files",
|
|
35
|
+
"default": false
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"required": ["project"]
|
|
39
|
+
}
|
|
@@ -17,7 +17,7 @@ exports.addModuleFederationFiles = addModuleFederationFiles;
|
|
|
17
17
|
function remoteGenerator(host, schema) {
|
|
18
18
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
19
19
|
const options = (0, normalize_options_1.normalizeOptions)(host, schema);
|
|
20
|
-
const initApp = yield (0, application_1.default)(host, options);
|
|
20
|
+
const initApp = yield (0, application_1.default)(host, Object.assign(Object.assign({}, options), { skipDefaultProject: true }));
|
|
21
21
|
if (schema.host) {
|
|
22
22
|
(0, update_host_with_remote_1.updateHostWithRemote)(host, schema.host, options.name);
|
|
23
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../../../../../../packages/react/src/generators/remote/remote.ts"],"names":[],"mappings":";;;;AAAA,+BAA4B;AAC5B,yCAAuE;AACvE,2FAAqF;AAErF,4EAAwE;AACxE,4DAA8D;AAE9D,2EAAqE;AACrE,mGAA6F;AAG7F,SAAgB,wBAAwB,CACtC,IAAU,EACV,OAAyB;IAEzB,MAAM,iBAAiB,iDAClB,IAAA,cAAK,EAAC,OAAO,CAAC,IAAI,CAAC,GACnB,OAAO,KACV,IAAI,EAAE,EAAE,GACT,CAAC;IAEF,IAAA,sBAAa,EACX,IAAI,EACJ,IAAA,WAAI,EAAC,SAAS,EAAE,2BAA2B,CAAC,EAC5C,OAAO,CAAC,cAAc,EACtB,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAhBD,4DAgBC;AAED,SAAsB,eAAe,CAAC,IAAU,EAAE,MAAc;;QAC9D,MAAM,OAAO,GAAG,IAAA,oCAAgB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,IAAA,qBAAoB,EAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../../../../../../packages/react/src/generators/remote/remote.ts"],"names":[],"mappings":";;;;AAAA,+BAA4B;AAC5B,yCAAuE;AACvE,2FAAqF;AAErF,4EAAwE;AACxE,4DAA8D;AAE9D,2EAAqE;AACrE,mGAA6F;AAG7F,SAAgB,wBAAwB,CACtC,IAAU,EACV,OAAyB;IAEzB,MAAM,iBAAiB,iDAClB,IAAA,cAAK,EAAC,OAAO,CAAC,IAAI,CAAC,GACnB,OAAO,KACV,IAAI,EAAE,EAAE,GACT,CAAC;IAEF,IAAA,sBAAa,EACX,IAAI,EACJ,IAAA,WAAI,EAAC,SAAS,EAAE,2BAA2B,CAAC,EAC5C,OAAO,CAAC,cAAc,EACtB,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAhBD,4DAgBC;AAED,SAAsB,eAAe,CAAC,IAAU,EAAE,MAAc;;QAC9D,MAAM,OAAO,GAAG,IAAA,oCAAgB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,IAAA,qBAAoB,EAAC,IAAI,kCAC1C,OAAO,KACV,kBAAkB,EAAE,IAAI,IACxB,CAAC;QAEH,IAAI,MAAM,CAAC,IAAI,EAAE;YACf,IAAA,8CAAoB,EAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;SACvD;QAED,wEAAwE;QACxE,sEAAsE;QACtE,kBAAkB;QAClB,IAAI,CAAC,MAAM,CACT,IAAA,WAAI,EAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC,EAC5C,IAAA,WAAI,EAAC,OAAO,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAClD,CAAC;QAEF,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxC,IAAA,gEAA6B,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE7C,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YACvB,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;SACzB;QAED,OAAO,IAAA,sCAAgB,EAAC,OAAO,CAAC,CAAC;IACnC,CAAC;CAAA;AA3BD,0CA2BC;AAED,kBAAe,eAAe,CAAC"}
|
|
@@ -2,18 +2,19 @@
|
|
|
2
2
|
"$schema": "http://json-schema.org/schema",
|
|
3
3
|
"cli": "nx",
|
|
4
4
|
"$id": "NxReactStorybookStories",
|
|
5
|
-
"title": "
|
|
6
|
-
"description": "
|
|
5
|
+
"title": "Generate React Storybook stories",
|
|
6
|
+
"description": "Generate stories/specs for all components declared in a project.",
|
|
7
7
|
"type": "object",
|
|
8
8
|
"properties": {
|
|
9
9
|
"project": {
|
|
10
10
|
"type": "string",
|
|
11
|
-
"
|
|
11
|
+
"aliases": ["name", "projectName"],
|
|
12
|
+
"description": "Project for which to generate stories.",
|
|
12
13
|
"$default": {
|
|
13
14
|
"$source": "projectName",
|
|
14
15
|
"index": 0
|
|
15
16
|
},
|
|
16
|
-
"x-prompt": "
|
|
17
|
+
"x-prompt": "For which project do you want to generate stories?"
|
|
17
18
|
},
|
|
18
19
|
"generateCypressSpecs": {
|
|
19
20
|
"type": "boolean",
|
|
@@ -8,11 +8,14 @@
|
|
|
8
8
|
"properties": {
|
|
9
9
|
"name": {
|
|
10
10
|
"type": "string",
|
|
11
|
-
"
|
|
11
|
+
"aliases": ["project", "projectName"],
|
|
12
|
+
"description": "Project for which to generate Storybook configuration.",
|
|
12
13
|
"$default": {
|
|
13
14
|
"$source": "argv",
|
|
14
15
|
"index": 0
|
|
15
|
-
}
|
|
16
|
+
},
|
|
17
|
+
"x-prompt": "For which project do you want to generate Storybook configuration?",
|
|
18
|
+
"x-dropdown": "projects"
|
|
16
19
|
},
|
|
17
20
|
"configureCypress": {
|
|
18
21
|
"type": "boolean",
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as ts from 'typescript';
|
|
2
|
+
export declare function getArgsDefaultValue(property: ts.SyntaxKind): string;
|
|
3
|
+
export declare function getDefaultsForComponent(sourceFile: ts.SourceFile, cmpDeclaration: ts.Node): {
|
|
4
|
+
propsTypeName: string;
|
|
5
|
+
props: {
|
|
6
|
+
name: string;
|
|
7
|
+
defaultValue: any;
|
|
8
|
+
}[];
|
|
9
|
+
argTypes: {
|
|
10
|
+
name: string;
|
|
11
|
+
type: string;
|
|
12
|
+
actionText: string;
|
|
13
|
+
}[];
|
|
14
|
+
};
|
|
15
|
+
export declare function getImportForType(sourceFile: ts.SourceFile, typeName: string): ts.Statement;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getImportForType = exports.getDefaultsForComponent = exports.getArgsDefaultValue = void 0;
|
|
4
|
+
const ts = require("typescript");
|
|
5
|
+
const ast_utils_1 = require("./ast-utils");
|
|
6
|
+
// TODO: candidate to refactor with the angular component story
|
|
7
|
+
function getArgsDefaultValue(property) {
|
|
8
|
+
const typeNameToDefault = {
|
|
9
|
+
[ts.SyntaxKind.StringKeyword]: "''",
|
|
10
|
+
[ts.SyntaxKind.NumberKeyword]: 0,
|
|
11
|
+
[ts.SyntaxKind.BooleanKeyword]: false,
|
|
12
|
+
};
|
|
13
|
+
const resolvedValue = typeNameToDefault[property];
|
|
14
|
+
if (typeof resolvedValue === undefined) {
|
|
15
|
+
return "''";
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
return resolvedValue;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.getArgsDefaultValue = getArgsDefaultValue;
|
|
22
|
+
function getDefaultsForComponent(sourceFile, cmpDeclaration) {
|
|
23
|
+
const propsInterface = (0, ast_utils_1.getComponentPropsInterface)(sourceFile, cmpDeclaration);
|
|
24
|
+
let propsTypeName = null;
|
|
25
|
+
let props = [];
|
|
26
|
+
let argTypes = [];
|
|
27
|
+
if (propsInterface) {
|
|
28
|
+
propsTypeName = propsInterface.name.text;
|
|
29
|
+
props = propsInterface.members.map((member) => {
|
|
30
|
+
if (member.type.kind === ts.SyntaxKind.FunctionType) {
|
|
31
|
+
argTypes.push({
|
|
32
|
+
name: member.name.text,
|
|
33
|
+
type: 'action',
|
|
34
|
+
actionText: `${member.name.text} executed!`,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
return {
|
|
39
|
+
name: member.name.text,
|
|
40
|
+
defaultValue: getArgsDefaultValue(member.type.kind),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
props = props.filter((p) => p && p.defaultValue !== undefined);
|
|
45
|
+
}
|
|
46
|
+
return { propsTypeName, props, argTypes };
|
|
47
|
+
}
|
|
48
|
+
exports.getDefaultsForComponent = getDefaultsForComponent;
|
|
49
|
+
function getImportForType(sourceFile, typeName) {
|
|
50
|
+
return sourceFile.statements.find((statement) => ts.isImportDeclaration(statement) &&
|
|
51
|
+
statement.getText().includes(typeName));
|
|
52
|
+
}
|
|
53
|
+
exports.getImportForType = getImportForType;
|
|
54
|
+
//# sourceMappingURL=component-props.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-props.js","sourceRoot":"","sources":["../../../../../packages/react/src/utils/component-props.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AACjC,2CAAyD;AAEzD,+DAA+D;AAC/D,SAAgB,mBAAmB,CAAC,QAAuB;IACzD,MAAM,iBAAiB,GAAwB;QAC7C,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,IAAI;QACnC,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAChC,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,KAAK;KACtC,CAAC;IAEF,MAAM,aAAa,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,OAAO,aAAa,KAAK,SAAS,EAAE;QACtC,OAAO,IAAI,CAAC;KACb;SAAM;QACL,OAAO,aAAa,CAAC;KACtB;AACH,CAAC;AAbD,kDAaC;AAED,SAAgB,uBAAuB,CACrC,UAAyB,EACzB,cAAuB;IAEvB,MAAM,cAAc,GAAG,IAAA,sCAA0B,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAE9E,IAAI,aAAa,GAAW,IAAI,CAAC;IACjC,IAAI,KAAK,GAGH,EAAE,CAAC;IACT,IAAI,QAAQ,GAIN,EAAE,CAAC;IAET,IAAI,cAAc,EAAE;QAClB,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QACzC,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAA4B,EAAE,EAAE;YAClE,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,YAAY,EAAE;gBACnD,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAG,MAAM,CAAC,IAAsB,CAAC,IAAI;oBACzC,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,GAAI,MAAM,CAAC,IAAsB,CAAC,IAAI,YAAY;iBAC/D,CAAC,CAAC;aACJ;iBAAM;gBACL,OAAO;oBACL,IAAI,EAAG,MAAM,CAAC,IAAsB,CAAC,IAAI;oBACzC,YAAY,EAAE,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;iBACpD,CAAC;aACH;QACH,CAAC,CAAC,CAAC;QACH,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC;KAChE;IACD,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC5C,CAAC;AApCD,0DAoCC;AAED,SAAgB,gBAAgB,CAAC,UAAyB,EAAE,QAAgB;IAC1E,OAAO,UAAU,CAAC,UAAU,CAAC,IAAI,CAC/B,CAAC,SAAkB,EAAE,EAAE,CACrB,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC;QACjC,SAAS,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACzC,CAAC;AACJ,CAAC;AAND,4CAMC"}
|