adnbn 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/dist/cli/builders/locale/FirefoxLocaleValidator.d.ts +10 -0
  2. package/dist/cli/builders/locale/FirefoxLocaleValidator.js +13 -0
  3. package/dist/cli/builders/locale/FirefoxLocaleValidator.js.map +1 -0
  4. package/dist/cli/builders/locale/OperaLocaleValidator.d.ts +10 -0
  5. package/dist/cli/builders/locale/OperaLocaleValidator.js +13 -0
  6. package/dist/cli/builders/locale/OperaLocaleValidator.js.map +1 -0
  7. package/dist/cli/builders/locale/index.d.ts +2 -0
  8. package/dist/cli/builders/locale/index.js +14 -2
  9. package/dist/cli/builders/locale/index.js.map +1 -1
  10. package/dist/cli/plugins/index.d.ts +1 -1
  11. package/dist/cli/plugins/typescript/TypescriptConfig.d.ts +5 -0
  12. package/dist/cli/plugins/typescript/TypescriptConfig.js +21 -21
  13. package/dist/cli/plugins/typescript/TypescriptConfig.js.map +1 -1
  14. package/dist/cli/plugins/typescript/declaration/index.d.ts +1 -1
  15. package/dist/cli/plugins/typescript/declaration/index.js +1 -4
  16. package/dist/cli/plugins/typescript/declaration/index.js.map +1 -1
  17. package/dist/cli/plugins/typescript/declaration/vendor/VendorDeclaration.d.ts +21 -0
  18. package/dist/cli/plugins/typescript/declaration/vendor/VendorDeclaration.js +19 -0
  19. package/dist/cli/plugins/typescript/declaration/vendor/VendorDeclaration.js.map +1 -0
  20. package/dist/cli/plugins/typescript/declaration/vendor/index.d.ts +13 -0
  21. package/dist/cli/plugins/typescript/declaration/vendor/index.js +5 -0
  22. package/dist/cli/plugins/typescript/declaration/vendor/index.js.map +1 -0
  23. package/dist/cli/plugins/typescript/declaration/vendor/vendor.d.ts +13 -0
  24. package/dist/cli/plugins/typescript/index.d.ts +1 -1
  25. package/dist/cli/virtual/index.js +8 -8
  26. package/dist/cli/virtual/virtual.d.ts +110 -0
  27. package/dist/entry/command/Builder.js +3 -5
  28. package/dist/entry/command/Builder.js.map +1 -1
  29. package/dist/index.d.ts +1 -1
  30. package/dist/locale/index.d.ts +1 -1
  31. package/dist/locale/providers/DynamicLocale.d.ts +1 -1
  32. package/dist/locale/providers/DynamicLocale.js +1 -1
  33. package/dist/locale/providers/DynamicLocale.js.map +1 -1
  34. package/dist/locale/providers/NativeLocale.js +1 -1
  35. package/dist/locale/providers/NativeLocale.js.map +1 -1
  36. package/dist/locale/providers/index.d.ts +1 -1
  37. package/dist/main/icon.js +1 -1
  38. package/dist/main/icon.js.map +1 -1
  39. package/dist/main/index.d.ts +1 -1
  40. package/dist/main/page.js +1 -1
  41. package/dist/main/page.js.map +1 -1
  42. package/dist/main/popup.js +1 -1
  43. package/dist/main/popup.js.map +1 -1
  44. package/dist/main/relay.d.ts +1 -1
  45. package/dist/main/sidebar.js +1 -1
  46. package/dist/main/sidebar.js.map +1 -1
  47. package/dist/message/MessageManager.js +1 -1
  48. package/dist/message/MessageManager.js.map +1 -1
  49. package/dist/message/providers/Message.js +1 -1
  50. package/dist/message/providers/Message.js.map +1 -1
  51. package/dist/offscreen/OffscreenBridge.js +1 -1
  52. package/dist/offscreen/OffscreenBridge.js.map +1 -1
  53. package/dist/offscreen/providers/ProxyOffscreen.js +1 -1
  54. package/dist/offscreen/providers/ProxyOffscreen.js.map +1 -1
  55. package/dist/relay/RelayPermission.js +1 -1
  56. package/dist/relay/RelayPermission.js.map +1 -1
  57. package/dist/relay/index.d.ts +1 -1
  58. package/dist/relay/providers/ProxyRelay.d.ts +1 -1
  59. package/dist/relay/providers/ProxyRelay.js +1 -1
  60. package/dist/relay/providers/ProxyRelay.js.map +1 -1
  61. package/dist/relay/providers/index.d.ts +1 -1
  62. package/dist/service/providers/ProxyService.js +1 -1
  63. package/dist/service/providers/ProxyService.js.map +1 -1
  64. package/dist/service/providers/RegisterService.js +1 -1
  65. package/dist/service/providers/RegisterService.js.map +1 -1
  66. package/dist/service/providers/Service.js +1 -1
  67. package/dist/service/providers/Service.js.map +1 -1
  68. package/package.json +59 -48
  69. package/bin/.idea/bin.iml +0 -12
  70. package/bin/.idea/modules.xml +0 -8
  71. package/bin/.idea/vcs.xml +0 -6
  72. package/bin/.idea/workspace.xml +0 -49
  73. package/dist/cli/plugins/typescript/declaration/VendorDeclaration.d.ts +0 -20
  74. package/dist/cli/plugins/typescript/declaration/VendorDeclaration.js +0 -19
  75. package/dist/cli/plugins/typescript/declaration/VendorDeclaration.js.map +0 -1
  76. package/dist/storage/adapters/react/index.d.ts +0 -2
  77. package/dist/storage/adapters/react/index.js +0 -5
  78. package/dist/storage/adapters/react/index.js.map +0 -1
  79. package/dist/storage/adapters/react/useStorage.d.ts +0 -12
  80. package/dist/storage/adapters/react/useStorage.js +0 -49
  81. package/dist/storage/adapters/react/useStorage.js.map +0 -1
  82. package/dist/storage/index.d.ts +0 -5
  83. package/dist/storage/index.js +0 -3
  84. package/dist/storage/index.js.map +0 -1
  85. package/dist/storage/providers/AbstractStorage.d.ts +0 -52
  86. package/dist/storage/providers/AbstractStorage.js +0 -136
  87. package/dist/storage/providers/AbstractStorage.js.map +0 -1
  88. package/dist/storage/providers/MonoStorage.d.ts +0 -18
  89. package/dist/storage/providers/MonoStorage.js +0 -112
  90. package/dist/storage/providers/MonoStorage.js.map +0 -1
  91. package/dist/storage/providers/SecureStorage.d.ts +0 -25
  92. package/dist/storage/providers/SecureStorage.js +0 -85
  93. package/dist/storage/providers/SecureStorage.js.map +0 -1
  94. package/dist/storage/providers/Storage.d.ts +0 -14
  95. package/dist/storage/providers/Storage.js +0 -29
  96. package/dist/storage/providers/Storage.js.map +0 -1
  97. package/dist/storage/providers/index.d.ts +0 -5
  98. package/dist/storage/providers/index.js +0 -9
  99. package/dist/storage/providers/index.js.map +0 -1
  100. package/dist/types/storage.d.ts +0 -14
  101. package/dist/types/storage.js +0 -1
  102. package/dist/types/storage.js.map +0 -1
@@ -0,0 +1,10 @@
1
+ import { LocaleValidator, Language } from '../../../types/locale.js';
2
+ import { Browser } from '../../../types/browser.js';
3
+ import export_default$1 from './LocaleValidator.js';
4
+
5
+ declare class export_default extends export_default$1 implements LocaleValidator {
6
+ protected get nameLimit(): number;
7
+ constructor(browser: Browser, language: Language);
8
+ }
9
+
10
+ export { export_default as default };
@@ -0,0 +1,13 @@
1
+ import LocaleValidator from "./LocaleValidator.js";
2
+ class FirefoxLocaleValidator_default extends LocaleValidator {
3
+ get nameLimit() {
4
+ return 75;
5
+ }
6
+ constructor(browser, language) {
7
+ super(browser, language);
8
+ }
9
+ }
10
+ export {
11
+ FirefoxLocaleValidator_default as default
12
+ };
13
+ //# sourceMappingURL=FirefoxLocaleValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/cli/builders/locale/FirefoxLocaleValidator.ts"],"sourcesContent":["import {Language, LocaleValidator as LocaleValidatorContract} from \"@typing/locale\";\nimport {Browser} from \"@typing/browser\";\n\nimport LocaleValidator from \"./LocaleValidator\";\n\nexport default class extends LocaleValidator implements LocaleValidatorContract {\n protected get nameLimit(): number {\n return 75;\n }\n\n constructor(browser: Browser, language: Language) {\n super(browser, language);\n }\n}\n"],"mappings":"AAGA,OAAO,qBAAqB;AAE5B,MAAO,uCAAsB,gBAAmD;AAAA,EAC5E,IAAc,YAAoB;AAC9B,WAAO;AAAA,EACX;AAAA,EAEA,YAAY,SAAkB,UAAoB;AAC9C,UAAM,SAAS,QAAQ;AAAA,EAC3B;AACJ;","names":[]}
@@ -0,0 +1,10 @@
1
+ import { LocaleValidator, Language } from '../../../types/locale.js';
2
+ import { Browser } from '../../../types/browser.js';
3
+ import export_default$1 from './LocaleValidator.js';
4
+
5
+ declare class export_default extends export_default$1 implements LocaleValidator {
6
+ protected get nameLimit(): number;
7
+ constructor(browser: Browser, language: Language);
8
+ }
9
+
10
+ export { export_default as default };
@@ -0,0 +1,13 @@
1
+ import LocaleValidator from "./LocaleValidator.js";
2
+ class OperaLocaleValidator_default extends LocaleValidator {
3
+ get nameLimit() {
4
+ return 75;
5
+ }
6
+ constructor(browser, language) {
7
+ super(browser, language);
8
+ }
9
+ }
10
+ export {
11
+ OperaLocaleValidator_default as default
12
+ };
13
+ //# sourceMappingURL=OperaLocaleValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/cli/builders/locale/OperaLocaleValidator.ts"],"sourcesContent":["import {Language, LocaleValidator as LocaleValidatorContract} from \"@typing/locale\";\nimport {Browser} from \"@typing/browser\";\n\nimport LocaleValidator from \"./LocaleValidator\";\n\nexport default class extends LocaleValidator implements LocaleValidatorContract {\n protected get nameLimit(): number {\n return 75;\n }\n\n constructor(browser: Browser, language: Language) {\n super(browser, language);\n }\n}\n"],"mappings":"AAGA,OAAO,qBAAqB;AAE5B,MAAO,qCAAsB,gBAAmD;AAAA,EAC5E,IAAc,YAAoB;AAC9B,WAAO;AAAA,EACX;AAAA,EAEA,YAAY,SAAkB,UAAoB;AAC9C,UAAM,SAAS,QAAQ;AAAA,EAC3B;AACJ;","names":[]}
@@ -1,5 +1,7 @@
1
1
  export { default as LocaleBuilder } from './LocaleBuilder.js';
