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
"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
|