From a8b105bdec86e3ce605ef0c5801f40af453ebe9f Mon Sep 17 00:00:00 2001
From: Dragory <2606411+Dragory@users.noreply.github.com>
Date: Mon, 19 Oct 2020 20:10:16 +0300
Subject: [PATCH] Add yaml parse+mutate+reserialize test

---
 backend/package-lock.json    | 17 +++++++++++++++--
 backend/package.json         |  2 ++
 backend/src/yamlParseTest.ts | 22 ++++++++++++++++++++++
 3 files changed, 39 insertions(+), 2 deletions(-)
 create mode 100644 backend/src/yamlParseTest.ts

diff --git a/backend/package-lock.json b/backend/package-lock.json
index b720929b..c1e50c6e 100644
--- a/backend/package-lock.json
+++ b/backend/package-lock.json
@@ -2442,8 +2442,7 @@
     "lodash": {
       "version": "4.17.19",
       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
-      "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==",
-      "dev": true
+      "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ=="
     },
     "lodash.chunk": {
       "version": "4.2.0",
@@ -4612,6 +4611,11 @@
       "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
       "dev": true
     },
+    "yaml-js": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/yaml-js/-/yaml-js-0.2.3.tgz",
+      "integrity": "sha512-6xUQtVKl1qcd0EXtTEzUDVJy9Ji1fYa47LtkDtYKlIjhibPE9knNPmoRyf6SGREFHlOAUyDe9OdYqRP4DuSi5Q=="
+    },
     "yargonaut": {
       "version": "1.1.4",
       "resolved": "https://registry.npmjs.org/yargonaut/-/yargonaut-1.1.4.tgz",
@@ -4685,6 +4689,15 @@
         "decamelize": "^1.2.0"
       }
     },
+    "yawn-yaml": {
+      "version": "github:dragory/yawn-yaml#77ab3870ca53c4693002c4a41336e7476e7934ed",
+      "from": "github:dragory/yawn-yaml#string-number-fix-build",
+      "requires": {
+        "js-yaml": "^3.4.2",
+        "lodash": "^4.17.11",
+        "yaml-js": "^0.2.3"
+      }
+    },
     "zlib-sync": {
       "version": "0.1.7",
       "resolved": "https://registry.npmjs.org/zlib-sync/-/zlib-sync-0.1.7.tgz",
diff --git a/backend/package.json b/backend/package.json
index 6ebabbb0..ba5c0d31 100644
--- a/backend/package.json
+++ b/backend/package.json
@@ -5,6 +5,7 @@
   "private": true,
   "scripts": {
     "watch": "cross-env NODE_ENV=development tsc-watch --onSuccess \"node start-dev.js\"",
+    "watch-yaml-parse-test": "cross-env NODE_ENV=development tsc-watch --onSuccess \"node dist/backend/src/yamlParseTest.js\"",
     "build": "rimraf dist && tsc",
     "start-bot-dev": "cross-env NODE_ENV=development node -r ./register-tsconfig-paths.js --unhandled-rejections=strict --inspect=127.0.0.1:9229 dist/backend/src/index.js",
     "start-bot-prod": "cross-env NODE_ENV=production node -r ./register-tsconfig-paths.js --unhandled-rejections=strict dist/backend/src/index.js",
@@ -66,6 +67,7 @@
     "twemoji": "^12.1.4",
     "typeorm": "^0.2.14",
     "uuid": "^3.3.2",
+    "yawn-yaml": "github:dragory/yawn-yaml#string-number-fix-build",
     "zlib-sync": "^0.1.7"
   },
   "devDependencies": {
diff --git a/backend/src/yamlParseTest.ts b/backend/src/yamlParseTest.ts
new file mode 100644
index 00000000..dabb3727
--- /dev/null
+++ b/backend/src/yamlParseTest.ts
@@ -0,0 +1,22 @@
+import YAML from "yawn-yaml/cjs";
+import { load } from "js-yaml";
+
+const src = `
+prefix: '!'
+
+plugins:
+  myplugin:
+    config:
+    
+      can_do_thing: true
+      
+      # Lol
+      can_do_other_thing: false
+`;
+
+const json = load(src);
+const yaml = new YAML(src);
+json.plugins.myplugin.config.can_do_thing = false;
+yaml.json = json;
+
+console.log(yaml.yaml);