adnbn 0.8.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/dist/cli/builders/locale/LocaleStructureValidator.js +7 -0
  2. package/dist/cli/builders/locale/LocaleStructureValidator.js.map +1 -1
  3. package/dist/cli/builders/manifest/ManifestBase.d.ts +4 -1
  4. package/dist/cli/builders/manifest/ManifestBase.js +19 -0
  5. package/dist/cli/builders/manifest/ManifestBase.js.map +1 -1
  6. package/dist/cli/bundler/plugins/GenerateJsonPlugin.js +3 -7
  7. package/dist/cli/bundler/plugins/GenerateJsonPlugin.js.map +1 -1
  8. package/dist/cli/entrypoint/file/injectors/core.js +9 -1
  9. package/dist/cli/entrypoint/file/injectors/core.js.map +1 -1
  10. package/dist/cli/entrypoint/finder/AbstractEntrypointFinder.d.ts +2 -2
  11. package/dist/cli/entrypoint/finder/AbstractEntrypointFinder.js +2 -2
  12. package/dist/cli/entrypoint/finder/AbstractEntrypointFinder.js.map +1 -1
  13. package/dist/cli/entrypoint/finder/{AbstractOptionsFinder.js → AbstractParsedFinder.js} +3 -3
  14. package/dist/cli/entrypoint/finder/AbstractParsedFinder.js.map +1 -0
  15. package/dist/cli/entrypoint/finder/OptionsFinder.d.ts +13 -0
  16. package/dist/cli/entrypoint/finder/OptionsFinder.js +33 -0
  17. package/dist/cli/entrypoint/finder/OptionsFinder.js.map +1 -0
  18. package/dist/cli/entrypoint/finder/PluginFinder.d.ts +4 -4
  19. package/dist/cli/entrypoint/finder/PluginFinder.js +2 -2
  20. package/dist/cli/entrypoint/finder/PluginFinder.js.map +1 -1
  21. package/dist/cli/entrypoint/finder/index.d.ts +2 -1
  22. package/dist/cli/entrypoint/finder/index.js +20 -18
  23. package/dist/cli/entrypoint/finder/index.js.map +1 -1
  24. package/dist/cli/entrypoint/finder/tests/fixtures/options/discovery/account.options.d.ts +1 -0
  25. package/dist/cli/entrypoint/finder/tests/fixtures/options/discovery/advanced.options/index.d.ts +1 -0
  26. package/dist/cli/entrypoint/parser/ContentParser.d.ts +2 -2
  27. package/dist/cli/entrypoint/parser/ContentParser.js.map +1 -1
  28. package/dist/cli/entrypoint/parser/OptionsParser.d.ts +6 -0
  29. package/dist/cli/entrypoint/parser/OptionsParser.js +16 -0
  30. package/dist/cli/entrypoint/parser/OptionsParser.js.map +1 -0
  31. package/dist/cli/entrypoint/parser/RelayParser.js +2 -1
  32. package/dist/cli/entrypoint/parser/RelayParser.js.map +1 -1
  33. package/dist/cli/entrypoint/parser/index.d.ts +1 -0
  34. package/dist/cli/entrypoint/parser/index.js +16 -14
  35. package/dist/cli/entrypoint/parser/index.js.map +1 -1
  36. package/dist/cli/index.js +2 -0
  37. package/dist/cli/index.js.map +1 -1
  38. package/dist/cli/plugins/content/ContentDriver.d.ts +21 -8
  39. package/dist/cli/plugins/content/ContentDriver.js +24 -2
  40. package/dist/cli/plugins/content/ContentDriver.js.map +1 -1
  41. package/dist/cli/plugins/content/ContentManager.d.ts +8 -3
  42. package/dist/cli/plugins/content/ContentManager.js +41 -6
  43. package/dist/cli/plugins/content/ContentManager.js.map +1 -1
  44. package/dist/cli/plugins/content/Relay.d.ts +6 -8
  45. package/dist/cli/plugins/content/Relay.js +2 -14
  46. package/dist/cli/plugins/content/Relay.js.map +1 -1
  47. package/dist/cli/plugins/content/RelayDeclaration.d.ts +0 -1
  48. package/dist/cli/plugins/content/RelayDeclaration.js +0 -3
  49. package/dist/cli/plugins/content/RelayDeclaration.js.map +1 -1
  50. package/dist/cli/plugins/content/RelayDriver.d.ts +10 -0
  51. package/dist/cli/plugins/content/RelayDriver.js +39 -0
  52. package/dist/cli/plugins/content/RelayDriver.js.map +1 -0
  53. package/dist/cli/plugins/content/index.js +1 -10
  54. package/dist/cli/plugins/content/index.js.map +1 -1
  55. package/dist/cli/plugins/content/types.d.ts +3 -0
  56. package/dist/cli/plugins/index.d.ts +1 -0
  57. package/dist/cli/plugins/index.js +22 -20
  58. package/dist/cli/plugins/index.js.map +1 -1
  59. package/dist/cli/plugins/locale/Locale.js +5 -1
  60. package/dist/cli/plugins/locale/Locale.js.map +1 -1
  61. package/dist/cli/plugins/locale/declaration/LocaleDeclaration.js +2 -3
  62. package/dist/cli/plugins/locale/declaration/LocaleDeclaration.js.map +1 -1
  63. package/dist/cli/plugins/locale/declaration/locale.d.ts +3 -124
  64. package/dist/cli/plugins/options/Options.d.ts +10 -0
  65. package/dist/cli/plugins/options/Options.js +24 -0
  66. package/dist/cli/plugins/options/Options.js.map +1 -0
  67. package/dist/cli/plugins/options/index.d.ts +2 -0
  68. package/dist/cli/plugins/options/index.js +41 -0
  69. package/dist/cli/plugins/options/index.js.map +1 -0
  70. package/dist/cli/plugins/view/index.js +1 -1
  71. package/dist/cli/plugins/view/index.js.map +1 -1
  72. package/dist/cli/resolvers/config.js +2 -0
  73. package/dist/cli/resolvers/config.js.map +1 -1
  74. package/dist/cli/virtual/index.js +2 -2
  75. package/dist/cli/virtual/virtual.d.ts +52 -147
  76. package/dist/entry/relay/index.d.ts +2 -1
  77. package/dist/entry/relay/index.js.map +1 -1
  78. package/dist/locale/adapters/react/LocaleProvider.js +2 -0
  79. package/dist/locale/adapters/react/LocaleProvider.js.map +1 -1
  80. package/dist/locale/adapters/react/context.d.ts +1 -0
  81. package/dist/locale/adapters/react/context.js +3 -2
  82. package/dist/locale/adapters/react/context.js.map +1 -1
  83. package/dist/locale/helpers.js.map +1 -1
  84. package/dist/locale/providers/AbstractLocale.d.ts +2 -0
  85. package/dist/locale/providers/AbstractLocale.js +5 -0
  86. package/dist/locale/providers/AbstractLocale.js.map +1 -1
  87. package/dist/locale/providers/NativeLocale.d.ts +3 -2
  88. package/dist/locale/providers/NativeLocale.js +1 -1
  89. package/dist/locale/providers/NativeLocale.js.map +1 -1
  90. package/dist/main/index.d.ts +1 -0
  91. package/dist/main/index.js +1 -0
  92. package/dist/main/index.js.map +1 -1
  93. package/dist/main/options.d.ts +3 -0
  94. package/dist/main/options.js +7 -0
  95. package/dist/main/options.js.map +1 -0
  96. package/dist/main/relay.d.ts +7 -6
  97. package/dist/main/relay.js +12 -5
  98. package/dist/main/relay.js.map +1 -1
  99. package/dist/message/error.d.ts +6 -0
  100. package/dist/message/error.js +21 -0
  101. package/dist/message/error.js.map +1 -1
  102. package/dist/message/index.d.ts +2 -1
  103. package/dist/message/index.js +2 -0
  104. package/dist/message/index.js.map +1 -1
  105. package/dist/message/providers/Message.d.ts +3 -0
  106. package/dist/message/providers/Message.js +36 -6
  107. package/dist/message/providers/Message.js.map +1 -1
  108. package/dist/offscreen/providers/ProxyOffscreen.d.ts +2 -2
  109. package/dist/offscreen/providers/ProxyOffscreen.js.map +1 -1
  110. package/dist/relay/RelayPermission.d.ts +6 -3
  111. package/dist/relay/RelayPermission.js +28 -12
  112. package/dist/relay/RelayPermission.js.map +1 -1
  113. package/dist/relay/adapters/RelayAdapter.d.ts +8 -0
  114. package/dist/relay/adapters/RelayAdapter.js +16 -0
  115. package/dist/relay/adapters/RelayAdapter.js.map +1 -0
  116. package/dist/relay/adapters/RelayMessagingAdapter.d.ts +11 -0
  117. package/dist/relay/adapters/RelayMessagingAdapter.js +91 -0
  118. package/dist/relay/adapters/RelayMessagingAdapter.js.map +1 -0
  119. package/dist/relay/adapters/RelayScriptingAdapter.d.ts +15 -0
  120. package/dist/relay/adapters/RelayScriptingAdapter.js +170 -0
  121. package/dist/relay/adapters/RelayScriptingAdapter.js.map +1 -0
  122. package/dist/relay/discovery/RelayDiscovery.d.ts +10 -0
  123. package/dist/relay/discovery/RelayDiscovery.js +62 -0
  124. package/dist/relay/discovery/RelayDiscovery.js.map +1 -0
  125. package/dist/relay/index.d.ts +1 -4
  126. package/dist/relay/index.js +1 -3
  127. package/dist/relay/index.js.map +1 -1
  128. package/dist/relay/providers/ProxyRelay.d.ts +20 -17
  129. package/dist/relay/providers/ProxyRelay.js +79 -52
  130. package/dist/relay/providers/ProxyRelay.js.map +1 -1
  131. package/dist/relay/providers/RegisterRelay.js +1 -2
  132. package/dist/relay/providers/RegisterRelay.js.map +1 -1
  133. package/dist/relay/result.d.ts +12 -0
  134. package/dist/relay/result.js +88 -0
  135. package/dist/relay/result.js.map +1 -0
  136. package/dist/sandbox/index.d.ts +2 -2
  137. package/dist/sandbox/index.js.map +1 -1
  138. package/dist/sandbox/providers/ProxySandbox.d.ts +2 -2
  139. package/dist/sandbox/providers/ProxySandbox.js.map +1 -1
  140. package/dist/service/providers/ProxyService.d.ts +2 -2
  141. package/dist/service/providers/ProxyService.js.map +1 -1
  142. package/dist/transport/ProxyTransport.d.ts +2 -2
  143. package/dist/transport/ProxyTransport.js.map +1 -1
  144. package/dist/transport/index.d.ts +3 -2
  145. package/dist/types/helpers.d.ts +0 -4
  146. package/dist/types/locale.d.ts +3 -0
  147. package/dist/types/locale.js +58 -0
  148. package/dist/types/locale.js.map +1 -1
  149. package/dist/types/manifest.d.ts +14 -0
  150. package/dist/types/manifest.js.map +1 -1
  151. package/dist/types/options.d.ts +9 -0
  152. package/dist/types/options.js +1 -0
  153. package/dist/types/options.js.map +1 -0
  154. package/dist/types/plugin.d.ts +2 -1
  155. package/dist/types/relay.d.ts +130 -3
  156. package/dist/types/relay.js +16 -0
  157. package/dist/types/relay.js.map +1 -1
  158. package/dist/types/rpc.d.ts +4 -0
  159. package/dist/types/rpc.js +1 -0
  160. package/dist/types/rpc.js.map +1 -0
  161. package/dist/types/transport.d.ts +3 -2
  162. package/package.json +5 -4
  163. package/dist/cli/entrypoint/finder/AbstractOptionsFinder.js.map +0 -1
  164. /package/dist/cli/entrypoint/finder/{AbstractOptionsFinder.d.ts → AbstractParsedFinder.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/plugins/content/Relay.ts"],"sourcesContent":["import ContentDriver from \"./ContentDriver\";\n\nimport {ContentProvider} from \"./types\";\n\nimport {RelayFinder} from \"@cli/entrypoint/index.js\";\nimport {virtualRelayModule} from \"@cli/virtual/index.js\";\n\nimport {RelayEntrypointOptions, RelayMethod, RelayOptions} from \"@typing/relay\";\nimport {ContentScriptDeclarative} from \"@typing/content\";\nimport {EntrypointFile} from \"@typing/entrypoint\";\n\nexport default class extends RelayFinder implements ContentProvider<RelayEntrypointOptions> {\n protected _driver?: ContentDriver<RelayEntrypointOptions>;\n\n public driver(): ContentDriver<RelayEntrypointOptions> {\n return (this._driver ??= new ContentDriver(this));\n }\n\n /**\n * Before creating the virtual module, it is necessary to run a command `await this.transport()` that caches the Relays.\n * This command is executed during the type declaration generation stage for the Relays.\n */\n public virtual(file: EntrypointFile): string {\n const options = this._transport?.get(file)?.options;\n\n if (!options) {\n throw new Error(`Relay options not found for \"${file}\"`);\n }\n\n return virtualRelayModule(file, options.name);\n }\n\n public async getOptionsMap(): Promise<Record<string, RelayOptions>> {\n const transport = await this.transport();\n\n return Array.from(transport.values()).reduce(\n (map, {options}) => {\n map[options.name] = {\n ...options,\n method: options.method || RelayMethod.Messaging,\n };\n\n return map;\n },\n {} as Record<string, RelayOptions>\n );\n }\n\n public async hasMethod(method: RelayMethod): Promise<boolean> {\n return Object.values(await this.getOptionsMap())\n .map(({method}) => method)\n .includes(method);\n }\n\n public async hasDeclarative(declarative: ContentScriptDeclarative): Promise<boolean> {\n return !!Object.values(await this.getOptionsMap()).filter(options => {\n if (declarative === ContentScriptDeclarative.Required && options.declarative === true) {\n return true;\n }\n return declarative === options.declarative;\n }).length;\n }\n\n public clear(): this {\n this._driver?.clear();\n\n return super.clear();\n }\n}\n"],"mappings":"AAAA,OAAO,mBAAmB;AAI1B,SAAQ,mBAAkB;AAC1B,SAAQ,0BAAyB;AAEjC,SAAgC,mBAAgC;AAChE,SAAQ,gCAA+B;AAGvC,MAAO,sBAAsB,YAA+D;AAAA,EAC9E;AAAA,EAEH,SAAgD;AACnD,WAAQ,KAAK,YAAL,KAAK,UAAY,IAAI,cAAc,IAAI;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMO,QAAQ,MAA8B;AAtBjD;AAuBQ,UAAM,WAAU,gBAAK,eAAL,mBAAiB,IAAI,UAArB,mBAA4B;AAE5C,QAAI,CAAC,SAAS;AACV,YAAM,IAAI,MAAM,gCAAgC,IAAI,GAAG;AAAA,IAC3D;AAEA,WAAO,mBAAmB,MAAM,QAAQ,IAAI;AAAA,EAChD;AAAA,EAEA,MAAa,gBAAuD;AAChE,UAAM,YAAY,MAAM,KAAK,UAAU;AAEvC,WAAO,MAAM,KAAK,UAAU,OAAO,CAAC,EAAE;AAAA,MAClC,CAAC,KAAK,EAAC,QAAO,MAAM;AAChB,YAAI,QAAQ,IAAI,IAAI;AAAA,UAChB,GAAG;AAAA,UACH,QAAQ,QAAQ,UAAU,YAAY;AAAA,QAC1C;AAEA,eAAO;AAAA,MACX;AAAA,MACA,CAAC;AAAA,IACL;AAAA,EACJ;AAAA,EAEA,MAAa,UAAU,QAAuC;AAC1D,WAAO,OAAO,OAAO,MAAM,KAAK,cAAc,CAAC,EAC1C,IAAI,CAAC,EAAC,QAAAA,QAAM,MAAMA,OAAM,EACxB,SAAS,MAAM;AAAA,EACxB;AAAA,EAEA,MAAa,eAAe,aAAyD;AACjF,WAAO,CAAC,CAAC,OAAO,OAAO,MAAM,KAAK,cAAc,CAAC,EAAE,OAAO,aAAW;AACjE,UAAI,gBAAgB,yBAAyB,YAAY,QAAQ,gBAAgB,MAAM;AACnF,eAAO;AAAA,MACX;AACA,aAAO,gBAAgB,QAAQ;AAAA,IACnC,CAAC,EAAE;AAAA,EACP;AAAA,EAEO,QAAc;AA/DzB;AAgEQ,eAAK,YAAL,mBAAc;AAEd,WAAO,MAAM,MAAM;AAAA,EACvB;AACJ;","names":["method"]}
