@backstage/plugin-techdocs 0.0.0-nightly-20240805021931 → 0.0.0-nightly-20240807021931
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
CHANGED
|
@@ -1,30 +1,55 @@
|
|
|
1
1
|
# @backstage/plugin-techdocs
|
|
2
2
|
|
|
3
|
-
## 0.0.0-nightly-
|
|
3
|
+
## 0.0.0-nightly-20240807021931
|
|
4
4
|
|
|
5
5
|
### Patch Changes
|
|
6
6
|
|
|
7
7
|
- 69bd940: Use annotation constants from new techdocs-common package.
|
|
8
|
+
- 8543e72: TechDocs redirect feature now includes a notification to the user before they are redirected.
|
|
8
9
|
- 67e76f2: TechDocs now supports the `mkdocs-redirects` plugin. Redirects defined using the `mkdocs-redirect` plugin will be handled automatically in TechDocs. Redirecting to external urls is not supported. In the case that an external redirect url is provided, TechDocs will redirect to the current documentation site home.
|
|
9
10
|
- bdc5471: Fixed issue where header styles were incorrectly generated when themes used CSS variables to define font size.
|
|
10
11
|
- 6349099: Added config input type to the extensions
|
|
11
12
|
- Updated dependencies
|
|
12
|
-
- @backstage/frontend-plugin-api@0.0.0-nightly-
|
|
13
|
-
- @backstage/plugin-catalog-react@0.0.0-nightly-
|
|
14
|
-
- @backstage/plugin-search-react@0.0.0-nightly-
|
|
15
|
-
- @backstage/core-components@0.0.0-nightly-
|
|
16
|
-
- @backstage/
|
|
17
|
-
- @backstage/
|
|
18
|
-
- @backstage/
|
|
19
|
-
- @backstage/plugin-
|
|
20
|
-
- @backstage/
|
|
13
|
+
- @backstage/frontend-plugin-api@0.0.0-nightly-20240807021931
|
|
14
|
+
- @backstage/plugin-catalog-react@0.0.0-nightly-20240807021931
|
|
15
|
+
- @backstage/plugin-search-react@0.0.0-nightly-20240807021931
|
|
16
|
+
- @backstage/core-components@0.0.0-nightly-20240807021931
|
|
17
|
+
- @backstage/core-compat-api@0.0.0-nightly-20240807021931
|
|
18
|
+
- @backstage/plugin-search-common@0.0.0-nightly-20240807021931
|
|
19
|
+
- @backstage/integration@0.0.0-nightly-20240807021931
|
|
20
|
+
- @backstage/plugin-techdocs-common@0.0.0-nightly-20240807021931
|
|
21
|
+
- @backstage/plugin-auth-react@0.0.0-nightly-20240807021931
|
|
21
22
|
- @backstage/catalog-model@1.5.0
|
|
22
23
|
- @backstage/config@1.2.0
|
|
23
24
|
- @backstage/core-plugin-api@1.9.3
|
|
24
25
|
- @backstage/errors@1.2.4
|
|
25
|
-
- @backstage/integration-react@0.0.0-nightly-
|
|
26
|
+
- @backstage/integration-react@0.0.0-nightly-20240807021931
|
|
26
27
|
- @backstage/theme@0.5.6
|
|
27
|
-
- @backstage/plugin-techdocs-react@0.0.0-nightly-
|
|
28
|
+
- @backstage/plugin-techdocs-react@0.0.0-nightly-20240807021931
|
|
29
|
+
|
|
30
|
+
## 1.10.8-next.2
|
|
31
|
+
|
|
32
|
+
### Patch Changes
|
|
33
|
+
|
|
34
|
+
- 67e76f2: TechDocs now supports the `mkdocs-redirects` plugin. Redirects defined using the `mkdocs-redirect` plugin will be handled automatically in TechDocs. Redirecting to external urls is not supported. In the case that an external redirect url is provided, TechDocs will redirect to the current documentation site home.
|
|
35
|
+
- bdc5471: Fixed issue where header styles were incorrectly generated when themes used CSS variables to define font size.
|
|
36
|
+
- Updated dependencies
|
|
37
|
+
- @backstage/frontend-plugin-api@0.7.0-next.2
|
|
38
|
+
- @backstage/core-compat-api@0.2.8-next.2
|
|
39
|
+
- @backstage/plugin-search-common@1.2.14-next.1
|
|
40
|
+
- @backstage/plugin-search-react@1.7.14-next.2
|
|
41
|
+
- @backstage/plugin-catalog-react@1.12.3-next.2
|
|
42
|
+
- @backstage/integration@1.14.0-next.0
|
|
43
|
+
- @backstage/catalog-model@1.5.0
|
|
44
|
+
- @backstage/config@1.2.0
|
|
45
|
+
- @backstage/core-components@0.14.10-next.0
|
|
46
|
+
- @backstage/core-plugin-api@1.9.3
|
|
47
|
+
- @backstage/errors@1.2.4
|
|
48
|
+
- @backstage/integration-react@1.1.30-next.0
|
|
49
|
+
- @backstage/theme@0.5.6
|
|
50
|
+
- @backstage/plugin-auth-react@0.1.5-next.0
|
|
51
|
+
- @backstage/plugin-techdocs-common@0.1.0-next.0
|
|
52
|
+
- @backstage/plugin-techdocs-react@1.2.7-next.0
|
|
28
53
|
|
|
29
54
|
## 1.10.8-next.1
|
|
30
55
|
|
package/alpha/package.json
CHANGED
|
@@ -1,6 +1,64 @@
|
|
|
1
1
|
import { normalizeUrl } from './rewriteDocLinks.esm.js';
|
|
2
|
+
import Snackbar from '@material-ui/core/Snackbar';
|
|
3
|
+
import React, { useState } from 'react';
|
|
4
|
+
import { renderReactElement } from './renderReactElement.esm.js';
|
|
5
|
+
import Button from '@material-ui/core/Button';
|
|
6
|
+
import { makeStyles } from '@material-ui/core/styles';
|
|
2
7
|
|
|
8
|
+
const useStyles = makeStyles((theme) => ({
|
|
9
|
+
button: {
|
|
10
|
+
color: theme.palette.primary.light,
|
|
11
|
+
textDecoration: "underline"
|
|
12
|
+
}
|
|
13
|
+
}));
|
|
14
|
+
const RedirectNotification = ({
|
|
15
|
+
message,
|
|
16
|
+
handleButtonClick,
|
|
17
|
+
autoHideDuration
|
|
18
|
+
}) => {
|
|
19
|
+
const classes = useStyles();
|
|
20
|
+
const [open, setOpen] = useState(true);
|
|
21
|
+
const handleClose = () => {
|
|
22
|
+
setOpen((prev) => !prev);
|
|
23
|
+
};
|
|
24
|
+
return /* @__PURE__ */ React.createElement(
|
|
25
|
+
Snackbar,
|
|
26
|
+
{
|
|
27
|
+
open,
|
|
28
|
+
anchorOrigin: { vertical: "top", horizontal: "right" },
|
|
29
|
+
autoHideDuration,
|
|
30
|
+
color: "primary",
|
|
31
|
+
onClose: handleClose,
|
|
32
|
+
message,
|
|
33
|
+
action: /* @__PURE__ */ React.createElement(
|
|
34
|
+
Button,
|
|
35
|
+
{
|
|
36
|
+
classes: { root: classes.button },
|
|
37
|
+
size: "small",
|
|
38
|
+
onClick: handleButtonClick
|
|
39
|
+
},
|
|
40
|
+
"Redirect now"
|
|
41
|
+
)
|
|
42
|
+
}
|
|
43
|
+
);
|
|
44
|
+
};
|
|
3
45
|
const handleMetaRedirects = (navigate, entityName) => {
|
|
46
|
+
const redirectAfterMs = 4e3;
|
|
47
|
+
const determineRedirectURL = (metaUrl) => {
|
|
48
|
+
const normalizedCurrentUrl = normalizeUrl(window.location.href);
|
|
49
|
+
const absoluteRedirectObj = new URL(metaUrl, normalizedCurrentUrl);
|
|
50
|
+
const isExternalRedirect = absoluteRedirectObj.hostname !== window.location.hostname;
|
|
51
|
+
if (isExternalRedirect) {
|
|
52
|
+
const currentTechDocPath = window.location.pathname;
|
|
53
|
+
const indexOfSiteHome = currentTechDocPath.indexOf(entityName);
|
|
54
|
+
const siteHomePath = currentTechDocPath.slice(
|
|
55
|
+
0,
|
|
56
|
+
indexOfSiteHome + entityName.length
|
|
57
|
+
);
|
|
58
|
+
return siteHomePath;
|
|
59
|
+
}
|
|
60
|
+
return absoluteRedirectObj.href;
|
|
61
|
+
};
|
|
4
62
|
return (dom) => {
|
|
5
63
|
for (const elem of Array.from(dom.querySelectorAll("meta"))) {
|
|
6
64
|
if (elem.getAttribute("http-equiv") === "refresh") {
|
|
@@ -9,20 +67,23 @@ const handleMetaRedirects = (navigate, entityName) => {
|
|
|
9
67
|
continue;
|
|
10
68
|
}
|
|
11
69
|
const metaUrl = metaContentParameters[1];
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
70
|
+
const redirectURL = determineRedirectURL(metaUrl);
|
|
71
|
+
const container = document.createElement("div");
|
|
72
|
+
renderReactElement(
|
|
73
|
+
/* @__PURE__ */ React.createElement(
|
|
74
|
+
RedirectNotification,
|
|
75
|
+
{
|
|
76
|
+
message: "This TechDocs page is no longer maintained. Will automatically redirect to the designated replacement.",
|
|
77
|
+
handleButtonClick: () => navigate(redirectURL),
|
|
78
|
+
autoHideDuration: redirectAfterMs
|
|
79
|
+
}
|
|
80
|
+
),
|
|
81
|
+
container
|
|
82
|
+
);
|
|
83
|
+
document.body.appendChild(container);
|
|
84
|
+
setTimeout(() => {
|
|
85
|
+
navigate(redirectURL);
|
|
86
|
+
}, redirectAfterMs);
|
|
26
87
|
return dom;
|
|
27
88
|
}
|
|
28
89
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleMetaRedirects.esm.js","sources":["../../../src/reader/transformers/handleMetaRedirects.
|
|
1
|
+
{"version":3,"file":"handleMetaRedirects.esm.js","sources":["../../../src/reader/transformers/handleMetaRedirects.tsx"],"sourcesContent":["/*\n * Copyright 2024 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 { Transformer } from './transformer';\nimport { normalizeUrl } from './rewriteDocLinks';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport React, { useState } from 'react';\nimport { renderReactElement } from './renderReactElement';\nimport Button from '@material-ui/core/Button';\nimport { makeStyles } from '@material-ui/core/styles';\n\ntype RedirectNotificationProps = {\n handleButtonClick: () => void;\n message: string;\n autoHideDuration: number;\n};\n\nconst useStyles = makeStyles(theme => ({\n button: {\n color: theme.palette.primary.light,\n textDecoration: 'underline',\n },\n}));\nconst RedirectNotification = ({\n message,\n handleButtonClick,\n autoHideDuration,\n}: RedirectNotificationProps) => {\n const classes = useStyles();\n const [open, setOpen] = useState(true);\n const handleClose = () => {\n setOpen(prev => !prev);\n };\n\n return (\n <Snackbar\n open={open}\n anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\n autoHideDuration={autoHideDuration}\n color=\"primary\"\n onClose={handleClose}\n message={message}\n action={\n <Button\n classes={{ root: classes.button }}\n size=\"small\"\n onClick={handleButtonClick}\n >\n Redirect now\n </Button>\n }\n />\n );\n};\n\nexport const handleMetaRedirects = (\n navigate: (to: string) => void,\n entityName: string,\n): Transformer => {\n const redirectAfterMs = 4000;\n const determineRedirectURL = (metaUrl: string) => {\n const normalizedCurrentUrl = normalizeUrl(window.location.href);\n // If metaUrl is relative, it will be resolved with base href. If it is absolute, it will replace the base href when creating URL object.\n const absoluteRedirectObj = new URL(metaUrl, normalizedCurrentUrl);\n const isExternalRedirect =\n absoluteRedirectObj.hostname !== window.location.hostname;\n\n if (isExternalRedirect) {\n const currentTechDocPath = window.location.pathname;\n const indexOfSiteHome = currentTechDocPath.indexOf(entityName);\n const siteHomePath = currentTechDocPath.slice(\n 0,\n indexOfSiteHome + entityName.length,\n );\n return siteHomePath;\n }\n // The navigate function from dom.tsx is a wrapper around react-router navigate function that helps absolute url redirects.\n return absoluteRedirectObj.href;\n };\n\n return dom => {\n for (const elem of Array.from(dom.querySelectorAll('meta'))) {\n if (elem.getAttribute('http-equiv') === 'refresh') {\n const metaContentParameters = elem\n .getAttribute('content')\n ?.split('url=');\n if (!metaContentParameters || metaContentParameters.length < 2) {\n continue;\n }\n const metaUrl = metaContentParameters[1];\n const redirectURL = determineRedirectURL(metaUrl);\n const container = document.createElement('div');\n\n renderReactElement(\n <RedirectNotification\n message=\"This TechDocs page is no longer maintained. Will automatically redirect to the designated replacement.\"\n handleButtonClick={() => navigate(redirectURL)}\n autoHideDuration={redirectAfterMs}\n />,\n container,\n );\n document.body.appendChild(container);\n\n setTimeout(() => {\n navigate(redirectURL);\n }, redirectAfterMs);\n\n return dom;\n }\n }\n return dom;\n };\n};\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage/plugin-techdocs",
|
|
3
|
-
"version": "0.0.0-nightly-
|
|
3
|
+
"version": "0.0.0-nightly-20240807021931",
|
|
4
4
|
"description": "The Backstage plugin that renders technical documentation for your components",
|
|
5
5
|
"backstage": {
|
|
6
6
|
"role": "frontend-plugin",
|
|
@@ -60,19 +60,19 @@
|
|
|
60
60
|
"dependencies": {
|
|
61
61
|
"@backstage/catalog-model": "^1.5.0",
|
|
62
62
|
"@backstage/config": "^1.2.0",
|
|
63
|
-
"@backstage/core-compat-api": "^0.0.0-nightly-
|
|
64
|
-
"@backstage/core-components": "^0.0.0-nightly-
|
|
63
|
+
"@backstage/core-compat-api": "^0.0.0-nightly-20240807021931",
|
|
64
|
+
"@backstage/core-components": "^0.0.0-nightly-20240807021931",
|
|
65
65
|
"@backstage/core-plugin-api": "^1.9.3",
|
|
66
66
|
"@backstage/errors": "^1.2.4",
|
|
67
|
-
"@backstage/frontend-plugin-api": "^0.0.0-nightly-
|
|
68
|
-
"@backstage/integration": "^0.0.0-nightly-
|
|
69
|
-
"@backstage/integration-react": "^0.0.0-nightly-
|
|
70
|
-
"@backstage/plugin-auth-react": "^0.0.0-nightly-
|
|
71
|
-
"@backstage/plugin-catalog-react": "^0.0.0-nightly-
|
|
72
|
-
"@backstage/plugin-search-common": "^0.0.0-nightly-
|
|
73
|
-
"@backstage/plugin-search-react": "^0.0.0-nightly-
|
|
74
|
-
"@backstage/plugin-techdocs-common": "^0.0.0-nightly-
|
|
75
|
-
"@backstage/plugin-techdocs-react": "^0.0.0-nightly-
|
|
67
|
+
"@backstage/frontend-plugin-api": "^0.0.0-nightly-20240807021931",
|
|
68
|
+
"@backstage/integration": "^0.0.0-nightly-20240807021931",
|
|
69
|
+
"@backstage/integration-react": "^0.0.0-nightly-20240807021931",
|
|
70
|
+
"@backstage/plugin-auth-react": "^0.0.0-nightly-20240807021931",
|
|
71
|
+
"@backstage/plugin-catalog-react": "^0.0.0-nightly-20240807021931",
|
|
72
|
+
"@backstage/plugin-search-common": "^0.0.0-nightly-20240807021931",
|
|
73
|
+
"@backstage/plugin-search-react": "^0.0.0-nightly-20240807021931",
|
|
74
|
+
"@backstage/plugin-techdocs-common": "^0.0.0-nightly-20240807021931",
|
|
75
|
+
"@backstage/plugin-techdocs-react": "^0.0.0-nightly-20240807021931",
|
|
76
76
|
"@backstage/theme": "^0.5.6",
|
|
77
77
|
"@material-ui/core": "^4.12.2",
|
|
78
78
|
"@material-ui/icons": "^4.9.1",
|
|
@@ -88,11 +88,11 @@
|
|
|
88
88
|
"react-use": "^17.2.4"
|
|
89
89
|
},
|
|
90
90
|
"devDependencies": {
|
|
91
|
-
"@backstage/cli": "^0.0.0-nightly-
|
|
92
|
-
"@backstage/core-app-api": "^0.0.0-nightly-
|
|
93
|
-
"@backstage/dev-utils": "^0.0.0-nightly-
|
|
94
|
-
"@backstage/plugin-techdocs-module-addons-contrib": "^0.0.0-nightly-
|
|
95
|
-
"@backstage/test-utils": "^0.0.0-nightly-
|
|
91
|
+
"@backstage/cli": "^0.0.0-nightly-20240807021931",
|
|
92
|
+
"@backstage/core-app-api": "^0.0.0-nightly-20240807021931",
|
|
93
|
+
"@backstage/dev-utils": "^0.0.0-nightly-20240807021931",
|
|
94
|
+
"@backstage/plugin-techdocs-module-addons-contrib": "^0.0.0-nightly-20240807021931",
|
|
95
|
+
"@backstage/test-utils": "^0.0.0-nightly-20240807021931",
|
|
96
96
|
"@testing-library/dom": "^10.0.0",
|
|
97
97
|
"@testing-library/jest-dom": "^6.0.0",
|
|
98
98
|
"@testing-library/react": "^15.0.0",
|