UNPKG

@omnia/tooling-composers

Version:

Provide tooling to work with manifest things.

98 lines (97 loc) 4.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ManifestRegistry = exports.StaticServerManifestProviderProxy = exports.StaticClientManifestProviderProxy = void 0; const Utils_1 = require("./Utils"); class StaticClientManifestProviderProxy { constructor(getClientManifestsFunc, clearStateFunc) { this.clearState = clearStateFunc; this.getClientManifests = getClientManifestsFunc; } } exports.StaticClientManifestProviderProxy = StaticClientManifestProviderProxy; class StaticServerManifestProviderProxy { constructor(getServerManifestsFunc, clearStateFunc) { this.clearState = clearStateFunc; this.getServerManifests = getServerManifestsFunc; } } exports.StaticServerManifestProviderProxy = StaticServerManifestProviderProxy; class ManifestRegistry { } exports.ManifestRegistry = ManifestRegistry; ManifestRegistry.CurrentManifestPath = null; ManifestRegistry.ClientManifestProviders = []; ManifestRegistry.ServerManifestProviders = []; ManifestRegistry.ResetableManifestProviders = []; ManifestRegistry.registerClientManifestProvider = (provider) => { if (!provider) { throw new Error("Unexpected state, client manifest provider can't be null/undefined"); } ManifestRegistry.ClientManifestProviders.push(provider); ManifestRegistry.addResetableProvider(provider); }; ManifestRegistry.registerServerManifestProvider = (provider) => { if (!provider) { throw new Error("Unexpected state, server manifest provider can't be null/undefined"); } ManifestRegistry.ServerManifestProviders.push(provider); ManifestRegistry.addResetableProvider(provider); }; ManifestRegistry.setCurrentManifestPath = (manifestPath = null) => { ManifestRegistry.CurrentManifestPath = manifestPath; }; ManifestRegistry.getCurrentManifestPath = () => { if (!ManifestRegistry.CurrentManifestPath) { throw new Error("Unexpected usage, build step should set CurrentManifestPath before triggering manifest registration (build configuration error)"); } return ManifestRegistry.CurrentManifestPath; }; ManifestRegistry.getClientManifests = (currentServiceId) => { currentServiceId = Utils_1.Utils.ensureValidServiceId(currentServiceId, "Can't get client manifests for service id undefined/empty/null"); let manifestsByType = {}; for (let provider of ManifestRegistry.ClientManifestProviders) { let providerManifests = provider.getClientManifests(currentServiceId); for (let m of providerManifests) { if (manifestsByType[m.manifestType] == null) { manifestsByType[m.manifestType] = []; } manifestsByType[m.manifestType].push(m); } } return manifestsByType; }; ManifestRegistry.getServerManifests = (currentOmniaServiceId) => { currentOmniaServiceId = Utils_1.Utils.ensureValidServiceId(currentOmniaServiceId, "Can't get server manifests for omnia service id undefined/empty/null"); let manifestsByType = {}; for (let provider of ManifestRegistry.ServerManifestProviders) { let providerManifests = provider.getServerManifests(currentOmniaServiceId); for (let m of providerManifests) { if (manifestsByType[m.manifestType] == null) { manifestsByType[m.manifestType] = []; } manifestsByType[m.manifestType].push(m); } } return manifestsByType; }; ManifestRegistry.clearState = () => { for (let p of ManifestRegistry.ResetableManifestProviders) { p.clearState(); } }; ManifestRegistry.addResetableProvider = (provider) => { if (!provider || provider.clearState == null) { throw new Error("Unexpected state, manifest provider can't have clearstate null/undefined"); } let alreadyRegistered = false; for (let p of ManifestRegistry.ResetableManifestProviders) { if (p.clearState === provider.clearState) { alreadyRegistered = true; break; } } if (!alreadyRegistered) { ManifestRegistry.ResetableManifestProviders.push(provider); } };