adnbn 0.8.0 → 0.9.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 (112) 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/bundler/plugins/GenerateJsonPlugin.js +3 -7
  4. package/dist/cli/bundler/plugins/GenerateJsonPlugin.js.map +1 -1
  5. package/dist/cli/entrypoint/file/injectors/core.js +9 -1
  6. package/dist/cli/entrypoint/file/injectors/core.js.map +1 -1
  7. package/dist/cli/entrypoint/parser/ContentParser.d.ts +2 -2
  8. package/dist/cli/entrypoint/parser/ContentParser.js.map +1 -1
  9. package/dist/cli/entrypoint/parser/RelayParser.js +2 -1
  10. package/dist/cli/entrypoint/parser/RelayParser.js.map +1 -1
  11. package/dist/cli/index.js +2 -0
  12. package/dist/cli/index.js.map +1 -1
  13. package/dist/cli/plugins/content/ContentDriver.d.ts +21 -8
  14. package/dist/cli/plugins/content/ContentDriver.js +24 -2
  15. package/dist/cli/plugins/content/ContentDriver.js.map +1 -1
  16. package/dist/cli/plugins/content/ContentManager.d.ts +8 -3
  17. package/dist/cli/plugins/content/ContentManager.js +41 -6
  18. package/dist/cli/plugins/content/ContentManager.js.map +1 -1
  19. package/dist/cli/plugins/content/Relay.d.ts +6 -8
  20. package/dist/cli/plugins/content/Relay.js +2 -14
  21. package/dist/cli/plugins/content/Relay.js.map +1 -1
  22. package/dist/cli/plugins/content/RelayDeclaration.d.ts +0 -1
  23. package/dist/cli/plugins/content/RelayDeclaration.js +0 -3
  24. package/dist/cli/plugins/content/RelayDeclaration.js.map +1 -1
  25. package/dist/cli/plugins/content/RelayDriver.d.ts +10 -0
  26. package/dist/cli/plugins/content/RelayDriver.js +39 -0
  27. package/dist/cli/plugins/content/RelayDriver.js.map +1 -0
  28. package/dist/cli/plugins/content/index.js +1 -10
  29. package/dist/cli/plugins/content/index.js.map +1 -1
  30. package/dist/cli/plugins/content/types.d.ts +3 -0
  31. package/dist/cli/plugins/locale/Locale.js +5 -1
  32. package/dist/cli/plugins/locale/Locale.js.map +1 -1
  33. package/dist/cli/plugins/locale/declaration/LocaleDeclaration.js +2 -3
  34. package/dist/cli/plugins/locale/declaration/LocaleDeclaration.js.map +1 -1
  35. package/dist/cli/plugins/locale/declaration/locale.d.ts +3 -124
  36. package/dist/cli/virtual/index.js +2 -2
  37. package/dist/cli/virtual/virtual.d.ts +52 -147
  38. package/dist/entry/relay/index.d.ts +2 -1
  39. package/dist/entry/relay/index.js.map +1 -1
  40. package/dist/locale/adapters/react/LocaleProvider.js +2 -0
  41. package/dist/locale/adapters/react/LocaleProvider.js.map +1 -1
  42. package/dist/locale/adapters/react/context.d.ts +1 -0
  43. package/dist/locale/adapters/react/context.js +3 -2
  44. package/dist/locale/adapters/react/context.js.map +1 -1
  45. package/dist/locale/helpers.js.map +1 -1
  46. package/dist/locale/providers/AbstractLocale.d.ts +2 -0
  47. package/dist/locale/providers/AbstractLocale.js +5 -0
  48. package/dist/locale/providers/AbstractLocale.js.map +1 -1
  49. package/dist/locale/providers/NativeLocale.d.ts +3 -2
  50. package/dist/locale/providers/NativeLocale.js +1 -1
  51. package/dist/locale/providers/NativeLocale.js.map +1 -1
  52. package/dist/main/relay.d.ts +7 -6
  53. package/dist/main/relay.js +12 -5
  54. package/dist/main/relay.js.map +1 -1
  55. package/dist/message/error.d.ts +6 -0
  56. package/dist/message/error.js +21 -0
  57. package/dist/message/error.js.map +1 -1
  58. package/dist/message/index.d.ts +2 -1
  59. package/dist/message/index.js +2 -0
  60. package/dist/message/index.js.map +1 -1
  61. package/dist/message/providers/Message.d.ts +3 -0
  62. package/dist/message/providers/Message.js +36 -6
  63. package/dist/message/providers/Message.js.map +1 -1
  64. package/dist/offscreen/providers/ProxyOffscreen.d.ts +2 -2
  65. package/dist/offscreen/providers/ProxyOffscreen.js.map +1 -1
  66. package/dist/relay/RelayPermission.d.ts +6 -3
  67. package/dist/relay/RelayPermission.js +28 -12
  68. package/dist/relay/RelayPermission.js.map +1 -1
  69. package/dist/relay/adapters/RelayAdapter.d.ts +8 -0
  70. package/dist/relay/adapters/RelayAdapter.js +16 -0
  71. package/dist/relay/adapters/RelayAdapter.js.map +1 -0
  72. package/dist/relay/adapters/RelayMessagingAdapter.d.ts +11 -0
  73. package/dist/relay/adapters/RelayMessagingAdapter.js +91 -0
  74. package/dist/relay/adapters/RelayMessagingAdapter.js.map +1 -0
  75. package/dist/relay/adapters/RelayScriptingAdapter.d.ts +15 -0
  76. package/dist/relay/adapters/RelayScriptingAdapter.js +170 -0
  77. package/dist/relay/adapters/RelayScriptingAdapter.js.map +1 -0
  78. package/dist/relay/discovery/RelayDiscovery.d.ts +10 -0
  79. package/dist/relay/discovery/RelayDiscovery.js +62 -0
  80. package/dist/relay/discovery/RelayDiscovery.js.map +1 -0
  81. package/dist/relay/index.d.ts +1 -4
  82. package/dist/relay/index.js +1 -3
  83. package/dist/relay/index.js.map +1 -1
  84. package/dist/relay/providers/ProxyRelay.d.ts +20 -17
  85. package/dist/relay/providers/ProxyRelay.js +79 -52
  86. package/dist/relay/providers/ProxyRelay.js.map +1 -1
  87. package/dist/relay/providers/RegisterRelay.js +1 -2
  88. package/dist/relay/providers/RegisterRelay.js.map +1 -1
  89. package/dist/relay/result.d.ts +12 -0
  90. package/dist/relay/result.js +88 -0
  91. package/dist/relay/result.js.map +1 -0
  92. package/dist/sandbox/index.d.ts +2 -2
  93. package/dist/sandbox/index.js.map +1 -1
  94. package/dist/sandbox/providers/ProxySandbox.d.ts +2 -2
  95. package/dist/sandbox/providers/ProxySandbox.js.map +1 -1
  96. package/dist/service/providers/ProxyService.d.ts +2 -2
  97. package/dist/service/providers/ProxyService.js.map +1 -1
  98. package/dist/transport/ProxyTransport.d.ts +2 -2
  99. package/dist/transport/ProxyTransport.js.map +1 -1
  100. package/dist/transport/index.d.ts +3 -2
  101. package/dist/types/helpers.d.ts +0 -4
  102. package/dist/types/locale.d.ts +3 -0
  103. package/dist/types/locale.js +58 -0
  104. package/dist/types/locale.js.map +1 -1
  105. package/dist/types/relay.d.ts +130 -3
  106. package/dist/types/relay.js +16 -0
  107. package/dist/types/relay.js.map +1 -1
  108. package/dist/types/rpc.d.ts +4 -0
  109. package/dist/types/rpc.js +1 -0
  110. package/dist/types/rpc.js.map +1 -0
  111. package/dist/types/transport.d.ts +3 -2
  112. package/package.json +5 -4
@@ -23,6 +23,13 @@ class LocaleStructureValidator_default {
23
23
  continue;
24
24
  }
25
25
  const structure = builder.structure();
