@pagerduty/backstage-plugin-backend 0.10.3 → 0.11.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.
- package/CHANGELOG.md +13 -0
- package/dist/apis/pagerduty.cjs.js +55 -77
- package/dist/apis/pagerduty.cjs.js.map +1 -1
- package/dist/service/router.cjs.js +87 -0
- package/dist/service/router.cjs.js.map +1 -1
- package/dist/services/dataLoader.cjs.js +72 -0
- package/dist/services/dataLoader.cjs.js.map +1 -0
- package/dist/services/matchingEngine.cjs.js +99 -0
- package/dist/services/matchingEngine.cjs.js.map +1 -0
- package/dist/utils/normalization.cjs.js +66 -0
- package/dist/utils/normalization.cjs.js.map +1 -0
- package/package.json +3 -2
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function normalizeName(name) {
|
|
4
|
+
if (!name) {
|
|
5
|
+
return "";
|
|
6
|
+
}
|
|
7
|
+
let normalized = name.toLowerCase();
|
|
8
|
+
normalized = normalized.replace(/_/g, " ").replace(/-/g, " ");
|
|
9
|
+
normalized = normalized.replace(/\s+/g, " ");
|
|
10
|
+
return normalized.trim();
|
|
11
|
+
}
|
|
12
|
+
function extractAcronym(name) {
|
|
13
|
+
if (!name) {
|
|
14
|
+
return "";
|
|
15
|
+
}
|
|
16
|
+
if (name.length <= 5 && /^[A-Z]+$/.test(name)) {
|
|
17
|
+
return name;
|
|
18
|
+
}
|
|
19
|
+
if (/[\s\-_\/]/.test(name)) {
|
|
20
|
+
const words2 = name.split(/[\s\-_\/]+/).filter((word) => word.length > 0);
|
|
21
|
+
if (words2.length === 0) {
|
|
22
|
+
return "";
|
|
23
|
+
}
|
|
24
|
+
const acronym = words2.map((word) => word.charAt(0).toUpperCase()).join("");
|
|
25
|
+
return acronym;
|
|
26
|
+
}
|
|
27
|
+
const withBoundaries = name.replace(/([a-z])([A-Z])/g, "$1|$2").replace(/([A-Z]+)([A-Z][a-z])/g, "$1|$2");
|
|
28
|
+
const words = withBoundaries.split("|").filter((word) => word.length > 0);
|
|
29
|
+
if (words.length > 1) {
|
|
30
|
+
return words.map((word) => word.charAt(0).toUpperCase()).join("");
|
|
31
|
+
}
|
|
32
|
+
const capitals = name.match(/[A-Z]/g);
|
|
33
|
+
if (capitals && capitals.length > 1) {
|
|
34
|
+
return capitals.join("");
|
|
35
|
+
}
|
|
36
|
+
if (name.length > 0) {
|
|
37
|
+
return name.charAt(0).toUpperCase();
|
|
38
|
+
}
|
|
39
|
+
return "";
|
|
40
|
+
}
|
|
41
|
+
function normalizePagerDutyService(name, teamName, serviceId) {
|
|
42
|
+
return {
|
|
43
|
+
rawName: name,
|
|
44
|
+
normalizedName: normalizeName(name),
|
|
45
|
+
teamName: normalizeName(teamName),
|
|
46
|
+
acronym: extractAcronym(name),
|
|
47
|
+
sourceId: serviceId,
|
|
48
|
+
source: "pagerduty"
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function normalizeBackstageComponent(name, owner, entityRef) {
|
|
52
|
+
return {
|
|
53
|
+
rawName: name,
|
|
54
|
+
normalizedName: normalizeName(name),
|
|
55
|
+
teamName: normalizeName(owner),
|
|
56
|
+
acronym: extractAcronym(name),
|
|
57
|
+
sourceId: entityRef,
|
|
58
|
+
source: "backstage"
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
exports.extractAcronym = extractAcronym;
|
|
63
|
+
exports.normalizeBackstageComponent = normalizeBackstageComponent;
|
|
64
|
+
exports.normalizeName = normalizeName;
|
|
65
|
+
exports.normalizePagerDutyService = normalizePagerDutyService;
|
|
66
|
+
//# sourceMappingURL=normalization.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalization.cjs.js","sources":["../../src/utils/normalization.ts"],"sourcesContent":["export function normalizeName(name: string): string {\n if (!name) {\n return '';\n }\n\n let normalized = name.toLowerCase();\n normalized = normalized.replace(/_/g, ' ').replace(/-/g, ' ');\n normalized = normalized.replace(/\\s+/g, ' ');\n\n return normalized.trim();\n}\n\nexport function extractAcronym(name: string): string {\n if (!name) {\n return '';\n }\n\n if (name.length <= 5 && /^[A-Z]+$/.test(name)) {\n return name;\n }\n\n if (/[\\s\\-_\\/]/.test(name)) {\n const words = name.split(/[\\s\\-_\\/]+/).filter(word => word.length > 0);\n\n if (words.length === 0) {\n return '';\n }\n\n const acronym = words\n .map(word => word.charAt(0).toUpperCase())\n .join('');\n\n return acronym;\n }\n\n const withBoundaries = name\n .replace(/([a-z])([A-Z])/g, '$1|$2')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1|$2');\n\n const words = withBoundaries.split('|').filter(word => word.length > 0);\n\n if (words.length > 1) {\n return words\n .map(word => word.charAt(0).toUpperCase())\n .join('');\n }\n\n const capitals = name.match(/[A-Z]/g);\n if (capitals && capitals.length > 1) {\n return capitals.join('');\n }\n\n if (name.length > 0) {\n return name.charAt(0).toUpperCase();\n }\n\n return '';\n}\n\nexport interface NormalizedService {\n rawName: string;\n normalizedName: string;\n teamName: string;\n acronym: string;\n sourceId: string;\n source: 'pagerduty' | 'backstage';\n}\n\nexport function normalizePagerDutyService(\n name: string,\n teamName: string,\n serviceId: string,\n): NormalizedService {\n return {\n rawName: name,\n normalizedName: normalizeName(name),\n teamName: normalizeName(teamName),\n acronym: extractAcronym(name),\n sourceId: serviceId,\n source: 'pagerduty',\n };\n}\n\nexport function normalizeBackstageComponent(\n name: string,\n owner: string,\n entityRef: string,\n): NormalizedService {\n return {\n rawName: name,\n normalizedName: normalizeName(name),\n teamName: normalizeName(owner),\n acronym: extractAcronym(name),\n sourceId: entityRef,\n source: 'backstage',\n };\n}\n"],"names":["words"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pagerduty/backstage-plugin-backend",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"main": "dist/index.cjs.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -40,7 +40,8 @@
|
|
|
40
40
|
"@backstage/backend-common": "^0.25.0",
|
|
41
41
|
"@backstage/backend-plugin-api": "^1.6.0",
|
|
42
42
|
"@backstage/catalog-client": "^1.12.1",
|
|
43
|
-
"@pagerduty/backstage-plugin-common": "~0.2.
|
|
43
|
+
"@pagerduty/backstage-plugin-common": "~0.2.6",
|
|
44
|
+
"@skyra/jaro-winkler": "^1.1.1",
|
|
44
45
|
"@types/express": "^4.17.6",
|
|
45
46
|
"express": "^4.20.0",
|
|
46
47
|
"express-promise-router": "^4.1.0",
|