UNPKG

typia

Version:

Superfast runtime validators with only one line

31 lines 1.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports._jsonStringifyProperty = void 0; /** * Writes one object member the way ECMAScript `JSON.stringify` writes it. * * `SerializeJSONObject` serializes each member first and drops the member * entirely when that result is `undefined`. Deciding omission from the _input_ * instead cannot reach the same answer: a symbol and a `toJSON` returning * nothing are both present, non-`undefined`, non-function values whose * serialization is `undefined`, so the member's text became the literal * `"k":undefined` — output that is not JSON at all. * * The serialized text is passed in already evaluated, so the member's value is * serialized exactly once. Testing the input and then serializing would * evaluate a `toJSON` twice, and a `toJSON` is free to answer differently each * call. * * The trailing separator belongs to the member because a dropped member must * take its comma with it; `_jsonStringifyTail` removes the one that is left * behind when the last written member is the one that dropped. * * @param head Quoted key and colon, emitted by the transform. * @param text Serialized member value, or `undefined` when it has none. * @param tail Separator following this member, empty for the last one. * @returns Member text, or an empty string when the member is omitted. * @internal */ const _jsonStringifyProperty = (head, text, tail) => (text === undefined ? "" : head + text + tail); exports._jsonStringifyProperty = _jsonStringifyProperty; //# sourceMappingURL=_jsonStringifyProperty.js.map