26
+ for (const [key, expected] of Object.entries(defaultStructure)) {
27
+ if (expected.plural && !Object.hasOwn(structure, key)) {
28
+ throw new Error(
29
+ `Locale "${language}" is missing plural key "${key}" required by default locale "${this.defaultLanguage}"`
30
+ );
31
+ }
32
+ }
26
33
  for (const [key, locale] of Object.entries(structure)) {
27
34
  const expected = defaultStructure[key];
28
35
  if (!expected) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/builders/locale/LocaleStructureValidator.ts"],"sourcesContent":["import _ from \"lodash\";\n\nimport {Language, LocaleBuilder, LocaleBuilders, LocaleContractValidator} from \"@typing/locale\";\n\nexport default class implements LocaleContractValidator {\n constructor(protected readonly defaultLanguage: Language) {}\n\n public isValid(builders: LocaleBuilders): boolean {\n try {\n this.validate(builders);\n\n return true;\n } catch {\n return false;\n }\n }\n\n public validate(builders: LocaleBuilders): this {\n const defaultBuilder = this.getDefaultBuilder(builders);\n\n if (!defaultBuilder) {\n return this;\n }\n\n const defaultStructure = defaultBuilder.structure();\n\n for (const [language, builder] of builders.entries()) {\n if (language === this.defaultLanguage) {\n continue;\n }\n\n const structure = builder.structure();\n\n for (const [key, locale] of Object.entries(structure)) {\n const expected = defaultStructure[key];\n\n if (!expected) {\n console.warn(\n `Locale \"${language}\" contains unknown key \"${key}\" not found in default locale \"${this.defaultLanguage}\"`\n );\n continue;\n }\n\n if (expected.plural !== locale.plural) {\n throw new Error(\n `Locale \"${language}\" key \"${key}\" must be ${expected.plural ? \"plural\" : \"non-plural\"} like default locale \"${this.defaultLanguage}\"`\n );\n }\n\n if (!_.isEqual(expected.substitutions, locale.substitutions)) {\n throw new Error(\n `Locale \"${language}\" key \"${key}\" substitutions [${locale.substitutions.join(\", \")}] must match default locale \"${this.defaultLanguage}\" substitutions [${expected.substitutions.join(\", \")}]`\n );\n }\n }\n }\n\n return this;\n }\n\n public getDefaultBuilder(builders: LocaleBuilders): LocaleBuilder | undefined {\n if (builders.size === 0) {\n return undefined;\n }\n\n const builder = builders.get(this.defaultLanguage);\n\n if (!builder) {\n throw new Error(\n `Default locale \"${this.defaultLanguage}\" not found in available translations. Available languages: ${[...builders.keys()].join(\", \")}`\n );\n }\n\n return builder;\n }\n}\n"],"mappings":"AAAA,OAAO,OAAO;AAId,MAAO,iCAAiD;AAAA,EACpD,YAA+B,iBAA2B;AAA3B;AAAA,EAA4B;AAAA,EAA5B;AAAA,EAExB,QAAQ,UAAmC;AAC9C,QAAI;AACA,WAAK,SAAS,QAAQ;AAEtB,aAAO;AAAA,IACX,QAAQ;AACJ,aAAO;AAAA,IACX;AAAA,EACJ;AAAA,EAEO,SAAS,UAAgC;AAC5C,UAAM,iBAAiB,KAAK,kBAAkB,QAAQ;AAEtD,QAAI,CAAC,gBAAgB;AACjB,aAAO;AAAA,IACX;AAEA,UAAM,mBAAmB,eAAe,UAAU;AAElD,eAAW,CAAC,UAAU,OAAO,KAAK,SAAS,QAAQ,GAAG;AAClD,UAAI,aAAa,KAAK,iBAAiB;AACnC;AAAA,MACJ;AAEA,YAAM,YAAY,QAAQ,UAAU;AAEpC,iBAAW,CAAC,KAAK,MAAM,KAAK,OAAO,QAAQ,SAAS,GAAG;AACnD,cAAM,WAAW,iBAAiB,GAAG;AAErC,YAAI,CAAC,UAAU;AACX,kBAAQ;AAAA,YACJ,WAAW,QAAQ,2BAA2B,GAAG,kCAAkC,KAAK,eAAe;AAAA,UAC3G;AACA;AAAA,QACJ;AAEA,YAAI,SAAS,WAAW,OAAO,QAAQ;AACnC,gBAAM,IAAI;AAAA,YACN,WAAW,QAAQ,UAAU,GAAG,aAAa,SAAS,SAAS,WAAW,YAAY,yBAAyB,KAAK,eAAe;AAAA,UACvI;AAAA,QACJ;AAEA,YAAI,CAAC,EAAE,QAAQ,SAAS,eAAe,OAAO,aAAa,GAAG;AAC1D,gBAAM,IAAI;AAAA,YACN,WAAW,QAAQ,UAAU,GAAG,oBAAoB,OAAO,cAAc,KAAK,IAAI,CAAC,gCAAgC,KAAK,eAAe,oBAAoB,SAAS,cAAc,KAAK,IAAI,CAAC;AAAA,UAChM;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAAA,EAEO,kBAAkB,UAAqD;AAC1E,QAAI,SAAS,SAAS,GAAG;AACrB,aAAO;AAAA,IACX;AAEA,UAAM,UAAU,SAAS,IAAI,KAAK,eAAe;AAEjD,QAAI,CAAC,SAAS;AACV,YAAM,IAAI;AAAA,QACN,mBAAmB,KAAK,eAAe,+DAA+D,CAAC,GAAG,SAAS,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC;AAAA,MACzI;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/cli/builders/locale/LocaleStructureValidator.ts"],"sourcesContent":["import _ from \"lodash\";\n\nimport {Language, LocaleBuilder, LocaleBuilders, LocaleContractValidator} from \"@typing/locale\";\n\nexport default class implements LocaleContractValidator {\n constructor(protected readonly defaultLanguage: Language) {}\n\n public isValid(builders: LocaleBuilders): boolean {\n try {\n this.validate(builders);\n\n return true;\n } catch {\n return false;\n }\n }\n\n public validate(builders: LocaleBuilders): this {\n const defaultBuilder = this.getDefaultBuilder(builders);\n\n if (!defaultBuilder) {\n return this;\n }\n\n const defaultStructure = defaultBuilder.structure();\n\n for (const [language, builder] of builders.entries()) {\n if (language === this.defaultLanguage) {\n continue;\n }\n\n const structure = builder.structure();\n\n for (const [key, expected] of Object.entries(defaultStructure)) {\n if (expected.plural && !Object.hasOwn(structure, key)) {\n throw new Error(\n `Locale \"${language}\" is missing plural key \"${key}\" required by default locale \"${this.defaultLanguage}\"`\n );\n }\n }\n\n for (const [key, locale] of Object.entries(structure)) {\n const expected = defaultStructure[key];\n\n if (!expected) {\n console.warn(\n `Locale \"${language}\" contains unknown key \"${key}\" not found in default locale \"${this.defaultLanguage}\"`\n );\n continue;\n }\n\n if (expected.plural !== locale.plural) {\n throw new Error(\n `Locale \"${language}\" key \"${key}\" must be ${expected.plural ? \"plural\" : \"non-plural\"} like default locale \"${this.defaultLanguage}\"`\n );\n }\n\n if (!_.isEqual(expected.substitutions, locale.substitutions)) {\n throw new Error(\n `Locale \"${language}\" key \"${key}\" substitutions [${locale.substitutions.join(\", \")}] must match default locale \"${this.defaultLanguage}\" substitutions [${expected.substitutions.join(\", \")}]`\n );\n }\n }\n }\n\n return this;\n }\n\n public getDefaultBuilder(builders: LocaleBuilders): LocaleBuilder | undefined {\n if (builders.size === 0) {\n return undefined;\n }\n\n const builder = builders.get(this.defaultLanguage);\n\n if (!builder) {\n throw new Error(\n `Default locale \"${this.defaultLanguage}\" not found in available translations. Available languages: ${[...builders.keys()].join(\", \")}`\n );\n }\n\n return builder;\n }\n}\n"],"mappings":"AAAA,OAAO,OAAO;AAId,MAAO,iCAAiD;AAAA,EACpD,YAA+B,iBAA2B;AAA3B;AAAA,EAA4B;AAAA,EAA5B;AAAA,EAExB,QAAQ,UAAmC;AAC9C,QAAI;AACA,WAAK,SAAS,QAAQ;AAEtB,aAAO;AAAA,IACX,QAAQ;AACJ,aAAO;AAAA,IACX;AAAA,EACJ;AAAA,EAEO,SAAS,UAAgC;AAC5C,UAAM,iBAAiB,KAAK,kBAAkB,QAAQ;AAEtD,QAAI,CAAC,gBAAgB;AACjB,aAAO;AAAA,IACX;AAEA,UAAM,mBAAmB,eAAe,UAAU;AAElD,eAAW,CAAC,UAAU,OAAO,KAAK,SAAS,QAAQ,GAAG;AAClD,UAAI,aAAa,KAAK,iBAAiB;AACnC;AAAA,MACJ;AAEA,YAAM,YAAY,QAAQ,UAAU;AAEpC,iBAAW,CAAC,KAAK,QAAQ,KAAK,OAAO,QAAQ,gBAAgB,GAAG;AAC5D,YAAI,SAAS,UAAU,CAAC,OAAO,OAAO,WAAW,GAAG,GAAG;AACnD,gBAAM,IAAI;AAAA,YACN,WAAW,QAAQ,4BAA4B,GAAG,iCAAiC,KAAK,eAAe;AAAA,UAC3G;AAAA,QACJ;AAAA,MACJ;AAEA,iBAAW,CAAC,KAAK,MAAM,KAAK,OAAO,QAAQ,SAAS,GAAG;AACnD,cAAM,WAAW,iBAAiB,GAAG;AAErC,YAAI,CAAC,UAAU;AACX,kBAAQ;AAAA,YACJ,WAAW,QAAQ,2BAA2B,GAAG,kCAAkC,KAAK,eAAe;AAAA,UAC3G;AACA;AAAA,QACJ;AAEA,YAAI,SAAS,WAAW,OAAO,QAAQ;AACnC,gBAAM,IAAI;AAAA,YACN,WAAW,QAAQ,UAAU,GAAG,aAAa,SAAS,SAAS,WAAW,YAAY,yBAAyB,KAAK,eAAe;AAAA,UACvI;AAAA,QACJ;AAEA,YAAI,CAAC,EAAE,QAAQ,SAAS,eAAe,OAAO,aAAa,GAAG;AAC1D,gBAAM,IAAI;AAAA,YACN,WAAW,QAAQ,UAAU,GAAG,oBAAoB,OAAO,cAAc,KAAK,IAAI,CAAC,gCAAgC,KAAK,eAAe,oBAAoB,SAAS,cAAc,KAAK,IAAI,CAAC;AAAA,UAChM;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAAA,EAEO,kBAAkB,UAAqD;AAC1E,QAAI,SAAS,SAAS,GAAG;AACrB,aAAO;AAAA,IACX;AAEA,UAAM,UAAU,SAAS,IAAI,KAAK,eAAe;AAEjD,QAAI,CAAC,SAAS;AACV,YAAM,IAAI;AAAA,QACN,mBAAmB,KAAK,eAAe,+DAA+D,CAAC,GAAG,SAAS,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC;AAAA,MACzI;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AACJ;","names":[]}
