Source proxy and Edge docs from GitHub (#3122)
## What
The main purpose of this PR is to
1. Delete the proxy docs in this repo and replace them with the proxy's
GitHub readme.
2. Add the docs for Unleash Edge.
### Detailed change description
This PR contains a lot of small changes in a large number of files. To
make it easier to get an overview, here's a detailed description of what
happens where:
#### In the `website/docs`directory
Except for the deletion of the proxy doc, all changes in this directory
are rewriting internal links, so that they point to the newly generated
document instead.
#### `package.json` and `yarn.lock`
When including the documentation for Edge, we also want to render the
mermaid diagrams it uses. Docusaurus supports this via a plugin. All
changes in these files are related to installing that plugin.
#### `docusaurus.config.js`
There's two types of changes in this file:
1. Mermaid-related changes: we ask docusaurus to render mermaid in
markdown files and add the plugin
2. Document generation. There's some rewrites to the sdk doc generation
plus an entirely new section that generates docs for Edge and the proxy
#### `sidebars.js`
Two things:
1. Add the edge docs
2. Move both the Edge and the proxy docs up a level, so that they're
directly under "reference docs" instead of nested inside "unleash
concepts".
#### In the `website/remote-content` directory
These are the remote content files. Previously, all of this lived only
in a `readme-fns.js` file, but with the introduction of Edge and proxy
docs, this has been moved into its own directory and refactored into
three files (`shared`, `sdks`, `edge-proxy`).
#### `custom.css`
Style updates to center mermaid diagrams and provide more space around
them.
#### In `static/img`
The image files that were included in the proxy doc and that have been
deleted.
## Why
For two reasons:
1. Reduce duplication for the proxy. Have one source of truth.
2. Add docs for edge.
## Discussion points and review wishes
This is a big PR, and I don't expect anyone to do a line-by-line review
of it, nor do I think that is particularly useful. Instead, I'd like to
ask reviewers to:
1. Visit the [documentation
preview](https://unleash-docs-git-docs-source-proxy-gh-unleash-team.vercel.app/reference/unleash-proxy)
and have a look at both the proxy docs and the Edge docs. Potentially
have a look at the SDK docs too to verify that everything still works.
2. Consider whether they think moving the proxy and edge docs up a level
(in the sidebar) makes sense.
3. Let me know what slug they'd prefer for the Edge docs. I've gone with
`unleash-edge` for now (so that it's
`docs.getunleash.io/reference/unleash-edge`), but we could potentially
also just use `edge`. WDYT?
4. Read through the detailed changes section.
5. Let me know if they have any other concerns or questions.
## Screenies
The new proxy doc:
![image](https://user-images.githubusercontent.com/17786332/219043145-1c75c83e-4191-45a3-acb5-775d05d13862.png)
The new edge doc:
![image](https://user-images.githubusercontent.com/17786332/219043220-1f5daf13-972e-4d56-8aaf-70ff1812863e.png)
2023-02-16 13:36:28 +01:00
const {
enrichAdditional ,
modifyContent ,
getRepoData ,
getUrls ,
} = require ( './shared' ) ;
// Type definitions
//
// type Readme = {
// // This is the name that is placed before "SDK" in the sidebar.
// sidebarName: string;
//
// // The repo's primary branch. Falls back to "main" if nothing is defined
// branch?: string;
//
// // If present, this will be used to construct the slug. If no "slugName" is
// // defined, the `sidebarName` will be used to create the slug.
// slugName?: string;
// };
//
// type ReadmeData = Readme & { repoUrl: string };
const CLIENT _SIDE _SDK = 'client-side' ;
const SERVER _SIDE _SDK = 'server-side' ;
const serverSideSdks = {
'unleash-client-go' : {
sidebarName : 'Go' ,
branch : 'v3' ,
} ,
'unleash-client-java' : {
sidebarName : 'Java' ,
} ,
'unleash-client-node' : {
sidebarName : 'Node' ,
} ,
'unleash-client-php' : {
sidebarName : 'PHP' ,
} ,
'unleash-client-python' : {
sidebarName : 'Python' ,
} ,
'unleash-client-ruby' : {
sidebarName : 'Ruby' ,
} ,
'unleash-client-rust' : {
sidebarName : 'Rust' ,
} ,
'unleash-client-dotnet' : {
sidebarName : '.NET' ,
slugName : 'dotnet' ,
} ,
} ;
const clientSideSdks = {
'unleash-android-proxy-sdk' : {
2024-07-25 17:23:34 +02:00
sidebarName : 'Android (legacy)' ,
slugName : 'android-proxy-legacy' ,
} ,
'unleash-android' : {
Source proxy and Edge docs from GitHub (#3122)
## What
The main purpose of this PR is to
1. Delete the proxy docs in this repo and replace them with the proxy's
GitHub readme.
2. Add the docs for Unleash Edge.
### Detailed change description
This PR contains a lot of small changes in a large number of files. To
make it easier to get an overview, here's a detailed description of what
happens where:
#### In the `website/docs`directory
Except for the deletion of the proxy doc, all changes in this directory
are rewriting internal links, so that they point to the newly generated
document instead.
#### `package.json` and `yarn.lock`
When including the documentation for Edge, we also want to render the
mermaid diagrams it uses. Docusaurus supports this via a plugin. All
changes in these files are related to installing that plugin.
#### `docusaurus.config.js`
There's two types of changes in this file:
1. Mermaid-related changes: we ask docusaurus to render mermaid in
markdown files and add the plugin
2. Document generation. There's some rewrites to the sdk doc generation
plus an entirely new section that generates docs for Edge and the proxy
#### `sidebars.js`
Two things:
1. Add the edge docs
2. Move both the Edge and the proxy docs up a level, so that they're
directly under "reference docs" instead of nested inside "unleash
concepts".
#### In the `website/remote-content` directory
These are the remote content files. Previously, all of this lived only
in a `readme-fns.js` file, but with the introduction of Edge and proxy
docs, this has been moved into its own directory and refactored into
three files (`shared`, `sdks`, `edge-proxy`).
#### `custom.css`
Style updates to center mermaid diagrams and provide more space around
them.
#### In `static/img`
The image files that were included in the proxy doc and that have been
deleted.
## Why
For two reasons:
1. Reduce duplication for the proxy. Have one source of truth.
2. Add docs for edge.
## Discussion points and review wishes
This is a big PR, and I don't expect anyone to do a line-by-line review
of it, nor do I think that is particularly useful. Instead, I'd like to
ask reviewers to:
1. Visit the [documentation
preview](https://unleash-docs-git-docs-source-proxy-gh-unleash-team.vercel.app/reference/unleash-proxy)
and have a look at both the proxy docs and the Edge docs. Potentially
have a look at the SDK docs too to verify that everything still works.
2. Consider whether they think moving the proxy and edge docs up a level
(in the sidebar) makes sense.
3. Let me know what slug they'd prefer for the Edge docs. I've gone with
`unleash-edge` for now (so that it's
`docs.getunleash.io/reference/unleash-edge`), but we could potentially
also just use `edge`. WDYT?
4. Read through the detailed changes section.
5. Let me know if they have any other concerns or questions.
## Screenies
The new proxy doc:
![image](https://user-images.githubusercontent.com/17786332/219043145-1c75c83e-4191-45a3-acb5-775d05d13862.png)
The new edge doc:
![image](https://user-images.githubusercontent.com/17786332/219043220-1f5daf13-972e-4d56-8aaf-70ff1812863e.png)
2023-02-16 13:36:28 +01:00
sidebarName : 'Android' ,
slugName : 'android-proxy' ,
} ,
unleash _proxy _client _flutter : {
sidebarName : 'Flutter' ,
} ,
'unleash-proxy-client-swift' : {
sidebarName : 'iOS' ,
slugName : 'ios-proxy' ,
} ,
'unleash-proxy-client-js' : {
sidebarName : 'JavaScript browser' ,
slugName : 'javascript-browser' ,
} ,
'proxy-client-react' : {
sidebarName : 'React' ,
} ,
'proxy-client-svelte' : {
sidebarName : 'Svelte' ,
} ,
'proxy-client-vue' : {
sidebarName : 'Vue' ,
} ,
'unleash-client-nextjs' : {
sidebarName : 'Next.js' ,
slugName : 'next-js' ,
} ,
} ;
const SDKS = ( ( ) => {
const serverSide = Object . entries ( serverSideSdks ) . map (
enrichAdditional ( { type : SERVER _SIDE _SDK } ) ,
) ;
const clientSide = Object . entries ( clientSideSdks ) . map (
enrichAdditional ( { type : CLIENT _SIDE _SDK } ) ,
) ;
return Object . fromEntries ( serverSide . concat ( clientSide ) ) ;
} ) ( ) ;
const getAdmonitions = ( sdk ) => {
const admonitions = {
[ CLIENT _SIDE _SDK ] : ` To connect to Unleash from a client-side context, you'll need to use the [Unleash front-end API](/reference/front-end-api) ([how do I create an API token?](/how-to/how-to-create-api-tokens.mdx)) or the [Unleash proxy](/reference/unleash-proxy) ([how do I create client keys?](/reference/api-tokens-and-client-keys#proxy-client-keys)). ` ,
[ SERVER _SIDE _SDK ] : ` To connect to Unleash, you'll need your Unleash API url (e.g. \` https://<your-unleash>/api \` ) and a [server-side API token](/reference/api-tokens-and-client-keys.mdx#client-tokens) ([how do I create an API token?](/how-to/how-to-create-api-tokens.mdx)). ` ,
} ;
const wrap = ( text ) => ` :::tip \n ${ text } \n ::: ` ;
return [ wrap ( admonitions [ sdk . type ] ) ] ;
} ;
const modifyContent2 = modifyContent ( {
getRepoDataFn : getRepoData ( SDKS ) ,
urlPath : '/reference/sdks' ,
filePath : ( sdk ) => ` sdks/ ${ sdk . type } ` ,
getAdditionalAdmonitions : getAdmonitions ,
} ) ;
module . exports . sdks = {
urls : getUrls ( SDKS ) ,
modifyContent : modifyContent2 ,
} ;