title: sveltekit discord oauth issues
body: <p>I'm trying to implement discord oauth with sveltekit, but I have stumbled upon some issues. I get this error with callback.js</p>
  <blockquote>
  <p>Property 'query' does not exist on type 'RequestEvent&lt;Record&lt;string,
  string&gt;&gt;'. Argument of type '{ client_id: string | boolean;
  client_secret: string | boolean; grant_type: string; redirect_uri:
  string | boolean; code: any; scope: string; }' is not assignable to
  parameter of type 'string | Record&lt;string, string&gt; | string[][] |
  URLSearchParams'.   Type '{ client_id: string | boolean;
  client_secret: string | boolean; grant_type: string; redirect_uri:
  string | boolean; code: any; scope: string; }' is not assignable to
  type 'Record&lt;string, string&gt;'.
  Property 'client_id' is incompatible with index signature.
  Type 'string | boolean' is not assignable to type 'string'.
  Type 'boolean' is not assignable to type 'string'.</p>
  </blockquote>
  <p><strong>callback.js</strong></p>
  <pre><code>const DISCORD_CLIENT_ID = import.meta.env.VITE_DISCORD_CLIENT_ID;
  const DISCORD_CLIENT_SECRET = import.meta.env.VITE_DISCORD_CLIENT_SECRET;
  const DISCORD_REDIRECT_URI = import.meta.env.VITE_DISCORD_REDIRECT_URI;
  
  /**
   * @type {import('@sveltejs/kit').RequestHandler}
   */
  export async function get({ query }) {
    // fetch returnCode set in the URL parameters.
    const returnCode = query.get('code');
    console.log('returnCode =&gt;', returnCode);
  
    // initializing data object to be pushed to Discord's token endpoint.
    // the endpoint returns access &amp; refresh tokens for the user.
    const dataObject = {
      client_id: DISCORD_CLIENT_ID,
      client_secret: DISCORD_CLIENT_SECRET,
      grant_type: 'authorization_code',
      redirect_uri: DISCORD_REDIRECT_URI,
      code: returnCode,
      scope: 'identify email guilds'
    };
  
    // performing a Fetch request to Discord's token endpoint
    const request = await fetch('https://discord.com/api/oauth2/token', {
      method: 'POST',
      body: new URLSearchParams(dataObject),
      headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
    });
  
    const response = await request.json();
  
    // redirect to front page in case of error
    if (response.error) {
      console.log('redirect to / due error');
      return {
        headers: { Location: '/' },
        status: 302
      }
    }
  
    // redirect user to front page with cookies set
    const access_token_expires_in = new Date(Date.now() + response.expires_in); // 10 minutes
    const refresh_token_expires_in = new Date(Date.now() + 30 * 24 * 60 * 60 * 1000); // 30 days
    console.log('redirect to / with cookies');
    return {
      headers: {
        'set-cookie': [
          `disco_access_token=${response.access_token}; Path=/; HttpOnly; SameSite=Strict; Expires=${access_token_expires_in}}`,
          `disco_refresh_token=${response.refresh_token}; Path=/; HttpOnly; SameSite=Strict; Expires=${refresh_token_expires_in}`,
        ],
        Location: '/'
      },
      status: 302
    }
  }
  </code></pre>