feat(secret-sync): Cloudflare Workers

This commit is contained in:
x032205
2025-07-09 17:03:18 -04:00
parent 692121445d
commit 4f348316e7
38 changed files with 526 additions and 12 deletions
@@ -3,21 +3,23 @@ import { useQuery, UseQueryOptions } from "@tanstack/react-query";
import { apiRequest } from "@app/config/request";
import { appConnectionKeys } from "../queries";
import { TCloudflareProject } from "./types";
import { TCloudflarePagesProject, TCloudflareWorkersProject } from "./types";
const cloudflareConnectionKeys = {
all: [...appConnectionKeys.all, "cloudflare"] as const,
listPagesProjects: (connectionId: string) =>
[...cloudflareConnectionKeys.all, "pages-projects", connectionId] as const
[...cloudflareConnectionKeys.all, "pages-projects", connectionId] as const,
listWorkersProjects: (connectionId: string) =>
[...cloudflareConnectionKeys.all, "workers-projects", connectionId] as const
};
export const useCloudflareConnectionListPagesProjects = (
connectionId: string,
options?: Omit<
UseQueryOptions<
TCloudflareProject[],
TCloudflarePagesProject[],
unknown,
TCloudflareProject[],
TCloudflarePagesProject[],
ReturnType<typeof cloudflareConnectionKeys.listPagesProjects>
>,
"queryKey" | "queryFn"
@@ -26,7 +28,7 @@ export const useCloudflareConnectionListPagesProjects = (
return useQuery({
queryKey: cloudflareConnectionKeys.listPagesProjects(connectionId),
queryFn: async () => {
const { data } = await apiRequest.get<TCloudflareProject[]>(
const { data } = await apiRequest.get<TCloudflarePagesProject[]>(
`/api/v1/app-connections/cloudflare/${connectionId}/cloudflare-pages-projects`
);
@@ -35,3 +37,28 @@ export const useCloudflareConnectionListPagesProjects = (
...options
});
};
export const useCloudflareConnectionListWorkersProjects = (
connectionId: string,
options?: Omit<
UseQueryOptions<
TCloudflareWorkersProject[],
unknown,
TCloudflareWorkersProject[],
ReturnType<typeof cloudflareConnectionKeys.listWorkersProjects>
>,
"queryKey" | "queryFn"
>
) => {
return useQuery({
queryKey: cloudflareConnectionKeys.listWorkersProjects(connectionId),
queryFn: async () => {
const { data } = await apiRequest.get<TCloudflareWorkersProject[]>(
`/api/v1/app-connections/cloudflare/${connectionId}/cloudflare-workers-projects`
);
return data;
},
...options
});
};
@@ -1,4 +1,8 @@
export type TCloudflareProject = {
export type TCloudflarePagesProject = {
id: string;
name: string;
};
export type TCloudflareWorkersProject = {
id: string;
};
@@ -21,6 +21,7 @@ export enum SecretSync {
Flyio = "flyio",
GitLab = "gitlab",
CloudflarePages = "cloudflare-pages",
CloudflareWorkers = "cloudflare-workers",
Zabbix = "zabbix"
}
@@ -0,0 +1,15 @@
import { AppConnection } from "@app/hooks/api/appConnections/enums";
import { SecretSync } from "@app/hooks/api/secretSyncs";
import { TRootSecretSync } from "@app/hooks/api/secretSyncs/types/root-sync";
export type TCloudflareWorkersSync = TRootSecretSync & {
destination: SecretSync.CloudflareWorkers;
destinationConfig: {
scriptId: string;
};
connection: {
app: AppConnection.Cloudflare;
name: string;
id: string;
};
};
@@ -10,6 +10,7 @@ import { TAzureDevOpsSync } from "./azure-devops-sync";
import { TAzureKeyVaultSync } from "./azure-key-vault-sync";
import { TCamundaSync } from "./camunda-sync";
import { TCloudflarePagesSync } from "./cloudflare-pages-sync";
import { TCloudflareWorkersSync } from "./cloudflare-workers-sync";
import { TDatabricksSync } from "./databricks-sync";
import { TFlyioSync } from "./flyio-sync";
import { TGcpSync } from "./gcp-sync";
@@ -55,6 +56,7 @@ export type TSecretSync =
| TFlyioSync
| TGitLabSync
| TCloudflarePagesSync
| TCloudflareWorkersSync
| TZabbixSync;
export type TListSecretSyncs = { secretSyncs: TSecretSync[] };