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"
|
||||
- name: Enable Corepack
|
||||
run: corepack enable
|
||||
- name: Install `pandoc`
|
||||
run: sudo apt-get update && sudo apt-get install pandoc -y
|
||||
- uses: cargo-bins/cargo-binstall@main
|
||||
- name: Install `wasm-pack`
|
||||
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
|
||||
- name: Enable Corepack
|
||||
run: corepack enable
|
||||
- name: Install `pandoc`
|
||||
run: sudo apt-get update && sudo apt-get install pandoc -y
|
||||
- name: Rust Cache
|
||||
uses: Swatinem/rust-cache@v2.7.8
|
||||
- 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"
|
||||
- name: Enable Corepack
|
||||
run: corepack enable
|
||||
- name: Install pandoc
|
||||
run: sudo apt-get update && sudo apt-get install pandoc -y
|
||||
- uses: cargo-bins/cargo-binstall@main
|
||||
- name: Install wasm-pack
|
||||
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
|
||||
|
||||
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 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": {
|
||||
"enabled": true,
|
||||
"clientKind": "git",
|
||||
|
|
@ -30,6 +30,11 @@
|
|||
"!**/yarn.lock"
|
||||
]
|
||||
},
|
||||
"css": {
|
||||
"parser": {
|
||||
"tailwindDirectives": true
|
||||
}
|
||||
},
|
||||
"formatter": {
|
||||
"enabled": true,
|
||||
"lineWidth": 100,
|
||||
|
|
@ -94,6 +99,9 @@
|
|||
"includes": ["**/*.svelte", "**/*.astro", "**/*.vue"],
|
||||
"linter": {
|
||||
"rules": {
|
||||
"correctness": {
|
||||
"noUnusedImports": "off"
|
||||
},
|
||||
"style": {
|
||||
"useConst": "off",
|
||||
"useImportType": "off"
|
||||
|
|
|
|||
|
|
@ -29,7 +29,6 @@
|
|||
nodejs
|
||||
wasm-pack
|
||||
zip
|
||||
pandoc
|
||||
wasm-bindgen-cli_0_2_100
|
||||
];
|
||||
|
||||
|
|
|
|||
12
justfile
12
justfile
|
|
@ -177,7 +177,8 @@ test-vscode:
|
|||
mkdir "$bin_dir"
|
||||
fi
|
||||
|
||||
cargo build --release
|
||||
echo Building binaries
|
||||
cargo build --release -q
|
||||
|
||||
cp "{{justfile_directory()}}/target/release/harper-ls"* "$bin_dir"
|
||||
|
||||
|
|
@ -203,7 +204,8 @@ package-vscode target="":
|
|||
cp LICENSE "$ext_dir"
|
||||
|
||||
if [[ -z "{{target}}" ]]; then
|
||||
cargo build --release
|
||||
echo Building binaries
|
||||
cargo build --release -q
|
||||
|
||||
if ! [[ -d "$bin_dir" ]]; then
|
||||
mkdir "$bin_dir"
|
||||
|
|
@ -285,7 +287,8 @@ precommit: check test build-harperjs build-obsidian build-web build-wp build-fir
|
|||
#!/usr/bin/env bash
|
||||
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:
|
||||
|
|
@ -303,7 +306,8 @@ dogfood:
|
|||
done
|
||||
|
||||
test-rust:
|
||||
cargo test
|
||||
echo Running all Rust tests
|
||||
cargo test -q
|
||||
|
||||
# Test everything.
|
||||
test: test-rust test-harperjs test-vscode test-obsidian test-chrome-plugin test-firefox-plugin
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
},
|
||||
"devDependencies": {
|
||||
"@babel/runtime": "catalog:",
|
||||
"@biomejs/biome": "2.0.6",
|
||||
"@biomejs/biome": "2.3.3",
|
||||
"check-dependency-version-consistency": "^5.0.0",
|
||||
"typescript": "catalog:"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -17,12 +17,12 @@
|
|||
},
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
"build": "vite build",
|
||||
"build": "vite build -l warn",
|
||||
"preview": "vite preview",
|
||||
"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-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": {
|
||||
"@crxjs/vite-plugin": "^2.0.0-beta.26",
|
||||
|
|
@ -44,17 +44,17 @@
|
|||
"svelte-preprocess": "^6.0.0",
|
||||
"tslib": "^2.6.2",
|
||||
"typescript": "^5.5.0",
|
||||
"vite": "^5.4.10"
|
||||
"vite": "^5.4.10",
|
||||
"@tailwindcss/vite": "^4.1.4",
|
||||
"tailwindcss": "^4.1.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"@fortawesome/free-solid-svg-icons": "^7.1.0",
|
||||
"@tailwindcss/vite": "^4.1.4",
|
||||
"@webcomponents/custom-elements": "^1.6.0",
|
||||
"harper.js": "workspace:*",
|
||||
"lint-framework": "workspace:*",
|
||||
"lodash-es": "^4.17.21",
|
||||
"lru-cache": "^11.1.0",
|
||||
"svelte-fa": "^4.0.4",
|
||||
"tailwindcss": "^4.1.4"
|
||||
"svelte-fa": "^4.0.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);
|
||||
|
||||
return true;
|
||||
|
|
@ -172,7 +172,7 @@ async function handleLint(req: LintRequest): Promise<LintResponse> {
|
|||
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() };
|
||||
}
|
||||
|
||||
|
|
@ -188,7 +188,7 @@ async function handleSetDialect(req: SetDialectRequest): Promise<UnitResponse> {
|
|||
return createUnitResponse();
|
||||
}
|
||||
|
||||
async function handleGetDialect(req: GetDialectRequest): Promise<GetDialectResponse> {
|
||||
async function handleGetDialect(_req: GetDialectRequest): Promise<GetDialectResponse> {
|
||||
return { kind: 'getDialect', dialect: await getDialect() };
|
||||
}
|
||||
|
||||
|
|
@ -240,7 +240,7 @@ async function handleSetDefaultStatus(req: SetDefaultStatusRequest): Promise<Uni
|
|||
}
|
||||
|
||||
async function handleGetLintDescriptions(
|
||||
req: GetLintDescriptionsRequest,
|
||||
_req: GetLintDescriptionsRequest,
|
||||
): Promise<GetLintDescriptionsResponse> {
|
||||
return { kind: 'getLintDescriptions', descriptions: await linter.getLintDescriptionsHTML() };
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { defineManifest } from '@crxjs/vite-plugin';
|
||||
import packageData from '../package.json';
|
||||
|
||||
//@ts-ignore
|
||||
//@ts-expect-error
|
||||
const isDev = process.env.NODE_ENV == 'development';
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -185,7 +185,7 @@ async function exportEnabledDomainsCSV() {
|
|||
<span class="font-medium">User Dictionary</span>
|
||||
<span class="font-light">Each word should be on its own line.</span>
|
||||
</div>
|
||||
<textarea bind:value={userDict} />
|
||||
<textarea bind:value={userDict} ></textarea>
|
||||
</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://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 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>
|
||||
</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';
|
||||
|
||||
export type Request =
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
import { test } from './fixtures';
|
||||
import {
|
||||
assertHarperHighlightBoxes,
|
||||
clickHarperHighlight,
|
||||
getHarperHighlights,
|
||||
getTextarea,
|
||||
replaceEditorContent,
|
||||
testBasicSuggestionTextarea,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
import { expect, test } from '@playwright/test';
|
||||
import { test } from '@playwright/test';
|
||||
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
|
||||
const colorBoxes = LINT_KINDS.map((kind) => {
|
||||
const color = lintKindColor(kind);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import { assertHarperHighlightBoxes } from './testUtils';
|
|||
|
||||
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.waitForTimeout(6000);
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ export function getTextarea(page: Page): Locator {
|
|||
}
|
||||
|
||||
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.waitForTimeout(2000);
|
||||
|
|
|
|||
|
|
@ -19,34 +19,17 @@ if [[ -d "$harperjs_docs_dir" ]]; then
|
|||
fi
|
||||
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..."
|
||||
if command -v parallel &> /dev/null; then
|
||||
parallel '
|
||||
base=$(basename {} .md)
|
||||
pandoc -s \
|
||||
-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" {}
|
||||
node renderPage.js "${base#"harper.js."} - Harper" "API reference documentation for harper.js" {} "html/${base}.html"
|
||||
' ::: ./markdown/*.md
|
||||
else
|
||||
echo "parallel not found, falling back to sequential processing"
|
||||
for file in ./markdown/*.md; do
|
||||
base=$(basename "$file" .md)
|
||||
pandoc -s \
|
||||
-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"
|
||||
node renderPage.js "${base#"harper.js."} - Harper" "API reference documentation for harper.js" {} "html/${base}.html"
|
||||
done
|
||||
fi
|
||||
mv -f "$html_dir" "${harperjs_docs_dir}/ref"
|
||||
|
|
|
|||
|
|
@ -6,28 +6,28 @@
|
|||
<script type="module">
|
||||
// We can import `harper.js` using native ECMAScript syntax.
|
||||
// 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.
|
||||
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.
|
||||
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
|
||||
list.innerHTML = '';
|
||||
|
||||
for (let lint of lints) {
|
||||
let item = document.createElement('LI');
|
||||
var text = document.createTextNode(lint.message());
|
||||
for (const lint of lints) {
|
||||
const item = document.createElement('LI');
|
||||
const text = document.createTextNode(lint.message());
|
||||
item.appendChild(text);
|
||||
list.appendChild(item);
|
||||
}
|
||||
}
|
||||
|
||||
let inputField = document.getElementById('maininput');
|
||||
const inputField = document.getElementById('maininput');
|
||||
inputField.addEventListener('input', onInput);
|
||||
onInput({target: inputField});
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
"build": "tsc && vite build",
|
||||
"build": "tsc && vite build -l warn",
|
||||
"test": "vitest run",
|
||||
"test:debug": "vitest run --browser.headless false --testTimeout 0",
|
||||
"api:extractor": "api-extractor run",
|
||||
|
|
@ -26,16 +26,17 @@
|
|||
"@microsoft/api-documenter": "^7.26.10",
|
||||
"@microsoft/api-extractor": "^7.50.1",
|
||||
"@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",
|
||||
"type-fest": "^4.37.0",
|
||||
"typescript": "catalog:",
|
||||
"vite": "^6.1.0",
|
||||
"vite-plugin-dts": "^4.5.0",
|
||||
"vite-plugin-virtual": "^0.3.0",
|
||||
"vitest": "^3.0.5",
|
||||
"harper-wasm": "workspace:*",
|
||||
"type-fest": "^4.37.0",
|
||||
"p-memoize": "^7.1.1",
|
||||
"p-lazy": "^5.0.0"
|
||||
"vitest": "^3.0.5"
|
||||
},
|
||||
"main": "dist/harper.js",
|
||||
"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"
|
||||
],
|
||||
"scripts": {
|
||||
"build": "tsc && vite build",
|
||||
"build": "tsc && vite build -l warn",
|
||||
"dev": "vite",
|
||||
"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) {
|
||||
this.onClose = onClose;
|
||||
};
|
||||
|
|
@ -179,7 +178,7 @@ function suggestions(
|
|||
): any {
|
||||
return suggestions.map((s: UnpackedSuggestion, i: number) => {
|
||||
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() } : {};
|
||||
return button(label, { background: '#2DA44E', color: '#FFFFFF' }, () => apply(s), desc, props);
|
||||
});
|
||||
|
|
@ -224,7 +223,7 @@ function styleTag() {
|
|||
display:flex;
|
||||
flex-direction:column;
|
||||
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
|
||||
}
|
||||
.harper-header{
|
||||
|
|
|
|||
|
|
@ -48,7 +48,9 @@ export function leafNodes(node: Node): Node[] {
|
|||
|
||||
for (const child of children) {
|
||||
const sub = leafNodes(child);
|
||||
sub.forEach((v) => out.push(v));
|
||||
sub.forEach((v) => {
|
||||
out.push(v);
|
||||
});
|
||||
}
|
||||
|
||||
return out;
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
"vitest": "^3.0.8"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "vite build",
|
||||
"build": "vite build -l warn",
|
||||
"dev": "vite build --watch",
|
||||
"test": "vitest run"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ export class HarperSettingTab extends PluginSettingTab {
|
|||
.addOption(Dialect.Australian.toString(), 'Australian')
|
||||
.setValue((this.settings.dialect ?? Dialect.American).toString())
|
||||
.onChange(async (value) => {
|
||||
const dialect = Number.parseInt(value);
|
||||
const dialect = Number.parseInt(value, 10);
|
||||
this.settings.dialect = dialect;
|
||||
await this.state.initializeFromSettings(this.settings);
|
||||
this.plugin.updateStatusBar(dialect);
|
||||
|
|
@ -90,7 +90,7 @@ export class HarperSettingTab extends PluginSettingTab {
|
|||
.setName('Activate Harper')
|
||||
.setDesc('Enable or disable Harper with this option.')
|
||||
.addToggle((toggle) =>
|
||||
toggle.setValue(this.settings.lintEnabled).onChange(async (value) => {
|
||||
toggle.setValue(this.settings.lintEnabled).onChange(async (_value) => {
|
||||
this.state.toggleAutoLint();
|
||||
this.plugin.updateStatusBar();
|
||||
}),
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ export default class State {
|
|||
constructor(
|
||||
saveDataCallback: (data: any) => Promise<void>,
|
||||
onExtensionChange: () => void,
|
||||
editorViewField?: StateField<MarkdownFileInfo>,
|
||||
_editorViewField?: StateField<MarkdownFileInfo>,
|
||||
) {
|
||||
this.harper = new WorkerLinter({ binary: binaryInlined });
|
||||
this.delay = DEFAULT_DELAY;
|
||||
|
|
@ -115,12 +115,15 @@ export default class State {
|
|||
if (this.editorViewField != null) {
|
||||
const mdView = view.state.field(this.editorViewField) as MarkdownView;
|
||||
const file = mdView?.file;
|
||||
const path = file?.path!;
|
||||
|
||||
if (path != null) {
|
||||
for (const glob of ignoredGlobs) {
|
||||
if (minimatch(path, glob)) {
|
||||
return [];
|
||||
if (file != null) {
|
||||
const path = file.path;
|
||||
|
||||
if (path != null) {
|
||||
for (const glob of ignoredGlobs) {
|
||||
if (minimatch(path, glob)) {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -177,7 +180,7 @@ export default class State {
|
|||
actions.push({
|
||||
name: '📖',
|
||||
title: `Add “${word}” to your dictionary`,
|
||||
apply: (view) => {
|
||||
apply: (_view) => {
|
||||
this.harper.importWords([word]);
|
||||
this.reinitialize();
|
||||
},
|
||||
|
|
@ -189,7 +192,7 @@ export default class State {
|
|||
to: span.end,
|
||||
severity: 'error',
|
||||
title: lint.lint_kind_pretty(),
|
||||
renderMessage: (view) => {
|
||||
renderMessage: (_view) => {
|
||||
const node = document.createElement('template');
|
||||
node.innerHTML = lint.message_html();
|
||||
return node.content;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
import { binary, LocalLinter } from 'harper.js';
|
||||
import { describe, expect, test } from 'vitest';
|
||||
import { expect, test } from 'vitest';
|
||||
import { linesToString, stringToLines } from './textUtils';
|
||||
|
||||
test('Dictionary values are reversible', () => {
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "vite dev",
|
||||
"build": "vite build",
|
||||
"build": "vite build -l warn",
|
||||
"preview": "vite preview",
|
||||
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
||||
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
|
||||
|
|
@ -19,10 +19,10 @@
|
|||
"drizzle-kit": "^0.31.5",
|
||||
"flowbite": "^3.1.2",
|
||||
"flowbite-svelte": "^0.44.18",
|
||||
"postcss": "^8.4.31",
|
||||
"svelte": "^5.15.0",
|
||||
"svelte-check": "^4.1.5",
|
||||
"tailwindcss": "^3.3.3",
|
||||
"tailwindcss": "^4.1.16",
|
||||
"@tailwindcss/vite": "^4.1.4",
|
||||
"tslib": "catalog:",
|
||||
"tsx": "^4.20.6",
|
||||
"typescript": "catalog:",
|
||||
|
|
|
|||
|
|
@ -1,6 +0,0 @@
|
|||
export default {
|
||||
plugins: {
|
||||
tailwindcss: {},
|
||||
autoprefixer: {},
|
||||
},
|
||||
};
|
||||
|
|
@ -1,6 +1,4 @@
|
|||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
@import "tailwindcss";
|
||||
|
||||
@layer base {
|
||||
body {
|
||||
|
|
@ -51,12 +49,12 @@
|
|||
}
|
||||
|
||||
code {
|
||||
font-family: "JetBrains Mono", monospace !important;
|
||||
font-family: "JetBrains Mono", monospace;
|
||||
word-break: keep-all;
|
||||
}
|
||||
|
||||
code * {
|
||||
font-family: "JetBrains Mono", monospace !important;
|
||||
font-family: "JetBrains Mono", monospace;
|
||||
}
|
||||
|
||||
.underlinespecial {
|
||||
|
|
@ -80,7 +78,7 @@ code * {
|
|||
}
|
||||
|
||||
textarea {
|
||||
--tw-ring-shadow: 0 0 #000 !important;
|
||||
--tw-ring-shadow: 0 0 #000;
|
||||
}
|
||||
|
||||
.animate-bigbounce {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { db } from '$lib/db';
|
||||
import { migrate } from 'drizzle-orm/mysql2/migrator';
|
||||
import { db } from '$lib/db';
|
||||
|
||||
// Migrate exactly once at startup
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
<script lang="ts">
|
||||
import LintCard from '$lib/components/LintCard.svelte';
|
||||
import { Card } from 'flowbite-svelte';
|
||||
import { type WorkerLinter } from 'harper.js';
|
||||
import {
|
||||
|
|
@ -10,6 +9,7 @@ import {
|
|||
type UnpackedSuggestion,
|
||||
unpackLint,
|
||||
} from 'lint-framework';
|
||||
import LintCard from '$lib/components/LintCard.svelte';
|
||||
import demo from '../../../../../demo.md?raw';
|
||||
|
||||
export let content = demo.trim();
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ for (let [key, val] of data.entries()) {
|
|||
|
||||
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 {
|
||||
duration,
|
||||
css: (t: number) => {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<script lang="ts">
|
||||
import lintKindColor from '$lib/lintKindColor';
|
||||
import Chart from 'chart.js/auto';
|
||||
import { onMount } from 'svelte';
|
||||
import lintKindColor from '$lib/lintKindColor';
|
||||
|
||||
// Receive lint counts from the parent component
|
||||
export let lintCounts: Record<string, number> = {};
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
<script lang="ts">
|
||||
import '../app.css';
|
||||
|
||||
import posthog from 'posthog-js';
|
||||
import { onMount } from 'svelte';
|
||||
import { browser } from '$app/environment';
|
||||
import AutomatticLogo from '$lib/components/AutomatticLogo.svelte';
|
||||
import GutterCenter from '$lib/components/GutterCenter.svelte';
|
||||
import posthog from 'posthog-js';
|
||||
import { onMount } from 'svelte';
|
||||
|
||||
onMount(() => {
|
||||
if (browser) {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import ProblematicLints from '$lib/db/models/ProblematicLints';
|
||||
import { type RequestEvent, redirect } from '@sveltejs/kit';
|
||||
import ProblematicLints from '$lib/db/models/ProblematicLints';
|
||||
|
||||
export const POST = async ({ request }: RequestEvent) => {
|
||||
const data = await request.formData();
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import UninstallFeedback from '$lib/db/models/UninstallFeedback';
|
||||
import { type RequestEvent, redirect } from '@sveltejs/kit';
|
||||
import UninstallFeedback from '$lib/db/models/UninstallFeedback';
|
||||
|
||||
export const POST = async ({ request }: RequestEvent) => {
|
||||
const data = await request.formData();
|
||||
|
|
|
|||
|
|
@ -2,7 +2,13 @@
|
|||
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.
|
||||
|
||||
- [`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`
|
||||
- [`wasm-pack`](https://drager.github.io/wasm-pack/installer/)
|
||||
- `zip`
|
||||
- `pandoc`
|
||||
- [`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`.
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<script lang="ts">
|
||||
import 'reveal.js/dist/reveal.css';
|
||||
import 'reveal.js/dist/theme/serif.css';
|
||||
import Logo from '$lib/components/Logo.svelte';
|
||||
import Reveal from 'reveal.js';
|
||||
import { onMount } from 'svelte';
|
||||
import Logo from '$lib/components/Logo.svelte';
|
||||
|
||||
onMount(() => {
|
||||
let deck = new Reveal();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<script lang="ts">
|
||||
import Isolate from '$lib/components/Isolate.svelte';
|
||||
import { Button, Card, Checkbox, Input, Label, Radio } from 'flowbite-svelte';
|
||||
import Isolate from '$lib/components/Isolate.svelte';
|
||||
</script>
|
||||
|
||||
<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="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>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
<script lang="ts">
|
||||
import LintKindChart from '$lib/components/LintKindChart.svelte';
|
||||
import {
|
||||
Fileupload,
|
||||
Table,
|
||||
|
|
@ -10,6 +9,7 @@ import {
|
|||
TableHeadCell,
|
||||
} from 'flowbite-svelte';
|
||||
import { binary, type Summary, WorkerLinter } from 'harper.js';
|
||||
import LintKindChart from '$lib/components/LintKindChart.svelte';
|
||||
|
||||
let linter = new WorkerLinter({ binary: binary });
|
||||
let files = $state<FileList | undefined>();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<script lang="ts">
|
||||
import Isolate from '$lib/components/Isolate.svelte';
|
||||
import { Button, Card, Input, Label, Radio } from 'flowbite-svelte';
|
||||
import Isolate from '$lib/components/Isolate.svelte';
|
||||
|
||||
const reasons = {
|
||||
confused: 'I was confused by how it worked',
|
||||
|
|
|
|||
|
|
@ -1,239 +1,247 @@
|
|||
import { defaultTheme } from '@sveltepress/theme-default';
|
||||
import { sveltepress } from '@sveltepress/vite';
|
||||
import tailwindcss from '@tailwindcss/vite';
|
||||
import { defineConfig } from 'vite';
|
||||
import topLevelAwait from 'vite-plugin-top-level-await';
|
||||
import wasm from 'vite-plugin-wasm';
|
||||
|
||||
const prod = process.env.APP_ENV === 'production';
|
||||
|
||||
export default defineConfig({
|
||||
ssr: {
|
||||
noExternal: prod ? ['mysql2', 'drizzle-orm', 'posthog-js', 'drizzle-zod', 'zod'] : [],
|
||||
},
|
||||
server: {
|
||||
port: 3000,
|
||||
fs: {
|
||||
allow: ['../harper.js/dist'],
|
||||
export default defineConfig(async () => {
|
||||
const [{ defaultTheme }, { sveltepress }] = await Promise.all([
|
||||
import('@sveltepress/theme-default'),
|
||||
import('@sveltepress/vite'),
|
||||
]);
|
||||
|
||||
return {
|
||||
ssr: {
|
||||
noExternal: prod ? ['mysql2', 'drizzle-orm', 'posthog-js', 'drizzle-zod', 'zod'] : [],
|
||||
},
|
||||
},
|
||||
plugins: [
|
||||
sveltepress({
|
||||
siteConfig: {
|
||||
title: 'Harper',
|
||||
description: 'A Grammar Checker from Automattic',
|
||||
server: {
|
||||
port: 3000,
|
||||
fs: {
|
||||
allow: ['../harper.js/dist'],
|
||||
},
|
||||
theme: defaultTheme({
|
||||
editLink: 'https://github.com/automattic/harper/edit/master/packages/web/src/routes/:route',
|
||||
logo: '/circle-logo.png',
|
||||
github: 'https://github.com/automattic/harper',
|
||||
discord: 'https://discord.gg/invite/JBqcAaKrzQ',
|
||||
themeColor: {
|
||||
primary: '#818eae',
|
||||
dark: '#355280',
|
||||
gradient: {
|
||||
start: '#355280',
|
||||
end: '#818eae',
|
||||
},
|
||||
},
|
||||
plugins: [
|
||||
sveltepress({
|
||||
siteConfig: {
|
||||
title: 'Harper',
|
||||
description: 'A Grammar Checker from Automattic',
|
||||
},
|
||||
navbar: [
|
||||
{ title: 'Documentation', to: '/docs/about' },
|
||||
{
|
||||
title: 'Visual Studio Code',
|
||||
to: 'https://marketplace.visualstudio.com/items?itemName=elijah-potter.harper',
|
||||
theme: defaultTheme({
|
||||
editLink:
|
||||
'https://github.com/automattic/harper/edit/master/packages/web/src/routes/:route',
|
||||
logo: '/circle-logo.png',
|
||||
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' },
|
||||
{
|
||||
title: 'Chrome Extension',
|
||||
to: 'https://chromewebstore.google.com/detail/private-grammar-checking/lodbfhdipoipcjmlebjbgmmgekckhpfb',
|
||||
},
|
||||
],
|
||||
sidebar: {
|
||||
'/docs/': [
|
||||
navbar: [
|
||||
{ title: 'Documentation', to: '/docs/about' },
|
||||
{
|
||||
items: [
|
||||
{
|
||||
title: 'About',
|
||||
to: '/docs/about',
|
||||
},
|
||||
],
|
||||
title: 'Visual Studio Code',
|
||||
to: 'https://marketplace.visualstudio.com/items?itemName=elijah-potter.harper',
|
||||
},
|
||||
{ title: 'Obsidian', to: '/docs/integrations/obsidian' },
|
||||
{
|
||||
title: 'Integrations',
|
||||
items: [
|
||||
{
|
||||
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',
|
||||
title: 'Chrome Extension',
|
||||
to: 'https://chromewebstore.google.com/detail/private-grammar-checking/lodbfhdipoipcjmlebjbgmmgekckhpfb',
|
||||
},
|
||||
],
|
||||
},
|
||||
highlighter: {
|
||||
languages: [
|
||||
'svelte',
|
||||
'sh',
|
||||
'js',
|
||||
'html',
|
||||
'ts',
|
||||
'md',
|
||||
'css',
|
||||
'scss',
|
||||
'toml',
|
||||
'rust',
|
||||
'lua',
|
||||
'json',
|
||||
'elisp',
|
||||
],
|
||||
},
|
||||
sidebar: {
|
||||
'/docs/': [
|
||||
{
|
||||
items: [
|
||||
{
|
||||
title: 'About',
|
||||
to: '/docs/about',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Integrations',
|
||||
items: [
|
||||
{
|
||||
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',
|
||||
},
|
||||
],
|
||||
},
|
||||
highlighter: {
|
||||
languages: [
|
||||
'svelte',
|
||||
'sh',
|
||||
'js',
|
||||
'html',
|
||||
'ts',
|
||||
'md',
|
||||
'css',
|
||||
'scss',
|
||||
'toml',
|
||||
'rust',
|
||||
'lua',
|
||||
'json',
|
||||
'elisp',
|
||||
],
|
||||
},
|
||||
}),
|
||||
}),
|
||||
}),
|
||||
wasm(),
|
||||
topLevelAwait(),
|
||||
],
|
||||
wasm(),
|
||||
topLevelAwait(),
|
||||
tailwindcss(),
|
||||
],
|
||||
};
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
import { SelectControl } from '@wordpress/components';
|
||||
import { Dialect } from 'harper.js';
|
||||
import React from 'react';
|
||||
import useDialect from './useDialect';
|
||||
|
||||
export default function DialectSelectRow() {
|
||||
|
|
@ -31,7 +30,7 @@ export default function DialectSelectRow() {
|
|||
value: Dialect.British.toString(),
|
||||
},
|
||||
]}
|
||||
onChange={(value) => setDialect(Number.parseInt(value))}
|
||||
onChange={(value) => setDialect(Number.parseInt(value, 10))}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useEffect } from 'react';
|
||||
import { useEffect } from 'react';
|
||||
import type { LintBox } from './Box';
|
||||
import type RichText from './RichText';
|
||||
import SuggestionControl from './SuggestionControl';
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
import { Animate, Spinner } from '@wordpress/components';
|
||||
import React from 'react';
|
||||
import type { IgnorableLintBox } from './Box';
|
||||
import LintListItem from './LintListItem';
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
import { Button, Card, CardBody } from '@wordpress/components';
|
||||
import React from 'react';
|
||||
import type { IgnorableLintBox } from './Box';
|
||||
import { suggestionText } from './lintUtils';
|
||||
import { useAddToDictionary } from './usePersonalDictionary';
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { SearchControl } from '@wordpress/components';
|
||||
import React, { useState } from 'react';
|
||||
import { useState } from 'react';
|
||||
import { useLintDescriptions } from './LinterProvider';
|
||||
import LintSettingRow from './LintSettingRow';
|
||||
import useLintConfig, { useDefaultLintConfig } from './useLintConfig';
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { Animate, CheckboxControl } from '@wordpress/components';
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import { useEffect, useState } from 'react';
|
||||
import { useLinter } from './LinterProvider';
|
||||
|
||||
export default function LintSettingRow({
|
||||
|
|
|
|||
|
|
@ -1,12 +1,5 @@
|
|||
import { binaryInlined, type Linter, WorkerLinter } from 'harper.js';
|
||||
import React, {
|
||||
createContext,
|
||||
type ReactNode,
|
||||
useContext,
|
||||
useEffect,
|
||||
useRef,
|
||||
useState,
|
||||
} from 'react';
|
||||
import { createContext, type ReactNode, useContext, useEffect, useRef, useState } from 'react';
|
||||
|
||||
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 DataBlock from './DataBlock';
|
||||
import Highlighter from './Highlighter';
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
import { Panel, PanelBody, SelectControl, TabPanel } from '@wordpress/components';
|
||||
import React from 'react';
|
||||
import { Panel, PanelBody, TabPanel } from '@wordpress/components';
|
||||
import type { IgnorableLintBox } from './Box';
|
||||
import DialectSelectRow from './DialectSelectRow';
|
||||
import LintList from './LintList';
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
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 { suggestionText } from './lintUtils';
|
||||
import { useAddToDictionary } from './usePersonalDictionary';
|
||||
|
|
|
|||
|
|
@ -48,7 +48,9 @@ export function leafNodes(node: Node): Node[] {
|
|||
|
||||
for (const child of children) {
|
||||
const sub = leafNodes(child);
|
||||
sub.forEach((v) => out.push(v));
|
||||
sub.forEach((v) => {
|
||||
out.push(v);
|
||||
});
|
||||
}
|
||||
|
||||
return out;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ import { registerPlugin } from '@wordpress/plugins';
|
|||
import Logo from './Logo';
|
||||
import SidebarControl from './SidebarControl';
|
||||
import './index.css';
|
||||
import React from 'react';
|
||||
import LinterProvider from './LinterProvider';
|
||||
|
||||
function Sidebar() {
|
||||
|
|
@ -21,9 +20,9 @@ function Sidebar() {
|
|||
);
|
||||
}
|
||||
|
||||
// @ts-ignore
|
||||
// @ts-expect-error
|
||||
if (!window.__harperSidebarRegistered) {
|
||||
registerPlugin('harper-sidebar', { render: Sidebar });
|
||||
// @ts-ignore
|
||||
// @ts-expect-error
|
||||
window.__harperSidebarRegistered = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import type { Lint } from 'harper.js';
|
||||
import { useCallback, useEffect, useState } from 'react';
|
||||
import { type IgnorableLintBox, LintBox } from './Box';
|
||||
import type { IgnorableLintBox } from './Box';
|
||||
import { useLinter } from './LinterProvider';
|
||||
import type RichText from './RichText';
|
||||
import useDialect from './useDialect';
|
||||
|
|
@ -73,7 +73,9 @@ export default function useLintBoxes(richTexts: RichText[]): [IgnorableLintBox[]
|
|||
});
|
||||
|
||||
return () => {
|
||||
observers.forEach((observer) => observer.disconnect());
|
||||
observers.forEach((observer) => {
|
||||
observer.disconnect();
|
||||
});
|
||||
};
|
||||
}, [richTexts, updateLints]);
|
||||
|
||||
|
|
|
|||
277
pnpm-lock.yaml
generated
277
pnpm-lock.yaml
generated
|
|
@ -27,8 +27,8 @@ importers:
|
|||
specifier: 'catalog:'
|
||||
version: 7.26.10
|
||||
'@biomejs/biome':
|
||||
specifier: 2.0.6
|
||||
version: 2.0.6
|
||||
specifier: 2.3.3
|
||||
version: 2.3.3
|
||||
check-dependency-version-consistency:
|
||||
specifier: ^5.0.0
|
||||
version: 5.0.0
|
||||
|
|
@ -43,9 +43,6 @@ importers:
|
|||
'@fortawesome/free-solid-svg-icons':
|
||||
specifier: ^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':
|
||||
specifier: ^1.6.0
|
||||
version: 1.6.0
|
||||
|
|
@ -64,9 +61,6 @@ importers:
|
|||
svelte-fa:
|
||||
specifier: ^4.0.4
|
||||
version: 4.0.4(svelte@5.21.0)
|
||||
tailwindcss:
|
||||
specifier: ^4.1.4
|
||||
version: 4.1.4
|
||||
devDependencies:
|
||||
'@crxjs/vite-plugin':
|
||||
specifier: ^2.0.0-beta.26
|
||||
|
|
@ -77,6 +71,9 @@ importers:
|
|||
'@sveltejs/vite-plugin-svelte':
|
||||
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))
|
||||
'@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':
|
||||
specifier: ^0.0.246
|
||||
version: 0.0.246
|
||||
|
|
@ -119,6 +116,9 @@ importers:
|
|||
svelte-preprocess:
|
||||
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)
|
||||
tailwindcss:
|
||||
specifier: ^4.1.4
|
||||
version: 4.1.16
|
||||
tslib:
|
||||
specifier: ^2.6.2
|
||||
version: 2.8.1
|
||||
|
|
@ -143,6 +143,9 @@ importers:
|
|||
harper-wasm:
|
||||
specifier: workspace:*
|
||||
version: link:../../harper-wasm/pkg
|
||||
marked:
|
||||
specifier: ^16.4.1
|
||||
version: 16.4.1
|
||||
p-lazy:
|
||||
specifier: ^5.0.0
|
||||
version: 5.0.0
|
||||
|
|
@ -369,6 +372,9 @@ importers:
|
|||
'@sveltejs/vite-plugin-svelte':
|
||||
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))
|
||||
'@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':
|
||||
specifier: ^5.0.3
|
||||
version: 5.0.5
|
||||
|
|
@ -384,9 +390,6 @@ importers:
|
|||
flowbite-svelte:
|
||||
specifier: ^0.44.18
|
||||
version: 0.44.24(rollup@4.35.0)(svelte@5.21.0)
|
||||
postcss:
|
||||
specifier: ^8.4.31
|
||||
version: 8.5.3
|
||||
svelte:
|
||||
specifier: ^5.15.0
|
||||
version: 5.21.0
|
||||
|
|
@ -394,8 +397,8 @@ importers:
|
|||
specifier: ^4.1.5
|
||||
version: 4.1.5(picomatch@4.0.2)(svelte@5.21.0)(typescript@5.8.2)
|
||||
tailwindcss:
|
||||
specifier: ^3.3.3
|
||||
version: 3.4.17
|
||||
specifier: ^4.1.16
|
||||
version: 4.1.16
|
||||
tslib:
|
||||
specifier: 'catalog:'
|
||||
version: 2.8.1
|
||||
|
|
@ -529,10 +532,6 @@ packages:
|
|||
resolution: {integrity: sha512-WqU0VumUILrIeVYCTGZlyyZoC/tbvhiyPxfGRRO1cSjxN558bnJLlR2BvS0SJ5b75dRNK7HDvtXo2QoP9eLfiA==}
|
||||
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':
|
||||
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
|
|
@ -1281,55 +1280,55 @@ packages:
|
|||
'@bcoe/v8-coverage@0.2.3':
|
||||
resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
|
||||
|
||||
'@biomejs/biome@2.0.6':
|
||||
resolution: {integrity: sha512-RRP+9cdh5qwe2t0gORwXaa27oTOiQRQvrFf49x2PA1tnpsyU7FIHX4ZOFMtBC4QNtyWsN7Dqkf5EDbg4X+9iqA==}
|
||||
'@biomejs/biome@2.3.3':
|
||||
resolution: {integrity: sha512-zn/P1pRBCpDdhi+VNSMnpczOz9DnqzOA2c48K8xgxjDODvi5O8gs3a2H233rck/5HXpkFj6TmyoqVvxirZUnvg==}
|
||||
engines: {node: '>=14.21.3'}
|
||||
hasBin: true
|
||||
|
||||
'@biomejs/cli-darwin-arm64@2.0.6':
|
||||
resolution: {integrity: sha512-AzdiNNjNzsE6LfqWyBvcL29uWoIuZUkndu+wwlXW13EKcBHbbKjNQEZIJKYDc6IL+p7bmWGx3v9ZtcRyIoIz5A==}
|
||||
'@biomejs/cli-darwin-arm64@2.3.3':
|
||||
resolution: {integrity: sha512-5+JtW6RKmjqL9un0UtHV0ezOslAyYBzyl5ZhYiu7GHesX2x8NCDl6tXYrenv9m7e1RLbkO5E5Kh04kseMtz6lw==}
|
||||
engines: {node: '>=14.21.3'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@biomejs/cli-darwin-x64@2.0.6':
|
||||
resolution: {integrity: sha512-wJjjP4E7bO4WJmiQaLnsdXMa516dbtC6542qeRkyJg0MqMXP0fvs4gdsHhZ7p9XWTAmGIjZHFKXdsjBvKGIJJQ==}
|
||||
'@biomejs/cli-darwin-x64@2.3.3':
|
||||
resolution: {integrity: sha512-UPmKRalkHicvIpeccuKqq+/gA2HYV8FUnAEDJnqYBlGlycKqe6xrovWqvWTE4TTNpIFf4UQyuaDzLkN6Kz6tbA==}
|
||||
engines: {node: '>=14.21.3'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@biomejs/cli-linux-arm64-musl@2.0.6':
|
||||
resolution: {integrity: sha512-CVPEMlin3bW49sBqLBg2x016Pws7eUXA27XYDFlEtponD0luYjg2zQaMJ2nOqlkKG9fqzzkamdYxHdMDc2gZFw==}
|
||||
'@biomejs/cli-linux-arm64-musl@2.3.3':
|
||||
resolution: {integrity: sha512-KhCDMV+V7Yu72v40ssGJTHuv/j0n7JQ6l0s/c+EMcX5zPYLMLr4XpmI+WXhp4Vfkz0T5Xnh5wbrTBI3f2UTpjQ==}
|
||||
engines: {node: '>=14.21.3'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@biomejs/cli-linux-arm64@2.0.6':
|
||||
resolution: {integrity: sha512-ZSVf6TYo5rNMUHIW1tww+rs/krol7U5A1Is/yzWyHVZguuB0lBnIodqyFuwCNqG9aJGyk7xIMS8HG0qGUPz0SA==}
|
||||
'@biomejs/cli-linux-arm64@2.3.3':
|
||||
resolution: {integrity: sha512-zeiKwALNB/hax7+LLhCYqhqzlWdTfgE9BGkX2Z8S4VmCYnGFrf2fON/ec6KCos7mra5MDm6fYICsEWN2+HKZhw==}
|
||||
engines: {node: '>=14.21.3'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@biomejs/cli-linux-x64-musl@2.0.6':
|
||||
resolution: {integrity: sha512-mKHE/e954hR/hSnAcJSjkf4xGqZc/53Kh39HVW1EgO5iFi0JutTN07TSjEMg616julRtfSNJi0KNyxvc30Y4rQ==}
|
||||
'@biomejs/cli-linux-x64-musl@2.3.3':
|
||||
resolution: {integrity: sha512-IyqQ+jYzU5MVy9CK5NV0U+NnUMPUAhYMrB/x4QgL/Dl1MqzBVc61bHeyhLnKM6DSEk73/TQYrk/8/QmVHudLdQ==}
|
||||
engines: {node: '>=14.21.3'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@biomejs/cli-linux-x64@2.0.6':
|
||||
resolution: {integrity: sha512-geM1MkHTV1Kh2Cs/Xzot9BOF3WBacihw6bkEmxkz4nSga8B9/hWy5BDiOG3gHDGIBa8WxT0nzsJs2f/hPqQIQw==}
|
||||
'@biomejs/cli-linux-x64@2.3.3':
|
||||
resolution: {integrity: sha512-05CjPLbvVVU8J6eaO6iSEoA0FXKy2l6ddL+1h/VpiosCmIp3HxRKLOa1hhC1n+D13Z8g9b1DtnglGtM5U3sTag==}
|
||||
engines: {node: '>=14.21.3'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@biomejs/cli-win32-arm64@2.0.6':
|
||||
resolution: {integrity: sha512-290V4oSFoKaprKE1zkYVsDfAdn0An5DowZ+GIABgjoq1ndhvNxkJcpxPsiYtT7slbVe3xmlT0ncdfOsN7KruzA==}
|
||||
'@biomejs/cli-win32-arm64@2.3.3':
|
||||
resolution: {integrity: sha512-NtlLs3pdFqFAQYZjlEHKOwJEn3GEaz7rtR2oCrzaLT2Xt3Cfd55/VvodQ5V+X+KepLa956QJagckJrNL+DmumQ==}
|
||||
engines: {node: '>=14.21.3'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
'@biomejs/cli-win32-x64@2.0.6':
|
||||
resolution: {integrity: sha512-bfM1Bce0d69Ao7pjTjUS+AWSZ02+5UHdiAP85Th8e9yV5xzw6JrHXbL5YWlcEKQ84FIZMdDc7ncuti1wd2sdbw==}
|
||||
'@biomejs/cli-win32-x64@2.3.3':
|
||||
resolution: {integrity: sha512-klJKPPQvUk9Rlp0Dd56gQw/+Wt6uUprHdHWtbDC93f3Iv+knA2tLWpcYoOZJgPV+9s+RBmYv0DGy4mUlr20esg==}
|
||||
engines: {node: '>=14.21.3'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
|
@ -4832,9 +4831,6 @@ packages:
|
|||
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
any-promise@1.3.0:
|
||||
resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
|
||||
|
||||
anymatch@3.1.3:
|
||||
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
|
||||
engines: {node: '>= 8'}
|
||||
|
|
@ -4846,9 +4842,6 @@ packages:
|
|||
resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==}
|
||||
engines: {node: '>=14'}
|
||||
|
||||
arg@5.0.2:
|
||||
resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
|
||||
|
||||
argparse@1.0.10:
|
||||
resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
|
||||
|
||||
|
|
@ -5249,10 +5242,6 @@ packages:
|
|||
camel-case@4.1.2:
|
||||
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:
|
||||
resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==}
|
||||
engines: {node: '>=8'}
|
||||
|
|
@ -5497,10 +5486,6 @@ packages:
|
|||
commander@2.20.3:
|
||||
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:
|
||||
resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
|
||||
engines: {node: '>= 10'}
|
||||
|
|
@ -5962,9 +5947,6 @@ packages:
|
|||
devtools-protocol@0.0.1423531:
|
||||
resolution: {integrity: sha512-z6cOcajZWxk80zvFnkTGa7tj3oqF+C5SnOF1KSMeAr5/WW/nLNHlEpKr7voSzMz8IaUoq5rjdI0Mqv5k/BUkhg==}
|
||||
|
||||
didyoumean@1.2.2:
|
||||
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
|
||||
|
||||
diff-sequences@29.6.3:
|
||||
resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
|
|
@ -5977,9 +5959,6 @@ packages:
|
|||
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
dlv@1.1.3:
|
||||
resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
|
||||
|
||||
dns-packet@5.6.1:
|
||||
resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==}
|
||||
engines: {node: '>=6'}
|
||||
|
|
@ -8440,6 +8419,11 @@ packages:
|
|||
resolution: {integrity: sha512-AG7UkLzNa1fxiOv5B+owPsPhtM4D6DoODhsJgiaNg1xowXovrYgOnLqAgOOFQpWOlHFVQUzjMY5ypNNTeov92g==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
marked@16.4.1:
|
||||
resolution: {integrity: sha512-ntROs7RaN3EvWfy3EZi14H4YxmT6A5YvywfhO+0pm+cH/dnSQRmdAmoFIc3B9aiwTehyk7pESH4ofyBY+V5hZg==}
|
||||
engines: {node: '>= 20'}
|
||||
hasBin: true
|
||||
|
||||
marky@1.2.5:
|
||||
resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==}
|
||||
|
||||
|
|
@ -8819,9 +8803,6 @@ packages:
|
|||
resolution: {integrity: sha512-kFm5+jbwR5mC+lo+3Cy46eHiykWSpUtTLOH3GE+AR7GeLq8PgfJcvpMiyVWk9/O53DjQsqm6a3VOOfq7gYWFRg==}
|
||||
engines: {node: '>= 8.0'}
|
||||
|
||||
mz@2.7.0:
|
||||
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
|
||||
|
||||
named-placeholders@1.1.3:
|
||||
resolution: {integrity: sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
|
|
@ -8949,10 +8930,6 @@ packages:
|
|||
object-filter@1.0.2:
|
||||
resolution: {integrity: sha512-NahvP2vZcy1ZiiYah30CEPw0FpDcSkSePJBMpzl5EQgCmISijiGuJm3SPYp7U+Lf2TljyaIw3E5EgkEx/TNEVA==}
|
||||
|
||||
object-hash@3.0.0:
|
||||
resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
|
||||
engines: {node: '>= 6'}
|
||||
|
||||
object-inspect@1.13.4:
|
||||
resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
|
@ -9364,18 +9341,6 @@ packages:
|
|||
peerDependencies:
|
||||
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:
|
||||
resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
|
||||
engines: {node: '>= 14'}
|
||||
|
|
@ -9458,12 +9423,6 @@ packages:
|
|||
peerDependencies:
|
||||
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:
|
||||
resolution: {integrity: sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==}
|
||||
engines: {node: ^14 || ^16 || >=18.0}
|
||||
|
|
@ -9825,9 +9784,6 @@ packages:
|
|||
resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
read-cache@1.0.0:
|
||||
resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
|
||||
|
||||
read-pkg-up@7.0.1:
|
||||
resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
|
||||
engines: {node: '>=8'}
|
||||
|
|
@ -10657,11 +10613,6 @@ packages:
|
|||
stylis@4.2.0:
|
||||
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:
|
||||
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
|
||||
engines: {node: '>=4'}
|
||||
|
|
@ -10804,10 +10755,8 @@ packages:
|
|||
tailwind-merge@2.6.0:
|
||||
resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==}
|
||||
|
||||
tailwindcss@3.4.17:
|
||||
resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
hasBin: true
|
||||
tailwindcss@4.1.16:
|
||||
resolution: {integrity: sha512-pONL5awpaQX4LN5eiv7moSiSPd/DLDzKVRJz8Q9PgzmAdd1R4307GQS2ZpfiN7ZmekdQrfhZZiSE5jkLR4WNaA==}
|
||||
|
||||
tailwindcss@4.1.4:
|
||||
resolution: {integrity: sha512-1ZIUqtPITFbv/DxRmDr5/agPqJwF69d24m9qmM1939TJehgY539CtzeZRjbLt5G6fSy/7YqqYsfvoTEw9xUI2A==}
|
||||
|
|
@ -10874,13 +10823,6 @@ packages:
|
|||
text-table@0.2.0:
|
||||
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:
|
||||
resolution: {integrity: sha512-tDuKQJUTfjvi9Fcrs1s6YAQAB9mzhTSbBZMfNgtWNmJlHuoFeXO6dzBFdGeCWRvYL50jQGK0jPsBZYxqZQJ2SA==}
|
||||
|
||||
|
|
@ -10989,9 +10931,6 @@ packages:
|
|||
peerDependencies:
|
||||
typescript: '>=4.2.0'
|
||||
|
||||
ts-interface-checker@0.1.13:
|
||||
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
|
||||
|
||||
tsconfig-paths@3.15.0:
|
||||
resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
|
||||
|
||||
|
|
@ -12068,8 +12007,6 @@ snapshots:
|
|||
dependencies:
|
||||
'@algolia/client-common': 5.21.0
|
||||
|
||||
'@alloc/quick-lru@5.2.0': {}
|
||||
|
||||
'@ampproject/remapping@2.3.0':
|
||||
dependencies:
|
||||
'@jridgewell/gen-mapping': 0.3.8
|
||||
|
|
@ -13686,39 +13623,39 @@ snapshots:
|
|||
|
||||
'@bcoe/v8-coverage@0.2.3': {}
|
||||
|
||||
'@biomejs/biome@2.0.6':
|
||||
'@biomejs/biome@2.3.3':
|
||||
optionalDependencies:
|
||||
'@biomejs/cli-darwin-arm64': 2.0.6
|
||||
'@biomejs/cli-darwin-x64': 2.0.6
|
||||
'@biomejs/cli-linux-arm64': 2.0.6
|
||||
'@biomejs/cli-linux-arm64-musl': 2.0.6
|
||||
'@biomejs/cli-linux-x64': 2.0.6
|
||||
'@biomejs/cli-linux-x64-musl': 2.0.6
|
||||
'@biomejs/cli-win32-arm64': 2.0.6
|
||||
'@biomejs/cli-win32-x64': 2.0.6
|
||||
'@biomejs/cli-darwin-arm64': 2.3.3
|
||||
'@biomejs/cli-darwin-x64': 2.3.3
|
||||
'@biomejs/cli-linux-arm64': 2.3.3
|
||||
'@biomejs/cli-linux-arm64-musl': 2.3.3
|
||||
'@biomejs/cli-linux-x64': 2.3.3
|
||||
'@biomejs/cli-linux-x64-musl': 2.3.3
|
||||
'@biomejs/cli-win32-arm64': 2.3.3
|
||||
'@biomejs/cli-win32-x64': 2.3.3
|
||||
|
||||
'@biomejs/cli-darwin-arm64@2.0.6':
|
||||
'@biomejs/cli-darwin-arm64@2.3.3':
|
||||
optional: true
|
||||
|
||||
'@biomejs/cli-darwin-x64@2.0.6':
|
||||
'@biomejs/cli-darwin-x64@2.3.3':
|
||||
optional: true
|
||||
|
||||
'@biomejs/cli-linux-arm64-musl@2.0.6':
|
||||
'@biomejs/cli-linux-arm64-musl@2.3.3':
|
||||
optional: true
|
||||
|
||||
'@biomejs/cli-linux-arm64@2.0.6':
|
||||
'@biomejs/cli-linux-arm64@2.3.3':
|
||||
optional: true
|
||||
|
||||
'@biomejs/cli-linux-x64-musl@2.0.6':
|
||||
'@biomejs/cli-linux-x64-musl@2.3.3':
|
||||
optional: true
|
||||
|
||||
'@biomejs/cli-linux-x64@2.0.6':
|
||||
'@biomejs/cli-linux-x64@2.3.3':
|
||||
optional: true
|
||||
|
||||
'@biomejs/cli-win32-arm64@2.0.6':
|
||||
'@biomejs/cli-win32-arm64@2.3.3':
|
||||
optional: true
|
||||
|
||||
'@biomejs/cli-win32-x64@2.0.6':
|
||||
'@biomejs/cli-win32-x64@2.3.3':
|
||||
optional: true
|
||||
|
||||
'@bundled-es-modules/cookie@2.0.1':
|
||||
|
|
@ -15852,6 +15789,13 @@ snapshots:
|
|||
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)
|
||||
|
||||
'@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':
|
||||
dependencies:
|
||||
'@tannin/evaluate': 1.2.0
|
||||
|
|
@ -18073,8 +18017,6 @@ snapshots:
|
|||
|
||||
ansi-styles@6.2.1: {}
|
||||
|
||||
any-promise@1.3.0: {}
|
||||
|
||||
anymatch@3.1.3:
|
||||
dependencies:
|
||||
normalize-path: 3.0.0
|
||||
|
|
@ -18092,8 +18034,6 @@ snapshots:
|
|||
|
||||
are-docs-informative@0.0.2: {}
|
||||
|
||||
arg@5.0.2: {}
|
||||
|
||||
argparse@1.0.10:
|
||||
dependencies:
|
||||
sprintf-js: 1.0.3
|
||||
|
|
@ -18596,8 +18536,6 @@ snapshots:
|
|||
pascal-case: 3.1.2
|
||||
tslib: 2.8.1
|
||||
|
||||
camelcase-css@2.0.1: {}
|
||||
|
||||
camelcase-keys@6.2.2:
|
||||
dependencies:
|
||||
camelcase: 5.3.1
|
||||
|
|
@ -18888,8 +18826,6 @@ snapshots:
|
|||
|
||||
commander@2.20.3: {}
|
||||
|
||||
commander@4.1.1: {}
|
||||
|
||||
commander@7.2.0: {}
|
||||
|
||||
commander@9.0.0: {}
|
||||
|
|
@ -19336,8 +19272,6 @@ snapshots:
|
|||
|
||||
devtools-protocol@0.0.1423531: {}
|
||||
|
||||
didyoumean@1.2.2: {}
|
||||
|
||||
diff-sequences@29.6.3: {}
|
||||
|
||||
diff@4.0.2: {}
|
||||
|
|
@ -19346,8 +19280,6 @@ snapshots:
|
|||
dependencies:
|
||||
path-type: 4.0.0
|
||||
|
||||
dlv@1.1.3: {}
|
||||
|
||||
dns-packet@5.6.1:
|
||||
dependencies:
|
||||
'@leichtgewicht/ip-codec': 2.0.5
|
||||
|
|
@ -22324,6 +22256,8 @@ snapshots:
|
|||
dependencies:
|
||||
markdown-it: 12.3.2
|
||||
|
||||
marked@16.4.1: {}
|
||||
|
||||
marky@1.2.5: {}
|
||||
|
||||
math-intrinsics@1.1.0: {}
|
||||
|
|
@ -22905,12 +22839,6 @@ snapshots:
|
|||
seq-queue: 0.0.5
|
||||
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:
|
||||
dependencies:
|
||||
lru-cache: 7.18.3
|
||||
|
|
@ -23047,8 +22975,6 @@ snapshots:
|
|||
|
||||
object-filter@1.0.2: {}
|
||||
|
||||
object-hash@3.0.0: {}
|
||||
|
||||
object-inspect@1.13.4: {}
|
||||
|
||||
object-keys@1.1.1: {}
|
||||
|
|
@ -23470,24 +23396,13 @@ snapshots:
|
|||
dependencies:
|
||||
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):
|
||||
dependencies:
|
||||
lilconfig: 3.1.3
|
||||
yaml: 2.7.0
|
||||
optionalDependencies:
|
||||
postcss: 8.5.3
|
||||
optional: true
|
||||
|
||||
postcss-loader@6.2.1(postcss@8.5.3)(webpack@5.98.0):
|
||||
dependencies:
|
||||
|
|
@ -23558,11 +23473,6 @@ snapshots:
|
|||
icss-utils: 5.1.0(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):
|
||||
dependencies:
|
||||
postcss: 8.5.3
|
||||
|
|
@ -23929,10 +23839,6 @@ snapshots:
|
|||
dependencies:
|
||||
loose-envify: 1.4.0
|
||||
|
||||
read-cache@1.0.0:
|
||||
dependencies:
|
||||
pify: 2.3.0
|
||||
|
||||
read-pkg-up@7.0.1:
|
||||
dependencies:
|
||||
find-up: 4.1.0
|
||||
|
|
@ -24974,16 +24880,6 @@ snapshots:
|
|||
|
||||
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:
|
||||
dependencies:
|
||||
has-flag: 3.0.0
|
||||
|
|
@ -25121,32 +25017,7 @@ snapshots:
|
|||
|
||||
tailwind-merge@2.6.0: {}
|
||||
|
||||
tailwindcss@3.4.17:
|
||||
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.16: {}
|
||||
|
||||
tailwindcss@4.1.4: {}
|
||||
|
||||
|
|
@ -25230,14 +25101,6 @@ snapshots:
|
|||
|
||||
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.27.0: {}
|
||||
|
|
@ -25323,8 +25186,6 @@ snapshots:
|
|||
dependencies:
|
||||
typescript: 5.8.2
|
||||
|
||||
ts-interface-checker@0.1.13: {}
|
||||
|
||||
tsconfig-paths@3.15.0:
|
||||
dependencies:
|
||||
'@types/json5': 0.0.29
|
||||
|
|
|
|||
|
|
@ -17,3 +17,4 @@ onlyBuiltDependencies:
|
|||
- esbuild
|
||||
- keytar
|
||||
- msw
|
||||
- svelte-preprocess
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue