aboutsummaryrefslogtreecommitdiff
path: root/src/fields/Types.ts
diff options
context:
space:
mode:
authorNaafiyan Ahmed <naafiyan@gmail.com>2022-03-17 16:35:32 -0400
committerNaafiyan Ahmed <naafiyan@gmail.com>2022-03-17 16:35:32 -0400
commitcb5f0847b098d89a1390acf90579b3c7fbc5ac3e (patch)
tree0266608b61495b5903ff419fa26e04fb5fbeef0a /src/fields/Types.ts
parentf1f341b53a1a49427cf7ef40afdcd95a9b0e4e9d (diff)
parent5c874c6829d9957696dfe61014173b6800c864df (diff)
Merge branch 'naafi-linking' of https://github.com/brown-dash/Dash-Web into naafi-linking
Diffstat (limited to 'src/fields/Types.ts')
-rw-r--r--src/fields/Types.ts10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/fields/Types.ts b/src/fields/Types.ts
index 3d784448d..c90f3b6b3 100644
--- a/src/fields/Types.ts
+++ b/src/fields/Types.ts
@@ -3,6 +3,7 @@ import { List } from "./List";
import { RefField } from "./RefField";
import { DateField } from "./DateField";
import { ScriptField } from "./ScriptField";
+import { URLField, WebField, ImageField } from "./URLField";
export type ToType<T extends InterfaceValue> =
T extends "string" ? string :
@@ -91,6 +92,12 @@ export function DateCast(field: FieldResult) {
export function ScriptCast(field: FieldResult, defaultVal: ScriptField | null = null) {
return Cast(field, ScriptField, defaultVal);
}
+export function WebCast(field: FieldResult, defaultVal: WebField | null = null) {
+ return Cast(field, WebField, defaultVal);
+}
+export function ImageCast(field: FieldResult, defaultVal: ImageField | null = null) {
+ return Cast(field, ImageField, defaultVal);
+}
type WithoutList<T extends Field> = T extends List<infer R> ? (R extends RefField ? (R | Promise<R>)[] : R[]) : T;
@@ -104,5 +111,6 @@ export interface PromiseLike<T> {
then(callback: (field: Opt<T>) => void): void;
}
export function PromiseValue<T extends Field>(field: FieldResult<T>): PromiseLike<Opt<T>> {
- return field instanceof Promise ? field : { then(cb: ((field: Opt<T>) => void)) { return cb(field); } };
+ if (field instanceof Promise) return field as Promise<Opt<T>>;
+ return { then(cb: ((field: Opt<T>) => void)) { return cb(field); } };
} \ No newline at end of file