@storybook/codemod 7.0.0-alpha.8 → 7.0.0-beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (133) hide show
  1. package/README.md +0 -36
  2. package/dist/index.d.ts +261 -0
  3. package/dist/index.js +1 -0
  4. package/dist/index.mjs +1 -0
  5. package/jest.config.js +7 -0
  6. package/package.json +32 -29
  7. package/src/index.js +77 -0
  8. package/src/lib/utils.test.js +9 -0
  9. package/{dist/esm/lib/utils.js → src/lib/utils.ts} +10 -11
  10. package/src/transforms/__testfixtures__/add-component-parameters/add-component-parameters.input.js +44 -0
  11. package/src/transforms/__testfixtures__/add-component-parameters/add-component-parameters.output.snapshot +68 -0
  12. package/src/transforms/__testfixtures__/csf-hoist-story-annotations/basic.input.js +25 -0
  13. package/src/transforms/__testfixtures__/csf-hoist-story-annotations/basic.output.snapshot +27 -0
  14. package/src/transforms/__testfixtures__/csf-hoist-story-annotations/overrides.input.js +25 -0
  15. package/src/transforms/__testfixtures__/csf-hoist-story-annotations/overrides.output.snapshot +28 -0
  16. package/src/transforms/__testfixtures__/csf-hoist-story-annotations/variable.input.js +13 -0
  17. package/src/transforms/__testfixtures__/csf-hoist-story-annotations/variable.output.snapshot +17 -0
  18. package/src/transforms/__testfixtures__/csf-to-mdx/basic.input.js +20 -0
  19. package/src/transforms/__testfixtures__/csf-to-mdx/basic.output.snapshot +18 -0
  20. package/src/transforms/__testfixtures__/csf-to-mdx/component-id.input.js +9 -0
  21. package/src/transforms/__testfixtures__/csf-to-mdx/component-id.output.snapshot +10 -0
  22. package/src/transforms/__testfixtures__/csf-to-mdx/decorators.input.js +13 -0
  23. package/src/transforms/__testfixtures__/csf-to-mdx/decorators.output.snapshot +12 -0
  24. package/src/transforms/__testfixtures__/csf-to-mdx/exclude-stories.input.js +23 -0
  25. package/src/transforms/__testfixtures__/csf-to-mdx/exclude-stories.output.snapshot +22 -0
  26. package/src/transforms/__testfixtures__/csf-to-mdx/parameters.input.js +16 -0
  27. package/src/transforms/__testfixtures__/csf-to-mdx/parameters.output.snapshot +17 -0
  28. package/src/transforms/__testfixtures__/csf-to-mdx/story-function.input.js +19 -0
  29. package/src/transforms/__testfixtures__/csf-to-mdx/story-function.output.snapshot +18 -0
  30. package/src/transforms/__testfixtures__/csf-to-mdx/story-parameters.input.js +24 -0
  31. package/src/transforms/__testfixtures__/csf-to-mdx/story-parameters.output.snapshot +22 -0
  32. package/src/transforms/__testfixtures__/mdx-to-csf/basic.input.js +18 -0
  33. package/src/transforms/__testfixtures__/mdx-to-csf/basic.output.snapshot +40 -0
  34. package/src/transforms/__testfixtures__/mdx-to-csf/component-id.input.js +6 -0
  35. package/src/transforms/__testfixtures__/mdx-to-csf/component-id.output.snapshot +17 -0
  36. package/src/transforms/__testfixtures__/mdx-to-csf/decorators.input.js +8 -0
  37. package/src/transforms/__testfixtures__/mdx-to-csf/decorators.output.snapshot +18 -0
  38. package/src/transforms/__testfixtures__/mdx-to-csf/exclude-stories.input.js +19 -0
  39. package/src/transforms/__testfixtures__/mdx-to-csf/exclude-stories.output.snapshot +39 -0
  40. package/src/transforms/__testfixtures__/mdx-to-csf/parameters.input.js +14 -0
  41. package/src/transforms/__testfixtures__/mdx-to-csf/parameters.output.snapshot +23 -0
  42. package/src/transforms/__testfixtures__/mdx-to-csf/plaintext.input.js +3 -0
  43. package/src/transforms/__testfixtures__/mdx-to-csf/plaintext.output.snapshot +11 -0
  44. package/src/transforms/__testfixtures__/mdx-to-csf/story-function.input.js +10 -0
  45. package/src/transforms/__testfixtures__/mdx-to-csf/story-function.output.snapshot +18 -0
  46. package/src/transforms/__testfixtures__/mdx-to-csf/story-parameters.input.js +18 -0
  47. package/src/transforms/__testfixtures__/mdx-to-csf/story-parameters.output.snapshot +32 -0
  48. package/src/transforms/__testfixtures__/mdx-to-csf/story-refs.input.js +22 -0
  49. package/src/transforms/__testfixtures__/mdx-to-csf/story-refs.output.snapshot +34 -0
  50. package/src/transforms/__testfixtures__/move-builtin-addons/default.input.js +2 -0
  51. package/src/transforms/__testfixtures__/move-builtin-addons/default.output.snapshot +8 -0
  52. package/src/transforms/__testfixtures__/move-builtin-addons/with-no-change.input.js +3 -0
  53. package/src/transforms/__testfixtures__/move-builtin-addons/with-no-change.output.snapshot +7 -0
  54. package/src/transforms/__testfixtures__/storiesof-to-csf/basic.input.js +18 -0
  55. package/src/transforms/__testfixtures__/storiesof-to-csf/basic.output.snapshot +45 -0
  56. package/src/transforms/__testfixtures__/storiesof-to-csf/collision.input.js +11 -0
  57. package/src/transforms/__testfixtures__/storiesof-to-csf/collision.output.snapshot +38 -0
  58. package/src/transforms/__testfixtures__/storiesof-to-csf/const.input.js +1 -0
  59. package/src/transforms/__testfixtures__/storiesof-to-csf/const.output.snapshot +13 -0
  60. package/src/transforms/__testfixtures__/storiesof-to-csf/decorators.input.js +9 -0
  61. package/src/transforms/__testfixtures__/storiesof-to-csf/decorators.output.snapshot +18 -0
  62. package/src/transforms/__testfixtures__/storiesof-to-csf/default.input.js +7 -0
  63. package/src/transforms/__testfixtures__/storiesof-to-csf/default.output.snapshot +17 -0
  64. package/src/transforms/__testfixtures__/storiesof-to-csf/digit.input.js +1 -0
  65. package/src/transforms/__testfixtures__/storiesof-to-csf/digit.output.js +5 -0
  66. package/src/transforms/__testfixtures__/storiesof-to-csf/digit.output.snapshot +9 -0
  67. package/src/transforms/__testfixtures__/storiesof-to-csf/export-destructuring.input.js +11 -0
  68. package/src/transforms/__testfixtures__/storiesof-to-csf/export-destructuring.output.snapshot +23 -0
  69. package/src/transforms/__testfixtures__/storiesof-to-csf/export-function.input.js +12 -0
  70. package/src/transforms/__testfixtures__/storiesof-to-csf/export-function.output.snapshot +23 -0
  71. package/src/transforms/__testfixtures__/storiesof-to-csf/export-names.input.js +14 -0
  72. package/src/transforms/__testfixtures__/storiesof-to-csf/export-names.output.snapshot +26 -0
  73. package/src/transforms/__testfixtures__/storiesof-to-csf/exports.input.js +2 -0
  74. package/src/transforms/__testfixtures__/storiesof-to-csf/exports.output.snapshot +16 -0
  75. package/src/transforms/__testfixtures__/storiesof-to-csf/module.input.js +12 -0
  76. package/src/transforms/__testfixtures__/storiesof-to-csf/module.output.snapshot +16 -0
  77. package/src/transforms/__testfixtures__/storiesof-to-csf/multi.input.js +14 -0
  78. package/src/transforms/__testfixtures__/storiesof-to-csf/multi.output.snapshot +39 -0
  79. package/src/transforms/__testfixtures__/storiesof-to-csf/parameters-as-var.input.js +8 -0
  80. package/src/transforms/__testfixtures__/storiesof-to-csf/parameters-as-var.output.snapshot +20 -0
  81. package/src/transforms/__testfixtures__/storiesof-to-csf/parameters.input.js +10 -0
  82. package/src/transforms/__testfixtures__/storiesof-to-csf/parameters.output.snapshot +23 -0
  83. package/src/transforms/__testfixtures__/storiesof-to-csf/storiesof-var.input.js +11 -0
  84. package/src/transforms/__testfixtures__/storiesof-to-csf/storiesof-var.output.snapshot +23 -0
  85. package/src/transforms/__testfixtures__/storiesof-to-csf/story-decorators.input.js +11 -0
  86. package/src/transforms/__testfixtures__/storiesof-to-csf/story-decorators.output.snapshot +29 -0
  87. package/src/transforms/__testfixtures__/storiesof-to-csf/story-parameters.input.js +14 -0
  88. package/src/transforms/__testfixtures__/storiesof-to-csf/story-parameters.output.snapshot +32 -0
  89. package/src/transforms/__testfixtures__/update-addon-info/update-addon-info.input.js +198 -0
  90. package/src/transforms/__testfixtures__/update-addon-info/update-addon-info.output.snapshot +198 -0
  91. package/src/transforms/__testfixtures__/update-organisation-name/update-organisation-name.input.js +19 -0
  92. package/src/transforms/__testfixtures__/update-organisation-name/update-organisation-name.output.snapshot +23 -0
  93. package/src/transforms/__testfixtures__/upgrade-hierarchy-separators/csf.input.js +3 -0
  94. package/src/transforms/__testfixtures__/upgrade-hierarchy-separators/csf.output.snapshot +7 -0
  95. package/src/transforms/__testfixtures__/upgrade-hierarchy-separators/dynamic-storiesof.input.js +5 -0
  96. package/src/transforms/__testfixtures__/upgrade-hierarchy-separators/dynamic-storiesof.output.snapshot +9 -0
  97. package/src/transforms/__testfixtures__/upgrade-hierarchy-separators/storiesof.input.js +8 -0
  98. package/src/transforms/__testfixtures__/upgrade-hierarchy-separators/storiesof.output.snapshot +12 -0
  99. package/src/transforms/__tests__/csf-2-to-3.test.ts +250 -0
  100. package/src/transforms/__tests__/transforms.tests.js +32 -0
  101. package/{dist/esm → src}/transforms/add-component-parameters.js +26 -21
  102. package/src/transforms/csf-2-to-3.ts +184 -0
  103. package/src/transforms/csf-hoist-story-annotations.js +97 -0
  104. package/src/transforms/csf-to-mdx.js +190 -0
  105. package/src/transforms/move-builtin-addons.js +32 -0
  106. package/src/transforms/storiesof-to-csf.js +277 -0
  107. package/{dist/esm → src}/transforms/update-addon-info.js +44 -24
  108. package/{dist/esm → src}/transforms/update-organisation-name.js +21 -24
  109. package/src/transforms/upgrade-hierarchy-separators.js +39 -0
  110. package/tsconfig.json +7 -0
  111. package/LICENSE +0 -21
  112. package/dist/cjs/index.js +0 -142
  113. package/dist/cjs/lib/utils.js +0 -45
  114. package/dist/cjs/transforms/add-component-parameters.js +0 -64
  115. package/dist/cjs/transforms/csf-2-to-3.js +0 -180
  116. package/dist/cjs/transforms/csf-hoist-story-annotations.js +0 -93
  117. package/dist/cjs/transforms/csf-to-mdx.js +0 -196
  118. package/dist/cjs/transforms/mdx-to-csf.js +0 -153
  119. package/dist/cjs/transforms/move-builtin-addons.js +0 -57
  120. package/dist/cjs/transforms/storiesof-to-csf.js +0 -300
  121. package/dist/cjs/transforms/update-addon-info.js +0 -101
  122. package/dist/cjs/transforms/update-organisation-name.js +0 -83
  123. package/dist/cjs/transforms/upgrade-hierarchy-separators.js +0 -42
  124. package/dist/esm/index.js +0 -99
  125. package/dist/esm/transforms/csf-2-to-3.js +0 -163
  126. package/dist/esm/transforms/csf-hoist-story-annotations.js +0 -86
  127. package/dist/esm/transforms/csf-to-mdx.js +0 -188
  128. package/dist/esm/transforms/mdx-to-csf.js +0 -139
  129. package/dist/esm/transforms/move-builtin-addons.js +0 -50
  130. package/dist/esm/transforms/storiesof-to-csf.js +0 -287
  131. package/dist/esm/transforms/upgrade-hierarchy-separators.js +0 -35
  132. package/dist/types/lib/utils.d.ts +0 -2
  133. package/dist/types/transforms/csf-2-to-3.d.ts +0 -6
