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.
- 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/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/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/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/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/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/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/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/package.json +1 -1
- package/dist/cli/entrypoint/finder/AbstractOptionsFinder.js.map +0 -1
- /package/dist/cli/entrypoint/finder/{AbstractOptionsFinder.d.ts → AbstractParsedFinder.d.ts} +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { default as BackgroundParser } from "./BackgroundParser.js";
|
|
2
2
|
export { default as CommandParser } from "./CommandParser.js";
|
|
3
3
|
export { default as ContentParser } from "./ContentParser.js";
|
|
4
|
+
export { default as OptionsParser } from "./OptionsParser.js";
|
|
4
5
|
export { default as PageParser } from "./PageParser.js";
|
|
5
6
|
export { default as PopupParser } from "./PopupParser.js";
|
|
6
7
|
export { default as RelayParser } from "./RelayParser.js";
|
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
import { default as default2 } from "./BackgroundParser.js";
|
|
2
2
|
import { default as default3 } from "./CommandParser.js";
|
|
3
3
|
import { default as default4 } from "./ContentParser.js";
|
|
4
|
-
import { default as default5 } from "./
|
|
5
|
-
import { default as default6 } from "./
|
|
6
|
-
import { default as default7 } from "./
|
|
7
|
-
import { default as default8 } from "./
|
|
8
|
-
import { default as default9 } from "./
|
|
9
|
-
import { default as default10 } from "./
|
|
10
|
-
import { default as default11 } from "./
|
|
4
|
+
import { default as default5 } from "./OptionsParser.js";
|
|
5
|
+
import { default as default6 } from "./PageParser.js";
|
|
6
|
+
import { default as default7 } from "./PopupParser.js";
|
|
7
|
+
import { default as default8 } from "./RelayParser.js";
|
|
8
|
+
import { default as default9 } from "./SandboxParser.js";
|
|
9
|
+
import { default as default10 } from "./ServiceParser.js";
|
|
10
|
+
import { default as default11 } from "./SidebarParser.js";
|
|
11
|
+
import { default as default12 } from "./OffscreenParser.js";
|
|
11
12
|
export {
|
|
12
13
|
default2 as BackgroundParser,
|
|
13
14
|
default3 as CommandParser,
|
|
14
15
|
default4 as ContentParser,
|
|
15
|
-
|
|
16
|
-
default5 as
|
|
17
|
-
default6 as
|
|
18
|
-
default7 as
|
|
19
|
-
default8 as
|
|
20
|
-
default9 as
|
|
21
|
-
default10 as
|
|
16
|
+
default12 as OffscreenParser,
|
|
17
|
+
default5 as OptionsParser,
|
|
18
|
+
default6 as PageParser,
|
|
19
|
+
default7 as PopupParser,
|
|
20
|
+
default8 as RelayParser,
|
|
21
|
+
default9 as SandboxParser,
|
|
22
|
+
default10 as ServiceParser,
|
|
23
|
+
default11 as SidebarParser
|
|
22
24
|
};
|
|
23
25
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/cli/entrypoint/parser/index.ts"],"sourcesContent":["export {default as BackgroundParser} from \"./BackgroundParser\";\nexport {default as CommandParser} from \"./CommandParser\";\nexport {default as ContentParser} from \"./ContentParser\";\nexport {default as PageParser} from \"./PageParser\";\nexport {default as PopupParser} from \"./PopupParser\";\nexport {default as RelayParser} from \"./RelayParser\";\nexport {default as SandboxParser} from \"./SandboxParser\";\nexport {default as ServiceParser} from \"./ServiceParser\";\nexport {default as SidebarParser} from \"./SidebarParser\";\nexport {default as OffscreenParser} from \"./OffscreenParser\";\n"],"mappings":"AAAA,SAAmB,WAAXA,gBAAkC;AAC1C,SAAmB,WAAXA,gBAA+B;AACvC,SAAmB,WAAXA,gBAA+B;AACvC,SAAmB,WAAXA,gBAA4B;AACpC,SAAmB,WAAXA,gBAA6B;AACrC,SAAmB,WAAXA,gBAA6B;AACrC,SAAmB,WAAXA,gBAA+B;AACvC,SAAmB,WAAXA,
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/entrypoint/parser/index.ts"],"sourcesContent":["export {default as BackgroundParser} from \"./BackgroundParser\";\nexport {default as CommandParser} from \"./CommandParser\";\nexport {default as ContentParser} from \"./ContentParser\";\nexport {default as OptionsParser} from \"./OptionsParser\";\nexport {default as PageParser} from \"./PageParser\";\nexport {default as PopupParser} from \"./PopupParser\";\nexport {default as RelayParser} from \"./RelayParser\";\nexport {default as SandboxParser} from \"./SandboxParser\";\nexport {default as ServiceParser} from \"./ServiceParser\";\nexport {default as SidebarParser} from \"./SidebarParser\";\nexport {default as OffscreenParser} from \"./OffscreenParser\";\n"],"mappings":"AAAA,SAAmB,WAAXA,gBAAkC;AAC1C,SAAmB,WAAXA,gBAA+B;AACvC,SAAmB,WAAXA,gBAA+B;AACvC,SAAmB,WAAXA,gBAA+B;AACvC,SAAmB,WAAXA,gBAA4B;AACpC,SAAmB,WAAXA,gBAA6B;AACrC,SAAmB,WAAXA,gBAA6B;AACrC,SAAmB,WAAXA,gBAA+B;AACvC,SAAmB,WAAXA,iBAA+B;AACvC,SAAmB,WAAXA,iBAA+B;AACvC,SAAmB,WAAXA,iBAAiC;","names":["default"]}
|
|
@@ -11,6 +11,7 @@ export { default as pluginIcon } from "./icon/index.js";
|
|
|
11
11
|
export { default as pluginLocale } from "./locale/index.js";
|
|
12
12
|
export { default as pluginMeta } from "./meta/index.js";
|
|
13
13
|
export { default as pluginOffscreen } from "./offscreen/index.js";
|
|
14
|
+
export { default as pluginOptions } from "./options/index.js";
|
|
14
15
|
export { default as pluginPage } from "./page/index.js";
|
|
15
16
|
export { default as pluginPopup } from "./popup/index.js";
|
|
16
17
|
export { default as pluginPublic } from "./public.js";
|
|
@@ -11,16 +11,17 @@ import { default as default11 } from "./icon/index.js";
|
|
|
11
11
|
import { default as default12 } from "./locale/index.js";
|
|
12
12
|
import { default as default13 } from "./meta/index.js";
|
|
13
13
|
import { default as default14 } from "./offscreen/index.js";
|
|
14
|
-
import { default as default15 } from "./
|
|
15
|
-
import { default as default16 } from "./
|
|
16
|
-
import { default as default17 } from "./
|
|
17
|
-
import { default as default18 } from "./
|
|
18
|
-
import { default as default19 } from "./
|
|
19
|
-
import { default as default20
|
|
20
|
-
import { default as default21 } from "./
|
|
21
|
-
import { default as default22 } from "./
|
|
22
|
-
import { default as default23 } from "./
|
|
23
|
-
import { default as default24 } from "./
|
|
14
|
+
import { default as default15 } from "./options/index.js";
|
|
15
|
+
import { default as default16 } from "./page/index.js";
|
|
16
|
+
import { default as default17 } from "./popup/index.js";
|
|
17
|
+
import { default as default18 } from "./public.js";
|
|
18
|
+
import { default as default19 } from "./sandbox/index.js";
|
|
19
|
+
import { default as default20 } from "./sidebar/index.js";
|
|
20
|
+
import { default as default21, TypescriptConfig, FileBuilder, VendorDeclaration } from "./typescript/index.js";
|
|
21
|
+
import { default as default22 } from "./react.js";
|
|
22
|
+
import { default as default23 } from "./style/index.js";
|
|
23
|
+
import { default as default24 } from "./view/index.js";
|
|
24
|
+
import { default as default25 } from "./version/index.js";
|
|
24
25
|
export {
|
|
25
26
|
FileBuilder,
|
|
26
27
|
TypescriptConfig,
|
|
@@ -37,16 +38,17 @@ export {
|
|
|
37
38
|
default13 as pluginMeta,
|
|
38
39
|
default14 as pluginOffscreen,
|
|
39
40
|
default9 as pluginOptimization,
|
|
41
|
+
default15 as pluginOptions,
|
|
40
42
|
default10 as pluginOutput,
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
43
|
+
default16 as pluginPage,
|
|
44
|
+
default17 as pluginPopup,
|
|
45
|
+
default18 as pluginPublic,
|
|
46
|
+
default22 as pluginReact,
|
|
47
|
+
default19 as pluginSandbox,
|
|
48
|
+
default20 as pluginSidebar,
|
|
49
|
+
default23 as pluginStyle,
|
|
50
|
+
default21 as pluginTypescript,
|
|
51
|
+
default25 as pluginVersion,
|
|
52
|
+
default24 as pluginView
|
|
51
53
|
};
|
|
52
54
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/plugins/index.ts"],"sourcesContent":["export {default as pluginAsset} from \"./asset\";\nexport {default as pluginBundler} from \"./bundler\";\nexport {default as pluginBackground} from \"./background\";\nexport {default as pluginContent} from \"./content\";\nexport {default as pluginDotenv} from \"./dotenv\";\nexport {default as pluginHtml} from \"./html\";\nexport {default as pluginManifest} from \"./manifest\";\nexport {default as pluginOptimization} from \"./optimization\";\nexport {default as pluginOutput} from \"./output\";\nexport {default as pluginIcon} from \"./icon\";\nexport {default as pluginLocale} from \"./locale\";\nexport {default as pluginMeta} from \"./meta\";\nexport {default as pluginOffscreen} from \"./offscreen\";\nexport {default as pluginPage} from \"./page\";\nexport {default as pluginPopup} from \"./popup\";\nexport {default as pluginPublic} from \"./public\";\nexport {default as pluginSandbox} from \"./sandbox\";\nexport {default as pluginSidebar} from \"./sidebar\";\nexport {default as pluginTypescript, TypescriptConfig, FileBuilder, VendorDeclaration} from \"./typescript\";\nexport {default as pluginReact} from \"./react\";\nexport {default as pluginStyle} from \"./style\";\nexport {default as pluginView} from \"./view\";\nexport {default as pluginVersion} from \"./version\";\n"],"mappings":"AAAA,SAAmB,WAAXA,gBAA6B;AACrC,SAAmB,WAAXA,gBAA+B;AACvC,SAAmB,WAAXA,gBAAkC;AAC1C,SAAmB,WAAXA,gBAA+B;AACvC,SAAmB,WAAXA,gBAA8B;AACtC,SAAmB,WAAXA,gBAA4B;AACpC,SAAmB,WAAXA,gBAAgC;AACxC,SAAmB,WAAXA,gBAAoC;AAC5C,SAAmB,WAAXA,iBAA8B;AACtC,SAAmB,WAAXA,iBAA4B;AACpC,SAAmB,WAAXA,iBAA8B;AACtC,SAAmB,WAAXA,iBAA4B;AACpC,SAAmB,WAAXA,iBAAiC;AACzC,SAAmB,WAAXA,iBAA4B;AACpC,SAAmB,WAAXA,iBAA6B;AACrC,SAAmB,WAAXA,iBAA8B;AACtC,SAAmB,WAAXA,iBAA+B;AACvC,SAAmB,WAAXA,iBAA+B;AACvC,SAAmB,WAAXA,WAA6B,kBAAkB,aAAa,yBAAwB;AAC5F,SAAmB,WAAXA,iBAA6B;AACrC,SAAmB,WAAXA,iBAA6B;AACrC,SAAmB,WAAXA,iBAA4B;AACpC,SAAmB,WAAXA,iBAA+B;","names":["default"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/plugins/index.ts"],"sourcesContent":["export {default as pluginAsset} from \"./asset\";\nexport {default as pluginBundler} from \"./bundler\";\nexport {default as pluginBackground} from \"./background\";\nexport {default as pluginContent} from \"./content\";\nexport {default as pluginDotenv} from \"./dotenv\";\nexport {default as pluginHtml} from \"./html\";\nexport {default as pluginManifest} from \"./manifest\";\nexport {default as pluginOptimization} from \"./optimization\";\nexport {default as pluginOutput} from \"./output\";\nexport {default as pluginIcon} from \"./icon\";\nexport {default as pluginLocale} from \"./locale\";\nexport {default as pluginMeta} from \"./meta\";\nexport {default as pluginOffscreen} from \"./offscreen\";\nexport {default as pluginOptions} from \"./options\";\nexport {default as pluginPage} from \"./page\";\nexport {default as pluginPopup} from \"./popup\";\nexport {default as pluginPublic} from \"./public\";\nexport {default as pluginSandbox} from \"./sandbox\";\nexport {default as pluginSidebar} from \"./sidebar\";\nexport {default as pluginTypescript, TypescriptConfig, FileBuilder, VendorDeclaration} from \"./typescript\";\nexport {default as pluginReact} from \"./react\";\nexport {default as pluginStyle} from \"./style\";\nexport {default as pluginView} from \"./view\";\nexport {default as pluginVersion} from \"./version\";\n"],"mappings":"AAAA,SAAmB,WAAXA,gBAA6B;AACrC,SAAmB,WAAXA,gBAA+B;AACvC,SAAmB,WAAXA,gBAAkC;AAC1C,SAAmB,WAAXA,gBAA+B;AACvC,SAAmB,WAAXA,gBAA8B;AACtC,SAAmB,WAAXA,gBAA4B;AACpC,SAAmB,WAAXA,gBAAgC;AACxC,SAAmB,WAAXA,gBAAoC;AAC5C,SAAmB,WAAXA,iBAA8B;AACtC,SAAmB,WAAXA,iBAA4B;AACpC,SAAmB,WAAXA,iBAA8B;AACtC,SAAmB,WAAXA,iBAA4B;AACpC,SAAmB,WAAXA,iBAAiC;AACzC,SAAmB,WAAXA,iBAA+B;AACvC,SAAmB,WAAXA,iBAA4B;AACpC,SAAmB,WAAXA,iBAA6B;AACrC,SAAmB,WAAXA,iBAA8B;AACtC,SAAmB,WAAXA,iBAA+B;AACvC,SAAmB,WAAXA,iBAA+B;AACvC,SAAmB,WAAXA,WAA6B,kBAAkB,aAAa,yBAAwB;AAC5F,SAAmB,WAAXA,iBAA6B;AACrC,SAAmB,WAAXA,iBAA6B;AACrC,SAAmB,WAAXA,iBAA4B;AACpC,SAAmB,WAAXA,iBAA+B;","names":["default"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import View from "../view/View.js";
|
|
2
|
+
import OptionsFinder from "../../entrypoint/finder/OptionsFinder.js";
|
|
3
|
+
import type { OptionsEntrypointOptions } from "../../../types/options.js";
|
|
4
|
+
import type { ManifestOptions } from "../../../types/manifest.js";
|
|
5
|
+
export default class extends OptionsFinder {
|
|
6
|
+
protected _view?: View<OptionsEntrypointOptions>;
|
|
7
|
+
view(): View<OptionsEntrypointOptions>;
|
|
8
|
+
manifest(): Promise<ManifestOptions | undefined>;
|
|
9
|
+
clear(): this;
|
|
10
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import View from "../view/View.js";
|
|
2
|
+
import OptionsFinder from "./../../../cli/entrypoint/finder/OptionsFinder.js";
|
|
3
|
+
class Options_default extends OptionsFinder {
|
|
4
|
+
_view;
|
|
5
|
+
view() {
|
|
6
|
+
return this._view ?? (this._view = new View(this.config, this));
|
|
7
|
+
}
|
|
8
|
+
async manifest() {
|
|
9
|
+
const [view] = (await this.views()).values();
|
|
10
|
+
if (!view) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const { openInTab } = (await this.plugin().options()).get(view.file) ?? {};
|
|
14
|
+
return { path: view.filename, openInTab };
|
|
15
|
+
}
|
|
16
|
+
clear() {
|
|
17
|
+
this._view = void 0;
|
|
18
|
+
return super.clear();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export {
|
|
22
|
+
Options_default as default
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=Options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/plugins/options/Options.ts"],"sourcesContent":["import View from \"../view/View\";\nimport OptionsFinder from \"@cli/entrypoint/finder/OptionsFinder\";\n\nimport type {OptionsEntrypointOptions} from \"@typing/options\";\nimport type {ManifestOptions} from \"@typing/manifest\";\n\nexport default class extends OptionsFinder {\n protected _view?: View<OptionsEntrypointOptions>;\n\n public view(): View<OptionsEntrypointOptions> {\n return (this._view ??= new View(this.config, this));\n }\n\n public async manifest(): Promise<ManifestOptions | undefined> {\n const [view] = (await this.views()).values();\n\n if (!view) {\n return;\n }\n\n const {openInTab} = (await this.plugin().options()).get(view.file) ?? {};\n\n return {path: view.filename, openInTab};\n }\n\n public clear(): this {\n this._view = undefined;\n\n return super.clear();\n }\n}\n"],"mappings":"AAAA,OAAO,UAAU;AACjB,OAAO,mBAAmB;AAK1B,MAAO,wBAAsB,cAAc;AAAA,EAC7B;AAAA,EAEH,OAAuC;AAC1C,WAAQ,KAAK,UAAL,KAAK,QAAU,IAAI,KAAK,KAAK,QAAQ,IAAI;AAAA,EACrD;AAAA,EAEA,MAAa,WAAiD;AAC1D,UAAM,CAAC,IAAI,KAAK,MAAM,KAAK,MAAM,GAAG,OAAO;AAE3C,QAAI,CAAC,MAAM;AACP;AAAA,IACJ;AAEA,UAAM,EAAC,UAAS,KAAK,MAAM,KAAK,OAAO,EAAE,QAAQ,GAAG,IAAI,KAAK,IAAI,KAAK,CAAC;AAEvE,WAAO,EAAC,MAAM,KAAK,UAAU,UAAS;AAAA,EAC1C;AAAA,EAEO,QAAc;AACjB,SAAK,QAAQ;AAEb,WAAO,MAAM,MAAM;AAAA,EACvB;AACJ;","names":[]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { HtmlRspackPlugin } from "@rspack/core";
|
|
2
|
+
import HtmlRspackTagsPlugin from "html-rspack-tags-plugin";
|
|
3
|
+
import Options from "./Options.js";
|
|
4
|
+
import { definePlugin } from "./../../../main/plugin.js";
|
|
5
|
+
import { EntrypointPlugin } from "./../../../cli/bundler/index.js";
|
|
6
|
+
import { virtualViewModule } from "./../../../cli/virtual/index.js";
|
|
7
|
+
import { Command } from "./../../../types/app.js";
|
|
8
|
+
var options_default = definePlugin(() => {
|
|
9
|
+
let options;
|
|
10
|
+
return {
|
|
11
|
+
name: "adnbn:options",
|
|
12
|
+
startup: ({ config }) => {
|
|
13
|
+
options = new Options(config);
|
|
14
|
+
},
|
|
15
|
+
options: () => options.files(),
|
|
16
|
+
bundler: async ({ config }) => {
|
|
17
|
+
if (await options.empty()) {
|
|
18
|
+
if (config.debug) {
|
|
19
|
+
console.info("Options entry not found");
|
|
20
|
+
}
|
|
21
|
+
return {};
|
|
22
|
+
}
|
|
23
|
+
const plugin = EntrypointPlugin.from(await options.view().entries()).virtual(virtualViewModule);
|
|
24
|
+
if (config.command === Command.Watch) {
|
|
25
|
+
plugin.watch(async () => options.clear().view().entries());
|
|
26
|
+
}
|
|
27
|
+
const htmlPlugins = (await options.view().html()).map((options2) => new HtmlRspackPlugin(options2));
|
|
28
|
+
const tagsPlugins = (await options.view().tags()).map((options2) => new HtmlRspackTagsPlugin(options2));
|
|
29
|
+
return {
|
|
30
|
+
plugins: [plugin, ...htmlPlugins, ...tagsPlugins]
|
|
31
|
+
};
|
|
32
|
+
},
|
|
33
|
+
manifest: async ({ manifest }) => {
|
|
34
|
+
manifest.setOptions(await options.manifest()).appendCsp(await options.csp());
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
});
|
|
38
|
+
export {
|
|
39
|
+
options_default as default
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/plugins/options/index.ts"],"sourcesContent":["import {Configuration as RspackConfig, HtmlRspackPlugin} from \"@rspack/core\";\nimport HtmlRspackTagsPlugin from \"html-rspack-tags-plugin\";\n\nimport Options from \"./Options\";\n\nimport {definePlugin} from \"@main/plugin\";\nimport {EntrypointPlugin} from \"@cli/bundler\";\nimport {virtualViewModule} from \"@cli/virtual/index.js\";\n\nimport {Command} from \"@typing/app\";\n\nexport default definePlugin(() => {\n let options: Options;\n\n return {\n name: \"adnbn:options\",\n startup: ({config}) => {\n options = new Options(config);\n },\n options: () => options.files(),\n bundler: async ({config}) => {\n if (await options.empty()) {\n if (config.debug) {\n console.info(\"Options entry not found\");\n }\n\n return {};\n }\n\n const plugin = EntrypointPlugin.from(await options.view().entries()).virtual(virtualViewModule);\n\n if (config.command === Command.Watch) {\n plugin.watch(async () => options.clear().view().entries());\n }\n\n const htmlPlugins = (await options.view().html()).map(options => new HtmlRspackPlugin(options));\n const tagsPlugins = (await options.view().tags()).map(options => new HtmlRspackTagsPlugin(options));\n\n return {\n plugins: [plugin, ...htmlPlugins, ...tagsPlugins],\n } satisfies RspackConfig;\n },\n manifest: async ({manifest}) => {\n manifest.setOptions(await options.manifest()).appendCsp(await options.csp());\n },\n };\n});\n"],"mappings":"AAAA,SAAuC,wBAAuB;AAC9D,OAAO,0BAA0B;AAEjC,OAAO,aAAa;AAEpB,SAAQ,oBAAmB;AAC3B,SAAQ,wBAAuB;AAC/B,SAAQ,yBAAwB;AAEhC,SAAQ,eAAc;AAEtB,IAAO,kBAAQ,aAAa,MAAM;AAC9B,MAAI;AAEJ,SAAO;AAAA,IACH,MAAM;AAAA,IACN,SAAS,CAAC,EAAC,OAAM,MAAM;AACnB,gBAAU,IAAI,QAAQ,MAAM;AAAA,IAChC;AAAA,IACA,SAAS,MAAM,QAAQ,MAAM;AAAA,IAC7B,SAAS,OAAO,EAAC,OAAM,MAAM;AACzB,UAAI,MAAM,QAAQ,MAAM,GAAG;AACvB,YAAI,OAAO,OAAO;AACd,kBAAQ,KAAK,yBAAyB;AAAA,QAC1C;AAEA,eAAO,CAAC;AAAA,MACZ;AAEA,YAAM,SAAS,iBAAiB,KAAK,MAAM,QAAQ,KAAK,EAAE,QAAQ,CAAC,EAAE,QAAQ,iBAAiB;AAE9F,UAAI,OAAO,YAAY,QAAQ,OAAO;AAClC,eAAO,MAAM,YAAY,QAAQ,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;AAAA,MAC7D;AAEA,YAAM,eAAe,MAAM,QAAQ,KAAK,EAAE,KAAK,GAAG,IAAI,CAAAA,aAAW,IAAI,iBAAiBA,QAAO,CAAC;AAC9F,YAAM,eAAe,MAAM,QAAQ,KAAK,EAAE,KAAK,GAAG,IAAI,CAAAA,aAAW,IAAI,qBAAqBA,QAAO,CAAC;AAElG,aAAO;AAAA,QACH,SAAS,CAAC,QAAQ,GAAG,aAAa,GAAG,WAAW;AAAA,MACpD;AAAA,IACJ;AAAA,IACA,UAAU,OAAO,EAAC,SAAQ,MAAM;AAC5B,eAAS,WAAW,MAAM,QAAQ,SAAS,CAAC,EAAE,UAAU,MAAM,QAAQ,IAAI,CAAC;AAAA,IAC/E;AAAA,EACJ;AACJ,CAAC;","names":["options"]}
|
|
@@ -6,7 +6,7 @@ var view_default = definePlugin(() => {
|
|
|
6
6
|
return {
|
|
7
7
|
name: "adnbn:view",
|
|
8
8
|
bundler: ({ config }) => {
|
|
9
|
-
const entryTypeFilter = onlyViaTopLevelEntry(["page", "popup", "sidebar", "offscreen"]);
|
|
9
|
+
const entryTypeFilter = onlyViaTopLevelEntry(["page", "popup", "sidebar", "offscreen", "options"]);
|
|
10
10
|
return {
|
|
11
11
|
optimization: {
|
|
12
12
|
splitChunks: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/cli/plugins/view/index.ts"],"sourcesContent":["import {NormalModule} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {onlyViaTopLevelEntry} from \"@cli/bundler\";\nimport {getResolvePath, getSourcePath} from \"@cli/resolvers/path\";\n\nexport {default as View} from \"./View\";\n\nexport default definePlugin(() => {\n return {\n name: \"adnbn:view\",\n bundler: ({config}) => {\n const entryTypeFilter = onlyViaTopLevelEntry([\"page\", \"popup\", \"sidebar\", \"offscreen\"]);\n\n return {\n optimization: {\n splitChunks: {\n cacheGroups: {\n adnbnView: {\n minChunks: 2,\n minSize: 0,\n name: \"common.view\",\n test: (module, context) => {\n const nm = module as NormalModule;\n\n if (!nm.resource) {\n return false;\n }\n\n if (nm.resource.startsWith(getResolvePath(getSourcePath(config)))) {\n return false;\n }\n\n return entryTypeFilter(module, context);\n },\n enforce: false,\n reuseExistingChunk: true,\n priority: 50,\n },\n },\n },\n },\n };\n },\n };\n});\n"],"mappings":"AAEA,SAAQ,oBAAmB;AAE3B,SAAQ,4BAA2B;AACnC,SAAQ,gBAAgB,qBAAoB;AAE5C,SAAmB,WAAXA,gBAAsB;AAE9B,IAAO,eAAQ,aAAa,MAAM;AAC9B,SAAO;AAAA,IACH,MAAM;AAAA,IACN,SAAS,CAAC,EAAC,OAAM,MAAM;AACnB,YAAM,kBAAkB,qBAAqB,CAAC,QAAQ,SAAS,WAAW,
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/plugins/view/index.ts"],"sourcesContent":["import {NormalModule} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {onlyViaTopLevelEntry} from \"@cli/bundler\";\nimport {getResolvePath, getSourcePath} from \"@cli/resolvers/path\";\n\nexport {default as View} from \"./View\";\n\nexport default definePlugin(() => {\n return {\n name: \"adnbn:view\",\n bundler: ({config}) => {\n const entryTypeFilter = onlyViaTopLevelEntry([\"page\", \"popup\", \"sidebar\", \"offscreen\", \"options\"]);\n\n return {\n optimization: {\n splitChunks: {\n cacheGroups: {\n adnbnView: {\n minChunks: 2,\n minSize: 0,\n name: \"common.view\",\n test: (module, context) => {\n const nm = module as NormalModule;\n\n if (!nm.resource) {\n return false;\n }\n\n if (nm.resource.startsWith(getResolvePath(getSourcePath(config)))) {\n return false;\n }\n\n return entryTypeFilter(module, context);\n },\n enforce: false,\n reuseExistingChunk: true,\n priority: 50,\n },\n },\n },\n },\n };\n },\n };\n});\n"],"mappings":"AAEA,SAAQ,oBAAmB;AAE3B,SAAQ,4BAA2B;AACnC,SAAQ,gBAAgB,qBAAoB;AAE5C,SAAmB,WAAXA,gBAAsB;AAE9B,IAAO,eAAQ,aAAa,MAAM;AAC9B,SAAO;AAAA,IACH,MAAM;AAAA,IACN,SAAS,CAAC,EAAC,OAAM,MAAM;AACnB,YAAM,kBAAkB,qBAAqB,CAAC,QAAQ,SAAS,WAAW,aAAa,SAAS,CAAC;AAEjG,aAAO;AAAA,QACH,cAAc;AAAA,UACV,aAAa;AAAA,YACT,aAAa;AAAA,cACT,WAAW;AAAA,gBACP,WAAW;AAAA,gBACX,SAAS;AAAA,gBACT,MAAM;AAAA,gBACN,MAAM,CAAC,QAAQ,YAAY;AACvB,wBAAM,KAAK;AAEX,sBAAI,CAAC,GAAG,UAAU;AACd,2BAAO;AAAA,kBACX;AAEA,sBAAI,GAAG,SAAS,WAAW,eAAe,cAAc,MAAM,CAAC,CAAC,GAAG;AAC/D,2BAAO;AAAA,kBACX;AAEA,yBAAO,gBAAgB,QAAQ,OAAO;AAAA,gBAC1C;AAAA,gBACA,SAAS;AAAA,gBACT,oBAAoB;AAAA,gBACpB,UAAU;AAAA,cACd;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ,CAAC;","names":["default"]}
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
pluginOffscreen,
|
|
16
16
|
pluginManifest,
|
|
17
17
|
pluginOptimization,
|
|
18
|
+
pluginOptions,
|
|
18
19
|
pluginOutput,
|
|
19
20
|
pluginPage,
|
|
20
21
|
pluginPopup,
|
|
@@ -306,6 +307,7 @@ var config_default = async (config) => {
|
|
|
306
307
|
pluginMeta(),
|
|
307
308
|
pluginContent(),
|
|
308
309
|
pluginBackground(),
|
|
310
|
+
pluginOptions(),
|
|
309
311
|
pluginPopup(),
|
|
310
312
|
pluginPublic(),
|
|
311
313
|
pluginSidebar(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/resolvers/config.ts"],"sourcesContent":["import {existsSync} from \"fs\";\nimport dotenv, {type DotenvParseOutput} from \"dotenv\";\nimport {loadConfig} from \"c12\";\nimport _ from \"lodash\";\n\nimport {\n pluginAsset,\n pluginBackground,\n pluginBundler,\n pluginContent,\n pluginDotenv,\n pluginHtml,\n pluginIcon,\n pluginLocale,\n pluginMeta,\n pluginOffscreen,\n pluginManifest,\n pluginOptimization,\n pluginOutput,\n pluginPage,\n pluginPopup,\n pluginPublic,\n pluginReact,\n pluginSandbox,\n pluginSidebar,\n pluginStyle,\n pluginTypescript,\n pluginVersion,\n pluginView,\n} from \"../plugins\";\n\nimport {fromRootPath, getAppPath, getAppSourcePath, getConfigFile} from \"../resolvers/path\";\n\nimport type {Config, OptionalConfig, ReadonlyConfig, UserConfig} from \"@typing/config\";\nimport {Command, Mode, Workspace} from \"@typing/app\";\nimport {Browser} from \"@typing/browser\";\nimport {Plugin} from \"@typing/plugin\";\nimport {ManifestVersion} from \"@typing/manifest\";\nimport {Language, LanguageCodes} from \"@typing/locale\";\nimport {DefaultIconGroupName} from \"@typing/icon\";\n\nconst resolveLanguage = (lang?: `${Language}` | Language): Language => {\n if (!lang) {\n return Language.English;\n }\n\n if (LanguageCodes.has(lang)) {\n return lang as Language;\n }\n\n throw new Error(`Invalid language \"${lang}\" provided by config`);\n};\n\nconst resolveWorkspace = (workspace?: Workspace | `${Workspace}`): Workspace => {\n if (!workspace) {\n return Workspace.Single;\n }\n\n if (Object.values(Workspace).includes(workspace as Workspace)) {\n return workspace as Workspace;\n }\n\n throw new Error(`Invalid workspace \"${workspace}\" provided by config`);\n};\n\nconst resolveSharedDir = (workspace: Workspace, sharedDir: string): string => {\n return workspace === Workspace.Multi ? sharedDir : \".\";\n};\n\nconst getUserConfig = async (config: ReadonlyConfig): Promise<UserConfig> => {\n const configFilePath = getConfigFile(config);\n\n if (existsSync(configFilePath)) {\n const {config: userConfig} = await loadConfig<UserConfig>({\n configFile: configFilePath,\n dotenv: true,\n });\n\n if (config.debug) {\n console.log(\"Loaded user config:\", configFilePath);\n }\n\n return userConfig || {};\n } else if (config.debug) {\n console.warn(\"Config file not found:\", configFilePath);\n }\n\n return {};\n};\n\nconst validateConfig = (config: ReadonlyConfig): ReadonlyConfig => {\n const {\n outDir,\n srcDir,\n sharedDir,\n appsDir,\n appSrcDir,\n jsDir,\n cssDir,\n assetsDir,\n htmlDir,\n publicDir,\n localeDir,\n iconSrcDir,\n iconOutDir,\n } = config;\n\n if (\n [\n outDir,\n srcDir,\n sharedDir,\n appsDir,\n appSrcDir,\n jsDir,\n cssDir,\n assetsDir,\n htmlDir,\n publicDir,\n localeDir,\n iconSrcDir,\n iconOutDir,\n ]\n .filter(dir => _.isString(dir))\n .some(dir => dir.includes(\"..\"))\n ) {\n throw new Error('Directory paths cannot contain relative paths (\"..\") for security reasons.');\n }\n\n if (appsDir === sharedDir) {\n throw new Error(\"Apps directory (appsDir) and shared directory (sharedDir) cannot be the same.\");\n }\n\n if (srcDir === outDir) {\n throw new Error(\"Source directory (srcDir) and destination directory (outputDir) cannot be the same.\");\n }\n\n if (srcDir === \".\") {\n throw new Error('Source directory cannot be the root directory (\".\") for security reasons.');\n }\n\n if (publicDir === \".\" || [srcDir, outDir, appSrcDir].includes(publicDir)) {\n throw new Error(\n 'Public directory cannot be the root directory (\".\") or intersect with other root directories for security reasons.'\n );\n }\n\n return config;\n};\n\nconst updateLocalDotenv = (config: ReadonlyConfig): DotenvParseOutput => {\n const {mode, app, browser, manifestVersion} = config;\n\n const localVars: DotenvParseOutput = {\n APP: app,\n BROWSER: browser,\n MODE: mode,\n MANIFEST_VERSION: String(manifestVersion),\n };\n\n Object.assign(process.env, localVars);\n\n return localVars;\n};\n\nconst loadDotenv = (config: ReadonlyConfig): DotenvParseOutput => {\n const {mode, browser, debug} = config;\n\n const preset = [\n `.env.${mode}.${browser}.local`,\n `.env.${mode}.${browser}`,\n `.env.${browser}.local`,\n `.env.${browser}`,\n `.env.${mode}.local`,\n `.env.${mode}`,\n `.env.local`,\n `.env`,\n ];\n\n const appSourcePaths = preset.map(file => getAppSourcePath(config, file));\n const appPaths = preset.map(file => getAppPath(config, file));\n const rootPaths = preset.map(file => fromRootPath(config, file));\n\n const paths = [...appSourcePaths, ...appPaths, ...rootPaths];\n\n const {parsed: fileVars = {}} = dotenv.config({path: paths, quiet: !debug});\n\n return {...fileVars, ...updateLocalDotenv(config)};\n};\n\nexport default async (config: OptionalConfig): Promise<Config> => {\n let {\n command = Command.Build,\n debug = false,\n configFile = \"adnbn.config.ts\",\n browser = Browser.Chrome,\n app = \"myapp\",\n name = app,\n description,\n shortName,\n version = \"VERSION\",\n minimumVersion = \"MINIMUM_VERSION\",\n author = undefined,\n homepage = \"HOMEPAGE\",\n icon = DefaultIconGroupName,\n lang = Language.English,\n incognito,\n specific,\n workspace = Workspace.Single,\n rootDir = \".\",\n outDir = \"dist\",\n srcDir = \"src\",\n sharedDir = \"shared\",\n appsDir = \"apps\",\n appSrcDir = \".\",\n localeDir = \"locales\",\n iconSrcDir = \"icons\",\n iconOutDir = \"icons\",\n jsDir = \"js\",\n cssDir = \"css\",\n assetsDir = \"assets\",\n publicDir = \"public\",\n htmlDir = \".\",\n html = [],\n bundler = {},\n env = {},\n manifest,\n manifestVersion = (new Set<Browser>([Browser.Safari]).has(browser) ? 2 : 3) as ManifestVersion,\n mode = Mode.Development,\n analyze = false,\n plugins = [],\n mergeBackground = false,\n mergeCommands = false,\n mergeContentScripts = false,\n concatContentScripts = true,\n mergeStyles = true,\n mergeIcons = false,\n mergeLocales = true,\n mergePages = false,\n mergePopup = false,\n mergePublic = false,\n multiplePopup = false,\n mergeSidebar = false,\n multipleSidebar = false,\n mergeRelay = false,\n mergeService = false,\n mergeOffscreen = false,\n mergeSandbox = false,\n commonChunks = true,\n artifactName = \"[name]-[browser]-[mv]\",\n assetsFilename = mode === Mode.Production && command === Command.Build && !debug\n ? \"[contenthash:4][ext]\"\n : \"[name]-[contenthash:4][ext]\",\n jsFilename = mode === Mode.Production && command === Command.Build && !debug\n ? \"[contenthash:5].js\"\n : \"[name].js\",\n cssFilename = mode === Mode.Production && command === Command.Build && !debug\n ? \"[contenthash:5].css\"\n : \"[name].css\",\n cssIdentName = mode === Mode.Production && command === Command.Build && !debug\n ? \"[app]-[hash:base64:5]\"\n : \"[local]-[hash:base64:5]\",\n } = config;\n\n let resolvedConfig: Config = {\n command,\n debug,\n mode,\n browser,\n app,\n name,\n description,\n shortName,\n version,\n minimumVersion,\n author,\n homepage,\n lang: resolveLanguage(lang),\n icon,\n incognito,\n specific,\n manifest,\n manifestVersion,\n workspace: resolveWorkspace(workspace),\n rootDir,\n outDir,\n srcDir,\n sharedDir,\n appsDir,\n appSrcDir,\n jsDir,\n cssDir,\n assetsDir,\n publicDir,\n htmlDir,\n localeDir,\n iconSrcDir,\n iconOutDir,\n html,\n bundler,\n env,\n plugins,\n analyze,\n configFile,\n mergeBackground,\n mergeCommands,\n mergeContentScripts,\n concatContentScripts,\n mergeStyles,\n mergeIcons,\n mergeLocales,\n mergePages,\n mergePopup,\n mergePublic,\n multiplePopup,\n mergeSidebar,\n multipleSidebar,\n mergeRelay,\n mergeService,\n mergeOffscreen,\n mergeSandbox,\n commonChunks,\n artifactName,\n assetsFilename,\n jsFilename,\n cssFilename,\n cssIdentName,\n };\n\n let vars = loadDotenv(resolvedConfig);\n\n const {\n plugins: userPlugins = [],\n lang: userLang,\n workspace: userWorkspace,\n ...userConfig\n } = await getUserConfig(resolvedConfig);\n\n resolvedConfig = {\n ...resolvedConfig,\n ...userConfig,\n lang: resolveLanguage(userLang ?? resolvedConfig.lang),\n workspace: resolveWorkspace(userWorkspace ?? resolvedConfig.workspace),\n };\n\n resolvedConfig.sharedDir = resolveSharedDir(resolvedConfig.workspace, resolvedConfig.sharedDir);\n\n resolvedConfig = validateConfig(resolvedConfig);\n\n vars = {...vars, ...loadDotenv(resolvedConfig)};\n\n /**\n * IMPORTANT: the order of plugins matters. Early plugins prepare the environment and artifacts for the following ones\n * (e.g., environment variables/output/transpilation/assets → page/version generation → bundling).\n * Reordering may result in missing artifacts, incorrect configuration, or build failures.\n */\n const corePlugins: Plugin[] = [\n pluginDotenv(vars),\n pluginOutput(),\n pluginOptimization(),\n pluginTypescript(),\n pluginReact(),\n pluginIcon(),\n pluginAsset(),\n pluginStyle(),\n pluginLocale(),\n pluginMeta(),\n pluginContent(),\n pluginBackground(),\n pluginPopup(),\n pluginPublic(),\n pluginSidebar(),\n pluginOffscreen(),\n pluginSandbox(),\n pluginPage(),\n pluginView(),\n pluginHtml(),\n pluginVersion(),\n pluginBundler(),\n pluginManifest(),\n ];\n\n return {\n ...resolvedConfig,\n plugins: [...plugins, ...userPlugins, ...corePlugins],\n };\n};\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/resolvers/config.ts"],"sourcesContent":["import {existsSync} from \"fs\";\nimport dotenv, {type DotenvParseOutput} from \"dotenv\";\nimport {loadConfig} from \"c12\";\nimport _ from \"lodash\";\n\nimport {\n pluginAsset,\n pluginBackground,\n pluginBundler,\n pluginContent,\n pluginDotenv,\n pluginHtml,\n pluginIcon,\n pluginLocale,\n pluginMeta,\n pluginOffscreen,\n pluginManifest,\n pluginOptimization,\n pluginOptions,\n pluginOutput,\n pluginPage,\n pluginPopup,\n pluginPublic,\n pluginReact,\n pluginSandbox,\n pluginSidebar,\n pluginStyle,\n pluginTypescript,\n pluginVersion,\n pluginView,\n} from \"../plugins\";\n\nimport {fromRootPath, getAppPath, getAppSourcePath, getConfigFile} from \"../resolvers/path\";\n\nimport type {Config, OptionalConfig, ReadonlyConfig, UserConfig} from \"@typing/config\";\nimport {Command, Mode, Workspace} from \"@typing/app\";\nimport {Browser} from \"@typing/browser\";\nimport {Plugin} from \"@typing/plugin\";\nimport {ManifestVersion} from \"@typing/manifest\";\nimport {Language, LanguageCodes} from \"@typing/locale\";\nimport {DefaultIconGroupName} from \"@typing/icon\";\n\nconst resolveLanguage = (lang?: `${Language}` | Language): Language => {\n if (!lang) {\n return Language.English;\n }\n\n if (LanguageCodes.has(lang)) {\n return lang as Language;\n }\n\n throw new Error(`Invalid language \"${lang}\" provided by config`);\n};\n\nconst resolveWorkspace = (workspace?: Workspace | `${Workspace}`): Workspace => {\n if (!workspace) {\n return Workspace.Single;\n }\n\n if (Object.values(Workspace).includes(workspace as Workspace)) {\n return workspace as Workspace;\n }\n\n throw new Error(`Invalid workspace \"${workspace}\" provided by config`);\n};\n\nconst resolveSharedDir = (workspace: Workspace, sharedDir: string): string => {\n return workspace === Workspace.Multi ? sharedDir : \".\";\n};\n\nconst getUserConfig = async (config: ReadonlyConfig): Promise<UserConfig> => {\n const configFilePath = getConfigFile(config);\n\n if (existsSync(configFilePath)) {\n const {config: userConfig} = await loadConfig<UserConfig>({\n configFile: configFilePath,\n dotenv: true,\n });\n\n if (config.debug) {\n console.log(\"Loaded user config:\", configFilePath);\n }\n\n return userConfig || {};\n } else if (config.debug) {\n console.warn(\"Config file not found:\", configFilePath);\n }\n\n return {};\n};\n\nconst validateConfig = (config: ReadonlyConfig): ReadonlyConfig => {\n const {\n outDir,\n srcDir,\n sharedDir,\n appsDir,\n appSrcDir,\n jsDir,\n cssDir,\n assetsDir,\n htmlDir,\n publicDir,\n localeDir,\n iconSrcDir,\n iconOutDir,\n } = config;\n\n if (\n [\n outDir,\n srcDir,\n sharedDir,\n appsDir,\n appSrcDir,\n jsDir,\n cssDir,\n assetsDir,\n htmlDir,\n publicDir,\n localeDir,\n iconSrcDir,\n iconOutDir,\n ]\n .filter(dir => _.isString(dir))\n .some(dir => dir.includes(\"..\"))\n ) {\n throw new Error('Directory paths cannot contain relative paths (\"..\") for security reasons.');\n }\n\n if (appsDir === sharedDir) {\n throw new Error(\"Apps directory (appsDir) and shared directory (sharedDir) cannot be the same.\");\n }\n\n if (srcDir === outDir) {\n throw new Error(\"Source directory (srcDir) and destination directory (outputDir) cannot be the same.\");\n }\n\n if (srcDir === \".\") {\n throw new Error('Source directory cannot be the root directory (\".\") for security reasons.');\n }\n\n if (publicDir === \".\" || [srcDir, outDir, appSrcDir].includes(publicDir)) {\n throw new Error(\n 'Public directory cannot be the root directory (\".\") or intersect with other root directories for security reasons.'\n );\n }\n\n return config;\n};\n\nconst updateLocalDotenv = (config: ReadonlyConfig): DotenvParseOutput => {\n const {mode, app, browser, manifestVersion} = config;\n\n const localVars: DotenvParseOutput = {\n APP: app,\n BROWSER: browser,\n MODE: mode,\n MANIFEST_VERSION: String(manifestVersion),\n };\n\n Object.assign(process.env, localVars);\n\n return localVars;\n};\n\nconst loadDotenv = (config: ReadonlyConfig): DotenvParseOutput => {\n const {mode, browser, debug} = config;\n\n const preset = [\n `.env.${mode}.${browser}.local`,\n `.env.${mode}.${browser}`,\n `.env.${browser}.local`,\n `.env.${browser}`,\n `.env.${mode}.local`,\n `.env.${mode}`,\n `.env.local`,\n `.env`,\n ];\n\n const appSourcePaths = preset.map(file => getAppSourcePath(config, file));\n const appPaths = preset.map(file => getAppPath(config, file));\n const rootPaths = preset.map(file => fromRootPath(config, file));\n\n const paths = [...appSourcePaths, ...appPaths, ...rootPaths];\n\n const {parsed: fileVars = {}} = dotenv.config({path: paths, quiet: !debug});\n\n return {...fileVars, ...updateLocalDotenv(config)};\n};\n\nexport default async (config: OptionalConfig): Promise<Config> => {\n let {\n command = Command.Build,\n debug = false,\n configFile = \"adnbn.config.ts\",\n browser = Browser.Chrome,\n app = \"myapp\",\n name = app,\n description,\n shortName,\n version = \"VERSION\",\n minimumVersion = \"MINIMUM_VERSION\",\n author = undefined,\n homepage = \"HOMEPAGE\",\n icon = DefaultIconGroupName,\n lang = Language.English,\n incognito,\n specific,\n workspace = Workspace.Single,\n rootDir = \".\",\n outDir = \"dist\",\n srcDir = \"src\",\n sharedDir = \"shared\",\n appsDir = \"apps\",\n appSrcDir = \".\",\n localeDir = \"locales\",\n iconSrcDir = \"icons\",\n iconOutDir = \"icons\",\n jsDir = \"js\",\n cssDir = \"css\",\n assetsDir = \"assets\",\n publicDir = \"public\",\n htmlDir = \".\",\n html = [],\n bundler = {},\n env = {},\n manifest,\n manifestVersion = (new Set<Browser>([Browser.Safari]).has(browser) ? 2 : 3) as ManifestVersion,\n mode = Mode.Development,\n analyze = false,\n plugins = [],\n mergeBackground = false,\n mergeCommands = false,\n mergeContentScripts = false,\n concatContentScripts = true,\n mergeStyles = true,\n mergeIcons = false,\n mergeLocales = true,\n mergePages = false,\n mergePopup = false,\n mergePublic = false,\n multiplePopup = false,\n mergeSidebar = false,\n multipleSidebar = false,\n mergeRelay = false,\n mergeService = false,\n mergeOffscreen = false,\n mergeSandbox = false,\n commonChunks = true,\n artifactName = \"[name]-[browser]-[mv]\",\n assetsFilename = mode === Mode.Production && command === Command.Build && !debug\n ? \"[contenthash:4][ext]\"\n : \"[name]-[contenthash:4][ext]\",\n jsFilename = mode === Mode.Production && command === Command.Build && !debug\n ? \"[contenthash:5].js\"\n : \"[name].js\",\n cssFilename = mode === Mode.Production && command === Command.Build && !debug\n ? \"[contenthash:5].css\"\n : \"[name].css\",\n cssIdentName = mode === Mode.Production && command === Command.Build && !debug\n ? \"[app]-[hash:base64:5]\"\n : \"[local]-[hash:base64:5]\",\n } = config;\n\n let resolvedConfig: Config = {\n command,\n debug,\n mode,\n browser,\n app,\n name,\n description,\n shortName,\n version,\n minimumVersion,\n author,\n homepage,\n lang: resolveLanguage(lang),\n icon,\n incognito,\n specific,\n manifest,\n manifestVersion,\n workspace: resolveWorkspace(workspace),\n rootDir,\n outDir,\n srcDir,\n sharedDir,\n appsDir,\n appSrcDir,\n jsDir,\n cssDir,\n assetsDir,\n publicDir,\n htmlDir,\n localeDir,\n iconSrcDir,\n iconOutDir,\n html,\n bundler,\n env,\n plugins,\n analyze,\n configFile,\n mergeBackground,\n mergeCommands,\n mergeContentScripts,\n concatContentScripts,\n mergeStyles,\n mergeIcons,\n mergeLocales,\n mergePages,\n mergePopup,\n mergePublic,\n multiplePopup,\n mergeSidebar,\n multipleSidebar,\n mergeRelay,\n mergeService,\n mergeOffscreen,\n mergeSandbox,\n commonChunks,\n artifactName,\n assetsFilename,\n jsFilename,\n cssFilename,\n cssIdentName,\n };\n\n let vars = loadDotenv(resolvedConfig);\n\n const {\n plugins: userPlugins = [],\n lang: userLang,\n workspace: userWorkspace,\n ...userConfig\n } = await getUserConfig(resolvedConfig);\n\n resolvedConfig = {\n ...resolvedConfig,\n ...userConfig,\n lang: resolveLanguage(userLang ?? resolvedConfig.lang),\n workspace: resolveWorkspace(userWorkspace ?? resolvedConfig.workspace),\n };\n\n resolvedConfig.sharedDir = resolveSharedDir(resolvedConfig.workspace, resolvedConfig.sharedDir);\n\n resolvedConfig = validateConfig(resolvedConfig);\n\n vars = {...vars, ...loadDotenv(resolvedConfig)};\n\n /**\n * IMPORTANT: the order of plugins matters. Early plugins prepare the environment and artifacts for the following ones\n * (e.g., environment variables/output/transpilation/assets → page/version generation → bundling).\n * Reordering may result in missing artifacts, incorrect configuration, or build failures.\n */\n const corePlugins: Plugin[] = [\n pluginDotenv(vars),\n pluginOutput(),\n pluginOptimization(),\n pluginTypescript(),\n pluginReact(),\n pluginIcon(),\n pluginAsset(),\n pluginStyle(),\n pluginLocale(),\n pluginMeta(),\n pluginContent(),\n pluginBackground(),\n pluginOptions(),\n pluginPopup(),\n pluginPublic(),\n pluginSidebar(),\n pluginOffscreen(),\n pluginSandbox(),\n pluginPage(),\n pluginView(),\n pluginHtml(),\n pluginVersion(),\n pluginBundler(),\n pluginManifest(),\n ];\n\n return {\n ...resolvedConfig,\n plugins: [...plugins, ...userPlugins, ...corePlugins],\n };\n};\n"],"mappings":"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","names":[]}
|
package/dist/main/index.d.ts
CHANGED
package/dist/main/index.js
CHANGED
package/dist/main/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/main/index.ts"],"sourcesContent":["export * from \"./app\";\nexport * from \"./background\";\nexport * from \"./browser\";\nexport * from \"./command\";\nexport * from \"./config\";\nexport * from \"./content\";\nexport * from \"./csp\";\nexport * from \"./env\";\nexport * from \"./icon\";\nexport * from \"./manifest\";\nexport * from \"./offscreen\";\nexport * from \"./page\";\nexport * from \"./plugin\";\nexport * from \"./popup\";\nexport * from \"./relay\";\nexport * from \"./sandbox\";\nexport * from \"./service\";\nexport * from \"./sidebar\";\nexport * from \"./view\";\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/main/index.ts"],"sourcesContent":["export * from \"./app\";\nexport * from \"./background\";\nexport * from \"./browser\";\nexport * from \"./command\";\nexport * from \"./config\";\nexport * from \"./content\";\nexport * from \"./csp\";\nexport * from \"./env\";\nexport * from \"./icon\";\nexport * from \"./manifest\";\nexport * from \"./offscreen\";\nexport * from \"./options\";\nexport * from \"./page\";\nexport * from \"./plugin\";\nexport * from \"./popup\";\nexport * from \"./relay\";\nexport * from \"./sandbox\";\nexport * from \"./service\";\nexport * from \"./sidebar\";\nexport * from \"./view\";\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/main/options.ts"],"sourcesContent":["import {OptionsConfig, OptionsDefinition, OptionsProps} from \"@typing/options\";\n\nexport type {OptionsDefinition, OptionsProps, OptionsConfig};\n\nexport const defineOptions = (options: OptionsDefinition): OptionsDefinition => {\n return options;\n};\n"],"mappings":"AAIO,MAAM,gBAAgB,CAAC,YAAkD;AAC5E,SAAO;AACX;","names":[]}
|
package/dist/types/manifest.d.ts
CHANGED
|
@@ -83,6 +83,7 @@ export interface ManifestBuilder<T extends CoreManifest = Manifest> {
|
|
|
83
83
|
setContentScripts(contentScripts?: ManifestContentScripts): this;
|
|
84
84
|
setPopup(popup?: ManifestPopup): this;
|
|
85
85
|
setSidebar(sidebar?: ManifestSidebar): this;
|
|
86
|
+
setOptions(options?: ManifestOptions): this;
|
|
86
87
|
addSandbox(sandbox: ManifestSandbox): this;
|
|
87
88
|
appendSandboxes(sandboxes: Iterable<ManifestSandbox>): this;
|
|
88
89
|
addSandboxCsp(csp: SandboxCspConfig): this;
|
|
@@ -150,6 +151,19 @@ export interface ManifestSidebar {
|
|
|
150
151
|
*/
|
|
151
152
|
path?: string;
|
|
152
153
|
}
|
|
154
|
+
export interface ManifestOptions {
|
|
155
|
+
/**
|
|
156
|
+
* Path to the options page HTML file relative to the extension root.
|
|
157
|
+
* Written to `options_ui.page` in the manifest.
|
|
158
|
+
*/
|
|
159
|
+
path: string;
|
|
160
|
+
/**
|
|
161
|
+
* Whether the options page should open in a browser tab.
|
|
162
|
+
* Written to `options_ui.open_in_tab` and defaults to `true` when omitted.
|
|
163
|
+
* Set to `false` to request an embedded page where supported by the browser.
|
|
164
|
+
*/
|
|
165
|
+
openInTab?: boolean;
|
|
166
|
+
}
|
|
153
167
|
export interface ManifestAccessibleResource {
|
|
154
168
|
resources: string[];
|
|
155
169
|
matches?: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/types/manifest.ts"],"sourcesContent":["import {ContentScriptConfig} from \"@typing/content\";\nimport {BackgroundConfig} from \"@typing/background\";\nimport {CommandConfig} from \"@typing/command\";\nimport {Language} from \"@typing/locale\";\nimport {BrowserSpecific, DataCollectionPermission} from \"@typing/browser\";\nimport {CspConfig} from \"@typing/csp\";\nimport {SandboxCspConfig} from \"@typing/sandbox\";\n\ntype ManifestCommon = chrome.runtime.Manifest;\ntype ManifestBase = chrome.runtime.ManifestBase;\ntype ManifestPermission = chrome.runtime.ManifestPermission;\ntype ManifestOptionalPermission = chrome.runtime.ManifestOptionalPermission;\n\nexport const ManifestMatchSchemes: ReadonlySet<string> = new Set<string>([\"http\", \"https\", \"file\", \"ftp\", \"ws\", \"wss\"]);\n\nexport const ManifestSpecialSchemes: ReadonlySet<string> = new Set<string>([\n \"chrome-extension\",\n \"moz-extension\",\n \"data\",\n \"blob\",\n \"filesystem\",\n \"about\",\n \"chrome\",\n \"resource\",\n]);\n\ntype ManifestFixed<T extends ManifestBase> = Omit<T, \"manifest_version\"> & {\n manifest_version: ManifestVersion;\n};\n\ninterface ManifestUnstable {\n permissions?: (ManifestPermission | (string & Record<never, never>))[];\n web_accessible_resources?: string[] | chrome.runtime.ManifestV3[\"web_accessible_resources\"];\n}\n\nexport type ManifestVersion = 2 | 3;\n\nexport enum ManifestIncognito {\n Spanning = \"spanning\",\n Split = \"split\",\n NotAllowed = \"not_allowed\",\n}\n\nexport type ManifestIncognitoValue = ManifestIncognito | `${ManifestIncognito}`;\n\nexport type CoreManifest = ManifestFixed<ManifestBase>;\n\nexport type ChromeManifest = ManifestFixed<ManifestCommon>;\n\nexport type FirefoxManifest = ChromeManifest & {\n action?: chrome.runtime.ManifestV3[\"action\"] & {\n browser_style?: boolean;\n };\n browser_action?: chrome.runtime.ManifestV2[\"browser_action\"] & {\n browser_style?: boolean;\n };\n page_action?: chrome.runtime.ManifestV2[\"page_action\"] & {\n browser_style?: boolean;\n };\n browser_specific_settings?: {\n gecko?: {\n id?: string;\n strict_min_version?: string;\n strict_max_version?: string;\n update_url?: string;\n data_collection_permissions?: {\n required?: [\"none\"] | `${DataCollectionPermission}`[];\n optional?: `${DataCollectionPermission}`[];\n };\n };\n gecko_android?: {\n strict_min_version?: string;\n strict_max_version?: string;\n };\n };\n} & ManifestUnstable;\n\nexport type SafariManifest = ChromeManifest & {\n browser_specific_settings?: {\n safari?: {\n strict_min_version?: string;\n strict_max_version?: string;\n };\n };\n} & ManifestUnstable;\n\nexport type Manifest = ChromeManifest | FirefoxManifest | SafariManifest;\n\nexport type OptionalManifest = Partial<Omit<Manifest, \"manifest_version\">>;\n\nexport interface ManifestBuilder<T extends CoreManifest = Manifest> {\n setName(name: string): this;\n\n setShortName(shortName?: string): this;\n\n setDescription(description?: string): this;\n\n setAuthor(author?: string): this;\n\n setHomepage(homepage?: string): this;\n\n setVersion(version?: string): this;\n\n setIncognito(incognito?: ManifestIncognitoValue): this;\n\n setMinimumVersion(minimumVersion?: string): this;\n\n setLocale(lang?: Language): this;\n\n // Specific settings\n setSpecific(settings?: BrowserSpecific): this;\n\n mergeSpecific(settings: BrowserSpecific): this;\n\n // Icons\n setIcons(icons?: ManifestIcons): this;\n\n setIcon(icon?: string): this; // name of an icon set for manifest.icons\n\n // Entry\n setBackground(background?: ManifestBackground): this;\n\n setCommands(commands?: ManifestCommands): this;\n\n setContentScripts(contentScripts?: ManifestContentScripts): this;\n\n setPopup(popup?: ManifestPopup): this;\n\n setSidebar(sidebar?: ManifestSidebar): this;\n\n // Sandbox\n addSandbox(sandbox: ManifestSandbox): this;\n\n appendSandboxes(sandboxes: Iterable<ManifestSandbox>): this;\n\n addSandboxCsp(csp: SandboxCspConfig): this;\n\n appendSandboxCsp(csps: Iterable<SandboxCspConfig>): this;\n\n // Content Security Policy\n addCsp(csp: CspConfig): this;\n\n appendCsp(csps: Iterable<CspConfig>): this;\n\n // System\n setDependencies(dependencies: ManifestDependencies): this;\n\n // Permissions\n addPermission(permission: ManifestPermission): this;\n\n setPermissions(permissions: ManifestPermissions): this;\n\n appendPermissions(permissions: ManifestPermissions): this;\n\n // Optional Permissions\n addOptionalPermission(permission: ManifestOptionalPermission): this;\n\n setOptionalPermissions(permissions: ManifestOptionalPermissions): this;\n\n appendOptionalPermissions(permissions: ManifestOptionalPermissions): this;\n\n // Host Permissions\n addHostPermission(permission: string): this;\n\n setHostPermissions(permissions: ManifestHostPermissions): this;\n\n appendHostPermissions(permissions: ManifestHostPermissions): this;\n\n // Optional Host Permissions\n addOptionalHostPermission(permission: string): this;\n\n setOptionalHostPermissions(permissions: ManifestHostPermissions): this;\n\n appendOptionalHostPermissions(permissions: ManifestHostPermissions): this;\n\n // Web Accessible Resource\n setAccessibleResource(accessibleResources: ManifestAccessibleResources): this;\n\n appendAccessibleResources(accessibleResources: ManifestAccessibleResources): this;\n\n addAccessibleResource(accessibleResource: ManifestAccessibleResource): this;\n\n getWebAccessibleResources(): ManifestAccessibleResource[];\n\n // Getter\n get(): T;\n\n raw(manifest: OptionalManifest): this;\n}\n\ntype Entry = string;\n\nexport interface ManifestEntry {\n entry: Entry;\n}\n\nexport type ManifestBackground = ManifestEntry & BackgroundConfig;\n\nexport type ManifestContentScript = ManifestEntry & ContentScriptConfig;\nexport type ManifestContentScripts = Set<ManifestContentScript>;\n\nexport type ManifestCommand = CommandConfig;\nexport type ManifestCommands = Set<ManifestCommand>;\n\nexport interface ManifestPopup {\n /**\n * Represents the group name of an icon that can be used in UI elements.\n * This property is optional and, if defined, should typically refer to a string\n * that matches the name of an icon resource available in the application or icon library.\n */\n icon?: string;\n /**\n * Represents an optional title or name or locale key that can be assigned to an entity.\n */\n title?: string;\n /**\n * Represents an optional HTML path.\n */\n path?: string;\n}\n\nexport interface ManifestSidebar {\n /**\n * Represents the group name of an icon that can be used in UI elements.\n * This property is optional and, if defined, should typically refer to a string\n * that matches the name of an icon resource available in the application or icon library.\n */\n icon?: string;\n /**\n * Represents an optional title or name or locale key that can be assigned to an entity.\n */\n title?: string;\n /**\n * Represents an optional HTML path.\n */\n path?: string;\n}\n\nexport interface ManifestAccessibleResource {\n resources: string[];\n matches?: string[];\n extensionIds?: string[];\n useDynamicUrl?: boolean;\n}\n\nexport type ManifestAccessibleResources = Set<ManifestAccessibleResource>;\n\nexport type ManifestSandbox = string;\n\nexport type ManifestSandboxes = Set<ManifestSandbox>;\n\nexport interface ManifestDependency {\n js: Set<string>;\n css: Set<string>;\n assets: Set<string>;\n}\n\nexport type ManifestIcon = Map<number, string>;\n\nexport type ManifestIcons = Map<string, ManifestIcon>;\n\nexport type ManifestDependencies = Map<Entry, ManifestDependency>;\n\nexport type ManifestPermissions = Set<ManifestPermission>;\n\nexport type ManifestOptionalPermissions = Set<ManifestOptionalPermission>;\n\nexport type ManifestHostPermissions = Set<string>;\n"],"mappings":"AAaO,MAAM,uBAA4C,oBAAI,IAAY,CAAC,QAAQ,SAAS,QAAQ,OAAO,MAAM,KAAK,CAAC;AAE/G,MAAM,yBAA8C,oBAAI,IAAY;AAAA,EACvE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;AAaM,IAAK,oBAAL,kBAAKA,uBAAL;AACH,EAAAA,mBAAA,cAAW;AACX,EAAAA,mBAAA,WAAQ;AACR,EAAAA,mBAAA,gBAAa;AAHL,SAAAA;AAAA,GAAA;","names":["ManifestIncognito"]}
|
|
1
|
+
{"version":3,"sources":["../../src/types/manifest.ts"],"sourcesContent":["import {ContentScriptConfig} from \"@typing/content\";\nimport {BackgroundConfig} from \"@typing/background\";\nimport {CommandConfig} from \"@typing/command\";\nimport {Language} from \"@typing/locale\";\nimport {BrowserSpecific, DataCollectionPermission} from \"@typing/browser\";\nimport {CspConfig} from \"@typing/csp\";\nimport {SandboxCspConfig} from \"@typing/sandbox\";\n\ntype ManifestCommon = chrome.runtime.Manifest;\ntype ManifestBase = chrome.runtime.ManifestBase;\ntype ManifestPermission = chrome.runtime.ManifestPermission;\ntype ManifestOptionalPermission = chrome.runtime.ManifestOptionalPermission;\n\nexport const ManifestMatchSchemes: ReadonlySet<string> = new Set<string>([\"http\", \"https\", \"file\", \"ftp\", \"ws\", \"wss\"]);\n\nexport const ManifestSpecialSchemes: ReadonlySet<string> = new Set<string>([\n \"chrome-extension\",\n \"moz-extension\",\n \"data\",\n \"blob\",\n \"filesystem\",\n \"about\",\n \"chrome\",\n \"resource\",\n]);\n\ntype ManifestFixed<T extends ManifestBase> = Omit<T, \"manifest_version\"> & {\n manifest_version: ManifestVersion;\n};\n\ninterface ManifestUnstable {\n permissions?: (ManifestPermission | (string & Record<never, never>))[];\n web_accessible_resources?: string[] | chrome.runtime.ManifestV3[\"web_accessible_resources\"];\n}\n\nexport type ManifestVersion = 2 | 3;\n\nexport enum ManifestIncognito {\n Spanning = \"spanning\",\n Split = \"split\",\n NotAllowed = \"not_allowed\",\n}\n\nexport type ManifestIncognitoValue = ManifestIncognito | `${ManifestIncognito}`;\n\nexport type CoreManifest = ManifestFixed<ManifestBase>;\n\nexport type ChromeManifest = ManifestFixed<ManifestCommon>;\n\nexport type FirefoxManifest = ChromeManifest & {\n action?: chrome.runtime.ManifestV3[\"action\"] & {\n browser_style?: boolean;\n };\n browser_action?: chrome.runtime.ManifestV2[\"browser_action\"] & {\n browser_style?: boolean;\n };\n page_action?: chrome.runtime.ManifestV2[\"page_action\"] & {\n browser_style?: boolean;\n };\n browser_specific_settings?: {\n gecko?: {\n id?: string;\n strict_min_version?: string;\n strict_max_version?: string;\n update_url?: string;\n data_collection_permissions?: {\n required?: [\"none\"] | `${DataCollectionPermission}`[];\n optional?: `${DataCollectionPermission}`[];\n };\n };\n gecko_android?: {\n strict_min_version?: string;\n strict_max_version?: string;\n };\n };\n} & ManifestUnstable;\n\nexport type SafariManifest = ChromeManifest & {\n browser_specific_settings?: {\n safari?: {\n strict_min_version?: string;\n strict_max_version?: string;\n };\n };\n} & ManifestUnstable;\n\nexport type Manifest = ChromeManifest | FirefoxManifest | SafariManifest;\n\nexport type OptionalManifest = Partial<Omit<Manifest, \"manifest_version\">>;\n\nexport interface ManifestBuilder<T extends CoreManifest = Manifest> {\n setName(name: string): this;\n\n setShortName(shortName?: string): this;\n\n setDescription(description?: string): this;\n\n setAuthor(author?: string): this;\n\n setHomepage(homepage?: string): this;\n\n setVersion(version?: string): this;\n\n setIncognito(incognito?: ManifestIncognitoValue): this;\n\n setMinimumVersion(minimumVersion?: string): this;\n\n setLocale(lang?: Language): this;\n\n // Specific settings\n setSpecific(settings?: BrowserSpecific): this;\n\n mergeSpecific(settings: BrowserSpecific): this;\n\n // Icons\n setIcons(icons?: ManifestIcons): this;\n\n setIcon(icon?: string): this; // name of an icon set for manifest.icons\n\n // Entry\n setBackground(background?: ManifestBackground): this;\n\n setCommands(commands?: ManifestCommands): this;\n\n setContentScripts(contentScripts?: ManifestContentScripts): this;\n\n setPopup(popup?: ManifestPopup): this;\n\n setSidebar(sidebar?: ManifestSidebar): this;\n\n setOptions(options?: ManifestOptions): this;\n\n // Sandbox\n addSandbox(sandbox: ManifestSandbox): this;\n\n appendSandboxes(sandboxes: Iterable<ManifestSandbox>): this;\n\n addSandboxCsp(csp: SandboxCspConfig): this;\n\n appendSandboxCsp(csps: Iterable<SandboxCspConfig>): this;\n\n // Content Security Policy\n addCsp(csp: CspConfig): this;\n\n appendCsp(csps: Iterable<CspConfig>): this;\n\n // System\n setDependencies(dependencies: ManifestDependencies): this;\n\n // Permissions\n addPermission(permission: ManifestPermission): this;\n\n setPermissions(permissions: ManifestPermissions): this;\n\n appendPermissions(permissions: ManifestPermissions): this;\n\n // Optional Permissions\n addOptionalPermission(permission: ManifestOptionalPermission): this;\n\n setOptionalPermissions(permissions: ManifestOptionalPermissions): this;\n\n appendOptionalPermissions(permissions: ManifestOptionalPermissions): this;\n\n // Host Permissions\n addHostPermission(permission: string): this;\n\n setHostPermissions(permissions: ManifestHostPermissions): this;\n\n appendHostPermissions(permissions: ManifestHostPermissions): this;\n\n // Optional Host Permissions\n addOptionalHostPermission(permission: string): this;\n\n setOptionalHostPermissions(permissions: ManifestHostPermissions): this;\n\n appendOptionalHostPermissions(permissions: ManifestHostPermissions): this;\n\n // Web Accessible Resource\n setAccessibleResource(accessibleResources: ManifestAccessibleResources): this;\n\n appendAccessibleResources(accessibleResources: ManifestAccessibleResources): this;\n\n addAccessibleResource(accessibleResource: ManifestAccessibleResource): this;\n\n getWebAccessibleResources(): ManifestAccessibleResource[];\n\n // Getter\n get(): T;\n\n raw(manifest: OptionalManifest): this;\n}\n\ntype Entry = string;\n\nexport interface ManifestEntry {\n entry: Entry;\n}\n\nexport type ManifestBackground = ManifestEntry & BackgroundConfig;\n\nexport type ManifestContentScript = ManifestEntry & ContentScriptConfig;\nexport type ManifestContentScripts = Set<ManifestContentScript>;\n\nexport type ManifestCommand = CommandConfig;\nexport type ManifestCommands = Set<ManifestCommand>;\n\nexport interface ManifestPopup {\n /**\n * Represents the group name of an icon that can be used in UI elements.\n * This property is optional and, if defined, should typically refer to a string\n * that matches the name of an icon resource available in the application or icon library.\n */\n icon?: string;\n /**\n * Represents an optional title or name or locale key that can be assigned to an entity.\n */\n title?: string;\n /**\n * Represents an optional HTML path.\n */\n path?: string;\n}\n\nexport interface ManifestSidebar {\n /**\n * Represents the group name of an icon that can be used in UI elements.\n * This property is optional and, if defined, should typically refer to a string\n * that matches the name of an icon resource available in the application or icon library.\n */\n icon?: string;\n /**\n * Represents an optional title or name or locale key that can be assigned to an entity.\n */\n title?: string;\n /**\n * Represents an optional HTML path.\n */\n path?: string;\n}\n\nexport interface ManifestOptions {\n /**\n * Path to the options page HTML file relative to the extension root.\n * Written to `options_ui.page` in the manifest.\n */\n path: string;\n /**\n * Whether the options page should open in a browser tab.\n * Written to `options_ui.open_in_tab` and defaults to `true` when omitted.\n * Set to `false` to request an embedded page where supported by the browser.\n */\n openInTab?: boolean;\n}\n\nexport interface ManifestAccessibleResource {\n resources: string[];\n matches?: string[];\n extensionIds?: string[];\n useDynamicUrl?: boolean;\n}\n\nexport type ManifestAccessibleResources = Set<ManifestAccessibleResource>;\n\nexport type ManifestSandbox = string;\n\nexport type ManifestSandboxes = Set<ManifestSandbox>;\n\nexport interface ManifestDependency {\n js: Set<string>;\n css: Set<string>;\n assets: Set<string>;\n}\n\nexport type ManifestIcon = Map<number, string>;\n\nexport type ManifestIcons = Map<string, ManifestIcon>;\n\nexport type ManifestDependencies = Map<Entry, ManifestDependency>;\n\nexport type ManifestPermissions = Set<ManifestPermission>;\n\nexport type ManifestOptionalPermissions = Set<ManifestOptionalPermission>;\n\nexport type ManifestHostPermissions = Set<string>;\n"],"mappings":"AAaO,MAAM,uBAA4C,oBAAI,IAAY,CAAC,QAAQ,SAAS,QAAQ,OAAO,MAAM,KAAK,CAAC;AAE/G,MAAM,yBAA8C,oBAAI,IAAY;AAAA,EACvE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;AAaM,IAAK,oBAAL,kBAAKA,uBAAL;AACH,EAAAA,mBAAA,cAAW;AACX,EAAAA,mBAAA,WAAQ;AACR,EAAAA,mBAAA,gBAAa;AAHL,SAAAA;AAAA,GAAA;","names":["ManifestIncognito"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ViewDefinition, ViewOptions } from "./view.js";
|
|
2
|
+
import { CspOptions } from "./csp.js";
|
|
3
|
+
export interface OptionsConfig {
|
|
4
|
+
/** Open in a browser tab. Defaults to true; embedded mode depends on browser support. */
|
|
5
|
+
openInTab?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export type OptionsEntrypointOptions = OptionsConfig & CspOptions & ViewOptions;
|
|
8
|
+
export type OptionsProps = OptionsEntrypointOptions;
|
|
9
|
+
export type OptionsDefinition = OptionsEntrypointOptions & ViewDefinition<OptionsProps>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/types/plugin.d.ts
CHANGED
|
@@ -70,6 +70,7 @@ export interface Plugin extends PluginName {
|
|
|
70
70
|
bundler?: PluginHandler<PluginBundlerOptions, RspackConfig>;
|
|
71
71
|
command?: PluginHandler<PluginConfigOptions, PluginEntrypointResult>;
|
|
72
72
|
content?: PluginHandler<PluginConfigOptions, PluginEntrypointResult>;
|
|
73
|
+
options?: PluginHandler<PluginConfigOptions, PluginEntrypointResult>;
|
|
73
74
|
page?: PluginHandler<PluginConfigOptions, PluginEntrypointResult>;
|
|
74
75
|
popup?: PluginHandler<PluginConfigOptions, PluginEntrypointResult>;
|
|
75
76
|
relay?: PluginHandler<PluginConfigOptions, PluginEntrypointResult>;
|
|
@@ -87,7 +88,7 @@ export type PluginHandlerCallback<O, T = void> = {
|
|
|
87
88
|
(options: O): Awaiter<T>;
|
|
88
89
|
};
|
|
89
90
|
export type PluginHandlerKeys = keyof Omit<Plugin, "name">;
|
|
90
|
-
export type PluginEntrypointKeys = keyof Pick<Plugin, "background" | "command" | "content" | "page" | "popup" | "relay" | "sandbox" | "service" | "sidebar" | "offscreen">;
|
|
91
|
+
export type PluginEntrypointKeys = keyof Pick<Plugin, "background" | "command" | "content" | "options" | "page" | "popup" | "relay" | "sandbox" | "service" | "sidebar" | "offscreen">;
|
|
91
92
|
export type PluginAssetKeys = keyof Pick<Plugin, "icon" | "locale">;
|
|
92
93
|
export type PluginHandlerType<T extends Plugin[PluginHandlerKeys]> = T extends PluginHandlerCallback<infer O, infer R> ? {
|
|
93
94
|
options: O;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "adnbn",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.10.0",
|
|
5
5
|
"description": "Addon Bone - Cross-browser web extension framework with shared code base",
|
|
6
6
|
"homepage": "https://addonbone.com",
|
|
7
7
|
"author": "Anjey Tsibylskij (https://github.com/atldays)",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/AbstractOptionsFinder.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,sCACK,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":[]}
|
/package/dist/cli/entrypoint/finder/{AbstractOptionsFinder.d.ts → AbstractParsedFinder.d.ts}
RENAMED
|
File without changes
|