mudb
Version:
Real-time database for multiplayer games
37 lines (36 loc) • 1.66 kB
TypeScript
import { MuWriteStream, MuReadStream } from '../stream';
import { MuSchema } from './schema';
export declare type UnionInstance<SubTypes extends {
[type: string]: MuSchema<any>;
}, Type extends keyof SubTypes> = {
type: Type;
data: SubTypes[Type]['identity'];
};
export interface UnionTypes<SubTypes extends {
[type: string]: MuSchema<any>;
}> {
instance: UnionInstance<SubTypes, keyof SubTypes>;
json: {
type: keyof SubTypes;
data: any;
};
}
export declare class MuUnion<SubTypes extends {
[type: string]: MuSchema<any>;
}> implements MuSchema<UnionTypes<SubTypes>['instance']> {
readonly muType = "union";
readonly identity: UnionTypes<SubTypes>['instance'];
readonly muData: SubTypes;
readonly json: object;
private _types;
constructor(schemaSpec: SubTypes, identityType?: keyof SubTypes);
alloc(): UnionTypes<SubTypes>['instance'];
free(union: UnionTypes<SubTypes>['instance']): void;
equal(a: UnionTypes<SubTypes>['instance'], b: UnionTypes<SubTypes>['instance']): boolean;
clone(union: UnionTypes<SubTypes>['instance']): UnionTypes<SubTypes>['instance'];
assign(dst: UnionTypes<SubTypes>['instance'], src: UnionTypes<SubTypes>['instance']): UnionTypes<SubTypes>['instance'];
diff(base: UnionTypes<SubTypes>['instance'], target: UnionTypes<SubTypes>['instance'], out: MuWriteStream): boolean;
patch(base: UnionTypes<SubTypes>['instance'], inp: MuReadStream): UnionTypes<SubTypes>['instance'];
toJSON(union: UnionTypes<SubTypes>['instance']): UnionTypes<SubTypes>['json'];
fromJSON(x: UnionTypes<SubTypes>['json']): UnionTypes<SubTypes>['instance'];
}