| ; | |
| var identity = require('../../nodes/identity.js'); | |
| var toJS = require('../../nodes/toJS.js'); | |
| var YAMLMap = require('../../nodes/YAMLMap.js'); | |
| var YAMLSeq = require('../../nodes/YAMLSeq.js'); | |
| var pairs = require('./pairs.js'); | |
| class YAMLOMap extends YAMLSeq.YAMLSeq { | |
| constructor() { | |
| super(); | |
| this.add = YAMLMap.YAMLMap.prototype.add.bind(this); | |
| this.delete = YAMLMap.YAMLMap.prototype.delete.bind(this); | |
| this.get = YAMLMap.YAMLMap.prototype.get.bind(this); | |
| this.has = YAMLMap.YAMLMap.prototype.has.bind(this); | |
| this.set = YAMLMap.YAMLMap.prototype.set.bind(this); | |
| this.tag = YAMLOMap.tag; | |
| } | |
| /** | |
| * If `ctx` is given, the return type is actually `Map<unknown, unknown>`, | |
| * but TypeScript won't allow widening the signature of a child method. | |
| */ | |
| toJSON(_, ctx) { | |
| if (!ctx) | |
| return super.toJSON(_); | |
| const map = new Map(); | |
| if (ctx?.onCreate) | |
| ctx.onCreate(map); | |
| for (const pair of this.items) { | |
| let key, value; | |
| if (identity.isPair(pair)) { | |
| key = toJS.toJS(pair.key, '', ctx); | |
| value = toJS.toJS(pair.value, key, ctx); | |
| } | |
| else { | |
| key = toJS.toJS(pair, '', ctx); | |
| } | |
| if (map.has(key)) | |
| throw new Error('Ordered maps must not include duplicate keys'); | |
| map.set(key, value); | |
| } | |
| return map; | |
| } | |
| static from(schema, iterable, ctx) { | |
| const pairs$1 = pairs.createPairs(schema, iterable, ctx); | |
| const omap = new this(); | |
| omap.items = pairs$1.items; | |
| return omap; | |
| } | |
| } | |
| YAMLOMap.tag = 'tag:yaml.org,2002:omap'; | |
| const omap = { | |
| collection: 'seq', | |
| identify: value => value instanceof Map, | |
| nodeClass: YAMLOMap, | |
| default: false, | |
| tag: 'tag:yaml.org,2002:omap', | |
| resolve(seq, onError) { | |
| const pairs$1 = pairs.resolvePairs(seq, onError); | |
| const seenKeys = []; | |
| for (const { key } of pairs$1.items) { | |
| if (identity.isScalar(key)) { | |
| if (seenKeys.includes(key.value)) { | |
| onError(`Ordered maps must not include duplicate keys: ${key.value}`); | |
| } | |
| else { | |
| seenKeys.push(key.value); | |
| } | |
| } | |
| } | |
| return Object.assign(new YAMLOMap(), pairs$1); | |
| }, | |
| createNode: (schema, iterable, ctx) => YAMLOMap.from(schema, iterable, ctx) | |
| }; | |
| exports.YAMLOMap = YAMLOMap; | |
| exports.omap = omap; | |
Xet Storage Details
- Size:
- 2.58 kB
- Xet hash:
- 85465a8b7541bd6de33b5c3e7c8e35c46749061c5e62f72a1705b8d21e4ec77b
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.