import {StepType} from 'sentry/components/onboarding/gettingStartedDoc/step'; import { Docs, DocsParams, OnboardingConfig, } from 'sentry/components/onboarding/gettingStartedDoc/types'; import {getUploadSourceMapsStep} from 'sentry/components/onboarding/gettingStartedDoc/utils'; import {ProductSolution} from 'sentry/components/onboarding/productSelection'; import {t, tct} from 'sentry/locale'; import { getDefaultNodeImports, getInstallSnippet, ProductSelectionMap, } from 'sentry/utils/gettingStartedDocs/node'; type Params = DocsParams; const productSelection = (params: Params): ProductSelectionMap => { return { [ProductSolution.ERROR_MONITORING]: true, [ProductSolution.PROFILING]: params.isProfilingSelected, [ProductSolution.PERFORMANCE_MONITORING]: params.isPerformanceSelected, [ProductSolution.SESSION_REPLAY]: params.isReplaySelected, }; }; const getSdkSetupSnippet = (params: Params) => ` "use strict"; ${getDefaultNodeImports({productSelection: productSelection(params)}).join('\n')} Sentry..init({ dsn: "${params.dsn}", integrations: [${ params.isProfilingSelected ? ` new ProfilingIntegration(),` : '' } ],${ params.isPerformanceSelected ? ` // Performance Monitoring tracesSampleRate: 1.0, // Capture 100% of the transactions` : '' }${ params.isProfilingSelected ? ` // Set sampling rate for profiling - this is relative to tracesSampleRate profilesSampleRate: 1.0,` : '' } }); module.exports = async function (context, req) { try { await notExistFunction(); } catch (e) { Sentry.captureException(e); await Sentry.flush(2000); } context.res = { status: 200, body: "Hello from Azure Cloud Function!", }; }; `; const onboarding: OnboardingConfig = { install: params => [ { type: StepType.INSTALL, description: t('Add the Sentry Node SDK as a dependency:'), configurations: [ { code: [ { label: 'npm', value: 'npm', language: 'bash', code: getInstallSnippet({ productSelection: productSelection(params), packageManager: 'npm', }), }, { label: 'yarn', value: 'yarn', language: 'bash', code: getInstallSnippet({ productSelection: productSelection(params), packageManager: 'yarn', }), }, ], }, ], }, ], configure: params => [ { type: StepType.CONFIGURE, description: t('To set up Sentry error logging for an Azure Function:'), configurations: [ { language: 'javascript', code: getSdkSetupSnippet(params), }, { language: 'javascript', description: tct( 'Note: You need to call both [captureExceptionCode:captureException] and [flushCode:flush] for captured events to be successfully delivered to Sentry.', {captureExceptionCode: , flushCode: } ), }, ], }, getUploadSourceMapsStep({ guideLink: 'https://docs.sentry.io/platforms/node/guides/azure-functions/sourcemaps/', ...params, }), ], verify: () => [], }; const docs: Docs = { onboarding, }; export default docs;