@@ -8,13 +8,9 @@ class GenerateJsonPlugin {
8
8
  update;
9
9
  apply(compiler) {
10
10
  compiler.hooks.watchRun.tapPromise(this.pluginName, async () => {
11
- try {
12
- const update = this.update;
13
- if (update) {
14
- this.data = await update();
15
- }
16
- } catch (e) {
17
- console.error("GenerateJsonPlugin: Error updating data", e);
11
+ const update = this.update;
12
+ if (update) {
13
+ this.data = await update();
18
14
  }
19
15
  });
20
16
  compiler.hooks.compilation.tap(this.pluginName, (compilation) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/bundler/plugins/GenerateJsonPlugin.ts"],"sourcesContent":["import {Compilation, Compiler, sources} from \"@rspack/core\";\n\ntype JsonValue = string | number | boolean | null | JsonObject | JsonArray;\n\ninterface JsonObject {\n [key: string]: JsonValue;\n}\n\ntype JsonArray = JsonValue[];\n\nexport type GenerateJsonPluginData = Record<string, JsonValue>;\n\nexport type GenerateJsonPluginUpdate = () => Promise<GenerateJsonPluginData>;\n\nexport default class GenerateJsonPlugin {\n private readonly pluginName: string = \"GenerateJsonPlugin\";\n\n private update?: GenerateJsonPluginUpdate;\n\n constructor(protected data: GenerateJsonPluginData) {}\n\n public apply(compiler: Compiler): void {\n compiler.hooks.watchRun.tapPromise(this.pluginName, async () => {\n try {\n const update = this.update;\n\n if (update) {\n this.data = await update();\n }\n } catch (e) {\n console.error(\"GenerateJsonPlugin: Error updating data\", e);\n }\n });\n\n compiler.hooks.compilation.tap(this.pluginName, (compilation: Compilation) => {\n compilation.hooks.processAssets.tap(\n {\n name: this.pluginName,\n stage: Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL,\n },\n () => this.generateFiles(compilation)\n );\n });\n }\n\n public watch(update: GenerateJsonPluginUpdate): this {\n this.update = update;\n\n return this;\n }\n\n protected generateFiles(compilation: Compilation): void {\n Object.entries(this.data).forEach(([filename, jsonData]) => {\n const json = JSON.stringify(jsonData, null, 2);\n\n compilation.emitAsset(filename, new sources.RawSource(json));\n });\n }\n}\n"],"mappings":"AAAA,SAAQ,aAAuB,eAAc;AAc7C,MAAO,mBAAiC;AAAA,EAKpC,YAAsB,MAA8B;AAA9B;AAAA,EAA+B;AAAA,EAA/B;AAAA,EAJL,aAAqB;AAAA,EAE9B;AAAA,EAID,MAAM,UAA0B;AACnC,aAAS,MAAM,SAAS,WAAW,KAAK,YAAY,YAAY;AAC5D,UAAI;AACA,cAAM,SAAS,KAAK;AAEpB,YAAI,QAAQ;AACR,eAAK,OAAO,MAAM,OAAO;AAAA,QAC7B;AAAA,MACJ,SAAS,GAAG;AACR,gBAAQ,MAAM,2CAA2C,CAAC;AAAA,MAC9D;AAAA,IACJ,CAAC;AAED,aAAS,MAAM,YAAY,IAAI,KAAK,YAAY,CAAC,gBAA6B;AAC1E,kBAAY,MAAM,cAAc;AAAA,QAC5B;AAAA,UACI,MAAM,KAAK;AAAA,UACX,OAAO,YAAY;AAAA,QACvB;AAAA,QACA,MAAM,KAAK,cAAc,WAAW;AAAA,MACxC;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEO,MAAM,QAAwC;AACjD,SAAK,SAAS;AAEd,WAAO;AAAA,EACX;AAAA,EAEU,cAAc,aAAgC;AACpD,WAAO,QAAQ,KAAK,IAAI,EAAE,QAAQ,CAAC,CAAC,UAAU,QAAQ,MAAM;AACxD,YAAM,OAAO,KAAK,UAAU,UAAU,MAAM,CAAC;AAE7C,kBAAY,UAAU,UAAU,IAAI,QAAQ,UAAU,IAAI,CAAC;AAAA,IAC/D,CAAC;AAAA,EACL;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/cli/bundler/plugins/GenerateJsonPlugin.ts"],"sourcesContent":["import {Compilation, Compiler, sources} from \"@rspack/core\";\n\ntype JsonValue = string | number | boolean | null | JsonObject | JsonArray;\n\ninterface JsonObject {\n [key: string]: JsonValue;\n}\n\ntype JsonArray = JsonValue[];\n\nexport type GenerateJsonPluginData = Record<string, JsonValue>;\n\nexport type GenerateJsonPluginUpdate = () => Promise<GenerateJsonPluginData>;\n\nexport default class GenerateJsonPlugin {\n private readonly pluginName: string = \"GenerateJsonPlugin\";\n\n private update?: GenerateJsonPluginUpdate;\n\n constructor(protected data: GenerateJsonPluginData) {}\n\n public apply(compiler: Compiler): void {\n compiler.hooks.watchRun.tapPromise(this.pluginName, async () => {\n const update = this.update;\n\n if (update) {\n // Let the compiler fail this rebuild rather than emit stale JSON.\n this.data = await update();\n }\n });\n\n compiler.hooks.compilation.tap(this.pluginName, (compilation: Compilation) => {\n compilation.hooks.processAssets.tap(\n {\n name: this.pluginName,\n stage: Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL,\n },\n () => this.generateFiles(compilation)\n );\n });\n }\n\n public watch(update: GenerateJsonPluginUpdate): this {\n this.update = update;\n\n return this;\n }\n\n protected generateFiles(compilation: Compilation): void {\n Object.entries(this.data).forEach(([filename, jsonData]) => {\n const json = JSON.stringify(jsonData, null, 2);\n\n compilation.emitAsset(filename, new sources.RawSource(json));\n });\n }\n}\n"],"mappings":"AAAA,SAAQ,aAAuB,eAAc;AAc7C,MAAO,mBAAiC;AAAA,EAKpC,YAAsB,MAA8B;AAA9B;AAAA,EAA+B;AAAA,EAA/B;AAAA,EAJL,aAAqB;AAAA,EAE9B;AAAA,EAID,MAAM,UAA0B;AACnC,aAAS,MAAM,SAAS,WAAW,KAAK,YAAY,YAAY;AAC5D,YAAM,SAAS,KAAK;AAEpB,UAAI,QAAQ;AAER,aAAK,OAAO,MAAM,OAAO;AAAA,MAC7B;AAAA,IACJ,CAAC;AAED,aAAS,MAAM,YAAY,IAAI,KAAK,YAAY,CAAC,gBAA6B;AAC1E,kBAAY,MAAM,cAAc;AAAA,QAC5B;AAAA,UACI,MAAM,KAAK;AAAA,UACX,OAAO,YAAY;AAAA,QACvB;AAAA,QACA,MAAM,KAAK,cAAc,WAAW;AAAA,MACxC;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEO,MAAM,QAAwC;AACjD,SAAK,SAAS;AAEd,WAAO;AAAA,EACX;AAAA,EAEU,cAAc,aAAgC;AACpD,WAAO,QAAQ,KAAK,IAAI,EAAE,QAAQ,CAAC,CAAC,UAAU,QAAQ,MAAM;AACxD,YAAM,OAAO,KAAK,UAAU,UAAU,MAAM,CAAC;AAE7C,kBAAY,UAAU,UAAU,IAAI,QAAQ,UAAU,IAAI,CAAC;AAAA,IAC/D,CAAC;AAAA,EACL;AACJ;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import { Command, Mode, PackageName } from "./../../../../types/app.js";
2
2
  import { Browser } from "./../../../../types/browser.js";
3
- import { RelayMethod } from "./../../../../types/relay.js";
3
+ import { RelayAllFrames, RelayMethod } from "./../../../../types/relay.js";
4
4
  import { ContentScriptAppend, ContentScriptDeclarative, ContentScriptMarker } from "./../../../../types/content.js";
5
5
  import { OffscreenReason } from "./../../../../types/offscreen.js";
6
6
  import { SandboxAllow, SandboxSource } from "./../../../../types/sandbox.js";
@@ -71,6 +71,14 @@ var core_default = () => {
71
71
  value
72
72
  });
73
73
  });
