| import { createNode } from '../doc/createNode.js'; | |
| import { stringifyPair } from '../stringify/stringifyPair.js'; | |
| import { addPairToJSMap } from './addPairToJSMap.js'; | |
| import { NODE_TYPE, PAIR, isNode } from './identity.js'; | |
| function createPair(key, value, ctx) { | |
| const k = createNode(key, undefined, ctx); | |
| const v = createNode(value, undefined, ctx); | |
| return new Pair(k, v); | |
| } | |
| class Pair { | |
| constructor(key, value = null) { | |
| Object.defineProperty(this, NODE_TYPE, { value: PAIR }); | |
| this.key = key; | |
| this.value = value; | |
| } | |
| clone(schema) { | |
| let { key, value } = this; | |
| if (isNode(key)) | |
| key = key.clone(schema); | |
| if (isNode(value)) | |
| value = value.clone(schema); | |
| return new Pair(key, value); | |
| } | |
| toJSON(_, ctx) { | |
| const pair = ctx?.mapAsMap ? new Map() : {}; | |
| return addPairToJSMap(ctx, pair, this); | |
| } | |
| toString(ctx, onComment, onChompKeep) { | |
| return ctx?.doc | |
| ? stringifyPair(this, ctx, onComment, onChompKeep) | |
| : JSON.stringify(this); | |
| } | |
| } | |
| export { Pair, createPair }; | |
Xet Storage Details
- Size:
- 1.12 kB
- Xet hash:
- 5f85240b3151b4cce1aba52327a094e82c20895b48d49bfe95bb7ce58704310b
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.