UNPKG

@accordproject/cicero-server

Version:

Cicero Server - wraps the Cicero Engine and exposes it as a RESTful service

616 lines (613 loc) • 538 kB
/* Generated using ergoc version 0.20.7 */ 'use strict'; /*eslint-disable no-unused-vars*/ /*eslint-disable no-undef*/ /*eslint-disable no-var*/ const inheritance=[ { "sub": ("org.accordproject.latedeliveryandpenalty.LateDeliveryAndPenaltyResponse"), "sup": ("org.accordproject.cicero.runtime.Response") }, { "sub": ("org.accordproject.latedeliveryandpenalty.LateDeliveryAndPenaltyResponse"), "sup": ("org.accordproject.base.Transaction") }, { "sub": ("org.accordproject.latedeliveryandpenalty.LateDeliveryAndPenaltyRequest"), "sup": ("org.accordproject.cicero.runtime.Request") }, { "sub": ("org.accordproject.latedeliveryandpenalty.LateDeliveryAndPenaltyRequest"), "sup": ("org.accordproject.base.Transaction") }, { "sub": ("org.accordproject.latedeliveryandpenalty.TemplateModel"), "sup": ("org.accordproject.cicero.contract.AccordClause") }, { "sub": ("org.accordproject.latedeliveryandpenalty.TemplateModel"), "sup": ("org.accordproject.base.Asset") }, { "sub": ("org.accordproject.time.PeriodUnit"), "sup": ("org.accordproject.base.Enum") }, { "sub": ("org.accordproject.time.TemporalUnit"), "sup": ("org.accordproject.base.Enum") }, { "sub": ("org.accordproject.time.Day"), "sup": ("org.accordproject.base.Enum") }, { "sub": ("org.accordproject.time.Month"), "sup": ("org.accordproject.base.Enum") }, { "sub": ("org.accordproject.ergo.stdlib.Error"), "sup": ("org.accordproject.cicero.runtime.ErrorResponse") }, { "sub": ("org.accordproject.ergo.stdlib.Error"), "sup": ("org.accordproject.base.Transaction") }, { "sub": ("org.accordproject.cicero.runtime.NotificationObligation"), "sup": ("org.accordproject.cicero.runtime.Obligation") }, { "sub": ("org.accordproject.cicero.runtime.NotificationObligation"), "sup": ("org.accordproject.base.Event") }, { "sub": ("org.accordproject.cicero.runtime.PaymentObligation"), "sup": ("org.accordproject.cicero.runtime.Obligation") }, { "sub": ("org.accordproject.cicero.runtime.PaymentObligation"), "sup": ("org.accordproject.base.Event") }, { "sub": ("org.accordproject.cicero.runtime.Obligation"), "sup": ("org.accordproject.base.Event") }, { "sub": ("org.accordproject.cicero.runtime.ErrorResponse"), "sup": ("org.accordproject.base.Transaction") }, { "sub": ("org.accordproject.cicero.runtime.Response"), "sup": ("org.accordproject.base.Transaction") }, { "sub": ("org.accordproject.cicero.runtime.Request"), "sup": ("org.accordproject.base.Transaction") }, { "sub": ("org.accordproject.money.CurrencyCode"), "sup": ("org.accordproject.base.Enum") }, { "sub": ("org.accordproject.money.CryptoCurrencyCode"), "sup": ("org.accordproject.base.Enum") }, { "sub": ("org.accordproject.cicero.contract.AccordClause"), "sup": ("org.accordproject.base.Asset") }, { "sub": ("org.accordproject.cicero.contract.AccordContract"), "sup": ("org.accordproject.base.Asset") }, { "sub": ("org.accordproject.cicero.contract.AccordParty"), "sup": ("org.accordproject.base.Participant") }, { "sub": ("org.accordproject.cicero.contract.AccordState"), "sup": ("org.accordproject.base.Asset") }, { "sub": ("org.accordproject.commonmark.Document"), "sup": ("org.accordproject.commonmark.Root") }, { "sub": ("org.accordproject.commonmark.Document"), "sup": ("org.accordproject.commonmark.Node") }, { "sub": ("org.accordproject.commonmark.Item"), "sup": ("org.accordproject.commonmark.Child") }, { "sub": ("org.accordproject.commonmark.Item"), "sup": ("org.accordproject.commonmark.Node") }, { "sub": ("org.accordproject.commonmark.Paragraph"), "sup": ("org.accordproject.commonmark.Child") }, { "sub": ("org.accordproject.commonmark.Paragraph"), "sup": ("org.accordproject.commonmark.Node") }, { "sub": ("org.accordproject.commonmark.Image"), "sup": ("org.accordproject.commonmark.Child") }, { "sub": ("org.accordproject.commonmark.Image"), "sup": ("org.accordproject.commonmark.Node") }, { "sub": ("org.accordproject.commonmark.Link"), "sup": ("org.accordproject.commonmark.Child") }, { "sub": ("org.accordproject.commonmark.Link"), "sup": ("org.accordproject.commonmark.Node") }, { "sub": ("org.accordproject.commonmark.Linebreak"), "sup": ("org.accordproject.commonmark.Child") }, { "sub": ("org.accordproject.commonmark.Linebreak"), "sup": ("org.accordproject.commonmark.Node") }, { "sub": ("org.accordproject.commonmark.Softbreak"), "sup": ("org.accordproject.commonmark.Child") }, { "sub": ("org.accordproject.commonmark.Softbreak"), "sup": ("org.accordproject.commonmark.Node") }, { "sub": ("org.accordproject.commonmark.ThematicBreak"), "sup": ("org.accordproject.commonmark.Child") }, { "sub": ("org.accordproject.commonmark.ThematicBreak"), "sup": ("org.accordproject.commonmark.Node") }, { "sub": ("org.accordproject.commonmark.Heading"), "sup": ("org.accordproject.commonmark.Child") }, { "sub": ("org.accordproject.commonmark.Heading"), "sup": ("org.accordproject.commonmark.Node") }, { "sub": ("org.accordproject.commonmark.BlockQuote"), "sup": ("org.accordproject.commonmark.Child") }, { "sub": ("org.accordproject.commonmark.BlockQuote"), "sup": ("org.accordproject.commonmark.Node") }, { "sub": ("org.accordproject.commonmark.Strong"), "sup": ("org.accordproject.commonmark.Child") }, { "sub": ("org.accordproject.commonmark.Strong"), "sup": ("org.accordproject.commonmark.Node") }, { "sub": ("org.accordproject.commonmark.Emph"), "sup": ("org.accordproject.commonmark.Child") }, { "sub": ("org.accordproject.commonmark.Emph"), "sup": ("org.accordproject.commonmark.Node") }, { "sub": ("org.accordproject.commonmark.HtmlBlock"), "sup": ("org.accordproject.commonmark.Child") }, { "sub": ("org.accordproject.commonmark.HtmlBlock"), "sup": ("org.accordproject.commonmark.Node") }, { "sub": ("org.accordproject.commonmark.HtmlInline"), "sup": ("org.accordproject.commonmark.Child") }, { "sub": ("org.accordproject.commonmark.HtmlInline"), "sup": ("org.accordproject.commonmark.Node") }, { "sub": ("org.accordproject.commonmark.Code"), "sup": ("org.accordproject.commonmark.Child") }, { "sub": ("org.accordproject.commonmark.Code"), "sup": ("org.accordproject.commonmark.Node") }, { "sub": ("org.accordproject.commonmark.CodeBlock"), "sup": ("org.accordproject.commonmark.Child") }, { "sub": ("org.accordproject.commonmark.CodeBlock"), "sup": ("org.accordproject.commonmark.Node") }, { "sub": ("org.accordproject.commonmark.Text"), "sup": ("org.accordproject.commonmark.Child") }, { "sub": ("org.accordproject.commonmark.Text"), "sup": ("org.accordproject.commonmark.Node") }, { "sub": ("org.accordproject.commonmark.Root"), "sup": ("org.accordproject.commonmark.Node") }, { "sub": ("org.accordproject.ciceromark.ListVariable"), "sup": ("org.accordproject.commonmark.List") }, { "sub": ("org.accordproject.ciceromark.ListVariable"), "sup": ("org.accordproject.commonmark.Child") }, { "sub": ("org.accordproject.ciceromark.ListVariable"), "sup": ("org.accordproject.commonmark.Node") }, { "sub": ("org.accordproject.commonmark.List"), "sup": ("org.accordproject.commonmark.Child") }, { "sub": ("org.accordproject.commonmark.List"), "sup": ("org.accordproject.commonmark.Node") }, { "sub": ("org.accordproject.ciceromark.ConditionalVariable"), "sup": ("org.accordproject.commonmark.Child") }, { "sub": ("org.accordproject.ciceromark.ConditionalVariable"), "sup": ("org.accordproject.commonmark.Node") }, { "sub": ("org.accordproject.ciceromark.ComputedVariable"), "sup": ("org.accordproject.commonmark.Child") }, { "sub": ("org.accordproject.ciceromark.ComputedVariable"), "sup": ("org.accordproject.commonmark.Node") }, { "sub": ("org.accordproject.ciceromark.Variable"), "sup": ("org.accordproject.commonmark.Child") }, { "sub": ("org.accordproject.ciceromark.Variable"), "sup": ("org.accordproject.commonmark.Node") }, { "sub": ("org.accordproject.ciceromark.Clause"), "sup": ("org.accordproject.commonmark.Child") }, { "sub": ("org.accordproject.ciceromark.Clause"), "sup": ("org.accordproject.commonmark.Node") }, { "sub": ("org.accordproject.commonmark.Child"), "sup": ("org.accordproject.commonmark.Node") } ] /** * Execute the smart clause * @param {Context} context - the Accord context * @param {org.accordproject.latedeliveryandpenalty.LateDeliveryAndPenaltyRequest} context.request - the incoming request * @param {org.accordproject.latedeliveryandpenalty.LateDeliveryAndPenaltyResponse} context.response - the response * @param {org.accordproject.base.Event} context.emit - the emitted events * @param {org.accordproject.cicero.contract.AccordState} context.state - the state */ function orgXaccordprojectXlatedeliveryandpenaltyXLateDeliveryAndPenalty_latedeliveryandpenalty(context) { let pcontext = Object.assign(context, { 'request' : context.request }); return orgXaccordprojectXlatedeliveryandpenaltyXLateDeliveryAndPenalty.latedeliveryandpenalty(pcontext); } class orgXaccordprojectXlatedeliveryandpenaltyXLateDeliveryAndPenalty{ static main(constants0) { { let ret0; { let __lstate; { ; __lstate = recDot(constants0, "__state");; { let __lemit; { ; __lemit = recDot(constants0, "__emit");; { let __this; { ; __this = recDot(constants0, "__contract");; { let $match0; { ; $match0 = recDot(constants0, "request");; { let stratify0; { ; if (either(cast([ "org.accordproject.latedeliveryandpenalty.LateDeliveryAndPenaltyRequest" ], $match0))) { { let $case0 = toLeft(cast([ "org.accordproject.latedeliveryandpenalty.LateDeliveryAndPenaltyRequest" ], $match0)); stratify0 = { "$left": ({ "$$main": ($case0) }) }; } } else { { let $case1 = toRight(cast([ "org.accordproject.latedeliveryandpenalty.LateDeliveryAndPenaltyRequest" ], $match0)); stratify0 = { "$right": (null) }; } }; if (either(stratify0)) { { let $case0 = toLeft(stratify0); { let $4; { ; $4 = $case0;; { let $main; { ; $main = recDot($4, "$$main");; { let __contract; { ; __contract = recDot(constants0, "__contract");; { let __state; { ; __state = __lstate;; { let __emit; { ; __emit = __lemit;; { let request; { ; request = $main;; { let __lstate$0; { ; __lstate$0 = recDot(constants0, "__state");; { let __lemit$0; { ; __lemit$0 = recDot(constants0, "__emit");; { let __this$0; { ; __this$0 = recDot(constants0, "__contract");; { let agreed; { ; agreed = recDot(unbrand(recDot(constants0, "request")), "agreedDelivery");; { let stratify0$A; { ; { let p1; { ; p1 = agreed;; { let p2; { ; p2 = recDot(constants0, "__now");; stratify0$A = dateTimeIsBefore(p1, p2); } } } }; if ((!stratify0$A)) { ret0 = { "$right": (brand([ "org.accordproject.ergo.stdlib.Error" ], { "message": ("Cannot exercise late delivery before delivery date") })) }; } else { if ((!((!recDot(unbrand(recDot(constants0, "__contract")), "forceMajeure")) || (!recDot(unbrand(recDot(constants0, "request")), "forceMajeure"))))) { ret0 = { "$left": (recConcat(recConcat({ "__response": (brand([ "org.accordproject.latedeliveryandpenalty.LateDeliveryAndPenaltyResponse" ], recConcat({ "penalty": (0.0) }, { "buyerMayTerminate": (true) }))) }, { "__state": (__lstate$0) }), { "__emit": (__lemit$0) })) }; } else { { let diff; { ; { let stratify0$9; { ; { let x; { ; x = recDot(constants0, "__now");; { let y; { ; y = agreed;; { let z; { ; z = { "$class": ([ "org.accordproject.time.TemporalUnit" ]), "$data": ({ "$right": ({ "$right": ({ "$right": ({ "$left": ("days") }) }) }) }) };; { let du; { ; { let du$0; { ; { let p1; { ; p1 = x;; { let p2; { ; p2 = y;; du$0 = dateTimeDiff(p1, p2); } } } }; { let stratify0$0; { ; { let p0; { ; p0 = du$0;; stratify0$0 = dateTimeDurationAmount(p0); } }; du = brand([ "org.accordproject.time.Duration" ], recConcat({ "unit": ({ "$class": ([ "org.accordproject.time.TemporalUnit" ]), "$data": ({ "$left": ("seconds") }) }) }, { "amount": (stratify0$0) })); } } } }; { let u; { ; u = z;; if (equal(u, recDot(unbrand(du), "unit"))) { stratify0$9 = du; } else { { let amount; { ; { let $3; { ; $3 = u;; { let stratify0$8; { ; if (equal($3, { "$class": ([ "org.accordproject.time.TemporalUnit" ]), "$data": ({ "$left": ("seconds") }) })) { stratify0$8 = { "$left": ({ }) }; } else { stratify0$8 = { "$right": (null) }; }; if (either(stratify0$8)) { { let $case0 = toLeft(stratify0$8); { let $2; { ; $2 = $case0;; { let $1; { ; $1 = recDot(unbrand(du), "unit");; { let stratify0$3; { ; if (equal($1, { "$class": ([ "org.accordproject.time.TemporalUnit" ]), "$data": ({ "$right": ({ "$left": ("minutes") }) }) })) { stratify0$3 = { "$left": ({ }) }; } else { stratify0$3 = { "$right": (null) }; }; if (either(stratify0$3)) { { let $case0 = toLeft(stratify0$3); { let $0; { ; $0 = $case0;; amount = natMult(recDot(unbrand(du), "amount"), { "$nat": (60.0) }); } } } } else { { let $case1 = toRight(stratify0$3); { let stratify0$2; { ; if (equal($1, { "$class": ([ "org.accordproject.time.TemporalUnit" ]), "$data": ({ "$right": ({ "$right": ({ "$left": ("hours") }) }) }) })) { stratify0$2 = { "$left": ({ }) }; } else { stratify0$2 = { "$right": (null) }; }; if (either(stratify0$2)) { { let $case0 = toLeft(stratify0$2); { let $0; { ; $0 = $case0;; amount = natMult(natMult(recDot(unbrand(du), "amount"), { "$nat": (60.0) }), { "$nat": (60.0) }); } } } } else { { let $case1 = toRight(stratify0$2); { let stratify0$1; { ; if (equal($1, { "$class": ([ "org.accordproject.time.TemporalUnit" ]), "$data": ({ "$right": ({ "$right": ({ "$right": ({ "$left": ("days") }) }) }) }) })) { stratify0$1 = { "$left": ({ })