UNPKG

@eclipse-glsp/protocol

Version:

The protocol definition for client-server communication in GLSP

210 lines 9.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.NavigateToExternalTargetAction = exports.SetResolvedNavigationTargetAction = exports.ResolveNavigationTargetAction = exports.NavigateToTargetAction = exports.SetNavigationTargetsAction = exports.RequestNavigationTargetsAction = exports.NavigationTarget = void 0; const type_util_1 = require("../utils/type-util"); const base_protocol_1 = require("./base-protocol"); var NavigationTarget; (function (NavigationTarget) { function is(object) { return type_util_1.AnyObject.is(object) && (0, type_util_1.hasStringProp)(object, 'uri'); } NavigationTarget.is = is; /** * Generic key to store element ids as additional argument */ NavigationTarget.ELEMENT_IDS = 'elementIds'; /** * The separator that is used to store he values for the {@link ELEMENT_IDS} as a single string. */ NavigationTarget.ELEMENT_IDS_SEPARATOR = '&'; /** * Generic key ot store the line property of a {@link TextPosition} as additional argument. */ NavigationTarget.TEXT_LINE = 'line'; /** * Generic key ot store the character property of a {@link TextPosition} as additional argument. */ NavigationTarget.TEXT_COLUMN = 'column'; /** * Utility function to check wether the given {@link NavigationTarget} has additional arguments defined. * @param target The navigation target to check. * @returns `true` if the navigation target has a non-empty `args` property, `false` */ function hasArguments(target) { return target.args !== undefined && Object.keys(target.args).length > 0; } NavigationTarget.hasArguments = hasArguments; /** * Adds a new key-value pair to the additional arguments of the given {@link NavigationTarget}. * @param target The navigation target. * @param key The key of the new argument. * @param value The (primitive) value of the new argument. */ function addArgument(target, key, value) { if (!target.args) { target.args = {}; } target.args[key] = value; } NavigationTarget.addArgument = addArgument; /** * Retrieves the element ids that have been stored with the generic {@link ELEMENT_IDS} key from the args of the * given target. * @param target The navigation target. * @returns An array with the parsed element ids. The array is empty if no {@link ELEMENT_IDS} key is present in the args * of the navigation target. */ function getElementIds(target) { var _a; if (!((_a = target === null || target === void 0 ? void 0 : target.args) === null || _a === void 0 ? void 0 : _a[NavigationTarget.ELEMENT_IDS])) { return []; } const elementIdsValue = target.args[NavigationTarget.ELEMENT_IDS].toString(); return elementIdsValue.split(NavigationTarget.ELEMENT_IDS_SEPARATOR); } NavigationTarget.getElementIds = getElementIds; /** * Stores the given element ids in the given {@link NavigationTarget} as additional arguments using the generic {@link ELEMENT_IDS} key. * @param target The navigation target. * @param elementIds The element ids that should be stored. * @returns the value of the {@link ELEMENT_IDS} key after storing the given element ids. */ function setElementIds(target, ...elementIds) { if (target.args === undefined) { target.args = {}; } return (target.args[NavigationTarget.ELEMENT_IDS] = elementIds.join(NavigationTarget.ELEMENT_IDS_SEPARATOR)); } NavigationTarget.setElementIds = setElementIds; /** * Stores the given {@link TextPosition} in the given {@link NavigationTarget} as additional arguments using * the generic {@link TEXT_LINE} & {@link TEXT_COLUMN} keys. * @param target The navigation target. * @param position The text position that should be stored. */ function setTextPosition(target, position) { if (position) { if (target.args === undefined) { target.args = {}; } target.args[NavigationTarget.TEXT_LINE] = position.line; target.args[NavigationTarget.TEXT_COLUMN] = position.character; } } NavigationTarget.setTextPosition = setTextPosition; /** * Retrieves the {@link TextPosition} that have been stored with the generic {@link TEXT_LINE} & {@link TEXT_COLUMN} keys * from the args of the given target. * @param target The navigation target. * @returns The parsed text position or `undefined` if one of the generic text keys is not present in the args * of the navigation target. */ function getTextPosition(target) { if (!target.args || !target.args[NavigationTarget.TEXT_LINE] || !target.args[NavigationTarget.TEXT_COLUMN]) { return undefined; } return { line: Number(target.args[NavigationTarget.TEXT_LINE]), character: Number(target.args[NavigationTarget.TEXT_COLUMN]) }; } NavigationTarget.getTextPosition = getTextPosition; })(NavigationTarget || (exports.NavigationTarget = NavigationTarget = {})); var RequestNavigationTargetsAction; (function (RequestNavigationTargetsAction) { RequestNavigationTargetsAction.KIND = 'requestNavigationTargets'; function is(object) { return base_protocol_1.RequestAction.hasKind(object, RequestNavigationTargetsAction.KIND) && (0, type_util_1.hasStringProp)(object, 'targetTypeId') && (0, type_util_1.hasObjectProp)(object, 'editorContext'); } RequestNavigationTargetsAction.is = is; function create(options) { return { kind: RequestNavigationTargetsAction.KIND, requestId: '', ...options }; } RequestNavigationTargetsAction.create = create; })(RequestNavigationTargetsAction || (exports.RequestNavigationTargetsAction = RequestNavigationTargetsAction = {})); var SetNavigationTargetsAction; (function (SetNavigationTargetsAction) { SetNavigationTargetsAction.KIND = 'setNavigationTargets'; function is(object) { return base_protocol_1.Action.hasKind(object, SetNavigationTargetsAction.KIND) && (0, type_util_1.hasArrayProp)(object, 'targets'); } SetNavigationTargetsAction.is = is; function create(targets, options = {}) { return { kind: SetNavigationTargetsAction.KIND, responseId: '', targets, ...options }; } SetNavigationTargetsAction.create = create; })(SetNavigationTargetsAction || (exports.SetNavigationTargetsAction = SetNavigationTargetsAction = {})); var NavigateToTargetAction; (function (NavigateToTargetAction) { NavigateToTargetAction.KIND = 'navigateToTarget'; function is(object) { return base_protocol_1.Action.hasKind(object, NavigateToTargetAction.KIND) && (0, type_util_1.hasObjectProp)(object, 'target'); } NavigateToTargetAction.is = is; function create(target) { return { kind: NavigateToTargetAction.KIND, target }; } NavigateToTargetAction.create = create; })(NavigateToTargetAction || (exports.NavigateToTargetAction = NavigateToTargetAction = {})); var ResolveNavigationTargetAction; (function (ResolveNavigationTargetAction) { ResolveNavigationTargetAction.KIND = 'resolveNavigationTarget'; function is(object) { return base_protocol_1.RequestAction.hasKind(object, ResolveNavigationTargetAction.KIND) && (0, type_util_1.hasObjectProp)(object, 'navigationTarget'); } ResolveNavigationTargetAction.is = is; function create(navigationTarget, options = {}) { return { kind: ResolveNavigationTargetAction.KIND, requestId: '', navigationTarget, ...options }; } ResolveNavigationTargetAction.create = create; })(ResolveNavigationTargetAction || (exports.ResolveNavigationTargetAction = ResolveNavigationTargetAction = {})); var SetResolvedNavigationTargetAction; (function (SetResolvedNavigationTargetAction) { SetResolvedNavigationTargetAction.KIND = 'setResolvedNavigationTarget'; function is(object) { return base_protocol_1.Action.hasKind(object, SetResolvedNavigationTargetAction.KIND) && (0, type_util_1.hasArrayProp)(object, 'elementIds'); } SetResolvedNavigationTargetAction.is = is; function create(elementIds, options = {}) { return { kind: SetResolvedNavigationTargetAction.KIND, responseId: '', elementIds, ...options }; } SetResolvedNavigationTargetAction.create = create; })(SetResolvedNavigationTargetAction || (exports.SetResolvedNavigationTargetAction = SetResolvedNavigationTargetAction = {})); var NavigateToExternalTargetAction; (function (NavigateToExternalTargetAction) { NavigateToExternalTargetAction.KIND = 'navigateToExternalTarget'; function is(object) { return base_protocol_1.Action.hasKind(object, NavigateToExternalTargetAction.KIND) && (0, type_util_1.hasObjectProp)(object, 'target'); } NavigateToExternalTargetAction.is = is; function create(target) { return { kind: NavigateToExternalTargetAction.KIND, target }; } NavigateToExternalTargetAction.create = create; })(NavigateToExternalTargetAction || (exports.NavigateToExternalTargetAction = NavigateToExternalTargetAction = {})); //# sourceMappingURL=element-navigation.js.map