diff options
Diffstat (limited to 'src/new_fields')
| -rw-r--r-- | src/new_fields/Doc.ts | 5 | ||||
| -rw-r--r-- | src/new_fields/List.ts | 2 | ||||
| -rw-r--r-- | src/new_fields/Types.ts | 2 |
3 files changed, 7 insertions, 2 deletions
diff --git a/src/new_fields/Doc.ts b/src/new_fields/Doc.ts index b2863c632..70dd8361b 100644 --- a/src/new_fields/Doc.ts +++ b/src/new_fields/Doc.ts @@ -29,6 +29,11 @@ const SelfProxy = Symbol("SelfProxy"); export const WidthSym = Symbol("Width"); export const HeightSym = Symbol("Height"); +export function DocListCast(field: FieldResult) { + const list = Cast(field, listSpec(Doc)) + return list ? Promise.all(list) : Promise.resolve(undefined); +} + @Deserializable("doc").withFields(["id"]) export class Doc extends RefField { constructor(id?: FieldId, forceSave?: boolean) { diff --git a/src/new_fields/List.ts b/src/new_fields/List.ts index 213ed21aa..5aba64406 100644 --- a/src/new_fields/List.ts +++ b/src/new_fields/List.ts @@ -236,5 +236,5 @@ class ListImpl<T extends Field> extends ObjectField { private [Self] = this; } -export type List<T extends Field> = ListImpl<T> & T[]; +export type List<T extends Field> = ListImpl<T> & (T | (T extends RefField ? Promise<T> : never))[]; export const List: { new <T extends Field>(fields?: T[]): List<T> } = ListImpl as any;
\ No newline at end of file diff --git a/src/new_fields/Types.ts b/src/new_fields/Types.ts index 60f08dc90..c07d38786 100644 --- a/src/new_fields/Types.ts +++ b/src/new_fields/Types.ts @@ -1,4 +1,4 @@ -import { Field, Opt, FieldResult } from "./Doc"; +import { Field, Opt, FieldResult, Doc } from "./Doc"; import { List } from "./List"; export type ToType<T extends ToConstructor<Field> | ListSpec<Field>> = |