1
+ {"version":3,"sources":["../../../../src/cli/plugins/content/Relay.ts"],"sourcesContent":["import RelayDriver from \"./RelayDriver\";\n\nimport {ContentProvider} from \"./types\";\n\nimport {RelayFinder} from \"@cli/entrypoint/index.js\";\nimport {virtualRelayModule} from \"@cli/virtual/index.js\";\n\nimport {RelayMethod, RelayOptions} from \"@typing/relay\";\nimport {ContentScriptEntrypointOptions} from \"@typing/content\";\nimport {EntrypointFile} from \"@typing/entrypoint\";\n\nexport default class extends RelayFinder implements ContentProvider<ContentScriptEntrypointOptions> {\n protected _driver?: RelayDriver;\n\n public driver(): RelayDriver {\n return (this._driver ??= new RelayDriver(this));\n }\n\n /**\n * Before creating the virtual module, it is necessary to run a command `await this.transport()` that caches the Relays.\n * This command is executed during the type declaration generation stage for the Relays.\n */\n public virtual(file: EntrypointFile): string {\n const options = this._transport?.get(file)?.options;\n\n if (!options) {\n throw new Error(`Relay options not found for \"${file}\"`);\n }\n\n return virtualRelayModule(file, options.name);\n }\n\n public async getOptionsMap(): Promise<Record<string, RelayOptions>> {\n const transport = await this.transport();\n\n return Array.from(transport.values()).reduce(\n (map, {options}) => {\n map[options.name] = {\n ...options,\n method: options.method || RelayMethod.Messaging,\n };\n\n return map;\n },\n {} as Record<string, RelayOptions>\n );\n }\n\n public clear(): this {\n this._driver?.clear();\n\n return super.clear();\n }\n}\n"],"mappings":"AAAA,OAAO,iBAAiB;AAIxB,SAAQ,mBAAkB;AAC1B,SAAQ,0BAAyB;AAEjC,SAAQ,mBAAgC;AAIxC,MAAO,sBAAsB,YAAuE;AAAA,EACtF;AAAA,EAEH,SAAsB;AACzB,WAAQ,KAAK,YAAL,KAAK,UAAY,IAAI,YAAY,IAAI;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMO,QAAQ,MAA8B;AAtBjD;AAuBQ,UAAM,WAAU,gBAAK,eAAL,mBAAiB,IAAI,UAArB,mBAA4B;AAE5C,QAAI,CAAC,SAAS;AACV,YAAM,IAAI,MAAM,gCAAgC,IAAI,GAAG;AAAA,IAC3D;AAEA,WAAO,mBAAmB,MAAM,QAAQ,IAAI;AAAA,EAChD;AAAA,EAEA,MAAa,gBAAuD;AAChE,UAAM,YAAY,MAAM,KAAK,UAAU;AAEvC,WAAO,MAAM,KAAK,UAAU,OAAO,CAAC,EAAE;AAAA,MAClC,CAAC,KAAK,EAAC,QAAO,MAAM;AAChB,YAAI,QAAQ,IAAI,IAAI;AAAA,UAChB,GAAG;AAAA,UACH,QAAQ,QAAQ,UAAU,YAAY;AAAA,QAC1C;AAEA,eAAO;AAAA,MACX;AAAA,MACA,CAAC;AAAA,IACL;AAAA,EACJ;AAAA,EAEO,QAAc;AAhDzB;AAiDQ,eAAK,YAAL,mBAAc;AAEd,WAAO,MAAM,MAAM;AAAA,EACvB;AACJ;","names":[]}
@@ -2,5 +2,4 @@ import { TransportDeclaration } from "../typescript/index.js";
2
2
  import { ReadonlyConfig } from "../../../types/config.js";
