diff options
| author | Arpit Chakladar <54011232+arpitchakladar@users.noreply.github.com> | 2025-06-13 23:28:57 +0530 |
|---|---|---|
| committer | Arpit Chakladar <54011232+arpitchakladar@users.noreply.github.com> | 2025-06-13 23:28:57 +0530 |
| commit | 7164ef595147d997068b953d0e8bd19add0db5f9 (patch) | |
| tree | 415a297d71c7ef93c5bc38d071b8870d01020fa2 | |
| parent | 64e38ab240a1ca3427592eb80f2cef57fddbdafe (diff) | |
| download | banglar-bhumi-utils-7164ef595147d997068b953d0e8bd19add0db5f9.tar.gz banglar-bhumi-utils-7164ef595147d997068b953d0e8bd19add0db5f9.zip | |
Using es-modules for webpack configuration.
| -rw-r--r-- | config/webpack.config.js | 36 | ||||
| -rw-r--r-- | config/webpack/loader/arrange-shared-module-loader.js | 9 | ||||
| -rw-r--r-- | config/webpack/loader/count-imports-loader.js | 7 | ||||
| -rw-r--r-- | config/webpack/loader/to-string-loader.js | 2 | ||||
| -rw-r--r-- | config/webpack/plugins/create-injected-shared-modules-webpack-plugin.js | 12 | ||||
| -rw-r--r-- | config/webpack/plugins/create-manifest-webpack-plugin/index.js | 25 | ||||
| -rw-r--r-- | config/webpack/plugins/create-rules-webpack-plugin.js | 12 | ||||
| -rw-r--r-- | config/webpack/plugins/inject-script-webpack-plugin.js | 14 | ||||
| -rw-r--r-- | config/webpack/utils/build-file.js | 4 | ||||
| -rw-r--r-- | config/webpack/utils/injected-code.js | 4 | ||||
| -rw-r--r-- | config/webpack/utils/inline-javascript.js | 2 | ||||
| -rw-r--r-- | config/webpack/utils/script-runtime.js | 2 | ||||
| -rw-r--r-- | config/webpack/utils/scripts.js | 12 | ||||
| -rw-r--r-- | config/webpack/utils/shared-modules.js | 6 | ||||
| -rw-r--r-- | package.json | 2 | ||||
| -rw-r--r-- | src/background/run-ocr.ts | 34 | ||||
| -rw-r--r-- | src/offscreen.json | 3 | ||||
| -rw-r--r-- | src/offscreen/ocr.ts | 1 |
18 files changed, 116 insertions, 71 deletions
diff --git a/config/webpack.config.js b/config/webpack.config.js index 1d3b4c0..4b21245 100644 --- a/config/webpack.config.js +++ b/config/webpack.config.js @@ -1,27 +1,29 @@ -const path = require("path"); -const fs = require("fs"); -const webpack = require("webpack"); -const { merge } = require("webpack-merge"); -const CopyPlugin = require("copy-webpack-plugin"); +import path from "path"; +import fs from "fs"; +import { fileURLToPath } from "url"; +import webpack from "webpack"; +import { merge } from "webpack-merge"; +import CopyPlugin from "copy-webpack-plugin"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); global.ROOT_DIR = path.resolve(__dirname, ".."); global.CONFIG_DIR = path.resolve(ROOT_DIR, "config"); global.SOURCE_DIR = path.resolve(ROOT_DIR, "src"); global.production = process.env.NODE_ENV === "production"; -global.webpackRequire = modulePath => require(path.resolve(CONFIG_DIR, "webpack", modulePath)); - -const CreateManifestPlugin = webpackRequire("plugins/create-manifest-webpack-plugin"); -const CreateRulesPlugin = webpackRequire("plugins/create-rules-webpack-plugin"); -const InjectScriptPlugin = webpackRequire("plugins/inject-script-webpack-plugin"); -const CreateInjectedSharedModulesPlugin = webpackRequire("plugins/create-injected-shared-modules-webpack-plugin"); +import CreateManifestPlugin from "./webpack/plugins/create-manifest-webpack-plugin/index.js"; +import CreateRulesPlugin from "./webpack/plugins/create-rules-webpack-plugin.js"; +import InjectScriptPlugin from "./webpack/plugins/inject-script-webpack-plugin.js"; +import CreateInjectedSharedModulesPlugin from "./webpack/plugins/create-injected-shared-modules-webpack-plugin.js"; -const { inlineJavascript } = webpackRequire("utils/inline-javascript"); -const { getScriptRuntimeFromType } = webpackRequire("utils/script-runtime"); -const { getFileName } = webpackRequire("utils/build-file"); +import { inlineJavascript } from "./webpack/utils/inline-javascript.js"; +import { getScriptRuntimeFromType } from "./webpack/utils/script-runtime.js"; +import { getFileName } from "./webpack/utils/build-file.js"; -const scripts = webpackRequire("utils/scripts"); -const sharedModules = webpackRequire("utils/shared-modules"); +import scripts from "./webpack/utils/scripts.js"; +import sharedModules from "./webpack/utils/shared-modules.js"; const sharedModulesImportedCount = {}; @@ -222,7 +224,7 @@ const sharedModulesConfiguration = merge( } ); -module.exports = [ +export default [ backgroundScriptConfiguration, uninjectedScriptConfiguration, injectedScriptConfiguration, diff --git a/config/webpack/loader/arrange-shared-module-loader.js b/config/webpack/loader/arrange-shared-module-loader.js index 1669a64..2265185 100644 --- a/config/webpack/loader/arrange-shared-module-loader.js +++ b/config/webpack/loader/arrange-shared-module-loader.js @@ -1,10 +1,9 @@ -const path = require("path"); +import path from "path"; +import { ImportManager } from "import-manager"; -const { ImportManager } = require("import-manager"); +import sharedModules from "../utils/shared-modules.js"; -const sharedModules = webpackRequire("utils/shared-modules.js"); - -module.exports = function(source) { +export default function(source) { const currentSharedModuleName = path.basename(this.resourcePath.substring(0, this.resourcePath.length - 3)); if (sharedModules.includes(currentSharedModuleName)) { diff --git a/config/webpack/loader/count-imports-loader.js b/config/webpack/loader/count-imports-loader.js index 4c3faa4..2586332 100644 --- a/config/webpack/loader/count-imports-loader.js +++ b/config/webpack/loader/count-imports-loader.js @@ -1,8 +1,7 @@ -const { ImportManager } = require("import-manager"); +import { ImportManager } from "import-manager"; +import sharedModules from "../utils/shared-modules.js"; -const sharedModules = webpackRequire("utils/shared-modules.js"); - -module.exports = function(source) { +export default function(source) { const { sharedModulesImportedCount } = this.getOptions(); const manager = new ImportManager(source); diff --git a/config/webpack/loader/to-string-loader.js b/config/webpack/loader/to-string-loader.js index cf26b28..248574a 100644 --- a/config/webpack/loader/to-string-loader.js +++ b/config/webpack/loader/to-string-loader.js @@ -1,4 +1,4 @@ -module.exports = function(source) { +export default function(source) { source = source .replaceAll("\\", "\\\\") .replaceAll("`","\\`") 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 aa076b8..695d4ef 100644 --- a/config/webpack/plugins/create-injected-shared-modules-webpack-plugin.js +++ b/config/webpack/plugins/create-injected-shared-modules-webpack-plugin.js @@ -1,8 +1,8 @@ -const path = require("path"); -const fs = require("fs"); -const { sources } = require("webpack"); +import path from "path"; +import fs from "fs"; +import webpack from "webpack"; -const { getFileName } = webpackRequire("utils/build-file"); +import { getFileName } from "../utils/build-file.js"; class CreateInjectedSharedModulesPlugin { constructor({ injectedSharedModulesImportedCount, sortedSharedModules }) { @@ -29,7 +29,7 @@ class CreateInjectedSharedModulesPlugin { .join(""); compilation.emitAsset( `shared/${getFileName("injected-shared-modules", "shared")}.js`, - new sources.RawSource(injectionCode) + new webpack.sources.RawSource(injectionCode) ); } } @@ -38,4 +38,4 @@ class CreateInjectedSharedModulesPlugin { } } -module.exports = CreateInjectedSharedModulesPlugin; +export default CreateInjectedSharedModulesPlugin; diff --git a/config/webpack/plugins/create-manifest-webpack-plugin/index.js b/config/webpack/plugins/create-manifest-webpack-plugin/index.js index 330c22f..2c9ab8e 100644 --- a/config/webpack/plugins/create-manifest-webpack-plugin/index.js +++ b/config/webpack/plugins/create-manifest-webpack-plugin/index.js @@ -1,10 +1,15 @@ -const { sources } = require("webpack"); -const path = require("path"); - -const { getScriptRuntimeFromType } = webpackRequire("utils/script-runtime"); -const { getFileName } = webpackRequire("utils/build-file"); -const scripts = webpackRequire("utils/scripts"); -const manifest = webpackRequire("plugins/create-manifest-webpack-plugin/manifest-template.json"); +import webpack from "webpack"; +import path from "path"; +import fs from "fs"; + +import { getScriptRuntimeFromType } from "../../utils/script-runtime.js"; +import { getFileName } from "../../utils/build-file.js"; +import scripts from "../../utils/scripts.js"; +const manifest = JSON.parse( + fs.readFileSync( + path.resolve("config/webpack/plugins/create-manifest-webpack-plugin/manifest-template.json"), + ), +); class CreateManifestPlugin { constructor({ sharedModulesImportedCount, injectedSharedModulesImportedCount, sortedSharedModules }) { @@ -21,7 +26,7 @@ class CreateManifestPlugin { stage: compiler.webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL }, assets => { - manifest.version = require(path.resolve(ROOT_DIR, "package.json")).version; + manifest.version = JSON.parse(fs.readFileSync((path.resolve(ROOT_DIR, "package.json")))).version; manifest.content_scripts = []; let resources = []; @@ -101,7 +106,7 @@ class CreateManifestPlugin { compilation.emitAsset( "manifest.json", - new sources.RawSource( + new webpack.sources.RawSource( JSON.stringify( manifest, undefined, @@ -117,4 +122,4 @@ class CreateManifestPlugin { } } -module.exports = CreateManifestPlugin; +export default CreateManifestPlugin; diff --git a/config/webpack/plugins/create-rules-webpack-plugin.js b/config/webpack/plugins/create-rules-webpack-plugin.js index 6e31196..5573ddf 100644 --- a/config/webpack/plugins/create-rules-webpack-plugin.js +++ b/config/webpack/plugins/create-rules-webpack-plugin.js @@ -1,6 +1,6 @@ -const path = require("path"); -const fs = require("fs"); -const { sources } = require("webpack"); +import path from "path"; +import fs from "fs"; +import webpack from "webpack"; class CreateRulesPlugin { apply(compiler) { @@ -16,7 +16,7 @@ class CreateRulesPlugin { let ruleId = 1; for (const ruleFileName of ruleFileNames) { - const rule = require(path.resolve(SOURCE_DIR, "rules", ruleFileName)); + const rule = JSON.parse(fs.readFileSync(path.resolve("src/rules", ruleFileName))); if (rule instanceof Array) { for (const currentRule of rule) { @@ -31,7 +31,7 @@ class CreateRulesPlugin { compilation.emitAsset( "rules.json", - new sources.RawSource( + new webpack.sources.RawSource( JSON.stringify( rules, undefined, @@ -47,4 +47,4 @@ class CreateRulesPlugin { } } -module.exports = CreateRulesPlugin; +export default CreateRulesPlugin; diff --git a/config/webpack/plugins/inject-script-webpack-plugin.js b/config/webpack/plugins/inject-script-webpack-plugin.js index 25b1dc6..2b60022 100644 --- a/config/webpack/plugins/inject-script-webpack-plugin.js +++ b/config/webpack/plugins/inject-script-webpack-plugin.js @@ -1,8 +1,8 @@ -const { sources } = require("webpack"); -const path = require("path"); +import webpack from "webpack"; +import path from "path"; -const { getFileName } = webpackRequire("utils/build-file"); -const { getInjectedCode } = webpackRequire("utils/injected-code"); +import { getFileName } from "../utils/build-file.js"; +import { getInjectedCode } from "../utils/injected-code.js"; class InjectScriptPlugin { apply(compiler) { @@ -20,9 +20,9 @@ class InjectScriptPlugin { const scriptInjectorModuleName = getFileName("script-injector", "shared", true); compilation.updateAsset( assetName, - new sources.RawSource(injectedCodeResponse[0]) + new webpack.sources.RawSource(injectedCodeResponse[0]) ); - assets["scripts/" + path.basename(assetName)] = new sources.RawSource( + assets["scripts/" + path.basename(assetName)] = new webpack.sources.RawSource( `$${scriptInjectorModuleName}.injectScriptHead("scripts/injected/${path.basename(assetName)}", ${injectedCodeResponse[1]});` ); } @@ -33,4 +33,4 @@ class InjectScriptPlugin { } } -module.exports = InjectScriptPlugin; +export default InjectScriptPlugin; diff --git a/config/webpack/utils/build-file.js b/config/webpack/utils/build-file.js index 2ab8d86..6945911 100644 --- a/config/webpack/utils/build-file.js +++ b/config/webpack/utils/build-file.js @@ -1,6 +1,6 @@ -const crypto = require("crypto"); +import crypto from "crypto"; -module.exports.getFileName = (fileName, prefix, justHash = false) => { +export const getFileName = (fileName, prefix, justHash = false) => { let hash = crypto .createHash("md5") .update(`${prefix}-${fileName}`) diff --git a/config/webpack/utils/injected-code.js b/config/webpack/utils/injected-code.js index a4f88ac..a2884f6 100644 --- a/config/webpack/utils/injected-code.js +++ b/config/webpack/utils/injected-code.js @@ -1,4 +1,4 @@ -const crypto = require("crypto"); +import crypto from "crypto"; const getHash = url => crypto @@ -7,7 +7,7 @@ const getHash = url => .digest("hex") .substring(16); -module.exports.getInjectedCode = code => { +export const getInjectedCode = code => { const extensionAssets = {}; let i = 0; diff --git a/config/webpack/utils/inline-javascript.js b/config/webpack/utils/inline-javascript.js index ea344a4..456dc11 100644 --- a/config/webpack/utils/inline-javascript.js +++ b/config/webpack/utils/inline-javascript.js @@ -1 +1 @@ -module.exports.inlineJavascript = code => `data:text/javascript;base64,${Buffer.from(code).toString("base64")}`; +export const inlineJavascript = code => `data:text/javascript;base64,${Buffer.from(code).toString("base64")}`; diff --git a/config/webpack/utils/script-runtime.js b/config/webpack/utils/script-runtime.js index a89d4b8..a7c02f7 100644 --- a/config/webpack/utils/script-runtime.js +++ b/config/webpack/utils/script-runtime.js @@ -1,4 +1,4 @@ -module.exports.getScriptRuntimeFromType = scriptType => { +export const getScriptRuntimeFromType = scriptType => { switch (scriptType) { case "before": case "injected-after": diff --git a/config/webpack/utils/scripts.js b/config/webpack/utils/scripts.js index 427aaab..af58e0a 100644 --- a/config/webpack/utils/scripts.js +++ b/config/webpack/utils/scripts.js @@ -1,5 +1,11 @@ -const path = require("path"); -const scripts = require(path.resolve(SOURCE_DIR, "scripts.json")); +import path from "path"; +import fs from "fs"; + +const scripts = JSON.parse( + fs.readFileSync( + path.resolve("./src/scripts.json"), + ), +); const formattedScripts = {}; @@ -14,4 +20,4 @@ for (const scriptType in scripts) { } } -module.exports = formattedScripts; +export default formattedScripts; diff --git a/config/webpack/utils/shared-modules.js b/config/webpack/utils/shared-modules.js index 1584f0f..2b16fa5 100644 --- a/config/webpack/utils/shared-modules.js +++ b/config/webpack/utils/shared-modules.js @@ -1,6 +1,6 @@ -const path = require("path"); -const fs = require("fs"); +import path from "path"; +import fs from "fs"; -module.exports = fs.readdirSync(path.resolve(SOURCE_DIR, "shared")) +export default fs.readdirSync(path.resolve("src/shared")) .filter(sharedModule => !sharedModule.endsWith("import-shared.js")) .map(sharedModule => sharedModule.substring(0, sharedModule.length - 3)); diff --git a/package.json b/package.json index c45b910..60cb50e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,8 @@ { "name": "banglar-bhumi-utils", "version": "1.1.0", + "mode": "browser", + "type": "module", "description": "A chrome extension to improve functionality of the banglarbhumi.gov.in website.", "main": "dist/index.js", "repository": "https://github.com/arpitchakladar/banglar-bhumi-utils", diff --git a/src/background/run-ocr.ts b/src/background/run-ocr.ts index f6d1339..1bf605b 100644 --- a/src/background/run-ocr.ts +++ b/src/background/run-ocr.ts @@ -1,13 +1,41 @@ import Tesseract from "tesseract.js"; +// +// chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { +// if (message.type === "OCR") { +// (async () => { +// const { data: { text, confidence } } = await Tesseract.recognize(message.dataURL, "eng+osd", { +// logger: m => console.log(m), +// }); +// sendResponse({ text, confidence }); +// })(); +// return true; +// } +// +// return false; +// }); chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { if (message.type === "OCR") { (async () => { - const { data: { text, confidence } } = await Tesseract.recognize(message.dataURL, "eng+osd", { - logger: m => console.log(m), + console.log(message); + const worker = await Tesseract.createWorker("eng", 1, { + workerBlobURL: false, + logger: console.log, }); - sendResponse({ text, confidence }); + + await worker.setParameters({ + tessedit_char_whitelist: "ABCDEFGHJKLMNPQRSTUVWXYZ23456789", + }); + + const { + data: { text, confidence } + } = await worker.recognize(message.dataURL); + + await worker.terminate(); + + sendResponse({ type: "OCR_RESULT", text, confidence }); })(); + return true; } diff --git a/src/offscreen.json b/src/offscreen.json new file mode 100644 index 0000000..3159170 --- /dev/null +++ b/src/offscreen.json @@ -0,0 +1,3 @@ +[ + "ocr.ts" +] diff --git a/src/offscreen/ocr.ts b/src/offscreen/ocr.ts new file mode 100644 index 0000000..c645b9f --- /dev/null +++ b/src/offscreen/ocr.ts @@ -0,0 +1 @@ +console.log("THIS IS OFFSCREEN DOCUMENT!"); |
