@omnia/tooling-composers
Version:
Provide tooling to work with manifest things.
98 lines (97 loc) • 4.15 kB
JavaScript
;
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);
}
};