adnbn 0.8.0 → 0.10.0
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/builders/locale/LocaleStructureValidator.js +7 -0
- package/dist/cli/builders/locale/LocaleStructureValidator.js.map +1 -1
- package/dist/cli/builders/manifest/ManifestBase.d.ts +4 -1
- package/dist/cli/builders/manifest/ManifestBase.js +19 -0
- package/dist/cli/builders/manifest/ManifestBase.js.map +1 -1
- package/dist/cli/bundler/plugins/GenerateJsonPlugin.js +3 -7
- package/dist/cli/bundler/plugins/GenerateJsonPlugin.js.map +1 -1
- package/dist/cli/entrypoint/file/injectors/core.js +9 -1
- package/dist/cli/entrypoint/file/injectors/core.js.map +1 -1
- package/dist/cli/entrypoint/finder/AbstractEntrypointFinder.d.ts +2 -2
- package/dist/cli/entrypoint/finder/AbstractEntrypointFinder.js +2 -2
- package/dist/cli/entrypoint/finder/AbstractEntrypointFinder.js.map +1 -1
- package/dist/cli/entrypoint/finder/{AbstractOptionsFinder.js → AbstractParsedFinder.js} +3 -3
- package/dist/cli/entrypoint/finder/AbstractParsedFinder.js.map +1 -0
- package/dist/cli/entrypoint/finder/OptionsFinder.d.ts +13 -0
- package/dist/cli/entrypoint/finder/OptionsFinder.js +33 -0
- package/dist/cli/entrypoint/finder/OptionsFinder.js.map +1 -0
- package/dist/cli/entrypoint/finder/PluginFinder.d.ts +4 -4
- package/dist/cli/entrypoint/finder/PluginFinder.js +2 -2
- package/dist/cli/entrypoint/finder/PluginFinder.js.map +1 -1
- package/dist/cli/entrypoint/finder/index.d.ts +2 -1
- package/dist/cli/entrypoint/finder/index.js +20 -18
- package/dist/cli/entrypoint/finder/index.js.map +1 -1
- package/dist/cli/entrypoint/finder/tests/fixtures/options/discovery/account.options.d.ts +1 -0
- package/dist/cli/entrypoint/finder/tests/fixtures/options/discovery/advanced.options/index.d.ts +1 -0
- package/dist/cli/entrypoint/parser/ContentParser.d.ts +2 -2
- package/dist/cli/entrypoint/parser/ContentParser.js.map +1 -1
- package/dist/cli/entrypoint/parser/OptionsParser.d.ts +6 -0
- package/dist/cli/entrypoint/parser/OptionsParser.js +16 -0
- package/dist/cli/entrypoint/parser/OptionsParser.js.map +1 -0
- package/dist/cli/entrypoint/parser/RelayParser.js +2 -1
- package/dist/cli/entrypoint/parser/RelayParser.js.map +1 -1
- package/dist/cli/entrypoint/parser/index.d.ts +1 -0
- package/dist/cli/entrypoint/parser/index.js +16 -14
- package/dist/cli/entrypoint/parser/index.js.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/plugins/content/ContentDriver.d.ts +21 -8
- package/dist/cli/plugins/content/ContentDriver.js +24 -2
- package/dist/cli/plugins/content/ContentDriver.js.map +1 -1
- package/dist/cli/plugins/content/ContentManager.d.ts +8 -3
- package/dist/cli/plugins/content/ContentManager.js +41 -6
- package/dist/cli/plugins/content/ContentManager.js.map +1 -1
- package/dist/cli/plugins/content/Relay.d.ts +6 -8
- package/dist/cli/plugins/content/Relay.js +2 -14
- package/dist/cli/plugins/content/Relay.js.map +1 -1
- package/dist/cli/plugins/content/RelayDeclaration.d.ts +0 -1
- package/dist/cli/plugins/content/RelayDeclaration.js +0 -3
- package/dist/cli/plugins/content/RelayDeclaration.js.map +1 -1
- package/dist/cli/plugins/content/RelayDriver.d.ts +10 -0
- package/dist/cli/plugins/content/RelayDriver.js +39 -0
- package/dist/cli/plugins/content/RelayDriver.js.map +1 -0
- package/dist/cli/plugins/content/index.js +1 -10
- package/dist/cli/plugins/content/index.js.map +1 -1
- package/dist/cli/plugins/content/types.d.ts +3 -0
- package/dist/cli/plugins/index.d.ts +1 -0
- package/dist/cli/plugins/index.js +22 -20
- package/dist/cli/plugins/index.js.map +1 -1
- package/dist/cli/plugins/locale/Locale.js +5 -1
- package/dist/cli/plugins/locale/Locale.js.map +1 -1
- package/dist/cli/plugins/locale/declaration/LocaleDeclaration.js +2 -3
- package/dist/cli/plugins/locale/declaration/LocaleDeclaration.js.map +1 -1
- package/dist/cli/plugins/locale/declaration/locale.d.ts +3 -124
- package/dist/cli/plugins/options/Options.d.ts +10 -0
- package/dist/cli/plugins/options/Options.js +24 -0
- package/dist/cli/plugins/options/Options.js.map +1 -0
- package/dist/cli/plugins/options/index.d.ts +2 -0
- package/dist/cli/plugins/options/index.js +41 -0
- package/dist/cli/plugins/options/index.js.map +1 -0
- package/dist/cli/plugins/view/index.js +1 -1
- package/dist/cli/plugins/view/index.js.map +1 -1
- package/dist/cli/resolvers/config.js +2 -0
- package/dist/cli/resolvers/config.js.map +1 -1
- package/dist/cli/virtual/index.js +2 -2
- package/dist/cli/virtual/virtual.d.ts +52 -147
- package/dist/entry/relay/index.d.ts +2 -1
- package/dist/entry/relay/index.js.map +1 -1
- package/dist/locale/adapters/react/LocaleProvider.js +2 -0
- package/dist/locale/adapters/react/LocaleProvider.js.map +1 -1
- package/dist/locale/adapters/react/context.d.ts +1 -0
- package/dist/locale/adapters/react/context.js +3 -2
- package/dist/locale/adapters/react/context.js.map +1 -1
- package/dist/locale/helpers.js.map +1 -1
- package/dist/locale/providers/AbstractLocale.d.ts +2 -0
- package/dist/locale/providers/AbstractLocale.js +5 -0
- package/dist/locale/providers/AbstractLocale.js.map +1 -1
- package/dist/locale/providers/NativeLocale.d.ts +3 -2
- package/dist/locale/providers/NativeLocale.js +1 -1
- package/dist/locale/providers/NativeLocale.js.map +1 -1
- package/dist/main/index.d.ts +1 -0
- package/dist/main/index.js +1 -0
- package/dist/main/index.js.map +1 -1
- package/dist/main/options.d.ts +3 -0
- package/dist/main/options.js +7 -0
- package/dist/main/options.js.map +1 -0
- package/dist/main/relay.d.ts +7 -6
- package/dist/main/relay.js +12 -5
- package/dist/main/relay.js.map +1 -1
- package/dist/message/error.d.ts +6 -0
- package/dist/message/error.js +21 -0
- package/dist/message/error.js.map +1 -1
- package/dist/message/index.d.ts +2 -1
- package/dist/message/index.js +2 -0
- package/dist/message/index.js.map +1 -1
- package/dist/message/providers/Message.d.ts +3 -0
- package/dist/message/providers/Message.js +36 -6
- package/dist/message/providers/Message.js.map +1 -1
- package/dist/offscreen/providers/ProxyOffscreen.d.ts +2 -2
- package/dist/offscreen/providers/ProxyOffscreen.js.map +1 -1
- package/dist/relay/RelayPermission.d.ts +6 -3
- package/dist/relay/RelayPermission.js +28 -12
- package/dist/relay/RelayPermission.js.map +1 -1
- package/dist/relay/adapters/RelayAdapter.d.ts +8 -0
- package/dist/relay/adapters/RelayAdapter.js +16 -0
- package/dist/relay/adapters/RelayAdapter.js.map +1 -0
- package/dist/relay/adapters/RelayMessagingAdapter.d.ts +11 -0
- package/dist/relay/adapters/RelayMessagingAdapter.js +91 -0
- package/dist/relay/adapters/RelayMessagingAdapter.js.map +1 -0
- package/dist/relay/adapters/RelayScriptingAdapter.d.ts +15 -0
- package/dist/relay/adapters/RelayScriptingAdapter.js +170 -0
- package/dist/relay/adapters/RelayScriptingAdapter.js.map +1 -0
- package/dist/relay/discovery/RelayDiscovery.d.ts +10 -0
- package/dist/relay/discovery/RelayDiscovery.js +62 -0
- package/dist/relay/discovery/RelayDiscovery.js.map +1 -0
- package/dist/relay/index.d.ts +1 -4
- package/dist/relay/index.js +1 -3
- package/dist/relay/index.js.map +1 -1
- package/dist/relay/providers/ProxyRelay.d.ts +20 -17
- package/dist/relay/providers/ProxyRelay.js +79 -52
- package/dist/relay/providers/ProxyRelay.js.map +1 -1
- package/dist/relay/providers/RegisterRelay.js +1 -2
- package/dist/relay/providers/RegisterRelay.js.map +1 -1
- package/dist/relay/result.d.ts +12 -0
- package/dist/relay/result.js +88 -0
- package/dist/relay/result.js.map +1 -0
- package/dist/sandbox/index.d.ts +2 -2
- package/dist/sandbox/index.js.map +1 -1
- package/dist/sandbox/providers/ProxySandbox.d.ts +2 -2
- package/dist/sandbox/providers/ProxySandbox.js.map +1 -1
- package/dist/service/providers/ProxyService.d.ts +2 -2
- package/dist/service/providers/ProxyService.js.map +1 -1
- package/dist/transport/ProxyTransport.d.ts +2 -2
- package/dist/transport/ProxyTransport.js.map +1 -1
- package/dist/transport/index.d.ts +3 -2
- package/dist/types/helpers.d.ts +0 -4
- package/dist/types/locale.d.ts +3 -0
- package/dist/types/locale.js +58 -0
- package/dist/types/locale.js.map +1 -1
- package/dist/types/manifest.d.ts +14 -0
- package/dist/types/manifest.js.map +1 -1
- package/dist/types/options.d.ts +9 -0
- package/dist/types/options.js +1 -0
- package/dist/types/options.js.map +1 -0
- package/dist/types/plugin.d.ts +2 -1
- package/dist/types/relay.d.ts +130 -3
- package/dist/types/relay.js +16 -0
- package/dist/types/relay.js.map +1 -1
- package/dist/types/rpc.d.ts +4 -0
- package/dist/types/rpc.js +1 -0
- package/dist/types/rpc.js.map +1 -0
- package/dist/types/transport.d.ts +3 -2
- package/package.json +5 -4
- package/dist/cli/entrypoint/finder/AbstractOptionsFinder.js.map +0 -1
- /package/dist/cli/entrypoint/finder/{AbstractOptionsFinder.d.ts → AbstractParsedFinder.d.ts} +0 -0
|
@@ -23,6 +23,13 @@ class LocaleStructureValidator_default {
|
|
|
23
23
|
continue;
|
|
24
24
|
}
|
|
25
25
|
const structure = builder.structure();
|
|
26
|
+
for (const [key, expected] of Object.entries(defaultStructure)) {
|
|
27
|
+
if (expected.plural && !Object.hasOwn(structure, key)) {
|
|
28
|
+
throw new Error(
|
|
29
|
+
`Locale "${language}" is missing plural key "${key}" required by default locale "${this.defaultLanguage}"`
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
26
33
|
for (const [key, locale] of Object.entries(structure)) {
|
|
27
34
|
const expected = defaultStructure[key];
|
|
28
35
|
if (!expected) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/cli/builders/locale/LocaleStructureValidator.ts"],"sourcesContent":["import _ from \"lodash\";\n\nimport {Language, LocaleBuilder, LocaleBuilders, LocaleContractValidator} from \"@typing/locale\";\n\nexport default class implements LocaleContractValidator {\n constructor(protected readonly defaultLanguage: Language) {}\n\n public isValid(builders: LocaleBuilders): boolean {\n try {\n this.validate(builders);\n\n return true;\n } catch {\n return false;\n }\n }\n\n public validate(builders: LocaleBuilders): this {\n const defaultBuilder = this.getDefaultBuilder(builders);\n\n if (!defaultBuilder) {\n return this;\n }\n\n const defaultStructure = defaultBuilder.structure();\n\n for (const [language, builder] of builders.entries()) {\n if (language === this.defaultLanguage) {\n continue;\n }\n\n const structure = builder.structure();\n\n for (const [key, locale] of Object.entries(structure)) {\n const expected = defaultStructure[key];\n\n if (!expected) {\n console.warn(\n `Locale \"${language}\" contains unknown key \"${key}\" not found in default locale \"${this.defaultLanguage}\"`\n );\n continue;\n }\n\n if (expected.plural !== locale.plural) {\n throw new Error(\n `Locale \"${language}\" key \"${key}\" must be ${expected.plural ? \"plural\" : \"non-plural\"} like default locale \"${this.defaultLanguage}\"`\n );\n }\n\n if (!_.isEqual(expected.substitutions, locale.substitutions)) {\n throw new Error(\n `Locale \"${language}\" key \"${key}\" substitutions [${locale.substitutions.join(\", \")}] must match default locale \"${this.defaultLanguage}\" substitutions [${expected.substitutions.join(\", \")}]`\n );\n }\n }\n }\n\n return this;\n }\n\n public getDefaultBuilder(builders: LocaleBuilders): LocaleBuilder | undefined {\n if (builders.size === 0) {\n return undefined;\n }\n\n const builder = builders.get(this.defaultLanguage);\n\n if (!builder) {\n throw new Error(\n `Default locale \"${this.defaultLanguage}\" not found in available translations. Available languages: ${[...builders.keys()].join(\", \")}`\n );\n }\n\n return builder;\n }\n}\n"],"mappings":"AAAA,OAAO,OAAO;AAId,MAAO,iCAAiD;AAAA,EACpD,YAA+B,iBAA2B;AAA3B;AAAA,EAA4B;AAAA,EAA5B;AAAA,EAExB,QAAQ,UAAmC;AAC9C,QAAI;AACA,WAAK,SAAS,QAAQ;AAEtB,aAAO;AAAA,IACX,QAAQ;AACJ,aAAO;AAAA,IACX;AAAA,EACJ;AAAA,EAEO,SAAS,UAAgC;AAC5C,UAAM,iBAAiB,KAAK,kBAAkB,QAAQ;AAEtD,QAAI,CAAC,gBAAgB;AACjB,aAAO;AAAA,IACX;AAEA,UAAM,mBAAmB,eAAe,UAAU;AAElD,eAAW,CAAC,UAAU,OAAO,KAAK,SAAS,QAAQ,GAAG;AAClD,UAAI,aAAa,KAAK,iBAAiB;AACnC;AAAA,MACJ;AAEA,YAAM,YAAY,QAAQ,UAAU;AAEpC,iBAAW,CAAC,KAAK,MAAM,KAAK,OAAO,QAAQ,SAAS,GAAG;AACnD,cAAM,WAAW,iBAAiB,GAAG;AAErC,YAAI,CAAC,UAAU;AACX,kBAAQ;AAAA,YACJ,WAAW,QAAQ,2BAA2B,GAAG,kCAAkC,KAAK,eAAe;AAAA,UAC3G;AACA;AAAA,QACJ;AAEA,YAAI,SAAS,WAAW,OAAO,QAAQ;AACnC,gBAAM,IAAI;AAAA,YACN,WAAW,QAAQ,UAAU,GAAG,aAAa,SAAS,SAAS,WAAW,YAAY,yBAAyB,KAAK,eAAe;AAAA,UACvI;AAAA,QACJ;AAEA,YAAI,CAAC,EAAE,QAAQ,SAAS,eAAe,OAAO,aAAa,GAAG;AAC1D,gBAAM,IAAI;AAAA,YACN,WAAW,QAAQ,UAAU,GAAG,oBAAoB,OAAO,cAAc,KAAK,IAAI,CAAC,gCAAgC,KAAK,eAAe,oBAAoB,SAAS,cAAc,KAAK,IAAI,CAAC;AAAA,UAChM;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAAA,EAEO,kBAAkB,UAAqD;AAC1E,QAAI,SAAS,SAAS,GAAG;AACrB,aAAO;AAAA,IACX;AAEA,UAAM,UAAU,SAAS,IAAI,KAAK,eAAe;AAEjD,QAAI,CAAC,SAAS;AACV,YAAM,IAAI;AAAA,QACN,mBAAmB,KAAK,eAAe,+DAA+D,CAAC,GAAG,SAAS,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC;AAAA,MACzI;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AACJ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/builders/locale/LocaleStructureValidator.ts"],"sourcesContent":["import _ from \"lodash\";\n\nimport {Language, LocaleBuilder, LocaleBuilders, LocaleContractValidator} from \"@typing/locale\";\n\nexport default class implements LocaleContractValidator {\n constructor(protected readonly defaultLanguage: Language) {}\n\n public isValid(builders: LocaleBuilders): boolean {\n try {\n this.validate(builders);\n\n return true;\n } catch {\n return false;\n }\n }\n\n public validate(builders: LocaleBuilders): this {\n const defaultBuilder = this.getDefaultBuilder(builders);\n\n if (!defaultBuilder) {\n return this;\n }\n\n const defaultStructure = defaultBuilder.structure();\n\n for (const [language, builder] of builders.entries()) {\n if (language === this.defaultLanguage) {\n continue;\n }\n\n const structure = builder.structure();\n\n for (const [key, expected] of Object.entries(defaultStructure)) {\n if (expected.plural && !Object.hasOwn(structure, key)) {\n throw new Error(\n `Locale \"${language}\" is missing plural key \"${key}\" required by default locale \"${this.defaultLanguage}\"`\n );\n }\n }\n\n for (const [key, locale] of Object.entries(structure)) {\n const expected = defaultStructure[key];\n\n if (!expected) {\n console.warn(\n `Locale \"${language}\" contains unknown key \"${key}\" not found in default locale \"${this.defaultLanguage}\"`\n );\n continue;\n }\n\n if (expected.plural !== locale.plural) {\n throw new Error(\n `Locale \"${language}\" key \"${key}\" must be ${expected.plural ? \"plural\" : \"non-plural\"} like default locale \"${this.defaultLanguage}\"`\n );\n }\n\n if (!_.isEqual(expected.substitutions, locale.substitutions)) {\n throw new Error(\n `Locale \"${language}\" key \"${key}\" substitutions [${locale.substitutions.join(\", \")}] must match default locale \"${this.defaultLanguage}\" substitutions [${expected.substitutions.join(\", \")}]`\n );\n }\n }\n }\n\n return this;\n }\n\n public getDefaultBuilder(builders: LocaleBuilders): LocaleBuilder | undefined {\n if (builders.size === 0) {\n return undefined;\n }\n\n const builder = builders.get(this.defaultLanguage);\n\n if (!builder) {\n throw new Error(\n `Default locale \"${this.defaultLanguage}\" not found in available translations. Available languages: ${[...builders.keys()].join(\", \")}`\n );\n }\n\n return builder;\n }\n}\n"],"mappings":"AAAA,OAAO,OAAO;AAId,MAAO,iCAAiD;AAAA,EACpD,YAA+B,iBAA2B;AAA3B;AAAA,EAA4B;AAAA,EAA5B;AAAA,EAExB,QAAQ,UAAmC;AAC9C,QAAI;AACA,WAAK,SAAS,QAAQ;AAEtB,aAAO;AAAA,IACX,QAAQ;AACJ,aAAO;AAAA,IACX;AAAA,EACJ;AAAA,EAEO,SAAS,UAAgC;AAC5C,UAAM,iBAAiB,KAAK,kBAAkB,QAAQ;AAEtD,QAAI,CAAC,gBAAgB;AACjB,aAAO;AAAA,IACX;AAEA,UAAM,mBAAmB,eAAe,UAAU;AAElD,eAAW,CAAC,UAAU,OAAO,KAAK,SAAS,QAAQ,GAAG;AAClD,UAAI,aAAa,KAAK,iBAAiB;AACnC;AAAA,MACJ;AAEA,YAAM,YAAY,QAAQ,UAAU;AAEpC,iBAAW,CAAC,KAAK,QAAQ,KAAK,OAAO,QAAQ,gBAAgB,GAAG;AAC5D,YAAI,SAAS,UAAU,CAAC,OAAO,OAAO,WAAW,GAAG,GAAG;AACnD,gBAAM,IAAI;AAAA,YACN,WAAW,QAAQ,4BAA4B,GAAG,iCAAiC,KAAK,eAAe;AAAA,UAC3G;AAAA,QACJ;AAAA,MACJ;AAEA,iBAAW,CAAC,KAAK,MAAM,KAAK,OAAO,QAAQ,SAAS,GAAG;AACnD,cAAM,WAAW,iBAAiB,GAAG;AAErC,YAAI,CAAC,UAAU;AACX,kBAAQ;AAAA,YACJ,WAAW,QAAQ,2BAA2B,GAAG,kCAAkC,KAAK,eAAe;AAAA,UAC3G;AACA;AAAA,QACJ;AAEA,YAAI,SAAS,WAAW,OAAO,QAAQ;AACnC,gBAAM,IAAI;AAAA,YACN,WAAW,QAAQ,UAAU,GAAG,aAAa,SAAS,SAAS,WAAW,YAAY,yBAAyB,KAAK,eAAe;AAAA,UACvI;AAAA,QACJ;AAEA,YAAI,CAAC,EAAE,QAAQ,SAAS,eAAe,OAAO,aAAa,GAAG;AAC1D,gBAAM,IAAI;AAAA,YACN,WAAW,QAAQ,UAAU,GAAG,oBAAoB,OAAO,cAAc,KAAK,IAAI,CAAC,gCAAgC,KAAK,eAAe,oBAAoB,SAAS,cAAc,KAAK,IAAI,CAAC;AAAA,UAChM;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAAA,EAEO,kBAAkB,UAAqD;AAC1E,QAAI,SAAS,SAAS,GAAG;AACrB,aAAO;AAAA,IACX;AAEA,UAAM,UAAU,SAAS,IAAI,KAAK,eAAe;AAEjD,QAAI,CAAC,SAAS;AACV,YAAM,IAAI;AAAA,QACN,mBAAmB,KAAK,eAAe,+DAA+D,CAAC,GAAG,SAAS,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC;AAAA,MACzI;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AACJ;","names":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type CspBuilder } from "../csp/index.js";
|
|
2
|
-
import { CoreManifest, Manifest, ManifestAccessibleResource, ManifestAccessibleResources, ManifestBackground, ManifestBuilder, ManifestCommands, ManifestContentScripts, ManifestDependencies, ManifestHostPermissions, ManifestIcons, ManifestIncognito, ManifestOptionalPermissions, ManifestPermissions, ManifestPopup, ManifestSandbox, ManifestSandboxes, ManifestSidebar, ManifestVersion, OptionalManifest } from "../../../types/manifest.js";
|
|
2
|
+
import { CoreManifest, Manifest, ManifestAccessibleResource, ManifestAccessibleResources, ManifestBackground, ManifestBuilder, ManifestCommands, ManifestContentScripts, ManifestDependencies, ManifestHostPermissions, ManifestIcons, ManifestIncognito, ManifestOptionalPermissions, ManifestOptions, ManifestPermissions, ManifestPopup, ManifestSandbox, ManifestSandboxes, ManifestSidebar, ManifestVersion, OptionalManifest } from "../../../types/manifest.js";
|
|
3
3
|
import { CspConfig } from "../../../types/csp.js";
|
|
4
4
|
import { SandboxCspConfig } from "../../../types/sandbox.js";
|
|
5
5
|
import { Browser, BrowserSpecific } from "../../../types/browser.js";
|
|
@@ -27,6 +27,7 @@ export default abstract class<T extends CoreManifest> implements ManifestBuilder
|
|
|
27
27
|
protected background?: ManifestBackground;
|
|
28
28
|
protected popup?: ManifestPopup;
|
|
29
29
|
protected sidebar?: ManifestSidebar;
|
|
30
|
+
protected options?: ManifestOptions;
|
|
30
31
|
protected sandboxes: ManifestSandboxes;
|
|
31
32
|
protected sandboxCsp: CspBuilder<SandboxCspConfig>;
|
|
32
33
|
protected csp: CspBuilder<CspConfig>;
|
|
@@ -73,6 +74,7 @@ export default abstract class<T extends CoreManifest> implements ManifestBuilder
|
|
|
73
74
|
setContentScripts(contentScripts?: ManifestContentScripts): this;
|
|
74
75
|
setPopup(popup?: ManifestPopup): this;
|
|
75
76
|
setSidebar(sidebar?: ManifestSidebar): this;
|
|
77
|
+
setOptions(options?: ManifestOptions): this;
|
|
76
78
|
addSandbox(sandbox: ManifestSandbox): this;
|
|
77
79
|
appendSandboxes(sandboxes: Iterable<ManifestSandbox>): this;
|
|
78
80
|
addSandboxCsp(csp: SandboxCspConfig): this;
|
|
@@ -114,6 +116,7 @@ export default abstract class<T extends CoreManifest> implements ManifestBuilder
|
|
|
114
116
|
protected buildCommands(): Partial<CoreManifest> | undefined;
|
|
115
117
|
protected buildContentScripts(): Partial<CoreManifest> | undefined;
|
|
116
118
|
protected buildSidebar(): Partial<CoreManifest> | undefined;
|
|
119
|
+
protected buildOptions(): Partial<CoreManifest>;
|
|
117
120
|
protected buildBrowserSpecificSettings(): Partial<Manifest> | undefined;
|
|
118
121
|
protected buildRaw(): Partial<Manifest> | undefined;
|
|
119
122
|
protected getSandboxes(): string[];
|
|
@@ -31,6 +31,7 @@ class ManifestBase_default {
|
|
|
31
31
|
background;
|
|
32
32
|
popup;
|
|
33
33
|
sidebar;
|
|
34
|
+
options;
|
|
34
35
|
sandboxes = /* @__PURE__ */ new Set();
|
|
35
36
|
sandboxCsp = new SandboxCsp();
|
|
36
37
|
csp = new Csp();
|
|
@@ -165,6 +166,10 @@ class ManifestBase_default {
|
|
|
165
166
|
this.sidebar = sidebar;
|
|
166
167
|
return this;
|
|
167
168
|
}
|
|
169
|
+
setOptions(options) {
|
|
170
|
+
this.options = options;
|
|
171
|
+
return this;
|
|
172
|
+
}
|
|
168
173
|
addSandbox(sandbox) {
|
|
169
174
|
this.sandboxes.add(sandbox);
|
|
170
175
|
return this;
|
|
@@ -290,6 +295,7 @@ class ManifestBase_default {
|
|
|
290
295
|
this.buildCommands(),
|
|
291
296
|
this.buildAction(),
|
|
292
297
|
this.buildSidebar(),
|
|
298
|
+
this.buildOptions(),
|
|
293
299
|
this.buildContentScripts(),
|
|
294
300
|
this.buildPermissions(),
|
|
295
301
|
this.buildOptionalPermissions(),
|
|
@@ -462,6 +468,17 @@ class ManifestBase_default {
|
|
|
462
468
|
};
|
|
463
469
|
return SidebarAlternativeBrowsers.has(this.browser) ? { sidebar_action: { ...commonProps, default_panel: path } } : { side_panel: { ...commonProps, default_path: path } };
|
|
464
470
|
}
|
|
471
|
+
buildOptions() {
|
|
472
|
+
if (this.options) {
|
|
473
|
+
return {
|
|
474
|
+
options_ui: {
|
|
475
|
+
page: this.options.path,
|
|
476
|
+
open_in_tab: this.options.openInTab ?? true
|
|
477
|
+
}
|
|
478
|
+
};
|
|
479
|
+
}
|
|
480
|
+
return _.pick(this.combinedRaws, ["options_ui", "options_page"]);
|
|
481
|
+
}
|
|
465
482
|
buildBrowserSpecificSettings() {
|
|
466
483
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
467
484
|
const optionalSettings = this.combinedRaws.browser_specific_settings;
|
|
@@ -529,6 +546,8 @@ class ManifestBase_default {
|
|
|
529
546
|
commands,
|
|
530
547
|
action,
|
|
531
548
|
sidebar,
|
|
549
|
+
options_ui,
|
|
550
|
+
options_page,
|
|
532
551
|
content_scripts,
|
|
533
552
|
permissions,
|
|
534
553
|
optional_permissions,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/cli/builders/manifest/ManifestBase.ts"],"sourcesContent":["import _ from \"lodash\";\n\nimport {Csp, type CspBuilder, SandboxCsp} from \"../csp\";\n\nimport {mergeWebAccessibleResources, normalizeDataCollectionPermissions} from \"./utils\";\n\nimport {\n CoreManifest,\n Manifest,\n ManifestAccessibleResource,\n ManifestAccessibleResources,\n ManifestBackground,\n ManifestBuilder,\n ManifestCommands,\n ManifestContentScripts,\n ManifestDependencies,\n ManifestHostPermissions,\n ManifestIcons,\n ManifestIncognito,\n ManifestOptionalPermissions,\n ManifestPermissions,\n ManifestPopup,\n ManifestSandbox,\n ManifestSandboxes,\n ManifestSidebar,\n ManifestVersion,\n OptionalManifest,\n} from \"@typing/manifest\";\nimport {CspConfig} from \"@typing/csp\";\nimport {SandboxCspConfig} from \"@typing/sandbox\";\nimport {Browser, BrowserSpecific} from \"@typing/browser\";\nimport {Language} from \"@typing/locale\";\nimport {CommandExecuteActionName} from \"@typing/command\";\nimport {DefaultIconGroupName} from \"@typing/icon\";\nimport {SidebarAlternativeBrowsers} from \"@typing/sidebar\";\nimport {ContentScriptMatches} from \"@typing/content\";\n\ntype ManifestV3 = chrome.runtime.ManifestV3;\ntype ManifestPermission = chrome.runtime.ManifestPermission;\ntype ManifestOptionalPermission = chrome.runtime.ManifestOptionalPermission;\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;\n protected author?: string;\n protected homepage?: string;\n protected shortName?: string;\n protected description?: string;\n protected minimumVersion?: string;\n protected version?: string;\n protected icon?: string;\n protected incognito?: ManifestIncognito;\n protected specific?: BrowserSpecific;\n protected locale?: Language;\n protected icons: ManifestIcons = new Map();\n protected background?: ManifestBackground;\n protected popup?: ManifestPopup;\n protected sidebar?: ManifestSidebar;\n protected sandboxes: ManifestSandboxes = new Set();\n protected sandboxCsp: CspBuilder<SandboxCspConfig> = new SandboxCsp();\n protected csp: CspBuilder<CspConfig> = new Csp();\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 optionalPermissions: ManifestOptionalPermissions = new Set();\n protected hostPermissions: ManifestHostPermissions = new Set();\n protected optionalHostPermissions: ManifestHostPermissions = new Set();\n protected accessibleResources: ManifestAccessibleResources = new Set();\n\n protected raws: Set<OptionalManifest> = new Set();\n protected mergedRaws?: OptionalManifest;\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 buildOptionalPermissions(): Partial<T> | undefined;\n\n protected abstract buildHostPermissions(): Partial<T> | undefined;\n\n protected abstract buildOptionalHostPermissions(): Partial<T> | undefined;\n\n protected abstract buildWebAccessibleResources(): Partial<T> | undefined;\n\n protected abstract buildSandbox(): Partial<T> | undefined;\n\n protected abstract buildCsp(): Partial<T> | undefined;\n\n protected get combinedRaws(): OptionalManifest {\n return (this.mergedRaws ??= Array.from(this.raws).reduce((result, raw) => {\n return _.mergeWith(result, raw, (objValue, srcValue) => {\n if (Array.isArray(objValue) && Array.isArray(srcValue)) {\n return objValue.concat(srcValue);\n }\n });\n }, {}));\n }\n\n protected get combinedPermissions(): ManifestPermissions {\n const result = new Set(this.permissions);\n\n if (this.combinedRaws.permissions) {\n for (const permission of this.combinedRaws.permissions) {\n result.add(permission);\n }\n }\n\n return result;\n }\n\n protected get combinedOptionalPermissions(): ManifestOptionalPermissions {\n const result = new Set(this.optionalPermissions);\n\n if (this.combinedRaws.optional_permissions) {\n for (const permission of this.combinedRaws.optional_permissions) {\n result.add(permission);\n }\n }\n\n return result;\n }\n\n protected get combinedHostPermissions(): ManifestHostPermissions {\n const result = new Set(this.hostPermissions);\n\n if (this.combinedRaws.host_permissions) {\n for (const permission of this.combinedRaws.host_permissions) {\n result.add(permission);\n }\n }\n\n return result;\n }\n\n protected get combinedOptionalHostPermissions(): ManifestHostPermissions {\n const result = new Set(this.optionalHostPermissions);\n if (this.combinedRaws.optional_host_permissions) {\n for (const permission of this.combinedRaws.optional_host_permissions) {\n result.add(permission);\n }\n }\n return result;\n }\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 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;\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 setSpecific(settings?: BrowserSpecific): this {\n this.specific = settings;\n\n return this;\n }\n\n public mergeSpecific(settings: BrowserSpecific): this {\n this.specific = _.mergeWith({}, this.specific, settings, (objValue, srcValue) => {\n if (_.isArray(objValue) && _.isArray(srcValue)) {\n return _.union(objValue, srcValue);\n }\n });\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 addSandbox(sandbox: ManifestSandbox): this {\n this.sandboxes.add(sandbox);\n\n return this;\n }\n\n public appendSandboxes(sandboxes: Iterable<ManifestSandbox>): this {\n for (const sandbox of sandboxes) {\n this.addSandbox(sandbox);\n }\n\n return this;\n }\n\n public addSandboxCsp(csp: SandboxCspConfig): this {\n this.sandboxCsp.add(csp);\n\n return this;\n }\n\n public appendSandboxCsp(csps: Iterable<SandboxCspConfig>): this {\n for (const csp of csps) {\n this.addSandboxCsp(csp);\n }\n\n return this;\n }\n\n public addCsp(csp: CspConfig): this {\n this.csp.add(csp);\n\n return this;\n }\n\n public appendCsp(csps: Iterable<CspConfig>): this {\n for (const csp of csps) {\n this.addCsp(csp);\n }\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 addOptionalPermission(permission: ManifestOptionalPermission): this {\n this.optionalPermissions.add(permission);\n\n return this;\n }\n\n public setOptionalPermissions(permissions: ManifestOptionalPermissions): this {\n this.optionalPermissions = permissions;\n\n return this;\n }\n\n public appendOptionalPermissions(permissions: ManifestOptionalPermissions): this {\n for (const permission of permissions) {\n this.optionalPermissions.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 addOptionalHostPermission(permission: string): this {\n this.optionalHostPermissions.add(permission);\n\n return this;\n }\n\n public setOptionalHostPermissions(permissions: ManifestHostPermissions): this {\n this.optionalHostPermissions = permissions;\n\n return this;\n }\n\n public appendOptionalHostPermissions(permissions: ManifestHostPermissions): this {\n for (const permission of permissions) {\n this.optionalHostPermissions.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 setAccessibleResource(accessibleResources: ManifestAccessibleResources): this {\n this.accessibleResources = accessibleResources;\n\n return this;\n }\n\n public raw(manifest: OptionalManifest): this {\n this.raws.add(manifest);\n\n return this;\n }\n\n public build(): T {\n return this.merge<Manifest>(\n this.buildName(),\n this.buildShortName(),\n this.buildDescription(),\n this.buildVersion(),\n this.buildManifestVersion(),\n this.buildMinimumChromeVersion(),\n this.buildAuthor(),\n this.buildHomepageUrl(),\n this.buildIncognito(),\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.buildOptionalPermissions(),\n this.buildHostPermissions(),\n this.buildOptionalHostPermissions(),\n this.buildWebAccessibleResources(),\n this.buildSandbox(),\n this.buildCsp(),\n this.buildBrowserSpecificSettings(),\n this.buildRaw()\n ) as T;\n }\n\n public get(): T {\n return this.build();\n }\n\n private merge<T extends CoreManifest>(...sources: Array<Partial<T> | undefined>): T {\n sources = sources.filter(source => source !== undefined);\n\n if (sources.length === 0) {\n throw new ManifestError(\"No sources provided for manifest merging\");\n }\n\n const result = {} as T;\n\n for (const source of sources) {\n Object.assign(result, source);\n }\n\n return result;\n }\n\n protected buildName(): Partial<CoreManifest> {\n return {name: this.name || this.combinedRaws.name || \"__MSG_app_name__\"};\n }\n\n protected buildShortName(): Partial<CoreManifest> | undefined {\n const shortName = this.shortName || this.combinedRaws.short_name;\n return shortName ? {short_name: shortName} : undefined;\n }\n\n protected buildDescription(): Partial<CoreManifest> | undefined {\n const description = this.description || this.combinedRaws.description;\n return description ? {description} : undefined;\n }\n\n protected buildVersion(): Partial<CoreManifest> {\n return {version: this.version || this.combinedRaws.version || \"0.0.0\"};\n }\n\n protected buildManifestVersion(): Partial<CoreManifest> {\n return {manifest_version: this.getManifestVersion()};\n }\n\n protected buildMinimumChromeVersion(): Partial<CoreManifest> | undefined {\n const version = this.minimumVersion || this.combinedRaws.minimum_chrome_version;\n return version ? {minimum_chrome_version: version} : undefined;\n }\n\n protected buildAuthor(): Partial<CoreManifest> | undefined {\n const author = this.author || this.combinedRaws.author;\n return author ? {author} : undefined;\n }\n\n protected buildHomepageUrl(): Partial<CoreManifest> | undefined {\n const homepage = this.homepage || this.combinedRaws.homepage_url;\n return homepage ? {homepage_url: homepage} : undefined;\n }\n\n protected buildIncognito(): Partial<CoreManifest> | undefined {\n const incognito = this.incognito || this.combinedRaws.incognito;\n return incognito !== undefined ? {incognito} : undefined;\n }\n\n protected buildLocale(): Partial<CoreManifest> | undefined {\n const defaultLocale = this.locale || this.combinedRaws.default_locale;\n return defaultLocale ? {default_locale: defaultLocale} : undefined;\n }\n\n protected buildIcons(): Partial<CoreManifest> | undefined {\n const icons = {\n ...this.combinedRaws.icons,\n ...this.getIconsByName(this.icon),\n };\n return Object.keys(icons).length ? {icons} : undefined;\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 const internalCommands = Array.from(this.commands).reduce(\n (commands, command) => {\n return {\n ...commands,\n [command.name]: {\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 },\n {} as CoreManifest[\"commands\"]\n );\n\n const commands = _.merge(this.combinedRaws.commands, internalCommands);\n\n if (Object.keys(commands).length) return {commands};\n }\n\n protected buildContentScripts(): Partial<CoreManifest> | undefined {\n const contentScripts: ManifestV3[\"content_scripts\"] = [];\n\n if (this.combinedRaws.content_scripts) {\n contentScripts.push(...this.combinedRaws.content_scripts);\n }\n\n if (this.contentScripts.size > 0) {\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\n return contentScripts.length ? {content_scripts: contentScripts} : undefined;\n }\n\n protected buildSidebar(): Partial<CoreManifest> | undefined {\n if (!this.sidebar) {\n const sidebarAction = this.combinedRaws.sidebar_action;\n const sidePanel = this.combinedRaws.side_panel;\n\n if (SidebarAlternativeBrowsers.has(this.browser)) {\n if (sidebarAction) return {sidebar_action: sidebarAction};\n } else {\n if (sidePanel) return {side_panel: sidePanel};\n }\n\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 buildBrowserSpecificSettings(): Partial<Manifest> | undefined {\n const optionalSettings = this.combinedRaws.browser_specific_settings;\n const {safari, gecko, geckoAndroid} = this.specific || {};\n\n if (this.browser === Browser.Firefox) {\n const id = gecko?.id || optionalSettings?.gecko?.id;\n const updateUrl = gecko?.updateUrl || optionalSettings?.gecko?.update_url;\n const geckoMinVersion = gecko?.strictMinVersion || optionalSettings?.gecko?.strict_min_version;\n const geckoMaxVersion = gecko?.strictMaxVersion || optionalSettings?.gecko?.strict_max_version;\n const dataCollectionPermissions = _.mergeWith(\n optionalSettings?.gecko?.data_collection_permissions,\n gecko?.dataCollectionPermissions,\n (objValue, srcValue) => {\n if (Array.isArray(objValue) && Array.isArray(srcValue)) {\n return objValue.concat(srcValue);\n }\n }\n );\n\n const androidMinVersion =\n geckoAndroid?.strictMinVersion || optionalSettings?.gecko_android?.strict_min_version;\n const androidMaxVersion =\n geckoAndroid?.strictMaxVersion || optionalSettings?.gecko_android?.strict_max_version;\n\n return {\n browser_specific_settings: {\n gecko: {\n id,\n update_url: updateUrl,\n strict_min_version: geckoMinVersion,\n strict_max_version: geckoMaxVersion,\n data_collection_permissions: normalizeDataCollectionPermissions(dataCollectionPermissions),\n },\n gecko_android:\n _.isEmpty(androidMinVersion) && _.isEmpty(androidMaxVersion)\n ? undefined\n : {\n strict_min_version: androidMinVersion,\n strict_max_version: androidMaxVersion,\n },\n },\n };\n } else if (this.browser === Browser.Safari) {\n const minVersion = safari?.strictMinVersion || optionalSettings?.safari?.strict_min_version;\n const maxVersion = safari?.strictMaxVersion || optionalSettings?.safari?.strict_max_version;\n\n if (_.isEmpty(minVersion) && _.isEmpty(maxVersion)) {\n return;\n }\n\n return {\n browser_specific_settings: {\n safari: {\n strict_min_version: minVersion,\n strict_max_version: maxVersion,\n },\n },\n };\n }\n }\n\n protected buildRaw(): Partial<Manifest> | undefined {\n const {\n name,\n short_name,\n description,\n version,\n minimum_chrome_version,\n author,\n homepage_url,\n incognito,\n default_locale,\n icons,\n background,\n commands,\n action,\n sidebar,\n content_scripts,\n permissions,\n optional_permissions,\n host_permissions,\n optional_host_permissions,\n web_accessible_resources,\n sandbox,\n content_security_policy,\n browser_specific_settings,\n ...other\n } = this.combinedRaws;\n\n return other;\n }\n\n protected getSandboxes(): string[] {\n const sandboxes = new Set<string>();\n const rawSandbox = this.combinedRaws.sandbox as {pages?: string[]} | undefined;\n\n for (const sandbox of rawSandbox?.pages || []) {\n sandboxes.add(sandbox);\n }\n\n for (const sandbox of this.sandboxes) {\n sandboxes.add(sandbox);\n }\n\n return Array.from(sandboxes);\n }\n\n protected hasExecuteActionCommand(): boolean {\n const optionalCommands = this.combinedRaws.commands;\n\n const inInternalCommands =\n this.commands.size > 0 && Array.from(this.commands).some(({name}) => name === CommandExecuteActionName);\n const inOptionalCommands = optionalCommands && Object.keys(optionalCommands).includes(CommandExecuteActionName);\n return inInternalCommands || inOptionalCommands;\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 getWebAccessibleResources(): ManifestAccessibleResource[] {\n const resources: ManifestAccessibleResource[] = [...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 (this.combinedRaws.web_accessible_resources) {\n resources.push(...this.combinedRaws.web_accessible_resources);\n }\n\n return mergeWebAccessibleResources(resources);\n }\n}\n"],"mappings":"AAAA,OAAO,OAAO;AAEd,SAAQ,KAAsB,kBAAiB;AAE/C,SAAQ,6BAA6B,0CAAyC;AA0B9E,SAAQ,eAA+B;AAEvC,SAAQ,gCAA+B;AACvC,SAAQ,4BAA2B;AACnC,SAAQ,kCAAiC;AACzC,SAAQ,4BAA2B;AAO5B,MAAM,sBAAsB,MAAM;AAAA,EAC9B,YAAY,SAAiB;AAChC,UAAM,eAAe,OAAO;AAAA,EAChC;AACJ;AAEA,MAAO,qBAA6E;AAAA,EAyGtE,YAA+B,UAAmB,QAAQ,QAAQ;AAAnC;AAAA,EAAoC;AAAA,EAApC;AAAA,EAxG/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAuB,oBAAI,IAAI;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAA+B,oBAAI,IAAI;AAAA,EACvC,aAA2C,IAAI,WAAW;AAAA,EAC1D,MAA6B,IAAI,IAAI;AAAA,EACrC,WAA6B,oBAAI,IAAI;AAAA,EACrC,iBAAyC,oBAAI,IAAI;AAAA,EACjD,eAAqC,oBAAI,IAAI;AAAA,EAC7C,cAAmC,oBAAI,IAAI;AAAA,EAC3C,sBAAmD,oBAAI,IAAI;AAAA,EAC3D,kBAA2C,oBAAI,IAAI;AAAA,EACnD,0BAAmD,oBAAI,IAAI;AAAA,EAC3D,sBAAmD,oBAAI,IAAI;AAAA,EAE3D,OAA8B,oBAAI,IAAI;AAAA,EACtC;AAAA,EAoBV,IAAc,eAAiC;AAC3C,WAAQ,KAAK,eAAL,KAAK,aAAe,MAAM,KAAK,KAAK,IAAI,EAAE,OAAO,CAAC,QAAQ,QAAQ;AACtE,aAAO,EAAE,UAAU,QAAQ,KAAK,CAAC,UAAU,aAAa;AACpD,YAAI,MAAM,QAAQ,QAAQ,KAAK,MAAM,QAAQ,QAAQ,GAAG;AACpD,iBAAO,SAAS,OAAO,QAAQ;AAAA,QACnC;AAAA,MACJ,CAAC;AAAA,IACL,GAAG,CAAC,CAAC;AAAA,EACT;AAAA,EAEA,IAAc,sBAA2C;AACrD,UAAM,SAAS,IAAI,IAAI,KAAK,WAAW;AAEvC,QAAI,KAAK,aAAa,aAAa;AAC/B,iBAAW,cAAc,KAAK,aAAa,aAAa;AACpD,eAAO,IAAI,UAAU;AAAA,MACzB;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,IAAc,8BAA2D;AACrE,UAAM,SAAS,IAAI,IAAI,KAAK,mBAAmB;AAE/C,QAAI,KAAK,aAAa,sBAAsB;AACxC,iBAAW,cAAc,KAAK,aAAa,sBAAsB;AAC7D,eAAO,IAAI,UAAU;AAAA,MACzB;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,IAAc,0BAAmD;AAC7D,UAAM,SAAS,IAAI,IAAI,KAAK,eAAe;AAE3C,QAAI,KAAK,aAAa,kBAAkB;AACpC,iBAAW,cAAc,KAAK,aAAa,kBAAkB;AACzD,eAAO,IAAI,UAAU;AAAA,MACzB;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,IAAc,kCAA2D;AACrE,UAAM,SAAS,IAAI,IAAI,KAAK,uBAAuB;AACnD,QAAI,KAAK,aAAa,2BAA2B;AAC7C,iBAAW,cAAc,KAAK,aAAa,2BAA2B;AAClE,eAAO,IAAI,UAAU;AAAA,MACzB;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EAIO,UAAU,QAAuB;AACpC,SAAK,SAAS;AAEd,WAAO;AAAA,EACX;AAAA,EAEO,YAAY,UAAyB;AACxC,SAAK,WAAW;AAEhB,WAAO;AAAA,EACX;AAAA,EAEO,QAAQ,MAAoB;AAC/B,SAAK,OAAO;AAEZ,WAAO;AAAA,EACX;AAAA,EAEO,aAAa,WAA0B;AAC1C,SAAK,YAAY;AAEjB,WAAO;AAAA,EACX;AAAA,EAEO,eAAe,aAA4B;AAC9C,SAAK,cAAc;AAEnB,WAAO;AAAA,EACX;AAAA,EAEO,WAAW,SAAwB;AACtC,SAAK,UAAU;AAEf,WAAO;AAAA,EACX;AAAA,EAEO,kBAAkB,gBAA+B;AACpD,SAAK,iBAAiB;AAEtB,WAAO;AAAA,EACX;AAAA,EAEO,UAAU,MAAuB;AACpC,SAAK,SAAS;AAEd,WAAO;AAAA,EACX;AAAA,EAEO,aAAa,WAAqC;AACrD,SAAK,YAAY;AAEjB,WAAO;AAAA,EACX;AAAA,EAEO,YAAY,UAAkC;AACjD,SAAK,WAAW;AAEhB,WAAO;AAAA,EACX;AAAA,EAEO,cAAc,UAAiC;AAClD,SAAK,WAAW,EAAE,UAAU,CAAC,GAAG,KAAK,UAAU,UAAU,CAAC,UAAU,aAAa;AAC7E,UAAI,EAAE,QAAQ,QAAQ,KAAK,EAAE,QAAQ,QAAQ,GAAG;AAC5C,eAAO,EAAE,MAAM,UAAU,QAAQ;AAAA,MACrC;AAAA,IACJ,CAAC;AAED,WAAO;AAAA,EACX;AAAA,EAEO,SAAS,OAA6B;AACzC,SAAK,QAAQ,SAAS,oBAAI,IAAI;AAE9B,WAAO;AAAA,EACX;AAAA,EAEO,QAAQ,MAAqB;AAChC,SAAK,OAAO;AAEZ,WAAO;AAAA,EACX;AAAA,EAEO,cAAc,YAAuC;AACxD,SAAK,aAAa;AAElB,WAAO;AAAA,EACX;AAAA,EAEO,YAAY,UAAmC;AAClD,SAAK,WAAW,YAAY,oBAAI,IAAI;AAEpC,WAAO;AAAA,EACX;AAAA,EAEO,kBAAkB,gBAA+C;AACpE,SAAK,iBAAiB,kBAAkB,oBAAI,IAAI;AAEhD,WAAO;AAAA,EACX;AAAA,EAEO,SAAS,OAA6B;AACzC,SAAK,QAAQ;AAEb,WAAO;AAAA,EACX;AAAA,EAEO,WAAW,SAAiC;AAC/C,SAAK,UAAU;AAEf,WAAO;AAAA,EACX;AAAA,EAEO,WAAW,SAAgC;AAC9C,SAAK,UAAU,IAAI,OAAO;AAE1B,WAAO;AAAA,EACX;AAAA,EAEO,gBAAgB,WAA4C;AAC/D,eAAW,WAAW,WAAW;AAC7B,WAAK,WAAW,OAAO;AAAA,IAC3B;AAEA,WAAO;AAAA,EACX;AAAA,EAEO,cAAc,KAA6B;AAC9C,SAAK,WAAW,IAAI,GAAG;AAEvB,WAAO;AAAA,EACX;AAAA,EAEO,iBAAiB,MAAwC;AAC5D,eAAW,OAAO,MAAM;AACpB,WAAK,cAAc,GAAG;AAAA,IAC1B;AAEA,WAAO;AAAA,EACX;AAAA,EAEO,OAAO,KAAsB;AAChC,SAAK,IAAI,IAAI,GAAG;AAEhB,WAAO;AAAA,EACX;AAAA,EAEO,UAAU,MAAiC;AAC9C,eAAW,OAAO,MAAM;AACpB,WAAK,OAAO,GAAG;AAAA,IACnB;AAEA,WAAO;AAAA,EACX;AAAA,EAEO,gBAAgB,cAA0C;AAC7D,SAAK,eAAe;AAEpB,WAAO;AAAA,EACX;AAAA,EAEO,cAAc,YAAsC;AACvD,SAAK,YAAY,IAAI,UAAU;AAE/B,WAAO;AAAA,EACX;AAAA,EAEO,eAAe,aAAwC;AAC1D,SAAK,cAAc;AAEnB,WAAO;AAAA,EACX;AAAA,EAEO,kBAAkB,aAAwC;AAC7D,eAAW,cAAc,aAAa;AAClC,WAAK,YAAY,IAAI,UAAU;AAAA,IACnC;AAEA,WAAO;AAAA,EACX;AAAA,EAEO,sBAAsB,YAA8C;AACvE,SAAK,oBAAoB,IAAI,UAAU;AAEvC,WAAO;AAAA,EACX;AAAA,EAEO,uBAAuB,aAAgD;AAC1E,SAAK,sBAAsB;AAE3B,WAAO;AAAA,EACX;AAAA,EAEO,0BAA0B,aAAgD;AAC7E,eAAW,cAAc,aAAa;AAClC,WAAK,oBAAoB,IAAI,UAAU;AAAA,IAC3C;AAEA,WAAO;AAAA,EACX;AAAA,EAEO,kBAAkB,YAA0B;AAC/C,SAAK,gBAAgB,IAAI,UAAU;AAEnC,WAAO;AAAA,EACX;AAAA,EAEO,mBAAmB,aAA4C;AAClE,SAAK,kBAAkB;AAEvB,WAAO;AAAA,EACX;AAAA,EAEO,sBAAsB,aAA4C;AACrE,eAAW,cAAc,aAAa;AAClC,WAAK,gBAAgB,IAAI,UAAU;AAAA,IACvC;AAEA,WAAO;AAAA,EACX;AAAA,EAEO,0BAA0B,YAA0B;AACvD,SAAK,wBAAwB,IAAI,UAAU;AAE3C,WAAO;AAAA,EACX;AAAA,EAEO,2BAA2B,aAA4C;AAC1E,SAAK,0BAA0B;AAE/B,WAAO;AAAA,EACX;AAAA,EAEO,8BAA8B,aAA4C;AAC7E,eAAW,cAAc,aAAa;AAClC,WAAK,wBAAwB,IAAI,UAAU;AAAA,IAC/C;AAEA,WAAO;AAAA,EACX;AAAA,EAEO,sBAAsB,oBAAsD;AAC/E,SAAK,oBAAoB,IAAI,kBAAkB;AAE/C,WAAO;AAAA,EACX;AAAA,EAEO,0BAA0B,qBAAwD;AACrF,eAAW,sBAAsB,qBAAqB;AAClD,WAAK,oBAAoB,IAAI,kBAAkB;AAAA,IACnD;AAEA,WAAO;AAAA,EACX;AAAA,EAEO,sBAAsB,qBAAwD;AACjF,SAAK,sBAAsB;AAE3B,WAAO;AAAA,EACX;AAAA,EAEO,IAAI,UAAkC;AACzC,SAAK,KAAK,IAAI,QAAQ;AAEtB,WAAO;AAAA,EACX;AAAA,EAEO,QAAW;AACd,WAAO,KAAK;AAAA,MACR,KAAK,UAAU;AAAA,MACf,KAAK,eAAe;AAAA,MACpB,KAAK,iBAAiB;AAAA,MACtB,KAAK,aAAa;AAAA,MAClB,KAAK,qBAAqB;AAAA,MAC1B,KAAK,0BAA0B;AAAA,MAC/B,KAAK,YAAY;AAAA,MACjB,KAAK,iBAAiB;AAAA,MACtB,KAAK,eAAe;AAAA,MACpB,KAAK,YAAY;AAAA,MACjB,KAAK,WAAW;AAAA,MAChB,KAAK,gBAAgB;AAAA,MACrB,KAAK,cAAc;AAAA,MACnB,KAAK,YAAY;AAAA,MACjB,KAAK,aAAa;AAAA,MAClB,KAAK,oBAAoB;AAAA,MACzB,KAAK,iBAAiB;AAAA,MACtB,KAAK,yBAAyB;AAAA,MAC9B,KAAK,qBAAqB;AAAA,MAC1B,KAAK,6BAA6B;AAAA,MAClC,KAAK,4BAA4B;AAAA,MACjC,KAAK,aAAa;AAAA,MAClB,KAAK,SAAS;AAAA,MACd,KAAK,6BAA6B;AAAA,MAClC,KAAK,SAAS;AAAA,IAClB;AAAA,EACJ;AAAA,EAEO,MAAS;AACZ,WAAO,KAAK,MAAM;AAAA,EACtB;AAAA,EAEQ,SAAiC,SAA2C;AAChF,cAAU,QAAQ,OAAO,YAAU,WAAW,MAAS;AAEvD,QAAI,QAAQ,WAAW,GAAG;AACtB,YAAM,IAAI,cAAc,0CAA0C;AAAA,IACtE;AAEA,UAAM,SAAS,CAAC;AAEhB,eAAW,UAAU,SAAS;AAC1B,aAAO,OAAO,QAAQ,MAAM;AAAA,IAChC;AAEA,WAAO;AAAA,EACX;AAAA,EAEU,YAAmC;AACzC,WAAO,EAAC,MAAM,KAAK,QAAQ,KAAK,aAAa,QAAQ,mBAAkB;AAAA,EAC3E;AAAA,EAEU,iBAAoD;AAC1D,UAAM,YAAY,KAAK,aAAa,KAAK,aAAa;AACtD,WAAO,YAAY,EAAC,YAAY,UAAS,IAAI;AAAA,EACjD;AAAA,EAEU,mBAAsD;AAC5D,UAAM,cAAc,KAAK,eAAe,KAAK,aAAa;AAC1D,WAAO,cAAc,EAAC,YAAW,IAAI;AAAA,EACzC;AAAA,EAEU,eAAsC;AAC5C,WAAO,EAAC,SAAS,KAAK,WAAW,KAAK,aAAa,WAAW,QAAO;AAAA,EACzE;AAAA,EAEU,uBAA8C;AACpD,WAAO,EAAC,kBAAkB,KAAK,mBAAmB,EAAC;AAAA,EACvD;AAAA,EAEU,4BAA+D;AACrE,UAAM,UAAU,KAAK,kBAAkB,KAAK,aAAa;AACzD,WAAO,UAAU,EAAC,wBAAwB,QAAO,IAAI;AAAA,EACzD;AAAA,EAEU,cAAiD;AACvD,UAAM,SAAS,KAAK,UAAU,KAAK,aAAa;AAChD,WAAO,SAAS,EAAC,OAAM,IAAI;AAAA,EAC/B;AAAA,EAEU,mBAAsD;AAC5D,UAAM,WAAW,KAAK,YAAY,KAAK,aAAa;AACpD,WAAO,WAAW,EAAC,cAAc,SAAQ,IAAI;AAAA,EACjD;AAAA,EAEU,iBAAoD;AAC1D,UAAM,YAAY,KAAK,aAAa,KAAK,aAAa;AACtD,WAAO,cAAc,SAAY,EAAC,UAAS,IAAI;AAAA,EACnD;AAAA,EAEU,cAAiD;AACvD,UAAM,gBAAgB,KAAK,UAAU,KAAK,aAAa;AACvD,WAAO,gBAAgB,EAAC,gBAAgB,cAAa,IAAI;AAAA,EAC7D;AAAA,EAEU,aAAgD;AACtD,UAAM,QAAQ;AAAA,MACV,GAAG,KAAK,aAAa;AAAA,MACrB,GAAG,KAAK,eAAe,KAAK,IAAI;AAAA,IACpC;AACA,WAAO,OAAO,KAAK,KAAK,EAAE,SAAS,EAAC,MAAK,IAAI;AAAA,EACjD;AAAA,EAEU,kBAAqD;AAC3D,QAAI,KAAK,YAAY;AACjB,YAAM,EAAC,OAAO,WAAU,IAAI,KAAK;AAEjC,YAAM,eAAe,KAAK,aAAa,IAAI,KAAK;AAEhD,UAAI,CAAC,cAAc;AACf,cAAM,IAAI,cAAc,qBAAqB,KAAK,6BAA6B;AAAA,MACnF;AAEA,UAAI,aAAa,GAAG,SAAS,GAAG;AAC5B,cAAM,IAAI,cAAc,qBAAqB,KAAK,uBAAuB;AAAA,MAC7E;AAEA,YAAM,UAAU,MAAM,KAAK,aAAa,EAAE;AAE1C,aAAO,EAAC,YAAY,EAAC,SAAS,YAAY,cAAc,OAAS,EAAC;AAAA,IACtE;AAAA,EACJ;AAAA,EAEU,gBAAmD;AACzD,UAAM,mBAAmB,MAAM,KAAK,KAAK,QAAQ,EAAE;AAAA,MAC/C,CAACA,WAAU,YAAY;AACnB,eAAO;AAAA,UACH,GAAGA;AAAA,UACH,CAAC,QAAQ,IAAI,GAAG;AAAA,YACZ,eAAe;AAAA,cACX,SAAS,mCAAS;AAAA,cAClB,SAAS,mCAAS;AAAA,cAClB,KAAK,mCAAS;AAAA,cACd,UAAU,mCAAS;AAAA,cACnB,OAAO,mCAAS;AAAA,YACpB;AAAA,YACA,cACI,mCAAS,iBACR,QAAQ,SAAS,2BAA2B,SAAY,QAAQ;AAAA,YACrE,QAAQ,mCAAS;AAAA,UACrB;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,CAAC;AAAA,IACL;AAEA,UAAM,WAAW,EAAE,MAAM,KAAK,aAAa,UAAU,gBAAgB;AAErE,QAAI,OAAO,KAAK,QAAQ,EAAE,OAAQ,QAAO,EAAC,SAAQ;AAAA,EACtD;AAAA,EAEU,sBAAyD;AAC/D,UAAM,iBAAgD,CAAC;AAEvD,QAAI,KAAK,aAAa,iBAAiB;AACnC,qBAAe,KAAK,GAAG,KAAK,aAAa,eAAe;AAAA,IAC5D;AAEA,QAAI,KAAK,eAAe,OAAO,GAAG;AAC9B,iBAAW,UAAU,KAAK,eAAe,OAAO,GAAG;AAC/C,cAAM;AAAA,UACF;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI;AAEJ,cAAM,eAAe,KAAK,aAAa,IAAI,KAAK;AAEhD,YAAI,CAAC,cAAc;AACf,gBAAM,IAAI,cAAc,yBAAyB,KAAK,6BAA6B;AAAA,QACvF;AAEA,cAAM,KAAK,MAAM,KAAK,aAAa,EAAE;AACrC,cAAM,MAAM,MAAM,KAAK,aAAa,GAAG;AAEvC,YAAI,GAAG,WAAW,KAAK,IAAI,WAAW,GAAG;AACrC,gBAAM,IAAI,cAAc,mCAAmC,KAAK,6BAA6B;AAAA,QACjG;AAEA,uBAAe,KAAK;AAAA,UAChB;AAAA,UACA,iBAAiB;AAAA,UACjB,IAAI,GAAG,SAAS,IAAI,KAAK;AAAA,UACzB,KAAK,IAAI,SAAS,IAAI,MAAM;AAAA,UAC5B,YAAY;AAAA,UACZ,QAAQ;AAAA,UACR,eAAe;AAAA,UACf,eAAe;AAAA,UACf,mBAAmB;AAAA;AAAA,UAEnB,0BAA0B;AAAA,UAC1B;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ;AAEA,WAAO,eAAe,SAAS,EAAC,iBAAiB,eAAc,IAAI;AAAA,EACvE;AAAA,EAEU,eAAkD;AACxD,QAAI,CAAC,KAAK,SAAS;AACf,YAAM,gBAAgB,KAAK,aAAa;AACxC,YAAM,YAAY,KAAK,aAAa;AAEpC,UAAI,2BAA2B,IAAI,KAAK,OAAO,GAAG;AAC9C,YAAI,cAAe,QAAO,EAAC,gBAAgB,cAAa;AAAA,MAC5D,OAAO;AACH,YAAI,UAAW,QAAO,EAAC,YAAY,UAAS;AAAA,MAChD;AAEA;AAAA,IACJ;AAEA,UAAM,EAAC,MAAM,MAAM,MAAK,IAAI,KAAK;AAEjC,UAAM,cAAc;AAAA,MAChB,iBAAiB,KAAK,YAAY,QAAQ,UAAU,QAAQ;AAAA,MAC5D,eAAe,SAAS,KAAK;AAAA,MAC7B,cAAc,KAAK,eAAe,IAAI;AAAA,IAC1C;AAEA,WAAO,2BAA2B,IAAI,KAAK,OAAO,IAC5C,EAAC,gBAAgB,EAAC,GAAG,aAAa,eAAe,KAAI,EAAC,IACtD,EAAC,YAAY,EAAC,GAAG,aAAa,cAAc,KAAI,EAAC;AAAA,EAC3D;AAAA,EAEU,+BAA8D;AAhpB5E;AAipBQ,UAAM,mBAAmB,KAAK,aAAa;AAC3C,UAAM,EAAC,QAAQ,OAAO,aAAY,IAAI,KAAK,YAAY,CAAC;AAExD,QAAI,KAAK,YAAY,QAAQ,SAAS;AAClC,YAAM,MAAK,+BAAO,SAAM,0DAAkB,UAAlB,mBAAyB;AACjD,YAAM,aAAY,+BAAO,gBAAa,0DAAkB,UAAlB,mBAAyB;AAC/D,YAAM,mBAAkB,+BAAO,uBAAoB,0DAAkB,UAAlB,mBAAyB;AAC5E,YAAM,mBAAkB,+BAAO,uBAAoB,0DAAkB,UAAlB,mBAAyB;AAC5E,YAAM,4BAA4B,EAAE;AAAA,SAChC,0DAAkB,UAAlB,mBAAyB;AAAA,QACzB,+BAAO;AAAA,QACP,CAAC,UAAU,aAAa;AACpB,cAAI,MAAM,QAAQ,QAAQ,KAAK,MAAM,QAAQ,QAAQ,GAAG;AACpD,mBAAO,SAAS,OAAO,QAAQ;AAAA,UACnC;AAAA,QACJ;AAAA,MACJ;AAEA,YAAM,qBACF,6CAAc,uBAAoB,0DAAkB,kBAAlB,mBAAiC;AACvE,YAAM,qBACF,6CAAc,uBAAoB,0DAAkB,kBAAlB,mBAAiC;AAEvE,aAAO;AAAA,QACH,2BAA2B;AAAA,UACvB,OAAO;AAAA,YACH;AAAA,YACA,YAAY;AAAA,YACZ,oBAAoB;AAAA,YACpB,oBAAoB;AAAA,YACpB,6BAA6B,mCAAmC,yBAAyB;AAAA,UAC7F;AAAA,UACA,eACI,EAAE,QAAQ,iBAAiB,KAAK,EAAE,QAAQ,iBAAiB,IACrD,SACA;AAAA,YACI,oBAAoB;AAAA,YACpB,oBAAoB;AAAA,UACxB;AAAA,QACd;AAAA,MACJ;AAAA,IACJ,WAAW,KAAK,YAAY,QAAQ,QAAQ;AACxC,YAAM,cAAa,iCAAQ,uBAAoB,0DAAkB,WAAlB,mBAA0B;AACzE,YAAM,cAAa,iCAAQ,uBAAoB,0DAAkB,WAAlB,mBAA0B;AAEzE,UAAI,EAAE,QAAQ,UAAU,KAAK,EAAE,QAAQ,UAAU,GAAG;AAChD;AAAA,MACJ;AAEA,aAAO;AAAA,QACH,2BAA2B;AAAA,UACvB,QAAQ;AAAA,YACJ,oBAAoB;AAAA,YACpB,oBAAoB;AAAA,UACxB;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEU,WAA0C;AAChD,UAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACP,IAAI,KAAK;AAET,WAAO;AAAA,EACX;AAAA,EAEU,eAAyB;AAC/B,UAAM,YAAY,oBAAI,IAAY;AAClC,UAAM,aAAa,KAAK,aAAa;AAErC,eAAW,YAAW,yCAAY,UAAS,CAAC,GAAG;AAC3C,gBAAU,IAAI,OAAO;AAAA,IACzB;AAEA,eAAW,WAAW,KAAK,WAAW;AAClC,gBAAU,IAAI,OAAO;AAAA,IACzB;AAEA,WAAO,MAAM,KAAK,SAAS;AAAA,EAC/B;AAAA,EAEU,0BAAmC;AACzC,UAAM,mBAAmB,KAAK,aAAa;AAE3C,UAAM,qBACF,KAAK,SAAS,OAAO,KAAK,MAAM,KAAK,KAAK,QAAQ,EAAE,KAAK,CAAC,EAAC,KAAI,MAAM,SAAS,wBAAwB;AAC1G,UAAM,qBAAqB,oBAAoB,OAAO,KAAK,gBAAgB,EAAE,SAAS,wBAAwB;AAC9G,WAAO,sBAAsB;AAAA,EACjC;AAAA,EAEU,eAAe,MAA8C;AACnE,QAAI,KAAK,MAAM,SAAS,GAAG;AACvB;AAAA,IACJ;AAEA,QAAI,CAAC,MAAM;AACP,aAAO;AAAA,IACX;AAEA,UAAM,QAAQ,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,MAAM,IAAI,oBAAoB,KAAK,KAAK,MAAM,OAAO,EAAE,KAAK,EAAE;AAEzG,QAAI,OAAO;AACP,aAAO,OAAO,YAAY,KAAK;AAAA,IACnC;AAAA,EACJ;AAAA,EAEO,4BAA0D;AApxBrE;AAqxBQ,UAAM,YAA0C,CAAC,GAAG,KAAK,mBAAmB;AAE5E,eAAW,iBAAiB,KAAK,eAAe,OAAO,GAAG;AACtD,YAAM,UAAS,UAAK,aAAa,IAAI,cAAc,KAAK,MAAzC,mBAA4C;AAE3D,UAAI,UAAU,OAAO,OAAO,GAAG;AAC3B,kBAAU,KAAK;AAAA,UACX,WAAW,MAAM,KAAK,MAAM;AAAA,UAC5B,SAAS,cAAc,WAAW;AAAA,QACtC,CAAC;AAAA,MACL;AAAA,IACJ;AAEA,QAAI,KAAK,aAAa,0BAA0B;AAC5C,gBAAU,KAAK,GAAG,KAAK,aAAa,wBAAwB;AAAA,IAChE;AAEA,WAAO,4BAA4B,SAAS;AAAA,EAChD;AACJ;","names":["commands"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/builders/manifest/ManifestBase.ts"],"sourcesContent":["import _ from \"lodash\";\n\nimport {Csp, type CspBuilder, SandboxCsp} from \"../csp\";\n\nimport {mergeWebAccessibleResources, normalizeDataCollectionPermissions} from \"./utils\";\n\nimport {\n CoreManifest,\n Manifest,\n ManifestAccessibleResource,\n ManifestAccessibleResources,\n ManifestBackground,\n ManifestBuilder,\n ManifestCommands,\n ManifestContentScripts,\n ManifestDependencies,\n ManifestHostPermissions,\n ManifestIcons,\n ManifestIncognito,\n ManifestOptionalPermissions,\n ManifestOptions,\n ManifestPermissions,\n ManifestPopup,\n ManifestSandbox,\n ManifestSandboxes,\n ManifestSidebar,\n ManifestVersion,\n OptionalManifest,\n} from \"@typing/manifest\";\nimport {CspConfig} from \"@typing/csp\";\nimport {SandboxCspConfig} from \"@typing/sandbox\";\nimport {Browser, BrowserSpecific} from \"@typing/browser\";\nimport {Language} from \"@typing/locale\";\nimport {CommandExecuteActionName} from \"@typing/command\";\nimport {DefaultIconGroupName} from \"@typing/icon\";\nimport {SidebarAlternativeBrowsers} from \"@typing/sidebar\";\nimport {ContentScriptMatches} from \"@typing/content\";\n\ntype ManifestV3 = chrome.runtime.ManifestV3;\ntype ManifestPermission = chrome.runtime.ManifestPermission;\ntype ManifestOptionalPermission = chrome.runtime.ManifestOptionalPermission;\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;\n protected author?: string;\n protected homepage?: string;\n protected shortName?: string;\n protected description?: string;\n protected minimumVersion?: string;\n protected version?: string;\n protected icon?: string;\n protected incognito?: ManifestIncognito;\n protected specific?: BrowserSpecific;\n protected locale?: Language;\n protected icons: ManifestIcons = new Map();\n protected background?: ManifestBackground;\n protected popup?: ManifestPopup;\n protected sidebar?: ManifestSidebar;\n protected options?: ManifestOptions;\n protected sandboxes: ManifestSandboxes = new Set();\n protected sandboxCsp: CspBuilder<SandboxCspConfig> = new SandboxCsp();\n protected csp: CspBuilder<CspConfig> = new Csp();\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 optionalPermissions: ManifestOptionalPermissions = new Set();\n protected hostPermissions: ManifestHostPermissions = new Set();\n protected optionalHostPermissions: ManifestHostPermissions = new Set();\n protected accessibleResources: ManifestAccessibleResources = new Set();\n\n protected raws: Set<OptionalManifest> = new Set();\n protected mergedRaws?: OptionalManifest;\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 buildOptionalPermissions(): Partial<T> | undefined;\n\n protected abstract buildHostPermissions(): Partial<T> | undefined;\n\n protected abstract buildOptionalHostPermissions(): Partial<T> | undefined;\n\n protected abstract buildWebAccessibleResources(): Partial<T> | undefined;\n\n protected abstract buildSandbox(): Partial<T> | undefined;\n\n protected abstract buildCsp(): Partial<T> | undefined;\n\n protected get combinedRaws(): OptionalManifest {\n return (this.mergedRaws ??= Array.from(this.raws).reduce((result, raw) => {\n return _.mergeWith(result, raw, (objValue, srcValue) => {\n if (Array.isArray(objValue) && Array.isArray(srcValue)) {\n return objValue.concat(srcValue);\n }\n });\n }, {}));\n }\n\n protected get combinedPermissions(): ManifestPermissions {\n const result = new Set(this.permissions);\n\n if (this.combinedRaws.permissions) {\n for (const permission of this.combinedRaws.permissions) {\n result.add(permission);\n }\n }\n\n return result;\n }\n\n protected get combinedOptionalPermissions(): ManifestOptionalPermissions {\n const result = new Set(this.optionalPermissions);\n\n if (this.combinedRaws.optional_permissions) {\n for (const permission of this.combinedRaws.optional_permissions) {\n result.add(permission);\n }\n }\n\n return result;\n }\n\n protected get combinedHostPermissions(): ManifestHostPermissions {\n const result = new Set(this.hostPermissions);\n\n if (this.combinedRaws.host_permissions) {\n for (const permission of this.combinedRaws.host_permissions) {\n result.add(permission);\n }\n }\n\n return result;\n }\n\n protected get combinedOptionalHostPermissions(): ManifestHostPermissions {\n const result = new Set(this.optionalHostPermissions);\n if (this.combinedRaws.optional_host_permissions) {\n for (const permission of this.combinedRaws.optional_host_permissions) {\n result.add(permission);\n }\n }\n return result;\n }\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 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;\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 setSpecific(settings?: BrowserSpecific): this {\n this.specific = settings;\n\n return this;\n }\n\n public mergeSpecific(settings: BrowserSpecific): this {\n this.specific = _.mergeWith({}, this.specific, settings, (objValue, srcValue) => {\n if (_.isArray(objValue) && _.isArray(srcValue)) {\n return _.union(objValue, srcValue);\n }\n });\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 setOptions(options?: ManifestOptions): this {\n this.options = options;\n\n return this;\n }\n\n public addSandbox(sandbox: ManifestSandbox): this {\n this.sandboxes.add(sandbox);\n\n return this;\n }\n\n public appendSandboxes(sandboxes: Iterable<ManifestSandbox>): this {\n for (const sandbox of sandboxes) {\n this.addSandbox(sandbox);\n }\n\n return this;\n }\n\n public addSandboxCsp(csp: SandboxCspConfig): this {\n this.sandboxCsp.add(csp);\n\n return this;\n }\n\n public appendSandboxCsp(csps: Iterable<SandboxCspConfig>): this {\n for (const csp of csps) {\n this.addSandboxCsp(csp);\n }\n\n return this;\n }\n\n public addCsp(csp: CspConfig): this {\n this.csp.add(csp);\n\n return this;\n }\n\n public appendCsp(csps: Iterable<CspConfig>): this {\n for (const csp of csps) {\n this.addCsp(csp);\n }\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 addOptionalPermission(permission: ManifestOptionalPermission): this {\n this.optionalPermissions.add(permission);\n\n return this;\n }\n\n public setOptionalPermissions(permissions: ManifestOptionalPermissions): this {\n this.optionalPermissions = permissions;\n\n return this;\n }\n\n public appendOptionalPermissions(permissions: ManifestOptionalPermissions): this {\n for (const permission of permissions) {\n this.optionalPermissions.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 addOptionalHostPermission(permission: string): this {\n this.optionalHostPermissions.add(permission);\n\n return this;\n }\n\n public setOptionalHostPermissions(permissions: ManifestHostPermissions): this {\n this.optionalHostPermissions = permissions;\n\n return this;\n }\n\n public appendOptionalHostPermissions(permissions: ManifestHostPermissions): this {\n for (const permission of permissions) {\n this.optionalHostPermissions.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 setAccessibleResource(accessibleResources: ManifestAccessibleResources): this {\n this.accessibleResources = accessibleResources;\n\n return this;\n }\n\n public raw(manifest: OptionalManifest): this {\n this.raws.add(manifest);\n\n return this;\n }\n\n public build(): T {\n return this.merge<Manifest>(\n this.buildName(),\n this.buildShortName(),\n this.buildDescription(),\n this.buildVersion(),\n this.buildManifestVersion(),\n this.buildMinimumChromeVersion(),\n this.buildAuthor(),\n this.buildHomepageUrl(),\n this.buildIncognito(),\n this.buildLocale(),\n this.buildIcons(),\n this.buildBackground(),\n this.buildCommands(),\n this.buildAction(),\n this.buildSidebar(),\n this.buildOptions(),\n this.buildContentScripts(),\n this.buildPermissions(),\n this.buildOptionalPermissions(),\n this.buildHostPermissions(),\n this.buildOptionalHostPermissions(),\n this.buildWebAccessibleResources(),\n this.buildSandbox(),\n this.buildCsp(),\n this.buildBrowserSpecificSettings(),\n this.buildRaw()\n ) as T;\n }\n\n public get(): T {\n return this.build();\n }\n\n private merge<T extends CoreManifest>(...sources: Array<Partial<T> | undefined>): T {\n sources = sources.filter(source => source !== undefined);\n\n if (sources.length === 0) {\n throw new ManifestError(\"No sources provided for manifest merging\");\n }\n\n const result = {} as T;\n\n for (const source of sources) {\n Object.assign(result, source);\n }\n\n return result;\n }\n\n protected buildName(): Partial<CoreManifest> {\n return {name: this.name || this.combinedRaws.name || \"__MSG_app_name__\"};\n }\n\n protected buildShortName(): Partial<CoreManifest> | undefined {\n const shortName = this.shortName || this.combinedRaws.short_name;\n return shortName ? {short_name: shortName} : undefined;\n }\n\n protected buildDescription(): Partial<CoreManifest> | undefined {\n const description = this.description || this.combinedRaws.description;\n return description ? {description} : undefined;\n }\n\n protected buildVersion(): Partial<CoreManifest> {\n return {version: this.version || this.combinedRaws.version || \"0.0.0\"};\n }\n\n protected buildManifestVersion(): Partial<CoreManifest> {\n return {manifest_version: this.getManifestVersion()};\n }\n\n protected buildMinimumChromeVersion(): Partial<CoreManifest> | undefined {\n const version = this.minimumVersion || this.combinedRaws.minimum_chrome_version;\n return version ? {minimum_chrome_version: version} : undefined;\n }\n\n protected buildAuthor(): Partial<CoreManifest> | undefined {\n const author = this.author || this.combinedRaws.author;\n return author ? {author} : undefined;\n }\n\n protected buildHomepageUrl(): Partial<CoreManifest> | undefined {\n const homepage = this.homepage || this.combinedRaws.homepage_url;\n return homepage ? {homepage_url: homepage} : undefined;\n }\n\n protected buildIncognito(): Partial<CoreManifest> | undefined {\n const incognito = this.incognito || this.combinedRaws.incognito;\n return incognito !== undefined ? {incognito} : undefined;\n }\n\n protected buildLocale(): Partial<CoreManifest> | undefined {\n const defaultLocale = this.locale || this.combinedRaws.default_locale;\n return defaultLocale ? {default_locale: defaultLocale} : undefined;\n }\n\n protected buildIcons(): Partial<CoreManifest> | undefined {\n const icons = {\n ...this.combinedRaws.icons,\n ...this.getIconsByName(this.icon),\n };\n return Object.keys(icons).length ? {icons} : undefined;\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 const internalCommands = Array.from(this.commands).reduce(\n (commands, command) => {\n return {\n ...commands,\n [command.name]: {\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 },\n {} as CoreManifest[\"commands\"]\n );\n\n const commands = _.merge(this.combinedRaws.commands, internalCommands);\n\n if (Object.keys(commands).length) return {commands};\n }\n\n protected buildContentScripts(): Partial<CoreManifest> | undefined {\n const contentScripts: ManifestV3[\"content_scripts\"] = [];\n\n if (this.combinedRaws.content_scripts) {\n contentScripts.push(...this.combinedRaws.content_scripts);\n }\n\n if (this.contentScripts.size > 0) {\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\n return contentScripts.length ? {content_scripts: contentScripts} : undefined;\n }\n\n protected buildSidebar(): Partial<CoreManifest> | undefined {\n if (!this.sidebar) {\n const sidebarAction = this.combinedRaws.sidebar_action;\n const sidePanel = this.combinedRaws.side_panel;\n\n if (SidebarAlternativeBrowsers.has(this.browser)) {\n if (sidebarAction) return {sidebar_action: sidebarAction};\n } else {\n if (sidePanel) return {side_panel: sidePanel};\n }\n\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 buildOptions(): Partial<CoreManifest> {\n if (this.options) {\n return {\n options_ui: {\n page: this.options.path,\n open_in_tab: this.options.openInTab ?? true,\n },\n };\n }\n\n return _.pick(this.combinedRaws, [\"options_ui\", \"options_page\"]);\n }\n\n protected buildBrowserSpecificSettings(): Partial<Manifest> | undefined {\n const optionalSettings = this.combinedRaws.browser_specific_settings;\n const {safari, gecko, geckoAndroid} = this.specific || {};\n\n if (this.browser === Browser.Firefox) {\n const id = gecko?.id || optionalSettings?.gecko?.id;\n const updateUrl = gecko?.updateUrl || optionalSettings?.gecko?.update_url;\n const geckoMinVersion = gecko?.strictMinVersion || optionalSettings?.gecko?.strict_min_version;\n const geckoMaxVersion = gecko?.strictMaxVersion || optionalSettings?.gecko?.strict_max_version;\n const dataCollectionPermissions = _.mergeWith(\n optionalSettings?.gecko?.data_collection_permissions,\n gecko?.dataCollectionPermissions,\n (objValue, srcValue) => {\n if (Array.isArray(objValue) && Array.isArray(srcValue)) {\n return objValue.concat(srcValue);\n }\n }\n );\n\n const androidMinVersion =\n geckoAndroid?.strictMinVersion || optionalSettings?.gecko_android?.strict_min_version;\n const androidMaxVersion =\n geckoAndroid?.strictMaxVersion || optionalSettings?.gecko_android?.strict_max_version;\n\n return {\n browser_specific_settings: {\n gecko: {\n id,\n update_url: updateUrl,\n strict_min_version: geckoMinVersion,\n strict_max_version: geckoMaxVersion,\n data_collection_permissions: normalizeDataCollectionPermissions(dataCollectionPermissions),\n },\n gecko_android:\n _.isEmpty(androidMinVersion) && _.isEmpty(androidMaxVersion)\n ? undefined\n : {\n strict_min_version: androidMinVersion,\n strict_max_version: androidMaxVersion,\n },\n },\n };\n } else if (this.browser === Browser.Safari) {\n const minVersion = safari?.strictMinVersion || optionalSettings?.safari?.strict_min_version;\n const maxVersion = safari?.strictMaxVersion || optionalSettings?.safari?.strict_max_version;\n\n if (_.isEmpty(minVersion) && _.isEmpty(maxVersion)) {\n return;\n }\n\n return {\n browser_specific_settings: {\n safari: {\n strict_min_version: minVersion,\n strict_max_version: maxVersion,\n },\n },\n };\n }\n }\n\n protected buildRaw(): Partial<Manifest> | undefined {\n const {\n name,\n short_name,\n description,\n version,\n minimum_chrome_version,\n author,\n homepage_url,\n incognito,\n default_locale,\n icons,\n background,\n commands,\n action,\n sidebar,\n options_ui,\n options_page,\n content_scripts,\n permissions,\n optional_permissions,\n host_permissions,\n optional_host_permissions,\n web_accessible_resources,\n sandbox,\n content_security_policy,\n browser_specific_settings,\n ...other\n } = this.combinedRaws;\n\n return other;\n }\n\n protected getSandboxes(): string[] {\n const sandboxes = new Set<string>();\n const rawSandbox = this.combinedRaws.sandbox as {pages?: string[]} | undefined;\n\n for (const sandbox of rawSandbox?.pages || []) {\n sandboxes.add(sandbox);\n }\n\n for (const sandbox of this.sandboxes) {\n sandboxes.add(sandbox);\n }\n\n return Array.from(sandboxes);\n }\n\n protected hasExecuteActionCommand(): boolean {\n const optionalCommands = this.combinedRaws.commands;\n\n const inInternalCommands =\n this.commands.size > 0 && Array.from(this.commands).some(({name}) => name === CommandExecuteActionName);\n const inOptionalCommands = optionalCommands && Object.keys(optionalCommands).includes(CommandExecuteActionName);\n return inInternalCommands || inOptionalCommands;\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 getWebAccessibleResources(): ManifestAccessibleResource[] {\n const resources: ManifestAccessibleResource[] = [...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 (this.combinedRaws.web_accessible_resources) {\n resources.push(...this.combinedRaws.web_accessible_resources);\n }\n\n return mergeWebAccessibleResources(resources);\n }\n}\n"],"mappings":"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","names":["commands"]}
|
|
@@ -8,13 +8,9 @@ class GenerateJsonPlugin {
|
|
|
8
8
|
update;
|
|
9
9
|
apply(compiler) {
|
|
10
10
|
compiler.hooks.watchRun.tapPromise(this.pluginName, async () => {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
this.data = await update();
|
|
15
|
-
}
|
|
16
|
-
} catch (e) {
|
|
17
|
-
console.error("GenerateJsonPlugin: Error updating data", e);
|
|
11
|
+
const update = this.update;
|
|
12
|
+
if (update) {
|
|
13
|
+
this.data = await update();
|
|
18
14
|
}
|
|
19
15
|
});
|
|
20
16
|
compiler.hooks.compilation.tap(this.pluginName, (compilation) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/cli/bundler/plugins/GenerateJsonPlugin.ts"],"sourcesContent":["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
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/bundler/plugins/GenerateJsonPlugin.ts"],"sourcesContent":["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 const update = this.update;\n\n if (update) {\n // Let the compiler fail this rebuild rather than emit stale JSON.\n this.data = await update();\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"],"mappings":"AAAA,SAAQ,aAAuB,eAAc;AAc7C,MAAO,mBAAiC;AAAA,EAKpC,YAAsB,MAA8B;AAA9B;AAAA,EAA+B;AAAA,EAA/B;AAAA,EAJL,aAAqB;AAAA,EAE9B;AAAA,EAID,MAAM,UAA0B;AACnC,aAAS,MAAM,SAAS,WAAW,KAAK,YAAY,YAAY;AAC5D,YAAM,SAAS,KAAK;AAEpB,UAAI,QAAQ;AAER,aAAK,OAAO,MAAM,OAAO;AAAA,MAC7B;AAAA,IACJ,CAAC;AAED,aAAS,MAAM,YAAY,IAAI,KAAK,YAAY,CAAC,gBAA6B;AAC1E,kBAAY,MAAM,cAAc;AAAA,QAC5B;AAAA,UACI,MAAM,KAAK;AAAA,UACX,OAAO,YAAY;AAAA,QACvB;AAAA,QACA,MAAM,KAAK,cAAc,WAAW;AAAA,MACxC;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEO,MAAM,QAAwC;AACjD,SAAK,SAAS;AAEd,WAAO;AAAA,EACX;AAAA,EAEU,cAAc,aAAgC;AACpD,WAAO,QAAQ,KAAK,IAAI,EAAE,QAAQ,CAAC,CAAC,UAAU,QAAQ,MAAM;AACxD,YAAM,OAAO,KAAK,UAAU,UAAU,MAAM,CAAC;AAE7C,kBAAY,UAAU,UAAU,IAAI,QAAQ,UAAU,IAAI,CAAC;AAAA,IAC/D,CAAC;AAAA,EACL;AACJ;","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Command, Mode, PackageName } from "./../../../../types/app.js";
|
|
2
2
|
import { Browser } from "./../../../../types/browser.js";
|
|
3
|
-
import { RelayMethod } from "./../../../../types/relay.js";
|
|
3
|
+
import { RelayAllFrames, RelayMethod } from "./../../../../types/relay.js";
|
|
4
4
|
import { ContentScriptAppend, ContentScriptDeclarative, ContentScriptMarker } from "./../../../../types/content.js";
|
|
5
5
|
import { OffscreenReason } from "./../../../../types/offscreen.js";
|
|
6
6
|
import { SandboxAllow, SandboxSource } from "./../../../../types/sandbox.js";
|
|
@@ -71,6 +71,14 @@ var core_default = () => {
|
|
|
71
71
|
value
|
|
72
72
|
});
|
|
73
73
|
});
|
|
74
|
+
Object.entries(RelayAllFrames).forEach(([key, value]) => {
|
|
75
|
+
resolvers.push({
|
|
76
|
+
from: PackageName,
|
|
77
|
+
target: "RelayAllFrames",
|
|
78
|
+
name: key,
|
|
79
|
+
value
|
|
80
|
+
});
|
|
81
|
+
});
|
|
74
82
|
Object.entries(OffscreenReason).forEach(([key, value]) => {
|
|
75
83
|
resolvers.push({
|
|
76
84
|
from: PackageName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/cli/entrypoint/file/injectors/core.ts"],"sourcesContent":["import {Command, Mode, PackageName} from \"@typing/app\";\nimport {Browser} from \"@typing/browser\";\nimport {RelayMethod} from \"@typing/relay\";\nimport {ContentScriptAppend, ContentScriptDeclarative, ContentScriptMarker} from \"@typing/content\";\nimport {OffscreenReason} from \"@typing/offscreen\";\nimport {SandboxAllow, SandboxSource} from \"@typing/sandbox\";\nimport {CspSource} from \"@typing/csp\";\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(ContentScriptDeclarative).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"ContentScriptDeclarative\",\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(ContentScriptMarker).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"ContentScriptMarker\",\n name: key,\n value,\n });\n });\n\n Object.entries(CspSource).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"CspSource\",\n name: key,\n value,\n });\n });\n\n Object.entries(RelayMethod).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"RelayMethod\",\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 Object.entries(SandboxAllow).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"SandboxAllow\",\n name: key,\n value,\n });\n });\n\n Object.entries(SandboxSource).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"SandboxSource\",\n name: key,\n value,\n });\n });\n\n return resolvers;\n};\n"],"mappings":"AAAA,SAAQ,SAAS,MAAM,mBAAkB;AACzC,SAAQ,eAAc;AACtB,SAAQ,mBAAkB;
|
|
1
|
+
{"version":3,"sources":["../../../../../src/cli/entrypoint/file/injectors/core.ts"],"sourcesContent":["import {Command, Mode, PackageName} from \"@typing/app\";\nimport {Browser} from \"@typing/browser\";\nimport {RelayAllFrames, RelayMethod} from \"@typing/relay\";\nimport {ContentScriptAppend, ContentScriptDeclarative, ContentScriptMarker} from \"@typing/content\";\nimport {OffscreenReason} from \"@typing/offscreen\";\nimport {SandboxAllow, SandboxSource} from \"@typing/sandbox\";\nimport {CspSource} from \"@typing/csp\";\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(ContentScriptDeclarative).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"ContentScriptDeclarative\",\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(ContentScriptMarker).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"ContentScriptMarker\",\n name: key,\n value,\n });\n });\n\n Object.entries(CspSource).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"CspSource\",\n name: key,\n value,\n });\n });\n\n Object.entries(RelayMethod).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"RelayMethod\",\n name: key,\n value,\n });\n });\n\n Object.entries(RelayAllFrames).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"RelayAllFrames\",\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 Object.entries(SandboxAllow).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"SandboxAllow\",\n name: key,\n value,\n });\n });\n\n Object.entries(SandboxSource).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"SandboxSource\",\n name: key,\n value,\n });\n });\n\n return resolvers;\n};\n"],"mappings":"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","names":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import AbstractParsedFinder from "./AbstractParsedFinder.js";
|
|
2
2
|
import { EntrypointFile, EntrypointOptions } from "../../../types/entrypoint.js";
|
|
3
3
|
import { ReadonlyConfig } from "../../../types/config.js";
|
|
4
|
-
export default abstract class<O extends EntrypointOptions> extends
|
|
4
|
+
export default abstract class<O extends EntrypointOptions> extends AbstractParsedFinder<O> {
|
|
5
5
|
protected fileExtensionsPattern: string;
|
|
6
6
|
protected possibleIndexFiles: Set<string>;
|
|
7
7
|
protected constructor(config: ReadonlyConfig);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import fs from "fs";
|
|
2
2
|
import path from "path";
|
|
3
3
|
import pluralize from "pluralize";
|
|
4
|
-
import
|
|
4
|
+
import AbstractParsedFinder from "./AbstractParsedFinder.js";
|
|
5
5
|
import { FileLayer, setFilePrecedence } from "./utils/filePrecedence.js";
|
|
6
6
|
import { getAppSourcePath, getSharedPath } from "./../../../cli/resolvers/path.js";
|
|
7
7
|
import { EntrypointFileExtensions } from "./../../../types/entrypoint.js";
|
|
8
|
-
class AbstractEntrypointFinder_default extends
|
|
8
|
+
class AbstractEntrypointFinder_default extends AbstractParsedFinder {
|
|
9
9
|
fileExtensionsPattern;
|
|
10
10
|
possibleIndexFiles;
|
|
11
11
|
constructor(config) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/AbstractEntrypointFinder.ts"],"sourcesContent":["import fs, {Dirent} from \"fs\";\nimport path from \"path\";\nimport pluralize from \"pluralize\";\n\nimport
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/AbstractEntrypointFinder.ts"],"sourcesContent":["import fs, {Dirent} from \"fs\";\nimport path from \"path\";\nimport pluralize from \"pluralize\";\n\nimport AbstractParsedFinder from \"./AbstractParsedFinder\";\nimport {FileLayer, setFilePrecedence} from \"./utils/filePrecedence\";\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 AbstractParsedFinder<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 for (const file of appFiles) {\n setFilePrecedence(file, {layer: FileLayer.AppSource});\n }\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 for (const file of sharedFiles) {\n setFilePrecedence(file, {layer: FileLayer.Shared});\n }\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 rootFiles: EntrypointFile[] = [];\n const groupedFiles: EntrypointFile[] = [];\n\n const collect = (dir: string, files: EntrypointFile[], collectGrouped: boolean): 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.log(`Failed to read ${entrypoint} entrypoint directory: \"${dir}\". Skipping.`);\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(\n `Error reading ${entrypoint} entrypoint index file: \"${indexPath}\". Skipping.`\n );\n }\n }\n }\n } else if (collectGrouped && entry.name === entrypointPluralize) {\n collect(fullPath, groupedFiles, false);\n }\n } else if (entry.isFile() && this.isValidFilename(entry.name)) {\n files.push(this.file(fullPath));\n }\n }\n };\n\n collect(directory, rootFiles, true);\n\n if (groupedFiles.length > 0) {\n return new Set(groupedFiles);\n }\n\n if (rootFiles.length > 0) {\n return new Set(rootFiles);\n }\n\n try {\n directory = path.join(directory, entrypoint);\n\n const stat = fs.statSync(directory);\n\n if (stat.isDirectory()) {\n collect(directory, rootFiles, false);\n }\n } catch (e) {\n if (this.config.debug) {\n console.log(\"Error reading entrypoint directory:\", directory);\n }\n }\n\n return new Set(rootFiles);\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"],"mappings":"AAAA,OAAO,QAAkB;AACzB,OAAO,UAAU;AACjB,OAAO,eAAe;AAEtB,OAAO,0BAA0B;AACjC,SAAQ,WAAW,yBAAwB;AAE3C,SAAQ,kBAAkB,qBAAoB;AAE9C,SAAwB,gCAAkD;AAG1E,MAAO,yCAA4D,qBAAwB;AAAA,EAC7E;AAAA,EAEA;AAAA,EAEA,YAAY,QAAwB;AAC1C,UAAM,MAAM;AAEZ,SAAK,wBAAwB,CAAC,GAAG,wBAAwB,EAAE,IAAI,SAAO,IAAI,QAAQ,KAAK,KAAK,CAAC,EAAE,KAAK,GAAG;AAEvG,SAAK,qBAAqB,IAAI,IAAI,CAAC,GAAG,wBAAwB,EAAE,IAAI,SAAO,SAAS,GAAG,EAAE,CAAC;AAAA,EAC9F;AAAA,EAEO,WAAoB;AACvB,WAAO;AAAA,EACX;AAAA,EAEA,MAAgB,WAAyC;AACrD,UAAM,aAAa,KAAK,KAAK;AAE7B,QAAI,QAAQ,oBAAI,IAAoB;AAEpC,UAAM,WAAW,KAAK,UAAU,iBAAiB,KAAK,MAAM,CAAC;AAE7D,eAAW,QAAQ,UAAU;AACzB,wBAAkB,MAAM,EAAC,OAAO,UAAU,UAAS,CAAC;AAAA,IACxD;AAEA,QAAI,SAAS,OAAO,GAAG;AACnB,cAAQ;AAER,UAAI,KAAK,OAAO,OAAO;AACnB,gBAAQ,KAAK,QAAQ,UAAU,kBAAkB,QAAQ;AAAA,MAC7D;AAAA,IACJ;AAEA,QAAK,SAAS,OAAO,KAAK,KAAK,SAAS,KAAM,SAAS,SAAS,GAAG;AAC/D,YAAM,cAAc,KAAK,UAAU,cAAc,KAAK,MAAM,CAAC;AAE7D,iBAAW,QAAQ,aAAa;AAC5B,0BAAkB,MAAM,EAAC,OAAO,UAAU,OAAM,CAAC;AAAA,MACrD;AAEA,UAAI,YAAY,OAAO,GAAG;AACtB,gBAAQ,oBAAI,IAAI,CAAC,GAAG,OAAO,GAAG,WAAW,CAAC;AAE1C,YAAI,KAAK,OAAO,OAAO;AACnB,kBAAQ,KAAK,WAAW,UAAU,kBAAkB,WAAW;AAAA,QACnE;AAAA,MACJ;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAAA,EAEU,UAAU,WAAwC;AACxD,UAAM,aAAa,KAAK,KAAK;AAC7B,UAAM,sBAAsB,UAAU,UAAU;AAEhD,UAAM,YAA8B,CAAC;AACrC,UAAM,eAAiC,CAAC;AAExC,UAAM,UAAU,CAAC,KAAa,OAAyB,mBAAkC;AACrF,UAAI;AAEJ,UAAI;AACA,kBAAU,GAAG,YAAY,KAAK,EAAC,eAAe,KAAI,CAAC;AAAA,MACvD,SAAS,GAAG;AACR,YAAI,KAAK,OAAO,OAAO;AACnB,kBAAQ,IAAI,kBAAkB,UAAU,2BAA2B,GAAG,cAAc;AAAA,QACxF;AAEA;AAAA,MACJ;AAEA,iBAAW,SAAS,SAAS;AACzB,cAAM,WAAW,KAAK,KAAK,KAAK,MAAM,IAAI;AAE1C,YAAI,MAAM,YAAY,GAAG;AACrB,cAAI,KAAK,eAAe,MAAM,IAAI,GAAG;AACjC,uBAAW,aAAa,KAAK,oBAAoB;AAC7C,oBAAM,YAAY,KAAK,KAAK,UAAU,SAAS;AAE/C,kBAAI;AACA,sBAAM,OAAO,GAAG,SAAS,SAAS;AAElC,oBAAI,KAAK,OAAO,GAAG;AACf,wBAAM,KAAK,KAAK,KAAK,SAAS,CAAC;AAAA,gBACnC;AAAA,cACJ,SAAS,GAAG;AACR,oBAAI,KAAK,OAAO,OAAO;AACnB,0BAAQ;AAAA,oBACJ,iBAAiB,UAAU,4BAA4B,SAAS;AAAA,kBACpE;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ,WAAW,kBAAkB,MAAM,SAAS,qBAAqB;AAC7D,oBAAQ,UAAU,cAAc,KAAK;AAAA,UACzC;AAAA,QACJ,WAAW,MAAM,OAAO,KAAK,KAAK,gBAAgB,MAAM,IAAI,GAAG;AAC3D,gBAAM,KAAK,KAAK,KAAK,QAAQ,CAAC;AAAA,QAClC;AAAA,MACJ;AAAA,IACJ;AAEA,YAAQ,WAAW,WAAW,IAAI;AAElC,QAAI,aAAa,SAAS,GAAG;AACzB,aAAO,IAAI,IAAI,YAAY;AAAA,IAC/B;AAEA,QAAI,UAAU,SAAS,GAAG;AACtB,aAAO,IAAI,IAAI,SAAS;AAAA,IAC5B;AAEA,QAAI;AACA,kBAAY,KAAK,KAAK,WAAW,UAAU;AAE3C,YAAM,OAAO,GAAG,SAAS,SAAS;AAElC,UAAI,KAAK,YAAY,GAAG;AACpB,gBAAQ,WAAW,WAAW,KAAK;AAAA,MACvC;AAAA,IACJ,SAAS,GAAG;AACR,UAAI,KAAK,OAAO,OAAO;AACnB,gBAAQ,IAAI,uCAAuC,SAAS;AAAA,MAChE;AAAA,IACJ;AAEA,WAAO,IAAI,IAAI,SAAS;AAAA,EAC5B;AAAA,EAEU,gBAAgB,UAA2B;AACjD,UAAM,OAAO,KAAK,KAAK,EAAE,QAAQ,uBAAuB,MAAM;AAE9D,UAAM,UAAU,IAAI,OAAO,cAAc,IAAI,OAAO,KAAK,qBAAqB,IAAI;AAElF,WAAO,QAAQ,KAAK,QAAQ;AAAA,EAChC;AAAA,EAEU,eAAe,SAA0B;AAC/C,UAAM,aAAa,KAAK,KAAK;AAE7B,WAAO,YAAY,cAAc,QAAQ,SAAS,IAAI,UAAU,EAAE;AAAA,EACtE;AACJ;","names":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import AbstractFinder from "./AbstractFinder.js";
|
|
2
|
-
class
|
|
2
|
+
class AbstractParsedFinder_default extends AbstractFinder {
|
|
3
3
|
_parser;
|
|
4
4
|
_options;
|
|
5
5
|
_contract;
|
|
@@ -78,6 +78,6 @@ class AbstractOptionsFinder_default extends AbstractFinder {
|
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
export {
|
|
81
|
-
|
|
81
|
+
AbstractParsedFinder_default as default
|
|
82
82
|
};
|
|
83
|
-
//# sourceMappingURL=
|
|
83
|
+
//# sourceMappingURL=AbstractParsedFinder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/AbstractParsedFinder.ts"],"sourcesContent":["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 empty(): Promise<boolean> {\n return (await this.options()).size === 0;\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 {\n browser,\n app,\n mode: configMode,\n debug: configDebug,\n manifestVersion: configManifestVersion,\n } = this.config;\n\n const {\n mode,\n debug,\n manifestVersion,\n includeBrowser = [],\n includeApp = [],\n excludeBrowser = [],\n excludeApp = [],\n } = options;\n\n if (mode && mode !== configMode) {\n return false;\n }\n\n if (debug !== undefined && debug !== configDebug) {\n return false;\n }\n\n if (manifestVersion && manifestVersion !== configManifestVersion) {\n return false;\n }\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"],"mappings":"AAAA,OAAO,oBAAoB;AAS3B,MAAO,qCACK,eAEZ;AAAA,EACc;AAAA,EACA;AAAA,EACA;AAAA,EAMH,SAA8B;AACjC,WAAQ,KAAK,YAAL,KAAK,UAAY,KAAK,UAAU;AAAA,EAC5C;AAAA,EAEA,MAAa,UAA2C;AACpD,WAAQ,KAAK,aAAL,KAAK,WAAa,MAAM,KAAK,WAAW;AAAA,EACpD;AAAA,EAEA,MAAa,QAA0B;AACnC,YAAQ,MAAM,KAAK,QAAQ,GAAG,SAAS;AAAA,EAC3C;AAAA,EAEA,MAAa,YAA8D;AACvE,WAAQ,KAAK,cAAL,KAAK,YAAc,MAAM,KAAK,aAAa;AAAA,EACvD;AAAA,EAEA,MAAgB,eAAiE;AAC7E,UAAM,UAAU,oBAAI,IAAwC;AAE5D,UAAM,UAAU,MAAM,KAAK,QAAQ;AAEnC,eAAW,QAAQ,QAAQ,KAAK,GAAG;AAC/B,cAAQ,IAAI,MAAM,KAAK,OAAO,EAAE,SAAS,IAAI,CAAC;AAAA,IAClD;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,MAAgB,aAA8C;AAC1D,UAAM,UAAU,oBAAI,IAAuB;AAE3C,eAAW,QAAQ,MAAM,KAAK,MAAM,GAAG;AACnC,YAAM,UAAU,KAAK,OAAO,EAAE,QAAQ,IAAI;AAE1C,UAAI,CAAC,KAAK,eAAe,OAAO,GAAG;AAC/B;AAAA,MACJ;AAEA,cAAQ,IAAI,MAAM,OAAO;AAAA,IAC7B;AAEA,WAAO;AAAA,EACX;AAAA,EAEU,eAAe,SAAqB;AAC1C,UAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN,OAAO;AAAA,MACP,iBAAiB;AAAA,IACrB,IAAI,KAAK;AAET,UAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA,iBAAiB,CAAC;AAAA,MAClB,aAAa,CAAC;AAAA,MACd,iBAAiB,CAAC;AAAA,MAClB,aAAa,CAAC;AAAA,IAClB,IAAI;AAEJ,QAAI,QAAQ,SAAS,YAAY;AAC7B,aAAO;AAAA,IACX;AAEA,QAAI,UAAU,UAAa,UAAU,aAAa;AAC9C,aAAO;AAAA,IACX;AAEA,QAAI,mBAAmB,oBAAoB,uBAAuB;AAC9D,aAAO;AAAA,IACX;AAEA,QAAI,eAAe,SAAS,KAAK,CAAC,eAAe,SAAS,OAAO,GAAG;AAChE,aAAO;AAAA,IACX;AAEA,QAAI,WAAW,SAAS,KAAK,CAAC,WAAW,SAAS,GAAG,GAAG;AACpD,aAAO;AAAA,IACX;AAEA,QAAI,eAAe,SAAS,KAAK,eAAe,SAAS,OAAO,GAAG;AAC/D,aAAO;AAAA,IACX;AAEA,WAAO,EAAE,WAAW,SAAS,KAAK,WAAW,SAAS,GAAG;AAAA,EAC7D;AAAA,EAEO,QAAc;AACjB,SAAK,WAAW;AAChB,SAAK,YAAY;AAEjB,WAAO,MAAM,MAAM;AAAA,EACvB;AACJ;","names":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import ViewCspFinder from "./ViewCspFinder.js";
|
|
2
|
+
import type { ViewItems } from "./AbstractViewFinder.js";
|
|
3
|
+
import type { ReadonlyConfig } from "../../../types/config.js";
|
|
4
|
+
import type { OptionsEntrypointOptions } from "../../../types/options.js";
|
|
5
|
+
import { EntrypointOptionsFinder, EntrypointParser, EntrypointType } from "../../../types/entrypoint.js";
|
|
6
|
+
export default class extends ViewCspFinder<OptionsEntrypointOptions> {
|
|
7
|
+
constructor(config: ReadonlyConfig);
|
|
8
|
+
type(): EntrypointType;
|
|
9
|
+
protected getParser(): EntrypointParser<OptionsEntrypointOptions>;
|
|
10
|
+
protected getPlugin(): EntrypointOptionsFinder<OptionsEntrypointOptions>;
|
|
11
|
+
protected getViews(): Promise<ViewItems<OptionsEntrypointOptions>>;
|
|
12
|
+
allowMultiple(): boolean;
|
|
13
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import ViewCspFinder from "./ViewCspFinder.js";
|
|
2
|
+
import PluginFinder from "./PluginFinder.js";
|
|
3
|
+
import { OptionsParser } from "../parser/index.js";
|
|
4
|
+
import { EntrypointType } from "./../../../types/entrypoint.js";
|
|
5
|
+
class OptionsFinder_default extends ViewCspFinder {
|
|
6
|
+
constructor(config) {
|
|
7
|
+
super(config);
|
|
8
|
+
}
|
|
9
|
+
type() {
|
|
10
|
+
return EntrypointType.Options;
|
|
11
|
+
}
|
|
12
|
+
getParser() {
|
|
13
|
+
return new OptionsParser(this.config);
|
|
14
|
+
}
|
|
15
|
+
getPlugin() {
|
|
16
|
+
return new PluginFinder(this.config, "options", this);
|
|
17
|
+
}
|
|
18
|
+
async getViews() {
|
|
19
|
+
const views = await super.getViews();
|
|
20
|
+
for (const view of views.values()) {
|
|
21
|
+
const { openInTab, ...options } = view.options;
|
|
22
|
+
view.options = options;
|
|
23
|
+
}
|
|
24
|
+
return views;
|
|
25
|
+
}
|
|
26
|
+
allowMultiple() {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export {
|
|
31
|
+
OptionsFinder_default as default
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=OptionsFinder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/OptionsFinder.ts"],"sourcesContent":["import ViewCspFinder from \"./ViewCspFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {OptionsParser} from \"../parser\";\n\nimport type {ViewItems} from \"./AbstractViewFinder\";\nimport type {ReadonlyConfig} from \"@typing/config\";\nimport type {OptionsEntrypointOptions} from \"@typing/options\";\nimport {EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class extends ViewCspFinder<OptionsEntrypointOptions> {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.Options;\n }\n\n protected getParser(): EntrypointParser<OptionsEntrypointOptions> {\n return new OptionsParser(this.config);\n }\n\n protected getPlugin(): EntrypointOptionsFinder<OptionsEntrypointOptions> {\n return new PluginFinder(this.config, \"options\", this);\n }\n\n protected async getViews(): Promise<ViewItems<OptionsEntrypointOptions>> {\n const views = await super.getViews();\n\n for (const view of views.values()) {\n const {openInTab, ...options} = view.options;\n\n view.options = options;\n }\n\n return views;\n }\n\n public allowMultiple(): boolean {\n return false;\n }\n}\n"],"mappings":"AAAA,OAAO,mBAAmB;AAC1B,OAAO,kBAAkB;AAEzB,SAAQ,qBAAoB;AAK5B,SAAmD,sBAAqB;AAExE,MAAO,8BAAsB,cAAwC;AAAA,EAC1D,YAAY,QAAwB;AACvC,UAAM,MAAM;AAAA,EAChB;AAAA,EAEO,OAAuB;AAC1B,WAAO,eAAe;AAAA,EAC1B;AAAA,EAEU,YAAwD;AAC9D,WAAO,IAAI,cAAc,KAAK,MAAM;AAAA,EACxC;AAAA,EAEU,YAA+D;AACrE,WAAO,IAAI,aAAa,KAAK,QAAQ,WAAW,IAAI;AAAA,EACxD;AAAA,EAEA,MAAgB,WAAyD;AACrE,UAAM,QAAQ,MAAM,MAAM,SAAS;AAEnC,eAAW,QAAQ,MAAM,OAAO,GAAG;AAC/B,YAAM,EAAC,WAAW,GAAG,QAAO,IAAI,KAAK;AAErC,WAAK,UAAU;AAAA,IACnB;AAEA,WAAO;AAAA,EACX;AAAA,EAEO,gBAAyB;AAC5B,WAAO;AAAA,EACX;AACJ;","names":[]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import AbstractParsedFinder from "./AbstractParsedFinder.js";
|
|
2
2
|
import { ReadonlyConfig } from "../../../types/config.js";
|
|
3
3
|
import { PluginHandlerKeys } from "../../../types/plugin.js";
|
|
4
4
|
import { EntrypointFile, EntrypointOptions, EntrypointParser, EntrypointType } from "../../../types/entrypoint.js";
|
|
5
|
-
export default class<O extends EntrypointOptions> extends
|
|
5
|
+
export default class<O extends EntrypointOptions> extends AbstractParsedFinder<O> {
|
|
6
6
|
protected readonly key: PluginHandlerKeys;
|
|
7
|
-
protected readonly finder:
|
|
8
|
-
constructor(config: ReadonlyConfig, key: PluginHandlerKeys, finder:
|
|
7
|
+
protected readonly finder: AbstractParsedFinder<O>;
|
|
8
|
+
constructor(config: ReadonlyConfig, key: PluginHandlerKeys, finder: AbstractParsedFinder<O>);
|
|
9
9
|
type(): EntrypointType;
|
|
10
10
|
protected getParser(): EntrypointParser<O>;
|
|
11
11
|
protected getFiles(): Promise<Set<EntrypointFile>>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import _ from "lodash";
|
|
2
|
-
import
|
|
2
|
+
import AbstractParsedFinder from "./AbstractParsedFinder.js";
|
|
3
3
|
import { FileLayer, setFilePrecedence } from "./utils/filePrecedence.js";
|
|
4
4
|
import { processPluginHandler } from "./../../../cli/resolvers/plugin.js";
|
|
5
|
-
class PluginFinder_default extends
|
|
5
|
+
class PluginFinder_default extends AbstractParsedFinder {
|
|
6
6
|
constructor(config, key, finder) {
|
|
7
7
|
super(config);
|
|
8
8
|
this.key = key;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/PluginFinder.ts"],"sourcesContent":["import _ from \"lodash\";\n\nimport
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/PluginFinder.ts"],"sourcesContent":["import _ from \"lodash\";\n\nimport AbstractParsedFinder from \"./AbstractParsedFinder\";\nimport {FileLayer, setFilePrecedence} from \"./utils/filePrecedence\";\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 AbstractParsedFinder<O> {\n constructor(\n config: ReadonlyConfig,\n protected readonly key: PluginHandlerKeys,\n protected readonly finder: AbstractParsedFinder<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 (let pluginIndex = 0; pluginIndex < pluginResult.length; pluginIndex++) {\n const {name, result} = pluginResult[pluginIndex];\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 (let sequence = 0; sequence < endpoints.length; sequence++) {\n const endpoint = endpoints[sequence];\n const file = _.isString(endpoint) ? this.resolve(name, endpoint) : endpoint;\n\n setFilePrecedence(file, {\n layer: FileLayer.Plugin,\n order: pluginIndex,\n sequence,\n });\n files.add(file);\n }\n }\n\n return files;\n }\n}\n"],"mappings":"AAAA,OAAO,OAAO;AAEd,OAAO,0BAA0B;AACjC,SAAQ,WAAW,yBAAwB;AAE3C,SAAQ,4BAA2B;AAMnC,MAAO,6BAAmD,qBAAwB;AAAA,EAC9E,YACI,QACmB,KACA,QACrB;AACE,UAAM,MAAM;AAHO;AACA;AAAA,EAGvB;AAAA,EAJuB;AAAA,EACA;AAAA,EAKhB,OAAuB;AAC1B,WAAO,KAAK,OAAO,KAAK;AAAA,EAC5B;AAAA,EAEU,YAAiC;AACvC,WAAO,KAAK,OAAO,OAAO;AAAA,EAC9B;AAAA,EAEA,MAAgB,WAAyC;AACrD,UAAM,eAAe,MAAM,MAAM;AAAA,MAC7B,qBAAqB,KAAK,OAAO,SAAS,KAAK,KAAK;AAAA,QAChD,QAAQ,KAAK;AAAA,MACjB,CAAC;AAAA,IACL;AAEA,UAAM,QAAQ,oBAAI,IAAoB;AAEtC,aAAS,cAAc,GAAG,cAAc,aAAa,QAAQ,eAAe;AACxE,YAAM,EAAC,MAAM,OAAM,IAAI,aAAa,WAAW;AAC/C,UAAI,YAA4C,CAAC;AAEjD,UAAI,EAAE,UAAU,MAAM,GAAG;AACrB,oBAAY,CAAC,KAAK,GAAG;AAAA,MACzB,WAAW,EAAE,SAAS,MAAM,KAAK,EAAE,cAAc,MAAM,GAAG;AACtD,oBAAY,CAAC,MAAiC;AAAA,MAClD,WAAW,EAAE,QAAQ,MAAM,GAAG;AAC1B,oBAAY;AAAA,MAChB,WAAW,EAAE,MAAM,MAAM,GAAG;AACxB,oBAAY,MAAM,KAAK,MAA6B;AAAA,MACxD;AAEA,eAAS,WAAW,GAAG,WAAW,UAAU,QAAQ,YAAY;AAC5D,cAAM,WAAW,UAAU,QAAQ;AACnC,cAAM,OAAO,EAAE,SAAS,QAAQ,IAAI,KAAK,QAAQ,MAAM,QAAQ,IAAI;AAEnE,0BAAkB,MAAM;AAAA,UACpB,OAAO,UAAU;AAAA,UACjB,OAAO;AAAA,UACP;AAAA,QACJ,CAAC;AACD,cAAM,IAAI,IAAI;AAAA,MAClB;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AACJ;","names":[]}
|