adnbn 0.9.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.
Files changed (53) hide show
  1. package/dist/cli/builders/manifest/ManifestBase.d.ts +4 -1
  2. package/dist/cli/builders/manifest/ManifestBase.js +19 -0
  3. package/dist/cli/builders/manifest/ManifestBase.js.map +1 -1
  4. package/dist/cli/entrypoint/finder/AbstractEntrypointFinder.d.ts +2 -2
  5. package/dist/cli/entrypoint/finder/AbstractEntrypointFinder.js +2 -2
  6. package/dist/cli/entrypoint/finder/AbstractEntrypointFinder.js.map +1 -1
  7. package/dist/cli/entrypoint/finder/{AbstractOptionsFinder.js → AbstractParsedFinder.js} +3 -3
  8. package/dist/cli/entrypoint/finder/AbstractParsedFinder.js.map +1 -0
  9. package/dist/cli/entrypoint/finder/OptionsFinder.d.ts +13 -0
  10. package/dist/cli/entrypoint/finder/OptionsFinder.js +33 -0
  11. package/dist/cli/entrypoint/finder/OptionsFinder.js.map +1 -0
  12. package/dist/cli/entrypoint/finder/PluginFinder.d.ts +4 -4
  13. package/dist/cli/entrypoint/finder/PluginFinder.js +2 -2
  14. package/dist/cli/entrypoint/finder/PluginFinder.js.map +1 -1
  15. package/dist/cli/entrypoint/finder/index.d.ts +2 -1
  16. package/dist/cli/entrypoint/finder/index.js +20 -18
  17. package/dist/cli/entrypoint/finder/index.js.map +1 -1
  18. package/dist/cli/entrypoint/finder/tests/fixtures/options/discovery/account.options.d.ts +1 -0
  19. package/dist/cli/entrypoint/finder/tests/fixtures/options/discovery/advanced.options/index.d.ts +1 -0
  20. package/dist/cli/entrypoint/parser/OptionsParser.d.ts +6 -0
  21. package/dist/cli/entrypoint/parser/OptionsParser.js +16 -0
  22. package/dist/cli/entrypoint/parser/OptionsParser.js.map +1 -0
  23. package/dist/cli/entrypoint/parser/index.d.ts +1 -0
  24. package/dist/cli/entrypoint/parser/index.js +16 -14
  25. package/dist/cli/entrypoint/parser/index.js.map +1 -1
  26. package/dist/cli/plugins/index.d.ts +1 -0
  27. package/dist/cli/plugins/index.js +22 -20
  28. package/dist/cli/plugins/index.js.map +1 -1
  29. package/dist/cli/plugins/options/Options.d.ts +10 -0
  30. package/dist/cli/plugins/options/Options.js +24 -0
  31. package/dist/cli/plugins/options/Options.js.map +1 -0
  32. package/dist/cli/plugins/options/index.d.ts +2 -0
  33. package/dist/cli/plugins/options/index.js +41 -0
  34. package/dist/cli/plugins/options/index.js.map +1 -0
  35. package/dist/cli/plugins/view/index.js +1 -1
  36. package/dist/cli/plugins/view/index.js.map +1 -1
  37. package/dist/cli/resolvers/config.js +2 -0
  38. package/dist/cli/resolvers/config.js.map +1 -1
  39. package/dist/main/index.d.ts +1 -0
  40. package/dist/main/index.js +1 -0
  41. package/dist/main/index.js.map +1 -1
  42. package/dist/main/options.d.ts +3 -0
  43. package/dist/main/options.js +7 -0
  44. package/dist/main/options.js.map +1 -0
  45. package/dist/types/manifest.d.ts +14 -0
  46. package/dist/types/manifest.js.map +1 -1
  47. package/dist/types/options.d.ts +9 -0
  48. package/dist/types/options.js +1 -0
  49. package/dist/types/options.js.map +1 -0
  50. package/dist/types/plugin.d.ts +2 -1
  51. package/package.json +1 -1
  52. package/dist/cli/entrypoint/finder/AbstractOptionsFinder.js.map +0 -1
  53. /package/dist/cli/entrypoint/finder/{AbstractOptionsFinder.d.ts → AbstractParsedFinder.d.ts} +0 -0
