import {Layout, LayoutProps} from 'sentry/components/onboarding/gettingStartedDoc/layout'; import {ModuleProps} from 'sentry/components/onboarding/gettingStartedDoc/sdkDocumentation'; import {StepType} from 'sentry/components/onboarding/gettingStartedDoc/step'; import {PlatformKey} from 'sentry/data/platformCategories'; import {t, tct} from 'sentry/locale'; import type {Organization} from 'sentry/types'; type StepProps = { newOrg: boolean; organization: Organization; platformKey: PlatformKey; projectId: string; sentryInitContent: string; }; const performanceOtherConfig = `// Performance Monitoring tracesSampleRate: 1.0, // Capture 100% of the transactions, reduce in production!`; export const steps = ({ sentryInitContent, }: Partial = {}): LayoutProps['steps'] => [ { type: StepType.INSTALL, description: (

{tct( 'Add the Sentry Serverless SDK as a dependency to your [code:package.json]:', {code: } )}

), configurations: [ { language: 'json', code: ` dependencies: { //... "@sentry/serverless": "^7" } `, }, ], }, { title: t('Configure SDK for Http Functions'), description: (

{tct('Use [code:wrapHttpFunction] to wrap your http function:', { code: , })}

), configurations: [ { language: 'javascript', code: ` const Sentry = require("@sentry/serverless"); Sentry.GCPFunction.init({ ${sentryInitContent} }); exports.helloHttp = Sentry.GCPFunction.wrapHttpFunction((req, res) => { /* Your function code */ }); `, }, ], }, { title: t('Configure SDK for Background Functions'), description: (

{tct('Use [code:wrapEventFunction] to wrap your background function:', { code: , })}

), configurations: [ { language: 'javascript', code: ` const Sentry = require("@sentry/serverless"); Sentry.GCPFunction.init({ ${sentryInitContent} }); exports.helloEvents = Sentry.GCPFunction.wrapEventFunction( (data, context, callback) => { /* Your function code */ } ); `, }, ], }, { title: t('Configure SDK for CloudEvent Functions'), description: (

{tct('Use [code:wrapCloudEventFunction] to wrap your CloudEvent function:', { code: , })}

), configurations: [ { language: 'javascript', code: ` const Sentry = require("@sentry/serverless"); Sentry.GCPFunction.init({ ${sentryInitContent} }); exports.helloEvents = Sentry.GCPFunction.wrapCloudEventFunction( (context, callback) => { /* Your function code */ } ); `, }, ], }, { type: StepType.VERIFY, description: t( "This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected." ), configurations: [ { language: 'javascript', code: ` exports.helloHttp = Sentry.GCPFunction.wrapHttpFunction((req, res) => { throw new Error("oh, hello there!"); }); `, }, ], }, ]; export function GettingStartedWithGCPFunctions({dsn, newOrg, platformKey}: ModuleProps) { let sentryInitContent: string[] = [`dsn: "${dsn}",`]; const otherConfigs = [performanceOtherConfig]; if (otherConfigs.length > 0) { sentryInitContent = sentryInitContent.concat(otherConfigs); } return ( ); } export default GettingStartedWithGCPFunctions;