@apollion-dsi/scripts 0.7.7

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 (121) hide show
  1. package/.prettierignore +6 -0
  2. package/.prettierrc.js +1 -0
  3. package/CHANGELOG.md +8 -0
  4. package/README.MD +91 -0
  5. package/audit-ci.json +5 -0
  6. package/eslint.config.js +33 -0
  7. package/lib/bin.d.ts +2 -0
  8. package/lib/bin.js +34 -0
  9. package/lib/bin.js.map +1 -0
  10. package/lib/command/build.d.ts +3 -0
  11. package/lib/command/build.js +145 -0
  12. package/lib/command/build.js.map +1 -0
  13. package/lib/command/create/helper.d.ts +7 -0
  14. package/lib/command/create/helper.js +98 -0
  15. package/lib/command/create/helper.js.map +1 -0
  16. package/lib/command/create/index.d.ts +1 -0
  17. package/lib/command/create/index.js +149 -0
  18. package/lib/command/create/index.js.map +1 -0
  19. package/lib/command/dev.d.ts +3 -0
  20. package/lib/command/dev.js +85 -0
  21. package/lib/command/dev.js.map +1 -0
  22. package/lib/command/test.d.ts +1 -0
  23. package/lib/command/test.js +32 -0
  24. package/lib/command/test.js.map +1 -0
  25. package/lib/config/env.d.ts +15 -0
  26. package/lib/config/env.js +78 -0
  27. package/lib/config/env.js.map +1 -0
  28. package/lib/config/modules.d.ts +15 -0
  29. package/lib/config/modules.js +92 -0
  30. package/lib/config/modules.js.map +1 -0
  31. package/lib/config/paths.d.ts +22 -0
  32. package/lib/config/paths.js +61 -0
  33. package/lib/config/paths.js.map +1 -0
  34. package/lib/config/shared.d.ts +24 -0
  35. package/lib/config/shared.js +14 -0
  36. package/lib/config/shared.js.map +1 -0
  37. package/lib/config/webpack.config.d.ts +187 -0
  38. package/lib/config/webpack.config.js +300 -0
  39. package/lib/config/webpack.config.js.map +1 -0
  40. package/lib/config/webpackDevServer.config.d.ts +34 -0
  41. package/lib/config/webpackDevServer.config.js +67 -0
  42. package/lib/config/webpackDevServer.config.js.map +1 -0
  43. package/lib/index.d.ts +3 -0
  44. package/lib/index.js +10 -0
  45. package/lib/index.js.map +1 -0
  46. package/lib/utils/FileSizeReporter.d.ts +12 -0
  47. package/lib/utils/FileSizeReporter.js +151 -0
  48. package/lib/utils/FileSizeReporter.js.map +1 -0
  49. package/lib/utils/InlineChunkHtmlPlugin.d.ts +8 -0
  50. package/lib/utils/InlineChunkHtmlPlugin.js +54 -0
  51. package/lib/utils/InlineChunkHtmlPlugin.js.map +1 -0
  52. package/lib/utils/InterpolateHtmlPlugin.d.ts +7 -0
  53. package/lib/utils/InterpolateHtmlPlugin.js +21 -0
  54. package/lib/utils/InterpolateHtmlPlugin.js.map +1 -0
  55. package/lib/utils/ModuleNotFoundPlugin.d.ts +5 -0
  56. package/lib/utils/ModuleNotFoundPlugin.js +11 -0
  57. package/lib/utils/ModuleNotFoundPlugin.js.map +1 -0
  58. package/lib/utils/ModuleScopePlugin.d.ts +5 -0
  59. package/lib/utils/ModuleScopePlugin.js +11 -0
  60. package/lib/utils/ModuleScopePlugin.js.map +1 -0
  61. package/lib/utils/WebpackDevServerUtils.d.ts +22 -0
  62. package/lib/utils/WebpackDevServerUtils.js +154 -0
  63. package/lib/utils/WebpackDevServerUtils.js.map +1 -0
  64. package/lib/utils/checkRequiredFiles.d.ts +1 -0
  65. package/lib/utils/checkRequiredFiles.js +28 -0
  66. package/lib/utils/checkRequiredFiles.js.map +1 -0
  67. package/lib/utils/devServerMiddleware.d.ts +8 -0
  68. package/lib/utils/devServerMiddleware.js +19 -0
  69. package/lib/utils/devServerMiddleware.js.map +1 -0
  70. package/lib/utils/formatWebpackMessages.d.ts +5 -0
  71. package/lib/utils/formatWebpackMessages.js +32 -0
  72. package/lib/utils/formatWebpackMessages.js.map +1 -0
  73. package/lib/utils/getPublicUrlOrPath.d.ts +1 -0
  74. package/lib/utils/getPublicUrlOrPath.js +39 -0
  75. package/lib/utils/getPublicUrlOrPath.js.map +1 -0
  76. package/lib/utils/printBuildError.d.ts +1 -0
  77. package/lib/utils/printBuildError.js +14 -0
  78. package/lib/utils/printBuildError.js.map +1 -0
  79. package/lib/utils/printHostingInstructions.d.ts +1 -0
  80. package/lib/utils/printHostingInstructions.js +12 -0
  81. package/lib/utils/printHostingInstructions.js.map +1 -0
  82. package/package.json +81 -0
  83. package/scripts/validate.sh +16 -0
  84. package/src/bin.ts +41 -0
  85. package/src/command/build.ts +188 -0
  86. package/src/command/create/helper.ts +97 -0
  87. package/src/command/create/index.ts +200 -0
  88. package/src/command/dev.ts +95 -0
  89. package/src/command/test.ts +33 -0
  90. package/src/config/env.ts +82 -0
  91. package/src/config/modules.ts +115 -0
  92. package/src/config/paths.ts +88 -0
  93. package/src/config/shared.ts +27 -0
  94. package/src/config/webpack.config.js +308 -0
  95. package/src/config/webpackDevServer.config.ts +78 -0
  96. package/src/index.ts +3 -0
  97. package/src/utils/FileSizeReporter.ts +168 -0
  98. package/src/utils/InlineChunkHtmlPlugin.js +67 -0
  99. package/src/utils/InterpolateHtmlPlugin.js +27 -0
  100. package/src/utils/ModuleNotFoundPlugin.js +13 -0
  101. package/src/utils/ModuleScopePlugin.js +13 -0
  102. package/src/utils/WebpackDevServerUtils.ts +179 -0
  103. package/src/utils/checkRequiredFiles.ts +22 -0
  104. package/src/utils/devServerMiddleware.ts +20 -0
  105. package/src/utils/formatWebpackMessages.ts +30 -0
  106. package/src/utils/getPublicUrlOrPath.ts +39 -0
  107. package/src/utils/printBuildError.ts +8 -0
  108. package/src/utils/printHostingInstructions.ts +12 -0
  109. package/template/.editorconfig +43 -0
  110. package/template/.prettierignore +6 -0
  111. package/template/.prettierrc.js +1 -0
  112. package/template/audit-ci.json +5 -0
  113. package/template/commitlint.config.js +1 -0
  114. package/template/eslint.config.js +3 -0
  115. package/template/jest.config.js +4 -0
  116. package/template/public/index.html +20 -0
  117. package/template/src/App.test.tsx +10 -0
  118. package/template/src/App.tsx +35 -0
  119. package/template/src/index.tsx +10 -0
  120. package/template/tsconfig.json +25 -0
  121. package/tsconfig.json +18 -0
