aboutsummaryrefslogtreecommitdiff
path: root/src/new_fields/Doc.ts
diff options
context:
space:
mode:
authorTyler Schicke <tyler_schicke@brown.edu>2019-04-26 21:41:16 -0400
committerTyler Schicke <tyler_schicke@brown.edu>2019-04-26 21:41:16 -0400
commitfca16fb81f470b43c72c1e24e530fdf66430dc7a (patch)
tree329b62a67ed06cdf530d6982aee01a462adcabb1 /src/new_fields/Doc.ts
parenteda4c4bb78d05ba857ce29ca8f7c463ce51b7609 (diff)
KVP stuff
Diffstat (limited to 'src/new_fields/Doc.ts')
-rw-r--r--src/new_fields/Doc.ts8
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"); },
});