74
+ Object.entries(RelayAllFrames).forEach(([key, value]) => {
75
+ resolvers.push({
76
+ from: PackageName,
77
+ target: "RelayAllFrames",
78
+ name: key,
79
+ value
80
+ });
81
+ });
74
82
  Object.entries(OffscreenReason).forEach(([key, value]) => {
75
83
  resolvers.push({
76
84
  from: PackageName,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/cli/entrypoint/file/injectors/core.ts"],"sourcesContent":["import {Command, Mode, PackageName} from \"@typing/app\";\nimport {Browser} from \"@typing/browser\";\nimport {RelayMethod} from \"@typing/relay\";\nimport {ContentScriptAppend, ContentScriptDeclarative, ContentScriptMarker} from \"@typing/content\";\nimport {OffscreenReason} from \"@typing/offscreen\";\nimport {SandboxAllow, SandboxSource} from \"@typing/sandbox\";\nimport {CspSource} from \"@typing/csp\";\n\nimport {Injector} from \"../types\";\n\nexport default (): Injector[] => {\n const resolvers: Injector[] = [];\n\n Object.entries(Browser).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"Browser\",\n name: key,\n value,\n });\n });\n\n Object.entries(Mode).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"Mode\",\n name: key,\n value,\n });\n });\n\n Object.entries(Command).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"Command\",\n name: key,\n value,\n });\n });\n\n Object.entries(ContentScriptDeclarative).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"ContentScriptDeclarative\",\n name: key,\n value,\n });\n });\n\n Object.entries(ContentScriptAppend).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"ContentScriptAppend\",\n name: key,\n value,\n });\n });\n\n Object.entries(ContentScriptMarker).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"ContentScriptMarker\",\n name: key,\n value,\n });\n });\n\n Object.entries(CspSource).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"CspSource\",\n name: key,\n value,\n });\n });\n\n Object.entries(RelayMethod).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"RelayMethod\",\n name: key,\n value,\n });\n });\n\n Object.entries(OffscreenReason).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"OffscreenReason\",\n name: key,\n value,\n });\n });\n\n Object.entries(SandboxAllow).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"SandboxAllow\",\n name: key,\n value,\n });\n });\n\n Object.entries(SandboxSource).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"SandboxSource\",\n name: key,\n value,\n });\n });\n\n return resolvers;\n};\n"],"mappings":"AAAA,SAAQ,SAAS,MAAM,mBAAkB;AACzC,SAAQ,eAAc;AACtB,SAAQ,mBAAkB;AAC1B,SAAQ,qBAAqB,0BAA0B,2BAA0B;AACjF,SAAQ,uBAAsB;AAC9B,SAAQ,cAAc,qBAAoB;AAC1C,SAAQ,iBAAgB;AAIxB,IAAO,eAAQ,MAAkB;AAC7B,QAAM,YAAwB,CAAC;AAE/B,SAAO,QAAQ,OAAO,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC9C,cAAU,KAAK;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AAED,SAAO,QAAQ,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC3C,cAAU,KAAK;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AAED,SAAO,QAAQ,OAAO,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC9C,cAAU,KAAK;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AAED,SAAO,QAAQ,wBAAwB,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC/D,cAAU,KAAK;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AAED,SAAO,QAAQ,mBAAmB,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC1D,cAAU,KAAK;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AAED,SAAO,QAAQ,mBAAmB,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC1D,cAAU,KAAK;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AAED,SAAO,QAAQ,SAAS,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAChD,cAAU,KAAK;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AAED,SAAO,QAAQ,WAAW,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAClD,cAAU,KAAK;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AAED,SAAO,QAAQ,eAAe,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACtD,cAAU,KAAK;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AAED,SAAO,QAAQ,YAAY,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACnD,cAAU,KAAK;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AAED,SAAO,QAAQ,aAAa,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACpD,cAAU,KAAK;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AAED,SAAO;AACX;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/cli/entrypoint/file/injectors/core.ts"],"sourcesContent":["import {Command, Mode, PackageName} from \"@typing/app\";\nimport {Browser} from \"@typing/browser\";\nimport {RelayAllFrames, RelayMethod} from \"@typing/relay\";\nimport {ContentScriptAppend, ContentScriptDeclarative, ContentScriptMarker} from \"@typing/content\";\nimport {OffscreenReason} from \"@typing/offscreen\";\nimport {SandboxAllow, SandboxSource} from \"@typing/sandbox\";\nimport {CspSource} from \"@typing/csp\";\n\nimport {Injector} from \"../types\";\n\nexport default (): Injector[] => {\n const resolvers: Injector[] = [];\n\n Object.entries(Browser).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"Browser\",\n name: key,\n value,\n });\n });\n\n Object.entries(Mode).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"Mode\",\n name: key,\n value,\n });\n });\n\n Object.entries(Command).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"Command\",\n name: key,\n value,\n });\n });\n\n Object.entries(ContentScriptDeclarative).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"ContentScriptDeclarative\",\n name: key,\n value,\n });\n });\n\n Object.entries(ContentScriptAppend).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"ContentScriptAppend\",\n name: key,\n value,\n });\n });\n\n Object.entries(ContentScriptMarker).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"ContentScriptMarker\",\n name: key,\n value,\n });\n });\n\n Object.entries(CspSource).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"CspSource\",\n name: key,\n value,\n });\n });\n\n Object.entries(RelayMethod).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"RelayMethod\",\n name: key,\n value,\n });\n });\n\n Object.entries(RelayAllFrames).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"RelayAllFrames\",\n name: key,\n value,\n });\n });\n\n Object.entries(OffscreenReason).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"OffscreenReason\",\n name: key,\n value,\n });\n });\n\n Object.entries(SandboxAllow).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"SandboxAllow\",\n name: key,\n value,\n });\n });\n\n Object.entries(SandboxSource).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"SandboxSource\",\n name: key,\n value,\n });\n });\n\n return resolvers;\n};\n"],"mappings":"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","names":[]}
@@ -1,7 +1,7 @@
1
1
  import AbstractParser from "./AbstractParser.js";
2
2
  import { ContentScriptEntrypointOptions } from "../../../types/content.js";
3
- import { EntrypointFile } from "../../../types/entrypoint.js";
4
- export default class<O extends ContentScriptEntrypointOptions = ContentScriptEntrypointOptions> extends AbstractParser<O> {
3
+ import { EntrypointFile, EntrypointOptions } from "../../../types/entrypoint.js";
4
+ export default class<O extends EntrypointOptions = ContentScriptEntrypointOptions> extends AbstractParser<O> {
5
5
  protected definition(): string | string[];
6
6
  protected schema(): typeof this.CommonPropertiesSchema;
7
7
  options(file: EntrypointFile): O;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/entrypoint/parser/ContentParser.ts"],"sourcesContent":["import z from \"zod\";\n\nimport AbstractParser from \"./AbstractParser\";\n\nimport {\n ContentScriptDeclarative,\n ContentScriptEntrypointOptions,\n ContentScriptMarker,\n ContentScriptMatches,\n} from \"@typing/content\";\nimport {EntrypointFile} from \"@typing/entrypoint\";\n\nexport default class<\n O extends ContentScriptEntrypointOptions = ContentScriptEntrypointOptions,\n> extends AbstractParser<O> {\n protected definition(): string | string[] {\n return [\"defineContentScript\", \"defineContentScriptAppend\"];\n }\n\n protected schema(): typeof this.CommonPropertiesSchema {\n return this.CommonPropertiesSchema.extend({\n matches: z.array(z.string()).optional(),\n excludeMatches: z.array(z.string()).optional(),\n matchAboutBlank: z.boolean().optional(),\n includeGlobs: z.array(z.string()).optional(),\n excludeGlobs: z.array(z.string()).optional(),\n allFrames: z.boolean().optional(),\n world: z.enum([\"ISOLATED\", \"MAIN\"]).optional(),\n runAt: z.enum([\"document_start\", \"document_end\", \"document_idle\"]).optional(),\n matchOriginAsFallback: z.boolean().optional(),\n declarative: z.union([z.nativeEnum(ContentScriptDeclarative), z.boolean()]).optional(),\n marker: z.union([z.nativeEnum(ContentScriptMarker), z.boolean()]).optional(),\n });\n }\n\n public options(file: EntrypointFile): O {\n const options = super.options(file);\n\n return {\n matches: ContentScriptMatches,\n runAt: \"document_idle\",\n ...options,\n };\n }\n}\n"],"mappings":"AAAA,OAAO,OAAO;AAEd,OAAO,oBAAoB;AAE3B;AAAA,EACI;AAAA,EAEA;AAAA,EACA;AAAA,OACG;AAGP,MAAO,8BAEG,eAAkB;AAAA,EACd,aAAgC;AACtC,WAAO,CAAC,uBAAuB,2BAA2B;AAAA,EAC9D;AAAA,EAEU,SAA6C;AACnD,WAAO,KAAK,uBAAuB,OAAO;AAAA,MACtC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AAAA,MACtC,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AAAA,MAC7C,iBAAiB,EAAE,QAAQ,EAAE,SAAS;AAAA,MACtC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AAAA,MAC3C,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AAAA,MAC3C,WAAW,EAAE,QAAQ,EAAE,SAAS;AAAA,MAChC,OAAO,EAAE,KAAK,CAAC,YAAY,MAAM,CAAC,EAAE,SAAS;AAAA,MAC7C,OAAO,EAAE,KAAK,CAAC,kBAAkB,gBAAgB,eAAe,CAAC,EAAE,SAAS;AAAA,MAC5E,uBAAuB,EAAE,QAAQ,EAAE,SAAS;AAAA,MAC5C,aAAa,EAAE,MAAM,CAAC,EAAE,WAAW,wBAAwB,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE,SAAS;AAAA,MACrF,QAAQ,EAAE,MAAM,CAAC,EAAE,WAAW,mBAAmB,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE,SAAS;AAAA,IAC/E,CAAC;AAAA,EACL;AAAA,EAEO,QAAQ,MAAyB;AACpC,UAAM,UAAU,MAAM,QAAQ,IAAI;AAElC,WAAO;AAAA,MACH,SAAS;AAAA,MACT,OAAO;AAAA,MACP,GAAG;AAAA,IACP;AAAA,EACJ;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/cli/entrypoint/parser/ContentParser.ts"],"sourcesContent":["import z from \"zod\";\n\nimport AbstractParser from \"./AbstractParser\";\n\nimport {\n ContentScriptDeclarative,\n ContentScriptEntrypointOptions,\n ContentScriptMarker,\n ContentScriptMatches,\n} from \"@typing/content\";\nimport {EntrypointFile, EntrypointOptions} from \"@typing/entrypoint\";\n\nexport default class<O extends EntrypointOptions = ContentScriptEntrypointOptions> extends AbstractParser<O> {\n protected definition(): string | string[] {\n return [\"defineContentScript\", \"defineContentScriptAppend\"];\n }\n\n protected schema(): typeof this.CommonPropertiesSchema {\n return this.CommonPropertiesSchema.extend({\n matches: z.array(z.string()).optional(),\n excludeMatches: z.array(z.string()).optional(),\n matchAboutBlank: z.boolean().optional(),\n includeGlobs: z.array(z.string()).optional(),\n excludeGlobs: z.array(z.string()).optional(),\n allFrames: z.boolean().optional(),\n world: z.enum([\"ISOLATED\", \"MAIN\"]).optional(),\n runAt: z.enum([\"document_start\", \"document_end\", \"document_idle\"]).optional(),\n matchOriginAsFallback: z.boolean().optional(),\n declarative: z.union([z.nativeEnum(ContentScriptDeclarative), z.boolean()]).optional(),\n marker: z.union([z.nativeEnum(ContentScriptMarker), z.boolean()]).optional(),\n });\n }\n\n public options(file: EntrypointFile): O {\n const options = super.options(file);\n\n return {\n matches: ContentScriptMatches,\n runAt: \"document_idle\",\n ...options,\n };\n }\n}\n"],"mappings":"AAAA,OAAO,OAAO;AAEd,OAAO,oBAAoB;AAE3B;AAAA,EACI;AAAA,EAEA;AAAA,EACA;AAAA,OACG;AAGP,MAAO,8BAAoF,eAAkB;AAAA,EAC/F,aAAgC;AACtC,WAAO,CAAC,uBAAuB,2BAA2B;AAAA,EAC9D;AAAA,EAEU,SAA6C;AACnD,WAAO,KAAK,uBAAuB,OAAO;AAAA,MACtC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AAAA,MACtC,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AAAA,MAC7C,iBAAiB,EAAE,QAAQ,EAAE,SAAS;AAAA,MACtC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AAAA,MAC3C,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AAAA,MAC3C,WAAW,EAAE,QAAQ,EAAE,SAAS;AAAA,MAChC,OAAO,EAAE,KAAK,CAAC,YAAY,MAAM,CAAC,EAAE,SAAS;AAAA,MAC7C,OAAO,EAAE,KAAK,CAAC,kBAAkB,gBAAgB,eAAe,CAAC,EAAE,SAAS;AAAA,MAC5E,uBAAuB,EAAE,QAAQ,EAAE,SAAS;AAAA,MAC5C,aAAa,EAAE,MAAM,CAAC,EAAE,WAAW,wBAAwB,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE,SAAS;AAAA,MACrF,QAAQ,EAAE,MAAM,CAAC,EAAE,WAAW,mBAAmB,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE,SAAS;AAAA,IAC/E,CAAC;AAAA,EACL;AAAA,EAEO,QAAQ,MAAyB;AACpC,UAAM,UAAU,MAAM,QAAQ,IAAI;AAElC,WAAO;AAAA,MACH,SAAS;AAAA,MACT,OAAO;AAAA,MACP,GAAG;AAAA,IACP;AAAA,EACJ;AACJ;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import z from "zod";
2
2
  import ContentParser from "./ContentParser.js";
3
- import { RelayMethod } from "./../../../types/relay.js";
3
+ import { RelayAllFrames, RelayMethod } from "./../../../types/relay.js";
4
4
  import { ContentScriptDeclarative } from "./../../../types/content.js";
5
5
  class RelayParser_default extends ContentParser {
6
6
  definition() {
@@ -11,6 +11,7 @@ class RelayParser_default extends ContentParser {
11
11
  }
12
12
  schema() {
13
13
  return super.schema().extend({
14
+ allFrames: z.union([z.boolean(), z.nativeEnum(RelayAllFrames)]).optional(),
14
15
  name: z.string().trim().min(1).max(100).regex(/^[\p{L}_$][\p{L}\p{N}_$]*$/u, {
15
16
  message: "Key must start with a Unicode letter, `$` or `_`, and may only contain letters, digits, `$` or `_`"
16
17
  }).optional(),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/entrypoint/parser/RelayParser.ts"],"sourcesContent":["import z from \"zod\";\n\nimport ContentParser from \"./ContentParser\";\n\nimport {RelayEntrypointOptions, RelayMethod} from \"@typing/relay\";\nimport {EntrypointFile} from \"@typing/entrypoint\";\nimport {ContentScriptDeclarative} from \"@typing/content\";\n\nexport default class extends ContentParser<RelayEntrypointOptions> {\n protected definition(): string {\n return \"defineRelay\";\n }\n\n protected agreement(): string {\n return \"init\";\n }\n\n protected schema(): typeof this.CommonPropertiesSchema {\n return super.schema().extend({\n name: z\n .string()\n .trim()\n .min(1)\n .max(100)\n .regex(/^[\\p{L}_$][\\p{L}\\p{N}_$]*$/u, {\n message:\n \"Key must start with a Unicode letter, `$` or `_`, and may only contain letters, digits, `$` or `_`\",\n })\n .optional(),\n method: z.nativeEnum(RelayMethod).optional(),\n });\n }\n\n public options(file: EntrypointFile): RelayEntrypointOptions {\n const {declarative, method, ...options} = super.options(file);\n\n return {\n ...options,\n method,\n declarative:\n declarative === undefined\n ? method === RelayMethod.Scripting\n ? ContentScriptDeclarative.Optional\n : undefined\n : declarative,\n };\n }\n}\n"],"mappings":"AAAA,OAAO,OAAO;AAEd,OAAO,mBAAmB;AAE1B,SAAgC,mBAAkB;AAElD,SAAQ,gCAA+B;AAEvC,MAAO,4BAAsB,cAAsC;AAAA,EACrD,aAAqB;AAC3B,WAAO;AAAA,EACX;AAAA,EAEU,YAAoB;AAC1B,WAAO;AAAA,EACX;AAAA,EAEU,SAA6C;AACnD,WAAO,MAAM,OAAO,EAAE,OAAO;AAAA,MACzB,MAAM,EACD,OAAO,EACP,KAAK,EACL,IAAI,CAAC,EACL,IAAI,GAAG,EACP,MAAM,+BAA+B;AAAA,QAClC,SACI;AAAA,MACR,CAAC,EACA,SAAS;AAAA,MACd,QAAQ,EAAE,WAAW,WAAW,EAAE,SAAS;AAAA,IAC/C,CAAC;AAAA,EACL;AAAA,EAEO,QAAQ,MAA8C;AACzD,UAAM,EAAC,aAAa,QAAQ,GAAG,QAAO,IAAI,MAAM,QAAQ,IAAI;AAE5D,WAAO;AAAA,MACH,GAAG;AAAA,MACH;AAAA,MACA,aACI,gBAAgB,SACV,WAAW,YAAY,YACnB,yBAAyB,WACzB,SACJ;AAAA,IACd;AAAA,EACJ;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/cli/entrypoint/parser/RelayParser.ts"],"sourcesContent":["import z from \"zod\";\n\nimport ContentParser from \"./ContentParser\";\n\nimport {RelayAllFrames, RelayEntrypointOptions, RelayMethod} from \"@typing/relay\";\nimport {EntrypointFile} from \"@typing/entrypoint\";\nimport {ContentScriptDeclarative} from \"@typing/content\";\n\nexport default class extends ContentParser<RelayEntrypointOptions> {\n protected definition(): string {\n return \"defineRelay\";\n }\n\n protected agreement(): string {\n return \"init\";\n }\n\n protected schema(): typeof this.CommonPropertiesSchema {\n return super.schema().extend({\n allFrames: z.union([z.boolean(), z.nativeEnum(RelayAllFrames)]).optional(),\n name: z\n .string()\n .trim()\n .min(1)\n .max(100)\n .regex(/^[\\p{L}_$][\\p{L}\\p{N}_$]*$/u, {\n message:\n \"Key must start with a Unicode letter, `$` or `_`, and may only contain letters, digits, `$` or `_`\",\n })\n .optional(),\n method: z.nativeEnum(RelayMethod).optional(),\n });\n }\n\n public options(file: EntrypointFile): RelayEntrypointOptions {\n const {declarative, method, ...options} = super.options(file);\n\n return {\n ...options,\n method,\n declarative:\n declarative === undefined\n ? method === RelayMethod.Scripting\n ? ContentScriptDeclarative.Optional\n : undefined\n : declarative,\n };\n }\n}\n"],"mappings":"AAAA,OAAO,OAAO;AAEd,OAAO,mBAAmB;AAE1B,SAAQ,gBAAwC,mBAAkB;AAElE,SAAQ,gCAA+B;AAEvC,MAAO,4BAAsB,cAAsC;AAAA,EACrD,aAAqB;AAC3B,WAAO;AAAA,EACX;AAAA,EAEU,YAAoB;AAC1B,WAAO;AAAA,EACX;AAAA,EAEU,SAA6C;AACnD,WAAO,MAAM,OAAO,EAAE,OAAO;AAAA,MACzB,WAAW,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,EAAE,WAAW,cAAc,CAAC,CAAC,EAAE,SAAS;AAAA,MACzE,MAAM,EACD,OAAO,EACP,KAAK,EACL,IAAI,CAAC,EACL,IAAI,GAAG,EACP,MAAM,+BAA+B;AAAA,QAClC,SACI;AAAA,MACR,CAAC,EACA,SAAS;AAAA,MACd,QAAQ,EAAE,WAAW,WAAW,EAAE,SAAS;AAAA,IAC/C,CAAC;AAAA,EACL;AAAA,EAEO,QAAQ,MAA8C;AACzD,UAAM,EAAC,aAAa,QAAQ,GAAG,QAAO,IAAI,MAAM,QAAQ,IAAI;AAE5D,WAAO;AAAA,MACH,GAAG;AAAA,MACH;AAAA,MACA,aACI,gBAAgB,SACV,WAAW,YAAY,YACnB,yBAAyB,WACzB,SACJ;AAAA,IACd;AAAA,EACJ;AACJ;","names":[]}
package/dist/cli/index.js CHANGED
@@ -25,6 +25,7 @@ cli.command("watch [root]", "Start watch mode").option("-m, --mode <mode>", "Set
25
25
  });
26
26
  } catch (e) {
27
27
  consola.error(e);
28
+ process.exitCode = 1;
28
29
  }
29
30
  });
