@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") ?? ctx.input.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 app-config or the action input. This must be specified in at least one place in order to send a message"
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 = { text: ctx.input.message };
34
- const result = await axios__default.default.post(webhookUrl, body);
35
- if (result.status !== 200) {
36
- ctx.logger.error(
37
- `Something went wrong while trying to send a request to the Teams webhook URL - StatusCode ${result.status}`
38
- );
39
- ctx.logger.debug(`Response body: ${result.data}`);
40
- ctx.logger.debug(`Webhook URL: ${webhookUrl}`);
41
- ctx.logger.debug(`Input message: ${ctx.input.message}`);
42
- throw new Error(
43
- `Something went wrong while trying to send a request to the Teams webhook URL - StatusCode ${result.status}`
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') ?? ctx.input.webhookUrl;\n\n if (!webhookUrl) {\n throw new InputError(\n 'Webhook URL is not specified in either the app-config or the action input. This must be specified in at least one place in order to send a message',\n );\n }\n\n const body = { text: ctx.input.message };\n const result = await axios.post(webhookUrl, body);\n\n if (result.status !== 200) {\n ctx.logger.error(\n `Something went wrong while trying to send a request to the Teams webhook URL - StatusCode ${result.status}`,\n );\n ctx.logger.debug(`Response body: ${result.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 ${result.status}`,\n );\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,MAAA,CAAO,iBAAA,CAAkB,qBAAqB,CAAA,IAAK,IAAI,KAAA,CAAM,UAAA;AAE/D,MAAA,IAAI,CAAC,UAAA,EAAY;AACf,QAAA,MAAM,IAAIC,iBAAA;AAAA,UACR;AAAA,SACF;AAAA;AAGF,MAAA,MAAM,IAAA,GAAO,EAAE,IAAA,EAAM,GAAA,CAAI,MAAM,OAAA,EAAQ;AACvC,MAAA,MAAM,MAAA,GAAS,MAAMC,sBAAA,CAAM,IAAA,CAAK,YAAY,IAAI,CAAA;AAEhD,MAAA,IAAI,MAAA,CAAO,WAAW,GAAA,EAAK;AACzB,QAAA,GAAA,CAAI,MAAA,CAAO,KAAA;AAAA,UACT,CAAA,0FAAA,EAA6F,OAAO,MAAM,CAAA;AAAA,SAC5G;AACA,QAAA,GAAA,CAAI,MAAA,CAAO,KAAA,CAAM,CAAA,eAAA,EAAkB,MAAA,CAAO,IAAI,CAAA,CAAE,CAAA;AAChD,QAAA,GAAA,CAAI,MAAA,CAAO,KAAA,CAAM,CAAA,aAAA,EAAgB,UAAU,CAAA,CAAE,CAAA;AAC7C,QAAA,GAAA,CAAI,OAAO,KAAA,CAAM,CAAA,eAAA,EAAkB,GAAA,CAAI,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA;AACtD,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,CAAA,0FAAA,EAA6F,OAAO,MAAM,CAAA;AAAA,SAC5G;AAAA;AACF;AACF,GACD,CAAA;AACH;;;;"}
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;;;;"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var backendPluginApi = require('@backstage/backend-plugin-api');
4
- var alpha = require('@backstage/plugin-scaffolder-node/alpha');
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: alpha.scaffolderActionsExtensionPoint,
13
+ scaffolderActions: pluginScaffolderNode.scaffolderActionsExtensionPoint,
14
14
  config: backendPluginApi.coreServices.rootConfig
15
15
  },
16
16
  async init({ scaffolderActions, config }) {
@@ -1 +1 @@
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/alpha';\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,qCAAA;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;AACjF,KACD,CAAA;AAAA;AAEL,CAAC;;;;"}
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.0.0-alpha.0",
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.4.0",
37
- "@backstage/config": "^1.3.2",
38
- "@backstage/errors": "^1.2.7",
39
- "@backstage/plugin-scaffolder-node": "^0.9.0",
40
- "axios": "^1.10.0",
41
- "yaml": "^2.8.0",
42
- "zod": "^3.25.67"
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.33.0",
46
- "@backstage/plugin-scaffolder-node-test-utils": "^0.3.0"
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"