@zohodesk/client_build_tool 0.0.1-0.exp.0.0.3
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/.babelrc +12 -0
- package/.lintstagedrc +3 -0
- package/.vscode/settings.json +5 -0
- package/CHANGELOG.md +84 -0
- package/ConfigurationDocumentation.md +567 -0
- package/ContributionGuide.md +2 -0
- package/NOTES-Dec12.md +12 -0
- package/README.md +184 -0
- package/README_backup.md +100 -0
- package/TODO.md +35 -0
- package/cli.js +31 -0
- package/docs/BabelCustomizations.md +55 -0
- package/docs/CSSCustomPluginsDocumentation.md +71 -0
- package/docs/CustomChunksConfiguration.md +0 -0
- package/docs/EFCFileTemplate.md +0 -0
- package/docs/MockApi.md +61 -0
- package/docs/NameTemplateUtility.md +93 -0
- package/docs/ServiseWorkerTemplate.md +0 -0
- package/docs/SupportedBrowserVersions.md +61 -0
- package/helpDocs/check.js +7 -0
- package/helpDocs/commmands/build.md +0 -0
- package/helpDocs/commmands/start.md +0 -0
- package/helpDocs/examples/buildWithContentHash.md +0 -0
- package/helpDocs/examples/startDevServer.md +0 -0
- package/helpDocs/examples/startWithMockAPI.md +0 -0
- package/helpDocs/node18-env.md +30 -0
- package/helpDocs/troubleshootings/NewMachineSetup.md +71 -0
- package/helpDocs/troubleshootings/README.md +9 -0
- package/helpDocs/troubleshootings/hg_install.sh +18 -0
- package/helpDocs/troubleshootings/newMachineMac.sh +86 -0
- package/helpDocs/troubleshootings/newMachineUbundu.bash +84 -0
- package/lib/allCommandsConfigs.js +25 -0
- package/lib/commands/build/commandExecutor.js +17 -0
- package/lib/commands/build/config.js +12 -0
- package/lib/commands/build/optionsProcessor.js +35 -0
- package/lib/commands/build/preProcessor.js +12 -0
- package/lib/commands/buildEs/commandExecutor.js +33 -0
- package/lib/commands/buildEs/config.js +12 -0
- package/lib/commands/buildEs/preProcessor.js +17 -0
- package/lib/commands/buildLib/commandExecutor.js +33 -0
- package/lib/commands/buildLib/config.js +12 -0
- package/lib/commands/buildLib/preProcessor.js +17 -0
- package/lib/commands/mockserver/commandExecutor.js +43 -0
- package/lib/commands/mockserver/config.js +12 -0
- package/lib/commands/pre_process/commandExecutor.js +18 -0
- package/lib/commands/pre_process/config.js +12 -0
- package/lib/commands/start/commandExecutor.js +12 -0
- package/lib/commands/start/config.js +12 -0
- package/lib/commands/start/optionsProcessor.js +30 -0
- package/lib/commands/start/preProcessor.js +12 -0
- package/lib/commands/template/commandExecutor.js +28 -0
- package/lib/commands/template/config.js +12 -0
- package/lib/commands/version/commandExecutor.js +14 -0
- package/lib/commands/version/config.js +12 -0
- package/lib/commandsRouter.js +74 -0
- package/lib/index.js +12 -0
- package/lib/logger.js +34 -0
- package/lib/schemas/applyValuesToSchema/index.js +34 -0
- package/lib/schemas/applyValuesToSchema/isObject.js +10 -0
- package/lib/schemas/applyValuesToSchema/isValid.js +14 -0
- package/lib/schemas/cliArgsToObject.js +39 -0
- package/lib/schemas/defaultConfigValues.js +393 -0
- package/lib/schemas/defaultConfigValuesOnly.js +200 -0
- package/lib/schemas/deprecatedOptionsHandler.js +67 -0
- package/lib/schemas/getNpmVersion.js +22 -0
- package/lib/schemas/giveDefaultValue.js +18 -0
- package/lib/schemas/npmConfigToObject.js +35 -0
- package/lib/schemas/readOptions.js +87 -0
- package/lib/schemas/readOptionsForConfigFile.js +42 -0
- package/lib/shared/babel/addDefaultPlugins.js +15 -0
- package/lib/shared/babel/babelWebConfig.js +54 -0
- package/lib/shared/babel/babel_plugins/removeAttributesPlugin.js +23 -0
- package/lib/shared/babel/getBabelPlugin.js +42 -0
- package/lib/shared/babel/runBabelForJSFile.js +24 -0
- package/lib/shared/babel/runBabelForTsFile.js +30 -0
- package/lib/shared/bundler/webpack/common/decidePublicPath.js +57 -0
- package/lib/shared/bundler/webpack/common/hashUtils.js +20 -0
- package/lib/shared/bundler/webpack/common/libAlias.js +31 -0
- package/lib/shared/bundler/webpack/common/modeUtils.js +39 -0
- package/lib/shared/bundler/webpack/common/nameTemplates.js +105 -0
- package/lib/shared/bundler/webpack/common/resourceBasedPublicPath.js +21 -0
- package/lib/shared/bundler/webpack/configCustomLoaders.js +10 -0
- package/lib/shared/bundler/webpack/cssLoaders.js +16 -0
- package/lib/shared/bundler/webpack/custom_plugins/BundleIntegrityReport/index.js +83 -0
- package/lib/shared/bundler/webpack/custom_plugins/CdnChangePlugin/index.js +119 -0
- package/lib/shared/bundler/webpack/custom_plugins/CdnChangePlugin/webpackCustomJsUrlLoader.js +46 -0
- package/lib/shared/bundler/webpack/custom_plugins/CustomScriptLoadingPlugin.js +109 -0
- package/lib/shared/bundler/webpack/custom_plugins/EFCTemplatePlugin.js +112 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nNumericIndexPlugin/I18nNumericIndexHtmlInjectorPlugin.js +47 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nNumericIndexPlugin/I18nNumericIndexPlugin.js +190 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/ContributionGuide.md +11 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nFilesEmitPlugin.js +174 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nKeysIdentifer.js +76 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nRuntimeDealerPlugin.js +223 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nSplit.md +95 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/LocaleChunkAssetsStore.js +73 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/ModulesI18nKeysStore.js +88 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/README.md +25 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/constants.js +29 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/createHash.js +24 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/getI18nLoadingRuntimeModule.js +76 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/index.js +39 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/iterateModulesInChunk.js +50 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/optionsHandler.js +68 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/pathCreator.js +23 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/readI18nValues.js +29 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/templateFileName.js +43 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/templateHashHelpers.js +77 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/collectAstKeys.js +98 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/collectI18nKeys.js +66 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/getChunkModules.js +13 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/hashUtils.js +19 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/index.js +31 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/propertiesUtils.js +129 -0
- package/lib/shared/bundler/webpack/custom_plugins/InitialHtmlPlugin.js +60 -0
- package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/addFilesNamesToManifestJson.js +30 -0
- package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/createInitialEntries.js +23 -0
- package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/createManifestJson.js +35 -0
- package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/findInitialFileNames.js +18 -0
- package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/index.js +46 -0
- package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/removeHashFromFileName.js +18 -0
- package/lib/shared/bundler/webpack/custom_plugins/RTLSplitPlugin.js +1 -0
- package/lib/shared/bundler/webpack/custom_plugins/ResourceHintsPlugin.js +193 -0
- package/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/OverwriteCssPathForRTL.js +62 -0
- package/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/RtlCssPlugin.js +84 -0
- package/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/RtrSplit.md +34 -0
- package/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/replaceCssDirTemplate.js +27 -0
- package/lib/shared/bundler/webpack/custom_plugins/RuntimeResourceCleanup/index.js +73 -0
- package/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/classHandling.js +20 -0
- package/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/index.js +78 -0
- package/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/selectorWeightPrefixAdder.js +51 -0
- package/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/windowsModification.js +16 -0
- package/lib/shared/bundler/webpack/custom_plugins/ServiceWorkerPlugin.js +120 -0
- package/lib/shared/bundler/webpack/custom_plugins/ServiceWorkerPluginUtils.js +13 -0
- package/lib/shared/bundler/webpack/custom_plugins/SourceMapPlugin/index.js +71 -0
- package/lib/shared/bundler/webpack/custom_plugins/TPHashMappingPlugin/addHashToFilePath.js +22 -0
- package/lib/shared/bundler/webpack/custom_plugins/TPHashMappingPlugin/index.js +55 -0
- package/lib/shared/bundler/webpack/custom_plugins/UglifyCSSPlugin/index.js.js +49 -0
- package/lib/shared/bundler/webpack/custom_plugins/VariableConversionCollector/ErrorHandler.js +62 -0
- package/lib/shared/bundler/webpack/custom_plugins/VariableConversionCollector/index.js +362 -0
- package/lib/shared/bundler/webpack/custom_plugins/custom_attribute_plugin/index.js +80 -0
- package/lib/shared/bundler/webpack/custom_plugins/emitAsset.js +14 -0
- package/lib/shared/bundler/webpack/custom_plugins/getInitialAssetsFuncTemplate.js +57 -0
- package/lib/shared/bundler/webpack/custom_plugins/getInitialI18nAssetsArrayStr.js +87 -0
- package/lib/shared/bundler/webpack/defaultVendorPatternList.js +13 -0
- package/lib/shared/bundler/webpack/devtoolConfig.js +13 -0
- package/lib/shared/bundler/webpack/entryConfig.js +28 -0
- package/lib/shared/bundler/webpack/externals.js +17 -0
- package/lib/shared/bundler/webpack/getCSSLoaders.js +29 -0
- package/lib/shared/bundler/webpack/getFilenameFromModule.js +24 -0
- package/lib/shared/bundler/webpack/jsLoaders.js +30 -0
- package/lib/shared/bundler/webpack/loaderConfigs/assetLoaders.js +12 -0
- package/lib/shared/bundler/webpack/loaderConfigs/babelLoaderConfig.js +18 -0
- package/lib/shared/bundler/webpack/loaderConfigs/checkIsPatternsMatchFilename.js +56 -0
- package/lib/shared/bundler/webpack/loaderConfigs/configHtmlTemplateLoader.js +18 -0
- package/lib/shared/bundler/webpack/loaderConfigs/configPostCssLoader.js +37 -0
- package/lib/shared/bundler/webpack/loaderConfigs/configWebWorkerLoader.js +21 -0
- package/lib/shared/bundler/webpack/loaderConfigs/configsAssetsLoaders.js +86 -0
- package/lib/shared/bundler/webpack/loaderConfigs/cssClassNameGenerate.js +65 -0
- package/lib/shared/bundler/webpack/loaderConfigs/getCssLoaderOptions.js +21 -0
- package/lib/shared/bundler/webpack/loaderConfigs/i18nIdReplaceLoaderConfig.js +94 -0
- package/lib/shared/bundler/webpack/loaders/i18nIdReplaceLoader.js +201 -0
- package/lib/shared/bundler/webpack/loaders/miniCssFallBackLoader.js +7 -0
- package/lib/shared/bundler/webpack/loaders/workerLoader.js +133 -0
- package/lib/shared/bundler/webpack/optimizationConfig.js +56 -0
- package/lib/shared/bundler/webpack/outputConfig.js +38 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configBundleAnalyzer.js +40 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configBundleIntegrityReport.js +36 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configCSSMinifierPlugin.js +28 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configCdnChangePlugin.js +27 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configCopyPublicFolders.js +63 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configCustomAttributesPlugin.js +20 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configCustomScriptLoadingStrategyPlugin.js +76 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configEFCTemplatePlugin.js +46 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configEnvVariables.js +51 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configHtmlWebpackPlugin.js +56 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configI18nNumericIndexPlugin.js +113 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configI18nSplitPlugin.js +41 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configIgnorePlugin.js +16 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configManifestJsonPlugin.js +44 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configMiniCSSExtractPlugin.js +24 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configProgressPlugin.js +24 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configResourceHintsPlugin.js +21 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configRtlCssPlugin.js +27 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configRuntimeResourceCleanup.js +31 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configSelectorWeightPlugin.js +28 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configServiceWorkerPlugin.js +40 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configSourceMapPlugin.js +20 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configTPHashMappingPlugin.js +32 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configVariableConversionPlugin.js +25 -0
- package/lib/shared/bundler/webpack/plugins.js +77 -0
- package/lib/shared/bundler/webpack/resolvers.js +82 -0
- package/lib/shared/bundler/webpack/splitChunksConfig.js +116 -0
- package/lib/shared/bundler/webpack/statsConfig.js +30 -0
- package/lib/shared/bundler/webpack/tsLoaders.js +17 -0
- package/lib/shared/bundler/webpack/utils/index.js +31 -0
- package/lib/shared/bundler/webpack/utils/object-manipulation.js +87 -0
- package/lib/shared/bundler/webpack/utils/updateArrayWithDefault.js +34 -0
- package/lib/shared/bundler/webpack/webpackBuild.js +27 -0
- package/lib/shared/bundler/webpack/webpackConfig.js +58 -0
- package/lib/shared/commands-utils/doBasicRequirementCheck.js +17 -0
- package/lib/shared/commands-utils/getCliPath.js +39 -0
- package/lib/shared/commands-utils/index.js +29 -0
- package/lib/shared/commands-utils/log.js +13 -0
- package/lib/shared/commands-utils/readArgsFormCommandLine.js +11 -0
- package/lib/shared/commands-utils/readOptionFormCommandLine.js +11 -0
- package/lib/shared/commands-utils/spawnSyncIO.js +38 -0
- package/lib/shared/constants.js +48 -0
- package/lib/shared/fileUtils/copyFile.js +38 -0
- package/lib/shared/fileUtils/directoryIterator.js +21 -0
- package/lib/shared/fileUtils/watchRun.js +112 -0
- package/lib/shared/postcss/custom_postcss_plugins/EmptyPlugin.js +21 -0
- package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/constants.js +10 -0
- package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/handleIgnores.js +66 -0
- package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/index.js +136 -0
- package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/insertBefore.js +32 -0
- package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/isPreviouslyProcessed.js +20 -0
- package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/replaceUtils.js +20 -0
- package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/separateHoveredSelectorAndNormalSelector.js +24 -0
- package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/specialCases.js +43 -0
- package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/typeCheckUtils.js +52 -0
- package/lib/shared/postcss/custom_postcss_plugins/RTLSplitPlugin.js +139 -0
- package/lib/shared/postcss/custom_postcss_plugins/SelectorReplace.js +90 -0
- package/lib/shared/postcss/custom_postcss_plugins/ValueReplacer.js +57 -0
- package/lib/shared/postcss/custom_postcss_plugins/VariableModificationPlugin/index.js +347 -0
- package/lib/shared/postcss/filterPluginsAllowedForSpecficFile.js +55 -0
- package/lib/shared/postcss/getAllowedPostCssPlugins.js +30 -0
- package/lib/shared/postcss/getSpecificPostCssPlugin.js +58 -0
- package/lib/shared/postcss/runPostCssForCssFile.js +37 -0
- package/lib/shared/pre_process/runPreProcess.js +58 -0
- package/lib/shared/server/configWebpackDevMiddleware.js +41 -0
- package/lib/shared/server/corsHandling.js +30 -0
- package/lib/shared/server/getIp.js +30 -0
- package/lib/shared/server/getServerURL.js +36 -0
- package/lib/shared/server/httpsOptions.js +46 -0
- package/lib/shared/server/initExpressApp.js +19 -0
- package/lib/shared/server/initialHTMLHandling.js +99 -0
- package/lib/shared/server/mockApiHandler.js +67 -0
- package/lib/shared/server/mockServer.js +41 -0
- package/lib/shared/server/serveContextFiles.js +27 -0
- package/lib/shared/server/serverBywebpackDevMiddleware.js +35 -0
- package/lib/shared/server/startHttpServer.js +26 -0
- package/lib/shared/server/startHttpsServer.js +38 -0
- package/lib/shared/server/unwanted/addHttp2Server.js +41 -0
- package/lib/shared/server/unwanted/configWebpackDevMiddleware.js +44 -0
- package/lib/shared/server/unwanted/mockApiSupport.js +19 -0
- package/lib/shared/server/unwanted/websocketMockSetup.js +48 -0
- package/lib/shared/server/urlConcat.js +32 -0
- package/lib/shared/utils/requireLocalOrGlobal.js +81 -0
- package/lib/shared/utils/utils.js +1 -0
- package/lib/shared/utils/versionPrint.js +20 -0
- package/npm-shrinkwrap.json +5657 -0
- package/package.json +64 -0
- package/polyfillForOldNodeVersion.js +10 -0
- package/templates/app/README.MD +30 -0
- package/templates/app/package.json +12 -0
- package/templates/library/README.MD +28 -0
- package/templates/library/package.json +11 -0
- package/templates/wms/index.html +43 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.templateHashHelpers = templateHashHelpers;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* this function will be used for chunk name, chunk hash, contentHash
|
|
10
|
+
* in these, sometime chunk name and chunk id same for some chunkss so below logic has little towek
|
|
11
|
+
* @param {Chunk} chunks
|
|
12
|
+
* @returns { mapExpr, mapExprWithLength }
|
|
13
|
+
*/
|
|
14
|
+
function templateHashHelpers(chunks) {
|
|
15
|
+
/**
|
|
16
|
+
* @param {function(Chunk): string | number} fn function from chunk to value
|
|
17
|
+
* @returns {string} code with static mapping of results of fn
|
|
18
|
+
*/
|
|
19
|
+
const createMap = fn => {
|
|
20
|
+
const obj = {};
|
|
21
|
+
let useId = false;
|
|
22
|
+
let lastKey;
|
|
23
|
+
let entries = 0; // eslint-disable-next-line no-restricted-syntax
|
|
24
|
+
|
|
25
|
+
for (const c of chunks) {
|
|
26
|
+
const value = fn(c);
|
|
27
|
+
|
|
28
|
+
if (value === c.id) {
|
|
29
|
+
useId = true;
|
|
30
|
+
} else {
|
|
31
|
+
obj[c.id] = value;
|
|
32
|
+
lastKey = c.id;
|
|
33
|
+
entries++;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (entries === 0) {
|
|
38
|
+
return 'chunkId';
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if (entries === 1) {
|
|
42
|
+
return useId ? `(chunkId === ${JSON.stringify(lastKey)} ? ${JSON.stringify(obj[lastKey])} : chunkId)` : JSON.stringify(obj[lastKey]);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return useId ? `(${JSON.stringify(obj)}[chunkId] || chunkId)` : `${JSON.stringify(obj)}[chunkId]`;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* @param {function(Chunk): string | number} fn function from chunk to value
|
|
49
|
+
* @returns {string} code with static mapping of results of fn for including in quoted string
|
|
50
|
+
*/
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
const mapExpr = fn => `" + ${createMap(fn)} + "`;
|
|
54
|
+
/**
|
|
55
|
+
* @param {function(Chunk): string | number} fn function from chunk to value
|
|
56
|
+
* @returns {function(number): string} function which generates code with static mapping of results of fn for including in quoted string for specific length
|
|
57
|
+
*/
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
const mapExprWithLength = fn => length => // console.log('called with lentch', length),
|
|
61
|
+
`" + ${createMap(c => `${fn(c)}`.slice(0, length))} + "`;
|
|
62
|
+
|
|
63
|
+
return {
|
|
64
|
+
mapExpr,
|
|
65
|
+
mapExprWithLength
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
function mapExpr(fn) {
|
|
70
|
+
const obj = {};
|
|
71
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
72
|
+
for (const c of chunks) {
|
|
73
|
+
obj[c.id] = fn(c);
|
|
74
|
+
}
|
|
75
|
+
return `(${JSON.stringify(obj)})[chunkId]`;
|
|
76
|
+
}
|
|
77
|
+
*/
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const {
|
|
4
|
+
walk
|
|
5
|
+
} = require('estree-walker');
|
|
6
|
+
|
|
7
|
+
const PREFIX_I18N_COMMENT = 'I18N';
|
|
8
|
+
const PREFIX_I18N_COMMENT_DYNAMIC = 'dynamic-i18n-key';
|
|
9
|
+
|
|
10
|
+
function getI18nKeysFromSingleComment(commentNode, validKeysSet, isDebug = false) {
|
|
11
|
+
const functionName = '[getI18nKeysFromSingleComment]';
|
|
12
|
+
const foundKeysInComment = [];
|
|
13
|
+
|
|
14
|
+
if (!commentNode || typeof commentNode.value !== 'string') {
|
|
15
|
+
return foundKeysInComment;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const commentString = commentNode.value.trim();
|
|
19
|
+
let i18nKeyStr;
|
|
20
|
+
|
|
21
|
+
if (commentString.startsWith(PREFIX_I18N_COMMENT)) {
|
|
22
|
+
i18nKeyStr = commentString.slice(PREFIX_I18N_COMMENT.length).trim();
|
|
23
|
+
} else if (commentString.startsWith(PREFIX_I18N_COMMENT_DYNAMIC)) {
|
|
24
|
+
i18nKeyStr = commentString.slice(PREFIX_I18N_COMMENT_DYNAMIC.length).trim();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
if (!i18nKeyStr) {
|
|
28
|
+
return foundKeysInComment;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const potentialKeys = i18nKeyStr.split(',').map(key => key.trim()).filter(key => key);
|
|
32
|
+
potentialKeys.forEach(key => {
|
|
33
|
+
if (validKeysSet.has(key)) {
|
|
34
|
+
foundKeysInComment.push(key);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
return foundKeysInComment;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Traverses an AST and its comments to collect and categorize i18n keys.
|
|
41
|
+
*
|
|
42
|
+
* @param {object} astProgramNode - The Program node of the AST.
|
|
43
|
+
* @param {object[]} commentsArray - An array of comment nodes from the AST.
|
|
44
|
+
* @param {object} allI18nKeysMasterMap - Object map of all valid i18n keys (from JSResources).
|
|
45
|
+
* @param {boolean} [isDebug=false] - Flag for verbose logging.
|
|
46
|
+
* @returns {{literalKeys: Set<string>, commentKeys: Set<string>}}
|
|
47
|
+
* literalKeys: Set of valid i18n keys found as string literals.
|
|
48
|
+
* commentKeys: Set of valid i18n keys found in comments.
|
|
49
|
+
*/
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
function collectAndCategorizeUsedI18nKeys(astProgramNode, commentsArray, allI18nKeysMasterMap, isDebug = false) {
|
|
53
|
+
const functionName = '[collectAndCategorizeUsedI18nKeys]';
|
|
54
|
+
const foundLiteralKeys = new Set();
|
|
55
|
+
const foundCommentKeys = new Set();
|
|
56
|
+
const validKeysSet = new Set(Object.keys(allI18nKeysMasterMap || {}));
|
|
57
|
+
|
|
58
|
+
if (validKeysSet.size === 0 && isDebug) {
|
|
59
|
+
console.warn(`${functionName} allI18nKeysMasterMap is empty. No keys can be collected.`);
|
|
60
|
+
} // 1. Collect keys from AST string literals
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
if (astProgramNode) {
|
|
64
|
+
try {
|
|
65
|
+
walk(astProgramNode, {
|
|
66
|
+
enter(node) {
|
|
67
|
+
if ((node.type === 'Literal' || node.type === 'StringLiteral') && typeof node.value === 'string') {
|
|
68
|
+
if (validKeysSet.has(node.value)) {
|
|
69
|
+
foundLiteralKeys.add(node.value);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
});
|
|
75
|
+
} catch (error) {
|
|
76
|
+
console.error(`${functionName} Error during AST walk:`, error);
|
|
77
|
+
}
|
|
78
|
+
} // 2. Collect keys from comments
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
if (commentsArray && Array.isArray(commentsArray)) {
|
|
82
|
+
commentsArray.forEach(commentNode => {
|
|
83
|
+
const keysFromComment = getI18nKeysFromSingleComment(commentNode, validKeysSet, isDebug);
|
|
84
|
+
keysFromComment.forEach(key => {
|
|
85
|
+
foundCommentKeys.add(key);
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return {
|
|
91
|
+
literalKeys: foundLiteralKeys,
|
|
92
|
+
commentKeys: foundCommentKeys
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
module.exports = {
|
|
97
|
+
collectAndCategorizeUsedI18nKeys: collectAndCategorizeUsedI18nKeys
|
|
98
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.collectI18nKeysfromAST = collectI18nKeysfromAST;
|
|
7
|
+
exports.collectI18nKeysfromComments = collectI18nKeysfromComments;
|
|
8
|
+
|
|
9
|
+
var _estreeWalker = require("estree-walker");
|
|
10
|
+
|
|
11
|
+
function collectI18nKeysfromAST(ast, allI18n) {
|
|
12
|
+
const i18nKeys = {};
|
|
13
|
+
(0, _estreeWalker.walk)(ast, {
|
|
14
|
+
enter(node) {
|
|
15
|
+
if (node.type === 'Literal') {
|
|
16
|
+
if ((node.raw[0] === '\'' || node.raw[0] === '"') && Object.hasOwnProperty.call(allI18n, node.value)) {
|
|
17
|
+
i18nKeys[node.value] = allI18n[node.value];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
});
|
|
23
|
+
return Object.keys(i18nKeys);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const prefixI18nComment = 'I18N';
|
|
27
|
+
const prefixI18nComment1 = 'dynamic-i18n-key';
|
|
28
|
+
|
|
29
|
+
function getI18nKeysFromComment(comment) {
|
|
30
|
+
const commentString = comment.value.trim();
|
|
31
|
+
let i18nKeyStr;
|
|
32
|
+
|
|
33
|
+
if (commentString.startsWith(prefixI18nComment)) {
|
|
34
|
+
i18nKeyStr = commentString.slice(prefixI18nComment.length).trim();
|
|
35
|
+
} else if (commentString.startsWith(prefixI18nComment1)) {
|
|
36
|
+
i18nKeyStr = commentString.slice(prefixI18nComment1.length).trim();
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (!i18nKeyStr) {
|
|
40
|
+
return [];
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const i18nKeys = i18nKeyStr.split(',');
|
|
44
|
+
return i18nKeys;
|
|
45
|
+
} // export function fromComments(comments, allI18n) {
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
function collectI18nKeysfromComments(comments, allI18n) {
|
|
49
|
+
// TODO: need to implement
|
|
50
|
+
const i18nKeys = {};
|
|
51
|
+
/* eslint-disable no-restricted-syntax */
|
|
52
|
+
|
|
53
|
+
for (const comment of comments) {
|
|
54
|
+
const keys = getI18nKeysFromComment(comment);
|
|
55
|
+
|
|
56
|
+
for (const key of keys) {
|
|
57
|
+
if (key && allI18n[key]) {
|
|
58
|
+
i18nKeys[key] = allI18n[key];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/* eslint-enable no-restricted-syntax */
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
return Object.keys(i18nKeys);
|
|
66
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getChunkModules = getChunkModules;
|
|
7
|
+
|
|
8
|
+
function getChunkModules(chunk, compilation) {
|
|
9
|
+
const {
|
|
10
|
+
chunkGraph
|
|
11
|
+
} = compilation || {};
|
|
12
|
+
return typeof chunkGraph !== 'undefined' ? chunkGraph.getChunkModules(chunk) : chunk.modulesIterable;
|
|
13
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.REGEXP_CONTENTHASH = void 0;
|
|
7
|
+
exports.hasContentHash = hasContentHash;
|
|
8
|
+
// export const REGEXP_CHUNKHASH = /\[chunkhash(?::(\d+))?\]/gi;
|
|
9
|
+
// export const REGEXP_HASH = /\[hash(?::(\d+))?\]/gi;
|
|
10
|
+
// export const REGEXP_NAME = /\[name\]/gi;
|
|
11
|
+
// export const REGEXP_PLACEHOLDERS = /\[(name|id|chunkhash)\]/gi;
|
|
12
|
+
// TODO: want to choose file type for i18n load
|
|
13
|
+
const REGEXP_CONTENTHASH = /\[contenthash(?::(\d+))?\]/gi;
|
|
14
|
+
exports.REGEXP_CONTENTHASH = REGEXP_CONTENTHASH;
|
|
15
|
+
|
|
16
|
+
function hasContentHash(filenameTemplate) {
|
|
17
|
+
REGEXP_CONTENTHASH.lastIndex = 0;
|
|
18
|
+
return REGEXP_CONTENTHASH.test(filenameTemplate);
|
|
19
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
var _collectI18nKeys = require("./collectI18nKeys");
|
|
8
|
+
|
|
9
|
+
Object.keys(_collectI18nKeys).forEach(function (key) {
|
|
10
|
+
if (key === "default" || key === "__esModule") return;
|
|
11
|
+
if (key in exports && exports[key] === _collectI18nKeys[key]) return;
|
|
12
|
+
Object.defineProperty(exports, key, {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _collectI18nKeys[key];
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
var _propertiesUtils = require("./propertiesUtils");
|
|
21
|
+
|
|
22
|
+
Object.keys(_propertiesUtils).forEach(function (key) {
|
|
23
|
+
if (key === "default" || key === "__esModule") return;
|
|
24
|
+
if (key in exports && exports[key] === _propertiesUtils[key]) return;
|
|
25
|
+
Object.defineProperty(exports, key, {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function () {
|
|
28
|
+
return _propertiesUtils[key];
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
});
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getAllI18n = getAllI18n;
|
|
7
|
+
exports.getPropertiesAsJSON = getPropertiesAsJSON;
|
|
8
|
+
exports.jsonToString = jsonToString;
|
|
9
|
+
|
|
10
|
+
var _fs = require("fs");
|
|
11
|
+
|
|
12
|
+
var _path = require("path");
|
|
13
|
+
|
|
14
|
+
var _constants = require("../../../../../constants");
|
|
15
|
+
|
|
16
|
+
function isComment(line) {
|
|
17
|
+
return line[0] === '#';
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function getPropertiesAsJSON(filePath) {
|
|
21
|
+
try {
|
|
22
|
+
const data = (0, _fs.readFileSync)(filePath);
|
|
23
|
+
const source = data.toString();
|
|
24
|
+
const i18nObj = {};
|
|
25
|
+
source.split(/\r?\n\r?/).forEach(fline => {
|
|
26
|
+
const line = fline.trim();
|
|
27
|
+
|
|
28
|
+
if (!line || isComment(line)) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const ind = line.indexOf('=');
|
|
33
|
+
const key = line.slice(0, ind).replace(/\\ /g, ' ');
|
|
34
|
+
const value = line.slice(ind + 1);
|
|
35
|
+
|
|
36
|
+
if (key && value) {
|
|
37
|
+
i18nObj[key] = value;
|
|
38
|
+
}
|
|
39
|
+
}, {});
|
|
40
|
+
return i18nObj;
|
|
41
|
+
} catch (err) {
|
|
42
|
+
return {};
|
|
43
|
+
}
|
|
44
|
+
} // TODO: need to make it as custom option and dynamic
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
function getLang(file) {
|
|
48
|
+
const underScoreIndex = file.indexOf('_');
|
|
49
|
+
let language = 'en_US';
|
|
50
|
+
|
|
51
|
+
if (underScoreIndex !== -1) {
|
|
52
|
+
language = file.substring(underScoreIndex + 1);
|
|
53
|
+
language = language.slice(0, language.indexOf('.'));
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return language;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function getAllI18n({
|
|
60
|
+
folderPath,
|
|
61
|
+
disableDefault,
|
|
62
|
+
jsResourceI18nKeys,
|
|
63
|
+
exclude = /^[^_]+$/,
|
|
64
|
+
include = /\.properties$/
|
|
65
|
+
}) {
|
|
66
|
+
try {
|
|
67
|
+
const files = (0, _fs.readdirSync)(folderPath, 'utf8');
|
|
68
|
+
const allLangI18n = {};
|
|
69
|
+
const context = (0, _constants.joinWithAppPath)(folderPath);
|
|
70
|
+
files.forEach(file => {
|
|
71
|
+
const filePath = (0, _path.join)(context, file);
|
|
72
|
+
|
|
73
|
+
if (exclude.test(filePath) || !include.test(filePath)) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const i18n = getPropertiesAsJSON(filePath);
|
|
78
|
+
allLangI18n[getLang(file)] = disableDefault ? i18n : { ...jsResourceI18nKeys,
|
|
79
|
+
...i18n
|
|
80
|
+
};
|
|
81
|
+
});
|
|
82
|
+
return allLangI18n;
|
|
83
|
+
} catch (err) {
|
|
84
|
+
console.log(err);
|
|
85
|
+
return {};
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function jsonToString(json, keySeperator) {
|
|
90
|
+
let str = '{';
|
|
91
|
+
const keys = Object.keys(json);
|
|
92
|
+
keys.forEach((key, i) => {
|
|
93
|
+
const value = json[key];
|
|
94
|
+
|
|
95
|
+
if (!value) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
str += `"${keySeperator ? key.replace(/(\.|\\(\s+))/g, keySeperator) : key}":"${value.replace(/.?"/g, match => {
|
|
100
|
+
if (match[0] === '\\') {
|
|
101
|
+
return match;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if (match.length === 2) {
|
|
105
|
+
return `${match[0]}\\${match[1]}`;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return `\\${match}`;
|
|
109
|
+
}).replace(/(\r\n|\n|\r)/g, '')}"`;
|
|
110
|
+
|
|
111
|
+
if (i !== keys.length - 1) {
|
|
112
|
+
str += ',';
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
str += '}';
|
|
116
|
+
return str;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* not useable due to special charector
|
|
120
|
+
*
|
|
121
|
+
return `{${Object.keys(data).map(key => `"${key}": "${data[key]}"`).join(",")}}`
|
|
122
|
+
// return JSON.stringify(data);
|
|
123
|
+
let str = "{";
|
|
124
|
+
for (const key of Object.keys(data)) {
|
|
125
|
+
str+= `"${key}": "${data[key]}",`
|
|
126
|
+
}
|
|
127
|
+
str+="}";
|
|
128
|
+
return str;
|
|
129
|
+
*/
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.InitialHtmlPlugin = void 0;
|
|
7
|
+
|
|
8
|
+
var _htmlWebpackPlugin = _interopRequireDefault(require("html-webpack-plugin"));
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
|
|
12
|
+
const pluginName = 'InitialHtmlPlugin';
|
|
13
|
+
|
|
14
|
+
class InitialHtmlPlugin {
|
|
15
|
+
constructor(options) {
|
|
16
|
+
this.options = options;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
apply(compiler) {
|
|
20
|
+
const {
|
|
21
|
+
filename,
|
|
22
|
+
template,
|
|
23
|
+
minify,
|
|
24
|
+
inject,
|
|
25
|
+
mainChunkName
|
|
26
|
+
} = this.options;
|
|
27
|
+
new _htmlWebpackPlugin.default({
|
|
28
|
+
filename,
|
|
29
|
+
template,
|
|
30
|
+
minify,
|
|
31
|
+
chunks: [mainChunkName],
|
|
32
|
+
inject,
|
|
33
|
+
scriptLoading: 'defer'
|
|
34
|
+
}).apply(compiler);
|
|
35
|
+
compiler.hooks.thisCompilation.tap(pluginName, compilation => {
|
|
36
|
+
_htmlWebpackPlugin.default.getHooks(compilation).alterAssetTagGroups.tapAsync(pluginName, (data, cb) => {
|
|
37
|
+
const headTags = [];
|
|
38
|
+
const bodyTags = [];
|
|
39
|
+
data.headTags.forEach(tag => {
|
|
40
|
+
Object.assign(tag.attributes, {
|
|
41
|
+
nonce: '{{--CSP-nonce}}'
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
if (tag.tagName === 'link') {
|
|
45
|
+
headTags.push(tag);
|
|
46
|
+
} else {
|
|
47
|
+
bodyTags.push(tag);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
cb(null, { ...data,
|
|
51
|
+
headTags,
|
|
52
|
+
bodyTags
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
exports.InitialHtmlPlugin = InitialHtmlPlugin;
|
package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/addFilesNamesToManifestJson.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.addFilesNamesToManifestJson = addFilesNamesToManifestJson;
|
|
7
|
+
|
|
8
|
+
var _path = _interopRequireDefault(require("path"));
|
|
9
|
+
|
|
10
|
+
var _removeHashFromFileName = require("./removeHashFromFileName");
|
|
11
|
+
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
|
|
14
|
+
function addFilesNamesToManifestJson({
|
|
15
|
+
manifestJson,
|
|
16
|
+
option,
|
|
17
|
+
assets,
|
|
18
|
+
hashDigestLength
|
|
19
|
+
}) {
|
|
20
|
+
const json = manifestJson;
|
|
21
|
+
Object.keys(assets).forEach(filename => {
|
|
22
|
+
const fileName = _path.default.parse(filename).base;
|
|
23
|
+
|
|
24
|
+
if (option.test(filename)) {
|
|
25
|
+
const filenameNameWithoutHash = (0, _removeHashFromFileName.removeHashFromFileName)(fileName, hashDigestLength);
|
|
26
|
+
json[filenameNameWithoutHash] = fileName;
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
return json;
|
|
30
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createInitialEntriesForManifestJson = createInitialEntriesForManifestJson;
|
|
7
|
+
|
|
8
|
+
var _path = _interopRequireDefault(require("path"));
|
|
9
|
+
|
|
10
|
+
var _removeHashFromFileName = require("./removeHashFromFileName");
|
|
11
|
+
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
|
|
14
|
+
function createInitialEntriesForManifestJson(initialFileNames, hashLength) {
|
|
15
|
+
const initialEntries = {};
|
|
16
|
+
initialFileNames.forEach(filename => {
|
|
17
|
+
const fileName = _path.default.parse(filename).base;
|
|
18
|
+
|
|
19
|
+
const filenameNameWithoutHash = (0, _removeHashFromFileName.removeHashFromFileName)(fileName, hashLength);
|
|
20
|
+
initialEntries[filenameNameWithoutHash] = fileName;
|
|
21
|
+
});
|
|
22
|
+
return initialEntries;
|
|
23
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createManifestJson = createManifestJson;
|
|
7
|
+
|
|
8
|
+
var _findInitialFileNames = require("./findInitialFileNames");
|
|
9
|
+
|
|
10
|
+
var _addFilesNamesToManifestJson = require("./addFilesNamesToManifestJson");
|
|
11
|
+
|
|
12
|
+
var _createInitialEntries = require("./createInitialEntries");
|
|
13
|
+
|
|
14
|
+
function createManifestJson({
|
|
15
|
+
option,
|
|
16
|
+
hashDigestLength,
|
|
17
|
+
compilation,
|
|
18
|
+
assets
|
|
19
|
+
}) {
|
|
20
|
+
const manifestJson = {};
|
|
21
|
+
|
|
22
|
+
if (option.needInitialEntries) {
|
|
23
|
+
const initialFileNames = (0, _findInitialFileNames.findInitialFileNames)(compilation);
|
|
24
|
+
const initialEntries = (0, _createInitialEntries.createInitialEntriesForManifestJson)(initialFileNames, hashDigestLength);
|
|
25
|
+
manifestJson.entryFiles = initialEntries;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const outputJson = (0, _addFilesNamesToManifestJson.addFilesNamesToManifestJson)({
|
|
29
|
+
manifestJson,
|
|
30
|
+
option,
|
|
31
|
+
assets,
|
|
32
|
+
hashDigestLength
|
|
33
|
+
});
|
|
34
|
+
return outputJson;
|
|
35
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.findInitialFileNames = findInitialFileNames;
|
|
7
|
+
|
|
8
|
+
function findInitialFileNames(compilation) {
|
|
9
|
+
const initialEntries = [];
|
|
10
|
+
compilation.entrypoints.forEach(element => {
|
|
11
|
+
element.chunks.forEach(chunk => {
|
|
12
|
+
Array.from(chunk.files).forEach(filename => {
|
|
13
|
+
initialEntries.push(filename);
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
return initialEntries;
|
|
18
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.AddFileToManifestJson = void 0;
|
|
7
|
+
|
|
8
|
+
var _webpack = require("webpack");
|
|
9
|
+
|
|
10
|
+
var _createManifestJson = require("./createManifestJson");
|
|
11
|
+
|
|
12
|
+
const pluginName = 'AddFileToManifestJson';
|
|
13
|
+
|
|
14
|
+
class AddFileToManifestJson {
|
|
15
|
+
constructor(options) {
|
|
16
|
+
this.options = options;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
apply(compiler) {
|
|
20
|
+
const {
|
|
21
|
+
RawSource
|
|
22
|
+
} = compiler.webpack.sources;
|
|
23
|
+
compiler.hooks.thisCompilation.tap(pluginName, compilation => {
|
|
24
|
+
compilation.hooks.processAssets.tap({
|
|
25
|
+
name: pluginName,
|
|
26
|
+
stage: _webpack.Compilation.PROCESS_ASSETS_STAGE_SUMMARIZE
|
|
27
|
+
}, assets => {
|
|
28
|
+
const {
|
|
29
|
+
hashDigestLength
|
|
30
|
+
} = compilation.outputOptions;
|
|
31
|
+
this.options.forEach(option => {
|
|
32
|
+
const manifestJson = (0, _createManifestJson.createManifestJson)({
|
|
33
|
+
option,
|
|
34
|
+
hashDigestLength,
|
|
35
|
+
compilation,
|
|
36
|
+
assets
|
|
37
|
+
});
|
|
38
|
+
compilation.emitAsset(option.outputJsonFileName, new RawSource(JSON.stringify(manifestJson)));
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
exports.AddFileToManifestJson = AddFileToManifestJson;
|
package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/removeHashFromFileName.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.removeHashFromFileName = removeHashFromFileName;
|
|
7
|
+
|
|
8
|
+
function removeHashFromFileName(fileName, hashDigestLength) {
|
|
9
|
+
let outputFileName = '';
|
|
10
|
+
fileName.split('.').forEach(iterateValue => {
|
|
11
|
+
if (outputFileName === '') {
|
|
12
|
+
outputFileName += iterateValue;
|
|
13
|
+
} else if (iterateValue.length < hashDigestLength) {
|
|
14
|
+
outputFileName += `.${iterateValue}`;
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
return outputFileName;
|
|
18
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|