@sentry/wizard
Version:
Sentry wizard helping you to configure your project
65 lines • 2.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SentryProjectSelector = void 0;
const inquirer_1 = require("inquirer");
const BaseStep_1 = require("./BaseStep");
function sleep(n) {
return new Promise((resolve) => setTimeout(resolve, n));
}
class SentryProjectSelector extends BaseStep_1.BaseStep {
async emit(answers) {
this.debug(answers);
if (!answers.wizard) {
// we skip this completely because the wizard wasn't running
return {};
}
if (!answers.wizard.projects || answers.wizard.projects.length === 0) {
throw new Error('No Projects found. Please create a new Project in Sentry and try again.');
}
let selectedProject = null;
if (answers.wizard.projects.length === 1) {
selectedProject = {
selectedProject: answers.wizard.projects[0],
};
// the wizard CLI closes too quickly when we skip the prompt
// as it will cause the UI to be stuck saying Waiting for wizard to connect
await sleep(1000);
}
else {
selectedProject = await (0, inquirer_1.prompt)([
{
choices: answers.wizard.projects.map((project) => {
return {
name: `${project.organization?.name ?? ''} / ${project.slug}`,
value: project,
};
}),
message: 'Please select your project in Sentry:',
name: 'selectedProject',
type: 'list',
},
]);
}
const dsn = selectedProject?.selectedProject.keys[0]?.dsn ?? {
public: null,
private: null,
};
return {
config: {
auth: {
token: answers.wizard.apiKeys?.token ?? null,
},
dsn,
organization: {
slug: selectedProject?.selectedProject.organization?.slug ?? null,
},
project: {
id: selectedProject?.selectedProject.id ?? null,
slug: selectedProject?.selectedProject.slug ?? null,
},
},
};
}
}
exports.SentryProjectSelector = SentryProjectSelector;
//# sourceMappingURL=SentryProjectSelector.js.map