adnbn 0.2.3 → 0.2.4
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/dist/cli/index.cjs +8 -8
- package/dist/cli/index.cjs.map +1 -1
- package/package.json +1 -2
package/dist/cli/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../node_modules/dotenv/package.json","../../node_modules/dotenv/lib/main.js","../../src/cli/builders/app/command.ts","../../src/cli/resolvers/config.ts","../../src/main/plugin.ts","../../src/cli/bundler/plugins/EntrypointPlugin.ts","../../src/cli/bundler/plugins/GenerateJsonPlugin.ts","../../src/cli/utils/path.ts","../../src/cli/bundler/plugins/ManifestPlugin.ts","../../src/cli/bundler/plugins/ReplacePlugin.ts","../../src/cli/bundler/plugins/WatchPlugin.ts","../../src/types/app.ts","../../src/cli/bundler/utils/optimization.ts","../../src/cli/bundler/utils/output.ts","../../src/types/browser.ts","../../src/cli/plugins/asset.ts","background.ts?raw","command.ts?raw","content.ts?raw","transport.ts?raw","offscreen.ts?raw","offscreen.background.ts?raw","relay.ts?raw","view.ts?raw","../../src/cli/resolvers/path.ts","../../src/cli/entrypoint/finder/AbstractFinder.ts","../../src/cli/entrypoint/finder/AbstractOptionsFinder.ts","../../src/types/entrypoint.ts","../../src/cli/entrypoint/finder/AbstractEntrypointFinder.ts","../../src/cli/entrypoint/finder/AbstractPluginFinder.ts","../../src/cli/entrypoint/name/NameGenerator.ts","../../src/cli/entrypoint/name/InlineNameGenerator.ts","../../src/cli/entrypoint/finder/AbstractViewFinder.ts","../../src/cli/resolvers/plugin.ts","../../src/cli/entrypoint/finder/PluginFinder.ts","../../src/cli/entrypoint/file/resolvers/TsResolver.ts","../../src/cli/entrypoint/file/resolvers/ImportResolver.ts","../../src/types/content.ts","../../src/types/offscreen.ts","../../src/cli/entrypoint/file/injectors/core.ts","../../src/cli/entrypoint/file/injectors/index.ts","../../src/cli/entrypoint/file/SourceFile.ts","../../src/cli/entrypoint/file/OptionFile.ts","../../src/cli/entrypoint/file/parsers/AbstractParser.ts","../../src/cli/entrypoint/file/parsers/FunctionParser.ts","../../src/cli/entrypoint/file/parsers/JSDocParser.ts","../../src/cli/entrypoint/file/parsers/helpers/memberFilters.ts","../../src/cli/entrypoint/file/parsers/ObjectParser.ts","../../src/cli/entrypoint/file/parsers/NodeFinder.ts","../../src/cli/entrypoint/file/parsers/TypeResolver.ts","../../src/cli/entrypoint/file/parsers/SignatureBuilder.ts","../../src/cli/entrypoint/file/parsers/ClassParser.ts","../../src/cli/entrypoint/file/ExpressionFile.ts","../../src/cli/entrypoint/parser/AbstractParser.ts","../../src/cli/entrypoint/parser/BackgroundParser.ts","../../src/types/locale.ts","../../src/locale/utils.ts","../../src/types/command.ts","../../src/cli/entrypoint/parser/CommandParser.ts","../../src/cli/entrypoint/parser/ContentParser.ts","../../src/cli/entrypoint/parser/ViewParser.ts","../../src/cli/entrypoint/parser/PageParser.ts","../../src/cli/entrypoint/parser/PopupParser.ts","../../src/cli/entrypoint/parser/RelayParser.ts","../../src/cli/entrypoint/parser/ServiceParser.ts","../../src/cli/entrypoint/parser/SidebarParser.ts","../../src/cli/entrypoint/parser/OffscreenParser.ts","../../src/cli/entrypoint/finder/BackgroundFinder.ts","../../src/cli/entrypoint/finder/CommandFinder.ts","../../src/cli/entrypoint/finder/ContentFinder.ts","../../src/cli/entrypoint/finder/AbstractAssetFinder.ts","../../src/cli/entrypoint/finder/AssetPluginFinder.ts","../../src/types/icon.ts","../../src/cli/entrypoint/finder/IconFinder.ts","../../src/cli/builders/locale/LocaleValidator.ts","../../src/cli/builders/locale/LocaleBuilder.ts","../../src/cli/builders/locale/index.ts","../../src/cli/entrypoint/finder/LocaleFinder.ts","../../src/cli/entrypoint/finder/AbstractTransportFinder.ts","../../src/cli/entrypoint/finder/OffscreenFinder.ts","../../src/cli/entrypoint/finder/OffscreenViewFinder.ts","../../src/cli/entrypoint/finder/PageFinder.ts","../../src/cli/entrypoint/finder/PopupFinder.ts","../../src/cli/entrypoint/finder/RelayFinder.ts","../../src/cli/entrypoint/finder/ServiceFinder.ts","../../src/cli/entrypoint/finder/SidebarFinder.ts","../../src/cli/entrypoint/utils/file.ts","../../src/cli/virtual/index.ts","../../src/types/background.ts","../../src/cli/plugins/background/BackgroundEntry.ts","../../src/cli/plugins/background/Background.ts","../../src/cli/plugins/background/BackgroundManifest.ts","../../src/cli/plugins/background/Command.ts","../../src/cli/plugins/background/Service.ts","../../src/cli/plugins/typescript/FileBuilder.ts","../../src/cli/plugins/typescript/TypescriptConfig.ts","transport.d.ts?raw","../../src/cli/plugins/typescript/declaration/transport/TransportDeclaration.ts","../../src/cli/plugins/typescript/declaration/VendorDeclaration.ts","../../src/cli/plugins/typescript/index.ts","../../src/cli/plugins/background/ServiceDeclaration.ts","../../src/cli/plugins/background/index.ts","../../src/cli/plugins/content/utils.ts","../../src/cli/plugins/content/ContentName.ts","../../src/cli/plugins/content/ContentManager.ts","../../src/cli/plugins/content/ContentDriver.ts","../../src/cli/plugins/content/Content.ts","../../src/cli/plugins/content/Relay.ts","../../src/cli/plugins/content/RelayDeclaration.ts","../../src/cli/plugins/content/index.ts","../../src/cli/plugins/dotenv/utils.ts","../../src/cli/plugins/dotenv/index.ts","../../src/cli/plugins/html.ts","../../src/cli/plugins/optimization.ts","../../src/cli/plugins/output.ts","../../src/cli/plugins/icon/Icon.ts","icon.d.ts?raw","../../src/cli/plugins/icon/declaration/IconDeclaration.ts","../../src/cli/plugins/icon/index.ts","../../src/cli/plugins/locale/Locale.ts","locale.d.ts?raw","../../src/cli/plugins/locale/declaration/LocaleDeclaration.ts","../../src/cli/plugins/locale/index.ts","../../src/main/env.ts","../../src/cli/plugins/meta/AbstractMeta.ts","../../src/cli/plugins/meta/Author.ts","../../src/cli/plugins/meta/Email.ts","../../src/cli/plugins/meta/Homepage.ts","../../src/types/manifest.ts","../../src/cli/plugins/meta/Incognito.ts","../../src/cli/plugins/meta/index.ts","../../src/cli/plugins/view/View.ts","../../src/cli/plugins/view/index.ts","../../src/cli/plugins/offscreen/Offscreen.ts","../../src/cli/plugins/offscreen/OffscreenDeclaration.ts","../../src/cli/plugins/offscreen/index.ts","../../src/cli/plugins/page/Page.ts","page.d.ts?raw","../../src/cli/plugins/page/declaration/PageDeclaration.ts","../../src/cli/plugins/page/index.ts","../../src/cli/plugins/popup/Popup.ts","popup.d.ts?raw","../../src/cli/plugins/popup/declaration/PopupDeclaration.ts","../../src/cli/plugins/popup/index.ts","../../src/cli/plugins/public.ts","../../src/cli/plugins/sidebar/Sidebar.ts","sidebar.d.ts?raw","../../src/cli/plugins/sidebar/declaration/SidebarDeclaration.ts","../../src/types/sidebar.ts","../../src/cli/plugins/sidebar/index.ts","../../src/cli/plugins/react.ts","../../src/cli/plugins/style.ts","../../src/cli/plugins/version/AbstractVersion.ts","../../src/cli/plugins/version/AddonVersion.ts","../../src/cli/plugins/version/BrowserMinimumVersion.ts","../../src/cli/plugins/version/index.ts","../../src/cli/builders/manifest/ManifestBase.ts","../../src/cli/builders/manifest/utils.ts","../../src/cli/builders/manifest/ManifestV2.ts","../../src/cli/builders/manifest/ManifestV3.ts","../../src/cli/builders/manifest/index.ts","../../src/cli/resolvers/bundler.ts","../../src/cli/builders/app/index.ts","../../package.json","../../src/cli/index.ts"],"names":["fs","path","version","import_dotenv","name","VirtualModulesPlugin","_","compiler","modules","Compilation","sources","rspack","Mode","Command","Browser","pluralize","createMatchPath","ts","ContentScriptAppend","OffscreenReason","_a","_b","_c","definition","aliasDecl","sf","members","AbstractParser","z","Language","filename","substitutions","yaml","keys","background_default","stringify","options","content_default","createHash","key","DefinePlugin","HtmlRspackPlugin","HtmlRspackTagsPlugin","CopyRspackPlugin","locale_default","isEmail","isURL","ManifestIncognito","view_default","offscreen_default","build","RspackVirtualModulePlugin","CssExtractRspackPlugin","semver","existsSync","loadConfig","dotenv","commands","resources","mergeConfig","CleanWebpackPlugin","RsdoctorRspackPlugin","cac","consola"],"mappings":"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","file":"index.cjs","sourcesContent":["{\n \"name\": \"dotenv\",\n \"version\": \"16.4.7\",\n \"description\": \"Loads environment variables from .env file\",\n \"main\": \"lib/main.js\",\n \"types\": \"lib/main.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./lib/main.d.ts\",\n \"require\": \"./lib/main.js\",\n \"default\": \"./lib/main.js\"\n },\n \"./config\": \"./config.js\",\n \"./config.js\": \"./config.js\",\n \"./lib/env-options\": \"./lib/env-options.js\",\n \"./lib/env-options.js\": \"./lib/env-options.js\",\n \"./lib/cli-options\": \"./lib/cli-options.js\",\n \"./lib/cli-options.js\": \"./lib/cli-options.js\",\n \"./package.json\": \"./package.json\"\n },\n \"scripts\": {\n \"dts-check\": \"tsc --project tests/types/tsconfig.json\",\n \"lint\": \"standard\",\n \"pretest\": \"npm run lint && npm run dts-check\",\n \"test\": \"tap run --allow-empty-coverage --disable-coverage --timeout=60000\",\n \"test:coverage\": \"tap run --show-full-coverage --timeout=60000 --coverage-report=lcov\",\n \"prerelease\": \"npm test\",\n \"release\": \"standard-version\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git://github.com/motdotla/dotenv.git\"\n },\n \"funding\": \"https://dotenvx.com\",\n \"keywords\": [\n \"dotenv\",\n \"env\",\n \".env\",\n \"environment\",\n \"variables\",\n \"config\",\n \"settings\"\n ],\n \"readmeFilename\": \"README.md\",\n \"license\": \"BSD-2-Clause\",\n \"devDependencies\": {\n \"@types/node\": \"^18.11.3\",\n \"decache\": \"^4.6.2\",\n \"sinon\": \"^14.0.1\",\n \"standard\": \"^17.0.0\",\n \"standard-version\": \"^9.5.0\",\n \"tap\": \"^19.2.0\",\n \"typescript\": \"^4.8.4\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"browser\": {\n \"fs\": false\n }\n}\n","const fs = require('fs')\nconst path = require('path')\nconst os = require('os')\nconst crypto = require('crypto')\nconst packageJson = require('../package.json')\n\nconst version = packageJson.version\n\nconst LINE = /(?:^|^)\\s*(?:export\\s+)?([\\w.-]+)(?:\\s*=\\s*?|:\\s+?)(\\s*'(?:\\\\'|[^'])*'|\\s*\"(?:\\\\\"|[^\"])*\"|\\s*`(?:\\\\`|[^`])*`|[^#\\r\\n]+)?\\s*(?:#.*)?(?:$|$)/mg\n\n// Parse src into an Object\nfunction parse (src) {\n const obj = {}\n\n // Convert buffer to string\n let lines = src.toString()\n\n // Convert line breaks to same format\n lines = lines.replace(/\\r\\n?/mg, '\\n')\n\n let match\n while ((match = LINE.exec(lines)) != null) {\n const key = match[1]\n\n // Default undefined or null to empty string\n let value = (match[2] || '')\n\n // Remove whitespace\n value = value.trim()\n\n // Check if double quoted\n const maybeQuote = value[0]\n\n // Remove surrounding quotes\n value = value.replace(/^(['\"`])([\\s\\S]*)\\1$/mg, '$2')\n\n // Expand newlines if double quoted\n if (maybeQuote === '\"') {\n value = value.replace(/\\\\n/g, '\\n')\n value = value.replace(/\\\\r/g, '\\r')\n }\n\n // Add to object\n obj[key] = value\n }\n\n return obj\n}\n\nfunction _parseVault (options) {\n const vaultPath = _vaultPath(options)\n\n // Parse .env.vault\n const result = DotenvModule.configDotenv({ path: vaultPath })\n if (!result.parsed) {\n const err = new Error(`MISSING_DATA: Cannot parse ${vaultPath} for an unknown reason`)\n err.code = 'MISSING_DATA'\n throw err\n }\n\n // handle scenario for comma separated keys - for use with key rotation\n // example: DOTENV_KEY=\"dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=prod,dotenv://:key_7890@dotenvx.com/vault/.env.vault?environment=prod\"\n const keys = _dotenvKey(options).split(',')\n const length = keys.length\n\n let decrypted\n for (let i = 0; i < length; i++) {\n try {\n // Get full key\n const key = keys[i].trim()\n\n // Get instructions for decrypt\n const attrs = _instructions(result, key)\n\n // Decrypt\n decrypted = DotenvModule.decrypt(attrs.ciphertext, attrs.key)\n\n break\n } catch (error) {\n // last key\n if (i + 1 >= length) {\n throw error\n }\n // try next key\n }\n }\n\n // Parse decrypted .env string\n return DotenvModule.parse(decrypted)\n}\n\nfunction _log (message) {\n console.log(`[dotenv@${version}][INFO] ${message}`)\n}\n\nfunction _warn (message) {\n console.log(`[dotenv@${version}][WARN] ${message}`)\n}\n\nfunction _debug (message) {\n console.log(`[dotenv@${version}][DEBUG] ${message}`)\n}\n\nfunction _dotenvKey (options) {\n // prioritize developer directly setting options.DOTENV_KEY\n if (options && options.DOTENV_KEY && options.DOTENV_KEY.length > 0) {\n return options.DOTENV_KEY\n }\n\n // secondary infra already contains a DOTENV_KEY environment variable\n if (process.env.DOTENV_KEY && process.env.DOTENV_KEY.length > 0) {\n return process.env.DOTENV_KEY\n }\n\n // fallback to empty string\n return ''\n}\n\nfunction _instructions (result, dotenvKey) {\n // Parse DOTENV_KEY. Format is a URI\n let uri\n try {\n uri = new URL(dotenvKey)\n } catch (error) {\n if (error.code === 'ERR_INVALID_URL') {\n const err = new Error('INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n throw error\n }\n\n // Get decrypt key\n const key = uri.password\n if (!key) {\n const err = new Error('INVALID_DOTENV_KEY: Missing key part')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n // Get environment\n const environment = uri.searchParams.get('environment')\n if (!environment) {\n const err = new Error('INVALID_DOTENV_KEY: Missing environment part')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n // Get ciphertext payload\n const environmentKey = `DOTENV_VAULT_${environment.toUpperCase()}`\n const ciphertext = result.parsed[environmentKey] // DOTENV_VAULT_PRODUCTION\n if (!ciphertext) {\n const err = new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${environmentKey} in your .env.vault file.`)\n err.code = 'NOT_FOUND_DOTENV_ENVIRONMENT'\n throw err\n }\n\n return { ciphertext, key }\n}\n\nfunction _vaultPath (options) {\n let possibleVaultPath = null\n\n if (options && options.path && options.path.length > 0) {\n if (Array.isArray(options.path)) {\n for (const filepath of options.path) {\n if (fs.existsSync(filepath)) {\n possibleVaultPath = filepath.endsWith('.vault') ? filepath : `${filepath}.vault`\n }\n }\n } else {\n possibleVaultPath = options.path.endsWith('.vault') ? options.path : `${options.path}.vault`\n }\n } else {\n possibleVaultPath = path.resolve(process.cwd(), '.env.vault')\n }\n\n if (fs.existsSync(possibleVaultPath)) {\n return possibleVaultPath\n }\n\n return null\n}\n\nfunction _resolveHome (envPath) {\n return envPath[0] === '~' ? path.join(os.homedir(), envPath.slice(1)) : envPath\n}\n\nfunction _configVault (options) {\n _log('Loading env from encrypted .env.vault')\n\n const parsed = DotenvModule._parseVault(options)\n\n let processEnv = process.env\n if (options && options.processEnv != null) {\n processEnv = options.processEnv\n }\n\n DotenvModule.populate(processEnv, parsed, options)\n\n return { parsed }\n}\n\nfunction configDotenv (options) {\n const dotenvPath = path.resolve(process.cwd(), '.env')\n let encoding = 'utf8'\n const debug = Boolean(options && options.debug)\n\n if (options && options.encoding) {\n encoding = options.encoding\n } else {\n if (debug) {\n _debug('No encoding is specified. UTF-8 is used by default')\n }\n }\n\n let optionPaths = [dotenvPath] // default, look for .env\n if (options && options.path) {\n if (!Array.isArray(options.path)) {\n optionPaths = [_resolveHome(options.path)]\n } else {\n optionPaths = [] // reset default\n for (const filepath of options.path) {\n optionPaths.push(_resolveHome(filepath))\n }\n }\n }\n\n // Build the parsed data in a temporary object (because we need to return it). Once we have the final\n // parsed data, we will combine it with process.env (or options.processEnv if provided).\n let lastError\n const parsedAll = {}\n for (const path of optionPaths) {\n try {\n // Specifying an encoding returns a string instead of a buffer\n const parsed = DotenvModule.parse(fs.readFileSync(path, { encoding }))\n\n DotenvModule.populate(parsedAll, parsed, options)\n } catch (e) {\n if (debug) {\n _debug(`Failed to load ${path} ${e.message}`)\n }\n lastError = e\n }\n }\n\n let processEnv = process.env\n if (options && options.processEnv != null) {\n processEnv = options.processEnv\n }\n\n DotenvModule.populate(processEnv, parsedAll, options)\n\n if (lastError) {\n return { parsed: parsedAll, error: lastError }\n } else {\n return { parsed: parsedAll }\n }\n}\n\n// Populates process.env from .env file\nfunction config (options) {\n // fallback to original dotenv if DOTENV_KEY is not set\n if (_dotenvKey(options).length === 0) {\n return DotenvModule.configDotenv(options)\n }\n\n const vaultPath = _vaultPath(options)\n\n // dotenvKey exists but .env.vault file does not exist\n if (!vaultPath) {\n _warn(`You set DOTENV_KEY but you are missing a .env.vault file at ${vaultPath}. Did you forget to build it?`)\n\n return DotenvModule.configDotenv(options)\n }\n\n return DotenvModule._configVault(options)\n}\n\nfunction decrypt (encrypted, keyStr) {\n const key = Buffer.from(keyStr.slice(-64), 'hex')\n let ciphertext = Buffer.from(encrypted, 'base64')\n\n const nonce = ciphertext.subarray(0, 12)\n const authTag = ciphertext.subarray(-16)\n ciphertext = ciphertext.subarray(12, -16)\n\n try {\n const aesgcm = crypto.createDecipheriv('aes-256-gcm', key, nonce)\n aesgcm.setAuthTag(authTag)\n return `${aesgcm.update(ciphertext)}${aesgcm.final()}`\n } catch (error) {\n const isRange = error instanceof RangeError\n const invalidKeyLength = error.message === 'Invalid key length'\n const decryptionFailed = error.message === 'Unsupported state or unable to authenticate data'\n\n if (isRange || invalidKeyLength) {\n const err = new Error('INVALID_DOTENV_KEY: It must be 64 characters long (or more)')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n } else if (decryptionFailed) {\n const err = new Error('DECRYPTION_FAILED: Please check your DOTENV_KEY')\n err.code = 'DECRYPTION_FAILED'\n throw err\n } else {\n throw error\n }\n }\n}\n\n// Populate process.env with parsed values\nfunction populate (processEnv, parsed, options = {}) {\n const debug = Boolean(options && options.debug)\n const override = Boolean(options && options.override)\n\n if (typeof parsed !== 'object') {\n const err = new Error('OBJECT_REQUIRED: Please check the processEnv argument being passed to populate')\n err.code = 'OBJECT_REQUIRED'\n throw err\n }\n\n // Set process.env\n for (const key of Object.keys(parsed)) {\n if (Object.prototype.hasOwnProperty.call(processEnv, key)) {\n if (override === true) {\n processEnv[key] = parsed[key]\n }\n\n if (debug) {\n if (override === true) {\n _debug(`\"${key}\" is already defined and WAS overwritten`)\n } else {\n _debug(`\"${key}\" is already defined and was NOT overwritten`)\n }\n }\n } else {\n processEnv[key] = parsed[key]\n }\n }\n}\n\nconst DotenvModule = {\n configDotenv,\n _configVault,\n _parseVault,\n config,\n decrypt,\n parse,\n populate\n}\n\nmodule.exports.configDotenv = DotenvModule.configDotenv\nmodule.exports._configVault = DotenvModule._configVault\nmodule.exports._parseVault = DotenvModule._parseVault\nmodule.exports.config = DotenvModule.config\nmodule.exports.decrypt = DotenvModule.decrypt\nmodule.exports.parse = DotenvModule.parse\nmodule.exports.populate = DotenvModule.populate\n\nmodule.exports = DotenvModule\n","import {Compiler} from \"@rspack/core\";\n\nexport const build = (compiler: Compiler) => {\n compiler.run((err, stats) => {\n if (err) {\n console.error(\"Rspack compilation error:\", err);\n process.exit(1);\n }\n\n if (stats?.hasErrors()) {\n console.error(\n stats.toString({\n colors: true,\n errors: true,\n })\n );\n\n process.exit(1);\n }\n\n console.log(stats?.toString({colors: true}));\n\n compiler.close(closeErr => {\n if (closeErr) {\n console.error(\"Rspack close error:\", closeErr);\n process.exit(1);\n }\n });\n });\n};\n\nexport const watch = (compiler: Compiler) => {\n const watching = compiler.watch(\n {\n aggregateTimeout: 300,\n ignored: /node_modules/,\n },\n (err, stats) => {\n if (err) {\n console.error(\"Rspack watch error:\", err);\n process.exit(1);\n }\n\n if (stats?.hasErrors()) {\n console.error(\n stats.toString({\n colors: true,\n errors: true,\n })\n );\n\n return;\n }\n\n console.log(stats?.toString({colors: true}));\n }\n );\n\n process.on(\"SIGINT\", () => {\n watching.close(() => {\n console.log(\"Rspack watch mode stopped\");\n process.exit(0);\n });\n });\n};\n","import {existsSync} from \"fs\";\nimport dotenv, {type DotenvParseOutput} from \"dotenv\";\nimport {loadConfig} from \"c12\";\nimport _ from \"lodash\";\n\nimport {\n assetPlugin,\n backgroundPlugin,\n contentPlugin,\n dotenvPlugin,\n htmlPlugin,\n iconPlugin,\n localePlugin,\n metaPlugin,\n offscreenPlugin,\n optimizationPlugin,\n outputPlugin,\n pagePlugin,\n popupPlugin,\n publicPlugin,\n reactPlugin,\n sidebarPlugin,\n stylePlugin,\n typescriptPlugin,\n versionPlugin,\n viewPlugin,\n} from \"../plugins\";\n\nimport {getAppPath, getAppSourcePath, getConfigFile, getInputPath} from \"../resolvers/path\";\n\nimport {Config, OptionalConfig, ReadonlyConfig, UserConfig} from \"@typing/config\";\nimport {Command, Mode} from \"@typing/app\";\nimport {Browser} from \"@typing/browser\";\nimport {Plugin} from \"@typing/plugin\";\nimport {ManifestVersion} from \"@typing/manifest\";\n\nconst getUserConfig = async (config: ReadonlyConfig): Promise<UserConfig> => {\n const configFilePath = getConfigFile(config);\n\n if (existsSync(configFilePath)) {\n const {config: userConfig} = await loadConfig<UserConfig>({\n configFile: configFilePath,\n dotenv: true,\n });\n\n if (config.debug) {\n console.log(\"Loaded user config:\", configFilePath);\n }\n\n return userConfig || {};\n } else if (config.debug) {\n console.warn(\"Config file not found:\", configFilePath);\n }\n\n return {};\n};\n\nconst validateConfig = (config: ReadonlyConfig): ReadonlyConfig => {\n const {\n outputDir,\n srcDir,\n sharedDir,\n appsDir,\n appSrcDir,\n jsDir,\n cssDir,\n assetsDir,\n htmlDir,\n publicDir,\n locale,\n icon,\n } = config;\n\n if (\n [\n outputDir,\n srcDir,\n sharedDir,\n appsDir,\n appSrcDir,\n jsDir,\n cssDir,\n assetsDir,\n htmlDir,\n publicDir,\n locale.dir,\n icon.outputDir,\n icon.sourceDir,\n ]\n .filter(dir => _.isString(dir))\n .some(dir => dir.includes(\"..\"))\n ) {\n throw new Error('Directory paths cannot contain relative paths (\"..\") for security reasons.');\n }\n\n if (appsDir === sharedDir) {\n throw new Error(\"Apps directory (appsDir) and shared directory (sharedDir) cannot be the same.\");\n }\n\n if (srcDir === outputDir) {\n throw new Error(\"Source directory (srcDir) and destination directory (outputDir) cannot be the same.\");\n }\n\n if (srcDir === \".\") {\n throw new Error('Source directory cannot be the root directory (\".\") for security reasons.');\n }\n\n if (publicDir === \".\" || [srcDir, outputDir, appSrcDir].includes(publicDir)) {\n throw new Error(\n 'Public directory cannot be the root directory (\".\") or intersect with other root directories for security reasons.'\n );\n }\n\n return config;\n};\n\nconst updateLocalDotenv = (config: ReadonlyConfig): DotenvParseOutput => {\n const {mode, app, browser, manifestVersion} = config;\n\n const localVars: DotenvParseOutput = {\n APP: app,\n BROWSER: browser,\n MODE: mode,\n MANIFEST_VERSION: String(manifestVersion),\n };\n\n Object.assign(process.env, localVars);\n\n return localVars;\n};\n\nconst loadDotenv = (config: ReadonlyConfig): DotenvParseOutput => {\n const {mode, browser} = config;\n\n const preset = [\n `.env.${mode}.${browser}.local`,\n `.env.${mode}.${browser}`,\n `.env.${browser}.local`,\n `.env.${browser}`,\n `.env.${mode}.local`,\n `.env.${mode}`,\n `.env.local`,\n `.env`,\n ];\n\n const appSourcePaths = preset.map(file => getAppSourcePath(config, file));\n const appPaths = preset.map(file => getAppPath(config, file));\n const rootPaths = preset.map(file => getInputPath(config, file));\n\n const paths = [...appSourcePaths, ...appPaths, ...rootPaths];\n\n const {parsed: fileVars = {}} = dotenv.config({path: paths});\n\n return {...fileVars, ...updateLocalDotenv(config)};\n};\n\nexport default async (config: OptionalConfig): Promise<Config> => {\n let {\n command = Command.Build,\n debug = false,\n configFile = \"adnbn.config.ts\",\n browser = Browser.Chrome,\n app = \"myapp\",\n version = \"VERSION\",\n minimumVersion = \"MINIMUM_VERSION\",\n author = undefined,\n email = \"EMAIL\",\n homepage = \"HOMEPAGE\",\n incognito,\n inputDir = \".\",\n outputDir = \"dist\",\n srcDir = \"src\",\n sharedDir = \"shared\",\n appsDir = \"apps\",\n appSrcDir = \".\",\n jsDir = \"js\",\n cssDir = \"css\",\n assetsDir = \"assets\",\n publicDir = \"public\",\n htmlDir = \".\",\n html = [],\n env = {},\n icon = {},\n locale = {},\n manifestVersion = (new Set<Browser>([Browser.Safari]).has(browser) ? 2 : 3) as ManifestVersion,\n mode = Mode.Development,\n analyze = false,\n plugins = [],\n mergeBackground = false,\n mergeCommands = false,\n mergeContentScripts = false,\n concatContentScripts = true,\n mergeStyles = true,\n mergeIcons = false,\n mergeLocales = true,\n mergePages = false,\n mergePopup = false,\n mergePublic = false,\n multiplePopup = false,\n mergeSidebar = false,\n multipleSidebar = false,\n mergeRelay = false,\n mergeService = false,\n mergeOffscreen = false,\n commonChunks = true,\n assetsFilename = mode === Mode.Production && command === Command.Build && !debug\n ? \"[contenthash:4][ext]\"\n : \"[name]-[contenthash:4][ext]\",\n jsFilename = mode === Mode.Production && command === Command.Build && !debug\n ? \"[contenthash:5].js\"\n : \"[name].js\",\n cssFilename = mode === Mode.Production && command === Command.Build && !debug\n ? \"[contenthash:5].css\"\n : \"[name].css\",\n cssIdentName = mode === Mode.Production && command === Command.Build && !debug\n ? \"[app]-[hash:base64:5]\"\n : \"[local]-[hash:base64:5]\",\n } = config;\n\n let resolvedConfig: Config = {\n command,\n debug,\n mode,\n browser,\n app,\n version,\n minimumVersion,\n email,\n author,\n homepage,\n incognito,\n manifestVersion,\n inputDir,\n outputDir,\n srcDir,\n sharedDir,\n appsDir,\n appSrcDir,\n jsDir,\n cssDir,\n assetsDir,\n publicDir,\n htmlDir,\n html,\n env,\n icon,\n locale,\n plugins,\n analyze,\n configFile,\n mergeBackground,\n mergeCommands,\n mergeContentScripts,\n concatContentScripts,\n mergeStyles,\n mergeIcons,\n mergeLocales,\n mergePages,\n mergePopup,\n mergePublic,\n multiplePopup,\n mergeSidebar,\n multipleSidebar,\n mergeRelay,\n mergeService,\n mergeOffscreen,\n commonChunks,\n assetsFilename,\n jsFilename,\n cssFilename,\n cssIdentName,\n };\n\n let vars = loadDotenv(resolvedConfig);\n\n const {plugins: userPlugins = [], ...userConfig} = await getUserConfig(resolvedConfig);\n\n resolvedConfig = validateConfig({...resolvedConfig, ...userConfig});\n\n vars = {...vars, ...loadDotenv(resolvedConfig)};\n\n const corePlugins: Plugin[] = [\n dotenvPlugin(vars),\n outputPlugin(),\n optimizationPlugin(),\n typescriptPlugin(),\n reactPlugin(),\n iconPlugin(),\n assetPlugin(),\n stylePlugin(),\n localePlugin(),\n metaPlugin(),\n contentPlugin(),\n backgroundPlugin(),\n popupPlugin(),\n publicPlugin(),\n sidebarPlugin(),\n offscreenPlugin(),\n pagePlugin(),\n viewPlugin(),\n htmlPlugin(),\n versionPlugin(),\n ];\n\n return {\n ...resolvedConfig,\n plugins: [...plugins, ...userPlugins, ...corePlugins],\n };\n};\n","import {Plugin, PluginDefinition} from \"@typing/plugin\";\n\nexport type {Plugin, PluginDefinition};\n\nexport function definePlugin<T extends any[] = []>(plugin: PluginDefinition<T>): PluginDefinition<T> {\n return plugin;\n}\n","import _ from \"lodash\";\nimport path from \"path\";\n\nimport {Compiler, EntryNormalized} from \"@rspack/core\";\nimport VirtualModulesPlugin from \"rspack-plugin-virtual-module\";\n\nimport {EntrypointEntries, EntrypointFile} from \"@typing/entrypoint\";\n\nexport type EntrypointPluginTemplate = (file: EntrypointFile) => string;\n\nexport type EntrypointPluginUpdate = (files: ReadonlySet<string>) => Promise<EntrypointEntries>;\n\nexport interface EntrypointPluginModule {\n /**\n * Virtual module name, used in the rspack entry and virtual module.\n */\n name: string;\n\n /**\n * Virtual module content.\n */\n module: string;\n}\n\nexport type EntrypointPluginModules = Map<EntrypointFile, EntrypointPluginModule>;\n\nexport type EntrypointPluginEntryModules = Map<string, EntrypointPluginModules>;\n\nexport default class EntrypointPlugin {\n private readonly pluginName: string = \"EntrypointPlugin\";\n\n private _plugin?: VirtualModulesPlugin;\n private _modules?: EntrypointPluginEntryModules;\n\n protected template?: EntrypointPluginTemplate;\n protected update?: EntrypointPluginUpdate;\n\n public static filename(file: EntrypointFile): string {\n let name = file.file;\n\n if (file.external) {\n const {ext} = path.parse(name);\n name = file.import + ext;\n }\n\n return path.join(\"virtual\", name);\n }\n\n protected get plugin(): VirtualModulesPlugin {\n if (this._plugin) {\n return this._plugin;\n }\n\n const modules = Object.fromEntries(this.getModuleContents(this.modules));\n\n return (this._plugin = new VirtualModulesPlugin(modules, \"entrypoint\"));\n }\n\n protected get modules(): EntrypointPluginEntryModules {\n return (this._modules ??= this.createModules(this.entries));\n }\n\n protected get watchFiles(): ReadonlySet<string> {\n const files = Array.from(this.modules.values())\n .flatMap(modules => Array.from(modules.keys()))\n .filter(({external}) => !external)\n .map(({file}) => file);\n\n return new Set(files);\n }\n\n public static from(entries: EntrypointEntries): EntrypointPlugin {\n return new EntrypointPlugin(entries);\n }\n\n constructor(private readonly entries: EntrypointEntries = new Map()) {}\n\n public virtual(template: EntrypointPluginTemplate): this {\n this.template = template;\n\n return this;\n }\n\n public watch(update: EntrypointPluginUpdate): this {\n this.update = update;\n\n return this;\n }\n\n public apply(compiler: Compiler): void {\n this.plugin.apply(compiler);\n\n compiler.hooks.entryOption.tap(this.pluginName, (_, entry) => {\n this.hookEntryOption(entry);\n });\n\n if (this.update) {\n compiler.hooks.watchRun.tapAsync(this.pluginName, (compiler, callback) => {\n this.hookWatchRun(compiler)\n .then(() => callback())\n .catch(callback);\n });\n }\n }\n\n protected hookEntryOption(entry: EntryNormalized): void {\n if (_.isPlainObject(entry)) {\n this.modules.entries().forEach(([name, modules]) => {\n let currentFiles = structuredClone(entry[name] ?? []);\n\n if (\"import\" in currentFiles) {\n currentFiles = currentFiles.import;\n }\n\n currentFiles.push(...Array.from(modules.values(), ({name}) => name));\n\n entry[name] = {\n import: _.uniq(currentFiles),\n };\n });\n } else {\n throw new Error(\"EntrypointPlugin: entry is not an object\");\n }\n }\n\n protected async hookWatchRun(compiler: Compiler): Promise<void> {\n const {modifiedFiles = new Set()} = compiler;\n\n const watchFiles = this.watchFiles;\n\n const needUpdate = Array.from(modifiedFiles).some(file => {\n if (path.isAbsolute(file)) {\n file = path.relative(compiler.context, file);\n }\n\n return watchFiles.has(file);\n });\n\n if (!needUpdate) {\n return;\n }\n\n const updatedEntries = await this.update!(modifiedFiles);\n\n const updatedModules = this.createModules(updatedEntries);\n\n const currentContents = this.getModuleContents(this.modules);\n const updatedContents = this.getModuleContents(updatedModules);\n\n const removedContents = new Map(Array.from(currentContents).filter(entry => !updatedContents.has(entry[0])));\n\n const addedContents = new Map(Array.from(updatedContents).filter(entry => !currentContents.has(entry[0])));\n\n if (removedContents.size > 0 || addedContents.size > 0) {\n removedContents.keys().forEach(name => {\n this.plugin.writeModule(name, \"\");\n });\n\n addedContents.forEach((content, name) => {\n this.plugin.writeModule(name, content);\n });\n\n updatedModules.entries().forEach(([name, modules]) => {\n let entry: string[] = structuredClone(compiler.options.entry[name]);\n\n if (\"import\" in entry) {\n entry = entry.import as string[];\n }\n\n entry = entry.filter(file => !removedContents.has(file));\n\n entry.push(...Array.from(modules.values(), ({name}) => name));\n\n compiler.options.entry[name] = _.uniq(entry);\n });\n }\n\n this._modules = updatedModules;\n }\n\n protected createModules(entries: EntrypointEntries): EntrypointPluginEntryModules {\n const entryModules: EntrypointPluginEntryModules = new Map();\n\n for (const [name, files] of entries) {\n const modules: EntrypointPluginModules = new Map();\n\n for (const file of files) {\n modules.set(file, {\n name: EntrypointPlugin.filename(file),\n module: this.template ? this.template(file) : \"\",\n });\n }\n\n entryModules.set(name, modules);\n }\n\n return entryModules;\n }\n\n protected getModuleContents(modules: EntrypointPluginEntryModules): Map<string, string> {\n const content = new Map<string, string>();\n\n modules.values().forEach(modules => {\n modules.forEach(({name, module}) => {\n content.set(name, module);\n });\n });\n\n return content;\n }\n}\n","import {Compilation, Compiler, sources} from \"@rspack/core\";\n\ntype JsonValue = string | number | boolean | null | JsonObject | JsonArray;\n\ninterface JsonObject {\n [key: string]: JsonValue;\n}\n\ntype JsonArray = JsonValue[];\n\nexport type GenerateJsonPluginData = Record<string, JsonValue>;\n\nexport type GenerateJsonPluginUpdate = () => Promise<GenerateJsonPluginData>;\n\nexport default class GenerateJsonPlugin {\n private readonly pluginName: string = \"GenerateJsonPlugin\";\n\n private update?: GenerateJsonPluginUpdate;\n\n constructor(protected data: GenerateJsonPluginData) {}\n\n public apply(compiler: Compiler): void {\n compiler.hooks.watchRun.tapPromise(this.pluginName, async () => {\n try {\n const update = this.update;\n\n if (update) {\n this.data = await update();\n }\n } catch (e) {\n console.error(\"GenerateJsonPlugin: Error updating data\", e);\n }\n });\n\n compiler.hooks.compilation.tap(this.pluginName, (compilation: Compilation) => {\n compilation.hooks.processAssets.tap(\n {\n name: this.pluginName,\n stage: Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL,\n },\n () => this.generateFiles(compilation)\n );\n });\n }\n\n public watch(update: GenerateJsonPluginUpdate): this {\n this.update = update;\n\n return this;\n }\n\n protected generateFiles(compilation: Compilation): void {\n Object.entries(this.data).forEach(([filename, jsonData]) => {\n const json = JSON.stringify(jsonData, null, 2);\n\n compilation.emitAsset(filename, new sources.RawSource(json));\n });\n }\n}\n","import path from \"path\";\nimport _ from \"lodash\";\n\nexport const toPosix = (to: string): string => {\n return path.posix.join(...to.split(path.sep));\n};\n\nexport const isFileExtension = (filename: string, extension: string | string[]): boolean => {\n if (_.isString(extension)) {\n extension = [extension];\n }\n\n let {ext} = path.parse(filename);\n\n if (ext.startsWith(\".\")) {\n ext = ext.slice(1);\n }\n\n return extension.includes(ext);\n};\n","import rspack, {Chunk, Compilation, Compiler} from \"@rspack/core\";\n\nimport {toPosix} from \"@cli/utils/path\";\n\nimport {ManifestBuilder, ManifestDependencies, ManifestDependency} from \"@typing/manifest\";\n\nclass ManifestPlugin {\n constructor(private readonly manifest: ManifestBuilder) {}\n\n apply(compiler: Compiler): void {\n compiler.hooks.compilation.tap(\"ManifestPlugin\", compilation => {\n compilation.hooks.processAssets.tap(\n {\n name: \"ManifestPlugin\",\n stage: Compilation.PROCESS_ASSETS_STAGE_ADDITIONS,\n },\n () => {\n const entryDependencies: ManifestDependencies = new Map();\n\n compilation.entrypoints.forEach((entryPoint, entryName) => {\n const dependencies: ManifestDependency = {\n assets: new Set(),\n css: new Set(),\n js: new Set(),\n };\n\n const allChunks = new Set<Chunk>();\n\n this.collectAllChunks(entryPoint, allChunks);\n\n allChunks.forEach((chunk: Chunk) => {\n chunk.files.forEach((fileName: string) => {\n fileName = toPosix(fileName);\n\n if (fileName.endsWith(\".js\")) {\n dependencies.js.add(fileName);\n } else if (fileName.endsWith(\".css\")) {\n dependencies.css.add(fileName);\n } else if (this.isAsset(fileName)) {\n dependencies.assets.add(fileName);\n }\n });\n\n const auxiliaryFiles = chunk.auxiliaryFiles || [];\n\n auxiliaryFiles.forEach((fileName: string) => {\n fileName = toPosix(fileName);\n\n if (fileName.endsWith(\".css\")) {\n dependencies.css.add(fileName);\n } else if (this.isAsset(fileName)) {\n dependencies.assets.add(fileName);\n }\n });\n });\n\n entryDependencies.set(entryName, dependencies);\n });\n\n const manifest = this.manifest.setDependencies(entryDependencies).get();\n const json = JSON.stringify(manifest, null, 2);\n\n compilation.emitAsset(\"manifest.json\", new rspack.sources.RawSource(json));\n }\n );\n });\n }\n\n private collectAllChunks(entryPointOrChunkGroup: any, collectedChunks: Set<Chunk>): Set<Chunk> {\n if (entryPointOrChunkGroup.chunks) {\n entryPointOrChunkGroup.chunks.forEach((chunk: Chunk) => {\n if (!collectedChunks.has(chunk)) {\n collectedChunks.add(chunk);\n }\n });\n }\n\n if (entryPointOrChunkGroup.childrenIterable) {\n for (const childGroup of entryPointOrChunkGroup.childrenIterable) {\n this.collectAllChunks(childGroup, collectedChunks);\n }\n }\n\n return collectedChunks;\n }\n\n private isAsset(file: string): boolean {\n return /\\.(png|jpg|jpeg|gif|svg|woff|woff2|ttf|eot)$/.test(file);\n }\n}\n\nexport default ManifestPlugin;\n","import {type Compiler} from \"@rspack/core\";\n\ninterface ReplaceOptions {\n values: Record<string, string>;\n}\n\nexport default class ReplacePlugin {\n constructor(private options: ReplaceOptions) {}\n\n apply(compiler: Compiler): void {\n compiler.hooks.emit.tap(\"ReplacePlugin\", compilation => {\n for (const filename in compilation.assets) {\n let content = compilation.assets[filename].source().toString();\n let hasChanges = false;\n\n for (const [search, replace] of Object.entries(this.options.values)) {\n if (content.includes(search)) {\n content = content.replace(new RegExp(search, \"g\"), replace);\n hasChanges = true;\n }\n }\n\n if (hasChanges) {\n const sourceMap = {\n version: 3,\n sources: [],\n names: [],\n mappings: \"\",\n file: filename,\n };\n\n compilation.assets[filename] = {\n source: () => content,\n size: () => content.length,\n buffer: () => Buffer.from(content),\n map: () => sourceMap,\n sourceAndMap: () => ({source: content, map: sourceMap}),\n updateHash: () => {},\n };\n }\n }\n });\n }\n}\n","import {Compiler} from \"@rspack/core\";\n\nexport type WatchPluginCallback = (files: ReadonlySet<string>) => Promise<void>;\n\nexport default class WatchPlugin {\n constructor(private readonly callback: WatchPluginCallback) {}\n\n public apply(compiler: Compiler): void {\n compiler.hooks.watchRun.tapAsync(\"WatchPlugin\", async (compiler, callback) => {\n try {\n const {modifiedFiles = new Set()} = compiler;\n\n await this.callback(modifiedFiles);\n\n callback();\n } catch (e) {\n callback(e as Error);\n }\n });\n }\n}\n","export const PackageName = \"adnbn\";\nexport const SystemDir = \".adnbn\";\n\nexport enum Mode {\n None = \"none\",\n Development = \"development\",\n Production = \"production\",\n}\n\nexport enum Command {\n Build = \"build\",\n Watch = \"watch\",\n}\n","import path from \"path\";\nimport {NormalModule, type OptimizationSplitChunksCacheGroupTestFn} from \"@rspack/core\";\n\nimport {PackageName} from \"@typing/app\";\n\nexport const isEntryModuleOrIssuer = (entry: string | string[]): OptimizationSplitChunksCacheGroupTestFn => {\n if (typeof entry === \"string\") {\n entry = [entry];\n }\n\n const entryDirs = entry.flatMap(value => [\n path.join(\"node_modules\", PackageName, \"dist\", \"entry\", value),\n path.join(\"addonbone\", \"dist\", \"entry\", value), // TODO: Only for test. Remove this\n ]);\n\n return (module, {moduleGraph}) => {\n const nm = module as NormalModule;\n const resource = nm.resource || \"\";\n\n if (entryDirs.some(dir => resource.includes(dir))) {\n return true;\n }\n\n for (const connection of moduleGraph.getIncomingConnections(nm)) {\n const origin = connection.originModule as NormalModule | undefined;\n\n if (!origin?.resource) {\n continue;\n }\n\n const originRes = origin.resource;\n\n if (entryDirs.some(dir => originRes.includes(dir))) {\n return true;\n }\n }\n\n return false;\n };\n};\n","import {Filename} from \"@rspack/core\";\nimport _ from \"lodash\";\nimport path from \"path\";\n\n// prettier-ignore\nexport const appFilenameResolver =\n (app: string, filename: Filename, dirname?: string): Extract<Filename, Filename> =>\n (pathData, assetInfo): string => {\n app = _.kebabCase(app);\n\n let name = _.isFunction(filename) ? filename(pathData, assetInfo) : filename;\n\n name = name.replaceAll(\"[app]\", app);\n\n if (dirname) {\n return path.posix.join(dirname, name);\n }\n\n return name;\n };\n","export enum Browser {\n Chrome = \"chrome\",\n Chromium = \"chromium\",\n Edge = \"edge\",\n Firefox = \"firefox\",\n Opera = \"opera\",\n Safari = \"safari\",\n}\n","import {Configuration as RspackConfig} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {appFilenameResolver, ReplacePlugin} from \"@cli/bundler\";\n\nimport {Browser} from \"@typing/browser\";\n\nexport default definePlugin(() => {\n return {\n name: \"adnbn:asset\",\n bundler: ({config}) => {\n const {app, browser, assetsDir, assetsFilename} = config;\n\n return {\n output: {\n assetModuleFilename: appFilenameResolver(app, assetsFilename, assetsDir),\n },\n module: {\n rules: [\n {\n test: /\\.(png|apng|jpe?g|gif|webp|svg|avif|tiff|bmp|ico)$/i,\n oneOf: [\n {\n resourceQuery: /(chrome|browser)/,\n type: \"asset/resource\",\n generator: {\n publicPath: `${browser === Browser.Firefox ? \"moz\" : \"chrome\"}-extension://__MSG_@@extension_id__/`,\n },\n },\n {\n resourceQuery: /base64/,\n type: \"asset/inline\",\n },\n {\n type: \"asset/resource\",\n },\n ],\n },\n ],\n },\n plugins: [\n new ReplacePlugin({\n // Fix for asset/resource publicPath\n values: {\n \"__MSG_%40@extension_id__\": \"__MSG_@@extension_id__\",\n },\n }),\n ],\n } satisfies RspackConfig;\n },\n };\n});\n","import type {BackgroundDefinition} from \"adnbn\";\nimport background, {isValidBackgroundDefinition, isValidBackgroundMainHandler} from \"adnbn/entry/background\";\n\nimport * as module from \"virtual:background-entrypoint\";\n\ntry {\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: BackgroundDefinition = otherDefinition;\n\n if (isValidBackgroundDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidBackgroundMainHandler(defaultDefinition)) {\n definition = {...definition, main: defaultDefinition};\n }\n\n const {main, ...options} = definition;\n\n background({main, ...options});\n} catch (e) {\n console.error(\"The background crashed on startup:\", e);\n}\n","import type {CommandUnresolvedDefinition} from \"adnbn\";\nimport {__t} from \"adnbn/locale\";\nimport command, {isValidCommandDefinition, isValidCommandExecuteFunction} from \"adnbn/entry/command\";\n\nimport * as module from \"virtual:command-entrypoint\";\n\ntry {\n const commandName = \"virtual:command-name\";\n\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: CommandUnresolvedDefinition = otherDefinition;\n\n if (isValidCommandDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidCommandExecuteFunction(defaultDefinition)) {\n definition = {...definition, execute: defaultDefinition};\n }\n\n const {execute, name = commandName, description, ...options} = definition;\n\n command({\n name,\n execute,\n description: description ? __t(description) : undefined,\n ...options,\n });\n} catch (e) {\n console.error(\"The command crashed on startup:\", e);\n}\n","import type {ContentScriptDefinition} from \"adnbn\";\nimport {isContentScriptDefinition, isValidContentScriptDefinitionRenderValue} from \"adnbn/entry/content\";\n\nimport contentScript from \"virtual:content-framework\";\n\nimport * as module from \"virtual:content-entrypoint\";\n\ntry {\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: ContentScriptDefinition = otherDefinition;\n\n if (isContentScriptDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidContentScriptDefinitionRenderValue(defaultDefinition)) {\n definition = {...definition, render: defaultDefinition};\n }\n\n contentScript(definition);\n} catch (e) {\n console.error(\"The content script crashed on startup:\", e);\n}\n","import {\n isValidTransportDefinition,\n isValidTransportInitFunction,\n type TransportType,\n type TransportUnresolvedDefinition,\n type TransportOptions,\n} from \"adnbn/entry/transport\";\n//@ts-ignore\nimport transport from \"adnbn/entry/:entry\";\n\nimport * as module from \"virtual:transport-entrypoint\";\n\ntry {\n const transportName = \"virtual:transport-name\";\n\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: TransportUnresolvedDefinition<TransportOptions, TransportType> = otherDefinition;\n\n if (isValidTransportDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidTransportInitFunction(defaultDefinition)) {\n definition = {...definition, init: defaultDefinition};\n }\n\n const {init, name = transportName, ...options} = definition;\n\n transport({name, init, ...options});\n} catch (e) {\n console.error(\"The :entry crashed on startup:\", e);\n}\n","import type {OffscreenUnresolvedDefinition} from \"adnbn\";\nimport {isValidTransportDefinition, isValidTransportInitFunction, type TransportType} from \"adnbn/entry/transport\";\nimport {Builder as OffscreenBuilder} from \"adnbn/entry/offscreen\";\n\nimport {Builder as ViewBuilder} from \"virtual:view-framework\";\n\nimport * as module from \"virtual:offscreen-entrypoint\";\n\ntry {\n const offscreenName = \"virtual:offscreen-name\";\n\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: OffscreenUnresolvedDefinition<TransportType> = otherDefinition;\n\n if (isValidTransportDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidTransportInitFunction(defaultDefinition)) {\n definition = {...definition, init: defaultDefinition};\n }\n\n const {init, main, name = offscreenName, ...options} = definition;\n\n new OffscreenBuilder({\n name,\n init,\n main,\n ...options,\n })\n .view(new ViewBuilder(options))\n .build()\n .catch(e => {\n console.error(\"Failed to build offscreen: \", e);\n });\n} catch (e) {\n console.error(\"The offscreen crashed on startup:\", e);\n}\n","import {OffscreenBackground} from \"adnbn/offscreen\";\n\ntry {\n new OffscreenBackground().build();\n} catch (e) {\n console.error(\"Failed to build offscreen layer on background:\", e);\n}\n","import type {RelayUnresolvedDefinition} from \"adnbn\";\nimport {isValidTransportDefinition, isValidTransportInitFunction, type TransportType} from \"adnbn/entry/transport\";\nimport {Builder as RelayBuilder} from \"adnbn/entry/relay\";\n\nimport {Builder as ContentScriptBuilder} from \"virtual:content-framework\";\n\nimport * as module from \"virtual:relay-entrypoint\";\n\ntry {\n const relayName = \"virtual:relay-name\";\n\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: RelayUnresolvedDefinition<TransportType> = otherDefinition;\n\n if (isValidTransportDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidTransportInitFunction(defaultDefinition)) {\n definition = {...definition, init: defaultDefinition};\n }\n\n const {init, main, name = relayName, ...options} = definition;\n\n new RelayBuilder({name, init, main, ...options})\n .content(new ContentScriptBuilder(options))\n .build()\n .catch(e => {\n console.error(\"Failed to build relay: \", e);\n });\n} catch (e) {\n console.error(\"The relay crashed on startup:\", e);\n}\n","import type {ViewDefinition, ViewOptions} from \"adnbn\";\nimport {__t} from \"adnbn/locale\";\nimport {isViewDefinition, isValidViewDefinitionRenderValue} from \"adnbn/entry/view\";\n\nimport view from \"virtual:view-framework\";\n\nimport * as module from \"virtual:view-entrypoint\";\n\ntry {\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: ViewDefinition<ViewOptions> = otherDefinition;\n\n if (isViewDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidViewDefinitionRenderValue(defaultDefinition)) {\n definition = {...definition, render: defaultDefinition};\n }\n\n const {title, ...options} = definition;\n\n view({title: title ? __t(title) : undefined, ...options});\n} catch (e) {\n console.error(\"The view crashed on startup:\", e);\n}\n","import path from \"path\";\nimport _ from \"lodash\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport const getRootPath = (to: string): string => {\n return path.resolve(process.cwd(), to);\n};\n\nexport const getInputPath = (config: ReadonlyConfig, to?: string): string => {\n return path.join(config.inputDir, to ?? \"\");\n};\n\nexport const getSourcePath = (config: ReadonlyConfig, to?: string): string => {\n return getInputPath(config, path.join(config.srcDir, to ?? \"\"));\n};\n\nexport const getSharedPath = (config: ReadonlyConfig, to?: string): string => {\n return getInputPath(config, path.join(config.srcDir, config.sharedDir, to ?? \"\"));\n};\n\nexport const getAppPath = (config: ReadonlyConfig, to?: string): string => {\n return getInputPath(config, path.join(config.srcDir, config.appsDir, config.app, to ?? \"\"));\n};\n\nexport const getAppSourcePath = (config: ReadonlyConfig, to?: string): string => {\n return getAppPath(config, path.join(config.appSrcDir, to ?? \"\"));\n};\n\nexport const getOutputPath = (config: ReadonlyConfig): string => {\n return getInputPath(\n config,\n path.join(config.outputDir, `${_.kebabCase(config.app)}-${config.browser}-mv${config.manifestVersion}`)\n );\n};\n\nexport const getConfigFile = (config: ReadonlyConfig): string => {\n return getInputPath(config, config.configFile);\n};\n","import path from \"path\";\nimport _ from \"lodash\";\n\nimport {toPosix} from \"@cli/utils/path\";\nimport {getAppPath, getAppSourcePath, getSharedPath, getSourcePath} from \"@cli/resolvers/path\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {EntrypointFile, EntrypointFinder} from \"@typing/entrypoint\";\n\nexport default abstract class implements EntrypointFinder {\n protected _files?: Set<EntrypointFile>;\n\n protected readonly priorityDirectories: string[];\n\n protected abstract getFiles(): Promise<Set<EntrypointFile>>;\n\n protected constructor(protected readonly config: ReadonlyConfig) {\n this.priorityDirectories = [\n \"node_modules\",\n getSourcePath(config),\n getSharedPath(config),\n getAppPath(config),\n getAppSourcePath(config),\n ];\n }\n\n public clear(): this {\n this._files = undefined;\n\n return this;\n }\n\n public async files(): Promise<Set<EntrypointFile>> {\n if (this._files) {\n return this._files;\n }\n\n const files = Array.from(await this.getFiles()).sort((a, b) => {\n const priorityA = this.priority(a);\n const priorityB = this.priority(b);\n\n if (priorityA !== priorityB) {\n return priorityA - priorityB;\n }\n\n return a.file.length - b.file.length;\n });\n\n return (this._files = new Set(files));\n }\n\n public async empty(): Promise<boolean> {\n return (await this.files()).size === 0;\n }\n\n public async exists(): Promise<boolean> {\n return !(await this.empty());\n }\n\n public holds(file: EntrypointFile): boolean {\n return this._files?.has(file) || false;\n }\n\n protected file(filename: string): EntrypointFile {\n const {dir, name} = path.parse(filename);\n\n const result = toPosix(name === \"index\" ? dir : path.join(dir, name));\n\n return {file: filename, import: result};\n }\n\n protected resolve(name: string, filename: string): EntrypointFile {\n const resolved = path.posix.join(name, filename);\n\n return {\n file: require.resolve(resolved, {paths: [process.cwd()]}),\n import: resolved,\n external: name,\n };\n }\n\n protected resolveSafely(name: string, filename: string): EntrypointFile | undefined {\n try {\n return this.resolve(name, filename);\n } catch {\n return undefined;\n }\n }\n\n protected priority(file: EntrypointFile): number {\n return _.findIndex(this.priorityDirectories, dir => file.file.includes(dir));\n }\n}\n","import AbstractFinder from \"./AbstractFinder\";\nimport {\n EntrypointFile,\n EntrypointOptions,\n EntrypointOptionsFinder,\n EntrypointParser,\n EntrypointType,\n} from \"@typing/entrypoint\";\n\nexport default abstract class<O extends EntrypointOptions>\n extends AbstractFinder\n implements EntrypointOptionsFinder<O>\n{\n protected _parser?: EntrypointParser<O>;\n protected _options?: Map<EntrypointFile, O>;\n protected _contract?: Map<EntrypointFile, string | undefined>;\n\n public abstract type(): EntrypointType;\n\n protected abstract getParser(): EntrypointParser<O>;\n\n public parser(): EntrypointParser<O> {\n return (this._parser ??= this.getParser());\n }\n\n public async options(): Promise<Map<EntrypointFile, O>> {\n return (this._options ??= await this.getOptions());\n }\n\n public async contracts(): Promise<Map<EntrypointFile, string | undefined>> {\n return (this._contract ??= await this.getContracts());\n }\n\n protected async getContracts(): Promise<Map<EntrypointFile, string | undefined>> {\n const collect = new Map<EntrypointFile, string | undefined>();\n\n const options = await this.options();\n\n for (const file of options.keys()) {\n collect.set(file, this.parser().contract(file));\n }\n\n return collect;\n }\n\n protected async getOptions(): Promise<Map<EntrypointFile, O>> {\n const collect = new Map<EntrypointFile, O>();\n\n for (const file of await this.files()) {\n const options = this.parser().options(file);\n\n if (!this.isValidOptions(options)) {\n continue;\n }\n\n collect.set(file, options);\n }\n\n return collect;\n }\n\n protected isValidOptions(options: O): boolean {\n const {browser, app} = this.config;\n\n const {includeBrowser = [], includeApp = [], excludeBrowser = [], excludeApp = []} = options;\n\n if (includeBrowser.length > 0 && !includeBrowser.includes(browser)) {\n return false;\n }\n\n if (includeApp.length > 0 && !includeApp.includes(app)) {\n return false;\n }\n\n if (excludeBrowser.length > 0 && excludeBrowser.includes(browser)) {\n return false;\n }\n\n return !(excludeApp.length > 0 && excludeApp.includes(app));\n }\n\n public clear(): this {\n this._options = undefined;\n this._contract = undefined;\n\n return super.clear();\n }\n}\n","import {Browser} from \"@typing/browser\";\n\nexport const EntrypointFileExtensions: ReadonlySet<string> = new Set([\"ts\", \"tsx\", \"js\", \"jsx\", \"vue\", \"svelte\"]);\n\nexport enum EntrypointType {\n Background = \"background\",\n Command = \"command\",\n ContentScript = \"content\",\n Page = \"page\",\n Service = \"service\",\n Relay = \"relay\",\n Options = \"options\",\n Popup = \"popup\",\n Sidebar = \"sidebar\",\n Offscreen = \"offscreen\",\n}\n\nexport interface EntrypointOptions {\n /**\n * List of target browsers to include this entrypoint in. Defaults to being included in all\n * builds. Cannot be used with `exclude`. You must choose one of the two options.\n *\n * @default undefined\n */\n includeBrowser?: `${Browser}`[] | Browser[];\n\n /**\n * List of target browsers to exclude this entrypoint from. Cannot be used with `include`. You\n * must choose one of the two options.\n *\n * @default undefined\n */\n excludeBrowser?: `${Browser}`[] | Browser[];\n\n /**\n * List of target apps to include this entrypoint in. Defaults to being included in all builds.\n * Cannot be used with `excludeApp`. You must choose one of the two options.\n *\n * @default undefined\n */\n excludeApp?: string[];\n\n /**\n * List of target apps to exclude this entrypoint from. Cannot be used with `includeApp`. You\n * must choose one of the two options.\n *\n * @default undefined\n */\n includeApp?: string[];\n}\n\nexport interface EntrypointFile {\n file: string;\n import: string;\n external?: string;\n}\n\n/**\n * Dictionary of entrypoint for the build configuration.\n *\n * @key {string} - The name of the entrypoint that will be used in the bundler configuration.\n * @value {EntrypointFile[]} - Array of files that will be included in this entrypoint.\n * These files will be compiled and bundled together as part of the specified entrypoint.\n */\nexport type EntrypointEntries = Map<string, Set<EntrypointFile>>;\n\nexport interface EntrypointParser<O extends EntrypointOptions> {\n options(file: EntrypointFile): O;\n\n contract(file: EntrypointFile): string | undefined;\n}\n\nexport interface EntrypointFinder {\n files(): Promise<Set<EntrypointFile>>;\n\n empty(): Promise<boolean>;\n\n exists(): Promise<boolean>;\n\n clear(): this;\n\n holds(file: EntrypointFile): boolean;\n}\n\nexport interface EntrypointOptionsFinder<O extends EntrypointOptions> extends EntrypointFinder {\n type(): EntrypointType;\n\n options(): Promise<Map<EntrypointFile, O>>;\n\n contracts(): Promise<Map<EntrypointFile, string | undefined>>;\n}\n\nexport interface EntrypointNameGenerator {\n reserve(name: string): this;\n\n name(name: string): string;\n\n file(file: EntrypointFile): string;\n\n likely(name?: string): boolean;\n\n has(name: string): boolean;\n\n reset(): this;\n}\n\nexport interface EntrypointBuilder {\n build(): Promise<void>;\n\n destroy(): Promise<void>;\n}\n\nexport type EntrypointConstructorParameter<T> = T extends new (arg: infer P) => any ? P : never;\n","import fs, {Dirent} from \"fs\";\nimport path from \"path\";\nimport pluralize from \"pluralize\";\n\nimport AbstractOptionsFinder from \"./AbstractOptionsFinder\";\n\nimport {getAppSourcePath, getSharedPath} from \"@cli/resolvers/path\";\n\nimport {EntrypointFile, EntrypointFileExtensions, EntrypointOptions} from \"@typing/entrypoint\";\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default abstract class<O extends EntrypointOptions> extends AbstractOptionsFinder<O> {\n protected fileExtensionsPattern: string;\n\n protected possibleIndexFiles: Set<string>;\n\n protected constructor(config: ReadonlyConfig) {\n super(config);\n\n this.fileExtensionsPattern = [...EntrypointFileExtensions].map(ext => ext.replace(\".\", \"\\\\.\")).join(\"|\");\n\n this.possibleIndexFiles = new Set([...EntrypointFileExtensions].map(ext => `index.${ext}`));\n }\n\n public canMerge(): boolean {\n return false;\n }\n\n protected async getFiles(): Promise<Set<EntrypointFile>> {\n const entrypoint = this.type();\n\n let files = new Set<EntrypointFile>();\n\n const appFiles = this.findFiles(getAppSourcePath(this.config));\n\n if (appFiles.size > 0) {\n files = appFiles;\n\n if (this.config.debug) {\n console.info(`App \"${entrypoint}\" files added:`, appFiles);\n }\n }\n\n if ((appFiles.size > 0 && this.canMerge()) || appFiles.size === 0) {\n const sharedFiles = this.findFiles(getSharedPath(this.config));\n\n if (sharedFiles.size > 0) {\n files = new Set([...files, ...sharedFiles]);\n\n if (this.config.debug) {\n console.info(`Shared \"${entrypoint}\" files added:`, sharedFiles);\n }\n }\n }\n\n return files;\n }\n\n protected findFiles(directory: string): Set<EntrypointFile> {\n const entrypoint = this.type();\n const entrypointPluralize = pluralize(entrypoint);\n\n const files: EntrypointFile[] = [];\n\n const finder = (dir: string): void => {\n let entries: Dirent[];\n\n try {\n entries = fs.readdirSync(dir, {withFileTypes: true});\n } catch (e) {\n if (this.config.debug) {\n console.warn(`Error reading ${entrypoint} entrypoint directory: ${dir}`);\n }\n\n return;\n }\n\n for (const entry of entries) {\n const fullPath = path.join(dir, entry.name);\n\n if (entry.isDirectory()) {\n if (this.isValidDirname(entry.name)) {\n for (const indexFile of this.possibleIndexFiles) {\n const indexPath = path.join(fullPath, indexFile);\n\n try {\n const stat = fs.statSync(indexPath);\n\n if (stat.isFile()) {\n files.push(this.file(indexPath));\n }\n } catch (e) {\n if (this.config.debug) {\n console.log(`Error reading ${entrypoint} entrypoint index file: ${indexPath}`);\n }\n }\n }\n } else if (entry.name === entrypointPluralize) {\n finder(fullPath);\n }\n } else if (entry.isFile() && this.isValidFilename(entry.name)) {\n files.push(this.file(fullPath));\n }\n }\n };\n\n finder(directory);\n\n if (files.length === 0) {\n try {\n directory = path.join(directory, entrypoint);\n\n const stat = fs.statSync(directory);\n\n if (stat.isDirectory()) {\n finder(directory);\n }\n } catch (e) {\n if (this.config.debug) {\n console.log(\"Error reading entrypoint directory:\", directory);\n }\n }\n }\n\n return new Set(files);\n }\n\n protected isValidFilename(filename: string): boolean {\n const name = this.type().replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\n const pattern = new RegExp(`^(?:.*\\\\.)?${name}\\\\.(${this.fileExtensionsPattern})$`);\n\n return pattern.test(filename);\n }\n\n protected isValidDirname(dirname: string): boolean {\n const entrypoint = this.type();\n\n return dirname === entrypoint || dirname.endsWith(`.${entrypoint}`);\n }\n}\n","import AbstractEntrypointFinder from \"./AbstractEntrypointFinder\";\n\nimport {EntrypointFile, EntrypointOptions, EntrypointOptionsFinder} from \"@typing/entrypoint\";\n\nexport default abstract class<O extends EntrypointOptions> extends AbstractEntrypointFinder<O> {\n protected _plugin?: EntrypointOptionsFinder<O>;\n\n protected abstract getPlugin(): EntrypointOptionsFinder<O>;\n\n public plugin(): EntrypointOptionsFinder<O> {\n return (this._plugin ??= this.getPlugin());\n }\n\n async empty(): Promise<boolean> {\n return this.plugin().empty();\n }\n\n public clear(): this {\n this.plugin().clear();\n\n return super.clear();\n }\n\n public holds(file: EntrypointFile): boolean {\n return this.plugin().holds(file);\n }\n}\n","import path from \"path\";\n\nimport {EntrypointFile, EntrypointNameGenerator, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class implements EntrypointNameGenerator {\n protected names = new Set<string>();\n\n protected reservedNames = new Set<string>();\n\n constructor(protected readonly entrypoint: EntrypointType) {}\n\n public reserve(name: string): this {\n this.reservedNames.add(name);\n\n if (this.names.has(name)) {\n throw new Error(`Entrypoint name \"${name}\" is already in use.`);\n }\n\n this.names.add(name);\n\n return this;\n }\n\n public name(name: string): string {\n let entryName = name;\n let counter = 1;\n\n if (entryName !== this.entrypoint) {\n entryName = `${entryName}.${this.entrypoint}`;\n }\n\n while (this.has(entryName)) {\n entryName = name === this.entrypoint ? `${counter}.${name}` : `${name}${counter}.${this.entrypoint}`;\n\n counter++;\n }\n\n this.names.add(entryName);\n\n return entryName;\n }\n\n public file(file: EntrypointFile): string {\n const key = \".\" + this.entrypoint;\n\n let {name, dir} = path.parse(file.file);\n\n if (name === \"index\") {\n name = path.basename(dir);\n }\n\n if (name.includes(key)) {\n name = name.split(key)[0];\n }\n\n return this.name(name);\n }\n\n public reset(): this {\n if (this.reservedNames.size === 0) {\n this.names.clear();\n\n return this;\n }\n\n this.names = new Set(this.reservedNames);\n\n return this;\n }\n\n public likely(name?: string): boolean {\n if (!name) {\n return false;\n }\n\n return name === this.entrypoint || name.endsWith(`.${this.entrypoint}`);\n }\n\n public has(name: string): boolean {\n return this.names.has(name);\n }\n}\n","import NameGenerator from \"./NameGenerator\";\n\nexport default class extends NameGenerator {\n public name(name: string): string {\n let entryName = name;\n let counter = 1;\n\n while (this.has(entryName)) {\n entryName = `${name}${counter}`;\n counter++;\n }\n\n this.names.add(entryName);\n\n return entryName;\n }\n\n public likely(name?: string): boolean {\n if (!name) {\n return false;\n }\n\n return name === this.entrypoint || /^.*[1-9]$/.test(name);\n }\n}\n","import path from \"path\";\n\nimport {InlineNameGenerator, NameGenerator} from \"../name\";\n\nimport AbstractPluginFinder from \"./AbstractPluginFinder\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {ViewEntrypointOptions} from \"@typing/view\";\nimport {EntrypointFile, EntrypointNameGenerator} from \"@typing/entrypoint\";\n\nexport interface ViewItem<O extends ViewEntrypointOptions> {\n filename: string;\n alias: string;\n file: EntrypointFile;\n options: O;\n}\n\nexport type ViewItems<O extends ViewEntrypointOptions> = Map<string, ViewItem<O>>;\n\nexport type ViewAliasToFilename = Map<string, string>;\n\nexport type ViewFileToFilename = Map<EntrypointFile, string>;\n\nexport default abstract class<O extends ViewEntrypointOptions> extends AbstractPluginFinder<O> {\n protected _views?: ViewItems<O>;\n\n protected readonly names: EntrypointNameGenerator;\n protected readonly aliases: EntrypointNameGenerator;\n protected readonly filenames: EntrypointNameGenerator;\n\n protected constructor(config: ReadonlyConfig) {\n super(config);\n\n this.names = this.createNameGenerator();\n this.aliases = this.createAliasGenerator();\n this.filenames = this.createFilenameGenerator();\n }\n\n protected createNameGenerator(): EntrypointNameGenerator {\n return new NameGenerator(this.type());\n }\n\n protected createAliasGenerator(): EntrypointNameGenerator {\n return new InlineNameGenerator(this.type());\n }\n\n protected createFilenameGenerator(): EntrypointNameGenerator {\n return new NameGenerator(this.type());\n }\n\n protected async getViews(): Promise<ViewItems<O>> {\n const views: ViewItems<O> = new Map();\n\n for (const [file, options] of await this.plugin().options()) {\n views.set(this.createViewName(file, options), {\n alias: this.createViewAlias(file, options),\n filename: this.createViewFilename(file, options),\n file,\n options,\n });\n\n if (!this.allowMultiple()) {\n break;\n }\n }\n\n return views;\n }\n\n protected createViewFilename(file: EntrypointFile, options: O): string {\n const {as} = options;\n\n const filename = as ? this.filenames.name(as) : this.filenames.file(file);\n\n return path.posix.join(this.config.htmlDir, filename + \".html\");\n }\n\n protected createViewAlias(file: EntrypointFile, options: O): string {\n const {as} = options;\n\n let alias = as ? this.aliases.name(as) : this.aliases.file(file);\n\n if (file.external) {\n alias = file.import;\n }\n\n return alias;\n }\n\n protected createViewName(file: EntrypointFile, options: O): string {\n const {as} = options;\n\n return as ? this.names.name(as) : this.names.file(file);\n }\n\n public async views(): Promise<ViewItems<O>> {\n return (this._views ??= await this.getViews());\n }\n\n public allowMultiple(): boolean {\n return true;\n }\n\n public async getAliasToFilename(): Promise<ViewAliasToFilename> {\n return Array.from(await this.views()).reduce((aliases, [_, item]) => {\n return {\n ...aliases,\n [item.alias]: item.filename,\n };\n }, new Map() as ViewAliasToFilename);\n }\n\n public async getAlias(): Promise<Set<string>> {\n const aliases = new Set<string>();\n\n const views = await this.views();\n\n for (const item of views.values()) {\n aliases.add(item.alias);\n }\n\n return aliases;\n }\n\n public async getFilenames(): Promise<ViewFileToFilename> {\n const views = await this.views();\n\n const filenames: ViewFileToFilename = new Map();\n\n for (const {file, filename} of views.values()) {\n filenames.set(file, filename);\n }\n\n return filenames;\n }\n\n public clear(): this {\n this._views = undefined;\n\n this.names.reset();\n this.aliases.reset();\n this.filenames.reset();\n\n return super.clear();\n }\n}\n","import _ from \"lodash\";\n\nimport {Plugin, PluginHandler, PluginHandlerKeys, PluginHandlerOptions, PluginNameHandlerResult} from \"@typing/plugin\";\n\nexport const resolvePluginHandler = async <O extends object, T>(\n handler: PluginHandler<O, T> | undefined,\n options: O\n): Promise<T | undefined> => {\n if (_.isFunction(handler)) {\n const result = handler(options);\n\n if (result instanceof Promise) {\n return await result;\n }\n\n return result;\n }\n\n return handler;\n};\n\nexport const processPluginHandler = async function* <K extends PluginHandlerKeys>(\n plugins: Plugin[],\n key: K,\n options: PluginHandlerOptions<K>\n): AsyncGenerator<PluginNameHandlerResult<K>, void, void> {\n for await (const plugin of plugins) {\n const handler = plugin[key] as PluginHandler<PluginHandlerOptions<K>> | undefined;\n\n const result = await resolvePluginHandler(handler, options);\n\n if (result !== undefined) {\n yield {name: plugin.name, result};\n }\n }\n};\n","import _ from \"lodash\";\n\nimport AbstractOptionsFinder from \"./AbstractOptionsFinder\";\n\nimport {processPluginHandler} from \"@cli/resolvers/plugin\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {PluginHandlerKeys} from \"@typing/plugin\";\nimport {EntrypointFile, EntrypointOptions, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class<O extends EntrypointOptions> extends AbstractOptionsFinder<O> {\n constructor(\n config: ReadonlyConfig,\n protected readonly key: PluginHandlerKeys,\n protected readonly finder: AbstractOptionsFinder<O>\n ) {\n super(config);\n }\n\n public type(): EntrypointType {\n return this.finder.type();\n }\n\n protected getParser(): EntrypointParser<O> {\n return this.finder.parser();\n }\n\n protected async getFiles(): Promise<Set<EntrypointFile>> {\n const pluginResult = await Array.fromAsync(\n processPluginHandler(this.config.plugins, this.key, {\n config: this.config,\n })\n );\n\n const files = new Set<EntrypointFile>();\n\n for (const {name, result} of pluginResult) {\n let endpoints: Array<string | EntrypointFile> = [];\n\n if (_.isBoolean(result)) {\n endpoints = [this.key];\n } else if (_.isString(result) || _.isPlainObject(result)) {\n endpoints = [result as string | EntrypointFile];\n } else if (_.isArray(result)) {\n endpoints = result;\n } else if (_.isSet(result)) {\n endpoints = Array.from(result as Set<EntrypointFile>);\n }\n\n for (const endpoint of endpoints) {\n files.add(_.isString(endpoint) ? this.resolve(name, endpoint) : endpoint);\n }\n }\n\n return files;\n }\n}\n","import path from \"path\";\nimport fs from \"fs\";\nimport ts from \"typescript\";\nimport {createMatchPath} from \"tsconfig-paths\";\n\nimport {EntrypointFileExtensions} from \"@typing/entrypoint\";\nimport {SystemDir} from \"@typing/app\";\n\nexport default class TsResolver {\n protected static readonly instances: Map<string, TsResolver> = new Map();\n\n protected filename!: string;\n\n protected config?: ts.ParsedCommandLine;\n\n public get matchPath(): {(path: string): string | undefined} {\n const config = this.getConfig();\n\n const absoluteBaseUrl = path.resolve(path.dirname(this.filename), config.options.baseUrl || \".\", SystemDir);\n\n const match = createMatchPath(absoluteBaseUrl, config.options.paths || {});\n\n const extensions = [...EntrypointFileExtensions].map(ext => \".\" + ext);\n\n return (path: string): string | undefined => match(path, undefined, fs.existsSync, extensions);\n }\n\n public static make(filename: string = \"tsconfig.json\"): TsResolver {\n if (this.instances.has(filename)) {\n return this.instances.get(filename)!;\n }\n\n const instance = new this(filename);\n\n this.instances.set(filename, instance);\n\n return instance;\n }\n\n constructor(filename: string = \"tsconfig.json\") {\n this.setFilename(filename);\n }\n\n public getFilename(): string {\n return this.filename;\n }\n\n public setFilename(filename: string): this {\n this.filename = path.isAbsolute(filename) ? filename : path.resolve(process.cwd(), filename);\n\n return this;\n }\n\n public getConfig(): ts.ParsedCommandLine {\n if (this.config) {\n return this.config;\n }\n\n if (!fs.existsSync(this.filename)) {\n throw new Error(`Cannot find tsconfig.json at: ${this.filename}`);\n }\n\n const tsconfigRaw = ts.readConfigFile(this.filename, p => fs.readFileSync(p, \"utf8\"));\n\n const parseConfigHost: ts.ParseConfigHost = {\n fileExists: fs.existsSync,\n readFile: p => fs.readFileSync(p, \"utf8\"),\n readDirectory: ts.sys.readDirectory,\n useCaseSensitiveFileNames: true,\n };\n\n return (this.config = ts.parseJsonConfigFileContent(\n tsconfigRaw.config,\n parseConfigHost,\n path.dirname(this.filename)\n ));\n }\n}\n","import path from \"path\";\nimport fs from \"fs\";\n\nimport TsResolver from \"./TsResolver\";\n\nimport {PackageName} from \"@typing/app\";\nimport {EntrypointFileExtensions} from \"@typing/entrypoint\";\n\nconst extPattern = [...EntrypointFileExtensions].map(ext => ext.replace(\".\", \"\\\\.\")).join(\"|\");\n\nconst extRegex = new RegExp(`\\\\.(${extPattern})$`, \"i\");\n\nconst isValid = (filePath: string): boolean => {\n return extRegex.test(filePath);\n};\n\nconst findFile = (basePath: string): string | undefined => {\n const candidates = [basePath, path.join(basePath, \"index\")];\n\n for (const ext of EntrypointFileExtensions) {\n for (const candidate of candidates) {\n const pathname = `${candidate}.${ext}`;\n\n if (fs.existsSync(pathname)) {\n return pathname;\n }\n }\n }\n};\n\nexport default class {\n protected baseDir: string;\n\n constructor(protected ts: TsResolver = TsResolver.make()) {\n this.baseDir = process.cwd();\n }\n\n public setTs(ts: TsResolver): this {\n this.ts = ts;\n\n return this;\n }\n\n public setBaseDir(baseDir: string): this {\n this.baseDir = baseDir;\n\n return this;\n }\n\n public get(importPath: string): string {\n if (importPath.startsWith(\".\") || importPath.startsWith(\"/\")) {\n let resolvedLocal: string | undefined = path.resolve(this.baseDir, importPath);\n\n if (isValid(resolvedLocal) && fs.existsSync(resolvedLocal)) {\n return resolvedLocal;\n }\n\n resolvedLocal = findFile(resolvedLocal);\n\n if (resolvedLocal) {\n return resolvedLocal;\n }\n\n return importPath;\n }\n\n let aliased = this.ts.matchPath(importPath);\n\n if (aliased) {\n if (isValid(aliased) && fs.existsSync(aliased)) {\n return path.resolve(aliased);\n }\n\n aliased = findFile(aliased);\n\n if (aliased) {\n return path.resolve(aliased);\n }\n }\n\n try {\n if (importPath === PackageName || importPath.startsWith(`${PackageName}/`)) {\n return importPath;\n }\n\n // For external libraries used in tests, just return the import path\n if (process.env.NODE_ENV === \"test\" && importPath === \"somelib\") {\n return importPath;\n }\n\n return require.resolve(importPath, {paths: [this.baseDir]});\n } catch {\n // For external libraries that can't be resolved, return the import path as is\n // This allows us to generate import('libraryName').TypeName syntax\n return importPath;\n }\n }\n}\n","import type {FC, ReactNode} from \"react\";\nimport {Optional} from \"utility-types\";\n\nimport {EntrypointBuilder, EntrypointOptions} from \"@typing/entrypoint\";\nimport {Awaiter, PickNonFunctionProperties} from \"@typing/helpers\";\n\ntype ExecutionWorld = chrome.scripting.ExecutionWorld;\ntype RunAt = chrome.userScripts.RunAt;\n\nexport const ContentScriptMatches = [\"*://*/*\"];\n\nexport interface ContentScriptConfig {\n matches?: string[];\n /**\n * See https://developer.chrome.com/docs/extensions/mv3/content_scripts/\n * @default []\n */\n excludeMatches?: string[];\n /**\n * See https://developer.chrome.com/docs/extensions/mv3/content_scripts/\n * @default []\n */\n includeGlobs?: string[];\n /**\n * See https://developer.chrome.com/docs/extensions/mv3/content_scripts/\n * @default []\n */\n excludeGlobs?: string[];\n /**\n * See https://developer.chrome.com/docs/extensions/mv3/content_scripts/\n * @default false\n */\n allFrames?: boolean;\n /**\n * See https://developer.chrome.com/docs/extensions/mv3/content_scripts/\n * @default \"documentIdle\"\n */\n runAt?: RunAt;\n /**\n * See https://developer.chrome.com/docs/extensions/develop/concepts/content-scripts#isolated_world\n */\n world?: ExecutionWorld;\n /**\n * See https://developer.chrome.com/docs/extensions/mv3/content_scripts/\n * @default false\n */\n matchAboutBlank?: boolean;\n /**\n * See https://developer.chrome.com/docs/extensions/mv3/content_scripts/\n * @default false\n */\n matchOriginAsFallback?: boolean;\n /**\n * Whether this content script requires explicit permission declaration in the extension manifest.\n * When set to true, the content script must be declared in the manifest.json permissions section\n * to be allowed to run on the specified pages.\n *\n * @see https://developer.chrome.com/docs/extensions/mv3/declare_permissions/\n *\n * @default false\n */\n declarative?: boolean;\n}\n\nexport type ContentScriptOptions = ContentScriptConfig & EntrypointOptions;\n\nexport type ContentScriptEntrypointOptions = Partial<ContentScriptOptions>;\n\n// Append\nexport enum ContentScriptAppend {\n Last = \"last\",\n First = \"first\",\n Replace = \"replace\",\n Before = \"before\",\n After = \"after\",\n}\n\n// Mount\nexport type ContentScriptMountFunction = (anchor: Element, container: Element) => void | (() => void);\n\nexport interface ContentScriptMount {\n mount(): boolean | undefined | void;\n\n unmount(): boolean | undefined | void;\n}\n\n// Props\nexport interface ContentScriptProps extends ContentScriptEntrypointOptions {\n anchor: Element;\n}\n\n// Anchor\nexport type ContentScriptAnchor = string | Element | null | undefined;\nexport type ContentScriptAnchorGetter = () => Awaiter<ContentScriptAnchor>;\nexport type ContentScriptAnchorResolver = () => Awaiter<Element[]>;\n\n// Render\nexport type ContentScriptRenderReactComponent = FC<ContentScriptProps>;\nexport type ContentScriptRenderValue = Element | ReactNode | ContentScriptRenderReactComponent;\nexport type ContentScriptRenderHandler = (props: ContentScriptProps) => Awaiter<undefined | ContentScriptRenderValue>;\n\n// Container\nexport type ContentScriptContainerTag = Exclude<keyof HTMLElementTagNameMap, \"html\" | \"body\">;\n\nexport type ContentScriptContainerOptions = {\n [Tag in ContentScriptContainerTag]: {\n tagName: Tag;\n } & Exclude<Optional<PickNonFunctionProperties<HTMLElementTagNameMap[Tag]>>, \"id\">;\n}[ContentScriptContainerTag];\n\nexport type ContentScriptContainerFactory = (\n props: ContentScriptProps\n) => Awaiter<Element | ContentScriptContainerTag | ContentScriptContainerOptions>;\nexport type ContentScriptContainerCreator = (props: ContentScriptProps) => Awaiter<Element>;\n\n// Watch\nexport type ContentScriptWatchStrategy = (update: () => void, context: ContentScriptContext) => () => void;\n\n// Event\nexport enum ContentScriptEvent {\n Mount = \"mount\",\n Unmount = \"unmount\",\n Add = \"add\",\n Remove = \"remove\",\n}\n\nexport type ContentScriptEventCallback = (event: ContentScriptEvent, node: ContentScriptNode) => void;\n\nexport interface ContentScriptEventEmitter {\n on(callback: ContentScriptEventCallback): void;\n\n off(callback: ContentScriptEventCallback): void;\n\n emit(event: ContentScriptEvent, node: ContentScriptNode): void;\n\n emitMount(node: ContentScriptNode): void;\n\n emitUnmount(node: ContentScriptNode): void;\n\n emitAdd(node: ContentScriptNode): void;\n\n emitRemove(node: ContentScriptNode): void;\n\n removeAllListeners(): void;\n\n listenerCount(): number;\n\n hasListeners(): boolean;\n}\n\n// Context\nexport interface ContentScriptContext extends ContentScriptMount {\n nodes: ReadonlySet<ContentScriptNode>;\n\n /**\n * Registers a callback function that will be invoked when a specific content script context event occurs.\n *\n * @param {ContentScriptEventCallback} callback - The function to be executed when the event is triggered. Receives event-related data as its argument.\n * @return {Function} A function that can be called to unsubscribe the callback from the event.\n */\n watch(callback: ContentScriptEventCallback): () => void;\n\n /**\n * Stops watching for changes or events that were previously being observed.\n * Unsubscribes from all event listeners that were registered through the watch method.\n *\n * @return {void} No return value.\n */\n unwatch(): void;\n}\n\n// Main\nexport type ContentScriptMainFunction = (context: ContentScriptContext, options: ContentScriptOptions) => Awaiter<void>;\n\n// Node\nexport interface ContentScriptNode extends ContentScriptMount {\n anchor: Element;\n container?: Element;\n}\n\nexport type ContentScriptNodeSet = Set<ContentScriptNode>;\n\n// Definition\nexport interface ContentScriptDefinition extends ContentScriptEntrypointOptions {\n anchor?: ContentScriptAnchor | ContentScriptAnchorGetter;\n mount?: ContentScriptMountFunction;\n render?: ContentScriptRenderValue | ContentScriptRenderHandler;\n container?: ContentScriptContainerTag | ContentScriptContainerOptions | ContentScriptContainerFactory;\n watch?: true | ContentScriptWatchStrategy;\n main?: ContentScriptMainFunction;\n}\n\n// prettier-ignore\nexport interface ContentScriptResolvedDefinition extends Omit<ContentScriptDefinition, \"anchor\" | \"mount\" | \"container\" | \"render\" | \"watch\"> {\n anchor: ContentScriptAnchorResolver;\n mount: ContentScriptMountFunction;\n render?: ContentScriptRenderHandler;\n container: ContentScriptContainerCreator;\n watch: ContentScriptWatchStrategy;\n}\n\nexport interface ContentScriptAppendDefinition extends Omit<ContentScriptDefinition, \"mount\"> {\n append?: ContentScriptAppend;\n}\n\n// Builder\nexport interface ContentScriptBuilder extends EntrypointBuilder {\n getContext(): ContentScriptContext;\n}\n","import {TransportConfig, TransportDefinition, TransportType} from \"@typing/transport\";\nimport {ViewOptions} from \"@typing/view\";\nimport {Awaiter} from \"@typing/helpers\";\n\nexport const OffscreenGlobalKey = \"adnbnOffscreen\";\nexport const OffscreenGlobalAccess = \"adnbnOffscreenAccess\";\n\nexport enum OffscreenReason {\n /** A reason used for testing purposes only. */\n Testing = \"TESTING\",\n /** The offscreen document is responsible for playing audio. */\n AudioPlayback = \"AUDIO_PLAYBACK\",\n /** The offscreen document needs to embed and script an iframe in order to modify the iframe's content. */\n IframeScripting = \"IFRAME_SCRIPTING\",\n /** The offscreen document needs to embed an iframe and scrape its DOM to extract information. */\n DOMScraping = \"DOM_SCRAPING\",\n /** The offscreen document needs to interact with Blob objects (including URL.createObjectURL()). */\n Blobs = \"BLOBS\",\n /** The offscreen document needs to use the DOMParser API. */\n DOMParser = \"DOM_PARSER\",\n /** The offscreen document needs to interact with media streams from user media (e.g. getUserMedia()). */\n UserMedia = \"USER_MEDIA\",\n /** The offscreen document needs to interact with media streams from display media (e.g. getDisplayMedia()). */\n DisplayMedia = \"DISPLAY_MEDIA\",\n /** The offscreen document needs to use WebRTC APIs. */\n WebRTC = \"WEB_RTC\",\n /** The offscreen document needs to interact with the clipboard APIs(e.g. Navigator.clipboard). */\n Clipboard = \"CLIPBOARD\",\n /** Specifies that the offscreen document needs access to localStorage. */\n LocalStorage = \"LOCAL_STORAGE\",\n /** Specifies that the offscreen document needs to spawn workers. */\n Workers = \"WORKERS\",\n /** Specifies that the offscreen document needs to use navigator.getBattery. */\n BatteryStatus = \"BATTERY_STATUS\",\n /** Specifies that the offscreen document needs to use window.matchMedia. */\n MatchMedia = \"MATCH_MEDIA\",\n /** Specifies that the offscreen document needs to use navigator.geolocation. */\n Geolocation = \"GEOLOCATION\",\n}\n\nexport interface OffscreenConfig extends TransportConfig {\n reasons?: `${OffscreenReason}` | `${OffscreenReason}`[] | OffscreenReason | OffscreenReason[];\n justification?: string;\n}\n\nexport type OffscreenOptions = OffscreenConfig & ViewOptions;\n\nexport type OffscreenEntrypointOptions = Partial<OffscreenOptions>;\n\nexport type OffscreenMainHandler<T extends TransportType> = (\n offscreen: T,\n options: OffscreenEntrypointOptions\n) => Awaiter<void>;\n\nexport interface OffscreenDefinition<T extends TransportType>\n extends TransportDefinition<OffscreenOptions, T>,\n OffscreenEntrypointOptions {\n main?: OffscreenMainHandler<T>;\n}\n\nexport type OffscreenUnresolvedDefinition<T extends TransportType> = Partial<OffscreenDefinition<T>>;\n","import {Command, Mode, PackageName} from \"@typing/app\";\nimport {Browser} from \"@typing/browser\";\nimport {ContentScriptAppend} from \"@typing/content\";\nimport {OffscreenReason} from \"@typing/offscreen\";\n\nimport {Injector} from \"../types\";\n\nexport default (): Injector[] => {\n const resolvers: Injector[] = [];\n\n Object.entries(Browser).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"Browser\",\n name: key,\n value,\n });\n });\n\n Object.entries(Mode).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"Mode\",\n name: key,\n value,\n });\n });\n\n Object.entries(Command).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"Command\",\n name: key,\n value,\n });\n });\n\n Object.entries(ContentScriptAppend).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"ContentScriptAppend\",\n name: key,\n value,\n });\n });\n\n Object.entries(OffscreenReason).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"OffscreenReason\",\n name: key,\n value,\n });\n });\n\n return resolvers;\n};\n","import core from \"./core\";\nimport {Injector} from \"../types\";\n\nexport default (resolvers: Injector[]) =>\n (form: string, target: string, name: string): any => {\n return [...resolvers, ...core()].find(\n resolver => resolver.from === form && resolver.target === target && resolver.name === name\n )?.value;\n };\n","import ts from \"typescript\";\nimport fs from \"fs\";\nimport path from \"path\";\n\nimport {ImportResolver} from \"./resolvers\";\n\nimport injectors from \"./injectors\";\n\nimport {EnumMap, ImportMap, Variable, VariableMap} from \"./types\";\n\nexport default class EntryFile {\n private sourceFile?: ts.SourceFile;\n\n private variables?: VariableMap;\n\n private imports?: ImportMap;\n\n private enums?: EnumMap;\n\n protected importResolver?: ImportResolver;\n\n static make<T extends EntryFile>(this: new (file: string) => T, file: string): T {\n return new this(file);\n }\n\n constructor(protected readonly file: string) {}\n\n public getSourceFile(): ts.SourceFile {\n if (this.sourceFile) {\n return this.sourceFile;\n }\n\n const sourceCode = fs.readFileSync(this.file, \"utf8\");\n\n return (this.sourceFile = ts.createSourceFile(this.file, sourceCode, ts.ScriptTarget.ESNext, true));\n }\n\n public getImports(): ImportMap {\n if (this.imports) {\n return this.imports;\n }\n\n this.imports = new Map();\n\n const parse = (node: ts.Node) => {\n if (ts.isImportDeclaration(node) && node.moduleSpecifier) {\n const importPath = (node.moduleSpecifier as ts.StringLiteral).text;\n if (node.importClause) {\n // default import: import X from '...'\n if (node.importClause.name) {\n this.imports?.set(node.importClause.name.text, this.getInputResolver().get(importPath));\n }\n // named imports: import { A, B } from '...'\n if (node.importClause.namedBindings && ts.isNamedImports(node.importClause.namedBindings)) {\n node.importClause.namedBindings.elements.forEach(el => {\n this.imports?.set(el.name.text, this.getInputResolver().get(importPath));\n });\n }\n }\n }\n // import equals: import X = Y.Z\n else if (ts.isImportEqualsDeclaration(node) && ts.isExternalModuleReference(node.moduleReference)) {\n if (node.moduleReference.expression && ts.isStringLiteral(node.moduleReference.expression)) {\n const importPath = node.moduleReference.expression.text;\n this.imports?.set(node.name.text, this.getInputResolver().get(importPath));\n }\n }\n // import equals with qualified name: import X = Y.Z\n else if (ts.isImportEqualsDeclaration(node)) {\n // For qualified names like chrome.tabs.Tab, we don't need to resolve a path\n // Just store the full qualified name as the \"import path\"\n const qualifiedName = node.moduleReference.getText();\n this.imports?.set(node.name.text, qualifiedName);\n }\n\n ts.forEachChild(node, parse);\n };\n\n parse(this.getSourceFile());\n\n return this.imports;\n }\n\n public getEnums(): EnumMap {\n if (this.enums) {\n return this.enums;\n }\n\n this.enums = new Map();\n\n const parse = (node: ts.Node) => {\n if (ts.isEnumDeclaration(node)) {\n const enumName = node.name.text;\n const enumProperties: Map<string, string | number> = new Map();\n\n node.members.forEach(member => {\n const key = member.name.getText();\n const value = member.initializer ? member.initializer.getText().replace(/['\"]/g, \"\") : key;\n\n enumProperties.set(key, value);\n });\n\n this.enums?.set(enumName, enumProperties);\n }\n\n ts.forEachChild(node, parse);\n };\n\n parse(this.getSourceFile());\n\n return this.enums;\n }\n\n public getVariables(): VariableMap {\n if (this.variables) {\n return this.variables;\n }\n\n this.variables = new Map();\n\n const parse = (node: ts.Node) => {\n if (ts.isVariableStatement(node)) {\n const isExported = node.modifiers?.some(modifier => modifier.kind === ts.SyntaxKind.ExportKeyword);\n\n node.declarationList.declarations.forEach(declaration => {\n if (ts.isIdentifier(declaration.name) && declaration.initializer) {\n const name = declaration.name.text;\n const value = this.parseNode(declaration.initializer);\n\n this.variables?.set(name, {\n name,\n value,\n exported: isExported || false,\n });\n }\n });\n }\n\n if (ts.isExportDeclaration(node) && node.exportClause && ts.isNamedExports(node.exportClause)) {\n node.exportClause.elements.forEach(el => {\n const name = el.name.text;\n\n if (this.variables?.has(name)) {\n const variable = this.variables?.get(name) as Variable;\n\n this.variables?.set(name, {\n name,\n value: variable.value,\n exported: true,\n });\n }\n });\n }\n\n if (ts.isExportAssignment(node)) {\n const expr = node.expression;\n if (ts.isIdentifier(expr) && this.variables?.has(expr.text)) {\n const variable = this.variables?.get(expr.text) as Variable;\n const name = \"default\";\n\n this.variables?.set(name, {\n name,\n value: variable.value,\n exported: true,\n });\n }\n }\n\n ts.forEachChild(node, parse);\n };\n\n parse(this.getSourceFile());\n\n return this.variables;\n }\n\n protected resolveValue(from: string, target: string, name: string): any {\n return injectors([])(from, target, name);\n }\n\n protected findPropertyAccessValue(property: ts.Node): any {\n if (ts.isPropertyAccessExpression(property)) {\n const objectName = property.expression.getText();\n const propertyName = property.name.getText();\n\n const varItem = this.getVariables().get(objectName);\n\n if (varItem) {\n return varItem.value;\n }\n\n const enumItem = this.getEnums().get(objectName);\n\n if (enumItem) {\n return enumItem.get(propertyName);\n }\n\n const importItem = this.getImports().get(objectName);\n\n if (importItem) {\n const resolverItem = this.resolveValue(importItem, objectName, propertyName);\n\n if (resolverItem) {\n return resolverItem;\n }\n\n return EntryFile.make(importItem).findPropertyAccessValue(property);\n }\n\n return `${objectName}.${propertyName}`;\n }\n\n return undefined;\n }\n\n public parseNode(node?: ts.Node): any {\n if (!node) {\n return undefined;\n }\n\n switch (node.kind) {\n case ts.SyntaxKind.StringLiteral:\n return (node as ts.StringLiteral).text;\n case ts.SyntaxKind.TrueKeyword:\n return true;\n case ts.SyntaxKind.FalseKeyword:\n return false;\n case ts.SyntaxKind.NullKeyword:\n return null;\n case ts.SyntaxKind.NumericLiteral:\n return parseFloat((node as ts.NumericLiteral).text);\n case ts.SyntaxKind.Identifier: {\n const id = node as ts.Identifier;\n const name = id.text;\n // local variable\n const local = this.variables?.get(name);\n if (local && local.value !== undefined) {\n return local.value;\n }\n // imported constant: try to resolve its value from source file\n const importPath = this.getImports().get(name);\n if (importPath) {\n // load imported file and check its variables\n const parser = EntryFile.make(importPath);\n const imported = parser.getVariables().get(name);\n if (imported && imported.value !== undefined) {\n return imported.value;\n }\n }\n return name;\n }\n case ts.SyntaxKind.ArrayLiteralExpression:\n return (node as ts.ArrayLiteralExpression).elements.map(element => this.parseNode(element));\n case ts.SyntaxKind.ObjectLiteralExpression:\n return (node as ts.ObjectLiteralExpression).properties\n .filter(\n (property): property is ts.PropertyAssignment =>\n ts.isPropertyAssignment(property) || ts.isShorthandPropertyAssignment(property)\n )\n .reduce(\n (acc, property) => {\n if (ts.isComputedPropertyName(property.name)) {\n return acc;\n }\n\n const key = (property.name as ts.Identifier | ts.StringLiteral).text;\n let value = this.parseNode(property.initializer);\n\n if (typeof value === \"string\" && this.variables?.has(value)) {\n value = this.variables?.get(value)?.value;\n }\n\n acc[key] = value;\n\n return acc;\n },\n {} as Record<string, any>\n );\n case ts.SyntaxKind.PropertyAccessExpression: {\n return this.findPropertyAccessValue(node);\n }\n default:\n return undefined;\n }\n }\n\n protected getInputResolver(): ImportResolver {\n if (this.importResolver) {\n return this.importResolver;\n }\n\n return this.setImportResolver(new ImportResolver());\n }\n\n public setImportResolver(resolver: ImportResolver): ImportResolver {\n return (this.importResolver = resolver.setBaseDir(path.dirname(this.file)));\n }\n}\n","import ts from \"typescript\";\nimport _ from \"lodash\";\n\nimport SourceFile from \"./SourceFile\";\n\nimport {PackageName} from \"@typing/app\";\n\nexport default class<T extends Record<string, any>> extends SourceFile {\n protected definitions = new Set<string>();\n\n protected definition: string | null | undefined = undefined;\n\n protected properties = new Set<string>();\n\n public setDefinition(definition: string | string[]): this {\n if (_.isString(definition)) {\n definition = [definition];\n }\n\n definition.forEach(definition => this.definitions.add(definition));\n\n return this;\n }\n\n public setProperties(properties: string[]): this {\n properties.forEach(property => this.properties.add(property));\n\n return this;\n }\n\n public getOptions(): T {\n return {...this.getOptionsFromVariables(), ...this.getOptionsFromDefinition()};\n }\n\n public getDefinition(): string | undefined {\n if (this.definition === undefined) {\n this.getOptionsFromDefinition();\n }\n\n if (this.definition === null) {\n return;\n }\n\n return this.definition;\n }\n\n protected getOptionsFromVariables(): T {\n const options = Array.from(this.getVariables().values())\n .filter(({name, exported}) => exported && this.properties.has(name))\n .reduce((config, {name, value}) => ({...config, [name]: value}), {});\n\n return options as T;\n }\n\n protected getOptionsFromDefinition(): T {\n let options = {} as T;\n\n const parse = (node: ts.Node) => {\n if (ts.isExportAssignment(node)) {\n const expr = this.getExpressionForOptions(node.expression);\n\n if (expr) {\n options = this.parseNode(expr);\n }\n }\n\n ts.forEachChild(node, parse);\n };\n\n parse(this.getSourceFile());\n\n return _.pickBy(options, (_, key) => this.properties.has(key)) as T;\n }\n\n protected getExpressionForOptions(expr: ts.Expression): ts.Expression | undefined {\n this.definition = null;\n\n if (ts.isObjectLiteralExpression(expr)) {\n return expr;\n } else if (\n (ts.isAsExpression(expr) || ts.isSatisfiesExpression(expr)) &&\n ts.isObjectLiteralExpression(expr.expression)\n ) {\n return expr.expression;\n } else if (ts.isCallExpression(expr) && ts.isIdentifier(expr.expression)) {\n const functionName = expr.expression.text;\n\n if (this.getImports().get(functionName) !== PackageName) {\n console.warn(`Function ${functionName} is not imported from '${PackageName}' on file ${this.file}`);\n\n return;\n }\n\n if (this.definitions.has(functionName) && expr.arguments.length > 0) {\n const arg = expr.arguments[0];\n\n if (ts.isObjectLiteralExpression(arg)) {\n this.definition = functionName;\n\n return arg;\n }\n }\n }\n }\n}\n","import ts from \"typescript\";\nimport SourceFile from \"../SourceFile\";\nimport {MemberSignature} from \"./types\";\n\n/**\n * Abstract base class for all expression parsers.\n */\nexport default abstract class AbstractParser {\n /**\n * Constructor for the parser.\n *\n * @param sourceFile The source file to parse\n */\n protected constructor(protected readonly sourceFile: SourceFile) {}\n\n /**\n * Parse a node and return a record of member signatures.\n *\n * @param node The node to parse\n * @returns A record of member signatures or undefined if the node cannot be parsed\n */\n abstract parse(node: ts.Node): Record<string, MemberSignature> | undefined;\n\n /**\n * Extracts a textual property name.\n *\n * @param name The property name node\n * @returns The extracted name as a string\n */\n public getName(name: ts.PropertyName | ts.BindingName | ts.Node): string {\n if (ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name)) {\n return name.text;\n }\n\n return name.getText();\n }\n\n /**\n * Unwraps an expression by removing type assertions, parentheses, etc.\n *\n * @param expr The expression to unwrap\n * @returns The unwrapped expression\n */\n public unwrapExpression(expr: ts.Expression): ts.Expression {\n // remove `as` and `satisfies` assertions, parentheses\n if (ts.isAsExpression(expr) || ts.isSatisfiesExpression(expr) || ts.isParenthesizedExpression(expr)) {\n return this.unwrapExpression(expr.expression as ts.Expression);\n }\n\n return expr;\n }\n}\n","import ts from \"typescript\";\n\nimport SourceFile from \"../SourceFile\";\nimport AbstractParser from \"./AbstractParser\";\nimport NodeFinder from \"./NodeFinder\";\nimport ClassParser from \"./ClassParser\";\nimport ObjectParser from \"./ObjectParser\";\n\nimport {MemberSignature} from \"./types\";\n\n/**\n * Parses function expressions and arrow functions.\n */\nexport default class FunctionParser extends AbstractParser {\n /**\n * Constructor for the FunctionParser.\n *\n * @param sourceFile The source file to parse\n * @param nodeFinder The node finder to use for finding nodes\n * @param objectParser The object parser to use for parsing object literals\n * @param classParser The class parser to use for parsing classes\n */\n constructor(\n sourceFile: SourceFile,\n private readonly nodeFinder: NodeFinder,\n private readonly objectParser: ObjectParser,\n private readonly classParser: ClassParser\n ) {\n super(sourceFile);\n }\n\n /**\n * Parses a function or arrow function: finds its return expression,\n * then parses that if it's an object literal or a class instantiation.\n *\n * @param fn The function expression or arrow function to parse\n * @returns A record of member signatures or undefined if the function cannot be parsed\n */\n public parse(fn: ts.FunctionExpression | ts.ArrowFunction): Record<string, MemberSignature> | undefined {\n let retExpr: ts.Expression | undefined;\n\n // block-bodied function\n if (ts.isBlock(fn.body)) {\n for (const stmt of fn.body.statements) {\n if (ts.isReturnStatement(stmt) && stmt.expression) {\n retExpr = stmt.expression;\n break;\n }\n }\n } else {\n // concise arrow\n retExpr = fn.body;\n }\n\n if (!retExpr) return undefined;\n\n // unwrap assertions, parentheses, wrapper calls\n const expr = this.unwrapExpression(retExpr);\n\n // object literal return\n if (ts.isObjectLiteralExpression(expr)) {\n return this.objectParser.parse(expr);\n }\n\n // class instance return: new ClassName(...) or inline class expression\n if (ts.isNewExpression(expr)) {\n const ctor = expr.expression;\n\n // external named class\n if (ts.isIdentifier(ctor)) {\n return this.classParser.parseFileClass(ctor.text);\n }\n\n // inline anonymous class expression\n if (ts.isClassExpression(ctor)) {\n return this.classParser.parse(ctor);\n }\n }\n\n // variable reference return: identifier pointing to object or class instance\n if (ts.isIdentifier(retExpr)) {\n const name = retExpr.text;\n const decl = this.nodeFinder.findVariableDeclaration(name);\n\n if (decl && decl.initializer) {\n const init = decl.initializer;\n\n if (ts.isObjectLiteralExpression(init)) {\n return this.objectParser.parse(init);\n }\n\n if (ts.isNewExpression(init)) {\n const ctor2 = init.expression;\n\n if (ts.isIdentifier(ctor2)) {\n return this.classParser.parseFileClass(ctor2.text);\n }\n\n if (ts.isClassExpression(ctor2)) {\n return this.classParser.parse(ctor2);\n }\n }\n }\n }\n\n return undefined;\n }\n}\n","import ts from \"typescript\";\n\n/**\n * Parses JSDoc comments to extract type information.\n */\nexport default class JSDocParser {\n /**\n * Extracts a type from a JSDoc tag with @type annotation.\n *\n * @param node The node to extract JSDoc type from\n * @returns The extracted type or undefined if no JSDoc type is found\n */\n public getJSDocType(node: ts.Node): string | undefined {\n const jsDocTags = this.getJSDocTags(node);\n\n // Look for @type tag\n for (const tag of jsDocTags) {\n if (ts.isJSDocTypeTag(tag) && tag.typeExpression) {\n return this.parseJSDocTypeExpression(tag.typeExpression);\n }\n }\n\n return undefined;\n }\n\n /**\n * Extracts parameter types from JSDoc @param annotations.\n *\n * @param node The function-like node to extract parameter types from\n * @returns A map of parameter names to their JSDoc types\n */\n public getJSDocParameterTypes(node: ts.SignatureDeclaration): Map<string, string> {\n const result = new Map<string, string>();\n const nestedParams = new Map<string, Map<string, string>>();\n const jsDocTags = this.getJSDocTags(node);\n\n // Get custom type definitions\n const typeDefinitions = this.getJSDocTypeDefinitions(node);\n\n // First pass: collect all parameters and their types\n for (const tag of jsDocTags) {\n if (ts.isJSDocParameterTag(tag) && tag.typeExpression && tag.name) {\n // Extract just the parameter name without any JSDoc comments\n let paramName = tag.name.getText();\n\n // Clean up the parameter name to remove any JSDoc comments\n // This handles both regular parameters and nested parameters like options.method\n const match = paramName.match(/(\\w+)(?:\\.(\\w+))?/);\n if (match) {\n if (match[2]) {\n // This is a nested parameter like options.method\n const parentParam = match[1];\n const childProp = match[2];\n\n // Create or update the nested parameter map\n if (!nestedParams.has(parentParam)) {\n nestedParams.set(parentParam, new Map<string, string>());\n }\n\n let paramType = this.parseJSDocTypeExpression(tag.typeExpression);\n\n // Check if the parameter type is a custom type definition\n if (typeDefinitions.has(paramType)) {\n paramType = typeDefinitions.get(paramType)!;\n }\n\n nestedParams.get(parentParam)!.set(childProp, paramType);\n } else {\n // This is a regular parameter\n paramName = match[1];\n\n // If this parameter already has nested properties, don't override it\n if (!nestedParams.has(paramName)) {\n let paramType = this.parseJSDocTypeExpression(tag.typeExpression);\n\n // Check if the parameter type is a custom type definition\n if (typeDefinitions.has(paramType)) {\n paramType = typeDefinitions.get(paramType)!;\n }\n\n result.set(paramName, paramType);\n }\n }\n }\n }\n }\n\n // Second pass: build object types for nested parameters\n for (const [parentParam, childParams] of nestedParams.entries()) {\n const properties: string[] = [];\n\n for (const [childProp, childType] of childParams.entries()) {\n properties.push(`${childProp}: ${childType}`);\n }\n\n // Create the object type\n result.set(parentParam, `{${properties.join(\"; \")};}`);\n }\n\n return result;\n }\n\n /**\n * Extracts the return type from a JSDoc @returns annotation.\n *\n * @param node The function-like node to extract return type from\n * @returns The extracted return type or undefined if no JSDoc return type is found\n */\n public getJSDocReturnType(node: ts.SignatureDeclaration): string | undefined {\n const jsDocTags = this.getJSDocTags(node);\n\n // Look for @returns tag\n for (const tag of jsDocTags) {\n if (ts.isJSDocReturnTag(tag) && tag.typeExpression) {\n return this.parseJSDocTypeExpression(tag.typeExpression);\n }\n }\n\n return undefined;\n }\n\n /**\n * Gets all JSDoc tags for a node.\n *\n * @param node The node to get JSDoc tags for\n * @returns An array of JSDoc tags\n */\n private getJSDocTags(node: ts.Node): ts.JSDocTag[] {\n const jsDocTags: ts.JSDocTag[] = [];\n\n // Get all JSDoc comments attached to the node\n const jsDocComments = ts.getJSDocTags(node);\n if (jsDocComments) {\n jsDocTags.push(...jsDocComments);\n }\n\n return jsDocTags;\n }\n\n /**\n * Extracts type parameters from JSDoc @template annotations.\n *\n * @param node The function-like node to extract type parameters from\n * @returns An array of type parameter names\n */\n public getJSDocTypeParameters(node: ts.SignatureDeclaration): string[] {\n const result: string[] = [];\n const jsDocTags = this.getJSDocTags(node);\n\n // Look for @template tags\n for (const tag of jsDocTags) {\n if (ts.isJSDocTemplateTag(tag) && tag.typeParameters) {\n // Iterate through each type parameter and extract its name\n for (const typeParam of tag.typeParameters) {\n if (typeParam.name) {\n const typeName = typeParam.name.getText();\n result.push(typeName);\n }\n }\n }\n }\n\n return result;\n }\n\n /**\n * Extracts custom type definitions from JSDoc @typedef annotations.\n *\n * @param node The node to extract custom type definitions from\n * @returns A map of type names to their definitions\n */\n public getJSDocTypeDefinitions(node: ts.Node): Map<string, string> {\n const result = new Map<string, string>();\n const jsDocTags = this.getJSDocTags(node);\n\n // Look for @typedef tags\n for (const tag of jsDocTags) {\n if (ts.isJSDocTypedefTag(tag) && tag.name && tag.typeExpression) {\n const typeName = tag.name.getText();\n const typeExpression = this.parseJSDocTypeExpression(tag.typeExpression);\n\n // Store the type definition\n result.set(typeName, typeExpression);\n }\n }\n\n // Look for @property tags to build object type definitions\n const typedefProperties = new Map<string, Map<string, string>>();\n\n for (const tag of jsDocTags) {\n if (ts.isJSDocPropertyTag(tag) && tag.name && tag.typeExpression) {\n // The property tag should be associated with a typedef\n const comment = tag.parent?.getText() || \"\";\n const typedefMatch = comment.match(/@typedef\\s+\\{[^}]+\\}\\s+(\\w+)/);\n\n if (typedefMatch) {\n const typedefName = typedefMatch[1];\n const propName = tag.name.getText();\n const propType = this.parseJSDocTypeExpression(tag.typeExpression);\n const isOptional = tag.isBracketed || comment.includes(`[${propName}]`);\n\n // Create or update the property map for this typedef\n if (!typedefProperties.has(typedefName)) {\n typedefProperties.set(typedefName, new Map<string, string>());\n }\n\n // Add the property to the map\n typedefProperties\n .get(typedefName)!\n .set(propName, `${propName}${isOptional ? \"?\" : \"\"}: ${propType}`);\n }\n }\n }\n\n // Build object type definitions from properties\n for (const [typedefName, properties] of typedefProperties.entries()) {\n const props = Array.from(properties.values());\n if (props.length > 0) {\n result.set(typedefName, `{ ${props.join(\"; \")}; }`);\n }\n }\n\n return result;\n }\n\n /**\n * Parses a JSDoc type expression into a string representation.\n *\n * @param typeExpression The JSDoc type expression to parse\n * @returns The parsed type as a string\n */\n private parseJSDocTypeExpression(typeExpression: ts.JSDocTypeExpression | ts.JSDocTypeLiteral): string {\n // Handle JSDocTypeLiteral\n if (ts.isJSDocTypeLiteral(typeExpression)) {\n // For JSDocTypeLiteral, we need to build a type string from its properties\n if (typeExpression.jsDocPropertyTags && typeExpression.jsDocPropertyTags.length > 0) {\n const props = typeExpression.jsDocPropertyTags.map(tag => {\n const name = tag.name.getText();\n const type = tag.typeExpression ? this.parseJSDocTypeExpression(tag.typeExpression) : \"any\";\n const optional = tag.isBracketed;\n return `${name}${optional ? \"?\" : \"\"}: ${type}`;\n });\n return `{ ${props.join(\"; \")}; }`;\n }\n // If it's an array type, return array of any\n if (typeExpression.isArrayType) {\n return \"any[]\";\n }\n // Default to any for empty type literals\n return \"any\";\n }\n\n // Extract the type from the JSDoc type expression (for JSDocTypeExpression)\n const typeNode = typeExpression.type;\n\n // Check if typeNode is undefined\n if (!typeNode) {\n return \"any\";\n }\n\n // Simple approach: extract the text directly from the JSDoc comment\n // This handles most common JSDoc type formats\n const text = typeNode.getText();\n\n // Handle special cases for common JSDoc types\n if (text === \"*\") {\n return \"any\";\n }\n\n // Handle array types (e.g., string[])\n if (text.endsWith(\"[]\")) {\n return text;\n }\n\n // Handle object types (e.g., {foo: string, bar: number})\n if (text.startsWith(\"{\") && text.endsWith(\"}\")) {\n return this.formatObjectType(text);\n }\n\n // Handle union types (e.g., string|number)\n if (text.includes(\"|\")) {\n return text;\n }\n\n // Handle function types (e.g., function(string): number)\n if (text.includes(\"function(\")) {\n return text;\n }\n\n // Handle import types (e.g., import('somelib').SomeType)\n if (text.includes(\"import(\")) {\n return text;\n }\n\n // Handle generic types (e.g., Array<string>, Promise<Object>)\n if (text.includes(\"<\") && text.includes(\">\")) {\n // Extract the type name and arguments\n const typeName = text.substring(0, text.indexOf(\"<\"));\n const typeArgs = text.substring(text.indexOf(\"<\") + 1, text.lastIndexOf(\">\"));\n\n // Check if the type arguments contain an object type\n if (typeArgs.includes(\"{\") && typeArgs.includes(\"}\")) {\n // Format the object type in the type arguments\n const formattedTypeArgs = this.formatNestedTypes(typeArgs);\n return `${typeName}<${formattedTypeArgs}>`;\n }\n\n return `${typeName}<${typeArgs}>`;\n }\n\n // For simple types, just return the text\n return text;\n }\n\n /**\n * Formats an object type string to match the expected format.\n *\n * @param objectType The object type string to format\n * @returns The formatted object type string\n */\n private formatObjectType(objectType: string): string {\n // Remove the braces and get the content\n const content = objectType.substring(1, objectType.length - 1).trim();\n\n // Split by commas, but only at the top level (not inside nested objects)\n const properties: string[] = [];\n let depth = 0;\n let currentProp = \"\";\n\n for (let i = 0; i < content.length; i++) {\n const char = content[i];\n\n if (char === \"{\") {\n depth++;\n currentProp += char;\n } else if (char === \"}\") {\n depth--;\n currentProp += char;\n } else if (char === \",\" && depth === 0) {\n properties.push(currentProp.trim());\n currentProp = \"\";\n } else {\n currentProp += char;\n }\n }\n\n if (currentProp.trim()) {\n properties.push(currentProp.trim());\n }\n\n // Process each property to handle nested objects\n const formattedProperties = properties.map(prop => {\n const colonIndex = prop.indexOf(\":\");\n if (colonIndex === -1) return prop;\n\n const propName = prop.substring(0, colonIndex).trim();\n let propType = prop.substring(colonIndex + 1).trim();\n\n // If the property type is an object, format it recursively\n if (propType.startsWith(\"{\") && propType.endsWith(\"}\")) {\n propType = this.formatObjectType(propType);\n }\n\n return `${propName}: ${propType}`;\n });\n\n // Join properties with semicolons\n return `{ ${formattedProperties.join(\"; \")}; }`;\n }\n\n /**\n * Formats nested types in a type string.\n *\n * @param typeString The type string to format\n * @returns The formatted type string\n */\n private formatNestedTypes(typeString: string): string {\n // Check if the type string contains an object type\n if (typeString.includes(\"{\") && typeString.includes(\"}\")) {\n // Find all object types in the type string\n let result = typeString;\n let startIndex = result.indexOf(\"{\");\n\n while (startIndex !== -1) {\n // Find the matching closing brace\n let depth = 1;\n let endIndex = startIndex + 1;\n\n while (depth > 0 && endIndex < result.length) {\n if (result[endIndex] === \"{\") {\n depth++;\n } else if (result[endIndex] === \"}\") {\n depth--;\n }\n endIndex++;\n }\n\n if (depth === 0) {\n // Extract the object type\n const objectType = result.substring(startIndex, endIndex);\n // Format the object type\n const formattedObjectType = this.formatObjectType(objectType);\n // Replace the object type in the result\n result = result.substring(0, startIndex) + formattedObjectType + result.substring(endIndex);\n // Find the next object type\n startIndex = result.indexOf(\"{\", startIndex + formattedObjectType.length);\n } else {\n // No matching closing brace found, break the loop\n break;\n }\n }\n\n return result;\n }\n\n return typeString;\n }\n\n /**\n * Adds a property to an object type string.\n *\n * @param objectType The object type string to add the property to\n * @param propertyName The name of the property to add\n * @param propertyType The type of the property to add\n * @returns The updated object type string\n */\n private addPropertyToObjectType(objectType: string, propertyName: string, propertyType: string): string {\n // Remove the braces and split by semicolons\n const content = objectType.substring(1, objectType.length - 1).trim();\n const properties = content\n ? content\n .split(\";\")\n .map(p => p.trim())\n .filter(Boolean)\n : [];\n\n // Check if the property already exists\n const propIndex = properties.findIndex(p => p.startsWith(`${propertyName}:`));\n\n if (propIndex >= 0) {\n // Update the existing property\n properties[propIndex] = `${propertyName}: ${propertyType}`;\n } else {\n // Add the new property\n properties.push(`${propertyName}: ${propertyType}`);\n }\n\n // Reconstruct the object type\n return `{ ${properties.join(\"; \")}; }`;\n }\n}\n","export const shouldIncludeMember = (name: string): boolean => {\n return !name.startsWith(\"_\");\n};\n","import ts from \"typescript\";\nimport _ from \"lodash\";\n\nimport SourceFile from \"../SourceFile\";\nimport AbstractParser from \"./AbstractParser\";\nimport SignatureBuilder from \"./SignatureBuilder\";\nimport JSDocParser from \"./JSDocParser\";\n\nimport {shouldIncludeMember} from \"./helpers/memberFilters\";\n\nimport {MemberSignature} from \"./types\";\n\n/**\n * Parses object literal expressions.\n */\nexport default class ObjectParser extends AbstractParser {\n /**\n * Constructor for the ObjectParser.\n *\n * @param sourceFile The source file to parse\n * @param signatureBuilder The signature builder to use for building signatures\n */\n private readonly jsDocParser: JSDocParser;\n\n constructor(\n sourceFile: SourceFile,\n private readonly signatureBuilder: SignatureBuilder\n ) {\n super(sourceFile);\n\n this.jsDocParser = new JSDocParser();\n }\n\n /**\n * Parses an object literal: each property becomes a member signature.\n *\n * @param obj The object literal expression to parse\n * @returns A record of member signatures\n */\n public parse(obj: ts.ObjectLiteralExpression): Record<string, MemberSignature> {\n const result: Record<string, MemberSignature> = {};\n\n for (const prop of obj.properties) {\n // key name helper\n const key = this.getName(prop.name ?? prop);\n\n // Skip members that start with underscore\n if (!shouldIncludeMember(key)) {\n continue;\n }\n\n if (ts.isPropertyAssignment(prop)) {\n const init = prop.initializer;\n\n if (ts.isFunctionExpression(init) || ts.isArrowFunction(init)) {\n result[key] = this.signatureBuilder.getMethodSignature(init);\n } else {\n // Check for JSDoc @type annotation\n const jsDocType = this.jsDocParser.getJSDocType(prop);\n const tsType = this.inferTypeFromExpression(init);\n\n result[key] = {\n kind: \"property\",\n type: jsDocType || tsType,\n };\n }\n } else if (ts.isMethodDeclaration(prop)) {\n result[key] = this.signatureBuilder.getMethodSignature(prop);\n } else if (ts.isShorthandPropertyAssignment(prop)) {\n const name = prop.name.text;\n const variable = this.sourceFile.getVariables().get(name);\n const val = variable ? variable.value : undefined;\n\n let type = \"any\";\n\n if (!_.isUndefined(val)) {\n if (_.isString(val)) {\n type = \"string\";\n } else if (_.isNumber(val)) {\n type = \"number\";\n } else if (_.isBoolean(val)) {\n type = \"boolean\";\n } else if (_.isArray(val)) {\n type = \"array\";\n } else if (_.isPlainObject(val)) {\n type = \"object\";\n }\n }\n\n result[key] = {kind: \"property\", type};\n }\n }\n\n return result;\n }\n\n /**\n * Infers a type string from an expression.\n *\n * @param expr The expression to infer a type from\n * @returns The inferred type as a string\n */\n public inferTypeFromExpression(expr: ts.Expression): string {\n const val = this.sourceFile.parseNode(expr);\n\n switch (typeof val) {\n case \"string\":\n return \"string\";\n case \"number\":\n return \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"object\":\n if (val === null) return \"null\";\n if (_.isArray(val)) return \"array\";\n return \"object\";\n default:\n return \"any\";\n }\n }\n}\n","import ts from \"typescript\";\nimport SourceFile from \"../SourceFile\";\n\n/**\n * Finds nodes in the TypeScript AST.\n */\nexport default class NodeFinder {\n /**\n * Constructor for the NodeFinder.\n *\n * @param sourceFile The source file to find nodes in\n */\n constructor(private sourceFile: SourceFile) {}\n\n /**\n * Generic method to find a node of a specific type by name in the AST.\n *\n * @param predicate The predicate to match the node\n * @param name The name to search for\n * @returns The found node or undefined if not found\n */\n public findNodeByName<T extends ts.Node>(\n predicate: (node: ts.Node, name: string) => node is T,\n name: string\n ): T | undefined {\n const sf = this.sourceFile.getSourceFile();\n let found: T | undefined;\n\n const visit = (node: ts.Node) => {\n if (predicate(node, name)) {\n found = node;\n } else {\n ts.forEachChild(node, visit);\n }\n };\n\n ts.forEachChild(sf, visit);\n return found;\n }\n\n /**\n * Searches the AST of this file for a class declaration by name.\n *\n * @param name The name of the class to find\n * @returns The class declaration or undefined if not found\n */\n public findClassDeclaration(name: string): ts.ClassDeclaration | undefined {\n return this.findNodeByName<ts.ClassDeclaration>(\n (node, searchName): node is ts.ClassDeclaration =>\n ts.isClassDeclaration(node) && node.name?.text === searchName,\n name\n );\n }\n\n /**\n * Searches the AST of this file for a type alias declaration by name.\n *\n * @param name The name of the type alias to find\n * @returns The type alias declaration or undefined if not found\n */\n public findTypeAliasDeclaration(name: string): ts.TypeAliasDeclaration | undefined {\n return this.findNodeByName<ts.TypeAliasDeclaration>(\n (node, searchName): node is ts.TypeAliasDeclaration =>\n ts.isTypeAliasDeclaration(node) && node.name.text === searchName,\n name\n );\n }\n\n /**\n * Searches the AST of this file for an interface declaration by name.\n *\n * @param name The name of the interface to find\n * @returns The interface declaration or undefined if not found\n */\n public findInterfaceDeclaration(name: string): ts.InterfaceDeclaration | undefined {\n return this.findNodeByName<ts.InterfaceDeclaration>(\n (node, searchName): node is ts.InterfaceDeclaration =>\n ts.isInterfaceDeclaration(node) && node.name.text === searchName,\n name\n );\n }\n\n /**\n * Searches the AST of this file for a variable declaration by name.\n *\n * @param name The name of the variable to find\n * @returns The variable declaration or undefined if not found\n */\n public findVariableDeclaration(name: string): ts.VariableDeclaration | undefined {\n return this.findNodeByName<ts.VariableDeclaration>(\n (node, searchName): node is ts.VariableDeclaration =>\n ts.isVariableDeclaration(node) && ts.isIdentifier(node.name) && node.name.text === searchName,\n name\n );\n }\n\n /**\n * Searches the AST of this file for an import equals declaration by name.\n *\n * @param name The name of the import equals declaration to find\n * @returns The import equals declaration or undefined if not found\n */\n public findImportEqualsDeclaration(name: string): ts.ImportEqualsDeclaration | undefined {\n return this.findNodeByName<ts.ImportEqualsDeclaration>(\n (node, searchName): node is ts.ImportEqualsDeclaration =>\n ts.isImportEqualsDeclaration(node) && ts.isIdentifier(node.name) && node.name.text === searchName,\n name\n );\n }\n}\n","import ts from \"typescript\";\nimport fs from \"fs\";\nimport SourceFile from \"../SourceFile\";\nimport NodeFinder from \"./NodeFinder\";\n\n/**\n * Resolves TypeScript type nodes to string representations.\n */\nexport default class TypeResolver {\n /**\n * Constructor for the TypeResolver.\n *\n * @param sourceFile The source file to resolve types from\n * @param nodeFinder Optional NodeFinder instance to use for finding nodes\n */\n constructor(\n private readonly sourceFile: SourceFile,\n private readonly nodeFinder?: NodeFinder\n ) {}\n\n /**\n * Resolves a TypeScript type node to a string, inlining type aliases when possible.\n *\n * @param typeNode The type node to resolve\n * @returns The resolved type as a string\n */\n public resolveTypeNode(typeNode: ts.TypeNode): string {\n // Handle union types (like Tab | undefined)\n if (ts.isUnionTypeNode(typeNode)) {\n return this.resolveUnionType(typeNode);\n }\n\n // Handle array types (like Tab[])\n if (ts.isArrayTypeNode(typeNode)) {\n return this.resolveArrayType(typeNode);\n }\n\n // inline type aliases\n if (ts.isTypeReferenceNode(typeNode)) {\n return this.resolveTypeReference(typeNode);\n }\n\n // fallback: use textual representation\n return typeNode.getText();\n }\n\n /**\n * Resolves a union type node to a string.\n *\n * @param typeNode The union type node to resolve\n * @returns The resolved union type as a string\n */\n public resolveUnionType(typeNode: ts.UnionTypeNode): string {\n const types = typeNode.types.map(t => this.resolveTypeNode(t));\n return types.join(\" | \");\n }\n\n /**\n * Resolves an array type node to a string.\n *\n * @param typeNode The array type node to resolve\n * @returns The resolved array type as a string\n */\n public resolveArrayType(typeNode: ts.ArrayTypeNode): string {\n const elementType = this.resolveTypeNode(typeNode.elementType);\n return `${elementType}[]`;\n }\n\n /**\n * Resolves a type reference node to a string, inlining type aliases when possible.\n *\n * @param typeNode The type reference node to resolve\n * @returns The resolved type reference as a string\n */\n public resolveTypeReference(typeNode: ts.TypeReferenceNode): string {\n const name = typeNode.typeName.getText();\n\n // Try to inline the type alias\n const inlined = this.inlineAliasType(name);\n if (inlined) {\n return inlined;\n }\n\n // Check if the type is imported\n const importPath = this.sourceFile.getImports().get(name);\n if (importPath) {\n try {\n // Check if the file exists before creating a parser\n if (!fs.existsSync(importPath)) {\n console.warn(`File not found: ${importPath} when resolving type reference ${name}`);\n return typeNode.getText();\n }\n\n const parser = (this.sourceFile.constructor as typeof SourceFile).make(importPath);\n const typeResolver = new TypeResolver(parser);\n const nodeFinder = new NodeFinder(parser);\n\n // Check for interface declaration\n const interfaceDecl = nodeFinder.findInterfaceDeclaration(name);\n if (interfaceDecl) {\n const props = typeResolver.extractInterfaceProperties(interfaceDecl);\n return props.length ? `{${props.join(\"; \")};}` : `{}`;\n }\n\n // Check for type alias declaration\n const aliasDecl = nodeFinder.findTypeAliasDeclaration(name);\n if (aliasDecl) {\n // Handle intersection types specially\n if (ts.isIntersectionTypeNode(aliasDecl.type)) {\n return typeResolver.processIntersectionType(aliasDecl.type);\n }\n return typeResolver.resolveTypeNode(aliasDecl.type);\n }\n } catch (error) {\n console.warn(`Error resolving type reference ${name} from ${importPath}:`, error);\n }\n }\n\n // If there are type arguments, resolve them\n if (typeNode.typeArguments && typeNode.typeArguments.length > 0) {\n const aliasName = typeNode.typeName.getText();\n // Resolve each type argument\n const resolvedArgs = typeNode.typeArguments.map(arg => this.resolveTypeNode(arg));\n // Construct the type with resolved arguments\n return `${aliasName}<${resolvedArgs.join(\", \")}>`;\n }\n\n // preserve generics and other references\n return typeNode.getText();\n }\n\n /**\n * Attempts to inline a type alias.\n *\n * @param name The name of the type alias\n * @returns The inlined type alias or undefined if it cannot be inlined\n */\n public inlineAliasType(name: string): string | undefined {\n // Check if the type is imported from an external library\n const importPath = this.sourceFile.getImports().get(name);\n\n // Special case for chrome.* namespaces\n if (importPath && (importPath.startsWith(\"chrome.\") || importPath.startsWith(\"browser.\"))) {\n return importPath;\n }\n\n if (importPath && !importPath.startsWith(\".\") && !importPath.startsWith(\"/\") && !fs.existsSync(importPath)) {\n // This is an external library import, format it as import('libraryName').TypeName\n return `import('${importPath}').${name}`;\n }\n\n // Check for import equals declaration (import X = Y.Z)\n const nodeFinder = this.nodeFinder || new NodeFinder(this.sourceFile);\n const importEquals = nodeFinder.findImportEqualsDeclaration(name);\n if (importEquals && importEquals.moduleReference) {\n // For qualified names like chrome.tabs.Tab, return the qualified name\n if (ts.isQualifiedName(importEquals.moduleReference)) {\n return importEquals.moduleReference.getText();\n }\n // For external module references like 'somelib', handle as external library\n else if (\n ts.isExternalModuleReference(importEquals.moduleReference) &&\n importEquals.moduleReference.expression &&\n ts.isStringLiteral(importEquals.moduleReference.expression)\n ) {\n const libPath = importEquals.moduleReference.expression.text;\n return `import('${libPath}').${name}`;\n }\n // For other module references, return the text representation\n else {\n return importEquals.moduleReference.getText();\n }\n }\n\n // Find the type alias declaration\n const aliasDecl = this.findTypeAliasDeclaration(name);\n if (aliasDecl) {\n const typeNode = aliasDecl.type;\n\n // handle intersection type alias by flattening members\n if (ts.isIntersectionTypeNode(typeNode)) {\n return this.processIntersectionType(typeNode);\n }\n\n // For type reference nodes (like aliases to other types), preserve the original type\n if (ts.isTypeReferenceNode(typeNode) && ts.isIdentifier(typeNode.typeName)) {\n // Get the full text of the type node, which includes any namespace qualifiers\n return typeNode.getText();\n }\n\n return this.resolveTypeNode(typeNode);\n }\n\n // local interface\n const localInterface = nodeFinder.findInterfaceDeclaration(name);\n if (localInterface) {\n const props = this.extractInterfaceProperties(localInterface);\n return props.length ? `{${props.join(\"; \")};}` : `{}`;\n }\n\n // Handle imported types\n if (importPath) {\n try {\n // Check if the file exists before creating a parser\n if (!fs.existsSync(importPath)) {\n console.warn(`File not found: ${importPath} when resolving type alias ${name}`);\n return undefined;\n }\n\n const parser = (this.sourceFile.constructor as typeof SourceFile).make(importPath);\n const typeResolver = new TypeResolver(parser);\n\n // imported type alias\n const aliasDecl = nodeFinder.findTypeAliasDeclaration(name);\n if (aliasDecl) {\n // inline imported type alias (including intersections)\n return typeResolver.inlineAliasType(name);\n }\n\n // imported interface\n const interfaceDecl = nodeFinder.findInterfaceDeclaration(name);\n if (interfaceDecl) {\n const props = this.extractInterfaceProperties(interfaceDecl);\n return props.length ? `{${props.join(\"; \")};}` : `{}`;\n }\n } catch (error) {\n console.warn(`Error resolving type alias ${name} from ${importPath}:`, error);\n return undefined;\n }\n }\n\n return undefined;\n }\n\n /**\n * Processes an intersection type node by flattening its members\n */\n private processIntersectionType(typeNode: ts.IntersectionTypeNode): string {\n const parts: string[] = [];\n const seen = new Set<string>();\n\n for (const t of typeNode.types) {\n // inline object literal types\n if (ts.isTypeLiteralNode(t)) {\n for (const m of t.members) {\n let keyName: string;\n let entry: string;\n if (ts.isPropertySignature(m) && m.type) {\n keyName = this.getName(m.name!);\n const typeText = this.resolveTypeNode(m.type);\n // Remove spaces in object types to match expected format\n const formattedTypeText = typeText.replace(/\\{\\s+/g, \"{\").replace(/\\s+\\}/g, \"}\");\n entry = `${keyName}: ${formattedTypeText}`;\n } else if (ts.isMethodSignature(m) && m.name) {\n keyName = this.getName(m.name);\n const typeParams = m.typeParameters ? m.typeParameters.map(tp => tp.getText()) : [];\n const tpText = typeParams.length ? `<${typeParams.join(\",\")}>` : \"\";\n const paramsText = m.parameters\n .map(p => {\n const pname = ts.isIdentifier(p.name) ? p.name.text : p.name.getText();\n const ptype = p.type ? this.resolveTypeNode(p.type) : \"any\";\n // Remove spaces in object types to match expected format\n const formattedPType = ptype.replace(/\\{\\s+/g, \"{\").replace(/\\s+\\}/g, \"}\");\n return `${pname}: ${formattedPType}`;\n })\n .join(\",\");\n const returnType = m.type ? this.resolveTypeNode(m.type) : \"any\";\n // Remove spaces in object types to match expected format\n const formattedReturnType = returnType.replace(/\\{\\s+/g, \"{\").replace(/\\s+\\}/g, \"}\");\n entry = `${keyName}${tpText}(${paramsText}): ${formattedReturnType}`;\n } else if (ts.isIndexSignatureDeclaration(m) && m.type) {\n // Handle index signatures like [domain: string]: number;\n const paramName = m.parameters[0].name.getText();\n const paramType = m.parameters[0].type ? this.resolveTypeNode(m.parameters[0].type) : \"any\";\n const returnType = this.resolveTypeNode(m.type);\n // Use a special key for index signatures to avoid conflicts\n keyName = `[${paramName}:${paramType}]`;\n entry = `[${paramName}: ${paramType}]: ${returnType}`;\n } else {\n continue;\n }\n if (!seen.has(keyName)) {\n seen.add(keyName);\n parts.push(entry);\n }\n }\n }\n // inline referenced aliases or interfaces\n else if (ts.isTypeReferenceNode(t) && ts.isIdentifier(t.typeName)) {\n const refName = t.typeName.text;\n const sub = this.inlineAliasType(refName);\n if (sub) {\n this.extractSegmentsFromType(sub, seen, parts);\n }\n }\n }\n\n return `{${parts.join(\"; \")};}`;\n }\n\n /**\n * Extracts segments from a type string, handling nested braces\n */\n private extractSegmentsFromType(typeStr: string, seen: Set<string>, parts: string[]): void {\n const inner = typeStr.slice(1, -1).trim();\n if (!inner) return;\n\n // split on top-level semicolons (ignore semicolons within braces)\n const segments: string[] = [];\n let depth = 0;\n let buf = \"\";\n\n for (const ch of inner) {\n if (ch === \"{\") {\n depth++;\n buf += ch;\n } else if (ch === \"}\") {\n depth--;\n buf += ch;\n } else if (ch === \";\" && depth === 0) {\n const seg = buf.trim();\n if (seg) segments.push(seg);\n buf = \"\";\n } else {\n buf += ch;\n }\n }\n\n const last = buf.trim();\n if (last) segments.push(last);\n\n for (const s of segments) {\n const keyName = s.split(/[:(]/)[0];\n if (!seen.has(keyName)) {\n seen.add(keyName);\n parts.push(s);\n }\n }\n }\n\n /**\n * Extracts a textual property name.\n */\n private getName(name: ts.PropertyName | ts.BindingName | ts.Node): string {\n if (ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name)) {\n return name.text;\n }\n\n return name.getText();\n }\n\n /**\n * Extracts properties from an interface declaration\n */\n public extractInterfaceProperties(interfaceDecl: ts.InterfaceDeclaration, parser: TypeResolver = this): string[] {\n const props: string[] = [];\n\n // include inherited members from extended interfaces\n if (interfaceDecl.heritageClauses) {\n for (const clause of interfaceDecl.heritageClauses) {\n if (clause.token === ts.SyntaxKind.ExtendsKeyword) {\n for (const typeNode of clause.types) {\n const expr = typeNode.expression;\n if (ts.isIdentifier(expr)) {\n const parent = parser.inlineAliasType(expr.text);\n if (parent) {\n const inner = parent.slice(1, -1).trim();\n if (inner) {\n props.push(\n ...inner\n .split(/;\\s*/)\n .map(s => s.trim())\n .filter(Boolean)\n );\n }\n }\n }\n }\n }\n }\n }\n\n // Add interface members\n for (const member of interfaceDecl.members) {\n if (ts.isPropertySignature(member) && member.type) {\n const key = parser.getName(member.name!);\n const optional = member.questionToken ? \"?\" : \"\";\n const typeText = parser.resolveTypeNode(member.type);\n props.push(`${key}${optional}: ${typeText}`);\n } else if (ts.isMethodSignature(member) && member.name) {\n const key = parser.getName(member.name);\n const typeParams = member.typeParameters ? member.typeParameters.map(tp => tp.getText()) : [];\n const tpText = typeParams.length ? `<${typeParams.join(\",\")}>` : \"\";\n\n const params = member.parameters\n .map(p => {\n const pname = ts.isIdentifier(p.name) ? p.name.text : p.name.getText();\n const ptype = p.type ? parser.resolveTypeNode(p.type) : \"any\";\n return `${pname}: ${ptype}`;\n })\n .join(\", \");\n\n const returnType = member.type ? parser.resolveTypeNode(member.type) : \"any\";\n\n props.push(`${key}${tpText}(${params}): ${returnType}`);\n } else if (ts.isIndexSignatureDeclaration(member) && member.type) {\n // Handle index signatures like [domain: string]: number;\n const paramName = member.parameters[0].name.getText();\n const paramType = member.parameters[0].type ? parser.resolveTypeNode(member.parameters[0].type) : \"any\";\n const returnType = parser.resolveTypeNode(member.type);\n props.push(`[${paramName}: ${paramType}]: ${returnType}`);\n }\n }\n\n return props;\n }\n\n /**\n * Searches the AST of this file for a type alias declaration by name.\n *\n * @param name The name of the type alias to find\n * @returns The type alias declaration or undefined if not found\n */\n private findTypeAliasDeclaration(name: string): ts.TypeAliasDeclaration | undefined {\n return this.findNodeByName<ts.TypeAliasDeclaration>(\n (node, searchName): node is ts.TypeAliasDeclaration =>\n ts.isTypeAliasDeclaration(node) && node.name.text === searchName,\n name\n );\n }\n\n /**\n * Generic method to find a node of a specific type by name in the AST.\n *\n * @param predicate The predicate to match the node\n * @param name The name to search for\n * @returns The found node or undefined if not found\n */\n private findNodeByName<T extends ts.Node>(\n predicate: (node: ts.Node, name: string) => node is T,\n name: string\n ): T | undefined {\n const sf = this.sourceFile.getSourceFile();\n let found: T | undefined;\n\n const visit = (node: ts.Node) => {\n if (predicate(node, name)) {\n found = node;\n } else {\n ts.forEachChild(node, visit);\n }\n };\n\n ts.forEachChild(sf, visit);\n return found;\n }\n}\n","import ts from \"typescript\";\nimport {MemberSignature, MethodSignature, ParameterSignature} from \"./types\";\nimport TypeResolver from \"./TypeResolver\";\nimport JSDocParser from \"./JSDocParser\";\n\n/**\n * Builds method and property signatures from TypeScript nodes.\n */\nexport default class SignatureBuilder {\n /**\n * Constructor for the SignatureBuilder.\n *\n * @param typeResolver The type resolver to use for resolving types\n */\n private readonly jsDocParser: JSDocParser;\n\n constructor(private readonly typeResolver: TypeResolver) {\n this.jsDocParser = new JSDocParser();\n }\n\n /**\n * Builds a method signature from a function-like node.\n *\n * @param method The function-like node to build a signature from\n * @returns The method signature\n */\n public getMethodSignature(\n method: ts.MethodDeclaration | ts.GetAccessorDeclaration | ts.FunctionExpression | ts.ArrowFunction\n ): MethodSignature {\n // Get JSDoc parameter types if available\n const jsDocParamTypes =\n \"parameters\" in method\n ? this.jsDocParser.getJSDocParameterTypes(method as ts.SignatureDeclaration)\n : new Map<string, string>();\n\n // parameters\n const params: ParameterSignature[] = (\"parameters\" in method ? method.parameters : []).map(p => {\n const name = ts.isIdentifier(p.name) ? p.name.text : p.name.getText();\n\n // Use JSDoc type if available, otherwise use TypeScript type\n const tsType = p.type ? this.typeResolver.resolveTypeNode(p.type) : \"any\";\n const jsDocType = jsDocParamTypes.get(name);\n const type = jsDocType || tsType;\n\n // Remove spaces in object types to match expected format\n const formattedType = type.replace(/\\{\\s+/g, \"{\").replace(/\\s+\\}/g, \"}\");\n const optional = p.questionToken !== undefined || p.initializer !== undefined;\n return {name, type: formattedType, optional};\n });\n\n // Get JSDoc type parameters if available, otherwise use TypeScript type parameters\n let typeParams: string[] = [];\n\n if (\"parameters\" in method) {\n const jsDocTypeParams = this.jsDocParser.getJSDocTypeParameters(method as ts.SignatureDeclaration);\n if (jsDocTypeParams.length > 0) {\n typeParams = jsDocTypeParams;\n } else if (method.typeParameters) {\n typeParams = method.typeParameters.map(tp => tp.getText());\n }\n } else {\n // For non-SignatureDeclaration types, check if typeParameters exists\n const methodWithTypeParams = method as {typeParameters?: ts.NodeArray<ts.TypeParameterDeclaration>};\n if (methodWithTypeParams.typeParameters) {\n typeParams = methodWithTypeParams.typeParameters.map(tp => tp.getText());\n }\n }\n\n // Get JSDoc return type if available\n const jsDocReturnType =\n \"parameters\" in method ? this.jsDocParser.getJSDocReturnType(method as ts.SignatureDeclaration) : undefined;\n\n // return type (inline aliases when possible)\n const returnNode = (method as ts.MethodDeclaration).type;\n const tsReturnType = returnNode ? this.typeResolver.resolveTypeNode(returnNode) : \"any\";\n\n // Use JSDoc return type if available, otherwise use TypeScript return type\n const returnType = jsDocReturnType || tsReturnType;\n\n // Remove spaces in object types to match expected format\n const formattedReturnType = returnType.replace(/\\{\\s+/g, \"{\").replace(/\\s+\\}/g, \"}\");\n\n return {\n kind: \"method\",\n typeParameters: typeParams,\n parameters: params,\n returnType: formattedReturnType,\n };\n }\n\n /**\n * Builds a function type string from a method signature.\n *\n * @param sig The method signature to build a function type from\n * @returns The function type as a string\n */\n public buildFunctionType(sig: MethodSignature): string {\n const params = sig.parameters.map(p => `${p.name}${p.optional ? \"?\" : \"\"}: ${p.type}`).join(\", \");\n return `(${params}) => ${sig.returnType}`;\n }\n\n /**\n * Formats a record of member signatures into a string representation.\n *\n * @param members The record of member signatures to format\n * @returns The formatted members as a string\n */\n public formatMembers(members: Record<string, MemberSignature>): string {\n const parts: string[] = [];\n\n for (const [name, member] of Object.entries(members)) {\n if (member.kind === \"method\") {\n const typeParams = member.typeParameters.length ? `<${member.typeParameters.join(\", \")}>` : \"\";\n\n // Clean up parameter types to remove any JSDoc comments\n const params = member.parameters\n .map(p => {\n // If the parameter type contains JSDoc comments, extract just the type\n let paramType = p.type;\n if (paramType.includes(\"@param\")) {\n // This is a parameter with JSDoc comments, extract just the type\n const match = paramType.match(/\\{([^}]+)\\}/);\n if (match) {\n paramType = match[1];\n }\n }\n\n return `${p.name}${p.optional ? \"?\" : \"\"}: ${paramType}`;\n })\n .join(\", \");\n\n parts.push(`${name}${typeParams}(${params}): ${member.returnType};`);\n } else {\n parts.push(`${name}${member.optional ? \"?\" : \"\"}: ${member.type};`);\n }\n }\n\n return `{ ${parts.join(\" \")} }`;\n }\n}\n","import ts from \"typescript\";\n\nimport SourceFile from \"../SourceFile\";\nimport AbstractParser from \"./AbstractParser\";\nimport TypeResolver from \"./TypeResolver\";\nimport SignatureBuilder from \"./SignatureBuilder\";\nimport NodeFinder from \"./NodeFinder\";\nimport JSDocParser from \"./JSDocParser\";\n\nimport {shouldIncludeMember} from \"./helpers/memberFilters\";\n\nimport {MemberSignature} from \"./types\";\n\n/**\n * Parses class expressions and declarations.\n */\nexport default class ClassParser extends AbstractParser {\n /**\n * Constructor for the ClassParser.\n *\n * @param sourceFile The source file to parse\n * @param typeResolver The type resolver to use for resolving types\n * @param signatureBuilder The signature builder to use for building signatures\n * @param nodeFinder The node finder to use for finding nodes\n */\n private readonly jsDocParser: JSDocParser;\n\n constructor(\n sourceFile: SourceFile,\n private readonly typeResolver: TypeResolver,\n private readonly signatureBuilder: SignatureBuilder,\n private readonly nodeFinder: NodeFinder\n ) {\n super(sourceFile);\n\n this.jsDocParser = new JSDocParser();\n }\n\n /**\n * Parses a class expression or declaration: collects public members,\n * including inherited members from base classes.\n *\n * @param node The class expression or declaration to parse\n * @returns A record of member signatures\n */\n public parse(node: ts.ClassExpression | ts.ClassDeclaration): Record<string, MemberSignature> {\n let members: Record<string, MemberSignature> = {};\n // inherit from base class(es)\n\n if (node.heritageClauses) {\n for (const clause of node.heritageClauses) {\n if (clause.token === ts.SyntaxKind.ExtendsKeyword) {\n for (const typeNode of clause.types) {\n const expr = typeNode.expression;\n\n if (ts.isIdentifier(expr)) {\n Object.assign(members, this.parseFileClass(expr.text));\n }\n }\n }\n }\n }\n\n // own members\n for (const member of node.members) {\n // Parameter properties in constructor: include only when extracting a specific property\n if (ts.isConstructorDeclaration(member)) {\n // include public parameter properties: e.g. constructor(public foo: string)\n for (const param of member.parameters) {\n const mods = ts.getCombinedModifierFlags(param);\n\n if (mods & ts.ModifierFlags.Public) {\n const name = ts.isIdentifier(param.name) ? param.name.text : param.name.getText();\n\n // Skip constructor parameters that start with underscore\n if (!shouldIncludeMember(name)) {\n continue;\n }\n\n const type = param.type ? param.type.getText() : \"any\";\n members[name] = {kind: \"property\", type};\n }\n }\n\n continue;\n }\n\n // only public instance members (skip private, protected, or static members)\n const flags = ts.getCombinedModifierFlags(member);\n\n if (flags & (ts.ModifierFlags.Private | ts.ModifierFlags.Protected | ts.ModifierFlags.Static)) {\n continue;\n }\n\n // determine member name\n const name =\n member.name && ts.isIdentifier(member.name)\n ? member.name.text\n : member.name\n ? member.name.getText()\n : \"\";\n\n if (!name) continue;\n\n // Skip members that start with underscore\n if (!shouldIncludeMember(name)) {\n continue;\n }\n\n if (ts.isMethodDeclaration(member) || ts.isGetAccessorDeclaration(member)) {\n members[name] = this.signatureBuilder.getMethodSignature(member as ts.MethodDeclaration);\n } else if (ts.isPropertyDeclaration(member)) {\n // Check for JSDoc @type annotation\n const jsDocType = this.jsDocParser.getJSDocType(member);\n const tsType = member.type ? this.typeResolver.resolveTypeNode(member.type) : \"any\";\n const type = jsDocType || tsType;\n const optional = member.questionToken !== undefined;\n members[name] = {kind: \"property\", type, optional};\n }\n }\n\n return members;\n }\n\n /**\n * Finds and parses a class by name in current or imported files.\n *\n * @param name The name of the class to find\n * @returns A record of member signatures\n */\n public parseFileClass(name: string): Record<string, MemberSignature> {\n // current file\n const decl = this.nodeFinder.findClassDeclaration(name);\n\n if (decl) {\n return this.parse(decl);\n }\n\n // imported file\n const importPath = this.sourceFile.getImports().get(name);\n\n if (importPath) {\n const parser = (this.sourceFile.constructor as typeof SourceFile).make(importPath);\n const sf = parser.getSourceFile();\n\n // Try named class export\n let found: ts.ClassDeclaration | undefined;\n const find = (node: ts.Node) => {\n if (ts.isClassDeclaration(node) && node.name?.text === name) {\n found = node;\n } else {\n ts.forEachChild(node, find);\n }\n };\n\n ts.forEachChild(sf, find);\n\n if (found) {\n // Create a new ClassParser for the imported file\n const typeResolver = new TypeResolver(parser);\n const nodeFinder = new NodeFinder(parser);\n const signatureBuilder = new SignatureBuilder(typeResolver);\n const classParser = new ClassParser(parser, typeResolver, signatureBuilder, nodeFinder);\n return classParser.parse(found);\n }\n\n // Try default exported anonymous class\n let defaultClass: ts.ClassDeclaration | undefined;\n\n const findDefault = (node: ts.Node) => {\n if (\n ts.isClassDeclaration(node) &&\n node.modifiers &&\n node.modifiers.some(m => m.kind === ts.SyntaxKind.DefaultKeyword)\n ) {\n defaultClass = node;\n } else {\n ts.forEachChild(node, findDefault);\n }\n };\n\n ts.forEachChild(sf, findDefault);\n\n if (defaultClass) {\n // Create a new ClassParser for the imported file\n const typeResolver = new TypeResolver(parser);\n const nodeFinder = new NodeFinder(parser);\n const signatureBuilder = new SignatureBuilder(typeResolver);\n const classParser = new ClassParser(parser, typeResolver, signatureBuilder, nodeFinder);\n return classParser.parse(defaultClass);\n }\n }\n\n return {};\n }\n}\n","import ts from \"typescript\";\n\nimport SourceFile from \"./SourceFile\";\nimport {\n ClassParser,\n FunctionParser,\n JSDocParser,\n NodeFinder,\n ObjectParser,\n SignatureBuilder,\n TypeResolver,\n} from \"./parsers\";\nimport {MemberSignature} from \"./parsers/types\";\n\nimport {PackageName} from \"@typing/app\";\n\n/**\n * Parses a TypeScript expression (object literal, function, or class)\n * and builds a full interface of its public members (methods and properties).\n */\nexport default class ExpressionFile extends SourceFile {\n protected property?: string;\n /**\n * Names of wrapper functions whose first argument should be unwrapped for parsing.\n */\n protected definition = new Set<string>();\n\n private readonly typeResolver: TypeResolver;\n private readonly nodeFinder: NodeFinder;\n private readonly signatureBuilder: SignatureBuilder;\n private readonly functionParser: FunctionParser;\n private readonly objectParser: ObjectParser;\n private readonly classParser: ClassParser;\n private readonly jsDocParser: JSDocParser;\n constructor(filePath: string) {\n super(filePath);\n\n this.typeResolver = new TypeResolver(this);\n this.nodeFinder = new NodeFinder(this);\n this.signatureBuilder = new SignatureBuilder(this.typeResolver);\n this.objectParser = new ObjectParser(this, this.signatureBuilder);\n this.classParser = new ClassParser(this, this.typeResolver, this.signatureBuilder, this.nodeFinder);\n this.functionParser = new FunctionParser(this, this.nodeFinder, this.objectParser, this.classParser);\n this.jsDocParser = new JSDocParser();\n }\n\n public getType(): string | undefined {\n // If a specific variable or property is requested, extract its type\n if (this.property) {\n // 1) Named variable scenario: e.g. export const init = () => ...\n const varDecl = this.nodeFinder.findVariableDeclaration(this.property);\n\n if (varDecl && varDecl.initializer) {\n return this.getTypeFromInitializer(varDecl.initializer);\n }\n\n // 2) Property on default export object: unwrap and look up key\n let exportExpr: ts.Expression | undefined;\n const sf = this.getSourceFile();\n\n const findExport = (node: ts.Node) => {\n if (ts.isExportAssignment(node)) {\n exportExpr = node.expression;\n }\n ts.forEachChild(node, findExport);\n };\n\n findExport(sf);\n\n if (!exportExpr) return undefined;\n\n // Special case for service definitions with JSDoc annotations\n if (this.definition.size > 0 && ts.isCallExpression(exportExpr) && ts.isIdentifier(exportExpr.expression)) {\n const fnName = exportExpr.expression.text;\n\n if (this.definition.has(fnName)) {\n // Check if the wrapper function is imported from the designated package name\n let importPath: string | undefined;\n try {\n importPath = this.getImports().get(fnName);\n } catch {\n // unable to resolve import source -> ignore wrapper\n return undefined;\n }\n\n if (importPath !== PackageName) {\n // Function is not imported from the designated package name -> ignore wrapper\n console.warn(`Function ${fnName} is not imported from '${PackageName}' in file ${this.file}`);\n return undefined;\n }\n\n if (exportExpr.arguments.length > 0) {\n const firstArg = exportExpr.arguments[0];\n\n if (ts.isObjectLiteralExpression(firstArg)) {\n for (const prop of firstArg.properties) {\n const key = this.objectParser.getName(prop.name ?? prop);\n\n if (key !== this.property) continue;\n\n if (ts.isPropertyAssignment(prop)) {\n const initType = this.getTypeFromInitializer(prop.initializer);\n if (initType) return initType;\n } else if (ts.isMethodDeclaration(prop)) {\n // Get the return type of the method\n const returnType = this.getTypeFromMethodReturn(prop);\n if (returnType) return returnType;\n }\n }\n }\n }\n }\n }\n\n const expr = this.unwrapExpression(exportExpr);\n\n if (ts.isObjectLiteralExpression(expr)) {\n for (const prop of expr.properties) {\n const key = this.objectParser.getName(prop.name ?? prop);\n\n if (key !== this.property) continue;\n\n if (ts.isPropertyAssignment(prop)) {\n return this.getTypeFromInitializer(prop.initializer);\n } else if (ts.isMethodDeclaration(prop) || ts.isGetAccessorDeclaration(prop)) {\n const sig = this.signatureBuilder.getMethodSignature(prop as ts.MethodDeclaration);\n\n return this.signatureBuilder.buildFunctionType(sig);\n } else if (ts.isShorthandPropertyAssignment(prop)) {\n const name = prop.name.text;\n const variable = this.getVariables().get(name);\n\n if (variable) {\n const val = variable.value;\n switch (typeof val) {\n case \"string\":\n return \"string\";\n case \"number\":\n return \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"object\":\n if (val === null) return \"null\";\n if (Array.isArray(val)) return \"array\";\n return \"object\";\n default:\n return \"any\";\n }\n }\n return \"any\";\n }\n }\n return undefined;\n }\n\n // Fallback: treat default export expression as initializer\n return this.getTypeFromInitializer(expr);\n }\n\n // Default: parse full default export into interface-like string\n let members: Record<string, MemberSignature> | undefined;\n const sf = this.getSourceFile();\n\n const collect = (node: ts.Node) => {\n if (ts.isExportAssignment(node)) {\n const expr0 = node.expression;\n const expr = this.unwrapExpression(expr0);\n const parsed = this.parse(expr);\n if (parsed) members = parsed;\n }\n ts.forEachChild(node, collect);\n };\n\n collect(sf);\n if (!members) return undefined;\n return this.signatureBuilder.formatMembers(members);\n }\n\n public setProperty(property: string): this {\n this.property = property;\n\n return this;\n }\n\n /**\n * Entry point: accepts an expression and returns a map of member signatures,\n * or undefined if the expression cannot be parsed.\n */\n protected parse(expr: ts.Expression): Record<string, MemberSignature> | undefined {\n if (ts.isFunctionExpression(expr) || ts.isArrowFunction(expr)) {\n return this.functionParser.parse(expr);\n } else if (ts.isObjectLiteralExpression(expr)) {\n return this.objectParser.parse(expr);\n } else if (ts.isClassExpression(expr)) {\n return this.classParser.parse(expr);\n }\n\n return undefined;\n }\n\n /**\n * Specify wrapper functions whose first argument should be unwrapped for parsing.\n */\n public setDefinition(definition: string | string[]): this {\n const defs = typeof definition === \"string\" ? [definition] : definition;\n\n defs.forEach(def => this.definition.add(def));\n\n return this;\n }\n\n /**\n * Recursively unwraps type assertions, satisfies, parentheses, and allowed wrapper calls.\n */\n private unwrapExpression(expr: ts.Expression): ts.Expression {\n // First use the AbstractExpressionParser's unwrapExpression for basic unwrapping\n expr = this.functionParser.unwrapExpression(expr);\n\n // Explicitly handle type assertions\n if (ts.isAsExpression(expr)) {\n return this.unwrapExpression(expr.expression);\n }\n\n // Then handle the additional unwrapping for known definition wrappers\n if (ts.isCallExpression(expr) && ts.isIdentifier(expr.expression)) {\n const fnName = expr.expression.text;\n\n if (this.definition.has(fnName)) {\n let importPath: string | undefined;\n\n try {\n importPath = this.getImports().get(fnName);\n } catch {\n // unable to resolve import source -> ignore wrapper\n return expr;\n }\n\n if (importPath !== PackageName) {\n console.warn(`Function ${fnName} is not imported from '${PackageName}' in file ${this.file}`);\n } else if (expr.arguments.length > 0) {\n const first = expr.arguments[0];\n return this.unwrapExpression(first as ts.Expression);\n }\n }\n }\n\n return expr;\n }\n\n /**\n * Given an initializer or expression, extracts its type: function signature or interface.\n */\n private getTypeFromInitializer(\n node: ts.Expression | ts.MethodDeclaration | ts.GetAccessorDeclaration\n ): string | undefined {\n // Unwrap type assertions\n if (ts.isAsExpression(node)) {\n return this.getTypeFromInitializer(node.expression);\n }\n\n // Function or arrow function: try to parse returned object or instance\n if (ts.isFunctionExpression(node) || ts.isArrowFunction(node)) {\n // attempt to parse returned expression into members\n const members = this.functionParser.parse(node as ts.FunctionExpression | ts.ArrowFunction);\n\n if (members) {\n return this.signatureBuilder.formatMembers(members);\n }\n\n // fallback to function signature\n const sig = this.signatureBuilder.getMethodSignature(node as ts.FunctionExpression | ts.ArrowFunction);\n\n return this.signatureBuilder.buildFunctionType(sig);\n }\n\n // Class or method-like: signature of accessor/method\n if (ts.isMethodDeclaration(node) || ts.isGetAccessorDeclaration(node)) {\n const sig = this.signatureBuilder.getMethodSignature(node as ts.MethodDeclaration);\n return this.signatureBuilder.buildFunctionType(sig);\n }\n\n // Object literal, class expression/declaration, or new expression: return interface of members\n let members: Record<string, MemberSignature> | undefined;\n\n if (ts.isObjectLiteralExpression(node) || ts.isClassExpression(node) || ts.isClassDeclaration(node)) {\n members = this.parse(node as ts.Expression);\n } else if (ts.isNewExpression(node)) {\n const ctor = node.expression;\n\n if (ts.isIdentifier(ctor)) {\n members = this.classParser.parseFileClass(ctor.text);\n } else if (ts.isClassExpression(ctor)) {\n members = this.classParser.parse(ctor);\n }\n }\n\n if (members) {\n return this.signatureBuilder.formatMembers(members);\n }\n\n // For literals or other expressions, infer a simple type\n if (ts.isLiteralExpression(node) || ts.isArrayLiteralExpression(node) || ts.isObjectLiteralExpression(node)) {\n return this.objectParser.inferTypeFromExpression(node as ts.Expression);\n }\n\n // Fallback: undefined\n return undefined;\n }\n\n /**\n * Extracts the type of the return value of a method, taking into account JSDoc annotations.\n *\n * @param method The method declaration to extract the return type from\n * @returns The extracted return type as a string, or undefined if it cannot be extracted\n */\n private getTypeFromMethodReturn(method: ts.MethodDeclaration): string | undefined {\n // Try to find a return statement in the method body\n if (method.body) {\n // First, check if there's a JSDoc return type annotation\n const jsDocReturnType = this.jsDocParser.getJSDocReturnType(method);\n if (jsDocReturnType) {\n // If the return type is a new expression, try to parse it\n if (jsDocReturnType.includes(\"new \")) {\n const className = jsDocReturnType.replace(\"new \", \"\").trim();\n const members = this.classParser.parseFileClass(className);\n if (members) {\n return this.signatureBuilder.formatMembers(members);\n }\n }\n\n // If the return type is a class name, try to parse it\n const members = this.classParser.parseFileClass(jsDocReturnType);\n if (members) {\n return this.signatureBuilder.formatMembers(members);\n }\n\n return jsDocReturnType;\n }\n\n // If there's no JSDoc return type, try to find a return statement\n let returnExpr: ts.Expression | undefined;\n\n const findReturn = (node: ts.Node): void => {\n if (ts.isReturnStatement(node) && node.expression) {\n returnExpr = node.expression;\n return;\n }\n ts.forEachChild(node, findReturn);\n };\n\n findReturn(method.body);\n\n if (returnExpr) {\n return this.getTypeFromInitializer(returnExpr);\n }\n }\n\n // If we couldn't find a return statement, use the method's return type\n if (method.type) {\n return this.typeResolver.resolveTypeNode(method.type);\n }\n\n return undefined;\n }\n}\n","import {z} from \"zod\";\nimport path from \"path\";\n\nimport {ExpressionFile, ImportResolver, OptionFile, TsResolver} from \"../file\";\n\nimport {Browser} from \"@typing/browser\";\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {EntrypointFile, EntrypointOptions, EntrypointParser} from \"@typing/entrypoint\";\n\nexport default abstract class AbstractParser<O extends EntrypointOptions> implements EntrypointParser<O> {\n protected readonly ir: ImportResolver;\n\n protected readonly CommonPropertiesSchema = z.object({\n includeApp: z.array(z.string()).optional(),\n excludeApp: z.array(z.string()).optional(),\n includeBrowser: z.array(z.nativeEnum(Browser)).optional(),\n excludeBrowser: z.array(z.nativeEnum(Browser)).optional(),\n });\n\n protected abstract schema(): typeof this.CommonPropertiesSchema;\n\n protected abstract definition(): string | string[];\n\n constructor(protected readonly config: ReadonlyConfig) {\n this.ir = new ImportResolver(TsResolver.make(path.resolve(this.config.inputDir, \"tsconfig.json\")));\n }\n\n protected optionFile(file: EntrypointFile): OptionFile<Record<string, any>> {\n const instance = OptionFile.make(file.file);\n\n instance.setImportResolver(this.ir);\n\n return instance.setProperties(Object.keys(this.schema().shape)).setDefinition(this.definition());\n }\n\n protected getOptions(file: EntrypointFile): Record<string, any> {\n const instance = this.optionFile(file);\n\n return instance.getOptions();\n }\n\n protected agreement(): string | undefined {\n return undefined;\n }\n\n public options(file: EntrypointFile): O {\n const {success, error, data} = this.schema().safeParse(this.getOptions(file));\n\n if (!success) {\n const e = error?.errors[0];\n\n if (e) {\n throw new Error(`Invalid options ${e.path.join(\", \")} in \"${file.file}\": ${e.message}`);\n } else {\n throw new Error(`Invalid options in \"${file.file}\"`);\n }\n }\n\n return (data || {}) as O;\n }\n\n public contract(file: EntrypointFile): string | undefined {\n const agreement = this.agreement();\n\n if (!agreement) {\n return;\n }\n\n const instance = ExpressionFile.make(file.file);\n\n instance.setImportResolver(this.ir);\n\n return instance.setDefinition(this.definition()).setProperty(agreement).getType();\n }\n}\n","import {z} from \"zod\";\n\nimport AbstractParser from \"./AbstractParser\";\n\nimport {BackgroundEntrypointOptions} from \"@typing/background\";\n\nexport default class<T extends BackgroundEntrypointOptions = BackgroundEntrypointOptions> extends AbstractParser<T> {\n protected definition(): string | string[] {\n return \"defineBackground\";\n }\n\n protected schema(): typeof this.CommonPropertiesSchema {\n return this.CommonPropertiesSchema.extend({\n persistent: z.boolean().optional(),\n permissions: z.array(z.string()).optional(),\n });\n }\n}\n","export enum Language {\n Arabic = \"ar\",\n Amharic = \"am\",\n Bulgarian = \"bg\",\n Bengali = \"bn\",\n Catalan = \"ca\",\n Czech = \"cs\",\n Danish = \"da\",\n German = \"de\",\n Greek = \"el\",\n English = \"en\",\n EnglishAustralia = \"en_AU\",\n EnglishGreatBritain = \"en_GB\",\n EnglishUSA = \"en_US\",\n Spanish = \"es\",\n SpanishLatinAmericaAndCaribbean = \"es_419\",\n Estonian = \"et\",\n Persian = \"fa\",\n Finnish = \"fi\",\n Filipino = \"fil\",\n French = \"fr\",\n Gujarati = \"gu\",\n Hebrew = \"he\",\n Hindi = \"hi\",\n Croatian = \"hr\",\n Hungarian = \"hu\",\n Indonesian = \"id\",\n Italian = \"it\",\n Japanese = \"ja\",\n Kannada = \"kn\",\n Korean = \"ko\",\n Lithuanian = \"lt\",\n Latvian = \"lv\",\n Malayalam = \"ml\",\n Marathi = \"mr\",\n Malay = \"ms\",\n Dutch = \"nl\",\n Norwegian = \"no\",\n Polish = \"pl\",\n PortugueseBrazil = \"pt_BR\",\n PortuguesePortugal = \"pt_PT\",\n Romanian = \"ro\",\n Russian = \"ru\",\n Slovak = \"sk\",\n Slovenian = \"sl\",\n Serbian = \"sr\",\n Swedish = \"sv\",\n Swahili = \"sw\",\n Tamil = \"ta\",\n Telugu = \"te\",\n Thai = \"th\",\n Turkish = \"tr\",\n Ukrainian = \"uk\",\n Vietnamese = \"vi\",\n ChineseChina = \"zh_CN\",\n ChineseTaiwan = \"zh_TW\",\n}\n\nexport enum LocaleDir {\n RightToLeft = \"rtl\",\n LeftToRight = \"ltr\",\n}\n\nexport const RtlLanguages: ReadonlySet<Language> = new Set([Language.Arabic, Language.Persian, Language.Hebrew]);\n\nexport const LocaleNestedKeysSeparator = \".\";\n\nexport const LocaleKeysSeparator = \"_\";\n\nexport const LocaleValuesSeparator = \"|\";\n\nexport const LocaleCustomKeyForLanguage = \"locale\";\n\nexport const LocaleKeyMarker = \"@\";\n\nexport const LanguageCodes: ReadonlySet<string> = new Set(Object.values(Language));\n\nexport const LocaleFileExtensions: ReadonlySet<string> = new Set([\"yaml\", \"yml\", \"json\"]);\n\nexport type LocaleValue = string | number | string[] | number[];\n\nexport type LocaleData = {\n [key: string]: LocaleValue | LocaleData;\n};\n\nexport type LocaleItems = Map<string, string>;\n\nexport type LocaleKeys = ReadonlySet<string>;\n\nexport type LocaleMessages = {\n [key: string]: {\n message: string;\n };\n};\n\nexport interface LocaleBuilder {\n lang(): Language;\n\n merge(data: LocaleData): this;\n\n build(): LocaleMessages;\n\n get(): LocaleItems;\n\n keys(): LocaleKeys;\n\n structure(): LocaleStructure;\n\n isValid(): boolean;\n\n validate(): this;\n}\n\nexport interface LocaleValidator {\n isValid(locale: LocaleBuilder): boolean;\n\n validate(locale: LocaleBuilder): this;\n}\n\nexport interface LocaleFutures {\n plural: boolean;\n substitutions: readonly string[];\n}\n\nexport interface LocaleStructure {\n [key: string]: LocaleFutures;\n}\n\nexport type LocaleNonPluralKeys<T extends LocaleStructure> = {\n [K in keyof T]: T[K] extends {plural: false} ? K : never;\n}[keyof T] &\n string;\n\nexport type LocalePluralKeys<T extends LocaleStructure> = {\n [K in keyof T]: T[K] extends {plural: true} ? K : never;\n}[keyof T] &\n string;\n\nexport type LocaleSubstitutionsFor<T extends LocaleStructure, K extends keyof T> = T[K] extends {\n substitutions: readonly (infer U)[];\n}\n ? Partial<Record<U & string, string | number>>\n : never;\n\nexport interface LocaleProvider<S extends LocaleStructure> {\n lang(): Language;\n\n languages(): Set<Language>;\n\n keys(): ReadonlySet<keyof S>;\n\n // non-plural keys\n trans<K extends LocaleNonPluralKeys<S>>(key: K, substitutions?: LocaleSubstitutionsFor<S, K>): string;\n\n // plural keys\n choice<K extends LocalePluralKeys<S>>(key: K, count: number, substitutions?: LocaleSubstitutionsFor<S, K>): string;\n}\n\nexport interface LocaleDynamicProvider<S extends LocaleStructure> extends LocaleProvider<S> {\n change(lang: Language): Promise<Language>;\n}\n","import {\n Language,\n LocaleDir,\n LocaleKeyMarker,\n LocaleKeysSeparator,\n LocaleMessages,\n LocaleNestedKeysSeparator,\n RtlLanguages,\n} from \"@typing/locale\";\n\nexport const getLocaleFilename = (lang: Language): string => {\n return `_locales/${lang}/messages.json`;\n};\n\nexport const convertLocaleKey = (key: string): string => {\n return key.replaceAll(LocaleNestedKeysSeparator, LocaleKeysSeparator);\n};\n\nexport const convertLocaleMessageKey = (key: string): string => {\n return `__MSG_${convertLocaleKey(key)}__`;\n};\n\nexport const extractLocaleKey = (key?: string): string | undefined => {\n if (isLocaleKey(key)) {\n return key.substring(1);\n }\n};\n\nexport const isLocaleKey = (key?: string): key is string => {\n return key?.startsWith(LocaleKeyMarker) ?? false;\n};\n\nexport const modifyLocaleMessageKey = (key?: string): string | undefined => {\n if (typeof key !== \"string\") {\n return undefined;\n }\n\n const localeKey = extractLocaleKey(key);\n\n if (localeKey) {\n return convertLocaleMessageKey(localeKey);\n }\n\n return key;\n};\n\nexport const isLocaleRtl = (lang: Language): boolean => {\n return RtlLanguages.has(lang);\n};\n\nexport const getLocaleDir = (lang: Language): LocaleDir => {\n return isLocaleRtl(lang) ? LocaleDir.RightToLeft : LocaleDir.LeftToRight;\n};\n\nexport const flattenLocaleMessages = (messages: LocaleMessages): Record<string, string> => {\n return Object.fromEntries(Object.entries(messages).map(([key, value]) => [key, value.message]));\n};\n","import {Required} from \"utility-types\";\n\nimport {EntrypointBuilder, EntrypointOptions} from \"@typing/entrypoint\";\nimport {BackgroundConfig} from \"@typing/background\";\nimport {Awaiter} from \"@typing/helpers\";\n\ntype Tab = chrome.tabs.Tab;\n\nexport const CommandExecuteActionName = \"_execute_action\";\n\nexport interface CommandConfig extends BackgroundConfig {\n name: string;\n description?: string;\n global?: boolean;\n defaultKey?: string;\n windowsKey?: string;\n macKey?: string;\n chromeosKey?: string;\n linuxKey?: string;\n}\n\nexport type CommandOptions = CommandConfig & EntrypointOptions;\n\nexport type CommandEntrypointOptions = Partial<CommandOptions>;\n\nexport type CommandExecute = (tab: Tab | undefined, options: CommandOptions) => Awaiter<void>;\n\nexport interface CommandDefinition extends CommandEntrypointOptions {\n execute: CommandExecute;\n}\n\nexport type ExecuteActionCommandDefinition = Omit<CommandDefinition, \"name\">;\n\nexport type CommandUnresolvedDefinition = Partial<CommandDefinition>;\n\nexport type CommandResolvedDefinition = Required<CommandDefinition, \"name\" | \"execute\">;\n\nexport type CommandBuilder = EntrypointBuilder;\n","import {z} from \"zod\";\n\nimport BackgroundParser from \"./BackgroundParser\";\n\nimport {modifyLocaleMessageKey} from \"@locale/utils\";\n\nimport {CommandEntrypointOptions, CommandExecuteActionName} from \"@typing/command\";\nimport {EntrypointFile} from \"@typing/entrypoint\";\n\nexport default class extends BackgroundParser<CommandEntrypointOptions> {\n protected definition(): string[] {\n return [\"defineCommand\", \"defineExecuteActionCommand\"];\n }\n\n protected schema(): typeof this.CommonPropertiesSchema {\n const ShortcutKeySchema = z\n .string()\n .regex(\n /^(Ctrl|Command|MacCtrl|Alt|Option)(\\+Shift)?\\+[A-Z0-9]$/,\n \"Invalid shortcut key, expected format like: Ctrl+Shift+K or Command+Shift+P\"\n )\n .optional();\n\n return super.schema().extend({\n name: z.string().nonempty().optional(),\n description: z.string().nonempty().optional(),\n global: z.boolean().optional(),\n defaultKey: ShortcutKeySchema,\n windowsKey: ShortcutKeySchema,\n macKey: ShortcutKeySchema,\n chromeosKey: ShortcutKeySchema,\n linuxKey: ShortcutKeySchema,\n });\n }\n\n public options(file: EntrypointFile): CommandEntrypointOptions {\n const {defaultKey, windowsKey, macKey, chromeosKey, linuxKey, ...options} = super.options(file);\n\n if (!defaultKey && !windowsKey && !macKey && !chromeosKey && !linuxKey) {\n throw new Error(\"Invalid command options: At least one suggested key must be defined\");\n }\n\n return {\n ...options,\n defaultKey,\n windowsKey,\n macKey,\n chromeosKey,\n linuxKey,\n description: modifyLocaleMessageKey(options.description),\n };\n }\n\n protected getOptions(file: EntrypointFile): Record<string, any> {\n const instance = this.optionFile(file);\n\n const options = instance.getOptions();\n\n if (instance.getDefinition() === \"defineExecuteActionCommand\") {\n return {...options, name: CommandExecuteActionName};\n }\n\n return options;\n }\n}\n","import z from \"zod\";\n\nimport AbstractParser from \"./AbstractParser\";\n\nimport {ContentScriptEntrypointOptions, ContentScriptMatches} from \"@typing/content\";\nimport {EntrypointFile} from \"@typing/entrypoint\";\n\nexport default class<\n O extends ContentScriptEntrypointOptions = ContentScriptEntrypointOptions,\n> extends AbstractParser<O> {\n protected definition(): string | string[] {\n return [\"defineContentScript\", \"defineContentScriptAppend\"];\n }\n\n protected schema(): typeof this.CommonPropertiesSchema {\n return this.CommonPropertiesSchema.extend({\n matches: z.array(z.string()).optional(),\n excludeMatches: z.array(z.string()).optional(),\n matchAboutBlank: z.boolean().optional(),\n includeGlobs: z.array(z.string()).optional(),\n excludeGlobs: z.array(z.string()).optional(),\n allFrames: z.boolean().optional(),\n world: z.enum([\"ISOLATED\", \"MAIN\"]).optional(),\n runAt: z.enum([\"document_start\", \"document_end\", \"document_idle\"]).optional(),\n matchOriginAsFallback: z.boolean().optional(),\n declarative: z.boolean().optional(),\n });\n }\n\n public options(file: EntrypointFile): O {\n const options = super.options(file);\n\n return {\n matches: ContentScriptMatches,\n runAt: \"document_idle\",\n declarative: false,\n ...options,\n };\n }\n}\n","import {z} from \"zod\";\n\nimport AbstractParser from \"./AbstractParser\";\n\nimport {ViewEntrypointOptions} from \"@typing/view\";\n\nexport default abstract class<O extends ViewEntrypointOptions> extends AbstractParser<O> {\n protected HtmlTypeStringSchema = z.enum([\"css\", \"js\"]);\n protected HtmlAttributesObjectSchema = z.record(z.string(), z.union([z.string(), z.boolean(), z.number()]));\n\n protected HtmlAddHashFunctionSchema = z.function().args(z.string(), z.string()).returns(z.string());\n\n protected HtmlAddPublicPathFunctionSchema = z.function().args(z.string(), z.string()).returns(z.string());\n\n protected HtmlCommonOptionsSchema = z.object({\n append: z.boolean().optional(),\n useHash: z.boolean().optional(),\n addHash: this.HtmlAddHashFunctionSchema.optional(),\n hash: z.union([z.boolean(), z.string(), this.HtmlAddHashFunctionSchema]).optional(),\n usePublicPath: z.boolean().optional(),\n addPublicPath: this.HtmlAddPublicPathFunctionSchema.optional(),\n publicPath: z.union([z.boolean(), z.string(), this.HtmlAddPublicPathFunctionSchema]).optional(),\n });\n\n protected HtmlExternalObjectSchema = z.object({\n packageName: z.string(),\n variableName: z.string(),\n });\n\n protected HtmlBaseTagOptionsSchema = this.HtmlCommonOptionsSchema.extend({\n glob: z.string().optional(),\n globPath: z.string().optional(),\n globFlatten: z.boolean().optional(),\n sourcePath: z.string().optional(),\n });\n\n protected HtmlLinkTagOptionsSchema = this.HtmlBaseTagOptionsSchema.extend({\n path: z.string(),\n attributes: this.HtmlAttributesObjectSchema.optional(),\n });\n\n protected HtmlScriptTagOptionsSchema = this.HtmlBaseTagOptionsSchema.extend({\n path: z.string(),\n attributes: this.HtmlAttributesObjectSchema.optional(),\n external: this.HtmlExternalObjectSchema.optional(),\n });\n\n protected HtmlMaybeLinkTagOptionsSchema = this.HtmlLinkTagOptionsSchema.extend({\n type: this.HtmlTypeStringSchema.optional(),\n });\n\n protected HtmlMaybeScriptTagOptionsSchema = this.HtmlScriptTagOptionsSchema.extend({\n type: this.HtmlTypeStringSchema.optional(),\n });\n\n protected HtmlMetaTagOptionsSchema = this.HtmlBaseTagOptionsSchema.extend({\n path: z.string().optional(),\n attributes: this.HtmlAttributesObjectSchema,\n });\n\n protected HtmlOptionsSchema = this.HtmlCommonOptionsSchema.extend({\n append: z.boolean().optional(),\n prependExternals: z.boolean().optional(),\n jsExtensions: z.union([z.string(), z.array(z.string())]).optional(),\n cssExtensions: z.union([z.string(), z.array(z.string())]).optional(),\n tags: z\n .union([\n z.string(),\n this.HtmlMaybeLinkTagOptionsSchema,\n this.HtmlMaybeScriptTagOptionsSchema,\n z.array(\n z.union([z.string(), this.HtmlMaybeLinkTagOptionsSchema, this.HtmlMaybeScriptTagOptionsSchema])\n ),\n ])\n .optional(),\n links: z\n .union([\n z.string(),\n this.HtmlLinkTagOptionsSchema,\n z.array(z.union([z.string(), this.HtmlLinkTagOptionsSchema])),\n ])\n .optional(),\n scripts: z\n .union([\n z.string(),\n this.HtmlScriptTagOptionsSchema,\n z.array(z.union([z.string(), this.HtmlScriptTagOptionsSchema])),\n ])\n .optional(),\n metas: z\n .union([\n z.string(),\n this.HtmlMetaTagOptionsSchema,\n z.array(z.union([z.string(), this.HtmlMetaTagOptionsSchema])),\n ])\n .optional(),\n });\n\n protected schema(): typeof this.CommonPropertiesSchema {\n return this.CommonPropertiesSchema.merge(this.HtmlOptionsSchema).extend({\n as: z.string().nonempty().optional(),\n title: z.string().nonempty().optional(),\n template: z.string().nonempty().optional(),\n });\n }\n}\n","import z from \"zod\";\n\nimport ViewParser from \"./ViewParser\";\n\nimport {PageEntrypointOptions} from \"@typing/page\";\n\nexport default class extends ViewParser<PageEntrypointOptions> {\n protected definition(): string {\n return \"definePage\";\n }\n\n protected schema(): typeof this.CommonPropertiesSchema {\n return super.schema().extend({\n name: z.string().nonempty().optional(),\n matches: z.array(z.string()).optional(),\n });\n }\n}\n","import {z} from \"zod\";\n\nimport ViewParser from \"./ViewParser\";\n\nimport {PopupEntrypointOptions} from \"@typing/popup\";\n\nexport default class extends ViewParser<PopupEntrypointOptions> {\n protected definition(): string {\n return \"definePopup\";\n }\n\n protected schema(): typeof this.CommonPropertiesSchema {\n return super.schema().extend({\n icon: z.string().nonempty().optional(),\n apply: z.boolean().optional(),\n });\n }\n}\n","import z from \"zod\";\n\nimport ContentParser from \"./ContentParser\";\n\nimport {RelayEntrypointOptions} from \"@typing/relay\";\nimport {EntrypointFile} from \"@typing/entrypoint\";\n\nexport default class extends ContentParser<RelayEntrypointOptions> {\n protected definition(): string {\n return \"defineRelay\";\n }\n\n protected agreement(): string {\n return \"init\";\n }\n\n protected schema(): typeof this.CommonPropertiesSchema {\n return super.schema().extend({\n name: z\n .string()\n .trim()\n .min(1)\n .max(100)\n .regex(/^[\\p{L}_$][\\p{L}\\p{N}_$]*$/u, {\n message:\n \"Key must start with a Unicode letter, `$` or `_`, and may only contain letters, digits, `$` or `_`\",\n })\n .optional(),\n });\n }\n\n public options(file: EntrypointFile): RelayEntrypointOptions {\n return {...super.options(file), declarative: true};\n }\n}\n","import z from \"zod\";\n\nimport BackgroundParser from \"./BackgroundParser\";\n\nimport {ServiceEntrypointOptions} from \"@typing/service\";\n\nexport default class extends BackgroundParser<ServiceEntrypointOptions> {\n protected definition(): string {\n return \"defineService\";\n }\n\n protected agreement(): string {\n return \"init\";\n }\n\n protected schema(): typeof this.CommonPropertiesSchema {\n return super.schema().extend({\n name: z\n .string()\n .trim()\n .min(1)\n .max(100)\n .regex(/^[\\p{L}_$][\\p{L}\\p{N}_$]*$/u, {\n message:\n \"Key must start with a Unicode letter, `$` or `_`, and may only contain letters, digits, `$` or `_`\",\n })\n .optional(),\n });\n }\n}\n","import {z} from \"zod\";\n\nimport ViewParser from \"./ViewParser\";\n\nimport {SidebarEntrypointOptions} from \"@typing/sidebar\";\n\nexport default class extends ViewParser<SidebarEntrypointOptions> {\n protected definition(): string {\n return \"defineSidebar\";\n }\n\n protected schema(): typeof this.CommonPropertiesSchema {\n return super.schema().extend({\n icon: z.string().nonempty().optional(),\n apply: z.boolean().optional(),\n });\n }\n}\n","import z from \"zod\";\n\nimport ViewParser from \"./ViewParser\";\n\nimport {OffscreenEntrypointOptions, OffscreenReason} from \"@typing/offscreen\";\n\nexport default class extends ViewParser<OffscreenEntrypointOptions> {\n protected definition(): string {\n return \"defineOffscreen\";\n }\n\n protected agreement(): string {\n return \"init\";\n }\n\n protected schema(): typeof this.CommonPropertiesSchema {\n const reasonEnumValues = Object.values(OffscreenReason);\n\n return super.schema().extend({\n name: z\n .string()\n .trim()\n .min(1)\n .max(100)\n .regex(/^[\\p{L}_$][\\p{L}\\p{N}_$]*$/u, {\n message:\n \"Key must start with a Unicode letter, `$` or `_`, and may only contain letters, digits, `$` or `_`\",\n })\n .optional(),\n reasons: z\n .union(\n [\n z.enum(reasonEnumValues as [string, ...string[]]),\n z.array(z.enum(reasonEnumValues as [string, ...string[]])),\n ],\n {\n message:\n 'The \"reasons\" field must be a valid OffscreenReason enum value or array of enum values',\n }\n )\n .optional(),\n justification: z.string().trim().optional(),\n });\n }\n}\n","import AbstractPluginFinder from \"./AbstractPluginFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {BackgroundParser} from \"../parser\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {BackgroundEntrypointOptions} from \"@typing/background\";\nimport {EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class extends AbstractPluginFinder<BackgroundEntrypointOptions> {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.Background;\n }\n\n public canMerge(): boolean {\n return this.config.mergeBackground;\n }\n\n protected getParser(): EntrypointParser<BackgroundEntrypointOptions> {\n return new BackgroundParser(this.config);\n }\n\n protected getPlugin(): EntrypointOptionsFinder<BackgroundEntrypointOptions> {\n return new PluginFinder(this.config, \"background\", this);\n }\n}\n","import AbstractPluginFinder from \"./AbstractPluginFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {CommandParser} from \"../parser\";\nimport {InlineNameGenerator} from \"../name\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {CommandEntrypointOptions, CommandOptions} from \"@typing/command\";\nimport {EntrypointFile, EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class extends AbstractPluginFinder<CommandEntrypointOptions> {\n protected _commands?: Map<EntrypointFile, CommandOptions>;\n\n protected readonly names: InlineNameGenerator;\n\n public constructor(config: ReadonlyConfig) {\n super(config);\n\n this.names = new InlineNameGenerator(this.type());\n }\n\n public type(): EntrypointType {\n return EntrypointType.Command;\n }\n\n protected getParser(): EntrypointParser<CommandEntrypointOptions> {\n return new CommandParser(this.config);\n }\n\n protected getPlugin(): EntrypointOptionsFinder<CommandEntrypointOptions> {\n return new PluginFinder(this.config, \"command\", this);\n }\n\n protected async getCommands(): Promise<Map<EntrypointFile, CommandOptions>> {\n const commands = new Map<EntrypointFile, CommandOptions>();\n\n for (const [file, option] of await this.plugin().options()) {\n const {name, ...definition} = option;\n\n commands.set(file, {\n name: name ? this.names.name(name) : this.names.file(file),\n ...definition,\n });\n }\n\n return commands;\n }\n\n public async commands(): Promise<Map<EntrypointFile, CommandOptions>> {\n return (this._commands ??= await this.getCommands());\n }\n\n public canMerge(): boolean {\n return this.config.mergeCommands;\n }\n\n public clear(): this {\n this.names.reset();\n\n this._commands = undefined;\n\n return super.clear();\n }\n}\n","import AbstractPluginFinder from \"./AbstractPluginFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {ContentParser} from \"../parser\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {ContentScriptEntrypointOptions} from \"@typing/content\";\nimport {EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class extends AbstractPluginFinder<ContentScriptEntrypointOptions> {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.ContentScript;\n }\n\n protected getPlugin(): EntrypointOptionsFinder<ContentScriptEntrypointOptions> {\n return new PluginFinder(this.config, \"content\", this);\n }\n\n protected getParser(): EntrypointParser<ContentScriptEntrypointOptions> {\n return new ContentParser(this.config);\n }\n\n public canMerge(): boolean {\n return this.config.mergeContentScripts;\n }\n}\n","import path from \"path\";\nimport fs from \"fs\";\n\nimport {getAppPath, getAppSourcePath, getRootPath, getSharedPath, getSourcePath} from \"@cli/resolvers/path\";\n\nimport AbstractFinder from \"./AbstractFinder\";\n\nimport {EntrypointFile} from \"@typing/entrypoint\";\n\nexport default abstract class extends AbstractFinder {\n public abstract getNames(): ReadonlySet<string>;\n\n public abstract isValidExtension(extension: string): boolean;\n\n public getDirectory(): string {\n return \".\";\n }\n\n public isValidName(name: string): boolean {\n return name.length > 0 && this.getNames().has(name);\n }\n\n public canMerge(): boolean {\n return false;\n }\n\n public isValidFilename(filename: string): boolean {\n let {name, ext} = path.parse(filename);\n\n if (ext.startsWith(\".\")) {\n ext = ext.slice(1);\n }\n\n return this.isValidName(name) && this.isValidExtension(ext);\n }\n\n protected async getFiles(): Promise<Set<EntrypointFile>> {\n const files = new Set<EntrypointFile>();\n\n const parser = async (directory: string): Promise<void> => {\n if (files.size === 0 || this.canMerge()) {\n const localeFiles = await this.findFiles(getRootPath(directory));\n\n for (const file of localeFiles) {\n files.add(file);\n }\n }\n };\n\n const dir = this.getDirectory();\n\n await parser(getAppSourcePath(this.config, dir));\n await parser(getAppPath(this.config, dir));\n await parser(getSharedPath(this.config, dir));\n await parser(getSourcePath(this.config, dir));\n\n return files;\n }\n\n protected async findFiles(directory: string): Promise<Set<EntrypointFile>> {\n const files = new Set<EntrypointFile>();\n\n try {\n const entries = fs.readdirSync(directory);\n\n for (const entry of entries) {\n const fullPath = path.join(directory, entry);\n const stats = fs.statSync(fullPath);\n\n if (stats.isFile() && this.isValidFilename(fullPath)) {\n files.add(this.file(fullPath));\n }\n }\n } catch {}\n\n return files;\n }\n}\n","import _ from \"lodash\";\nimport path from \"path\";\nimport pluralize from \"pluralize\";\n\nimport {processPluginHandler} from \"@cli/resolvers/plugin\";\n\nimport AbstractFinder from \"./AbstractFinder\";\nimport AbstractAssetFinder from \"./AbstractAssetFinder\";\n\nimport {EntrypointFile} from \"@typing/entrypoint\";\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {PluginAssetKeys} from \"@typing/plugin\";\n\nexport default class extends AbstractFinder {\n constructor(\n config: ReadonlyConfig,\n protected readonly key: PluginAssetKeys,\n protected readonly finder: AbstractAssetFinder\n ) {\n super(config);\n }\n\n protected async getFiles(): Promise<Set<EntrypointFile>> {\n const pluginResult = await Array.fromAsync(\n processPluginHandler(this.config.plugins, this.key, {\n config: this.config,\n })\n );\n\n const files = new Set<EntrypointFile>();\n\n for await (let {name, result} of pluginResult) {\n if (_.isBoolean(result)) {\n result = pluralize(this.key);\n }\n\n if (_.isString(result)) {\n result = await this.findFiles(name, result);\n }\n\n if (_.isArray(result) || _.isSet(result)) {\n for (const item of result) {\n if (_.isEmpty(item)) {\n continue;\n }\n\n let file: EntrypointFile;\n\n if (_.isString(item) && this.finder.isValidFilename(item)) {\n file = this.file(item);\n } else if (_.isPlainObject(item)) {\n const {file: filename} = item as EntrypointFile;\n\n if (filename && this.finder.isValidFilename(filename)) {\n file = item as EntrypointFile;\n } else {\n continue;\n }\n } else {\n continue;\n }\n\n const {name: filename} = path.parse(file.file);\n\n if (filename.endsWith(`.${this.config.browser}`) || !filename.includes(\".\")) {\n files.add(file);\n }\n }\n }\n }\n\n return files;\n }\n\n protected async findFiles(name: string, directory: string): Promise<Set<EntrypointFile>> {\n const files = new Set<EntrypointFile>();\n const resolve = (file: string) => this.resolveSafely(name, path.posix.join(directory, file));\n\n for (const name of this.finder.getNames()) {\n for (const file of [resolve(name), resolve(`${name}.${this.config.browser}`)]) {\n if (file) {\n files.add(file);\n }\n }\n }\n\n return files;\n }\n}\n","export const DefaultIconGroupName = \"default\";\n","import path from \"path\";\nimport _ from \"lodash\";\n\nimport AbstractAssetFinder from \"./AbstractAssetFinder\";\nimport AssetPluginFinder from \"./AssetPluginFinder\";\n\nimport {EntrypointFile} from \"@typing/entrypoint\";\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {DefaultIconGroupName} from \"@typing/icon\";\n\nexport interface IconName {\n group: string;\n size: number;\n}\n\nexport interface IconItem {\n file: EntrypointFile;\n name: IconName;\n}\n\nexport type IconItems = Map<number, IconItem>;\n\nexport type IconGroups = Map<string, IconItems>;\n\nexport default class extends AbstractAssetFinder {\n protected _plugin?: AssetPluginFinder;\n protected _icons?: IconGroups;\n\n protected readonly sizes: ReadonlySet<number> = new Set([16, 32, 48, 64, 128, 256, 512]);\n\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n protected getPlugin(): AssetPluginFinder {\n return new AssetPluginFinder(this.config, \"icon\", this);\n }\n\n public plugin(): AssetPluginFinder {\n return (this._plugin ??= this.getPlugin());\n }\n\n public getNames(): ReadonlySet<string> {\n return new Set([...this.sizes].map(String));\n }\n\n public isValidName(name: string): boolean {\n return this.parseName(name) !== undefined;\n }\n\n public isValidExtension(extension: string): boolean {\n return extension === \"png\";\n }\n\n protected parseName(name: string): IconName | undefined {\n name = name.toLowerCase().trim();\n\n if (name.includes(\".\")) {\n const index = name.lastIndexOf(\".\");\n\n if (index >= 0) {\n name = name.substring(0, index);\n }\n }\n\n const matchSize = name.match(/(\\d+)$/);\n\n const size = matchSize ? parseInt(matchSize[1], 10) : undefined;\n\n if (!size || !this.sizes.has(size)) {\n return undefined;\n }\n\n const groupMatch = name.match(/^([a-z]+)(?:[-_]|\\d)/);\n\n const group = groupMatch ? groupMatch[1] : DefaultIconGroupName;\n\n return {group, size};\n }\n\n protected getName(file: EntrypointFile): IconName {\n const {name: filename} = path.parse(file.file);\n\n const name = this.parseName(filename);\n\n if (!name) {\n throw new Error(`Invalid icon name: ${file.file}`);\n }\n\n return name;\n }\n\n public getDirectory(): string {\n return this.config.icon.sourceDir || \"icons\";\n }\n\n public canMerge(): boolean {\n return this.config.mergeIcons;\n }\n\n protected async getIcons(): Promise<IconGroups> {\n const files = await this.plugin().files();\n\n const groups = _.chain([...files])\n .map(file => ({file, name: this.getName(file)}))\n .groupBy(({name}) => name.group)\n .mapValues(items => {\n return new Map(items.map(item => [item.name.size, item]));\n })\n .value();\n\n return new Map(Object.entries(groups));\n }\n\n public async icons(): Promise<IconGroups> {\n return (this._icons ??= await this.getIcons());\n }\n\n public clear(): this {\n this.plugin().clear();\n\n this._icons = undefined;\n\n return super.clear();\n }\n}\n","import {Language, LocaleBuilder, LocaleValidator} from \"@typing/locale\";\nimport {Browser} from \"@typing/browser\";\n\nexport class LocaleError extends Error {\n constructor(browser: Browser, language: Language, message: string) {\n super(`Locale for ${browser}:${language} - ${message}`);\n }\n}\n\nexport default class implements LocaleValidator {\n protected nameKey?: string;\n protected descriptionKey?: string;\n protected shortNameKey?: string;\n\n protected get nameLimit(): number {\n return (\n {\n [Browser.Chrome]: 75,\n [Browser.Edge]: 75,\n [Browser.Firefox]: 50,\n }[this.browser] || 45\n );\n }\n\n protected get descriptionLimit(): number {\n return 132;\n }\n\n protected get shortNameLimit(): number {\n return 12;\n }\n\n constructor(\n protected readonly browser: Browser,\n protected readonly language: Language\n ) {}\n\n public isValid(locale: LocaleBuilder): boolean {\n try {\n this.validate(locale);\n\n return true;\n } catch {\n return false;\n }\n }\n\n public validate(locale: LocaleBuilder): this {\n const data = locale.get();\n\n const name = this.nameKey && data.get(this.nameKey);\n const shortName = this.shortNameKey && data.get(this.shortNameKey);\n const description = this.descriptionKey && data.get(this.descriptionKey);\n\n if (name && name.length > this.nameLimit) {\n throw new LocaleError(\n this.browser,\n this.language,\n `Name \"${name}\" [${this.nameKey}] exceeds ${this.nameLimit} characters`\n );\n }\n\n if (shortName && shortName.length > this.shortNameLimit) {\n throw new LocaleError(\n this.browser,\n this.language,\n `Short name \"${shortName}\" [${this.shortNameKey}] exceeds ${this.shortNameLimit} characters`\n );\n }\n\n if (description && description.length > this.descriptionLimit) {\n throw new LocaleError(\n this.browser,\n this.language,\n `Description \"${description}\" [${this.descriptionKey}] exceeds ${this.descriptionLimit} characters`\n );\n }\n\n return this;\n }\n\n public setNameKey(nameKey?: string): this {\n this.nameKey = nameKey;\n\n return this;\n }\n\n public setDescriptionKey(descriptionKey?: string): this {\n this.descriptionKey = descriptionKey;\n\n return this;\n }\n\n public setShortNameKey(shortNameKey?: string): this {\n this.shortNameKey = shortNameKey;\n\n return this;\n }\n}\n","import _ from \"lodash\";\n\nimport {convertLocaleKey} from \"@locale/utils\";\n\nimport {LocaleError} from \"./LocaleValidator\";\n\nimport {\n Language,\n LocaleBuilder as LocaleBuilderContract,\n LocaleCustomKeyForLanguage,\n LocaleData,\n LocaleItems,\n LocaleKeys,\n LocaleMessages,\n LocaleNestedKeysSeparator,\n LocaleStructure,\n LocaleValidator,\n LocaleValuesSeparator,\n} from \"@typing/locale\";\nimport {Browser} from \"@typing/browser\";\n\nexport default class LocaleBuilder implements LocaleBuilderContract {\n protected data: LocaleData[] = [];\n protected items?: LocaleItems;\n\n protected validator?: LocaleValidator;\n\n constructor(\n protected readonly browser: Browser,\n protected readonly language: Language\n ) {}\n\n public get(): LocaleItems {\n if (this.items) {\n return this.items;\n }\n\n const items: LocaleItems = new Map();\n\n for (const data of this.data) {\n for (const [key, value] of this.convert(data).entries()) {\n items.set(key, value);\n }\n }\n\n if (this.browser === Browser.Opera) {\n /**\n * The Opera browser does not support RTL languages,\n * and for Opera you need to directly indicate what kind of language it is.\n * interface language is always different\n */\n\n items.set(LocaleCustomKeyForLanguage, this.language);\n }\n\n return (this.items = items);\n }\n\n public keys(): LocaleKeys {\n return new Set(this.get().keys());\n }\n\n public build(): LocaleMessages {\n return this.validate()\n .get()\n .entries()\n .reduce(\n (locale, [key, value]) => ({\n ...locale,\n [convertLocaleKey(key)]: {message: value},\n }),\n {}\n );\n }\n\n public structure(): LocaleStructure {\n const substitutions = (value: string): string[] => {\n const pattern = /{{([^{}]+)}}/g;\n const substitutions: string[] = [];\n\n let match: RegExpExecArray | null;\n\n while ((match = pattern.exec(value)) !== null) {\n substitutions.push(match[1].trim());\n }\n\n return substitutions;\n };\n\n return this.get()\n .entries()\n .reduce(\n (structure, [key, value]) => ({\n ...structure,\n [key]: {\n plural: value.includes(LocaleValuesSeparator),\n substitutions: substitutions(value),\n },\n }),\n {} as LocaleStructure\n );\n }\n\n public merge(data: LocaleData): this {\n this.data.push(data);\n this.items = undefined;\n\n return this;\n }\n\n public lang(): Language {\n return this.language;\n }\n\n public isValid(): boolean {\n try {\n this.validate();\n return true;\n } catch {\n return false;\n }\n }\n\n public validate(): this {\n if (!this.validator) {\n throw new LocaleError(this.browser, this.language, \"Validator is not set\");\n }\n\n this.validator.validate(this);\n\n return this;\n }\n\n public setValidator(validator: LocaleValidator): this {\n this.validator = validator;\n\n return this;\n }\n\n protected convert(data: LocaleData, prefix?: string): LocaleItems {\n const items: LocaleItems = new Map();\n\n for (const [key, value] of Object.entries(data)) {\n const resolvedKey = prefix ? [prefix, key].join(LocaleNestedKeysSeparator) : key;\n\n if (_.isString(value) || _.isNumber(value)) {\n items.set(resolvedKey, value.toString());\n } else if (_.isArray(value)) {\n items.set(\n resolvedKey,\n _.filter(value, v => _.isString(v) || _.isNumber(v)).join(LocaleValuesSeparator)\n );\n } else if (_.isPlainObject(value)) {\n for (const [k, v] of this.convert(value, resolvedKey).entries()) {\n items.set(k, v);\n }\n }\n }\n\n return items;\n }\n}\n","import LocaleBuilder from \"./LocaleBuilder\";\nimport LocaleValidator from \"./LocaleValidator\";\n\nimport {extractLocaleKey} from \"@locale/utils\";\n\nimport {Language, LocaleBuilder as LocaleBuilderContract} from \"@typing/locale\";\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport {LocaleBuilder, LocaleValidator};\n\nexport default (language: Language, config: ReadonlyConfig): LocaleBuilderContract => {\n const {browser, locale} = config;\n const {name, shortName, description} = locale;\n\n const validator = new LocaleValidator(browser, language)\n .setNameKey(extractLocaleKey(name))\n .setShortNameKey(extractLocaleKey(shortName))\n .setDescriptionKey(extractLocaleKey(description));\n\n return new LocaleBuilder(browser, language).setValidator(validator);\n};\n","import _ from \"lodash\";\nimport path from \"path\";\nimport fs from \"fs\";\nimport yaml from \"js-yaml\";\n\nimport AbstractAssetFinder from \"./AbstractAssetFinder\";\nimport AssetPluginFinder from \"./AssetPluginFinder\";\n\nimport localeFactory from \"@cli/builders/locale\";\nimport {isFileExtension} from \"@cli/utils/path\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {\n Language,\n LanguageCodes,\n LocaleBuilder,\n LocaleData,\n LocaleFileExtensions,\n LocaleKeys,\n LocaleStructure,\n} from \"@typing/locale\";\n\nexport type LocaleBuilders = Map<Language, LocaleBuilder>;\n\nexport default class extends AbstractAssetFinder {\n protected _plugin?: AssetPluginFinder;\n protected _builders?: LocaleBuilders;\n\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public isValidName(name: string): boolean {\n if (name.includes(\".\")) {\n name = name.split(\".\").slice(0, -1).join(\".\");\n }\n\n return super.isValidName(name);\n }\n\n public isValidExtension(extension: string): boolean {\n return LocaleFileExtensions.has(extension);\n }\n\n public getDirectory(): string {\n return this.config.locale.dir || \"locales\";\n }\n\n public getNames(): ReadonlySet<string> {\n return LanguageCodes;\n }\n\n public canMerge(): boolean {\n return this.config.mergeLocales;\n }\n\n protected getPlugin(): AssetPluginFinder {\n return new AssetPluginFinder(this.config, \"locale\", this);\n }\n\n public plugin(): AssetPluginFinder {\n return (this._plugin ??= this.getPlugin());\n }\n\n protected async getBuilders(): Promise<LocaleBuilders> {\n return _.chain(Array.from(await this.plugin().files()))\n .groupBy(file => this.getLanguageFromFilename(file.file))\n .reduce((map, files, lang) => {\n const locale = localeFactory(lang as Language, this.config);\n\n for (const {file} of files) {\n const content = fs.readFileSync(file, \"utf8\");\n\n if (isFileExtension(file, [\"yaml\", \"yml\"])) {\n locale.merge(yaml.load(content) as LocaleData);\n } else if (isFileExtension(file, \"json\")) {\n locale.merge(JSON.parse(content));\n }\n }\n\n map.set(locale.lang(), locale);\n\n return map;\n }, new Map() as LocaleBuilders)\n .value();\n }\n\n protected getLanguageFromFilename(filename: string): Language {\n let {name} = path.parse(filename);\n\n if (name.includes(\".\")) {\n name = name.split(\".\").slice(0, -1).join(\".\");\n }\n\n if (LanguageCodes.has(name)) {\n return name as Language;\n }\n\n throw new Error(`Invalid locale filename: ${filename}`);\n }\n\n public async builders(): Promise<LocaleBuilders> {\n return (this._builders ??= await this.getBuilders());\n }\n\n public async keys(): Promise<LocaleKeys> {\n const builders = await this.builders();\n\n const keys = builders.values().reduce((keys, builder) => {\n return keys.concat(...builder.keys());\n }, [] as string[]);\n\n return new Set(keys);\n }\n\n public async structure(): Promise<LocaleStructure> {\n const builders = await this.builders();\n\n return builders.values().reduce((structure, builder) => {\n return _.merge(structure, builder.structure());\n }, {} as LocaleStructure);\n }\n\n public async languages(): Promise<Set<Language>> {\n const builders = await this.builders();\n\n return new Set(builders.keys());\n }\n\n async empty(): Promise<boolean> {\n return this.plugin().empty();\n }\n\n public clear(): this {\n this.plugin().clear();\n\n this._builders = undefined;\n\n return super.clear();\n }\n}\n","import path from \"path\";\n\nimport AbstractPluginFinder from \"./AbstractPluginFinder\";\n\nimport {InlineNameGenerator} from \"../name\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {EntrypointFile} from \"@typing/entrypoint\";\nimport {TransportEntrypointOptions, TransportOptions} from \"@typing/transport\";\n\nexport interface TransportItem<O extends TransportOptions> {\n options: O;\n contract: string | undefined;\n}\n\nexport type TransportItems<O extends TransportOptions> = Map<EntrypointFile, TransportItem<O>>;\n\nexport default abstract class<\n O extends TransportEntrypointOptions,\n T extends TransportOptions = TransportOptions,\n> extends AbstractPluginFinder<O> {\n protected _transport?: TransportItems<T>;\n\n protected readonly names: InlineNameGenerator;\n\n protected constructor(config: ReadonlyConfig) {\n super(config);\n\n this.names = new InlineNameGenerator(this.type());\n }\n\n protected async getTransport(): Promise<TransportItems<T>> {\n const transport: TransportItems<T> = new Map();\n\n const contracts = await this.plugin().contracts();\n\n for (const [file, option] of await this.plugin().options()) {\n const {name: _name, ...definition} = option;\n\n let name: string;\n\n if (file.external) {\n name = _name ? path.posix.join(file.external, _name) : file.import;\n\n if (this.names.has(name)) {\n throw new Error(`Transport name \"${name}\" for \"${this.type()}\" is already in use.`);\n }\n\n name = this.names.name(name);\n } else if (_name) {\n name = this.names.name(_name);\n } else {\n name = this.names.file(file);\n }\n\n transport.set(file, {\n options: {\n name,\n ...definition,\n } as TransportOptions as T,\n contract: contracts.get(file),\n });\n }\n\n return transport;\n }\n\n public async transport(): Promise<TransportItems<T>> {\n return (this._transport ??= await this.getTransport());\n }\n\n public async dictionary(): Promise<Record<string, string>> {\n const transport = await this.transport();\n\n return transport.values().reduce(\n (dictionary, item) => {\n return {...dictionary, [item.options.name]: item.contract || \"any\"};\n },\n {} as Record<string, string>\n );\n }\n\n public clear(): this {\n this.names.reset();\n\n this._transport = undefined;\n\n return super.clear();\n }\n}\n","import AbstractTransportFinder from \"./AbstractTransportFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {OffscreenParser} from \"../parser\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {OffscreenEntrypointOptions, OffscreenOptions} from \"@typing/offscreen\";\nimport {EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class extends AbstractTransportFinder<OffscreenEntrypointOptions, OffscreenOptions> {\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.Offscreen;\n }\n\n protected getParser(): EntrypointParser<OffscreenEntrypointOptions> {\n return new OffscreenParser(this.config);\n }\n\n protected getPlugin(): EntrypointOptionsFinder<OffscreenEntrypointOptions> {\n return new PluginFinder(this.config, \"offscreen\", this);\n }\n\n public canMerge(): boolean {\n return this.config.mergeOffscreen;\n }\n}\n","import AbstractViewFinder from \"./AbstractViewFinder\";\nimport AbstractTransportFinder from \"./AbstractTransportFinder\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {OffscreenEntrypointOptions} from \"@typing/offscreen\";\nimport {EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class extends AbstractViewFinder<OffscreenEntrypointOptions> {\n constructor(\n config: ReadonlyConfig,\n protected readonly finder: AbstractTransportFinder<OffscreenEntrypointOptions>\n ) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.Offscreen;\n }\n\n protected getParser(): EntrypointParser<OffscreenEntrypointOptions> {\n return this.finder.parser();\n }\n\n protected getPlugin(): EntrypointOptionsFinder<OffscreenEntrypointOptions> {\n return this.finder.plugin();\n }\n\n public canMerge(): boolean {\n return this.config.mergeOffscreen;\n }\n}\n","import AbstractViewFinder from \"./AbstractViewFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {PageParser} from \"../parser\";\nimport {InlineNameGenerator} from \"../name\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {PageEntrypointOptions} from \"@typing/page\";\nimport {\n EntrypointFile,\n EntrypointNameGenerator,\n EntrypointOptionsFinder,\n EntrypointParser,\n EntrypointType,\n} from \"@typing/entrypoint\";\n\nexport default class extends AbstractViewFinder<PageEntrypointOptions> {\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.Page;\n }\n\n protected createFilenameGenerator(): EntrypointNameGenerator {\n return new InlineNameGenerator(this.type())\n .reserve(EntrypointType.Background)\n .reserve(EntrypointType.Command)\n .reserve(EntrypointType.ContentScript)\n .reserve(EntrypointType.Sidebar)\n .reserve(EntrypointType.Popup)\n .reserve(EntrypointType.Offscreen)\n .reserve(EntrypointType.Options);\n }\n\n protected createViewAlias(file: EntrypointFile, options: PageEntrypointOptions): string {\n const {name} = options;\n\n let alias = name ? this.aliases.name(name) : this.aliases.file(file);\n\n if (file.external) {\n alias = file.import;\n }\n\n return alias;\n }\n\n protected getParser(): EntrypointParser<PageEntrypointOptions> {\n return new PageParser(this.config);\n }\n\n protected getPlugin(): EntrypointOptionsFinder<PageEntrypointOptions> {\n return new PluginFinder(this.config, \"page\", this);\n }\n\n public canMerge(): boolean {\n return this.config.mergePages;\n }\n}\n","import AbstractViewFinder from \"./AbstractViewFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {PopupParser} from \"../parser\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {PopupEntrypointOptions} from \"@typing/popup\";\nimport {EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class extends AbstractViewFinder<PopupEntrypointOptions> {\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.Popup;\n }\n\n protected getParser(): EntrypointParser<PopupEntrypointOptions> {\n return new PopupParser(this.config);\n }\n\n protected getPlugin(): EntrypointOptionsFinder<PopupEntrypointOptions> {\n return new PluginFinder(this.config, \"popup\", this);\n }\n\n public canMerge(): boolean {\n return this.config.mergePopup;\n }\n\n public allowMultiple(): boolean {\n return this.config.multiplePopup;\n }\n}\n","import AbstractTransportFinder from \"./AbstractTransportFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {RelayParser} from \"../parser\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {RelayEntrypointOptions} from \"@typing/relay\";\nimport {EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class extends AbstractTransportFinder<RelayEntrypointOptions> {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.Relay;\n }\n\n protected getParser(): EntrypointParser<RelayEntrypointOptions> {\n return new RelayParser(this.config);\n }\n\n protected getPlugin(): EntrypointOptionsFinder<RelayEntrypointOptions> {\n return new PluginFinder(this.config, \"relay\", this);\n }\n\n public canMerge(): boolean {\n return this.config.mergeRelay;\n }\n}\n","import AbstractTransportFinder from \"./AbstractTransportFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {ServiceParser} from \"../parser\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {ServiceEntrypointOptions} from \"@typing/service\";\nimport {EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class extends AbstractTransportFinder<ServiceEntrypointOptions> {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.Service;\n }\n\n protected getParser(): EntrypointParser<ServiceEntrypointOptions> {\n return new ServiceParser(this.config);\n }\n\n protected getPlugin(): EntrypointOptionsFinder<ServiceEntrypointOptions> {\n return new PluginFinder(this.config, \"service\", this);\n }\n\n public canMerge(): boolean {\n return this.config.mergeService;\n }\n}\n","import AbstractViewFinder from \"./AbstractViewFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {SidebarParser} from \"../parser\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {SidebarEntrypointOptions} from \"@typing/sidebar\";\nimport {EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class extends AbstractViewFinder<SidebarEntrypointOptions> {\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.Sidebar;\n }\n\n protected getParser(): EntrypointParser<SidebarEntrypointOptions> {\n return new SidebarParser(this.config);\n }\n\n protected getPlugin(): EntrypointOptionsFinder<SidebarEntrypointOptions> {\n return new PluginFinder(this.config, \"sidebar\", this);\n }\n\n public canMerge(): boolean {\n return this.config.mergeSidebar;\n }\n\n public allowMultiple(): boolean {\n return this.config.multipleSidebar;\n }\n}\n","import {EntrypointFile} from \"@typing/entrypoint\";\nimport {Framework} from \"@typing/framework\";\n\nexport const getEntrypointFileFramework = (file: EntrypointFile): Framework => {\n if (/\\.(jsx|tsx)$/.test(file.file)) {\n return Framework.React;\n }\n\n return Framework.Vanilla;\n};\n","import background from \"./background.ts?raw\";\nimport command from \"./command.ts?raw\";\nimport content from \"./content.ts?raw\";\nimport transport from \"./transport.ts?raw\";\nimport offscreen from \"./offscreen.ts?raw\";\nimport offscreenBackground from \"./offscreen.background.ts?raw\";\nimport relay from \"./relay.ts?raw\";\nimport view from \"./view.ts?raw\";\n\nimport {getEntrypointFileFramework} from \"@cli/entrypoint\";\n\nimport {PackageName} from \"@typing/app\";\nimport {EntrypointFile} from \"@typing/entrypoint\";\n\nconst templates = {background, command, content, offscreen, relay, view, transport};\n\nconst getEntryFramework = (file: EntrypointFile, entry: \"content\" | \"view\"): string => {\n return `${PackageName}/entry/${entry}/${getEntrypointFileFramework(file)}`;\n};\n\nconst getVirtualModule = (file: EntrypointFile, template: keyof typeof templates): string => {\n // prettier-ignore\n return templates[template]\n .replaceAll(\"//@ts-ignore\", \"\")\n .replace(`virtual:${template}-entrypoint`, file.import);\n};\n\nconst getTransportModule = (file: EntrypointFile, name: string, layer: string): string => {\n // prettier-ignore\n return getVirtualModule(file, \"transport\")\n .replace(\"virtual:transport-name\", name)\n .replaceAll(\":entry\", layer);\n};\n\nexport const virtualBackgroundModule = (file: EntrypointFile): string => {\n return getVirtualModule(file, \"background\");\n};\n\nexport const virtualCommandModule = (file: EntrypointFile, name: string): string => {\n return getVirtualModule(file, \"command\").replace(\"virtual:command-name\", name);\n};\n\nexport const virtualContentScriptModule = (file: EntrypointFile): string => {\n // prettier-ignore\n return getVirtualModule(file, \"content\")\n .replace(`virtual:content-framework`, getEntryFramework(file, \"content\"));\n};\n\nexport const virtualOffscreenModule = (file: EntrypointFile, name: string): string => {\n return getVirtualModule(file, \"offscreen\")\n .replace(\"virtual:offscreen-name\", name)\n .replace(`virtual:view-framework`, getEntryFramework(file, \"view\"));\n};\n\nexport const virtualOffscreenBackgroundModule = (): string => {\n return offscreenBackground;\n};\n\nexport const virtualRelayModule = (file: EntrypointFile, name: string): string => {\n return getVirtualModule(file, \"relay\")\n .replace(\"virtual:relay-name\", name)\n .replace(`virtual:content-framework`, getEntryFramework(file, \"content\"));\n};\n\nexport const virtualServiceModule = (file: EntrypointFile, name: string): string => {\n return getTransportModule(file, name, \"service\");\n};\n\nexport const virtualViewModule = (file: EntrypointFile): string => {\n // prettier-ignore\n return getVirtualModule(file, \"view\")\n .replace(`virtual:view-framework`, getEntryFramework(file, \"view\"));\n};\n","import {EntrypointBuilder, EntrypointOptions} from \"@typing/entrypoint\";\nimport {Awaiter} from \"@typing/helpers\";\n\ntype ManifestPermissions = chrome.runtime.ManifestPermissions;\n\nexport const BackgroundEntryName = \"background\";\n\nexport interface BackgroundConfig {\n persistent?: boolean;\n permissions?: ManifestPermissions[];\n}\n\nexport type BackgroundOptions = BackgroundConfig & EntrypointOptions;\n\nexport type BackgroundEntrypointOptions = BackgroundOptions;\n\nexport type BackgroundMainHandler = (options: BackgroundOptions) => Awaiter<void>;\n\nexport interface BackgroundDefinition extends BackgroundEntrypointOptions {\n main?: BackgroundMainHandler;\n}\n\nexport type BackgroundBuilder = EntrypointBuilder;\n","import {AbstractPluginFinder} from \"@cli/entrypoint\";\n\nimport {EntrypointEntries} from \"@typing/entrypoint\";\nimport {BackgroundEntrypointOptions, BackgroundEntryName} from \"@typing/background\";\nimport {ManifestPermissions} from \"@typing/manifest\";\n\nexport default class BackgroundEntry<O extends BackgroundEntrypointOptions> {\n public static readonly name: string = BackgroundEntryName;\n\n constructor(public readonly finder: AbstractPluginFinder<O>) {}\n\n public async entries(): Promise<EntrypointEntries> {\n const options = await this.finder.plugin().options();\n\n return new Map([[BackgroundEntry.name, new Set(options.keys())]]);\n }\n\n public async isPersistent(): Promise<boolean> {\n const options = await this.finder.plugin().options();\n\n return Array.from(options.values()).some(({persistent}) => persistent);\n }\n\n public async getPermissions(): Promise<ManifestPermissions> {\n const options = await this.finder.plugin().options();\n\n const permissions: ManifestPermissions = new Set();\n\n for await (const entry of options.values()) {\n if (entry.permissions && entry.permissions.length > 0) {\n entry.permissions.forEach(permission => permissions.add(permission));\n }\n }\n\n return permissions;\n }\n}\n","import BackgroundEntry from \"./BackgroundEntry\";\n\nimport {BackgroundFinder} from \"@cli/entrypoint\";\n\nimport {BackgroundEntrypointOptions} from \"@typing/background\";\n\nexport default class extends BackgroundFinder {\n public entry(): BackgroundEntry<BackgroundEntrypointOptions> {\n return new BackgroundEntry(this);\n }\n}\n","import BackgroundEntry from \"./BackgroundEntry\";\n\nimport {BackgroundEntrypointOptions} from \"@typing/background\";\nimport {ManifestPermissions} from \"@typing/manifest\";\n\nexport default class {\n protected entries = new Set<BackgroundEntry<BackgroundEntrypointOptions>>();\n\n public add(entry: BackgroundEntry<BackgroundEntrypointOptions>): this {\n this.entries.add(entry);\n\n return this;\n }\n\n public async hasBackground(): Promise<boolean> {\n for await (const entry of this.entries) {\n if (await entry.finder.exists()) {\n return true;\n }\n }\n\n return false;\n }\n\n public async isPersistent(): Promise<boolean> {\n for await (const entry of this.entries) {\n if (await entry.isPersistent()) {\n return true;\n }\n }\n\n return false;\n }\n\n public async getPermissions(): Promise<ManifestPermissions> {\n const permissions: ManifestPermissions = new Set();\n\n for await (const entry of this.entries) {\n const entryPermissions = await entry.getPermissions();\n\n entryPermissions.forEach(permission => permissions.add(permission));\n }\n\n return permissions;\n }\n}\n","import BackgroundEntry from \"./BackgroundEntry\";\n\nimport {CommandFinder} from \"@cli/entrypoint\";\nimport {virtualCommandModule} from \"@cli/virtual\";\n\nimport {CommandConfig, CommandEntrypointOptions} from \"@typing/command\";\nimport {ManifestCommand, ManifestCommands} from \"@typing/manifest\";\nimport {EntrypointFile} from \"@typing/entrypoint\";\n\nexport default class Command extends CommandFinder {\n public entry(): BackgroundEntry<CommandEntrypointOptions> {\n return new BackgroundEntry(this);\n }\n\n public get(file: EntrypointFile): CommandConfig | undefined {\n return this._commands?.get(file);\n }\n\n /**\n * Before creating the virtual module, it is necessary to run a command `await this.commands()`\n * that caches the commands.\n * This command is executed during the type declaration generation stage for the commands.\n */\n public virtual(file: EntrypointFile): string {\n const options = this._commands?.get(file);\n\n if (!options) {\n throw new Error(`Command options not found for \"${file}\"`);\n }\n\n return virtualCommandModule(file, options.name);\n }\n\n public async manifest(): Promise<ManifestCommands | undefined> {\n if (await this.empty()) {\n return undefined;\n }\n\n const options = await this.commands();\n\n return new Set<ManifestCommand>(options.values());\n }\n}\n","import BackgroundEntry from \"./BackgroundEntry\";\n\nimport {ServiceFinder} from \"@cli/entrypoint\";\nimport {virtualServiceModule} from \"@cli/virtual\";\n\nimport {BackgroundEntrypointOptions} from \"@typing/background\";\nimport {EntrypointFile} from \"@typing/entrypoint\";\n\nexport default class extends ServiceFinder {\n public entry(): BackgroundEntry<BackgroundEntrypointOptions> {\n return new BackgroundEntry(this);\n }\n\n /**\n * Before creating the virtual module, it is necessary to run a command `await service.transport()`\n * that caches the services.\n * This command is executed during the type declaration generation stage for the service.\n */\n public virtual(file: EntrypointFile): string {\n const options = this._transport?.get(file)?.options;\n\n if (!options) {\n throw new Error(`Service options not found for \"${file}\"`);\n }\n\n return virtualServiceModule(file, options.name);\n }\n}\n","import fs from \"fs\";\nimport path from \"path\";\n\nimport {getInputPath, getRootPath} from \"@cli/resolvers/path\";\n\nimport {PackageName, SystemDir} from \"@typing/app\";\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default abstract class FileBuilder {\n protected abstract filename(): string;\n\n protected abstract template(): string;\n\n public static make<T extends FileBuilder>(this: new (config: ReadonlyConfig) => T, config: ReadonlyConfig): T {\n return new this(config).build();\n }\n\n protected constructor(protected readonly config: ReadonlyConfig) {}\n\n protected content(): string {\n return this.template().replaceAll(\":package\", PackageName);\n }\n\n protected withBanner(): boolean {\n return true;\n }\n\n public build(): this {\n const systemDirPath = getRootPath(getInputPath(this.config, SystemDir));\n\n let content = this.content().replaceAll(\"// prettier-ignore\", \"\");\n\n if (this.withBanner()) {\n const banner = \"// This file is automatically generated. \\n\\n\";\n\n content = `${banner}${content}`;\n }\n\n fs.mkdirSync(systemDirPath, {recursive: true});\n\n fs.writeFileSync(path.join(systemDirPath, this.filename()), content);\n\n return this;\n }\n}\n","import path from \"path\";\nimport _ from \"lodash\";\nimport {TsConfigJson} from \"type-fest\";\n\nimport FileBuilder from \"./FileBuilder\";\n\nimport {getRootPath} from \"@cli/resolvers/path\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends FileBuilder {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n protected filename(): string {\n return \"tsconfig.json\";\n }\n\n protected withBanner(): boolean {\n return false;\n }\n\n protected template(): string {\n return \"\"; // Not need is this place\n }\n\n protected content(): string {\n return JSON.stringify(this.json(), null, 2);\n }\n\n protected alias(): Record<string, string> {\n const srcDir = this.config.srcDir;\n const sharedDir = path.posix.join(srcDir, this.config.sharedDir);\n\n return {\n [srcDir]: srcDir,\n \"@\": srcDir,\n \"@shared\": sharedDir,\n \"~\": sharedDir,\n };\n }\n\n public aliases(): Record<string, string> {\n return _.mapValues(this.alias(), value => getRootPath(value));\n }\n\n public json(): TsConfigJson {\n const outputDir = path.posix.join(\"..\", this.config.outputDir);\n\n return {\n compilerOptions: {\n target: \"ESNext\",\n module: \"ESNext\",\n moduleResolution: \"Bundler\",\n esModuleInterop: true,\n forceConsistentCasingInFileNames: true,\n resolveJsonModule: true,\n strict: true,\n skipLibCheck: true,\n noEmit: true,\n outDir: outputDir,\n paths: _.reduce(\n this.alias(),\n (paths, value, key) => ({\n ...paths,\n [path.posix.join(key, \"*\")]: [path.posix.join(\"..\", value, \"*\")],\n }),\n {} as Record<string, string[]>\n ),\n },\n include: [\n \"../**/*\",\n \"./vendor.d.ts\",\n \"./locale.d.ts\",\n \"./service.d.ts\",\n \"./relay.d.ts\",\n \"./offscreen.d.ts\",\n \"./icon.d.ts\",\n \"./page.d.ts\",\n \"./popup.d.ts\",\n \"./sidebar.d.ts\",\n ],\n exclude: [outputDir],\n };\n }\n}\n","import \":package\";\nimport type {LayerProxyTarget, LayerTarget} from \":package/:layer\";\n\ndeclare module \":package\" {\n // prettier-ignore\n export interface LayerRegistry { [name: string]: any }\n\n export function getLayer<N extends keyof LayerRegistry>(name: N): LayerProxyTarget<LayerRegistry, N>;\n}\n\ndeclare module \":package/:layer\" {\n import type {LayerRegistry} from \":package\";\n\n export function getLayer<N extends keyof LayerRegistry>(name: N): LayerTarget<LayerRegistry, N>;\n}\n","import _ from \"lodash\";\n\nimport FileBuilder from \"../../FileBuilder\";\n\nimport template from \"./transport.d.ts?raw\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport enum TransportDeclarationLayer {\n Service = \"service\",\n Offscreen = \"offscreen\",\n Relay = \"relay\",\n}\n\nexport default class<T extends Record<string, string> = Record<string, string>> extends FileBuilder {\n protected _dictionary?: T;\n\n constructor(\n config: ReadonlyConfig,\n protected readonly layer: TransportDeclarationLayer\n ) {\n super(config);\n }\n\n protected filename(): string {\n return this.layer + \".d.ts\";\n }\n\n protected template(): string {\n const dictionary = this._dictionary;\n\n if (!dictionary) {\n throw new Error(`Transport ${this.layer} dictionary is not set`);\n }\n\n const type = Object.entries(dictionary)\n .map(([key, value]) => {\n return `'${key}': ${value};`;\n })\n .join(\"\\n\\t\\t\");\n\n return template\n .replaceAll(\":layer\", this.layer)\n .replaceAll(\"Layer\", _.upperFirst(this.layer))\n .replace(`{ [name: string]: any }`, `{\\n\\t\\t${type}\\n\\t}`);\n }\n\n public dictionary(dictionary: T): this {\n this._dictionary = dictionary;\n\n return this;\n }\n}\n","import FileBuilder from \"../FileBuilder\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends FileBuilder {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n protected filename(): string {\n return \"vendor.d.ts\";\n }\n\n protected template(): string {\n const types = [`:package/client-types`].map(value => `/// <reference types=\"${value}\" />`);\n\n return types.join(\"\\n\");\n }\n}\n","import {Configuration as RspackConfig} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport TypescriptConfig from \"./TypescriptConfig\";\n\nimport {TransportDeclaration, TransportDeclarationLayer, VendorDeclaration} from \"./declaration\";\n\nexport {default as FileBuilder} from \"./FileBuilder\";\nexport {TypescriptConfig, VendorDeclaration, TransportDeclaration, TransportDeclarationLayer};\n\nexport default definePlugin(() => {\n let typescript: TypescriptConfig;\n\n return {\n name: \"adnbn:typescript\",\n startup: ({config}) => {\n typescript = TypescriptConfig.make(config);\n\n VendorDeclaration.make(config);\n },\n bundler: () => {\n return {\n resolve: {\n extensions: [\".ts\", \".tsx\", \".js\"],\n alias: typescript.aliases(),\n },\n module: {\n rules: [\n {\n test: /\\.tsx?$/,\n loader: \"builtin:swc-loader\",\n options: {\n jsc: {\n parser: {\n syntax: \"typescript\",\n tsx: true,\n },\n target: \"es2020\",\n },\n },\n type: \"javascript/auto\",\n },\n ],\n },\n } satisfies RspackConfig;\n },\n };\n});\n","import {TransportDeclaration, TransportDeclarationLayer} from \"../typescript\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends TransportDeclaration {\n constructor(config: ReadonlyConfig) {\n super(config, TransportDeclarationLayer.Service);\n }\n}\n","import {Configuration as RspackConfig} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\nimport {virtualBackgroundModule} from \"@cli/virtual\";\n\nimport {EntrypointPlugin} from \"@cli/bundler\";\n\nimport Background from \"./Background\";\nimport BackgroundEntry from \"./BackgroundEntry\";\nimport BackgroundManifest from \"./BackgroundManifest\";\nimport Command from \"./Command\";\nimport Service from \"./Service\";\nimport ServiceDeclaration from \"./ServiceDeclaration\";\n\nimport {Command as AppCommand} from \"@typing/app\";\n\nexport default definePlugin(() => {\n let background: Background;\n let command: Command;\n let service: Service;\n let serviceDeclaration: ServiceDeclaration;\n\n return {\n name: \"adnbn:background\",\n startup: async ({config}) => {\n background = new Background(config);\n command = new Command(config);\n service = new Service(config);\n serviceDeclaration = new ServiceDeclaration(config);\n },\n background: () => background.files(),\n command: () => command.files(),\n service: () => service.files(),\n bundler: async ({config, rspack}) => {\n serviceDeclaration.dictionary(await service.dictionary()).build();\n\n if ((await background.empty()) && (await command.empty()) && (await service.empty())) {\n if (config.debug) {\n console.warn(\"Background, command or service entries not found\");\n }\n\n return {};\n }\n\n const backgroundPlugin = EntrypointPlugin.from(await background.entry().entries()).virtual(file =>\n virtualBackgroundModule(file)\n );\n\n const commandPlugin = EntrypointPlugin.from(await command.entry().entries()).virtual(file =>\n command.virtual(file)\n );\n\n const servicePlugin = EntrypointPlugin.from(await service.entry().entries()).virtual(file =>\n service.virtual(file)\n );\n\n if (config.command === AppCommand.Watch) {\n backgroundPlugin.watch(() => background.clear().entry().entries());\n\n commandPlugin.watch(async () => {\n // Clear the command cache\n await command.clear().commands();\n\n return command.entry().entries();\n });\n\n servicePlugin.watch(async () => {\n serviceDeclaration.dictionary(await service.clear().dictionary()).build();\n\n return service.entry().entries();\n });\n }\n\n return {\n plugins: [servicePlugin, commandPlugin, backgroundPlugin],\n optimization: {\n splitChunks: {\n chunks(chunk) {\n return chunk.name !== BackgroundEntry.name;\n },\n },\n },\n } satisfies RspackConfig;\n },\n manifest: async ({manifest}) => {\n const mft = new BackgroundManifest().add(background.entry()).add(command.entry()).add(service.entry());\n\n manifest\n .setBackground(\n (await mft.hasBackground())\n ? {\n entry: BackgroundEntry.name,\n persistent: await mft.isPersistent(),\n }\n : undefined\n )\n .setCommands(await command.manifest());\n\n const permissions = await mft.getPermissions();\n\n if (permissions.size > 0) {\n manifest.appendPermissions(permissions);\n }\n },\n };\n});\n","import _ from \"lodash\";\n\nimport {ContentScriptConfig, ContentScriptEntrypointOptions} from \"@typing/content\";\n\nexport const getContentScriptConfigFromOptions = (options: ContentScriptEntrypointOptions): ContentScriptConfig => {\n return _.pick(options, [\n \"matches\",\n \"excludeMatches\",\n \"includeGlobs\",\n \"excludeGlobs\",\n \"allFrames\",\n \"runAt\",\n \"world\",\n \"matchAboutBlank\",\n \"matchOriginAsFallback\",\n ]);\n};\n","import stringify from \"json-stringify-deterministic\";\n\nimport {getContentScriptConfigFromOptions} from \"./utils\";\nimport {ContentNameGenerator} from \"./types\";\n\nimport {NameGenerator} from \"@cli/entrypoint\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {EntrypointType} from \"@typing/entrypoint\";\nimport {ContentScriptEntrypointOptions} from \"@typing/content\";\n\nexport default class ContentName extends NameGenerator implements ContentNameGenerator<ContentScriptEntrypointOptions> {\n protected readonly _names = new Map<string, string>();\n\n constructor(protected readonly config: ReadonlyConfig) {\n super(EntrypointType.ContentScript);\n\n this.reserve(this.getChunkName());\n }\n\n public getChunkName(): string {\n return \"common.\" + this.entrypoint;\n }\n\n public create(name: string, options: ContentScriptEntrypointOptions): string {\n const entry = this.name(name);\n\n if (!this.config.concatContentScripts) {\n return entry;\n }\n\n const key = stringify(getContentScriptConfigFromOptions(options));\n\n const existingEntry = this._names.get(key);\n\n if (existingEntry) {\n return existingEntry;\n }\n\n this._names.set(key, entry);\n\n return entry;\n }\n}\n","import ContentName from \"./ContentName\";\n\nimport {ContentGroupItems, ContentProvider} from \"./types\";\nimport {getContentScriptConfigFromOptions} from \"./utils\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {ContentScriptEntrypointOptions} from \"@typing/content\";\nimport {EntrypointEntries, EntrypointFile, EntrypointType} from \"@typing/entrypoint\";\nimport {ManifestContentScripts, ManifestHostPermissions} from \"@typing/manifest\";\n\nexport default class {\n protected readonly providers = new Set<ContentProvider<ContentScriptEntrypointOptions>>();\n\n protected readonly names: ContentName;\n\n protected _group?: ContentGroupItems<ContentScriptEntrypointOptions>;\n\n constructor(config: ReadonlyConfig) {\n this.names = new ContentName(config);\n }\n\n public provider(provider: ContentProvider<ContentScriptEntrypointOptions>): this {\n this.providers.add(provider);\n\n return this;\n }\n\n protected async getGroup(): Promise<ContentGroupItems<ContentScriptEntrypointOptions>> {\n const content = await Promise.all(Array.from(this.providers, provider => provider.driver().items()));\n\n const group: ContentGroupItems<ContentScriptEntrypointOptions> = new Map();\n\n for (const items of content) {\n for (const [name, item] of items) {\n const entry = this.names.create(name, item.options);\n\n group.set(entry, new Set([...(group.get(entry) || []), item]));\n }\n }\n\n return group;\n }\n\n public async group(): Promise<ContentGroupItems<ContentScriptEntrypointOptions>> {\n return (this._group ??= await this.getGroup());\n }\n\n public async entries(): Promise<EntrypointEntries> {\n const entries: EntrypointEntries = new Map();\n\n for (const [entry, items] of await this.group()) {\n entries.set(entry, new Set(Array.from(items, ({file}) => file)));\n }\n\n return entries;\n }\n\n public async manifest(): Promise<ManifestContentScripts> {\n const manifest: ManifestContentScripts = new Set();\n\n for (const [entry, items] of await this.group()) {\n const options = Array.from(items, ({options}) => options).reduce((acc, opt) => {\n return {...acc, ...opt};\n }, {} as ContentScriptEntrypointOptions);\n\n manifest.add({entry, ...getContentScriptConfigFromOptions(options)});\n }\n\n return manifest;\n }\n\n public async hostPermissions(): Promise<ManifestHostPermissions> {\n const hostPermissions = new Set<string>();\n\n const group = await this.group();\n\n for (const items of group.values()) {\n for (const {options} of items) {\n const {matches, declarative} = options;\n\n if (!declarative || !matches) {\n continue;\n }\n\n for (const match of matches) {\n hostPermissions.add(match);\n }\n }\n }\n\n return hostPermissions;\n }\n\n public virtual(file: EntrypointFile): string {\n for (const provider of this.providers) {\n try {\n return provider.virtual(file);\n } catch {}\n }\n\n throw new Error(`Virtual file \"${file.file}\" not found.`);\n }\n\n public async empty(): Promise<boolean> {\n return (await this.group()).size === 0;\n }\n\n public chunkName(): string {\n return this.names.getChunkName();\n }\n\n public likely(name?: string): boolean {\n if (!name) {\n return false;\n }\n\n return [EntrypointType.Relay, EntrypointType.ContentScript].some(\n type => name === type || name.endsWith(`.${type}`)\n );\n }\n\n public clear(): this {\n for (const provider of this.providers) {\n provider.clear();\n }\n\n this.names.reset();\n\n this._group = undefined;\n\n return this;\n }\n}\n","import {ContentDriver, ContentItems} from \"./types\";\n\nimport {AbstractPluginFinder, InlineNameGenerator} from \"@cli/entrypoint\";\n\nimport {ContentScriptEntrypointOptions} from \"@typing/content\";\nimport {EntrypointNameGenerator} from \"@typing/entrypoint\";\n\nexport default class<O extends ContentScriptEntrypointOptions> implements ContentDriver<O> {\n protected _items?: ContentItems<O>;\n\n protected readonly itemNames: EntrypointNameGenerator;\n\n constructor(protected readonly finder: AbstractPluginFinder<O>) {\n this.itemNames = new InlineNameGenerator(this.finder.type());\n }\n\n protected async getItems(): Promise<ContentItems<O>> {\n const items: ContentItems<O> = new Map();\n\n const files = await this.finder.plugin().options();\n\n for (const [file, options] of files) {\n items.set(this.itemNames.file(file), {file, options});\n }\n\n return items;\n }\n\n public async items(): Promise<ContentItems<O>> {\n return (this._items ??= await this.getItems());\n }\n\n public clear(): this {\n this._items = undefined;\n\n this.itemNames.reset();\n\n return this;\n }\n}\n","import ContentDriver from \"./ContentDriver\";\n\nimport {ContentProvider} from \"./types\";\n\nimport {ContentFinder} from \"@cli/entrypoint\";\nimport {virtualContentScriptModule} from \"@cli/virtual\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {ContentScriptEntrypointOptions} from \"@typing/content\";\nimport {EntrypointFile} from \"@typing/entrypoint\";\n\nexport default class extends ContentFinder implements ContentProvider<ContentScriptEntrypointOptions> {\n protected _driver?: ContentDriver<ContentScriptEntrypointOptions>;\n\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public driver(): ContentDriver<ContentScriptEntrypointOptions> {\n return (this._driver ??= new ContentDriver(this));\n }\n\n public virtual(file: EntrypointFile): string {\n if (!this.holds(file)) {\n throw new Error(`File ${file} not found for content script`);\n }\n\n return virtualContentScriptModule(file);\n }\n\n public clear(): this {\n this._driver?.clear();\n\n return super.clear();\n }\n}\n","import ContentDriver from \"./ContentDriver\";\n\nimport {ContentProvider} from \"./types\";\n\nimport {RelayFinder} from \"@cli/entrypoint\";\nimport {virtualRelayModule} from \"@cli/virtual\";\n\nimport {RelayEntrypointOptions} from \"@typing/relay\";\nimport {EntrypointFile} from \"@typing/entrypoint\";\n\nexport default class extends RelayFinder implements ContentProvider<RelayEntrypointOptions> {\n protected _driver?: ContentDriver<RelayEntrypointOptions>;\n\n public driver(): ContentDriver<RelayEntrypointOptions> {\n return (this._driver ??= new ContentDriver(this));\n }\n\n /**\n * Before creating the virtual module, it is necessary to run a command `await this.transport()` that caches the Relays.\n * This command is executed during the type declaration generation stage for the Relays.\n */\n public virtual(file: EntrypointFile): string {\n const options = this._transport?.get(file)?.options;\n\n if (!options) {\n throw new Error(`Relay options not found for \"${file}\"`);\n }\n\n return virtualRelayModule(file, options.name);\n }\n\n public clear(): this {\n this._driver?.clear();\n\n return super.clear();\n }\n}\n","import {TransportDeclaration, TransportDeclarationLayer} from \"../typescript\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends TransportDeclaration {\n constructor(config: ReadonlyConfig) {\n super(config, TransportDeclarationLayer.Relay);\n }\n\n protected template(): string {\n return super\n .template()\n .replace(\"RelayProxyTarget, RelayTarget\", \"RelayProxyTarget, RelayTarget, ProxyRelayOptions\")\n .replace(\"(name: N): RelayProxyTarget\", \"(name: N, options: ProxyRelayOptions): RelayProxyTarget\");\n }\n}\n","import {Configuration as RspackConfig} from \"@rspack/core\";\n\nimport ContentManager from \"./ContentManager\";\nimport Content from \"./Content\";\nimport Relay from \"./Relay\";\nimport RelayDeclaration from \"./RelayDeclaration\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {EntrypointPlugin, isEntryModuleOrIssuer} from \"@cli/bundler\";\n\nimport {Command} from \"@typing/app\";\n\nexport default definePlugin(() => {\n let content: Content;\n let relay: Relay;\n let manager: ContentManager;\n let relayDeclaration: RelayDeclaration;\n\n return {\n name: \"adnbn:content\",\n startup: async ({config}) => {\n content = new Content(config);\n relay = new Relay(config);\n\n manager = new ContentManager(config).provider(content).provider(relay);\n\n relayDeclaration = new RelayDeclaration(config);\n },\n content: () => content.files(),\n relay: () => relay.files(),\n bundler: async ({config}) => {\n relayDeclaration.dictionary(await relay.dictionary()).build();\n\n if (await manager.empty()) {\n if (config.debug) {\n console.warn(\"Content script or relay entries not found\");\n }\n\n return {};\n }\n\n const plugin = EntrypointPlugin.from(await manager.entries()).virtual(file => manager.virtual(file));\n\n if (config.command === Command.Watch) {\n plugin.watch(async () => {\n manager.clear();\n\n relayDeclaration.dictionary(await relay.dictionary()).build();\n\n return manager.entries();\n });\n }\n\n return {\n plugins: [plugin],\n optimization: {\n splitChunks: {\n cacheGroups: {\n frameworkContent: {\n minChunks: 2,\n name: manager.chunkName(),\n test: isEntryModuleOrIssuer([\"content\", \"relay\"]),\n chunks: (chunk): boolean => {\n return manager.likely(chunk.name);\n },\n enforce: false,\n reuseExistingChunk: true,\n priority: 10,\n },\n },\n },\n },\n } satisfies RspackConfig;\n },\n manifest: async ({manifest}) => {\n // prettier-ignore\n manifest\n .setContentScripts(await manager.manifest())\n .appendHostPermissions(await manager.hostPermissions());\n\n if (await relay.exists()) {\n // prettier-ignore\n manifest\n .addPermission(\"scripting\")\n .addPermission(\"tabs\");\n }\n },\n };\n});\n","import {createHash} from \"crypto\";\n\nexport const generateCryptoKey = (password: string): string => {\n return createHash(\"sha256\").update(password).digest(\"base64\");\n};\n\nexport const encryptData = <T = any>(data: T, key: string): string => {\n const jsonString = JSON.stringify(data);\n const dataBytes = Array.from(jsonString, c => c.charCodeAt(0));\n const keyBytes = Array.from(key, c => c.charCodeAt(0));\n\n const encryptedBytes = dataBytes.map((byte, i) => byte ^ keyBytes[i % keyBytes.length]);\n const encryptedString = String.fromCharCode(...encryptedBytes);\n\n return btoa(encryptedString);\n};\n\nexport const decryptData = <T = any>(encrypted: string, key?: string): T => {\n const encryptedString = atob(encrypted);\n const encryptedBytes = Array.from(encryptedString, c => c.charCodeAt(0));\n let keyBytes: any[];\n try {\n //@ts-expect-error: __ADNBN_ENV_CRYPTO_KEY__ is a virtual variable generated by the bundler `src/cli/plugins/dotenv/index.ts`\n keyBytes = Array.from(key || __ADNBN_ENV_CRYPTO_KEY__, c => c.charCodeAt(0));\n } catch (err) {\n throw new Error('You need to specify the \"key\" argument for the decryptData function.');\n }\n\n const decryptedBytes = encryptedBytes.map((byte, i) => byte ^ keyBytes[i % keyBytes.length]);\n const decryptedString = String.fromCharCode(...decryptedBytes);\n\n return JSON.parse(decryptedString);\n};\n","import _ from \"lodash\";\n\nimport {DefinePlugin} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {encryptData, generateCryptoKey} from \"./utils\";\n\nimport {type DotenvParseOutput} from \"dotenv\";\n\nconst ReservedEnvKeys = new Set<string>([\"APP\", \"BROWSER\", \"MODE\", \"MANIFEST_VERSION\"]);\n\nexport default definePlugin((vars: DotenvParseOutput = {}) => {\n return {\n name: \"adnbn:dotenv\",\n bundler: ({config}) => {\n const {filter, crypt} = config.env;\n\n const filteredVars = !filter\n ? vars\n : Object.fromEntries(\n Object.entries(vars).filter(([key]) => {\n if (\n ReservedEnvKeys.has(key) ||\n (_.isFunction(filter) && filter(key)) ||\n (_.isString(filter) && filter.trim() && key.startsWith(filter.trim()))\n ) {\n return true;\n }\n })\n );\n\n const key = generateCryptoKey([config.app, ...Object.keys(filteredVars)].join(\"-\"));\n\n const data = crypt ? encryptData(filteredVars, key) : filteredVars;\n\n return {\n plugins: [\n new DefinePlugin({\n __ADNBN_ENV_CRYPTO_KEY__: JSON.stringify(key),\n \"process.env\": JSON.stringify(data),\n }),\n ],\n };\n },\n };\n});\n","import _ from \"lodash\";\n\nimport {Configuration as RspackConfig, HtmlRspackPlugin} from \"@rspack/core\";\nimport HtmlRspackTagsPlugin from \"html-rspack-tags-plugin\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nexport default definePlugin(() => {\n return {\n name: \"adnbn:html\",\n bundler: ({config, rspack}) => {\n const hasHtml = rspack.plugins?.some(plugin => plugin instanceof HtmlRspackPlugin) ?? false;\n\n if (!hasHtml) {\n return {};\n }\n\n let options = _.isFunction(config.html) ? config.html() : config.html;\n\n if (_.isEmpty(options)) {\n return {};\n }\n\n if (!_.isArray(options)) {\n options = [options];\n }\n\n const plugins = options.map(options => new HtmlRspackTagsPlugin(options));\n\n return {plugins} satisfies RspackConfig;\n },\n };\n});\n","import _ from \"lodash\";\nimport {Configuration as RspackConfig, NormalModule} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {getRootPath, getSourcePath} from \"@cli/resolvers/path\";\n\nexport default definePlugin(() => {\n return {\n name: \"adnbn:optimization\",\n bundler: ({config}) => {\n if (!config.commonChunks) {\n return {};\n }\n\n return {\n optimization: {\n usedExports: true,\n providedExports: true,\n splitChunks: {\n minSize: 10,\n cacheGroups: {\n default: false,\n defaultVendors: false,\n common: {\n test: module => {\n const {resource} = module as NormalModule;\n\n if (!resource) {\n return false;\n }\n\n return resource.startsWith(getRootPath(getSourcePath(config)));\n },\n name: (module, chunks, cacheGroupKey) => {\n const entryNames = Array.from(\n new Set(chunks.map(({name}) => name).filter(name => _.isString(name)))\n ).sort();\n\n return `${entryNames.join(\"-\")}.${cacheGroupKey}`;\n },\n minChunks: 2,\n priority: -10,\n reuseExistingChunk: true,\n },\n },\n },\n },\n } satisfies RspackConfig;\n },\n };\n});\n","import _ from \"lodash\";\nimport {Configuration as RspackConfig} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {appFilenameResolver} from \"@cli/bundler\";\nimport {getOutputPath, getRootPath} from \"@cli/resolvers/path\";\n\nexport default definePlugin(() => {\n return {\n name: \"adnbn:output\",\n bundler: ({config}) => {\n const {app, jsDir, jsFilename} = config;\n\n const kebabApp = _.kebabCase(app);\n const camelApp = _.camelCase(app);\n\n const filename = appFilenameResolver(app, jsFilename, jsDir);\n\n return {\n output: {\n path: getRootPath(getOutputPath(config)),\n filename,\n chunkFilename: filename,\n hotUpdateGlobal: camelApp + \"HotUpdate\",\n chunkLoadingGlobal: camelApp + \"ChunkLoading\",\n uniqueName: kebabApp,\n },\n } satisfies RspackConfig;\n },\n };\n});\n","import path from \"path\";\nimport type {RawCopyPattern} from \"@rspack/binding\";\n\nimport {IconFinder, type IconItem} from \"@cli/entrypoint\";\nimport {ManifestIcon, ManifestIcons} from \"@typing/manifest\";\nimport {DefaultIconGroupName} from \"@typing/icon\";\n\nexport type CopyPatterns = Array<Pick<RawCopyPattern, \"from\" | \"to\">>;\n\nexport type IconDefinition = Record<string, Record<number, string>>;\n\nexport default class extends IconFinder {\n protected createPathname(item: IconItem): string {\n const dir = this.config.icon.outputDir || \"icons\";\n\n let {size, group} = item.name;\n\n group = group === DefaultIconGroupName ? \"\" : group + \"-\";\n\n return path.posix.join(dir, `${group}${size}.png`);\n }\n\n public async manifest(): Promise<ManifestIcons> {\n const icons = await this.icons();\n\n const manifest: ManifestIcons = new Map();\n\n for (const [group, items] of icons) {\n const collect: ManifestIcon = new Map();\n\n for (const [size, item] of items) {\n collect.set(size, \"/\" + this.createPathname(item));\n }\n\n manifest.set(group, collect);\n }\n\n return manifest;\n }\n\n public async copy(): Promise<CopyPatterns> {\n const icons = await this.icons();\n\n const patterns: CopyPatterns = [];\n\n for (const items of icons.values()) {\n for (const item of items.values()) {\n patterns.push({\n from: item.file.file,\n to: this.createPathname(item),\n });\n }\n }\n\n return patterns;\n }\n\n public async define(): Promise<IconDefinition> {\n const mapToJson = (map: Map<any, any>) => {\n return Object.fromEntries(\n Array.from(map.entries()).map(([key, value]) => [key, value instanceof Map ? mapToJson(value) : value])\n );\n };\n\n return mapToJson(await this.manifest());\n }\n\n public async names(): Promise<Set<string>> {\n const files = await this.icons();\n\n return new Set(files.keys());\n }\n}\n","import \":package\";\n\ndeclare module \":package\" {\n export type IconName = string;\n\n export function changeActionIcon(icon?: IconName, tab?: number | chrome.tabs.Tab): Promise<void>;\n}\n","import template from \"./icon.d.ts?raw\";\n\nimport {FileBuilder} from \"@cli/plugins/typescript\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends FileBuilder {\n protected names = new Set<string>();\n\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n protected filename(): string {\n return \"icon.d.ts\";\n }\n\n protected template(): string {\n let content = template;\n\n if (this.names.size > 0) {\n const type = '\"' + Array.from(this.names).join('\" | \"') + '\"';\n\n content = content.replace(\"type IconName = string\", `type IconName = ${type}`);\n }\n\n return content;\n }\n\n public setNames(names: Set<string>): this {\n this.names = names;\n\n return this;\n }\n}\n","import {Configuration as RspackConfig, CopyRspackPlugin, DefinePlugin} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {DefaultIconGroupName} from \"@typing/icon\";\n\nimport Icon, {IconDefinition, CopyPatterns} from \"./Icon\";\n\nimport {IconDeclaration} from \"./declaration\";\n\nexport {Icon, type IconDefinition, type CopyPatterns};\n\nexport default definePlugin(() => {\n let icon: Icon;\n\n return {\n name: \"adnbn:icon\",\n startup: ({config}) => {\n icon = new Icon(config);\n },\n icon: () => icon.files(),\n bundler: async ({config}) => {\n new IconDeclaration(config).setNames(await icon.names()).build();\n\n return {\n plugins: [\n new CopyRspackPlugin({\n patterns: await icon.copy(),\n }),\n new DefinePlugin({\n __ADNBN_ICONS__: JSON.stringify(await icon.define()),\n }),\n ],\n } satisfies RspackConfig;\n },\n manifest: async ({manifest, config}) => {\n manifest.setIcons(await icon.manifest()).setIcon(config.icon.name || DefaultIconGroupName);\n },\n };\n});\n","import {getLocaleFilename} from \"@locale/utils\";\n\nimport {LocaleFinder} from \"@cli/entrypoint\";\nimport {GenerateJsonPluginData} from \"@cli/bundler\";\n\nexport default class extends LocaleFinder {\n public async json(): Promise<GenerateJsonPluginData> {\n const data: GenerateJsonPluginData = {};\n\n const builders = await this.builders();\n\n for (const builder of builders.values()) {\n data[getLocaleFilename(builder.lang())] = builder.build();\n }\n\n return data;\n }\n}\n","import {\n Language,\n LocaleDir,\n type LocaleNonPluralKeys,\n type LocalePluralKeys,\n type LocaleProvider,\n type LocaleDynamicProvider,\n type LocaleSubstitutionsFor,\n} from \":package/locale\";\n\ndeclare module \":package/locale\" {\n // prettier-ignore\n export interface GeneratedNativeStructure {}\n\n export function _<K extends LocaleNonPluralKeys<GeneratedNativeStructure>>(\n key: K,\n substitutions?: LocaleSubstitutionsFor<GeneratedNativeStructure, K>\n ): string;\n\n export function _c<K extends LocalePluralKeys<GeneratedNativeStructure>>(\n key: K,\n count: number,\n substitutions?: LocaleSubstitutionsFor<GeneratedNativeStructure, K>\n ): string;\n\n export function __(key: keyof GeneratedNativeStructure & string): string;\n\n export declare class NativeLocale implements LocaleProvider<GeneratedNativeStructure> {\n lang(): Language;\n\n languages(): Set<Language>;\n\n keys(): ReadonlySet<keyof GeneratedNativeStructure>;\n\n // non-plural keys\n trans<K extends LocaleNonPluralKeys<GeneratedNativeStructure>>(\n key: K,\n substitutions?: LocaleSubstitutionsFor<GeneratedNativeStructure, K>\n ): string;\n\n // plural keys\n choice<K extends LocalePluralKeys<GeneratedNativeStructure>>(\n key: K,\n count: number,\n substitutions?: LocaleSubstitutionsFor<GeneratedNativeStructure, K>\n ): string;\n }\n\n export declare class DynamicLocale extends NativeLocale implements LocaleDynamicProvider<GeneratedNativeStructure> {\n change(lang: Language): Promise<Language>;\n }\n}\n\ndeclare module \":package/locale/react\" {\n import type {GeneratedNativeStructure} from \":package/locale\";\n\n export interface LocaleContract {\n lang: Language;\n\n dir: LocaleDir;\n\n isRtl: boolean;\n\n _<K extends LocaleNonPluralKeys<GeneratedNativeStructure>>(\n key: K,\n substitutions?: LocaleSubstitutionsFor<GeneratedNativeStructure, K>\n ): string;\n\n choice<K extends LocalePluralKeys<GeneratedNativeStructure>>(\n key: K,\n count: number,\n substitutions?: LocaleSubstitutionsFor<GeneratedNativeStructure, K>\n ): string;\n\n change(lang: Language): void;\n }\n\n export function useLocale(): LocaleContract;\n}\n","import template from \"./locale.d.ts?raw\";\n\nimport {FileBuilder} from \"@cli/plugins/typescript\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {LocaleStructure} from \"@typing/locale\";\n\nexport default class extends FileBuilder {\n protected _structure?: LocaleStructure;\n\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n protected filename(): string {\n return \"locale.d.ts\";\n }\n\n protected template(): string {\n const structure = this._structure;\n\n if (!structure) {\n throw new Error(\"Locale structure is not set\");\n }\n\n const type = JSON.stringify(structure, null, 4);\n\n const name = \"GeneratedNativeStructure\";\n\n return template.replace(`interface ${name} {}`, `interface ${name} ${type}`);\n }\n\n public structure(structure: LocaleStructure): this {\n this._structure = structure;\n\n return this;\n }\n}\n","import _ from \"lodash\";\nimport {Configuration as RspackConfig, DefinePlugin} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\nimport {GenerateJsonPlugin} from \"@cli/bundler\";\nimport {extractLocaleKey, modifyLocaleMessageKey} from \"@locale/utils\";\n\nimport Locale from \"./Locale\";\n\nimport {LocaleDeclaration} from \"./declaration\";\n\nimport {Command} from \"@typing/app\";\nimport {Browser} from \"@typing/browser\";\nimport {Language, LanguageCodes} from \"@typing/locale\";\n\nexport default definePlugin(() => {\n let locale: Locale;\n let declaration: LocaleDeclaration;\n\n return {\n name: \"adnbn:locale\",\n startup: ({config}) => {\n locale = new Locale(config);\n declaration = new LocaleDeclaration(config);\n },\n locale: () => locale.files(),\n bundler: async ({config}) => {\n declaration.structure(await locale.structure()).build();\n\n const plugin = new GenerateJsonPlugin(await locale.json());\n\n if (config.command === Command.Watch) {\n plugin.watch(async () => {\n locale.clear();\n\n declaration.structure(await locale.structure()).build();\n\n return await locale.json();\n });\n }\n\n return {\n plugins: [\n plugin,\n new DefinePlugin({\n __ADNBN_LOCALE_KEYS__: JSON.stringify([...(await locale.keys())]),\n __ADNBN_DEFINED_LOCALES__: JSON.stringify([...(await locale.languages())]),\n }),\n ],\n } satisfies RspackConfig;\n },\n manifest: async ({config, manifest}) => {\n const {locale: localeFromConfig, browser} = config;\n const {lang, name, shortName, description} = localeFromConfig;\n\n let language: Language = Language.English;\n\n if (lang) {\n if (LanguageCodes.has(lang)) {\n language = lang as Language;\n } else {\n throw new Error(`Invalid language \"${lang}\" provided by config`);\n }\n\n const availableLanguages = await locale.languages();\n\n if (!availableLanguages.has(language)) {\n throw new Error(\n `Language \"${language}\" not found in available translations. Available languages: ${[...availableLanguages].join(\", \")}`\n );\n }\n }\n\n const builders = await locale.builders();\n const keys = await locale.keys();\n\n manifest.setLocale(builders.size > 0 ? language : undefined);\n\n if (builders.size > 0) {\n if (shortName) {\n let manifestShortName: string | undefined = modifyLocaleMessageKey(shortName);\n\n const shortNameKey = extractLocaleKey(shortName);\n\n if (shortNameKey) {\n if (!keys.has(shortNameKey)) {\n throw new Error(`Locale short name key \"${shortNameKey}\" not found in translation`);\n }\n\n /** Opera/Edge do not support localization in manifest's short_name field */\n if (browser === Browser.Opera || browser === Browser.Edge) {\n const instance = builders.get(language);\n\n if (!instance) {\n throw new Error(`Locale not found for \"${language}\"`);\n }\n\n manifestShortName = instance.get().get(shortNameKey);\n }\n }\n\n manifest.setShortName(manifestShortName);\n }\n\n if (description) {\n const descriptionKey = extractLocaleKey(description);\n\n if (descriptionKey && !keys.has(descriptionKey)) {\n throw new Error(`Locale description key \"${descriptionKey}\" not found in translation`);\n }\n\n manifest.setDescription(modifyLocaleMessageKey(description));\n }\n\n if (name) {\n const nameKey = extractLocaleKey(name);\n\n if (nameKey && !keys.has(nameKey)) {\n throw new Error(`Locale name key \"${nameKey}\" not found in translation`);\n }\n\n const manifestName = modifyLocaleMessageKey(name);\n\n if (manifestName) {\n manifest.setName(manifestName);\n\n return;\n }\n }\n }\n\n manifest.setName(_.startCase(config.app));\n },\n };\n});\n","import {Browser} from \"@typing/browser\";\nimport {ManifestVersion} from \"@typing/manifest\";\nimport {decryptData} from \"@cli/plugins/dotenv/utils\";\n\nexport const getEnv: {\n <T extends string>(key: string): T | undefined;\n <T extends string, D>(key: string, defaults: D): T | D;\n} = (() => {\n let envCache: object;\n\n return (key: string, defaults?: string) => {\n let env: object;\n\n if (typeof process.env === \"object\") {\n env = process.env;\n } else {\n envCache ??= decryptData(process.env);\n env = envCache;\n }\n\n return (env[key] ?? defaults) as any;\n };\n})();\n\nexport const getApp = (): string => {\n const app = getEnv(\"APP\");\n\n if (app === undefined) {\n throw new Error(\"App is not defined\");\n }\n\n return app;\n};\n\nexport const getBrowser = (): Browser => {\n const browser = getEnv<Browser>(\"BROWSER\");\n\n if (browser === undefined) {\n throw new Error(\"Browser is not defined\");\n }\n\n return browser;\n};\n\nexport const isBrowser = (browser: Browser): browser is Browser => {\n return getBrowser() === browser;\n};\n\nexport const getManifestVersion = (): ManifestVersion => {\n const manifestVersion = getEnv(\"MANIFEST_VERSION\", \"3\");\n\n return parseInt(manifestVersion) as ManifestVersion;\n};\n","import _ from \"lodash\";\n\nimport {getEnv} from \"@main/env\";\n\nimport type {ReadonlyConfig} from \"@typing/config\";\n\nexport default abstract class AbstractMeta<V extends string = string> {\n public static value<T extends AbstractMeta<any>>(\n this: new (config: ReadonlyConfig) => T,\n config: ReadonlyConfig\n ): T extends AbstractMeta<infer V> ? V | undefined : never {\n return new this(config).getResolved() as T extends AbstractMeta<infer V> ? V | undefined : never;\n }\n\n public abstract getValue(): undefined | V | (() => V | undefined);\n\n protected constructor(protected readonly config: ReadonlyConfig) {}\n\n public getResolved(): V | undefined {\n const value = this.getValue();\n\n let resolved = _.isFunction(value) ? value() : value;\n\n if (this.isValid(resolved)) {\n return resolved;\n }\n\n if (_.isString(resolved)) {\n resolved = getEnv(resolved);\n\n if (this.isValid(resolved)) {\n return resolved;\n }\n }\n }\n\n protected isValid(value?: V): boolean {\n return true;\n }\n}\n","import _ from \"lodash\";\n\nimport AbstractMeta from \"./AbstractMeta\";\n\nimport {getEnv} from \"@main/env\";\n\nimport type {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends AbstractMeta {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public getValue(): ReadonlyConfig[\"author\"] {\n return this.config.author;\n }\n\n protected isValid(value?: string): value is string {\n return _.isString(value) && value.length > 0;\n }\n\n public getResolved(): string | undefined {\n const value = this.getValue();\n\n let resolved = _.isFunction(value) ? value() : value;\n\n if (!this.isValid(resolved)) {\n return;\n }\n\n resolved = getEnv(resolved, resolved);\n\n if (this.isValid(resolved)) {\n return resolved;\n }\n }\n}\n","import isEmail from \"validator/lib/isEmail\";\n\nimport AbstractMeta from \"./AbstractMeta\";\n\nimport type {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends AbstractMeta {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public getValue(): ReadonlyConfig[\"email\"] {\n return this.config.email;\n }\n\n protected isValid(value?: string): boolean {\n return value ? isEmail(value) : false;\n }\n}\n","import isURL from \"validator/lib/isURL\";\n\nimport AbstractMeta from \"./AbstractMeta\";\n\nimport type {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends AbstractMeta {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public getValue(): ReadonlyConfig[\"homepage\"] {\n return this.config.homepage;\n }\n\n protected isValid(value?: string): boolean {\n return value ? isURL(value) : false;\n }\n}\n","import {ContentScriptConfig} from \"@typing/content\";\nimport {BackgroundConfig} from \"@typing/background\";\nimport {CommandConfig} from \"@typing/command\";\nimport {Language} from \"@typing/locale\";\n\ntype ManifestCommon = chrome.runtime.Manifest;\ntype ManifestBase = chrome.runtime.ManifestBase;\ntype ManifestPermission = chrome.runtime.ManifestPermissions;\n\nexport const ManifestMatchSchemes: ReadonlySet<string> = new Set<string>([\"http\", \"https\", \"file\", \"ftp\", \"ws\", \"wss\"]);\n\nexport const ManifestSpecialSchemes: ReadonlySet<string> = new Set<string>([\n \"chrome-extension\",\n \"moz-extension\",\n \"data\",\n \"blob\",\n \"filesystem\",\n \"about\",\n \"chrome\",\n \"resource\",\n]);\n\ntype ManifestFixed<T extends ManifestBase> = Omit<T, \"manifest_version\"> & {\n manifest_version: ManifestVersion;\n};\n\ninterface ManifestUnstable {\n permissions?: (ManifestPermission | (string & Record<never, never>))[];\n web_accessible_resources?: string[] | chrome.runtime.ManifestV3[\"web_accessible_resources\"];\n}\n\nexport type ManifestVersion = 2 | 3;\n\nexport enum ManifestIncognito {\n Spanning = \"spanning\",\n Split = \"split\",\n NotAllowed = \"not_allowed\",\n}\n\nexport type ManifestIncognitoValue = ManifestIncognito | `${ManifestIncognito}`;\n\nexport type CoreManifest = ManifestFixed<ManifestBase>;\n\nexport type ChromeManifest = ManifestFixed<ManifestCommon>;\n\nexport type FirefoxManifest = ChromeManifest & {\n action?: chrome.runtime.ManifestV3[\"action\"] & {\n browser_style?: boolean;\n };\n browser_action?: chrome.runtime.ManifestV2[\"browser_action\"] & {\n browser_style?: boolean;\n };\n page_action?: chrome.runtime.ManifestV2[\"page_action\"] & {\n browser_style?: boolean;\n };\n browser_specific_settings?: {\n gecko?: {\n id?: string;\n strict_min_version?: string;\n strict_max_version?: string;\n update_url?: string;\n };\n gecko_android?: {\n strict_min_version?: string;\n strict_max_version?: string;\n };\n };\n} & ManifestUnstable;\n\nexport type SafariManifest = ChromeManifest & {\n browser_specific_settings?: {\n safari?: {\n strict_min_version?: string;\n strict_max_version?: string;\n };\n };\n} & ManifestUnstable;\n\nexport type Manifest = ChromeManifest | FirefoxManifest | SafariManifest;\n\nexport interface ManifestBuilder<T extends CoreManifest = Manifest> {\n setName(name: string): this;\n\n setShortName(shortName?: string): this;\n\n setDescription(description?: string): this;\n\n setEmail(email?: string): this;\n\n setAuthor(author?: string): this;\n\n setHomepage(homepage?: string): this;\n\n setVersion(version?: string): this;\n\n setIncognito(incognito?: ManifestIncognitoValue): this;\n\n setMinimumVersion(minimumVersion?: string): this;\n\n setLocale(lang?: Language): this;\n\n // Icons\n setIcons(icons?: ManifestIcons): this;\n\n setIcon(icon?: string): this; // name of an icon set for manifest.icons\n\n // Entry\n setBackground(background?: ManifestBackground): this;\n\n setCommands(commands?: ManifestCommands): this;\n\n setContentScripts(contentScripts?: ManifestContentScripts): this;\n\n setPopup(popup?: ManifestPopup): this;\n\n setSidebar(sidebar?: ManifestSidebar): this;\n\n // System\n setDependencies(dependencies: ManifestDependencies): this;\n\n // Permissions\n addPermission(permission: ManifestPermission): this;\n\n setPermissions(permissions: ManifestPermissions): this;\n\n appendPermissions(permissions: ManifestPermissions): this;\n\n addHostPermission(permission: string): this;\n\n setHostPermissions(permissions: ManifestHostPermissions): this;\n\n // Host Permissions\n appendHostPermissions(permissions: ManifestHostPermissions): this;\n\n // Web Accessible Resource\n setManifestAccessibleResource(accessibleResources: ManifestAccessibleResources): this;\n\n appendAccessibleResources(accessibleResources: ManifestAccessibleResources): this;\n\n addAccessibleResource(accessibleResource: ManifestAccessibleResource): this;\n\n // Getter\n get(): T;\n}\n\ntype Entry = string;\n\nexport interface ManifestEntry {\n entry: Entry;\n}\n\nexport type ManifestBackground = ManifestEntry & BackgroundConfig;\n\nexport type ManifestContentScript = ManifestEntry & ContentScriptConfig;\nexport type ManifestContentScripts = Set<ManifestContentScript>;\n\nexport type ManifestCommand = CommandConfig;\nexport type ManifestCommands = Set<ManifestCommand>;\n\nexport interface ManifestPopup {\n /**\n * Represents the group name of an icon that can be used in UI elements.\n * This property is optional and, if defined, should typically refer to a string\n * that matches the name of an icon resource available in the application or icon library.\n */\n icon?: string;\n /**\n * Represents an optional title or name or locale key that can be assigned to an entity.\n */\n title?: string;\n /**\n * Represents an optional HTML path.\n */\n path?: string;\n}\n\nexport interface ManifestSidebar {\n /**\n * Represents the group name of an icon that can be used in UI elements.\n * This property is optional and, if defined, should typically refer to a string\n * that matches the name of an icon resource available in the application or icon library.\n */\n icon?: string;\n /**\n * Represents an optional title or name or locale key that can be assigned to an entity.\n */\n title?: string;\n /**\n * Represents an optional HTML path.\n */\n path?: string;\n}\n\nexport interface ManifestAccessibleResource {\n resources: string[];\n matches: string[];\n}\n\nexport type ManifestAccessibleResources = Set<ManifestAccessibleResource>;\n\nexport interface ManifestDependency {\n js: Set<string>;\n css: Set<string>;\n assets: Set<string>;\n}\n\nexport type ManifestIcon = Map<number, string>;\n\nexport type ManifestIcons = Map<string, ManifestIcon>;\n\nexport type ManifestDependencies = Map<Entry, ManifestDependency>;\n\nexport type ManifestPermissions = Set<ManifestPermission>;\n\nexport type ManifestHostPermissions = Set<string>;\n","import AbstractMeta from \"./AbstractMeta\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {ManifestIncognito, ManifestIncognitoValue} from \"@typing/manifest\";\n\nexport default class extends AbstractMeta<ManifestIncognitoValue> {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public getValue(): ReadonlyConfig[\"incognito\"] {\n return this.config.incognito;\n }\n\n protected isValid(value?: ManifestIncognitoValue): boolean {\n return Object.values(ManifestIncognito).includes(value as ManifestIncognito);\n }\n}\n","import {definePlugin} from \"@main/plugin\";\n\nimport Author from \"./Author\";\nimport Email from \"./Email\";\nimport Homepage from \"./Homepage\";\nimport Incognito from \"./Incognito\";\n\nexport {Author, Email, Homepage, Incognito};\n\nexport default definePlugin(() => {\n return {\n name: \"adnbn:meta\",\n manifest: ({manifest, config}) => {\n manifest\n .setEmail(Email.value(config))\n .setAuthor(Author.value(config))\n .setHomepage(Homepage.value(config))\n .setIncognito(Incognito.value(config));\n },\n };\n});\n","import path from \"path\";\nimport _ from \"lodash\";\n\nimport type {HtmlRspackPluginOptions} from \"@rspack/core\";\nimport type {Options as HtmlRspackTagsPluginOptions} from \"html-rspack-tags-plugin\";\n\nimport {AbstractViewFinder} from \"@cli/entrypoint\";\n\nimport {EntrypointEntries} from \"@typing/entrypoint\";\nimport {ViewEntrypointOptions} from \"@typing/view\";\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default class<O extends ViewEntrypointOptions> {\n public constructor(\n protected readonly config: ReadonlyConfig,\n protected readonly finder: AbstractViewFinder<O>\n ) {}\n\n public async entries(): Promise<EntrypointEntries> {\n const entries: EntrypointEntries = new Map();\n\n for (const [name, page] of await this.finder.views()) {\n entries.set(name, new Set([page.file]));\n }\n\n return entries;\n }\n\n public async html(): Promise<HtmlRspackPluginOptions[]> {\n const html: HtmlRspackPluginOptions[] = [];\n\n for (const [name, {file, filename, options}] of await this.finder.views()) {\n const {template, title} = options;\n\n html.push({\n filename,\n title: title || _.startCase(this.config.app),\n template: template ? path.resolve(path.dirname(file.file), template) : undefined,\n chunks: [name],\n inject: \"body\",\n minify: true,\n });\n }\n\n return html;\n }\n\n public async tags(): Promise<HtmlRspackTagsPluginOptions[]> {\n const tags: HtmlRspackTagsPluginOptions[] = [];\n\n const views = await this.finder.views();\n\n for (const {filename, options} of views.values()) {\n // prettier-ignore\n const {\n as,\n title,\n template,\n excludeApp,\n includeApp,\n excludeBrowser,\n includeBrowser,\n ...tagOptions\n } = options;\n\n if (!_.isEmpty(tagOptions)) {\n tags.push({\n ...tagOptions,\n files: [filename],\n });\n }\n }\n\n return tags;\n }\n}\n","import {definePlugin} from \"@main/plugin\";\nimport {isEntryModuleOrIssuer} from \"@cli/bundler\";\n\nexport {default as View} from \"./View\";\n\nexport default definePlugin(() => {\n return {\n name: \"adnbn:view\",\n bundler: {\n optimization: {\n splitChunks: {\n cacheGroups: {\n frameworkView: {\n minChunks: 2,\n name: \"view\",\n test: isEntryModuleOrIssuer(\"view\"),\n enforce: false,\n reuseExistingChunk: true,\n priority: 10,\n },\n },\n },\n },\n },\n };\n});\n","import _ from \"lodash\";\n\nimport {View} from \"../view\";\n\nimport {OffscreenFinder, OffscreenViewFinder} from \"@cli/entrypoint\";\n\nimport {virtualOffscreenModule} from \"@cli/virtual\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {OffscreenEntrypointOptions} from \"@typing/offscreen\";\nimport {EntrypointFile} from \"@typing/entrypoint\";\n\nexport type OffscreenParameters = Record<string, chrome.offscreen.CreateParameters>;\n\nexport default class extends OffscreenFinder {\n protected _view?: View<OffscreenEntrypointOptions>;\n\n protected _views?: OffscreenViewFinder;\n\n constructor(config: ReadonlyConfig) {\n super(config);\n\n this.names.reserve(this.chunkName());\n }\n\n public chunkName(): string {\n return \"common.\" + this.type();\n }\n\n public likely(name?: string): boolean {\n return this.names.likely(name);\n }\n\n public view(): View<OffscreenEntrypointOptions> {\n return (this._view ??= new View(this.config, this.views()));\n }\n\n public views(): OffscreenViewFinder {\n return (this._views ??= new OffscreenViewFinder(this.config, this));\n }\n\n /**\n * Before creating the virtual module, it is necessary to run a command `await this.transport()` that caches the Offscreens.\n * This command is executed during the type declaration generation stage for the Offscreens.\n */\n public virtual(file: EntrypointFile): string {\n const options = this._transport?.get(file)?.options;\n\n if (!options) {\n throw new Error(`Offscreen options not found for \"${file}\"`);\n }\n\n return virtualOffscreenModule(file, options.name);\n }\n\n public async parameters(): Promise<OffscreenParameters> {\n const offscreens: OffscreenParameters = {};\n\n const files = await this.transport();\n const filenames = await this.views().getFilenames();\n\n for (const [file, transport] of files) {\n const url = filenames.get(file);\n\n if (!url) {\n throw new Error(`Offscreen filename not found for \"${file.file}\"`);\n }\n\n let {name, reasons = \"DOM_PARSER\", justification = \"Just for testing\"} = transport.options;\n\n if (_.isString(reasons)) {\n reasons = [reasons];\n }\n\n offscreens[name] = {\n url,\n reasons,\n justification,\n };\n }\n\n return offscreens;\n }\n\n public clear(): this {\n this._view = undefined;\n this._views = undefined;\n\n return super.clear();\n }\n}\n","import {TransportDeclaration, TransportDeclarationLayer} from \"../typescript\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends TransportDeclaration {\n constructor(config: ReadonlyConfig) {\n super(config, TransportDeclarationLayer.Offscreen);\n }\n}\n","import path from \"path\";\nimport {Configuration as RspackConfig, DefinePlugin, HtmlRspackPlugin, Plugins} from \"@rspack/core\";\nimport {RspackVirtualModulePlugin} from \"rspack-plugin-virtual-module\";\nimport HtmlRspackTagsPlugin from \"html-rspack-tags-plugin\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {EntrypointPlugin} from \"@cli/bundler\";\nimport {virtualOffscreenBackgroundModule} from \"@cli/virtual\";\n\nimport Offscreen, {OffscreenParameters} from \"./Offscreen\";\nimport OffscreenDeclaration from \"./OffscreenDeclaration\";\n\nimport {Command} from \"@typing/app\";\nimport {Browser} from \"@typing/browser\";\nimport {BackgroundEntryName} from \"@typing/background\";\n\nconst OffscreenTempDir = \"virtual\";\nconst OffscreenBackgroundModule = \"offscreen.background.ts\";\n\nexport default definePlugin(() => {\n let offscreen: Offscreen;\n let declaration: OffscreenDeclaration;\n\n return {\n name: \"adnbn:offscreen\",\n startup: ({config}) => {\n offscreen = new Offscreen(config);\n declaration = new OffscreenDeclaration(config);\n },\n offscreen: () => offscreen.files(),\n bundler: async ({config}) => {\n declaration.dictionary(await offscreen.dictionary()).build();\n\n let build: boolean = true;\n let rspack: RspackConfig = {};\n\n if (await offscreen.empty()) {\n if (config.debug) {\n console.info(\"Offscreen entries not found\");\n }\n\n build = false;\n }\n\n const plugins: Plugins = [];\n\n let parameters: OffscreenParameters = {};\n\n if (build) {\n parameters = await offscreen.parameters();\n\n // prettier-ignore\n const plugin = EntrypointPlugin.from(await offscreen.view().entries())\n .virtual(file => offscreen.virtual(file));\n\n if (config.command === Command.Watch) {\n plugin.watch(async () => {\n declaration.dictionary(await offscreen.clear().dictionary()).build();\n\n return offscreen.view().entries();\n });\n }\n\n const htmlPlugins = (await offscreen.view().html()).map(options => new HtmlRspackPlugin(options));\n const tagsPlugins = (await offscreen.view().tags()).map(options => new HtmlRspackTagsPlugin(options));\n\n plugins.push(plugin, ...htmlPlugins, ...tagsPlugins);\n\n if (config.manifestVersion === 2 || config.browser === Browser.Firefox) {\n plugins.push(\n new RspackVirtualModulePlugin(\n {\n [OffscreenBackgroundModule]: virtualOffscreenBackgroundModule(),\n },\n OffscreenTempDir\n )\n );\n\n rspack = {\n entry: {\n [BackgroundEntryName]: {\n import: [path.join(OffscreenTempDir, OffscreenBackgroundModule)],\n },\n },\n };\n }\n }\n\n return {\n ...rspack,\n plugins: [\n new DefinePlugin({\n __ADNBN_OFFSCREEN_PARAMETERS__: JSON.stringify(parameters),\n }),\n ...plugins,\n ],\n } satisfies RspackConfig;\n },\n manifest: async ({manifest, config}) => {\n if (config.manifestVersion !== 2 && config.browser !== Browser.Firefox && (await offscreen.exists())) {\n manifest.addPermission(\"offscreen\");\n }\n },\n };\n});\n","import {View} from \"../view\";\n\nimport {PageFinder} from \"@cli/entrypoint\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {PageEntrypointOptions} from \"@typing/page\";\nimport {ManifestAccessibleResources} from \"@typing/manifest\";\n\nexport default class extends PageFinder {\n protected _view?: View<PageEntrypointOptions>;\n\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public view(): View<PageEntrypointOptions> {\n return (this._view ??= new View(this.config, this));\n }\n\n public async accessibleResources(): Promise<ManifestAccessibleResources> {\n const resources: ManifestAccessibleResources = new Set();\n\n const views = await this.views();\n\n for (const {filename, options} of views.values()) {\n const {matches} = options;\n\n if (!matches) {\n continue;\n }\n\n resources.add({resources: [filename], matches});\n }\n\n return resources;\n }\n\n public clear(): this {\n this._view = undefined;\n\n return super.clear();\n }\n}\n","import \":package\";\n\ndeclare module \":package\" {\n export type PageAlias = string;\n\n export function getPageUrl(alias: PageAlias): string;\n}\n","import template from \"./page.d.ts?raw\";\n\nimport {FileBuilder} from \"@cli/plugins/typescript\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends FileBuilder {\n protected alias = new Set<string>();\n\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n protected filename(): string {\n return \"page.d.ts\";\n }\n\n protected template(): string {\n let content = template;\n\n if (this.alias.size > 0) {\n const type = '\"' + Array.from(this.alias).join('\" | \"') + '\"';\n\n content = content.replace(\"type PageAlias = string\", `type PageAlias = ${type}`);\n }\n\n return content;\n }\n\n public setAlias(alias: Set<string>): this {\n this.alias = alias;\n\n return this;\n }\n}\n","import {Configuration as RspackConfig, DefinePlugin, HtmlRspackPlugin, Plugins} from \"@rspack/core\";\nimport HtmlRspackTagsPlugin from \"html-rspack-tags-plugin\";\n\nimport Page from \"./Page\";\n\nimport {PageDeclaration} from \"./declaration\";\n\nimport {definePlugin} from \"@main/plugin\";\nimport {virtualViewModule} from \"@cli/virtual\";\nimport {EntrypointPlugin} from \"@cli/bundler\";\nimport {ViewAliasToFilename} from \"@cli/entrypoint\";\n\nimport {Command} from \"@typing/app\";\n\nexport default definePlugin(() => {\n let page: Page;\n let declaration: PageDeclaration;\n\n return {\n name: \"adnbn:page\",\n startup: ({config}) => {\n page = new Page(config);\n declaration = new PageDeclaration(config);\n },\n page: () => page.files(),\n bundler: async ({config}) => {\n declaration.setAlias(await page.getAlias()).build();\n\n const plugins: Plugins = [];\n\n let alias: ViewAliasToFilename = new Map();\n\n if (await page.empty()) {\n if (config.debug) {\n console.info(\"Page entries not found\");\n }\n } else {\n alias = await page.getAliasToFilename();\n\n // prettier-ignore\n const plugin = EntrypointPlugin.from(await page.view().entries())\n .virtual(file => virtualViewModule(file));\n\n if (config.command === Command.Watch) {\n plugin.watch(async () => {\n declaration.setAlias(await page.clear().getAlias()).build();\n\n return page.view().entries();\n });\n }\n\n const htmlPlugins = (await page.view().html()).map(options => new HtmlRspackPlugin(options));\n const tagsPlugins = (await page.view().tags()).map(options => new HtmlRspackTagsPlugin(options));\n\n plugins.push(plugin, ...htmlPlugins, ...tagsPlugins);\n }\n\n return {\n plugins: [\n new DefinePlugin({\n __ADNBN_PAGE_ALIAS__: JSON.stringify(alias),\n }),\n ...plugins,\n ],\n } satisfies RspackConfig;\n },\n manifest: async ({manifest}) => {\n manifest.appendAccessibleResources(await page.accessibleResources());\n },\n };\n});\n","import {View} from \"../view\";\n\nimport {modifyLocaleMessageKey} from \"@locale/utils\";\n\nimport {PopupFinder} from \"@cli/entrypoint\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {PopupEntrypointOptions} from \"@typing/popup\";\nimport {ManifestPopup} from \"@typing/manifest\";\n\nexport type PopupNameToManifest = Map<string, ManifestPopup>;\n\nexport default class extends PopupFinder {\n protected _view?: View<PopupEntrypointOptions>;\n\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public view(): View<PopupEntrypointOptions> {\n return (this._view ??= new View(this.config, this));\n }\n\n public async manifest(): Promise<ManifestPopup | undefined> {\n const views = await this.views();\n\n for (const {filename, options} of views.values()) {\n const {apply = true, title, icon} = options;\n\n if (apply) {\n return {\n path: filename,\n title: modifyLocaleMessageKey(title),\n icon,\n };\n }\n }\n }\n\n public async manifestByAlias(): Promise<PopupNameToManifest> {\n return Array.from(await this.views()).reduce((aliases, [_, item]) => {\n const {options, filename} = item;\n const {title, icon} = options;\n\n return {\n ...aliases,\n [item.alias]: {\n path: filename,\n title,\n icon,\n },\n };\n }, new Map() as PopupNameToManifest);\n }\n\n public clear(): this {\n this._view = undefined;\n\n return super.clear();\n }\n}\n","import \":package\";\n\ndeclare module \":package\" {\n export type PopupAlias = string;\n\n export function changePopup(alias: PopupAlias, tab?: number | chrome.tabs.Tab): Promise<void>;\n}\n","import template from \"./popup.d.ts?raw\";\n\nimport {FileBuilder} from \"@cli/plugins/typescript\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends FileBuilder {\n protected alias = new Set<string>();\n\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n protected filename(): string {\n return \"popup.d.ts\";\n }\n\n protected template(): string {\n let content = template;\n\n if (this.alias.size > 0) {\n const type = '\"' + Array.from(this.alias).join('\" | \"') + '\"';\n\n content = content.replace(\"type PopupAlias = string\", `type PopupAlias = ${type}`);\n }\n\n return content;\n }\n\n public setAlias(alias: Set<string>): this {\n this.alias = alias;\n\n return this;\n }\n}\n","import {Configuration as RspackConfig, DefinePlugin, HtmlRspackPlugin, Plugins} from \"@rspack/core\";\nimport HtmlRspackTagsPlugin from \"html-rspack-tags-plugin\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {EntrypointPlugin} from \"@cli/bundler\";\nimport {virtualViewModule} from \"@cli/virtual\";\n\nimport Popup, {PopupNameToManifest} from \"./Popup\";\n\nimport {PopupDeclaration} from \"./declaration\";\n\nimport {Command} from \"@typing/app\";\n\nexport default definePlugin(() => {\n let popup: Popup;\n let declaration: PopupDeclaration;\n\n return {\n name: \"adnbn:popup\",\n startup: ({config}) => {\n popup = new Popup(config);\n declaration = new PopupDeclaration(config);\n },\n popup: () => popup.files(),\n bundler: async ({config}) => {\n declaration.setAlias(await popup.getAlias()).build();\n\n const plugins: Plugins = [];\n\n let alias: PopupNameToManifest = new Map();\n\n if (await popup.empty()) {\n if (config.debug) {\n console.info(\"Popup entries not found\");\n }\n } else {\n alias = await popup.manifestByAlias();\n\n // prettier-ignore\n const plugin = EntrypointPlugin.from(await popup.view().entries())\n .virtual(file => virtualViewModule(file));\n\n if (config.command === Command.Watch) {\n plugin.watch(async () => {\n declaration.setAlias(await popup.clear().getAlias()).build();\n\n return popup.view().entries();\n });\n }\n\n const htmlPlugins = (await popup.view().html()).map(options => new HtmlRspackPlugin(options));\n const tagsPlugins = (await popup.view().tags()).map(options => new HtmlRspackTagsPlugin(options));\n\n plugins.push(plugin, ...htmlPlugins, ...tagsPlugins);\n }\n\n return {\n plugins: [\n new DefinePlugin({\n __ADNBN_POPUP_MAP__: JSON.stringify(alias),\n }),\n ...plugins,\n ],\n } as RspackConfig;\n },\n manifest: async ({manifest}) => {\n manifest.setPopup(await popup.manifest());\n },\n };\n});\n","import fs from \"fs\";\nimport {Configuration as RspackConfig, CopyRspackPlugin} from \"@rspack/core\";\nimport {RawCopyPattern} from \"@rspack/binding\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {getAppPath, getAppSourcePath, getSharedPath, getSourcePath} from \"@cli/resolvers/path\";\n\ntype CopyPatterns = Array<Pick<RawCopyPattern, \"from\" | \"to\" | \"force\" | \"priority\">>;\n\nexport default definePlugin(() => {\n return {\n name: \"adnbn:public\",\n bundler: ({config}) => {\n const {publicDir, mergePublic} = config;\n\n const patterns: CopyPatterns = [];\n\n const paths: string[] = [\n getAppSourcePath(config, publicDir),\n getAppPath(config, publicDir),\n getSharedPath(config, publicDir),\n getSourcePath(config, publicDir),\n ];\n\n for (let i = 0; i < paths.length; i++) {\n if (!mergePublic && patterns.length > 0) break;\n\n const path = paths[i];\n\n if (fs.existsSync(path)) {\n patterns.push({\n from: path,\n to: \".\",\n force: true,\n priority: paths.length - i,\n });\n }\n }\n\n if (patterns.length === 0) {\n return {};\n }\n\n return {\n plugins: [new CopyRspackPlugin({patterns})],\n } satisfies RspackConfig;\n },\n };\n});\n","import {View} from \"../view\";\n\nimport {modifyLocaleMessageKey} from \"@locale/utils\";\n\nimport {SidebarFinder} from \"@cli/entrypoint\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {SidebarEntrypointOptions} from \"@typing/sidebar\";\nimport {ManifestSidebar} from \"@typing/manifest\";\n\nexport type SidebarNameToManifest = Map<string, ManifestSidebar>;\n\nexport default class extends SidebarFinder {\n protected _view?: View<SidebarEntrypointOptions>;\n\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public view(): View<SidebarEntrypointOptions> {\n return (this._view ??= new View(this.config, this));\n }\n\n public async manifest(): Promise<ManifestSidebar | undefined> {\n const views = await this.views();\n\n for (const {filename, options} of views.values()) {\n const {apply = true, title, icon} = options;\n\n if (apply) {\n return {\n path: filename,\n title: modifyLocaleMessageKey(title),\n icon,\n };\n }\n }\n }\n\n public async manifestByAlias(): Promise<SidebarNameToManifest> {\n return Array.from(await this.views()).reduce((aliases, [_, item]) => {\n const {options, filename} = item;\n const {title, icon} = options;\n\n return {\n ...aliases,\n [item.alias]: {\n path: filename,\n title,\n icon,\n },\n };\n }, new Map() as SidebarNameToManifest);\n }\n\n public clear(): this {\n this._view = undefined;\n\n return super.clear();\n }\n}\n","import \":package\";\n\ndeclare module \":package\" {\n export type SidebarAlias = string;\n\n export function changeSidebar(alias: SidebarAlias, tab?: number | chrome.tabs.Tab): Promise<void>;\n}\n","import template from \"./sidebar.d.ts?raw\";\n\nimport {FileBuilder} from \"@cli/plugins/typescript\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends FileBuilder {\n protected alias = new Set<string>();\n\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n protected filename(): string {\n return \"sidebar.d.ts\";\n }\n\n protected template(): string {\n let content = template;\n\n if (this.alias.size > 0) {\n const type = '\"' + Array.from(this.alias).join('\" | \"') + '\"';\n\n content = content.replace(\"type SidebarAlias = string\", `type SidebarAlias = ${type}`);\n }\n\n return content;\n }\n\n public setAlias(alias: Set<string>): this {\n this.alias = alias;\n\n return this;\n }\n}\n","import {ViewDefinition, ViewOptions} from \"@typing/view\";\nimport {Browser} from \"@typing/browser\";\n\nexport const SidebarAlternativeBrowsers: ReadonlySet<Browser> = new Set([Browser.Opera, Browser.Firefox]);\n\nexport interface SidebarConfig {\n icon?: string;\n apply?: boolean;\n}\n\nexport type SidebarEntrypointOptions = SidebarConfig & ViewOptions;\n\nexport type SidebarProps = SidebarEntrypointOptions;\n\nexport type SidebarDefinition = SidebarEntrypointOptions & ViewDefinition<SidebarProps>;\n","import {Configuration as RspackConfig, DefinePlugin, HtmlRspackPlugin, Plugins} from \"@rspack/core\";\nimport HtmlRspackTagsPlugin from \"html-rspack-tags-plugin\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {EntrypointPlugin} from \"@cli/bundler\";\nimport {virtualViewModule} from \"@cli/virtual\";\n\nimport Sidebar, {SidebarNameToManifest} from \"./Sidebar\";\n\nimport {SidebarDeclaration} from \"./declaration\";\n\nimport {Command} from \"@typing/app\";\nimport {SidebarAlternativeBrowsers} from \"@typing/sidebar\";\n\nexport default definePlugin(() => {\n let sidebar: Sidebar;\n let declaration: SidebarDeclaration;\n\n let sidebarAvailable: boolean = false;\n\n return {\n name: \"adnbn:sidebar\",\n startup: ({config}) => {\n sidebar = new Sidebar(config);\n declaration = new SidebarDeclaration(config);\n\n sidebarAvailable = SidebarAlternativeBrowsers.has(config.browser) || config.manifestVersion !== 2;\n },\n sidebar: () => sidebar.files(),\n bundler: async ({config}) => {\n declaration.setAlias(await sidebar.getAlias()).build();\n\n let build: boolean = true;\n\n if (await sidebar.empty()) {\n if (config.debug) {\n console.info(\"Sidebar entries not found\");\n }\n\n build = false;\n } else if (!sidebarAvailable) {\n if (config.debug) {\n console.warn(\"Sidebar not supported for manifest version 2\");\n }\n\n build = false;\n }\n\n const plugins: Plugins = [];\n\n let alias: SidebarNameToManifest = new Map();\n\n if (build) {\n alias = await sidebar.manifestByAlias();\n\n // prettier-ignore\n const plugin = EntrypointPlugin.from(await sidebar.view().entries())\n .virtual(file => virtualViewModule(file));\n\n if (config.command === Command.Watch) {\n plugin.watch(async () => {\n declaration.setAlias(await sidebar.clear().getAlias()).build();\n\n return sidebar.view().entries();\n });\n }\n\n const htmlPlugins = (await sidebar.view().html()).map(options => new HtmlRspackPlugin(options));\n const tagsPlugins = (await sidebar.view().tags()).map(options => new HtmlRspackTagsPlugin(options));\n\n plugins.push(plugin, ...htmlPlugins, ...tagsPlugins);\n }\n\n return {\n plugins: [\n new DefinePlugin({\n __ADNBN_SIDEBAR_MAP__: JSON.stringify(alias),\n }),\n ...plugins,\n ],\n } as RspackConfig;\n },\n manifest: async ({manifest, config}) => {\n if (!sidebarAvailable) {\n return;\n }\n\n manifest.setSidebar(await sidebar.manifest());\n\n if ((await sidebar.exists()) && !SidebarAlternativeBrowsers.has(config.browser)) {\n manifest.addPermission(\"sidePanel\");\n }\n },\n };\n});\n","import path from \"path\";\nimport {Configuration as RspackConfig} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {getRootPath} from \"@cli/resolvers/path\";\n\nexport default definePlugin(() => {\n return {\n name: \"adnbn:react\",\n bundler: () => {\n return {\n resolve: {\n extensions: [\".js\", \".jsx\"],\n alias: {\n react: getRootPath(path.join(\"node_modules\", \"react\")),\n \"react-dom\": getRootPath(path.join(\"node_modules\", \"react-dom\")),\n scheduler: getRootPath(path.join(\"node_modules\", \"scheduler\")),\n },\n },\n optimization: {\n splitChunks: {\n cacheGroups: {\n react: {\n name: \"react\",\n test: /[\\\\/]node_modules[\\\\/](react|react-dom|scheduler)([\\\\/]|$)/,\n priority: 100,\n reuseExistingChunk: true,\n enforce: true,\n },\n },\n },\n },\n module: {\n rules: [\n {\n test: /\\.svg$/i,\n issuer: /\\.[jt]sx?$/,\n resourceQuery: /react/,\n use: [\n {\n loader: \"@svgr/webpack\",\n options: {\n expandProps: \"start\",\n typescript: true,\n },\n },\n ],\n },\n ],\n },\n } as RspackConfig;\n },\n };\n});\n","import _ from \"lodash\";\nimport path from \"path\";\nimport fs from \"fs\";\nimport {createHash} from \"crypto\";\nimport {Configuration as RspackConfig, CssExtractRspackPlugin, RuleSetUse, RuleSetUseItem} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {appFilenameResolver} from \"@cli/bundler\";\n\nimport {getAppSourcePath, getRootPath, getSharedPath} from \"@cli/resolvers/path\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {toPosix} from \"@cli/utils/path\";\n\n// prettier-ignore\nconst styleMergerLoader =\n (config: ReadonlyConfig) =>\n (sharedStyle: string, sharedPath: string): string | void => {\n const sharedDir = getRootPath(getSharedPath(config));\n\n if (sharedPath.startsWith(sharedDir)) {\n const relativePath = path.relative(sharedDir, sharedPath);\n\n const appDir = getRootPath(getAppSourcePath(config));\n const appPath = getRootPath(path.join(appDir, relativePath));\n\n if (fs.existsSync(appPath)) {\n try {\n let appStyle = fs.readFileSync(appPath, \"utf8\");\n\n appStyle = appStyle.replace(/url\\((['\"]?)(.*?)\\1\\)/g, (match, quote, filePath) => {\n if (\n filePath.startsWith(\"/\") ||\n filePath.startsWith(\"http\") ||\n filePath.startsWith(\"data:\")\n ) {\n return match;\n }\n\n const cssDir = path.dirname(appPath);\n const assetAbs = path.resolve(cssDir, filePath);\n\n const sharedFileDir = path.dirname(sharedPath);\n\n const relativeToSharedFile = path.relative(sharedFileDir, assetAbs);\n\n return `url(\"${toPosix(relativeToSharedFile)}\")`;\n });\n\n return sharedStyle + \"\\n\" + appStyle;\n } catch (error) {\n console.error(error);\n }\n }\n }\n };\n\nexport default definePlugin(() => {\n return {\n name: \"adnbn:styles\",\n bundler: ({config}) => {\n const {app, cssDir, cssFilename, cssIdentName, mergeStyles} = config;\n\n const filename = appFilenameResolver(app, cssFilename, cssDir);\n\n const createSassRuleSet = (rule: RuleSetUseItem): RuleSetUse => {\n const rules: RuleSetUse = [CssExtractRspackPlugin.loader, rule, \"sass-loader\"];\n\n if (mergeStyles) {\n rules.push({\n loader: \"source-modifier-loader\",\n options: {\n modify: styleMergerLoader(config),\n },\n });\n }\n\n return rules;\n };\n\n return {\n resolve: {\n extensions: [\".css\", \".scss\"],\n },\n plugins: [\n new CssExtractRspackPlugin({\n filename,\n chunkFilename: filename,\n }),\n ],\n module: {\n rules: [\n {\n test: /\\.(scss|css)$/,\n type: \"javascript/auto\",\n oneOf: [\n {\n resourceQuery: /asis/,\n use: createSassRuleSet({\n loader: \"css-loader\",\n options: {\n esModule: true,\n modules: false,\n },\n }),\n },\n {\n use: createSassRuleSet({\n loader: \"css-loader\",\n options: {\n esModule: true,\n modules: {\n exportLocalsConvention: \"as-is\",\n namedExport: false,\n localIdentName: cssIdentName.replaceAll(\"[app]\", _.kebabCase(app)),\n localIdentHashSalt: createHash(\"sha256\").update(app).digest(\"hex\"),\n },\n },\n }),\n },\n ],\n },\n ],\n },\n } satisfies RspackConfig;\n },\n };\n});\n","import _ from \"lodash\";\n\nimport type {ReadonlyConfig} from \"@typing/config\";\n\nexport default abstract class AbstractVersion {\n public static version<T extends AbstractVersion>(\n this: new (config: ReadonlyConfig) => T,\n config: ReadonlyConfig\n ): string | undefined {\n return new this(config).getVersion();\n }\n\n protected constructor(protected readonly config: ReadonlyConfig) {}\n\n public abstract getVersion(): string | undefined;\n\n protected extractVersionValue<T extends string | number | undefined>(version: T | (() => T)): string | undefined {\n if (_.isNil(version)) {\n return;\n }\n\n return String(_.isFunction(version) ? version : version);\n }\n}\n","import fs from \"fs\";\nimport semver from \"semver\";\n\nimport {getEnv} from \"@main/env\";\nimport {getInputPath} from \"@cli/resolvers/path\";\n\nimport AbstractVersion from \"./AbstractVersion\";\n\nimport type {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends AbstractVersion {\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public getVersion(): string | undefined {\n const version = this.extractVersionValue(this.config.version);\n\n if (!version) {\n return;\n }\n\n if (semver.valid(version)) {\n return version;\n }\n\n const envVersion = getEnv(version);\n\n if (semver.valid(envVersion)) {\n return envVersion;\n }\n\n const packagePath = getInputPath(this.config, \"package.json\");\n\n try {\n const packageJson = JSON.parse(fs.readFileSync(packagePath, \"utf-8\"));\n\n return packageJson.version;\n } catch (e) {\n console.error(`Unable to read version from \"${packagePath}\"`, e);\n }\n }\n}\n","import semver from \"semver\";\n\nimport {getEnv} from \"@main/env\";\n\nimport AbstractVersion from \"./AbstractVersion\";\n\nimport type {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends AbstractVersion {\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public getVersion(): string | undefined {\n const version = this.extractVersionValue(this.config.minimumVersion);\n\n if (!version) {\n return;\n }\n\n return this.resolveVersion(version) || this.resolveVersion(getEnv(version));\n }\n\n protected resolveVersion(version?: string): string | undefined {\n const coerceVersion = semver.coerce(version);\n\n if (!version || !coerceVersion) return;\n\n const parts: string[] = coerceVersion.version.split(\".\");\n\n while (parts.length && parts[parts.length - 1] === \"0\") {\n parts.pop();\n }\n\n return parts.join(\".\") || undefined;\n }\n}\n","import {definePlugin} from \"@main/plugin\";\n\nimport AddonVersion from \"./AddonVersion\";\nimport BrowserMinimumVersion from \"./BrowserMinimumVersion\";\n\nexport {AddonVersion, BrowserMinimumVersion};\n\nexport default definePlugin(() => {\n return {\n name: \"adnbn:version\",\n manifest: ({manifest, config}) => {\n manifest.setVersion(AddonVersion.version(config)).setMinimumVersion(BrowserMinimumVersion.version(config));\n },\n };\n});\n","import {\n CoreManifest,\n FirefoxManifest,\n Manifest,\n ManifestAccessibleResource,\n ManifestAccessibleResources,\n ManifestBackground,\n ManifestBuilder,\n ManifestCommands,\n ManifestContentScripts,\n ManifestDependencies,\n ManifestHostPermissions,\n ManifestIcons,\n ManifestIncognito,\n ManifestPermissions,\n ManifestPopup,\n ManifestSidebar,\n ManifestVersion,\n} from \"@typing/manifest\";\nimport {Browser} from \"@typing/browser\";\nimport {Language} from \"@typing/locale\";\nimport {CommandExecuteActionName} from \"@typing/command\";\nimport {DefaultIconGroupName} from \"@typing/icon\";\nimport {SidebarAlternativeBrowsers} from \"@typing/sidebar\";\n\ntype ManifestV3 = chrome.runtime.ManifestV3;\ntype ManifestPermission = chrome.runtime.ManifestPermissions;\ntype CoreManifestIcons = chrome.runtime.ManifestIcons;\n\nexport class ManifestError extends Error {\n public constructor(message: string) {\n super(\"Manifest: \" + message);\n }\n}\n\nexport default abstract class<T extends CoreManifest> implements ManifestBuilder<T> {\n protected name: string = \"__MSG_app_name__\";\n protected email?: string;\n protected author?: string;\n protected homepage?: string;\n protected shortName?: string;\n protected description?: string;\n protected minimumVersion?: string;\n protected version: string = \"0.0.0\";\n protected icon?: string;\n protected incognito?: ManifestIncognito;\n protected locale?: Language;\n protected icons: ManifestIcons = new Map();\n protected background?: ManifestBackground;\n protected popup?: ManifestPopup;\n protected sidebar?: ManifestSidebar;\n protected commands: ManifestCommands = new Set();\n protected contentScripts: ManifestContentScripts = new Set();\n protected dependencies: ManifestDependencies = new Map();\n protected permissions: ManifestPermissions = new Set();\n protected hostPermissions: ManifestHostPermissions = new Set();\n protected accessibleResources: ManifestAccessibleResources = new Set();\n\n public abstract getManifestVersion(): ManifestVersion;\n\n protected abstract buildAction(): Partial<T> | undefined;\n\n protected abstract buildPermissions(): Partial<T> | undefined;\n\n protected abstract buildHostPermissions(): Partial<T> | undefined;\n\n protected abstract buildWebAccessibleResources(): Partial<T> | undefined;\n\n protected constructor(protected readonly browser: Browser = Browser.Chrome) {}\n\n public setAuthor(author?: string): this {\n this.author = author;\n\n return this;\n }\n\n public setHomepage(homepage?: string): this {\n this.homepage = homepage;\n\n return this;\n }\n\n public setEmail(email?: string): this {\n this.email = email;\n\n return this;\n }\n\n public setName(name: string): this {\n this.name = name;\n\n return this;\n }\n\n public setShortName(shortName?: string): this {\n this.shortName = shortName;\n\n return this;\n }\n\n public setDescription(description?: string): this {\n this.description = description;\n\n return this;\n }\n\n public setVersion(version?: string): this {\n this.version = version || \"0.0.0\";\n\n return this;\n }\n\n public setMinimumVersion(minimumVersion?: string): this {\n this.minimumVersion = minimumVersion;\n\n return this;\n }\n\n public setLocale(lang?: Language): this {\n this.locale = lang;\n\n return this;\n }\n\n public setIncognito(incognito?: ManifestIncognito): this {\n this.incognito = incognito;\n\n return this;\n }\n\n public setIcons(icons?: ManifestIcons): this {\n this.icons = icons || new Map();\n\n return this;\n }\n\n public setIcon(icon?: string): this {\n this.icon = icon;\n\n return this;\n }\n\n public setBackground(background?: ManifestBackground): this {\n this.background = background;\n\n return this;\n }\n\n public setCommands(commands?: ManifestCommands): this {\n this.commands = commands || new Set();\n\n return this;\n }\n\n public setContentScripts(contentScripts?: ManifestContentScripts): this {\n this.contentScripts = contentScripts || new Set();\n\n return this;\n }\n\n public setPopup(popup?: ManifestPopup): this {\n this.popup = popup;\n\n return this;\n }\n\n public setSidebar(sidebar?: ManifestSidebar): this {\n this.sidebar = sidebar;\n\n return this;\n }\n\n public setDependencies(dependencies: ManifestDependencies): this {\n this.dependencies = dependencies;\n\n return this;\n }\n\n public addPermission(permission: ManifestPermission): this {\n this.permissions.add(permission);\n\n return this;\n }\n\n public setPermissions(permissions: ManifestPermissions): this {\n this.permissions = permissions;\n\n return this;\n }\n\n public appendPermissions(permissions: ManifestPermissions): this {\n for (const permission of permissions) {\n this.permissions.add(permission);\n }\n\n return this;\n }\n\n public addHostPermission(permission: string): this {\n this.hostPermissions.add(permission);\n\n return this;\n }\n\n public setHostPermissions(permissions: ManifestHostPermissions): this {\n this.hostPermissions = permissions;\n\n return this;\n }\n\n public appendHostPermissions(permissions: ManifestHostPermissions): this {\n for (const permission of permissions) {\n this.hostPermissions.add(permission);\n }\n\n return this;\n }\n\n public addAccessibleResource(accessibleResource: ManifestAccessibleResource): this {\n this.accessibleResources.add(accessibleResource);\n\n return this;\n }\n\n public appendAccessibleResources(accessibleResources: ManifestAccessibleResources): this {\n for (const accessibleResource of accessibleResources) {\n this.accessibleResources.add(accessibleResource);\n }\n\n return this;\n }\n\n public setManifestAccessibleResource(accessibleResources: ManifestAccessibleResources): this {\n this.accessibleResources = accessibleResources;\n\n return this;\n }\n\n private marge<T extends CoreManifest>(manifest: T, ...sources: Array<Partial<T> | undefined>): T {\n sources = sources.filter(source => source !== undefined);\n\n if (sources.length === 0) {\n return manifest;\n }\n\n const result = {...manifest};\n\n for (const source of sources) {\n Object.assign(result, source);\n }\n\n return result;\n }\n\n public build(): T {\n let manifest: Manifest = {\n name: this.name,\n short_name: this.shortName,\n description: this.description,\n version: this.version,\n manifest_version: this.getManifestVersion(),\n minimum_chrome_version: this.minimumVersion,\n author: this.author,\n homepage_url: this.homepage,\n incognito: this.incognito,\n };\n\n manifest = this.marge<Manifest>(\n manifest,\n this.buildLocale(),\n this.buildIcons(),\n this.buildBackground(),\n this.buildCommands(),\n this.buildAction(),\n this.buildSidebar(),\n this.buildContentScripts(),\n this.buildPermissions(),\n this.buildHostPermissions(),\n this.buildWebAccessibleResources(),\n this.buildBrowserSpecificSettings()\n );\n\n return manifest as T;\n }\n\n protected buildIcons(): Partial<CoreManifest> | undefined {\n if (this.icon) {\n return {icons: this.getIconsByName(this.icon)};\n }\n }\n\n protected buildBackground(): Partial<CoreManifest> | undefined {\n if (this.background) {\n const {entry, persistent} = this.background;\n\n const dependencies = this.dependencies.get(entry);\n\n if (!dependencies) {\n throw new ManifestError(`Background entry \"${entry}\" not found in dependencies`);\n }\n\n if (dependencies.js.size === 0) {\n throw new ManifestError(`Background entry \"${entry}\" has no dependencies`);\n }\n\n const scripts = Array.from(dependencies.js);\n\n return {background: {scripts, persistent: persistent || undefined}};\n }\n }\n\n protected buildCommands(): Partial<CoreManifest> | undefined {\n if (this.commands.size > 0) {\n const commands = Array.from(this.commands).reduce(\n (commands, command) => {\n const item = {\n suggested_key: {\n default: command?.defaultKey,\n windows: command?.windowsKey,\n mac: command?.macKey,\n chromeos: command?.chromeosKey,\n linux: command?.linuxKey,\n },\n description:\n command?.description ||\n (command.name === CommandExecuteActionName ? undefined : command.name),\n global: command?.global,\n };\n\n return {...commands, [command.name]: item};\n },\n {} as CoreManifest[\"commands\"]\n );\n\n return {commands};\n }\n }\n\n protected buildContentScripts(): Partial<CoreManifest> | undefined {\n if (this.contentScripts.size > 0) {\n const contentScripts: ManifestV3[\"content_scripts\"] = [];\n\n for (const script of this.contentScripts.values()) {\n const {\n entry,\n matches,\n excludeMatches,\n allFrames,\n runAt,\n excludeGlobs,\n includeGlobs,\n world,\n matchAboutBlank,\n matchOriginAsFallback,\n } = script;\n\n const dependencies = this.dependencies.get(entry);\n\n if (!dependencies) {\n throw new ManifestError(`Content script entry \"${entry}\" not found in dependencies`);\n }\n\n const js = Array.from(dependencies.js);\n const css = Array.from(dependencies.css);\n\n if (js.length === 0 && css.length === 0) {\n throw new ManifestError(`Content script and style entry \"${entry}\" not found in dependencies`);\n }\n\n contentScripts.push({\n matches,\n exclude_matches: excludeMatches,\n js: js.length > 0 ? js : undefined,\n css: css.length > 0 ? css : undefined,\n all_frames: allFrames,\n run_at: runAt,\n exclude_globs: excludeGlobs,\n include_globs: includeGlobs,\n match_about_blank: matchAboutBlank,\n //@ts-ignore\n match_origin_as_fallback: matchOriginAsFallback,\n world,\n });\n }\n\n return {content_scripts: contentScripts};\n }\n }\n\n protected buildSidebar(): Partial<CoreManifest> | undefined {\n if (!this.sidebar) {\n return;\n }\n\n const {path, icon, title} = this.sidebar;\n\n const commonProps = {\n open_at_install: this.browser === Browser.Firefox ? false : undefined,\n default_title: title || this.name,\n default_icon: this.getIconsByName(icon),\n };\n\n return SidebarAlternativeBrowsers.has(this.browser)\n ? {sidebar_action: {...commonProps, default_panel: path}}\n : {side_panel: {...commonProps, default_path: path}};\n }\n\n protected buildLocale(): Partial<CoreManifest> | undefined {\n if (this.locale) {\n return {default_locale: this.locale};\n }\n }\n\n protected buildBrowserSpecificSettings(): Partial<FirefoxManifest> | undefined {\n if (this.browser === Browser.Firefox && this.email && this.permissions.has(\"storage\")) {\n return {\n browser_specific_settings: {\n gecko: {\n id: this.email,\n // strict_min_version: this.minimumVersion,\n },\n },\n };\n }\n }\n\n protected hasExecuteActionCommand(): boolean {\n return this.commands.size > 0 && Array.from(this.commands).some(({name}) => name === CommandExecuteActionName);\n }\n\n protected getIconsByName(name?: string): CoreManifestIcons | undefined {\n if (this.icons.size === 0) {\n return;\n }\n\n if (!name) {\n name = DefaultIconGroupName;\n }\n\n const icons = this.icons.get(name) || this.icons.get(DefaultIconGroupName) || this.icons.values().next().value;\n\n if (icons) {\n return Object.fromEntries(icons);\n }\n }\n\n public get(): T {\n return this.build();\n }\n}\n","import {ManifestMatchSchemes, ManifestSpecialSchemes} from \"@typing/manifest\";\n\ntype ManifestPermissions = chrome.runtime.ManifestPermissions;\n\n/**\n * Filters and adapts permissions for Manifest V2 compatibility.\n *\n * @param permissions - Set of permissions to filter\n * @returns New set of permissions adapted for Manifest V2\n */\nexport const filterPermissionsForMV2 = (permissions: Set<ManifestPermissions>): Set<ManifestPermissions> => {\n const filteredPermissions = new Set(permissions);\n\n /**\n * Manifest V3 introduced a new 'scripting' permission for working with the Chrome Scripting API,\n * but Manifest V2 uses the 'tabs' permission for executing scripts on web pages.\n * This function automatically replaces 'scripting' with 'tabs' to ensure backward compatibility.\n *\n * @example\n * ```typescript\n * const mv3Permissions = new Set(['scripting', 'storage', 'activeTab']);\n * const mv2Permissions = filterPermissionsForMV2(mv3Permissions);\n * // Result: Set(['tabs', 'storage', 'activeTab'])\n * ```\n */\n if (filteredPermissions.has(\"scripting\")) {\n filteredPermissions.delete(\"scripting\");\n filteredPermissions.add(\"tabs\");\n }\n\n filteredPermissions.delete(\"offscreen\");\n\n return filteredPermissions;\n};\n\nexport const filterPermissionsForMV3 = (permissions: Set<ManifestPermissions>): Set<ManifestPermissions> => {\n const filteredPermissions = new Set(permissions);\n\n /**\n * @permissions webRequestBlocking, webAuthenticationProxy, webRequestAuthProvider\n * @description These permissions were removed in Manifest V3 due to concerns related to security, performance, and transparency.\n * - `webRequestBlocking`: Allowed real-time interception and modification of network requests, which introduced latency and potential security risks. Replaced by the safer, declarative `declarativeNetRequest` API.\n * - `webAuthenticationProxy`: Provided proxy authentication control, but was rarely used and posed privacy risks.\n * - `webRequestAuthProvider`: Enabled handling of HTTP authentication (onAuthRequired), but was considered unsafe in the new MV3 architecture due to its ability to interfere with authentication flows.\n * @manifestV3 Removed. These APIs are no longer available in extensions using Manifest V3.\n */\n filteredPermissions.delete(\"webAuthenticationProxy\");\n filteredPermissions.delete(\"webRequestAuthProvider\");\n filteredPermissions.delete(\"webRequestBlocking\");\n\n return filteredPermissions;\n};\n\nexport const filterHostPatterns = (patterns: Set<string>): Set<string> => {\n if (patterns.has(\"<all_urls>\")) {\n return new Set([\"<all_urls>\"]);\n }\n\n const result = new Set<string>();\n\n const activeWildcards = new Set<string>();\n\n if (patterns.has(\"*://*/*\")) {\n activeWildcards.add(\"*://*/*\");\n result.add(\"*://*/*\");\n }\n\n for (const scheme of ManifestMatchSchemes) {\n const wildcard = `${scheme}://*/*`;\n\n if (patterns.has(wildcard)) {\n if (scheme === \"http\" || scheme === \"https\") {\n if (!activeWildcards.has(\"*://*/*\")) {\n activeWildcards.add(wildcard);\n result.add(wildcard);\n }\n } else {\n activeWildcards.add(wildcard);\n result.add(wildcard);\n }\n }\n }\n\n const isCoveredByWildcard = (pattern: string): boolean => {\n const schemeIndex = pattern.indexOf(\"://\");\n if (schemeIndex === -1) return false;\n\n const scheme = pattern.substring(0, schemeIndex);\n\n if (ManifestSpecialSchemes.has(scheme)) {\n return false;\n }\n\n if (activeWildcards.has(\"*://*/*\") && (scheme === \"http\" || scheme === \"https\")) {\n return true;\n }\n\n return activeWildcards.has(`${scheme}://*/*`);\n };\n\n for (const pattern of patterns) {\n if (activeWildcards.has(pattern)) {\n continue;\n }\n\n if (!isCoveredByWildcard(pattern)) {\n result.add(pattern);\n }\n }\n\n return result;\n};\n","import ManifestBase from \"./ManifestBase\";\n\nimport {filterHostPatterns, filterPermissionsForMV2} from \"./utils\";\n\nimport {CoreManifest, ManifestVersion} from \"@typing/manifest\";\nimport {Browser} from \"@typing/browser\";\nimport {SidebarAlternativeBrowsers} from \"@typing/sidebar\";\n\ntype ManifestV2 = chrome.runtime.ManifestV2;\ntype ManifestV3 = chrome.runtime.ManifestV3;\n\nexport default class extends ManifestBase<ManifestV2> {\n public constructor(browser: Browser) {\n super(browser);\n }\n\n public getManifestVersion(): ManifestVersion {\n return 2;\n }\n\n protected buildAction(): Partial<ManifestV2> | undefined {\n if (this.popup) {\n const {icon, title, path} = this.popup;\n\n return {\n browser_action: {\n default_title: title || this.name,\n default_popup: path,\n default_icon: this.getIconsByName(icon),\n },\n };\n } else if (this.hasExecuteActionCommand()) {\n return {\n browser_action: {\n default_title: this.name,\n },\n };\n }\n }\n\n protected buildSidebar(): Partial<CoreManifest> | undefined {\n if (!SidebarAlternativeBrowsers.has(this.browser)) {\n return;\n }\n\n return super.buildSidebar();\n }\n\n protected buildContentScripts(): Partial<ManifestV2> | undefined {\n const manifest = super.buildContentScripts() as Partial<ManifestV3>;\n\n if (manifest) {\n const {content_scripts} = manifest;\n\n if (!content_scripts) {\n return;\n }\n\n const contentScripts = content_scripts\n //@ts-ignore\n .map(({world, match_origin_as_fallback, ...script}) => script);\n\n return {content_scripts: contentScripts};\n }\n }\n\n protected buildPermissions(): Partial<ManifestV2> | undefined {\n const permissions: string[] = Array.from(filterPermissionsForMV2(this.permissions));\n\n if (this.hostPermissions.size > 0) {\n permissions.push(...filterHostPatterns(this.hostPermissions));\n }\n\n if (permissions.length > 0) {\n return {permissions};\n }\n }\n\n protected buildHostPermissions(): Partial<ManifestV2> | undefined {\n // In Manifest V2, host permissions are declared in the \"permissions\" array\n\n return undefined;\n }\n\n protected buildWebAccessibleResources(): Partial<ManifestV2> | undefined {\n const resources: string[] = Array.from(this.accessibleResources).flatMap(({resources}) => resources);\n\n for (const contentScript of this.contentScripts.values()) {\n const assets = this.dependencies.get(contentScript.entry)?.assets;\n\n if (assets && assets.size > 0) {\n resources.push(...assets);\n }\n }\n\n if (resources.length > 0) {\n return {web_accessible_resources: Array.from(new Set(resources))};\n }\n }\n}\n","import ManifestBase, {ManifestError} from \"./ManifestBase\";\n\nimport {filterHostPatterns, filterPermissionsForMV3} from \"./utils\";\n\nimport {CoreManifest, ManifestVersion} from \"@typing/manifest\";\nimport {Browser} from \"@typing/browser\";\nimport {ContentScriptMatches} from \"@typing/content\";\n\ntype ManifestV3 = chrome.runtime.ManifestV3;\n\nexport default class extends ManifestBase<ManifestV3> {\n public constructor(browser: Browser) {\n super(browser);\n }\n\n public getManifestVersion(): ManifestVersion {\n return 3;\n }\n\n protected buildBackground(): Partial<CoreManifest> | undefined {\n if (this.browser === Browser.Firefox) {\n const manifest = super.buildBackground();\n\n if (manifest) {\n const {background, ...other} = manifest;\n\n return {...other, background: {...background, persistent: undefined}};\n }\n\n return;\n }\n\n if (this.background) {\n const {entry} = this.background;\n\n const dependencies = this.dependencies.get(entry);\n\n if (!dependencies) {\n throw new ManifestError(`Background entry \"${entry}\" not found in dependencies`);\n }\n\n if (dependencies.js.size === 0) {\n throw new ManifestError(`Background entry \"${entry}\" has no dependencies`);\n }\n\n if (dependencies.js.size > 1) {\n throw new ManifestError(`Background entry \"${entry}\" has more than one dependency`);\n }\n\n const [js] = Array.from(dependencies.js);\n\n return {background: {service_worker: js}};\n }\n }\n\n protected buildAction(): Partial<ManifestV3> | undefined {\n if (this.popup) {\n const {path, icon, title} = this.popup;\n\n return {\n action: {\n default_title: title || this.name,\n default_popup: path,\n default_icon: this.getIconsByName(icon),\n },\n };\n } else if (this.hasExecuteActionCommand()) {\n return {\n action: {\n default_title: this.name,\n },\n };\n }\n }\n\n protected buildPermissions(): Partial<ManifestV3> | undefined {\n const permissions = Array.from(filterPermissionsForMV3(this.permissions));\n\n if (permissions.length > 0) {\n return {permissions};\n }\n }\n\n protected buildHostPermissions(): Partial<ManifestV3> | undefined {\n if (this.hostPermissions.size > 0) {\n return {host_permissions: [...filterHostPatterns(this.hostPermissions)]};\n }\n }\n\n protected buildWebAccessibleResources(): Partial<ManifestV3> | undefined {\n const resources: Array<{resources: string[]; matches: string[]}> = [...this.accessibleResources];\n\n for (const contentScript of this.contentScripts.values()) {\n const assets = this.dependencies.get(contentScript.entry)?.assets;\n\n if (assets && assets.size > 0) {\n resources.push({\n resources: Array.from(assets),\n matches: contentScript.matches || ContentScriptMatches,\n });\n }\n }\n\n if (resources.length > 0) {\n return {web_accessible_resources: resources};\n }\n }\n}\n","import ManifestV2 from \"./ManifestV2\";\nimport ManifestV3 from \"./ManifestV3\";\n\nimport {ManifestBuilder} from \"@typing/manifest\";\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default (config: ReadonlyConfig): ManifestBuilder => {\n const {manifestVersion, browser} = config;\n\n if (manifestVersion === 2) {\n return new ManifestV2(browser);\n }\n\n return new ManifestV3(browser);\n};\n","import {Configuration as RspackConfig, RspackPluginInstance} from \"@rspack/core\";\nimport {CleanWebpackPlugin} from \"clean-webpack-plugin\";\nimport {RsdoctorRspackPlugin} from \"@rsdoctor/rspack-plugin\";\nimport {merge as mergeConfig} from \"webpack-merge\";\n\nimport manifestFactory from \"../builders/manifest\";\nimport {processPluginHandler} from \"./plugin\";\n\nimport ManifestPlugin from \"@cli/bundler/plugins/ManifestPlugin\";\nimport WatchPlugin from \"@cli/bundler/plugins/WatchPlugin\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {Command} from \"@typing/app\";\n\nconst getConfigFromPlugins = async (rspack: RspackConfig, config: ReadonlyConfig): Promise<RspackConfig> => {\n let mergedConfig: RspackConfig = {};\n\n for await (const {result: pluginConfig} of processPluginHandler(config.plugins, \"bundler\", {\n rspack: mergeConfig(rspack, mergedConfig),\n config,\n })) {\n mergedConfig = mergeConfig(mergedConfig, pluginConfig);\n }\n\n return mergedConfig;\n};\n\nconst getConfigForManifest = async (config: ReadonlyConfig): Promise<RspackConfig> => {\n const manifest = manifestFactory(config);\n\n const update = () => Array.fromAsync(processPluginHandler(config.plugins, \"manifest\", {manifest, config}));\n\n await update();\n\n const plugins: RspackPluginInstance[] = [];\n\n if (config.command === Command.Watch) {\n plugins.push(\n new WatchPlugin(async () => {\n await update();\n })\n );\n }\n\n plugins.push(new ManifestPlugin(manifest));\n\n return {plugins};\n};\n\nexport default async (config: ReadonlyConfig): Promise<RspackConfig> => {\n let rspack: RspackConfig = {\n entry: {},\n mode: config.mode,\n cache: false,\n };\n\n // prettier-ignore\n rspack = mergeConfig(\n rspack,\n await getConfigFromPlugins(rspack, config),\n await getConfigForManifest(config)\n );\n\n if (config.debug) {\n rspack = mergeConfig(rspack, {\n stats: {\n errorDetails: true,\n },\n });\n }\n\n if (config.command == Command.Watch) {\n rspack = mergeConfig(rspack, {\n devtool: \"inline-source-map\",\n });\n }\n\n if (config.command == Command.Build) {\n rspack = mergeConfig(rspack, {\n plugins: [new CleanWebpackPlugin()],\n });\n\n if (config.analyze) {\n rspack = mergeConfig(rspack, {\n plugins: [\n new RsdoctorRspackPlugin({\n supports: {\n banner: true,\n parseBundle: true,\n generateTileGraph: true,\n },\n }),\n ],\n });\n }\n }\n\n return rspack;\n};\n","import {rspack} from \"@rspack/core\";\n\nimport {build, watch} from \"./command\";\n\nimport configResolver from \"@cli/resolvers/config\";\nimport bundlerResolver from \"@cli/resolvers/bundler\";\nimport {processPluginHandler} from \"@cli/resolvers/plugin\";\n\nimport {OptionalConfig, ReadonlyConfig} from \"@typing/config\";\nimport {Command} from \"@typing/app\";\n\nconst startup = async (config: ReadonlyConfig): Promise<void> => {\n await Array.fromAsync(processPluginHandler(config.plugins, \"startup\", {config}));\n};\n\nexport default async (config: OptionalConfig): Promise<void> => {\n const resolverConfig = await configResolver(config);\n\n await startup(resolverConfig);\n\n const rspackConfig = await bundlerResolver(resolverConfig);\n\n const compiler = rspack(rspackConfig);\n\n switch (resolverConfig.command) {\n case Command.Build:\n build(compiler);\n break;\n\n case Command.Watch:\n watch(compiler);\n break;\n\n default:\n console.error(\"Unknown command\");\n process.exit(1);\n }\n};\n","{\n \"name\": \"adnbn\",\n \"version\": \"0.2.3\",\n \"description\": \"Addon 💀 Bone - Cross-browser web extension framework with shared code base\",\n \"homepage\": \"https://github.com/addonbone/addonbone\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/addonbone/addonbone.git\"\n },\n \"keywords\": [\n \"addon\",\n \"extension\",\n \"browser\",\n \"chrome\",\n \"firefox\",\n \"edge\",\n \"opera\",\n \"safari\"\n ],\n \"author\": \"Addon Bone\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/addonbone/addonbone/issues\"\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./locale\": {\n \"types\": \"./dist/locale/index.d.ts\",\n \"import\": \"./dist/locale/index.js\",\n \"require\": \"./dist/locale/index.cjs\"\n },\n \"./locale/*\": {\n \"types\": \"./dist/locale/*/index.d.ts\",\n \"import\": \"./dist/locale/*/index.js\",\n \"require\": \"./dist/locale/*/index.cjs\"\n },\n \"./message\": {\n \"types\": \"./dist/message/index.d.ts\",\n \"import\": \"./dist/message/index.js\",\n \"require\": \"./dist/message/index.cjs\"\n },\n \"./message/*\": {\n \"types\": \"./dist/message/*/index.d.ts\",\n \"import\": \"./dist/message/*/index.js\",\n \"require\": \"./dist/message/*/index.cjs\"\n },\n \"./offscreen\": {\n \"types\": \"./dist/offscreen/index.d.ts\",\n \"import\": \"./dist/offscreen/index.js\",\n \"require\": \"./dist/offscreen/index.cjs\"\n },\n \"./storage\": {\n \"types\": \"./dist/storage/index.d.ts\",\n \"import\": \"./dist/storage/index.js\",\n \"require\": \"./dist/storage/index.cjs\"\n },\n \"./storage/*\": {\n \"types\": \"./dist/storage/*/index.d.ts\",\n \"import\": \"./dist/storage/*/index.js\",\n \"require\": \"./dist/storage/*/index.cjs\"\n },\n \"./service\": {\n \"types\": \"./dist/service/index.d.ts\",\n \"import\": \"./dist/service/index.js\",\n \"require\": \"./dist/service/index.cjs\"\n },\n \"./relay\": {\n \"types\": \"./dist/relay/index.d.ts\",\n \"import\": \"./dist/relay/index.js\",\n \"require\": \"./dist/relay/index.cjs\"\n },\n \"./entry/*\": {\n \"types\": \"./dist/entry/*/index.d.ts\",\n \"import\": \"./dist/entry/*/index.js\",\n \"require\": \"./dist/entry/*/index.cjs\"\n },\n \"./entry/content/*\": {\n \"types\": \"./dist/entry/content/*/index.d.ts\",\n \"import\": \"./dist/entry/content/*/index.js\",\n \"require\": \"./dist/entry/content/*/index.cjs\"\n },\n \"./entry/view/*\": {\n \"types\": \"./dist/entry/view/*/index.d.ts\",\n \"import\": \"./dist/entry/view/*/index.js\",\n \"require\": \"./dist/entry/view/*/index.cjs\"\n },\n \"./client-types\": {\n \"types\": \"./types/client.d.ts\"\n }\n },\n \"main\": \"./dist/index.js\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"files\": [\n \"bin\",\n \"dist\",\n \"types\"\n ],\n \"bin\": {\n \"adnbn\": \"bin/adnbn.js\"\n },\n \"scripts\": {\n \"adnbn\": \"tsx ./src/cli/index.ts\",\n \"build\": \"cross-env NODE_OPTIONS=--max-old-space-size=6046 tsup\",\n \"format\": \"prettier --write .\",\n \"test\": \"jest\",\n \"test:watch\": \"jest --watch\",\n \"test:offscreen\": \"jest --testPathPattern=Offscreen\",\n \"test:message\": \"jest --testPathPattern=Message\",\n \"test:storage\": \"jest --testPathPattern=Storage\",\n \"test:service\": \"jest --testPathPattern=Service\",\n \"test:relay\": \"jest --testPathPattern=Relay\",\n \"test:locale\": \"jest --testPathPattern=Locale\",\n \"test:entrypoint\": \"jest --testPathPattern=src/cli/entrypoint\"\n },\n \"devDependencies\": {\n \"@swc/core\": \"^1.11.7\",\n \"@testing-library/jest-dom\": \"^6.6.3\",\n \"@testing-library/react\": \"^16.3.0\",\n \"@types/jest\": \"^29.5.14\",\n \"@types/js-yaml\": \"^4.0.9\",\n \"@types/lodash\": \"^4.17.14\",\n \"@types/node\": \"^22.13.1\",\n \"@types/pluralize\": \"^0.0.33\",\n \"@types/validator\": \"^13.15.1\",\n \"cross-env\": \"^7.0.3\",\n \"dotenv\": \"^16.4.7\",\n \"esbuild-plugin-raw\": \"^0.1.8\",\n \"fs-extra\": \"^11.3.0\",\n \"jest\": \"^29.7.0\",\n \"jest-environment-jsdom\": \"^29.7.0\",\n \"jest-webextension-mock\": \"^4.0.0\",\n \"prettier\": \"^3.6.2\",\n \"ts-jest\": \"^29.3.1\",\n \"ts-node\": \"^10.9.2\",\n \"tsup\": \"^8.3.6\",\n \"tsx\": \"^4.19.2\",\n \"uglify-js\": \"^3.19.3\",\n \"utility-types\": \"^3.11.0\"\n },\n \"dependencies\": {\n \"@adnbn/browser\": \"^0.1.7\",\n \"@adnbn/inject-script\": \"^0.2.1\",\n \"@rsdoctor/rspack-plugin\": \"^1.0.2\",\n \"@rspack/cli\": \"^1.3.8\",\n \"@rspack/core\": \"^1.3.8\",\n \"@svgr/webpack\": \"^8.1.0\",\n \"@types/chrome\": \"^0.0.323\",\n \"c12\": \"^3.0.3\",\n \"cac\": \"^6.7.14\",\n \"clean-webpack-plugin\": \"^4.0.0\",\n \"consola\": \"^3.4.2\",\n \"css-loader\": \"^7.1.2\",\n \"debounce\": \"^2.2.0\",\n \"file-loader\": \"^6.2.0\",\n \"get-value\": \"^4.0.1\",\n \"html-rspack-tags-plugin\": \"^0.0.3\",\n \"js-yaml\": \"^4.1.0\",\n \"json-stringify-deterministic\": \"^1.0.12\",\n \"lodash\": \"^4.17.21\",\n \"mini-css-extract-plugin\": \"^2.9.2\",\n \"nanoid\": \"^5.1.4\",\n \"pluralize\": \"^8.0.0\",\n \"rspack-plugin-virtual-module\": \"^0.1.13\",\n \"sass\": \"^1.83.4\",\n \"sass-loader\": \"^16.0.4\",\n \"semver\": \"^7.7.2\",\n \"source-modifier-loader\": \"^1.0.2\",\n \"tsconfig-paths\": \"^4.2.0\",\n \"type-fest\": \"^4.37.0\",\n \"typescript\": \"^5.7.3\",\n \"validator\": \"^13.15.15\",\n \"webpack-merge\": \"^6.0.1\",\n \"zod\": \"^3.24.2\"\n },\n \"peerDependencies\": {\n \"@types/react\": \"*\",\n \"@types/react-dom\": \"*\",\n \"react\": \"^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc\",\n \"react-dom\": \"^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc\"\n },\n \"peerDependenciesMeta\": {\n \"@types/react\": {\n \"optional\": true\n },\n \"@types/react-dom\": {\n \"optional\": true\n }\n }\n}\n","import cac from \"cac\";\nimport {consola} from \"consola\";\n\nimport app from \"./builders/app\";\n\nimport {Command} from \"@typing/app\";\nimport {Browser} from \"@typing/browser\";\n\nimport {name, version} from \"../../package.json\";\n\nconst cli = cac(name);\n\ncli.option(\"--debug\", \"Enable debug mode\");\n\ncli.command(\"init\", \"Initialize a new project\").action(() => {\n consola.box(\"Coming soon...\");\n});\n\ncli.command(\"watch [root]\", \"Start watch mode\")\n .option(\"-m, --mode <mode>\", \"Set env mode\", {default: \"development\"})\n .option(\"-c, --config <config>\", \"Path to config file\")\n .option(\"-a, --app <app>\", \"Specify an app to run\", {default: \"myapp\"})\n .option(\"-b, --browser <browser>\", \"Specify a browser\")\n .option(\"--mv2\", \"Target manifest v2\")\n .action(async (root, options) => {\n try {\n await app({\n command: Command.Watch,\n mode: options.mode,\n debug: options.debug,\n app: options.app,\n browser: options.browser,\n manifestVersion: options.mv2 ? 2 : 3,\n inputDir: root,\n configFile: options.config,\n });\n } catch (e) {\n consola.error(e);\n }\n });\n\ncli.command(\"build [root]\", \"Build for production\")\n .option(\"-m, --mode <mode>\", \"Set env mode\", {default: \"production\"})\n .option(\"-c, --config <config>\", \"Path to config file\")\n .option(\"-a, --app <app>\", \"Specify an app to run\", {default: \"myapp\"})\n .option(\"-b, --browser <browser>\", \"Specify a browser\", {default: Browser.Chrome})\n .option(\"--mv2\", \"Target manifest v2\")\n .option(\"--analyze\", \"Visualize extension bundle\")\n .action(async (root, options) => {\n try {\n await app({\n command: Command.Build,\n mode: options.mode,\n debug: options.debug,\n app: options.app,\n browser: options.browser,\n manifestVersion: options.mv2 ? 2 : 3,\n inputDir: root,\n configFile: options.config,\n analyze: options.analyze,\n });\n } catch (e) {\n consola.error(e);\n }\n });\n\ncli.version(version);\ncli.help();\ncli.parse();\n"]}
|
|
1
|
+
{"version":3,"sources":["../../node_modules/dotenv/package.json","../../node_modules/dotenv/lib/main.js","../../src/cli/builders/app/command.ts","../../src/cli/resolvers/config.ts","../../src/main/plugin.ts","../../src/cli/bundler/plugins/EntrypointPlugin.ts","../../src/cli/bundler/plugins/GenerateJsonPlugin.ts","../../src/cli/utils/path.ts","../../src/cli/bundler/plugins/ManifestPlugin.ts","../../src/cli/bundler/plugins/ReplacePlugin.ts","../../src/cli/bundler/plugins/WatchPlugin.ts","../../src/types/app.ts","../../src/cli/bundler/utils/optimization.ts","../../src/cli/bundler/utils/output.ts","../../src/types/browser.ts","../../src/cli/plugins/asset.ts","background.ts?raw","command.ts?raw","content.ts?raw","transport.ts?raw","offscreen.ts?raw","offscreen.background.ts?raw","relay.ts?raw","view.ts?raw","../../src/cli/resolvers/path.ts","../../src/cli/entrypoint/finder/AbstractFinder.ts","../../src/cli/entrypoint/finder/AbstractOptionsFinder.ts","../../src/types/entrypoint.ts","../../src/cli/entrypoint/finder/AbstractEntrypointFinder.ts","../../src/cli/entrypoint/finder/AbstractPluginFinder.ts","../../src/cli/entrypoint/name/NameGenerator.ts","../../src/cli/entrypoint/name/InlineNameGenerator.ts","../../src/cli/entrypoint/finder/AbstractViewFinder.ts","../../src/cli/resolvers/plugin.ts","../../src/cli/entrypoint/finder/PluginFinder.ts","../../src/cli/entrypoint/file/resolvers/TsResolver.ts","../../src/cli/entrypoint/file/resolvers/ImportResolver.ts","../../src/types/content.ts","../../src/types/offscreen.ts","../../src/cli/entrypoint/file/injectors/core.ts","../../src/cli/entrypoint/file/injectors/index.ts","../../src/cli/entrypoint/file/SourceFile.ts","../../src/cli/entrypoint/file/OptionFile.ts","../../src/cli/entrypoint/file/parsers/AbstractParser.ts","../../src/cli/entrypoint/file/parsers/FunctionParser.ts","../../src/cli/entrypoint/file/parsers/JSDocParser.ts","../../src/cli/entrypoint/file/parsers/helpers/memberFilters.ts","../../src/cli/entrypoint/file/parsers/ObjectParser.ts","../../src/cli/entrypoint/file/parsers/NodeFinder.ts","../../src/cli/entrypoint/file/parsers/TypeResolver.ts","../../src/cli/entrypoint/file/parsers/SignatureBuilder.ts","../../src/cli/entrypoint/file/parsers/ClassParser.ts","../../src/cli/entrypoint/file/ExpressionFile.ts","../../src/cli/entrypoint/parser/AbstractParser.ts","../../src/cli/entrypoint/parser/BackgroundParser.ts","../../src/types/locale.ts","../../src/locale/utils.ts","../../src/types/command.ts","../../src/cli/entrypoint/parser/CommandParser.ts","../../src/cli/entrypoint/parser/ContentParser.ts","../../src/cli/entrypoint/parser/ViewParser.ts","../../src/cli/entrypoint/parser/PageParser.ts","../../src/cli/entrypoint/parser/PopupParser.ts","../../src/cli/entrypoint/parser/RelayParser.ts","../../src/cli/entrypoint/parser/ServiceParser.ts","../../src/cli/entrypoint/parser/SidebarParser.ts","../../src/cli/entrypoint/parser/OffscreenParser.ts","../../src/cli/entrypoint/finder/BackgroundFinder.ts","../../src/cli/entrypoint/finder/CommandFinder.ts","../../src/cli/entrypoint/finder/ContentFinder.ts","../../src/cli/entrypoint/finder/AbstractAssetFinder.ts","../../src/cli/entrypoint/finder/AssetPluginFinder.ts","../../src/types/icon.ts","../../src/cli/entrypoint/finder/IconFinder.ts","../../src/cli/builders/locale/LocaleValidator.ts","../../src/cli/builders/locale/LocaleBuilder.ts","../../src/cli/builders/locale/index.ts","../../src/cli/entrypoint/finder/LocaleFinder.ts","../../src/cli/entrypoint/finder/AbstractTransportFinder.ts","../../src/cli/entrypoint/finder/OffscreenFinder.ts","../../src/cli/entrypoint/finder/OffscreenViewFinder.ts","../../src/cli/entrypoint/finder/PageFinder.ts","../../src/cli/entrypoint/finder/PopupFinder.ts","../../src/cli/entrypoint/finder/RelayFinder.ts","../../src/cli/entrypoint/finder/ServiceFinder.ts","../../src/cli/entrypoint/finder/SidebarFinder.ts","../../src/cli/entrypoint/utils/file.ts","../../src/cli/virtual/index.ts","../../src/types/background.ts","../../src/cli/plugins/background/BackgroundEntry.ts","../../src/cli/plugins/background/Background.ts","../../src/cli/plugins/background/BackgroundManifest.ts","../../src/cli/plugins/background/Command.ts","../../src/cli/plugins/background/Service.ts","../../src/cli/plugins/typescript/FileBuilder.ts","../../src/cli/plugins/typescript/TypescriptConfig.ts","transport.d.ts?raw","../../src/cli/plugins/typescript/declaration/transport/TransportDeclaration.ts","../../src/cli/plugins/typescript/declaration/VendorDeclaration.ts","../../src/cli/plugins/typescript/index.ts","../../src/cli/plugins/background/ServiceDeclaration.ts","../../src/cli/plugins/background/index.ts","../../src/cli/plugins/content/utils.ts","../../src/cli/plugins/content/ContentName.ts","../../src/cli/plugins/content/ContentManager.ts","../../src/cli/plugins/content/ContentDriver.ts","../../src/cli/plugins/content/Content.ts","../../src/cli/plugins/content/Relay.ts","../../src/cli/plugins/content/RelayDeclaration.ts","../../src/cli/plugins/content/index.ts","../../src/cli/plugins/dotenv/utils.ts","../../src/cli/plugins/dotenv/index.ts","../../src/cli/plugins/html.ts","../../src/cli/plugins/optimization.ts","../../src/cli/plugins/output.ts","../../src/cli/plugins/icon/Icon.ts","icon.d.ts?raw","../../src/cli/plugins/icon/declaration/IconDeclaration.ts","../../src/cli/plugins/icon/index.ts","../../src/cli/plugins/locale/Locale.ts","locale.d.ts?raw","../../src/cli/plugins/locale/declaration/LocaleDeclaration.ts","../../src/cli/plugins/locale/index.ts","../../src/main/env.ts","../../src/cli/plugins/meta/AbstractMeta.ts","../../src/cli/plugins/meta/Author.ts","../../src/cli/plugins/meta/Email.ts","../../src/cli/plugins/meta/Homepage.ts","../../src/types/manifest.ts","../../src/cli/plugins/meta/Incognito.ts","../../src/cli/plugins/meta/index.ts","../../src/cli/plugins/view/View.ts","../../src/cli/plugins/view/index.ts","../../src/cli/plugins/offscreen/Offscreen.ts","../../src/cli/plugins/offscreen/OffscreenDeclaration.ts","../../src/cli/plugins/offscreen/index.ts","../../src/cli/plugins/page/Page.ts","page.d.ts?raw","../../src/cli/plugins/page/declaration/PageDeclaration.ts","../../src/cli/plugins/page/index.ts","../../src/cli/plugins/popup/Popup.ts","popup.d.ts?raw","../../src/cli/plugins/popup/declaration/PopupDeclaration.ts","../../src/cli/plugins/popup/index.ts","../../src/cli/plugins/public.ts","../../src/cli/plugins/sidebar/Sidebar.ts","sidebar.d.ts?raw","../../src/cli/plugins/sidebar/declaration/SidebarDeclaration.ts","../../src/types/sidebar.ts","../../src/cli/plugins/sidebar/index.ts","../../src/cli/plugins/react.ts","../../src/cli/plugins/style.ts","../../src/cli/plugins/version/AbstractVersion.ts","../../src/cli/plugins/version/AddonVersion.ts","../../src/cli/plugins/version/BrowserMinimumVersion.ts","../../src/cli/plugins/version/index.ts","../../src/cli/builders/manifest/ManifestBase.ts","../../src/cli/builders/manifest/utils.ts","../../src/cli/builders/manifest/ManifestV2.ts","../../src/cli/builders/manifest/ManifestV3.ts","../../src/cli/builders/manifest/index.ts","../../src/cli/resolvers/bundler.ts","../../src/cli/builders/app/index.ts","../../package.json","../../src/cli/index.ts"],"names":["fs","path","version","import_dotenv","name","VirtualModulesPlugin","_","compiler","modules","Compilation","sources","rspack","Mode","Command","Browser","pluralize","createMatchPath","ts","ContentScriptAppend","OffscreenReason","_a","_b","_c","definition","aliasDecl","sf","members","AbstractParser","z","Language","filename","substitutions","yaml","keys","background_default","stringify","options","content_default","createHash","key","DefinePlugin","HtmlRspackPlugin","HtmlRspackTagsPlugin","CopyRspackPlugin","locale_default","isEmail","isURL","ManifestIncognito","view_default","offscreen_default","build","RspackVirtualModulePlugin","CssExtractRspackPlugin","semver","existsSync","loadConfig","dotenv","commands","resources","mergeConfig","RsdoctorRspackPlugin","cac","consola"],"mappings":"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","file":"index.cjs","sourcesContent":["{\n \"name\": \"dotenv\",\n \"version\": \"16.4.7\",\n \"description\": \"Loads environment variables from .env file\",\n \"main\": \"lib/main.js\",\n \"types\": \"lib/main.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./lib/main.d.ts\",\n \"require\": \"./lib/main.js\",\n \"default\": \"./lib/main.js\"\n },\n \"./config\": \"./config.js\",\n \"./config.js\": \"./config.js\",\n \"./lib/env-options\": \"./lib/env-options.js\",\n \"./lib/env-options.js\": \"./lib/env-options.js\",\n \"./lib/cli-options\": \"./lib/cli-options.js\",\n \"./lib/cli-options.js\": \"./lib/cli-options.js\",\n \"./package.json\": \"./package.json\"\n },\n \"scripts\": {\n \"dts-check\": \"tsc --project tests/types/tsconfig.json\",\n \"lint\": \"standard\",\n \"pretest\": \"npm run lint && npm run dts-check\",\n \"test\": \"tap run --allow-empty-coverage --disable-coverage --timeout=60000\",\n \"test:coverage\": \"tap run --show-full-coverage --timeout=60000 --coverage-report=lcov\",\n \"prerelease\": \"npm test\",\n \"release\": \"standard-version\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git://github.com/motdotla/dotenv.git\"\n },\n \"funding\": \"https://dotenvx.com\",\n \"keywords\": [\n \"dotenv\",\n \"env\",\n \".env\",\n \"environment\",\n \"variables\",\n \"config\",\n \"settings\"\n ],\n \"readmeFilename\": \"README.md\",\n \"license\": \"BSD-2-Clause\",\n \"devDependencies\": {\n \"@types/node\": \"^18.11.3\",\n \"decache\": \"^4.6.2\",\n \"sinon\": \"^14.0.1\",\n \"standard\": \"^17.0.0\",\n \"standard-version\": \"^9.5.0\",\n \"tap\": \"^19.2.0\",\n \"typescript\": \"^4.8.4\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"browser\": {\n \"fs\": false\n }\n}\n","const fs = require('fs')\nconst path = require('path')\nconst os = require('os')\nconst crypto = require('crypto')\nconst packageJson = require('../package.json')\n\nconst version = packageJson.version\n\nconst LINE = /(?:^|^)\\s*(?:export\\s+)?([\\w.-]+)(?:\\s*=\\s*?|:\\s+?)(\\s*'(?:\\\\'|[^'])*'|\\s*\"(?:\\\\\"|[^\"])*\"|\\s*`(?:\\\\`|[^`])*`|[^#\\r\\n]+)?\\s*(?:#.*)?(?:$|$)/mg\n\n// Parse src into an Object\nfunction parse (src) {\n const obj = {}\n\n // Convert buffer to string\n let lines = src.toString()\n\n // Convert line breaks to same format\n lines = lines.replace(/\\r\\n?/mg, '\\n')\n\n let match\n while ((match = LINE.exec(lines)) != null) {\n const key = match[1]\n\n // Default undefined or null to empty string\n let value = (match[2] || '')\n\n // Remove whitespace\n value = value.trim()\n\n // Check if double quoted\n const maybeQuote = value[0]\n\n // Remove surrounding quotes\n value = value.replace(/^(['\"`])([\\s\\S]*)\\1$/mg, '$2')\n\n // Expand newlines if double quoted\n if (maybeQuote === '\"') {\n value = value.replace(/\\\\n/g, '\\n')\n value = value.replace(/\\\\r/g, '\\r')\n }\n\n // Add to object\n obj[key] = value\n }\n\n return obj\n}\n\nfunction _parseVault (options) {\n const vaultPath = _vaultPath(options)\n\n // Parse .env.vault\n const result = DotenvModule.configDotenv({ path: vaultPath })\n if (!result.parsed) {\n const err = new Error(`MISSING_DATA: Cannot parse ${vaultPath} for an unknown reason`)\n err.code = 'MISSING_DATA'\n throw err\n }\n\n // handle scenario for comma separated keys - for use with key rotation\n // example: DOTENV_KEY=\"dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=prod,dotenv://:key_7890@dotenvx.com/vault/.env.vault?environment=prod\"\n const keys = _dotenvKey(options).split(',')\n const length = keys.length\n\n let decrypted\n for (let i = 0; i < length; i++) {\n try {\n // Get full key\n const key = keys[i].trim()\n\n // Get instructions for decrypt\n const attrs = _instructions(result, key)\n\n // Decrypt\n decrypted = DotenvModule.decrypt(attrs.ciphertext, attrs.key)\n\n break\n } catch (error) {\n // last key\n if (i + 1 >= length) {\n throw error\n }\n // try next key\n }\n }\n\n // Parse decrypted .env string\n return DotenvModule.parse(decrypted)\n}\n\nfunction _log (message) {\n console.log(`[dotenv@${version}][INFO] ${message}`)\n}\n\nfunction _warn (message) {\n console.log(`[dotenv@${version}][WARN] ${message}`)\n}\n\nfunction _debug (message) {\n console.log(`[dotenv@${version}][DEBUG] ${message}`)\n}\n\nfunction _dotenvKey (options) {\n // prioritize developer directly setting options.DOTENV_KEY\n if (options && options.DOTENV_KEY && options.DOTENV_KEY.length > 0) {\n return options.DOTENV_KEY\n }\n\n // secondary infra already contains a DOTENV_KEY environment variable\n if (process.env.DOTENV_KEY && process.env.DOTENV_KEY.length > 0) {\n return process.env.DOTENV_KEY\n }\n\n // fallback to empty string\n return ''\n}\n\nfunction _instructions (result, dotenvKey) {\n // Parse DOTENV_KEY. Format is a URI\n let uri\n try {\n uri = new URL(dotenvKey)\n } catch (error) {\n if (error.code === 'ERR_INVALID_URL') {\n const err = new Error('INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n throw error\n }\n\n // Get decrypt key\n const key = uri.password\n if (!key) {\n const err = new Error('INVALID_DOTENV_KEY: Missing key part')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n // Get environment\n const environment = uri.searchParams.get('environment')\n if (!environment) {\n const err = new Error('INVALID_DOTENV_KEY: Missing environment part')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n // Get ciphertext payload\n const environmentKey = `DOTENV_VAULT_${environment.toUpperCase()}`\n const ciphertext = result.parsed[environmentKey] // DOTENV_VAULT_PRODUCTION\n if (!ciphertext) {\n const err = new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${environmentKey} in your .env.vault file.`)\n err.code = 'NOT_FOUND_DOTENV_ENVIRONMENT'\n throw err\n }\n\n return { ciphertext, key }\n}\n\nfunction _vaultPath (options) {\n let possibleVaultPath = null\n\n if (options && options.path && options.path.length > 0) {\n if (Array.isArray(options.path)) {\n for (const filepath of options.path) {\n if (fs.existsSync(filepath)) {\n possibleVaultPath = filepath.endsWith('.vault') ? filepath : `${filepath}.vault`\n }\n }\n } else {\n possibleVaultPath = options.path.endsWith('.vault') ? options.path : `${options.path}.vault`\n }\n } else {\n possibleVaultPath = path.resolve(process.cwd(), '.env.vault')\n }\n\n if (fs.existsSync(possibleVaultPath)) {\n return possibleVaultPath\n }\n\n return null\n}\n\nfunction _resolveHome (envPath) {\n return envPath[0] === '~' ? path.join(os.homedir(), envPath.slice(1)) : envPath\n}\n\nfunction _configVault (options) {\n _log('Loading env from encrypted .env.vault')\n\n const parsed = DotenvModule._parseVault(options)\n\n let processEnv = process.env\n if (options && options.processEnv != null) {\n processEnv = options.processEnv\n }\n\n DotenvModule.populate(processEnv, parsed, options)\n\n return { parsed }\n}\n\nfunction configDotenv (options) {\n const dotenvPath = path.resolve(process.cwd(), '.env')\n let encoding = 'utf8'\n const debug = Boolean(options && options.debug)\n\n if (options && options.encoding) {\n encoding = options.encoding\n } else {\n if (debug) {\n _debug('No encoding is specified. UTF-8 is used by default')\n }\n }\n\n let optionPaths = [dotenvPath] // default, look for .env\n if (options && options.path) {\n if (!Array.isArray(options.path)) {\n optionPaths = [_resolveHome(options.path)]\n } else {\n optionPaths = [] // reset default\n for (const filepath of options.path) {\n optionPaths.push(_resolveHome(filepath))\n }\n }\n }\n\n // Build the parsed data in a temporary object (because we need to return it). Once we have the final\n // parsed data, we will combine it with process.env (or options.processEnv if provided).\n let lastError\n const parsedAll = {}\n for (const path of optionPaths) {\n try {\n // Specifying an encoding returns a string instead of a buffer\n const parsed = DotenvModule.parse(fs.readFileSync(path, { encoding }))\n\n DotenvModule.populate(parsedAll, parsed, options)\n } catch (e) {\n if (debug) {\n _debug(`Failed to load ${path} ${e.message}`)\n }\n lastError = e\n }\n }\n\n let processEnv = process.env\n if (options && options.processEnv != null) {\n processEnv = options.processEnv\n }\n\n DotenvModule.populate(processEnv, parsedAll, options)\n\n if (lastError) {\n return { parsed: parsedAll, error: lastError }\n } else {\n return { parsed: parsedAll }\n }\n}\n\n// Populates process.env from .env file\nfunction config (options) {\n // fallback to original dotenv if DOTENV_KEY is not set\n if (_dotenvKey(options).length === 0) {\n return DotenvModule.configDotenv(options)\n }\n\n const vaultPath = _vaultPath(options)\n\n // dotenvKey exists but .env.vault file does not exist\n if (!vaultPath) {\n _warn(`You set DOTENV_KEY but you are missing a .env.vault file at ${vaultPath}. Did you forget to build it?`)\n\n return DotenvModule.configDotenv(options)\n }\n\n return DotenvModule._configVault(options)\n}\n\nfunction decrypt (encrypted, keyStr) {\n const key = Buffer.from(keyStr.slice(-64), 'hex')\n let ciphertext = Buffer.from(encrypted, 'base64')\n\n const nonce = ciphertext.subarray(0, 12)\n const authTag = ciphertext.subarray(-16)\n ciphertext = ciphertext.subarray(12, -16)\n\n try {\n const aesgcm = crypto.createDecipheriv('aes-256-gcm', key, nonce)\n aesgcm.setAuthTag(authTag)\n return `${aesgcm.update(ciphertext)}${aesgcm.final()}`\n } catch (error) {\n const isRange = error instanceof RangeError\n const invalidKeyLength = error.message === 'Invalid key length'\n const decryptionFailed = error.message === 'Unsupported state or unable to authenticate data'\n\n if (isRange || invalidKeyLength) {\n const err = new Error('INVALID_DOTENV_KEY: It must be 64 characters long (or more)')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n } else if (decryptionFailed) {\n const err = new Error('DECRYPTION_FAILED: Please check your DOTENV_KEY')\n err.code = 'DECRYPTION_FAILED'\n throw err\n } else {\n throw error\n }\n }\n}\n\n// Populate process.env with parsed values\nfunction populate (processEnv, parsed, options = {}) {\n const debug = Boolean(options && options.debug)\n const override = Boolean(options && options.override)\n\n if (typeof parsed !== 'object') {\n const err = new Error('OBJECT_REQUIRED: Please check the processEnv argument being passed to populate')\n err.code = 'OBJECT_REQUIRED'\n throw err\n }\n\n // Set process.env\n for (const key of Object.keys(parsed)) {\n if (Object.prototype.hasOwnProperty.call(processEnv, key)) {\n if (override === true) {\n processEnv[key] = parsed[key]\n }\n\n if (debug) {\n if (override === true) {\n _debug(`\"${key}\" is already defined and WAS overwritten`)\n } else {\n _debug(`\"${key}\" is already defined and was NOT overwritten`)\n }\n }\n } else {\n processEnv[key] = parsed[key]\n }\n }\n}\n\nconst DotenvModule = {\n configDotenv,\n _configVault,\n _parseVault,\n config,\n decrypt,\n parse,\n populate\n}\n\nmodule.exports.configDotenv = DotenvModule.configDotenv\nmodule.exports._configVault = DotenvModule._configVault\nmodule.exports._parseVault = DotenvModule._parseVault\nmodule.exports.config = DotenvModule.config\nmodule.exports.decrypt = DotenvModule.decrypt\nmodule.exports.parse = DotenvModule.parse\nmodule.exports.populate = DotenvModule.populate\n\nmodule.exports = DotenvModule\n","import {Compiler} from \"@rspack/core\";\n\nexport const build = (compiler: Compiler) => {\n compiler.run((err, stats) => {\n if (err) {\n console.error(\"Rspack compilation error:\", err);\n process.exit(1);\n }\n\n if (stats?.hasErrors()) {\n console.error(\n stats.toString({\n colors: true,\n errors: true,\n })\n );\n\n process.exit(1);\n }\n\n console.log(stats?.toString({colors: true}));\n\n compiler.close(closeErr => {\n if (closeErr) {\n console.error(\"Rspack close error:\", closeErr);\n process.exit(1);\n }\n });\n });\n};\n\nexport const watch = (compiler: Compiler) => {\n const watching = compiler.watch(\n {\n aggregateTimeout: 300,\n ignored: /node_modules/,\n },\n (err, stats) => {\n if (err) {\n console.error(\"Rspack watch error:\", err);\n process.exit(1);\n }\n\n if (stats?.hasErrors()) {\n console.error(\n stats.toString({\n colors: true,\n errors: true,\n })\n );\n\n return;\n }\n\n console.log(stats?.toString({colors: true}));\n }\n );\n\n process.on(\"SIGINT\", () => {\n watching.close(() => {\n console.log(\"Rspack watch mode stopped\");\n process.exit(0);\n });\n });\n};\n","import {existsSync} from \"fs\";\nimport dotenv, {type DotenvParseOutput} from \"dotenv\";\nimport {loadConfig} from \"c12\";\nimport _ from \"lodash\";\n\nimport {\n assetPlugin,\n backgroundPlugin,\n contentPlugin,\n dotenvPlugin,\n htmlPlugin,\n iconPlugin,\n localePlugin,\n metaPlugin,\n offscreenPlugin,\n optimizationPlugin,\n outputPlugin,\n pagePlugin,\n popupPlugin,\n publicPlugin,\n reactPlugin,\n sidebarPlugin,\n stylePlugin,\n typescriptPlugin,\n versionPlugin,\n viewPlugin,\n} from \"../plugins\";\n\nimport {getAppPath, getAppSourcePath, getConfigFile, getInputPath} from \"../resolvers/path\";\n\nimport {Config, OptionalConfig, ReadonlyConfig, UserConfig} from \"@typing/config\";\nimport {Command, Mode} from \"@typing/app\";\nimport {Browser} from \"@typing/browser\";\nimport {Plugin} from \"@typing/plugin\";\nimport {ManifestVersion} from \"@typing/manifest\";\n\nconst getUserConfig = async (config: ReadonlyConfig): Promise<UserConfig> => {\n const configFilePath = getConfigFile(config);\n\n if (existsSync(configFilePath)) {\n const {config: userConfig} = await loadConfig<UserConfig>({\n configFile: configFilePath,\n dotenv: true,\n });\n\n if (config.debug) {\n console.log(\"Loaded user config:\", configFilePath);\n }\n\n return userConfig || {};\n } else if (config.debug) {\n console.warn(\"Config file not found:\", configFilePath);\n }\n\n return {};\n};\n\nconst validateConfig = (config: ReadonlyConfig): ReadonlyConfig => {\n const {\n outputDir,\n srcDir,\n sharedDir,\n appsDir,\n appSrcDir,\n jsDir,\n cssDir,\n assetsDir,\n htmlDir,\n publicDir,\n locale,\n icon,\n } = config;\n\n if (\n [\n outputDir,\n srcDir,\n sharedDir,\n appsDir,\n appSrcDir,\n jsDir,\n cssDir,\n assetsDir,\n htmlDir,\n publicDir,\n locale.dir,\n icon.outputDir,\n icon.sourceDir,\n ]\n .filter(dir => _.isString(dir))\n .some(dir => dir.includes(\"..\"))\n ) {\n throw new Error('Directory paths cannot contain relative paths (\"..\") for security reasons.');\n }\n\n if (appsDir === sharedDir) {\n throw new Error(\"Apps directory (appsDir) and shared directory (sharedDir) cannot be the same.\");\n }\n\n if (srcDir === outputDir) {\n throw new Error(\"Source directory (srcDir) and destination directory (outputDir) cannot be the same.\");\n }\n\n if (srcDir === \".\") {\n throw new Error('Source directory cannot be the root directory (\".\") for security reasons.');\n }\n\n if (publicDir === \".\" || [srcDir, outputDir, appSrcDir].includes(publicDir)) {\n throw new Error(\n 'Public directory cannot be the root directory (\".\") or intersect with other root directories for security reasons.'\n );\n }\n\n return config;\n};\n\nconst updateLocalDotenv = (config: ReadonlyConfig): DotenvParseOutput => {\n const {mode, app, browser, manifestVersion} = config;\n\n const localVars: DotenvParseOutput = {\n APP: app,\n BROWSER: browser,\n MODE: mode,\n MANIFEST_VERSION: String(manifestVersion),\n };\n\n Object.assign(process.env, localVars);\n\n return localVars;\n};\n\nconst loadDotenv = (config: ReadonlyConfig): DotenvParseOutput => {\n const {mode, browser} = config;\n\n const preset = [\n `.env.${mode}.${browser}.local`,\n `.env.${mode}.${browser}`,\n `.env.${browser}.local`,\n `.env.${browser}`,\n `.env.${mode}.local`,\n `.env.${mode}`,\n `.env.local`,\n `.env`,\n ];\n\n const appSourcePaths = preset.map(file => getAppSourcePath(config, file));\n const appPaths = preset.map(file => getAppPath(config, file));\n const rootPaths = preset.map(file => getInputPath(config, file));\n\n const paths = [...appSourcePaths, ...appPaths, ...rootPaths];\n\n const {parsed: fileVars = {}} = dotenv.config({path: paths});\n\n return {...fileVars, ...updateLocalDotenv(config)};\n};\n\nexport default async (config: OptionalConfig): Promise<Config> => {\n let {\n command = Command.Build,\n debug = false,\n configFile = \"adnbn.config.ts\",\n browser = Browser.Chrome,\n app = \"myapp\",\n version = \"VERSION\",\n minimumVersion = \"MINIMUM_VERSION\",\n author = undefined,\n email = \"EMAIL\",\n homepage = \"HOMEPAGE\",\n incognito,\n inputDir = \".\",\n outputDir = \"dist\",\n srcDir = \"src\",\n sharedDir = \"shared\",\n appsDir = \"apps\",\n appSrcDir = \".\",\n jsDir = \"js\",\n cssDir = \"css\",\n assetsDir = \"assets\",\n publicDir = \"public\",\n htmlDir = \".\",\n html = [],\n env = {},\n icon = {},\n locale = {},\n manifestVersion = (new Set<Browser>([Browser.Safari]).has(browser) ? 2 : 3) as ManifestVersion,\n mode = Mode.Development,\n analyze = false,\n plugins = [],\n mergeBackground = false,\n mergeCommands = false,\n mergeContentScripts = false,\n concatContentScripts = true,\n mergeStyles = true,\n mergeIcons = false,\n mergeLocales = true,\n mergePages = false,\n mergePopup = false,\n mergePublic = false,\n multiplePopup = false,\n mergeSidebar = false,\n multipleSidebar = false,\n mergeRelay = false,\n mergeService = false,\n mergeOffscreen = false,\n commonChunks = true,\n assetsFilename = mode === Mode.Production && command === Command.Build && !debug\n ? \"[contenthash:4][ext]\"\n : \"[name]-[contenthash:4][ext]\",\n jsFilename = mode === Mode.Production && command === Command.Build && !debug\n ? \"[contenthash:5].js\"\n : \"[name].js\",\n cssFilename = mode === Mode.Production && command === Command.Build && !debug\n ? \"[contenthash:5].css\"\n : \"[name].css\",\n cssIdentName = mode === Mode.Production && command === Command.Build && !debug\n ? \"[app]-[hash:base64:5]\"\n : \"[local]-[hash:base64:5]\",\n } = config;\n\n let resolvedConfig: Config = {\n command,\n debug,\n mode,\n browser,\n app,\n version,\n minimumVersion,\n email,\n author,\n homepage,\n incognito,\n manifestVersion,\n inputDir,\n outputDir,\n srcDir,\n sharedDir,\n appsDir,\n appSrcDir,\n jsDir,\n cssDir,\n assetsDir,\n publicDir,\n htmlDir,\n html,\n env,\n icon,\n locale,\n plugins,\n analyze,\n configFile,\n mergeBackground,\n mergeCommands,\n mergeContentScripts,\n concatContentScripts,\n mergeStyles,\n mergeIcons,\n mergeLocales,\n mergePages,\n mergePopup,\n mergePublic,\n multiplePopup,\n mergeSidebar,\n multipleSidebar,\n mergeRelay,\n mergeService,\n mergeOffscreen,\n commonChunks,\n assetsFilename,\n jsFilename,\n cssFilename,\n cssIdentName,\n };\n\n let vars = loadDotenv(resolvedConfig);\n\n const {plugins: userPlugins = [], ...userConfig} = await getUserConfig(resolvedConfig);\n\n resolvedConfig = validateConfig({...resolvedConfig, ...userConfig});\n\n vars = {...vars, ...loadDotenv(resolvedConfig)};\n\n const corePlugins: Plugin[] = [\n dotenvPlugin(vars),\n outputPlugin(),\n optimizationPlugin(),\n typescriptPlugin(),\n reactPlugin(),\n iconPlugin(),\n assetPlugin(),\n stylePlugin(),\n localePlugin(),\n metaPlugin(),\n contentPlugin(),\n backgroundPlugin(),\n popupPlugin(),\n publicPlugin(),\n sidebarPlugin(),\n offscreenPlugin(),\n pagePlugin(),\n viewPlugin(),\n htmlPlugin(),\n versionPlugin(),\n ];\n\n return {\n ...resolvedConfig,\n plugins: [...plugins, ...userPlugins, ...corePlugins],\n };\n};\n","import {Plugin, PluginDefinition} from \"@typing/plugin\";\n\nexport type {Plugin, PluginDefinition};\n\nexport function definePlugin<T extends any[] = []>(plugin: PluginDefinition<T>): PluginDefinition<T> {\n return plugin;\n}\n","import _ from \"lodash\";\nimport path from \"path\";\n\nimport {Compiler, EntryNormalized} from \"@rspack/core\";\nimport VirtualModulesPlugin from \"rspack-plugin-virtual-module\";\n\nimport {EntrypointEntries, EntrypointFile} from \"@typing/entrypoint\";\n\nexport type EntrypointPluginTemplate = (file: EntrypointFile) => string;\n\nexport type EntrypointPluginUpdate = (files: ReadonlySet<string>) => Promise<EntrypointEntries>;\n\nexport interface EntrypointPluginModule {\n /**\n * Virtual module name, used in the rspack entry and virtual module.\n */\n name: string;\n\n /**\n * Virtual module content.\n */\n module: string;\n}\n\nexport type EntrypointPluginModules = Map<EntrypointFile, EntrypointPluginModule>;\n\nexport type EntrypointPluginEntryModules = Map<string, EntrypointPluginModules>;\n\nexport default class EntrypointPlugin {\n private readonly pluginName: string = \"EntrypointPlugin\";\n\n private _plugin?: VirtualModulesPlugin;\n private _modules?: EntrypointPluginEntryModules;\n\n protected template?: EntrypointPluginTemplate;\n protected update?: EntrypointPluginUpdate;\n\n public static filename(file: EntrypointFile): string {\n let name = file.file;\n\n if (file.external) {\n const {ext} = path.parse(name);\n name = file.import + ext;\n }\n\n return path.join(\"virtual\", name);\n }\n\n protected get plugin(): VirtualModulesPlugin {\n if (this._plugin) {\n return this._plugin;\n }\n\n const modules = Object.fromEntries(this.getModuleContents(this.modules));\n\n return (this._plugin = new VirtualModulesPlugin(modules, \"entrypoint\"));\n }\n\n protected get modules(): EntrypointPluginEntryModules {\n return (this._modules ??= this.createModules(this.entries));\n }\n\n protected get watchFiles(): ReadonlySet<string> {\n const files = Array.from(this.modules.values())\n .flatMap(modules => Array.from(modules.keys()))\n .filter(({external}) => !external)\n .map(({file}) => file);\n\n return new Set(files);\n }\n\n public static from(entries: EntrypointEntries): EntrypointPlugin {\n return new EntrypointPlugin(entries);\n }\n\n constructor(private readonly entries: EntrypointEntries = new Map()) {}\n\n public virtual(template: EntrypointPluginTemplate): this {\n this.template = template;\n\n return this;\n }\n\n public watch(update: EntrypointPluginUpdate): this {\n this.update = update;\n\n return this;\n }\n\n public apply(compiler: Compiler): void {\n this.plugin.apply(compiler);\n\n compiler.hooks.entryOption.tap(this.pluginName, (_, entry) => {\n this.hookEntryOption(entry);\n });\n\n if (this.update) {\n compiler.hooks.watchRun.tapAsync(this.pluginName, (compiler, callback) => {\n this.hookWatchRun(compiler)\n .then(() => callback())\n .catch(callback);\n });\n }\n }\n\n protected hookEntryOption(entry: EntryNormalized): void {\n if (_.isPlainObject(entry)) {\n this.modules.entries().forEach(([name, modules]) => {\n let currentFiles = structuredClone(entry[name] ?? []);\n\n if (\"import\" in currentFiles) {\n currentFiles = currentFiles.import;\n }\n\n currentFiles.push(...Array.from(modules.values(), ({name}) => name));\n\n entry[name] = {\n import: _.uniq(currentFiles),\n };\n });\n } else {\n throw new Error(\"EntrypointPlugin: entry is not an object\");\n }\n }\n\n protected async hookWatchRun(compiler: Compiler): Promise<void> {\n const {modifiedFiles = new Set()} = compiler;\n\n const watchFiles = this.watchFiles;\n\n const needUpdate = Array.from(modifiedFiles).some(file => {\n if (path.isAbsolute(file)) {\n file = path.relative(compiler.context, file);\n }\n\n return watchFiles.has(file);\n });\n\n if (!needUpdate) {\n return;\n }\n\n const updatedEntries = await this.update!(modifiedFiles);\n\n const updatedModules = this.createModules(updatedEntries);\n\n const currentContents = this.getModuleContents(this.modules);\n const updatedContents = this.getModuleContents(updatedModules);\n\n const removedContents = new Map(Array.from(currentContents).filter(entry => !updatedContents.has(entry[0])));\n\n const addedContents = new Map(Array.from(updatedContents).filter(entry => !currentContents.has(entry[0])));\n\n if (removedContents.size > 0 || addedContents.size > 0) {\n removedContents.keys().forEach(name => {\n this.plugin.writeModule(name, \"\");\n });\n\n addedContents.forEach((content, name) => {\n this.plugin.writeModule(name, content);\n });\n\n updatedModules.entries().forEach(([name, modules]) => {\n let entry: string[] = structuredClone(compiler.options.entry[name]);\n\n if (\"import\" in entry) {\n entry = entry.import as string[];\n }\n\n entry = entry.filter(file => !removedContents.has(file));\n\n entry.push(...Array.from(modules.values(), ({name}) => name));\n\n compiler.options.entry[name] = _.uniq(entry);\n });\n }\n\n this._modules = updatedModules;\n }\n\n protected createModules(entries: EntrypointEntries): EntrypointPluginEntryModules {\n const entryModules: EntrypointPluginEntryModules = new Map();\n\n for (const [name, files] of entries) {\n const modules: EntrypointPluginModules = new Map();\n\n for (const file of files) {\n modules.set(file, {\n name: EntrypointPlugin.filename(file),\n module: this.template ? this.template(file) : \"\",\n });\n }\n\n entryModules.set(name, modules);\n }\n\n return entryModules;\n }\n\n protected getModuleContents(modules: EntrypointPluginEntryModules): Map<string, string> {\n const content = new Map<string, string>();\n\n modules.values().forEach(modules => {\n modules.forEach(({name, module}) => {\n content.set(name, module);\n });\n });\n\n return content;\n }\n}\n","import {Compilation, Compiler, sources} from \"@rspack/core\";\n\ntype JsonValue = string | number | boolean | null | JsonObject | JsonArray;\n\ninterface JsonObject {\n [key: string]: JsonValue;\n}\n\ntype JsonArray = JsonValue[];\n\nexport type GenerateJsonPluginData = Record<string, JsonValue>;\n\nexport type GenerateJsonPluginUpdate = () => Promise<GenerateJsonPluginData>;\n\nexport default class GenerateJsonPlugin {\n private readonly pluginName: string = \"GenerateJsonPlugin\";\n\n private update?: GenerateJsonPluginUpdate;\n\n constructor(protected data: GenerateJsonPluginData) {}\n\n public apply(compiler: Compiler): void {\n compiler.hooks.watchRun.tapPromise(this.pluginName, async () => {\n try {\n const update = this.update;\n\n if (update) {\n this.data = await update();\n }\n } catch (e) {\n console.error(\"GenerateJsonPlugin: Error updating data\", e);\n }\n });\n\n compiler.hooks.compilation.tap(this.pluginName, (compilation: Compilation) => {\n compilation.hooks.processAssets.tap(\n {\n name: this.pluginName,\n stage: Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL,\n },\n () => this.generateFiles(compilation)\n );\n });\n }\n\n public watch(update: GenerateJsonPluginUpdate): this {\n this.update = update;\n\n return this;\n }\n\n protected generateFiles(compilation: Compilation): void {\n Object.entries(this.data).forEach(([filename, jsonData]) => {\n const json = JSON.stringify(jsonData, null, 2);\n\n compilation.emitAsset(filename, new sources.RawSource(json));\n });\n }\n}\n","import path from \"path\";\nimport _ from \"lodash\";\n\nexport const toPosix = (to: string): string => {\n return path.posix.join(...to.split(path.sep));\n};\n\nexport const isFileExtension = (filename: string, extension: string | string[]): boolean => {\n if (_.isString(extension)) {\n extension = [extension];\n }\n\n let {ext} = path.parse(filename);\n\n if (ext.startsWith(\".\")) {\n ext = ext.slice(1);\n }\n\n return extension.includes(ext);\n};\n","import rspack, {Chunk, Compilation, Compiler} from \"@rspack/core\";\n\nimport {toPosix} from \"@cli/utils/path\";\n\nimport {ManifestBuilder, ManifestDependencies, ManifestDependency} from \"@typing/manifest\";\n\nclass ManifestPlugin {\n constructor(private readonly manifest: ManifestBuilder) {}\n\n apply(compiler: Compiler): void {\n compiler.hooks.compilation.tap(\"ManifestPlugin\", compilation => {\n compilation.hooks.processAssets.tap(\n {\n name: \"ManifestPlugin\",\n stage: Compilation.PROCESS_ASSETS_STAGE_ADDITIONS,\n },\n () => {\n const entryDependencies: ManifestDependencies = new Map();\n\n compilation.entrypoints.forEach((entryPoint, entryName) => {\n const dependencies: ManifestDependency = {\n assets: new Set(),\n css: new Set(),\n js: new Set(),\n };\n\n const allChunks = new Set<Chunk>();\n\n this.collectAllChunks(entryPoint, allChunks);\n\n allChunks.forEach((chunk: Chunk) => {\n chunk.files.forEach((fileName: string) => {\n fileName = toPosix(fileName);\n\n if (fileName.endsWith(\".js\")) {\n dependencies.js.add(fileName);\n } else if (fileName.endsWith(\".css\")) {\n dependencies.css.add(fileName);\n } else if (this.isAsset(fileName)) {\n dependencies.assets.add(fileName);\n }\n });\n\n const auxiliaryFiles = chunk.auxiliaryFiles || [];\n\n auxiliaryFiles.forEach((fileName: string) => {\n fileName = toPosix(fileName);\n\n if (fileName.endsWith(\".css\")) {\n dependencies.css.add(fileName);\n } else if (this.isAsset(fileName)) {\n dependencies.assets.add(fileName);\n }\n });\n });\n\n entryDependencies.set(entryName, dependencies);\n });\n\n const manifest = this.manifest.setDependencies(entryDependencies).get();\n const json = JSON.stringify(manifest, null, 2);\n\n compilation.emitAsset(\"manifest.json\", new rspack.sources.RawSource(json));\n }\n );\n });\n }\n\n private collectAllChunks(entryPointOrChunkGroup: any, collectedChunks: Set<Chunk>): Set<Chunk> {\n if (entryPointOrChunkGroup.chunks) {\n entryPointOrChunkGroup.chunks.forEach((chunk: Chunk) => {\n if (!collectedChunks.has(chunk)) {\n collectedChunks.add(chunk);\n }\n });\n }\n\n if (entryPointOrChunkGroup.childrenIterable) {\n for (const childGroup of entryPointOrChunkGroup.childrenIterable) {\n this.collectAllChunks(childGroup, collectedChunks);\n }\n }\n\n return collectedChunks;\n }\n\n private isAsset(file: string): boolean {\n return /\\.(png|jpg|jpeg|gif|svg|woff|woff2|ttf|eot)$/.test(file);\n }\n}\n\nexport default ManifestPlugin;\n","import {type Compiler} from \"@rspack/core\";\n\ninterface ReplaceOptions {\n values: Record<string, string>;\n}\n\nexport default class ReplacePlugin {\n constructor(private options: ReplaceOptions) {}\n\n apply(compiler: Compiler): void {\n compiler.hooks.emit.tap(\"ReplacePlugin\", compilation => {\n for (const filename in compilation.assets) {\n let content = compilation.assets[filename].source().toString();\n let hasChanges = false;\n\n for (const [search, replace] of Object.entries(this.options.values)) {\n if (content.includes(search)) {\n content = content.replace(new RegExp(search, \"g\"), replace);\n hasChanges = true;\n }\n }\n\n if (hasChanges) {\n const sourceMap = {\n version: 3,\n sources: [],\n names: [],\n mappings: \"\",\n file: filename,\n };\n\n compilation.assets[filename] = {\n source: () => content,\n size: () => content.length,\n buffer: () => Buffer.from(content),\n map: () => sourceMap,\n sourceAndMap: () => ({source: content, map: sourceMap}),\n updateHash: () => {},\n };\n }\n }\n });\n }\n}\n","import {Compiler} from \"@rspack/core\";\n\nexport type WatchPluginCallback = (files: ReadonlySet<string>) => Promise<void>;\n\nexport default class WatchPlugin {\n constructor(private readonly callback: WatchPluginCallback) {}\n\n public apply(compiler: Compiler): void {\n compiler.hooks.watchRun.tapAsync(\"WatchPlugin\", async (compiler, callback) => {\n try {\n const {modifiedFiles = new Set()} = compiler;\n\n await this.callback(modifiedFiles);\n\n callback();\n } catch (e) {\n callback(e as Error);\n }\n });\n }\n}\n","export const PackageName = \"adnbn\";\nexport const SystemDir = \".adnbn\";\n\nexport enum Mode {\n None = \"none\",\n Development = \"development\",\n Production = \"production\",\n}\n\nexport enum Command {\n Build = \"build\",\n Watch = \"watch\",\n}\n","import path from \"path\";\nimport {NormalModule, type OptimizationSplitChunksCacheGroupTestFn} from \"@rspack/core\";\n\nimport {PackageName} from \"@typing/app\";\n\nexport const isEntryModuleOrIssuer = (entry: string | string[]): OptimizationSplitChunksCacheGroupTestFn => {\n if (typeof entry === \"string\") {\n entry = [entry];\n }\n\n const entryDirs = entry.flatMap(value => [\n path.join(\"node_modules\", PackageName, \"dist\", \"entry\", value),\n path.join(\"addonbone\", \"dist\", \"entry\", value), // TODO: Only for test. Remove this\n ]);\n\n return (module, {moduleGraph}) => {\n const nm = module as NormalModule;\n const resource = nm.resource || \"\";\n\n if (entryDirs.some(dir => resource.includes(dir))) {\n return true;\n }\n\n for (const connection of moduleGraph.getIncomingConnections(nm)) {\n const origin = connection.originModule as NormalModule | undefined;\n\n if (!origin?.resource) {\n continue;\n }\n\n const originRes = origin.resource;\n\n if (entryDirs.some(dir => originRes.includes(dir))) {\n return true;\n }\n }\n\n return false;\n };\n};\n","import {Filename} from \"@rspack/core\";\nimport _ from \"lodash\";\nimport path from \"path\";\n\n// prettier-ignore\nexport const appFilenameResolver =\n (app: string, filename: Filename, dirname?: string): Extract<Filename, Filename> =>\n (pathData, assetInfo): string => {\n app = _.kebabCase(app);\n\n let name = _.isFunction(filename) ? filename(pathData, assetInfo) : filename;\n\n name = name.replaceAll(\"[app]\", app);\n\n if (dirname) {\n return path.posix.join(dirname, name);\n }\n\n return name;\n };\n","export enum Browser {\n Chrome = \"chrome\",\n Chromium = \"chromium\",\n Edge = \"edge\",\n Firefox = \"firefox\",\n Opera = \"opera\",\n Safari = \"safari\",\n}\n","import {Configuration as RspackConfig} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {appFilenameResolver, ReplacePlugin} from \"@cli/bundler\";\n\nimport {Browser} from \"@typing/browser\";\n\nexport default definePlugin(() => {\n return {\n name: \"adnbn:asset\",\n bundler: ({config}) => {\n const {app, browser, assetsDir, assetsFilename} = config;\n\n return {\n output: {\n assetModuleFilename: appFilenameResolver(app, assetsFilename, assetsDir),\n },\n module: {\n rules: [\n {\n test: /\\.(png|apng|jpe?g|gif|webp|svg|avif|tiff|bmp|ico)$/i,\n resourceQuery: {\n not: [/react/],\n },\n oneOf: [\n {\n resourceQuery: /(chrome|browser)/,\n type: \"asset/resource\",\n generator: {\n publicPath: `${browser === Browser.Firefox ? \"moz\" : \"chrome\"}-extension://__MSG_@@extension_id__/`,\n },\n },\n {\n resourceQuery: /base64/,\n type: \"asset/inline\",\n },\n {\n type: \"asset/resource\",\n },\n ],\n },\n ],\n },\n plugins: [\n new ReplacePlugin({\n // Fix for asset/resource publicPath\n values: {\n \"__MSG_%40@extension_id__\": \"__MSG_@@extension_id__\",\n },\n }),\n ],\n } satisfies RspackConfig;\n },\n };\n});\n","import type {BackgroundDefinition} from \"adnbn\";\nimport background, {isValidBackgroundDefinition, isValidBackgroundMainHandler} from \"adnbn/entry/background\";\n\nimport * as module from \"virtual:background-entrypoint\";\n\ntry {\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: BackgroundDefinition = otherDefinition;\n\n if (isValidBackgroundDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidBackgroundMainHandler(defaultDefinition)) {\n definition = {...definition, main: defaultDefinition};\n }\n\n const {main, ...options} = definition;\n\n background({main, ...options});\n} catch (e) {\n console.error(\"The background crashed on startup:\", e);\n}\n","import type {CommandUnresolvedDefinition} from \"adnbn\";\nimport {__t} from \"adnbn/locale\";\nimport command, {isValidCommandDefinition, isValidCommandExecuteFunction} from \"adnbn/entry/command\";\n\nimport * as module from \"virtual:command-entrypoint\";\n\ntry {\n const commandName = \"virtual:command-name\";\n\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: CommandUnresolvedDefinition = otherDefinition;\n\n if (isValidCommandDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidCommandExecuteFunction(defaultDefinition)) {\n definition = {...definition, execute: defaultDefinition};\n }\n\n const {execute, name = commandName, description, ...options} = definition;\n\n command({\n name,\n execute,\n description: description ? __t(description) : undefined,\n ...options,\n });\n} catch (e) {\n console.error(\"The command crashed on startup:\", e);\n}\n","import type {ContentScriptDefinition} from \"adnbn\";\nimport {isContentScriptDefinition, isValidContentScriptDefinitionRenderValue} from \"adnbn/entry/content\";\n\nimport contentScript from \"virtual:content-framework\";\n\nimport * as module from \"virtual:content-entrypoint\";\n\ntry {\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: ContentScriptDefinition = otherDefinition;\n\n if (isContentScriptDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidContentScriptDefinitionRenderValue(defaultDefinition)) {\n definition = {...definition, render: defaultDefinition};\n }\n\n contentScript(definition);\n} catch (e) {\n console.error(\"The content script crashed on startup:\", e);\n}\n","import {\n isValidTransportDefinition,\n isValidTransportInitFunction,\n type TransportType,\n type TransportUnresolvedDefinition,\n type TransportOptions,\n} from \"adnbn/entry/transport\";\n//@ts-ignore\nimport transport from \"adnbn/entry/:entry\";\n\nimport * as module from \"virtual:transport-entrypoint\";\n\ntry {\n const transportName = \"virtual:transport-name\";\n\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: TransportUnresolvedDefinition<TransportOptions, TransportType> = otherDefinition;\n\n if (isValidTransportDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidTransportInitFunction(defaultDefinition)) {\n definition = {...definition, init: defaultDefinition};\n }\n\n const {init, name = transportName, ...options} = definition;\n\n transport({name, init, ...options});\n} catch (e) {\n console.error(\"The :entry crashed on startup:\", e);\n}\n","import type {OffscreenUnresolvedDefinition} from \"adnbn\";\nimport {isValidTransportDefinition, isValidTransportInitFunction, type TransportType} from \"adnbn/entry/transport\";\nimport {Builder as OffscreenBuilder} from \"adnbn/entry/offscreen\";\n\nimport {Builder as ViewBuilder} from \"virtual:view-framework\";\n\nimport * as module from \"virtual:offscreen-entrypoint\";\n\ntry {\n const offscreenName = \"virtual:offscreen-name\";\n\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: OffscreenUnresolvedDefinition<TransportType> = otherDefinition;\n\n if (isValidTransportDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidTransportInitFunction(defaultDefinition)) {\n definition = {...definition, init: defaultDefinition};\n }\n\n const {init, main, name = offscreenName, ...options} = definition;\n\n new OffscreenBuilder({\n name,\n init,\n main,\n ...options,\n })\n .view(new ViewBuilder(options))\n .build()\n .catch(e => {\n console.error(\"Failed to build offscreen: \", e);\n });\n} catch (e) {\n console.error(\"The offscreen crashed on startup:\", e);\n}\n","import {OffscreenBackground} from \"adnbn/offscreen\";\n\ntry {\n new OffscreenBackground().build();\n} catch (e) {\n console.error(\"Failed to build offscreen layer on background:\", e);\n}\n","import type {RelayUnresolvedDefinition} from \"adnbn\";\nimport {isValidTransportDefinition, isValidTransportInitFunction, type TransportType} from \"adnbn/entry/transport\";\nimport {Builder as RelayBuilder} from \"adnbn/entry/relay\";\n\nimport {Builder as ContentScriptBuilder} from \"virtual:content-framework\";\n\nimport * as module from \"virtual:relay-entrypoint\";\n\ntry {\n const relayName = \"virtual:relay-name\";\n\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: RelayUnresolvedDefinition<TransportType> = otherDefinition;\n\n if (isValidTransportDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidTransportInitFunction(defaultDefinition)) {\n definition = {...definition, init: defaultDefinition};\n }\n\n const {init, main, name = relayName, ...options} = definition;\n\n new RelayBuilder({name, init, main, ...options})\n .content(new ContentScriptBuilder(options))\n .build()\n .catch(e => {\n console.error(\"Failed to build relay: \", e);\n });\n} catch (e) {\n console.error(\"The relay crashed on startup:\", e);\n}\n","import type {ViewDefinition, ViewOptions} from \"adnbn\";\nimport {__t} from \"adnbn/locale\";\nimport {isViewDefinition, isValidViewDefinitionRenderValue} from \"adnbn/entry/view\";\n\nimport view from \"virtual:view-framework\";\n\nimport * as module from \"virtual:view-entrypoint\";\n\ntry {\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: ViewDefinition<ViewOptions> = otherDefinition;\n\n if (isViewDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidViewDefinitionRenderValue(defaultDefinition)) {\n definition = {...definition, render: defaultDefinition};\n }\n\n const {title, ...options} = definition;\n\n view({title: title ? __t(title) : undefined, ...options});\n} catch (e) {\n console.error(\"The view crashed on startup:\", e);\n}\n","import path from \"path\";\nimport _ from \"lodash\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport const getRootPath = (to: string): string => {\n return path.resolve(process.cwd(), to);\n};\n\nexport const getInputPath = (config: ReadonlyConfig, to?: string): string => {\n return path.join(config.inputDir, to ?? \"\");\n};\n\nexport const getSourcePath = (config: ReadonlyConfig, to?: string): string => {\n return getInputPath(config, path.join(config.srcDir, to ?? \"\"));\n};\n\nexport const getSharedPath = (config: ReadonlyConfig, to?: string): string => {\n return getInputPath(config, path.join(config.srcDir, config.sharedDir, to ?? \"\"));\n};\n\nexport const getAppPath = (config: ReadonlyConfig, to?: string): string => {\n return getInputPath(config, path.join(config.srcDir, config.appsDir, config.app, to ?? \"\"));\n};\n\nexport const getAppSourcePath = (config: ReadonlyConfig, to?: string): string => {\n return getAppPath(config, path.join(config.appSrcDir, to ?? \"\"));\n};\n\nexport const getOutputPath = (config: ReadonlyConfig): string => {\n return getInputPath(\n config,\n path.join(config.outputDir, `${_.kebabCase(config.app)}-${config.browser}-mv${config.manifestVersion}`)\n );\n};\n\nexport const getConfigFile = (config: ReadonlyConfig): string => {\n return getInputPath(config, config.configFile);\n};\n","import path from \"path\";\nimport _ from \"lodash\";\n\nimport {toPosix} from \"@cli/utils/path\";\nimport {getAppPath, getAppSourcePath, getSharedPath, getSourcePath} from \"@cli/resolvers/path\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {EntrypointFile, EntrypointFinder} from \"@typing/entrypoint\";\n\nexport default abstract class implements EntrypointFinder {\n protected _files?: Set<EntrypointFile>;\n\n protected readonly priorityDirectories: string[];\n\n protected abstract getFiles(): Promise<Set<EntrypointFile>>;\n\n protected constructor(protected readonly config: ReadonlyConfig) {\n this.priorityDirectories = [\n \"node_modules\",\n getSourcePath(config),\n getSharedPath(config),\n getAppPath(config),\n getAppSourcePath(config),\n ];\n }\n\n public clear(): this {\n this._files = undefined;\n\n return this;\n }\n\n public async files(): Promise<Set<EntrypointFile>> {\n if (this._files) {\n return this._files;\n }\n\n const files = Array.from(await this.getFiles()).sort((a, b) => {\n const priorityA = this.priority(a);\n const priorityB = this.priority(b);\n\n if (priorityA !== priorityB) {\n return priorityA - priorityB;\n }\n\n return a.file.length - b.file.length;\n });\n\n return (this._files = new Set(files));\n }\n\n public async empty(): Promise<boolean> {\n return (await this.files()).size === 0;\n }\n\n public async exists(): Promise<boolean> {\n return !(await this.empty());\n }\n\n public holds(file: EntrypointFile): boolean {\n return this._files?.has(file) || false;\n }\n\n protected file(filename: string): EntrypointFile {\n const {dir, name} = path.parse(filename);\n\n const result = toPosix(name === \"index\" ? dir : path.join(dir, name));\n\n return {file: filename, import: result};\n }\n\n protected resolve(name: string, filename: string): EntrypointFile {\n const resolved = path.posix.join(name, filename);\n\n return {\n file: require.resolve(resolved, {paths: [process.cwd()]}),\n import: resolved,\n external: name,\n };\n }\n\n protected resolveSafely(name: string, filename: string): EntrypointFile | undefined {\n try {\n return this.resolve(name, filename);\n } catch {\n return undefined;\n }\n }\n\n protected priority(file: EntrypointFile): number {\n return _.findIndex(this.priorityDirectories, dir => file.file.includes(dir));\n }\n}\n","import AbstractFinder from \"./AbstractFinder\";\nimport {\n EntrypointFile,\n EntrypointOptions,\n EntrypointOptionsFinder,\n EntrypointParser,\n EntrypointType,\n} from \"@typing/entrypoint\";\n\nexport default abstract class<O extends EntrypointOptions>\n extends AbstractFinder\n implements EntrypointOptionsFinder<O>\n{\n protected _parser?: EntrypointParser<O>;\n protected _options?: Map<EntrypointFile, O>;\n protected _contract?: Map<EntrypointFile, string | undefined>;\n\n public abstract type(): EntrypointType;\n\n protected abstract getParser(): EntrypointParser<O>;\n\n public parser(): EntrypointParser<O> {\n return (this._parser ??= this.getParser());\n }\n\n public async options(): Promise<Map<EntrypointFile, O>> {\n return (this._options ??= await this.getOptions());\n }\n\n public async contracts(): Promise<Map<EntrypointFile, string | undefined>> {\n return (this._contract ??= await this.getContracts());\n }\n\n protected async getContracts(): Promise<Map<EntrypointFile, string | undefined>> {\n const collect = new Map<EntrypointFile, string | undefined>();\n\n const options = await this.options();\n\n for (const file of options.keys()) {\n collect.set(file, this.parser().contract(file));\n }\n\n return collect;\n }\n\n protected async getOptions(): Promise<Map<EntrypointFile, O>> {\n const collect = new Map<EntrypointFile, O>();\n\n for (const file of await this.files()) {\n const options = this.parser().options(file);\n\n if (!this.isValidOptions(options)) {\n continue;\n }\n\n collect.set(file, options);\n }\n\n return collect;\n }\n\n protected isValidOptions(options: O): boolean {\n const {browser, app} = this.config;\n\n const {includeBrowser = [], includeApp = [], excludeBrowser = [], excludeApp = []} = options;\n\n if (includeBrowser.length > 0 && !includeBrowser.includes(browser)) {\n return false;\n }\n\n if (includeApp.length > 0 && !includeApp.includes(app)) {\n return false;\n }\n\n if (excludeBrowser.length > 0 && excludeBrowser.includes(browser)) {\n return false;\n }\n\n return !(excludeApp.length > 0 && excludeApp.includes(app));\n }\n\n public clear(): this {\n this._options = undefined;\n this._contract = undefined;\n\n return super.clear();\n }\n}\n","import {Browser} from \"@typing/browser\";\n\nexport const EntrypointFileExtensions: ReadonlySet<string> = new Set([\"ts\", \"tsx\", \"js\", \"jsx\", \"vue\", \"svelte\"]);\n\nexport enum EntrypointType {\n Background = \"background\",\n Command = \"command\",\n ContentScript = \"content\",\n Page = \"page\",\n Service = \"service\",\n Relay = \"relay\",\n Options = \"options\",\n Popup = \"popup\",\n Sidebar = \"sidebar\",\n Offscreen = \"offscreen\",\n}\n\nexport interface EntrypointOptions {\n /**\n * List of target browsers to include this entrypoint in. Defaults to being included in all\n * builds. Cannot be used with `exclude`. You must choose one of the two options.\n *\n * @default undefined\n */\n includeBrowser?: `${Browser}`[] | Browser[];\n\n /**\n * List of target browsers to exclude this entrypoint from. Cannot be used with `include`. You\n * must choose one of the two options.\n *\n * @default undefined\n */\n excludeBrowser?: `${Browser}`[] | Browser[];\n\n /**\n * List of target apps to include this entrypoint in. Defaults to being included in all builds.\n * Cannot be used with `excludeApp`. You must choose one of the two options.\n *\n * @default undefined\n */\n excludeApp?: string[];\n\n /**\n * List of target apps to exclude this entrypoint from. Cannot be used with `includeApp`. You\n * must choose one of the two options.\n *\n * @default undefined\n */\n includeApp?: string[];\n}\n\nexport interface EntrypointFile {\n file: string;\n import: string;\n external?: string;\n}\n\n/**\n * Dictionary of entrypoint for the build configuration.\n *\n * @key {string} - The name of the entrypoint that will be used in the bundler configuration.\n * @value {EntrypointFile[]} - Array of files that will be included in this entrypoint.\n * These files will be compiled and bundled together as part of the specified entrypoint.\n */\nexport type EntrypointEntries = Map<string, Set<EntrypointFile>>;\n\nexport interface EntrypointParser<O extends EntrypointOptions> {\n options(file: EntrypointFile): O;\n\n contract(file: EntrypointFile): string | undefined;\n}\n\nexport interface EntrypointFinder {\n files(): Promise<Set<EntrypointFile>>;\n\n empty(): Promise<boolean>;\n\n exists(): Promise<boolean>;\n\n clear(): this;\n\n holds(file: EntrypointFile): boolean;\n}\n\nexport interface EntrypointOptionsFinder<O extends EntrypointOptions> extends EntrypointFinder {\n type(): EntrypointType;\n\n options(): Promise<Map<EntrypointFile, O>>;\n\n contracts(): Promise<Map<EntrypointFile, string | undefined>>;\n}\n\nexport interface EntrypointNameGenerator {\n reserve(name: string): this;\n\n name(name: string): string;\n\n file(file: EntrypointFile): string;\n\n likely(name?: string): boolean;\n\n has(name: string): boolean;\n\n reset(): this;\n}\n\nexport interface EntrypointBuilder {\n build(): Promise<void>;\n\n destroy(): Promise<void>;\n}\n\nexport type EntrypointConstructorParameter<T> = T extends new (arg: infer P) => any ? P : never;\n","import fs, {Dirent} from \"fs\";\nimport path from \"path\";\nimport pluralize from \"pluralize\";\n\nimport AbstractOptionsFinder from \"./AbstractOptionsFinder\";\n\nimport {getAppSourcePath, getSharedPath} from \"@cli/resolvers/path\";\n\nimport {EntrypointFile, EntrypointFileExtensions, EntrypointOptions} from \"@typing/entrypoint\";\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default abstract class<O extends EntrypointOptions> extends AbstractOptionsFinder<O> {\n protected fileExtensionsPattern: string;\n\n protected possibleIndexFiles: Set<string>;\n\n protected constructor(config: ReadonlyConfig) {\n super(config);\n\n this.fileExtensionsPattern = [...EntrypointFileExtensions].map(ext => ext.replace(\".\", \"\\\\.\")).join(\"|\");\n\n this.possibleIndexFiles = new Set([...EntrypointFileExtensions].map(ext => `index.${ext}`));\n }\n\n public canMerge(): boolean {\n return false;\n }\n\n protected async getFiles(): Promise<Set<EntrypointFile>> {\n const entrypoint = this.type();\n\n let files = new Set<EntrypointFile>();\n\n const appFiles = this.findFiles(getAppSourcePath(this.config));\n\n if (appFiles.size > 0) {\n files = appFiles;\n\n if (this.config.debug) {\n console.info(`App \"${entrypoint}\" files added:`, appFiles);\n }\n }\n\n if ((appFiles.size > 0 && this.canMerge()) || appFiles.size === 0) {\n const sharedFiles = this.findFiles(getSharedPath(this.config));\n\n if (sharedFiles.size > 0) {\n files = new Set([...files, ...sharedFiles]);\n\n if (this.config.debug) {\n console.info(`Shared \"${entrypoint}\" files added:`, sharedFiles);\n }\n }\n }\n\n return files;\n }\n\n protected findFiles(directory: string): Set<EntrypointFile> {\n const entrypoint = this.type();\n const entrypointPluralize = pluralize(entrypoint);\n\n const files: EntrypointFile[] = [];\n\n const finder = (dir: string): void => {\n let entries: Dirent[];\n\n try {\n entries = fs.readdirSync(dir, {withFileTypes: true});\n } catch (e) {\n if (this.config.debug) {\n console.warn(`Error reading ${entrypoint} entrypoint directory: ${dir}`);\n }\n\n return;\n }\n\n for (const entry of entries) {\n const fullPath = path.join(dir, entry.name);\n\n if (entry.isDirectory()) {\n if (this.isValidDirname(entry.name)) {\n for (const indexFile of this.possibleIndexFiles) {\n const indexPath = path.join(fullPath, indexFile);\n\n try {\n const stat = fs.statSync(indexPath);\n\n if (stat.isFile()) {\n files.push(this.file(indexPath));\n }\n } catch (e) {\n if (this.config.debug) {\n console.log(`Error reading ${entrypoint} entrypoint index file: ${indexPath}`);\n }\n }\n }\n } else if (entry.name === entrypointPluralize) {\n finder(fullPath);\n }\n } else if (entry.isFile() && this.isValidFilename(entry.name)) {\n files.push(this.file(fullPath));\n }\n }\n };\n\n finder(directory);\n\n if (files.length === 0) {\n try {\n directory = path.join(directory, entrypoint);\n\n const stat = fs.statSync(directory);\n\n if (stat.isDirectory()) {\n finder(directory);\n }\n } catch (e) {\n if (this.config.debug) {\n console.log(\"Error reading entrypoint directory:\", directory);\n }\n }\n }\n\n return new Set(files);\n }\n\n protected isValidFilename(filename: string): boolean {\n const name = this.type().replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\n const pattern = new RegExp(`^(?:.*\\\\.)?${name}\\\\.(${this.fileExtensionsPattern})$`);\n\n return pattern.test(filename);\n }\n\n protected isValidDirname(dirname: string): boolean {\n const entrypoint = this.type();\n\n return dirname === entrypoint || dirname.endsWith(`.${entrypoint}`);\n }\n}\n","import AbstractEntrypointFinder from \"./AbstractEntrypointFinder\";\n\nimport {EntrypointFile, EntrypointOptions, EntrypointOptionsFinder} from \"@typing/entrypoint\";\n\nexport default abstract class<O extends EntrypointOptions> extends AbstractEntrypointFinder<O> {\n protected _plugin?: EntrypointOptionsFinder<O>;\n\n protected abstract getPlugin(): EntrypointOptionsFinder<O>;\n\n public plugin(): EntrypointOptionsFinder<O> {\n return (this._plugin ??= this.getPlugin());\n }\n\n async empty(): Promise<boolean> {\n return this.plugin().empty();\n }\n\n public clear(): this {\n this.plugin().clear();\n\n return super.clear();\n }\n\n public holds(file: EntrypointFile): boolean {\n return this.plugin().holds(file);\n }\n}\n","import path from \"path\";\n\nimport {EntrypointFile, EntrypointNameGenerator, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class implements EntrypointNameGenerator {\n protected names = new Set<string>();\n\n protected reservedNames = new Set<string>();\n\n constructor(protected readonly entrypoint: EntrypointType) {}\n\n public reserve(name: string): this {\n this.reservedNames.add(name);\n\n if (this.names.has(name)) {\n throw new Error(`Entrypoint name \"${name}\" is already in use.`);\n }\n\n this.names.add(name);\n\n return this;\n }\n\n public name(name: string): string {\n let entryName = name;\n let counter = 1;\n\n if (entryName !== this.entrypoint) {\n entryName = `${entryName}.${this.entrypoint}`;\n }\n\n while (this.has(entryName)) {\n entryName = name === this.entrypoint ? `${counter}.${name}` : `${name}${counter}.${this.entrypoint}`;\n\n counter++;\n }\n\n this.names.add(entryName);\n\n return entryName;\n }\n\n public file(file: EntrypointFile): string {\n const key = \".\" + this.entrypoint;\n\n let {name, dir} = path.parse(file.file);\n\n if (name === \"index\") {\n name = path.basename(dir);\n }\n\n if (name.includes(key)) {\n name = name.split(key)[0];\n }\n\n return this.name(name);\n }\n\n public reset(): this {\n if (this.reservedNames.size === 0) {\n this.names.clear();\n\n return this;\n }\n\n this.names = new Set(this.reservedNames);\n\n return this;\n }\n\n public likely(name?: string): boolean {\n if (!name) {\n return false;\n }\n\n return name === this.entrypoint || name.endsWith(`.${this.entrypoint}`);\n }\n\n public has(name: string): boolean {\n return this.names.has(name);\n }\n}\n","import NameGenerator from \"./NameGenerator\";\n\nexport default class extends NameGenerator {\n public name(name: string): string {\n let entryName = name;\n let counter = 1;\n\n while (this.has(entryName)) {\n entryName = `${name}${counter}`;\n counter++;\n }\n\n this.names.add(entryName);\n\n return entryName;\n }\n\n public likely(name?: string): boolean {\n if (!name) {\n return false;\n }\n\n return name === this.entrypoint || /^.*[1-9]$/.test(name);\n }\n}\n","import path from \"path\";\n\nimport {InlineNameGenerator, NameGenerator} from \"../name\";\n\nimport AbstractPluginFinder from \"./AbstractPluginFinder\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {ViewEntrypointOptions} from \"@typing/view\";\nimport {EntrypointFile, EntrypointNameGenerator} from \"@typing/entrypoint\";\n\nexport interface ViewItem<O extends ViewEntrypointOptions> {\n filename: string;\n alias: string;\n file: EntrypointFile;\n options: O;\n}\n\nexport type ViewItems<O extends ViewEntrypointOptions> = Map<string, ViewItem<O>>;\n\nexport type ViewAliasToFilename = Map<string, string>;\n\nexport type ViewFileToFilename = Map<EntrypointFile, string>;\n\nexport default abstract class<O extends ViewEntrypointOptions> extends AbstractPluginFinder<O> {\n protected _views?: ViewItems<O>;\n\n protected readonly names: EntrypointNameGenerator;\n protected readonly aliases: EntrypointNameGenerator;\n protected readonly filenames: EntrypointNameGenerator;\n\n protected constructor(config: ReadonlyConfig) {\n super(config);\n\n this.names = this.createNameGenerator();\n this.aliases = this.createAliasGenerator();\n this.filenames = this.createFilenameGenerator();\n }\n\n protected createNameGenerator(): EntrypointNameGenerator {\n return new NameGenerator(this.type());\n }\n\n protected createAliasGenerator(): EntrypointNameGenerator {\n return new InlineNameGenerator(this.type());\n }\n\n protected createFilenameGenerator(): EntrypointNameGenerator {\n return new NameGenerator(this.type());\n }\n\n protected async getViews(): Promise<ViewItems<O>> {\n const views: ViewItems<O> = new Map();\n\n for (const [file, options] of await this.plugin().options()) {\n views.set(this.createViewName(file, options), {\n alias: this.createViewAlias(file, options),\n filename: this.createViewFilename(file, options),\n file,\n options,\n });\n\n if (!this.allowMultiple()) {\n break;\n }\n }\n\n return views;\n }\n\n protected createViewFilename(file: EntrypointFile, options: O): string {\n const {as} = options;\n\n const filename = as ? this.filenames.name(as) : this.filenames.file(file);\n\n return path.posix.join(this.config.htmlDir, filename + \".html\");\n }\n\n protected createViewAlias(file: EntrypointFile, options: O): string {\n const {as} = options;\n\n let alias = as ? this.aliases.name(as) : this.aliases.file(file);\n\n if (file.external) {\n alias = file.import;\n }\n\n return alias;\n }\n\n protected createViewName(file: EntrypointFile, options: O): string {\n const {as} = options;\n\n return as ? this.names.name(as) : this.names.file(file);\n }\n\n public async views(): Promise<ViewItems<O>> {\n return (this._views ??= await this.getViews());\n }\n\n public allowMultiple(): boolean {\n return true;\n }\n\n public async getAliasToFilename(): Promise<ViewAliasToFilename> {\n return Array.from(await this.views()).reduce((aliases, [_, item]) => {\n return {\n ...aliases,\n [item.alias]: item.filename,\n };\n }, new Map() as ViewAliasToFilename);\n }\n\n public async getAlias(): Promise<Set<string>> {\n const aliases = new Set<string>();\n\n const views = await this.views();\n\n for (const item of views.values()) {\n aliases.add(item.alias);\n }\n\n return aliases;\n }\n\n public async getFilenames(): Promise<ViewFileToFilename> {\n const views = await this.views();\n\n const filenames: ViewFileToFilename = new Map();\n\n for (const {file, filename} of views.values()) {\n filenames.set(file, filename);\n }\n\n return filenames;\n }\n\n public clear(): this {\n this._views = undefined;\n\n this.names.reset();\n this.aliases.reset();\n this.filenames.reset();\n\n return super.clear();\n }\n}\n","import _ from \"lodash\";\n\nimport {Plugin, PluginHandler, PluginHandlerKeys, PluginHandlerOptions, PluginNameHandlerResult} from \"@typing/plugin\";\n\nexport const resolvePluginHandler = async <O extends object, T>(\n handler: PluginHandler<O, T> | undefined,\n options: O\n): Promise<T | undefined> => {\n if (_.isFunction(handler)) {\n const result = handler(options);\n\n if (result instanceof Promise) {\n return await result;\n }\n\n return result;\n }\n\n return handler;\n};\n\nexport const processPluginHandler = async function* <K extends PluginHandlerKeys>(\n plugins: Plugin[],\n key: K,\n options: PluginHandlerOptions<K>\n): AsyncGenerator<PluginNameHandlerResult<K>, void, void> {\n for await (const plugin of plugins) {\n const handler = plugin[key] as PluginHandler<PluginHandlerOptions<K>> | undefined;\n\n const result = await resolvePluginHandler(handler, options);\n\n if (result !== undefined) {\n yield {name: plugin.name, result};\n }\n }\n};\n","import _ from \"lodash\";\n\nimport AbstractOptionsFinder from \"./AbstractOptionsFinder\";\n\nimport {processPluginHandler} from \"@cli/resolvers/plugin\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {PluginHandlerKeys} from \"@typing/plugin\";\nimport {EntrypointFile, EntrypointOptions, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class<O extends EntrypointOptions> extends AbstractOptionsFinder<O> {\n constructor(\n config: ReadonlyConfig,\n protected readonly key: PluginHandlerKeys,\n protected readonly finder: AbstractOptionsFinder<O>\n ) {\n super(config);\n }\n\n public type(): EntrypointType {\n return this.finder.type();\n }\n\n protected getParser(): EntrypointParser<O> {\n return this.finder.parser();\n }\n\n protected async getFiles(): Promise<Set<EntrypointFile>> {\n const pluginResult = await Array.fromAsync(\n processPluginHandler(this.config.plugins, this.key, {\n config: this.config,\n })\n );\n\n const files = new Set<EntrypointFile>();\n\n for (const {name, result} of pluginResult) {\n let endpoints: Array<string | EntrypointFile> = [];\n\n if (_.isBoolean(result)) {\n endpoints = [this.key];\n } else if (_.isString(result) || _.isPlainObject(result)) {\n endpoints = [result as string | EntrypointFile];\n } else if (_.isArray(result)) {\n endpoints = result;\n } else if (_.isSet(result)) {\n endpoints = Array.from(result as Set<EntrypointFile>);\n }\n\n for (const endpoint of endpoints) {\n files.add(_.isString(endpoint) ? this.resolve(name, endpoint) : endpoint);\n }\n }\n\n return files;\n }\n}\n","import path from \"path\";\nimport fs from \"fs\";\nimport ts from \"typescript\";\nimport {createMatchPath} from \"tsconfig-paths\";\n\nimport {EntrypointFileExtensions} from \"@typing/entrypoint\";\nimport {SystemDir} from \"@typing/app\";\n\nexport default class TsResolver {\n protected static readonly instances: Map<string, TsResolver> = new Map();\n\n protected filename!: string;\n\n protected config?: ts.ParsedCommandLine;\n\n public get matchPath(): {(path: string): string | undefined} {\n const config = this.getConfig();\n\n const absoluteBaseUrl = path.resolve(path.dirname(this.filename), config.options.baseUrl || \".\", SystemDir);\n\n const match = createMatchPath(absoluteBaseUrl, config.options.paths || {});\n\n const extensions = [...EntrypointFileExtensions].map(ext => \".\" + ext);\n\n return (path: string): string | undefined => match(path, undefined, fs.existsSync, extensions);\n }\n\n public static make(filename: string = \"tsconfig.json\"): TsResolver {\n if (this.instances.has(filename)) {\n return this.instances.get(filename)!;\n }\n\n const instance = new this(filename);\n\n this.instances.set(filename, instance);\n\n return instance;\n }\n\n constructor(filename: string = \"tsconfig.json\") {\n this.setFilename(filename);\n }\n\n public getFilename(): string {\n return this.filename;\n }\n\n public setFilename(filename: string): this {\n this.filename = path.isAbsolute(filename) ? filename : path.resolve(process.cwd(), filename);\n\n return this;\n }\n\n public getConfig(): ts.ParsedCommandLine {\n if (this.config) {\n return this.config;\n }\n\n if (!fs.existsSync(this.filename)) {\n throw new Error(`Cannot find tsconfig.json at: ${this.filename}`);\n }\n\n const tsconfigRaw = ts.readConfigFile(this.filename, p => fs.readFileSync(p, \"utf8\"));\n\n const parseConfigHost: ts.ParseConfigHost = {\n fileExists: fs.existsSync,\n readFile: p => fs.readFileSync(p, \"utf8\"),\n readDirectory: ts.sys.readDirectory,\n useCaseSensitiveFileNames: true,\n };\n\n return (this.config = ts.parseJsonConfigFileContent(\n tsconfigRaw.config,\n parseConfigHost,\n path.dirname(this.filename)\n ));\n }\n}\n","import path from \"path\";\nimport fs from \"fs\";\n\nimport TsResolver from \"./TsResolver\";\n\nimport {PackageName} from \"@typing/app\";\nimport {EntrypointFileExtensions} from \"@typing/entrypoint\";\n\nconst extPattern = [...EntrypointFileExtensions].map(ext => ext.replace(\".\", \"\\\\.\")).join(\"|\");\n\nconst extRegex = new RegExp(`\\\\.(${extPattern})$`, \"i\");\n\nconst isValid = (filePath: string): boolean => {\n return extRegex.test(filePath);\n};\n\nconst findFile = (basePath: string): string | undefined => {\n const candidates = [basePath, path.join(basePath, \"index\")];\n\n for (const ext of EntrypointFileExtensions) {\n for (const candidate of candidates) {\n const pathname = `${candidate}.${ext}`;\n\n if (fs.existsSync(pathname)) {\n return pathname;\n }\n }\n }\n};\n\nexport default class {\n protected baseDir: string;\n\n constructor(protected ts: TsResolver = TsResolver.make()) {\n this.baseDir = process.cwd();\n }\n\n public setTs(ts: TsResolver): this {\n this.ts = ts;\n\n return this;\n }\n\n public setBaseDir(baseDir: string): this {\n this.baseDir = baseDir;\n\n return this;\n }\n\n public get(importPath: string): string {\n if (importPath.startsWith(\".\") || importPath.startsWith(\"/\")) {\n let resolvedLocal: string | undefined = path.resolve(this.baseDir, importPath);\n\n if (isValid(resolvedLocal) && fs.existsSync(resolvedLocal)) {\n return resolvedLocal;\n }\n\n resolvedLocal = findFile(resolvedLocal);\n\n if (resolvedLocal) {\n return resolvedLocal;\n }\n\n return importPath;\n }\n\n let aliased = this.ts.matchPath(importPath);\n\n if (aliased) {\n if (isValid(aliased) && fs.existsSync(aliased)) {\n return path.resolve(aliased);\n }\n\n aliased = findFile(aliased);\n\n if (aliased) {\n return path.resolve(aliased);\n }\n }\n\n try {\n if (importPath === PackageName || importPath.startsWith(`${PackageName}/`)) {\n return importPath;\n }\n\n // For external libraries used in tests, just return the import path\n if (process.env.NODE_ENV === \"test\" && importPath === \"somelib\") {\n return importPath;\n }\n\n return require.resolve(importPath, {paths: [this.baseDir]});\n } catch {\n // For external libraries that can't be resolved, return the import path as is\n // This allows us to generate import('libraryName').TypeName syntax\n return importPath;\n }\n }\n}\n","import type {FC, ReactNode} from \"react\";\nimport {Optional} from \"utility-types\";\n\nimport {EntrypointBuilder, EntrypointOptions} from \"@typing/entrypoint\";\nimport {Awaiter, PickNonFunctionProperties} from \"@typing/helpers\";\n\ntype ExecutionWorld = chrome.scripting.ExecutionWorld;\ntype RunAt = chrome.userScripts.RunAt;\n\nexport const ContentScriptMatches = [\"*://*/*\"];\n\nexport interface ContentScriptConfig {\n matches?: string[];\n /**\n * See https://developer.chrome.com/docs/extensions/mv3/content_scripts/\n * @default []\n */\n excludeMatches?: string[];\n /**\n * See https://developer.chrome.com/docs/extensions/mv3/content_scripts/\n * @default []\n */\n includeGlobs?: string[];\n /**\n * See https://developer.chrome.com/docs/extensions/mv3/content_scripts/\n * @default []\n */\n excludeGlobs?: string[];\n /**\n * See https://developer.chrome.com/docs/extensions/mv3/content_scripts/\n * @default false\n */\n allFrames?: boolean;\n /**\n * See https://developer.chrome.com/docs/extensions/mv3/content_scripts/\n * @default \"documentIdle\"\n */\n runAt?: RunAt;\n /**\n * See https://developer.chrome.com/docs/extensions/develop/concepts/content-scripts#isolated_world\n */\n world?: ExecutionWorld;\n /**\n * See https://developer.chrome.com/docs/extensions/mv3/content_scripts/\n * @default false\n */\n matchAboutBlank?: boolean;\n /**\n * See https://developer.chrome.com/docs/extensions/mv3/content_scripts/\n * @default false\n */\n matchOriginAsFallback?: boolean;\n /**\n * Whether this content script requires explicit permission declaration in the extension manifest.\n * When set to true, the content script must be declared in the manifest.json permissions section\n * to be allowed to run on the specified pages.\n *\n * @see https://developer.chrome.com/docs/extensions/mv3/declare_permissions/\n *\n * @default false\n */\n declarative?: boolean;\n}\n\nexport type ContentScriptOptions = ContentScriptConfig & EntrypointOptions;\n\nexport type ContentScriptEntrypointOptions = Partial<ContentScriptOptions>;\n\n// Append\nexport enum ContentScriptAppend {\n Last = \"last\",\n First = \"first\",\n Replace = \"replace\",\n Before = \"before\",\n After = \"after\",\n}\n\n// Mount\nexport type ContentScriptMountFunction = (anchor: Element, container: Element) => void | (() => void);\n\nexport interface ContentScriptMount {\n mount(): boolean | undefined | void;\n\n unmount(): boolean | undefined | void;\n}\n\n// Props\nexport interface ContentScriptProps extends ContentScriptEntrypointOptions {\n anchor: Element;\n}\n\n// Anchor\nexport type ContentScriptAnchor = string | Element | null | undefined;\nexport type ContentScriptAnchorGetter = () => Awaiter<ContentScriptAnchor>;\nexport type ContentScriptAnchorResolver = () => Awaiter<Element[]>;\n\n// Render\nexport type ContentScriptRenderReactComponent = FC<ContentScriptProps>;\nexport type ContentScriptRenderValue = Element | ReactNode | ContentScriptRenderReactComponent;\nexport type ContentScriptRenderHandler = (props: ContentScriptProps) => Awaiter<undefined | ContentScriptRenderValue>;\n\n// Container\nexport type ContentScriptContainerTag = Exclude<keyof HTMLElementTagNameMap, \"html\" | \"body\">;\n\nexport type ContentScriptContainerOptions = {\n [Tag in ContentScriptContainerTag]: {\n tagName: Tag;\n } & Exclude<Optional<PickNonFunctionProperties<HTMLElementTagNameMap[Tag]>>, \"id\">;\n}[ContentScriptContainerTag];\n\nexport type ContentScriptContainerFactory = (\n props: ContentScriptProps\n) => Awaiter<Element | ContentScriptContainerTag | ContentScriptContainerOptions>;\nexport type ContentScriptContainerCreator = (props: ContentScriptProps) => Awaiter<Element>;\n\n// Watch\nexport type ContentScriptWatchStrategy = (update: () => void, context: ContentScriptContext) => () => void;\n\n// Event\nexport enum ContentScriptEvent {\n Mount = \"mount\",\n Unmount = \"unmount\",\n Add = \"add\",\n Remove = \"remove\",\n}\n\nexport type ContentScriptEventCallback = (event: ContentScriptEvent, node: ContentScriptNode) => void;\n\nexport interface ContentScriptEventEmitter {\n on(callback: ContentScriptEventCallback): void;\n\n off(callback: ContentScriptEventCallback): void;\n\n emit(event: ContentScriptEvent, node: ContentScriptNode): void;\n\n emitMount(node: ContentScriptNode): void;\n\n emitUnmount(node: ContentScriptNode): void;\n\n emitAdd(node: ContentScriptNode): void;\n\n emitRemove(node: ContentScriptNode): void;\n\n removeAllListeners(): void;\n\n listenerCount(): number;\n\n hasListeners(): boolean;\n}\n\n// Context\nexport interface ContentScriptContext extends ContentScriptMount {\n nodes: ReadonlySet<ContentScriptNode>;\n\n /**\n * Registers a callback function that will be invoked when a specific content script context event occurs.\n *\n * @param {ContentScriptEventCallback} callback - The function to be executed when the event is triggered. Receives event-related data as its argument.\n * @return {Function} A function that can be called to unsubscribe the callback from the event.\n */\n watch(callback: ContentScriptEventCallback): () => void;\n\n /**\n * Stops watching for changes or events that were previously being observed.\n * Unsubscribes from all event listeners that were registered through the watch method.\n *\n * @return {void} No return value.\n */\n unwatch(): void;\n}\n\n// Main\nexport type ContentScriptMainFunction = (context: ContentScriptContext, options: ContentScriptOptions) => Awaiter<void>;\n\n// Node\nexport interface ContentScriptNode extends ContentScriptMount {\n anchor: Element;\n container?: Element;\n}\n\nexport type ContentScriptNodeSet = Set<ContentScriptNode>;\n\n// Definition\nexport interface ContentScriptDefinition extends ContentScriptEntrypointOptions {\n anchor?: ContentScriptAnchor | ContentScriptAnchorGetter;\n mount?: ContentScriptMountFunction;\n render?: ContentScriptRenderValue | ContentScriptRenderHandler;\n container?: ContentScriptContainerTag | ContentScriptContainerOptions | ContentScriptContainerFactory;\n watch?: true | ContentScriptWatchStrategy;\n main?: ContentScriptMainFunction;\n}\n\n// prettier-ignore\nexport interface ContentScriptResolvedDefinition extends Omit<ContentScriptDefinition, \"anchor\" | \"mount\" | \"container\" | \"render\" | \"watch\"> {\n anchor: ContentScriptAnchorResolver;\n mount: ContentScriptMountFunction;\n render?: ContentScriptRenderHandler;\n container: ContentScriptContainerCreator;\n watch: ContentScriptWatchStrategy;\n}\n\nexport interface ContentScriptAppendDefinition extends Omit<ContentScriptDefinition, \"mount\"> {\n append?: ContentScriptAppend;\n}\n\n// Builder\nexport interface ContentScriptBuilder extends EntrypointBuilder {\n getContext(): ContentScriptContext;\n}\n","import {TransportConfig, TransportDefinition, TransportType} from \"@typing/transport\";\nimport {ViewOptions} from \"@typing/view\";\nimport {Awaiter} from \"@typing/helpers\";\n\nexport const OffscreenGlobalKey = \"adnbnOffscreen\";\nexport const OffscreenGlobalAccess = \"adnbnOffscreenAccess\";\n\nexport enum OffscreenReason {\n /** A reason used for testing purposes only. */\n Testing = \"TESTING\",\n /** The offscreen document is responsible for playing audio. */\n AudioPlayback = \"AUDIO_PLAYBACK\",\n /** The offscreen document needs to embed and script an iframe in order to modify the iframe's content. */\n IframeScripting = \"IFRAME_SCRIPTING\",\n /** The offscreen document needs to embed an iframe and scrape its DOM to extract information. */\n DOMScraping = \"DOM_SCRAPING\",\n /** The offscreen document needs to interact with Blob objects (including URL.createObjectURL()). */\n Blobs = \"BLOBS\",\n /** The offscreen document needs to use the DOMParser API. */\n DOMParser = \"DOM_PARSER\",\n /** The offscreen document needs to interact with media streams from user media (e.g. getUserMedia()). */\n UserMedia = \"USER_MEDIA\",\n /** The offscreen document needs to interact with media streams from display media (e.g. getDisplayMedia()). */\n DisplayMedia = \"DISPLAY_MEDIA\",\n /** The offscreen document needs to use WebRTC APIs. */\n WebRTC = \"WEB_RTC\",\n /** The offscreen document needs to interact with the clipboard APIs(e.g. Navigator.clipboard). */\n Clipboard = \"CLIPBOARD\",\n /** Specifies that the offscreen document needs access to localStorage. */\n LocalStorage = \"LOCAL_STORAGE\",\n /** Specifies that the offscreen document needs to spawn workers. */\n Workers = \"WORKERS\",\n /** Specifies that the offscreen document needs to use navigator.getBattery. */\n BatteryStatus = \"BATTERY_STATUS\",\n /** Specifies that the offscreen document needs to use window.matchMedia. */\n MatchMedia = \"MATCH_MEDIA\",\n /** Specifies that the offscreen document needs to use navigator.geolocation. */\n Geolocation = \"GEOLOCATION\",\n}\n\nexport interface OffscreenConfig extends TransportConfig {\n reasons?: `${OffscreenReason}` | `${OffscreenReason}`[] | OffscreenReason | OffscreenReason[];\n justification?: string;\n}\n\nexport type OffscreenOptions = OffscreenConfig & ViewOptions;\n\nexport type OffscreenEntrypointOptions = Partial<OffscreenOptions>;\n\nexport type OffscreenMainHandler<T extends TransportType> = (\n offscreen: T,\n options: OffscreenEntrypointOptions\n) => Awaiter<void>;\n\nexport interface OffscreenDefinition<T extends TransportType>\n extends TransportDefinition<OffscreenOptions, T>,\n OffscreenEntrypointOptions {\n main?: OffscreenMainHandler<T>;\n}\n\nexport type OffscreenUnresolvedDefinition<T extends TransportType> = Partial<OffscreenDefinition<T>>;\n","import {Command, Mode, PackageName} from \"@typing/app\";\nimport {Browser} from \"@typing/browser\";\nimport {ContentScriptAppend} from \"@typing/content\";\nimport {OffscreenReason} from \"@typing/offscreen\";\n\nimport {Injector} from \"../types\";\n\nexport default (): Injector[] => {\n const resolvers: Injector[] = [];\n\n Object.entries(Browser).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"Browser\",\n name: key,\n value,\n });\n });\n\n Object.entries(Mode).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"Mode\",\n name: key,\n value,\n });\n });\n\n Object.entries(Command).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"Command\",\n name: key,\n value,\n });\n });\n\n Object.entries(ContentScriptAppend).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"ContentScriptAppend\",\n name: key,\n value,\n });\n });\n\n Object.entries(OffscreenReason).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"OffscreenReason\",\n name: key,\n value,\n });\n });\n\n return resolvers;\n};\n","import core from \"./core\";\nimport {Injector} from \"../types\";\n\nexport default (resolvers: Injector[]) =>\n (form: string, target: string, name: string): any => {\n return [...resolvers, ...core()].find(\n resolver => resolver.from === form && resolver.target === target && resolver.name === name\n )?.value;\n };\n","import ts from \"typescript\";\nimport fs from \"fs\";\nimport path from \"path\";\n\nimport {ImportResolver} from \"./resolvers\";\n\nimport injectors from \"./injectors\";\n\nimport {EnumMap, ImportMap, Variable, VariableMap} from \"./types\";\n\nexport default class EntryFile {\n private sourceFile?: ts.SourceFile;\n\n private variables?: VariableMap;\n\n private imports?: ImportMap;\n\n private enums?: EnumMap;\n\n protected importResolver?: ImportResolver;\n\n static make<T extends EntryFile>(this: new (file: string) => T, file: string): T {\n return new this(file);\n }\n\n constructor(protected readonly file: string) {}\n\n public getSourceFile(): ts.SourceFile {\n if (this.sourceFile) {\n return this.sourceFile;\n }\n\n const sourceCode = fs.readFileSync(this.file, \"utf8\");\n\n return (this.sourceFile = ts.createSourceFile(this.file, sourceCode, ts.ScriptTarget.ESNext, true));\n }\n\n public getImports(): ImportMap {\n if (this.imports) {\n return this.imports;\n }\n\n this.imports = new Map();\n\n const parse = (node: ts.Node) => {\n if (ts.isImportDeclaration(node) && node.moduleSpecifier) {\n const importPath = (node.moduleSpecifier as ts.StringLiteral).text;\n if (node.importClause) {\n // default import: import X from '...'\n if (node.importClause.name) {\n this.imports?.set(node.importClause.name.text, this.getInputResolver().get(importPath));\n }\n // named imports: import { A, B } from '...'\n if (node.importClause.namedBindings && ts.isNamedImports(node.importClause.namedBindings)) {\n node.importClause.namedBindings.elements.forEach(el => {\n this.imports?.set(el.name.text, this.getInputResolver().get(importPath));\n });\n }\n }\n }\n // import equals: import X = Y.Z\n else if (ts.isImportEqualsDeclaration(node) && ts.isExternalModuleReference(node.moduleReference)) {\n if (node.moduleReference.expression && ts.isStringLiteral(node.moduleReference.expression)) {\n const importPath = node.moduleReference.expression.text;\n this.imports?.set(node.name.text, this.getInputResolver().get(importPath));\n }\n }\n // import equals with qualified name: import X = Y.Z\n else if (ts.isImportEqualsDeclaration(node)) {\n // For qualified names like chrome.tabs.Tab, we don't need to resolve a path\n // Just store the full qualified name as the \"import path\"\n const qualifiedName = node.moduleReference.getText();\n this.imports?.set(node.name.text, qualifiedName);\n }\n\n ts.forEachChild(node, parse);\n };\n\n parse(this.getSourceFile());\n\n return this.imports;\n }\n\n public getEnums(): EnumMap {\n if (this.enums) {\n return this.enums;\n }\n\n this.enums = new Map();\n\n const parse = (node: ts.Node) => {\n if (ts.isEnumDeclaration(node)) {\n const enumName = node.name.text;\n const enumProperties: Map<string, string | number> = new Map();\n\n node.members.forEach(member => {\n const key = member.name.getText();\n const value = member.initializer ? member.initializer.getText().replace(/['\"]/g, \"\") : key;\n\n enumProperties.set(key, value);\n });\n\n this.enums?.set(enumName, enumProperties);\n }\n\n ts.forEachChild(node, parse);\n };\n\n parse(this.getSourceFile());\n\n return this.enums;\n }\n\n public getVariables(): VariableMap {\n if (this.variables) {\n return this.variables;\n }\n\n this.variables = new Map();\n\n const parse = (node: ts.Node) => {\n if (ts.isVariableStatement(node)) {\n const isExported = node.modifiers?.some(modifier => modifier.kind === ts.SyntaxKind.ExportKeyword);\n\n node.declarationList.declarations.forEach(declaration => {\n if (ts.isIdentifier(declaration.name) && declaration.initializer) {\n const name = declaration.name.text;\n const value = this.parseNode(declaration.initializer);\n\n this.variables?.set(name, {\n name,\n value,\n exported: isExported || false,\n });\n }\n });\n }\n\n if (ts.isExportDeclaration(node) && node.exportClause && ts.isNamedExports(node.exportClause)) {\n node.exportClause.elements.forEach(el => {\n const name = el.name.text;\n\n if (this.variables?.has(name)) {\n const variable = this.variables?.get(name) as Variable;\n\n this.variables?.set(name, {\n name,\n value: variable.value,\n exported: true,\n });\n }\n });\n }\n\n if (ts.isExportAssignment(node)) {\n const expr = node.expression;\n if (ts.isIdentifier(expr) && this.variables?.has(expr.text)) {\n const variable = this.variables?.get(expr.text) as Variable;\n const name = \"default\";\n\n this.variables?.set(name, {\n name,\n value: variable.value,\n exported: true,\n });\n }\n }\n\n ts.forEachChild(node, parse);\n };\n\n parse(this.getSourceFile());\n\n return this.variables;\n }\n\n protected resolveValue(from: string, target: string, name: string): any {\n return injectors([])(from, target, name);\n }\n\n protected findPropertyAccessValue(property: ts.Node): any {\n if (ts.isPropertyAccessExpression(property)) {\n const objectName = property.expression.getText();\n const propertyName = property.name.getText();\n\n const varItem = this.getVariables().get(objectName);\n\n if (varItem) {\n return varItem.value;\n }\n\n const enumItem = this.getEnums().get(objectName);\n\n if (enumItem) {\n return enumItem.get(propertyName);\n }\n\n const importItem = this.getImports().get(objectName);\n\n if (importItem) {\n const resolverItem = this.resolveValue(importItem, objectName, propertyName);\n\n if (resolverItem) {\n return resolverItem;\n }\n\n return EntryFile.make(importItem).findPropertyAccessValue(property);\n }\n\n return `${objectName}.${propertyName}`;\n }\n\n return undefined;\n }\n\n public parseNode(node?: ts.Node): any {\n if (!node) {\n return undefined;\n }\n\n switch (node.kind) {\n case ts.SyntaxKind.StringLiteral:\n return (node as ts.StringLiteral).text;\n case ts.SyntaxKind.TrueKeyword:\n return true;\n case ts.SyntaxKind.FalseKeyword:\n return false;\n case ts.SyntaxKind.NullKeyword:\n return null;\n case ts.SyntaxKind.NumericLiteral:\n return parseFloat((node as ts.NumericLiteral).text);\n case ts.SyntaxKind.Identifier: {\n const id = node as ts.Identifier;\n const name = id.text;\n // local variable\n const local = this.variables?.get(name);\n if (local && local.value !== undefined) {\n return local.value;\n }\n // imported constant: try to resolve its value from source file\n const importPath = this.getImports().get(name);\n if (importPath) {\n // load imported file and check its variables\n const parser = EntryFile.make(importPath);\n const imported = parser.getVariables().get(name);\n if (imported && imported.value !== undefined) {\n return imported.value;\n }\n }\n return name;\n }\n case ts.SyntaxKind.ArrayLiteralExpression:\n return (node as ts.ArrayLiteralExpression).elements.map(element => this.parseNode(element));\n case ts.SyntaxKind.ObjectLiteralExpression:\n return (node as ts.ObjectLiteralExpression).properties\n .filter(\n (property): property is ts.PropertyAssignment =>\n ts.isPropertyAssignment(property) || ts.isShorthandPropertyAssignment(property)\n )\n .reduce(\n (acc, property) => {\n if (ts.isComputedPropertyName(property.name)) {\n return acc;\n }\n\n const key = (property.name as ts.Identifier | ts.StringLiteral).text;\n let value = this.parseNode(property.initializer);\n\n if (typeof value === \"string\" && this.variables?.has(value)) {\n value = this.variables?.get(value)?.value;\n }\n\n acc[key] = value;\n\n return acc;\n },\n {} as Record<string, any>\n );\n case ts.SyntaxKind.PropertyAccessExpression: {\n return this.findPropertyAccessValue(node);\n }\n default:\n return undefined;\n }\n }\n\n protected getInputResolver(): ImportResolver {\n if (this.importResolver) {\n return this.importResolver;\n }\n\n return this.setImportResolver(new ImportResolver());\n }\n\n public setImportResolver(resolver: ImportResolver): ImportResolver {\n return (this.importResolver = resolver.setBaseDir(path.dirname(this.file)));\n }\n}\n","import ts from \"typescript\";\nimport _ from \"lodash\";\n\nimport SourceFile from \"./SourceFile\";\n\nimport {PackageName} from \"@typing/app\";\n\nexport default class<T extends Record<string, any>> extends SourceFile {\n protected definitions = new Set<string>();\n\n protected definition: string | null | undefined = undefined;\n\n protected properties = new Set<string>();\n\n public setDefinition(definition: string | string[]): this {\n if (_.isString(definition)) {\n definition = [definition];\n }\n\n definition.forEach(definition => this.definitions.add(definition));\n\n return this;\n }\n\n public setProperties(properties: string[]): this {\n properties.forEach(property => this.properties.add(property));\n\n return this;\n }\n\n public getOptions(): T {\n return {...this.getOptionsFromVariables(), ...this.getOptionsFromDefinition()};\n }\n\n public getDefinition(): string | undefined {\n if (this.definition === undefined) {\n this.getOptionsFromDefinition();\n }\n\n if (this.definition === null) {\n return;\n }\n\n return this.definition;\n }\n\n protected getOptionsFromVariables(): T {\n const options = Array.from(this.getVariables().values())\n .filter(({name, exported}) => exported && this.properties.has(name))\n .reduce((config, {name, value}) => ({...config, [name]: value}), {});\n\n return options as T;\n }\n\n protected getOptionsFromDefinition(): T {\n let options = {} as T;\n\n const parse = (node: ts.Node) => {\n if (ts.isExportAssignment(node)) {\n const expr = this.getExpressionForOptions(node.expression);\n\n if (expr) {\n options = this.parseNode(expr);\n }\n }\n\n ts.forEachChild(node, parse);\n };\n\n parse(this.getSourceFile());\n\n return _.pickBy(options, (_, key) => this.properties.has(key)) as T;\n }\n\n protected getExpressionForOptions(expr: ts.Expression): ts.Expression | undefined {\n this.definition = null;\n\n if (ts.isObjectLiteralExpression(expr)) {\n return expr;\n } else if (\n (ts.isAsExpression(expr) || ts.isSatisfiesExpression(expr)) &&\n ts.isObjectLiteralExpression(expr.expression)\n ) {\n return expr.expression;\n } else if (ts.isCallExpression(expr) && ts.isIdentifier(expr.expression)) {\n const functionName = expr.expression.text;\n\n if (this.getImports().get(functionName) !== PackageName) {\n console.warn(`Function ${functionName} is not imported from '${PackageName}' on file ${this.file}`);\n\n return;\n }\n\n if (this.definitions.has(functionName) && expr.arguments.length > 0) {\n const arg = expr.arguments[0];\n\n if (ts.isObjectLiteralExpression(arg)) {\n this.definition = functionName;\n\n return arg;\n }\n }\n }\n }\n}\n","import ts from \"typescript\";\nimport SourceFile from \"../SourceFile\";\nimport {MemberSignature} from \"./types\";\n\n/**\n * Abstract base class for all expression parsers.\n */\nexport default abstract class AbstractParser {\n /**\n * Constructor for the parser.\n *\n * @param sourceFile The source file to parse\n */\n protected constructor(protected readonly sourceFile: SourceFile) {}\n\n /**\n * Parse a node and return a record of member signatures.\n *\n * @param node The node to parse\n * @returns A record of member signatures or undefined if the node cannot be parsed\n */\n abstract parse(node: ts.Node): Record<string, MemberSignature> | undefined;\n\n /**\n * Extracts a textual property name.\n *\n * @param name The property name node\n * @returns The extracted name as a string\n */\n public getName(name: ts.PropertyName | ts.BindingName | ts.Node): string {\n if (ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name)) {\n return name.text;\n }\n\n return name.getText();\n }\n\n /**\n * Unwraps an expression by removing type assertions, parentheses, etc.\n *\n * @param expr The expression to unwrap\n * @returns The unwrapped expression\n */\n public unwrapExpression(expr: ts.Expression): ts.Expression {\n // remove `as` and `satisfies` assertions, parentheses\n if (ts.isAsExpression(expr) || ts.isSatisfiesExpression(expr) || ts.isParenthesizedExpression(expr)) {\n return this.unwrapExpression(expr.expression as ts.Expression);\n }\n\n return expr;\n }\n}\n","import ts from \"typescript\";\n\nimport SourceFile from \"../SourceFile\";\nimport AbstractParser from \"./AbstractParser\";\nimport NodeFinder from \"./NodeFinder\";\nimport ClassParser from \"./ClassParser\";\nimport ObjectParser from \"./ObjectParser\";\n\nimport {MemberSignature} from \"./types\";\n\n/**\n * Parses function expressions and arrow functions.\n */\nexport default class FunctionParser extends AbstractParser {\n /**\n * Constructor for the FunctionParser.\n *\n * @param sourceFile The source file to parse\n * @param nodeFinder The node finder to use for finding nodes\n * @param objectParser The object parser to use for parsing object literals\n * @param classParser The class parser to use for parsing classes\n */\n constructor(\n sourceFile: SourceFile,\n private readonly nodeFinder: NodeFinder,\n private readonly objectParser: ObjectParser,\n private readonly classParser: ClassParser\n ) {\n super(sourceFile);\n }\n\n /**\n * Parses a function or arrow function: finds its return expression,\n * then parses that if it's an object literal or a class instantiation.\n *\n * @param fn The function expression or arrow function to parse\n * @returns A record of member signatures or undefined if the function cannot be parsed\n */\n public parse(fn: ts.FunctionExpression | ts.ArrowFunction): Record<string, MemberSignature> | undefined {\n let retExpr: ts.Expression | undefined;\n\n // block-bodied function\n if (ts.isBlock(fn.body)) {\n for (const stmt of fn.body.statements) {\n if (ts.isReturnStatement(stmt) && stmt.expression) {\n retExpr = stmt.expression;\n break;\n }\n }\n } else {\n // concise arrow\n retExpr = fn.body;\n }\n\n if (!retExpr) return undefined;\n\n // unwrap assertions, parentheses, wrapper calls\n const expr = this.unwrapExpression(retExpr);\n\n // object literal return\n if (ts.isObjectLiteralExpression(expr)) {\n return this.objectParser.parse(expr);\n }\n\n // class instance return: new ClassName(...) or inline class expression\n if (ts.isNewExpression(expr)) {\n const ctor = expr.expression;\n\n // external named class\n if (ts.isIdentifier(ctor)) {\n return this.classParser.parseFileClass(ctor.text);\n }\n\n // inline anonymous class expression\n if (ts.isClassExpression(ctor)) {\n return this.classParser.parse(ctor);\n }\n }\n\n // variable reference return: identifier pointing to object or class instance\n if (ts.isIdentifier(retExpr)) {\n const name = retExpr.text;\n const decl = this.nodeFinder.findVariableDeclaration(name);\n\n if (decl && decl.initializer) {\n const init = decl.initializer;\n\n if (ts.isObjectLiteralExpression(init)) {\n return this.objectParser.parse(init);\n }\n\n if (ts.isNewExpression(init)) {\n const ctor2 = init.expression;\n\n if (ts.isIdentifier(ctor2)) {\n return this.classParser.parseFileClass(ctor2.text);\n }\n\n if (ts.isClassExpression(ctor2)) {\n return this.classParser.parse(ctor2);\n }\n }\n }\n }\n\n return undefined;\n }\n}\n","import ts from \"typescript\";\n\n/**\n * Parses JSDoc comments to extract type information.\n */\nexport default class JSDocParser {\n /**\n * Extracts a type from a JSDoc tag with @type annotation.\n *\n * @param node The node to extract JSDoc type from\n * @returns The extracted type or undefined if no JSDoc type is found\n */\n public getJSDocType(node: ts.Node): string | undefined {\n const jsDocTags = this.getJSDocTags(node);\n\n // Look for @type tag\n for (const tag of jsDocTags) {\n if (ts.isJSDocTypeTag(tag) && tag.typeExpression) {\n return this.parseJSDocTypeExpression(tag.typeExpression);\n }\n }\n\n return undefined;\n }\n\n /**\n * Extracts parameter types from JSDoc @param annotations.\n *\n * @param node The function-like node to extract parameter types from\n * @returns A map of parameter names to their JSDoc types\n */\n public getJSDocParameterTypes(node: ts.SignatureDeclaration): Map<string, string> {\n const result = new Map<string, string>();\n const nestedParams = new Map<string, Map<string, string>>();\n const jsDocTags = this.getJSDocTags(node);\n\n // Get custom type definitions\n const typeDefinitions = this.getJSDocTypeDefinitions(node);\n\n // First pass: collect all parameters and their types\n for (const tag of jsDocTags) {\n if (ts.isJSDocParameterTag(tag) && tag.typeExpression && tag.name) {\n // Extract just the parameter name without any JSDoc comments\n let paramName = tag.name.getText();\n\n // Clean up the parameter name to remove any JSDoc comments\n // This handles both regular parameters and nested parameters like options.method\n const match = paramName.match(/(\\w+)(?:\\.(\\w+))?/);\n if (match) {\n if (match[2]) {\n // This is a nested parameter like options.method\n const parentParam = match[1];\n const childProp = match[2];\n\n // Create or update the nested parameter map\n if (!nestedParams.has(parentParam)) {\n nestedParams.set(parentParam, new Map<string, string>());\n }\n\n let paramType = this.parseJSDocTypeExpression(tag.typeExpression);\n\n // Check if the parameter type is a custom type definition\n if (typeDefinitions.has(paramType)) {\n paramType = typeDefinitions.get(paramType)!;\n }\n\n nestedParams.get(parentParam)!.set(childProp, paramType);\n } else {\n // This is a regular parameter\n paramName = match[1];\n\n // If this parameter already has nested properties, don't override it\n if (!nestedParams.has(paramName)) {\n let paramType = this.parseJSDocTypeExpression(tag.typeExpression);\n\n // Check if the parameter type is a custom type definition\n if (typeDefinitions.has(paramType)) {\n paramType = typeDefinitions.get(paramType)!;\n }\n\n result.set(paramName, paramType);\n }\n }\n }\n }\n }\n\n // Second pass: build object types for nested parameters\n for (const [parentParam, childParams] of nestedParams.entries()) {\n const properties: string[] = [];\n\n for (const [childProp, childType] of childParams.entries()) {\n properties.push(`${childProp}: ${childType}`);\n }\n\n // Create the object type\n result.set(parentParam, `{${properties.join(\"; \")};}`);\n }\n\n return result;\n }\n\n /**\n * Extracts the return type from a JSDoc @returns annotation.\n *\n * @param node The function-like node to extract return type from\n * @returns The extracted return type or undefined if no JSDoc return type is found\n */\n public getJSDocReturnType(node: ts.SignatureDeclaration): string | undefined {\n const jsDocTags = this.getJSDocTags(node);\n\n // Look for @returns tag\n for (const tag of jsDocTags) {\n if (ts.isJSDocReturnTag(tag) && tag.typeExpression) {\n return this.parseJSDocTypeExpression(tag.typeExpression);\n }\n }\n\n return undefined;\n }\n\n /**\n * Gets all JSDoc tags for a node.\n *\n * @param node The node to get JSDoc tags for\n * @returns An array of JSDoc tags\n */\n private getJSDocTags(node: ts.Node): ts.JSDocTag[] {\n const jsDocTags: ts.JSDocTag[] = [];\n\n // Get all JSDoc comments attached to the node\n const jsDocComments = ts.getJSDocTags(node);\n if (jsDocComments) {\n jsDocTags.push(...jsDocComments);\n }\n\n return jsDocTags;\n }\n\n /**\n * Extracts type parameters from JSDoc @template annotations.\n *\n * @param node The function-like node to extract type parameters from\n * @returns An array of type parameter names\n */\n public getJSDocTypeParameters(node: ts.SignatureDeclaration): string[] {\n const result: string[] = [];\n const jsDocTags = this.getJSDocTags(node);\n\n // Look for @template tags\n for (const tag of jsDocTags) {\n if (ts.isJSDocTemplateTag(tag) && tag.typeParameters) {\n // Iterate through each type parameter and extract its name\n for (const typeParam of tag.typeParameters) {\n if (typeParam.name) {\n const typeName = typeParam.name.getText();\n result.push(typeName);\n }\n }\n }\n }\n\n return result;\n }\n\n /**\n * Extracts custom type definitions from JSDoc @typedef annotations.\n *\n * @param node The node to extract custom type definitions from\n * @returns A map of type names to their definitions\n */\n public getJSDocTypeDefinitions(node: ts.Node): Map<string, string> {\n const result = new Map<string, string>();\n const jsDocTags = this.getJSDocTags(node);\n\n // Look for @typedef tags\n for (const tag of jsDocTags) {\n if (ts.isJSDocTypedefTag(tag) && tag.name && tag.typeExpression) {\n const typeName = tag.name.getText();\n const typeExpression = this.parseJSDocTypeExpression(tag.typeExpression);\n\n // Store the type definition\n result.set(typeName, typeExpression);\n }\n }\n\n // Look for @property tags to build object type definitions\n const typedefProperties = new Map<string, Map<string, string>>();\n\n for (const tag of jsDocTags) {\n if (ts.isJSDocPropertyTag(tag) && tag.name && tag.typeExpression) {\n // The property tag should be associated with a typedef\n const comment = tag.parent?.getText() || \"\";\n const typedefMatch = comment.match(/@typedef\\s+\\{[^}]+\\}\\s+(\\w+)/);\n\n if (typedefMatch) {\n const typedefName = typedefMatch[1];\n const propName = tag.name.getText();\n const propType = this.parseJSDocTypeExpression(tag.typeExpression);\n const isOptional = tag.isBracketed || comment.includes(`[${propName}]`);\n\n // Create or update the property map for this typedef\n if (!typedefProperties.has(typedefName)) {\n typedefProperties.set(typedefName, new Map<string, string>());\n }\n\n // Add the property to the map\n typedefProperties\n .get(typedefName)!\n .set(propName, `${propName}${isOptional ? \"?\" : \"\"}: ${propType}`);\n }\n }\n }\n\n // Build object type definitions from properties\n for (const [typedefName, properties] of typedefProperties.entries()) {\n const props = Array.from(properties.values());\n if (props.length > 0) {\n result.set(typedefName, `{ ${props.join(\"; \")}; }`);\n }\n }\n\n return result;\n }\n\n /**\n * Parses a JSDoc type expression into a string representation.\n *\n * @param typeExpression The JSDoc type expression to parse\n * @returns The parsed type as a string\n */\n private parseJSDocTypeExpression(typeExpression: ts.JSDocTypeExpression | ts.JSDocTypeLiteral): string {\n // Handle JSDocTypeLiteral\n if (ts.isJSDocTypeLiteral(typeExpression)) {\n // For JSDocTypeLiteral, we need to build a type string from its properties\n if (typeExpression.jsDocPropertyTags && typeExpression.jsDocPropertyTags.length > 0) {\n const props = typeExpression.jsDocPropertyTags.map(tag => {\n const name = tag.name.getText();\n const type = tag.typeExpression ? this.parseJSDocTypeExpression(tag.typeExpression) : \"any\";\n const optional = tag.isBracketed;\n return `${name}${optional ? \"?\" : \"\"}: ${type}`;\n });\n return `{ ${props.join(\"; \")}; }`;\n }\n // If it's an array type, return array of any\n if (typeExpression.isArrayType) {\n return \"any[]\";\n }\n // Default to any for empty type literals\n return \"any\";\n }\n\n // Extract the type from the JSDoc type expression (for JSDocTypeExpression)\n const typeNode = typeExpression.type;\n\n // Check if typeNode is undefined\n if (!typeNode) {\n return \"any\";\n }\n\n // Simple approach: extract the text directly from the JSDoc comment\n // This handles most common JSDoc type formats\n const text = typeNode.getText();\n\n // Handle special cases for common JSDoc types\n if (text === \"*\") {\n return \"any\";\n }\n\n // Handle array types (e.g., string[])\n if (text.endsWith(\"[]\")) {\n return text;\n }\n\n // Handle object types (e.g., {foo: string, bar: number})\n if (text.startsWith(\"{\") && text.endsWith(\"}\")) {\n return this.formatObjectType(text);\n }\n\n // Handle union types (e.g., string|number)\n if (text.includes(\"|\")) {\n return text;\n }\n\n // Handle function types (e.g., function(string): number)\n if (text.includes(\"function(\")) {\n return text;\n }\n\n // Handle import types (e.g., import('somelib').SomeType)\n if (text.includes(\"import(\")) {\n return text;\n }\n\n // Handle generic types (e.g., Array<string>, Promise<Object>)\n if (text.includes(\"<\") && text.includes(\">\")) {\n // Extract the type name and arguments\n const typeName = text.substring(0, text.indexOf(\"<\"));\n const typeArgs = text.substring(text.indexOf(\"<\") + 1, text.lastIndexOf(\">\"));\n\n // Check if the type arguments contain an object type\n if (typeArgs.includes(\"{\") && typeArgs.includes(\"}\")) {\n // Format the object type in the type arguments\n const formattedTypeArgs = this.formatNestedTypes(typeArgs);\n return `${typeName}<${formattedTypeArgs}>`;\n }\n\n return `${typeName}<${typeArgs}>`;\n }\n\n // For simple types, just return the text\n return text;\n }\n\n /**\n * Formats an object type string to match the expected format.\n *\n * @param objectType The object type string to format\n * @returns The formatted object type string\n */\n private formatObjectType(objectType: string): string {\n // Remove the braces and get the content\n const content = objectType.substring(1, objectType.length - 1).trim();\n\n // Split by commas, but only at the top level (not inside nested objects)\n const properties: string[] = [];\n let depth = 0;\n let currentProp = \"\";\n\n for (let i = 0; i < content.length; i++) {\n const char = content[i];\n\n if (char === \"{\") {\n depth++;\n currentProp += char;\n } else if (char === \"}\") {\n depth--;\n currentProp += char;\n } else if (char === \",\" && depth === 0) {\n properties.push(currentProp.trim());\n currentProp = \"\";\n } else {\n currentProp += char;\n }\n }\n\n if (currentProp.trim()) {\n properties.push(currentProp.trim());\n }\n\n // Process each property to handle nested objects\n const formattedProperties = properties.map(prop => {\n const colonIndex = prop.indexOf(\":\");\n if (colonIndex === -1) return prop;\n\n const propName = prop.substring(0, colonIndex).trim();\n let propType = prop.substring(colonIndex + 1).trim();\n\n // If the property type is an object, format it recursively\n if (propType.startsWith(\"{\") && propType.endsWith(\"}\")) {\n propType = this.formatObjectType(propType);\n }\n\n return `${propName}: ${propType}`;\n });\n\n // Join properties with semicolons\n return `{ ${formattedProperties.join(\"; \")}; }`;\n }\n\n /**\n * Formats nested types in a type string.\n *\n * @param typeString The type string to format\n * @returns The formatted type string\n */\n private formatNestedTypes(typeString: string): string {\n // Check if the type string contains an object type\n if (typeString.includes(\"{\") && typeString.includes(\"}\")) {\n // Find all object types in the type string\n let result = typeString;\n let startIndex = result.indexOf(\"{\");\n\n while (startIndex !== -1) {\n // Find the matching closing brace\n let depth = 1;\n let endIndex = startIndex + 1;\n\n while (depth > 0 && endIndex < result.length) {\n if (result[endIndex] === \"{\") {\n depth++;\n } else if (result[endIndex] === \"}\") {\n depth--;\n }\n endIndex++;\n }\n\n if (depth === 0) {\n // Extract the object type\n const objectType = result.substring(startIndex, endIndex);\n // Format the object type\n const formattedObjectType = this.formatObjectType(objectType);\n // Replace the object type in the result\n result = result.substring(0, startIndex) + formattedObjectType + result.substring(endIndex);\n // Find the next object type\n startIndex = result.indexOf(\"{\", startIndex + formattedObjectType.length);\n } else {\n // No matching closing brace found, break the loop\n break;\n }\n }\n\n return result;\n }\n\n return typeString;\n }\n\n /**\n * Adds a property to an object type string.\n *\n * @param objectType The object type string to add the property to\n * @param propertyName The name of the property to add\n * @param propertyType The type of the property to add\n * @returns The updated object type string\n */\n private addPropertyToObjectType(objectType: string, propertyName: string, propertyType: string): string {\n // Remove the braces and split by semicolons\n const content = objectType.substring(1, objectType.length - 1).trim();\n const properties = content\n ? content\n .split(\";\")\n .map(p => p.trim())\n .filter(Boolean)\n : [];\n\n // Check if the property already exists\n const propIndex = properties.findIndex(p => p.startsWith(`${propertyName}:`));\n\n if (propIndex >= 0) {\n // Update the existing property\n properties[propIndex] = `${propertyName}: ${propertyType}`;\n } else {\n // Add the new property\n properties.push(`${propertyName}: ${propertyType}`);\n }\n\n // Reconstruct the object type\n return `{ ${properties.join(\"; \")}; }`;\n }\n}\n","export const shouldIncludeMember = (name: string): boolean => {\n return !name.startsWith(\"_\");\n};\n","import ts from \"typescript\";\nimport _ from \"lodash\";\n\nimport SourceFile from \"../SourceFile\";\nimport AbstractParser from \"./AbstractParser\";\nimport SignatureBuilder from \"./SignatureBuilder\";\nimport JSDocParser from \"./JSDocParser\";\n\nimport {shouldIncludeMember} from \"./helpers/memberFilters\";\n\nimport {MemberSignature} from \"./types\";\n\n/**\n * Parses object literal expressions.\n */\nexport default class ObjectParser extends AbstractParser {\n /**\n * Constructor for the ObjectParser.\n *\n * @param sourceFile The source file to parse\n * @param signatureBuilder The signature builder to use for building signatures\n */\n private readonly jsDocParser: JSDocParser;\n\n constructor(\n sourceFile: SourceFile,\n private readonly signatureBuilder: SignatureBuilder\n ) {\n super(sourceFile);\n\n this.jsDocParser = new JSDocParser();\n }\n\n /**\n * Parses an object literal: each property becomes a member signature.\n *\n * @param obj The object literal expression to parse\n * @returns A record of member signatures\n */\n public parse(obj: ts.ObjectLiteralExpression): Record<string, MemberSignature> {\n const result: Record<string, MemberSignature> = {};\n\n for (const prop of obj.properties) {\n // key name helper\n const key = this.getName(prop.name ?? prop);\n\n // Skip members that start with underscore\n if (!shouldIncludeMember(key)) {\n continue;\n }\n\n if (ts.isPropertyAssignment(prop)) {\n const init = prop.initializer;\n\n if (ts.isFunctionExpression(init) || ts.isArrowFunction(init)) {\n result[key] = this.signatureBuilder.getMethodSignature(init);\n } else {\n // Check for JSDoc @type annotation\n const jsDocType = this.jsDocParser.getJSDocType(prop);\n const tsType = this.inferTypeFromExpression(init);\n\n result[key] = {\n kind: \"property\",\n type: jsDocType || tsType,\n };\n }\n } else if (ts.isMethodDeclaration(prop)) {\n result[key] = this.signatureBuilder.getMethodSignature(prop);\n } else if (ts.isShorthandPropertyAssignment(prop)) {\n const name = prop.name.text;\n const variable = this.sourceFile.getVariables().get(name);\n const val = variable ? variable.value : undefined;\n\n let type = \"any\";\n\n if (!_.isUndefined(val)) {\n if (_.isString(val)) {\n type = \"string\";\n } else if (_.isNumber(val)) {\n type = \"number\";\n } else if (_.isBoolean(val)) {\n type = \"boolean\";\n } else if (_.isArray(val)) {\n type = \"array\";\n } else if (_.isPlainObject(val)) {\n type = \"object\";\n }\n }\n\n result[key] = {kind: \"property\", type};\n }\n }\n\n return result;\n }\n\n /**\n * Infers a type string from an expression.\n *\n * @param expr The expression to infer a type from\n * @returns The inferred type as a string\n */\n public inferTypeFromExpression(expr: ts.Expression): string {\n const val = this.sourceFile.parseNode(expr);\n\n switch (typeof val) {\n case \"string\":\n return \"string\";\n case \"number\":\n return \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"object\":\n if (val === null) return \"null\";\n if (_.isArray(val)) return \"array\";\n return \"object\";\n default:\n return \"any\";\n }\n }\n}\n","import ts from \"typescript\";\nimport SourceFile from \"../SourceFile\";\n\n/**\n * Finds nodes in the TypeScript AST.\n */\nexport default class NodeFinder {\n /**\n * Constructor for the NodeFinder.\n *\n * @param sourceFile The source file to find nodes in\n */\n constructor(private sourceFile: SourceFile) {}\n\n /**\n * Generic method to find a node of a specific type by name in the AST.\n *\n * @param predicate The predicate to match the node\n * @param name The name to search for\n * @returns The found node or undefined if not found\n */\n public findNodeByName<T extends ts.Node>(\n predicate: (node: ts.Node, name: string) => node is T,\n name: string\n ): T | undefined {\n const sf = this.sourceFile.getSourceFile();\n let found: T | undefined;\n\n const visit = (node: ts.Node) => {\n if (predicate(node, name)) {\n found = node;\n } else {\n ts.forEachChild(node, visit);\n }\n };\n\n ts.forEachChild(sf, visit);\n return found;\n }\n\n /**\n * Searches the AST of this file for a class declaration by name.\n *\n * @param name The name of the class to find\n * @returns The class declaration or undefined if not found\n */\n public findClassDeclaration(name: string): ts.ClassDeclaration | undefined {\n return this.findNodeByName<ts.ClassDeclaration>(\n (node, searchName): node is ts.ClassDeclaration =>\n ts.isClassDeclaration(node) && node.name?.text === searchName,\n name\n );\n }\n\n /**\n * Searches the AST of this file for a type alias declaration by name.\n *\n * @param name The name of the type alias to find\n * @returns The type alias declaration or undefined if not found\n */\n public findTypeAliasDeclaration(name: string): ts.TypeAliasDeclaration | undefined {\n return this.findNodeByName<ts.TypeAliasDeclaration>(\n (node, searchName): node is ts.TypeAliasDeclaration =>\n ts.isTypeAliasDeclaration(node) && node.name.text === searchName,\n name\n );\n }\n\n /**\n * Searches the AST of this file for an interface declaration by name.\n *\n * @param name The name of the interface to find\n * @returns The interface declaration or undefined if not found\n */\n public findInterfaceDeclaration(name: string): ts.InterfaceDeclaration | undefined {\n return this.findNodeByName<ts.InterfaceDeclaration>(\n (node, searchName): node is ts.InterfaceDeclaration =>\n ts.isInterfaceDeclaration(node) && node.name.text === searchName,\n name\n );\n }\n\n /**\n * Searches the AST of this file for a variable declaration by name.\n *\n * @param name The name of the variable to find\n * @returns The variable declaration or undefined if not found\n */\n public findVariableDeclaration(name: string): ts.VariableDeclaration | undefined {\n return this.findNodeByName<ts.VariableDeclaration>(\n (node, searchName): node is ts.VariableDeclaration =>\n ts.isVariableDeclaration(node) && ts.isIdentifier(node.name) && node.name.text === searchName,\n name\n );\n }\n\n /**\n * Searches the AST of this file for an import equals declaration by name.\n *\n * @param name The name of the import equals declaration to find\n * @returns The import equals declaration or undefined if not found\n */\n public findImportEqualsDeclaration(name: string): ts.ImportEqualsDeclaration | undefined {\n return this.findNodeByName<ts.ImportEqualsDeclaration>(\n (node, searchName): node is ts.ImportEqualsDeclaration =>\n ts.isImportEqualsDeclaration(node) && ts.isIdentifier(node.name) && node.name.text === searchName,\n name\n );\n }\n}\n","import ts from \"typescript\";\nimport fs from \"fs\";\nimport SourceFile from \"../SourceFile\";\nimport NodeFinder from \"./NodeFinder\";\n\n/**\n * Resolves TypeScript type nodes to string representations.\n */\nexport default class TypeResolver {\n /**\n * Constructor for the TypeResolver.\n *\n * @param sourceFile The source file to resolve types from\n * @param nodeFinder Optional NodeFinder instance to use for finding nodes\n */\n constructor(\n private readonly sourceFile: SourceFile,\n private readonly nodeFinder?: NodeFinder\n ) {}\n\n /**\n * Resolves a TypeScript type node to a string, inlining type aliases when possible.\n *\n * @param typeNode The type node to resolve\n * @returns The resolved type as a string\n */\n public resolveTypeNode(typeNode: ts.TypeNode): string {\n // Handle union types (like Tab | undefined)\n if (ts.isUnionTypeNode(typeNode)) {\n return this.resolveUnionType(typeNode);\n }\n\n // Handle array types (like Tab[])\n if (ts.isArrayTypeNode(typeNode)) {\n return this.resolveArrayType(typeNode);\n }\n\n // inline type aliases\n if (ts.isTypeReferenceNode(typeNode)) {\n return this.resolveTypeReference(typeNode);\n }\n\n // fallback: use textual representation\n return typeNode.getText();\n }\n\n /**\n * Resolves a union type node to a string.\n *\n * @param typeNode The union type node to resolve\n * @returns The resolved union type as a string\n */\n public resolveUnionType(typeNode: ts.UnionTypeNode): string {\n const types = typeNode.types.map(t => this.resolveTypeNode(t));\n return types.join(\" | \");\n }\n\n /**\n * Resolves an array type node to a string.\n *\n * @param typeNode The array type node to resolve\n * @returns The resolved array type as a string\n */\n public resolveArrayType(typeNode: ts.ArrayTypeNode): string {\n const elementType = this.resolveTypeNode(typeNode.elementType);\n return `${elementType}[]`;\n }\n\n /**\n * Resolves a type reference node to a string, inlining type aliases when possible.\n *\n * @param typeNode The type reference node to resolve\n * @returns The resolved type reference as a string\n */\n public resolveTypeReference(typeNode: ts.TypeReferenceNode): string {\n const name = typeNode.typeName.getText();\n\n // Try to inline the type alias\n const inlined = this.inlineAliasType(name);\n if (inlined) {\n return inlined;\n }\n\n // Check if the type is imported\n const importPath = this.sourceFile.getImports().get(name);\n if (importPath) {\n try {\n // Check if the file exists before creating a parser\n if (!fs.existsSync(importPath)) {\n console.warn(`File not found: ${importPath} when resolving type reference ${name}`);\n return typeNode.getText();\n }\n\n const parser = (this.sourceFile.constructor as typeof SourceFile).make(importPath);\n const typeResolver = new TypeResolver(parser);\n const nodeFinder = new NodeFinder(parser);\n\n // Check for interface declaration\n const interfaceDecl = nodeFinder.findInterfaceDeclaration(name);\n if (interfaceDecl) {\n const props = typeResolver.extractInterfaceProperties(interfaceDecl);\n return props.length ? `{${props.join(\"; \")};}` : `{}`;\n }\n\n // Check for type alias declaration\n const aliasDecl = nodeFinder.findTypeAliasDeclaration(name);\n if (aliasDecl) {\n // Handle intersection types specially\n if (ts.isIntersectionTypeNode(aliasDecl.type)) {\n return typeResolver.processIntersectionType(aliasDecl.type);\n }\n return typeResolver.resolveTypeNode(aliasDecl.type);\n }\n } catch (error) {\n console.warn(`Error resolving type reference ${name} from ${importPath}:`, error);\n }\n }\n\n // If there are type arguments, resolve them\n if (typeNode.typeArguments && typeNode.typeArguments.length > 0) {\n const aliasName = typeNode.typeName.getText();\n // Resolve each type argument\n const resolvedArgs = typeNode.typeArguments.map(arg => this.resolveTypeNode(arg));\n // Construct the type with resolved arguments\n return `${aliasName}<${resolvedArgs.join(\", \")}>`;\n }\n\n // preserve generics and other references\n return typeNode.getText();\n }\n\n /**\n * Attempts to inline a type alias.\n *\n * @param name The name of the type alias\n * @returns The inlined type alias or undefined if it cannot be inlined\n */\n public inlineAliasType(name: string): string | undefined {\n // Check if the type is imported from an external library\n const importPath = this.sourceFile.getImports().get(name);\n\n // Special case for chrome.* namespaces\n if (importPath && (importPath.startsWith(\"chrome.\") || importPath.startsWith(\"browser.\"))) {\n return importPath;\n }\n\n if (importPath && !importPath.startsWith(\".\") && !importPath.startsWith(\"/\") && !fs.existsSync(importPath)) {\n // This is an external library import, format it as import('libraryName').TypeName\n return `import('${importPath}').${name}`;\n }\n\n // Check for import equals declaration (import X = Y.Z)\n const nodeFinder = this.nodeFinder || new NodeFinder(this.sourceFile);\n const importEquals = nodeFinder.findImportEqualsDeclaration(name);\n if (importEquals && importEquals.moduleReference) {\n // For qualified names like chrome.tabs.Tab, return the qualified name\n if (ts.isQualifiedName(importEquals.moduleReference)) {\n return importEquals.moduleReference.getText();\n }\n // For external module references like 'somelib', handle as external library\n else if (\n ts.isExternalModuleReference(importEquals.moduleReference) &&\n importEquals.moduleReference.expression &&\n ts.isStringLiteral(importEquals.moduleReference.expression)\n ) {\n const libPath = importEquals.moduleReference.expression.text;\n return `import('${libPath}').${name}`;\n }\n // For other module references, return the text representation\n else {\n return importEquals.moduleReference.getText();\n }\n }\n\n // Find the type alias declaration\n const aliasDecl = this.findTypeAliasDeclaration(name);\n if (aliasDecl) {\n const typeNode = aliasDecl.type;\n\n // handle intersection type alias by flattening members\n if (ts.isIntersectionTypeNode(typeNode)) {\n return this.processIntersectionType(typeNode);\n }\n\n // For type reference nodes (like aliases to other types), preserve the original type\n if (ts.isTypeReferenceNode(typeNode) && ts.isIdentifier(typeNode.typeName)) {\n // Get the full text of the type node, which includes any namespace qualifiers\n return typeNode.getText();\n }\n\n return this.resolveTypeNode(typeNode);\n }\n\n // local interface\n const localInterface = nodeFinder.findInterfaceDeclaration(name);\n if (localInterface) {\n const props = this.extractInterfaceProperties(localInterface);\n return props.length ? `{${props.join(\"; \")};}` : `{}`;\n }\n\n // Handle imported types\n if (importPath) {\n try {\n // Check if the file exists before creating a parser\n if (!fs.existsSync(importPath)) {\n console.warn(`File not found: ${importPath} when resolving type alias ${name}`);\n return undefined;\n }\n\n const parser = (this.sourceFile.constructor as typeof SourceFile).make(importPath);\n const typeResolver = new TypeResolver(parser);\n\n // imported type alias\n const aliasDecl = nodeFinder.findTypeAliasDeclaration(name);\n if (aliasDecl) {\n // inline imported type alias (including intersections)\n return typeResolver.inlineAliasType(name);\n }\n\n // imported interface\n const interfaceDecl = nodeFinder.findInterfaceDeclaration(name);\n if (interfaceDecl) {\n const props = this.extractInterfaceProperties(interfaceDecl);\n return props.length ? `{${props.join(\"; \")};}` : `{}`;\n }\n } catch (error) {\n console.warn(`Error resolving type alias ${name} from ${importPath}:`, error);\n return undefined;\n }\n }\n\n return undefined;\n }\n\n /**\n * Processes an intersection type node by flattening its members\n */\n private processIntersectionType(typeNode: ts.IntersectionTypeNode): string {\n const parts: string[] = [];\n const seen = new Set<string>();\n\n for (const t of typeNode.types) {\n // inline object literal types\n if (ts.isTypeLiteralNode(t)) {\n for (const m of t.members) {\n let keyName: string;\n let entry: string;\n if (ts.isPropertySignature(m) && m.type) {\n keyName = this.getName(m.name!);\n const typeText = this.resolveTypeNode(m.type);\n // Remove spaces in object types to match expected format\n const formattedTypeText = typeText.replace(/\\{\\s+/g, \"{\").replace(/\\s+\\}/g, \"}\");\n entry = `${keyName}: ${formattedTypeText}`;\n } else if (ts.isMethodSignature(m) && m.name) {\n keyName = this.getName(m.name);\n const typeParams = m.typeParameters ? m.typeParameters.map(tp => tp.getText()) : [];\n const tpText = typeParams.length ? `<${typeParams.join(\",\")}>` : \"\";\n const paramsText = m.parameters\n .map(p => {\n const pname = ts.isIdentifier(p.name) ? p.name.text : p.name.getText();\n const ptype = p.type ? this.resolveTypeNode(p.type) : \"any\";\n // Remove spaces in object types to match expected format\n const formattedPType = ptype.replace(/\\{\\s+/g, \"{\").replace(/\\s+\\}/g, \"}\");\n return `${pname}: ${formattedPType}`;\n })\n .join(\",\");\n const returnType = m.type ? this.resolveTypeNode(m.type) : \"any\";\n // Remove spaces in object types to match expected format\n const formattedReturnType = returnType.replace(/\\{\\s+/g, \"{\").replace(/\\s+\\}/g, \"}\");\n entry = `${keyName}${tpText}(${paramsText}): ${formattedReturnType}`;\n } else if (ts.isIndexSignatureDeclaration(m) && m.type) {\n // Handle index signatures like [domain: string]: number;\n const paramName = m.parameters[0].name.getText();\n const paramType = m.parameters[0].type ? this.resolveTypeNode(m.parameters[0].type) : \"any\";\n const returnType = this.resolveTypeNode(m.type);\n // Use a special key for index signatures to avoid conflicts\n keyName = `[${paramName}:${paramType}]`;\n entry = `[${paramName}: ${paramType}]: ${returnType}`;\n } else {\n continue;\n }\n if (!seen.has(keyName)) {\n seen.add(keyName);\n parts.push(entry);\n }\n }\n }\n // inline referenced aliases or interfaces\n else if (ts.isTypeReferenceNode(t) && ts.isIdentifier(t.typeName)) {\n const refName = t.typeName.text;\n const sub = this.inlineAliasType(refName);\n if (sub) {\n this.extractSegmentsFromType(sub, seen, parts);\n }\n }\n }\n\n return `{${parts.join(\"; \")};}`;\n }\n\n /**\n * Extracts segments from a type string, handling nested braces\n */\n private extractSegmentsFromType(typeStr: string, seen: Set<string>, parts: string[]): void {\n const inner = typeStr.slice(1, -1).trim();\n if (!inner) return;\n\n // split on top-level semicolons (ignore semicolons within braces)\n const segments: string[] = [];\n let depth = 0;\n let buf = \"\";\n\n for (const ch of inner) {\n if (ch === \"{\") {\n depth++;\n buf += ch;\n } else if (ch === \"}\") {\n depth--;\n buf += ch;\n } else if (ch === \";\" && depth === 0) {\n const seg = buf.trim();\n if (seg) segments.push(seg);\n buf = \"\";\n } else {\n buf += ch;\n }\n }\n\n const last = buf.trim();\n if (last) segments.push(last);\n\n for (const s of segments) {\n const keyName = s.split(/[:(]/)[0];\n if (!seen.has(keyName)) {\n seen.add(keyName);\n parts.push(s);\n }\n }\n }\n\n /**\n * Extracts a textual property name.\n */\n private getName(name: ts.PropertyName | ts.BindingName | ts.Node): string {\n if (ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name)) {\n return name.text;\n }\n\n return name.getText();\n }\n\n /**\n * Extracts properties from an interface declaration\n */\n public extractInterfaceProperties(interfaceDecl: ts.InterfaceDeclaration, parser: TypeResolver = this): string[] {\n const props: string[] = [];\n\n // include inherited members from extended interfaces\n if (interfaceDecl.heritageClauses) {\n for (const clause of interfaceDecl.heritageClauses) {\n if (clause.token === ts.SyntaxKind.ExtendsKeyword) {\n for (const typeNode of clause.types) {\n const expr = typeNode.expression;\n if (ts.isIdentifier(expr)) {\n const parent = parser.inlineAliasType(expr.text);\n if (parent) {\n const inner = parent.slice(1, -1).trim();\n if (inner) {\n props.push(\n ...inner\n .split(/;\\s*/)\n .map(s => s.trim())\n .filter(Boolean)\n );\n }\n }\n }\n }\n }\n }\n }\n\n // Add interface members\n for (const member of interfaceDecl.members) {\n if (ts.isPropertySignature(member) && member.type) {\n const key = parser.getName(member.name!);\n const optional = member.questionToken ? \"?\" : \"\";\n const typeText = parser.resolveTypeNode(member.type);\n props.push(`${key}${optional}: ${typeText}`);\n } else if (ts.isMethodSignature(member) && member.name) {\n const key = parser.getName(member.name);\n const typeParams = member.typeParameters ? member.typeParameters.map(tp => tp.getText()) : [];\n const tpText = typeParams.length ? `<${typeParams.join(\",\")}>` : \"\";\n\n const params = member.parameters\n .map(p => {\n const pname = ts.isIdentifier(p.name) ? p.name.text : p.name.getText();\n const ptype = p.type ? parser.resolveTypeNode(p.type) : \"any\";\n return `${pname}: ${ptype}`;\n })\n .join(\", \");\n\n const returnType = member.type ? parser.resolveTypeNode(member.type) : \"any\";\n\n props.push(`${key}${tpText}(${params}): ${returnType}`);\n } else if (ts.isIndexSignatureDeclaration(member) && member.type) {\n // Handle index signatures like [domain: string]: number;\n const paramName = member.parameters[0].name.getText();\n const paramType = member.parameters[0].type ? parser.resolveTypeNode(member.parameters[0].type) : \"any\";\n const returnType = parser.resolveTypeNode(member.type);\n props.push(`[${paramName}: ${paramType}]: ${returnType}`);\n }\n }\n\n return props;\n }\n\n /**\n * Searches the AST of this file for a type alias declaration by name.\n *\n * @param name The name of the type alias to find\n * @returns The type alias declaration or undefined if not found\n */\n private findTypeAliasDeclaration(name: string): ts.TypeAliasDeclaration | undefined {\n return this.findNodeByName<ts.TypeAliasDeclaration>(\n (node, searchName): node is ts.TypeAliasDeclaration =>\n ts.isTypeAliasDeclaration(node) && node.name.text === searchName,\n name\n );\n }\n\n /**\n * Generic method to find a node of a specific type by name in the AST.\n *\n * @param predicate The predicate to match the node\n * @param name The name to search for\n * @returns The found node or undefined if not found\n */\n private findNodeByName<T extends ts.Node>(\n predicate: (node: ts.Node, name: string) => node is T,\n name: string\n ): T | undefined {\n const sf = this.sourceFile.getSourceFile();\n let found: T | undefined;\n\n const visit = (node: ts.Node) => {\n if (predicate(node, name)) {\n found = node;\n } else {\n ts.forEachChild(node, visit);\n }\n };\n\n ts.forEachChild(sf, visit);\n return found;\n }\n}\n","import ts from \"typescript\";\nimport {MemberSignature, MethodSignature, ParameterSignature} from \"./types\";\nimport TypeResolver from \"./TypeResolver\";\nimport JSDocParser from \"./JSDocParser\";\n\n/**\n * Builds method and property signatures from TypeScript nodes.\n */\nexport default class SignatureBuilder {\n /**\n * Constructor for the SignatureBuilder.\n *\n * @param typeResolver The type resolver to use for resolving types\n */\n private readonly jsDocParser: JSDocParser;\n\n constructor(private readonly typeResolver: TypeResolver) {\n this.jsDocParser = new JSDocParser();\n }\n\n /**\n * Builds a method signature from a function-like node.\n *\n * @param method The function-like node to build a signature from\n * @returns The method signature\n */\n public getMethodSignature(\n method: ts.MethodDeclaration | ts.GetAccessorDeclaration | ts.FunctionExpression | ts.ArrowFunction\n ): MethodSignature {\n // Get JSDoc parameter types if available\n const jsDocParamTypes =\n \"parameters\" in method\n ? this.jsDocParser.getJSDocParameterTypes(method as ts.SignatureDeclaration)\n : new Map<string, string>();\n\n // parameters\n const params: ParameterSignature[] = (\"parameters\" in method ? method.parameters : []).map(p => {\n const name = ts.isIdentifier(p.name) ? p.name.text : p.name.getText();\n\n // Use JSDoc type if available, otherwise use TypeScript type\n const tsType = p.type ? this.typeResolver.resolveTypeNode(p.type) : \"any\";\n const jsDocType = jsDocParamTypes.get(name);\n const type = jsDocType || tsType;\n\n // Remove spaces in object types to match expected format\n const formattedType = type.replace(/\\{\\s+/g, \"{\").replace(/\\s+\\}/g, \"}\");\n const optional = p.questionToken !== undefined || p.initializer !== undefined;\n return {name, type: formattedType, optional};\n });\n\n // Get JSDoc type parameters if available, otherwise use TypeScript type parameters\n let typeParams: string[] = [];\n\n if (\"parameters\" in method) {\n const jsDocTypeParams = this.jsDocParser.getJSDocTypeParameters(method as ts.SignatureDeclaration);\n if (jsDocTypeParams.length > 0) {\n typeParams = jsDocTypeParams;\n } else if (method.typeParameters) {\n typeParams = method.typeParameters.map(tp => tp.getText());\n }\n } else {\n // For non-SignatureDeclaration types, check if typeParameters exists\n const methodWithTypeParams = method as {typeParameters?: ts.NodeArray<ts.TypeParameterDeclaration>};\n if (methodWithTypeParams.typeParameters) {\n typeParams = methodWithTypeParams.typeParameters.map(tp => tp.getText());\n }\n }\n\n // Get JSDoc return type if available\n const jsDocReturnType =\n \"parameters\" in method ? this.jsDocParser.getJSDocReturnType(method as ts.SignatureDeclaration) : undefined;\n\n // return type (inline aliases when possible)\n const returnNode = (method as ts.MethodDeclaration).type;\n const tsReturnType = returnNode ? this.typeResolver.resolveTypeNode(returnNode) : \"any\";\n\n // Use JSDoc return type if available, otherwise use TypeScript return type\n const returnType = jsDocReturnType || tsReturnType;\n\n // Remove spaces in object types to match expected format\n const formattedReturnType = returnType.replace(/\\{\\s+/g, \"{\").replace(/\\s+\\}/g, \"}\");\n\n return {\n kind: \"method\",\n typeParameters: typeParams,\n parameters: params,\n returnType: formattedReturnType,\n };\n }\n\n /**\n * Builds a function type string from a method signature.\n *\n * @param sig The method signature to build a function type from\n * @returns The function type as a string\n */\n public buildFunctionType(sig: MethodSignature): string {\n const params = sig.parameters.map(p => `${p.name}${p.optional ? \"?\" : \"\"}: ${p.type}`).join(\", \");\n return `(${params}) => ${sig.returnType}`;\n }\n\n /**\n * Formats a record of member signatures into a string representation.\n *\n * @param members The record of member signatures to format\n * @returns The formatted members as a string\n */\n public formatMembers(members: Record<string, MemberSignature>): string {\n const parts: string[] = [];\n\n for (const [name, member] of Object.entries(members)) {\n if (member.kind === \"method\") {\n const typeParams = member.typeParameters.length ? `<${member.typeParameters.join(\", \")}>` : \"\";\n\n // Clean up parameter types to remove any JSDoc comments\n const params = member.parameters\n .map(p => {\n // If the parameter type contains JSDoc comments, extract just the type\n let paramType = p.type;\n if (paramType.includes(\"@param\")) {\n // This is a parameter with JSDoc comments, extract just the type\n const match = paramType.match(/\\{([^}]+)\\}/);\n if (match) {\n paramType = match[1];\n }\n }\n\n return `${p.name}${p.optional ? \"?\" : \"\"}: ${paramType}`;\n })\n .join(\", \");\n\n parts.push(`${name}${typeParams}(${params}): ${member.returnType};`);\n } else {\n parts.push(`${name}${member.optional ? \"?\" : \"\"}: ${member.type};`);\n }\n }\n\n return `{ ${parts.join(\" \")} }`;\n }\n}\n","import ts from \"typescript\";\n\nimport SourceFile from \"../SourceFile\";\nimport AbstractParser from \"./AbstractParser\";\nimport TypeResolver from \"./TypeResolver\";\nimport SignatureBuilder from \"./SignatureBuilder\";\nimport NodeFinder from \"./NodeFinder\";\nimport JSDocParser from \"./JSDocParser\";\n\nimport {shouldIncludeMember} from \"./helpers/memberFilters\";\n\nimport {MemberSignature} from \"./types\";\n\n/**\n * Parses class expressions and declarations.\n */\nexport default class ClassParser extends AbstractParser {\n /**\n * Constructor for the ClassParser.\n *\n * @param sourceFile The source file to parse\n * @param typeResolver The type resolver to use for resolving types\n * @param signatureBuilder The signature builder to use for building signatures\n * @param nodeFinder The node finder to use for finding nodes\n */\n private readonly jsDocParser: JSDocParser;\n\n constructor(\n sourceFile: SourceFile,\n private readonly typeResolver: TypeResolver,\n private readonly signatureBuilder: SignatureBuilder,\n private readonly nodeFinder: NodeFinder\n ) {\n super(sourceFile);\n\n this.jsDocParser = new JSDocParser();\n }\n\n /**\n * Parses a class expression or declaration: collects public members,\n * including inherited members from base classes.\n *\n * @param node The class expression or declaration to parse\n * @returns A record of member signatures\n */\n public parse(node: ts.ClassExpression | ts.ClassDeclaration): Record<string, MemberSignature> {\n let members: Record<string, MemberSignature> = {};\n // inherit from base class(es)\n\n if (node.heritageClauses) {\n for (const clause of node.heritageClauses) {\n if (clause.token === ts.SyntaxKind.ExtendsKeyword) {\n for (const typeNode of clause.types) {\n const expr = typeNode.expression;\n\n if (ts.isIdentifier(expr)) {\n Object.assign(members, this.parseFileClass(expr.text));\n }\n }\n }\n }\n }\n\n // own members\n for (const member of node.members) {\n // Parameter properties in constructor: include only when extracting a specific property\n if (ts.isConstructorDeclaration(member)) {\n // include public parameter properties: e.g. constructor(public foo: string)\n for (const param of member.parameters) {\n const mods = ts.getCombinedModifierFlags(param);\n\n if (mods & ts.ModifierFlags.Public) {\n const name = ts.isIdentifier(param.name) ? param.name.text : param.name.getText();\n\n // Skip constructor parameters that start with underscore\n if (!shouldIncludeMember(name)) {\n continue;\n }\n\n const type = param.type ? param.type.getText() : \"any\";\n members[name] = {kind: \"property\", type};\n }\n }\n\n continue;\n }\n\n // only public instance members (skip private, protected, or static members)\n const flags = ts.getCombinedModifierFlags(member);\n\n if (flags & (ts.ModifierFlags.Private | ts.ModifierFlags.Protected | ts.ModifierFlags.Static)) {\n continue;\n }\n\n // determine member name\n const name =\n member.name && ts.isIdentifier(member.name)\n ? member.name.text\n : member.name\n ? member.name.getText()\n : \"\";\n\n if (!name) continue;\n\n // Skip members that start with underscore\n if (!shouldIncludeMember(name)) {\n continue;\n }\n\n if (ts.isMethodDeclaration(member) || ts.isGetAccessorDeclaration(member)) {\n members[name] = this.signatureBuilder.getMethodSignature(member as ts.MethodDeclaration);\n } else if (ts.isPropertyDeclaration(member)) {\n // Check for JSDoc @type annotation\n const jsDocType = this.jsDocParser.getJSDocType(member);\n const tsType = member.type ? this.typeResolver.resolveTypeNode(member.type) : \"any\";\n const type = jsDocType || tsType;\n const optional = member.questionToken !== undefined;\n members[name] = {kind: \"property\", type, optional};\n }\n }\n\n return members;\n }\n\n /**\n * Finds and parses a class by name in current or imported files.\n *\n * @param name The name of the class to find\n * @returns A record of member signatures\n */\n public parseFileClass(name: string): Record<string, MemberSignature> {\n // current file\n const decl = this.nodeFinder.findClassDeclaration(name);\n\n if (decl) {\n return this.parse(decl);\n }\n\n // imported file\n const importPath = this.sourceFile.getImports().get(name);\n\n if (importPath) {\n const parser = (this.sourceFile.constructor as typeof SourceFile).make(importPath);\n const sf = parser.getSourceFile();\n\n // Try named class export\n let found: ts.ClassDeclaration | undefined;\n const find = (node: ts.Node) => {\n if (ts.isClassDeclaration(node) && node.name?.text === name) {\n found = node;\n } else {\n ts.forEachChild(node, find);\n }\n };\n\n ts.forEachChild(sf, find);\n\n if (found) {\n // Create a new ClassParser for the imported file\n const typeResolver = new TypeResolver(parser);\n const nodeFinder = new NodeFinder(parser);\n const signatureBuilder = new SignatureBuilder(typeResolver);\n const classParser = new ClassParser(parser, typeResolver, signatureBuilder, nodeFinder);\n return classParser.parse(found);\n }\n\n // Try default exported anonymous class\n let defaultClass: ts.ClassDeclaration | undefined;\n\n const findDefault = (node: ts.Node) => {\n if (\n ts.isClassDeclaration(node) &&\n node.modifiers &&\n node.modifiers.some(m => m.kind === ts.SyntaxKind.DefaultKeyword)\n ) {\n defaultClass = node;\n } else {\n ts.forEachChild(node, findDefault);\n }\n };\n\n ts.forEachChild(sf, findDefault);\n\n if (defaultClass) {\n // Create a new ClassParser for the imported file\n const typeResolver = new TypeResolver(parser);\n const nodeFinder = new NodeFinder(parser);\n const signatureBuilder = new SignatureBuilder(typeResolver);\n const classParser = new ClassParser(parser, typeResolver, signatureBuilder, nodeFinder);\n return classParser.parse(defaultClass);\n }\n }\n\n return {};\n }\n}\n","import ts from \"typescript\";\n\nimport SourceFile from \"./SourceFile\";\nimport {\n ClassParser,\n FunctionParser,\n JSDocParser,\n NodeFinder,\n ObjectParser,\n SignatureBuilder,\n TypeResolver,\n} from \"./parsers\";\nimport {MemberSignature} from \"./parsers/types\";\n\nimport {PackageName} from \"@typing/app\";\n\n/**\n * Parses a TypeScript expression (object literal, function, or class)\n * and builds a full interface of its public members (methods and properties).\n */\nexport default class ExpressionFile extends SourceFile {\n protected property?: string;\n /**\n * Names of wrapper functions whose first argument should be unwrapped for parsing.\n */\n protected definition = new Set<string>();\n\n private readonly typeResolver: TypeResolver;\n private readonly nodeFinder: NodeFinder;\n private readonly signatureBuilder: SignatureBuilder;\n private readonly functionParser: FunctionParser;\n private readonly objectParser: ObjectParser;\n private readonly classParser: ClassParser;\n private readonly jsDocParser: JSDocParser;\n constructor(filePath: string) {\n super(filePath);\n\n this.typeResolver = new TypeResolver(this);\n this.nodeFinder = new NodeFinder(this);\n this.signatureBuilder = new SignatureBuilder(this.typeResolver);\n this.objectParser = new ObjectParser(this, this.signatureBuilder);\n this.classParser = new ClassParser(this, this.typeResolver, this.signatureBuilder, this.nodeFinder);\n this.functionParser = new FunctionParser(this, this.nodeFinder, this.objectParser, this.classParser);\n this.jsDocParser = new JSDocParser();\n }\n\n public getType(): string | undefined {\n // If a specific variable or property is requested, extract its type\n if (this.property) {\n // 1) Named variable scenario: e.g. export const init = () => ...\n const varDecl = this.nodeFinder.findVariableDeclaration(this.property);\n\n if (varDecl && varDecl.initializer) {\n return this.getTypeFromInitializer(varDecl.initializer);\n }\n\n // 2) Property on default export object: unwrap and look up key\n let exportExpr: ts.Expression | undefined;\n const sf = this.getSourceFile();\n\n const findExport = (node: ts.Node) => {\n if (ts.isExportAssignment(node)) {\n exportExpr = node.expression;\n }\n ts.forEachChild(node, findExport);\n };\n\n findExport(sf);\n\n if (!exportExpr) return undefined;\n\n // Special case for service definitions with JSDoc annotations\n if (this.definition.size > 0 && ts.isCallExpression(exportExpr) && ts.isIdentifier(exportExpr.expression)) {\n const fnName = exportExpr.expression.text;\n\n if (this.definition.has(fnName)) {\n // Check if the wrapper function is imported from the designated package name\n let importPath: string | undefined;\n try {\n importPath = this.getImports().get(fnName);\n } catch {\n // unable to resolve import source -> ignore wrapper\n return undefined;\n }\n\n if (importPath !== PackageName) {\n // Function is not imported from the designated package name -> ignore wrapper\n console.warn(`Function ${fnName} is not imported from '${PackageName}' in file ${this.file}`);\n return undefined;\n }\n\n if (exportExpr.arguments.length > 0) {\n const firstArg = exportExpr.arguments[0];\n\n if (ts.isObjectLiteralExpression(firstArg)) {\n for (const prop of firstArg.properties) {\n const key = this.objectParser.getName(prop.name ?? prop);\n\n if (key !== this.property) continue;\n\n if (ts.isPropertyAssignment(prop)) {\n const initType = this.getTypeFromInitializer(prop.initializer);\n if (initType) return initType;\n } else if (ts.isMethodDeclaration(prop)) {\n // Get the return type of the method\n const returnType = this.getTypeFromMethodReturn(prop);\n if (returnType) return returnType;\n }\n }\n }\n }\n }\n }\n\n const expr = this.unwrapExpression(exportExpr);\n\n if (ts.isObjectLiteralExpression(expr)) {\n for (const prop of expr.properties) {\n const key = this.objectParser.getName(prop.name ?? prop);\n\n if (key !== this.property) continue;\n\n if (ts.isPropertyAssignment(prop)) {\n return this.getTypeFromInitializer(prop.initializer);\n } else if (ts.isMethodDeclaration(prop) || ts.isGetAccessorDeclaration(prop)) {\n const sig = this.signatureBuilder.getMethodSignature(prop as ts.MethodDeclaration);\n\n return this.signatureBuilder.buildFunctionType(sig);\n } else if (ts.isShorthandPropertyAssignment(prop)) {\n const name = prop.name.text;\n const variable = this.getVariables().get(name);\n\n if (variable) {\n const val = variable.value;\n switch (typeof val) {\n case \"string\":\n return \"string\";\n case \"number\":\n return \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"object\":\n if (val === null) return \"null\";\n if (Array.isArray(val)) return \"array\";\n return \"object\";\n default:\n return \"any\";\n }\n }\n return \"any\";\n }\n }\n return undefined;\n }\n\n // Fallback: treat default export expression as initializer\n return this.getTypeFromInitializer(expr);\n }\n\n // Default: parse full default export into interface-like string\n let members: Record<string, MemberSignature> | undefined;\n const sf = this.getSourceFile();\n\n const collect = (node: ts.Node) => {\n if (ts.isExportAssignment(node)) {\n const expr0 = node.expression;\n const expr = this.unwrapExpression(expr0);\n const parsed = this.parse(expr);\n if (parsed) members = parsed;\n }\n ts.forEachChild(node, collect);\n };\n\n collect(sf);\n if (!members) return undefined;\n return this.signatureBuilder.formatMembers(members);\n }\n\n public setProperty(property: string): this {\n this.property = property;\n\n return this;\n }\n\n /**\n * Entry point: accepts an expression and returns a map of member signatures,\n * or undefined if the expression cannot be parsed.\n */\n protected parse(expr: ts.Expression): Record<string, MemberSignature> | undefined {\n if (ts.isFunctionExpression(expr) || ts.isArrowFunction(expr)) {\n return this.functionParser.parse(expr);\n } else if (ts.isObjectLiteralExpression(expr)) {\n return this.objectParser.parse(expr);\n } else if (ts.isClassExpression(expr)) {\n return this.classParser.parse(expr);\n }\n\n return undefined;\n }\n\n /**\n * Specify wrapper functions whose first argument should be unwrapped for parsing.\n */\n public setDefinition(definition: string | string[]): this {\n const defs = typeof definition === \"string\" ? [definition] : definition;\n\n defs.forEach(def => this.definition.add(def));\n\n return this;\n }\n\n /**\n * Recursively unwraps type assertions, satisfies, parentheses, and allowed wrapper calls.\n */\n private unwrapExpression(expr: ts.Expression): ts.Expression {\n // First use the AbstractExpressionParser's unwrapExpression for basic unwrapping\n expr = this.functionParser.unwrapExpression(expr);\n\n // Explicitly handle type assertions\n if (ts.isAsExpression(expr)) {\n return this.unwrapExpression(expr.expression);\n }\n\n // Then handle the additional unwrapping for known definition wrappers\n if (ts.isCallExpression(expr) && ts.isIdentifier(expr.expression)) {\n const fnName = expr.expression.text;\n\n if (this.definition.has(fnName)) {\n let importPath: string | undefined;\n\n try {\n importPath = this.getImports().get(fnName);\n } catch {\n // unable to resolve import source -> ignore wrapper\n return expr;\n }\n\n if (importPath !== PackageName) {\n console.warn(`Function ${fnName} is not imported from '${PackageName}' in file ${this.file}`);\n } else if (expr.arguments.length > 0) {\n const first = expr.arguments[0];\n return this.unwrapExpression(first as ts.Expression);\n }\n }\n }\n\n return expr;\n }\n\n /**\n * Given an initializer or expression, extracts its type: function signature or interface.\n */\n private getTypeFromInitializer(\n node: ts.Expression | ts.MethodDeclaration | ts.GetAccessorDeclaration\n ): string | undefined {\n // Unwrap type assertions\n if (ts.isAsExpression(node)) {\n return this.getTypeFromInitializer(node.expression);\n }\n\n // Function or arrow function: try to parse returned object or instance\n if (ts.isFunctionExpression(node) || ts.isArrowFunction(node)) {\n // attempt to parse returned expression into members\n const members = this.functionParser.parse(node as ts.FunctionExpression | ts.ArrowFunction);\n\n if (members) {\n return this.signatureBuilder.formatMembers(members);\n }\n\n // fallback to function signature\n const sig = this.signatureBuilder.getMethodSignature(node as ts.FunctionExpression | ts.ArrowFunction);\n\n return this.signatureBuilder.buildFunctionType(sig);\n }\n\n // Class or method-like: signature of accessor/method\n if (ts.isMethodDeclaration(node) || ts.isGetAccessorDeclaration(node)) {\n const sig = this.signatureBuilder.getMethodSignature(node as ts.MethodDeclaration);\n return this.signatureBuilder.buildFunctionType(sig);\n }\n\n // Object literal, class expression/declaration, or new expression: return interface of members\n let members: Record<string, MemberSignature> | undefined;\n\n if (ts.isObjectLiteralExpression(node) || ts.isClassExpression(node) || ts.isClassDeclaration(node)) {\n members = this.parse(node as ts.Expression);\n } else if (ts.isNewExpression(node)) {\n const ctor = node.expression;\n\n if (ts.isIdentifier(ctor)) {\n members = this.classParser.parseFileClass(ctor.text);\n } else if (ts.isClassExpression(ctor)) {\n members = this.classParser.parse(ctor);\n }\n }\n\n if (members) {\n return this.signatureBuilder.formatMembers(members);\n }\n\n // For literals or other expressions, infer a simple type\n if (ts.isLiteralExpression(node) || ts.isArrayLiteralExpression(node) || ts.isObjectLiteralExpression(node)) {\n return this.objectParser.inferTypeFromExpression(node as ts.Expression);\n }\n\n // Fallback: undefined\n return undefined;\n }\n\n /**\n * Extracts the type of the return value of a method, taking into account JSDoc annotations.\n *\n * @param method The method declaration to extract the return type from\n * @returns The extracted return type as a string, or undefined if it cannot be extracted\n */\n private getTypeFromMethodReturn(method: ts.MethodDeclaration): string | undefined {\n // Try to find a return statement in the method body\n if (method.body) {\n // First, check if there's a JSDoc return type annotation\n const jsDocReturnType = this.jsDocParser.getJSDocReturnType(method);\n if (jsDocReturnType) {\n // If the return type is a new expression, try to parse it\n if (jsDocReturnType.includes(\"new \")) {\n const className = jsDocReturnType.replace(\"new \", \"\").trim();\n const members = this.classParser.parseFileClass(className);\n if (members) {\n return this.signatureBuilder.formatMembers(members);\n }\n }\n\n // If the return type is a class name, try to parse it\n const members = this.classParser.parseFileClass(jsDocReturnType);\n if (members) {\n return this.signatureBuilder.formatMembers(members);\n }\n\n return jsDocReturnType;\n }\n\n // If there's no JSDoc return type, try to find a return statement\n let returnExpr: ts.Expression | undefined;\n\n const findReturn = (node: ts.Node): void => {\n if (ts.isReturnStatement(node) && node.expression) {\n returnExpr = node.expression;\n return;\n }\n ts.forEachChild(node, findReturn);\n };\n\n findReturn(method.body);\n\n if (returnExpr) {\n return this.getTypeFromInitializer(returnExpr);\n }\n }\n\n // If we couldn't find a return statement, use the method's return type\n if (method.type) {\n return this.typeResolver.resolveTypeNode(method.type);\n }\n\n return undefined;\n }\n}\n","import {z} from \"zod\";\nimport path from \"path\";\n\nimport {ExpressionFile, ImportResolver, OptionFile, TsResolver} from \"../file\";\n\nimport {Browser} from \"@typing/browser\";\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {EntrypointFile, EntrypointOptions, EntrypointParser} from \"@typing/entrypoint\";\n\nexport default abstract class AbstractParser<O extends EntrypointOptions> implements EntrypointParser<O> {\n protected readonly ir: ImportResolver;\n\n protected readonly CommonPropertiesSchema = z.object({\n includeApp: z.array(z.string()).optional(),\n excludeApp: z.array(z.string()).optional(),\n includeBrowser: z.array(z.nativeEnum(Browser)).optional(),\n excludeBrowser: z.array(z.nativeEnum(Browser)).optional(),\n });\n\n protected abstract schema(): typeof this.CommonPropertiesSchema;\n\n protected abstract definition(): string | string[];\n\n constructor(protected readonly config: ReadonlyConfig) {\n this.ir = new ImportResolver(TsResolver.make(path.resolve(this.config.inputDir, \"tsconfig.json\")));\n }\n\n protected optionFile(file: EntrypointFile): OptionFile<Record<string, any>> {\n const instance = OptionFile.make(file.file);\n\n instance.setImportResolver(this.ir);\n\n return instance.setProperties(Object.keys(this.schema().shape)).setDefinition(this.definition());\n }\n\n protected getOptions(file: EntrypointFile): Record<string, any> {\n const instance = this.optionFile(file);\n\n return instance.getOptions();\n }\n\n protected agreement(): string | undefined {\n return undefined;\n }\n\n public options(file: EntrypointFile): O {\n const {success, error, data} = this.schema().safeParse(this.getOptions(file));\n\n if (!success) {\n const e = error?.errors[0];\n\n if (e) {\n throw new Error(`Invalid options ${e.path.join(\", \")} in \"${file.file}\": ${e.message}`);\n } else {\n throw new Error(`Invalid options in \"${file.file}\"`);\n }\n }\n\n return (data || {}) as O;\n }\n\n public contract(file: EntrypointFile): string | undefined {\n const agreement = this.agreement();\n\n if (!agreement) {\n return;\n }\n\n const instance = ExpressionFile.make(file.file);\n\n instance.setImportResolver(this.ir);\n\n return instance.setDefinition(this.definition()).setProperty(agreement).getType();\n }\n}\n","import {z} from \"zod\";\n\nimport AbstractParser from \"./AbstractParser\";\n\nimport {BackgroundEntrypointOptions} from \"@typing/background\";\n\nexport default class<T extends BackgroundEntrypointOptions = BackgroundEntrypointOptions> extends AbstractParser<T> {\n protected definition(): string | string[] {\n return \"defineBackground\";\n }\n\n protected schema(): typeof this.CommonPropertiesSchema {\n return this.CommonPropertiesSchema.extend({\n persistent: z.boolean().optional(),\n permissions: z.array(z.string()).optional(),\n });\n }\n}\n","export enum Language {\n Arabic = \"ar\",\n Amharic = \"am\",\n Bulgarian = \"bg\",\n Bengali = \"bn\",\n Catalan = \"ca\",\n Czech = \"cs\",\n Danish = \"da\",\n German = \"de\",\n Greek = \"el\",\n English = \"en\",\n EnglishAustralia = \"en_AU\",\n EnglishGreatBritain = \"en_GB\",\n EnglishUSA = \"en_US\",\n Spanish = \"es\",\n SpanishLatinAmericaAndCaribbean = \"es_419\",\n Estonian = \"et\",\n Persian = \"fa\",\n Finnish = \"fi\",\n Filipino = \"fil\",\n French = \"fr\",\n Gujarati = \"gu\",\n Hebrew = \"he\",\n Hindi = \"hi\",\n Croatian = \"hr\",\n Hungarian = \"hu\",\n Indonesian = \"id\",\n Italian = \"it\",\n Japanese = \"ja\",\n Kannada = \"kn\",\n Korean = \"ko\",\n Lithuanian = \"lt\",\n Latvian = \"lv\",\n Malayalam = \"ml\",\n Marathi = \"mr\",\n Malay = \"ms\",\n Dutch = \"nl\",\n Norwegian = \"no\",\n Polish = \"pl\",\n PortugueseBrazil = \"pt_BR\",\n PortuguesePortugal = \"pt_PT\",\n Romanian = \"ro\",\n Russian = \"ru\",\n Slovak = \"sk\",\n Slovenian = \"sl\",\n Serbian = \"sr\",\n Swedish = \"sv\",\n Swahili = \"sw\",\n Tamil = \"ta\",\n Telugu = \"te\",\n Thai = \"th\",\n Turkish = \"tr\",\n Ukrainian = \"uk\",\n Vietnamese = \"vi\",\n ChineseChina = \"zh_CN\",\n ChineseTaiwan = \"zh_TW\",\n}\n\nexport enum LocaleDir {\n RightToLeft = \"rtl\",\n LeftToRight = \"ltr\",\n}\n\nexport const RtlLanguages: ReadonlySet<Language> = new Set([Language.Arabic, Language.Persian, Language.Hebrew]);\n\nexport const LocaleNestedKeysSeparator = \".\";\n\nexport const LocaleKeysSeparator = \"_\";\n\nexport const LocaleValuesSeparator = \"|\";\n\nexport const LocaleCustomKeyForLanguage = \"locale\";\n\nexport const LocaleKeyMarker = \"@\";\n\nexport const LanguageCodes: ReadonlySet<string> = new Set(Object.values(Language));\n\nexport const LocaleFileExtensions: ReadonlySet<string> = new Set([\"yaml\", \"yml\", \"json\"]);\n\nexport type LocaleValue = string | number | string[] | number[];\n\nexport type LocaleData = {\n [key: string]: LocaleValue | LocaleData;\n};\n\nexport type LocaleItems = Map<string, string>;\n\nexport type LocaleKeys = ReadonlySet<string>;\n\nexport type LocaleMessages = {\n [key: string]: {\n message: string;\n };\n};\n\nexport interface LocaleBuilder {\n lang(): Language;\n\n merge(data: LocaleData): this;\n\n build(): LocaleMessages;\n\n get(): LocaleItems;\n\n keys(): LocaleKeys;\n\n structure(): LocaleStructure;\n\n isValid(): boolean;\n\n validate(): this;\n}\n\nexport interface LocaleValidator {\n isValid(locale: LocaleBuilder): boolean;\n\n validate(locale: LocaleBuilder): this;\n}\n\nexport interface LocaleFutures {\n plural: boolean;\n substitutions: readonly string[];\n}\n\nexport interface LocaleStructure {\n [key: string]: LocaleFutures;\n}\n\nexport type LocaleNonPluralKeys<T extends LocaleStructure> = {\n [K in keyof T]: T[K] extends {plural: false} ? K : never;\n}[keyof T] &\n string;\n\nexport type LocalePluralKeys<T extends LocaleStructure> = {\n [K in keyof T]: T[K] extends {plural: true} ? K : never;\n}[keyof T] &\n string;\n\nexport type LocaleSubstitutionsFor<T extends LocaleStructure, K extends keyof T> = T[K] extends {\n substitutions: readonly (infer U)[];\n}\n ? Partial<Record<U & string, string | number>>\n : never;\n\nexport interface LocaleProvider<S extends LocaleStructure> {\n lang(): Language;\n\n languages(): Set<Language>;\n\n keys(): ReadonlySet<keyof S>;\n\n // non-plural keys\n trans<K extends LocaleNonPluralKeys<S>>(key: K, substitutions?: LocaleSubstitutionsFor<S, K>): string;\n\n // plural keys\n choice<K extends LocalePluralKeys<S>>(key: K, count: number, substitutions?: LocaleSubstitutionsFor<S, K>): string;\n}\n\nexport interface LocaleDynamicProvider<S extends LocaleStructure> extends LocaleProvider<S> {\n change(lang: Language): Promise<Language>;\n}\n","import {\n Language,\n LocaleDir,\n LocaleKeyMarker,\n LocaleKeysSeparator,\n LocaleMessages,\n LocaleNestedKeysSeparator,\n RtlLanguages,\n} from \"@typing/locale\";\n\nexport const getLocaleFilename = (lang: Language): string => {\n return `_locales/${lang}/messages.json`;\n};\n\nexport const convertLocaleKey = (key: string): string => {\n return key.replaceAll(LocaleNestedKeysSeparator, LocaleKeysSeparator);\n};\n\nexport const convertLocaleMessageKey = (key: string): string => {\n return `__MSG_${convertLocaleKey(key)}__`;\n};\n\nexport const extractLocaleKey = (key?: string): string | undefined => {\n if (isLocaleKey(key)) {\n return key.substring(1);\n }\n};\n\nexport const isLocaleKey = (key?: string): key is string => {\n return key?.startsWith(LocaleKeyMarker) ?? false;\n};\n\nexport const modifyLocaleMessageKey = (key?: string): string | undefined => {\n if (typeof key !== \"string\") {\n return undefined;\n }\n\n const localeKey = extractLocaleKey(key);\n\n if (localeKey) {\n return convertLocaleMessageKey(localeKey);\n }\n\n return key;\n};\n\nexport const isLocaleRtl = (lang: Language): boolean => {\n return RtlLanguages.has(lang);\n};\n\nexport const getLocaleDir = (lang: Language): LocaleDir => {\n return isLocaleRtl(lang) ? LocaleDir.RightToLeft : LocaleDir.LeftToRight;\n};\n\nexport const flattenLocaleMessages = (messages: LocaleMessages): Record<string, string> => {\n return Object.fromEntries(Object.entries(messages).map(([key, value]) => [key, value.message]));\n};\n","import {Required} from \"utility-types\";\n\nimport {EntrypointBuilder, EntrypointOptions} from \"@typing/entrypoint\";\nimport {BackgroundConfig} from \"@typing/background\";\nimport {Awaiter} from \"@typing/helpers\";\n\ntype Tab = chrome.tabs.Tab;\n\nexport const CommandExecuteActionName = \"_execute_action\";\n\nexport interface CommandConfig extends BackgroundConfig {\n name: string;\n description?: string;\n global?: boolean;\n defaultKey?: string;\n windowsKey?: string;\n macKey?: string;\n chromeosKey?: string;\n linuxKey?: string;\n}\n\nexport type CommandOptions = CommandConfig & EntrypointOptions;\n\nexport type CommandEntrypointOptions = Partial<CommandOptions>;\n\nexport type CommandExecute = (tab: Tab | undefined, options: CommandOptions) => Awaiter<void>;\n\nexport interface CommandDefinition extends CommandEntrypointOptions {\n execute: CommandExecute;\n}\n\nexport type ExecuteActionCommandDefinition = Omit<CommandDefinition, \"name\">;\n\nexport type CommandUnresolvedDefinition = Partial<CommandDefinition>;\n\nexport type CommandResolvedDefinition = Required<CommandDefinition, \"name\" | \"execute\">;\n\nexport type CommandBuilder = EntrypointBuilder;\n","import {z} from \"zod\";\n\nimport BackgroundParser from \"./BackgroundParser\";\n\nimport {modifyLocaleMessageKey} from \"@locale/utils\";\n\nimport {CommandEntrypointOptions, CommandExecuteActionName} from \"@typing/command\";\nimport {EntrypointFile} from \"@typing/entrypoint\";\n\nexport default class extends BackgroundParser<CommandEntrypointOptions> {\n protected definition(): string[] {\n return [\"defineCommand\", \"defineExecuteActionCommand\"];\n }\n\n protected schema(): typeof this.CommonPropertiesSchema {\n const ShortcutKeySchema = z\n .string()\n .regex(\n /^(Ctrl|Command|MacCtrl|Alt|Option)(\\+Shift)?\\+[A-Z0-9]$/,\n \"Invalid shortcut key, expected format like: Ctrl+Shift+K or Command+Shift+P\"\n )\n .optional();\n\n return super.schema().extend({\n name: z.string().nonempty().optional(),\n description: z.string().nonempty().optional(),\n global: z.boolean().optional(),\n defaultKey: ShortcutKeySchema,\n windowsKey: ShortcutKeySchema,\n macKey: ShortcutKeySchema,\n chromeosKey: ShortcutKeySchema,\n linuxKey: ShortcutKeySchema,\n });\n }\n\n public options(file: EntrypointFile): CommandEntrypointOptions {\n const {defaultKey, windowsKey, macKey, chromeosKey, linuxKey, ...options} = super.options(file);\n\n if (!defaultKey && !windowsKey && !macKey && !chromeosKey && !linuxKey) {\n throw new Error(\"Invalid command options: At least one suggested key must be defined\");\n }\n\n return {\n ...options,\n defaultKey,\n windowsKey,\n macKey,\n chromeosKey,\n linuxKey,\n description: modifyLocaleMessageKey(options.description),\n };\n }\n\n protected getOptions(file: EntrypointFile): Record<string, any> {\n const instance = this.optionFile(file);\n\n const options = instance.getOptions();\n\n if (instance.getDefinition() === \"defineExecuteActionCommand\") {\n return {...options, name: CommandExecuteActionName};\n }\n\n return options;\n }\n}\n","import z from \"zod\";\n\nimport AbstractParser from \"./AbstractParser\";\n\nimport {ContentScriptEntrypointOptions, ContentScriptMatches} from \"@typing/content\";\nimport {EntrypointFile} from \"@typing/entrypoint\";\n\nexport default class<\n O extends ContentScriptEntrypointOptions = ContentScriptEntrypointOptions,\n> extends AbstractParser<O> {\n protected definition(): string | string[] {\n return [\"defineContentScript\", \"defineContentScriptAppend\"];\n }\n\n protected schema(): typeof this.CommonPropertiesSchema {\n return this.CommonPropertiesSchema.extend({\n matches: z.array(z.string()).optional(),\n excludeMatches: z.array(z.string()).optional(),\n matchAboutBlank: z.boolean().optional(),\n includeGlobs: z.array(z.string()).optional(),\n excludeGlobs: z.array(z.string()).optional(),\n allFrames: z.boolean().optional(),\n world: z.enum([\"ISOLATED\", \"MAIN\"]).optional(),\n runAt: z.enum([\"document_start\", \"document_end\", \"document_idle\"]).optional(),\n matchOriginAsFallback: z.boolean().optional(),\n declarative: z.boolean().optional(),\n });\n }\n\n public options(file: EntrypointFile): O {\n const options = super.options(file);\n\n return {\n matches: ContentScriptMatches,\n runAt: \"document_idle\",\n declarative: false,\n ...options,\n };\n }\n}\n","import {z} from \"zod\";\n\nimport AbstractParser from \"./AbstractParser\";\n\nimport {ViewEntrypointOptions} from \"@typing/view\";\n\nexport default abstract class<O extends ViewEntrypointOptions> extends AbstractParser<O> {\n protected HtmlTypeStringSchema = z.enum([\"css\", \"js\"]);\n protected HtmlAttributesObjectSchema = z.record(z.string(), z.union([z.string(), z.boolean(), z.number()]));\n\n protected HtmlAddHashFunctionSchema = z.function().args(z.string(), z.string()).returns(z.string());\n\n protected HtmlAddPublicPathFunctionSchema = z.function().args(z.string(), z.string()).returns(z.string());\n\n protected HtmlCommonOptionsSchema = z.object({\n append: z.boolean().optional(),\n useHash: z.boolean().optional(),\n addHash: this.HtmlAddHashFunctionSchema.optional(),\n hash: z.union([z.boolean(), z.string(), this.HtmlAddHashFunctionSchema]).optional(),\n usePublicPath: z.boolean().optional(),\n addPublicPath: this.HtmlAddPublicPathFunctionSchema.optional(),\n publicPath: z.union([z.boolean(), z.string(), this.HtmlAddPublicPathFunctionSchema]).optional(),\n });\n\n protected HtmlExternalObjectSchema = z.object({\n packageName: z.string(),\n variableName: z.string(),\n });\n\n protected HtmlBaseTagOptionsSchema = this.HtmlCommonOptionsSchema.extend({\n glob: z.string().optional(),\n globPath: z.string().optional(),\n globFlatten: z.boolean().optional(),\n sourcePath: z.string().optional(),\n });\n\n protected HtmlLinkTagOptionsSchema = this.HtmlBaseTagOptionsSchema.extend({\n path: z.string(),\n attributes: this.HtmlAttributesObjectSchema.optional(),\n });\n\n protected HtmlScriptTagOptionsSchema = this.HtmlBaseTagOptionsSchema.extend({\n path: z.string(),\n attributes: this.HtmlAttributesObjectSchema.optional(),\n external: this.HtmlExternalObjectSchema.optional(),\n });\n\n protected HtmlMaybeLinkTagOptionsSchema = this.HtmlLinkTagOptionsSchema.extend({\n type: this.HtmlTypeStringSchema.optional(),\n });\n\n protected HtmlMaybeScriptTagOptionsSchema = this.HtmlScriptTagOptionsSchema.extend({\n type: this.HtmlTypeStringSchema.optional(),\n });\n\n protected HtmlMetaTagOptionsSchema = this.HtmlBaseTagOptionsSchema.extend({\n path: z.string().optional(),\n attributes: this.HtmlAttributesObjectSchema,\n });\n\n protected HtmlOptionsSchema = this.HtmlCommonOptionsSchema.extend({\n append: z.boolean().optional(),\n prependExternals: z.boolean().optional(),\n jsExtensions: z.union([z.string(), z.array(z.string())]).optional(),\n cssExtensions: z.union([z.string(), z.array(z.string())]).optional(),\n tags: z\n .union([\n z.string(),\n this.HtmlMaybeLinkTagOptionsSchema,\n this.HtmlMaybeScriptTagOptionsSchema,\n z.array(\n z.union([z.string(), this.HtmlMaybeLinkTagOptionsSchema, this.HtmlMaybeScriptTagOptionsSchema])\n ),\n ])\n .optional(),\n links: z\n .union([\n z.string(),\n this.HtmlLinkTagOptionsSchema,\n z.array(z.union([z.string(), this.HtmlLinkTagOptionsSchema])),\n ])\n .optional(),\n scripts: z\n .union([\n z.string(),\n this.HtmlScriptTagOptionsSchema,\n z.array(z.union([z.string(), this.HtmlScriptTagOptionsSchema])),\n ])\n .optional(),\n metas: z\n .union([\n z.string(),\n this.HtmlMetaTagOptionsSchema,\n z.array(z.union([z.string(), this.HtmlMetaTagOptionsSchema])),\n ])\n .optional(),\n });\n\n protected schema(): typeof this.CommonPropertiesSchema {\n return this.CommonPropertiesSchema.merge(this.HtmlOptionsSchema).extend({\n as: z.string().nonempty().optional(),\n title: z.string().nonempty().optional(),\n template: z.string().nonempty().optional(),\n });\n }\n}\n","import z from \"zod\";\n\nimport ViewParser from \"./ViewParser\";\n\nimport {PageEntrypointOptions} from \"@typing/page\";\n\nexport default class extends ViewParser<PageEntrypointOptions> {\n protected definition(): string {\n return \"definePage\";\n }\n\n protected schema(): typeof this.CommonPropertiesSchema {\n return super.schema().extend({\n name: z.string().nonempty().optional(),\n matches: z.array(z.string()).optional(),\n });\n }\n}\n","import {z} from \"zod\";\n\nimport ViewParser from \"./ViewParser\";\n\nimport {PopupEntrypointOptions} from \"@typing/popup\";\n\nexport default class extends ViewParser<PopupEntrypointOptions> {\n protected definition(): string {\n return \"definePopup\";\n }\n\n protected schema(): typeof this.CommonPropertiesSchema {\n return super.schema().extend({\n icon: z.string().nonempty().optional(),\n apply: z.boolean().optional(),\n });\n }\n}\n","import z from \"zod\";\n\nimport ContentParser from \"./ContentParser\";\n\nimport {RelayEntrypointOptions} from \"@typing/relay\";\nimport {EntrypointFile} from \"@typing/entrypoint\";\n\nexport default class extends ContentParser<RelayEntrypointOptions> {\n protected definition(): string {\n return \"defineRelay\";\n }\n\n protected agreement(): string {\n return \"init\";\n }\n\n protected schema(): typeof this.CommonPropertiesSchema {\n return super.schema().extend({\n name: z\n .string()\n .trim()\n .min(1)\n .max(100)\n .regex(/^[\\p{L}_$][\\p{L}\\p{N}_$]*$/u, {\n message:\n \"Key must start with a Unicode letter, `$` or `_`, and may only contain letters, digits, `$` or `_`\",\n })\n .optional(),\n });\n }\n\n public options(file: EntrypointFile): RelayEntrypointOptions {\n return {...super.options(file), declarative: true};\n }\n}\n","import z from \"zod\";\n\nimport BackgroundParser from \"./BackgroundParser\";\n\nimport {ServiceEntrypointOptions} from \"@typing/service\";\n\nexport default class extends BackgroundParser<ServiceEntrypointOptions> {\n protected definition(): string {\n return \"defineService\";\n }\n\n protected agreement(): string {\n return \"init\";\n }\n\n protected schema(): typeof this.CommonPropertiesSchema {\n return super.schema().extend({\n name: z\n .string()\n .trim()\n .min(1)\n .max(100)\n .regex(/^[\\p{L}_$][\\p{L}\\p{N}_$]*$/u, {\n message:\n \"Key must start with a Unicode letter, `$` or `_`, and may only contain letters, digits, `$` or `_`\",\n })\n .optional(),\n });\n }\n}\n","import {z} from \"zod\";\n\nimport ViewParser from \"./ViewParser\";\n\nimport {SidebarEntrypointOptions} from \"@typing/sidebar\";\n\nexport default class extends ViewParser<SidebarEntrypointOptions> {\n protected definition(): string {\n return \"defineSidebar\";\n }\n\n protected schema(): typeof this.CommonPropertiesSchema {\n return super.schema().extend({\n icon: z.string().nonempty().optional(),\n apply: z.boolean().optional(),\n });\n }\n}\n","import z from \"zod\";\n\nimport ViewParser from \"./ViewParser\";\n\nimport {OffscreenEntrypointOptions, OffscreenReason} from \"@typing/offscreen\";\n\nexport default class extends ViewParser<OffscreenEntrypointOptions> {\n protected definition(): string {\n return \"defineOffscreen\";\n }\n\n protected agreement(): string {\n return \"init\";\n }\n\n protected schema(): typeof this.CommonPropertiesSchema {\n const reasonEnumValues = Object.values(OffscreenReason);\n\n return super.schema().extend({\n name: z\n .string()\n .trim()\n .min(1)\n .max(100)\n .regex(/^[\\p{L}_$][\\p{L}\\p{N}_$]*$/u, {\n message:\n \"Key must start with a Unicode letter, `$` or `_`, and may only contain letters, digits, `$` or `_`\",\n })\n .optional(),\n reasons: z\n .union(\n [\n z.enum(reasonEnumValues as [string, ...string[]]),\n z.array(z.enum(reasonEnumValues as [string, ...string[]])),\n ],\n {\n message:\n 'The \"reasons\" field must be a valid OffscreenReason enum value or array of enum values',\n }\n )\n .optional(),\n justification: z.string().trim().optional(),\n });\n }\n}\n","import AbstractPluginFinder from \"./AbstractPluginFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {BackgroundParser} from \"../parser\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {BackgroundEntrypointOptions} from \"@typing/background\";\nimport {EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class extends AbstractPluginFinder<BackgroundEntrypointOptions> {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.Background;\n }\n\n public canMerge(): boolean {\n return this.config.mergeBackground;\n }\n\n protected getParser(): EntrypointParser<BackgroundEntrypointOptions> {\n return new BackgroundParser(this.config);\n }\n\n protected getPlugin(): EntrypointOptionsFinder<BackgroundEntrypointOptions> {\n return new PluginFinder(this.config, \"background\", this);\n }\n}\n","import AbstractPluginFinder from \"./AbstractPluginFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {CommandParser} from \"../parser\";\nimport {InlineNameGenerator} from \"../name\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {CommandEntrypointOptions, CommandOptions} from \"@typing/command\";\nimport {EntrypointFile, EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class extends AbstractPluginFinder<CommandEntrypointOptions> {\n protected _commands?: Map<EntrypointFile, CommandOptions>;\n\n protected readonly names: InlineNameGenerator;\n\n public constructor(config: ReadonlyConfig) {\n super(config);\n\n this.names = new InlineNameGenerator(this.type());\n }\n\n public type(): EntrypointType {\n return EntrypointType.Command;\n }\n\n protected getParser(): EntrypointParser<CommandEntrypointOptions> {\n return new CommandParser(this.config);\n }\n\n protected getPlugin(): EntrypointOptionsFinder<CommandEntrypointOptions> {\n return new PluginFinder(this.config, \"command\", this);\n }\n\n protected async getCommands(): Promise<Map<EntrypointFile, CommandOptions>> {\n const commands = new Map<EntrypointFile, CommandOptions>();\n\n for (const [file, option] of await this.plugin().options()) {\n const {name, ...definition} = option;\n\n commands.set(file, {\n name: name ? this.names.name(name) : this.names.file(file),\n ...definition,\n });\n }\n\n return commands;\n }\n\n public async commands(): Promise<Map<EntrypointFile, CommandOptions>> {\n return (this._commands ??= await this.getCommands());\n }\n\n public canMerge(): boolean {\n return this.config.mergeCommands;\n }\n\n public clear(): this {\n this.names.reset();\n\n this._commands = undefined;\n\n return super.clear();\n }\n}\n","import AbstractPluginFinder from \"./AbstractPluginFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {ContentParser} from \"../parser\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {ContentScriptEntrypointOptions} from \"@typing/content\";\nimport {EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class extends AbstractPluginFinder<ContentScriptEntrypointOptions> {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.ContentScript;\n }\n\n protected getPlugin(): EntrypointOptionsFinder<ContentScriptEntrypointOptions> {\n return new PluginFinder(this.config, \"content\", this);\n }\n\n protected getParser(): EntrypointParser<ContentScriptEntrypointOptions> {\n return new ContentParser(this.config);\n }\n\n public canMerge(): boolean {\n return this.config.mergeContentScripts;\n }\n}\n","import path from \"path\";\nimport fs from \"fs\";\n\nimport {getAppPath, getAppSourcePath, getRootPath, getSharedPath, getSourcePath} from \"@cli/resolvers/path\";\n\nimport AbstractFinder from \"./AbstractFinder\";\n\nimport {EntrypointFile} from \"@typing/entrypoint\";\n\nexport default abstract class extends AbstractFinder {\n public abstract getNames(): ReadonlySet<string>;\n\n public abstract isValidExtension(extension: string): boolean;\n\n public getDirectory(): string {\n return \".\";\n }\n\n public isValidName(name: string): boolean {\n return name.length > 0 && this.getNames().has(name);\n }\n\n public canMerge(): boolean {\n return false;\n }\n\n public isValidFilename(filename: string): boolean {\n let {name, ext} = path.parse(filename);\n\n if (ext.startsWith(\".\")) {\n ext = ext.slice(1);\n }\n\n return this.isValidName(name) && this.isValidExtension(ext);\n }\n\n protected async getFiles(): Promise<Set<EntrypointFile>> {\n const files = new Set<EntrypointFile>();\n\n const parser = async (directory: string): Promise<void> => {\n if (files.size === 0 || this.canMerge()) {\n const localeFiles = await this.findFiles(getRootPath(directory));\n\n for (const file of localeFiles) {\n files.add(file);\n }\n }\n };\n\n const dir = this.getDirectory();\n\n await parser(getAppSourcePath(this.config, dir));\n await parser(getAppPath(this.config, dir));\n await parser(getSharedPath(this.config, dir));\n await parser(getSourcePath(this.config, dir));\n\n return files;\n }\n\n protected async findFiles(directory: string): Promise<Set<EntrypointFile>> {\n const files = new Set<EntrypointFile>();\n\n try {\n const entries = fs.readdirSync(directory);\n\n for (const entry of entries) {\n const fullPath = path.join(directory, entry);\n const stats = fs.statSync(fullPath);\n\n if (stats.isFile() && this.isValidFilename(fullPath)) {\n files.add(this.file(fullPath));\n }\n }\n } catch {}\n\n return files;\n }\n}\n","import _ from \"lodash\";\nimport path from \"path\";\nimport pluralize from \"pluralize\";\n\nimport {processPluginHandler} from \"@cli/resolvers/plugin\";\n\nimport AbstractFinder from \"./AbstractFinder\";\nimport AbstractAssetFinder from \"./AbstractAssetFinder\";\n\nimport {EntrypointFile} from \"@typing/entrypoint\";\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {PluginAssetKeys} from \"@typing/plugin\";\n\nexport default class extends AbstractFinder {\n constructor(\n config: ReadonlyConfig,\n protected readonly key: PluginAssetKeys,\n protected readonly finder: AbstractAssetFinder\n ) {\n super(config);\n }\n\n protected async getFiles(): Promise<Set<EntrypointFile>> {\n const pluginResult = await Array.fromAsync(\n processPluginHandler(this.config.plugins, this.key, {\n config: this.config,\n })\n );\n\n const files = new Set<EntrypointFile>();\n\n for await (let {name, result} of pluginResult) {\n if (_.isBoolean(result)) {\n result = pluralize(this.key);\n }\n\n if (_.isString(result)) {\n result = await this.findFiles(name, result);\n }\n\n if (_.isArray(result) || _.isSet(result)) {\n for (const item of result) {\n if (_.isEmpty(item)) {\n continue;\n }\n\n let file: EntrypointFile;\n\n if (_.isString(item) && this.finder.isValidFilename(item)) {\n file = this.file(item);\n } else if (_.isPlainObject(item)) {\n const {file: filename} = item as EntrypointFile;\n\n if (filename && this.finder.isValidFilename(filename)) {\n file = item as EntrypointFile;\n } else {\n continue;\n }\n } else {\n continue;\n }\n\n const {name: filename} = path.parse(file.file);\n\n if (filename.endsWith(`.${this.config.browser}`) || !filename.includes(\".\")) {\n files.add(file);\n }\n }\n }\n }\n\n return files;\n }\n\n protected async findFiles(name: string, directory: string): Promise<Set<EntrypointFile>> {\n const files = new Set<EntrypointFile>();\n const resolve = (file: string) => this.resolveSafely(name, path.posix.join(directory, file));\n\n for (const name of this.finder.getNames()) {\n for (const file of [resolve(name), resolve(`${name}.${this.config.browser}`)]) {\n if (file) {\n files.add(file);\n }\n }\n }\n\n return files;\n }\n}\n","export const DefaultIconGroupName = \"default\";\n","import path from \"path\";\nimport _ from \"lodash\";\n\nimport AbstractAssetFinder from \"./AbstractAssetFinder\";\nimport AssetPluginFinder from \"./AssetPluginFinder\";\n\nimport {EntrypointFile} from \"@typing/entrypoint\";\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {DefaultIconGroupName} from \"@typing/icon\";\n\nexport interface IconName {\n group: string;\n size: number;\n}\n\nexport interface IconItem {\n file: EntrypointFile;\n name: IconName;\n}\n\nexport type IconItems = Map<number, IconItem>;\n\nexport type IconGroups = Map<string, IconItems>;\n\nexport default class extends AbstractAssetFinder {\n protected _plugin?: AssetPluginFinder;\n protected _icons?: IconGroups;\n\n protected readonly sizes: ReadonlySet<number> = new Set([16, 32, 48, 64, 128, 256, 512]);\n\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n protected getPlugin(): AssetPluginFinder {\n return new AssetPluginFinder(this.config, \"icon\", this);\n }\n\n public plugin(): AssetPluginFinder {\n return (this._plugin ??= this.getPlugin());\n }\n\n public getNames(): ReadonlySet<string> {\n return new Set([...this.sizes].map(String));\n }\n\n public isValidName(name: string): boolean {\n return this.parseName(name) !== undefined;\n }\n\n public isValidExtension(extension: string): boolean {\n return extension === \"png\";\n }\n\n protected parseName(name: string): IconName | undefined {\n name = name.toLowerCase().trim();\n\n if (name.includes(\".\")) {\n const index = name.lastIndexOf(\".\");\n\n if (index >= 0) {\n name = name.substring(0, index);\n }\n }\n\n const matchSize = name.match(/(\\d+)$/);\n\n const size = matchSize ? parseInt(matchSize[1], 10) : undefined;\n\n if (!size || !this.sizes.has(size)) {\n return undefined;\n }\n\n const groupMatch = name.match(/^([a-z]+)(?:[-_]|\\d)/);\n\n const group = groupMatch ? groupMatch[1] : DefaultIconGroupName;\n\n return {group, size};\n }\n\n protected getName(file: EntrypointFile): IconName {\n const {name: filename} = path.parse(file.file);\n\n const name = this.parseName(filename);\n\n if (!name) {\n throw new Error(`Invalid icon name: ${file.file}`);\n }\n\n return name;\n }\n\n public getDirectory(): string {\n return this.config.icon.sourceDir || \"icons\";\n }\n\n public canMerge(): boolean {\n return this.config.mergeIcons;\n }\n\n protected async getIcons(): Promise<IconGroups> {\n const files = await this.plugin().files();\n\n const groups = _.chain([...files])\n .map(file => ({file, name: this.getName(file)}))\n .groupBy(({name}) => name.group)\n .mapValues(items => {\n return new Map(items.map(item => [item.name.size, item]));\n })\n .value();\n\n return new Map(Object.entries(groups));\n }\n\n public async icons(): Promise<IconGroups> {\n return (this._icons ??= await this.getIcons());\n }\n\n public clear(): this {\n this.plugin().clear();\n\n this._icons = undefined;\n\n return super.clear();\n }\n}\n","import {Language, LocaleBuilder, LocaleValidator} from \"@typing/locale\";\nimport {Browser} from \"@typing/browser\";\n\nexport class LocaleError extends Error {\n constructor(browser: Browser, language: Language, message: string) {\n super(`Locale for ${browser}:${language} - ${message}`);\n }\n}\n\nexport default class implements LocaleValidator {\n protected nameKey?: string;\n protected descriptionKey?: string;\n protected shortNameKey?: string;\n\n protected get nameLimit(): number {\n return (\n {\n [Browser.Chrome]: 75,\n [Browser.Edge]: 75,\n [Browser.Firefox]: 50,\n }[this.browser] || 45\n );\n }\n\n protected get descriptionLimit(): number {\n return 132;\n }\n\n protected get shortNameLimit(): number {\n return 12;\n }\n\n constructor(\n protected readonly browser: Browser,\n protected readonly language: Language\n ) {}\n\n public isValid(locale: LocaleBuilder): boolean {\n try {\n this.validate(locale);\n\n return true;\n } catch {\n return false;\n }\n }\n\n public validate(locale: LocaleBuilder): this {\n const data = locale.get();\n\n const name = this.nameKey && data.get(this.nameKey);\n const shortName = this.shortNameKey && data.get(this.shortNameKey);\n const description = this.descriptionKey && data.get(this.descriptionKey);\n\n if (name && name.length > this.nameLimit) {\n throw new LocaleError(\n this.browser,\n this.language,\n `Name \"${name}\" [${this.nameKey}] exceeds ${this.nameLimit} characters`\n );\n }\n\n if (shortName && shortName.length > this.shortNameLimit) {\n throw new LocaleError(\n this.browser,\n this.language,\n `Short name \"${shortName}\" [${this.shortNameKey}] exceeds ${this.shortNameLimit} characters`\n );\n }\n\n if (description && description.length > this.descriptionLimit) {\n throw new LocaleError(\n this.browser,\n this.language,\n `Description \"${description}\" [${this.descriptionKey}] exceeds ${this.descriptionLimit} characters`\n );\n }\n\n return this;\n }\n\n public setNameKey(nameKey?: string): this {\n this.nameKey = nameKey;\n\n return this;\n }\n\n public setDescriptionKey(descriptionKey?: string): this {\n this.descriptionKey = descriptionKey;\n\n return this;\n }\n\n public setShortNameKey(shortNameKey?: string): this {\n this.shortNameKey = shortNameKey;\n\n return this;\n }\n}\n","import _ from \"lodash\";\n\nimport {convertLocaleKey} from \"@locale/utils\";\n\nimport {LocaleError} from \"./LocaleValidator\";\n\nimport {\n Language,\n LocaleBuilder as LocaleBuilderContract,\n LocaleCustomKeyForLanguage,\n LocaleData,\n LocaleItems,\n LocaleKeys,\n LocaleMessages,\n LocaleNestedKeysSeparator,\n LocaleStructure,\n LocaleValidator,\n LocaleValuesSeparator,\n} from \"@typing/locale\";\nimport {Browser} from \"@typing/browser\";\n\nexport default class LocaleBuilder implements LocaleBuilderContract {\n protected data: LocaleData[] = [];\n protected items?: LocaleItems;\n\n protected validator?: LocaleValidator;\n\n constructor(\n protected readonly browser: Browser,\n protected readonly language: Language\n ) {}\n\n public get(): LocaleItems {\n if (this.items) {\n return this.items;\n }\n\n const items: LocaleItems = new Map();\n\n for (const data of this.data) {\n for (const [key, value] of this.convert(data).entries()) {\n items.set(key, value);\n }\n }\n\n if (this.browser === Browser.Opera) {\n /**\n * The Opera browser does not support RTL languages,\n * and for Opera you need to directly indicate what kind of language it is.\n * interface language is always different\n */\n\n items.set(LocaleCustomKeyForLanguage, this.language);\n }\n\n return (this.items = items);\n }\n\n public keys(): LocaleKeys {\n return new Set(this.get().keys());\n }\n\n public build(): LocaleMessages {\n return this.validate()\n .get()\n .entries()\n .reduce(\n (locale, [key, value]) => ({\n ...locale,\n [convertLocaleKey(key)]: {message: value},\n }),\n {}\n );\n }\n\n public structure(): LocaleStructure {\n const substitutions = (value: string): string[] => {\n const pattern = /{{([^{}]+)}}/g;\n const substitutions: string[] = [];\n\n let match: RegExpExecArray | null;\n\n while ((match = pattern.exec(value)) !== null) {\n substitutions.push(match[1].trim());\n }\n\n return substitutions;\n };\n\n return this.get()\n .entries()\n .reduce(\n (structure, [key, value]) => ({\n ...structure,\n [key]: {\n plural: value.includes(LocaleValuesSeparator),\n substitutions: substitutions(value),\n },\n }),\n {} as LocaleStructure\n );\n }\n\n public merge(data: LocaleData): this {\n this.data.push(data);\n this.items = undefined;\n\n return this;\n }\n\n public lang(): Language {\n return this.language;\n }\n\n public isValid(): boolean {\n try {\n this.validate();\n return true;\n } catch {\n return false;\n }\n }\n\n public validate(): this {\n if (!this.validator) {\n throw new LocaleError(this.browser, this.language, \"Validator is not set\");\n }\n\n this.validator.validate(this);\n\n return this;\n }\n\n public setValidator(validator: LocaleValidator): this {\n this.validator = validator;\n\n return this;\n }\n\n protected convert(data: LocaleData, prefix?: string): LocaleItems {\n const items: LocaleItems = new Map();\n\n for (const [key, value] of Object.entries(data)) {\n const resolvedKey = prefix ? [prefix, key].join(LocaleNestedKeysSeparator) : key;\n\n if (_.isString(value) || _.isNumber(value)) {\n items.set(resolvedKey, value.toString());\n } else if (_.isArray(value)) {\n items.set(\n resolvedKey,\n _.filter(value, v => _.isString(v) || _.isNumber(v)).join(LocaleValuesSeparator)\n );\n } else if (_.isPlainObject(value)) {\n for (const [k, v] of this.convert(value, resolvedKey).entries()) {\n items.set(k, v);\n }\n }\n }\n\n return items;\n }\n}\n","import LocaleBuilder from \"./LocaleBuilder\";\nimport LocaleValidator from \"./LocaleValidator\";\n\nimport {extractLocaleKey} from \"@locale/utils\";\n\nimport {Language, LocaleBuilder as LocaleBuilderContract} from \"@typing/locale\";\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport {LocaleBuilder, LocaleValidator};\n\nexport default (language: Language, config: ReadonlyConfig): LocaleBuilderContract => {\n const {browser, locale} = config;\n const {name, shortName, description} = locale;\n\n const validator = new LocaleValidator(browser, language)\n .setNameKey(extractLocaleKey(name))\n .setShortNameKey(extractLocaleKey(shortName))\n .setDescriptionKey(extractLocaleKey(description));\n\n return new LocaleBuilder(browser, language).setValidator(validator);\n};\n","import _ from \"lodash\";\nimport path from \"path\";\nimport fs from \"fs\";\nimport yaml from \"js-yaml\";\n\nimport AbstractAssetFinder from \"./AbstractAssetFinder\";\nimport AssetPluginFinder from \"./AssetPluginFinder\";\n\nimport localeFactory from \"@cli/builders/locale\";\nimport {isFileExtension} from \"@cli/utils/path\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {\n Language,\n LanguageCodes,\n LocaleBuilder,\n LocaleData,\n LocaleFileExtensions,\n LocaleKeys,\n LocaleStructure,\n} from \"@typing/locale\";\n\nexport type LocaleBuilders = Map<Language, LocaleBuilder>;\n\nexport default class extends AbstractAssetFinder {\n protected _plugin?: AssetPluginFinder;\n protected _builders?: LocaleBuilders;\n\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public isValidName(name: string): boolean {\n if (name.includes(\".\")) {\n name = name.split(\".\").slice(0, -1).join(\".\");\n }\n\n return super.isValidName(name);\n }\n\n public isValidExtension(extension: string): boolean {\n return LocaleFileExtensions.has(extension);\n }\n\n public getDirectory(): string {\n return this.config.locale.dir || \"locales\";\n }\n\n public getNames(): ReadonlySet<string> {\n return LanguageCodes;\n }\n\n public canMerge(): boolean {\n return this.config.mergeLocales;\n }\n\n protected getPlugin(): AssetPluginFinder {\n return new AssetPluginFinder(this.config, \"locale\", this);\n }\n\n public plugin(): AssetPluginFinder {\n return (this._plugin ??= this.getPlugin());\n }\n\n protected async getBuilders(): Promise<LocaleBuilders> {\n return _.chain(Array.from(await this.plugin().files()))\n .groupBy(file => this.getLanguageFromFilename(file.file))\n .reduce((map, files, lang) => {\n const locale = localeFactory(lang as Language, this.config);\n\n for (const {file} of files) {\n const content = fs.readFileSync(file, \"utf8\");\n\n if (isFileExtension(file, [\"yaml\", \"yml\"])) {\n locale.merge(yaml.load(content) as LocaleData);\n } else if (isFileExtension(file, \"json\")) {\n locale.merge(JSON.parse(content));\n }\n }\n\n map.set(locale.lang(), locale);\n\n return map;\n }, new Map() as LocaleBuilders)\n .value();\n }\n\n protected getLanguageFromFilename(filename: string): Language {\n let {name} = path.parse(filename);\n\n if (name.includes(\".\")) {\n name = name.split(\".\").slice(0, -1).join(\".\");\n }\n\n if (LanguageCodes.has(name)) {\n return name as Language;\n }\n\n throw new Error(`Invalid locale filename: ${filename}`);\n }\n\n public async builders(): Promise<LocaleBuilders> {\n return (this._builders ??= await this.getBuilders());\n }\n\n public async keys(): Promise<LocaleKeys> {\n const builders = await this.builders();\n\n const keys = builders.values().reduce((keys, builder) => {\n return keys.concat(...builder.keys());\n }, [] as string[]);\n\n return new Set(keys);\n }\n\n public async structure(): Promise<LocaleStructure> {\n const builders = await this.builders();\n\n return builders.values().reduce((structure, builder) => {\n return _.merge(structure, builder.structure());\n }, {} as LocaleStructure);\n }\n\n public async languages(): Promise<Set<Language>> {\n const builders = await this.builders();\n\n return new Set(builders.keys());\n }\n\n async empty(): Promise<boolean> {\n return this.plugin().empty();\n }\n\n public clear(): this {\n this.plugin().clear();\n\n this._builders = undefined;\n\n return super.clear();\n }\n}\n","import path from \"path\";\n\nimport AbstractPluginFinder from \"./AbstractPluginFinder\";\n\nimport {InlineNameGenerator} from \"../name\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {EntrypointFile} from \"@typing/entrypoint\";\nimport {TransportEntrypointOptions, TransportOptions} from \"@typing/transport\";\n\nexport interface TransportItem<O extends TransportOptions> {\n options: O;\n contract: string | undefined;\n}\n\nexport type TransportItems<O extends TransportOptions> = Map<EntrypointFile, TransportItem<O>>;\n\nexport default abstract class<\n O extends TransportEntrypointOptions,\n T extends TransportOptions = TransportOptions,\n> extends AbstractPluginFinder<O> {\n protected _transport?: TransportItems<T>;\n\n protected readonly names: InlineNameGenerator;\n\n protected constructor(config: ReadonlyConfig) {\n super(config);\n\n this.names = new InlineNameGenerator(this.type());\n }\n\n protected async getTransport(): Promise<TransportItems<T>> {\n const transport: TransportItems<T> = new Map();\n\n const contracts = await this.plugin().contracts();\n\n for (const [file, option] of await this.plugin().options()) {\n const {name: _name, ...definition} = option;\n\n let name: string;\n\n if (file.external) {\n name = _name ? path.posix.join(file.external, _name) : file.import;\n\n if (this.names.has(name)) {\n throw new Error(`Transport name \"${name}\" for \"${this.type()}\" is already in use.`);\n }\n\n name = this.names.name(name);\n } else if (_name) {\n name = this.names.name(_name);\n } else {\n name = this.names.file(file);\n }\n\n transport.set(file, {\n options: {\n name,\n ...definition,\n } as TransportOptions as T,\n contract: contracts.get(file),\n });\n }\n\n return transport;\n }\n\n public async transport(): Promise<TransportItems<T>> {\n return (this._transport ??= await this.getTransport());\n }\n\n public async dictionary(): Promise<Record<string, string>> {\n const transport = await this.transport();\n\n return transport.values().reduce(\n (dictionary, item) => {\n return {...dictionary, [item.options.name]: item.contract || \"any\"};\n },\n {} as Record<string, string>\n );\n }\n\n public clear(): this {\n this.names.reset();\n\n this._transport = undefined;\n\n return super.clear();\n }\n}\n","import AbstractTransportFinder from \"./AbstractTransportFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {OffscreenParser} from \"../parser\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {OffscreenEntrypointOptions, OffscreenOptions} from \"@typing/offscreen\";\nimport {EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class extends AbstractTransportFinder<OffscreenEntrypointOptions, OffscreenOptions> {\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.Offscreen;\n }\n\n protected getParser(): EntrypointParser<OffscreenEntrypointOptions> {\n return new OffscreenParser(this.config);\n }\n\n protected getPlugin(): EntrypointOptionsFinder<OffscreenEntrypointOptions> {\n return new PluginFinder(this.config, \"offscreen\", this);\n }\n\n public canMerge(): boolean {\n return this.config.mergeOffscreen;\n }\n}\n","import AbstractViewFinder from \"./AbstractViewFinder\";\nimport AbstractTransportFinder from \"./AbstractTransportFinder\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {OffscreenEntrypointOptions} from \"@typing/offscreen\";\nimport {EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class extends AbstractViewFinder<OffscreenEntrypointOptions> {\n constructor(\n config: ReadonlyConfig,\n protected readonly finder: AbstractTransportFinder<OffscreenEntrypointOptions>\n ) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.Offscreen;\n }\n\n protected getParser(): EntrypointParser<OffscreenEntrypointOptions> {\n return this.finder.parser();\n }\n\n protected getPlugin(): EntrypointOptionsFinder<OffscreenEntrypointOptions> {\n return this.finder.plugin();\n }\n\n public canMerge(): boolean {\n return this.config.mergeOffscreen;\n }\n}\n","import AbstractViewFinder from \"./AbstractViewFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {PageParser} from \"../parser\";\nimport {InlineNameGenerator} from \"../name\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {PageEntrypointOptions} from \"@typing/page\";\nimport {\n EntrypointFile,\n EntrypointNameGenerator,\n EntrypointOptionsFinder,\n EntrypointParser,\n EntrypointType,\n} from \"@typing/entrypoint\";\n\nexport default class extends AbstractViewFinder<PageEntrypointOptions> {\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.Page;\n }\n\n protected createFilenameGenerator(): EntrypointNameGenerator {\n return new InlineNameGenerator(this.type())\n .reserve(EntrypointType.Background)\n .reserve(EntrypointType.Command)\n .reserve(EntrypointType.ContentScript)\n .reserve(EntrypointType.Sidebar)\n .reserve(EntrypointType.Popup)\n .reserve(EntrypointType.Offscreen)\n .reserve(EntrypointType.Options);\n }\n\n protected createViewAlias(file: EntrypointFile, options: PageEntrypointOptions): string {\n const {name} = options;\n\n let alias = name ? this.aliases.name(name) : this.aliases.file(file);\n\n if (file.external) {\n alias = file.import;\n }\n\n return alias;\n }\n\n protected getParser(): EntrypointParser<PageEntrypointOptions> {\n return new PageParser(this.config);\n }\n\n protected getPlugin(): EntrypointOptionsFinder<PageEntrypointOptions> {\n return new PluginFinder(this.config, \"page\", this);\n }\n\n public canMerge(): boolean {\n return this.config.mergePages;\n }\n}\n","import AbstractViewFinder from \"./AbstractViewFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {PopupParser} from \"../parser\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {PopupEntrypointOptions} from \"@typing/popup\";\nimport {EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class extends AbstractViewFinder<PopupEntrypointOptions> {\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.Popup;\n }\n\n protected getParser(): EntrypointParser<PopupEntrypointOptions> {\n return new PopupParser(this.config);\n }\n\n protected getPlugin(): EntrypointOptionsFinder<PopupEntrypointOptions> {\n return new PluginFinder(this.config, \"popup\", this);\n }\n\n public canMerge(): boolean {\n return this.config.mergePopup;\n }\n\n public allowMultiple(): boolean {\n return this.config.multiplePopup;\n }\n}\n","import AbstractTransportFinder from \"./AbstractTransportFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {RelayParser} from \"../parser\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {RelayEntrypointOptions} from \"@typing/relay\";\nimport {EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class extends AbstractTransportFinder<RelayEntrypointOptions> {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.Relay;\n }\n\n protected getParser(): EntrypointParser<RelayEntrypointOptions> {\n return new RelayParser(this.config);\n }\n\n protected getPlugin(): EntrypointOptionsFinder<RelayEntrypointOptions> {\n return new PluginFinder(this.config, \"relay\", this);\n }\n\n public canMerge(): boolean {\n return this.config.mergeRelay;\n }\n}\n","import AbstractTransportFinder from \"./AbstractTransportFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {ServiceParser} from \"../parser\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {ServiceEntrypointOptions} from \"@typing/service\";\nimport {EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class extends AbstractTransportFinder<ServiceEntrypointOptions> {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.Service;\n }\n\n protected getParser(): EntrypointParser<ServiceEntrypointOptions> {\n return new ServiceParser(this.config);\n }\n\n protected getPlugin(): EntrypointOptionsFinder<ServiceEntrypointOptions> {\n return new PluginFinder(this.config, \"service\", this);\n }\n\n public canMerge(): boolean {\n return this.config.mergeService;\n }\n}\n","import AbstractViewFinder from \"./AbstractViewFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {SidebarParser} from \"../parser\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {SidebarEntrypointOptions} from \"@typing/sidebar\";\nimport {EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class extends AbstractViewFinder<SidebarEntrypointOptions> {\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.Sidebar;\n }\n\n protected getParser(): EntrypointParser<SidebarEntrypointOptions> {\n return new SidebarParser(this.config);\n }\n\n protected getPlugin(): EntrypointOptionsFinder<SidebarEntrypointOptions> {\n return new PluginFinder(this.config, \"sidebar\", this);\n }\n\n public canMerge(): boolean {\n return this.config.mergeSidebar;\n }\n\n public allowMultiple(): boolean {\n return this.config.multipleSidebar;\n }\n}\n","import {EntrypointFile} from \"@typing/entrypoint\";\nimport {Framework} from \"@typing/framework\";\n\nexport const getEntrypointFileFramework = (file: EntrypointFile): Framework => {\n if (/\\.(jsx|tsx)$/.test(file.file)) {\n return Framework.React;\n }\n\n return Framework.Vanilla;\n};\n","import background from \"./background.ts?raw\";\nimport command from \"./command.ts?raw\";\nimport content from \"./content.ts?raw\";\nimport transport from \"./transport.ts?raw\";\nimport offscreen from \"./offscreen.ts?raw\";\nimport offscreenBackground from \"./offscreen.background.ts?raw\";\nimport relay from \"./relay.ts?raw\";\nimport view from \"./view.ts?raw\";\n\nimport {getEntrypointFileFramework} from \"@cli/entrypoint\";\n\nimport {PackageName} from \"@typing/app\";\nimport {EntrypointFile} from \"@typing/entrypoint\";\n\nconst templates = {background, command, content, offscreen, relay, view, transport};\n\nconst getEntryFramework = (file: EntrypointFile, entry: \"content\" | \"view\"): string => {\n return `${PackageName}/entry/${entry}/${getEntrypointFileFramework(file)}`;\n};\n\nconst getVirtualModule = (file: EntrypointFile, template: keyof typeof templates): string => {\n // prettier-ignore\n return templates[template]\n .replaceAll(\"//@ts-ignore\", \"\")\n .replace(`virtual:${template}-entrypoint`, file.import);\n};\n\nconst getTransportModule = (file: EntrypointFile, name: string, layer: string): string => {\n // prettier-ignore\n return getVirtualModule(file, \"transport\")\n .replace(\"virtual:transport-name\", name)\n .replaceAll(\":entry\", layer);\n};\n\nexport const virtualBackgroundModule = (file: EntrypointFile): string => {\n return getVirtualModule(file, \"background\");\n};\n\nexport const virtualCommandModule = (file: EntrypointFile, name: string): string => {\n return getVirtualModule(file, \"command\").replace(\"virtual:command-name\", name);\n};\n\nexport const virtualContentScriptModule = (file: EntrypointFile): string => {\n // prettier-ignore\n return getVirtualModule(file, \"content\")\n .replace(`virtual:content-framework`, getEntryFramework(file, \"content\"));\n};\n\nexport const virtualOffscreenModule = (file: EntrypointFile, name: string): string => {\n return getVirtualModule(file, \"offscreen\")\n .replace(\"virtual:offscreen-name\", name)\n .replace(`virtual:view-framework`, getEntryFramework(file, \"view\"));\n};\n\nexport const virtualOffscreenBackgroundModule = (): string => {\n return offscreenBackground;\n};\n\nexport const virtualRelayModule = (file: EntrypointFile, name: string): string => {\n return getVirtualModule(file, \"relay\")\n .replace(\"virtual:relay-name\", name)\n .replace(`virtual:content-framework`, getEntryFramework(file, \"content\"));\n};\n\nexport const virtualServiceModule = (file: EntrypointFile, name: string): string => {\n return getTransportModule(file, name, \"service\");\n};\n\nexport const virtualViewModule = (file: EntrypointFile): string => {\n // prettier-ignore\n return getVirtualModule(file, \"view\")\n .replace(`virtual:view-framework`, getEntryFramework(file, \"view\"));\n};\n","import {EntrypointBuilder, EntrypointOptions} from \"@typing/entrypoint\";\nimport {Awaiter} from \"@typing/helpers\";\n\ntype ManifestPermissions = chrome.runtime.ManifestPermissions;\n\nexport const BackgroundEntryName = \"background\";\n\nexport interface BackgroundConfig {\n persistent?: boolean;\n permissions?: ManifestPermissions[];\n}\n\nexport type BackgroundOptions = BackgroundConfig & EntrypointOptions;\n\nexport type BackgroundEntrypointOptions = BackgroundOptions;\n\nexport type BackgroundMainHandler = (options: BackgroundOptions) => Awaiter<void>;\n\nexport interface BackgroundDefinition extends BackgroundEntrypointOptions {\n main?: BackgroundMainHandler;\n}\n\nexport type BackgroundBuilder = EntrypointBuilder;\n","import {AbstractPluginFinder} from \"@cli/entrypoint\";\n\nimport {EntrypointEntries} from \"@typing/entrypoint\";\nimport {BackgroundEntrypointOptions, BackgroundEntryName} from \"@typing/background\";\nimport {ManifestPermissions} from \"@typing/manifest\";\n\nexport default class BackgroundEntry<O extends BackgroundEntrypointOptions> {\n public static readonly name: string = BackgroundEntryName;\n\n constructor(public readonly finder: AbstractPluginFinder<O>) {}\n\n public async entries(): Promise<EntrypointEntries> {\n const options = await this.finder.plugin().options();\n\n return new Map([[BackgroundEntry.name, new Set(options.keys())]]);\n }\n\n public async isPersistent(): Promise<boolean> {\n const options = await this.finder.plugin().options();\n\n return Array.from(options.values()).some(({persistent}) => persistent);\n }\n\n public async getPermissions(): Promise<ManifestPermissions> {\n const options = await this.finder.plugin().options();\n\n const permissions: ManifestPermissions = new Set();\n\n for await (const entry of options.values()) {\n if (entry.permissions && entry.permissions.length > 0) {\n entry.permissions.forEach(permission => permissions.add(permission));\n }\n }\n\n return permissions;\n }\n}\n","import BackgroundEntry from \"./BackgroundEntry\";\n\nimport {BackgroundFinder} from \"@cli/entrypoint\";\n\nimport {BackgroundEntrypointOptions} from \"@typing/background\";\n\nexport default class extends BackgroundFinder {\n public entry(): BackgroundEntry<BackgroundEntrypointOptions> {\n return new BackgroundEntry(this);\n }\n}\n","import BackgroundEntry from \"./BackgroundEntry\";\n\nimport {BackgroundEntrypointOptions} from \"@typing/background\";\nimport {ManifestPermissions} from \"@typing/manifest\";\n\nexport default class {\n protected entries = new Set<BackgroundEntry<BackgroundEntrypointOptions>>();\n\n public add(entry: BackgroundEntry<BackgroundEntrypointOptions>): this {\n this.entries.add(entry);\n\n return this;\n }\n\n public async hasBackground(): Promise<boolean> {\n for await (const entry of this.entries) {\n if (await entry.finder.exists()) {\n return true;\n }\n }\n\n return false;\n }\n\n public async isPersistent(): Promise<boolean> {\n for await (const entry of this.entries) {\n if (await entry.isPersistent()) {\n return true;\n }\n }\n\n return false;\n }\n\n public async getPermissions(): Promise<ManifestPermissions> {\n const permissions: ManifestPermissions = new Set();\n\n for await (const entry of this.entries) {\n const entryPermissions = await entry.getPermissions();\n\n entryPermissions.forEach(permission => permissions.add(permission));\n }\n\n return permissions;\n }\n}\n","import BackgroundEntry from \"./BackgroundEntry\";\n\nimport {CommandFinder} from \"@cli/entrypoint\";\nimport {virtualCommandModule} from \"@cli/virtual\";\n\nimport {CommandConfig, CommandEntrypointOptions} from \"@typing/command\";\nimport {ManifestCommand, ManifestCommands} from \"@typing/manifest\";\nimport {EntrypointFile} from \"@typing/entrypoint\";\n\nexport default class Command extends CommandFinder {\n public entry(): BackgroundEntry<CommandEntrypointOptions> {\n return new BackgroundEntry(this);\n }\n\n public get(file: EntrypointFile): CommandConfig | undefined {\n return this._commands?.get(file);\n }\n\n /**\n * Before creating the virtual module, it is necessary to run a command `await this.commands()`\n * that caches the commands.\n * This command is executed during the type declaration generation stage for the commands.\n */\n public virtual(file: EntrypointFile): string {\n const options = this._commands?.get(file);\n\n if (!options) {\n throw new Error(`Command options not found for \"${file}\"`);\n }\n\n return virtualCommandModule(file, options.name);\n }\n\n public async manifest(): Promise<ManifestCommands | undefined> {\n if (await this.empty()) {\n return undefined;\n }\n\n const options = await this.commands();\n\n return new Set<ManifestCommand>(options.values());\n }\n}\n","import BackgroundEntry from \"./BackgroundEntry\";\n\nimport {ServiceFinder} from \"@cli/entrypoint\";\nimport {virtualServiceModule} from \"@cli/virtual\";\n\nimport {BackgroundEntrypointOptions} from \"@typing/background\";\nimport {EntrypointFile} from \"@typing/entrypoint\";\n\nexport default class extends ServiceFinder {\n public entry(): BackgroundEntry<BackgroundEntrypointOptions> {\n return new BackgroundEntry(this);\n }\n\n /**\n * Before creating the virtual module, it is necessary to run a command `await service.transport()`\n * that caches the services.\n * This command is executed during the type declaration generation stage for the service.\n */\n public virtual(file: EntrypointFile): string {\n const options = this._transport?.get(file)?.options;\n\n if (!options) {\n throw new Error(`Service options not found for \"${file}\"`);\n }\n\n return virtualServiceModule(file, options.name);\n }\n}\n","import fs from \"fs\";\nimport path from \"path\";\n\nimport {getInputPath, getRootPath} from \"@cli/resolvers/path\";\n\nimport {PackageName, SystemDir} from \"@typing/app\";\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default abstract class FileBuilder {\n protected abstract filename(): string;\n\n protected abstract template(): string;\n\n public static make<T extends FileBuilder>(this: new (config: ReadonlyConfig) => T, config: ReadonlyConfig): T {\n return new this(config).build();\n }\n\n protected constructor(protected readonly config: ReadonlyConfig) {}\n\n protected content(): string {\n return this.template().replaceAll(\":package\", PackageName);\n }\n\n protected withBanner(): boolean {\n return true;\n }\n\n public build(): this {\n const systemDirPath = getRootPath(getInputPath(this.config, SystemDir));\n\n let content = this.content().replaceAll(\"// prettier-ignore\", \"\");\n\n if (this.withBanner()) {\n const banner = \"// This file is automatically generated. \\n\\n\";\n\n content = `${banner}${content}`;\n }\n\n fs.mkdirSync(systemDirPath, {recursive: true});\n\n fs.writeFileSync(path.join(systemDirPath, this.filename()), content);\n\n return this;\n }\n}\n","import path from \"path\";\nimport _ from \"lodash\";\nimport {TsConfigJson} from \"type-fest\";\n\nimport FileBuilder from \"./FileBuilder\";\n\nimport {getRootPath} from \"@cli/resolvers/path\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends FileBuilder {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n protected filename(): string {\n return \"tsconfig.json\";\n }\n\n protected withBanner(): boolean {\n return false;\n }\n\n protected template(): string {\n return \"\"; // Not need is this place\n }\n\n protected content(): string {\n return JSON.stringify(this.json(), null, 2);\n }\n\n protected alias(): Record<string, string> {\n const srcDir = this.config.srcDir;\n const sharedDir = path.posix.join(srcDir, this.config.sharedDir);\n\n return {\n [srcDir]: srcDir,\n \"@\": srcDir,\n \"@shared\": sharedDir,\n \"~\": sharedDir,\n };\n }\n\n public aliases(): Record<string, string> {\n return _.mapValues(this.alias(), value => getRootPath(value));\n }\n\n public json(): TsConfigJson {\n const outputDir = path.posix.join(\"..\", this.config.outputDir);\n\n return {\n compilerOptions: {\n target: \"ESNext\",\n module: \"ESNext\",\n moduleResolution: \"Bundler\",\n esModuleInterop: true,\n forceConsistentCasingInFileNames: true,\n resolveJsonModule: true,\n strict: true,\n skipLibCheck: true,\n noEmit: true,\n outDir: outputDir,\n paths: _.reduce(\n this.alias(),\n (paths, value, key) => ({\n ...paths,\n [path.posix.join(key, \"*\")]: [path.posix.join(\"..\", value, \"*\")],\n }),\n {} as Record<string, string[]>\n ),\n },\n include: [\n \"../**/*\",\n \"./vendor.d.ts\",\n \"./locale.d.ts\",\n \"./service.d.ts\",\n \"./relay.d.ts\",\n \"./offscreen.d.ts\",\n \"./icon.d.ts\",\n \"./page.d.ts\",\n \"./popup.d.ts\",\n \"./sidebar.d.ts\",\n ],\n exclude: [outputDir],\n };\n }\n}\n","import \":package\";\nimport type {LayerProxyTarget, LayerTarget} from \":package/:layer\";\n\ndeclare module \":package\" {\n // prettier-ignore\n export interface LayerRegistry { [name: string]: any }\n\n export function getLayer<N extends keyof LayerRegistry>(name: N): LayerProxyTarget<LayerRegistry, N>;\n}\n\ndeclare module \":package/:layer\" {\n import type {LayerRegistry} from \":package\";\n\n export function getLayer<N extends keyof LayerRegistry>(name: N): LayerTarget<LayerRegistry, N>;\n}\n","import _ from \"lodash\";\n\nimport FileBuilder from \"../../FileBuilder\";\n\nimport template from \"./transport.d.ts?raw\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport enum TransportDeclarationLayer {\n Service = \"service\",\n Offscreen = \"offscreen\",\n Relay = \"relay\",\n}\n\nexport default class<T extends Record<string, string> = Record<string, string>> extends FileBuilder {\n protected _dictionary?: T;\n\n constructor(\n config: ReadonlyConfig,\n protected readonly layer: TransportDeclarationLayer\n ) {\n super(config);\n }\n\n protected filename(): string {\n return this.layer + \".d.ts\";\n }\n\n protected template(): string {\n const dictionary = this._dictionary;\n\n if (!dictionary) {\n throw new Error(`Transport ${this.layer} dictionary is not set`);\n }\n\n const type = Object.entries(dictionary)\n .map(([key, value]) => {\n return `'${key}': ${value};`;\n })\n .join(\"\\n\\t\\t\");\n\n return template\n .replaceAll(\":layer\", this.layer)\n .replaceAll(\"Layer\", _.upperFirst(this.layer))\n .replace(`{ [name: string]: any }`, `{\\n\\t\\t${type}\\n\\t}`);\n }\n\n public dictionary(dictionary: T): this {\n this._dictionary = dictionary;\n\n return this;\n }\n}\n","import FileBuilder from \"../FileBuilder\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends FileBuilder {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n protected filename(): string {\n return \"vendor.d.ts\";\n }\n\n protected template(): string {\n const types = [`:package/client-types`].map(value => `/// <reference types=\"${value}\" />`);\n\n return types.join(\"\\n\");\n }\n}\n","import {Configuration as RspackConfig} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport TypescriptConfig from \"./TypescriptConfig\";\n\nimport {TransportDeclaration, TransportDeclarationLayer, VendorDeclaration} from \"./declaration\";\n\nexport {default as FileBuilder} from \"./FileBuilder\";\nexport {TypescriptConfig, VendorDeclaration, TransportDeclaration, TransportDeclarationLayer};\n\nexport default definePlugin(() => {\n let typescript: TypescriptConfig;\n\n return {\n name: \"adnbn:typescript\",\n startup: ({config}) => {\n typescript = TypescriptConfig.make(config);\n\n VendorDeclaration.make(config);\n },\n bundler: () => {\n return {\n resolve: {\n extensions: [\".ts\", \".tsx\", \".js\"],\n alias: typescript.aliases(),\n },\n module: {\n rules: [\n {\n test: /\\.tsx?$/,\n loader: \"builtin:swc-loader\",\n options: {\n jsc: {\n parser: {\n syntax: \"typescript\",\n tsx: true,\n },\n target: \"es2020\",\n },\n },\n type: \"javascript/auto\",\n },\n ],\n },\n } satisfies RspackConfig;\n },\n };\n});\n","import {TransportDeclaration, TransportDeclarationLayer} from \"../typescript\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends TransportDeclaration {\n constructor(config: ReadonlyConfig) {\n super(config, TransportDeclarationLayer.Service);\n }\n}\n","import {Configuration as RspackConfig} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\nimport {virtualBackgroundModule} from \"@cli/virtual\";\n\nimport {EntrypointPlugin} from \"@cli/bundler\";\n\nimport Background from \"./Background\";\nimport BackgroundEntry from \"./BackgroundEntry\";\nimport BackgroundManifest from \"./BackgroundManifest\";\nimport Command from \"./Command\";\nimport Service from \"./Service\";\nimport ServiceDeclaration from \"./ServiceDeclaration\";\n\nimport {Command as AppCommand} from \"@typing/app\";\n\nexport default definePlugin(() => {\n let background: Background;\n let command: Command;\n let service: Service;\n let serviceDeclaration: ServiceDeclaration;\n\n return {\n name: \"adnbn:background\",\n startup: async ({config}) => {\n background = new Background(config);\n command = new Command(config);\n service = new Service(config);\n serviceDeclaration = new ServiceDeclaration(config);\n },\n background: () => background.files(),\n command: () => command.files(),\n service: () => service.files(),\n bundler: async ({config, rspack}) => {\n serviceDeclaration.dictionary(await service.dictionary()).build();\n\n if ((await background.empty()) && (await command.empty()) && (await service.empty())) {\n if (config.debug) {\n console.warn(\"Background, command or service entries not found\");\n }\n\n return {};\n }\n\n const backgroundPlugin = EntrypointPlugin.from(await background.entry().entries()).virtual(file =>\n virtualBackgroundModule(file)\n );\n\n const commandPlugin = EntrypointPlugin.from(await command.entry().entries()).virtual(file =>\n command.virtual(file)\n );\n\n const servicePlugin = EntrypointPlugin.from(await service.entry().entries()).virtual(file =>\n service.virtual(file)\n );\n\n if (config.command === AppCommand.Watch) {\n backgroundPlugin.watch(() => background.clear().entry().entries());\n\n commandPlugin.watch(async () => {\n // Clear the command cache\n await command.clear().commands();\n\n return command.entry().entries();\n });\n\n servicePlugin.watch(async () => {\n serviceDeclaration.dictionary(await service.clear().dictionary()).build();\n\n return service.entry().entries();\n });\n }\n\n return {\n plugins: [servicePlugin, commandPlugin, backgroundPlugin],\n optimization: {\n splitChunks: {\n chunks(chunk) {\n return chunk.name !== BackgroundEntry.name;\n },\n },\n },\n } satisfies RspackConfig;\n },\n manifest: async ({manifest}) => {\n const mft = new BackgroundManifest().add(background.entry()).add(command.entry()).add(service.entry());\n\n manifest\n .setBackground(\n (await mft.hasBackground())\n ? {\n entry: BackgroundEntry.name,\n persistent: await mft.isPersistent(),\n }\n : undefined\n )\n .setCommands(await command.manifest());\n\n const permissions = await mft.getPermissions();\n\n if (permissions.size > 0) {\n manifest.appendPermissions(permissions);\n }\n },\n };\n});\n","import _ from \"lodash\";\n\nimport {ContentScriptConfig, ContentScriptEntrypointOptions} from \"@typing/content\";\n\nexport const getContentScriptConfigFromOptions = (options: ContentScriptEntrypointOptions): ContentScriptConfig => {\n return _.pick(options, [\n \"matches\",\n \"excludeMatches\",\n \"includeGlobs\",\n \"excludeGlobs\",\n \"allFrames\",\n \"runAt\",\n \"world\",\n \"matchAboutBlank\",\n \"matchOriginAsFallback\",\n ]);\n};\n","import stringify from \"json-stringify-deterministic\";\n\nimport {getContentScriptConfigFromOptions} from \"./utils\";\nimport {ContentNameGenerator} from \"./types\";\n\nimport {NameGenerator} from \"@cli/entrypoint\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {EntrypointType} from \"@typing/entrypoint\";\nimport {ContentScriptEntrypointOptions} from \"@typing/content\";\n\nexport default class ContentName extends NameGenerator implements ContentNameGenerator<ContentScriptEntrypointOptions> {\n protected readonly _names = new Map<string, string>();\n\n constructor(protected readonly config: ReadonlyConfig) {\n super(EntrypointType.ContentScript);\n\n this.reserve(this.getChunkName());\n }\n\n public getChunkName(): string {\n return \"common.\" + this.entrypoint;\n }\n\n public create(name: string, options: ContentScriptEntrypointOptions): string {\n const entry = this.name(name);\n\n if (!this.config.concatContentScripts) {\n return entry;\n }\n\n const key = stringify(getContentScriptConfigFromOptions(options));\n\n const existingEntry = this._names.get(key);\n\n if (existingEntry) {\n return existingEntry;\n }\n\n this._names.set(key, entry);\n\n return entry;\n }\n}\n","import ContentName from \"./ContentName\";\n\nimport {ContentGroupItems, ContentProvider} from \"./types\";\nimport {getContentScriptConfigFromOptions} from \"./utils\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {ContentScriptEntrypointOptions} from \"@typing/content\";\nimport {EntrypointEntries, EntrypointFile, EntrypointType} from \"@typing/entrypoint\";\nimport {ManifestContentScripts, ManifestHostPermissions} from \"@typing/manifest\";\n\nexport default class {\n protected readonly providers = new Set<ContentProvider<ContentScriptEntrypointOptions>>();\n\n protected readonly names: ContentName;\n\n protected _group?: ContentGroupItems<ContentScriptEntrypointOptions>;\n\n constructor(config: ReadonlyConfig) {\n this.names = new ContentName(config);\n }\n\n public provider(provider: ContentProvider<ContentScriptEntrypointOptions>): this {\n this.providers.add(provider);\n\n return this;\n }\n\n protected async getGroup(): Promise<ContentGroupItems<ContentScriptEntrypointOptions>> {\n const content = await Promise.all(Array.from(this.providers, provider => provider.driver().items()));\n\n const group: ContentGroupItems<ContentScriptEntrypointOptions> = new Map();\n\n for (const items of content) {\n for (const [name, item] of items) {\n const entry = this.names.create(name, item.options);\n\n group.set(entry, new Set([...(group.get(entry) || []), item]));\n }\n }\n\n return group;\n }\n\n public async group(): Promise<ContentGroupItems<ContentScriptEntrypointOptions>> {\n return (this._group ??= await this.getGroup());\n }\n\n public async entries(): Promise<EntrypointEntries> {\n const entries: EntrypointEntries = new Map();\n\n for (const [entry, items] of await this.group()) {\n entries.set(entry, new Set(Array.from(items, ({file}) => file)));\n }\n\n return entries;\n }\n\n public async manifest(): Promise<ManifestContentScripts> {\n const manifest: ManifestContentScripts = new Set();\n\n for (const [entry, items] of await this.group()) {\n const options = Array.from(items, ({options}) => options).reduce((acc, opt) => {\n return {...acc, ...opt};\n }, {} as ContentScriptEntrypointOptions);\n\n manifest.add({entry, ...getContentScriptConfigFromOptions(options)});\n }\n\n return manifest;\n }\n\n public async hostPermissions(): Promise<ManifestHostPermissions> {\n const hostPermissions = new Set<string>();\n\n const group = await this.group();\n\n for (const items of group.values()) {\n for (const {options} of items) {\n const {matches, declarative} = options;\n\n if (!declarative || !matches) {\n continue;\n }\n\n for (const match of matches) {\n hostPermissions.add(match);\n }\n }\n }\n\n return hostPermissions;\n }\n\n public virtual(file: EntrypointFile): string {\n for (const provider of this.providers) {\n try {\n return provider.virtual(file);\n } catch {}\n }\n\n throw new Error(`Virtual file \"${file.file}\" not found.`);\n }\n\n public async empty(): Promise<boolean> {\n return (await this.group()).size === 0;\n }\n\n public chunkName(): string {\n return this.names.getChunkName();\n }\n\n public likely(name?: string): boolean {\n if (!name) {\n return false;\n }\n\n return [EntrypointType.Relay, EntrypointType.ContentScript].some(\n type => name === type || name.endsWith(`.${type}`)\n );\n }\n\n public clear(): this {\n for (const provider of this.providers) {\n provider.clear();\n }\n\n this.names.reset();\n\n this._group = undefined;\n\n return this;\n }\n}\n","import {ContentDriver, ContentItems} from \"./types\";\n\nimport {AbstractPluginFinder, InlineNameGenerator} from \"@cli/entrypoint\";\n\nimport {ContentScriptEntrypointOptions} from \"@typing/content\";\nimport {EntrypointNameGenerator} from \"@typing/entrypoint\";\n\nexport default class<O extends ContentScriptEntrypointOptions> implements ContentDriver<O> {\n protected _items?: ContentItems<O>;\n\n protected readonly itemNames: EntrypointNameGenerator;\n\n constructor(protected readonly finder: AbstractPluginFinder<O>) {\n this.itemNames = new InlineNameGenerator(this.finder.type());\n }\n\n protected async getItems(): Promise<ContentItems<O>> {\n const items: ContentItems<O> = new Map();\n\n const files = await this.finder.plugin().options();\n\n for (const [file, options] of files) {\n items.set(this.itemNames.file(file), {file, options});\n }\n\n return items;\n }\n\n public async items(): Promise<ContentItems<O>> {\n return (this._items ??= await this.getItems());\n }\n\n public clear(): this {\n this._items = undefined;\n\n this.itemNames.reset();\n\n return this;\n }\n}\n","import ContentDriver from \"./ContentDriver\";\n\nimport {ContentProvider} from \"./types\";\n\nimport {ContentFinder} from \"@cli/entrypoint\";\nimport {virtualContentScriptModule} from \"@cli/virtual\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {ContentScriptEntrypointOptions} from \"@typing/content\";\nimport {EntrypointFile} from \"@typing/entrypoint\";\n\nexport default class extends ContentFinder implements ContentProvider<ContentScriptEntrypointOptions> {\n protected _driver?: ContentDriver<ContentScriptEntrypointOptions>;\n\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public driver(): ContentDriver<ContentScriptEntrypointOptions> {\n return (this._driver ??= new ContentDriver(this));\n }\n\n public virtual(file: EntrypointFile): string {\n if (!this.holds(file)) {\n throw new Error(`File ${file} not found for content script`);\n }\n\n return virtualContentScriptModule(file);\n }\n\n public clear(): this {\n this._driver?.clear();\n\n return super.clear();\n }\n}\n","import ContentDriver from \"./ContentDriver\";\n\nimport {ContentProvider} from \"./types\";\n\nimport {RelayFinder} from \"@cli/entrypoint\";\nimport {virtualRelayModule} from \"@cli/virtual\";\n\nimport {RelayEntrypointOptions} from \"@typing/relay\";\nimport {EntrypointFile} from \"@typing/entrypoint\";\n\nexport default class extends RelayFinder implements ContentProvider<RelayEntrypointOptions> {\n protected _driver?: ContentDriver<RelayEntrypointOptions>;\n\n public driver(): ContentDriver<RelayEntrypointOptions> {\n return (this._driver ??= new ContentDriver(this));\n }\n\n /**\n * Before creating the virtual module, it is necessary to run a command `await this.transport()` that caches the Relays.\n * This command is executed during the type declaration generation stage for the Relays.\n */\n public virtual(file: EntrypointFile): string {\n const options = this._transport?.get(file)?.options;\n\n if (!options) {\n throw new Error(`Relay options not found for \"${file}\"`);\n }\n\n return virtualRelayModule(file, options.name);\n }\n\n public clear(): this {\n this._driver?.clear();\n\n return super.clear();\n }\n}\n","import {TransportDeclaration, TransportDeclarationLayer} from \"../typescript\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends TransportDeclaration {\n constructor(config: ReadonlyConfig) {\n super(config, TransportDeclarationLayer.Relay);\n }\n\n protected template(): string {\n return super\n .template()\n .replace(\"RelayProxyTarget, RelayTarget\", \"RelayProxyTarget, RelayTarget, ProxyRelayOptions\")\n .replace(\"(name: N): RelayProxyTarget\", \"(name: N, options: ProxyRelayOptions): RelayProxyTarget\");\n }\n}\n","import {Configuration as RspackConfig} from \"@rspack/core\";\n\nimport ContentManager from \"./ContentManager\";\nimport Content from \"./Content\";\nimport Relay from \"./Relay\";\nimport RelayDeclaration from \"./RelayDeclaration\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {EntrypointPlugin, isEntryModuleOrIssuer} from \"@cli/bundler\";\n\nimport {Command} from \"@typing/app\";\n\nexport default definePlugin(() => {\n let content: Content;\n let relay: Relay;\n let manager: ContentManager;\n let relayDeclaration: RelayDeclaration;\n\n return {\n name: \"adnbn:content\",\n startup: async ({config}) => {\n content = new Content(config);\n relay = new Relay(config);\n\n manager = new ContentManager(config).provider(content).provider(relay);\n\n relayDeclaration = new RelayDeclaration(config);\n },\n content: () => content.files(),\n relay: () => relay.files(),\n bundler: async ({config}) => {\n relayDeclaration.dictionary(await relay.dictionary()).build();\n\n if (await manager.empty()) {\n if (config.debug) {\n console.warn(\"Content script or relay entries not found\");\n }\n\n return {};\n }\n\n const plugin = EntrypointPlugin.from(await manager.entries()).virtual(file => manager.virtual(file));\n\n if (config.command === Command.Watch) {\n plugin.watch(async () => {\n manager.clear();\n\n relayDeclaration.dictionary(await relay.dictionary()).build();\n\n return manager.entries();\n });\n }\n\n return {\n plugins: [plugin],\n optimization: {\n splitChunks: {\n cacheGroups: {\n frameworkContent: {\n minChunks: 2,\n name: manager.chunkName(),\n test: isEntryModuleOrIssuer([\"content\", \"relay\"]),\n chunks: (chunk): boolean => {\n return manager.likely(chunk.name);\n },\n enforce: false,\n reuseExistingChunk: true,\n priority: 10,\n },\n },\n },\n },\n } satisfies RspackConfig;\n },\n manifest: async ({manifest}) => {\n // prettier-ignore\n manifest\n .setContentScripts(await manager.manifest())\n .appendHostPermissions(await manager.hostPermissions());\n\n if (await relay.exists()) {\n // prettier-ignore\n manifest\n .addPermission(\"scripting\")\n .addPermission(\"tabs\");\n }\n },\n };\n});\n","import {createHash} from \"crypto\";\n\nexport const generateCryptoKey = (password: string): string => {\n return createHash(\"sha256\").update(password).digest(\"base64\");\n};\n\nexport const encryptData = <T = any>(data: T, key: string): string => {\n const jsonString = JSON.stringify(data);\n const dataBytes = Array.from(jsonString, c => c.charCodeAt(0));\n const keyBytes = Array.from(key, c => c.charCodeAt(0));\n\n const encryptedBytes = dataBytes.map((byte, i) => byte ^ keyBytes[i % keyBytes.length]);\n const encryptedString = String.fromCharCode(...encryptedBytes);\n\n return btoa(encryptedString);\n};\n\nexport const decryptData = <T = any>(encrypted: string, key?: string): T => {\n const encryptedString = atob(encrypted);\n const encryptedBytes = Array.from(encryptedString, c => c.charCodeAt(0));\n let keyBytes: any[];\n try {\n //@ts-expect-error: __ADNBN_ENV_CRYPTO_KEY__ is a virtual variable generated by the bundler `src/cli/plugins/dotenv/index.ts`\n keyBytes = Array.from(key || __ADNBN_ENV_CRYPTO_KEY__, c => c.charCodeAt(0));\n } catch (err) {\n throw new Error('You need to specify the \"key\" argument for the decryptData function.');\n }\n\n const decryptedBytes = encryptedBytes.map((byte, i) => byte ^ keyBytes[i % keyBytes.length]);\n const decryptedString = String.fromCharCode(...decryptedBytes);\n\n return JSON.parse(decryptedString);\n};\n","import _ from \"lodash\";\n\nimport {DefinePlugin} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {encryptData, generateCryptoKey} from \"./utils\";\n\nimport {type DotenvParseOutput} from \"dotenv\";\n\nconst ReservedEnvKeys = new Set<string>([\"APP\", \"BROWSER\", \"MODE\", \"MANIFEST_VERSION\"]);\n\nexport default definePlugin((vars: DotenvParseOutput = {}) => {\n return {\n name: \"adnbn:dotenv\",\n bundler: ({config}) => {\n const {filter, crypt} = config.env;\n\n const filteredVars = !filter\n ? vars\n : Object.fromEntries(\n Object.entries(vars).filter(([key]) => {\n if (\n ReservedEnvKeys.has(key) ||\n (_.isFunction(filter) && filter(key)) ||\n (_.isString(filter) && filter.trim() && key.startsWith(filter.trim()))\n ) {\n return true;\n }\n })\n );\n\n const key = generateCryptoKey([config.app, ...Object.keys(filteredVars)].join(\"-\"));\n\n const data = crypt ? encryptData(filteredVars, key) : filteredVars;\n\n return {\n plugins: [\n new DefinePlugin({\n __ADNBN_ENV_CRYPTO_KEY__: JSON.stringify(key),\n \"process.env\": JSON.stringify(data),\n }),\n ],\n };\n },\n };\n});\n","import _ from \"lodash\";\n\nimport {Configuration as RspackConfig, HtmlRspackPlugin} from \"@rspack/core\";\nimport HtmlRspackTagsPlugin from \"html-rspack-tags-plugin\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nexport default definePlugin(() => {\n return {\n name: \"adnbn:html\",\n bundler: ({config, rspack}) => {\n const hasHtml = rspack.plugins?.some(plugin => plugin instanceof HtmlRspackPlugin) ?? false;\n\n if (!hasHtml) {\n return {};\n }\n\n let options = _.isFunction(config.html) ? config.html() : config.html;\n\n if (_.isEmpty(options)) {\n return {};\n }\n\n if (!_.isArray(options)) {\n options = [options];\n }\n\n const plugins = options.map(options => new HtmlRspackTagsPlugin(options));\n\n return {plugins} satisfies RspackConfig;\n },\n };\n});\n","import _ from \"lodash\";\nimport {Configuration as RspackConfig, NormalModule} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {getRootPath, getSourcePath} from \"@cli/resolvers/path\";\n\nexport default definePlugin(() => {\n return {\n name: \"adnbn:optimization\",\n bundler: ({config}) => {\n if (!config.commonChunks) {\n return {};\n }\n\n return {\n optimization: {\n usedExports: true,\n providedExports: true,\n splitChunks: {\n minSize: 10,\n cacheGroups: {\n default: false,\n defaultVendors: false,\n common: {\n test: module => {\n const {resource} = module as NormalModule;\n\n if (!resource) {\n return false;\n }\n\n return resource.startsWith(getRootPath(getSourcePath(config)));\n },\n name: (module, chunks, cacheGroupKey) => {\n const entryNames = Array.from(\n new Set(chunks.map(({name}) => name).filter(name => _.isString(name)))\n ).sort();\n\n return `${entryNames.join(\"-\")}.${cacheGroupKey}`;\n },\n minChunks: 2,\n priority: -10,\n reuseExistingChunk: true,\n },\n },\n },\n },\n } satisfies RspackConfig;\n },\n };\n});\n","import _ from \"lodash\";\nimport {Configuration as RspackConfig} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {appFilenameResolver} from \"@cli/bundler\";\nimport {getOutputPath, getRootPath} from \"@cli/resolvers/path\";\n\nimport {Command} from \"@typing/app\";\n\nexport default definePlugin(() => {\n return {\n name: \"adnbn:output\",\n bundler: ({config}) => {\n const {app, jsDir, jsFilename} = config;\n\n const kebabApp = _.kebabCase(app);\n const camelApp = _.camelCase(app);\n\n const filename = appFilenameResolver(app, jsFilename, jsDir);\n\n return {\n output: {\n path: getRootPath(getOutputPath(config)),\n filename,\n chunkFilename: filename,\n hotUpdateGlobal: camelApp + \"HotUpdate\",\n chunkLoadingGlobal: camelApp + \"ChunkLoading\",\n uniqueName: kebabApp,\n clean: config.command === Command.Build,\n },\n } satisfies RspackConfig;\n },\n };\n});\n","import path from \"path\";\nimport type {RawCopyPattern} from \"@rspack/binding\";\n\nimport {IconFinder, type IconItem} from \"@cli/entrypoint\";\nimport {ManifestIcon, ManifestIcons} from \"@typing/manifest\";\nimport {DefaultIconGroupName} from \"@typing/icon\";\n\nexport type CopyPatterns = Array<Pick<RawCopyPattern, \"from\" | \"to\">>;\n\nexport type IconDefinition = Record<string, Record<number, string>>;\n\nexport default class extends IconFinder {\n protected createPathname(item: IconItem): string {\n const dir = this.config.icon.outputDir || \"icons\";\n\n let {size, group} = item.name;\n\n group = group === DefaultIconGroupName ? \"\" : group + \"-\";\n\n return path.posix.join(dir, `${group}${size}.png`);\n }\n\n public async manifest(): Promise<ManifestIcons> {\n const icons = await this.icons();\n\n const manifest: ManifestIcons = new Map();\n\n for (const [group, items] of icons) {\n const collect: ManifestIcon = new Map();\n\n for (const [size, item] of items) {\n collect.set(size, \"/\" + this.createPathname(item));\n }\n\n manifest.set(group, collect);\n }\n\n return manifest;\n }\n\n public async copy(): Promise<CopyPatterns> {\n const icons = await this.icons();\n\n const patterns: CopyPatterns = [];\n\n for (const items of icons.values()) {\n for (const item of items.values()) {\n patterns.push({\n from: item.file.file,\n to: this.createPathname(item),\n });\n }\n }\n\n return patterns;\n }\n\n public async define(): Promise<IconDefinition> {\n const mapToJson = (map: Map<any, any>) => {\n return Object.fromEntries(\n Array.from(map.entries()).map(([key, value]) => [key, value instanceof Map ? mapToJson(value) : value])\n );\n };\n\n return mapToJson(await this.manifest());\n }\n\n public async names(): Promise<Set<string>> {\n const files = await this.icons();\n\n return new Set(files.keys());\n }\n}\n","import \":package\";\n\ndeclare module \":package\" {\n export type IconName = string;\n\n export function changeActionIcon(icon?: IconName, tab?: number | chrome.tabs.Tab): Promise<void>;\n}\n","import template from \"./icon.d.ts?raw\";\n\nimport {FileBuilder} from \"@cli/plugins/typescript\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends FileBuilder {\n protected names = new Set<string>();\n\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n protected filename(): string {\n return \"icon.d.ts\";\n }\n\n protected template(): string {\n let content = template;\n\n if (this.names.size > 0) {\n const type = '\"' + Array.from(this.names).join('\" | \"') + '\"';\n\n content = content.replace(\"type IconName = string\", `type IconName = ${type}`);\n }\n\n return content;\n }\n\n public setNames(names: Set<string>): this {\n this.names = names;\n\n return this;\n }\n}\n","import {Configuration as RspackConfig, CopyRspackPlugin, DefinePlugin} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {DefaultIconGroupName} from \"@typing/icon\";\n\nimport Icon, {IconDefinition, CopyPatterns} from \"./Icon\";\n\nimport {IconDeclaration} from \"./declaration\";\n\nexport {Icon, type IconDefinition, type CopyPatterns};\n\nexport default definePlugin(() => {\n let icon: Icon;\n\n return {\n name: \"adnbn:icon\",\n startup: ({config}) => {\n icon = new Icon(config);\n },\n icon: () => icon.files(),\n bundler: async ({config}) => {\n new IconDeclaration(config).setNames(await icon.names()).build();\n\n return {\n plugins: [\n new CopyRspackPlugin({\n patterns: await icon.copy(),\n }),\n new DefinePlugin({\n __ADNBN_ICONS__: JSON.stringify(await icon.define()),\n }),\n ],\n } satisfies RspackConfig;\n },\n manifest: async ({manifest, config}) => {\n manifest.setIcons(await icon.manifest()).setIcon(config.icon.name || DefaultIconGroupName);\n },\n };\n});\n","import {getLocaleFilename} from \"@locale/utils\";\n\nimport {LocaleFinder} from \"@cli/entrypoint\";\nimport {GenerateJsonPluginData} from \"@cli/bundler\";\n\nexport default class extends LocaleFinder {\n public async json(): Promise<GenerateJsonPluginData> {\n const data: GenerateJsonPluginData = {};\n\n const builders = await this.builders();\n\n for (const builder of builders.values()) {\n data[getLocaleFilename(builder.lang())] = builder.build();\n }\n\n return data;\n }\n}\n","import {\n Language,\n LocaleDir,\n type LocaleNonPluralKeys,\n type LocalePluralKeys,\n type LocaleProvider,\n type LocaleDynamicProvider,\n type LocaleSubstitutionsFor,\n} from \":package/locale\";\n\ndeclare module \":package/locale\" {\n // prettier-ignore\n export interface GeneratedNativeStructure {}\n\n export function _<K extends LocaleNonPluralKeys<GeneratedNativeStructure>>(\n key: K,\n substitutions?: LocaleSubstitutionsFor<GeneratedNativeStructure, K>\n ): string;\n\n export function _c<K extends LocalePluralKeys<GeneratedNativeStructure>>(\n key: K,\n count: number,\n substitutions?: LocaleSubstitutionsFor<GeneratedNativeStructure, K>\n ): string;\n\n export function __(key: keyof GeneratedNativeStructure & string): string;\n\n export declare class NativeLocale implements LocaleProvider<GeneratedNativeStructure> {\n lang(): Language;\n\n languages(): Set<Language>;\n\n keys(): ReadonlySet<keyof GeneratedNativeStructure>;\n\n // non-plural keys\n trans<K extends LocaleNonPluralKeys<GeneratedNativeStructure>>(\n key: K,\n substitutions?: LocaleSubstitutionsFor<GeneratedNativeStructure, K>\n ): string;\n\n // plural keys\n choice<K extends LocalePluralKeys<GeneratedNativeStructure>>(\n key: K,\n count: number,\n substitutions?: LocaleSubstitutionsFor<GeneratedNativeStructure, K>\n ): string;\n }\n\n export declare class DynamicLocale extends NativeLocale implements LocaleDynamicProvider<GeneratedNativeStructure> {\n change(lang: Language): Promise<Language>;\n }\n}\n\ndeclare module \":package/locale/react\" {\n import type {GeneratedNativeStructure} from \":package/locale\";\n\n export interface LocaleContract {\n lang: Language;\n\n dir: LocaleDir;\n\n isRtl: boolean;\n\n _<K extends LocaleNonPluralKeys<GeneratedNativeStructure>>(\n key: K,\n substitutions?: LocaleSubstitutionsFor<GeneratedNativeStructure, K>\n ): string;\n\n choice<K extends LocalePluralKeys<GeneratedNativeStructure>>(\n key: K,\n count: number,\n substitutions?: LocaleSubstitutionsFor<GeneratedNativeStructure, K>\n ): string;\n\n change(lang: Language): void;\n }\n\n export function useLocale(): LocaleContract;\n}\n","import template from \"./locale.d.ts?raw\";\n\nimport {FileBuilder} from \"@cli/plugins/typescript\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {LocaleStructure} from \"@typing/locale\";\n\nexport default class extends FileBuilder {\n protected _structure?: LocaleStructure;\n\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n protected filename(): string {\n return \"locale.d.ts\";\n }\n\n protected template(): string {\n const structure = this._structure;\n\n if (!structure) {\n throw new Error(\"Locale structure is not set\");\n }\n\n const type = JSON.stringify(structure, null, 4);\n\n const name = \"GeneratedNativeStructure\";\n\n return template.replace(`interface ${name} {}`, `interface ${name} ${type}`);\n }\n\n public structure(structure: LocaleStructure): this {\n this._structure = structure;\n\n return this;\n }\n}\n","import _ from \"lodash\";\nimport {Configuration as RspackConfig, DefinePlugin} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\nimport {GenerateJsonPlugin} from \"@cli/bundler\";\nimport {extractLocaleKey, modifyLocaleMessageKey} from \"@locale/utils\";\n\nimport Locale from \"./Locale\";\n\nimport {LocaleDeclaration} from \"./declaration\";\n\nimport {Command} from \"@typing/app\";\nimport {Browser} from \"@typing/browser\";\nimport {Language, LanguageCodes} from \"@typing/locale\";\n\nexport default definePlugin(() => {\n let locale: Locale;\n let declaration: LocaleDeclaration;\n\n return {\n name: \"adnbn:locale\",\n startup: ({config}) => {\n locale = new Locale(config);\n declaration = new LocaleDeclaration(config);\n },\n locale: () => locale.files(),\n bundler: async ({config}) => {\n declaration.structure(await locale.structure()).build();\n\n const plugin = new GenerateJsonPlugin(await locale.json());\n\n if (config.command === Command.Watch) {\n plugin.watch(async () => {\n locale.clear();\n\n declaration.structure(await locale.structure()).build();\n\n return await locale.json();\n });\n }\n\n return {\n plugins: [\n plugin,\n new DefinePlugin({\n __ADNBN_LOCALE_KEYS__: JSON.stringify([...(await locale.keys())]),\n __ADNBN_DEFINED_LOCALES__: JSON.stringify([...(await locale.languages())]),\n }),\n ],\n } satisfies RspackConfig;\n },\n manifest: async ({config, manifest}) => {\n const {locale: localeFromConfig, browser} = config;\n const {lang, name, shortName, description} = localeFromConfig;\n\n let language: Language = Language.English;\n\n if (lang) {\n if (LanguageCodes.has(lang)) {\n language = lang as Language;\n } else {\n throw new Error(`Invalid language \"${lang}\" provided by config`);\n }\n\n const availableLanguages = await locale.languages();\n\n if (!availableLanguages.has(language)) {\n throw new Error(\n `Language \"${language}\" not found in available translations. Available languages: ${[...availableLanguages].join(\", \")}`\n );\n }\n }\n\n const builders = await locale.builders();\n const keys = await locale.keys();\n\n manifest.setLocale(builders.size > 0 ? language : undefined);\n\n if (builders.size > 0) {\n if (shortName) {\n let manifestShortName: string | undefined = modifyLocaleMessageKey(shortName);\n\n const shortNameKey = extractLocaleKey(shortName);\n\n if (shortNameKey) {\n if (!keys.has(shortNameKey)) {\n throw new Error(`Locale short name key \"${shortNameKey}\" not found in translation`);\n }\n\n /** Opera/Edge do not support localization in manifest's short_name field */\n if (browser === Browser.Opera || browser === Browser.Edge) {\n const instance = builders.get(language);\n\n if (!instance) {\n throw new Error(`Locale not found for \"${language}\"`);\n }\n\n manifestShortName = instance.get().get(shortNameKey);\n }\n }\n\n manifest.setShortName(manifestShortName);\n }\n\n if (description) {\n const descriptionKey = extractLocaleKey(description);\n\n if (descriptionKey && !keys.has(descriptionKey)) {\n throw new Error(`Locale description key \"${descriptionKey}\" not found in translation`);\n }\n\n manifest.setDescription(modifyLocaleMessageKey(description));\n }\n\n if (name) {\n const nameKey = extractLocaleKey(name);\n\n if (nameKey && !keys.has(nameKey)) {\n throw new Error(`Locale name key \"${nameKey}\" not found in translation`);\n }\n\n const manifestName = modifyLocaleMessageKey(name);\n\n if (manifestName) {\n manifest.setName(manifestName);\n\n return;\n }\n }\n }\n\n manifest.setName(_.startCase(config.app));\n },\n };\n});\n","import {Browser} from \"@typing/browser\";\nimport {ManifestVersion} from \"@typing/manifest\";\nimport {decryptData} from \"@cli/plugins/dotenv/utils\";\n\nexport const getEnv: {\n <T extends string>(key: string): T | undefined;\n <T extends string, D>(key: string, defaults: D): T | D;\n} = (() => {\n let envCache: object;\n\n return (key: string, defaults?: string) => {\n let env: object;\n\n if (typeof process.env === \"object\") {\n env = process.env;\n } else {\n envCache ??= decryptData(process.env);\n env = envCache;\n }\n\n return (env[key] ?? defaults) as any;\n };\n})();\n\nexport const getApp = (): string => {\n const app = getEnv(\"APP\");\n\n if (app === undefined) {\n throw new Error(\"App is not defined\");\n }\n\n return app;\n};\n\nexport const getBrowser = (): Browser => {\n const browser = getEnv<Browser>(\"BROWSER\");\n\n if (browser === undefined) {\n throw new Error(\"Browser is not defined\");\n }\n\n return browser;\n};\n\nexport const isBrowser = (browser: Browser): browser is Browser => {\n return getBrowser() === browser;\n};\n\nexport const getManifestVersion = (): ManifestVersion => {\n const manifestVersion = getEnv(\"MANIFEST_VERSION\", \"3\");\n\n return parseInt(manifestVersion) as ManifestVersion;\n};\n","import _ from \"lodash\";\n\nimport {getEnv} from \"@main/env\";\n\nimport type {ReadonlyConfig} from \"@typing/config\";\n\nexport default abstract class AbstractMeta<V extends string = string> {\n public static value<T extends AbstractMeta<any>>(\n this: new (config: ReadonlyConfig) => T,\n config: ReadonlyConfig\n ): T extends AbstractMeta<infer V> ? V | undefined : never {\n return new this(config).getResolved() as T extends AbstractMeta<infer V> ? V | undefined : never;\n }\n\n public abstract getValue(): undefined | V | (() => V | undefined);\n\n protected constructor(protected readonly config: ReadonlyConfig) {}\n\n public getResolved(): V | undefined {\n const value = this.getValue();\n\n let resolved = _.isFunction(value) ? value() : value;\n\n if (this.isValid(resolved)) {\n return resolved;\n }\n\n if (_.isString(resolved)) {\n resolved = getEnv(resolved);\n\n if (this.isValid(resolved)) {\n return resolved;\n }\n }\n }\n\n protected isValid(value?: V): boolean {\n return true;\n }\n}\n","import _ from \"lodash\";\n\nimport AbstractMeta from \"./AbstractMeta\";\n\nimport {getEnv} from \"@main/env\";\n\nimport type {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends AbstractMeta {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public getValue(): ReadonlyConfig[\"author\"] {\n return this.config.author;\n }\n\n protected isValid(value?: string): value is string {\n return _.isString(value) && value.length > 0;\n }\n\n public getResolved(): string | undefined {\n const value = this.getValue();\n\n let resolved = _.isFunction(value) ? value() : value;\n\n if (!this.isValid(resolved)) {\n return;\n }\n\n resolved = getEnv(resolved, resolved);\n\n if (this.isValid(resolved)) {\n return resolved;\n }\n }\n}\n","import isEmail from \"validator/lib/isEmail\";\n\nimport AbstractMeta from \"./AbstractMeta\";\n\nimport type {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends AbstractMeta {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public getValue(): ReadonlyConfig[\"email\"] {\n return this.config.email;\n }\n\n protected isValid(value?: string): boolean {\n return value ? isEmail(value) : false;\n }\n}\n","import isURL from \"validator/lib/isURL\";\n\nimport AbstractMeta from \"./AbstractMeta\";\n\nimport type {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends AbstractMeta {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public getValue(): ReadonlyConfig[\"homepage\"] {\n return this.config.homepage;\n }\n\n protected isValid(value?: string): boolean {\n return value ? isURL(value) : false;\n }\n}\n","import {ContentScriptConfig} from \"@typing/content\";\nimport {BackgroundConfig} from \"@typing/background\";\nimport {CommandConfig} from \"@typing/command\";\nimport {Language} from \"@typing/locale\";\n\ntype ManifestCommon = chrome.runtime.Manifest;\ntype ManifestBase = chrome.runtime.ManifestBase;\ntype ManifestPermission = chrome.runtime.ManifestPermissions;\n\nexport const ManifestMatchSchemes: ReadonlySet<string> = new Set<string>([\"http\", \"https\", \"file\", \"ftp\", \"ws\", \"wss\"]);\n\nexport const ManifestSpecialSchemes: ReadonlySet<string> = new Set<string>([\n \"chrome-extension\",\n \"moz-extension\",\n \"data\",\n \"blob\",\n \"filesystem\",\n \"about\",\n \"chrome\",\n \"resource\",\n]);\n\ntype ManifestFixed<T extends ManifestBase> = Omit<T, \"manifest_version\"> & {\n manifest_version: ManifestVersion;\n};\n\ninterface ManifestUnstable {\n permissions?: (ManifestPermission | (string & Record<never, never>))[];\n web_accessible_resources?: string[] | chrome.runtime.ManifestV3[\"web_accessible_resources\"];\n}\n\nexport type ManifestVersion = 2 | 3;\n\nexport enum ManifestIncognito {\n Spanning = \"spanning\",\n Split = \"split\",\n NotAllowed = \"not_allowed\",\n}\n\nexport type ManifestIncognitoValue = ManifestIncognito | `${ManifestIncognito}`;\n\nexport type CoreManifest = ManifestFixed<ManifestBase>;\n\nexport type ChromeManifest = ManifestFixed<ManifestCommon>;\n\nexport type FirefoxManifest = ChromeManifest & {\n action?: chrome.runtime.ManifestV3[\"action\"] & {\n browser_style?: boolean;\n };\n browser_action?: chrome.runtime.ManifestV2[\"browser_action\"] & {\n browser_style?: boolean;\n };\n page_action?: chrome.runtime.ManifestV2[\"page_action\"] & {\n browser_style?: boolean;\n };\n browser_specific_settings?: {\n gecko?: {\n id?: string;\n strict_min_version?: string;\n strict_max_version?: string;\n update_url?: string;\n };\n gecko_android?: {\n strict_min_version?: string;\n strict_max_version?: string;\n };\n };\n} & ManifestUnstable;\n\nexport type SafariManifest = ChromeManifest & {\n browser_specific_settings?: {\n safari?: {\n strict_min_version?: string;\n strict_max_version?: string;\n };\n };\n} & ManifestUnstable;\n\nexport type Manifest = ChromeManifest | FirefoxManifest | SafariManifest;\n\nexport interface ManifestBuilder<T extends CoreManifest = Manifest> {\n setName(name: string): this;\n\n setShortName(shortName?: string): this;\n\n setDescription(description?: string): this;\n\n setEmail(email?: string): this;\n\n setAuthor(author?: string): this;\n\n setHomepage(homepage?: string): this;\n\n setVersion(version?: string): this;\n\n setIncognito(incognito?: ManifestIncognitoValue): this;\n\n setMinimumVersion(minimumVersion?: string): this;\n\n setLocale(lang?: Language): this;\n\n // Icons\n setIcons(icons?: ManifestIcons): this;\n\n setIcon(icon?: string): this; // name of an icon set for manifest.icons\n\n // Entry\n setBackground(background?: ManifestBackground): this;\n\n setCommands(commands?: ManifestCommands): this;\n\n setContentScripts(contentScripts?: ManifestContentScripts): this;\n\n setPopup(popup?: ManifestPopup): this;\n\n setSidebar(sidebar?: ManifestSidebar): this;\n\n // System\n setDependencies(dependencies: ManifestDependencies): this;\n\n // Permissions\n addPermission(permission: ManifestPermission): this;\n\n setPermissions(permissions: ManifestPermissions): this;\n\n appendPermissions(permissions: ManifestPermissions): this;\n\n addHostPermission(permission: string): this;\n\n setHostPermissions(permissions: ManifestHostPermissions): this;\n\n // Host Permissions\n appendHostPermissions(permissions: ManifestHostPermissions): this;\n\n // Web Accessible Resource\n setManifestAccessibleResource(accessibleResources: ManifestAccessibleResources): this;\n\n appendAccessibleResources(accessibleResources: ManifestAccessibleResources): this;\n\n addAccessibleResource(accessibleResource: ManifestAccessibleResource): this;\n\n // Getter\n get(): T;\n}\n\ntype Entry = string;\n\nexport interface ManifestEntry {\n entry: Entry;\n}\n\nexport type ManifestBackground = ManifestEntry & BackgroundConfig;\n\nexport type ManifestContentScript = ManifestEntry & ContentScriptConfig;\nexport type ManifestContentScripts = Set<ManifestContentScript>;\n\nexport type ManifestCommand = CommandConfig;\nexport type ManifestCommands = Set<ManifestCommand>;\n\nexport interface ManifestPopup {\n /**\n * Represents the group name of an icon that can be used in UI elements.\n * This property is optional and, if defined, should typically refer to a string\n * that matches the name of an icon resource available in the application or icon library.\n */\n icon?: string;\n /**\n * Represents an optional title or name or locale key that can be assigned to an entity.\n */\n title?: string;\n /**\n * Represents an optional HTML path.\n */\n path?: string;\n}\n\nexport interface ManifestSidebar {\n /**\n * Represents the group name of an icon that can be used in UI elements.\n * This property is optional and, if defined, should typically refer to a string\n * that matches the name of an icon resource available in the application or icon library.\n */\n icon?: string;\n /**\n * Represents an optional title or name or locale key that can be assigned to an entity.\n */\n title?: string;\n /**\n * Represents an optional HTML path.\n */\n path?: string;\n}\n\nexport interface ManifestAccessibleResource {\n resources: string[];\n matches: string[];\n}\n\nexport type ManifestAccessibleResources = Set<ManifestAccessibleResource>;\n\nexport interface ManifestDependency {\n js: Set<string>;\n css: Set<string>;\n assets: Set<string>;\n}\n\nexport type ManifestIcon = Map<number, string>;\n\nexport type ManifestIcons = Map<string, ManifestIcon>;\n\nexport type ManifestDependencies = Map<Entry, ManifestDependency>;\n\nexport type ManifestPermissions = Set<ManifestPermission>;\n\nexport type ManifestHostPermissions = Set<string>;\n","import AbstractMeta from \"./AbstractMeta\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {ManifestIncognito, ManifestIncognitoValue} from \"@typing/manifest\";\n\nexport default class extends AbstractMeta<ManifestIncognitoValue> {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public getValue(): ReadonlyConfig[\"incognito\"] {\n return this.config.incognito;\n }\n\n protected isValid(value?: ManifestIncognitoValue): boolean {\n return Object.values(ManifestIncognito).includes(value as ManifestIncognito);\n }\n}\n","import {definePlugin} from \"@main/plugin\";\n\nimport Author from \"./Author\";\nimport Email from \"./Email\";\nimport Homepage from \"./Homepage\";\nimport Incognito from \"./Incognito\";\n\nexport {Author, Email, Homepage, Incognito};\n\nexport default definePlugin(() => {\n return {\n name: \"adnbn:meta\",\n manifest: ({manifest, config}) => {\n manifest\n .setEmail(Email.value(config))\n .setAuthor(Author.value(config))\n .setHomepage(Homepage.value(config))\n .setIncognito(Incognito.value(config));\n },\n };\n});\n","import path from \"path\";\nimport _ from \"lodash\";\n\nimport type {HtmlRspackPluginOptions} from \"@rspack/core\";\nimport type {Options as HtmlRspackTagsPluginOptions} from \"html-rspack-tags-plugin\";\n\nimport {AbstractViewFinder} from \"@cli/entrypoint\";\n\nimport {EntrypointEntries} from \"@typing/entrypoint\";\nimport {ViewEntrypointOptions} from \"@typing/view\";\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default class<O extends ViewEntrypointOptions> {\n public constructor(\n protected readonly config: ReadonlyConfig,\n protected readonly finder: AbstractViewFinder<O>\n ) {}\n\n public async entries(): Promise<EntrypointEntries> {\n const entries: EntrypointEntries = new Map();\n\n for (const [name, page] of await this.finder.views()) {\n entries.set(name, new Set([page.file]));\n }\n\n return entries;\n }\n\n public async html(): Promise<HtmlRspackPluginOptions[]> {\n const html: HtmlRspackPluginOptions[] = [];\n\n for (const [name, {file, filename, options}] of await this.finder.views()) {\n const {template, title} = options;\n\n html.push({\n filename,\n title: title || _.startCase(this.config.app),\n template: template ? path.resolve(path.dirname(file.file), template) : undefined,\n chunks: [name],\n inject: \"body\",\n minify: true,\n });\n }\n\n return html;\n }\n\n public async tags(): Promise<HtmlRspackTagsPluginOptions[]> {\n const tags: HtmlRspackTagsPluginOptions[] = [];\n\n const views = await this.finder.views();\n\n for (const {filename, options} of views.values()) {\n // prettier-ignore\n const {\n as,\n title,\n template,\n excludeApp,\n includeApp,\n excludeBrowser,\n includeBrowser,\n ...tagOptions\n } = options;\n\n if (!_.isEmpty(tagOptions)) {\n tags.push({\n ...tagOptions,\n files: [filename],\n });\n }\n }\n\n return tags;\n }\n}\n","import {definePlugin} from \"@main/plugin\";\nimport {isEntryModuleOrIssuer} from \"@cli/bundler\";\n\nexport {default as View} from \"./View\";\n\nexport default definePlugin(() => {\n return {\n name: \"adnbn:view\",\n bundler: {\n optimization: {\n splitChunks: {\n cacheGroups: {\n frameworkView: {\n minChunks: 2,\n name: \"view\",\n test: isEntryModuleOrIssuer(\"view\"),\n enforce: false,\n reuseExistingChunk: true,\n priority: 10,\n },\n },\n },\n },\n },\n };\n});\n","import _ from \"lodash\";\n\nimport {View} from \"../view\";\n\nimport {OffscreenFinder, OffscreenViewFinder} from \"@cli/entrypoint\";\n\nimport {virtualOffscreenModule} from \"@cli/virtual\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {OffscreenEntrypointOptions} from \"@typing/offscreen\";\nimport {EntrypointFile} from \"@typing/entrypoint\";\n\nexport type OffscreenParameters = Record<string, chrome.offscreen.CreateParameters>;\n\nexport default class extends OffscreenFinder {\n protected _view?: View<OffscreenEntrypointOptions>;\n\n protected _views?: OffscreenViewFinder;\n\n constructor(config: ReadonlyConfig) {\n super(config);\n\n this.names.reserve(this.chunkName());\n }\n\n public chunkName(): string {\n return \"common.\" + this.type();\n }\n\n public likely(name?: string): boolean {\n return this.names.likely(name);\n }\n\n public view(): View<OffscreenEntrypointOptions> {\n return (this._view ??= new View(this.config, this.views()));\n }\n\n public views(): OffscreenViewFinder {\n return (this._views ??= new OffscreenViewFinder(this.config, this));\n }\n\n /**\n * Before creating the virtual module, it is necessary to run a command `await this.transport()` that caches the Offscreens.\n * This command is executed during the type declaration generation stage for the Offscreens.\n */\n public virtual(file: EntrypointFile): string {\n const options = this._transport?.get(file)?.options;\n\n if (!options) {\n throw new Error(`Offscreen options not found for \"${file}\"`);\n }\n\n return virtualOffscreenModule(file, options.name);\n }\n\n public async parameters(): Promise<OffscreenParameters> {\n const offscreens: OffscreenParameters = {};\n\n const files = await this.transport();\n const filenames = await this.views().getFilenames();\n\n for (const [file, transport] of files) {\n const url = filenames.get(file);\n\n if (!url) {\n throw new Error(`Offscreen filename not found for \"${file.file}\"`);\n }\n\n let {name, reasons = \"DOM_PARSER\", justification = \"Just for testing\"} = transport.options;\n\n if (_.isString(reasons)) {\n reasons = [reasons];\n }\n\n offscreens[name] = {\n url,\n reasons,\n justification,\n };\n }\n\n return offscreens;\n }\n\n public clear(): this {\n this._view = undefined;\n this._views = undefined;\n\n return super.clear();\n }\n}\n","import {TransportDeclaration, TransportDeclarationLayer} from \"../typescript\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends TransportDeclaration {\n constructor(config: ReadonlyConfig) {\n super(config, TransportDeclarationLayer.Offscreen);\n }\n}\n","import path from \"path\";\nimport {Configuration as RspackConfig, DefinePlugin, HtmlRspackPlugin, Plugins} from \"@rspack/core\";\nimport {RspackVirtualModulePlugin} from \"rspack-plugin-virtual-module\";\nimport HtmlRspackTagsPlugin from \"html-rspack-tags-plugin\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {EntrypointPlugin} from \"@cli/bundler\";\nimport {virtualOffscreenBackgroundModule} from \"@cli/virtual\";\n\nimport Offscreen, {OffscreenParameters} from \"./Offscreen\";\nimport OffscreenDeclaration from \"./OffscreenDeclaration\";\n\nimport {Command} from \"@typing/app\";\nimport {Browser} from \"@typing/browser\";\nimport {BackgroundEntryName} from \"@typing/background\";\n\nconst OffscreenTempDir = \"virtual\";\nconst OffscreenBackgroundModule = \"offscreen.background.ts\";\n\nexport default definePlugin(() => {\n let offscreen: Offscreen;\n let declaration: OffscreenDeclaration;\n\n return {\n name: \"adnbn:offscreen\",\n startup: ({config}) => {\n offscreen = new Offscreen(config);\n declaration = new OffscreenDeclaration(config);\n },\n offscreen: () => offscreen.files(),\n bundler: async ({config}) => {\n declaration.dictionary(await offscreen.dictionary()).build();\n\n let build: boolean = true;\n let rspack: RspackConfig = {};\n\n if (await offscreen.empty()) {\n if (config.debug) {\n console.info(\"Offscreen entries not found\");\n }\n\n build = false;\n }\n\n const plugins: Plugins = [];\n\n let parameters: OffscreenParameters = {};\n\n if (build) {\n parameters = await offscreen.parameters();\n\n // prettier-ignore\n const plugin = EntrypointPlugin.from(await offscreen.view().entries())\n .virtual(file => offscreen.virtual(file));\n\n if (config.command === Command.Watch) {\n plugin.watch(async () => {\n declaration.dictionary(await offscreen.clear().dictionary()).build();\n\n return offscreen.view().entries();\n });\n }\n\n const htmlPlugins = (await offscreen.view().html()).map(options => new HtmlRspackPlugin(options));\n const tagsPlugins = (await offscreen.view().tags()).map(options => new HtmlRspackTagsPlugin(options));\n\n plugins.push(plugin, ...htmlPlugins, ...tagsPlugins);\n\n if (config.manifestVersion === 2 || config.browser === Browser.Firefox) {\n plugins.push(\n new RspackVirtualModulePlugin(\n {\n [OffscreenBackgroundModule]: virtualOffscreenBackgroundModule(),\n },\n OffscreenTempDir\n )\n );\n\n rspack = {\n entry: {\n [BackgroundEntryName]: {\n import: [path.join(OffscreenTempDir, OffscreenBackgroundModule)],\n },\n },\n };\n }\n }\n\n return {\n ...rspack,\n plugins: [\n new DefinePlugin({\n __ADNBN_OFFSCREEN_PARAMETERS__: JSON.stringify(parameters),\n }),\n ...plugins,\n ],\n } satisfies RspackConfig;\n },\n manifest: async ({manifest, config}) => {\n if (config.manifestVersion !== 2 && config.browser !== Browser.Firefox && (await offscreen.exists())) {\n manifest.addPermission(\"offscreen\");\n }\n },\n };\n});\n","import {View} from \"../view\";\n\nimport {PageFinder} from \"@cli/entrypoint\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {PageEntrypointOptions} from \"@typing/page\";\nimport {ManifestAccessibleResources} from \"@typing/manifest\";\n\nexport default class extends PageFinder {\n protected _view?: View<PageEntrypointOptions>;\n\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public view(): View<PageEntrypointOptions> {\n return (this._view ??= new View(this.config, this));\n }\n\n public async accessibleResources(): Promise<ManifestAccessibleResources> {\n const resources: ManifestAccessibleResources = new Set();\n\n const views = await this.views();\n\n for (const {filename, options} of views.values()) {\n const {matches} = options;\n\n if (!matches) {\n continue;\n }\n\n resources.add({resources: [filename], matches});\n }\n\n return resources;\n }\n\n public clear(): this {\n this._view = undefined;\n\n return super.clear();\n }\n}\n","import \":package\";\n\ndeclare module \":package\" {\n export type PageAlias = string;\n\n export function getPageUrl(alias: PageAlias): string;\n}\n","import template from \"./page.d.ts?raw\";\n\nimport {FileBuilder} from \"@cli/plugins/typescript\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends FileBuilder {\n protected alias = new Set<string>();\n\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n protected filename(): string {\n return \"page.d.ts\";\n }\n\n protected template(): string {\n let content = template;\n\n if (this.alias.size > 0) {\n const type = '\"' + Array.from(this.alias).join('\" | \"') + '\"';\n\n content = content.replace(\"type PageAlias = string\", `type PageAlias = ${type}`);\n }\n\n return content;\n }\n\n public setAlias(alias: Set<string>): this {\n this.alias = alias;\n\n return this;\n }\n}\n","import {Configuration as RspackConfig, DefinePlugin, HtmlRspackPlugin, Plugins} from \"@rspack/core\";\nimport HtmlRspackTagsPlugin from \"html-rspack-tags-plugin\";\n\nimport Page from \"./Page\";\n\nimport {PageDeclaration} from \"./declaration\";\n\nimport {definePlugin} from \"@main/plugin\";\nimport {virtualViewModule} from \"@cli/virtual\";\nimport {EntrypointPlugin} from \"@cli/bundler\";\nimport {ViewAliasToFilename} from \"@cli/entrypoint\";\n\nimport {Command} from \"@typing/app\";\n\nexport default definePlugin(() => {\n let page: Page;\n let declaration: PageDeclaration;\n\n return {\n name: \"adnbn:page\",\n startup: ({config}) => {\n page = new Page(config);\n declaration = new PageDeclaration(config);\n },\n page: () => page.files(),\n bundler: async ({config}) => {\n declaration.setAlias(await page.getAlias()).build();\n\n const plugins: Plugins = [];\n\n let alias: ViewAliasToFilename = new Map();\n\n if (await page.empty()) {\n if (config.debug) {\n console.info(\"Page entries not found\");\n }\n } else {\n alias = await page.getAliasToFilename();\n\n // prettier-ignore\n const plugin = EntrypointPlugin.from(await page.view().entries())\n .virtual(file => virtualViewModule(file));\n\n if (config.command === Command.Watch) {\n plugin.watch(async () => {\n declaration.setAlias(await page.clear().getAlias()).build();\n\n return page.view().entries();\n });\n }\n\n const htmlPlugins = (await page.view().html()).map(options => new HtmlRspackPlugin(options));\n const tagsPlugins = (await page.view().tags()).map(options => new HtmlRspackTagsPlugin(options));\n\n plugins.push(plugin, ...htmlPlugins, ...tagsPlugins);\n }\n\n return {\n plugins: [\n new DefinePlugin({\n __ADNBN_PAGE_ALIAS__: JSON.stringify(alias),\n }),\n ...plugins,\n ],\n } satisfies RspackConfig;\n },\n manifest: async ({manifest}) => {\n manifest.appendAccessibleResources(await page.accessibleResources());\n },\n };\n});\n","import {View} from \"../view\";\n\nimport {modifyLocaleMessageKey} from \"@locale/utils\";\n\nimport {PopupFinder} from \"@cli/entrypoint\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {PopupEntrypointOptions} from \"@typing/popup\";\nimport {ManifestPopup} from \"@typing/manifest\";\n\nexport type PopupNameToManifest = Map<string, ManifestPopup>;\n\nexport default class extends PopupFinder {\n protected _view?: View<PopupEntrypointOptions>;\n\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public view(): View<PopupEntrypointOptions> {\n return (this._view ??= new View(this.config, this));\n }\n\n public async manifest(): Promise<ManifestPopup | undefined> {\n const views = await this.views();\n\n for (const {filename, options} of views.values()) {\n const {apply = true, title, icon} = options;\n\n if (apply) {\n return {\n path: filename,\n title: modifyLocaleMessageKey(title),\n icon,\n };\n }\n }\n }\n\n public async manifestByAlias(): Promise<PopupNameToManifest> {\n return Array.from(await this.views()).reduce((aliases, [_, item]) => {\n const {options, filename} = item;\n const {title, icon} = options;\n\n return {\n ...aliases,\n [item.alias]: {\n path: filename,\n title,\n icon,\n },\n };\n }, new Map() as PopupNameToManifest);\n }\n\n public clear(): this {\n this._view = undefined;\n\n return super.clear();\n }\n}\n","import \":package\";\n\ndeclare module \":package\" {\n export type PopupAlias = string;\n\n export function changePopup(alias: PopupAlias, tab?: number | chrome.tabs.Tab): Promise<void>;\n}\n","import template from \"./popup.d.ts?raw\";\n\nimport {FileBuilder} from \"@cli/plugins/typescript\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends FileBuilder {\n protected alias = new Set<string>();\n\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n protected filename(): string {\n return \"popup.d.ts\";\n }\n\n protected template(): string {\n let content = template;\n\n if (this.alias.size > 0) {\n const type = '\"' + Array.from(this.alias).join('\" | \"') + '\"';\n\n content = content.replace(\"type PopupAlias = string\", `type PopupAlias = ${type}`);\n }\n\n return content;\n }\n\n public setAlias(alias: Set<string>): this {\n this.alias = alias;\n\n return this;\n }\n}\n","import {Configuration as RspackConfig, DefinePlugin, HtmlRspackPlugin, Plugins} from \"@rspack/core\";\nimport HtmlRspackTagsPlugin from \"html-rspack-tags-plugin\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {EntrypointPlugin} from \"@cli/bundler\";\nimport {virtualViewModule} from \"@cli/virtual\";\n\nimport Popup, {PopupNameToManifest} from \"./Popup\";\n\nimport {PopupDeclaration} from \"./declaration\";\n\nimport {Command} from \"@typing/app\";\n\nexport default definePlugin(() => {\n let popup: Popup;\n let declaration: PopupDeclaration;\n\n return {\n name: \"adnbn:popup\",\n startup: ({config}) => {\n popup = new Popup(config);\n declaration = new PopupDeclaration(config);\n },\n popup: () => popup.files(),\n bundler: async ({config}) => {\n declaration.setAlias(await popup.getAlias()).build();\n\n const plugins: Plugins = [];\n\n let alias: PopupNameToManifest = new Map();\n\n if (await popup.empty()) {\n if (config.debug) {\n console.info(\"Popup entries not found\");\n }\n } else {\n alias = await popup.manifestByAlias();\n\n // prettier-ignore\n const plugin = EntrypointPlugin.from(await popup.view().entries())\n .virtual(file => virtualViewModule(file));\n\n if (config.command === Command.Watch) {\n plugin.watch(async () => {\n declaration.setAlias(await popup.clear().getAlias()).build();\n\n return popup.view().entries();\n });\n }\n\n const htmlPlugins = (await popup.view().html()).map(options => new HtmlRspackPlugin(options));\n const tagsPlugins = (await popup.view().tags()).map(options => new HtmlRspackTagsPlugin(options));\n\n plugins.push(plugin, ...htmlPlugins, ...tagsPlugins);\n }\n\n return {\n plugins: [\n new DefinePlugin({\n __ADNBN_POPUP_MAP__: JSON.stringify(alias),\n }),\n ...plugins,\n ],\n } as RspackConfig;\n },\n manifest: async ({manifest}) => {\n manifest.setPopup(await popup.manifest());\n },\n };\n});\n","import fs from \"fs\";\nimport {Configuration as RspackConfig, CopyRspackPlugin} from \"@rspack/core\";\nimport {RawCopyPattern} from \"@rspack/binding\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {getAppPath, getAppSourcePath, getSharedPath, getSourcePath} from \"@cli/resolvers/path\";\n\ntype CopyPatterns = Array<Pick<RawCopyPattern, \"from\" | \"to\" | \"force\" | \"priority\">>;\n\nexport default definePlugin(() => {\n return {\n name: \"adnbn:public\",\n bundler: ({config}) => {\n const {publicDir, mergePublic} = config;\n\n const patterns: CopyPatterns = [];\n\n const paths: string[] = [\n getAppSourcePath(config, publicDir),\n getAppPath(config, publicDir),\n getSharedPath(config, publicDir),\n getSourcePath(config, publicDir),\n ];\n\n for (let i = 0; i < paths.length; i++) {\n if (!mergePublic && patterns.length > 0) break;\n\n const path = paths[i];\n\n if (fs.existsSync(path)) {\n patterns.push({\n from: path,\n to: \".\",\n force: true,\n priority: paths.length - i,\n });\n }\n }\n\n if (patterns.length === 0) {\n return {};\n }\n\n return {\n plugins: [new CopyRspackPlugin({patterns})],\n } satisfies RspackConfig;\n },\n };\n});\n","import {View} from \"../view\";\n\nimport {modifyLocaleMessageKey} from \"@locale/utils\";\n\nimport {SidebarFinder} from \"@cli/entrypoint\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {SidebarEntrypointOptions} from \"@typing/sidebar\";\nimport {ManifestSidebar} from \"@typing/manifest\";\n\nexport type SidebarNameToManifest = Map<string, ManifestSidebar>;\n\nexport default class extends SidebarFinder {\n protected _view?: View<SidebarEntrypointOptions>;\n\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public view(): View<SidebarEntrypointOptions> {\n return (this._view ??= new View(this.config, this));\n }\n\n public async manifest(): Promise<ManifestSidebar | undefined> {\n const views = await this.views();\n\n for (const {filename, options} of views.values()) {\n const {apply = true, title, icon} = options;\n\n if (apply) {\n return {\n path: filename,\n title: modifyLocaleMessageKey(title),\n icon,\n };\n }\n }\n }\n\n public async manifestByAlias(): Promise<SidebarNameToManifest> {\n return Array.from(await this.views()).reduce((aliases, [_, item]) => {\n const {options, filename} = item;\n const {title, icon} = options;\n\n return {\n ...aliases,\n [item.alias]: {\n path: filename,\n title,\n icon,\n },\n };\n }, new Map() as SidebarNameToManifest);\n }\n\n public clear(): this {\n this._view = undefined;\n\n return super.clear();\n }\n}\n","import \":package\";\n\ndeclare module \":package\" {\n export type SidebarAlias = string;\n\n export function changeSidebar(alias: SidebarAlias, tab?: number | chrome.tabs.Tab): Promise<void>;\n}\n","import template from \"./sidebar.d.ts?raw\";\n\nimport {FileBuilder} from \"@cli/plugins/typescript\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends FileBuilder {\n protected alias = new Set<string>();\n\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n protected filename(): string {\n return \"sidebar.d.ts\";\n }\n\n protected template(): string {\n let content = template;\n\n if (this.alias.size > 0) {\n const type = '\"' + Array.from(this.alias).join('\" | \"') + '\"';\n\n content = content.replace(\"type SidebarAlias = string\", `type SidebarAlias = ${type}`);\n }\n\n return content;\n }\n\n public setAlias(alias: Set<string>): this {\n this.alias = alias;\n\n return this;\n }\n}\n","import {ViewDefinition, ViewOptions} from \"@typing/view\";\nimport {Browser} from \"@typing/browser\";\n\nexport const SidebarAlternativeBrowsers: ReadonlySet<Browser> = new Set([Browser.Opera, Browser.Firefox]);\n\nexport interface SidebarConfig {\n icon?: string;\n apply?: boolean;\n}\n\nexport type SidebarEntrypointOptions = SidebarConfig & ViewOptions;\n\nexport type SidebarProps = SidebarEntrypointOptions;\n\nexport type SidebarDefinition = SidebarEntrypointOptions & ViewDefinition<SidebarProps>;\n","import {Configuration as RspackConfig, DefinePlugin, HtmlRspackPlugin, Plugins} from \"@rspack/core\";\nimport HtmlRspackTagsPlugin from \"html-rspack-tags-plugin\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {EntrypointPlugin} from \"@cli/bundler\";\nimport {virtualViewModule} from \"@cli/virtual\";\n\nimport Sidebar, {SidebarNameToManifest} from \"./Sidebar\";\n\nimport {SidebarDeclaration} from \"./declaration\";\n\nimport {Command} from \"@typing/app\";\nimport {SidebarAlternativeBrowsers} from \"@typing/sidebar\";\n\nexport default definePlugin(() => {\n let sidebar: Sidebar;\n let declaration: SidebarDeclaration;\n\n let sidebarAvailable: boolean = false;\n\n return {\n name: \"adnbn:sidebar\",\n startup: ({config}) => {\n sidebar = new Sidebar(config);\n declaration = new SidebarDeclaration(config);\n\n sidebarAvailable = SidebarAlternativeBrowsers.has(config.browser) || config.manifestVersion !== 2;\n },\n sidebar: () => sidebar.files(),\n bundler: async ({config}) => {\n declaration.setAlias(await sidebar.getAlias()).build();\n\n let build: boolean = true;\n\n if (await sidebar.empty()) {\n if (config.debug) {\n console.info(\"Sidebar entries not found\");\n }\n\n build = false;\n } else if (!sidebarAvailable) {\n if (config.debug) {\n console.warn(\"Sidebar not supported for manifest version 2\");\n }\n\n build = false;\n }\n\n const plugins: Plugins = [];\n\n let alias: SidebarNameToManifest = new Map();\n\n if (build) {\n alias = await sidebar.manifestByAlias();\n\n // prettier-ignore\n const plugin = EntrypointPlugin.from(await sidebar.view().entries())\n .virtual(file => virtualViewModule(file));\n\n if (config.command === Command.Watch) {\n plugin.watch(async () => {\n declaration.setAlias(await sidebar.clear().getAlias()).build();\n\n return sidebar.view().entries();\n });\n }\n\n const htmlPlugins = (await sidebar.view().html()).map(options => new HtmlRspackPlugin(options));\n const tagsPlugins = (await sidebar.view().tags()).map(options => new HtmlRspackTagsPlugin(options));\n\n plugins.push(plugin, ...htmlPlugins, ...tagsPlugins);\n }\n\n return {\n plugins: [\n new DefinePlugin({\n __ADNBN_SIDEBAR_MAP__: JSON.stringify(alias),\n }),\n ...plugins,\n ],\n } as RspackConfig;\n },\n manifest: async ({manifest, config}) => {\n if (!sidebarAvailable) {\n return;\n }\n\n manifest.setSidebar(await sidebar.manifest());\n\n if ((await sidebar.exists()) && !SidebarAlternativeBrowsers.has(config.browser)) {\n manifest.addPermission(\"sidePanel\");\n }\n },\n };\n});\n","import path from \"path\";\nimport {Configuration as RspackConfig} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {getRootPath} from \"@cli/resolvers/path\";\n\nexport default definePlugin(() => {\n return {\n name: \"adnbn:react\",\n bundler: () => {\n return {\n resolve: {\n extensions: [\".js\", \".jsx\"],\n alias: {\n react: getRootPath(path.join(\"node_modules\", \"react\")),\n \"react-dom\": getRootPath(path.join(\"node_modules\", \"react-dom\")),\n scheduler: getRootPath(path.join(\"node_modules\", \"scheduler\")),\n },\n },\n optimization: {\n splitChunks: {\n cacheGroups: {\n react: {\n name: \"react\",\n test: /[\\\\/]node_modules[\\\\/](react|react-dom|scheduler)([\\\\/]|$)/,\n priority: 100,\n reuseExistingChunk: true,\n enforce: true,\n },\n },\n },\n },\n module: {\n rules: [\n {\n test: /\\.svg$/i,\n issuer: /\\.[jt]sx?$/,\n resourceQuery: /react/,\n use: [\n {\n loader: \"@svgr/webpack\",\n options: {\n expandProps: \"start\",\n typescript: true,\n },\n },\n ],\n },\n ],\n },\n } as RspackConfig;\n },\n };\n});\n","import _ from \"lodash\";\nimport path from \"path\";\nimport fs from \"fs\";\nimport {createHash} from \"crypto\";\nimport {Configuration as RspackConfig, CssExtractRspackPlugin, RuleSetUse, RuleSetUseItem} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {appFilenameResolver} from \"@cli/bundler\";\n\nimport {getAppSourcePath, getRootPath, getSharedPath} from \"@cli/resolvers/path\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {toPosix} from \"@cli/utils/path\";\n\n// prettier-ignore\nconst styleMergerLoader =\n (config: ReadonlyConfig) =>\n (sharedStyle: string, sharedPath: string): string | void => {\n const sharedDir = getRootPath(getSharedPath(config));\n\n if (sharedPath.startsWith(sharedDir)) {\n const relativePath = path.relative(sharedDir, sharedPath);\n\n const appDir = getRootPath(getAppSourcePath(config));\n const appPath = getRootPath(path.join(appDir, relativePath));\n\n if (fs.existsSync(appPath)) {\n try {\n let appStyle = fs.readFileSync(appPath, \"utf8\");\n\n appStyle = appStyle.replace(/url\\((['\"]?)(.*?)\\1\\)/g, (match, quote, filePath) => {\n if (\n filePath.startsWith(\"/\") ||\n filePath.startsWith(\"http\") ||\n filePath.startsWith(\"data:\")\n ) {\n return match;\n }\n\n const cssDir = path.dirname(appPath);\n const assetAbs = path.resolve(cssDir, filePath);\n\n const sharedFileDir = path.dirname(sharedPath);\n\n const relativeToSharedFile = path.relative(sharedFileDir, assetAbs);\n\n return `url(\"${toPosix(relativeToSharedFile)}\")`;\n });\n\n return sharedStyle + \"\\n\" + appStyle;\n } catch (error) {\n console.error(error);\n }\n }\n }\n };\n\nexport default definePlugin(() => {\n return {\n name: \"adnbn:styles\",\n bundler: ({config}) => {\n const {app, cssDir, cssFilename, cssIdentName, mergeStyles} = config;\n\n const filename = appFilenameResolver(app, cssFilename, cssDir);\n\n const createSassRuleSet = (rule: RuleSetUseItem): RuleSetUse => {\n const rules: RuleSetUse = [CssExtractRspackPlugin.loader, rule, \"sass-loader\"];\n\n if (mergeStyles) {\n rules.push({\n loader: \"source-modifier-loader\",\n options: {\n modify: styleMergerLoader(config),\n },\n });\n }\n\n return rules;\n };\n\n return {\n resolve: {\n extensions: [\".css\", \".scss\"],\n },\n plugins: [\n new CssExtractRspackPlugin({\n filename,\n chunkFilename: filename,\n }),\n ],\n module: {\n rules: [\n {\n test: /\\.(scss|css)$/,\n type: \"javascript/auto\",\n oneOf: [\n {\n resourceQuery: /asis/,\n use: createSassRuleSet({\n loader: \"css-loader\",\n options: {\n esModule: true,\n modules: false,\n },\n }),\n },\n {\n use: createSassRuleSet({\n loader: \"css-loader\",\n options: {\n esModule: true,\n modules: {\n exportLocalsConvention: \"as-is\",\n namedExport: false,\n localIdentName: cssIdentName.replaceAll(\"[app]\", _.kebabCase(app)),\n localIdentHashSalt: createHash(\"sha256\").update(app).digest(\"hex\"),\n },\n },\n }),\n },\n ],\n },\n ],\n },\n } satisfies RspackConfig;\n },\n };\n});\n","import _ from \"lodash\";\n\nimport type {ReadonlyConfig} from \"@typing/config\";\n\nexport default abstract class AbstractVersion {\n public static version<T extends AbstractVersion>(\n this: new (config: ReadonlyConfig) => T,\n config: ReadonlyConfig\n ): string | undefined {\n return new this(config).getVersion();\n }\n\n protected constructor(protected readonly config: ReadonlyConfig) {}\n\n public abstract getVersion(): string | undefined;\n\n protected extractVersionValue<T extends string | number | undefined>(version: T | (() => T)): string | undefined {\n if (_.isNil(version)) {\n return;\n }\n\n return String(_.isFunction(version) ? version : version);\n }\n}\n","import fs from \"fs\";\nimport semver from \"semver\";\n\nimport {getEnv} from \"@main/env\";\nimport {getInputPath} from \"@cli/resolvers/path\";\n\nimport AbstractVersion from \"./AbstractVersion\";\n\nimport type {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends AbstractVersion {\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public getVersion(): string | undefined {\n const version = this.extractVersionValue(this.config.version);\n\n if (!version) {\n return;\n }\n\n if (semver.valid(version)) {\n return version;\n }\n\n const envVersion = getEnv(version);\n\n if (semver.valid(envVersion)) {\n return envVersion;\n }\n\n const packagePath = getInputPath(this.config, \"package.json\");\n\n try {\n const packageJson = JSON.parse(fs.readFileSync(packagePath, \"utf-8\"));\n\n return packageJson.version;\n } catch (e) {\n console.error(`Unable to read version from \"${packagePath}\"`, e);\n }\n }\n}\n","import semver from \"semver\";\n\nimport {getEnv} from \"@main/env\";\n\nimport AbstractVersion from \"./AbstractVersion\";\n\nimport type {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends AbstractVersion {\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public getVersion(): string | undefined {\n const version = this.extractVersionValue(this.config.minimumVersion);\n\n if (!version) {\n return;\n }\n\n return this.resolveVersion(version) || this.resolveVersion(getEnv(version));\n }\n\n protected resolveVersion(version?: string): string | undefined {\n const coerceVersion = semver.coerce(version);\n\n if (!version || !coerceVersion) return;\n\n const parts: string[] = coerceVersion.version.split(\".\");\n\n while (parts.length && parts[parts.length - 1] === \"0\") {\n parts.pop();\n }\n\n return parts.join(\".\") || undefined;\n }\n}\n","import {definePlugin} from \"@main/plugin\";\n\nimport AddonVersion from \"./AddonVersion\";\nimport BrowserMinimumVersion from \"./BrowserMinimumVersion\";\n\nexport {AddonVersion, BrowserMinimumVersion};\n\nexport default definePlugin(() => {\n return {\n name: \"adnbn:version\",\n manifest: ({manifest, config}) => {\n manifest.setVersion(AddonVersion.version(config)).setMinimumVersion(BrowserMinimumVersion.version(config));\n },\n };\n});\n","import {\n CoreManifest,\n FirefoxManifest,\n Manifest,\n ManifestAccessibleResource,\n ManifestAccessibleResources,\n ManifestBackground,\n ManifestBuilder,\n ManifestCommands,\n ManifestContentScripts,\n ManifestDependencies,\n ManifestHostPermissions,\n ManifestIcons,\n ManifestIncognito,\n ManifestPermissions,\n ManifestPopup,\n ManifestSidebar,\n ManifestVersion,\n} from \"@typing/manifest\";\nimport {Browser} from \"@typing/browser\";\nimport {Language} from \"@typing/locale\";\nimport {CommandExecuteActionName} from \"@typing/command\";\nimport {DefaultIconGroupName} from \"@typing/icon\";\nimport {SidebarAlternativeBrowsers} from \"@typing/sidebar\";\n\ntype ManifestV3 = chrome.runtime.ManifestV3;\ntype ManifestPermission = chrome.runtime.ManifestPermissions;\ntype CoreManifestIcons = chrome.runtime.ManifestIcons;\n\nexport class ManifestError extends Error {\n public constructor(message: string) {\n super(\"Manifest: \" + message);\n }\n}\n\nexport default abstract class<T extends CoreManifest> implements ManifestBuilder<T> {\n protected name: string = \"__MSG_app_name__\";\n protected email?: string;\n protected author?: string;\n protected homepage?: string;\n protected shortName?: string;\n protected description?: string;\n protected minimumVersion?: string;\n protected version: string = \"0.0.0\";\n protected icon?: string;\n protected incognito?: ManifestIncognito;\n protected locale?: Language;\n protected icons: ManifestIcons = new Map();\n protected background?: ManifestBackground;\n protected popup?: ManifestPopup;\n protected sidebar?: ManifestSidebar;\n protected commands: ManifestCommands = new Set();\n protected contentScripts: ManifestContentScripts = new Set();\n protected dependencies: ManifestDependencies = new Map();\n protected permissions: ManifestPermissions = new Set();\n protected hostPermissions: ManifestHostPermissions = new Set();\n protected accessibleResources: ManifestAccessibleResources = new Set();\n\n public abstract getManifestVersion(): ManifestVersion;\n\n protected abstract buildAction(): Partial<T> | undefined;\n\n protected abstract buildPermissions(): Partial<T> | undefined;\n\n protected abstract buildHostPermissions(): Partial<T> | undefined;\n\n protected abstract buildWebAccessibleResources(): Partial<T> | undefined;\n\n protected constructor(protected readonly browser: Browser = Browser.Chrome) {}\n\n public setAuthor(author?: string): this {\n this.author = author;\n\n return this;\n }\n\n public setHomepage(homepage?: string): this {\n this.homepage = homepage;\n\n return this;\n }\n\n public setEmail(email?: string): this {\n this.email = email;\n\n return this;\n }\n\n public setName(name: string): this {\n this.name = name;\n\n return this;\n }\n\n public setShortName(shortName?: string): this {\n this.shortName = shortName;\n\n return this;\n }\n\n public setDescription(description?: string): this {\n this.description = description;\n\n return this;\n }\n\n public setVersion(version?: string): this {\n this.version = version || \"0.0.0\";\n\n return this;\n }\n\n public setMinimumVersion(minimumVersion?: string): this {\n this.minimumVersion = minimumVersion;\n\n return this;\n }\n\n public setLocale(lang?: Language): this {\n this.locale = lang;\n\n return this;\n }\n\n public setIncognito(incognito?: ManifestIncognito): this {\n this.incognito = incognito;\n\n return this;\n }\n\n public setIcons(icons?: ManifestIcons): this {\n this.icons = icons || new Map();\n\n return this;\n }\n\n public setIcon(icon?: string): this {\n this.icon = icon;\n\n return this;\n }\n\n public setBackground(background?: ManifestBackground): this {\n this.background = background;\n\n return this;\n }\n\n public setCommands(commands?: ManifestCommands): this {\n this.commands = commands || new Set();\n\n return this;\n }\n\n public setContentScripts(contentScripts?: ManifestContentScripts): this {\n this.contentScripts = contentScripts || new Set();\n\n return this;\n }\n\n public setPopup(popup?: ManifestPopup): this {\n this.popup = popup;\n\n return this;\n }\n\n public setSidebar(sidebar?: ManifestSidebar): this {\n this.sidebar = sidebar;\n\n return this;\n }\n\n public setDependencies(dependencies: ManifestDependencies): this {\n this.dependencies = dependencies;\n\n return this;\n }\n\n public addPermission(permission: ManifestPermission): this {\n this.permissions.add(permission);\n\n return this;\n }\n\n public setPermissions(permissions: ManifestPermissions): this {\n this.permissions = permissions;\n\n return this;\n }\n\n public appendPermissions(permissions: ManifestPermissions): this {\n for (const permission of permissions) {\n this.permissions.add(permission);\n }\n\n return this;\n }\n\n public addHostPermission(permission: string): this {\n this.hostPermissions.add(permission);\n\n return this;\n }\n\n public setHostPermissions(permissions: ManifestHostPermissions): this {\n this.hostPermissions = permissions;\n\n return this;\n }\n\n public appendHostPermissions(permissions: ManifestHostPermissions): this {\n for (const permission of permissions) {\n this.hostPermissions.add(permission);\n }\n\n return this;\n }\n\n public addAccessibleResource(accessibleResource: ManifestAccessibleResource): this {\n this.accessibleResources.add(accessibleResource);\n\n return this;\n }\n\n public appendAccessibleResources(accessibleResources: ManifestAccessibleResources): this {\n for (const accessibleResource of accessibleResources) {\n this.accessibleResources.add(accessibleResource);\n }\n\n return this;\n }\n\n public setManifestAccessibleResource(accessibleResources: ManifestAccessibleResources): this {\n this.accessibleResources = accessibleResources;\n\n return this;\n }\n\n private marge<T extends CoreManifest>(manifest: T, ...sources: Array<Partial<T> | undefined>): T {\n sources = sources.filter(source => source !== undefined);\n\n if (sources.length === 0) {\n return manifest;\n }\n\n const result = {...manifest};\n\n for (const source of sources) {\n Object.assign(result, source);\n }\n\n return result;\n }\n\n public build(): T {\n let manifest: Manifest = {\n name: this.name,\n short_name: this.shortName,\n description: this.description,\n version: this.version,\n manifest_version: this.getManifestVersion(),\n minimum_chrome_version: this.minimumVersion,\n author: this.author,\n homepage_url: this.homepage,\n incognito: this.incognito,\n };\n\n manifest = this.marge<Manifest>(\n manifest,\n this.buildLocale(),\n this.buildIcons(),\n this.buildBackground(),\n this.buildCommands(),\n this.buildAction(),\n this.buildSidebar(),\n this.buildContentScripts(),\n this.buildPermissions(),\n this.buildHostPermissions(),\n this.buildWebAccessibleResources(),\n this.buildBrowserSpecificSettings()\n );\n\n return manifest as T;\n }\n\n protected buildIcons(): Partial<CoreManifest> | undefined {\n if (this.icon) {\n return {icons: this.getIconsByName(this.icon)};\n }\n }\n\n protected buildBackground(): Partial<CoreManifest> | undefined {\n if (this.background) {\n const {entry, persistent} = this.background;\n\n const dependencies = this.dependencies.get(entry);\n\n if (!dependencies) {\n throw new ManifestError(`Background entry \"${entry}\" not found in dependencies`);\n }\n\n if (dependencies.js.size === 0) {\n throw new ManifestError(`Background entry \"${entry}\" has no dependencies`);\n }\n\n const scripts = Array.from(dependencies.js);\n\n return {background: {scripts, persistent: persistent || undefined}};\n }\n }\n\n protected buildCommands(): Partial<CoreManifest> | undefined {\n if (this.commands.size > 0) {\n const commands = Array.from(this.commands).reduce(\n (commands, command) => {\n const item = {\n suggested_key: {\n default: command?.defaultKey,\n windows: command?.windowsKey,\n mac: command?.macKey,\n chromeos: command?.chromeosKey,\n linux: command?.linuxKey,\n },\n description:\n command?.description ||\n (command.name === CommandExecuteActionName ? undefined : command.name),\n global: command?.global,\n };\n\n return {...commands, [command.name]: item};\n },\n {} as CoreManifest[\"commands\"]\n );\n\n return {commands};\n }\n }\n\n protected buildContentScripts(): Partial<CoreManifest> | undefined {\n if (this.contentScripts.size > 0) {\n const contentScripts: ManifestV3[\"content_scripts\"] = [];\n\n for (const script of this.contentScripts.values()) {\n const {\n entry,\n matches,\n excludeMatches,\n allFrames,\n runAt,\n excludeGlobs,\n includeGlobs,\n world,\n matchAboutBlank,\n matchOriginAsFallback,\n } = script;\n\n const dependencies = this.dependencies.get(entry);\n\n if (!dependencies) {\n throw new ManifestError(`Content script entry \"${entry}\" not found in dependencies`);\n }\n\n const js = Array.from(dependencies.js);\n const css = Array.from(dependencies.css);\n\n if (js.length === 0 && css.length === 0) {\n throw new ManifestError(`Content script and style entry \"${entry}\" not found in dependencies`);\n }\n\n contentScripts.push({\n matches,\n exclude_matches: excludeMatches,\n js: js.length > 0 ? js : undefined,\n css: css.length > 0 ? css : undefined,\n all_frames: allFrames,\n run_at: runAt,\n exclude_globs: excludeGlobs,\n include_globs: includeGlobs,\n match_about_blank: matchAboutBlank,\n //@ts-ignore\n match_origin_as_fallback: matchOriginAsFallback,\n world,\n });\n }\n\n return {content_scripts: contentScripts};\n }\n }\n\n protected buildSidebar(): Partial<CoreManifest> | undefined {\n if (!this.sidebar) {\n return;\n }\n\n const {path, icon, title} = this.sidebar;\n\n const commonProps = {\n open_at_install: this.browser === Browser.Firefox ? false : undefined,\n default_title: title || this.name,\n default_icon: this.getIconsByName(icon),\n };\n\n return SidebarAlternativeBrowsers.has(this.browser)\n ? {sidebar_action: {...commonProps, default_panel: path}}\n : {side_panel: {...commonProps, default_path: path}};\n }\n\n protected buildLocale(): Partial<CoreManifest> | undefined {\n if (this.locale) {\n return {default_locale: this.locale};\n }\n }\n\n protected buildBrowserSpecificSettings(): Partial<FirefoxManifest> | undefined {\n if (this.browser === Browser.Firefox && this.email && this.permissions.has(\"storage\")) {\n return {\n browser_specific_settings: {\n gecko: {\n id: this.email,\n // strict_min_version: this.minimumVersion,\n },\n },\n };\n }\n }\n\n protected hasExecuteActionCommand(): boolean {\n return this.commands.size > 0 && Array.from(this.commands).some(({name}) => name === CommandExecuteActionName);\n }\n\n protected getIconsByName(name?: string): CoreManifestIcons | undefined {\n if (this.icons.size === 0) {\n return;\n }\n\n if (!name) {\n name = DefaultIconGroupName;\n }\n\n const icons = this.icons.get(name) || this.icons.get(DefaultIconGroupName) || this.icons.values().next().value;\n\n if (icons) {\n return Object.fromEntries(icons);\n }\n }\n\n public get(): T {\n return this.build();\n }\n}\n","import {ManifestMatchSchemes, ManifestSpecialSchemes} from \"@typing/manifest\";\n\ntype ManifestPermissions = chrome.runtime.ManifestPermissions;\n\n/**\n * Filters and adapts permissions for Manifest V2 compatibility.\n *\n * @param permissions - Set of permissions to filter\n * @returns New set of permissions adapted for Manifest V2\n */\nexport const filterPermissionsForMV2 = (permissions: Set<ManifestPermissions>): Set<ManifestPermissions> => {\n const filteredPermissions = new Set(permissions);\n\n /**\n * Manifest V3 introduced a new 'scripting' permission for working with the Chrome Scripting API,\n * but Manifest V2 uses the 'tabs' permission for executing scripts on web pages.\n * This function automatically replaces 'scripting' with 'tabs' to ensure backward compatibility.\n *\n * @example\n * ```typescript\n * const mv3Permissions = new Set(['scripting', 'storage', 'activeTab']);\n * const mv2Permissions = filterPermissionsForMV2(mv3Permissions);\n * // Result: Set(['tabs', 'storage', 'activeTab'])\n * ```\n */\n if (filteredPermissions.has(\"scripting\")) {\n filteredPermissions.delete(\"scripting\");\n filteredPermissions.add(\"tabs\");\n }\n\n filteredPermissions.delete(\"offscreen\");\n\n return filteredPermissions;\n};\n\nexport const filterPermissionsForMV3 = (permissions: Set<ManifestPermissions>): Set<ManifestPermissions> => {\n const filteredPermissions = new Set(permissions);\n\n /**\n * @permissions webRequestBlocking, webAuthenticationProxy, webRequestAuthProvider\n * @description These permissions were removed in Manifest V3 due to concerns related to security, performance, and transparency.\n * - `webRequestBlocking`: Allowed real-time interception and modification of network requests, which introduced latency and potential security risks. Replaced by the safer, declarative `declarativeNetRequest` API.\n * - `webAuthenticationProxy`: Provided proxy authentication control, but was rarely used and posed privacy risks.\n * - `webRequestAuthProvider`: Enabled handling of HTTP authentication (onAuthRequired), but was considered unsafe in the new MV3 architecture due to its ability to interfere with authentication flows.\n * @manifestV3 Removed. These APIs are no longer available in extensions using Manifest V3.\n */\n filteredPermissions.delete(\"webAuthenticationProxy\");\n filteredPermissions.delete(\"webRequestAuthProvider\");\n filteredPermissions.delete(\"webRequestBlocking\");\n\n return filteredPermissions;\n};\n\nexport const filterHostPatterns = (patterns: Set<string>): Set<string> => {\n if (patterns.has(\"<all_urls>\")) {\n return new Set([\"<all_urls>\"]);\n }\n\n const result = new Set<string>();\n\n const activeWildcards = new Set<string>();\n\n if (patterns.has(\"*://*/*\")) {\n activeWildcards.add(\"*://*/*\");\n result.add(\"*://*/*\");\n }\n\n for (const scheme of ManifestMatchSchemes) {\n const wildcard = `${scheme}://*/*`;\n\n if (patterns.has(wildcard)) {\n if (scheme === \"http\" || scheme === \"https\") {\n if (!activeWildcards.has(\"*://*/*\")) {\n activeWildcards.add(wildcard);\n result.add(wildcard);\n }\n } else {\n activeWildcards.add(wildcard);\n result.add(wildcard);\n }\n }\n }\n\n const isCoveredByWildcard = (pattern: string): boolean => {\n const schemeIndex = pattern.indexOf(\"://\");\n if (schemeIndex === -1) return false;\n\n const scheme = pattern.substring(0, schemeIndex);\n\n if (ManifestSpecialSchemes.has(scheme)) {\n return false;\n }\n\n if (activeWildcards.has(\"*://*/*\") && (scheme === \"http\" || scheme === \"https\")) {\n return true;\n }\n\n return activeWildcards.has(`${scheme}://*/*`);\n };\n\n for (const pattern of patterns) {\n if (activeWildcards.has(pattern)) {\n continue;\n }\n\n if (!isCoveredByWildcard(pattern)) {\n result.add(pattern);\n }\n }\n\n return result;\n};\n","import ManifestBase from \"./ManifestBase\";\n\nimport {filterHostPatterns, filterPermissionsForMV2} from \"./utils\";\n\nimport {CoreManifest, ManifestVersion} from \"@typing/manifest\";\nimport {Browser} from \"@typing/browser\";\nimport {SidebarAlternativeBrowsers} from \"@typing/sidebar\";\n\ntype ManifestV2 = chrome.runtime.ManifestV2;\ntype ManifestV3 = chrome.runtime.ManifestV3;\n\nexport default class extends ManifestBase<ManifestV2> {\n public constructor(browser: Browser) {\n super(browser);\n }\n\n public getManifestVersion(): ManifestVersion {\n return 2;\n }\n\n protected buildAction(): Partial<ManifestV2> | undefined {\n if (this.popup) {\n const {icon, title, path} = this.popup;\n\n return {\n browser_action: {\n default_title: title || this.name,\n default_popup: path,\n default_icon: this.getIconsByName(icon),\n },\n };\n } else if (this.hasExecuteActionCommand()) {\n return {\n browser_action: {\n default_title: this.name,\n },\n };\n }\n }\n\n protected buildSidebar(): Partial<CoreManifest> | undefined {\n if (!SidebarAlternativeBrowsers.has(this.browser)) {\n return;\n }\n\n return super.buildSidebar();\n }\n\n protected buildContentScripts(): Partial<ManifestV2> | undefined {\n const manifest = super.buildContentScripts() as Partial<ManifestV3>;\n\n if (manifest) {\n const {content_scripts} = manifest;\n\n if (!content_scripts) {\n return;\n }\n\n const contentScripts = content_scripts\n //@ts-ignore\n .map(({world, match_origin_as_fallback, ...script}) => script);\n\n return {content_scripts: contentScripts};\n }\n }\n\n protected buildPermissions(): Partial<ManifestV2> | undefined {\n const permissions: string[] = Array.from(filterPermissionsForMV2(this.permissions));\n\n if (this.hostPermissions.size > 0) {\n permissions.push(...filterHostPatterns(this.hostPermissions));\n }\n\n if (permissions.length > 0) {\n return {permissions};\n }\n }\n\n protected buildHostPermissions(): Partial<ManifestV2> | undefined {\n // In Manifest V2, host permissions are declared in the \"permissions\" array\n\n return undefined;\n }\n\n protected buildWebAccessibleResources(): Partial<ManifestV2> | undefined {\n const resources: string[] = Array.from(this.accessibleResources).flatMap(({resources}) => resources);\n\n for (const contentScript of this.contentScripts.values()) {\n const assets = this.dependencies.get(contentScript.entry)?.assets;\n\n if (assets && assets.size > 0) {\n resources.push(...assets);\n }\n }\n\n if (resources.length > 0) {\n return {web_accessible_resources: Array.from(new Set(resources))};\n }\n }\n}\n","import ManifestBase, {ManifestError} from \"./ManifestBase\";\n\nimport {filterHostPatterns, filterPermissionsForMV3} from \"./utils\";\n\nimport {CoreManifest, ManifestVersion} from \"@typing/manifest\";\nimport {Browser} from \"@typing/browser\";\nimport {ContentScriptMatches} from \"@typing/content\";\n\ntype ManifestV3 = chrome.runtime.ManifestV3;\n\nexport default class extends ManifestBase<ManifestV3> {\n public constructor(browser: Browser) {\n super(browser);\n }\n\n public getManifestVersion(): ManifestVersion {\n return 3;\n }\n\n protected buildBackground(): Partial<CoreManifest> | undefined {\n if (this.browser === Browser.Firefox) {\n const manifest = super.buildBackground();\n\n if (manifest) {\n const {background, ...other} = manifest;\n\n return {...other, background: {...background, persistent: undefined}};\n }\n\n return;\n }\n\n if (this.background) {\n const {entry} = this.background;\n\n const dependencies = this.dependencies.get(entry);\n\n if (!dependencies) {\n throw new ManifestError(`Background entry \"${entry}\" not found in dependencies`);\n }\n\n if (dependencies.js.size === 0) {\n throw new ManifestError(`Background entry \"${entry}\" has no dependencies`);\n }\n\n if (dependencies.js.size > 1) {\n throw new ManifestError(`Background entry \"${entry}\" has more than one dependency`);\n }\n\n const [js] = Array.from(dependencies.js);\n\n return {background: {service_worker: js}};\n }\n }\n\n protected buildAction(): Partial<ManifestV3> | undefined {\n if (this.popup) {\n const {path, icon, title} = this.popup;\n\n return {\n action: {\n default_title: title || this.name,\n default_popup: path,\n default_icon: this.getIconsByName(icon),\n },\n };\n } else if (this.hasExecuteActionCommand()) {\n return {\n action: {\n default_title: this.name,\n },\n };\n }\n }\n\n protected buildPermissions(): Partial<ManifestV3> | undefined {\n const permissions = Array.from(filterPermissionsForMV3(this.permissions));\n\n if (permissions.length > 0) {\n return {permissions};\n }\n }\n\n protected buildHostPermissions(): Partial<ManifestV3> | undefined {\n if (this.hostPermissions.size > 0) {\n return {host_permissions: [...filterHostPatterns(this.hostPermissions)]};\n }\n }\n\n protected buildWebAccessibleResources(): Partial<ManifestV3> | undefined {\n const resources: Array<{resources: string[]; matches: string[]}> = [...this.accessibleResources];\n\n for (const contentScript of this.contentScripts.values()) {\n const assets = this.dependencies.get(contentScript.entry)?.assets;\n\n if (assets && assets.size > 0) {\n resources.push({\n resources: Array.from(assets),\n matches: contentScript.matches || ContentScriptMatches,\n });\n }\n }\n\n if (resources.length > 0) {\n return {web_accessible_resources: resources};\n }\n }\n}\n","import ManifestV2 from \"./ManifestV2\";\nimport ManifestV3 from \"./ManifestV3\";\n\nimport {ManifestBuilder} from \"@typing/manifest\";\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default (config: ReadonlyConfig): ManifestBuilder => {\n const {manifestVersion, browser} = config;\n\n if (manifestVersion === 2) {\n return new ManifestV2(browser);\n }\n\n return new ManifestV3(browser);\n};\n","import {Configuration as RspackConfig, RspackPluginInstance} from \"@rspack/core\";\nimport {RsdoctorRspackPlugin} from \"@rsdoctor/rspack-plugin\";\nimport {merge as mergeConfig} from \"webpack-merge\";\n\nimport manifestFactory from \"../builders/manifest\";\nimport {processPluginHandler} from \"./plugin\";\n\nimport ManifestPlugin from \"@cli/bundler/plugins/ManifestPlugin\";\nimport WatchPlugin from \"@cli/bundler/plugins/WatchPlugin\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {Command} from \"@typing/app\";\n\nconst getConfigFromPlugins = async (rspack: RspackConfig, config: ReadonlyConfig): Promise<RspackConfig> => {\n let mergedConfig: RspackConfig = {};\n\n for await (const {result: pluginConfig} of processPluginHandler(config.plugins, \"bundler\", {\n rspack: mergeConfig(rspack, mergedConfig),\n config,\n })) {\n mergedConfig = mergeConfig(mergedConfig, pluginConfig);\n }\n\n return mergedConfig;\n};\n\nconst getConfigForManifest = async (config: ReadonlyConfig): Promise<RspackConfig> => {\n const manifest = manifestFactory(config);\n\n const update = () => Array.fromAsync(processPluginHandler(config.plugins, \"manifest\", {manifest, config}));\n\n await update();\n\n const plugins: RspackPluginInstance[] = [];\n\n if (config.command === Command.Watch) {\n plugins.push(\n new WatchPlugin(async () => {\n await update();\n })\n );\n }\n\n plugins.push(new ManifestPlugin(manifest));\n\n return {plugins};\n};\n\nexport default async (config: ReadonlyConfig): Promise<RspackConfig> => {\n let rspack: RspackConfig = {\n entry: {},\n mode: config.mode,\n cache: false,\n };\n\n // prettier-ignore\n rspack = mergeConfig(\n rspack,\n await getConfigFromPlugins(rspack, config),\n await getConfigForManifest(config)\n );\n\n if (config.debug) {\n rspack = mergeConfig(rspack, {\n stats: {\n errorDetails: true,\n },\n });\n }\n\n if (config.command === Command.Watch) {\n rspack = mergeConfig(rspack, {\n devtool: \"inline-source-map\",\n });\n }\n\n if (config.command === Command.Build) {\n if (config.analyze) {\n rspack = mergeConfig(rspack, {\n plugins: [\n new RsdoctorRspackPlugin({\n supports: {\n banner: true,\n parseBundle: true,\n generateTileGraph: true,\n },\n }),\n ],\n });\n }\n }\n\n return rspack;\n};\n","import {rspack} from \"@rspack/core\";\n\nimport {build, watch} from \"./command\";\n\nimport configResolver from \"@cli/resolvers/config\";\nimport bundlerResolver from \"@cli/resolvers/bundler\";\nimport {processPluginHandler} from \"@cli/resolvers/plugin\";\n\nimport {OptionalConfig, ReadonlyConfig} from \"@typing/config\";\nimport {Command} from \"@typing/app\";\n\nconst startup = async (config: ReadonlyConfig): Promise<void> => {\n await Array.fromAsync(processPluginHandler(config.plugins, \"startup\", {config}));\n};\n\nexport default async (config: OptionalConfig): Promise<void> => {\n const resolverConfig = await configResolver(config);\n\n await startup(resolverConfig);\n\n const rspackConfig = await bundlerResolver(resolverConfig);\n\n const compiler = rspack(rspackConfig);\n\n switch (resolverConfig.command) {\n case Command.Build:\n build(compiler);\n break;\n\n case Command.Watch:\n watch(compiler);\n break;\n\n default:\n console.error(\"Unknown command\");\n process.exit(1);\n }\n};\n","{\n \"name\": \"adnbn\",\n \"version\": \"0.2.4\",\n \"description\": \"Addon 💀 Bone - Cross-browser web extension framework with shared code base\",\n \"homepage\": \"https://github.com/addonbone/addonbone\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/addonbone/addonbone.git\"\n },\n \"keywords\": [\n \"addon\",\n \"extension\",\n \"browser\",\n \"chrome\",\n \"firefox\",\n \"edge\",\n \"opera\",\n \"safari\"\n ],\n \"author\": \"Addon Bone\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/addonbone/addonbone/issues\"\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./locale\": {\n \"types\": \"./dist/locale/index.d.ts\",\n \"import\": \"./dist/locale/index.js\",\n \"require\": \"./dist/locale/index.cjs\"\n },\n \"./locale/*\": {\n \"types\": \"./dist/locale/*/index.d.ts\",\n \"import\": \"./dist/locale/*/index.js\",\n \"require\": \"./dist/locale/*/index.cjs\"\n },\n \"./message\": {\n \"types\": \"./dist/message/index.d.ts\",\n \"import\": \"./dist/message/index.js\",\n \"require\": \"./dist/message/index.cjs\"\n },\n \"./message/*\": {\n \"types\": \"./dist/message/*/index.d.ts\",\n \"import\": \"./dist/message/*/index.js\",\n \"require\": \"./dist/message/*/index.cjs\"\n },\n \"./offscreen\": {\n \"types\": \"./dist/offscreen/index.d.ts\",\n \"import\": \"./dist/offscreen/index.js\",\n \"require\": \"./dist/offscreen/index.cjs\"\n },\n \"./storage\": {\n \"types\": \"./dist/storage/index.d.ts\",\n \"import\": \"./dist/storage/index.js\",\n \"require\": \"./dist/storage/index.cjs\"\n },\n \"./storage/*\": {\n \"types\": \"./dist/storage/*/index.d.ts\",\n \"import\": \"./dist/storage/*/index.js\",\n \"require\": \"./dist/storage/*/index.cjs\"\n },\n \"./service\": {\n \"types\": \"./dist/service/index.d.ts\",\n \"import\": \"./dist/service/index.js\",\n \"require\": \"./dist/service/index.cjs\"\n },\n \"./relay\": {\n \"types\": \"./dist/relay/index.d.ts\",\n \"import\": \"./dist/relay/index.js\",\n \"require\": \"./dist/relay/index.cjs\"\n },\n \"./entry/*\": {\n \"types\": \"./dist/entry/*/index.d.ts\",\n \"import\": \"./dist/entry/*/index.js\",\n \"require\": \"./dist/entry/*/index.cjs\"\n },\n \"./entry/content/*\": {\n \"types\": \"./dist/entry/content/*/index.d.ts\",\n \"import\": \"./dist/entry/content/*/index.js\",\n \"require\": \"./dist/entry/content/*/index.cjs\"\n },\n \"./entry/view/*\": {\n \"types\": \"./dist/entry/view/*/index.d.ts\",\n \"import\": \"./dist/entry/view/*/index.js\",\n \"require\": \"./dist/entry/view/*/index.cjs\"\n },\n \"./client-types\": {\n \"types\": \"./types/client.d.ts\"\n }\n },\n \"main\": \"./dist/index.js\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"files\": [\n \"bin\",\n \"dist\",\n \"types\"\n ],\n \"bin\": {\n \"adnbn\": \"bin/adnbn.js\"\n },\n \"scripts\": {\n \"adnbn\": \"tsx ./src/cli/index.ts\",\n \"build\": \"cross-env NODE_OPTIONS=--max-old-space-size=6046 tsup\",\n \"format\": \"prettier --write .\",\n \"test\": \"jest\",\n \"test:watch\": \"jest --watch\",\n \"test:offscreen\": \"jest --testPathPattern=Offscreen\",\n \"test:message\": \"jest --testPathPattern=Message\",\n \"test:storage\": \"jest --testPathPattern=Storage\",\n \"test:service\": \"jest --testPathPattern=Service\",\n \"test:relay\": \"jest --testPathPattern=Relay\",\n \"test:locale\": \"jest --testPathPattern=Locale\",\n \"test:entrypoint\": \"jest --testPathPattern=src/cli/entrypoint\"\n },\n \"devDependencies\": {\n \"@swc/core\": \"^1.11.7\",\n \"@testing-library/jest-dom\": \"^6.6.3\",\n \"@testing-library/react\": \"^16.3.0\",\n \"@types/jest\": \"^29.5.14\",\n \"@types/js-yaml\": \"^4.0.9\",\n \"@types/lodash\": \"^4.17.14\",\n \"@types/node\": \"^22.13.1\",\n \"@types/pluralize\": \"^0.0.33\",\n \"@types/validator\": \"^13.15.1\",\n \"cross-env\": \"^7.0.3\",\n \"dotenv\": \"^16.4.7\",\n \"esbuild-plugin-raw\": \"^0.1.8\",\n \"fs-extra\": \"^11.3.0\",\n \"jest\": \"^29.7.0\",\n \"jest-environment-jsdom\": \"^29.7.0\",\n \"jest-webextension-mock\": \"^4.0.0\",\n \"prettier\": \"^3.6.2\",\n \"ts-jest\": \"^29.3.1\",\n \"ts-node\": \"^10.9.2\",\n \"tsup\": \"^8.3.6\",\n \"tsx\": \"^4.19.2\",\n \"uglify-js\": \"^3.19.3\",\n \"utility-types\": \"^3.11.0\"\n },\n \"dependencies\": {\n \"@adnbn/browser\": \"^0.1.7\",\n \"@adnbn/inject-script\": \"^0.2.1\",\n \"@rsdoctor/rspack-plugin\": \"^1.0.2\",\n \"@rspack/cli\": \"^1.3.8\",\n \"@rspack/core\": \"^1.3.8\",\n \"@svgr/webpack\": \"^8.1.0\",\n \"@types/chrome\": \"^0.0.323\",\n \"c12\": \"^3.0.3\",\n \"cac\": \"^6.7.14\",\n \"consola\": \"^3.4.2\",\n \"css-loader\": \"^7.1.2\",\n \"debounce\": \"^2.2.0\",\n \"file-loader\": \"^6.2.0\",\n \"get-value\": \"^4.0.1\",\n \"html-rspack-tags-plugin\": \"^0.0.3\",\n \"js-yaml\": \"^4.1.0\",\n \"json-stringify-deterministic\": \"^1.0.12\",\n \"lodash\": \"^4.17.21\",\n \"mini-css-extract-plugin\": \"^2.9.2\",\n \"nanoid\": \"^5.1.4\",\n \"pluralize\": \"^8.0.0\",\n \"rspack-plugin-virtual-module\": \"^0.1.13\",\n \"sass\": \"^1.83.4\",\n \"sass-loader\": \"^16.0.4\",\n \"semver\": \"^7.7.2\",\n \"source-modifier-loader\": \"^1.0.2\",\n \"tsconfig-paths\": \"^4.2.0\",\n \"type-fest\": \"^4.37.0\",\n \"typescript\": \"^5.7.3\",\n \"validator\": \"^13.15.15\",\n \"webpack-merge\": \"^6.0.1\",\n \"zod\": \"^3.24.2\"\n },\n \"peerDependencies\": {\n \"@types/react\": \"*\",\n \"@types/react-dom\": \"*\",\n \"react\": \"^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc\",\n \"react-dom\": \"^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc\"\n },\n \"peerDependenciesMeta\": {\n \"@types/react\": {\n \"optional\": true\n },\n \"@types/react-dom\": {\n \"optional\": true\n }\n }\n}\n","import cac from \"cac\";\nimport {consola} from \"consola\";\n\nimport app from \"./builders/app\";\n\nimport {Command} from \"@typing/app\";\nimport {Browser} from \"@typing/browser\";\n\nimport {name, version} from \"../../package.json\";\n\nconst cli = cac(name);\n\ncli.option(\"--debug\", \"Enable debug mode\");\n\ncli.command(\"init\", \"Initialize a new project\").action(() => {\n consola.box(\"Coming soon...\");\n});\n\ncli.command(\"watch [root]\", \"Start watch mode\")\n .option(\"-m, --mode <mode>\", \"Set env mode\", {default: \"development\"})\n .option(\"-c, --config <config>\", \"Path to config file\")\n .option(\"-a, --app <app>\", \"Specify an app to run\", {default: \"myapp\"})\n .option(\"-b, --browser <browser>\", \"Specify a browser\")\n .option(\"--mv2\", \"Target manifest v2\")\n .action(async (root, options) => {\n try {\n await app({\n command: Command.Watch,\n mode: options.mode,\n debug: options.debug,\n app: options.app,\n browser: options.browser,\n manifestVersion: options.mv2 ? 2 : 3,\n inputDir: root,\n configFile: options.config,\n });\n } catch (e) {\n consola.error(e);\n }\n });\n\ncli.command(\"build [root]\", \"Build for production\")\n .option(\"-m, --mode <mode>\", \"Set env mode\", {default: \"production\"})\n .option(\"-c, --config <config>\", \"Path to config file\")\n .option(\"-a, --app <app>\", \"Specify an app to run\", {default: \"myapp\"})\n .option(\"-b, --browser <browser>\", \"Specify a browser\", {default: Browser.Chrome})\n .option(\"--mv2\", \"Target manifest v2\")\n .option(\"--analyze\", \"Visualize extension bundle\")\n .action(async (root, options) => {\n try {\n await app({\n command: Command.Build,\n mode: options.mode,\n debug: options.debug,\n app: options.app,\n browser: options.browser,\n manifestVersion: options.mv2 ? 2 : 3,\n inputDir: root,\n configFile: options.config,\n analyze: options.analyze,\n });\n } catch (e) {\n consola.error(e);\n }\n });\n\ncli.version(version);\ncli.help();\ncli.parse();\n"]}
|