37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "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
 |