@oneuptime/common 10.0.30 → 10.0.33

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.
Files changed (130) hide show
  1. package/Models/AnalyticsModels/ExceptionInstance.ts +29 -4
  2. package/Models/AnalyticsModels/Log.ts +110 -4
  3. package/Models/AnalyticsModels/Metric.ts +16 -9
  4. package/Models/AnalyticsModels/MonitorLog.ts +4 -2
  5. package/Models/AnalyticsModels/Span.ts +79 -6
  6. package/Models/DatabaseModels/Index.ts +8 -0
  7. package/Models/DatabaseModels/LogDropFilter.ts +480 -0
  8. package/Models/DatabaseModels/LogPipeline.ts +412 -0
  9. package/Models/DatabaseModels/LogPipelineProcessor.ts +430 -0
  10. package/Models/DatabaseModels/LogScrubRule.ts +516 -0
  11. package/Server/API/TelemetryAPI.ts +261 -0
  12. package/Server/Infrastructure/Postgres/SchemaMigrations/1773402621107-MigrationName.ts +131 -0
  13. package/Server/Infrastructure/Postgres/SchemaMigrations/1773414578773-MigrationName.ts +79 -0
  14. package/Server/Infrastructure/Postgres/SchemaMigrations/1773500000000-MigrationName.ts +41 -0
  15. package/Server/Infrastructure/Postgres/SchemaMigrations/1773676206197-MigrationName.ts +57 -0
  16. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
  17. package/Server/Services/AnalyticsDatabaseService.ts +61 -0
  18. package/Server/Services/LogAggregationService.ts +238 -1
  19. package/Server/Services/LogDropFilterService.ts +10 -0
  20. package/Server/Services/LogPipelineProcessorService.ts +10 -0
  21. package/Server/Services/LogPipelineService.ts +10 -0
  22. package/Server/Services/LogScrubRuleService.ts +10 -0
  23. package/Server/Services/TelemetryAttributeService.ts +4 -6
  24. package/Server/Utils/AnalyticsDatabase/Statement.ts +15 -1
  25. package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +126 -11
  26. package/Tests/Server/Services/LogAggregationService.test.ts +3 -2
  27. package/Types/AnalyticsDatabase/AnalyticsTableName.ts +9 -0
  28. package/Types/AnalyticsDatabase/TableColumnType.ts +4 -0
  29. package/Types/Date.ts +22 -0
  30. package/Types/Log/LogDropFilterAction.ts +6 -0
  31. package/Types/Log/LogPipelineProcessorType.ts +44 -0
  32. package/Types/Log/LogScrubAction.ts +7 -0
  33. package/Types/Log/LogScrubPatternType.ts +10 -0
  34. package/Types/Permission.ts +174 -0
  35. package/UI/Components/LogsViewer/LogsViewer.tsx +152 -4
  36. package/UI/Components/LogsViewer/components/KeyboardShortcutsHelp.tsx +92 -0
  37. package/UI/Components/LogsViewer/components/LogDetailsPanel.tsx +332 -117
  38. package/UI/Components/LogsViewer/components/LogSearchBar.tsx +294 -274
  39. package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +513 -234
  40. package/UI/Components/LogsViewer/components/LogsFilterCard.tsx +37 -29
  41. package/UI/Components/LogsViewer/components/LogsTable.tsx +6 -1
  42. package/UI/Components/LogsViewer/components/LogsViewerToolbar.tsx +106 -0
  43. package/UI/Utils/LogExport.ts +160 -0
  44. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js +28 -4
  45. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js.map +1 -1
  46. package/build/dist/Models/AnalyticsModels/Log.js +97 -4
  47. package/build/dist/Models/AnalyticsModels/Log.js.map +1 -1
  48. package/build/dist/Models/AnalyticsModels/Metric.js +16 -9
  49. package/build/dist/Models/AnalyticsModels/Metric.js.map +1 -1
  50. package/build/dist/Models/AnalyticsModels/MonitorLog.js +4 -2
  51. package/build/dist/Models/AnalyticsModels/MonitorLog.js.map +1 -1
  52. package/build/dist/Models/AnalyticsModels/Span.js +73 -6
  53. package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
  54. package/build/dist/Models/DatabaseModels/Index.js +8 -0
  55. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  56. package/build/dist/Models/DatabaseModels/LogDropFilter.js +508 -0
  57. package/build/dist/Models/DatabaseModels/LogDropFilter.js.map +1 -0
  58. package/build/dist/Models/DatabaseModels/LogPipeline.js +438 -0
  59. package/build/dist/Models/DatabaseModels/LogPipeline.js.map +1 -0
  60. package/build/dist/Models/DatabaseModels/LogPipelineProcessor.js +452 -0
  61. package/build/dist/Models/DatabaseModels/LogPipelineProcessor.js.map +1 -0
  62. package/build/dist/Models/DatabaseModels/LogScrubRule.js +545 -0
  63. package/build/dist/Models/DatabaseModels/LogScrubRule.js.map +1 -0
  64. package/build/dist/Server/API/TelemetryAPI.js +155 -0
  65. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  66. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1773402621107-MigrationName.js +52 -0
  67. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1773402621107-MigrationName.js.map +1 -0
  68. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1773414578773-MigrationName.js +34 -0
  69. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1773414578773-MigrationName.js.map +1 -0
  70. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1773500000000-MigrationName.js +22 -0
  71. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1773500000000-MigrationName.js.map +1 -0
  72. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1773676206197-MigrationName.js +26 -0
  73. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1773676206197-MigrationName.js.map +1 -0
  74. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
  75. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  76. package/build/dist/Server/Services/AnalyticsDatabaseService.js +30 -0
  77. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  78. package/build/dist/Server/Services/LogAggregationService.js +188 -1
  79. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  80. package/build/dist/Server/Services/LogDropFilterService.js +9 -0
  81. package/build/dist/Server/Services/LogDropFilterService.js.map +1 -0
  82. package/build/dist/Server/Services/LogPipelineProcessorService.js +9 -0
  83. package/build/dist/Server/Services/LogPipelineProcessorService.js.map +1 -0
  84. package/build/dist/Server/Services/LogPipelineService.js +9 -0
  85. package/build/dist/Server/Services/LogPipelineService.js.map +1 -0
  86. package/build/dist/Server/Services/LogScrubRuleService.js +9 -0
  87. package/build/dist/Server/Services/LogScrubRuleService.js.map +1 -0
  88. package/build/dist/Server/Services/TelemetryAttributeService.js +4 -6
  89. package/build/dist/Server/Services/TelemetryAttributeService.js.map +1 -1
  90. package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js +13 -1
  91. package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js.map +1 -1
  92. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +89 -2
  93. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
  94. package/build/dist/Tests/Server/Services/LogAggregationService.test.js +3 -2
  95. package/build/dist/Tests/Server/Services/LogAggregationService.test.js.map +1 -1
  96. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +10 -0
  97. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js.map +1 -0
  98. package/build/dist/Types/AnalyticsDatabase/TableColumnType.js +4 -0
  99. package/build/dist/Types/AnalyticsDatabase/TableColumnType.js.map +1 -1
  100. package/build/dist/Types/Date.js +16 -0
  101. package/build/dist/Types/Date.js.map +1 -1
  102. package/build/dist/Types/Log/LogDropFilterAction.js +7 -0
  103. package/build/dist/Types/Log/LogDropFilterAction.js.map +1 -0
  104. package/build/dist/Types/Log/LogPipelineProcessorType.js +9 -0
  105. package/build/dist/Types/Log/LogPipelineProcessorType.js.map +1 -0
  106. package/build/dist/Types/Log/LogScrubAction.js +8 -0
  107. package/build/dist/Types/Log/LogScrubAction.js.map +1 -0
  108. package/build/dist/Types/Log/LogScrubPatternType.js +11 -0
  109. package/build/dist/Types/Log/LogScrubPatternType.js.map +1 -0
  110. package/build/dist/Types/Permission.js +152 -0
  111. package/build/dist/Types/Permission.js.map +1 -1
  112. package/build/dist/UI/Components/LogsViewer/LogsViewer.js +124 -11
  113. package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
  114. package/build/dist/UI/Components/LogsViewer/components/KeyboardShortcutsHelp.js +36 -0
  115. package/build/dist/UI/Components/LogsViewer/components/KeyboardShortcutsHelp.js.map +1 -0
  116. package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js +114 -4
  117. package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js.map +1 -1
  118. package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js +17 -5
  119. package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js.map +1 -1
  120. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js +229 -122
  121. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
  122. package/build/dist/UI/Components/LogsViewer/components/LogsFilterCard.js +5 -4
  123. package/build/dist/UI/Components/LogsViewer/components/LogsFilterCard.js.map +1 -1
  124. package/build/dist/UI/Components/LogsViewer/components/LogsTable.js +4 -1
  125. package/build/dist/UI/Components/LogsViewer/components/LogsTable.js.map +1 -1
  126. package/build/dist/UI/Components/LogsViewer/components/LogsViewerToolbar.js +28 -0
  127. package/build/dist/UI/Components/LogsViewer/components/LogsViewerToolbar.js.map +1 -1
  128. package/build/dist/UI/Utils/LogExport.js +129 -0
  129. package/build/dist/UI/Utils/LogExport.js.map +1 -0
  130. package/package.json +1 -1
