{"version":3,"file":"FossilDeltaSerializer.js","sourceRoot":"","sources":["../../src/serializer/FossilDeltaSerializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsCE","sourcesContent":["/*\n\n// Dependencies:\n// \"@gamestdio/state-listener\": \"^3.1.0\",\n// \"fossil-delta\": \"^1.0.0\",\n\nimport { Serializer } from \"./Serializer\";\n\nimport { StateContainer } from '@gamestdio/state-listener';\nimport * as fossilDelta from 'fossil-delta';\nimport * as msgpack from '../msgpack';\n\nexport class FossilDeltaSerializer<State= any> implements Serializer<State> {\n    api: StateContainer<State> = new StateContainer<State>({} as State);\n    protected previousState: any;\n\n    getState(): State {\n        return this.api.state;\n    }\n\n    setState(encodedState: any): void {\n        this.previousState = new Uint8Array(encodedState);\n        this.api.set(msgpack.decode(this.previousState));\n    }\n\n    patch(binaryPatch) {\n        // apply patch\n        this.previousState = new Uint8Array(fossilDelta.apply(this.previousState, binaryPatch));\n\n        // trigger update callbacks\n        this.api.set(msgpack.decode(this.previousState));\n    }\n\n    teardown() {\n        this.api.removeAllListeners();\n    }\n}\n\n*/"]}