UNPKG

@nidomiro/relation-tuple-parser

Version:

[![npm version](https://badge.fury.io/js/@nidomiro%2Frelation-tuple-parser.svg)](https://www.npmjs.com/package/@nidomiro/relation-tuple-parser)

47 lines 2.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseRelationTupleWithReplacements = void 0; const defekt_1 = require("defekt"); const relation_tuple_parser_1 = require("../relation-tuple-parser"); const generate_replacer_function_1 = require("./generate-replacer-function"); const two_way_map_1 = require("../util/two-way-map"); const access_to_path_proxy_1 = require("../util/access-to-path-proxy"); const delimiter = '\u2744'; const parseRelationTupleWithReplacements = (relationTupleStringGenerator) => { const usedPlaceholder = new Map(); const registerAndReturnPlaceholder = (path) => { const pathAsString = path.join('.'); const placeholder = `${delimiter}${pathAsString}${delimiter}`; usedPlaceholder.set(pathAsString, placeholder); return placeholder; }; const argsProxy = (0, access_to_path_proxy_1.createAccessToPathProxy)(registerAndReturnPlaceholder); const relationTupleStr = relationTupleStringGenerator(argsProxy); const relationTupleResult = (0, relation_tuple_parser_1.parseRelationTuple)(relationTupleStr); if (relationTupleResult.hasError()) { return (0, defekt_1.error)(relationTupleResult.error); } const tuple = relationTupleResult.value; const usedPlaceholderLookupMap = new two_way_map_1.TwoWayMap(usedPlaceholder); let subjectIdOrSet; if (typeof tuple.subjectIdOrSet === 'object') { subjectIdOrSet = { namespace: (0, generate_replacer_function_1.generateReplacerFunction)(tuple.subjectIdOrSet.namespace, usedPlaceholderLookupMap), object: (0, generate_replacer_function_1.generateReplacerFunction)(tuple.subjectIdOrSet.object, usedPlaceholderLookupMap), relation: tuple.subjectIdOrSet.relation ? (0, generate_replacer_function_1.generateReplacerFunction)(tuple.subjectIdOrSet.relation, usedPlaceholderLookupMap) : () => undefined, }; } else { subjectIdOrSet = (0, generate_replacer_function_1.generateReplacerFunction)(tuple.subjectIdOrSet, usedPlaceholderLookupMap); } return (0, defekt_1.value)({ namespace: (0, generate_replacer_function_1.generateReplacerFunction)(tuple.namespace, usedPlaceholderLookupMap), object: (0, generate_replacer_function_1.generateReplacerFunction)(tuple.object, usedPlaceholderLookupMap), relation: (0, generate_replacer_function_1.generateReplacerFunction)(tuple.relation, usedPlaceholderLookupMap), subjectIdOrSet, }); }; exports.parseRelationTupleWithReplacements = parseRelationTupleWithReplacements; //# sourceMappingURL=relation-tuple-with-replacements-parser.js.map