@@ -0,0 +1,151 @@
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.measureFileSizesBeforeBuild = measureFileSizesBeforeBuild;
7
+ exports.printFileSizesAfterBuild = printFileSizesAfterBuild;
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const zlib_1 = __importDefault(require("zlib"));
11
+ const chalk_1 = __importDefault(require("chalk"));
12
+ function filesize(bytes) {
13
+ if (!Number.isFinite(bytes))
14
+ return '0 B';
15
+ const sign = bytes < 0 ? '-' : '';
16
+ const abs = Math.abs(bytes);
17
+ const units = ['B', 'KB', 'MB', 'GB', 'TB'];
18
+ let i = 0;
19
+ let n = abs;
20
+ while (n >= 1024 && i < units.length - 1) {
21
+ n /= 1024;
22
+ i++;
23
+ }
24
+ const value = i === 0 ? n.toFixed(0) : n.toFixed(2);
25
+ return `${sign}${value} ${units[i]}`;
26
+ }
27
+ function canReadAsset(asset) {
28
+ return (/\.(js|css)$/.test(asset) && !/service-worker\.js/.test(asset) && !/precache-manifest\.[0-9a-f]+\.js/.test(asset));
29
+ }
30
+ function gzipSize(buf) {
31
+ return zlib_1.default.gzipSync(buf, { level: 6 }).length;
32
+ }
33
+ function walkSync(dir, out = []) {
34
+ if (!fs_1.default.existsSync(dir))
35
+ return out;
36
+ for (const entry of fs_1.default.readdirSync(dir, { withFileTypes: true })) {
37
+ const full = path_1.default.join(dir, entry.name);
38
+ if (entry.isDirectory()) {
39
+ walkSync(full, out);
40
+ }
41
+ else if (entry.isFile()) {
42
+ out.push(full);
43
+ }
44
+ }
45
+ return out;
46
+ }
47
+ function removeFileNameHash(buildFolder, fileName) {
48
+ return fileName
49
+ .replace(buildFolder, '')
50
+ .replace(/\\/g, '/')
51
+ .replace(/\/?(.*)(\.[0-9a-f]+)(\.chunk)?(\.js|\.css)/, (_match, p1, _p2, p3, p4) => p1 + (p3 || '') + p4);
52
+ }
53
+ function getDifferenceLabel(currentSize, previousSize) {
54
+ const FIFTY_KILOBYTES = 1024 * 50;
55
+ const difference = currentSize - previousSize;
56
+ const fileSize = !Number.isNaN(difference) ? filesize(difference) : '';
57
+ if (difference >= FIFTY_KILOBYTES) {
58
+ return chalk_1.default.red('+' + fileSize);
59
+ }
60
+ else if (difference < FIFTY_KILOBYTES && difference > 0) {
61
+ return chalk_1.default.yellow('+' + fileSize);
62
+ }
63
+ else if (difference < 0) {
64
+ return chalk_1.default.green(fileSize);
65
+ }
66
+ return '';
67
+ }
68
+ function measureFileSizesBeforeBuild(buildFolder) {
69
+ return new Promise((resolve) => {
70
+ try {
71
+ const files = walkSync(buildFolder).filter(canReadAsset);
72
+ const sizes = {};
73
+ files.forEach((file) => {
74
+ try {
75
+ const contents = fs_1.default.readFileSync(file);
76
+ const key = removeFileNameHash(buildFolder, file);
77
+ sizes[key] = gzipSize(contents);
78
+ }
79
+ catch {
80
+ /* ignore */
81
+ }
82
+ });
83
+ resolve({ root: buildFolder, sizes });
84
+ }
85
+ catch {
86
+ resolve({ root: buildFolder, sizes: {} });
87
+ }
88
+ });
89
+ }
90
+ function printFileSizesAfterBuild(webpackStats, previousSizeMap, buildFolder, maxBundleGzipSize, maxChunkGzipSize) {
91
+ const root = previousSizeMap?.root || buildFolder;
92
+ const sizes = previousSizeMap?.sizes || {};
93
+ const statsArr = webpackStats && typeof webpackStats.stats !== 'undefined' ? webpackStats.stats : [webpackStats];
94
+ const assets = [];
95
+ statsArr.forEach((stats) => {
96
+ if (!stats)
97
+ return;
98
+ const statsAssets = stats.toJson({ all: false, assets: true }).assets || [];
99
+ statsAssets
100
+ .filter((a) => canReadAsset(a.name))
101
+ .forEach((asset) => {
102
+ const filePath = path_1.default.join(root, asset.name);
103
+ let size = 0;
104
+ try {
105
+ const contents = fs_1.default.readFileSync(filePath);
106
+ size = gzipSize(contents);
107
+ }
108
+ catch {
109
+ size = asset.size || 0;
110
+ }
111
+ const previousSize = sizes[removeFileNameHash(root, filePath)];
112
+ const difference = getDifferenceLabel(size, previousSize);
113
+ assets.push({
114
+ folder: path_1.default.join(path_1.default.basename(buildFolder), path_1.default.dirname(asset.name)),
115
+ name: path_1.default.basename(asset.name),
116
+ size,
117
+ sizeLabel: filesize(size) + (difference ? ' (' + difference + ')' : ''),
118
+ });
119
+ });
120
+ });
121
+ assets.sort((a, b) => b.size - a.size);
122
+ const longestSizeLabelLength = assets.length ? Math.max(...assets.map((a) => stripAnsi(a.sizeLabel).length)) : 0;
123
+ let suggestBundleSplitting = false;
124
+ assets.forEach((asset) => {
125
+ let { sizeLabel } = asset;
126
+ const sizeLength = stripAnsi(sizeLabel).length;
127
+ if (sizeLength < longestSizeLabelLength) {
128
+ sizeLabel += ' '.repeat(longestSizeLabelLength - sizeLength);
129
+ }
130
+ const isMainBundle = asset.name.indexOf('main.') === 0;
131
+ const maxRecommendedSize = isMainBundle ? maxBundleGzipSize : maxChunkGzipSize;
132
+ const isLarge = maxRecommendedSize && asset.size > maxRecommendedSize;
133
+ if (isLarge && /\.js$/.test(asset.name))
134
+ suggestBundleSplitting = true;
135
+ console.log(' ' +
136
+ (isLarge ? chalk_1.default.yellow(sizeLabel) : sizeLabel) +
137
+ ' ' +
138
+ chalk_1.default.dim(asset.folder + path_1.default.sep) +
139
+ chalk_1.default.cyan(asset.name));
140
+ });
141
+ if (suggestBundleSplitting) {
142
+ console.log();
143
+ console.log(chalk_1.default.yellow('The bundle size is significantly larger than recommended.'));
144
+ }
145
+ }
146
+ function stripAnsi(s) {
147
+ // eslint-disable-next-line no-control-regex
148
+ return s.replace(/\x1B\[[0-9;]*m/g, '');
149
+ }
150
+ exports.default = { measureFileSizesBeforeBuild, printFileSizesAfterBuild };
151
+ //# sourceMappingURL=FileSizeReporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileSizeReporter.js","sourceRoot":"","sources":["../../src/utils/FileSizeReporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export = InlineChunkHtmlPlugin;
2
+ declare class InlineChunkHtmlPlugin {
3
+ constructor(htmlWebpackPlugin: any, tests: any);
4
+ htmlWebpackPlugin: any;
5
+ tests: any;
6
+ getInlinedTag(publicPath: any, assets: any, tag: any): any;
7
+ apply(compiler: any): void;
8
+ }
@@ -0,0 +1,54 @@
1
+ 'use strict';
2
+ class InlineChunkHtmlPlugin {
3
+ constructor(htmlWebpackPlugin, tests) {
4
+ this.htmlWebpackPlugin = htmlWebpackPlugin;
5
+ this.tests = tests || [];
6
+ }
7
+ getInlinedTag(publicPath, assets, tag) {
8
+ if (tag.tagName !== 'script' || !(tag.attributes && tag.attributes.src)) {
9
+ return tag;
10
+ }
11
+ const scriptName = publicPath
12
+ ? tag.attributes.src.replace(publicPath, '')
13
+ : tag.attributes.src;
14
+ if (!this.tests.some((test) => scriptName.match(test))) {
15
+ return tag;
16
+ }
17
+ const asset = assets[scriptName];
18
+ if (asset == null) {
19
+ return tag;
20
+ }
21
+ return {
22
+ tagName: 'script',
23
+ innerHTML: asset.source(),
24
+ closeTag: true,
25
+ };
26
+ }
27
+ apply(compiler) {
28
+ let publicPath = compiler.options.output.publicPath || '';
29
+ if (publicPath && !publicPath.endsWith('/')) {
30
+ publicPath += '/';
31
+ }
32
+ compiler.hooks.compilation.tap('InlineChunkHtmlPlugin', (compilation) => {
33
+ const tagFunction = (tag) => this.getInlinedTag(publicPath, compilation.assets, tag);
34
+ const hooks = this.htmlWebpackPlugin.getHooks(compilation);
35
+ hooks.alterAssetTagGroups.tap('InlineChunkHtmlPlugin', (assets) => {
36
+ assets.headTags = assets.headTags.map(tagFunction);
37
+ assets.bodyTags = assets.bodyTags.map(tagFunction);
38
+ });
39
+ // Remove inlined assets from the output (best-effort)
40
+ compilation.hooks.processAssets.tap({
41
+ name: 'InlineChunkHtmlPlugin',
42
+ stage: compilation.constructor.PROCESS_ASSETS_STAGE_OPTIMIZE_INLINE || 700,
43
+ }, (assets) => {
44
+ Object.keys(assets).forEach((assetName) => {
45
+ if (this.tests.some((test) => assetName.match(test))) {
46
+ delete compilation.assets[assetName];
47
+ }
48
+ });
49
+ });
50
+ });
51
+ }
52
+ }
53
+ module.exports = InlineChunkHtmlPlugin;
54
+ //# sourceMappingURL=InlineChunkHtmlPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InlineChunkHtmlPlugin.js","sourceRoot":"","sources":["../../src/utils/InlineChunkHtmlPlugin.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export = InterpolateHtmlPlugin;
2
+ declare class InterpolateHtmlPlugin {
3
+ constructor(htmlWebpackPlugin: any, replacements: any);
4
+ htmlWebpackPlugin: any;
5
+ replacements: any;
6
+ apply(compiler: any): void;
7
+ }
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+ const escapeStringRegexp = (str) => str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
3
+ class InterpolateHtmlPlugin {
4
+ constructor(htmlWebpackPlugin, replacements) {
5
+ this.htmlWebpackPlugin = htmlWebpackPlugin;
6
+ this.replacements = replacements || {};
7
+ }
8
+ apply(compiler) {
9
+ compiler.hooks.compilation.tap('InterpolateHtmlPlugin', (compilation) => {
10
+ const hooks = this.htmlWebpackPlugin.getHooks(compilation);
11
+ hooks.afterTemplateExecution.tap('InterpolateHtmlPlugin', (data) => {
12
+ Object.keys(this.replacements).forEach((key) => {
13
+ const value = this.replacements[key];
14
+ data.html = data.html.replace(new RegExp('%' + escapeStringRegexp(key) + '%', 'g'), value == null ? '' : String(value));
15
+ });
16
+ });
17
+ });
18
+ }
19
+ }
20
+ module.exports = InterpolateHtmlPlugin;
21
+ //# sourceMappingURL=InterpolateHtmlPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InterpolateHtmlPlugin.js","sourceRoot":"","sources":["../../src/utils/InterpolateHtmlPlugin.js"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAE/E,MAAM,qBAAqB;IACzB,YAAY,iBAAiB,EAAE,YAAY;QACzC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,EAAE,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC,WAAW,EAAE,EAAE;YACtE,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC3D,KAAK,CAAC,sBAAsB,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC,IAAI,EAAE,EAAE;gBACjE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;oBAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;oBACrC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAC3B,IAAI,MAAM,CAAC,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,EACpD,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACnC,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,CAAC,OAAO,GAAG,qBAAqB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export = ModuleNotFoundPlugin;
2
+ declare class ModuleNotFoundPlugin {
3
+ constructor(_appPath: any, _yarnLockFile: any);
4
+ apply(_compiler: any): void;
5
+ }
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+ class ModuleNotFoundPlugin {
3
+ constructor(_appPath, _yarnLockFile) {
4
+ // no-op: original plugin provided nicer error messages.
5
+ }
6
+ apply(_compiler) {
7
+ // no-op
8
+ }
9
+ }
10
+ module.exports = ModuleNotFoundPlugin;
11
+ //# sourceMappingURL=ModuleNotFoundPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModuleNotFoundPlugin.js","sourceRoot":"","sources":["../../src/utils/ModuleNotFoundPlugin.js"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,MAAM,oBAAoB;IACxB,YAAY,QAAQ,EAAE,aAAa;QACjC,wDAAwD;IAC1D,CAAC;IAED,KAAK,CAAC,SAAS;QACb,QAAQ;IACV,CAAC;CACF;AAED,MAAM,CAAC,OAAO,GAAG,oBAAoB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export = ModuleScopePlugin;
2
+ declare class ModuleScopePlugin {
3
+ constructor(_appSrc: any, _allowedFiles: any);
4
+ apply(_resolver: any): void;
5
+ }
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+ class ModuleScopePlugin {
3
+ constructor(_appSrc, _allowedFiles) {
4
+ // no-op
5
+ }
6
+ apply(_resolver) {
7
+ // no-op
8
+ }
9
+ }
10
+ module.exports = ModuleScopePlugin;
11
+ //# sourceMappingURL=ModuleScopePlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModuleScopePlugin.js","sourceRoot":"","sources":["../../src/utils/ModuleScopePlugin.js"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,MAAM,iBAAiB;IACrB,YAAY,OAAO,EAAE,aAAa;QAChC,QAAQ;IACV,CAAC;IAED,KAAK,CAAC,SAAS;QACb,QAAQ;IACV,CAAC;CACF;AAED,MAAM,CAAC,OAAO,GAAG,iBAAiB,CAAC"}
@@ -0,0 +1,22 @@
1
+ export type PreparedUrls = {
2
+ lanUrlForConfig?: string;
3
+ lanUrlForTerminal?: string;
4
+ localUrlForTerminal: string;
5
+ localUrlForBrowser: string;
6
+ };
7
+ export declare function prepareUrls(protocol: string, host: string, port: number, pathname?: string): PreparedUrls;
8
+ export declare function choosePort(_host: string, defaultPort: number): Promise<number | null>;
9
+ type PrepareProxyResult = any[] | undefined;
10
+ export declare function prepareProxy(proxy: unknown, _appPublicFolder?: string, _servedPathname?: string): PrepareProxyResult;
11
+ export type CreateCompilerOptions = {
12
+ appName: string;
13
+ config: any;
14
+ urls: PreparedUrls;
15
+ useYarn?: boolean;
16
+ useTypeScript?: boolean;
17
+ tscCompileOnError?: boolean;
18
+ webpack: any;
19
+ devSocket?: unknown;
20
+ };
21
+ export declare function createCompiler({ appName, config, urls, webpack }: CreateCompilerOptions): any;
22
+ export {};
@@ -0,0 +1,154 @@
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.prepareUrls = prepareUrls;
7
+ exports.choosePort = choosePort;
8
+ exports.prepareProxy = prepareProxy;
9
+ exports.createCompiler = createCompiler;
10
+ const os_1 = __importDefault(require("os"));
11
+ const url_1 = __importDefault(require("url"));
12
+ const chalk_1 = __importDefault(require("chalk"));
13
+ const formatWebpackMessages_1 = __importDefault(require("./formatWebpackMessages"));
14
+ // detect-port@2 is ESM-only; load lazily via native dynamic import so we stay CJS-compatible.
15
+ // Wrapped in Function() so TypeScript's CommonJS emitter doesn't downlevel it to require().
16
+ const dynamicImport = new Function('specifier', 'return import(specifier)');
17
+ async function detectPort(port) {
18
+ const mod = await dynamicImport('detect-port');
19
+ const fn = mod.default ?? mod.detect ?? mod;
20
+ return fn(port);
21
+ }
22
+ function getLanIp() {
23
+ const ifaces = os_1.default.networkInterfaces();
24
+ for (const name of Object.keys(ifaces)) {
25
+ const list = ifaces[name];
26
+ if (!list)
27
+ continue;
28
+ for (const iface of list) {
29
+ if (iface.family === 'IPv4' && !iface.internal) {
30
+ return iface.address;
31
+ }
32
+ }
33
+ }
34
+ return undefined;
35
+ }
36
+ function formatUrl(protocol, hostname, port, pathname) {
37
+ return url_1.default.format({
38
+ protocol,
39
+ hostname,
40
+ port,
41
+ pathname: pathname || '/',
42
+ });
43
+ }
44
+ function prepareUrls(protocol, host, port, pathname = '/') {
45
+ const isUnspecifiedHost = host === '0.0.0.0' || host === '::';
46
+ let prettyHost = host;
47
+ let lanUrlForConfig;
48
+ let lanUrlForTerminal;
49
+ if (isUnspecifiedHost) {
50
+ prettyHost = 'localhost';
51
+ const lanIp = getLanIp();
52
+ if (lanIp) {
53
+ lanUrlForConfig = lanIp;
54
+ lanUrlForTerminal = formatUrl(protocol, lanIp, port, pathname);
55
+ }
56
+ }
57
+ const localUrlForTerminal = formatUrl(protocol, prettyHost, port, pathname);
58
+ const localUrlForBrowser = formatUrl(protocol, prettyHost, port, pathname);
59
+ return {
60
+ lanUrlForConfig,
61
+ lanUrlForTerminal,
62
+ localUrlForTerminal,
63
+ localUrlForBrowser,
64
+ };
65
+ }
66
+ async function choosePort(_host, defaultPort) {
67
+ try {
68
+ const port = await detectPort(defaultPort);
69
+ if (port === defaultPort)
70
+ return port;
71
+ console.log(chalk_1.default.yellow(`Port ${defaultPort} is in use; using ${port} instead.`));
72
+ return port;
73
+ }
74
+ catch (err) {
75
+ console.error(chalk_1.default.red(`Could not find a free port.`), err);
76
+ return null;
77
+ }
78
+ }
79
+ function prepareProxy(proxy, _appPublicFolder, _servedPathname) {
80
+ if (!proxy)
81
+ return undefined;
82
+ if (typeof proxy === 'string') {
83
+ return [
84
+ {
85
+ context: (pathname) => {
86
+ return pathname !== '/' && !pathname.startsWith('/sockjs-node') && !pathname.startsWith('/ws');
87
+ },
88
+ target: proxy,
89
+ changeOrigin: true,
90
+ secure: false,
91
+ },
92
+ ];
93
+ }
94
+ if (Array.isArray(proxy))
95
+ return proxy;
96
+ // proxy as object (legacy CRA shape: { "/api": { target: ... } })
97
+ if (typeof proxy === 'object') {
98
+ return Object.entries(proxy).map(([context, value]) => {
99
+ if (value && typeof value === 'object') {
100
+ return { context: [context], ...value };
101
+ }
102
+ return { context: [context], target: value };
103
+ });
104
+ }
105
+ return undefined;
106
+ }
107
+ function createCompiler({ appName, config, urls, webpack }) {
108
+ let compiler;
109
+ try {
110
+ compiler = webpack(config);
111
+ }
112
+ catch (err) {
113
+ console.log(chalk_1.default.red('Failed to compile.'));
114
+ console.log();
115
+ console.log(err.message || err);
116
+ console.log();
117
+ process.exit(1);
118
+ }
119
+ compiler.hooks.invalid.tap('invalid', () => {
120
+ console.log();
121
+ console.log('Compiling...');
122
+ });
123
+ compiler.hooks.done.tap('done', (stats) => {
124
+ const statsData = stats.toJson({ all: false, warnings: true, errors: true });
125
+ const messages = (0, formatWebpackMessages_1.default)(statsData);
126
+ const isSuccessful = !messages.errors.length && !messages.warnings.length;
127
+ if (isSuccessful) {
128
+ console.log(chalk_1.default.green(`Compiled successfully!`));
129
+ console.log();
130
+ console.log(`You can now view ${chalk_1.default.bold(appName)} in the browser.`);
131
+ if (urls.lanUrlForTerminal) {
132
+ console.log(` ${chalk_1.default.bold('Local:')} ${urls.localUrlForTerminal}`);
133
+ console.log(` ${chalk_1.default.bold('On Your Network:')} ${urls.lanUrlForTerminal}`);
134
+ }
135
+ else {
136
+ console.log(` ${urls.localUrlForTerminal}`);
137
+ }
138
+ return;
139
+ }
140
+ if (messages.errors.length) {
141
+ if (messages.errors.length > 1)
142
+ messages.errors.length = 1;
143
+ console.log(chalk_1.default.red('Failed to compile.\n'));
144
+ console.log(messages.errors.join('\n\n'));
145
+ return;
146
+ }
147
+ if (messages.warnings.length) {
148
+ console.log(chalk_1.default.yellow('Compiled with warnings.\n'));
149
+ console.log(messages.warnings.join('\n\n'));
150
+ }
151
+ });
152
+ return compiler;
153
+ }
154
+ //# sourceMappingURL=WebpackDevServerUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebpackDevServerUtils.js","sourceRoot":"","sources":["../../src/utils/WebpackDevServerUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export default function checkRequiredFiles(files: string[]): boolean;
@@ -0,0 +1,28 @@
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.default = checkRequiredFiles;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ function checkRequiredFiles(files) {
11
+ let currentFilePath;
12
+ try {
13
+ files.forEach((filePath) => {
14
+ currentFilePath = filePath;
15
+ fs_1.default.accessSync(filePath, fs_1.default.constants.F_OK);
16
+ });
17
+ return true;
18
+ }
19
+ catch (err) {
20
+ const dirName = currentFilePath ? path_1.default.dirname(currentFilePath) : '';
21
+ const fileName = currentFilePath ? path_1.default.basename(currentFilePath) : '';
22
+ console.log(chalk_1.default.red('Could not find a required file.'));
23
+ console.log(` ${chalk_1.default.red('Name')}: ${chalk_1.default.cyan(fileName)}`);
24
+ console.log(` ${chalk_1.default.red('Searched in')}: ${chalk_1.default.cyan(dirName)}`);
25
+ return false;
26
+ }
27
+ }
28
+ //# sourceMappingURL=checkRequiredFiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkRequiredFiles.js","sourceRoot":"","sources":["../../src/utils/checkRequiredFiles.ts"],"names":[],"mappings":";;;;;AAKA,qCAgBC;AArBD,4CAAoB;AACpB,gDAAwB;AAExB,kDAA0B;AAE1B,SAAwB,kBAAkB,CAAC,KAAe;IACxD,IAAI,eAAmC,CAAC;IACxC,IAAI,CAAC;QACH,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YACzB,eAAe,GAAG,QAAQ,CAAC;YAC3B,YAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,cAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrE,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { IncomingMessage, ServerResponse } from 'http';
2
+ type NextFn = (err?: unknown) => void;
3
+ type Middleware = (req: IncomingMessage, res: ServerResponse, next: NextFn) => void;
4
+ export declare function evalSourceMapMiddleware(_devServer?: unknown): Middleware;
5
+ export declare function ignoredFiles(appSrc: string): RegExp;
6
+ export declare function noopServiceWorkerMiddleware(_servedPath?: string): Middleware;
7
+ export declare function redirectServedPathMiddleware(_servedPath?: string): Middleware;
8
+ export {};
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.evalSourceMapMiddleware = evalSourceMapMiddleware;
4
+ exports.ignoredFiles = ignoredFiles;
5
+ exports.noopServiceWorkerMiddleware = noopServiceWorkerMiddleware;
6
+ exports.redirectServedPathMiddleware = redirectServedPathMiddleware;
7
+ function evalSourceMapMiddleware(_devServer) {
8
+ return (_req, _res, next) => next();
9
+ }
10
+ function ignoredFiles(appSrc) {
11
+ return new RegExp(`^(?!${appSrc}).+/node_modules/`, 'i');
12
+ }
13
+ function noopServiceWorkerMiddleware(_servedPath) {
14
+ return (_req, _res, next) => next();
15
+ }
16
+ function redirectServedPathMiddleware(_servedPath) {
17
+ return (_req, _res, next) => next();
18
+ }
19
+ //# sourceMappingURL=devServerMiddleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devServerMiddleware.js","sourceRoot":"","sources":["../../src/utils/devServerMiddleware.ts"],"names":[],"mappings":";;AAKA,0DAEC;AAED,oCAEC;AAED,kEAEC;AAED,oEAEC;AAdD,SAAgB,uBAAuB,CAAC,UAAoB;IAC1D,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AACtC,CAAC;AAED,SAAgB,YAAY,CAAC,MAAc;IACzC,OAAO,IAAI,MAAM,CAAC,OAAO,MAAM,mBAAmB,EAAE,GAAG,CAAC,CAAC;AAC3D,CAAC;AAED,SAAgB,2BAA2B,CAAC,WAAoB;IAC9D,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AACtC,CAAC;AAED,SAAgB,4BAA4B,CAAC,WAAoB;IAC/D,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AACtC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export type FormattedMessages = {
2
+ errors: string[];
3
+ warnings: string[];
4
+ };
5
+ export default function formatWebpackMessages(json: any): FormattedMessages;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = formatWebpackMessages;
4
+ function toString(item) {
5
+ if (item == null)
6
+ return '';
7
+ if (typeof item === 'string')
8
+ return item;
9
+ if (typeof item === 'object') {
10
+ const anyItem = item;
11
+ if (typeof anyItem.message === 'string') {
12
+ let result = '';
13
+ if (anyItem.moduleName)
14
+ result += `in ${anyItem.moduleName}\n\n`;
15
+ result += anyItem.message;
16
+ return result;
17
+ }
18
+ try {
19
+ return JSON.stringify(anyItem);
20
+ }
21
+ catch {
22
+ return String(anyItem);
23
+ }
24
+ }
25
+ return String(item);
26
+ }
27
+ function formatWebpackMessages(json) {
28
+ const errors = Array.isArray(json?.errors) ? json.errors.map(toString) : [];
29
+ const warnings = Array.isArray(json?.warnings) ? json.warnings.map(toString) : [];
30
+ return { errors, warnings };
31
+ }
32
+ //# sourceMappingURL=formatWebpackMessages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatWebpackMessages.js","sourceRoot":"","sources":["../../src/utils/formatWebpackMessages.ts"],"names":[],"mappings":";;AAyBA,wCAIC;AAxBD,SAAS,QAAQ,CAAC,IAAa;IAC7B,IAAI,IAAI,IAAI,IAAI;QAAE,OAAO,EAAE,CAAC;IAC5B,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAW,CAAC;QAC5B,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACxC,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,OAAO,CAAC,UAAU;gBAAE,MAAM,IAAI,MAAM,OAAO,CAAC,UAAU,MAAM,CAAC;YACjE,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;YAC1B,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED,SAAwB,qBAAqB,CAAC,IAAS;IACrD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5E,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC9B,CAAC"}
@@ -0,0 +1 @@
1
+ export default function getPublicUrlOrPath(isEnvDevelopment: boolean, homepage: string | undefined, envPublicUrl: string | undefined): string;