@pagerduty/backstage-plugin-common 0.0.3-next.1 → 0.0.3-next.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +0 -85
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +1 -8
- package/dist/index.esm.js +1 -83
- package/dist/index.esm.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.js
CHANGED
|
@@ -19,92 +19,7 @@ class HttpError extends Error {
|
|
|
19
19
|
const PAGERDUTY_INTEGRATION_KEY = "pagerduty.com/integration-key";
|
|
20
20
|
const PAGERDUTY_SERVICE_ID = "pagerduty.com/service-id";
|
|
21
21
|
|
|
22
|
-
let authPersistence;
|
|
23
|
-
function clearToken() {
|
|
24
|
-
authPersistence.authToken = "";
|
|
25
|
-
authPersistence.authTokenExpiryDate = Date.now();
|
|
26
|
-
}
|
|
27
|
-
async function getAuthToken() {
|
|
28
|
-
if (authPersistence.authToken !== "" && authPersistence.authToken.includes("Bearer") && authPersistence.authTokenExpiryDate > Date.now() || authPersistence.authToken !== "" && authPersistence.authToken.includes("Token")) {
|
|
29
|
-
return authPersistence.authToken;
|
|
30
|
-
}
|
|
31
|
-
await loadAuthConfig(authPersistence.logger, authPersistence.config);
|
|
32
|
-
return authPersistence.authToken;
|
|
33
|
-
}
|
|
34
|
-
async function loadAuthConfig(logger, config) {
|
|
35
|
-
var _a;
|
|
36
|
-
try {
|
|
37
|
-
authPersistence = {
|
|
38
|
-
logger,
|
|
39
|
-
config,
|
|
40
|
-
authToken: "",
|
|
41
|
-
authTokenExpiryDate: Date.now()
|
|
42
|
-
};
|
|
43
|
-
if (!config.getOptionalString("pagerDuty.apiToken")) {
|
|
44
|
-
logger.warn("No PagerDuty API token found in config file. Trying OAuth token instead...");
|
|
45
|
-
if (!config.getOptional("pagerDuty.oauth")) {
|
|
46
|
-
logger.error("No PagerDuty OAuth configuration found in config file.");
|
|
47
|
-
throw new Error("No PagerDuty 'apiToken' or 'oauth' configuration found in config file.");
|
|
48
|
-
} else if (!config.getOptionalString("pagerDuty.oauth.clientId") || !config.getOptionalString("pagerDuty.oauth.clientSecret") || !config.getOptionalString("pagerDuty.oauth.subDomain")) {
|
|
49
|
-
logger.error("Missing required PagerDuty OAuth parameters in config file. 'clientId', 'clientSecret', and 'subDomain' are required. 'region' is optional.");
|
|
50
|
-
throw new Error("Missing required PagerDuty OAuth parameters in config file.");
|
|
51
|
-
} else {
|
|
52
|
-
authPersistence.authToken = await getOAuthToken(
|
|
53
|
-
config.getString("pagerDuty.oauth.clientId"),
|
|
54
|
-
config.getString("pagerDuty.oauth.clientSecret"),
|
|
55
|
-
config.getString("pagerDuty.oauth.subDomain"),
|
|
56
|
-
(_a = config.getOptionalString("pagerDuty.oauth.region")) != null ? _a : "us"
|
|
57
|
-
);
|
|
58
|
-
logger.info("PagerDuty OAuth configuration loaded successfully.");
|
|
59
|
-
}
|
|
60
|
-
} else {
|
|
61
|
-
authPersistence.authToken = `Token token=${config.getString("pagerDuty.apiToken")}`;
|
|
62
|
-
logger.info("PagerDuty API token loaded successfully.");
|
|
63
|
-
}
|
|
64
|
-
} catch (error) {
|
|
65
|
-
logger.error(`Unable to retrieve valid PagerDuty AUTH configuration from config file: ${error}`);
|
|
66
|
-
throw error;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
async function getOAuthToken(clientId, clientSecret, subDomain, region) {
|
|
70
|
-
if (!clientId || !clientSecret || !subDomain) {
|
|
71
|
-
throw new Error("Missing required PagerDuty OAuth parameters.");
|
|
72
|
-
}
|
|
73
|
-
const scopes = "abilities.read change_events.read escalation_policies.read incidents.read incidents.write oncalls.read priorities.read schedules.read services.read teams.read users.read users:contact_methods.read vendors.read";
|
|
74
|
-
const urlencoded = new URLSearchParams();
|
|
75
|
-
urlencoded.append("grant_type", "client_credentials");
|
|
76
|
-
urlencoded.append("client_id", clientId);
|
|
77
|
-
urlencoded.append("client_secret", clientSecret);
|
|
78
|
-
urlencoded.append("scope", `as_account-${region}.${subDomain} ${scopes}`);
|
|
79
|
-
let response;
|
|
80
|
-
const options = {
|
|
81
|
-
method: "POST",
|
|
82
|
-
headers: {
|
|
83
|
-
"Content-Type": "application/x-www-form-urlencoded"
|
|
84
|
-
},
|
|
85
|
-
body: urlencoded
|
|
86
|
-
};
|
|
87
|
-
const baseUrl = "https://identity.pagerduty.com/oauth/token";
|
|
88
|
-
try {
|
|
89
|
-
response = await fetch(baseUrl, options);
|
|
90
|
-
} catch (error) {
|
|
91
|
-
throw new Error(`Failed to retrieve oauth token: ${error}`);
|
|
92
|
-
}
|
|
93
|
-
switch (response.status) {
|
|
94
|
-
case 400:
|
|
95
|
-
throw new HttpError("Invalid arguments provided.", 400);
|
|
96
|
-
case 401:
|
|
97
|
-
throw new HttpError("Unauthorized. Invalid credentials provided.", 401);
|
|
98
|
-
}
|
|
99
|
-
const authResponse = await response.json();
|
|
100
|
-
authPersistence.authTokenExpiryDate = Date.now() + authResponse.expires_in * 1e3;
|
|
101
|
-
return `Bearer ${authResponse.access_token}`;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
22
|
exports.HttpError = HttpError;
|
|
105
23
|
exports.PAGERDUTY_INTEGRATION_KEY = PAGERDUTY_INTEGRATION_KEY;
|
|
106
24
|
exports.PAGERDUTY_SERVICE_ID = PAGERDUTY_SERVICE_ID;
|
|
107
|
-
exports.clearToken = clearToken;
|
|
108
|
-
exports.getAuthToken = getAuthToken;
|
|
109
|
-
exports.loadAuthConfig = loadAuthConfig;
|
|
110
25
|
//# sourceMappingURL=index.cjs.js.map
|
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/types.ts","../src/constants.ts","../src/auth.ts"],"sourcesContent":["/** @public */\nexport type PagerDutyIncident = {\n id: string;\n title: string;\n status: string;\n html_url: string;\n assignments: [\n {\n assignee: PagerDutyUser;\n },\n ];\n service: PagerDutyService;\n created_at: string;\n}\n\n/** @public */\nexport type PagerDutyUser = {\n id: string;\n summary: string;\n email: string;\n html_url: string;\n name: string;\n avatar_url: string;\n};\n\n/** @public */\nexport type PagerDutyChangeEvent = {\n id: string;\n integration: PagerDutyIntegration[];\n source: string;\n html_url?: string;\n links: [\n {\n href: string;\n text: string;\n },\n ];\n summary: string;\n timestamp: string;\n}\n\n/** @public */\nexport type PagerDutyService = {\n id: string;\n name: string;\n description?: string;\n escalation_policy: PagerDutyEscalationPolicy; \n alert_creation?: string;\n incident_urgency_rule?: PagerDutyIncidentUrgencyRule;\n integrations?: PagerDutyIntegration[];\n teams?: PagerDutyTeam[];\n status?: string;\n type?: string;\n summary?: string;\n self?: string;\n html_url: string;\n}\n\n/** @public */\nexport type PagerDutyEscalationPolicy = {\n id: string;\n name: string;\n type?: string;\n summary?: string;\n self?: string;\n html_url?: string;\n}\n\n/** @public */\nexport type PagerDutyIncidentUrgencyRule = {\n type: string;\n urgency: string;\n}\n\n/** @public */\nexport type PagerDutyIntegration = {\n id: string;\n type: string;\n summary?: string;\n self?: string;\n html_url?: string;\n name?: string;\n service?: PagerDutyService;\n created_at?: string;\n vendor?: PagerDutyVendor;\n integration_key?: string;\n}\n\n/** @public */\nexport type PagerDutyTeam = {\n id: string;\n type?: string;\n summary?: string;\n self?: string;\n html_url?: string;\n}\n\n/** @public */\nexport type PagerDutyOnCall = {\n user: PagerDutyUser;\n escalation_level: number;\n}\n\n/** @public */\nexport type PagerDutyOnCallUsersResponse = {\n users: PagerDutyUser[];\n}\n\n/** @public */\nexport type PagerDutyVendor = {\n id: string;\n type?: string;\n summary?: string;\n self?: string;\n html_url?: string;\n}\n\n/** @public */\nexport type PagerDutyServicesResponse = {\n services: PagerDutyService[];\n};\n\n/** @public */\nexport type PagerDutyServiceResponse = {\n service: PagerDutyService;\n};\n\n/** @public */\nexport type PagerDutyIncidentsResponse = {\n incidents: PagerDutyIncident[];\n};\n\n/** @public */\nexport type PagerDutyChangeEventsResponse = {\n change_events: PagerDutyChangeEvent[];\n};\n\n/** @public */\nexport type PagerDutyOnCallsResponse = {\n oncalls: PagerDutyOnCall[];\n};\n\n/** @public */\nexport type PagerDutyIntegrationResponse = {\n integration: PagerDutyIntegration;\n}\n\n/** @public */\nexport type PagerDutyEscalationPoliciesResponse = {\n escalation_policies: PagerDutyEscalationPolicy[];\n limit?: number;\n offset?: number;\n more?: boolean;\n total?: number;\n};\n\n/** @public */\nexport type PagerDutyAbilitiesResponse = {\n abilities: string[];\n};\n\n/** @public */\nexport class HttpError extends Error {\n constructor(message: string, status: number) {\n super(message);\n this.status = status;\n }\n\n status: number;\n}\n\n/** @public */\nexport type PagerDutyOAuthConfig = {\n clientId: string;\n clientSecret: string;\n region?: string;\n subDomain: string;\n}\n","/** @public */\nexport const PAGERDUTY_INTEGRATION_KEY = 'pagerduty.com/integration-key';\n\n/** @public */\nexport const PAGERDUTY_SERVICE_ID = 'pagerduty.com/service-id';","import { Logger } from \"winston\";\nimport { Config } from \"@backstage/config\";\nimport { HttpError } from \"./types\";\n\ntype Auth = {\n logger: Logger;\n config: Config;\n authToken: string;\n authTokenExpiryDate: number;\n}\n\nlet authPersistence: Auth;\n\nexport function clearToken() {\n authPersistence.authToken = '';\n authPersistence.authTokenExpiryDate = Date.now();\n}\n\nexport async function getAuthToken(): Promise<string> {\n // check if token already exists and is valid\n if (\n (authPersistence.authToken !== '' &&\n authPersistence.authToken.includes('Bearer') &&\n authPersistence.authTokenExpiryDate > Date.now()) // case where OAuth token is still valid\n ||\n (authPersistence.authToken !== '' &&\n authPersistence.authToken.includes('Token'))) { // case where API token is used\n return authPersistence.authToken;\n }\n\n await loadAuthConfig(authPersistence.logger, authPersistence.config);\n return authPersistence.authToken;\n}\n\nexport async function loadAuthConfig(logger: Logger, config: Config) {\n try {\n // initiliaze the authPersistence in-memory object\n authPersistence = {\n logger: logger,\n config: config,\n authToken: '',\n authTokenExpiryDate: Date.now()\n };\n\n if (!config.getOptionalString('pagerDuty.apiToken')) {\n logger.warn('No PagerDuty API token found in config file. Trying OAuth token instead...');\n\n if (!config.getOptional('pagerDuty.oauth')) {\n logger.error('No PagerDuty OAuth configuration found in config file.');\n throw new Error(\"No PagerDuty 'apiToken' or 'oauth' configuration found in config file.\");\n } else if (!config.getOptionalString('pagerDuty.oauth.clientId') || !config.getOptionalString('pagerDuty.oauth.clientSecret') || !config.getOptionalString('pagerDuty.oauth.subDomain')) {\n logger.error(\"Missing required PagerDuty OAuth parameters in config file. 'clientId', 'clientSecret', and 'subDomain' are required. 'region' is optional.\");\n throw new Error('Missing required PagerDuty OAuth parameters in config file.');\n } else {\n authPersistence.authToken = await getOAuthToken(\n config.getString('pagerDuty.oauth.clientId'),\n config.getString('pagerDuty.oauth.clientSecret'),\n config.getString('pagerDuty.oauth.subDomain'),\n config.getOptionalString('pagerDuty.oauth.region') ?? 'us');\n\n logger.info('PagerDuty OAuth configuration loaded successfully.');\n }\n } else {\n authPersistence.authToken = `Token token=${config.getString('pagerDuty.apiToken')}`;\n\n logger.info('PagerDuty API token loaded successfully.');\n }\n }\n catch (error) {\n logger.error(`Unable to retrieve valid PagerDuty AUTH configuration from config file: ${error}`);\n throw error;\n }\n}\n\nasync function getOAuthToken(clientId: string, clientSecret: string, subDomain: string, region: string): Promise<string> {\n // check if required parameters are provided\n if (!clientId || !clientSecret || !subDomain) {\n throw new Error('Missing required PagerDuty OAuth parameters.');\n }\n\n // define the scopes required for the OAuth token\n const scopes = \"abilities.read change_events.read escalation_policies.read incidents.read incidents.write oncalls.read priorities.read schedules.read services.read teams.read users.read users:contact_methods.read vendors.read\";\n\n // encode the parameters for the request\n const urlencoded = new URLSearchParams();\n urlencoded.append(\"grant_type\", \"client_credentials\");\n urlencoded.append(\"client_id\", clientId);\n urlencoded.append(\"client_secret\", clientSecret);\n urlencoded.append(\"scope\", `as_account-${region}.${subDomain} ${scopes}`);\n\n let response: Response;\n const options: RequestInit = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: urlencoded,\n };\n const baseUrl = 'https://identity.pagerduty.com/oauth/token';\n\n try {\n response = await fetch(baseUrl, options);\n } catch (error) {\n throw new Error(`Failed to retrieve oauth token: ${error}`);\n }\n\n switch (response.status) {\n case 400:\n throw new HttpError(\"Invalid arguments provided.\", 400);\n case 401:\n throw new HttpError(\"Unauthorized. Invalid credentials provided.\", 401);\n default: // 200\n break;\n }\n\n const authResponse = await response.json();\n authPersistence.authTokenExpiryDate = Date.now() + (authResponse.expires_in * 1000);\n return `Bearer ${authResponse.access_token}`;\n}"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/types.ts","../src/constants.ts"],"sourcesContent":["/** @public */\nexport type PagerDutyIncident = {\n id: string;\n title: string;\n status: string;\n html_url: string;\n assignments: [\n {\n assignee: PagerDutyUser;\n },\n ];\n service: PagerDutyService;\n created_at: string;\n}\n\n/** @public */\nexport type PagerDutyUser = {\n id: string;\n summary: string;\n email: string;\n html_url: string;\n name: string;\n avatar_url: string;\n};\n\n/** @public */\nexport type PagerDutyChangeEvent = {\n id: string;\n integration: PagerDutyIntegration[];\n source: string;\n html_url?: string;\n links: [\n {\n href: string;\n text: string;\n },\n ];\n summary: string;\n timestamp: string;\n}\n\n/** @public */\nexport type PagerDutyService = {\n id: string;\n name: string;\n description?: string;\n escalation_policy: PagerDutyEscalationPolicy; \n alert_creation?: string;\n incident_urgency_rule?: PagerDutyIncidentUrgencyRule;\n integrations?: PagerDutyIntegration[];\n teams?: PagerDutyTeam[];\n status?: string;\n type?: string;\n summary?: string;\n self?: string;\n html_url: string;\n}\n\n/** @public */\nexport type PagerDutyEscalationPolicy = {\n id: string;\n name: string;\n type?: string;\n summary?: string;\n self?: string;\n html_url?: string;\n}\n\n/** @public */\nexport type PagerDutyIncidentUrgencyRule = {\n type: string;\n urgency: string;\n}\n\n/** @public */\nexport type PagerDutyIntegration = {\n id: string;\n type: string;\n summary?: string;\n self?: string;\n html_url?: string;\n name?: string;\n service?: PagerDutyService;\n created_at?: string;\n vendor?: PagerDutyVendor;\n integration_key?: string;\n}\n\n/** @public */\nexport type PagerDutyTeam = {\n id: string;\n type?: string;\n summary?: string;\n self?: string;\n html_url?: string;\n}\n\n/** @public */\nexport type PagerDutyOnCall = {\n user: PagerDutyUser;\n escalation_level: number;\n}\n\n/** @public */\nexport type PagerDutyOnCallUsersResponse = {\n users: PagerDutyUser[];\n}\n\n/** @public */\nexport type PagerDutyVendor = {\n id: string;\n type?: string;\n summary?: string;\n self?: string;\n html_url?: string;\n}\n\n/** @public */\nexport type PagerDutyServicesResponse = {\n services: PagerDutyService[];\n};\n\n/** @public */\nexport type PagerDutyServiceResponse = {\n service: PagerDutyService;\n};\n\n/** @public */\nexport type PagerDutyIncidentsResponse = {\n incidents: PagerDutyIncident[];\n};\n\n/** @public */\nexport type PagerDutyChangeEventsResponse = {\n change_events: PagerDutyChangeEvent[];\n};\n\n/** @public */\nexport type PagerDutyOnCallsResponse = {\n oncalls: PagerDutyOnCall[];\n};\n\n/** @public */\nexport type PagerDutyIntegrationResponse = {\n integration: PagerDutyIntegration;\n}\n\n/** @public */\nexport type PagerDutyEscalationPoliciesResponse = {\n escalation_policies: PagerDutyEscalationPolicy[];\n limit?: number;\n offset?: number;\n more?: boolean;\n total?: number;\n};\n\n/** @public */\nexport type PagerDutyAbilitiesResponse = {\n abilities: string[];\n};\n\n/** @public */\nexport class HttpError extends Error {\n constructor(message: string, status: number) {\n super(message);\n this.status = status;\n }\n\n status: number;\n}\n\n/** @public */\nexport type PagerDutyOAuthConfig = {\n clientId: string;\n clientSecret: string;\n region?: string;\n subDomain: string;\n}\n","/** @public */\nexport const PAGERDUTY_INTEGRATION_KEY = 'pagerduty.com/integration-key';\n\n/** @public */\nexport const PAGERDUTY_SERVICE_ID = 'pagerduty.com/service-id';"],"names":[],"mappings":";;;;;;;;;;AAkKO,MAAM,kBAAkB,KAAM,CAAA;AAAA,EACjC,WAAA,CAAY,SAAiB,MAAgB,EAAA;AACzC,IAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAIjB,IAAA,aAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AAHI,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA,CAAA;AAAA,GAClB;AAGJ;;ACxKO,MAAM,yBAA4B,GAAA,gCAAA;AAGlC,MAAM,oBAAuB,GAAA;;;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import { Logger } from 'winston';
|
|
2
|
-
import { Config } from '@backstage/config';
|
|
3
|
-
|
|
4
1
|
/** @public */
|
|
5
2
|
type PagerDutyIncident = {
|
|
6
3
|
id: string;
|
|
@@ -161,8 +158,4 @@ declare const PAGERDUTY_INTEGRATION_KEY = "pagerduty.com/integration-key";
|
|
|
161
158
|
/** @public */
|
|
162
159
|
declare const PAGERDUTY_SERVICE_ID = "pagerduty.com/service-id";
|
|
163
160
|
|
|
164
|
-
|
|
165
|
-
declare function getAuthToken(): Promise<string>;
|
|
166
|
-
declare function loadAuthConfig(logger: Logger, config: Config): Promise<void>;
|
|
167
|
-
|
|
168
|
-
export { HttpError, PAGERDUTY_INTEGRATION_KEY, PAGERDUTY_SERVICE_ID, PagerDutyAbilitiesResponse, PagerDutyChangeEvent, PagerDutyChangeEventsResponse, PagerDutyEscalationPoliciesResponse, PagerDutyEscalationPolicy, PagerDutyIncident, PagerDutyIncidentUrgencyRule, PagerDutyIncidentsResponse, PagerDutyIntegration, PagerDutyIntegrationResponse, PagerDutyOAuthConfig, PagerDutyOnCall, PagerDutyOnCallUsersResponse, PagerDutyOnCallsResponse, PagerDutyService, PagerDutyServiceResponse, PagerDutyServicesResponse, PagerDutyTeam, PagerDutyUser, PagerDutyVendor, clearToken, getAuthToken, loadAuthConfig };
|
|
161
|
+
export { HttpError, PAGERDUTY_INTEGRATION_KEY, PAGERDUTY_SERVICE_ID, PagerDutyAbilitiesResponse, PagerDutyChangeEvent, PagerDutyChangeEventsResponse, PagerDutyEscalationPoliciesResponse, PagerDutyEscalationPolicy, PagerDutyIncident, PagerDutyIncidentUrgencyRule, PagerDutyIncidentsResponse, PagerDutyIntegration, PagerDutyIntegrationResponse, PagerDutyOAuthConfig, PagerDutyOnCall, PagerDutyOnCallUsersResponse, PagerDutyOnCallsResponse, PagerDutyService, PagerDutyServiceResponse, PagerDutyServicesResponse, PagerDutyTeam, PagerDutyUser, PagerDutyVendor };
|
package/dist/index.esm.js
CHANGED
|
@@ -15,87 +15,5 @@ class HttpError extends Error {
|
|
|
15
15
|
const PAGERDUTY_INTEGRATION_KEY = "pagerduty.com/integration-key";
|
|
16
16
|
const PAGERDUTY_SERVICE_ID = "pagerduty.com/service-id";
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
function clearToken() {
|
|
20
|
-
authPersistence.authToken = "";
|
|
21
|
-
authPersistence.authTokenExpiryDate = Date.now();
|
|
22
|
-
}
|
|
23
|
-
async function getAuthToken() {
|
|
24
|
-
if (authPersistence.authToken !== "" && authPersistence.authToken.includes("Bearer") && authPersistence.authTokenExpiryDate > Date.now() || authPersistence.authToken !== "" && authPersistence.authToken.includes("Token")) {
|
|
25
|
-
return authPersistence.authToken;
|
|
26
|
-
}
|
|
27
|
-
await loadAuthConfig(authPersistence.logger, authPersistence.config);
|
|
28
|
-
return authPersistence.authToken;
|
|
29
|
-
}
|
|
30
|
-
async function loadAuthConfig(logger, config) {
|
|
31
|
-
var _a;
|
|
32
|
-
try {
|
|
33
|
-
authPersistence = {
|
|
34
|
-
logger,
|
|
35
|
-
config,
|
|
36
|
-
authToken: "",
|
|
37
|
-
authTokenExpiryDate: Date.now()
|
|
38
|
-
};
|
|
39
|
-
if (!config.getOptionalString("pagerDuty.apiToken")) {
|
|
40
|
-
logger.warn("No PagerDuty API token found in config file. Trying OAuth token instead...");
|
|
41
|
-
if (!config.getOptional("pagerDuty.oauth")) {
|
|
42
|
-
logger.error("No PagerDuty OAuth configuration found in config file.");
|
|
43
|
-
throw new Error("No PagerDuty 'apiToken' or 'oauth' configuration found in config file.");
|
|
44
|
-
} else if (!config.getOptionalString("pagerDuty.oauth.clientId") || !config.getOptionalString("pagerDuty.oauth.clientSecret") || !config.getOptionalString("pagerDuty.oauth.subDomain")) {
|
|
45
|
-
logger.error("Missing required PagerDuty OAuth parameters in config file. 'clientId', 'clientSecret', and 'subDomain' are required. 'region' is optional.");
|
|
46
|
-
throw new Error("Missing required PagerDuty OAuth parameters in config file.");
|
|
47
|
-
} else {
|
|
48
|
-
authPersistence.authToken = await getOAuthToken(
|
|
49
|
-
config.getString("pagerDuty.oauth.clientId"),
|
|
50
|
-
config.getString("pagerDuty.oauth.clientSecret"),
|
|
51
|
-
config.getString("pagerDuty.oauth.subDomain"),
|
|
52
|
-
(_a = config.getOptionalString("pagerDuty.oauth.region")) != null ? _a : "us"
|
|
53
|
-
);
|
|
54
|
-
logger.info("PagerDuty OAuth configuration loaded successfully.");
|
|
55
|
-
}
|
|
56
|
-
} else {
|
|
57
|
-
authPersistence.authToken = `Token token=${config.getString("pagerDuty.apiToken")}`;
|
|
58
|
-
logger.info("PagerDuty API token loaded successfully.");
|
|
59
|
-
}
|
|
60
|
-
} catch (error) {
|
|
61
|
-
logger.error(`Unable to retrieve valid PagerDuty AUTH configuration from config file: ${error}`);
|
|
62
|
-
throw error;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
async function getOAuthToken(clientId, clientSecret, subDomain, region) {
|
|
66
|
-
if (!clientId || !clientSecret || !subDomain) {
|
|
67
|
-
throw new Error("Missing required PagerDuty OAuth parameters.");
|
|
68
|
-
}
|
|
69
|
-
const scopes = "abilities.read change_events.read escalation_policies.read incidents.read incidents.write oncalls.read priorities.read schedules.read services.read teams.read users.read users:contact_methods.read vendors.read";
|
|
70
|
-
const urlencoded = new URLSearchParams();
|
|
71
|
-
urlencoded.append("grant_type", "client_credentials");
|
|
72
|
-
urlencoded.append("client_id", clientId);
|
|
73
|
-
urlencoded.append("client_secret", clientSecret);
|
|
74
|
-
urlencoded.append("scope", `as_account-${region}.${subDomain} ${scopes}`);
|
|
75
|
-
let response;
|
|
76
|
-
const options = {
|
|
77
|
-
method: "POST",
|
|
78
|
-
headers: {
|
|
79
|
-
"Content-Type": "application/x-www-form-urlencoded"
|
|
80
|
-
},
|
|
81
|
-
body: urlencoded
|
|
82
|
-
};
|
|
83
|
-
const baseUrl = "https://identity.pagerduty.com/oauth/token";
|
|
84
|
-
try {
|
|
85
|
-
response = await fetch(baseUrl, options);
|
|
86
|
-
} catch (error) {
|
|
87
|
-
throw new Error(`Failed to retrieve oauth token: ${error}`);
|
|
88
|
-
}
|
|
89
|
-
switch (response.status) {
|
|
90
|
-
case 400:
|
|
91
|
-
throw new HttpError("Invalid arguments provided.", 400);
|
|
92
|
-
case 401:
|
|
93
|
-
throw new HttpError("Unauthorized. Invalid credentials provided.", 401);
|
|
94
|
-
}
|
|
95
|
-
const authResponse = await response.json();
|
|
96
|
-
authPersistence.authTokenExpiryDate = Date.now() + authResponse.expires_in * 1e3;
|
|
97
|
-
return `Bearer ${authResponse.access_token}`;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
export { HttpError, PAGERDUTY_INTEGRATION_KEY, PAGERDUTY_SERVICE_ID, clearToken, getAuthToken, loadAuthConfig };
|
|
18
|
+
export { HttpError, PAGERDUTY_INTEGRATION_KEY, PAGERDUTY_SERVICE_ID };
|
|
101
19
|
//# sourceMappingURL=index.esm.js.map
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/types.ts","../src/constants.ts","../src/auth.ts"],"sourcesContent":["/** @public */\nexport type PagerDutyIncident = {\n id: string;\n title: string;\n status: string;\n html_url: string;\n assignments: [\n {\n assignee: PagerDutyUser;\n },\n ];\n service: PagerDutyService;\n created_at: string;\n}\n\n/** @public */\nexport type PagerDutyUser = {\n id: string;\n summary: string;\n email: string;\n html_url: string;\n name: string;\n avatar_url: string;\n};\n\n/** @public */\nexport type PagerDutyChangeEvent = {\n id: string;\n integration: PagerDutyIntegration[];\n source: string;\n html_url?: string;\n links: [\n {\n href: string;\n text: string;\n },\n ];\n summary: string;\n timestamp: string;\n}\n\n/** @public */\nexport type PagerDutyService = {\n id: string;\n name: string;\n description?: string;\n escalation_policy: PagerDutyEscalationPolicy; \n alert_creation?: string;\n incident_urgency_rule?: PagerDutyIncidentUrgencyRule;\n integrations?: PagerDutyIntegration[];\n teams?: PagerDutyTeam[];\n status?: string;\n type?: string;\n summary?: string;\n self?: string;\n html_url: string;\n}\n\n/** @public */\nexport type PagerDutyEscalationPolicy = {\n id: string;\n name: string;\n type?: string;\n summary?: string;\n self?: string;\n html_url?: string;\n}\n\n/** @public */\nexport type PagerDutyIncidentUrgencyRule = {\n type: string;\n urgency: string;\n}\n\n/** @public */\nexport type PagerDutyIntegration = {\n id: string;\n type: string;\n summary?: string;\n self?: string;\n html_url?: string;\n name?: string;\n service?: PagerDutyService;\n created_at?: string;\n vendor?: PagerDutyVendor;\n integration_key?: string;\n}\n\n/** @public */\nexport type PagerDutyTeam = {\n id: string;\n type?: string;\n summary?: string;\n self?: string;\n html_url?: string;\n}\n\n/** @public */\nexport type PagerDutyOnCall = {\n user: PagerDutyUser;\n escalation_level: number;\n}\n\n/** @public */\nexport type PagerDutyOnCallUsersResponse = {\n users: PagerDutyUser[];\n}\n\n/** @public */\nexport type PagerDutyVendor = {\n id: string;\n type?: string;\n summary?: string;\n self?: string;\n html_url?: string;\n}\n\n/** @public */\nexport type PagerDutyServicesResponse = {\n services: PagerDutyService[];\n};\n\n/** @public */\nexport type PagerDutyServiceResponse = {\n service: PagerDutyService;\n};\n\n/** @public */\nexport type PagerDutyIncidentsResponse = {\n incidents: PagerDutyIncident[];\n};\n\n/** @public */\nexport type PagerDutyChangeEventsResponse = {\n change_events: PagerDutyChangeEvent[];\n};\n\n/** @public */\nexport type PagerDutyOnCallsResponse = {\n oncalls: PagerDutyOnCall[];\n};\n\n/** @public */\nexport type PagerDutyIntegrationResponse = {\n integration: PagerDutyIntegration;\n}\n\n/** @public */\nexport type PagerDutyEscalationPoliciesResponse = {\n escalation_policies: PagerDutyEscalationPolicy[];\n limit?: number;\n offset?: number;\n more?: boolean;\n total?: number;\n};\n\n/** @public */\nexport type PagerDutyAbilitiesResponse = {\n abilities: string[];\n};\n\n/** @public */\nexport class HttpError extends Error {\n constructor(message: string, status: number) {\n super(message);\n this.status = status;\n }\n\n status: number;\n}\n\n/** @public */\nexport type PagerDutyOAuthConfig = {\n clientId: string;\n clientSecret: string;\n region?: string;\n subDomain: string;\n}\n","/** @public */\nexport const PAGERDUTY_INTEGRATION_KEY = 'pagerduty.com/integration-key';\n\n/** @public */\nexport const PAGERDUTY_SERVICE_ID = 'pagerduty.com/service-id';","import { Logger } from \"winston\";\nimport { Config } from \"@backstage/config\";\nimport { HttpError } from \"./types\";\n\ntype Auth = {\n logger: Logger;\n config: Config;\n authToken: string;\n authTokenExpiryDate: number;\n}\n\nlet authPersistence: Auth;\n\nexport function clearToken() {\n authPersistence.authToken = '';\n authPersistence.authTokenExpiryDate = Date.now();\n}\n\nexport async function getAuthToken(): Promise<string> {\n // check if token already exists and is valid\n if (\n (authPersistence.authToken !== '' &&\n authPersistence.authToken.includes('Bearer') &&\n authPersistence.authTokenExpiryDate > Date.now()) // case where OAuth token is still valid\n ||\n (authPersistence.authToken !== '' &&\n authPersistence.authToken.includes('Token'))) { // case where API token is used\n return authPersistence.authToken;\n }\n\n await loadAuthConfig(authPersistence.logger, authPersistence.config);\n return authPersistence.authToken;\n}\n\nexport async function loadAuthConfig(logger: Logger, config: Config) {\n try {\n // initiliaze the authPersistence in-memory object\n authPersistence = {\n logger: logger,\n config: config,\n authToken: '',\n authTokenExpiryDate: Date.now()\n };\n\n if (!config.getOptionalString('pagerDuty.apiToken')) {\n logger.warn('No PagerDuty API token found in config file. Trying OAuth token instead...');\n\n if (!config.getOptional('pagerDuty.oauth')) {\n logger.error('No PagerDuty OAuth configuration found in config file.');\n throw new Error(\"No PagerDuty 'apiToken' or 'oauth' configuration found in config file.\");\n } else if (!config.getOptionalString('pagerDuty.oauth.clientId') || !config.getOptionalString('pagerDuty.oauth.clientSecret') || !config.getOptionalString('pagerDuty.oauth.subDomain')) {\n logger.error(\"Missing required PagerDuty OAuth parameters in config file. 'clientId', 'clientSecret', and 'subDomain' are required. 'region' is optional.\");\n throw new Error('Missing required PagerDuty OAuth parameters in config file.');\n } else {\n authPersistence.authToken = await getOAuthToken(\n config.getString('pagerDuty.oauth.clientId'),\n config.getString('pagerDuty.oauth.clientSecret'),\n config.getString('pagerDuty.oauth.subDomain'),\n config.getOptionalString('pagerDuty.oauth.region') ?? 'us');\n\n logger.info('PagerDuty OAuth configuration loaded successfully.');\n }\n } else {\n authPersistence.authToken = `Token token=${config.getString('pagerDuty.apiToken')}`;\n\n logger.info('PagerDuty API token loaded successfully.');\n }\n }\n catch (error) {\n logger.error(`Unable to retrieve valid PagerDuty AUTH configuration from config file: ${error}`);\n throw error;\n }\n}\n\nasync function getOAuthToken(clientId: string, clientSecret: string, subDomain: string, region: string): Promise<string> {\n // check if required parameters are provided\n if (!clientId || !clientSecret || !subDomain) {\n throw new Error('Missing required PagerDuty OAuth parameters.');\n }\n\n // define the scopes required for the OAuth token\n const scopes = \"abilities.read change_events.read escalation_policies.read incidents.read incidents.write oncalls.read priorities.read schedules.read services.read teams.read users.read users:contact_methods.read vendors.read\";\n\n // encode the parameters for the request\n const urlencoded = new URLSearchParams();\n urlencoded.append(\"grant_type\", \"client_credentials\");\n urlencoded.append(\"client_id\", clientId);\n urlencoded.append(\"client_secret\", clientSecret);\n urlencoded.append(\"scope\", `as_account-${region}.${subDomain} ${scopes}`);\n\n let response: Response;\n const options: RequestInit = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: urlencoded,\n };\n const baseUrl = 'https://identity.pagerduty.com/oauth/token';\n\n try {\n response = await fetch(baseUrl, options);\n } catch (error) {\n throw new Error(`Failed to retrieve oauth token: ${error}`);\n }\n\n switch (response.status) {\n case 400:\n throw new HttpError(\"Invalid arguments provided.\", 400);\n case 401:\n throw new HttpError(\"Unauthorized. Invalid credentials provided.\", 401);\n default: // 200\n break;\n }\n\n const authResponse = await response.json();\n authPersistence.authTokenExpiryDate = Date.now() + (authResponse.expires_in * 1000);\n return `Bearer ${authResponse.access_token}`;\n}"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/types.ts","../src/constants.ts"],"sourcesContent":["/** @public */\nexport type PagerDutyIncident = {\n id: string;\n title: string;\n status: string;\n html_url: string;\n assignments: [\n {\n assignee: PagerDutyUser;\n },\n ];\n service: PagerDutyService;\n created_at: string;\n}\n\n/** @public */\nexport type PagerDutyUser = {\n id: string;\n summary: string;\n email: string;\n html_url: string;\n name: string;\n avatar_url: string;\n};\n\n/** @public */\nexport type PagerDutyChangeEvent = {\n id: string;\n integration: PagerDutyIntegration[];\n source: string;\n html_url?: string;\n links: [\n {\n href: string;\n text: string;\n },\n ];\n summary: string;\n timestamp: string;\n}\n\n/** @public */\nexport type PagerDutyService = {\n id: string;\n name: string;\n description?: string;\n escalation_policy: PagerDutyEscalationPolicy; \n alert_creation?: string;\n incident_urgency_rule?: PagerDutyIncidentUrgencyRule;\n integrations?: PagerDutyIntegration[];\n teams?: PagerDutyTeam[];\n status?: string;\n type?: string;\n summary?: string;\n self?: string;\n html_url: string;\n}\n\n/** @public */\nexport type PagerDutyEscalationPolicy = {\n id: string;\n name: string;\n type?: string;\n summary?: string;\n self?: string;\n html_url?: string;\n}\n\n/** @public */\nexport type PagerDutyIncidentUrgencyRule = {\n type: string;\n urgency: string;\n}\n\n/** @public */\nexport type PagerDutyIntegration = {\n id: string;\n type: string;\n summary?: string;\n self?: string;\n html_url?: string;\n name?: string;\n service?: PagerDutyService;\n created_at?: string;\n vendor?: PagerDutyVendor;\n integration_key?: string;\n}\n\n/** @public */\nexport type PagerDutyTeam = {\n id: string;\n type?: string;\n summary?: string;\n self?: string;\n html_url?: string;\n}\n\n/** @public */\nexport type PagerDutyOnCall = {\n user: PagerDutyUser;\n escalation_level: number;\n}\n\n/** @public */\nexport type PagerDutyOnCallUsersResponse = {\n users: PagerDutyUser[];\n}\n\n/** @public */\nexport type PagerDutyVendor = {\n id: string;\n type?: string;\n summary?: string;\n self?: string;\n html_url?: string;\n}\n\n/** @public */\nexport type PagerDutyServicesResponse = {\n services: PagerDutyService[];\n};\n\n/** @public */\nexport type PagerDutyServiceResponse = {\n service: PagerDutyService;\n};\n\n/** @public */\nexport type PagerDutyIncidentsResponse = {\n incidents: PagerDutyIncident[];\n};\n\n/** @public */\nexport type PagerDutyChangeEventsResponse = {\n change_events: PagerDutyChangeEvent[];\n};\n\n/** @public */\nexport type PagerDutyOnCallsResponse = {\n oncalls: PagerDutyOnCall[];\n};\n\n/** @public */\nexport type PagerDutyIntegrationResponse = {\n integration: PagerDutyIntegration;\n}\n\n/** @public */\nexport type PagerDutyEscalationPoliciesResponse = {\n escalation_policies: PagerDutyEscalationPolicy[];\n limit?: number;\n offset?: number;\n more?: boolean;\n total?: number;\n};\n\n/** @public */\nexport type PagerDutyAbilitiesResponse = {\n abilities: string[];\n};\n\n/** @public */\nexport class HttpError extends Error {\n constructor(message: string, status: number) {\n super(message);\n this.status = status;\n }\n\n status: number;\n}\n\n/** @public */\nexport type PagerDutyOAuthConfig = {\n clientId: string;\n clientSecret: string;\n region?: string;\n subDomain: string;\n}\n","/** @public */\nexport const PAGERDUTY_INTEGRATION_KEY = 'pagerduty.com/integration-key';\n\n/** @public */\nexport const PAGERDUTY_SERVICE_ID = 'pagerduty.com/service-id';"],"names":[],"mappings":";;;;;;AAkKO,MAAM,kBAAkB,KAAM,CAAA;AAAA,EACjC,WAAA,CAAY,SAAiB,MAAgB,EAAA;AACzC,IAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAIjB,IAAA,aAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AAHI,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA,CAAA;AAAA,GAClB;AAGJ;;ACxKO,MAAM,yBAA4B,GAAA,gCAAA;AAGlC,MAAM,oBAAuB,GAAA;;;;"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pagerduty/backstage-plugin-common",
|
|
3
3
|
"description": "Common components for PagerDuty plugins for Backstage",
|
|
4
|
-
"version": "0.0.3-next.
|
|
4
|
+
"version": "0.0.3-next.10",
|
|
5
5
|
"main": "dist/index.cjs.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"license": "Apache-2.0",
|