@serve.zone/gitops 2.13.1

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 (258) hide show
  1. package/.smartconfig.json +114 -0
  2. package/binary/gitops.ts +4 -0
  3. package/changelog.md +185 -0
  4. package/cli.child.js +4 -0
  5. package/cli.js +4 -0
  6. package/cli.ts.js +5 -0
  7. package/deno.json +10 -0
  8. package/dist_serve/bundle.js +36362 -0
  9. package/dist_serve/index.html +33 -0
  10. package/dist_ts/00_commitinfo_data.d.ts +8 -0
  11. package/dist_ts/00_commitinfo_data.js +9 -0
  12. package/dist_ts/cache/classes.cache.cleaner.d.ts +23 -0
  13. package/dist_ts/cache/classes.cache.cleaner.js +61 -0
  14. package/dist_ts/cache/classes.cached.document.d.ts +30 -0
  15. package/dist_ts/cache/classes.cached.document.js +101 -0
  16. package/dist_ts/cache/classes.cachedb.d.ts +22 -0
  17. package/dist_ts/cache/classes.cachedb.js +58 -0
  18. package/dist_ts/cache/classes.secrets.scan.service.d.ts +51 -0
  19. package/dist_ts/cache/classes.secrets.scan.service.js +237 -0
  20. package/dist_ts/cache/documents/classes.cached.project.d.ts +13 -0
  21. package/dist_ts/cache/documents/classes.cached.project.js +101 -0
  22. package/dist_ts/cache/documents/classes.cached.secret.d.ts +24 -0
  23. package/dist_ts/cache/documents/classes.cached.secret.js +158 -0
  24. package/dist_ts/cache/documents/index.d.ts +2 -0
  25. package/dist_ts/cache/documents/index.js +3 -0
  26. package/dist_ts/cache/index.d.ts +7 -0
  27. package/dist_ts/cache/index.js +6 -0
  28. package/dist_ts/classes/actionlog.d.ts +19 -0
  29. package/dist_ts/classes/actionlog.js +44 -0
  30. package/dist_ts/classes/connectionmanager.d.ts +57 -0
  31. package/dist_ts/classes/connectionmanager.js +247 -0
  32. package/dist_ts/classes/gitopsapp.d.ts +30 -0
  33. package/dist_ts/classes/gitopsapp.js +101 -0
  34. package/dist_ts/classes/jobmanager.d.ts +47 -0
  35. package/dist_ts/classes/jobmanager.js +301 -0
  36. package/dist_ts/classes/jobrunners/autobookstackdocs.runner.d.ts +29 -0
  37. package/dist_ts/classes/jobrunners/autobookstackdocs.runner.js +361 -0
  38. package/dist_ts/classes/jobrunners/base.jobrunner.d.ts +14 -0
  39. package/dist_ts/classes/jobrunners/base.jobrunner.js +3 -0
  40. package/dist_ts/classes/jobrunners/index.d.ts +5 -0
  41. package/dist_ts/classes/jobrunners/index.js +14 -0
  42. package/dist_ts/classes/managedsecrets.manager.d.ts +47 -0
  43. package/dist_ts/classes/managedsecrets.manager.js +247 -0
  44. package/dist_ts/classes/syncmanager.d.ts +189 -0
  45. package/dist_ts/classes/syncmanager.js +1787 -0
  46. package/dist_ts/index.d.ts +6 -0
  47. package/dist_ts/index.js +32 -0
  48. package/dist_ts/logging.d.ts +49 -0
  49. package/dist_ts/logging.js +134 -0
  50. package/dist_ts/opsserver/classes.opsserver.d.ts +25 -0
  51. package/dist_ts/opsserver/classes.opsserver.js +70 -0
  52. package/dist_ts/opsserver/handlers/actionlog.handler.d.ts +9 -0
  53. package/dist_ts/opsserver/handlers/actionlog.handler.js +24 -0
  54. package/dist_ts/opsserver/handlers/actions.handler.d.ts +9 -0
  55. package/dist_ts/opsserver/handlers/actions.handler.js +38 -0
  56. package/dist_ts/opsserver/handlers/admin.handler.d.ts +19 -0
  57. package/dist_ts/opsserver/handlers/admin.handler.js +96 -0
  58. package/dist_ts/opsserver/handlers/connections.handler.d.ts +10 -0
  59. package/dist_ts/opsserver/handlers/connections.handler.js +109 -0
  60. package/dist_ts/opsserver/handlers/groups.handler.d.ts +9 -0
  61. package/dist_ts/opsserver/handlers/groups.handler.js +24 -0
  62. package/dist_ts/opsserver/handlers/index.d.ts +13 -0
  63. package/dist_ts/opsserver/handlers/index.js +14 -0
  64. package/dist_ts/opsserver/handlers/jobs.handler.d.ts +16 -0
  65. package/dist_ts/opsserver/handlers/jobs.handler.js +146 -0
  66. package/dist_ts/opsserver/handlers/logs.handler.d.ts +9 -0
  67. package/dist_ts/opsserver/handlers/logs.handler.js +21 -0
  68. package/dist_ts/opsserver/handlers/managedsecrets.handler.d.ts +11 -0
  69. package/dist_ts/opsserver/handlers/managedsecrets.handler.js +110 -0
  70. package/dist_ts/opsserver/handlers/pipelines.handler.d.ts +31 -0
  71. package/dist_ts/opsserver/handlers/pipelines.handler.js +204 -0
  72. package/dist_ts/opsserver/handlers/projects.handler.d.ts +9 -0
  73. package/dist_ts/opsserver/handlers/projects.handler.js +24 -0
  74. package/dist_ts/opsserver/handlers/secrets.handler.d.ts +10 -0
  75. package/dist_ts/opsserver/handlers/secrets.handler.js +171 -0
  76. package/dist_ts/opsserver/handlers/sync.handler.d.ts +16 -0
  77. package/dist_ts/opsserver/handlers/sync.handler.js +166 -0
  78. package/dist_ts/opsserver/handlers/webhook.handler.d.ts +7 -0
  79. package/dist_ts/opsserver/handlers/webhook.handler.js +55 -0
  80. package/dist_ts/opsserver/helpers/guards.d.ts +5 -0
  81. package/dist_ts/opsserver/helpers/guards.js +12 -0
  82. package/dist_ts/opsserver/index.d.ts +1 -0
  83. package/dist_ts/opsserver/index.js +2 -0
  84. package/dist_ts/paths.d.ts +9 -0
  85. package/dist_ts/paths.js +13 -0
  86. package/dist_ts/plugins.d.ts +25 -0
  87. package/dist_ts/plugins.js +32 -0
  88. package/dist_ts/providers/classes.baseprovider.d.ts +51 -0
  89. package/dist_ts/providers/classes.baseprovider.js +17 -0
  90. package/dist_ts/providers/classes.giteaprovider.d.ts +40 -0
  91. package/dist_ts/providers/classes.giteaprovider.js +224 -0
  92. package/dist_ts/providers/classes.gitlabprovider.d.ts +39 -0
  93. package/dist_ts/providers/classes.gitlabprovider.js +207 -0
  94. package/dist_ts/providers/index.d.ts +3 -0
  95. package/dist_ts/providers/index.js +4 -0
  96. package/dist_ts/storage/classes.storagemanager.d.ts +33 -0
  97. package/dist_ts/storage/classes.storagemanager.js +135 -0
  98. package/dist_ts/storage/index.d.ts +2 -0
  99. package/dist_ts/storage/index.js +2 -0
  100. package/dist_ts/timers.d.ts +4 -0
  101. package/dist_ts/timers.js +24 -0
  102. package/dist_ts_bundled/bundle.d.ts +4 -0
  103. package/dist_ts_bundled/bundle.js +12 -0
  104. package/dist_ts_interfaces/data/actionlog.d.ts +12 -0
  105. package/dist_ts_interfaces/data/actionlog.js +2 -0
  106. package/dist_ts_interfaces/data/branch.d.ts +8 -0
  107. package/dist_ts_interfaces/data/branch.js +2 -0
  108. package/dist_ts_interfaces/data/connection.d.ts +12 -0
  109. package/dist_ts_interfaces/data/connection.js +2 -0
  110. package/dist_ts_interfaces/data/group.d.ts +10 -0
  111. package/dist_ts_interfaces/data/group.js +2 -0
  112. package/dist_ts_interfaces/data/identity.d.ts +7 -0
  113. package/dist_ts_interfaces/data/identity.js +2 -0
  114. package/dist_ts_interfaces/data/index.d.ts +11 -0
  115. package/dist_ts_interfaces/data/index.js +12 -0
  116. package/dist_ts_interfaces/data/job.d.ts +37 -0
  117. package/dist_ts_interfaces/data/job.js +2 -0
  118. package/dist_ts_interfaces/data/managedsecret.d.ts +37 -0
  119. package/dist_ts_interfaces/data/managedsecret.js +2 -0
  120. package/dist_ts_interfaces/data/pipeline.d.ts +22 -0
  121. package/dist_ts_interfaces/data/pipeline.js +2 -0
  122. package/dist_ts_interfaces/data/project.d.ts +12 -0
  123. package/dist_ts_interfaces/data/project.js +2 -0
  124. package/dist_ts_interfaces/data/secret.d.ts +11 -0
  125. package/dist_ts_interfaces/data/secret.js +2 -0
  126. package/dist_ts_interfaces/data/sync.d.ts +34 -0
  127. package/dist_ts_interfaces/data/sync.js +2 -0
  128. package/dist_ts_interfaces/index.d.ts +5 -0
  129. package/dist_ts_interfaces/index.js +8 -0
  130. package/dist_ts_interfaces/plugins.d.ts +2 -0
  131. package/dist_ts_interfaces/plugins.js +4 -0
  132. package/dist_ts_interfaces/requests/actionlog.d.ts +15 -0
  133. package/dist_ts_interfaces/requests/actionlog.js +3 -0
  134. package/dist_ts_interfaces/requests/actions.d.ts +31 -0
  135. package/dist_ts_interfaces/requests/actions.js +3 -0
  136. package/dist_ts_interfaces/requests/admin.d.ts +31 -0
  137. package/dist_ts_interfaces/requests/admin.js +3 -0
  138. package/dist_ts_interfaces/requests/connections.d.ts +71 -0
  139. package/dist_ts_interfaces/requests/connections.js +3 -0
  140. package/dist_ts_interfaces/requests/groups.d.ts +14 -0
  141. package/dist_ts_interfaces/requests/groups.js +3 -0
  142. package/dist_ts_interfaces/requests/index.d.ts +13 -0
  143. package/dist_ts_interfaces/requests/index.js +14 -0
  144. package/dist_ts_interfaces/requests/jobs.d.ts +86 -0
  145. package/dist_ts_interfaces/requests/jobs.js +3 -0
  146. package/dist_ts_interfaces/requests/logs.d.ts +14 -0
  147. package/dist_ts_interfaces/requests/logs.js +3 -0
  148. package/dist_ts_interfaces/requests/managedsecrets.d.ts +84 -0
  149. package/dist_ts_interfaces/requests/managedsecrets.js +3 -0
  150. package/dist_ts_interfaces/requests/pipelines.d.ts +55 -0
  151. package/dist_ts_interfaces/requests/pipelines.js +3 -0
  152. package/dist_ts_interfaces/requests/projects.d.ts +14 -0
  153. package/dist_ts_interfaces/requests/projects.js +3 -0
  154. package/dist_ts_interfaces/requests/secrets.d.ts +72 -0
  155. package/dist_ts_interfaces/requests/secrets.js +3 -0
  156. package/dist_ts_interfaces/requests/sync.d.ts +120 -0
  157. package/dist_ts_interfaces/requests/sync.js +3 -0
  158. package/dist_ts_interfaces/requests/webhook.d.ts +13 -0
  159. package/dist_ts_interfaces/requests/webhook.js +3 -0
  160. package/license +21 -0
  161. package/package.json +81 -0
  162. package/readme.md +177 -0
  163. package/readme.todo.md +3 -0
  164. package/ts/00_commitinfo_data.ts +8 -0
  165. package/ts/cache/classes.cache.cleaner.ts +69 -0
  166. package/ts/cache/classes.cached.document.ts +57 -0
  167. package/ts/cache/classes.cachedb.ts +72 -0
  168. package/ts/cache/classes.secrets.scan.service.ts +267 -0
  169. package/ts/cache/documents/classes.cached.project.ts +32 -0
  170. package/ts/cache/documents/classes.cached.secret.ts +81 -0
  171. package/ts/cache/documents/index.ts +2 -0
  172. package/ts/cache/index.ts +7 -0
  173. package/ts/classes/actionlog.ts +57 -0
  174. package/ts/classes/connectionmanager.ts +263 -0
  175. package/ts/classes/gitopsapp.ts +128 -0
  176. package/ts/classes/jobmanager.ts +337 -0
  177. package/ts/classes/jobrunners/autobookstackdocs.runner.ts +435 -0
  178. package/ts/classes/jobrunners/base.jobrunner.ts +16 -0
  179. package/ts/classes/jobrunners/index.ts +17 -0
  180. package/ts/classes/managedsecrets.manager.ts +322 -0
  181. package/ts/classes/syncmanager.ts +2117 -0
  182. package/ts/index.ts +37 -0
  183. package/ts/logging.ts +162 -0
  184. package/ts/opsserver/classes.opsserver.ts +86 -0
  185. package/ts/opsserver/handlers/actionlog.handler.ts +30 -0
  186. package/ts/opsserver/handlers/actions.handler.ts +50 -0
  187. package/ts/opsserver/handlers/admin.handler.ts +122 -0
  188. package/ts/opsserver/handlers/connections.handler.ts +162 -0
  189. package/ts/opsserver/handlers/groups.handler.ts +32 -0
  190. package/ts/opsserver/handlers/index.ts +13 -0
  191. package/ts/opsserver/handlers/jobs.handler.ts +189 -0
  192. package/ts/opsserver/handlers/logs.handler.ts +29 -0
  193. package/ts/opsserver/handlers/managedsecrets.handler.ts +158 -0
  194. package/ts/opsserver/handlers/pipelines.handler.ts +281 -0
  195. package/ts/opsserver/handlers/projects.handler.ts +32 -0
  196. package/ts/opsserver/handlers/secrets.handler.ts +224 -0
  197. package/ts/opsserver/handlers/sync.handler.ts +224 -0
  198. package/ts/opsserver/handlers/webhook.handler.ts +62 -0
  199. package/ts/opsserver/helpers/guards.ts +16 -0
  200. package/ts/opsserver/index.ts +1 -0
  201. package/ts/paths.ts +19 -0
  202. package/ts/plugins.ts +38 -0
  203. package/ts/providers/classes.baseprovider.ts +99 -0
  204. package/ts/providers/classes.giteaprovider.ts +279 -0
  205. package/ts/providers/classes.gitlabprovider.ts +265 -0
  206. package/ts/providers/index.ts +3 -0
  207. package/ts/storage/classes.storagemanager.ts +144 -0
  208. package/ts/storage/index.ts +2 -0
  209. package/ts/timers.ts +34 -0
  210. package/ts_interfaces/data/actionlog.ts +13 -0
  211. package/ts_interfaces/data/branch.ts +9 -0
  212. package/ts_interfaces/data/connection.ts +13 -0
  213. package/ts_interfaces/data/group.ts +10 -0
  214. package/ts_interfaces/data/identity.ts +7 -0
  215. package/ts_interfaces/data/index.ts +11 -0
  216. package/ts_interfaces/data/job.ts +42 -0
  217. package/ts_interfaces/data/managedsecret.ts +41 -0
  218. package/ts_interfaces/data/pipeline.ts +32 -0
  219. package/ts_interfaces/data/project.ts +12 -0
  220. package/ts_interfaces/data/secret.ts +11 -0
  221. package/ts_interfaces/data/sync.ts +37 -0
  222. package/ts_interfaces/index.ts +9 -0
  223. package/ts_interfaces/plugins.ts +6 -0
  224. package/ts_interfaces/requests/actionlog.ts +19 -0
  225. package/ts_interfaces/requests/actions.ts +39 -0
  226. package/ts_interfaces/requests/admin.ts +43 -0
  227. package/ts_interfaces/requests/connections.ts +95 -0
  228. package/ts_interfaces/requests/groups.ts +18 -0
  229. package/ts_interfaces/requests/index.ts +13 -0
  230. package/ts_interfaces/requests/jobs.ts +118 -0
  231. package/ts_interfaces/requests/logs.ts +18 -0
  232. package/ts_interfaces/requests/managedsecrets.ts +112 -0
  233. package/ts_interfaces/requests/pipelines.ts +71 -0
  234. package/ts_interfaces/requests/projects.ts +18 -0
  235. package/ts_interfaces/requests/secrets.ts +92 -0
  236. package/ts_interfaces/requests/sync.ts +157 -0
  237. package/ts_interfaces/requests/webhook.ts +18 -0
  238. package/ts_web/00_commitinfo_data.ts +8 -0
  239. package/ts_web/appstate.ts +1251 -0
  240. package/ts_web/elements/gitops-dashboard.ts +350 -0
  241. package/ts_web/elements/index.ts +10 -0
  242. package/ts_web/elements/shared/css.ts +29 -0
  243. package/ts_web/elements/shared/index.ts +1 -0
  244. package/ts_web/elements/views/actionlog/index.ts +101 -0
  245. package/ts_web/elements/views/actions/index.ts +209 -0
  246. package/ts_web/elements/views/buildlog/index.ts +196 -0
  247. package/ts_web/elements/views/connections/index.ts +260 -0
  248. package/ts_web/elements/views/groups/index.ts +134 -0
  249. package/ts_web/elements/views/jobs/index.ts +424 -0
  250. package/ts_web/elements/views/managedsecrets/index.ts +502 -0
  251. package/ts_web/elements/views/overview/index.ts +86 -0
  252. package/ts_web/elements/views/pipelines/index.ts +561 -0
  253. package/ts_web/elements/views/projects/index.ts +149 -0
  254. package/ts_web/elements/views/secrets/index.ts +310 -0
  255. package/ts_web/elements/views/sync/index.ts +512 -0
  256. package/ts_web/index.ts +7 -0
  257. package/ts_web/plugins.ts +15 -0
  258. package/tsconfig.json +15 -0