@@ -1,196 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = transformer;
7
-
8
- var _recast = require("recast");
9
-
10
- var _csf = require("@storybook/csf");
11
-
12
- function exportMdx(root, options) {
13
- // eslint-disable-next-line no-underscore-dangle
14
- var path = root.__paths[0]; // FIXME: insert the title as markdown after all of the imports
15
-
16
- return path.node.program.body.map(function (n) {
17
- var _prettyPrint = (0, _recast.prettyPrint)(n, options),
18
- code = _prettyPrint.code;
19
-
20
- if (n.type === 'JSXElement') {
21
- return `${code}\n`;
22
- }
23
-
24
- return code;
25
- }).join('\n');
26
- }
27
-
28
- function parseIncludeExclude(prop) {
29
- var _prettyPrint2 = (0, _recast.prettyPrint)(prop, {}),
30
- code = _prettyPrint2.code; // eslint-disable-next-line no-eval
31
-
32
-
33
- return eval(code);
34
- }
35
- /**
36
- * Convert a component's module story file into an MDX file
37
- *
38
- * For example:
39
- *
40
- * ```
41
- * input { Button } from './Button';
42
- * export default {
43
- * title: 'Button'
44
- * }
45
- * export const story = () => <Button label="The Button" />;
46
- * ```
47
- *
48
- * Becomes:
49
- *
50
- * ```
51
- * import { Meta, Story } from '@storybook/addon-docs';
52
- * input { Button } from './Button';
53
- *
54
- * <Meta title='Button' />
55
- *
56
- * <Story name='story'>
57
- * <Button label="The Button" />
58
- * </Story>
59
- * ```
60
- */
61
-
62
-
63
- function transformer(file, api) {
64
- var j = api.jscodeshift;
65
- var root = j(file.source); // FIXME: save out all the storyFn.story = { ... }
66
-
67
- var storyKeyToStory = {}; // save out includeStories / excludeStories
68
-
69
- var meta = {};
70
-
71
- function makeAttr(key, val) {
72
- return j.jsxAttribute(j.jsxIdentifier(key), val.type === 'Literal' ? val : j.jsxExpressionContainer(val));
73
- }
74
-
75
- function getStoryContents(node) {
76
- return node.type === 'ArrowFunctionExpression' && node.body.type === 'JSXElement' ? node.body : j.jsxExpressionContainer(node);
77
- }
78
-
79
- function getName(storyKey) {
80
- var story = storyKeyToStory[storyKey];
81
-
82
- if (story) {
83
- var name = story.properties.find(function (prop) {
84
- return prop.key.name === 'name';
85
- });
86
-
87
- if (name && name.value.type === 'Literal') {
88
- return name.value.value;
89
- }
90
- }
91
-
92
- return storyKey;
93
- }
94
-
95
- function getStoryAttrs(storyKey) {
96
- var attrs = [];
97
- var story = storyKeyToStory[storyKey];
98
-
99
- if (story) {
100
- story.properties.forEach(function (prop) {
101
- var key = prop.key,
102
- value = prop.value;
103
-
104
- if (key.name !== 'name') {
105
- attrs.push(makeAttr(key.name, value));
106
- }
107
- });
108
- }
109
-
110
- return attrs;
111
- } // 1. If the program does not have `export default { title: '....' }, skip it
112
-
113
-
114
- var defaultExportWithTitle = root.find(j.ExportDefaultDeclaration).filter(function (def) {
115
- return def.node.declaration.properties.map(function (p) {
116
- return p.key.name;
117
- }).includes('title');
118
- });
119
-
120
- if (defaultExportWithTitle.size() === 0) {
121
- return root.toSource();
122
- } // 2a. Add imports from '@storybook/addon-docs'
123
-
124
-
125
- root.find(j.ImportDeclaration).at(-1).insertAfter(j.emptyStatement()).insertAfter(j.importDeclaration([j.importSpecifier(j.identifier('Meta')), j.importSpecifier(j.identifier('Story'))], j.literal('@storybook/addon-docs'))); // 2b. Remove react import which is implicit
126
-
127
- root.find(j.ImportDeclaration).filter(function (decl) {
128
- return decl.node.source.value === 'react';
129
- }).remove(); // 3. Save out all the excluded stories
130
-
131
- defaultExportWithTitle.forEach(function (exp) {
132
- exp.node.declaration.properties.forEach(function (p) {
133
- if (['includeStories', 'excludeStories'].includes(p.key.name)) {
134
- meta[p.key.name] = parseIncludeExclude(p.value);
135
- }
136
- });
137
- }); // 4. Collect all the story exports in storyKeyToStory[key] = null;
138
-
139
- var namedExports = root.find(j.ExportNamedDeclaration);
140
- namedExports.forEach(function (exp) {
141
- var storyKey = exp.node.declaration.declarations[0].id.name;
142
-
143
- if ((0, _csf.isExportStory)(storyKey, meta)) {
144
- storyKeyToStory[storyKey] = null;
145
- }
146
- }); // 5. Collect all the storyKey.story in storyKeyToStory and also remove them
147
-
148
- var storyAssignments = root.find(j.AssignmentExpression).filter(function (exp) {
149
- var left = exp.node.left;
150
- return left.type === 'MemberExpression' && left.object.type === 'Identifier' && left.object.name in storyKeyToStory && left.property.type === 'Identifier' && left.property.name === 'story';
151
- });
152
- storyAssignments.forEach(function (exp) {
153
- var _exp$node = exp.node,
154
- left = _exp$node.left,
155
- right = _exp$node.right;
156
- storyKeyToStory[left.object.name] = right;
157
- });
158
- storyAssignments.remove(); // 6. Convert the default export to <Meta />
159
-
160
- defaultExportWithTitle.replaceWith(function (exp) {
161
- var jsxId = j.jsxIdentifier('Meta');
162
- var attrs = [];
163
- exp.node.declaration.properties.forEach(function (prop) {
164
- var key = prop.key,
165
- value = prop.value;
166
-
167
- if (!['includeStories', 'excludeStories'].includes(key.name)) {
168
- attrs.push(makeAttr(key.name, value));
169
- }
170
- });
171
- var opening = j.jsxOpeningElement(jsxId, attrs);
172
- opening.selfClosing = true;
173
- return j.jsxElement(opening);
174
- }); // 7. Convert all the named exports to <Story>...</Story>
175
-
176
- namedExports.replaceWith(function (exp) {
177
- var storyKey = exp.node.declaration.declarations[0].id.name;
178
-
179
- if (!(0, _csf.isExportStory)(storyKey, meta)) {
180
- return exp.node;
181
- }
182
-
183
- var jsxId = j.jsxIdentifier('Story');
184
- var name = getName(storyKey);
185
- var attributes = [makeAttr('name', j.literal(name)), ...getStoryAttrs(storyKey)];
186
- var opening = j.jsxOpeningElement(jsxId, attributes);
187
- var closing = j.jsxClosingElement(jsxId);
188
- var children = [getStoryContents(exp.node.declaration.declarations[0].init)];
189
- return j.jsxElement(opening, closing, children);
190
- });
191
- return exportMdx(root, {
192
- quote: 'single',
193
- trailingComma: 'true',
194
- tabWidth: 2
195
- });
196
- }
@@ -1,153 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = transformer;
7
-
8
- var _mdx = _interopRequireDefault(require("@mdx-js/mdx"));
9
-
10
- var _prettier = _interopRequireDefault(require("prettier"));
11
-
12
- var _utils = require("../lib/utils");
13
-
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
- // import recast from 'recast';
17
-
18
- /**
19
- * Convert a component's MDX file into module story format
20
- */
21
- function transformer(file, api) {
22
- var j = api.jscodeshift;
23
-
24
- var code = _mdx.default.sync(file.source, {});
25
-
26
- var root = j(code);
27
-
28
- function parseJsxAttributes(attributes) {
29
- var result = {};
30
- attributes.forEach(function (attr) {
31
- var key = attr.name.name;
32
- var val = attr.value.type === 'JSXExpressionContainer' ? attr.value.expression : attr.value;
33
- result[key] = val;
34
- });
35
- return result;
36
- }
37
-
38
- function genObjectExpression(attrs) {
39
- return j.objectExpression(Object.entries(attrs).map(function ([key, val]) {
40
- return j.property('init', j.identifier(key), val);
41
- }));
42
- }
43
-
44
- function convertToStories(path) {
45
- var base = j(path);
46
- var meta = {};
47
- var includeStories = [];
48
- var storyStatements = []; // get rid of all mdxType junk
49
-
50
- base.find(j.JSXAttribute).filter(function (attr) {
51
- return attr.node.name.name === 'mdxType';
52
- }).remove(); // parse <Meta title="..." />
53
-
54
- base.find(j.JSXElement).filter(function (elt) {
55
- return elt.node.openingElement.name.name === 'Meta';
56
- }).forEach(function (elt) {
57
- var attrs = parseJsxAttributes(elt.node.openingElement.attributes);
58
- Object.assign(meta, attrs);
59
- }); // parse <Story name="..." />
60
-
61
- base.find(j.JSXElement).filter(function (elt) {
62
- return elt.node.openingElement.name.name === 'Story';
63
- }).forEach(function (elt) {
64
- var attrs = parseJsxAttributes(elt.node.openingElement.attributes);
65
-
66
- if (attrs.name) {
67
- var storyKey = (0, _utils.sanitizeName)(attrs.name.value);
68
- includeStories.push(storyKey);
69
-
70
- if (storyKey === attrs.name.value) {
71
- delete attrs.name;
72
- }
73
-
74
- var body = elt.node.children.find(function (n) {
75
- return n.type !== 'JSXText';
76
- }) || j.literal(elt.node.children[0].value);
77
-
78
- if (body.type === 'JSXExpressionContainer') {
79
- body = body.expression;
80
- }
81
-
82
- storyStatements.push(j.exportDeclaration(false, j.variableDeclaration('const', [j.variableDeclarator(j.identifier(storyKey), body.type === 'ArrowFunctionExpression' ? body : j.arrowFunctionExpression([], body))])));
83
-
84
- if (Object.keys(attrs).length > 0) {
85
- storyStatements.push(j.assignmentStatement('=', j.memberExpression(j.identifier(storyKey), j.identifier('story')), genObjectExpression(attrs)));
86
- }
87
-
88
- storyStatements.push(j.emptyStatement());
89
- }
90
- });
91
-
92
- if (root.find(j.ExportNamedDeclaration).size() > 0) {
93
- meta.includeStories = j.arrayExpression(includeStories.map(function (key) {
94
- return j.literal(key);
95
- }));
96
- }
97
-
98
- var statements = [j.exportDefaultDeclaration(genObjectExpression(meta)), j.emptyStatement(), ...storyStatements];
99
- var lastStatement = root.find(j.Statement).at(-1);
100
- statements.reverse().forEach(function (stmt) {
101
- lastStatement.insertAfter(stmt);
102
- });
103
- base.remove();
104
- }
105
-
106
- root.find(j.ExportDefaultDeclaration).forEach(convertToStories); // strip out Story/Meta import and MDX junk
107
- // /* @jsx mdx */
108
-
109
- root.find(j.ImportDeclaration).at(0).replaceWith(function (exp) {
110
- return j.importDeclaration(exp.node.specifiers, exp.node.source);
111
- }); // import { Story, Meta } from '@storybook/addon-docs';
112
-
113
- root.find(j.ImportDeclaration).filter(function (exp) {
114
- return exp.node.source.value === '@storybook/addon-docs';
115
- }).remove(); // const makeShortcode = ...
116
- // const layoutProps = {};
117
- // const MDXLayout = 'wrapper';
118
-
119
- var MDX_DECLS = ['makeShortcode', 'layoutProps', 'MDXLayout'];
120
- root.find(j.VariableDeclaration).filter(function (decl) {
121
- return decl.node.declarations.length === 1 && MDX_DECLS.includes(decl.node.declarations[0].id.name);
122
- }).remove(); // const Source = makeShortcode('Source');
123
-
124
- root.find(j.VariableDeclarator).filter(function (expr) {
125
- return expr.node.init.type === 'CallExpression' && expr.node.init.callee.type === 'Identifier' && expr.node.init.callee.name === 'makeShortcode';
126
- }).remove(); // MDXContent.isMDXComponent = true;
127
-
128
- root.find(j.AssignmentExpression).filter(function (expr) {
129
- return expr.node.left.type === 'MemberExpression' && expr.node.left.object.type === 'Identifier' && expr.node.left.object.name === 'MDXContent';
130
- }).remove(); // Add back `import React from 'react';` which is implicit in MDX
131
-
132
- var react = root.find(j.ImportDeclaration).filter(function (decl) {
133
- return decl.node.source.value === 'react';
134
- });
135
-
136
- if (react.size() === 0) {
137
- root.find(j.Statement).at(0).insertBefore(j.importDeclaration([j.importDefaultSpecifier(j.identifier('React'))], j.literal('react')));
138
- }
139
-
140
- var source = root.toSource({
141
- trailingComma: true,
142
- quote: 'single',
143
- tabWidth: 2
144
- });
145
- return _prettier.default.format(source, {
146
- parser: 'babel',
147
- printWidth: 100,
148
- tabWidth: 2,
149
- bracketSpacing: true,
150
- trailingComma: 'es5',
151
- singleQuote: true
152
- });
153
- }
@@ -1,57 +0,0 @@
1
- "use strict";
2
-
3
- require("core-js/modules/es.symbol.description.js");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = transformer;
9
-
10
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
11
-
12
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
13
-
14
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
15
-
16
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
17
-
18
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
19
-
20
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
21
-
22
- function transformer(file, api) {
23
- var j = api.jscodeshift;
24
-
25
- var createImportDeclaration = function (specifiers, source) {
26
- return j.importDeclaration(specifiers.map(function (s) {
27
- return j.importSpecifier(j.identifier(s));
28
- }), j.literal(source));
29
- };
30
-
31
- var deprecates = {
32
- action: [['action'], '@storybook/addon-actions'],
33
- linkTo: [['linkTo'], '@storybook/addon-links']
34
- };
35
- var transform = j(file.source).find(j.ImportDeclaration).filter(function (i) {
36
- return i.value.source.value === '@storybook/react';
37
- }).forEach(function (i) {
38
- var importStatement = i.value;
39
- importStatement.specifiers = importStatement.specifiers.filter(function (specifier) {
40
- var item = deprecates[specifier.local.name];
41
-
42
- if (item) {
43
- var _item = _slicedToArray(item, 2),
44
- specifiers = _item[0],
45
- moduleName = _item[1];
46
-
47
- i.insertAfter(createImportDeclaration(specifiers, moduleName));
48
- return false;
49
- }
50
-
51
- return specifier;
52
- });
53
- });
54
- return transform.toSource({
55
- quote: 'single'
56
- });
57
- }