| | import { sentenceCase } from 'change-case' |
| | import GithubSlugger from 'github-slugger' |
| |
|
| | interface RawPreview { |
| | title: string |
| | toggled_on: string[] |
| | toggled_by: string |
| | announcement?: unknown |
| | updates?: unknown |
| | } |
| |
|
| | interface ProcessedPreview extends Omit<RawPreview, 'announcement' | 'updates'> { |
| | accept_header: string |
| | href: string |
| | } |
| |
|
| | const slugger = new GithubSlugger() |
| | const inputOrPayload = /(Input|Payload)$/m |
| |
|
| | export default function processPreviews(previews: RawPreview[]): ProcessedPreview[] { |
| | |
| | |
| | |
| | for (const preview of previews as any[]) { |
| | preview.title = sentenceCase(preview.title) |
| | .replace(/ -.+/, '') |
| | .replace('it hub', 'itHub') |
| | .replace(' s ', "'s ") |
| |
|
| | |
| | preview.title = preview.title.endsWith('preview') ? preview.title : `${preview.title} preview` |
| |
|
| | |
| | preview.toggled_on = preview.toggled_on.filter( |
| | (schemaMember: string) => !inputOrPayload.test(schemaMember), |
| | ) |
| |
|
| | |
| | preview.toggled_by = preview.toggled_by.replace(':', '') |
| |
|
| | |
| | preview.accept_header = `application/vnd.github.${preview.toggled_by}+json` |
| |
|
| | delete preview.announcement |
| | delete preview.updates |
| |
|
| | slugger.reset() |
| | preview.href = `/graphql/overview/schema-previews#${slugger.slug(preview.title)}` |
| | } |
| |
|
| | return previews as ProcessedPreview[] |
| | } |
| |
|