Spaces:
Runtime error
Runtime error
move to npm package
Browse files- bun.lockb +0 -0
- package.json +1 -0
- src/app/page.tsx +0 -2
- src/lib/comfy-deploy.ts +0 -133
- src/server/generate.tsx +1 -1
bun.lockb
CHANGED
Binary files a/bun.lockb and b/bun.lockb differ
|
|
package.json
CHANGED
@@ -17,6 +17,7 @@
|
|
17 |
"@radix-ui/react-tabs": "^1.0.4",
|
18 |
"class-variance-authority": "^0.7.0",
|
19 |
"clsx": "^2.1.0",
|
|
|
20 |
"lucide-react": "^0.309.0",
|
21 |
"next": "14.0.3",
|
22 |
"react": "^18",
|
|
|
17 |
"@radix-ui/react-tabs": "^1.0.4",
|
18 |
"class-variance-authority": "^0.7.0",
|
19 |
"clsx": "^2.1.0",
|
20 |
+
"comfydeploy": "^0.0.11",
|
21 |
"lucide-react": "^0.309.0",
|
22 |
"next": "14.0.3",
|
23 |
"react": "^18",
|
src/app/page.tsx
CHANGED
@@ -5,7 +5,6 @@ import { Button } from "@/components/ui/button";
|
|
5 |
import { Card, CardContent, CardHeader } from "@/components/ui/card";
|
6 |
import { Input } from "@/components/ui/input";
|
7 |
import { Label } from "@/components/ui/label";
|
8 |
-
import { Skeleton } from "@/components/ui/skeleton";
|
9 |
import {
|
10 |
checkStatus,
|
11 |
generate,
|
@@ -24,7 +23,6 @@ import {
|
|
24 |
SelectTrigger,
|
25 |
SelectValue,
|
26 |
} from "@/components/ui/select";
|
27 |
-
import { Separator } from "@/components/ui/separator";
|
28 |
|
29 |
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
|
30 |
import { ImageGenerationResult } from "@/components/ImageGenerationResult";
|
|
|
5 |
import { Card, CardContent, CardHeader } from "@/components/ui/card";
|
6 |
import { Input } from "@/components/ui/input";
|
7 |
import { Label } from "@/components/ui/label";
|
|
|
8 |
import {
|
9 |
checkStatus,
|
10 |
generate,
|
|
|
23 |
SelectTrigger,
|
24 |
SelectValue,
|
25 |
} from "@/components/ui/select";
|
|
|
26 |
|
27 |
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
|
28 |
import { ImageGenerationResult } from "@/components/ImageGenerationResult";
|
src/lib/comfy-deploy.ts
DELETED
@@ -1,133 +0,0 @@
|
|
1 |
-
import { z } from "zod";
|
2 |
-
|
3 |
-
const runTypes = z.object({
|
4 |
-
run_id: z.string(),
|
5 |
-
});
|
6 |
-
|
7 |
-
const runOutputTypes = z.object({
|
8 |
-
id: z.string(),
|
9 |
-
status: z.enum(["success", "failed", "running", "uploading", "not-started"]),
|
10 |
-
outputs: z.array(
|
11 |
-
z.object({
|
12 |
-
data: z.any(),
|
13 |
-
}),
|
14 |
-
),
|
15 |
-
});
|
16 |
-
|
17 |
-
const uploadFileTypes = z.object({
|
18 |
-
upload_url: z.string(),
|
19 |
-
file_id: z.string(),
|
20 |
-
download_url: z.string(),
|
21 |
-
});
|
22 |
-
|
23 |
-
export class ComfyDeployClient {
|
24 |
-
apiBase: string = "https://www.comfydeploy.com/api";
|
25 |
-
apiToken: string;
|
26 |
-
|
27 |
-
constructor({ apiBase, apiToken }: { apiBase?: string; apiToken: string }) {
|
28 |
-
if (apiBase) {
|
29 |
-
this.apiBase = `${apiBase}/api`;
|
30 |
-
}
|
31 |
-
this.apiToken = apiToken;
|
32 |
-
}
|
33 |
-
|
34 |
-
async run({
|
35 |
-
deployment_id,
|
36 |
-
inputs,
|
37 |
-
}: {
|
38 |
-
deployment_id: string;
|
39 |
-
inputs?: Record<string, string>;
|
40 |
-
}) {
|
41 |
-
return fetch(`${this.apiBase}/run`, {
|
42 |
-
method: "POST",
|
43 |
-
headers: {
|
44 |
-
"Content-Type": "application/json",
|
45 |
-
authorization: `Bearer ${this.apiToken}`,
|
46 |
-
},
|
47 |
-
body: JSON.stringify({
|
48 |
-
deployment_id: deployment_id,
|
49 |
-
inputs: inputs,
|
50 |
-
}),
|
51 |
-
cache: "no-store",
|
52 |
-
})
|
53 |
-
.then((response) => {
|
54 |
-
console.log('response', response)
|
55 |
-
return response.json()})
|
56 |
-
.then((json) => {
|
57 |
-
console.log('json', json)
|
58 |
-
return runTypes.parse(json)})
|
59 |
-
.catch((err) => {
|
60 |
-
console.error('err', err);
|
61 |
-
return null;
|
62 |
-
});
|
63 |
-
}
|
64 |
-
|
65 |
-
async getRun(run_id: string) {
|
66 |
-
return await fetch(`${this.apiBase}/run?run_id=${run_id}`, {
|
67 |
-
method: "GET",
|
68 |
-
headers: {
|
69 |
-
"Content-Type": "application/json",
|
70 |
-
authorization: `Bearer ${this.apiToken}`,
|
71 |
-
},
|
72 |
-
cache: "no-store",
|
73 |
-
})
|
74 |
-
.then((response) => response.json())
|
75 |
-
.then((json) => runOutputTypes.parse(json))
|
76 |
-
.catch((err) => {
|
77 |
-
console.error(err);
|
78 |
-
return null;
|
79 |
-
});
|
80 |
-
}
|
81 |
-
|
82 |
-
async runSync(props: {
|
83 |
-
deployment_id: string;
|
84 |
-
inputs?: Record<string, string>;
|
85 |
-
}) {
|
86 |
-
const runResult = await this.run(props);
|
87 |
-
if (!runResult) return null;
|
88 |
-
|
89 |
-
// 5 minutes
|
90 |
-
const timeout = 60 * 5;
|
91 |
-
const interval = 1000;
|
92 |
-
|
93 |
-
let run: Awaited<ReturnType<typeof this.getRun>> = null;
|
94 |
-
for (let i = 0; i < timeout; i++) {
|
95 |
-
run = await this.getRun(runResult.run_id);
|
96 |
-
if (run && run.status == "success") {
|
97 |
-
break;
|
98 |
-
}
|
99 |
-
await new Promise((resolve) => setTimeout(resolve, interval));
|
100 |
-
}
|
101 |
-
|
102 |
-
if (!run) {
|
103 |
-
return {
|
104 |
-
id: runResult.run_id,
|
105 |
-
};
|
106 |
-
}
|
107 |
-
|
108 |
-
return run;
|
109 |
-
}
|
110 |
-
|
111 |
-
async getUploadUrl(type: string, file_size: number) {
|
112 |
-
const obj = {
|
113 |
-
type: type,
|
114 |
-
file_size: file_size.toString(),
|
115 |
-
};
|
116 |
-
const url = new URL(`${this.apiBase}/upload-url`);
|
117 |
-
url.search = new URLSearchParams(obj).toString();
|
118 |
-
|
119 |
-
return await fetch(url.href, {
|
120 |
-
method: "GET",
|
121 |
-
headers: {
|
122 |
-
authorization: `Bearer ${this.apiToken}`,
|
123 |
-
},
|
124 |
-
cache: "no-store",
|
125 |
-
})
|
126 |
-
.then((response) => response.json())
|
127 |
-
.then((json) => uploadFileTypes.parse(json))
|
128 |
-
.catch((err) => {
|
129 |
-
console.error(err);
|
130 |
-
return null;
|
131 |
-
});
|
132 |
-
}
|
133 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/server/generate.tsx
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
"use server"
|
2 |
|
3 |
-
import { ComfyDeployClient } from "
|
4 |
|
5 |
const client = new ComfyDeployClient({
|
6 |
apiBase: process.env.COMFY_API_URL,
|
|
|
1 |
"use server"
|
2 |
|
3 |
+
import { ComfyDeployClient } from "comfydeploy"
|
4 |
|
5 |
const client = new ComfyDeployClient({
|
6 |
apiBase: process.env.COMFY_API_URL,
|