1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.addToDevDependenciesIfNotPresent = addToDevDependenciesIfNotPresent;
|
7 | exports.codeLog = codeLog;
|
8 | exports.commandLog = void 0;
|
9 | exports.copyComponents = copyComponents;
|
10 | exports.copyTemplate = copyTemplate;
|
11 | exports.getBabelDependencies = getBabelDependencies;
|
12 | exports.getBowerJson = getBowerJson;
|
13 | exports.getChars = getChars;
|
14 | exports.paddedLog = paddedLog;
|
15 | exports.readFileAsJson = readFileAsJson;
|
16 | exports.writeFileAsJson = void 0;
|
17 |
|
18 | require("core-js/modules/es.promise.js");
|
19 |
|
20 | var _path = _interopRequireDefault(require("path"));
|
21 |
|
22 | var _fs = _interopRequireDefault(require("fs"));
|
23 |
|
24 | var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
25 |
|
26 | var _chalk = _interopRequireDefault(require("chalk"));
|
27 |
|
28 | var _semver = require("@storybook/semver");
|
29 |
|
30 | var _stripJsonComments = _interopRequireDefault(require("strip-json-comments"));
|
31 |
|
32 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
33 |
|
34 |
|
35 | const logger = console;
|
36 |
|
37 | function getBowerJson() {
|
38 | const bowerJsonPath = _path.default.resolve('bower.json');
|
39 |
|
40 | if (!_fs.default.existsSync(bowerJsonPath)) {
|
41 | return false;
|
42 | }
|
43 |
|
44 | const jsonContent = _fs.default.readFileSync(bowerJsonPath, 'utf8');
|
45 |
|
46 | return JSON.parse(jsonContent);
|
47 | }
|
48 |
|
49 | function readFileAsJson(jsonPath, allowComments) {
|
50 | const filePath = _path.default.resolve(jsonPath);
|
51 |
|
52 | if (!_fs.default.existsSync(filePath)) {
|
53 | return false;
|
54 | }
|
55 |
|
56 | const fileContent = _fs.default.readFileSync(filePath, 'utf8');
|
57 |
|
58 | const jsonContent = allowComments ? (0, _stripJsonComments.default)(fileContent) : fileContent;
|
59 |
|
60 | try {
|
61 | return JSON.parse(jsonContent);
|
62 | } catch (e) {
|
63 | logger.error(_chalk.default.red(`Invalid json in file: ${filePath}`));
|
64 | throw e;
|
65 | }
|
66 | }
|
67 |
|
68 | const writeFileAsJson = (jsonPath, content) => {
|
69 | const filePath = _path.default.resolve(jsonPath);
|
70 |
|
71 | if (!_fs.default.existsSync(filePath)) {
|
72 | return false;
|
73 | }
|
74 |
|
75 | _fs.default.writeFileSync(filePath, `${JSON.stringify(content, null, 2)}\n`);
|
76 |
|
77 | return true;
|
78 | };
|
79 |
|
80 | exports.writeFileAsJson = writeFileAsJson;
|
81 |
|
82 | const commandLog = message => {
|
83 | process.stdout.write(_chalk.default.cyan(' • ') + message);
|
84 |
|
85 | return (errorMessage, errorInfo) => {
|
86 | if (errorMessage) {
|
87 | process.stdout.write(`. ${_chalk.default.red('✖')}\n`);
|
88 | logger.error(`\n ${_chalk.default.red(errorMessage)}`);
|
89 |
|
90 | if (!errorInfo) {
|
91 | return;
|
92 | }
|
93 |
|
94 | const newErrorInfo = errorInfo.split('\n').map(line => ` ${_chalk.default.dim(line)}`).join('\n');
|
95 | logger.error(`${newErrorInfo}\n`);
|
96 | return;
|
97 | }
|
98 |
|
99 | process.stdout.write(`. ${_chalk.default.green('✓')}\n`);
|
100 | };
|
101 | };
|
102 |
|
103 | exports.commandLog = commandLog;
|
104 |
|
105 | function paddedLog(message) {
|
106 | const newMessage = message.split('\n').map(line => ` ${line}`).join('\n');
|
107 | logger.log(newMessage);
|
108 | }
|
109 |
|
110 | function getChars(char, amount) {
|
111 | let line = '';
|
112 |
|
113 | for (let lc = 0; lc < amount; lc += 1) {
|
114 | line += char;
|
115 | }
|
116 |
|
117 | return line;
|
118 | }
|
119 |
|
120 | function codeLog(codeLines, leftPadAmount) {
|
121 | let maxLength = 0;
|
122 | const newLines = codeLines.map(line => {
|
123 | maxLength = line.length > maxLength ? line.length : maxLength;
|
124 | return line;
|
125 | });
|
126 | const finalResult = newLines.map(line => {
|
127 | const rightPadAmount = maxLength - line.length;
|
128 | let newLine = line + getChars(' ', rightPadAmount);
|
129 | newLine = getChars(' ', leftPadAmount || 2) + _chalk.default.inverse(` ${newLine} `);
|
130 | return newLine;
|
131 | }).join('\n');
|
132 | logger.log(finalResult);
|
133 | }
|
134 |
|
135 |
|
136 |
|
137 |
|
138 |
|
139 |
|
140 |
|
141 |
|
142 |
|
143 |
|
144 |
|
145 |
|
146 |
|
147 |
|
148 | async function getBabelDependencies(packageManager, packageJson) {
|
149 | const dependenciesToAdd = [];
|
150 | let babelLoaderVersion = '^8.0.0-0';
|
151 | const babelCoreVersion = packageJson.dependencies['babel-core'] || packageJson.devDependencies['babel-core'];
|
152 |
|
153 | if (!babelCoreVersion) {
|
154 | if (!packageJson.dependencies['@babel/core'] && !packageJson.devDependencies['@babel/core']) {
|
155 | const babelCoreInstallVersion = await packageManager.getVersion('@babel/core');
|
156 | dependenciesToAdd.push(`@babel/core@${babelCoreInstallVersion}`);
|
157 | }
|
158 | } else {
|
159 | const latestCompatibleBabelVersion = await packageManager.latestVersion('babel-core', babelCoreVersion);
|
160 |
|
161 | if ((0, _semver.satisfies)(latestCompatibleBabelVersion, '^6.0.0')) {
|
162 | babelLoaderVersion = '^7.0.0';
|
163 | }
|
164 | }
|
165 |
|
166 | if (!packageJson.dependencies['babel-loader'] && !packageJson.devDependencies['babel-loader']) {
|
167 | const babelLoaderInstallVersion = await packageManager.getVersion('babel-loader', babelLoaderVersion);
|
168 | dependenciesToAdd.push(`babel-loader@${babelLoaderInstallVersion}`);
|
169 | }
|
170 |
|
171 | return dependenciesToAdd;
|
172 | }
|
173 |
|
174 | function addToDevDependenciesIfNotPresent(packageJson, name, packageVersion) {
|
175 | if (!packageJson.dependencies[name] && !packageJson.devDependencies[name]) {
|
176 | packageJson.devDependencies[name] = packageVersion;
|
177 | }
|
178 | }
|
179 |
|
180 | function copyTemplate(templateRoot) {
|
181 | const templateDir = _path.default.resolve(templateRoot, `template-csf/`);
|
182 |
|
183 | if (!_fs.default.existsSync(templateDir)) {
|
184 | throw new Error(`Couldn't find template dir`);
|
185 | }
|
186 |
|
187 | _fsExtra.default.copySync(templateDir, '.', {
|
188 | overwrite: true
|
189 | });
|
190 | }
|
191 |
|
192 | function copyComponents(framework, language) {
|
193 | const languageFolderMapping = {
|
194 | javascript: 'js',
|
195 | typescript: 'ts'
|
196 | };
|
197 |
|
198 | const componentsPath = () => {
|
199 | const frameworkPath = `frameworks/${framework}`;
|
200 |
|
201 | const languageSpecific = _path.default.resolve(__dirname, `${frameworkPath}/${languageFolderMapping[language]}`);
|
202 |
|
203 | if (_fsExtra.default.existsSync(languageSpecific)) {
|
204 | return languageSpecific;
|
205 | }
|
206 |
|
207 | const jsFallback = _path.default.resolve(__dirname, `${frameworkPath}/${languageFolderMapping.javascript}`);
|
208 |
|
209 | if (_fsExtra.default.existsSync(jsFallback)) {
|
210 | return jsFallback;
|
211 | }
|
212 |
|
213 | const frameworkRootPath = _path.default.resolve(__dirname, frameworkPath);
|
214 |
|
215 | if (_fsExtra.default.existsSync(frameworkRootPath)) {
|
216 | return frameworkRootPath;
|
217 | }
|
218 |
|
219 | throw new Error(`Unsupported framework: ${framework}`);
|
220 | };
|
221 |
|
222 | const targetPath = () => {
|
223 | if (_fsExtra.default.existsSync('./src')) {
|
224 | return './src/stories';
|
225 | }
|
226 |
|
227 | return './stories';
|
228 | };
|
229 |
|
230 | const destinationPath = targetPath();
|
231 |
|
232 | _fsExtra.default.copySync(componentsPath(), destinationPath, {
|
233 | overwrite: true
|
234 | });
|
235 |
|
236 | _fsExtra.default.copySync(_path.default.resolve(__dirname, 'frameworks/common'), destinationPath, {
|
237 | overwrite: true
|
238 | });
|
239 | } |
\ | No newline at end of file |