YAML document schema validator and transformer
import { readFileSync } from "node:fs"
import { YAML } from "yaml-schema"
const configFile = readFileSync("config.yml", "utf-8")
const yaml = new YAML({
type: "object",
props: {
id: {
type: "string"
},
token: {
type: "string"
}
}
})
const config = yaml.parse(configFile)
import { YAML } from "yaml-schema"
const yaml = new YAML(schema)
yaml.parse(yamlString)
const yaml = new YAML({
type: schemaType,
default?: defaultValue
})
Example:
const yaml = new YAML({
type: "object",
props: {
name: {
type: "string"
}
}
})
Types:
- any
- boolean
- number
- string
- choices
- array
- object
number
schema:
const yaml = new YAML({
type: "number",
limit?: {
min?: number,
max?: number
}
})
string
schema:
const yaml = new YAML({
type: "string",
length?: {
min?: number,
max?: number
}
})
choices
schema:
choices allow numbers and strings
const yaml = new YAML({
type: "choices",
choices: [
"first choice",
"second choice",
"third choice"
]
})
array
schema:
const yaml = new YAML({
type: "array",
element: anotherSchema,
length?: {
min?: number,
max?: number
}
})
const yaml = new YAML({
type: "array",
element: {
type: "string"
},
length?: {
min?: number,
max?: number
}
})
object
schema:
const yaml = new YAML({
type: "object",
props: {
name: schema
}
})
const yaml = new YAML({
type: "object",
props: {
name: {
type: "string",
length: {
max: 100
}
}
}
})
or
const yaml = new YAML({
type: "object",
any: {
interface: schema,
length?: {
min?: number,
max?: number
}
}
})
const yaml = new YAML({
type: "object",
any: {
interface: {
type: "number",
limit: {
min: 10,
max: 100
}
},
length?: {
min?: number,
max?: number
}
}
})