@backstage/backend-plugin-api
Version:
Core API used by Backstage backend plugins
71 lines (67 loc) • 2.16 kB
JavaScript
;
var constants = require('./constants.cjs.js');
function createBackendModule(options) {
if (!constants.ID_PATTERN.test(options.moduleId)) {
console.warn(
`WARNING: The moduleId '${options.moduleId}' for plugin '${options.pluginId}', will be invalid soon, please change it to match the pattern ${constants.ID_PATTERN} (letters, digits, and dashes only, starting with a letter)`
);
}
if (!constants.ID_PATTERN_OLD.test(options.moduleId)) {
throw new Error(
`Invalid moduleId '${options.moduleId}' for plugin '${options.pluginId}', must match the pattern ${constants.ID_PATTERN} (letters, digits, and dashes only, starting with a letter)`
);
}
function getRegistrations() {
const extensionPoints = [];
let init = void 0;
options.register({
registerExtensionPoint(extOrOpts, impl) {
if (init) {
throw new Error("registerExtensionPoint called after registerInit");
}
if (typeof extOrOpts === "object" && extOrOpts !== null && "extensionPoint" in extOrOpts) {
extensionPoints.push({
extensionPoint: extOrOpts.extensionPoint,
factory: extOrOpts.factory
});
} else {
extensionPoints.push({
extensionPoint: extOrOpts,
factory: () => impl
});
}
},
registerInit(regInit) {
if (init) {
throw new Error("registerInit must only be called once");
}
init = {
deps: regInit.deps,
func: regInit.init
};
}
});
if (!init) {
throw new Error(
`registerInit was not called by register in ${options.moduleId} module for ${options.pluginId}`
);
}
return [
{
type: "module-v1.1",
pluginId: options.pluginId,
moduleId: options.moduleId,
extensionPoints,
init
}
];
}
return {
$$type: "@backstage/BackendFeature",
featureType: "registrations",
version: "v1",
getRegistrations
};
}
exports.createBackendModule = createBackendModule;
//# sourceMappingURL=createBackendModule.cjs.js.map