adnbn 0.2.2 → 0.2.3

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 (113) hide show
  1. package/dist/{AbstractBuilder-CKgY_Bta.d.ts → AbstractBuilder-BN4TmNJG.d.ts} +3 -3
  2. package/dist/{AbstractBuilder-Ce5zNRXr.d.mts → AbstractBuilder-C81kWZzQ.d.mts} +3 -3
  3. package/dist/{BaseTransport-C7uEgfUu.d.mts → BaseTransport-DNZ28gFF.d.mts} +1 -1
  4. package/dist/{BaseTransport-BdFTZfP0.d.ts → BaseTransport-Ecy2Kzti.d.ts} +1 -1
  5. package/dist/{Builder-FwJAxWos.d.ts → Builder-BOLvGGqp.d.ts} +2 -2
  6. package/dist/{Builder-rW3fzusy.d.mts → Builder-BP8SDHO1.d.mts} +2 -2
  7. package/dist/{Builder-7pbnGvHK.d.ts → Builder-Bc8US0PY.d.ts} +1 -1
  8. package/dist/{Builder-CCyBD4hF.d.mts → Builder-Df1LUO_f.d.mts} +1 -1
  9. package/dist/{Message-1cYgMdsu.d.mts → Message-Bnritk3D.d.mts} +1 -1
  10. package/dist/{Message-DAhczRx9.d.ts → Message-DFDaS7mV.d.ts} +1 -1
  11. package/dist/{MountBuilder-DjnAmTI0.d.ts → MountBuilder-BTltgVF2.d.mts} +26 -7
  12. package/dist/{MountBuilder-CjvMOcmn.d.mts → MountBuilder-C9Q-7PeI.d.ts} +26 -7
  13. package/dist/{ProxyRelay-Ce-szh9p.d.ts → ProxyRelay-DDOSZE3h.d.ts} +3 -3
  14. package/dist/{ProxyRelay-BOBEhRET.d.mts → ProxyRelay-Uel0ATcx.d.mts} +3 -3
  15. package/dist/{ProxyTransport-BTVUbDxE.d.mts → ProxyTransport-35rU8xqa.d.mts} +3 -3
  16. package/dist/{ProxyTransport-BW63K6SU.d.ts → ProxyTransport-D4jv5SFh.d.ts} +3 -3
  17. package/dist/{RegisterOffscreen-BukckdvS.d.mts → RegisterOffscreen-DT0gN5xN.d.mts} +2 -2
  18. package/dist/{RegisterOffscreen-DmlpLqjW.d.ts → RegisterOffscreen-df3W5HqA.d.ts} +2 -2
  19. package/dist/{RegisterRelay-MEVSR1sP.d.mts → RegisterRelay-DCVZ2_NI.d.mts} +2 -2
  20. package/dist/{RegisterRelay-BaIET78I.d.ts → RegisterRelay-PFT2ac4v.d.ts} +2 -2
  21. package/dist/{TransportMessage-Bk0wg4rF.d.mts → TransportMessage-CIKrv3DG.d.mts} +8 -4
  22. package/dist/{TransportMessage-BqMzXWZR.d.ts → TransportMessage-CsObvTPq.d.ts} +8 -4
  23. package/dist/{background-Zjiqg60g.d.ts → background-CpVjDFHQ.d.ts} +1 -1
  24. package/dist/{background-CyGGjmBx.d.mts → background-cxLBji1Q.d.mts} +1 -1
  25. package/dist/cli/index.cjs +45 -14
  26. package/dist/cli/index.cjs.map +1 -1
  27. package/dist/{command-BFsdm7Bx.d.mts → command-S2dcqx6Q.d.mts} +4 -3
  28. package/dist/{command-3i_5d__K.d.ts → command-TJ2JUrVd.d.ts} +4 -3
  29. package/dist/{content-sdYF4W-A.d.ts → content-B0znLIjr.d.ts} +37 -4
  30. package/dist/{content-BYoXVO6V.d.mts → content-DrrPH4ri.d.mts} +37 -4
  31. package/dist/entry/background/index.d.mts +2 -2
  32. package/dist/entry/background/index.d.ts +2 -2
  33. package/dist/entry/command/index.d.mts +3 -3
  34. package/dist/entry/command/index.d.ts +3 -3
  35. package/dist/entry/content/index.d.mts +2 -2
  36. package/dist/entry/content/index.d.ts +2 -2
  37. package/dist/entry/content/react/index.cjs +104 -18
  38. package/dist/entry/content/react/index.cjs.map +1 -1
  39. package/dist/entry/content/react/index.d.mts +4 -4
  40. package/dist/entry/content/react/index.d.ts +4 -4
  41. package/dist/entry/content/react/index.js +104 -18
  42. package/dist/entry/content/react/index.js.map +1 -1
  43. package/dist/entry/content/vanilla/index.cjs +108 -18
  44. package/dist/entry/content/vanilla/index.cjs.map +1 -1
  45. package/dist/entry/content/vanilla/index.d.mts +4 -4
  46. package/dist/entry/content/vanilla/index.d.ts +4 -4
  47. package/dist/entry/content/vanilla/index.js +108 -18
  48. package/dist/entry/content/vanilla/index.js.map +1 -1
  49. package/dist/entry/offscreen/index.cjs +27 -4
  50. package/dist/entry/offscreen/index.cjs.map +1 -1
  51. package/dist/entry/offscreen/index.d.mts +11 -9
  52. package/dist/entry/offscreen/index.d.ts +11 -9
  53. package/dist/entry/offscreen/index.js +27 -4
  54. package/dist/entry/offscreen/index.js.map +1 -1
  55. package/dist/entry/relay/index.d.mts +9 -8
  56. package/dist/entry/relay/index.d.ts +9 -8
  57. package/dist/entry/service/index.cjs +31 -10
  58. package/dist/entry/service/index.cjs.map +1 -1
  59. package/dist/entry/service/index.d.mts +5 -4
  60. package/dist/entry/service/index.d.ts +5 -4
  61. package/dist/entry/service/index.js +31 -10
  62. package/dist/entry/service/index.js.map +1 -1
  63. package/dist/entry/transport/index.d.mts +8 -7
  64. package/dist/entry/transport/index.d.ts +8 -7
  65. package/dist/entry/view/index.d.mts +2 -2
  66. package/dist/entry/view/index.d.ts +2 -2
  67. package/dist/entry/view/react/index.d.mts +4 -4
  68. package/dist/entry/view/react/index.d.ts +4 -4
  69. package/dist/entry/view/vanilla/index.d.mts +4 -4
  70. package/dist/entry/view/vanilla/index.d.ts +4 -4
  71. package/dist/{helpers-DnV3N7fU.d.mts → helpers-YDFORuZz.d.mts} +2 -2
  72. package/dist/{helpers-DnV3N7fU.d.ts → helpers-YDFORuZz.d.ts} +2 -2
  73. package/dist/index.cjs +11 -1
  74. package/dist/index.cjs.map +1 -1
  75. package/dist/index.d.mts +63 -22
  76. package/dist/index.d.ts +63 -22
  77. package/dist/index.js +11 -2
  78. package/dist/index.js.map +1 -1
  79. package/dist/message/index.cjs.map +1 -1
  80. package/dist/message/index.d.mts +4 -3
  81. package/dist/message/index.d.ts +4 -3
  82. package/dist/message/index.js.map +1 -1
  83. package/dist/message/react/index.cjs.map +1 -1
  84. package/dist/message/react/index.d.mts +1 -1
  85. package/dist/message/react/index.d.ts +1 -1
  86. package/dist/message/react/index.js.map +1 -1
  87. package/dist/{message-55r-wFjc.d.mts → message-jsmkeGHC.d.mts} +5 -1
  88. package/dist/{message-55r-wFjc.d.ts → message-jsmkeGHC.d.ts} +5 -1
  89. package/dist/offscreen/index.cjs +30 -5
  90. package/dist/offscreen/index.cjs.map +1 -1
  91. package/dist/offscreen/index.d.mts +10 -9
  92. package/dist/offscreen/index.d.ts +10 -9
  93. package/dist/offscreen/index.js +30 -5
  94. package/dist/offscreen/index.js.map +1 -1
  95. package/dist/{offscreen-B9GiglgN.d.mts → offscreen-2EP-rRfx.d.mts} +3 -3
  96. package/dist/{offscreen-BG5Abe8V.d.ts → offscreen-aHdkogKj.d.ts} +3 -3
  97. package/dist/relay/index.d.mts +8 -7
  98. package/dist/relay/index.d.ts +8 -7
  99. package/dist/{relay-DymeeDe7.d.ts → relay-DT46Ltms.d.ts} +3 -3
  100. package/dist/{relay-BYeTCwKO.d.mts → relay-vaJ5R2iC.d.mts} +3 -3
  101. package/dist/service/index.cjs +27 -4
  102. package/dist/service/index.cjs.map +1 -1
  103. package/dist/service/index.d.mts +8 -6
  104. package/dist/service/index.d.ts +8 -6
  105. package/dist/service/index.js +27 -4
  106. package/dist/service/index.js.map +1 -1
  107. package/dist/{service-BhJhIk-O.d.ts → service-6FdoYGNC.d.ts} +3 -3
  108. package/dist/{service-DsivypLQ.d.mts → service-C9HbDQPE.d.mts} +3 -3
  109. package/dist/{transport-B_uYwoGi.d.mts → transport-BrbirhXv.d.mts} +3 -2
  110. package/dist/{transport-BPmSUoEU.d.ts → transport-Co9Oxp0-.d.ts} +3 -2
  111. package/dist/{view-QDP2Maev.d.mts → view-Bs26Jcvi.d.mts} +1 -1
  112. package/dist/{view-D4dquvKl.d.ts → view-u9w7nMgw.d.ts} +1 -1
  113. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/entry/core/Builder.ts","../../../src/entry/transport/resolvers/definition.ts","../../../src/entry/transport/AbstractBuilder.ts","../../../src/types/offscreen.ts","../../../src/offscreen/utils.ts","../../../src/transport/BaseTransport.ts","../../../src/transport/TransportManager.ts","../../../src/offscreen/OffscreenManager.ts","../../../src/types/locale.ts","../../../src/message/providers/AbstractMessage.ts","../../../src/types/message.ts","../../../src/message/MessageManager.ts","../../../src/message/handlers/AbstractHandler.ts","../../../src/message/handlers/SingleHandler.ts","../../../src/message/handlers/MapHandler.ts","../../../src/message/handlers/GeneralHandler.ts","../../../src/message/providers/Message.ts","../../../src/transport/TransportMessage.ts","../../../src/offscreen/OffscreenMessage.ts","../../../src/transport/RegisterTransport.ts","../../../src/offscreen/providers/RegisterOffscreen.ts","../../../src/entry/offscreen/TransportBuilder.ts","../../../src/entry/offscreen/Builder.ts","../../../src/entry/offscreen/index.ts"],"names":["Language","nanoid","onMessage","sendTabMessage","sendMessage","args","get","Builder_default"],"mappings":"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","file":"index.cjs","sourcesContent":["import {EntrypointBuilder, EntrypointConstructorParameter} from \"@typing/entrypoint\";\n\nexport default abstract class implements EntrypointBuilder {\n public abstract build(): Promise<void>;\n\n public abstract destroy(): Promise<void>;\n\n public static resolver<T extends new (definition: any) => EntrypointBuilder>(this: T) {\n return (definition: EntrypointConstructorParameter<T>): void => {\n new this(definition).build().catch(e => {\n console.error(\"Failed to build entrypoint:\", e);\n });\n };\n }\n}\n","import {\n TransportDefinition,\n TransportInitGetter,\n TransportMainHandler,\n TransportOptions,\n TransportType,\n} from \"@typing/transport\";\nimport {RelayDefinition, RelayMainHandler} from \"@typing/relay\";\nimport {OffscreenDefinition, OffscreenMainHandler} from \"@typing/offscreen\";\n\nexport const isValidTransportDefinition = <O extends TransportOptions, T extends TransportType>(\n definition: any\n): definition is TransportDefinition<O, T> & RelayDefinition<T> & OffscreenDefinition<T> => {\n return definition && typeof definition === \"object\" && definition.constructor === Object;\n};\n\nexport const isValidTransportInitFunction = <O extends TransportOptions, T extends TransportType>(\n init: any\n): init is TransportInitGetter<O, T> => {\n return init && typeof init === \"function\";\n};\n\nexport const isValidTransportMainFunction = <O extends TransportOptions, T extends TransportType>(\n main: any\n): main is TransportMainHandler<O, T> & RelayMainHandler<T> & OffscreenMainHandler<T> => {\n return main && typeof main === \"function\";\n};\n\nexport const isValidTransportName = (name: any): name is string => {\n return name && typeof name === \"string\" && name.trim().length > 0;\n};\n","import Builder from \"@entry/core/Builder\";\n\nimport {isValidTransportInitFunction, isValidTransportMainFunction, isValidTransportName} from \"./resolvers\";\n\nimport {\n TransportOptions,\n TransportRegister,\n TransportResolvedDefinition,\n TransportType,\n TransportUnresolvedDefinition,\n} from \"@typing/transport\";\nimport {EntrypointBuilder} from \"@typing/entrypoint\";\n\n// prettier-ignore\nexport default abstract class<\n O extends TransportOptions,\n T extends TransportType = TransportType\n> extends Builder implements EntrypointBuilder {\n protected readonly definition: TransportResolvedDefinition<O, T>;\n\n protected instance?: TransportRegister<T, [O]>;\n\n protected abstract transport(): TransportRegister<T, [O]>;\n\n protected constructor(definition: TransportUnresolvedDefinition<O, T>) {\n super();\n\n const {name, init} = definition;\n\n if (!isValidTransportInitFunction(init)) {\n throw new Error(\"The transport entrypoint must export a init function\");\n }\n\n if (!isValidTransportName(name)) {\n throw new Error(\"The transport entrypoint must export a name string\");\n }\n\n this.definition = {\n ...definition,\n name,\n init,\n };\n }\n\n public get(): T {\n if (!this.instance) {\n throw new Error(\"Before using get function run build() method\");\n }\n\n return this.instance.get();\n }\n\n public async build(): Promise<void> {\n await this.destroy();\n\n const {name, init, main, ...definition} = this.definition;\n\n const options: TransportOptions = {\n name,\n ...definition,\n };\n\n this.instance = this.transport();\n\n this.instance.register(options as O);\n\n if (isValidTransportMainFunction(main)) {\n await main(this.instance.get(), options);\n }\n }\n\n public async destroy(): Promise<void> {\n this.instance?.destroy();\n\n this.instance = undefined;\n }\n}\n","import {TransportConfig, TransportDefinition, TransportType} from \"@typing/transport\";\nimport {ViewOptions} from \"@typing/view\";\nimport {Awaiter} from \"@typing/helpers\";\n\nexport const OffscreenGlobalKey = \"adnbnOffscreen\";\nexport const OffscreenGlobalAccess = \"adnbnOffscreenAccess\";\n\nexport enum OffscreenReason {\n /** A reason used for testing purposes only. */\n Testing = \"TESTING\",\n /** The offscreen document is responsible for playing audio. */\n AudioPlayback = \"AUDIO_PLAYBACK\",\n /** The offscreen document needs to embed and script an iframe in order to modify the iframe's content. */\n IframeScripting = \"IFRAME_SCRIPTING\",\n /** The offscreen document needs to embed an iframe and scrape its DOM to extract information. */\n DOMScraping = \"DOM_SCRAPING\",\n /** The offscreen document needs to interact with Blob objects (including URL.createObjectURL()). */\n Blobs = \"BLOBS\",\n /** The offscreen document needs to use the DOMParser API. */\n DOMParser = \"DOM_PARSER\",\n /** The offscreen document needs to interact with media streams from user media (e.g. getUserMedia()). */\n UserMedia = \"USER_MEDIA\",\n /** The offscreen document needs to interact with media streams from display media (e.g. getDisplayMedia()). */\n DisplayMedia = \"DISPLAY_MEDIA\",\n /** The offscreen document needs to use WebRTC APIs. */\n WebRTC = \"WEB_RTC\",\n /** The offscreen document needs to interact with the clipboard APIs(e.g. Navigator.clipboard). */\n Clipboard = \"CLIPBOARD\",\n /** Specifies that the offscreen document needs access to localStorage. */\n LocalStorage = \"LOCAL_STORAGE\",\n /** Specifies that the offscreen document needs to spawn workers. */\n Workers = \"WORKERS\",\n /** Specifies that the offscreen document needs to use navigator.getBattery. */\n BatteryStatus = \"BATTERY_STATUS\",\n /** Specifies that the offscreen document needs to use window.matchMedia. */\n MatchMedia = \"MATCH_MEDIA\",\n /** Specifies that the offscreen document needs to use navigator.geolocation. */\n Geolocation = \"GEOLOCATION\",\n}\n\nexport interface OffscreenConfig extends TransportConfig {\n reasons?: `${OffscreenReason}` | `${OffscreenReason}`[] | OffscreenReason | OffscreenReason[];\n justification?: string;\n}\n\nexport type OffscreenOptions = OffscreenConfig & ViewOptions;\n\nexport type OffscreenEntrypointOptions = Partial<OffscreenOptions>;\n\nexport type OffscreenMainHandler<T extends TransportType> = (\n offscreen: T,\n options: OffscreenEntrypointOptions\n) => Awaiter<void>;\n\nexport interface OffscreenDefinition<T extends TransportType>\n extends TransportDefinition<OffscreenOptions, T>,\n OffscreenEntrypointOptions {\n main?: OffscreenMainHandler<T>;\n}\n\nexport type OffscreenUnresolvedDefinition<T extends TransportType> = Partial<OffscreenDefinition<T>>;\n","import {OffscreenGlobalAccess} from \"@typing/offscreen\";\n\nexport const isOffscreen = () => {\n return globalThis[OffscreenGlobalAccess] === true;\n};\n","import type {TransportDictionary, TransportManager, TransportName} from \"@typing/transport\";\n\nexport default abstract class<N extends TransportName, T = TransportDictionary[N]> {\n protected constructor(protected readonly name: N) {}\n\n protected abstract manager(): TransportManager;\n\n public get(): T {\n return this.manager().get(this.name);\n }\n\n public destroy(): void {\n this.manager().remove(this.name);\n }\n}\n","import type {TransportDictionary, TransportManager as TransportManagerContract, TransportName} from \"@typing/transport\";\n\nexport default abstract class TransportManager implements TransportManagerContract {\n private items = new Map<TransportName, TransportDictionary[TransportName]>();\n\n public add<K extends TransportName>(name: K, instance: TransportDictionary[K]): this {\n this.items.set(name, instance);\n\n return this;\n }\n\n public get<K extends TransportName>(name: K): TransportDictionary[K] | undefined {\n return this.items.get(name) as TransportDictionary[K] | undefined;\n }\n\n public has(name: TransportName): boolean {\n return this.items.has(name);\n }\n\n public remove<K extends TransportName>(name: K): TransportDictionary[K] | undefined {\n const service = this.get(name);\n\n this.items.delete(name);\n\n return service;\n }\n\n public clear(): this {\n this.items.clear();\n\n return this;\n }\n}\n","import TransportManager from \"@transport/TransportManager\";\n\nimport {OffscreenGlobalKey} from \"@typing/offscreen\";\n\nimport type {TransportManager as TransportManagerContract} from \"@typing/transport\";\n\nexport default class OffscreenManager extends TransportManager {\n public static getInstance(): TransportManagerContract {\n return (globalThis[OffscreenGlobalKey] ??= new OffscreenManager());\n }\n}\n","export enum Language {\n Arabic = \"ar\",\n Amharic = \"am\",\n Bulgarian = \"bg\",\n Bengali = \"bn\",\n Catalan = \"ca\",\n Czech = \"cs\",\n Danish = \"da\",\n German = \"de\",\n Greek = \"el\",\n English = \"en\",\n EnglishAustralia = \"en_AU\",\n EnglishGreatBritain = \"en_GB\",\n EnglishUSA = \"en_US\",\n Spanish = \"es\",\n SpanishLatinAmericaAndCaribbean = \"es_419\",\n Estonian = \"et\",\n Persian = \"fa\",\n Finnish = \"fi\",\n Filipino = \"fil\",\n French = \"fr\",\n Gujarati = \"gu\",\n Hebrew = \"he\",\n Hindi = \"hi\",\n Croatian = \"hr\",\n Hungarian = \"hu\",\n Indonesian = \"id\",\n Italian = \"it\",\n Japanese = \"ja\",\n Kannada = \"kn\",\n Korean = \"ko\",\n Lithuanian = \"lt\",\n Latvian = \"lv\",\n Malayalam = \"ml\",\n Marathi = \"mr\",\n Malay = \"ms\",\n Dutch = \"nl\",\n Norwegian = \"no\",\n Polish = \"pl\",\n PortugueseBrazil = \"pt_BR\",\n PortuguesePortugal = \"pt_PT\",\n Romanian = \"ro\",\n Russian = \"ru\",\n Slovak = \"sk\",\n Slovenian = \"sl\",\n Serbian = \"sr\",\n Swedish = \"sv\",\n Swahili = \"sw\",\n Tamil = \"ta\",\n Telugu = \"te\",\n Thai = \"th\",\n Turkish = \"tr\",\n Ukrainian = \"uk\",\n Vietnamese = \"vi\",\n ChineseChina = \"zh_CN\",\n ChineseTaiwan = \"zh_TW\",\n}\n\nexport enum LocaleDir {\n RightToLeft = \"rtl\",\n LeftToRight = \"ltr\",\n}\n\nexport const RtlLanguages: ReadonlySet<Language> = new Set([Language.Arabic, Language.Persian, Language.Hebrew]);\n\nexport const LocaleNestedKeysSeparator = \".\";\n\nexport const LocaleKeysSeparator = \"_\";\n\nexport const LocaleValuesSeparator = \"|\";\n\nexport const LocaleCustomKeyForLanguage = \"locale\";\n\nexport const LocaleKeyMarker = \"@\";\n\nexport const LanguageCodes: ReadonlySet<string> = new Set(Object.values(Language));\n\nexport const LocaleFileExtensions: ReadonlySet<string> = new Set([\"yaml\", \"yml\", \"json\"]);\n\nexport type LocaleValue = string | number | string[] | number[];\n\nexport type LocaleData = {\n [key: string]: LocaleValue | LocaleData;\n};\n\nexport type LocaleItems = Map<string, string>;\n\nexport type LocaleKeys = ReadonlySet<string>;\n\nexport type LocaleMessages = {\n [key: string]: {\n message: string;\n };\n};\n\nexport interface LocaleBuilder {\n lang(): Language;\n\n merge(data: LocaleData): this;\n\n build(): LocaleMessages;\n\n get(): LocaleItems;\n\n keys(): LocaleKeys;\n\n structure(): LocaleStructure;\n\n isValid(): boolean;\n\n validate(): this;\n}\n\nexport interface LocaleValidator {\n isValid(locale: LocaleBuilder): boolean;\n\n validate(locale: LocaleBuilder): this;\n}\n\nexport interface LocaleFutures {\n plural: boolean;\n substitutions: readonly string[];\n}\n\nexport interface LocaleStructure {\n [key: string]: LocaleFutures;\n}\n\nexport type LocaleNonPluralKeys<T extends LocaleStructure> = {\n [K in keyof T]: T[K] extends {plural: false} ? K : never;\n}[keyof T] &\n string;\n\nexport type LocalePluralKeys<T extends LocaleStructure> = {\n [K in keyof T]: T[K] extends {plural: true} ? K : never;\n}[keyof T] &\n string;\n\nexport type LocaleSubstitutionsFor<T extends LocaleStructure, K extends keyof T> = T[K] extends {\n substitutions: readonly (infer U)[];\n}\n ? Partial<Record<U & string, string | number>>\n : never;\n\nexport interface LocaleProvider<S extends LocaleStructure> {\n lang(): Language;\n\n languages(): Set<Language>;\n\n keys(): ReadonlySet<keyof S>;\n\n // non-plural keys\n trans<K extends LocaleNonPluralKeys<S>>(key: K, substitutions?: LocaleSubstitutionsFor<S, K>): string;\n\n // plural keys\n choice<K extends LocalePluralKeys<S>>(key: K, count: number, substitutions?: LocaleSubstitutionsFor<S, K>): string;\n}\n\nexport interface LocaleDynamicProvider<S extends LocaleStructure> extends LocaleProvider<S> {\n change(lang: Language): Promise<Language>;\n}\n","import {nanoid} from \"nanoid\";\nimport {\n MessageBody,\n MessageData,\n MessageDictionary,\n MessageGeneralHandler,\n MessageMapHandler,\n MessageProvider,\n MessageResponse,\n MessageTargetHandler,\n MessageType,\n} from \"@typing/message\";\n\nexport default abstract class AbstractMessage<T extends MessageDictionary, TOptions>\n implements MessageProvider<T, TOptions>\n{\n public abstract send<K extends MessageType<T>>(\n type: K,\n data: MessageData<T, K>,\n options?: TOptions\n ): Promise<MessageResponse<T, K>>;\n\n public abstract watch<K extends MessageType<T>>(type: K, handler: MessageTargetHandler<T, K>): () => void;\n\n public abstract watch(map: MessageMapHandler<T>): () => void;\n\n public abstract watch<K extends MessageType<T>>(general: MessageGeneralHandler<T, K>): () => void;\n\n protected buildMessage<K extends MessageType<T>>(type: K, data: MessageData<T, K>): MessageBody<T, K> {\n return {\n id: nanoid(),\n type,\n data,\n timestamp: Date.now(),\n };\n }\n}\n","export const MessageGlobalKey = \"adnbnMessage\";\n\nexport const MessageTypeSeparator = \":\";\n\nexport type MessageSender = chrome.runtime.MessageSender;\n\nexport interface MessageDictionary {\n [key: string]: (data: any) => any;\n}\n\nexport type MessageType<T extends MessageDictionary> = Extract<keyof T, string>;\nexport type MessageData<T extends MessageDictionary, K extends MessageType<T>> = Parameters<T[K]>[0];\nexport type MessageResponse<T extends MessageDictionary, K extends MessageType<T>> = ReturnType<T[K]>;\n\nexport type MessageTargetHandler<T extends MessageDictionary, K extends MessageType<T>> = (\n data: MessageData<T, K>,\n sender: MessageSender\n) => MessageResponse<T, K>;\nexport type MessageMapHandler<T extends MessageDictionary> = {[K in MessageType<T>]?: MessageTargetHandler<T, K>};\nexport type MessageGeneralHandler<T extends MessageDictionary, K extends MessageType<T>> = (\n type: K,\n data: MessageData<T, K>,\n sender: MessageSender\n) => any;\n\nexport interface MessageBody<T extends MessageDictionary, K extends MessageType<T>> {\n id: string;\n type: K;\n data: MessageData<T, K>;\n timestamp: number;\n}\n\nexport interface MessageProvider<T extends MessageDictionary, TOptions = void> {\n send<K extends MessageType<T>>(\n type: K,\n data: MessageData<T, K>,\n options?: TOptions\n ): Promise<MessageResponse<T, K>>;\n\n watch<K extends MessageType<T>>(type: K, handler: MessageTargetHandler<T, K>): () => void;\n\n watch(map: MessageMapHandler<T>): () => void;\n\n watch<K extends MessageType<T>>(general: MessageGeneralHandler<T, K>): () => void;\n}\n\nexport interface MessageHandler<T extends MessageDictionary> {\n run(\n type: MessageType<T>,\n data: MessageData<T, MessageType<T>>,\n sender: MessageSender\n ): MessageResponse<T, MessageType<T>> | undefined;\n}\n","import {onMessage} from \"@adnbn/browser\";\n\nimport {\n MessageBody,\n MessageDictionary,\n MessageGlobalKey,\n MessageHandler,\n MessageSender,\n MessageType,\n} from \"@typing/message\";\n\nexport default class MessageManager<T extends MessageDictionary> {\n private handlers: Set<MessageHandler<T>> = new Set();\n private unsubscribe: (() => void) | null = null;\n\n public static getInstance<T extends MessageDictionary>(): MessageManager<T> {\n return (globalThis[MessageGlobalKey] ??= new MessageManager<T>());\n }\n\n constructor() {\n this.listener = this.listener.bind(this);\n }\n\n public add(handler: MessageHandler<T>) {\n this.handlers.add(handler);\n this.updateListener();\n }\n\n public remove(handler: MessageHandler<T>) {\n this.handlers.delete(handler);\n this.updateListener();\n }\n\n public clear() {\n this.handlers = new Set();\n this.updateListener();\n }\n\n private updateListener() {\n if (this.handlers.size > 0 && !this.unsubscribe) {\n this.unsubscribe = onMessage(this.listener);\n } else if (this.handlers.size === 0 && this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n }\n }\n\n private listener<K extends MessageType<T>>(\n message: MessageBody<T, K>,\n sender: MessageSender,\n sendResponse: (response?: any) => void\n ): boolean | void {\n if (!message || typeof message !== \"object\" || !message.type) return;\n\n const results: Promise<any>[] = [];\n\n for (const handler of this.handlers) {\n try {\n const result = handler.run(message.type, message.data, sender);\n if (result !== undefined) {\n results.push(Promise.resolve(result));\n }\n } catch (err) {\n console.error(\"Message handler error:\", err);\n }\n }\n\n if (results.length > 1) {\n throw new Error(\n `Message type \"${message.type}\" has multiple handlers returning a response. Only one response is allowed.`\n );\n }\n\n if (results.length === 1) {\n results[0].then(sendResponse);\n return true;\n }\n }\n}\n","import {\n MessageData,\n MessageDictionary,\n MessageHandler,\n MessageResponse,\n MessageSender,\n MessageType,\n} from \"@typing/message\";\n\nexport default abstract class AbstractHandler<T extends MessageDictionary> implements MessageHandler<T> {\n public abstract run(\n type: MessageType<T>,\n data: MessageData<T, MessageType<T>>,\n sender: MessageSender\n ): MessageResponse<T, MessageType<T>> | undefined;\n}\n","import AbstractHandler from \"./AbstractHandler\";\nimport {\n MessageData,\n MessageDictionary,\n MessageResponse,\n MessageSender,\n MessageTargetHandler,\n MessageType,\n} from \"@typing/message\";\n\nexport default class SingleHandler<T extends MessageDictionary> extends AbstractHandler<T> {\n constructor(\n private messageType: MessageType<T>,\n private handler: MessageTargetHandler<T, MessageType<T>>\n ) {\n super();\n }\n\n public run(\n type: MessageType<T>,\n data: MessageData<T, MessageType<T>>,\n sender: MessageSender\n ): MessageResponse<T, MessageType<T>> | undefined {\n if (type === this.messageType) {\n return this.handler(data, sender);\n }\n }\n}\n","import AbstractHandler from \"./AbstractHandler\";\nimport {\n MessageData,\n MessageDictionary,\n MessageMapHandler,\n MessageResponse,\n MessageSender,\n MessageType,\n} from \"@typing/message\";\n\nexport default class MapHandler<T extends MessageDictionary> extends AbstractHandler<T> {\n constructor(private map: MessageMapHandler<T>) {\n super();\n }\n\n public run(\n type: MessageType<T>,\n data: MessageData<T, MessageType<T>>,\n sender: MessageSender\n ): MessageResponse<T, MessageType<T>> | undefined {\n const handler = this.map[type];\n if (handler) {\n if (typeof handler === \"function\") {\n return handler(data, sender);\n } else {\n throw new Error(`Handler for type \"${type}\" in object of handlers must be a function`);\n }\n }\n }\n}\n","import AbstractHandler from \"./AbstractHandler\";\nimport {\n MessageData,\n MessageDictionary,\n MessageGeneralHandler,\n MessageResponse,\n MessageSender,\n MessageType,\n} from \"@typing/message\";\n\nexport default class GeneralHandler<T extends MessageDictionary, K extends MessageType<T>> extends AbstractHandler<T> {\n constructor(private generalHandler: MessageGeneralHandler<T, K>) {\n super();\n }\n\n public run(\n type: K,\n data: MessageData<T, MessageType<T>>,\n sender: MessageSender\n ): MessageResponse<T, MessageType<T>> | undefined {\n return this.generalHandler(type, data, sender);\n }\n}\n","import {sendMessage, sendTabMessage} from \"@adnbn/browser\";\n\nimport {\n MessageData,\n MessageDictionary,\n MessageGeneralHandler,\n MessageHandler,\n MessageMapHandler,\n MessageResponse,\n MessageTargetHandler,\n MessageType,\n} from \"@typing/message\";\n\nimport AbstractMessage from \"./AbstractMessage\";\nimport MessageManager from \"../MessageManager\";\n\nimport {GeneralHandler, MapHandler, SingleHandler} from \"../handlers\";\n\nexport type MessageSendOptions = number | {tabId: number; frameId?: number; documentId?: string};\n\nexport default class Message<T extends MessageDictionary> extends AbstractMessage<T, MessageSendOptions> {\n private static instance: Message<MessageDictionary> | null = null;\n\n public static getInstance<T extends MessageDictionary>() {\n return (this.instance ??= new Message<T>());\n }\n\n protected get manager(): MessageManager<T> {\n return MessageManager.getInstance<T>();\n }\n\n public send<K extends MessageType<T>>(\n type: K,\n data: MessageData<T, K>,\n options?: MessageSendOptions\n ): Promise<MessageResponse<T, K>> {\n const message = this.buildMessage(type, data);\n\n if (options) {\n if (typeof options === \"number\") {\n return sendTabMessage(options, message);\n }\n\n const {tabId, ...other} = options;\n\n return sendTabMessage(tabId, message, other);\n }\n\n return sendMessage(message);\n }\n\n public watch<K extends MessageType<T>>(\n arg1: K | MessageMapHandler<T> | MessageGeneralHandler<T, K>,\n arg2?: MessageTargetHandler<T, K>\n ): () => void {\n let handler: MessageHandler<T>;\n\n if (typeof arg1 === \"function\") {\n handler = new GeneralHandler<T, K>(arg1);\n } else if (typeof arg1 === \"object\" && arg2 === undefined) {\n handler = new MapHandler<T>(arg1);\n } else if (typeof arg1 === \"string\" && arg2) {\n handler = new SingleHandler<T>(arg1, arg2);\n } else {\n throw new Error(\"Invalid arguments passed to watch()\");\n }\n\n this.manager.add(handler);\n\n return () => this.manager.remove(handler);\n }\n}\n","import {Message, MessageSendOptions} from \"@message/providers\";\n\nimport type {MessageDictionary, MessageProvider} from \"@typing/message\";\nimport type {TransportMessage as TransportMessageContract, TransportMessageData} from \"@typing/transport\";\n\nexport default abstract class TransportMessage implements TransportMessageContract {\n private message: MessageProvider<MessageDictionary, MessageSendOptions> = new Message();\n\n protected abstract readonly key: string;\n\n public async send(data: TransportMessageData) {\n return this.message.send(this.key, data);\n }\n\n public watch(handler: (data: TransportMessageData) => any): void {\n this.message.watch(this.key, handler);\n }\n}\n","import TransportMessage from \"@transport/TransportMessage\";\n\nimport {MessageTypeSeparator} from \"@typing/message\";\n\nexport default class OffscreenMessage extends TransportMessage {\n protected readonly key: string;\n\n constructor(name: string) {\n super();\n\n this.key = `offscreen${MessageTypeSeparator}${name}`;\n }\n}\n","import get from \"get-value\";\n\nimport BaseTransport from \"./BaseTransport\";\n\nimport type {TransportDictionary, TransportMessage, TransportName, TransportRegister} from \"@typing/transport\";\n\n// prettier-ignore\nexport default abstract class<\n N extends TransportName,\n T extends object = TransportDictionary[N],\n A extends any[] = []\n> extends BaseTransport<N, T> implements TransportRegister<T, A> {\n protected constructor(\n name: N,\n protected readonly init: (...args: A) => T\n ) {\n super(name);\n }\n\n protected abstract message(): TransportMessage;\n\n public register(...args: A) {\n if (this.manager().has(this.name)) {\n throw new Error(`A instance with name \"${this.name}\" already exists. The name must be unique.`);\n }\n\n const instance = this.init(...args);\n\n this.manager().add(this.name, instance);\n\n this.message().watch(async ({path, args}) => {\n try {\n const property = path == null ? instance : get(instance, path);\n\n if (property === undefined) {\n throw new Error(`Property not found at path \"${path}\" in \"${this.name}\"`);\n }\n\n if (typeof property === \"function\") {\n return await property.apply(instance, args);\n }\n\n return property;\n } catch (error) {\n console.error(\"register() error\", error);\n\n throw error;\n }\n });\n\n return instance;\n }\n}\n","import RegisterTransport from \"@transport/RegisterTransport\";\n\nimport {isOffscreen} from \"@offscreen/utils\";\n\nimport OffscreenMessage from \"../OffscreenMessage\";\nimport OffscreenManager from \"../OffscreenManager\";\n\nimport type {TransportDictionary, TransportName} from \"@typing/transport\";\n\nexport default class<\n N extends TransportName,\n T extends object = TransportDictionary[N],\n A extends any[] = [],\n> extends RegisterTransport<N, T, A> {\n constructor(\n name: N,\n protected readonly init: (...args: A) => T\n ) {\n super(name, init);\n }\n\n protected message() {\n return new OffscreenMessage(this.name);\n }\n\n protected manager() {\n return OffscreenManager.getInstance();\n }\n\n public get(): T {\n if (!isOffscreen()) {\n throw new Error(`Offscreen service \"${this.name}\" can be getting only from offscreen context.`);\n }\n\n return super.get();\n }\n}\n","import AbstractBuilder from \"@entry/transport/AbstractBuilder\";\n\nimport {RegisterOffscreen} from \"@offscreen/providers\";\n\nimport {OffscreenOptions, OffscreenUnresolvedDefinition} from \"@typing/offscreen\";\nimport {TransportName, TransportType} from \"@typing/transport\";\n\nexport default class<T extends TransportType = TransportType> extends AbstractBuilder<OffscreenOptions, T> {\n constructor(definition: OffscreenUnresolvedDefinition<T>) {\n super(definition);\n }\n\n protected transport(): RegisterOffscreen<TransportName, T, [OffscreenOptions]> {\n const {name, init} = this.definition;\n\n return new RegisterOffscreen(name, init);\n }\n}\n","import TransportBuilder from \"./TransportBuilder\";\n\nimport Builder from \"../core/Builder\";\n\nimport {OffscreenGlobalAccess, OffscreenUnresolvedDefinition} from \"@typing/offscreen\";\nimport {TransportType} from \"@typing/transport\";\nimport {ViewBuilder} from \"@typing/view\";\n\nexport default class<T extends TransportType = TransportType> extends Builder {\n protected readonly _transport: TransportBuilder<T>;\n\n protected _view?: ViewBuilder;\n\n constructor(definition: OffscreenUnresolvedDefinition<T>) {\n super();\n\n this._transport = new TransportBuilder(definition);\n }\n\n public view(view: ViewBuilder): this {\n this._view = view;\n\n return this;\n }\n\n public async build(): Promise<void> {\n await this.destroy();\n\n globalThis[OffscreenGlobalAccess] = true;\n\n await this._transport.build();\n await this._view?.build();\n }\n\n public async destroy(): Promise<void> {\n await this._transport.destroy();\n await this._view?.destroy();\n }\n}\n","import Builder from \"./Builder\";\n\nexport {Builder};\n\nexport default Builder.resolver();\n"]}