30
31
  cli.command("build [root]", "Build for production").option("-m, --mode <mode>", "Set env mode", { default: "production" }).option("-c, --config <config>", "Path to config file").option("-a, --app <app>", "Specify an app to run", { default: "myapp" }).option("-b, --browser <browser>", "Specify a browser", { default: Browser.Chrome }).option("--mv2", "Target manifest v2").option("--analyze", "Visualize extension bundle").action(async (root, options) => {
@@ -42,6 +43,7 @@ cli.command("build [root]", "Build for production").option("-m, --mode <mode>",
42
43
  });
43
44
  } catch (e) {
44
45
  consola.error(e);
46
+ process.exitCode = 1;
45
47
  }
46
48
  });
47
49
  cli.version(version);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/index.ts"],"sourcesContent":["import cac from \"cac\";\nimport {consola} from \"consola\";\nimport fs from \"fs\";\n\nimport app from \"./builders/app\";\n\nimport {Command} from \"@typing/app\";\nimport {Browser} from \"@typing/browser\";\n\nconst pkg = fs.readFileSync(new URL(\"../../package.json\", import.meta.url), {encoding: \"utf-8\"});\nconst {name, version} = JSON.parse(pkg);\n\nconst cli = cac(name);\n\ncli.option(\"--debug\", \"Enable debug mode\");\n\ncli.command(\"init\", \"Initialize a new project\").action(() => {\n consola.box(\"Coming soon...\");\n});\n\ncli.command(\"watch [root]\", \"Start watch mode\")\n .option(\"-m, --mode <mode>\", \"Set env mode\", {default: \"development\"})\n .option(\"-c, --config <config>\", \"Path to config file\")\n .option(\"-a, --app <app>\", \"Specify an app to run\", {default: \"myapp\"})\n .option(\"-b, --browser <browser>\", \"Specify a browser\")\n .option(\"--mv2\", \"Target manifest v2\")\n .action(async (root, options) => {\n try {\n await app({\n command: Command.Watch,\n mode: options.mode,\n debug: options.debug,\n app: options.app,\n browser: options.browser,\n manifestVersion: options.mv2 ? 2 : 3,\n rootDir: root,\n configFile: options.config,\n });\n } catch (e) {\n consola.error(e);\n }\n });\n\ncli.command(\"build [root]\", \"Build for production\")\n .option(\"-m, --mode <mode>\", \"Set env mode\", {default: \"production\"})\n .option(\"-c, --config <config>\", \"Path to config file\")\n .option(\"-a, --app <app>\", \"Specify an app to run\", {default: \"myapp\"})\n .option(\"-b, --browser <browser>\", \"Specify a browser\", {default: Browser.Chrome})\n .option(\"--mv2\", \"Target manifest v2\")\n .option(\"--analyze\", \"Visualize extension bundle\")\n .action(async (root, options) => {\n try {\n await app({\n command: Command.Build,\n mode: options.mode,\n debug: options.debug,\n app: options.app,\n browser: options.browser,\n manifestVersion: options.mv2 ? 2 : 3,\n rootDir: root,\n configFile: options.config,\n analyze: options.analyze,\n });\n } catch (e) {\n consola.error(e);\n }\n });\n\ncli.version(version);\ncli.help();\ncli.parse();\n"],"mappings":"AAAA,OAAO,SAAS;AAChB,SAAQ,eAAc;AACtB,OAAO,QAAQ;AAEf,OAAO,SAAS;AAEhB,SAAQ,eAAc;AACtB,SAAQ,eAAc;AAEtB,MAAM,MAAM,GAAG,aAAa,IAAI,IAAI,sBAAsB,YAAY,GAAG,GAAG,EAAC,UAAU,QAAO,CAAC;AAC/F,MAAM,EAAC,MAAM,QAAO,IAAI,KAAK,MAAM,GAAG;AAEtC,MAAM,MAAM,IAAI,IAAI;AAEpB,IAAI,OAAO,WAAW,mBAAmB;AAEzC,IAAI,QAAQ,QAAQ,0BAA0B,EAAE,OAAO,MAAM;AACzD,UAAQ,IAAI,gBAAgB;AAChC,CAAC;AAED,IAAI,QAAQ,gBAAgB,kBAAkB,EACzC,OAAO,qBAAqB,gBAAgB,EAAC,SAAS,cAAa,CAAC,EACpE,OAAO,yBAAyB,qBAAqB,EACrD,OAAO,mBAAmB,yBAAyB,EAAC,SAAS,QAAO,CAAC,EACrE,OAAO,2BAA2B,mBAAmB,EACrD,OAAO,SAAS,oBAAoB,EACpC,OAAO,OAAO,MAAM,YAAY;AAC7B,MAAI;AACA,UAAM,IAAI;AAAA,MACN,SAAS,QAAQ;AAAA,MACjB,MAAM,QAAQ;AAAA,MACd,OAAO,QAAQ;AAAA,MACf,KAAK,QAAQ;AAAA,MACb,SAAS,QAAQ;AAAA,MACjB,iBAAiB,QAAQ,MAAM,IAAI;AAAA,MACnC,SAAS;AAAA,MACT,YAAY,QAAQ;AAAA,IACxB,CAAC;AAAA,EACL,SAAS,GAAG;AACR,YAAQ,MAAM,CAAC;AAAA,EACnB;AACJ,CAAC;AAEL,IAAI,QAAQ,gBAAgB,sBAAsB,EAC7C,OAAO,qBAAqB,gBAAgB,EAAC,SAAS,aAAY,CAAC,EACnE,OAAO,yBAAyB,qBAAqB,EACrD,OAAO,mBAAmB,yBAAyB,EAAC,SAAS,QAAO,CAAC,EACrE,OAAO,2BAA2B,qBAAqB,EAAC,SAAS,QAAQ,OAAM,CAAC,EAChF,OAAO,SAAS,oBAAoB,EACpC,OAAO,aAAa,4BAA4B,EAChD,OAAO,OAAO,MAAM,YAAY;AAC7B,MAAI;AACA,UAAM,IAAI;AAAA,MACN,SAAS,QAAQ;AAAA,MACjB,MAAM,QAAQ;AAAA,MACd,OAAO,QAAQ;AAAA,MACf,KAAK,QAAQ;AAAA,MACb,SAAS,QAAQ;AAAA,MACjB,iBAAiB,QAAQ,MAAM,IAAI;AAAA,MACnC,SAAS;AAAA,MACT,YAAY,QAAQ;AAAA,MACpB,SAAS,QAAQ;AAAA,IACrB,CAAC;AAAA,EACL,SAAS,GAAG;AACR,YAAQ,MAAM,CAAC;AAAA,EACnB;AACJ,CAAC;AAEL,IAAI,QAAQ,OAAO;AACnB,IAAI,KAAK;AACT,IAAI,MAAM;","names":[]}