2
2
  export { default as LocaleValidator } from './LocaleValidator.js';
3
+ export { default as OperaLocaleValidator } from './OperaLocaleValidator.js';
4
+ export { default as FirefoxLocaleValidator } from './FirefoxLocaleValidator.js';
3
5
  import { Language, LocaleBuilder } from '../../../types/locale.js';
4
6
  import { R as ReadonlyConfig } from '../../../config-DwvfY9v8.js';
5
7
  import '../../../types/browser.js';
@@ -1,14 +1,26 @@
1
1
  import LocaleBuilder from "./LocaleBuilder.js";
2
2
  import LocaleValidator from "./LocaleValidator.js";
3
+ import OperaLocaleValidator from "./OperaLocaleValidator.js";
4
+ import FirefoxLocaleValidator from "./FirefoxLocaleValidator.js";
3
5
  import { extractLocaleKey } from "./../../../locale/utils.js";
6
+ import { Browser } from "./../../../types/browser.js";
4
7
  var locale_default = (language, config) => {
5
- const { browser, name, shortName, description } = config;
6
- const validator = new LocaleValidator(browser, language).setNameKey(extractLocaleKey(name)).setShortNameKey(extractLocaleKey(shortName)).setDescriptionKey(extractLocaleKey(description));
8
+ const { browser, name, shortName, description, lang } = config;
9
+ let Validator = LocaleValidator;
10
+ if (browser === Browser.Opera && lang !== language) {
11
+ Validator = OperaLocaleValidator;
12
+ }
13
+ if (browser === Browser.Firefox && lang !== language) {
14
+ Validator = FirefoxLocaleValidator;
15
+ }
16
+ const validator = new Validator(browser, language).setNameKey(extractLocaleKey(name)).setShortNameKey(extractLocaleKey(shortName)).setDescriptionKey(extractLocaleKey(description));
7
17
  return new LocaleBuilder(browser, language).setValidator(validator);
8
18
  };
9
19
  export {
20
+ FirefoxLocaleValidator,
10
21
  LocaleBuilder,
11
22
  LocaleValidator,
23
+ OperaLocaleValidator,
12
24
  locale_default as default
13
25
  };
14
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/builders/locale/index.ts"],"sourcesContent":["import LocaleBuilder from \"./LocaleBuilder\";\nimport LocaleValidator from \"./LocaleValidator\";\n\nimport {extractLocaleKey} from \"@locale/utils\";\n\nimport {Language, LocaleBuilder as LocaleBuilderContract} from \"@typing/locale\";\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport {LocaleBuilder, LocaleValidator};\n\nexport default (language: Language, config: ReadonlyConfig): LocaleBuilderContract => {\n const {browser, name, shortName, description} = config;\n\n const validator = new LocaleValidator(browser, language)\n .setNameKey(extractLocaleKey(name))\n .setShortNameKey(extractLocaleKey(shortName))\n .setDescriptionKey(extractLocaleKey(description));\n\n return new LocaleBuilder(browser, language).setValidator(validator);\n};\n"],"mappings":"AAAA,OAAO,mBAAmB;AAC1B,OAAO,qBAAqB;AAE5B,SAAQ,wBAAuB;AAO/B,IAAO,iBAAQ,CAAC,UAAoB,WAAkD;AAClF,QAAM,EAAC,SAAS,MAAM,WAAW,YAAW,IAAI;AAEhD,QAAM,YAAY,IAAI,gBAAgB,SAAS,QAAQ,EAClD,WAAW,iBAAiB,IAAI,CAAC,EACjC,gBAAgB,iBAAiB,SAAS,CAAC,EAC3C,kBAAkB,iBAAiB,WAAW,CAAC;AAEpD,SAAO,IAAI,cAAc,SAAS,QAAQ,EAAE,aAAa,SAAS;AACtE;","names":[]}
1
+ {"version":3,"sources":["../../../../src/cli/builders/locale/index.ts"],"sourcesContent":["import LocaleBuilder from \"./LocaleBuilder\";\nimport LocaleValidator from \"./LocaleValidator\";\nimport OperaLocaleValidator from \"./OperaLocaleValidator\";\nimport FirefoxLocaleValidator from \"./FirefoxLocaleValidator\";\n\nimport {extractLocaleKey} from \"@locale/utils\";\n\nimport {Language, LocaleBuilder as LocaleBuilderContract} from \"@typing/locale\";\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {Browser} from \"@typing/browser\";\n\nexport {LocaleBuilder, LocaleValidator, OperaLocaleValidator, FirefoxLocaleValidator};\n\nexport default (language: Language, config: ReadonlyConfig): LocaleBuilderContract => {\n const {browser, name, shortName, description, lang} = config;\n\n let Validator = LocaleValidator;\n\n if (browser === Browser.Opera && lang !== language) {\n Validator = OperaLocaleValidator;\n }\n\n if (browser === Browser.Firefox && lang !== language) {\n Validator = FirefoxLocaleValidator;\n }\n\n const validator = new Validator(browser, language)\n .setNameKey(extractLocaleKey(name))\n .setShortNameKey(extractLocaleKey(shortName))\n .setDescriptionKey(extractLocaleKey(description));\n\n return new LocaleBuilder(browser, language).setValidator(validator);\n};\n"],"mappings":"AAAA,OAAO,mBAAmB;AAC1B,OAAO,qBAAqB;AAC5B,OAAO,0BAA0B;AACjC,OAAO,4BAA4B;AAEnC,SAAQ,wBAAuB;AAI/B,SAAQ,eAAc;AAItB,IAAO,iBAAQ,CAAC,UAAoB,WAAkD;AAClF,QAAM,EAAC,SAAS,MAAM,WAAW,aAAa,KAAI,IAAI;AAEtD,MAAI,YAAY;AAEhB,MAAI,YAAY,QAAQ,SAAS,SAAS,UAAU;AAChD,gBAAY;AAAA,EAChB;AAEA,MAAI,YAAY,QAAQ,WAAW,SAAS,UAAU;AAClD,gBAAY;AAAA,EAChB;AAEA,QAAM,YAAY,IAAI,UAAU,SAAS,QAAQ,EAC5C,WAAW,iBAAiB,IAAI,CAAC,EACjC,gBAAgB,iBAAiB,SAAS,CAAC,EAC3C,kBAAkB,iBAAiB,WAAW,CAAC;AAEpD,SAAO,IAAI,cAAc,SAAS,QAAQ,EAAE,aAAa,SAAS;AACtE;","names":[]}
@@ -21,7 +21,7 @@ export { default as viewPlugin } from './view/index.js';
21
21
  export { default as versionPlugin } from './version/index.js';
22
22
  export { default as TypescriptConfig } from './typescript/TypescriptConfig.js';
23
23
  export { default as FileBuilder } from './typescript/FileBuilder.js';
24
- export { default as VendorDeclaration } from './typescript/declaration/VendorDeclaration.js';
24
+ export { default as VendorDeclaration } from './typescript/declaration/vendor/VendorDeclaration.js';
25
25
  import '../../config-DwvfY9v8.js';
26
26
  import '@rspack/core';
27
27
  import 'html-rspack-tags-plugin';
@@ -13,6 +13,10 @@ import '../../../types/locale.js';
13
13
  import '../../../types/env.js';
14
14
 