3
3
  export default class extends TransportDeclaration {
4
4
  constructor(config: ReadonlyConfig);
5
- protected template(): string;
6
5
  }
@@ -3,9 +3,6 @@ class RelayDeclaration_default extends TransportDeclaration {
3
3
  constructor(config) {
4
4
  super(config, TransportDeclarationLayer.Relay);
5
5
  }
6
- template() {
7
- return super.template().replace("RelayProxyTarget, RelayTarget", "RelayProxyTarget, RelayTarget, ProxyRelayParams").replace("(name: N): RelayProxyTarget", "(name: N, params: ProxyRelayParams): RelayProxyTarget");
8
- }
9
6
  }
10
7
  export {
11
8
  RelayDeclaration_default as default
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/plugins/content/RelayDeclaration.ts"],"sourcesContent":["import {TransportDeclaration, TransportDeclarationLayer} from \"../typescript\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends TransportDeclaration {\n constructor(config: ReadonlyConfig) {\n super(config, TransportDeclarationLayer.Relay);\n }\n\n protected template(): string {\n return super\n .template()\n .replace(\"RelayProxyTarget, RelayTarget\", \"RelayProxyTarget, RelayTarget, ProxyRelayParams\")\n .replace(\"(name: N): RelayProxyTarget\", \"(name: N, params: ProxyRelayParams): RelayProxyTarget\");\n }\n}\n"],"mappings":"AAAA,SAAQ,sBAAsB,iCAAgC;AAI9D,MAAO,iCAAsB,qBAAqB;AAAA,EAC9C,YAAY,QAAwB;AAChC,UAAM,QAAQ,0BAA0B,KAAK;AAAA,EACjD;AAAA,EAEU,WAAmB;AACzB,WAAO,MACF,SAAS,EACT,QAAQ,iCAAiC,iDAAiD,EAC1F,QAAQ,+BAA+B,uDAAuD;AAAA,EACvG;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/cli/plugins/content/RelayDeclaration.ts"],"sourcesContent":["import {TransportDeclaration, TransportDeclarationLayer} from \"../typescript\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends TransportDeclaration {\n constructor(config: ReadonlyConfig) {\n super(config, TransportDeclarationLayer.Relay);\n }\n}\n"],"mappings":"AAAA,SAAQ,sBAAsB,iCAAgC;AAI9D,MAAO,iCAAsB,qBAAqB;AAAA,EAC9C,YAAY,QAAwB;AAChC,UAAM,QAAQ,0BAA0B,KAAK;AAAA,EACjD;AACJ;","names":[]}
@@ -0,0 +1,10 @@
1
+ import ContentDriver from "./ContentDriver.js";
2
+ import RelayFinder from "../../entrypoint/finder/RelayFinder.js";
3
+ import { type ContentScriptEntrypointOptions } from "../../../types/content.js";
4
+ import { type RelayEntrypointOptions } from "../../../types/relay.js";
5
+ import type { ManifestOptionalPermissions, ManifestPermissions } from "../../../types/manifest.js";
6
+ export default class extends ContentDriver<ContentScriptEntrypointOptions, RelayEntrypointOptions> {
7
+ constructor(finder: RelayFinder);
8
+ protected transform(relayOptions: RelayEntrypointOptions): ContentScriptEntrypointOptions;
9
+ protected calculatePermissions(): Promise<[ManifestPermissions, ManifestOptionalPermissions]>;
10
+ }
@@ -0,0 +1,39 @@
1
+ import ContentDriver from "./ContentDriver.js";
2
+ import { ContentScriptDeclarative } from "./../../../types/content.js";
3
+ import { RelayAllFrames, RelayMethod } from "./../../../types/relay.js";
4
+ class RelayDriver_default extends ContentDriver {
5
+ constructor(finder) {
6
+ super(finder);
7
+ }
8
+ transform(relayOptions) {
9
+ const { allFrames, method: _method, name: _name, ...options } = relayOptions;
10
+ return {
11
+ ...options,
12
+ ...allFrames === void 0 ? {} : { allFrames: allFrames !== false }
13
+ };
14
+ }
15
+ async calculatePermissions() {
16
+ const permissions = /* @__PURE__ */ new Set();
17
+ const optionalPermissions = /* @__PURE__ */ new Set();
18
+ const relays = Array.from((await this.getOptions()).values());
19
+ if (relays.some(
20
+ (options) => (options.method ?? RelayMethod.Messaging) === RelayMethod.Messaging && options.allFrames === RelayAllFrames.All
21
+ )) {
22
+ permissions.add("webNavigation");
23
+ }
24
+ if (relays.some(
25
+ (options) => options.method === RelayMethod.Scripting && (options.declarative === true || options.declarative === ContentScriptDeclarative.Required)
26
+ )) {
27
+ permissions.add("scripting");
28
+ } else if (relays.some(
29
+ (options) => options.method === RelayMethod.Scripting && options.declarative === ContentScriptDeclarative.Optional
30
+ )) {
31
+ optionalPermissions.add("scripting");
32
+ }
33
+ return [permissions, optionalPermissions];
34
+ }
35
+ }
36
+ export {
37
+ RelayDriver_default as default
38
+ };
39
+ //# sourceMappingURL=RelayDriver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/cli/plugins/content/RelayDriver.ts"],"sourcesContent":["import ContentDriver from \"./ContentDriver\";\n\nimport RelayFinder from \"@cli/entrypoint/finder/RelayFinder\";\n\nimport {ContentScriptDeclarative, type ContentScriptEntrypointOptions} from \"@typing/content\";\nimport {RelayAllFrames, type RelayEntrypointOptions, RelayMethod} from \"@typing/relay\";\nimport type {ManifestOptionalPermissions, ManifestPermissions} from \"@typing/manifest\";\n\nexport default class extends ContentDriver<ContentScriptEntrypointOptions, RelayEntrypointOptions> {\n public constructor(finder: RelayFinder) {\n super(finder);\n }\n\n protected transform(relayOptions: RelayEntrypointOptions): ContentScriptEntrypointOptions {\n const {allFrames, method: _method, name: _name, ...options} = relayOptions;\n\n return {\n ...options,\n ...(allFrames === undefined ? {} : {allFrames: allFrames !== false}),\n };\n }\n\n protected async calculatePermissions(): Promise<[ManifestPermissions, ManifestOptionalPermissions]> {\n const permissions: ManifestPermissions = new Set();\n const optionalPermissions: ManifestOptionalPermissions = new Set();\n const relays = Array.from((await this.getOptions()).values());\n\n if (\n relays.some(\n options =>\n (options.method ?? RelayMethod.Messaging) === RelayMethod.Messaging &&\n options.allFrames === RelayAllFrames.All\n )\n ) {\n permissions.add(\"webNavigation\");\n }\n\n if (\n relays.some(\n options =>\n options.method === RelayMethod.Scripting &&\n (options.declarative === true || options.declarative === ContentScriptDeclarative.Required)\n )\n ) {\n permissions.add(\"scripting\");\n } else if (\n relays.some(\n options =>\n options.method === RelayMethod.Scripting &&\n options.declarative === ContentScriptDeclarative.Optional\n )\n ) {\n optionalPermissions.add(\"scripting\");\n }\n\n return [permissions, optionalPermissions];\n }\n}\n"],"mappings":"AAAA,OAAO,mBAAmB;AAI1B,SAAQ,gCAAoE;AAC5E,SAAQ,gBAA6C,mBAAkB;AAGvE,MAAO,4BAAsB,cAAsE;AAAA,EACxF,YAAY,QAAqB;AACpC,UAAM,MAAM;AAAA,EAChB;AAAA,EAEU,UAAU,cAAsE;AACtF,UAAM,EAAC,WAAW,QAAQ,SAAS,MAAM,OAAO,GAAG,QAAO,IAAI;AAE9D,WAAO;AAAA,MACH,GAAG;AAAA,MACH,GAAI,cAAc,SAAY,CAAC,IAAI,EAAC,WAAW,cAAc,MAAK;AAAA,IACtE;AAAA,EACJ;AAAA,EAEA,MAAgB,uBAAoF;AAChG,UAAM,cAAmC,oBAAI,IAAI;AACjD,UAAM,sBAAmD,oBAAI,IAAI;AACjE,UAAM,SAAS,MAAM,MAAM,MAAM,KAAK,WAAW,GAAG,OAAO,CAAC;AAE5D,QACI,OAAO;AAAA,MACH,cACK,QAAQ,UAAU,YAAY,eAAe,YAAY,aAC1D,QAAQ,cAAc,eAAe;AAAA,IAC7C,GACF;AACE,kBAAY,IAAI,eAAe;AAAA,IACnC;AAEA,QACI,OAAO;AAAA,MACH,aACI,QAAQ,WAAW,YAAY,cAC9B,QAAQ,gBAAgB,QAAQ,QAAQ,gBAAgB,yBAAyB;AAAA,IAC1F,GACF;AACE,kBAAY,IAAI,WAAW;AAAA,IAC/B,WACI,OAAO;AAAA,MACH,aACI,QAAQ,WAAW,YAAY,aAC/B,QAAQ,gBAAgB,yBAAyB;AAAA,IACzD,GACF;AACE,0BAAoB,IAAI,WAAW;AAAA,IACvC;AAEA,WAAO,CAAC,aAAa,mBAAmB;AAAA,EAC5C;AACJ;","names":[]}
@@ -8,8 +8,6 @@ import { definePlugin } from "./../../../main/plugin.js";
8
8
  import { EntrypointPlugin, onlyViaTopLevelEntry } from "./../../../cli/bundler/index.js";