1
+ {"version":3,"sources":["../../../src/entry/core/Builder.ts","../../../src/entry/transport/resolvers/definition.ts","../../../src/entry/transport/AbstractBuilder.ts","../../../src/types/offscreen.ts","../../../src/offscreen/utils.ts","../../../src/transport/BaseTransport.ts","../../../src/transport/TransportManager.ts","../../../src/offscreen/OffscreenManager.ts","../../../src/types/locale.ts","../../../src/message/providers/AbstractMessage.ts","../../../src/types/message.ts","../../../src/message/MessageManager.ts","../../../src/message/handlers/AbstractHandler.ts","../../../src/message/handlers/SingleHandler.ts","../../../src/message/handlers/MapHandler.ts","../../../src/message/handlers/GeneralHandler.ts","../../../src/message/providers/Message.ts","../../../src/transport/TransportMessage.ts","../../../src/offscreen/OffscreenMessage.ts","../../../src/transport/RegisterTransport.ts","../../../src/offscreen/providers/RegisterOffscreen.ts","../../../src/entry/offscreen/TransportBuilder.ts","../../../src/entry/offscreen/Builder.ts","../../../src/entry/offscreen/index.ts"],"names":["Language","nanoid","onMessage","sendTabMessage","sendMessage","args","get","Builder_default"],"mappings":"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","file":"index.cjs","sourcesContent":["import {EntrypointBuilder, EntrypointConstructorParameter} from \"@typing/entrypoint\";\n\nexport default abstract class implements EntrypointBuilder {\n public abstract build(): Promise<void>;\n\n public abstract destroy(): Promise<void>;\n\n public static resolver<T extends new (definition: any) => EntrypointBuilder>(this: T) {\n return (definition: EntrypointConstructorParameter<T>): void => {\n new this(definition).build().catch(e => {\n console.error(\"Failed to build entrypoint:\", e);\n });\n };\n }\n}\n","import {\n TransportDefinition,\n TransportInitGetter,\n TransportMainHandler,\n TransportOptions,\n TransportType,\n} from \"@typing/transport\";\nimport {RelayDefinition, RelayMainHandler} from \"@typing/relay\";\nimport {OffscreenDefinition, OffscreenMainHandler} from \"@typing/offscreen\";\n\nexport const isValidTransportDefinition = <O extends TransportOptions, T extends TransportType>(\n definition: any\n): definition is TransportDefinition<O, T> & RelayDefinition<T> & OffscreenDefinition<T> => {\n return definition && typeof definition === \"object\" && definition.constructor === Object;\n};\n\nexport const isValidTransportInitFunction = <O extends TransportOptions, T extends TransportType>(\n init: any\n): init is TransportInitGetter<O, T> => {\n return init && typeof init === \"function\";\n};\n\nexport const isValidTransportMainFunction = <O extends TransportOptions, T extends TransportType>(\n main: any\n): main is TransportMainHandler<O, T> & RelayMainHandler<T> & OffscreenMainHandler<T> => {\n return main && typeof main === \"function\";\n};\n\nexport const isValidTransportName = (name: any): name is string => {\n return name && typeof name === \"string\" && name.trim().length > 0;\n};\n","import Builder from \"@entry/core/Builder\";\n\nimport {isValidTransportInitFunction, isValidTransportMainFunction, isValidTransportName} from \"./resolvers\";\n\nimport {\n TransportOptions,\n TransportRegister,\n TransportResolvedDefinition,\n TransportType,\n TransportUnresolvedDefinition,\n} from \"@typing/transport\";\nimport {EntrypointBuilder} from \"@typing/entrypoint\";\n\n// prettier-ignore\nexport default abstract class<\n O extends TransportOptions,\n T extends TransportType = TransportType\n> extends Builder implements EntrypointBuilder {\n protected readonly definition: TransportResolvedDefinition<O, T>;\n\n protected instance?: TransportRegister<T, [O]>;\n\n protected abstract transport(): TransportRegister<T, [O]>;\n\n protected constructor(definition: TransportUnresolvedDefinition<O, T>) {\n super();\n\n const {name, init} = definition;\n\n if (!isValidTransportInitFunction(init)) {\n throw new Error(\"The transport entrypoint must export a init function\");\n }\n\n if (!isValidTransportName(name)) {\n throw new Error(\"The transport entrypoint must export a name string\");\n }\n\n this.definition = {\n ...definition,\n name,\n init,\n };\n }\n\n public get(): T {\n if (!this.instance) {\n throw new Error(\"Before using get function run build() method\");\n }\n\n return this.instance.get();\n }\n\n public async build(): Promise<void> {\n await this.destroy();\n\n const {name, init, main, ...definition} = this.definition;\n\n const options: TransportOptions = {\n name,\n ...definition,\n };\n\n this.instance = this.transport();\n\n this.instance.register(options as O);\n\n if (isValidTransportMainFunction(main)) {\n await main(this.instance.get(), options);\n }\n }\n\n public async destroy(): Promise<void> {\n this.instance?.destroy();\n\n this.instance = undefined;\n }\n}\n","import {TransportConfig, TransportDefinition, TransportType} from \"@typing/transport\";\nimport {ViewOptions} from \"@typing/view\";\nimport {Awaiter} from \"@typing/helpers\";\n\nexport const OffscreenGlobalKey = \"adnbnOffscreen\";\nexport const OffscreenGlobalAccess = \"adnbnOffscreenAccess\";\n\nexport enum OffscreenReason {\n /** A reason used for testing purposes only. */\n Testing = \"TESTING\",\n /** The offscreen document is responsible for playing audio. */\n AudioPlayback = \"AUDIO_PLAYBACK\",\n /** The offscreen document needs to embed and script an iframe in order to modify the iframe's content. */\n IframeScripting = \"IFRAME_SCRIPTING\",\n /** The offscreen document needs to embed an iframe and scrape its DOM to extract information. */\n DOMScraping = \"DOM_SCRAPING\",\n /** The offscreen document needs to interact with Blob objects (including URL.createObjectURL()). */\n Blobs = \"BLOBS\",\n /** The offscreen document needs to use the DOMParser API. */\n DOMParser = \"DOM_PARSER\",\n /** The offscreen document needs to interact with media streams from user media (e.g. getUserMedia()). */\n UserMedia = \"USER_MEDIA\",\n /** The offscreen document needs to interact with media streams from display media (e.g. getDisplayMedia()). */\n DisplayMedia = \"DISPLAY_MEDIA\",\n /** The offscreen document needs to use WebRTC APIs. */\n WebRTC = \"WEB_RTC\",\n /** The offscreen document needs to interact with the clipboard APIs(e.g. Navigator.clipboard). */\n Clipboard = \"CLIPBOARD\",\n /** Specifies that the offscreen document needs access to localStorage. */\n LocalStorage = \"LOCAL_STORAGE\",\n /** Specifies that the offscreen document needs to spawn workers. */\n Workers = \"WORKERS\",\n /** Specifies that the offscreen document needs to use navigator.getBattery. */\n BatteryStatus = \"BATTERY_STATUS\",\n /** Specifies that the offscreen document needs to use window.matchMedia. */\n MatchMedia = \"MATCH_MEDIA\",\n /** Specifies that the offscreen document needs to use navigator.geolocation. */\n Geolocation = \"GEOLOCATION\",\n}\n\nexport interface OffscreenConfig extends TransportConfig {\n reasons?: `${OffscreenReason}` | `${OffscreenReason}`[] | OffscreenReason | OffscreenReason[];\n justification?: string;\n}\n\nexport type OffscreenOptions = OffscreenConfig & ViewOptions;\n\nexport type OffscreenEntrypointOptions = Partial<OffscreenOptions>;\n\nexport type OffscreenMainHandler<T extends TransportType> = (\n offscreen: T,\n options: OffscreenEntrypointOptions\n) => Awaiter<void>;\n\nexport interface OffscreenDefinition<T extends TransportType>\n extends TransportDefinition<OffscreenOptions, T>,\n OffscreenEntrypointOptions {\n main?: OffscreenMainHandler<T>;\n}\n\nexport type OffscreenUnresolvedDefinition<T extends TransportType> = Partial<OffscreenDefinition<T>>;\n","import {OffscreenGlobalAccess} from \"@typing/offscreen\";\n\nexport const isOffscreen = () => {\n return globalThis[OffscreenGlobalAccess] === true;\n};\n","import type {TransportDictionary, TransportManager, TransportName} from \"@typing/transport\";\n\nexport default abstract class<N extends TransportName, T = TransportDictionary[N]> {\n protected constructor(protected readonly name: N) {}\n\n protected abstract manager(): TransportManager;\n\n public get(): T {\n return this.manager().get(this.name);\n }\n\n public destroy(): void {\n this.manager().remove(this.name);\n }\n}\n","import type {TransportDictionary, TransportManager as TransportManagerContract, TransportName} from \"@typing/transport\";\n\nexport default abstract class TransportManager implements TransportManagerContract {\n private items = new Map<TransportName, TransportDictionary[TransportName]>();\n\n public add<K extends TransportName>(name: K, instance: TransportDictionary[K]): this {\n this.items.set(name, instance);\n\n return this;\n }\n\n public get<K extends TransportName>(name: K): TransportDictionary[K] | undefined {\n return this.items.get(name) as TransportDictionary[K] | undefined;\n }\n\n public has(name: TransportName): boolean {\n return this.items.has(name);\n }\n\n public remove<K extends TransportName>(name: K): TransportDictionary[K] | undefined {\n const service = this.get(name);\n\n this.items.delete(name);\n\n return service;\n }\n\n public clear(): this {\n this.items.clear();\n\n return this;\n }\n}\n","import TransportManager from \"@transport/TransportManager\";\n\nimport {OffscreenGlobalKey} from \"@typing/offscreen\";\n\nimport type {TransportManager as TransportManagerContract} from \"@typing/transport\";\n\nexport default class OffscreenManager extends TransportManager {\n public static getInstance(): TransportManagerContract {\n return (globalThis[OffscreenGlobalKey] ??= new OffscreenManager());\n }\n}\n","export enum Language {\n Arabic = \"ar\",\n Amharic = \"am\",\n Bulgarian = \"bg\",\n Bengali = \"bn\",\n Catalan = \"ca\",\n Czech = \"cs\",\n Danish = \"da\",\n German = \"de\",\n Greek = \"el\",\n English = \"en\",\n EnglishAustralia = \"en_AU\",\n EnglishGreatBritain = \"en_GB\",\n EnglishUSA = \"en_US\",\n Spanish = \"es\",\n SpanishLatinAmericaAndCaribbean = \"es_419\",\n Estonian = \"et\",\n Persian = \"fa\",\n Finnish = \"fi\",\n Filipino = \"fil\",\n French = \"fr\",\n Gujarati = \"gu\",\n Hebrew = \"he\",\n Hindi = \"hi\",\n Croatian = \"hr\",\n Hungarian = \"hu\",\n Indonesian = \"id\",\n Italian = \"it\",\n Japanese = \"ja\",\n Kannada = \"kn\",\n Korean = \"ko\",\n Lithuanian = \"lt\",\n Latvian = \"lv\",\n Malayalam = \"ml\",\n Marathi = \"mr\",\n Malay = \"ms\",\n Dutch = \"nl\",\n Norwegian = \"no\",\n Polish = \"pl\",\n PortugueseBrazil = \"pt_BR\",\n PortuguesePortugal = \"pt_PT\",\n Romanian = \"ro\",\n Russian = \"ru\",\n Slovak = \"sk\",\n Slovenian = \"sl\",\n Serbian = \"sr\",\n Swedish = \"sv\",\n Swahili = \"sw\",\n Tamil = \"ta\",\n Telugu = \"te\",\n Thai = \"th\",\n Turkish = \"tr\",\n Ukrainian = \"uk\",\n Vietnamese = \"vi\",\n ChineseChina = \"zh_CN\",\n ChineseTaiwan = \"zh_TW\",\n}\n\nexport enum LocaleDir {\n RightToLeft = \"rtl\",\n LeftToRight = \"ltr\",\n}\n\nexport const RtlLanguages: ReadonlySet<Language> = new Set([Language.Arabic, Language.Persian, Language.Hebrew]);\n\nexport const LocaleNestedKeysSeparator = \".\";\n\nexport const LocaleKeysSeparator = \"_\";\n\nexport const LocaleValuesSeparator = \"|\";\n\nexport const LocaleCustomKeyForLanguage = \"locale\";\n\nexport const LocaleKeyMarker = \"@\";\n\nexport const LanguageCodes: ReadonlySet<string> = new Set(Object.values(Language));\n\nexport const LocaleFileExtensions: ReadonlySet<string> = new Set([\"yaml\", \"yml\", \"json\"]);\n\nexport type LocaleValue = string | number | string[] | number[];\n\nexport type LocaleData = {\n [key: string]: LocaleValue | LocaleData;\n};\n\nexport type LocaleItems = Map<string, string>;\n\nexport type LocaleKeys = ReadonlySet<string>;\n\nexport type LocaleMessages = {\n [key: string]: {\n message: string;\n };\n};\n\nexport interface LocaleBuilder {\n lang(): Language;\n\n merge(data: LocaleData): this;\n\n build(): LocaleMessages;\n\n get(): LocaleItems;\n\n keys(): LocaleKeys;\n\n structure(): LocaleStructure;\n\n isValid(): boolean;\n\n validate(): this;\n}\n\nexport interface LocaleValidator {\n isValid(locale: LocaleBuilder): boolean;\n\n validate(locale: LocaleBuilder): this;\n}\n\nexport interface LocaleFutures {\n plural: boolean;\n substitutions: readonly string[];\n}\n\nexport interface LocaleStructure {\n [key: string]: LocaleFutures;\n}\n\nexport type LocaleNonPluralKeys<T extends LocaleStructure> = {\n [K in keyof T]: T[K] extends {plural: false} ? K : never;\n}[keyof T] &\n string;\n\nexport type LocalePluralKeys<T extends LocaleStructure> = {\n [K in keyof T]: T[K] extends {plural: true} ? K : never;\n}[keyof T] &\n string;\n\nexport type LocaleSubstitutionsFor<T extends LocaleStructure, K extends keyof T> = T[K] extends {\n substitutions: readonly (infer U)[];\n}\n ? Partial<Record<U & string, string | number>>\n : never;\n\nexport interface LocaleProvider<S extends LocaleStructure> {\n lang(): Language;\n\n languages(): Set<Language>;\n\n keys(): ReadonlySet<keyof S>;\n\n // non-plural keys\n trans<K extends LocaleNonPluralKeys<S>>(key: K, substitutions?: LocaleSubstitutionsFor<S, K>): string;\n\n // plural keys\n choice<K extends LocalePluralKeys<S>>(key: K, count: number, substitutions?: LocaleSubstitutionsFor<S, K>): string;\n}\n\nexport interface LocaleDynamicProvider<S extends LocaleStructure> extends LocaleProvider<S> {\n change(lang: Language): Promise<Language>;\n}\n","import {nanoid} from \"nanoid\";\nimport {\n MessageBody,\n MessageData,\n MessageDictionary,\n MessageGeneralHandler,\n MessageMapHandler,\n MessageProvider,\n MessageResponse,\n MessageTargetHandler,\n MessageType,\n} from \"@typing/message\";\n\nexport default abstract class AbstractMessage<T extends MessageDictionary, TOptions>\n implements MessageProvider<T, TOptions>\n{\n public abstract send<K extends MessageType<T>>(\n type: K,\n data: MessageData<T, K>,\n options?: TOptions\n ): Promise<MessageResponse<T, K>>;\n\n public abstract watch<K extends MessageType<T>>(type: K, handler: MessageTargetHandler<T, K>): () => void;\n\n public abstract watch(map: MessageMapHandler<T>): () => void;\n\n public abstract watch<K extends MessageType<T>>(general: MessageGeneralHandler<T, K>): () => void;\n\n protected buildMessage<K extends MessageType<T>>(type: K, data: MessageData<T, K>): MessageBody<T, K> {\n return {\n id: nanoid(),\n type,\n data,\n timestamp: Date.now(),\n };\n }\n}\n","export const MessageGlobalKey = \"adnbnMessage\";\n\nexport const MessageTypeSeparator = \":\";\n\nexport const MessageSenderProperty = \"_sender\";\n\nexport type MessageSender = chrome.runtime.MessageSender;\n\nexport interface MessageDictionary {\n [key: string]: (data: any) => any;\n}\n\nexport interface MessageSenderAware {\n [MessageSenderProperty]?: MessageSender;\n}\n\nexport type MessageType<T extends MessageDictionary> = Extract<keyof T, string>;\nexport type MessageData<T extends MessageDictionary, K extends MessageType<T>> = Parameters<T[K]>[0];\nexport type MessageResponse<T extends MessageDictionary, K extends MessageType<T>> = ReturnType<T[K]>;\n\nexport type MessageTargetHandler<T extends MessageDictionary, K extends MessageType<T>> = (\n data: MessageData<T, K>,\n sender: MessageSender\n) => MessageResponse<T, K>;\nexport type MessageMapHandler<T extends MessageDictionary> = {[K in MessageType<T>]?: MessageTargetHandler<T, K>};\nexport type MessageGeneralHandler<T extends MessageDictionary, K extends MessageType<T>> = (\n type: K,\n data: MessageData<T, K>,\n sender: MessageSender\n) => any;\n\nexport interface MessageBody<T extends MessageDictionary, K extends MessageType<T>> {\n id: string;\n type: K;\n data: MessageData<T, K>;\n timestamp: number;\n}\n\nexport interface MessageProvider<T extends MessageDictionary, TOptions = void> {\n send<K extends MessageType<T>>(\n type: K,\n data: MessageData<T, K>,\n options?: TOptions\n ): Promise<MessageResponse<T, K>>;\n\n watch<K extends MessageType<T>>(type: K, handler: MessageTargetHandler<T, K>): () => void;\n\n watch(map: MessageMapHandler<T>): () => void;\n\n watch<K extends MessageType<T>>(general: MessageGeneralHandler<T, K>): () => void;\n}\n\nexport interface MessageHandler<T extends MessageDictionary> {\n run(\n type: MessageType<T>,\n data: MessageData<T, MessageType<T>>,\n sender: MessageSender\n ): MessageResponse<T, MessageType<T>> | undefined;\n}\n","import {onMessage} from \"@adnbn/browser\";\n\nimport {\n MessageBody,\n MessageDictionary,\n MessageGlobalKey,\n MessageHandler,\n MessageSender,\n MessageType,\n} from \"@typing/message\";\n\nexport default class MessageManager<T extends MessageDictionary> {\n private handlers: Set<MessageHandler<T>> = new Set();\n private unsubscribe: (() => void) | null = null;\n\n public static getInstance<T extends MessageDictionary>(): MessageManager<T> {\n return (globalThis[MessageGlobalKey] ??= new MessageManager<T>());\n }\n\n constructor() {\n this.listener = this.listener.bind(this);\n }\n\n public add(handler: MessageHandler<T>) {\n this.handlers.add(handler);\n this.updateListener();\n }\n\n public remove(handler: MessageHandler<T>) {\n this.handlers.delete(handler);\n this.updateListener();\n }\n\n public clear() {\n this.handlers = new Set();\n this.updateListener();\n }\n\n private updateListener() {\n if (this.handlers.size > 0 && !this.unsubscribe) {\n this.unsubscribe = onMessage(this.listener);\n } else if (this.handlers.size === 0 && this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n }\n }\n\n private listener<K extends MessageType<T>>(\n message: MessageBody<T, K>,\n sender: MessageSender,\n sendResponse: (response?: any) => void\n ): boolean | void {\n if (!message || typeof message !== \"object\" || !message.type) return;\n\n const results: Promise<any>[] = [];\n\n for (const handler of this.handlers) {\n try {\n const result = handler.run(message.type, message.data, sender);\n if (result !== undefined) {\n results.push(Promise.resolve(result));\n }\n } catch (err) {\n console.error(\"Message handler error:\", err);\n }\n }\n\n if (results.length > 1) {\n throw new Error(\n `Message type \"${message.type}\" has multiple handlers returning a response. Only one response is allowed.`\n );\n }\n\n if (results.length === 1) {\n results[0].then(sendResponse);\n return true;\n }\n }\n}\n","import {\n MessageData,\n MessageDictionary,\n MessageHandler,\n MessageResponse,\n MessageSender,\n MessageType,\n} from \"@typing/message\";\n\nexport default abstract class AbstractHandler<T extends MessageDictionary> implements MessageHandler<T> {\n public abstract run(\n type: MessageType<T>,\n data: MessageData<T, MessageType<T>>,\n sender: MessageSender\n ): MessageResponse<T, MessageType<T>> | undefined;\n}\n","import AbstractHandler from \"./AbstractHandler\";\nimport {\n MessageData,\n MessageDictionary,\n MessageResponse,\n MessageSender,\n MessageTargetHandler,\n MessageType,\n} from \"@typing/message\";\n\nexport default class SingleHandler<T extends MessageDictionary> extends AbstractHandler<T> {\n constructor(\n private messageType: MessageType<T>,\n private handler: MessageTargetHandler<T, MessageType<T>>\n ) {\n super();\n }\n\n public run(\n type: MessageType<T>,\n data: MessageData<T, MessageType<T>>,\n sender: MessageSender\n ): MessageResponse<T, MessageType<T>> | undefined {\n if (type === this.messageType) {\n return this.handler(data, sender);\n }\n }\n}\n","import AbstractHandler from \"./AbstractHandler\";\nimport {\n MessageData,\n MessageDictionary,\n MessageMapHandler,\n MessageResponse,\n MessageSender,\n MessageType,\n} from \"@typing/message\";\n\nexport default class MapHandler<T extends MessageDictionary> extends AbstractHandler<T> {\n constructor(private map: MessageMapHandler<T>) {\n super();\n }\n\n public run(\n type: MessageType<T>,\n data: MessageData<T, MessageType<T>>,\n sender: MessageSender\n ): MessageResponse<T, MessageType<T>> | undefined {\n const handler = this.map[type];\n if (handler) {\n if (typeof handler === \"function\") {\n return handler(data, sender);\n } else {\n throw new Error(`Handler for type \"${type}\" in object of handlers must be a function`);\n }\n }\n }\n}\n","import AbstractHandler from \"./AbstractHandler\";\nimport {\n MessageData,\n MessageDictionary,\n MessageGeneralHandler,\n MessageResponse,\n MessageSender,\n MessageType,\n} from \"@typing/message\";\n\nexport default class GeneralHandler<T extends MessageDictionary, K extends MessageType<T>> extends AbstractHandler<T> {\n constructor(private generalHandler: MessageGeneralHandler<T, K>) {\n super();\n }\n\n public run(\n type: K,\n data: MessageData<T, MessageType<T>>,\n sender: MessageSender\n ): MessageResponse<T, MessageType<T>> | undefined {\n return this.generalHandler(type, data, sender);\n }\n}\n","import {sendMessage, sendTabMessage} from \"@adnbn/browser\";\n\nimport {\n MessageData,\n MessageDictionary,\n MessageGeneralHandler,\n MessageHandler,\n MessageMapHandler,\n MessageResponse,\n MessageTargetHandler,\n MessageType,\n} from \"@typing/message\";\n\nimport AbstractMessage from \"./AbstractMessage\";\nimport MessageManager from \"../MessageManager\";\n\nimport {GeneralHandler, MapHandler, SingleHandler} from \"../handlers\";\n\nexport type MessageSendOptions = number | {tabId: number; frameId?: number; documentId?: string};\n\nexport default class Message<T extends MessageDictionary> extends AbstractMessage<T, MessageSendOptions> {\n private static instance: Message<MessageDictionary> | null = null;\n\n public static getInstance<T extends MessageDictionary>() {\n return (this.instance ??= new Message<T>());\n }\n\n protected get manager(): MessageManager<T> {\n return MessageManager.getInstance<T>();\n }\n\n public send<K extends MessageType<T>>(\n type: K,\n data: MessageData<T, K>,\n options?: MessageSendOptions\n ): Promise<MessageResponse<T, K>> {\n const message = this.buildMessage(type, data);\n\n if (options) {\n if (typeof options === \"number\") {\n return sendTabMessage(options, message);\n }\n\n const {tabId, ...other} = options;\n\n return sendTabMessage(tabId, message, other);\n }\n\n return sendMessage(message);\n }\n\n public watch<K extends MessageType<T>>(\n arg1: K | MessageMapHandler<T> | MessageGeneralHandler<T, K>,\n arg2?: MessageTargetHandler<T, K>\n ): () => void {\n let handler: MessageHandler<T>;\n\n if (typeof arg1 === \"function\") {\n handler = new GeneralHandler<T, K>(arg1);\n } else if (typeof arg1 === \"object\" && arg2 === undefined) {\n handler = new MapHandler<T>(arg1);\n } else if (typeof arg1 === \"string\" && arg2) {\n handler = new SingleHandler<T>(arg1, arg2);\n } else {\n throw new Error(\"Invalid arguments passed to watch()\");\n }\n\n this.manager.add(handler);\n\n return () => this.manager.remove(handler);\n }\n}\n","import {Message, MessageSendOptions} from \"@message/providers\";\n\nimport {MessageDictionary, MessageProvider, MessageSender} from \"@typing/message\";\nimport type {TransportMessage as TransportMessageContract, TransportMessageData} from \"@typing/transport\";\n\nexport default abstract class TransportMessage implements TransportMessageContract {\n protected message: MessageProvider<MessageDictionary, MessageSendOptions> = new Message();\n\n protected abstract readonly key: string;\n\n public async send(data: TransportMessageData) {\n return this.message.send(this.key, data);\n }\n\n public watch(handler: (data: TransportMessageData, sender: MessageSender) => any): void {\n this.message.watch(this.key, handler);\n }\n}\n","import TransportMessage from \"@transport/TransportMessage\";\n\nimport {MessageTypeSeparator} from \"@typing/message\";\n\nexport default class OffscreenMessage extends TransportMessage {\n protected readonly key: string;\n\n constructor(name: string) {\n super();\n\n this.key = `offscreen${MessageTypeSeparator}${name}`;\n }\n}\n","import get from \"get-value\";\n\nimport BaseTransport from \"./BaseTransport\";\n\nimport {TransportDictionary, TransportMessage, TransportName, TransportRegister} from \"@typing/transport\";\nimport {MessageSender, MessageSenderProperty} from \"@typing/message\";\n\n// prettier-ignore\nexport default abstract class<\n N extends TransportName,\n T extends object = TransportDictionary[N],\n A extends any[] = []\n> extends BaseTransport<N, T> implements TransportRegister<T, A> {\n protected constructor(\n name: N,\n protected readonly init: (...args: A) => T\n ) {\n super(name);\n }\n\n protected abstract message(): TransportMessage;\n\n public register(...args: A) {\n if (this.manager().has(this.name)) {\n throw new Error(`A instance with name \"${this.name}\" already exists. The name must be unique.`);\n }\n\n const instance = this.init(...args);\n\n this.manager().add(this.name, instance);\n\n this.message().watch(async ({path, args}, sender) => {\n try {\n this.injectSender(instance, sender);\n\n const property = path == null ? instance : get(instance, path);\n\n if (property === undefined) {\n throw new Error(`Property not found at path \"${path}\" in \"${this.name}\"`);\n }\n\n let result: any;\n\n if (typeof property === \"function\") {\n result = await property.apply(instance, args);\n } else {\n result = property;\n }\n\n this.clearSender(instance);\n\n return result;\n } catch (error) {\n console.error(`Error during message handler registration for transport \"${this.name}\"`, error);\n\n this.clearSender(instance);\n\n throw error;\n }\n });\n\n return instance;\n }\n\n private injectSender(instance: T, sender: MessageSender): void {\n if (!Object.getOwnPropertyDescriptor(instance, MessageSenderProperty)) {\n Object.defineProperty(instance, MessageSenderProperty, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: undefined,\n });\n }\n\n (instance as any)[MessageSenderProperty] = sender;\n }\n\n private clearSender(instance: T): void {\n if (Object.getOwnPropertyDescriptor(instance, MessageSenderProperty)) {\n (instance as any)[MessageSenderProperty] = undefined;\n }\n }\n}\n","import RegisterTransport from \"@transport/RegisterTransport\";\n\nimport {isOffscreen} from \"@offscreen/utils\";\n\nimport OffscreenMessage from \"../OffscreenMessage\";\nimport OffscreenManager from \"../OffscreenManager\";\n\nimport type {TransportDictionary, TransportName} from \"@typing/transport\";\n\nexport default class<\n N extends TransportName,\n T extends object = TransportDictionary[N],\n A extends any[] = [],\n> extends RegisterTransport<N, T, A> {\n constructor(\n name: N,\n protected readonly init: (...args: A) => T\n ) {\n super(name, init);\n }\n\n protected message() {\n return new OffscreenMessage(this.name);\n }\n\n protected manager() {\n return OffscreenManager.getInstance();\n }\n\n public get(): T {\n if (!isOffscreen()) {\n throw new Error(`Offscreen service \"${this.name}\" can be getting only from offscreen context.`);\n }\n\n return super.get();\n }\n}\n","import AbstractBuilder from \"@entry/transport/AbstractBuilder\";\n\nimport {RegisterOffscreen} from \"@offscreen/providers\";\n\nimport {OffscreenOptions, OffscreenUnresolvedDefinition} from \"@typing/offscreen\";\nimport {TransportName, TransportType} from \"@typing/transport\";\n\nexport default class<T extends TransportType = TransportType> extends AbstractBuilder<OffscreenOptions, T> {\n constructor(definition: OffscreenUnresolvedDefinition<T>) {\n super(definition);\n }\n\n protected transport(): RegisterOffscreen<TransportName, T, [OffscreenOptions]> {\n const {name, init} = this.definition;\n\n return new RegisterOffscreen(name, init);\n }\n}\n","import TransportBuilder from \"./TransportBuilder\";\n\nimport Builder from \"../core/Builder\";\n\nimport {OffscreenGlobalAccess, OffscreenUnresolvedDefinition} from \"@typing/offscreen\";\nimport {TransportType} from \"@typing/transport\";\nimport {ViewBuilder} from \"@typing/view\";\n\nexport default class<T extends TransportType = TransportType> extends Builder {\n protected readonly _transport: TransportBuilder<T>;\n\n protected _view?: ViewBuilder;\n\n constructor(definition: OffscreenUnresolvedDefinition<T>) {\n super();\n\n this._transport = new TransportBuilder(definition);\n }\n\n public view(view: ViewBuilder): this {\n this._view = view;\n\n return this;\n }\n\n public async build(): Promise<void> {\n await this.destroy();\n\n globalThis[OffscreenGlobalAccess] = true;\n\n await this._transport.build();\n await this._view?.build();\n }\n\n public async destroy(): Promise<void> {\n await this._transport.destroy();\n await this._view?.destroy();\n }\n}\n","import Builder from \"./Builder\";\n\nexport {Builder};\n\nexport default Builder.resolver();\n"]}
@@ -1,13 +1,15 @@
1
- import { b as OffscreenOptions, c as OffscreenUnresolvedDefinition, O as OffscreenDefinition } from '../../offscreen-B9GiglgN.mjs';
2
- import { e as TransportType, T as TransportName } from '../../transport-B_uYwoGi.mjs';
3
- import { e as export_default$2 } from '../../AbstractBuilder-Ce5zNRXr.mjs';
4
- import { e as export_default$3 } from '../../RegisterOffscreen-BukckdvS.mjs';
5
- import { e as export_default$4 } from '../../Builder-CCyBD4hF.mjs';
6
- import { e as ViewBuilder } from '../../view-QDP2Maev.mjs';
7
- import '../../helpers-DnV3N7fU.mjs';
1
+ import { b as OffscreenOptions, c as OffscreenUnresolvedDefinition, O as OffscreenDefinition } from '../../offscreen-2EP-rRfx.mjs';
2
+ import { e as TransportType, T as TransportName } from '../../transport-BrbirhXv.mjs';
3
+ import { e as export_default$2 } from '../../AbstractBuilder-C81kWZzQ.mjs';
4
+ import { e as export_default$3 } from '../../RegisterOffscreen-DT0gN5xN.mjs';
5
+ import { e as export_default$4 } from '../../Builder-Df1LUO_f.mjs';
6
+ import { e as ViewBuilder } from '../../view-Bs26Jcvi.mjs';
7
+ import '../../helpers-YDFORuZz.mjs';
8
8
  import 'utility-types';
