@nx/storybook 16.6.0-beta.3 → 16.6.0-beta.5

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/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export { configurationGenerator } from './src/generators/configuration/configuration';
2
2
  export { cypressProjectGenerator } from './src/generators/cypress-project/cypress-project';
3
3
  export { storybookVersion } from './src/utils/versions';
4
+ export { interactionTestsDependencies, addInteractionsInAddons, } from './src/generators/configuration/lib/interaction-testing.utils';
package/index.js CHANGED
@@ -1,9 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.storybookVersion = exports.cypressProjectGenerator = exports.configurationGenerator = void 0;
3
+ exports.addInteractionsInAddons = exports.interactionTestsDependencies = exports.storybookVersion = exports.cypressProjectGenerator = exports.configurationGenerator = void 0;
4
4
  var configuration_1 = require("./src/generators/configuration/configuration");
5
5
  Object.defineProperty(exports, "configurationGenerator", { enumerable: true, get: function () { return configuration_1.configurationGenerator; } });
6
6
  var cypress_project_1 = require("./src/generators/cypress-project/cypress-project");
7
7
  Object.defineProperty(exports, "cypressProjectGenerator", { enumerable: true, get: function () { return cypress_project_1.cypressProjectGenerator; } });
8
8
  var versions_1 = require("./src/utils/versions");
9
9
  Object.defineProperty(exports, "storybookVersion", { enumerable: true, get: function () { return versions_1.storybookVersion; } });
10
+ var interaction_testing_utils_1 = require("./src/generators/configuration/lib/interaction-testing.utils");
11
+ Object.defineProperty(exports, "interactionTestsDependencies", { enumerable: true, get: function () { return interaction_testing_utils_1.interactionTestsDependencies; } });
12
+ Object.defineProperty(exports, "addInteractionsInAddons", { enumerable: true, get: function () { return interaction_testing_utils_1.addInteractionsInAddons; } });
package/migrations.json CHANGED
@@ -68,6 +68,115 @@
68
68
  }
69
69
  },