@@ -0,0 +1,452 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import Project from "./Project";
11
+ import User from "./User";
12
+ import LogPipeline from "./LogPipeline";
13
+ import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
14
+ import Route from "../../Types/API/Route";
15
+ import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
16
+ import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
17
+ import TableBillingAccessControl from "../../Types/Database/AccessControl/TableBillingAccessControl";
18
+ import ColumnLength from "../../Types/Database/ColumnLength";
19
+ import ColumnType from "../../Types/Database/ColumnType";
20
+ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
21
+ import EnableDocumentation from "../../Types/Database/EnableDocumentation";
22
+ import TableColumn from "../../Types/Database/TableColumn";
23
+ import TableColumnType from "../../Types/Database/TableColumnType";
24
+ import TableMetadata from "../../Types/Database/TableMetadata";
25
+ import TenantColumn from "../../Types/Database/TenantColumn";
26
+ import IconProp from "../../Types/Icon/IconProp";
27
+ import ObjectID from "../../Types/ObjectID";
28
+ import Permission from "../../Types/Permission";
29
+ import { PlanType } from "../../Types/Billing/SubscriptionPlan";
30
+ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
31
+ let LogPipelineProcessor = class LogPipelineProcessor extends BaseModel {
32
+ constructor() {
33
+ super(...arguments);
34
+ this.project = undefined;
35
+ this.projectId = undefined;
36
+ this.logPipeline = undefined;
37
+ this.logPipelineId = undefined;
38
+ this.name = undefined;
39
+ this.processorType = undefined;
40
+ this.configuration = undefined;
41
+ this.isEnabled = undefined;
42
+ this.sortOrder = undefined;
43
+ this.createdByUser = undefined;
44
+ this.createdByUserId = undefined;
45
+ }
46
+ };
47
+ __decorate([
48
+ ColumnAccessControl({
49
+ create: [
50
+ Permission.ProjectOwner,
51
+ Permission.ProjectAdmin,
52
+ Permission.CreateProjectLogPipelineProcessor,
53
+ ],
54
+ read: [
55
+ Permission.ProjectOwner,
56
+ Permission.ProjectAdmin,
57
+ Permission.ProjectMember,
58
+ Permission.ReadProjectLogPipelineProcessor,
59
+ Permission.ReadAllProjectResources,
60
+ ],
61
+ update: [],
62
+ }),
63
+ TableColumn({
64
+ manyToOneRelationColumn: "projectId",
65
+ type: TableColumnType.Entity,
66
+ modelType: Project,
67
+ title: "Project",
68
+ description: "Relation to the project this log pipeline processor belongs to.",
69
+ }),
70
+ ManyToOne(() => {
71
+ return Project;
72
+ }, {
73
+ eager: false,
74
+ nullable: true,
75
+ onDelete: "CASCADE",
76
+ orphanedRowAction: "nullify",
77
+ }),
78
+ JoinColumn({ name: "projectId" }),
79
+ __metadata("design:type", Project)
80
+ ], LogPipelineProcessor.prototype, "project", void 0);
81
+ __decorate([
82
+ ColumnAccessControl({
83
+ create: [
84
+ Permission.ProjectOwner,
85
+ Permission.ProjectAdmin,
86
+ Permission.CreateProjectLogPipelineProcessor,
87
+ ],
88
+ read: [
89
+ Permission.ProjectOwner,
90
+ Permission.ProjectAdmin,
91
+ Permission.ProjectMember,
92
+ Permission.ReadProjectLogPipelineProcessor,
93
+ Permission.ReadAllProjectResources,
94
+ ],
95
+ update: [],
96
+ }),
97
+ Index(),
98
+ TableColumn({
99
+ type: TableColumnType.ObjectID,
100
+ required: true,
101
+ canReadOnRelationQuery: true,
102
+ title: "Project ID",
103
+ description: "ID of the project this log pipeline processor belongs to.",
104
+ }),
105
+ Column({
106
+ type: ColumnType.ObjectID,
107
+ nullable: false,
108
+ transformer: ObjectID.getDatabaseTransformer(),
109
+ }),
110
+ __metadata("design:type", ObjectID)
111
+ ], LogPipelineProcessor.prototype, "projectId", void 0);
112
+ __decorate([
113
+ ColumnAccessControl({
114
+ create: [
115
+ Permission.ProjectOwner,
116
+ Permission.ProjectAdmin,
117
+ Permission.CreateProjectLogPipelineProcessor,
118
+ ],
119
+ read: [
120
+ Permission.ProjectOwner,
121
+ Permission.ProjectAdmin,
122
+ Permission.ProjectMember,
123
+ Permission.ReadProjectLogPipelineProcessor,
124
+ Permission.ReadAllProjectResources,
125
+ ],
126
+ update: [],
127
+ }),
128
+ TableColumn({
129
+ manyToOneRelationColumn: "logPipelineId",
130
+ type: TableColumnType.Entity,
131
+ modelType: LogPipeline,
132
+ title: "Log Pipeline",
133
+ description: "Relation to the log pipeline this processor belongs to.",
134
+ }),
135
+ ManyToOne(() => {
136
+ return LogPipeline;
137
+ }, {
138
+ eager: false,
139
+ nullable: false,
140
+ onDelete: "CASCADE",
141
+ orphanedRowAction: "delete",
142
+ }),
143
+ JoinColumn({ name: "logPipelineId" }),
144
+ __metadata("design:type", LogPipeline)
145
+ ], LogPipelineProcessor.prototype, "logPipeline", void 0);
146
+ __decorate([
147
+ ColumnAccessControl({
148
+ create: [
149
+ Permission.ProjectOwner,
150
+ Permission.ProjectAdmin,
151
+ Permission.CreateProjectLogPipelineProcessor,
152
+ ],
153
+ read: [
154
+ Permission.ProjectOwner,
155
+ Permission.ProjectAdmin,
156
+ Permission.ProjectMember,
157
+ Permission.ReadProjectLogPipelineProcessor,
158
+ Permission.ReadAllProjectResources,
159
+ ],
160
+ update: [],
161
+ }),
162
+ Index(),
163
+ TableColumn({
164
+ type: TableColumnType.ObjectID,
165
+ required: true,
166
+ canReadOnRelationQuery: true,
167
+ title: "Log Pipeline ID",
168
+ description: "ID of the log pipeline this processor belongs to.",
169
+ }),
170
+ Column({
171
+ type: ColumnType.ObjectID,
172
+ nullable: false,
173
+ transformer: ObjectID.getDatabaseTransformer(),
174
+ }),
175
+ __metadata("design:type", ObjectID)
176
+ ], LogPipelineProcessor.prototype, "logPipelineId", void 0);
177
+ __decorate([
178
+ ColumnAccessControl({
179
+ create: [
180
+ Permission.ProjectOwner,
181
+ Permission.ProjectAdmin,
182
+ Permission.CreateProjectLogPipelineProcessor,
183
+ ],
184
+ read: [
185
+ Permission.ProjectOwner,
186
+ Permission.ProjectAdmin,
187
+ Permission.ProjectMember,
188
+ Permission.ReadProjectLogPipelineProcessor,
189
+ Permission.ReadAllProjectResources,
190
+ ],
191
+ update: [
192
+ Permission.ProjectOwner,
193
+ Permission.ProjectAdmin,
194
+ Permission.EditProjectLogPipelineProcessor,
195
+ ],
196
+ }),
197
+ TableColumn({
198
+ required: true,
199
+ type: TableColumnType.Name,
200
+ canReadOnRelationQuery: true,
201
+ title: "Name",
202
+ description: "Friendly name for this processor.",
203
+ }),
204
+ Column({
205
+ nullable: false,
206
+ type: ColumnType.Name,
207
+ length: ColumnLength.Name,
208
+ }),
209
+ __metadata("design:type", String)
210
+ ], LogPipelineProcessor.prototype, "name", void 0);
211
+ __decorate([
212
+ ColumnAccessControl({
213
+ create: [
214
+ Permission.ProjectOwner,
215
+ Permission.ProjectAdmin,
216
+ Permission.CreateProjectLogPipelineProcessor,
217
+ ],
218
+ read: [
219
+ Permission.ProjectOwner,
220
+ Permission.ProjectAdmin,
221
+ Permission.ProjectMember,
222
+ Permission.ReadProjectLogPipelineProcessor,
223
+ Permission.ReadAllProjectResources,
224
+ ],
225
+ update: [
226
+ Permission.ProjectOwner,
227
+ Permission.ProjectAdmin,
228
+ Permission.EditProjectLogPipelineProcessor,
229
+ ],
230
+ }),
231
+ TableColumn({
232
+ required: true,
233
+ type: TableColumnType.ShortText,
234
+ canReadOnRelationQuery: true,
235
+ title: "Processor Type",
236
+ description: "The type of processor: GrokParser, AttributeRemapper, SeverityRemapper, or CategoryProcessor.",
237
+ }),
238
+ Column({
239
+ nullable: false,
240
+ type: ColumnType.ShortText,
241
+ length: ColumnLength.ShortText,
242
+ }),
243
+ __metadata("design:type", String)
244
+ ], LogPipelineProcessor.prototype, "processorType", void 0);
245
+ __decorate([
246
+ ColumnAccessControl({
247
+ create: [
248
+ Permission.ProjectOwner,
249
+ Permission.ProjectAdmin,
250
+ Permission.CreateProjectLogPipelineProcessor,
251
+ ],
252
+ read: [
253
+ Permission.ProjectOwner,
254
+ Permission.ProjectAdmin,
255
+ Permission.ProjectMember,
256
+ Permission.ReadProjectLogPipelineProcessor,
257
+ Permission.ReadAllProjectResources,
258
+ ],
259
+ update: [
260
+ Permission.ProjectOwner,
261
+ Permission.ProjectAdmin,
262
+ Permission.EditProjectLogPipelineProcessor,
263
+ ],
264
+ }),
265
+ TableColumn({
266
+ title: "Configuration",
267
+ required: true,
268
+ type: TableColumnType.JSON,
269
+ canReadOnRelationQuery: true,
270
+ description: "Processor-specific configuration as JSON (e.g., grok pattern, source/target fields, mapping rules).",
271
+ }),
272
+ Column({
273
+ type: ColumnType.JSON,
274
+ nullable: false,
275
+ default: () => {
276
+ return "'{}'";
277
+ },
278
+ }),
279
+ __metadata("design:type", Object)
280
+ ], LogPipelineProcessor.prototype, "configuration", void 0);
281
+ __decorate([
282
+ ColumnAccessControl({
283
+ create: [
284
+ Permission.ProjectOwner,
285
+ Permission.ProjectAdmin,
286
+ Permission.CreateProjectLogPipelineProcessor,
287
+ ],
288
+ read: [
289
+ Permission.ProjectOwner,
290
+ Permission.ProjectAdmin,
291
+ Permission.ProjectMember,
292
+ Permission.ReadProjectLogPipelineProcessor,
293
+ Permission.ReadAllProjectResources,
294
+ ],
295
+ update: [
296
+ Permission.ProjectOwner,
297
+ Permission.ProjectAdmin,
298
+ Permission.EditProjectLogPipelineProcessor,
299
+ ],
300
+ }),
301
+ Index(),
302
+ TableColumn({
303
+ required: true,
304
+ type: TableColumnType.Boolean,
305
+ canReadOnRelationQuery: true,
306
+ title: "Enabled",
307
+ description: "Whether this processor is active.",
308
+ defaultValue: true,
309
+ }),
310
+ Column({
311
+ nullable: false,
312
+ type: ColumnType.Boolean,
313
+ default: true,
314
+ }),
315
+ __metadata("design:type", Boolean)
316
+ ], LogPipelineProcessor.prototype, "isEnabled", void 0);
317
+ __decorate([
318
+ ColumnAccessControl({
319
+ create: [
320
+ Permission.ProjectOwner,
321
+ Permission.ProjectAdmin,
322
+ Permission.CreateProjectLogPipelineProcessor,
323
+ ],
324
+ read: [
325
+ Permission.ProjectOwner,
326
+ Permission.ProjectAdmin,
327
+ Permission.ProjectMember,
328
+ Permission.ReadProjectLogPipelineProcessor,
329
+ Permission.ReadAllProjectResources,
330
+ ],
331
+ update: [
332
+ Permission.ProjectOwner,
333
+ Permission.ProjectAdmin,
334
+ Permission.EditProjectLogPipelineProcessor,
335
+ ],
336
+ }),
337
+ TableColumn({
338
+ title: "Sort Order",
339
+ required: true,
340
+ type: TableColumnType.Number,
341
+ canReadOnRelationQuery: true,
342
+ description: "Determines the execution order of this processor within its pipeline.",
343
+ defaultValue: 0,
344
+ }),
345
+ Column({
346
+ type: ColumnType.Number,
347
+ nullable: false,
348
+ default: 0,
349
+ }),
350
+ __metadata("design:type", Number)
351
+ ], LogPipelineProcessor.prototype, "sortOrder", void 0);
352
+ __decorate([
353
+ ColumnAccessControl({
354
+ create: [],
355
+ read: [
356
+ Permission.ProjectOwner,
357
+ Permission.ProjectAdmin,
358
+ Permission.ProjectMember,
359
+ Permission.ReadProjectLogPipelineProcessor,
360
+ Permission.ReadAllProjectResources,
361
+ ],
362
+ update: [],
363
+ }),
364
+ TableColumn({
365
+ manyToOneRelationColumn: "createdByUserId",
366
+ type: TableColumnType.Entity,
367
+ modelType: User,
368
+ title: "Created By User",
369
+ description: "Relation to the user who created this log pipeline processor.",
370
+ }),
371
+ ManyToOne(() => {
372
+ return User;
373
+ }, {
374
+ eager: false,
375
+ nullable: true,
376
+ onDelete: "SET NULL",
377
+ orphanedRowAction: "nullify",
378
+ }),
379
+ JoinColumn({ name: "createdByUserId" }),
380
+ __metadata("design:type", User)
381
+ ], LogPipelineProcessor.prototype, "createdByUser", void 0);
382
+ __decorate([
383
+ ColumnAccessControl({
384
+ create: [],
385
+ read: [
386
+ Permission.ProjectOwner,
387
+ Permission.ProjectAdmin,
388
+ Permission.ProjectMember,
389
+ Permission.ReadProjectLogPipelineProcessor,
390
+ Permission.ReadAllProjectResources,
391
+ ],
392
+ update: [],
393
+ }),
394
+ TableColumn({
395
+ type: TableColumnType.ObjectID,
396
+ title: "Created By User ID",
397
+ description: "ID of the user who created this log pipeline processor.",
398
+ }),
399
+ Column({
400
+ type: ColumnType.ObjectID,
401
+ nullable: true,
402
+ transformer: ObjectID.getDatabaseTransformer(),
403
+ }),
404
+ __metadata("design:type", ObjectID)
405
+ ], LogPipelineProcessor.prototype, "createdByUserId", void 0);
406
+ LogPipelineProcessor = __decorate([
407
+ EnableDocumentation(),
408
+ TableBillingAccessControl({
409
+ create: PlanType.Free,
410
+ read: PlanType.Free,
411
+ update: PlanType.Free,
412
+ delete: PlanType.Free,
413
+ }),
414
+ TenantColumn("projectId"),
415
+ CrudApiEndpoint(new Route("/log-pipeline-processor")),
416
+ Entity({
417
+ name: "LogPipelineProcessor",
418
+ }),
419
+ TableMetadata({
420
+ tableName: "LogPipelineProcessor",
421
+ singularName: "Log Pipeline Processor",
422
+ pluralName: "Log Pipeline Processors",
423
+ icon: IconProp.Settings,
424
+ tableDescription: "Individual processors within a log pipeline that transform log data during ingestion.",
425
+ }),
426
+ TableAccessControl({
427
+ create: [
428
+ Permission.ProjectOwner,
429
+ Permission.ProjectAdmin,
430
+ Permission.CreateProjectLogPipelineProcessor,
431
+ ],
432
+ read: [
433
+ Permission.ProjectOwner,
434
+ Permission.ProjectAdmin,
435
+ Permission.ProjectMember,
436
+ Permission.ReadProjectLogPipelineProcessor,
437
+ Permission.ReadAllProjectResources,
438
+ ],
439
+ delete: [
440
+ Permission.ProjectOwner,
441
+ Permission.ProjectAdmin,
442
+ Permission.DeleteProjectLogPipelineProcessor,
443
+ ],
444
+ update: [
445
+ Permission.ProjectOwner,
446
+ Permission.ProjectAdmin,
447
+ Permission.EditProjectLogPipelineProcessor,
448
+ ],
449
+ })
450
+ ], LogPipelineProcessor);
451
+ export default LogPipelineProcessor;
452
+ //# sourceMappingURL=LogPipelineProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogPipelineProcessor.js","sourceRoot":"","sources":["../../../../Models/DatabaseModels/LogPipelineProcessor.ts"],"names":[],"mappings":"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"}