@@ -0,0 +1,109 @@
1
+ import * as plugins from '../../plugins.js';
2
+ import * as interfaces from '../../../dist_ts_interfaces/index.js';
3
+ import { requireValidIdentity } from '../helpers/guards.js';
4
+ export class ConnectionsHandler {
5
+ opsServerRef;
6
+ typedrouter = new plugins.typedrequest.TypedRouter();
7
+ constructor(opsServerRef) {
8
+ this.opsServerRef = opsServerRef;
9
+ this.opsServerRef.typedrouter.addTypedRouter(this.typedrouter);
10
+ this.registerHandlers();
11
+ }
12
+ get actionLog() {
13
+ return this.opsServerRef.gitopsAppRef.actionLog;
14
+ }
15
+ registerHandlers() {
16
+ // Get all connections
17
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('getConnections', async (dataArg) => {
18
+ await requireValidIdentity(this.opsServerRef.adminHandler, dataArg);
19
+ const connections = this.opsServerRef.gitopsAppRef.connectionManager.getConnections();
20
+ return { connections };
21
+ }));
22
+ // Create connection
23
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('createConnection', async (dataArg) => {
24
+ await requireValidIdentity(this.opsServerRef.adminHandler, dataArg);
25
+ const connection = await this.opsServerRef.gitopsAppRef.connectionManager.createConnection(dataArg.name, dataArg.providerType, dataArg.baseUrl, dataArg.token, dataArg.groupFilter);
26
+ this.actionLog.append({
27
+ actionType: 'create',
28
+ entityType: 'connection',
29
+ entityId: connection.id,
30
+ entityName: connection.name,
31
+ details: `Created ${dataArg.providerType} connection "${dataArg.name}" (${dataArg.baseUrl})`,
32
+ username: dataArg.identity.username,
33
+ });
34
+ return { connection };
35
+ }));
36
+ // Update connection
37
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('updateConnection', async (dataArg) => {
38
+ await requireValidIdentity(this.opsServerRef.adminHandler, dataArg);
39
+ const connection = await this.opsServerRef.gitopsAppRef.connectionManager.updateConnection(dataArg.connectionId, {
40
+ name: dataArg.name,
41
+ baseUrl: dataArg.baseUrl,
42
+ token: dataArg.token,
43
+ groupFilter: dataArg.groupFilter,
44
+ });
45
+ const fields = [
46
+ dataArg.name && 'name',
47
+ dataArg.baseUrl && 'baseUrl',
48
+ dataArg.token && 'token',
49
+ dataArg.groupFilter !== undefined && 'groupFilter',
50
+ ].filter(Boolean).join(', ');
51
+ this.actionLog.append({
52
+ actionType: 'update',
53
+ entityType: 'connection',
54
+ entityId: dataArg.connectionId,
55
+ entityName: connection.name,
56
+ details: `Updated connection "${connection.name}" (fields: ${fields})`,
57
+ username: dataArg.identity.username,
58
+ });
59
+ return { connection };
60
+ }));
61
+ // Pause/resume connection
62
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('pauseConnection', async (dataArg) => {
63
+ await requireValidIdentity(this.opsServerRef.adminHandler, dataArg);
64
+ const connection = await this.opsServerRef.gitopsAppRef.connectionManager.pauseConnection(dataArg.connectionId, dataArg.paused);
65
+ this.actionLog.append({
66
+ actionType: dataArg.paused ? 'pause' : 'resume',
67
+ entityType: 'connection',
68
+ entityId: dataArg.connectionId,
69
+ entityName: connection.name,
70
+ details: `${dataArg.paused ? 'Paused' : 'Resumed'} connection "${connection.name}"`,
71
+ username: dataArg.identity.username,
72
+ });
73
+ return { connection };
74
+ }));
75
+ // Test connection
76
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('testConnection', async (dataArg) => {
77
+ await requireValidIdentity(this.opsServerRef.adminHandler, dataArg);
78
+ const result = await this.opsServerRef.gitopsAppRef.connectionManager.testConnection(dataArg.connectionId);
79
+ const conn = this.opsServerRef.gitopsAppRef.connectionManager.getConnections()
80
+ .find((c) => c.id === dataArg.connectionId);
81
+ this.actionLog.append({
82
+ actionType: 'test',
83
+ entityType: 'connection',
84
+ entityId: dataArg.connectionId,
85
+ entityName: conn?.name || dataArg.connectionId,
86
+ details: `Tested connection: ${result.ok ? 'success' : `failed — ${result.error || 'unknown error'}`}`,
87
+ username: dataArg.identity.username,
88
+ });
89
+ return result;
90
+ }));
91
+ // Delete connection
92
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('deleteConnection', async (dataArg) => {
93
+ await requireValidIdentity(this.opsServerRef.adminHandler, dataArg);
94
+ const conn = this.opsServerRef.gitopsAppRef.connectionManager.getConnections()
95
+ .find((c) => c.id === dataArg.connectionId);
96
+ await this.opsServerRef.gitopsAppRef.connectionManager.deleteConnection(dataArg.connectionId);
97
+ this.actionLog.append({
98
+ actionType: 'delete',
99
+ entityType: 'connection',
100
+ entityId: dataArg.connectionId,
101
+ entityName: conn?.name || dataArg.connectionId,
102
+ details: `Deleted connection "${conn?.name || dataArg.connectionId}"`,
103
+ username: dataArg.identity.username,
104
+ });
105
+ return { ok: true };
106
+ }));
107
+ }
108
+ }
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbnMuaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzL29wc3NlcnZlci9oYW5kbGVycy9jb25uZWN0aW9ucy5oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFFNUMsT0FBTyxLQUFLLFVBQVUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU1RCxNQUFNLE9BQU8sa0JBQWtCO0lBR1Q7SUFGYixXQUFXLEdBQUcsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRTVELFlBQW9CLFlBQXVCO1FBQXZCLGlCQUFZLEdBQVosWUFBWSxDQUFXO1FBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQVksU0FBUztRQUNuQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztJQUNsRCxDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLHNCQUFzQjtRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FDOUIsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FDbkMsZ0JBQWdCLEVBQ2hCLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUNoQixNQUFNLG9CQUFvQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RGLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQ0YsQ0FDRixDQUFDO1FBRUYsb0JBQW9CO1FBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUM5QixJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUNuQyxrQkFBa0IsRUFDbEIsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2hCLE1BQU0sb0JBQW9CLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDcEUsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FDeEYsT0FBTyxDQUFDLElBQUksRUFDWixPQUFPLENBQUMsWUFBWSxFQUNwQixPQUFPLENBQUMsT0FBTyxFQUNmLE9BQU8sQ0FBQyxLQUFLLEVBQ2IsT0FBTyxDQUFDLFdBQVcsQ0FDcEIsQ0FBQztZQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO2dCQUNwQixVQUFVLEVBQUUsUUFBUTtnQkFDcEIsVUFBVSxFQUFFLFlBQVk7Z0JBQ3hCLFFBQVEsRUFBRSxVQUFVLENBQUMsRUFBRTtnQkFDdkIsVUFBVSxFQUFFLFVBQVUsQ0FBQyxJQUFJO2dCQUMzQixPQUFPLEVBQUUsV0FBVyxPQUFPLENBQUMsWUFBWSxnQkFBZ0IsT0FBTyxDQUFDLElBQUksTUFBTSxPQUFPLENBQUMsT0FBTyxHQUFHO2dCQUM1RixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRO2FBQ3BDLENBQUMsQ0FBQztZQUNILE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUN4QixDQUFDLENBQ0YsQ0FDRixDQUFDO1FBRUYsb0JBQW9CO1FBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUM5QixJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUNuQyxrQkFBa0IsRUFDbEIsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2hCLE1BQU0sb0JBQW9CLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDcEUsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FDeEYsT0FBTyxDQUFDLFlBQVksRUFDcEI7Z0JBQ0UsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO2dCQUNsQixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87Z0JBQ3hCLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztnQkFDcEIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2FBQ2pDLENBQ0YsQ0FBQztZQUNGLE1BQU0sTUFBTSxHQUFHO2dCQUNiLE9BQU8sQ0FBQyxJQUFJLElBQUksTUFBTTtnQkFDdEIsT0FBTyxDQUFDLE9BQU8sSUFBSSxTQUFTO2dCQUM1QixPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU87Z0JBQ3hCLE9BQU8sQ0FBQyxXQUFXLEtBQUssU0FBUyxJQUFJLGFBQWE7YUFDbkQsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO2dCQUNwQixVQUFVLEVBQUUsUUFBUTtnQkFDcEIsVUFBVSxFQUFFLFlBQVk7Z0JBQ3hCLFFBQVEsRUFBRSxPQUFPLENBQUMsWUFBWTtnQkFDOUIsVUFBVSxFQUFFLFVBQVUsQ0FBQyxJQUFJO2dCQUMzQixPQUFPLEVBQUUsdUJBQXVCLFVBQVUsQ0FBQyxJQUFJLGNBQWMsTUFBTSxHQUFHO2dCQUN0RSxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRO2FBQ3BDLENBQUMsQ0FBQztZQUNILE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUN4QixDQUFDLENBQ0YsQ0FDRixDQUFDO1FBRUYsMEJBQTBCO1FBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUM5QixJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUNuQyxpQkFBaUIsRUFDakIsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2hCLE1BQU0sb0JBQW9CLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDcEUsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQ3ZGLE9BQU8sQ0FBQyxZQUFZLEVBQ3BCLE9BQU8sQ0FBQyxNQUFNLENBQ2YsQ0FBQztZQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO2dCQUNwQixVQUFVLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRO2dCQUMvQyxVQUFVLEVBQUUsWUFBWTtnQkFDeEIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxZQUFZO2dCQUM5QixVQUFVLEVBQUUsVUFBVSxDQUFDLElBQUk7Z0JBQzNCLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxnQkFBZ0IsVUFBVSxDQUFDLElBQUksR0FBRztnQkFDbkYsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUTthQUNwQyxDQUFDLENBQUM7WUFDSCxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUNGLENBQ0YsQ0FBQztRQUVGLGtCQUFrQjtRQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FDOUIsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FDbkMsZ0JBQWdCLEVBQ2hCLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUNoQixNQUFNLG9CQUFvQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BFLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUNsRixPQUFPLENBQUMsWUFBWSxDQUNyQixDQUFDO1lBQ0YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsY0FBYyxFQUFFO2lCQUMzRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO2dCQUNwQixVQUFVLEVBQUUsTUFBTTtnQkFDbEIsVUFBVSxFQUFFLFlBQVk7Z0JBQ3hCLFFBQVEsRUFBRSxPQUFPLENBQUMsWUFBWTtnQkFDOUIsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksT0FBTyxDQUFDLFlBQVk7Z0JBQzlDLE9BQU8sRUFBRSxzQkFBc0IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLE1BQU0sQ0FBQyxLQUFLLElBQUksZUFBZSxFQUFFLEVBQUU7Z0JBQ3RHLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVE7YUFDcEMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUNGLENBQ0YsQ0FBQztRQUVGLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FDOUIsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FDbkMsa0JBQWtCLEVBQ2xCLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUNoQixNQUFNLG9CQUFvQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRTtpQkFDM0UsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM5QyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUNyRSxPQUFPLENBQUMsWUFBWSxDQUNyQixDQUFDO1lBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7Z0JBQ3BCLFVBQVUsRUFBRSxRQUFRO2dCQUNwQixVQUFVLEVBQUUsWUFBWTtnQkFDeEIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxZQUFZO2dCQUM5QixVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxPQUFPLENBQUMsWUFBWTtnQkFDOUMsT0FBTyxFQUFFLHVCQUF1QixJQUFJLEVBQUUsSUFBSSxJQUFJLE9BQU8sQ0FBQyxZQUFZLEdBQUc7Z0JBQ3JFLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVE7YUFDcEMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQ0YsQ0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGIn0=
@@ -0,0 +1,9 @@
1
+ import * as plugins from '../../plugins.js';
2
+ import type { OpsServer } from '../classes.opsserver.js';
3
+ import * as interfaces from '../../../dist_ts_interfaces/index.js';
4
+ export declare class GroupsHandler {
5
+ private opsServerRef;
6
+ typedrouter: plugins.typedrequest.TypedRouter<interfaces.typedrequestInterfaces.ITypedRequest>;
7
+ constructor(opsServerRef: OpsServer);
8
+ private registerHandlers;
9
+ }
@@ -0,0 +1,24 @@
1
+ import * as plugins from '../../plugins.js';
2
+ import * as interfaces from '../../../dist_ts_interfaces/index.js';
3
+ import { requireValidIdentity } from '../helpers/guards.js';
4
+ export class GroupsHandler {
5
+ opsServerRef;
6
+ typedrouter = new plugins.typedrequest.TypedRouter();
7
+ constructor(opsServerRef) {
8
+ this.opsServerRef = opsServerRef;
9
+ this.opsServerRef.typedrouter.addTypedRouter(this.typedrouter);
10
+ this.registerHandlers();
11
+ }
12
+ registerHandlers() {
13
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('getGroups', async (dataArg) => {
14
+ await requireValidIdentity(this.opsServerRef.adminHandler, dataArg);
15
+ const provider = this.opsServerRef.gitopsAppRef.connectionManager.getProvider(dataArg.connectionId);
16
+ const groups = await provider.getGroups({
17
+ search: dataArg.search,
18
+ page: dataArg.page,
19
+ });
20
+ return { groups };
21
+ }));
22
+ }
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBzLmhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9vcHNzZXJ2ZXIvaGFuZGxlcnMvZ3JvdXBzLmhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUU1QyxPQUFPLEtBQUssVUFBVSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTVELE1BQU0sT0FBTyxhQUFhO0lBR0o7SUFGYixXQUFXLEdBQUcsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRTVELFlBQW9CLFlBQXVCO1FBQXZCLGlCQUFZLEdBQVosWUFBWSxDQUFXO1FBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FDOUIsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FDbkMsV0FBVyxFQUNYLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUNoQixNQUFNLG9CQUFvQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FDM0UsT0FBTyxDQUFDLFlBQVksQ0FDckIsQ0FBQztZQUNGLE1BQU0sTUFBTSxHQUFHLE1BQU0sUUFBUSxDQUFDLFNBQVMsQ0FBQztnQkFDdEMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2dCQUN0QixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7YUFDbkIsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FDRixDQUNGLENBQUM7SUFDSixDQUFDO0NBQ0YifQ==
@@ -0,0 +1,13 @@
1
+ export { AdminHandler } from './admin.handler.js';
2
+ export { ConnectionsHandler } from './connections.handler.js';
3
+ export { ProjectsHandler } from './projects.handler.js';
4
+ export { GroupsHandler } from './groups.handler.js';
5
+ export { SecretsHandler } from './secrets.handler.js';
6
+ export { PipelinesHandler } from './pipelines.handler.js';
7
+ export { LogsHandler } from './logs.handler.js';
8
+ export { WebhookHandler } from './webhook.handler.js';
9
+ export { ActionsHandler } from './actions.handler.js';
10
+ export { ActionLogHandler } from './actionlog.handler.js';
11
+ export { SyncHandler } from './sync.handler.js';
12
+ export { ManagedSecretsHandler } from './managedsecrets.handler.js';
13
+ export { JobsHandler } from './jobs.handler.js';
@@ -0,0 +1,14 @@
1
+ export { AdminHandler } from './admin.handler.js';
2
+ export { ConnectionsHandler } from './connections.handler.js';
3
+ export { ProjectsHandler } from './projects.handler.js';
4
+ export { GroupsHandler } from './groups.handler.js';
5
+ export { SecretsHandler } from './secrets.handler.js';
6
+ export { PipelinesHandler } from './pipelines.handler.js';
7
+ export { LogsHandler } from './logs.handler.js';
8
+ export { WebhookHandler } from './webhook.handler.js';
9
+ export { ActionsHandler } from './actions.handler.js';
10
+ export { ActionLogHandler } from './actionlog.handler.js';
11
+ export { SyncHandler } from './sync.handler.js';
12
+ export { ManagedSecretsHandler } from './managedsecrets.handler.js';
13
+ export { JobsHandler } from './jobs.handler.js';
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9vcHNzZXJ2ZXIvaGFuZGxlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUMifQ==
@@ -0,0 +1,16 @@
1
+ import * as plugins from '../../plugins.js';
2
+ import type { OpsServer } from '../classes.opsserver.js';
3
+ import * as interfaces from '../../../dist_ts_interfaces/index.js';
4
+ export declare class JobsHandler {
5
+ private opsServerRef;
6
+ typedrouter: plugins.typedrequest.TypedRouter<interfaces.typedrequestInterfaces.ITypedRequest>;
7
+ constructor(opsServerRef: OpsServer);
8
+ /**
9
+ * Wire the logger's job broadcast function to push log entries
10
+ * to all connected frontends via TypedSocket.
11
+ */
12
+ private setupBroadcast;
13
+ private get jobManager();
14
+ private get actionLog();
15
+ private registerHandlers;
16
+ }
@@ -0,0 +1,146 @@
1
+ import * as plugins from '../../plugins.js';
2
+ import * as interfaces from '../../../dist_ts_interfaces/index.js';
3
+ import { requireValidIdentity } from '../helpers/guards.js';
4
+ import { logger } from '../../logging.js';
5
+ export class JobsHandler {
6
+ opsServerRef;
7
+ typedrouter = new plugins.typedrequest.TypedRouter();
8
+ constructor(opsServerRef) {
9
+ this.opsServerRef = opsServerRef;
10
+ this.opsServerRef.typedrouter.addTypedRouter(this.typedrouter);
11
+ this.registerHandlers();
12
+ this.setupBroadcast();
13
+ }
14
+ /**
15
+ * Wire the logger's job broadcast function to push log entries
16
+ * to all connected frontends via TypedSocket.
17
+ */
18
+ setupBroadcast() {
19
+ logger.setJobBroadcastFn((entry) => {
20
+ try {
21
+ const typedsocket = this.opsServerRef.server?.typedserver?.typedsocket;
22
+ if (!typedsocket)
23
+ return;
24
+ typedsocket.findAllTargetConnectionsByTag('jobLogClient').then((connections) => {
25
+ for (const conn of connections) {
26
+ typedsocket
27
+ .createTypedRequest('pushJobLog', conn)
28
+ .fire({ entry })
29
+ .catch(() => { });
30
+ }
31
+ }).catch(() => { });
32
+ }
33
+ catch {
34
+ // Server may not be ready yet — ignore
35
+ }
36
+ });
37
+ }
38
+ get jobManager() {
39
+ return this.opsServerRef.gitopsAppRef.jobManager;
40
+ }
41
+ get actionLog() {
42
+ return this.opsServerRef.gitopsAppRef.actionLog;
43
+ }
44
+ registerHandlers() {
45
+ // Get all jobs
46
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('getJobs', async (dataArg) => {
47
+ await requireValidIdentity(this.opsServerRef.adminHandler, dataArg);
48
+ return { jobs: this.jobManager.getJobs() };
49
+ }));
50
+ // Create job
51
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('createJob', async (dataArg) => {
52
+ await requireValidIdentity(this.opsServerRef.adminHandler, dataArg);
53
+ const job = await this.jobManager.createJob({
54
+ name: dataArg.name,
55
+ jobType: dataArg.jobType,
56
+ intervalMinutes: dataArg.intervalMinutes,
57
+ autoBookstackDocsConfig: dataArg.autoBookstackDocsConfig,
58
+ });
59
+ this.actionLog.append({
60
+ actionType: 'create',
61
+ entityType: 'job',
62
+ entityId: job.id,
63
+ entityName: job.name,
64
+ details: `Created ${job.jobType} job`,
65
+ username: dataArg.identity.username,
66
+ });
67
+ return { job };
68
+ }));
69
+ // Update job
70
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('updateJob', async (dataArg) => {
71
+ await requireValidIdentity(this.opsServerRef.adminHandler, dataArg);
72
+ const job = await this.jobManager.updateJob(dataArg.jobId, {
73
+ name: dataArg.name,
74
+ intervalMinutes: dataArg.intervalMinutes,
75
+ autoBookstackDocsConfig: dataArg.autoBookstackDocsConfig,
76
+ });
77
+ this.actionLog.append({
78
+ actionType: 'update',
79
+ entityType: 'job',
80
+ entityId: job.id,
81
+ entityName: job.name,
82
+ details: 'Updated job configuration',
83
+ username: dataArg.identity.username,
84
+ });
85
+ return { job };
86
+ }));
87
+ // Delete job
88
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('deleteJob', async (dataArg) => {
89
+ await requireValidIdentity(this.opsServerRef.adminHandler, dataArg);
90
+ const job = this.jobManager.getJob(dataArg.jobId);
91
+ await this.jobManager.deleteJob(dataArg.jobId);
92
+ this.actionLog.append({
93
+ actionType: 'delete',
94
+ entityType: 'job',
95
+ entityId: dataArg.jobId,
96
+ entityName: job?.name || dataArg.jobId,
97
+ details: 'Deleted job',
98
+ username: dataArg.identity.username,
99
+ });
100
+ return { ok: true };
101
+ }));
102
+ // Pause/resume job
103
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('pauseJob', async (dataArg) => {
104
+ await requireValidIdentity(this.opsServerRef.adminHandler, dataArg);
105
+ const job = await this.jobManager.pauseJob(dataArg.jobId, dataArg.paused);
106
+ this.actionLog.append({
107
+ actionType: dataArg.paused ? 'pause' : 'resume',
108
+ entityType: 'job',
109
+ entityId: job.id,
110
+ entityName: job.name,
111
+ details: dataArg.paused ? 'Paused job' : 'Resumed job',
112
+ username: dataArg.identity.username,
113
+ });
114
+ return { job };
115
+ }));
116
+ // Trigger job manually
117
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('triggerJob', async (dataArg) => {
118
+ await requireValidIdentity(this.opsServerRef.adminHandler, dataArg);
119
+ const job = this.jobManager.getJob(dataArg.jobId);
120
+ if (!job) {
121
+ return { ok: false, message: `Job not found: ${dataArg.jobId}` };
122
+ }
123
+ if (this.jobManager.isJobRunning(dataArg.jobId)) {
124
+ return { ok: false, message: 'Job is already running' };
125
+ }
126
+ // Fire-and-forget
127
+ this.jobManager.executeJob(dataArg.jobId, true).catch(() => { });
128
+ this.actionLog.append({
129
+ actionType: 'run',
130
+ entityType: 'job',
131
+ entityId: job.id,
132
+ entityName: job.name,
133
+ details: 'Manually triggered job execution',
134
+ username: dataArg.identity.username,
135
+ });
136
+ return { ok: true, message: 'Job triggered' };
137
+ }));
138
+ // Get job logs
139
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('getJobLogs', async (dataArg) => {
140
+ await requireValidIdentity(this.opsServerRef.adminHandler, dataArg);
141
+ const logs = logger.getJobLogs(dataArg.limit || 200);
142
+ return { logs };
143
+ }));
144
+ }
145
+ }
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9icy5oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHMvb3Bzc2VydmVyL2hhbmRsZXJzL2pvYnMuaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBRTVDLE9BQU8sS0FBSyxVQUFVLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTFDLE1BQU0sT0FBTyxXQUFXO0lBR0Y7SUFGYixXQUFXLEdBQUcsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRTVELFlBQW9CLFlBQXVCO1FBQXZCLGlCQUFZLEdBQVosWUFBWSxDQUFXO1FBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7O09BR0c7SUFDSyxjQUFjO1FBQ3BCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2pDLElBQUksQ0FBQztnQkFDSCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDO2dCQUN2RSxJQUFJLENBQUMsV0FBVztvQkFBRSxPQUFPO2dCQUN6QixXQUFXLENBQUMsNkJBQTZCLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7b0JBQzdFLEtBQUssTUFBTSxJQUFJLElBQUksV0FBVyxFQUFFLENBQUM7d0JBQy9CLFdBQVc7NkJBQ1Is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
@@ -0,0 +1,9 @@
1
+ import * as plugins from '../../plugins.js';
2
+ import type { OpsServer } from '../classes.opsserver.js';
3
+ import * as interfaces from '../../../dist_ts_interfaces/index.js';
4
+ export declare class LogsHandler {
5
+ private opsServerRef;
6
+ typedrouter: plugins.typedrequest.TypedRouter<interfaces.typedrequestInterfaces.ITypedRequest>;
7
+ constructor(opsServerRef: OpsServer);
8
+ private registerHandlers;
9
+ }
@@ -0,0 +1,21 @@
1
+ import * as plugins from '../../plugins.js';
2
+ import * as interfaces from '../../../dist_ts_interfaces/index.js';
3
+ import { requireValidIdentity } from '../helpers/guards.js';
4
+ export class LogsHandler {
5
+ opsServerRef;
6
+ typedrouter = new plugins.typedrequest.TypedRouter();
7
+ constructor(opsServerRef) {
8
+ this.opsServerRef = opsServerRef;
9
+ this.opsServerRef.typedrouter.addTypedRouter(this.typedrouter);
10
+ this.registerHandlers();
11
+ }
12
+ registerHandlers() {
13
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('getJobLog', async (dataArg) => {
14
+ await requireValidIdentity(this.opsServerRef.adminHandler, dataArg);
15
+ const provider = this.opsServerRef.gitopsAppRef.connectionManager.getProvider(dataArg.connectionId);
16
+ const log = await provider.getJobLog(dataArg.projectId, dataArg.jobId);
17
+ return { log };
18
+ }));
19
+ }
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ncy5oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHMvb3Bzc2VydmVyL2hhbmRsZXJzL2xvZ3MuaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBRTVDLE9BQU8sS0FBSyxVQUFVLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFNUQsTUFBTSxPQUFPLFdBQVc7SUFHRjtJQUZiLFdBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFNUQsWUFBb0IsWUFBdUI7UUFBdkIsaUJBQVksR0FBWixZQUFZLENBQVc7UUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUM5QixJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUNuQyxXQUFXLEVBQ1gsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2hCLE1BQU0sb0JBQW9CLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDcEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUMzRSxPQUFPLENBQUMsWUFBWSxDQUNyQixDQUFDO1lBQ0YsTUFBTSxHQUFHLEdBQUcsTUFBTSxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNqQixDQUFDLENBQ0YsQ0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGIn0=
@@ -0,0 +1,11 @@
1
+ import * as plugins from '../../plugins.js';
2
+ import type { OpsServer } from '../classes.opsserver.js';
3
+ import * as interfaces from '../../../dist_ts_interfaces/index.js';
4
+ export declare class ManagedSecretsHandler {
5
+ private opsServerRef;
6
+ typedrouter: plugins.typedrequest.TypedRouter<interfaces.typedrequestInterfaces.ITypedRequest>;
7
+ constructor(opsServerRef: OpsServer);
8
+ private get actionLog();
9
+ private get manager();
10
+ private registerHandlers;
11
+ }
@@ -0,0 +1,110 @@
1
+ import * as plugins from '../../plugins.js';
2
+ import * as interfaces from '../../../dist_ts_interfaces/index.js';
3
+ import { requireValidIdentity } from '../helpers/guards.js';
4
+ export class ManagedSecretsHandler {
5
+ opsServerRef;
6
+ typedrouter = new plugins.typedrequest.TypedRouter();
7
+ constructor(opsServerRef) {
8
+ this.opsServerRef = opsServerRef;
9
+ this.opsServerRef.typedrouter.addTypedRouter(this.typedrouter);
10
+ this.registerHandlers();
11
+ }
12
+ get actionLog() {
13
+ return this.opsServerRef.gitopsAppRef.actionLog;
14
+ }
15
+ get manager() {
16
+ return this.opsServerRef.gitopsAppRef.managedSecretsManager;
17
+ }
18
+ registerHandlers() {
19
+ // List all managed secrets
20
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('getManagedSecrets', async (dataArg) => {
21
+ await requireValidIdentity(this.opsServerRef.adminHandler, dataArg);
22
+ const managedSecrets = await this.manager.getAll();
23
+ return { managedSecrets };
24
+ }));
25
+ // Get single managed secret
26
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('getManagedSecret', async (dataArg) => {
27
+ await requireValidIdentity(this.opsServerRef.adminHandler, dataArg);
28
+ const managedSecret = await this.manager.getById(dataArg.managedSecretId);
29
+ if (!managedSecret)
30
+ throw new Error(`Managed secret not found: ${dataArg.managedSecretId}`);
31
+ return { managedSecret };
32
+ }));
33
+ // Create managed secret
34
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('createManagedSecret', async (dataArg) => {
35
+ await requireValidIdentity(this.opsServerRef.adminHandler, dataArg);
36
+ const result = await this.manager.create(dataArg.key, dataArg.value, dataArg.description, dataArg.targets);
37
+ this.actionLog.append({
38
+ actionType: 'create',
39
+ entityType: 'managed-secret',
40
+ entityId: result.managedSecret.id,
41
+ entityName: `GITOPS_${dataArg.key}`,
42
+ details: `Created managed secret "${dataArg.key}" with ${dataArg.targets.length} target(s)`,
43
+ username: dataArg.identity.username,
44
+ });
45
+ return result;
46
+ }));
47
+ // Update managed secret
48
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('updateManagedSecret', async (dataArg) => {
49
+ await requireValidIdentity(this.opsServerRef.adminHandler, dataArg);
50
+ const result = await this.manager.update(dataArg.managedSecretId, {
51
+ value: dataArg.value,
52
+ description: dataArg.description,
53
+ targets: dataArg.targets,
54
+ });
55
+ this.actionLog.append({
56
+ actionType: 'update',
57
+ entityType: 'managed-secret',
58
+ entityId: dataArg.managedSecretId,
59
+ entityName: `GITOPS_${result.managedSecret.key}`,
60
+ details: `Updated managed secret "${result.managedSecret.key}"`,
61
+ username: dataArg.identity.username,
62
+ });
63
+ return result;
64
+ }));
65
+ // Delete managed secret
66
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('deleteManagedSecret', async (dataArg) => {
67
+ await requireValidIdentity(this.opsServerRef.adminHandler, dataArg);
68
+ const secret = await this.manager.getById(dataArg.managedSecretId);
69
+ const result = await this.manager.delete(dataArg.managedSecretId);
70
+ this.actionLog.append({
71
+ actionType: 'delete',
72
+ entityType: 'managed-secret',
73
+ entityId: dataArg.managedSecretId,
74
+ entityName: secret ? `GITOPS_${secret.key}` : dataArg.managedSecretId,
75
+ details: `Deleted managed secret${secret ? ` "${secret.key}"` : ''}`,
76
+ username: dataArg.identity.username,
77
+ });
78
+ return result;
79
+ }));
80
+ // Push single managed secret
81
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('pushManagedSecret', async (dataArg) => {
82
+ await requireValidIdentity(this.opsServerRef.adminHandler, dataArg);
83
+ const result = await this.manager.pushOne(dataArg.managedSecretId);
84
+ this.actionLog.append({
85
+ actionType: 'push',
86
+ entityType: 'managed-secret',
87
+ entityId: dataArg.managedSecretId,
88
+ entityName: `GITOPS_${result.managedSecret.key}`,
89
+ details: `Pushed managed secret "${result.managedSecret.key}" to ${result.pushResults.length} target(s)`,
90
+ username: dataArg.identity.username,
91
+ });
92
+ return result;
93
+ }));
94
+ // Push all managed secrets
95
+ this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('pushAllManagedSecrets', async (dataArg) => {
96
+ await requireValidIdentity(this.opsServerRef.adminHandler, dataArg);
97
+ const results = await this.manager.pushAll();
98
+ this.actionLog.append({
99
+ actionType: 'push',
100
+ entityType: 'managed-secret',
101
+ entityId: 'all',
102
+ entityName: 'All managed secrets',
103
+ details: `Pushed ${results.length} managed secret(s) to their targets`,
104
+ username: dataArg.identity.username,
105
+ });
106
+ return { results };
107
+ }));
108
+ }
109
+ }
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZHNlY3JldHMuaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzL29wc3NlcnZlci9oYW5kbGVycy9tYW5hZ2Vkc2VjcmV0cy5oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFFNUMsT0FBTyxLQUFLLFVBQVUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU1RCxNQUFNLE9BQU8scUJBQXFCO0lBR1o7SUFGYixXQUFXLEdBQUcsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRTVELFlBQW9CLFlBQXVCO1FBQXZCLGlCQUFZLEdBQVosWUFBWSxDQUFXO1FBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQVksU0FBUztRQUNuQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBWSxPQUFPO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUM7SUFDOUQsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QiwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQzlCLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQ25DLG1CQUFtQixFQUNuQixLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDaEIsTUFBTSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNwRSxNQUFNLGNBQWMs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
@@ -0,0 +1,31 @@
1
+ import * as plugins from '../../plugins.js';
2
+ import type { OpsServer } from '../classes.opsserver.js';
3
+ import * as interfaces from '../../../dist_ts_interfaces/index.js';
4
+ export declare class PipelinesHandler {
5
+ private opsServerRef;
6
+ typedrouter: plugins.typedrequest.TypedRouter<interfaces.typedrequestInterfaces.ITypedRequest>;
7
+ constructor(opsServerRef: OpsServer);
8
+ private get actionLog();
9
+ private registerHandlers;
10
+ /**
11
+ * Current mode: running/pending always shown, plus recent pipelines within timeRange.
12
+ * Fetches a generous page of recent pipelines per project (100), then splits into
13
+ * active (running/pending/waiting) and the rest. Active are always shown; the rest
14
+ * is filtered by timeRange.
15
+ */
16
+ private fetchCurrentPipelines;
17
+ /**
18
+ * Group mode: pipelines from all projects in a group
19
+ */
20
+ private fetchGroupPipelines;
21
+ /**
22
+ * Error mode: only failed pipelines
23
+ */
24
+ private fetchErrorPipelines;
25
+ /**
26
+ * Fetch pipelines from multiple projects in parallel (batched)
27
+ */
28
+ private fetchAggregatedPipelines;
29
+ private filterByTimeRange;
30
+ private sortPipelines;
31
+ }