aboutsummaryrefslogtreecommitdiff
path: root/node_modules/strip-json-comments/index.js
diff options
context:
space:
mode:
authorJoel Kronqvist <joel.h.kronqvist@gmail.com>2022-03-05 19:02:27 +0200
committerJoel Kronqvist <joel.h.kronqvist@gmail.com>2022-03-05 19:02:27 +0200
commit5d309ff52cd399a6b71968a6b9a70c8ac0b98981 (patch)
tree360f7eb50f956e2367ef38fa1fc6ac7ac5258042 /node_modules/strip-json-comments/index.js
parentb500a50f1b97d93c98b36ed9a980f8188d648147 (diff)
downloadLYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.tar.gz
LYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.zip
Added node_modules for the updating to work properly.
Diffstat (limited to 'node_modules/strip-json-comments/index.js')
-rw-r--r--node_modules/strip-json-comments/index.js77
1 files changed, 77 insertions, 0 deletions
diff --git a/node_modules/strip-json-comments/index.js b/node_modules/strip-json-comments/index.js
new file mode 100644
index 0000000..bb00b38
--- /dev/null
+++ b/node_modules/strip-json-comments/index.js
@@ -0,0 +1,77 @@
+'use strict';
+const singleComment = Symbol('singleComment');
+const multiComment = Symbol('multiComment');
+const stripWithoutWhitespace = () => '';
+const stripWithWhitespace = (string, start, end) => string.slice(start, end).replace(/\S/g, ' ');
+
+const isEscaped = (jsonString, quotePosition) => {
+ let index = quotePosition - 1;
+ let backslashCount = 0;
+
+ while (jsonString[index] === '\\') {
+ index -= 1;
+ backslashCount += 1;
+ }
+
+ return Boolean(backslashCount % 2);
+};
+
+module.exports = (jsonString, options = {}) => {
+ if (typeof jsonString !== 'string') {
+ throw new TypeError(`Expected argument \`jsonString\` to be a \`string\`, got \`${typeof jsonString}\``);
+ }
+
+ const strip = options.whitespace === false ? stripWithoutWhitespace : stripWithWhitespace;
+
+ let insideString = false;
+ let insideComment = false;
+ let offset = 0;
+ let result = '';
+
+ for (let i = 0; i < jsonString.length; i++) {
+ const currentCharacter = jsonString[i];
+ const nextCharacter = jsonString[i + 1];
+
+ if (!insideComment && currentCharacter === '"') {
+ const escaped = isEscaped(jsonString, i);
+ if (!escaped) {
+ insideString = !insideString;
+ }
+ }
+
+ if (insideString) {
+ continue;
+ }
+
+ if (!insideComment && currentCharacter + nextCharacter === '//') {
+ result += jsonString.slice(offset, i);
+ offset = i;
+ insideComment = singleComment;
+ i++;
+ } else if (insideComment === singleComment && currentCharacter + nextCharacter === '\r\n') {
+ i++;
+ insideComment = false;
+ result += strip(jsonString, offset, i);
+ offset = i;
+ continue;
+ } else if (insideComment === singleComment && currentCharacter === '\n') {
+ insideComment = false;
+ result += strip(jsonString, offset, i);
+ offset = i;
+ } else if (!insideComment && currentCharacter + nextCharacter === '/*') {
+ result += jsonString.slice(offset, i);
+ offset = i;
+ insideComment = multiComment;
+ i++;
+ continue;
+ } else if (insideComment === multiComment && currentCharacter + nextCharacter === '*/') {
+ i++;
+ insideComment = false;
+ result += strip(jsonString, offset, i + 1);
+ offset = i + 1;
+ continue;
+ }
+ }
+
+ return result + (insideComment ? strip(jsonString.slice(offset)) : jsonString.slice(offset));
+};