@intentic/providers 1.0.2

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 (259) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +26 -0
  3. package/dist/auth/authentik-api.d.ts +23 -0
  4. package/dist/auth/authentik-api.d.ts.map +1 -0
  5. package/dist/auth/authentik-api.js +67 -0
  6. package/dist/auth/authentik-api.js.map +1 -0
  7. package/dist/auth/authentik-client.d.ts +4 -0
  8. package/dist/auth/authentik-client.d.ts.map +1 -0
  9. package/dist/auth/authentik-client.js +50 -0
  10. package/dist/auth/authentik-client.js.map +1 -0
  11. package/dist/auth/authentik.d.ts +4 -0
  12. package/dist/auth/authentik.d.ts.map +1 -0
  13. package/dist/auth/authentik.js +132 -0
  14. package/dist/auth/authentik.js.map +1 -0
  15. package/dist/backup/backup-restore.d.ts +15 -0
  16. package/dist/backup/backup-restore.d.ts.map +1 -0
  17. package/dist/backup/backup-restore.js +51 -0
  18. package/dist/backup/backup-restore.js.map +1 -0
  19. package/dist/backup/backup.d.ts +6 -0
  20. package/dist/backup/backup.d.ts.map +1 -0
  21. package/dist/backup/backup.js +154 -0
  22. package/dist/backup/backup.js.map +1 -0
  23. package/dist/backup/migrate-host.d.ts +6 -0
  24. package/dist/backup/migrate-host.d.ts.map +1 -0
  25. package/dist/backup/migrate-host.js +46 -0
  26. package/dist/backup/migrate-host.js.map +1 -0
  27. package/dist/core/backing-ssh.d.ts +9 -0
  28. package/dist/core/backing-ssh.d.ts.map +1 -0
  29. package/dist/core/backing-ssh.js +67 -0
  30. package/dist/core/backing-ssh.js.map +1 -0
  31. package/dist/core/ci-yaml.d.ts +3 -0
  32. package/dist/core/ci-yaml.d.ts.map +1 -0
  33. package/dist/core/ci-yaml.js +15 -0
  34. package/dist/core/ci-yaml.js.map +1 -0
  35. package/dist/core/guarded-update.d.ts +14 -0
  36. package/dist/core/guarded-update.d.ts.map +1 -0
  37. package/dist/core/guarded-update.js +25 -0
  38. package/dist/core/guarded-update.js.map +1 -0
  39. package/dist/core/inputs.d.ts +27 -0
  40. package/dist/core/inputs.d.ts.map +1 -0
  41. package/dist/core/inputs.js +36 -0
  42. package/dist/core/inputs.js.map +1 -0
  43. package/dist/core/ssh-probe.d.ts +5 -0
  44. package/dist/core/ssh-probe.d.ts.map +1 -0
  45. package/dist/core/ssh-probe.js +22 -0
  46. package/dist/core/ssh-probe.js.map +1 -0
  47. package/dist/core/ssh.d.ts +31 -0
  48. package/dist/core/ssh.d.ts.map +1 -0
  49. package/dist/core/ssh.js +186 -0
  50. package/dist/core/ssh.js.map +1 -0
  51. package/dist/data/garage-bucket.d.ts +4 -0
  52. package/dist/data/garage-bucket.d.ts.map +1 -0
  53. package/dist/data/garage-bucket.js +92 -0
  54. package/dist/data/garage-bucket.js.map +1 -0
  55. package/dist/data/garage.d.ts +4 -0
  56. package/dist/data/garage.d.ts.map +1 -0
  57. package/dist/data/garage.js +124 -0
  58. package/dist/data/garage.js.map +1 -0
  59. package/dist/data/postgres-database.d.ts +4 -0
  60. package/dist/data/postgres-database.d.ts.map +1 -0
  61. package/dist/data/postgres-database.js +88 -0
  62. package/dist/data/postgres-database.js.map +1 -0
  63. package/dist/data/postgres.d.ts +4 -0
  64. package/dist/data/postgres.d.ts.map +1 -0
  65. package/dist/data/postgres.js +106 -0
  66. package/dist/data/postgres.js.map +1 -0
  67. package/dist/data/valkey-namespace.d.ts +4 -0
  68. package/dist/data/valkey-namespace.d.ts.map +1 -0
  69. package/dist/data/valkey-namespace.js +78 -0
  70. package/dist/data/valkey-namespace.js.map +1 -0
  71. package/dist/data/valkey.d.ts +4 -0
  72. package/dist/data/valkey.d.ts.map +1 -0
  73. package/dist/data/valkey.js +105 -0
  74. package/dist/data/valkey.js.map +1 -0
  75. package/dist/forgejo/ci.d.ts +4 -0
  76. package/dist/forgejo/ci.d.ts.map +1 -0
  77. package/dist/forgejo/ci.js +138 -0
  78. package/dist/forgejo/ci.js.map +1 -0
  79. package/dist/forgejo/forgejo-api.d.ts +209 -0
  80. package/dist/forgejo/forgejo-api.d.ts.map +1 -0
  81. package/dist/forgejo/forgejo-api.fake.d.ts +3 -0
  82. package/dist/forgejo/forgejo-api.fake.d.ts.map +1 -0
  83. package/dist/forgejo/forgejo-api.fake.js +31 -0
  84. package/dist/forgejo/forgejo-api.fake.js.map +1 -0
  85. package/dist/forgejo/forgejo-api.js +181 -0
  86. package/dist/forgejo/forgejo-api.js.map +1 -0
  87. package/dist/forgejo/forgejo-notify.d.ts +4 -0
  88. package/dist/forgejo/forgejo-notify.d.ts.map +1 -0
  89. package/dist/forgejo/forgejo-notify.js +103 -0
  90. package/dist/forgejo/forgejo-notify.js.map +1 -0
  91. package/dist/forgejo/forgejo-org.d.ts +4 -0
  92. package/dist/forgejo/forgejo-org.d.ts.map +1 -0
  93. package/dist/forgejo/forgejo-org.js +43 -0
  94. package/dist/forgejo/forgejo-org.js.map +1 -0
  95. package/dist/forgejo/forgejo-runner.d.ts +4 -0
  96. package/dist/forgejo/forgejo-runner.d.ts.map +1 -0
  97. package/dist/forgejo/forgejo-runner.js +111 -0
  98. package/dist/forgejo/forgejo-runner.js.map +1 -0
  99. package/dist/forgejo/forgejo-team.d.ts +4 -0
  100. package/dist/forgejo/forgejo-team.d.ts.map +1 -0
  101. package/dist/forgejo/forgejo-team.js +68 -0
  102. package/dist/forgejo/forgejo-team.js.map +1 -0
  103. package/dist/forgejo/forgejo-user.d.ts +4 -0
  104. package/dist/forgejo/forgejo-user.d.ts.map +1 -0
  105. package/dist/forgejo/forgejo-user.js +50 -0
  106. package/dist/forgejo/forgejo-user.js.map +1 -0
  107. package/dist/forgejo/forgejo.d.ts +4 -0
  108. package/dist/forgejo/forgejo.d.ts.map +1 -0
  109. package/dist/forgejo/forgejo.js +169 -0
  110. package/dist/forgejo/forgejo.js.map +1 -0
  111. package/dist/forgejo/repo.d.ts +4 -0
  112. package/dist/forgejo/repo.d.ts.map +1 -0
  113. package/dist/forgejo/repo.js +80 -0
  114. package/dist/forgejo/repo.js.map +1 -0
  115. package/dist/github/gh-ci.d.ts +4 -0
  116. package/dist/github/gh-ci.d.ts.map +1 -0
  117. package/dist/github/gh-ci.js +140 -0
  118. package/dist/github/gh-ci.js.map +1 -0
  119. package/dist/github/gh-deployment.d.ts +4 -0
  120. package/dist/github/gh-deployment.d.ts.map +1 -0
  121. package/dist/github/gh-deployment.js +92 -0
  122. package/dist/github/gh-deployment.js.map +1 -0
  123. package/dist/github/gh-repo.d.ts +4 -0
  124. package/dist/github/gh-repo.d.ts.map +1 -0
  125. package/dist/github/gh-repo.js +52 -0
  126. package/dist/github/gh-repo.js.map +1 -0
  127. package/dist/github/github-api.d.ts +70 -0
  128. package/dist/github/github-api.d.ts.map +1 -0
  129. package/dist/github/github-api.js +120 -0
  130. package/dist/github/github-api.js.map +1 -0
  131. package/dist/github/github.d.ts +4 -0
  132. package/dist/github/github.d.ts.map +1 -0
  133. package/dist/github/github.js +34 -0
  134. package/dist/github/github.js.map +1 -0
  135. package/dist/gitlab/gitlab-api.d.ts +77 -0
  136. package/dist/gitlab/gitlab-api.d.ts.map +1 -0
  137. package/dist/gitlab/gitlab-api.js +124 -0
  138. package/dist/gitlab/gitlab-api.js.map +1 -0
  139. package/dist/gitlab/gitlab.d.ts +4 -0
  140. package/dist/gitlab/gitlab.d.ts.map +1 -0
  141. package/dist/gitlab/gitlab.js +34 -0
  142. package/dist/gitlab/gitlab.js.map +1 -0
  143. package/dist/gitlab/gl-ci.d.ts +4 -0
  144. package/dist/gitlab/gl-ci.d.ts.map +1 -0
  145. package/dist/gitlab/gl-ci.js +130 -0
  146. package/dist/gitlab/gl-ci.js.map +1 -0
  147. package/dist/gitlab/gl-deployment.d.ts +4 -0
  148. package/dist/gitlab/gl-deployment.d.ts.map +1 -0
  149. package/dist/gitlab/gl-deployment.js +93 -0
  150. package/dist/gitlab/gl-deployment.js.map +1 -0
  151. package/dist/gitlab/gl-repo.d.ts +4 -0
  152. package/dist/gitlab/gl-repo.d.ts.map +1 -0
  153. package/dist/gitlab/gl-repo.js +61 -0
  154. package/dist/gitlab/gl-repo.js.map +1 -0
  155. package/dist/host/host.d.ts +4 -0
  156. package/dist/host/host.d.ts.map +1 -0
  157. package/dist/host/host.js +48 -0
  158. package/dist/host/host.js.map +1 -0
  159. package/dist/host/workspace.d.ts +4 -0
  160. package/dist/host/workspace.d.ts.map +1 -0
  161. package/dist/host/workspace.js +152 -0
  162. package/dist/host/workspace.js.map +1 -0
  163. package/dist/index.d.ts +51 -0
  164. package/dist/index.d.ts.map +1 -0
  165. package/dist/index.js +43 -0
  166. package/dist/index.js.map +1 -0
  167. package/dist/integrations/discord-api.d.ts +31 -0
  168. package/dist/integrations/discord-api.d.ts.map +1 -0
  169. package/dist/integrations/discord-api.js +85 -0
  170. package/dist/integrations/discord-api.js.map +1 -0
  171. package/dist/integrations/discord.d.ts +4 -0
  172. package/dist/integrations/discord.d.ts.map +1 -0
  173. package/dist/integrations/discord.js +133 -0
  174. package/dist/integrations/discord.js.map +1 -0
  175. package/dist/integrations/stripe-api.d.ts +8 -0
  176. package/dist/integrations/stripe-api.d.ts.map +1 -0
  177. package/dist/integrations/stripe-api.js +16 -0
  178. package/dist/integrations/stripe-api.js.map +1 -0
  179. package/dist/integrations/stripe.d.ts +4 -0
  180. package/dist/integrations/stripe.d.ts.map +1 -0
  181. package/dist/integrations/stripe.js +28 -0
  182. package/dist/integrations/stripe.js.map +1 -0
  183. package/dist/komodo/deployment.d.ts +4 -0
  184. package/dist/komodo/deployment.d.ts.map +1 -0
  185. package/dist/komodo/deployment.js +103 -0
  186. package/dist/komodo/deployment.js.map +1 -0
  187. package/dist/komodo/komodo-api.d.ts +150 -0
  188. package/dist/komodo/komodo-api.d.ts.map +1 -0
  189. package/dist/komodo/komodo-api.js +104 -0
  190. package/dist/komodo/komodo-api.js.map +1 -0
  191. package/dist/komodo/komodo-notify.d.ts +4 -0
  192. package/dist/komodo/komodo-notify.d.ts.map +1 -0
  193. package/dist/komodo/komodo-notify.js +88 -0
  194. package/dist/komodo/komodo-notify.js.map +1 -0
  195. package/dist/komodo/komodo-periphery.d.ts +4 -0
  196. package/dist/komodo/komodo-periphery.d.ts.map +1 -0
  197. package/dist/komodo/komodo-periphery.js +92 -0
  198. package/dist/komodo/komodo-periphery.js.map +1 -0
  199. package/dist/komodo/komodo-server.d.ts +4 -0
  200. package/dist/komodo/komodo-server.d.ts.map +1 -0
  201. package/dist/komodo/komodo-server.js +54 -0
  202. package/dist/komodo/komodo-server.js.map +1 -0
  203. package/dist/komodo/komodo-user.d.ts +4 -0
  204. package/dist/komodo/komodo-user.d.ts.map +1 -0
  205. package/dist/komodo/komodo-user.js +66 -0
  206. package/dist/komodo/komodo-user.js.map +1 -0
  207. package/dist/komodo/komodo.d.ts +4 -0
  208. package/dist/komodo/komodo.d.ts.map +1 -0
  209. package/dist/komodo/komodo.js +222 -0
  210. package/dist/komodo/komodo.js.map +1 -0
  211. package/dist/network/cf-route.d.ts +5 -0
  212. package/dist/network/cf-route.d.ts.map +1 -0
  213. package/dist/network/cf-route.js +74 -0
  214. package/dist/network/cf-route.js.map +1 -0
  215. package/dist/network/cloudflare-api.d.ts +85 -0
  216. package/dist/network/cloudflare-api.d.ts.map +1 -0
  217. package/dist/network/cloudflare-api.js +110 -0
  218. package/dist/network/cloudflare-api.js.map +1 -0
  219. package/dist/network/cloudflare.d.ts +4 -0
  220. package/dist/network/cloudflare.d.ts.map +1 -0
  221. package/dist/network/cloudflare.js +29 -0
  222. package/dist/network/cloudflare.js.map +1 -0
  223. package/dist/network/tunnel.d.ts +5 -0
  224. package/dist/network/tunnel.d.ts.map +1 -0
  225. package/dist/network/tunnel.js +127 -0
  226. package/dist/network/tunnel.js.map +1 -0
  227. package/dist/observability/signoz.d.ts +4 -0
  228. package/dist/observability/signoz.d.ts.map +1 -0
  229. package/dist/observability/signoz.js +391 -0
  230. package/dist/observability/signoz.js.map +1 -0
  231. package/dist/providers.d.ts +25 -0
  232. package/dist/providers.d.ts.map +1 -0
  233. package/dist/providers.js +110 -0
  234. package/dist/providers.js.map +1 -0
  235. package/dist/services/compose-service.d.ts +34 -0
  236. package/dist/services/compose-service.d.ts.map +1 -0
  237. package/dist/services/compose-service.js +150 -0
  238. package/dist/services/compose-service.js.map +1 -0
  239. package/dist/services/infisical.d.ts +4 -0
  240. package/dist/services/infisical.d.ts.map +1 -0
  241. package/dist/services/infisical.js +72 -0
  242. package/dist/services/infisical.js.map +1 -0
  243. package/dist/services/invoiceninja.d.ts +4 -0
  244. package/dist/services/invoiceninja.d.ts.map +1 -0
  245. package/dist/services/invoiceninja.js +116 -0
  246. package/dist/services/invoiceninja.js.map +1 -0
  247. package/dist/services/openproject.d.ts +4 -0
  248. package/dist/services/openproject.d.ts.map +1 -0
  249. package/dist/services/openproject.js +45 -0
  250. package/dist/services/openproject.js.map +1 -0
  251. package/dist/services/outline.d.ts +4 -0
  252. package/dist/services/outline.d.ts.map +1 -0
  253. package/dist/services/outline.js +121 -0
  254. package/dist/services/outline.js.map +1 -0
  255. package/dist/services/paperless.d.ts +4 -0
  256. package/dist/services/paperless.d.ts.map +1 -0
  257. package/dist/services/paperless.js +48 -0
  258. package/dist/services/paperless.js.map +1 -0
  259. package/package.json +54 -0
