wxt 0.20.13 → 0.20.15
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/browser.d.mts +20 -0
- package/dist/browser.mjs +18 -3
- package/dist/builtin-modules/index.mjs +7 -2
- package/dist/builtin-modules/unimport.mjs +69 -75
- package/dist/cli/cli-utils.mjs +54 -50
- package/dist/cli/commands.mjs +78 -103
- package/dist/cli/index.d.mts +1 -0
- package/dist/cli/index.mjs +9 -4
- package/dist/core/{build.d.ts → build.d.mts} +6 -2
- package/dist/core/build.mjs +23 -4
- package/dist/core/builders/vite/index.mjs +293 -343
- package/dist/core/builders/vite/plugins/bundleAnalysis.mjs +11 -12
- package/dist/core/builders/vite/plugins/cssEntrypoints.mjs +27 -20
- package/dist/core/builders/vite/plugins/defineImportMeta.mjs +17 -12
- package/dist/core/builders/vite/plugins/devHtmlPrerender.mjs +105 -136
- package/dist/core/builders/vite/plugins/devServerGlobals.mjs +15 -14
- package/dist/core/builders/vite/plugins/download.mjs +23 -12
- package/dist/core/builders/vite/plugins/entrypointGroupGlobals.mjs +18 -14
- package/dist/core/builders/vite/plugins/extensionApiMock.mjs +31 -33
- package/dist/core/builders/vite/plugins/globals.mjs +14 -13
- package/dist/core/builders/vite/plugins/iifeFooter.mjs +17 -11
- package/dist/core/builders/vite/plugins/index.mjs +18 -16
- package/dist/core/builders/vite/plugins/noopBackground.mjs +21 -15
- package/dist/core/builders/vite/plugins/removeEntrypointMainFunction.mjs +26 -23
- package/dist/core/builders/vite/plugins/resolveAppConfig.mjs +26 -24
- package/dist/core/builders/vite/plugins/resolveVirtualModules.mjs +28 -26
- package/dist/core/builders/vite/plugins/tsconfigPaths.mjs +11 -11
- package/dist/core/builders/vite/plugins/wxtPluginLoader.mjs +42 -47
- package/dist/core/{clean.d.ts → clean.d.mts} +7 -3
- package/dist/core/clean.mjs +38 -35
- package/dist/core/{create-server.d.ts → create-server.d.mts} +6 -2
- package/dist/core/create-server.mjs +236 -247
- package/dist/core/define-config.d.mts +6 -0
- package/dist/core/define-config.mjs +6 -2
- package/dist/core/define-web-ext-config.d.mts +13 -0
- package/dist/core/define-web-ext-config.mjs +16 -7
- package/dist/core/generate-wxt-dir.mjs +110 -148
- package/dist/core/index.d.mts +9 -0
- package/dist/core/index.mjs +12 -8
- package/dist/core/initialize.d.mts +8 -0
- package/dist/core/initialize.mjs +110 -124
- package/dist/core/keyboard-shortcuts.mjs +30 -28
- package/dist/core/package-managers/bun.mjs +18 -16
- package/dist/core/package-managers/deno.mjs +12 -8
- package/dist/core/package-managers/index.mjs +52 -60
- package/dist/core/package-managers/npm.mjs +51 -52
- package/dist/core/package-managers/pnpm.mjs +21 -18
- package/dist/core/package-managers/yarn.mjs +31 -28
- package/dist/core/prepare.d.mts +6 -0
- package/dist/core/prepare.mjs +12 -7
- package/dist/core/resolve-config.mjs +393 -462
- package/dist/core/runners/index.mjs +15 -10
- package/dist/core/runners/manual.mjs +13 -14
- package/dist/core/runners/safari.mjs +13 -14
- package/dist/core/runners/web-ext.mjs +62 -83
- package/dist/core/runners/wsl.mjs +13 -14
- package/dist/core/utils/arrays.mjs +23 -12
- package/dist/core/utils/building/build-entrypoints.mjs +44 -40
- package/dist/core/utils/building/detect-dev-changes.mjs +84 -105
- package/dist/core/utils/building/find-entrypoints.mjs +278 -359
- package/dist/core/utils/building/group-entrypoints.mjs +42 -35
- package/dist/core/utils/building/index.mjs +8 -6
- package/dist/core/utils/building/internal-build.mjs +86 -102
- package/dist/core/utils/building/rebuild.mjs +50 -30
- package/dist/core/utils/cache.mjs +29 -18
- package/dist/core/utils/constants.mjs +9 -1
- package/dist/core/utils/content-scripts.mjs +56 -54
- package/dist/core/utils/content-security-policy.mjs +36 -39
- package/dist/core/utils/entrypoints.mjs +51 -28
- package/dist/core/utils/env.mjs +22 -17
- package/dist/core/utils/environments/browser-environment.mjs +13 -12
- package/dist/core/utils/environments/environment.mjs +36 -33
- package/dist/core/utils/environments/extension-environment.mjs +15 -10
- package/dist/core/utils/environments/index.mjs +4 -2
- package/dist/core/utils/eslint.mjs +11 -10
- package/dist/core/utils/fs.mjs +23 -11
- package/dist/core/utils/globals.mjs +53 -51
- package/dist/core/utils/i18n.mjs +41 -32
- package/dist/core/utils/index.mjs +3 -0
- package/dist/core/utils/log/index.mjs +6 -4
- package/dist/core/utils/log/printBuildSummary.mjs +20 -25
- package/dist/core/utils/log/printFileList.mjs +30 -33
- package/dist/core/utils/log/printHeader.mjs +9 -5
- package/dist/core/utils/log/printTable.mjs +19 -21
- package/dist/core/utils/manifest.mjs +366 -479
- package/dist/core/utils/minimatch-multiple.mjs +26 -15
- package/dist/core/utils/network.mjs +27 -33
- package/dist/core/utils/number.mjs +7 -3
- package/dist/core/utils/package.mjs +20 -13
- package/dist/core/utils/paths.d.mts +8 -0
- package/dist/core/utils/paths.mjs +26 -7
- package/dist/core/utils/strings.mjs +19 -14
- package/dist/core/utils/syntax-errors.mjs +14 -16
- package/dist/core/utils/time.mjs +19 -15
- package/dist/core/utils/transform.mjs +129 -160
- package/dist/core/utils/types.d.mts +6 -0
- package/dist/core/utils/validation.mjs +43 -50
- package/dist/core/utils/virtual-modules.mjs +20 -12
- package/dist/core/utils/wsl.mjs +11 -3
- package/dist/core/wxt.mjs +65 -60
- package/dist/core/{zip.d.ts → zip.d.mts} +6 -2
- package/dist/core/zip.mjs +118 -140
- package/dist/index.d.mts +13 -0
- package/dist/index.mjs +13 -3
- package/dist/{modules.d.ts → modules.d.mts} +14 -16
- package/dist/modules.mjs +179 -51
- package/dist/testing/fake-browser.d.mts +2 -0
- package/dist/testing/fake-browser.mjs +3 -1
- package/dist/testing/index.d.mts +3 -0
- package/dist/testing/index.mjs +4 -2
- package/dist/testing/{wxt-vitest-plugin.d.ts → wxt-vitest-plugin.d.mts} +7 -9
- package/dist/testing/wxt-vitest-plugin.mjs +38 -19
- package/dist/types.d.mts +1475 -0
- package/dist/utils/app-config.d.mts +6 -0
- package/dist/utils/app-config.mjs +8 -2
- package/dist/utils/content-script-context.d.mts +134 -0
- package/dist/utils/content-script-context.mjs +187 -175
- package/dist/utils/content-script-ui/iframe.d.mts +42 -0
- package/dist/utils/content-script-ui/iframe.mjs +42 -27
- package/dist/utils/content-script-ui/integrated.d.mts +37 -0
- package/dist/utils/content-script-ui/integrated.mjs +36 -29
- package/dist/utils/content-script-ui/shadow-root.d.mts +80 -0
- package/dist/utils/content-script-ui/shadow-root.mjs +75 -82
- package/dist/utils/content-script-ui/shared.mjs +115 -150
- package/dist/utils/content-script-ui/types.d.mts +107 -0
- package/dist/utils/content-script-ui/types.mjs +1 -0
- package/dist/utils/{define-app-config.d.ts → define-app-config.d.mts} +5 -3
- package/dist/utils/define-app-config.mjs +22 -2
- package/dist/utils/define-background.d.mts +7 -0
- package/dist/utils/define-background.mjs +7 -3
- package/dist/utils/define-content-script.d.mts +6 -0
- package/dist/utils/define-content-script.mjs +6 -2
- package/dist/utils/define-unlisted-script.d.mts +7 -0
- package/dist/utils/define-unlisted-script.mjs +7 -3
- package/dist/utils/define-wxt-plugin.d.mts +6 -0
- package/dist/utils/define-wxt-plugin.mjs +6 -2
- package/dist/utils/inject-script.d.mts +41 -0
- package/dist/utils/inject-script.mjs +44 -34
- package/dist/utils/internal/custom-events.d.mts +9 -0
- package/dist/utils/internal/custom-events.mjs +18 -10
- package/dist/utils/internal/location-watcher.mjs +23 -20
- package/dist/utils/internal/logger.mjs +15 -12
- package/dist/utils/match-patterns.d.mts +1 -0
- package/dist/utils/match-patterns.mjs +3 -1
- package/dist/utils/{split-shadow-root-css.d.ts → split-shadow-root-css.d.mts} +6 -3
- package/dist/utils/split-shadow-root-css.mjs +16 -7
- package/dist/utils/storage.d.mts +1 -0
- package/dist/utils/storage.mjs +3 -1
- package/dist/version.d.mts +4 -0
- package/dist/version.mjs +5 -1
- package/dist/virtual/background-entrypoint.d.mts +4 -0
- package/dist/virtual/background-entrypoint.mjs +143 -161
- package/dist/virtual/content-script-isolated-world-entrypoint.d.mts +4 -0
- package/dist/virtual/content-script-isolated-world-entrypoint.mjs +26 -27
- package/dist/virtual/content-script-main-world-entrypoint.d.mts +4 -0
- package/dist/virtual/content-script-main-world-entrypoint.mjs +24 -24
- package/dist/virtual/mock-browser.d.mts +6 -0
- package/dist/virtual/mock-browser.mjs +5 -3
- package/dist/virtual/reload-html.d.mts +1 -0
- package/dist/virtual/reload-html.mjs +57 -53
- package/dist/virtual/unlisted-script-entrypoint.d.mts +4 -0
- package/dist/virtual/unlisted-script-entrypoint.mjs +35 -43
- package/package.json +56 -50
- package/dist/browser.d.ts +0 -30
- package/dist/builtin-modules/index.d.ts +0 -2
- package/dist/builtin-modules/unimport.d.ts +0 -5
- package/dist/cli/cli-utils.d.ts +0 -25
- package/dist/cli/commands.d.ts +0 -2
- package/dist/cli/index.d.ts +0 -1
- package/dist/core/builders/vite/index.d.ts +0 -7
- package/dist/core/builders/vite/plugins/bundleAnalysis.d.ts +0 -7
- package/dist/core/builders/vite/plugins/cssEntrypoints.d.ts +0 -13
- package/dist/core/builders/vite/plugins/defineImportMeta.d.ts +0 -14
- package/dist/core/builders/vite/plugins/devHtmlPrerender.d.ts +0 -7
- package/dist/core/builders/vite/plugins/devServerGlobals.d.ts +0 -6
- package/dist/core/builders/vite/plugins/download.d.ts +0 -10
- package/dist/core/builders/vite/plugins/entrypointGroupGlobals.d.ts +0 -6
- package/dist/core/builders/vite/plugins/extensionApiMock.d.ts +0 -6
- package/dist/core/builders/vite/plugins/globals.d.ts +0 -3
- package/dist/core/builders/vite/plugins/iifeFooter.d.ts +0 -8
- package/dist/core/builders/vite/plugins/index.d.ts +0 -16
- package/dist/core/builders/vite/plugins/noopBackground.d.ts +0 -6
- package/dist/core/builders/vite/plugins/removeEntrypointMainFunction.d.ts +0 -6
- package/dist/core/builders/vite/plugins/resolveAppConfig.d.ts +0 -6
- package/dist/core/builders/vite/plugins/resolveVirtualModules.d.ts +0 -6
- package/dist/core/builders/vite/plugins/tsconfigPaths.d.ts +0 -3
- package/dist/core/builders/vite/plugins/wxtPluginLoader.d.ts +0 -6
- package/dist/core/define-config.d.ts +0 -2
- package/dist/core/define-web-ext-config.d.ts +0 -9
- package/dist/core/generate-wxt-dir.d.ts +0 -5
- package/dist/core/index.d.ts +0 -8
- package/dist/core/initialize.d.ts +0 -5
- package/dist/core/keyboard-shortcuts.d.ts +0 -12
- package/dist/core/package-managers/bun.d.ts +0 -2
- package/dist/core/package-managers/deno.d.ts +0 -2
- package/dist/core/package-managers/index.d.ts +0 -2
- package/dist/core/package-managers/npm.d.ts +0 -17
- package/dist/core/package-managers/pnpm.d.ts +0 -2
- package/dist/core/package-managers/types.d.ts +0 -2
- package/dist/core/package-managers/types.mjs +0 -0
- package/dist/core/package-managers/yarn.d.ts +0 -2
- package/dist/core/prepare.d.ts +0 -2
- package/dist/core/resolve-config.d.ts +0 -11
- package/dist/core/runners/index.d.ts +0 -2
- package/dist/core/runners/manual.d.ts +0 -5
- package/dist/core/runners/safari.d.ts +0 -5
- package/dist/core/runners/web-ext.d.ts +0 -5
- package/dist/core/runners/wsl.d.ts +0 -5
- package/dist/core/utils/arrays.d.ts +0 -13
- package/dist/core/utils/building/build-entrypoints.d.ts +0 -3
- package/dist/core/utils/building/detect-dev-changes.d.ts +0 -61
- package/dist/core/utils/building/find-entrypoints.d.ts +0 -5
- package/dist/core/utils/building/group-entrypoints.d.ts +0 -8
- package/dist/core/utils/building/index.d.ts +0 -6
- package/dist/core/utils/building/internal-build.d.ts +0 -12
- package/dist/core/utils/building/rebuild.d.ts +0 -23
- package/dist/core/utils/cache.d.ts +0 -8
- package/dist/core/utils/cli.d.ts +0 -3
- package/dist/core/utils/cli.mjs +0 -26
- package/dist/core/utils/constants.d.ts +0 -5
- package/dist/core/utils/content-scripts.d.ts +0 -12
- package/dist/core/utils/content-security-policy.d.ts +0 -14
- package/dist/core/utils/entrypoints.d.ts +0 -31
- package/dist/core/utils/env.d.ts +0 -5
- package/dist/core/utils/environments/browser-environment.d.ts +0 -3
- package/dist/core/utils/environments/environment.d.ts +0 -8
- package/dist/core/utils/environments/extension-environment.d.ts +0 -6
- package/dist/core/utils/environments/index.d.ts +0 -2
- package/dist/core/utils/eslint.d.ts +0 -1
- package/dist/core/utils/fs.d.ts +0 -13
- package/dist/core/utils/globals.d.ts +0 -11
- package/dist/core/utils/i18n.d.ts +0 -11
- package/dist/core/utils/log/index.d.ts +0 -4
- package/dist/core/utils/log/printBuildSummary.d.ts +0 -2
- package/dist/core/utils/log/printFileList.d.ts +0 -1
- package/dist/core/utils/log/printHeader.d.ts +0 -1
- package/dist/core/utils/log/printTable.d.ts +0 -1
- package/dist/core/utils/manifest.d.ts +0 -40
- package/dist/core/utils/minimatch-multiple.d.ts +0 -15
- package/dist/core/utils/network.d.ts +0 -7
- package/dist/core/utils/number.d.ts +0 -1
- package/dist/core/utils/package.d.ts +0 -6
- package/dist/core/utils/paths.d.ts +0 -11
- package/dist/core/utils/strings.d.ts +0 -14
- package/dist/core/utils/syntax-errors.d.ts +0 -11
- package/dist/core/utils/testing/fake-objects.d.ts +0 -11665
- package/dist/core/utils/testing/fake-objects.mjs +0 -326
- package/dist/core/utils/time.d.ts +0 -9
- package/dist/core/utils/transform.d.ts +0 -11
- package/dist/core/utils/types.d.ts +0 -13
- package/dist/core/utils/types.mjs +0 -0
- package/dist/core/utils/validation.d.ts +0 -15
- package/dist/core/utils/virtual-modules.d.ts +0 -22
- package/dist/core/utils/wsl.d.ts +0 -4
- package/dist/core/wxt.d.ts +0 -24
- package/dist/index.d.ts +0 -11
- package/dist/testing/fake-browser.d.ts +0 -10
- package/dist/testing/index.d.ts +0 -10
- package/dist/types.d.ts +0 -1459
- package/dist/types.mjs +0 -0
- package/dist/utils/app-config.d.ts +0 -2
- package/dist/utils/content-script-context.d.ts +0 -134
- package/dist/utils/content-script-ui/iframe.d.ts +0 -32
- package/dist/utils/content-script-ui/integrated.d.ts +0 -34
- package/dist/utils/content-script-ui/shadow-root.d.ts +0 -76
- package/dist/utils/content-script-ui/shared.d.ts +0 -5
- package/dist/utils/content-script-ui/types.d.ts +0 -104
- package/dist/utils/define-background.d.ts +0 -4
- package/dist/utils/define-content-script.d.ts +0 -3
- package/dist/utils/define-unlisted-script.d.ts +0 -4
- package/dist/utils/define-wxt-plugin.d.ts +0 -3
- package/dist/utils/inject-script.d.ts +0 -36
- package/dist/utils/internal/custom-events.d.ts +0 -10
- package/dist/utils/internal/dev-server-websocket.d.ts +0 -21
- package/dist/utils/internal/dev-server-websocket.mjs +0 -37
- package/dist/utils/internal/location-watcher.d.ts +0 -12
- package/dist/utils/internal/logger.d.ts +0 -9
- package/dist/utils/match-patterns.d.ts +0 -5
- package/dist/utils/storage.d.ts +0 -5
- package/dist/version.d.ts +0 -1
|
@@ -1,53 +1,49 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { normalizePath } from "./utils/paths.mjs";
|
|
2
|
+
import "./utils/index.mjs";
|
|
3
3
|
import { getEntrypointBundlePath, isHtmlEntrypoint } from "./utils/entrypoints.mjs";
|
|
4
4
|
import { getEntrypointGlobals, getGlobals } from "./utils/globals.mjs";
|
|
5
|
-
import { normalizePath } from "./utils/paths.mjs";
|
|
6
|
-
import path from "node:path";
|
|
7
|
-
import { parseI18nMessages } from "./utils/i18n.mjs";
|
|
8
|
-
import { writeFileIfDifferent, getPublicFiles } from "./utils/fs.mjs";
|
|
9
5
|
import { wxt } from "./wxt.mjs";
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
6
|
+
import { getPublicFiles, writeFileIfDifferent } from "./utils/fs.mjs";
|
|
7
|
+
import { parseI18nMessages } from "./utils/i18n.mjs";
|
|
8
|
+
import fs from "fs-extra";
|
|
9
|
+
import path, { dirname, relative, resolve } from "node:path";
|
|
10
|
+
|
|
11
|
+
//#region src/core/generate-wxt-dir.ts
|
|
12
|
+
/**
|
|
13
|
+
* Generate and write all the files inside the `InternalConfig.typesDir` directory.
|
|
14
|
+
*/
|
|
15
|
+
async function generateWxtDir(entrypoints) {
|
|
16
|
+
await fs.ensureDir(wxt.config.typesDir);
|
|
17
|
+
const entries = [{ module: "wxt/vite-builder-env" }];
|
|
18
|
+
wxt.config.userModules.forEach((module) => {
|
|
19
|
+
if (module.type === "node_module") entries.push({ module: module.id });
|
|
20
|
+
});
|
|
21
|
+
entries.push(await getPathsDeclarationEntry(entrypoints));
|
|
22
|
+
entries.push(await getI18nDeclarationEntry());
|
|
23
|
+
entries.push(await getGlobalsDeclarationEntry());
|
|
24
|
+
entries.push(await getTsConfigEntry());
|
|
25
|
+
await wxt.hooks.callHook("prepare:types", wxt, entries);
|
|
26
|
+
entries.push(getMainDeclarationEntry(entries));
|
|
27
|
+
const absoluteFileEntries = entries.filter((entry) => "path" in entry).map((entry) => ({
|
|
28
|
+
...entry,
|
|
29
|
+
path: resolve(wxt.config.wxtDir, entry.path)
|
|
30
|
+
}));
|
|
31
|
+
await Promise.all(absoluteFileEntries.map(async (file) => {
|
|
32
|
+
await fs.ensureDir(dirname(file.path));
|
|
33
|
+
await writeFileIfDifferent(file.path, file.text);
|
|
34
|
+
}));
|
|
35
35
|
}
|
|
36
36
|
async function getPathsDeclarationEntry(entrypoints) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
)
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
` | "/"`,
|
|
48
|
-
...paths.map(normalizePath).sort().map((path2) => ` | "/${path2}"`)
|
|
49
|
-
].join("\n");
|
|
50
|
-
const template = `// Generated by wxt
|
|
37
|
+
const paths = entrypoints.map((entry) => getEntrypointBundlePath(entry, wxt.config.outDir, isHtmlEntrypoint(entry) ? ".html" : ".js")).concat(await getPublicFiles());
|
|
38
|
+
await wxt.hooks.callHook("prepare:publicPaths", wxt, paths);
|
|
39
|
+
const unions = [
|
|
40
|
+
` | ""`,
|
|
41
|
+
` | "/"`,
|
|
42
|
+
...paths.map(normalizePath).sort().map((path) => ` | "/${path}"`)
|
|
43
|
+
].join("\n");
|
|
44
|
+
return {
|
|
45
|
+
path: "types/paths.d.ts",
|
|
46
|
+
text: `// Generated by wxt
|
|
51
47
|
import "wxt/browser";
|
|
52
48
|
|
|
53
49
|
declare module "wxt/browser" {
|
|
@@ -59,16 +55,13 @@ declare module "wxt/browser" {
|
|
|
59
55
|
getURL(path: \`\${HtmlPublicPath}\${string}\`): string;
|
|
60
56
|
}
|
|
61
57
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
text: template.replace("{{ union }}", unions || " | never"),
|
|
66
|
-
tsReference: true
|
|
67
|
-
};
|
|
58
|
+
`.replace("{{ union }}", unions || " | never"),
|
|
59
|
+
tsReference: true
|
|
60
|
+
};
|
|
68
61
|
}
|
|
69
62
|
async function getI18nDeclarationEntry() {
|
|
70
|
-
|
|
71
|
-
|
|
63
|
+
const defaultLocale = wxt.config.manifest.default_locale;
|
|
64
|
+
const template = `// Generated by wxt
|
|
72
65
|
import "wxt/browser";
|
|
73
66
|
|
|
74
67
|
declare module "wxt/browser" {
|
|
@@ -87,105 +80,71 @@ declare module "wxt/browser" {
|
|
|
87
80
|
}
|
|
88
81
|
}
|
|
89
82
|
`;
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}
|
|
103
|
-
const renderGetMessageOverload = (keyType, description, translation) => {
|
|
104
|
-
const commentLines = [];
|
|
105
|
-
if (description) commentLines.push(...description.split("\n"));
|
|
106
|
-
if (translation) {
|
|
107
|
-
if (commentLines.length > 0) commentLines.push("");
|
|
108
|
-
commentLines.push(`"${translation}"`);
|
|
109
|
-
}
|
|
110
|
-
const comment = commentLines.length > 0 ? `/**
|
|
111
|
-
${commentLines.map((line) => ` * ${line}`.trimEnd()).join("\n")}
|
|
112
|
-
*/
|
|
113
|
-
` : "";
|
|
114
|
-
return ` ${comment}getMessage(
|
|
83
|
+
const defaultLocalePath = path.resolve(wxt.config.publicDir, "_locales", defaultLocale ?? "", "messages.json");
|
|
84
|
+
let messages;
|
|
85
|
+
if (await fs.pathExists(defaultLocalePath)) messages = parseI18nMessages(JSON.parse(await fs.readFile(defaultLocalePath, "utf-8")));
|
|
86
|
+
else messages = parseI18nMessages({});
|
|
87
|
+
const renderGetMessageOverload = (keyType, description, translation) => {
|
|
88
|
+
const commentLines = [];
|
|
89
|
+
if (description) commentLines.push(...description.split("\n"));
|
|
90
|
+
if (translation) {
|
|
91
|
+
if (commentLines.length > 0) commentLines.push("");
|
|
92
|
+
commentLines.push(`"${translation}"`);
|
|
93
|
+
}
|
|
94
|
+
return ` ${commentLines.length > 0 ? `/**\n${commentLines.map((line) => ` * ${line}`.trimEnd()).join("\n")}\n */\n ` : ""}getMessage(
|
|
115
95
|
messageName: ${keyType},
|
|
116
96
|
substitutions?: string | string[],
|
|
117
97
|
options?: GetMessageOptions,
|
|
118
98
|
): string;`;
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
message.message
|
|
127
|
-
)
|
|
128
|
-
),
|
|
129
|
-
// Include a final union-based override so TS accepts valid string templates or concatenations
|
|
130
|
-
// ie: browser.i18n.getMessage(`some_enum_${enumValue}`)
|
|
131
|
-
renderGetMessageOverload(
|
|
132
|
-
messages.map((message) => `"${message.name}"`).join(" | ")
|
|
133
|
-
)
|
|
134
|
-
];
|
|
135
|
-
return {
|
|
136
|
-
path: "types/i18n.d.ts",
|
|
137
|
-
text: template.replace("{{ overrides }}", overrides.join("\n")),
|
|
138
|
-
tsReference: true
|
|
139
|
-
};
|
|
99
|
+
};
|
|
100
|
+
const overrides = [...messages.map((message) => renderGetMessageOverload(`"${message.name}"`, message.description, message.message)), renderGetMessageOverload(messages.map((message) => `"${message.name}"`).join(" | "))];
|
|
101
|
+
return {
|
|
102
|
+
path: "types/i18n.d.ts",
|
|
103
|
+
text: template.replace("{{ overrides }}", overrides.join("\n")),
|
|
104
|
+
tsReference: true
|
|
105
|
+
};
|
|
140
106
|
}
|
|
141
107
|
async function getGlobalsDeclarationEntry() {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
};
|
|
108
|
+
return {
|
|
109
|
+
path: "types/globals.d.ts",
|
|
110
|
+
text: [
|
|
111
|
+
"// Generated by wxt",
|
|
112
|
+
"interface ImportMetaEnv {",
|
|
113
|
+
...[...getGlobals(wxt.config), ...getEntrypointGlobals("")].map((global) => ` readonly ${global.name}: ${global.type};`),
|
|
114
|
+
"}",
|
|
115
|
+
"interface ImportMeta {",
|
|
116
|
+
" readonly env: ImportMetaEnv",
|
|
117
|
+
"}",
|
|
118
|
+
""
|
|
119
|
+
].join("\n"),
|
|
120
|
+
tsReference: true
|
|
121
|
+
};
|
|
157
122
|
}
|
|
158
123
|
function getMainDeclarationEntry(references) {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
};
|
|
124
|
+
const lines = ["// Generated by wxt"];
|
|
125
|
+
references.forEach((ref) => {
|
|
126
|
+
if ("module" in ref) return lines.push(`/// <reference types="${ref.module}" />`);
|
|
127
|
+
else if (ref.tsReference) {
|
|
128
|
+
const absolutePath = resolve(wxt.config.wxtDir, ref.path);
|
|
129
|
+
const relativePath = relative(wxt.config.wxtDir, absolutePath);
|
|
130
|
+
lines.push(`/// <reference path="./${normalizePath(relativePath)}" />`);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
return {
|
|
134
|
+
path: "wxt.d.ts",
|
|
135
|
+
text: lines.join("\n") + "\n"
|
|
136
|
+
};
|
|
173
137
|
}
|
|
174
138
|
async function getTsConfigEntry() {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
`"${alias}": ["${aliasPath}"]`,
|
|
185
|
-
`"${alias}/*": ["${aliasPath}/*"]`
|
|
186
|
-
];
|
|
187
|
-
}).map((line) => ` ${line}`).join(",\n");
|
|
188
|
-
const text = `{
|
|
139
|
+
const dir = wxt.config.wxtDir;
|
|
140
|
+
const getTsconfigPath = (path) => {
|
|
141
|
+
const res = normalizePath(relative(dir, path));
|
|
142
|
+
if (res.startsWith(".") || res.startsWith("/")) return res;
|
|
143
|
+
return "./" + res;
|
|
144
|
+
};
|
|
145
|
+
return {
|
|
146
|
+
path: "tsconfig.json",
|
|
147
|
+
text: `{
|
|
189
148
|
"compilerOptions": {
|
|
190
149
|
"target": "ESNext",
|
|
191
150
|
"module": "ESNext",
|
|
@@ -197,7 +156,10 @@ async function getTsConfigEntry() {
|
|
|
197
156
|
"strict": true,
|
|
198
157
|
"skipLibCheck": true,
|
|
199
158
|
"paths": {
|
|
200
|
-
${
|
|
159
|
+
${Object.entries(wxt.config.alias).flatMap(([alias, absolutePath]) => {
|
|
160
|
+
const aliasPath = getTsconfigPath(absolutePath);
|
|
161
|
+
return [`"${alias}": ["${aliasPath}"]`, `"${alias}/*": ["${aliasPath}/*"]`];
|
|
162
|
+
}).map((line) => ` ${line}`).join(",\n")}
|
|
201
163
|
}
|
|
202
164
|
},
|
|
203
165
|
"include": [
|
|
@@ -205,9 +167,9 @@ ${paths}
|
|
|
205
167
|
"./wxt.d.ts"
|
|
206
168
|
],
|
|
207
169
|
"exclude": ["${getTsconfigPath(wxt.config.outBaseDir)}"]
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
path: "tsconfig.json",
|
|
211
|
-
text
|
|
212
|
-
};
|
|
170
|
+
}`
|
|
171
|
+
};
|
|
213
172
|
}
|
|
173
|
+
|
|
174
|
+
//#endregion
|
|
175
|
+
export { generateWxtDir };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { build } from "./build.mjs";
|
|
2
|
+
import { clean } from "./clean.mjs";
|
|
3
|
+
import { defineConfig } from "./define-config.mjs";
|
|
4
|
+
import { defineRunnerConfig, defineWebExtConfig } from "./define-web-ext-config.mjs";
|
|
5
|
+
import { createServer } from "./create-server.mjs";
|
|
6
|
+
import { initialize } from "./initialize.mjs";
|
|
7
|
+
import { prepare } from "./prepare.mjs";
|
|
8
|
+
import { zip } from "./zip.mjs";
|
|
9
|
+
import { normalizePath } from "./utils/paths.mjs";
|
package/dist/core/index.mjs
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { normalizePath } from "./utils/paths.mjs";
|
|
2
|
+
import "./utils/index.mjs";
|
|
3
|
+
import { build } from "./build.mjs";
|
|
4
|
+
import { clean } from "./clean.mjs";
|
|
5
|
+
import { defineConfig } from "./define-config.mjs";
|
|
6
|
+
import { defineRunnerConfig, defineWebExtConfig } from "./define-web-ext-config.mjs";
|
|
7
|
+
import { createServer } from "./create-server.mjs";
|
|
8
|
+
import { initialize } from "./initialize.mjs";
|
|
9
|
+
import { prepare } from "./prepare.mjs";
|
|
10
|
+
import { zip } from "./zip.mjs";
|
|
11
|
+
|
|
12
|
+
export { };
|
package/dist/core/initialize.mjs
CHANGED
|
@@ -1,140 +1,126 @@
|
|
|
1
|
-
import prompts from "prompts";
|
|
2
|
-
import { consola } from "consola";
|
|
3
|
-
import { downloadTemplate } from "giget";
|
|
4
1
|
import fs from "fs-extra";
|
|
5
2
|
import path from "node:path";
|
|
3
|
+
import { consola as consola$1 } from "consola";
|
|
6
4
|
import pc from "picocolors";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
5
|
+
import prompts from "prompts";
|
|
6
|
+
import { downloadTemplate } from "giget";
|
|
7
|
+
|
|
8
|
+
//#region src/core/initialize.ts
|
|
9
|
+
async function initialize(options) {
|
|
10
|
+
consola$1.info("Initializing new project");
|
|
11
|
+
const templates = await listTemplates();
|
|
12
|
+
const defaultTemplate = templates.find((template) => template.name === options.template?.toLowerCase().trim());
|
|
13
|
+
const input = await prompts([
|
|
14
|
+
{
|
|
15
|
+
name: "directory",
|
|
16
|
+
type: () => options.directory == null ? "text" : void 0,
|
|
17
|
+
message: "Project Directory",
|
|
18
|
+
initial: options.directory
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: "template",
|
|
22
|
+
type: () => defaultTemplate == null ? "select" : void 0,
|
|
23
|
+
message: "Choose a template",
|
|
24
|
+
choices: templates.map((template) => ({
|
|
25
|
+
title: TEMPLATE_COLORS[template.name]?.(template.name) ?? template.name,
|
|
26
|
+
value: template
|
|
27
|
+
}))
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: "packageManager",
|
|
31
|
+
type: () => options.packageManager == null ? "select" : void 0,
|
|
32
|
+
message: "Package Manager",
|
|
33
|
+
choices: [
|
|
34
|
+
{
|
|
35
|
+
title: pc.red("npm"),
|
|
36
|
+
value: "npm"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
title: pc.yellow("pnpm"),
|
|
40
|
+
value: "pnpm"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
title: pc.cyan("yarn"),
|
|
44
|
+
value: "yarn"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
title: pc.magenta("bun"),
|
|
48
|
+
value: "bun"
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
], { onCancel: () => process.exit(1) });
|
|
53
|
+
input.directory ??= options.directory;
|
|
54
|
+
input.template ??= defaultTemplate;
|
|
55
|
+
input.packageManager ??= options.packageManager;
|
|
56
|
+
if (await fs.pathExists(input.directory)) {
|
|
57
|
+
if (!((await fs.readdir(input.directory)).filter((dir) => dir !== ".git").length === 0)) {
|
|
58
|
+
consola$1.error(`The directory ${path.resolve(input.directory)} is not empty. Aborted.`);
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
await cloneProject(input);
|
|
63
|
+
const cdPath = path.relative(process.cwd(), path.resolve(input.directory));
|
|
64
|
+
console.log();
|
|
65
|
+
consola$1.log(`✨ WXT project created with the ${TEMPLATE_COLORS[input.template.name]?.(input.template.name) ?? input.template.name} template.`);
|
|
66
|
+
console.log();
|
|
67
|
+
consola$1.log("Next steps:");
|
|
68
|
+
let step = 0;
|
|
69
|
+
if (cdPath !== "") consola$1.log(` ${++step}.`, pc.cyan(`cd ${cdPath}`));
|
|
70
|
+
consola$1.log(` ${++step}.`, pc.cyan(`${input.packageManager} install`));
|
|
71
|
+
console.log();
|
|
71
72
|
}
|
|
72
73
|
async function listTemplates() {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
if (diff !== 0) return diff;
|
|
82
|
-
return l.name.localeCompare(r.name);
|
|
83
|
-
});
|
|
74
|
+
return (await listTemplatesUngh().catch((err) => {
|
|
75
|
+
consola$1.debug("Failed to load templates via ungh:", err);
|
|
76
|
+
return listTemplatesGithub();
|
|
77
|
+
})).sort((l, r) => {
|
|
78
|
+
const diff = (TEMPLATE_SORT_WEIGHT[l.name] ?? Number.MAX_SAFE_INTEGER) - (TEMPLATE_SORT_WEIGHT[r.name] ?? Number.MAX_SAFE_INTEGER);
|
|
79
|
+
if (diff !== 0) return diff;
|
|
80
|
+
return l.name.localeCompare(r.name);
|
|
81
|
+
});
|
|
84
82
|
}
|
|
85
83
|
async function listTemplatesUngh() {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
return data.files.map((item) => item.path.match(/templates\/(.+)\/package\.json/)?.[1]).filter((name) => name != null).map((name) => ({ name, path: `templates/${name}` }));
|
|
84
|
+
const res = await fetch("https://ungh.cc/repos/wxt-dev/wxt/files/main");
|
|
85
|
+
if (res.status !== 200) throw Error(`Request failed with status ${res.status} ${res.statusText}: ${await res.text()}`);
|
|
86
|
+
return (await res.json()).files.map((item) => item.path.match(/templates\/(.+)\/package\.json/)?.[1]).filter((name) => name != null).map((name) => ({
|
|
87
|
+
name,
|
|
88
|
+
path: `templates/${name}`
|
|
89
|
+
}));
|
|
93
90
|
}
|
|
94
91
|
async function listTemplatesGithub() {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
);
|
|
99
|
-
if (res.status !== 200)
|
|
100
|
-
throw Error(
|
|
101
|
-
`Request failed with status ${res.status} ${res.statusText}: ${await res.text()}`
|
|
102
|
-
);
|
|
103
|
-
return await res.json();
|
|
92
|
+
const res = await fetch(`https://api.github.com/repos/${REPO}/contents/templates`, { headers: { Accept: "application/vnd.github+json" } });
|
|
93
|
+
if (res.status !== 200) throw Error(`Request failed with status ${res.status} ${res.statusText}: ${await res.text()}`);
|
|
94
|
+
return await res.json();
|
|
104
95
|
}
|
|
105
|
-
async function cloneProject({
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
).catch(
|
|
120
|
-
(err) => consola.warn("Failed to move _gitignore to .gitignore:", err)
|
|
121
|
-
);
|
|
122
|
-
spinner.succeed();
|
|
123
|
-
} catch (err) {
|
|
124
|
-
spinner.fail();
|
|
125
|
-
throw Error(`Failed to setup new project: ${JSON.stringify(err, null, 2)}`);
|
|
126
|
-
}
|
|
96
|
+
async function cloneProject({ directory, template }) {
|
|
97
|
+
const { default: ora } = await import("ora");
|
|
98
|
+
const spinner = ora("Downloading template").start();
|
|
99
|
+
try {
|
|
100
|
+
await downloadTemplate(`gh:${REPO}/${template.path}`, {
|
|
101
|
+
dir: directory,
|
|
102
|
+
force: true
|
|
103
|
+
});
|
|
104
|
+
await fs.move(path.join(directory, "_gitignore"), path.join(directory, ".gitignore")).catch((err) => consola$1.warn("Failed to move _gitignore to .gitignore:", err));
|
|
105
|
+
spinner.succeed();
|
|
106
|
+
} catch (err) {
|
|
107
|
+
spinner.fail();
|
|
108
|
+
throw Error(`Failed to setup new project: ${JSON.stringify(err, null, 2)}`);
|
|
109
|
+
}
|
|
127
110
|
}
|
|
128
111
|
const TEMPLATE_COLORS = {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
112
|
+
vanilla: pc.blue,
|
|
113
|
+
vue: pc.green,
|
|
114
|
+
react: pc.cyan,
|
|
115
|
+
svelte: pc.red,
|
|
116
|
+
solid: pc.blue
|
|
134
117
|
};
|
|
135
118
|
const TEMPLATE_SORT_WEIGHT = {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
119
|
+
vanilla: 0,
|
|
120
|
+
vue: 1,
|
|
121
|
+
react: 2
|
|
139
122
|
};
|
|
140
123
|
const REPO = "wxt-dev/wxt";
|
|
124
|
+
|
|
125
|
+
//#endregion
|
|
126
|
+
export { initialize };
|