arui-scripts 0.0.0-next-20230725145300

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.
Files changed (170) hide show
  1. package/.browserslistrc +5 -0
  2. package/.turbo/turbo-build.log +0 -0
  3. package/.turbo/turbo-test.log +91 -0
  4. package/CHANGELOG.md +1032 -0
  5. package/README.md +716 -0
  6. package/bin/build.sh +2 -0
  7. package/build/bin/index.d.ts +3 -0
  8. package/build/bin/index.js +21 -0
  9. package/build/commands/archive-build/index.d.ts +1 -0
  10. package/build/commands/archive-build/index.js +80 -0
  11. package/build/commands/build/build-wrapper.d.ts +8 -0
  12. package/build/commands/build/build-wrapper.js +41 -0
  13. package/build/commands/build/client.d.ts +1 -0
  14. package/build/commands/build/client.js +41 -0
  15. package/build/commands/build/index.d.ts +1 -0
  16. package/build/commands/build/index.js +10 -0
  17. package/build/commands/build/server.d.ts +1 -0
  18. package/build/commands/build/server.js +29 -0
  19. package/build/commands/bundle-analyze/index.d.ts +1 -0
  20. package/build/commands/bundle-analyze/index.js +36 -0
  21. package/build/commands/changelog/index.d.ts +5 -0
  22. package/build/commands/changelog/index.js +116 -0
  23. package/build/commands/docker-build/index.d.ts +1 -0
  24. package/build/commands/docker-build/index.js +70 -0
  25. package/build/commands/docker-build-compiled/index.d.ts +1 -0
  26. package/build/commands/docker-build-compiled/index.js +52 -0
  27. package/build/commands/ensure-yarn/index.d.ts +0 -0
  28. package/build/commands/ensure-yarn/index.js +8 -0
  29. package/build/commands/start/client.d.ts +1 -0
  30. package/build/commands/start/client.js +8 -0
  31. package/build/commands/start/index.d.ts +1 -0
  32. package/build/commands/start/index.js +8 -0
  33. package/build/commands/start/print-compiler-output.d.ts +1 -0
  34. package/build/commands/start/print-compiler-output.js +15 -0
  35. package/build/commands/start/server.d.ts +1 -0
  36. package/build/commands/start/server.js +8 -0
  37. package/build/commands/start-prod/client.d.ts +1 -0
  38. package/build/commands/start-prod/client.js +8 -0
  39. package/build/commands/start-prod/index.d.ts +1 -0
  40. package/build/commands/start-prod/index.js +8 -0
  41. package/build/commands/start-prod/server.d.ts +1 -0
  42. package/build/commands/start-prod/server.js +8 -0
  43. package/build/commands/test/index.d.ts +3 -0
  44. package/build/commands/test/index.js +17 -0
  45. package/build/commands/util/check-required-files.d.ts +2 -0
  46. package/build/commands/util/check-required-files.js +67 -0
  47. package/build/commands/util/client-assets-sizes.d.ts +26 -0
  48. package/build/commands/util/client-assets-sizes.js +88 -0
  49. package/build/commands/util/docker-build.d.ts +21 -0
  50. package/build/commands/util/docker-build.js +89 -0
  51. package/build/commands/util/exec.d.ts +2 -0
  52. package/build/commands/util/exec.js +18 -0
  53. package/build/commands/util/format-webpack-messages.d.ts +11 -0
  54. package/build/commands/util/format-webpack-messages.js +93 -0
  55. package/build/commands/util/make-tmp-dir.d.ts +6 -0
  56. package/build/commands/util/make-tmp-dir.js +29 -0
  57. package/build/commands/util/run-client-dev-server.d.ts +2 -0
  58. package/build/commands/util/run-client-dev-server.js +47 -0
  59. package/build/commands/util/run-compilers.d.ts +1 -0
  60. package/build/commands/util/run-compilers.js +31 -0
  61. package/build/commands/util/run-server-watch-compiler.d.ts +2 -0
  62. package/build/commands/util/run-server-watch-compiler.js +21 -0
  63. package/build/commands/util/yarn.d.ts +5 -0
  64. package/build/commands/util/yarn.js +53 -0
  65. package/build/configs/app-configs/calculate-dependent-config.d.ts +76 -0
  66. package/build/configs/app-configs/calculate-dependent-config.js +37 -0
  67. package/build/configs/app-configs/get-defaults.d.ts +3 -0
  68. package/build/configs/app-configs/get-defaults.js +127 -0
  69. package/build/configs/app-configs/index.d.ts +6 -0
  70. package/build/configs/app-configs/index.js +22 -0
  71. package/build/configs/app-configs/types.d.ts +108 -0
  72. package/build/configs/app-configs/types.js +2 -0
  73. package/build/configs/app-configs/update-with-config-file.d.ts +2 -0
  74. package/build/configs/app-configs/update-with-config-file.js +23 -0
  75. package/build/configs/app-configs/update-with-env.d.ts +2 -0
  76. package/build/configs/app-configs/update-with-env.js +20 -0
  77. package/build/configs/app-configs/update-with-package.d.ts +2 -0
  78. package/build/configs/app-configs/update-with-package.js +10 -0
  79. package/build/configs/app-configs/update-with-presets.d.ts +2 -0
  80. package/build/configs/app-configs/update-with-presets.js +26 -0
  81. package/build/configs/app-configs/validate-settings-keys.d.ts +4 -0
  82. package/build/configs/app-configs/validate-settings-keys.js +14 -0
  83. package/build/configs/babel-client.d.ts +34 -0
  84. package/build/configs/babel-client.js +65 -0
  85. package/build/configs/babel-dependencies.d.ts +14 -0
  86. package/build/configs/babel-dependencies.js +39 -0
  87. package/build/configs/babel-server.d.ts +27 -0
  88. package/build/configs/babel-server.js +47 -0
  89. package/build/configs/config-extras/minimizers/imagemin/imagemin.d.ts +2 -0
  90. package/build/configs/config-extras/minimizers/imagemin/imagemin.js +42 -0
  91. package/build/configs/config-extras/minimizers/imagemin/index.d.ts +1 -0
  92. package/build/configs/config-extras/minimizers/imagemin/index.js +17 -0
  93. package/build/configs/config-extras/minimizers/index.d.ts +1 -0
  94. package/build/configs/config-extras/minimizers/index.js +17 -0
  95. package/build/configs/dev-server.d.ts +2 -0
  96. package/build/configs/dev-server.js +48 -0
  97. package/build/configs/jest/babel-transform.d.ts +2 -0
  98. package/build/configs/jest/babel-transform.js +4 -0
  99. package/build/configs/jest/css-mock.d.ts +1 -0
  100. package/build/configs/jest/css-mock.js +2 -0
  101. package/build/configs/jest/file-transform.d.ts +3 -0
  102. package/build/configs/jest/file-transform.js +9 -0
  103. package/build/configs/jest/index.d.ts +50 -0
  104. package/build/configs/jest/index.js +47 -0
  105. package/build/configs/modules.d.ts +16 -0
  106. package/build/configs/modules.js +101 -0
  107. package/build/configs/mq.css +22 -0
  108. package/build/configs/postcss.config.d.ts +25 -0
  109. package/build/configs/postcss.config.js +62 -0
  110. package/build/configs/postcss.d.ts +2 -0
  111. package/build/configs/postcss.js +9 -0
  112. package/build/configs/process-assets-plugin-output.d.ts +2 -0
  113. package/build/configs/process-assets-plugin-output.js +46 -0
  114. package/build/configs/server-externals-exemptions.d.ts +1 -0
  115. package/build/configs/server-externals-exemptions.js +21 -0
  116. package/build/configs/stats-options.d.ts +3 -0
  117. package/build/configs/stats-options.js +49 -0
  118. package/build/configs/supporting-browsers.d.ts +2 -0
  119. package/build/configs/supporting-browsers.js +13 -0
  120. package/build/configs/util/apply-overrides.d.ts +56 -0
  121. package/build/configs/util/apply-overrides.js +47 -0
  122. package/build/configs/util/check-node-version.d.ts +2 -0
  123. package/build/configs/util/check-node-version.js +7 -0
  124. package/build/configs/util/find-loader.d.ts +2 -0
  125. package/build/configs/util/find-loader.js +23 -0
  126. package/build/configs/util/get-entry.d.ts +9 -0
  127. package/build/configs/util/get-entry.js +22 -0
  128. package/build/configs/util/get-polyfills.d.ts +3 -0
  129. package/build/configs/util/get-polyfills.js +27 -0
  130. package/build/configs/util/install-sourcemap-support.d.ts +1 -0
  131. package/build/configs/util/install-sourcemap-support.js +7 -0
  132. package/build/configs/util/node-assets-ignore.d.ts +0 -0
  133. package/build/configs/util/node-assets-ignore.js +31 -0
  134. package/build/configs/util/noop.d.ts +1 -0
  135. package/build/configs/util/noop.js +2 -0
  136. package/build/configs/util/register-ts-node.d.ts +0 -0
  137. package/build/configs/util/register-ts-node.js +17 -0
  138. package/build/configs/util/resolve.d.ts +12 -0
  139. package/build/configs/util/resolve.js +30 -0
  140. package/build/configs/webpack.client.d.ts +10 -0
  141. package/build/configs/webpack.client.dev.d.ts +2 -0
  142. package/build/configs/webpack.client.dev.js +9 -0
  143. package/build/configs/webpack.client.js +402 -0
  144. package/build/configs/webpack.client.prod.d.ts +2 -0
  145. package/build/configs/webpack.client.prod.js +9 -0
  146. package/build/configs/webpack.server.d.ts +2 -0
  147. package/build/configs/webpack.server.dev.d.ts +2 -0
  148. package/build/configs/webpack.server.dev.js +9 -0
  149. package/build/configs/webpack.server.js +229 -0
  150. package/build/configs/webpack.server.prod.d.ts +2 -0
  151. package/build/configs/webpack.server.prod.js +9 -0
  152. package/build/index.d.ts +5 -0
  153. package/build/index.js +9 -0
  154. package/build/plugins/reload-server-webpack-plugin.d.ts +9 -0
  155. package/build/plugins/reload-server-webpack-plugin.js +42 -0
  156. package/build/templates/dockerfile-compiled.template.d.ts +2 -0
  157. package/build/templates/dockerfile-compiled.template.js +47 -0
  158. package/build/templates/dockerfile.template.d.ts +2 -0
  159. package/build/templates/dockerfile.template.js +32 -0
  160. package/build/templates/nginx.conf.template.d.ts +2 -0
  161. package/build/templates/nginx.conf.template.js +34 -0
  162. package/build/templates/start.template.d.ts +2 -0
  163. package/build/templates/start.template.js +37 -0
  164. package/build/tsconfig-local.tsbuildinfo +1 -0
  165. package/docs/modules.md +572 -0
  166. package/jest-preset.js +22 -0
  167. package/package.json +172 -0
  168. package/release.config.js +21 -0
  169. package/tsconfig-local.json +16 -0
  170. package/tsconfig.json +71 -0