9
- import '../../TransportMessage-Bk0wg4rF.mjs';
10
- import '../../BaseTransport-C7uEgfUu.mjs';
9
+ import '../../message-jsmkeGHC.mjs';
10
+ import '../../TransportMessage-CIKrv3DG.mjs';
11
+ import '../../BaseTransport-DNZ28gFF.mjs';
12
+ import '../../Message-Bnritk3D.mjs';
11
13
  import 'react';
12
14
  import 'html-rspack-tags-plugin';
13
15
 
@@ -1,13 +1,15 @@
1
- import { b as OffscreenOptions, c as OffscreenUnresolvedDefinition, O as OffscreenDefinition } from '../../offscreen-BG5Abe8V.js';
2
- import { e as TransportType, T as TransportName } from '../../transport-BPmSUoEU.js';
3
- import { e as export_default$2 } from '../../AbstractBuilder-CKgY_Bta.js';
4
- import { e as export_default$3 } from '../../RegisterOffscreen-DmlpLqjW.js';
5
- import { e as export_default$4 } from '../../Builder-7pbnGvHK.js';
6
- import { e as ViewBuilder } from '../../view-D4dquvKl.js';
7
- import '../../helpers-DnV3N7fU.js';
1
+ import { b as OffscreenOptions, c as OffscreenUnresolvedDefinition, O as OffscreenDefinition } from '../../offscreen-aHdkogKj.js';
2
+ import { e as TransportType, T as TransportName } from '../../transport-Co9Oxp0-.js';
3
+ import { e as export_default$2 } from '../../AbstractBuilder-BN4TmNJG.js';
4
+ import { e as export_default$3 } from '../../RegisterOffscreen-df3W5HqA.js';
5
+ import { e as export_default$4 } from '../../Builder-Bc8US0PY.js';
6
+ import { e as ViewBuilder } from '../../view-u9w7nMgw.js';
7
+ import '../../helpers-YDFORuZz.js';
8
8
  import 'utility-types';
