summaryrefslogtreecommitdiff
path: root/engine/utils/coding.ts
diff options
context:
space:
mode:
authorElizabeth Hunt <elizabeth.hunt@simponic.xyz>2023-08-23 19:44:59 -0600
committerElizabeth Hunt <elizabeth.hunt@simponic.xyz>2023-08-23 19:44:59 -0600
commitdec7b614d895a1b507137e4a96a8999ff63aa179 (patch)
tree827437755bf9674db51818ee59d919c74a4ea2fc /engine/utils/coding.ts
parentd64ffb5016119e54f0e20d05ae8ac9c96955d9d5 (diff)
downloadjumpstorm-dec7b614d895a1b507137e4a96a8999ff63aa179.tar.gz
jumpstorm-dec7b614d895a1b507137e4a96a8999ff63aa179.zip
holy fuck we actually got somewhere
Diffstat (limited to 'engine/utils/coding.ts')
-rw-r--r--engine/utils/coding.ts27
1 files changed, 27 insertions, 0 deletions
diff --git a/engine/utils/coding.ts b/engine/utils/coding.ts
new file mode 100644
index 0000000..4c1b17f
--- /dev/null
+++ b/engine/utils/coding.ts
@@ -0,0 +1,27 @@
+const replacer = (_key: any, value: any) => {
+ if (value instanceof Map) {
+ return {
+ dataType: "Map",
+ value: Array.from(value.entries()),
+ };
+ } else {
+ return value;
+ }
+};
+
+const reviver = (_key: any, value: any) => {
+ if (typeof value === "object" && value !== null) {
+ if (value.dataType === "Map") {
+ return new Map(value.value);
+ }
+ }
+ return value;
+};
+
+export const stringify = (obj: any) => {
+ return JSON.stringify(obj, replacer);
+};
+
+export const parse = <T>(str: string) => {
+ return JSON.parse(str, reviver) as unknown as T;
+};