UNPKG

sprotty

Version:

A next-gen framework for graphical views

192 lines 6.57 kB
"use strict"; /******************************************************************************** * Copyright (c) 2017-2024 TypeFox and others. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0 which is available at * http://www.eclipse.org/legal/epl-2.0. * * This Source Code may also be made available under the following Secondary * Licenses when the conditions for such availability set forth in the Eclipse * Public License v. 2.0 are satisfied: GNU General Public License, version 2 * with the GNU Classpath Exception which is available at * https://www.gnu.org/software/classpath/license.html. * * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 ********************************************************************************/ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.MultiInstanceRegistry = exports.InstanceRegistry = exports.FactoryRegistry = exports.ProviderRegistry = void 0; const inversify_1 = require("inversify"); let ProviderRegistry = class ProviderRegistry { constructor() { this.elements = new Map; } register(key, cstr) { if (key === undefined) throw new Error('Key is undefined'); if (this.hasKey(key)) throw new Error('Key is already registered: ' + key); this.elements.set(key, cstr); } deregister(key) { if (key === undefined) throw new Error('Key is undefined'); this.elements.delete(key); } hasKey(key) { return this.elements.has(key); } get(key, arg) { const existingCstr = this.elements.get(key); if (existingCstr) return new existingCstr(arg); else return this.missing(key, arg); } missing(key, arg) { throw new Error('Unknown registry key: ' + key); } }; exports.ProviderRegistry = ProviderRegistry; exports.ProviderRegistry = ProviderRegistry = __decorate([ (0, inversify_1.injectable)() ], ProviderRegistry); let FactoryRegistry = class FactoryRegistry { constructor() { this.elements = new Map; } register(key, factory) { if (key === undefined) { throw new Error('Key is undefined'); } if (this.hasKey(key)) { throw new Error(`Key is already registered: ${key}. Use \`overrideModelElement\` instead.`); } this.elements.set(key, factory); } override(key, factory) { if (key === undefined) { throw new Error('Key is undefined'); } else if (!this.hasKey(key)) { throw new Error(`Key is not registered: ${key}. Use \`configureModelElement\` instead.`); } this.elements.set(key, factory); } deregister(key) { if (key === undefined) { throw new Error('Key is undefined'); } this.elements.delete(key); } hasKey(key) { return this.elements.has(key); } get(key, arg) { const existingFactory = this.elements.get(key); if (existingFactory) { return existingFactory(arg); } else { return this.missing(key, arg); } } missing(key, arg) { throw new Error('Unknown registry key: ' + key); } }; exports.FactoryRegistry = FactoryRegistry; exports.FactoryRegistry = FactoryRegistry = __decorate([ (0, inversify_1.injectable)() ], FactoryRegistry); let InstanceRegistry = class InstanceRegistry { constructor() { this.elements = new Map; } register(key, instance) { if (key === undefined) { throw new Error('Key is undefined'); } if (this.hasKey(key)) { throw new Error(`Key is already registered: ${key}. Use \`overrideModelElement\` instead.`); } this.elements.set(key, instance); } override(key, instance) { if (key === undefined) { throw new Error('Key is undefined'); } else if (!this.hasKey(key)) { throw new Error(`Key is not registered: ${key}. Use \`configureModelElement\` instead.`); } this.elements.set(key, instance); } deregister(key) { if (key === undefined) { throw new Error('Key is undefined'); } this.elements.delete(key); } hasKey(key) { return this.elements.has(key); } get(key) { const existingInstance = this.elements.get(key); if (existingInstance) { return existingInstance; } else { return this.missing(key); } } missing(key) { throw new Error('Unknown registry key: ' + key); } }; exports.InstanceRegistry = InstanceRegistry; exports.InstanceRegistry = InstanceRegistry = __decorate([ (0, inversify_1.injectable)() ], InstanceRegistry); let MultiInstanceRegistry = class MultiInstanceRegistry { constructor() { this.elements = new Map; } register(key, instance) { if (key === undefined) { throw new Error('Key is undefined'); } const instances = this.elements.get(key); if (instances !== undefined) { instances.push(instance); } else { this.elements.set(key, [instance]); } } deregisterAll(key) { if (key === undefined) { throw new Error('Key is undefined'); } this.elements.delete(key); } get(key) { const existingInstances = this.elements.get(key); if (existingInstances !== undefined) { return existingInstances; } else { return []; } } }; exports.MultiInstanceRegistry = MultiInstanceRegistry; exports.MultiInstanceRegistry = MultiInstanceRegistry = __decorate([ (0, inversify_1.injectable)() ], MultiInstanceRegistry); //# sourceMappingURL=registry.js.map