UNPKG

roam-export

Version:

A set of tools to Filter/transform/render RoamResearch JSON export. Used in Roam Garden

36 lines 2.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.removeHierarchicalDuplicates = exports.visitChildren = exports.removeChildMatching = exports.getReferencedBlocks = exports.getFlatBlockList = exports.isPublic = void 0; const isPublic = (page, publicMarkers) => (publicMarkers.includes(page.title) || extractChildren(page).some(it => matchesMarker(it, publicMarkers))); exports.isPublic = isPublic; function matchesMarker(block, markers) { const toRegex = (marker) => new RegExp(`#?\\[\\[${marker}]]|#${marker}`); const markerRegexes = markers.map(toRegex); return markerRegexes.some(marker => { var _a; return (_a = block === null || block === void 0 ? void 0 : block.string) === null || _a === void 0 ? void 0 : _a.match(marker); }); } const getFlatBlockList = (pages) => pages.flatMap(extractChildren); exports.getFlatBlockList = getFlatBlockList; const extractChildren = (block) => { var _a; return ((_a = block.children) === null || _a === void 0 ? void 0 : _a.flatMap(it => [it, ...extractChildren(it)])) || []; }; function getReferencedBlocks(originPages, allPages) { const publicBlocks = exports.getFlatBlockList(originPages); const referencedBlockIds = new Set(publicBlocks.flatMap(it => { var _a; return ((_a = it.refs) === null || _a === void 0 ? void 0 : _a.map(ref => ref.uid)) || []; })); return exports.getFlatBlockList(allPages).filter(it => referencedBlockIds.has(it.uid || "")); } exports.getReferencedBlocks = getReferencedBlocks; const removeChildMatching = (page, privateMarkers) => { var _a, _b; return (Object.assign(Object.assign({}, page), { children: (_b = (_a = page === null || page === void 0 ? void 0 : page.children) === null || _a === void 0 ? void 0 : _a.filter(it => !matchesMarker(it, privateMarkers))) === null || _b === void 0 ? void 0 : _b.map(it => exports.removeChildMatching(it, privateMarkers)) })); }; exports.removeChildMatching = removeChildMatching; function visitChildren(block, visit) { var _a; visit(block); (_a = block === null || block === void 0 ? void 0 : block.children) === null || _a === void 0 ? void 0 : _a.forEach(it => visitChildren(it, visit)); } exports.visitChildren = visitChildren; function removeHierarchicalDuplicates(blocks) { const nestedUids = new Set(exports.getFlatBlockList(blocks).map(it => it.uid)); return blocks.filter(it => !nestedUids.has(it.uid)); } exports.removeHierarchicalDuplicates = removeHierarchicalDuplicates; //# sourceMappingURL=roam-utils.js.map