@backstage/plugin-catalog-backend 1.22.0 → 1.23.0-next.1
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 +42 -0
- package/alpha/package.json +1 -1
- package/dist/alpha.cjs.js +33 -62
- package/dist/alpha.cjs.js.map +1 -1
- package/dist/cjs/{CatalogBuilder-g0TDave-.cjs.js → CatalogBuilder-D6-74CoP.cjs.js} +235 -378
- package/dist/cjs/CatalogBuilder-D6-74CoP.cjs.js.map +1 -0
- package/dist/index.cjs.js +25 -34
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/package.json +13 -12
- package/dist/cjs/CatalogBuilder-g0TDave-.cjs.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,47 @@
|
|
|
1
1
|
# @backstage/plugin-catalog-backend
|
|
2
2
|
|
|
3
|
+
## 1.23.0-next.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- d779e3b: Added a regex test to check commit hash. If url is from git commit branch ignore the edit url.
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
- @backstage/backend-tasks@0.5.24-next.1
|
|
10
|
+
- @backstage/backend-plugin-api@0.6.19-next.1
|
|
11
|
+
- @backstage/plugin-permission-node@0.7.30-next.1
|
|
12
|
+
- @backstage/backend-common@0.23.0-next.1
|
|
13
|
+
- @backstage/plugin-catalog-node@1.12.1-next.0
|
|
14
|
+
- @backstage/plugin-events-node@0.3.5-next.0
|
|
15
|
+
- @backstage/plugin-search-backend-module-catalog@0.1.25-next.1
|
|
16
|
+
|
|
17
|
+
## 1.23.0-next.0
|
|
18
|
+
|
|
19
|
+
### Minor Changes
|
|
20
|
+
|
|
21
|
+
- c7528b0: Pass through `EventsService` too in the new backend system
|
|
22
|
+
|
|
23
|
+
### Patch Changes
|
|
24
|
+
|
|
25
|
+
- 8869b8e: Updated local development setup.
|
|
26
|
+
- 1779188: Start using the `isDatabaseConflictError` helper from the `@backstage/backend-plugin-api` package in order to avoid dependency with the soon to deprecate `@backstage/backend-common` package.
|
|
27
|
+
- Updated dependencies
|
|
28
|
+
- @backstage/backend-tasks@0.5.24-next.0
|
|
29
|
+
- @backstage/backend-common@0.22.1-next.0
|
|
30
|
+
- @backstage/plugin-events-node@0.3.5-next.0
|
|
31
|
+
- @backstage/backend-plugin-api@0.6.19-next.0
|
|
32
|
+
- @backstage/plugin-search-backend-module-catalog@0.1.25-next.0
|
|
33
|
+
- @backstage/plugin-permission-node@0.7.30-next.0
|
|
34
|
+
- @backstage/backend-openapi-utils@0.1.12-next.0
|
|
35
|
+
- @backstage/plugin-catalog-node@1.12.1-next.0
|
|
36
|
+
- @backstage/catalog-client@1.6.5
|
|
37
|
+
- @backstage/catalog-model@1.5.0
|
|
38
|
+
- @backstage/config@1.2.0
|
|
39
|
+
- @backstage/errors@1.2.4
|
|
40
|
+
- @backstage/integration@1.11.0
|
|
41
|
+
- @backstage/types@1.1.1
|
|
42
|
+
- @backstage/plugin-catalog-common@1.0.23
|
|
43
|
+
- @backstage/plugin-permission-common@0.7.13
|
|
44
|
+
|
|
3
45
|
## 1.22.0
|
|
4
46
|
|
|
5
47
|
### Minor Changes
|
package/alpha/package.json
CHANGED
package/dist/alpha.cjs.js
CHANGED
|
@@ -4,8 +4,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var alpha = require('@backstage/plugin-catalog-common/alpha');
|
|
6
6
|
var pluginPermissionNode = require('@backstage/plugin-permission-node');
|
|
7
|
-
var CatalogBuilder = require('./cjs/CatalogBuilder-
|
|
7
|
+
var CatalogBuilder = require('./cjs/CatalogBuilder-D6-74CoP.cjs.js');
|
|
8
8
|
var backendPluginApi = require('@backstage/backend-plugin-api');
|
|
9
|
+
var pluginEventsNode = require('@backstage/plugin-events-node');
|
|
9
10
|
var alpha$1 = require('@backstage/plugin-catalog-node/alpha');
|
|
10
11
|
var lodash = require('lodash');
|
|
11
12
|
var errors = require('@backstage/errors');
|
|
@@ -47,110 +48,77 @@ const { conditions, createConditionalDecision } = pluginPermissionNode.createCon
|
|
|
47
48
|
const catalogConditions = conditions;
|
|
48
49
|
const createCatalogConditionalDecision = createConditionalDecision;
|
|
49
50
|
|
|
50
|
-
var __accessCheck = (obj, member, msg) => {
|
|
51
|
-
if (!member.has(obj))
|
|
52
|
-
throw TypeError("Cannot " + msg);
|
|
53
|
-
};
|
|
54
|
-
var __privateGet = (obj, member, getter) => {
|
|
55
|
-
__accessCheck(obj, member, "read from private field");
|
|
56
|
-
return member.get(obj);
|
|
57
|
-
};
|
|
58
|
-
var __privateAdd = (obj, member, value) => {
|
|
59
|
-
if (member.has(obj))
|
|
60
|
-
throw TypeError("Cannot add the same private member more than once");
|
|
61
|
-
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
62
|
-
};
|
|
63
|
-
var __privateSet = (obj, member, value, setter) => {
|
|
64
|
-
__accessCheck(obj, member, "write to private field");
|
|
65
|
-
member.set(obj, value);
|
|
66
|
-
return value;
|
|
67
|
-
};
|
|
68
|
-
var _processors, _entityProviders, _placeholderResolvers, _onProcessingErrorHandler, _permissions, _permissionRules, _fieldValidators, _entityDataParser;
|
|
69
51
|
class CatalogProcessingExtensionPointImpl {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
__privateAdd(this, _onProcessingErrorHandler, void 0);
|
|
75
|
-
}
|
|
52
|
+
#processors = new Array();
|
|
53
|
+
#entityProviders = new Array();
|
|
54
|
+
#placeholderResolvers = {};
|
|
55
|
+
#onProcessingErrorHandler;
|
|
76
56
|
addProcessor(...processors) {
|
|
77
|
-
|
|
57
|
+
this.#processors.push(...processors.flat());
|
|
78
58
|
}
|
|
79
59
|
addEntityProvider(...providers) {
|
|
80
|
-
|
|
60
|
+
this.#entityProviders.push(...providers.flat());
|
|
81
61
|
}
|
|
82
62
|
addPlaceholderResolver(key, resolver) {
|
|
83
|
-
if (key in
|
|
63
|
+
if (key in this.#placeholderResolvers)
|
|
84
64
|
throw new Error(
|
|
85
65
|
`A placeholder resolver for '${key}' has already been set up, please check your config.`
|
|
86
66
|
);
|
|
87
|
-
|
|
67
|
+
this.#placeholderResolvers[key] = resolver;
|
|
88
68
|
}
|
|
89
69
|
setOnProcessingErrorHandler(handler) {
|
|
90
|
-
|
|
70
|
+
this.#onProcessingErrorHandler = handler;
|
|
91
71
|
}
|
|
92
72
|
get processors() {
|
|
93
|
-
return
|
|
73
|
+
return this.#processors;
|
|
94
74
|
}
|
|
95
75
|
get entityProviders() {
|
|
96
|
-
return
|
|
76
|
+
return this.#entityProviders;
|
|
97
77
|
}
|
|
98
78
|
get placeholderResolvers() {
|
|
99
|
-
return
|
|
79
|
+
return this.#placeholderResolvers;
|
|
100
80
|
}
|
|
101
81
|
get onProcessingErrorHandler() {
|
|
102
|
-
return
|
|
82
|
+
return this.#onProcessingErrorHandler;
|
|
103
83
|
}
|
|
104
84
|
}
|
|
105
|
-
_processors = new WeakMap();
|
|
106
|
-
_entityProviders = new WeakMap();
|
|
107
|
-
_placeholderResolvers = new WeakMap();
|
|
108
|
-
_onProcessingErrorHandler = new WeakMap();
|
|
109
85
|
class CatalogPermissionExtensionPointImpl {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
__privateAdd(this, _permissionRules, new Array());
|
|
113
|
-
}
|
|
86
|
+
#permissions = new Array();
|
|
87
|
+
#permissionRules = new Array();
|
|
114
88
|
addPermissions(...permission) {
|
|
115
|
-
|
|
89
|
+
this.#permissions.push(...permission.flat());
|
|
116
90
|
}
|
|
117
91
|
addPermissionRules(...rules) {
|
|
118
|
-
|
|
92
|
+
this.#permissionRules.push(...rules.flat());
|
|
119
93
|
}
|
|
120
94
|
get permissions() {
|
|
121
|
-
return
|
|
95
|
+
return this.#permissions;
|
|
122
96
|
}
|
|
123
97
|
get permissionRules() {
|
|
124
|
-
return
|
|
98
|
+
return this.#permissionRules;
|
|
125
99
|
}
|
|
126
100
|
}
|
|
127
|
-
_permissions = new WeakMap();
|
|
128
|
-
_permissionRules = new WeakMap();
|
|
129
101
|
class CatalogModelExtensionPointImpl {
|
|
130
|
-
|
|
131
|
-
__privateAdd(this, _fieldValidators, {});
|
|
132
|
-
__privateAdd(this, _entityDataParser, void 0);
|
|
133
|
-
}
|
|
102
|
+
#fieldValidators = {};
|
|
134
103
|
setFieldValidators(validators) {
|
|
135
|
-
lodash.merge(
|
|
104
|
+
lodash.merge(this.#fieldValidators, validators);
|
|
136
105
|
}
|
|
137
106
|
get fieldValidators() {
|
|
138
|
-
return
|
|
107
|
+
return this.#fieldValidators;
|
|
139
108
|
}
|
|
109
|
+
#entityDataParser;
|
|
140
110
|
setEntityDataParser(parser) {
|
|
141
|
-
if (
|
|
111
|
+
if (this.#entityDataParser) {
|
|
142
112
|
throw new Error(
|
|
143
113
|
"Attempted to install second EntityDataParser. Only one can be set."
|
|
144
114
|
);
|
|
145
115
|
}
|
|
146
|
-
|
|
116
|
+
this.#entityDataParser = parser;
|
|
147
117
|
}
|
|
148
118
|
get entityDataParser() {
|
|
149
|
-
return
|
|
119
|
+
return this.#entityDataParser;
|
|
150
120
|
}
|
|
151
121
|
}
|
|
152
|
-
_fieldValidators = new WeakMap();
|
|
153
|
-
_entityDataParser = new WeakMap();
|
|
154
122
|
const catalogPlugin = backendPluginApi.createBackendPlugin({
|
|
155
123
|
pluginId: "catalog",
|
|
156
124
|
register(env) {
|
|
@@ -197,7 +165,8 @@ const catalogPlugin = backendPluginApi.createBackendPlugin({
|
|
|
197
165
|
scheduler: backendPluginApi.coreServices.scheduler,
|
|
198
166
|
discovery: backendPluginApi.coreServices.discovery,
|
|
199
167
|
auth: backendPluginApi.coreServices.auth,
|
|
200
|
-
httpAuth: backendPluginApi.coreServices.httpAuth
|
|
168
|
+
httpAuth: backendPluginApi.coreServices.httpAuth,
|
|
169
|
+
events: pluginEventsNode.eventsServiceRef
|
|
201
170
|
},
|
|
202
171
|
async init({
|
|
203
172
|
logger,
|
|
@@ -210,7 +179,8 @@ const catalogPlugin = backendPluginApi.createBackendPlugin({
|
|
|
210
179
|
scheduler,
|
|
211
180
|
discovery,
|
|
212
181
|
auth,
|
|
213
|
-
httpAuth
|
|
182
|
+
httpAuth,
|
|
183
|
+
events
|
|
214
184
|
}) {
|
|
215
185
|
const builder = await CatalogBuilder.CatalogBuilder.create({
|
|
216
186
|
config,
|
|
@@ -223,6 +193,7 @@ const catalogPlugin = backendPluginApi.createBackendPlugin({
|
|
|
223
193
|
auth,
|
|
224
194
|
httpAuth
|
|
225
195
|
});
|
|
196
|
+
builder.setEventBroker(events);
|
|
226
197
|
if (processingExtensions.onProcessingErrorHandler) {
|
|
227
198
|
builder.subscribe({
|
|
228
199
|
onProcessingError: processingExtensions.onProcessingErrorHandler
|
package/dist/alpha.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alpha.cjs.js","sources":["../src/permissions/conditionExports.ts","../src/service/CatalogPlugin.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 { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common/alpha';\nimport { createConditionExports } from '@backstage/plugin-permission-node';\nimport { permissionRules } from './rules';\n\nconst { conditions, createConditionalDecision } = createConditionExports({\n pluginId: 'catalog',\n resourceType: RESOURCE_TYPE_CATALOG_ENTITY,\n rules: permissionRules,\n});\n\n/**\n * These conditions are used when creating conditional decisions for catalog\n * entities that are returned by authorization policies.\n *\n * @alpha\n */\nexport const catalogConditions = conditions;\n\n/**\n * `createCatalogConditionalDecision` can be used when authoring policies to\n * create conditional decisions. It requires a permission of type\n * `ResourcePermission<'catalog-entity'>` to be passed as the first parameter.\n * It's recommended that you use the provided `isResourcePermission` and\n * `isPermission` helper methods to narrow the type of the permission passed to\n * the handle method as shown below.\n *\n * ```\n * // MyAuthorizationPolicy.ts\n * ...\n * import { createCatalogPolicyDecision } from '@backstage/plugin-catalog-backend';\n * import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common';\n *\n * class MyAuthorizationPolicy implements PermissionPolicy {\n * async handle(request, user) {\n * ...\n *\n * if (isResourcePermission(request.permission, RESOURCE_TYPE_CATALOG_ENTITY)) {\n * return createCatalogConditionalDecision(\n * request.permission,\n * { anyOf: [...insert conditions here...] }\n * );\n * }\n *\n * ...\n * }\n * ```\n *\n * @alpha\n */\nexport const createCatalogConditionalDecision = createConditionalDecision;\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 coreServices,\n createBackendPlugin,\n} from '@backstage/backend-plugin-api';\nimport { Entity, Validators } from '@backstage/catalog-model';\nimport { CatalogBuilder, CatalogPermissionRuleInput } from './CatalogBuilder';\nimport {\n catalogAnalysisExtensionPoint,\n CatalogModelExtensionPoint,\n catalogModelExtensionPoint,\n CatalogPermissionExtensionPoint,\n catalogPermissionExtensionPoint,\n CatalogProcessingExtensionPoint,\n catalogProcessingExtensionPoint,\n} from '@backstage/plugin-catalog-node/alpha';\nimport {\n CatalogProcessor,\n CatalogProcessorParser,\n EntityProvider,\n LocationAnalyzer,\n PlaceholderResolver,\n ScmLocationAnalyzer,\n} from '@backstage/plugin-catalog-node';\nimport { merge } from 'lodash';\nimport { Permission } from '@backstage/plugin-permission-common';\nimport { ForwardedError } from '@backstage/errors';\n\nclass CatalogProcessingExtensionPointImpl\n implements CatalogProcessingExtensionPoint\n{\n #processors = new Array<CatalogProcessor>();\n #entityProviders = new Array<EntityProvider>();\n #placeholderResolvers: Record<string, PlaceholderResolver> = {};\n #onProcessingErrorHandler?: (event: {\n unprocessedEntity: Entity;\n errors: Error[];\n }) => Promise<void> | void;\n\n addProcessor(\n ...processors: Array<CatalogProcessor | Array<CatalogProcessor>>\n ): void {\n this.#processors.push(...processors.flat());\n }\n\n addEntityProvider(\n ...providers: Array<EntityProvider | Array<EntityProvider>>\n ): void {\n this.#entityProviders.push(...providers.flat());\n }\n\n addPlaceholderResolver(key: string, resolver: PlaceholderResolver) {\n if (key in this.#placeholderResolvers)\n throw new Error(\n `A placeholder resolver for '${key}' has already been set up, please check your config.`,\n );\n this.#placeholderResolvers[key] = resolver;\n }\n\n setOnProcessingErrorHandler(\n handler: (event: {\n unprocessedEntity: Entity;\n errors: Error[];\n }) => Promise<void> | void,\n ) {\n this.#onProcessingErrorHandler = handler;\n }\n\n get processors() {\n return this.#processors;\n }\n\n get entityProviders() {\n return this.#entityProviders;\n }\n\n get placeholderResolvers() {\n return this.#placeholderResolvers;\n }\n\n get onProcessingErrorHandler() {\n return this.#onProcessingErrorHandler;\n }\n}\n\nclass CatalogPermissionExtensionPointImpl\n implements CatalogPermissionExtensionPoint\n{\n #permissions = new Array<Permission>();\n #permissionRules = new Array<CatalogPermissionRuleInput>();\n\n addPermissions(...permission: Array<Permission | Array<Permission>>): void {\n this.#permissions.push(...permission.flat());\n }\n\n addPermissionRules(\n ...rules: Array<\n CatalogPermissionRuleInput | Array<CatalogPermissionRuleInput>\n >\n ): void {\n this.#permissionRules.push(...rules.flat());\n }\n\n get permissions() {\n return this.#permissions;\n }\n\n get permissionRules() {\n return this.#permissionRules;\n }\n}\n\nclass CatalogModelExtensionPointImpl implements CatalogModelExtensionPoint {\n #fieldValidators: Partial<Validators> = {};\n\n setFieldValidators(validators: Partial<Validators>): void {\n merge(this.#fieldValidators, validators);\n }\n\n get fieldValidators() {\n return this.#fieldValidators;\n }\n\n #entityDataParser?: CatalogProcessorParser;\n\n setEntityDataParser(parser: CatalogProcessorParser): void {\n if (this.#entityDataParser) {\n throw new Error(\n 'Attempted to install second EntityDataParser. Only one can be set.',\n );\n }\n this.#entityDataParser = parser;\n }\n\n get entityDataParser() {\n return this.#entityDataParser;\n }\n}\n\n/**\n * Catalog plugin\n * @alpha\n */\nexport const catalogPlugin = createBackendPlugin({\n pluginId: 'catalog',\n register(env) {\n const processingExtensions = new CatalogProcessingExtensionPointImpl();\n // plugins depending on this API will be initialized before this plugins init method is executed.\n env.registerExtensionPoint(\n catalogProcessingExtensionPoint,\n processingExtensions,\n );\n\n let locationAnalyzerFactory:\n | ((options: {\n scmLocationAnalyzers: ScmLocationAnalyzer[];\n }) => Promise<{ locationAnalyzer: LocationAnalyzer }>)\n | undefined = undefined;\n const scmLocationAnalyzers = new Array<ScmLocationAnalyzer>();\n env.registerExtensionPoint(catalogAnalysisExtensionPoint, {\n setLocationAnalyzer(analyzerOrFactory) {\n if (locationAnalyzerFactory) {\n throw new Error('LocationAnalyzer has already been set');\n }\n if (typeof analyzerOrFactory === 'function') {\n locationAnalyzerFactory = analyzerOrFactory;\n } else {\n locationAnalyzerFactory = async () => ({\n locationAnalyzer: analyzerOrFactory,\n });\n }\n },\n addScmLocationAnalyzer(analyzer: ScmLocationAnalyzer) {\n scmLocationAnalyzers.push(analyzer);\n },\n });\n\n const permissionExtensions = new CatalogPermissionExtensionPointImpl();\n env.registerExtensionPoint(\n catalogPermissionExtensionPoint,\n permissionExtensions,\n );\n\n const modelExtensions = new CatalogModelExtensionPointImpl();\n env.registerExtensionPoint(catalogModelExtensionPoint, modelExtensions);\n\n env.registerInit({\n deps: {\n logger: coreServices.logger,\n config: coreServices.rootConfig,\n reader: coreServices.urlReader,\n permissions: coreServices.permissions,\n database: coreServices.database,\n httpRouter: coreServices.httpRouter,\n lifecycle: coreServices.rootLifecycle,\n scheduler: coreServices.scheduler,\n discovery: coreServices.discovery,\n auth: coreServices.auth,\n httpAuth: coreServices.httpAuth,\n },\n async init({\n logger,\n config,\n reader,\n database,\n permissions,\n httpRouter,\n lifecycle,\n scheduler,\n discovery,\n auth,\n httpAuth,\n }) {\n const builder = await CatalogBuilder.create({\n config,\n reader,\n permissions,\n database,\n scheduler,\n logger,\n discovery,\n auth,\n httpAuth,\n });\n if (processingExtensions.onProcessingErrorHandler) {\n builder.subscribe({\n onProcessingError: processingExtensions.onProcessingErrorHandler,\n });\n }\n builder.addProcessor(...processingExtensions.processors);\n builder.addEntityProvider(...processingExtensions.entityProviders);\n\n if (modelExtensions.entityDataParser) {\n builder.setEntityDataParser(modelExtensions.entityDataParser);\n }\n\n Object.entries(processingExtensions.placeholderResolvers).forEach(\n ([key, resolver]) => builder.setPlaceholderResolver(key, resolver),\n );\n if (locationAnalyzerFactory) {\n const { locationAnalyzer } = await locationAnalyzerFactory({\n scmLocationAnalyzers,\n }).catch(e => {\n throw new ForwardedError('Failed to create LocationAnalyzer', e);\n });\n builder.setLocationAnalyzer(locationAnalyzer);\n } else {\n builder.addLocationAnalyzers(...scmLocationAnalyzers);\n }\n builder.addPermissions(...permissionExtensions.permissions);\n builder.addPermissionRules(...permissionExtensions.permissionRules);\n builder.setFieldFormatValidators(modelExtensions.fieldValidators);\n\n const { processingEngine, router } = await builder.build();\n\n lifecycle.addStartupHook(async () => {\n await processingEngine.start();\n });\n lifecycle.addShutdownHook(() => processingEngine.stop());\n httpRouter.use(router);\n },\n });\n },\n});\n"],"names":["createConditionExports","RESOURCE_TYPE_CATALOG_ENTITY","permissionRules","merge","createBackendPlugin","catalogProcessingExtensionPoint","catalogAnalysisExtensionPoint","catalogPermissionExtensionPoint","catalogModelExtensionPoint","coreServices","CatalogBuilder","ForwardedError"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"alpha.cjs.js","sources":["../src/permissions/conditionExports.ts","../src/service/CatalogPlugin.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 { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common/alpha';\nimport { createConditionExports } from '@backstage/plugin-permission-node';\nimport { permissionRules } from './rules';\n\nconst { conditions, createConditionalDecision } = createConditionExports({\n pluginId: 'catalog',\n resourceType: RESOURCE_TYPE_CATALOG_ENTITY,\n rules: permissionRules,\n});\n\n/**\n * These conditions are used when creating conditional decisions for catalog\n * entities that are returned by authorization policies.\n *\n * @alpha\n */\nexport const catalogConditions = conditions;\n\n/**\n * `createCatalogConditionalDecision` can be used when authoring policies to\n * create conditional decisions. It requires a permission of type\n * `ResourcePermission<'catalog-entity'>` to be passed as the first parameter.\n * It's recommended that you use the provided `isResourcePermission` and\n * `isPermission` helper methods to narrow the type of the permission passed to\n * the handle method as shown below.\n *\n * ```\n * // MyAuthorizationPolicy.ts\n * ...\n * import { createCatalogPolicyDecision } from '@backstage/plugin-catalog-backend';\n * import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common';\n *\n * class MyAuthorizationPolicy implements PermissionPolicy {\n * async handle(request, user) {\n * ...\n *\n * if (isResourcePermission(request.permission, RESOURCE_TYPE_CATALOG_ENTITY)) {\n * return createCatalogConditionalDecision(\n * request.permission,\n * { anyOf: [...insert conditions here...] }\n * );\n * }\n *\n * ...\n * }\n * ```\n *\n * @alpha\n */\nexport const createCatalogConditionalDecision = createConditionalDecision;\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 coreServices,\n createBackendPlugin,\n} from '@backstage/backend-plugin-api';\nimport { eventsServiceRef } from '@backstage/plugin-events-node';\nimport { Entity, Validators } from '@backstage/catalog-model';\nimport { CatalogBuilder, CatalogPermissionRuleInput } from './CatalogBuilder';\nimport {\n catalogAnalysisExtensionPoint,\n CatalogModelExtensionPoint,\n catalogModelExtensionPoint,\n CatalogPermissionExtensionPoint,\n catalogPermissionExtensionPoint,\n CatalogProcessingExtensionPoint,\n catalogProcessingExtensionPoint,\n} from '@backstage/plugin-catalog-node/alpha';\nimport {\n CatalogProcessor,\n CatalogProcessorParser,\n EntityProvider,\n LocationAnalyzer,\n PlaceholderResolver,\n ScmLocationAnalyzer,\n} from '@backstage/plugin-catalog-node';\nimport { merge } from 'lodash';\nimport { Permission } from '@backstage/plugin-permission-common';\nimport { ForwardedError } from '@backstage/errors';\n\nclass CatalogProcessingExtensionPointImpl\n implements CatalogProcessingExtensionPoint\n{\n #processors = new Array<CatalogProcessor>();\n #entityProviders = new Array<EntityProvider>();\n #placeholderResolvers: Record<string, PlaceholderResolver> = {};\n #onProcessingErrorHandler?: (event: {\n unprocessedEntity: Entity;\n errors: Error[];\n }) => Promise<void> | void;\n\n addProcessor(\n ...processors: Array<CatalogProcessor | Array<CatalogProcessor>>\n ): void {\n this.#processors.push(...processors.flat());\n }\n\n addEntityProvider(\n ...providers: Array<EntityProvider | Array<EntityProvider>>\n ): void {\n this.#entityProviders.push(...providers.flat());\n }\n\n addPlaceholderResolver(key: string, resolver: PlaceholderResolver) {\n if (key in this.#placeholderResolvers)\n throw new Error(\n `A placeholder resolver for '${key}' has already been set up, please check your config.`,\n );\n this.#placeholderResolvers[key] = resolver;\n }\n\n setOnProcessingErrorHandler(\n handler: (event: {\n unprocessedEntity: Entity;\n errors: Error[];\n }) => Promise<void> | void,\n ) {\n this.#onProcessingErrorHandler = handler;\n }\n\n get processors() {\n return this.#processors;\n }\n\n get entityProviders() {\n return this.#entityProviders;\n }\n\n get placeholderResolvers() {\n return this.#placeholderResolvers;\n }\n\n get onProcessingErrorHandler() {\n return this.#onProcessingErrorHandler;\n }\n}\n\nclass CatalogPermissionExtensionPointImpl\n implements CatalogPermissionExtensionPoint\n{\n #permissions = new Array<Permission>();\n #permissionRules = new Array<CatalogPermissionRuleInput>();\n\n addPermissions(...permission: Array<Permission | Array<Permission>>): void {\n this.#permissions.push(...permission.flat());\n }\n\n addPermissionRules(\n ...rules: Array<\n CatalogPermissionRuleInput | Array<CatalogPermissionRuleInput>\n >\n ): void {\n this.#permissionRules.push(...rules.flat());\n }\n\n get permissions() {\n return this.#permissions;\n }\n\n get permissionRules() {\n return this.#permissionRules;\n }\n}\n\nclass CatalogModelExtensionPointImpl implements CatalogModelExtensionPoint {\n #fieldValidators: Partial<Validators> = {};\n\n setFieldValidators(validators: Partial<Validators>): void {\n merge(this.#fieldValidators, validators);\n }\n\n get fieldValidators() {\n return this.#fieldValidators;\n }\n\n #entityDataParser?: CatalogProcessorParser;\n\n setEntityDataParser(parser: CatalogProcessorParser): void {\n if (this.#entityDataParser) {\n throw new Error(\n 'Attempted to install second EntityDataParser. Only one can be set.',\n );\n }\n this.#entityDataParser = parser;\n }\n\n get entityDataParser() {\n return this.#entityDataParser;\n }\n}\n\n/**\n * Catalog plugin\n * @alpha\n */\nexport const catalogPlugin = createBackendPlugin({\n pluginId: 'catalog',\n register(env) {\n const processingExtensions = new CatalogProcessingExtensionPointImpl();\n // plugins depending on this API will be initialized before this plugins init method is executed.\n env.registerExtensionPoint(\n catalogProcessingExtensionPoint,\n processingExtensions,\n );\n\n let locationAnalyzerFactory:\n | ((options: {\n scmLocationAnalyzers: ScmLocationAnalyzer[];\n }) => Promise<{ locationAnalyzer: LocationAnalyzer }>)\n | undefined = undefined;\n const scmLocationAnalyzers = new Array<ScmLocationAnalyzer>();\n env.registerExtensionPoint(catalogAnalysisExtensionPoint, {\n setLocationAnalyzer(analyzerOrFactory) {\n if (locationAnalyzerFactory) {\n throw new Error('LocationAnalyzer has already been set');\n }\n if (typeof analyzerOrFactory === 'function') {\n locationAnalyzerFactory = analyzerOrFactory;\n } else {\n locationAnalyzerFactory = async () => ({\n locationAnalyzer: analyzerOrFactory,\n });\n }\n },\n addScmLocationAnalyzer(analyzer: ScmLocationAnalyzer) {\n scmLocationAnalyzers.push(analyzer);\n },\n });\n\n const permissionExtensions = new CatalogPermissionExtensionPointImpl();\n env.registerExtensionPoint(\n catalogPermissionExtensionPoint,\n permissionExtensions,\n );\n\n const modelExtensions = new CatalogModelExtensionPointImpl();\n env.registerExtensionPoint(catalogModelExtensionPoint, modelExtensions);\n\n env.registerInit({\n deps: {\n logger: coreServices.logger,\n config: coreServices.rootConfig,\n reader: coreServices.urlReader,\n permissions: coreServices.permissions,\n database: coreServices.database,\n httpRouter: coreServices.httpRouter,\n lifecycle: coreServices.rootLifecycle,\n scheduler: coreServices.scheduler,\n discovery: coreServices.discovery,\n auth: coreServices.auth,\n httpAuth: coreServices.httpAuth,\n events: eventsServiceRef,\n },\n async init({\n logger,\n config,\n reader,\n database,\n permissions,\n httpRouter,\n lifecycle,\n scheduler,\n discovery,\n auth,\n httpAuth,\n events,\n }) {\n const builder = await CatalogBuilder.create({\n config,\n reader,\n permissions,\n database,\n scheduler,\n logger,\n discovery,\n auth,\n httpAuth,\n });\n\n builder.setEventBroker(events);\n\n if (processingExtensions.onProcessingErrorHandler) {\n builder.subscribe({\n onProcessingError: processingExtensions.onProcessingErrorHandler,\n });\n }\n builder.addProcessor(...processingExtensions.processors);\n builder.addEntityProvider(...processingExtensions.entityProviders);\n\n if (modelExtensions.entityDataParser) {\n builder.setEntityDataParser(modelExtensions.entityDataParser);\n }\n\n Object.entries(processingExtensions.placeholderResolvers).forEach(\n ([key, resolver]) => builder.setPlaceholderResolver(key, resolver),\n );\n if (locationAnalyzerFactory) {\n const { locationAnalyzer } = await locationAnalyzerFactory({\n scmLocationAnalyzers,\n }).catch(e => {\n throw new ForwardedError('Failed to create LocationAnalyzer', e);\n });\n builder.setLocationAnalyzer(locationAnalyzer);\n } else {\n builder.addLocationAnalyzers(...scmLocationAnalyzers);\n }\n builder.addPermissions(...permissionExtensions.permissions);\n builder.addPermissionRules(...permissionExtensions.permissionRules);\n builder.setFieldFormatValidators(modelExtensions.fieldValidators);\n\n const { processingEngine, router } = await builder.build();\n\n lifecycle.addStartupHook(async () => {\n await processingEngine.start();\n });\n lifecycle.addShutdownHook(() => processingEngine.stop());\n httpRouter.use(router);\n },\n });\n },\n});\n"],"names":["createConditionExports","RESOURCE_TYPE_CATALOG_ENTITY","permissionRules","merge","createBackendPlugin","catalogProcessingExtensionPoint","catalogAnalysisExtensionPoint","catalogPermissionExtensionPoint","catalogModelExtensionPoint","coreServices","eventsServiceRef","CatalogBuilder","ForwardedError"],"mappings":"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"}
|