9
9
  import { getResolvePath, getSourcePath } from "./../../../cli/resolvers/path.js";
10
10
  import { Command } from "./../../../types/app.js";
11
- import { RelayMethod } from "./../../../types/relay.js";
12
- import { ContentScriptDeclarative } from "./../../../types/content.js";
13
11
  var content_default = definePlugin(() => {
14
12
  let content;
15
13
  let relay;
@@ -83,14 +81,7 @@ var content_default = definePlugin(() => {
83
81
  });
84
82
  },
85
83
  manifest: async ({ manifest }) => {
86
- manifest.setContentScripts(await manager.manifest()).appendHostPermissions(await manager.hostPermissions()).appendOptionalHostPermissions(await manager.optionalHostPermissions());
87
- if (await relay.exists() && await relay.hasMethod(RelayMethod.Scripting)) {
88
- if (await relay.hasDeclarative(ContentScriptDeclarative.Required)) {
89
- manifest.addPermission("scripting");
90
- } else if (await relay.hasDeclarative(ContentScriptDeclarative.Optional)) {
91
- manifest.addOptionalPermission("scripting");
92
- }
93
- }
84
+ manifest.setContentScripts(await manager.manifest()).appendHostPermissions(await manager.hostPermissions()).appendOptionalHostPermissions(await manager.optionalHostPermissions()).appendPermissions(await manager.permissions()).appendOptionalPermissions(await manager.optionalPermissions());
94
85
  }
95
86
  };
