import {StepType} from 'sentry/components/onboarding/gettingStartedDoc/step';
import type {
Docs,
DocsParams,
OnboardingConfig,
} from 'sentry/components/onboarding/gettingStartedDoc/types';
import {getUploadSourceMapsStep} from 'sentry/components/onboarding/gettingStartedDoc/utils';
import {
getCrashReportJavaScriptInstallStep,
getCrashReportModalConfigDescription,
getCrashReportModalIntroduction,
} from 'sentry/components/onboarding/gettingStartedDoc/utils/feedbackOnboarding';
import {getJSServerMetricsOnboarding} from 'sentry/components/onboarding/gettingStartedDoc/utils/metricsOnboarding';
import {t, tct} from 'sentry/locale';
import {getInstallConfig, getSdkInitSnippet} from 'sentry/utils/gettingStartedDocs/node';
type Params = DocsParams;
const getSdkSetupSnippet = (params: Params) => `
"use strict";
// IMPORTANT: Make sure to import and initialize Sentry at the top of your file.
${getSdkInitSnippet(params, 'node')}
// Place any other require/import statements here
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 = {
introduction: () =>
tct('In this quick guide you’ll use [strong:npm] or [strong:yarn] to set up:', {
strong: ,
}),
install: params => [
{
type: StepType.INSTALL,
description: t('Add the Sentry Node SDK as a dependency:'),
configurations: getInstallConfig(params),
},
],
configure: params => [
{
type: StepType.CONFIGURE,
description: tct(
'Ensure that Sentry is imported and initialized at the beginning of your file, prior to any other [code:require] or [code:import] statements.',
{code:
}
),
configurations: [
{
language: 'javascript',
description: tct(
'Note: You need to call both [code:captureException] and [code:flush] for captured events to be successfully delivered to Sentry.',
{code:
}
),
},
{
language: 'javascript',
code: getSdkSetupSnippet(params),
},
],
},
getUploadSourceMapsStep({
guideLink:
'https://docs.sentry.io/platforms/javascript/guides/azure-functions/sourcemaps/',
...params,
}),
],
verify: () => [],
};
const crashReportOnboarding: OnboardingConfig = {
introduction: () => getCrashReportModalIntroduction(),
install: (params: Params) => getCrashReportJavaScriptInstallStep(params),
configure: () => [
{
type: StepType.CONFIGURE,
description: getCrashReportModalConfigDescription({
link: 'https://docs.sentry.io/platforms/javascript/guides/azure-functions/user-feedback/configuration/#crash-report-modal',
}),
},
],
verify: () => [],
nextSteps: () => [],
};
const docs: Docs = {
onboarding,
customMetricsOnboarding: getJSServerMetricsOnboarding(),
crashReportOnboarding,
};
export default docs;