| ; | |
| var applyReviver = require('../doc/applyReviver.js'); | |
| var identity = require('./identity.js'); | |
| var toJS = require('./toJS.js'); | |
| class NodeBase { | |
| constructor(type) { | |
| Object.defineProperty(this, identity.NODE_TYPE, { value: type }); | |
| } | |
| /** Create a copy of this node. */ | |
| clone() { | |
| const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this)); | |
| if (this.range) | |
| copy.range = this.range.slice(); | |
| return copy; | |
| } | |
| /** A plain JavaScript representation of this node. */ | |
| toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) { | |
| if (!identity.isDocument(doc)) | |
| throw new TypeError('A document argument is required'); | |
| const ctx = { | |
| anchors: new Map(), | |
| doc, | |
| keep: true, | |
| mapAsMap: mapAsMap === true, | |
| mapKeyWarned: false, | |
| maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100 | |
| }; | |
| const res = toJS.toJS(this, '', ctx); | |
| if (typeof onAnchor === 'function') | |
| for (const { count, res } of ctx.anchors.values()) | |
| onAnchor(res, count); | |
| return typeof reviver === 'function' | |
| ? applyReviver.applyReviver(reviver, { '': res }, '', res) | |
| : res; | |
| } | |
| } | |
| exports.NodeBase = NodeBase; | |
Xet Storage Details
- Size:
- 1.38 kB
- Xet hash:
- d049c6d05a0c4d41358db768971dc12f31ab7ca09e6faeb7aa261a608c6566e5
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.