|  | 
| 1 | 1 | import { | 
| 2 |  | -  createIntegration, | 
| 3 |  | -  FetchEventCallback, | 
| 4 |  | -  FetchPublishScriptEventCallback, | 
| 5 |  | -  RuntimeContext, | 
| 6 |  | -  RuntimeEnvironment | 
| 7 |  | -} from '@gitbook/runtime' | 
| 8 |  | -import { VoteBlock } from './vote-block' | 
|  | 2 | +    createIntegration, | 
|  | 3 | +    FetchEventCallback, | 
|  | 4 | +    FetchPublishScriptEventCallback, | 
|  | 5 | +    RuntimeContext, | 
|  | 6 | +    RuntimeEnvironment, | 
|  | 7 | +} from '@gitbook/runtime'; | 
|  | 8 | +import { VoteBlock } from './vote-block'; | 
| 9 | 9 | 
 | 
| 10 | 10 | // @ts-ignore | 
| 11 | 11 | // eslint-disable-next-line import/no-unresolved | 
| 12 |  | -import script from './script.raw.js?raw' // the generated string module | 
|  | 12 | +import script from './script.raw.js?raw'; // the generated string module | 
| 13 | 13 | 
 | 
| 14 | 14 | type VaultriceContext = RuntimeContext< | 
| 15 |  | -  RuntimeEnvironment< | 
| 16 |  | -    {}, | 
| 17 |  | -    { | 
| 18 |  | -      projectId?: string; | 
| 19 |  | -      apiKey?: string; | 
| 20 |  | -      apiSecret?: string; | 
| 21 |  | -    } | 
| 22 |  | -  > | 
| 23 |  | -> | 
|  | 15 | +    RuntimeEnvironment< | 
|  | 16 | +        {}, | 
|  | 17 | +        { | 
|  | 18 | +            projectId?: string; | 
|  | 19 | +            apiKey?: string; | 
|  | 20 | +            apiSecret?: string; | 
|  | 21 | +        } | 
|  | 22 | +    > | 
|  | 23 | +>; | 
| 24 | 24 | 
 | 
| 25 | 25 | /** | 
| 26 | 26 |  * serve the published script: return JS string with placeholders replaced | 
| 27 | 27 |  */ | 
| 28 |  | -export const handleFetchPublishedScript: FetchPublishScriptEventCallback = async (event, { environment }: VaultriceContext) => { | 
| 29 |  | -  return new Response(script as string, { | 
| 30 |  | -    headers: { | 
| 31 |  | -      'Content-Type': 'application/javascript', | 
| 32 |  | -      'Cache-Control': 'public, max-age=3600' | 
| 33 |  | -    } | 
| 34 |  | -  }) | 
| 35 |  | -} | 
|  | 28 | +export const handleFetchPublishedScript: FetchPublishScriptEventCallback = async ( | 
|  | 29 | +    event, | 
|  | 30 | +    { environment }: VaultriceContext, | 
|  | 31 | +) => { | 
|  | 32 | +    return new Response(script as string, { | 
|  | 33 | +        headers: { | 
|  | 34 | +            'Content-Type': 'application/javascript', | 
|  | 35 | +            'Cache-Control': 'public, max-age=3600', | 
|  | 36 | +        }, | 
|  | 37 | +    }); | 
|  | 38 | +}; | 
| 36 | 39 | 
 | 
| 37 | 40 | /** | 
| 38 | 41 |  * Generic HTTP handler (GitBook calls /integration) | 
| 39 | 42 |  */ | 
| 40 | 43 | export const handleFetch: FetchEventCallback = async (request, context) => { | 
| 41 |  | -  const url = new URL(request.url) | 
| 42 |  | -  const path = url.pathname | 
|  | 44 | +    const url = new URL(request.url); | 
|  | 45 | +    const path = url.pathname; | 
| 43 | 46 | 
 | 
| 44 |  | -  if (path.endsWith('voting.js') && url.searchParams.get('script') === 'true') { | 
| 45 |  | -    return handleFetchPublishedScript(request as any, context as any) as any | 
| 46 |  | -  } | 
|  | 47 | +    if (path.endsWith('voting.js') && url.searchParams.get('script') === 'true') { | 
|  | 48 | +        return handleFetchPublishedScript(request as any, context as any) as any; | 
|  | 49 | +    } | 
| 47 | 50 | 
 | 
| 48 |  | -  return new Response( | 
| 49 |  | -    `<!doctype html> | 
|  | 51 | +    return new Response( | 
|  | 52 | +        `<!doctype html> | 
| 50 | 53 |     <html> | 
| 51 | 54 |       <head> | 
| 52 | 55 |         <meta charset="utf-8" /> | 
| @@ -76,17 +79,17 @@ export const handleFetch: FetchEventCallback = async (request, context) => { | 
| 76 | 79 |         </script> | 
| 77 | 80 |       </body> | 
| 78 | 81 |     </html>`, | 
| 79 |  | -    { | 
| 80 |  | -      headers: { | 
| 81 |  | -        'Content-Type': 'text/html', | 
| 82 |  | -        'Cache-Control': 'public, max-age=86400' | 
| 83 |  | -      }, | 
| 84 |  | -    } | 
| 85 |  | -  ) | 
| 86 |  | -} | 
|  | 82 | +        { | 
|  | 83 | +            headers: { | 
|  | 84 | +                'Content-Type': 'text/html', | 
|  | 85 | +                'Cache-Control': 'public, max-age=86400', | 
|  | 86 | +            }, | 
|  | 87 | +        }, | 
|  | 88 | +    ); | 
|  | 89 | +}; | 
| 87 | 90 | 
 | 
| 88 | 91 | export default createIntegration({ | 
| 89 |  | -  fetch: handleFetch, | 
| 90 |  | -  fetch_published_script: handleFetchPublishedScript, | 
| 91 |  | -  components: [VoteBlock] | 
| 92 |  | -}) | 
|  | 92 | +    fetch: handleFetch, | 
|  | 93 | +    fetch_published_script: handleFetchPublishedScript, | 
|  | 94 | +    components: [VoteBlock], | 
|  | 95 | +}); | 
0 commit comments