diff --git a/src/lib/project.js b/src/lib/project.js index 6a53035f..c34a6cf7 100644 --- a/src/lib/project.js +++ b/src/lib/project.js @@ -13,6 +13,10 @@ import customNuxtIndex from '../lib/ui/nuxt/customNuxtIndex.js'; import nuxtGradientBackground from '../lib/ui/nuxt/nuxtGradientBackground.js'; import customLayoutSvelte from '../lib/ui/svelte/customLayoutSvelte.js'; import customPageSvelte from '../lib/ui/svelte/customPageSvelte.js'; +import { + serverHooksSvelteJavaScript, + serverHooksSvelteTypeScript, +} from '../lib/ui/svelte/serverHooksSvelte.js'; import Constants from './constants.js'; import gradientBackground from './ui/svelte/gradientBackground.js'; @@ -263,11 +267,6 @@ function scaffoldSvelte() { shell: true, }); - shell.cp( - path.join(__dirname, 'ui', 'svelte', 'hooks.server.js'), - path.join('ui', 'src') - ); - const customTsConfig = ` { "extends": "./.svelte-kit/tsconfig.json", "compilerOptions": { @@ -328,6 +327,19 @@ function scaffoldSvelte() { fs.writeFileSync(path.join('ui', viteConfigFileName), customViteConfig); + const serverHooksSvelteFileName = useTypescript + ? 'hooks.server.ts' + : 'hooks.server.js'; + + const serverHooksSvelte = useTypescript + ? serverHooksSvelteTypeScript + : serverHooksSvelteJavaScript; + + fs.writeFileSync( + path.join('ui', 'src', serverHooksSvelteFileName), + serverHooksSvelte + ); + // Remove Sveltekit demo pages and components if found fs.emptyDirSync(path.join('ui', 'src', 'routes')); diff --git a/src/lib/ui/svelte/hooks.server.js b/src/lib/ui/svelte/hooks.server.js deleted file mode 100644 index c432c9a2..00000000 --- a/src/lib/ui/svelte/hooks.server.js +++ /dev/null @@ -1,9 +0,0 @@ -// To enable o1js for the web, we must set the COOP and COEP headers. -// See here for more information: https://docs.minaprotocol.com/zkapps/how-to-write-a-zkapp-ui#enabling-coop-and-coep-headers -/** @type {import('@sveltejs/kit').Handle} */ -export async function handle({ event, resolve }) { - const response = await resolve(event); - response.headers.set('Cross-Origin-Opener-Policy', 'same-origin'); - response.headers.set('Cross-Origin-Embedder-Policy', 'require-corp'); - return response; -} diff --git a/src/lib/ui/svelte/serverHooksSvelte.js b/src/lib/ui/svelte/serverHooksSvelte.js new file mode 100644 index 00000000..5f83bd80 --- /dev/null +++ b/src/lib/ui/svelte/serverHooksSvelte.js @@ -0,0 +1,24 @@ +export const serverHooksSvelteJavaScript = ` +// To enable o1js for the web, we must set the COOP and COEP headers. +// See here for more information: https://docs.minaprotocol.com/zkapps/how-to-write-a-zkapp-ui#enabling-coop-and-coep-headers +/** @type {import('@sveltejs/kit').Handle} */ +export async function handle({ event, resolve }) { + const response = await resolve(event); + response.headers.set('Cross-Origin-Opener-Policy', 'same-origin'); + response.headers.set('Cross-Origin-Embedder-Policy', 'require-corp'); + return response; +} +`; + +export const serverHooksSvelteTypeScript = ` +import type { Handle } from "@sveltejs/kit"; + +// To enable o1js for the web, we must set the COOP and COEP headers. +// See here for more information: https://docs.minaprotocol.com/zkapps/how-to-write-a-zkapp-ui#enabling-coop-and-coep-headers +export const handle: Handle = async ({ event, resolve }) => { + const response = await resolve(event); + response.headers.set('Cross-Origin-Opener-Policy', 'same-origin'); + response.headers.set('Cross-Origin-Embedder-Policy', 'require-corp'); + return response; +} +`;