aboutsummaryrefslogtreecommitdiff
path: root/src/fields/ObjectField.ts
diff options
context:
space:
mode:
authorZachary Zhang <zacharyzhang7@gmail.com>2024-08-31 00:46:29 -0400
committerZachary Zhang <zacharyzhang7@gmail.com>2024-08-31 00:46:29 -0400
commit196294f331496262bef256da8b8e9dbc80288bea (patch)
tree85ff27b7a8070585f9a5ef71dff63566e03232ba /src/fields/ObjectField.ts
parent0cf61501ec9be34294935f01973c1bd9cad6d267 (diff)
parentc36607691e0b7f5c04f3209a64958f5e51ddd785 (diff)
Merge branch 'master' into zach-starter
Diffstat (limited to 'src/fields/ObjectField.ts')
-rw-r--r--src/fields/ObjectField.ts27
1 files changed, 15 insertions, 12 deletions
diff --git a/src/fields/ObjectField.ts b/src/fields/ObjectField.ts
index 231086262..c533cb596 100644
--- a/src/fields/ObjectField.ts
+++ b/src/fields/ObjectField.ts
@@ -2,13 +2,27 @@ import { ScriptingGlobals } from '../client/util/ScriptingGlobals';
import { Copy, FieldChanged, Parent, ToJavascriptString, ToScriptString, ToString } from './FieldSymbols';
import { RefField } from './RefField';
+export type serializedFieldType = { fieldId: string; heading?: string; __type: string };
+export type serializedFieldsType = { [key: string]: { fields: serializedFieldType[] } };
+export interface serializedDoctype {
+ readonly id: string;
+ readonly fields?: serializedFieldsType;
+}
+
+export type serverOpType = {
+ $set?: serializedFieldsType; //
+ $unset?: { [key: string]: unknown };
+ $remFromSet?: { [key: string]: { fields: serializedFieldType[] } | { deleteCount: number; start: number } | number | undefined; length: number; hint: { deleteCount: number; start: number } | undefined };
+ $addToSet?: { [key: string]: { fields: serializedFieldType[] } | number | undefined; length: number };
+};
export abstract class ObjectField {
// prettier-ignore
public [FieldChanged]?: (diff?: { op: '$addToSet' | '$remFromSet' | '$set';
// eslint-disable-next-line no-use-before-define
items: FieldType[] | undefined;
length: number | undefined;
- hint?: any }, serverOp?: any) => void;
+ hint?: { deleteCount: number, start: number} },
+ serverOp?: serverOpType) => void;
// eslint-disable-next-line no-use-before-define
public [Parent]?: RefField | ObjectField;
abstract [Copy](): ObjectField;
@@ -22,15 +36,4 @@ export abstract class ObjectField {
}
export type FieldType = number | string | boolean | ObjectField | RefField; // bcz: hack for now .. must match the type definition in Doc.ts .. put here to avoid import cycles
-// eslint-disable-next-line import/no-mutable-exports
-export let ObjGetRefField: (id: string, force?: boolean) => Promise<RefField | undefined>;
-// eslint-disable-next-line import/no-mutable-exports
-export let ObjGetRefFields: (ids: string[]) => Promise<{ [id: string]: RefField | undefined }>;
-
-export function SetObjGetRefField(func: (id: string, force?: boolean) => Promise<RefField | undefined>) {
- ObjGetRefField = func;
-}
-export function SetObjGetRefFields(func: (ids: string[]) => Promise<{ [id: string]: RefField | undefined }>) {
- ObjGetRefFields = func;
-}
ScriptingGlobals.add(ObjectField);