15
15
  declare class export_default extends FileBuilder {
16
+ protected readonly vendorAliases: {
17
+ "adnbn/browser": string;
18
+ "adnbn/storage": string;
19
+ };
16
20
  constructor(config: ReadonlyConfig);
17
21
  protected filename(): string;
18
22
  protected withBanner(): boolean;
@@ -20,6 +24,7 @@ declare class export_default extends FileBuilder {
20
24
  protected content(): string;
21
25
  protected alias(): Record<string, string>;
22
26
  aliases(): Record<string, string>;
27
+ paths(): Record<string, string[]>;
23
28
  json(): TsConfigJson;
24
29
  }
25
30
 
@@ -2,7 +2,12 @@ import path from "path";
2
2
  import _ from "lodash";
3
3
  import FileBuilder from "./FileBuilder.js";
4
4
  import { getResolvePath } from "./../../../cli/resolvers/path.js";
5
+ import { PackageName } from "./../../../types/app.js";
5
6
  class TypescriptConfig_default extends FileBuilder {
7
+ vendorAliases = {
8
+ [`${PackageName}/browser`]: "@addon-core/browser",
9
+ [`${PackageName}/storage`]: "@addon-core/storage"
10
+ };
6
11
  constructor(config) {
7
12
  super(config);
8
13
  }
@@ -29,7 +34,20 @@ class TypescriptConfig_default extends FileBuilder {
29
34
  };
30
35
  }
31
36
  aliases() {
32
- return _.mapValues(this.alias(), (value) => getResolvePath(value));
37
+ return _.merge(
38
+ this.vendorAliases,
39
+ _.mapValues(this.alias(), (value) => getResolvePath(value))
40
+ );
41
+ }
42
+ paths() {
43
+ return _.reduce(
44
+ this.alias(),
45
+ (paths, value, key) => ({
46
+ ...paths,
47
+ [path.posix.join(key, "*")]: [path.posix.join("..", value, "*")]
48
+ }),
49
+ {}
50
+ );
33
51
  }
34
52
  json() {
35
53
  const outputDir = path.posix.join("..", this.config.outDir);
@@ -45,27 +63,9 @@ class TypescriptConfig_default extends FileBuilder {
45
63
  skipLibCheck: true,
46
64
  noEmit: true,
47
65
  outDir: outputDir,
48
- paths: _.reduce(
49
- this.alias(),
50
- (paths, value, key) => ({
51
- ...paths,
52
- [path.posix.join(key, "*")]: [path.posix.join("..", value, "*")]
53
- }),
54
- {}
55
- )
66
+ paths: this.paths()
56
67
  },
57
- include: [
58
- "../**/*",
59
- "./vendor.d.ts",
60
- "./locale.d.ts",
61
- "./service.d.ts",
62
- "./relay.d.ts",
63
- "./offscreen.d.ts",
64
- "./icon.d.ts",
65
- "./page.d.ts",
66
- "./popup.d.ts",
67
- "./sidebar.d.ts"
68
- ],
68
+ include: ["../**/*", "./*.d.ts"],
69
69
  exclude: [outputDir]
70
70
  };
71
71
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/plugins/typescript/TypescriptConfig.ts"],"sourcesContent":["import path from \"path\";\nimport _ from \"lodash\";\nimport {TsConfigJson} from \"type-fest\";\n\nimport FileBuilder from \"./FileBuilder\";\n\nimport {getResolvePath} from \"@cli/resolvers/path\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends FileBuilder {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n protected filename(): string {\n return \"tsconfig.json\";\n }\n\n protected withBanner(): boolean {\n return false;\n }\n\n protected template(): string {\n return \"\"; // Not need is this place\n }\n\n protected content(): string {\n return JSON.stringify(this.json(), null, 2);\n }\n\n protected alias(): Record<string, string> {\n const srcDir = this.config.srcDir;\n const sharedDir = path.posix.join(srcDir, this.config.sharedDir);\n\n return {\n [srcDir]: srcDir,\n \"@\": srcDir,\n \"@shared\": sharedDir,\n \"~\": sharedDir,\n };\n }\n\n public aliases(): Record<string, string> {\n return _.mapValues(this.alias(), value => getResolvePath(value));\n }\n\n public json(): TsConfigJson {\n const outputDir = path.posix.join(\"..\", this.config.outDir);\n\n return {\n compilerOptions: {\n target: \"ESNext\",\n module: \"ESNext\",\n moduleResolution: \"Bundler\",\n esModuleInterop: true,\n forceConsistentCasingInFileNames: true,\n resolveJsonModule: true,\n strict: true,\n skipLibCheck: true,\n noEmit: true,\n outDir: outputDir,\n paths: _.reduce(\n this.alias(),\n (paths, value, key) => ({\n ...paths,\n [path.posix.join(key, \"*\")]: [path.posix.join(\"..\", value, \"*\")],\n }),\n {} as Record<string, string[]>\n ),\n },\n include: [\n \"../**/*\",\n \"./vendor.d.ts\",\n \"./locale.d.ts\",\n \"./service.d.ts\",\n \"./relay.d.ts\",\n \"./offscreen.d.ts\",\n \"./icon.d.ts\",\n \"./page.d.ts\",\n \"./popup.d.ts\",\n \"./sidebar.d.ts\",\n ],\n exclude: [outputDir],\n };\n }\n}\n"],"mappings":"AAAA,OAAO,UAAU;AACjB,OAAO,OAAO;AAGd,OAAO,iBAAiB;AAExB,SAAQ,sBAAqB;AAI7B,MAAO,iCAAsB,YAAY;AAAA,EAC9B,YAAY,QAAwB;AACvC,UAAM,MAAM;AAAA,EAChB;AAAA,EAEU,WAAmB;AACzB,WAAO;AAAA,EACX;AAAA,EAEU,aAAsB;AAC5B,WAAO;AAAA,EACX;AAAA,EAEU,WAAmB;AACzB,WAAO;AAAA,EACX;AAAA,EAEU,UAAkB;AACxB,WAAO,KAAK,UAAU,KAAK,KAAK,GAAG,MAAM,CAAC;AAAA,EAC9C;AAAA,EAEU,QAAgC;AACtC,UAAM,SAAS,KAAK,OAAO;AAC3B,UAAM,YAAY,KAAK,MAAM,KAAK,QAAQ,KAAK,OAAO,SAAS;AAE/D,WAAO;AAAA,MACH,CAAC,MAAM,GAAG;AAAA,MACV,KAAK;AAAA,MACL,WAAW;AAAA,MACX,KAAK;AAAA,IACT;AAAA,EACJ;AAAA,EAEO,UAAkC;AACrC,WAAO,EAAE,UAAU,KAAK,MAAM,GAAG,WAAS,eAAe,KAAK,CAAC;AAAA,EACnE;AAAA,EAEO,OAAqB;AACxB,UAAM,YAAY,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,MAAM;AAE1D,WAAO;AAAA,MACH,iBAAiB;AAAA,QACb,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,kBAAkB;AAAA,QAClB,iBAAiB;AAAA,QACjB,kCAAkC;AAAA,QAClC,mBAAmB;AAAA,QACnB,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO,EAAE;AAAA,UACL,KAAK,MAAM;AAAA,UACX,CAAC,OAAO,OAAO,SAAS;AAAA,YACpB,GAAG;AAAA,YACH,CAAC,KAAK,MAAM,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,MAAM,KAAK,MAAM,OAAO,GAAG,CAAC;AAAA,UACnE;AAAA,UACA,CAAC;AAAA,QACL;AAAA,MACJ;AAAA,MACA,SAAS;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA,SAAS,CAAC,SAAS;AAAA,IACvB;AAAA,EACJ;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/cli/plugins/typescript/TypescriptConfig.ts"],"sourcesContent":["import path from \"path\";\nimport _ from \"lodash\";\nimport {TsConfigJson} from \"type-fest\";\n\nimport FileBuilder from \"./FileBuilder\";\n\nimport {getResolvePath} from \"@cli/resolvers/path\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {PackageName} from \"@typing/app\";\n\nexport default class extends FileBuilder {\n protected readonly vendorAliases = {\n [`${PackageName}/browser`]: \"@addon-core/browser\",\n [`${PackageName}/storage`]: \"@addon-core/storage\",\n };\n\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n protected filename(): string {\n return \"tsconfig.json\";\n }\n\n protected withBanner(): boolean {\n return false;\n }\n\n protected template(): string {\n return \"\"; // Not need is this place\n }\n\n protected content(): string {\n return JSON.stringify(this.json(), null, 2);\n }\n\n protected alias(): Record<string, string> {\n const srcDir = this.config.srcDir;\n const sharedDir = path.posix.join(srcDir, this.config.sharedDir);\n\n return {\n [srcDir]: srcDir,\n \"@\": srcDir,\n \"@shared\": sharedDir,\n \"~\": sharedDir,\n };\n }\n\n public aliases(): Record<string, string> {\n return _.merge(\n this.vendorAliases,\n _.mapValues(this.alias(), value => getResolvePath(value))\n );\n }\n\n public paths(): Record<string, string[]> {\n return _.reduce(\n this.alias(),\n (paths, value, key) => ({\n ...paths,\n [path.posix.join(key, \"*\")]: [path.posix.join(\"..\", value, \"*\")],\n }),\n {} as Record<string, string[]>\n );\n }\n\n public json(): TsConfigJson {\n const outputDir = path.posix.join(\"..\", this.config.outDir);\n\n return {\n compilerOptions: {\n target: \"ESNext\",\n module: \"ESNext\",\n moduleResolution: \"Bundler\",\n esModuleInterop: true,\n forceConsistentCasingInFileNames: true,\n resolveJsonModule: true,\n strict: true,\n skipLibCheck: true,\n noEmit: true,\n outDir: outputDir,\n paths: this.paths(),\n },\n include: [\"../**/*\", \"./*.d.ts\"],\n exclude: [outputDir],\n };\n }\n}\n"],"mappings":"AAAA,OAAO,UAAU;AACjB,OAAO,OAAO;AAGd,OAAO,iBAAiB;AAExB,SAAQ,sBAAqB;AAG7B,SAAQ,mBAAkB;AAE1B,MAAO,iCAAsB,YAAY;AAAA,EAClB,gBAAgB;AAAA,IAC/B,CAAC,GAAG,WAAW,UAAU,GAAG;AAAA,IAC5B,CAAC,GAAG,WAAW,UAAU,GAAG;AAAA,EAChC;AAAA,EAEO,YAAY,QAAwB;AACvC,UAAM,MAAM;AAAA,EAChB;AAAA,EAEU,WAAmB;AACzB,WAAO;AAAA,EACX;AAAA,EAEU,aAAsB;AAC5B,WAAO;AAAA,EACX;AAAA,EAEU,WAAmB;AACzB,WAAO;AAAA,EACX;AAAA,EAEU,UAAkB;AACxB,WAAO,KAAK,UAAU,KAAK,KAAK,GAAG,MAAM,CAAC;AAAA,EAC9C;AAAA,EAEU,QAAgC;AACtC,UAAM,SAAS,KAAK,OAAO;AAC3B,UAAM,YAAY,KAAK,MAAM,KAAK,QAAQ,KAAK,OAAO,SAAS;AAE/D,WAAO;AAAA,MACH,CAAC,MAAM,GAAG;AAAA,MACV,KAAK;AAAA,MACL,WAAW;AAAA,MACX,KAAK;AAAA,IACT;AAAA,EACJ;AAAA,EAEO,UAAkC;AACrC,WAAO,EAAE;AAAA,MACL,KAAK;AAAA,MACL,EAAE,UAAU,KAAK,MAAM,GAAG,WAAS,eAAe,KAAK,CAAC;AAAA,IAC5D;AAAA,EACJ;AAAA,EAEO,QAAkC;AACrC,WAAO,EAAE;AAAA,MACL,KAAK,MAAM;AAAA,MACX,CAAC,OAAO,OAAO,SAAS;AAAA,QACpB,GAAG;AAAA,QACH,CAAC,KAAK,MAAM,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,MAAM,KAAK,MAAM,OAAO,GAAG,CAAC;AAAA,MACnE;AAAA,MACA,CAAC;AAAA,IACL;AAAA,EACJ;AAAA,EAEO,OAAqB;AACxB,UAAM,YAAY,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,MAAM;AAE1D,WAAO;AAAA,MACH,iBAAiB;AAAA,QACb,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,kBAAkB;AAAA,QAClB,iBAAiB;AAAA,QACjB,kCAAkC;AAAA,QAClC,mBAAmB;AAAA,QACnB,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO,KAAK,MAAM;AAAA,MACtB;AAAA,MACA,SAAS,CAAC,WAAW,UAAU;AAAA,MAC/B,SAAS,CAAC,SAAS;AAAA,IACvB;AAAA,EACJ;AACJ;","names":[]}
@@ -1,5 +1,5 @@
1
1
  export { default as TransportDeclaration, TransportDeclarationLayer } from './transport/TransportDeclaration.js';