96
87
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/plugins/content/index.ts"],"sourcesContent":["import {Configuration as RspackConfig, DefinePlugin, NormalModule} from \"@rspack/core\";\nimport {merge as mergeConfig} from \"webpack-merge\";\n\nimport ContentManager from \"./ContentManager\";\nimport Content from \"./Content\";\nimport Relay from \"./Relay\";\nimport RelayDeclaration from \"./RelayDeclaration\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {EntrypointPlugin, onlyViaTopLevelEntry} from \"@cli/bundler\";\nimport {getResolvePath, getSourcePath} from \"@cli/resolvers/path\";\n\nimport {Command} from \"@typing/app\";\nimport {RelayMethod, RelayOptions} from \"@typing/relay\";\nimport {ContentScriptDeclarative} from \"@typing/content\";\n\nexport default definePlugin(() => {\n let content: Content;\n let relay: Relay;\n let manager: ContentManager;\n let relayDeclaration: RelayDeclaration;\n\n return {\n name: \"adnbn:content\",\n startup: async ({config}) => {\n content = new Content(config);\n relay = new Relay(config);\n\n // prettier-ignore\n manager = new ContentManager(config)\n .provider(content)\n .provider(relay);\n\n relayDeclaration = new RelayDeclaration(config);\n },\n content: () => content.files(),\n relay: () => relay.files(),\n bundler: async ({config}) => {\n relayDeclaration.dictionary(await relay.dictionary()).build();\n\n let rspack: RspackConfig = {};\n let options: Record<string, RelayOptions> = {};\n\n if (await manager.empty()) {\n if (config.debug) {\n console.warn(\"Content script or relay entries not found\");\n }\n } else {\n options = await relay.getOptionsMap();\n\n // prettier-ignore\n const plugin = EntrypointPlugin.from(await manager.entries())\n .virtual(file => manager.virtual(file));\n\n if (config.command === Command.Watch) {\n plugin.watch(async () => {\n manager.clear();\n\n relayDeclaration.dictionary(await relay.dictionary()).build();\n\n return manager.entries();\n });\n }\n\n const entryTypeFilter = onlyViaTopLevelEntry([\"content\", \"relay\"]);\n\n rspack = {\n plugins: [plugin],\n optimization: {\n splitChunks: {\n cacheGroups: {\n adnbnContent: {\n minChunks: 2,\n name: manager.chunkName(),\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 chunks: (chunk): boolean => {\n return manager.likely(chunk.name);\n },\n enforce: false,\n reuseExistingChunk: true,\n priority: 20,\n },\n },\n },\n },\n };\n }\n\n return mergeConfig(rspack, {\n plugins: [\n new DefinePlugin({\n __ADNBN_RELAY_OPTIONS__: JSON.stringify(options),\n }),\n ],\n });\n },\n manifest: async ({manifest}) => {\n // prettier-ignore\n manifest\n .setContentScripts(await manager.manifest())\n .appendHostPermissions(await manager.hostPermissions())\n .appendOptionalHostPermissions(await manager.optionalHostPermissions());\n\n if ((await relay.exists()) && (await relay.hasMethod(RelayMethod.Scripting))) {\n if (await relay.hasDeclarative(ContentScriptDeclarative.Required)) {\n manifest.addPermission(\"scripting\");\n } else if (await relay.hasDeclarative(ContentScriptDeclarative.Optional)) {\n manifest.addOptionalPermission(\"scripting\");\n }\n }\n },\n };\n});\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/cli/plugins/content/index.ts"],"sourcesContent":["import {Configuration as RspackConfig, DefinePlugin, NormalModule} from \"@rspack/core\";\nimport {merge as mergeConfig} from \"webpack-merge\";\n\nimport ContentManager from \"./ContentManager\";\nimport Content from \"./Content\";\nimport Relay from \"./Relay\";\nimport RelayDeclaration from \"./RelayDeclaration\";\n\nimport {definePlugin} from \"@main/plugin\";\n\nimport {EntrypointPlugin, onlyViaTopLevelEntry} from \"@cli/bundler\";\nimport {getResolvePath, getSourcePath} from \"@cli/resolvers/path\";\n\nimport {Command} from \"@typing/app\";\nimport {RelayOptions} from \"@typing/relay\";\n\nexport default definePlugin(() => {\n let content: Content;\n let relay: Relay;\n let manager: ContentManager;\n let relayDeclaration: RelayDeclaration;\n\n return {\n name: \"adnbn:content\",\n startup: async ({config}) => {\n content = new Content(config);\n relay = new Relay(config);\n\n // prettier-ignore\n manager = new ContentManager(config)\n .provider(content)\n .provider(relay);\n\n relayDeclaration = new RelayDeclaration(config);\n },\n content: () => content.files(),\n relay: () => relay.files(),\n bundler: async ({config}) => {\n relayDeclaration.dictionary(await relay.dictionary()).build();\n\n let rspack: RspackConfig = {};\n let options: Record<string, RelayOptions> = {};\n\n if (await manager.empty()) {\n if (config.debug) {\n console.warn(\"Content script or relay entries not found\");\n }\n } else {\n options = await relay.getOptionsMap();\n\n // prettier-ignore\n const plugin = EntrypointPlugin.from(await manager.entries())\n .virtual(file => manager.virtual(file));\n\n if (config.command === Command.Watch) {\n plugin.watch(async () => {\n manager.clear();\n\n relayDeclaration.dictionary(await relay.dictionary()).build();\n\n return manager.entries();\n });\n }\n\n const entryTypeFilter = onlyViaTopLevelEntry([\"content\", \"relay\"]);\n\n rspack = {\n plugins: [plugin],\n optimization: {\n splitChunks: {\n cacheGroups: {\n adnbnContent: {\n minChunks: 2,\n name: manager.chunkName(),\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 chunks: (chunk): boolean => {\n return manager.likely(chunk.name);\n },\n enforce: false,\n reuseExistingChunk: true,\n priority: 20,\n },\n },\n },\n },\n };\n }\n\n return mergeConfig(rspack, {\n plugins: [\n new DefinePlugin({\n __ADNBN_RELAY_OPTIONS__: JSON.stringify(options),\n }),\n ],\n });\n },\n manifest: async ({manifest}) => {\n // prettier-ignore\n manifest\n .setContentScripts(await manager.manifest())\n .appendHostPermissions(await manager.hostPermissions())\n .appendOptionalHostPermissions(await manager.optionalHostPermissions())\n .appendPermissions(await manager.permissions())\n .appendOptionalPermissions(await manager.optionalPermissions());\n },\n };\n});\n"],"mappings":"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","names":[]}
@@ -1,5 +1,6 @@
1
1
  import { ContentScriptEntrypointOptions } from "../../../types/content.js";