1
+ {"version":3,"sources":["../../src/cli/index.ts"],"sourcesContent":["import cac from \"cac\";\nimport {consola} from \"consola\";\nimport fs from \"fs\";\n\nimport app from \"./builders/app\";\n\nimport {Command} from \"@typing/app\";\nimport {Browser} from \"@typing/browser\";\n\nconst pkg = fs.readFileSync(new URL(\"../../package.json\", import.meta.url), {encoding: \"utf-8\"});\nconst {name, version} = JSON.parse(pkg);\n\nconst cli = cac(name);\n\ncli.option(\"--debug\", \"Enable debug mode\");\n\ncli.command(\"init\", \"Initialize a new project\").action(() => {\n consola.box(\"Coming soon...\");\n});\n\ncli.command(\"watch [root]\", \"Start watch mode\")\n .option(\"-m, --mode <mode>\", \"Set env mode\", {default: \"development\"})\n .option(\"-c, --config <config>\", \"Path to config file\")\n .option(\"-a, --app <app>\", \"Specify an app to run\", {default: \"myapp\"})\n .option(\"-b, --browser <browser>\", \"Specify a browser\")\n .option(\"--mv2\", \"Target manifest v2\")\n .action(async (root, options) => {\n try {\n await app({\n command: Command.Watch,\n mode: options.mode,\n debug: options.debug,\n app: options.app,\n browser: options.browser,\n manifestVersion: options.mv2 ? 2 : 3,\n rootDir: root,\n configFile: options.config,\n });\n } catch (e) {\n consola.error(e);\n process.exitCode = 1;\n }\n });\n\ncli.command(\"build [root]\", \"Build for production\")\n .option(\"-m, --mode <mode>\", \"Set env mode\", {default: \"production\"})\n .option(\"-c, --config <config>\", \"Path to config file\")\n .option(\"-a, --app <app>\", \"Specify an app to run\", {default: \"myapp\"})\n .option(\"-b, --browser <browser>\", \"Specify a browser\", {default: Browser.Chrome})\n .option(\"--mv2\", \"Target manifest v2\")\n .option(\"--analyze\", \"Visualize extension bundle\")\n .action(async (root, options) => {\n try {\n await app({\n command: Command.Build,\n mode: options.mode,\n debug: options.debug,\n app: options.app,\n browser: options.browser,\n manifestVersion: options.mv2 ? 2 : 3,\n rootDir: root,\n configFile: options.config,\n analyze: options.analyze,\n });\n } catch (e) {\n consola.error(e);\n process.exitCode = 1;\n }\n });\n\ncli.version(version);\ncli.help();\ncli.parse();\n"],"mappings":"AAAA,OAAO,SAAS;AAChB,SAAQ,eAAc;AACtB,OAAO,QAAQ;AAEf,OAAO,SAAS;AAEhB,SAAQ,eAAc;AACtB,SAAQ,eAAc;AAEtB,MAAM,MAAM,GAAG,aAAa,IAAI,IAAI,sBAAsB,YAAY,GAAG,GAAG,EAAC,UAAU,QAAO,CAAC;AAC/F,MAAM,EAAC,MAAM,QAAO,IAAI,KAAK,MAAM,GAAG;AAEtC,MAAM,MAAM,IAAI,IAAI;AAEpB,IAAI,OAAO,WAAW,mBAAmB;AAEzC,IAAI,QAAQ,QAAQ,0BAA0B,EAAE,OAAO,MAAM;AACzD,UAAQ,IAAI,gBAAgB;AAChC,CAAC;AAED,IAAI,QAAQ,gBAAgB,kBAAkB,EACzC,OAAO,qBAAqB,gBAAgB,EAAC,SAAS,cAAa,CAAC,EACpE,OAAO,yBAAyB,qBAAqB,EACrD,OAAO,mBAAmB,yBAAyB,EAAC,SAAS,QAAO,CAAC,EACrE,OAAO,2BAA2B,mBAAmB,EACrD,OAAO,SAAS,oBAAoB,EACpC,OAAO,OAAO,MAAM,YAAY;AAC7B,MAAI;AACA,UAAM,IAAI;AAAA,MACN,SAAS,QAAQ;AAAA,MACjB,MAAM,QAAQ;AAAA,MACd,OAAO,QAAQ;AAAA,MACf,KAAK,QAAQ;AAAA,MACb,SAAS,QAAQ;AAAA,MACjB,iBAAiB,QAAQ,MAAM,IAAI;AAAA,MACnC,SAAS;AAAA,MACT,YAAY,QAAQ;AAAA,IACxB,CAAC;AAAA,EACL,SAAS,GAAG;AACR,YAAQ,MAAM,CAAC;AACf,YAAQ,WAAW;AAAA,EACvB;AACJ,CAAC;AAEL,IAAI,QAAQ,gBAAgB,sBAAsB,EAC7C,OAAO,qBAAqB,gBAAgB,EAAC,SAAS,aAAY,CAAC,EACnE,OAAO,yBAAyB,qBAAqB,EACrD,OAAO,mBAAmB,yBAAyB,EAAC,SAAS,QAAO,CAAC,EACrE,OAAO,2BAA2B,qBAAqB,EAAC,SAAS,QAAQ,OAAM,CAAC,EAChF,OAAO,SAAS,oBAAoB,EACpC,OAAO,aAAa,4BAA4B,EAChD,OAAO,OAAO,MAAM,YAAY;AAC7B,MAAI;AACA,UAAM,IAAI;AAAA,MACN,SAAS,QAAQ;AAAA,MACjB,MAAM,QAAQ;AAAA,MACd,OAAO,QAAQ;AAAA,MACf,KAAK,QAAQ;AAAA,MACb,SAAS,QAAQ;AAAA,MACjB,iBAAiB,QAAQ,MAAM,IAAI;AAAA,MACnC,SAAS;AAAA,MACT,YAAY,QAAQ;AAAA,MACpB,SAAS,QAAQ;AAAA,IACrB,CAAC;AAAA,EACL,SAAS,GAAG;AACR,YAAQ,MAAM,CAAC;AACf,YAAQ,WAAW;AAAA,EACvB;AACJ,CAAC;AAEL,IAAI,QAAQ,OAAO;AACnB,IAAI,KAAK;AACT,IAAI,MAAM;","names":[]}
@@ -1,13 +1,26 @@
1
- import { ContentDriver, ContentItems } from "./types.js";
1
+ import { ContentDriver as ContentDriverContract, ContentItems } from "./types.js";
2
2
  import { AbstractPluginFinder } from "../../entrypoint/index.js";
3
3
  import { ContentScriptEntrypointOptions } from "../../../types/content.js";
4
- import { EntrypointNameGenerator } from "../../../types/entrypoint.js";
5
- export default class<O extends ContentScriptEntrypointOptions> implements ContentDriver<O> {
6
- protected readonly finder: AbstractPluginFinder<O>;
7
- protected _items?: ContentItems<O>;
4
+ import { EntrypointFile, EntrypointNameGenerator, EntrypointOptions } from "../../../types/entrypoint.js";
5
+ import { ManifestOptionalPermissions, ManifestPermissions } from "../../../types/manifest.js";
6
+ /**
7
+ * OutputOptions stays first so existing ContentDriver<O> consumers keep their original meaning.
8
+ * Drivers with a different input shape must override transform().
9
+ */
10
+ export default class<OutputOptions extends ContentScriptEntrypointOptions = ContentScriptEntrypointOptions, InputOptions extends EntrypointOptions = OutputOptions> implements ContentDriverContract<OutputOptions> {
11
+ protected readonly finder: AbstractPluginFinder<InputOptions>;
12
+ protected _options?: Map<EntrypointFile, InputOptions>;
13
+ protected _items?: ContentItems<OutputOptions>;
14
+ protected _permissions?: Promise<[ManifestPermissions, ManifestOptionalPermissions]>;
8
15
  protected readonly itemNames: EntrypointNameGenerator;
9
- constructor(finder: AbstractPluginFinder<O>);
10
- protected getItems(): Promise<ContentItems<O>>;
11
- items(): Promise<ContentItems<O>>;
16
+ constructor(finder: AbstractPluginFinder<InputOptions>);
17
+ protected transform(options: InputOptions): OutputOptions;
18
+ protected getOptions(): Promise<Map<EntrypointFile, InputOptions>>;
19
+ protected getItems(): Promise<ContentItems<OutputOptions>>;
20
+ items(): Promise<ContentItems<OutputOptions>>;
21
+ protected calculatePermissions(): Promise<[ManifestPermissions, ManifestOptionalPermissions]>;
22
+ protected getPermissions(): Promise<[ManifestPermissions, ManifestOptionalPermissions]>;
23
+ permissions(): Promise<ManifestPermissions>;
24
+ optionalPermissions(): Promise<ManifestOptionalPermissions>;
12
25
  clear(): this;
13
26
  }
@@ -5,21 +5,43 @@ class ContentDriver_default {
5
5
  this.itemNames = new InlineNameGenerator(this.finder.type());
6
6
  }
7
7
  finder;
8
+ _options;
8
9
  _items;
10
+ _permissions;
9
11
  itemNames;
12
+ transform(options) {
13
+ return options;
14
+ }
15
+ async getOptions() {
16
+ return this._options ?? (this._options = await this.finder.plugin().options());
17
+ }
10
18
  async getItems() {
11
19
  const items = /* @__PURE__ */ new Map();
12
- const files = await this.finder.plugin().options();
20
+ const files = await this.getOptions();
13
21
  for (const [file, options] of files) {
14
- items.set(this.itemNames.file(file), { file, options });
22
+ items.set(this.itemNames.file(file), { file, options: this.transform(options) });
15
23
  }
16
24
  return items;
17
25
  }
18
26
  async items() {
19
27
  return this._items ?? (this._items = await this.getItems());
20
28
  }
29
+ async calculatePermissions() {
30
+ return [/* @__PURE__ */ new Set(), /* @__PURE__ */ new Set()];
31
+ }
32
+ getPermissions() {
33
+ return this._permissions ?? (this._permissions = this.calculatePermissions());
34
+ }
35
+ async permissions() {
36
+ return (await this.getPermissions())[0];
37
+ }
38
+ async optionalPermissions() {
39
+ return (await this.getPermissions())[1];
40
+ }
21
41
  clear() {
42
+ this._options = void 0;
22
43
  this._items = void 0;
44
+ this._permissions = void 0;
23
45
  this.itemNames.reset();
24
46
  return this;
25
47
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/plugins/content/ContentDriver.ts"],"sourcesContent":["import {ContentDriver, ContentItems} from \"./types\";\n\nimport {AbstractPluginFinder, InlineNameGenerator} from \"@cli/entrypoint/index.js\";\n\nimport {ContentScriptEntrypointOptions} from \"@typing/content\";\nimport {EntrypointNameGenerator} from \"@typing/entrypoint\";\n\nexport default class<O extends ContentScriptEntrypointOptions> implements ContentDriver<O> {\n protected _items?: ContentItems<O>;\n\n protected readonly itemNames: EntrypointNameGenerator;\n\n constructor(protected readonly finder: AbstractPluginFinder<O>) {\n this.itemNames = new InlineNameGenerator(this.finder.type());\n }\n\n protected async getItems(): Promise<ContentItems<O>> {\n const items: ContentItems<O> = new Map();\n\n const files = await this.finder.plugin().options();\n\n for (const [file, options] of files) {\n items.set(this.itemNames.file(file), {file, options});\n }\n\n return items;\n }\n\n public async items(): Promise<ContentItems<O>> {\n return (this._items ??= await this.getItems());\n }\n\n public clear(): this {\n this._items = undefined;\n\n this.itemNames.reset();\n\n return this;\n }\n}\n"],"mappings":"AAEA,SAA8B,2BAA0B;AAKxD,MAAO,sBAAoF;AAAA,EAKvF,YAA+B,QAAiC;AAAjC;AAC3B,SAAK,YAAY,IAAI,oBAAoB,KAAK,OAAO,KAAK,CAAC;AAAA,EAC/D;AAAA,EAF+B;AAAA,EAJrB;AAAA,EAES;AAAA,EAMnB,MAAgB,WAAqC;AACjD,UAAM,QAAyB,oBAAI,IAAI;AAEvC,UAAM,QAAQ,MAAM,KAAK,OAAO,OAAO,EAAE,QAAQ;AAEjD,eAAW,CAAC,MAAM,OAAO,KAAK,OAAO;AACjC,YAAM,IAAI,KAAK,UAAU,KAAK,IAAI,GAAG,EAAC,MAAM,QAAO,CAAC;AAAA,IACxD;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,MAAa,QAAkC;AAC3C,WAAQ,KAAK,WAAL,KAAK,SAAW,MAAM,KAAK,SAAS;AAAA,EAChD;AAAA,EAEO,QAAc;AACjB,SAAK,SAAS;AAEd,SAAK,UAAU,MAAM;AAErB,WAAO;AAAA,EACX;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/cli/plugins/content/ContentDriver.ts"],"sourcesContent":["import {ContentDriver as ContentDriverContract, ContentItems} from \"./types\";\n\nimport {AbstractPluginFinder, InlineNameGenerator} from \"@cli/entrypoint/index.js\";\n\nimport {ContentScriptEntrypointOptions} from \"@typing/content\";\nimport {EntrypointFile, EntrypointNameGenerator, EntrypointOptions} from \"@typing/entrypoint\";\nimport {ManifestOptionalPermissions, ManifestPermissions} from \"@typing/manifest\";\n\n/**\n * OutputOptions stays first so existing ContentDriver<O> consumers keep their original meaning.\n * Drivers with a different input shape must override transform().\n */\nexport default class<\n OutputOptions extends ContentScriptEntrypointOptions = ContentScriptEntrypointOptions,\n InputOptions extends EntrypointOptions = OutputOptions,\n> implements ContentDriverContract<OutputOptions> {\n protected _options?: Map<EntrypointFile, InputOptions>;\n\n protected _items?: ContentItems<OutputOptions>;\n\n protected _permissions?: Promise<[ManifestPermissions, ManifestOptionalPermissions]>;\n\n protected readonly itemNames: EntrypointNameGenerator;\n\n constructor(protected readonly finder: AbstractPluginFinder<InputOptions>) {\n this.itemNames = new InlineNameGenerator(this.finder.type());\n }\n\n protected transform(options: InputOptions): OutputOptions {\n return options as unknown as OutputOptions;\n }\n\n protected async getOptions(): Promise<Map<EntrypointFile, InputOptions>> {\n return (this._options ??= await this.finder.plugin().options());\n }\n\n protected async getItems(): Promise<ContentItems<OutputOptions>> {\n const items: ContentItems<OutputOptions> = new Map();\n\n const files = await this.getOptions();\n\n for (const [file, options] of files) {\n items.set(this.itemNames.file(file), {file, options: this.transform(options)});\n }\n\n return items;\n }\n\n public async items(): Promise<ContentItems<OutputOptions>> {\n return (this._items ??= await this.getItems());\n }\n\n protected async calculatePermissions(): Promise<[ManifestPermissions, ManifestOptionalPermissions]> {\n return [new Set(), new Set()];\n }\n\n protected getPermissions(): Promise<[ManifestPermissions, ManifestOptionalPermissions]> {\n return (this._permissions ??= this.calculatePermissions());\n }\n\n public async permissions(): Promise<ManifestPermissions> {\n return (await this.getPermissions())[0];\n }\n\n public async optionalPermissions(): Promise<ManifestOptionalPermissions> {\n return (await this.getPermissions())[1];\n }\n\n public clear(): this {\n this._options = undefined;\n this._items = undefined;\n this._permissions = undefined;\n\n this.itemNames.reset();\n\n return this;\n }\n}\n"],"mappings":"AAEA,SAA8B,2BAA0B;AAUxD,MAAO,sBAG2C;AAAA,EAS9C,YAA+B,QAA4C;AAA5C;AAC3B,SAAK,YAAY,IAAI,oBAAoB,KAAK,OAAO,KAAK,CAAC;AAAA,EAC/D;AAAA,EAF+B;AAAA,EARrB;AAAA,EAEA;AAAA,EAEA;AAAA,EAES;AAAA,EAMT,UAAU,SAAsC;AACtD,WAAO;AAAA,EACX;AAAA,EAEA,MAAgB,aAAyD;AACrE,WAAQ,KAAK,aAAL,KAAK,WAAa,MAAM,KAAK,OAAO,OAAO,EAAE,QAAQ;AAAA,EACjE;AAAA,EAEA,MAAgB,WAAiD;AAC7D,UAAM,QAAqC,oBAAI,IAAI;AAEnD,UAAM,QAAQ,MAAM,KAAK,WAAW;AAEpC,eAAW,CAAC,MAAM,OAAO,KAAK,OAAO;AACjC,YAAM,IAAI,KAAK,UAAU,KAAK,IAAI,GAAG,EAAC,MAAM,SAAS,KAAK,UAAU,OAAO,EAAC,CAAC;AAAA,IACjF;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,MAAa,QAA8C;AACvD,WAAQ,KAAK,WAAL,KAAK,SAAW,MAAM,KAAK,SAAS;AAAA,EAChD;AAAA,EAEA,MAAgB,uBAAoF;AAChG,WAAO,CAAC,oBAAI,IAAI,GAAG,oBAAI,IAAI,CAAC;AAAA,EAChC;AAAA,EAEU,iBAA8E;AACpF,WAAQ,KAAK,iBAAL,KAAK,eAAiB,KAAK,qBAAqB;AAAA,EAC5D;AAAA,EAEA,MAAa,cAA4C;AACrD,YAAQ,MAAM,KAAK,eAAe,GAAG,CAAC;AAAA,EAC1C;AAAA,EAEA,MAAa,sBAA4D;AACrE,YAAQ,MAAM,KAAK,eAAe,GAAG,CAAC;AAAA,EAC1C;AAAA,EAEO,QAAc;AACjB,SAAK,WAAW;AAChB,SAAK,SAAS;AACd,SAAK,eAAe;AAEpB,SAAK,UAAU,MAAM;AAErB,WAAO;AAAA,EACX;AACJ;","names":[]}
@@ -3,12 +3,13 @@ import { ContentGroupItems, ContentProvider } from "./types.js";
3
3
  import { ReadonlyConfig } from "../../../types/config.js";