2
- export { default as VendorDeclaration } from './VendorDeclaration.js';
2
+ export { default as VendorDeclaration } from './vendor/VendorDeclaration.js';
3
3
  import '../FileBuilder.js';
4
4
  import '../../../../config-DwvfY9v8.js';
5
5
  import '@rspack/core';
@@ -1,6 +1,3 @@
1
1
  export * from "./transport/index.js";
2
- import { default as default2 } from "./VendorDeclaration.js";
3
- export {
4
- default2 as VendorDeclaration
5
- };
2
+ export * from "./vendor/index.js";
6
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/cli/plugins/typescript/declaration/index.ts"],"sourcesContent":["export * from \"./transport\";\nexport {default as VendorDeclaration} from \"./VendorDeclaration\";\n"],"mappings":"AAAA,cAAc;AACd,SAAmB,WAAXA,gBAAmC;","names":["default"]}
1
+ {"version":3,"sources":["../../../../../src/cli/plugins/typescript/declaration/index.ts"],"sourcesContent":["export * from \"./transport\";\nexport * from \"./vendor\";\n"],"mappings":"AAAA,cAAc;AACd,cAAc;","names":[]}
@@ -0,0 +1,21 @@
1
+ import FileBuilder from '../../FileBuilder.js';
2
+ import { R as ReadonlyConfig } from '../../../../../config-DwvfY9v8.js';
3
+ import '@rspack/core';
4
+ import 'html-rspack-tags-plugin';
5
+ import '../../../../../types/app.js';
6
+ import '../../../../../types/browser.js';
7
+ import '../../../../../manifest-DAV18Z2K.js';
8
+ import 'react';
9
+ import 'utility-types';
10
+ import '../../../../../types/helpers.js';
11
+ import '../../../../../types/locale.js';
12
+ import '../../../../../types/env.js';
13
+
14
+ declare class export_default extends FileBuilder {
15
+ constructor(config: ReadonlyConfig);
16
+ protected filename(): string;
17
+ protected url(): string;
18
+ protected template(): string;
19
+ }
20
+
21
+ export { export_default as default };
@@ -0,0 +1,19 @@
1
+ import FileBuilder from "../../FileBuilder.js";
2
+ class VendorDeclaration_default extends FileBuilder {
3
+ constructor(config) {
4
+ super(config);
5
+ }
6
+ filename() {
7
+ return "vendor.d.ts";
8
+ }
9
+ url() {
10
+ return import.meta.url;
11
+ }
12
+ template() {
13
+ return this.readFile();
14
+ }
15
+ }
16
+ export {
17
+ VendorDeclaration_default as default
18
+ };
19
+ //# sourceMappingURL=VendorDeclaration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/cli/plugins/typescript/declaration/vendor/VendorDeclaration.ts"],"sourcesContent":["import FileBuilder from \"../../FileBuilder\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\n\nexport default class extends FileBuilder {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n protected filename(): string {\n return \"vendor.d.ts\";\n }\n\n protected url(): string {\n return import.meta.url;\n }\n\n protected template(): string {\n return this.readFile();\n }\n}\n"],"mappings":"AAAA,OAAO,iBAAiB;AAIxB,MAAO,kCAAsB,YAAY;AAAA,EAC9B,YAAY,QAAwB;AACvC,UAAM,MAAM;AAAA,EAChB;AAAA,EAEU,WAAmB;AACzB,WAAO;AAAA,EACX;AAAA,EAEU,MAAc;AACpB,WAAO,YAAY;AAAA,EACvB;AAAA,EAEU,WAAmB;AACzB,WAAO,KAAK,SAAS;AAAA,EACzB;AACJ;","names":[]}
@@ -0,0 +1,13 @@
1
+ export { default as VendorDeclaration } from './VendorDeclaration.js';
2
+ import '../../FileBuilder.js';
3
+ import '../../../../../config-DwvfY9v8.js';
4
+ import '@rspack/core';
5
+ import 'html-rspack-tags-plugin';
6
+ import '../../../../../types/app.js';
7
+ import '../../../../../types/browser.js';
8
+ import '../../../../../manifest-DAV18Z2K.js';
9
+ import 'react';
10
+ import 'utility-types';
11
+ import '../../../../../types/helpers.js';
12
+ import '../../../../../types/locale.js';
13
+ import '../../../../../types/env.js';
@@ -0,0 +1,5 @@
1
+ import { default as default2 } from "./VendorDeclaration.js";
2
+ export {
3
+ default2 as VendorDeclaration
4
+ };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/cli/plugins/typescript/declaration/vendor/index.ts"],"sourcesContent":["export {default as VendorDeclaration} from \"./VendorDeclaration\";\n"],"mappings":"AAAA,SAAmB,WAAXA,gBAAmC;","names":["default"]}
@@ -0,0 +1,13 @@
1
+ /// <reference types=":package/client-types" />
2
+
3
+ declare module ":package/browser" {
4
+ export * from "@addon-core/browser";
5
+ }
6
+
7
+ declare module ":package/storage" {
8
+ export * from "@addon-core/storage";
9
+ }
10
+
11
+ declare module ":package/storage/react" {
12
+ export * from "@addon-core/storage/react";
13
+ }
@@ -1,7 +1,7 @@
1
1
  import { b as PluginDefinition } from '../../../config-DwvfY9v8.js';
2
2
  export { default as TypescriptConfig } from './TypescriptConfig.js';
3
3
  export { default as TransportDeclaration, TransportDeclarationLayer } from './declaration/transport/TransportDeclaration.js';
4
- export { default as VendorDeclaration } from './declaration/VendorDeclaration.js';
4
+ export { default as VendorDeclaration } from './declaration/vendor/VendorDeclaration.js';
5
5
  export { default as FileBuilder } from './FileBuilder.js';
6
6
  import '@rspack/core';
7
7
  import 'html-rspack-tags-plugin';
@@ -1,25 +1,25 @@
1
- // raw-loader:./background.ts?raw
1
+ // raw-loader:/home/runner/work/addon-bone/addon-bone/src/cli/virtual/background.ts?raw
2
2
  var background_default = 'import type {BackgroundDefinition} from "adnbn";\nimport background, {isValidBackgroundDefinition, isValidBackgroundMainHandler} from "adnbn/entry/background";\n\nimport * as module from "virtual:background-entrypoint";\n\ntry {\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: BackgroundDefinition = otherDefinition;\n\n if (isValidBackgroundDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidBackgroundMainHandler(defaultDefinition)) {\n definition = {...definition, main: defaultDefinition};\n }\n\n const {main, ...options} = definition;\n\n background({main, ...options});\n} catch (e) {\n console.error("The background crashed on startup:", e);\n}\n';
3
3
 
4
- // raw-loader:./command.ts?raw
4
+ // raw-loader:/home/runner/work/addon-bone/addon-bone/src/cli/virtual/command.ts?raw
5
5
  var command_default = 'import type {CommandUnresolvedDefinition} from "adnbn";\nimport {__t} from "adnbn/locale";\nimport command, {isValidCommandDefinition, isValidCommandExecuteFunction} from "adnbn/entry/command";\n\nimport * as module from "virtual:command-entrypoint";\n\ntry {\n const commandName = "virtual:command-name";\n\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: CommandUnresolvedDefinition = otherDefinition;\n\n if (isValidCommandDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidCommandExecuteFunction(defaultDefinition)) {\n definition = {...definition, execute: defaultDefinition};\n }\n\n const {execute, name = commandName, description, ...options} = definition;\n\n command({\n name,\n execute,\n description: description ? __t(description) : undefined,\n ...options,\n });\n} catch (e) {\n console.error("The command crashed on startup:", e);\n}\n';
