UNPKG

@backstage/backend-plugin-api

Version:

Core API used by Backstage backend plugins

70 lines (66 loc) 2.02 kB
'use strict'; var constants = require('./constants.cjs.js'); function createBackendPlugin(options) { if (!constants.ID_PATTERN.test(options.pluginId)) { console.warn( `WARNING: The pluginId '${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.pluginId)) { throw new Error( `Invalid pluginId '${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.pluginId}` ); } return [ { type: "plugin-v1.1", pluginId: options.pluginId, extensionPoints, init } ]; } return { $$type: "@backstage/BackendFeature", version: "v1", featureType: "registrations", getRegistrations }; } exports.createBackendPlugin = createBackendPlugin; //# sourceMappingURL=createBackendPlugin.cjs.js.map