From aaf51bd492676fd1dfaa37d3d8bd240366d8c420 Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Mon, 11 Apr 2022 10:43:48 +0200 Subject: [PATCH] Clean up changesets and addon package API surface. Signed-off-by: Eric Peterson --- .changeset/techdocs-hold-me-closer.md | 6 ++++-- .changeset/techdocs-swift-apricots-learn.md | 5 ----- .changeset/techdocs-until-you-puke.md | 8 +++----- packages/techdocs-addons/api-report.md | 16 ++++++---------- packages/techdocs-addons/package.json | 3 +-- packages/techdocs-addons/src/addons.tsx | 8 ++++---- packages/techdocs-addons/src/index.ts | 2 +- packages/techdocs-addons/src/types.ts | 11 ++--------- 8 files changed, 21 insertions(+), 38 deletions(-) delete mode 100644 .changeset/techdocs-swift-apricots-learn.md diff --git a/.changeset/techdocs-hold-me-closer.md b/.changeset/techdocs-hold-me-closer.md index 2295603388..04bbf5088f 100644 --- a/.changeset/techdocs-hold-me-closer.md +++ b/.changeset/techdocs-hold-me-closer.md @@ -1,5 +1,7 @@ --- -'@backstage/plugin-techdocs-addons': minor +'@backstage/techdocs-addons': minor --- -Introducing an addon framework for TechDocs. +Introducing `@backstage/techdocs-addons`, a web library you can use to create TechDocs addons. + +Note: this package is not necessarily stable yet. After iteration on this package, its stability will be signaled by a major-version bump. diff --git a/.changeset/techdocs-swift-apricots-learn.md b/.changeset/techdocs-swift-apricots-learn.md deleted file mode 100644 index 70d21b3535..0000000000 --- a/.changeset/techdocs-swift-apricots-learn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs-addons': patch ---- - -Separation between contexts and hooks diff --git a/.changeset/techdocs-until-you-puke.md b/.changeset/techdocs-until-you-puke.md index af70fe315b..74578b1067 100644 --- a/.changeset/techdocs-until-you-puke.md +++ b/.changeset/techdocs-until-you-puke.md @@ -2,15 +2,14 @@ '@backstage/plugin-techdocs': minor --- -TechDocs now supports a new method of customization: addons! +TechDocs supports a new, experimental method of customization: addons! To customize the standalone TechDocs reader page experience, update your `/packages/app/src/App.tsx` in the following way: ```diff import { TechDocsIndexPage, TechDocsReaderPage } from '@backstage/plugin-techdocs'; -+ import { TechDocsAddons } from '@backstage/plugin-techdocs-addons'; ++ import { TechDocsAddons } from '@backstage/techdocs-addons'; + import { SomeAddon } from '@backstage/plugin-some-plugin'; -- import { techDocsPage } from './components/techdocs/TechDocsPage'; // ... @@ -19,7 +18,6 @@ import { TechDocsIndexPage, TechDocsReaderPage } from '@backstage/plugin-techdoc path="/docs/:namespace/:kind/:name/*" element={} > -- {techDocsPage} + + + @@ -32,7 +30,7 @@ To customize the TechDocs reader experience on the Catalog entity page, update y ```diff import { EntityTechdocsContent } from '@backstage/plugin-techdocs'; -+ import { TechDocsAddons } from '@backstage/plugin-techdocs-addons'; ++ import { TechDocsAddons } from '@backstage/techdocs-addons'; + import { SomeAddon } from '@backstage/plugin-some-plugin'; // ... diff --git a/packages/techdocs-addons/api-report.md b/packages/techdocs-addons/api-report.md index 4d5eef5edb..573361e5a7 100644 --- a/packages/techdocs-addons/api-report.md +++ b/packages/techdocs-addons/api-report.md @@ -3,23 +3,19 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts -import { AsyncState } from 'react-use/lib/useAsyncFn'; import { ComponentType } from 'react'; import { Extension } from '@backstage/core-plugin-api'; import { default as React_2 } from 'react'; -// @public +// @alpha export function createTechDocsAddon( options: TechDocsAddonOptions, ): Extension>; -// @public +// @alpha export const TECHDOCS_ADDONS_WRAPPER_KEY = 'techdocs.addons.wrapper.v1'; -// @public -export type TechDocsAddonAsyncMetadata = AsyncState; - -// @public +// @alpha export enum TechDocsAddonLocations { CONTENT = 'content', HEADER = 'header', @@ -28,17 +24,17 @@ export enum TechDocsAddonLocations { SUBHEADER = 'subheader', } -// @public +// @alpha export type TechDocsAddonOptions = { name: string; location: TechDocsAddonLocations; component: ComponentType; }; -// @public +// @alpha export const TechDocsAddons: React_2.ComponentType; -// @public +// @alpha export const useTechDocsAddons: () => { renderComponentByName: (name: string) => React_2.ReactElement< { diff --git a/packages/techdocs-addons/package.json b/packages/techdocs-addons/package.json index c8ed12ec8b..5635c9c6fe 100644 --- a/packages/techdocs-addons/package.json +++ b/packages/techdocs-addons/package.json @@ -42,8 +42,7 @@ "@material-ui/styles": "^4.11.0", "jss": "~10.8.2", "react-helmet": "6.1.0", - "react-router-dom": "6.0.0-beta.0", - "react-use": "^17.2.4" + "react-router-dom": "6.0.0-beta.0" }, "peerDependencies": { "@types/react": "^16.13.1 || ^17.0.0", diff --git a/packages/techdocs-addons/src/addons.tsx b/packages/techdocs-addons/src/addons.tsx index 60fe13bfeb..8304319a88 100644 --- a/packages/techdocs-addons/src/addons.tsx +++ b/packages/techdocs-addons/src/addons.tsx @@ -31,13 +31,13 @@ export const TECHDOCS_ADDONS_KEY = 'techdocs.addons.addon.v1'; /** * Marks the registry component. - * @public + * @alpha */ export const TECHDOCS_ADDONS_WRAPPER_KEY = 'techdocs.addons.wrapper.v1'; /** * TechDocs Addon registry. - * @public + * @alpha */ export const TechDocsAddons: React.ComponentType = () => null; @@ -49,7 +49,7 @@ const getDataKeyByName = (name: string) => { /** * Create a TechDocs addon. - * @public + * @alpha */ export function createTechDocsAddon( options: TechDocsAddonOptions, @@ -93,7 +93,7 @@ const getAllTechDocsAddonsData = (collection: ElementCollection) => { /** * hook to use addons in components - * @public + * @alpha */ export const useTechDocsAddons = () => { const node = useOutlet(); diff --git a/packages/techdocs-addons/src/index.ts b/packages/techdocs-addons/src/index.ts index 2ef7265db3..240f7ffb6a 100644 --- a/packages/techdocs-addons/src/index.ts +++ b/packages/techdocs-addons/src/index.ts @@ -27,4 +27,4 @@ export { TECHDOCS_ADDONS_WRAPPER_KEY, } from './addons'; export { TechDocsAddonLocations } from './types'; -export type { TechDocsAddonAsyncMetadata, TechDocsAddonOptions } from './types'; +export type { TechDocsAddonOptions } from './types'; diff --git a/packages/techdocs-addons/src/types.ts b/packages/techdocs-addons/src/types.ts index aa0d128427..9775e9a10e 100644 --- a/packages/techdocs-addons/src/types.ts +++ b/packages/techdocs-addons/src/types.ts @@ -15,11 +15,10 @@ */ import { ComponentType } from 'react'; -import { AsyncState } from 'react-use/lib/useAsyncFn'; /** * Locations for which TechDocs addons may be declared and rendered. - * @public + * @alpha */ export enum TechDocsAddonLocations { /** @@ -79,16 +78,10 @@ export enum TechDocsAddonLocations { /** * Options for creating a TechDocs addon. - * @public + * @alpha */ export type TechDocsAddonOptions = { name: string; location: TechDocsAddonLocations; component: ComponentType; }; - -/** - * Common response envelope for addon-related hooks. - * @public - */ -export type TechDocsAddonAsyncMetadata = AsyncState;