@sketch-hq/sketch-assistant-utils
Version:
Utility functions and types for Sketch Assistants.
43 lines (42 loc) • 1.41 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getParentPointer = exports.evalPointer = void 0;
const json_pointer_1 = __importDefault(require("@json-schema-spec/json-pointer"));
/**
* Resolve a RFC6901 JSON Pointer to a value with a target object instance.
*/
const evalPointer = (pointer, instance) => {
try {
const ptr = json_pointer_1.default.parse(pointer);
return ptr.eval(instance);
}
catch (err) {
return undefined;
}
};
exports.evalPointer = evalPointer;
/**
* Unwind a RFC6901 JSON Pointer string one level to find the JSON Pointer for its parent,
* e.g. `/foo/bar/0/baz` => `foo/bar[0]`. If the JSON Pointer is invalid or the parent isn't
* available (i.e. already at the root) then `undefined` is returned.
*/
const getParentPointer = (pointer) => {
try {
const ptr = json_pointer_1.default.parse(pointer);
if (ptr.tokens.length === 0)
return undefined;
try {
return new json_pointer_1.default(ptr.tokens.splice(0, ptr.tokens.length - 1)).toString();
}
catch (err) {
return undefined;
}
}
catch (err) {
return undefined;
}
};
exports.getParentPointer = getParentPointer;