@stencila/jesta
Version:
Stencila plugin for executable documents using JavaScript
39 lines (38 loc) • 1.31 kB
JavaScript
;
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;