Compare commits

...

14 Commits

Author SHA1 Message Date
GitHub Actions c30adb409c chore(release): @wxt-dev/i18n v0.2.2
vhs / vhs (push) Waiting to run
2024-10-23 13:44:57 +00:00
Bread Grocery ab83031462 feat: Add support for configuring the locales directory (#1109) 2024-10-23 08:39:30 -05:00
imnaK cd7285c3ef docs: fix wrong anchor to "Environment Variables" (#1107) 2024-10-22 22:58:22 -05:00
Aaron bdb775c88d Update changelog 2024-10-22 09:58:51 -05:00
Aaron d20793d5e6 docs: Use full URLs in README so they work on the docs site 2024-10-22 09:50:57 -05:00
GitHub Actions ae1e276577 chore(release): wxt v0.19.13
vhs / vhs (push) Waiting to run
2024-10-22 13:45:03 +00:00
Craig Slusher c031c6e82e feat(env): Load env from .env.[browser] variants (#1078)
Co-authored-by: Aaron <aaronklinker1@gmail.com>
2024-10-22 08:36:24 -05:00
Malix d06f8128f5 enhance(docs): comparison to real footnotes (#1096)
Co-authored-by: Aaron <aaronklinker1@gmail.com>
2024-10-22 08:35:23 -05:00
Florian Metz 6ba12e9736 feat: unocss module (#1043)
vhs / vhs (push) Waiting to run
Co-authored-by: Aaron <aaronklinker1@gmail.com>
2024-10-22 08:28:02 -05:00
Aaron 0092556c1a fix: Don't use #private member variables in ContentScriptContext (#1103) 2024-10-22 08:04:50 -05:00
Semro 9721bca5a1 docs: Add "Sync Watch" extension to homepage (#1098) 2024-10-21 19:48:03 -05:00
Aaron 1b138f86b9 docs: Remove duplicate env data 2024-10-21 08:48:52 -05:00
GitHub Actions e839671f13 chore(release): wxt v0.19.12
vhs / vhs (push) Waiting to run
2024-10-19 19:02:32 +00:00
Aaron 842c158f96 chore: Enable extensionApi: chrome in template projects (#1083) 2024-10-19 02:38:45 -05:00
39 changed files with 1042 additions and 103 deletions
+1
View File
@@ -13,6 +13,7 @@ on:
- module-solid
- module-svelte
- module-vue
- unocss
- wxt
jobs:
@@ -49,6 +49,7 @@ const chromeExtensionIds = [
'cpaedhbidlpnbdfegakhiamfpndhjpgf', // WebChat: Chat with anyone on any website
'fcphghnknhkimeagdglkljinmpbagone', // YouTube Auto HD + FPS
'lpomjgbicdemjkgmbnkjncgdebogkhlb', // MultiViewer Companion
'ggiafipgeeaaahnjamgpjcgkdpanhddg', // Sync Watch - Watch videos together on any site
];
const { data, err, isLoading } = useListExtensionDetails(chromeExtensionIds);
+9
View File
@@ -8,9 +8,11 @@ import {
prepareTypedocSidebar,
} from './utils/menus';
import { meta, script } from './utils/head';
import footnote from 'markdown-it-footnote';
import { version as wxtVersion } from '../../packages/wxt/package.json';
import { version as i18nVersion } from '../../packages/i18n/package.json';
import { version as autoIconsVersion } from '../../packages/auto-icons/package.json';
import { version as unocssVersion } from '../../packages/unocss/package.json';
const title = 'Next-gen Web Extension Framework';
const titleSuffix = ' WXT';
@@ -46,6 +48,12 @@ export default defineConfig({
}),
],
markdown: {
config: (md) => {
md.use(footnote);
},
},
themeConfig: {
// https://vitepress.dev/reference/default-theme-config
logo: {
@@ -82,6 +90,7 @@ export default defineConfig({
navItem(`wxt/storage — ${wxtVersion}`, '/storage'),
navItem(`@wxt-dev/auto-icons — ${autoIconsVersion}`, '/auto-icons'),
navItem(`@wxt-dev/i18n — ${i18nVersion}`, '/i18n'),
navItem(`@wxt-dev/unocss — ${unocssVersion}`, '/unocss'),
]),
]),
],
@@ -9,6 +9,10 @@ WXT supports [dotenv files the same way as Vite](https://vite.dev/guide/env-and-
.env.local
.env.[mode]
.env.[mode].local
.env.[browser]
.env.[browser].local
.env.[mode].[browser]
.env.[mode].[browser].local
```
And any environment variables listed inside them will be available at runtime:
+1 -1
View File
@@ -35,7 +35,7 @@ Here's a brief summary of each of these files and directories:
- `hooks/`: Auto-imported by default, contains hooks for React and Solid
- `public/`: Contains any files you want to copy into the output folder as-is, without being processed by WXT
- `utils/`: Auto-imported by default, contains generic utilities used throughout your project
- `.env`: Contains [Environment Variables](/guide/essentials/config/runtime#environment-variables)
- `.env`: Contains [Environment Variables](/guide/essentials/config/environment-variables)
- `.env.publish`: Contains Environment Variables for [publishing](/guide/essentials/publishing)
- `app.config.ts`: Contains [Runtime Config](/guide/essentials/config/runtime)
- `package.json`: The standard file used by your package manager
@@ -4,7 +4,7 @@ When building an extension with WXT, you can create multiple builds of your exte
## Target a Browser
Use the `-b` CLI flag to create a separate build of your extension for a specific browser. By default, `chrome` is targetted.
Use the `-b` CLI flag to create a separate build of your extension for a specific browser. By default, `chrome` is targeted.
```sh
wxt # same as: wxt -b chrome
@@ -12,36 +12,44 @@ wxt -b firefox
wxt -b custom
```
Targeting a browser has several effects:
During development, if you target Firefox, Firefox will open. All other strings open Chrome by default. To customize which browsers open, see [Set Browser Binaries](/guide/essentials/config/browser-startup#set-browser-binaries).
1. During development, when passing `firefox`, WXT will automatically open Firefox with the extension installed. For all other browsers, it will open Chrome/Chromium
2. Changes build-time constants provided by WXT:
- `import.meta.env.BROWSER`: A string, the targeted browser
- `import.meta.env.CHROME`: A boolean equivalent to `import.meta.env.BROWSER === "chrome"`
- `import.meta.env.FIREFOX`: A boolean equivalent to `import.meta.env.BROWSER === "firefox"`
- `import.meta.env.EDGE`: A boolean equivalent to `import.meta.env.BROWSER === "edge"`
- `import.meta.env.SAFARI`: A boolean equivalent to `import.meta.env.BROWSER === "safari"`
- `import.meta.env.OPERA`: A boolean equivalent to `import.meta.env.BROWSER === "opera"`
Additionally, WXT defines several constants you can use at runtime to detect which browser is in use:
```ts
if (import.meta.env.BROWSER === 'firefox') {
console.log('Do something only in Firefox builds');
}
if (import.meta.env.FIREFOX) {
// Shorthand, equivalent to the if-statement above
}
```
Read about [Built-in Environment Variables](/guide/essentials/config/environment-variables.html#built-in-environment-variables) for more details.
## Target a Manifest Version
To target specific manifest versions, use the `--mv2` or `--mv3` CLI flags.
:::tip Default Manifest Version
By default, WXT will target MV2 for Safari and Firefox and MV3 for all other browers.
By default, WXT will target MV2 for Safari and Firefox and MV3 for all other browsers.
:::
To get the target manifest version at runtime, use the built-time constant provided by WXT:
Similar to the browser, you can get the target manifest version at runtime using the [built-in environment variable](/guide/essentials/config/environment-variables.html#built-in-environment-variables):
- `import.meta.env.MANIFEST_VERSION`: A number, either `2` or `3`
```ts
if (import.meta.env.MANIFEST_VERSION === 2) {
console.log('Do something only in MV2 builds');
}
```
## Filtering Entrypoints
Every entrypoint can be included or excluded when targetting specific browsers via the `include` and `exclude` options.
Every entrypoint can be included or excluded when targeting specific browsers via the `include` and `exclude` options.
Here are some examples:
- Content script only built when targetting `firefox`:
- Content script only built when targeting `firefox`:
```ts
export default defineContentScript({
+55 -46
View File
@@ -8,50 +8,59 @@ Lets compare the features of WXT vs [Plasmo](https://docs.plasmo.com/framework)
- 🟡 - Partial support
- ❌ - No support
| Features | WXT | Plasmo | CRXJS |
| ------------------------------------------------------- | :--------------: | :-------------: | :--------------: |
| Supports all browsers | ✅ | ✅ | 🟡 <sup>10</sup> |
| MV2 Support | ✅ | ✅ | 🟡 <sup>1</sup> |
| MV3 Support | ✅ | ✅ | 🟡 <sup>1</sup> |
| Create Extension ZIPs | ✅ | ✅ | ❌ |
| Create Firefox Sources ZIP | ✅ | ❌ | ❌ |
| First-class TypeScript support | ✅ | ✅ | ✅ |
| Entrypoint discovery | ✅ <sup>2</sup> | ✅ <sup>2</sup> | ❌ |
| Inline entrypoint config | ✅ | ✅ | ❌ <sup>9</sup> |
| Auto-imports | ✅ | ❌ | ❌ |
| Reusable module system | ✅ | ❌ | ❌ |
| Supports all frontend frameworks | ✅ | 🟡 <sup>3</sup> | ✅ |
| Framework specific entrypoints (like `Popup.tsx`) | 🟡 <sup>4</sup> | ✅ <sup>5</sup> | ❌ |
| Automated publishing | ✅ | ✅ | ❌ |
| Remote Code Bundling (Google Analytics) | ✅ | ✅ | ❌ |
| Unlisted HTML Pages | ✅ | ✅ | ✅ |
| Unlisted Scripts | ✅ | ❌ | ❌ |
| ESM Content Scripts | ❌ <sup>12</sup> | ❌ | ✅ |
| <strong style="opacity: 50%">Dev Mode</strong> | | |
| `.env` Files | ✅ | ✅ | ✅ |
| Opens browser with extension installed | ✅ | ❌ | ❌ |
| HMR for UIs | ✅ | 🟡 <sup>6</sup> | ✅ |
| Reload HTML Files on Change | ✅ | 🟡 <sup>7</sup> | ✅ |
| Reload Content Scripts on Change | ✅ | 🟡 <sup>7</sup> | ✅ |
| Reload Background on Change | 🟡 <sup>7</sup> | 🟡 <sup>7</sup> | 🟡 <sup>7</sup> |
| Respects Content Script `run_at` | ✅ | ✅ | ❌ <sup>8</sup> |
| <strong style="opacity: 50%">Built-in Wrappers</strong> | | | |
| Storage | ✅ | ✅ | ❌ <sup>11</sup> |
| Messaging | ❌ <sup>11</sup> | ✅ | ❌ <sup>11</sup> |
| Content Script UI | ✅ | ✅ | ❌ <sup>11</sup> |
| I18n | ✅ | ❌ | ❌ |
| Features | WXT | Plasmo | CRXJS |
| ------------------------------------------------------- | :-----: | :-----: | :-----: |
| Supports all browsers | ✅ | ✅ | 🟡 [^j] |
| MV2 Support | ✅ | ✅ | 🟡 [^a] |
| MV3 Support | ✅ | ✅ | 🟡 [^a] |
| Create Extension ZIPs | ✅ | ✅ | ❌ |
| Create Firefox Sources ZIP | ✅ | ❌ | ❌ |
| First-class TypeScript support | ✅ | ✅ | ✅ |
| Entrypoint discovery | ✅ [^b] | ✅ [^b] | ❌ |
| Inline entrypoint config | ✅ | ✅ | ❌ [^i] |
| Auto-imports | ✅ | ❌ | ❌ |
| Reusable module system | ✅ | ❌ | ❌ |
| Supports all frontend frameworks | ✅ | 🟡 [^c] | ✅ |
| Framework specific entrypoints (like `Popup.tsx`) | 🟡 [^d] | ✅ [^e] | ❌ |
| Automated publishing | ✅ | ✅ | ❌ |
| Remote Code Bundling (Google Analytics) | ✅ | ✅ | ❌ |
| Unlisted HTML Pages | ✅ | ✅ | ✅ |
| Unlisted Scripts | ✅ | ❌ | ❌ |
| ESM Content Scripts | ❌ [^l] | ❌ | ✅ |
| <strong style="opacity: 50%">Dev Mode</strong> | | | |
| `.env` Files | ✅ | ✅ | ✅ |
| Opens browser with extension installed | ✅ | ❌ | ❌ |
| HMR for UIs | ✅ | 🟡 [^f] | ✅ |
| Reload HTML Files on Change | ✅ | 🟡 [^g] | ✅ |
| Reload Content Scripts on Change | ✅ | 🟡 [^g] | ✅ |
| Reload Background on Change | 🟡 [^g] | 🟡 [^g] | 🟡 [^g] |
| Respects Content Script `run_at` | ✅ | ✅ | ❌ [^h] |
| <strong style="opacity: 50%">Built-in Wrappers</strong> | | | |
| Storage | ✅ | ✅ | ❌ [^k] |
| Messaging | ❌ [^k] | ✅ | ❌ [^k] |
| Content Script UI | ✅ | ✅ | ❌ [^k] |
| I18n | ✅ | ❌ | ❌ |
<small>
<sup>1</sup>: Either MV2 or MV3, not both.
<br/><sup>2</sup>: File based.
<br/><sup>3</sup>: Only React, Vue, and Svelte.
<br/><sup>4</sup>: <code>.html</code> <code>.ts</code> <code>.tsx</code>.
<br/><sup>5</sup>: <code>.html</code> <code>.ts</code> <code>.tsx</code>. <code>.vue</code> <code>.svelte</code>.
<br/><sup>6</sup>: React only.
<br/><sup>7</sup>: Reloads entire extension.
<br/><sup>8</sup>: ESM-style loaders run asynchronously.
<br/><sup>9</sup>: Entrypoint options all configured in <code>manifest.json</code>.
<br/><sup>10</sup>: As of <code>v2.0.0-beta.23</code>, but v2 stable hasn't been released yet.
<br/><sup>11</sup>: There is no built-in wrapper around this API. However, you can still access the standard APIs via <code>chrome</code>/<code>browser</code> globals or use any 3rd party NPM package.
<br/><sup>12</sup>: WIP, moving very slowly. Follow <a href="https://github.com/wxt-dev/wxt/issues/357" target="_blank"><code>wxt-dev/wxt#357</code></a> for updates.
</small>
[^a]: Either MV2 or MV3, not both.
[^b]: File based.
[^c]: Only React, Vue, and Svelte.
[^d]: `.html`, `.ts`, `.tsx`.
[^e]: `.html`, `.ts`, `.tsx`, `.vue`, `.svelte`.
[^f]: React only.
[^g]: Reloads entire extension.
[^h]: ESM-style loaders run asynchronously.
[^i]: Entrypoint options all configured in `manifest.json`.
[^j]: As of `v2.0.0-beta.23`, but v2 stable hasn't been released yet.
[^k]: There is no built-in wrapper around this API. However, you can still access the standard APIs via `chrome`/`browser` globals or use any 3rd party NPM package.
[^l]: WIP, moving very slowly. Follow [wxt-dev/wxt#357](https://github.com/wxt-dev/wxt/issues/357) for updates.
+1
View File
@@ -0,0 +1 @@
<!--@include: ../packages/unocss/README.md-->
+4
View File
@@ -26,6 +26,7 @@
"fast-glob": "^3.3.2",
"fs-extra": "^11.2.0",
"lint-staged": "^15.2.10",
"markdown-it-footnote": "^4.0.0",
"nano-spawn": "^0.1.0",
"prettier": "^3.3.3",
"simple-git-hooks": "^2.11.1",
@@ -51,6 +52,9 @@
"@algolia/client-search",
"search-insights"
]
},
"patchedDependencies": {
"markdown-it-footnote": "patches/markdown-it-footnote.patch"
}
}
}
+1 -1
View File
@@ -41,4 +41,4 @@ export default defineConfig({
});
```
Options have JSDocs available in your editor, or you can read them in the source code: [`AutoIconsOptions`](./src/index.ts).
Options have JSDocs available in your editor, or you can read them in the source code: [`AutoIconsOptions`](https://github.com/wxt-dev/wxt/blob/main/packages/auto-icons/src/index.ts).
+12
View File
@@ -1,5 +1,17 @@
# Changelog
## v0.2.2
[compare changes](https://github.com/wxt-dev/wxt/compare/i18n-v0.2.1...i18n-v0.2.2)
### 🚀 Enhancements
- Add support for configuring the `locales` directory ([#1109](https://github.com/wxt-dev/wxt/pull/1109))
### ❤️ Contributors
- Bread Grocery <breadgrocery@gmail.com>
## v0.2.1
[compare changes](https://github.com/wxt-dev/wxt/compare/i18n-v0.2.0...i18n-v0.2.1)
+15
View File
@@ -98,6 +98,21 @@ And you're done! Using WXT, you get type-safety out of the box.
i18n.t('helloWorld'); // "Hello world!";
```
## Configuration
The module can be configured via the `i18n` config:
```ts
export default defineConfig({
modules: ['@wxt-dev/i18n'],
i18n: {
// ...
},
});
```
Options have JSDocs available in your editor, or you can read them in the source code: [`I18nOptions`](https://github.com/wxt-dev/wxt/blob/main/packages/i18n/src/module.ts).
## Messages File Format
> [!DANGER]
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@wxt-dev/i18n",
"description": "Type-safe wrapper around browser.i18n.getMessage with additional features",
"version": "0.2.1",
"version": "0.2.2",
"type": "module",
"repository": {
"type": "git",
+27 -7
View File
@@ -23,11 +23,11 @@ import { watch } from 'chokidar';
import { GeneratedPublicFile, WxtDirFileEntry } from 'wxt';
import { writeFile } from 'node:fs/promises';
export default defineWxtModule({
export default defineWxtModule<I18nOptions>({
name: '@wxt-dev/i18n',
configKey: 'i18n',
imports: [{ from: '#i18n', name: 'i18n' }],
setup(wxt) {
setup(wxt, options) {
if (wxt.config.manifest.default_locale == null) {
wxt.logger.warn(
`\`[i18n]\` manifest.default_locale not set, \`@wxt-dev/i18n\` disabled.`,
@@ -38,9 +38,12 @@ export default defineWxtModule({
'`[i18n]` Default locale: ' + wxt.config.manifest.default_locale,
);
const { localesDir = resolve(wxt.config.srcDir, 'locales') } =
options ?? {};
const getLocalizationFiles = async () => {
const files = await glob('locales/*', {
cwd: wxt.config.srcDir,
const files = await glob('*.{json,json5,yml,yaml,toml}', {
cwd: localesDir,
absolute: true,
});
return files.map((file) => ({
@@ -71,7 +74,7 @@ export default defineWxtModule({
)!;
if (defaultLocaleFile == null) {
throw Error(
`\`[i18n]\` Required localization file does not exist: \`<srcDir>/locales/${wxt.config.manifest.default_locale}.{json|json5|yml|yaml|toml}\``,
`\`[i18n]\` Required localization file does not exist: \`<localesDir>/${wxt.config.manifest.default_locale}.{json|json5|yml|yaml|toml}\``,
);
}
@@ -154,9 +157,26 @@ export { type GeneratedI18nStructure }
if (wxt.config.command === 'serve') {
wxt.hooks.hookOnce('build:done', () => {
const watcher = watch(resolve(wxt.config.srcDir, 'locales'));
const watcher = watch(localesDir);
watcher.on('change', updateLocalizations);
});
}
},
});
/**
* Options for the i18n module
*/
export interface I18nOptions {
/**
* Directory containing files that define the translations.
* @default "${config.srcDir}/locales"
*/
localesDir?: string;
}
declare module 'wxt' {
export interface InlineConfig {
i18n?: I18nOptions;
}
}
+47
View File
@@ -0,0 +1,47 @@
# WXT UnoCSS
Use UnoCSS in your WXT extension!
## Usage
Install the package:
```sh
npm i --save-dev @wxt-dev/unocss unocss
pnpm i -D @wxt-dev/unocss unocss
yarn add --dev @wxt-dev/unocss unocss
bun i -D @wxt-dev/unocss unocss
```
Add the module to `wxt.config.ts`:
```ts
export default defineConfig({
modules: ['@wxt-dev/unocss'],
});
```
Now in your entrypoint, import UnoCSS:
```ts
import 'uno.css';
```
> [!IMPORTANT]
> While in dev mode, you may see a warning about `uno.css` not being found. This is because in development, we don't know which files should be injected with UnoCSS styles. The warning can be safely ignored as the styles will be properly applied during the build process.
## Configuration
The module can be configured via the `unocss` config:
```ts
export default defineConfig({
modules: ['@wxt-dev/unocss'],
unocss: {
// Will only apply unocss for popup/main.ts
entrypoints: ['popup/main.ts'],
},
});
```
Options have JSDocs available in your editor, or you can read them in the source code: [`UnoCSSOptions`](https://github.com/wxt-dev/wxt/blob/main/packages/auto-icons/src/index.ts).
+55
View File
@@ -0,0 +1,55 @@
{
"name": "@wxt-dev/unocss",
"description": "UnoCSS integration for WXT",
"version": "1.0.0",
"repository": {
"type": "git",
"url": "git+https://github.com/wxt-dev/wxt.git",
"directory": "packages/unocss"
},
"homepage": "http://wxt.dev/guide/unocss.html",
"keywords": [
"wxt",
"module",
"unocss",
"css"
],
"author": {
"name": "Florian Metz",
"email": "me@timeraa.dev"
},
"license": "MIT",
"type": "module",
"module": "./dist/index.mjs",
"types": "./dist/index.d.ts",
"exports": {
".": {
"types": "./dist/index.d.mts",
"default": "./dist/index.mjs"
}
},
"files": [
"dist"
],
"scripts": {
"build": "buildc -- unbuild",
"check": "buildc --deps-only -- check"
},
"peerDependencies": {
"unocss": ">=0.60.0",
"wxt": ">=0.19.0"
},
"devDependencies": {
"@aklinker1/check": "^1.4.5",
"oxlint": "^0.9.9",
"publint": "^0.2.11",
"typescript": "^5.6.2",
"unbuild": "^2.0.0",
"unocss": "^0.63.3",
"wxt": "workspace:*"
},
"dependencies": {
"defu": "^6.1.4",
"fast-glob": "^3.3.2"
}
}
+68
View File
@@ -0,0 +1,68 @@
import 'wxt';
import { defineWxtModule } from 'wxt/modules';
import defu from 'defu';
import UnoCSS from 'unocss/vite';
export default defineWxtModule<UnoCSSOptions>({
name: '@wxt-dev/unocss',
configKey: 'unocss',
async setup(wxt, options) {
const resolvedOptions = defu<Required<UnoCSSOptions>, UnoCSSOptions[]>(
options,
{
enabled: true,
excludeEntrypoints: ['background'],
configOrPath: undefined,
},
);
if (!resolvedOptions.enabled)
return wxt.logger.warn(`\`[unocss]\` ${this.name} disabled`);
const excludedEntrypoints = new Set(resolvedOptions.excludeEntrypoints);
if (wxt.config.debug) {
wxt.logger.debug(
`\`[unocss]\` Excluded entrypoints:`,
[...excludedEntrypoints].join(', '),
);
}
wxt.hooks.hook('vite:devServer:extendConfig', (config) => {
config.plugins?.push(UnoCSS());
});
wxt.hooks.hook('vite:build:extendConfig', async (entries, config) => {
if (entries.every((entry) => excludedEntrypoints.has(entry.name))) return;
config.plugins?.push(UnoCSS(resolvedOptions.configOrPath));
});
},
});
/**
* Options for the UnoCSS module
*/
export interface UnoCSSOptions<Theme extends object = object> {
/**
* Enable UnoCSS
* @default true
*/
enabled?: boolean;
/**
* List of entrypoint names that UnoCSS is not used in. By default, the UnoCSS
* vite plugin is added to all build steps, but this option is used to exclude
* it from specific builds.
* @example ["popup", "options"]
* @default []
*/
excludeEntrypoints?: string[];
/**
* The path to your `unocss.config.ts` file, relative to <rootDir>, or inline configuration.
*/
configOrPath?: Parameters<typeof UnoCSS<Theme>>[0];
}
declare module 'wxt' {
export interface InlineConfig {
unocss?: UnoCSSOptions;
}
}
+4
View File
@@ -0,0 +1,4 @@
{
"extends": "../../tsconfig.base.json",
"exclude": ["node_modules/**", "dist/**"]
}
+2
View File
@@ -26,8 +26,10 @@
"@types/react": "^18.3.11",
"@types/react-dom": "^18.3.0",
"@wxt-dev/auto-icons": "workspace:*",
"@wxt-dev/unocss": "workspace:*",
"sass": "^1.79.4",
"typescript": "^5.6.2",
"unocss": "^0.63.3",
"vitest": "^2.1.2",
"vitest-plugin-random-seed": "^1.1.0",
"wxt": "workspace:*"
-4
View File
@@ -1,4 +0,0 @@
body {
margin: 0;
padding: 0;
}
+1 -1
View File
@@ -4,7 +4,7 @@
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Popup</title>
<link rel="stylesheet" href="../common/style.css" />
<link rel="stylesheet" href="uno.css" />
</head>
<body>
<p>Hello popup!</p>
@@ -1,4 +1,4 @@
import '../../common/style.css';
import 'uno.css';
import './style.css';
export default defineContentScript({
@@ -13,6 +13,7 @@ export default defineContentScript({
anchor: 'form[role=search]',
onMount: (container) => {
const app = document.createElement('div');
app.classList.add('m-4', 'text-red-500');
app.textContent = i18n.t('prompt_for_name');
container.append(app);
},
@@ -1,11 +1,6 @@
:root {
color-scheme: dark;
color: indianred;
}
html {
background-color: black;
}
div {
padding: 16px;
}
+1
View File
@@ -0,0 +1 @@
export { default } from '@wxt-dev/unocss';
+29
View File
@@ -1,4 +1,5 @@
import { defineConfig } from 'wxt';
import { presetUno } from 'unocss';
export default defineConfig({
srcDir: 'src',
@@ -27,4 +28,32 @@ export default defineConfig({
// @ts-expect-error: c is not defined, this should error out
c: 'c',
},
unocss: {
excludeEntrypoints: [
'example',
'iframe-src',
'injected',
'example-tsx',
'example-2',
'iframe',
'location-change',
'main-world',
'sandbox',
'sidepanel',
'unlisted',
],
configOrPath: {
content: {
pipeline: {
include: [
// the default
/\.(vue|svelte|[jt]sx|mdx?|astro|elm|php|phtml|html)($|\?)/,
// include js/ts files
'src/entrypoints/**/*.{js,ts}',
],
},
},
presets: [presetUno()],
},
},
});
+58 -1
View File
@@ -1,5 +1,62 @@
# Changelog
## v0.19.13
[compare changes](https://github.com/wxt-dev/wxt/compare/wxt-v0.19.12...wxt-v0.19.13)
### 🚀 Enhancements
- **env:** Load env from `.env.[browser]` variants ([#1078](https://github.com/wxt-dev/wxt/pull/1078))
### 🩹 Fixes
- Don't use `#private` member variables in `ContentScriptContext` ([#1103](https://github.com/wxt-dev/wxt/pull/1103))
### ❤️ Contributors
- Aaron ([@aklinker1](http://github.com/aklinker1))
- Craig Slusher ([@sleekslush](http://github.com/sleekslush))
## v0.19.12
[compare changes](https://github.com/wxt-dev/wxt/compare/wxt-v0.19.11...wxt-v0.19.12)
### 🚀 Enhancements
- Add support for `WXT_` environment variable prefix ([#1076](https://github.com/wxt-dev/wxt/pull/1076))
- **config:** Add `outDirTemplate` for customizing output directory structure ([#1074](https://github.com/wxt-dev/wxt/pull/1074))
### 🔥 Performance
- Replace `execa` with `nano-spawn` for smaller package size ([#1042](https://github.com/wxt-dev/wxt/pull/1042))
- Downgrade `esbuild` so a single version is shared between sub-dependencies ([#1045](https://github.com/wxt-dev/wxt/pull/1045))
### 🩹 Fixes
- Use directory name when `zip.name` and `package.json#name` are not provided ([#1028](https://github.com/wxt-dev/wxt/pull/1028))
- Ensure consistent hook execution order and add docs ([#1081](https://github.com/wxt-dev/wxt/pull/1081))
### 📖 Documentation
- Rewrite and restructure the documentation website ([#933](https://github.com/wxt-dev/wxt/pull/933))
### 🏡 Chore
- Remove email from changelog ([#1027](https://github.com/wxt-dev/wxt/pull/1027))
- **deps:** Bump magicast from 0.3.4 to 0.3.5 ([#1017](https://github.com/wxt-dev/wxt/pull/1017))
- **deps:** Bump esbuild from 0.23.0 to 0.24.0 ([#1018](https://github.com/wxt-dev/wxt/pull/1018))
- **deps:** Bump linkedom from 0.18.4 to 0.18.5 ([#1034](https://github.com/wxt-dev/wxt/pull/1034))
- **deps:** Bump execa from 9.3.1 to 9.4.0 ([#1031](https://github.com/wxt-dev/wxt/pull/1031))
- Upgrade all non-major dependencies ([#1040](https://github.com/wxt-dev/wxt/pull/1040))
- Shrink down on dependencies ([#1050](https://github.com/wxt-dev/wxt/pull/1050))
- Enable `extensionApi: chrome` in template projects ([#1083](https://github.com/wxt-dev/wxt/pull/1083))
### ❤️ Contributors
- Aaron ([@aklinker1](http://github.com/aklinker1))
- Florian Metz ([@Timeraa](http://github.com/Timeraa))
- Mezannic ([@mezannic](http://github.com/mezannic))
## v0.19.11
[compare changes](https://github.com/wxt-dev/wxt/compare/wxt-v0.19.10...wxt-v0.19.11)
@@ -2521,4 +2578,4 @@ Initial release of WXT. Full support for production builds and initial toolkit f
### 🤖 CI
- Create validation workflow ([#12](https://github.com/wxt-dev/wxt/pull/12))
- Create release workflow ([#13](https://github.com/wxt-dev/wxt/pull/13))
- Create release workflow ([#13](https://github.com/wxt-dev/wxt/pull/13))
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "wxt",
"type": "module",
"version": "0.19.11",
"version": "0.19.13",
"description": "Next gen framework for developing web extensions",
"repository": {
"type": "git",
@@ -37,30 +37,30 @@ import { createLocationWatcher } from './location-watcher';
export class ContentScriptContext implements AbortController {
private static SCRIPT_STARTED_MESSAGE_TYPE = 'wxt:content-script-started';
#isTopFrame = window.self === window.top;
#abortController: AbortController;
#locationWatcher = createLocationWatcher(this);
private isTopFrame = window.self === window.top;
private abortController: AbortController;
private locationWatcher = createLocationWatcher(this);
constructor(
private readonly contentScriptName: string,
public readonly options?: Omit<ContentScriptDefinition, 'main'>,
) {
this.#abortController = new AbortController();
this.abortController = new AbortController();
if (this.#isTopFrame) {
this.#listenForNewerScripts({ ignoreFirstEvent: true });
this.#stopOldScripts();
if (this.isTopFrame) {
this.listenForNewerScripts({ ignoreFirstEvent: true });
this.stopOldScripts();
} else {
this.#listenForNewerScripts();
this.listenForNewerScripts();
}
}
get signal() {
return this.#abortController.signal;
return this.abortController.signal;
}
abort(reason?: any): void {
return this.#abortController.abort(reason);
return this.abortController.abort(reason);
}
get isInvalid(): boolean {
@@ -188,7 +188,7 @@ export class ContentScriptContext implements AbortController {
) {
if (type === 'wxt:locationchange') {
// Start the location watcher when adding the event for the first time
if (this.isValid) this.#locationWatcher.run();
if (this.isValid) this.locationWatcher.run();
}
target.addEventListener?.(
@@ -213,7 +213,7 @@ export class ContentScriptContext implements AbortController {
);
}
#stopOldScripts() {
stopOldScripts() {
// Use postMessage so it get's sent to all the frames of the page.
window.postMessage(
{
@@ -224,7 +224,7 @@ export class ContentScriptContext implements AbortController {
);
}
#listenForNewerScripts(options?: { ignoreFirstEvent?: boolean }) {
listenForNewerScripts(options?: { ignoreFirstEvent?: boolean }) {
let isFirst = true;
const cb = (event: MessageEvent) => {
+1 -1
View File
@@ -74,7 +74,7 @@ export async function resolveConfig(
const mode = mergedConfig.mode ?? COMMAND_MODES[command];
const env: ConfigEnv = { browser, command, manifestVersion, mode };
loadEnv(mode); // Load any environment variables used below
loadEnv(mode, browser); // Load any environment variables used below
const root = path.resolve(
inlineConfig.root ?? userConfig.root ?? process.cwd(),
+14 -3
View File
@@ -1,10 +1,21 @@
import { config } from 'dotenv';
import type { TargetBrowser } from '../../types';
/**
* Load environment files based on the current mode.
* Load environment files based on the current mode and browser.
*/
export function loadEnv(mode: string) {
export function loadEnv(mode: string, browser: TargetBrowser) {
return config({
path: [`.env.${mode}.local`, `.env.${mode}`, `.env.local`, `.env`],
// Files on top override files below
path: [
`.env.${mode}.${browser}.local`,
`.env.${mode}.${browser}`,
`.env.${browser}.local`,
`.env.${browser}`,
`.env.${mode}.local`,
`.env.${mode}`,
`.env.local`,
`.env`,
],
});
}
+1 -1
View File
@@ -329,7 +329,7 @@ export interface InlineConfig {
* Which extension API to use.
*
* - `"webextension-polyfill"`: Use `browser` and types from [`webextension-polyfill`](https://www.npmjs.com/package/webextension-polyfill).
* - `"chrome"` (unstable): Use the regular `chrome` (or `browser` for Firefox/Safari) globals provided by the browser. Types provided by [`@types/chrome`](https://www.npmjs.com/package/@types/chrome), make sure to install the package or types won't work.
* - `"chrome"`: Use the regular `chrome` (or `browser` for Firefox/Safari) globals provided by the browser. Types provided by [`@types/chrome`](https://www.npmjs.com/package/@types/chrome).
*
* @default "webextension-polyfill"
* @since 0.19.0
+1
View File
@@ -0,0 +1 @@
Removed sub-ids from rendered links. When you link to the same footnote multiple times, the link would look like `[3.2]` instead of just `[3]`. Didn't like how that looked, so this patch removes that function.
+79
View File
@@ -0,0 +1,79 @@
diff --git a/dist/index.cjs.js b/dist/index.cjs.js
index 806448c967261a61288f0faa0633a91f77d35968..6812dd84bbbb7176af4115a287677454fa562883 100644
--- a/dist/index.cjs.js
+++ b/dist/index.cjs.js
@@ -13,14 +13,14 @@ function render_footnote_anchor_name(tokens, idx, options, env /*, slf */) {
}
function render_footnote_caption(tokens, idx /*, options, env, slf */) {
let n = Number(tokens[idx].meta.id + 1).toString();
- if (tokens[idx].meta.subId > 0) n += `:${tokens[idx].meta.subId}`;
+ // if (tokens[idx].meta.subId > 0) n += `:${tokens[idx].meta.subId}`;
return `[${n}]`;
}
function render_footnote_ref(tokens, idx, options, env, slf) {
const id = slf.rules.footnote_anchor_name(tokens, idx, options, env, slf);
const caption = slf.rules.footnote_caption(tokens, idx, options, env, slf);
let refid = id;
- if (tokens[idx].meta.subId > 0) refid += `:${tokens[idx].meta.subId}`;
+ // if (tokens[idx].meta.subId > 0) refid += `:${tokens[idx].meta.subId}`;
return `<sup class="footnote-ref"><a href="#fn${id}" id="fnref${refid}">${caption}</a></sup>`;
}
function render_footnote_block_open(tokens, idx, options) {
@@ -31,7 +31,7 @@ function render_footnote_block_close() {
}
function render_footnote_open(tokens, idx, options, env, slf) {
let id = slf.rules.footnote_anchor_name(tokens, idx, options, env, slf);
- if (tokens[idx].meta.subId > 0) id += `:${tokens[idx].meta.subId}`;
+ // if (tokens[idx].meta.subId > 0) id += `:${tokens[idx].meta.subId}`;
return `<li id="fn${id}" class="footnote-item">`;
}
function render_footnote_close() {
@@ -39,7 +39,7 @@ function render_footnote_close() {
}
function render_footnote_anchor(tokens, idx, options, env, slf) {
let id = slf.rules.footnote_anchor_name(tokens, idx, options, env, slf);
- if (tokens[idx].meta.subId > 0) id += `:${tokens[idx].meta.subId}`;
+ // if (tokens[idx].meta.subId > 0) id += `:${tokens[idx].meta.subId}`;
/* ↩ with escape code to prevent display as Apple Emoji on iOS */
return ` <a href="#fnref${id}" class="footnote-backref">\u21a9\uFE0E</a>`;
diff --git a/index.mjs b/index.mjs
index 48277ca67206f248b9deb0058e9a7d69dbc07702..718e3e527b2513e4f6f59cba9d4526a36d58f6bc 100644
--- a/index.mjs
+++ b/index.mjs
@@ -17,7 +17,7 @@ function render_footnote_anchor_name (tokens, idx, options, env/*, slf */) {
function render_footnote_caption (tokens, idx/*, options, env, slf */) {
let n = Number(tokens[idx].meta.id + 1).toString()
- if (tokens[idx].meta.subId > 0) n += `:${tokens[idx].meta.subId}`
+ // if (tokens[idx].meta.subId > 0) n += `:${tokens[idx].meta.subId}`
return `[${n}]`
}
@@ -27,7 +27,7 @@ function render_footnote_ref (tokens, idx, options, env, slf) {
const caption = slf.rules.footnote_caption(tokens, idx, options, env, slf)
let refid = id
- if (tokens[idx].meta.subId > 0) refid += `:${tokens[idx].meta.subId}`
+ // if (tokens[idx].meta.subId > 0) refid += `:${tokens[idx].meta.subId}`
return `<sup class="footnote-ref"><a href="#fn${id}" id="fnref${refid}">${caption}</a></sup>`
}
@@ -45,7 +45,7 @@ function render_footnote_block_close () {
function render_footnote_open (tokens, idx, options, env, slf) {
let id = slf.rules.footnote_anchor_name(tokens, idx, options, env, slf)
- if (tokens[idx].meta.subId > 0) id += `:${tokens[idx].meta.subId}`
+ // if (tokens[idx].meta.subId > 0) id += `:${tokens[idx].meta.subId}`
return `<li id="fn${id}" class="footnote-item">`
}
@@ -57,7 +57,7 @@ function render_footnote_close () {
function render_footnote_anchor (tokens, idx, options, env, slf) {
let id = slf.rules.footnote_anchor_name(tokens, idx, options, env, slf)
- if (tokens[idx].meta.subId > 0) id += `:${tokens[idx].meta.subId}`
+ // if (tokens[idx].meta.subId > 0) id += `:${tokens[idx].meta.subId}`
/* ↩ with escape code to prevent display as Apple Emoji on iOS */
return ` <a href="#fnref${id}" class="footnote-backref">\u21a9\uFE0E</a>`
+503
View File
@@ -4,6 +4,11 @@ settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
patchedDependencies:
markdown-it-footnote:
hash: ue34jdgdx43siqdj557feoepzq
path: patches/markdown-it-footnote.patch
importers:
.:
@@ -35,6 +40,9 @@ importers:
lint-staged:
specifier: ^15.2.10
version: 15.2.10
markdown-it-footnote:
specifier: ^4.0.0
version: 4.0.0(patch_hash=ue34jdgdx43siqdj557feoepzq)
nano-spawn:
specifier: ^0.1.0
version: 0.1.0
@@ -249,6 +257,37 @@ importers:
specifier: workspace:*
version: link:../wxt
packages/unocss:
dependencies:
defu:
specifier: ^6.1.4
version: 6.1.4
fast-glob:
specifier: ^3.3.2
version: 3.3.2
devDependencies:
'@aklinker1/check':
specifier: ^1.4.5
version: 1.4.5(typescript@5.6.2)
oxlint:
specifier: ^0.9.9
version: 0.9.9
publint:
specifier: ^0.2.11
version: 0.2.11
typescript:
specifier: ^5.6.2
version: 5.6.2
unbuild:
specifier: ^2.0.0
version: 2.0.0(sass@1.79.4)(typescript@5.6.2)
unocss:
specifier: ^0.63.3
version: 0.63.4(postcss@8.4.47)(rollup@4.24.0)(vite@5.4.8(@types/node@20.16.10)(sass@1.79.4))
wxt:
specifier: workspace:*
version: link:../wxt
packages/wxt:
dependencies:
'@aklinker1/rollup-plugin-visualizer':
@@ -463,12 +502,18 @@ importers:
'@wxt-dev/auto-icons':
specifier: workspace:*
version: link:../auto-icons
'@wxt-dev/unocss':
specifier: workspace:*
version: link:../unocss
sass:
specifier: ^1.79.4
version: 1.79.4
typescript:
specifier: ^5.6.2
version: 5.6.2
unocss:
specifier: ^0.63.3
version: 0.63.4(postcss@8.4.47)(rollup@4.24.0)(vite@5.4.8(@types/node@20.16.10)(sass@1.79.4))
vitest:
specifier: ^2.1.2
version: 2.1.2(@types/node@20.16.10)(happy-dom@14.12.3)(sass@1.79.4)
@@ -571,6 +616,12 @@ packages:
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'}
'@antfu/install-pkg@0.4.1':
resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==}
'@antfu/utils@0.7.10':
resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==}
'@antfu/utils@0.7.7':
resolution: {integrity: sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==}
@@ -1245,6 +1296,12 @@ packages:
resolution: {integrity: sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13'}
'@iconify/types@2.0.0':
resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
'@iconify/utils@2.1.33':
resolution: {integrity: sha512-jP9h6v/g0BIZx0p7XGJJVtkVnydtbgTgt9mVNcGDYwaa7UhdHdI9dvoq+gKj9sijMSJKxUPEG2JyjsgXjxL7Kw==}
'@img/sharp-darwin-arm64@0.33.5':
resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
@@ -1447,6 +1504,9 @@ packages:
resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==}
engines: {node: '>=12'}
'@polka/url@1.0.0-next.28':
resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==}
'@rollup/plugin-alias@5.1.0':
resolution: {integrity: sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ==}
engines: {node: '>=14.0.0'}
@@ -1740,6 +1800,86 @@ packages:
'@ungap/structured-clone@1.2.0':
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
'@unocss/astro@0.63.4':
resolution: {integrity: sha512-qu1uMDUT8lXU3mm5EjZpnizvjSYtfY0TTDivR5QNm1i3Xd+ErHfdfOpXdJ2mYvxv+X7C570//KUugkTI3Mb3kQ==}
peerDependencies:
vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0
peerDependenciesMeta:
vite:
optional: true
'@unocss/cli@0.63.4':
resolution: {integrity: sha512-kBWEiVW7KWfjptAJsk38w9dVqOmrO2/z0WADFnlX2RuKNDoCn422Rus6tFB12wZsEujC9eFM34P2nnU7IWWtlQ==}
engines: {node: '>=14'}
hasBin: true
'@unocss/config@0.63.4':
resolution: {integrity: sha512-LfAzM8z0r2comUW94KaSo4JaaEZjPkvrfyVWfO/hyaXa+/xSVIkCTW7+lfWh77hrg1e2SUY1HEvIFBg9Jvb1xQ==}
engines: {node: '>=14'}
'@unocss/core@0.63.4':
resolution: {integrity: sha512-VB4DJ5DsRWpX64si5tWYRXf1n5UkYQqe2s1V22qFiWmXa7Ec+Vf9s3cxWZmoWFC5P9RQiwM9kAqxdg1G+elVkQ==}
'@unocss/extractor-arbitrary-variants@0.63.4':
resolution: {integrity: sha512-gI/+2Nv+cH/ZoOc/4X7RLD9CuBXH51jfwGJ1xRveS7tj+EBs8VshP7Vhbn6Jyp69E00wt4hyzjviDoGqcIA8bA==}
'@unocss/inspector@0.63.4':
resolution: {integrity: sha512-NHvOTScsMrh6oMmwGMrqB1q1RCFTHZCIK0Vwp8hL8/gmNlza2Kd2cQ/WYSEsjW132xeLCOqTME5qny1gpG6SpA==}
'@unocss/postcss@0.63.4':
resolution: {integrity: sha512-JnSAV1hAZumkm0KZGXYqWsP2I7wnOdr+oeDckHKLdZR2mHNVbDm46H8XGbie55t/gPftaLSsMbaPvRjU2Fclqg==}
engines: {node: '>=14'}
peerDependencies:
postcss: ^8.4.21
'@unocss/preset-attributify@0.63.4':
resolution: {integrity: sha512-Q2DT4oVdxaL7XxD9sDP3adb5tnYr05sCxCxPhv3ch8brU7uvwbyqkiEw105pWbj0Hb3i/0kD4iq7lVMZYRH5nw==}
'@unocss/preset-icons@0.63.4':
resolution: {integrity: sha512-V7JV2xvEGeNVjP6HT4IG/BY/HgajJt9CLT2sgKbaVCU9hNOuBs1YTOxua0KLynbTYwr5F5cDMuE/9slQYinZmg==}
'@unocss/preset-mini@0.63.4':
resolution: {integrity: sha512-sim1/uy/XaVzdnMdepXdbdacXF5QNkPDnl4PYBWTyGuT5yKFpuipWpJDS5zZH5W6PYzKdcDA3YiaJ0S5CiUWpQ==}
'@unocss/preset-tagify@0.63.4':
resolution: {integrity: sha512-RQkeSCKrGAowomjh8/chlnVWWOFlC+QkHB1oY5isRXNO2HStESZljyL/MisRpgjj0ubPiocoFCI2hRzXT/HrSg==}
'@unocss/preset-typography@0.63.4':
resolution: {integrity: sha512-PtRXDqF8dW1GYDxiF1Opl+M5fhZeKx63bhvtXXf3iHjVzPDSHB6w1kTElh6vIWeLDNM9GZbbJyB5f2C8DBjibw==}
'@unocss/preset-uno@0.63.4':
resolution: {integrity: sha512-VMc2R0XRMjXA5u5HnP0SkiWtc8EnEJvipNPKsWBuyyVb0QrsIXtF5z3l3cuZmD6V7m/o9s81yshL0gFOBpF7iQ==}
'@unocss/preset-web-fonts@0.63.4':
resolution: {integrity: sha512-XuU4dNwTQ0ULlYpQFSKk2JRYACTzpIzpPGP5ZnqdwBxEQH5JhXx4mEmaOhu1OH3c2hZURAkdQvBzYWia4oZ6og==}
'@unocss/preset-wind@0.63.4':
resolution: {integrity: sha512-8fTUp6ZxH9YiScz4nZ1tRqprayrlQSfguzkjxDvOrwazfNcmxvHSZfC9dtpEmY+QssM1zHH0mmWmWgQYwU9Zdw==}
'@unocss/reset@0.63.4':
resolution: {integrity: sha512-7lnVH9zuVMekY0IUtcQRrbEqlkhvyGixgzHSWPBF/JA/Pto18bhd+cMeZhuz4eHRbN274bANX+//I+Ilfo7SSg==}
'@unocss/rule-utils@0.63.4':
resolution: {integrity: sha512-7yRWF881ymxnMcCJSiI/1kMI8uwRqRi3l5XnV+JSGjjF2fDr1POUQjSLaA4s7ZfdEgmjagdLK3F5xqkfMMECNA==}
engines: {node: '>=14'}
'@unocss/transformer-attributify-jsx@0.63.4':
resolution: {integrity: sha512-5cO9BY/Bga6YmbTch1Neg+E46HerJp5wLxPkIcFCDNsqy2MsB97jsFG1dO0jDUg43E26MRI19tg1eqrWL6sTYg==}
'@unocss/transformer-compile-class@0.63.4':
resolution: {integrity: sha512-ta6mqq2S5OWcfBzzYnaiMt3ekn2ECNZTqzzqMglnIKPkE+GmqUmmRavRnpc+NGobuqMRcI4F6x8MSSHf4MV0jw==}
'@unocss/transformer-directives@0.63.4':
resolution: {integrity: sha512-N/dNhmn3e9/Z4IvAujxCdwhNMfx2SihPA2/7GFSMMRi7F0Hn/o2hOqQquRqIJbQwIvi6bJtKwyasxjDoUhJqBA==}
'@unocss/transformer-variant-group@0.63.4':
resolution: {integrity: sha512-uEHltdfR0Y1nvs1eqHwsgevRFhZkLmA/MsaMEfNblDJ6CLHe/ACNmMoLX1Mcuq/lAPs0X6jGnKudk4QTrCv15Q==}
'@unocss/vite@0.63.4':
resolution: {integrity: sha512-YK0L177GD8Kx+JtfiCJy4YyBYckAXo4ogC8LZ+pYVNXDMN+F+XItpGI/ofLRaGIaewNg+MJgGY+CQZceABEAfg==}
peerDependencies:
vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0
'@vitejs/plugin-react@4.3.2':
resolution: {integrity: sha512-hieu+o05v4glEBucTcKMK3dlES0OeJlD9YVOAPraVMOInBCwzumaIFiUjr4bHK7NPgnAHgiskUoceKercrN8vg==}
engines: {node: ^14.18.0 || >=16.0.0}
@@ -2062,6 +2202,12 @@ packages:
resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==}
engines: {node: '>=18'}
bundle-require@5.0.0:
resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
peerDependencies:
esbuild: '>=0.18'
bunyan@1.8.15:
resolution: {integrity: sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig==}
engines: {'0': node >=0.10.0}
@@ -2307,6 +2453,10 @@ packages:
resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==}
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
css-tree@3.0.0:
resolution: {integrity: sha512-o88DVQ6GzsABn1+6+zo2ct801dBO5OASVyxbbvA2W20ue2puSh/VOuqUj90eUeMSX/xqGqBmOKiRQN7tJOuBXw==}
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
css-what@6.1.0:
resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
engines: {node: '>= 6'}
@@ -2479,6 +2629,9 @@ packages:
resolution: {integrity: sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==}
engines: {node: '>=0.10'}
duplexer@0.1.2:
resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}
eastasianwidth@0.2.0:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
@@ -2593,6 +2746,14 @@ packages:
fd-slicer@1.1.0:
resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==}
fdir@6.4.2:
resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==}
peerDependencies:
picomatch: ^3 || ^4
peerDependenciesMeta:
picomatch:
optional: true
filesize@10.1.6:
resolution: {integrity: sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==}
engines: {node: '>= 10.4.0'}
@@ -2701,10 +2862,12 @@ packages:
glob@6.0.4:
resolution: {integrity: sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==}
deprecated: Glob versions prior to v9 are no longer supported
glob@8.1.0:
resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==}
engines: {node: '>=12'}
deprecated: Glob versions prior to v9 are no longer supported
global-dirs@3.0.1:
resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==}
@@ -2734,6 +2897,10 @@ packages:
growly@1.3.0:
resolution: {integrity: sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==}
gzip-size@6.0.0:
resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==}
engines: {node: '>=10'}
happy-dom@14.12.3:
resolution: {integrity: sha512-vsYlEs3E9gLwA1Hp+w3qzu+RUDFf4VTT8cyKqVICoZ2k7WM++Qyd2LwzyTi5bqMJFiIC/vNpTDYuxdreENRK/g==}
engines: {node: '>=16.0.0'}
@@ -2821,12 +2988,16 @@ packages:
resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==}
engines: {node: '>=8'}
importx@0.4.4:
resolution: {integrity: sha512-Lo1pukzAREqrBnnHC+tj+lreMTAvyxtkKsMxLY8H15M/bvLl54p3YuoTI70Tz7Il0AsgSlD7Lrk/FaApRcBL7w==}
imurmurhash@0.1.4:
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
engines: {node: '>=0.8.19'}
inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
@@ -3017,6 +3188,10 @@ packages:
resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
hasBin: true
jiti@2.0.0-beta.3:
resolution: {integrity: sha512-pmfRbVRs/7khFrSAYnSiJ8C0D5GvzkE4Ey2pAvUcJsw1ly/p+7ut27jbJrjY79BpAJQJ4gXYFtK6d1Aub+9baQ==}
hasBin: true
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@@ -3065,6 +3240,9 @@ packages:
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
engines: {node: '>=6'}
kolorist@1.8.0:
resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==}
latest-version@7.0.0:
resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==}
engines: {node: '>=14.16'}
@@ -3099,6 +3277,10 @@ packages:
resolution: {integrity: sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==}
engines: {node: '>=18.0.0'}
load-tsconfig@0.2.5:
resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
local-pkg@0.5.0:
resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==}
engines: {node: '>=14'}
@@ -3179,6 +3361,9 @@ packages:
mark.js@8.11.1:
resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==}
markdown-it-footnote@4.0.0:
resolution: {integrity: sha512-WYJ7urf+khJYl3DqofQpYfEYkZKbmXmwxQV8c8mO/hGIhgZ1wOe7R4HLFNwqx7TjILbnC98fuyeSsin19JdFcQ==}
marked@4.3.0:
resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==}
engines: {node: '>= 12'}
@@ -3196,6 +3381,9 @@ packages:
mdn-data@2.0.30:
resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
mdn-data@2.10.0:
resolution: {integrity: sha512-qq7C3EtK3yJXMwz1zAab65pjl+UhohqMOctTgcqjLOWABqmwj+me02LSsCuEUxnst9X1lCBpoE0WArGKgdGDzw==}
merge-anything@5.1.7:
resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==}
engines: {node: '>=12.13'}
@@ -3333,6 +3521,10 @@ packages:
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
engines: {node: '>=4'}
mrmime@2.0.0:
resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==}
engines: {node: '>=10'}
ms@2.0.0:
resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
@@ -3494,6 +3686,9 @@ packages:
resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==}
engines: {node: '>=14.16'}
package-manager-detector@0.2.2:
resolution: {integrity: sha512-VgXbyrSNsml4eHWIvxxG/nTL4wgybMTXCV2Un/+yEc3aDKKU6nQBZjbeP3Pl3qm9Qg92X/1ng4ffvCeD/zwHgg==}
pako@1.0.11:
resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
@@ -3556,6 +3751,10 @@ packages:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
picomatch@4.0.2:
resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
engines: {node: '>=12'}
pidtree@0.6.0:
resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
engines: {node: '>=0.10'}
@@ -3894,6 +4093,7 @@ packages:
rimraf@2.4.5:
resolution: {integrity: sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==}
deprecated: Rimraf versions prior to v4 are no longer supported
hasBin: true
rollup-plugin-dts@6.1.1:
@@ -4027,6 +4227,10 @@ packages:
simple-swizzle@0.2.2:
resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
sirv@2.0.4:
resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==}
engines: {node: '>= 10'}
sisteransi@1.0.5:
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
@@ -4213,6 +4417,10 @@ packages:
tinyexec@0.3.0:
resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==}
tinyglobby@0.2.9:
resolution: {integrity: sha512-8or1+BGEdk1Zkkw2ii16qSS7uVrQJPre5A9o/XkWPATkk23FZh/15BKFxPnlTy6vkljZxLqYCzzBMj30ZrSvjw==}
engines: {node: '>=12.0.0'}
tinypool@1.0.0:
resolution: {integrity: sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==}
engines: {node: ^18.0.0 || >=20.0.0}
@@ -4241,6 +4449,10 @@ packages:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
totalist@3.0.1:
resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
engines: {node: '>=6'}
trim-lines@3.0.1:
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
@@ -4260,6 +4472,11 @@ packages:
engines: {node: '>=18.0.0'}
hasBin: true
tsx@4.19.1:
resolution: {integrity: sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==}
engines: {node: '>=18.0.0'}
hasBin: true
type-fest@1.4.0:
resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==}
engines: {node: '>=10'}
@@ -4318,6 +4535,9 @@ packages:
typescript:
optional: true
unconfig@0.5.5:
resolution: {integrity: sha512-VQZ5PT9HDX+qag0XdgQi8tJepPhXiR/yVOkn707gJDKo31lGjRilPREiQJ9Z6zd/Ugpv6ZvO5VxVIcatldYcNQ==}
undici-types@5.26.5:
resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
@@ -4354,6 +4574,18 @@ packages:
resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
engines: {node: '>= 10.0.0'}
unocss@0.63.4:
resolution: {integrity: sha512-MQ/ktuJ2MoXBsd117DEONFubJRQN6Og4mQJLbT+0nna2aTW4jYJESJ479mJYWq/ajonxEaM+zrf8M92VIWxzEw==}
engines: {node: '>=14'}
peerDependencies:
'@unocss/webpack': 0.63.4
vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0
peerDependenciesMeta:
'@unocss/webpack':
optional: true
vite:
optional: true
unplugin@1.14.1:
resolution: {integrity: sha512-lBlHbfSFPToDYp9pjXlUEFVxYLaue9f9T1HC+4OHlmj+HnMDdz9oZY+erXfoCe/5V/7gKUSY2jpXPb9S7f0f/w==}
engines: {node: '>=14.0.0'}
@@ -4798,6 +5030,13 @@ snapshots:
'@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.25
'@antfu/install-pkg@0.4.1':
dependencies:
package-manager-detector: 0.2.2
tinyexec: 0.3.0
'@antfu/utils@0.7.10': {}
'@antfu/utils@0.7.7': {}
'@babel/code-frame@7.24.7':
@@ -5346,6 +5585,20 @@ snapshots:
'@faker-js/faker@8.4.1': {}
'@iconify/types@2.0.0': {}
'@iconify/utils@2.1.33':
dependencies:
'@antfu/install-pkg': 0.4.1
'@antfu/utils': 0.7.10
'@iconify/types': 2.0.0
debug: 4.3.7
kolorist: 1.8.0
local-pkg: 0.5.0
mlly: 1.7.1
transitivePeerDependencies:
- supports-color
'@img/sharp-darwin-arm64@0.33.5':
optionalDependencies:
'@img/sharp-libvips-darwin-arm64': 1.0.4
@@ -5502,6 +5755,8 @@ snapshots:
'@pnpm/network.ca-file': 1.0.2
config-chain: 1.1.13
'@polka/url@1.0.0-next.28': {}
'@rollup/plugin-alias@5.1.0(rollup@3.29.4)':
dependencies:
slash: 4.0.0
@@ -5789,6 +6044,152 @@ snapshots:
'@ungap/structured-clone@1.2.0': {}
'@unocss/astro@0.63.4(rollup@4.24.0)(vite@5.4.8(@types/node@20.16.10)(sass@1.79.4))':
dependencies:
'@unocss/core': 0.63.4
'@unocss/reset': 0.63.4
'@unocss/vite': 0.63.4(rollup@4.24.0)(vite@5.4.8(@types/node@20.16.10)(sass@1.79.4))
optionalDependencies:
vite: 5.4.8(@types/node@20.16.10)(sass@1.79.4)
transitivePeerDependencies:
- rollup
- supports-color
'@unocss/cli@0.63.4(rollup@4.24.0)':
dependencies:
'@ampproject/remapping': 2.3.0
'@rollup/pluginutils': 5.1.2(rollup@4.24.0)
'@unocss/config': 0.63.4
'@unocss/core': 0.63.4
'@unocss/preset-uno': 0.63.4
cac: 6.7.14
chokidar: 3.6.0
colorette: 2.0.20
consola: 3.2.3
magic-string: 0.30.11
pathe: 1.1.2
perfect-debounce: 1.0.0
tinyglobby: 0.2.9
transitivePeerDependencies:
- rollup
- supports-color
'@unocss/config@0.63.4':
dependencies:
'@unocss/core': 0.63.4
unconfig: 0.5.5
transitivePeerDependencies:
- supports-color
'@unocss/core@0.63.4': {}
'@unocss/extractor-arbitrary-variants@0.63.4':
dependencies:
'@unocss/core': 0.63.4
'@unocss/inspector@0.63.4':
dependencies:
'@unocss/core': 0.63.4
'@unocss/rule-utils': 0.63.4
gzip-size: 6.0.0
sirv: 2.0.4
'@unocss/postcss@0.63.4(postcss@8.4.47)':
dependencies:
'@unocss/config': 0.63.4
'@unocss/core': 0.63.4
'@unocss/rule-utils': 0.63.4
css-tree: 3.0.0
postcss: 8.4.47
tinyglobby: 0.2.9
transitivePeerDependencies:
- supports-color
'@unocss/preset-attributify@0.63.4':
dependencies:
'@unocss/core': 0.63.4
'@unocss/preset-icons@0.63.4':
dependencies:
'@iconify/utils': 2.1.33
'@unocss/core': 0.63.4
ofetch: 1.4.0
transitivePeerDependencies:
- supports-color
'@unocss/preset-mini@0.63.4':
dependencies:
'@unocss/core': 0.63.4
'@unocss/extractor-arbitrary-variants': 0.63.4
'@unocss/rule-utils': 0.63.4
'@unocss/preset-tagify@0.63.4':
dependencies:
'@unocss/core': 0.63.4
'@unocss/preset-typography@0.63.4':
dependencies:
'@unocss/core': 0.63.4
'@unocss/preset-mini': 0.63.4
'@unocss/preset-uno@0.63.4':
dependencies:
'@unocss/core': 0.63.4
'@unocss/preset-mini': 0.63.4
'@unocss/preset-wind': 0.63.4
'@unocss/rule-utils': 0.63.4
'@unocss/preset-web-fonts@0.63.4':
dependencies:
'@unocss/core': 0.63.4
ofetch: 1.4.0
'@unocss/preset-wind@0.63.4':
dependencies:
'@unocss/core': 0.63.4
'@unocss/preset-mini': 0.63.4
'@unocss/rule-utils': 0.63.4
'@unocss/reset@0.63.4': {}
'@unocss/rule-utils@0.63.4':
dependencies:
'@unocss/core': 0.63.4
magic-string: 0.30.11
'@unocss/transformer-attributify-jsx@0.63.4':
dependencies:
'@unocss/core': 0.63.4
'@unocss/transformer-compile-class@0.63.4':
dependencies:
'@unocss/core': 0.63.4
'@unocss/transformer-directives@0.63.4':
dependencies:
'@unocss/core': 0.63.4
'@unocss/rule-utils': 0.63.4
css-tree: 3.0.0
'@unocss/transformer-variant-group@0.63.4':
dependencies:
'@unocss/core': 0.63.4
'@unocss/vite@0.63.4(rollup@4.24.0)(vite@5.4.8(@types/node@20.16.10)(sass@1.79.4))':
dependencies:
'@ampproject/remapping': 2.3.0
'@rollup/pluginutils': 5.1.2(rollup@4.24.0)
'@unocss/config': 0.63.4
'@unocss/core': 0.63.4
'@unocss/inspector': 0.63.4
chokidar: 3.6.0
magic-string: 0.30.11
tinyglobby: 0.2.9
vite: 5.4.8(@types/node@20.16.10)(sass@1.79.4)
transitivePeerDependencies:
- rollup
- supports-color
'@vitejs/plugin-react@4.3.2(vite@5.4.8(@types/node@20.16.10)(sass@1.79.4))':
dependencies:
'@babel/core': 7.25.7
@@ -6158,6 +6559,11 @@ snapshots:
dependencies:
run-applescript: 7.0.0
bundle-require@5.0.0(esbuild@0.21.5):
dependencies:
esbuild: 0.21.5
load-tsconfig: 0.2.5
bunyan@1.8.15:
optionalDependencies:
dtrace-provider: 0.8.8
@@ -6448,6 +6854,11 @@ snapshots:
mdn-data: 2.0.30
source-map-js: 1.2.0
css-tree@3.0.0:
dependencies:
mdn-data: 2.10.0
source-map-js: 1.2.1
css-what@6.1.0: {}
cssesc@3.0.0: {}
@@ -6608,6 +7019,8 @@ snapshots:
nan: 2.17.0
optional: true
duplexer@0.1.2: {}
eastasianwidth@0.2.0: {}
electron-to-chromium@1.4.802: {}
@@ -6797,6 +7210,10 @@ snapshots:
dependencies:
pend: 1.2.0
fdir@6.4.2(picomatch@4.0.2):
optionalDependencies:
picomatch: 4.0.2
filesize@10.1.6: {}
fill-range@7.1.1:
@@ -6960,6 +7377,10 @@ snapshots:
growly@1.3.0: {}
gzip-size@6.0.0:
dependencies:
duplexer: 0.1.2
happy-dom@14.12.3:
dependencies:
entities: 4.5.0
@@ -7040,6 +7461,18 @@ snapshots:
import-lazy@4.0.0: {}
importx@0.4.4:
dependencies:
bundle-require: 5.0.0(esbuild@0.21.5)
debug: 4.3.7
esbuild: 0.21.5
jiti: 2.0.0-beta.3
jiti-v1: jiti@1.21.6
pathe: 1.1.2
tsx: 4.19.1
transitivePeerDependencies:
- supports-color
imurmurhash@0.1.4: {}
inflight@1.0.6:
@@ -7193,6 +7626,8 @@ snapshots:
jiti@1.21.6: {}
jiti@2.0.0-beta.3: {}
js-tokens@4.0.0: {}
js-tokens@9.0.0: {}
@@ -7230,6 +7665,8 @@ snapshots:
kleur@4.1.5: {}
kolorist@1.8.0: {}
latest-version@7.0.0:
dependencies:
package-json: 8.1.1
@@ -7290,6 +7727,8 @@ snapshots:
rfdc: 1.4.1
wrap-ansi: 9.0.0
load-tsconfig@0.2.5: {}
local-pkg@0.5.0:
dependencies:
mlly: 1.7.1
@@ -7375,6 +7814,8 @@ snapshots:
mark.js@8.11.1: {}
markdown-it-footnote@4.0.0(patch_hash=ue34jdgdx43siqdj557feoepzq): {}
marked@4.3.0: {}
marky@1.2.5: {}
@@ -7395,6 +7836,8 @@ snapshots:
mdn-data@2.0.30: {}
mdn-data@2.10.0: {}
merge-anything@5.1.7:
dependencies:
is-what: 4.1.16
@@ -7519,6 +7962,8 @@ snapshots:
mri@1.2.0: {}
mrmime@2.0.0: {}
ms@2.0.0: {}
ms@2.1.2: {}
@@ -7710,6 +8155,8 @@ snapshots:
registry-url: 6.0.1
semver: 7.6.3
package-manager-detector@0.2.2: {}
pako@1.0.11: {}
parse-json@7.1.1:
@@ -7762,6 +8209,8 @@ snapshots:
picomatch@2.3.1: {}
picomatch@4.0.2: {}
pidtree@0.6.0: {}
pkg-types@1.1.3:
@@ -8266,6 +8715,12 @@ snapshots:
dependencies:
is-arrayish: 0.3.2
sirv@2.0.4:
dependencies:
'@polka/url': 1.0.0-next.28
mrmime: 2.0.0
totalist: 3.0.1
sisteransi@1.0.5: {}
slash@4.0.0: {}
@@ -8464,6 +8919,11 @@ snapshots:
tinyexec@0.3.0: {}
tinyglobby@0.2.9:
dependencies:
fdir: 6.4.2(picomatch@4.0.2)
picomatch: 4.0.2
tinypool@1.0.0: {}
tinyrainbow@1.2.0: {}
@@ -8480,6 +8940,8 @@ snapshots:
dependencies:
is-number: 7.0.0
totalist@3.0.1: {}
trim-lines@3.0.1: {}
ts-essentials@10.0.1(typescript@5.6.2):
@@ -8495,6 +8957,13 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
tsx@4.19.1:
dependencies:
esbuild: 0.23.0
get-tsconfig: 4.7.5
optionalDependencies:
fsevents: 2.3.3
type-fest@1.4.0: {}
type-fest@2.19.0: {}
@@ -8564,6 +9033,14 @@ snapshots:
- supports-color
- vue-tsc
unconfig@0.5.5:
dependencies:
'@antfu/utils': 0.7.10
defu: 6.1.4
importx: 0.4.4
transitivePeerDependencies:
- supports-color
undici-types@5.26.5: {}
undici-types@6.19.8: {}
@@ -8618,6 +9095,32 @@ snapshots:
universalify@2.0.0: {}
unocss@0.63.4(postcss@8.4.47)(rollup@4.24.0)(vite@5.4.8(@types/node@20.16.10)(sass@1.79.4)):
dependencies:
'@unocss/astro': 0.63.4(rollup@4.24.0)(vite@5.4.8(@types/node@20.16.10)(sass@1.79.4))
'@unocss/cli': 0.63.4(rollup@4.24.0)
'@unocss/core': 0.63.4
'@unocss/postcss': 0.63.4(postcss@8.4.47)
'@unocss/preset-attributify': 0.63.4
'@unocss/preset-icons': 0.63.4
'@unocss/preset-mini': 0.63.4
'@unocss/preset-tagify': 0.63.4
'@unocss/preset-typography': 0.63.4
'@unocss/preset-uno': 0.63.4
'@unocss/preset-web-fonts': 0.63.4
'@unocss/preset-wind': 0.63.4
'@unocss/transformer-attributify-jsx': 0.63.4
'@unocss/transformer-compile-class': 0.63.4
'@unocss/transformer-directives': 0.63.4
'@unocss/transformer-variant-group': 0.63.4
'@unocss/vite': 0.63.4(rollup@4.24.0)(vite@5.4.8(@types/node@20.16.10)(sass@1.79.4))
optionalDependencies:
vite: 5.4.8(@types/node@20.16.10)(sass@1.79.4)
transitivePeerDependencies:
- postcss
- rollup
- supports-color
unplugin@1.14.1(webpack-sources@3.2.3):
dependencies:
acorn: 8.12.1
+1
View File
@@ -2,5 +2,6 @@ import { defineConfig } from 'wxt';
// See https://wxt.dev/api/config.html
export default defineConfig({
extensionApi: 'chrome',
modules: ['@wxt-dev/module-react'],
});
+1
View File
@@ -2,5 +2,6 @@ import { defineConfig } from 'wxt';
// See https://wxt.dev/api/config.html
export default defineConfig({
extensionApi: 'chrome',
modules: ['@wxt-dev/module-solid'],
});
+1
View File
@@ -3,5 +3,6 @@ import { defineConfig } from 'wxt';
// See https://wxt.dev/api/config.html
export default defineConfig({
srcDir: 'src',
extensionApi: 'chrome',
modules: ['@wxt-dev/module-svelte'],
});
+3 -1
View File
@@ -1,4 +1,6 @@
import { defineConfig } from 'wxt';
// See https://wxt.dev/api/config.html
export default defineConfig({});
export default defineConfig({
extensionApi: 'chrome',
});
+1
View File
@@ -2,5 +2,6 @@ import { defineConfig } from 'wxt';
// See https://wxt.dev/api/config.html
export default defineConfig({
extensionApi: 'chrome',
modules: ['@wxt-dev/module-vue'],
});