@nidomiro/relation-tuple-parser
Version:
[](https://www.npmjs.com/package/@nidomiro/relation-tuple-parser)
47 lines • 2.7 kB
JavaScript
;
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