2
2
  import { EntrypointFile } from "../../../types/entrypoint.js";
3
+ import { ManifestOptionalPermissions, ManifestPermissions } from "../../../types/manifest.js";
3
4
  export interface ContentItem<O extends ContentScriptEntrypointOptions> {
4
5
  file: EntrypointFile;
5
6
  options: O;
@@ -11,6 +12,8 @@ export interface ContentNameGenerator<O extends ContentScriptEntrypointOptions>
11
12
  }
12
13
  export interface ContentDriver<O extends ContentScriptEntrypointOptions> {
13
14
  items(): Promise<ContentItems<O>>;
15
+ permissions(): Promise<ManifestPermissions>;
16
+ optionalPermissions(): Promise<ManifestOptionalPermissions>;
14
17
  }
15
18
  export interface ContentProvider<O extends ContentScriptEntrypointOptions> {
16
19
  virtual(file: EntrypointFile): string;
@@ -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 "./page/index.js";
15
- import { default as default16 } from "./popup/index.js";
16
- import { default as default17 } from "./public.js";
17
- import { default as default18 } from "./sandbox/index.js";
18
- import { default as default19 } from "./sidebar/index.js";
19
- import { default as default20, TypescriptConfig, FileBuilder, VendorDeclaration } from "./typescript/index.js";
20
- import { default as default21 } from "./react.js";
21
- import { default as default22 } from "./style/index.js";
22
- import { default as default23 } from "./view/index.js";
23
- import { default as default24 } from "./version/index.js";
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
- default15 as pluginPage,
42
- default16 as pluginPopup,
43
- default17 as pluginPublic,
44
- default21 as pluginReact,
45
- default18 as pluginSandbox,
46
- default19 as pluginSidebar,
47
- default22 as pluginStyle,
48
- default20 as pluginTypescript,
49
- default24 as pluginVersion,
50
- default23 as pluginView
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"]}
@@ -2,10 +2,14 @@ import { getLocaleFilename } from "./../../../locale/utils.js";
2
2
  import { LocaleFinder } from "./../../../cli/entrypoint/index.js";
3
3
  class Locale_default extends LocaleFinder {
4
4
  async json() {
5
+ await this.validate();
5
6
  const data = {};
6
7
  const builders = await this.builders();
8
+ const defaultBuilder = this.getValidator().getDefaultBuilder(builders);
9
+ const defaultMessages = (defaultBuilder == null ? void 0 : defaultBuilder.build()) ?? {};
7
10
  for (const builder of builders.values()) {
8
- data[getLocaleFilename(builder.lang())] = builder.build();
11
+ const messages = builder === defaultBuilder ? defaultMessages : builder.build();
12
+ data[getLocaleFilename(builder.lang())] = { ...defaultMessages, ...messages };
9
13
  }
10
14
  return data;
11
15
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/plugins/locale/Locale.ts"],"sourcesContent":["import {getLocaleFilename} from \"@locale/utils\";\n\nimport {LocaleFinder} from \"@cli/entrypoint/index.js\";\nimport {GenerateJsonPluginData} from \"@cli/bundler\";\n\nexport default class extends LocaleFinder {\n public async json(): Promise<GenerateJsonPluginData> {\n const data: GenerateJsonPluginData = {};\n\n const builders = await this.builders();\n\n for (const builder of builders.values()) {\n data[getLocaleFilename(builder.lang())] = builder.build();\n }\n\n return data;\n }\n}\n"],"mappings":"AAAA,SAAQ,yBAAwB;AAEhC,SAAQ,oBAAmB;AAG3B,MAAO,uBAAsB,aAAa;AAAA,EACtC,MAAa,OAAwC;AACjD,UAAM,OAA+B,CAAC;AAEtC,UAAM,WAAW,MAAM,KAAK,SAAS;AAErC,eAAW,WAAW,SAAS,OAAO,GAAG;AACrC,WAAK,kBAAkB,QAAQ,KAAK,CAAC,CAAC,IAAI,QAAQ,MAAM;AAAA,IAC5D;AAEA,WAAO;AAAA,EACX;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/cli/plugins/locale/Locale.ts"],"sourcesContent":["import {getLocaleFilename} from \"@locale/utils\";\n\nimport {LocaleFinder} from \"@cli/entrypoint/index.js\";\nimport {GenerateJsonPluginData} from \"@cli/bundler\";\n\nexport default class extends LocaleFinder {\n public async json(): Promise<GenerateJsonPluginData> {\n await this.validate();\n\n const data: GenerateJsonPluginData = {};\n\n const builders = await this.builders();\n const defaultBuilder = this.getValidator().getDefaultBuilder(builders);\n const defaultMessages = defaultBuilder?.build() ?? {};\n\n for (const builder of builders.values()) {\n // Builders already include this app's layers and browser overrides.\n // Every target plural has been validated; only ordinary gaps remain.\n const messages = builder === defaultBuilder ? defaultMessages : builder.build();\n data[getLocaleFilename(builder.lang())] = {...defaultMessages, ...messages};\n }\n\n return data;\n }\n}\n"],"mappings":"AAAA,SAAQ,yBAAwB;AAEhC,SAAQ,oBAAmB;AAG3B,MAAO,uBAAsB,aAAa;AAAA,EACtC,MAAa,OAAwC;AACjD,UAAM,KAAK,SAAS;AAEpB,UAAM,OAA+B,CAAC;AAEtC,UAAM,WAAW,MAAM,KAAK,SAAS;AACrC,UAAM,iBAAiB,KAAK,aAAa,EAAE,kBAAkB,QAAQ;AACrE,UAAM,mBAAkB,iDAAgB,YAAW,CAAC;AAEpD,eAAW,WAAW,SAAS,OAAO,GAAG;AAGrC,YAAM,WAAW,YAAY,iBAAiB,kBAAkB,QAAQ,MAAM;AAC9E,WAAK,kBAAkB,QAAQ,KAAK,CAAC,CAAC,IAAI,EAAC,GAAG,iBAAiB,GAAG,SAAQ;AAAA,IAC9E;AAEA,WAAO;AAAA,EACX;AACJ;","names":[]}
@@ -15,9 +15,8 @@ class LocaleDeclaration_default extends FileBuilder {
15
15
  if (!structure) {
16
16
  throw new Error("Locale structure is not set");
17
17
  }
18
- const type = JSON.stringify(structure, null, 4);
19
- const name = "GeneratedNativeStructure";
20
- return this.readFile().replace(`interface ${name} {}`, `interface ${name} ${type}`);
18
+ const type = Object.entries(structure).map(([key, value]) => `${JSON.stringify(key)}: ${JSON.stringify(value)};`).join("\n ");
19
+ return this.readFile().replace("__LOCALE_DICTIONARY__", () => type);
21
20
  }
