@agentshouse/mdmodel 0.1.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +57 -0
- package/dist/definition.d.ts +36 -0
- package/dist/definition.d.ts.map +1 -0
- package/dist/definition.js +165 -0
- package/dist/definition.js.map +1 -0
- package/dist/document.d.ts +5 -0
- package/dist/document.d.ts.map +1 -0
- package/dist/document.js +154 -0
- package/dist/document.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/links.d.ts +2 -0
- package/dist/links.d.ts.map +1 -0
- package/dist/links.js +142 -0
- package/dist/links.js.map +1 -0
- package/dist/paths.d.ts +14 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +54 -0
- package/dist/paths.js.map +1 -0
- package/dist/profile.d.ts +6 -0
- package/dist/profile.d.ts.map +1 -0
- package/dist/profile.js +7 -0
- package/dist/profile.js.map +1 -0
- package/dist/refuse.d.ts +6 -0
- package/dist/refuse.d.ts.map +1 -0
- package/dist/refuse.js +16 -0
- package/dist/refuse.js.map +1 -0
- package/dist/schema.d.ts +6 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +70 -0
- package/dist/schema.js.map +1 -0
- package/dist/sections.d.ts +10 -0
- package/dist/sections.d.ts.map +1 -0
- package/dist/sections.js +79 -0
- package/dist/sections.js.map +1 -0
- package/dist/types.d.ts +48 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/validate.d.ts +3 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +174 -0
- package/dist/validate.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/dist/yaml.d.ts +49 -0
- package/dist/yaml.d.ts.map +1 -0
- package/dist/yaml.js +427 -0
- package/dist/yaml.js.map +1 -0
- package/fixtures/README.md +65 -0
- package/fixtures/cases/any-without-type/expected.json +1 -0
- package/fixtures/cases/any-without-type/library/note.md +3 -0
- package/fixtures/cases/field-enum/expected.json +7 -0
- package/fixtures/cases/field-enum/library/item.md +9 -0
- package/fixtures/cases/field-enum/library/types/task.md +8 -0
- package/fixtures/cases/malformed-definition/expected.json +7 -0
- package/fixtures/cases/malformed-definition/library/types/task.md +5 -0
- package/fixtures/cases/missing-required-field/expected.json +7 -0
- package/fixtures/cases/missing-required-field/library/item.md +8 -0
- package/fixtures/cases/missing-required-field/library/types/task.md +8 -0
- package/fixtures/cases/prd-definition/expected.json +1 -0
- package/fixtures/cases/prd-definition/library/types/task.md +15 -0
- package/fixtures/cases/referenced-missing-file/expected.json +7 -0
- package/fixtures/cases/referenced-missing-file/library/a.md +9 -0
- package/fixtures/cases/referenced-missing-file/library/b.md +9 -0
- package/fixtures/cases/referenced-missing-file/library/types/person.md +5 -0
- package/fixtures/cases/referenced-missing-file/library/types/task.md +8 -0
- package/fixtures/cases/structured-section/expected.json +7 -0
- package/fixtures/cases/structured-section/library/item.md +12 -0
- package/fixtures/cases/structured-section/library/types/task.md +8 -0
- package/fixtures/cases/unclosed-frontmatter/expected.json +6 -0
- package/fixtures/cases/unclosed-frontmatter/library/note.md +3 -0
- package/fixtures/cases/unresolved-link/expected.json +6 -0
- package/fixtures/cases/unresolved-link/library/item.md +8 -0
- package/fixtures/cases/unresolved-link/library/types/task.md +7 -0
- package/fixtures/cases/valid-typed-document/expected.json +1 -0
- package/fixtures/cases/valid-typed-document/library/people/ada.md +4 -0
- package/fixtures/cases/valid-typed-document/library/tasks/one.md +17 -0
- package/fixtures/cases/valid-typed-document/library/types/person.md +5 -0
- package/fixtures/cases/valid-typed-document/library/types/task.md +12 -0
- package/markdown-syntax-profile.md +9 -0
- package/package.json +41 -0
package/dist/validate.js
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { readDefinition } from './definition.js';
|
|
2
|
+
import { parse } from './document.js';
|
|
3
|
+
import { extractRelativeHrefs } from './links.js';
|
|
4
|
+
import { classifyHref, isTypesPath } from './paths.js';
|
|
5
|
+
import { refusal } from './refuse.js';
|
|
6
|
+
import { parseListSection } from './sections.js';
|
|
7
|
+
import { validateFields } from './schema.js';
|
|
8
|
+
import { bodyAfterFrontmatter } from './yaml.js';
|
|
9
|
+
function refuse(file, rule, extra) {
|
|
10
|
+
return {
|
|
11
|
+
verdict: 'refuse',
|
|
12
|
+
...refusal(file, rule, extra)
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function instanceType(document, file) {
|
|
16
|
+
if (isTypesPath(file)) return 'definition';
|
|
17
|
+
const raw = document.fields.type;
|
|
18
|
+
if (raw === undefined || raw === null) return 'any';
|
|
19
|
+
if (typeof raw !== 'string' || raw === '') return 'invalid';
|
|
20
|
+
return raw;
|
|
21
|
+
}
|
|
22
|
+
function referenceTargets(spec, value) {
|
|
23
|
+
if (spec.kind === 'reference' && typeof value === 'string') return [
|
|
24
|
+
value
|
|
25
|
+
];
|
|
26
|
+
if (spec.kind === 'list' && spec.of.kind === 'reference' && Array.isArray(value)) {
|
|
27
|
+
return value.filter((item)=>typeof item === 'string');
|
|
28
|
+
}
|
|
29
|
+
return [];
|
|
30
|
+
}
|
|
31
|
+
function expectedReferenceType(spec) {
|
|
32
|
+
if (spec.kind === 'reference') return spec.to;
|
|
33
|
+
if (spec.kind === 'list' && spec.of.kind === 'reference') return spec.of.to;
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
function declaredTypeOf(content) {
|
|
37
|
+
const parsed = parse(content);
|
|
38
|
+
if (!parsed.ok) return undefined;
|
|
39
|
+
return parsed.document.type ?? 'any';
|
|
40
|
+
}
|
|
41
|
+
export function validate(library) {
|
|
42
|
+
const files = Object.keys(library).sort();
|
|
43
|
+
const documents = new Map();
|
|
44
|
+
for (const file of files){
|
|
45
|
+
const parsed = parse(library[file], file);
|
|
46
|
+
documents.set(file, parsed);
|
|
47
|
+
if (!parsed.ok) return {
|
|
48
|
+
verdict: 'refuse',
|
|
49
|
+
...parsed.refusal
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
const definitions = new Map();
|
|
53
|
+
for (const file of files){
|
|
54
|
+
if (!isTypesPath(file)) continue;
|
|
55
|
+
const parsed = documents.get(file);
|
|
56
|
+
if (parsed === undefined || !parsed.ok) continue;
|
|
57
|
+
const definition = readDefinition(file, parsed.document);
|
|
58
|
+
if ('rule' in definition) return {
|
|
59
|
+
verdict: 'refuse',
|
|
60
|
+
...definition
|
|
61
|
+
};
|
|
62
|
+
const existing = definitions.get(definition.name);
|
|
63
|
+
if (existing !== undefined) return refuse(file, 'definition-duplicate', {
|
|
64
|
+
location: definition.name
|
|
65
|
+
});
|
|
66
|
+
definitions.set(definition.name, definition);
|
|
67
|
+
}
|
|
68
|
+
for (const file of files){
|
|
69
|
+
const parsed = documents.get(file);
|
|
70
|
+
if (parsed === undefined || !parsed.ok) continue;
|
|
71
|
+
const kind = instanceType(parsed.document, file);
|
|
72
|
+
if (kind === 'any') continue;
|
|
73
|
+
if (kind === 'invalid' || kind === 'definition') {
|
|
74
|
+
if (kind === 'definition' && isTypesPath(file)) continue;
|
|
75
|
+
return refuse(file, 'unknown-type', {
|
|
76
|
+
location: 'type'
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
const definition = definitions.get(kind);
|
|
80
|
+
if (definition === undefined) return refuse(file, 'unknown-type', {
|
|
81
|
+
location: 'type'
|
|
82
|
+
});
|
|
83
|
+
const fieldFailure = validateFields(definition.fields, parsed.document.fields);
|
|
84
|
+
if (fieldFailure !== undefined) {
|
|
85
|
+
return refuse(file, fieldFailure.rule, {
|
|
86
|
+
location: fieldFailure.field
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
for (const [name, spec] of Object.entries(definition.sections)){
|
|
90
|
+
const body = parsed.document.sections[name];
|
|
91
|
+
if (body === undefined) {
|
|
92
|
+
if (spec.required) return refuse(file, 'required-section', {
|
|
93
|
+
location: name
|
|
94
|
+
});
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
if (spec.kind === 'list' && !parseListSection(body)) {
|
|
98
|
+
return refuse(file, 'structured-section', {
|
|
99
|
+
location: name
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
for (const file of files){
|
|
105
|
+
const parsed = documents.get(file);
|
|
106
|
+
if (parsed === undefined || !parsed.ok) continue;
|
|
107
|
+
const kind = instanceType(parsed.document, file);
|
|
108
|
+
if (kind === 'any' || kind === 'definition' || kind === 'invalid') continue;
|
|
109
|
+
const definition = definitions.get(kind);
|
|
110
|
+
if (definition === undefined) continue;
|
|
111
|
+
for (const [name, spec] of Object.entries(definition.fields)){
|
|
112
|
+
const targets = referenceTargets(spec, parsed.document.fields[name]);
|
|
113
|
+
const expected = expectedReferenceType(spec);
|
|
114
|
+
if (expected === null) continue;
|
|
115
|
+
for (const target of targets){
|
|
116
|
+
const resolved = classifyHref(file, target);
|
|
117
|
+
if (resolved.kind !== 'path') return refuse(file, 'unresolved-reference', {
|
|
118
|
+
location: name
|
|
119
|
+
});
|
|
120
|
+
if (!(resolved.path in library)) continue;
|
|
121
|
+
const targetType = declaredTypeOf(library[resolved.path]);
|
|
122
|
+
if (targetType !== expected) return refuse(file, 'unresolved-reference', {
|
|
123
|
+
location: name
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
const body = bodyAfterFrontmatter(library[file]);
|
|
128
|
+
for (const href of extractRelativeHrefs(body)){
|
|
129
|
+
const resolved = classifyHref(file, href);
|
|
130
|
+
if (resolved.kind === 'skip') continue;
|
|
131
|
+
if (resolved.kind === 'invalid' || !(resolved.path in library)) {
|
|
132
|
+
return refuse(file, 'unresolved-link');
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
const missing = new Map();
|
|
137
|
+
for (const file of files){
|
|
138
|
+
const parsed = documents.get(file);
|
|
139
|
+
if (parsed === undefined || !parsed.ok) continue;
|
|
140
|
+
const kind = instanceType(parsed.document, file);
|
|
141
|
+
if (kind === 'any' || kind === 'definition' || kind === 'invalid') continue;
|
|
142
|
+
const definition = definitions.get(kind);
|
|
143
|
+
if (definition === undefined) continue;
|
|
144
|
+
for (const [name, spec] of Object.entries(definition.fields)){
|
|
145
|
+
const expected = expectedReferenceType(spec);
|
|
146
|
+
if (expected === null) continue;
|
|
147
|
+
for (const target of referenceTargets(spec, parsed.document.fields[name])){
|
|
148
|
+
const resolved = classifyHref(file, target);
|
|
149
|
+
if (resolved.kind !== 'path') continue;
|
|
150
|
+
if (resolved.path in library) continue;
|
|
151
|
+
const referrers = missing.get(resolved.path) ?? [];
|
|
152
|
+
referrers.push(file);
|
|
153
|
+
missing.set(resolved.path, referrers);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
const missingPaths = [
|
|
158
|
+
...missing.keys()
|
|
159
|
+
].sort();
|
|
160
|
+
if (missingPaths.length > 0) {
|
|
161
|
+
const path = missingPaths[0];
|
|
162
|
+
const referrers = [
|
|
163
|
+
...new Set(missing.get(path) ?? [])
|
|
164
|
+
].sort();
|
|
165
|
+
return refuse(path, 'referenced-missing-file', {
|
|
166
|
+
referrers
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
return {
|
|
170
|
+
verdict: 'accept'
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/executor/code/agents.house/mdmodel/packages/mdmodel/src/validate.ts"],"sourcesContent":["import { readDefinition, type Definition, type FieldSpec } from './definition.js';\nimport { parse } from './document.js';\nimport { extractRelativeHrefs } from './links.js';\nimport { classifyHref, isTypesPath } from './paths.js';\nimport { refusal } from './refuse.js';\nimport { parseListSection } from './sections.js';\nimport { validateFields } from './schema.js';\nimport type { Document, Library, Validation } from './types.js';\nimport { bodyAfterFrontmatter } from './yaml.js';\n\nfunction refuse(\n file: string,\n rule: string,\n extra?: { location?: string; referrers?: readonly string[] },\n): Validation {\n return { verdict: 'refuse', ...refusal(file, rule, extra) };\n}\n\nfunction instanceType(document: Document, file: string): 'any' | 'definition' | 'invalid' | string {\n if (isTypesPath(file)) return 'definition';\n const raw = document.fields.type;\n if (raw === undefined || raw === null) return 'any';\n if (typeof raw !== 'string' || raw === '') return 'invalid';\n return raw;\n}\n\nfunction referenceTargets(spec: FieldSpec, value: unknown): string[] {\n if (spec.kind === 'reference' && typeof value === 'string') return [value];\n if (spec.kind === 'list' && spec.of.kind === 'reference' && Array.isArray(value)) {\n return value.filter((item): item is string => typeof item === 'string');\n }\n return [];\n}\n\nfunction expectedReferenceType(spec: FieldSpec): string | null {\n if (spec.kind === 'reference') return spec.to;\n if (spec.kind === 'list' && spec.of.kind === 'reference') return spec.of.to;\n return null;\n}\n\nfunction declaredTypeOf(content: string): string | undefined {\n const parsed = parse(content);\n if (!parsed.ok) return undefined;\n return parsed.document.type ?? 'any';\n}\n\nexport function validate(library: Library): Validation {\n const files = Object.keys(library).sort();\n const documents = new Map<string, ReturnType<typeof parse>>();\n for (const file of files) {\n const parsed = parse(library[file]!, file);\n documents.set(file, parsed);\n if (!parsed.ok) return { verdict: 'refuse', ...parsed.refusal };\n }\n\n const definitions = new Map<string, Definition>();\n for (const file of files) {\n if (!isTypesPath(file)) continue;\n const parsed = documents.get(file);\n if (parsed === undefined || !parsed.ok) continue;\n const definition = readDefinition(file, parsed.document);\n if ('rule' in definition) return { verdict: 'refuse', ...definition };\n const existing = definitions.get(definition.name);\n if (existing !== undefined)\n return refuse(file, 'definition-duplicate', { location: definition.name });\n definitions.set(definition.name, definition);\n }\n\n for (const file of files) {\n const parsed = documents.get(file);\n if (parsed === undefined || !parsed.ok) continue;\n const kind = instanceType(parsed.document, file);\n if (kind === 'any') continue;\n if (kind === 'invalid' || kind === 'definition') {\n if (kind === 'definition' && isTypesPath(file)) continue;\n return refuse(file, 'unknown-type', { location: 'type' });\n }\n const definition = definitions.get(kind);\n if (definition === undefined) return refuse(file, 'unknown-type', { location: 'type' });\n const fieldFailure = validateFields(definition.fields, parsed.document.fields);\n if (fieldFailure !== undefined) {\n return refuse(file, fieldFailure.rule, { location: fieldFailure.field });\n }\n for (const [name, spec] of Object.entries(definition.sections)) {\n const body = parsed.document.sections[name];\n if (body === undefined) {\n if (spec.required) return refuse(file, 'required-section', { location: name });\n continue;\n }\n if (spec.kind === 'list' && !parseListSection(body)) {\n return refuse(file, 'structured-section', { location: name });\n }\n }\n }\n\n for (const file of files) {\n const parsed = documents.get(file);\n if (parsed === undefined || !parsed.ok) continue;\n const kind = instanceType(parsed.document, file);\n if (kind === 'any' || kind === 'definition' || kind === 'invalid') continue;\n const definition = definitions.get(kind);\n if (definition === undefined) continue;\n for (const [name, spec] of Object.entries(definition.fields)) {\n const targets = referenceTargets(spec, parsed.document.fields[name]);\n const expected = expectedReferenceType(spec);\n if (expected === null) continue;\n for (const target of targets) {\n const resolved = classifyHref(file, target);\n if (resolved.kind !== 'path')\n return refuse(file, 'unresolved-reference', { location: name });\n if (!(resolved.path in library)) continue;\n const targetType = declaredTypeOf(library[resolved.path]!);\n if (targetType !== expected)\n return refuse(file, 'unresolved-reference', { location: name });\n }\n }\n const body = bodyAfterFrontmatter(library[file]!);\n for (const href of extractRelativeHrefs(body)) {\n const resolved = classifyHref(file, href);\n if (resolved.kind === 'skip') continue;\n if (resolved.kind === 'invalid' || !(resolved.path in library)) {\n return refuse(file, 'unresolved-link');\n }\n }\n }\n\n const missing = new Map<string, string[]>();\n for (const file of files) {\n const parsed = documents.get(file);\n if (parsed === undefined || !parsed.ok) continue;\n const kind = instanceType(parsed.document, file);\n if (kind === 'any' || kind === 'definition' || kind === 'invalid') continue;\n const definition = definitions.get(kind);\n if (definition === undefined) continue;\n for (const [name, spec] of Object.entries(definition.fields)) {\n const expected = expectedReferenceType(spec);\n if (expected === null) continue;\n for (const target of referenceTargets(spec, parsed.document.fields[name])) {\n const resolved = classifyHref(file, target);\n if (resolved.kind !== 'path') continue;\n if (resolved.path in library) continue;\n const referrers = missing.get(resolved.path) ?? [];\n referrers.push(file);\n missing.set(resolved.path, referrers);\n }\n }\n }\n const missingPaths = [...missing.keys()].sort();\n if (missingPaths.length > 0) {\n const path = missingPaths[0]!;\n const referrers = [...new Set(missing.get(path) ?? [])].sort();\n return refuse(path, 'referenced-missing-file', { referrers });\n }\n\n return { verdict: 'accept' };\n}\n"],"names":["readDefinition","parse","extractRelativeHrefs","classifyHref","isTypesPath","refusal","parseListSection","validateFields","bodyAfterFrontmatter","refuse","file","rule","extra","verdict","instanceType","document","raw","fields","type","undefined","referenceTargets","spec","value","kind","of","Array","isArray","filter","item","expectedReferenceType","to","declaredTypeOf","content","parsed","ok","validate","library","files","Object","keys","sort","documents","Map","set","definitions","get","definition","existing","name","location","fieldFailure","field","entries","sections","body","required","targets","expected","target","resolved","path","targetType","href","missing","referrers","push","missingPaths","length","Set"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,kBAAkB,CAAC"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/executor/code/agents.house/mdmodel/packages/mdmodel/src/version.ts"],"sourcesContent":["export const VERSION = '0.1.0-alpha.1';\n"],"names":["VERSION"],"mappings":"AAAA,OAAO,MAAMA,UAAU,gBAAgB"}
|
package/dist/yaml.d.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export declare class YamlError extends Error {
|
|
2
|
+
readonly offset: number;
|
|
3
|
+
constructor(offset: number);
|
|
4
|
+
}
|
|
5
|
+
export type YamlScalar = {
|
|
6
|
+
readonly kind: 'scalar';
|
|
7
|
+
readonly value: string | number | boolean | null;
|
|
8
|
+
readonly start: number;
|
|
9
|
+
readonly end: number;
|
|
10
|
+
};
|
|
11
|
+
export type YamlSeq = {
|
|
12
|
+
readonly kind: 'seq';
|
|
13
|
+
readonly items: readonly YamlNode[];
|
|
14
|
+
readonly start: number;
|
|
15
|
+
readonly end: number;
|
|
16
|
+
};
|
|
17
|
+
export type YamlEntry = {
|
|
18
|
+
readonly key: string;
|
|
19
|
+
readonly keyStart: number;
|
|
20
|
+
readonly keyEnd: number;
|
|
21
|
+
readonly value: YamlNode;
|
|
22
|
+
};
|
|
23
|
+
export type YamlMap = {
|
|
24
|
+
readonly kind: 'map';
|
|
25
|
+
readonly entries: readonly YamlEntry[];
|
|
26
|
+
readonly start: number;
|
|
27
|
+
readonly end: number;
|
|
28
|
+
};
|
|
29
|
+
export type YamlNode = YamlScalar | YamlSeq | YamlMap;
|
|
30
|
+
export declare function parseYamlMapping(text: string, start: number, end: number): YamlMap;
|
|
31
|
+
export declare function jsValue(node: YamlNode): unknown;
|
|
32
|
+
export declare function mapEntry(map: YamlMap, key: string): YamlEntry | undefined;
|
|
33
|
+
export declare function isPlainSafe(text: string): boolean;
|
|
34
|
+
export declare function serializeJs(value: unknown): string;
|
|
35
|
+
export declare function serializeKey(name: string): string;
|
|
36
|
+
export declare function bodyStartAfterYaml(content: string, yamlEnd: number): number;
|
|
37
|
+
export declare function bodyAfterFrontmatter(content: string): string;
|
|
38
|
+
export declare function extractFrontmatter(content: string): {
|
|
39
|
+
kind: 'none';
|
|
40
|
+
} | {
|
|
41
|
+
kind: 'unclosed';
|
|
42
|
+
} | {
|
|
43
|
+
kind: 'ok';
|
|
44
|
+
yamlStart: number;
|
|
45
|
+
yamlEnd: number;
|
|
46
|
+
};
|
|
47
|
+
export declare function equalValue(left: unknown, right: unknown): boolean;
|
|
48
|
+
export declare function lineEnding(content: string): '\n' | '\r\n';
|
|
49
|
+
//# sourceMappingURL=yaml.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yaml.d.ts","sourceRoot":"","sources":["../src/yaml.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAU,SAAQ,KAAK;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM;IAAnC,YAAqB,MAAM,EAAE,MAAM,EAGlC;CACF;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;AAqStD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAclF;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAM/C;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAEzE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMjD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQlD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAG3E;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI5D;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,GACd;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAqB9F;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAQjE;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAEzD"}
|