@backstage/backend-dynamic-feature-service 0.4.2-next.1 → 0.4.2
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.
- package/CHANGELOG.md +63 -0
- package/README.md +1 -2
- package/dist/features/features.cjs.js +35 -0
- package/dist/features/features.cjs.js.map +1 -0
- package/dist/index.cjs.js +20 -695
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +93 -53
- package/dist/loader/CommonJSModuleLoader.cjs.js +41 -0
- package/dist/loader/CommonJSModuleLoader.cjs.js.map +1 -0
- package/dist/manager/plugin-manager.cjs.js +274 -0
- package/dist/manager/plugin-manager.cjs.js.map +1 -0
- package/dist/manager/types.cjs.js +8 -0
- package/dist/manager/types.cjs.js.map +1 -0
- package/dist/scanner/plugin-scanner.cjs.js +283 -0
- package/dist/scanner/plugin-scanner.cjs.js.map +1 -0
- package/dist/schemas/frontend.cjs.js +32 -0
- package/dist/schemas/frontend.cjs.js.map +1 -0
- package/dist/schemas/rootLogger.cjs.js +45 -0
- package/dist/schemas/rootLogger.cjs.js.map +1 -0
- package/dist/schemas/schemas.cjs.js +133 -0
- package/dist/schemas/schemas.cjs.js.map +1 -0
- package/package.json +24 -22
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,68 @@
|
|
|
1
1
|
# @backstage/backend-dynamic-feature-service
|
|
2
2
|
|
|
3
|
+
## 0.4.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- d18d494: Enhance and simplify the activation of the dynamic plugins feature:
|
|
8
|
+
|
|
9
|
+
- The dynamic plugins service (which implements the `DynamicPluginsProvider`) is restored, since it is required for plugins to depend on it in order to get the details of loaded dynamic plugins (possibly with loading errors to be surfaced in some UI).
|
|
10
|
+
- A new all-in-one feature loader (`dynamicPluginsFeatureLoader`) is provided that allows a 1-liner activation of both the dynamic features and additional services or plugins required to have the dynamic plugins work correctly with dynamic plugins config schemas. Previous service factories or feature loaders are deprecated.
|
|
11
|
+
|
|
12
|
+
- e6c0550: Enhance the API of the `DynamicPluginProvider` (available as a service) to:
|
|
13
|
+
|
|
14
|
+
- expose the new `getScannedPackage()` method that returns the `ScannedPluginPackage` from which a given plugin has been loaded,
|
|
15
|
+
- add an optional `includeFailed` argument in the plugins list retrieval methods, to include the plugins that could be successfully loaded (`false` by default).
|
|
16
|
+
|
|
17
|
+
- 4c89e47: Allow passing an async module loader in the `DynamicPluginsFeatureLoaderOptions`.
|
|
18
|
+
- 094eaa3: Remove references to in-repo backend-common
|
|
19
|
+
- 2f88f88: Updated backend installation instructions.
|
|
20
|
+
- Updated dependencies
|
|
21
|
+
- @backstage/backend-defaults@0.5.1
|
|
22
|
+
- @backstage/cli-node@0.2.9
|
|
23
|
+
- @backstage/backend-app-api@1.0.1
|
|
24
|
+
- @backstage/plugin-scaffolder-node@0.5.0
|
|
25
|
+
- @backstage/plugin-auth-node@0.5.3
|
|
26
|
+
- @backstage/plugin-search-backend-node@1.3.3
|
|
27
|
+
- @backstage/plugin-catalog-backend@1.27.0
|
|
28
|
+
- @backstage/plugin-permission-node@0.8.4
|
|
29
|
+
- @backstage/plugin-events-backend@0.3.13
|
|
30
|
+
- @backstage/plugin-events-node@0.4.1
|
|
31
|
+
- @backstage/backend-plugin-api@1.0.1
|
|
32
|
+
- @backstage/cli-common@0.1.14
|
|
33
|
+
- @backstage/config@1.2.0
|
|
34
|
+
- @backstage/config-loader@1.9.1
|
|
35
|
+
- @backstage/errors@1.2.4
|
|
36
|
+
- @backstage/types@1.1.1
|
|
37
|
+
- @backstage/plugin-app-node@0.1.26
|
|
38
|
+
- @backstage/plugin-permission-common@0.8.1
|
|
39
|
+
- @backstage/plugin-search-common@1.2.14
|
|
40
|
+
|
|
41
|
+
## 0.4.2-next.2
|
|
42
|
+
|
|
43
|
+
### Patch Changes
|
|
44
|
+
|
|
45
|
+
- Updated dependencies
|
|
46
|
+
- @backstage/cli-node@0.2.9-next.0
|
|
47
|
+
- @backstage/backend-app-api@1.0.1-next.1
|
|
48
|
+
- @backstage/backend-defaults@0.5.1-next.2
|
|
49
|
+
- @backstage/plugin-auth-node@0.5.3-next.1
|
|
50
|
+
- @backstage/plugin-catalog-backend@1.26.2-next.2
|
|
51
|
+
- @backstage/plugin-scaffolder-node@0.5.0-next.2
|
|
52
|
+
- @backstage/backend-plugin-api@1.0.1-next.1
|
|
53
|
+
- @backstage/cli-common@0.1.14
|
|
54
|
+
- @backstage/config@1.2.0
|
|
55
|
+
- @backstage/config-loader@1.9.1
|
|
56
|
+
- @backstage/errors@1.2.4
|
|
57
|
+
- @backstage/types@1.1.1
|
|
58
|
+
- @backstage/plugin-app-node@0.1.26-next.1
|
|
59
|
+
- @backstage/plugin-events-backend@0.3.13-next.1
|
|
60
|
+
- @backstage/plugin-events-node@0.4.1-next.1
|
|
61
|
+
- @backstage/plugin-permission-common@0.8.1
|
|
62
|
+
- @backstage/plugin-permission-node@0.8.4-next.1
|
|
63
|
+
- @backstage/plugin-search-backend-node@1.3.3-next.2
|
|
64
|
+
- @backstage/plugin-search-common@1.2.14
|
|
65
|
+
|
|
3
66
|
## 0.4.2-next.1
|
|
4
67
|
|
|
5
68
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -15,8 +15,7 @@ In the `backend` application, it can be enabled by adding the `backend-dynamic-f
|
|
|
15
15
|
```ts
|
|
16
16
|
const backend = createBackend();
|
|
17
17
|
+
|
|
18
|
-
+ backend.add(
|
|
19
|
-
+ backend.add(dynamicPluginsServiceFactory)
|
|
18
|
+
+ backend.add(dynamicPluginsFeatureLoader) // provides features loaded by dynamic plugins
|
|
20
19
|
+
|
|
21
20
|
```
|
|
22
21
|
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var backendPluginApi = require('@backstage/backend-plugin-api');
|
|
4
|
+
var schemas = require('../schemas/schemas.cjs.js');
|
|
5
|
+
var frontend = require('../schemas/frontend.cjs.js');
|
|
6
|
+
var rootLogger = require('../schemas/rootLogger.cjs.js');
|
|
7
|
+
var pluginManager = require('../manager/plugin-manager.cjs.js');
|
|
8
|
+
var pluginScanner = require('../scanner/plugin-scanner.cjs.js');
|
|
9
|
+
|
|
10
|
+
const dynamicPluginsFeatureLoaderWithOptions = (options) => backendPluginApi.createBackendFeatureLoader({
|
|
11
|
+
deps: {
|
|
12
|
+
config: backendPluginApi.coreServices.rootConfig
|
|
13
|
+
},
|
|
14
|
+
*loader({ config }) {
|
|
15
|
+
const dynamicPluginsEnabled = config.has(pluginScanner.configKey);
|
|
16
|
+
yield* [
|
|
17
|
+
schemas.dynamicPluginsSchemasServiceFactory(options),
|
|
18
|
+
pluginManager.dynamicPluginsServiceFactory(options)
|
|
19
|
+
];
|
|
20
|
+
if (dynamicPluginsEnabled) {
|
|
21
|
+
yield* [
|
|
22
|
+
rootLogger.dynamicPluginsRootLoggerServiceFactory(options),
|
|
23
|
+
frontend.dynamicPluginsFrontendSchemas,
|
|
24
|
+
pluginManager.dynamicPluginsFeatureDiscoveryLoader
|
|
25
|
+
];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
const dynamicPluginsFeatureLoader = Object.assign(
|
|
30
|
+
dynamicPluginsFeatureLoaderWithOptions,
|
|
31
|
+
dynamicPluginsFeatureLoaderWithOptions()
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
exports.dynamicPluginsFeatureLoader = dynamicPluginsFeatureLoader;
|
|
35
|
+
//# sourceMappingURL=features.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features.cjs.js","sources":["../../src/features/features.ts"],"sourcesContent":["/*\n * Copyright 2024 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 coreServices,\n createBackendFeatureLoader,\n} from '@backstage/backend-plugin-api';\nimport {\n DynamicPluginsSchemasOptions,\n dynamicPluginsFrontendSchemas,\n dynamicPluginsRootLoggerServiceFactory,\n dynamicPluginsSchemasServiceFactory,\n} from '../schemas';\nimport {\n DynamicPluginsFactoryOptions,\n dynamicPluginsFeatureDiscoveryLoader,\n dynamicPluginsServiceFactory,\n} from '../manager';\nimport { DynamicPluginsRootLoggerFactoryOptions } from '../schemas';\nimport { configKey } from '../scanner/plugin-scanner';\n\n/**\n * @public\n */\nexport type DynamicPluginsFeatureLoaderOptions = DynamicPluginsFactoryOptions &\n DynamicPluginsSchemasOptions &\n DynamicPluginsRootLoggerFactoryOptions;\n\nconst dynamicPluginsFeatureLoaderWithOptions = (\n options?: DynamicPluginsFeatureLoaderOptions,\n) =>\n createBackendFeatureLoader({\n deps: {\n config: coreServices.rootConfig,\n },\n *loader({ config }) {\n const dynamicPluginsEnabled = config.has(configKey);\n\n yield* [\n dynamicPluginsSchemasServiceFactory(options),\n dynamicPluginsServiceFactory(options),\n ];\n if (dynamicPluginsEnabled) {\n yield* [\n dynamicPluginsRootLoggerServiceFactory(options),\n dynamicPluginsFrontendSchemas,\n dynamicPluginsFeatureDiscoveryLoader,\n ];\n }\n },\n });\n\n/**\n * A backend feature loader that fully enable backend dynamic plugins.\n * More precisely it:\n * - adds the dynamic plugins root service (typically depended upon by plugins),\n * - adds additional required features to allow supporting dynamic plugins config schemas\n * in the frontend application and the backend root logger,\n * - uses the dynamic plugins service to discover and expose dynamic plugins as features.\n *\n * @public\n *\n * @example\n * Using the `dynamicPluginsFeatureLoader` loader in a backend instance:\n * ```ts\n * //...\n * import { createBackend } from '@backstage/backend-defaults';\n * import { dynamicPluginsFeatureLoader } from '@backstage/backend-dynamic-feature-service';\n *\n * const backend = createBackend();\n * backend.add(dynamicPluginsFeatureLoader);\n * //...\n * backend.start();\n * ```\n *\n * @example\n * Passing options to the `dynamicPluginsFeatureLoader` loader in a backend instance:\n * ```ts\n * //...\n * import { createBackend } from '@backstage/backend-defaults';\n * import { dynamicPluginsFeatureLoader } from '@backstage/backend-dynamic-feature-service';\n * import { myCustomModuleLoader } from './myCustomModuleLoader';\n * import { myCustomSchemaLocator } from './myCustomSchemaLocator';\n *\n * const backend = createBackend();\n * backend.add(dynamicPluginsFeatureLoader({\n * moduleLoader: myCustomModuleLoader,\n * schemaLocator: myCustomSchemaLocator,\n *\n * }));\n * //...\n * backend.start();\n * ```\n */\nexport const dynamicPluginsFeatureLoader = Object.assign(\n dynamicPluginsFeatureLoaderWithOptions,\n dynamicPluginsFeatureLoaderWithOptions(),\n);\n"],"names":["createBackendFeatureLoader","coreServices","configKey","dynamicPluginsSchemasServiceFactory","dynamicPluginsServiceFactory","dynamicPluginsRootLoggerServiceFactory","dynamicPluginsFrontendSchemas","dynamicPluginsFeatureDiscoveryLoader"],"mappings":";;;;;;;;;AAyCA,MAAM,sCAAA,GAAyC,CAC7C,OAAA,KAEAA,2CAA2B,CAAA;AAAA,EACzB,IAAM,EAAA;AAAA,IACJ,QAAQC,6BAAa,CAAA,UAAA;AAAA,GACvB;AAAA,EACA,CAAC,MAAA,CAAO,EAAE,MAAA,EAAU,EAAA;AAClB,IAAM,MAAA,qBAAA,GAAwB,MAAO,CAAA,GAAA,CAAIC,uBAAS,CAAA,CAAA;AAElD,IAAO,OAAA;AAAA,MACLC,4CAAoC,OAAO,CAAA;AAAA,MAC3CC,2CAA6B,OAAO,CAAA;AAAA,KACtC,CAAA;AACA,IAAA,IAAI,qBAAuB,EAAA;AACzB,MAAO,OAAA;AAAA,QACLC,kDAAuC,OAAO,CAAA;AAAA,QAC9CC,sCAAA;AAAA,QACAC,kDAAA;AAAA,OACF,CAAA;AAAA,KACF;AAAA,GACF;AACF,CAAC,CAAA,CAAA;AA4CI,MAAM,8BAA8B,MAAO,CAAA,MAAA;AAAA,EAChD,sCAAA;AAAA,EACA,sCAAuC,EAAA;AACzC;;;;"}
|