Fediversity/website/node_modules/yaml/dist/options.d.ts

339 lines
11 KiB
TypeScript
Raw Normal View History

2024-03-26 16:28:28 +01:00
import type { Reviver } from './doc/applyReviver.js';
import type { Directives } from './doc/directives.js';
import type { LogLevelId } from './log.js';
import type { ParsedNode } from './nodes/Node.js';
import type { Pair } from './nodes/Pair.js';
import type { Scalar } from './nodes/Scalar.js';
import type { LineCounter } from './parse/line-counter.js';
import type { Schema } from './schema/Schema.js';
import type { Tags } from './schema/tags.js';
import type { CollectionTag, ScalarTag } from './schema/types.js';
export type ParseOptions = {
/**
* Whether integers should be parsed into BigInt rather than number values.
*
* Default: `false`
*
* https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/BigInt
*/
intAsBigInt?: boolean;
/**
* Include a `srcToken` value on each parsed `Node`, containing the CST token
* that was composed into this node.
*
* Default: `false`
*/
keepSourceTokens?: boolean;
/**
* If set, newlines will be tracked, to allow for `lineCounter.linePos(offset)`
* to provide the `{ line, col }` positions within the input.
*/
lineCounter?: LineCounter;
/**
* Include line/col position & node type directly in parse errors.
*
* Default: `true`
*/
prettyErrors?: boolean;
/**
* Detect and report errors that are required by the YAML 1.2 spec,
* but are caused by unambiguous content.
*
* Default: `true`
*/
strict?: boolean;
/**
* YAML requires map keys to be unique. By default, this is checked by
* comparing scalar values with `===`; deep equality is not checked for
* aliases or collections. If merge keys are enabled by the schema,
* multiple `<<` keys are allowed.
*
* Set `false` to disable, or provide your own comparator function to
* customise. The comparator will be passed two `ParsedNode` values, and
* is expected to return a `boolean` indicating their equality.
*
* Default: `true`
*/
uniqueKeys?: boolean | ((a: ParsedNode, b: ParsedNode) => boolean);
};
export type DocumentOptions = {
/**
* @internal
* Used internally by Composer. If set and includes an explicit version,
* that overrides the `version` option.
*/
_directives?: Directives;
/**
* Control the logging level during parsing
*
* Default: `'warn'`
*/
logLevel?: LogLevelId;
/**
* The YAML version used by documents without a `%YAML` directive.
*
* Default: `"1.2"`
*/
version?: '1.1' | '1.2' | 'next';
};
export type SchemaOptions = {
/**
* When parsing, warn about compatibility issues with the given schema.
* When stringifying, use scalar styles that are parsed correctly
* by the `compat` schema as well as the actual schema.
*
* Default: `null`
*/
compat?: string | Tags | null;
/**
* Array of additional tags to include in the schema, or a function that may
* modify the schema's base tag array.
*/
customTags?: Tags | ((tags: Tags) => Tags) | null;
/**
* Enable support for `<<` merge keys.
*
* Default: `false` for YAML 1.2, `true` for earlier versions
*/
merge?: boolean;
/**
* When using the `'core'` schema, support parsing values with these
* explicit YAML 1.1 tags:
*
* `!!binary`, `!!omap`, `!!pairs`, `!!set`, `!!timestamp`.
*
* Default `true`
*/
resolveKnownTags?: boolean;
/**
* The base schema to use.
*
* The core library has built-in support for the following:
* - `'failsafe'`: A minimal schema that parses all scalars as strings
* - `'core'`: The YAML 1.2 core schema
* - `'json'`: The YAML 1.2 JSON schema, with minimal rules for JSON compatibility
* - `'yaml-1.1'`: The YAML 1.1 schema
*
* If using another (custom) schema, the `customTags` array needs to
* fully define the schema's tags.
*
* Default: `'core'` for YAML 1.2, `'yaml-1.1'` for earlier versions
*/
schema?: string | Schema;
/**
* When adding to or stringifying a map, sort the entries.
* If `true`, sort by comparing key values with `<`.
* Does not affect item order when parsing.
*
* Default: `false`
*/
sortMapEntries?: boolean | ((a: Pair, b: Pair) => number);
/**
* Override default values for `toString()` options.
*/
toStringDefaults?: ToStringOptions;
};
export type CreateNodeOptions = {
/**
* During node construction, use anchors and aliases to keep strictly equal
* non-null objects as equivalent in YAML.
*
* Default: `true`
*/
aliasDuplicateObjects?: boolean;
/**
* Default prefix for anchors.
*
* Default: `'a'`, resulting in anchors `a1`, `a2`, etc.
*/
anchorPrefix?: string;
/** Force the top-level collection node to use flow style. */
flow?: boolean;
/**
* Keep `undefined` object values when creating mappings, rather than
* discarding them.
*
* Default: `false`
*/
keepUndefined?: boolean | null;
onTagObj?: (tagObj: ScalarTag | CollectionTag) => void;
/**
* Specify the top-level collection type, e.g. `"!!omap"`. Note that this
* requires the corresponding tag to be available in this document's schema.
*/
tag?: string;
};
export type ToJSOptions = {
/**
* Use Map rather than Object to represent mappings.
*
* Default: `false`
*/
mapAsMap?: boolean;
/**
* Prevent exponential entity expansion attacks by limiting data aliasing count;
* set to `-1` to disable checks; `0` disallows all alias nodes.
*
* Default: `100`
*/
maxAliasCount?: number;
/**
* If defined, called with the resolved `value` and reference `count` for
* each anchor in the document.
*/
onAnchor?: (value: unknown, count: number) => void;
/**
* Optional function that may filter or modify the output JS value
*
* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#using_the_reviver_parameter
*/
reviver?: Reviver;
};
export type ToStringOptions = {
/**
* Use block quote styles for scalar values where applicable.
* Set to `false` to disable block quotes completely.
*
* Default: `true`
*/
blockQuote?: boolean | 'folded' | 'literal';
/**
* Enforce `'block'` or `'flow'` style on maps and sequences.
* Empty collections will always be stringified as `{}` or `[]`.
*
* Default: `'any'`, allowing each node to set its style separately
* with its `flow: boolean` (default `false`) property.
*/
collectionStyle?: 'any' | 'block' | 'flow';
/**
* Comment stringifier.
* Output should be valid for the current schema.
*
* By default, empty comment lines are left empty,
* lines consisting of a single space are replaced by `#`,
* and all other lines are prefixed with a `#`.
*/
commentString?: (comment: string) => string;
/**
* The default type of string literal used to stringify implicit key values.
* Output may use other types if required to fully represent the value.
*
* If `null`, the value of `defaultStringType` is used.
*
* Default: `null`
*/
defaultKeyType?: Scalar.Type | null;
/**
* The default type of string literal used to stringify values in general.
* Output may use other types if required to fully represent the value.
*
* Default: `'PLAIN'`
*/
defaultStringType?: Scalar.Type;
/**
* Include directives in the output.
*
* - If `true`, at least the document-start marker `---` is always included.
* This does not force the `%YAML` directive to be included. To do that,
* set `doc.directives.yaml.explicit = true`.
* - If `false`, no directives or marker is ever included. If using the `%TAG`
* directive, you are expected to include it manually in the stream before
* its use.
* - If `null`, directives and marker may be included if required.
*
* Default: `null`
*/
directives?: boolean | null;
/**
* Restrict double-quoted strings to use JSON-compatible syntax.
*
* Default: `false`
*/
doubleQuotedAsJSON?: boolean;
/**
* Minimum length for double-quoted strings to use multiple lines to
* represent the value. Ignored if `doubleQuotedAsJSON` is set.
*
* Default: `40`
*/
doubleQuotedMinMultiLineLength?: number;
/**
* String representation for `false`.
* With the core schema, use `'false'`, `'False'`, or `'FALSE'`.
*
* Default: `'false'`
*/
falseStr?: string;
/**
* When true, a single space of padding will be added inside the delimiters
* of non-empty single-line flow collections.
*
* Default: `true`
*/
flowCollectionPadding?: boolean;
/**
* The number of spaces to use when indenting code.
*
* Default: `2`
*/
indent?: number;
/**
* Whether block sequences should be indented.
*
* Default: `true`
*/
indentSeq?: boolean;
/**
* Maximum line width (set to `0` to disable folding).
*
* This is a soft limit, as only double-quoted semantics allow for inserting
* a line break in the middle of a word, as well as being influenced by the
* `minContentWidth` option.
*
* Default: `80`
*/
lineWidth?: number;
/**
* Minimum line width for highly-indented content (set to `0` to disable).
*
* Default: `20`
*/
minContentWidth?: number;
/**
* String representation for `null`.
* With the core schema, use `'null'`, `'Null'`, `'NULL'`, `'~'`, or an empty
* string `''`.
*
* Default: `'null'`
*/
nullStr?: string;
/**
* Require keys to be scalars and to use implicit rather than explicit notation.
*
* Default: `false`
*/
simpleKeys?: boolean;
/**
* Use 'single quote' rather than "double quote" where applicable.
* Set to `false` to disable single quotes completely.
*
* Default: `null`
*/
singleQuote?: boolean | null;
/**
* String representation for `true`.
* With the core schema, use `'true'`, `'True'`, or `'TRUE'`.
*
* Default: `'true'`
*/
trueStr?: string;
/**
* The anchor used by an alias must be defined before the alias node. As it's
* possible for the document to be modified manually, the order may be
* verified during stringification.
*
* Default: `'true'`
*/
verifyAliasOrder?: boolean;
};