6
6
 
7
- // raw-loader:./content.ts?raw
7
+ // raw-loader:/home/runner/work/addon-bone/addon-bone/src/cli/virtual/content.ts?raw
8
8
  var content_default = 'import type {ContentScriptDefinition} from "adnbn";\nimport {isContentScriptDefinition, isValidContentScriptDefinitionRenderValue} from "adnbn/entry/content";\n\nimport contentScript from "virtual:content-framework";\n\nimport * as module from "virtual:content-entrypoint";\n\ntry {\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: ContentScriptDefinition = otherDefinition;\n\n if (isContentScriptDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidContentScriptDefinitionRenderValue(defaultDefinition)) {\n definition = {...definition, render: defaultDefinition};\n }\n\n contentScript(definition);\n} catch (e) {\n console.error("The content script crashed on startup:", e);\n}\n';
9
9
 
10
- // raw-loader:./transport.ts?raw
10
+ // raw-loader:/home/runner/work/addon-bone/addon-bone/src/cli/virtual/transport.ts?raw
11
11
  var transport_default = 'import type {TransportOptions, TransportType, TransportUnresolvedDefinition} from "adnbn/transport";\nimport {isValidTransportDefinition, isValidTransportInitFunction} from "adnbn/entry/transport";\n\n//@ts-ignore\nimport transport from "adnbn/entry/:entry";\n\nimport * as module from "virtual:transport-entrypoint";\n\ntry {\n const transportName = "virtual:transport-name";\n\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: TransportUnresolvedDefinition<TransportOptions, TransportType> = otherDefinition;\n\n if (isValidTransportDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidTransportInitFunction(defaultDefinition)) {\n definition = {...definition, init: defaultDefinition};\n }\n\n const {init, name, ...options} = definition;\n\n transport({name: transportName, init, ...options});\n} catch (e) {\n console.error("The :entry crashed on startup:", e);\n}\n';
12
12
 
13
- // raw-loader:./offscreen.ts?raw
13
+ // raw-loader:/home/runner/work/addon-bone/addon-bone/src/cli/virtual/offscreen.ts?raw
14
14
  var offscreen_default = 'import type {OffscreenUnresolvedDefinition} from "adnbn";\nimport type {TransportType} from "adnbn/transport";\nimport {isValidTransportDefinition, isValidTransportInitFunction} from "adnbn/entry/transport";\nimport {Builder as OffscreenBuilder} from "adnbn/entry/offscreen";\n\nimport {Builder as ViewBuilder} from "virtual:view-framework";\n\nimport * as module from "virtual:offscreen-entrypoint";\n\ntry {\n const offscreenName = "virtual:offscreen-name";\n\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: OffscreenUnresolvedDefinition<TransportType> = otherDefinition;\n\n if (isValidTransportDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidTransportInitFunction(defaultDefinition)) {\n definition = {...definition, init: defaultDefinition};\n }\n\n const {init, main, name, ...options} = definition;\n\n new OffscreenBuilder({\n name: offscreenName,\n init,\n main,\n ...options,\n })\n .view(new ViewBuilder(options))\n .build()\n .catch(e => {\n console.error("Failed to build offscreen: ", e);\n });\n} catch (e) {\n console.error("The offscreen crashed on startup:", e);\n}\n';
15
15
 
16
- // raw-loader:./offscreen.background.ts?raw
16
+ // raw-loader:/home/runner/work/addon-bone/addon-bone/src/cli/virtual/offscreen.background.ts?raw
17
17
  var offscreen_background_default = 'import {OffscreenBackground} from "adnbn/offscreen";\n\ntry {\n new OffscreenBackground().build();\n} catch (e) {\n console.error("Failed to build offscreen layer on background:", e);\n}\n';
18
18
 
19
- // raw-loader:./relay.ts?raw
19
+ // raw-loader:/home/runner/work/addon-bone/addon-bone/src/cli/virtual/relay.ts?raw
20
20
  var relay_default = 'import type {RelayUnresolvedDefinition} from "adnbn";\nimport type {TransportType} from "adnbn/transport";\nimport {isValidTransportDefinition, isValidTransportInitFunction} from "adnbn/entry/transport";\nimport {Builder as RelayBuilder} from "adnbn/entry/relay";\n\nimport {Builder as ContentScriptBuilder} from "virtual:content-framework";\n\nimport * as module from "virtual:relay-entrypoint";\n\ntry {\n const relayName = "virtual:relay-name";\n\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: RelayUnresolvedDefinition<TransportType> = otherDefinition;\n\n if (isValidTransportDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidTransportInitFunction(defaultDefinition)) {\n definition = {...definition, init: defaultDefinition};\n }\n\n const {init, main, name, ...options} = definition;\n\n new RelayBuilder({\n name: relayName,\n init,\n main,\n ...options,\n })\n .content(new ContentScriptBuilder(options))\n .build()\n .catch(e => {\n console.error("Failed to build relay: ", e);\n });\n} catch (e) {\n console.error("The relay crashed on startup:", e);\n}\n';
21
21
 
22
- // raw-loader:./view.ts?raw
22
+ // raw-loader:/home/runner/work/addon-bone/addon-bone/src/cli/virtual/view.ts?raw
23
23
  var view_default = 'import type {ViewDefinition, ViewOptions} from "adnbn";\nimport {__t} from "adnbn/locale";\nimport {isViewDefinition, isValidViewDefinitionRenderValue} from "adnbn/entry/view";\n\nimport view from "virtual:view-framework";\n\nimport * as module from "virtual:view-entrypoint";\n\ntry {\n const {default: defaultDefinition, ...otherDefinition} = module;\n\n let definition: ViewDefinition<ViewOptions> = otherDefinition;\n\n if (isViewDefinition(defaultDefinition)) {\n definition = {...definition, ...defaultDefinition};\n } else if (isValidViewDefinitionRenderValue(defaultDefinition)) {\n definition = {...definition, render: defaultDefinition};\n }\n\n const {title, ...options} = definition;\n\n view({title: title ? __t(title) : undefined, ...options});\n} catch (e) {\n console.error("The view crashed on startup:", e);\n}\n';
24
24
 
25
25
  // src/cli/virtual/index.ts
@@ -108,3 +108,113 @@ declare module "virtual:transport-entrypoint" {
108
108
  const module: ModuleType;
109
109
  export = module;
110
110
  }
111
+
112
+ declare module "adnbn" {
113
+ export type BackgroundDefinition = import("@typing/background").BackgroundDefinition;
114
+ export type CommandUnresolvedDefinition = import("@typing/command").CommandUnresolvedDefinition;
115
+ export type ContentScriptDefinition = import("@typing/content").ContentScriptDefinition;
116
+ export type ViewOptions = import("@typing/view").ViewOptions;
117
+ export type ViewDefinition<T extends ViewOptions = ViewOptions> = import("@typing/view").ViewDefinition<T>;
118
+ export type OffscreenUnresolvedDefinition<T extends import("@typing/transport").TransportType> =
119
+ import("@typing/offscreen").OffscreenUnresolvedDefinition<T>;
120
+ export type RelayUnresolvedDefinition<T extends import("@typing/transport").TransportType> =
121
+ import("@typing/relay").RelayUnresolvedDefinition<T>;
122
+ }
123
+
124
+ declare module "adnbn/transport" {
125
+ export type TransportType = import("@typing/transport").TransportType;
126
+ export type TransportOptions = import("@typing/transport").TransportOptions;
127
+ export type TransportUnresolvedDefinition<
128
+ O extends import("@typing/transport").TransportOptions,
129
+ T extends import("@typing/transport").TransportType,
130
+ > = import("@typing/transport").TransportUnresolvedDefinition<O, T>;
131
+ }
132
+
133
+ declare module "adnbn/locale" {
134
+ export function __t(value: string): string;
135
+ }
136
+
137
+ declare module "adnbn/entry/background" {
138
+ import type {BackgroundDefinition, BackgroundMainHandler} from "@typing/background";
139
+
140
+ export function isValidBackgroundDefinition(value: unknown): value is BackgroundDefinition;
141
+
142
+ export function isValidBackgroundMainHandler(value: unknown): value is BackgroundMainHandler;
143
+
144
+ const background: (definition: BackgroundDefinition) => void;
145
+ export default background;
146
+ }
147
+
148
+ declare module "adnbn/entry/command" {
149
+ import type {CommandDefinition, CommandExecute, CommandUnresolvedDefinition} from "@typing/command";
150
+
151
+ export function isValidCommandDefinition(value: unknown): value is CommandDefinition;
152
+
153
+ export function isValidCommandExecuteFunction(value: unknown): value is CommandExecute;
154
+
155
+ const command: (definition: CommandUnresolvedDefinition) => void;
156
+ export default command;
157
+ }
158
+
159
+ declare module "adnbn/entry/content" {
160
+ import type {ContentScriptDefinition, ContentScriptRenderValue} from "@typing/content";
161
+
162
+ export function isContentScriptDefinition(value: unknown): value is ContentScriptDefinition;
163
+
164
+ export function isValidContentScriptDefinitionRenderValue(value: unknown): value is ContentScriptRenderValue;
165
+ }
166
+
167
+ declare module "adnbn/entry/view" {
168
+ import type {ViewOptions, ViewDefinition, ViewRenderValue} from "@typing/view";
169
+
170
+ export function isViewDefinition(value: unknown): value is ViewDefinition<ViewOptions>;
171
+
172
+ export function isValidViewDefinitionRenderValue(value: unknown): value is ViewRenderValue<ViewOptions>;
173
+ }
174
+
175
+ declare module "adnbn/entry/transport" {
176
+ export function isValidTransportDefinition(value: unknown): value is any;
177
+
178
+ export function isValidTransportInitFunction(value: unknown): value is (...args: any[]) => any;
179
+ }
180
+
181
+ declare module "adnbn/entry/offscreen" {
182
+ import type {OffscreenDefinition, OffscreenUnresolvedDefinition} from "@typing/offscreen";
183
+ import type {TransportType} from "@typing/transport";
184
+ import type {ViewBuilder} from "@typing/view";
185
+
186
+ export class Builder {
187
+ constructor(options: OffscreenDefinition<TransportType> | OffscreenUnresolvedDefinition<TransportType>);
188
+
189
+ view(builder: ViewBuilder): this;
190
+
191
+ build(): Promise<void>;
192
+ }
193
+ }
194
+
195
+ declare module "adnbn/entry/relay" {
196
+ import type {RelayDefinition, RelayUnresolvedDefinition} from "@typing/relay";
197
+ import type {TransportType} from "@typing/transport";
198
+ import type {ContentScriptBuilder} from "@typing/content";
199
+
200
+ export class Builder {
201
+ constructor(options: RelayDefinition<TransportType> | RelayUnresolvedDefinition<TransportType>);
202
+
203
+ content(builder: ContentScriptBuilder): this;
204
+
205
+ build(): Promise<void>;
206
+ }
207
+ }
208
+
209
+ declare module "adnbn/offscreen" {
210
+ export class OffscreenBackground {
211
+ build(): void | Promise<void>;
212
+ }
213
+ }
214
+
215
+ declare module "adnbn/entry/:entry" {
216
+ import type {TransportUnresolvedDefinition, TransportOptions, TransportType} from "@typing/transport";
217
+
218
+ const transport: (definition: TransportUnresolvedDefinition<TransportOptions, TransportType>) => void;
219
+ export default transport;
220
+ }
@@ -1,4 +1,4 @@
1
- import { onActionClicked, onCommand } from "@adnbn/browser";
1
+ import { onActionClicked, onSpecificCommand } from "@addon-core/browser";
2
2
  import Builder from "./../../entry/core/Builder.js";
