Page MenuHomeSealhub

collection-field.ts
No OneTemporary

collection-field.ts

import { Context } from "koa";
import { Depromisify, Field, FieldOutput } from "sealious";
import { FormDataValue } from "../form";
import {
FieldParseResult,
FormField,
FormFieldValidationResponse,
} from "./field";
export class CollectionField<F extends Field> extends FormField<
FieldOutput<F>
> {
constructor(required: boolean, public sealiousField: F) {
super(required);
}
async parse(
ctx: Context,
raw_value: FormDataValue
): Promise<FieldParseResult<FieldOutput<F>>> {
const encoded_value = (await this.sealiousField.encode(
ctx.$context,
raw_value
)) as Depromisify<ReturnType<F["encode"]>>;
const parsed_value = (await this.sealiousField.decode(
ctx.$context,
encoded_value,
null,
{}
)) as Depromisify<ReturnType<F["encode"]>>;
return {
parsable: true,
error: null,
parsed_value,
};
}
public async isValueValid(
ctx: Context,
value: FieldOutput<F>
): Promise<FormFieldValidationResponse> {
const { valid, reason } = await this.sealiousField.checkValue(
ctx.$context,
value,
undefined
);
return { valid, message: reason || (!valid ? "Wrong value" : "") };
}
public getEmptyValue(): Depromisify<ReturnType<F["decode"]>> {
return "" as unknown as Depromisify<ReturnType<F["decode"]>>;
}
}

File Metadata

Mime Type
text/x-java
Expires
Sat, Oct 11, 09:53 (17 h, 13 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
984163
Default Alt Text
collection-field.ts (1 KB)

Event Timeline