From a38b8ca3c6146c2db03167d6ff94e445d756a202 Mon Sep 17 00:00:00 2001 From: Arpit Chakladar <54011232+arpitchakladar@users.noreply.github.com> Date: Mon, 3 Jun 2024 13:09:04 +0530 Subject: Added captha removal and autocomplete to GRN search. --- config/webpack.config.js | 61 +++++++--------------- ...reate-injected-shared-modules-webpack-plugin.js | 8 +-- .../create-manifest-webpack-plugin/index.js | 17 +++--- .../plugins/inject-script-webpack-plugin.js | 8 +-- config/webpack/utils/build-file.js | 19 +++++++ config/webpack/utils/filename-hash.js | 19 ------- 6 files changed, 54 insertions(+), 78 deletions(-) create mode 100644 config/webpack/utils/build-file.js delete mode 100644 config/webpack/utils/filename-hash.js (limited to 'config') diff --git a/config/webpack.config.js b/config/webpack.config.js index 9618e33..70b87ca 100644 --- a/config/webpack.config.js +++ b/config/webpack.config.js @@ -18,7 +18,7 @@ const CreateInjectedSharedModulesPlugin = webpackRequire("plugins/create-injecte const { inlineJavascript } = webpackRequire("utils/inline-javascript"); const { getScriptRuntimeFromType } = webpackRequire("utils/script-runtime"); -const { getFileNameHash } = webpackRequire("utils/filename-hash"); +const { getFileName } = webpackRequire("utils/build-file"); const scripts = webpackRequire("utils/scripts"); const sharedModules = webpackRequire("utils/shared-modules"); @@ -48,29 +48,24 @@ for (const scriptPath in scripts) { let destinationFolder = "scripts"; switch (scriptType) { - case "injected-after": + case "injected": scriptEntries = injectedAfterScriptEntries; destinationFolder = "scripts/injected"; break; - case "injected-before": - scriptEntries = injectedBeforeScriptEntries; - destinationFolder = "scripts/injected"; - break; - default: scriptEntries = uninjectedScriptEntries; } scriptEntries[`${scriptType} - "${scriptPath}"`] = { import: inlineJavascript(currentScripts.map(script => `import "${path.resolve(SOURCE_DIR, "scripts", script)}";`).join("\n")), - filename: `${destinationFolder}/${getFileNameHash(scriptType, scriptPath)}.js` + filename: `${destinationFolder}/${getFileName(scriptType, scriptPath)}.js` }; } } for (const sharedModule of sharedModules) { - const sharedModuleNameHash = getFileNameHash(sharedModule, "shared"); + const sharedModuleNameHash = getFileName(sharedModule, "shared"); const sharedModuleGlobalVariableName = `$${sharedModuleNameHash.substring(sharedModuleNameHash.length - 16)}`; sharedModuleEntries[sharedModule] = { import: path.resolve(SOURCE_DIR, "shared", sharedModule), @@ -138,23 +133,6 @@ const sharedModuleOptions = { } }; -const injectedModulesOptions = { - externals: sharedModuleExternals, - externalsType: "var", - module: { - rules: [ - { - test: /banglar-bhumi-utils\/src\/.*.(^.?|\.[^d]|[^.]d|[^.][^d])\.(t|j)s$/, - loader: path.resolve(CONFIG_DIR, "webpack/loader/count-imports-loader.js"), - options: { - sharedModulesImportedCount: injectedSharedModulesImportedCount - }, - enforce: "post" - } - ] - } -}; - const uninjectedScriptConfiguration = merge( commonOptions, sharedModuleOptions, @@ -163,10 +141,23 @@ const uninjectedScriptConfiguration = merge( } ); -const injectedAfterScriptConfiguration = merge( +const injectedScriptConfiguration = merge( commonOptions, - injectedModulesOptions, { + externals: sharedModuleExternals, + externalsType: "var", + module: { + rules: [ + { + test: /banglar-bhumi-utils\/src\/.*.(^.?|\.[^d]|[^.]d|[^.][^d])\.(t|j)s$/, + loader: path.resolve(CONFIG_DIR, "webpack/loader/count-imports-loader.js"), + options: { + sharedModulesImportedCount: injectedSharedModulesImportedCount + }, + enforce: "post" + } + ] + }, entry: injectedAfterScriptEntries, plugins: [ new InjectScriptPlugin() @@ -174,17 +165,6 @@ const injectedAfterScriptConfiguration = merge( } ); -const injectedBeforeScriptConfiguration = merge( - commonOptions, - injectedModulesOptions, - { - entry: injectedBeforeScriptEntries, - plugins: [ - new InjectScriptPlugin(true) - ] - } -); - const sortedSharedModules = [] const sharedModulesConfiguration = merge( @@ -227,7 +207,6 @@ const sharedModulesConfiguration = merge( module.exports = [ uninjectedScriptConfiguration, - injectedAfterScriptConfiguration, - injectedBeforeScriptConfiguration, + injectedScriptConfiguration, sharedModulesConfiguration ]; diff --git a/config/webpack/plugins/create-injected-shared-modules-webpack-plugin.js b/config/webpack/plugins/create-injected-shared-modules-webpack-plugin.js index fd5a0a2..aa076b8 100644 --- a/config/webpack/plugins/create-injected-shared-modules-webpack-plugin.js +++ b/config/webpack/plugins/create-injected-shared-modules-webpack-plugin.js @@ -2,7 +2,7 @@ const path = require("path"); const fs = require("fs"); const { sources } = require("webpack"); -const { getFileNameHash } = webpackRequire("utils/filename-hash"); +const { getFileName } = webpackRequire("utils/build-file"); class CreateInjectedSharedModulesPlugin { constructor({ injectedSharedModulesImportedCount, sortedSharedModules }) { @@ -20,15 +20,15 @@ class CreateInjectedSharedModulesPlugin { assets => { const injectedSharedScripts = this.sortedSharedModules .filter(sharedModule => this.injectedSharedModulesImportedCount[sharedModule] > 0) - .map(sharedModule => `shared/${getFileNameHash(sharedModule, "shared")}.js`); + .map(sharedModule => `shared/${getFileName(sharedModule, "shared")}.js`); if (injectedSharedScripts.length > 0) { - const scriptInjectorModuleName = getFileNameHash("script-injector", "shared", true); + const scriptInjectorModuleName = getFileName("script-injector", "shared", true); const injectionCode = injectedSharedScripts .map(injectedScript => `$${scriptInjectorModuleName}.injectScriptHead("shared/${path.basename(injectedScript)}");`) .join(""); compilation.emitAsset( - `shared/${getFileNameHash("injected-shared-modules", "shared")}.js`, + `shared/${getFileName("injected-shared-modules", "shared")}.js`, new sources.RawSource(injectionCode) ); } diff --git a/config/webpack/plugins/create-manifest-webpack-plugin/index.js b/config/webpack/plugins/create-manifest-webpack-plugin/index.js index b14cd13..92c3096 100644 --- a/config/webpack/plugins/create-manifest-webpack-plugin/index.js +++ b/config/webpack/plugins/create-manifest-webpack-plugin/index.js @@ -2,7 +2,7 @@ const { sources } = require("webpack"); const path = require("path"); const { getScriptRuntimeFromType } = webpackRequire("utils/script-runtime"); -const { getFileNameHash } = webpackRequire("utils/filename-hash"); +const { getFileName } = webpackRequire("utils/build-file"); const scripts = webpackRequire("utils/scripts"); const manifest = webpackRequire("plugins/create-manifest-webpack-plugin/manifest-template.json"); @@ -37,9 +37,9 @@ class CreateManifestPlugin { arrangedScripts[scriptPath][scriptRuntime] = []; } - arrangedScripts[scriptPath][scriptRuntime].push(`scripts/${getFileNameHash(scriptType, scriptPath)}.js`); + arrangedScripts[scriptPath][scriptRuntime].push(`scripts/${getFileName(scriptType, scriptPath)}.js`); if (scriptType.startsWith("injected")) { - resources.push(`scripts/injected/${getFileNameHash(scriptType, scriptPath)}.js`); + resources.push(`scripts/injected/${getFileName(scriptType, scriptPath)}.js`); } } } @@ -48,8 +48,9 @@ class CreateManifestPlugin { matches: [`*://banglarbhumi.gov.in/BanglarBhumi/*`], js: this.sortedSharedModules .filter(sharedModule => this.sharedModulesImportedCount[sharedModule] > 0) - .map(sharedModule => `shared/${getFileNameHash(sharedModule, "shared")}.js`) - .concat(arrangedScripts["*"]["document_start"]), + .map(sharedModule => `shared/${getFileName(sharedModule, "shared")}.js`) + .concat(arrangedScripts["*"]["document_start"]) + .filter(x => x != null), run_at: "document_start" }); @@ -78,14 +79,14 @@ class CreateManifestPlugin { const injectedSharedModules = this.sortedSharedModules .filter(sharedModule => this.injectedSharedModulesImportedCount[sharedModule] > 0) - .map(sharedModule => `shared/${getFileNameHash(sharedModule, "shared")}.js`); + .map(sharedModule => `shared/${getFileName(sharedModule, "shared")}.js`); if (injectedSharedModules.length > 0) { resources = resources.concat(injectedSharedModules); - manifest.content_scripts[0].js.unshift(`shared/${getFileNameHash("injected-shared-modules", "shared")}.js`); + manifest.content_scripts[0].js.unshift(`shared/${getFileName("injected-shared-modules", "shared")}.js`); } - manifest.content_scripts[0].js.unshift(`shared/${getFileNameHash("script-injector", "shared")}.js`); + manifest.content_scripts[0].js.unshift(`shared/${getFileName("script-injector", "shared")}.js`); if (resources.length > 0) { manifest.web_accessible_resources = [ diff --git a/config/webpack/plugins/inject-script-webpack-plugin.js b/config/webpack/plugins/inject-script-webpack-plugin.js index 665d24e..25b1dc6 100644 --- a/config/webpack/plugins/inject-script-webpack-plugin.js +++ b/config/webpack/plugins/inject-script-webpack-plugin.js @@ -1,14 +1,10 @@ const { sources } = require("webpack"); const path = require("path"); -const { getFileNameHash } = webpackRequire("utils/filename-hash"); +const { getFileName } = webpackRequire("utils/build-file"); const { getInjectedCode } = webpackRequire("utils/injected-code"); class InjectScriptPlugin { - constructor(insertedBefore = false) { - this.insertedBefore = insertedBefore; - } - apply(compiler) { compiler.hooks.compilation.tap("InjectScriptPlugin", compilation => { compilation.hooks.processAssets.tapPromise( @@ -21,7 +17,7 @@ class InjectScriptPlugin { for (const assetName in assets) { if (/\.js$/.test(assetName)) { const injectedCodeResponse = getInjectedCode(compilation.getAsset(assetName).source.source()) - const scriptInjectorModuleName = getFileNameHash("script-injector", "shared", true); + const scriptInjectorModuleName = getFileName("script-injector", "shared", true); compilation.updateAsset( assetName, new sources.RawSource(injectedCodeResponse[0]) diff --git a/config/webpack/utils/build-file.js b/config/webpack/utils/build-file.js new file mode 100644 index 0000000..9a0ae66 --- /dev/null +++ b/config/webpack/utils/build-file.js @@ -0,0 +1,19 @@ +const crypto = require("crypto"); + +module.exports.getFileName = (fileName, prefix, justHash = false) => { + let hash = crypto + .createHash("md5") + .update(`${prefix}-${fileName}`) + .digest("hex"); + + if (production) { + return hash; + } else { + hash = hash.substring(16); + if (justHash) { + return hash; + } else { + return `${fileName}-${hash}`; + } + } +}; diff --git a/config/webpack/utils/filename-hash.js b/config/webpack/utils/filename-hash.js deleted file mode 100644 index e0d8a6d..0000000 --- a/config/webpack/utils/filename-hash.js +++ /dev/null @@ -1,19 +0,0 @@ -const crypto = require("crypto"); - -module.exports.getFileNameHash = (fileName, prefix, justHash = false) => { - let hash = crypto - .createHash("md5") - .update(`${prefix}-${fileName}`) - .digest("hex"); - - if (production) { - return hash; - } else { - hash = hash.substring(16); - if (justHash) { - return hash; - } else { - return `${fileName}-${hash}`; - } - } -}; -- cgit v1.2.3