| | |
| | |
| | |
| | export const enum FallbackMode { |
| | |
| | |
| | |
| | |
| | |
| | BLOCKING_STATIC_RENDER = 'BLOCKING_STATIC_RENDER', |
| |
|
| | |
| | |
| | |
| | |
| | |
| | PRERENDER = 'PRERENDER', |
| |
|
| | |
| | |
| | |
| | |
| | NOT_FOUND = 'NOT_FOUND', |
| | } |
| |
|
| | |
| | |
| | |
| | export type GetStaticPathsFallback = boolean | 'blocking' |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | export function parseFallbackField( |
| | fallbackField: string | boolean | null | undefined |
| | ): FallbackMode | undefined { |
| | if (typeof fallbackField === 'string') { |
| | return FallbackMode.PRERENDER |
| | } else if (fallbackField === null) { |
| | return FallbackMode.BLOCKING_STATIC_RENDER |
| | } else if (fallbackField === false) { |
| | return FallbackMode.NOT_FOUND |
| | } else if (fallbackField === undefined) { |
| | return undefined |
| | } else { |
| | throw new Error( |
| | `Invalid fallback option: ${fallbackField}. Fallback option must be a string, null, undefined, or false.` |
| | ) |
| | } |
| | } |
| |
|
| | export function fallbackModeToFallbackField( |
| | fallback: FallbackMode, |
| | page: string | undefined |
| | ): string | false | null { |
| | switch (fallback) { |
| | case FallbackMode.BLOCKING_STATIC_RENDER: |
| | return null |
| | case FallbackMode.NOT_FOUND: |
| | return false |
| | case FallbackMode.PRERENDER: |
| | if (!page) { |
| | throw new Error( |
| | `Invariant: expected a page to be provided when fallback mode is "${fallback}"` |
| | ) |
| | } |
| |
|
| | return page |
| | default: |
| | throw new Error(`Invalid fallback mode: ${fallback}`) |
| | } |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | export function parseStaticPathsResult( |
| | result: GetStaticPathsFallback |
| | ): FallbackMode { |
| | if (result === true) { |
| | return FallbackMode.PRERENDER |
| | } else if (result === 'blocking') { |
| | return FallbackMode.BLOCKING_STATIC_RENDER |
| | } else { |
| | return FallbackMode.NOT_FOUND |
| | } |
| | } |
| |
|