diff options
author | Tyler Schicke <tyler_schicke@brown.edu> | 2019-04-26 21:41:16 -0400 |
---|---|---|
committer | Tyler Schicke <tyler_schicke@brown.edu> | 2019-04-26 21:41:16 -0400 |
commit | fca16fb81f470b43c72c1e24e530fdf66430dc7a (patch) | |
tree | 329b62a67ed06cdf530d6982aee01a462adcabb1 /src/new_fields/Doc.ts | |
parent | eda4c4bb78d05ba857ce29ca8f7c463ce51b7609 (diff) |
KVP stuff
Diffstat (limited to 'src/new_fields/Doc.ts')
-rw-r--r-- | src/new_fields/Doc.ts | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/new_fields/Doc.ts b/src/new_fields/Doc.ts index 6dfa37c1b..a1515fe49 100644 --- a/src/new_fields/Doc.ts +++ b/src/new_fields/Doc.ts @@ -34,6 +34,13 @@ export class ObjectField { readonly [Id] = ""; } +export function IsField(field: any): field is Field { + return (typeof field === "string") + || (typeof field === "number") + || (typeof field === "boolean") + || (field instanceof ObjectField) + || (field instanceof RefField); +} export type Field = number | string | boolean | ObjectField | RefField; export type Opt<T> = T | undefined; export type FieldWaiting<T extends RefField = RefField> = T extends undefined ? never : Promise<T | undefined>; @@ -48,6 +55,7 @@ export class Doc extends RefField { const doc = new Proxy<this>(this, { set: setter, get: getter, + ownKeys: target => Object.keys(target.__fields), deleteProperty: () => { throw new Error("Currently properties can't be deleted from documents, assign to undefined instead"); }, defineProperty: () => { throw new Error("Currently properties can't be defined on documents using Object.defineProperty"); }, }); |