Spaces:
Running
Running
run svelte with express
Browse files- entrypoint.sh +1 -1
- package-lock.json +13 -1
- package.json +1 -0
- server.js +14 -0
- src/routes/api/@me/+server.ts +1 -2
- src/routes/api/community/[id]/+server.ts +1 -3
- src/routes/api/generate/+server.ts +5 -7
- src/routes/api/images/[id]/+server.ts +1 -2
- src/routes/api/models/+server.ts +1 -2
- src/routes/api/models/[id]/+server.ts +3 -4
- src/routes/api/scrap-models/+server.ts +1 -2
entrypoint.sh
CHANGED
|
@@ -4,4 +4,4 @@ npm run build &&
|
|
| 4 |
npx prisma generate &&
|
| 5 |
npx prisma migrate deploy &&
|
| 6 |
npx prisma db push &&
|
| 7 |
-
node
|
|
|
|
| 4 |
npx prisma generate &&
|
| 5 |
npx prisma migrate deploy &&
|
| 6 |
npx prisma db push &&
|
| 7 |
+
node server.js
|
package-lock.json
CHANGED
|
@@ -16,6 +16,7 @@
|
|
| 16 |
"@sveltejs/adapter-node": "^1.3.1",
|
| 17 |
"aws-sdk": "^2.1538.0",
|
| 18 |
"cookie": "^0.6.0",
|
|
|
|
| 19 |
"desm": "^1.3.1",
|
| 20 |
"express": "^4.18.2",
|
| 21 |
"js-cookie": "^3.0.5",
|
|
@@ -3750,6 +3751,18 @@
|
|
| 3750 |
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
|
| 3751 |
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
|
| 3752 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3753 |
"node_modules/cross-spawn": {
|
| 3754 |
"version": "7.0.3",
|
| 3755 |
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
|
@@ -5350,7 +5363,6 @@
|
|
| 5350 |
"version": "4.1.1",
|
| 5351 |
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
| 5352 |
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
|
| 5353 |
-
"dev": true,
|
| 5354 |
"engines": {
|
| 5355 |
"node": ">=0.10.0"
|
| 5356 |
}
|
|
|
|
| 16 |
"@sveltejs/adapter-node": "^1.3.1",
|
| 17 |
"aws-sdk": "^2.1538.0",
|
| 18 |
"cookie": "^0.6.0",
|
| 19 |
+
"cors": "^2.8.5",
|
| 20 |
"desm": "^1.3.1",
|
| 21 |
"express": "^4.18.2",
|
| 22 |
"js-cookie": "^3.0.5",
|
|
|
|
| 3751 |
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
|
| 3752 |
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
|
| 3753 |
},
|
| 3754 |
+
"node_modules/cors": {
|
| 3755 |
+
"version": "2.8.5",
|
| 3756 |
+
"resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
|
| 3757 |
+
"integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
|
| 3758 |
+
"dependencies": {
|
| 3759 |
+
"object-assign": "^4",
|
| 3760 |
+
"vary": "^1"
|
| 3761 |
+
},
|
| 3762 |
+
"engines": {
|
| 3763 |
+
"node": ">= 0.10"
|
| 3764 |
+
}
|
| 3765 |
+
},
|
| 3766 |
"node_modules/cross-spawn": {
|
| 3767 |
"version": "7.0.3",
|
| 3768 |
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
|
|
|
| 5363 |
"version": "4.1.1",
|
| 5364 |
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
| 5365 |
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
|
|
|
|
| 5366 |
"engines": {
|
| 5367 |
"node": ">=0.10.0"
|
| 5368 |
}
|
package.json
CHANGED
|
@@ -49,6 +49,7 @@
|
|
| 49 |
"@sveltejs/adapter-node": "^1.3.1",
|
| 50 |
"aws-sdk": "^2.1538.0",
|
| 51 |
"cookie": "^0.6.0",
|
|
|
|
| 52 |
"desm": "^1.3.1",
|
| 53 |
"express": "^4.18.2",
|
| 54 |
"js-cookie": "^3.0.5",
|
|
|
|
| 49 |
"@sveltejs/adapter-node": "^1.3.1",
|
| 50 |
"aws-sdk": "^2.1538.0",
|
| 51 |
"cookie": "^0.6.0",
|
| 52 |
+
"cors": "^2.8.5",
|
| 53 |
"desm": "^1.3.1",
|
| 54 |
"express": "^4.18.2",
|
| 55 |
"js-cookie": "^3.0.5",
|
server.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { handler } from './build/handler.js';
|
| 2 |
+
import express from 'express';
|
| 3 |
+
|
| 4 |
+
const app = express();
|
| 5 |
+
|
| 6 |
+
// Serve your "data/assets" folder
|
| 7 |
+
app.use(express.static('data/assets'))
|
| 8 |
+
|
| 9 |
+
// let SvelteKit handle everything else, including serving prerendered pages and static assets
|
| 10 |
+
app.use(handler);
|
| 11 |
+
|
| 12 |
+
app.listen(3000, () => {
|
| 13 |
+
console.log('listening on port 3000');
|
| 14 |
+
});
|
src/routes/api/@me/+server.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
| 1 |
import { json, type RequestEvent } from '@sveltejs/kit';
|
| 2 |
import prisma from '$lib/prisma';
|
| 3 |
-
import { env } from '$env/dynamic/private';
|
| 4 |
|
| 5 |
/** @type {import('./$types').RequestHandler} */
|
| 6 |
|
|
@@ -63,7 +62,7 @@ export async function GET(request : RequestEvent) {
|
|
| 63 |
return json({
|
| 64 |
user: {
|
| 65 |
...user,
|
| 66 |
-
is_admin: env
|
| 67 |
}
|
| 68 |
})
|
| 69 |
}
|
|
|
|
| 1 |
import { json, type RequestEvent } from '@sveltejs/kit';
|
| 2 |
import prisma from '$lib/prisma';
|
|
|
|
| 3 |
|
| 4 |
/** @type {import('./$types').RequestHandler} */
|
| 5 |
|
|
|
|
| 62 |
return json({
|
| 63 |
user: {
|
| 64 |
...user,
|
| 65 |
+
is_admin: process?.env?.SECRET_HF_ADMIN?.includes(user.sub)
|
| 66 |
}
|
| 67 |
})
|
| 68 |
}
|
src/routes/api/community/[id]/+server.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
| 1 |
import { json, type RequestEvent } from '@sveltejs/kit';
|
| 2 |
import { promises } from 'fs';
|
| 3 |
-
import { env } from '$env/dynamic/public';
|
| 4 |
|
| 5 |
import prisma from '$lib/prisma';
|
| 6 |
import { tokenIsAvailable } from '$lib/utils';
|
|
@@ -32,7 +31,6 @@ export async function GET({ params, url } : RequestEvent) {
|
|
| 32 |
},
|
| 33 |
model: {
|
| 34 |
select: {
|
| 35 |
-
title: true,
|
| 36 |
image: true,
|
| 37 |
id: true,
|
| 38 |
}
|
|
@@ -157,7 +155,7 @@ export async function DELETE({ params, cookies }: RequestEvent) {
|
|
| 157 |
}
|
| 158 |
})
|
| 159 |
|
| 160 |
-
await promises.unlink(`${env.PUBLIC_FILE_UPLOAD_DIR}/${gallery?.image}`)
|
| 161 |
|
| 162 |
return json({
|
| 163 |
success: true
|
|
|
|
| 1 |
import { json, type RequestEvent } from '@sveltejs/kit';
|
| 2 |
import { promises } from 'fs';
|
|
|
|
| 3 |
|
| 4 |
import prisma from '$lib/prisma';
|
| 5 |
import { tokenIsAvailable } from '$lib/utils';
|
|
|
|
| 31 |
},
|
| 32 |
model: {
|
| 33 |
select: {
|
|
|
|
| 34 |
image: true,
|
| 35 |
id: true,
|
| 36 |
}
|
|
|
|
| 155 |
}
|
| 156 |
})
|
| 157 |
|
| 158 |
+
await promises.unlink(`${process.env.PUBLIC_FILE_UPLOAD_DIR}/${gallery?.image}`)
|
| 159 |
|
| 160 |
return json({
|
| 161 |
success: true
|
src/routes/api/generate/+server.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
| 1 |
/** @type {import('./$types').RequestHandler} */
|
| 2 |
|
| 3 |
import { json, type RequestEvent } from '@sveltejs/kit';
|
| 4 |
-
import { env } from '$env/dynamic/private'
|
| 5 |
-
import { env as publicEnv } from '$env/dynamic/public';
|
| 6 |
import { promises } from 'fs';
|
| 7 |
import { randomUUID } from 'crypto';
|
| 8 |
|
|
@@ -38,10 +36,10 @@ export async function POST({ request, cookies } : RequestEvent) {
|
|
| 38 |
}
|
| 39 |
})
|
| 40 |
|
| 41 |
-
const response = await fetch(env.SECRET_INFERENCE_API_URL + "/models/" + generation?.model?.id, {
|
| 42 |
method: "POST",
|
| 43 |
headers: {
|
| 44 |
-
Authorization: `Bearer ${env.SECRET_HF_TOKEN}`,
|
| 45 |
'Content-Type': 'application/json',
|
| 46 |
['x-use-cache']: "0"
|
| 47 |
},
|
|
@@ -75,10 +73,10 @@ export async function POST({ request, cookies } : RequestEvent) {
|
|
| 75 |
if (token) {
|
| 76 |
const user = await tokenIsAvailable(token)
|
| 77 |
if (user?.sub) {
|
| 78 |
-
const dir = await promises.opendir(
|
| 79 |
-
if (!dir) await promises.mkdir(
|
| 80 |
const file_name_formatted = randomUUID() + "_" + generation?.inputs?.replaceAll(/[^a-zA-Z0-9]/g, "-") + ".png"
|
| 81 |
-
await promises.writeFile(`${
|
| 82 |
|
| 83 |
gallery = await prisma.gallery.create({
|
| 84 |
data: {
|
|
|
|
| 1 |
/** @type {import('./$types').RequestHandler} */
|
| 2 |
|
| 3 |
import { json, type RequestEvent } from '@sveltejs/kit';
|
|
|
|
|
|
|
| 4 |
import { promises } from 'fs';
|
| 5 |
import { randomUUID } from 'crypto';
|
| 6 |
|
|
|
|
| 36 |
}
|
| 37 |
})
|
| 38 |
|
| 39 |
+
const response = await fetch(process.env.SECRET_INFERENCE_API_URL + "/models/" + generation?.model?.id, {
|
| 40 |
method: "POST",
|
| 41 |
headers: {
|
| 42 |
+
Authorization: `Bearer ${process.env.SECRET_HF_TOKEN}`,
|
| 43 |
'Content-Type': 'application/json',
|
| 44 |
['x-use-cache']: "0"
|
| 45 |
},
|
|
|
|
| 73 |
if (token) {
|
| 74 |
const user = await tokenIsAvailable(token)
|
| 75 |
if (user?.sub) {
|
| 76 |
+
const dir = await promises.opendir(process.env.PUBLIC_FILE_UPLOAD_DIR).catch(() => null)
|
| 77 |
+
if (!dir) await promises.mkdir(process.env.PUBLIC_FILE_UPLOAD_DIR)
|
| 78 |
const file_name_formatted = randomUUID() + "_" + generation?.inputs?.replaceAll(/[^a-zA-Z0-9]/g, "-") + ".png"
|
| 79 |
+
await promises.writeFile(`${process.env.PUBLIC_FILE_UPLOAD_DIR}/${file_name_formatted}`, response)
|
| 80 |
|
| 81 |
gallery = await prisma.gallery.create({
|
| 82 |
data: {
|
src/routes/api/images/[id]/+server.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
| 1 |
import { json, type RequestEvent } from '@sveltejs/kit';
|
| 2 |
import { promises } from 'fs';
|
| 3 |
-
import { env } from '$env/dynamic/public';
|
| 4 |
|
| 5 |
import prisma from '$lib/prisma';
|
| 6 |
|
|
@@ -25,7 +24,7 @@ export async function GET({ params } : RequestEvent) {
|
|
| 25 |
}, { status: 404 })
|
| 26 |
}
|
| 27 |
|
| 28 |
-
const file = await promises.readFile(`${env.PUBLIC_FILE_UPLOAD_DIR}/${gallery.image}`)
|
| 29 |
return new Response(file, {
|
| 30 |
headers: {
|
| 31 |
'Content-Type': 'image/png',
|
|
|
|
| 1 |
import { json, type RequestEvent } from '@sveltejs/kit';
|
| 2 |
import { promises } from 'fs';
|
|
|
|
| 3 |
|
| 4 |
import prisma from '$lib/prisma';
|
| 5 |
|
|
|
|
| 24 |
}, { status: 404 })
|
| 25 |
}
|
| 26 |
|
| 27 |
+
const file = await promises.readFile(`${process.env.PUBLIC_FILE_UPLOAD_DIR}/${gallery.image}`)
|
| 28 |
return new Response(file, {
|
| 29 |
headers: {
|
| 30 |
'Content-Type': 'image/png',
|
src/routes/api/models/+server.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
| 1 |
import { json, type RequestEvent } from '@sveltejs/kit';
|
| 2 |
import prisma from '$lib/prisma';
|
| 3 |
-
import { env } from '$env/dynamic/private';
|
| 4 |
|
| 5 |
import { tokenIsAvailable } from '$lib/utils';
|
| 6 |
|
|
@@ -13,7 +12,7 @@ export async function GET(request : RequestEvent) {
|
|
| 13 |
if (token) {
|
| 14 |
const user = await tokenIsAvailable(token)
|
| 15 |
if (user) {
|
| 16 |
-
IS_ADMIN = env.SECRET_HF_ADMIN.includes(user.sub)
|
| 17 |
}
|
| 18 |
}
|
| 19 |
|
|
|
|
| 1 |
import { json, type RequestEvent } from '@sveltejs/kit';
|
| 2 |
import prisma from '$lib/prisma';
|
|
|
|
| 3 |
|
| 4 |
import { tokenIsAvailable } from '$lib/utils';
|
| 5 |
|
|
|
|
| 12 |
if (token) {
|
| 13 |
const user = await tokenIsAvailable(token)
|
| 14 |
if (user) {
|
| 15 |
+
IS_ADMIN = process.env.SECRET_HF_ADMIN.includes(user.sub)
|
| 16 |
}
|
| 17 |
}
|
| 18 |
|
src/routes/api/models/[id]/+server.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
| 1 |
import { json, type RequestEvent } from '@sveltejs/kit';
|
| 2 |
-
import { env } from '$env/dynamic/private'
|
| 3 |
import prisma from '$lib/prisma';
|
| 4 |
import { tokenIsAvailable } from '$lib/utils';
|
| 5 |
|
|
@@ -71,7 +70,7 @@ export async function GET({ url, params } : RequestEvent) {
|
|
| 71 |
if (full) {
|
| 72 |
const hf_model_request = await fetch(`https://huggingface.co/api/models/${id}`, {
|
| 73 |
headers: {
|
| 74 |
-
"Authorization": `Bearer ${env.SECRET_HF_TOKEN}`
|
| 75 |
}
|
| 76 |
})
|
| 77 |
const hf_model_response = await hf_model_request.json();
|
|
@@ -101,7 +100,7 @@ export async function POST({ params, cookies } : RequestEvent) {
|
|
| 101 |
}
|
| 102 |
|
| 103 |
const user = await tokenIsAvailable(token)
|
| 104 |
-
if (!user || !env.SECRET_HF_ADMIN.includes(user.sub)) {
|
| 105 |
return json({
|
| 106 |
error: {
|
| 107 |
token: "Wrong castle fam :^)"
|
|
@@ -150,7 +149,7 @@ export async function DELETE({ params, cookies } : RequestEvent) {
|
|
| 150 |
}
|
| 151 |
|
| 152 |
const user = await tokenIsAvailable(token)
|
| 153 |
-
if (!user || !env.SECRET_HF_ADMIN.includes(user.sub)) {
|
| 154 |
return json({
|
| 155 |
error: {
|
| 156 |
token: "Wrong castle fam :^)"
|
|
|
|
| 1 |
import { json, type RequestEvent } from '@sveltejs/kit';
|
|
|
|
| 2 |
import prisma from '$lib/prisma';
|
| 3 |
import { tokenIsAvailable } from '$lib/utils';
|
| 4 |
|
|
|
|
| 70 |
if (full) {
|
| 71 |
const hf_model_request = await fetch(`https://huggingface.co/api/models/${id}`, {
|
| 72 |
headers: {
|
| 73 |
+
"Authorization": `Bearer ${process.env.SECRET_HF_TOKEN}`
|
| 74 |
}
|
| 75 |
})
|
| 76 |
const hf_model_response = await hf_model_request.json();
|
|
|
|
| 100 |
}
|
| 101 |
|
| 102 |
const user = await tokenIsAvailable(token)
|
| 103 |
+
if (!user || !process.env.SECRET_HF_ADMIN.includes(user.sub)) {
|
| 104 |
return json({
|
| 105 |
error: {
|
| 106 |
token: "Wrong castle fam :^)"
|
|
|
|
| 149 |
}
|
| 150 |
|
| 151 |
const user = await tokenIsAvailable(token)
|
| 152 |
+
if (!user || !process.env.SECRET_HF_ADMIN.includes(user.sub)) {
|
| 153 |
return json({
|
| 154 |
error: {
|
| 155 |
token: "Wrong castle fam :^)"
|
src/routes/api/scrap-models/+server.ts
CHANGED
|
@@ -3,12 +3,11 @@
|
|
| 3 |
import { json } from '@sveltejs/kit';
|
| 4 |
// import moment from 'moment';
|
| 5 |
import prisma from '$lib/prisma';
|
| 6 |
-
import { env } from '$env/dynamic/private'
|
| 7 |
|
| 8 |
export async function POST({ request }) {
|
| 9 |
const headers = Object.fromEntries(request.headers.entries());
|
| 10 |
|
| 11 |
-
if (headers["x-hf-token"] !== env.SECRET_HF_TOKEN) {
|
| 12 |
return Response.json({
|
| 13 |
message: "Wrong castle fam :^)"
|
| 14 |
}, { status: 401 });
|
|
|
|
| 3 |
import { json } from '@sveltejs/kit';
|
| 4 |
// import moment from 'moment';
|
| 5 |
import prisma from '$lib/prisma';
|
|
|
|
| 6 |
|
| 7 |
export async function POST({ request }) {
|
| 8 |
const headers = Object.fromEntries(request.headers.entries());
|
| 9 |
|
| 10 |
+
if (headers["x-hf-token"] !== process.env.SECRET_HF_TOKEN) {
|
| 11 |
return Response.json({
|
| 12 |
message: "Wrong castle fam :^)"
|
| 13 |
}, { status: 401 });
|