9
- import '../../TransportMessage-BqMzXWZR.js';
10
- import '../../BaseTransport-BdFTZfP0.js';
9
+ import '../../message-jsmkeGHC.js';
10
+ import '../../TransportMessage-CsObvTPq.js';
11
+ import '../../BaseTransport-Ecy2Kzti.js';
12
+ import '../../Message-DFDaS7mV.js';
11
13
  import 'react';
12
14
  import 'html-rspack-tags-plugin';
13
15
 
@@ -197,6 +197,7 @@ var AbstractMessage = class {
197
197
  // src/types/message.ts
198
198
  var MessageGlobalKey = "adnbnMessage";
199
199
  var MessageTypeSeparator = ":";
200
+ var MessageSenderProperty = "_sender";
200
201
 
201
202
  // src/message/MessageManager.ts
202
203
  var MessageManager = class _MessageManager {
@@ -367,23 +368,45 @@ var RegisterTransport_default = class extends BaseTransport_default {
367
368
  }
368
369
  const instance = this.init(...args);
369
370
  this.manager().add(this.name, instance);
370
- this.message().watch(async ({ path, args: args2 }) => {
371
+ this.message().watch(async ({ path, args: args2 }, sender) => {
371
372
  try {
373
+ this.injectSender(instance, sender);
372
374
  const property = path == null ? instance : get(instance, path);
373
375
  if (property === void 0) {
374
376
  throw new Error(`Property not found at path "${path}" in "${this.name}"`);
375
377
  }
378
+ let result;
376
379
  if (typeof property === "function") {
377
- return await property.apply(instance, args2);
380
+ result = await property.apply(instance, args2);
381
+ } else {
382
+ result = property;
378
383
  }
379
- return property;
384
+ this.clearSender(instance);
385
+ return result;
380
386
  } catch (error) {
381
- console.error("register() error", error);
387
+ console.error(`Error during message handler registration for transport "${this.name}"`, error);
388
+ this.clearSender(instance);
382
389
  throw error;
383
390
  }
384
391
  });
385
392
  return instance;
386
393
  }
394
+ injectSender(instance, sender) {
395
+ if (!Object.getOwnPropertyDescriptor(instance, MessageSenderProperty)) {
396
+ Object.defineProperty(instance, MessageSenderProperty, {
397
+ configurable: true,
398
+ enumerable: false,
399
+ writable: true,
400
+ value: void 0
401
+ });
402
+ }
403
+ instance[MessageSenderProperty] = sender;
404
+ }
405
+ clearSender(instance) {
406
+ if (Object.getOwnPropertyDescriptor(instance, MessageSenderProperty)) {
407
+ instance[MessageSenderProperty] = void 0;
408
+ }
409
+ }
387
410
  };
388
411
 
389
412
  // src/offscreen/providers/RegisterOffscreen.ts
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/entry/core/Builder.ts","../../../src/entry/transport/resolvers/definition.ts","../../../src/entry/transport/AbstractBuilder.ts","../../../src/types/offscreen.ts","../../../src/offscreen/utils.ts","../../../src/transport/BaseTransport.ts","../../../src/transport/TransportManager.ts","../../../src/offscreen/OffscreenManager.ts","../../../src/types/locale.ts","../../../src/message/providers/AbstractMessage.ts","../../../src/types/message.ts","../../../src/message/MessageManager.ts","../../../src/message/handlers/AbstractHandler.ts","../../../src/message/handlers/SingleHandler.ts","../../../src/message/handlers/MapHandler.ts","../../../src/message/handlers/GeneralHandler.ts","../../../src/message/providers/Message.ts","../../../src/transport/TransportMessage.ts","../../../src/offscreen/OffscreenMessage.ts","../../../src/transport/RegisterTransport.ts","../../../src/offscreen/providers/RegisterOffscreen.ts","../../../src/entry/offscreen/TransportBuilder.ts","../../../src/entry/offscreen/Builder.ts","../../../src/entry/offscreen/index.ts"],"names":["Language","args","Builder_default"],"mappings":"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","file":"index.js","sourcesContent":["import {EntrypointBuilder, EntrypointConstructorParameter} from \"@typing/entrypoint\";\n\nexport default abstract class implements EntrypointBuilder {\n public abstract build(): Promise<void>;\n\n public abstract destroy(): Promise<void>;\n\n public static resolver<T extends new (definition: any) => EntrypointBuilder>(this: T) {\n return (definition: EntrypointConstructorParameter<T>): void => {\n new this(definition).build().catch(e => {\n console.error(\"Failed to build entrypoint:\", e);\n });\n };\n }\n}\n","import {\n TransportDefinition,\n TransportInitGetter,\n TransportMainHandler,\n TransportOptions,\n TransportType,\n} from \"@typing/transport\";\nimport {RelayDefinition, RelayMainHandler} from \"@typing/relay\";\nimport {OffscreenDefinition, OffscreenMainHandler} from \"@typing/offscreen\";\n\nexport const isValidTransportDefinition = <O extends TransportOptions, T extends TransportType>(\n definition: any\n): definition is TransportDefinition<O, T> & RelayDefinition<T> & OffscreenDefinition<T> => {\n return definition && typeof definition === \"object\" && definition.constructor === Object;\n};\n\nexport const isValidTransportInitFunction = <O extends TransportOptions, T extends TransportType>(\n init: any\n): init is TransportInitGetter<O, T> => {\n return init && typeof init === \"function\";\n};\n\nexport const isValidTransportMainFunction = <O extends TransportOptions, T extends TransportType>(\n main: any\n): main is TransportMainHandler<O, T> & RelayMainHandler<T> & OffscreenMainHandler<T> => {\n return main && typeof main === \"function\";\n};\n\nexport const isValidTransportName = (name: any): name is string => {\n return name && typeof name === \"string\" && name.trim().length > 0;\n};\n","import Builder from \"@entry/core/Builder\";\n\nimport {isValidTransportInitFunction, isValidTransportMainFunction, isValidTransportName} from \"./resolvers\";\n\nimport {\n TransportOptions,\n TransportRegister,\n TransportResolvedDefinition,\n TransportType,\n TransportUnresolvedDefinition,\n} from \"@typing/transport\";\nimport {EntrypointBuilder} from \"@typing/entrypoint\";\n\n// prettier-ignore\nexport default abstract class<\n O extends TransportOptions,\n T extends TransportType = TransportType\n> extends Builder implements EntrypointBuilder {\n protected readonly definition: TransportResolvedDefinition<O, T>;\n\n protected instance?: TransportRegister<T, [O]>;\n\n protected abstract transport(): TransportRegister<T, [O]>;\n\n protected constructor(definition: TransportUnresolvedDefinition<O, T>) {\n super();\n\n const {name, init} = definition;\n\n if (!isValidTransportInitFunction(init)) {\n throw new Error(\"The transport entrypoint must export a init function\");\n }\n\n if (!isValidTransportName(name)) {\n throw new Error(\"The transport entrypoint must export a name string\");\n }\n\n this.definition = {\n ...definition,\n name,\n init,\n };\n }\n\n public get(): T {\n if (!this.instance) {\n throw new Error(\"Before using get function run build() method\");\n }\n\n return this.instance.get();\n }\n\n public async build(): Promise<void> {\n await this.destroy();\n\n const {name, init, main, ...definition} = this.definition;\n\n const options: TransportOptions = {\n name,\n ...definition,\n };\n\n this.instance = this.transport();\n\n this.instance.register(options as O);\n\n if (isValidTransportMainFunction(main)) {\n await main(this.instance.get(), options);\n }\n }\n\n public async destroy(): Promise<void> {\n this.instance?.destroy();\n\n this.instance = undefined;\n }\n}\n","import {TransportConfig, TransportDefinition, TransportType} from \"@typing/transport\";\nimport {ViewOptions} from \"@typing/view\";\nimport {Awaiter} from \"@typing/helpers\";\n\nexport const OffscreenGlobalKey = \"adnbnOffscreen\";\nexport const OffscreenGlobalAccess = \"adnbnOffscreenAccess\";\n\nexport enum OffscreenReason {\n /** A reason used for testing purposes only. */\n Testing = \"TESTING\",\n /** The offscreen document is responsible for playing audio. */\n AudioPlayback = \"AUDIO_PLAYBACK\",\n /** The offscreen document needs to embed and script an iframe in order to modify the iframe's content. */\n IframeScripting = \"IFRAME_SCRIPTING\",\n /** The offscreen document needs to embed an iframe and scrape its DOM to extract information. */\n DOMScraping = \"DOM_SCRAPING\",\n /** The offscreen document needs to interact with Blob objects (including URL.createObjectURL()). */\n Blobs = \"BLOBS\",\n /** The offscreen document needs to use the DOMParser API. */\n DOMParser = \"DOM_PARSER\",\n /** The offscreen document needs to interact with media streams from user media (e.g. getUserMedia()). */\n UserMedia = \"USER_MEDIA\",\n /** The offscreen document needs to interact with media streams from display media (e.g. getDisplayMedia()). */\n DisplayMedia = \"DISPLAY_MEDIA\",\n /** The offscreen document needs to use WebRTC APIs. */\n WebRTC = \"WEB_RTC\",\n /** The offscreen document needs to interact with the clipboard APIs(e.g. Navigator.clipboard). */\n Clipboard = \"CLIPBOARD\",\n /** Specifies that the offscreen document needs access to localStorage. */\n LocalStorage = \"LOCAL_STORAGE\",\n /** Specifies that the offscreen document needs to spawn workers. */\n Workers = \"WORKERS\",\n /** Specifies that the offscreen document needs to use navigator.getBattery. */\n BatteryStatus = \"BATTERY_STATUS\",\n /** Specifies that the offscreen document needs to use window.matchMedia. */\n MatchMedia = \"MATCH_MEDIA\",\n /** Specifies that the offscreen document needs to use navigator.geolocation. */\n Geolocation = \"GEOLOCATION\",\n}\n\nexport interface OffscreenConfig extends TransportConfig {\n reasons?: `${OffscreenReason}` | `${OffscreenReason}`[] | OffscreenReason | OffscreenReason[];\n justification?: string;\n}\n\nexport type OffscreenOptions = OffscreenConfig & ViewOptions;\n\nexport type OffscreenEntrypointOptions = Partial<OffscreenOptions>;\n\nexport type OffscreenMainHandler<T extends TransportType> = (\n offscreen: T,\n options: OffscreenEntrypointOptions\n) => Awaiter<void>;\n\nexport interface OffscreenDefinition<T extends TransportType>\n extends TransportDefinition<OffscreenOptions, T>,\n OffscreenEntrypointOptions {\n main?: OffscreenMainHandler<T>;\n}\n\nexport type OffscreenUnresolvedDefinition<T extends TransportType> = Partial<OffscreenDefinition<T>>;\n","import {OffscreenGlobalAccess} from \"@typing/offscreen\";\n\nexport const isOffscreen = () => {\n return globalThis[OffscreenGlobalAccess] === true;\n};\n","import type {TransportDictionary, TransportManager, TransportName} from \"@typing/transport\";\n\nexport default abstract class<N extends TransportName, T = TransportDictionary[N]> {\n protected constructor(protected readonly name: N) {}\n\n protected abstract manager(): TransportManager;\n\n public get(): T {\n return this.manager().get(this.name);\n }\n\n public destroy(): void {\n this.manager().remove(this.name);\n }\n}\n","import type {TransportDictionary, TransportManager as TransportManagerContract, TransportName} from \"@typing/transport\";\n\nexport default abstract class TransportManager implements TransportManagerContract {\n private items = new Map<TransportName, TransportDictionary[TransportName]>();\n\n public add<K extends TransportName>(name: K, instance: TransportDictionary[K]): this {\n this.items.set(name, instance);\n\n return this;\n }\n\n public get<K extends TransportName>(name: K): TransportDictionary[K] | undefined {\n return this.items.get(name) as TransportDictionary[K] | undefined;\n }\n\n public has(name: TransportName): boolean {\n return this.items.has(name);\n }\n\n public remove<K extends TransportName>(name: K): TransportDictionary[K] | undefined {\n const service = this.get(name);\n\n this.items.delete(name);\n\n return service;\n }\n\n public clear(): this {\n this.items.clear();\n\n return this;\n }\n}\n","import TransportManager from \"@transport/TransportManager\";\n\nimport {OffscreenGlobalKey} from \"@typing/offscreen\";\n\nimport type {TransportManager as TransportManagerContract} from \"@typing/transport\";\n\nexport default class OffscreenManager extends TransportManager {\n public static getInstance(): TransportManagerContract {\n return (globalThis[OffscreenGlobalKey] ??= new OffscreenManager());\n }\n}\n","export enum Language {\n Arabic = \"ar\",\n Amharic = \"am\",\n Bulgarian = \"bg\",\n Bengali = \"bn\",\n Catalan = \"ca\",\n Czech = \"cs\",\n Danish = \"da\",\n German = \"de\",\n Greek = \"el\",\n English = \"en\",\n EnglishAustralia = \"en_AU\",\n EnglishGreatBritain = \"en_GB\",\n EnglishUSA = \"en_US\",\n Spanish = \"es\",\n SpanishLatinAmericaAndCaribbean = \"es_419\",\n Estonian = \"et\",\n Persian = \"fa\",\n Finnish = \"fi\",\n Filipino = \"fil\",\n French = \"fr\",\n Gujarati = \"gu\",\n Hebrew = \"he\",\n Hindi = \"hi\",\n Croatian = \"hr\",\n Hungarian = \"hu\",\n Indonesian = \"id\",\n Italian = \"it\",\n Japanese = \"ja\",\n Kannada = \"kn\",\n Korean = \"ko\",\n Lithuanian = \"lt\",\n Latvian = \"lv\",\n Malayalam = \"ml\",\n Marathi = \"mr\",\n Malay = \"ms\",\n Dutch = \"nl\",\n Norwegian = \"no\",\n Polish = \"pl\",\n PortugueseBrazil = \"pt_BR\",\n PortuguesePortugal = \"pt_PT\",\n Romanian = \"ro\",\n Russian = \"ru\",\n Slovak = \"sk\",\n Slovenian = \"sl\",\n Serbian = \"sr\",\n Swedish = \"sv\",\n Swahili = \"sw\",\n Tamil = \"ta\",\n Telugu = \"te\",\n Thai = \"th\",\n Turkish = \"tr\",\n Ukrainian = \"uk\",\n Vietnamese = \"vi\",\n ChineseChina = \"zh_CN\",\n ChineseTaiwan = \"zh_TW\",\n}\n\nexport enum LocaleDir {\n RightToLeft = \"rtl\",\n LeftToRight = \"ltr\",\n}\n\nexport const RtlLanguages: ReadonlySet<Language> = new Set([Language.Arabic, Language.Persian, Language.Hebrew]);\n\nexport const LocaleNestedKeysSeparator = \".\";\n\nexport const LocaleKeysSeparator = \"_\";\n\nexport const LocaleValuesSeparator = \"|\";\n\nexport const LocaleCustomKeyForLanguage = \"locale\";\n\nexport const LocaleKeyMarker = \"@\";\n\nexport const LanguageCodes: ReadonlySet<string> = new Set(Object.values(Language));\n\nexport const LocaleFileExtensions: ReadonlySet<string> = new Set([\"yaml\", \"yml\", \"json\"]);\n\nexport type LocaleValue = string | number | string[] | number[];\n\nexport type LocaleData = {\n [key: string]: LocaleValue | LocaleData;\n};\n\nexport type LocaleItems = Map<string, string>;\n\nexport type LocaleKeys = ReadonlySet<string>;\n\nexport type LocaleMessages = {\n [key: string]: {\n message: string;\n };\n};\n\nexport interface LocaleBuilder {\n lang(): Language;\n\n merge(data: LocaleData): this;\n\n build(): LocaleMessages;\n\n get(): LocaleItems;\n\n keys(): LocaleKeys;\n\n structure(): LocaleStructure;\n\n isValid(): boolean;\n\n validate(): this;\n}\n\nexport interface LocaleValidator {\n isValid(locale: LocaleBuilder): boolean;\n\n validate(locale: LocaleBuilder): this;\n}\n\nexport interface LocaleFutures {\n plural: boolean;\n substitutions: readonly string[];\n}\n\nexport interface LocaleStructure {\n [key: string]: LocaleFutures;\n}\n\nexport type LocaleNonPluralKeys<T extends LocaleStructure> = {\n [K in keyof T]: T[K] extends {plural: false} ? K : never;\n}[keyof T] &\n string;\n\nexport type LocalePluralKeys<T extends LocaleStructure> = {\n [K in keyof T]: T[K] extends {plural: true} ? K : never;\n}[keyof T] &\n string;\n\nexport type LocaleSubstitutionsFor<T extends LocaleStructure, K extends keyof T> = T[K] extends {\n substitutions: readonly (infer U)[];\n}\n ? Partial<Record<U & string, string | number>>\n : never;\n\nexport interface LocaleProvider<S extends LocaleStructure> {\n lang(): Language;\n\n languages(): Set<Language>;\n\n keys(): ReadonlySet<keyof S>;\n\n // non-plural keys\n trans<K extends LocaleNonPluralKeys<S>>(key: K, substitutions?: LocaleSubstitutionsFor<S, K>): string;\n\n // plural keys\n choice<K extends LocalePluralKeys<S>>(key: K, count: number, substitutions?: LocaleSubstitutionsFor<S, K>): string;\n}\n\nexport interface LocaleDynamicProvider<S extends LocaleStructure> extends LocaleProvider<S> {\n change(lang: Language): Promise<Language>;\n}\n","import {nanoid} from \"nanoid\";\nimport {\n MessageBody,\n MessageData,\n MessageDictionary,\n MessageGeneralHandler,\n MessageMapHandler,\n MessageProvider,\n MessageResponse,\n MessageTargetHandler,\n MessageType,\n} from \"@typing/message\";\n\nexport default abstract class AbstractMessage<T extends MessageDictionary, TOptions>\n implements MessageProvider<T, TOptions>\n{\n public abstract send<K extends MessageType<T>>(\n type: K,\n data: MessageData<T, K>,\n options?: TOptions\n ): Promise<MessageResponse<T, K>>;\n\n public abstract watch<K extends MessageType<T>>(type: K, handler: MessageTargetHandler<T, K>): () => void;\n\n public abstract watch(map: MessageMapHandler<T>): () => void;\n\n public abstract watch<K extends MessageType<T>>(general: MessageGeneralHandler<T, K>): () => void;\n\n protected buildMessage<K extends MessageType<T>>(type: K, data: MessageData<T, K>): MessageBody<T, K> {\n return {\n id: nanoid(),\n type,\n data,\n timestamp: Date.now(),\n };\n }\n}\n","export const MessageGlobalKey = \"adnbnMessage\";\n\nexport const MessageTypeSeparator = \":\";\n\nexport type MessageSender = chrome.runtime.MessageSender;\n\nexport interface MessageDictionary {\n [key: string]: (data: any) => any;\n}\n\nexport type MessageType<T extends MessageDictionary> = Extract<keyof T, string>;\nexport type MessageData<T extends MessageDictionary, K extends MessageType<T>> = Parameters<T[K]>[0];\nexport type MessageResponse<T extends MessageDictionary, K extends MessageType<T>> = ReturnType<T[K]>;\n\nexport type MessageTargetHandler<T extends MessageDictionary, K extends MessageType<T>> = (\n data: MessageData<T, K>,\n sender: MessageSender\n) => MessageResponse<T, K>;\nexport type MessageMapHandler<T extends MessageDictionary> = {[K in MessageType<T>]?: MessageTargetHandler<T, K>};\nexport type MessageGeneralHandler<T extends MessageDictionary, K extends MessageType<T>> = (\n type: K,\n data: MessageData<T, K>,\n sender: MessageSender\n) => any;\n\nexport interface MessageBody<T extends MessageDictionary, K extends MessageType<T>> {\n id: string;\n type: K;\n data: MessageData<T, K>;\n timestamp: number;\n}\n\nexport interface MessageProvider<T extends MessageDictionary, TOptions = void> {\n send<K extends MessageType<T>>(\n type: K,\n data: MessageData<T, K>,\n options?: TOptions\n ): Promise<MessageResponse<T, K>>;\n\n watch<K extends MessageType<T>>(type: K, handler: MessageTargetHandler<T, K>): () => void;\n\n watch(map: MessageMapHandler<T>): () => void;\n\n watch<K extends MessageType<T>>(general: MessageGeneralHandler<T, K>): () => void;\n}\n\nexport interface MessageHandler<T extends MessageDictionary> {\n run(\n type: MessageType<T>,\n data: MessageData<T, MessageType<T>>,\n sender: MessageSender\n ): MessageResponse<T, MessageType<T>> | undefined;\n}\n","import {onMessage} from \"@adnbn/browser\";\n\nimport {\n MessageBody,\n MessageDictionary,\n MessageGlobalKey,\n MessageHandler,\n MessageSender,\n MessageType,\n} from \"@typing/message\";\n\nexport default class MessageManager<T extends MessageDictionary> {\n private handlers: Set<MessageHandler<T>> = new Set();\n private unsubscribe: (() => void) | null = null;\n\n public static getInstance<T extends MessageDictionary>(): MessageManager<T> {\n return (globalThis[MessageGlobalKey] ??= new MessageManager<T>());\n }\n\n constructor() {\n this.listener = this.listener.bind(this);\n }\n\n public add(handler: MessageHandler<T>) {\n this.handlers.add(handler);\n this.updateListener();\n }\n\n public remove(handler: MessageHandler<T>) {\n this.handlers.delete(handler);\n this.updateListener();\n }\n\n public clear() {\n this.handlers = new Set();\n this.updateListener();\n }\n\n private updateListener() {\n if (this.handlers.size > 0 && !this.unsubscribe) {\n this.unsubscribe = onMessage(this.listener);\n } else if (this.handlers.size === 0 && this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n }\n }\n\n private listener<K extends MessageType<T>>(\n message: MessageBody<T, K>,\n sender: MessageSender,\n sendResponse: (response?: any) => void\n ): boolean | void {\n if (!message || typeof message !== \"object\" || !message.type) return;\n\n const results: Promise<any>[] = [];\n\n for (const handler of this.handlers) {\n try {\n const result = handler.run(message.type, message.data, sender);\n if (result !== undefined) {\n results.push(Promise.resolve(result));\n }\n } catch (err) {\n console.error(\"Message handler error:\", err);\n }\n }\n\n if (results.length > 1) {\n throw new Error(\n `Message type \"${message.type}\" has multiple handlers returning a response. Only one response is allowed.`\n );\n }\n\n if (results.length === 1) {\n results[0].then(sendResponse);\n return true;\n }\n }\n}\n","import {\n MessageData,\n MessageDictionary,\n MessageHandler,\n MessageResponse,\n MessageSender,\n MessageType,\n} from \"@typing/message\";\n\nexport default abstract class AbstractHandler<T extends MessageDictionary> implements MessageHandler<T> {\n public abstract run(\n type: MessageType<T>,\n data: MessageData<T, MessageType<T>>,\n sender: MessageSender\n ): MessageResponse<T, MessageType<T>> | undefined;\n}\n","import AbstractHandler from \"./AbstractHandler\";\nimport {\n MessageData,\n MessageDictionary,\n MessageResponse,\n MessageSender,\n MessageTargetHandler,\n MessageType,\n} from \"@typing/message\";\n\nexport default class SingleHandler<T extends MessageDictionary> extends AbstractHandler<T> {\n constructor(\n private messageType: MessageType<T>,\n private handler: MessageTargetHandler<T, MessageType<T>>\n ) {\n super();\n }\n\n public run(\n type: MessageType<T>,\n data: MessageData<T, MessageType<T>>,\n sender: MessageSender\n ): MessageResponse<T, MessageType<T>> | undefined {\n if (type === this.messageType) {\n return this.handler(data, sender);\n }\n }\n}\n","import AbstractHandler from \"./AbstractHandler\";\nimport {\n MessageData,\n MessageDictionary,\n MessageMapHandler,\n MessageResponse,\n MessageSender,\n MessageType,\n} from \"@typing/message\";\n\nexport default class MapHandler<T extends MessageDictionary> extends AbstractHandler<T> {\n constructor(private map: MessageMapHandler<T>) {\n super();\n }\n\n public run(\n type: MessageType<T>,\n data: MessageData<T, MessageType<T>>,\n sender: MessageSender\n ): MessageResponse<T, MessageType<T>> | undefined {\n const handler = this.map[type];\n if (handler) {\n if (typeof handler === \"function\") {\n return handler(data, sender);\n } else {\n throw new Error(`Handler for type \"${type}\" in object of handlers must be a function`);\n }\n }\n }\n}\n","import AbstractHandler from \"./AbstractHandler\";\nimport {\n MessageData,\n MessageDictionary,\n MessageGeneralHandler,\n MessageResponse,\n MessageSender,\n MessageType,\n} from \"@typing/message\";\n\nexport default class GeneralHandler<T extends MessageDictionary, K extends MessageType<T>> extends AbstractHandler<T> {\n constructor(private generalHandler: MessageGeneralHandler<T, K>) {\n super();\n }\n\n public run(\n type: K,\n data: MessageData<T, MessageType<T>>,\n sender: MessageSender\n ): MessageResponse<T, MessageType<T>> | undefined {\n return this.generalHandler(type, data, sender);\n }\n}\n","import {sendMessage, sendTabMessage} from \"@adnbn/browser\";\n\nimport {\n MessageData,\n MessageDictionary,\n MessageGeneralHandler,\n MessageHandler,\n MessageMapHandler,\n MessageResponse,\n MessageTargetHandler,\n MessageType,\n} from \"@typing/message\";\n\nimport AbstractMessage from \"./AbstractMessage\";\nimport MessageManager from \"../MessageManager\";\n\nimport {GeneralHandler, MapHandler, SingleHandler} from \"../handlers\";\n\nexport type MessageSendOptions = number | {tabId: number; frameId?: number; documentId?: string};\n\nexport default class Message<T extends MessageDictionary> extends AbstractMessage<T, MessageSendOptions> {\n private static instance: Message<MessageDictionary> | null = null;\n\n public static getInstance<T extends MessageDictionary>() {\n return (this.instance ??= new Message<T>());\n }\n\n protected get manager(): MessageManager<T> {\n return MessageManager.getInstance<T>();\n }\n\n public send<K extends MessageType<T>>(\n type: K,\n data: MessageData<T, K>,\n options?: MessageSendOptions\n ): Promise<MessageResponse<T, K>> {\n const message = this.buildMessage(type, data);\n\n if (options) {\n if (typeof options === \"number\") {\n return sendTabMessage(options, message);\n }\n\n const {tabId, ...other} = options;\n\n return sendTabMessage(tabId, message, other);\n }\n\n return sendMessage(message);\n }\n\n public watch<K extends MessageType<T>>(\n arg1: K | MessageMapHandler<T> | MessageGeneralHandler<T, K>,\n arg2?: MessageTargetHandler<T, K>\n ): () => void {\n let handler: MessageHandler<T>;\n\n if (typeof arg1 === \"function\") {\n handler = new GeneralHandler<T, K>(arg1);\n } else if (typeof arg1 === \"object\" && arg2 === undefined) {\n handler = new MapHandler<T>(arg1);\n } else if (typeof arg1 === \"string\" && arg2) {\n handler = new SingleHandler<T>(arg1, arg2);\n } else {\n throw new Error(\"Invalid arguments passed to watch()\");\n }\n\n this.manager.add(handler);\n\n return () => this.manager.remove(handler);\n }\n}\n","import {Message, MessageSendOptions} from \"@message/providers\";\n\nimport type {MessageDictionary, MessageProvider} from \"@typing/message\";\nimport type {TransportMessage as TransportMessageContract, TransportMessageData} from \"@typing/transport\";\n\nexport default abstract class TransportMessage implements TransportMessageContract {\n private message: MessageProvider<MessageDictionary, MessageSendOptions> = new Message();\n\n protected abstract readonly key: string;\n\n public async send(data: TransportMessageData) {\n return this.message.send(this.key, data);\n }\n\n public watch(handler: (data: TransportMessageData) => any): void {\n this.message.watch(this.key, handler);\n }\n}\n","import TransportMessage from \"@transport/TransportMessage\";\n\nimport {MessageTypeSeparator} from \"@typing/message\";\n\nexport default class OffscreenMessage extends TransportMessage {\n protected readonly key: string;\n\n constructor(name: string) {\n super();\n\n this.key = `offscreen${MessageTypeSeparator}${name}`;\n }\n}\n","import get from \"get-value\";\n\nimport BaseTransport from \"./BaseTransport\";\n\nimport type {TransportDictionary, TransportMessage, TransportName, TransportRegister} from \"@typing/transport\";\n\n// prettier-ignore\nexport default abstract class<\n N extends TransportName,\n T extends object = TransportDictionary[N],\n A extends any[] = []\n> extends BaseTransport<N, T> implements TransportRegister<T, A> {\n protected constructor(\n name: N,\n protected readonly init: (...args: A) => T\n ) {\n super(name);\n }\n\n protected abstract message(): TransportMessage;\n\n public register(...args: A) {\n if (this.manager().has(this.name)) {\n throw new Error(`A instance with name \"${this.name}\" already exists. The name must be unique.`);\n }\n\n const instance = this.init(...args);\n\n this.manager().add(this.name, instance);\n\n this.message().watch(async ({path, args}) => {\n try {\n const property = path == null ? instance : get(instance, path);\n\n if (property === undefined) {\n throw new Error(`Property not found at path \"${path}\" in \"${this.name}\"`);\n }\n\n if (typeof property === \"function\") {\n return await property.apply(instance, args);\n }\n\n return property;\n } catch (error) {\n console.error(\"register() error\", error);\n\n throw error;\n }\n });\n\n return instance;\n }\n}\n","import RegisterTransport from \"@transport/RegisterTransport\";\n\nimport {isOffscreen} from \"@offscreen/utils\";\n\nimport OffscreenMessage from \"../OffscreenMessage\";\nimport OffscreenManager from \"../OffscreenManager\";\n\nimport type {TransportDictionary, TransportName} from \"@typing/transport\";\n\nexport default class<\n N extends TransportName,\n T extends object = TransportDictionary[N],\n A extends any[] = [],\n> extends RegisterTransport<N, T, A> {\n constructor(\n name: N,\n protected readonly init: (...args: A) => T\n ) {\n super(name, init);\n }\n\n protected message() {\n return new OffscreenMessage(this.name);\n }\n\n protected manager() {\n return OffscreenManager.getInstance();\n }\n\n public get(): T {\n if (!isOffscreen()) {\n throw new Error(`Offscreen service \"${this.name}\" can be getting only from offscreen context.`);\n }\n\n return super.get();\n }\n}\n","import AbstractBuilder from \"@entry/transport/AbstractBuilder\";\n\nimport {RegisterOffscreen} from \"@offscreen/providers\";\n\nimport {OffscreenOptions, OffscreenUnresolvedDefinition} from \"@typing/offscreen\";\nimport {TransportName, TransportType} from \"@typing/transport\";\n\nexport default class<T extends TransportType = TransportType> extends AbstractBuilder<OffscreenOptions, T> {\n constructor(definition: OffscreenUnresolvedDefinition<T>) {\n super(definition);\n }\n\n protected transport(): RegisterOffscreen<TransportName, T, [OffscreenOptions]> {\n const {name, init} = this.definition;\n\n return new RegisterOffscreen(name, init);\n }\n}\n","import TransportBuilder from \"./TransportBuilder\";\n\nimport Builder from \"../core/Builder\";\n\nimport {OffscreenGlobalAccess, OffscreenUnresolvedDefinition} from \"@typing/offscreen\";\nimport {TransportType} from \"@typing/transport\";\nimport {ViewBuilder} from \"@typing/view\";\n\nexport default class<T extends TransportType = TransportType> extends Builder {\n protected readonly _transport: TransportBuilder<T>;\n\n protected _view?: ViewBuilder;\n\n constructor(definition: OffscreenUnresolvedDefinition<T>) {\n super();\n\n this._transport = new TransportBuilder(definition);\n }\n\n public view(view: ViewBuilder): this {\n this._view = view;\n\n return this;\n }\n\n public async build(): Promise<void> {\n await this.destroy();\n\n globalThis[OffscreenGlobalAccess] = true;\n\n await this._transport.build();\n await this._view?.build();\n }\n\n public async destroy(): Promise<void> {\n await this._transport.destroy();\n await this._view?.destroy();\n }\n}\n","import Builder from \"./Builder\";\n\nexport {Builder};\n\nexport default Builder.resolver();\n"]}
1
+ {"version":3,"sources":["../../../src/entry/core/Builder.ts","../../../src/entry/transport/resolvers/definition.ts","../../../src/entry/transport/AbstractBuilder.ts","../../../src/types/offscreen.ts","../../../src/offscreen/utils.ts","../../../src/transport/BaseTransport.ts","../../../src/transport/TransportManager.ts","../../../src/offscreen/OffscreenManager.ts","../../../src/types/locale.ts","../../../src/message/providers/AbstractMessage.ts","../../../src/types/message.ts","../../../src/message/MessageManager.ts","../../../src/message/handlers/AbstractHandler.ts","../../../src/message/handlers/SingleHandler.ts","../../../src/message/handlers/MapHandler.ts","../../../src/message/handlers/GeneralHandler.ts","../../../src/message/providers/Message.ts","../../../src/transport/TransportMessage.ts","../../../src/offscreen/OffscreenMessage.ts","../../../src/transport/RegisterTransport.ts","../../../src/offscreen/providers/RegisterOffscreen.ts","../../../src/entry/offscreen/TransportBuilder.ts","../../../src/entry/offscreen/Builder.ts","../../../src/entry/offscreen/index.ts"],"names":["Language","args","Builder_default"],"mappings":"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","file":"index.js","sourcesContent":["import {EntrypointBuilder, EntrypointConstructorParameter} from \"@typing/entrypoint\";\n\nexport default abstract class implements EntrypointBuilder {\n public abstract build(): Promise<void>;\n\n public abstract destroy(): Promise<void>;\n\n public static resolver<T extends new (definition: any) => EntrypointBuilder>(this: T) {\n return (definition: EntrypointConstructorParameter<T>): void => {\n new this(definition).build().catch(e => {\n console.error(\"Failed to build entrypoint:\", e);\n });\n };\n }\n}\n","import {\n TransportDefinition,\n TransportInitGetter,\n TransportMainHandler,\n TransportOptions,\n TransportType,\n} from \"@typing/transport\";\nimport {RelayDefinition, RelayMainHandler} from \"@typing/relay\";\nimport {OffscreenDefinition, OffscreenMainHandler} from \"@typing/offscreen\";\n\nexport const isValidTransportDefinition = <O extends TransportOptions, T extends TransportType>(\n definition: any\n): definition is TransportDefinition<O, T> & RelayDefinition<T> & OffscreenDefinition<T> => {\n return definition && typeof definition === \"object\" && definition.constructor === Object;\n};\n\nexport const isValidTransportInitFunction = <O extends TransportOptions, T extends TransportType>(\n init: any\n): init is TransportInitGetter<O, T> => {\n return init && typeof init === \"function\";\n};\n\nexport const isValidTransportMainFunction = <O extends TransportOptions, T extends TransportType>(\n main: any\n): main is TransportMainHandler<O, T> & RelayMainHandler<T> & OffscreenMainHandler<T> => {\n return main && typeof main === \"function\";\n};\n\nexport const isValidTransportName = (name: any): name is string => {\n return name && typeof name === \"string\" && name.trim().length > 0;\n};\n","import Builder from \"@entry/core/Builder\";\n\nimport {isValidTransportInitFunction, isValidTransportMainFunction, isValidTransportName} from \"./resolvers\";\n\nimport {\n TransportOptions,\n TransportRegister,\n TransportResolvedDefinition,\n TransportType,\n TransportUnresolvedDefinition,\n} from \"@typing/transport\";\nimport {EntrypointBuilder} from \"@typing/entrypoint\";\n\n// prettier-ignore\nexport default abstract class<\n O extends TransportOptions,\n T extends TransportType = TransportType\n> extends Builder implements EntrypointBuilder {\n protected readonly definition: TransportResolvedDefinition<O, T>;\n\n protected instance?: TransportRegister<T, [O]>;\n\n protected abstract transport(): TransportRegister<T, [O]>;\n\n protected constructor(definition: TransportUnresolvedDefinition<O, T>) {\n super();\n\n const {name, init} = definition;\n\n if (!isValidTransportInitFunction(init)) {\n throw new Error(\"The transport entrypoint must export a init function\");\n }\n\n if (!isValidTransportName(name)) {\n throw new Error(\"The transport entrypoint must export a name string\");\n }\n\n this.definition = {\n ...definition,\n name,\n init,\n };\n }\n\n public get(): T {\n if (!this.instance) {\n throw new Error(\"Before using get function run build() method\");\n }\n\n return this.instance.get();\n }\n\n public async build(): Promise<void> {\n await this.destroy();\n\n const {name, init, main, ...definition} = this.definition;\n\n const options: TransportOptions = {\n name,\n ...definition,\n };\n\n this.instance = this.transport();\n\n this.instance.register(options as O);\n\n if (isValidTransportMainFunction(main)) {\n await main(this.instance.get(), options);\n }\n }\n\n public async destroy(): Promise<void> {\n this.instance?.destroy();\n\n this.instance = undefined;\n }\n}\n","import {TransportConfig, TransportDefinition, TransportType} from \"@typing/transport\";\nimport {ViewOptions} from \"@typing/view\";\nimport {Awaiter} from \"@typing/helpers\";\n\nexport const OffscreenGlobalKey = \"adnbnOffscreen\";\nexport const OffscreenGlobalAccess = \"adnbnOffscreenAccess\";\n\nexport enum OffscreenReason {\n /** A reason used for testing purposes only. */\n Testing = \"TESTING\",\n /** The offscreen document is responsible for playing audio. */\n AudioPlayback = \"AUDIO_PLAYBACK\",\n /** The offscreen document needs to embed and script an iframe in order to modify the iframe's content. */\n IframeScripting = \"IFRAME_SCRIPTING\",\n /** The offscreen document needs to embed an iframe and scrape its DOM to extract information. */\n DOMScraping = \"DOM_SCRAPING\",\n /** The offscreen document needs to interact with Blob objects (including URL.createObjectURL()). */\n Blobs = \"BLOBS\",\n /** The offscreen document needs to use the DOMParser API. */\n DOMParser = \"DOM_PARSER\",\n /** The offscreen document needs to interact with media streams from user media (e.g. getUserMedia()). */\n UserMedia = \"USER_MEDIA\",\n /** The offscreen document needs to interact with media streams from display media (e.g. getDisplayMedia()). */\n DisplayMedia = \"DISPLAY_MEDIA\",\n /** The offscreen document needs to use WebRTC APIs. */\n WebRTC = \"WEB_RTC\",\n /** The offscreen document needs to interact with the clipboard APIs(e.g. Navigator.clipboard). */\n Clipboard = \"CLIPBOARD\",\n /** Specifies that the offscreen document needs access to localStorage. */\n LocalStorage = \"LOCAL_STORAGE\",\n /** Specifies that the offscreen document needs to spawn workers. */\n Workers = \"WORKERS\",\n /** Specifies that the offscreen document needs to use navigator.getBattery. */\n BatteryStatus = \"BATTERY_STATUS\",\n /** Specifies that the offscreen document needs to use window.matchMedia. */\n MatchMedia = \"MATCH_MEDIA\",\n /** Specifies that the offscreen document needs to use navigator.geolocation. */\n Geolocation = \"GEOLOCATION\",\n}\n\nexport interface OffscreenConfig extends TransportConfig {\n reasons?: `${OffscreenReason}` | `${OffscreenReason}`[] | OffscreenReason | OffscreenReason[];\n justification?: string;\n}\n\nexport type OffscreenOptions = OffscreenConfig & ViewOptions;\n\nexport type OffscreenEntrypointOptions = Partial<OffscreenOptions>;\n\nexport type OffscreenMainHandler<T extends TransportType> = (\n offscreen: T,\n options: OffscreenEntrypointOptions\n) => Awaiter<void>;\n\nexport interface OffscreenDefinition<T extends TransportType>\n extends TransportDefinition<OffscreenOptions, T>,\n OffscreenEntrypointOptions {\n main?: OffscreenMainHandler<T>;\n}\n\nexport type OffscreenUnresolvedDefinition<T extends TransportType> = Partial<OffscreenDefinition<T>>;\n","import {OffscreenGlobalAccess} from \"@typing/offscreen\";\n\nexport const isOffscreen = () => {\n return globalThis[OffscreenGlobalAccess] === true;\n};\n","import type {TransportDictionary, TransportManager, TransportName} from \"@typing/transport\";\n\nexport default abstract class<N extends TransportName, T = TransportDictionary[N]> {\n protected constructor(protected readonly name: N) {}\n\n protected abstract manager(): TransportManager;\n\n public get(): T {\n return this.manager().get(this.name);\n }\n\n public destroy(): void {\n this.manager().remove(this.name);\n }\n}\n","import type {TransportDictionary, TransportManager as TransportManagerContract, TransportName} from \"@typing/transport\";\n\nexport default abstract class TransportManager implements TransportManagerContract {\n private items = new Map<TransportName, TransportDictionary[TransportName]>();\n\n public add<K extends TransportName>(name: K, instance: TransportDictionary[K]): this {\n this.items.set(name, instance);\n\n return this;\n }\n\n public get<K extends TransportName>(name: K): TransportDictionary[K] | undefined {\n return this.items.get(name) as TransportDictionary[K] | undefined;\n }\n\n public has(name: TransportName): boolean {\n return this.items.has(name);\n }\n\n public remove<K extends TransportName>(name: K): TransportDictionary[K] | undefined {\n const service = this.get(name);\n\n this.items.delete(name);\n\n return service;\n }\n\n public clear(): this {\n this.items.clear();\n\n return this;\n }\n}\n","import TransportManager from \"@transport/TransportManager\";\n\nimport {OffscreenGlobalKey} from \"@typing/offscreen\";\n\nimport type {TransportManager as TransportManagerContract} from \"@typing/transport\";\n\nexport default class OffscreenManager extends TransportManager {\n public static getInstance(): TransportManagerContract {\n return (globalThis[OffscreenGlobalKey] ??= new OffscreenManager());\n }\n}\n","export enum Language {\n Arabic = \"ar\",\n Amharic = \"am\",\n Bulgarian = \"bg\",\n Bengali = \"bn\",\n Catalan = \"ca\",\n Czech = \"cs\",\n Danish = \"da\",\n German = \"de\",\n Greek = \"el\",\n English = \"en\",\n EnglishAustralia = \"en_AU\",\n EnglishGreatBritain = \"en_GB\",\n EnglishUSA = \"en_US\",\n Spanish = \"es\",\n SpanishLatinAmericaAndCaribbean = \"es_419\",\n Estonian = \"et\",\n Persian = \"fa\",\n Finnish = \"fi\",\n Filipino = \"fil\",\n French = \"fr\",\n Gujarati = \"gu\",\n Hebrew = \"he\",\n Hindi = \"hi\",\n Croatian = \"hr\",\n Hungarian = \"hu\",\n Indonesian = \"id\",\n Italian = \"it\",\n Japanese = \"ja\",\n Kannada = \"kn\",\n Korean = \"ko\",\n Lithuanian = \"lt\",\n Latvian = \"lv\",\n Malayalam = \"ml\",\n Marathi = \"mr\",\n Malay = \"ms\",\n Dutch = \"nl\",\n Norwegian = \"no\",\n Polish = \"pl\",\n PortugueseBrazil = \"pt_BR\",\n PortuguesePortugal = \"pt_PT\",\n Romanian = \"ro\",\n Russian = \"ru\",\n Slovak = \"sk\",\n Slovenian = \"sl\",\n Serbian = \"sr\",\n Swedish = \"sv\",\n Swahili = \"sw\",\n Tamil = \"ta\",\n Telugu = \"te\",\n Thai = \"th\",\n Turkish = \"tr\",\n Ukrainian = \"uk\",\n Vietnamese = \"vi\",\n ChineseChina = \"zh_CN\",\n ChineseTaiwan = \"zh_TW\",\n}\n\nexport enum LocaleDir {\n RightToLeft = \"rtl\",\n LeftToRight = \"ltr\",\n}\n\nexport const RtlLanguages: ReadonlySet<Language> = new Set([Language.Arabic, Language.Persian, Language.Hebrew]);\n\nexport const LocaleNestedKeysSeparator = \".\";\n\nexport const LocaleKeysSeparator = \"_\";\n\nexport const LocaleValuesSeparator = \"|\";\n\nexport const LocaleCustomKeyForLanguage = \"locale\";\n\nexport const LocaleKeyMarker = \"@\";\n\nexport const LanguageCodes: ReadonlySet<string> = new Set(Object.values(Language));\n\nexport const LocaleFileExtensions: ReadonlySet<string> = new Set([\"yaml\", \"yml\", \"json\"]);\n\nexport type LocaleValue = string | number | string[] | number[];\n\nexport type LocaleData = {\n [key: string]: LocaleValue | LocaleData;\n};\n\nexport type LocaleItems = Map<string, string>;\n\nexport type LocaleKeys = ReadonlySet<string>;\n\nexport type LocaleMessages = {\n [key: string]: {\n message: string;\n };\n};\n\nexport interface LocaleBuilder {\n lang(): Language;\n\n merge(data: LocaleData): this;\n\n build(): LocaleMessages;\n\n get(): LocaleItems;\n\n keys(): LocaleKeys;\n\n structure(): LocaleStructure;\n\n isValid(): boolean;\n\n validate(): this;\n}\n\nexport interface LocaleValidator {\n isValid(locale: LocaleBuilder): boolean;\n\n validate(locale: LocaleBuilder): this;\n}\n\nexport interface LocaleFutures {\n plural: boolean;\n substitutions: readonly string[];\n}\n\nexport interface LocaleStructure {\n [key: string]: LocaleFutures;\n}\n\nexport type LocaleNonPluralKeys<T extends LocaleStructure> = {\n [K in keyof T]: T[K] extends {plural: false} ? K : never;\n}[keyof T] &\n string;\n\nexport type LocalePluralKeys<T extends LocaleStructure> = {\n [K in keyof T]: T[K] extends {plural: true} ? K : never;\n}[keyof T] &\n string;\n\nexport type LocaleSubstitutionsFor<T extends LocaleStructure, K extends keyof T> = T[K] extends {\n substitutions: readonly (infer U)[];\n}\n ? Partial<Record<U & string, string | number>>\n : never;\n\nexport interface LocaleProvider<S extends LocaleStructure> {\n lang(): Language;\n\n languages(): Set<Language>;\n\n keys(): ReadonlySet<keyof S>;\n\n // non-plural keys\n trans<K extends LocaleNonPluralKeys<S>>(key: K, substitutions?: LocaleSubstitutionsFor<S, K>): string;\n\n // plural keys\n choice<K extends LocalePluralKeys<S>>(key: K, count: number, substitutions?: LocaleSubstitutionsFor<S, K>): string;\n}\n\nexport interface LocaleDynamicProvider<S extends LocaleStructure> extends LocaleProvider<S> {\n change(lang: Language): Promise<Language>;\n}\n","import {nanoid} from \"nanoid\";\nimport {\n MessageBody,\n MessageData,\n MessageDictionary,\n MessageGeneralHandler,\n MessageMapHandler,\n MessageProvider,\n MessageResponse,\n MessageTargetHandler,\n MessageType,\n} from \"@typing/message\";\n\nexport default abstract class AbstractMessage<T extends MessageDictionary, TOptions>\n implements MessageProvider<T, TOptions>\n{\n public abstract send<K extends MessageType<T>>(\n type: K,\n data: MessageData<T, K>,\n options?: TOptions\n ): Promise<MessageResponse<T, K>>;\n\n public abstract watch<K extends MessageType<T>>(type: K, handler: MessageTargetHandler<T, K>): () => void;\n\n public abstract watch(map: MessageMapHandler<T>): () => void;\n\n public abstract watch<K extends MessageType<T>>(general: MessageGeneralHandler<T, K>): () => void;\n\n protected buildMessage<K extends MessageType<T>>(type: K, data: MessageData<T, K>): MessageBody<T, K> {\n return {\n id: nanoid(),\n type,\n data,\n timestamp: Date.now(),\n };\n }\n}\n","export const MessageGlobalKey = \"adnbnMessage\";\n\nexport const MessageTypeSeparator = \":\";\n\nexport const MessageSenderProperty = \"_sender\";\n\nexport type MessageSender = chrome.runtime.MessageSender;\n\nexport interface MessageDictionary {\n [key: string]: (data: any) => any;\n}\n\nexport interface MessageSenderAware {\n [MessageSenderProperty]?: MessageSender;\n}\n\nexport type MessageType<T extends MessageDictionary> = Extract<keyof T, string>;\nexport type MessageData<T extends MessageDictionary, K extends MessageType<T>> = Parameters<T[K]>[0];\nexport type MessageResponse<T extends MessageDictionary, K extends MessageType<T>> = ReturnType<T[K]>;\n\nexport type MessageTargetHandler<T extends MessageDictionary, K extends MessageType<T>> = (\n data: MessageData<T, K>,\n sender: MessageSender\n) => MessageResponse<T, K>;\nexport type MessageMapHandler<T extends MessageDictionary> = {[K in MessageType<T>]?: MessageTargetHandler<T, K>};\nexport type MessageGeneralHandler<T extends MessageDictionary, K extends MessageType<T>> = (\n type: K,\n data: MessageData<T, K>,\n sender: MessageSender\n) => any;\n\nexport interface MessageBody<T extends MessageDictionary, K extends MessageType<T>> {\n id: string;\n type: K;\n data: MessageData<T, K>;\n timestamp: number;\n}\n\nexport interface MessageProvider<T extends MessageDictionary, TOptions = void> {\n send<K extends MessageType<T>>(\n type: K,\n data: MessageData<T, K>,\n options?: TOptions\n ): Promise<MessageResponse<T, K>>;\n\n watch<K extends MessageType<T>>(type: K, handler: MessageTargetHandler<T, K>): () => void;\n\n watch(map: MessageMapHandler<T>): () => void;\n\n watch<K extends MessageType<T>>(general: MessageGeneralHandler<T, K>): () => void;\n}\n\nexport interface MessageHandler<T extends MessageDictionary> {\n run(\n type: MessageType<T>,\n data: MessageData<T, MessageType<T>>,\n sender: MessageSender\n ): MessageResponse<T, MessageType<T>> | undefined;\n}\n","import {onMessage} from \"@adnbn/browser\";\n\nimport {\n MessageBody,\n MessageDictionary,\n MessageGlobalKey,\n MessageHandler,\n MessageSender,\n MessageType,\n} from \"@typing/message\";\n\nexport default class MessageManager<T extends MessageDictionary> {\n private handlers: Set<MessageHandler<T>> = new Set();\n private unsubscribe: (() => void) | null = null;\n\n public static getInstance<T extends MessageDictionary>(): MessageManager<T> {\n return (globalThis[MessageGlobalKey] ??= new MessageManager<T>());\n }\n\n constructor() {\n this.listener = this.listener.bind(this);\n }\n\n public add(handler: MessageHandler<T>) {\n this.handlers.add(handler);\n this.updateListener();\n }\n\n public remove(handler: MessageHandler<T>) {\n this.handlers.delete(handler);\n this.updateListener();\n }\n\n public clear() {\n this.handlers = new Set();\n this.updateListener();\n }\n\n private updateListener() {\n if (this.handlers.size > 0 && !this.unsubscribe) {\n this.unsubscribe = onMessage(this.listener);\n } else if (this.handlers.size === 0 && this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n }\n }\n\n private listener<K extends MessageType<T>>(\n message: MessageBody<T, K>,\n sender: MessageSender,\n sendResponse: (response?: any) => void\n ): boolean | void {\n if (!message || typeof message !== \"object\" || !message.type) return;\n\n const results: Promise<any>[] = [];\n\n for (const handler of this.handlers) {\n try {\n const result = handler.run(message.type, message.data, sender);\n if (result !== undefined) {\n results.push(Promise.resolve(result));\n }\n } catch (err) {\n console.error(\"Message handler error:\", err);\n }\n }\n\n if (results.length > 1) {\n throw new Error(\n `Message type \"${message.type}\" has multiple handlers returning a response. Only one response is allowed.`\n );\n }\n\n if (results.length === 1) {\n results[0].then(sendResponse);\n return true;\n }\n }\n}\n","import {\n MessageData,\n MessageDictionary,\n MessageHandler,\n MessageResponse,\n MessageSender,\n MessageType,\n} from \"@typing/message\";\n\nexport default abstract class AbstractHandler<T extends MessageDictionary> implements MessageHandler<T> {\n public abstract run(\n type: MessageType<T>,\n data: MessageData<T, MessageType<T>>,\n sender: MessageSender\n ): MessageResponse<T, MessageType<T>> | undefined;\n}\n","import AbstractHandler from \"./AbstractHandler\";\nimport {\n MessageData,\n MessageDictionary,\n MessageResponse,\n MessageSender,\n MessageTargetHandler,\n MessageType,\n} from \"@typing/message\";\n\nexport default class SingleHandler<T extends MessageDictionary> extends AbstractHandler<T> {\n constructor(\n private messageType: MessageType<T>,\n private handler: MessageTargetHandler<T, MessageType<T>>\n ) {\n super();\n }\n\n public run(\n type: MessageType<T>,\n data: MessageData<T, MessageType<T>>,\n sender: MessageSender\n ): MessageResponse<T, MessageType<T>> | undefined {\n if (type === this.messageType) {\n return this.handler(data, sender);\n }\n }\n}\n","import AbstractHandler from \"./AbstractHandler\";\nimport {\n MessageData,\n MessageDictionary,\n MessageMapHandler,\n MessageResponse,\n MessageSender,\n MessageType,\n} from \"@typing/message\";\n\nexport default class MapHandler<T extends MessageDictionary> extends AbstractHandler<T> {\n constructor(private map: MessageMapHandler<T>) {\n super();\n }\n\n public run(\n type: MessageType<T>,\n data: MessageData<T, MessageType<T>>,\n sender: MessageSender\n ): MessageResponse<T, MessageType<T>> | undefined {\n const handler = this.map[type];\n if (handler) {\n if (typeof handler === \"function\") {\n return handler(data, sender);\n } else {\n throw new Error(`Handler for type \"${type}\" in object of handlers must be a function`);\n }\n }\n }\n}\n","import AbstractHandler from \"./AbstractHandler\";\nimport {\n MessageData,\n MessageDictionary,\n MessageGeneralHandler,\n MessageResponse,\n MessageSender,\n MessageType,\n} from \"@typing/message\";\n\nexport default class GeneralHandler<T extends MessageDictionary, K extends MessageType<T>> extends AbstractHandler<T> {\n constructor(private generalHandler: MessageGeneralHandler<T, K>) {\n super();\n }\n\n public run(\n type: K,\n data: MessageData<T, MessageType<T>>,\n sender: MessageSender\n ): MessageResponse<T, MessageType<T>> | undefined {\n return this.generalHandler(type, data, sender);\n }\n}\n","import {sendMessage, sendTabMessage} from \"@adnbn/browser\";\n\nimport {\n MessageData,\n MessageDictionary,\n MessageGeneralHandler,\n MessageHandler,\n MessageMapHandler,\n MessageResponse,\n MessageTargetHandler,\n MessageType,\n} from \"@typing/message\";\n\nimport AbstractMessage from \"./AbstractMessage\";\nimport MessageManager from \"../MessageManager\";\n\nimport {GeneralHandler, MapHandler, SingleHandler} from \"../handlers\";\n\nexport type MessageSendOptions = number | {tabId: number; frameId?: number; documentId?: string};\n\nexport default class Message<T extends MessageDictionary> extends AbstractMessage<T, MessageSendOptions> {\n private static instance: Message<MessageDictionary> | null = null;\n\n public static getInstance<T extends MessageDictionary>() {\n return (this.instance ??= new Message<T>());\n }\n\n protected get manager(): MessageManager<T> {\n return MessageManager.getInstance<T>();\n }\n\n public send<K extends MessageType<T>>(\n type: K,\n data: MessageData<T, K>,\n options?: MessageSendOptions\n ): Promise<MessageResponse<T, K>> {\n const message = this.buildMessage(type, data);\n\n if (options) {\n if (typeof options === \"number\") {\n return sendTabMessage(options, message);\n }\n\n const {tabId, ...other} = options;\n\n return sendTabMessage(tabId, message, other);\n }\n\n return sendMessage(message);\n }\n\n public watch<K extends MessageType<T>>(\n arg1: K | MessageMapHandler<T> | MessageGeneralHandler<T, K>,\n arg2?: MessageTargetHandler<T, K>\n ): () => void {\n let handler: MessageHandler<T>;\n\n if (typeof arg1 === \"function\") {\n handler = new GeneralHandler<T, K>(arg1);\n } else if (typeof arg1 === \"object\" && arg2 === undefined) {\n handler = new MapHandler<T>(arg1);\n } else if (typeof arg1 === \"string\" && arg2) {\n handler = new SingleHandler<T>(arg1, arg2);\n } else {\n throw new Error(\"Invalid arguments passed to watch()\");\n }\n\n this.manager.add(handler);\n\n return () => this.manager.remove(handler);\n }\n}\n","import {Message, MessageSendOptions} from \"@message/providers\";\n\nimport {MessageDictionary, MessageProvider, MessageSender} from \"@typing/message\";\nimport type {TransportMessage as TransportMessageContract, TransportMessageData} from \"@typing/transport\";\n\nexport default abstract class TransportMessage implements TransportMessageContract {\n protected message: MessageProvider<MessageDictionary, MessageSendOptions> = new Message();\n\n protected abstract readonly key: string;\n\n public async send(data: TransportMessageData) {\n return this.message.send(this.key, data);\n }\n\n public watch(handler: (data: TransportMessageData, sender: MessageSender) => any): void {\n this.message.watch(this.key, handler);\n }\n}\n","import TransportMessage from \"@transport/TransportMessage\";\n\nimport {MessageTypeSeparator} from \"@typing/message\";\n\nexport default class OffscreenMessage extends TransportMessage {\n protected readonly key: string;\n\n constructor(name: string) {\n super();\n\n this.key = `offscreen${MessageTypeSeparator}${name}`;\n }\n}\n","import get from \"get-value\";\n\nimport BaseTransport from \"./BaseTransport\";\n\nimport {TransportDictionary, TransportMessage, TransportName, TransportRegister} from \"@typing/transport\";\nimport {MessageSender, MessageSenderProperty} from \"@typing/message\";\n\n// prettier-ignore\nexport default abstract class<\n N extends TransportName,\n T extends object = TransportDictionary[N],\n A extends any[] = []\n> extends BaseTransport<N, T> implements TransportRegister<T, A> {\n protected constructor(\n name: N,\n protected readonly init: (...args: A) => T\n ) {\n super(name);\n }\n\n protected abstract message(): TransportMessage;\n\n public register(...args: A) {\n if (this.manager().has(this.name)) {\n throw new Error(`A instance with name \"${this.name}\" already exists. The name must be unique.`);\n }\n\n const instance = this.init(...args);\n\n this.manager().add(this.name, instance);\n\n this.message().watch(async ({path, args}, sender) => {\n try {\n this.injectSender(instance, sender);\n\n const property = path == null ? instance : get(instance, path);\n\n if (property === undefined) {\n throw new Error(`Property not found at path \"${path}\" in \"${this.name}\"`);\n }\n\n let result: any;\n\n if (typeof property === \"function\") {\n result = await property.apply(instance, args);\n } else {\n result = property;\n }\n\n this.clearSender(instance);\n\n return result;\n } catch (error) {\n console.error(`Error during message handler registration for transport \"${this.name}\"`, error);\n\n this.clearSender(instance);\n\n throw error;\n }\n });\n\n return instance;\n }\n\n private injectSender(instance: T, sender: MessageSender): void {\n if (!Object.getOwnPropertyDescriptor(instance, MessageSenderProperty)) {\n Object.defineProperty(instance, MessageSenderProperty, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: undefined,\n });\n }\n\n (instance as any)[MessageSenderProperty] = sender;\n }\n\n private clearSender(instance: T): void {\n if (Object.getOwnPropertyDescriptor(instance, MessageSenderProperty)) {\n (instance as any)[MessageSenderProperty] = undefined;\n }\n }\n}\n","import RegisterTransport from \"@transport/RegisterTransport\";\n\nimport {isOffscreen} from \"@offscreen/utils\";\n\nimport OffscreenMessage from \"../OffscreenMessage\";\nimport OffscreenManager from \"../OffscreenManager\";\n\nimport type {TransportDictionary, TransportName} from \"@typing/transport\";\n\nexport default class<\n N extends TransportName,\n T extends object = TransportDictionary[N],\n A extends any[] = [],\n> extends RegisterTransport<N, T, A> {\n constructor(\n name: N,\n protected readonly init: (...args: A) => T\n ) {\n super(name, init);\n }\n\n protected message() {\n return new OffscreenMessage(this.name);\n }\n\n protected manager() {\n return OffscreenManager.getInstance();\n }\n\n public get(): T {\n if (!isOffscreen()) {\n throw new Error(`Offscreen service \"${this.name}\" can be getting only from offscreen context.`);\n }\n\n return super.get();\n }\n}\n","import AbstractBuilder from \"@entry/transport/AbstractBuilder\";\n\nimport {RegisterOffscreen} from \"@offscreen/providers\";\n\nimport {OffscreenOptions, OffscreenUnresolvedDefinition} from \"@typing/offscreen\";\nimport {TransportName, TransportType} from \"@typing/transport\";\n\nexport default class<T extends TransportType = TransportType> extends AbstractBuilder<OffscreenOptions, T> {\n constructor(definition: OffscreenUnresolvedDefinition<T>) {\n super(definition);\n }\n\n protected transport(): RegisterOffscreen<TransportName, T, [OffscreenOptions]> {\n const {name, init} = this.definition;\n\n return new RegisterOffscreen(name, init);\n }\n}\n","import TransportBuilder from \"./TransportBuilder\";\n\nimport Builder from \"../core/Builder\";\n\nimport {OffscreenGlobalAccess, OffscreenUnresolvedDefinition} from \"@typing/offscreen\";\nimport {TransportType} from \"@typing/transport\";\nimport {ViewBuilder} from \"@typing/view\";\n\nexport default class<T extends TransportType = TransportType> extends Builder {\n protected readonly _transport: TransportBuilder<T>;\n\n protected _view?: ViewBuilder;\n\n constructor(definition: OffscreenUnresolvedDefinition<T>) {\n super();\n\n this._transport = new TransportBuilder(definition);\n }\n\n public view(view: ViewBuilder): this {\n this._view = view;\n\n return this;\n }\n\n public async build(): Promise<void> {\n await this.destroy();\n\n globalThis[OffscreenGlobalAccess] = true;\n\n await this._transport.build();\n await this._view?.build();\n }\n\n public async destroy(): Promise<void> {\n await this._transport.destroy();\n await this._view?.destroy();\n }\n}\n","import Builder from \"./Builder\";\n\nexport {Builder};\n\nexport default Builder.resolver();\n"]}
@@ -1,12 +1,13 @@
1
- import { b as RelayOptions, c as RelayUnresolvedDefinition, R as RelayDefinition } from '../../relay-BYeTCwKO.mjs';
2
- import { e as TransportType, T as TransportName } from '../../transport-B_uYwoGi.mjs';
3
- import { e as export_default$2 } from '../../AbstractBuilder-Ce5zNRXr.mjs';
4
- import { e as export_default$3 } from '../../RegisterRelay-MEVSR1sP.mjs';
5
- import { e as export_default$4 } from '../../Builder-CCyBD4hF.mjs';
6
- import { f as ContentScriptBuilder } from '../../content-BYoXVO6V.mjs';
7
- import '../../helpers-DnV3N7fU.mjs';
1
+ import { b as RelayOptions, c as RelayUnresolvedDefinition, R as RelayDefinition } from '../../relay-vaJ5R2iC.mjs';
2
+ import { e as TransportType, T as TransportName } from '../../transport-BrbirhXv.mjs';
3
+ import { e as export_default$2 } from '../../AbstractBuilder-C81kWZzQ.mjs';
4
+ import { e as export_default$3 } from '../../RegisterRelay-DCVZ2_NI.mjs';
5
+ import { e as export_default$4 } from '../../Builder-Df1LUO_f.mjs';
6
+ import { f as ContentScriptBuilder } from '../../content-DrrPH4ri.mjs';
7
+ import '../../helpers-YDFORuZz.mjs';
8
8
  import 'utility-types';
9
- import '../../BaseTransport-C7uEgfUu.mjs';
9
+ import '../../message-jsmkeGHC.mjs';
10
+ import '../../BaseTransport-DNZ28gFF.mjs';
10
11
  import 'react';
11
12
 
12
13
  declare class export_default$1<T extends TransportType = TransportType> extends export_default$2<RelayOptions, T> {