@backstage/backend-app-api 0.0.0-nightly-20220824025846 → 0.0.0-nightly-20220827025548
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of @backstage/backend-app-api might be problematic. Click here for more details.
- package/CHANGELOG.md +5 -5
- package/alpha/package.json +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
# @backstage/backend-app-api
|
|
2
2
|
|
|
3
|
-
## 0.0.0-nightly-
|
|
3
|
+
## 0.0.0-nightly-20220827025548
|
|
4
4
|
|
|
5
5
|
### Patch Changes
|
|
6
6
|
|
|
7
7
|
- de3347ca74: Updated usages of `ServiceFactory`.
|
|
8
8
|
- Updated dependencies
|
|
9
|
-
- @backstage/backend-common@0.0.0-nightly-
|
|
10
|
-
- @backstage/
|
|
11
|
-
- @backstage/backend-
|
|
12
|
-
- @backstage/plugin-
|
|
9
|
+
- @backstage/backend-common@0.0.0-nightly-20220827025548
|
|
10
|
+
- @backstage/plugin-permission-node@0.0.0-nightly-20220827025548
|
|
11
|
+
- @backstage/backend-tasks@0.0.0-nightly-20220827025548
|
|
12
|
+
- @backstage/backend-plugin-api@0.0.0-nightly-20220827025548
|
|
13
13
|
|
|
14
14
|
## 0.2.1-next.0
|
|
15
15
|
|
package/alpha/package.json
CHANGED
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/wiring/BackendInitializer.ts","../src/wiring/ServiceRegistry.ts","../src/wiring/BackstageBackend.ts","../src/wiring/types.ts","../src/services/implementations/cacheService.ts","../src/services/implementations/configService.ts","../src/services/implementations/databaseService.ts","../src/services/implementations/discoveryService.ts","../src/services/implementations/loggerService.ts","../src/services/implementations/permissionsService.ts","../src/services/implementations/schedulerService.ts","../src/services/implementations/tokenManagerService.ts","../src/services/implementations/urlReaderService.ts","../src/services/implementations/httpRouterService.ts"],"sourcesContent":["/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n BackendFeature,\n ExtensionPoint,\n ServiceRef,\n} from '@backstage/backend-plugin-api';\nimport {\n BackendRegisterInit,\n ServiceHolder,\n ServiceOrExtensionPoint,\n} from './types';\n\nexport class BackendInitializer {\n #started = false;\n #features = new Map<BackendFeature, unknown>();\n #registerInits = new Array<BackendRegisterInit>();\n #extensionPoints = new Map<ExtensionPoint<unknown>, unknown>();\n #serviceHolder: ServiceHolder;\n\n constructor(serviceHolder: ServiceHolder) {\n this.#serviceHolder = serviceHolder;\n }\n\n async #getInitDeps(\n deps: { [name: string]: ServiceOrExtensionPoint },\n pluginId: string,\n ) {\n const result = new Map<string, unknown>();\n const missingRefs = new Set<ServiceOrExtensionPoint>();\n\n for (const [name, ref] of Object.entries(deps)) {\n const extensionPoint = this.#extensionPoints.get(\n ref as ExtensionPoint<unknown>,\n );\n if (extensionPoint) {\n result.set(name, extensionPoint);\n } else {\n const factory = await this.#serviceHolder.get(\n ref as ServiceRef<unknown>,\n );\n if (factory) {\n result.set(name, await factory(pluginId));\n } else {\n missingRefs.add(ref);\n }\n }\n }\n\n if (missingRefs.size > 0) {\n const missing = Array.from(missingRefs).join(', ');\n throw new Error(\n `No extension point or service available for the following ref(s): ${missing}`,\n );\n }\n\n return Object.fromEntries(result);\n }\n\n add<TOptions>(feature: BackendFeature, options?: TOptions) {\n if (this.#started) {\n throw new Error('feature can not be added after the backend has started');\n }\n this.#features.set(feature, options);\n }\n\n async start(): Promise<void> {\n if (this.#started) {\n throw new Error('Backend has already started');\n }\n this.#started = true;\n\n for (const [feature] of this.#features) {\n const provides = new Set<ExtensionPoint<unknown>>();\n\n let registerInit: BackendRegisterInit | undefined = undefined;\n\n feature.register({\n registerExtensionPoint: (extensionPointRef, impl) => {\n if (registerInit) {\n throw new Error('registerExtensionPoint called after registerInit');\n }\n if (this.#extensionPoints.has(extensionPointRef)) {\n throw new Error(`API ${extensionPointRef.id} already registered`);\n }\n this.#extensionPoints.set(extensionPointRef, impl);\n provides.add(extensionPointRef);\n },\n registerInit: registerOptions => {\n if (registerInit) {\n throw new Error('registerInit must only be called once');\n }\n registerInit = {\n id: feature.id,\n provides,\n consumes: new Set(Object.values(registerOptions.deps)),\n deps: registerOptions.deps as {\n [name: string]: ServiceOrExtensionPoint;\n },\n init: registerOptions.init as BackendRegisterInit['init'],\n };\n },\n });\n\n if (!registerInit) {\n throw new Error(\n `registerInit was not called by register in ${feature.id}`,\n );\n }\n\n this.#registerInits.push(registerInit);\n }\n\n const orderedRegisterResults = this.#resolveInitOrder(this.#registerInits);\n\n for (const registerInit of orderedRegisterResults) {\n const deps = await this.#getInitDeps(registerInit.deps, registerInit.id);\n await registerInit.init(deps);\n }\n }\n\n #resolveInitOrder(registerInits: Array<BackendRegisterInit>) {\n let registerInitsToOrder = registerInits.slice();\n const orderedRegisterInits = new Array<BackendRegisterInit>();\n\n // TODO: Validate duplicates\n\n while (registerInitsToOrder.length > 0) {\n const toRemove = new Set<unknown>();\n\n for (const registerInit of registerInitsToOrder) {\n const unInitializedDependents = [];\n\n for (const provided of registerInit.provides) {\n if (\n registerInitsToOrder.some(\n init => init !== registerInit && init.consumes.has(provided),\n )\n ) {\n unInitializedDependents.push(provided);\n }\n }\n\n if (unInitializedDependents.length === 0) {\n orderedRegisterInits.push(registerInit);\n toRemove.add(registerInit);\n }\n }\n\n registerInitsToOrder = registerInitsToOrder.filter(r => !toRemove.has(r));\n }\n\n return orderedRegisterInits;\n }\n}\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ServiceFactory,\n FactoryFunc,\n ServiceRef,\n} from '@backstage/backend-plugin-api';\n\nexport class ServiceRegistry {\n readonly #providedFactories: Map<string, ServiceFactory>;\n readonly #loadedDefaultFactories: Map<Function, ServiceFactory>;\n readonly #implementations: Map<ServiceFactory, Map<string, unknown>>;\n\n constructor(factories: ServiceFactory<any>[]) {\n this.#providedFactories = new Map(factories.map(f => [f.service.id, f]));\n this.#loadedDefaultFactories = new Map();\n this.#implementations = new Map();\n }\n\n get<T>(ref: ServiceRef<T>): FactoryFunc<T> | undefined {\n let factory = this.#providedFactories.get(ref.id);\n const { defaultFactory } = ref;\n if (!factory && !defaultFactory) {\n return undefined;\n }\n\n return async (pluginId: string): Promise<T> => {\n if (!factory) {\n let loadedFactory = this.#loadedDefaultFactories.get(defaultFactory!);\n if (!loadedFactory) {\n loadedFactory = (await defaultFactory!(ref)) as ServiceFactory;\n this.#loadedDefaultFactories.set(defaultFactory!, loadedFactory);\n }\n factory = loadedFactory;\n }\n\n let implementations = this.#implementations.get(factory);\n if (implementations) {\n if (implementations.has(pluginId)) {\n return implementations.get(pluginId) as T;\n }\n } else {\n implementations = new Map();\n this.#implementations.set(factory, implementations);\n }\n\n const factoryDeps = Object.fromEntries(\n Object.entries(factory.deps).map(([name, serviceRef]) => [\n name,\n this.get(serviceRef)!, // TODO: throw\n ]),\n );\n\n const factoryFunc = await factory.factory(factoryDeps);\n const implementation = await factoryFunc(pluginId);\n\n implementations.set(pluginId, implementation);\n\n return implementation as T;\n };\n }\n}\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ServiceFactory, BackendFeature } from '@backstage/backend-plugin-api';\nimport { BackendInitializer } from './BackendInitializer';\nimport { ServiceRegistry } from './ServiceRegistry';\nimport { Backend } from './types';\n\nexport class BackstageBackend implements Backend {\n #services: ServiceRegistry;\n #initializer: BackendInitializer;\n\n constructor(apiFactories: ServiceFactory[]) {\n this.#services = new ServiceRegistry(apiFactories);\n this.#initializer = new BackendInitializer(this.#services);\n }\n\n add(feature: BackendFeature): void {\n this.#initializer.add(feature);\n }\n\n async start(): Promise<void> {\n await this.#initializer.start();\n }\n\n // async stop(): Promise<void> {\n // await this.#initializer.stop();\n // }\n}\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ServiceFactory,\n BackendFeature,\n ExtensionPoint,\n FactoryFunc,\n ServiceRef,\n} from '@backstage/backend-plugin-api';\nimport { BackstageBackend } from './BackstageBackend';\n\n/**\n * @public\n */\nexport interface Backend {\n add(feature: BackendFeature): void;\n start(): Promise<void>;\n}\n\nexport interface BackendRegisterInit {\n id: string;\n consumes: Set<ServiceOrExtensionPoint>;\n provides: Set<ServiceOrExtensionPoint>;\n deps: { [name: string]: ServiceOrExtensionPoint };\n init: (deps: { [name: string]: unknown }) => Promise<void>;\n}\n\n/**\n * @public\n */\nexport interface CreateSpecializedBackendOptions {\n services: ServiceFactory[];\n}\n\nexport type ServiceHolder = {\n get<T>(api: ServiceRef<T>): FactoryFunc<T> | undefined;\n};\n\n/**\n * @public\n */\nexport function createSpecializedBackend(\n options: CreateSpecializedBackendOptions,\n): Backend {\n return new BackstageBackend(options.services);\n}\n\n/**\n * @public\n */\nexport type ServiceOrExtensionPoint<T = unknown> =\n | ExtensionPoint<T>\n | ServiceRef<T>;\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CacheManager } from '@backstage/backend-common';\nimport {\n configServiceRef,\n createServiceFactory,\n cacheServiceRef,\n} from '@backstage/backend-plugin-api';\n\n/** @public */\nexport const cacheFactory = createServiceFactory({\n service: cacheServiceRef,\n deps: {\n configFactory: configServiceRef,\n },\n factory: async ({ configFactory }) => {\n const config = await configFactory('root');\n const cacheManager = CacheManager.fromConfig(config);\n return async (pluginId: string) => {\n return cacheManager.forPlugin(pluginId);\n };\n },\n});\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { loadBackendConfig } from '@backstage/backend-common';\nimport {\n configServiceRef,\n createServiceFactory,\n loggerToWinstonLogger,\n loggerServiceRef,\n} from '@backstage/backend-plugin-api';\n\n/** @public */\nexport const configFactory = createServiceFactory({\n service: configServiceRef,\n deps: {\n loggerFactory: loggerServiceRef,\n },\n factory: async ({ loggerFactory }) => {\n const logger = await loggerFactory('root');\n const config = await loadBackendConfig({\n argv: process.argv,\n logger: loggerToWinstonLogger(logger),\n });\n return async () => {\n return config;\n };\n },\n});\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DatabaseManager } from '@backstage/backend-common';\nimport {\n configServiceRef,\n createServiceFactory,\n databaseServiceRef,\n} from '@backstage/backend-plugin-api';\n\n/** @public */\nexport const databaseFactory = createServiceFactory({\n service: databaseServiceRef,\n deps: {\n configFactory: configServiceRef,\n },\n factory: async ({ configFactory }) => {\n const config = await configFactory('root');\n const databaseManager = DatabaseManager.fromConfig(config);\n return async (pluginId: string) => {\n return databaseManager.forPlugin(pluginId);\n };\n },\n});\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SingleHostDiscovery } from '@backstage/backend-common';\nimport {\n configServiceRef,\n createServiceFactory,\n discoveryServiceRef,\n} from '@backstage/backend-plugin-api';\n\n/** @public */\nexport const discoveryFactory = createServiceFactory({\n service: discoveryServiceRef,\n deps: {\n configFactory: configServiceRef,\n },\n factory: async ({ configFactory }) => {\n const config = await configFactory('root');\n const discovery = SingleHostDiscovery.fromConfig(config);\n return async () => {\n return discovery;\n };\n },\n});\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createRootLogger } from '@backstage/backend-common';\nimport {\n createServiceFactory,\n Logger,\n loggerServiceRef,\n} from '@backstage/backend-plugin-api';\nimport { Logger as WinstonLogger } from 'winston';\n\nclass BackstageLogger implements Logger {\n static fromWinston(logger: WinstonLogger): BackstageLogger {\n return new BackstageLogger(logger);\n }\n\n private constructor(private readonly winston: WinstonLogger) {}\n\n info(message: string, ...meta: any[]): void {\n this.winston.info(message, ...meta);\n }\n\n child(fields: { [name: string]: string }): Logger {\n return new BackstageLogger(this.winston.child(fields));\n }\n}\n\n/** @public */\nexport const loggerFactory = createServiceFactory({\n service: loggerServiceRef,\n deps: {},\n factory: async () => {\n const root = BackstageLogger.fromWinston(createRootLogger());\n return async (pluginId: string) => {\n return root.child({ pluginId });\n };\n },\n});\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n configServiceRef,\n createServiceFactory,\n discoveryServiceRef,\n permissionsServiceRef,\n tokenManagerServiceRef,\n} from '@backstage/backend-plugin-api';\nimport { ServerPermissionClient } from '@backstage/plugin-permission-node';\n\n/** @public */\nexport const permissionsFactory = createServiceFactory({\n service: permissionsServiceRef,\n deps: {\n configFactory: configServiceRef,\n discoveryFactory: discoveryServiceRef,\n tokenManagerFactory: tokenManagerServiceRef,\n },\n factory: async ({ configFactory, discoveryFactory, tokenManagerFactory }) => {\n const config = await configFactory('root');\n const discovery = await discoveryFactory('root');\n const tokenManager = await tokenManagerFactory('root');\n const permissions = ServerPermissionClient.fromConfig(config, {\n discovery,\n tokenManager,\n });\n return async (_pluginId: string) => {\n return permissions;\n };\n },\n});\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n configServiceRef,\n createServiceFactory,\n schedulerServiceRef,\n} from '@backstage/backend-plugin-api';\nimport { TaskScheduler } from '@backstage/backend-tasks';\n\n/** @public */\nexport const schedulerFactory = createServiceFactory({\n service: schedulerServiceRef,\n deps: {\n configFactory: configServiceRef,\n },\n factory: async ({ configFactory }) => {\n const config = await configFactory('root');\n const taskScheduler = TaskScheduler.fromConfig(config);\n return async (pluginId: string) => {\n return taskScheduler.forPlugin(pluginId);\n };\n },\n});\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n configServiceRef,\n loggerServiceRef,\n createServiceFactory,\n tokenManagerServiceRef,\n loggerToWinstonLogger,\n} from '@backstage/backend-plugin-api';\nimport { ServerTokenManager } from '@backstage/backend-common';\n\n/** @public */\nexport const tokenManagerFactory = createServiceFactory({\n service: tokenManagerServiceRef,\n deps: {\n configFactory: configServiceRef,\n loggerFactory: loggerServiceRef,\n },\n factory: async ({ configFactory, loggerFactory }) => {\n const logger = await loggerFactory('root');\n const config = await configFactory('root');\n return async (_pluginId: string) => {\n // doesn't the logger want to be inferred from the plugin tho here?\n // maybe ... also why do we recreate it every time otherwise\n // we should memoize on a per plugin right? so I think it's should be fine to re-use the plugin one\n // we shouldn't recreate on a per plugin basis.\n // hm - on the other hand, is this really ever called more than once?\n // not this function right. should only be called when the plugin requests this serviceRef\n // yeah so no need to worry about memo probably\n // but we still want to scope the logger to the ServrTokenmanagfer>?\n // mm sure maybe\n // maybe in this case it doesn't provide so much value b\n // oh hang on - isn't it up to THE MANAGER to make a child internally if it wants to do that\n // so that it becomes a property intrinsic to that class, no matter how it's constructed\n // or is that too much responsibility for it - making the constructor complex so to speak, making it harder to tweak that behavior\n // this is not ultra efficient :)\n\n // I think the naming here is wrong to be gonest\n // this isn't like the cache manager or the database manager\n // the manager name is confusuion i think\n // aye perhaps\n return ServerTokenManager.fromConfig(config, {\n logger: loggerToWinstonLogger(logger),\n });\n };\n },\n});\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { UrlReaders } from '@backstage/backend-common';\nimport {\n configServiceRef,\n createServiceFactory,\n loggerServiceRef,\n loggerToWinstonLogger,\n urlReaderServiceRef,\n} from '@backstage/backend-plugin-api';\n\n/** @public */\nexport const urlReaderFactory = createServiceFactory({\n service: urlReaderServiceRef,\n deps: {\n configFactory: configServiceRef,\n loggerFactory: loggerServiceRef,\n },\n factory: async ({ configFactory, loggerFactory }) => {\n return async (pluginId: string) => {\n const logger = await loggerFactory(pluginId);\n return UrlReaders.default({\n logger: loggerToWinstonLogger(logger),\n config: await configFactory(pluginId),\n });\n };\n },\n});\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n createServiceFactory,\n httpRouterServiceRef,\n configServiceRef,\n} from '@backstage/backend-plugin-api';\nimport Router from 'express-promise-router';\nimport { Handler } from 'express';\nimport { createServiceBuilder } from '@backstage/backend-common';\n\n/** @public */\nexport const httpRouterFactory = createServiceFactory({\n service: httpRouterServiceRef,\n deps: {\n configFactory: configServiceRef,\n },\n factory: async ({ configFactory }) => {\n const rootRouter = Router();\n\n const service = createServiceBuilder(module)\n .loadConfig(await configFactory('root'))\n .addRouter('', rootRouter);\n\n await service.start();\n\n return async (pluginId?: string) => {\n const path = pluginId ? `/api/${pluginId}` : '';\n return {\n use(handler: Handler) {\n rootRouter.use(path, handler);\n },\n };\n };\n },\n});\n"],"names":["__accessCheck","__privateGet","__privateAdd","__privateSet","createServiceFactory","cacheServiceRef","configServiceRef","CacheManager","loggerServiceRef","loadBackendConfig","loggerToWinstonLogger","databaseServiceRef","DatabaseManager","discoveryServiceRef","SingleHostDiscovery","createRootLogger","permissionsServiceRef","tokenManagerServiceRef","ServerPermissionClient","schedulerServiceRef","TaskScheduler","ServerTokenManager","urlReaderServiceRef","UrlReaders","httpRouterServiceRef","Router","createServiceBuilder"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/wiring/BackendInitializer.ts","../src/wiring/ServiceRegistry.ts","../src/wiring/BackstageBackend.ts","../src/wiring/types.ts","../src/services/implementations/cacheService.ts","../src/services/implementations/configService.ts","../src/services/implementations/databaseService.ts","../src/services/implementations/discoveryService.ts","../src/services/implementations/loggerService.ts","../src/services/implementations/permissionsService.ts","../src/services/implementations/schedulerService.ts","../src/services/implementations/tokenManagerService.ts","../src/services/implementations/urlReaderService.ts","../src/services/implementations/httpRouterService.ts"],"sourcesContent":["/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n BackendFeature,\n ExtensionPoint,\n ServiceRef,\n} from '@backstage/backend-plugin-api';\nimport {\n BackendRegisterInit,\n ServiceHolder,\n ServiceOrExtensionPoint,\n} from './types';\n\nexport class BackendInitializer {\n #started = false;\n #features = new Map<BackendFeature, unknown>();\n #registerInits = new Array<BackendRegisterInit>();\n #extensionPoints = new Map<ExtensionPoint<unknown>, unknown>();\n #serviceHolder: ServiceHolder;\n\n constructor(serviceHolder: ServiceHolder) {\n this.#serviceHolder = serviceHolder;\n }\n\n async #getInitDeps(\n deps: { [name: string]: ServiceOrExtensionPoint },\n pluginId: string,\n ) {\n const result = new Map<string, unknown>();\n const missingRefs = new Set<ServiceOrExtensionPoint>();\n\n for (const [name, ref] of Object.entries(deps)) {\n const extensionPoint = this.#extensionPoints.get(\n ref as ExtensionPoint<unknown>,\n );\n if (extensionPoint) {\n result.set(name, extensionPoint);\n } else {\n const factory = await this.#serviceHolder.get(\n ref as ServiceRef<unknown>,\n );\n if (factory) {\n result.set(name, await factory(pluginId));\n } else {\n missingRefs.add(ref);\n }\n }\n }\n\n if (missingRefs.size > 0) {\n const missing = Array.from(missingRefs).join(', ');\n throw new Error(\n `No extension point or service available for the following ref(s): ${missing}`,\n );\n }\n\n return Object.fromEntries(result);\n }\n\n add<TOptions>(feature: BackendFeature, options?: TOptions) {\n if (this.#started) {\n throw new Error('feature can not be added after the backend has started');\n }\n this.#features.set(feature, options);\n }\n\n async start(): Promise<void> {\n if (this.#started) {\n throw new Error('Backend has already started');\n }\n this.#started = true;\n\n for (const [feature] of this.#features) {\n const provides = new Set<ExtensionPoint<unknown>>();\n\n let registerInit: BackendRegisterInit | undefined = undefined;\n\n feature.register({\n registerExtensionPoint: (extensionPointRef, impl) => {\n if (registerInit) {\n throw new Error('registerExtensionPoint called after registerInit');\n }\n if (this.#extensionPoints.has(extensionPointRef)) {\n throw new Error(`API ${extensionPointRef.id} already registered`);\n }\n this.#extensionPoints.set(extensionPointRef, impl);\n provides.add(extensionPointRef);\n },\n registerInit: registerOptions => {\n if (registerInit) {\n throw new Error('registerInit must only be called once');\n }\n registerInit = {\n id: feature.id,\n provides,\n consumes: new Set(Object.values(registerOptions.deps)),\n deps: registerOptions.deps as {\n [name: string]: ServiceOrExtensionPoint;\n },\n init: registerOptions.init as BackendRegisterInit['init'],\n };\n },\n });\n\n if (!registerInit) {\n throw new Error(\n `registerInit was not called by register in ${feature.id}`,\n );\n }\n\n this.#registerInits.push(registerInit);\n }\n\n const orderedRegisterResults = this.#resolveInitOrder(this.#registerInits);\n\n for (const registerInit of orderedRegisterResults) {\n const deps = await this.#getInitDeps(registerInit.deps, registerInit.id);\n await registerInit.init(deps);\n }\n }\n\n #resolveInitOrder(registerInits: Array<BackendRegisterInit>) {\n let registerInitsToOrder = registerInits.slice();\n const orderedRegisterInits = new Array<BackendRegisterInit>();\n\n // TODO: Validate duplicates\n\n while (registerInitsToOrder.length > 0) {\n const toRemove = new Set<unknown>();\n\n for (const registerInit of registerInitsToOrder) {\n const unInitializedDependents = [];\n\n for (const provided of registerInit.provides) {\n if (\n registerInitsToOrder.some(\n init => init !== registerInit && init.consumes.has(provided),\n )\n ) {\n unInitializedDependents.push(provided);\n }\n }\n\n if (unInitializedDependents.length === 0) {\n orderedRegisterInits.push(registerInit);\n toRemove.add(registerInit);\n }\n }\n\n registerInitsToOrder = registerInitsToOrder.filter(r => !toRemove.has(r));\n }\n\n return orderedRegisterInits;\n }\n}\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ServiceFactory,\n FactoryFunc,\n ServiceRef,\n} from '@backstage/backend-plugin-api';\n\nexport class ServiceRegistry {\n readonly #providedFactories: Map<string, ServiceFactory>;\n readonly #loadedDefaultFactories: Map<Function, ServiceFactory>;\n readonly #implementations: Map<ServiceFactory, Map<string, unknown>>;\n\n constructor(factories: ServiceFactory<any>[]) {\n this.#providedFactories = new Map(factories.map(f => [f.service.id, f]));\n this.#loadedDefaultFactories = new Map();\n this.#implementations = new Map();\n }\n\n get<T>(ref: ServiceRef<T>): FactoryFunc<T> | undefined {\n let factory = this.#providedFactories.get(ref.id);\n const { defaultFactory } = ref;\n if (!factory && !defaultFactory) {\n return undefined;\n }\n\n return async (pluginId: string): Promise<T> => {\n if (!factory) {\n let loadedFactory = this.#loadedDefaultFactories.get(defaultFactory!);\n if (!loadedFactory) {\n loadedFactory = (await defaultFactory!(ref)) as ServiceFactory;\n this.#loadedDefaultFactories.set(defaultFactory!, loadedFactory);\n }\n factory = loadedFactory;\n }\n\n let implementations = this.#implementations.get(factory);\n if (implementations) {\n if (implementations.has(pluginId)) {\n return implementations.get(pluginId) as T;\n }\n } else {\n implementations = new Map();\n this.#implementations.set(factory, implementations);\n }\n\n const factoryDeps = Object.fromEntries(\n Object.entries(factory.deps).map(([name, serviceRef]) => [\n name,\n this.get(serviceRef)!, // TODO: throw\n ]),\n );\n\n const factoryFunc = await factory.factory(factoryDeps);\n const implementation = await factoryFunc(pluginId);\n\n implementations.set(pluginId, implementation);\n\n return implementation as T;\n };\n }\n}\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ServiceFactory, BackendFeature } from '@backstage/backend-plugin-api';\nimport { BackendInitializer } from './BackendInitializer';\nimport { ServiceRegistry } from './ServiceRegistry';\nimport { Backend } from './types';\n\nexport class BackstageBackend implements Backend {\n #services: ServiceRegistry;\n #initializer: BackendInitializer;\n\n constructor(apiFactories: ServiceFactory[]) {\n this.#services = new ServiceRegistry(apiFactories);\n this.#initializer = new BackendInitializer(this.#services);\n }\n\n add(feature: BackendFeature): void {\n this.#initializer.add(feature);\n }\n\n async start(): Promise<void> {\n await this.#initializer.start();\n }\n\n // async stop(): Promise<void> {\n // await this.#initializer.stop();\n // }\n}\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ServiceFactory,\n BackendFeature,\n ExtensionPoint,\n FactoryFunc,\n ServiceRef,\n} from '@backstage/backend-plugin-api';\nimport { BackstageBackend } from './BackstageBackend';\n\n/**\n * @public\n */\nexport interface Backend {\n add(feature: BackendFeature): void;\n start(): Promise<void>;\n}\n\nexport interface BackendRegisterInit {\n id: string;\n consumes: Set<ServiceOrExtensionPoint>;\n provides: Set<ServiceOrExtensionPoint>;\n deps: { [name: string]: ServiceOrExtensionPoint };\n init: (deps: { [name: string]: unknown }) => Promise<void>;\n}\n\n/**\n * @public\n */\nexport interface CreateSpecializedBackendOptions {\n services: ServiceFactory[];\n}\n\nexport type ServiceHolder = {\n get<T>(api: ServiceRef<T>): FactoryFunc<T> | undefined;\n};\n\n/**\n * @public\n */\nexport function createSpecializedBackend(\n options: CreateSpecializedBackendOptions,\n): Backend {\n return new BackstageBackend(options.services);\n}\n\n/**\n * @public\n */\nexport type ServiceOrExtensionPoint<T = unknown> =\n | ExtensionPoint<T>\n | ServiceRef<T>;\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CacheManager } from '@backstage/backend-common';\nimport {\n configServiceRef,\n createServiceFactory,\n cacheServiceRef,\n} from '@backstage/backend-plugin-api';\n\n/** @public */\nexport const cacheFactory = createServiceFactory({\n service: cacheServiceRef,\n deps: {\n configFactory: configServiceRef,\n },\n factory: async ({ configFactory }) => {\n const config = await configFactory('root');\n const cacheManager = CacheManager.fromConfig(config);\n return async (pluginId: string) => {\n return cacheManager.forPlugin(pluginId);\n };\n },\n});\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { loadBackendConfig } from '@backstage/backend-common';\nimport {\n configServiceRef,\n createServiceFactory,\n loggerToWinstonLogger,\n loggerServiceRef,\n} from '@backstage/backend-plugin-api';\n\n/** @public */\nexport const configFactory = createServiceFactory({\n service: configServiceRef,\n deps: {\n loggerFactory: loggerServiceRef,\n },\n factory: async ({ loggerFactory }) => {\n const logger = await loggerFactory('root');\n const config = await loadBackendConfig({\n argv: process.argv,\n logger: loggerToWinstonLogger(logger),\n });\n return async () => {\n return config;\n };\n },\n});\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DatabaseManager } from '@backstage/backend-common';\nimport {\n configServiceRef,\n createServiceFactory,\n databaseServiceRef,\n} from '@backstage/backend-plugin-api';\n\n/** @public */\nexport const databaseFactory = createServiceFactory({\n service: databaseServiceRef,\n deps: {\n configFactory: configServiceRef,\n },\n factory: async ({ configFactory }) => {\n const config = await configFactory('root');\n const databaseManager = DatabaseManager.fromConfig(config);\n return async (pluginId: string) => {\n return databaseManager.forPlugin(pluginId);\n };\n },\n});\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SingleHostDiscovery } from '@backstage/backend-common';\nimport {\n configServiceRef,\n createServiceFactory,\n discoveryServiceRef,\n} from '@backstage/backend-plugin-api';\n\n/** @public */\nexport const discoveryFactory = createServiceFactory({\n service: discoveryServiceRef,\n deps: {\n configFactory: configServiceRef,\n },\n factory: async ({ configFactory }) => {\n const config = await configFactory('root');\n const discovery = SingleHostDiscovery.fromConfig(config);\n return async () => {\n return discovery;\n };\n },\n});\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createRootLogger } from '@backstage/backend-common';\nimport {\n createServiceFactory,\n Logger,\n loggerServiceRef,\n} from '@backstage/backend-plugin-api';\nimport { Logger as WinstonLogger } from 'winston';\n\nclass BackstageLogger implements Logger {\n static fromWinston(logger: WinstonLogger): BackstageLogger {\n return new BackstageLogger(logger);\n }\n\n private constructor(private readonly winston: WinstonLogger) {}\n\n info(message: string, ...meta: any[]): void {\n this.winston.info(message, ...meta);\n }\n\n child(fields: { [name: string]: string }): Logger {\n return new BackstageLogger(this.winston.child(fields));\n }\n}\n\n/** @public */\nexport const loggerFactory = createServiceFactory({\n service: loggerServiceRef,\n deps: {},\n factory: async () => {\n const root = BackstageLogger.fromWinston(createRootLogger());\n return async (pluginId: string) => {\n return root.child({ pluginId });\n };\n },\n});\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n configServiceRef,\n createServiceFactory,\n discoveryServiceRef,\n permissionsServiceRef,\n tokenManagerServiceRef,\n} from '@backstage/backend-plugin-api';\nimport { ServerPermissionClient } from '@backstage/plugin-permission-node';\n\n/** @public */\nexport const permissionsFactory = createServiceFactory({\n service: permissionsServiceRef,\n deps: {\n configFactory: configServiceRef,\n discoveryFactory: discoveryServiceRef,\n tokenManagerFactory: tokenManagerServiceRef,\n },\n factory: async ({ configFactory, discoveryFactory, tokenManagerFactory }) => {\n const config = await configFactory('root');\n const discovery = await discoveryFactory('root');\n const tokenManager = await tokenManagerFactory('root');\n const permissions = ServerPermissionClient.fromConfig(config, {\n discovery,\n tokenManager,\n });\n return async (_pluginId: string) => {\n return permissions;\n };\n },\n});\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n configServiceRef,\n createServiceFactory,\n schedulerServiceRef,\n} from '@backstage/backend-plugin-api';\nimport { TaskScheduler } from '@backstage/backend-tasks';\n\n/** @public */\nexport const schedulerFactory = createServiceFactory({\n service: schedulerServiceRef,\n deps: {\n configFactory: configServiceRef,\n },\n factory: async ({ configFactory }) => {\n const config = await configFactory('root');\n const taskScheduler = TaskScheduler.fromConfig(config);\n return async (pluginId: string) => {\n return taskScheduler.forPlugin(pluginId);\n };\n },\n});\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n configServiceRef,\n loggerServiceRef,\n createServiceFactory,\n tokenManagerServiceRef,\n loggerToWinstonLogger,\n} from '@backstage/backend-plugin-api';\nimport { ServerTokenManager } from '@backstage/backend-common';\n\n/** @public */\nexport const tokenManagerFactory = createServiceFactory({\n service: tokenManagerServiceRef,\n deps: {\n configFactory: configServiceRef,\n loggerFactory: loggerServiceRef,\n },\n factory: async ({ configFactory, loggerFactory }) => {\n const logger = await loggerFactory('root');\n const config = await configFactory('root');\n return async (_pluginId: string) => {\n // doesn't the logger want to be inferred from the plugin tho here?\n // maybe ... also why do we recreate it every time otherwise\n // we should memoize on a per plugin right? so I think it's should be fine to re-use the plugin one\n // we shouldn't recreate on a per plugin basis.\n // hm - on the other hand, is this really ever called more than once?\n // not this function right. should only be called when the plugin requests this serviceRef\n // yeah so no need to worry about memo probably\n // but we still want to scope the logger to the ServrTokenmanagfer>?\n // mm sure maybe\n // maybe in this case it doesn't provide so much value b\n // oh hang on - isn't it up to THE MANAGER to make a child internally if it wants to do that\n // so that it becomes a property intrinsic to that class, no matter how it's constructed\n // or is that too much responsibility for it - making the constructor complex so to speak, making it harder to tweak that behavior\n // this is not ultra efficient :)\n\n // I think the naming here is wrong to be gonest\n // this isn't like the cache manager or the database manager\n // the manager name is confusuion i think\n // aye perhaps\n return ServerTokenManager.fromConfig(config, {\n logger: loggerToWinstonLogger(logger),\n });\n };\n },\n});\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { UrlReaders } from '@backstage/backend-common';\nimport {\n configServiceRef,\n createServiceFactory,\n loggerServiceRef,\n loggerToWinstonLogger,\n urlReaderServiceRef,\n} from '@backstage/backend-plugin-api';\n\n/** @public */\nexport const urlReaderFactory = createServiceFactory({\n service: urlReaderServiceRef,\n deps: {\n configFactory: configServiceRef,\n loggerFactory: loggerServiceRef,\n },\n factory: async ({ configFactory, loggerFactory }) => {\n return async (pluginId: string) => {\n const logger = await loggerFactory(pluginId);\n return UrlReaders.default({\n logger: loggerToWinstonLogger(logger),\n config: await configFactory(pluginId),\n });\n };\n },\n});\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n createServiceFactory,\n httpRouterServiceRef,\n configServiceRef,\n} from '@backstage/backend-plugin-api';\nimport Router from 'express-promise-router';\nimport { Handler } from 'express';\nimport { createServiceBuilder } from '@backstage/backend-common';\n\n/** @public */\nexport const httpRouterFactory = createServiceFactory({\n service: httpRouterServiceRef,\n deps: {\n configFactory: configServiceRef,\n },\n factory: async ({ configFactory }) => {\n const rootRouter = Router();\n\n const service = createServiceBuilder(module)\n .loadConfig(await configFactory('root'))\n .addRouter('', rootRouter);\n\n await service.start();\n\n return async (pluginId?: string) => {\n const path = pluginId ? `/api/${pluginId}` : '';\n return {\n use(handler: Handler) {\n rootRouter.use(path, handler);\n },\n };\n };\n },\n});\n"],"names":["__privateAdd","__privateSet","__privateGet","createServiceFactory","cacheServiceRef","configServiceRef","CacheManager","loggerServiceRef","loadBackendConfig","loggerToWinstonLogger","databaseServiceRef","DatabaseManager","discoveryServiceRef","SingleHostDiscovery","createRootLogger","permissionsServiceRef","tokenManagerServiceRef","ServerPermissionClient","schedulerServiceRef","TaskScheduler","ServerTokenManager","urlReaderServiceRef","UrlReaders","httpRouterServiceRef","Router","createServiceBuilder"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage/backend-app-api",
|
|
3
3
|
"description": "Core API used by Backstage backend apps",
|
|
4
|
-
"version": "0.0.0-nightly-
|
|
4
|
+
"version": "0.0.0-nightly-20220827025548",
|
|
5
5
|
"main": "dist/index.cjs.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"private": false,
|
|
@@ -34,16 +34,16 @@
|
|
|
34
34
|
"start": "backstage-cli package start"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@backstage/backend-plugin-api": "0.0.0-nightly-
|
|
38
|
-
"@backstage/backend-common": "0.0.0-nightly-
|
|
39
|
-
"@backstage/backend-tasks": "0.0.0-nightly-
|
|
40
|
-
"@backstage/plugin-permission-node": "0.0.0-nightly-
|
|
37
|
+
"@backstage/backend-plugin-api": "0.0.0-nightly-20220827025548",
|
|
38
|
+
"@backstage/backend-common": "0.0.0-nightly-20220827025548",
|
|
39
|
+
"@backstage/backend-tasks": "0.0.0-nightly-20220827025548",
|
|
40
|
+
"@backstage/plugin-permission-node": "0.0.0-nightly-20220827025548",
|
|
41
41
|
"express": "^4.17.1",
|
|
42
42
|
"express-promise-router": "^4.1.0",
|
|
43
43
|
"winston": "^3.2.1"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@backstage/cli": "0.0.0-nightly-
|
|
46
|
+
"@backstage/cli": "0.0.0-nightly-20220827025548"
|
|
47
47
|
},
|
|
48
48
|
"files": [
|
|
49
49
|
"dist",
|