wcz-layout
Version:
148 lines (147 loc) • 5.49 kB
JavaScript
import { n as serverEnv } from "./env-Bm6rrgwT.mjs";
import { t as getAppToken } from "./msalServer-BHuM63vM.mjs";
import { t as apiMiddleware } from "./apiMiddleware-DRhawg5S.mjs";
import { t as FileMetaSchema } from "./FileMeta-DDqUju1Y.mjs";
import { z } from "zod";
import { createServerFn } from "@tanstack/react-start";
import { uuidv7 } from "uuidv7";
import { Upload } from "tus-js-client";
//#region src/data/server/file.ts
const GetFileMetasSchema = z.object({
appName: z.string().min(1).max(255),
subId: z.uuid()
});
const FileSchema = z.object({
appName: z.string().min(1).max(255),
id: z.uuid()
});
const UpdateFileMetaSchema = FileMetaSchema.extend({ fileName: z.string().min(1).max(255) });
const DeleteFileSchema = FileSchema;
const BatchDeleteFilesSchema = GetFileMetasSchema;
const UploadFileMetaSchema = z.object({
appName: z.string().min(1).max(255),
subId: z.uuid(),
file: z.instanceof(File)
});
const getFileMetas = createServerFn({ method: "GET" }).validator(GetFileMetasSchema).middleware([apiMiddleware({
baseURL: "FILE_BASE_URL",
scopeKey: "file"
})]).handler(async ({ data, context }) => {
const queryParams = new URLSearchParams();
queryParams.append("appName", data.appName);
queryParams.append("subId", data.subId);
const { data: fileMetas } = await context.api.request({
url: `/v1/meta?${queryParams.toString()}`,
method: "GET"
});
return fileMetas;
});
const getFileThumbnail = createServerFn({ method: "GET" }).validator(FileSchema).middleware([apiMiddleware({
baseURL: "FILE_BASE_URL",
scopeKey: "file"
})]).handler(async ({ data, context }) => {
const queryParams = new URLSearchParams();
queryParams.append("appName", data.appName);
queryParams.append("id", data.id);
const response = await context.api.request({
url: `/v1/thumbnail?${queryParams.toString()}`,
method: "GET",
responseType: "arraybuffer"
});
return new Response(response.data, { headers: { "Content-Type": response.headers["content-type"] } });
});
const getFile = createServerFn({ method: "GET" }).validator(FileSchema).middleware([apiMiddleware({
baseURL: "FILE_BASE_URL",
scopeKey: "file"
})]).handler(async ({ data, context }) => {
const queryParams = new URLSearchParams();
queryParams.append("appName", data.appName);
queryParams.append("id", data.id);
const response = await context.api.request({
url: `/v1?${queryParams.toString()}`,
method: "GET",
responseType: "arraybuffer"
});
return new Response(response.data, { headers: { "Content-Type": response.headers["content-type"] } });
});
const downloadFile = createServerFn({ method: "GET" }).validator(FileSchema).middleware([apiMiddleware({
baseURL: "FILE_BASE_URL",
scopeKey: "file"
})]).handler(async ({ data, context }) => {
const queryParams = new URLSearchParams();
queryParams.append("appName", data.appName);
queryParams.append("id", data.id);
const response = await context.api.request({
url: `/v1/download?${queryParams.toString()}`,
method: "GET",
responseType: "arraybuffer"
});
return new Response(response.data, { headers: { "Content-Type": response.headers["content-type"] } });
});
const updateFileMeta = createServerFn({ method: "POST" }).validator(UpdateFileMetaSchema).middleware([apiMiddleware({
baseURL: "FILE_BASE_URL",
scopeKey: "file"
})]).handler(async ({ data, context }) => {
const queryParams = new URLSearchParams();
queryParams.append("appName", data.appName);
queryParams.append("id", data.id);
await context.api.request({
url: `/v1/meta?${queryParams.toString()}`,
method: "PUT",
data
});
});
const deleteFile = createServerFn({ method: "POST" }).validator(DeleteFileSchema).middleware([apiMiddleware({
baseURL: "FILE_BASE_URL",
scopeKey: "file"
})]).handler(async ({ data, context }) => {
const queryParams = new URLSearchParams();
queryParams.append("appName", data.appName);
queryParams.append("id", data.id);
await context.api.request({
url: `/v1?${queryParams.toString()}`,
method: "DELETE"
});
});
const batchDeleteFiles = createServerFn({ method: "POST" }).validator(BatchDeleteFilesSchema).middleware([apiMiddleware({
baseURL: "FILE_BASE_URL",
scopeKey: "file"
})]).handler(async ({ data, context }) => {
const queryParams = new URLSearchParams();
queryParams.append("appName", data.appName);
queryParams.append("subId", data.subId);
await context.api.request({
url: `/v1?${queryParams.toString()}`,
method: "DELETE"
});
});
const uploadFile = createServerFn({ method: "POST" }).validator(UploadFileMetaSchema).handler(async ({ data }) => {
const accessToken = await getAppToken("file");
const buffer = Buffer.from(await data.file.arrayBuffer());
const id = uuidv7();
await new Promise((resolve, reject) => {
new Upload(buffer, {
endpoint: `${serverEnv.FILE_BASE_URL}/v1/upload`,
chunkSize: 1048576,
metadata: {
id,
appName: data.appName,
subId: data.subId,
fileName: data.file.name,
fileExtension: data.file.type
},
headers: { Authorization: `Bearer ${accessToken}` },
onError: reject,
onSuccess: () => resolve()
}).start();
});
return {
id,
appName: data.appName,
subId: data.subId,
fileName: data.file.name
};
});
//#endregion
export { batchDeleteFiles as a, getFile as c, updateFileMeta as d, uploadFile as f, UploadFileMetaSchema as i, getFileMetas as l, GetFileMetasSchema as n, deleteFile as o, UpdateFileMetaSchema as r, downloadFile as s, FileSchema as t, getFileThumbnail as u };
//# sourceMappingURL=file-COsoqLsS.mjs.map