You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							86 lines
						
					
					
						
							2.6 KiB
						
					
					
				
			
		
		
	
	
							86 lines
						
					
					
						
							2.6 KiB
						
					
					
				"use strict"; | 
						|
Object.defineProperty(exports, "__esModule", { value: true }); | 
						|
exports.stringifyPath = exports.quoteKey = exports.isValidVariableName = exports.IS_VALID_IDENTIFIER = exports.quoteString = void 0; | 
						|
/** | 
						|
 * Match all characters that need to be escaped in a string. Modified from | 
						|
 * source to match single quotes instead of double. | 
						|
 * | 
						|
 * Source: https://github.com/douglascrockford/JSON-js/blob/master/json2.js | 
						|
 */ | 
						|
const ESCAPABLE = /[\\\'\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; | 
						|
/** | 
						|
 * Map of characters to escape characters. | 
						|
 */ | 
						|
const META_CHARS = new Map([ | 
						|
    ["\b", "\\b"], | 
						|
    ["\t", "\\t"], | 
						|
    ["\n", "\\n"], | 
						|
    ["\f", "\\f"], | 
						|
    ["\r", "\\r"], | 
						|
    ["'", "\\'"], | 
						|
    ['"', '\\"'], | 
						|
    ["\\", "\\\\"], | 
						|
]); | 
						|
/** | 
						|
 * Escape any character into its literal JavaScript string. | 
						|
 * | 
						|
 * @param  {string} char | 
						|
 * @return {string} | 
						|
 */ | 
						|
function escapeChar(char) { | 
						|
    return (META_CHARS.get(char) || | 
						|
        `\\u${`0000${char.charCodeAt(0).toString(16)}`.slice(-4)}`); | 
						|
} | 
						|
/** | 
						|
 * Quote a string. | 
						|
 */ | 
						|
function quoteString(str) { | 
						|
    return `'${str.replace(ESCAPABLE, escapeChar)}'`; | 
						|
} | 
						|
exports.quoteString = quoteString; | 
						|
/** | 
						|
 * JavaScript reserved keywords. | 
						|
 */ | 
						|
const RESERVED_WORDS = new Set(("break else new var case finally return void catch for switch while " + | 
						|
    "continue function this with default if throw delete in try " + | 
						|
    "do instanceof typeof abstract enum int short boolean export " + | 
						|
    "interface static byte extends long super char final native synchronized " + | 
						|
    "class float package throws const goto private transient debugger " + | 
						|
    "implements protected volatile double import public let yield").split(" ")); | 
						|
/** | 
						|
 * Test for valid JavaScript identifier. | 
						|
 */ | 
						|
exports.IS_VALID_IDENTIFIER = /^[A-Za-z_$][A-Za-z0-9_$]*$/; | 
						|
/** | 
						|
 * Check if a variable name is valid. | 
						|
 */ | 
						|
function isValidVariableName(name) { | 
						|
    return (typeof name === "string" && | 
						|
        !RESERVED_WORDS.has(name) && | 
						|
        exports.IS_VALID_IDENTIFIER.test(name)); | 
						|
} | 
						|
exports.isValidVariableName = isValidVariableName; | 
						|
/** | 
						|
 * Quote JavaScript key access. | 
						|
 */ | 
						|
function quoteKey(key, next) { | 
						|
    return isValidVariableName(key) ? key : next(key); | 
						|
} | 
						|
exports.quoteKey = quoteKey; | 
						|
/** | 
						|
 * Serialize the path to a string. | 
						|
 */ | 
						|
function stringifyPath(path, next) { | 
						|
    let result = ""; | 
						|
    for (const key of path) { | 
						|
        if (isValidVariableName(key)) { | 
						|
            result += `.${key}`; | 
						|
        } | 
						|
        else { | 
						|
            result += `[${next(key)}]`; | 
						|
        } | 
						|
    } | 
						|
    return result; | 
						|
} | 
						|
exports.stringifyPath = stringifyPath; | 
						|
//# sourceMappingURL=quote.js.map
 |