UNPKG

@stencila/jesta

Version:

Stencila plugin for executable documents using JavaScript

39 lines (38 loc) 1.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mutateSync = exports.mutate = exports.visit = void 0; const schema_1 = require("@stencila/schema"); const visit = (node, visitor) => { if (node === undefined || node == null || typeof node !== 'object') return; for (const child of Object.values(node)) { schema_1.isEntity(child) ? visitor(child) : exports.visit(child, visitor); } }; exports.visit = visit; const mutate = async (node, mutator) => { if (node === undefined || node == null || typeof node !== 'object') return node; for (const [key, child] of Object.entries(node)) { // eslint-disable-next-line ; node[key] = schema_1.isEntity(child) ? await mutator(child) : await exports.mutate(child, mutator); } return node; }; exports.mutate = mutate; const mutateSync = (node, mutator) => { if (node === undefined || node == null || typeof node !== 'object') return node; for (const [key, child] of Object.entries(node)) { // eslint-disable-next-line ; node[key] = schema_1.isEntity(child) ? mutator(child) : exports.mutateSync(child, mutator); } return node; }; exports.mutateSync = mutateSync;