From 66e0626bb04a9cd3d555bdb82d876dcf261cab8e Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 5 Sep 2021 21:57:59 +0200 Subject: [PATCH] config-loader: API report warnings cleanup Signed-off-by: Patrik Oldsberg --- packages/config-loader/api-report.md | 54 +++++++++++-------- packages/config-loader/src/index.ts | 9 +++- packages/config-loader/src/lib/env.ts | 2 + .../config-loader/src/lib/schema/compile.ts | 2 + .../config-loader/src/lib/schema/index.ts | 8 ++- packages/config-loader/src/lib/schema/load.ts | 7 ++- .../config-loader/src/lib/schema/types.ts | 14 +++-- .../config-loader/src/lib/transform/index.ts | 1 + .../config-loader/src/lib/transform/types.ts | 1 + packages/config-loader/src/loader.ts | 6 +++ 10 files changed, 74 insertions(+), 30 deletions(-) diff --git a/packages/config-loader/api-report.md b/packages/config-loader/api-report.md index 38aa0b1ebb..a674f624b0 100644 --- a/packages/config-loader/api-report.md +++ b/packages/config-loader/api-report.md @@ -7,30 +7,31 @@ import { AppConfig } from '@backstage/config'; import { JsonObject } from '@backstage/config'; import { JSONSchema7 } from 'json-schema'; -// Warning: (ae-missing-release-tag) "ConfigSchema" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export type ConfigSchema = { process( appConfigs: AppConfig[], - options?: ConfigProcessingOptions, + options?: ConfigSchemaProcessingOptions, ): AppConfig[]; serialize(): JsonObject; }; -// Warning: (ae-forgotten-export) The symbol "CONFIG_VISIBILITIES" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "ConfigVisibility" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public -export type ConfigVisibility = typeof CONFIG_VISIBILITIES[number]; +export type ConfigSchemaProcessingOptions = { + visibility?: ConfigVisibility[]; + valueTransform?: TransformFunc; + withFilteredKeys?: boolean; +}; + +// @public +export type ConfigVisibility = 'frontend' | 'backend' | 'secret'; -// Warning: (ae-missing-release-tag) "loadConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) +export type EnvFunc = (name: string) => Promise; + +// @public export function loadConfig(options: LoadConfigOptions): Promise; -// Warning: (ae-missing-release-tag) "LoadConfigOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type LoadConfigOptions = { configRoot: string; @@ -43,28 +44,35 @@ export type LoadConfigOptions = { }; }; -// Warning: (ae-forgotten-export) The symbol "Options" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "loadConfigSchema" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public -export function loadConfigSchema(options: Options): Promise; +export function loadConfigSchema( + options: LoadConfigSchemaOptions, +): Promise; + +// @public (undocumented) +export type LoadConfigSchemaOptions = + | { + dependencies: string[]; + } + | { + serialized: JsonObject; + }; -// Warning: (ae-missing-release-tag) "mergeConfigSchemas" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export function mergeConfigSchemas(schemas: JSONSchema7[]): JSONSchema7; -// Warning: (ae-missing-release-tag) "readEnvConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public export function readEnvConfig(env: { [name: string]: string | undefined; }): AppConfig[]; -// Warnings were encountered during analysis: -// -// src/lib/schema/types.d.ts:83:5 - (ae-forgotten-export) The symbol "ConfigProcessingOptions" needs to be exported by the entry point index.d.ts -// src/loader.d.ts:13:5 - (ae-forgotten-export) The symbol "EnvFunc" needs to be exported by the entry point index.d.ts +// @public +export type TransformFunc = ( + value: T, + context: { + visibility: ConfigVisibility; + }, +) => T | undefined; // (No @packageDocumentation comment for this package) ``` diff --git a/packages/config-loader/src/index.ts b/packages/config-loader/src/index.ts index f605d53115..29976b52de 100644 --- a/packages/config-loader/src/index.ts +++ b/packages/config-loader/src/index.ts @@ -15,6 +15,13 @@ */ export { readEnvConfig, loadConfigSchema, mergeConfigSchemas } from './lib'; -export type { ConfigSchema, ConfigVisibility } from './lib'; +export type { + ConfigSchema, + ConfigSchemaProcessingOptions, + ConfigVisibility, + EnvFunc, + LoadConfigSchemaOptions, + TransformFunc, +} from './lib'; export { loadConfig } from './loader'; export type { LoadConfigOptions } from './loader'; diff --git a/packages/config-loader/src/lib/env.ts b/packages/config-loader/src/lib/env.ts index 7d28e6b6ef..b244c06c64 100644 --- a/packages/config-loader/src/lib/env.ts +++ b/packages/config-loader/src/lib/env.ts @@ -38,6 +38,8 @@ const CONFIG_KEY_PART_PATTERN = /^[a-z][a-z0-9]*(?:[-_][a-z][a-z0-9]*)*$/i; * For example, to set the config app.title to "My Title", use the following: * * APP_CONFIG_app_title='"My Title"' + * + * @public */ export function readEnvConfig(env: { [name: string]: string | undefined; diff --git a/packages/config-loader/src/lib/schema/compile.ts b/packages/config-loader/src/lib/schema/compile.ts index 4236fd2d17..a36d2eb9a2 100644 --- a/packages/config-loader/src/lib/schema/compile.ts +++ b/packages/config-loader/src/lib/schema/compile.ts @@ -108,6 +108,8 @@ export function compileConfigSchemas( /** * Given a list of configuration schemas from packages, merge them * into a single json schema. + * + * @public */ export function mergeConfigSchemas(schemas: JSONSchema[]): JSONSchema { const merged = mergeAllOf( diff --git a/packages/config-loader/src/lib/schema/index.ts b/packages/config-loader/src/lib/schema/index.ts index 851be36f84..1dcb9d7b4b 100644 --- a/packages/config-loader/src/lib/schema/index.ts +++ b/packages/config-loader/src/lib/schema/index.ts @@ -16,4 +16,10 @@ export { mergeConfigSchemas } from './compile'; export { loadConfigSchema } from './load'; -export type { ConfigSchema, ConfigVisibility } from './types'; +export type { LoadConfigSchemaOptions } from './load'; +export type { + ConfigSchema, + ConfigVisibility, + ConfigSchemaProcessingOptions, + TransformFunc, +} from './types'; diff --git a/packages/config-loader/src/lib/schema/load.ts b/packages/config-loader/src/lib/schema/load.ts index b67bd0002f..4620961310 100644 --- a/packages/config-loader/src/lib/schema/load.ts +++ b/packages/config-loader/src/lib/schema/load.ts @@ -24,7 +24,8 @@ import { CONFIG_VISIBILITIES, } from './types'; -type Options = +/** @public */ +export type LoadConfigSchemaOptions = | { dependencies: string[]; } @@ -34,9 +35,11 @@ type Options = /** * Loads config schema for a Backstage instance. + * + * @public */ export async function loadConfigSchema( - options: Options, + options: LoadConfigSchemaOptions, ): Promise { let schemas: ConfigSchemaPackageEntry[]; diff --git a/packages/config-loader/src/lib/schema/types.ts b/packages/config-loader/src/lib/schema/types.ts index 17090ad53c..ef6a197f55 100644 --- a/packages/config-loader/src/lib/schema/types.ts +++ b/packages/config-loader/src/lib/schema/types.ts @@ -37,8 +37,10 @@ export const CONFIG_VISIBILITIES = ['frontend', 'backend', 'secret'] as const; /** * A type representing the possible configuration value visibilities + * + * @public */ -export type ConfigVisibility = typeof CONFIG_VISIBILITIES[number]; +export type ConfigVisibility = 'frontend' | 'backend' | 'secret'; /** * The default configuration visibility if no other values is given. @@ -73,6 +75,8 @@ export type ValidationFunc = (configs: AppConfig[]) => ValidationResult; /** * A function used to transform primitive configuration values. + * + * @public */ export type TransformFunc = ( value: T, @@ -81,8 +85,10 @@ export type TransformFunc = ( /** * Options used to process configuration data with a schema. + * + * @public */ -type ConfigProcessingOptions = { +export type ConfigSchemaProcessingOptions = { /** * The visibilities that should be included in the output data. * If omitted, the data will not be filtered by visibility. @@ -107,11 +113,13 @@ type ConfigProcessingOptions = { /** * A loaded configuration schema that is ready to process configuration data. + * + * @public */ export type ConfigSchema = { process( appConfigs: AppConfig[], - options?: ConfigProcessingOptions, + options?: ConfigSchemaProcessingOptions, ): AppConfig[]; serialize(): JsonObject; diff --git a/packages/config-loader/src/lib/transform/index.ts b/packages/config-loader/src/lib/transform/index.ts index 5053cd7443..eaa85cca3c 100644 --- a/packages/config-loader/src/lib/transform/index.ts +++ b/packages/config-loader/src/lib/transform/index.ts @@ -17,3 +17,4 @@ export { applyConfigTransforms } from './apply'; export { createIncludeTransform } from './include'; export { createSubstitutionTransform } from './substitution'; +export type { EnvFunc } from './types'; diff --git a/packages/config-loader/src/lib/transform/types.ts b/packages/config-loader/src/lib/transform/types.ts index 20e5f88718..afd3550984 100644 --- a/packages/config-loader/src/lib/transform/types.ts +++ b/packages/config-loader/src/lib/transform/types.ts @@ -16,6 +16,7 @@ import { JsonValue } from '@backstage/config'; +/** @public */ export type EnvFunc = (name: string) => Promise; export type ReadFileFunc = (path: string) => Promise; diff --git a/packages/config-loader/src/loader.ts b/packages/config-loader/src/loader.ts index 4dbfc007a7..315b44c4ee 100644 --- a/packages/config-loader/src/loader.ts +++ b/packages/config-loader/src/loader.ts @@ -27,6 +27,7 @@ import { } from './lib'; import { EnvFunc } from './lib/transform/types'; +/** @public */ export type LoadConfigOptions = { // The root directory of the config loading context. Used to find default configs. configRoot: string; @@ -60,6 +61,11 @@ export type LoadConfigOptions = { }; }; +/** + * Load configuration data. + * + * @public + */ export async function loadConfig( options: LoadConfigOptions, ): Promise {