"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.stringify = exports.parse = void 0; /** * @since 2.10.0 */ var Either_1 = require("./Either"); var function_1 = require("./function"); /** * Converts a JavaScript Object Notation (JSON) string into a `Json` type. * * @example * import * as J from 'fp-ts/Json' * import * as E from 'fp-ts/Either' * import { pipe } from 'fp-ts/function' * * assert.deepStrictEqual(pipe('{"a":1}', J.parse), E.right({ a: 1 })) * assert.deepStrictEqual(pipe('{"a":}', J.parse), E.left(new SyntaxError('Unexpected token } in JSON at position 5'))) * * @since 2.10.0 */ var parse = function (s) { return (0, Either_1.tryCatch)(function () { return JSON.parse(s); }, function_1.identity); }; exports.parse = parse; /** * Converts a JavaScript value to a JavaScript Object Notation (JSON) string. * * @example * import * as E from 'fp-ts/Either' * import * as J from 'fp-ts/Json' * import { pipe } from 'fp-ts/function' * * assert.deepStrictEqual(J.stringify({ a: 1 }), E.right('{"a":1}')) * const circular: any = { ref: null } * circular.ref = circular * assert.deepStrictEqual( * pipe( * J.stringify(circular), * E.mapLeft(e => e instanceof Error && e.message.includes('Converting circular structure to JSON')) * ), * E.left(true) * ) * * @since 2.10.0 */ var stringify = function (a) { return (0, Either_1.tryCatch)(function () { var s = JSON.stringify(a); if (typeof s !== 'string') { throw new Error('Converting unsupported structure to JSON'); } return s; }, function_1.identity); }; exports.stringify = stringify;