3
3
  import { isValidCommandExecuteFunction, isValidCommandName } from "./resolvers/index.js";
4
4
  import {
@@ -31,10 +31,8 @@ class Builder_default extends Builder {
31
31
  });
32
32
  return;
33
33
  }
34
- this.unsubscribe = onCommand((command, tab) => {
35
- if (command === name) {
36
- this.handle(tab);
37
- }
34
+ this.unsubscribe = onSpecificCommand(name, (tab) => {
35
+ this.handle(tab);
38
36
  });
39
37
  }
40
38
  async destroy() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/entry/command/Builder.ts"],"sourcesContent":["import {onActionClicked, onCommand} from \"@adnbn/browser\";\n\nimport Builder from \"@entry/core/Builder\";\n\nimport {isValidCommandExecuteFunction, isValidCommandName} from \"./resolvers\";\n\nimport {\n CommandBuilder,\n CommandExecuteActionName,\n CommandResolvedDefinition,\n CommandUnresolvedDefinition,\n} from \"@typing/command\";\n\ntype Tab = chrome.tabs.Tab;\n\nexport default class extends Builder implements CommandBuilder {\n protected readonly definition: CommandResolvedDefinition;\n\n protected unsubscribe?: () => void;\n\n public constructor(definition: CommandUnresolvedDefinition) {\n super();\n\n const {name, execute} = definition;\n\n if (!isValidCommandExecuteFunction(execute)) {\n throw new Error(\"The command entrypoint must export a execute function\");\n }\n\n if (!isValidCommandName(name)) {\n throw new Error(\"The command entrypoint must export a name string\");\n }\n\n this.definition = {\n ...definition,\n name,\n execute,\n };\n }\n\n public async build(): Promise<void> {\n await this.destroy();\n\n const {name} = this.definition;\n\n if (name == CommandExecuteActionName) {\n this.unsubscribe = onActionClicked(tab => {\n this.handle(tab);\n });\n\n return;\n }\n\n this.unsubscribe = onCommand((command, tab) => {\n if (command === name) {\n this.handle(tab);\n }\n });\n }\n\n public async destroy(): Promise<void> {\n this.unsubscribe?.();\n }\n\n protected handle(tab?: Tab): void {\n const {name, execute, ...options} = this.definition;\n\n try {\n Promise.resolve(execute(tab, {name, ...options})).catch(e => {\n console.error(\"The command execute async function crashed:\", e);\n });\n } catch (e) {\n console.error(\"The command execute function crashed:\", e);\n }\n }\n}\n"],"mappings":"AAAA,SAAQ,iBAAiB,iBAAgB;AAEzC,OAAO,aAAa;AAEpB,SAAQ,+BAA+B,0BAAyB;AAEhE;AAAA,EAEI;AAAA,OAGG;AAIP,MAAO,wBAAsB,QAAkC;AAAA,EACxC;AAAA,EAET;AAAA,EAEH,YAAY,YAAyC;AACxD,UAAM;AAEN,UAAM,EAAC,MAAM,QAAO,IAAI;AAExB,QAAI,CAAC,8BAA8B,OAAO,GAAG;AACzC,YAAM,IAAI,MAAM,uDAAuD;AAAA,IAC3E;AAEA,QAAI,CAAC,mBAAmB,IAAI,GAAG;AAC3B,YAAM,IAAI,MAAM,kDAAkD;AAAA,IACtE;AAEA,SAAK,aAAa;AAAA,MACd,GAAG;AAAA,MACH;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAa,QAAuB;AAChC,UAAM,KAAK,QAAQ;AAEnB,UAAM,EAAC,KAAI,IAAI,KAAK;AAEpB,QAAI,QAAQ,0BAA0B;AAClC,WAAK,cAAc,gBAAgB,SAAO;AACtC,aAAK,OAAO,GAAG;AAAA,MACnB,CAAC;AAED;AAAA,IACJ;AAEA,SAAK,cAAc,UAAU,CAAC,SAAS,QAAQ;AAC3C,UAAI,YAAY,MAAM;AAClB,aAAK,OAAO,GAAG;AAAA,MACnB;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,MAAa,UAAyB;AA5D1C;AA6DQ,eAAK,gBAAL;AAAA,EACJ;AAAA,EAEU,OAAO,KAAiB;AAC9B,UAAM,EAAC,MAAM,SAAS,GAAG,QAAO,IAAI,KAAK;AAEzC,QAAI;AACA,cAAQ,QAAQ,QAAQ,KAAK,EAAC,MAAM,GAAG,QAAO,CAAC,CAAC,EAAE,MAAM,OAAK;AACzD,gBAAQ,MAAM,+CAA+C,CAAC;AAAA,MAClE,CAAC;AAAA,IACL,SAAS,GAAG;AACR,cAAQ,MAAM,yCAAyC,CAAC;AAAA,IAC5D;AAAA,EACJ;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/entry/command/Builder.ts"],"sourcesContent":["import {onActionClicked, onSpecificCommand} from \"@addon-core/browser\";\n\nimport Builder from \"@entry/core/Builder\";\n\nimport {isValidCommandExecuteFunction, isValidCommandName} from \"./resolvers\";\n\nimport {\n CommandBuilder,\n CommandExecuteActionName,\n CommandResolvedDefinition,\n CommandUnresolvedDefinition,\n} from \"@typing/command\";\n\ntype Tab = chrome.tabs.Tab;\n\nexport default class extends Builder implements CommandBuilder {\n protected readonly definition: CommandResolvedDefinition;\n\n protected unsubscribe?: () => void;\n\n public constructor(definition: CommandUnresolvedDefinition) {\n super();\n\n const {name, execute} = definition;\n\n if (!isValidCommandExecuteFunction(execute)) {\n throw new Error(\"The command entrypoint must export a execute function\");\n }\n\n if (!isValidCommandName(name)) {\n throw new Error(\"The command entrypoint must export a name string\");\n }\n\n this.definition = {\n ...definition,\n name,\n execute,\n };\n }\n\n public async build(): Promise<void> {\n await this.destroy();\n\n const {name} = this.definition;\n\n if (name == CommandExecuteActionName) {\n this.unsubscribe = onActionClicked(tab => {\n this.handle(tab);\n });\n\n return;\n }\n\n this.unsubscribe = onSpecificCommand(name, tab => {\n this.handle(tab);\n });\n }\n\n public async destroy(): Promise<void> {\n this.unsubscribe?.();\n }\n\n protected handle(tab?: Tab): void {\n const {name, execute, ...options} = this.definition;\n\n try {\n Promise.resolve(execute(tab, {name, ...options})).catch(e => {\n console.error(\"The command execute async function crashed:\", e);\n });\n } catch (e) {\n console.error(\"The command execute function crashed:\", e);\n }\n }\n}\n"],"mappings":"AAAA,SAAQ,iBAAiB,yBAAwB;AAEjD,OAAO,aAAa;AAEpB,SAAQ,+BAA+B,0BAAyB;AAEhE;AAAA,EAEI;AAAA,OAGG;AAIP,MAAO,wBAAsB,QAAkC;AAAA,EACxC;AAAA,EAET;AAAA,EAEH,YAAY,YAAyC;AACxD,UAAM;AAEN,UAAM,EAAC,MAAM,QAAO,IAAI;AAExB,QAAI,CAAC,8BAA8B,OAAO,GAAG;AACzC,YAAM,IAAI,MAAM,uDAAuD;AAAA,IAC3E;AAEA,QAAI,CAAC,mBAAmB,IAAI,GAAG;AAC3B,YAAM,IAAI,MAAM,kDAAkD;AAAA,IACtE;AAEA,SAAK,aAAa;AAAA,MACd,GAAG;AAAA,MACH;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAa,QAAuB;AAChC,UAAM,KAAK,QAAQ;AAEnB,UAAM,EAAC,KAAI,IAAI,KAAK;AAEpB,QAAI,QAAQ,0BAA0B;AAClC,WAAK,cAAc,gBAAgB,SAAO;AACtC,aAAK,OAAO,GAAG;AAAA,MACnB,CAAC;AAED;AAAA,IACJ;AAEA,SAAK,cAAc,kBAAkB,MAAM,SAAO;AAC9C,WAAK,OAAO,GAAG;AAAA,IACnB,CAAC;AAAA,EACL;AAAA,EAEA,MAAa,UAAyB;AA1D1C;AA2DQ,eAAK,gBAAL;AAAA,EACJ;AAAA,EAEU,OAAO,KAAiB;AAC9B,UAAM,EAAC,MAAM,SAAS,GAAG,QAAO,IAAI,KAAK;AAEzC,QAAI;AACA,cAAQ,QAAQ,QAAQ,KAAK,EAAC,MAAM,GAAG,QAAO,CAAC,CAAC,EAAE,MAAM,OAAK;AACzD,gBAAQ,MAAM,+CAA+C,CAAC;AAAA,MAClE,CAAC;AAAA,IACL,SAAS,GAAG;AACR,cAAQ,MAAM,yCAAyC,CAAC;AAAA,IAC5D;AAAA,EACJ;AACJ;","names":[]}
