You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
682 lines
18 KiB
682 lines
18 KiB
import { _ as _createForOfIteratorHelper, h as _slicedToArray, a as _typeof, b as _createClass, e as _defineProperty, c as _classCallCheck, d as defaultTagPrefix, n as defaultTags } from './PlainValue-b8036b75.js'; |
|
import { d as YAMLMap, g as resolveMap, Y as YAMLSeq, h as resolveSeq, j as resolveString, c as stringifyString, s as strOptions, S as Scalar, n as nullOptions, a as boolOptions, i as intOptions, k as stringifyNumber, N as Node, A as Alias, P as Pair } from './resolveSeq-492ab440.js'; |
|
import { b as binary, o as omap, p as pairs, s as set, i as intTime, f as floatTime, t as timestamp, a as warnOptionDeprecation } from './warnings-df54cb69.js'; |
|
|
|
function createMap(schema, obj, ctx) { |
|
var map = new YAMLMap(schema); |
|
|
|
if (obj instanceof Map) { |
|
var _iterator = _createForOfIteratorHelper(obj), |
|
_step; |
|
|
|
try { |
|
for (_iterator.s(); !(_step = _iterator.n()).done;) { |
|
var _step$value = _slicedToArray(_step.value, 2), |
|
key = _step$value[0], |
|
value = _step$value[1]; |
|
|
|
map.items.push(schema.createPair(key, value, ctx)); |
|
} |
|
} catch (err) { |
|
_iterator.e(err); |
|
} finally { |
|
_iterator.f(); |
|
} |
|
} else if (obj && _typeof(obj) === 'object') { |
|
for (var _i = 0, _Object$keys = Object.keys(obj); _i < _Object$keys.length; _i++) { |
|
var _key = _Object$keys[_i]; |
|
map.items.push(schema.createPair(_key, obj[_key], ctx)); |
|
} |
|
} |
|
|
|
if (typeof schema.sortMapEntries === 'function') { |
|
map.items.sort(schema.sortMapEntries); |
|
} |
|
|
|
return map; |
|
} |
|
|
|
var map = { |
|
createNode: createMap, |
|
default: true, |
|
nodeClass: YAMLMap, |
|
tag: 'tag:yaml.org,2002:map', |
|
resolve: resolveMap |
|
}; |
|
|
|
function createSeq(schema, obj, ctx) { |
|
var seq = new YAMLSeq(schema); |
|
|
|
if (obj && obj[Symbol.iterator]) { |
|
var _iterator = _createForOfIteratorHelper(obj), |
|
_step; |
|
|
|
try { |
|
for (_iterator.s(); !(_step = _iterator.n()).done;) { |
|
var it = _step.value; |
|
var v = schema.createNode(it, ctx.wrapScalars, null, ctx); |
|
seq.items.push(v); |
|
} |
|
} catch (err) { |
|
_iterator.e(err); |
|
} finally { |
|
_iterator.f(); |
|
} |
|
} |
|
|
|
return seq; |
|
} |
|
|
|
var seq = { |
|
createNode: createSeq, |
|
default: true, |
|
nodeClass: YAMLSeq, |
|
tag: 'tag:yaml.org,2002:seq', |
|
resolve: resolveSeq |
|
}; |
|
|
|
var string = { |
|
identify: function identify(value) { |
|
return typeof value === 'string'; |
|
}, |
|
default: true, |
|
tag: 'tag:yaml.org,2002:str', |
|
resolve: resolveString, |
|
stringify: function stringify(item, ctx, onComment, onChompKeep) { |
|
ctx = Object.assign({ |
|
actualString: true |
|
}, ctx); |
|
return stringifyString(item, ctx, onComment, onChompKeep); |
|
}, |
|
options: strOptions |
|
}; |
|
|
|
var failsafe = [map, seq, string]; |
|
|
|
/* global BigInt */ |
|
|
|
var intIdentify$2 = function intIdentify(value) { |
|
return typeof value === 'bigint' || Number.isInteger(value); |
|
}; |
|
|
|
var intResolve$1 = function intResolve(src, part, radix) { |
|
return intOptions.asBigInt ? BigInt(src) : parseInt(part, radix); |
|
}; |
|
|
|
function intStringify$1(node, radix, prefix) { |
|
var value = node.value; |
|
if (intIdentify$2(value) && value >= 0) return prefix + value.toString(radix); |
|
return stringifyNumber(node); |
|
} |
|
|
|
var nullObj = { |
|
identify: function identify(value) { |
|
return value == null; |
|
}, |
|
createNode: function createNode(schema, value, ctx) { |
|
return ctx.wrapScalars ? new Scalar(null) : null; |
|
}, |
|
default: true, |
|
tag: 'tag:yaml.org,2002:null', |
|
test: /^(?:~|[Nn]ull|NULL)?$/, |
|
resolve: function resolve() { |
|
return null; |
|
}, |
|
options: nullOptions, |
|
stringify: function stringify() { |
|
return nullOptions.nullStr; |
|
} |
|
}; |
|
var boolObj = { |
|
identify: function identify(value) { |
|
return typeof value === 'boolean'; |
|
}, |
|
default: true, |
|
tag: 'tag:yaml.org,2002:bool', |
|
test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/, |
|
resolve: function resolve(str) { |
|
return str[0] === 't' || str[0] === 'T'; |
|
}, |
|
options: boolOptions, |
|
stringify: function stringify(_ref) { |
|
var value = _ref.value; |
|
return value ? boolOptions.trueStr : boolOptions.falseStr; |
|
} |
|
}; |
|
var octObj = { |
|
identify: function identify(value) { |
|
return intIdentify$2(value) && value >= 0; |
|
}, |
|
default: true, |
|
tag: 'tag:yaml.org,2002:int', |
|
format: 'OCT', |
|
test: /^0o([0-7]+)$/, |
|
resolve: function resolve(str, oct) { |
|
return intResolve$1(str, oct, 8); |
|
}, |
|
options: intOptions, |
|
stringify: function stringify(node) { |
|
return intStringify$1(node, 8, '0o'); |
|
} |
|
}; |
|
var intObj = { |
|
identify: intIdentify$2, |
|
default: true, |
|
tag: 'tag:yaml.org,2002:int', |
|
test: /^[-+]?[0-9]+$/, |
|
resolve: function resolve(str) { |
|
return intResolve$1(str, str, 10); |
|
}, |
|
options: intOptions, |
|
stringify: stringifyNumber |
|
}; |
|
var hexObj = { |
|
identify: function identify(value) { |
|
return intIdentify$2(value) && value >= 0; |
|
}, |
|
default: true, |
|
tag: 'tag:yaml.org,2002:int', |
|
format: 'HEX', |
|
test: /^0x([0-9a-fA-F]+)$/, |
|
resolve: function resolve(str, hex) { |
|
return intResolve$1(str, hex, 16); |
|
}, |
|
options: intOptions, |
|
stringify: function stringify(node) { |
|
return intStringify$1(node, 16, '0x'); |
|
} |
|
}; |
|
var nanObj = { |
|
identify: function identify(value) { |
|
return typeof value === 'number'; |
|
}, |
|
default: true, |
|
tag: 'tag:yaml.org,2002:float', |
|
test: /^(?:[-+]?\.inf|(\.nan))$/i, |
|
resolve: function resolve(str, nan) { |
|
return nan ? NaN : str[0] === '-' ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY; |
|
}, |
|
stringify: stringifyNumber |
|
}; |
|
var expObj = { |
|
identify: function identify(value) { |
|
return typeof value === 'number'; |
|
}, |
|
default: true, |
|
tag: 'tag:yaml.org,2002:float', |
|
format: 'EXP', |
|
test: /^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/, |
|
resolve: function resolve(str) { |
|
return parseFloat(str); |
|
}, |
|
stringify: function stringify(_ref2) { |
|
var value = _ref2.value; |
|
return Number(value).toExponential(); |
|
} |
|
}; |
|
var floatObj = { |
|
identify: function identify(value) { |
|
return typeof value === 'number'; |
|
}, |
|
default: true, |
|
tag: 'tag:yaml.org,2002:float', |
|
test: /^[-+]?(?:\.([0-9]+)|[0-9]+\.([0-9]*))$/, |
|
resolve: function resolve(str, frac1, frac2) { |
|
var frac = frac1 || frac2; |
|
var node = new Scalar(parseFloat(str)); |
|
if (frac && frac[frac.length - 1] === '0') node.minFractionDigits = frac.length; |
|
return node; |
|
}, |
|
stringify: stringifyNumber |
|
}; |
|
var core = failsafe.concat([nullObj, boolObj, octObj, intObj, hexObj, nanObj, expObj, floatObj]); |
|
|
|
/* global BigInt */ |
|
|
|
var intIdentify$1 = function intIdentify(value) { |
|
return typeof value === 'bigint' || Number.isInteger(value); |
|
}; |
|
|
|
var stringifyJSON = function stringifyJSON(_ref) { |
|
var value = _ref.value; |
|
return JSON.stringify(value); |
|
}; |
|
|
|
var json = [map, seq, { |
|
identify: function identify(value) { |
|
return typeof value === 'string'; |
|
}, |
|
default: true, |
|
tag: 'tag:yaml.org,2002:str', |
|
resolve: resolveString, |
|
stringify: stringifyJSON |
|
}, { |
|
identify: function identify(value) { |
|
return value == null; |
|
}, |
|
createNode: function createNode(schema, value, ctx) { |
|
return ctx.wrapScalars ? new Scalar(null) : null; |
|
}, |
|
default: true, |
|
tag: 'tag:yaml.org,2002:null', |
|
test: /^null$/, |
|
resolve: function resolve() { |
|
return null; |
|
}, |
|
stringify: stringifyJSON |
|
}, { |
|
identify: function identify(value) { |
|
return typeof value === 'boolean'; |
|
}, |
|
default: true, |
|
tag: 'tag:yaml.org,2002:bool', |
|
test: /^true|false$/, |
|
resolve: function resolve(str) { |
|
return str === 'true'; |
|
}, |
|
stringify: stringifyJSON |
|
}, { |
|
identify: intIdentify$1, |
|
default: true, |
|
tag: 'tag:yaml.org,2002:int', |
|
test: /^-?(?:0|[1-9][0-9]*)$/, |
|
resolve: function resolve(str) { |
|
return intOptions.asBigInt ? BigInt(str) : parseInt(str, 10); |
|
}, |
|
stringify: function stringify(_ref2) { |
|
var value = _ref2.value; |
|
return intIdentify$1(value) ? value.toString() : JSON.stringify(value); |
|
} |
|
}, { |
|
identify: function identify(value) { |
|
return typeof value === 'number'; |
|
}, |
|
default: true, |
|
tag: 'tag:yaml.org,2002:float', |
|
test: /^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/, |
|
resolve: function resolve(str) { |
|
return parseFloat(str); |
|
}, |
|
stringify: stringifyJSON |
|
}]; |
|
|
|
json.scalarFallback = function (str) { |
|
throw new SyntaxError("Unresolved plain scalar ".concat(JSON.stringify(str))); |
|
}; |
|
|
|
/* global BigInt */ |
|
|
|
var boolStringify = function boolStringify(_ref) { |
|
var value = _ref.value; |
|
return value ? boolOptions.trueStr : boolOptions.falseStr; |
|
}; |
|
|
|
var intIdentify = function intIdentify(value) { |
|
return typeof value === 'bigint' || Number.isInteger(value); |
|
}; |
|
|
|
function intResolve(sign, src, radix) { |
|
var str = src.replace(/_/g, ''); |
|
|
|
if (intOptions.asBigInt) { |
|
switch (radix) { |
|
case 2: |
|
str = "0b".concat(str); |
|
break; |
|
|
|
case 8: |
|
str = "0o".concat(str); |
|
break; |
|
|
|
case 16: |
|
str = "0x".concat(str); |
|
break; |
|
} |
|
|
|
var _n = BigInt(str); |
|
|
|
return sign === '-' ? BigInt(-1) * _n : _n; |
|
} |
|
|
|
var n = parseInt(str, radix); |
|
return sign === '-' ? -1 * n : n; |
|
} |
|
|
|
function intStringify(node, radix, prefix) { |
|
var value = node.value; |
|
|
|
if (intIdentify(value)) { |
|
var str = value.toString(radix); |
|
return value < 0 ? '-' + prefix + str.substr(1) : prefix + str; |
|
} |
|
|
|
return stringifyNumber(node); |
|
} |
|
|
|
var yaml11 = failsafe.concat([{ |
|
identify: function identify(value) { |
|
return value == null; |
|
}, |
|
createNode: function createNode(schema, value, ctx) { |
|
return ctx.wrapScalars ? new Scalar(null) : null; |
|
}, |
|
default: true, |
|
tag: 'tag:yaml.org,2002:null', |
|
test: /^(?:~|[Nn]ull|NULL)?$/, |
|
resolve: function resolve() { |
|
return null; |
|
}, |
|
options: nullOptions, |
|
stringify: function stringify() { |
|
return nullOptions.nullStr; |
|
} |
|
}, { |
|
identify: function identify(value) { |
|
return typeof value === 'boolean'; |
|
}, |
|
default: true, |
|
tag: 'tag:yaml.org,2002:bool', |
|
test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/, |
|
resolve: function resolve() { |
|
return true; |
|
}, |
|
options: boolOptions, |
|
stringify: boolStringify |
|
}, { |
|
identify: function identify(value) { |
|
return typeof value === 'boolean'; |
|
}, |
|
default: true, |
|
tag: 'tag:yaml.org,2002:bool', |
|
test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/i, |
|
resolve: function resolve() { |
|
return false; |
|
}, |
|
options: boolOptions, |
|
stringify: boolStringify |
|
}, { |
|
identify: intIdentify, |
|
default: true, |
|
tag: 'tag:yaml.org,2002:int', |
|
format: 'BIN', |
|
test: /^([-+]?)0b([0-1_]+)$/, |
|
resolve: function resolve(str, sign, bin) { |
|
return intResolve(sign, bin, 2); |
|
}, |
|
stringify: function stringify(node) { |
|
return intStringify(node, 2, '0b'); |
|
} |
|
}, { |
|
identify: intIdentify, |
|
default: true, |
|
tag: 'tag:yaml.org,2002:int', |
|
format: 'OCT', |
|
test: /^([-+]?)0([0-7_]+)$/, |
|
resolve: function resolve(str, sign, oct) { |
|
return intResolve(sign, oct, 8); |
|
}, |
|
stringify: function stringify(node) { |
|
return intStringify(node, 8, '0'); |
|
} |
|
}, { |
|
identify: intIdentify, |
|
default: true, |
|
tag: 'tag:yaml.org,2002:int', |
|
test: /^([-+]?)([0-9][0-9_]*)$/, |
|
resolve: function resolve(str, sign, abs) { |
|
return intResolve(sign, abs, 10); |
|
}, |
|
stringify: stringifyNumber |
|
}, { |
|
identify: intIdentify, |
|
default: true, |
|
tag: 'tag:yaml.org,2002:int', |
|
format: 'HEX', |
|
test: /^([-+]?)0x([0-9a-fA-F_]+)$/, |
|
resolve: function resolve(str, sign, hex) { |
|
return intResolve(sign, hex, 16); |
|
}, |
|
stringify: function stringify(node) { |
|
return intStringify(node, 16, '0x'); |
|
} |
|
}, { |
|
identify: function identify(value) { |
|
return typeof value === 'number'; |
|
}, |
|
default: true, |
|
tag: 'tag:yaml.org,2002:float', |
|
test: /^(?:[-+]?\.inf|(\.nan))$/i, |
|
resolve: function resolve(str, nan) { |
|
return nan ? NaN : str[0] === '-' ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY; |
|
}, |
|
stringify: stringifyNumber |
|
}, { |
|
identify: function identify(value) { |
|
return typeof value === 'number'; |
|
}, |
|
default: true, |
|
tag: 'tag:yaml.org,2002:float', |
|
format: 'EXP', |
|
test: /^[-+]?([0-9][0-9_]*)?(\.[0-9_]*)?[eE][-+]?[0-9]+$/, |
|
resolve: function resolve(str) { |
|
return parseFloat(str.replace(/_/g, '')); |
|
}, |
|
stringify: function stringify(_ref2) { |
|
var value = _ref2.value; |
|
return Number(value).toExponential(); |
|
} |
|
}, { |
|
identify: function identify(value) { |
|
return typeof value === 'number'; |
|
}, |
|
default: true, |
|
tag: 'tag:yaml.org,2002:float', |
|
test: /^[-+]?(?:[0-9][0-9_]*)?\.([0-9_]*)$/, |
|
resolve: function resolve(str, frac) { |
|
var node = new Scalar(parseFloat(str.replace(/_/g, ''))); |
|
|
|
if (frac) { |
|
var f = frac.replace(/_/g, ''); |
|
if (f[f.length - 1] === '0') node.minFractionDigits = f.length; |
|
} |
|
|
|
return node; |
|
}, |
|
stringify: stringifyNumber |
|
}], binary, omap, pairs, set, intTime, floatTime, timestamp); |
|
|
|
var schemas = { |
|
core: core, |
|
failsafe: failsafe, |
|
json: json, |
|
yaml11: yaml11 |
|
}; |
|
var tags = { |
|
binary: binary, |
|
bool: boolObj, |
|
float: floatObj, |
|
floatExp: expObj, |
|
floatNaN: nanObj, |
|
floatTime: floatTime, |
|
int: intObj, |
|
intHex: hexObj, |
|
intOct: octObj, |
|
intTime: intTime, |
|
map: map, |
|
null: nullObj, |
|
omap: omap, |
|
pairs: pairs, |
|
seq: seq, |
|
set: set, |
|
timestamp: timestamp |
|
}; |
|
|
|
function findTagObject(value, tagName, tags) { |
|
if (tagName) { |
|
var match = tags.filter(function (t) { |
|
return t.tag === tagName; |
|
}); |
|
var tagObj = match.find(function (t) { |
|
return !t.format; |
|
}) || match[0]; |
|
if (!tagObj) throw new Error("Tag ".concat(tagName, " not found")); |
|
return tagObj; |
|
} // TODO: deprecate/remove class check |
|
|
|
|
|
return tags.find(function (t) { |
|
return (t.identify && t.identify(value) || t.class && value instanceof t.class) && !t.format; |
|
}); |
|
} |
|
|
|
function createNode(value, tagName, ctx) { |
|
if (value instanceof Node) return value; |
|
var defaultPrefix = ctx.defaultPrefix, |
|
onTagObj = ctx.onTagObj, |
|
prevObjects = ctx.prevObjects, |
|
schema = ctx.schema, |
|
wrapScalars = ctx.wrapScalars; |
|
if (tagName && tagName.startsWith('!!')) tagName = defaultPrefix + tagName.slice(2); |
|
var tagObj = findTagObject(value, tagName, schema.tags); |
|
|
|
if (!tagObj) { |
|
if (typeof value.toJSON === 'function') value = value.toJSON(); |
|
if (!value || _typeof(value) !== 'object') return wrapScalars ? new Scalar(value) : value; |
|
tagObj = value instanceof Map ? map : value[Symbol.iterator] ? seq : map; |
|
} |
|
|
|
if (onTagObj) { |
|
onTagObj(tagObj); |
|
delete ctx.onTagObj; |
|
} // Detect duplicate references to the same object & use Alias nodes for all |
|
// after first. The `obj` wrapper allows for circular references to resolve. |
|
|
|
|
|
var obj = { |
|
value: undefined, |
|
node: undefined |
|
}; |
|
|
|
if (value && _typeof(value) === 'object' && prevObjects) { |
|
var prev = prevObjects.get(value); |
|
|
|
if (prev) { |
|
var alias = new Alias(prev); // leaves source dirty; must be cleaned by caller |
|
|
|
ctx.aliasNodes.push(alias); // defined along with prevObjects |
|
|
|
return alias; |
|
} |
|
|
|
obj.value = value; |
|
prevObjects.set(value, obj); |
|
} |
|
|
|
obj.node = tagObj.createNode ? tagObj.createNode(ctx.schema, value, ctx) : wrapScalars ? new Scalar(value) : value; |
|
if (tagName && obj.node instanceof Node) obj.node.tag = tagName; |
|
return obj.node; |
|
} |
|
|
|
function getSchemaTags(schemas, knownTags, customTags, schemaId) { |
|
var tags = schemas[schemaId.replace(/\W/g, '')]; // 'yaml-1.1' -> 'yaml11' |
|
|
|
if (!tags) { |
|
var keys = Object.keys(schemas).map(function (key) { |
|
return JSON.stringify(key); |
|
}).join(', '); |
|
throw new Error("Unknown schema \"".concat(schemaId, "\"; use one of ").concat(keys)); |
|
} |
|
|
|
if (Array.isArray(customTags)) { |
|
var _iterator = _createForOfIteratorHelper(customTags), |
|
_step; |
|
|
|
try { |
|
for (_iterator.s(); !(_step = _iterator.n()).done;) { |
|
var tag = _step.value; |
|
tags = tags.concat(tag); |
|
} |
|
} catch (err) { |
|
_iterator.e(err); |
|
} finally { |
|
_iterator.f(); |
|
} |
|
} else if (typeof customTags === 'function') { |
|
tags = customTags(tags.slice()); |
|
} |
|
|
|
for (var i = 0; i < tags.length; ++i) { |
|
var _tag = tags[i]; |
|
|
|
if (typeof _tag === 'string') { |
|
var tagObj = knownTags[_tag]; |
|
|
|
if (!tagObj) { |
|
var _keys = Object.keys(knownTags).map(function (key) { |
|
return JSON.stringify(key); |
|
}).join(', '); |
|
|
|
throw new Error("Unknown custom tag \"".concat(_tag, "\"; use one of ").concat(_keys)); |
|
} |
|
|
|
tags[i] = tagObj; |
|
} |
|
} |
|
|
|
return tags; |
|
} |
|
|
|
var sortMapEntriesByKey = function sortMapEntriesByKey(a, b) { |
|
return a.key < b.key ? -1 : a.key > b.key ? 1 : 0; |
|
}; |
|
|
|
var Schema = /*#__PURE__*/function () { |
|
// TODO: remove in v2 |
|
// TODO: remove in v2 |
|
function Schema(_ref) { |
|
var customTags = _ref.customTags, |
|
merge = _ref.merge, |
|
schema = _ref.schema, |
|
sortMapEntries = _ref.sortMapEntries, |
|
deprecatedCustomTags = _ref.tags; |
|
|
|
_classCallCheck(this, Schema); |
|
|
|
this.merge = !!merge; |
|
this.name = schema; |
|
this.sortMapEntries = sortMapEntries === true ? sortMapEntriesByKey : sortMapEntries || null; |
|
if (!customTags && deprecatedCustomTags) warnOptionDeprecation('tags', 'customTags'); |
|
this.tags = getSchemaTags(schemas, tags, customTags || deprecatedCustomTags, schema); |
|
} |
|
|
|
_createClass(Schema, [{ |
|
key: "createNode", |
|
value: function createNode$1(value, wrapScalars, tagName, ctx) { |
|
var baseCtx = { |
|
defaultPrefix: Schema.defaultPrefix, |
|
schema: this, |
|
wrapScalars: wrapScalars |
|
}; |
|
var createCtx = ctx ? Object.assign(ctx, baseCtx) : baseCtx; |
|
return createNode(value, tagName, createCtx); |
|
} |
|
}, { |
|
key: "createPair", |
|
value: function createPair(key, value, ctx) { |
|
if (!ctx) ctx = { |
|
wrapScalars: true |
|
}; |
|
var k = this.createNode(key, ctx.wrapScalars, null, ctx); |
|
var v = this.createNode(value, ctx.wrapScalars, null, ctx); |
|
return new Pair(k, v); |
|
} |
|
}]); |
|
|
|
return Schema; |
|
}(); |
|
|
|
_defineProperty(Schema, "defaultPrefix", defaultTagPrefix); |
|
|
|
_defineProperty(Schema, "defaultTags", defaultTags); |
|
|
|
export { Schema as S };
|
|
|