22
21
  structure(structure) {
23
22
  this._structure = structure;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/cli/plugins/locale/declaration/LocaleDeclaration.ts"],"sourcesContent":["import {FileBuilder} from \"@cli/plugins/typescript\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {LocaleStructure} from \"@typing/locale\";\n\nexport default class extends FileBuilder {\n protected _structure?: LocaleStructure;\n\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n protected filename(): string {\n return \"locale.d.ts\";\n }\n\n protected url(): string {\n return import.meta.url;\n }\n\n protected template(): string {\n const structure = this._structure;\n\n if (!structure) {\n throw new Error(\"Locale structure is not set\");\n }\n\n const type = JSON.stringify(structure, null, 4);\n\n const name = \"GeneratedNativeStructure\";\n\n return this.readFile().replace(`interface ${name} {}`, `interface ${name} ${type}`);\n }\n\n public structure(structure: LocaleStructure): this {\n this._structure = structure;\n\n return this;\n }\n}\n"],"mappings":"AAAA,SAAQ,mBAAkB;AAK1B,MAAO,kCAAsB,YAAY;AAAA,EAC3B;AAAA,EAEH,YAAY,QAAwB;AACvC,UAAM,MAAM;AAAA,EAChB;AAAA,EAEU,WAAmB;AACzB,WAAO;AAAA,EACX;AAAA,EAEU,MAAc;AACpB,WAAO,YAAY;AAAA,EACvB;AAAA,EAEU,WAAmB;AACzB,UAAM,YAAY,KAAK;AAEvB,QAAI,CAAC,WAAW;AACZ,YAAM,IAAI,MAAM,6BAA6B;AAAA,IACjD;AAEA,UAAM,OAAO,KAAK,UAAU,WAAW,MAAM,CAAC;AAE9C,UAAM,OAAO;AAEb,WAAO,KAAK,SAAS,EAAE,QAAQ,aAAa,IAAI,OAAO,aAAa,IAAI,IAAI,IAAI,EAAE;AAAA,EACtF;AAAA,EAEO,UAAU,WAAkC;AAC/C,SAAK,aAAa;AAElB,WAAO;AAAA,EACX;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/cli/plugins/locale/declaration/LocaleDeclaration.ts"],"sourcesContent":["import {FileBuilder} from \"@cli/plugins/typescript\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {LocaleStructure} from \"@typing/locale\";\n\nexport default class extends FileBuilder {\n protected _structure?: LocaleStructure;\n\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n protected filename(): string {\n return \"locale.d.ts\";\n }\n\n protected url(): string {\n return import.meta.url;\n }\n\n protected template(): string {\n const structure = this._structure;\n\n if (!structure) {\n throw new Error(\"Locale structure is not set\");\n }\n\n const type = Object.entries(structure)\n .map(([key, value]) => `${JSON.stringify(key)}: ${JSON.stringify(value)};`)\n .join(\"\\n \");\n\n return this.readFile().replace(\"__LOCALE_DICTIONARY__\", () => type);\n }\n\n public structure(structure: LocaleStructure): this {\n this._structure = structure;\n\n return this;\n }\n}\n"],"mappings":"AAAA,SAAQ,mBAAkB;AAK1B,MAAO,kCAAsB,YAAY;AAAA,EAC3B;AAAA,EAEH,YAAY,QAAwB;AACvC,UAAM,MAAM;AAAA,EAChB;AAAA,EAEU,WAAmB;AACzB,WAAO;AAAA,EACX;AAAA,EAEU,MAAc;AACpB,WAAO,YAAY;AAAA,EACvB;AAAA,EAEU,WAAmB;AACzB,UAAM,YAAY,KAAK;AAEvB,QAAI,CAAC,WAAW;AACZ,YAAM,IAAI,MAAM,6BAA6B;AAAA,IACjD;AAEA,UAAM,OAAO,OAAO,QAAQ,SAAS,EAChC,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,GAAG,KAAK,UAAU,GAAG,CAAC,KAAK,KAAK,UAAU,KAAK,CAAC,GAAG,EACzE,KAAK,YAAY;AAEtB,WAAO,KAAK,SAAS,EAAE,QAAQ,yBAAyB,MAAM,IAAI;AAAA,EACtE;AAAA,EAEO,UAAU,WAAkC;AAC/C,SAAK,aAAa;AAElB,WAAO;AAAA,EACX;AACJ;","names":[]}
