From 1550945f583536a463e32297c413054346dc27bb Mon Sep 17 00:00:00 2001 From: trueberryless Date: Fri, 10 Jan 2025 18:26:48 +0100 Subject: [PATCH 01/30] update config with all configurations from plugins and write 2 tests for casePolice --- .../starlight-spell-checker/libs/config.ts | 170 ++++++++++++++++++ .../libs/validation.ts | 94 +++++++--- .../tests/casePolice.test.ts | 68 +++++++ .../astro.config.ts | 32 ++++ .../package.json | 10 ++ .../src/content.config.ts | 7 + .../src/content/docs/de/index.md | 37 ++++ .../src/content/docs/fr/index.md | 37 ++++ .../src/content/docs/index.md | 37 ++++ .../astro.config.ts | 32 ++++ .../package.json | 10 ++ .../src/content.config.ts | 7 + .../src/content/docs/de/index.md | 37 ++++ .../src/content/docs/fr/index.md | 37 ++++ .../src/content/docs/index.md | 37 ++++ pnpm-lock.yaml | 24 +++ 16 files changed, 656 insertions(+), 20 deletions(-) create mode 100644 packages/starlight-spell-checker/tests/casePolice.test.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/src/content/docs/de/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/src/content/docs/fr/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/src/content/docs/de/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/src/content/docs/fr/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/src/content/docs/index.md diff --git a/packages/starlight-spell-checker/libs/config.ts b/packages/starlight-spell-checker/libs/config.ts index 8c1854d..b45fcd7 100644 --- a/packages/starlight-spell-checker/libs/config.ts +++ b/packages/starlight-spell-checker/libs/config.ts @@ -80,6 +80,15 @@ const configSchema = z * @default false */ throwError: z.boolean().default(false), + + /** + * Defines a list of words that should be ignored by the case police checker. + * + * The words in this list will be ignored by the case police checker and will not be considered as misspelled. + * + * @default [] + */ + ignore: z.array(z.string()).default([]), }) .default({}), @@ -104,6 +113,20 @@ const configSchema = z * @default false */ throwError: z.boolean().default(false), + + /** + * Whether to ignore [literal words](https://github.com/syntax-tree/nlcst-is-literal). + * + * @default true + */ + ignoreLiterals: z.boolean().default(true), + + /** + * Whether to suggest straight (') instead of smart (’) apostrophes. + * + * @default false + */ + straight: z.boolean().default(false), }) .default({}), @@ -152,6 +175,22 @@ const configSchema = z * @default false */ throwError: z.boolean().default(false), + + /** + * Defines a list of words that should be ignored by the equality checker. + * + * The words in this list will be ignored by the equality checker and will not be considered as inconsiderate. + * + * @default [] + */ + ignore: z.array(z.string()).default([]), + + /** + * Whether to allow "he or she", "garbagemen and garbagewomen", etc. + * + * @default false + */ + binary: z.boolean().default(false), }) .default({}), @@ -200,6 +239,15 @@ const configSchema = z * @default false */ throwError: z.boolean().default(false), + + /** + * Defines a list of words that should be ignored by the intensify checker. + * + * The words in this list will be ignored by the intensify checker and will not be considered as weak. + * + * @default [] + */ + ignore: z.array(z.string()).default([]), }) .default({}), @@ -248,6 +296,15 @@ const configSchema = z * @default false */ throwError: z.boolean().default(false), + + /** + * Defines a list of words that should be ignored by the passive checker. + * + * The words in this list will be ignored by the passive checker and will not be considered as passive. + * + * @default [] + */ + ignore: z.array(z.string()).default([]), }) .default({}), @@ -272,11 +329,36 @@ const configSchema = z * @default false */ throwError: z.boolean().default(false), + + /** + * Defines a list of words that should be ignored by the profanity checker. + * + * The words in this list will be ignored by the profanity checker and will not be considered as vulgar. + * + * @default [] + */ + ignore: z.array(z.string()).default([]), + + /** + * Minimum sureness to warn about, see [cuss](https://github.com/words/cuss) + * + * @default 0 + */ + sureness: z + .number() + .refine((val) => [0, 1, 2].includes(val), { + message: "Number must be 0, 1, or 2", + }) + .default(0), }) .default({}), /** * Configuration for the readability plugin. + * + * It applies [Dale—Chall](https://github.com/words/dale-chall-formula), +[Automated Readability](https://github.com/words/automated-readability), [Coleman-Liau](https://github.com/words/coleman-liau), [Flesch](https://github.com/words/flesch), +[Gunning-Fog](https://github.com/words/gunning-fog), [SMOG](https://github.com/words/smog-formula), and [Spache](https://github.com/words/spache-formula). */ readability: z .object({ @@ -296,6 +378,33 @@ const configSchema = z * @default false */ throwError: z.boolean().default(false), + + /** + * Defines the target age group. + * + * @default 22 + */ + age: z.number().default(22), + + /** + * Defines the minimum number of words. + * + * Evaluate sentences containing at least this number of words. While most algorithms assess the reading level of an entire text, this plugin analyzes each sentence individually. Short sentences, however, can be disproportionately influenced by a single long or complex word. + * + * @default 5 + */ + minWords: z.number().default(5), + + /** + * Defines how many algorithms (out of 7) need to agree that something is hard to read. + * + * The algorithms are: [Dale—Chall](https://github.com/words/dale-chall-formula), +[Automated Readability](https://github.com/words/automated-readability), [Coleman-Liau](https://github.com/words/coleman-liau), [Flesch](https://github.com/words/flesch), +[Gunning-Fog](https://github.com/words/gunning-fog), [SMOG](https://github.com/words/smog-formula), and [Spache](https://github.com/words/spache-formula) + * + * @default 4/7 + */ + threshold: z.number().default(4 / 7), }) .default({}), @@ -368,6 +477,15 @@ const configSchema = z * @default false */ throwError: z.boolean().default(false), + + /** + * Defines a list of words that should be ignored by the simplify checker. + * + * The words in this list will be ignored by the simplify checker and will not be considered as simplifiable. + * + * @default [] + */ + ignore: z.array(z.string()).default([]), }) .default({}), @@ -416,6 +534,58 @@ const configSchema = z * @default false */ throwError: z.boolean().default(false), + + /** + * Whether to suggest straight (') instead of smart (’) apostrophes. + * + * @default false + */ + straight: z + .boolean() + .default(false) + .transform((value) => (value ? "straight" : "smart")), + + smartQuotes: z + .union([ + z.array( + z.string().refine((str) => str.length === 1 || str.length === 2, { + message: + "Each quote must be either one or two characters long.", + }) + ), + z.record( + z.array( + z + .string() + .refine((str) => str.length === 1 || str.length === 2, { + message: + "Each quote must be either one or two characters long.", + }) + ) + ), + ]) + .default(["“”", "‘’"]), + + straightQuotes: z + .union([ + z.array( + z.string().refine((str) => str.length === 1 || str.length === 2, { + message: + "Each quote must be either one or two characters long.", + }) + ), + z.record( + z.array( + z + .string() + .refine((str) => str.length === 1 || str.length === 2, { + message: + "Each quote must be either one or two characters long.", + }) + ) + ), + ]) + .default(['"', "'"]), }) .default({}), diff --git a/packages/starlight-spell-checker/libs/validation.ts b/packages/starlight-spell-checker/libs/validation.ts index 3c73a54..b662eef 100644 --- a/packages/starlight-spell-checker/libs/validation.ts +++ b/packages/starlight-spell-checker/libs/validation.ts @@ -1,29 +1,30 @@ -import { fileURLToPath } from "node:url"; -import { statSync } from "node:fs"; - import type { StarlightUserConfig as StarlightUserConfigWithPlugins } from "@astrojs/starlight/types"; import type { AstroConfig, AstroIntegrationLogger } from "astro"; -import { $, bgGreen, black, blue, dim, green, red, yellow } from "kleur/colors"; +import { $, bgGreen, black, blue, dim, red, yellow } from "kleur/colors"; import type { StarlightSpellCheckerConfig } from "../libs/config"; import { retext } from "retext"; import { getLocaleDictionary } from "./i18n"; -import { stripLeadingSlash } from "./path"; import { getValidationData } from "./remark"; import picomatch from "picomatch"; import retextAssuming from "retext-assuming"; -// import retextCasePolice from "retext-case-police"; +import retextCasePolice from "retext-case-police"; // import retextCliches from "retext-cliches"; import retextContractions from "retext-contractions"; import retextDiacritics from "retext-diacritics"; import retextEquality from "retext-equality"; import retextIndefiniteArticle from "retext-indefinite-article"; import retextIntensify from "retext-intensify"; -import retextOveruse from "retext-overuse"; +// import retextOveruse from "retext-overuse"; import retextPassive from "retext-passive"; -import retextProfanities from "retext-profanities"; +import retextProfanitiesAr from "retext-profanities/ar-latn"; +import retextProfanitiesEn from "retext-profanities/en"; +import retextProfanitiesEs from "retext-profanities/es"; +import retextProfanitiesFr from "retext-profanities/fr"; +import retextProfanitiesIt from "retext-profanities/it"; +import retextProfanitiesPt from "retext-profanities/pt"; import retextReadability from "retext-readability"; import retextRedundantAcronyms from "retext-redundant-acronyms"; import retextRepeatedWords from "retext-repeated-words"; @@ -72,7 +73,7 @@ export async function validateTexts( let dictionary = getLocaleDictionary(locale); let retextProcessor = createProcessor(retext()) - .use(retextAssuming, options.assuming.enabled, { + .use(retextAssuming, options.assuming.enabled && locale === "en", { ...(options.assuming.phrases !== undefined && { phrases: options.assuming.phrases, }), @@ -80,18 +81,51 @@ export async function validateTexts( verbose: options.assuming.verbose, }) // .use(retextCliches) - .use(retextContractions, options.contractions.enabled) + .use( + retextContractions, + options.contractions.enabled && locale === "en", + { + allowLiterals: !options.contractions.ignoreLiterals, + } + ) .use(retextDiacritics, options.diacritics.enabled) - .use(retextEquality, options.equality.enabled) - .use(retextIndefiniteArticle, options.indefiniteArticle.enabled) - .use(retextIntensify, options.intensify.enabled) + .use(retextEquality, options.equality.enabled && locale === "en", { + ignore: options.equality.ignore, + binary: options.equality.binary, + }) + .use( + retextIndefiniteArticle, + options.indefiniteArticle.enabled && locale === "en" + ) + .use(retextIntensify, options.intensify.enabled && locale === "en", { + ignore: options.intensify.ignore, + }) // .use(retextOveruse, options.overuse.enabled) - .use(retextPassive, options.passive.enabled) - .use(retextProfanities, options.profanities.enabled) - .use(retextReadability, options.readability.enabled) - .use(retextRedundantAcronyms, options.redundantAcronyms.enabled) + .use(retextPassive, options.passive.enabled && locale === "en", { + ignore: options.passive.ignore, + }) + .use( + profanityMapper[locale], + options.profanities.enabled && + Object.keys(profanityMapper).includes(locale), + { + ignore: options.profanities.ignore, + sureness: options.profanities.sureness, + } + ) + .use(retextReadability, options.readability.enabled && locale === "en", { + age: options.readability.age, + minWords: options.readability.minWords, + threshold: options.readability.threshold, + }) + .use( + retextRedundantAcronyms, + options.redundantAcronyms.enabled && locale === "en" + ) .use(retextRepeatedWords, options.repeatedWords.enabled) - .use(retextSimplify, options.simplify.enabled) + .use(retextSimplify, options.simplify.enabled && locale === "en", { + ignore: options.simplify.ignore, + }) .use(retextSpell, options.spell.enabled, { dictionary, ignore: options.spell.ignore, @@ -99,8 +133,19 @@ export async function validateTexts( ignoreDigits: options.spell.ignoreDigits, max: options.spell.max, }) - .use(retextUsage, options.usage.enabled) - .use(retextQuotes, options.quotes.enabled) + .use(retextUsage, options.usage.enabled && locale === "en") + .use(retextQuotes, options.quotes.enabled, { + preferred: options.quotes.straight, + smart: Array.isArray(options.quotes.smartQuotes) + ? options.quotes.smartQuotes + : options.quotes.smartQuotes[locale], + straight: Array.isArray(options.quotes.straightQuotes) + ? options.quotes.straightQuotes + : options.quotes.straightQuotes[locale], + }) + .use(retextCasePolice, options.casePolice.enabled, { + ignore: options.casePolice.ignore, + }) .build(); for (const [filePath, content] of files) { if (isExcludedPage(filePath, options.exclude)) { @@ -316,6 +361,15 @@ function getThrowErrorForType( return options[optionKey]?.throwError ?? undefined; } +const profanityMapper: Record = { + ar: retextProfanitiesAr, + en: retextProfanitiesEn, + es: retextProfanitiesEs, + fr: retextProfanitiesFr, + it: retextProfanitiesIt, + "pt-BR": retextProfanitiesPt, +}; + type ValidationErrors = Map; export type ValidationErrorType = diff --git a/packages/starlight-spell-checker/tests/casePolice.test.ts b/packages/starlight-spell-checker/tests/casePolice.test.ts new file mode 100644 index 0000000..dbc8dd1 --- /dev/null +++ b/packages/starlight-spell-checker/tests/casePolice.test.ts @@ -0,0 +1,68 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' + +test('builds with case police throw error valid Multilingual content', async () => { + const { output, status } = await buildFixture('case-police-throw-error-valid-content-multilingual') + + expect(status).toBe('success') + expectValidationSuccess(output) +}) + +test('does not build with spell throw error invalid Multilingual content', async () => { + const { output, status } = await buildFixture('case-police-throw-error-invalid-content-multilingual') + + expect(status).toBe('error') + + expectValidationErrorCount(output, 39, 3) + + expectValidationErrors(output, '/', [ + ['Github', ValidationErrorType.CasePolice, ["GitHub"]], + ['kfc', ValidationErrorType.CasePolice, ["KFC"]], + ['nvidia', ValidationErrorType.CasePolice, ["NVIDIA"]], + ['Gcp', ValidationErrorType.CasePolice, ["GCP"]], + ['posix', ValidationErrorType.CasePolice, ["POSIX"]], + ['Iaas', ValidationErrorType.CasePolice, ["IaaS"]], + // ['wifi', ValidationErrorType.CasePolice, ["Wi-Fi"]], + ['eSim', ValidationErrorType.CasePolice, ["eSIM"]], + ['Airpods', ValidationErrorType.CasePolice, ["AirPods"]], + ['1password', ValidationErrorType.CasePolice, ["1Password"]], + ['Angularjs', ValidationErrorType.CasePolice, ["AngularJS"]], + ['Commonjs', ValidationErrorType.CasePolice, ["CommonJS"]], + ['sqlserver', ValidationErrorType.CasePolice, ["SQLServer"]], + ]) + + expectValidationErrors(output, 'de/', [ + ['Github', ValidationErrorType.CasePolice, ["GitHub"]], + ['kfc', ValidationErrorType.CasePolice, ["KFC"]], + ['nvidia', ValidationErrorType.CasePolice, ["NVIDIA"]], + ['Gcp', ValidationErrorType.CasePolice, ["GCP"]], + ['posix', ValidationErrorType.CasePolice, ["POSIX"]], + ['Iaas', ValidationErrorType.CasePolice, ["IaaS"]], + // ['wifi', ValidationErrorType.CasePolice, ["Wi-Fi"]], + ['eSim', ValidationErrorType.CasePolice, ["eSIM"]], + ['Airpods', ValidationErrorType.CasePolice, ["AirPods"]], + ['1password', ValidationErrorType.CasePolice, ["1Password"]], + ['Angularjs', ValidationErrorType.CasePolice, ["AngularJS"]], + ['Commonjs', ValidationErrorType.CasePolice, ["CommonJS"]], + ['sqlserver', ValidationErrorType.CasePolice, ["SQLServer"]], + ]) + + expectValidationErrors(output, 'fr/', [ + ['Github', ValidationErrorType.CasePolice, ["GitHub"]], + ['kfc', ValidationErrorType.CasePolice, ["KFC"]], + ['nvidia', ValidationErrorType.CasePolice, ["NVIDIA"]], + ['Gcp', ValidationErrorType.CasePolice, ["GCP"]], + ['posix', ValidationErrorType.CasePolice, ["POSIX"]], + ['Iaas', ValidationErrorType.CasePolice, ["IaaS"]], + // ['wifi', ValidationErrorType.CasePolice, ["Wi-Fi"]], + ['eSim', ValidationErrorType.CasePolice, ["eSIM"]], + ['Airpods', ValidationErrorType.CasePolice, ["AirPods"]], + ['1password', ValidationErrorType.CasePolice, ["1Password"]], + ['Angularjs', ValidationErrorType.CasePolice, ["AngularJS"]], + ['Commonjs', ValidationErrorType.CasePolice, ["CommonJS"]], + ['sqlserver', ValidationErrorType.CasePolice, ["SQLServer"]], + ]) +}) \ No newline at end of file diff --git a/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/astro.config.ts new file mode 100644 index 0000000..b2be520 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/astro.config.ts @@ -0,0 +1,32 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [starlightSpellChecker({ + casePolice: { + enabled: true, + throwError: true, + } + })], + title: "Starlight Spell Checker Tests - case police throw error invalid content multilingual", + locales: { + root: { + lang: "en", + label: "English", + }, + de: { + lang: "de", + label: "Deutsch", + }, + fr: { + lang: "fr", + label: "Français", + }, + }, + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/package.json b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/package.json new file mode 100644 index 0000000..df32f00 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/case-police-throw-error-invalid-content-multilingual", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/src/content/docs/de/index.md b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/src/content/docs/de/index.md new file mode 100644 index 0000000..5c7aeda --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/src/content/docs/de/index.md @@ -0,0 +1,37 @@ +--- +title: Verzeichnis +--- + +# Marken + +- Github +- Airbnb +- kfc +- nvidia + +# Abkürzungen + +- dos +- Gcp +- posix + +# Allgemein + +- Iaas +- wifi +- eSim + +# Produkte + +- Yubikey +- imax +- Airpods + +# Software + +- 1password +- Angularjs +- Bluesky +- Commonjs +- ms-dos +- sqlserver diff --git a/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/src/content/docs/fr/index.md b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/src/content/docs/fr/index.md new file mode 100644 index 0000000..56834ca --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/src/content/docs/fr/index.md @@ -0,0 +1,37 @@ +--- +title: Indice +--- + +# Marque + +- Github +- Airbnb +- kfc +- nvidia + +# Abréger + +- dos +- Gcp +- posix + +# Génériques + +- Iaas +- wifi +- eSim + +# Produit + +- Yubikey +- imax +- Airpods + +# Logiciel + +- 1password +- Angularjs +- Bluesky +- Commonjs +- ms-dos +- sqlserver diff --git a/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/src/content/docs/index.md new file mode 100644 index 0000000..f6662b3 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/src/content/docs/index.md @@ -0,0 +1,37 @@ +--- +title: Index +--- + +# Brands + +- Github +- Airbnb +- kfc +- nvidia + +# Abbreviates + +- dos +- Gcp +- posix + +# General + +- Iaas +- wifi +- eSim + +# Products + +- Yubikey +- imax +- Airpods + +# Softwares + +- 1password +- Angularjs +- Bluesky +- Commonjs +- ms-dos +- sqlserver diff --git a/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/astro.config.ts new file mode 100644 index 0000000..d14ad14 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/astro.config.ts @@ -0,0 +1,32 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [starlightSpellChecker({ + casePolice: { + enabled: true, + throwError: true, + } + })], + title: "Starlight Spell Checker Tests - case police throw error valid content multilingual", + locales: { + root: { + lang: "en", + label: "English", + }, + de: { + lang: "de", + label: "Deutsch", + }, + fr: { + lang: "fr", + label: "Français", + }, + }, + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/package.json b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/package.json new file mode 100644 index 0000000..db61b8e --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/case-police-throw-error-valid-content-multilingual", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/src/content/docs/de/index.md b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/src/content/docs/de/index.md new file mode 100644 index 0000000..66167cd --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/src/content/docs/de/index.md @@ -0,0 +1,37 @@ +--- +title: Verzeichnis +--- + +# Marken + +- GitHub +- Airbnb +- KFC +- NVIDIA + +# Abkürzungen + +- DOS +- GCP +- POSIX + +# Allgemein + +- IaaS +- Wi-Fi +- eSIM + +# Produkte + +- YubiKey +- iMac +- AirPods + +# Software + +- 1Password +- AngularJS +- Bluesky +- CommonJS +- MS-DOS +- SQLServer diff --git a/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/src/content/docs/fr/index.md b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/src/content/docs/fr/index.md new file mode 100644 index 0000000..3732666 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/src/content/docs/fr/index.md @@ -0,0 +1,37 @@ +--- +title: Indice +--- + +# Marque + +- GitHub +- Airbnb +- KFC +- NVIDIA + +# Abréger + +- DOS +- GCP +- POSIX + +# Génériques + +- IaaS +- Wi-Fi +- eSIM + +# Produit + +- YubiKey +- iMac +- AirPods + +# Logiciel + +- 1Password +- AngularJS +- Bluesky +- CommonJS +- MS-DOS +- SQLServer diff --git a/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/src/content/docs/index.md new file mode 100644 index 0000000..fdf32dc --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/src/content/docs/index.md @@ -0,0 +1,37 @@ +--- +title: Index +--- + +# Brands + +- GitHub +- Airbnb +- KFC +- NVIDIA + +# Abbreviates + +- DOS +- GCP +- POSIX + +# General + +- IaaS +- Wi-Fi +- eSIM + +# Products + +- YubiKey +- iMac +- AirPods + +# Softwares + +- 1Password +- AngularJS +- Bluesky +- CommonJS +- MS-DOS +- SQLServer diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 73df3d2..8af95c3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -184,6 +184,30 @@ importers: specifier: ^2.1.8 version: 2.1.8 + packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/invalid-content: dependencies: '@astrojs/starlight': From 32ee3eab400f6485329ca5cbf648f362f22a340c Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Fri, 10 Jan 2025 17:28:10 +0000 Subject: [PATCH 02/30] [autofix.ci] apply automated fixes --- .../astro.config.ts | 17 ++++++++++------- .../astro.config.ts | 17 ++++++++++------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/astro.config.ts index b2be520..2374bbe 100644 --- a/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/astro.config.ts +++ b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/astro.config.ts @@ -6,13 +6,16 @@ export default defineConfig({ integrations: [ starlight({ pagefind: false, - plugins: [starlightSpellChecker({ - casePolice: { - enabled: true, - throwError: true, - } - })], - title: "Starlight Spell Checker Tests - case police throw error invalid content multilingual", + plugins: [ + starlightSpellChecker({ + casePolice: { + enabled: true, + throwError: true, + }, + }), + ], + title: + "Starlight Spell Checker Tests - case police throw error invalid content multilingual", locales: { root: { lang: "en", diff --git a/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/astro.config.ts index d14ad14..a311e5c 100644 --- a/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/astro.config.ts +++ b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/astro.config.ts @@ -6,13 +6,16 @@ export default defineConfig({ integrations: [ starlight({ pagefind: false, - plugins: [starlightSpellChecker({ - casePolice: { - enabled: true, - throwError: true, - } - })], - title: "Starlight Spell Checker Tests - case police throw error valid content multilingual", + plugins: [ + starlightSpellChecker({ + casePolice: { + enabled: true, + throwError: true, + }, + }), + ], + title: + "Starlight Spell Checker Tests - case police throw error valid content multilingual", locales: { root: { lang: "en", From 28dddb8b4a600c5e3a893e7fcf4d3c48c56eeacc Mon Sep 17 00:00:00 2001 From: trueberryless Date: Fri, 10 Jan 2025 20:10:54 +0100 Subject: [PATCH 03/30] write some more tests --- .../starlight-spell-checker/libs/config.ts | 19 +++-- .../libs/validation.ts | 15 ++-- .../tests/assuming.throwError.test.ts | 29 ++++++++ .../tests/basics.test.ts | 2 +- ....test.ts => casePolice.throwError.test.ts} | 10 +-- ...ntractions.throwError.modeStraight.test.ts | 33 +++++++++ .../tests/contractions.throwError.test.ts | 26 +++++++ .../astro.config.ts | 24 +++++++ .../package.json | 10 +++ .../src/content.config.ts | 7 ++ .../src/content/docs/index.md | 8 +++ .../astro.config.ts | 24 +++++++ .../package.json | 10 +++ .../src/content.config.ts | 7 ++ .../src/content/docs/index.md | 8 +++ .../astro.config.ts | 3 + .../astro.config.ts | 3 + .../astro.config.ts | 24 +++++++ .../package.json | 10 +++ .../src/content.config.ts | 7 ++ .../src/content/docs/index.md | 5 ++ .../astro.config.ts | 25 +++++++ .../package.json | 10 +++ .../src/content.config.ts | 7 ++ .../src/content/docs/index.md | 5 ++ .../astro.config.ts | 25 +++++++ .../package.json | 10 +++ .../src/content.config.ts | 7 ++ .../src/content/docs/index.md | 5 ++ .../astro.config.ts | 24 +++++++ .../package.json | 10 +++ .../src/content.config.ts | 7 ++ .../src/content/docs/index.md | 5 ++ pnpm-lock.yaml | 72 +++++++++++++++++++ 34 files changed, 472 insertions(+), 24 deletions(-) create mode 100644 packages/starlight-spell-checker/tests/assuming.throwError.test.ts rename packages/starlight-spell-checker/tests/{casePolice.test.ts => casePolice.throwError.test.ts} (91%) create mode 100644 packages/starlight-spell-checker/tests/contractions.throwError.modeStraight.test.ts create mode 100644 packages/starlight-spell-checker/tests/contractions.throwError.test.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-invalid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-invalid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-invalid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-invalid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-valid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-valid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-valid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-valid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-invalid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-invalid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-invalid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-invalid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/src/content/docs/index.md diff --git a/packages/starlight-spell-checker/libs/config.ts b/packages/starlight-spell-checker/libs/config.ts index b45fcd7..9c0b847 100644 --- a/packages/starlight-spell-checker/libs/config.ts +++ b/packages/starlight-spell-checker/libs/config.ts @@ -122,11 +122,11 @@ const configSchema = z ignoreLiterals: z.boolean().default(true), /** - * Whether to suggest straight (') instead of smart (’) apostrophes. + * Whether to suggest straight (') or smart (’) apostrophes. * - * @default false + * @default "smart" */ - straight: z.boolean().default(false), + mode: z.enum(["smart", "straight"]).default("smart").transform((value) => value === "straight"), }) .default({}), @@ -536,16 +536,13 @@ const configSchema = z throwError: z.boolean().default(false), /** - * Whether to suggest straight (') instead of smart (’) apostrophes. + * Whether to suggest straight (') or smart (’) apostrophes. * - * @default false + * @default "smart" */ - straight: z - .boolean() - .default(false) - .transform((value) => (value ? "straight" : "smart")), + mode: z.enum(["smart", "straight"]).default("smart"), - smartQuotes: z + smart: z .union([ z.array( z.string().refine((str) => str.length === 1 || str.length === 2, { @@ -566,7 +563,7 @@ const configSchema = z ]) .default(["“”", "‘’"]), - straightQuotes: z + straight: z .union([ z.array( z.string().refine((str) => str.length === 1 || str.length === 2, { diff --git a/packages/starlight-spell-checker/libs/validation.ts b/packages/starlight-spell-checker/libs/validation.ts index b662eef..d53168c 100644 --- a/packages/starlight-spell-checker/libs/validation.ts +++ b/packages/starlight-spell-checker/libs/validation.ts @@ -86,6 +86,7 @@ export async function validateTexts( options.contractions.enabled && locale === "en", { allowLiterals: !options.contractions.ignoreLiterals, + straight: options.contractions.mode, } ) .use(retextDiacritics, options.diacritics.enabled) @@ -135,13 +136,13 @@ export async function validateTexts( }) .use(retextUsage, options.usage.enabled && locale === "en") .use(retextQuotes, options.quotes.enabled, { - preferred: options.quotes.straight, - smart: Array.isArray(options.quotes.smartQuotes) - ? options.quotes.smartQuotes - : options.quotes.smartQuotes[locale], - straight: Array.isArray(options.quotes.straightQuotes) - ? options.quotes.straightQuotes - : options.quotes.straightQuotes[locale], + preferred: options.quotes.mode, + smart: Array.isArray(options.quotes.smart) + ? options.quotes.smart + : options.quotes.smart[locale], + straight: Array.isArray(options.quotes.straight) + ? options.quotes.straight + : options.quotes.straight[locale], }) .use(retextCasePolice, options.casePolice.enabled, { ignore: options.casePolice.ignore, diff --git a/packages/starlight-spell-checker/tests/assuming.throwError.test.ts b/packages/starlight-spell-checker/tests/assuming.throwError.test.ts new file mode 100644 index 0000000..b43c923 --- /dev/null +++ b/packages/starlight-spell-checker/tests/assuming.throwError.test.ts @@ -0,0 +1,29 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' + +test('builds with valid English content', async () => { + const { output, status } = await buildFixture('assuming-throw-error-valid-content') + + expect(status).toBe('success') + expectValidationSuccess(output) +}) + +test('does not build with assuming throw error invalid English content', async () => { + const { output, status } = await buildFixture('assuming-throw-error-invalid-content') + + expect(status).toBe('error') + + expectValidationErrorCount(output, 6, 1) + + expectValidationErrors(output, '/', [ + ['diped', ValidationErrorType.Assuming, ["dipped", "doped", "duped", "biped", "diced", "died", "diked", "dined", "dived", "piped", "wiped"]], + ['horison', ValidationErrorType.Assuming, ["orison", "horizon", "Morison"]], + ['heus', ValidationErrorType.Assuming, ["hers", "hews", "he's", "hems", "hens", "hes", "hues", "Hess", "Hus", "Zeus"]], + ['evaning', ValidationErrorType.Assuming, ["evading", "evening"]], + ['breze', ValidationErrorType.Assuming, ["breeze", "braze", "breve"]], + ['thrugh', ValidationErrorType.Assuming, ["though", "through", "thrush"]], + ]) +}) diff --git a/packages/starlight-spell-checker/tests/basics.test.ts b/packages/starlight-spell-checker/tests/basics.test.ts index 4c4c205..2c2d85c 100644 --- a/packages/starlight-spell-checker/tests/basics.test.ts +++ b/packages/starlight-spell-checker/tests/basics.test.ts @@ -2,7 +2,7 @@ import { expect, test } from 'vitest' import { ValidationErrorType } from '../libs/validation' -import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess, expectValidationWarningCount, expectValidationWarnings } from './utils' +import { buildFixture, expectValidationSuccess, expectValidationWarningCount, expectValidationWarnings } from './utils' test('builds with valid English content', async () => { const { output, status } = await buildFixture('valid-content') diff --git a/packages/starlight-spell-checker/tests/casePolice.test.ts b/packages/starlight-spell-checker/tests/casePolice.throwError.test.ts similarity index 91% rename from packages/starlight-spell-checker/tests/casePolice.test.ts rename to packages/starlight-spell-checker/tests/casePolice.throwError.test.ts index dbc8dd1..e5c8f31 100644 --- a/packages/starlight-spell-checker/tests/casePolice.test.ts +++ b/packages/starlight-spell-checker/tests/casePolice.throwError.test.ts @@ -11,7 +11,7 @@ test('builds with case police throw error valid Multilingual content', async () expectValidationSuccess(output) }) -test('does not build with spell throw error invalid Multilingual content', async () => { +test('does not build with case police throw error invalid Multilingual content', async () => { const { output, status } = await buildFixture('case-police-throw-error-invalid-content-multilingual') expect(status).toBe('error') @@ -25,7 +25,7 @@ test('does not build with spell throw error invalid Multilingual content', async ['Gcp', ValidationErrorType.CasePolice, ["GCP"]], ['posix', ValidationErrorType.CasePolice, ["POSIX"]], ['Iaas', ValidationErrorType.CasePolice, ["IaaS"]], - // ['wifi', ValidationErrorType.CasePolice, ["Wi-Fi"]], + ['wifi', ValidationErrorType.CasePolice, ["Wi-Fi"]], ['eSim', ValidationErrorType.CasePolice, ["eSIM"]], ['Airpods', ValidationErrorType.CasePolice, ["AirPods"]], ['1password', ValidationErrorType.CasePolice, ["1Password"]], @@ -41,7 +41,7 @@ test('does not build with spell throw error invalid Multilingual content', async ['Gcp', ValidationErrorType.CasePolice, ["GCP"]], ['posix', ValidationErrorType.CasePolice, ["POSIX"]], ['Iaas', ValidationErrorType.CasePolice, ["IaaS"]], - // ['wifi', ValidationErrorType.CasePolice, ["Wi-Fi"]], + ['wifi', ValidationErrorType.CasePolice, ["Wi-Fi"]], ['eSim', ValidationErrorType.CasePolice, ["eSIM"]], ['Airpods', ValidationErrorType.CasePolice, ["AirPods"]], ['1password', ValidationErrorType.CasePolice, ["1Password"]], @@ -57,7 +57,7 @@ test('does not build with spell throw error invalid Multilingual content', async ['Gcp', ValidationErrorType.CasePolice, ["GCP"]], ['posix', ValidationErrorType.CasePolice, ["POSIX"]], ['Iaas', ValidationErrorType.CasePolice, ["IaaS"]], - // ['wifi', ValidationErrorType.CasePolice, ["Wi-Fi"]], + ['wifi', ValidationErrorType.CasePolice, ["Wi-Fi"]], ['eSim', ValidationErrorType.CasePolice, ["eSIM"]], ['Airpods', ValidationErrorType.CasePolice, ["AirPods"]], ['1password', ValidationErrorType.CasePolice, ["1Password"]], @@ -65,4 +65,4 @@ test('does not build with spell throw error invalid Multilingual content', async ['Commonjs', ValidationErrorType.CasePolice, ["CommonJS"]], ['sqlserver', ValidationErrorType.CasePolice, ["SQLServer"]], ]) -}) \ No newline at end of file +}) diff --git a/packages/starlight-spell-checker/tests/contractions.throwError.modeStraight.test.ts b/packages/starlight-spell-checker/tests/contractions.throwError.modeStraight.test.ts new file mode 100644 index 0000000..ba74988 --- /dev/null +++ b/packages/starlight-spell-checker/tests/contractions.throwError.modeStraight.test.ts @@ -0,0 +1,33 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' + +test('builds with valid English content', async () => { + const { output, status } = await buildFixture('contractions-throw-error-mode-straight-valid-content') + + expect(status).toBe('error') + + expectValidationErrorCount(output, 3, 1) + + expectValidationErrors(output, '/', [ + ['doesn’t', ValidationErrorType.Contractions, ["doesn't"]], + ['y’all', ValidationErrorType.Contractions, ["y'all"]], + ['isn’t', ValidationErrorType.Contractions, ["isn't"]], + ]) +}) + +test('does not build with contractions throw error invalid English content', async () => { + const { output, status } = await buildFixture('contractions-throw-error-mode-straight-invalid-content') + + expect(status).toBe('error') + + expectValidationErrorCount(output, 3, 1) + + expectValidationErrors(output, '/', [ + ['does’nt', ValidationErrorType.Contractions, ["doesn’t"]], + ['yall', ValidationErrorType.Contractions, ["y’all"]], + ['isnt', ValidationErrorType.Contractions, ["isn’t"]], + ]) +}) diff --git a/packages/starlight-spell-checker/tests/contractions.throwError.test.ts b/packages/starlight-spell-checker/tests/contractions.throwError.test.ts new file mode 100644 index 0000000..f53d229 --- /dev/null +++ b/packages/starlight-spell-checker/tests/contractions.throwError.test.ts @@ -0,0 +1,26 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' + +test('builds with valid English content', async () => { + const { output, status } = await buildFixture('contractions-throw-error-valid-content') + + expect(status).toBe('success') + expectValidationSuccess(output) +}) + +test('does not build with contractions throw error invalid English content', async () => { + const { output, status } = await buildFixture('contractions-throw-error-invalid-content') + + expect(status).toBe('error') + + expectValidationErrorCount(output, 3, 1) + + expectValidationErrors(output, '/', [ + ['does’nt', ValidationErrorType.Contractions, ["doesn’t"]], + ['yall', ValidationErrorType.Contractions, ["y’all"]], + ['isnt', ValidationErrorType.Contractions, ["isn’t"]], + ]) +}) diff --git a/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-invalid-content/astro.config.ts new file mode 100644 index 0000000..d3c77d2 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-invalid-content/astro.config.ts @@ -0,0 +1,24 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + assuming: { + enabled: true, + throwError: true, + }, + spell: { + enabled: false + } + }), + ], + title: + "Starlight Spell Checker Tests - assuming throw error invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-invalid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-invalid-content/package.json new file mode 100644 index 0000000..20eab5c --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-invalid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/assuming-throw-error-invalid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-invalid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-invalid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-invalid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-invalid-content/src/content/docs/index.md new file mode 100644 index 0000000..5248a42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-invalid-content/src/content/docs/index.md @@ -0,0 +1,8 @@ +--- +title: Index +--- + +You can just import an ES6 module. +Everything is simply Javascript. +Obviously you would need NodeJS > 8. +Actually, it's quite easy to use. diff --git a/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-valid-content/astro.config.ts new file mode 100644 index 0000000..d376301 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-valid-content/astro.config.ts @@ -0,0 +1,24 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + assuming: { + enabled: true, + throwError: true, + }, + spell: { + enabled: false + } + }), + ], + title: + "Starlight Spell Checker Tests - assuming throw error valid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-valid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-valid-content/package.json new file mode 100644 index 0000000..430eeeb --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-valid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/assuming-throw-error-valid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-valid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-valid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-valid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-valid-content/src/content/docs/index.md new file mode 100644 index 0000000..723565f --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-valid-content/src/content/docs/index.md @@ -0,0 +1,8 @@ +--- +title: Index +--- + +You can import an ES6 module. +Everything is Javascript. +You would need NodeJS > 8. +It's quite usable. diff --git a/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/astro.config.ts index 2374bbe..b5f6a4d 100644 --- a/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/astro.config.ts +++ b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/astro.config.ts @@ -12,6 +12,9 @@ export default defineConfig({ enabled: true, throwError: true, }, + spell: { + enabled: false + }, }), ], title: diff --git a/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/astro.config.ts index a311e5c..e0b49ec 100644 --- a/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/astro.config.ts +++ b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/astro.config.ts @@ -12,6 +12,9 @@ export default defineConfig({ enabled: true, throwError: true, }, + spell: { + enabled: false + }, }), ], title: diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content/astro.config.ts new file mode 100644 index 0000000..80c04c1 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content/astro.config.ts @@ -0,0 +1,24 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + contractions: { + enabled: true, + throwError: true, + }, + spell: { + enabled: false + } + }), + ], + title: + "Starlight Spell Checker Tests - contractions throw error invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content/package.json new file mode 100644 index 0000000..e9b0c5f --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/contractions-throw-error-invalid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content/src/content/docs/index.md new file mode 100644 index 0000000..6a814d5 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content/src/content/docs/index.md @@ -0,0 +1,5 @@ +--- +title: Index +--- + +Well, it does’nt have to be so bad yall, it isnt horrible. diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-invalid-content/astro.config.ts new file mode 100644 index 0000000..f8a5315 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-invalid-content/astro.config.ts @@ -0,0 +1,25 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + contractions: { + enabled: true, + throwError: true, + mode: "straight", + }, + spell: { + enabled: false + } + }), + ], + title: + "Starlight Spell Checker Tests - contractions throw error mode straight invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-invalid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-invalid-content/package.json new file mode 100644 index 0000000..a6ee84f --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-invalid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/contractions-throw-error-mode-straight-invalid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-invalid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-invalid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-invalid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-invalid-content/src/content/docs/index.md new file mode 100644 index 0000000..6a814d5 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-invalid-content/src/content/docs/index.md @@ -0,0 +1,5 @@ +--- +title: Index +--- + +Well, it does’nt have to be so bad yall, it isnt horrible. diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/astro.config.ts new file mode 100644 index 0000000..3f6c32e --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/astro.config.ts @@ -0,0 +1,25 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + contractions: { + enabled: true, + throwError: true, + mode: "straight", + }, + spell: { + enabled: false + } + }), + ], + title: + "Starlight Spell Checker Tests - contractions throw error mode straight valid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/package.json new file mode 100644 index 0000000..2970eb8 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/contractions-throw-error-mode-straight-valid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/src/content/docs/index.md new file mode 100644 index 0000000..db38373 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/src/content/docs/index.md @@ -0,0 +1,5 @@ +--- +title: Index +--- + +Well, it doesn’t have to be so bad y’all, it isn’t horrible. diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/astro.config.ts new file mode 100644 index 0000000..c80ab75 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/astro.config.ts @@ -0,0 +1,24 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + contractions: { + enabled: true, + throwError: true, + }, + spell: { + enabled: false + } + }), + ], + title: + "Starlight Spell Checker Tests - contractions throw error valid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/package.json new file mode 100644 index 0000000..07577c2 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/contractions-throw-error-valid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/src/content/docs/index.md new file mode 100644 index 0000000..db38373 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/src/content/docs/index.md @@ -0,0 +1,5 @@ +--- +title: Index +--- + +Well, it doesn’t have to be so bad y’all, it isn’t horrible. diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8af95c3..17e8cb3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -184,6 +184,30 @@ importers: specifier: ^2.1.8 version: 2.1.8 + packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-invalid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-valid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual: dependencies: '@astrojs/starlight': @@ -208,6 +232,54 @@ importers: specifier: workspace:* version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-invalid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/invalid-content: dependencies: '@astrojs/starlight': From fe767e95ecb994c2b54b60a4b20e90e670ecee23 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Fri, 10 Jan 2025 19:12:48 +0000 Subject: [PATCH 04/30] [autofix.ci] apply automated fixes --- packages/starlight-spell-checker/libs/config.ts | 5 ++++- .../assuming-throw-error-invalid-content/astro.config.ts | 4 ++-- .../assuming-throw-error-valid-content/astro.config.ts | 4 ++-- .../astro.config.ts | 6 +++--- .../astro.config.ts | 6 +++--- .../astro.config.ts | 4 ++-- .../astro.config.ts | 4 ++-- .../astro.config.ts | 4 ++-- .../contractions-throw-error-valid-content/astro.config.ts | 4 ++-- 9 files changed, 22 insertions(+), 19 deletions(-) diff --git a/packages/starlight-spell-checker/libs/config.ts b/packages/starlight-spell-checker/libs/config.ts index 9c0b847..1fb0b0f 100644 --- a/packages/starlight-spell-checker/libs/config.ts +++ b/packages/starlight-spell-checker/libs/config.ts @@ -126,7 +126,10 @@ const configSchema = z * * @default "smart" */ - mode: z.enum(["smart", "straight"]).default("smart").transform((value) => value === "straight"), + mode: z + .enum(["smart", "straight"]) + .default("smart") + .transform((value) => value === "straight"), }) .default({}), diff --git a/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-invalid-content/astro.config.ts index d3c77d2..fc7275f 100644 --- a/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-invalid-content/astro.config.ts +++ b/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-invalid-content/astro.config.ts @@ -13,8 +13,8 @@ export default defineConfig({ throwError: true, }, spell: { - enabled: false - } + enabled: false, + }, }), ], title: diff --git a/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-valid-content/astro.config.ts index d376301..659f205 100644 --- a/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-valid-content/astro.config.ts +++ b/packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-valid-content/astro.config.ts @@ -13,8 +13,8 @@ export default defineConfig({ throwError: true, }, spell: { - enabled: false - } + enabled: false, + }, }), ], title: diff --git a/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/astro.config.ts index b5f6a4d..98585b7 100644 --- a/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/astro.config.ts +++ b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-invalid-content-multilingual/astro.config.ts @@ -12,9 +12,9 @@ export default defineConfig({ enabled: true, throwError: true, }, - spell: { - enabled: false - }, + spell: { + enabled: false, + }, }), ], title: diff --git a/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/astro.config.ts index e0b49ec..8f8a176 100644 --- a/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/astro.config.ts +++ b/packages/starlight-spell-checker/tests/fixtures/case-police-throw-error-valid-content-multilingual/astro.config.ts @@ -12,9 +12,9 @@ export default defineConfig({ enabled: true, throwError: true, }, - spell: { - enabled: false - }, + spell: { + enabled: false, + }, }), ], title: diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content/astro.config.ts index 80c04c1..4fa211a 100644 --- a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content/astro.config.ts +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content/astro.config.ts @@ -13,8 +13,8 @@ export default defineConfig({ throwError: true, }, spell: { - enabled: false - } + enabled: false, + }, }), ], title: diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-invalid-content/astro.config.ts index f8a5315..566a417 100644 --- a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-invalid-content/astro.config.ts +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-invalid-content/astro.config.ts @@ -14,8 +14,8 @@ export default defineConfig({ mode: "straight", }, spell: { - enabled: false - } + enabled: false, + }, }), ], title: diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/astro.config.ts index 3f6c32e..675bc9a 100644 --- a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/astro.config.ts +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/astro.config.ts @@ -14,8 +14,8 @@ export default defineConfig({ mode: "straight", }, spell: { - enabled: false - } + enabled: false, + }, }), ], title: diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/astro.config.ts index c80ab75..3394d0e 100644 --- a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/astro.config.ts +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/astro.config.ts @@ -13,8 +13,8 @@ export default defineConfig({ throwError: true, }, spell: { - enabled: false - } + enabled: false, + }, }), ], title: From ef677b9dab5305722b75dd988951094864b4f3b4 Mon Sep 17 00:00:00 2001 From: trueberryless Date: Fri, 10 Jan 2025 20:51:18 +0100 Subject: [PATCH 05/30] write tests for contractions --- packages/starlight-spell-checker/package.json | 5 +- ...ons.throwError.ignoreLiteralsFalse.test.ts | 27 ++ ...ntractions.throwError.modeStraight.test.ts | 12 +- .../tests/contractions.throwError.test.ts | 5 +- .../astro.config.ts | 25 ++ .../package.json | 10 + .../src/content.config.ts | 7 + .../src/content/docs/index.md | 5 + .../astro.config.ts | 25 ++ .../package.json | 10 + .../src/content.config.ts | 7 + .../src/content/docs/index.md | 5 + .../src/content/docs/index.md | 2 +- .../src/content/docs/index.md | 2 +- .../src/content/docs/index.md | 2 +- .../src/content/docs/index.md | 2 +- pnpm-lock.yaml | 389 +++++++++++++++++- 17 files changed, 523 insertions(+), 17 deletions(-) create mode 100644 packages/starlight-spell-checker/tests/contractions.throwError.ignoreLiteralsFalse.test.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-invalid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-invalid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-invalid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-invalid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-valid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-valid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-valid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-valid-content/src/content/docs/index.md diff --git a/packages/starlight-spell-checker/package.json b/packages/starlight-spell-checker/package.json index 6448ffc..691115d 100644 --- a/packages/starlight-spell-checker/package.json +++ b/packages/starlight-spell-checker/package.json @@ -10,6 +10,8 @@ }, "devDependencies": { "@astrojs/starlight": "^0.30.3", + "@vitest/coverage-v8": "^2.1.8", + "@vitest/ui": "^2.1.8", "astro": "^5.1.2", "vitest": "^2.1.8" }, @@ -79,6 +81,7 @@ "vfile-reporter": "^8.1.1" }, "scripts": { - "test": "vitest" + "test": "vitest", + "coverage": "vitest run --coverage" } } diff --git a/packages/starlight-spell-checker/tests/contractions.throwError.ignoreLiteralsFalse.test.ts b/packages/starlight-spell-checker/tests/contractions.throwError.ignoreLiteralsFalse.test.ts new file mode 100644 index 0000000..d1cb366 --- /dev/null +++ b/packages/starlight-spell-checker/tests/contractions.throwError.ignoreLiteralsFalse.test.ts @@ -0,0 +1,27 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' + +test('builds with valid English content', async () => { + const { output, status } = await buildFixture('contractions-throw-error-ignore-literals-false-valid-content') + + expect(status).toBe('success') + expectValidationSuccess(output) +}) + +test('does not build with contractions throw error invalid English content', async () => { + const { output, status } = await buildFixture('contractions-throw-error-ignore-literals-false-invalid-content') + + expect(status).toBe('error') + + expectValidationErrorCount(output, 4, 1) + + expectValidationErrors(output, '/', [ + ['does’nt', ValidationErrorType.Contractions, ["doesn’t"]], + ['yall', ValidationErrorType.Contractions, ["y’all"]], + ['isnt', ValidationErrorType.Contractions, ["isn’t"]], + ['oc’lock', ValidationErrorType.Contractions, ["o’clock"]], + ]) +}) diff --git a/packages/starlight-spell-checker/tests/contractions.throwError.modeStraight.test.ts b/packages/starlight-spell-checker/tests/contractions.throwError.modeStraight.test.ts index ba74988..e0df162 100644 --- a/packages/starlight-spell-checker/tests/contractions.throwError.modeStraight.test.ts +++ b/packages/starlight-spell-checker/tests/contractions.throwError.modeStraight.test.ts @@ -9,12 +9,11 @@ test('builds with valid English content', async () => { expect(status).toBe('error') - expectValidationErrorCount(output, 3, 1) + expectValidationErrorCount(output, 2, 1) expectValidationErrors(output, '/', [ - ['doesn’t', ValidationErrorType.Contractions, ["doesn't"]], - ['y’all', ValidationErrorType.Contractions, ["y'all"]], ['isn’t', ValidationErrorType.Contractions, ["isn't"]], + ['o’clock', ValidationErrorType.Contractions, ["o'clock"]], ]) }) @@ -23,11 +22,10 @@ test('does not build with contractions throw error invalid English content', asy expect(status).toBe('error') - expectValidationErrorCount(output, 3, 1) + expectValidationErrorCount(output, 2, 1) expectValidationErrors(output, '/', [ - ['does’nt', ValidationErrorType.Contractions, ["doesn’t"]], - ['yall', ValidationErrorType.Contractions, ["y’all"]], - ['isnt', ValidationErrorType.Contractions, ["isn’t"]], + ['isnt', ValidationErrorType.Contractions, ["isn't"]], + ['oc’lock', ValidationErrorType.Contractions, ["o'clock"]], ]) }) diff --git a/packages/starlight-spell-checker/tests/contractions.throwError.test.ts b/packages/starlight-spell-checker/tests/contractions.throwError.test.ts index f53d229..42433b2 100644 --- a/packages/starlight-spell-checker/tests/contractions.throwError.test.ts +++ b/packages/starlight-spell-checker/tests/contractions.throwError.test.ts @@ -16,11 +16,10 @@ test('does not build with contractions throw error invalid English content', asy expect(status).toBe('error') - expectValidationErrorCount(output, 3, 1) + expectValidationErrorCount(output, 2, 1) expectValidationErrors(output, '/', [ - ['does’nt', ValidationErrorType.Contractions, ["doesn’t"]], - ['yall', ValidationErrorType.Contractions, ["y’all"]], ['isnt', ValidationErrorType.Contractions, ["isn’t"]], + ['oc’lock', ValidationErrorType.Contractions, ["o’clock"]], ]) }) diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-invalid-content/astro.config.ts new file mode 100644 index 0000000..65271c9 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-invalid-content/astro.config.ts @@ -0,0 +1,25 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + contractions: { + enabled: true, + throwError: true, + ignoreLiterals: false + }, + spell: { + enabled: false + } + }), + ], + title: + "Starlight Spell Checker Tests - contractions throw error ignore literals false invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-invalid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-invalid-content/package.json new file mode 100644 index 0000000..8f7f07f --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-invalid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/contractions-throw-error-ignore-literals-false-invalid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-invalid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-invalid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-invalid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-invalid-content/src/content/docs/index.md new file mode 100644 index 0000000..3a70cf5 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-invalid-content/src/content/docs/index.md @@ -0,0 +1,5 @@ +--- +title: Index +--- + +Well, it «does’nt» have to be so bad — yall —, it isnt nine oc'lock. diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-valid-content/astro.config.ts new file mode 100644 index 0000000..df6e17e --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-valid-content/astro.config.ts @@ -0,0 +1,25 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + contractions: { + enabled: true, + throwError: true, + ignoreLiterals: false + }, + spell: { + enabled: false + } + }), + ], + title: + "Starlight Spell Checker Tests - contractions throw error ignore literals false valid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-valid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-valid-content/package.json new file mode 100644 index 0000000..085cceb --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-valid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/contractions-throw-error-ignore-literals-false-valid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-valid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-valid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-valid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-valid-content/src/content/docs/index.md new file mode 100644 index 0000000..74fd541 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-valid-content/src/content/docs/index.md @@ -0,0 +1,5 @@ +--- +title: Index +--- + +Well, it «doesn’t» have to be so bad — y'all —, it isn’t nine o'clock. diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content/src/content/docs/index.md index 6a814d5..3a70cf5 100644 --- a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content/src/content/docs/index.md +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content/src/content/docs/index.md @@ -2,4 +2,4 @@ title: Index --- -Well, it does’nt have to be so bad yall, it isnt horrible. +Well, it «does’nt» have to be so bad — yall —, it isnt nine oc'lock. diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-invalid-content/src/content/docs/index.md index 6a814d5..3a70cf5 100644 --- a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-invalid-content/src/content/docs/index.md +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-invalid-content/src/content/docs/index.md @@ -2,4 +2,4 @@ title: Index --- -Well, it does’nt have to be so bad yall, it isnt horrible. +Well, it «does’nt» have to be so bad — yall —, it isnt nine oc'lock. diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/src/content/docs/index.md index db38373..74fd541 100644 --- a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/src/content/docs/index.md +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/src/content/docs/index.md @@ -2,4 +2,4 @@ title: Index --- -Well, it doesn’t have to be so bad y’all, it isn’t horrible. +Well, it «doesn’t» have to be so bad — y'all —, it isn’t nine o'clock. diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/src/content/docs/index.md index db38373..74fd541 100644 --- a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/src/content/docs/index.md +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/src/content/docs/index.md @@ -2,4 +2,4 @@ title: Index --- -Well, it doesn’t have to be so bad y’all, it isn’t horrible. +Well, it «doesn’t» have to be so bad — y'all —, it isn’t nine o'clock. diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 17e8cb3..d886c1f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -177,12 +177,18 @@ importers: '@astrojs/starlight': specifier: ^0.30.3 version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + '@vitest/coverage-v8': + specifier: ^2.1.8 + version: 2.1.8(vitest@2.1.8) + '@vitest/ui': + specifier: ^2.1.8 + version: 2.1.8(vitest@2.1.8) astro: specifier: ^5.1.2 version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) vitest: specifier: ^2.1.8 - version: 2.1.8 + version: 2.1.8(@vitest/ui@2.1.8) packages/starlight-spell-checker/tests/fixtures/assuming-throw-error-invalid-content: dependencies: @@ -232,6 +238,30 @@ importers: specifier: workspace:* version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-invalid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-valid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-invalid-content: dependencies: '@astrojs/starlight': @@ -474,6 +504,10 @@ importers: packages: + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + '@astrojs/compiler@2.10.3': resolution: {integrity: sha512-bL/O7YBxsFt55YHU021oL+xz+B/9HvGNId3F9xURN16aeqDK9juHGktdkCSXz+U4nqFACq6ZFvWomOzhV+zfPw==} @@ -526,6 +560,9 @@ packages: resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} engines: {node: '>=6.9.0'} + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + '@changesets/apply-release-plan@7.0.7': resolution: {integrity: sha512-qnPOcmmmnD0MfMg9DjU1/onORFyRpDXkMMl2IJg9mECY6RnxL3wN0TCCc92b2sXt1jt8DgjAUUsZYGUGTdYIXA==} @@ -999,9 +1036,32 @@ packages: cpu: [x64] os: [win32] + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@manypkg/find-root@1.1.0': resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} @@ -1054,6 +1114,13 @@ packages: cpu: [x64] os: [win32] + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@polka/url@1.0.0-next.28': + resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + '@rollup/pluginutils@5.1.4': resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} engines: {node: '>=14.0.0'} @@ -1242,6 +1309,15 @@ packages: '@ungap/structured-clone@1.2.1': resolution: {integrity: sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==} + '@vitest/coverage-v8@2.1.8': + resolution: {integrity: sha512-2Y7BPlKH18mAZYAW1tYByudlCYrQyl5RGvnnDYJKW5tCiO5qg3KSAy3XAxcxKz900a0ZXxWtKrMuZLe3lKBpJw==} + peerDependencies: + '@vitest/browser': 2.1.8 + vitest: 2.1.8 + peerDependenciesMeta: + '@vitest/browser': + optional: true + '@vitest/expect@2.1.8': resolution: {integrity: sha512-8ytZ/fFHq2g4PJVAtDX57mayemKgDR6X3Oa2Foro+EygiOJHUXhCqBAAKQYYajZpFoIfvBCF1j6R6IYRSIUFuw==} @@ -1268,6 +1344,11 @@ packages: '@vitest/spy@2.1.8': resolution: {integrity: sha512-5swjf2q95gXeYPevtW0BLk6H8+bPlMb4Vw/9Em4hFxDcaOxS+e0LOX4yqNxoHzMR2akEB2xfpnWUzkZokmgWDg==} + '@vitest/ui@2.1.8': + resolution: {integrity: sha512-5zPJ1fs0ixSVSs5+5V2XJjXLmNzjugHRyV11RqxYVR+oMcogZ9qTuSfKW+OcTV0JeFNznI83BNylzH6SSNJ1+w==} + peerDependencies: + vitest: 2.1.8 + '@vitest/utils@2.1.8': resolution: {integrity: sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==} @@ -1296,6 +1377,10 @@ packages: resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} engines: {node: '>=12'} + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} @@ -1356,6 +1441,9 @@ packages: bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + base-64@1.0.0: resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} @@ -1380,6 +1468,9 @@ packages: resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==} engines: {node: '>=18'} + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -1619,6 +1710,9 @@ packages: emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} @@ -1706,6 +1800,17 @@ packages: fastq@1.18.0: resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} + fdir@6.4.2: + resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -1724,6 +1829,9 @@ packages: find-yarn-workspace-root2@1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + flatted@3.3.2: + resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} + flattie@1.1.1: resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} engines: {node: '>=8'} @@ -1731,6 +1839,10 @@ packages: flesch@2.0.1: resolution: {integrity: sha512-bNr6zn2sjSOrgt8KINjAqWjGVx59Td8kz6Rb9JK9QmX0KYj46SS2e+7P7JaXcMOBEKr4nGuCiET7KHEhzjXtng==} + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -1755,6 +1867,10 @@ packages: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -1768,6 +1884,10 @@ packages: h3@1.13.0: resolution: {integrity: sha512-vFEAu/yf8UMUcB4s43OaDaigcqpQd14yanmOsn+NcRX3/guSKncyE2rOYhq8RIchgJrPSs/QiIddnTTR1ddiAg==} + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + hast-util-embedded@3.0.0: resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==} @@ -1835,6 +1955,9 @@ packages: hedges@2.0.1: resolution: {integrity: sha512-/TJb3QUphoIM/Vh2FcxR8GckKVzDRz816b5Afim5nQmZMizY6/n8/Q+8NI9XHrNgTFqDUsL6iyNk1008bGwS/g==} + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + html-escaper@3.0.3: resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} @@ -1938,6 +2061,25 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@5.0.6: + resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -1986,6 +2128,10 @@ packages: magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} engines: {node: '>=16'} @@ -2178,6 +2324,14 @@ packages: engines: {node: '>=10.0.0'} hasBin: true + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -2325,6 +2479,9 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + package-manager-detector@0.2.8: resolution: {integrity: sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==} @@ -2349,6 +2506,10 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -2627,6 +2788,10 @@ packages: simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + sirv@3.0.0: + resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} + engines: {node: '>=18'} + sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -2681,6 +2846,10 @@ packages: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + string-width@6.1.0: resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==} engines: {node: '>=16'} @@ -2707,6 +2876,10 @@ packages: style-to-object@1.0.8: resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + supports-color@9.4.0: resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} engines: {node: '>=12'} @@ -2719,6 +2892,10 @@ packages: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} + test-exclude@7.0.1: + resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} + engines: {node: '>=18'} + thesaurus@0.0.0: resolution: {integrity: sha512-UMBq/VrjRPn0ZmxvW1l+pl66hJbDxOvLjp1J3O6ws44D55MWG5mbjxHKqFJy16H545q/rFHWVpJARtjlHiXXEA==} @@ -2728,6 +2905,10 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyglobby@0.2.10: + resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} + engines: {node: '>=12.0.0'} + tinypool@1.0.2: resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -2748,6 +2929,10 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} @@ -3078,6 +3263,14 @@ packages: resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} engines: {node: '>=18'} + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + wrap-ansi@9.0.0: resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} engines: {node: '>=18'} @@ -3120,6 +3313,11 @@ packages: snapshots: + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + '@astrojs/compiler@2.10.3': {} '@astrojs/internal-helpers@0.4.2': {} @@ -3236,6 +3434,8 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 + '@bcoe/v8-coverage@0.2.3': {} + '@changesets/apply-release-plan@7.0.7': dependencies: '@changesets/config': 3.0.5 @@ -3644,8 +3844,34 @@ snapshots: '@img/sharp-win32-x64@0.33.5': optional: true + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + '@jridgewell/sourcemap-codec@1.5.0': {} + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + '@manypkg/find-root@1.1.0': dependencies: '@babel/runtime': 7.26.0 @@ -3723,6 +3949,11 @@ snapshots: '@pagefind/windows-x64@1.3.0': optional: true + '@pkgjs/parseargs@0.11.0': + optional: true + + '@polka/url@1.0.0-next.28': {} + '@rollup/pluginutils@5.1.4(rollup@4.29.2)': dependencies: '@types/estree': 1.0.6 @@ -3881,6 +4112,24 @@ snapshots: '@ungap/structured-clone@1.2.1': {} + '@vitest/coverage-v8@2.1.8(vitest@2.1.8)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 0.2.3 + debug: 4.4.0 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.1.7 + magic-string: 0.30.17 + magicast: 0.3.5 + std-env: 3.8.0 + test-exclude: 7.0.1 + tinyrainbow: 1.2.0 + vitest: 2.1.8(@vitest/ui@2.1.8) + transitivePeerDependencies: + - supports-color + '@vitest/expect@2.1.8': dependencies: '@vitest/spy': 2.1.8 @@ -3915,6 +4164,17 @@ snapshots: dependencies: tinyspy: 3.0.2 + '@vitest/ui@2.1.8(vitest@2.1.8)': + dependencies: + '@vitest/utils': 2.1.8 + fflate: 0.8.2 + flatted: 3.3.2 + pathe: 1.1.2 + sirv: 3.0.0 + tinyglobby: 0.2.10 + tinyrainbow: 1.2.0 + vitest: 2.1.8(@vitest/ui@2.1.8) + '@vitest/utils@2.1.8': dependencies: '@vitest/pretty-format': 2.1.8 @@ -3937,6 +4197,10 @@ snapshots: ansi-regex@6.1.0: {} + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + ansi-styles@6.2.1: {} anymatch@3.1.3: @@ -4072,6 +4336,8 @@ snapshots: bail@2.0.2: {} + balanced-match@1.0.2: {} + base-64@1.0.0: {} bcp-47-match@2.0.3: {} @@ -4101,6 +4367,10 @@ snapshots: widest-line: 5.0.0 wrap-ansi: 9.0.0 + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -4279,6 +4549,8 @@ snapshots: emoji-regex@8.0.0: {} + emoji-regex@9.2.2: {} + enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 @@ -4428,6 +4700,12 @@ snapshots: dependencies: reusify: 1.0.4 + fdir@6.4.2(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + fflate@0.8.2: {} + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -4446,10 +4724,17 @@ snapshots: micromatch: 4.0.8 pkg-dir: 4.2.0 + flatted@3.3.2: {} + flattie@1.1.1: {} flesch@2.0.1: {} + foreground-child@3.3.0: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + fs-extra@7.0.1: dependencies: graceful-fs: 4.2.11 @@ -4473,6 +4758,15 @@ snapshots: dependencies: is-glob: 4.0.3 + glob@10.4.5: + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + globby@11.1.0: dependencies: array-union: 2.1.0 @@ -4499,6 +4793,8 @@ snapshots: uncrypto: 0.1.3 unenv: 1.10.0 + has-flag@4.0.0: {} + hast-util-embedded@3.0.0: dependencies: '@types/hast': 3.0.4 @@ -4692,6 +4988,8 @@ snapshots: hedges@2.0.1: {} + html-escaper@2.0.2: {} + html-escaper@3.0.3: {} html-void-elements@3.0.0: {} @@ -4767,6 +5065,33 @@ snapshots: isexe@2.0.0: {} + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@5.0.6: + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + debug: 4.4.0 + istanbul-lib-coverage: 3.2.2 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.1.7: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + js-yaml@3.14.1: dependencies: argparse: 1.0.10 @@ -4815,6 +5140,10 @@ snapshots: '@babel/types': 7.26.3 source-map-js: 1.2.1 + make-dir@4.0.0: + dependencies: + semver: 7.6.3 + markdown-extensions@2.0.0: {} markdown-table@3.0.4: {} @@ -5300,6 +5629,12 @@ snapshots: mime@3.0.0: {} + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minipass@7.1.2: {} + mri@1.2.0: {} mrmime@2.0.0: {} @@ -5444,6 +5779,8 @@ snapshots: p-try@2.2.0: {} + package-json-from-dist@1.0.1: {} + package-manager-detector@0.2.8: {} pagefind@1.3.0: @@ -5481,6 +5818,11 @@ snapshots: path-key@3.1.1: {} + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + path-type@4.0.0: {} pathe@1.1.2: {} @@ -5994,6 +6336,12 @@ snapshots: dependencies: is-arrayish: 0.3.2 + sirv@3.0.0: + dependencies: + '@polka/url': 1.0.0-next.28 + mrmime: 2.0.0 + totalist: 3.0.1 + sisteransi@1.0.5: {} sitemap@8.0.0: @@ -6038,6 +6386,12 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + string-width@6.1.0: dependencies: eastasianwidth: 0.2.0 @@ -6069,6 +6423,10 @@ snapshots: dependencies: inline-style-parser: 0.2.4 + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + supports-color@9.4.0: {} syllable@5.0.1: @@ -6079,12 +6437,23 @@ snapshots: term-size@2.2.1: {} + test-exclude@7.0.1: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 10.4.5 + minimatch: 9.0.5 + thesaurus@0.0.0: {} tinybench@2.9.0: {} tinyexec@0.3.2: {} + tinyglobby@0.2.10: + dependencies: + fdir: 6.4.2(picomatch@4.0.2) + picomatch: 4.0.2 + tinypool@1.0.2: {} tinyrainbow@1.2.0: {} @@ -6099,6 +6468,8 @@ snapshots: dependencies: is-number: 7.0.0 + totalist@3.0.1: {} + tr46@0.0.3: {} trim-lines@3.0.1: {} @@ -6311,7 +6682,7 @@ snapshots: optionalDependencies: vite: 6.0.7 - vitest@2.1.8: + vitest@2.1.8(@vitest/ui@2.1.8): dependencies: '@vitest/expect': 2.1.8 '@vitest/mocker': 2.1.8(vite@5.4.11) @@ -6333,6 +6704,8 @@ snapshots: vite: 5.4.11 vite-node: 2.1.8 why-is-node-running: 2.3.0 + optionalDependencies: + '@vitest/ui': 2.1.8(vitest@2.1.8) transitivePeerDependencies: - less - lightningcss @@ -6374,6 +6747,18 @@ snapshots: dependencies: string-width: 7.2.0 + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + wrap-ansi@9.0.0: dependencies: ansi-styles: 6.2.1 From 0a59a63cdb1c446962989f7ac3506f0abd3e5244 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Fri, 10 Jan 2025 19:52:13 +0000 Subject: [PATCH 06/30] [autofix.ci] apply automated fixes --- .../astro.config.ts | 6 +++--- .../astro.config.ts | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-invalid-content/astro.config.ts index 65271c9..da5acef 100644 --- a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-invalid-content/astro.config.ts +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-invalid-content/astro.config.ts @@ -11,11 +11,11 @@ export default defineConfig({ contractions: { enabled: true, throwError: true, - ignoreLiterals: false + ignoreLiterals: false, }, spell: { - enabled: false - } + enabled: false, + }, }), ], title: diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-valid-content/astro.config.ts index df6e17e..1eede47 100644 --- a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-valid-content/astro.config.ts +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-valid-content/astro.config.ts @@ -11,11 +11,11 @@ export default defineConfig({ contractions: { enabled: true, throwError: true, - ignoreLiterals: false + ignoreLiterals: false, }, spell: { - enabled: false - } + enabled: false, + }, }), ], title: From a4e9261171e14a050f275692e29d94802ae62f89 Mon Sep 17 00:00:00 2001 From: trueberryless Date: Fri, 10 Jan 2025 23:57:24 +0100 Subject: [PATCH 07/30] new unsupported language log + tests --- packages/starlight-spell-checker/index.ts | 5 +-- packages/starlight-spell-checker/libs/i18n.ts | 4 +-- .../libs/validation.ts | 28 ++++++++++++++++- .../unsupported-language/astro.config.ts | 14 +++++++++ .../unsupported-language/package.json | 10 ++++++ .../src/content.config.ts | 7 +++++ .../src/content/docs/index.md | 5 +++ .../unsupported-languages/astro.config.ts | 27 ++++++++++++++++ .../unsupported-languages/package.json | 10 ++++++ .../src/content.config.ts | 7 +++++ .../src/content/docs/ar/index.md | 5 +++ .../src/content/docs/index.md | 5 +++ .../src/content/docs/ja/index.md | 5 +++ .../tests/unsupportedLanguage.test.ts | 20 ++++++++++++ .../starlight-spell-checker/tests/utils.ts | 31 +++++++++++++++++++ pnpm-lock.yaml | 24 ++++++++++++++ 16 files changed, 202 insertions(+), 5 deletions(-) create mode 100644 packages/starlight-spell-checker/tests/fixtures/unsupported-language/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/unsupported-language/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/unsupported-language/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/unsupported-language/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/unsupported-languages/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/unsupported-languages/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/unsupported-languages/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/unsupported-languages/src/content/docs/ar/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/unsupported-languages/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/unsupported-languages/src/content/docs/ja/index.md create mode 100644 packages/starlight-spell-checker/tests/unsupportedLanguage.test.ts diff --git a/packages/starlight-spell-checker/index.ts b/packages/starlight-spell-checker/index.ts index 02d59ec..08e8d3a 100644 --- a/packages/starlight-spell-checker/index.ts +++ b/packages/starlight-spell-checker/index.ts @@ -5,7 +5,7 @@ import { type StarlightSpellCheckerConfig, type StarlightSpellCheckerUserConfig, } from "./libs/config"; -import { logErrors, logWarnings, validateTexts } from "./libs/validation"; +import { logErrors, logUnsupportedLanguages, logWarnings, validateTexts } from "./libs/validation"; import { clearContentLayerCache } from "./libs/astro"; import { remarkStarlightSpellChecker } from "./libs/remark"; import { green } from "kleur/colors"; @@ -47,7 +47,7 @@ export default function starlightSpellChecker( }); }, "astro:build:done": async ({ dir, pages }) => { - const { warnings, errors } = await validateTexts( + const { warnings, errors, unsupportedLanguages } = await validateTexts( pages, dir, astroConfig, @@ -57,6 +57,7 @@ export default function starlightSpellChecker( logWarnings(logger, warnings); logErrors(logger, errors); + logUnsupportedLanguages(logger, unsupportedLanguages); if (warnings.size <= 0 && errors.size <= 0) { logger.info(green("✓ All words spelled correctly.\n")); diff --git a/packages/starlight-spell-checker/libs/i18n.ts b/packages/starlight-spell-checker/libs/i18n.ts index 5a3ad17..cc1ce0a 100644 --- a/packages/starlight-spell-checker/libs/i18n.ts +++ b/packages/starlight-spell-checker/libs/i18n.ts @@ -38,7 +38,7 @@ export function getLocaleConfig(config: StarlightUserConfig): LocaleConfig { }; } -const dictionaryMapper: Record = { +const dictionaryMapper: Record = { ar: undefined, de: dictionaryDe, en: dictionaryEn, @@ -55,7 +55,7 @@ const dictionaryMapper: Record = { "zh-tw": undefined, }; -export function getLocaleDictionary(path: string): Dictionary { +export function getLocaleDictionary(path: string): Dictionary | undefined { return dictionaryMapper[path]; } diff --git a/packages/starlight-spell-checker/libs/validation.ts b/packages/starlight-spell-checker/libs/validation.ts index d53168c..689b2ba 100644 --- a/packages/starlight-spell-checker/libs/validation.ts +++ b/packages/starlight-spell-checker/libs/validation.ts @@ -68,10 +68,16 @@ export async function validateTexts( const errors: ValidationErrors = new Map(); const warnings: ValidationErrors = new Map(); + const unsupportedLanguages: UnsupportedLanguageErrors = new Set(); for (const [locale, files] of contents) { let dictionary = getLocaleDictionary(locale); + if (!dictionary) { + unsupportedLanguages.add({ locale }); + continue; + } + let retextProcessor = createProcessor(retext()) .use(retextAssuming, options.assuming.enabled && locale === "en", { ...(options.assuming.phrases !== undefined && { @@ -192,7 +198,7 @@ export async function validateTexts( } } - return { warnings, errors }; + return { warnings, errors, unsupportedLanguages }; } export function logWarnings( @@ -283,6 +289,19 @@ export function logErrors( process.stdout.write("\n"); } +export function logUnsupportedLanguages( + pluginLogger: AstroIntegrationLogger, + unsupportedLanguages: UnsupportedLanguageErrors +) { + const logger = pluginLogger.fork(""); + + if (unsupportedLanguages.size == 0) { + logger.info(green("✓ All languages supported.\n")); + } else { + logger.info(yellow(`✗ Unsupported ${pluralize(unsupportedLanguages.size, "language")}: ${red([...unsupportedLanguages].map(error => error.locale).join(yellow(", ")))} (No ${unsupportedLanguages.size == 1 ? "dictionary" : "dictionaries"} available.)`)); + } +} + /** * A wrapper around a retext processor to allow conditional plugin chaining. * @@ -382,6 +401,13 @@ interface ValidationError { suggestions?: string[]; } + +type UnsupportedLanguageErrors = Set; + +interface UnsupportedLanguageError { + locale: string; +} + const validationErrorTypeMapper: Record = { "retext-assuming": ValidationErrorType.Assuming, "retext-case-police": ValidationErrorType.CasePolice, diff --git a/packages/starlight-spell-checker/tests/fixtures/unsupported-language/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/unsupported-language/astro.config.ts new file mode 100644 index 0000000..16e3088 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/unsupported-language/astro.config.ts @@ -0,0 +1,14 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [starlightSpellChecker()], + title: "Starlight Spell Checker Tests - unsupported language", + defaultLocale: "ar", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/unsupported-language/package.json b/packages/starlight-spell-checker/tests/fixtures/unsupported-language/package.json new file mode 100644 index 0000000..7999387 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/unsupported-language/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/unsupported-language", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/unsupported-language/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/unsupported-language/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/unsupported-language/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/unsupported-language/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/unsupported-language/src/content/docs/index.md new file mode 100644 index 0000000..6e27ff3 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/unsupported-language/src/content/docs/index.md @@ -0,0 +1,5 @@ +--- +title: Index +--- + +انخفضت الشمس تحت الأفق، ورسمت السماء بألوان برتقالية وزهرية بينما كان نسيم المساء يهمس عبر الأشجار. diff --git a/packages/starlight-spell-checker/tests/fixtures/unsupported-languages/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/unsupported-languages/astro.config.ts new file mode 100644 index 0000000..692a02b --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/unsupported-languages/astro.config.ts @@ -0,0 +1,27 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [starlightSpellChecker()], + title: "Starlight Spell Checker Tests - unsupported languages", + locales: { + root: { + lang: "en", + label: "English", + }, + ar: { + lang: "ar", + label: "Arabic", + }, + ja: { + lang: "ja", + label: "Japanese", + }, + }, + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/unsupported-languages/package.json b/packages/starlight-spell-checker/tests/fixtures/unsupported-languages/package.json new file mode 100644 index 0000000..615d636 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/unsupported-languages/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/unsupported-languages", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/unsupported-languages/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/unsupported-languages/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/unsupported-languages/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/unsupported-languages/src/content/docs/ar/index.md b/packages/starlight-spell-checker/tests/fixtures/unsupported-languages/src/content/docs/ar/index.md new file mode 100644 index 0000000..1349de7 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/unsupported-languages/src/content/docs/ar/index.md @@ -0,0 +1,5 @@ +--- +title: الفهرس +--- + +انخفضت الشمس تحت الأفق، ورسمت السماء بألوان برتقالية وزهرية بينما كان نسيم المساء يهمس عبر الأشجار. diff --git a/packages/starlight-spell-checker/tests/fixtures/unsupported-languages/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/unsupported-languages/src/content/docs/index.md new file mode 100644 index 0000000..2b863d7 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/unsupported-languages/src/content/docs/index.md @@ -0,0 +1,5 @@ +--- +title: Index +--- + +The sun dipped below the horizon, painting the sky in hues of orange and pink as the evening breeze whispered through the trees. diff --git a/packages/starlight-spell-checker/tests/fixtures/unsupported-languages/src/content/docs/ja/index.md b/packages/starlight-spell-checker/tests/fixtures/unsupported-languages/src/content/docs/ja/index.md new file mode 100644 index 0000000..d39bf3d --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/unsupported-languages/src/content/docs/ja/index.md @@ -0,0 +1,5 @@ +--- +title: 索引 +--- + +太陽が地平線に沈むと、オレンジとピンクの色彩が空を染め、木々の間を夕方の風がささやいた。 diff --git a/packages/starlight-spell-checker/tests/unsupportedLanguage.test.ts b/packages/starlight-spell-checker/tests/unsupportedLanguage.test.ts new file mode 100644 index 0000000..c7c3e0b --- /dev/null +++ b/packages/starlight-spell-checker/tests/unsupportedLanguage.test.ts @@ -0,0 +1,20 @@ +import { expect, test } from 'vitest' + +import { buildFixture, expectValidationUnsupportedLanguage } from './utils' + +test('builds with unsupported language, but warnings', async () => { + const { output, status } = await buildFixture('unsupported-language') + + expect(status).toBe('success') + + expectValidationUnsupportedLanguage(output, ['ar']) +}) + +test('builds with unsupported languages, but warnings', async () => { + const { output, status } = await buildFixture('unsupported-languages') + + expect(status).toBe('success') + + expectValidationUnsupportedLanguage(output, ["ar", "ja"]) +}) + diff --git a/packages/starlight-spell-checker/tests/utils.ts b/packages/starlight-spell-checker/tests/utils.ts index e608056..5a318ea 100644 --- a/packages/starlight-spell-checker/tests/utils.ts +++ b/packages/starlight-spell-checker/tests/utils.ts @@ -42,6 +42,13 @@ export function expectValidationSuccess(output: string) { expect(output).toMatch(new RegExp(`All words spelled correctly.`)); } +export function expectValidationUnsupportedLanguage(output: string, locales: string[]) { + const per = getPermutations(locales); + const localePattern = `(${per.map(pair => pair.join(", ")).join("|")})`; + + expect(output).toMatch(new RegExp(`Unsupported ${locales.length === 1 ? "language" : "languages"}: ${localePattern} \\\(No ${locales.length === 1 ? "dictionary" : "dictionaries"} available.\\\)`)); +} + export function expectValidationWarningCount( output: string, count: number, @@ -129,3 +136,27 @@ ${validationErrors ) ); } + +function getPermutations(arr: any[]): any[][] { + if (arr.length === 0) return [[]]; // Basisfall: leeres Array hat eine leere Permutation + + const permutations = []; + + for (let i = 0; i < arr.length; i++) { + // Das aktuelle Element + const currentElement = arr[i]; + + // Restliches Array ohne das aktuelle Element + const remainingElements = arr.slice(0, i).concat(arr.slice(i + 1)); + + // Rekursiv die Permutationen des restlichen Arrays holen + const remainingPermutations = getPermutations(remainingElements); + + // Das aktuelle Element zu jeder der Permutationen hinzufügen + for (const permutation of remainingPermutations) { + permutations.push([currentElement, ...permutation]); + } + } + + return permutations; +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d886c1f..eea0f0f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -454,6 +454,30 @@ importers: specifier: workspace:* version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/unsupported-language: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/unsupported-languages: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/valid-content: dependencies: '@astrojs/starlight': From 9925f3a3735611773dc6eb3256c4074e72acdbe0 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Fri, 10 Jan 2025 22:58:12 +0000 Subject: [PATCH 08/30] [autofix.ci] apply automated fixes --- packages/starlight-spell-checker/index.ts | 22 +++++++---- .../libs/validation.ts | 16 +++++++- .../starlight-spell-checker/tests/utils.ts | 39 ++++++++++++------- 3 files changed, 53 insertions(+), 24 deletions(-) diff --git a/packages/starlight-spell-checker/index.ts b/packages/starlight-spell-checker/index.ts index 08e8d3a..a1b2bc7 100644 --- a/packages/starlight-spell-checker/index.ts +++ b/packages/starlight-spell-checker/index.ts @@ -5,7 +5,12 @@ import { type StarlightSpellCheckerConfig, type StarlightSpellCheckerUserConfig, } from "./libs/config"; -import { logErrors, logUnsupportedLanguages, logWarnings, validateTexts } from "./libs/validation"; +import { + logErrors, + logUnsupportedLanguages, + logWarnings, + validateTexts, +} from "./libs/validation"; import { clearContentLayerCache } from "./libs/astro"; import { remarkStarlightSpellChecker } from "./libs/remark"; import { green } from "kleur/colors"; @@ -47,13 +52,14 @@ export default function starlightSpellChecker( }); }, "astro:build:done": async ({ dir, pages }) => { - const { warnings, errors, unsupportedLanguages } = await validateTexts( - pages, - dir, - astroConfig, - starlightConfig, - config - ); + const { warnings, errors, unsupportedLanguages } = + await validateTexts( + pages, + dir, + astroConfig, + starlightConfig, + config + ); logWarnings(logger, warnings); logErrors(logger, errors); diff --git a/packages/starlight-spell-checker/libs/validation.ts b/packages/starlight-spell-checker/libs/validation.ts index 689b2ba..279ee44 100644 --- a/packages/starlight-spell-checker/libs/validation.ts +++ b/packages/starlight-spell-checker/libs/validation.ts @@ -298,7 +298,20 @@ export function logUnsupportedLanguages( if (unsupportedLanguages.size == 0) { logger.info(green("✓ All languages supported.\n")); } else { - logger.info(yellow(`✗ Unsupported ${pluralize(unsupportedLanguages.size, "language")}: ${red([...unsupportedLanguages].map(error => error.locale).join(yellow(", ")))} (No ${unsupportedLanguages.size == 1 ? "dictionary" : "dictionaries"} available.)`)); + logger.info( + yellow( + `✗ Unsupported ${pluralize( + unsupportedLanguages.size, + "language" + )}: ${red( + [...unsupportedLanguages] + .map((error) => error.locale) + .join(yellow(", ")) + )} (No ${ + unsupportedLanguages.size == 1 ? "dictionary" : "dictionaries" + } available.)` + ) + ); } } @@ -401,7 +414,6 @@ interface ValidationError { suggestions?: string[]; } - type UnsupportedLanguageErrors = Set; interface UnsupportedLanguageError { diff --git a/packages/starlight-spell-checker/tests/utils.ts b/packages/starlight-spell-checker/tests/utils.ts index 5a318ea..9f5bab2 100644 --- a/packages/starlight-spell-checker/tests/utils.ts +++ b/packages/starlight-spell-checker/tests/utils.ts @@ -42,11 +42,22 @@ export function expectValidationSuccess(output: string) { expect(output).toMatch(new RegExp(`All words spelled correctly.`)); } -export function expectValidationUnsupportedLanguage(output: string, locales: string[]) { +export function expectValidationUnsupportedLanguage( + output: string, + locales: string[] +) { const per = getPermutations(locales); - const localePattern = `(${per.map(pair => pair.join(", ")).join("|")})`; - - expect(output).toMatch(new RegExp(`Unsupported ${locales.length === 1 ? "language" : "languages"}: ${localePattern} \\\(No ${locales.length === 1 ? "dictionary" : "dictionaries"} available.\\\)`)); + const localePattern = `(${per.map((pair) => pair.join(", ")).join("|")})`; + + expect(output).toMatch( + new RegExp( + `Unsupported ${ + locales.length === 1 ? "language" : "languages" + }: ${localePattern} \\\(No ${ + locales.length === 1 ? "dictionary" : "dictionaries" + } available.\\\)` + ) + ); } export function expectValidationWarningCount( @@ -143,19 +154,19 @@ function getPermutations(arr: any[]): any[][] { const permutations = []; for (let i = 0; i < arr.length; i++) { - // Das aktuelle Element - const currentElement = arr[i]; + // Das aktuelle Element + const currentElement = arr[i]; - // Restliches Array ohne das aktuelle Element - const remainingElements = arr.slice(0, i).concat(arr.slice(i + 1)); + // Restliches Array ohne das aktuelle Element + const remainingElements = arr.slice(0, i).concat(arr.slice(i + 1)); - // Rekursiv die Permutationen des restlichen Arrays holen - const remainingPermutations = getPermutations(remainingElements); + // Rekursiv die Permutationen des restlichen Arrays holen + const remainingPermutations = getPermutations(remainingElements); - // Das aktuelle Element zu jeder der Permutationen hinzufügen - for (const permutation of remainingPermutations) { - permutations.push([currentElement, ...permutation]); - } + // Das aktuelle Element zu jeder der Permutationen hinzufügen + for (const permutation of remainingPermutations) { + permutations.push([currentElement, ...permutation]); + } } return permutations; From 4bccab15f874ca4ebda7674526ca21dd99c1ef15 Mon Sep 17 00:00:00 2001 From: trueberryless Date: Fri, 10 Jan 2025 23:59:03 +0100 Subject: [PATCH 09/30] no comment --- packages/starlight-spell-checker/tests/utils.ts | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/packages/starlight-spell-checker/tests/utils.ts b/packages/starlight-spell-checker/tests/utils.ts index 9f5bab2..d24063e 100644 --- a/packages/starlight-spell-checker/tests/utils.ts +++ b/packages/starlight-spell-checker/tests/utils.ts @@ -149,25 +149,15 @@ ${validationErrors } function getPermutations(arr: any[]): any[][] { - if (arr.length === 0) return [[]]; // Basisfall: leeres Array hat eine leere Permutation - + if (arr.length === 0) return [[]]; const permutations = []; - for (let i = 0; i < arr.length; i++) { - // Das aktuelle Element const currentElement = arr[i]; - - // Restliches Array ohne das aktuelle Element const remainingElements = arr.slice(0, i).concat(arr.slice(i + 1)); - - // Rekursiv die Permutationen des restlichen Arrays holen const remainingPermutations = getPermutations(remainingElements); - - // Das aktuelle Element zu jeder der Permutationen hinzufügen for (const permutation of remainingPermutations) { permutations.push([currentElement, ...permutation]); } } - return permutations; } From c835e2a107efd52c4d51ddea21b60ed18c967fb0 Mon Sep 17 00:00:00 2001 From: trueberryless Date: Sat, 11 Jan 2025 20:53:26 +0100 Subject: [PATCH 10/30] new tests --- packages/starlight-spell-checker/index.ts | 10 +- packages/starlight-spell-checker/libs/i18n.ts | 2 + .../starlight-spell-checker/libs/remark.ts | 5 +- .../libs/validation.ts | 13 +- packages/starlight-spell-checker/package.json | 12 +- .../tests/assuming.throwError.test.ts | 2 +- ...ons.throwError.ignoreLiteralsFalse.test.ts | 2 +- ...ntractions.throwError.modeStraight.test.ts | 2 +- .../tests/contractions.throwError.test.ts | 2 +- .../tests/diacritics.throwError.test.ts | 26 +++ .../tests/equality.throwError.test.ts | 24 +++ .../astro.config.ts | 24 +++ .../package.json | 10 + .../src/content.config.ts | 7 + .../src/content/docs/index.md | 5 + .../astro.config.ts | 24 +++ .../package.json | 10 + .../src/content.config.ts | 7 + .../src/content/docs/index.md | 5 + .../astro.config.ts | 24 +++ .../package.json | 10 + .../src/content.config.ts | 7 + .../src/content/docs/index.md | 5 + .../astro.config.ts | 24 +++ .../package.json | 10 + .../src/content.config.ts | 7 + .../src/content/docs/index.md | 5 + .../astro.config.ts | 24 +++ .../package.json | 10 + .../src/content.config.ts | 7 + .../src/content/docs/index.md | 6 + .../astro.config.ts | 24 +++ .../package.json | 10 + .../src/content.config.ts | 7 + .../src/content/docs/index.md | 6 + .../indefiniteArticle.throwError.test.ts | 26 +++ pnpm-lock.yaml | 184 +++++++----------- 37 files changed, 440 insertions(+), 148 deletions(-) create mode 100644 packages/starlight-spell-checker/tests/diacritics.throwError.test.ts create mode 100644 packages/starlight-spell-checker/tests/equality.throwError.test.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-invalid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-invalid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-invalid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-invalid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-valid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-valid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-valid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-valid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/equality-throw-error-invalid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/equality-throw-error-invalid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/equality-throw-error-invalid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/equality-throw-error-invalid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/equality-throw-error-valid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/equality-throw-error-valid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/equality-throw-error-valid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/equality-throw-error-valid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-invalid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-invalid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-invalid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-invalid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-valid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-valid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-valid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-valid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/indefiniteArticle.throwError.test.ts diff --git a/packages/starlight-spell-checker/index.ts b/packages/starlight-spell-checker/index.ts index a1b2bc7..408b860 100644 --- a/packages/starlight-spell-checker/index.ts +++ b/packages/starlight-spell-checker/index.ts @@ -51,15 +51,9 @@ export default function starlightSpellChecker( }, }); }, - "astro:build:done": async ({ dir, pages }) => { + "astro:build:done": async () => { const { warnings, errors, unsupportedLanguages } = - await validateTexts( - pages, - dir, - astroConfig, - starlightConfig, - config - ); + await validateTexts(config); logWarnings(logger, warnings); logErrors(logger, errors); diff --git a/packages/starlight-spell-checker/libs/i18n.ts b/packages/starlight-spell-checker/libs/i18n.ts index cc1ce0a..1410d08 100644 --- a/packages/starlight-spell-checker/libs/i18n.ts +++ b/packages/starlight-spell-checker/libs/i18n.ts @@ -1,6 +1,7 @@ import { ensureLeadingSlash, ensureTrailingSlash } from "./path"; import type { StarlightUserConfig } from "./validation"; +import dictionaryDa from "dictionary-da"; import dictionaryDe from "dictionary-de"; import dictionaryEn, { type Dictionary } from "dictionary-en"; import dictionaryEs from "dictionary-es"; @@ -40,6 +41,7 @@ export function getLocaleConfig(config: StarlightUserConfig): LocaleConfig { const dictionaryMapper: Record = { ar: undefined, + da: dictionaryDa, de: dictionaryDe, en: dictionaryEn, es: dictionaryEs, diff --git a/packages/starlight-spell-checker/libs/remark.ts b/packages/starlight-spell-checker/libs/remark.ts index 0e56d76..5b243ea 100644 --- a/packages/starlight-spell-checker/libs/remark.ts +++ b/packages/starlight-spell-checker/libs/remark.ts @@ -3,12 +3,9 @@ import "mdast-util-mdx-jsx"; import nodePath from "node:path"; import { fileURLToPath } from "node:url"; -import { hasProperty } from "hast-util-has-property"; -import type { Nodes } from "hast"; -import { fromHtml } from "hast-util-from-html"; import { slug } from "github-slugger"; import type { Root } from "mdast"; -import { unified, type Plugin } from "unified"; +import { type Plugin } from "unified"; import { visit } from "unist-util-visit"; import { ensureTrailingSlash, stripLeadingSlash } from "./path"; diff --git a/packages/starlight-spell-checker/libs/validation.ts b/packages/starlight-spell-checker/libs/validation.ts index 279ee44..8fa08fe 100644 --- a/packages/starlight-spell-checker/libs/validation.ts +++ b/packages/starlight-spell-checker/libs/validation.ts @@ -1,6 +1,6 @@ import type { StarlightUserConfig as StarlightUserConfigWithPlugins } from "@astrojs/starlight/types"; -import type { AstroConfig, AstroIntegrationLogger } from "astro"; -import { $, bgGreen, black, blue, dim, red, yellow } from "kleur/colors"; +import type { AstroIntegrationLogger } from "astro"; +import { $, bgGreen, black, blue, dim, green, red, yellow } from "kleur/colors"; import type { StarlightSpellCheckerConfig } from "../libs/config"; @@ -55,13 +55,7 @@ export const ValidationErrorType = { Other: "other", } as const; -export async function validateTexts( - pages: PageData[], - outputDir: URL, - astroConfig: AstroConfig, - starlightConfig: StarlightUserConfig, - options: StarlightSpellCheckerConfig -) { +export async function validateTexts(options: StarlightSpellCheckerConfig) { process.stdout.write(`\n${bgGreen(black(` validating spelling `))}\n`); const { contents } = getValidationData(); @@ -166,6 +160,7 @@ export async function validateTexts( let fileWarnings: ValidationError[] = []; for (const error of file.messages.values()) { + console.log(error); const throwError = getThrowErrorForType( validationErrorTypeMapper[error.source ?? "other"], options diff --git a/packages/starlight-spell-checker/package.json b/packages/starlight-spell-checker/package.json index 691115d..3322ef0 100644 --- a/packages/starlight-spell-checker/package.json +++ b/packages/starlight-spell-checker/package.json @@ -43,19 +43,11 @@ "dictionary-pt": "^4.0.0", "dictionary-ru": "^3.0.0", "github-slugger": "^2.0.0", - "hast": "^1.0.0", - "hast-util-from-html": "^2.0.3", - "hast-util-has-property": "^3.0.0", "kleur": "^4.1.5", "mdast": "^3.0.0", "mdast-util-mdx-jsx": "^3.1.3", - "mdast-util-to-string": "^4.0.0", "no-cliches": "^0.3.6", "picomatch": "^4.0.2", - "rehype-stringify": "^10.0.1", - "remark-parse": "^11.0.0", - "remark-rehype": "^11.1.1", - "remark-retext": "^6.0.0", "retext": "^9.0.0", "retext-assuming": "^1.0.0", "retext-case-police": "^1.1.7", @@ -74,11 +66,9 @@ "retext-repeated-words": "^5.0.0", "retext-simplify": "^8.0.0", "retext-spell": "^6.1.0", - "retext-stringify": "^4.0.0", "retext-usage": "^0.5.0", "unified": "^11.0.5", - "unist-util-visit": "^5.0.0", - "vfile-reporter": "^8.1.1" + "unist-util-visit": "^5.0.0" }, "scripts": { "test": "vitest", diff --git a/packages/starlight-spell-checker/tests/assuming.throwError.test.ts b/packages/starlight-spell-checker/tests/assuming.throwError.test.ts index b43c923..d98b7fe 100644 --- a/packages/starlight-spell-checker/tests/assuming.throwError.test.ts +++ b/packages/starlight-spell-checker/tests/assuming.throwError.test.ts @@ -4,7 +4,7 @@ import { ValidationErrorType } from '../libs/validation' import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' -test('builds with valid English content', async () => { +test('builds with assuming throw error valid English content', async () => { const { output, status } = await buildFixture('assuming-throw-error-valid-content') expect(status).toBe('success') diff --git a/packages/starlight-spell-checker/tests/contractions.throwError.ignoreLiteralsFalse.test.ts b/packages/starlight-spell-checker/tests/contractions.throwError.ignoreLiteralsFalse.test.ts index d1cb366..d867aa5 100644 --- a/packages/starlight-spell-checker/tests/contractions.throwError.ignoreLiteralsFalse.test.ts +++ b/packages/starlight-spell-checker/tests/contractions.throwError.ignoreLiteralsFalse.test.ts @@ -4,7 +4,7 @@ import { ValidationErrorType } from '../libs/validation' import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' -test('builds with valid English content', async () => { +test('builds with contractions throw error valid English content', async () => { const { output, status } = await buildFixture('contractions-throw-error-ignore-literals-false-valid-content') expect(status).toBe('success') diff --git a/packages/starlight-spell-checker/tests/contractions.throwError.modeStraight.test.ts b/packages/starlight-spell-checker/tests/contractions.throwError.modeStraight.test.ts index e0df162..8dbaad4 100644 --- a/packages/starlight-spell-checker/tests/contractions.throwError.modeStraight.test.ts +++ b/packages/starlight-spell-checker/tests/contractions.throwError.modeStraight.test.ts @@ -4,7 +4,7 @@ import { ValidationErrorType } from '../libs/validation' import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' -test('builds with valid English content', async () => { +test('builds with contractions throw error valid English content', async () => { const { output, status } = await buildFixture('contractions-throw-error-mode-straight-valid-content') expect(status).toBe('error') diff --git a/packages/starlight-spell-checker/tests/contractions.throwError.test.ts b/packages/starlight-spell-checker/tests/contractions.throwError.test.ts index 42433b2..7ae3332 100644 --- a/packages/starlight-spell-checker/tests/contractions.throwError.test.ts +++ b/packages/starlight-spell-checker/tests/contractions.throwError.test.ts @@ -4,7 +4,7 @@ import { ValidationErrorType } from '../libs/validation' import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' -test('builds with valid English content', async () => { +test('builds with contractions throw error valid English content', async () => { const { output, status } = await buildFixture('contractions-throw-error-valid-content') expect(status).toBe('success') diff --git a/packages/starlight-spell-checker/tests/diacritics.throwError.test.ts b/packages/starlight-spell-checker/tests/diacritics.throwError.test.ts new file mode 100644 index 0000000..2cfc12c --- /dev/null +++ b/packages/starlight-spell-checker/tests/diacritics.throwError.test.ts @@ -0,0 +1,26 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' + +test('builds with diacritics throw error valid English content', async () => { + const { output, status } = await buildFixture('diacritics-throw-error-valid-content') + + expect(status).toBe('success') + expectValidationSuccess(output) +}) + +test('does not build with diacritics throw error invalid English content', async () => { + const { output, status } = await buildFixture('diacritics-throw-error-invalid-content') + + expect(status).toBe('error') + + expectValidationErrorCount(output, 3, 1) + + expectValidationErrors(output, '/', [ + ['Beyonce', ValidationErrorType.Diacritics, ["Beyoncé"]], + ['creme fresh', ValidationErrorType.Diacritics, ["crème fraîche"]], + ['his resume', ValidationErrorType.Diacritics, ["his résumé"]], + ]) +}) diff --git a/packages/starlight-spell-checker/tests/equality.throwError.test.ts b/packages/starlight-spell-checker/tests/equality.throwError.test.ts new file mode 100644 index 0000000..57c73cf --- /dev/null +++ b/packages/starlight-spell-checker/tests/equality.throwError.test.ts @@ -0,0 +1,24 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' + +test('builds with equality throw error valid English content', async () => { + const { output, status } = await buildFixture('equality-throw-error-valid-content') + + expect(status).toBe('success') + expectValidationSuccess(output) +}) + +test('does not build with equality throw error invalid English content', async () => { + const { output, status } = await buildFixture('equality-throw-error-invalid-content') + + expect(status).toBe('error') + + expectValidationErrorCount(output, 1, 1) + + expectValidationErrors(output, '/', [ + ['obviously', ValidationErrorType.Equality], + ]) +}) diff --git a/packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-invalid-content/astro.config.ts new file mode 100644 index 0000000..92ecbfc --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-invalid-content/astro.config.ts @@ -0,0 +1,24 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + diacritics: { + enabled: true, + throwError: true, + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - diacritics throw error invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-invalid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-invalid-content/package.json new file mode 100644 index 0000000..4088b9b --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-invalid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/diacritics-throw-error-invalid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-invalid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-invalid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-invalid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-invalid-content/src/content/docs/index.md new file mode 100644 index 0000000..d6404ba --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-invalid-content/src/content/docs/index.md @@ -0,0 +1,5 @@ +--- +title: Index +--- + +Beyonce is the creme fresh on his resume. diff --git a/packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-valid-content/astro.config.ts new file mode 100644 index 0000000..54ba3c7 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-valid-content/astro.config.ts @@ -0,0 +1,24 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + diacritics: { + enabled: true, + throwError: true, + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - diacritics throw error valid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-valid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-valid-content/package.json new file mode 100644 index 0000000..5f428b4 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-valid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/diacritics-throw-error-valid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-valid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-valid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-valid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-valid-content/src/content/docs/index.md new file mode 100644 index 0000000..0989f8d --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-valid-content/src/content/docs/index.md @@ -0,0 +1,5 @@ +--- +title: Index +--- + +Beyoncé is the crème fraîche on his résumé. diff --git a/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-invalid-content/astro.config.ts new file mode 100644 index 0000000..94289d0 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-invalid-content/astro.config.ts @@ -0,0 +1,24 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + equality: { + enabled: true, + throwError: true, + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - equality throw error invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-invalid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-invalid-content/package.json new file mode 100644 index 0000000..44a5a08 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-invalid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/equality-throw-error-invalid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-invalid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-invalid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-invalid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-invalid-content/src/content/docs/index.md new file mode 100644 index 0000000..389397b --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-invalid-content/src/content/docs/index.md @@ -0,0 +1,5 @@ +--- +title: Index +--- + +Now that the child elements are floated, obviously the parent element will collapse. diff --git a/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-valid-content/astro.config.ts new file mode 100644 index 0000000..31ad4ba --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-valid-content/astro.config.ts @@ -0,0 +1,24 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + equality: { + enabled: true, + throwError: true, + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - equality throw error valid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-valid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-valid-content/package.json new file mode 100644 index 0000000..90eebf8 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-valid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/equality-throw-error-valid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-valid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-valid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-valid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-valid-content/src/content/docs/index.md new file mode 100644 index 0000000..513e958 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-valid-content/src/content/docs/index.md @@ -0,0 +1,5 @@ +--- +title: Index +--- + +Now that the child elements are floated, the parent element will collapse. diff --git a/packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-invalid-content/astro.config.ts new file mode 100644 index 0000000..2c2f97c --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-invalid-content/astro.config.ts @@ -0,0 +1,24 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + indefiniteArticle: { + enabled: true, + throwError: true, + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - indefinite article throw error invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-invalid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-invalid-content/package.json new file mode 100644 index 0000000..937e3e1 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-invalid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/indefinite-article-throw-error-invalid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-invalid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-invalid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-invalid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-invalid-content/src/content/docs/index.md new file mode 100644 index 0000000..fa31e71 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-invalid-content/src/content/docs/index.md @@ -0,0 +1,6 @@ +--- +title: Index +--- + +He should, a 8-year old boy, should have arrived a hour ago on an European flight. +An historic event, or a historic event? Both are fine. diff --git a/packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-valid-content/astro.config.ts new file mode 100644 index 0000000..a5055c1 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-valid-content/astro.config.ts @@ -0,0 +1,24 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + indefiniteArticle: { + enabled: true, + throwError: true, + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - indefinite article throw error valid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-valid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-valid-content/package.json new file mode 100644 index 0000000..c906670 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-valid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/indefinite-article-throw-error-valid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-valid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-valid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-valid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-valid-content/src/content/docs/index.md new file mode 100644 index 0000000..2582328 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-valid-content/src/content/docs/index.md @@ -0,0 +1,6 @@ +--- +title: Index +--- + +He should, an 8-year old boy, should have arrived an hour ago on a European flight. +An historic event, or a historic event? Both are fine. diff --git a/packages/starlight-spell-checker/tests/indefiniteArticle.throwError.test.ts b/packages/starlight-spell-checker/tests/indefiniteArticle.throwError.test.ts new file mode 100644 index 0000000..24f76c4 --- /dev/null +++ b/packages/starlight-spell-checker/tests/indefiniteArticle.throwError.test.ts @@ -0,0 +1,26 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' + +test('builds with indefinite article throw error valid English content', async () => { + const { output, status } = await buildFixture('indefinite-article-throw-error-valid-content') + + expect(status).toBe('success') + expectValidationSuccess(output) +}) + +test('does not build with indefinite article throw error invalid English content', async () => { + const { output, status } = await buildFixture('indefinite-article-throw-error-invalid-content') + + expect(status).toBe('error') + + expectValidationErrorCount(output, 3, 1) + + expectValidationErrors(output, '/', [ + ['a', ValidationErrorType.IndefiniteArticle, ["an"]], + ['a', ValidationErrorType.IndefiniteArticle, ["an"]], + ['an', ValidationErrorType.IndefiniteArticle, ["a"]], + ]) +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eea0f0f..36fa90e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -65,15 +65,6 @@ importers: github-slugger: specifier: ^2.0.0 version: 2.0.0 - hast: - specifier: ^1.0.0 - version: 1.0.0 - hast-util-from-html: - specifier: ^2.0.3 - version: 2.0.3 - hast-util-has-property: - specifier: ^3.0.0 - version: 3.0.0 kleur: specifier: ^4.1.5 version: 4.1.5 @@ -83,27 +74,12 @@ importers: mdast-util-mdx-jsx: specifier: ^3.1.3 version: 3.1.3 - mdast-util-to-string: - specifier: ^4.0.0 - version: 4.0.0 no-cliches: specifier: ^0.3.6 version: 0.3.6 picomatch: specifier: ^4.0.2 version: 4.0.2 - rehype-stringify: - specifier: ^10.0.1 - version: 10.0.1 - remark-parse: - specifier: ^11.0.0 - version: 11.0.0 - remark-rehype: - specifier: ^11.1.1 - version: 11.1.1 - remark-retext: - specifier: ^6.0.0 - version: 6.0.0 retext: specifier: ^9.0.0 version: 9.0.0 @@ -158,9 +134,6 @@ importers: retext-spell: specifier: ^6.1.0 version: 6.1.0 - retext-stringify: - specifier: ^4.0.0 - version: 4.0.0 retext-usage: specifier: ^0.5.0 version: 0.5.0 @@ -170,9 +143,6 @@ importers: unist-util-visit: specifier: ^5.0.0 version: 5.0.0 - vfile-reporter: - specifier: ^8.1.1 - version: 8.1.1 devDependencies: '@astrojs/starlight': specifier: ^0.30.3 @@ -310,6 +280,78 @@ importers: specifier: workspace:* version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-invalid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/diacritics-throw-error-valid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/equality-throw-error-invalid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/equality-throw-error-valid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-invalid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/indefinite-article-throw-error-valid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/invalid-content: dependencies: '@astrojs/starlight': @@ -1321,9 +1363,6 @@ packages: '@types/sax@1.2.7': resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} - '@types/supports-color@8.1.3': - resolution: {integrity: sha512-Hy6UMpxhE3j1tLpl27exp1XqHD7n8chAiNPzWfz16LPZoMMoSc4dzLl6w9qijkEb/r5O1ozdu1CWGA2L83ZeZg==} - '@types/unist@2.0.11': resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} @@ -1969,10 +2008,6 @@ packages: hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - hast@1.0.0: - resolution: {integrity: sha512-vFUqlRV5C+xqP76Wwq2SrM0kipnmpxJm7OfvVXpB35Fp+Fn4MV+ozr+JZr5qFvyR1q/U+Foim2x+3P+x9S1PLA==} - deprecated: Renamed to rehype - hastscript@9.0.0: resolution: {integrity: sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==} @@ -2217,9 +2252,6 @@ packages: mdast-util-to-markdown@2.1.2: resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} - mdast-util-to-nlcst@7.0.1: - resolution: {integrity: sha512-iMucBmaHxOpreaPPR87U9NrfGqzyoKXFY1zdbtFVsckLWOi/iIshu6bFLsax0mIm9fQI+MpYpu8pBhyN7rkIGA==} - mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} @@ -2682,9 +2714,6 @@ packages: remark-rehype@11.1.1: resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==} - remark-retext@6.0.0: - resolution: {integrity: sha512-VYs0p+3G4DKm/KtWx7LV8YPbyX4CjBf1SZcEk2usEv3QK6JK4g5EfurDAPUmGVZOx/NcqOiNbozfGqpl2HQfTA==} - remark-smartypants@3.0.2: resolution: {integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==} engines: {node: '>=16.0.0'} @@ -2874,10 +2903,6 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} - string-width@6.1.0: - resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==} - engines: {node: '>=16'} - string-width@7.2.0: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} @@ -2904,10 +2929,6 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} - supports-color@9.4.0: - resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} - engines: {node: '>=12'} - syllable@5.0.1: resolution: {integrity: sha512-HWtNCp6v7J8H0lrT8j1HHjfOLltRoDcC7QRFVu25p4BE52JqetXG65nqC7CsatT8WQRfY4Qvh93BWJIUxbmXFg==} hasBin: true @@ -3132,15 +3153,6 @@ packages: vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} - vfile-reporter@8.1.1: - resolution: {integrity: sha512-qxRZcnFSQt6pWKn3PAk81yLK2rO2i7CDXpy8v8ZquiEOMLSnPw6BMSi9Y1sUCwGGl7a9b3CJT1CKpnRF7pp66g==} - - vfile-sort@4.0.0: - resolution: {integrity: sha512-lffPI1JrbHDTToJwcq0rl6rBmkjQmMuXkAxsZPRS9DXbaJQvc642eCg6EGxcX2i1L+esbuhq+2l9tBll5v8AeQ==} - - vfile-statistics@3.0.0: - resolution: {integrity: sha512-/qlwqwWBWFOmpXujL/20P+Iuydil0rZZNglR+VNm6J0gpLHwuVM5s7g2TfVoswbXjZ4HuIhLMySEyIw5i7/D8w==} - vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} @@ -4128,8 +4140,6 @@ snapshots: dependencies: '@types/node': 17.0.45 - '@types/supports-color@8.1.3': {} - '@types/unist@2.0.11': {} '@types/unist@3.0.3': {} @@ -5000,8 +5010,6 @@ snapshots: dependencies: '@types/hast': 3.0.4 - hast@1.0.0: {} - hastscript@9.0.0: dependencies: '@types/hast': 3.0.4 @@ -5352,16 +5360,6 @@ snapshots: unist-util-visit: 5.0.0 zwitch: 2.0.4 - mdast-util-to-nlcst@7.0.1: - dependencies: - '@types/mdast': 4.0.4 - '@types/nlcst': 2.0.3 - '@types/unist': 3.0.3 - nlcst-to-string: 4.0.0 - unist-util-position: 5.0.0 - vfile: 6.0.3 - vfile-location: 5.0.3 - mdast-util-to-string@4.0.0: dependencies: '@types/mdast': 4.0.4 @@ -6048,15 +6046,6 @@ snapshots: unified: 11.0.5 vfile: 6.0.3 - remark-retext@6.0.0: - dependencies: - '@types/mdast': 4.0.4 - '@types/nlcst': 2.0.3 - mdast-util-to-nlcst: 7.0.1 - parse-latin: 7.0.0 - unified: 11.0.5 - vfile: 6.0.3 - remark-smartypants@3.0.2: dependencies: retext: 9.0.0 @@ -6416,12 +6405,6 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 - string-width@6.1.0: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 10.4.0 - strip-ansi: 7.1.0 - string-width@7.2.0: dependencies: emoji-regex: 10.4.0 @@ -6451,8 +6434,6 @@ snapshots: dependencies: has-flag: 4.0.0 - supports-color@9.4.0: {} - syllable@5.0.1: dependencies: '@types/pluralize': 0.0.29 @@ -6642,27 +6623,6 @@ snapshots: '@types/unist': 3.0.3 unist-util-stringify-position: 4.0.0 - vfile-reporter@8.1.1: - dependencies: - '@types/supports-color': 8.1.3 - string-width: 6.1.0 - supports-color: 9.4.0 - unist-util-stringify-position: 4.0.0 - vfile: 6.0.3 - vfile-message: 4.0.2 - vfile-sort: 4.0.0 - vfile-statistics: 3.0.0 - - vfile-sort@4.0.0: - dependencies: - vfile: 6.0.3 - vfile-message: 4.0.2 - - vfile-statistics@3.0.0: - dependencies: - vfile: 6.0.3 - vfile-message: 4.0.2 - vfile@6.0.3: dependencies: '@types/unist': 3.0.3 From e3bac4f6100f5595c89699223740eb2bbedc1064 Mon Sep 17 00:00:00 2001 From: trueberryless Date: Sun, 12 Jan 2025 15:16:20 +0100 Subject: [PATCH 11/30] new tests for equality binary and intensify --- .../libs/validation.ts | 2 +- .../equality.throwError.binaryTrue.test.ts | 24 ++++++++++ .../tests/equality.throwError.test.ts | 6 ++- .../astro.config.ts | 25 ++++++++++ .../package.json | 10 ++++ .../src/content.config.ts | 7 +++ .../src/content/docs/index.md | 6 +++ .../astro.config.ts | 25 ++++++++++ .../package.json | 10 ++++ .../src/content.config.ts | 7 +++ .../src/content/docs/index.md | 6 +++ .../src/content/docs/index.md | 1 + .../src/content/docs/index.md | 1 + .../astro.config.ts | 24 ++++++++++ .../package.json | 10 ++++ .../src/content.config.ts | 7 +++ .../src/content/docs/index.md | 5 ++ .../astro.config.ts | 24 ++++++++++ .../package.json | 10 ++++ .../src/content.config.ts | 7 +++ .../src/content/docs/index.md | 5 ++ .../tests/intensify.throwError.test.ts | 28 +++++++++++ pnpm-lock.yaml | 48 +++++++++++++++++++ 23 files changed, 295 insertions(+), 3 deletions(-) create mode 100644 packages/starlight-spell-checker/tests/equality.throwError.binaryTrue.test.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-invalid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-invalid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-invalid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-invalid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-valid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-valid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-valid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-valid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-invalid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-invalid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-invalid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-invalid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-valid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-valid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-valid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-valid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/intensify.throwError.test.ts diff --git a/packages/starlight-spell-checker/libs/validation.ts b/packages/starlight-spell-checker/libs/validation.ts index 8fa08fe..9d68795 100644 --- a/packages/starlight-spell-checker/libs/validation.ts +++ b/packages/starlight-spell-checker/libs/validation.ts @@ -160,7 +160,7 @@ export async function validateTexts(options: StarlightSpellCheckerConfig) { let fileWarnings: ValidationError[] = []; for (const error of file.messages.values()) { - console.log(error); + // console.log(error); const throwError = getThrowErrorForType( validationErrorTypeMapper[error.source ?? "other"], options diff --git a/packages/starlight-spell-checker/tests/equality.throwError.binaryTrue.test.ts b/packages/starlight-spell-checker/tests/equality.throwError.binaryTrue.test.ts new file mode 100644 index 0000000..762fa58 --- /dev/null +++ b/packages/starlight-spell-checker/tests/equality.throwError.binaryTrue.test.ts @@ -0,0 +1,24 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' + +test('builds with equality throw error binary true valid English content', async () => { + const { output, status } = await buildFixture('equality-throw-error-binary-true-valid-content') + + expect(status).toBe('success') + expectValidationSuccess(output) +}) + +test('does not build with equality throw error binary true invalid English content', async () => { + const { output, status } = await buildFixture('equality-throw-error-binary-true-invalid-content') + + expect(status).toBe('error') + + expectValidationErrorCount(output, 1, 1) + + expectValidationErrors(output, '/', [ + ['obviously', ValidationErrorType.Equality, []], + ]) +}) diff --git a/packages/starlight-spell-checker/tests/equality.throwError.test.ts b/packages/starlight-spell-checker/tests/equality.throwError.test.ts index 57c73cf..74ecd31 100644 --- a/packages/starlight-spell-checker/tests/equality.throwError.test.ts +++ b/packages/starlight-spell-checker/tests/equality.throwError.test.ts @@ -16,9 +16,11 @@ test('does not build with equality throw error invalid English content', async ( expect(status).toBe('error') - expectValidationErrorCount(output, 1, 1) + expectValidationErrorCount(output, 3, 1) expectValidationErrors(output, '/', [ - ['obviously', ValidationErrorType.Equality], + ['obviously', ValidationErrorType.Equality, []], + ['Brother', ValidationErrorType.Equality, ["Sibling"]], + ['sister', ValidationErrorType.Equality, ["sibling"]], ]) }) diff --git a/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-invalid-content/astro.config.ts new file mode 100644 index 0000000..dfb8e78 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-invalid-content/astro.config.ts @@ -0,0 +1,25 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + equality: { + enabled: true, + throwError: true, + binary: true, + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - equality throw error binary true invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-invalid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-invalid-content/package.json new file mode 100644 index 0000000..03c3f97 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-invalid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/equality-throw-error-binary-true-invalid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-invalid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-invalid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-invalid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-invalid-content/src/content/docs/index.md new file mode 100644 index 0000000..d6516f4 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-invalid-content/src/content/docs/index.md @@ -0,0 +1,6 @@ +--- +title: Index +--- + +Now that the child elements are floated, obviously the parent element will collapse. +Brother and sister grew up together. diff --git a/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-valid-content/astro.config.ts new file mode 100644 index 0000000..e9d02bd --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-valid-content/astro.config.ts @@ -0,0 +1,25 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + equality: { + enabled: true, + throwError: true, + binary: true, + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - equality throw error binary true valid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-valid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-valid-content/package.json new file mode 100644 index 0000000..38c8719 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-valid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/equality-throw-error-binary-true-valid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-valid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-valid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-valid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-valid-content/src/content/docs/index.md new file mode 100644 index 0000000..c85369d --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-valid-content/src/content/docs/index.md @@ -0,0 +1,6 @@ +--- +title: Index +--- + +Now that the child elements are floated, the parent element will collapse. +The siblings grew up together. diff --git a/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-invalid-content/src/content/docs/index.md index 389397b..d6516f4 100644 --- a/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-invalid-content/src/content/docs/index.md +++ b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-invalid-content/src/content/docs/index.md @@ -3,3 +3,4 @@ title: Index --- Now that the child elements are floated, obviously the parent element will collapse. +Brother and sister grew up together. diff --git a/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-valid-content/src/content/docs/index.md index 513e958..c85369d 100644 --- a/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-valid-content/src/content/docs/index.md +++ b/packages/starlight-spell-checker/tests/fixtures/equality-throw-error-valid-content/src/content/docs/index.md @@ -3,3 +3,4 @@ title: Index --- Now that the child elements are floated, the parent element will collapse. +The siblings grew up together. diff --git a/packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-invalid-content/astro.config.ts new file mode 100644 index 0000000..326fe31 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-invalid-content/astro.config.ts @@ -0,0 +1,24 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + intensify: { + enabled: true, + throwError: true, + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - intensify throw error invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-invalid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-invalid-content/package.json new file mode 100644 index 0000000..ea01de5 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-invalid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/intensify-throw-error-invalid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-invalid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-invalid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-invalid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-invalid-content/src/content/docs/index.md new file mode 100644 index 0000000..969c416 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-invalid-content/src/content/docs/index.md @@ -0,0 +1,5 @@ +--- +title: Index +--- + +Some people say there are quite some problems, apparently. diff --git a/packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-valid-content/astro.config.ts new file mode 100644 index 0000000..818a013 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-valid-content/astro.config.ts @@ -0,0 +1,24 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + intensify: { + enabled: true, + throwError: true, + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - intensify throw error valid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-valid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-valid-content/package.json new file mode 100644 index 0000000..eccae72 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-valid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/intensify-throw-error-valid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-valid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-valid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-valid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-valid-content/src/content/docs/index.md new file mode 100644 index 0000000..65f1664 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-valid-content/src/content/docs/index.md @@ -0,0 +1,5 @@ +--- +title: Index +--- + +There are problems. diff --git a/packages/starlight-spell-checker/tests/intensify.throwError.test.ts b/packages/starlight-spell-checker/tests/intensify.throwError.test.ts new file mode 100644 index 0000000..2f8fa24 --- /dev/null +++ b/packages/starlight-spell-checker/tests/intensify.throwError.test.ts @@ -0,0 +1,28 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' + +test('builds with intensify throw error valid English content', async () => { + const { output, status } = await buildFixture('intensify-throw-error-valid-content') + + expect(status).toBe('success') + expectValidationSuccess(output) +}) + +test('does not build with intensify throw error invalid English content', async () => { + const { output, status } = await buildFixture('intensify-throw-error-invalid-content') + + expect(status).toBe('error') + + expectValidationErrorCount(output, 5, 1) + + expectValidationErrors(output, '/', [ + ['Some', ValidationErrorType.Intensify, []], + ['say', ValidationErrorType.Intensify, []], + ['quite', ValidationErrorType.Intensify, []], + ['some', ValidationErrorType.Intensify, []], + ['apparently', ValidationErrorType.Intensify, []], + ]) +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 36fa90e..7a7eff2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -304,6 +304,30 @@ importers: specifier: workspace:* version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-invalid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/equality-throw-error-binary-true-valid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/equality-throw-error-invalid-content: dependencies: '@astrojs/starlight': @@ -352,6 +376,30 @@ importers: specifier: workspace:* version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-invalid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/intensify-throw-error-valid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/invalid-content: dependencies: '@astrojs/starlight': From 3304490c4b715623d00de930e04d952ca3f47951 Mon Sep 17 00:00:00 2001 From: trueberryless Date: Mon, 13 Jan 2025 12:53:40 +0100 Subject: [PATCH 12/30] passive and profanities --- .../libs/validation.ts | 17 +++- .../tests/assuming.throwError.test.ts | 16 ++-- .../tests/basics.test.ts | 72 ++++++++--------- .../tests/casePolice.throwError.test.ts | 78 +++++++++---------- ...ons.throwError.ignoreLiteralsFalse.test.ts | 8 +- ...ntractions.throwError.modeStraight.test.ts | 8 +- .../tests/contractions.throwError.test.ts | 4 +- .../tests/diacritics.throwError.test.ts | 6 +- .../equality.throwError.binaryTrue.test.ts | 2 +- .../tests/equality.throwError.test.ts | 6 +- .../astro.config.ts | 24 ++++++ .../package.json | 10 +++ .../src/content.config.ts | 7 ++ .../src/content/docs/index.md | 5 ++ .../astro.config.ts | 24 ++++++ .../package.json | 10 +++ .../src/content.config.ts | 7 ++ .../src/content/docs/index.md | 5 ++ .../astro.config.ts | 38 +++++++++ .../package.json | 10 +++ .../src/content.config.ts | 7 ++ .../src/content/docs/de/index.md | 5 ++ .../src/content/docs/fr/index.md | 6 ++ .../src/content/docs/index.md | 5 ++ .../astro.config.ts | 39 ++++++++++ .../package.json | 10 +++ .../src/content.config.ts | 7 ++ .../src/content/docs/de/index.md | 5 ++ .../src/content/docs/fr/index.md | 6 ++ .../src/content/docs/index.md | 5 ++ .../astro.config.ts | 39 ++++++++++ .../package.json | 10 +++ .../src/content.config.ts | 7 ++ .../src/content/docs/de/index.md | 5 ++ .../src/content/docs/fr/index.md | 6 ++ .../src/content/docs/index.md | 5 ++ .../astro.config.ts | 38 +++++++++ .../package.json | 10 +++ .../src/content.config.ts | 7 ++ .../src/content/docs/de/index.md | 5 ++ .../src/content/docs/fr/index.md | 6 ++ .../src/content/docs/index.md | 5 ++ .../indefiniteArticle.throwError.test.ts | 6 +- .../tests/intensify.throwError.test.ts | 10 +-- .../tests/passive.throwError.test.ts | 25 ++++++ .../profanities.throwError.sureness2.test.ts | 25 ++++++ .../tests/profanities.throwError.test.ts | 31 ++++++++ .../tests/spell.throwError.test.ts | 72 ++++++++--------- .../starlight-spell-checker/tests/utils.ts | 10 ++- pnpm-lock.yaml | 72 +++++++++++++++++ 50 files changed, 695 insertions(+), 151 deletions(-) create mode 100644 packages/starlight-spell-checker/tests/fixtures/passive-throw-error-invalid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/passive-throw-error-invalid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/passive-throw-error-invalid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/passive-throw-error-invalid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/passive-throw-error-valid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/passive-throw-error-valid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/passive-throw-error-valid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/passive-throw-error-valid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-invalid-content-multilingual/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-invalid-content-multilingual/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-invalid-content-multilingual/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-invalid-content-multilingual/src/content/docs/de/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-invalid-content-multilingual/src/content/docs/fr/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-invalid-content-multilingual/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-invalid-content-multilingual/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-invalid-content-multilingual/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-invalid-content-multilingual/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-invalid-content-multilingual/src/content/docs/de/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-invalid-content-multilingual/src/content/docs/fr/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-invalid-content-multilingual/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-valid-content-multilingual/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-valid-content-multilingual/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-valid-content-multilingual/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-valid-content-multilingual/src/content/docs/de/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-valid-content-multilingual/src/content/docs/fr/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-valid-content-multilingual/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-valid-content-multilingual/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-valid-content-multilingual/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-valid-content-multilingual/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-valid-content-multilingual/src/content/docs/de/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-valid-content-multilingual/src/content/docs/fr/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-valid-content-multilingual/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/passive.throwError.test.ts create mode 100644 packages/starlight-spell-checker/tests/profanities.throwError.sureness2.test.ts create mode 100644 packages/starlight-spell-checker/tests/profanities.throwError.test.ts diff --git a/packages/starlight-spell-checker/libs/validation.ts b/packages/starlight-spell-checker/libs/validation.ts index 9d68795..9e131e6 100644 --- a/packages/starlight-spell-checker/libs/validation.ts +++ b/packages/starlight-spell-checker/libs/validation.ts @@ -160,7 +160,7 @@ export async function validateTexts(options: StarlightSpellCheckerConfig) { let fileWarnings: ValidationError[] = []; for (const error of file.messages.values()) { - // console.log(error); + console.log(error); const throwError = getThrowErrorForType( validationErrorTypeMapper[error.source ?? "other"], options @@ -170,12 +170,14 @@ export async function validateTexts(options: StarlightSpellCheckerConfig) { fileErrors.push({ word: error.actual ?? "", type: validationErrorTypeMapper[error.source ?? "other"], + rule: error.ruleId ?? "", suggestions: error.expected ?? [], }); } else { fileWarnings.push({ word: error.actual ?? "", type: validationErrorTypeMapper[error.source ?? "other"], + rule: error.ruleId ?? "", suggestions: error.expected ?? [], }); } @@ -226,7 +228,7 @@ export function logWarnings( logger.info( ` ${blue(`${index < validationWarnings.length - 1 ? "├" : "└"}─`)} ${ validationWarning.word - }${dim(` - ${validationWarning.type}`)}${ + }${dim(` - ${validationWarning.type} - ${validationWarning.rule}`)}${ validationWarning.suggestions ? validationWarning.suggestions.length > 0 ? ` (${validationWarning.suggestions.join(", ")})` @@ -270,7 +272,7 @@ export function logErrors( logger.info( ` ${blue(`${index < validationErrors.length - 1 ? "├" : "└"}─`)} ${ validationError.word - }${dim(` - ${validationError.type}`)}${ + }${dim(` - ${validationError.type} - ${validationError.rule}`)}${ validationError.suggestions ? validationError.suggestions.length > 0 ? ` (${validationError.suggestions.join(", ")})` @@ -406,6 +408,7 @@ export type ValidationErrorType = interface ValidationError { word: string; type: ValidationErrorType; + rule: string; suggestions?: string[]; } @@ -427,6 +430,14 @@ const validationErrorTypeMapper: Record = { "retext-overuse": ValidationErrorType.Overuse, "retext-passive": ValidationErrorType.Passive, "retext-profanities": ValidationErrorType.Profanities, + "retext-profanities-ar-latn": ValidationErrorType.Profanities, + "retext-profanities-ar": ValidationErrorType.Profanities, + "retext-profanities-fr": ValidationErrorType.Profanities, + "retext-profanities-en": ValidationErrorType.Profanities, + "retext-profanities-es": ValidationErrorType.Profanities, + "retext-profanities-it": ValidationErrorType.Profanities, + "retext-profanities-pt": ValidationErrorType.Profanities, + "retext-profanities-pt-pt": ValidationErrorType.Profanities, "retext-readability": ValidationErrorType.Readability, "retext-redundant-acronyms": ValidationErrorType.RedundantAcronyms, "retext-repeated-words": ValidationErrorType.RepeatedWords, diff --git a/packages/starlight-spell-checker/tests/assuming.throwError.test.ts b/packages/starlight-spell-checker/tests/assuming.throwError.test.ts index d98b7fe..8e89369 100644 --- a/packages/starlight-spell-checker/tests/assuming.throwError.test.ts +++ b/packages/starlight-spell-checker/tests/assuming.throwError.test.ts @@ -18,12 +18,12 @@ test('does not build with assuming throw error invalid English content', async ( expectValidationErrorCount(output, 6, 1) - expectValidationErrors(output, '/', [ - ['diped', ValidationErrorType.Assuming, ["dipped", "doped", "duped", "biped", "diced", "died", "diked", "dined", "dived", "piped", "wiped"]], - ['horison', ValidationErrorType.Assuming, ["orison", "horizon", "Morison"]], - ['heus', ValidationErrorType.Assuming, ["hers", "hews", "he's", "hems", "hens", "hes", "hues", "Hess", "Hus", "Zeus"]], - ['evaning', ValidationErrorType.Assuming, ["evading", "evening"]], - ['breze', ValidationErrorType.Assuming, ["breeze", "braze", "breve"]], - ['thrugh', ValidationErrorType.Assuming, ["though", "through", "thrush"]], - ]) + // expectValidationErrors(output, '/', [ + // ['diped', ValidationErrorType.Assuming, ["dipped", "doped", "duped", "biped", "diced", "died", "diked", "dined", "dived", "piped", "wiped"]], + // ['horison', ValidationErrorType.Assuming, ["orison", "horizon", "Morison"]], + // ['heus', ValidationErrorType.Assuming, ["hers", "hews", "he's", "hems", "hens", "hes", "hues", "Hess", "Hus", "Zeus"]], + // ['evaning', ValidationErrorType.Assuming, ["evading", "evening"]], + // ['breze', ValidationErrorType.Assuming, ["breeze", "braze", "breve"]], + // ['thrugh', ValidationErrorType.Assuming, ["though", "through", "thrush"]], + // ]) }) diff --git a/packages/starlight-spell-checker/tests/basics.test.ts b/packages/starlight-spell-checker/tests/basics.test.ts index 2c2d85c..f8297ca 100644 --- a/packages/starlight-spell-checker/tests/basics.test.ts +++ b/packages/starlight-spell-checker/tests/basics.test.ts @@ -40,12 +40,12 @@ test('builds with invalid English content, but warnings', async () => { expectValidationWarningCount(output, 6, 1) expectValidationWarnings(output, 'test/', [ - ['diped', ValidationErrorType.Spell, ["dipped", "doped", "duped", "biped", "diced", "died", "diked", "dined", "dived", "piped", "wiped"]], - ['horison', ValidationErrorType.Spell, ["orison", "horizon", "Morison"]], - ['heus', ValidationErrorType.Spell, ["hers", "hews", "he's", "hems", "hens", "hes", "hues", "Hess", "Hus", "Zeus"]], - ['evaning', ValidationErrorType.Spell, ["evading", "evening"]], - ['breze', ValidationErrorType.Spell, ["breeze", "braze", "breve"]], - ['thrugh', ValidationErrorType.Spell, ["though", "through", "thrush"]], + ['diped', ValidationErrorType.Spell, "diped", ["dipped", "doped", "duped", "biped", "diced", "died", "diked", "dined", "dived", "piped", "wiped"]], + ['horison', ValidationErrorType.Spell, "horison", ["orison", "horizon", "Morison"]], + ['heus', ValidationErrorType.Spell, "heus", ["hers", "hews", "he's", "hems", "hens", "hes", "hues", "Hess", "Hus", "Zeus"]], + ['evaning', ValidationErrorType.Spell, "evaning", ["evading", "evening"]], + ['breze', ValidationErrorType.Spell, "breze", ["breeze", "braze", "breve"]], + ['thrugh', ValidationErrorType.Spell, "thrugh", ["though", "through", "thrush"]], ]) }) @@ -57,12 +57,12 @@ test('builds with invalid German content, but warnings', async () => { expectValidationWarningCount(output, 6, 1) expectValidationWarnings(output, 'test/', [ - ['tachte', ValidationErrorType.Spell, ["dachte", "fachte", "pachte", "wachte", "takte", "-achte", "achte", "lachte", "machte", "sachte", "tauchte", "trachte"]], - ['Horisont', ValidationErrorType.Spell, ["Horizont"]], - ['Tönnen', ValidationErrorType.Spell, ["Tönen", "Gönnen", "Können", "Tannen", "Tennen", "Tonnen", "Tönten"]], - ['Briese', ValidationErrorType.Spell, ["Brise", "Briefe", "Friese", "Priese", "Riese", "-riese"]], - ['Abbends', ValidationErrorType.Spell, ["Abends"]], - ['durh', ValidationErrorType.Spell, ["durch", "Dur"]], + ['tachte', ValidationErrorType.Spell, "tachte", ["dachte", "fachte", "pachte", "wachte", "takte", "-achte", "achte", "lachte", "machte", "sachte", "tauchte", "trachte"]], + ['Horisont', ValidationErrorType.Spell, "horisont", ["Horizont"]], + ['Tönnen', ValidationErrorType.Spell, "t-nnen", ["Tönen", "Gönnen", "Können", "Tannen", "Tennen", "Tonnen", "Tönten"]], + ['Briese', ValidationErrorType.Spell, "briese", ["Brise", "Briefe", "Friese", "Priese", "Riese", "-riese"]], + ['Abbends', ValidationErrorType.Spell, "abbends", ["Abends"]], + ['durh', ValidationErrorType.Spell, "durh", ["durch", "Dur"]], ]) }) @@ -74,12 +74,12 @@ test('builds with invalid French content, but warnings', async () => { expectValidationWarningCount(output, 6, 1) expectValidationWarnings(output, 'test/', [ - ['ploungé', ValidationErrorType.Spell, ["plongé"]], - ['l\'horison', ValidationErrorType.Spell, ["l’horizon", "l’horion"]], - ['tientes', ValidationErrorType.Spell, ["fientes", "teintes", "tentes", "tiennes", "tintes"]], - ['briese', ValidationErrorType.Spell, ["briefe", "bries", "brise"]], - ['sior', ValidationErrorType.Spell, ["sir", "soir", "Dior", "Sion"]], - ['tràvers', ValidationErrorType.Spell, ["travers"]], + ['ploungé', ValidationErrorType.Spell, "ploung-", ["plongé"]], + ['l\'horison', ValidationErrorType.Spell, "l-horison", ["l’horizon", "l’horion"]], + ['tientes', ValidationErrorType.Spell, "tientes", ["fientes", "teintes", "tentes", "tiennes", "tintes"]], + ['briese', ValidationErrorType.Spell, "briese", ["briefe", "bries", "brise"]], + ['sior', ValidationErrorType.Spell, "sior", ["sir", "soir", "Dior", "Sion"]], + ['tràvers', ValidationErrorType.Spell, "tr-vers", ["travers"]], ]) }) @@ -91,29 +91,29 @@ test('builds with invalid Multilingual content, but warnings', async () => { expectValidationWarningCount(output, 18, 3) expectValidationWarnings(output, 'test/', [ - ['diped', ValidationErrorType.Spell, ["dipped", "doped", "duped", "biped", "diced", "died", "diked", "dined", "dived", "piped", "wiped"]], - ['horison', ValidationErrorType.Spell, ["orison", "horizon", "Morison"]], - ['heus', ValidationErrorType.Spell, ["hers", "hews", "he's", "hems", "hens", "hes", "hues", "Hess", "Hus", "Zeus"]], - ['evaning', ValidationErrorType.Spell, ["evading", "evening"]], - ['breze', ValidationErrorType.Spell, ["breeze", "braze", "breve"]], - ['thrugh', ValidationErrorType.Spell, ["though", "through", "thrush"]], + ['diped', ValidationErrorType.Spell, "diped", ["dipped", "doped", "duped", "biped", "diced", "died", "diked", "dined", "dived", "piped", "wiped"]], + ['horison', ValidationErrorType.Spell, "horison", ["orison", "horizon", "Morison"]], + ['heus', ValidationErrorType.Spell, "heus", ["hers", "hews", "he's", "hems", "hens", "hes", "hues", "Hess", "Hus", "Zeus"]], + ['evaning', ValidationErrorType.Spell, "evaning", ["evading", "evening"]], + ['breze', ValidationErrorType.Spell, "breze", ["breeze", "braze", "breve"]], + ['thrugh', ValidationErrorType.Spell, "thrugh", ["though", "through", "thrush"]], ]) expectValidationWarnings(output, 'de/test/', [ - ['tachte', ValidationErrorType.Spell, ["dachte", "fachte", "pachte", "wachte", "takte", "-achte", "achte", "lachte", "machte", "sachte", "tauchte", "trachte"]], - ['Horisont', ValidationErrorType.Spell, ["Horizont"]], - ['Tönnen', ValidationErrorType.Spell, ["Tönen", "Gönnen", "Können", "Tannen", "Tennen", "Tonnen", "Tönten"]], - ['Briese', ValidationErrorType.Spell, ["Brise", "Briefe", "Friese", "Priese", "Riese", "-riese"]], - ['Abbends', ValidationErrorType.Spell, ["Abends"]], - ['durh', ValidationErrorType.Spell, ["durch", "Dur"]], + ['tachte', ValidationErrorType.Spell, "tachte", ["dachte", "fachte", "pachte", "wachte", "takte", "-achte", "achte", "lachte", "machte", "sachte", "tauchte", "trachte"]], + ['Horisont', ValidationErrorType.Spell, "horisont", ["Horizont"]], + ['Tönnen', ValidationErrorType.Spell, "t-nnen", ["Tönen", "Gönnen", "Können", "Tannen", "Tennen", "Tonnen", "Tönten"]], + ['Briese', ValidationErrorType.Spell, "briese", ["Brise", "Briefe", "Friese", "Priese", "Riese", "-riese"]], + ['Abbends', ValidationErrorType.Spell, "abbends", ["Abends"]], + ['durh', ValidationErrorType.Spell, "durh", ["durch", "Dur"]], ]) expectValidationWarnings(output, 'fr/test/', [ - ['ploungé', ValidationErrorType.Spell, ["plongé"]], - ['l\'horison', ValidationErrorType.Spell, ["l’horizon", "l’horion"]], - ['tientes', ValidationErrorType.Spell, ["fientes", "teintes", "tentes", "tiennes", "tintes"]], - ['briese', ValidationErrorType.Spell, ["briefe", "bries", "brise"]], - ['sior', ValidationErrorType.Spell, ["sir", "soir", "Dior", "Sion"]], - ['tràvers', ValidationErrorType.Spell, ["travers"]], + ['ploungé', ValidationErrorType.Spell, "ploung-", ["plongé"]], + ['l\'horison', ValidationErrorType.Spell, "l-horison", ["l’horizon", "l’horion"]], + ['tientes', ValidationErrorType.Spell, "tientes", ["fientes", "teintes", "tentes", "tiennes", "tintes"]], + ['briese', ValidationErrorType.Spell, "briese", ["briefe", "bries", "brise"]], + ['sior', ValidationErrorType.Spell, "sior", ["sir", "soir", "Dior", "Sion"]], + ['tràvers', ValidationErrorType.Spell, "tr-vers", ["travers"]], ]) }) \ No newline at end of file diff --git a/packages/starlight-spell-checker/tests/casePolice.throwError.test.ts b/packages/starlight-spell-checker/tests/casePolice.throwError.test.ts index e5c8f31..8009434 100644 --- a/packages/starlight-spell-checker/tests/casePolice.throwError.test.ts +++ b/packages/starlight-spell-checker/tests/casePolice.throwError.test.ts @@ -19,50 +19,50 @@ test('does not build with case police throw error invalid Multilingual content', expectValidationErrorCount(output, 39, 3) expectValidationErrors(output, '/', [ - ['Github', ValidationErrorType.CasePolice, ["GitHub"]], - ['kfc', ValidationErrorType.CasePolice, ["KFC"]], - ['nvidia', ValidationErrorType.CasePolice, ["NVIDIA"]], - ['Gcp', ValidationErrorType.CasePolice, ["GCP"]], - ['posix', ValidationErrorType.CasePolice, ["POSIX"]], - ['Iaas', ValidationErrorType.CasePolice, ["IaaS"]], - ['wifi', ValidationErrorType.CasePolice, ["Wi-Fi"]], - ['eSim', ValidationErrorType.CasePolice, ["eSIM"]], - ['Airpods', ValidationErrorType.CasePolice, ["AirPods"]], - ['1password', ValidationErrorType.CasePolice, ["1Password"]], - ['Angularjs', ValidationErrorType.CasePolice, ["AngularJS"]], - ['Commonjs', ValidationErrorType.CasePolice, ["CommonJS"]], - ['sqlserver', ValidationErrorType.CasePolice, ["SQLServer"]], + ['Github', ValidationErrorType.CasePolice, "retext-case-police", ["GitHub"]], + ['kfc', ValidationErrorType.CasePolice, "retext-case-police", ["KFC"]], + ['nvidia', ValidationErrorType.CasePolice, "retext-case-police", ["NVIDIA"]], + ['Gcp', ValidationErrorType.CasePolice, "retext-case-police", ["GCP"]], + ['posix', ValidationErrorType.CasePolice, "retext-case-police", ["POSIX"]], + ['Iaas', ValidationErrorType.CasePolice, "retext-case-police", ["IaaS"]], + ['wifi', ValidationErrorType.CasePolice, "retext-case-police", ["Wi-Fi"]], + ['eSim', ValidationErrorType.CasePolice, "retext-case-police", ["eSIM"]], + ['Airpods', ValidationErrorType.CasePolice, "retext-case-police", ["AirPods"]], + ['1password', ValidationErrorType.CasePolice, "retext-case-police", ["1Password"]], + ['Angularjs', ValidationErrorType.CasePolice, "retext-case-police", ["AngularJS"]], + ['Commonjs', ValidationErrorType.CasePolice, "retext-case-police", ["CommonJS"]], + ['sqlserver', ValidationErrorType.CasePolice, "retext-case-police", ["SQLServer"]], ]) expectValidationErrors(output, 'de/', [ - ['Github', ValidationErrorType.CasePolice, ["GitHub"]], - ['kfc', ValidationErrorType.CasePolice, ["KFC"]], - ['nvidia', ValidationErrorType.CasePolice, ["NVIDIA"]], - ['Gcp', ValidationErrorType.CasePolice, ["GCP"]], - ['posix', ValidationErrorType.CasePolice, ["POSIX"]], - ['Iaas', ValidationErrorType.CasePolice, ["IaaS"]], - ['wifi', ValidationErrorType.CasePolice, ["Wi-Fi"]], - ['eSim', ValidationErrorType.CasePolice, ["eSIM"]], - ['Airpods', ValidationErrorType.CasePolice, ["AirPods"]], - ['1password', ValidationErrorType.CasePolice, ["1Password"]], - ['Angularjs', ValidationErrorType.CasePolice, ["AngularJS"]], - ['Commonjs', ValidationErrorType.CasePolice, ["CommonJS"]], - ['sqlserver', ValidationErrorType.CasePolice, ["SQLServer"]], + ['Github', ValidationErrorType.CasePolice, "retext-case-police", ["GitHub"]], + ['kfc', ValidationErrorType.CasePolice, "retext-case-police", ["KFC"]], + ['nvidia', ValidationErrorType.CasePolice, "retext-case-police", ["NVIDIA"]], + ['Gcp', ValidationErrorType.CasePolice, "retext-case-police", ["GCP"]], + ['posix', ValidationErrorType.CasePolice, "retext-case-police", ["POSIX"]], + ['Iaas', ValidationErrorType.CasePolice, "retext-case-police", ["IaaS"]], + ['wifi', ValidationErrorType.CasePolice, "retext-case-police", ["Wi-Fi"]], + ['eSim', ValidationErrorType.CasePolice, "retext-case-police", ["eSIM"]], + ['Airpods', ValidationErrorType.CasePolice, "retext-case-police", ["AirPods"]], + ['1password', ValidationErrorType.CasePolice, "retext-case-police", ["1Password"]], + ['Angularjs', ValidationErrorType.CasePolice, "retext-case-police", ["AngularJS"]], + ['Commonjs', ValidationErrorType.CasePolice, "retext-case-police", ["CommonJS"]], + ['sqlserver', ValidationErrorType.CasePolice, "retext-case-police", ["SQLServer"]], ]) expectValidationErrors(output, 'fr/', [ - ['Github', ValidationErrorType.CasePolice, ["GitHub"]], - ['kfc', ValidationErrorType.CasePolice, ["KFC"]], - ['nvidia', ValidationErrorType.CasePolice, ["NVIDIA"]], - ['Gcp', ValidationErrorType.CasePolice, ["GCP"]], - ['posix', ValidationErrorType.CasePolice, ["POSIX"]], - ['Iaas', ValidationErrorType.CasePolice, ["IaaS"]], - ['wifi', ValidationErrorType.CasePolice, ["Wi-Fi"]], - ['eSim', ValidationErrorType.CasePolice, ["eSIM"]], - ['Airpods', ValidationErrorType.CasePolice, ["AirPods"]], - ['1password', ValidationErrorType.CasePolice, ["1Password"]], - ['Angularjs', ValidationErrorType.CasePolice, ["AngularJS"]], - ['Commonjs', ValidationErrorType.CasePolice, ["CommonJS"]], - ['sqlserver', ValidationErrorType.CasePolice, ["SQLServer"]], + ['Github', ValidationErrorType.CasePolice, "retext-case-police", ["GitHub"]], + ['kfc', ValidationErrorType.CasePolice, "retext-case-police", ["KFC"]], + ['nvidia', ValidationErrorType.CasePolice, "retext-case-police", ["NVIDIA"]], + ['Gcp', ValidationErrorType.CasePolice, "retext-case-police", ["GCP"]], + ['posix', ValidationErrorType.CasePolice, "retext-case-police", ["POSIX"]], + ['Iaas', ValidationErrorType.CasePolice, "retext-case-police", ["IaaS"]], + ['wifi', ValidationErrorType.CasePolice, "retext-case-police", ["Wi-Fi"]], + ['eSim', ValidationErrorType.CasePolice, "retext-case-police", ["eSIM"]], + ['Airpods', ValidationErrorType.CasePolice, "retext-case-police", ["AirPods"]], + ['1password', ValidationErrorType.CasePolice, "retext-case-police", ["1Password"]], + ['Angularjs', ValidationErrorType.CasePolice, "retext-case-police", ["AngularJS"]], + ['Commonjs', ValidationErrorType.CasePolice, "retext-case-police", ["CommonJS"]], + ['sqlserver', ValidationErrorType.CasePolice, "retext-case-police", ["SQLServer"]], ]) }) diff --git a/packages/starlight-spell-checker/tests/contractions.throwError.ignoreLiteralsFalse.test.ts b/packages/starlight-spell-checker/tests/contractions.throwError.ignoreLiteralsFalse.test.ts index d867aa5..215040f 100644 --- a/packages/starlight-spell-checker/tests/contractions.throwError.ignoreLiteralsFalse.test.ts +++ b/packages/starlight-spell-checker/tests/contractions.throwError.ignoreLiteralsFalse.test.ts @@ -19,9 +19,9 @@ test('does not build with contractions throw error invalid English content', asy expectValidationErrorCount(output, 4, 1) expectValidationErrors(output, '/', [ - ['does’nt', ValidationErrorType.Contractions, ["doesn’t"]], - ['yall', ValidationErrorType.Contractions, ["y’all"]], - ['isnt', ValidationErrorType.Contractions, ["isn’t"]], - ['oc’lock', ValidationErrorType.Contractions, ["o’clock"]], + ['does’nt', ValidationErrorType.Contractions, "missing-smart-apostrophe", ["doesn’t"]], + ['yall', ValidationErrorType.Contractions, "missing-smart-apostrophe", ["y’all"]], + ['isnt', ValidationErrorType.Contractions, "missing-smart-apostrophe", ["isn’t"]], + ['oc’lock', ValidationErrorType.Contractions, "missing-smart-apostrophe", ["o’clock"]], ]) }) diff --git a/packages/starlight-spell-checker/tests/contractions.throwError.modeStraight.test.ts b/packages/starlight-spell-checker/tests/contractions.throwError.modeStraight.test.ts index 8dbaad4..f817076 100644 --- a/packages/starlight-spell-checker/tests/contractions.throwError.modeStraight.test.ts +++ b/packages/starlight-spell-checker/tests/contractions.throwError.modeStraight.test.ts @@ -12,8 +12,8 @@ test('builds with contractions throw error valid English content', async () => { expectValidationErrorCount(output, 2, 1) expectValidationErrors(output, '/', [ - ['isn’t', ValidationErrorType.Contractions, ["isn't"]], - ['o’clock', ValidationErrorType.Contractions, ["o'clock"]], + ['isn’t', ValidationErrorType.Contractions, "missing-straight-apostrophe", ["isn't"]], + ['o’clock', ValidationErrorType.Contractions, "missing-straight-apostrophe", ["o'clock"]], ]) }) @@ -25,7 +25,7 @@ test('does not build with contractions throw error invalid English content', asy expectValidationErrorCount(output, 2, 1) expectValidationErrors(output, '/', [ - ['isnt', ValidationErrorType.Contractions, ["isn't"]], - ['oc’lock', ValidationErrorType.Contractions, ["o'clock"]], + ['isnt', ValidationErrorType.Contractions, "missing-straight-apostrophe", ["isn't"]], + ['oc’lock', ValidationErrorType.Contractions, "missing-straight-apostrophe", ["o'clock"]], ]) }) diff --git a/packages/starlight-spell-checker/tests/contractions.throwError.test.ts b/packages/starlight-spell-checker/tests/contractions.throwError.test.ts index 7ae3332..8db49a6 100644 --- a/packages/starlight-spell-checker/tests/contractions.throwError.test.ts +++ b/packages/starlight-spell-checker/tests/contractions.throwError.test.ts @@ -19,7 +19,7 @@ test('does not build with contractions throw error invalid English content', asy expectValidationErrorCount(output, 2, 1) expectValidationErrors(output, '/', [ - ['isnt', ValidationErrorType.Contractions, ["isn’t"]], - ['oc’lock', ValidationErrorType.Contractions, ["o’clock"]], + ['isnt', ValidationErrorType.Contractions, "missing-smart-apostrophe", ["isn’t"]], + ['oc’lock', ValidationErrorType.Contractions, "missing-smart-apostrophe", ["o’clock"]], ]) }) diff --git a/packages/starlight-spell-checker/tests/diacritics.throwError.test.ts b/packages/starlight-spell-checker/tests/diacritics.throwError.test.ts index 2cfc12c..c607455 100644 --- a/packages/starlight-spell-checker/tests/diacritics.throwError.test.ts +++ b/packages/starlight-spell-checker/tests/diacritics.throwError.test.ts @@ -19,8 +19,8 @@ test('does not build with diacritics throw error invalid English content', async expectValidationErrorCount(output, 3, 1) expectValidationErrors(output, '/', [ - ['Beyonce', ValidationErrorType.Diacritics, ["Beyoncé"]], - ['creme fresh', ValidationErrorType.Diacritics, ["crème fraîche"]], - ['his resume', ValidationErrorType.Diacritics, ["his résumé"]], + ['Beyonce', ValidationErrorType.Diacritics, "beyonce", ["Beyoncé"]], + ['creme fresh', ValidationErrorType.Diacritics, "creme-fresh", ["crème fraîche"]], + ['his resume', ValidationErrorType.Diacritics, "his-resume", ["his résumé"]], ]) }) diff --git a/packages/starlight-spell-checker/tests/equality.throwError.binaryTrue.test.ts b/packages/starlight-spell-checker/tests/equality.throwError.binaryTrue.test.ts index 762fa58..8a64514 100644 --- a/packages/starlight-spell-checker/tests/equality.throwError.binaryTrue.test.ts +++ b/packages/starlight-spell-checker/tests/equality.throwError.binaryTrue.test.ts @@ -19,6 +19,6 @@ test('does not build with equality throw error binary true invalid English conte expectValidationErrorCount(output, 1, 1) expectValidationErrors(output, '/', [ - ['obviously', ValidationErrorType.Equality, []], + ['obviously', ValidationErrorType.Equality, "obvious", []], ]) }) diff --git a/packages/starlight-spell-checker/tests/equality.throwError.test.ts b/packages/starlight-spell-checker/tests/equality.throwError.test.ts index 74ecd31..4224183 100644 --- a/packages/starlight-spell-checker/tests/equality.throwError.test.ts +++ b/packages/starlight-spell-checker/tests/equality.throwError.test.ts @@ -19,8 +19,8 @@ test('does not build with equality throw error invalid English content', async ( expectValidationErrorCount(output, 3, 1) expectValidationErrors(output, '/', [ - ['obviously', ValidationErrorType.Equality, []], - ['Brother', ValidationErrorType.Equality, ["Sibling"]], - ['sister', ValidationErrorType.Equality, ["sibling"]], + ['obviously', ValidationErrorType.Equality, "obvious", []], + ['Brother', ValidationErrorType.Equality, "brother-sister", ["Sibling"]], + ['sister', ValidationErrorType.Equality, "brother-sister", ["sibling"]], ]) }) diff --git a/packages/starlight-spell-checker/tests/fixtures/passive-throw-error-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/passive-throw-error-invalid-content/astro.config.ts new file mode 100644 index 0000000..fa3b206 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/passive-throw-error-invalid-content/astro.config.ts @@ -0,0 +1,24 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + passive: { + enabled: true, + throwError: true, + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - passive throw error invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/passive-throw-error-invalid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/passive-throw-error-invalid-content/package.json new file mode 100644 index 0000000..41df40e --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/passive-throw-error-invalid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/passive-throw-error-invalid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/passive-throw-error-invalid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/passive-throw-error-invalid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/passive-throw-error-invalid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/passive-throw-error-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/passive-throw-error-invalid-content/src/content/docs/index.md new file mode 100644 index 0000000..0417c51 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/passive-throw-error-invalid-content/src/content/docs/index.md @@ -0,0 +1,5 @@ +--- +title: Index +--- + +He was withheld while we were being fed. diff --git a/packages/starlight-spell-checker/tests/fixtures/passive-throw-error-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/passive-throw-error-valid-content/astro.config.ts new file mode 100644 index 0000000..657f81e --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/passive-throw-error-valid-content/astro.config.ts @@ -0,0 +1,24 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + passive: { + enabled: true, + throwError: true, + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - passive throw error valid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/passive-throw-error-valid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/passive-throw-error-valid-content/package.json new file mode 100644 index 0000000..f39c27a --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/passive-throw-error-valid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/passive-throw-error-valid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/passive-throw-error-valid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/passive-throw-error-valid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/passive-throw-error-valid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/passive-throw-error-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/passive-throw-error-valid-content/src/content/docs/index.md new file mode 100644 index 0000000..b6f17fd --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/passive-throw-error-valid-content/src/content/docs/index.md @@ -0,0 +1,5 @@ +--- +title: Index +--- + +They withheld him while they fed us. diff --git a/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-invalid-content-multilingual/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-invalid-content-multilingual/astro.config.ts new file mode 100644 index 0000000..9605896 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-invalid-content-multilingual/astro.config.ts @@ -0,0 +1,38 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + profanities: { + enabled: true, + throwError: true, + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - profanities throw error invalid content multilingual", + locales: { + root: { + lang: "en", + label: "English", + }, + de: { + lang: "de", + label: "Deutsch", + }, + fr: { + lang: "fr", + label: "Français", + }, + }, + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-invalid-content-multilingual/package.json b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-invalid-content-multilingual/package.json new file mode 100644 index 0000000..a834811 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-invalid-content-multilingual/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/profanities-throw-error-invalid-content-multilingual", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-invalid-content-multilingual/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-invalid-content-multilingual/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-invalid-content-multilingual/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-invalid-content-multilingual/src/content/docs/de/index.md b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-invalid-content-multilingual/src/content/docs/de/index.md new file mode 100644 index 0000000..c95ed1d --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-invalid-content-multilingual/src/content/docs/de/index.md @@ -0,0 +1,5 @@ +--- +title: Verzeichnis +--- + +Er ist fest entschlossen, dir den Arsch zu versohlen, um Sheriff zu werden, und das macht ihn geil. diff --git a/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-invalid-content-multilingual/src/content/docs/fr/index.md b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-invalid-content-multilingual/src/content/docs/fr/index.md new file mode 100644 index 0000000..324998c --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-invalid-content-multilingual/src/content/docs/fr/index.md @@ -0,0 +1,6 @@ +--- +title: Indice +--- + +Il est bien décidé à te botter le cul pour devenir shérif. +Il a appris à bander les voiles sur le bateau. diff --git a/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-invalid-content-multilingual/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-invalid-content-multilingual/src/content/docs/index.md new file mode 100644 index 0000000..39fc718 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-invalid-content-multilingual/src/content/docs/index.md @@ -0,0 +1,5 @@ +--- +title: Index +--- + +He’s pretty set on beating your butt for sheriff and it makes him horny. diff --git a/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-invalid-content-multilingual/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-invalid-content-multilingual/astro.config.ts new file mode 100644 index 0000000..42cef67 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-invalid-content-multilingual/astro.config.ts @@ -0,0 +1,39 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + profanities: { + enabled: true, + throwError: true, + sureness: 2, + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - profanities throw error sureness 2 invalid content multilingual", + locales: { + root: { + lang: "en", + label: "English", + }, + de: { + lang: "de", + label: "Deutsch", + }, + fr: { + lang: "fr", + label: "Français", + }, + }, + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-invalid-content-multilingual/package.json b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-invalid-content-multilingual/package.json new file mode 100644 index 0000000..da8b6e0 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-invalid-content-multilingual/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/profanities-throw-error-sureness-2-invalid-content-multilingual", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-invalid-content-multilingual/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-invalid-content-multilingual/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-invalid-content-multilingual/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-invalid-content-multilingual/src/content/docs/de/index.md b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-invalid-content-multilingual/src/content/docs/de/index.md new file mode 100644 index 0000000..c95ed1d --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-invalid-content-multilingual/src/content/docs/de/index.md @@ -0,0 +1,5 @@ +--- +title: Verzeichnis +--- + +Er ist fest entschlossen, dir den Arsch zu versohlen, um Sheriff zu werden, und das macht ihn geil. diff --git a/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-invalid-content-multilingual/src/content/docs/fr/index.md b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-invalid-content-multilingual/src/content/docs/fr/index.md new file mode 100644 index 0000000..324998c --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-invalid-content-multilingual/src/content/docs/fr/index.md @@ -0,0 +1,6 @@ +--- +title: Indice +--- + +Il est bien décidé à te botter le cul pour devenir shérif. +Il a appris à bander les voiles sur le bateau. diff --git a/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-invalid-content-multilingual/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-invalid-content-multilingual/src/content/docs/index.md new file mode 100644 index 0000000..39fc718 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-invalid-content-multilingual/src/content/docs/index.md @@ -0,0 +1,5 @@ +--- +title: Index +--- + +He’s pretty set on beating your butt for sheriff and it makes him horny. diff --git a/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-valid-content-multilingual/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-valid-content-multilingual/astro.config.ts new file mode 100644 index 0000000..d9f18c9 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-valid-content-multilingual/astro.config.ts @@ -0,0 +1,39 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + profanities: { + enabled: true, + throwError: true, + sureness: 2, + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - profanities throw error sureness 2 valid content multilingual", + locales: { + root: { + lang: "en", + label: "English", + }, + de: { + lang: "de", + label: "Deutsch", + }, + fr: { + lang: "fr", + label: "Français", + }, + }, + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-valid-content-multilingual/package.json b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-valid-content-multilingual/package.json new file mode 100644 index 0000000..7109cc9 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-valid-content-multilingual/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/profanities-throw-error-sureness-2-valid-content-multilingual", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-valid-content-multilingual/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-valid-content-multilingual/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-valid-content-multilingual/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-valid-content-multilingual/src/content/docs/de/index.md b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-valid-content-multilingual/src/content/docs/de/index.md new file mode 100644 index 0000000..e9a4ddd --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-valid-content-multilingual/src/content/docs/de/index.md @@ -0,0 +1,5 @@ +--- +title: Verzeichnis +--- + +Er ist fest entschlossen, deinen Arsch als Sheriff zu schlagen. diff --git a/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-valid-content-multilingual/src/content/docs/fr/index.md b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-valid-content-multilingual/src/content/docs/fr/index.md new file mode 100644 index 0000000..94818d1 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-valid-content-multilingual/src/content/docs/fr/index.md @@ -0,0 +1,6 @@ +--- +title: Indice +--- + +Il est bien décidé à te battre pour le poste de shérif. +Je n'ai aucun intérêt à cela. diff --git a/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-valid-content-multilingual/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-valid-content-multilingual/src/content/docs/index.md new file mode 100644 index 0000000..c0b3e2a --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-valid-content-multilingual/src/content/docs/index.md @@ -0,0 +1,5 @@ +--- +title: Index +--- + +He's determined to beat you for sheriff. \ No newline at end of file diff --git a/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-valid-content-multilingual/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-valid-content-multilingual/astro.config.ts new file mode 100644 index 0000000..9c14264 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-valid-content-multilingual/astro.config.ts @@ -0,0 +1,38 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + profanities: { + enabled: true, + throwError: true, + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - profanities throw error valid content multilingual", + locales: { + root: { + lang: "en", + label: "English", + }, + de: { + lang: "de", + label: "Deutsch", + }, + fr: { + lang: "fr", + label: "Français", + }, + }, + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-valid-content-multilingual/package.json b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-valid-content-multilingual/package.json new file mode 100644 index 0000000..65939cf --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-valid-content-multilingual/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/profanities-throw-error-valid-content-multilingual", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-valid-content-multilingual/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-valid-content-multilingual/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-valid-content-multilingual/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-valid-content-multilingual/src/content/docs/de/index.md b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-valid-content-multilingual/src/content/docs/de/index.md new file mode 100644 index 0000000..e9a4ddd --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-valid-content-multilingual/src/content/docs/de/index.md @@ -0,0 +1,5 @@ +--- +title: Verzeichnis +--- + +Er ist fest entschlossen, deinen Arsch als Sheriff zu schlagen. diff --git a/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-valid-content-multilingual/src/content/docs/fr/index.md b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-valid-content-multilingual/src/content/docs/fr/index.md new file mode 100644 index 0000000..94818d1 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-valid-content-multilingual/src/content/docs/fr/index.md @@ -0,0 +1,6 @@ +--- +title: Indice +--- + +Il est bien décidé à te battre pour le poste de shérif. +Je n'ai aucun intérêt à cela. diff --git a/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-valid-content-multilingual/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-valid-content-multilingual/src/content/docs/index.md new file mode 100644 index 0000000..c0b3e2a --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-valid-content-multilingual/src/content/docs/index.md @@ -0,0 +1,5 @@ +--- +title: Index +--- + +He's determined to beat you for sheriff. \ No newline at end of file diff --git a/packages/starlight-spell-checker/tests/indefiniteArticle.throwError.test.ts b/packages/starlight-spell-checker/tests/indefiniteArticle.throwError.test.ts index 24f76c4..fb057a1 100644 --- a/packages/starlight-spell-checker/tests/indefiniteArticle.throwError.test.ts +++ b/packages/starlight-spell-checker/tests/indefiniteArticle.throwError.test.ts @@ -19,8 +19,8 @@ test('does not build with indefinite article throw error invalid English content expectValidationErrorCount(output, 3, 1) expectValidationErrors(output, '/', [ - ['a', ValidationErrorType.IndefiniteArticle, ["an"]], - ['a', ValidationErrorType.IndefiniteArticle, ["an"]], - ['an', ValidationErrorType.IndefiniteArticle, ["a"]], + ['a', ValidationErrorType.IndefiniteArticle, "retext-indefinite-article", ["an"]], + ['a', ValidationErrorType.IndefiniteArticle, "retext-indefinite-article", ["an"]], + ['an', ValidationErrorType.IndefiniteArticle, "retext-indefinite-article", ["a"]], ]) }) diff --git a/packages/starlight-spell-checker/tests/intensify.throwError.test.ts b/packages/starlight-spell-checker/tests/intensify.throwError.test.ts index 2f8fa24..00b0c46 100644 --- a/packages/starlight-spell-checker/tests/intensify.throwError.test.ts +++ b/packages/starlight-spell-checker/tests/intensify.throwError.test.ts @@ -19,10 +19,10 @@ test('does not build with intensify throw error invalid English content', async expectValidationErrorCount(output, 5, 1) expectValidationErrors(output, '/', [ - ['Some', ValidationErrorType.Intensify, []], - ['say', ValidationErrorType.Intensify, []], - ['quite', ValidationErrorType.Intensify, []], - ['some', ValidationErrorType.Intensify, []], - ['apparently', ValidationErrorType.Intensify, []], + ['Some', ValidationErrorType.Intensify, "weasel", []], + ['say', ValidationErrorType.Intensify, "hedge", []], + ['quite', ValidationErrorType.Intensify, "weasel", []], + ['some', ValidationErrorType.Intensify, "weasel", []], + ['apparently', ValidationErrorType.Intensify, "filler", []], ]) }) diff --git a/packages/starlight-spell-checker/tests/passive.throwError.test.ts b/packages/starlight-spell-checker/tests/passive.throwError.test.ts new file mode 100644 index 0000000..382a5e5 --- /dev/null +++ b/packages/starlight-spell-checker/tests/passive.throwError.test.ts @@ -0,0 +1,25 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' + +test('builds with passive throw error valid English content', async () => { + const { output, status } = await buildFixture('passive-throw-error-valid-content') + + expect(status).toBe('success') + expectValidationSuccess(output) +}) + +test('does not build with passive throw error invalid English content', async () => { + const { output, status } = await buildFixture('passive-throw-error-invalid-content') + + expect(status).toBe('error') + + expectValidationErrorCount(output, 2, 1) + + expectValidationErrors(output, '/', [ + ['withheld', ValidationErrorType.Passive, "withheld", []], + ['fed', ValidationErrorType.Passive, "fed", []], + ]) +}) diff --git a/packages/starlight-spell-checker/tests/profanities.throwError.sureness2.test.ts b/packages/starlight-spell-checker/tests/profanities.throwError.sureness2.test.ts new file mode 100644 index 0000000..753655a --- /dev/null +++ b/packages/starlight-spell-checker/tests/profanities.throwError.sureness2.test.ts @@ -0,0 +1,25 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' + +test('builds with profanities throw error sureness 2 valid Multilingual content', async () => { + const { output, status } = await buildFixture('profanities-throw-error-sureness-2-valid-content-multilingual') + + expect(status).toBe('success') + expectValidationSuccess(output) +}) + +test('does not build with profanities throw error sureness 2 invalid Multilingual content', async () => { + const { output, status } = await buildFixture('profanities-throw-error-sureness-2-invalid-content-multilingual') + + expect(status).toBe('error') + + expectValidationErrorCount(output, 2, 1) + + expectValidationErrors(output, 'fr/', [ + ['botter le cul', ValidationErrorType.Profanities, "botter-le-cul", []], + ['cul', ValidationErrorType.Profanities, "cul", []], + ]) +}) diff --git a/packages/starlight-spell-checker/tests/profanities.throwError.test.ts b/packages/starlight-spell-checker/tests/profanities.throwError.test.ts new file mode 100644 index 0000000..25cd36a --- /dev/null +++ b/packages/starlight-spell-checker/tests/profanities.throwError.test.ts @@ -0,0 +1,31 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' + +test('builds with profanities throw error valid Multilingual content', async () => { + const { output, status } = await buildFixture('profanities-throw-error-valid-content-multilingual') + + expect(status).toBe('success') + expectValidationSuccess(output) +}) + +test('does not build with profanities throw error invalid Multilingual content', async () => { + const { output, status } = await buildFixture('profanities-throw-error-invalid-content-multilingual') + + expect(status).toBe('error') + + expectValidationErrorCount(output, 5, 2) + + expectValidationErrors(output, '/', [ + ['butt', ValidationErrorType.Profanities, "butt", []], + ['horny', ValidationErrorType.Profanities, "horny", []], + ]) + + expectValidationErrors(output, 'fr/', [ + ['botter le cul', ValidationErrorType.Profanities, "botter-le-cul", []], + ['cul', ValidationErrorType.Profanities, "cul", []], + ['bander', ValidationErrorType.Profanities, "bander", []], + ]) +}) diff --git a/packages/starlight-spell-checker/tests/spell.throwError.test.ts b/packages/starlight-spell-checker/tests/spell.throwError.test.ts index 227f0f9..e41fb8a 100644 --- a/packages/starlight-spell-checker/tests/spell.throwError.test.ts +++ b/packages/starlight-spell-checker/tests/spell.throwError.test.ts @@ -40,12 +40,12 @@ test('does not build with spell throw error invalid English content', async () = expectValidationErrorCount(output, 6, 1) expectValidationErrors(output, 'test/', [ - ['diped', ValidationErrorType.Spell, ["dipped", "doped", "duped", "biped", "diced", "died", "diked", "dined", "dived", "piped", "wiped"]], - ['horison', ValidationErrorType.Spell, ["orison", "horizon", "Morison"]], - ['heus', ValidationErrorType.Spell, ["hers", "hews", "he's", "hems", "hens", "hes", "hues", "Hess", "Hus", "Zeus"]], - ['evaning', ValidationErrorType.Spell, ["evading", "evening"]], - ['breze', ValidationErrorType.Spell, ["breeze", "braze", "breve"]], - ['thrugh', ValidationErrorType.Spell, ["though", "through", "thrush"]], + ['diped', ValidationErrorType.Spell, "diped", ["dipped", "doped", "duped", "biped", "diced", "died", "diked", "dined", "dived", "piped", "wiped"]], + ['horison', ValidationErrorType.Spell, "horison", ["orison", "horizon", "Morison"]], + ['heus', ValidationErrorType.Spell, "heus", ["hers", "hews", "he's", "hems", "hens", "hes", "hues", "Hess", "Hus", "Zeus"]], + ['evaning', ValidationErrorType.Spell, "evaning", ["evading", "evening"]], + ['breze', ValidationErrorType.Spell, "breze", ["breeze", "braze", "breve"]], + ['thrugh', ValidationErrorType.Spell, "thrugh", ["though", "through", "thrush"]], ]) }) @@ -57,12 +57,12 @@ test('does not build with spell throw error invalid German content', async () => expectValidationErrorCount(output, 6, 1) expectValidationErrors(output, 'test/', [ - ['tachte', ValidationErrorType.Spell, ["dachte", "fachte", "pachte", "wachte", "takte", "-achte", "achte", "lachte", "machte", "sachte", "tauchte", "trachte"]], - ['Horisont', ValidationErrorType.Spell, ["Horizont"]], - ['Tönnen', ValidationErrorType.Spell, ["Tönen", "Gönnen", "Können", "Tannen", "Tennen", "Tonnen", "Tönten"]], - ['Briese', ValidationErrorType.Spell, ["Brise", "Briefe", "Friese", "Priese", "Riese", "-riese"]], - ['Abbends', ValidationErrorType.Spell, ["Abends"]], - ['durh', ValidationErrorType.Spell, ["durch", "Dur"]], + ['tachte', ValidationErrorType.Spell, "tachte", ["dachte", "fachte", "pachte", "wachte", "takte", "-achte", "achte", "lachte", "machte", "sachte", "tauchte", "trachte"]], + ['Horisont', ValidationErrorType.Spell, "horisont", ["Horizont"]], + ['Tönnen', ValidationErrorType.Spell, "t-nnen", ["Tönen", "Gönnen", "Können", "Tannen", "Tennen", "Tonnen", "Tönten"]], + ['Briese', ValidationErrorType.Spell, "briese", ["Brise", "Briefe", "Friese", "Priese", "Riese", "-riese"]], + ['Abbends', ValidationErrorType.Spell, "abbends", ["Abends"]], + ['durh', ValidationErrorType.Spell, "durh", ["durch", "Dur"]], ]) }) @@ -74,12 +74,12 @@ test('does not build with spell throw error invalid French content', async () => expectValidationErrorCount(output, 6, 1) expectValidationErrors(output, 'test/', [ - ['ploungé', ValidationErrorType.Spell, ["plongé"]], - ['l\'horison', ValidationErrorType.Spell, ["l’horizon", "l’horion"]], - ['tientes', ValidationErrorType.Spell, ["fientes", "teintes", "tentes", "tiennes", "tintes"]], - ['briese', ValidationErrorType.Spell, ["briefe", "bries", "brise"]], - ['sior', ValidationErrorType.Spell, ["sir", "soir", "Dior", "Sion"]], - ['tràvers', ValidationErrorType.Spell, ["travers"]], + ['ploungé', ValidationErrorType.Spell, "ploung-", ["plongé"]], + ['l\'horison', ValidationErrorType.Spell, "l-horison", ["l’horizon", "l’horion"]], + ['tientes', ValidationErrorType.Spell, "tientes", ["fientes", "teintes", "tentes", "tiennes", "tintes"]], + ['briese', ValidationErrorType.Spell, "briese", ["briefe", "bries", "brise"]], + ['sior', ValidationErrorType.Spell, "sior", ["sir", "soir", "Dior", "Sion"]], + ['tràvers', ValidationErrorType.Spell, "tr-vers", ["travers"]], ]) }) @@ -91,29 +91,29 @@ test('does not build with spell throw error invalid Multilingual content', async expectValidationErrorCount(output, 18, 3) expectValidationErrors(output, 'test/', [ - ['diped', ValidationErrorType.Spell, ["dipped", "doped", "duped", "biped", "diced", "died", "diked", "dined", "dived", "piped", "wiped"]], - ['horison', ValidationErrorType.Spell, ["orison", "horizon", "Morison"]], - ['heus', ValidationErrorType.Spell, ["hers", "hews", "he's", "hems", "hens", "hes", "hues", "Hess", "Hus", "Zeus"]], - ['evaning', ValidationErrorType.Spell, ["evading", "evening"]], - ['breze', ValidationErrorType.Spell, ["breeze", "braze", "breve"]], - ['thrugh', ValidationErrorType.Spell, ["though", "through", "thrush"]], + ['diped', ValidationErrorType.Spell, "diped", ["dipped", "doped", "duped", "biped", "diced", "died", "diked", "dined", "dived", "piped", "wiped"]], + ['horison', ValidationErrorType.Spell, "horison", ["orison", "horizon", "Morison"]], + ['heus', ValidationErrorType.Spell, "heus", ["hers", "hews", "he's", "hems", "hens", "hes", "hues", "Hess", "Hus", "Zeus"]], + ['evaning', ValidationErrorType.Spell, "evaning", ["evading", "evening"]], + ['breze', ValidationErrorType.Spell, "breze", ["breeze", "braze", "breve"]], + ['thrugh', ValidationErrorType.Spell, "thrugh", ["though", "through", "thrush"]], ]) expectValidationErrors(output, 'de/test/', [ - ['tachte', ValidationErrorType.Spell, ["dachte", "fachte", "pachte", "wachte", "takte", "-achte", "achte", "lachte", "machte", "sachte", "tauchte", "trachte"]], - ['Horisont', ValidationErrorType.Spell, ["Horizont"]], - ['Tönnen', ValidationErrorType.Spell, ["Tönen", "Gönnen", "Können", "Tannen", "Tennen", "Tonnen", "Tönten"]], - ['Briese', ValidationErrorType.Spell, ["Brise", "Briefe", "Friese", "Priese", "Riese", "-riese"]], - ['Abbends', ValidationErrorType.Spell, ["Abends"]], - ['durh', ValidationErrorType.Spell, ["durch", "Dur"]], + ['tachte', ValidationErrorType.Spell, "tachte", ["dachte", "fachte", "pachte", "wachte", "takte", "-achte", "achte", "lachte", "machte", "sachte", "tauchte", "trachte"]], + ['Horisont', ValidationErrorType.Spell, "horisont", ["Horizont"]], + ['Tönnen', ValidationErrorType.Spell, "t-nnen", ["Tönen", "Gönnen", "Können", "Tannen", "Tennen", "Tonnen", "Tönten"]], + ['Briese', ValidationErrorType.Spell, "briese", ["Brise", "Briefe", "Friese", "Priese", "Riese", "-riese"]], + ['Abbends', ValidationErrorType.Spell, "abbends", ["Abends"]], + ['durh', ValidationErrorType.Spell, "durh", ["durch", "Dur"]], ]) expectValidationErrors(output, 'fr/test/', [ - ['ploungé', ValidationErrorType.Spell, ["plongé"]], - ['l\'horison', ValidationErrorType.Spell, ["l’horizon", "l’horion"]], - ['tientes', ValidationErrorType.Spell, ["fientes", "teintes", "tentes", "tiennes", "tintes"]], - ['briese', ValidationErrorType.Spell, ["briefe", "bries", "brise"]], - ['sior', ValidationErrorType.Spell, ["sir", "soir", "Dior", "Sion"]], - ['tràvers', ValidationErrorType.Spell, ["travers"]], + ['ploungé', ValidationErrorType.Spell, "ploung-", ["plongé"]], + ['l\'horison', ValidationErrorType.Spell, "l-horison", ["l’horizon", "l’horion"]], + ['tientes', ValidationErrorType.Spell, "tientes", ["fientes", "teintes", "tentes", "tiennes", "tintes"]], + ['briese', ValidationErrorType.Spell, "briese", ["briefe", "bries", "brise"]], + ['sior', ValidationErrorType.Spell, "sior", ["sir", "soir", "Dior", "Sion"]], + ['tràvers', ValidationErrorType.Spell, "tr-vers", ["travers"]], ]) }) \ No newline at end of file diff --git a/packages/starlight-spell-checker/tests/utils.ts b/packages/starlight-spell-checker/tests/utils.ts index d24063e..92213e3 100644 --- a/packages/starlight-spell-checker/tests/utils.ts +++ b/packages/starlight-spell-checker/tests/utils.ts @@ -80,6 +80,7 @@ export function expectValidationWarnings( validationWarnings: [ word: string, type: ValidationErrorType, + rule: string, suggestions?: string[] ][] ) { @@ -88,10 +89,10 @@ export function expectValidationWarnings( `▶ ${path} ${validationWarnings .map( - ([word, type, suggestions], index) => + ([word, type, rule, suggestions], index) => `.* ${ index < validationWarnings.length - 1 ? "├" : "└" - }─ ${word} - ${type}${ + }─ ${word} - ${type} - ${rule}${ suggestions ? suggestions.length > 0 ? ` \\\(${suggestions.join(", ")}\\\)` @@ -124,6 +125,7 @@ export function expectValidationErrors( validationErrors: [ word: string, type: ValidationErrorType, + rule: string, suggestions?: string[] ][] ) { @@ -132,10 +134,10 @@ export function expectValidationErrors( `▶ ${path} ${validationErrors .map( - ([word, type, suggestions], index) => + ([word, type, rule, suggestions], index) => `.* ${ index < validationErrors.length - 1 ? "├" : "└" - }─ ${word} - ${type}${ + }─ ${word} - ${type} - ${rule}${ suggestions ? suggestions.length > 0 ? ` \\\(${suggestions.join(", ")}\\\)` diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7a7eff2..29a5be0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -448,6 +448,78 @@ importers: specifier: workspace:* version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/passive-throw-error-invalid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/passive-throw-error-valid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-invalid-content-multilingual: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-invalid-content-multilingual: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-sureness-2-valid-content-multilingual: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/profanities-throw-error-valid-content-multilingual: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/spell-throw-error-invalid-content: dependencies: '@astrojs/starlight': From 2646690d0cc24c74a48d8ee49a9dc15d04d78e5b Mon Sep 17 00:00:00 2001 From: trueberryless Date: Mon, 13 Jan 2025 13:42:20 +0100 Subject: [PATCH 13/30] frontmatter adjustments + test --- .../starlight-spell-checker/libs/remark.ts | 28 ++++++++ packages/starlight-spell-checker/package.json | 3 + .../astro.config.ts | 13 ++++ .../invalid-content-frontmatter/package.json | 10 +++ .../src/content.config.ts | 7 ++ .../src/content/docs/draft.md | 16 +++++ .../src/content/docs/test.md | 15 +++++ .../tests/frontmatter.test.ts | 21 ++++++ pnpm-lock.yaml | 67 +++++++++++++++++++ 9 files changed, 180 insertions(+) create mode 100644 packages/starlight-spell-checker/tests/fixtures/invalid-content-frontmatter/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/invalid-content-frontmatter/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/invalid-content-frontmatter/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/invalid-content-frontmatter/src/content/docs/draft.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/invalid-content-frontmatter/src/content/docs/test.md create mode 100644 packages/starlight-spell-checker/tests/frontmatter.test.ts diff --git a/packages/starlight-spell-checker/libs/remark.ts b/packages/starlight-spell-checker/libs/remark.ts index 5b243ea..aa6eb9c 100644 --- a/packages/starlight-spell-checker/libs/remark.ts +++ b/packages/starlight-spell-checker/libs/remark.ts @@ -12,6 +12,10 @@ import { ensureTrailingSlash, stripLeadingSlash } from "./path"; import { getLocaleConfig, getLocale } from "./i18n"; import type { StarlightUserConfig } from "./validation"; +import { unified } from "unified"; +import rehypeParse from "rehype-parse"; +import { toText } from "hast-util-to-text"; + // All the text content keyed by locale, then keyed by file path. const contents: Contents = new Map(); @@ -30,6 +34,30 @@ export const remarkStarlightSpellChecker: Plugin< let fileContent: string = ""; + // Extract all string values from frontmatter (recursively, with HTML parsing) + const frontmatter = file.data.astro?.frontmatter; + if (frontmatter) { + const extractStrings = (obj: any): string[] => { + const strings: string[] = []; + for (const value of Object.values(obj)) { + if (typeof value === "string") { + // Parse HTML and extract text content + const htmlTree = unified() + .use(rehypeParse, { fragment: true }) + .parse(value); + const textContent = toText(htmlTree); + strings.push(textContent); + } else if (typeof value === "object" && value !== null) { + strings.push(...extractStrings(value)); + } + } + return strings; + }; + + fileContent += extractStrings(frontmatter).join("\n"); + fileContent += "\n"; // Separate frontmatter from the Markdown content + } + // https://github.com/syntax-tree/mdast#nodes // https://github.com/syntax-tree/mdast-util-mdx-jsx#nodes visit( diff --git a/packages/starlight-spell-checker/package.json b/packages/starlight-spell-checker/package.json index 3322ef0..2519b88 100644 --- a/packages/starlight-spell-checker/package.json +++ b/packages/starlight-spell-checker/package.json @@ -43,11 +43,14 @@ "dictionary-pt": "^4.0.0", "dictionary-ru": "^3.0.0", "github-slugger": "^2.0.0", + "gray-matter": "^4.0.3", + "hast-util-to-text": "^4.0.2", "kleur": "^4.1.5", "mdast": "^3.0.0", "mdast-util-mdx-jsx": "^3.1.3", "no-cliches": "^0.3.6", "picomatch": "^4.0.2", + "rehype-parse": "^9.0.1", "retext": "^9.0.0", "retext-assuming": "^1.0.0", "retext-case-police": "^1.1.7", diff --git a/packages/starlight-spell-checker/tests/fixtures/invalid-content-frontmatter/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/invalid-content-frontmatter/astro.config.ts new file mode 100644 index 0000000..788e013 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/invalid-content-frontmatter/astro.config.ts @@ -0,0 +1,13 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [starlightSpellChecker()], + title: "Starlight Spell Checker Tests - invalid content frontmatter", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/invalid-content-frontmatter/package.json b/packages/starlight-spell-checker/tests/fixtures/invalid-content-frontmatter/package.json new file mode 100644 index 0000000..dc0b326 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/invalid-content-frontmatter/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/invalid-content-frontmatter", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/invalid-content-frontmatter/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/invalid-content-frontmatter/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/invalid-content-frontmatter/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/invalid-content-frontmatter/src/content/docs/draft.md b/packages/starlight-spell-checker/tests/fixtures/invalid-content-frontmatter/src/content/docs/draft.md new file mode 100644 index 0000000..f192b70 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/invalid-content-frontmatter/src/content/docs/draft.md @@ -0,0 +1,16 @@ +--- +title: Frontmater +description: Painting in the sky in heus of orange and pink +tableOfContents: + minHeadingLevel: 2 + maxHeadingLevel: 3 +banner: + content: | + We just launched someting cool! + Check it out, evaning! +lastUpdated: 2022-08-09 +prev: Continue the toturial +draft: true +--- + +Draft diff --git a/packages/starlight-spell-checker/tests/fixtures/invalid-content-frontmatter/src/content/docs/test.md b/packages/starlight-spell-checker/tests/fixtures/invalid-content-frontmatter/src/content/docs/test.md new file mode 100644 index 0000000..f57477f --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/invalid-content-frontmatter/src/content/docs/test.md @@ -0,0 +1,15 @@ +--- +title: Frontmater +description: Painting in the sky in heus of orange and pink +tableOfContents: + minHeadingLevel: 2 + maxHeadingLevel: 3 +banner: + content: | + We just launched someting cool! + Check it out, evaning! +lastUpdated: 2022-08-09 +prev: Continue the toturial +--- + +Test diff --git a/packages/starlight-spell-checker/tests/frontmatter.test.ts b/packages/starlight-spell-checker/tests/frontmatter.test.ts new file mode 100644 index 0000000..daad40a --- /dev/null +++ b/packages/starlight-spell-checker/tests/frontmatter.test.ts @@ -0,0 +1,21 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationWarningCount, expectValidationWarnings } from './utils' + +test('builds with invalid content frontmatter, but warnings', async () => { + const { output, status } = await buildFixture('invalid-content-frontmatter') + + expect(status).toBe('success') + + expectValidationWarningCount(output, 5, 1) + + expectValidationWarnings(output, 'test/', [ + ['Frontmater', ValidationErrorType.Spell, "frontmater", []], + ['heus', ValidationErrorType.Spell, "heus", ["hers", "hews", "he's", "hems", "hens", "hes", "hues", "Hess", "Hus", "Zeus"]], + ['someting', ValidationErrorType.Spell, "someting", ["something"]], + ['evaning', ValidationErrorType.Spell, "evaning", ["evading", "evening"]], + ['toturial', ValidationErrorType.Spell, "toturial", ["tutorial"]], + ]) +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 29a5be0..3d1ad54 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -65,6 +65,12 @@ importers: github-slugger: specifier: ^2.0.0 version: 2.0.0 + gray-matter: + specifier: ^4.0.3 + version: 4.0.3 + hast-util-to-text: + specifier: ^4.0.2 + version: 4.0.2 kleur: specifier: ^4.1.5 version: 4.1.5 @@ -80,6 +86,9 @@ importers: picomatch: specifier: ^4.0.2 version: 4.0.2 + rehype-parse: + specifier: ^9.0.1 + version: 9.0.1 retext: specifier: ^9.0.0 version: 9.0.0 @@ -436,6 +445,18 @@ importers: specifier: workspace:* version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/invalid-content-frontmatter: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/invalid-content-multilingual: dependencies: '@astrojs/starlight': @@ -1966,6 +1987,10 @@ packages: expressive-code@0.38.3: resolution: {integrity: sha512-COM04AiUotHCKJgWdn7NtW2lqu8OW8owAidMpkXt1qxrZ9Q2iC7+tok/1qIn2ocGnczvr9paIySgGnEwFeEQ8Q==} + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -2061,6 +2086,10 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + gray-matter@4.0.3: + resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} + engines: {node: '>=6.0'} + gunning-fog@2.0.1: resolution: {integrity: sha512-cszyB/P2ET+MsNosEfzjNZhVVMeLKAKYV+5g5NrYPdzKzwKcpzPqlkM3D3l41qVyElT33RYX8tQTzYYX6mnmGQ==} @@ -2197,6 +2226,10 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -2270,6 +2303,10 @@ packages: jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} @@ -2931,6 +2968,10 @@ packages: sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + section-matter@1.0.0: + resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} + engines: {node: '>=4'} + semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} @@ -3038,6 +3079,10 @@ packages: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} + strip-bom-string@1.0.0: + resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} + engines: {node: '>=0.10.0'} + strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -4832,6 +4877,10 @@ snapshots: '@expressive-code/plugin-shiki': 0.38.3 '@expressive-code/plugin-text-markers': 0.38.3 + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + extend@3.0.2: {} extendable-error@0.1.7: {} @@ -4932,6 +4981,13 @@ snapshots: graceful-fs@4.2.11: {} + gray-matter@4.0.3: + dependencies: + js-yaml: 3.14.1 + kind-of: 6.0.3 + section-matter: 1.0.0 + strip-bom-string: 1.0.0 + gunning-fog@2.0.1: {} h3@1.13.0: @@ -5187,6 +5243,8 @@ snapshots: is-docker@3.0.0: {} + is-extendable@0.1.1: {} + is-extglob@2.1.1: {} is-fullwidth-code-point@3.0.0: {} @@ -5257,6 +5315,8 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 + kind-of@6.0.3: {} + kleur@3.0.3: {} kleur@4.1.5: {} @@ -6416,6 +6476,11 @@ snapshots: sax@1.4.1: {} + section-matter@1.0.0: + dependencies: + extend-shallow: 2.0.1 + kind-of: 6.0.3 + semver@7.6.3: {} sharp@0.33.5: @@ -6544,6 +6609,8 @@ snapshots: dependencies: ansi-regex: 6.1.0 + strip-bom-string@1.0.0: {} + strip-bom@3.0.0: {} style-to-object@1.0.8: From 7df3883d5131b42a1d2afca3365da0d4b80d5af0 Mon Sep 17 00:00:00 2001 From: trueberryless Date: Mon, 13 Jan 2025 18:07:19 +0100 Subject: [PATCH 14/30] change indefinite article plugin to own --- .../libs/validation.ts | 2 +- packages/starlight-spell-checker/package.json | 2 +- .../indefiniteArticle.throwError.test.ts | 6 ++-- pnpm-lock.yaml | 28 +++++++++---------- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/packages/starlight-spell-checker/libs/validation.ts b/packages/starlight-spell-checker/libs/validation.ts index 9e131e6..c36a931 100644 --- a/packages/starlight-spell-checker/libs/validation.ts +++ b/packages/starlight-spell-checker/libs/validation.ts @@ -15,7 +15,7 @@ import retextCasePolice from "retext-case-police"; import retextContractions from "retext-contractions"; import retextDiacritics from "retext-diacritics"; import retextEquality from "retext-equality"; -import retextIndefiniteArticle from "retext-indefinite-article"; +import retextIndefiniteArticle from "@trueberryless-org/retext-indefinite-article"; import retextIntensify from "retext-intensify"; // import retextOveruse from "retext-overuse"; import retextPassive from "retext-passive"; diff --git a/packages/starlight-spell-checker/package.json b/packages/starlight-spell-checker/package.json index 2519b88..e28e5bf 100644 --- a/packages/starlight-spell-checker/package.json +++ b/packages/starlight-spell-checker/package.json @@ -32,6 +32,7 @@ }, "bugs": "https://github.com/trueberryless-org/starlight-spell-checker/issues", "dependencies": { + "@trueberryless-org/retext-indefinite-article": "^0.1.0", "dictionary-da": "^6.0.0", "dictionary-de": "^3.0.0", "dictionary-en": "^4.0.0", @@ -58,7 +59,6 @@ "retext-contractions": "^6.0.0", "retext-diacritics": "^5.0.0", "retext-equality": "^7.1.0", - "retext-indefinite-article": "^5.0.0", "retext-intensify": "^7.0.0", "retext-overuse": "^1.1.1", "retext-passive": "^5.0.0", diff --git a/packages/starlight-spell-checker/tests/indefiniteArticle.throwError.test.ts b/packages/starlight-spell-checker/tests/indefiniteArticle.throwError.test.ts index fb057a1..57d6ff1 100644 --- a/packages/starlight-spell-checker/tests/indefiniteArticle.throwError.test.ts +++ b/packages/starlight-spell-checker/tests/indefiniteArticle.throwError.test.ts @@ -19,8 +19,8 @@ test('does not build with indefinite article throw error invalid English content expectValidationErrorCount(output, 3, 1) expectValidationErrors(output, '/', [ - ['a', ValidationErrorType.IndefiniteArticle, "retext-indefinite-article", ["an"]], - ['a', ValidationErrorType.IndefiniteArticle, "retext-indefinite-article", ["an"]], - ['an', ValidationErrorType.IndefiniteArticle, "retext-indefinite-article", ["a"]], + ['a 8-year', ValidationErrorType.IndefiniteArticle, "retext-indefinite-article", ["an 8-year"]], + ['a hour', ValidationErrorType.IndefiniteArticle, "retext-indefinite-article", ["an hour"]], + ['an European', ValidationErrorType.IndefiniteArticle, "retext-indefinite-article", ["a European"]], ]) }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3d1ad54..27c5d39 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -32,6 +32,9 @@ importers: packages/starlight-spell-checker: dependencies: + '@trueberryless-org/retext-indefinite-article': + specifier: ^0.1.0 + version: 0.1.0 dictionary-da: specifier: ^6.0.0 version: 6.0.0 @@ -110,9 +113,6 @@ importers: retext-equality: specifier: ^7.1.0 version: 7.1.0 - retext-indefinite-article: - specifier: ^5.0.0 - version: 5.0.0 retext-intensify: specifier: ^7.0.0 version: 7.0.0 @@ -1453,6 +1453,9 @@ packages: '@shikijs/vscode-textmate@10.0.1': resolution: {integrity: sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==} + '@trueberryless-org/retext-indefinite-article@0.1.0': + resolution: {integrity: sha512-z8OpnRUeBQJ5tP+bk5/i3TZPVCWzWYHwEh0iMOGgLoMPd/o3Zb/6J6+hvAzgkGylmglsIOLoRAznD9r0TPVbSg==} + '@types/acorn@4.0.6': resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} @@ -2901,9 +2904,6 @@ packages: retext-equality@7.1.0: resolution: {integrity: sha512-YzrGxIfubNetpi5xEZXFaWKaQNdDHYal0JNaIllTRO+vkjO0FRuGgLoYixR1BYR3vx7k6p7c+MdVM1NxTlC+MQ==} - retext-indefinite-article@5.0.0: - resolution: {integrity: sha512-vro0uKcT685qTUy2IWpJiW786JULrs5KK9jSbNEzHq2ln8PV/uQqqlzueSF4wpOtBUl1JzEPetH9hIDdzQ2ypA==} - retext-intensify@7.0.0: resolution: {integrity: sha512-wzhhiuCXYViQbvR9AdNhCeeDf3C9ImTtjwIPCYc2EL37SfMQ94WARbKaUytJO+DWsRQLlpztwwR3JyOhGBnsag==} @@ -4255,6 +4255,14 @@ snapshots: '@shikijs/vscode-textmate@10.0.1': {} + '@trueberryless-org/retext-indefinite-article@0.1.0': + dependencies: + '@types/nlcst': 2.0.3 + nlcst-to-string: 4.0.0 + number-to-words: 1.2.4 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + '@types/acorn@4.0.6': dependencies: '@types/estree': 1.0.6 @@ -6293,14 +6301,6 @@ snapshots: unist-util-visit: 5.0.0 vfile: 6.0.3 - retext-indefinite-article@5.0.0: - dependencies: - '@types/nlcst': 2.0.3 - nlcst-to-string: 4.0.0 - number-to-words: 1.2.4 - unist-util-visit: 5.0.0 - vfile: 6.0.3 - retext-intensify@7.0.0: dependencies: '@types/nlcst': 2.0.3 From a5777eb4c98fcf5cd9066c09b3f16d5f3f229254 Mon Sep 17 00:00:00 2001 From: trueberryless Date: Mon, 13 Jan 2025 21:43:37 +0100 Subject: [PATCH 15/30] redundant acronyms --- .../astro.config.ts | 24 +++++++++++++++++++ .../package.json | 10 ++++++++ .../src/content.config.ts | 7 ++++++ .../src/content/docs/index.md | 5 ++++ .../astro.config.ts | 24 +++++++++++++++++++ .../package.json | 10 ++++++++ .../src/content.config.ts | 7 ++++++ .../src/content/docs/index.md | 5 ++++ .../redundantAcronyms.throwError.test.ts | 24 +++++++++++++++++++ pnpm-lock.yaml | 24 +++++++++++++++++++ 10 files changed, 140 insertions(+) create mode 100644 packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-invalid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-invalid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-invalid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-invalid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-valid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-valid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-valid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-valid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/redundantAcronyms.throwError.test.ts diff --git a/packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-invalid-content/astro.config.ts new file mode 100644 index 0000000..3e32427 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-invalid-content/astro.config.ts @@ -0,0 +1,24 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + redundantAcronyms: { + enabled: true, + throwError: true, + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - redundant acronyms throw error invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-invalid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-invalid-content/package.json new file mode 100644 index 0000000..5888fc1 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-invalid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/redundant-acronyms-throw-error-invalid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-invalid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-invalid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-invalid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-invalid-content/src/content/docs/index.md new file mode 100644 index 0000000..5b5df52 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-invalid-content/src/content/docs/index.md @@ -0,0 +1,5 @@ +--- +title: Index +--- + +Where can I find an ATM machine? diff --git a/packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-valid-content/astro.config.ts new file mode 100644 index 0000000..abe19c8 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-valid-content/astro.config.ts @@ -0,0 +1,24 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + redundantAcronyms: { + enabled: true, + throwError: true, + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - redundant acronyms throw error valid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-valid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-valid-content/package.json new file mode 100644 index 0000000..f6836c5 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-valid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/redundant-acronyms-throw-error-valid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-valid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-valid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-valid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-valid-content/src/content/docs/index.md new file mode 100644 index 0000000..9b3eea1 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-valid-content/src/content/docs/index.md @@ -0,0 +1,5 @@ +--- +title: Index +--- + +Where can I find an ATM? diff --git a/packages/starlight-spell-checker/tests/redundantAcronyms.throwError.test.ts b/packages/starlight-spell-checker/tests/redundantAcronyms.throwError.test.ts new file mode 100644 index 0000000..c1e4234 --- /dev/null +++ b/packages/starlight-spell-checker/tests/redundantAcronyms.throwError.test.ts @@ -0,0 +1,24 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' + +test('builds with redundant acronyms throw error valid English content', async () => { + const { output, status } = await buildFixture('redundant-acronyms-throw-error-valid-content') + + expect(status).toBe('success') + expectValidationSuccess(output) +}) + +test('does not build with redundant acronyms throw error invalid English content', async () => { + const { output, status } = await buildFixture('redundant-acronyms-throw-error-invalid-content') + + expect(status).toBe('error') + + expectValidationErrorCount(output, 1, 1) + + expectValidationErrors(output, '/', [ + ['ATM machine', ValidationErrorType.RedundantAcronyms, "atm", ["ATM"]], + ]) +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 27c5d39..6288435 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -541,6 +541,30 @@ importers: specifier: workspace:* version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-invalid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-valid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/spell-throw-error-invalid-content: dependencies: '@astrojs/starlight': From f8a0d5ddcdc8a4f0b7e577aecb94ed5b1a26bbe3 Mon Sep 17 00:00:00 2001 From: trueberryless Date: Mon, 13 Jan 2025 21:52:47 +0100 Subject: [PATCH 16/30] repeated words --- .../libs/validation.ts | 2 +- .../astro.config.ts | 24 +++++++++++++++++ .../package.json | 10 +++++++ .../src/content.config.ts | 7 +++++ .../src/content/docs/index.md | 5 ++++ .../astro.config.ts | 24 +++++++++++++++++ .../package.json | 10 +++++++ .../src/content.config.ts | 7 +++++ .../src/content/docs/index.md | 5 ++++ .../tests/repeatedWords.throwError.test.ts | 26 +++++++++++++++++++ pnpm-lock.yaml | 24 +++++++++++++++++ 11 files changed, 143 insertions(+), 1 deletion(-) create mode 100644 packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-invalid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-invalid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-invalid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-invalid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-valid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-valid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-valid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-valid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/repeatedWords.throwError.test.ts diff --git a/packages/starlight-spell-checker/libs/validation.ts b/packages/starlight-spell-checker/libs/validation.ts index c36a931..a888263 100644 --- a/packages/starlight-spell-checker/libs/validation.ts +++ b/packages/starlight-spell-checker/libs/validation.ts @@ -160,7 +160,7 @@ export async function validateTexts(options: StarlightSpellCheckerConfig) { let fileWarnings: ValidationError[] = []; for (const error of file.messages.values()) { - console.log(error); + // console.log(error); const throwError = getThrowErrorForType( validationErrorTypeMapper[error.source ?? "other"], options diff --git a/packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-invalid-content/astro.config.ts new file mode 100644 index 0000000..73f2b94 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-invalid-content/astro.config.ts @@ -0,0 +1,24 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + repeatedWords: { + enabled: true, + throwError: true, + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - repeated words throw error invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-invalid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-invalid-content/package.json new file mode 100644 index 0000000..43d8606 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-invalid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/repeated-words-throw-error-invalid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-invalid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-invalid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-invalid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-invalid-content/src/content/docs/index.md new file mode 100644 index 0000000..3fe611e --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-invalid-content/src/content/docs/index.md @@ -0,0 +1,5 @@ +--- +title: Index +--- + +Well, it it doesn’t have to to be. Like a fish in the the sea. diff --git a/packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-valid-content/astro.config.ts new file mode 100644 index 0000000..ff94df9 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-valid-content/astro.config.ts @@ -0,0 +1,24 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + repeatedWords: { + enabled: true, + throwError: true, + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - repeated words throw error valid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-valid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-valid-content/package.json new file mode 100644 index 0000000..56cc78b --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-valid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/repeated-words-throw-error-valid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-valid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-valid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-valid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-valid-content/src/content/docs/index.md new file mode 100644 index 0000000..787fe6e --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-valid-content/src/content/docs/index.md @@ -0,0 +1,5 @@ +--- +title: Index +--- + +Well, it doesn’t have to be. Like a fish in the sea. diff --git a/packages/starlight-spell-checker/tests/repeatedWords.throwError.test.ts b/packages/starlight-spell-checker/tests/repeatedWords.throwError.test.ts new file mode 100644 index 0000000..1d2a23e --- /dev/null +++ b/packages/starlight-spell-checker/tests/repeatedWords.throwError.test.ts @@ -0,0 +1,26 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' + +test('builds with repeated words throw error valid English content', async () => { + const { output, status } = await buildFixture('repeated-words-throw-error-valid-content') + + expect(status).toBe('success') + expectValidationSuccess(output) +}) + +test('does not build with repeated words throw error invalid English content', async () => { + const { output, status } = await buildFixture('repeated-words-throw-error-invalid-content') + + expect(status).toBe('error') + + expectValidationErrorCount(output, 3, 1) + + expectValidationErrors(output, '/', [ + ['it it', ValidationErrorType.RepeatedWords, "it", ["it"]], + ['to to', ValidationErrorType.RepeatedWords, "to", ["to"]], + ['the the', ValidationErrorType.RepeatedWords, "the", ["the"]], + ]) +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6288435..4e42ac9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -565,6 +565,30 @@ importers: specifier: workspace:* version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-invalid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/repeated-words-throw-error-valid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/spell-throw-error-invalid-content: dependencies: '@astrojs/starlight': From 40c2be3d6fbab0189851ef44b4c2524bded06c51 Mon Sep 17 00:00:00 2001 From: trueberryless Date: Mon, 13 Jan 2025 21:56:39 +0100 Subject: [PATCH 17/30] simplify --- .../astro.config.ts | 24 +++++++++++++++++ .../package.json | 10 +++++++ .../src/content.config.ts | 7 +++++ .../src/content/docs/index.md | 7 +++++ .../astro.config.ts | 24 +++++++++++++++++ .../package.json | 10 +++++++ .../src/content.config.ts | 7 +++++ .../src/content/docs/index.md | 7 +++++ .../tests/simplify.throwError.test.ts | 26 +++++++++++++++++++ pnpm-lock.yaml | 24 +++++++++++++++++ 10 files changed, 146 insertions(+) create mode 100644 packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-invalid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-invalid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-invalid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-invalid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-valid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-valid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-valid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-valid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/simplify.throwError.test.ts diff --git a/packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-invalid-content/astro.config.ts new file mode 100644 index 0000000..9f00630 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-invalid-content/astro.config.ts @@ -0,0 +1,24 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + simplify: { + enabled: true, + throwError: true, + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - simplify throw error invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-invalid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-invalid-content/package.json new file mode 100644 index 0000000..9f2a69a --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-invalid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/simplify-throw-error-invalid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-invalid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-invalid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-invalid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-invalid-content/src/content/docs/index.md new file mode 100644 index 0000000..8f02799 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-invalid-content/src/content/docs/index.md @@ -0,0 +1,7 @@ +--- +title: Index +--- + +You can utilize a shorter word. +Be advised, don’t do this. +That’s the appropriate thing to do. diff --git a/packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-valid-content/astro.config.ts new file mode 100644 index 0000000..9cc6567 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-valid-content/astro.config.ts @@ -0,0 +1,24 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + simplify: { + enabled: true, + throwError: true, + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - simplify throw error valid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-valid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-valid-content/package.json new file mode 100644 index 0000000..081b29e --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-valid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/simplify-throw-error-valid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-valid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-valid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-valid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-valid-content/src/content/docs/index.md new file mode 100644 index 0000000..7d9d9c3 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-valid-content/src/content/docs/index.md @@ -0,0 +1,7 @@ +--- +title: Index +--- + +You can use a shorter word. +Don’t do this. +That’s the right thing to do. diff --git a/packages/starlight-spell-checker/tests/simplify.throwError.test.ts b/packages/starlight-spell-checker/tests/simplify.throwError.test.ts new file mode 100644 index 0000000..7d64792 --- /dev/null +++ b/packages/starlight-spell-checker/tests/simplify.throwError.test.ts @@ -0,0 +1,26 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' + +test('builds with simplify throw error valid English content', async () => { + const { output, status } = await buildFixture('simplify-throw-error-valid-content') + + expect(status).toBe('success') + expectValidationSuccess(output) +}) + +test('does not build with simplify throw error invalid English content', async () => { + const { output, status } = await buildFixture('simplify-throw-error-invalid-content') + + expect(status).toBe('error') + + expectValidationErrorCount(output, 3, 1) + + expectValidationErrors(output, '/', [ + ['utilize', ValidationErrorType.Simplify, "utilize", ["use"]], + ['Be advised', ValidationErrorType.Simplify, "be-advised", []], + ['appropriate', ValidationErrorType.Simplify, "appropriate", ["proper", "right"]], + ]) +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4e42ac9..b4f9893 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -589,6 +589,30 @@ importers: specifier: workspace:* version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-invalid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/simplify-throw-error-valid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/spell-throw-error-invalid-content: dependencies: '@astrojs/starlight': From e7f1f2b608ee348133098fd1c4e339dd37da4345 Mon Sep 17 00:00:00 2001 From: trueberryless Date: Mon, 13 Jan 2025 22:22:13 +0100 Subject: [PATCH 18/30] udpate usage and write tests --- .../libs/validation.ts | 4 +- packages/starlight-spell-checker/package.json | 2 +- .../astro.config.ts | 24 + .../package.json | 10 + .../src/content.config.ts | 7 + .../src/content/docs/index.md | 7 + .../astro.config.ts | 23 + .../package.json | 10 + .../src/content.config.ts | 7 + .../src/content/docs/index.md | 7 + .../tests/usage.throwError.test.ts | 26 + pnpm-lock.yaml | 463 +++++++++++------- 12 files changed, 409 insertions(+), 181 deletions(-) create mode 100644 packages/starlight-spell-checker/tests/fixtures/usage-throw-error-invalid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/usage-throw-error-invalid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/usage-throw-error-invalid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/usage-throw-error-invalid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/usage-throw-error-valid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/usage-throw-error-valid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/usage-throw-error-valid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/usage-throw-error-valid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/usage.throwError.test.ts diff --git a/packages/starlight-spell-checker/libs/validation.ts b/packages/starlight-spell-checker/libs/validation.ts index a888263..2c320ba 100644 --- a/packages/starlight-spell-checker/libs/validation.ts +++ b/packages/starlight-spell-checker/libs/validation.ts @@ -30,7 +30,7 @@ import retextRedundantAcronyms from "retext-redundant-acronyms"; import retextRepeatedWords from "retext-repeated-words"; import retextSimplify from "retext-simplify"; import retextSpell from "retext-spell"; -import retextUsage from "retext-usage"; +import retextUsage from "@trueberryless-org/retext-usage"; import retextQuotes from "retext-quotes"; export const ValidationErrorType = { @@ -160,7 +160,7 @@ export async function validateTexts(options: StarlightSpellCheckerConfig) { let fileWarnings: ValidationError[] = []; for (const error of file.messages.values()) { - // console.log(error); + console.log(error); const throwError = getThrowErrorForType( validationErrorTypeMapper[error.source ?? "other"], options diff --git a/packages/starlight-spell-checker/package.json b/packages/starlight-spell-checker/package.json index e28e5bf..ae373c4 100644 --- a/packages/starlight-spell-checker/package.json +++ b/packages/starlight-spell-checker/package.json @@ -33,6 +33,7 @@ "bugs": "https://github.com/trueberryless-org/starlight-spell-checker/issues", "dependencies": { "@trueberryless-org/retext-indefinite-article": "^0.1.0", + "@trueberryless-org/retext-usage": "^0.1.3", "dictionary-da": "^6.0.0", "dictionary-de": "^3.0.0", "dictionary-en": "^4.0.0", @@ -69,7 +70,6 @@ "retext-repeated-words": "^5.0.0", "retext-simplify": "^8.0.0", "retext-spell": "^6.1.0", - "retext-usage": "^0.5.0", "unified": "^11.0.5", "unist-util-visit": "^5.0.0" }, diff --git a/packages/starlight-spell-checker/tests/fixtures/usage-throw-error-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/usage-throw-error-invalid-content/astro.config.ts new file mode 100644 index 0000000..620b13a --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/usage-throw-error-invalid-content/astro.config.ts @@ -0,0 +1,24 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + usage: { + enabled: true, + throwError: true, + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - usage throw error invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/usage-throw-error-invalid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/usage-throw-error-invalid-content/package.json new file mode 100644 index 0000000..8be9b1f --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/usage-throw-error-invalid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/usage-throw-error-invalid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/usage-throw-error-invalid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/usage-throw-error-invalid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/usage-throw-error-invalid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/usage-throw-error-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/usage-throw-error-invalid-content/src/content/docs/index.md new file mode 100644 index 0000000..3f27557 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/usage-throw-error-invalid-content/src/content/docs/index.md @@ -0,0 +1,7 @@ +--- +title: Index +--- + +Repeat ad nauseum. +Get some money from the ATM machine. +This is majorly inappropriate. diff --git a/packages/starlight-spell-checker/tests/fixtures/usage-throw-error-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/usage-throw-error-valid-content/astro.config.ts new file mode 100644 index 0000000..f18ffd1 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/usage-throw-error-valid-content/astro.config.ts @@ -0,0 +1,23 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + usage: { + enabled: true, + throwError: true, + }, + spell: { + enabled: false, + }, + }), + ], + title: "Starlight Spell Checker Tests - usage throw error valid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/usage-throw-error-valid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/usage-throw-error-valid-content/package.json new file mode 100644 index 0000000..6ccee58 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/usage-throw-error-valid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/usage-throw-error-valid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/usage-throw-error-valid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/usage-throw-error-valid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/usage-throw-error-valid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/usage-throw-error-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/usage-throw-error-valid-content/src/content/docs/index.md new file mode 100644 index 0000000..3be3ba6 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/usage-throw-error-valid-content/src/content/docs/index.md @@ -0,0 +1,7 @@ +--- +title: Index +--- + +Repeat ad nauseam. +Get some money from the ATM. +This is extremely inappropriate. diff --git a/packages/starlight-spell-checker/tests/usage.throwError.test.ts b/packages/starlight-spell-checker/tests/usage.throwError.test.ts new file mode 100644 index 0000000..3908e23 --- /dev/null +++ b/packages/starlight-spell-checker/tests/usage.throwError.test.ts @@ -0,0 +1,26 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' + +test('builds with usage throw error valid English content', async () => { + const { output, status } = await buildFixture('usage-throw-error-valid-content') + + expect(status).toBe('success') + expectValidationSuccess(output) +}) + +test('does not build with usage throw error invalid English content', async () => { + const { output, status } = await buildFixture('usage-throw-error-invalid-content') + + expect(status).toBe('error') + + expectValidationErrorCount(output, 3, 1) + + expectValidationErrors(output, '/', [ + ['ad nauseum', ValidationErrorType.Usage, "ad-nauseum", ["ad nauseam"]], + ['ATM machine', ValidationErrorType.Usage, "atm-machine", ["ATM"]], + ['majorly', ValidationErrorType.Usage, "majorly", ["extremely"]], + ]) +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b4f9893..e8c53e5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,10 +19,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.3 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.2 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) sharp: specifier: ^0.33.5 version: 0.33.5 @@ -35,6 +35,9 @@ importers: '@trueberryless-org/retext-indefinite-article': specifier: ^0.1.0 version: 0.1.0 + '@trueberryless-org/retext-usage': + specifier: ^0.1.3 + version: 0.1.3 dictionary-da: specifier: ^6.0.0 version: 6.0.0 @@ -82,7 +85,7 @@ importers: version: 3.0.0 mdast-util-mdx-jsx: specifier: ^3.1.3 - version: 3.1.3 + version: 3.2.0 no-cliches: specifier: ^0.3.6 version: 0.3.6 @@ -143,9 +146,6 @@ importers: retext-spell: specifier: ^6.1.0 version: 6.1.0 - retext-usage: - specifier: ^0.5.0 - version: 0.5.0 unified: specifier: ^11.0.5 version: 11.0.5 @@ -155,7 +155,7 @@ importers: devDependencies: '@astrojs/starlight': specifier: ^0.30.3 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) '@vitest/coverage-v8': specifier: ^2.1.8 version: 2.1.8(vitest@2.1.8) @@ -164,7 +164,7 @@ importers: version: 2.1.8(vitest@2.1.8) astro: specifier: ^5.1.2 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) vitest: specifier: ^2.1.8 version: 2.1.8(@vitest/ui@2.1.8) @@ -173,10 +173,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -185,10 +185,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -197,10 +197,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -209,10 +209,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -221,10 +221,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -233,10 +233,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -245,10 +245,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -257,10 +257,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -269,10 +269,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -281,10 +281,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -293,10 +293,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -305,10 +305,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -317,10 +317,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -329,10 +329,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -341,10 +341,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -353,10 +353,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -365,10 +365,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -377,10 +377,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -389,10 +389,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -401,10 +401,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -413,10 +413,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -425,10 +425,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -437,10 +437,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -449,10 +449,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -461,10 +461,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -473,10 +473,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -485,10 +485,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -497,10 +497,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -509,10 +509,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -521,10 +521,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -533,10 +533,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -545,10 +545,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -557,10 +557,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -569,10 +569,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -581,10 +581,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -593,10 +593,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -605,10 +605,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -617,10 +617,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -629,10 +629,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -641,10 +641,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -653,10 +653,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -665,10 +665,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -677,10 +677,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -689,10 +689,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -701,10 +701,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -713,10 +713,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -725,10 +725,34 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/usage-throw-error-invalid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/usage-throw-error-valid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -737,10 +761,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -749,10 +773,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -761,10 +785,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -773,10 +797,10 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 - version: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) starlight-spell-checker: specifier: workspace:* version: link:../../.. @@ -796,8 +820,8 @@ packages: '@astrojs/markdown-remark@6.0.1': resolution: {integrity: sha512-CTSYijj25NfxgZi15TU3CwPwgyD1/7yA3FcdcNmB9p94nydupiUbrIiq3IqeTp2m5kCVzxbPZeC7fTwEOaNyGw==} - '@astrojs/mdx@4.0.3': - resolution: {integrity: sha512-8HcuyNG/KgYUAQWVzKFkboXcTOBCW6aQ0WK0Er/iSmVSF0y3yimg4/3QSt+Twv9dogpwIHL+E8iBJKqieFv4+g==} + '@astrojs/mdx@4.0.5': + resolution: {integrity: sha512-JhMCm4wf94PNHQDWKyez2ZVLcG5R6Cyjk8TmpqYVRrOTuU3GIWeDAoum7Q1p05SFD+nYwvXOcv42/m8pE3Ylug==} engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} peerDependencies: astro: ^5.0.0 @@ -809,10 +833,10 @@ packages: '@astrojs/sitemap@3.2.1': resolution: {integrity: sha512-uxMfO8f7pALq0ADL6Lk68UV6dNYjJ2xGUzyjjVj60JLBs5a6smtlkBYv3tQ0DzoqwS7c9n4FUx5lgv0yPo/fgA==} - '@astrojs/starlight@0.30.3': - resolution: {integrity: sha512-HbGYYIR2Rnrvvc2jD0dUpp8zUzv3jQYtG5im3aulDgE4Jo21Ahw0yXlb/Y134G3LALLbqhImmlbt/h/nDV3yMA==} + '@astrojs/starlight@0.31.0': + resolution: {integrity: sha512-O70j7m42wp0EcX26Vsm8i37KSlcoHNFY6VLMbJKWKel6XRHS+IVG6AePcpBNS1I+FKkkcagTFJfy3X3n2dDo4Q==} peerDependencies: - astro: ^5.0.0 + astro: ^5.1.5 '@astrojs/telemetry@3.2.0': resolution: {integrity: sha512-wxhSKRfKugLwLlr4OFfcqovk+LIFtKwLyGPqMsv+9/ibqqnW3Gv7tBhtKEb0gAyUAC4G9BTVQeQahqnQAhd6IQ==} @@ -1198,17 +1222,17 @@ packages: cpu: [x64] os: [win32] - '@expressive-code/core@0.38.3': - resolution: {integrity: sha512-s0/OtdRpBONwcn23O8nVwDNQqpBGKscysejkeBkwlIeHRLZWgiTVrusT5Idrdz1d8cW5wRk9iGsAIQmwDPXgJg==} + '@expressive-code/core@0.40.0': + resolution: {integrity: sha512-vKRxKaDVhSozGPETcPOB7NF8sn1ICZoO/UfUWs/4o+XmDIOSX7cBQX8BVukenvSksdv5Aaf/teuGzjxX0a7Ibw==} - '@expressive-code/plugin-frames@0.38.3': - resolution: {integrity: sha512-qL2oC6FplmHNQfZ8ZkTR64/wKo9x0c8uP2WDftR/ydwN/yhe1ed7ZWYb8r3dezxsls+tDokCnN4zYR594jbpvg==} + '@expressive-code/plugin-frames@0.40.0': + resolution: {integrity: sha512-lIbGPFy29Oaf0zV9BNLH6wRPqINz69KUz7PHCUqT3/Mptgp942CzNynbuaZeNPU10quNV072EsOMim569NmSyA==} - '@expressive-code/plugin-shiki@0.38.3': - resolution: {integrity: sha512-kqHnglZeesqG3UKrb6e9Fq5W36AZ05Y9tCREmSN2lw8LVTqENIeCIkLDdWtQ5VoHlKqwUEQFTVlRehdwoY7Gmw==} + '@expressive-code/plugin-shiki@0.40.0': + resolution: {integrity: sha512-1sb7S/FL1Oqr+MX4Up/LLTFmmlLfd2NyQA+I5TL1PKHHZKptCohmuyekvnPUmMLMnDlm0u2iuR2qxBpjElhf5g==} - '@expressive-code/plugin-text-markers@0.38.3': - resolution: {integrity: sha512-dPK3+BVGTbTmGQGU3Fkj3jZ3OltWUAlxetMHI6limUGCWBCucZiwoZeFM/WmqQa71GyKRzhBT+iEov6kkz2xVA==} + '@expressive-code/plugin-text-markers@0.40.0': + resolution: {integrity: sha512-NvorTEKWHfSE8yg9aUJn6Kb2zUah8VxvCg4HwnHq62AMW8Yu1WwtjLgqCiLIA17EcWlWKsq5dfs4q0K/hVe0mQ==} '@img/sharp-darwin-arm64@0.33.5': resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} @@ -1507,27 +1531,48 @@ packages: '@shikijs/core@1.26.1': resolution: {integrity: sha512-yeo7sG+WZQblKPclUOKRPwkv1PyoHYkJ4gP9DzhFJbTdueKR7wYTI1vfF/bFi1NTgc545yG/DzvVhZgueVOXMA==} + '@shikijs/core@1.26.2': + resolution: {integrity: sha512-ORyu3MrY7dCC7FDLDsFSkBM9b/AT9/Y8rH+UQ07Rtek48pp0ZhQOMPTKolqszP4bBCas6FqTZQYt18BBamVl/g==} + '@shikijs/engine-javascript@1.26.1': resolution: {integrity: sha512-CRhA0b8CaSLxS0E9A4Bzcb3LKBNpykfo9F85ozlNyArxjo2NkijtiwrJZ6eHa+NT5I9Kox2IXVdjUsP4dilsmw==} + '@shikijs/engine-javascript@1.26.2': + resolution: {integrity: sha512-ngkIu9swLVo9Zt5QBtz5Sk08vmPcwuj01r7pPK/Zjmo2U2WyKMK4WMUMmkdQiUacdcLth0zt8u1onp4zhkFXKQ==} + '@shikijs/engine-oniguruma@1.26.1': resolution: {integrity: sha512-F5XuxN1HljLuvfXv7d+mlTkV7XukC1cawdtOo+7pKgPD83CAB1Sf8uHqP3PK0u7njFH0ZhoXE1r+0JzEgAQ+kg==} + '@shikijs/engine-oniguruma@1.26.2': + resolution: {integrity: sha512-mlN7Qrs+w60nKrd7at7XkXSwz6728Pe34taDmHrG6LRHjzCqQ+ysg+/AT6/D2LMk0s2lsr71DjpI73430QP4/w==} + '@shikijs/langs@1.26.1': resolution: {integrity: sha512-oz/TQiIqZejEIZbGtn68hbJijAOTtYH4TMMSWkWYozwqdpKR3EXgILneQy26WItmJjp3xVspHdiUxUCws4gtuw==} + '@shikijs/langs@1.26.2': + resolution: {integrity: sha512-o5cdPycB2Kw3IgncHxWopWPiTkjAj7dG01fLkkUyj3glb5ftxL/Opecq9F54opMlrgXy7ZIqDERvFLlUzsCOuA==} + '@shikijs/themes@1.26.1': resolution: {integrity: sha512-JDxVn+z+wgLCiUhBGx2OQrLCkKZQGzNH3nAxFir4PjUcYiyD8Jdms9izyxIogYmSwmoPTatFTdzyrRKbKlSfPA==} + '@shikijs/themes@1.26.2': + resolution: {integrity: sha512-y4Pn6PM5mODz/e3yF6jAUG7WLKJzqL2tJ5qMJCUkMUB1VRgtQVvoa1cHh7NScryGXyrYGJ8nPnRDhdv2rw0xpA==} + '@shikijs/types@1.26.1': resolution: {integrity: sha512-d4B00TKKAMaHuFYgRf3L0gwtvqpW4hVdVwKcZYbBfAAQXspgkbWqnFfuFl3MDH6gLbsubOcr+prcnsqah3ny7Q==} + '@shikijs/types@1.26.2': + resolution: {integrity: sha512-PO2jucx2FIdlLBPYbIUlMtWSLs5ulcRcuV93cR3T65lkK5SJP4MGBRt9kmWGXiQc0f7+FHj/0BEawditZcI/fQ==} + '@shikijs/vscode-textmate@10.0.1': resolution: {integrity: sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==} '@trueberryless-org/retext-indefinite-article@0.1.0': resolution: {integrity: sha512-z8OpnRUeBQJ5tP+bk5/i3TZPVCWzWYHwEh0iMOGgLoMPd/o3Zb/6J6+hvAzgkGylmglsIOLoRAznD9r0TPVbSg==} + '@trueberryless-org/retext-usage@0.1.3': + resolution: {integrity: sha512-4A00uhd3rCD3afrP3mD5v+Elv0BImTbuI6RFYshkaFkhggiNK/WglZvcVkD1wtAHx5XHkgR2DP/CEjhj3AQK2g==} + '@types/acorn@4.0.6': resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} @@ -1700,13 +1745,13 @@ packages: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true - astro-expressive-code@0.38.3: - resolution: {integrity: sha512-Tvdc7RV0G92BbtyEOsfJtXU35w41CkM94fOAzxbQP67Wj5jArfserJ321FO4XA7WG9QMV0GIBmQq77NBIRDzpQ==} + astro-expressive-code@0.40.0: + resolution: {integrity: sha512-dsnUTXAOwiRLnIjqTcb4dhpsa7BDNImaXlkN0fFrJx2CumZe0tW+pgwTWqxv3haejo9KKih2j6UTMVRq1cTpig==} peerDependencies: astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 - astro@5.1.2: - resolution: {integrity: sha512-+U5lXPEJZ6cQx0botGbPhzN6XGWRgDtXgy/RUkpTmUj18LW6pbzYo0O0k3hFWOazlI039bZ+4P2e/oSNlKzm0Q==} + astro@5.1.6: + resolution: {integrity: sha512-LpTazCIW6syxFePi65gg2ptqqC2kR+PDRym3V23hEQj5yCf+T0t5v9qtp3fW0/+6G+JvP0EprCfCRTt7h/hexg==} engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true @@ -2059,8 +2104,8 @@ packages: resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} engines: {node: '>=12.0.0'} - expressive-code@0.38.3: - resolution: {integrity: sha512-COM04AiUotHCKJgWdn7NtW2lqu8OW8owAidMpkXt1qxrZ9Q2iC7+tok/1qIn2ocGnczvr9paIySgGnEwFeEQ8Q==} + expressive-code@0.40.0: + resolution: {integrity: sha512-yBauWlZ6/G4S7WMfQdENbxpwr0qKHabu5w/uFLoTb3xvg2eo4ttk0aAy0IJTm/0+v12YaCG+Gt5Va0AEnTEXng==} extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} @@ -2466,8 +2511,8 @@ packages: mdast-util-mdx-expression@2.0.1: resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} - mdast-util-mdx-jsx@3.1.3: - resolution: {integrity: sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==} + mdast-util-mdx-jsx@3.2.0: + resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} mdast-util-mdx@3.0.0: resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} @@ -2728,6 +2773,9 @@ packages: oniguruma-to-es@0.10.0: resolution: {integrity: sha512-zapyOUOCJxt+xhiNRPPMtfJkHGsZ98HHB9qJEkdT8BGytO/+kpe4m1Ngf0MzbzTmhacn11w9yGeDP6tzDhnCdg==} + oniguruma-to-es@1.0.0: + resolution: {integrity: sha512-kihvp0O4lFwf5tZMkfanwQLIZ9ORe9OeOFgZonH0BQeThgwfJiaZFeOfvvJVnJIM9TiVmx0RDD35hUJDR0++rQ==} + os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} @@ -2846,6 +2894,10 @@ packages: resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.0: + resolution: {integrity: sha512-27VKOqrYfPncKA2NrFOVhP5MGAfHKLYn/Q0mz9cNQyRAKYi3VNHwYU2qKKqPCqgBmeeJ0uAFB56NumXZ5ZReXg==} + engines: {node: ^10 || ^12 || >=14} + preferred-pm@4.0.0: resolution: {integrity: sha512-gYBeFTZLu055D8Vv3cSPox/0iTPtkzxpLroSYYA7WXgRi31WCJ51Uyl8ZiPeUUjyvs2MBzK+S8v9JVUgHU/Sqw==} engines: {node: '>=18.12'} @@ -2910,8 +2962,8 @@ packages: regex@5.1.1: resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} - rehype-expressive-code@0.38.3: - resolution: {integrity: sha512-RYSSDkMBikoTbycZPkcWp6ELneANT4eTpND1DSRJ6nI2eVFUwTBDCvE2vO6jOOTaavwnPiydi4i/87NRyjpdOA==} + rehype-expressive-code@0.40.0: + resolution: {integrity: sha512-nxZYcFYD3ceqX0VkFIWwJ6gcWasJ+af50MoLqXOg08stgYhgvyWkjqaVCVBpZoBmAQDu9Jkl3xzqUcse8DUfaA==} rehype-format@5.0.1: resolution: {integrity: sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ==} @@ -3015,10 +3067,6 @@ packages: retext-stringify@4.0.0: resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==} - retext-usage@0.5.0: - resolution: {integrity: sha512-TAHbxZg23EcbmYjdBn5zmSAeINDJH2iFvmg/EvG05Hf5rwZpHgSDAfTdeHQURRDdpc1c/xBx6Dj5xvqGl1K/TQ==} - deprecated: This package is no longer maintained. Use at your own risk. - retext@9.0.0: resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} @@ -3064,6 +3112,9 @@ packages: shiki@1.26.1: resolution: {integrity: sha512-Gqg6DSTk3wYqaZ5OaYtzjcdxcBvX5kCy24yvRJEgjT5U+WHlmqCThLuBUx0juyxQBi+6ug53IGeuQS07DWwpcw==} + shiki@1.26.2: + resolution: {integrity: sha512-iP7u2NA9A6JwRRCkIUREEX2cMhlYV5EBmbbSlfSRvPThwca8HBRbVkWuNWW+kw9+i6BSUZqqG6YeUs5dC2SjZw==} + siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -3619,12 +3670,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@4.0.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2))': + '@astrojs/mdx@4.0.5(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2))': dependencies: '@astrojs/markdown-remark': 6.0.1 '@mdx-js/mdx': 3.1.0(acorn@8.14.0) acorn: 8.14.0 - astro: 5.1.2(rollup@4.29.2)(typescript@5.7.2) + astro: 5.1.6(rollup@4.29.2)(typescript@5.7.2) es-module-lexer: 1.6.0 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.4 @@ -3648,16 +3699,16 @@ snapshots: stream-replace-string: 2.0.0 zod: 3.24.1 - '@astrojs/starlight@0.30.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2))': + '@astrojs/starlight@0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2))': dependencies: - '@astrojs/mdx': 4.0.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + '@astrojs/mdx': 4.0.5(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) '@astrojs/sitemap': 3.2.1 '@pagefind/default-ui': 1.3.0 '@types/hast': 3.0.4 '@types/js-yaml': 4.0.9 '@types/mdast': 4.0.4 - astro: 5.1.2(rollup@4.29.2)(typescript@5.7.2) - astro-expressive-code: 0.38.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)) + astro: 5.1.6(rollup@4.29.2)(typescript@5.7.2) + astro-expressive-code: 0.40.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) bcp-47: 2.1.0 hast-util-from-html: 2.0.3 hast-util-select: 6.0.3 @@ -4017,30 +4068,30 @@ snapshots: '@esbuild/win32-x64@0.24.2': optional: true - '@expressive-code/core@0.38.3': + '@expressive-code/core@0.40.0': dependencies: '@ctrl/tinycolor': 4.1.0 hast-util-select: 6.0.3 hast-util-to-html: 9.0.4 hast-util-to-text: 4.0.2 hastscript: 9.0.0 - postcss: 8.4.49 - postcss-nested: 6.2.0(postcss@8.4.49) + postcss: 8.5.0 + postcss-nested: 6.2.0(postcss@8.5.0) unist-util-visit: 5.0.0 unist-util-visit-parents: 6.0.1 - '@expressive-code/plugin-frames@0.38.3': + '@expressive-code/plugin-frames@0.40.0': dependencies: - '@expressive-code/core': 0.38.3 + '@expressive-code/core': 0.40.0 - '@expressive-code/plugin-shiki@0.38.3': + '@expressive-code/plugin-shiki@0.40.0': dependencies: - '@expressive-code/core': 0.38.3 - shiki: 1.26.1 + '@expressive-code/core': 0.40.0 + shiki: 1.26.2 - '@expressive-code/plugin-text-markers@0.38.3': + '@expressive-code/plugin-text-markers@0.40.0': dependencies: - '@expressive-code/core': 0.38.3 + '@expressive-code/core': 0.40.0 '@img/sharp-darwin-arm64@0.33.5': optionalDependencies: @@ -4301,30 +4352,63 @@ snapshots: '@types/hast': 3.0.4 hast-util-to-html: 9.0.4 + '@shikijs/core@1.26.2': + dependencies: + '@shikijs/engine-javascript': 1.26.2 + '@shikijs/engine-oniguruma': 1.26.2 + '@shikijs/types': 1.26.2 + '@shikijs/vscode-textmate': 10.0.1 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.4 + '@shikijs/engine-javascript@1.26.1': dependencies: '@shikijs/types': 1.26.1 '@shikijs/vscode-textmate': 10.0.1 oniguruma-to-es: 0.10.0 + '@shikijs/engine-javascript@1.26.2': + dependencies: + '@shikijs/types': 1.26.2 + '@shikijs/vscode-textmate': 10.0.1 + oniguruma-to-es: 1.0.0 + '@shikijs/engine-oniguruma@1.26.1': dependencies: '@shikijs/types': 1.26.1 '@shikijs/vscode-textmate': 10.0.1 + '@shikijs/engine-oniguruma@1.26.2': + dependencies: + '@shikijs/types': 1.26.2 + '@shikijs/vscode-textmate': 10.0.1 + '@shikijs/langs@1.26.1': dependencies: '@shikijs/types': 1.26.1 + '@shikijs/langs@1.26.2': + dependencies: + '@shikijs/types': 1.26.2 + '@shikijs/themes@1.26.1': dependencies: '@shikijs/types': 1.26.1 + '@shikijs/themes@1.26.2': + dependencies: + '@shikijs/types': 1.26.2 + '@shikijs/types@1.26.1': dependencies: '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 + '@shikijs/types@1.26.2': + dependencies: + '@shikijs/vscode-textmate': 10.0.1 + '@types/hast': 3.0.4 + '@shikijs/vscode-textmate@10.0.1': {} '@trueberryless-org/retext-indefinite-article@0.1.0': @@ -4335,6 +4419,14 @@ snapshots: unist-util-visit: 5.0.0 vfile: 6.0.3 + '@trueberryless-org/retext-usage@0.1.3': + dependencies: + array-differ: 1.0.0 + nlcst-search: 1.5.1 + nlcst-to-string: 1.1.0 + object-keys: 1.1.1 + quotation: 1.1.3 + '@types/acorn@4.0.6': dependencies: '@types/estree': 1.0.6 @@ -4507,12 +4599,12 @@ snapshots: astring@1.9.0: {} - astro-expressive-code@0.38.3(astro@5.1.2(rollup@4.29.2)(typescript@5.7.2)): + astro-expressive-code@0.40.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)): dependencies: - astro: 5.1.2(rollup@4.29.2)(typescript@5.7.2) - rehype-expressive-code: 0.38.3 + astro: 5.1.6(rollup@4.29.2)(typescript@5.7.2) + rehype-expressive-code: 0.40.0 - astro@5.1.2(rollup@4.29.2)(typescript@5.7.2): + astro@5.1.6(rollup@4.29.2)(typescript@5.7.2): dependencies: '@astrojs/compiler': 2.10.3 '@astrojs/internal-helpers': 0.4.2 @@ -4950,12 +5042,12 @@ snapshots: expect-type@1.1.0: {} - expressive-code@0.38.3: + expressive-code@0.40.0: dependencies: - '@expressive-code/core': 0.38.3 - '@expressive-code/plugin-frames': 0.38.3 - '@expressive-code/plugin-shiki': 0.38.3 - '@expressive-code/plugin-text-markers': 0.38.3 + '@expressive-code/core': 0.40.0 + '@expressive-code/plugin-frames': 0.40.0 + '@expressive-code/plugin-shiki': 0.40.0 + '@expressive-code/plugin-text-markers': 0.40.0 extend-shallow@2.0.1: dependencies: @@ -5197,7 +5289,7 @@ snapshots: estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.1.3 + mdast-util-mdx-jsx: 3.2.0 mdast-util-mdxjs-esm: 2.0.1 property-information: 6.5.0 space-separated-tokens: 2.0.2 @@ -5231,7 +5323,7 @@ snapshots: estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.1.3 + mdast-util-mdx-jsx: 3.2.0 mdast-util-mdxjs-esm: 2.0.1 property-information: 6.5.0 space-separated-tokens: 2.0.2 @@ -5553,7 +5645,7 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-mdx-jsx@3.1.3: + mdast-util-mdx-jsx@3.2.0: dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 @@ -5574,7 +5666,7 @@ snapshots: dependencies: mdast-util-from-markdown: 2.0.2 mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.1.3 + mdast-util-mdx-jsx: 3.2.0 mdast-util-mdxjs-esm: 2.0.1 mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: @@ -6030,6 +6122,12 @@ snapshots: regex: 5.1.1 regex-recursion: 5.1.1 + oniguruma-to-es@1.0.0: + dependencies: + emoji-regex-xs: 1.0.0 + regex: 5.1.1 + regex-recursion: 5.1.1 + os-tmpdir@1.0.2: {} outdent@0.5.0: {} @@ -6125,9 +6223,9 @@ snapshots: pluralize@8.0.0: {} - postcss-nested@6.2.0(postcss@8.4.49): + postcss-nested@6.2.0(postcss@8.5.0): dependencies: - postcss: 8.4.49 + postcss: 8.5.0 postcss-selector-parser: 6.1.2 postcss-selector-parser@6.1.2: @@ -6141,6 +6239,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.0: + dependencies: + nanoid: 3.3.8 + picocolors: 1.1.1 + source-map-js: 1.2.1 + preferred-pm@4.0.0: dependencies: find-up-simple: 1.0.0 @@ -6220,9 +6324,9 @@ snapshots: dependencies: regex-utilities: 2.3.0 - rehype-expressive-code@0.38.3: + rehype-expressive-code@0.40.0: dependencies: - expressive-code: 0.38.3 + expressive-code: 0.40.0 rehype-format@5.0.1: dependencies: @@ -6498,14 +6602,6 @@ snapshots: nlcst-to-string: 4.0.0 unified: 11.0.5 - retext-usage@0.5.0: - dependencies: - array-differ: 1.0.0 - nlcst-search: 1.5.1 - nlcst-to-string: 1.1.0 - object-keys: 1.1.1 - quotation: 1.1.3 - retext@9.0.0: dependencies: '@types/nlcst': 2.0.3 @@ -6598,6 +6694,17 @@ snapshots: '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 + shiki@1.26.2: + dependencies: + '@shikijs/core': 1.26.2 + '@shikijs/engine-javascript': 1.26.2 + '@shikijs/engine-oniguruma': 1.26.2 + '@shikijs/langs': 1.26.2 + '@shikijs/themes': 1.26.2 + '@shikijs/types': 1.26.2 + '@shikijs/vscode-textmate': 10.0.1 + '@types/hast': 3.0.4 + siginfo@2.0.0: {} signal-exit@4.1.0: {} From 14bf167e9b385c2c17c994b563e2f1abf7c469ad Mon Sep 17 00:00:00 2001 From: trueberryless Date: Tue, 14 Jan 2025 12:24:05 +0100 Subject: [PATCH 19/30] fix case police package https://github.com/trueberryless-org/retext-case-police --- .../libs/validation.ts | 2 +- packages/starlight-spell-checker/package.json | 2 +- .../tests/casePolice.throwError.test.ts | 8 +- pnpm-lock.yaml | 206 +++++++++--------- 4 files changed, 112 insertions(+), 106 deletions(-) diff --git a/packages/starlight-spell-checker/libs/validation.ts b/packages/starlight-spell-checker/libs/validation.ts index 2c320ba..35e2d8b 100644 --- a/packages/starlight-spell-checker/libs/validation.ts +++ b/packages/starlight-spell-checker/libs/validation.ts @@ -10,7 +10,7 @@ import { getValidationData } from "./remark"; import picomatch from "picomatch"; import retextAssuming from "retext-assuming"; -import retextCasePolice from "retext-case-police"; +import retextCasePolice from "@trueberryless-org/retext-case-police"; // import retextCliches from "retext-cliches"; import retextContractions from "retext-contractions"; import retextDiacritics from "retext-diacritics"; diff --git a/packages/starlight-spell-checker/package.json b/packages/starlight-spell-checker/package.json index ae373c4..b91be71 100644 --- a/packages/starlight-spell-checker/package.json +++ b/packages/starlight-spell-checker/package.json @@ -32,6 +32,7 @@ }, "bugs": "https://github.com/trueberryless-org/starlight-spell-checker/issues", "dependencies": { + "@trueberryless-org/retext-case-police": "^0.1.1", "@trueberryless-org/retext-indefinite-article": "^0.1.0", "@trueberryless-org/retext-usage": "^0.1.3", "dictionary-da": "^6.0.0", @@ -55,7 +56,6 @@ "rehype-parse": "^9.0.1", "retext": "^9.0.0", "retext-assuming": "^1.0.0", - "retext-case-police": "^1.1.7", "retext-cliches": "^1.0.0", "retext-contractions": "^6.0.0", "retext-diacritics": "^5.0.0", diff --git a/packages/starlight-spell-checker/tests/casePolice.throwError.test.ts b/packages/starlight-spell-checker/tests/casePolice.throwError.test.ts index 8009434..c021274 100644 --- a/packages/starlight-spell-checker/tests/casePolice.throwError.test.ts +++ b/packages/starlight-spell-checker/tests/casePolice.throwError.test.ts @@ -16,12 +16,13 @@ test('does not build with case police throw error invalid Multilingual content', expect(status).toBe('error') - expectValidationErrorCount(output, 39, 3) + expectValidationErrorCount(output, 45, 3) expectValidationErrors(output, '/', [ ['Github', ValidationErrorType.CasePolice, "retext-case-police", ["GitHub"]], ['kfc', ValidationErrorType.CasePolice, "retext-case-police", ["KFC"]], ['nvidia', ValidationErrorType.CasePolice, "retext-case-police", ["NVIDIA"]], + ['dos', ValidationErrorType.CasePolice, "retext-case-police", ["DOS"]], ['Gcp', ValidationErrorType.CasePolice, "retext-case-police", ["GCP"]], ['posix', ValidationErrorType.CasePolice, "retext-case-police", ["POSIX"]], ['Iaas', ValidationErrorType.CasePolice, "retext-case-police", ["IaaS"]], @@ -31,6 +32,7 @@ test('does not build with case police throw error invalid Multilingual content', ['1password', ValidationErrorType.CasePolice, "retext-case-police", ["1Password"]], ['Angularjs', ValidationErrorType.CasePolice, "retext-case-police", ["AngularJS"]], ['Commonjs', ValidationErrorType.CasePolice, "retext-case-police", ["CommonJS"]], + ['ms-dos', ValidationErrorType.CasePolice, "retext-case-police", ["MS-DOS"]], ['sqlserver', ValidationErrorType.CasePolice, "retext-case-police", ["SQLServer"]], ]) @@ -38,6 +40,7 @@ test('does not build with case police throw error invalid Multilingual content', ['Github', ValidationErrorType.CasePolice, "retext-case-police", ["GitHub"]], ['kfc', ValidationErrorType.CasePolice, "retext-case-police", ["KFC"]], ['nvidia', ValidationErrorType.CasePolice, "retext-case-police", ["NVIDIA"]], + ['dos', ValidationErrorType.CasePolice, "retext-case-police", ["DOS"]], ['Gcp', ValidationErrorType.CasePolice, "retext-case-police", ["GCP"]], ['posix', ValidationErrorType.CasePolice, "retext-case-police", ["POSIX"]], ['Iaas', ValidationErrorType.CasePolice, "retext-case-police", ["IaaS"]], @@ -47,6 +50,7 @@ test('does not build with case police throw error invalid Multilingual content', ['1password', ValidationErrorType.CasePolice, "retext-case-police", ["1Password"]], ['Angularjs', ValidationErrorType.CasePolice, "retext-case-police", ["AngularJS"]], ['Commonjs', ValidationErrorType.CasePolice, "retext-case-police", ["CommonJS"]], + ['ms-dos', ValidationErrorType.CasePolice, "retext-case-police", ["MS-DOS"]], ['sqlserver', ValidationErrorType.CasePolice, "retext-case-police", ["SQLServer"]], ]) @@ -54,6 +58,7 @@ test('does not build with case police throw error invalid Multilingual content', ['Github', ValidationErrorType.CasePolice, "retext-case-police", ["GitHub"]], ['kfc', ValidationErrorType.CasePolice, "retext-case-police", ["KFC"]], ['nvidia', ValidationErrorType.CasePolice, "retext-case-police", ["NVIDIA"]], + ['dos', ValidationErrorType.CasePolice, "retext-case-police", ["DOS"]], ['Gcp', ValidationErrorType.CasePolice, "retext-case-police", ["GCP"]], ['posix', ValidationErrorType.CasePolice, "retext-case-police", ["POSIX"]], ['Iaas', ValidationErrorType.CasePolice, "retext-case-police", ["IaaS"]], @@ -63,6 +68,7 @@ test('does not build with case police throw error invalid Multilingual content', ['1password', ValidationErrorType.CasePolice, "retext-case-police", ["1Password"]], ['Angularjs', ValidationErrorType.CasePolice, "retext-case-police", ["AngularJS"]], ['Commonjs', ValidationErrorType.CasePolice, "retext-case-police", ["CommonJS"]], + ['ms-dos', ValidationErrorType.CasePolice, "retext-case-police", ["MS-DOS"]], ['sqlserver', ValidationErrorType.CasePolice, "retext-case-police", ["SQLServer"]], ]) }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e8c53e5..8f41c8d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,7 +19,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.3 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.2 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -32,6 +32,9 @@ importers: packages/starlight-spell-checker: dependencies: + '@trueberryless-org/retext-case-police': + specifier: ^0.1.1 + version: 0.1.1 '@trueberryless-org/retext-indefinite-article': specifier: ^0.1.0 version: 0.1.0 @@ -101,9 +104,6 @@ importers: retext-assuming: specifier: ^1.0.0 version: 1.0.0 - retext-case-police: - specifier: ^1.1.7 - version: 1.1.7 retext-cliches: specifier: ^1.0.0 version: 1.0.0 @@ -155,7 +155,7 @@ importers: devDependencies: '@astrojs/starlight': specifier: ^0.30.3 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) '@vitest/coverage-v8': specifier: ^2.1.8 version: 2.1.8(vitest@2.1.8) @@ -173,7 +173,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -185,7 +185,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -197,7 +197,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -209,7 +209,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -221,7 +221,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -233,7 +233,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -245,7 +245,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -257,7 +257,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -269,7 +269,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -281,7 +281,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -293,7 +293,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -305,7 +305,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -317,7 +317,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -329,7 +329,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -341,7 +341,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -353,7 +353,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -365,7 +365,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -377,7 +377,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -389,7 +389,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -401,7 +401,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -413,7 +413,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -425,7 +425,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -437,7 +437,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -449,7 +449,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -461,7 +461,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -473,7 +473,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -485,7 +485,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -497,7 +497,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -509,7 +509,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -521,7 +521,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -533,7 +533,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -545,7 +545,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -557,7 +557,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -569,7 +569,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -581,7 +581,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -593,7 +593,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -605,7 +605,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -617,7 +617,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -629,7 +629,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -641,7 +641,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -653,7 +653,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -665,7 +665,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -677,7 +677,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -689,7 +689,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -701,7 +701,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -713,7 +713,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -725,7 +725,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -737,7 +737,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -749,7 +749,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -761,7 +761,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -773,7 +773,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -785,7 +785,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -797,7 +797,7 @@ importers: dependencies: '@astrojs/starlight': specifier: ^0.30.2 - version: 0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) astro: specifier: ^5.1.1 version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) @@ -833,10 +833,10 @@ packages: '@astrojs/sitemap@3.2.1': resolution: {integrity: sha512-uxMfO8f7pALq0ADL6Lk68UV6dNYjJ2xGUzyjjVj60JLBs5a6smtlkBYv3tQ0DzoqwS7c9n4FUx5lgv0yPo/fgA==} - '@astrojs/starlight@0.31.0': - resolution: {integrity: sha512-O70j7m42wp0EcX26Vsm8i37KSlcoHNFY6VLMbJKWKel6XRHS+IVG6AePcpBNS1I+FKkkcagTFJfy3X3n2dDo4Q==} + '@astrojs/starlight@0.30.6': + resolution: {integrity: sha512-/AoLXjPPD1MqixkTd2Lp3qahSzfCejePWHZQ3+fDjj1CuXI7Gjrr5bR3zNV0b9tynloPAIBM0HOyBNEGAo9uAQ==} peerDependencies: - astro: ^5.1.5 + astro: ^5.0.0 '@astrojs/telemetry@3.2.0': resolution: {integrity: sha512-wxhSKRfKugLwLlr4OFfcqovk+LIFtKwLyGPqMsv+9/ibqqnW3Gv7tBhtKEb0gAyUAC4G9BTVQeQahqnQAhd6IQ==} @@ -1222,17 +1222,17 @@ packages: cpu: [x64] os: [win32] - '@expressive-code/core@0.40.0': - resolution: {integrity: sha512-vKRxKaDVhSozGPETcPOB7NF8sn1ICZoO/UfUWs/4o+XmDIOSX7cBQX8BVukenvSksdv5Aaf/teuGzjxX0a7Ibw==} + '@expressive-code/core@0.38.3': + resolution: {integrity: sha512-s0/OtdRpBONwcn23O8nVwDNQqpBGKscysejkeBkwlIeHRLZWgiTVrusT5Idrdz1d8cW5wRk9iGsAIQmwDPXgJg==} - '@expressive-code/plugin-frames@0.40.0': - resolution: {integrity: sha512-lIbGPFy29Oaf0zV9BNLH6wRPqINz69KUz7PHCUqT3/Mptgp942CzNynbuaZeNPU10quNV072EsOMim569NmSyA==} + '@expressive-code/plugin-frames@0.38.3': + resolution: {integrity: sha512-qL2oC6FplmHNQfZ8ZkTR64/wKo9x0c8uP2WDftR/ydwN/yhe1ed7ZWYb8r3dezxsls+tDokCnN4zYR594jbpvg==} - '@expressive-code/plugin-shiki@0.40.0': - resolution: {integrity: sha512-1sb7S/FL1Oqr+MX4Up/LLTFmmlLfd2NyQA+I5TL1PKHHZKptCohmuyekvnPUmMLMnDlm0u2iuR2qxBpjElhf5g==} + '@expressive-code/plugin-shiki@0.38.3': + resolution: {integrity: sha512-kqHnglZeesqG3UKrb6e9Fq5W36AZ05Y9tCREmSN2lw8LVTqENIeCIkLDdWtQ5VoHlKqwUEQFTVlRehdwoY7Gmw==} - '@expressive-code/plugin-text-markers@0.40.0': - resolution: {integrity: sha512-NvorTEKWHfSE8yg9aUJn6Kb2zUah8VxvCg4HwnHq62AMW8Yu1WwtjLgqCiLIA17EcWlWKsq5dfs4q0K/hVe0mQ==} + '@expressive-code/plugin-text-markers@0.38.3': + resolution: {integrity: sha512-dPK3+BVGTbTmGQGU3Fkj3jZ3OltWUAlxetMHI6limUGCWBCucZiwoZeFM/WmqQa71GyKRzhBT+iEov6kkz2xVA==} '@img/sharp-darwin-arm64@0.33.5': resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} @@ -1567,6 +1567,10 @@ packages: '@shikijs/vscode-textmate@10.0.1': resolution: {integrity: sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==} + '@trueberryless-org/retext-case-police@0.1.1': + resolution: {integrity: sha512-6jLjWCOx0ywTCyJVJ1ML/30lSr8yLtwlLf438cyBdqRQ3EbFmwADqREURW0tUx9vmpw+n3fAi2bTPjuJ4t/tbQ==} + engines: {node: '>=17'} + '@trueberryless-org/retext-indefinite-article@0.1.0': resolution: {integrity: sha512-z8OpnRUeBQJ5tP+bk5/i3TZPVCWzWYHwEh0iMOGgLoMPd/o3Zb/6J6+hvAzgkGylmglsIOLoRAznD9r0TPVbSg==} @@ -1745,8 +1749,8 @@ packages: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true - astro-expressive-code@0.40.0: - resolution: {integrity: sha512-dsnUTXAOwiRLnIjqTcb4dhpsa7BDNImaXlkN0fFrJx2CumZe0tW+pgwTWqxv3haejo9KKih2j6UTMVRq1cTpig==} + astro-expressive-code@0.38.3: + resolution: {integrity: sha512-Tvdc7RV0G92BbtyEOsfJtXU35w41CkM94fOAzxbQP67Wj5jArfserJ321FO4XA7WG9QMV0GIBmQq77NBIRDzpQ==} peerDependencies: astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 @@ -2104,8 +2108,8 @@ packages: resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} engines: {node: '>=12.0.0'} - expressive-code@0.40.0: - resolution: {integrity: sha512-yBauWlZ6/G4S7WMfQdENbxpwr0qKHabu5w/uFLoTb3xvg2eo4ttk0aAy0IJTm/0+v12YaCG+Gt5Va0AEnTEXng==} + expressive-code@0.38.3: + resolution: {integrity: sha512-COM04AiUotHCKJgWdn7NtW2lqu8OW8owAidMpkXt1qxrZ9Q2iC7+tok/1qIn2ocGnczvr9paIySgGnEwFeEQ8Q==} extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} @@ -2962,8 +2966,8 @@ packages: regex@5.1.1: resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} - rehype-expressive-code@0.40.0: - resolution: {integrity: sha512-nxZYcFYD3ceqX0VkFIWwJ6gcWasJ+af50MoLqXOg08stgYhgvyWkjqaVCVBpZoBmAQDu9Jkl3xzqUcse8DUfaA==} + rehype-expressive-code@0.38.3: + resolution: {integrity: sha512-RYSSDkMBikoTbycZPkcWp6ELneANT4eTpND1DSRJ6nI2eVFUwTBDCvE2vO6jOOTaavwnPiydi4i/87NRyjpdOA==} rehype-format@5.0.1: resolution: {integrity: sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ==} @@ -3012,10 +3016,6 @@ packages: retext-assuming@1.0.0: resolution: {integrity: sha512-DuUVEYtWtplVwzlY8kJao87ZIuzgGBKuq1bSA8lss2aKzEQJSRGDUkmGVgnTnJiCYFFGRbskfaq0bSkpLQlwuQ==} - retext-case-police@1.1.7: - resolution: {integrity: sha512-eEmcwvKf1fb/SvPPtLB5SnANy8cnL0qyBFYZdb6H73t1qSVPoXZ5DulWWoKTBdzkmLLziDclznxyLVB9PwrSxQ==} - engines: {node: '>=17'} - retext-cliches@1.0.0: resolution: {integrity: sha512-iriUk/RSovD4rL+X1O67dSC+cP79Ks58p6Gus3ygry7wQXVEVOZGGX37yIkBWJgg8wh76mNsgk13DoLjlVzrNw==} @@ -3699,7 +3699,7 @@ snapshots: stream-replace-string: 2.0.0 zod: 3.24.1 - '@astrojs/starlight@0.31.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2))': + '@astrojs/starlight@0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2))': dependencies: '@astrojs/mdx': 4.0.5(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) '@astrojs/sitemap': 3.2.1 @@ -3708,7 +3708,7 @@ snapshots: '@types/js-yaml': 4.0.9 '@types/mdast': 4.0.4 astro: 5.1.6(rollup@4.29.2)(typescript@5.7.2) - astro-expressive-code: 0.40.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + astro-expressive-code: 0.38.3(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) bcp-47: 2.1.0 hast-util-from-html: 2.0.3 hast-util-select: 6.0.3 @@ -4068,7 +4068,7 @@ snapshots: '@esbuild/win32-x64@0.24.2': optional: true - '@expressive-code/core@0.40.0': + '@expressive-code/core@0.38.3': dependencies: '@ctrl/tinycolor': 4.1.0 hast-util-select: 6.0.3 @@ -4080,18 +4080,18 @@ snapshots: unist-util-visit: 5.0.0 unist-util-visit-parents: 6.0.1 - '@expressive-code/plugin-frames@0.40.0': + '@expressive-code/plugin-frames@0.38.3': dependencies: - '@expressive-code/core': 0.40.0 + '@expressive-code/core': 0.38.3 - '@expressive-code/plugin-shiki@0.40.0': + '@expressive-code/plugin-shiki@0.38.3': dependencies: - '@expressive-code/core': 0.40.0 + '@expressive-code/core': 0.38.3 shiki: 1.26.2 - '@expressive-code/plugin-text-markers@0.40.0': + '@expressive-code/plugin-text-markers@0.38.3': dependencies: - '@expressive-code/core': 0.40.0 + '@expressive-code/core': 0.38.3 '@img/sharp-darwin-arm64@0.33.5': optionalDependencies: @@ -4411,6 +4411,12 @@ snapshots: '@shikijs/vscode-textmate@10.0.1': {} + '@trueberryless-org/retext-case-police@0.1.1': + dependencies: + case-police: 0.5.14 + nlcst-search: 3.1.1 + nlcst-to-string: 3.1.1 + '@trueberryless-org/retext-indefinite-article@0.1.0': dependencies: '@types/nlcst': 2.0.3 @@ -4599,10 +4605,10 @@ snapshots: astring@1.9.0: {} - astro-expressive-code@0.40.0(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)): + astro-expressive-code@0.38.3(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)): dependencies: astro: 5.1.6(rollup@4.29.2)(typescript@5.7.2) - rehype-expressive-code: 0.40.0 + rehype-expressive-code: 0.38.3 astro@5.1.6(rollup@4.29.2)(typescript@5.7.2): dependencies: @@ -5042,12 +5048,12 @@ snapshots: expect-type@1.1.0: {} - expressive-code@0.40.0: + expressive-code@0.38.3: dependencies: - '@expressive-code/core': 0.40.0 - '@expressive-code/plugin-frames': 0.40.0 - '@expressive-code/plugin-shiki': 0.40.0 - '@expressive-code/plugin-text-markers': 0.40.0 + '@expressive-code/core': 0.38.3 + '@expressive-code/plugin-frames': 0.38.3 + '@expressive-code/plugin-shiki': 0.38.3 + '@expressive-code/plugin-text-markers': 0.38.3 extend-shallow@2.0.1: dependencies: @@ -6324,9 +6330,9 @@ snapshots: dependencies: regex-utilities: 2.3.0 - rehype-expressive-code@0.40.0: + rehype-expressive-code@0.38.3: dependencies: - expressive-code: 0.40.0 + expressive-code: 0.38.3 rehype-format@5.0.1: dependencies: @@ -6433,12 +6439,6 @@ snapshots: quotation: 1.1.3 unist-util-find-before: 2.0.5 - retext-case-police@1.1.7: - dependencies: - case-police: 0.5.14 - nlcst-search: 3.1.1 - nlcst-to-string: 3.1.1 - retext-cliches@1.0.0: dependencies: array-differ: 1.0.0 From 63f2050341471f0511f8745ae5b55c483a6fe15b Mon Sep 17 00:00:00 2001 From: trueberryless Date: Tue, 14 Jan 2025 14:18:16 +0100 Subject: [PATCH 20/30] smartypants false; adjust contraction tests --- packages/starlight-spell-checker/index.ts | 1 + .../libs/validation.ts | 2 ++ ...ons.throwError.ignoreLiteralsFalse.test.ts | 2 +- ...ntractions.throwError.modeStraight.test.ts | 12 +++------ .../tests/contractions.throwError.test.ts | 2 +- .../src/content/docs/index.md | 2 +- .../src/content/docs/index.md | 2 +- .../src/content/docs/index.md | 2 +- .../astro.config.ts | 25 +++++++++++++++++++ .../package.json | 10 ++++++++ .../src/content.config.ts | 7 ++++++ .../src/content/docs/index.md | 21 ++++++++++++++++ .../astro.config.ts | 23 +++++++++++++++++ .../package.json | 10 ++++++++ .../src/content.config.ts | 7 ++++++ .../src/content/docs/index.md | 5 ++++ .../tests/quotes.throwError.test.ts | 25 +++++++++++++++++++ pnpm-lock.yaml | 24 ++++++++++++++++++ 18 files changed, 168 insertions(+), 14 deletions(-) create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-invalid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-invalid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-invalid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-invalid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-valid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-valid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-valid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-valid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/quotes.throwError.test.ts diff --git a/packages/starlight-spell-checker/index.ts b/packages/starlight-spell-checker/index.ts index 408b860..5a5a56b 100644 --- a/packages/starlight-spell-checker/index.ts +++ b/packages/starlight-spell-checker/index.ts @@ -48,6 +48,7 @@ export default function starlightSpellChecker( }, ], ], + smartypants: false, }, }); }, diff --git a/packages/starlight-spell-checker/libs/validation.ts b/packages/starlight-spell-checker/libs/validation.ts index 35e2d8b..3459b58 100644 --- a/packages/starlight-spell-checker/libs/validation.ts +++ b/packages/starlight-spell-checker/libs/validation.ts @@ -153,6 +153,8 @@ export async function validateTexts(options: StarlightSpellCheckerConfig) { continue; } + console.log(content); + try { const file = await retextProcessor.process(content); diff --git a/packages/starlight-spell-checker/tests/contractions.throwError.ignoreLiteralsFalse.test.ts b/packages/starlight-spell-checker/tests/contractions.throwError.ignoreLiteralsFalse.test.ts index 215040f..74db7e1 100644 --- a/packages/starlight-spell-checker/tests/contractions.throwError.ignoreLiteralsFalse.test.ts +++ b/packages/starlight-spell-checker/tests/contractions.throwError.ignoreLiteralsFalse.test.ts @@ -22,6 +22,6 @@ test('does not build with contractions throw error invalid English content', asy ['does’nt', ValidationErrorType.Contractions, "missing-smart-apostrophe", ["doesn’t"]], ['yall', ValidationErrorType.Contractions, "missing-smart-apostrophe", ["y’all"]], ['isnt', ValidationErrorType.Contractions, "missing-smart-apostrophe", ["isn’t"]], - ['oc’lock', ValidationErrorType.Contractions, "missing-smart-apostrophe", ["o’clock"]], + ['oc\'lock', ValidationErrorType.Contractions, "missing-smart-apostrophe", ["o’clock"]], ]) }) diff --git a/packages/starlight-spell-checker/tests/contractions.throwError.modeStraight.test.ts b/packages/starlight-spell-checker/tests/contractions.throwError.modeStraight.test.ts index f817076..d74bef1 100644 --- a/packages/starlight-spell-checker/tests/contractions.throwError.modeStraight.test.ts +++ b/packages/starlight-spell-checker/tests/contractions.throwError.modeStraight.test.ts @@ -7,14 +7,8 @@ import { buildFixture, expectValidationErrorCount, expectValidationErrors, expec test('builds with contractions throw error valid English content', async () => { const { output, status } = await buildFixture('contractions-throw-error-mode-straight-valid-content') - expect(status).toBe('error') - - expectValidationErrorCount(output, 2, 1) - - expectValidationErrors(output, '/', [ - ['isn’t', ValidationErrorType.Contractions, "missing-straight-apostrophe", ["isn't"]], - ['o’clock', ValidationErrorType.Contractions, "missing-straight-apostrophe", ["o'clock"]], - ]) + expect(status).toBe('success') + expectValidationSuccess(output) }) test('does not build with contractions throw error invalid English content', async () => { @@ -26,6 +20,6 @@ test('does not build with contractions throw error invalid English content', asy expectValidationErrors(output, '/', [ ['isnt', ValidationErrorType.Contractions, "missing-straight-apostrophe", ["isn't"]], - ['oc’lock', ValidationErrorType.Contractions, "missing-straight-apostrophe", ["o'clock"]], + ['oc\'lock', ValidationErrorType.Contractions, "missing-straight-apostrophe", ["o'clock"]], ]) }) diff --git a/packages/starlight-spell-checker/tests/contractions.throwError.test.ts b/packages/starlight-spell-checker/tests/contractions.throwError.test.ts index 8db49a6..fa96355 100644 --- a/packages/starlight-spell-checker/tests/contractions.throwError.test.ts +++ b/packages/starlight-spell-checker/tests/contractions.throwError.test.ts @@ -20,6 +20,6 @@ test('does not build with contractions throw error invalid English content', asy expectValidationErrors(output, '/', [ ['isnt', ValidationErrorType.Contractions, "missing-smart-apostrophe", ["isn’t"]], - ['oc’lock', ValidationErrorType.Contractions, "missing-smart-apostrophe", ["o’clock"]], + ['oc\'lock', ValidationErrorType.Contractions, "missing-smart-apostrophe", ["o’clock"]], ]) }) diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-valid-content/src/content/docs/index.md index 74fd541..e83c302 100644 --- a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-valid-content/src/content/docs/index.md +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-ignore-literals-false-valid-content/src/content/docs/index.md @@ -2,4 +2,4 @@ title: Index --- -Well, it «doesn’t» have to be so bad — y'all —, it isn’t nine o'clock. +Well, it «doesn’t» have to be so bad — y’all —, it isn’t nine o’clock. diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/src/content/docs/index.md index 74fd541..75e5229 100644 --- a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/src/content/docs/index.md +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-mode-straight-valid-content/src/content/docs/index.md @@ -2,4 +2,4 @@ title: Index --- -Well, it «doesn’t» have to be so bad — y'all —, it isn’t nine o'clock. +Well, it «doesn’t» have to be so bad — y'all —, it isn't nine o'clock. diff --git a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/src/content/docs/index.md index 74fd541..ec43097 100644 --- a/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/src/content/docs/index.md +++ b/packages/starlight-spell-checker/tests/fixtures/contractions-throw-error-valid-content/src/content/docs/index.md @@ -2,4 +2,4 @@ title: Index --- -Well, it «doesn’t» have to be so bad — y'all —, it isn’t nine o'clock. +Well, it «doesn’t» have to be so bad — y'all —, it isn’t nine o’clock. diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-invalid-content/astro.config.ts new file mode 100644 index 0000000..20c7390 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-invalid-content/astro.config.ts @@ -0,0 +1,25 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + quotes: { + enabled: true, + throwError: true, + mode: "straight", + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - quotes throw error invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-invalid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-invalid-content/package.json new file mode 100644 index 0000000..fda3114 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-invalid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/quotes-throw-error-invalid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-invalid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-invalid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-invalid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-invalid-content/src/content/docs/index.md new file mode 100644 index 0000000..e5953f9 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-invalid-content/src/content/docs/index.md @@ -0,0 +1,21 @@ +--- +title: Index +--- + +A sentence "with quotes, 'nested' quotes, and '80s apostrophes." +A sentence 'with quotes, "nested" quotes, and "80s apostrophes.' + +A sentence “with quotes, ‘nested’ quotes, and ’80s apostrophes.” +A sentence ”with quotes, ’nested‘ quotes, and ‘80s apostrophes.“ + +A sentence «with quotes, ‹nested› quotes, and ›80s apostrophes.» +A sentence »with quotes, ›nested‹ quotes, and ‹80s apostrophes.« + +A sentence "with 'nested "quotes"'". +A sentence 'with "nested 'quotes'"'. + +A sentence “with ‘nested “quotes”’”. +A sentence ‘with “nested ‘quotes’”’. + +A sentence «with ‹nested «quotes»›». +A sentence ‹with «nested ‹quotes›»›. diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-valid-content/astro.config.ts new file mode 100644 index 0000000..c4663f7 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-valid-content/astro.config.ts @@ -0,0 +1,23 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + quotes: { + enabled: true, + throwError: true, + }, + spell: { + enabled: false, + }, + }), + ], + title: "Starlight Spell Checker Tests - quotes throw error valid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-valid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-valid-content/package.json new file mode 100644 index 0000000..a26942b --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-valid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/quotes-throw-error-valid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-valid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-valid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-valid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-valid-content/src/content/docs/index.md new file mode 100644 index 0000000..b6f17fd --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-valid-content/src/content/docs/index.md @@ -0,0 +1,5 @@ +--- +title: Index +--- + +They withheld him while they fed us. diff --git a/packages/starlight-spell-checker/tests/quotes.throwError.test.ts b/packages/starlight-spell-checker/tests/quotes.throwError.test.ts new file mode 100644 index 0000000..ad9e2c8 --- /dev/null +++ b/packages/starlight-spell-checker/tests/quotes.throwError.test.ts @@ -0,0 +1,25 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' + +test('builds with quotes throw error valid English content', async () => { + const { output, status } = await buildFixture('quotes-throw-error-valid-content') + + expect(status).toBe('success') + expectValidationSuccess(output) +}) + +test('does not build with quotes throw error invalid English content', async () => { + const { output, status } = await buildFixture('quotes-throw-error-invalid-content') + + expect(status).toBe('error') + + expectValidationErrorCount(output, 2, 1) + + expectValidationErrors(output, '/', [ + ['withheld', ValidationErrorType.Quotes, "withheld", []], + ['fed', ValidationErrorType.Quotes, "fed", []], + ]) +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8f41c8d..d2248da 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -541,6 +541,30 @@ importers: specifier: workspace:* version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-invalid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-valid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/redundant-acronyms-throw-error-invalid-content: dependencies: '@astrojs/starlight': From a2f66091f03bbaccc6d72642b92bfbbedbeb2e8c Mon Sep 17 00:00:00 2001 From: trueberryless Date: Tue, 14 Jan 2025 15:13:48 +0100 Subject: [PATCH 21/30] some quotes tests --- .../libs/validation.ts | 4 +- .../astro.config.ts | 1 - .../src/content/docs/index.md | 16 ++-- .../astro.config.ts | 25 ++++++ .../package.json | 10 +++ .../src/content.config.ts | 7 ++ .../src/content/docs/index.md | 23 ++++++ .../astro.config.ts | 25 ++++++ .../package.json | 10 +++ .../src/content.config.ts | 7 ++ .../src/content/docs/index.md | 23 ++++++ .../astro.config.ts | 25 ++++++ .../package.json | 10 +++ .../src/content.config.ts | 7 ++ .../src/content/docs/index.md | 23 ++++++ .../astro.config.ts | 25 ++++++ .../package.json | 10 +++ .../src/content.config.ts | 7 ++ .../src/content/docs/index.md | 23 ++++++ .../astro.config.ts | 25 ++++++ .../package.json | 10 +++ .../src/content.config.ts | 7 ++ .../src/content/docs/index.md | 23 ++++++ .../astro.config.ts | 25 ++++++ .../package.json | 10 +++ .../src/content.config.ts | 7 ++ .../src/content/docs/index.md | 23 ++++++ .../src/content/docs/index.md | 20 ++++- .../quotes.throwError.modeStraight.test.ts | 61 +++++++++++++++ .../quotes.throwError.smartConfig.test.ts | 58 ++++++++++++++ .../quotes.throwError.straightConfig.test.ts | 58 ++++++++++++++ .../tests/quotes.throwError.test.ts | 39 +++++++++- pnpm-lock.yaml | 76 ++++++++++++++++++- 33 files changed, 706 insertions(+), 17 deletions(-) create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-invalid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-invalid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-invalid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-invalid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-valid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-valid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-valid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-valid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-invalid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-invalid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-invalid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-invalid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-valid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-valid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-valid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-valid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-invalid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-invalid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-invalid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-invalid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-valid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-valid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-valid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-valid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/quotes.throwError.modeStraight.test.ts create mode 100644 packages/starlight-spell-checker/tests/quotes.throwError.smartConfig.test.ts create mode 100644 packages/starlight-spell-checker/tests/quotes.throwError.straightConfig.test.ts diff --git a/packages/starlight-spell-checker/libs/validation.ts b/packages/starlight-spell-checker/libs/validation.ts index 3459b58..d164e75 100644 --- a/packages/starlight-spell-checker/libs/validation.ts +++ b/packages/starlight-spell-checker/libs/validation.ts @@ -153,8 +153,6 @@ export async function validateTexts(options: StarlightSpellCheckerConfig) { continue; } - console.log(content); - try { const file = await retextProcessor.process(content); @@ -162,7 +160,7 @@ export async function validateTexts(options: StarlightSpellCheckerConfig) { let fileWarnings: ValidationError[] = []; for (const error of file.messages.values()) { - console.log(error); + // console.log(error); const throwError = getThrowErrorForType( validationErrorTypeMapper[error.source ?? "other"], options diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-invalid-content/astro.config.ts index 20c7390..873d6c5 100644 --- a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-invalid-content/astro.config.ts +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-invalid-content/astro.config.ts @@ -11,7 +11,6 @@ export default defineConfig({ quotes: { enabled: true, throwError: true, - mode: "straight", }, spell: { enabled: false, diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-invalid-content/src/content/docs/index.md index e5953f9..54cd1ae 100644 --- a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-invalid-content/src/content/docs/index.md +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-invalid-content/src/content/docs/index.md @@ -2,20 +2,22 @@ title: Index --- -A sentence "with quotes, 'nested' quotes, and '80s apostrophes." +A sentence "with quotes, 'nested' quotes, and '80s apostrophes." A sentence 'with quotes, "nested" quotes, and "80s apostrophes.' -A sentence “with quotes, ‘nested’ quotes, and ’80s apostrophes.” +A sentence “with quotes, ‘nested’ quotes, and ’80s apostrophes.” +A sentence ‘with quotes, “nested” quotes, and ”80s apostrophes.’ A sentence ”with quotes, ’nested‘ quotes, and ‘80s apostrophes.“ -A sentence «with quotes, ‹nested› quotes, and ›80s apostrophes.» -A sentence »with quotes, ›nested‹ quotes, and ‹80s apostrophes.« +A sentence «with quotes, ‹nested› quotes, and ’80s apostrophes.» +A sentence ‹with quotes, «nested» quotes, and ’80s apostrophes.› +A sentence »with quotes, ›nested‹ quotes, and ’80s apostrophes.« -A sentence "with 'nested "quotes"'". +A sentence "with 'nested "quotes"'". A sentence 'with "nested 'quotes'"'. -A sentence “with ‘nested “quotes”’”. +A sentence “with ‘nested “quotes”’”. A sentence ‘with “nested ‘quotes’”’. -A sentence «with ‹nested «quotes»›». +A sentence «with ‹nested «quotes»›». A sentence ‹with «nested ‹quotes›»›. diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-invalid-content/astro.config.ts new file mode 100644 index 0000000..0854dba --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-invalid-content/astro.config.ts @@ -0,0 +1,25 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + quotes: { + enabled: true, + throwError: true, + mode: "straight", + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - quotes throw error mode straight invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-invalid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-invalid-content/package.json new file mode 100644 index 0000000..aeaa7e2 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-invalid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/quotes-throw-error-mode-straight-invalid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-invalid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-invalid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-invalid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-invalid-content/src/content/docs/index.md new file mode 100644 index 0000000..8b36815 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-invalid-content/src/content/docs/index.md @@ -0,0 +1,23 @@ +--- +title: Index +--- + +A sentence "with quotes, 'nested' quotes, and '80s apostrophes." +A sentence 'with quotes, "nested" quotes, and "80s apostrophes.' + +A sentence “with quotes, ‘nested’ quotes, and ’80s apostrophes.” +A sentence ‘with quotes, “nested” quotes, and ”80s apostrophes.’ +A sentence ”with quotes, ’nested‘ quotes, and ‘80s apostrophes.“ + +A sentence «with quotes, ‹nested› quotes, and '80s apostrophes.» +A sentence ‹with quotes, «nested» quotes, and '80s apostrophes.› +A sentence »with quotes, ›nested‹ quotes, and '80s apostrophes.« + +A sentence "with 'nested "quotes"'". +A sentence 'with "nested 'quotes'"'. + +A sentence “with ‘nested “quotes”’”. +A sentence ‘with “nested ‘quotes’”’. + +A sentence «with ‹nested «quotes»›». +A sentence ‹with «nested ‹quotes›»›. diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-valid-content/astro.config.ts new file mode 100644 index 0000000..0854dba --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-valid-content/astro.config.ts @@ -0,0 +1,25 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + quotes: { + enabled: true, + throwError: true, + mode: "straight", + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - quotes throw error mode straight invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-valid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-valid-content/package.json new file mode 100644 index 0000000..9e3f9ed --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-valid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/quotes-throw-error-mode-straight-valid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-valid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-valid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-valid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-valid-content/src/content/docs/index.md new file mode 100644 index 0000000..96f979e --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-valid-content/src/content/docs/index.md @@ -0,0 +1,23 @@ +--- +title: Index +--- + +A sentence "with quotes, 'nested' quotes, and '80s apostrophes." +A sentence "with quotes, 'nested' quotes, and '80s apostrophes." + +A sentence "with quotes, 'nested' quotes, and '80s apostrophes." +A sentence "with quotes, 'nested' quotes, and '80s apostrophes." +A sentence "with quotes, 'nested' quotes, and '80s apostrophes." + +A sentence «with quotes, ‹nested› quotes, and '80s apostrophes.» +A sentence ‹with quotes, «nested» quotes, and '80s apostrophes.› +A sentence »with quotes, ›nested‹ quotes, and '80s apostrophes.« + +A sentence "with 'nested "quotes"'". +A sentence "with 'nested "quotes"'". + +A sentence "with 'nested "quotes"'". +A sentence "with 'nested "quotes"'". + +A sentence «with ‹nested «quotes»›». +A sentence ‹with «nested ‹quotes›»›. diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-invalid-content/astro.config.ts new file mode 100644 index 0000000..8047a0f --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-invalid-content/astro.config.ts @@ -0,0 +1,25 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + quotes: { + enabled: true, + throwError: true, + smart: ["«»", "‹›"], + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - quotes throw error smart config invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-invalid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-invalid-content/package.json new file mode 100644 index 0000000..cfaad27 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-invalid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/quotes-throw-error-smart-config-invalid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-invalid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-invalid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-invalid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-invalid-content/src/content/docs/index.md new file mode 100644 index 0000000..54cd1ae --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-invalid-content/src/content/docs/index.md @@ -0,0 +1,23 @@ +--- +title: Index +--- + +A sentence "with quotes, 'nested' quotes, and '80s apostrophes." +A sentence 'with quotes, "nested" quotes, and "80s apostrophes.' + +A sentence “with quotes, ‘nested’ quotes, and ’80s apostrophes.” +A sentence ‘with quotes, “nested” quotes, and ”80s apostrophes.’ +A sentence ”with quotes, ’nested‘ quotes, and ‘80s apostrophes.“ + +A sentence «with quotes, ‹nested› quotes, and ’80s apostrophes.» +A sentence ‹with quotes, «nested» quotes, and ’80s apostrophes.› +A sentence »with quotes, ›nested‹ quotes, and ’80s apostrophes.« + +A sentence "with 'nested "quotes"'". +A sentence 'with "nested 'quotes'"'. + +A sentence “with ‘nested “quotes”’”. +A sentence ‘with “nested ‘quotes’”’. + +A sentence «with ‹nested «quotes»›». +A sentence ‹with «nested ‹quotes›»›. diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-valid-content/astro.config.ts new file mode 100644 index 0000000..8047a0f --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-valid-content/astro.config.ts @@ -0,0 +1,25 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + quotes: { + enabled: true, + throwError: true, + smart: ["«»", "‹›"], + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - quotes throw error smart config invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-valid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-valid-content/package.json new file mode 100644 index 0000000..0ffbe80 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-valid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/quotes-throw-error-smart-config-valid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-valid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-valid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-valid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-valid-content/src/content/docs/index.md new file mode 100644 index 0000000..b7c3495 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-valid-content/src/content/docs/index.md @@ -0,0 +1,23 @@ +--- +title: Index +--- + +A sentence «with quotes, ‹nested› quotes, and ’80s apostrophes.» +A sentence «with quotes, ‹nested› quotes, and ’80s apostrophes.» + +A sentence «with quotes, ‹nested› quotes, and ’80s apostrophes.» +A sentence «with quotes, ‹nested› quotes, and ’80s apostrophes.» +A sentence «with quotes, ‹nested› quotes, and ’80s apostrophes.» + +A sentence «with quotes, ‹nested› quotes, and ’80s apostrophes.» +A sentence ‹with quotes, «nested» quotes, and ’80s apostrophes.› +A sentence «with quotes, ‹nested› quotes, and ’80s apostrophes.» + +A sentence «with ‹nested «quotes»›». +A sentence «with ‹nested «quotes»›». + +A sentence «with ‹nested «quotes»›». +A sentence «with ‹nested «quotes»›». + +A sentence «with ‹nested «quotes»›». +A sentence «with ‹nested «quotes»›». diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-invalid-content/astro.config.ts new file mode 100644 index 0000000..0a5e5ad --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-invalid-content/astro.config.ts @@ -0,0 +1,25 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + quotes: { + enabled: true, + throwError: true, + straight: ["'", '"'], + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - quotes throw error straight config invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-invalid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-invalid-content/package.json new file mode 100644 index 0000000..323a010 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-invalid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/quotes-throw-error-straight-config-invalid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-invalid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-invalid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-invalid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-invalid-content/src/content/docs/index.md new file mode 100644 index 0000000..54cd1ae --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-invalid-content/src/content/docs/index.md @@ -0,0 +1,23 @@ +--- +title: Index +--- + +A sentence "with quotes, 'nested' quotes, and '80s apostrophes." +A sentence 'with quotes, "nested" quotes, and "80s apostrophes.' + +A sentence “with quotes, ‘nested’ quotes, and ’80s apostrophes.” +A sentence ‘with quotes, “nested” quotes, and ”80s apostrophes.’ +A sentence ”with quotes, ’nested‘ quotes, and ‘80s apostrophes.“ + +A sentence «with quotes, ‹nested› quotes, and ’80s apostrophes.» +A sentence ‹with quotes, «nested» quotes, and ’80s apostrophes.› +A sentence »with quotes, ›nested‹ quotes, and ’80s apostrophes.« + +A sentence "with 'nested "quotes"'". +A sentence 'with "nested 'quotes'"'. + +A sentence “with ‘nested “quotes”’”. +A sentence ‘with “nested ‘quotes’”’. + +A sentence «with ‹nested «quotes»›». +A sentence ‹with «nested ‹quotes›»›. diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-valid-content/astro.config.ts new file mode 100644 index 0000000..0a5e5ad --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-valid-content/astro.config.ts @@ -0,0 +1,25 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + quotes: { + enabled: true, + throwError: true, + straight: ["'", '"'], + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - quotes throw error straight config invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-valid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-valid-content/package.json new file mode 100644 index 0000000..323a010 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-valid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/quotes-throw-error-straight-config-invalid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-valid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-valid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-valid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-valid-content/src/content/docs/index.md new file mode 100644 index 0000000..ecdd243 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-valid-content/src/content/docs/index.md @@ -0,0 +1,23 @@ +--- +title: Index +--- + +A sentence “with quotes, ‘nested’ quotes, and ’80s apostrophes.” +A sentence “with quotes, ‘nested’ quotes, and ’80s apostrophes.” + +A sentence “with quotes, ‘nested’ quotes, and ’80s apostrophes.” +A sentence “with quotes, ‘nested’ quotes, and ’80s apostrophes.” +A sentence “with quotes, ‘nested’ quotes, and ’80s apostrophes.” + +A sentence «with quotes, ‹nested› quotes, and ’80s apostrophes.» +A sentence ‹with quotes, «nested» quotes, and ’80s apostrophes.› +A sentence »with quotes, ›nested‹ quotes, and ’80s apostrophes.« + +A sentence “with ‘nested “quotes”’”. +A sentence “with ‘nested “quotes”’”. + +A sentence “with ‘nested “quotes”’”. +A sentence “with ‘nested “quotes”’”. + +A sentence «with ‹nested «quotes»›». +A sentence ‹with «nested ‹quotes›»›. diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-valid-content/src/content/docs/index.md index b6f17fd..ecdd243 100644 --- a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-valid-content/src/content/docs/index.md +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-valid-content/src/content/docs/index.md @@ -2,4 +2,22 @@ title: Index --- -They withheld him while they fed us. +A sentence “with quotes, ‘nested’ quotes, and ’80s apostrophes.” +A sentence “with quotes, ‘nested’ quotes, and ’80s apostrophes.” + +A sentence “with quotes, ‘nested’ quotes, and ’80s apostrophes.” +A sentence “with quotes, ‘nested’ quotes, and ’80s apostrophes.” +A sentence “with quotes, ‘nested’ quotes, and ’80s apostrophes.” + +A sentence «with quotes, ‹nested› quotes, and ’80s apostrophes.» +A sentence ‹with quotes, «nested» quotes, and ’80s apostrophes.› +A sentence »with quotes, ›nested‹ quotes, and ’80s apostrophes.« + +A sentence “with ‘nested “quotes”’”. +A sentence “with ‘nested “quotes”’”. + +A sentence “with ‘nested “quotes”’”. +A sentence “with ‘nested “quotes”’”. + +A sentence «with ‹nested «quotes»›». +A sentence ‹with «nested ‹quotes›»›. diff --git a/packages/starlight-spell-checker/tests/quotes.throwError.modeStraight.test.ts b/packages/starlight-spell-checker/tests/quotes.throwError.modeStraight.test.ts new file mode 100644 index 0000000..afac0fb --- /dev/null +++ b/packages/starlight-spell-checker/tests/quotes.throwError.modeStraight.test.ts @@ -0,0 +1,61 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' + +test('builds with quotes throw error mode straight valid English content', async () => { + const { output, status } = await buildFixture('quotes-throw-error-mode-straight-valid-content') + + expect(status).toBe('success') + expectValidationSuccess(output) +}) + +test('does not build with quotes throw error mode straight invalid English content', async () => { + const { output, status } = await buildFixture('quotes-throw-error-mode-straight-invalid-content') + + expect(status).toBe('error') + + expectValidationErrorCount(output, 38, 1) + + expectValidationErrors(output, '/', [ + ['\'', ValidationErrorType.Quotes, 'quote', ['"']], + ['"', ValidationErrorType.Quotes, 'quote', ['\'']], + ['"', ValidationErrorType.Quotes, 'quote', ['\'']], + ['"', ValidationErrorType.Quotes, 'quote', ['\'']], + ['\'', ValidationErrorType.Quotes, 'quote', ['"']], + ['“', ValidationErrorType.Quotes, 'quote', ['"']], + ['‘', ValidationErrorType.Quotes, 'quote', ['\'']], + ['’', ValidationErrorType.Quotes, 'quote', ['\'']], + ['’', ValidationErrorType.Quotes, 'apostrophe', ['\'']], + ['”', ValidationErrorType.Quotes, 'quote', ['"']], + ['‘', ValidationErrorType.Quotes, 'quote', ['"']], + ['“', ValidationErrorType.Quotes, 'quote', ['\'']], + ['”', ValidationErrorType.Quotes, 'quote', ['\'']], + ['”', ValidationErrorType.Quotes, 'quote', ['"']], + ['’', ValidationErrorType.Quotes, 'apostrophe', ['\'']], + ['”', ValidationErrorType.Quotes, 'quote', ['\'']], + ['’', ValidationErrorType.Quotes, 'quote', ['"']], + ['‘', ValidationErrorType.Quotes, 'quote', ['\'']], + ['‘', ValidationErrorType.Quotes, 'quote', ['"']], + ['“', ValidationErrorType.Quotes, 'quote', ['\'']], + ['\'', ValidationErrorType.Quotes, 'quote', ['"']], + ['"', ValidationErrorType.Quotes, 'quote', ['\'']], + ['\'', ValidationErrorType.Quotes, 'quote', ['"']], + ['\'', ValidationErrorType.Quotes, 'quote', ['"']], + ['"', ValidationErrorType.Quotes, 'quote', ['\'']], + ['\'', ValidationErrorType.Quotes, 'quote', ['"']], + ['“', ValidationErrorType.Quotes, 'quote', ['"']], + ['‘', ValidationErrorType.Quotes, 'quote', ['\'']], + ['“', ValidationErrorType.Quotes, 'quote', ['"']], + ['”', ValidationErrorType.Quotes, 'quote', ['"']], + ['’', ValidationErrorType.Quotes, 'quote', ['\'']], + ['”', ValidationErrorType.Quotes, 'quote', ['"']], + ['‘', ValidationErrorType.Quotes, 'quote', ['"']], + ['“', ValidationErrorType.Quotes, 'quote', ['\'']], + ['‘', ValidationErrorType.Quotes, 'quote', ['"']], + ['’', ValidationErrorType.Quotes, 'quote', ['"']], + ['”', ValidationErrorType.Quotes, 'quote', ['\'']], + ['’', ValidationErrorType.Quotes, 'quote', ['"']], + ]); +}) diff --git a/packages/starlight-spell-checker/tests/quotes.throwError.smartConfig.test.ts b/packages/starlight-spell-checker/tests/quotes.throwError.smartConfig.test.ts new file mode 100644 index 0000000..e97d040 --- /dev/null +++ b/packages/starlight-spell-checker/tests/quotes.throwError.smartConfig.test.ts @@ -0,0 +1,58 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' + +test('builds with quotes throw error smart config valid English content', async () => { + const { output, status } = await buildFixture('quotes-throw-error-smart-config-valid-content') + + expect(status).toBe('success') + expectValidationSuccess(output) +}) + +test('does not build with quotes throw error smart config invalid English content', async () => { + const { output, status } = await buildFixture('quotes-throw-error-smart-config-invalid-content') + + expect(status).toBe('error') + + expectValidationErrorCount(output, 35, 1) + + expectValidationErrors(output, '/', [ + ['"', ValidationErrorType.Quotes, 'quote', ['«']], + ['\'', ValidationErrorType.Quotes, 'quote', ['‹']], + ['\'', ValidationErrorType.Quotes, 'quote', ['›']], + ['\'', ValidationErrorType.Quotes, 'apostrophe', ['’']], + ['"', ValidationErrorType.Quotes, 'quote', ['»']], + ['\'', ValidationErrorType.Quotes, 'quote', ['«']], + ['"', ValidationErrorType.Quotes, 'quote', ['‹']], + ['"', ValidationErrorType.Quotes, 'quote', ['›']], + ['"', ValidationErrorType.Quotes, 'quote', ['‹']], + ['\'', ValidationErrorType.Quotes, 'quote', ['«']], + ['‹', ValidationErrorType.Quotes, 'quote', ['«']], + ['«', ValidationErrorType.Quotes, 'quote', ['‹']], + ['»', ValidationErrorType.Quotes, 'quote', ['›']], + ['›', ValidationErrorType.Quotes, 'quote', ['»']], + ['»', ValidationErrorType.Quotes, 'quote', ['›']], + ['‹', ValidationErrorType.Quotes, 'quote', ['«']], + ['«', ValidationErrorType.Quotes, 'quote', ['‹']], + ['"', ValidationErrorType.Quotes, 'quote', ['«']], + ['\'', ValidationErrorType.Quotes, 'quote', ['‹']], + ['"', ValidationErrorType.Quotes, 'quote', ['«']], + ['"', ValidationErrorType.Quotes, 'quote', ['»']], + ['\'', ValidationErrorType.Quotes, 'quote', ['›']], + ['"', ValidationErrorType.Quotes, 'quote', ['»']], + ['\'', ValidationErrorType.Quotes, 'quote', ['«']], + ['"', ValidationErrorType.Quotes, 'quote', ['‹']], + ['\'', ValidationErrorType.Quotes, 'quote', ['«']], + ['\'', ValidationErrorType.Quotes, 'quote', ['»']], + ['"', ValidationErrorType.Quotes, 'quote', ['›']], + ['\'', ValidationErrorType.Quotes, 'quote', ['»']], + ['‹', ValidationErrorType.Quotes, 'quote', ['«']], + ['«', ValidationErrorType.Quotes, 'quote', ['‹']], + ['‹', ValidationErrorType.Quotes, 'quote', ['«']], + ['›', ValidationErrorType.Quotes, 'quote', ['»']], + ['»', ValidationErrorType.Quotes, 'quote', ['›']], + ['›', ValidationErrorType.Quotes, 'quote', ['»']], + ]); +}) diff --git a/packages/starlight-spell-checker/tests/quotes.throwError.straightConfig.test.ts b/packages/starlight-spell-checker/tests/quotes.throwError.straightConfig.test.ts new file mode 100644 index 0000000..ecea6b1 --- /dev/null +++ b/packages/starlight-spell-checker/tests/quotes.throwError.straightConfig.test.ts @@ -0,0 +1,58 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' + +test('builds with quotes throw error straight config valid English content', async () => { + const { output, status } = await buildFixture('quotes-throw-error-straight-config-valid-content') + + expect(status).toBe('success') + expectValidationSuccess(output) +}) + +test('does not build with quotes throw error straight config invalid English content', async () => { + const { output, status } = await buildFixture('quotes-throw-error-straight-config-invalid-content') + + expect(status).toBe('error') + + expectValidationErrorCount(output, 35, 1) + + expectValidationErrors(output, '/', [ + ['"', ValidationErrorType.Quotes, 'quote', ['“']], + ['\'', ValidationErrorType.Quotes, 'quote', ['‘']], + ['\'', ValidationErrorType.Quotes, 'quote', ['’']], + ['\'', ValidationErrorType.Quotes, 'apostrophe', ['’']], + ['"', ValidationErrorType.Quotes, 'quote', ['”']], + ['\'', ValidationErrorType.Quotes, 'quote', ['“']], + ['"', ValidationErrorType.Quotes, 'quote', ['‘']], + ['"', ValidationErrorType.Quotes, 'quote', ['’']], + ['"', ValidationErrorType.Quotes, 'quote', ['‘']], + ['\'', ValidationErrorType.Quotes, 'quote', ['“']], + ['‘', ValidationErrorType.Quotes, 'quote', ['“']], + ['“', ValidationErrorType.Quotes, 'quote', ['‘']], + ['”', ValidationErrorType.Quotes, 'quote', ['’']], + ['”', ValidationErrorType.Quotes, 'quote', ['’']], + ['’', ValidationErrorType.Quotes, 'quote', ['“']], + ['‘', ValidationErrorType.Quotes, 'quote', ['“']], + ['“', ValidationErrorType.Quotes, 'quote', ['‘']], + ['"', ValidationErrorType.Quotes, 'quote', ['“']], + ['\'', ValidationErrorType.Quotes, 'quote', ['‘']], + ['"', ValidationErrorType.Quotes, 'quote', ['“']], + ['"', ValidationErrorType.Quotes, 'quote', ['”']], + ['\'', ValidationErrorType.Quotes, 'quote', ['’']], + ['"', ValidationErrorType.Quotes, 'quote', ['”']], + ['\'', ValidationErrorType.Quotes, 'quote', ['“']], + ['"', ValidationErrorType.Quotes, 'quote', ['‘']], + ['\'', ValidationErrorType.Quotes, 'quote', ['“']], + ['\'', ValidationErrorType.Quotes, 'quote', ['”']], + ['"', ValidationErrorType.Quotes, 'quote', ['’']], + ['\'', ValidationErrorType.Quotes, 'quote', ['”']], + ['‘', ValidationErrorType.Quotes, 'quote', ['“']], + ['“', ValidationErrorType.Quotes, 'quote', ['‘']], + ['‘', ValidationErrorType.Quotes, 'quote', ['“']], + ['’', ValidationErrorType.Quotes, 'quote', ['”']], + ['”', ValidationErrorType.Quotes, 'quote', ['’']], + ['’', ValidationErrorType.Quotes, 'quote', ['”']], + ]); +}) diff --git a/packages/starlight-spell-checker/tests/quotes.throwError.test.ts b/packages/starlight-spell-checker/tests/quotes.throwError.test.ts index ad9e2c8..0fb0ea1 100644 --- a/packages/starlight-spell-checker/tests/quotes.throwError.test.ts +++ b/packages/starlight-spell-checker/tests/quotes.throwError.test.ts @@ -16,10 +16,43 @@ test('does not build with quotes throw error invalid English content', async () expect(status).toBe('error') - expectValidationErrorCount(output, 2, 1) + expectValidationErrorCount(output, 35, 1) expectValidationErrors(output, '/', [ - ['withheld', ValidationErrorType.Quotes, "withheld", []], - ['fed', ValidationErrorType.Quotes, "fed", []], + ['"', ValidationErrorType.Quotes, 'quote', ['“']], + ['\'', ValidationErrorType.Quotes, 'quote', ['‘']], + ['\'', ValidationErrorType.Quotes, 'quote', ['’']], + ['\'', ValidationErrorType.Quotes, 'apostrophe', ['’']], + ['"', ValidationErrorType.Quotes, 'quote', ['”']], + ['\'', ValidationErrorType.Quotes, 'quote', ['“']], + ['"', ValidationErrorType.Quotes, 'quote', ['‘']], + ['"', ValidationErrorType.Quotes, 'quote', ['’']], + ['"', ValidationErrorType.Quotes, 'quote', ['‘']], + ['\'', ValidationErrorType.Quotes, 'quote', ['“']], + ['‘', ValidationErrorType.Quotes, 'quote', ['“']], + ['“', ValidationErrorType.Quotes, 'quote', ['‘']], + ['”', ValidationErrorType.Quotes, 'quote', ['’']], + ['”', ValidationErrorType.Quotes, 'quote', ['’']], + ['’', ValidationErrorType.Quotes, 'quote', ['“']], + ['‘', ValidationErrorType.Quotes, 'quote', ['“']], + ['“', ValidationErrorType.Quotes, 'quote', ['‘']], + ['"', ValidationErrorType.Quotes, 'quote', ['“']], + ['\'', ValidationErrorType.Quotes, 'quote', ['‘']], + ['"', ValidationErrorType.Quotes, 'quote', ['“']], + ['"', ValidationErrorType.Quotes, 'quote', ['”']], + ['\'', ValidationErrorType.Quotes, 'quote', ['’']], + ['"', ValidationErrorType.Quotes, 'quote', ['”']], + ['\'', ValidationErrorType.Quotes, 'quote', ['“']], + ['"', ValidationErrorType.Quotes, 'quote', ['‘']], + ['\'', ValidationErrorType.Quotes, 'quote', ['“']], + ['\'', ValidationErrorType.Quotes, 'quote', ['”']], + ['"', ValidationErrorType.Quotes, 'quote', ['’']], + ['\'', ValidationErrorType.Quotes, 'quote', ['”']], + ['‘', ValidationErrorType.Quotes, 'quote', ['“']], + ['“', ValidationErrorType.Quotes, 'quote', ['‘']], + ['‘', ValidationErrorType.Quotes, 'quote', ['“']], + ['’', ValidationErrorType.Quotes, 'quote', ['”']], + ['”', ValidationErrorType.Quotes, 'quote', ['’']], + ['’', ValidationErrorType.Quotes, 'quote', ['”']], ]) }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d2248da..58d6413 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -553,6 +553,78 @@ importers: specifier: workspace:* version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-invalid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-mode-straight-valid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-invalid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-valid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-invalid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-valid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-valid-content: dependencies: '@astrojs/starlight': @@ -4679,7 +4751,7 @@ snapshots: prompts: 2.4.2 rehype: 13.0.2 semver: 7.6.3 - shiki: 1.26.1 + shiki: 1.26.2 tinyexec: 0.3.2 tsconfck: 3.1.4(typescript@5.7.2) ultrahtml: 1.5.3 @@ -7047,7 +7119,7 @@ snapshots: vite@6.0.7: dependencies: esbuild: 0.24.2 - postcss: 8.4.49 + postcss: 8.5.0 rollup: 4.29.2 optionalDependencies: fsevents: 2.3.3 From 4560e213c70c5ecdeeea28123ca43d787a9df762 Mon Sep 17 00:00:00 2001 From: trueberryless Date: Tue, 14 Jan 2025 15:41:47 +0100 Subject: [PATCH 22/30] more quotes tests --- .../astro.config.ts | 26 ++++++++ .../package.json | 10 ++++ .../src/content.config.ts | 7 +++ .../src/content/docs/index.md | 23 +++++++ .../astro.config.ts | 26 ++++++++ .../package.json | 10 ++++ .../src/content.config.ts | 7 +++ .../src/content/docs/index.md | 23 +++++++ .../astro.config.ts | 26 ++++++++ .../package.json | 10 ++++ .../src/content.config.ts | 7 +++ .../src/content/docs/index.md | 23 +++++++ .../astro.config.ts | 26 ++++++++ .../package.json | 10 ++++ .../src/content.config.ts | 7 +++ .../src/content/docs/index.md | 23 +++++++ ...hrowError.smartConfig.modeStraight.test.ts | 58 ++++++++++++++++++ ...wError.straightConfig.modeStraight.test.ts | 60 +++++++++++++++++++ pnpm-lock.yaml | 48 +++++++++++++++ 19 files changed, 430 insertions(+) create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-invalid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-invalid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-invalid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-invalid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-valid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-valid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-valid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-valid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-invalid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-invalid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-invalid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-invalid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-valid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-valid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-valid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-valid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/quotes.throwError.smartConfig.modeStraight.test.ts create mode 100644 packages/starlight-spell-checker/tests/quotes.throwError.straightConfig.modeStraight.test.ts diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-invalid-content/astro.config.ts new file mode 100644 index 0000000..7cc54df --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-invalid-content/astro.config.ts @@ -0,0 +1,26 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + quotes: { + enabled: true, + throwError: true, + mode: "straight", + smart: ["«»", "‹›"], + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - quotes throw error smart config mode straight invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-invalid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-invalid-content/package.json new file mode 100644 index 0000000..23643b4 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-invalid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/quotes-throw-error-smart-config-mode-straight-invalid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-invalid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-invalid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-invalid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-invalid-content/src/content/docs/index.md new file mode 100644 index 0000000..8b36815 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-invalid-content/src/content/docs/index.md @@ -0,0 +1,23 @@ +--- +title: Index +--- + +A sentence "with quotes, 'nested' quotes, and '80s apostrophes." +A sentence 'with quotes, "nested" quotes, and "80s apostrophes.' + +A sentence “with quotes, ‘nested’ quotes, and ’80s apostrophes.” +A sentence ‘with quotes, “nested” quotes, and ”80s apostrophes.’ +A sentence ”with quotes, ’nested‘ quotes, and ‘80s apostrophes.“ + +A sentence «with quotes, ‹nested› quotes, and '80s apostrophes.» +A sentence ‹with quotes, «nested» quotes, and '80s apostrophes.› +A sentence »with quotes, ›nested‹ quotes, and '80s apostrophes.« + +A sentence "with 'nested "quotes"'". +A sentence 'with "nested 'quotes'"'. + +A sentence “with ‘nested “quotes”’”. +A sentence ‘with “nested ‘quotes’”’. + +A sentence «with ‹nested «quotes»›». +A sentence ‹with «nested ‹quotes›»›. diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-valid-content/astro.config.ts new file mode 100644 index 0000000..7cc54df --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-valid-content/astro.config.ts @@ -0,0 +1,26 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + quotes: { + enabled: true, + throwError: true, + mode: "straight", + smart: ["«»", "‹›"], + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - quotes throw error smart config mode straight invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-valid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-valid-content/package.json new file mode 100644 index 0000000..500611b --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-valid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/quotes-throw-error-smart-config-mode-straight-valid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-valid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-valid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-valid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-valid-content/src/content/docs/index.md new file mode 100644 index 0000000..66ebba4 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-valid-content/src/content/docs/index.md @@ -0,0 +1,23 @@ +--- +title: Index +--- + +A sentence "with quotes, 'nested' quotes, and '80s apostrophes." +A sentence "with quotes, 'nested' quotes, and '80s apostrophes." + +A sentence "with quotes, 'nested' quotes, and '80s apostrophes." +A sentence "with quotes, 'nested' quotes, and '80s apostrophes." +A sentence "with quotes, 'nested' quotes, and '80s apostrophes." + +A sentence "with quotes, 'nested' quotes, and '80s apostrophes." +A sentence "with quotes, 'nested' quotes, and '80s apostrophes." +A sentence "with quotes, 'nested' quotes, and '80s apostrophes." + +A sentence "with 'nested "quotes"'". +A sentence "with 'nested "quotes"'". + +A sentence "with 'nested "quotes"'". +A sentence "with 'nested "quotes"'". + +A sentence "with 'nested "quotes"'". +A sentence "with 'nested "quotes"'". diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-invalid-content/astro.config.ts new file mode 100644 index 0000000..6ac5875 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-invalid-content/astro.config.ts @@ -0,0 +1,26 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + quotes: { + enabled: true, + throwError: true, + mode: "straight", + straight: ["'", '"'], + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - quotes throw error straight config mode straight invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-invalid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-invalid-content/package.json new file mode 100644 index 0000000..acb10f9 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-invalid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/quotes-throw-error-straight-config-mode-straight-invalid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-invalid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-invalid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-invalid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-invalid-content/src/content/docs/index.md new file mode 100644 index 0000000..8b36815 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-invalid-content/src/content/docs/index.md @@ -0,0 +1,23 @@ +--- +title: Index +--- + +A sentence "with quotes, 'nested' quotes, and '80s apostrophes." +A sentence 'with quotes, "nested" quotes, and "80s apostrophes.' + +A sentence “with quotes, ‘nested’ quotes, and ’80s apostrophes.” +A sentence ‘with quotes, “nested” quotes, and ”80s apostrophes.’ +A sentence ”with quotes, ’nested‘ quotes, and ‘80s apostrophes.“ + +A sentence «with quotes, ‹nested› quotes, and '80s apostrophes.» +A sentence ‹with quotes, «nested» quotes, and '80s apostrophes.› +A sentence »with quotes, ›nested‹ quotes, and '80s apostrophes.« + +A sentence "with 'nested "quotes"'". +A sentence 'with "nested 'quotes'"'. + +A sentence “with ‘nested “quotes”’”. +A sentence ‘with “nested ‘quotes’”’. + +A sentence «with ‹nested «quotes»›». +A sentence ‹with «nested ‹quotes›»›. diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-valid-content/astro.config.ts new file mode 100644 index 0000000..6ac5875 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-valid-content/astro.config.ts @@ -0,0 +1,26 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + quotes: { + enabled: true, + throwError: true, + mode: "straight", + straight: ["'", '"'], + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - quotes throw error straight config mode straight invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-valid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-valid-content/package.json new file mode 100644 index 0000000..16ffd68 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-valid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/quotes-throw-error-straight-config-mode-straight-valid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-valid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-valid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-valid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-valid-content/src/content/docs/index.md new file mode 100644 index 0000000..2237a0c --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-valid-content/src/content/docs/index.md @@ -0,0 +1,23 @@ +--- +title: Index +--- + +A sentence 'with quotes, "nested" quotes, and "80s apostrophes.' +A sentence 'with quotes, "nested" quotes, and "80s apostrophes.' + +A sentence 'with quotes, "nested" quotes, and "80s apostrophes.' +A sentence 'with quotes, "nested" quotes, and "80s apostrophes.' +A sentence 'with quotes, "nested" quotes, and "80s apostrophes.' + +A sentence «with quotes, ‹nested› quotes, and '80s apostrophes.» +A sentence ‹with quotes, «nested» quotes, and '80s apostrophes.› +A sentence »with quotes, ›nested‹ quotes, and '80s apostrophes.« + +A sentence 'with "nested 'quotes'"'. +A sentence 'with "nested 'quotes'"'. + +A sentence 'with "nested 'quotes'"'. +A sentence 'with "nested 'quotes'"'. + +A sentence «with ‹nested «quotes»›». +A sentence ‹with «nested ‹quotes›»›. diff --git a/packages/starlight-spell-checker/tests/quotes.throwError.smartConfig.modeStraight.test.ts b/packages/starlight-spell-checker/tests/quotes.throwError.smartConfig.modeStraight.test.ts new file mode 100644 index 0000000..f0bd50b --- /dev/null +++ b/packages/starlight-spell-checker/tests/quotes.throwError.smartConfig.modeStraight.test.ts @@ -0,0 +1,58 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' + +test('builds with quotes throw error smart config mode straight valid English content', async () => { + const { output, status } = await buildFixture('quotes-throw-error-smart-config-mode-straight-valid-content') + + expect(status).toBe('success') + expectValidationSuccess(output) +}) + +test('does not build with quotes throw error smart config mode straight invalid English content', async () => { + const { output, status } = await buildFixture('quotes-throw-error-smart-config-mode-straight-invalid-content') + + expect(status).toBe('error') + + expectValidationErrorCount(output, 35, 1) + + expectValidationErrors(output, '/', [ + ["'", ValidationErrorType.Quotes, 'quote', ['"']], + ['"', ValidationErrorType.Quotes, 'quote', ["'"]], + ['"', ValidationErrorType.Quotes, 'quote', ["'"]], + ['"', ValidationErrorType.Quotes, 'quote', ["'"]], + ["'", ValidationErrorType.Quotes, 'quote', ['"']], + ['«', ValidationErrorType.Quotes, 'quote', ['"']], + ['‹', ValidationErrorType.Quotes, 'quote', ["'"]], + ['›', ValidationErrorType.Quotes, 'quote', ["'"]], + ['»', ValidationErrorType.Quotes, 'quote', ['"']], + ['‹', ValidationErrorType.Quotes, 'quote', ['"']], + ['«', ValidationErrorType.Quotes, 'quote', ["'"]], + ['»', ValidationErrorType.Quotes, 'quote', ["'"]], + ['›', ValidationErrorType.Quotes, 'quote', ['"']], + ['»', ValidationErrorType.Quotes, 'quote', ["'"]], + ['›', ValidationErrorType.Quotes, 'quote', ["'"]], + ['‹', ValidationErrorType.Quotes, 'quote', ['"']], + ['«', ValidationErrorType.Quotes, 'quote', ["'"]], + ["'", ValidationErrorType.Quotes, 'quote', ['"']], + ['"', ValidationErrorType.Quotes, 'quote', ["'"]], + ["'", ValidationErrorType.Quotes, 'quote', ['"']], + ["'", ValidationErrorType.Quotes, 'quote', ['"']], + ['"', ValidationErrorType.Quotes, 'quote', ["'"]], + ["'", ValidationErrorType.Quotes, 'quote', ['"']], + ['«', ValidationErrorType.Quotes, 'quote', ['"']], + ['‹', ValidationErrorType.Quotes, 'quote', ["'"]], + ['«', ValidationErrorType.Quotes, 'quote', ['"']], + ['»', ValidationErrorType.Quotes, 'quote', ['"']], + ['›', ValidationErrorType.Quotes, 'quote', ["'"]], + ['»', ValidationErrorType.Quotes, 'quote', ['"']], + ['‹', ValidationErrorType.Quotes, 'quote', ['"']], + ['«', ValidationErrorType.Quotes, 'quote', ["'"]], + ['‹', ValidationErrorType.Quotes, 'quote', ['"']], + ['›', ValidationErrorType.Quotes, 'quote', ['"']], + ['»', ValidationErrorType.Quotes, 'quote', ["'"]], + ['›', ValidationErrorType.Quotes, 'quote', ['"']], + ]); +}) diff --git a/packages/starlight-spell-checker/tests/quotes.throwError.straightConfig.modeStraight.test.ts b/packages/starlight-spell-checker/tests/quotes.throwError.straightConfig.modeStraight.test.ts new file mode 100644 index 0000000..dbc24c9 --- /dev/null +++ b/packages/starlight-spell-checker/tests/quotes.throwError.straightConfig.modeStraight.test.ts @@ -0,0 +1,60 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' + +test('builds with quotes throw error straight config mode straight valid English content', async () => { + const { output, status } = await buildFixture('quotes-throw-error-straight-config-mode-straight-valid-content') + + expect(status).toBe('success') + expectValidationSuccess(output) +}) + +test('does not build with quotes throw error straight config mode straight invalid English content', async () => { + const { output, status } = await buildFixture('quotes-throw-error-straight-config-mode-straight-invalid-content') + + expect(status).toBe('error') + + expectValidationErrorCount(output, 37, 1) + + expectValidationErrors(output, '/', [ + ['"', ValidationErrorType.Quotes, 'quote', ["'"]], + ["'", ValidationErrorType.Quotes, 'quote', ['"']], + ["'", ValidationErrorType.Quotes, 'quote', ['"']], + ['"', ValidationErrorType.Quotes, 'quote', ["'"]], + ['“', ValidationErrorType.Quotes, 'quote', ["'"]], + ['‘', ValidationErrorType.Quotes, 'quote', ['"']], + ['’', ValidationErrorType.Quotes, 'quote', ['"']], + ['’', ValidationErrorType.Quotes, 'apostrophe', ["'"]], + ['”', ValidationErrorType.Quotes, 'quote', ["'"]], + ['‘', ValidationErrorType.Quotes, 'quote', ["'"]], + ['“', ValidationErrorType.Quotes, 'quote', ['"']], + ['”', ValidationErrorType.Quotes, 'quote', ['"']], + ['”', ValidationErrorType.Quotes, 'quote', ["'"]], + ['’', ValidationErrorType.Quotes, 'apostrophe', ["'"]], + ['”', ValidationErrorType.Quotes, 'quote', ['"']], + ['’', ValidationErrorType.Quotes, 'quote', ["'"]], + ['‘', ValidationErrorType.Quotes, 'quote', ['"']], + ['‘', ValidationErrorType.Quotes, 'quote', ["'"]], + ['“', ValidationErrorType.Quotes, 'quote', ['"']], + ['"', ValidationErrorType.Quotes, 'quote', ["'"]], + ["'", ValidationErrorType.Quotes, 'quote', ['"']], + ['"', ValidationErrorType.Quotes, 'quote', ["'"]], + ['"', ValidationErrorType.Quotes, 'quote', ["'"]], + ["'", ValidationErrorType.Quotes, 'quote', ['"']], + ['"', ValidationErrorType.Quotes, 'quote', ["'"]], + ['“', ValidationErrorType.Quotes, 'quote', ["'"]], + ['‘', ValidationErrorType.Quotes, 'quote', ['"']], + ['“', ValidationErrorType.Quotes, 'quote', ["'"]], + ['”', ValidationErrorType.Quotes, 'quote', ["'"]], + ['’', ValidationErrorType.Quotes, 'quote', ['"']], + ['”', ValidationErrorType.Quotes, 'quote', ["'"]], + ['‘', ValidationErrorType.Quotes, 'quote', ["'"]], + ['“', ValidationErrorType.Quotes, 'quote', ['"']], + ['‘', ValidationErrorType.Quotes, 'quote', ["'"]], + ['’', ValidationErrorType.Quotes, 'quote', ["'"]], + ['”', ValidationErrorType.Quotes, 'quote', ['"']], + ['’', ValidationErrorType.Quotes, 'quote', ["'"]], + ]); +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 58d6413..3433d9c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -589,6 +589,30 @@ importers: specifier: workspace:* version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-invalid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-mode-straight-valid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-valid-content: dependencies: '@astrojs/starlight': @@ -613,6 +637,30 @@ importers: specifier: workspace:* version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-invalid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-mode-straight-valid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-valid-content: dependencies: '@astrojs/starlight': From a5749db62a0b0d0a0194db7fd2850fb747c4be3a Mon Sep 17 00:00:00 2001 From: trueberryless <99918022+trueberryless@users.noreply.github.com> Date: Tue, 14 Jan 2025 15:53:36 +0100 Subject: [PATCH 23/30] fix --- .../src/content/docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-valid-content/src/content/docs/index.md index b7c3495..abdbcc7 100644 --- a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-valid-content/src/content/docs/index.md +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-valid-content/src/content/docs/index.md @@ -10,7 +10,7 @@ A sentence «with quotes, ‹nested› quotes, and ’80s apostrophes.» A sentence «with quotes, ‹nested› quotes, and ’80s apostrophes.» A sentence «with quotes, ‹nested› quotes, and ’80s apostrophes.» -A sentence ‹with quotes, «nested» quotes, and ’80s apostrophes.› +A sentence «with quotes, ‹nested› quotes, and ’80s apostrophes.» A sentence «with quotes, ‹nested› quotes, and ’80s apostrophes.» A sentence «with ‹nested «quotes»›». From cf0dd455ae48e573e9e620ae39b90e18560ea6a2 Mon Sep 17 00:00:00 2001 From: trueberryless Date: Wed, 15 Jan 2025 10:56:45 +0100 Subject: [PATCH 24/30] fix assuming --- .../libs/validation.ts | 4 +- packages/starlight-spell-checker/package.json | 2 +- .../tests/assuming.throwError.test.ts | 19 ++-- pnpm-lock.yaml | 86 +++++++++++++++---- 4 files changed, 79 insertions(+), 32 deletions(-) diff --git a/packages/starlight-spell-checker/libs/validation.ts b/packages/starlight-spell-checker/libs/validation.ts index d164e75..72065e1 100644 --- a/packages/starlight-spell-checker/libs/validation.ts +++ b/packages/starlight-spell-checker/libs/validation.ts @@ -9,7 +9,7 @@ import { getLocaleDictionary } from "./i18n"; import { getValidationData } from "./remark"; import picomatch from "picomatch"; -import retextAssuming from "retext-assuming"; +import retextAssuming from "@trueberryless-org/retext-assuming"; import retextCasePolice from "@trueberryless-org/retext-case-police"; // import retextCliches from "retext-cliches"; import retextContractions from "retext-contractions"; @@ -160,7 +160,7 @@ export async function validateTexts(options: StarlightSpellCheckerConfig) { let fileWarnings: ValidationError[] = []; for (const error of file.messages.values()) { - // console.log(error); + console.log(error); const throwError = getThrowErrorForType( validationErrorTypeMapper[error.source ?? "other"], options diff --git a/packages/starlight-spell-checker/package.json b/packages/starlight-spell-checker/package.json index b91be71..85f938a 100644 --- a/packages/starlight-spell-checker/package.json +++ b/packages/starlight-spell-checker/package.json @@ -32,6 +32,7 @@ }, "bugs": "https://github.com/trueberryless-org/starlight-spell-checker/issues", "dependencies": { + "@trueberryless-org/retext-assuming": "^0.1.1", "@trueberryless-org/retext-case-police": "^0.1.1", "@trueberryless-org/retext-indefinite-article": "^0.1.0", "@trueberryless-org/retext-usage": "^0.1.3", @@ -55,7 +56,6 @@ "picomatch": "^4.0.2", "rehype-parse": "^9.0.1", "retext": "^9.0.0", - "retext-assuming": "^1.0.0", "retext-cliches": "^1.0.0", "retext-contractions": "^6.0.0", "retext-diacritics": "^5.0.0", diff --git a/packages/starlight-spell-checker/tests/assuming.throwError.test.ts b/packages/starlight-spell-checker/tests/assuming.throwError.test.ts index 8e89369..f0b1299 100644 --- a/packages/starlight-spell-checker/tests/assuming.throwError.test.ts +++ b/packages/starlight-spell-checker/tests/assuming.throwError.test.ts @@ -16,14 +16,13 @@ test('does not build with assuming throw error invalid English content', async ( expect(status).toBe('error') - expectValidationErrorCount(output, 6, 1) - - // expectValidationErrors(output, '/', [ - // ['diped', ValidationErrorType.Assuming, ["dipped", "doped", "duped", "biped", "diced", "died", "diked", "dined", "dived", "piped", "wiped"]], - // ['horison', ValidationErrorType.Assuming, ["orison", "horizon", "Morison"]], - // ['heus', ValidationErrorType.Assuming, ["hers", "hews", "he's", "hems", "hens", "hes", "hues", "Hess", "Hus", "Zeus"]], - // ['evaning', ValidationErrorType.Assuming, ["evading", "evening"]], - // ['breze', ValidationErrorType.Assuming, ["breeze", "braze", "breve"]], - // ['thrugh', ValidationErrorType.Assuming, ["though", "through", "thrush"]], - // ]) + expectValidationErrorCount(output, 5, 1) + + expectValidationErrors(output, '/', [ + ['just', ValidationErrorType.Assuming, "no-just", []], + ['simply', ValidationErrorType.Assuming, "no-simply", []], + ['obviously', ValidationErrorType.Assuming, "no-obviously", []], + ['actually', ValidationErrorType.Assuming, "no-actually", []], + ['easy', ValidationErrorType.Assuming, "no-easy", []], + ]) }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3433d9c..430c039 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -32,6 +32,9 @@ importers: packages/starlight-spell-checker: dependencies: + '@trueberryless-org/retext-assuming': + specifier: ^0.1.1 + version: 0.1.1 '@trueberryless-org/retext-case-police': specifier: ^0.1.1 version: 0.1.1 @@ -101,9 +104,6 @@ importers: retext: specifier: ^9.0.0 version: 9.0.0 - retext-assuming: - specifier: ^1.0.0 - version: 1.0.0 retext-cliches: specifier: ^1.0.0 version: 1.0.0 @@ -577,6 +577,30 @@ importers: specifier: workspace:* version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-invalid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-valid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-config-invalid-content: dependencies: '@astrojs/starlight': @@ -625,6 +649,30 @@ importers: specifier: workspace:* version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-invalid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + + packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-valid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-invalid-content: dependencies: '@astrojs/starlight': @@ -1711,6 +1759,9 @@ packages: '@shikijs/vscode-textmate@10.0.1': resolution: {integrity: sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==} + '@trueberryless-org/retext-assuming@0.1.1': + resolution: {integrity: sha512-DrmC4Z9eLZvW4IHZ+P0YAfb/NqNFI7WsTynLaH6n4muzbXLBAzbAlS6jI6hV367uGjmxONhUAffrIp6jLOe17g==} + '@trueberryless-org/retext-case-police@0.1.1': resolution: {integrity: sha512-6jLjWCOx0ywTCyJVJ1ML/30lSr8yLtwlLf438cyBdqRQ3EbFmwADqREURW0tUx9vmpw+n3fAi2bTPjuJ4t/tbQ==} engines: {node: '>=17'} @@ -2591,12 +2642,12 @@ packages: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} - lodash.difference@4.5.0: - resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} - lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -3157,9 +3208,6 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - retext-assuming@1.0.0: - resolution: {integrity: sha512-DuUVEYtWtplVwzlY8kJao87ZIuzgGBKuq1bSA8lss2aKzEQJSRGDUkmGVgnTnJiCYFFGRbskfaq0bSkpLQlwuQ==} - retext-cliches@1.0.0: resolution: {integrity: sha512-iriUk/RSovD4rL+X1O67dSC+cP79Ks58p6Gus3ygry7wQXVEVOZGGX37yIkBWJgg8wh76mNsgk13DoLjlVzrNw==} @@ -4555,6 +4603,14 @@ snapshots: '@shikijs/vscode-textmate@10.0.1': {} + '@trueberryless-org/retext-assuming@0.1.1': + dependencies: + lodash: 4.17.21 + nlcst-search: 1.5.1 + nlcst-to-string: 2.0.4 + quotation: 1.1.3 + unist-util-find-before: 2.0.5 + '@trueberryless-org/retext-case-police@0.1.1': dependencies: case-police: 0.5.14 @@ -5654,10 +5710,10 @@ snapshots: dependencies: p-locate: 4.1.0 - lodash.difference@4.5.0: {} - lodash.startcase@4.4.0: {} + lodash@4.17.21: {} + longest-streak@3.1.0: {} loupe@3.1.2: {} @@ -6575,14 +6631,6 @@ snapshots: resolve-from@5.0.0: {} - retext-assuming@1.0.0: - dependencies: - lodash.difference: 4.5.0 - nlcst-search: 1.5.1 - nlcst-to-string: 2.0.4 - quotation: 1.1.3 - unist-util-find-before: 2.0.5 - retext-cliches@1.0.0: dependencies: array-differ: 1.0.0 From 3f7a3d8b3c9f833d8e267f3e8cdbbccb380f51e5 Mon Sep 17 00:00:00 2001 From: trueberryless Date: Wed, 15 Jan 2025 12:14:10 +0100 Subject: [PATCH 25/30] smart straight tests --- .../astro.config.ts | 26 ++++++ .../package.json | 10 +++ .../src/content.config.ts | 7 ++ .../src/content/docs/index.md | 23 +++++ .../astro.config.ts | 26 ++++++ .../package.json | 10 +++ .../src/content.config.ts | 7 ++ .../src/content/docs/index.md | 23 +++++ .../package.json | 2 +- ...tes.throwError.smartStraightConfig.test.ts | 88 +++++++++++++++++++ 10 files changed, 221 insertions(+), 1 deletion(-) create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-invalid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-invalid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-invalid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-invalid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-valid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-valid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-valid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-valid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/quotes.throwError.smartStraightConfig.test.ts diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-invalid-content/astro.config.ts new file mode 100644 index 0000000..8e9bf14 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-invalid-content/astro.config.ts @@ -0,0 +1,26 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + quotes: { + enabled: true, + throwError: true, + smart: ["«»", "‹›"], + straight: ["'", '"'], + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - quotes throw error smart straight config invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-invalid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-invalid-content/package.json new file mode 100644 index 0000000..7a8b6ee --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-invalid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/quotes-throw-error-smart-straight-config-invalid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-invalid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-invalid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-invalid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-invalid-content/src/content/docs/index.md new file mode 100644 index 0000000..96f979e --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-invalid-content/src/content/docs/index.md @@ -0,0 +1,23 @@ +--- +title: Index +--- + +A sentence "with quotes, 'nested' quotes, and '80s apostrophes." +A sentence "with quotes, 'nested' quotes, and '80s apostrophes." + +A sentence "with quotes, 'nested' quotes, and '80s apostrophes." +A sentence "with quotes, 'nested' quotes, and '80s apostrophes." +A sentence "with quotes, 'nested' quotes, and '80s apostrophes." + +A sentence «with quotes, ‹nested› quotes, and '80s apostrophes.» +A sentence ‹with quotes, «nested» quotes, and '80s apostrophes.› +A sentence »with quotes, ›nested‹ quotes, and '80s apostrophes.« + +A sentence "with 'nested "quotes"'". +A sentence "with 'nested "quotes"'". + +A sentence "with 'nested "quotes"'". +A sentence "with 'nested "quotes"'". + +A sentence «with ‹nested «quotes»›». +A sentence ‹with «nested ‹quotes›»›. diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-valid-content/astro.config.ts new file mode 100644 index 0000000..8e9bf14 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-valid-content/astro.config.ts @@ -0,0 +1,26 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + quotes: { + enabled: true, + throwError: true, + smart: ["«»", "‹›"], + straight: ["'", '"'], + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - quotes throw error smart straight config invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-valid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-valid-content/package.json new file mode 100644 index 0000000..1c003d4 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-valid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/quotes-throw-error-smart-straight-config-valid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-valid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-valid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-valid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-valid-content/src/content/docs/index.md new file mode 100644 index 0000000..58b78da --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-smart-straight-config-valid-content/src/content/docs/index.md @@ -0,0 +1,23 @@ +--- +title: Index +--- + +A sentence «with quotes, ‹nested› quotes, and ’80s apostrophes.» +A sentence «with quotes, ‹nested› quotes, and ’80s apostrophes.» + +A sentence «with quotes, ‹nested› quotes, and ’80s apostrophes.» +A sentence «with quotes, ‹nested› quotes, and ’80s apostrophes.» +A sentence «with quotes, ‹nested› quotes, and ’80s apostrophes.» + +A sentence «with quotes, ‹nested› quotes, and ’80s apostrophes.» +A sentence «with quotes, ‹nested› quotes, and ’80s apostrophes.» +A sentence «with quotes, ‹nested› quotes, and ’80s apostrophes.» + +A sentence «with ‹nested «quotes»›». +A sentence «with ‹nested «quotes»›». + +A sentence «with ‹nested «quotes»›». +A sentence «with ‹nested «quotes»›». + +A sentence «with ‹nested «quotes»›». +A sentence «with ‹nested «quotes»›». diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-valid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-valid-content/package.json index 323a010..bbd9009 100644 --- a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-valid-content/package.json +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-straight-config-valid-content/package.json @@ -1,5 +1,5 @@ { - "name": "@starlight-spell-checker-tests/quotes-throw-error-straight-config-invalid-content", + "name": "@starlight-spell-checker-tests/quotes-throw-error-straight-config-valid-content", "version": "0.0.0", "dependencies": { "@astrojs/starlight": "^0.30.2", diff --git a/packages/starlight-spell-checker/tests/quotes.throwError.smartStraightConfig.test.ts b/packages/starlight-spell-checker/tests/quotes.throwError.smartStraightConfig.test.ts new file mode 100644 index 0000000..956a874 --- /dev/null +++ b/packages/starlight-spell-checker/tests/quotes.throwError.smartStraightConfig.test.ts @@ -0,0 +1,88 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' + +test('builds with quotes throw error smart straight config valid English content', async () => { + const { output, status } = await buildFixture('quotes-throw-error-smart-straight-config-valid-content') + + expect(status).toBe('success') + expectValidationSuccess(output) +}) + +test('does not build with quotes throw error smart straight config invalid English content', async () => { + const { output, status } = await buildFixture('quotes-throw-error-smart-straight-config-invalid-content') + + expect(status).toBe('error') + + expectValidationErrorCount(output, 65, 1) + + expectValidationErrors(output, '/', [ + ['"', ValidationErrorType.Quotes, 'quote', ['«']], + ["'", ValidationErrorType.Quotes, 'quote', ['‹']], + ["'", ValidationErrorType.Quotes, 'quote', ['›']], + ["'", ValidationErrorType.Quotes, 'apostrophe', ['’']], + ['"', ValidationErrorType.Quotes, 'quote', ['»']], + ['"', ValidationErrorType.Quotes, 'quote', ['«']], + ["'", ValidationErrorType.Quotes, 'quote', ['‹']], + ["'", ValidationErrorType.Quotes, 'quote', ['›']], + ["'", ValidationErrorType.Quotes, 'apostrophe', ['’']], + ['"', ValidationErrorType.Quotes, 'quote', ['»']], + ['"', ValidationErrorType.Quotes, 'quote', ['«']], + ["'", ValidationErrorType.Quotes, 'quote', ['‹']], + ["'", ValidationErrorType.Quotes, 'quote', ['›']], + ["'", ValidationErrorType.Quotes, 'apostrophe', ['’']], + ['"', ValidationErrorType.Quotes, 'quote', ['»']], + ['"', ValidationErrorType.Quotes, 'quote', ['«']], + ["'", ValidationErrorType.Quotes, 'quote', ['‹']], + ["'", ValidationErrorType.Quotes, 'quote', ['›']], + ["'", ValidationErrorType.Quotes, 'apostrophe', ['’']], + ['"', ValidationErrorType.Quotes, 'quote', ['»']], + ['"', ValidationErrorType.Quotes, 'quote', ['«']], + ["'", ValidationErrorType.Quotes, 'quote', ['‹']], + ["'", ValidationErrorType.Quotes, 'quote', ['›']], + ["'", ValidationErrorType.Quotes, 'apostrophe', ['’']], + ['"', ValidationErrorType.Quotes, 'quote', ['»']], + ["'", ValidationErrorType.Quotes, 'apostrophe', ['’']], + ['‹', ValidationErrorType.Quotes, 'quote', ['«']], + ['«', ValidationErrorType.Quotes, 'quote', ['‹']], + ['»', ValidationErrorType.Quotes, 'quote', ['›']], + ["'", ValidationErrorType.Quotes, 'apostrophe', ['’']], + ['›', ValidationErrorType.Quotes, 'quote', ['»']], + ['»', ValidationErrorType.Quotes, 'quote', ['›']], + ['‹', ValidationErrorType.Quotes, 'quote', ['«']], + ["'", ValidationErrorType.Quotes, 'apostrophe', ['’']], + ['«', ValidationErrorType.Quotes, 'quote', ['‹']], + ['"', ValidationErrorType.Quotes, 'quote', ['«']], + ["'", ValidationErrorType.Quotes, 'quote', ['‹']], + ['"', ValidationErrorType.Quotes, 'quote', ['«']], + ['"', ValidationErrorType.Quotes, 'quote', ['»']], + ["'", ValidationErrorType.Quotes, 'quote', ['›']], + ['"', ValidationErrorType.Quotes, 'quote', ['»']], + ['"', ValidationErrorType.Quotes, 'quote', ['«']], + ["'", ValidationErrorType.Quotes, 'quote', ['‹']], + ['"', ValidationErrorType.Quotes, 'quote', ['«']], + ['"', ValidationErrorType.Quotes, 'quote', ['»']], + ["'", ValidationErrorType.Quotes, 'quote', ['›']], + ['"', ValidationErrorType.Quotes, 'quote', ['»']], + ['"', ValidationErrorType.Quotes, 'quote', ['«']], + ["'", ValidationErrorType.Quotes, 'quote', ['‹']], + ['"', ValidationErrorType.Quotes, 'quote', ['«']], + ['"', ValidationErrorType.Quotes, 'quote', ['»']], + ["'", ValidationErrorType.Quotes, 'quote', ['›']], + ['"', ValidationErrorType.Quotes, 'quote', ['»']], + ['"', ValidationErrorType.Quotes, 'quote', ['«']], + ["'", ValidationErrorType.Quotes, 'quote', ['‹']], + ['"', ValidationErrorType.Quotes, 'quote', ['«']], + ['"', ValidationErrorType.Quotes, 'quote', ['»']], + ["'", ValidationErrorType.Quotes, 'quote', ['›']], + ['"', ValidationErrorType.Quotes, 'quote', ['»']], + ['‹', ValidationErrorType.Quotes, 'quote', ['«']], + ['«', ValidationErrorType.Quotes, 'quote', ['‹']], + ['‹', ValidationErrorType.Quotes, 'quote', ['«']], + ['›', ValidationErrorType.Quotes, 'quote', ['»']], + ['»', ValidationErrorType.Quotes, 'quote', ['›']], + ['›', ValidationErrorType.Quotes, 'quote', ['»']], + ]); +}) From 7da4a30a31f54b39042477b254479eb6f356a657 Mon Sep 17 00:00:00 2001 From: trueberryless Date: Wed, 15 Jan 2025 12:22:57 +0100 Subject: [PATCH 26/30] prepare last quotes tests --- .../astro.config.ts | 25 ++++++++++++++++ .../package.json | 10 +++++++ .../src/content.config.ts | 7 +++++ .../src/content/docs/index.md | 12 ++++++++ .../astro.config.ts | 25 ++++++++++++++++ .../package.json | 10 +++++++ .../src/content.config.ts | 7 +++++ .../src/content/docs/index.md | 12 ++++++++ .../astro.config.ts | 25 ++++++++++++++++ .../package.json | 10 +++++++ .../src/content.config.ts | 7 +++++ .../src/content/docs/index.md | 12 ++++++++ .../quotes.throwError.multiNested.test.ts | 29 +++++++++++++++++++ pnpm-lock.yaml | 12 ++++++++ 14 files changed, 203 insertions(+) create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-multi-nested-valid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-multi-nested-valid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-multi-nested-valid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-multi-nested-valid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-invalid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-invalid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-invalid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-invalid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-valid-content/astro.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-valid-content/package.json create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-valid-content/src/content.config.ts create mode 100644 packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-valid-content/src/content/docs/index.md create mode 100644 packages/starlight-spell-checker/tests/quotes.throwError.multiNested.test.ts diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-multi-nested-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-multi-nested-valid-content/astro.config.ts new file mode 100644 index 0000000..136391c --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-multi-nested-valid-content/astro.config.ts @@ -0,0 +1,25 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + quotes: { + enabled: true, + throwError: true, + smart: ["“”", "‘’", "«»", "‹›"], + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - quotes throw error multi multi nested invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-multi-nested-valid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-multi-nested-valid-content/package.json new file mode 100644 index 0000000..455d055 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-multi-nested-valid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/quotes-throw-error-multi-multi-nested-valid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-multi-nested-valid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-multi-nested-valid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-multi-nested-valid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-multi-nested-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-multi-nested-valid-content/src/content/docs/index.md new file mode 100644 index 0000000..0c8b8bc --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-multi-nested-valid-content/src/content/docs/index.md @@ -0,0 +1,12 @@ +--- +title: Index +--- + +A sentence “with ‘multi «mutli ‹nested “quotes”›»’”. +A sentence “with ‘multi «mutli ‹nested “quotes”›»’”. + +A sentence “with ‘multi «mutli ‹nested “quotes”›»’”. +A sentence “with ‘multi «mutli ‹nested “quotes”›»’”. + +A sentence “with ‘multi «mutli ‹nested “quotes”›»’”. +A sentence “with ‘multi «mutli ‹nested “quotes”›»’”. diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-invalid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-invalid-content/astro.config.ts new file mode 100644 index 0000000..658aa10 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-invalid-content/astro.config.ts @@ -0,0 +1,25 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + quotes: { + enabled: true, + throwError: true, + smart: ["“”", "‘’", "«»", "‹›"], + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - quotes throw error multi nested invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-invalid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-invalid-content/package.json new file mode 100644 index 0000000..5dd4b90 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-invalid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/quotes-throw-error-multi-nested-invalid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-invalid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-invalid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-invalid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-invalid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-invalid-content/src/content/docs/index.md new file mode 100644 index 0000000..3046294 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-invalid-content/src/content/docs/index.md @@ -0,0 +1,12 @@ +--- +title: Index +--- + +A sentence “with ‘multi «mutli ‹nested “quotes”›»’”. +A sentence “with ‘multi «mutli “nested ‘quotes’”»’”. + +A sentence ‘with “multi «mutli ‹nested “quotes”›»”’. +A sentence ‘with “multi «mutli ‘nested “quotes”’»”’. + +A sentence «with ‹multi “mutli ‘nested «quotes»’”›». +A sentence «with “multi ‘mutli «nested “quotes”»’”». diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-valid-content/astro.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-valid-content/astro.config.ts new file mode 100644 index 0000000..d8dad64 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-valid-content/astro.config.ts @@ -0,0 +1,25 @@ +import starlight from "@astrojs/starlight"; +import { defineConfig } from "astro/config"; +import starlightSpellChecker from "starlight-spell-checker"; + +export default defineConfig({ + integrations: [ + starlight({ + pagefind: false, + plugins: [ + starlightSpellChecker({ + quotes: { + enabled: true, + throwError: true, + smart: ["“”", "‘’", "«»"], + }, + spell: { + enabled: false, + }, + }), + ], + title: + "Starlight Spell Checker Tests - quotes throw error multi nested invalid content", + }), + ], +}); diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-valid-content/package.json b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-valid-content/package.json new file mode 100644 index 0000000..160f77a --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-valid-content/package.json @@ -0,0 +1,10 @@ +{ + "name": "@starlight-spell-checker-tests/quotes-throw-error-multi-nested-valid-content", + "version": "0.0.0", + "dependencies": { + "@astrojs/starlight": "^0.30.2", + "astro": "^5.1.1", + "starlight-spell-checker": "workspace:*" + }, + "private": true +} diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-valid-content/src/content.config.ts b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-valid-content/src/content.config.ts new file mode 100644 index 0000000..0bead42 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-valid-content/src/content.config.ts @@ -0,0 +1,7 @@ +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; +import { defineCollection } from "astro:content"; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-valid-content/src/content/docs/index.md b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-valid-content/src/content/docs/index.md new file mode 100644 index 0000000..4649024 --- /dev/null +++ b/packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-valid-content/src/content/docs/index.md @@ -0,0 +1,12 @@ +--- +title: Index +--- + +A sentence “with ‘multi «mutli “nested ‘quotes’”»’”. +A sentence “with ‘multi «mutli “nested ‘quotes’”»’”. + +A sentence “with ‘multi «mutli “nested ‘quotes’”»’”. +A sentence “with ‘multi «mutli “nested ‘quotes’”»’”. + +A sentence “with ‘multi «mutli “nested ‘quotes’”»’”. +A sentence “with ‘multi «mutli “nested ‘quotes’”»’”. diff --git a/packages/starlight-spell-checker/tests/quotes.throwError.multiNested.test.ts b/packages/starlight-spell-checker/tests/quotes.throwError.multiNested.test.ts new file mode 100644 index 0000000..bb09e76 --- /dev/null +++ b/packages/starlight-spell-checker/tests/quotes.throwError.multiNested.test.ts @@ -0,0 +1,29 @@ +import { expect, test } from 'vitest' + +import { ValidationErrorType } from '../libs/validation' + +import { buildFixture, expectValidationErrorCount, expectValidationErrors, expectValidationSuccess } from './utils' + +test('builds with quotes throw error multi nested valid English content', async () => { + const { output, status } = await buildFixture('quotes-throw-error-multi-nested-valid-content') + + expect(status).toBe('success') + expectValidationSuccess(output) +}) + +test('builds with quotes throw error multi multi nested valid English content', async () => { + const { output, status } = await buildFixture('quotes-throw-error-multi-multi-nested-valid-content') + + expect(status).toBe('success') + expectValidationSuccess(output) +}) + +test('does not build with quotes throw error multi nested invalid English content', async () => { + const { output, status } = await buildFixture('quotes-throw-error-multi-nested-invalid-content') + + expect(status).toBe('error') + + expectValidationErrorCount(output, , 1) + + +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 430c039..bbf4b0f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -577,6 +577,18 @@ importers: specifier: workspace:* version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-multi-nested-valid-content: + dependencies: + '@astrojs/starlight': + specifier: ^0.30.2 + version: 0.30.6(astro@5.1.6(rollup@4.29.2)(typescript@5.7.2)) + astro: + specifier: ^5.1.1 + version: 5.1.6(rollup@4.29.2)(typescript@5.7.2) + starlight-spell-checker: + specifier: workspace:* + version: link:../../.. + packages/starlight-spell-checker/tests/fixtures/quotes-throw-error-multi-nested-invalid-content: dependencies: '@astrojs/starlight': From 2470baa3535de65b0f10bd5673285ed3b5f78215 Mon Sep 17 00:00:00 2001 From: trueberryless Date: Wed, 15 Jan 2025 16:26:18 +0100 Subject: [PATCH 27/30] Update quotes and this fixes tests --- packages/starlight-spell-checker/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/starlight-spell-checker/package.json b/packages/starlight-spell-checker/package.json index 85f938a..e225ae5 100644 --- a/packages/starlight-spell-checker/package.json +++ b/packages/starlight-spell-checker/package.json @@ -64,7 +64,7 @@ "retext-overuse": "^1.1.1", "retext-passive": "^5.0.0", "retext-profanities": "^8.0.0", - "retext-quotes": "^6.0.0", + "retext-quotes": "^6.0.1", "retext-readability": "^8.0.0", "retext-redundant-acronyms": "^5.0.0", "retext-repeated-words": "^5.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bbf4b0f..d77d501 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -129,8 +129,8 @@ importers: specifier: ^8.0.0 version: 8.0.0 retext-quotes: - specifier: ^6.0.0 - version: 6.0.0 + specifier: ^6.0.1 + version: 6.0.1 retext-readability: specifier: ^8.0.0 version: 8.0.0 @@ -3247,8 +3247,8 @@ packages: retext-profanities@8.0.0: resolution: {integrity: sha512-fuKCUqpXnzSimirk5iBL3vwJJhxzypxMiEfI6FHJ3xafsD8KfPjdd7v0z65PHf+VuekGAIGv4wW34UAM1w9ihw==} - retext-quotes@6.0.0: - resolution: {integrity: sha512-LvWVCSqqvDQvIT8WPXryUBrmgMl7EO3pb4wenJ0NNywpy3/4Kbc3rGULlfsq7K80xEARQ239ujWu9nUqdMTVLA==} + retext-quotes@6.0.1: + resolution: {integrity: sha512-izJgXBeQw5S/QMAeoc1qrYBy0ac+HY3l/3MbffWgONIBo9Wsl6dE8SRQu66bSBwSLzd+oxCexlzYzfg6ca13Lw==} retext-readability@8.0.0: resolution: {integrity: sha512-fGxJLap12lerQnU+4746oc6jYBRmvdud1aVNzagKwX10etXV4UWuFSl8bjQCbboT5fq74ImR8Mt1UmAGSUPyhw==} @@ -6729,7 +6729,7 @@ snapshots: unist-util-position: 5.0.0 vfile: 6.0.3 - retext-quotes@6.0.0: + retext-quotes@6.0.1: dependencies: '@types/nlcst': 2.0.3 nlcst-to-string: 4.0.0 From c1d991d3ff4c87a2d5ea5709e01f37eeb0253dba Mon Sep 17 00:00:00 2001 From: trueberryless Date: Wed, 15 Jan 2025 17:00:33 +0100 Subject: [PATCH 28/30] test cases --- .../libs/validation.ts | 1 - .../quotes.throwError.multiNested.test.ts | 39 +++++++++++++++++-- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/packages/starlight-spell-checker/libs/validation.ts b/packages/starlight-spell-checker/libs/validation.ts index 72065e1..a32458e 100644 --- a/packages/starlight-spell-checker/libs/validation.ts +++ b/packages/starlight-spell-checker/libs/validation.ts @@ -160,7 +160,6 @@ export async function validateTexts(options: StarlightSpellCheckerConfig) { let fileWarnings: ValidationError[] = []; for (const error of file.messages.values()) { - console.log(error); const throwError = getThrowErrorForType( validationErrorTypeMapper[error.source ?? "other"], options diff --git a/packages/starlight-spell-checker/tests/quotes.throwError.multiNested.test.ts b/packages/starlight-spell-checker/tests/quotes.throwError.multiNested.test.ts index bb09e76..bf7eff5 100644 --- a/packages/starlight-spell-checker/tests/quotes.throwError.multiNested.test.ts +++ b/packages/starlight-spell-checker/tests/quotes.throwError.multiNested.test.ts @@ -23,7 +23,40 @@ test('does not build with quotes throw error multi nested invalid English conten expect(status).toBe('error') - expectValidationErrorCount(output, , 1) - - + expectValidationErrorCount(output, 32, 1) + + expectValidationErrors(output, '/', [ + ['“', ValidationErrorType.Quotes, 'quote', ['‹']], + ['‘', ValidationErrorType.Quotes, 'quote', ['“']], + ['’', ValidationErrorType.Quotes, 'quote', ['”']], + ['”', ValidationErrorType.Quotes, 'quote', ['›']], + ['‘', ValidationErrorType.Quotes, 'quote', ['“']], + ['“', ValidationErrorType.Quotes, 'quote', ['‘']], + ['”', ValidationErrorType.Quotes, 'quote', ['’']], + ['’', ValidationErrorType.Quotes, 'quote', ['”']], + ['‘', ValidationErrorType.Quotes, 'quote', ['“']], + ['“', ValidationErrorType.Quotes, 'quote', ['‘']], + ['‘', ValidationErrorType.Quotes, 'quote', ['‹']], + ['’', ValidationErrorType.Quotes, 'quote', ['›']], + ['”', ValidationErrorType.Quotes, 'quote', ['’']], + ['’', ValidationErrorType.Quotes, 'quote', ['”']], + ['«', ValidationErrorType.Quotes, 'quote', ['“']], + ['‹', ValidationErrorType.Quotes, 'quote', ['‘']], + ['“', ValidationErrorType.Quotes, 'quote', ['«']], + ['‘', ValidationErrorType.Quotes, 'quote', ['‹']], + ['«', ValidationErrorType.Quotes, 'quote', ['“']], + ['»', ValidationErrorType.Quotes, 'quote', ['”']], + ['’', ValidationErrorType.Quotes, 'quote', ['›']], + ['”', ValidationErrorType.Quotes, 'quote', ['»']], + ['›', ValidationErrorType.Quotes, 'quote', ['’']], + ['»', ValidationErrorType.Quotes, 'quote', ['”']], + ['«', ValidationErrorType.Quotes, 'quote', ['“']], + ['“', ValidationErrorType.Quotes, 'quote', ['‘']], + ['‘', ValidationErrorType.Quotes, 'quote', ['«']], + ['«', ValidationErrorType.Quotes, 'quote', ['‹']], + ['»', ValidationErrorType.Quotes, 'quote', ['›']], + ['’', ValidationErrorType.Quotes, 'quote', ['»']], + ['”', ValidationErrorType.Quotes, 'quote', ['’']], + ['»', ValidationErrorType.Quotes, 'quote', ['”']], + ]); }) From 664a87059cb0b9a3c70c05f0f1f9dc4dbfa05017 Mon Sep 17 00:00:00 2001 From: trueberryless Date: Thu, 16 Jan 2025 13:50:21 +0100 Subject: [PATCH 29/30] v6.0.2 fix quote tests --- pnpm-lock.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d77d501..913ccf3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -129,8 +129,8 @@ importers: specifier: ^8.0.0 version: 8.0.0 retext-quotes: - specifier: ^6.0.1 - version: 6.0.1 + specifier: ^6.0.2 + version: 6.0.2 retext-readability: specifier: ^8.0.0 version: 8.0.0 @@ -3247,8 +3247,8 @@ packages: retext-profanities@8.0.0: resolution: {integrity: sha512-fuKCUqpXnzSimirk5iBL3vwJJhxzypxMiEfI6FHJ3xafsD8KfPjdd7v0z65PHf+VuekGAIGv4wW34UAM1w9ihw==} - retext-quotes@6.0.1: - resolution: {integrity: sha512-izJgXBeQw5S/QMAeoc1qrYBy0ac+HY3l/3MbffWgONIBo9Wsl6dE8SRQu66bSBwSLzd+oxCexlzYzfg6ca13Lw==} + retext-quotes@6.0.2: + resolution: {integrity: sha512-J+JdHDvWDkibjcld7pEag2/rLoIA0NNbqdHfvv0wrpGv6nsYbEy6TKQi5oRcNO6TzgIH5CRQXs2qiwDr/PbP+g==} retext-readability@8.0.0: resolution: {integrity: sha512-fGxJLap12lerQnU+4746oc6jYBRmvdud1aVNzagKwX10etXV4UWuFSl8bjQCbboT5fq74ImR8Mt1UmAGSUPyhw==} @@ -6729,7 +6729,7 @@ snapshots: unist-util-position: 5.0.0 vfile: 6.0.3 - retext-quotes@6.0.1: + retext-quotes@6.0.2: dependencies: '@types/nlcst': 2.0.3 nlcst-to-string: 4.0.0 From 034a0bd1e02dfb571f8e871fc251c25945905caa Mon Sep 17 00:00:00 2001 From: trueberryless Date: Thu, 16 Jan 2025 13:51:53 +0100 Subject: [PATCH 30/30] and the package files... --- packages/starlight-spell-checker/package.json | 2 +- .../quotes.throwError.modeStraight.test.ts | 48 +++++++++---------- ...hrowError.smartConfig.modeStraight.test.ts | 4 +- .../quotes.throwError.smartConfig.test.ts | 24 +++++----- ...tes.throwError.smartStraightConfig.test.ts | 2 +- ...wError.straightConfig.modeStraight.test.ts | 2 +- .../quotes.throwError.straightConfig.test.ts | 25 +++++----- .../tests/quotes.throwError.test.ts | 3 +- 8 files changed, 54 insertions(+), 56 deletions(-) diff --git a/packages/starlight-spell-checker/package.json b/packages/starlight-spell-checker/package.json index e225ae5..c64dd0a 100644 --- a/packages/starlight-spell-checker/package.json +++ b/packages/starlight-spell-checker/package.json @@ -64,7 +64,7 @@ "retext-overuse": "^1.1.1", "retext-passive": "^5.0.0", "retext-profanities": "^8.0.0", - "retext-quotes": "^6.0.1", + "retext-quotes": "^6.0.2", "retext-readability": "^8.0.0", "retext-redundant-acronyms": "^5.0.0", "retext-repeated-words": "^5.0.0", diff --git a/packages/starlight-spell-checker/tests/quotes.throwError.modeStraight.test.ts b/packages/starlight-spell-checker/tests/quotes.throwError.modeStraight.test.ts index afac0fb..50990c8 100644 --- a/packages/starlight-spell-checker/tests/quotes.throwError.modeStraight.test.ts +++ b/packages/starlight-spell-checker/tests/quotes.throwError.modeStraight.test.ts @@ -19,43 +19,43 @@ test('does not build with quotes throw error mode straight invalid English conte expectValidationErrorCount(output, 38, 1) expectValidationErrors(output, '/', [ - ['\'', ValidationErrorType.Quotes, 'quote', ['"']], - ['"', ValidationErrorType.Quotes, 'quote', ['\'']], - ['"', ValidationErrorType.Quotes, 'quote', ['\'']], - ['"', ValidationErrorType.Quotes, 'quote', ['\'']], - ['\'', ValidationErrorType.Quotes, 'quote', ['"']], + ["'", ValidationErrorType.Quotes, 'quote', ['"']], + ['"', ValidationErrorType.Quotes, 'quote', ["'"]], + ['"', ValidationErrorType.Quotes, 'quote', ["'"]], + ['"', ValidationErrorType.Quotes, 'quote', ["'"]], + ["'", ValidationErrorType.Quotes, 'quote', ['"']], ['“', ValidationErrorType.Quotes, 'quote', ['"']], - ['‘', ValidationErrorType.Quotes, 'quote', ['\'']], - ['’', ValidationErrorType.Quotes, 'quote', ['\'']], - ['’', ValidationErrorType.Quotes, 'apostrophe', ['\'']], + ['‘', ValidationErrorType.Quotes, 'quote', ["'"]], + ['’', ValidationErrorType.Quotes, 'quote', ["'"]], + ['’', ValidationErrorType.Quotes, 'apostrophe', ["'"]], ['”', ValidationErrorType.Quotes, 'quote', ['"']], ['‘', ValidationErrorType.Quotes, 'quote', ['"']], - ['“', ValidationErrorType.Quotes, 'quote', ['\'']], - ['”', ValidationErrorType.Quotes, 'quote', ['\'']], + ['“', ValidationErrorType.Quotes, 'quote', ["'"]], + ['”', ValidationErrorType.Quotes, 'quote', ["'"]], + ['”', ValidationErrorType.Quotes, 'quote', ['"']], + ['’', ValidationErrorType.Quotes, 'apostrophe', ["'"]], ['”', ValidationErrorType.Quotes, 'quote', ['"']], - ['’', ValidationErrorType.Quotes, 'apostrophe', ['\'']], - ['”', ValidationErrorType.Quotes, 'quote', ['\'']], ['’', ValidationErrorType.Quotes, 'quote', ['"']], - ['‘', ValidationErrorType.Quotes, 'quote', ['\'']], + ['‘', ValidationErrorType.Quotes, 'quote', ["'"]], ['‘', ValidationErrorType.Quotes, 'quote', ['"']], - ['“', ValidationErrorType.Quotes, 'quote', ['\'']], - ['\'', ValidationErrorType.Quotes, 'quote', ['"']], - ['"', ValidationErrorType.Quotes, 'quote', ['\'']], - ['\'', ValidationErrorType.Quotes, 'quote', ['"']], - ['\'', ValidationErrorType.Quotes, 'quote', ['"']], - ['"', ValidationErrorType.Quotes, 'quote', ['\'']], - ['\'', ValidationErrorType.Quotes, 'quote', ['"']], + ['“', ValidationErrorType.Quotes, 'quote', ["'"]], + ["'", ValidationErrorType.Quotes, 'quote', ['"']], + ['"', ValidationErrorType.Quotes, 'quote', ["'"]], + ["'", ValidationErrorType.Quotes, 'quote', ['"']], + ["'", ValidationErrorType.Quotes, 'quote', ['"']], + ['"', ValidationErrorType.Quotes, 'quote', ["'"]], + ["'", ValidationErrorType.Quotes, 'quote', ['"']], ['“', ValidationErrorType.Quotes, 'quote', ['"']], - ['‘', ValidationErrorType.Quotes, 'quote', ['\'']], + ['‘', ValidationErrorType.Quotes, 'quote', ["'"]], ['“', ValidationErrorType.Quotes, 'quote', ['"']], ['”', ValidationErrorType.Quotes, 'quote', ['"']], - ['’', ValidationErrorType.Quotes, 'quote', ['\'']], + ['’', ValidationErrorType.Quotes, 'quote', ["'"]], ['”', ValidationErrorType.Quotes, 'quote', ['"']], ['‘', ValidationErrorType.Quotes, 'quote', ['"']], - ['“', ValidationErrorType.Quotes, 'quote', ['\'']], + ['“', ValidationErrorType.Quotes, 'quote', ["'"]], ['‘', ValidationErrorType.Quotes, 'quote', ['"']], ['’', ValidationErrorType.Quotes, 'quote', ['"']], - ['”', ValidationErrorType.Quotes, 'quote', ['\'']], + ['”', ValidationErrorType.Quotes, 'quote', ["'"]], ['’', ValidationErrorType.Quotes, 'quote', ['"']], ]); }) diff --git a/packages/starlight-spell-checker/tests/quotes.throwError.smartConfig.modeStraight.test.ts b/packages/starlight-spell-checker/tests/quotes.throwError.smartConfig.modeStraight.test.ts index f0bd50b..4649b87 100644 --- a/packages/starlight-spell-checker/tests/quotes.throwError.smartConfig.modeStraight.test.ts +++ b/packages/starlight-spell-checker/tests/quotes.throwError.smartConfig.modeStraight.test.ts @@ -32,8 +32,8 @@ test('does not build with quotes throw error smart config mode straight invalid ['«', ValidationErrorType.Quotes, 'quote', ["'"]], ['»', ValidationErrorType.Quotes, 'quote', ["'"]], ['›', ValidationErrorType.Quotes, 'quote', ['"']], - ['»', ValidationErrorType.Quotes, 'quote', ["'"]], - ['›', ValidationErrorType.Quotes, 'quote', ["'"]], + ['»', ValidationErrorType.Quotes, 'quote', ['"']], + ['›', ValidationErrorType.Quotes, 'quote', ['"']], ['‹', ValidationErrorType.Quotes, 'quote', ['"']], ['«', ValidationErrorType.Quotes, 'quote', ["'"]], ["'", ValidationErrorType.Quotes, 'quote', ['"']], diff --git a/packages/starlight-spell-checker/tests/quotes.throwError.smartConfig.test.ts b/packages/starlight-spell-checker/tests/quotes.throwError.smartConfig.test.ts index e97d040..2565014 100644 --- a/packages/starlight-spell-checker/tests/quotes.throwError.smartConfig.test.ts +++ b/packages/starlight-spell-checker/tests/quotes.throwError.smartConfig.test.ts @@ -20,34 +20,34 @@ test('does not build with quotes throw error smart config invalid English conten expectValidationErrors(output, '/', [ ['"', ValidationErrorType.Quotes, 'quote', ['«']], - ['\'', ValidationErrorType.Quotes, 'quote', ['‹']], - ['\'', ValidationErrorType.Quotes, 'quote', ['›']], - ['\'', ValidationErrorType.Quotes, 'apostrophe', ['’']], + ["'", ValidationErrorType.Quotes, 'quote', ['‹']], + ["'", ValidationErrorType.Quotes, 'quote', ['›']], + ["'", ValidationErrorType.Quotes, 'apostrophe', ['’']], ['"', ValidationErrorType.Quotes, 'quote', ['»']], - ['\'', ValidationErrorType.Quotes, 'quote', ['«']], + ["'", ValidationErrorType.Quotes, 'quote', ['«']], ['"', ValidationErrorType.Quotes, 'quote', ['‹']], ['"', ValidationErrorType.Quotes, 'quote', ['›']], ['"', ValidationErrorType.Quotes, 'quote', ['‹']], - ['\'', ValidationErrorType.Quotes, 'quote', ['«']], + ["'", ValidationErrorType.Quotes, 'quote', ['«']], ['‹', ValidationErrorType.Quotes, 'quote', ['«']], ['«', ValidationErrorType.Quotes, 'quote', ['‹']], ['»', ValidationErrorType.Quotes, 'quote', ['›']], ['›', ValidationErrorType.Quotes, 'quote', ['»']], - ['»', ValidationErrorType.Quotes, 'quote', ['›']], + ['›', ValidationErrorType.Quotes, 'quote', ['»']], ['‹', ValidationErrorType.Quotes, 'quote', ['«']], ['«', ValidationErrorType.Quotes, 'quote', ['‹']], ['"', ValidationErrorType.Quotes, 'quote', ['«']], - ['\'', ValidationErrorType.Quotes, 'quote', ['‹']], + ["'", ValidationErrorType.Quotes, 'quote', ['‹']], ['"', ValidationErrorType.Quotes, 'quote', ['«']], ['"', ValidationErrorType.Quotes, 'quote', ['»']], - ['\'', ValidationErrorType.Quotes, 'quote', ['›']], + ["'", ValidationErrorType.Quotes, 'quote', ['›']], ['"', ValidationErrorType.Quotes, 'quote', ['»']], - ['\'', ValidationErrorType.Quotes, 'quote', ['«']], + ["'", ValidationErrorType.Quotes, 'quote', ['«']], ['"', ValidationErrorType.Quotes, 'quote', ['‹']], - ['\'', ValidationErrorType.Quotes, 'quote', ['«']], - ['\'', ValidationErrorType.Quotes, 'quote', ['»']], + ["'", ValidationErrorType.Quotes, 'quote', ['«']], + ["'", ValidationErrorType.Quotes, 'quote', ['»']], ['"', ValidationErrorType.Quotes, 'quote', ['›']], - ['\'', ValidationErrorType.Quotes, 'quote', ['»']], + ["'", ValidationErrorType.Quotes, 'quote', ['»']], ['‹', ValidationErrorType.Quotes, 'quote', ['«']], ['«', ValidationErrorType.Quotes, 'quote', ['‹']], ['‹', ValidationErrorType.Quotes, 'quote', ['«']], diff --git a/packages/starlight-spell-checker/tests/quotes.throwError.smartStraightConfig.test.ts b/packages/starlight-spell-checker/tests/quotes.throwError.smartStraightConfig.test.ts index 956a874..983fbfa 100644 --- a/packages/starlight-spell-checker/tests/quotes.throwError.smartStraightConfig.test.ts +++ b/packages/starlight-spell-checker/tests/quotes.throwError.smartStraightConfig.test.ts @@ -50,7 +50,7 @@ test('does not build with quotes throw error smart straight config invalid Engli ['»', ValidationErrorType.Quotes, 'quote', ['›']], ["'", ValidationErrorType.Quotes, 'apostrophe', ['’']], ['›', ValidationErrorType.Quotes, 'quote', ['»']], - ['»', ValidationErrorType.Quotes, 'quote', ['›']], + ['›', ValidationErrorType.Quotes, 'quote', ['»']], ['‹', ValidationErrorType.Quotes, 'quote', ['«']], ["'", ValidationErrorType.Quotes, 'apostrophe', ['’']], ['«', ValidationErrorType.Quotes, 'quote', ['‹']], diff --git a/packages/starlight-spell-checker/tests/quotes.throwError.straightConfig.modeStraight.test.ts b/packages/starlight-spell-checker/tests/quotes.throwError.straightConfig.modeStraight.test.ts index dbc24c9..f8f2045 100644 --- a/packages/starlight-spell-checker/tests/quotes.throwError.straightConfig.modeStraight.test.ts +++ b/packages/starlight-spell-checker/tests/quotes.throwError.straightConfig.modeStraight.test.ts @@ -33,7 +33,7 @@ test('does not build with quotes throw error straight config mode straight inval ['”', ValidationErrorType.Quotes, 'quote', ['"']], ['”', ValidationErrorType.Quotes, 'quote', ["'"]], ['’', ValidationErrorType.Quotes, 'apostrophe', ["'"]], - ['”', ValidationErrorType.Quotes, 'quote', ['"']], + ['”', ValidationErrorType.Quotes, 'quote', ["'"]], ['’', ValidationErrorType.Quotes, 'quote', ["'"]], ['‘', ValidationErrorType.Quotes, 'quote', ['"']], ['‘', ValidationErrorType.Quotes, 'quote', ["'"]], diff --git a/packages/starlight-spell-checker/tests/quotes.throwError.straightConfig.test.ts b/packages/starlight-spell-checker/tests/quotes.throwError.straightConfig.test.ts index ecea6b1..21ec5b3 100644 --- a/packages/starlight-spell-checker/tests/quotes.throwError.straightConfig.test.ts +++ b/packages/starlight-spell-checker/tests/quotes.throwError.straightConfig.test.ts @@ -16,38 +16,37 @@ test('does not build with quotes throw error straight config invalid English con expect(status).toBe('error') - expectValidationErrorCount(output, 35, 1) + expectValidationErrorCount(output, 34, 1) expectValidationErrors(output, '/', [ ['"', ValidationErrorType.Quotes, 'quote', ['“']], - ['\'', ValidationErrorType.Quotes, 'quote', ['‘']], - ['\'', ValidationErrorType.Quotes, 'quote', ['’']], - ['\'', ValidationErrorType.Quotes, 'apostrophe', ['’']], + ["'", ValidationErrorType.Quotes, 'quote', ['‘']], + ["'", ValidationErrorType.Quotes, 'quote', ['’']], + ["'", ValidationErrorType.Quotes, 'apostrophe', ['’']], ['"', ValidationErrorType.Quotes, 'quote', ['”']], - ['\'', ValidationErrorType.Quotes, 'quote', ['“']], + ["'", ValidationErrorType.Quotes, 'quote', ['“']], ['"', ValidationErrorType.Quotes, 'quote', ['‘']], ['"', ValidationErrorType.Quotes, 'quote', ['’']], ['"', ValidationErrorType.Quotes, 'quote', ['‘']], - ['\'', ValidationErrorType.Quotes, 'quote', ['“']], + ["'", ValidationErrorType.Quotes, 'quote', ['“']], ['‘', ValidationErrorType.Quotes, 'quote', ['“']], ['“', ValidationErrorType.Quotes, 'quote', ['‘']], ['”', ValidationErrorType.Quotes, 'quote', ['’']], - ['”', ValidationErrorType.Quotes, 'quote', ['’']], ['’', ValidationErrorType.Quotes, 'quote', ['“']], ['‘', ValidationErrorType.Quotes, 'quote', ['“']], ['“', ValidationErrorType.Quotes, 'quote', ['‘']], ['"', ValidationErrorType.Quotes, 'quote', ['“']], - ['\'', ValidationErrorType.Quotes, 'quote', ['‘']], + ["'", ValidationErrorType.Quotes, 'quote', ['‘']], ['"', ValidationErrorType.Quotes, 'quote', ['“']], ['"', ValidationErrorType.Quotes, 'quote', ['”']], - ['\'', ValidationErrorType.Quotes, 'quote', ['’']], + ["'", ValidationErrorType.Quotes, 'quote', ['’']], ['"', ValidationErrorType.Quotes, 'quote', ['”']], - ['\'', ValidationErrorType.Quotes, 'quote', ['“']], + ["'", ValidationErrorType.Quotes, 'quote', ['“']], ['"', ValidationErrorType.Quotes, 'quote', ['‘']], - ['\'', ValidationErrorType.Quotes, 'quote', ['“']], - ['\'', ValidationErrorType.Quotes, 'quote', ['”']], + ["'", ValidationErrorType.Quotes, 'quote', ['“']], + ["'", ValidationErrorType.Quotes, 'quote', ['”']], ['"', ValidationErrorType.Quotes, 'quote', ['’']], - ['\'', ValidationErrorType.Quotes, 'quote', ['”']], + ["'", ValidationErrorType.Quotes, 'quote', ['”']], ['‘', ValidationErrorType.Quotes, 'quote', ['“']], ['“', ValidationErrorType.Quotes, 'quote', ['‘']], ['‘', ValidationErrorType.Quotes, 'quote', ['“']], diff --git a/packages/starlight-spell-checker/tests/quotes.throwError.test.ts b/packages/starlight-spell-checker/tests/quotes.throwError.test.ts index 0fb0ea1..de287a9 100644 --- a/packages/starlight-spell-checker/tests/quotes.throwError.test.ts +++ b/packages/starlight-spell-checker/tests/quotes.throwError.test.ts @@ -16,7 +16,7 @@ test('does not build with quotes throw error invalid English content', async () expect(status).toBe('error') - expectValidationErrorCount(output, 35, 1) + expectValidationErrorCount(output, 34, 1) expectValidationErrors(output, '/', [ ['"', ValidationErrorType.Quotes, 'quote', ['“']], @@ -32,7 +32,6 @@ test('does not build with quotes throw error invalid English content', async () ['‘', ValidationErrorType.Quotes, 'quote', ['“']], ['“', ValidationErrorType.Quotes, 'quote', ['‘']], ['”', ValidationErrorType.Quotes, 'quote', ['’']], - ['”', ValidationErrorType.Quotes, 'quote', ['’']], ['’', ValidationErrorType.Quotes, 'quote', ['“']], ['‘', ValidationErrorType.Quotes, 'quote', ['“']], ['“', ValidationErrorType.Quotes, 'quote', ['‘']],