@backstage/plugin-catalog-backend 1.11.0-next.0 → 1.11.0
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 +28 -0
- package/alpha/package.json +1 -1
- package/dist/alpha.cjs.js +1 -1
- package/dist/alpha.cjs.js.map +1 -1
- package/dist/alpha.d.ts +1 -1
- package/dist/cjs/{CatalogBuilder-26406e82.cjs.js → CatalogBuilder-21da853f.cjs.js} +139 -28
- package/dist/cjs/{CatalogBuilder-26406e82.cjs.js.map → CatalogBuilder-21da853f.cjs.js.map} +1 -1
- package/dist/index.cjs.js +14 -3
- package/dist/index.cjs.js.map +1 -1
- package/package.json +21 -21
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# @backstage/plugin-catalog-backend
|
|
2
2
|
|
|
3
|
+
## 1.11.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- f06f0e46ba88: Support placeholder resolvers in the CatalogPlugin, also moves `PlaceholderResolver` and related types from `@backstage/plugin-catalog-backend` to `@backstage/plugin-catalog-node`.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies
|
|
12
|
+
- @backstage/errors@1.2.1
|
|
13
|
+
- @backstage/backend-common@0.19.1
|
|
14
|
+
- @backstage/plugin-catalog-node@1.4.0
|
|
15
|
+
- @backstage/backend-plugin-api@0.5.4
|
|
16
|
+
- @backstage/backend-tasks@0.5.4
|
|
17
|
+
- @backstage/catalog-client@1.4.3
|
|
18
|
+
- @backstage/catalog-model@1.4.1
|
|
19
|
+
- @backstage/config@1.0.8
|
|
20
|
+
- @backstage/integration@1.5.1
|
|
21
|
+
- @backstage/types@1.1.0
|
|
22
|
+
- @backstage/plugin-auth-node@0.2.16
|
|
23
|
+
- @backstage/plugin-catalog-common@1.0.15
|
|
24
|
+
- @backstage/plugin-events-node@0.2.8
|
|
25
|
+
- @backstage/plugin-permission-common@0.7.7
|
|
26
|
+
- @backstage/plugin-permission-node@0.7.10
|
|
27
|
+
- @backstage/plugin-scaffolder-common@1.3.2
|
|
28
|
+
- @backstage/plugin-search-backend-module-catalog@0.1.3
|
|
29
|
+
- @backstage/plugin-search-common@1.2.5
|
|
30
|
+
|
|
3
31
|
## 1.11.0-next.0
|
|
4
32
|
|
|
5
33
|
### Minor Changes
|
package/alpha/package.json
CHANGED
package/dist/alpha.cjs.js
CHANGED
|
@@ -4,7 +4,7 @@ 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-21da853f.cjs.js');
|
|
8
8
|
var backendPluginApi = require('@backstage/backend-plugin-api');
|
|
9
9
|
var alpha$1 = require('@backstage/plugin-catalog-node/alpha');
|
|
10
10
|
var backendCommon = require('@backstage/backend-common');
|
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 createBackendPlugin,\n coreServices,\n} from '@backstage/backend-plugin-api';\nimport { CatalogBuilder } from './CatalogBuilder';\nimport {\n CatalogProcessingExtensionPoint,\n catalogProcessingExtensionPoint,\n} from '@backstage/plugin-catalog-node/alpha';\nimport {\n CatalogProcessor,\n EntityProvider,\n} from '@backstage/plugin-catalog-node';\nimport { loggerToWinstonLogger } from '@backstage/backend-common';\nimport { PlaceholderResolver } from '../modules';\n\nclass CatalogExtensionPointImpl implements CatalogProcessingExtensionPoint {\n #processors = new Array<CatalogProcessor>();\n #entityProviders = new Array<EntityProvider>();\n #placeholderResolvers: Record<string, PlaceholderResolver> = {};\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 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\n/**\n * Catalog plugin\n * @alpha\n */\nexport const catalogPlugin = createBackendPlugin({\n pluginId: 'catalog',\n register(env) {\n const processingExtensions = new CatalogExtensionPointImpl();\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 env.registerInit({\n deps: {\n logger: coreServices.logger,\n config: coreServices.config,\n reader: coreServices.urlReader,\n permissions: coreServices.permissions,\n database: coreServices.database,\n httpRouter: coreServices.httpRouter,\n lifecycle: coreServices.lifecycle,\n scheduler: coreServices.scheduler,\n },\n async init({\n logger,\n config,\n reader,\n database,\n permissions,\n httpRouter,\n lifecycle,\n scheduler,\n }) {\n const winstonLogger = loggerToWinstonLogger(logger);\n const builder = await CatalogBuilder.create({\n config,\n reader,\n permissions,\n database,\n scheduler,\n logger: winstonLogger,\n });\n builder.addProcessor(...processingExtensions.processors);\n builder.addEntityProvider(...processingExtensions.entityProviders);\n Object.entries(processingExtensions.placeholderResolvers).forEach(\n ([key, resolver]) => builder.setPlaceholderResolver(key, resolver),\n );\n\n const { processingEngine, router } = await builder.build();\n\n await processingEngine.start();\n lifecycle.addShutdownHook(() => processingEngine.stop());\n httpRouter.use(router);\n },\n });\n },\n});\n"],"names":["createConditionExports","RESOURCE_TYPE_CATALOG_ENTITY","permissionRules","createBackendPlugin","catalogProcessingExtensionPoint","coreServices","loggerToWinstonLogger","CatalogBuilder"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,MAAM,EAAE,UAAA,EAAY,yBAA0B,EAAA,GAAIA,2CAAuB,CAAA;AAAA,EACvE,QAAU,EAAA,SAAA;AAAA,EACV,YAAc,EAAAC,kCAAA;AAAA,EACd,KAAO,EAAAC,8BAAA;AACT,CAAC,CAAA,CAAA;AAQM,MAAM,iBAAoB,GAAA,WAAA;AAiC1B,MAAM,gCAAmC,GAAA;;;;;;;;;;;;;;;ACjEhD,IAAA,WAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA;AA+BA,MAAM,yBAAqE,CAAA;AAAA,EAA3E,WAAA,GAAA;AACE,IAAA,YAAA,CAAA,IAAA,EAAA,WAAA,EAAc,IAAI,KAAwB,EAAA,CAAA,CAAA;AAC1C,IAAA,YAAA,CAAA,IAAA,EAAA,gBAAA,EAAmB,IAAI,KAAsB,EAAA,CAAA,CAAA;AAC7C,IAAA,YAAA,CAAA,IAAA,EAAA,qBAAA,EAA6D,EAAC,CAAA,CAAA;AAAA,GAAA;AAAA,EAE9D,gBACK,UACG,EAAA;AACN,IAAA,YAAA,CAAA,IAAA,EAAK,WAAY,CAAA,CAAA,IAAA,CAAK,GAAG,UAAA,CAAW,MAAM,CAAA,CAAA;AAAA,GAC5C;AAAA,EAEA,qBACK,SACG,EAAA;AACN,IAAA,YAAA,CAAA,IAAA,EAAK,gBAAiB,CAAA,CAAA,IAAA,CAAK,GAAG,SAAA,CAAU,MAAM,CAAA,CAAA;AAAA,GAChD;AAAA,EAEA,sBAAA,CAAuB,KAAa,QAA+B,EAAA;AACjE,IAAA,IAAI,OAAO,YAAK,CAAA,IAAA,EAAA,qBAAA,CAAA;AACd,MAAA,MAAM,IAAI,KAAA;AAAA,QACR
|
|
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 createBackendPlugin,\n coreServices,\n} from '@backstage/backend-plugin-api';\nimport { CatalogBuilder } from './CatalogBuilder';\nimport {\n CatalogProcessingExtensionPoint,\n catalogProcessingExtensionPoint,\n} from '@backstage/plugin-catalog-node/alpha';\nimport {\n CatalogProcessor,\n EntityProvider,\n} from '@backstage/plugin-catalog-node';\nimport { loggerToWinstonLogger } from '@backstage/backend-common';\nimport { PlaceholderResolver } from '../modules';\n\nclass CatalogExtensionPointImpl implements CatalogProcessingExtensionPoint {\n #processors = new Array<CatalogProcessor>();\n #entityProviders = new Array<EntityProvider>();\n #placeholderResolvers: Record<string, PlaceholderResolver> = {};\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 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\n/**\n * Catalog plugin\n * @alpha\n */\nexport const catalogPlugin = createBackendPlugin({\n pluginId: 'catalog',\n register(env) {\n const processingExtensions = new CatalogExtensionPointImpl();\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 env.registerInit({\n deps: {\n logger: coreServices.logger,\n config: coreServices.config,\n reader: coreServices.urlReader,\n permissions: coreServices.permissions,\n database: coreServices.database,\n httpRouter: coreServices.httpRouter,\n lifecycle: coreServices.lifecycle,\n scheduler: coreServices.scheduler,\n },\n async init({\n logger,\n config,\n reader,\n database,\n permissions,\n httpRouter,\n lifecycle,\n scheduler,\n }) {\n const winstonLogger = loggerToWinstonLogger(logger);\n const builder = await CatalogBuilder.create({\n config,\n reader,\n permissions,\n database,\n scheduler,\n logger: winstonLogger,\n });\n builder.addProcessor(...processingExtensions.processors);\n builder.addEntityProvider(...processingExtensions.entityProviders);\n Object.entries(processingExtensions.placeholderResolvers).forEach(\n ([key, resolver]) => builder.setPlaceholderResolver(key, resolver),\n );\n\n const { processingEngine, router } = await builder.build();\n\n await processingEngine.start();\n lifecycle.addShutdownHook(() => processingEngine.stop());\n httpRouter.use(router);\n },\n });\n },\n});\n"],"names":["createConditionExports","RESOURCE_TYPE_CATALOG_ENTITY","permissionRules","createBackendPlugin","catalogProcessingExtensionPoint","coreServices","loggerToWinstonLogger","CatalogBuilder"],"mappings":"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"}
|
package/dist/alpha.d.ts
CHANGED
|
@@ -68,7 +68,7 @@ declare const catalogConditions: _backstage_plugin_permission_node.Conditions<{
|
|
|
68
68
|
*
|
|
69
69
|
* @alpha
|
|
70
70
|
*/
|
|
71
|
-
declare const createCatalogConditionalDecision: (permission: _backstage_plugin_permission_common.ResourcePermission<"catalog-entity">, conditions: _backstage_plugin_permission_common.PermissionCriteria<_backstage_plugin_permission_common.PermissionCondition<"catalog-entity">>) => _backstage_plugin_permission_common.ConditionalPolicyDecision;
|
|
71
|
+
declare const createCatalogConditionalDecision: (permission: _backstage_plugin_permission_common.ResourcePermission<"catalog-entity">, conditions: _backstage_plugin_permission_common.PermissionCriteria<_backstage_plugin_permission_common.PermissionCondition<"catalog-entity", _backstage_plugin_permission_common.PermissionRuleParams>>) => _backstage_plugin_permission_common.ConditionalPolicyDecision;
|
|
72
72
|
|
|
73
73
|
/**
|
|
74
74
|
* Convenience type for {@link @backstage/plugin-permission-node#PermissionRule}
|
|
@@ -134,9 +134,23 @@ async function findCodeOwnerByTarget(reader, targetUrl, scmIntegration) {
|
|
|
134
134
|
return owner;
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
+
var __defProp$b = Object.defineProperty;
|
|
138
|
+
var __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
139
|
+
var __publicField$b = (obj, key, value) => {
|
|
140
|
+
__defNormalProp$b(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
141
|
+
return value;
|
|
142
|
+
};
|
|
137
143
|
const ALLOWED_KINDS = ["API", "Component", "Domain", "Resource", "System"];
|
|
138
144
|
const ALLOWED_LOCATION_TYPES = ["url"];
|
|
139
145
|
class CodeOwnersProcessor {
|
|
146
|
+
constructor(options) {
|
|
147
|
+
__publicField$b(this, "integrations");
|
|
148
|
+
__publicField$b(this, "logger");
|
|
149
|
+
__publicField$b(this, "reader");
|
|
150
|
+
this.integrations = options.integrations;
|
|
151
|
+
this.logger = options.logger;
|
|
152
|
+
this.reader = options.reader;
|
|
153
|
+
}
|
|
140
154
|
static fromConfig(config, options) {
|
|
141
155
|
const integrations = integration.ScmIntegrations.fromConfig(config);
|
|
142
156
|
return new CodeOwnersProcessor({
|
|
@@ -144,11 +158,6 @@ class CodeOwnersProcessor {
|
|
|
144
158
|
integrations
|
|
145
159
|
});
|
|
146
160
|
}
|
|
147
|
-
constructor(options) {
|
|
148
|
-
this.integrations = options.integrations;
|
|
149
|
-
this.logger = options.logger;
|
|
150
|
-
this.reader = options.reader;
|
|
151
|
-
}
|
|
152
161
|
getProcessorName() {
|
|
153
162
|
return "CodeOwnersProcessor";
|
|
154
163
|
}
|
|
@@ -225,9 +234,15 @@ class AnnotateLocationEntityProcessor {
|
|
|
225
234
|
}
|
|
226
235
|
}
|
|
227
236
|
|
|
237
|
+
var __defProp$a = Object.defineProperty;
|
|
238
|
+
var __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
239
|
+
var __publicField$a = (obj, key, value) => {
|
|
240
|
+
__defNormalProp$a(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
241
|
+
return value;
|
|
242
|
+
};
|
|
228
243
|
class BuiltinKindsEntityProcessor {
|
|
229
244
|
constructor() {
|
|
230
|
-
this
|
|
245
|
+
__publicField$a(this, "validators", [
|
|
231
246
|
catalogModel.apiEntityV1alpha1Validator,
|
|
232
247
|
catalogModel.componentEntityV1alpha1Validator,
|
|
233
248
|
catalogModel.resourceEntityV1alpha1Validator,
|
|
@@ -236,7 +251,7 @@ class BuiltinKindsEntityProcessor {
|
|
|
236
251
|
catalogModel.userEntityV1alpha1Validator,
|
|
237
252
|
catalogModel.systemEntityV1alpha1Validator,
|
|
238
253
|
catalogModel.domainEntityV1alpha1Validator
|
|
239
|
-
];
|
|
254
|
+
]);
|
|
240
255
|
}
|
|
241
256
|
getProcessorName() {
|
|
242
257
|
return "BuiltinKindsEntityProcessor";
|
|
@@ -861,9 +876,16 @@ class ConfigLocationEntityProvider {
|
|
|
861
876
|
}
|
|
862
877
|
}
|
|
863
878
|
|
|
879
|
+
var __defProp$9 = Object.defineProperty;
|
|
880
|
+
var __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
881
|
+
var __publicField$9 = (obj, key, value) => {
|
|
882
|
+
__defNormalProp$9(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
883
|
+
return value;
|
|
884
|
+
};
|
|
864
885
|
class DefaultLocationStore {
|
|
865
886
|
constructor(db) {
|
|
866
887
|
this.db = db;
|
|
888
|
+
__publicField$9(this, "_connection");
|
|
867
889
|
}
|
|
868
890
|
getProviderName() {
|
|
869
891
|
return "DefaultLocationStore";
|
|
@@ -952,8 +974,17 @@ class DefaultLocationStore {
|
|
|
952
974
|
}
|
|
953
975
|
}
|
|
954
976
|
|
|
977
|
+
var __defProp$8 = Object.defineProperty;
|
|
978
|
+
var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
979
|
+
var __publicField$8 = (obj, key, value) => {
|
|
980
|
+
__defNormalProp$8(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
981
|
+
return value;
|
|
982
|
+
};
|
|
955
983
|
class RepoLocationAnalyzer {
|
|
956
984
|
constructor(logger, scmIntegrations, analyzers) {
|
|
985
|
+
__publicField$8(this, "logger");
|
|
986
|
+
__publicField$8(this, "scmIntegrations");
|
|
987
|
+
__publicField$8(this, "analyzers");
|
|
957
988
|
this.logger = logger;
|
|
958
989
|
this.scmIntegrations = scmIntegrations;
|
|
959
990
|
this.analyzers = analyzers;
|
|
@@ -1510,9 +1541,27 @@ function startTaskPipeline(options) {
|
|
|
1510
1541
|
};
|
|
1511
1542
|
}
|
|
1512
1543
|
|
|
1544
|
+
var __defProp$7 = Object.defineProperty;
|
|
1545
|
+
var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
1546
|
+
var __publicField$7 = (obj, key, value) => {
|
|
1547
|
+
__defNormalProp$7(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
1548
|
+
return value;
|
|
1549
|
+
};
|
|
1513
1550
|
const CACHE_TTL = 5;
|
|
1514
1551
|
class DefaultCatalogProcessingEngine {
|
|
1515
1552
|
constructor(options) {
|
|
1553
|
+
__publicField$7(this, "config");
|
|
1554
|
+
__publicField$7(this, "scheduler");
|
|
1555
|
+
__publicField$7(this, "logger");
|
|
1556
|
+
__publicField$7(this, "processingDatabase");
|
|
1557
|
+
__publicField$7(this, "orchestrator");
|
|
1558
|
+
__publicField$7(this, "stitcher");
|
|
1559
|
+
__publicField$7(this, "createHash");
|
|
1560
|
+
__publicField$7(this, "pollingIntervalMs");
|
|
1561
|
+
__publicField$7(this, "orphanCleanupIntervalMs");
|
|
1562
|
+
__publicField$7(this, "onProcessingError");
|
|
1563
|
+
__publicField$7(this, "tracker");
|
|
1564
|
+
__publicField$7(this, "stopFunc");
|
|
1516
1565
|
var _a, _b, _c;
|
|
1517
1566
|
this.config = options.config;
|
|
1518
1567
|
this.scheduler = options.scheduler;
|
|
@@ -2030,6 +2079,12 @@ function decodeCursor(encodedCursor) {
|
|
|
2030
2079
|
}
|
|
2031
2080
|
}
|
|
2032
2081
|
|
|
2082
|
+
var __defProp$6 = Object.defineProperty;
|
|
2083
|
+
var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
2084
|
+
var __publicField$6 = (obj, key, value) => {
|
|
2085
|
+
__defNormalProp$6(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
2086
|
+
return value;
|
|
2087
|
+
};
|
|
2033
2088
|
const defaultSortField = {
|
|
2034
2089
|
field: "metadata.uid",
|
|
2035
2090
|
order: "asc"
|
|
@@ -2120,6 +2175,9 @@ function parseFilter(filter, query, db, negate = false, entityIdField = "entity_
|
|
|
2120
2175
|
}
|
|
2121
2176
|
class DefaultEntitiesCatalog {
|
|
2122
2177
|
constructor(options) {
|
|
2178
|
+
__publicField$6(this, "database");
|
|
2179
|
+
__publicField$6(this, "logger");
|
|
2180
|
+
__publicField$6(this, "stitcher");
|
|
2123
2181
|
this.database = options.database;
|
|
2124
2182
|
this.logger = options.logger;
|
|
2125
2183
|
this.stitcher = options.stitcher;
|
|
@@ -2487,15 +2545,21 @@ function sortFieldsFromRow(row) {
|
|
|
2487
2545
|
return [row.value, row.entity_id];
|
|
2488
2546
|
}
|
|
2489
2547
|
|
|
2548
|
+
var __defProp$5 = Object.defineProperty;
|
|
2549
|
+
var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
2550
|
+
var __publicField$5 = (obj, key, value) => {
|
|
2551
|
+
__defNormalProp$5(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
2552
|
+
return value;
|
|
2553
|
+
};
|
|
2490
2554
|
class ProcessorOutputCollector {
|
|
2491
2555
|
constructor(logger, parentEntity) {
|
|
2492
2556
|
this.logger = logger;
|
|
2493
2557
|
this.parentEntity = parentEntity;
|
|
2494
|
-
this
|
|
2495
|
-
this
|
|
2496
|
-
this
|
|
2497
|
-
this
|
|
2498
|
-
this
|
|
2558
|
+
__publicField$5(this, "errors", new Array());
|
|
2559
|
+
__publicField$5(this, "relations", new Array());
|
|
2560
|
+
__publicField$5(this, "deferredEntities", new Array());
|
|
2561
|
+
__publicField$5(this, "refreshKeys", new Array());
|
|
2562
|
+
__publicField$5(this, "done", false);
|
|
2499
2563
|
}
|
|
2500
2564
|
generic() {
|
|
2501
2565
|
return (i) => this.receive(this.logger, i);
|
|
@@ -2573,9 +2637,16 @@ class ProcessorOutputCollector {
|
|
|
2573
2637
|
}
|
|
2574
2638
|
}
|
|
2575
2639
|
|
|
2640
|
+
var __defProp$4 = Object.defineProperty;
|
|
2641
|
+
var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
2642
|
+
var __publicField$4 = (obj, key, value) => {
|
|
2643
|
+
__defNormalProp$4(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
2644
|
+
return value;
|
|
2645
|
+
};
|
|
2576
2646
|
class SingleProcessorSubCache {
|
|
2577
2647
|
constructor(existingState) {
|
|
2578
2648
|
this.existingState = existingState;
|
|
2649
|
+
__publicField$4(this, "newState");
|
|
2579
2650
|
}
|
|
2580
2651
|
async get(key) {
|
|
2581
2652
|
var _a;
|
|
@@ -2595,7 +2666,8 @@ class SingleProcessorSubCache {
|
|
|
2595
2666
|
class SingleProcessorCache {
|
|
2596
2667
|
constructor(existingState) {
|
|
2597
2668
|
this.existingState = existingState;
|
|
2598
|
-
this
|
|
2669
|
+
__publicField$4(this, "newState");
|
|
2670
|
+
__publicField$4(this, "subCaches", /* @__PURE__ */ new Map());
|
|
2599
2671
|
}
|
|
2600
2672
|
async get(key) {
|
|
2601
2673
|
var _a;
|
|
@@ -2635,7 +2707,7 @@ class SingleProcessorCache {
|
|
|
2635
2707
|
class ProcessorCacheManager {
|
|
2636
2708
|
constructor(existingState) {
|
|
2637
2709
|
this.existingState = existingState;
|
|
2638
|
-
this
|
|
2710
|
+
__publicField$4(this, "caches", /* @__PURE__ */ new Map());
|
|
2639
2711
|
}
|
|
2640
2712
|
forProcessor(processor, key) {
|
|
2641
2713
|
const name = processor.getProcessorName();
|
|
@@ -3640,8 +3712,15 @@ async function createRouter(options) {
|
|
|
3640
3712
|
return router;
|
|
3641
3713
|
}
|
|
3642
3714
|
|
|
3715
|
+
var __defProp$3 = Object.defineProperty;
|
|
3716
|
+
var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3717
|
+
var __publicField$3 = (obj, key, value) => {
|
|
3718
|
+
__defNormalProp$3(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
3719
|
+
return value;
|
|
3720
|
+
};
|
|
3643
3721
|
class DefaultRefreshService {
|
|
3644
3722
|
constructor(options) {
|
|
3723
|
+
__publicField$3(this, "database");
|
|
3645
3724
|
this.database = options.database;
|
|
3646
3725
|
}
|
|
3647
3726
|
async refresh(options) {
|
|
@@ -3686,7 +3765,13 @@ class AuthorizedRefreshService {
|
|
|
3686
3765
|
}
|
|
3687
3766
|
}
|
|
3688
3767
|
|
|
3689
|
-
|
|
3768
|
+
var __defProp$2 = Object.defineProperty;
|
|
3769
|
+
var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3770
|
+
var __publicField$2 = (obj, key, value) => {
|
|
3771
|
+
__defNormalProp$2(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
3772
|
+
return value;
|
|
3773
|
+
};
|
|
3774
|
+
const _DefaultCatalogRulesEnforcer = class _DefaultCatalogRulesEnforcer {
|
|
3690
3775
|
constructor(rules) {
|
|
3691
3776
|
this.rules = rules;
|
|
3692
3777
|
}
|
|
@@ -3820,17 +3905,17 @@ const _DefaultCatalogRulesEnforcer = class {
|
|
|
3820
3905
|
return false;
|
|
3821
3906
|
}
|
|
3822
3907
|
};
|
|
3823
|
-
let DefaultCatalogRulesEnforcer = _DefaultCatalogRulesEnforcer;
|
|
3824
3908
|
/**
|
|
3825
3909
|
* Default rules used by the catalog.
|
|
3826
3910
|
*
|
|
3827
3911
|
* Denies any location from specifying user or group entities.
|
|
3828
3912
|
*/
|
|
3829
|
-
|
|
3913
|
+
__publicField$2(_DefaultCatalogRulesEnforcer, "defaultRules", [
|
|
3830
3914
|
{
|
|
3831
3915
|
allow: ["Component", "API", "Location"].map((kind) => ({ kind }))
|
|
3832
3916
|
}
|
|
3833
|
-
];
|
|
3917
|
+
]);
|
|
3918
|
+
let DefaultCatalogRulesEnforcer = _DefaultCatalogRulesEnforcer;
|
|
3834
3919
|
function resolveTarget(type, target) {
|
|
3835
3920
|
if (type !== "file") {
|
|
3836
3921
|
return target;
|
|
@@ -3838,10 +3923,16 @@ function resolveTarget(type, target) {
|
|
|
3838
3923
|
return path__default["default"].resolve(target);
|
|
3839
3924
|
}
|
|
3840
3925
|
|
|
3926
|
+
var __defProp$1 = Object.defineProperty;
|
|
3927
|
+
var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3928
|
+
var __publicField$1 = (obj, key, value) => {
|
|
3929
|
+
__defNormalProp$1(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
3930
|
+
return value;
|
|
3931
|
+
};
|
|
3841
3932
|
class Connection {
|
|
3842
3933
|
constructor(config) {
|
|
3843
3934
|
this.config = config;
|
|
3844
|
-
this
|
|
3935
|
+
__publicField$1(this, "validateEntityEnvelope", catalogModel.entityEnvelopeSchemaValidator());
|
|
3845
3936
|
}
|
|
3846
3937
|
async applyMutation(mutation) {
|
|
3847
3938
|
const db = this.config.providerDatabase;
|
|
@@ -4280,10 +4371,10 @@ class AuthorizedLocationService {
|
|
|
4280
4371
|
}
|
|
4281
4372
|
|
|
4282
4373
|
async function deleteWithEagerPruningOfChildren(options) {
|
|
4283
|
-
const {
|
|
4374
|
+
const { knex, entityRefs, sourceKey } = options;
|
|
4284
4375
|
let removedCount = 0;
|
|
4285
4376
|
for (const refs of lodash__default["default"].chunk(entityRefs, 1e3)) {
|
|
4286
|
-
removedCount += await
|
|
4377
|
+
removedCount += await knex.delete().from("refresh_state").whereIn(
|
|
4287
4378
|
"entity_ref",
|
|
4288
4379
|
(orphans) => orphans.withRecursive(
|
|
4289
4380
|
"descendants",
|
|
@@ -4331,7 +4422,7 @@ async function deleteWithEagerPruningOfChildren(options) {
|
|
|
4331
4422
|
"descendants.entity_ref"
|
|
4332
4423
|
).whereNull("retained.entity_ref")
|
|
4333
4424
|
);
|
|
4334
|
-
await
|
|
4425
|
+
await knex("refresh_state_references").where("source_key", "=", sourceKey).whereIn("target_entity_ref", refs).delete();
|
|
4335
4426
|
}
|
|
4336
4427
|
return removedCount;
|
|
4337
4428
|
}
|
|
@@ -4373,7 +4464,7 @@ class DefaultProviderDatabase {
|
|
|
4373
4464
|
const { toAdd, toUpsert, toRemove } = await this.createDelta(tx, options);
|
|
4374
4465
|
if (toRemove.length) {
|
|
4375
4466
|
const removedCount = await deleteWithEagerPruningOfChildren({
|
|
4376
|
-
tx,
|
|
4467
|
+
knex: tx,
|
|
4377
4468
|
entityRefs: toRemove,
|
|
4378
4469
|
sourceKey: options.sourceKey
|
|
4379
4470
|
});
|
|
@@ -4589,14 +4680,34 @@ class DefaultCatalogDatabase {
|
|
|
4589
4680
|
}
|
|
4590
4681
|
}
|
|
4591
4682
|
|
|
4683
|
+
var __defProp = Object.defineProperty;
|
|
4684
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4685
|
+
var __publicField = (obj, key, value) => {
|
|
4686
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4687
|
+
return value;
|
|
4688
|
+
};
|
|
4592
4689
|
class CatalogBuilder {
|
|
4593
4690
|
constructor(env) {
|
|
4594
|
-
this
|
|
4691
|
+
__publicField(this, "env");
|
|
4692
|
+
__publicField(this, "entityPolicies");
|
|
4693
|
+
__publicField(this, "entityPoliciesReplace");
|
|
4694
|
+
__publicField(this, "placeholderResolvers");
|
|
4695
|
+
__publicField(this, "fieldFormatValidators");
|
|
4696
|
+
__publicField(this, "entityProviders");
|
|
4697
|
+
__publicField(this, "processors");
|
|
4698
|
+
__publicField(this, "locationAnalyzers");
|
|
4699
|
+
__publicField(this, "processorsReplace");
|
|
4700
|
+
__publicField(this, "parser");
|
|
4701
|
+
__publicField(this, "onProcessingError");
|
|
4702
|
+
__publicField(this, "processingInterval", createRandomProcessingInterval({
|
|
4595
4703
|
minSeconds: 100,
|
|
4596
4704
|
maxSeconds: 150
|
|
4597
|
-
});
|
|
4598
|
-
this
|
|
4599
|
-
this
|
|
4705
|
+
}));
|
|
4706
|
+
__publicField(this, "locationAnalyzer");
|
|
4707
|
+
__publicField(this, "permissionRules");
|
|
4708
|
+
__publicField(this, "allowedLocationType");
|
|
4709
|
+
__publicField(this, "legacySingleProcessorValidation", false);
|
|
4710
|
+
__publicField(this, "eventBroker");
|
|
4600
4711
|
this.env = env;
|
|
4601
4712
|
this.entityPolicies = [];
|
|
4602
4713
|
this.entityPoliciesReplace = false;
|
|
@@ -5102,4 +5213,4 @@ exports.createCatalogPermissionRule = createCatalogPermissionRule;
|
|
|
5102
5213
|
exports.createRandomProcessingInterval = createRandomProcessingInterval;
|
|
5103
5214
|
exports.parseEntityYaml = parseEntityYaml;
|
|
5104
5215
|
exports.permissionRules = permissionRules;
|
|
5105
|
-
//# sourceMappingURL=CatalogBuilder-
|
|
5216
|
+
//# sourceMappingURL=CatalogBuilder-21da853f.cjs.js.map
|