@@ -1,129 +1,8 @@
1
- import {
2
- Language,
3
- LocaleDir,
4
- type LocaleNonPluralKeys,
5
- type LocalePluralKeys,
6
- type LocaleProvider,
7
- type LocaleDynamicProvider,
8
- type LocaleSubstitutionArgs,
9
- } from ":package/locale";
1
+ import ":package/locale";
10
2
 
11
3
  declare module ":package/locale" {
12
4
  // prettier-ignore
13
- export interface GeneratedNativeStructure {}
14
-
15
- /**
16
- * Translates a non-plural locale key.
17
- *
18
- * Substitutions are type-checked from the generated locale structure:
19
- * keys without placeholders do not accept substitutions, while keys with
20
- * placeholders require all declared substitution values.
21
- *
22
- * @example
23
- * ```ts
24
- * t("app.name");
25
- * t("app.greeting", {name: "Alice"});
26
- * ```
27
- */
28
- export function t<K extends LocaleNonPluralKeys<GeneratedNativeStructure>>(
29
- key: K,
30
- ...args: LocaleSubstitutionArgs<GeneratedNativeStructure, K>
31
- ): string;
32
-
33
- /**
34
- * Translates a plural locale key using the provided count.
35
- *
36
- * Substitutions are type-checked from the generated locale structure:
37
- * keys without placeholders do not accept substitutions, while keys with
38
- * placeholders require all declared substitution values.
39
- *
40
- * @example
41
- * ```ts
42
- * choice("cart.items", count, {count});
43
- * ```
44
- */
45
- export function choice<K extends LocalePluralKeys<GeneratedNativeStructure>>(
46
- key: K,
47
- count: number,
48
- ...args: LocaleSubstitutionArgs<GeneratedNativeStructure, K>
49
- ): string;
50
-
51
- /**
52
- * Converts a locale key to a browser message reference.
53
- *
54
- * This is useful for browser-managed extension fields that expect
55
- * `__MSG_name__` references instead of already translated text.
56
- *
57
- * @example
58
- * ```ts
59
- * key("app.name"); // "__MSG_app_name__"
60
- * ```
61
- */
62
- export function key(value: keyof GeneratedNativeStructure & string): string;
63
-
64
- /**
65
- * Resolves a string that may contain a locale marker.
66
- *
67
- * When the input contains a locale marker, the marker is extracted and translated.
68
- * Plain strings are returned unchanged.
69
- *
70
- * @example
71
- * ```ts
72
- * resolve("@app.name");
73
- * resolve("Plain title");
74
- * ```
75
- */
76
- export function resolve(input: string): string;
77
-
78
- export declare class NativeLocale implements LocaleProvider<GeneratedNativeStructure> {
79
- lang(): Language;
80
-
81
- languages(): Set<Language>;
82
-
83
- keys(): ReadonlySet<keyof GeneratedNativeStructure>;
84
-
85
- // non-plural keys
86
- trans<K extends LocaleNonPluralKeys<GeneratedNativeStructure>>(
87
- key: K,
88
- ...args: LocaleSubstitutionArgs<GeneratedNativeStructure, K>
89
- ): string;
90
-
91
- // plural keys
92
- choice<K extends LocalePluralKeys<GeneratedNativeStructure>>(
93
- key: K,
94
- count: number,
95
- ...args: LocaleSubstitutionArgs<GeneratedNativeStructure, K>
96
- ): string;
97
- }
98
-
99
- export declare class DynamicLocale extends NativeLocale implements LocaleDynamicProvider<GeneratedNativeStructure> {
100
- change(lang: Language): Promise<Language>;
5
+ export interface LocaleNativeStructure {
6
+ __LOCALE_DICTIONARY__
101
7
  }
102
8
  }
103
-
104
- declare module ":package/locale/react" {
105
- import type {GeneratedNativeStructure} from ":package/locale";
106
-
107
- export interface LocaleContract {
108
- lang: Language;
109
-
110
- dir: LocaleDir;
111
-
112
- isRtl: boolean;
113
-
114
- t<K extends LocaleNonPluralKeys<GeneratedNativeStructure>>(
115
- key: K,
116
- ...args: LocaleSubstitutionArgs<GeneratedNativeStructure, K>
117
- ): string;
118
-
119
- choice<K extends LocalePluralKeys<GeneratedNativeStructure>>(
120
- key: K,
121
- count: number,
122
- ...args: LocaleSubstitutionArgs<GeneratedNativeStructure, K>
123
- ): string;
124
-
125
- change(lang: Language): void;
126
- }
127
-
128
- export function useLocale(): LocaleContract;
129
- }
@@ -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,2 @@
1
+ declare const _default: import("../../../main/plugin.js").PluginDefinition<[]>;
2
+ export default _default;
@@ -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,WAAW,CAAC;AAEtF,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"]}
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(),