mirror of
https://github.com/Automattic/harper.git
synced 2025-12-23 08:48:15 +00:00
chore: reduce dependency load for new contributors (#2131)
Some checks are pending
Binaries / harper-cli - macOS-aarch64 (push) Waiting to run
Binaries / harper-cli - Linux-aarch64-GNU (push) Waiting to run
Binaries / harper-cli - Linux-aarch64-musl (push) Waiting to run
Binaries / harper-cli - macOS-x86_64 (push) Waiting to run
Binaries / harper-cli - Linux-x86_64-GNU (push) Waiting to run
Binaries / harper-cli - Linux-x86_64-musl (push) Waiting to run
Binaries / harper-cli - Windows-x86_64 (push) Waiting to run
Binaries / harper-ls - macOS-aarch64 (push) Waiting to run
Binaries / harper-ls - Linux-aarch64-GNU (push) Waiting to run
Binaries / harper-ls - Linux-aarch64-musl (push) Waiting to run
Binaries / harper-ls - macOS-x86_64 (push) Waiting to run
Binaries / harper-ls - Linux-x86_64-GNU (push) Waiting to run
Binaries / harper-ls - Linux-x86_64-musl (push) Waiting to run
Binaries / harper-ls - Windows-x86_64 (push) Waiting to run
Build Web / build-web (push) Waiting to run
Chrome Plugin / chrome-plugin (push) Waiting to run
Just Checks / just build-obsidian (push) Waiting to run
Just Checks / just test-harperjs (push) Waiting to run
Just Checks / just test-obsidian (push) Waiting to run
Just Checks / just test-rust (push) Waiting to run
Just Checks / just test-vscode (push) Waiting to run
VS Code Plugin / alpine-arm64 (push) Waiting to run
VS Code Plugin / darwin-arm64 (push) Waiting to run
VS Code Plugin / linux-armhf (push) Waiting to run
VS Code Plugin / linux-x64 (push) Waiting to run
WordPress Plugin / wp-plugin (push) Waiting to run
Just Checks / just check-js (push) Waiting to run
Just Checks / just check-rust (push) Waiting to run
Just Checks / just test-chrome-plugin (push) Waiting to run
Just Checks / just test-firefox-plugin (push) Waiting to run
VS Code Plugin / alpine-x64 (push) Waiting to run
VS Code Plugin / darwin-x64 (push) Waiting to run
VS Code Plugin / linux-arm64 (push) Waiting to run
VS Code Plugin / win32-arm64 (push) Waiting to run
VS Code Plugin / win32-x64 (push) Waiting to run
Some checks are pending
Binaries / harper-cli - macOS-aarch64 (push) Waiting to run
Binaries / harper-cli - Linux-aarch64-GNU (push) Waiting to run
Binaries / harper-cli - Linux-aarch64-musl (push) Waiting to run
Binaries / harper-cli - macOS-x86_64 (push) Waiting to run
Binaries / harper-cli - Linux-x86_64-GNU (push) Waiting to run
Binaries / harper-cli - Linux-x86_64-musl (push) Waiting to run
Binaries / harper-cli - Windows-x86_64 (push) Waiting to run
Binaries / harper-ls - macOS-aarch64 (push) Waiting to run
Binaries / harper-ls - Linux-aarch64-GNU (push) Waiting to run
Binaries / harper-ls - Linux-aarch64-musl (push) Waiting to run
Binaries / harper-ls - macOS-x86_64 (push) Waiting to run
Binaries / harper-ls - Linux-x86_64-GNU (push) Waiting to run
Binaries / harper-ls - Linux-x86_64-musl (push) Waiting to run
Binaries / harper-ls - Windows-x86_64 (push) Waiting to run
Build Web / build-web (push) Waiting to run
Chrome Plugin / chrome-plugin (push) Waiting to run
Just Checks / just build-obsidian (push) Waiting to run
Just Checks / just test-harperjs (push) Waiting to run
Just Checks / just test-obsidian (push) Waiting to run
Just Checks / just test-rust (push) Waiting to run
Just Checks / just test-vscode (push) Waiting to run
VS Code Plugin / alpine-arm64 (push) Waiting to run
VS Code Plugin / darwin-arm64 (push) Waiting to run
VS Code Plugin / linux-armhf (push) Waiting to run
VS Code Plugin / linux-x64 (push) Waiting to run
WordPress Plugin / wp-plugin (push) Waiting to run
Just Checks / just check-js (push) Waiting to run
Just Checks / just check-rust (push) Waiting to run
Just Checks / just test-chrome-plugin (push) Waiting to run
Just Checks / just test-firefox-plugin (push) Waiting to run
VS Code Plugin / alpine-x64 (push) Waiting to run
VS Code Plugin / darwin-x64 (push) Waiting to run
VS Code Plugin / linux-arm64 (push) Waiting to run
VS Code Plugin / win32-arm64 (push) Waiting to run
VS Code Plugin / win32-x64 (push) Waiting to run
This commit is contained in:
parent
387f5e2746
commit
b033b9bf6d
61 changed files with 459 additions and 570 deletions
2
.github/workflows/chrome_plugin.yml
vendored
2
.github/workflows/chrome_plugin.yml
vendored
|
|
@ -22,8 +22,6 @@ jobs:
|
||||||
node-version-file: ".node-version"
|
node-version-file: ".node-version"
|
||||||
- name: Enable Corepack
|
- name: Enable Corepack
|
||||||
run: corepack enable
|
run: corepack enable
|
||||||
- name: Install `pandoc`
|
|
||||||
run: sudo apt-get update && sudo apt-get install pandoc -y
|
|
||||||
- uses: cargo-bins/cargo-binstall@main
|
- uses: cargo-bins/cargo-binstall@main
|
||||||
- name: Install `wasm-pack`
|
- name: Install `wasm-pack`
|
||||||
run: cargo binstall wasm-pack --force --no-confirm
|
run: cargo binstall wasm-pack --force --no-confirm
|
||||||
|
|
|
||||||
2
.github/workflows/just_checks.yml
vendored
2
.github/workflows/just_checks.yml
vendored
|
|
@ -43,8 +43,6 @@ jobs:
|
||||||
package-manager-cache: false
|
package-manager-cache: false
|
||||||
- name: Enable Corepack
|
- name: Enable Corepack
|
||||||
run: corepack enable
|
run: corepack enable
|
||||||
- name: Install `pandoc`
|
|
||||||
run: sudo apt-get update && sudo apt-get install pandoc -y
|
|
||||||
- name: Rust Cache
|
- name: Rust Cache
|
||||||
uses: Swatinem/rust-cache@v2.7.8
|
uses: Swatinem/rust-cache@v2.7.8
|
||||||
- uses: cargo-bins/cargo-binstall@main
|
- uses: cargo-bins/cargo-binstall@main
|
||||||
|
|
|
||||||
2
.github/workflows/wp_plugin.yml
vendored
2
.github/workflows/wp_plugin.yml
vendored
|
|
@ -22,8 +22,6 @@ jobs:
|
||||||
node-version-file: ".node-version"
|
node-version-file: ".node-version"
|
||||||
- name: Enable Corepack
|
- name: Enable Corepack
|
||||||
run: corepack enable
|
run: corepack enable
|
||||||
- name: Install pandoc
|
|
||||||
run: sudo apt-get update && sudo apt-get install pandoc -y
|
|
||||||
- uses: cargo-bins/cargo-binstall@main
|
- uses: cargo-bins/cargo-binstall@main
|
||||||
- name: Install wasm-pack
|
- name: Install wasm-pack
|
||||||
run: cargo binstall wasm-pack --force --no-confirm
|
run: cargo binstall wasm-pack --force --no-confirm
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ RUN wasm-pack build --target web
|
||||||
|
|
||||||
FROM node:${NODE_VERSION} AS node-build
|
FROM node:${NODE_VERSION} AS node-build
|
||||||
|
|
||||||
RUN apt-get update && apt-get install git pandoc parallel -y
|
RUN apt-get update && apt-get install git parallel -y
|
||||||
RUN corepack enable
|
RUN corepack enable
|
||||||
|
|
||||||
RUN mkdir -p /usr/build/
|
RUN mkdir -p /usr/build/
|
||||||
|
|
|
||||||
10
biome.json
10
biome.json
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"$schema": "https://biomejs.dev/schemas/2.0.6/schema.json",
|
"$schema": "https://biomejs.dev/schemas/2.3.3/schema.json",
|
||||||
"vcs": {
|
"vcs": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"clientKind": "git",
|
"clientKind": "git",
|
||||||
|
|
@ -30,6 +30,11 @@
|
||||||
"!**/yarn.lock"
|
"!**/yarn.lock"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"css": {
|
||||||
|
"parser": {
|
||||||
|
"tailwindDirectives": true
|
||||||
|
}
|
||||||
|
},
|
||||||
"formatter": {
|
"formatter": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"lineWidth": 100,
|
"lineWidth": 100,
|
||||||
|
|
@ -94,6 +99,9 @@
|
||||||
"includes": ["**/*.svelte", "**/*.astro", "**/*.vue"],
|
"includes": ["**/*.svelte", "**/*.astro", "**/*.vue"],
|
||||||
"linter": {
|
"linter": {
|
||||||
"rules": {
|
"rules": {
|
||||||
|
"correctness": {
|
||||||
|
"noUnusedImports": "off"
|
||||||
|
},
|
||||||
"style": {
|
"style": {
|
||||||
"useConst": "off",
|
"useConst": "off",
|
||||||
"useImportType": "off"
|
"useImportType": "off"
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,6 @@
|
||||||
nodejs
|
nodejs
|
||||||
wasm-pack
|
wasm-pack
|
||||||
zip
|
zip
|
||||||
pandoc
|
|
||||||
wasm-bindgen-cli_0_2_100
|
wasm-bindgen-cli_0_2_100
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
12
justfile
12
justfile
|
|
@ -177,7 +177,8 @@ test-vscode:
|
||||||
mkdir "$bin_dir"
|
mkdir "$bin_dir"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cargo build --release
|
echo Building binaries
|
||||||
|
cargo build --release -q
|
||||||
|
|
||||||
cp "{{justfile_directory()}}/target/release/harper-ls"* "$bin_dir"
|
cp "{{justfile_directory()}}/target/release/harper-ls"* "$bin_dir"
|
||||||
|
|
||||||
|
|
@ -203,7 +204,8 @@ package-vscode target="":
|
||||||
cp LICENSE "$ext_dir"
|
cp LICENSE "$ext_dir"
|
||||||
|
|
||||||
if [[ -z "{{target}}" ]]; then
|
if [[ -z "{{target}}" ]]; then
|
||||||
cargo build --release
|
echo Building binaries
|
||||||
|
cargo build --release -q
|
||||||
|
|
||||||
if ! [[ -d "$bin_dir" ]]; then
|
if ! [[ -d "$bin_dir" ]]; then
|
||||||
mkdir "$bin_dir"
|
mkdir "$bin_dir"
|
||||||
|
|
@ -285,7 +287,8 @@ precommit: check test build-harperjs build-obsidian build-web build-wp build-fir
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
cargo build --all-targets
|
echo Building binaries
|
||||||
|
cargo build --all-targets -q
|
||||||
|
|
||||||
# Install `harper-cli` and `harper-ls` to your machine via `cargo`
|
# Install `harper-cli` and `harper-ls` to your machine via `cargo`
|
||||||
install:
|
install:
|
||||||
|
|
@ -303,7 +306,8 @@ dogfood:
|
||||||
done
|
done
|
||||||
|
|
||||||
test-rust:
|
test-rust:
|
||||||
cargo test
|
echo Running all Rust tests
|
||||||
|
cargo test -q
|
||||||
|
|
||||||
# Test everything.
|
# Test everything.
|
||||||
test: test-rust test-harperjs test-vscode test-obsidian test-chrome-plugin test-firefox-plugin
|
test: test-rust test-harperjs test-vscode test-obsidian test-chrome-plugin test-firefox-plugin
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/runtime": "catalog:",
|
"@babel/runtime": "catalog:",
|
||||||
"@biomejs/biome": "2.0.6",
|
"@biomejs/biome": "2.3.3",
|
||||||
"check-dependency-version-consistency": "^5.0.0",
|
"check-dependency-version-consistency": "^5.0.0",
|
||||||
"typescript": "catalog:"
|
"typescript": "catalog:"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -17,12 +17,12 @@
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
"build": "vite build",
|
"build": "vite build -l warn",
|
||||||
"preview": "vite preview",
|
"preview": "vite preview",
|
||||||
"fmt": "prettier --write '**/*.{svelte,ts,json,css,scss,md}'",
|
"fmt": "prettier --write '**/*.{svelte,ts,json,css,scss,md}'",
|
||||||
"zip-for-chrome": "TARGET_BROWSER=chrome npm run build && node src/zip.js harper-chrome-plugin.zip",
|
"zip-for-chrome": "TARGET_BROWSER=chrome npm run build && node src/zip.js harper-chrome-plugin.zip",
|
||||||
"zip-for-firefox": "TARGET_BROWSER=firefox npm run build && node src/zip.js harper-firefox-plugin.zip",
|
"zip-for-firefox": "TARGET_BROWSER=firefox npm run build && node src/zip.js harper-firefox-plugin.zip",
|
||||||
"test": "playwright test --headed"
|
"test": "playwright test --headed --reporter=dot --quiet"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@crxjs/vite-plugin": "^2.0.0-beta.26",
|
"@crxjs/vite-plugin": "^2.0.0-beta.26",
|
||||||
|
|
@ -44,17 +44,17 @@
|
||||||
"svelte-preprocess": "^6.0.0",
|
"svelte-preprocess": "^6.0.0",
|
||||||
"tslib": "^2.6.2",
|
"tslib": "^2.6.2",
|
||||||
"typescript": "^5.5.0",
|
"typescript": "^5.5.0",
|
||||||
"vite": "^5.4.10"
|
"vite": "^5.4.10",
|
||||||
|
"@tailwindcss/vite": "^4.1.4",
|
||||||
|
"tailwindcss": "^4.1.4"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fortawesome/free-solid-svg-icons": "^7.1.0",
|
"@fortawesome/free-solid-svg-icons": "^7.1.0",
|
||||||
"@tailwindcss/vite": "^4.1.4",
|
|
||||||
"@webcomponents/custom-elements": "^1.6.0",
|
"@webcomponents/custom-elements": "^1.6.0",
|
||||||
"harper.js": "workspace:*",
|
"harper.js": "workspace:*",
|
||||||
"lint-framework": "workspace:*",
|
"lint-framework": "workspace:*",
|
||||||
"lodash-es": "^4.17.21",
|
"lodash-es": "^4.17.21",
|
||||||
"lru-cache": "^11.1.0",
|
"lru-cache": "^11.1.0",
|
||||||
"svelte-fa": "^4.0.4",
|
"svelte-fa": "^4.0.4"
|
||||||
"tailwindcss": "^4.1.4"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ chrome.runtime.onInstalled.addListener((details) => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
|
chrome.runtime.onMessage.addListener((request, _sender, sendResponse) => {
|
||||||
handleRequest(request).then(sendResponse);
|
handleRequest(request).then(sendResponse);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -172,7 +172,7 @@ async function handleLint(req: LintRequest): Promise<LintResponse> {
|
||||||
return { kind: 'lints', lints: unpackedBySource };
|
return { kind: 'lints', lints: unpackedBySource };
|
||||||
}
|
}
|
||||||
|
|
||||||
async function handleGetConfig(req: GetConfigRequest): Promise<GetConfigResponse> {
|
async function handleGetConfig(_req: GetConfigRequest): Promise<GetConfigResponse> {
|
||||||
return { kind: 'getConfig', config: await getLintConfig() };
|
return { kind: 'getConfig', config: await getLintConfig() };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -188,7 +188,7 @@ async function handleSetDialect(req: SetDialectRequest): Promise<UnitResponse> {
|
||||||
return createUnitResponse();
|
return createUnitResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
async function handleGetDialect(req: GetDialectRequest): Promise<GetDialectResponse> {
|
async function handleGetDialect(_req: GetDialectRequest): Promise<GetDialectResponse> {
|
||||||
return { kind: 'getDialect', dialect: await getDialect() };
|
return { kind: 'getDialect', dialect: await getDialect() };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -240,7 +240,7 @@ async function handleSetDefaultStatus(req: SetDefaultStatusRequest): Promise<Uni
|
||||||
}
|
}
|
||||||
|
|
||||||
async function handleGetLintDescriptions(
|
async function handleGetLintDescriptions(
|
||||||
req: GetLintDescriptionsRequest,
|
_req: GetLintDescriptionsRequest,
|
||||||
): Promise<GetLintDescriptionsResponse> {
|
): Promise<GetLintDescriptionsResponse> {
|
||||||
return { kind: 'getLintDescriptions', descriptions: await linter.getLintDescriptionsHTML() };
|
return { kind: 'getLintDescriptions', descriptions: await linter.getLintDescriptionsHTML() };
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import { defineManifest } from '@crxjs/vite-plugin';
|
import { defineManifest } from '@crxjs/vite-plugin';
|
||||||
import packageData from '../package.json';
|
import packageData from '../package.json';
|
||||||
|
|
||||||
//@ts-ignore
|
//@ts-expect-error
|
||||||
const isDev = process.env.NODE_ENV == 'development';
|
const isDev = process.env.NODE_ENV == 'development';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -185,7 +185,7 @@ async function exportEnabledDomainsCSV() {
|
||||||
<span class="font-medium">User Dictionary</span>
|
<span class="font-medium">User Dictionary</span>
|
||||||
<span class="font-light">Each word should be on its own line.</span>
|
<span class="font-light">Each word should be on its own line.</span>
|
||||||
</div>
|
</div>
|
||||||
<textarea bind:value={userDict} />
|
<textarea bind:value={userDict} ></textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,6 @@ function openSettings() {
|
||||||
<a href="https://github.com/Automattic/harper" target="_blank" rel="noopener" class="text-primary-600 hover:underline">GitHub</a>
|
<a href="https://github.com/Automattic/harper" target="_blank" rel="noopener" class="text-primary-600 hover:underline">GitHub</a>
|
||||||
<a href="https://discord.com/invite/JBqcAaKrzQ" target="_blank" rel="noopener" class="text-primary-600 hover:underline">Discord</a>
|
<a href="https://discord.com/invite/JBqcAaKrzQ" target="_blank" rel="noopener" class="text-primary-600 hover:underline">Discord</a>
|
||||||
<a href="https://writewithharper.com" target="_blank" rel="noopener" class="text-primary-600 hover:underline">Discover</a>
|
<a href="https://writewithharper.com" target="_blank" rel="noopener" class="text-primary-600 hover:underline">Discover</a>
|
||||||
<a target="_blank" rel="noopener" class="text-primary-600 hover:underline" on:click={openSettings}>Settings</a>
|
<button class="text-primary-600 hover:underline" onclick={openSettings}>Settings</button>
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import type { Dialect, LintConfig, Summary } from 'harper.js';
|
import type { Dialect, LintConfig } from 'harper.js';
|
||||||
import type { UnpackedLintGroups } from 'lint-framework';
|
import type { UnpackedLintGroups } from 'lint-framework';
|
||||||
|
|
||||||
export type Request =
|
export type Request =
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
import { test } from './fixtures';
|
import { test } from './fixtures';
|
||||||
import {
|
import {
|
||||||
assertHarperHighlightBoxes,
|
assertHarperHighlightBoxes,
|
||||||
clickHarperHighlight,
|
|
||||||
getHarperHighlights,
|
|
||||||
getTextarea,
|
getTextarea,
|
||||||
replaceEditorContent,
|
replaceEditorContent,
|
||||||
testBasicSuggestionTextarea,
|
testBasicSuggestionTextarea,
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
import { expect, test } from '@playwright/test';
|
import { test } from '@playwright/test';
|
||||||
import { LINT_KINDS, lintKindColor } from 'lint-framework';
|
import { LINT_KINDS, lintKindColor } from 'lint-framework';
|
||||||
|
|
||||||
test('display lint kind colors', async ({ page }, testInfo) => {
|
// biome-ignore lint/correctness/noEmptyPattern: Playwright requires an object destruction
|
||||||
|
test('display lint kind colors', async ({}, testInfo) => {
|
||||||
// Generate color boxes for each lint kind
|
// Generate color boxes for each lint kind
|
||||||
const colorBoxes = LINT_KINDS.map((kind) => {
|
const colorBoxes = LINT_KINDS.map((kind) => {
|
||||||
const color = lintKindColor(kind);
|
const color = lintKindColor(kind);
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import { assertHarperHighlightBoxes } from './testUtils';
|
||||||
|
|
||||||
const TEST_PAGE_URL = 'http://localhost:8081/simple_inputs_disabled.html';
|
const TEST_PAGE_URL = 'http://localhost:8081/simple_inputs_disabled.html';
|
||||||
|
|
||||||
test('Ignores disabled and readonly inputs', async ({ page }, testInfo) => {
|
test('Ignores disabled and readonly inputs', async ({ page }) => {
|
||||||
await page.goto(TEST_PAGE_URL);
|
await page.goto(TEST_PAGE_URL);
|
||||||
|
|
||||||
await page.waitForTimeout(6000);
|
await page.waitForTimeout(6000);
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,7 @@ export function getTextarea(page: Page): Locator {
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function testBasicSuggestionTextarea(testPageUrl: string) {
|
export async function testBasicSuggestionTextarea(testPageUrl: string) {
|
||||||
test('Can apply basic suggestion.', async ({ page, context }) => {
|
test('Can apply basic suggestion.', async ({ page }) => {
|
||||||
await page.goto(testPageUrl);
|
await page.goto(testPageUrl);
|
||||||
|
|
||||||
await page.waitForTimeout(2000);
|
await page.waitForTimeout(2000);
|
||||||
|
|
|
||||||
|
|
@ -19,34 +19,17 @@ if [[ -d "$harperjs_docs_dir" ]]; then
|
||||||
fi
|
fi
|
||||||
mkdir -p "$harperjs_docs_dir" || true
|
mkdir -p "$harperjs_docs_dir" || true
|
||||||
|
|
||||||
cat <<- PANDOC_FILTER > "./temp/md_to_html.lua"
|
|
||||||
function Link(elem)
|
|
||||||
elem.target = string.gsub(elem.target, "%.md$", ".html")
|
|
||||||
return elem
|
|
||||||
end
|
|
||||||
PANDOC_FILTER
|
|
||||||
|
|
||||||
echo "Rendering HTML..."
|
echo "Rendering HTML..."
|
||||||
if command -v parallel &> /dev/null; then
|
if command -v parallel &> /dev/null; then
|
||||||
parallel '
|
parallel '
|
||||||
base=$(basename {} .md)
|
base=$(basename {} .md)
|
||||||
pandoc -s \
|
node renderPage.js "${base#"harper.js."} - Harper" "API reference documentation for harper.js" {} "html/${base}.html"
|
||||||
-V pagetitle="${base#"harper.js."} - Harper" \
|
|
||||||
-V description-meta="API reference documentation for harper.js" \
|
|
||||||
-V document-css="true" \
|
|
||||||
-L "./temp/md_to_html.lua" \
|
|
||||||
-o "html/${base}.html" {}
|
|
||||||
' ::: ./markdown/*.md
|
' ::: ./markdown/*.md
|
||||||
else
|
else
|
||||||
echo "parallel not found, falling back to sequential processing"
|
echo "parallel not found, falling back to sequential processing"
|
||||||
for file in ./markdown/*.md; do
|
for file in ./markdown/*.md; do
|
||||||
base=$(basename "$file" .md)
|
base=$(basename "$file" .md)
|
||||||
pandoc -s \
|
node renderPage.js "${base#"harper.js."} - Harper" "API reference documentation for harper.js" {} "html/${base}.html"
|
||||||
-V pagetitle="${base#"harper.js."} - Harper" \
|
|
||||||
-V description-meta="API reference documentation for harper.js" \
|
|
||||||
-V document-css="true" \
|
|
||||||
-L "./temp/md_to_html.lua" \
|
|
||||||
-o "html/${base}.html" "$file"
|
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
mv -f "$html_dir" "${harperjs_docs_dir}/ref"
|
mv -f "$html_dir" "${harperjs_docs_dir}/ref"
|
||||||
|
|
|
||||||
|
|
@ -6,28 +6,28 @@
|
||||||
<script type="module">
|
<script type="module">
|
||||||
// We can import `harper.js` using native ECMAScript syntax.
|
// We can import `harper.js` using native ECMAScript syntax.
|
||||||
// TODO: Update to the latest version.
|
// TODO: Update to the latest version.
|
||||||
import {WorkerLinter, binaryInlined} from 'https://unpkg.com/harper.js@0.54.0/dist/harper.js';
|
import {binaryInlined, WorkerLinter } from 'https://unpkg.com/harper.js@0.54.0/dist/harper.js';
|
||||||
|
|
||||||
// Since we are working in the browser, we can use either `WorkerLinter`, which doesn't block the event loop, or `LocalLinter`, which does.
|
// Since we are working in the browser, we can use either `WorkerLinter`, which doesn't block the event loop, or `LocalLinter`, which does.
|
||||||
let linter = new WorkerLinter({binary: binaryInlined});
|
const linter = new WorkerLinter({binary: binaryInlined});
|
||||||
|
|
||||||
// Every time the `<textarea/>` received an input, we process it and update our list.
|
// Every time the `<textarea/>` received an input, we process it and update our list.
|
||||||
async function onInput(e) {
|
async function onInput(e) {
|
||||||
let lints = await linter.lint(e.target.value);
|
const lints = await linter.lint(e.target.value);
|
||||||
|
|
||||||
let list = document.getElementById('errorlist');
|
const list = document.getElementById('errorlist');
|
||||||
// Clear previous results
|
// Clear previous results
|
||||||
list.innerHTML = '';
|
list.innerHTML = '';
|
||||||
|
|
||||||
for (let lint of lints) {
|
for (const lint of lints) {
|
||||||
let item = document.createElement('LI');
|
const item = document.createElement('LI');
|
||||||
var text = document.createTextNode(lint.message());
|
const text = document.createTextNode(lint.message());
|
||||||
item.appendChild(text);
|
item.appendChild(text);
|
||||||
list.appendChild(item);
|
list.appendChild(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let inputField = document.getElementById('maininput');
|
const inputField = document.getElementById('maininput');
|
||||||
inputField.addEventListener('input', onInput);
|
inputField.addEventListener('input', onInput);
|
||||||
onInput({target: inputField});
|
onInput({target: inputField});
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
"build": "tsc && vite build",
|
"build": "tsc && vite build -l warn",
|
||||||
"test": "vitest run",
|
"test": "vitest run",
|
||||||
"test:debug": "vitest run --browser.headless false --testTimeout 0",
|
"test:debug": "vitest run --browser.headless false --testTimeout 0",
|
||||||
"api:extractor": "api-extractor run",
|
"api:extractor": "api-extractor run",
|
||||||
|
|
@ -26,16 +26,17 @@
|
||||||
"@microsoft/api-documenter": "^7.26.10",
|
"@microsoft/api-documenter": "^7.26.10",
|
||||||
"@microsoft/api-extractor": "^7.50.1",
|
"@microsoft/api-extractor": "^7.50.1",
|
||||||
"@vitest/browser": "^3.0.6",
|
"@vitest/browser": "^3.0.6",
|
||||||
|
"harper-wasm": "workspace:*",
|
||||||
|
"marked": "^16.4.1",
|
||||||
|
"p-lazy": "^5.0.0",
|
||||||
|
"p-memoize": "^7.1.1",
|
||||||
"playwright": "^1.49.1",
|
"playwright": "^1.49.1",
|
||||||
|
"type-fest": "^4.37.0",
|
||||||
"typescript": "catalog:",
|
"typescript": "catalog:",
|
||||||
"vite": "^6.1.0",
|
"vite": "^6.1.0",
|
||||||
"vite-plugin-dts": "^4.5.0",
|
"vite-plugin-dts": "^4.5.0",
|
||||||
"vite-plugin-virtual": "^0.3.0",
|
"vite-plugin-virtual": "^0.3.0",
|
||||||
"vitest": "^3.0.5",
|
"vitest": "^3.0.5"
|
||||||
"harper-wasm": "workspace:*",
|
|
||||||
"type-fest": "^4.37.0",
|
|
||||||
"p-memoize": "^7.1.1",
|
|
||||||
"p-lazy": "^5.0.0"
|
|
||||||
},
|
},
|
||||||
"main": "dist/harper.js",
|
"main": "dist/harper.js",
|
||||||
"types": "dist/harper.d.ts",
|
"types": "dist/harper.d.ts",
|
||||||
|
|
|
||||||
39
packages/harper.js/renderPage.js
Normal file
39
packages/harper.js/renderPage.js
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
import fs from 'fs';
|
||||||
|
import { marked } from 'marked';
|
||||||
|
|
||||||
|
const pageTitle = process.argv[2];
|
||||||
|
const description = process.argv[3];
|
||||||
|
const input = process.argv[4];
|
||||||
|
const output = process.argv[5];
|
||||||
|
|
||||||
|
const renderer = new marked.Renderer();
|
||||||
|
|
||||||
|
renderer.link = ({ href, title, text }) => {
|
||||||
|
if (href.endsWith('.md')) {
|
||||||
|
href = `${href.slice(0, href.length - 3)}.html`;
|
||||||
|
}
|
||||||
|
const titleAttr = title ? ` title="${title}"` : '';
|
||||||
|
return `<a href="${href}" ${titleAttr}>${text}</a>`;
|
||||||
|
};
|
||||||
|
|
||||||
|
const markdown = fs.readFileSync(input, 'utf8');
|
||||||
|
const body = marked.parse(markdown, { async: false, renderer });
|
||||||
|
|
||||||
|
const html = `<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>${pageTitle}</title>
|
||||||
|
<meta name="description" content="${description}">
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.min.css"
|
||||||
|
>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
${body}
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
`;
|
||||||
|
|
||||||
|
fs.writeFileSync(output, html);
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
"dist"
|
"dist"
|
||||||
],
|
],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "tsc && vite build",
|
"build": "tsc && vite build -l warn",
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
"test": "echo 'no tests'"
|
"test": "echo 'no tests'"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@ FocusHook.prototype.hook = function (node: any, _propertyName: any, _previousVal
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
/** biome-ignore-all lint/complexity/useArrowFunction: It cannot be an arrow function for the logic to work. */
|
|
||||||
var CloseOnEscapeHook: any = function (this: any, onClose: () => void) {
|
var CloseOnEscapeHook: any = function (this: any, onClose: () => void) {
|
||||||
this.onClose = onClose;
|
this.onClose = onClose;
|
||||||
};
|
};
|
||||||
|
|
@ -179,7 +178,7 @@ function suggestions(
|
||||||
): any {
|
): any {
|
||||||
return suggestions.map((s: UnpackedSuggestion, i: number) => {
|
return suggestions.map((s: UnpackedSuggestion, i: number) => {
|
||||||
const label = s.replacement_text !== '' ? s.replacement_text : String(s.kind);
|
const label = s.replacement_text !== '' ? s.replacement_text : String(s.kind);
|
||||||
const desc = `Replace with \"${label}\"`;
|
const desc = `Replace with "${label}"`;
|
||||||
const props = i === 0 ? { hook: new FocusHook() } : {};
|
const props = i === 0 ? { hook: new FocusHook() } : {};
|
||||||
return button(label, { background: '#2DA44E', color: '#FFFFFF' }, () => apply(s), desc, props);
|
return button(label, { background: '#2DA44E', color: '#FFFFFF' }, () => apply(s), desc, props);
|
||||||
});
|
});
|
||||||
|
|
@ -224,7 +223,7 @@ function styleTag() {
|
||||||
display:flex;
|
display:flex;
|
||||||
flex-direction:column;
|
flex-direction:column;
|
||||||
z-index:5000;
|
z-index:5000;
|
||||||
font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Helvetica,Arial,sans-serif;
|
font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
|
||||||
pointer-events:auto
|
pointer-events:auto
|
||||||
}
|
}
|
||||||
.harper-header{
|
.harper-header{
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,9 @@ export function leafNodes(node: Node): Node[] {
|
||||||
|
|
||||||
for (const child of children) {
|
for (const child of children) {
|
||||||
const sub = leafNodes(child);
|
const sub = leafNodes(child);
|
||||||
sub.forEach((v) => out.push(v));
|
sub.forEach((v) => {
|
||||||
|
out.push(v);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return out;
|
return out;
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
"vitest": "^3.0.8"
|
"vitest": "^3.0.8"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "vite build",
|
"build": "vite build -l warn",
|
||||||
"dev": "vite build --watch",
|
"dev": "vite build --watch",
|
||||||
"test": "vitest run"
|
"test": "vitest run"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -79,7 +79,7 @@ export class HarperSettingTab extends PluginSettingTab {
|
||||||
.addOption(Dialect.Australian.toString(), 'Australian')
|
.addOption(Dialect.Australian.toString(), 'Australian')
|
||||||
.setValue((this.settings.dialect ?? Dialect.American).toString())
|
.setValue((this.settings.dialect ?? Dialect.American).toString())
|
||||||
.onChange(async (value) => {
|
.onChange(async (value) => {
|
||||||
const dialect = Number.parseInt(value);
|
const dialect = Number.parseInt(value, 10);
|
||||||
this.settings.dialect = dialect;
|
this.settings.dialect = dialect;
|
||||||
await this.state.initializeFromSettings(this.settings);
|
await this.state.initializeFromSettings(this.settings);
|
||||||
this.plugin.updateStatusBar(dialect);
|
this.plugin.updateStatusBar(dialect);
|
||||||
|
|
@ -90,7 +90,7 @@ export class HarperSettingTab extends PluginSettingTab {
|
||||||
.setName('Activate Harper')
|
.setName('Activate Harper')
|
||||||
.setDesc('Enable or disable Harper with this option.')
|
.setDesc('Enable or disable Harper with this option.')
|
||||||
.addToggle((toggle) =>
|
.addToggle((toggle) =>
|
||||||
toggle.setValue(this.settings.lintEnabled).onChange(async (value) => {
|
toggle.setValue(this.settings.lintEnabled).onChange(async (_value) => {
|
||||||
this.state.toggleAutoLint();
|
this.state.toggleAutoLint();
|
||||||
this.plugin.updateStatusBar();
|
this.plugin.updateStatusBar();
|
||||||
}),
|
}),
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ export default class State {
|
||||||
constructor(
|
constructor(
|
||||||
saveDataCallback: (data: any) => Promise<void>,
|
saveDataCallback: (data: any) => Promise<void>,
|
||||||
onExtensionChange: () => void,
|
onExtensionChange: () => void,
|
||||||
editorViewField?: StateField<MarkdownFileInfo>,
|
_editorViewField?: StateField<MarkdownFileInfo>,
|
||||||
) {
|
) {
|
||||||
this.harper = new WorkerLinter({ binary: binaryInlined });
|
this.harper = new WorkerLinter({ binary: binaryInlined });
|
||||||
this.delay = DEFAULT_DELAY;
|
this.delay = DEFAULT_DELAY;
|
||||||
|
|
@ -115,12 +115,15 @@ export default class State {
|
||||||
if (this.editorViewField != null) {
|
if (this.editorViewField != null) {
|
||||||
const mdView = view.state.field(this.editorViewField) as MarkdownView;
|
const mdView = view.state.field(this.editorViewField) as MarkdownView;
|
||||||
const file = mdView?.file;
|
const file = mdView?.file;
|
||||||
const path = file?.path!;
|
|
||||||
|
|
||||||
if (path != null) {
|
if (file != null) {
|
||||||
for (const glob of ignoredGlobs) {
|
const path = file.path;
|
||||||
if (minimatch(path, glob)) {
|
|
||||||
return [];
|
if (path != null) {
|
||||||
|
for (const glob of ignoredGlobs) {
|
||||||
|
if (minimatch(path, glob)) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -177,7 +180,7 @@ export default class State {
|
||||||
actions.push({
|
actions.push({
|
||||||
name: '📖',
|
name: '📖',
|
||||||
title: `Add “${word}” to your dictionary`,
|
title: `Add “${word}” to your dictionary`,
|
||||||
apply: (view) => {
|
apply: (_view) => {
|
||||||
this.harper.importWords([word]);
|
this.harper.importWords([word]);
|
||||||
this.reinitialize();
|
this.reinitialize();
|
||||||
},
|
},
|
||||||
|
|
@ -189,7 +192,7 @@ export default class State {
|
||||||
to: span.end,
|
to: span.end,
|
||||||
severity: 'error',
|
severity: 'error',
|
||||||
title: lint.lint_kind_pretty(),
|
title: lint.lint_kind_pretty(),
|
||||||
renderMessage: (view) => {
|
renderMessage: (_view) => {
|
||||||
const node = document.createElement('template');
|
const node = document.createElement('template');
|
||||||
node.innerHTML = lint.message_html();
|
node.innerHTML = lint.message_html();
|
||||||
return node.content;
|
return node.content;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
import { binary, LocalLinter } from 'harper.js';
|
import { expect, test } from 'vitest';
|
||||||
import { describe, expect, test } from 'vitest';
|
|
||||||
import { linesToString, stringToLines } from './textUtils';
|
import { linesToString, stringToLines } from './textUtils';
|
||||||
|
|
||||||
test('Dictionary values are reversible', () => {
|
test('Dictionary values are reversible', () => {
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite dev",
|
"dev": "vite dev",
|
||||||
"build": "vite build",
|
"build": "vite build -l warn",
|
||||||
"preview": "vite preview",
|
"preview": "vite preview",
|
||||||
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
||||||
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
|
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
|
||||||
|
|
@ -19,10 +19,10 @@
|
||||||
"drizzle-kit": "^0.31.5",
|
"drizzle-kit": "^0.31.5",
|
||||||
"flowbite": "^3.1.2",
|
"flowbite": "^3.1.2",
|
||||||
"flowbite-svelte": "^0.44.18",
|
"flowbite-svelte": "^0.44.18",
|
||||||
"postcss": "^8.4.31",
|
|
||||||
"svelte": "^5.15.0",
|
"svelte": "^5.15.0",
|
||||||
"svelte-check": "^4.1.5",
|
"svelte-check": "^4.1.5",
|
||||||
"tailwindcss": "^3.3.3",
|
"tailwindcss": "^4.1.16",
|
||||||
|
"@tailwindcss/vite": "^4.1.4",
|
||||||
"tslib": "catalog:",
|
"tslib": "catalog:",
|
||||||
"tsx": "^4.20.6",
|
"tsx": "^4.20.6",
|
||||||
"typescript": "catalog:",
|
"typescript": "catalog:",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
export default {
|
|
||||||
plugins: {
|
|
||||||
tailwindcss: {},
|
|
||||||
autoprefixer: {},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
@ -1,6 +1,4 @@
|
||||||
@tailwind base;
|
@import "tailwindcss";
|
||||||
@tailwind components;
|
|
||||||
@tailwind utilities;
|
|
||||||
|
|
||||||
@layer base {
|
@layer base {
|
||||||
body {
|
body {
|
||||||
|
|
@ -51,12 +49,12 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
code {
|
code {
|
||||||
font-family: "JetBrains Mono", monospace !important;
|
font-family: "JetBrains Mono", monospace;
|
||||||
word-break: keep-all;
|
word-break: keep-all;
|
||||||
}
|
}
|
||||||
|
|
||||||
code * {
|
code * {
|
||||||
font-family: "JetBrains Mono", monospace !important;
|
font-family: "JetBrains Mono", monospace;
|
||||||
}
|
}
|
||||||
|
|
||||||
.underlinespecial {
|
.underlinespecial {
|
||||||
|
|
@ -80,7 +78,7 @@ code * {
|
||||||
}
|
}
|
||||||
|
|
||||||
textarea {
|
textarea {
|
||||||
--tw-ring-shadow: 0 0 #000 !important;
|
--tw-ring-shadow: 0 0 #000;
|
||||||
}
|
}
|
||||||
|
|
||||||
.animate-bigbounce {
|
.animate-bigbounce {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { db } from '$lib/db';
|
|
||||||
import { migrate } from 'drizzle-orm/mysql2/migrator';
|
import { migrate } from 'drizzle-orm/mysql2/migrator';
|
||||||
|
import { db } from '$lib/db';
|
||||||
|
|
||||||
// Migrate exactly once at startup
|
// Migrate exactly once at startup
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import LintCard from '$lib/components/LintCard.svelte';
|
|
||||||
import { Card } from 'flowbite-svelte';
|
import { Card } from 'flowbite-svelte';
|
||||||
import { type WorkerLinter } from 'harper.js';
|
import { type WorkerLinter } from 'harper.js';
|
||||||
import {
|
import {
|
||||||
|
|
@ -10,6 +9,7 @@ import {
|
||||||
type UnpackedSuggestion,
|
type UnpackedSuggestion,
|
||||||
unpackLint,
|
unpackLint,
|
||||||
} from 'lint-framework';
|
} from 'lint-framework';
|
||||||
|
import LintCard from '$lib/components/LintCard.svelte';
|
||||||
import demo from '../../../../../demo.md?raw';
|
import demo from '../../../../../demo.md?raw';
|
||||||
|
|
||||||
export let content = demo.trim();
|
export let content = demo.trim();
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ for (let [key, val] of data.entries()) {
|
||||||
|
|
||||||
let els: Record<string, HTMLElement> = {};
|
let els: Record<string, HTMLElement> = {};
|
||||||
|
|
||||||
function expand(node: HTMLElement, { width, duration }: { width: number; duration: number }) {
|
function expand(_node: HTMLElement, { width, duration }: { width: number; duration: number }) {
|
||||||
return {
|
return {
|
||||||
duration,
|
duration,
|
||||||
css: (t: number) => {
|
css: (t: number) => {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import lintKindColor from '$lib/lintKindColor';
|
|
||||||
import Chart from 'chart.js/auto';
|
import Chart from 'chart.js/auto';
|
||||||
import { onMount } from 'svelte';
|
import { onMount } from 'svelte';
|
||||||
|
import lintKindColor from '$lib/lintKindColor';
|
||||||
|
|
||||||
// Receive lint counts from the parent component
|
// Receive lint counts from the parent component
|
||||||
export let lintCounts: Record<string, number> = {};
|
export let lintCounts: Record<string, number> = {};
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import '../app.css';
|
import '../app.css';
|
||||||
|
|
||||||
|
import posthog from 'posthog-js';
|
||||||
|
import { onMount } from 'svelte';
|
||||||
import { browser } from '$app/environment';
|
import { browser } from '$app/environment';
|
||||||
import AutomatticLogo from '$lib/components/AutomatticLogo.svelte';
|
import AutomatticLogo from '$lib/components/AutomatticLogo.svelte';
|
||||||
import GutterCenter from '$lib/components/GutterCenter.svelte';
|
import GutterCenter from '$lib/components/GutterCenter.svelte';
|
||||||
import posthog from 'posthog-js';
|
|
||||||
import { onMount } from 'svelte';
|
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
if (browser) {
|
if (browser) {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import ProblematicLints from '$lib/db/models/ProblematicLints';
|
|
||||||
import { type RequestEvent, redirect } from '@sveltejs/kit';
|
import { type RequestEvent, redirect } from '@sveltejs/kit';
|
||||||
|
import ProblematicLints from '$lib/db/models/ProblematicLints';
|
||||||
|
|
||||||
export const POST = async ({ request }: RequestEvent) => {
|
export const POST = async ({ request }: RequestEvent) => {
|
||||||
const data = await request.formData();
|
const data = await request.formData();
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import UninstallFeedback from '$lib/db/models/UninstallFeedback';
|
|
||||||
import { type RequestEvent, redirect } from '@sveltejs/kit';
|
import { type RequestEvent, redirect } from '@sveltejs/kit';
|
||||||
|
import UninstallFeedback from '$lib/db/models/UninstallFeedback';
|
||||||
|
|
||||||
export const POST = async ({ request }: RequestEvent) => {
|
export const POST = async ({ request }: RequestEvent) => {
|
||||||
const data = await request.formData();
|
const data = await request.formData();
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,13 @@
|
||||||
title: Set Up Your Environment
|
title: Set Up Your Environment
|
||||||
---
|
---
|
||||||
|
|
||||||
To use the tooling required to build and debug Harper, you'll need the following programs available in your `$PATH`.
|
Depending on what you're wanting to work on within the Harper repo, you may not need to set up every aspect of the environment described on this page.
|
||||||
|
For example, if you only intend to work on the core grammar engine, `harper-ls`, or `harper-cli`, you only need `cargo` installed.
|
||||||
|
In that case, Harper follows all of the standard conventions for Rust projects, so any existing Rust knowledge will apply.
|
||||||
|
|
||||||
|
If you intend to work on the Chrome extension, Obsidian plugin, or certain other projects, you'll need the full environment set up.
|
||||||
|
|
||||||
|
To use _all_ the tooling we use to build and debug Harper, you'll need the following programs available in your `$PATH`.
|
||||||
For Nix users, we provide a [Nix development shell](#Nix-development-shell) to setup all the necessary tooling automatically.
|
For Nix users, we provide a [Nix development shell](#Nix-development-shell) to setup all the necessary tooling automatically.
|
||||||
|
|
||||||
- [`just`](https://github.com/casey/just)
|
- [`just`](https://github.com/casey/just)
|
||||||
|
|
@ -13,7 +19,6 @@ For Nix users, we provide a [Nix development shell](#Nix-development-shell) to s
|
||||||
- `grep`
|
- `grep`
|
||||||
- [`wasm-pack`](https://drager.github.io/wasm-pack/installer/)
|
- [`wasm-pack`](https://drager.github.io/wasm-pack/installer/)
|
||||||
- `zip`
|
- `zip`
|
||||||
- `pandoc`
|
|
||||||
- [`cargo-hack`](https://github.com/taiki-e/cargo-hack?tab=readme-ov-file#installation)
|
- [`cargo-hack`](https://github.com/taiki-e/cargo-hack?tab=readme-ov-file#installation)
|
||||||
|
|
||||||
To run integration tests, you may also need `libnss3` and/or `libasound3`.
|
To run integration tests, you may also need `libnss3` and/or `libasound3`.
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import 'reveal.js/dist/reveal.css';
|
import 'reveal.js/dist/reveal.css';
|
||||||
import 'reveal.js/dist/theme/serif.css';
|
import 'reveal.js/dist/theme/serif.css';
|
||||||
import Logo from '$lib/components/Logo.svelte';
|
|
||||||
import Reveal from 'reveal.js';
|
import Reveal from 'reveal.js';
|
||||||
import { onMount } from 'svelte';
|
import { onMount } from 'svelte';
|
||||||
|
import Logo from '$lib/components/Logo.svelte';
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
let deck = new Reveal();
|
let deck = new Reveal();
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Isolate from '$lib/components/Isolate.svelte';
|
|
||||||
import { Button, Card, Checkbox, Input, Label, Radio } from 'flowbite-svelte';
|
import { Button, Card, Checkbox, Input, Label, Radio } from 'flowbite-svelte';
|
||||||
|
import Isolate from '$lib/components/Isolate.svelte';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Isolate>
|
<Isolate>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<div class="fixed left-0 top-0 w-screen h-screen bg-white dark:bg-black z-1000">
|
<div class="fixed left-0 top-0 w-screen h-screen bg-white dark:bg-black z-1000">
|
||||||
<div class="max-w-4xl mx-auto shadow-md border-gray-300 dark:border-x h-full">
|
<div class="max-w-4xl mx-auto shadow-md border-gray-300 dark:border-x h-full">
|
||||||
<iframe src="https://docs.google.com/forms/d/e/1FAIpQLScaWQWtnszKS_oQ8DYEAt1Ei5ORIQFViaoImjZ06pXntbCarA/viewform?embedded=true" width="100%" height="100%" frameborder="0" marginheight="0" marginwidth="0">Loading…</iframe>
|
<iframe src="https://docs.google.com/forms/d/e/1FAIpQLScaWQWtnszKS_oQ8DYEAt1Ei5ORIQFViaoImjZ06pXntbCarA/viewform?embedded=true" width="100%" height="100%" frameborder="0" marginheight="0" marginwidth="0" title="A form to request support for a specific website.">Loading…</iframe>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import LintKindChart from '$lib/components/LintKindChart.svelte';
|
|
||||||
import {
|
import {
|
||||||
Fileupload,
|
Fileupload,
|
||||||
Table,
|
Table,
|
||||||
|
|
@ -10,6 +9,7 @@ import {
|
||||||
TableHeadCell,
|
TableHeadCell,
|
||||||
} from 'flowbite-svelte';
|
} from 'flowbite-svelte';
|
||||||
import { binary, type Summary, WorkerLinter } from 'harper.js';
|
import { binary, type Summary, WorkerLinter } from 'harper.js';
|
||||||
|
import LintKindChart from '$lib/components/LintKindChart.svelte';
|
||||||
|
|
||||||
let linter = new WorkerLinter({ binary: binary });
|
let linter = new WorkerLinter({ binary: binary });
|
||||||
let files = $state<FileList | undefined>();
|
let files = $state<FileList | undefined>();
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Isolate from '$lib/components/Isolate.svelte';
|
|
||||||
import { Button, Card, Input, Label, Radio } from 'flowbite-svelte';
|
import { Button, Card, Input, Label, Radio } from 'flowbite-svelte';
|
||||||
|
import Isolate from '$lib/components/Isolate.svelte';
|
||||||
|
|
||||||
const reasons = {
|
const reasons = {
|
||||||
confused: 'I was confused by how it worked',
|
confused: 'I was confused by how it worked',
|
||||||
|
|
|
||||||
|
|
@ -1,239 +1,247 @@
|
||||||
import { defaultTheme } from '@sveltepress/theme-default';
|
import tailwindcss from '@tailwindcss/vite';
|
||||||
import { sveltepress } from '@sveltepress/vite';
|
|
||||||
import { defineConfig } from 'vite';
|
import { defineConfig } from 'vite';
|
||||||
import topLevelAwait from 'vite-plugin-top-level-await';
|
import topLevelAwait from 'vite-plugin-top-level-await';
|
||||||
import wasm from 'vite-plugin-wasm';
|
import wasm from 'vite-plugin-wasm';
|
||||||
|
|
||||||
const prod = process.env.APP_ENV === 'production';
|
const prod = process.env.APP_ENV === 'production';
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig(async () => {
|
||||||
ssr: {
|
const [{ defaultTheme }, { sveltepress }] = await Promise.all([
|
||||||
noExternal: prod ? ['mysql2', 'drizzle-orm', 'posthog-js', 'drizzle-zod', 'zod'] : [],
|
import('@sveltepress/theme-default'),
|
||||||
},
|
import('@sveltepress/vite'),
|
||||||
server: {
|
]);
|
||||||
port: 3000,
|
|
||||||
fs: {
|
return {
|
||||||
allow: ['../harper.js/dist'],
|
ssr: {
|
||||||
|
noExternal: prod ? ['mysql2', 'drizzle-orm', 'posthog-js', 'drizzle-zod', 'zod'] : [],
|
||||||
},
|
},
|
||||||
},
|
server: {
|
||||||
plugins: [
|
port: 3000,
|
||||||
sveltepress({
|
fs: {
|
||||||
siteConfig: {
|
allow: ['../harper.js/dist'],
|
||||||
title: 'Harper',
|
|
||||||
description: 'A Grammar Checker from Automattic',
|
|
||||||
},
|
},
|
||||||
theme: defaultTheme({
|
},
|
||||||
editLink: 'https://github.com/automattic/harper/edit/master/packages/web/src/routes/:route',
|
plugins: [
|
||||||
logo: '/circle-logo.png',
|
sveltepress({
|
||||||
github: 'https://github.com/automattic/harper',
|
siteConfig: {
|
||||||
discord: 'https://discord.gg/invite/JBqcAaKrzQ',
|
title: 'Harper',
|
||||||
themeColor: {
|
description: 'A Grammar Checker from Automattic',
|
||||||
primary: '#818eae',
|
|
||||||
dark: '#355280',
|
|
||||||
gradient: {
|
|
||||||
start: '#355280',
|
|
||||||
end: '#818eae',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
navbar: [
|
theme: defaultTheme({
|
||||||
{ title: 'Documentation', to: '/docs/about' },
|
editLink:
|
||||||
{
|
'https://github.com/automattic/harper/edit/master/packages/web/src/routes/:route',
|
||||||
title: 'Visual Studio Code',
|
logo: '/circle-logo.png',
|
||||||
to: 'https://marketplace.visualstudio.com/items?itemName=elijah-potter.harper',
|
github: 'https://github.com/automattic/harper',
|
||||||
|
discord: 'https://discord.gg/invite/JBqcAaKrzQ',
|
||||||
|
themeColor: {
|
||||||
|
primary: '#818eae',
|
||||||
|
dark: '#355280',
|
||||||
|
gradient: {
|
||||||
|
start: '#355280',
|
||||||
|
end: '#818eae',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{ title: 'Obsidian', to: '/docs/integrations/obsidian' },
|
navbar: [
|
||||||
{
|
{ title: 'Documentation', to: '/docs/about' },
|
||||||
title: 'Chrome Extension',
|
|
||||||
to: 'https://chromewebstore.google.com/detail/private-grammar-checking/lodbfhdipoipcjmlebjbgmmgekckhpfb',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
sidebar: {
|
|
||||||
'/docs/': [
|
|
||||||
{
|
{
|
||||||
items: [
|
title: 'Visual Studio Code',
|
||||||
{
|
to: 'https://marketplace.visualstudio.com/items?itemName=elijah-potter.harper',
|
||||||
title: 'About',
|
|
||||||
to: '/docs/about',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
|
{ title: 'Obsidian', to: '/docs/integrations/obsidian' },
|
||||||
{
|
{
|
||||||
title: 'Integrations',
|
title: 'Chrome Extension',
|
||||||
items: [
|
to: 'https://chromewebstore.google.com/detail/private-grammar-checking/lodbfhdipoipcjmlebjbgmmgekckhpfb',
|
||||||
{
|
|
||||||
title: 'Obsidian',
|
|
||||||
to: '/docs/integrations/obsidian',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Chrome Extension',
|
|
||||||
to: '/docs/integrations/chrome-extension',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Firefox Extension',
|
|
||||||
to: '/docs/integrations/firefox-extension',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'WordPress',
|
|
||||||
to: '/docs/integrations/wordpress',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Language Server',
|
|
||||||
to: '/docs/integrations/language-server',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Visual Studio Code',
|
|
||||||
to: '/docs/integrations/visual-studio-code',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Neovim',
|
|
||||||
to: '/docs/integrations/neovim',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Helix',
|
|
||||||
to: '/docs/integrations/helix',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Emacs',
|
|
||||||
to: '/docs/integrations/emacs',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Zed',
|
|
||||||
to: '/docs/integrations/zed',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Sublime Text',
|
|
||||||
to: '/docs/integrations/sublime-text',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'harper.js',
|
|
||||||
items: [
|
|
||||||
{
|
|
||||||
title: 'Introduction',
|
|
||||||
to: '/docs/harperjs/introduction',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Linting',
|
|
||||||
to: '/docs/harperjs/linting',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Spans',
|
|
||||||
to: '/docs/harperjs/spans',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Configure Rules',
|
|
||||||
to: '/docs/harperjs/configurerules',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Node.js',
|
|
||||||
to: '/docs/harperjs/node',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'CDN',
|
|
||||||
to: '/docs/harperjs/CDN',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'API Reference',
|
|
||||||
to: '/docs/harperjs/ref/index.html',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Contributors',
|
|
||||||
items: [
|
|
||||||
{
|
|
||||||
title: 'Introduction',
|
|
||||||
to: '/docs/contributors/introduction',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Environment',
|
|
||||||
to: '/docs/contributors/environment',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Committing',
|
|
||||||
to: '/docs/contributors/committing',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Architecture',
|
|
||||||
to: '/docs/contributors/architecture',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Dictionary',
|
|
||||||
to: '/docs/contributors/dictionary',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Test Suite',
|
|
||||||
to: '/docs/contributors/tests',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Author a Rule',
|
|
||||||
to: '/docs/contributors/author-a-rule',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Visual Studio Code',
|
|
||||||
to: '/docs/contributors/visual-studio-code',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Chrome Extension',
|
|
||||||
to: '/docs/contributors/chrome-extension',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'WordPress',
|
|
||||||
to: '/docs/contributors/wordpress',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Obsidian',
|
|
||||||
to: '/docs/contributors/obsidian',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Reviewing Pull Requests',
|
|
||||||
to: '/docs/contributors/review',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Local Statistics',
|
|
||||||
to: '/docs/contributors/local-stats',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Brill Tagging',
|
|
||||||
to: '/docs/contributors/brill',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'FAQ',
|
|
||||||
to: '/docs/contributors/faq',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Rust Reference',
|
|
||||||
to: 'https://docs.rs/harper-core/latest/harper_core/',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Rules',
|
|
||||||
to: '/docs/rules',
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
sidebar: {
|
||||||
highlighter: {
|
'/docs/': [
|
||||||
languages: [
|
{
|
||||||
'svelte',
|
items: [
|
||||||
'sh',
|
{
|
||||||
'js',
|
title: 'About',
|
||||||
'html',
|
to: '/docs/about',
|
||||||
'ts',
|
},
|
||||||
'md',
|
],
|
||||||
'css',
|
},
|
||||||
'scss',
|
{
|
||||||
'toml',
|
title: 'Integrations',
|
||||||
'rust',
|
items: [
|
||||||
'lua',
|
{
|
||||||
'json',
|
title: 'Obsidian',
|
||||||
'elisp',
|
to: '/docs/integrations/obsidian',
|
||||||
],
|
},
|
||||||
},
|
{
|
||||||
|
title: 'Chrome Extension',
|
||||||
|
to: '/docs/integrations/chrome-extension',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Firefox Extension',
|
||||||
|
to: '/docs/integrations/firefox-extension',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'WordPress',
|
||||||
|
to: '/docs/integrations/wordpress',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Language Server',
|
||||||
|
to: '/docs/integrations/language-server',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Visual Studio Code',
|
||||||
|
to: '/docs/integrations/visual-studio-code',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Neovim',
|
||||||
|
to: '/docs/integrations/neovim',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Helix',
|
||||||
|
to: '/docs/integrations/helix',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Emacs',
|
||||||
|
to: '/docs/integrations/emacs',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Zed',
|
||||||
|
to: '/docs/integrations/zed',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Sublime Text',
|
||||||
|
to: '/docs/integrations/sublime-text',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'harper.js',
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
title: 'Introduction',
|
||||||
|
to: '/docs/harperjs/introduction',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Linting',
|
||||||
|
to: '/docs/harperjs/linting',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Spans',
|
||||||
|
to: '/docs/harperjs/spans',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Configure Rules',
|
||||||
|
to: '/docs/harperjs/configurerules',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Node.js',
|
||||||
|
to: '/docs/harperjs/node',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'CDN',
|
||||||
|
to: '/docs/harperjs/CDN',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'API Reference',
|
||||||
|
to: '/docs/harperjs/ref/index.html',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Contributors',
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
title: 'Introduction',
|
||||||
|
to: '/docs/contributors/introduction',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Environment',
|
||||||
|
to: '/docs/contributors/environment',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Committing',
|
||||||
|
to: '/docs/contributors/committing',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Architecture',
|
||||||
|
to: '/docs/contributors/architecture',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Dictionary',
|
||||||
|
to: '/docs/contributors/dictionary',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Test Suite',
|
||||||
|
to: '/docs/contributors/tests',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Author a Rule',
|
||||||
|
to: '/docs/contributors/author-a-rule',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Visual Studio Code',
|
||||||
|
to: '/docs/contributors/visual-studio-code',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Chrome Extension',
|
||||||
|
to: '/docs/contributors/chrome-extension',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'WordPress',
|
||||||
|
to: '/docs/contributors/wordpress',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Obsidian',
|
||||||
|
to: '/docs/contributors/obsidian',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Reviewing Pull Requests',
|
||||||
|
to: '/docs/contributors/review',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Local Statistics',
|
||||||
|
to: '/docs/contributors/local-stats',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Brill Tagging',
|
||||||
|
to: '/docs/contributors/brill',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'FAQ',
|
||||||
|
to: '/docs/contributors/faq',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Rust Reference',
|
||||||
|
to: 'https://docs.rs/harper-core/latest/harper_core/',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Rules',
|
||||||
|
to: '/docs/rules',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
highlighter: {
|
||||||
|
languages: [
|
||||||
|
'svelte',
|
||||||
|
'sh',
|
||||||
|
'js',
|
||||||
|
'html',
|
||||||
|
'ts',
|
||||||
|
'md',
|
||||||
|
'css',
|
||||||
|
'scss',
|
||||||
|
'toml',
|
||||||
|
'rust',
|
||||||
|
'lua',
|
||||||
|
'json',
|
||||||
|
'elisp',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}),
|
||||||
}),
|
}),
|
||||||
}),
|
wasm(),
|
||||||
wasm(),
|
topLevelAwait(),
|
||||||
topLevelAwait(),
|
tailwindcss(),
|
||||||
],
|
],
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
import { SelectControl } from '@wordpress/components';
|
import { SelectControl } from '@wordpress/components';
|
||||||
import { Dialect } from 'harper.js';
|
import { Dialect } from 'harper.js';
|
||||||
import React from 'react';
|
|
||||||
import useDialect from './useDialect';
|
import useDialect from './useDialect';
|
||||||
|
|
||||||
export default function DialectSelectRow() {
|
export default function DialectSelectRow() {
|
||||||
|
|
@ -31,7 +30,7 @@ export default function DialectSelectRow() {
|
||||||
value: Dialect.British.toString(),
|
value: Dialect.British.toString(),
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
onChange={(value) => setDialect(Number.parseInt(value))}
|
onChange={(value) => setDialect(Number.parseInt(value, 10))}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import React, { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
import type { LintBox } from './Box';
|
import type { LintBox } from './Box';
|
||||||
import type RichText from './RichText';
|
import type RichText from './RichText';
|
||||||
import SuggestionControl from './SuggestionControl';
|
import SuggestionControl from './SuggestionControl';
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
import { Animate, Spinner } from '@wordpress/components';
|
import { Animate, Spinner } from '@wordpress/components';
|
||||||
import React from 'react';
|
|
||||||
import type { IgnorableLintBox } from './Box';
|
import type { IgnorableLintBox } from './Box';
|
||||||
import LintListItem from './LintListItem';
|
import LintListItem from './LintListItem';
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
import { Button, Card, CardBody } from '@wordpress/components';
|
import { Button, Card, CardBody } from '@wordpress/components';
|
||||||
import React from 'react';
|
|
||||||
import type { IgnorableLintBox } from './Box';
|
import type { IgnorableLintBox } from './Box';
|
||||||
import { suggestionText } from './lintUtils';
|
import { suggestionText } from './lintUtils';
|
||||||
import { useAddToDictionary } from './usePersonalDictionary';
|
import { useAddToDictionary } from './usePersonalDictionary';
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { SearchControl } from '@wordpress/components';
|
import { SearchControl } from '@wordpress/components';
|
||||||
import React, { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import { useLintDescriptions } from './LinterProvider';
|
import { useLintDescriptions } from './LinterProvider';
|
||||||
import LintSettingRow from './LintSettingRow';
|
import LintSettingRow from './LintSettingRow';
|
||||||
import useLintConfig, { useDefaultLintConfig } from './useLintConfig';
|
import useLintConfig, { useDefaultLintConfig } from './useLintConfig';
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { Animate, CheckboxControl } from '@wordpress/components';
|
import { Animate, CheckboxControl } from '@wordpress/components';
|
||||||
import React, { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
import { useLinter } from './LinterProvider';
|
import { useLinter } from './LinterProvider';
|
||||||
|
|
||||||
export default function LintSettingRow({
|
export default function LintSettingRow({
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,5 @@
|
||||||
import { binaryInlined, type Linter, WorkerLinter } from 'harper.js';
|
import { binaryInlined, type Linter, WorkerLinter } from 'harper.js';
|
||||||
import React, {
|
import { createContext, type ReactNode, useContext, useEffect, useRef, useState } from 'react';
|
||||||
createContext,
|
|
||||||
type ReactNode,
|
|
||||||
useContext,
|
|
||||||
useEffect,
|
|
||||||
useRef,
|
|
||||||
useState,
|
|
||||||
} from 'react';
|
|
||||||
|
|
||||||
const linterContext = createContext<Linter>(new WorkerLinter({ binary: binaryInlined }));
|
const linterContext = createContext<Linter>(new WorkerLinter({ binary: binaryInlined }));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
import { useCallback, useEffect, useMemo, useState } from 'react';
|
||||||
import { createPortal } from 'react-dom';
|
import { createPortal } from 'react-dom';
|
||||||
import DataBlock from './DataBlock';
|
import DataBlock from './DataBlock';
|
||||||
import Highlighter from './Highlighter';
|
import Highlighter from './Highlighter';
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
import { Panel, PanelBody, SelectControl, TabPanel } from '@wordpress/components';
|
import { Panel, PanelBody, TabPanel } from '@wordpress/components';
|
||||||
import React from 'react';
|
|
||||||
import type { IgnorableLintBox } from './Box';
|
import type { IgnorableLintBox } from './Box';
|
||||||
import DialectSelectRow from './DialectSelectRow';
|
import DialectSelectRow from './DialectSelectRow';
|
||||||
import LintList from './LintList';
|
import LintList from './LintList';
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { Button, Popover } from '@wordpress/components';
|
import { Button, Popover } from '@wordpress/components';
|
||||||
import React, { useEffect, useMemo, useRef, useState } from 'react';
|
import { useEffect, useMemo, useRef, useState } from 'react';
|
||||||
import { type IgnorableLintBox, isPointInBox } from './Box';
|
import { type IgnorableLintBox, isPointInBox } from './Box';
|
||||||
import { suggestionText } from './lintUtils';
|
import { suggestionText } from './lintUtils';
|
||||||
import { useAddToDictionary } from './usePersonalDictionary';
|
import { useAddToDictionary } from './usePersonalDictionary';
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,9 @@ export function leafNodes(node: Node): Node[] {
|
||||||
|
|
||||||
for (const child of children) {
|
for (const child of children) {
|
||||||
const sub = leafNodes(child);
|
const sub = leafNodes(child);
|
||||||
sub.forEach((v) => out.push(v));
|
sub.forEach((v) => {
|
||||||
|
out.push(v);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return out;
|
return out;
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ import { registerPlugin } from '@wordpress/plugins';
|
||||||
import Logo from './Logo';
|
import Logo from './Logo';
|
||||||
import SidebarControl from './SidebarControl';
|
import SidebarControl from './SidebarControl';
|
||||||
import './index.css';
|
import './index.css';
|
||||||
import React from 'react';
|
|
||||||
import LinterProvider from './LinterProvider';
|
import LinterProvider from './LinterProvider';
|
||||||
|
|
||||||
function Sidebar() {
|
function Sidebar() {
|
||||||
|
|
@ -21,9 +20,9 @@ function Sidebar() {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-expect-error
|
||||||
if (!window.__harperSidebarRegistered) {
|
if (!window.__harperSidebarRegistered) {
|
||||||
registerPlugin('harper-sidebar', { render: Sidebar });
|
registerPlugin('harper-sidebar', { render: Sidebar });
|
||||||
// @ts-ignore
|
// @ts-expect-error
|
||||||
window.__harperSidebarRegistered = true;
|
window.__harperSidebarRegistered = true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import type { Lint } from 'harper.js';
|
import type { Lint } from 'harper.js';
|
||||||
import { useCallback, useEffect, useState } from 'react';
|
import { useCallback, useEffect, useState } from 'react';
|
||||||
import { type IgnorableLintBox, LintBox } from './Box';
|
import type { IgnorableLintBox } from './Box';
|
||||||
import { useLinter } from './LinterProvider';
|
import { useLinter } from './LinterProvider';
|
||||||
import type RichText from './RichText';
|
import type RichText from './RichText';
|
||||||
import useDialect from './useDialect';
|
import useDialect from './useDialect';
|
||||||
|
|
@ -73,7 +73,9 @@ export default function useLintBoxes(richTexts: RichText[]): [IgnorableLintBox[]
|
||||||
});
|
});
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
observers.forEach((observer) => observer.disconnect());
|
observers.forEach((observer) => {
|
||||||
|
observer.disconnect();
|
||||||
|
});
|
||||||
};
|
};
|
||||||
}, [richTexts, updateLints]);
|
}, [richTexts, updateLints]);
|
||||||
|
|
||||||
|
|
|
||||||
277
pnpm-lock.yaml
generated
277
pnpm-lock.yaml
generated
|
|
@ -27,8 +27,8 @@ importers:
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 7.26.10
|
version: 7.26.10
|
||||||
'@biomejs/biome':
|
'@biomejs/biome':
|
||||||
specifier: 2.0.6
|
specifier: 2.3.3
|
||||||
version: 2.0.6
|
version: 2.3.3
|
||||||
check-dependency-version-consistency:
|
check-dependency-version-consistency:
|
||||||
specifier: ^5.0.0
|
specifier: ^5.0.0
|
||||||
version: 5.0.0
|
version: 5.0.0
|
||||||
|
|
@ -43,9 +43,6 @@ importers:
|
||||||
'@fortawesome/free-solid-svg-icons':
|
'@fortawesome/free-solid-svg-icons':
|
||||||
specifier: ^7.1.0
|
specifier: ^7.1.0
|
||||||
version: 7.1.0
|
version: 7.1.0
|
||||||
'@tailwindcss/vite':
|
|
||||||
specifier: ^4.1.4
|
|
||||||
version: 4.1.4(vite@5.4.17(@types/node@22.13.10)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0))
|
|
||||||
'@webcomponents/custom-elements':
|
'@webcomponents/custom-elements':
|
||||||
specifier: ^1.6.0
|
specifier: ^1.6.0
|
||||||
version: 1.6.0
|
version: 1.6.0
|
||||||
|
|
@ -64,9 +61,6 @@ importers:
|
||||||
svelte-fa:
|
svelte-fa:
|
||||||
specifier: ^4.0.4
|
specifier: ^4.0.4
|
||||||
version: 4.0.4(svelte@5.21.0)
|
version: 4.0.4(svelte@5.21.0)
|
||||||
tailwindcss:
|
|
||||||
specifier: ^4.1.4
|
|
||||||
version: 4.1.4
|
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@crxjs/vite-plugin':
|
'@crxjs/vite-plugin':
|
||||||
specifier: ^2.0.0-beta.26
|
specifier: ^2.0.0-beta.26
|
||||||
|
|
@ -77,6 +71,9 @@ importers:
|
||||||
'@sveltejs/vite-plugin-svelte':
|
'@sveltejs/vite-plugin-svelte':
|
||||||
specifier: ^4.0.0
|
specifier: ^4.0.0
|
||||||
version: 4.0.4(svelte@5.21.0)(vite@5.4.17(@types/node@22.13.10)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0))
|
version: 4.0.4(svelte@5.21.0)(vite@5.4.17(@types/node@22.13.10)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0))
|
||||||
|
'@tailwindcss/vite':
|
||||||
|
specifier: ^4.1.4
|
||||||
|
version: 4.1.4(vite@5.4.17(@types/node@22.13.10)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0))
|
||||||
'@types/chrome':
|
'@types/chrome':
|
||||||
specifier: ^0.0.246
|
specifier: ^0.0.246
|
||||||
version: 0.0.246
|
version: 0.0.246
|
||||||
|
|
@ -119,6 +116,9 @@ importers:
|
||||||
svelte-preprocess:
|
svelte-preprocess:
|
||||||
specifier: ^6.0.0
|
specifier: ^6.0.0
|
||||||
version: 6.0.3(@babel/core@7.26.10)(postcss-load-config@4.0.2(postcss@8.5.3))(postcss@8.5.3)(sass@1.85.1)(svelte@5.21.0)(typescript@5.8.2)
|
version: 6.0.3(@babel/core@7.26.10)(postcss-load-config@4.0.2(postcss@8.5.3))(postcss@8.5.3)(sass@1.85.1)(svelte@5.21.0)(typescript@5.8.2)
|
||||||
|
tailwindcss:
|
||||||
|
specifier: ^4.1.4
|
||||||
|
version: 4.1.16
|
||||||
tslib:
|
tslib:
|
||||||
specifier: ^2.6.2
|
specifier: ^2.6.2
|
||||||
version: 2.8.1
|
version: 2.8.1
|
||||||
|
|
@ -143,6 +143,9 @@ importers:
|
||||||
harper-wasm:
|
harper-wasm:
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../harper-wasm/pkg
|
version: link:../../harper-wasm/pkg
|
||||||
|
marked:
|
||||||
|
specifier: ^16.4.1
|
||||||
|
version: 16.4.1
|
||||||
p-lazy:
|
p-lazy:
|
||||||
specifier: ^5.0.0
|
specifier: ^5.0.0
|
||||||
version: 5.0.0
|
version: 5.0.0
|
||||||
|
|
@ -369,6 +372,9 @@ importers:
|
||||||
'@sveltejs/vite-plugin-svelte':
|
'@sveltejs/vite-plugin-svelte':
|
||||||
specifier: ^5.0.3
|
specifier: ^5.0.3
|
||||||
version: 5.0.3(svelte@5.21.0)(vite@6.3.5(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.20.6)(yaml@2.7.0))
|
version: 5.0.3(svelte@5.21.0)(vite@6.3.5(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.20.6)(yaml@2.7.0))
|
||||||
|
'@tailwindcss/vite':
|
||||||
|
specifier: ^4.1.4
|
||||||
|
version: 4.1.4(vite@6.3.5(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.20.6)(yaml@2.7.0))
|
||||||
'@types/reveal.js':
|
'@types/reveal.js':
|
||||||
specifier: ^5.0.3
|
specifier: ^5.0.3
|
||||||
version: 5.0.5
|
version: 5.0.5
|
||||||
|
|
@ -384,9 +390,6 @@ importers:
|
||||||
flowbite-svelte:
|
flowbite-svelte:
|
||||||
specifier: ^0.44.18
|
specifier: ^0.44.18
|
||||||
version: 0.44.24(rollup@4.35.0)(svelte@5.21.0)
|
version: 0.44.24(rollup@4.35.0)(svelte@5.21.0)
|
||||||
postcss:
|
|
||||||
specifier: ^8.4.31
|
|
||||||
version: 8.5.3
|
|
||||||
svelte:
|
svelte:
|
||||||
specifier: ^5.15.0
|
specifier: ^5.15.0
|
||||||
version: 5.21.0
|
version: 5.21.0
|
||||||
|
|
@ -394,8 +397,8 @@ importers:
|
||||||
specifier: ^4.1.5
|
specifier: ^4.1.5
|
||||||
version: 4.1.5(picomatch@4.0.2)(svelte@5.21.0)(typescript@5.8.2)
|
version: 4.1.5(picomatch@4.0.2)(svelte@5.21.0)(typescript@5.8.2)
|
||||||
tailwindcss:
|
tailwindcss:
|
||||||
specifier: ^3.3.3
|
specifier: ^4.1.16
|
||||||
version: 3.4.17
|
version: 4.1.16
|
||||||
tslib:
|
tslib:
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 2.8.1
|
version: 2.8.1
|
||||||
|
|
@ -529,10 +532,6 @@ packages:
|
||||||
resolution: {integrity: sha512-WqU0VumUILrIeVYCTGZlyyZoC/tbvhiyPxfGRRO1cSjxN558bnJLlR2BvS0SJ5b75dRNK7HDvtXo2QoP9eLfiA==}
|
resolution: {integrity: sha512-WqU0VumUILrIeVYCTGZlyyZoC/tbvhiyPxfGRRO1cSjxN558bnJLlR2BvS0SJ5b75dRNK7HDvtXo2QoP9eLfiA==}
|
||||||
engines: {node: '>= 14.0.0'}
|
engines: {node: '>= 14.0.0'}
|
||||||
|
|
||||||
'@alloc/quick-lru@5.2.0':
|
|
||||||
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
|
|
||||||
engines: {node: '>=10'}
|
|
||||||
|
|
||||||
'@ampproject/remapping@2.3.0':
|
'@ampproject/remapping@2.3.0':
|
||||||
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
|
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
|
||||||
engines: {node: '>=6.0.0'}
|
engines: {node: '>=6.0.0'}
|
||||||
|
|
@ -1281,55 +1280,55 @@ packages:
|
||||||
'@bcoe/v8-coverage@0.2.3':
|
'@bcoe/v8-coverage@0.2.3':
|
||||||
resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
|
resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
|
||||||
|
|
||||||
'@biomejs/biome@2.0.6':
|
'@biomejs/biome@2.3.3':
|
||||||
resolution: {integrity: sha512-RRP+9cdh5qwe2t0gORwXaa27oTOiQRQvrFf49x2PA1tnpsyU7FIHX4ZOFMtBC4QNtyWsN7Dqkf5EDbg4X+9iqA==}
|
resolution: {integrity: sha512-zn/P1pRBCpDdhi+VNSMnpczOz9DnqzOA2c48K8xgxjDODvi5O8gs3a2H233rck/5HXpkFj6TmyoqVvxirZUnvg==}
|
||||||
engines: {node: '>=14.21.3'}
|
engines: {node: '>=14.21.3'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
'@biomejs/cli-darwin-arm64@2.0.6':
|
'@biomejs/cli-darwin-arm64@2.3.3':
|
||||||
resolution: {integrity: sha512-AzdiNNjNzsE6LfqWyBvcL29uWoIuZUkndu+wwlXW13EKcBHbbKjNQEZIJKYDc6IL+p7bmWGx3v9ZtcRyIoIz5A==}
|
resolution: {integrity: sha512-5+JtW6RKmjqL9un0UtHV0ezOslAyYBzyl5ZhYiu7GHesX2x8NCDl6tXYrenv9m7e1RLbkO5E5Kh04kseMtz6lw==}
|
||||||
engines: {node: '>=14.21.3'}
|
engines: {node: '>=14.21.3'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@biomejs/cli-darwin-x64@2.0.6':
|
'@biomejs/cli-darwin-x64@2.3.3':
|
||||||
resolution: {integrity: sha512-wJjjP4E7bO4WJmiQaLnsdXMa516dbtC6542qeRkyJg0MqMXP0fvs4gdsHhZ7p9XWTAmGIjZHFKXdsjBvKGIJJQ==}
|
resolution: {integrity: sha512-UPmKRalkHicvIpeccuKqq+/gA2HYV8FUnAEDJnqYBlGlycKqe6xrovWqvWTE4TTNpIFf4UQyuaDzLkN6Kz6tbA==}
|
||||||
engines: {node: '>=14.21.3'}
|
engines: {node: '>=14.21.3'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@biomejs/cli-linux-arm64-musl@2.0.6':
|
'@biomejs/cli-linux-arm64-musl@2.3.3':
|
||||||
resolution: {integrity: sha512-CVPEMlin3bW49sBqLBg2x016Pws7eUXA27XYDFlEtponD0luYjg2zQaMJ2nOqlkKG9fqzzkamdYxHdMDc2gZFw==}
|
resolution: {integrity: sha512-KhCDMV+V7Yu72v40ssGJTHuv/j0n7JQ6l0s/c+EMcX5zPYLMLr4XpmI+WXhp4Vfkz0T5Xnh5wbrTBI3f2UTpjQ==}
|
||||||
engines: {node: '>=14.21.3'}
|
engines: {node: '>=14.21.3'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@biomejs/cli-linux-arm64@2.0.6':
|
'@biomejs/cli-linux-arm64@2.3.3':
|
||||||
resolution: {integrity: sha512-ZSVf6TYo5rNMUHIW1tww+rs/krol7U5A1Is/yzWyHVZguuB0lBnIodqyFuwCNqG9aJGyk7xIMS8HG0qGUPz0SA==}
|
resolution: {integrity: sha512-zeiKwALNB/hax7+LLhCYqhqzlWdTfgE9BGkX2Z8S4VmCYnGFrf2fON/ec6KCos7mra5MDm6fYICsEWN2+HKZhw==}
|
||||||
engines: {node: '>=14.21.3'}
|
engines: {node: '>=14.21.3'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@biomejs/cli-linux-x64-musl@2.0.6':
|
'@biomejs/cli-linux-x64-musl@2.3.3':
|
||||||
resolution: {integrity: sha512-mKHE/e954hR/hSnAcJSjkf4xGqZc/53Kh39HVW1EgO5iFi0JutTN07TSjEMg616julRtfSNJi0KNyxvc30Y4rQ==}
|
resolution: {integrity: sha512-IyqQ+jYzU5MVy9CK5NV0U+NnUMPUAhYMrB/x4QgL/Dl1MqzBVc61bHeyhLnKM6DSEk73/TQYrk/8/QmVHudLdQ==}
|
||||||
engines: {node: '>=14.21.3'}
|
engines: {node: '>=14.21.3'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@biomejs/cli-linux-x64@2.0.6':
|
'@biomejs/cli-linux-x64@2.3.3':
|
||||||
resolution: {integrity: sha512-geM1MkHTV1Kh2Cs/Xzot9BOF3WBacihw6bkEmxkz4nSga8B9/hWy5BDiOG3gHDGIBa8WxT0nzsJs2f/hPqQIQw==}
|
resolution: {integrity: sha512-05CjPLbvVVU8J6eaO6iSEoA0FXKy2l6ddL+1h/VpiosCmIp3HxRKLOa1hhC1n+D13Z8g9b1DtnglGtM5U3sTag==}
|
||||||
engines: {node: '>=14.21.3'}
|
engines: {node: '>=14.21.3'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@biomejs/cli-win32-arm64@2.0.6':
|
'@biomejs/cli-win32-arm64@2.3.3':
|
||||||
resolution: {integrity: sha512-290V4oSFoKaprKE1zkYVsDfAdn0An5DowZ+GIABgjoq1ndhvNxkJcpxPsiYtT7slbVe3xmlT0ncdfOsN7KruzA==}
|
resolution: {integrity: sha512-NtlLs3pdFqFAQYZjlEHKOwJEn3GEaz7rtR2oCrzaLT2Xt3Cfd55/VvodQ5V+X+KepLa956QJagckJrNL+DmumQ==}
|
||||||
engines: {node: '>=14.21.3'}
|
engines: {node: '>=14.21.3'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@biomejs/cli-win32-x64@2.0.6':
|
'@biomejs/cli-win32-x64@2.3.3':
|
||||||
resolution: {integrity: sha512-bfM1Bce0d69Ao7pjTjUS+AWSZ02+5UHdiAP85Th8e9yV5xzw6JrHXbL5YWlcEKQ84FIZMdDc7ncuti1wd2sdbw==}
|
resolution: {integrity: sha512-klJKPPQvUk9Rlp0Dd56gQw/+Wt6uUprHdHWtbDC93f3Iv+knA2tLWpcYoOZJgPV+9s+RBmYv0DGy4mUlr20esg==}
|
||||||
engines: {node: '>=14.21.3'}
|
engines: {node: '>=14.21.3'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
@ -4832,9 +4831,6 @@ packages:
|
||||||
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
|
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
any-promise@1.3.0:
|
|
||||||
resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
|
|
||||||
|
|
||||||
anymatch@3.1.3:
|
anymatch@3.1.3:
|
||||||
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
|
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
|
||||||
engines: {node: '>= 8'}
|
engines: {node: '>= 8'}
|
||||||
|
|
@ -4846,9 +4842,6 @@ packages:
|
||||||
resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==}
|
resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==}
|
||||||
engines: {node: '>=14'}
|
engines: {node: '>=14'}
|
||||||
|
|
||||||
arg@5.0.2:
|
|
||||||
resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
|
|
||||||
|
|
||||||
argparse@1.0.10:
|
argparse@1.0.10:
|
||||||
resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
|
resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
|
||||||
|
|
||||||
|
|
@ -5249,10 +5242,6 @@ packages:
|
||||||
camel-case@4.1.2:
|
camel-case@4.1.2:
|
||||||
resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==}
|
resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==}
|
||||||
|
|
||||||
camelcase-css@2.0.1:
|
|
||||||
resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
|
|
||||||
engines: {node: '>= 6'}
|
|
||||||
|
|
||||||
camelcase-keys@6.2.2:
|
camelcase-keys@6.2.2:
|
||||||
resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==}
|
resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|
@ -5497,10 +5486,6 @@ packages:
|
||||||
commander@2.20.3:
|
commander@2.20.3:
|
||||||
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
|
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
|
||||||
|
|
||||||
commander@4.1.1:
|
|
||||||
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
|
|
||||||
engines: {node: '>= 6'}
|
|
||||||
|
|
||||||
commander@7.2.0:
|
commander@7.2.0:
|
||||||
resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
|
resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
|
|
@ -5962,9 +5947,6 @@ packages:
|
||||||
devtools-protocol@0.0.1423531:
|
devtools-protocol@0.0.1423531:
|
||||||
resolution: {integrity: sha512-z6cOcajZWxk80zvFnkTGa7tj3oqF+C5SnOF1KSMeAr5/WW/nLNHlEpKr7voSzMz8IaUoq5rjdI0Mqv5k/BUkhg==}
|
resolution: {integrity: sha512-z6cOcajZWxk80zvFnkTGa7tj3oqF+C5SnOF1KSMeAr5/WW/nLNHlEpKr7voSzMz8IaUoq5rjdI0Mqv5k/BUkhg==}
|
||||||
|
|
||||||
didyoumean@1.2.2:
|
|
||||||
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
|
|
||||||
|
|
||||||
diff-sequences@29.6.3:
|
diff-sequences@29.6.3:
|
||||||
resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
|
resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
|
||||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||||
|
|
@ -5977,9 +5959,6 @@ packages:
|
||||||
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
|
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
dlv@1.1.3:
|
|
||||||
resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
|
|
||||||
|
|
||||||
dns-packet@5.6.1:
|
dns-packet@5.6.1:
|
||||||
resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==}
|
resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
|
@ -8440,6 +8419,11 @@ packages:
|
||||||
resolution: {integrity: sha512-AG7UkLzNa1fxiOv5B+owPsPhtM4D6DoODhsJgiaNg1xowXovrYgOnLqAgOOFQpWOlHFVQUzjMY5ypNNTeov92g==}
|
resolution: {integrity: sha512-AG7UkLzNa1fxiOv5B+owPsPhtM4D6DoODhsJgiaNg1xowXovrYgOnLqAgOOFQpWOlHFVQUzjMY5ypNNTeov92g==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
|
marked@16.4.1:
|
||||||
|
resolution: {integrity: sha512-ntROs7RaN3EvWfy3EZi14H4YxmT6A5YvywfhO+0pm+cH/dnSQRmdAmoFIc3B9aiwTehyk7pESH4ofyBY+V5hZg==}
|
||||||
|
engines: {node: '>= 20'}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
marky@1.2.5:
|
marky@1.2.5:
|
||||||
resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==}
|
resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==}
|
||||||
|
|
||||||
|
|
@ -8819,9 +8803,6 @@ packages:
|
||||||
resolution: {integrity: sha512-kFm5+jbwR5mC+lo+3Cy46eHiykWSpUtTLOH3GE+AR7GeLq8PgfJcvpMiyVWk9/O53DjQsqm6a3VOOfq7gYWFRg==}
|
resolution: {integrity: sha512-kFm5+jbwR5mC+lo+3Cy46eHiykWSpUtTLOH3GE+AR7GeLq8PgfJcvpMiyVWk9/O53DjQsqm6a3VOOfq7gYWFRg==}
|
||||||
engines: {node: '>= 8.0'}
|
engines: {node: '>= 8.0'}
|
||||||
|
|
||||||
mz@2.7.0:
|
|
||||||
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
|
|
||||||
|
|
||||||
named-placeholders@1.1.3:
|
named-placeholders@1.1.3:
|
||||||
resolution: {integrity: sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==}
|
resolution: {integrity: sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==}
|
||||||
engines: {node: '>=12.0.0'}
|
engines: {node: '>=12.0.0'}
|
||||||
|
|
@ -8949,10 +8930,6 @@ packages:
|
||||||
object-filter@1.0.2:
|
object-filter@1.0.2:
|
||||||
resolution: {integrity: sha512-NahvP2vZcy1ZiiYah30CEPw0FpDcSkSePJBMpzl5EQgCmISijiGuJm3SPYp7U+Lf2TljyaIw3E5EgkEx/TNEVA==}
|
resolution: {integrity: sha512-NahvP2vZcy1ZiiYah30CEPw0FpDcSkSePJBMpzl5EQgCmISijiGuJm3SPYp7U+Lf2TljyaIw3E5EgkEx/TNEVA==}
|
||||||
|
|
||||||
object-hash@3.0.0:
|
|
||||||
resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
|
|
||||||
engines: {node: '>= 6'}
|
|
||||||
|
|
||||||
object-inspect@1.13.4:
|
object-inspect@1.13.4:
|
||||||
resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
|
resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
@ -9364,18 +9341,6 @@ packages:
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
postcss: ^8.4.31
|
postcss: ^8.4.31
|
||||||
|
|
||||||
postcss-import@15.1.0:
|
|
||||||
resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
|
|
||||||
engines: {node: '>=14.0.0'}
|
|
||||||
peerDependencies:
|
|
||||||
postcss: ^8.0.0
|
|
||||||
|
|
||||||
postcss-js@4.0.1:
|
|
||||||
resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
|
|
||||||
engines: {node: ^12 || ^14 || >= 16}
|
|
||||||
peerDependencies:
|
|
||||||
postcss: ^8.4.21
|
|
||||||
|
|
||||||
postcss-load-config@4.0.2:
|
postcss-load-config@4.0.2:
|
||||||
resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
|
resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
|
||||||
engines: {node: '>= 14'}
|
engines: {node: '>= 14'}
|
||||||
|
|
@ -9458,12 +9423,6 @@ packages:
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
postcss: ^8.1.0
|
postcss: ^8.1.0
|
||||||
|
|
||||||
postcss-nested@6.2.0:
|
|
||||||
resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==}
|
|
||||||
engines: {node: '>=12.0'}
|
|
||||||
peerDependencies:
|
|
||||||
postcss: ^8.2.14
|
|
||||||
|
|
||||||
postcss-normalize-charset@6.0.2:
|
postcss-normalize-charset@6.0.2:
|
||||||
resolution: {integrity: sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==}
|
resolution: {integrity: sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==}
|
||||||
engines: {node: ^14 || ^16 || >=18.0}
|
engines: {node: ^14 || ^16 || >=18.0}
|
||||||
|
|
@ -9825,9 +9784,6 @@ packages:
|
||||||
resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
|
resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
|
|
||||||
read-cache@1.0.0:
|
|
||||||
resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
|
|
||||||
|
|
||||||
read-pkg-up@7.0.1:
|
read-pkg-up@7.0.1:
|
||||||
resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
|
resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|
@ -10657,11 +10613,6 @@ packages:
|
||||||
stylis@4.2.0:
|
stylis@4.2.0:
|
||||||
resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==}
|
resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==}
|
||||||
|
|
||||||
sucrase@3.35.0:
|
|
||||||
resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
|
|
||||||
engines: {node: '>=16 || 14 >=14.17'}
|
|
||||||
hasBin: true
|
|
||||||
|
|
||||||
supports-color@5.5.0:
|
supports-color@5.5.0:
|
||||||
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
|
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
|
|
@ -10804,10 +10755,8 @@ packages:
|
||||||
tailwind-merge@2.6.0:
|
tailwind-merge@2.6.0:
|
||||||
resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==}
|
resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==}
|
||||||
|
|
||||||
tailwindcss@3.4.17:
|
tailwindcss@4.1.16:
|
||||||
resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==}
|
resolution: {integrity: sha512-pONL5awpaQX4LN5eiv7moSiSPd/DLDzKVRJz8Q9PgzmAdd1R4307GQS2ZpfiN7ZmekdQrfhZZiSE5jkLR4WNaA==}
|
||||||
engines: {node: '>=14.0.0'}
|
|
||||||
hasBin: true
|
|
||||||
|
|
||||||
tailwindcss@4.1.4:
|
tailwindcss@4.1.4:
|
||||||
resolution: {integrity: sha512-1ZIUqtPITFbv/DxRmDr5/agPqJwF69d24m9qmM1939TJehgY539CtzeZRjbLt5G6fSy/7YqqYsfvoTEw9xUI2A==}
|
resolution: {integrity: sha512-1ZIUqtPITFbv/DxRmDr5/agPqJwF69d24m9qmM1939TJehgY539CtzeZRjbLt5G6fSy/7YqqYsfvoTEw9xUI2A==}
|
||||||
|
|
@ -10874,13 +10823,6 @@ packages:
|
||||||
text-table@0.2.0:
|
text-table@0.2.0:
|
||||||
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
|
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
|
||||||
|
|
||||||
thenify-all@1.6.0:
|
|
||||||
resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
|
|
||||||
engines: {node: '>=0.8'}
|
|
||||||
|
|
||||||
thenify@3.3.1:
|
|
||||||
resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
|
|
||||||
|
|
||||||
third-party-web@0.26.5:
|
third-party-web@0.26.5:
|
||||||
resolution: {integrity: sha512-tDuKQJUTfjvi9Fcrs1s6YAQAB9mzhTSbBZMfNgtWNmJlHuoFeXO6dzBFdGeCWRvYL50jQGK0jPsBZYxqZQJ2SA==}
|
resolution: {integrity: sha512-tDuKQJUTfjvi9Fcrs1s6YAQAB9mzhTSbBZMfNgtWNmJlHuoFeXO6dzBFdGeCWRvYL50jQGK0jPsBZYxqZQJ2SA==}
|
||||||
|
|
||||||
|
|
@ -10989,9 +10931,6 @@ packages:
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '>=4.2.0'
|
typescript: '>=4.2.0'
|
||||||
|
|
||||||
ts-interface-checker@0.1.13:
|
|
||||||
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
|
|
||||||
|
|
||||||
tsconfig-paths@3.15.0:
|
tsconfig-paths@3.15.0:
|
||||||
resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
|
resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
|
||||||
|
|
||||||
|
|
@ -12068,8 +12007,6 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@algolia/client-common': 5.21.0
|
'@algolia/client-common': 5.21.0
|
||||||
|
|
||||||
'@alloc/quick-lru@5.2.0': {}
|
|
||||||
|
|
||||||
'@ampproject/remapping@2.3.0':
|
'@ampproject/remapping@2.3.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jridgewell/gen-mapping': 0.3.8
|
'@jridgewell/gen-mapping': 0.3.8
|
||||||
|
|
@ -13686,39 +13623,39 @@ snapshots:
|
||||||
|
|
||||||
'@bcoe/v8-coverage@0.2.3': {}
|
'@bcoe/v8-coverage@0.2.3': {}
|
||||||
|
|
||||||
'@biomejs/biome@2.0.6':
|
'@biomejs/biome@2.3.3':
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@biomejs/cli-darwin-arm64': 2.0.6
|
'@biomejs/cli-darwin-arm64': 2.3.3
|
||||||
'@biomejs/cli-darwin-x64': 2.0.6
|
'@biomejs/cli-darwin-x64': 2.3.3
|
||||||
'@biomejs/cli-linux-arm64': 2.0.6
|
'@biomejs/cli-linux-arm64': 2.3.3
|
||||||
'@biomejs/cli-linux-arm64-musl': 2.0.6
|
'@biomejs/cli-linux-arm64-musl': 2.3.3
|
||||||
'@biomejs/cli-linux-x64': 2.0.6
|
'@biomejs/cli-linux-x64': 2.3.3
|
||||||
'@biomejs/cli-linux-x64-musl': 2.0.6
|
'@biomejs/cli-linux-x64-musl': 2.3.3
|
||||||
'@biomejs/cli-win32-arm64': 2.0.6
|
'@biomejs/cli-win32-arm64': 2.3.3
|
||||||
'@biomejs/cli-win32-x64': 2.0.6
|
'@biomejs/cli-win32-x64': 2.3.3
|
||||||
|
|
||||||
'@biomejs/cli-darwin-arm64@2.0.6':
|
'@biomejs/cli-darwin-arm64@2.3.3':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@biomejs/cli-darwin-x64@2.0.6':
|
'@biomejs/cli-darwin-x64@2.3.3':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@biomejs/cli-linux-arm64-musl@2.0.6':
|
'@biomejs/cli-linux-arm64-musl@2.3.3':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@biomejs/cli-linux-arm64@2.0.6':
|
'@biomejs/cli-linux-arm64@2.3.3':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@biomejs/cli-linux-x64-musl@2.0.6':
|
'@biomejs/cli-linux-x64-musl@2.3.3':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@biomejs/cli-linux-x64@2.0.6':
|
'@biomejs/cli-linux-x64@2.3.3':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@biomejs/cli-win32-arm64@2.0.6':
|
'@biomejs/cli-win32-arm64@2.3.3':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@biomejs/cli-win32-x64@2.0.6':
|
'@biomejs/cli-win32-x64@2.3.3':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@bundled-es-modules/cookie@2.0.1':
|
'@bundled-es-modules/cookie@2.0.1':
|
||||||
|
|
@ -15852,6 +15789,13 @@ snapshots:
|
||||||
tailwindcss: 4.1.4
|
tailwindcss: 4.1.4
|
||||||
vite: 5.4.17(@types/node@22.13.10)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)
|
vite: 5.4.17(@types/node@22.13.10)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)
|
||||||
|
|
||||||
|
'@tailwindcss/vite@4.1.4(vite@6.3.5(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.20.6)(yaml@2.7.0))':
|
||||||
|
dependencies:
|
||||||
|
'@tailwindcss/node': 4.1.4
|
||||||
|
'@tailwindcss/oxide': 4.1.4
|
||||||
|
tailwindcss: 4.1.4
|
||||||
|
vite: 6.3.5(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.20.6)(yaml@2.7.0)
|
||||||
|
|
||||||
'@tannin/compile@1.1.0':
|
'@tannin/compile@1.1.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tannin/evaluate': 1.2.0
|
'@tannin/evaluate': 1.2.0
|
||||||
|
|
@ -18073,8 +18017,6 @@ snapshots:
|
||||||
|
|
||||||
ansi-styles@6.2.1: {}
|
ansi-styles@6.2.1: {}
|
||||||
|
|
||||||
any-promise@1.3.0: {}
|
|
||||||
|
|
||||||
anymatch@3.1.3:
|
anymatch@3.1.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
normalize-path: 3.0.0
|
normalize-path: 3.0.0
|
||||||
|
|
@ -18092,8 +18034,6 @@ snapshots:
|
||||||
|
|
||||||
are-docs-informative@0.0.2: {}
|
are-docs-informative@0.0.2: {}
|
||||||
|
|
||||||
arg@5.0.2: {}
|
|
||||||
|
|
||||||
argparse@1.0.10:
|
argparse@1.0.10:
|
||||||
dependencies:
|
dependencies:
|
||||||
sprintf-js: 1.0.3
|
sprintf-js: 1.0.3
|
||||||
|
|
@ -18596,8 +18536,6 @@ snapshots:
|
||||||
pascal-case: 3.1.2
|
pascal-case: 3.1.2
|
||||||
tslib: 2.8.1
|
tslib: 2.8.1
|
||||||
|
|
||||||
camelcase-css@2.0.1: {}
|
|
||||||
|
|
||||||
camelcase-keys@6.2.2:
|
camelcase-keys@6.2.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
camelcase: 5.3.1
|
camelcase: 5.3.1
|
||||||
|
|
@ -18888,8 +18826,6 @@ snapshots:
|
||||||
|
|
||||||
commander@2.20.3: {}
|
commander@2.20.3: {}
|
||||||
|
|
||||||
commander@4.1.1: {}
|
|
||||||
|
|
||||||
commander@7.2.0: {}
|
commander@7.2.0: {}
|
||||||
|
|
||||||
commander@9.0.0: {}
|
commander@9.0.0: {}
|
||||||
|
|
@ -19336,8 +19272,6 @@ snapshots:
|
||||||
|
|
||||||
devtools-protocol@0.0.1423531: {}
|
devtools-protocol@0.0.1423531: {}
|
||||||
|
|
||||||
didyoumean@1.2.2: {}
|
|
||||||
|
|
||||||
diff-sequences@29.6.3: {}
|
diff-sequences@29.6.3: {}
|
||||||
|
|
||||||
diff@4.0.2: {}
|
diff@4.0.2: {}
|
||||||
|
|
@ -19346,8 +19280,6 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
path-type: 4.0.0
|
path-type: 4.0.0
|
||||||
|
|
||||||
dlv@1.1.3: {}
|
|
||||||
|
|
||||||
dns-packet@5.6.1:
|
dns-packet@5.6.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@leichtgewicht/ip-codec': 2.0.5
|
'@leichtgewicht/ip-codec': 2.0.5
|
||||||
|
|
@ -22324,6 +22256,8 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
markdown-it: 12.3.2
|
markdown-it: 12.3.2
|
||||||
|
|
||||||
|
marked@16.4.1: {}
|
||||||
|
|
||||||
marky@1.2.5: {}
|
marky@1.2.5: {}
|
||||||
|
|
||||||
math-intrinsics@1.1.0: {}
|
math-intrinsics@1.1.0: {}
|
||||||
|
|
@ -22905,12 +22839,6 @@ snapshots:
|
||||||
seq-queue: 0.0.5
|
seq-queue: 0.0.5
|
||||||
sqlstring: 2.3.3
|
sqlstring: 2.3.3
|
||||||
|
|
||||||
mz@2.7.0:
|
|
||||||
dependencies:
|
|
||||||
any-promise: 1.3.0
|
|
||||||
object-assign: 4.1.1
|
|
||||||
thenify-all: 1.6.0
|
|
||||||
|
|
||||||
named-placeholders@1.1.3:
|
named-placeholders@1.1.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
lru-cache: 7.18.3
|
lru-cache: 7.18.3
|
||||||
|
|
@ -23047,8 +22975,6 @@ snapshots:
|
||||||
|
|
||||||
object-filter@1.0.2: {}
|
object-filter@1.0.2: {}
|
||||||
|
|
||||||
object-hash@3.0.0: {}
|
|
||||||
|
|
||||||
object-inspect@1.13.4: {}
|
object-inspect@1.13.4: {}
|
||||||
|
|
||||||
object-keys@1.1.1: {}
|
object-keys@1.1.1: {}
|
||||||
|
|
@ -23470,24 +23396,13 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
postcss: 8.5.3
|
postcss: 8.5.3
|
||||||
|
|
||||||
postcss-import@15.1.0(postcss@8.5.3):
|
|
||||||
dependencies:
|
|
||||||
postcss: 8.5.3
|
|
||||||
postcss-value-parser: 4.2.0
|
|
||||||
read-cache: 1.0.0
|
|
||||||
resolve: 1.22.10
|
|
||||||
|
|
||||||
postcss-js@4.0.1(postcss@8.5.3):
|
|
||||||
dependencies:
|
|
||||||
camelcase-css: 2.0.1
|
|
||||||
postcss: 8.5.3
|
|
||||||
|
|
||||||
postcss-load-config@4.0.2(postcss@8.5.3):
|
postcss-load-config@4.0.2(postcss@8.5.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
lilconfig: 3.1.3
|
lilconfig: 3.1.3
|
||||||
yaml: 2.7.0
|
yaml: 2.7.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
postcss: 8.5.3
|
postcss: 8.5.3
|
||||||
|
optional: true
|
||||||
|
|
||||||
postcss-loader@6.2.1(postcss@8.5.3)(webpack@5.98.0):
|
postcss-loader@6.2.1(postcss@8.5.3)(webpack@5.98.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
@ -23558,11 +23473,6 @@ snapshots:
|
||||||
icss-utils: 5.1.0(postcss@8.5.3)
|
icss-utils: 5.1.0(postcss@8.5.3)
|
||||||
postcss: 8.5.3
|
postcss: 8.5.3
|
||||||
|
|
||||||
postcss-nested@6.2.0(postcss@8.5.3):
|
|
||||||
dependencies:
|
|
||||||
postcss: 8.5.3
|
|
||||||
postcss-selector-parser: 6.1.2
|
|
||||||
|
|
||||||
postcss-normalize-charset@6.0.2(postcss@8.5.3):
|
postcss-normalize-charset@6.0.2(postcss@8.5.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
postcss: 8.5.3
|
postcss: 8.5.3
|
||||||
|
|
@ -23929,10 +23839,6 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
loose-envify: 1.4.0
|
loose-envify: 1.4.0
|
||||||
|
|
||||||
read-cache@1.0.0:
|
|
||||||
dependencies:
|
|
||||||
pify: 2.3.0
|
|
||||||
|
|
||||||
read-pkg-up@7.0.1:
|
read-pkg-up@7.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
find-up: 4.1.0
|
find-up: 4.1.0
|
||||||
|
|
@ -24974,16 +24880,6 @@ snapshots:
|
||||||
|
|
||||||
stylis@4.2.0: {}
|
stylis@4.2.0: {}
|
||||||
|
|
||||||
sucrase@3.35.0:
|
|
||||||
dependencies:
|
|
||||||
'@jridgewell/gen-mapping': 0.3.8
|
|
||||||
commander: 4.1.1
|
|
||||||
glob: 10.4.5
|
|
||||||
lines-and-columns: 1.2.4
|
|
||||||
mz: 2.7.0
|
|
||||||
pirates: 4.0.6
|
|
||||||
ts-interface-checker: 0.1.13
|
|
||||||
|
|
||||||
supports-color@5.5.0:
|
supports-color@5.5.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
has-flag: 3.0.0
|
has-flag: 3.0.0
|
||||||
|
|
@ -25121,32 +25017,7 @@ snapshots:
|
||||||
|
|
||||||
tailwind-merge@2.6.0: {}
|
tailwind-merge@2.6.0: {}
|
||||||
|
|
||||||
tailwindcss@3.4.17:
|
tailwindcss@4.1.16: {}
|
||||||
dependencies:
|
|
||||||
'@alloc/quick-lru': 5.2.0
|
|
||||||
arg: 5.0.2
|
|
||||||
chokidar: 3.6.0
|
|
||||||
didyoumean: 1.2.2
|
|
||||||
dlv: 1.1.3
|
|
||||||
fast-glob: 3.3.3
|
|
||||||
glob-parent: 6.0.2
|
|
||||||
is-glob: 4.0.3
|
|
||||||
jiti: 1.21.7
|
|
||||||
lilconfig: 3.1.3
|
|
||||||
micromatch: 4.0.8
|
|
||||||
normalize-path: 3.0.0
|
|
||||||
object-hash: 3.0.0
|
|
||||||
picocolors: 1.1.1
|
|
||||||
postcss: 8.5.3
|
|
||||||
postcss-import: 15.1.0(postcss@8.5.3)
|
|
||||||
postcss-js: 4.0.1(postcss@8.5.3)
|
|
||||||
postcss-load-config: 4.0.2(postcss@8.5.3)
|
|
||||||
postcss-nested: 6.2.0(postcss@8.5.3)
|
|
||||||
postcss-selector-parser: 6.1.2
|
|
||||||
resolve: 1.22.10
|
|
||||||
sucrase: 3.35.0
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- ts-node
|
|
||||||
|
|
||||||
tailwindcss@4.1.4: {}
|
tailwindcss@4.1.4: {}
|
||||||
|
|
||||||
|
|
@ -25230,14 +25101,6 @@ snapshots:
|
||||||
|
|
||||||
text-table@0.2.0: {}
|
text-table@0.2.0: {}
|
||||||
|
|
||||||
thenify-all@1.6.0:
|
|
||||||
dependencies:
|
|
||||||
thenify: 3.3.1
|
|
||||||
|
|
||||||
thenify@3.3.1:
|
|
||||||
dependencies:
|
|
||||||
any-promise: 1.3.0
|
|
||||||
|
|
||||||
third-party-web@0.26.5: {}
|
third-party-web@0.26.5: {}
|
||||||
|
|
||||||
third-party-web@0.27.0: {}
|
third-party-web@0.27.0: {}
|
||||||
|
|
@ -25323,8 +25186,6 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
typescript: 5.8.2
|
typescript: 5.8.2
|
||||||
|
|
||||||
ts-interface-checker@0.1.13: {}
|
|
||||||
|
|
||||||
tsconfig-paths@3.15.0:
|
tsconfig-paths@3.15.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/json5': 0.0.29
|
'@types/json5': 0.0.29
|
||||||
|
|
|
||||||
|
|
@ -17,3 +17,4 @@ onlyBuiltDependencies:
|
||||||
- esbuild
|
- esbuild
|
||||||
- keytar
|
- keytar
|
||||||
- msw
|
- msw
|
||||||
|
- svelte-preprocess
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue