adnbn 0.2.5 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/entrypoint/file/resolvers/ImportResolver.js +2 -4
- package/dist/cli/entrypoint/file/resolvers/ImportResolver.js.map +1 -1
- package/dist/cli/entrypoint/finder/AbstractFinder.js +6 -3
- package/dist/cli/entrypoint/finder/AbstractFinder.js.map +1 -1
- package/dist/cli/plugins/locale/index.js +1 -1
- package/dist/cli/plugins/locale/index.js.map +1 -1
- package/dist/cli/virtual/index.js +3 -3
- package/dist/entry/offscreen/Builder.d.ts +3 -3
- package/dist/entry/relay/Builder.d.ts +3 -3
- package/dist/entry/transport/index.d.ts +5 -5
- package/dist/entry/transport/index.js.map +1 -1
- package/dist/transport/index.d.ts +6 -0
- package/dist/transport/index.js +1 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/types/content.d.ts +1 -1
- package/dist/types/content.js.map +1 -1
- package/package.json +29 -26
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
import fs from "fs";
|
|
3
|
+
import { createRequire } from "module";
|
|
3
4
|
import TsResolver from "./TsResolver.js";
|
|
4
5
|
import { PackageName } from "./../../../../types/app.js";
|
|
5
6
|
import { EntrypointFileExtensions } from "./../../../../types/entrypoint.js";
|
|
@@ -59,10 +60,7 @@ class ImportResolver_default {
|
|
|
59
60
|
if (importPath === PackageName || importPath.startsWith(`${PackageName}/`)) {
|
|
60
61
|
return importPath;
|
|
61
62
|
}
|
|
62
|
-
|
|
63
|
-
return importPath;
|
|
64
|
-
}
|
|
65
|
-
return require.resolve(importPath, { paths: [this.baseDir] });
|
|
63
|
+
return createRequire(import.meta.url).resolve(importPath, { paths: [this.baseDir] });
|
|
66
64
|
} catch {
|
|
67
65
|
return importPath;
|
|
68
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/cli/entrypoint/file/resolvers/ImportResolver.ts"],"sourcesContent":["import path from \"path\";\nimport fs from \"fs\";\n\nimport TsResolver from \"./TsResolver\";\n\nimport {PackageName} from \"@typing/app\";\nimport {EntrypointFileExtensions} from \"@typing/entrypoint\";\n\nconst extPattern = [...EntrypointFileExtensions].map(ext => ext.replace(\".\", \"\\\\.\")).join(\"|\");\n\nconst extRegex = new RegExp(`\\\\.(${extPattern})$`, \"i\");\n\nconst isValid = (filePath: string): boolean => {\n return extRegex.test(filePath);\n};\n\nconst findFile = (basePath: string): string | undefined => {\n const candidates = [basePath, path.join(basePath, \"index\")];\n\n for (const ext of EntrypointFileExtensions) {\n for (const candidate of candidates) {\n const pathname = `${candidate}.${ext}`;\n\n if (fs.existsSync(pathname)) {\n return pathname;\n }\n }\n }\n};\n\nexport default class {\n protected baseDir: string;\n\n constructor(protected ts: TsResolver = TsResolver.make()) {\n this.baseDir = process.cwd();\n }\n\n public setTs(ts: TsResolver): this {\n this.ts = ts;\n\n return this;\n }\n\n public setBaseDir(baseDir: string): this {\n this.baseDir = baseDir;\n\n return this;\n }\n\n public get(importPath: string): string {\n if (importPath.startsWith(\".\") || importPath.startsWith(\"/\")) {\n let resolvedLocal: string | undefined = path.resolve(this.baseDir, importPath);\n\n if (isValid(resolvedLocal) && fs.existsSync(resolvedLocal)) {\n return resolvedLocal;\n }\n\n resolvedLocal = findFile(resolvedLocal);\n\n if (resolvedLocal) {\n return resolvedLocal;\n }\n\n return importPath;\n }\n\n let aliased = this.ts.matchPath(importPath);\n\n if (aliased) {\n if (isValid(aliased) && fs.existsSync(aliased)) {\n return path.resolve(aliased);\n }\n\n aliased = findFile(aliased);\n\n if (aliased) {\n return path.resolve(aliased);\n }\n }\n\n try {\n if (importPath === PackageName || importPath.startsWith(`${PackageName}/`)) {\n return importPath;\n }\n\n
|
|
1
|
+
{"version":3,"sources":["../../../../../src/cli/entrypoint/file/resolvers/ImportResolver.ts"],"sourcesContent":["import path from \"path\";\nimport fs from \"fs\";\nimport {createRequire} from \"module\";\n\nimport TsResolver from \"./TsResolver\";\n\nimport {PackageName} from \"@typing/app\";\nimport {EntrypointFileExtensions} from \"@typing/entrypoint\";\n\nconst extPattern = [...EntrypointFileExtensions].map(ext => ext.replace(\".\", \"\\\\.\")).join(\"|\");\n\nconst extRegex = new RegExp(`\\\\.(${extPattern})$`, \"i\");\n\nconst isValid = (filePath: string): boolean => {\n return extRegex.test(filePath);\n};\n\nconst findFile = (basePath: string): string | undefined => {\n const candidates = [basePath, path.join(basePath, \"index\")];\n\n for (const ext of EntrypointFileExtensions) {\n for (const candidate of candidates) {\n const pathname = `${candidate}.${ext}`;\n\n if (fs.existsSync(pathname)) {\n return pathname;\n }\n }\n }\n};\n\nexport default class {\n protected baseDir: string;\n\n constructor(protected ts: TsResolver = TsResolver.make()) {\n this.baseDir = process.cwd();\n }\n\n public setTs(ts: TsResolver): this {\n this.ts = ts;\n\n return this;\n }\n\n public setBaseDir(baseDir: string): this {\n this.baseDir = baseDir;\n\n return this;\n }\n\n public get(importPath: string): string {\n if (importPath.startsWith(\".\") || importPath.startsWith(\"/\")) {\n let resolvedLocal: string | undefined = path.resolve(this.baseDir, importPath);\n\n if (isValid(resolvedLocal) && fs.existsSync(resolvedLocal)) {\n return resolvedLocal;\n }\n\n resolvedLocal = findFile(resolvedLocal);\n\n if (resolvedLocal) {\n return resolvedLocal;\n }\n\n return importPath;\n }\n\n let aliased = this.ts.matchPath(importPath);\n\n if (aliased) {\n if (isValid(aliased) && fs.existsSync(aliased)) {\n return path.resolve(aliased);\n }\n\n aliased = findFile(aliased);\n\n if (aliased) {\n return path.resolve(aliased);\n }\n }\n\n try {\n if (importPath === PackageName || importPath.startsWith(`${PackageName}/`)) {\n return importPath;\n }\n\n return createRequire(import.meta.url).resolve(importPath, {paths: [this.baseDir]});\n } catch {\n return importPath;\n }\n }\n}\n"],"mappings":"AAAA,OAAO,UAAU;AACjB,OAAO,QAAQ;AACf,SAAQ,qBAAoB;AAE5B,OAAO,gBAAgB;AAEvB,SAAQ,mBAAkB;AAC1B,SAAQ,gCAA+B;AAEvC,MAAM,aAAa,CAAC,GAAG,wBAAwB,EAAE,IAAI,SAAO,IAAI,QAAQ,KAAK,KAAK,CAAC,EAAE,KAAK,GAAG;AAE7F,MAAM,WAAW,IAAI,OAAO,OAAO,UAAU,MAAM,GAAG;AAEtD,MAAM,UAAU,CAAC,aAA8B;AAC3C,SAAO,SAAS,KAAK,QAAQ;AACjC;AAEA,MAAM,WAAW,CAAC,aAAyC;AACvD,QAAM,aAAa,CAAC,UAAU,KAAK,KAAK,UAAU,OAAO,CAAC;AAE1D,aAAW,OAAO,0BAA0B;AACxC,eAAW,aAAa,YAAY;AAChC,YAAM,WAAW,GAAG,SAAS,IAAI,GAAG;AAEpC,UAAI,GAAG,WAAW,QAAQ,GAAG;AACzB,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AACJ;AAEA,MAAO,uBAAc;AAAA,EAGjB,YAAsB,KAAiB,WAAW,KAAK,GAAG;AAApC;AAClB,SAAK,UAAU,QAAQ,IAAI;AAAA,EAC/B;AAAA,EAJU;AAAA,EAMH,MAAM,IAAsB;AAC/B,SAAK,KAAK;AAEV,WAAO;AAAA,EACX;AAAA,EAEO,WAAW,SAAuB;AACrC,SAAK,UAAU;AAEf,WAAO;AAAA,EACX;AAAA,EAEO,IAAI,YAA4B;AACnC,QAAI,WAAW,WAAW,GAAG,KAAK,WAAW,WAAW,GAAG,GAAG;AAC1D,UAAI,gBAAoC,KAAK,QAAQ,KAAK,SAAS,UAAU;AAE7E,UAAI,QAAQ,aAAa,KAAK,GAAG,WAAW,aAAa,GAAG;AACxD,eAAO;AAAA,MACX;AAEA,sBAAgB,SAAS,aAAa;AAEtC,UAAI,eAAe;AACf,eAAO;AAAA,MACX;AAEA,aAAO;AAAA,IACX;AAEA,QAAI,UAAU,KAAK,GAAG,UAAU,UAAU;AAE1C,QAAI,SAAS;AACT,UAAI,QAAQ,OAAO,KAAK,GAAG,WAAW,OAAO,GAAG;AAC5C,eAAO,KAAK,QAAQ,OAAO;AAAA,MAC/B;AAEA,gBAAU,SAAS,OAAO;AAE1B,UAAI,SAAS;AACT,eAAO,KAAK,QAAQ,OAAO;AAAA,MAC/B;AAAA,IACJ;AAEA,QAAI;AACA,UAAI,eAAe,eAAe,WAAW,WAAW,GAAG,WAAW,GAAG,GAAG;AACxE,eAAO;AAAA,MACX;AAEA,aAAO,cAAc,YAAY,GAAG,EAAE,QAAQ,YAAY,EAAC,OAAO,CAAC,KAAK,OAAO,EAAC,CAAC;AAAA,IACrF,QAAQ;AACJ,aAAO;AAAA,IACX;AAAA,EACJ;AACJ;","names":[]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import path from "path";
|
|
2
|
+
import { createRequire } from "module";
|
|
2
3
|
import _ from "lodash";
|
|
3
4
|
import { toPosix } from "./../../../cli/utils/path.js";
|
|
4
5
|
import { getAppPath, getAppSourcePath, getSharedPath, getSourcePath } from "./../../../cli/resolvers/path.js";
|
|
@@ -49,10 +50,12 @@ class AbstractFinder_default {
|
|
|
49
50
|
return { file: filename, import: result };
|
|
50
51
|
}
|
|
51
52
|
resolve(name, filename) {
|
|
52
|
-
const
|
|
53
|
+
const spec = path.posix.join(name, filename);
|
|
54
|
+
const require2 = createRequire(import.meta.url);
|
|
55
|
+
const file = require2.resolve(spec, { paths: [process.cwd()] });
|
|
53
56
|
return {
|
|
54
|
-
file
|
|
55
|
-
import:
|
|
57
|
+
file,
|
|
58
|
+
import: spec,
|
|
56
59
|
external: name
|
|
57
60
|
};
|
|
58
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/AbstractFinder.ts"],"sourcesContent":["import path from \"path\";\nimport _ from \"lodash\";\n\nimport {toPosix} from \"@cli/utils/path\";\nimport {getAppPath, getAppSourcePath, getSharedPath, getSourcePath} from \"@cli/resolvers/path\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {EntrypointFile, EntrypointFinder} from \"@typing/entrypoint\";\n\nexport default abstract class implements EntrypointFinder {\n protected _files?: Set<EntrypointFile>;\n\n protected readonly priorityDirectories: string[];\n\n protected abstract getFiles(): Promise<Set<EntrypointFile>>;\n\n protected constructor(protected readonly config: ReadonlyConfig) {\n this.priorityDirectories = [\n \"node_modules\",\n getSourcePath(config),\n getSharedPath(config),\n getAppPath(config),\n getAppSourcePath(config),\n ];\n }\n\n public clear(): this {\n this._files = undefined;\n\n return this;\n }\n\n public async files(): Promise<Set<EntrypointFile>> {\n if (this._files) {\n return this._files;\n }\n\n const files = Array.from(await this.getFiles()).sort((a, b) => {\n const priorityA = this.priority(a);\n const priorityB = this.priority(b);\n\n if (priorityA !== priorityB) {\n return priorityA - priorityB;\n }\n\n return a.file.length - b.file.length;\n });\n\n return (this._files = new Set(files));\n }\n\n public async empty(): Promise<boolean> {\n return (await this.files()).size === 0;\n }\n\n public async exists(): Promise<boolean> {\n return !(await this.empty());\n }\n\n public holds(file: EntrypointFile): boolean {\n return this._files?.has(file) || false;\n }\n\n protected file(filename: string): EntrypointFile {\n const {dir, name} = path.parse(filename);\n\n const result = toPosix(name === \"index\" ? dir : path.join(dir, name));\n\n return {file: filename, import: result};\n }\n\n protected resolve(name: string, filename: string): EntrypointFile {\n const
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/AbstractFinder.ts"],"sourcesContent":["import path from \"path\";\nimport {createRequire} from \"module\";\nimport _ from \"lodash\";\n\nimport {toPosix} from \"@cli/utils/path\";\nimport {getAppPath, getAppSourcePath, getSharedPath, getSourcePath} from \"@cli/resolvers/path\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {EntrypointFile, EntrypointFinder} from \"@typing/entrypoint\";\n\nexport default abstract class implements EntrypointFinder {\n protected _files?: Set<EntrypointFile>;\n\n protected readonly priorityDirectories: string[];\n\n protected abstract getFiles(): Promise<Set<EntrypointFile>>;\n\n protected constructor(protected readonly config: ReadonlyConfig) {\n this.priorityDirectories = [\n \"node_modules\",\n getSourcePath(config),\n getSharedPath(config),\n getAppPath(config),\n getAppSourcePath(config),\n ];\n }\n\n public clear(): this {\n this._files = undefined;\n\n return this;\n }\n\n public async files(): Promise<Set<EntrypointFile>> {\n if (this._files) {\n return this._files;\n }\n\n const files = Array.from(await this.getFiles()).sort((a, b) => {\n const priorityA = this.priority(a);\n const priorityB = this.priority(b);\n\n if (priorityA !== priorityB) {\n return priorityA - priorityB;\n }\n\n return a.file.length - b.file.length;\n });\n\n return (this._files = new Set(files));\n }\n\n public async empty(): Promise<boolean> {\n return (await this.files()).size === 0;\n }\n\n public async exists(): Promise<boolean> {\n return !(await this.empty());\n }\n\n public holds(file: EntrypointFile): boolean {\n return this._files?.has(file) || false;\n }\n\n protected file(filename: string): EntrypointFile {\n const {dir, name} = path.parse(filename);\n\n const result = toPosix(name === \"index\" ? dir : path.join(dir, name));\n\n return {file: filename, import: result};\n }\n\n protected resolve(name: string, filename: string): EntrypointFile {\n const spec = path.posix.join(name, filename);\n\n const require = createRequire(import.meta.url);\n\n const file = require.resolve(spec, {paths: [process.cwd()]});\n\n return {\n file,\n import: spec,\n external: name,\n };\n }\n\n protected resolveSafely(name: string, filename: string): EntrypointFile | undefined {\n try {\n return this.resolve(name, filename);\n } catch {\n return undefined;\n }\n }\n\n protected priority(file: EntrypointFile): number {\n return _.findIndex(this.priorityDirectories, dir => file.file.includes(dir));\n }\n}\n"],"mappings":"AAAA,OAAO,UAAU;AACjB,SAAQ,qBAAoB;AAC5B,OAAO,OAAO;AAEd,SAAQ,eAAc;AACtB,SAAQ,YAAY,kBAAkB,eAAe,qBAAoB;AAKzE,MAAO,uBAAmD;AAAA,EAO5C,YAA+B,QAAwB;AAAxB;AACrC,SAAK,sBAAsB;AAAA,MACvB;AAAA,MACA,cAAc,MAAM;AAAA,MACpB,cAAc,MAAM;AAAA,MACpB,WAAW,MAAM;AAAA,MACjB,iBAAiB,MAAM;AAAA,IAC3B;AAAA,EACJ;AAAA,EAdU;AAAA,EAES;AAAA,EAcZ,QAAc;AACjB,SAAK,SAAS;AAEd,WAAO;AAAA,EACX;AAAA,EAEA,MAAa,QAAsC;AAC/C,QAAI,KAAK,QAAQ;AACb,aAAO,KAAK;AAAA,IAChB;AAEA,UAAM,QAAQ,MAAM,KAAK,MAAM,KAAK,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM;AAC3D,YAAM,YAAY,KAAK,SAAS,CAAC;AACjC,YAAM,YAAY,KAAK,SAAS,CAAC;AAEjC,UAAI,cAAc,WAAW;AACzB,eAAO,YAAY;AAAA,MACvB;AAEA,aAAO,EAAE,KAAK,SAAS,EAAE,KAAK;AAAA,IAClC,CAAC;AAED,WAAQ,KAAK,SAAS,IAAI,IAAI,KAAK;AAAA,EACvC;AAAA,EAEA,MAAa,QAA0B;AACnC,YAAQ,MAAM,KAAK,MAAM,GAAG,SAAS;AAAA,EACzC;AAAA,EAEA,MAAa,SAA2B;AACpC,WAAO,CAAE,MAAM,KAAK,MAAM;AAAA,EAC9B;AAAA,EAEO,MAAM,MAA+B;AA5DhD;AA6DQ,aAAO,UAAK,WAAL,mBAAa,IAAI,UAAS;AAAA,EACrC;AAAA,EAEU,KAAK,UAAkC;AAC7C,UAAM,EAAC,KAAK,KAAI,IAAI,KAAK,MAAM,QAAQ;AAEvC,UAAM,SAAS,QAAQ,SAAS,UAAU,MAAM,KAAK,KAAK,KAAK,IAAI,CAAC;AAEpE,WAAO,EAAC,MAAM,UAAU,QAAQ,OAAM;AAAA,EAC1C;AAAA,EAEU,QAAQ,MAAc,UAAkC;AAC9D,UAAM,OAAO,KAAK,MAAM,KAAK,MAAM,QAAQ;AAE3C,UAAMA,WAAU,cAAc,YAAY,GAAG;AAE7C,UAAM,OAAOA,SAAQ,QAAQ,MAAM,EAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,EAAC,CAAC;AAE3D,WAAO;AAAA,MACH;AAAA,MACA,QAAQ;AAAA,MACR,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EAEU,cAAc,MAAc,UAA8C;AAChF,QAAI;AACA,aAAO,KAAK,QAAQ,MAAM,QAAQ;AAAA,IACtC,QAAQ;AACJ,aAAO;AAAA,IACX;AAAA,EACJ;AAAA,EAEU,SAAS,MAA8B;AAC7C,WAAO,EAAE,UAAU,KAAK,qBAAqB,SAAO,KAAK,KAAK,SAAS,GAAG,CAAC;AAAA,EAC/E;AACJ;","names":["require"]}
|
|
@@ -48,7 +48,7 @@ var locale_default = definePlugin(() => {
|
|
|
48
48
|
throw new Error(`Invalid language "${lang}" provided by config`);
|
|
49
49
|
}
|
|
50
50
|
const availableLanguages = await locale.languages();
|
|
51
|
-
if (!availableLanguages.has(language)) {
|
|
51
|
+
if (availableLanguages.size > 0 && !availableLanguages.has(language)) {
|
|
52
52
|
throw new Error(
|
|
53
53
|
`Language "${language}" not found in available translations. Available languages: ${[...availableLanguages].join(", ")}`
|
|
54
54
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/cli/plugins/locale/index.ts"],"sourcesContent":["import _ from \"lodash\";\nimport {Configuration as RspackConfig, DefinePlugin} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\nimport {GenerateJsonPlugin} from \"@cli/bundler\";\nimport {extractLocaleKey, modifyLocaleMessageKey} from \"@locale/utils\";\n\nimport Locale from \"./Locale\";\n\nimport {LocaleDeclaration} from \"./declaration\";\n\nimport {Command} from \"@typing/app\";\nimport {Browser} from \"@typing/browser\";\nimport {Language, LanguageCodes} from \"@typing/locale\";\n\nexport default definePlugin(() => {\n let locale: Locale;\n let declaration: LocaleDeclaration;\n\n return {\n name: \"adnbn:locale\",\n startup: ({config}) => {\n locale = new Locale(config);\n declaration = new LocaleDeclaration(config);\n },\n locale: () => locale.files(),\n bundler: async ({config}) => {\n declaration.structure(await locale.structure()).build();\n\n const plugin = new GenerateJsonPlugin(await locale.json());\n\n if (config.command === Command.Watch) {\n plugin.watch(async () => {\n locale.clear();\n\n declaration.structure(await locale.structure()).build();\n\n return await locale.json();\n });\n }\n\n return {\n plugins: [\n plugin,\n new DefinePlugin({\n __ADNBN_LOCALE_KEYS__: JSON.stringify([...(await locale.keys())]),\n __ADNBN_DEFINED_LOCALES__: JSON.stringify([...(await locale.languages())]),\n }),\n ],\n } satisfies RspackConfig;\n },\n manifest: async ({config, manifest}) => {\n const {lang, name, shortName, description, browser} = config;\n\n let language: Language = Language.English;\n\n if (lang) {\n if (LanguageCodes.has(lang)) {\n language = lang as Language;\n } else {\n throw new Error(`Invalid language \"${lang}\" provided by config`);\n }\n\n const availableLanguages = await locale.languages();\n\n if (!availableLanguages.has(language)) {\n throw new Error(\n `Language \"${language}\" not found in available translations. Available languages: ${[...availableLanguages].join(\", \")}`\n );\n }\n }\n\n const builders = await locale.builders();\n const keys = await locale.keys();\n\n manifest.setLocale(builders.size > 0 ? language : undefined);\n\n if (builders.size > 0) {\n if (shortName) {\n let manifestShortName: string | undefined = modifyLocaleMessageKey(shortName);\n\n const shortNameKey = extractLocaleKey(shortName);\n\n if (shortNameKey) {\n if (!keys.has(shortNameKey)) {\n throw new Error(`Locale short name key \"${shortNameKey}\" not found in translation`);\n }\n\n /** Opera/Edge do not support localization in manifest's short_name field */\n if (browser === Browser.Opera || browser === Browser.Edge) {\n const instance = builders.get(language);\n\n if (!instance) {\n throw new Error(`Locale not found for \"${language}\"`);\n }\n\n manifestShortName = instance.get().get(shortNameKey);\n }\n }\n\n manifest.setShortName(manifestShortName);\n }\n\n if (description) {\n const descriptionKey = extractLocaleKey(description);\n\n if (descriptionKey && !keys.has(descriptionKey)) {\n throw new Error(`Locale description key \"${descriptionKey}\" not found in translation`);\n }\n\n manifest.setDescription(modifyLocaleMessageKey(description));\n }\n\n if (name) {\n const nameKey = extractLocaleKey(name);\n\n if (nameKey && !keys.has(nameKey)) {\n throw new Error(`Locale name key \"${nameKey}\" not found in translation`);\n }\n\n const manifestName = modifyLocaleMessageKey(name);\n\n if (manifestName) {\n manifest.setName(manifestName);\n\n return;\n }\n }\n }\n\n manifest.setName(_.startCase(config.app));\n },\n };\n});\n"],"mappings":"AAAA,OAAO,OAAO;AACd,SAAuC,oBAAmB;AAE1D,SAAQ,oBAAmB;AAC3B,SAAQ,0BAAyB;AACjC,SAAQ,kBAAkB,8BAA6B;AAEvD,OAAO,YAAY;AAEnB,SAAQ,yBAAwB;AAEhC,SAAQ,eAAc;AACtB,SAAQ,eAAc;AACtB,SAAQ,UAAU,qBAAoB;AAEtC,IAAO,iBAAQ,aAAa,MAAM;AAC9B,MAAI;AACJ,MAAI;AAEJ,SAAO;AAAA,IACH,MAAM;AAAA,IACN,SAAS,CAAC,EAAC,OAAM,MAAM;AACnB,eAAS,IAAI,OAAO,MAAM;AAC1B,oBAAc,IAAI,kBAAkB,MAAM;AAAA,IAC9C;AAAA,IACA,QAAQ,MAAM,OAAO,MAAM;AAAA,IAC3B,SAAS,OAAO,EAAC,OAAM,MAAM;AACzB,kBAAY,UAAU,MAAM,OAAO,UAAU,CAAC,EAAE,MAAM;AAEtD,YAAM,SAAS,IAAI,mBAAmB,MAAM,OAAO,KAAK,CAAC;AAEzD,UAAI,OAAO,YAAY,QAAQ,OAAO;AAClC,eAAO,MAAM,YAAY;AACrB,iBAAO,MAAM;AAEb,sBAAY,UAAU,MAAM,OAAO,UAAU,CAAC,EAAE,MAAM;AAEtD,iBAAO,MAAM,OAAO,KAAK;AAAA,QAC7B,CAAC;AAAA,MACL;AAEA,aAAO;AAAA,QACH,SAAS;AAAA,UACL;AAAA,UACA,IAAI,aAAa;AAAA,YACb,uBAAuB,KAAK,UAAU,CAAC,GAAI,MAAM,OAAO,KAAK,CAAE,CAAC;AAAA,YAChE,2BAA2B,KAAK,UAAU,CAAC,GAAI,MAAM,OAAO,UAAU,CAAE,CAAC;AAAA,UAC7E,CAAC;AAAA,QACL;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,UAAU,OAAO,EAAC,QAAQ,SAAQ,MAAM;AACpC,YAAM,EAAC,MAAM,MAAM,WAAW,aAAa,QAAO,IAAI;AAEtD,UAAI,WAAqB,SAAS;AAElC,UAAI,MAAM;AACN,YAAI,cAAc,IAAI,IAAI,GAAG;AACzB,qBAAW;AAAA,QACf,OAAO;AACH,gBAAM,IAAI,MAAM,qBAAqB,IAAI,sBAAsB;AAAA,QACnE;AAEA,cAAM,qBAAqB,MAAM,OAAO,UAAU;AAElD,YAAI,CAAC,mBAAmB,IAAI,QAAQ,GAAG;
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/plugins/locale/index.ts"],"sourcesContent":["import _ from \"lodash\";\nimport {Configuration as RspackConfig, DefinePlugin} from \"@rspack/core\";\n\nimport {definePlugin} from \"@main/plugin\";\nimport {GenerateJsonPlugin} from \"@cli/bundler\";\nimport {extractLocaleKey, modifyLocaleMessageKey} from \"@locale/utils\";\n\nimport Locale from \"./Locale\";\n\nimport {LocaleDeclaration} from \"./declaration\";\n\nimport {Command} from \"@typing/app\";\nimport {Browser} from \"@typing/browser\";\nimport {Language, LanguageCodes} from \"@typing/locale\";\n\nexport default definePlugin(() => {\n let locale: Locale;\n let declaration: LocaleDeclaration;\n\n return {\n name: \"adnbn:locale\",\n startup: ({config}) => {\n locale = new Locale(config);\n declaration = new LocaleDeclaration(config);\n },\n locale: () => locale.files(),\n bundler: async ({config}) => {\n declaration.structure(await locale.structure()).build();\n\n const plugin = new GenerateJsonPlugin(await locale.json());\n\n if (config.command === Command.Watch) {\n plugin.watch(async () => {\n locale.clear();\n\n declaration.structure(await locale.structure()).build();\n\n return await locale.json();\n });\n }\n\n return {\n plugins: [\n plugin,\n new DefinePlugin({\n __ADNBN_LOCALE_KEYS__: JSON.stringify([...(await locale.keys())]),\n __ADNBN_DEFINED_LOCALES__: JSON.stringify([...(await locale.languages())]),\n }),\n ],\n } satisfies RspackConfig;\n },\n manifest: async ({config, manifest}) => {\n const {lang, name, shortName, description, browser} = config;\n\n let language: Language = Language.English;\n\n if (lang) {\n if (LanguageCodes.has(lang)) {\n language = lang as Language;\n } else {\n throw new Error(`Invalid language \"${lang}\" provided by config`);\n }\n\n const availableLanguages = await locale.languages();\n\n if (availableLanguages.size > 0 && !availableLanguages.has(language)) {\n throw new Error(\n `Language \"${language}\" not found in available translations. Available languages: ${[...availableLanguages].join(\", \")}`\n );\n }\n }\n\n const builders = await locale.builders();\n const keys = await locale.keys();\n\n manifest.setLocale(builders.size > 0 ? language : undefined);\n\n if (builders.size > 0) {\n if (shortName) {\n let manifestShortName: string | undefined = modifyLocaleMessageKey(shortName);\n\n const shortNameKey = extractLocaleKey(shortName);\n\n if (shortNameKey) {\n if (!keys.has(shortNameKey)) {\n throw new Error(`Locale short name key \"${shortNameKey}\" not found in translation`);\n }\n\n /** Opera/Edge do not support localization in manifest's short_name field */\n if (browser === Browser.Opera || browser === Browser.Edge) {\n const instance = builders.get(language);\n\n if (!instance) {\n throw new Error(`Locale not found for \"${language}\"`);\n }\n\n manifestShortName = instance.get().get(shortNameKey);\n }\n }\n\n manifest.setShortName(manifestShortName);\n }\n\n if (description) {\n const descriptionKey = extractLocaleKey(description);\n\n if (descriptionKey && !keys.has(descriptionKey)) {\n throw new Error(`Locale description key \"${descriptionKey}\" not found in translation`);\n }\n\n manifest.setDescription(modifyLocaleMessageKey(description));\n }\n\n if (name) {\n const nameKey = extractLocaleKey(name);\n\n if (nameKey && !keys.has(nameKey)) {\n throw new Error(`Locale name key \"${nameKey}\" not found in translation`);\n }\n\n const manifestName = modifyLocaleMessageKey(name);\n\n if (manifestName) {\n manifest.setName(manifestName);\n\n return;\n }\n }\n }\n\n manifest.setName(_.startCase(config.app));\n },\n };\n});\n"],"mappings":"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","names":[]}
|
|
@@ -8,16 +8,16 @@ var command_default = 'import type {CommandUnresolvedDefinition} from "adnbn";\n
|
|
|
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
10
|
// raw-loader:./transport.ts?raw
|
|
11
|
-
var transport_default = 'import
|
|
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
13
|
// raw-loader:./offscreen.ts?raw
|
|
14
|
-
var offscreen_default = 'import type {OffscreenUnresolvedDefinition} from "adnbn";\nimport {isValidTransportDefinition, isValidTransportInitFunction
|
|
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
16
|
// raw-loader:./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
19
|
// raw-loader:./relay.ts?raw
|
|
20
|
-
var relay_default = 'import type {RelayUnresolvedDefinition} from "adnbn";\nimport {isValidTransportDefinition, isValidTransportInitFunction
|
|
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
22
|
// raw-loader:./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';
|
|
@@ -6,12 +6,12 @@ import { ViewBuilder } from '../../types/view.js';
|
|
|
6
6
|
import '../transport/AbstractBuilder.js';
|
|
7
7
|
import '../../types/entrypoint.js';
|
|
8
8
|
import '../../types/browser.js';
|
|
9
|
-
import '../../offscreen/providers/RegisterOffscreen.js';
|
|
10
|
-
import '../../transport/RegisterTransport.js';
|
|
11
|
-
import '../../transport/BaseTransport.js';
|
|
12
9
|
import 'utility-types';
|
|
13
10
|
import '../../types/helpers.js';
|
|
14
11
|
import '../../types/message.js';
|
|
12
|
+
import '../../offscreen/providers/RegisterOffscreen.js';
|
|
13
|
+
import '../../transport/RegisterTransport.js';
|
|
14
|
+
import '../../transport/BaseTransport.js';
|
|
15
15
|
import '../../offscreen/OffscreenMessage.js';
|
|
16
16
|
import '../../transport/TransportMessage.js';
|
|
17
17
|
import '../../message/providers/Message.js';
|
|
@@ -6,12 +6,12 @@ import { TransportType } from '../../types/transport.js';
|
|
|
6
6
|
import '../transport/AbstractBuilder.js';
|
|
7
7
|
import '../../types/entrypoint.js';
|
|
8
8
|
import '../../types/browser.js';
|
|
9
|
-
import 'utility-types';
|
|
10
|
-
import '../../types/helpers.js';
|
|
11
|
-
import '../../types/message.js';
|
|
12
9
|
import '../../relay/providers/RegisterRelay.js';
|
|
13
10
|
import '../../relay/providers/Relay.js';
|
|
14
11
|
import '../../transport/BaseTransport.js';
|
|
12
|
+
import 'utility-types';
|
|
13
|
+
import '../../types/helpers.js';
|
|
14
|
+
import '../../types/message.js';
|
|
15
15
|
import 'react';
|
|
16
16
|
|
|
17
17
|
declare class export_default<T extends TransportType> extends export_default$1 {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
export { isValidTransportDefinition, isValidTransportInitFunction, isValidTransportMainFunction, isValidTransportName } from './resolvers/definition.js';
|
|
2
|
-
|
|
3
|
-
import '
|
|
2
|
+
import '../../types/transport.js';
|
|
3
|
+
import 'utility-types';
|
|
4
4
|
import '../../types/entrypoint.js';
|
|
5
5
|
import '../../types/browser.js';
|
|
6
|
-
import '../../types/content.js';
|
|
7
|
-
import 'react';
|
|
8
|
-
import 'utility-types';
|
|
9
6
|
import '../../types/helpers.js';
|
|
10
7
|
import '../../types/message.js';
|
|
8
|
+
import '../../types/relay.js';
|
|
9
|
+
import '../../types/content.js';
|
|
10
|
+
import 'react';
|
|
11
11
|
import '../../types/offscreen.js';
|
|
12
12
|
import '../../types/view.js';
|
|
13
13
|
import 'html-rspack-tags-plugin';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/entry/transport/index.ts"],"sourcesContent":["export * from \"./resolvers\";\
|
|
1
|
+
{"version":3,"sources":["../../../src/entry/transport/index.ts"],"sourcesContent":["export * from \"./resolvers\";\n"],"mappings":"AAAA,cAAc;","names":[]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { TransportDefinition, TransportName, TransportOptions, TransportResolvedDefinition, TransportType, TransportUnresolvedDefinition } from '../types/transport.js';
|
|
2
|
+
import 'utility-types';
|
|
3
|
+
import '../types/entrypoint.js';
|
|
4
|
+
import '../types/browser.js';
|
|
5
|
+
import '../types/helpers.js';
|
|
6
|
+
import '../types/message.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/types/content.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { Awaiter, PickNonFunctionProperties } from './helpers.js';
|
|
|
5
5
|
import './browser.js';
|
|
6
6
|
|
|
7
7
|
type ExecutionWorld = chrome.scripting.ExecutionWorld;
|
|
8
|
-
type RunAt = chrome.
|
|
8
|
+
type RunAt = chrome.extensionTypes.RunAt;
|
|
9
9
|
declare const ContentScriptMatches: string[];
|
|
10
10
|
interface ContentScriptConfig {
|
|
11
11
|
matches?: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/types/content.ts"],"sourcesContent":["import type {FC, ReactNode} from \"react\";\nimport {Optional} from \"utility-types\";\n\nimport {EntrypointBuilder, EntrypointOptions} from \"@typing/entrypoint\";\nimport {Awaiter, PickNonFunctionProperties} from \"@typing/helpers\";\n\ntype ExecutionWorld = chrome.scripting.ExecutionWorld;\ntype RunAt = chrome.
|
|
1
|
+
{"version":3,"sources":["../../src/types/content.ts"],"sourcesContent":["import type {FC, ReactNode} from \"react\";\nimport {Optional} from \"utility-types\";\n\nimport {EntrypointBuilder, EntrypointOptions} from \"@typing/entrypoint\";\nimport {Awaiter, PickNonFunctionProperties} from \"@typing/helpers\";\n\ntype ExecutionWorld = chrome.scripting.ExecutionWorld;\ntype RunAt = chrome.extensionTypes.RunAt;\n\nexport const ContentScriptMatches = [\"http://*/*\", \"https://*/*\"];\n\nexport interface ContentScriptConfig {\n matches?: string[];\n /**\n * See https://developer.chrome.com/docs/extensions/mv3/content_scripts/\n * @default []\n */\n excludeMatches?: string[];\n /**\n * See https://developer.chrome.com/docs/extensions/mv3/content_scripts/\n * @default []\n */\n includeGlobs?: string[];\n /**\n * See https://developer.chrome.com/docs/extensions/mv3/content_scripts/\n * @default []\n */\n excludeGlobs?: string[];\n /**\n * See https://developer.chrome.com/docs/extensions/mv3/content_scripts/\n * @default false\n */\n allFrames?: boolean;\n /**\n * See https://developer.chrome.com/docs/extensions/mv3/content_scripts/\n * @default \"documentIdle\"\n */\n runAt?: RunAt;\n /**\n * See https://developer.chrome.com/docs/extensions/develop/concepts/content-scripts#isolated_world\n */\n world?: ExecutionWorld;\n /**\n * See https://developer.chrome.com/docs/extensions/mv3/content_scripts/\n * @default false\n */\n matchAboutBlank?: boolean;\n /**\n * See https://developer.chrome.com/docs/extensions/mv3/content_scripts/\n * @default false\n */\n matchOriginAsFallback?: boolean;\n /**\n * Whether this content script requires explicit permission declaration in the extension manifest.\n * When set to true, the content script must be declared in the manifest.json permissions section\n * to be allowed to run on the specified pages.\n *\n * @see https://developer.chrome.com/docs/extensions/mv3/declare_permissions/\n *\n * @default false\n */\n declarative?: boolean;\n}\n\nexport type ContentScriptOptions = ContentScriptConfig & EntrypointOptions;\n\nexport type ContentScriptEntrypointOptions = Partial<ContentScriptOptions>;\n\n// Append\nexport enum ContentScriptAppend {\n Last = \"last\",\n First = \"first\",\n Replace = \"replace\",\n Before = \"before\",\n After = \"after\",\n}\n\n// Mount\nexport type ContentScriptMountFunction = (anchor: Element, container: Element) => void | (() => void);\n\nexport interface ContentScriptMount {\n mount(): boolean | undefined | void;\n\n unmount(): boolean | undefined | void;\n}\n\n// Props\nexport interface ContentScriptProps extends ContentScriptEntrypointOptions {\n anchor: Element;\n}\n\n// Anchor\nexport type ContentScriptAnchor = string | Element | null | undefined;\nexport type ContentScriptAnchorGetter = () => Awaiter<ContentScriptAnchor>;\nexport type ContentScriptAnchorResolver = () => Awaiter<Element[]>;\n\n// Render\nexport type ContentScriptRenderReactComponent = FC<ContentScriptProps>;\nexport type ContentScriptRenderValue = Element | ReactNode | ContentScriptRenderReactComponent;\nexport type ContentScriptRenderHandler = (props: ContentScriptProps) => Awaiter<undefined | ContentScriptRenderValue>;\n\n// Container\nexport type ContentScriptContainerTag = Exclude<keyof HTMLElementTagNameMap, \"html\" | \"body\">;\n\nexport type ContentScriptContainerOptions = {\n [Tag in ContentScriptContainerTag]: {\n tagName: Tag;\n } & Exclude<Optional<PickNonFunctionProperties<HTMLElementTagNameMap[Tag]>>, \"id\">;\n}[ContentScriptContainerTag];\n\nexport type ContentScriptContainerFactory = (\n props: ContentScriptProps\n) => Awaiter<Element | ContentScriptContainerTag | ContentScriptContainerOptions>;\nexport type ContentScriptContainerCreator = (props: ContentScriptProps) => Awaiter<Element>;\n\n// Watch\nexport type ContentScriptWatchStrategy = (update: () => void, context: ContentScriptContext) => () => void;\n\n// Event\nexport enum ContentScriptEvent {\n Mount = \"mount\",\n Unmount = \"unmount\",\n Add = \"add\",\n Remove = \"remove\",\n}\n\nexport type ContentScriptEventCallback = (event: ContentScriptEvent, node: ContentScriptNode) => void;\n\nexport interface ContentScriptEventEmitter {\n on(callback: ContentScriptEventCallback): void;\n\n off(callback: ContentScriptEventCallback): void;\n\n emit(event: ContentScriptEvent, node: ContentScriptNode): void;\n\n emitMount(node: ContentScriptNode): void;\n\n emitUnmount(node: ContentScriptNode): void;\n\n emitAdd(node: ContentScriptNode): void;\n\n emitRemove(node: ContentScriptNode): void;\n\n removeAllListeners(): void;\n\n listenerCount(): number;\n\n hasListeners(): boolean;\n}\n\n// Context\nexport interface ContentScriptContext extends ContentScriptMount {\n nodes: ReadonlySet<ContentScriptNode>;\n\n /**\n * Registers a callback function that will be invoked when a specific content script context event occurs.\n *\n * @param {ContentScriptEventCallback} callback - The function to be executed when the event is triggered. Receives event-related data as its argument.\n * @return {Function} A function that can be called to unsubscribe the callback from the event.\n */\n watch(callback: ContentScriptEventCallback): () => void;\n\n /**\n * Stops watching for changes or events that were previously being observed.\n * Unsubscribes from all event listeners that were registered through the watch method.\n *\n * @return {void} No return value.\n */\n unwatch(): void;\n}\n\n// Main\nexport type ContentScriptMainFunction = (context: ContentScriptContext, options: ContentScriptOptions) => Awaiter<void>;\n\n// Node\nexport interface ContentScriptNode extends ContentScriptMount {\n anchor: Element;\n container?: Element;\n}\n\nexport type ContentScriptNodeSet = Set<ContentScriptNode>;\n\n// Definition\nexport interface ContentScriptDefinition extends ContentScriptEntrypointOptions {\n anchor?: ContentScriptAnchor | ContentScriptAnchorGetter;\n mount?: ContentScriptMountFunction;\n render?: ContentScriptRenderValue | ContentScriptRenderHandler;\n container?: ContentScriptContainerTag | ContentScriptContainerOptions | ContentScriptContainerFactory;\n watch?: true | ContentScriptWatchStrategy;\n main?: ContentScriptMainFunction;\n}\n\n// prettier-ignore\nexport interface ContentScriptResolvedDefinition extends Omit<ContentScriptDefinition, \"anchor\" | \"mount\" | \"container\" | \"render\" | \"watch\"> {\n anchor: ContentScriptAnchorResolver;\n mount: ContentScriptMountFunction;\n render?: ContentScriptRenderHandler;\n container: ContentScriptContainerCreator;\n watch: ContentScriptWatchStrategy;\n}\n\nexport interface ContentScriptAppendDefinition extends Omit<ContentScriptDefinition, \"mount\"> {\n append?: ContentScriptAppend;\n}\n\n// Builder\nexport interface ContentScriptBuilder extends EntrypointBuilder {\n getContext(): ContentScriptContext;\n}\n"],"mappings":"AASO,MAAM,uBAAuB,CAAC,cAAc,aAAa;AA4DzD,IAAK,sBAAL,kBAAKA,yBAAL;AACH,EAAAA,qBAAA,UAAO;AACP,EAAAA,qBAAA,WAAQ;AACR,EAAAA,qBAAA,aAAU;AACV,EAAAA,qBAAA,YAAS;AACT,EAAAA,qBAAA,WAAQ;AALA,SAAAA;AAAA,GAAA;AAkDL,IAAK,qBAAL,kBAAKC,wBAAL;AACH,EAAAA,oBAAA,WAAQ;AACR,EAAAA,oBAAA,aAAU;AACV,EAAAA,oBAAA,SAAM;AACN,EAAAA,oBAAA,YAAS;AAJD,SAAAA;AAAA,GAAA;","names":["ContentScriptAppend","ContentScriptEvent"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "adnbn",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.6",
|
|
5
5
|
"description": "Addon 💀 Bone - Cross-browser web extension framework with shared code base",
|
|
6
6
|
"homepage": "https://github.com/addonbone/addonbone",
|
|
7
7
|
"repository": {
|
|
@@ -39,6 +39,18 @@
|
|
|
39
39
|
"types": "./dist/index.d.ts",
|
|
40
40
|
"default": "./dist/index.js"
|
|
41
41
|
},
|
|
42
|
+
"./entry/*": {
|
|
43
|
+
"types": "./dist/entry/*/index.d.ts",
|
|
44
|
+
"default": "./dist/entry/*/index.js"
|
|
45
|
+
},
|
|
46
|
+
"./entry/content/*": {
|
|
47
|
+
"types": "./dist/entry/content/adapters/*/index.d.ts",
|
|
48
|
+
"default": "./dist/entry/content/adapters/*/index.js"
|
|
49
|
+
},
|
|
50
|
+
"./entry/view/*": {
|
|
51
|
+
"types": "./dist/entry/view/adapters/*/index.d.ts",
|
|
52
|
+
"default": "./dist/entry/view/adapters/*/index.js"
|
|
53
|
+
},
|
|
42
54
|
"./locale": {
|
|
43
55
|
"types": "./dist/locale/index.d.ts",
|
|
44
56
|
"default": "./dist/locale/index.js"
|
|
@@ -59,6 +71,14 @@
|
|
|
59
71
|
"types": "./dist/offscreen/index.d.ts",
|
|
60
72
|
"default": "./dist/offscreen/index.js"
|
|
61
73
|
},
|
|
74
|
+
"./relay": {
|
|
75
|
+
"types": "./dist/relay/index.d.ts",
|
|
76
|
+
"default": "./dist/relay/index.js"
|
|
77
|
+
},
|
|
78
|
+
"./service": {
|
|
79
|
+
"types": "./dist/service/index.d.ts",
|
|
80
|
+
"default": "./dist/service/index.js"
|
|
81
|
+
},
|
|
62
82
|
"./storage": {
|
|
63
83
|
"types": "./dist/storage/index.d.ts",
|
|
64
84
|
"default": "./dist/storage/index.js"
|
|
@@ -67,25 +87,9 @@
|
|
|
67
87
|
"types": "./dist/storage/adapters/*/index.d.ts",
|
|
68
88
|
"default": "./dist/storage/adapters/*/index.js"
|
|
69
89
|
},
|
|
70
|
-
"./
|
|
71
|
-
"types": "./dist/
|
|
72
|
-
"default": "./dist/
|
|
73
|
-
},
|
|
74
|
-
"./relay": {
|
|
75
|
-
"types": "./dist/relay/index.d.ts",
|
|
76
|
-
"default": "./dist/relay/index.js"
|
|
77
|
-
},
|
|
78
|
-
"./entry/*": {
|
|
79
|
-
"types": "./dist/entry/*/index.d.ts",
|
|
80
|
-
"default": "./dist/entry/*/index.js"
|
|
81
|
-
},
|
|
82
|
-
"./entry/content/*": {
|
|
83
|
-
"types": "./dist/entry/content/adapters/*/index.d.ts",
|
|
84
|
-
"default": "./dist/entry/content/adapters/*/index.js"
|
|
85
|
-
},
|
|
86
|
-
"./entry/view/*": {
|
|
87
|
-
"types": "./dist/entry/view/adapters/*/index.d.ts",
|
|
88
|
-
"default": "./dist/entry/view/adapters/*/index.js"
|
|
90
|
+
"./transport": {
|
|
91
|
+
"types": "./dist/transport/index.d.ts",
|
|
92
|
+
"default": "./dist/transport/index.js"
|
|
89
93
|
},
|
|
90
94
|
"./client-types": {
|
|
91
95
|
"types": "./types/client.d.ts"
|
|
@@ -110,6 +114,7 @@
|
|
|
110
114
|
"@swc/core": "^1.11.7",
|
|
111
115
|
"@testing-library/jest-dom": "^6.6.3",
|
|
112
116
|
"@testing-library/react": "^16.3.0",
|
|
117
|
+
"@types/chrome": "^0.1.3",
|
|
113
118
|
"@types/jest": "^29.5.14",
|
|
114
119
|
"@types/js-yaml": "^4.0.9",
|
|
115
120
|
"@types/lodash": "^4.17.14",
|
|
@@ -119,7 +124,6 @@
|
|
|
119
124
|
"cross-env": "^7.0.3",
|
|
120
125
|
"dotenv": "^16.4.7",
|
|
121
126
|
"esbuild-fix-imports-plugin": "^1.0.21",
|
|
122
|
-
"esbuild-plugin-copy": "^2.1.1",
|
|
123
127
|
"esbuild-plugin-raw": "^0.1.8",
|
|
124
128
|
"fs-extra": "^11.3.0",
|
|
125
129
|
"globby": "^14.1.0",
|
|
@@ -138,10 +142,9 @@
|
|
|
138
142
|
"@adnbn/browser": "^0.1.7",
|
|
139
143
|
"@adnbn/inject-script": "^0.2.2",
|
|
140
144
|
"@rsdoctor/rspack-plugin": "^1.0.2",
|
|
141
|
-
"@rspack/cli": "^1.
|
|
142
|
-
"@rspack/core": "^1.
|
|
145
|
+
"@rspack/cli": "^1.4.11",
|
|
146
|
+
"@rspack/core": "^1.4.11",
|
|
143
147
|
"@svgr/webpack": "^8.1.0",
|
|
144
|
-
"@types/chrome": "^0.0.323",
|
|
145
148
|
"buffer": "^6.0.3",
|
|
146
149
|
"c12": "^3.0.3",
|
|
147
150
|
"cac": "^6.7.14",
|
|
@@ -178,6 +181,7 @@
|
|
|
178
181
|
"peerDependencies": {
|
|
179
182
|
"@types/react": "*",
|
|
180
183
|
"@types/react-dom": "*",
|
|
184
|
+
"@types/chrome": "*",
|
|
181
185
|
"react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
|
|
182
186
|
"react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
|
|
183
187
|
},
|
|
@@ -188,6 +192,5 @@
|
|
|
188
192
|
"@types/react-dom": {
|
|
189
193
|
"optional": true
|
|
190
194
|
}
|
|
191
|
-
}
|
|
192
|
-
"packageManager": "pnpm@10.12.1+sha512.f0dda8580f0ee9481c5c79a1d927b9164f2c478e90992ad268bbb2465a736984391d6333d2c327913578b2804af33474ca554ba29c04a8b13060a717675ae3ac"
|
|
195
|
+
}
|
|
193
196
|
}
|