// Generated by purs version 0.13.6 "use strict"; var Control_Applicative = require("../Control.Applicative/index.js"); var Control_Apply = require("../Control.Apply/index.js"); var Control_Bind = require("../Control.Bind/index.js"); var Control_Category = require("../Control.Category/index.js"); var Control_Monad_Except = require("../Control.Monad.Except/index.js"); var Control_Monad_Except_Trans = require("../Control.Monad.Except.Trans/index.js"); var Control_Semigroupoid = require("../Control.Semigroupoid/index.js"); var Data_Either = require("../Data.Either/index.js"); var Data_Function = require("../Data.Function/index.js"); var Data_Functor = require("../Data.Functor/index.js"); var Data_Identity = require("../Data.Identity/index.js"); var Data_List_Types = require("../Data.List.Types/index.js"); var Data_Maybe = require("../Data.Maybe/index.js"); var Data_Semigroup = require("../Data.Semigroup/index.js"); var Data_Symbol = require("../Data.Symbol/index.js"); var Data_TraversableWithIndex = require("../Data.TraversableWithIndex/index.js"); var Foreign = require("../Foreign/index.js"); var Foreign_Index = require("../Foreign.Index/index.js"); var Foreign_Object = require("../Foreign.Object/index.js"); var Global_Unsafe = require("../Global.Unsafe/index.js"); var Record = require("../Record/index.js"); var Record_Builder = require("../Record.Builder/index.js"); var Type_Data_RowList = require("../Type.Data.RowList/index.js"); var WriteForeignFields = function (writeImplFields) { this.writeImplFields = writeImplFields; }; var WriteForeign = function (writeImpl) { this.writeImpl = writeImpl; }; var ReadForeignFields = function (getFields) { this.getFields = getFields; }; var ReadForeign = function (readImpl) { this.readImpl = readImpl; }; var writeImplFields = function (dict) { return dict.writeImplFields; }; var writeImpl = function (dict) { return dict.writeImpl; }; var writeJSON = function (dictWriteForeign) { var $408 = writeImpl(dictWriteForeign); return function ($409) { return Global_Unsafe.unsafeStringify($408($409)); }; }; var writeForeignString = new WriteForeign(Foreign.unsafeToForeign); var writeForeignObject = function (dictWriteForeign) { return new WriteForeign((function () { var $410 = Foreign_Object.mapWithKey(Data_Function["const"](writeImpl(dictWriteForeign))); return function ($411) { return Foreign.unsafeToForeign($410($411)); }; })()); }; var writeForeignForeign = new WriteForeign(Control_Category.identity(Control_Category.categoryFn)); var writeForeignArray = function (dictWriteForeign) { return new WriteForeign(function (xs) { return Foreign.unsafeToForeign(Data_Functor.map(Data_Functor.functorArray)(writeImpl(dictWriteForeign))(xs)); }); }; var write = function (dictWriteForeign) { return writeImpl(dictWriteForeign); }; var recordWriteForeign = function (dictRowToList) { return function (dictWriteForeignFields) { return new WriteForeign(function (rec) { var steps = writeImplFields(dictWriteForeignFields)(Type_Data_RowList.RLProxy.value)(rec); return Foreign.unsafeToForeign(Record_Builder.build(steps)({})); }); }; }; var readString = new ReadForeign(Foreign.readString); var readInt = new ReadForeign(Foreign.readInt); var readImpl = function (dict) { return dict.readImpl; }; var readMaybe = function (dictReadForeign) { return new ReadForeign((function () { var readNullOrUndefined = function (v) { return function (value) { if (Foreign.isNull(value) || Foreign.isUndefined(value)) { return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(Data_Maybe.Nothing.value); }; return Data_Functor.map(Control_Monad_Except_Trans.functorExceptT(Data_Identity.functorIdentity))(Data_Maybe.Just.create)(v(value)); }; }; return readNullOrUndefined(readImpl(dictReadForeign)); })()); }; var readFieldsNil = new ReadForeignFields(function (v) { return function (v1) { return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(Control_Category.identity(Record_Builder.categoryBuilder)); }; }); var readArray = function (dictReadForeign) { return new ReadForeign((function () { var readAtIdx = function (i) { return function (f) { return Control_Monad_Except.withExcept(Data_Functor.map(Data_List_Types.functorNonEmptyList)(Foreign.ErrorAtIndex.create(i)))(readImpl(dictReadForeign)(f)); }; }; return Control_Bind.composeKleisliFlipped(Control_Monad_Except_Trans.bindExceptT(Data_Identity.monadIdentity))(Data_TraversableWithIndex.traverseWithIndex(Data_TraversableWithIndex.traversableWithIndexArray)(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(readAtIdx))(Foreign.readArray); })()); }; var read = function (dictReadForeign) { var $412 = readImpl(dictReadForeign); return function ($413) { return Control_Monad_Except.runExcept($412($413)); }; }; var nilWriteForeignFields = new WriteForeignFields(function (v) { return function (v1) { return Control_Category.identity(Record_Builder.categoryBuilder); }; }); var getFields = function (dict) { return dict.getFields; }; var readRecord = function (dictRowToList) { return function (dictReadForeignFields) { return new ReadForeign(function (o) { return Data_Functor.map(Control_Monad_Except_Trans.functorExceptT(Data_Identity.functorIdentity))(Data_Function.flip(Record_Builder.build)({}))(getFields(dictReadForeignFields)(Type_Data_RowList.RLProxy.value)(o)); }); }; }; var consWriteForeignFields = function (dictIsSymbol) { return function (dictWriteForeign) { return function (dictWriteForeignFields) { return function (dictCons) { return function (dictLacks) { return function (dictCons1) { return new WriteForeignFields(function (v) { return function (rec) { var rest = writeImplFields(dictWriteForeignFields)(Type_Data_RowList.RLProxy.value)(rec); var value = writeImpl(dictWriteForeign)(Record.get(dictIsSymbol)()(Data_Symbol.SProxy.value)(rec)); var result = Control_Semigroupoid.compose(Record_Builder.semigroupoidBuilder)(Record_Builder.insert()()(dictIsSymbol)(Data_Symbol.SProxy.value)(value))(rest); return result; }; }); }; }; }; }; }; }; var applyEither = function (dictSemigroup) { return function (v) { return function (v1) { if (v instanceof Data_Either.Left && v1 instanceof Data_Either.Right) { return new Data_Either.Left(v.value0); }; if (v instanceof Data_Either.Left && v1 instanceof Data_Either.Left) { return new Data_Either.Left(Data_Semigroup.append(dictSemigroup)(v.value0)(v1.value0)); }; if (v instanceof Data_Either.Right && v1 instanceof Data_Either.Left) { return new Data_Either.Left(v1.value0); }; if (v instanceof Data_Either.Right && v1 instanceof Data_Either.Right) { return new Data_Either.Right(v.value0(v1.value0)); }; throw new Error("Failed pattern match at Simple.JSON (line 234, column 1 - line 234, column 90): " + [ v.constructor.name, v1.constructor.name ]); }; }; }; var exceptTApply = function (dictSemigroup) { return function (dictApplicative) { return function (fun) { return function (a) { return Control_Monad_Except_Trans.ExceptT(Control_Apply.apply(dictApplicative.Apply0())(Data_Functor.map((dictApplicative.Apply0()).Functor0())(applyEither(dictSemigroup))(Control_Monad_Except_Trans.runExceptT(fun)))(Control_Monad_Except_Trans.runExceptT(a))); }; }; }; }; var readFieldsCons = function (dictIsSymbol) { return function (dictReadForeign) { return function (dictReadForeignFields) { return function (dictLacks) { return function (dictCons) { return new ReadForeignFields(function (v) { return function (obj) { var rest = getFields(dictReadForeignFields)(Type_Data_RowList.RLProxy.value)(obj); var name = Data_Symbol.reflectSymbol(dictIsSymbol)(Data_Symbol.SProxy.value); var withExcept$prime = Control_Monad_Except.withExcept(Data_Functor.map(Data_List_Types.functorNonEmptyList)(Foreign.ErrorAtProperty.create(name))); var first = Control_Bind.bind(Control_Monad_Except_Trans.bindExceptT(Data_Identity.monadIdentity))(withExcept$prime(Control_Bind.bindFlipped(Control_Monad_Except_Trans.bindExceptT(Data_Identity.monadIdentity))(readImpl(dictReadForeign))(Foreign_Index.readProp(name)(obj))))(function (value) { return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(Record_Builder.insert()()(dictIsSymbol)(Data_Symbol.SProxy.value)(value)); }); return exceptTApply(Data_List_Types.semigroupNonEmptyList)(Data_Identity.applicativeIdentity)(Data_Functor.map(Control_Monad_Except_Trans.functorExceptT(Data_Identity.functorIdentity))(Control_Semigroupoid.compose(Record_Builder.semigroupoidBuilder))(first))(rest); }; }); }; }; }; }; }; module.exports = { writeJSON: writeJSON, write: write, read: read, ReadForeign: ReadForeign, readImpl: readImpl, ReadForeignFields: ReadForeignFields, getFields: getFields, WriteForeign: WriteForeign, writeImpl: writeImpl, WriteForeignFields: WriteForeignFields, writeImplFields: writeImplFields, readInt: readInt, readString: readString, readArray: readArray, readMaybe: readMaybe, readRecord: readRecord, readFieldsCons: readFieldsCons, readFieldsNil: readFieldsNil, writeForeignForeign: writeForeignForeign, writeForeignString: writeForeignString, writeForeignArray: writeForeignArray, writeForeignObject: writeForeignObject, recordWriteForeign: recordWriteForeign, consWriteForeignFields: consWriteForeignFields, nilWriteForeignFields: nilWriteForeignFields };