UNPKG

6.57 kBTypeScriptView Raw
1import type { YAMLError, YAMLWarning } from '../errors.js';
2import { Alias } from '../nodes/Alias.js';
3import { NODE_TYPE } from '../nodes/identity.js';
4import type { Node, NodeType, ParsedNode, Range } from '../nodes/Node.js';
5import { Pair } from '../nodes/Pair.js';
6import type { Scalar } from '../nodes/Scalar.js';
7import type { YAMLMap } from '../nodes/YAMLMap.js';
8import type { YAMLSeq } from '../nodes/YAMLSeq.js';
9import type { CreateNodeOptions, DocumentOptions, ParseOptions, SchemaOptions, ToJSOptions, ToStringOptions } from '../options.js';
10import { Schema } from '../schema/Schema.js';
11import { Directives } from './directives.js';
12export type Replacer = any[] | ((key: any, value: any) => unknown);
13export declare namespace Document {
14 /** @ts-ignore The typing of directives fails in TS <= 4.2 */
15 interface Parsed<Contents extends ParsedNode = ParsedNode, Strict extends boolean = true> extends Document<Contents, Strict> {
16 directives: Directives;
17 range: Range;
18 }
19}
20export declare class Document<Contents extends Node = Node, Strict extends boolean = true> {
21 readonly [NODE_TYPE]: symbol;
22 /** A comment before this Document */
23 commentBefore: string | null;
24 /** A comment immediately after this Document */
25 comment: string | null;
26 /** The document contents. */
27 contents: Strict extends true ? Contents | null : Contents;
28 directives: Strict extends true ? Directives | undefined : Directives;
29 /** Errors encountered during parsing. */
30 errors: YAMLError[];
31 options: Required<Omit<ParseOptions & DocumentOptions, '_directives' | 'lineCounter' | 'version'>>;
32 /**
33 * The `[start, value-end, node-end]` character offsets for the part of the
34 * source parsed into this document (undefined if not parsed). The `value-end`
35 * and `node-end` positions are themselves not included in their respective
36 * ranges.
37 */
38 range?: Range;
39 /** The schema used with the document. Use `setSchema()` to change. */
40 schema: Schema;
41 /** Warnings encountered during parsing. */
42 warnings: YAMLWarning[];
43 /**
44 * @param value - The initial value for the document, which will be wrapped
45 * in a Node container.
46 */
47 constructor(value?: any, options?: DocumentOptions & SchemaOptions & ParseOptions & CreateNodeOptions);
48 constructor(value: any, replacer: null | Replacer, options?: DocumentOptions & SchemaOptions & ParseOptions & CreateNodeOptions);
49 /**
50 * Create a deep copy of this Document and its contents.
51 *
52 * Custom Node values that inherit from `Object` still refer to their original instances.
53 */
54 clone(): Document<Contents, Strict>;
55 /** Adds a value to the document. */
56 add(value: any): void;
57 /** Adds a value to the document. */
58 addIn(path: Iterable<unknown>, value: unknown): void;
59 /**
60 * Create a new `Alias` node, ensuring that the target `node` has the required anchor.
61 *
62 * If `node` already has an anchor, `name` is ignored.
63 * Otherwise, the `node.anchor` value will be set to `name`,
64 * or if an anchor with that name is already present in the document,
65 * `name` will be used as a prefix for a new unique anchor.
66 * If `name` is undefined, the generated anchor will use 'a' as a prefix.
67 */
68 createAlias(node: Strict extends true ? Scalar | YAMLMap | YAMLSeq : Node, name?: string): Alias;
69 /**
70 * Convert any value into a `Node` using the current schema, recursively
71 * turning objects into collections.
72 */
73 createNode<T = unknown>(value: T, options?: CreateNodeOptions): NodeType<T>;
74 createNode<T = unknown>(value: T, replacer: Replacer | CreateNodeOptions | null, options?: CreateNodeOptions): NodeType<T>;
75 /**
76 * Convert a key and a value into a `Pair` using the current schema,
77 * recursively wrapping all values as `Scalar` or `Collection` nodes.
78 */
79 createPair<K extends Node = Node, V extends Node = Node>(key: unknown, value: unknown, options?: CreateNodeOptions): Pair<K, V>;
80 /**
81 * Removes a value from the document.
82 * @returns `true` if the item was found and removed.
83 */
84 delete(key: unknown): boolean;
85 /**
86 * Removes a value from the document.
87 * @returns `true` if the item was found and removed.
88 */
89 deleteIn(path: Iterable<unknown> | null): boolean;
90 /**
91 * Returns item at `key`, or `undefined` if not found. By default unwraps
92 * scalar values from their surrounding node; to disable set `keepScalar` to
93 * `true` (collections are always returned intact).
94 */
95 get(key: unknown, keepScalar?: boolean): Strict extends true ? unknown : any;
96 /**
97 * Returns item at `path`, or `undefined` if not found. By default unwraps
98 * scalar values from their surrounding node; to disable set `keepScalar` to
99 * `true` (collections are always returned intact).
100 */
101 getIn(path: Iterable<unknown> | null, keepScalar?: boolean): Strict extends true ? unknown : any;
102 /**
103 * Checks if the document includes a value with the key `key`.
104 */
105 has(key: unknown): boolean;
106 /**
107 * Checks if the document includes a value at `path`.
108 */
109 hasIn(path: Iterable<unknown> | null): boolean;
110 /**
111 * Sets a value in this document. For `!!set`, `value` needs to be a
112 * boolean to add/remove the item from the set.
113 */
114 set(key: any, value: unknown): void;
115 /**
116 * Sets a value in this document. For `!!set`, `value` needs to be a
117 * boolean to add/remove the item from the set.
118 */
119 setIn(path: Iterable<unknown> | null, value: unknown): void;
120 /**
121 * Change the YAML version and schema used by the document.
122 * A `null` version disables support for directives, explicit tags, anchors, and aliases.
123 * It also requires the `schema` option to be given as a `Schema` instance value.
124 *
125 * Overrides all previously set schema options.
126 */
127 setSchema(version: '1.1' | '1.2' | 'next' | null, options?: SchemaOptions): void;
128 /** A plain JavaScript representation of the document `contents`. */
129 toJS(opt?: ToJSOptions & {
130 [ignored: string]: unknown;
131 }): any;
132 /**
133 * A JSON representation of the document `contents`.
134 *
135 * @param jsonArg Used by `JSON.stringify` to indicate the array index or
136 * property name.
137 */
138 toJSON(jsonArg?: string | null, onAnchor?: ToJSOptions['onAnchor']): any;
139 /** A YAML representation of the document. */
140 toString(options?: ToStringOptions): string;
141}
142
\No newline at end of file