@@ -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":"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","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"]}
@@ -1,7 +1,7 @@
1
- import AbstractOptionsFinder from "./AbstractOptionsFinder.js";
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 AbstractOptionsFinder<O> {
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 AbstractOptionsFinder from "./AbstractOptionsFinder.js";
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 AbstractOptionsFinder {
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 AbstractOptionsFinder from \"./AbstractOptionsFinder\";\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 AbstractOptionsFinder<O> {\n protected fileExtensionsPattern: string;\n\n protected possibleIndexFiles: Set<string>;\n\n protected constructor(config: ReadonlyConfig) {\n super(config);\n\n this.fileExtensionsPattern = [...EntrypointFileExtensions].map(ext => ext.replace(\".\", \"\\\\.\")).join(\"|\");\n\n this.possibleIndexFiles = new Set([...EntrypointFileExtensions].map(ext => `index.${ext}`));\n }\n\n public canMerge(): boolean {\n return false;\n }\n\n protected async getFiles(): Promise<Set<EntrypointFile>> {\n const entrypoint = this.type();\n\n let files = new Set<EntrypointFile>();\n\n const appFiles = this.findFiles(getAppSourcePath(this.config));\n\n 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":"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","names":[]}
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":"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","names":[]}
@@ -1,5 +1,5 @@
1
1
  import AbstractFinder from "./AbstractFinder.js";
2
- class AbstractOptionsFinder_default extends AbstractFinder {
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
- AbstractOptionsFinder_default as default
81
+ AbstractParsedFinder_default as default
82
82
  };
83
- //# sourceMappingURL=AbstractOptionsFinder.js.map
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 AbstractOptionsFinder from "./AbstractOptionsFinder.js";
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 AbstractOptionsFinder<O> {
5
+ export default class<O extends EntrypointOptions> extends AbstractParsedFinder<O> {
6
6
  protected readonly key: PluginHandlerKeys;
7
- protected readonly finder: AbstractOptionsFinder<O>;
8
- constructor(config: ReadonlyConfig, key: PluginHandlerKeys, finder: AbstractOptionsFinder<O>);
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 AbstractOptionsFinder from "./AbstractOptionsFinder.js";
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 AbstractOptionsFinder {
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 AbstractOptionsFinder from \"./AbstractOptionsFinder\";\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 AbstractOptionsFinder<O> {\n constructor(\n config: ReadonlyConfig,\n protected readonly key: PluginHandlerKeys,\n protected readonly finder: AbstractOptionsFinder<O>\n ) {\n super(config);\n }\n\n public type(): EntrypointType {\n return this.finder.type();\n }\n\n protected getParser(): EntrypointParser<O> {\n return this.finder.parser();\n }\n\n protected async getFiles(): Promise<Set<EntrypointFile>> {\n const pluginResult = await Array.fromAsync(\n processPluginHandler(this.config.plugins, this.key, {\n config: this.config,\n })\n );\n\n const files = new Set<EntrypointFile>();\n\n for (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,2BAA2B;AAClC,SAAQ,WAAW,yBAAwB;AAE3C,SAAQ,4BAA2B;AAMnC,MAAO,6BAAmD,sBAAyB;AAAA,EAC/E,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":[]}
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":[]}
@@ -3,7 +3,7 @@ export { default as AbstractEntrypointFinder } from "./AbstractEntrypointFinder.
3
3
  export { default as AbstractPluginFinder } from "./AbstractPluginFinder.js";
4
4
  export { default as AbstractViewFinder, type ViewItem, type ViewItems, type ViewAliasToFilename, type ViewFileToFilename, } from "./AbstractViewFinder.js";
5
5
  export { default as ViewCspFinder } from "./ViewCspFinder.js";
6
- export { default as AbstractOptionsFinder } from "./AbstractOptionsFinder.js";
6
+ export { default as AbstractParsedFinder } from "./AbstractParsedFinder.js";
7
7
  export { default as BackgroundFinder } from "./BackgroundFinder.js";
8
8
  export { default as CommandFinder } from "./CommandFinder.js";
9
9
  export { default as ContentFinder } from "./ContentFinder.js";
@@ -11,6 +11,7 @@ export { default as IconFinder, type IconName, type IconGroups, type IconItem, t
11
11
  export { default as LocaleFinder } from "./LocaleFinder.js";
12
12
  export { default as OffscreenFinder } from "./OffscreenFinder.js";
13
13
  export { default as OffscreenViewFinder } from "./OffscreenViewFinder.js";
14
+ export { default as OptionsFinder } from "./OptionsFinder.js";
14
15
  export { default as PageFinder } from "./PageFinder.js";
15
16
  export { default as PopupFinder } from "./PopupFinder.js";
16
17
  export { default as RelayFinder } from "./RelayFinder.js";
@@ -5,7 +5,7 @@ import {
5
5
  default as default5
6
6
  } from "./AbstractViewFinder.js";
7
7
  import { default as default6 } from "./ViewCspFinder.js";
8
- import { default as default7 } from "./AbstractOptionsFinder.js";
8
+ import { default as default7 } from "./AbstractParsedFinder.js";
9
9
  import { default as default8 } from "./BackgroundFinder.js";
10
10
  import { default as default9 } from "./CommandFinder.js";
11
11
  import { default as default10 } from "./ContentFinder.js";
@@ -13,18 +13,19 @@ import { default as default11 } from "./IconFinder.js";
13
13
  import { default as default12 } from "./LocaleFinder.js";
14
14
  import { default as default13 } from "./OffscreenFinder.js";
15
15
  import { default as default14 } from "./OffscreenViewFinder.js";
16
- import { default as default15 } from "./PageFinder.js";
17
- import { default as default16 } from "./PopupFinder.js";
18
- import { default as default17 } from "./RelayFinder.js";
19
- import { default as default18 } from "./SandboxFinder.js";
20
- import { default as default19 } from "./SandboxViewFinder.js";
21
- import { default as default20 } from "./ServiceFinder.js";
22
- import { default as default21 } from "./PluginFinder.js";
23
- import { default as default22 } from "./SidebarFinder.js";
16
+ import { default as default15 } from "./OptionsFinder.js";
17
+ import { default as default16 } from "./PageFinder.js";
18
+ import { default as default17 } from "./PopupFinder.js";
19
+ import { default as default18 } from "./RelayFinder.js";
20
+ import { default as default19 } from "./SandboxFinder.js";
21
+ import { default as default20 } from "./SandboxViewFinder.js";
22
+ import { default as default21 } from "./ServiceFinder.js";
23
+ import { default as default22 } from "./PluginFinder.js";
24
+ import { default as default23 } from "./SidebarFinder.js";
24
25
  export {
25
26
  default3 as AbstractEntrypointFinder,
26
27
  default2 as AbstractFinder,
27
- default7 as AbstractOptionsFinder,
28
+ default7 as AbstractParsedFinder,
28
29
  default4 as AbstractPluginFinder,
29
30
  default5 as AbstractViewFinder,
30
31
  default8 as BackgroundFinder,
@@ -34,14 +35,15 @@ export {
34
35
  default12 as LocaleFinder,
35
36
  default13 as OffscreenFinder,
36
37
  default14 as OffscreenViewFinder,
37
- default15 as PageFinder,
38
- default21 as PluginFinder,
39
- default16 as PopupFinder,
40
- default17 as RelayFinder,
41
- default18 as SandboxFinder,
42
- default19 as SandboxViewFinder,
43
- default20 as ServiceFinder,
44
- default22 as SidebarFinder,
38
+ default15 as OptionsFinder,
39
+ default16 as PageFinder,
40
+ default22 as PluginFinder,
41
+ default17 as PopupFinder,
42
+ default18 as RelayFinder,
43
+ default19 as SandboxFinder,
44
+ default20 as SandboxViewFinder,
45
+ default21 as ServiceFinder,
46
+ default23 as SidebarFinder,
45
47
  default6 as ViewCspFinder
46
48
  };
47
49
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/entrypoint/finder/index.ts"],"sourcesContent":["export {default as AbstractFinder} from \"./AbstractFinder\";\nexport {default as AbstractEntrypointFinder} from \"./AbstractEntrypointFinder\";\nexport {default as AbstractPluginFinder} from \"./AbstractPluginFinder\";\nexport {\n default as AbstractViewFinder,\n type ViewItem,\n type ViewItems,\n type ViewAliasToFilename,\n type ViewFileToFilename,\n} from \"./AbstractViewFinder\";\nexport {default as ViewCspFinder} from \"./ViewCspFinder\";\nexport {default as AbstractOptionsFinder} from \"./AbstractOptionsFinder\";\nexport {default as BackgroundFinder} from \"./BackgroundFinder\";\nexport {default as CommandFinder} from \"./CommandFinder\";\nexport {default as ContentFinder} from \"./ContentFinder\";\nexport {default as IconFinder, type IconName, type IconGroups, type IconItem, type IconItems} from \"./IconFinder\";\nexport {default as LocaleFinder} from \"./LocaleFinder\";\nexport {default as OffscreenFinder} from \"./OffscreenFinder\";\nexport {default as OffscreenViewFinder} from \"./OffscreenViewFinder\";\nexport {default as PageFinder} from \"./PageFinder\";\nexport {default as PopupFinder} from \"./PopupFinder\";\nexport {default as RelayFinder} from \"./RelayFinder\";\nexport {default as SandboxFinder} from \"./SandboxFinder\";\nexport {default as SandboxViewFinder} from \"./SandboxViewFinder\";\nexport {default as ServiceFinder} from \"./ServiceFinder\";\nexport {default as PluginFinder} from \"./PluginFinder\";\nexport {default as SidebarFinder} from \"./SidebarFinder\";\n"],"mappings":"AAAA,SAAmB,WAAXA,gBAAgC;AACxC,SAAmB,WAAXA,gBAA0C;AAClD,SAAmB,WAAXA,gBAAsC;AAC9C;AAAA,EACe,WAAXA;AAAA,OAKG;AACP,SAAmB,WAAXA,gBAA+B;AACvC,SAAmB,WAAXA,gBAAuC;AAC/C,SAAmB,WAAXA,gBAAkC;AAC1C,SAAmB,WAAXA,gBAA+B;AACvC,SAAmB,WAAXA,iBAA+B;AACvC,SAAmB,WAAXA,iBAA2F;AACnG,SAAmB,WAAXA,iBAA8B;AACtC,SAAmB,WAAXA,iBAAiC;AACzC,SAAmB,WAAXA,iBAAqC;AAC7C,SAAmB,WAAXA,iBAA4B;AACpC,SAAmB,WAAXA,iBAA6B;AACrC,SAAmB,WAAXA,iBAA6B;AACrC,SAAmB,WAAXA,iBAA+B;AACvC,SAAmB,WAAXA,iBAAmC;AAC3C,SAAmB,WAAXA,iBAA+B;AACvC,SAAmB,WAAXA,iBAA8B;AACtC,SAAmB,WAAXA,iBAA+B;","names":["default"]}
1
+ {"version":3,"sources":["../../../../src/cli/entrypoint/finder/index.ts"],"sourcesContent":["export {default as AbstractFinder} from \"./AbstractFinder\";\nexport {default as AbstractEntrypointFinder} from \"./AbstractEntrypointFinder\";\nexport {default as AbstractPluginFinder} from \"./AbstractPluginFinder\";\nexport {\n default as AbstractViewFinder,\n type ViewItem,\n type ViewItems,\n type ViewAliasToFilename,\n type ViewFileToFilename,\n} from \"./AbstractViewFinder\";\nexport {default as ViewCspFinder} from \"./ViewCspFinder\";\nexport {default as AbstractParsedFinder} from \"./AbstractParsedFinder\";\nexport {default as BackgroundFinder} from \"./BackgroundFinder\";\nexport {default as CommandFinder} from \"./CommandFinder\";\nexport {default as ContentFinder} from \"./ContentFinder\";\nexport {default as IconFinder, type IconName, type IconGroups, type IconItem, type IconItems} from \"./IconFinder\";\nexport {default as LocaleFinder} from \"./LocaleFinder\";\nexport {default as OffscreenFinder} from \"./OffscreenFinder\";\nexport {default as OffscreenViewFinder} from \"./OffscreenViewFinder\";\nexport {default as OptionsFinder} from \"./OptionsFinder\";\nexport {default as PageFinder} from \"./PageFinder\";\nexport {default as PopupFinder} from \"./PopupFinder\";\nexport {default as RelayFinder} from \"./RelayFinder\";\nexport {default as SandboxFinder} from \"./SandboxFinder\";\nexport {default as SandboxViewFinder} from \"./SandboxViewFinder\";\nexport {default as ServiceFinder} from \"./ServiceFinder\";\nexport {default as PluginFinder} from \"./PluginFinder\";\nexport {default as SidebarFinder} from \"./SidebarFinder\";\n"],"mappings":"AAAA,SAAmB,WAAXA,gBAAgC;AACxC,SAAmB,WAAXA,gBAA0C;AAClD,SAAmB,WAAXA,gBAAsC;AAC9C;AAAA,EACe,WAAXA;AAAA,OAKG;AACP,SAAmB,WAAXA,gBAA+B;AACvC,SAAmB,WAAXA,gBAAsC;AAC9C,SAAmB,WAAXA,gBAAkC;AAC1C,SAAmB,WAAXA,gBAA+B;AACvC,SAAmB,WAAXA,iBAA+B;AACvC,SAAmB,WAAXA,iBAA2F;AACnG,SAAmB,WAAXA,iBAA8B;AACtC,SAAmB,WAAXA,iBAAiC;AACzC,SAAmB,WAAXA,iBAAqC;AAC7C,SAAmB,WAAXA,iBAA+B;AACvC,SAAmB,WAAXA,iBAA4B;AACpC,SAAmB,WAAXA,iBAA6B;AACrC,SAAmB,WAAXA,iBAA6B;AACrC,SAAmB,WAAXA,iBAA+B;AACvC,SAAmB,WAAXA,iBAAmC;AAC3C,SAAmB,WAAXA,iBAA+B;AACvC,SAAmB,WAAXA,iBAA8B;AACtC,SAAmB,WAAXA,iBAA+B;","names":["default"]}
@@ -0,0 +1,6 @@
1
+ import ViewCspParser from "./ViewCspParser.js";
2
+ import { OptionsEntrypointOptions } from "../../../types/options.js";
3
+ export default class extends ViewCspParser<OptionsEntrypointOptions> {
4
+ protected definition(): string;
5
+ protected schema(): typeof this.CommonPropertiesSchema;
6
+ }
@@ -0,0 +1,16 @@
1
+ import { z } from "zod";
2
+ import ViewCspParser from "./ViewCspParser.js";
3
+ class OptionsParser_default extends ViewCspParser {
4
+ definition() {
5
+ return "defineOptions";
6
+ }
7
+ schema() {
8
+ return super.schema().extend({
9
+ openInTab: z.boolean().optional()
10
+ });
11
+ }
12
+ }
13
+ export {
14
+ OptionsParser_default as default
15
+ };
16
+ //# sourceMappingURL=OptionsParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/cli/entrypoint/parser/OptionsParser.ts"],"sourcesContent":["import {z} from \"zod\";\n\nimport ViewCspParser from \"./ViewCspParser\";\n\nimport {OptionsEntrypointOptions} from \"@typing/options\";\n\nexport default class extends ViewCspParser<OptionsEntrypointOptions> {\n protected definition(): string {\n return \"defineOptions\";\n }\n\n protected schema(): typeof this.CommonPropertiesSchema {\n return super.schema().extend({\n openInTab: z.boolean().optional(),\n });\n }\n}\n"],"mappings":"AAAA,SAAQ,SAAQ;AAEhB,OAAO,mBAAmB;AAI1B,MAAO,8BAAsB,cAAwC;AAAA,EACvD,aAAqB;AAC3B,WAAO;AAAA,EACX;AAAA,EAEU,SAA6C;AACnD,WAAO,MAAM,OAAO,EAAE,OAAO;AAAA,MACzB,WAAW,EAAE,QAAQ,EAAE,SAAS;AAAA,IACpC,CAAC;AAAA,EACL;AACJ;","names":[]}