4
4
  import { ContentScriptEntrypointOptions } from "../../../types/content.js";
5
5
  import { EntrypointEntries, EntrypointFile } from "../../../types/entrypoint.js";
6
- import { ManifestContentScripts, ManifestHostPermissions } from "../../../types/manifest.js";
6
+ import { ManifestContentScripts, ManifestHostPermissions, ManifestOptionalPermissions, ManifestPermissions } from "../../../types/manifest.js";
7
7
  export default class {
8
8
  protected readonly providers: Set<ContentProvider<Partial<import("../../../types/content.js").ContentScriptOptions>>>;
9
9
  protected readonly names: ContentName;
10
10
  protected _group?: ContentGroupItems<ContentScriptEntrypointOptions>;
11
- protected _permissions?: [ManifestHostPermissions, ManifestHostPermissions];
11
+ protected _hostPermissions?: [ManifestHostPermissions, ManifestHostPermissions];
12
+ protected _permissions?: Promise<[ManifestPermissions, ManifestOptionalPermissions]>;
12
13
  constructor(config: ReadonlyConfig);
13
14
  provider(provider: ContentProvider<ContentScriptEntrypointOptions>): this;
14
15
  protected getGroup(): Promise<ContentGroupItems<ContentScriptEntrypointOptions>>;
@@ -17,7 +18,11 @@ export default class {
17
18
  manifest(): Promise<ManifestContentScripts>;
18
19
  hostPermissions(): Promise<ManifestHostPermissions>;
19
20
  optionalHostPermissions(): Promise<ManifestHostPermissions>;
20
- protected calculatePermissions(): Promise<[ManifestHostPermissions, ManifestHostPermissions]>;
21
+ protected calculateHostPermissions(): Promise<[ManifestHostPermissions, ManifestHostPermissions]>;
22
+ permissions(): Promise<ManifestPermissions>;
23
+ optionalPermissions(): Promise<ManifestOptionalPermissions>;
24
+ protected getPermissions(): Promise<[ManifestPermissions, ManifestOptionalPermissions]>;
25
+ protected calculatePermissions(): Promise<[ManifestPermissions, ManifestOptionalPermissions]>;
21
26
  virtual(file: EntrypointFile): string;
22
27
  empty(): Promise<boolean>;
23
28
  chunkName(): string;
@@ -6,6 +6,7 @@ class ContentManager_default {
6
6
  providers = /* @__PURE__ */ new Set();
7
7
  names;
8
8
  _group;
9
+ _hostPermissions;
9
10
  _permissions;
10
11
  constructor(config) {
11
12
  this.names = new ContentName(config);
@@ -46,14 +47,14 @@ class ContentManager_default {
46
47
  return manifest;
47
48
  }
48
49
  async hostPermissions() {
49
- return (await this.calculatePermissions())[0];
50
+ return (await this.calculateHostPermissions())[0];
50
51
  }
51
52
  async optionalHostPermissions() {
52
- return (await this.calculatePermissions())[1];
53
+ return (await this.calculateHostPermissions())[1];
53
54
  }
54
- async calculatePermissions() {
55
- if (this._permissions) {
56
- return this._permissions;
55
+ async calculateHostPermissions() {
56
+ if (this._hostPermissions) {
57
+ return this._hostPermissions;
57
58
  }
58
59
  const hostPermissions = /* @__PURE__ */ new Set();
59
60
  const optionalHostPermissions = /* @__PURE__ */ new Set();
@@ -77,7 +78,40 @@ class ContentManager_default {
77
78
  }
78
79
  }
79
80
  }
80
- return this._permissions = [hostPermissions, optionalHostPermissions];
81
+ return this._hostPermissions = [hostPermissions, optionalHostPermissions];
82
+ }
83
+ async permissions() {
84
+ return (await this.getPermissions())[0];
85
+ }
86
+ async optionalPermissions() {
87
+ return (await this.getPermissions())[1];
88
+ }
89
+ getPermissions() {
90
+ return this._permissions ?? (this._permissions = this.calculatePermissions());
91
+ }
92
+ async calculatePermissions() {
93
+ const permissions = /* @__PURE__ */ new Set();
94
+ const optionalPermissions = /* @__PURE__ */ new Set();
95
+ const contributions = await Promise.all(
96
+ Array.from(this.providers, async (provider) => {
97
+ const driver = provider.driver();
98
+ return Promise.all([driver.permissions(), driver.optionalPermissions()]);
99
+ })
100
+ );
101
+ for (const [required, optional] of contributions) {
102
+ for (const permission of required) {
103
+ permissions.add(permission);
104
+ }
105
+ for (const permission of optional) {
106
+ optionalPermissions.add(permission);
107
+ }
108
+ }
109
+ for (const permission of optionalPermissions) {
110
+ if (permissions.has(permission)) {
111
+ optionalPermissions.delete(permission);
112
+ }
113
+ }
114
+ return [permissions, optionalPermissions];
81
115
  }
82
116
  virtual(file) {
83
117
  for (const provider of this.providers) {
@@ -108,6 +142,7 @@ class ContentManager_default {
108
142
  }
109
143
  this.names.reset();
110
144
  this._group = void 0;
145
+ this._hostPermissions = void 0;
111
146
  this._permissions = void 0;
112
147
  return this;
113
148
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/plugins/content/ContentManager.ts"],"sourcesContent":["import ContentName from \"./ContentName\";\n\nimport {ContentGroupItems, ContentProvider} from \"./types\";\nimport {getContentScriptConfigFromOptions} from \"./utils\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {ContentScriptDeclarative, ContentScriptEntrypointOptions} from \"@typing/content\";\nimport {EntrypointEntries, EntrypointFile, EntrypointType} from \"@typing/entrypoint\";\nimport {ManifestContentScripts, ManifestHostPermissions} from \"@typing/manifest\";\n\nexport default class {\n protected readonly providers = new Set<ContentProvider<ContentScriptEntrypointOptions>>();\n\n protected readonly names: ContentName;\n\n protected _group?: ContentGroupItems<ContentScriptEntrypointOptions>;\n\n protected _permissions?: [ManifestHostPermissions, ManifestHostPermissions];\n\n constructor(config: ReadonlyConfig) {\n this.names = new ContentName(config);\n }\n\n public provider(provider: ContentProvider<ContentScriptEntrypointOptions>): this {\n this.providers.add(provider);\n\n return this;\n }\n\n protected async getGroup(): Promise<ContentGroupItems<ContentScriptEntrypointOptions>> {\n const content = await Promise.all(Array.from(this.providers, provider => provider.driver().items()));\n\n const group: ContentGroupItems<ContentScriptEntrypointOptions> = new Map();\n\n for (const items of content) {\n for (const [name, item] of items) {\n const entry = this.names.create(name, item.options);\n\n group.set(entry, new Set([...(group.get(entry) || []), item]));\n }\n }\n\n return group;\n }\n\n public async group(): Promise<ContentGroupItems<ContentScriptEntrypointOptions>> {\n return (this._group ??= await this.getGroup());\n }\n\n public async entries(): Promise<EntrypointEntries> {\n const entries: EntrypointEntries = new Map();\n\n for (const [entry, items] of await this.group()) {\n entries.set(entry, new Set(Array.from(items, ({file}) => file)));\n }\n\n return entries;\n }\n\n public async manifest(): Promise<ManifestContentScripts> {\n const manifest: ManifestContentScripts = new Set();\n\n for (const [entry, items] of await this.group()) {\n const options = Array.from(items, ({options}) => options).reduce((acc, opt) => {\n return {...acc, ...opt};\n }, {} as ContentScriptEntrypointOptions);\n\n manifest.add({entry, ...getContentScriptConfigFromOptions(options)});\n }\n\n return manifest;\n }\n\n public async hostPermissions(): Promise<ManifestHostPermissions> {\n return (await this.calculatePermissions())[0];\n }\n\n public async optionalHostPermissions(): Promise<ManifestHostPermissions> {\n return (await this.calculatePermissions())[1];\n }\n\n protected async calculatePermissions(): Promise<[ManifestHostPermissions, ManifestHostPermissions]> {\n if (this._permissions) {\n return this._permissions;\n }\n\n const hostPermissions = new Set<string>();\n const optionalHostPermissions = new Set<string>();\n\n const group = await this.group();\n\n for (const items of group.values()) {\n for (const {options} of items) {\n const {matches, declarative} = options;\n\n if (!declarative || !matches) {\n continue;\n }\n\n for (const match of matches) {\n switch (declarative) {\n case ContentScriptDeclarative.Optional:\n optionalHostPermissions.add(match);\n\n break;\n case ContentScriptDeclarative.Required:\n case true:\n hostPermissions.add(match);\n\n break;\n }\n }\n }\n }\n\n return (this._permissions = [hostPermissions, optionalHostPermissions]);\n }\n\n public virtual(file: EntrypointFile): string {\n for (const provider of this.providers) {\n try {\n return provider.virtual(file);\n } catch {}\n }\n\n throw new Error(`Virtual file \"${file.file}\" not found.`);\n }\n\n public async empty(): Promise<boolean> {\n return (await this.group()).size === 0;\n }\n\n public chunkName(): string {\n return this.names.getChunkName();\n }\n\n public likely(name?: string): boolean {\n if (!name) {\n return false;\n }\n\n return [EntrypointType.Relay, EntrypointType.ContentScript].some(\n type => name === type || name.endsWith(`.${type}`)\n );\n }\n\n public clear(): this {\n for (const provider of this.providers) {\n provider.clear();\n }\n\n this.names.reset();\n\n this._group = undefined;\n this._permissions = undefined;\n\n return this;\n }\n}\n"],"mappings":"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","names":["options"]}
1
+ {"version":3,"sources":["../../../../src/cli/plugins/content/ContentManager.ts"],"sourcesContent":["import ContentName from \"./ContentName\";\n\nimport {ContentGroupItems, ContentProvider} from \"./types\";\nimport {getContentScriptConfigFromOptions} from \"./utils\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {ContentScriptDeclarative, ContentScriptEntrypointOptions} from \"@typing/content\";\nimport {EntrypointEntries, EntrypointFile, EntrypointType} from \"@typing/entrypoint\";\nimport {\n ManifestContentScripts,\n ManifestHostPermissions,\n ManifestOptionalPermissions,\n ManifestPermissions,\n} from \"@typing/manifest\";\n\nexport default class {\n protected readonly providers = new Set<ContentProvider<ContentScriptEntrypointOptions>>();\n\n protected readonly names: ContentName;\n\n protected _group?: ContentGroupItems<ContentScriptEntrypointOptions>;\n\n protected _hostPermissions?: [ManifestHostPermissions, ManifestHostPermissions];\n\n protected _permissions?: Promise<[ManifestPermissions, ManifestOptionalPermissions]>;\n\n constructor(config: ReadonlyConfig) {\n this.names = new ContentName(config);\n }\n\n public provider(provider: ContentProvider<ContentScriptEntrypointOptions>): this {\n this.providers.add(provider);\n\n return this;\n }\n\n protected async getGroup(): Promise<ContentGroupItems<ContentScriptEntrypointOptions>> {\n const content = await Promise.all(Array.from(this.providers, provider => provider.driver().items()));\n\n const group: ContentGroupItems<ContentScriptEntrypointOptions> = new Map();\n\n for (const items of content) {\n for (const [name, item] of items) {\n const entry = this.names.create(name, item.options);\n\n group.set(entry, new Set([...(group.get(entry) || []), item]));\n }\n }\n\n return group;\n }\n\n public async group(): Promise<ContentGroupItems<ContentScriptEntrypointOptions>> {\n return (this._group ??= await this.getGroup());\n }\n\n public async entries(): Promise<EntrypointEntries> {\n const entries: EntrypointEntries = new Map();\n\n for (const [entry, items] of await this.group()) {\n entries.set(entry, new Set(Array.from(items, ({file}) => file)));\n }\n\n return entries;\n }\n\n public async manifest(): Promise<ManifestContentScripts> {\n const manifest: ManifestContentScripts = new Set();\n\n for (const [entry, items] of await this.group()) {\n const options = Array.from(items, ({options}) => options).reduce((acc, opt) => {\n return {...acc, ...opt};\n }, {} as ContentScriptEntrypointOptions);\n\n manifest.add({entry, ...getContentScriptConfigFromOptions(options)});\n }\n\n return manifest;\n }\n\n public async hostPermissions(): Promise<ManifestHostPermissions> {\n return (await this.calculateHostPermissions())[0];\n }\n\n public async optionalHostPermissions(): Promise<ManifestHostPermissions> {\n return (await this.calculateHostPermissions())[1];\n }\n\n protected async calculateHostPermissions(): Promise<[ManifestHostPermissions, ManifestHostPermissions]> {\n if (this._hostPermissions) {\n return this._hostPermissions;\n }\n\n const hostPermissions = new Set<string>();\n const optionalHostPermissions = new Set<string>();\n\n const group = await this.group();\n\n for (const items of group.values()) {\n for (const {options} of items) {\n const {matches, declarative} = options;\n\n if (!declarative || !matches) {\n continue;\n }\n\n for (const match of matches) {\n switch (declarative) {\n case ContentScriptDeclarative.Optional:\n optionalHostPermissions.add(match);\n\n break;\n case ContentScriptDeclarative.Required:\n case true:\n hostPermissions.add(match);\n\n break;\n }\n }\n }\n }\n\n return (this._hostPermissions = [hostPermissions, optionalHostPermissions]);\n }\n\n public async permissions(): Promise<ManifestPermissions> {\n return (await this.getPermissions())[0];\n }\n\n public async optionalPermissions(): Promise<ManifestOptionalPermissions> {\n return (await this.getPermissions())[1];\n }\n\n protected getPermissions(): Promise<[ManifestPermissions, ManifestOptionalPermissions]> {\n return (this._permissions ??= this.calculatePermissions());\n }\n\n protected async calculatePermissions(): Promise<[ManifestPermissions, ManifestOptionalPermissions]> {\n const permissions: ManifestPermissions = new Set();\n const optionalPermissions: ManifestOptionalPermissions = new Set();\n\n const contributions = await Promise.all(\n Array.from(this.providers, async provider => {\n const driver = provider.driver();\n\n return Promise.all([driver.permissions(), driver.optionalPermissions()]);\n })\n );\n\n for (const [required, optional] of contributions) {\n for (const permission of required) {\n permissions.add(permission);\n }\n\n for (const permission of optional) {\n optionalPermissions.add(permission);\n }\n }\n\n for (const permission of optionalPermissions) {\n if (permissions.has(permission)) {\n optionalPermissions.delete(permission);\n }\n }\n\n return [permissions, optionalPermissions];\n }\n\n public virtual(file: EntrypointFile): string {\n for (const provider of this.providers) {\n try {\n return provider.virtual(file);\n } catch {}\n }\n\n throw new Error(`Virtual file \"${file.file}\" not found.`);\n }\n\n public async empty(): Promise<boolean> {\n return (await this.group()).size === 0;\n }\n\n public chunkName(): string {\n return this.names.getChunkName();\n }\n\n public likely(name?: string): boolean {\n if (!name) {\n return false;\n }\n\n return [EntrypointType.Relay, EntrypointType.ContentScript].some(\n type => name === type || name.endsWith(`.${type}`)\n );\n }\n\n public clear(): this {\n for (const provider of this.providers) {\n provider.clear();\n }\n\n this.names.reset();\n\n this._group = undefined;\n this._hostPermissions = undefined;\n this._permissions = undefined;\n\n return this;\n }\n}\n"],"mappings":"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","names":["options"]}
@@ -1,19 +1,17 @@
1
- import ContentDriver from "./ContentDriver.js";
1
+ import RelayDriver from "./RelayDriver.js";
2
2
  import { ContentProvider } from "./types.js";
3
3
  import { RelayFinder } from "../../entrypoint/index.js";
4
- import { RelayEntrypointOptions, RelayMethod, RelayOptions } from "../../../types/relay.js";
5
- import { ContentScriptDeclarative } from "../../../types/content.js";
4
+ import { RelayOptions } from "../../../types/relay.js";
5
+ import { ContentScriptEntrypointOptions } from "../../../types/content.js";
6
6
  import { EntrypointFile } from "../../../types/entrypoint.js";
7
- export default class extends RelayFinder implements ContentProvider<RelayEntrypointOptions> {
8
- protected _driver?: ContentDriver<RelayEntrypointOptions>;
9
- driver(): ContentDriver<RelayEntrypointOptions>;
7
+ export default class extends RelayFinder implements ContentProvider<ContentScriptEntrypointOptions> {
8
+ protected _driver?: RelayDriver;
9
+ driver(): RelayDriver;
10
10
  /**
11
11
  * Before creating the virtual module, it is necessary to run a command `await this.transport()` that caches the Relays.
12
12
  * This command is executed during the type declaration generation stage for the Relays.
13
13
  */
14
14
  virtual(file: EntrypointFile): string;
15
15
  getOptionsMap(): Promise<Record<string, RelayOptions>>;
16
- hasMethod(method: RelayMethod): Promise<boolean>;
17
- hasDeclarative(declarative: ContentScriptDeclarative): Promise<boolean>;
18
16
  clear(): this;
19
17
  }
@@ -1,12 +1,11 @@
1
- import ContentDriver from "./ContentDriver.js";
1
+ import RelayDriver from "./RelayDriver.js";
2
2
  import { RelayFinder } from "./../../../cli/entrypoint/index.js";
3
3
  import { virtualRelayModule } from "./../../../cli/virtual/index.js";
4
4
  import { RelayMethod } from "./../../../types/relay.js";
5
- import { ContentScriptDeclarative } from "./../../../types/content.js";
6
5
  class Relay_default extends RelayFinder {
7
6
  _driver;
8
7
  driver() {
9
- return this._driver ?? (this._driver = new ContentDriver(this));
8
+ return this._driver ?? (this._driver = new RelayDriver(this));
10
9
  }
11
10
  /**
12
11
  * Before creating the virtual module, it is necessary to run a command `await this.transport()` that caches the Relays.
@@ -33,17 +32,6 @@ class Relay_default extends RelayFinder {
33
32
  {}
34
33
  );
35
34
  }
36
- async hasMethod(method) {
37
- return Object.values(await this.getOptionsMap()).map(({ method: method2 }) => method2).includes(method);
38
- }
39
- async hasDeclarative(declarative) {
40
- return !!Object.values(await this.getOptionsMap()).filter((options) => {
41
- if (declarative === ContentScriptDeclarative.Required && options.declarative === true) {
42
- return true;
43
- }
44
- return declarative === options.declarative;
45
- }).length;
46
- }
47
35
  clear() {
48
36
  var _a;
49
37
  (_a = this._driver) == null ? void 0 : _a.clear();
@@ -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
+ }