diff --git a/docs/.vitepress/theme/components/NodeKindCatalog.vue b/docs/.vitepress/theme/components/NodeKindCatalog.vue new file mode 100644 index 0000000..ca6422c --- /dev/null +++ b/docs/.vitepress/theme/components/NodeKindCatalog.vue @@ -0,0 +1,226 @@ + + + diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts index 6ea62dd..f6d2c59 100644 --- a/docs/.vitepress/theme/index.ts +++ b/docs/.vitepress/theme/index.ts @@ -5,6 +5,7 @@ import "@fontsource/ibm-plex-mono/400.css" import ExampleGallery from "./components/ExampleGallery.vue" import DocsLayout from "./components/DocsLayout.vue" import IconCatalog from "./components/IconCatalog.vue" +import NodeKindCatalog from "./components/NodeKindCatalog.vue" import ProviderCatalog from "./components/ProviderCatalog.vue" import "./style.css" @@ -14,6 +15,7 @@ export default { enhanceApp({ app }) { app.component("ExampleGallery", ExampleGallery) app.component("IconCatalog", IconCatalog) + app.component("NodeKindCatalog", NodeKindCatalog) app.component("ProviderCatalog", ProviderCatalog) }, } diff --git a/package-lock.json b/package-lock.json index fd05a42..ab3c96c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@fontsource/ibm-plex-mono": "^5.3.0", "@shikijs/core": "4.4.3", "@shikijs/engine-javascript": "4.4.3", - "@stack-sh/engine": "0.8.0", + "@stack-sh/engine": "0.9.0", "@stack-sh/language": "0.1.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", @@ -4869,9 +4869,9 @@ "license": "CC0-1.0" }, "node_modules/@stack-sh/engine": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@stack-sh/engine/-/engine-0.8.0.tgz", - "integrity": "sha512-nGZtxpH8Ca5j+1TW0dmlPQHDRynoUYcq1CaQ65DlyWc+ImmEbWEiRo6OiwXDN1tqaALN2a2TLkFpCSYW+fu/sA==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@stack-sh/engine/-/engine-0.9.0.tgz", + "integrity": "sha512-5Vyjr3PteTwCMjx1oKUoiUYs84i94VlET+lbHDVx8e8ffsj44AAFJ7l5JgMK+O01G5zWOVjJnNzUgWYQ7hlQHw==", "license": "Apache-2.0" }, "node_modules/@stack-sh/language": { diff --git a/package.json b/package.json index dbe8d2f..ea545c6 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "@fontsource/ibm-plex-mono": "^5.3.0", "@shikijs/core": "4.4.3", "@shikijs/engine-javascript": "4.4.3", - "@stack-sh/engine": "0.8.0", + "@stack-sh/engine": "0.9.0", "@stack-sh/language": "0.1.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", diff --git a/scripts/docs-source.json b/scripts/docs-source.json index 9ca8dc3..2675e34 100644 --- a/scripts/docs-source.json +++ b/scripts/docs-source.json @@ -1,5 +1,5 @@ { "repository": "stack-sh/docs", - "revision": "e9847c68865027dd51be9ec18df263d6a9ccbcd1", - "manifestSha256": "c8cd1609ad61b95f5d54d10575ad7715c06ed6c1798067c906e3dfc7282e1d16" + "revision": "16b8ac60219f5051bdb0319048e9b6200d3a614a", + "manifestSha256": "a0e1dc79a73553c6b6cc0bcf7ba8a5b5d134a63eedca3d181e41c1614faa5853" } diff --git a/scripts/validate-docs-output.mjs b/scripts/validate-docs-output.mjs index 9c6d72e..67be50c 100644 --- a/scripts/validate-docs-output.mjs +++ b/scripts/validate-docs-output.mjs @@ -107,6 +107,14 @@ for (const [page, language] of localePages) { } } +for (const locale of ["", "ja/", "zh/", "ko/"]) { + const page = `${locale}language/nodes-and-groups.html` + const html = await readFile(path.join(outputRoot, page), "utf8") + const cards = html.match(/data-node-kind="/g)?.length ?? 0 + + if (cards !== 10) throw new Error(`${page} contains ${cards} node kind cards instead of 10`) +} + for (const locale of ["", "ja/", "zh/", "ko/"]) { const page = `${locale}language/themes-and-icons.html` const html = await readFile(path.join(outputRoot, page), "utf8") diff --git a/scripts/validate-docs.mjs b/scripts/validate-docs.mjs index 96f0c48..086aab7 100644 --- a/scripts/validate-docs.mjs +++ b/scripts/validate-docs.mjs @@ -21,8 +21,8 @@ const providerCatalog = JSON.parse( await readFile(path.join(docsRoot, ".vitepress/theme/data/provider-catalogs.json"), "utf8"), ) -if (packageMetadata.dependencies["@stack-sh/engine"] !== "0.8.0") { - throw new Error("Documentation must use the exact @stack-sh/engine 0.8.0 release") +if (packageMetadata.dependencies["@stack-sh/engine"] !== "0.9.0") { + throw new Error("Documentation must use the exact @stack-sh/engine 0.9.0 release") } const expectedProviderCounts = { aws: 305, gcp: 45, azure: 639, "simple-icons": 62 } @@ -232,6 +232,18 @@ for (const term of requiredTerms) { throw new Error(`English documentation is missing required coverage for ${term}`) } +for (const locale of ["", ...locales]) { + const page = path.join(docsRoot, locale, "language/nodes-and-groups.md") + const source = await readFile(page, "utf8") + const componentLocale = locale || "en" + + if (!source.includes(``)) { + throw new Error( + `${componentLocale}/language/nodes-and-groups.md is missing its node kind gallery`, + ) + } +} + for (const locale of ["", ...locales]) { const page = path.join(docsRoot, locale, "language/themes-and-icons.md") const source = await readFile(page, "utf8") diff --git a/scripts/validate-example-corpus.mjs b/scripts/validate-example-corpus.mjs index ece4389..ebbae7d 100644 --- a/scripts/validate-example-corpus.mjs +++ b/scripts/validate-example-corpus.mjs @@ -66,7 +66,7 @@ for (const example of catalog.examples) { providerIcons.length, `${example.id} ${operation} provider fallback count does not match its source`, ) - assert.equal(result.metadata.engineVersion, "0.8.0") + assert.equal(result.metadata.engineVersion, "0.9.0") assert.deepEqual(result.metadata.languageVersion, { major: 1, minor: 0 }) } @@ -76,5 +76,5 @@ for (const example of catalog.examples) { } console.log( - `Validated ${catalog.examples.length} canonical examples with @stack-sh/engine 0.8.0; no SVG files are generated.`, + `Validated ${catalog.examples.length} canonical examples with @stack-sh/engine 0.9.0; no SVG files are generated.`, )