@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,224 @@
1
+ import * as plugins from '../plugins.js';
2
+ import { BaseProvider } from './classes.baseprovider.js';
3
+ /**
4
+ * Gitea API v1 provider implementation
5
+ */
6
+ export class GiteaProvider extends BaseProvider {
7
+ client;
8
+ constructor(connectionId, baseUrl, token, groupFilterId) {
9
+ super(connectionId, baseUrl, token, groupFilterId);
10
+ this.client = new plugins.giteaClient.GiteaClient(baseUrl, token);
11
+ }
12
+ async testConnection() {
13
+ return this.client.testConnection();
14
+ }
15
+ async getProjects(opts) {
16
+ const repos = this.groupFilterId
17
+ ? await (await this.client.getOrg(this.groupFilterId)).getRepos(opts)
18
+ : await this.client.getRepos(opts);
19
+ return repos.map((r) => this.mapProject(r));
20
+ }
21
+ async getGroups(opts) {
22
+ if (this.groupFilterId) {
23
+ const org = await this.client.getOrg(this.groupFilterId);
24
+ return [this.mapGroup(org)];
25
+ }
26
+ const orgs = await this.client.getOrgs(opts);
27
+ return orgs.map((o) => this.mapGroup(o));
28
+ }
29
+ async getGroupProjects(groupId, opts) {
30
+ const org = await this.client.getOrg(groupId);
31
+ const repos = await org.getRepos(opts);
32
+ return repos.map((r) => this.mapProject(r));
33
+ }
34
+ // --- Branches / Tags ---
35
+ async getBranches(projectFullPath, opts) {
36
+ const repo = await this.client.getRepo(projectFullPath);
37
+ const branches = await repo.getBranches(opts);
38
+ return branches.map((b) => ({ name: b.name, commitSha: b.commitSha }));
39
+ }
40
+ async getTags(projectFullPath, opts) {
41
+ const repo = await this.client.getRepo(projectFullPath);
42
+ const tags = await repo.getTags(opts);
43
+ return tags.map((t) => ({ name: t.name, commitSha: t.commitSha }));
44
+ }
45
+ // --- Project Secrets ---
46
+ async getProjectSecrets(projectId) {
47
+ const repo = await this.client.getRepo(projectId);
48
+ const secrets = await repo.getSecrets();
49
+ return secrets.map((s) => this.mapSecret(s, 'project', projectId));
50
+ }
51
+ async createProjectSecret(projectId, key, value) {
52
+ const repo = await this.client.getRepo(projectId);
53
+ await repo.setSecret(key, value);
54
+ return { key, value: '***', protected: false, masked: true, scope: 'project', scopeId: projectId, scopeName: projectId, connectionId: this.connectionId, environment: '*' };
55
+ }
56
+ async updateProjectSecret(projectId, key, value) {
57
+ return this.createProjectSecret(projectId, key, value);
58
+ }
59
+ async deleteProjectSecret(projectId, key) {
60
+ const repo = await this.client.getRepo(projectId);
61
+ await repo.deleteSecret(key);
62
+ }
63
+ // --- Group Secrets ---
64
+ async getGroupSecrets(groupId) {
65
+ const org = await this.client.getOrg(groupId);
66
+ const secrets = await org.getSecrets();
67
+ return secrets.map((s) => this.mapSecret(s, 'group', groupId));
68
+ }
69
+ async createGroupSecret(groupId, key, value) {
70
+ const org = await this.client.getOrg(groupId);
71
+ await org.setSecret(key, value);
72
+ return { key, value: '***', protected: false, masked: true, scope: 'group', scopeId: groupId, scopeName: groupId, connectionId: this.connectionId, environment: '*' };
73
+ }
74
+ async updateGroupSecret(groupId, key, value) {
75
+ return this.createGroupSecret(groupId, key, value);
76
+ }
77
+ async deleteGroupSecret(groupId, key) {
78
+ const org = await this.client.getOrg(groupId);
79
+ await org.deleteSecret(key);
80
+ }
81
+ // --- Pipelines (Action Runs) ---
82
+ async getPipelines(projectId, opts) {
83
+ const repo = await this.client.getRepo(projectId);
84
+ const runs = await repo.getActionRuns({
85
+ page: opts?.page,
86
+ perPage: opts?.perPage,
87
+ status: opts?.status,
88
+ branch: opts?.ref,
89
+ event: opts?.source,
90
+ });
91
+ return runs.map((r) => this.mapPipeline(r, projectId));
92
+ }
93
+ async getPipelineJobs(projectId, pipelineId) {
94
+ // Use the client's internal method directly to avoid an extra getRepo call
95
+ const jobs = await this.client.requestGetActionRunJobs(projectId, Number(pipelineId));
96
+ return jobs.map((j) => {
97
+ const resolvedStatus = plugins.giteaClient.resolveGiteaStatus(j.status, j.conclusion);
98
+ return this.mapJob(resolvedStatus, j, pipelineId);
99
+ });
100
+ }
101
+ async getJobLog(projectId, jobId) {
102
+ return this.client.requestGetJobLog(projectId, Number(jobId));
103
+ }
104
+ async retryPipeline(projectId, pipelineId) {
105
+ // Fetch the run to get its workflow path, then dispatch
106
+ const run = await this.client.requestGetActionRun(projectId, Number(pipelineId));
107
+ const wfId = plugins.giteaClient.extractWorkflowIdFromPath(run.path);
108
+ const ref = run.head_branch || 'main';
109
+ if (!wfId) {
110
+ throw new Error(`Cannot retry: no workflow ID found in path "${run.path}"`);
111
+ }
112
+ await this.client.requestDispatchWorkflow(projectId, wfId, ref);
113
+ }
114
+ async cancelPipeline(_projectId, _pipelineId) {
115
+ throw new Error('Cancel is not supported by Gitea 1.25');
116
+ }
117
+ // --- File Content ---
118
+ async getFileContent(projectFullPath, filePath, ref) {
119
+ try {
120
+ const query = ref ? `?ref=${encodeURIComponent(ref)}` : '';
121
+ return await this.client.requestText('GET', `/api/v1/repos/${projectFullPath}/raw/${encodeURIComponent(filePath)}${query}`);
122
+ }
123
+ catch {
124
+ return null;
125
+ }
126
+ }
127
+ // --- Directory Listing ---
128
+ async getDirectoryContents(projectFullPath, dirPath, ref) {
129
+ try {
130
+ const query = ref ? `?ref=${encodeURIComponent(ref)}` : '';
131
+ const result = await this.client.request('GET', `/api/v1/repos/${projectFullPath}/contents/${encodeURIComponent(dirPath)}${query}`);
132
+ if (!Array.isArray(result))
133
+ return null;
134
+ return result.map((entry) => ({
135
+ name: entry.name,
136
+ path: entry.path,
137
+ type: entry.type, // "file" or "dir"
138
+ }));
139
+ }
140
+ catch {
141
+ return null;
142
+ }
143
+ }
144
+ // --- Mappers ---
145
+ mapProject(r) {
146
+ return {
147
+ id: r.fullName || String(r.id),
148
+ name: r.name,
149
+ fullPath: r.fullName,
150
+ description: r.description,
151
+ defaultBranch: r.defaultBranch,
152
+ webUrl: r.htmlUrl,
153
+ connectionId: this.connectionId,
154
+ visibility: r.isPrivate ? 'private' : 'public',
155
+ topics: r.topics,
156
+ lastActivity: r.updatedAt,
157
+ };
158
+ }
159
+ mapGroup(o) {
160
+ return {
161
+ id: o.name || String(o.id),
162
+ name: o.name,
163
+ fullPath: o.name,
164
+ description: o.description,
165
+ webUrl: `${this.baseUrl}/${o.name}`,
166
+ connectionId: this.connectionId,
167
+ visibility: o.visibility || 'public',
168
+ projectCount: o.repoCount,
169
+ };
170
+ }
171
+ mapSecret(s, scope, scopeId) {
172
+ return {
173
+ key: s.name,
174
+ value: '***',
175
+ protected: false,
176
+ masked: true,
177
+ scope,
178
+ scopeId,
179
+ scopeName: scopeId,
180
+ connectionId: this.connectionId,
181
+ environment: '*',
182
+ };
183
+ }
184
+ mapPipeline(r, projectId) {
185
+ return {
186
+ id: String(r.id),
187
+ projectId,
188
+ projectName: projectId,
189
+ connectionId: this.connectionId,
190
+ status: this.mapStatus(r.resolvedStatus),
191
+ ref: r.ref,
192
+ sha: r.headSha,
193
+ webUrl: r.htmlUrl,
194
+ duration: r.duration,
195
+ createdAt: r.startedAt,
196
+ source: r.event || 'push',
197
+ };
198
+ }
199
+ mapJob(resolvedStatus, j, pipelineId) {
200
+ return {
201
+ id: String(j.id),
202
+ pipelineId,
203
+ name: j.name || '',
204
+ stage: j.name || 'default',
205
+ status: this.mapStatus(resolvedStatus),
206
+ duration: plugins.giteaClient.computeDuration(j.started_at, j.completed_at),
207
+ };
208
+ }
209
+ mapStatus(status) {
210
+ const map = {
211
+ success: 'success',
212
+ completed: 'success',
213
+ failure: 'failed',
214
+ cancelled: 'canceled',
215
+ waiting: 'waiting',
216
+ running: 'running',
217
+ queued: 'pending',
218
+ in_progress: 'running',
219
+ skipped: 'skipped',
220
+ };
221
+ return map[status?.toLowerCase()] || 'pending';
222
+ }
223
+ }
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5naXRlYXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvcHJvdmlkZXJzL2NsYXNzZXMuZ2l0ZWFwcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsWUFBWSxFQUE0RSxNQUFNLDJCQUEyQixDQUFDO0FBRW5JOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGFBQWMsU0FBUSxZQUFZO0lBQ3JDLE1BQU0sQ0FBa0M7SUFFaEQsWUFBWSxZQUFvQixFQUFFLE9BQWUsRUFBRSxLQUFhLEVBQUUsYUFBc0I7UUFDdEYsS0FBSyxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFtQjtRQUNuQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYTtZQUM5QixDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNyRSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENB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
@@ -0,0 +1,39 @@
1
+ import type * as interfaces from '../../dist_ts_interfaces/index.js';
2
+ import { BaseProvider, type ITestConnectionResult, type IListOptions, type IPipelineListOptions } from './classes.baseprovider.js';
3
+ /**
4
+ * GitLab API v4 provider implementation
5
+ */
6
+ export declare class GitLabProvider extends BaseProvider {
7
+ private client;
8
+ constructor(connectionId: string, baseUrl: string, token: string, groupFilterId?: string);
9
+ testConnection(): Promise<ITestConnectionResult>;
10
+ getProjects(opts?: IListOptions): Promise<interfaces.data.IProject[]>;
11
+ getGroups(opts?: IListOptions): Promise<interfaces.data.IGroup[]>;
12
+ getGroupProjects(groupId: string, opts?: IListOptions): Promise<interfaces.data.IProject[]>;
13
+ getBranches(projectFullPath: string, opts?: IListOptions): Promise<interfaces.data.IBranch[]>;
14
+ getTags(projectFullPath: string, opts?: IListOptions): Promise<interfaces.data.ITag[]>;
15
+ getProjectSecrets(projectId: string): Promise<interfaces.data.ISecret[]>;
16
+ createProjectSecret(projectId: string, key: string, value: string): Promise<interfaces.data.ISecret>;
17
+ updateProjectSecret(projectId: string, key: string, value: string): Promise<interfaces.data.ISecret>;
18
+ deleteProjectSecret(projectId: string, key: string): Promise<void>;
19
+ getGroupSecrets(groupId: string): Promise<interfaces.data.ISecret[]>;
20
+ createGroupSecret(groupId: string, key: string, value: string): Promise<interfaces.data.ISecret>;
21
+ updateGroupSecret(groupId: string, key: string, value: string): Promise<interfaces.data.ISecret>;
22
+ deleteGroupSecret(groupId: string, key: string): Promise<void>;
23
+ getPipelines(projectId: string, opts?: IPipelineListOptions): Promise<interfaces.data.IPipeline[]>;
24
+ getPipelineJobs(projectId: string, pipelineId: string): Promise<interfaces.data.IPipelineJob[]>;
25
+ getJobLog(projectId: string, jobId: string): Promise<string>;
26
+ retryPipeline(projectId: string, pipelineId: string): Promise<void>;
27
+ cancelPipeline(projectId: string, pipelineId: string): Promise<void>;
28
+ getFileContent(projectFullPath: string, filePath: string, ref?: string): Promise<string | null>;
29
+ getDirectoryContents(projectFullPath: string, dirPath: string, ref?: string): Promise<{
30
+ name: string;
31
+ path: string;
32
+ type: string;
33
+ }[] | null>;
34
+ private mapProject;
35
+ private mapGroup;
36
+ private mapVariable;
37
+ private mapPipeline;
38
+ private mapJob;
39
+ }
@@ -0,0 +1,207 @@
1
+ import * as plugins from '../plugins.js';
2
+ import { BaseProvider } from './classes.baseprovider.js';
3
+ /**
4
+ * GitLab API v4 provider implementation
5
+ */
6
+ export class GitLabProvider extends BaseProvider {
7
+ client;
8
+ constructor(connectionId, baseUrl, token, groupFilterId) {
9
+ super(connectionId, baseUrl, token, groupFilterId);
10
+ this.client = new plugins.gitlabClient.GitLabClient(baseUrl, token);
11
+ }
12
+ async testConnection() {
13
+ return this.client.testConnection();
14
+ }
15
+ async getProjects(opts) {
16
+ const projects = this.groupFilterId
17
+ ? await (await this.client.getGroup(this.groupFilterId)).getProjects(opts)
18
+ : await this.client.getProjects(opts);
19
+ return projects.map((p) => this.mapProject(p));
20
+ }
21
+ async getGroups(opts) {
22
+ if (this.groupFilterId) {
23
+ const group = await this.client.getGroup(this.groupFilterId);
24
+ const descendants = await group.getDescendantGroups(opts);
25
+ return descendants.map((g) => this.mapGroup(g));
26
+ }
27
+ const groups = await this.client.getGroups(opts);
28
+ return groups.map((g) => this.mapGroup(g));
29
+ }
30
+ async getGroupProjects(groupId, opts) {
31
+ const group = await this.client.getGroup(groupId);
32
+ const projects = await group.getProjects(opts);
33
+ return projects.map((p) => this.mapProject(p));
34
+ }
35
+ // --- Branches / Tags ---
36
+ async getBranches(projectFullPath, opts) {
37
+ const project = await this.client.getProject(projectFullPath);
38
+ const branches = await project.getBranches(opts);
39
+ return branches.map((b) => ({ name: b.name, commitSha: b.commitSha }));
40
+ }
41
+ async getTags(projectFullPath, opts) {
42
+ const project = await this.client.getProject(projectFullPath);
43
+ const tags = await project.getTags(opts);
44
+ return tags.map((t) => ({ name: t.name, commitSha: t.commitSha }));
45
+ }
46
+ // --- Project Secrets (CI/CD Variables) ---
47
+ async getProjectSecrets(projectId) {
48
+ const project = await this.client.getProject(projectId);
49
+ const vars = await project.getVariables();
50
+ return vars.map((v) => this.mapVariable(v, 'project', projectId));
51
+ }
52
+ async createProjectSecret(projectId, key, value) {
53
+ const project = await this.client.getProject(projectId);
54
+ const v = await project.createVariable(key, value);
55
+ return this.mapVariable(v, 'project', projectId);
56
+ }
57
+ async updateProjectSecret(projectId, key, value) {
58
+ const project = await this.client.getProject(projectId);
59
+ const v = await project.updateVariable(key, value);
60
+ return this.mapVariable(v, 'project', projectId);
61
+ }
62
+ async deleteProjectSecret(projectId, key) {
63
+ const project = await this.client.getProject(projectId);
64
+ await project.deleteVariable(key);
65
+ }
66
+ // --- Group Secrets (CI/CD Variables) ---
67
+ async getGroupSecrets(groupId) {
68
+ const group = await this.client.getGroup(groupId);
69
+ const vars = await group.getVariables();
70
+ return vars.map((v) => this.mapVariable(v, 'group', groupId));
71
+ }
72
+ async createGroupSecret(groupId, key, value) {
73
+ const group = await this.client.getGroup(groupId);
74
+ const v = await group.createVariable(key, value);
75
+ return this.mapVariable(v, 'group', groupId);
76
+ }
77
+ async updateGroupSecret(groupId, key, value) {
78
+ const group = await this.client.getGroup(groupId);
79
+ const v = await group.updateVariable(key, value);
80
+ return this.mapVariable(v, 'group', groupId);
81
+ }
82
+ async deleteGroupSecret(groupId, key) {
83
+ const group = await this.client.getGroup(groupId);
84
+ await group.deleteVariable(key);
85
+ }
86
+ // --- Pipelines ---
87
+ async getPipelines(projectId, opts) {
88
+ const project = await this.client.getProject(projectId);
89
+ const pipelines = await project.getPipelines({
90
+ page: opts?.page,
91
+ perPage: opts?.perPage,
92
+ status: opts?.status,
93
+ ref: opts?.ref,
94
+ source: opts?.source,
95
+ });
96
+ return pipelines.map((p) => this.mapPipeline(p, projectId));
97
+ }
98
+ async getPipelineJobs(projectId, pipelineId) {
99
+ const jobs = await this.client.requestGetPipelineJobs(projectId, Number(pipelineId));
100
+ return jobs.map((j) => this.mapJob(j, pipelineId));
101
+ }
102
+ async getJobLog(projectId, jobId) {
103
+ return this.client.requestGetJobLog(projectId, Number(jobId));
104
+ }
105
+ async retryPipeline(projectId, pipelineId) {
106
+ await this.client.requestRetryPipeline(projectId, Number(pipelineId));
107
+ }
108
+ async cancelPipeline(projectId, pipelineId) {
109
+ await this.client.requestCancelPipeline(projectId, Number(pipelineId));
110
+ }
111
+ // --- File Content ---
112
+ async getFileContent(projectFullPath, filePath, ref) {
113
+ try {
114
+ const encodedPath = encodeURIComponent(projectFullPath);
115
+ const encodedFile = encodeURIComponent(filePath);
116
+ const refParam = ref ? `?ref=${encodeURIComponent(ref)}` : '?ref=HEAD';
117
+ return await this.client.requestText('GET', `/api/v4/projects/${encodedPath}/repository/files/${encodedFile}/raw${refParam}`);
118
+ }
119
+ catch {
120
+ return null;
121
+ }
122
+ }
123
+ // --- Directory Listing ---
124
+ async getDirectoryContents(projectFullPath, dirPath, ref) {
125
+ try {
126
+ const encodedPath = encodeURIComponent(projectFullPath);
127
+ const refParam = ref ? `&ref=${encodeURIComponent(ref)}` : '&ref=HEAD';
128
+ const result = await this.client.request('GET', `/api/v4/projects/${encodedPath}/repository/tree?path=${encodeURIComponent(dirPath)}${refParam}`);
129
+ if (!Array.isArray(result))
130
+ return null;
131
+ return result.map((entry) => ({
132
+ name: entry.name,
133
+ path: entry.path,
134
+ type: entry.type === 'blob' ? 'file' : 'dir',
135
+ }));
136
+ }
137
+ catch {
138
+ return null;
139
+ }
140
+ }
141
+ // --- Mappers ---
142
+ mapProject(p) {
143
+ return {
144
+ id: String(p.id),
145
+ name: p.name,
146
+ fullPath: p.fullPath,
147
+ description: p.description,
148
+ defaultBranch: p.defaultBranch,
149
+ webUrl: p.webUrl,
150
+ connectionId: this.connectionId,
151
+ visibility: p.visibility,
152
+ topics: p.topics,
153
+ lastActivity: p.lastActivityAt,
154
+ };
155
+ }
156
+ mapGroup(g) {
157
+ return {
158
+ id: String(g.id),
159
+ name: g.name,
160
+ fullPath: g.fullPath,
161
+ description: g.description,
162
+ webUrl: g.webUrl,
163
+ connectionId: this.connectionId,
164
+ visibility: g.visibility,
165
+ projectCount: 0,
166
+ };
167
+ }
168
+ mapVariable(v, scope, scopeId) {
169
+ return {
170
+ key: v.key,
171
+ value: v.value || '***',
172
+ protected: v.protected,
173
+ masked: v.masked,
174
+ scope,
175
+ scopeId,
176
+ scopeName: scopeId,
177
+ connectionId: this.connectionId,
178
+ environment: v.environmentScope,
179
+ };
180
+ }
181
+ mapPipeline(p, projectId) {
182
+ return {
183
+ id: String(p.id),
184
+ projectId,
185
+ projectName: projectId,
186
+ connectionId: this.connectionId,
187
+ status: (p.status || 'pending'),
188
+ ref: p.ref,
189
+ sha: p.sha,
190
+ webUrl: p.webUrl,
191
+ duration: p.duration,
192
+ createdAt: p.createdAt,
193
+ source: p.source || 'push',
194
+ };
195
+ }
196
+ mapJob(j, pipelineId) {
197
+ return {
198
+ id: String(j.id),
199
+ pipelineId: String(pipelineId),
200
+ name: j.name || '',
201
+ stage: j.stage || '',
202
+ status: (j.status || 'pending'),
203
+ duration: j.duration || 0,
204
+ };
205
+ }
206
+ }
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5naXRsYWJwcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL3Byb3ZpZGVycy9jbGFzc2VzLmdpdGxhYnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxZQUFZLEVBQTRFLE1BQU0sMkJBQTJCLENBQUM7QUFFbkk7O0dBRUc7QUFDSCxNQUFNLE9BQU8sY0FBZSxTQUFRLFlBQVk7SUFDdEMsTUFBTSxDQUFvQztJQUVsRCxZQUFZLFlBQW9CLEVBQUUsT0FBZSxFQUFFLEtBQWEsRUFBRSxhQUFzQjtRQUN0RixLQUFLLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWM7UUFDbEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLElBQW1CO1FBQ25DLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhO1lBQ2pDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQzFFLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMs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
@@ -0,0 +1,3 @@
1
+ export { BaseProvider } from './classes.baseprovider.js';
2
+ export { GiteaProvider } from './classes.giteaprovider.js';
3
+ export { GitLabProvider } from './classes.gitlabprovider.js';
@@ -0,0 +1,4 @@
1
+ export { BaseProvider } from './classes.baseprovider.js';
2
+ export { GiteaProvider } from './classes.giteaprovider.js';
3
+ export { GitLabProvider } from './classes.gitlabprovider.js';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9wcm92aWRlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUMifQ==
@@ -0,0 +1,33 @@
1
+ export type TStorageBackend = 'filesystem' | 'memory';
2
+ export interface IStorageConfig {
3
+ backend?: TStorageBackend;
4
+ fsPath?: string;
5
+ }
6
+ /**
7
+ * Key-value storage abstraction with filesystem and memory backends.
8
+ * Keys must start with '/' and are normalized (no '..', no double slashes).
9
+ */
10
+ export declare class StorageManager {
11
+ private backend;
12
+ private fsPath;
13
+ private memoryStore;
14
+ constructor(config?: IStorageConfig);
15
+ /**
16
+ * Normalize and validate a storage key.
17
+ */
18
+ private normalizeKey;
19
+ /**
20
+ * Resolve a key to a filesystem path.
21
+ */
22
+ private keyToPath;
23
+ get(key: string): Promise<string | null>;
24
+ set(key: string, value: string): Promise<void>;
25
+ delete(key: string): Promise<boolean>;
26
+ exists(key: string): Promise<boolean>;
27
+ /**
28
+ * List keys under a given prefix.
29
+ */
30
+ list(prefix: string): Promise<string[]>;
31
+ getJSON<T>(key: string): Promise<T | null>;
32
+ setJSON(key: string, value: unknown): Promise<void>;
33
+ }