diff --git a/redirects.json b/redirects.json index 3ad5b120e98..6eac360eda0 100644 --- a/redirects.json +++ b/redirects.json @@ -10226,6 +10226,156 @@ "source": "/vue/start/connect-existing-aws-resources", "target": "/vue/start/connect-to-aws-resources", "status": "301" + }, + { + "source": "/angular/build-a-backend/auth/reference", + "target": "/angular/reference/api/aws-amplify/auth", + "status": "301" + }, + { + "source": "/angular/build-a-backend/storage/reference", + "target": "/angular/reference/api/aws-amplify/storage", + "status": "301" + }, + { + "source": "/angular/build-a-backend/add-aws-services/analytics/reference", + "target": "/angular/reference/api/aws-amplify/analytics", + "status": "301" + }, + { + "source": "/angular/build-a-backend/add-aws-services/in-app-messaging/reference", + "target": "/angular/reference/api/aws-amplify/in-app-messaging", + "status": "301" + }, + { + "source": "/angular/build-a-backend/add-aws-services/rest-api/reference", + "target": "/angular/reference/api/aws-amplify/api", + "status": "301" + }, + { + "source": "/javascript/build-a-backend/auth/reference", + "target": "/javascript/reference/api/aws-amplify/auth", + "status": "301" + }, + { + "source": "/javascript/build-a-backend/storage/reference", + "target": "/javascript/reference/api/aws-amplify/storage", + "status": "301" + }, + { + "source": "/javascript/build-a-backend/add-aws-services/analytics/reference", + "target": "/javascript/reference/api/aws-amplify/analytics", + "status": "301" + }, + { + "source": "/javascript/build-a-backend/add-aws-services/in-app-messaging/reference", + "target": "/javascript/reference/api/aws-amplify/in-app-messaging", + "status": "301" + }, + { + "source": "/javascript/build-a-backend/add-aws-services/rest-api/reference", + "target": "/javascript/reference/api/aws-amplify/api", + "status": "301" + }, + { + "source": "/nextjs/build-a-backend/auth/reference", + "target": "/nextjs/reference/api/aws-amplify/auth", + "status": "301" + }, + { + "source": "/nextjs/build-a-backend/storage/reference", + "target": "/nextjs/reference/api/aws-amplify/storage", + "status": "301" + }, + { + "source": "/nextjs/build-a-backend/add-aws-services/analytics/reference", + "target": "/nextjs/reference/api/aws-amplify/analytics", + "status": "301" + }, + { + "source": "/nextjs/build-a-backend/add-aws-services/in-app-messaging/reference", + "target": "/nextjs/reference/api/aws-amplify/in-app-messaging", + "status": "301" + }, + { + "source": "/nextjs/build-a-backend/add-aws-services/rest-api/reference", + "target": "/nextjs/reference/api/aws-amplify/api", + "status": "301" + }, + { + "source": "/react/build-a-backend/auth/reference", + "target": "/react/reference/api/aws-amplify/auth", + "status": "301" + }, + { + "source": "/react/build-a-backend/storage/reference", + "target": "/react/reference/api/aws-amplify/storage", + "status": "301" + }, + { + "source": "/react/build-a-backend/add-aws-services/analytics/reference", + "target": "/react/reference/api/aws-amplify/analytics", + "status": "301" + }, + { + "source": "/react/build-a-backend/add-aws-services/in-app-messaging/reference", + "target": "/react/reference/api/aws-amplify/in-app-messaging", + "status": "301" + }, + { + "source": "/react/build-a-backend/add-aws-services/rest-api/reference", + "target": "/react/reference/api/aws-amplify/api", + "status": "301" + }, + { + "source": "/react-native/build-a-backend/auth/reference", + "target": "/react-native/reference/api/aws-amplify/auth", + "status": "301" + }, + { + "source": "/react-native/build-a-backend/storage/reference", + "target": "/react-native/reference/api/aws-amplify/storage", + "status": "301" + }, + { + "source": "/react-native/build-a-backend/add-aws-services/analytics/reference", + "target": "/react-native/reference/api/aws-amplify/analytics", + "status": "301" + }, + { + "source": "/react-native/build-a-backend/add-aws-services/in-app-messaging/reference", + "target": "/react-native/reference/api/aws-amplify/in-app-messaging", + "status": "301" + }, + { + "source": "/react-native/build-a-backend/add-aws-services/rest-api/reference", + "target": "/react-native/reference/api/aws-amplify/api", + "status": "301" + }, + { + "source": "/vue/build-a-backend/auth/reference", + "target": "/vue/reference/api/aws-amplify/auth", + "status": "301" + }, + { + "source": "/vue/build-a-backend/storage/reference", + "target": "/vue/reference/api/aws-amplify/storage", + "status": "301" + }, + { + "source": "/vue/build-a-backend/add-aws-services/analytics/reference", + "target": "/vue/reference/api/aws-amplify/analytics", + "status": "301" + }, + { + "source": "/vue/build-a-backend/add-aws-services/in-app-messaging/reference", + "target": "/vue/reference/api/aws-amplify/in-app-messaging", + "status": "301" + }, + { + "source": "/vue/build-a-backend/add-aws-services/rest-api/reference", + "target": "/vue/reference/api/aws-amplify/api", + "status": "301" } ] \ No newline at end of file diff --git a/src/components/ApiDocs/ReferencePage.tsx b/src/components/ApiDocs/ReferencePage.tsx index e11d686a692..d4576260aca 100644 --- a/src/components/ApiDocs/ReferencePage.tsx +++ b/src/components/ApiDocs/ReferencePage.tsx @@ -2,14 +2,15 @@ import { Fragment } from 'react'; import { FunctionReference } from './FunctionReference'; import { Divider, View, Flex } from '@aws-amplify/ui-react'; -import { API_CATEGORIES, API_SUB_CATEGORIES } from '@/data/api-categories.mjs'; +import { REFERENCE_IMPORTS_LOOKUP } from '@/data/api-categories.mjs'; import references from '@/directory/apiReferences/amplify-js.json'; import { MDXHeading } from '../MDXComponents'; -export const ReferencePage = ({ category }) => { - category = API_CATEGORIES[category] || API_SUB_CATEGORIES[category]; +export const ReferencePage = ({ importName }) => { + const importConfig = REFERENCE_IMPORTS_LOOKUP[importName]; + const cat = references['categories'].find( - (catObject) => catObject.name === category + (catObject) => catObject.name === importConfig.category ); return ( diff --git a/src/data/api-categories.mjs b/src/data/api-categories.mjs index c87d95eca85..c0679f72698 100644 --- a/src/data/api-categories.mjs +++ b/src/data/api-categories.mjs @@ -1,13 +1,29 @@ // mapping of api categories coming in from libraries to the associated categories in the docs -export const API_CATEGORIES = { - auth: 'auth', - storage: 'storage' -}; -export const API_SUB_CATEGORIES = { - analytics: 'analytics', - 'rest-api': 'api', - 'in-app-messaging': 'in-app-messaging' +export const REFERENCE_IMPORTS = { + 'amplify-js': [ + ['aws-amplify', 'auth'], + ['aws-amplify', 'storage'], + ['aws-amplify', 'analytics'], + ['aws-amplify', 'api'], + ['aws-amplify', 'in-app-messaging'] + ] }; +// Mapping to make reference page building direct +// { 'aws-amplify/auth': {repo: 'amplify-js', category: 'auth'}} +export const REFERENCE_IMPORTS_LOOKUP = Object.keys(REFERENCE_IMPORTS) + .flatMap((repo) => { + return REFERENCE_IMPORTS[repo].map((importName) => { + const importPath = importName.join('/'); + const retObj = {}; + retObj[importPath] = { + repo, + category: importName[importName.length - 1] + }; + return retObj; + }); + }) + .reduce((retObj, curObj) => ({ ...retObj, ...curObj }), {}); + export const ROOT_PACKAGE = 'aws-amplify'; diff --git a/src/directory/directory.mjs b/src/directory/directory.mjs index ef999a6102e..f3bc5c90dfa 100644 --- a/src/directory/directory.mjs +++ b/src/directory/directory.mjs @@ -1009,6 +1009,10 @@ export const directory = { { path: 'src/pages/[platform]/reference/index.mdx', children: [ + { + path: 'src/pages/[platform]/reference/api/index.mdx', + children: [] + }, { path: 'src/pages/[platform]/reference/project-structure/index.mdx' }, diff --git a/src/directory/generateDirectory.mjs b/src/directory/generateDirectory.mjs index a7ea8e10350..537370edff4 100644 --- a/src/directory/generateDirectory.mjs +++ b/src/directory/generateDirectory.mjs @@ -6,7 +6,7 @@ import JSON5 from 'json5'; import { directory } from './directory.mjs'; import { writeFile } from 'fs/promises'; import { getLastModifiedDate } from 'git-jiggy'; -import { API_CATEGORIES, API_SUB_CATEGORIES } from '../data/api-categories.mjs'; +import { REFERENCE_IMPORTS_LOOKUP } from '../data/api-categories.mjs'; // Set up the root path so that we can get the correct path from the current working directory const rootPath = path.resolve(cwd(), 'src/pages'); @@ -147,31 +147,19 @@ async function generateDirectory() { 'react-native', 'vue' ]; - const categoryKeys = Object.keys(API_CATEGORIES); - categoryKeys.forEach((cat) => { - const name = API_CATEGORIES[cat]; - const route = `/[platform]/build-a-backend/${cat}`; - const catNode = findDirectoryNode(route, directoryCopy); - if (catNode) { - catNode.children.push({ - title: `API References`, - description: `API References - ${name}`, - platforms: JS_PLATFORMS, - route: `${route}/reference` - }); - } - }); - - Object.keys(API_SUB_CATEGORIES).forEach((cat) => { - const name = API_SUB_CATEGORIES[cat]; - const route = `/[platform]/build-a-backend/add-aws-services/${cat}`; - const catNode = findDirectoryNode(route, directoryCopy); + const apiReferenceKeys = Object.keys(REFERENCE_IMPORTS_LOOKUP); + apiReferenceKeys.forEach((cat) => { + const route = `/[platform]/reference/api/${cat}`; + const catNode = findDirectoryNode( + '/[platform]/reference/api', + directoryCopy + ); if (catNode) { catNode.children.push({ - title: `API References`, - description: `API References - ${name}`, + title: cat, + description: `API References for ${cat}`, platforms: JS_PLATFORMS, - route: `${route}/reference` + route: route }); } }); diff --git a/src/pages/[platform]/build-a-backend/add-aws-services/[category]/reference/index.mdx b/src/pages/[platform]/build-a-backend/add-aws-services/[category]/reference/index.mdx deleted file mode 100644 index e7c22ba74b1..00000000000 --- a/src/pages/[platform]/build-a-backend/add-aws-services/[category]/reference/index.mdx +++ /dev/null @@ -1,23 +0,0 @@ -import { getApiStaticPath } from '@/utils/getApiStaticPath'; - -export const meta = { - title: 'API Reference', - description: 'API Reference' -}; - -export const getStaticPaths = async () => { - return getApiStaticPath(true); -}; - -export function getStaticProps(context) { - return { - props: { - platform: context.params.platform, - category: context.params.category, - showBreadcrumbs: false, - meta - } - }; -} - - diff --git a/src/pages/[platform]/build-a-backend/[category]/reference/index.mdx b/src/pages/[platform]/reference/api/[...importName]/index.mdx similarity index 64% rename from src/pages/[platform]/build-a-backend/[category]/reference/index.mdx rename to src/pages/[platform]/reference/api/[...importName]/index.mdx index 37b7b92b1d6..b38a39f58d8 100644 --- a/src/pages/[platform]/build-a-backend/[category]/reference/index.mdx +++ b/src/pages/[platform]/reference/api/[...importName]/index.mdx @@ -1,7 +1,6 @@ import { getApiStaticPath } from '@/utils/getApiStaticPath'; export const meta = { - title: 'API Reference', description: 'API Reference' }; @@ -12,12 +11,11 @@ export const getStaticPaths = async () => { export function getStaticProps(context) { return { props: { - platform: context.params.platform, - category: context.params.category, + importName: context.params.importName, showBreadcrumbs: false, - meta + meta: {...meta, title: context.params.importName.join('/')} } }; } - + diff --git a/src/pages/[platform]/reference/api/index.mdx b/src/pages/[platform]/reference/api/index.mdx new file mode 100644 index 00000000000..ae12354d1b1 --- /dev/null +++ b/src/pages/[platform]/reference/api/index.mdx @@ -0,0 +1,32 @@ +import { getChildPageNodes } from '@/utils/getChildPageNodes'; +import { getCustomStaticPath } from '@/utils/getCustomStaticPath'; + +export const meta = { + title: 'API Docs', + description: 'Generated API docs for the Amplify repositories.', + route: '/[platform]/reference/api', + platforms: [ + 'angular', + 'javascript', + 'nextjs', + 'react', + 'react-native', + 'vue', + ] +}; + +export async function getStaticPaths() { + return getCustomStaticPath(meta.platforms); +} + +export function getStaticProps() { + const childPageNodes = getChildPageNodes(meta.route); + return { + props: { + meta, + childPageNodes + } + }; +} + + diff --git a/src/utils/getApiStaticPath.ts b/src/utils/getApiStaticPath.ts index 6c4ea877c74..2353614b8a0 100644 --- a/src/utils/getApiStaticPath.ts +++ b/src/utils/getApiStaticPath.ts @@ -1,40 +1,23 @@ -import { API_CATEGORIES, API_SUB_CATEGORIES } from '@/data/api-categories.mjs'; +import { REFERENCE_IMPORTS } from '@/data/api-categories.mjs'; import { JS_PLATFORMS } from '@/data/platforms'; -export const getApiStaticPath = (sub) => { +export const getApiStaticPath = () => { const paths: any = []; - - if (sub) { - Object.keys(API_SUB_CATEGORIES).forEach((catKey) => { - JS_PLATFORMS.forEach((platKey) => { - paths.push({ - params: { - platform: platKey, - category: catKey - } - }); - }); - }); - - return { - paths: paths, - fallback: false - }; - } else { - Object.keys(API_CATEGORIES).forEach((catKey) => { + Object.keys(REFERENCE_IMPORTS).forEach((importKey: string) => { + REFERENCE_IMPORTS[importKey].forEach((importName: string[]) => { JS_PLATFORMS.forEach((platKey) => { paths.push({ params: { platform: platKey, - category: catKey + importName: importName } }); }); }); + }); - return { - paths: paths, - fallback: false - }; - } + return { + paths: paths, + fallback: false + }; };