Skip to content

Commit

Permalink
Merge pull request #23427 from storybookjs/kasper/recast-refactor
Browse files Browse the repository at this point in the history
CSF Tools: Use recast for printing in csf-tools
  • Loading branch information
kasperpeulen committed Jul 28, 2023
2 parents 46a96b3 + c93d676 commit d8d8cac
Show file tree
Hide file tree
Showing 9 changed files with 170 additions and 125 deletions.
5 changes: 2 additions & 3 deletions code/lib/codemod/src/transforms/csf-2-to-3.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@ import prettier from 'prettier';
import * as t from '@babel/types';
import { isIdentifier, isTSTypeAnnotation, isTSTypeReference } from '@babel/types';
import type { CsfFile } from '@storybook/csf-tools';
import { loadCsf } from '@storybook/csf-tools';
import { loadCsf, printCsf } from '@storybook/csf-tools';
import type { API, FileInfo } from 'jscodeshift';
import type { BabelFile, NodePath } from '@babel/core';
import * as babel from '@babel/core';
import * as recast from 'recast';
import { upgradeDeprecatedTypes } from './upgrade-deprecated-types';

const logger = console;
Expand Down Expand Up @@ -202,7 +201,7 @@ export default function transform(info: FileInfo, api: API, options: { parser?:
importHelper.removeDeprecatedStoryImport();
removeUnusedTemplates(csf);

let output = recast.print(csf._ast, {}).code;
let output = printCsf(csf).code;

try {
const prettierConfig = prettier.resolveConfig.sync('.', { editorconfig: true }) || {
Expand Down
8 changes: 4 additions & 4 deletions code/lib/codemod/src/transforms/upgrade-deprecated-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@ import prettier from 'prettier';
import type { API, FileInfo } from 'jscodeshift';
import type { BabelFile, NodePath } from '@babel/core';
import * as babel from '@babel/core';
import { loadCsf } from '@storybook/csf-tools';
import * as recast from 'recast';
import { loadCsf, printCsf } from '@storybook/csf-tools';
import * as t from '@babel/types';

const logger = console;
Expand All @@ -24,7 +23,8 @@ function migrateType(oldType: string) {

export default function transform(info: FileInfo, api: API, options: { parser?: string }) {
// TODO what do I need to with the title?
const fileNode = loadCsf(info.source, { makeTitle: (title) => title })._ast;
const csf = loadCsf(info.source, { makeTitle: (title) => title });
const fileNode = csf._ast;
// @ts-expect-error File is not yet exposed, see https://github.com/babel/babel/issues/11350#issuecomment-644118606
const file: BabelFile = new babel.File(
{ filename: info.path },
Expand All @@ -33,7 +33,7 @@ export default function transform(info: FileInfo, api: API, options: { parser?:

upgradeDeprecatedTypes(file);

let output = recast.print(file.path.node).code;
let output = printCsf(csf).code;

try {
const prettierConfig = prettier.resolveConfig.sync('.', { editorconfig: true }) || {
Expand Down
18 changes: 9 additions & 9 deletions code/lib/core-server/src/presets/common-preset.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { pathExists, readFile } from 'fs-extra';
import fs, { pathExists, readFile } from 'fs-extra';
import { deprecate, logger } from '@storybook/node-logger';
import { telemetry } from '@storybook/telemetry';
import {
Expand All @@ -17,7 +17,7 @@ import type {
StorybookConfig,
StoryIndexer,
} from '@storybook/types';
import { loadCsf, readConfig, writeConfig } from '@storybook/csf-tools';
import { loadCsf, printConfig, readConfig } from '@storybook/csf-tools';
import { join } from 'path';
import { dedent } from 'ts-dedent';
import fetch from 'node-fetch';
Expand All @@ -29,6 +29,7 @@ import {
SET_WHATS_NEW_CACHE,
TOGGLE_WHATS_NEW_NOTIFICATIONS,
} from '@storybook/core-events';
import invariant from 'tiny-invariant';
import { parseStaticDir } from '../utils/server-statics';
import { defaultStaticDirs } from '../utils/constants';
import { sendTelemetryError } from '../withTelemetry';
Expand Down Expand Up @@ -313,19 +314,18 @@ export const experimental_serverChannel = async (
async ({ disableWhatsNewNotifications }: { disableWhatsNewNotifications: boolean }) => {
const isTelemetryEnabled = coreOptions.disableTelemetry !== true;
try {
const configFileName = findConfigFile('main', options.configDir);
if (!configFileName)
throw new Error(`unable to find storybook main file in ${options.configDir}`);
const main = await readConfig(configFileName);
const mainPath = findConfigFile('main', options.configDir);
invariant(mainPath, `unable to find storybook main file in ${options.configDir}`);
const main = await readConfig(mainPath);
main.setFieldValue(['core', 'disableWhatsNewNotifications'], disableWhatsNewNotifications);
await writeConfig(main);

await fs.writeFile(mainPath, printConfig(main).code);
if (isTelemetryEnabled) {
await telemetry('core-config', { disableWhatsNewNotifications });
}
} catch (error) {
invariant(error instanceof Error);
if (isTelemetryEnabled) {
await sendTelemetryError(error as Error, 'core-config', {
await sendTelemetryError(error, 'core-config', {
cliOptions: options,
presetOptions: { ...options, corePresets: [], overridePresets: [] },
skipPrompt: true,
Expand Down
1 change: 1 addition & 0 deletions code/lib/csf-tools/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
"@storybook/csf": "^0.1.0",
"@storybook/types": "workspace:*",
"fs-extra": "^11.1.0",
"prettier": "^2.8.0",
"recast": "^0.23.1",
"ts-dedent": "^2.0.0"
},
Expand Down

0 comments on commit d8d8cac

Please sign in to comment.