package/dist/index.d.ts CHANGED
@@ -36,7 +36,7 @@ import './types/transport.js';
36
36
  import './types/message.js';
37
37
  import './types/popup.js';
38
38
  import './relay/providers/ProxyRelay.js';
39
- import '@adnbn/inject-script';
39
+ import '@addon-core/inject-script';
40
40
  import './transport/ProxyTransport.js';
41
41
  import './transport/BaseTransport.js';
42
42
  import './relay/RelayPermission.js';
@@ -3,5 +3,5 @@ export { default as DynamicLocale } from './providers/DynamicLocale.js';
3
3
  export { LocaleNativeStructure, default as NativeLocale } from './providers/NativeLocale.js';
4
4
  export { _, __, __t, _c } from './helpers.js';
5
5
  export { Language, LanguageCodes, LocaleDir, LocaleDynamicProvider, LocaleKeys, LocaleNonPluralKeys, LocalePluralKeys, LocaleProvider, LocaleStructure, LocaleSubstitutionsFor } from '../types/locale.js';
6
+ import '@addon-core/storage';
6
7
  import './providers/CustomLocale.js';
7
- import '../types/storage.js';
@@ -1,8 +1,8 @@
1
1
  import './AbstractLocale.js';
2
+ import { StorageProvider } from '@addon-core/storage';
2
3
  import NativeLocale, { LocaleNativeStructure } from './NativeLocale.js';
3
4
  import export_default$1, { CustomLocaleData } from './CustomLocale.js';
4
5
  import { LocaleDynamicProvider, Language } from '../../types/locale.js';
5
- import { StorageProvider } from '../../types/storage.js';
6
6
 
