catalog-backend: migrate to use exports

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
Patrik Oldsberg
2023-01-16 10:37:24 +01:00
parent 69ffa70600
commit c64fcc8443
21 changed files with 229 additions and 175 deletions
+154
View File
@@ -0,0 +1,154 @@
## API Report File for "@backstage/plugin-catalog-backend"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { BackendFeature } from '@backstage/backend-plugin-api';
import { ConditionalPolicyDecision } from '@backstage/plugin-permission-common';
import { Conditions } from '@backstage/plugin-permission-node';
import { Entity } from '@backstage/catalog-model';
import { PermissionCondition } from '@backstage/plugin-permission-common';
import { PermissionCriteria } from '@backstage/plugin-permission-common';
import { PermissionRule } from '@backstage/plugin-permission-node';
import { PermissionRuleParams } from '@backstage/plugin-permission-common';
import { ResourcePermission } from '@backstage/plugin-permission-common';
// @alpha
export const catalogConditions: Conditions<{
hasAnnotation: PermissionRule<
Entity,
EntitiesSearchFilter,
'catalog-entity',
{
value?: string | undefined;
annotation: string;
}
>;
hasLabel: PermissionRule<
Entity,
EntitiesSearchFilter,
'catalog-entity',
{
label: string;
}
>;
hasMetadata: PermissionRule<
Entity,
EntitiesSearchFilter,
'catalog-entity',
{
value?: string | undefined;
key: string;
}
>;
hasSpec: PermissionRule<
Entity,
EntitiesSearchFilter,
'catalog-entity',
{
value?: string | undefined;
key: string;
}
>;
isEntityKind: PermissionRule<
Entity,
EntitiesSearchFilter,
'catalog-entity',
{
kinds: string[];
}
>;
isEntityOwner: PermissionRule<
Entity,
EntitiesSearchFilter,
'catalog-entity',
{
claims: string[];
}
>;
}>;
// @alpha
export type CatalogPermissionRule<
TParams extends PermissionRuleParams = PermissionRuleParams,
> = PermissionRule<Entity, EntitiesSearchFilter, 'catalog-entity', TParams>;
// @alpha
export const catalogPlugin: () => BackendFeature;
// @alpha
export const createCatalogConditionalDecision: (
permission: ResourcePermission<'catalog-entity'>,
conditions: PermissionCriteria<
PermissionCondition<'catalog-entity', PermissionRuleParams>
>,
) => ConditionalPolicyDecision;
// @alpha
export const createCatalogPermissionRule: <
TParams extends PermissionRuleParams = undefined,
>(
rule: PermissionRule<Entity, EntitiesSearchFilter, 'catalog-entity', TParams>,
) => PermissionRule<Entity, EntitiesSearchFilter, 'catalog-entity', TParams>;
// @alpha
export const permissionRules: {
hasAnnotation: PermissionRule<
Entity,
EntitiesSearchFilter,
'catalog-entity',
{
value?: string | undefined;
annotation: string;
}
>;
hasLabel: PermissionRule<
Entity,
EntitiesSearchFilter,
'catalog-entity',
{
label: string;
}
>;
hasMetadata: PermissionRule<
Entity,
EntitiesSearchFilter,
'catalog-entity',
{
value?: string | undefined;
key: string;
}
>;
hasSpec: PermissionRule<
Entity,
EntitiesSearchFilter,
'catalog-entity',
{
value?: string | undefined;
key: string;
}
>;
isEntityKind: PermissionRule<
Entity,
EntitiesSearchFilter,
'catalog-entity',
{
kinds: string[];
}
>;
isEntityOwner: PermissionRule<
Entity,
EntitiesSearchFilter,
'catalog-entity',
{
claims: string[];
}
>;
};
// Warnings were encountered during analysis:
//
// src/permissions/conditionExports.d.ts:8:5 - (ae-forgotten-export) The symbol "EntitiesSearchFilter" needs to be exported by the entry point alpha.d.ts
// (No @packageDocumentation comment for this package)
```
+3 -138
View File
@@ -10,7 +10,6 @@ import { AnalyzeLocationExistingEntity as AnalyzeLocationExistingEntity_2 } from
import { AnalyzeLocationGenerateEntity as AnalyzeLocationGenerateEntity_2 } from '@backstage/plugin-catalog-common';
import { AnalyzeLocationRequest as AnalyzeLocationRequest_2 } from '@backstage/plugin-catalog-common';
import { AnalyzeLocationResponse as AnalyzeLocationResponse_2 } from '@backstage/plugin-catalog-common';
import { BackendFeature } from '@backstage/backend-plugin-api';
import { CatalogApi } from '@backstage/catalog-client';
import { CatalogEntityDocument } from '@backstage/plugin-catalog-common';
import { CatalogProcessor } from '@backstage/plugin-catalog-node';
@@ -23,8 +22,6 @@ import { CatalogProcessorParser } from '@backstage/plugin-catalog-node';
import { CatalogProcessorRefreshKeysResult } from '@backstage/plugin-catalog-node';
import { CatalogProcessorRelationResult } from '@backstage/plugin-catalog-node';
import { CatalogProcessorResult } from '@backstage/plugin-catalog-node';
import { ConditionalPolicyDecision } from '@backstage/plugin-permission-common';
import { Conditions } from '@backstage/plugin-permission-node';
import { Config } from '@backstage/config';
import { DeferredEntity } from '@backstage/plugin-catalog-node';
import { DocumentCollatorFactory } from '@backstage/plugin-search-common';
@@ -41,8 +38,6 @@ import { LocationSpec as LocationSpec_2 } from '@backstage/plugin-catalog-common
import { Logger } from 'winston';
import { Permission } from '@backstage/plugin-permission-common';
import { PermissionAuthorizer } from '@backstage/plugin-permission-common';
import { PermissionCondition } from '@backstage/plugin-permission-common';
import { PermissionCriteria } from '@backstage/plugin-permission-common';
import { PermissionEvaluator } from '@backstage/plugin-permission-common';
import { PermissionRule } from '@backstage/plugin-permission-node';
import { PermissionRuleParams } from '@backstage/plugin-permission-common';
@@ -50,7 +45,6 @@ import { PluginDatabaseManager } from '@backstage/backend-common';
import { PluginEndpointDiscovery } from '@backstage/backend-common';
import { processingResult } from '@backstage/plugin-catalog-node';
import { Readable } from 'stream';
import { ResourcePermission } from '@backstage/plugin-permission-common';
import { Router } from 'express';
import { ScmIntegrationRegistry } from '@backstage/integration';
import { TokenManager } from '@backstage/backend-common';
@@ -128,10 +122,9 @@ export class CatalogBuilder {
addLocationAnalyzers(
...analyzers: Array<ScmLocationAnalyzer | Array<ScmLocationAnalyzer>>
): CatalogBuilder;
// @alpha
addPermissionRules(
...permissionRules: Array<
CatalogPermissionRule | Array<CatalogPermissionRule>
CatalogPermissionRuleInput | Array<CatalogPermissionRuleInput>
>
): this;
addProcessor(
@@ -172,61 +165,6 @@ export type CatalogCollatorEntityTransformer = (
entity: Entity,
) => Omit<CatalogEntityDocument, 'location' | 'authorization'>;
// @alpha
export const catalogConditions: Conditions<{
hasAnnotation: PermissionRule<
Entity,
EntitiesSearchFilter,
'catalog-entity',
{
value?: string | undefined;
annotation: string;
}
>;
hasLabel: PermissionRule<
Entity,
EntitiesSearchFilter,
'catalog-entity',
{
label: string;
}
>;
hasMetadata: PermissionRule<
Entity,
EntitiesSearchFilter,
'catalog-entity',
{
value?: string | undefined;
key: string;
}
>;
hasSpec: PermissionRule<
Entity,
EntitiesSearchFilter,
'catalog-entity',
{
value?: string | undefined;
key: string;
}
>;
isEntityKind: PermissionRule<
Entity,
EntitiesSearchFilter,
'catalog-entity',
{
kinds: string[];
}
>;
isEntityOwner: PermissionRule<
Entity,
EntitiesSearchFilter,
'catalog-entity',
{
claims: string[];
}
>;
}>;
// @public (undocumented)
export type CatalogEnvironment = {
logger: Logger;
@@ -236,14 +174,11 @@ export type CatalogEnvironment = {
permissions: PermissionEvaluator | PermissionAuthorizer;
};
// @alpha
export type CatalogPermissionRule<
// @public
export type CatalogPermissionRuleInput<
TParams extends PermissionRuleParams = PermissionRuleParams,
> = PermissionRule<Entity, EntitiesSearchFilter, 'catalog-entity', TParams>;
// @alpha
export const catalogPlugin: () => BackendFeature;
// @public
export interface CatalogProcessingEngine {
// (undocumented)
@@ -293,21 +228,6 @@ export class CodeOwnersProcessor implements CatalogProcessor {
preProcessEntity(entity: Entity, location: LocationSpec_2): Promise<Entity>;
}
// @alpha
export const createCatalogConditionalDecision: (
permission: ResourcePermission<'catalog-entity'>,
conditions: PermissionCriteria<
PermissionCondition<'catalog-entity', PermissionRuleParams>
>,
) => ConditionalPolicyDecision;
// @alpha
export const createCatalogPermissionRule: <
TParams extends PermissionRuleParams = undefined,
>(
rule: PermissionRule<Entity, EntitiesSearchFilter, 'catalog-entity', TParams>,
) => PermissionRule<Entity, EntitiesSearchFilter, 'catalog-entity', TParams>;
// @public
export function createRandomProcessingInterval(options: {
minSeconds: number;
@@ -466,61 +386,6 @@ export function parseEntityYaml(
location: LocationSpec_2,
): Iterable<CatalogProcessorResult>;
// @alpha
export const permissionRules: {
hasAnnotation: PermissionRule<
Entity,
EntitiesSearchFilter,
'catalog-entity',
{
value?: string | undefined;
annotation: string;
}
>;
hasLabel: PermissionRule<
Entity,
EntitiesSearchFilter,
'catalog-entity',
{
label: string;
}
>;
hasMetadata: PermissionRule<
Entity,
EntitiesSearchFilter,
'catalog-entity',
{
value?: string | undefined;
key: string;
}
>;
hasSpec: PermissionRule<
Entity,
EntitiesSearchFilter,
'catalog-entity',
{
value?: string | undefined;
key: string;
}
>;
isEntityKind: PermissionRule<
Entity,
EntitiesSearchFilter,
'catalog-entity',
{
kinds: string[];
}
>;
isEntityOwner: PermissionRule<
Entity,
EntitiesSearchFilter,
'catalog-entity',
{
claims: string[];
}
>;
};
// @public
export class PlaceholderProcessor implements CatalogProcessor {
constructor(options: PlaceholderProcessorOptions);
+16 -6
View File
@@ -6,10 +6,21 @@
"types": "src/index.ts",
"license": "Apache-2.0",
"publishConfig": {
"access": "public",
"main": "dist/index.cjs.js",
"types": "dist/index.d.ts",
"alphaTypes": "dist/index.alpha.d.ts"
"access": "public"
},
"exports": {
".": "./src/index.ts",
"./alpha": "./src/alpha.ts"
},
"typesVersions": {
"*": {
"*": [
"src/index.ts"
],
"alpha": [
"src/alpha.ts"
]
}
},
"backstage": {
"role": "backend-plugin"
@@ -25,7 +36,7 @@
],
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build --experimental-type-build",
"build": "backstage-cli package build",
"lint": "backstage-cli package lint",
"test": "backstage-cli package test",
"prepack": "backstage-cli package prepack",
@@ -88,7 +99,6 @@
},
"files": [
"dist",
"alpha",
"migrations/**/*.{js,d.ts}",
"config.d.ts"
],
+18
View File
@@ -0,0 +1,18 @@
/*
* Copyright 2023 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
export * from './permissions';
export { catalogPlugin } from './service/CatalogPlugin';
-1
View File
@@ -42,7 +42,6 @@ export { processingResult } from '@backstage/plugin-catalog-node';
export * from './catalog';
export * from './ingestion';
export * from './modules';
export * from './permissions';
export * from './processing';
export * from './search';
export * from './service';
@@ -14,7 +14,7 @@
* limitations under the License.
*/
import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common';
import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common/alpha';
import { createConditionExports } from '@backstage/plugin-permission-node';
import { permissionRules } from './rules';
@@ -15,7 +15,7 @@
*/
import { get } from 'lodash';
import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common';
import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common/alpha';
import { createCatalogPermissionRule } from './util';
import { z } from 'zod';
@@ -14,7 +14,7 @@
* limitations under the License.
*/
import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common';
import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common/alpha';
import { z } from 'zod';
import { createCatalogPermissionRule } from './util';
@@ -14,7 +14,7 @@
* limitations under the License.
*/
import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common';
import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common/alpha';
import { z } from 'zod';
import { createCatalogPermissionRule } from './util';
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common';
import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common/alpha';
import { z } from 'zod';
import { EntitiesSearchFilter } from '../../catalog/types';
import { createCatalogPermissionRule } from './util';
@@ -15,7 +15,7 @@
*/
import { RELATION_OWNED_BY } from '@backstage/catalog-model';
import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common';
import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common/alpha';
import { z } from 'zod';
import { createCatalogPermissionRule } from './util';
@@ -15,7 +15,7 @@
*/
import { Entity } from '@backstage/catalog-model';
import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common';
import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common/alpha';
import { PermissionRuleParams } from '@backstage/plugin-permission-common';
import {
makeCreatePermissionRule,
@@ -29,10 +29,8 @@ import {
CatalogClient,
GetEntitiesRequest,
} from '@backstage/catalog-client';
import {
catalogEntityReadPermission,
CatalogEntityDocument,
} from '@backstage/plugin-catalog-common';
import { catalogEntityReadPermission } from '@backstage/plugin-catalog-common/alpha';
import { CatalogEntityDocument } from '@backstage/plugin-catalog-common';
import { Permission } from '@backstage/plugin-permission-common';
/**
@@ -25,10 +25,8 @@ import {
GetEntitiesRequest,
} from '@backstage/catalog-client';
import { DocumentCollatorFactory } from '@backstage/plugin-search-common';
import {
catalogEntityReadPermission,
CatalogEntityDocument,
} from '@backstage/plugin-catalog-common';
import { catalogEntityReadPermission } from '@backstage/plugin-catalog-common/alpha';
import { CatalogEntityDocument } from '@backstage/plugin-catalog-common';
import { Permission } from '@backstage/plugin-permission-common';
import { Readable } from 'stream';
import { CatalogCollatorEntityTransformer } from './CatalogCollatorEntityTransformer';
@@ -18,7 +18,7 @@ import { NotAllowedError } from '@backstage/errors';
import {
catalogEntityDeletePermission,
catalogEntityReadPermission,
} from '@backstage/plugin-catalog-common';
} from '@backstage/plugin-catalog-common/alpha';
import { Entity, stringifyEntityRef } from '@backstage/catalog-model';
import {
AuthorizeResult,
@@ -21,7 +21,7 @@ import {
catalogLocationCreatePermission,
catalogLocationDeletePermission,
catalogLocationReadPermission,
} from '@backstage/plugin-catalog-common';
} from '@backstage/plugin-catalog-common/alpha';
import {
AuthorizeResult,
PermissionEvaluator,
@@ -15,7 +15,7 @@
*/
import { NotAllowedError } from '@backstage/errors';
import { catalogEntityRefreshPermission } from '@backstage/plugin-catalog-common';
import { catalogEntityRefreshPermission } from '@backstage/plugin-catalog-common/alpha';
import {
AuthorizeResult,
PermissionEvaluator,
@@ -76,10 +76,10 @@ import { DefaultCatalogRulesEnforcer } from '../ingestion/CatalogRules';
import { Config } from '@backstage/config';
import { Logger } from 'winston';
import { connectEntityProviders } from '../processing/connectEntityProviders';
import {
CatalogPermissionRule,
permissionRules as catalogPermissionRules,
} from '../permissions/rules';
import { PermissionRuleParams } from '@backstage/plugin-permission-common';
import { EntitiesSearchFilter } from '../catalog/types';
import { permissionRules as catalogPermissionRules } from '../permissions/rules';
import { PermissionRule } from '@backstage/plugin-permission-node';
import {
PermissionAuthorizer,
PermissionEvaluator,
@@ -94,11 +94,20 @@ import { basicEntityFilter } from './request/basicEntityFilter';
import {
catalogPermissions,
RESOURCE_TYPE_CATALOG_ENTITY,
} from '@backstage/plugin-catalog-common';
} from '@backstage/plugin-catalog-common/alpha';
import { AuthorizedLocationService } from './AuthorizedLocationService';
import { DefaultProviderDatabase } from '../database/DefaultProviderDatabase';
import { DefaultCatalogDatabase } from '../database/DefaultCatalogDatabase';
/**
* This is a duplicate of the alpha `CatalogPermissionRule` type, for use in the stable API.
*
* @public
*/
export type CatalogPermissionRuleInput<
TParams extends PermissionRuleParams = PermissionRuleParams,
> = PermissionRule<Entity, EntitiesSearchFilter, 'catalog-entity', TParams>;
/** @public */
export type CatalogEnvironment = {
logger: Logger;
@@ -154,7 +163,7 @@ export class CatalogBuilder {
maxSeconds: 150,
});
private locationAnalyzer: LocationAnalyzer | undefined = undefined;
private readonly permissionRules: CatalogPermissionRule[];
private readonly permissionRules: CatalogPermissionRuleInput[];
private allowedLocationType: string[];
private legacySingleProcessorValidation = false;
@@ -379,11 +388,10 @@ export class CatalogBuilder {
* {@link @backstage/plugin-permission-node#PermissionRule}.
*
* @param permissionRules - Additional permission rules
* @alpha
*/
addPermissionRules(
...permissionRules: Array<
CatalogPermissionRule | Array<CatalogPermissionRule>
CatalogPermissionRuleInput | Array<CatalogPermissionRuleInput>
>
) {
this.permissionRules.push(...permissionRules.flat());
@@ -19,9 +19,11 @@ import {
} from '@backstage/backend-plugin-api';
import { CatalogBuilder } from './CatalogBuilder';
import {
CatalogProcessor,
CatalogProcessingExtensionPoint,
catalogProcessingExtensionPoint,
} from '@backstage/plugin-catalog-node/alpha';
import {
CatalogProcessor,
EntityProvider,
} from '@backstage/plugin-catalog-node';
import { loggerToWinstonLogger } from '@backstage/backend-common';
@@ -34,7 +34,7 @@ import {
createPermissionIntegrationRouter,
createPermissionRule,
} from '@backstage/plugin-permission-node';
import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common';
import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common/alpha';
import { CatalogProcessingOrchestrator } from '../processing/types';
import { z } from 'zod';
+4 -2
View File
@@ -14,6 +14,8 @@
* limitations under the License.
*/
export type { CatalogEnvironment } from './CatalogBuilder';
export type {
CatalogEnvironment,
CatalogPermissionRuleInput,
} from './CatalogBuilder';
export { CatalogBuilder } from './CatalogBuilder';
export { catalogPlugin } from './CatalogPlugin';