@gravity-ui/app-builder 0.0.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 +14 -0
- package/LICENSE +21 -0
- package/README.md +9 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.js +46 -0
- package/dist/commands/build/build-lib.d.ts +2 -0
- package/dist/commands/build/build-lib.js +39 -0
- package/dist/commands/build/build-service/client.d.ts +2 -0
- package/dist/commands/build/build-service/client.js +8 -0
- package/dist/commands/build/build-service/index.d.ts +2 -0
- package/dist/commands/build/build-service/index.js +46 -0
- package/dist/commands/build/build-service/server.d.ts +2 -0
- package/dist/commands/build/build-service/server.js +44 -0
- package/dist/commands/build/index.d.ts +2 -0
- package/dist/commands/build/index.js +33 -0
- package/dist/commands/dev/client.d.ts +3 -0
- package/dist/commands/dev/client.js +98 -0
- package/dist/commands/dev/index.d.ts +2 -0
- package/dist/commands/dev/index.js +101 -0
- package/dist/commands/dev/server.d.ts +3 -0
- package/dist/commands/dev/server.js +38 -0
- package/dist/common/babel/index.d.ts +15 -0
- package/dist/common/babel/index.js +17 -0
- package/dist/common/babel/ui-preset.d.ts +1 -0
- package/dist/common/babel/ui-preset.js +71 -0
- package/dist/common/child-process/controllable-script.d.ts +19 -0
- package/dist/common/child-process/controllable-script.js +125 -0
- package/dist/common/child-process/utils.d.ts +1 -0
- package/dist/common/child-process/utils.js +68 -0
- package/dist/common/command.d.ts +4 -0
- package/dist/common/command.js +2 -0
- package/dist/common/config.d.ts +5 -0
- package/dist/common/config.js +155 -0
- package/dist/common/env.d.ts +1 -0
- package/dist/common/env.js +5 -0
- package/dist/common/library/index.d.ts +2 -0
- package/dist/common/library/index.js +302 -0
- package/dist/common/links/link.d.ts +1 -0
- package/dist/common/links/link.js +109 -0
- package/dist/common/links/unlink.d.ts +3 -0
- package/dist/common/links/unlink.js +72 -0
- package/dist/common/logger/colors.d.ts +12 -0
- package/dist/common/logger/colors.js +8 -0
- package/dist/common/logger/index.d.ts +47 -0
- package/dist/common/logger/index.js +120 -0
- package/dist/common/logger/pretty-time.d.ts +2 -0
- package/dist/common/logger/pretty-time.js +51 -0
- package/dist/common/models/index.d.ts +184 -0
- package/dist/common/models/index.js +11 -0
- package/dist/common/package.d.ts +19 -0
- package/dist/common/package.js +42 -0
- package/dist/common/paths.d.ts +20 -0
- package/dist/common/paths.js +28 -0
- package/dist/common/s3-upload/compress.d.ts +2 -0
- package/dist/common/s3-upload/compress.js +23 -0
- package/dist/common/s3-upload/index.d.ts +3 -0
- package/dist/common/s3-upload/index.js +7 -0
- package/dist/common/s3-upload/s3-client.d.ts +20 -0
- package/dist/common/s3-upload/s3-client.js +111 -0
- package/dist/common/s3-upload/upload.d.ts +14 -0
- package/dist/common/s3-upload/upload.js +117 -0
- package/dist/common/s3-upload/webpack-plugin.d.ts +18 -0
- package/dist/common/s3-upload/webpack-plugin.js +53 -0
- package/dist/common/tempData.d.ts +13 -0
- package/dist/common/tempData.js +43 -0
- package/dist/common/typescript/compile.d.ts +5 -0
- package/dist/common/typescript/compile.js +72 -0
- package/dist/common/typescript/diagnostic.d.ts +2 -0
- package/dist/common/typescript/diagnostic.js +46 -0
- package/dist/common/typescript/transformers.d.ts +2 -0
- package/dist/common/typescript/transformers.js +114 -0
- package/dist/common/typescript/utils.d.ts +10 -0
- package/dist/common/typescript/utils.js +53 -0
- package/dist/common/typescript/watch.d.ts +7 -0
- package/dist/common/typescript/watch.js +60 -0
- package/dist/common/utils.d.ts +2 -0
- package/dist/common/utils.js +19 -0
- package/dist/common/webpack/compile.d.ts +2 -0
- package/dist/common/webpack/compile.js +31 -0
- package/dist/common/webpack/config.d.ts +23 -0
- package/dist/common/webpack/config.js +662 -0
- package/dist/common/webpack/progress-plugin.d.ts +11 -0
- package/dist/common/webpack/progress-plugin.js +64 -0
- package/dist/common/webpack/public-path.d.ts +1 -0
- package/dist/common/webpack/public-path.js +2 -0
- package/dist/common/webpack/storybook.d.ts +13 -0
- package/dist/common/webpack/storybook.js +86 -0
- package/dist/common/webpack/utils.d.ts +7 -0
- package/dist/common/webpack/utils.js +71 -0
- package/dist/create-cli.d.ts +54 -0
- package/dist/create-cli.js +221 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +8 -0
- package/package.json +154 -0
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable quotes */
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
20
|
+
if (mod && mod.__esModule) return mod;
|
|
21
|
+
var result = {};
|
|
22
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
23
|
+
__setModuleDefault(result, mod);
|
|
24
|
+
return result;
|
|
25
|
+
};
|
|
26
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
27
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
28
|
+
};
|
|
29
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
+
exports.buildLibrary = void 0;
|
|
31
|
+
const path_1 = __importDefault(require("path"));
|
|
32
|
+
const fs_1 = __importDefault(require("fs"));
|
|
33
|
+
const child_process_1 = __importDefault(require("child_process"));
|
|
34
|
+
const babel = __importStar(require("@babel/core"));
|
|
35
|
+
const fast_glob_1 = __importDefault(require("fast-glob"));
|
|
36
|
+
const rimraf_1 = __importDefault(require("rimraf"));
|
|
37
|
+
const sass_1 = __importDefault(require("sass"));
|
|
38
|
+
const postcss_1 = __importDefault(require("postcss"));
|
|
39
|
+
const postcss_preset_env_1 = __importDefault(require("postcss-preset-env"));
|
|
40
|
+
const core_1 = require("@svgr/core");
|
|
41
|
+
const paths_1 = __importDefault(require("../../common/paths"));
|
|
42
|
+
const logger_1 = __importDefault(require("../../common/logger"));
|
|
43
|
+
const babel_1 = require("../babel");
|
|
44
|
+
function getFilePath(filePath, { ext, dir } = { dir: paths_1.default.src }) {
|
|
45
|
+
let filePathWithExt = filePath;
|
|
46
|
+
if (ext) {
|
|
47
|
+
filePathWithExt = filePath.replace(path_1.default.extname(filePath), `.${ext}`);
|
|
48
|
+
}
|
|
49
|
+
return dir ? path_1.default.resolve(dir, filePathWithExt) : filePathWithExt;
|
|
50
|
+
}
|
|
51
|
+
function errorHandlerFactory(msg) {
|
|
52
|
+
return (err) => {
|
|
53
|
+
if (err) {
|
|
54
|
+
if (msg) {
|
|
55
|
+
logger_1.default.error(msg);
|
|
56
|
+
}
|
|
57
|
+
logger_1.default.error(err.toString());
|
|
58
|
+
throw err;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function copyToCjs(file, inputDir = paths_1.default.libBuildEsm) {
|
|
63
|
+
const esmFile = getFilePath(file, { dir: inputDir });
|
|
64
|
+
const cjsFile = getFilePath(file, { dir: paths_1.default.libBuildCjs });
|
|
65
|
+
const cjsDir = path_1.default.dirname(cjsFile);
|
|
66
|
+
fs_1.default.mkdirSync(cjsDir, { recursive: true });
|
|
67
|
+
fs_1.default.copyFile(esmFile, cjsFile, errorHandlerFactory(`Failed to copy file to cjs ${esmFile}`));
|
|
68
|
+
}
|
|
69
|
+
function compileToCjs(code, file, inputSourceMap, sourceDir = paths_1.default.src, compiledDir = paths_1.default.libBuildCjs) {
|
|
70
|
+
const sourceFile = getFilePath(file, { dir: sourceDir });
|
|
71
|
+
const compiledCjsFile = getFilePath(file, { dir: compiledDir, ext: 'js' });
|
|
72
|
+
const compiledCjsDir = path_1.default.dirname(compiledCjsFile);
|
|
73
|
+
const sourcemapCjsFile = getFilePath(file, { dir: compiledDir, ext: 'js.map' });
|
|
74
|
+
const sourcemapCjsUrl = `// #sourceMappingURL=${path_1.default.basename(sourcemapCjsFile)}`;
|
|
75
|
+
const finalCode = code.replace(/import '(.*)\.css';/g, '');
|
|
76
|
+
fs_1.default.mkdirSync(compiledCjsDir, { recursive: true });
|
|
77
|
+
babel.transform(finalCode, {
|
|
78
|
+
filename: sourceFile,
|
|
79
|
+
plugins: ['@babel/plugin-transform-modules-commonjs', 'dynamic-import-node'],
|
|
80
|
+
sourceMaps: true,
|
|
81
|
+
inputSourceMap,
|
|
82
|
+
}, (err, transformedCjs) => {
|
|
83
|
+
var _a;
|
|
84
|
+
if (err) {
|
|
85
|
+
logger_1.default.error(`Source compilation errors for ${sourceFile}`);
|
|
86
|
+
logger_1.default.error(err.toString());
|
|
87
|
+
throw err;
|
|
88
|
+
}
|
|
89
|
+
else if (transformedCjs) {
|
|
90
|
+
let cjsCode = (_a = transformedCjs.code) !== null && _a !== void 0 ? _a : '';
|
|
91
|
+
cjsCode += (cjsCode.length ? '\n' : '') + sourcemapCjsUrl;
|
|
92
|
+
fs_1.default.writeFile(compiledCjsFile, cjsCode, errorHandlerFactory(`Source compilation has failed on writing ${compiledCjsFile}`));
|
|
93
|
+
if (transformedCjs.map) {
|
|
94
|
+
fs_1.default.writeFile(sourcemapCjsFile, JSON.stringify(transformedCjs.map), errorHandlerFactory(`Source compilation has failed on writing ${sourcemapCjsFile}`));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
function compileStyles(inputDir, outputDir, onFinish, additionalGlobs = []) {
|
|
100
|
+
const origStylesStream = fast_glob_1.default.stream(['**/*.{sass,scss,css}', ...additionalGlobs], {
|
|
101
|
+
cwd: inputDir,
|
|
102
|
+
});
|
|
103
|
+
origStylesStream.on('data', (file) => {
|
|
104
|
+
const origScssFile = getFilePath(file, { dir: inputDir });
|
|
105
|
+
const scssFile = getFilePath(file, { dir: outputDir });
|
|
106
|
+
const scssDir = path_1.default.dirname(scssFile);
|
|
107
|
+
fs_1.default.mkdirSync(scssDir, { recursive: true });
|
|
108
|
+
if (origScssFile !== scssFile) {
|
|
109
|
+
const content = fs_1.default
|
|
110
|
+
.readFileSync(origScssFile, 'utf-8')
|
|
111
|
+
.replace(/url\(([.]*)..\/assets\//g, 'url($1../../assets/');
|
|
112
|
+
fs_1.default.writeFileSync(scssFile, content);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
origStylesStream.on('finish', () => {
|
|
116
|
+
const globs = outputDir === paths_1.default.libBuildEsm
|
|
117
|
+
? ['**/*.{sass,scss,css}', '!cjs/**/*']
|
|
118
|
+
: ['**/*.{sass,scss,css}'];
|
|
119
|
+
const stylesStream = fast_glob_1.default.stream(globs, { cwd: outputDir });
|
|
120
|
+
stylesStream.on('data', async (file) => {
|
|
121
|
+
var _a;
|
|
122
|
+
const origScssFile = getFilePath(file, { dir: inputDir });
|
|
123
|
+
const scssFile = getFilePath(file, { dir: outputDir });
|
|
124
|
+
const cssFile = getFilePath(file, { dir: outputDir, ext: 'css' });
|
|
125
|
+
const sourceMapFile = getFilePath(file, { dir: outputDir, ext: 'css.map' });
|
|
126
|
+
try {
|
|
127
|
+
const sassTransformed = sass_1.default.renderSync({
|
|
128
|
+
file: scssFile,
|
|
129
|
+
sourceMap: true,
|
|
130
|
+
sourceMapContents: true,
|
|
131
|
+
outFile: cssFile,
|
|
132
|
+
importer: (url) => {
|
|
133
|
+
if (url.startsWith('~')) {
|
|
134
|
+
return { file: path_1.default.resolve(paths_1.default.appNodeModules, url.replace('~', '')) };
|
|
135
|
+
}
|
|
136
|
+
return new Error(`Unrecognized import ${url} in ${origScssFile}`);
|
|
137
|
+
},
|
|
138
|
+
});
|
|
139
|
+
if (sassTransformed === null || sassTransformed === void 0 ? void 0 : sassTransformed.css) {
|
|
140
|
+
const postcssTransformed = await (0, postcss_1.default)([(0, postcss_preset_env_1.default)()]).process(sassTransformed.css, {
|
|
141
|
+
to: cssFile.split('/').pop(),
|
|
142
|
+
map: { prev: (_a = sassTransformed.map) === null || _a === void 0 ? void 0 : _a.toString(), inline: false },
|
|
143
|
+
});
|
|
144
|
+
fs_1.default.writeFileSync(cssFile, postcssTransformed.css);
|
|
145
|
+
if (postcssTransformed.map) {
|
|
146
|
+
fs_1.default.writeFileSync(sourceMapFile, JSON.stringify(postcssTransformed.map.toJSON()));
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
catch (sassErr) {
|
|
151
|
+
logger_1.default.error(`Style compilation errors for ${scssFile}`);
|
|
152
|
+
throw sassErr;
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
if (onFinish) {
|
|
156
|
+
stylesStream.on('finish', onFinish);
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
const svgoPreset = {
|
|
161
|
+
name: 'preset-default',
|
|
162
|
+
params: { overrides: { removeViewBox: false } },
|
|
163
|
+
};
|
|
164
|
+
function buildLibrary(config) {
|
|
165
|
+
var _a, _b, _c;
|
|
166
|
+
const internalGlobs = (_c = (_b = (_a = config.lib) === null || _a === void 0 ? void 0 : _a.internalDirs) === null || _b === void 0 ? void 0 : _b.map((dir) => `!${dir}/**/*`)) !== null && _c !== void 0 ? _c : [];
|
|
167
|
+
rimraf_1.default.sync(paths_1.default.libBuild);
|
|
168
|
+
// sources compilation
|
|
169
|
+
const sourceStream = fast_glob_1.default.stream(['**/*.{js,jsx,ts,tsx}', '!**/*.d.ts', ...internalGlobs], {
|
|
170
|
+
cwd: paths_1.default.src,
|
|
171
|
+
});
|
|
172
|
+
sourceStream.on('data', (file) => {
|
|
173
|
+
const sourceFile = getFilePath(file);
|
|
174
|
+
const compiledFile = getFilePath(file, { dir: paths_1.default.libBuildEsm, ext: 'js' });
|
|
175
|
+
const compiledDir = path_1.default.dirname(compiledFile);
|
|
176
|
+
const sourcemapFile = getFilePath(file, { dir: paths_1.default.libBuildEsm, ext: 'js.map' });
|
|
177
|
+
const sourcemapUrl = `// #sourceMappingURL=${path_1.default.basename(sourcemapFile)}`;
|
|
178
|
+
const source = fs_1.default.readFileSync(sourceFile, 'utf-8');
|
|
179
|
+
fs_1.default.mkdirSync(compiledDir, { recursive: true });
|
|
180
|
+
babel.transform(source, {
|
|
181
|
+
filename: sourceFile,
|
|
182
|
+
presets: [(0, babel_1.babelPreset)(config)],
|
|
183
|
+
plugins: [
|
|
184
|
+
[
|
|
185
|
+
require.resolve('babel-plugin-inline-react-svg'),
|
|
186
|
+
{
|
|
187
|
+
ignorePattern: /^\./,
|
|
188
|
+
svgo: {
|
|
189
|
+
plugins: [svgoPreset],
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
],
|
|
193
|
+
require.resolve('babel-plugin-lodash'),
|
|
194
|
+
],
|
|
195
|
+
sourceMaps: true,
|
|
196
|
+
}, (err, transformed) => {
|
|
197
|
+
var _a, _b, _c, _d, _e;
|
|
198
|
+
if (err) {
|
|
199
|
+
logger_1.default.error(`Source compilation errors for ${sourceFile}`);
|
|
200
|
+
logger_1.default.error(err.toString());
|
|
201
|
+
throw err;
|
|
202
|
+
}
|
|
203
|
+
else if (transformed) {
|
|
204
|
+
let code = (_e = (_d = (_c = (_b = (_a = transformed.code) === null || _a === void 0 ? void 0 : _a.replace(/import '\.(.*)\.scss';/g, "import '.$1.css';")) === null || _b === void 0 ? void 0 : _b.replace(/import (\w*) from '\.\.\/(.*)\/assets\/(.*)\.svg';/g, "import $1 from '$2/assets/$3';")) === null || _c === void 0 ? void 0 : _c.replace(/export { *default as (\w*) *} from '\.\.\/(.*)\/assets\/(.*)\.svg';/g, "export { default as $1 } from '$2/assets/$3';")) === null || _d === void 0 ? void 0 : _d.replace(/import\('\.\.\/(.*)\/assets\/(.*)\.svg'\)/g, "import('$1/assets/$2')")) !== null && _e !== void 0 ? _e : '';
|
|
205
|
+
code += (code.length ? '\n' : '') + sourcemapUrl;
|
|
206
|
+
fs_1.default.writeFile(compiledFile, code, errorHandlerFactory(`Source compilation has failed on writing ${compiledFile}`));
|
|
207
|
+
if (transformed.map) {
|
|
208
|
+
fs_1.default.writeFile(sourcemapFile, JSON.stringify(transformed.map), errorHandlerFactory(`Source compilation has failed on writing ${sourcemapFile}`));
|
|
209
|
+
}
|
|
210
|
+
compileToCjs(code, file, transformed.map);
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
// type definitions compilation and type checking
|
|
215
|
+
const projectFilePath = path_1.default.resolve(paths_1.default.app, 'tsconfig.publish.json');
|
|
216
|
+
const tscExec = path_1.default.resolve(paths_1.default.appNodeModules, 'typescript/bin/tsc');
|
|
217
|
+
child_process_1.default.exec(`${tscExec} -p ${projectFilePath} --declaration --emitDeclarationOnly --outDir build/esm`, (error, stdout, stderr) => {
|
|
218
|
+
logger_1.default.message(stdout);
|
|
219
|
+
logger_1.default.error(stderr);
|
|
220
|
+
if (!error && !stderr) {
|
|
221
|
+
logger_1.default.message('Typechecking successfully completed');
|
|
222
|
+
const typingsStream = fast_glob_1.default.stream(['**/*.d.ts', '!cjs/**/*'], {
|
|
223
|
+
cwd: paths_1.default.libBuildEsm,
|
|
224
|
+
});
|
|
225
|
+
typingsStream.on('data', copyToCjs);
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
logger_1.default.error('Errors during library typechecking. Aborting...');
|
|
229
|
+
process.exit(1);
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
// css compilation
|
|
233
|
+
compileStyles(paths_1.default.libGlobalStyles, paths_1.default.libCompiledGlobalStyles, () => {
|
|
234
|
+
compileStyles(paths_1.default.src, paths_1.default.libBuildEsm, undefined, internalGlobs);
|
|
235
|
+
});
|
|
236
|
+
// icons compilation to js
|
|
237
|
+
const iconSvgoDefinition = `
|
|
238
|
+
import React from 'react';
|
|
239
|
+
const SvgComponent: React.ComponentType<React.SVGProps<SVGSVGElement>>;
|
|
240
|
+
export default SvgComponent;
|
|
241
|
+
`;
|
|
242
|
+
const iconBaseDefinition = `
|
|
243
|
+
const icon: string;
|
|
244
|
+
export default icon;
|
|
245
|
+
`;
|
|
246
|
+
const svgoRegEx = /assets\/icons/;
|
|
247
|
+
const iconsStream = fast_glob_1.default.stream(['**/*.svg', ...internalGlobs], { cwd: paths_1.default.libAssets });
|
|
248
|
+
iconsStream.on('data', async (file) => {
|
|
249
|
+
const iconFile = getFilePath(file, { dir: paths_1.default.libAssets });
|
|
250
|
+
const componentFile = getFilePath(file, { dir: paths_1.default.libCompiledAssetsEsm, ext: 'js' });
|
|
251
|
+
const componentDir = path_1.default.dirname(componentFile);
|
|
252
|
+
const componentDefFile = getFilePath(file, { dir: paths_1.default.libCompiledAssetsEsm, ext: 'd.ts' });
|
|
253
|
+
if (svgoRegEx.test(iconFile)) {
|
|
254
|
+
try {
|
|
255
|
+
const component = await (0, core_1.transform)(fs_1.default.readFileSync(iconFile, 'utf-8'));
|
|
256
|
+
babel.transform(component, {
|
|
257
|
+
filename: iconFile,
|
|
258
|
+
presets: [(0, babel_1.babelPreset)(config)],
|
|
259
|
+
sourceMaps: true,
|
|
260
|
+
}, (err, transformed) => {
|
|
261
|
+
if (err) {
|
|
262
|
+
logger_1.default.error(`Icons compilation errors for ${iconFile}`);
|
|
263
|
+
logger_1.default.error(err.toString());
|
|
264
|
+
throw err;
|
|
265
|
+
}
|
|
266
|
+
else if (transformed) {
|
|
267
|
+
if (transformed.code) {
|
|
268
|
+
fs_1.default.mkdirSync(componentDir, { recursive: true });
|
|
269
|
+
fs_1.default.writeFile(componentFile, transformed.code, errorHandlerFactory(`Icons compilation has failed on writing ${componentFile}`));
|
|
270
|
+
fs_1.default.writeFile(componentDefFile, iconBaseDefinition, errorHandlerFactory(`Icons compilations has failed on writing ${componentFile}`));
|
|
271
|
+
compileToCjs(transformed.code, file, transformed.map, paths_1.default.libAssets, paths_1.default.libCompiledAssetsCjs);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
catch (err) {
|
|
277
|
+
logger_1.default.error(`Svgo compilation errors for ${iconFile}`);
|
|
278
|
+
throw err;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
// eslint-disable-next-line security/detect-new-buffer
|
|
283
|
+
const encoded = new Buffer(fs_1.default.readFileSync(iconFile, 'utf-8')).toString('base64');
|
|
284
|
+
const code = `export default 'data:image/svg+xml;base64,${encoded}'`;
|
|
285
|
+
fs_1.default.mkdirSync(componentDir, { recursive: true });
|
|
286
|
+
fs_1.default.writeFile(componentFile, code, errorHandlerFactory(`Icons compilation has failed on writing ${componentFile}`));
|
|
287
|
+
fs_1.default.writeFile(componentDefFile, iconSvgoDefinition, errorHandlerFactory(`Icons compilations has failed on writing ${componentFile}`));
|
|
288
|
+
compileToCjs(code, file, undefined, paths_1.default.libAssets, paths_1.default.libCompiledAssetsCjs);
|
|
289
|
+
}
|
|
290
|
+
});
|
|
291
|
+
// file assets copying
|
|
292
|
+
const assetsStream = fast_glob_1.default.stream(['**/*.json', '**/*.d.ts', ...internalGlobs], { cwd: paths_1.default.src });
|
|
293
|
+
assetsStream.on('data', (file) => {
|
|
294
|
+
const assetFile = getFilePath(file);
|
|
295
|
+
const copiedAssetFile = getFilePath(file, { dir: paths_1.default.libBuildEsm });
|
|
296
|
+
const assetDir = path_1.default.dirname(copiedAssetFile);
|
|
297
|
+
fs_1.default.mkdirSync(assetDir, { recursive: true });
|
|
298
|
+
fs_1.default.copyFile(assetFile, copiedAssetFile, errorHandlerFactory(`Failed to copy file ${assetFile}`));
|
|
299
|
+
copyToCjs(file, paths_1.default.src);
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
exports.buildLibrary = buildLibrary;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function link(packageLocation: string): void;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const semver_1 = __importDefault(require("semver"));
|
|
9
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
10
|
+
const logger_1 = __importDefault(require("../logger"));
|
|
11
|
+
const package_1 = require("../package");
|
|
12
|
+
const paths_1 = __importDefault(require("../paths"));
|
|
13
|
+
const tempData_1 = __importDefault(require("../tempData"));
|
|
14
|
+
const unlink_1 = require("./unlink");
|
|
15
|
+
function createRecursive(modulePath) {
|
|
16
|
+
const { dir } = path_1.default.parse(modulePath);
|
|
17
|
+
if (!fs_extra_1.default.existsSync(dir)) {
|
|
18
|
+
fs_extra_1.default.mkdirpSync(dir);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
let unlinkTried = false;
|
|
22
|
+
function link(packageLocation) {
|
|
23
|
+
const linkedPackageLocation = packageLocation.startsWith('/')
|
|
24
|
+
? packageLocation
|
|
25
|
+
: path_1.default.resolve(paths_1.default.app, packageLocation);
|
|
26
|
+
if (linkedPackageLocation) {
|
|
27
|
+
const packageInfo = (0, package_1.readPackage)(linkedPackageLocation);
|
|
28
|
+
const packNodeModulesDir = path_1.default.resolve(packageInfo.location, 'node_modules');
|
|
29
|
+
const hiddenNodeModuleDir = path_1.default.resolve(packageInfo.location, '.node_modules');
|
|
30
|
+
const linkedPackage = {
|
|
31
|
+
name: packageInfo.name,
|
|
32
|
+
location: packageInfo.location,
|
|
33
|
+
nodeModules: [],
|
|
34
|
+
};
|
|
35
|
+
try {
|
|
36
|
+
fs_extra_1.default.moveSync(packNodeModulesDir, hiddenNodeModuleDir);
|
|
37
|
+
const packNodeModulesInfo = (0, package_1.readNodeModules)(hiddenNodeModuleDir);
|
|
38
|
+
const appNodeModulesInfo = (0, package_1.readNodeModules)(paths_1.default.appNodeModules);
|
|
39
|
+
if (packageInfo.peerDependencies) {
|
|
40
|
+
Object.keys(packageInfo.peerDependencies).forEach((peerDep) => {
|
|
41
|
+
if (!appNodeModulesInfo.keys.includes(peerDep)) {
|
|
42
|
+
logger_1.default.warning(`Application doesn't have ${peerDep}, required in peerDependencies of linked package`);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
const appDepVersion = appNodeModulesInfo.data[peerDep].version;
|
|
46
|
+
const requiredVersion = packageInfo.peerDependencies[peerDep];
|
|
47
|
+
if (!semver_1.default.satisfies(appDepVersion, requiredVersion)) {
|
|
48
|
+
logger_1.default.warning(`Application dep ${peerDep} version ${appDepVersion} doesn't satisfy linked package requirement of ${requiredVersion}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
const nodeModulesToLink = packageInfo.devDependencies
|
|
54
|
+
? lodash_1.default.difference(packNodeModulesInfo.keys, Object.keys(packageInfo.devDependencies))
|
|
55
|
+
: packNodeModulesInfo.keys;
|
|
56
|
+
nodeModulesToLink.forEach((key) => {
|
|
57
|
+
const nodeModule = packNodeModulesInfo.data[key];
|
|
58
|
+
if (appNodeModulesInfo.keys.includes(key)) {
|
|
59
|
+
if (!semver_1.default.satisfies(appNodeModulesInfo.data[key].version, nodeModule.version)) {
|
|
60
|
+
const newPath = path_1.default.resolve(packNodeModulesDir, nodeModule.name);
|
|
61
|
+
createRecursive(newPath);
|
|
62
|
+
fs_extra_1.default.symlinkSync(nodeModule.location, newPath);
|
|
63
|
+
linkedPackage.nodeModules.push(newPath);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
const newPath = path_1.default.resolve(paths_1.default.appNodeModules, nodeModule.name);
|
|
68
|
+
createRecursive(newPath);
|
|
69
|
+
fs_extra_1.default.symlinkSync(nodeModule.location, path_1.default.resolve(paths_1.default.appNodeModules, nodeModule.name));
|
|
70
|
+
linkedPackage.package = newPath;
|
|
71
|
+
linkedPackage.nodeModules.push(newPath);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
const newPath = path_1.default.resolve(paths_1.default.appNodeModules, packageInfo.name);
|
|
75
|
+
if (fs_extra_1.default.existsSync(newPath)) {
|
|
76
|
+
const hiddenPackage = path_1.default.resolve(paths_1.default.appNodeModules, `.${packageInfo.name}`);
|
|
77
|
+
fs_extra_1.default.moveSync(newPath, hiddenPackage);
|
|
78
|
+
linkedPackage.restorePackageFrom = hiddenPackage;
|
|
79
|
+
}
|
|
80
|
+
fs_extra_1.default.symlinkSync(packageInfo.location, newPath);
|
|
81
|
+
linkedPackage.package = newPath;
|
|
82
|
+
if (fs_extra_1.default.existsSync(path_1.default.resolve(linkedPackage.location, 'tsconfig.json'))) {
|
|
83
|
+
linkedPackage.typescript = true;
|
|
84
|
+
}
|
|
85
|
+
let { linkedPackages } = tempData_1.default.getSettings();
|
|
86
|
+
if (!linkedPackages) {
|
|
87
|
+
linkedPackages = { data: {}, keys: [] };
|
|
88
|
+
}
|
|
89
|
+
linkedPackages.data[linkedPackage.name] = linkedPackage;
|
|
90
|
+
linkedPackages.keys.push(linkedPackage.name);
|
|
91
|
+
tempData_1.default.saveSettings({ linkedPackages });
|
|
92
|
+
logger_1.default.success(`Link to ${linkedPackage.name} was successfully created`);
|
|
93
|
+
}
|
|
94
|
+
catch (e) {
|
|
95
|
+
(0, unlink_1.unlinkPackage)(linkedPackage);
|
|
96
|
+
if (!unlinkTried) {
|
|
97
|
+
unlinkTried = true;
|
|
98
|
+
link(packageLocation);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
logger_1.default.logError(e);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
logger_1.default.error('Package to link should be specified');
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
exports.default = link;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.unlinkPackage = void 0;
|
|
7
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
|
+
const rimraf_1 = __importDefault(require("rimraf"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const logger_1 = __importDefault(require("../logger"));
|
|
11
|
+
const tempData_1 = __importDefault(require("../tempData"));
|
|
12
|
+
// import paths from '../paths';
|
|
13
|
+
function unlinkPackage(linkedPackage) {
|
|
14
|
+
logger_1.default.warning('Cleaning up created links...');
|
|
15
|
+
linkedPackage.nodeModules.forEach(fs_extra_1.default.unlinkSync);
|
|
16
|
+
if (linkedPackage.package) {
|
|
17
|
+
fs_extra_1.default.unlinkSync(linkedPackage.package);
|
|
18
|
+
}
|
|
19
|
+
if (linkedPackage.package && linkedPackage.restorePackageFrom) {
|
|
20
|
+
fs_extra_1.default.moveSync(linkedPackage.restorePackageFrom, linkedPackage.package);
|
|
21
|
+
}
|
|
22
|
+
const packNodeModulesDir = path_1.default.resolve(linkedPackage.location, 'node_modules');
|
|
23
|
+
const hiddenNodeModuleDir = path_1.default.resolve(linkedPackage.location, '.node_modules');
|
|
24
|
+
rimraf_1.default.sync(packNodeModulesDir);
|
|
25
|
+
fs_extra_1.default.moveSync(hiddenNodeModuleDir, packNodeModulesDir);
|
|
26
|
+
const { linkedPackages } = tempData_1.default.getSettings();
|
|
27
|
+
if (linkedPackages) {
|
|
28
|
+
delete linkedPackages.data[linkedPackage.name];
|
|
29
|
+
linkedPackages.keys.splice(linkedPackages.keys.indexOf(linkedPackage.name), 1);
|
|
30
|
+
tempData_1.default.saveSettings({ linkedPackages });
|
|
31
|
+
}
|
|
32
|
+
logger_1.default.success(`${linkedPackage.name} package was unlinked`);
|
|
33
|
+
}
|
|
34
|
+
exports.unlinkPackage = unlinkPackage;
|
|
35
|
+
function unlink() {
|
|
36
|
+
const { linkedPackages } = tempData_1.default.getSettings();
|
|
37
|
+
if (linkedPackages) {
|
|
38
|
+
// const packageToUnlink = config.subcommands && config.subcommands[0];
|
|
39
|
+
//
|
|
40
|
+
// if (packageToUnlink) {
|
|
41
|
+
// let foundPackage: LinkedPackage | undefined;
|
|
42
|
+
// if (linkedPackages.data[packageToUnlink]) {
|
|
43
|
+
// foundPackage = linkedPackages.data[packageToUnlink];
|
|
44
|
+
// } else {
|
|
45
|
+
// const locationToFind = packageToUnlink.startsWith('/')
|
|
46
|
+
// ? packageToUnlink
|
|
47
|
+
// : path.resolve(paths.app, packageToUnlink);
|
|
48
|
+
//
|
|
49
|
+
// foundPackage = linkedPackages.keys
|
|
50
|
+
// .map((key) => linkedPackages.data[key])
|
|
51
|
+
// .find(({location}) => location === locationToFind);
|
|
52
|
+
// }
|
|
53
|
+
//
|
|
54
|
+
// if (foundPackage) {
|
|
55
|
+
// unlinkPackage(foundPackage);
|
|
56
|
+
// } else {
|
|
57
|
+
// logger.error(`Package '${packageToUnlink}' not found`);
|
|
58
|
+
// }
|
|
59
|
+
// } else {
|
|
60
|
+
const { length } = linkedPackages.keys;
|
|
61
|
+
linkedPackages.keys.forEach((key) => unlinkPackage(linkedPackages.data[key]));
|
|
62
|
+
tempData_1.default.clearSetting('linkedPackages');
|
|
63
|
+
if (length > 1) {
|
|
64
|
+
logger_1.default.success('All packages were unlinked');
|
|
65
|
+
}
|
|
66
|
+
// }
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
logger_1.default.warning('Found no packages to unlink');
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.default = unlink;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
export declare const colors: chalk.Chalk & chalk.ChalkFunction & {
|
|
3
|
+
supportsColor: false | chalk.ColorSupport;
|
|
4
|
+
Level: chalk.Level;
|
|
5
|
+
Color: ("black" | "red" | "green" | "yellow" | "blue" | "magenta" | "cyan" | "white" | "gray" | "grey" | "blackBright" | "redBright" | "greenBright" | "yellowBright" | "blueBright" | "magentaBright" | "cyanBright" | "whiteBright") | ("bgBlack" | "bgRed" | "bgGreen" | "bgYellow" | "bgBlue" | "bgMagenta" | "bgCyan" | "bgWhite" | "bgGray" | "bgGrey" | "bgBlackBright" | "bgRedBright" | "bgGreenBright" | "bgYellowBright" | "bgBlueBright" | "bgMagentaBright" | "bgCyanBright" | "bgWhiteBright");
|
|
6
|
+
ForegroundColor: "black" | "red" | "green" | "yellow" | "blue" | "magenta" | "cyan" | "white" | "gray" | "grey" | "blackBright" | "redBright" | "greenBright" | "yellowBright" | "blueBright" | "magentaBright" | "cyanBright" | "whiteBright";
|
|
7
|
+
BackgroundColor: "bgBlack" | "bgRed" | "bgGreen" | "bgYellow" | "bgBlue" | "bgMagenta" | "bgCyan" | "bgWhite" | "bgGray" | "bgGrey" | "bgBlackBright" | "bgRedBright" | "bgGreenBright" | "bgYellowBright" | "bgBlueBright" | "bgMagentaBright" | "bgCyanBright" | "bgWhiteBright";
|
|
8
|
+
Modifiers: "bold" | "reset" | "dim" | "italic" | "underline" | "inverse" | "hidden" | "strikethrough" | "visible";
|
|
9
|
+
stderr: chalk.Chalk & {
|
|
10
|
+
supportsColor: false | chalk.ColorSupport;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.colors = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
exports.colors = chalk_1.default;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { ExecException } from 'child_process';
|
|
2
|
+
export interface BaseLogger {
|
|
3
|
+
message: (msg: string) => void;
|
|
4
|
+
warning: (msg: string) => void;
|
|
5
|
+
verbose: (msg: string) => void;
|
|
6
|
+
success: (msg: string) => void;
|
|
7
|
+
error: (msg: string) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare class Logger implements BaseLogger {
|
|
10
|
+
colors: import("chalk").Chalk & import("chalk").ChalkFunction & {
|
|
11
|
+
supportsColor: false | import("chalk").ColorSupport;
|
|
12
|
+
Level: import("chalk").Level;
|
|
13
|
+
Color: ("black" | "red" | "green" | "yellow" | "blue" | "magenta" | "cyan" | "white" | "gray" | "grey" | "blackBright" | "redBright" | "greenBright" | "yellowBright" | "blueBright" | "magentaBright" | "cyanBright" | "whiteBright") | ("bgBlack" | "bgRed" | "bgGreen" | "bgYellow" | "bgBlue" | "bgMagenta" | "bgCyan" | "bgWhite" | "bgGray" | "bgGrey" | "bgBlackBright" | "bgRedBright" | "bgGreenBright" | "bgYellowBright" | "bgBlueBright" | "bgMagentaBright" | "bgCyanBright" | "bgWhiteBright");
|
|
14
|
+
ForegroundColor: "black" | "red" | "green" | "yellow" | "blue" | "magenta" | "cyan" | "white" | "gray" | "grey" | "blackBright" | "redBright" | "greenBright" | "yellowBright" | "blueBright" | "magentaBright" | "cyanBright" | "whiteBright";
|
|
15
|
+
BackgroundColor: "bgBlack" | "bgRed" | "bgGreen" | "bgYellow" | "bgBlue" | "bgMagenta" | "bgCyan" | "bgWhite" | "bgGray" | "bgGrey" | "bgBlackBright" | "bgRedBright" | "bgGreenBright" | "bgYellowBright" | "bgBlueBright" | "bgMagentaBright" | "bgCyanBright" | "bgWhiteBright";
|
|
16
|
+
Modifiers: "bold" | "reset" | "dim" | "italic" | "underline" | "inverse" | "hidden" | "strikethrough" | "visible";
|
|
17
|
+
stderr: import("chalk").Chalk & {
|
|
18
|
+
supportsColor: false | import("chalk").ColorSupport;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
private _verbose;
|
|
22
|
+
private _namespace;
|
|
23
|
+
private _timestamp;
|
|
24
|
+
private _color;
|
|
25
|
+
constructor(namespace?: string, verbose?: boolean);
|
|
26
|
+
print: (message: string, { verbose, wrap }?: {
|
|
27
|
+
verbose?: boolean | undefined;
|
|
28
|
+
wrap?: boolean | undefined;
|
|
29
|
+
}) => void;
|
|
30
|
+
printLn: (message: string, { verbose }?: {
|
|
31
|
+
verbose?: boolean | undefined;
|
|
32
|
+
}) => void;
|
|
33
|
+
clearLine: () => void;
|
|
34
|
+
status: (msg: string) => void;
|
|
35
|
+
message: (...args: string[]) => void;
|
|
36
|
+
success: (...args: string[]) => void;
|
|
37
|
+
warning: (...args: string[]) => void;
|
|
38
|
+
error: (...args: string[]) => void;
|
|
39
|
+
logError: (errorMeta: string, error?: Error | ExecException | null) => void;
|
|
40
|
+
panic: (errorMeta: string, error?: Error) => never;
|
|
41
|
+
setVerbose: (verbose: boolean) => void;
|
|
42
|
+
get isVerbose(): boolean;
|
|
43
|
+
verbose: (...args: string[]) => void;
|
|
44
|
+
setNamespace: (namespace: string) => void;
|
|
45
|
+
}
|
|
46
|
+
declare const _default: Logger;
|
|
47
|
+
export default _default;
|