diff --git a/_tools/docs_lint_plugin.ts b/_tools/docs_lint_plugin.ts new file mode 100644 index 000000000000..1952b4abdbb0 --- /dev/null +++ b/_tools/docs_lint_plugin.ts @@ -0,0 +1,32 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// @ts-nocheck Deno.lint namespace does not pass type checking in Deno 1.x + +function isInternalFile(filename: string): boolean { + return filename.split(/[\\/]+/).some((part) => part.startsWith("_")); +} + +export default { + name: "deno-std-docs", + rules: { + "exported-symbol-documented": { + create(context) { + return { + ExportNamedDeclaration(node) { + if (isInternalFile(context.filename)) return; + const comments = context.sourceCode.getCommentsBefore(node); + const hasDocComment = comments.some((comment) => + comment.type === "Block" && comment.value.startsWith("*") + ); + if (!hasDocComment) { + context.report({ + node, + message: "Exported symbol is missing a documentation comment.", + hint: "Add a documentation comment above the symbol.", + }); + } + }, + }; + }, + }, + }, +} satisfies Deno.lint.Plugin; diff --git a/_tools/docs_lint_plugin_test.ts b/_tools/docs_lint_plugin_test.ts new file mode 100644 index 000000000000..86154bac2f06 --- /dev/null +++ b/_tools/docs_lint_plugin_test.ts @@ -0,0 +1,50 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// @ts-nocheck Deno.lint namespace does not pass type checking in Deno 1.x + +import docsLintPlugin from "./docs_lint_plugin.ts"; +import { assertEquals } from "@std/assert/equals"; + +Deno.test("deno-std-docs/exported-symbol-documented", { + ignore: !Deno.version.deno.startsWith("2"), +}, () => { + // Good + const diagnostics1 = Deno.lint.runPlugin( + docsLintPlugin, + "module.ts", + `/** This is a documented symbol */ + export function documented() {} `, + ); + assertEquals(diagnostics1, []); + + // Good (internal file) + const diagnostics2 = Deno.lint.runPlugin( + docsLintPlugin, + "_module.ts", + `export function undocumented() {}`, + ); + assertEquals(diagnostics2, []); + + // Good (file within internal folder) + const diagnostics3 = Deno.lint.runPlugin( + docsLintPlugin, + "_internal/module.ts", + `export function undocumented() {}`, + ); + assertEquals(diagnostics3, []); + + // Bad + const diagnostics4 = Deno.lint.runPlugin( + docsLintPlugin, + "module.ts", + `export function undocumented() {}`, + ); + assertEquals(diagnostics4, [ + { + id: "deno-std-docs/exported-symbol-documented", + message: "Exported symbol is missing a documentation comment.", + range: [0, 33], + fix: [], + hint: "Add a documentation comment above the symbol.", + }, + ]); +}); diff --git a/bytes/concat.ts b/bytes/concat.ts index 553f4d147ef0..f42a50fbc93c 100644 --- a/bytes/concat.ts +++ b/bytes/concat.ts @@ -2,6 +2,7 @@ // This module is browser compatible. import type { Uint8Array_ } from "./_types.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { Uint8Array_ }; /** diff --git a/bytes/repeat.ts b/bytes/repeat.ts index b15d45af59f7..718f00ed23ff 100644 --- a/bytes/repeat.ts +++ b/bytes/repeat.ts @@ -2,6 +2,7 @@ // This module is browser compatible. import { copy } from "./copy.ts"; import type { Uint8Array_ } from "./_types.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { Uint8Array_ }; /** diff --git a/cache/lru_cache.ts b/cache/lru_cache.ts index 1a3eee68c460..10f9445beeb7 100644 --- a/cache/lru_cache.ts +++ b/cache/lru_cache.ts @@ -2,6 +2,7 @@ // This module is browser compatible. import type { MemoizationCache } from "./memoize.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { MemoizationCache }; /** diff --git a/cbor/sequence_decoder_stream.ts b/cbor/sequence_decoder_stream.ts index 50a7ea41bb9f..a0094cbb90c7 100644 --- a/cbor/sequence_decoder_stream.ts +++ b/cbor/sequence_decoder_stream.ts @@ -9,6 +9,7 @@ import { CborTextDecodedStream } from "./_text_decoded_stream.ts"; import { CborTag } from "./tag.ts"; import type { CborMapStreamOutput, CborStreamOutput } from "./types.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export { CborArrayDecodedStream, CborByteDecodedStream, diff --git a/cli/unstable_progress_bar_stream.ts b/cli/unstable_progress_bar_stream.ts index 49af551ab4c5..732a2448511e 100644 --- a/cli/unstable_progress_bar_stream.ts +++ b/cli/unstable_progress_bar_stream.ts @@ -7,6 +7,7 @@ import { import type { Uint8Array_ } from "./_types.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { Uint8Array_ }; /** diff --git a/csv/parse.ts b/csv/parse.ts index 28d8ea380c40..85d2b3901a5b 100644 --- a/csv/parse.ts +++ b/csv/parse.ts @@ -11,6 +11,7 @@ import { } from "./_io.ts"; import { codePointLength } from "./_shared.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { ParseResult, RecordWithColumn }; const BYTE_ORDER_MARK = "\ufeff"; diff --git a/deno.json b/deno.json index b5a7a6221505..5dbfcd4aa656 100644 --- a/deno.json +++ b/deno.json @@ -51,7 +51,7 @@ "no-console" ] }, - "plugins": ["./_tools/lint_plugin.ts"] + "plugins": ["./_tools/lint_plugin.ts", "./_tools/docs_lint_plugin.ts"] }, "workspace": [ "./assert", diff --git a/encoding/ascii85.ts b/encoding/ascii85.ts index 043ac92f670f..a5d0c0d708e3 100644 --- a/encoding/ascii85.ts +++ b/encoding/ascii85.ts @@ -2,6 +2,7 @@ // This module is browser compatible. import type { Uint8Array_ } from "./_types.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { Uint8Array_ }; /** diff --git a/expect/expect.ts b/expect/expect.ts index cd9d24a0ff2c..1092e320f77c 100644 --- a/expect/expect.ts +++ b/expect/expect.ts @@ -64,6 +64,7 @@ import { isPromiseLike } from "./_utils.ts"; import * as asymmetricMatchers from "./_asymmetric_matchers.ts"; import type { SnapshotPlugin, Tester } from "./_types.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { AnyConstructor, Async, Expected } from "./_types.ts"; const matchers: Record = { diff --git a/front_matter/any.ts b/front_matter/any.ts index e0f573bf0fdf..ce84df08cb1d 100644 --- a/front_matter/any.ts +++ b/front_matter/any.ts @@ -7,6 +7,7 @@ import { extract as extractJson } from "./json.ts"; import type { Extract } from "./types.ts"; import { RECOGNIZE_REGEXP_MAP } from "./_formats.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { Extract }; /** diff --git a/front_matter/json.ts b/front_matter/json.ts index f8126828d99b..2f2ae9fe0e38 100644 --- a/front_matter/json.ts +++ b/front_matter/json.ts @@ -5,6 +5,7 @@ import { extractFrontMatter } from "./_shared.ts"; import { EXTRACT_JSON_REGEXP } from "./_formats.ts"; import type { Extract } from "./types.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { Extract }; /** diff --git a/front_matter/test.ts b/front_matter/test.ts index aa0351809840..a66f28b926ae 100644 --- a/front_matter/test.ts +++ b/front_matter/test.ts @@ -2,6 +2,7 @@ import { EXTRACT_REGEXP_MAP, type Format } from "./_formats.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { Format }; /** diff --git a/front_matter/toml.ts b/front_matter/toml.ts index 65eca7526568..f2636e367c39 100644 --- a/front_matter/toml.ts +++ b/front_matter/toml.ts @@ -6,6 +6,7 @@ import { parse } from "@std/toml/parse"; import type { Extract } from "./types.ts"; import { EXTRACT_TOML_REGEXP } from "./_formats.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { Extract }; /** diff --git a/front_matter/unstable_yaml.ts b/front_matter/unstable_yaml.ts index aac8c539443a..b0c979a5e746 100644 --- a/front_matter/unstable_yaml.ts +++ b/front_matter/unstable_yaml.ts @@ -6,6 +6,7 @@ import { parse, type ParseOptions } from "@std/yaml/parse"; import type { Extract } from "./types.ts"; import { EXTRACT_YAML_REGEXP } from "./_formats.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { Extract }; /** diff --git a/front_matter/yaml.ts b/front_matter/yaml.ts index f1a74c951a2e..f903ca0073df 100644 --- a/front_matter/yaml.ts +++ b/front_matter/yaml.ts @@ -6,6 +6,7 @@ import { parse } from "@std/yaml/parse"; import type { Extract } from "./types.ts"; import { EXTRACT_YAML_REGEXP } from "./_formats.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { Extract }; /** diff --git a/fs/expand_glob.ts b/fs/expand_glob.ts index ab0c93cf7b09..62699562f14b 100644 --- a/fs/expand_glob.ts +++ b/fs/expand_glob.ts @@ -14,6 +14,7 @@ import { } from "./_create_walk_entry.ts"; import { isWindows } from "@std/internal/os"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { GlobOptions, WalkEntry }; /** Options for {@linkcode expandGlob} and {@linkcode expandGlobSync}. */ diff --git a/fs/unstable_errors.js b/fs/unstable_errors.js index 0d45072cf904..71be92102ba2 100644 --- a/fs/unstable_errors.js +++ b/fs/unstable_errors.js @@ -1,3 +1,4 @@ +// deno-lint-ignore-file deno-std-docs/exported-symbol-documented // Copyright 2018-2025 the Deno authors. MIT license. // @ts-self-types="./unstable_errors.d.ts" diff --git a/http/unstable_file_server.ts b/http/unstable_file_server.ts index 3dbfcf3e33c0..f469c80c3cc3 100644 --- a/http/unstable_file_server.ts +++ b/http/unstable_file_server.ts @@ -4,6 +4,7 @@ import { serveDir as stableServeDir, type ServeDirOptions as StableServeDirOptions, } from "./file_server.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export { serveFile, type ServeFileOptions } from "./file_server.ts"; /** diff --git a/io/iterate_reader.ts b/io/iterate_reader.ts index 5d24c6a7c983..823d881d4a6c 100644 --- a/io/iterate_reader.ts +++ b/io/iterate_reader.ts @@ -4,6 +4,7 @@ import { DEFAULT_BUFFER_SIZE } from "./_constants.ts"; import type { Reader, ReaderSync } from "./types.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { Reader, ReaderSync }; /** diff --git a/jsonc/parse.ts b/jsonc/parse.ts index 4ed32cd0c8d0..e80599dbb5b8 100644 --- a/jsonc/parse.ts +++ b/jsonc/parse.ts @@ -2,6 +2,7 @@ // This module is browser compatible. import type { JsonValue } from "@std/json/types"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { JsonValue }; /** diff --git a/msgpack/encode.ts b/msgpack/encode.ts index 2d3c2f834104..f11f112deb1a 100644 --- a/msgpack/encode.ts +++ b/msgpack/encode.ts @@ -3,6 +3,7 @@ import { concat } from "@std/bytes/concat"; import type { Uint8Array_ } from "./_types.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { Uint8Array_ }; /** diff --git a/path/glob_to_regexp.ts b/path/glob_to_regexp.ts index 31827b83f81a..e3050ffec8a5 100644 --- a/path/glob_to_regexp.ts +++ b/path/glob_to_regexp.ts @@ -9,6 +9,7 @@ import { globToRegExp as windowsGlobToRegExp, } from "./windows/glob_to_regexp.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { GlobOptions }; /** diff --git a/path/join_globs.ts b/path/join_globs.ts index 64857abf4665..2b9c485d2ad9 100644 --- a/path/join_globs.ts +++ b/path/join_globs.ts @@ -6,6 +6,7 @@ import { isWindows } from "@std/internal/os"; import { joinGlobs as posixJoinGlobs } from "./posix/join_globs.ts"; import { joinGlobs as windowsJoinGlobs } from "./windows/join_globs.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { GlobOptions }; /** diff --git a/path/normalize_glob.ts b/path/normalize_glob.ts index 52c90d552f95..e656fee45de6 100644 --- a/path/normalize_glob.ts +++ b/path/normalize_glob.ts @@ -8,6 +8,7 @@ import { normalizeGlob as windowsNormalizeGlob, } from "./windows/normalize_glob.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { GlobOptions }; /** diff --git a/path/parse.ts b/path/parse.ts index eecef589d110..4aa755731c42 100644 --- a/path/parse.ts +++ b/path/parse.ts @@ -6,6 +6,7 @@ import type { ParsedPath } from "./types.ts"; import { parse as posixParse } from "./posix/parse.ts"; import { parse as windowsParse } from "./windows/parse.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { ParsedPath } from "./types.ts"; /** diff --git a/path/posix/glob_to_regexp.ts b/path/posix/glob_to_regexp.ts index b4e18b4a4ac1..ca3873d2494a 100644 --- a/path/posix/glob_to_regexp.ts +++ b/path/posix/glob_to_regexp.ts @@ -7,6 +7,7 @@ import { type GlobOptions, } from "../_common/glob_to_reg_exp.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { GlobOptions }; const constants: GlobConstants = { diff --git a/path/posix/is_glob.ts b/path/posix/is_glob.ts index 91eb2e03e84f..bec3b03b98d4 100644 --- a/path/posix/is_glob.ts +++ b/path/posix/is_glob.ts @@ -1,4 +1,5 @@ // Copyright 2018-2025 the Deno authors. MIT license. // This module is browser compatible. +// deno-lint-ignore deno-std-docs/exported-symbol-documented export { isGlob } from "../is_glob.ts"; diff --git a/path/posix/join_globs.ts b/path/posix/join_globs.ts index 166ed4bd5f08..86c0037f5ea8 100644 --- a/path/posix/join_globs.ts +++ b/path/posix/join_globs.ts @@ -6,6 +6,7 @@ import { join } from "./join.ts"; import { SEPARATOR } from "./constants.ts"; import { normalizeGlob } from "./normalize_glob.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { GlobOptions }; /** diff --git a/path/posix/normalize_glob.ts b/path/posix/normalize_glob.ts index 7a9195e8bf89..3072ad3c93e1 100644 --- a/path/posix/normalize_glob.ts +++ b/path/posix/normalize_glob.ts @@ -5,6 +5,7 @@ import type { GlobOptions } from "../_common/glob_to_reg_exp.ts"; import { normalize } from "./normalize.ts"; import { SEPARATOR_PATTERN } from "./constants.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { GlobOptions }; /** diff --git a/path/posix/parse.ts b/path/posix/parse.ts index 75596f83a5c3..aeface4895f9 100644 --- a/path/posix/parse.ts +++ b/path/posix/parse.ts @@ -7,6 +7,7 @@ import { stripTrailingSeparators } from "../_common/strip_trailing_separators.ts import { assertPath } from "../_common/assert_path.ts"; import { isPosixPathSeparator } from "./_util.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { ParsedPath } from "../types.ts"; /** diff --git a/path/windows/is_glob.ts b/path/windows/is_glob.ts index 91eb2e03e84f..bec3b03b98d4 100644 --- a/path/windows/is_glob.ts +++ b/path/windows/is_glob.ts @@ -1,4 +1,5 @@ // Copyright 2018-2025 the Deno authors. MIT license. // This module is browser compatible. +// deno-lint-ignore deno-std-docs/exported-symbol-documented export { isGlob } from "../is_glob.ts"; diff --git a/path/windows/join_globs.ts b/path/windows/join_globs.ts index 0bcb21d52089..2e936ed185c7 100644 --- a/path/windows/join_globs.ts +++ b/path/windows/join_globs.ts @@ -6,6 +6,7 @@ import { join } from "./join.ts"; import { SEPARATOR } from "./constants.ts"; import { normalizeGlob } from "./normalize_glob.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { GlobOptions }; /** diff --git a/path/windows/normalize_glob.ts b/path/windows/normalize_glob.ts index 630d91d6d60f..4ecf268c403e 100644 --- a/path/windows/normalize_glob.ts +++ b/path/windows/normalize_glob.ts @@ -5,6 +5,7 @@ import type { GlobOptions } from "../_common/glob_to_reg_exp.ts"; import { normalize } from "./normalize.ts"; import { SEPARATOR_PATTERN } from "./constants.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { GlobOptions }; /** diff --git a/path/windows/parse.ts b/path/windows/parse.ts index e4040678ab10..510ae8bcb85b 100644 --- a/path/windows/parse.ts +++ b/path/windows/parse.ts @@ -6,6 +6,7 @@ import type { ParsedPath } from "../types.ts"; import { assertPath } from "../_common/assert_path.ts"; import { isPathSeparator, isWindowsDeviceRoot } from "./_util.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { ParsedPath } from "../types.ts"; /** diff --git a/random/between.ts b/random/between.ts index 81c9c7af2585..7c3d3d6ad7b1 100644 --- a/random/between.ts +++ b/random/between.ts @@ -1,6 +1,7 @@ // Copyright 2018-2025 the Deno authors. MIT license. // This module is browser compatible. import type { Prng, RandomOptions } from "./_types.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { Prng, RandomOptions }; /** diff --git a/random/get_random_values_seeded.ts b/random/get_random_values_seeded.ts index 09ff3c7ece4c..2243c0791c90 100644 --- a/random/get_random_values_seeded.ts +++ b/random/get_random_values_seeded.ts @@ -2,6 +2,7 @@ // This module is browser compatible. import { Pcg32 } from "./_pcg32.ts"; import type { RandomValueGenerator } from "./_types.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { IntegerTypedArray, RandomValueGenerator } from "./_types.ts"; /** diff --git a/random/integer_between.ts b/random/integer_between.ts index 7c9d5ecd607a..ad23b5813e65 100644 --- a/random/integer_between.ts +++ b/random/integer_between.ts @@ -2,6 +2,7 @@ // This module is browser compatible. import type { Prng, RandomOptions } from "./_types.ts"; import { randomBetween } from "./between.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { Prng, RandomOptions }; /** diff --git a/random/sample.ts b/random/sample.ts index 6c5c83d4a624..a3828ddb21fd 100644 --- a/random/sample.ts +++ b/random/sample.ts @@ -2,6 +2,7 @@ // This module is browser compatible. import type { Prng, RandomOptions } from "./_types.ts"; import { randomIntegerBetween } from "./integer_between.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { Prng, RandomOptions }; /** diff --git a/random/seeded.ts b/random/seeded.ts index 469e3437fdd6..66a8c95284e8 100644 --- a/random/seeded.ts +++ b/random/seeded.ts @@ -2,6 +2,7 @@ // This module is browser compatible. import { Pcg32 } from "./_pcg32.ts"; import type { Prng } from "./_types.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { Prng } from "./_types.ts"; /** diff --git a/random/shuffle.ts b/random/shuffle.ts index d4a1fffb3766..4df01fa55929 100644 --- a/random/shuffle.ts +++ b/random/shuffle.ts @@ -2,6 +2,7 @@ // This module is browser compatible. import type { Prng, RandomOptions } from "./_types.ts"; import { randomIntegerBetween } from "./integer_between.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { Prng, RandomOptions }; /** diff --git a/tar/tar_stream.ts b/tar/tar_stream.ts index 0f236f3a0051..8b770a16116d 100644 --- a/tar/tar_stream.ts +++ b/tar/tar_stream.ts @@ -1,6 +1,7 @@ // Copyright 2018-2025 the Deno authors. MIT license. import type { Uint8Array_ } from "./_types.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { Uint8Array_ }; import { toByteStream } from "@std/streams/unstable-to-byte-stream"; diff --git a/text/unstable_to_sentence_case.ts b/text/unstable_to_sentence_case.ts index 4a5f1af829f9..a8a21015c849 100644 --- a/text/unstable_to_sentence_case.ts +++ b/text/unstable_to_sentence_case.ts @@ -2,6 +2,7 @@ // This module is browser compatible. import { resolveOptions, titleCaseSegment } from "./_title_case_util.ts"; import type { BaseTitleCaseOptions } from "./_title_case_util.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { BaseTitleCaseOptions }; /** Options for {@linkcode toSentenceCase} */ diff --git a/text/unstable_to_title_case.ts b/text/unstable_to_title_case.ts index e5a8a3167667..22732c523785 100644 --- a/text/unstable_to_title_case.ts +++ b/text/unstable_to_title_case.ts @@ -2,7 +2,9 @@ // This module is browser compatible. import { resolveOptions, titleCaseSegment } from "./_title_case_util.ts"; import type { BaseTitleCaseOptions } from "./_title_case_util.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { BaseTitleCaseOptions }; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { TrailingCase } from "./_title_case_util.ts"; /** diff --git a/yaml/parse.ts b/yaml/parse.ts index 9224275a9d5e..335e57194484 100644 --- a/yaml/parse.ts +++ b/yaml/parse.ts @@ -8,6 +8,7 @@ import { isEOL } from "./_chars.ts"; import { LoaderState } from "./_loader_state.ts"; import { SCHEMA_MAP, type SchemaType } from "./_schema.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { SchemaType }; /** Options for {@linkcode parse}. */ diff --git a/yaml/stringify.ts b/yaml/stringify.ts index adca5d859f88..25cdcd2857c8 100644 --- a/yaml/stringify.ts +++ b/yaml/stringify.ts @@ -8,6 +8,7 @@ import { DumperState } from "./_dumper_state.ts"; import { SCHEMA_MAP, type SchemaType } from "./_schema.ts"; import type { StyleVariant } from "./_type.ts"; +// deno-lint-ignore deno-std-docs/exported-symbol-documented export type { SchemaType, StyleVariant }; /** Options for {@linkcode stringify}. */