123456789101112131415161718192021222324252627282930313233343536373839404142 |
- /*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
- // ------ internal util
- export var _util;
- (function (_util) {
- _util.serviceIds = new Map();
- _util.DI_TARGET = '$di$target';
- _util.DI_DEPENDENCIES = '$di$dependencies';
- function getServiceDependencies(ctor) {
- return ctor[_util.DI_DEPENDENCIES] || [];
- }
- _util.getServiceDependencies = getServiceDependencies;
- })(_util || (_util = {}));
- export const IInstantiationService = createDecorator('instantiationService');
- function storeServiceDependency(id, target, index, optional) {
- if (target[_util.DI_TARGET] === target) {
- target[_util.DI_DEPENDENCIES].push({ id, index, optional });
- }
- else {
- target[_util.DI_DEPENDENCIES] = [{ id, index, optional }];
- target[_util.DI_TARGET] = target;
- }
- }
- /**
- * The *only* valid way to create a {{ServiceIdentifier}}.
- */
- export function createDecorator(serviceId) {
- if (_util.serviceIds.has(serviceId)) {
- return _util.serviceIds.get(serviceId);
- }
- const id = function (target, key, index) {
- if (arguments.length !== 3) {
- throw new Error('@IServiceName-decorator can only be used to decorate a parameter');
- }
- storeServiceDependency(id, target, index, false);
- };
- id.toString = () => serviceId;
- _util.serviceIds.set(serviceId, id);
- return id;
- }
|