70
70
  "packageJsonUpdates": {
71
+ "16.6.0": {
72
+ "version": "16.6.0-beta.6",
73
+ "packages": {
74
+ "@storybook/test-runner": {
75
+ "version": "^0.11.0",
76
+ "alwaysAddToPackageJson": false
77
+ },
78
+ "@storybook/core-server": {
79
+ "version": "^7.1.0",
80
+ "alwaysAddToPackageJson": false
81
+ },
82
+ "@storybook/angular": {
83
+ "version": "^7.1.0",
84
+ "alwaysAddToPackageJson": false
85
+ },
86
+ "@storybook/react": {
87
+ "version": "^7.1.0",
88
+ "alwaysAddToPackageJson": false
89
+ },
90
+ "@storybook/react-vite": {
91
+ "version": "^7.1.0",
92
+ "alwaysAddToPackageJson": false
93
+ },
94
+ "@storybook/react-webpack5": {
95
+ "version": "^7.1.0",
96
+ "alwaysAddToPackageJson": false
97
+ },
98
+ "@storybook/web-components-vite": {
99
+ "version": "^7.1.0",
100
+ "alwaysAddToPackageJson": false
101
+ },
102
+ "@storybook/web-components-webpack5": {
103
+ "version": "^7.1.0",
104
+ "alwaysAddToPackageJson": false
105
+ },
106
+ "@storybook/addon-a11y": {
107
+ "version": "^7.1.0",
108
+ "alwaysAddToPackageJson": false
109
+ },
110
+ "@storybook/addon-actions": {
111
+ "version": "^7.1.0",
112
+ "alwaysAddToPackageJson": false
113
+ },
114
+ "@storybook/addon-backgrounds": {
115
+ "version": "^7.1.0",
116
+ "alwaysAddToPackageJson": false
117
+ },
118
+ "@storybook/addon-controls": {
119
+ "version": "^7.1.0",
120
+ "alwaysAddToPackageJson": false
121
+ },
122
+ "@storybook/addon-docs": {
123
+ "version": "^7.1.0",
124
+ "alwaysAddToPackageJson": false
125
+ },
126
+ "@storybook/addon-essentials": {
127
+ "version": "^7.1.0",
128
+ "alwaysAddToPackageJson": false
129
+ },
130
+ "@storybook/addon-interactions": {
131
+ "version": "^7.1.0",
132
+ "alwaysAddToPackageJson": false
133
+ },
134
+ "@storybook/addon-mdx-gfm": {
135
+ "version": "^7.1.0",
136
+ "alwaysAddToPackageJson": false
137
+ },
138
+ "@storybook/addon-highlight": {
139
+ "version": "^7.1.0",
140
+ "alwaysAddToPackageJson": false
141
+ },
142
+ "@storybook/addon-jest": {
143
+ "version": "^7.1.0",
144
+ "alwaysAddToPackageJson": false
145
+ },
146
+ "@storybook/addon-links": {
147
+ "version": "^7.1.0",
148
+ "alwaysAddToPackageJson": false
149
+ },
150
+ "@storybook/addon-measure": {
151
+ "version": "^7.1.0",
152
+ "alwaysAddToPackageJson": false
153
+ },
154
+ "@storybook/addon-outline": {
155
+ "version": "^7.1.0",
156
+ "alwaysAddToPackageJson": false
157
+ },
158
+ "@storybook/addon-storyshots": {
159
+ "version": "^7.1.0",
160
+ "alwaysAddToPackageJson": false
161
+ },
162
+ "@storybook/addon-storyshots-puppeteer": {
163
+ "version": "^7.1.0",
164
+ "alwaysAddToPackageJson": false
165
+ },
166
+ "@storybook/addon-storysource": {
167
+ "version": "^7.1.0",
168
+ "alwaysAddToPackageJson": false
169
+ },
170
+ "@storybook/addon-toolbars": {
171
+ "version": "^7.1.0",
172
+ "alwaysAddToPackageJson": false
173
+ },
174
+ "@storybook/addon-viewport": {
175
+ "version": "^7.1.0",
176
+ "alwaysAddToPackageJson": false
177
+ }
178
+ }
179
+ },
71
180
  "16.5.0": {
72
181
  "version": "16.5.0-beta.0",
73
182
  "requires": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx/storybook",
3
- "version": "16.6.0-beta.3",
3
+ "version": "16.6.0-beta.5",
4
4
  "private": false,
5
5
  "description": "The Nx Plugin for Storybook contains executors and generators for allowing your workspace to use the powerful Storybook integration testing & documenting capabilities.",
6
6
  "repository": {
@@ -30,19 +30,20 @@
30
30
  "migrations": "./migrations.json"
31
31
  },
32
32
  "dependencies": {
33
- "@nrwl/storybook": "16.6.0-beta.3",
34
- "@nx/cypress": "16.6.0-beta.3",
35
- "@nx/devkit": "16.6.0-beta.3",
36
- "@nx/js": "16.6.0-beta.3",
37
- "@nx/linter": "16.6.0-beta.3",
38
- "@nx/workspace": "16.6.0-beta.3",
33
+ "@nrwl/storybook": "16.6.0-beta.5",
34
+ "@nx/cypress": "16.6.0-beta.5",
35
+ "@nx/devkit": "16.6.0-beta.5",
36
+ "@nx/js": "16.6.0-beta.5",
37
+ "@nx/linter": "16.6.0-beta.5",
38
+ "@nx/workspace": "16.6.0-beta.5",
39
39
  "@phenomnomnominal/tsquery": "~5.0.1",
40
40
  "dotenv": "~10.0.0",
41
- "semver": "7.5.3"
41
+ "semver": "7.5.3",
42
+ "tslib": "^2.3.0"
42
43
  },
43
44
  "publishConfig": {
44
45
  "access": "public"
45
46
  },
46
47
  "types": "./index.d.ts",
47
- "gitHead": "cd8c61d7a3b8ab9bc7bab068f5ca49bbf14abbf5"
48
+ "gitHead": "aab868aa0c30949832fe2c4b9cb109c204442e39"
48
49
  }
@@ -9,6 +9,7 @@ const util_functions_1 = require("./lib/util-functions");
9
9
  const linter_1 = require("@nx/linter");
10
10
  const utilities_1 = require("../../utils/utilities");
11
11
  const versions_1 = require("../../utils/versions");
12
+ const interaction_testing_utils_1 = require("./lib/interaction-testing.utils");
12
13
  function configurationGenerator(tree, rawSchema) {
13
14
  var _a, _b;
14
15
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
@@ -49,6 +50,7 @@ function configurationGenerator(tree, rawSchema) {
49
50
  (0, util_functions_1.createStorybookTsconfigFile)(tree, root, schema.uiFramework, (0, util_functions_1.projectIsRootProjectInStandaloneWorkspace)(root), mainDir);
50
51
  }
51
52
  (0, util_functions_1.configureTsProjectConfig)(tree, schema);
53
+ (0, util_functions_1.editTsconfigBaseJson)(tree);
52
54
  (0, util_functions_1.configureTsSolutionConfig)(tree, schema);
53
55
  (0, util_functions_1.updateLintConfig)(tree, schema);
54
56
  (0, util_functions_1.addBuildStorybookToCacheableOperations)(tree);
@@ -62,7 +64,7 @@ function configurationGenerator(tree, rawSchema) {
62
64
  if (schema.configureStaticServe) {
63
65
  (0, util_functions_1.addStaticTarget)(tree, schema);
64
66
  }
65
- // TODO(katerina): remove Cypress for Nx 18
67
+ // TODO(v18): remove Cypress
66
68
  if (schema.configureCypress) {
67
69
  const e2eProject = yield (0, util_functions_1.getE2EProjectName)(tree, schema.name);
68
70
  if (!e2eProject) {
@@ -83,16 +85,12 @@ function configurationGenerator(tree, rawSchema) {
83
85
  devkit_1.logger.warn(`There is already an e2e project setup for ${schema.name}, called ${e2eProject}.`);
84
86
  }
85
87
  }
86
- const devDeps = {};
88
+ let devDeps = {};
87
89
  if (schema.tsConfiguration) {
88
- devDeps['@storybook/core-common'] = versions_1.storybookVersion;
89
90
  devDeps['ts-node'] = versions_1.tsNodeVersion;
90
91
  }
91
92
  if (schema.interactionTests) {
92
- devDeps['@storybook/test-runner'] = versions_1.storybookTestRunnerVersion;
93
- devDeps['@storybook/addon-interactions'] = versions_1.storybookVersion;
94
- devDeps['@storybook/testing-library'] = versions_1.storybookTestingLibraryVersion;
95
- devDeps['@storybook/jest'] = versions_1.storybookJestVersion;
93
+ devDeps = Object.assign(Object.assign({}, devDeps), (0, interaction_testing_utils_1.interactionTestsDependencies)());
96
94
  }
97
95
  if (schema.configureStaticServe) {
98
96
  devDeps['@nx/web'] = versions_1.nxVersion;
@@ -0,0 +1,5 @@
1
+ import { ProjectConfiguration, Tree } from '@nx/devkit';
2
+ export declare function interactionTestsDependencies(): {
3
+ [key: string]: string;
4
+ };
5
+ export declare function addInteractionsInAddons(tree: Tree, projectConfig: ProjectConfiguration): void;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addInteractionsInAddons = exports.interactionTestsDependencies = void 0;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const tsquery_1 = require("@phenomnomnominal/tsquery");
6
+ const versions_1 = require("../../../utils/versions");
7
+ function interactionTestsDependencies() {
8
+ return {
9
+ '@storybook/test-runner': versions_1.storybookTestRunnerVersion,
10
+ '@storybook/addon-interactions': versions_1.storybookVersion,
11
+ '@storybook/testing-library': versions_1.storybookTestingLibraryVersion,
12
+ '@storybook/jest': versions_1.storybookJestVersion,
13
+ };
14
+ }
15
+ exports.interactionTestsDependencies = interactionTestsDependencies;
16
+ function addInteractionsInAddons(tree, projectConfig) {
17
+ var _a, _b, _c;
18
+ const mainJsTsPath = getMainTsJsPath(tree, projectConfig);
19
+ if (!mainJsTsPath)
20
+ return;
21
+ let mainJsTs = tree.read(mainJsTsPath, 'utf-8');
22
+ if (!mainJsTs)
23
+ return;
24
+ // Find addons array
25
+ const addonsArray = (_a = tsquery_1.tsquery.query(mainJsTs, `PropertyAssignment:has(Identifier:has([name="addons"]))`)) === null || _a === void 0 ? void 0 : _a[0];
26
+ // if there's no addons array don't do anything
27
+ // they may be setting up storybook in another project
28
+ if (!addonsArray)
29
+ return;
30
+ // Check if addons array already has addon-interactions
31
+ const addonsArrayHasAddonInteractions = (_b = tsquery_1.tsquery.query(addonsArray, `StringLiteral:has([text="@storybook/addon-interactions"])`)) === null || _b === void 0 ? void 0 : _b[0];
32
+ if (addonsArrayHasAddonInteractions)
33
+ return;
34
+ // get the array of the addons
35
+ const arrayLiteralExpression = (_c = tsquery_1.tsquery.query(addonsArray, `ArrayLiteralExpression`)) === null || _c === void 0 ? void 0 : _c[0];
36
+ if (!arrayLiteralExpression)
37
+ return;
38
+ mainJsTs = (0, devkit_1.applyChangesToString)(mainJsTs, [
39
+ {
40
+ type: devkit_1.ChangeType.Insert,
41
+ index: arrayLiteralExpression.getStart() + 1,
42
+ text: `'@storybook/addon-interactions', `,
43
+ },
44
+ ]);
45
+ tree.write(mainJsTsPath, mainJsTs);
46
+ }
47
+ exports.addInteractionsInAddons = addInteractionsInAddons;
48
+ function getMainTsJsPath(host, projectConfig) {
49
+ let mainJsTsPath = undefined;
50
+ Object.entries(projectConfig.targets).forEach(([_targetName, targetConfig]) => {
51
+ var _a;
52
+ if (targetConfig.executor === '@nx/storybook:storybook' ||
53
+ targetConfig.executor === '@storybook/angular:start-storybook') {
54
+ const configDir = (_a = targetConfig.options) === null || _a === void 0 ? void 0 : _a.configDir;
55
+ if (host.exists(`${configDir}/main.js`)) {
56
+ mainJsTsPath = `${configDir}/main.js`;
57
+ }
58
+ if (host.exists(`${configDir}/main.ts`)) {
59
+ mainJsTsPath = `${configDir}/main.ts`;
60
+ }
61
+ }
62
+ });
63
+ return mainJsTsPath;
64
+ }
@@ -5,6 +5,7 @@ export declare function addStorybookTask(tree: Tree, projectName: string, uiFram
5
5
  export declare function addAngularStorybookTask(tree: Tree, projectName: string, interactionTests: boolean): void;
6
6
  export declare function addStaticTarget(tree: Tree, opts: StorybookConfigureSchema): void;
7
7
  export declare function createStorybookTsconfigFile(tree: Tree, projectRoot: string, uiFramework: UiFramework7, isRootProject: boolean, mainDir: 'components' | 'src'): void;
8
+ export declare function editTsconfigBaseJson(tree: Tree): void;
8
9
  export declare function configureTsProjectConfig(tree: Tree, schema: StorybookConfigureSchema): void;
9
10
  export declare function configureTsSolutionConfig(tree: Tree, schema: StorybookConfigureSchema): void;
10
11
  /**
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.renameAndMoveOldTsConfig = exports.getViteConfigFilePath = exports.getE2EProjectName = exports.rootFileIsTs = exports.workspaceHasRootProject = exports.projectIsRootProjectInStandaloneWorkspace = exports.addBuildStorybookToCacheableOperations = exports.getTsConfigPath = exports.createProjectStorybookDir = exports.addStorybookToNamedInputs = exports.normalizeSchema = exports.updateLintConfig = exports.configureTsSolutionConfig = exports.configureTsProjectConfig = exports.createStorybookTsconfigFile = exports.addStaticTarget = exports.addAngularStorybookTask = exports.addStorybookTask = void 0;
3
+ exports.renameAndMoveOldTsConfig = exports.getViteConfigFilePath = exports.getE2EProjectName = exports.rootFileIsTs = exports.workspaceHasRootProject = exports.projectIsRootProjectInStandaloneWorkspace = exports.addBuildStorybookToCacheableOperations = exports.getTsConfigPath = exports.createProjectStorybookDir = exports.addStorybookToNamedInputs = exports.normalizeSchema = exports.updateLintConfig = exports.configureTsSolutionConfig = exports.configureTsProjectConfig = exports.editTsconfigBaseJson = exports.createStorybookTsconfigFile = exports.addStaticTarget = exports.addAngularStorybookTask = exports.addStorybookTask = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const devkit_1 = require("@nx/devkit");
6
6
  const executor_options_utils_1 = require("@nx/devkit/src/generators/executor-options-utils");
@@ -170,6 +170,20 @@ function createStorybookTsconfigFile(tree, projectRoot, uiFramework, isRootProje
170
170
  (0, devkit_1.writeJson)(tree, storybookTsConfigPath, storybookTsConfig);
171
171
  }
172
172
  exports.createStorybookTsconfigFile = createStorybookTsconfigFile;
173
+ function editTsconfigBaseJson(tree) {
174
+ let tsconfigBasePath = 'tsconfig.base.json';
175
+ // standalone workspace maybe
176
+ if (!tree.exists(tsconfigBasePath))
177
+ tsconfigBasePath = 'tsconfig.json';
178
+ if (!tree.exists(tsconfigBasePath))
179
+ return;
180
+ const tsconfigBaseContent = (0, devkit_1.readJson)(tree, tsconfigBasePath);
181
+ if (!tsconfigBaseContent.compilerOptions)
182
+ tsconfigBaseContent.compilerOptions = {};
183
+ tsconfigBaseContent.compilerOptions.skipLibCheck = true;
184
+ (0, devkit_1.writeJson)(tree, tsconfigBasePath, tsconfigBaseContent);
185
+ }
186
+ exports.editTsconfigBaseJson = editTsconfigBaseJson;
173
187
  function configureTsProjectConfig(tree, schema) {
174
188
  var _a, _b, _c;
175
189
  const { name: projectName } = schema;
@@ -4,13 +4,19 @@ import { UiFramework7, UiFramework } from '../../utils/models';
4
4
  export interface StorybookConfigureSchema {
5
5
  name: string;
6
6
  uiFramework?: UiFramework7;
7
- configureCypress?: boolean;
8
7
  linter?: Linter;
9
8
  js?: boolean;
10
9
  interactionTests?: boolean;
11
10
  tsConfiguration?: boolean;
12
- cypressDirectory?: string;
13
11
  standaloneConfig?: boolean;
14
12
  configureStaticServe?: boolean;
15
13
  skipFormat?: boolean;
14
+ /**
15
+ * @deprecated Use interactionTests instead. This option will be removed in v18.
16
+ */
17
+ configureCypress?: boolean;
18
+ /**
19
+ * @deprecated Use interactionTests instead. This option will be removed in v18.
20
+ */
21
+ cypressDirectory?: string;
16
22
  }
@@ -28,12 +28,12 @@
28
28
  "configureCypress": {
29
29
  "type": "boolean",
30
30
  "description": "Run the cypress-configure generator.",
31
- "x-deprecated": "Please use Storybook interaction tests instead."
31
+ "x-deprecated": "Use interactionTests instead. This option will be removed in v18."
32
32
  },
33
33
  "cypressDirectory": {
34
34
  "type": "string",
35
35
  "description": "A directory where the Cypress project will be placed. Added at root by default.",
36
- "x-deprecated": "Please use Storybook interaction tests instead."
36
+ "x-deprecated": "Use interactionTests instead. This option will be removed in v18."
37
37
  },
38
38
  "linter": {
39
39
  "description": "The tool to use for running lint checks.",
@@ -6,7 +6,7 @@ export declare const storybookTestingLibraryVersion = "~0.2.0";
6
6
  export declare const storybookJestVersion = "~0.1.0";
7
7
  export declare const litVersion = "^2.6.1";
8
8
  export declare const tsNodeVersion = "10.9.1";
9
- export declare const storybookVersion = "^7.0.24";
9
+ export declare const storybookVersion = "^7.1.0";
10
10
  export declare const reactVersion = "^18.2.0";
11
11
  export declare const viteVersion = "~4.3.9";
12
12
  export declare const coreJsVersion = "^3.6.5";
@@ -9,7 +9,7 @@ exports.storybookTestingLibraryVersion = '~0.2.0';
9
9
  exports.storybookJestVersion = '~0.1.0';
10
10
  exports.litVersion = '^2.6.1';
11
11
  exports.tsNodeVersion = '10.9.1';
12
- exports.storybookVersion = '^7.0.24';
12
+ exports.storybookVersion = '^7.1.0';
13
13
  exports.reactVersion = '^18.2.0';
14
14
  exports.viteVersion = '~4.3.9';
15
15
  exports.coreJsVersion = '^3.6.5';