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.
		
		
		
		
			
				
					37 lines
				
				1.1 KiB
			
		
		
			
		
	
	
					37 lines
				
				1.1 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								"use strict";
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, "__esModule", { value: true });
							 | 
						||
| 
								 | 
							
								exports.toString = void 0;
							 | 
						||
| 
								 | 
							
								const quote_1 = require("./quote");
							 | 
						||
| 
								 | 
							
								const object_1 = require("./object");
							 | 
						||
| 
								 | 
							
								const function_1 = require("./function");
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Stringify primitive values.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								const PRIMITIVE_TYPES = {
							 | 
						||
| 
								 | 
							
								    string: quote_1.quoteString,
							 | 
						||
| 
								 | 
							
								    number: (value) => (Object.is(value, -0) ? "-0" : String(value)),
							 | 
						||
| 
								 | 
							
								    boolean: String,
							 | 
						||
| 
								 | 
							
								    symbol: (value, space, next) => {
							 | 
						||
| 
								 | 
							
								        const key = Symbol.keyFor(value);
							 | 
						||
| 
								 | 
							
								        if (key !== undefined)
							 | 
						||
| 
								 | 
							
								            return `Symbol.for(${next(key)})`;
							 | 
						||
| 
								 | 
							
								        // ES2018 `Symbol.description`.
							 | 
						||
| 
								 | 
							
								        return `Symbol(${next(value.description)})`;
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    bigint: (value, space, next) => {
							 | 
						||
| 
								 | 
							
								        return `BigInt(${next(String(value))})`;
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    undefined: String,
							 | 
						||
| 
								 | 
							
								    object: object_1.objectToString,
							 | 
						||
| 
								 | 
							
								    function: function_1.functionToString,
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Stringify a value recursively.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								const toString = (value, space, next, key) => {
							 | 
						||
| 
								 | 
							
								    if (value === null)
							 | 
						||
| 
								 | 
							
								        return "null";
							 | 
						||
| 
								 | 
							
								    return PRIMITIVE_TYPES[typeof value](value, space, next, key);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								exports.toString = toString;
							 | 
						||
| 
								 | 
							
								//# sourceMappingURL=stringify.js.map
							 |