@@ -0,0 +1,105 @@
1
+ import { z } from "zod";
2
+ import { composeDown, composeUp, containerImage, restampBacking, stateDir, waitReady } from "../core/backing-ssh.js";
3
+ import { parseInputs, sshSchema, sshTarget } from "../core/inputs.js";
4
+ import { sshExecutor } from "../core/ssh.js";
5
+ const KIND = "valkey";
6
+ const READY_TIMEOUT_MS = 60_000;
7
+ const valkeySchema = sshSchema.extend({
8
+ internalIp: z.string(),
9
+ publishPort: z.number(),
10
+ adminPassword: z.string(),
11
+ image: z.string(),
12
+ });
13
+ const parse = (inputs) => parseInputs(valkeySchema, inputs, KIND);
14
+ const outputsFor = (parsed) => ({
15
+ internalHost: parsed.internalIp,
16
+ port: String(parsed.publishPort),
17
+ });
18
+ const composeYaml = (id, parsed) => [
19
+ "services:",
20
+ " valkey:",
21
+ ` image: ${parsed.image}`,
22
+ " restart: unless-stopped",
23
+ " command: [ valkey-server, /etc/valkey/valkey.conf ]",
24
+ " volumes:",
25
+ " - data:/data",
26
+ " - ./valkey.conf:/etc/valkey/valkey.conf:ro",
27
+ ` ports: [ "${parsed.publishPort}:6379" ]`,
28
+ ` labels: [ "intentic.id=${id}" ]`,
29
+ "volumes: { data: {} }",
30
+ "",
31
+ ].join("\n");
32
+ const valkeyConf = (parsed) => [`requirepass ${parsed.adminPassword}`, "appendonly yes", ""].join("\n");
33
+ const ensureFiles = async (session, id, parsed) => {
34
+ const dir = stateDir(KIND, id);
35
+ await session.exec(`mkdir -p ${dir}`);
36
+ await session.exec(`cat > ${dir}/compose.yaml <<'COMPOSE_EOF'\n${composeYaml(id, parsed)}COMPOSE_EOF`);
37
+ await session.exec(`cat > ${dir}/valkey.conf <<'CONF_EOF'\n${valkeyConf(parsed)}CONF_EOF`);
38
+ await session.exec(`chmod 600 ${dir}/valkey.conf`);
39
+ };
40
+ const readyProbe = (id, parsed) => `cid=$(docker ps -q --filter "label=intentic.id=${id}"); [ -n "$cid" ] && docker exec "$cid" valkey-cli -a '${parsed.adminPassword}' ping | grep -q PONG`;
41
+ export const createValkeyProvider = (executor = sshExecutor) => ({
42
+ read: async (inputs, ctx) => {
43
+ const parsed = parse(inputs);
44
+ let session;
45
+ try {
46
+ session = await executor.connect(sshTarget(parsed));
47
+ }
48
+ catch (error) {
49
+ ctx.log(`valkey "${ctx.id}": host not reachable over SSH, treating as not-yet-created: ${String(error)}`);
50
+ return undefined;
51
+ }
52
+ try {
53
+ const probe = await session.exec(readyProbe(ctx.id, parsed));
54
+ if (probe.code !== 0) {
55
+ return undefined;
56
+ }
57
+ return { outputs: outputsFor(parsed), detail: { image: await containerImage(session, ctx.id) } };
58
+ }
59
+ finally {
60
+ await session.dispose();
61
+ }
62
+ },
63
+ diff: (inputs, observed) => {
64
+ const parsed = parse(inputs);
65
+ const image = (observed.detail?.["image"] ?? "");
66
+ return image === parsed.image
67
+ ? { action: "noop" }
68
+ : { action: "update", reason: `valkey image differs (running ${image}, want ${parsed.image})` };
69
+ },
70
+ apply: async (inputs, _observed, ctx) => {
71
+ const parsed = parse(inputs);
72
+ const session = await executor.connect(sshTarget(parsed));
73
+ try {
74
+ await ensureFiles(session, ctx.id, parsed);
75
+ await composeUp(session, KIND, ctx.id);
76
+ await waitReady(session, KIND, ctx.id, readyProbe(ctx.id, parsed), READY_TIMEOUT_MS);
77
+ return outputsFor(parsed);
78
+ }
79
+ finally {
80
+ await session.dispose();
81
+ }
82
+ },
83
+ delete: async (inputs, ctx) => {
84
+ const parsed = parse(inputs);
85
+ const session = await executor.connect(sshTarget(parsed));
86
+ try {
87
+ await composeDown(session, KIND, ctx.id);
88
+ }
89
+ finally {
90
+ await session.dispose();
91
+ }
92
+ },
93
+ restamp: async (oldId, inputs, ctx) => {
94
+ const target = sshTarget(parseInputs(sshSchema, inputs, KIND));
95
+ const image = typeof inputs["image"] === "string" ? inputs["image"] : "busybox";
96
+ const session = await executor.connect(target);
97
+ try {
98
+ await restampBacking(session, KIND, oldId, ctx.id, image);
99
+ }
100
+ finally {
101
+ await session.dispose();
102
+ }
103
+ },
104
+ });
105
+ //# sourceMappingURL=valkey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"valkey.js","sourceRoot":"","sources":["../../src/data/valkey.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Provider } from "@intentic/engine";
2
+ import type { ForgejoApi } from "./forgejo-api.js";
3
+ export declare const createCiProvider: (api?: ForgejoApi) => Provider;
4
+ //# sourceMappingURL=ci.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../src/forgejo/ci.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,kBAAkB,CAAC;AAIjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAgFnD,eAAO,MAAM,gBAAgB,GAAI,MAAK,UAAuB,KAAG,QAoF9D,CAAC"}
@@ -0,0 +1,138 @@
1
+ import { z } from "zod";
2
+ import { normalize, starterDockerfile } from "../core/ci-yaml.js";
3
+ import { parseInputs } from "../core/inputs.js";
4
+ import { forgejoApi } from "./forgejo-api.js";
5
+ const ciSchema = z.object({
6
+ forgejoUrl: z.string(),
7
+ adminUser: z.string(),
8
+ adminPassword: z.string(),
9
+ komodoPassword: z.string(),
10
+ owner: z.string(),
11
+ repoName: z.string(),
12
+ branch: z.string(),
13
+ registry: z.string(),
14
+ tag: z.string(),
15
+ packagesToken: z.string(),
16
+ komodoUrl: z.string(),
17
+ deployment: z.string(),
18
+ });
19
+ const parse = (inputs) => parseInputs(ciSchema, inputs, "ci");
20
+ const SECRET_REGISTRY = "REGISTRY_TOKEN";
21
+ const SECRET_KOMODO = "KOMODO_PASSWORD";
22
+ const workflowPath = (tag) => `.forgejo/workflows/build-${tag}.yaml`;
23
+ const DOCKERFILE_PATH = "Dockerfile";
24
+ const workflowYaml = (parsed) => {
25
+ const base = `${parsed.registry}/${parsed.owner}/${parsed.repoName}`;
26
+ return [
27
+ "# Generated by intentic: build the image, push it to the Forgejo registry, notify Komodo to redeploy.",
28
+ "on:",
29
+ " push:",
30
+ ` branches: [ "${parsed.branch}" ]`,
31
+ "jobs:",
32
+ " build:",
33
+ " runs-on: docker",
34
+ " steps:",
35
+ " - uses: https://github.com/actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1",
36
+ " - uses: https://github.com/docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0",
37
+ " with:",
38
+ ` registry: ${parsed.registry}`,
39
+ ` username: ${parsed.adminUser}`,
40
+ ` password: \${{ secrets.${SECRET_REGISTRY} }}`,
41
+ " - uses: https://github.com/docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2",
42
+ " with:",
43
+ " context: .",
44
+ " push: true",
45
+ " tags: |",
46
+ ` ${base}:${parsed.tag}`,
47
+ ` ${base}:\${{ github.sha }}`,
48
+ " - name: notify komodo to redeploy",
49
+ " run: |",
50
+ ` KOMODO_PASSWORD='\${{ secrets.${SECRET_KOMODO} }}'`,
51
+ ` JWT=$(curl -sf ${parsed.komodoUrl}/auth/login/LoginLocalUser -H 'Content-Type: application/json' \\`,
52
+ ` -d '{"username":"${parsed.adminUser}","password":"'"$KOMODO_PASSWORD"'"}' | sed -n 's/.*"jwt":"\\([^"]*\\)".*/\\1/p')`,
53
+ ` curl -sf ${parsed.komodoUrl}/execute -H "Authorization: $JWT" -H 'Content-Type: application/json' \\`,
54
+ ` -d '{"type":"Deploy","params":{"deployment":"${parsed.deployment}"}}'`,
55
+ "",
56
+ ].join("\n");
57
+ };
58
+ export const createCiProvider = (api = forgejoApi) => ({
59
+ read: async (inputs, ctx) => {
60
+ if (typeof inputs["forgejoUrl"] !== "string" || typeof inputs["komodoUrl"] !== "string") {
61
+ return undefined;
62
+ }
63
+ const parsed = parse(inputs);
64
+ try {
65
+ const workflow = await api.readFile({
66
+ baseUrl: parsed.forgejoUrl,
67
+ user: parsed.adminUser,
68
+ password: parsed.adminPassword,
69
+ owner: parsed.owner,
70
+ name: parsed.repoName,
71
+ branch: parsed.branch,
72
+ path: workflowPath(parsed.tag),
73
+ });
74
+ if (workflow === undefined) {
75
+ return undefined;
76
+ }
77
+ return { outputs: {}, detail: { workflow } };
78
+ }
79
+ catch (error) {
80
+ ctx.log(`ci "${ctx.id}": forgejo not reachable yet, treating as not-yet-created: ${String(error)}`);
81
+ return undefined;
82
+ }
83
+ },
84
+ diff: (inputs, observed) => {
85
+ const workflow = observed.detail?.["workflow"];
86
+ if (typeof workflow !== "string" || normalize(workflow) !== normalize(workflowYaml(parse(inputs)))) {
87
+ return { action: "update", reason: "ci workflow differs from desired" };
88
+ }
89
+ return { action: "noop" };
90
+ },
91
+ apply: async (inputs) => {
92
+ const parsed = parse(inputs);
93
+ const repo = {
94
+ baseUrl: parsed.forgejoUrl,
95
+ user: parsed.adminUser,
96
+ password: parsed.adminPassword,
97
+ owner: parsed.owner,
98
+ name: parsed.repoName,
99
+ };
100
+ await api.setRepoSecret({ ...repo, secretName: SECRET_REGISTRY, data: parsed.packagesToken });
101
+ await api.setRepoSecret({ ...repo, secretName: SECRET_KOMODO, data: parsed.komodoPassword });
102
+ const dockerfile = await api.readFile({ ...repo, branch: parsed.branch, path: DOCKERFILE_PATH });
103
+ if (dockerfile === undefined) {
104
+ await api.commitFile({
105
+ ...repo,
106
+ branch: parsed.branch,
107
+ path: DOCKERFILE_PATH,
108
+ content: starterDockerfile(),
109
+ message: "intentic: starter Dockerfile",
110
+ });
111
+ }
112
+ await api.commitFile({
113
+ ...repo,
114
+ branch: parsed.branch,
115
+ path: workflowPath(parsed.tag),
116
+ content: workflowYaml(parsed),
117
+ message: "intentic: ci workflow",
118
+ });
119
+ return {};
120
+ },
121
+ delete: async (inputs) => {
122
+ if (typeof inputs["forgejoUrl"] !== "string") {
123
+ return;
124
+ }
125
+ const parsed = parse(inputs);
126
+ const repo = {
127
+ baseUrl: parsed.forgejoUrl,
128
+ user: parsed.adminUser,
129
+ password: parsed.adminPassword,
130
+ owner: parsed.owner,
131
+ name: parsed.repoName,
132
+ };
133
+ await api.deleteFile({ ...repo, branch: parsed.branch, path: workflowPath(parsed.tag), message: "intentic: remove ci workflow" });
134
+ await api.deleteRepoSecret({ ...repo, secretName: SECRET_REGISTRY });
135
+ await api.deleteRepoSecret({ ...repo, secretName: SECRET_KOMODO });
136
+ },
137
+ });
138
+ //# sourceMappingURL=ci.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci.js","sourceRoot":"","sources":["../../src/forgejo/ci.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;IAEtB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IAGtB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAG1B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IAEpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAElB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IAEpB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IAEf,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IAEzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IAErB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACzB,CAAC,CAAC;AAEH,MAAM,KAAK,GAAG,CAAC,MAAsB,EAAY,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAExF,MAAM,eAAe,GAAG,gBAAgB,CAAC;AACzC,MAAM,aAAa,GAAG,iBAAiB,CAAC;AACxC,MAAM,YAAY,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,4BAA4B,GAAG,OAAO,CAAC;AACrF,MAAM,eAAe,GAAG,YAAY,CAAC;AAMrC,MAAM,YAAY,GAAG,CAAC,MAAgB,EAAU,EAAE;IAC9C,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;IACrE,OAAO;QACH,uGAAuG;QACvG,KAAK;QACL,SAAS;QACT,oBAAoB,MAAM,CAAC,MAAM,KAAK;QACtC,OAAO;QACP,UAAU;QACV,qBAAqB;QACrB,YAAY;QACZ,qGAAqG;QACrG,wGAAwG;QACxG,eAAe;QACf,uBAAuB,MAAM,CAAC,QAAQ,EAAE;QACxC,uBAAuB,MAAM,CAAC,SAAS,EAAE;QACzC,oCAAoC,eAAe,KAAK;QACxD,8GAA8G;QAC9G,eAAe;QACf,sBAAsB;QACtB,sBAAsB;QACtB,mBAAmB;QACnB,eAAe,IAAI,IAAI,MAAM,CAAC,GAAG,EAAE;QACnC,eAAe,IAAI,qBAAqB;QACxC,yCAAyC;QACzC,gBAAgB;QAChB,2CAA2C,aAAa,MAAM;QAC9D,4BAA4B,MAAM,CAAC,SAAS,mEAAmE;QAC/G,gCAAgC,MAAM,CAAC,SAAS,mFAAmF;QACnI,sBAAsB,MAAM,CAAC,SAAS,0EAA0E;QAChH,4DAA4D,MAAM,CAAC,UAAU,MAAM;QACnF,EAAE;KACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB,CAAC,CAAC;AAOF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAkB,UAAU,EAAY,EAAE,CAAC,CAAC;IACzE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QACxB,IAAI,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,QAAQ,EAAE,CAAC;YACtF,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC;gBAChC,OAAO,EAAE,MAAM,CAAC,UAAU;gBAC1B,IAAI,EAAE,MAAM,CAAC,SAAS;gBACtB,QAAQ,EAAE,MAAM,CAAC,aAAa;gBAC9B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,MAAM,CAAC,QAAQ;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC;aACjC,CAAC,CAAC;YACH,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,SAAS,CAAC;YACrB,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,8DAA8D,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpG,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IACD,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACjG,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,kCAAkC,EAAE,CAAC;QAC5E,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC9B,CAAC;IACD,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACpB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG;YACT,OAAO,EAAE,MAAM,CAAC,UAAU;YAC1B,IAAI,EAAE,MAAM,CAAC,SAAS;YACtB,QAAQ,EAAE,MAAM,CAAC,aAAa;YAC9B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,QAAQ;SACxB,CAAC;QAEF,MAAM,GAAG,CAAC,aAAa,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;QAC9F,MAAM,GAAG,CAAC,aAAa,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;QAG7F,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;QACjG,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,GAAG,CAAC,UAAU,CAAC;gBACjB,GAAG,IAAI;gBACP,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,iBAAiB,EAAE;gBAC5B,OAAO,EAAE,8BAA8B;aAC1C,CAAC,CAAC;QACP,CAAC;QAED,MAAM,GAAG,CAAC,UAAU,CAAC;YACjB,GAAG,IAAI;YACP,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC;YAC9B,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC;YAC7B,OAAO,EAAE,uBAAuB;SACnC,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACd,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACrB,IAAI,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC3C,OAAO;QACX,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG;YACT,OAAO,EAAE,MAAM,CAAC,UAAU;YAC1B,IAAI,EAAE,MAAM,CAAC,SAAS;YACtB,QAAQ,EAAE,MAAM,CAAC,aAAa;YAC9B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,QAAQ;SACxB,CAAC;QAGF,MAAM,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAC;QAClI,MAAM,GAAG,CAAC,gBAAgB,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC;QACrE,MAAM,GAAG,CAAC,gBAAgB,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;IACvE,CAAC;CACJ,CAAC,CAAC"}
@@ -0,0 +1,209 @@
1
+ import { z } from "zod";
2
+ export interface ForgejoRepo {
3
+ readonly cloneUrl: string;
4
+ readonly sshUrl: string;
5
+ }
6
+ export interface ForgejoTeam {
7
+ readonly id: number;
8
+ readonly permission: string;
9
+ }
10
+ export declare const forgejoHookSchema: z.ZodObject<{
11
+ id: z.ZodNumber;
12
+ type: z.ZodString;
13
+ config: z.ZodRecord<z.ZodString, z.ZodString>;
14
+ events: z.ZodArray<z.ZodString>;
15
+ active: z.ZodBoolean;
16
+ }, z.core.$strip>;
17
+ export type ForgejoHook = z.infer<typeof forgejoHookSchema>;
18
+ export interface ForgejoApi {
19
+ readonly findRepo: (args: {
20
+ readonly baseUrl: string;
21
+ readonly user: string;
22
+ readonly password: string;
23
+ readonly owner: string;
24
+ readonly name: string;
25
+ }) => Promise<ForgejoRepo | undefined>;
26
+ readonly createRepo: (args: {
27
+ readonly baseUrl: string;
28
+ readonly user: string;
29
+ readonly password: string;
30
+ readonly owner: string;
31
+ readonly ownerIsOrg: boolean;
32
+ readonly name: string;
33
+ readonly private: boolean;
34
+ readonly autoInit: boolean;
35
+ }) => Promise<ForgejoRepo>;
36
+ readonly findUser: (args: {
37
+ readonly baseUrl: string;
38
+ readonly user: string;
39
+ readonly password: string;
40
+ readonly username: string;
41
+ }) => Promise<boolean>;
42
+ readonly createUser: (args: {
43
+ readonly baseUrl: string;
44
+ readonly user: string;
45
+ readonly password: string;
46
+ readonly username: string;
47
+ readonly email: string;
48
+ readonly accountPassword: string;
49
+ }) => Promise<void>;
50
+ readonly findOrg: (args: {
51
+ readonly baseUrl: string;
52
+ readonly user: string;
53
+ readonly password: string;
54
+ readonly org: string;
55
+ }) => Promise<boolean>;
56
+ readonly createOrg: (args: {
57
+ readonly baseUrl: string;
58
+ readonly user: string;
59
+ readonly password: string;
60
+ readonly org: string;
61
+ }) => Promise<void>;
62
+ readonly findTeam: (args: {
63
+ readonly baseUrl: string;
64
+ readonly user: string;
65
+ readonly password: string;
66
+ readonly org: string;
67
+ readonly name: string;
68
+ }) => Promise<ForgejoTeam | undefined>;
69
+ readonly createTeam: (args: {
70
+ readonly baseUrl: string;
71
+ readonly user: string;
72
+ readonly password: string;
73
+ readonly org: string;
74
+ readonly name: string;
75
+ readonly permission: string;
76
+ }) => Promise<ForgejoTeam>;
77
+ readonly addTeamMember: (args: {
78
+ readonly baseUrl: string;
79
+ readonly user: string;
80
+ readonly password: string;
81
+ readonly teamId: number;
82
+ readonly username: string;
83
+ }) => Promise<void>;
84
+ readonly addTeamRepo: (args: {
85
+ readonly baseUrl: string;
86
+ readonly user: string;
87
+ readonly password: string;
88
+ readonly teamId: number;
89
+ readonly org: string;
90
+ readonly name: string;
91
+ }) => Promise<void>;
92
+ readonly listHooks: (args: {
93
+ readonly baseUrl: string;
94
+ readonly user: string;
95
+ readonly password: string;
96
+ readonly owner: string;
97
+ readonly name: string;
98
+ }) => Promise<readonly ForgejoHook[]>;
99
+ readonly createHook: (args: {
100
+ readonly baseUrl: string;
101
+ readonly user: string;
102
+ readonly password: string;
103
+ readonly owner: string;
104
+ readonly name: string;
105
+ readonly type: string;
106
+ readonly config: Readonly<Record<string, string>>;
107
+ readonly events: readonly string[];
108
+ }) => Promise<void>;
109
+ readonly updateHook: (args: {
110
+ readonly baseUrl: string;
111
+ readonly user: string;
112
+ readonly password: string;
113
+ readonly owner: string;
114
+ readonly name: string;
115
+ readonly id: number;
116
+ readonly config: Readonly<Record<string, string>>;
117
+ readonly events: readonly string[];
118
+ }) => Promise<void>;
119
+ readonly latestCommit: (args: {
120
+ readonly baseUrl: string;
121
+ readonly user: string;
122
+ readonly password: string;
123
+ readonly owner: string;
124
+ readonly name: string;
125
+ readonly branch: string;
126
+ }) => Promise<string | undefined>;
127
+ readonly readFile: (args: {
128
+ readonly baseUrl: string;
129
+ readonly user: string;
130
+ readonly password: string;
131
+ readonly owner: string;
132
+ readonly name: string;
133
+ readonly branch: string;
134
+ readonly path: string;
135
+ }) => Promise<string | undefined>;
136
+ readonly commitFile: (args: {
137
+ readonly baseUrl: string;
138
+ readonly user: string;
139
+ readonly password: string;
140
+ readonly owner: string;
141
+ readonly name: string;
142
+ readonly branch: string;
143
+ readonly path: string;
144
+ readonly content: string;
145
+ readonly message: string;
146
+ }) => Promise<void>;
147
+ readonly setRepoSecret: (args: {
148
+ readonly baseUrl: string;
149
+ readonly user: string;
150
+ readonly password: string;
151
+ readonly owner: string;
152
+ readonly name: string;
153
+ readonly secretName: string;
154
+ readonly data: string;
155
+ }) => Promise<void>;
156
+ readonly deleteRepo: (args: {
157
+ readonly baseUrl: string;
158
+ readonly user: string;
159
+ readonly password: string;
160
+ readonly owner: string;
161
+ readonly name: string;
162
+ }) => Promise<void>;
163
+ readonly deleteFile: (args: {
164
+ readonly baseUrl: string;
165
+ readonly user: string;
166
+ readonly password: string;
167
+ readonly owner: string;
168
+ readonly name: string;
169
+ readonly branch: string;
170
+ readonly path: string;
171
+ readonly message: string;
172
+ }) => Promise<void>;
173
+ readonly deleteRepoSecret: (args: {
174
+ readonly baseUrl: string;
175
+ readonly user: string;
176
+ readonly password: string;
177
+ readonly owner: string;
178
+ readonly name: string;
179
+ readonly secretName: string;
180
+ }) => Promise<void>;
181
+ readonly deleteHook: (args: {
182
+ readonly baseUrl: string;
183
+ readonly user: string;
184
+ readonly password: string;
185
+ readonly owner: string;
186
+ readonly name: string;
187
+ readonly id: number;
188
+ }) => Promise<void>;
189
+ readonly deleteUser: (args: {
190
+ readonly baseUrl: string;
191
+ readonly user: string;
192
+ readonly password: string;
193
+ readonly username: string;
194
+ }) => Promise<void>;
195
+ readonly deleteOrg: (args: {
196
+ readonly baseUrl: string;
197
+ readonly user: string;
198
+ readonly password: string;
199
+ readonly org: string;
200
+ }) => Promise<void>;
201
+ readonly deleteTeam: (args: {
202
+ readonly baseUrl: string;
203
+ readonly user: string;
204
+ readonly password: string;
205
+ readonly teamId: number;
206
+ }) => Promise<void>;
207
+ }
208
+ export declare const forgejoApi: ForgejoApi;
209
+ //# sourceMappingURL=forgejo-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forgejo-api.d.ts","sourceRoot":"","sources":["../../src/forgejo/forgejo-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ForgejoApi } from "./forgejo-api.js";
2
+ export declare const fakeForgejoApi: (overrides?: Partial<ForgejoApi>) => ForgejoApi;
3
+ //# sourceMappingURL=forgejo-api.fake.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forgejo-api.fake.d.ts","sourceRoot":"","sources":["../../src/forgejo/forgejo-api.fake.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAQnD,eAAO,MAAM,cAAc,GAAI,YAAW,OAAO,CAAC,UAAU,CAAM,KAAG,UA0BnE,CAAC"}
@@ -0,0 +1,31 @@
1
+ const notUsed = async () => {
2
+ throw new Error("forgejo-api method not stubbed in this fake");
3
+ };
4
+ export const fakeForgejoApi = (overrides = {}) => ({
5
+ findRepo: notUsed,
6
+ createRepo: notUsed,
7
+ findUser: notUsed,
8
+ createUser: notUsed,
9
+ findOrg: notUsed,
10
+ createOrg: notUsed,
11
+ findTeam: notUsed,
12
+ createTeam: notUsed,
13
+ addTeamMember: notUsed,
14
+ addTeamRepo: notUsed,
15
+ listHooks: notUsed,
16
+ createHook: notUsed,
17
+ updateHook: notUsed,
18
+ latestCommit: notUsed,
19
+ readFile: notUsed,
20
+ commitFile: notUsed,
21
+ setRepoSecret: notUsed,
22
+ deleteRepo: notUsed,
23
+ deleteFile: notUsed,
24
+ deleteRepoSecret: notUsed,
25
+ deleteHook: notUsed,
26
+ deleteUser: notUsed,
27
+ deleteOrg: notUsed,
28
+ deleteTeam: notUsed,
29
+ ...overrides,
30
+ });
31
+ //# sourceMappingURL=forgejo-api.fake.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forgejo-api.fake.js","sourceRoot":"","sources":["../../src/forgejo/forgejo-api.fake.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,GAAG,KAAK,IAAoB,EAAE;IACvC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;AACnE,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,YAAiC,EAAE,EAAc,EAAE,CAAC,CAAC;IAChF,QAAQ,EAAE,OAAO;IACjB,UAAU,EAAE,OAAO;IACnB,QAAQ,EAAE,OAAO;IACjB,UAAU,EAAE,OAAO;IACnB,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,OAAO;IAClB,QAAQ,EAAE,OAAO;IACjB,UAAU,EAAE,OAAO;IACnB,aAAa,EAAE,OAAO;IACtB,WAAW,EAAE,OAAO;IACpB,SAAS,EAAE,OAAO;IAClB,UAAU,EAAE,OAAO;IACnB,UAAU,EAAE,OAAO;IACnB,YAAY,EAAE,OAAO;IACrB,QAAQ,EAAE,OAAO;IACjB,UAAU,EAAE,OAAO;IACnB,aAAa,EAAE,OAAO;IACtB,UAAU,EAAE,OAAO;IACnB,UAAU,EAAE,OAAO;IACnB,gBAAgB,EAAE,OAAO;IACzB,UAAU,EAAE,OAAO;IACnB,UAAU,EAAE,OAAO;IACnB,SAAS,EAAE,OAAO;IAClB,UAAU,EAAE,OAAO;IACnB,GAAG,SAAS;CACf,CAAC,CAAC"}