@oneuptime/common 12.0.3 → 12.0.4
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/Models/DatabaseModels/CephCluster.ts +14 -0
- package/Models/DatabaseModels/CodeRepository.ts +14 -6
- package/Models/DatabaseModels/DockerHost.ts +14 -0
- package/Models/DatabaseModels/GlobalOidcProject.ts +18 -0
- package/Models/DatabaseModels/GlobalSsoProject.ts +18 -0
- package/Models/DatabaseModels/IoTFleet.ts +14 -0
- package/Models/DatabaseModels/KubernetesCluster.ts +14 -0
- package/Models/DatabaseModels/NetworkDevice.ts +14 -0
- package/Models/DatabaseModels/NetworkInterface.ts +18 -0
- package/Models/DatabaseModels/Project.ts +16 -2
- package/Models/DatabaseModels/ProxmoxCluster.ts +14 -0
- package/Models/DatabaseModels/Service.ts +30 -0
- package/Models/DatabaseModels/StatusPagePrivateUser.ts +30 -0
- package/Models/DatabaseModels/User.ts +30 -0
- package/Server/API/AIAgentDataAPI.ts +31 -0
- package/Server/API/DashboardAPI.ts +419 -12
- package/Server/API/GitHubAPI.ts +119 -283
- package/Server/API/UserAPI.ts +263 -1
- package/Server/EnvironmentConfig.ts +7 -3
- package/Server/Infrastructure/GlobalCache.ts +37 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786018109307-AddPerUserPasswordSalt.ts +21 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786023262402-WidenHashedStringColumnsForScrypt.ts +68 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786100000000-RestoreServiceLowerNameIndex.ts +100 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786200000000-RestoreDroppedUniqueIndexes.ts +214 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786300000000-QuarantineUnboundGitHubInstallations.ts +69 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
- package/Server/Services/AnalyticsDatabaseService.ts +72 -1
- package/Server/Services/CodeRepositoryService.ts +105 -2
- package/Server/Services/DatabaseService.ts +185 -2
- package/Server/Services/OpenTelemetryIngestService.ts +230 -26
- package/Server/Services/UserService.ts +184 -0
- package/Server/Utils/AI/Toolbox/CodeTools.ts +45 -4
- package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +13 -0
- package/Server/Utils/CodeRepository/GitHub/GitHub.ts +157 -4
- package/Server/Utils/CodeRepository/GitHub/GitHubInstallationBinding.ts +130 -0
- package/Server/Utils/PasswordHash.ts +306 -0
- package/Tests/App/Dashboard/OverviewCustomFields.test.tsx +333 -0
- package/Tests/App/Dashboard/UserCustomFields.test.tsx +392 -0
- package/Tests/Server/API/AIAgentDataRepositoryToken.test.ts +381 -0
- package/Tests/Server/API/DashboardPublicAttributeValuesAPI.test.ts +943 -0
- package/Tests/Server/API/DashboardPublicMetricsAggregateAPI.test.ts +1296 -0
- package/Tests/Server/API/DashboardPublicTemplatePayloads.test.ts +598 -0
- package/Tests/Server/API/GitHubAppInstallationBindingAPI.test.ts +539 -0
- package/Tests/Server/API/Helpers.ts +6 -1
- package/Tests/Server/API/UserProjectsAPI.test.ts +852 -0
- package/Tests/Server/Infrastructure/GlobalCache.test.ts +128 -0
- package/Tests/Server/Infrastructure/SemaphoreMutex.test.ts +215 -0
- package/Tests/Server/Services/AddPerUserPasswordSaltMigration.test.ts +178 -0
- package/Tests/Server/Services/AnalyticsDatabasePaginationStability.test.ts +582 -0
- package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +5 -0
- package/Tests/Server/Services/CodeRepositoryInstallationBinding.test.ts +305 -0
- package/Tests/Server/Services/CodeRepositoryResolutionBinding.test.ts +147 -0
- package/Tests/Server/Services/DatabaseServicePerUserPasswordSalt.test.ts +870 -0
- package/Tests/Server/Services/OpenTelemetryServiceResolutionCache.test.ts +568 -0
- package/Tests/Server/Services/RestoreDroppedUniqueIndexesMigration.test.ts +386 -0
- package/Tests/Server/Services/RestoreServiceLowerNameIndexMigration.test.ts +240 -0
- package/Tests/Server/Services/UserServiceFirstMasterAdminElection.test.ts +885 -0
- package/Tests/Server/Services/WidenHashedStringColumnsForScryptMigration.test.ts +220 -0
- package/Tests/Server/Utils/AI/CodeTools.test.ts +47 -1
- package/Tests/Server/Utils/AI/CodeWriteTools.test.ts +10 -0
- package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +120 -0
- package/Tests/Server/Utils/CodeRepository/GitHubInstallationBinding.test.ts +292 -0
- package/Tests/Server/Utils/GitHubInstallationOwnershipVerification.test.ts +340 -0
- package/Tests/Server/Utils/GitHubWebhookAndTreeCacheIsolation.test.ts +250 -0
- package/Tests/Server/Utils/PasswordHash.test.ts +555 -0
- package/Tests/Types/Database/ColumnLength.test.ts +7 -1
- package/Tests/Types/HashedStringPerUserSalt.test.ts +476 -0
- package/Tests/Types/Monitor/DockerAlertTemplates.test.ts +293 -0
- package/Tests/Types/Monitor/HostAlertTemplates.test.ts +249 -0
- package/Tests/Types/Monitor/IotAlertTemplates.test.ts +320 -0
- package/Tests/Types/Monitor/PodmanAlertTemplates.test.ts +271 -0
- package/Tests/UI/Components/CustomFields/CustomFieldsDetail.test.tsx +696 -0
- package/Tests/UI/Utils/UserProjectsModelAPI.test.ts +714 -0
- package/Tests/Utils/TeamMembersByProject.test.ts +655 -0
- package/Types/Database/ColumnLength.ts +9 -1
- package/Types/Database/TableColumn.ts +11 -0
- package/Types/Database/UnsynchronizedIndex.ts +48 -0
- package/Types/HashedString.ts +139 -4
- package/UI/Components/CustomFields/CustomFieldsDetail.tsx +85 -11
- package/UI/Components/Navbar/NavBar.tsx +12 -2
- package/UI/Components/Navbar/NavBarMenuModal.tsx +19 -7
- package/UI/Utils/ModelAPI/UserProjectsModelAPI.ts +257 -0
- package/Utils/TeamMembersByProject.ts +237 -0
- package/build/dist/Models/DatabaseModels/CephCluster.js +16 -1
- package/build/dist/Models/DatabaseModels/CephCluster.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CodeRepository.js +14 -6
- package/build/dist/Models/DatabaseModels/CodeRepository.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DockerHost.js +16 -1
- package/build/dist/Models/DatabaseModels/DockerHost.js.map +1 -1
- package/build/dist/Models/DatabaseModels/GlobalOidcProject.js +16 -1
- package/build/dist/Models/DatabaseModels/GlobalOidcProject.js.map +1 -1
- package/build/dist/Models/DatabaseModels/GlobalSsoProject.js +16 -1
- package/build/dist/Models/DatabaseModels/GlobalSsoProject.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IoTFleet.js +16 -1
- package/build/dist/Models/DatabaseModels/IoTFleet.js.map +1 -1
- package/build/dist/Models/DatabaseModels/KubernetesCluster.js +16 -1
- package/build/dist/Models/DatabaseModels/KubernetesCluster.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDevice.js +16 -1
- package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkInterface.js +16 -1
- package/build/dist/Models/DatabaseModels/NetworkInterface.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Project.js +16 -2
- package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ProxmoxCluster.js +16 -1
- package/build/dist/Models/DatabaseModels/ProxmoxCluster.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Service.js +28 -1
- package/build/dist/Models/DatabaseModels/Service.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPagePrivateUser.js +32 -0
- package/build/dist/Models/DatabaseModels/StatusPagePrivateUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/User.js +32 -0
- package/build/dist/Models/DatabaseModels/User.js.map +1 -1
- package/build/dist/Server/API/AIAgentDataAPI.js +21 -2
- package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
- package/build/dist/Server/API/DashboardAPI.js +304 -10
- package/build/dist/Server/API/DashboardAPI.js.map +1 -1
- package/build/dist/Server/API/GitHubAPI.js +94 -167
- package/build/dist/Server/API/GitHubAPI.js.map +1 -1
- package/build/dist/Server/API/UserAPI.js +187 -2
- package/build/dist/Server/API/UserAPI.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +7 -3
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/GlobalCache.js +29 -0
- package/build/dist/Server/Infrastructure/GlobalCache.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786018109307-AddPerUserPasswordSalt.js +14 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786018109307-AddPerUserPasswordSalt.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786023262402-WidenHashedStringColumnsForScrypt.js +59 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786023262402-WidenHashedStringColumnsForScrypt.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786100000000-RestoreServiceLowerNameIndex.js +93 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786100000000-RestoreServiceLowerNameIndex.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786200000000-RestoreDroppedUniqueIndexes.js +101 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786200000000-RestoreDroppedUniqueIndexes.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786300000000-QuarantineUnboundGitHubInstallations.js +66 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786300000000-QuarantineUnboundGitHubInstallations.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js +57 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/CodeRepositoryService.js +90 -2
- package/build/dist/Server/Services/CodeRepositoryService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +160 -2
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +155 -25
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +165 -0
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/CodeTools.js +31 -1
- package/build/dist/Server/Utils/AI/Toolbox/CodeTools.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +13 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js +126 -4
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubInstallationBinding.js +136 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubInstallationBinding.js.map +1 -0
- package/build/dist/Server/Utils/PasswordHash.js +237 -0
- package/build/dist/Server/Utils/PasswordHash.js.map +1 -0
- package/build/dist/Types/Database/ColumnLength.js +9 -1
- package/build/dist/Types/Database/ColumnLength.js.map +1 -1
- package/build/dist/Types/Database/TableColumn.js.map +1 -1
- package/build/dist/Types/Database/UnsynchronizedIndex.js +46 -0
- package/build/dist/Types/Database/UnsynchronizedIndex.js.map +1 -0
- package/build/dist/Types/HashedString.js +95 -5
- package/build/dist/Types/HashedString.js.map +1 -1
- package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js +51 -10
- package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBar.js +3 -1
- package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +19 -7
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
- package/build/dist/UI/Utils/ModelAPI/UserProjectsModelAPI.js +156 -0
- package/build/dist/UI/Utils/ModelAPI/UserProjectsModelAPI.js.map +1 -0
- package/build/dist/Utils/TeamMembersByProject.js +145 -0
- package/build/dist/Utils/TeamMembersByProject.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
export default class TeamMembersByProject {
|
|
2
|
+
/**
|
|
3
|
+
* The project a membership is grouped under. Null when the membership carries
|
|
4
|
+
* no project at all - those rows are never merged, because merging them would
|
|
5
|
+
* put memberships of unrelated projects on one line.
|
|
6
|
+
*/
|
|
7
|
+
static getGroupKey(teamMember) {
|
|
8
|
+
var _a, _b, _c;
|
|
9
|
+
const projectId = ((_a = teamMember.projectId) === null || _a === void 0 ? void 0 : _a.toString()) ||
|
|
10
|
+
((_c = (_b = teamMember.project) === null || _b === void 0 ? void 0 : _b._id) === null || _c === void 0 ? void 0 : _c.toString()) ||
|
|
11
|
+
"";
|
|
12
|
+
return projectId || null;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The name this row reads and sorts under. Falls back to the project id so a
|
|
16
|
+
* row whose project could not be joined still lands somewhere deterministic
|
|
17
|
+
* rather than sorting as a blank.
|
|
18
|
+
*/
|
|
19
|
+
static getProjectName(row) {
|
|
20
|
+
var _a, _b, _c, _d, _e;
|
|
21
|
+
return (((_b = (_a = row.project) === null || _a === void 0 ? void 0 : _a.name) === null || _b === void 0 ? void 0 : _b.toString()) ||
|
|
22
|
+
((_c = row.projectId) === null || _c === void 0 ? void 0 : _c.toString()) ||
|
|
23
|
+
((_e = (_d = row.project) === null || _d === void 0 ? void 0 : _d._id) === null || _e === void 0 ? void 0 : _e.toString()) ||
|
|
24
|
+
"");
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* One row per project, in the order each project was first seen. The input
|
|
28
|
+
* order is whatever the caller sorted the memberships by, so first-seen order
|
|
29
|
+
* keeps that sort intact.
|
|
30
|
+
*/
|
|
31
|
+
static groupByProject(teamMembers) {
|
|
32
|
+
const rowsByGroupKey = new Map();
|
|
33
|
+
const rows = [];
|
|
34
|
+
/*
|
|
35
|
+
* Which teams are already on a row. Tracked separately rather than
|
|
36
|
+
* re-derived from `teams`, because a membership identifies its team by
|
|
37
|
+
* `teamId` while the team object it carries identifies itself by `_id`, and
|
|
38
|
+
* either one can be missing from a given select.
|
|
39
|
+
*/
|
|
40
|
+
const teamKeysByRow = new Map();
|
|
41
|
+
for (const teamMember of teamMembers) {
|
|
42
|
+
const groupKey = this.getGroupKey(teamMember);
|
|
43
|
+
let row = groupKey
|
|
44
|
+
? rowsByGroupKey.get(groupKey)
|
|
45
|
+
: undefined;
|
|
46
|
+
if (!row) {
|
|
47
|
+
row = {
|
|
48
|
+
id: undefined,
|
|
49
|
+
projectId: teamMember.projectId || undefined,
|
|
50
|
+
project: teamMember.project || undefined,
|
|
51
|
+
teams: [],
|
|
52
|
+
teamMemberIds: [],
|
|
53
|
+
hasAcceptedInvitation: false,
|
|
54
|
+
pendingTeamCount: 0,
|
|
55
|
+
joinedAt: undefined,
|
|
56
|
+
};
|
|
57
|
+
teamKeysByRow.set(row, new Set());
|
|
58
|
+
if (groupKey) {
|
|
59
|
+
rowsByGroupKey.set(groupKey, row);
|
|
60
|
+
}
|
|
61
|
+
rows.push(row);
|
|
62
|
+
}
|
|
63
|
+
this.addMembershipToRow(row, teamMember, teamKeysByRow.get(row));
|
|
64
|
+
}
|
|
65
|
+
for (const row of rows) {
|
|
66
|
+
this.finalizeRow(row);
|
|
67
|
+
}
|
|
68
|
+
return rows;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Alphabetical by project name, case-insensitively. Rows with no name at all
|
|
72
|
+
* sort last so the list does not open on a run of blanks.
|
|
73
|
+
*
|
|
74
|
+
* Returns a new array; the input is left alone.
|
|
75
|
+
*/
|
|
76
|
+
static sortByProjectName(rows) {
|
|
77
|
+
return [...rows].sort((a, b) => {
|
|
78
|
+
const nameA = this.getProjectName(a).toLowerCase();
|
|
79
|
+
const nameB = this.getProjectName(b).toLowerCase();
|
|
80
|
+
if (!nameA && !nameB) {
|
|
81
|
+
return 0;
|
|
82
|
+
}
|
|
83
|
+
if (!nameA) {
|
|
84
|
+
return 1;
|
|
85
|
+
}
|
|
86
|
+
if (!nameB) {
|
|
87
|
+
return -1;
|
|
88
|
+
}
|
|
89
|
+
return nameA.localeCompare(nameB);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
static addMembershipToRow(row, teamMember, teamKeys) {
|
|
93
|
+
var _a, _b, _c, _d;
|
|
94
|
+
if (teamMember.hasAcceptedInvitation) {
|
|
95
|
+
row.hasAcceptedInvitation = true;
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
row.pendingTeamCount = row.pendingTeamCount + 1;
|
|
99
|
+
}
|
|
100
|
+
/*
|
|
101
|
+
* A later membership can carry the joined project when the first one did
|
|
102
|
+
* not (different selects, or a nullified relation), so fill in whatever is
|
|
103
|
+
* still missing rather than trusting the first membership seen.
|
|
104
|
+
*/
|
|
105
|
+
if (!row.project && teamMember.project) {
|
|
106
|
+
row.project = teamMember.project;
|
|
107
|
+
}
|
|
108
|
+
if (!row.projectId && teamMember.projectId) {
|
|
109
|
+
row.projectId = teamMember.projectId;
|
|
110
|
+
}
|
|
111
|
+
const membershipId = ((_a = teamMember._id) === null || _a === void 0 ? void 0 : _a.toString()) || "";
|
|
112
|
+
if (membershipId) {
|
|
113
|
+
row.teamMemberIds.push(membershipId);
|
|
114
|
+
}
|
|
115
|
+
const createdAt = teamMember.createdAt;
|
|
116
|
+
if (createdAt && (!row.joinedAt || createdAt < row.joinedAt)) {
|
|
117
|
+
row.joinedAt = createdAt;
|
|
118
|
+
}
|
|
119
|
+
const team = teamMember.team;
|
|
120
|
+
if (!team) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
const teamKey = ((_b = teamMember.teamId) === null || _b === void 0 ? void 0 : _b.toString()) ||
|
|
124
|
+
((_c = team._id) === null || _c === void 0 ? void 0 : _c.toString()) ||
|
|
125
|
+
((_d = team.name) === null || _d === void 0 ? void 0 : _d.toString()) ||
|
|
126
|
+
"";
|
|
127
|
+
if (!teamKey || teamKeys.has(teamKey)) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
teamKeys.add(teamKey);
|
|
131
|
+
row.teams.push(team);
|
|
132
|
+
}
|
|
133
|
+
static finalizeRow(row) {
|
|
134
|
+
row.teams.sort((a, b) => {
|
|
135
|
+
var _a, _b;
|
|
136
|
+
return (((_a = a.name) === null || _a === void 0 ? void 0 : _a.toString()) || "")
|
|
137
|
+
.toLowerCase()
|
|
138
|
+
.localeCompare((((_b = b.name) === null || _b === void 0 ? void 0 : _b.toString()) || "").toLowerCase());
|
|
139
|
+
});
|
|
140
|
+
if (row.teamMemberIds.length > 0) {
|
|
141
|
+
row.id = [...row.teamMemberIds].sort()[0];
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=TeamMembersByProject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TeamMembersByProject.js","sourceRoot":"","sources":["../../../Utils/TeamMembersByProject.ts"],"names":[],"mappings":"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"}
|