@@ -0,0 +1,402 @@
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.createClientWebpackConfig = exports.createSingleClientWebpackConfig = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const webpack_1 = __importDefault(require("webpack"));
9
+ const webpack_manifest_plugin_1 = require("webpack-manifest-plugin");
10
+ const mini_css_extract_plugin_1 = __importDefault(require("mini-css-extract-plugin"));
11
+ const terser_webpack_plugin_1 = __importDefault(require("terser-webpack-plugin"));
12
+ const fork_ts_checker_webpack_plugin_1 = __importDefault(require("fork-ts-checker-webpack-plugin"));
13
+ const compression_webpack_plugin_1 = __importDefault(require("compression-webpack-plugin"));
14
+ const assets_webpack_plugin_1 = __importDefault(require("assets-webpack-plugin"));
15
+ const tsconfig_paths_webpack_plugin_1 = __importDefault(require("tsconfig-paths-webpack-plugin"));
16
+ const getCSSModuleLocalIdent_1 = __importDefault(require("react-dev-utils/getCSSModuleLocalIdent"));
17
+ const get_entry_1 = __importDefault(require("./util/get-entry"));
18
+ const app_configs_1 = __importDefault(require("./app-configs"));
19
+ const babel_client_1 = __importDefault(require("./babel-client"));
20
+ const postcss_1 = __importDefault(require("./postcss"));
21
+ const check_node_version_1 = __importDefault(require("./util/check-node-version"));
22
+ const babel_dependencies_1 = require("./babel-dependencies");
23
+ const react_refresh_typescript_1 = __importDefault(require("react-refresh-typescript"));
24
+ const react_refresh_webpack_plugin_1 = __importDefault(require("@pmmmwh/react-refresh-webpack-plugin"));
25
+ const case_sensitive_paths_webpack_plugin_1 = __importDefault(require("case-sensitive-paths-webpack-plugin"));
26
+ const webpack_deduplication_plugin_1 = require("webpack-deduplication-plugin");
27
+ const minimizers_1 = require("./config-extras/minimizers");
28
+ const mini_svg_data_uri_1 = __importDefault(require("mini-svg-data-uri"));
29
+ const process_assets_plugin_output_1 = require("./process-assets-plugin-output");
30
+ const modules_1 = require("./modules");
31
+ const PnpWebpackPlugin = require('pnp-webpack-plugin');
32
+ const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
33
+ const noopPath = require.resolve('./util/noop');
34
+ function getSingleEntry(entryPoint, mode) {
35
+ return [
36
+ ...(Array.isArray(app_configs_1.default.clientPolyfillsEntry) ? app_configs_1.default.clientPolyfillsEntry : [app_configs_1.default.clientPolyfillsEntry]),
37
+ ...entryPoint
38
+ ].filter(Boolean);
39
+ }
40
+ // Нам важно шарить assets plugin между разными сборками, чтобы файл не перезаписывался
41
+ const assetsPlugin = new assets_webpack_plugin_1.default({
42
+ path: app_configs_1.default.serverOutputPath,
43
+ processOutput: process_assets_plugin_output_1.processAssetsPluginOutput,
44
+ });
45
+ // Этот плагин нужен для того, чтобы клиентский код так же могу получить информацию о сборке.
46
+ // Это позволяет нам использовать данные о сборки на клиенте.
47
+ const clientAssetsPlugin = new assets_webpack_plugin_1.default({
48
+ path: app_configs_1.default.clientOutputPath,
49
+ processOutput: process_assets_plugin_output_1.processAssetsPluginOutput,
50
+ });
51
+ /**
52
+ * Создает конфигурацию для сборки клиентского кода. Может быть использована для создания дополнительных конфигураций.
53
+ * @param mode Режим сборки (dev или prod)
54
+ * @param entry Точка входа, любой валидный вход для webpack
55
+ * @param configName Имя конфигурации, если не указано, то используется имя по умолчанию
56
+ */
57
+ const createSingleClientWebpackConfig = (mode, entry, configName) => (Object.assign(Object.assign({}, (configName ? { name: configName } : {})), { target: 'web', mode: mode === 'dev' ? 'development' : 'production', devtool: mode === 'dev' ? app_configs_1.default.devSourceMaps : 'source-map', entry: (0, get_entry_1.default)(entry, getSingleEntry, mode),
58
+ // in production mode we need to fail on first error
59
+ bail: mode === 'prod', context: app_configs_1.default.cwd, output: {
60
+ assetModuleFilename: 'static/media/[name].[hash:8][ext]',
61
+ // Add /* filename */ comments to generated require()s in the output.
62
+ pathinfo: mode === 'dev',
63
+ path: app_configs_1.default.clientOutputPath,
64
+ publicPath: app_configs_1.default.publicPath,
65
+ filename: mode === 'dev' ? '[name].js' : '[name].[chunkhash:8].js',
66
+ chunkFilename: mode === 'dev'
67
+ ? `${configName ? `${configName}-` : ''}[name].js`
68
+ : `${configName ? `${configName}-` : ''}[name].[chunkhash:8].chunk.js`,
69
+ // Point sourcemap entries to original disk location (format as URL on Windows)
70
+ devtoolModuleFilenameTemplate: (info) => path_1.default
71
+ .relative(app_configs_1.default.appSrc, info.absoluteResourcePath)
72
+ .replace(/\\/g, '/'),
73
+ }, optimization: {
74
+ splitChunks: mode === 'prod'
75
+ ? {
76
+ chunks: "all",
77
+ cacheGroups: {
78
+ commons: {
79
+ chunks: "initial",
80
+ minChunks: 2,
81
+ maxInitialRequests: 5,
82
+ minSize: 0 // This is example is too small to create commons chunks
83
+ },
84
+ vendor: {
85
+ test: /node_modules/,
86
+ chunks: "initial",
87
+ name: (_, chunks, cacheGroupKey) => {
88
+ if (!configName) {
89
+ return 'vendor';
90
+ }
91
+ // Нам нужно сделать так, чтобы у разных конфигураций были разные имена чанков
92
+ const allChunksNames = chunks.map((item) => item.name).join('~');
93
+ return `${cacheGroupKey}-${allChunksNames}`;
94
+ },
95
+ priority: 10,
96
+ enforce: true
97
+ }
98
+ }
99
+ }
100
+ : false,
101
+ minimize: mode === 'prod',
102
+ minimizer: [
103
+ ...(0, minimizers_1.getImageMin)(),
104
+ // This is only used in production mode
105
+ new terser_webpack_plugin_1.default({
106
+ terserOptions: {
107
+ parse: {
108
+ // we want terser to parse ecma 8 code. However, we don't want it
109
+ // to apply any minfication steps that turns valid ecma 5 code
110
+ // into invalid ecma 5 code. This is why the 'compress' and 'output'
111
+ // sections only apply transformations that are ecma 5 safe
112
+ // https://github.com/facebook/create-react-app/pull/4234
113
+ ecma: 2017,
114
+ },
115
+ compress: {
116
+ ecma: 5,
117
+ // Disabled because of an issue with Uglify breaking seemingly valid code:
118
+ // https://github.com/facebook/create-react-app/issues/2376
119
+ // Pending further investigation:
120
+ // https://github.com/mishoo/UglifyJS2/issues/2011
121
+ comparisons: false,
122
+ // Disabled because of an issue with Terser breaking valid code:
123
+ // https://github.com/facebook/create-react-app/issues/5250
124
+ // Pending futher investigation:
125
+ // https://github.com/terser-js/terser/issues/120
126
+ inline: 2,
127
+ },
128
+ mangle: {
129
+ safari10: true,
130
+ },
131
+ output: {
132
+ ecma: 5,
133
+ comments: false,
134
+ // Turned on because emoji and regex is not minified properly using default
135
+ // https://github.com/facebook/create-react-app/issues/2488
136
+ ascii_only: true,
137
+ },
138
+ },
139
+ // Use multi-process parallel running to improve the build speed
140
+ // Default number of concurrent runs: os.cpus().length - 1
141
+ parallel: true,
142
+ }),
143
+ new CssMinimizerPlugin()
144
+ ].filter(Boolean),
145
+ nodeEnv: mode === 'prod' ? 'production' : false,
146
+ // Оптимизации времени билда, см https://webpack.js.org/guides/build-performance/
147
+ removeAvailableModules: mode !== 'dev',
148
+ removeEmptyChunks: mode !== 'dev',
149
+ }, resolve: {
150
+ // This allows you to set a fallback for where Webpack should look for modules.
151
+ // We placed these paths second because we want `node_modules` to "win"
152
+ // if there are any conflicts. This matches Node resolution mechanism.
153
+ // https://github.com/facebookincubator/create-react-app/issues/253
154
+ modules: ['node_modules', app_configs_1.default.appNodeModules],
155
+ // These are the reasonable defaults supported by the Node ecosystem.
156
+ // We also include JSX as a common component filename extension to support
157
+ // some tools, although we do not recommend using it, see:
158
+ // https://github.com/facebookincubator/create-react-app/issues/290
159
+ // `web` extension prefixes have been added for better support
160
+ // for React Native Web.
161
+ extensions: ['.web.js', '.mjs', '.cjs', '.js', '.json', '.web.jsx', '.jsx', '.ts', '.tsx'],
162
+ plugins: ([
163
+ (app_configs_1.default.tsconfig && new tsconfig_paths_webpack_plugin_1.default({
164
+ configFile: app_configs_1.default.tsconfig,
165
+ extensions: ['.web.js', '.mjs', '.js', '.json', '.web.jsx', '.jsx', '.ts', '.tsx']
166
+ })),
167
+ ].filter(Boolean)),
168
+ }, resolveLoader: {
169
+ plugins: [
170
+ PnpWebpackPlugin.moduleLoader(module),
171
+ ],
172
+ }, cache: mode === 'dev'
173
+ ? {
174
+ type: 'filesystem',
175
+ buildDependencies: {
176
+ config: [__filename],
177
+ },
178
+ }
179
+ : false, module: {
180
+ // typescript interface will be removed from modules, and we will get an error on correct code
181
+ // see https://github.com/webpack/webpack/issues/7378
182
+ strictExportPresence: !app_configs_1.default.tsconfig,
183
+ rules: [
184
+ {
185
+ // "oneOf" will traverse all following loaders until one will
186
+ // match the requirements. When no loader matches it will fall
187
+ // back to the "file" loader at the end of the loader list.
188
+ oneOf: ([
189
+ // Process JS with Babel.
190
+ {
191
+ test: app_configs_1.default.useTscLoader ? /\.(js|jsx|mjs|cjs)$/ : /\.(js|jsx|mjs|ts|tsx|cjs)$/,
192
+ include: app_configs_1.default.appSrc,
193
+ loader: require.resolve('babel-loader'),
194
+ options: Object.assign(Object.assign({}, babel_client_1.default), { cacheDirectory: mode === 'dev', cacheCompression: false, plugins: [
195
+ ...babel_client_1.default.plugins,
196
+ mode === 'dev' ? [require.resolve('react-refresh/babel'), { skipEnvCheck: true }] : undefined
197
+ ].filter(Boolean) }),
198
+ },
199
+ (app_configs_1.default.tsconfig && app_configs_1.default.useTscLoader) && {
200
+ test: /\.tsx?$/,
201
+ use: [
202
+ {
203
+ loader: require.resolve('babel-loader'),
204
+ options: Object.assign({
205
+ cacheDirectory: mode === 'dev',
206
+ cacheCompression: false,
207
+ plugins: mode === 'dev' ? [require.resolve('react-refresh/babel'), { skipEnvCheck: true }] : undefined,
208
+ }, babel_client_1.default)
209
+ },
210
+ {
211
+ loader: require.resolve('ts-loader'),
212
+ options: {
213
+ getCustomTransformers: () => ({
214
+ before: mode === 'dev' ? [(0, react_refresh_typescript_1.default)()] : [],
215
+ }),
216
+ onlyCompileBundledFiles: true,
217
+ transpileOnly: true,
218
+ happyPackMode: true,
219
+ configFile: app_configs_1.default.tsconfig
220
+ }
221
+ }
222
+ ]
223
+ },
224
+ // Process any JS outside of the app with Babel.
225
+ // Unlike the application JS, we only compile the standard ES features.
226
+ {
227
+ test: /\.(js|mjs)$/,
228
+ exclude: /@babel(?:\/|\\{1,2})runtime/,
229
+ loader: require.resolve('babel-loader'),
230
+ options: Object.assign(Object.assign({}, babel_dependencies_1.babelDependencies), { babelrc: false, configFile: false, compact: false, cacheDirectory: mode === 'dev', cacheCompression: false }),
231
+ },
232
+ // process simple css files with postcss loader and css loader
233
+ {
234
+ test: /\.css$/,
235
+ exclude: /\.module\.css$/,
236
+ use: [
237
+ {
238
+ loader: mini_css_extract_plugin_1.default.loader,
239
+ options: { publicPath: './' }
240
+ },
241
+ {
242
+ loader: require.resolve('css-loader'),
243
+ options: {
244
+ importLoaders: 1,
245
+ sourceMap: mode === 'dev',
246
+ },
247
+ },
248
+ {
249
+ loader: require.resolve('postcss-loader'),
250
+ options: {
251
+ postcssOptions: {
252
+ plugins: postcss_1.default,
253
+ }
254
+ },
255
+ },
256
+ ],
257
+ },
258
+ // process all *.module.css files with postcss loader and css loader
259
+ {
260
+ test: /\.module\.css$/,
261
+ use: [
262
+ {
263
+ loader: mini_css_extract_plugin_1.default.loader,
264
+ options: { publicPath: './' }
265
+ },
266
+ {
267
+ loader: require.resolve('css-loader'),
268
+ options: {
269
+ importLoaders: 1,
270
+ sourceMap: mode === 'dev',
271
+ modules: {
272
+ getLocalIdent: getCSSModuleLocalIdent_1.default
273
+ },
274
+ },
275
+ },
276
+ {
277
+ loader: require.resolve('postcss-loader'),
278
+ options: {
279
+ postcssOptions: {
280
+ plugins: postcss_1.default,
281
+ }
282
+ },
283
+ },
284
+ ],
285
+ },
286
+ {
287
+ test: /\.svg/,
288
+ type: 'asset',
289
+ generator: {
290
+ dataUrl: (content) => (0, mini_svg_data_uri_1.default)(content.toString())
291
+ },
292
+ parser: {
293
+ dataUrlCondition: {
294
+ maxSize: app_configs_1.default.dataUrlMaxSize
295
+ }
296
+ }
297
+ },
298
+ {
299
+ exclude: [/\.(js|jsx|mjs|cjs|ts|tsx)$/, /\.(html|ejs)$/, /\.json$/],
300
+ type: 'asset',
301
+ parser: {
302
+ dataUrlCondition: {
303
+ maxSize: app_configs_1.default.dataUrlMaxSize
304
+ }
305
+ }
306
+ },
307
+ ].filter(Boolean)),
308
+ },
309
+ // ** STOP ** Are you adding a new loader?
310
+ // Make sure to add the new loader(s) before asset modules
311
+ ],
312
+ }, plugins: ([
313
+ assetsPlugin,
314
+ clientAssetsPlugin,
315
+ new webpack_1.default.DefinePlugin(Object.assign({
316
+ // Tell Webpack to provide empty mocks for process.env.
317
+ 'process.env': '{}' }, (mode === 'dev'
318
+ ? { 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV) }
319
+ : {}))),
320
+ new mini_css_extract_plugin_1.default({
321
+ filename: mode === 'dev' ? '[name].css' : '[name].[contenthash:8].css',
322
+ chunkFilename: mode === 'dev' ? '[id].css' : '[name].[contenthash:8].chunk.css',
323
+ }),
324
+ app_configs_1.default.tsconfig !== null && new fork_ts_checker_webpack_plugin_1.default(),
325
+ // moment.js очень большая библиотека, которая включает в себя массу локализаций, которые мы не используем.
326
+ // Поэтому мы их просто игнорируем, чтобы не включать в сборку.
327
+ // https://github.com/jmblog/how-to-optimize-momentjs-with-webpack
328
+ new webpack_1.default.IgnorePlugin({
329
+ resourceRegExp: /^\.\/locale$/,
330
+ contextRegExp: /moment$/,
331
+ }),
332
+ // Этот плагин позволяет избавиться от одинаковых зависимостей, которые могут появляться из-за того, что одна и та же
333
+ // библиотека является зависимостью в разных версиях для разных библиотек.
334
+ // например проект зависит от lodash@1, библиотеки A и B зависят от lodash@2. Тогда lodash@2 будет включен в сборку
335
+ // дважды, что приведет к увеличению размера бандла (и это не лечится дедубликацией в yarn/npm).
336
+ // Сама реализация плагина зависит от yarn.lock, поэтому если мы используем npm, то плагин не будет работать.
337
+ app_configs_1.default.useYarn && new webpack_deduplication_plugin_1.WebpackDeduplicationPlugin({
338
+ cacheDir: path_1.default.join(app_configs_1.default.cwd, 'node_modules/.cache/deduplication-webpack-plugin/'),
339
+ rootPath: app_configs_1.default.cwd,
340
+ }),
341
+ // dev plugins:
342
+ mode === 'dev' && new react_refresh_webpack_plugin_1.default({
343
+ overlay: false,
344
+ }),
345
+ // Watcher doesn't work well if you mistype casing in a path so we use
346
+ // a plugin that prints an error when you attempt to do this.
347
+ // See https://github.com/facebookincubator/create-react-app/issues/240
348
+ mode === 'dev' && new case_sensitive_paths_webpack_plugin_1.default(),
349
+ // production plugins:
350
+ mode === 'prod' && new webpack_manifest_plugin_1.WebpackManifestPlugin(),
351
+ mode === 'prod' && new compression_webpack_plugin_1.default({
352
+ filename: '[file].gz',
353
+ algorithm: 'gzip',
354
+ test: /\.js$|\.css$|\.png$|\.svg$/,
355
+ threshold: 10240,
356
+ minRatio: 0.8
357
+ }),
358
+ mode === 'prod' && (0, check_node_version_1.default)(10) && new compression_webpack_plugin_1.default({
359
+ filename: '[file].br',
360
+ algorithm: 'brotliCompress',
361
+ test: /\.(js|css|html|svg)$/,
362
+ compressionOptions: {
363
+ level: 11,
364
+ },
365
+ threshold: 10240,
366
+ minRatio: 0.8,
367
+ }),
368
+ // Ignore prop-types packages in production mode
369
+ // This should works fine, since proptypes usage should be eliminated in production mode
370
+ mode === 'prod' && !app_configs_1.default.keepPropTypes && new webpack_1.default.NormalModuleReplacementPlugin(/^react-style-proptype$/, noopPath),
371
+ mode === 'prod' && !app_configs_1.default.keepPropTypes && new webpack_1.default.NormalModuleReplacementPlugin(/^thrift-services\/proptypes/, noopPath)
372
+ ].filter(Boolean)), experiments: {
373
+ backCompat: app_configs_1.default.webpack4Compatibility,
374
+ },
375
+ // Без этого комиляция трирегилась на изменение в node_modules и приводила к утечке памяти
376
+ watchOptions: {
377
+ ignored: new RegExp(app_configs_1.default.watchIgnorePath.join('|')),
378
+ aggregateTimeout: 100,
379
+ },
380
+ // Выключаем performance hints, т.к. размеры бандлов контролируются не в рамках arui-scripts
381
+ performance: {
382
+ hints: false,
383
+ } }));
384
+ exports.createSingleClientWebpackConfig = createSingleClientWebpackConfig;
385
+ const createClientWebpackConfig = (mode) => {
386
+ var _a;
387
+ const appWebpackConfig = (0, modules_1.patchMainWebpackConfigForModules)((0, exports.createSingleClientWebpackConfig)(mode, app_configs_1.default.clientEntry));
388
+ const exposedEmbeddedModules = (_a = app_configs_1.default.embeddedModules) === null || _a === void 0 ? void 0 : _a.exposes;
389
+ if (!exposedEmbeddedModules || Object.keys(exposedEmbeddedModules).length === 0) {
390
+ return appWebpackConfig;
391
+ }
392
+ // Добавляем отдельные конфигурации для embedded модулей
393
+ const modulesWebpackConfigs = Object.keys(exposedEmbeddedModules).map((moduleName) => {
394
+ const module = Object.assign({ name: moduleName }, exposedEmbeddedModules[moduleName]);
395
+ const config = (0, exports.createSingleClientWebpackConfig)(mode, {
396
+ [module.name]: module.entry,
397
+ }, module.name);
398
+ return (0, modules_1.patchWebpackConfigForEmbedded)(module, config);
399
+ });
400
+ return [appWebpackConfig, ...modulesWebpackConfigs];
401
+ };
402
+ exports.createClientWebpackConfig = createClientWebpackConfig;
@@ -0,0 +1,2 @@
1
+ declare const config: import("webpack").Configuration | import("webpack").Configuration[];
2
+ export default config;
@@ -0,0 +1,9 @@
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 apply_overrides_1 = __importDefault(require("./util/apply-overrides"));
7
+ const webpack_client_1 = require("./webpack.client");
8
+ const config = (0, apply_overrides_1.default)(['webpack', 'webpackClient', 'webpackProd', 'webpackClientProd'], (0, webpack_client_1.createClientWebpackConfig)('prod'), { createSingleClientWebpackConfig: webpack_client_1.createSingleClientWebpackConfig.bind(null, 'prod') });
9
+ exports.default = config;
@@ -0,0 +1,2 @@
1
+ import { Configuration } from 'webpack';
2
+ export declare const createServerConfig: (mode: 'dev' | 'prod') => Configuration;
@@ -0,0 +1,2 @@
1
+ declare const config: import("webpack").Configuration;
2
+ export default config;
@@ -0,0 +1,9 @@
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 apply_overrides_1 = __importDefault(require("./util/apply-overrides"));
7
+ const webpack_server_1 = require("./webpack.server");
8
+ const config = (0, apply_overrides_1.default)(['webpack', 'webpackServer', 'webpackDev', 'webpackServerDev'], (0, webpack_server_1.createServerConfig)('dev'));
9
+ exports.default = config;