@grvpandey11/backstage-plugin-scaffolder-backend-module-ms-teams 3.0.0-alpha.0 → 3.1.0
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.
|
@@ -24,24 +24,34 @@ function createSendTeamsMessageViaWebhookAction(options) {
|
|
|
24
24
|
})
|
|
25
25
|
},
|
|
26
26
|
async handler(ctx) {
|
|
27
|
-
const webhookUrl = config.getOptionalString("ms-teams.webhookUrl")
|
|
27
|
+
const webhookUrl = ctx.input.webhookUrl ?? config.getOptionalString("ms-teams.webhookUrl");
|
|
28
28
|
if (!webhookUrl) {
|
|
29
29
|
throw new errors.InputError(
|
|
30
|
-
"Webhook URL is not specified in either the
|
|
30
|
+
"Webhook URL is not specified in either the action input or the app-config. This must be specified in at least one place in order to send a message"
|
|
31
31
|
);
|
|
32
32
|
}
|
|
33
|
-
const body = {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
33
|
+
const body = {
|
|
34
|
+
"@type": "MessageCard",
|
|
35
|
+
"@context": "http://schema.org",
|
|
36
|
+
"summary": "Backstage",
|
|
37
|
+
"text": ctx.input.message
|
|
38
|
+
};
|
|
39
|
+
try {
|
|
40
|
+
await axios__default.default.post(webhookUrl, body);
|
|
41
|
+
} catch (error) {
|
|
42
|
+
if (axios__default.default.isAxiosError(error)) {
|
|
43
|
+
const statusCode = error.response?.status ?? "unknown";
|
|
44
|
+
ctx.logger.error(
|
|
45
|
+
`Something went wrong while trying to send a request to the Teams webhook URL - StatusCode ${statusCode}`
|
|
46
|
+
);
|
|
47
|
+
ctx.logger.debug(`Response body: ${error.response?.data}`);
|
|
48
|
+
ctx.logger.debug(`Webhook URL: ${webhookUrl}`);
|
|
49
|
+
ctx.logger.debug(`Input message: ${ctx.input.message}`);
|
|
50
|
+
throw new Error(
|
|
51
|
+
`Something went wrong while trying to send a request to the Teams webhook URL - StatusCode ${statusCode}`
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
throw error;
|
|
45
55
|
}
|
|
46
56
|
}
|
|
47
57
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-ms-teams-message.cjs.js","sources":["../../../src/actions/ms-teams/send-ms-teams-message.ts"],"sourcesContent":["import { createTemplateAction } from '@backstage/plugin-scaffolder-node';\nimport axios from 'axios';\nimport { Config } from '@backstage/config';\nimport { InputError } from '@backstage/errors';\nimport { examples } from './send-ms-teams-message.examples';\n\n/**\n * Creates a `ms-teams:sendMessage` Scaffolder action.\n *\n * @public\n */\nexport function createSendTeamsMessageViaWebhookAction(options: { config: Config }) {\n const { config } = options;\n\n return createTemplateAction({\n id: 'ms-teams:sendMessage',\n description: 'Sends a Microsoft Teams message via a webhook',\n examples,\n schema: {\n input: z =>\n z.object({\n message: z.string().describe('The message to send via webhook'),\n webhookUrl: z\n .string()\n .describe(\n 'The Microsoft Teams webhook URL to send the request to. The URL must either be specified here or in the Backstage config',\n )\n .optional(),\n }),\n },\n async handler(ctx) {\n const webhookUrl =\n config.getOptionalString('ms-teams.webhookUrl')
|
|
1
|
+
{"version":3,"file":"send-ms-teams-message.cjs.js","sources":["../../../src/actions/ms-teams/send-ms-teams-message.ts"],"sourcesContent":["import { createTemplateAction } from '@backstage/plugin-scaffolder-node';\nimport axios from 'axios';\nimport { Config } from '@backstage/config';\nimport { InputError } from '@backstage/errors';\nimport { examples } from './send-ms-teams-message.examples';\n\n/**\n * Creates a `ms-teams:sendMessage` Scaffolder action.\n *\n * @public\n */\nexport function createSendTeamsMessageViaWebhookAction(options: { config: Config }) {\n const { config } = options;\n\n return createTemplateAction({\n id: 'ms-teams:sendMessage',\n description: 'Sends a Microsoft Teams message via a webhook',\n examples,\n schema: {\n input: z =>\n z.object({\n message: z.string().describe('The message to send via webhook'),\n webhookUrl: z\n .string()\n .describe(\n 'The Microsoft Teams webhook URL to send the request to. The URL must either be specified here or in the Backstage config',\n )\n .optional(),\n }),\n },\n async handler(ctx) {\n const webhookUrl =\n ctx.input.webhookUrl ?? config.getOptionalString('ms-teams.webhookUrl');\n\n if (!webhookUrl) {\n throw new InputError(\n 'Webhook URL is not specified in either the action input or the app-config. This must be specified in at least one place in order to send a message',\n );\n }\n\n const body = {\n \"@type\": \"MessageCard\",\n \"@context\": \"http://schema.org\",\n \"summary\": \"Backstage\",\n \"text\": ctx.input.message,\n };\n\n try {\n await axios.post(webhookUrl, body);\n } catch (error) {\n if (axios.isAxiosError(error)) {\n const statusCode = error.response?.status ?? 'unknown';\n ctx.logger.error(\n `Something went wrong while trying to send a request to the Teams webhook URL - StatusCode ${statusCode}`,\n );\n ctx.logger.debug(`Response body: ${error.response?.data}`);\n ctx.logger.debug(`Webhook URL: ${webhookUrl}`);\n ctx.logger.debug(`Input message: ${ctx.input.message}`);\n throw new Error(\n `Something went wrong while trying to send a request to the Teams webhook URL - StatusCode ${statusCode}`,\n );\n }\n throw error;\n }\n },\n });\n}\n"],"names":["createTemplateAction","examples","InputError","axios"],"mappings":";;;;;;;;;;;AAWO,SAAS,uCAAuC,OAAA,EAA6B;AAClF,EAAA,MAAM,EAAE,QAAO,GAAI,OAAA;AAEnB,EAAA,OAAOA,yCAAA,CAAqB;AAAA,IAC1B,EAAA,EAAI,sBAAA;AAAA,IACJ,WAAA,EAAa,+CAAA;AAAA,cACbC,oCAAA;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,KAAA,EAAO,CAAA,CAAA,KACL,CAAA,CAAE,MAAA,CAAO;AAAA,QACP,OAAA,EAAS,CAAA,CAAE,MAAA,EAAO,CAAE,SAAS,iCAAiC,CAAA;AAAA,QAC9D,UAAA,EAAY,CAAA,CACT,MAAA,EAAO,CACP,QAAA;AAAA,UACC;AAAA,UAED,QAAA;AAAS,OACb;AAAA,KACL;AAAA,IACA,MAAM,QAAQ,GAAA,EAAK;AACjB,MAAA,MAAM,aACJ,GAAA,CAAI,KAAA,CAAM,UAAA,IAAc,MAAA,CAAO,kBAAkB,qBAAqB,CAAA;AAExE,MAAA,IAAI,CAAC,UAAA,EAAY;AACf,QAAA,MAAM,IAAIC,iBAAA;AAAA,UACR;AAAA,SACF;AAAA,MACF;AAEA,MAAA,MAAM,IAAA,GAAO;AAAA,QACX,OAAA,EAAS,aAAA;AAAA,QACT,UAAA,EAAY,mBAAA;AAAA,QACZ,SAAA,EAAW,WAAA;AAAA,QACX,MAAA,EAAQ,IAAI,KAAA,CAAM;AAAA,OACpB;AAEA,MAAA,IAAI;AACF,QAAA,MAAMC,sBAAA,CAAM,IAAA,CAAK,UAAA,EAAY,IAAI,CAAA;AAAA,MACnC,SAAS,KAAA,EAAO;AACd,QAAA,IAAIA,sBAAA,CAAM,YAAA,CAAa,KAAK,CAAA,EAAG;AAC7B,UAAA,MAAM,UAAA,GAAa,KAAA,CAAM,QAAA,EAAU,MAAA,IAAU,SAAA;AAC7C,UAAA,GAAA,CAAI,MAAA,CAAO,KAAA;AAAA,YACT,6FAA6F,UAAU,CAAA;AAAA,WACzG;AACA,UAAA,GAAA,CAAI,OAAO,KAAA,CAAM,CAAA,eAAA,EAAkB,KAAA,CAAM,QAAA,EAAU,IAAI,CAAA,CAAE,CAAA;AACzD,UAAA,GAAA,CAAI,MAAA,CAAO,KAAA,CAAM,CAAA,aAAA,EAAgB,UAAU,CAAA,CAAE,CAAA;AAC7C,UAAA,GAAA,CAAI,OAAO,KAAA,CAAM,CAAA,eAAA,EAAkB,GAAA,CAAI,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA;AACtD,UAAA,MAAM,IAAI,KAAA;AAAA,YACR,6FAA6F,UAAU,CAAA;AAAA,WACzG;AAAA,QACF;AACA,QAAA,MAAM,KAAA;AAAA,MACR;AAAA,IACF;AAAA,GACD,CAAA;AACH;;;;"}
|
package/dist/module.cjs.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var backendPluginApi = require('@backstage/backend-plugin-api');
|
|
4
|
-
var
|
|
4
|
+
var pluginScaffolderNode = require('@backstage/plugin-scaffolder-node');
|
|
5
5
|
var sendMsTeamsMessage = require('./actions/ms-teams/send-ms-teams-message.cjs.js');
|
|
6
6
|
|
|
7
7
|
const scaffolderModuleSendTeamsMessage = backendPluginApi.createBackendModule({
|
|
@@ -10,7 +10,7 @@ const scaffolderModuleSendTeamsMessage = backendPluginApi.createBackendModule({
|
|
|
10
10
|
register({ registerInit }) {
|
|
11
11
|
registerInit({
|
|
12
12
|
deps: {
|
|
13
|
-
scaffolderActions:
|
|
13
|
+
scaffolderActions: pluginScaffolderNode.scaffolderActionsExtensionPoint,
|
|
14
14
|
config: backendPluginApi.coreServices.rootConfig
|
|
15
15
|
},
|
|
16
16
|
async init({ scaffolderActions, config }) {
|
package/dist/module.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.cjs.js","sources":["../src/module.ts"],"sourcesContent":["import { createBackendModule, coreServices } from \"@backstage/backend-plugin-api\";\nimport { scaffolderActionsExtensionPoint
|
|
1
|
+
{"version":3,"file":"module.cjs.js","sources":["../src/module.ts"],"sourcesContent":["import { createBackendModule, coreServices } from \"@backstage/backend-plugin-api\";\nimport { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node';\nimport { createSendTeamsMessageViaWebhookAction } from \"./actions/ms-teams/send-ms-teams-message\";\n\n/**\n * A backend module that registers the action into the scaffolder\n */\nexport const scaffolderModuleSendTeamsMessage = createBackendModule({\n moduleId: 'ms-teams',\n pluginId: 'scaffolder',\n register({ registerInit }) {\n registerInit({\n deps: {\n scaffolderActions: scaffolderActionsExtensionPoint,\n config: coreServices.rootConfig,\n },\n async init({ scaffolderActions, config }) {\n scaffolderActions.addActions(createSendTeamsMessageViaWebhookAction({ config }));\n }\n });\n },\n})\n"],"names":["createBackendModule","scaffolderActionsExtensionPoint","coreServices","createSendTeamsMessageViaWebhookAction"],"mappings":";;;;;;AAOO,MAAM,mCAAmCA,oCAAA,CAAoB;AAAA,EAClE,QAAA,EAAU,UAAA;AAAA,EACV,QAAA,EAAU,YAAA;AAAA,EACV,QAAA,CAAS,EAAE,YAAA,EAAa,EAAG;AACzB,IAAA,YAAA,CAAa;AAAA,MACX,IAAA,EAAM;AAAA,QACJ,iBAAA,EAAmBC,oDAAA;AAAA,QACnB,QAAQC,6BAAA,CAAa;AAAA,OACvB;AAAA,MACA,MAAM,IAAA,CAAK,EAAE,iBAAA,EAAmB,QAAO,EAAG;AACxC,QAAA,iBAAA,CAAkB,UAAA,CAAWC,yDAAA,CAAuC,EAAE,MAAA,EAAQ,CAAC,CAAA;AAAA,MACjF;AAAA,KACD,CAAA;AAAA,EACH;AACF,CAAC;;;;"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grvpandey11/backstage-plugin-scaffolder-backend-module-ms-teams",
|
|
3
3
|
"description": "The Microsoft Teams module for @backstage/plugin-scaffolder-backend",
|
|
4
|
-
"version": "3.
|
|
4
|
+
"version": "3.1.0",
|
|
5
5
|
"main": "dist/index.cjs.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"license": "Apache-2.0",
|
|
@@ -33,17 +33,22 @@
|
|
|
33
33
|
"postpack": "backstage-cli package postpack"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@backstage/backend-plugin-api": "^1.
|
|
37
|
-
"@backstage/config": "^1.3.
|
|
38
|
-
"@backstage/errors": "^1.
|
|
39
|
-
"@backstage/plugin-scaffolder-node": "^0.
|
|
40
|
-
"axios": "^1.
|
|
41
|
-
"yaml": "^2.
|
|
42
|
-
"zod": "^3.25.
|
|
36
|
+
"@backstage/backend-plugin-api": "^1.9.2",
|
|
37
|
+
"@backstage/config": "^1.3.8",
|
|
38
|
+
"@backstage/errors": "^1.3.1",
|
|
39
|
+
"@backstage/plugin-scaffolder-node": "^0.13.4",
|
|
40
|
+
"axios": "^1.18.1",
|
|
41
|
+
"yaml": "^2.9.0",
|
|
42
|
+
"zod": "^3.25.76"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
|
-
"@backstage/cli": "^0.
|
|
46
|
-
"@backstage/
|
|
45
|
+
"@backstage/cli": "^0.36.3",
|
|
46
|
+
"@backstage/cli-defaults": "^0.1.3",
|
|
47
|
+
"@backstage/plugin-scaffolder-node-test-utils": "^0.3.12",
|
|
48
|
+
"@jest/environment-jsdom-abstract": "^30",
|
|
49
|
+
"@types/jest": "^30",
|
|
50
|
+
"jest": "^30",
|
|
51
|
+
"jsdom": "^27"
|
|
47
52
|
},
|
|
48
53
|
"files": [
|
|
49
54
|
"dist"
|