'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));
							 | 
						|
								};
							 |