- Add authentication scripts with SubtleCrypto password encryption - Add sourcemap extraction pipeline (update-urls, download-sourcemaps, extract-sources) - Add Playwright API interception script for monetization endpoints - Document two-step auth flow with JWT tokens and dual cookies - Move extracted source from root to anyclip/ directory - Add project configuration (.env.example, .gitignore, CLAUDE.md)
34 lines
1.3 KiB
TypeScript
34 lines
1.3 KiB
TypeScript
import {
|
|
HTTP_ERROR_FALLBACK_ERROR_CODE,
|
|
type HTTPAccessFallbackError,
|
|
} from './http-access-fallback/http-access-fallback'
|
|
|
|
// TODO: Add `forbidden` docs
|
|
/**
|
|
* @experimental
|
|
* This function allows you to render the [forbidden.js file](https://nextjs.org/docs/app/api-reference/file-conventions/forbidden)
|
|
* within a route segment as well as inject a tag.
|
|
*
|
|
* `forbidden()` can be used in
|
|
* [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),
|
|
* [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and
|
|
* [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).
|
|
*
|
|
* Read more: [Next.js Docs: `forbidden`](https://nextjs.org/docs/app/api-reference/functions/forbidden)
|
|
*/
|
|
|
|
const DIGEST = `${HTTP_ERROR_FALLBACK_ERROR_CODE};403`
|
|
|
|
export function forbidden(): never {
|
|
if (!process.env.__NEXT_EXPERIMENTAL_AUTH_INTERRUPTS) {
|
|
throw new Error(
|
|
`\`forbidden()\` is experimental and only allowed to be enabled when \`experimental.authInterrupts\` is enabled.`
|
|
)
|
|
}
|
|
|
|
// eslint-disable-next-line no-throw-literal
|
|
const error = new Error(DIGEST) as HTTPAccessFallbackError
|
|
;(error as HTTPAccessFallbackError).digest = DIGEST
|
|
throw error
|
|
}
|