7
7
  declare class export_default<T extends LocaleNativeStructure> extends NativeLocale implements LocaleDynamicProvider<T> {
8
8
  protected cache: Map<Language, CustomLocaleData>;
@@ -1,5 +1,5 @@
1
1
  import { flattenLocaleMessages, getLocaleFilename } from "../utils.js";
2
- import { Storage } from "./../../storage/providers/index.js";
2
+ import { Storage } from "@addon-core/storage";
3
3
  import NativeLocale from "./NativeLocale.js";
4
4
  import CustomLocale from "./CustomLocale.js";
5
5
  import { LanguageCodes } from "./../../types/locale.js";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/locale/providers/DynamicLocale.ts"],"sourcesContent":["import {flattenLocaleMessages, getLocaleFilename} from \"../utils\";\n\nimport {Storage} from \"@storage/providers\";\n\nimport NativeLocale, {LocaleNativeStructure} from \"./NativeLocale\";\nimport CustomLocale, {CustomLocaleData} from \"./CustomLocale\";\n\nimport {Language, LanguageCodes, LocaleDynamicProvider, LocaleMessages} from \"@typing/locale\";\nimport {StorageProvider} from \"@typing/storage\";\n\nexport default class<T extends LocaleNativeStructure> extends NativeLocale implements LocaleDynamicProvider<T> {\n protected cache = new Map<Language, CustomLocaleData>();\n\n protected locale?: CustomLocale<T>;\n\n protected storage?: StorageProvider<Record<string, Language>>;\n protected storageKey?: string;\n\n protected unsubscribe?: () => void;\n\n constructor(storage: string | false = \"lang\") {\n super();\n\n if (storage) {\n this.storageKey = storage;\n this.storage = Storage.Local();\n }\n }\n\n public async change(lang: Language): Promise<Language> {\n if (lang === this.lang()) {\n return lang;\n }\n\n const messages = await this.fetch(lang);\n\n (this.locale ??= new CustomLocale()).setLang(lang).setData(messages);\n\n if (this.storage && this.storageKey) {\n await this.storage.set(this.storageKey, lang);\n }\n\n return lang;\n }\n\n public async sync(): Promise<Language> {\n if (!this.storage || !this.storageKey) {\n throw new Error(\"Language is not saving in storage\");\n }\n\n const lang = await this.storage.get(this.storageKey);\n\n if (!lang) {\n return this.lang();\n }\n\n if (!LanguageCodes.has(lang)) {\n console.warn(`Incorrect language code in storage - \"${lang}\"`);\n\n return this.lang();\n }\n\n return this.change(lang);\n }\n\n public watch(handler?: (lang: Language) => void): () => void {\n if (!this.storage || !this.storageKey) {\n throw new Error(\"Language is not saved in storage\");\n }\n\n if (this.unsubscribe) {\n throw new Error(\"Already subscribed to language changes in storage\");\n }\n\n this.unsubscribe = this.storage.watch({\n [this.storageKey]: newValue => {\n if (newValue) {\n this.change(newValue)\n .then(() => handler && handler(newValue))\n .catch(err => console.error(\"Error while changing language:\", err));\n }\n },\n });\n\n return this.unwatch.bind(this);\n }\n\n public unwatch(): void {\n this.unsubscribe?.();\n this.unsubscribe = undefined;\n }\n\n public lang(): Language {\n return this.locale?.lang() || super.lang();\n }\n\n protected value(key: Extract<keyof LocaleNativeStructure, string>): string | undefined {\n return this.locale?.get(key) || super.value(key);\n }\n\n protected async fetch(lang: Language): Promise<CustomLocaleData> {\n let messages = this.cache.get(lang);\n\n if (!messages) {\n const response: LocaleMessages = await (await fetch(getLocaleFilename(lang))).json();\n\n if (!response || typeof response !== \"object\") {\n throw new Error(`Invalid or empty locale data for \"${lang}\"`);\n }\n\n messages = flattenLocaleMessages(response);\n\n this.cache.set(lang, messages);\n }\n\n return messages;\n }\n}\n"],"mappings":"AAAA,SAAQ,uBAAuB,yBAAwB;AAEvD,SAAQ,eAAc;AAEtB,OAAO,kBAA2C;AAClD,OAAO,kBAAsC;AAE7C,SAAkB,qBAA2D;AAG7E,MAAO,8BAAuD,aAAiD;AAAA,EACjG,QAAQ,oBAAI,IAAgC;AAAA,EAE5C;AAAA,EAEA;AAAA,EACA;AAAA,EAEA;AAAA,EAEV,YAAY,UAA0B,QAAQ;AAC1C,UAAM;AAEN,QAAI,SAAS;AACT,WAAK,aAAa;AAClB,WAAK,UAAU,QAAQ,MAAM;AAAA,IACjC;AAAA,EACJ;AAAA,EAEA,MAAa,OAAO,MAAmC;AACnD,QAAI,SAAS,KAAK,KAAK,GAAG;AACtB,aAAO;AAAA,IACX;AAEA,UAAM,WAAW,MAAM,KAAK,MAAM,IAAI;AAEtC,KAAC,KAAK,WAAL,KAAK,SAAW,IAAI,aAAa,IAAG,QAAQ,IAAI,EAAE,QAAQ,QAAQ;AAEnE,QAAI,KAAK,WAAW,KAAK,YAAY;AACjC,YAAM,KAAK,QAAQ,IAAI,KAAK,YAAY,IAAI;AAAA,IAChD;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,MAAa,OAA0B;AACnC,QAAI,CAAC,KAAK,WAAW,CAAC,KAAK,YAAY;AACnC,YAAM,IAAI,MAAM,mCAAmC;AAAA,IACvD;AAEA,UAAM,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,UAAU;AAEnD,QAAI,CAAC,MAAM;AACP,aAAO,KAAK,KAAK;AAAA,IACrB;AAEA,QAAI,CAAC,cAAc,IAAI,IAAI,GAAG;AAC1B,cAAQ,KAAK,yCAAyC,IAAI,GAAG;AAE7D,aAAO,KAAK,KAAK;AAAA,IACrB;AAEA,WAAO,KAAK,OAAO,IAAI;AAAA,EAC3B;AAAA,EAEO,MAAM,SAAgD;AACzD,QAAI,CAAC,KAAK,WAAW,CAAC,KAAK,YAAY;AACnC,YAAM,IAAI,MAAM,kCAAkC;AAAA,IACtD;AAEA,QAAI,KAAK,aAAa;AAClB,YAAM,IAAI,MAAM,mDAAmD;AAAA,IACvE;AAEA,SAAK,cAAc,KAAK,QAAQ,MAAM;AAAA,MAClC,CAAC,KAAK,UAAU,GAAG,cAAY;AAC3B,YAAI,UAAU;AACV,eAAK,OAAO,QAAQ,EACf,KAAK,MAAM,WAAW,QAAQ,QAAQ,CAAC,EACvC,MAAM,SAAO,QAAQ,MAAM,kCAAkC,GAAG,CAAC;AAAA,QAC1E;AAAA,MACJ;AAAA,IACJ,CAAC;AAED,WAAO,KAAK,QAAQ,KAAK,IAAI;AAAA,EACjC;AAAA,EAEO,UAAgB;AAvF3B;AAwFQ,eAAK,gBAAL;AACA,SAAK,cAAc;AAAA,EACvB;AAAA,EAEO,OAAiB;AA5F5B;AA6FQ,aAAO,UAAK,WAAL,mBAAa,WAAU,MAAM,KAAK;AAAA,EAC7C;AAAA,EAEU,MAAM,KAAuE;AAhG3F;AAiGQ,aAAO,UAAK,WAAL,mBAAa,IAAI,SAAQ,MAAM,MAAM,GAAG;AAAA,EACnD;AAAA,EAEA,MAAgB,MAAM,MAA2C;AAC7D,QAAI,WAAW,KAAK,MAAM,IAAI,IAAI;AAElC,QAAI,CAAC,UAAU;AACX,YAAM,WAA2B,OAAO,MAAM,MAAM,kBAAkB,IAAI,CAAC,GAAG,KAAK;AAEnF,UAAI,CAAC,YAAY,OAAO,aAAa,UAAU;AAC3C,cAAM,IAAI,MAAM,qCAAqC,IAAI,GAAG;AAAA,MAChE;AAEA,iBAAW,sBAAsB,QAAQ;AAEzC,WAAK,MAAM,IAAI,MAAM,QAAQ;AAAA,IACjC;AAEA,WAAO;AAAA,EACX;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/locale/providers/DynamicLocale.ts"],"sourcesContent":["import {flattenLocaleMessages, getLocaleFilename} from \"../utils\";\n\nimport {Storage, type StorageProvider} from \"@addon-core/storage\";\n\nimport NativeLocale, {LocaleNativeStructure} from \"./NativeLocale\";\nimport CustomLocale, {CustomLocaleData} from \"./CustomLocale\";\n\nimport {Language, LanguageCodes, LocaleDynamicProvider, LocaleMessages} from \"@typing/locale\";\n\nexport default class<T extends LocaleNativeStructure> extends NativeLocale implements LocaleDynamicProvider<T> {\n protected cache = new Map<Language, CustomLocaleData>();\n\n protected locale?: CustomLocale<T>;\n\n protected storage?: StorageProvider<Record<string, Language>>;\n protected storageKey?: string;\n\n protected unsubscribe?: () => void;\n\n constructor(storage: string | false = \"lang\") {\n super();\n\n if (storage) {\n this.storageKey = storage;\n this.storage = Storage.Local();\n }\n }\n\n public async change(lang: Language): Promise<Language> {\n if (lang === this.lang()) {\n return lang;\n }\n\n const messages = await this.fetch(lang);\n\n (this.locale ??= new CustomLocale()).setLang(lang).setData(messages);\n\n if (this.storage && this.storageKey) {\n await this.storage.set(this.storageKey, lang);\n }\n\n return lang;\n }\n\n public async sync(): Promise<Language> {\n if (!this.storage || !this.storageKey) {\n throw new Error(\"Language is not saving in storage\");\n }\n\n const lang = await this.storage.get(this.storageKey);\n\n if (!lang) {\n return this.lang();\n }\n\n if (!LanguageCodes.has(lang)) {\n console.warn(`Incorrect language code in storage - \"${lang}\"`);\n\n return this.lang();\n }\n\n return this.change(lang);\n }\n\n public watch(handler?: (lang: Language) => void): () => void {\n if (!this.storage || !this.storageKey) {\n throw new Error(\"Language is not saved in storage\");\n }\n\n if (this.unsubscribe) {\n throw new Error(\"Already subscribed to language changes in storage\");\n }\n\n this.unsubscribe = this.storage.watch({\n [this.storageKey]: newValue => {\n if (newValue) {\n this.change(newValue)\n .then(() => handler && handler(newValue))\n .catch(err => console.error(\"Error while changing language:\", err));\n }\n },\n });\n\n return this.unwatch.bind(this);\n }\n\n public unwatch(): void {\n this.unsubscribe?.();\n this.unsubscribe = undefined;\n }\n\n public lang(): Language {\n return this.locale?.lang() || super.lang();\n }\n\n protected value(key: Extract<keyof LocaleNativeStructure, string>): string | undefined {\n return this.locale?.get(key) || super.value(key);\n }\n\n protected async fetch(lang: Language): Promise<CustomLocaleData> {\n let messages = this.cache.get(lang);\n\n if (!messages) {\n const response: LocaleMessages = await (await fetch(getLocaleFilename(lang))).json();\n\n if (!response || typeof response !== \"object\") {\n throw new Error(`Invalid or empty locale data for \"${lang}\"`);\n }\n\n messages = flattenLocaleMessages(response);\n\n this.cache.set(lang, messages);\n }\n\n return messages;\n }\n}\n"],"mappings":"AAAA,SAAQ,uBAAuB,yBAAwB;AAEvD,SAAQ,eAAoC;AAE5C,OAAO,kBAA2C;AAClD,OAAO,kBAAsC;AAE7C,SAAkB,qBAA2D;AAE7E,MAAO,8BAAuD,aAAiD;AAAA,EACjG,QAAQ,oBAAI,IAAgC;AAAA,EAE5C;AAAA,EAEA;AAAA,EACA;AAAA,EAEA;AAAA,EAEV,YAAY,UAA0B,QAAQ;AAC1C,UAAM;AAEN,QAAI,SAAS;AACT,WAAK,aAAa;AAClB,WAAK,UAAU,QAAQ,MAAM;AAAA,IACjC;AAAA,EACJ;AAAA,EAEA,MAAa,OAAO,MAAmC;AACnD,QAAI,SAAS,KAAK,KAAK,GAAG;AACtB,aAAO;AAAA,IACX;AAEA,UAAM,WAAW,MAAM,KAAK,MAAM,IAAI;AAEtC,KAAC,KAAK,WAAL,KAAK,SAAW,IAAI,aAAa,IAAG,QAAQ,IAAI,EAAE,QAAQ,QAAQ;AAEnE,QAAI,KAAK,WAAW,KAAK,YAAY;AACjC,YAAM,KAAK,QAAQ,IAAI,KAAK,YAAY,IAAI;AAAA,IAChD;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,MAAa,OAA0B;AACnC,QAAI,CAAC,KAAK,WAAW,CAAC,KAAK,YAAY;AACnC,YAAM,IAAI,MAAM,mCAAmC;AAAA,IACvD;AAEA,UAAM,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,UAAU;AAEnD,QAAI,CAAC,MAAM;AACP,aAAO,KAAK,KAAK;AAAA,IACrB;AAEA,QAAI,CAAC,cAAc,IAAI,IAAI,GAAG;AAC1B,cAAQ,KAAK,yCAAyC,IAAI,GAAG;AAE7D,aAAO,KAAK,KAAK;AAAA,IACrB;AAEA,WAAO,KAAK,OAAO,IAAI;AAAA,EAC3B;AAAA,EAEO,MAAM,SAAgD;AACzD,QAAI,CAAC,KAAK,WAAW,CAAC,KAAK,YAAY;AACnC,YAAM,IAAI,MAAM,kCAAkC;AAAA,IACtD;AAEA,QAAI,KAAK,aAAa;AAClB,YAAM,IAAI,MAAM,mDAAmD;AAAA,IACvE;AAEA,SAAK,cAAc,KAAK,QAAQ,MAAM;AAAA,MAClC,CAAC,KAAK,UAAU,GAAG,cAAY;AAC3B,YAAI,UAAU;AACV,eAAK,OAAO,QAAQ,EACf,KAAK,MAAM,WAAW,QAAQ,QAAQ,CAAC,EACvC,MAAM,SAAO,QAAQ,MAAM,kCAAkC,GAAG,CAAC;AAAA,QAC1E;AAAA,MACJ;AAAA,IACJ,CAAC;AAED,WAAO,KAAK,QAAQ,KAAK,IAAI;AAAA,EACjC;AAAA,EAEO,UAAgB;AAtF3B;AAuFQ,eAAK,gBAAL;AACA,SAAK,cAAc;AAAA,EACvB;AAAA,EAEO,OAAiB;AA3F5B;AA4FQ,aAAO,UAAK,WAAL,mBAAa,WAAU,MAAM,KAAK;AAAA,EAC7C;AAAA,EAEU,MAAM,KAAuE;AA/F3F;AAgGQ,aAAO,UAAK,WAAL,mBAAa,IAAI,SAAQ,MAAM,MAAM,GAAG;AAAA,EACnD;AAAA,EAEA,MAAgB,MAAM,MAA2C;AAC7D,QAAI,WAAW,KAAK,MAAM,IAAI,IAAI;AAElC,QAAI,CAAC,UAAU;AACX,YAAM,WAA2B,OAAO,MAAM,MAAM,kBAAkB,IAAI,CAAC,GAAG,KAAK;AAEnF,UAAI,CAAC,YAAY,OAAO,aAAa,UAAU;AAC3C,cAAM,IAAI,MAAM,qCAAqC,IAAI,GAAG;AAAA,MAChE;AAEA,iBAAW,sBAAsB,QAAQ;AAEzC,WAAK,MAAM,IAAI,MAAM,QAAQ;AAAA,IACjC;AAEA,WAAO;AAAA,EACX;AACJ;","names":[]}