@pax2pay/model-banking 0.1.160 → 0.1.162

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,4 @@
1
+ import { isoly } from "isoly"
1
2
  import { isly } from "isly"
2
3
 
3
4
  export type Balance = Partial<Record<Balance.Entry, number>>
@@ -13,4 +14,13 @@ export namespace Balance {
13
14
  export const type = isly.record<Balance>(Entry.type, isly.number())
14
15
  export const is = type.is
15
16
  export const flaw = type.flaw
17
+ export function add(addendee: Balance, addend: Balance, currency: isoly.Currency): Balance {
18
+ return (Object.entries(addend) as [Entry, number][]).reduce(
19
+ (r: Balance, [entry, amount]) => ({
20
+ ...r,
21
+ [entry]: isoly.Currency.add(currency, addendee[entry] ?? 0, amount),
22
+ }),
23
+ addendee
24
+ )
25
+ }
16
26
  }
package/Balances/index.ts CHANGED
@@ -13,4 +13,13 @@ export namespace Balances {
13
13
  export const type = isly.record<Balances>(isly.fromIs("isoly.Currency", isoly.Currency.is), Balances.Balance.type)
14
14
  export const is = type.is
15
15
  export const flaw = type.flaw
16
+ export function add(addendee: Balances, addend: Balances): Balances {
17
+ return (Object.entries(addend) as [isoly.Currency, Balance][]).reduce(
18
+ (r: Balances, [currency, balance]) => ({
19
+ ...r,
20
+ [currency]: Balance.add(balance, addendee[currency] ?? {}, currency),
21
+ }),
22
+ addendee
23
+ )
24
+ }
16
25
  }
@@ -1,3 +1,4 @@
1
+ import { isoly } from "isoly"
1
2
  import { isly } from "isly"
2
3
  import { Card } from "../Card"
3
4
  import { Supplier } from "../Supplier"
@@ -21,4 +22,13 @@ export namespace Counterbalance {
21
22
  export const type = isly.record<Counterbalance>(Entry.type, isly.number())
22
23
  export const is = type.is
23
24
  export const flaw = type.flaw
25
+ export function add(addendee: Counterbalance, addend: Counterbalance, currency: isoly.Currency): Counterbalance {
26
+ return (Object.entries(addend) as [Entry, number][]).reduce(
27
+ (r: Counterbalance, [entry, amount]) => ({
28
+ ...r,
29
+ [entry]: isoly.Currency.add(currency, addendee[entry] ?? 0, amount),
30
+ }),
31
+ addendee
32
+ )
33
+ }
24
34
  }
@@ -15,4 +15,13 @@ export namespace Counterbalances {
15
15
  )
16
16
  export const is = type.is
17
17
  export const flaw = type.flaw
18
+ export function add(addendee: Counterbalances, addend: Counterbalances): Counterbalances {
19
+ return (Object.entries(addend) as [isoly.Currency, Counterbalance][]).reduce(
20
+ (r: Counterbalances, [currency, counterbalance]) => ({
21
+ ...r,
22
+ [currency]: Counterbalance.add(counterbalance, addendee[currency] ?? {}, currency),
23
+ }),
24
+ addendee
25
+ )
26
+ }
18
27
  }
@@ -7,29 +7,36 @@ export interface Operation extends OperationCreatable {
7
7
  transaction: string
8
8
  counter: number
9
9
  created: isoly.DateTime
10
- // signature: string //TODO: add chained signatures.
10
+ signature?: string
11
11
  }
12
12
  export namespace Operation {
13
+ export type Creatable = OperationCreatable
14
+ export const Creatable = OperationCreatable
15
+ export type Changes = OperationChanges
16
+ export const Changes = OperationChanges
17
+ export namespace Changes {
18
+ export type Entry = OperationChanges.Entry
19
+ }
13
20
  export const type = OperationCreatable.type.extend<Operation>({
14
21
  transaction: isly.string(),
15
22
  counter: isly.number(),
16
23
  created: isly.fromIs("isoly.DateTime", isoly.DateTime.is),
24
+ signature: isly.string().optional(),
17
25
  })
18
26
  export const is = type.is
19
27
  export const flaw = type.flaw
20
- export function fromCreatable(transaction: string, creatable: Creatable): Operation {
28
+ //TODO: actual signing function
29
+ function sign(precursor: string): string | undefined {
30
+ const signature = Number.parseInt(precursor)
31
+ return Number.isNaN(signature) ? undefined : (signature + 1).toString()
32
+ }
33
+ export function fromCreatable(transaction: string, creatable: Creatable, oldSignature?: string): Operation {
21
34
  return {
22
35
  ...creatable,
23
36
  transaction,
24
37
  counter: 0,
25
38
  created: isoly.DateTime.now(),
39
+ signature: oldSignature && sign(oldSignature),
26
40
  }
27
41
  }
28
- export type Creatable = OperationCreatable
29
- export const Creatable = OperationCreatable
30
- export type Changes = OperationChanges
31
- export const Changes = OperationChanges
32
- export namespace Changes {
33
- export type Entry = OperationChanges.Entry
34
- }
35
42
  }
@@ -1,3 +1,4 @@
1
+ import { isoly } from "isoly";
1
2
  import { isly } from "isly";
2
3
  export type Balance = Partial<Record<Balance.Entry, number>>;
3
4
  export declare namespace Balance {
@@ -11,4 +12,5 @@ export declare namespace Balance {
11
12
  const type: isly.Type<Partial<Record<"actual" | "incomingReserved" | "outgoingReserved", number>>>;
12
13
  const is: isly.Type.IsFunction<Partial<Record<"actual" | "incomingReserved" | "outgoingReserved", number>>>;
13
14
  const flaw: isly.Type.FlawFunction;
15
+ function add(addendee: Balance, addend: Balance, currency: isoly.Currency): Balance;
14
16
  }
@@ -1,3 +1,4 @@
1
+ import { isoly } from "isoly";
1
2
  import { isly } from "isly";
2
3
  export var Balance;
3
4
  (function (Balance) {
@@ -11,5 +12,12 @@ export var Balance;
11
12
  Balance.type = isly.record(Entry.type, isly.number());
12
13
  Balance.is = Balance.type.is;
13
14
  Balance.flaw = Balance.type.flaw;
15
+ function add(addendee, addend, currency) {
16
+ return Object.entries(addend).reduce((r, [entry, amount]) => ({
17
+ ...r,
18
+ [entry]: isoly.Currency.add(currency, addendee[entry] ?? 0, amount),
19
+ }), addendee);
20
+ }
21
+ Balance.add = add;
14
22
  })(Balance || (Balance = {}));
15
23
  //# sourceMappingURL=Balance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Balance.js","sourceRoot":"../","sources":["Balances/Balance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,MAAM,KAAW,OAAO,CAWvB;AAXD,WAAiB,OAAO;IAEvB,IAAiB,KAAK,CAKrB;IALD,WAAiB,KAAK;QACR,YAAM,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,kBAAkB,CAAU,CAAA;QACpE,UAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAA,MAAM,CAAC,CAAA;QAC1B,QAAE,GAAG,MAAA,IAAI,CAAC,EAAE,CAAA;QACZ,UAAI,GAAG,MAAA,IAAI,CAAC,IAAI,CAAA;IAC9B,CAAC,EALgB,KAAK,GAAL,aAAK,KAAL,aAAK,QAKrB;IACY,YAAI,GAAG,IAAI,CAAC,MAAM,CAAU,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IACtD,UAAE,GAAG,QAAA,IAAI,CAAC,EAAE,CAAA;IACZ,YAAI,GAAG,QAAA,IAAI,CAAC,IAAI,CAAA;AAC9B,CAAC,EAXgB,OAAO,KAAP,OAAO,QAWvB"}
1
+ {"version":3,"file":"Balance.js","sourceRoot":"../","sources":["Balances/Balance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,MAAM,KAAW,OAAO,CAoBvB;AApBD,WAAiB,OAAO;IAEvB,IAAiB,KAAK,CAKrB;IALD,WAAiB,KAAK;QACR,YAAM,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,kBAAkB,CAAU,CAAA;QACpE,UAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAA,MAAM,CAAC,CAAA;QAC1B,QAAE,GAAG,MAAA,IAAI,CAAC,EAAE,CAAA;QACZ,UAAI,GAAG,MAAA,IAAI,CAAC,IAAI,CAAA;IAC9B,CAAC,EALgB,KAAK,GAAL,aAAK,KAAL,aAAK,QAKrB;IACY,YAAI,GAAG,IAAI,CAAC,MAAM,CAAU,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IACtD,UAAE,GAAG,QAAA,IAAI,CAAC,EAAE,CAAA;IACZ,YAAI,GAAG,QAAA,IAAI,CAAC,IAAI,CAAA;IAC7B,SAAgB,GAAG,CAAC,QAAiB,EAAE,MAAe,EAAE,QAAwB;QAC/E,OAAQ,MAAM,CAAC,OAAO,CAAC,MAAM,CAAuB,CAAC,MAAM,CAC1D,CAAC,CAAU,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,GAAG,CAAC;YACJ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;SACnE,CAAC,EACF,QAAQ,CACR,CAAA;IACF,CAAC;IARe,WAAG,MAQlB,CAAA;AACF,CAAC,EApBgB,OAAO,KAAP,OAAO,QAoBvB"}
@@ -11,4 +11,5 @@ export declare namespace Balances {
11
11
  const type: isly.Type<Partial<Record<"BTN" | "CHE" | "MKD" | "AED" | "AFN" | "ALL" | "AMD" | "ANG" | "AOA" | "ARS" | "AUD" | "AWG" | "AZN" | "BAM" | "BBD" | "BDT" | "BGN" | "BHD" | "BIF" | "BMD" | "BND" | "BOB" | "BOV" | "BRL" | "BSD" | "BWP" | "BYN" | "BZD" | "CAD" | "CDF" | "CHF" | "CHW" | "CLF" | "CLP" | "CNY" | "COP" | "COU" | "CRC" | "CUC" | "CUP" | "CVE" | "CZK" | "DJF" | "DKK" | "DOP" | "DZD" | "EGP" | "ERN" | "ETB" | "EUR" | "FJD" | "FKP" | "GBP" | "GEL" | "GHS" | "GIP" | "GMD" | "GNF" | "GTQ" | "GYD" | "HKD" | "HNL" | "HRK" | "HTG" | "HUF" | "IDR" | "ILS" | "INR" | "IQD" | "IRR" | "ISK" | "JMD" | "JOD" | "JPY" | "KES" | "KGS" | "KHR" | "KMF" | "KPW" | "KRW" | "KWD" | "KYD" | "KZT" | "LAK" | "LBP" | "LKR" | "LRD" | "LSL" | "LYD" | "MAD" | "MDL" | "MGA" | "MMK" | "MNT" | "MOP" | "MRU" | "MUR" | "MVR" | "MWK" | "MXN" | "MXV" | "MYR" | "MZN" | "NAD" | "NGN" | "NIO" | "NOK" | "NPR" | "NZD" | "OMR" | "PAB" | "PEN" | "PGK" | "PHP" | "PKR" | "PLN" | "PYG" | "QAR" | "RON" | "RSD" | "RUB" | "RWF" | "SAR" | "SBD" | "SCR" | "SDG" | "SEK" | "SGD" | "SHP" | "SLL" | "SOS" | "SRD" | "SSP" | "STN" | "SVC" | "SYP" | "SZL" | "THB" | "TJS" | "TMT" | "TND" | "TOP" | "TRY" | "TTD" | "TWD" | "TZS" | "UAH" | "UGX" | "USD" | "USN" | "UYI" | "UYU" | "UYW" | "UZS" | "VES" | "VND" | "VUV" | "WST" | "XAF" | "XAG" | "XAU" | "XBA" | "XBB" | "XBC" | "XBD" | "XCD" | "XDR" | "XOF" | "XPD" | "XPF" | "XPT" | "XSU" | "XTS" | "XUA" | "XXX" | "YER" | "ZAR" | "ZMW" | "ZWL", Partial<Record<"actual" | "incomingReserved" | "outgoingReserved", number>>>>>;
12
12
  const is: isly.Type.IsFunction<Partial<Record<"BTN" | "CHE" | "MKD" | "AED" | "AFN" | "ALL" | "AMD" | "ANG" | "AOA" | "ARS" | "AUD" | "AWG" | "AZN" | "BAM" | "BBD" | "BDT" | "BGN" | "BHD" | "BIF" | "BMD" | "BND" | "BOB" | "BOV" | "BRL" | "BSD" | "BWP" | "BYN" | "BZD" | "CAD" | "CDF" | "CHF" | "CHW" | "CLF" | "CLP" | "CNY" | "COP" | "COU" | "CRC" | "CUC" | "CUP" | "CVE" | "CZK" | "DJF" | "DKK" | "DOP" | "DZD" | "EGP" | "ERN" | "ETB" | "EUR" | "FJD" | "FKP" | "GBP" | "GEL" | "GHS" | "GIP" | "GMD" | "GNF" | "GTQ" | "GYD" | "HKD" | "HNL" | "HRK" | "HTG" | "HUF" | "IDR" | "ILS" | "INR" | "IQD" | "IRR" | "ISK" | "JMD" | "JOD" | "JPY" | "KES" | "KGS" | "KHR" | "KMF" | "KPW" | "KRW" | "KWD" | "KYD" | "KZT" | "LAK" | "LBP" | "LKR" | "LRD" | "LSL" | "LYD" | "MAD" | "MDL" | "MGA" | "MMK" | "MNT" | "MOP" | "MRU" | "MUR" | "MVR" | "MWK" | "MXN" | "MXV" | "MYR" | "MZN" | "NAD" | "NGN" | "NIO" | "NOK" | "NPR" | "NZD" | "OMR" | "PAB" | "PEN" | "PGK" | "PHP" | "PKR" | "PLN" | "PYG" | "QAR" | "RON" | "RSD" | "RUB" | "RWF" | "SAR" | "SBD" | "SCR" | "SDG" | "SEK" | "SGD" | "SHP" | "SLL" | "SOS" | "SRD" | "SSP" | "STN" | "SVC" | "SYP" | "SZL" | "THB" | "TJS" | "TMT" | "TND" | "TOP" | "TRY" | "TTD" | "TWD" | "TZS" | "UAH" | "UGX" | "USD" | "USN" | "UYI" | "UYU" | "UYW" | "UZS" | "VES" | "VND" | "VUV" | "WST" | "XAF" | "XAG" | "XAU" | "XBA" | "XBB" | "XBC" | "XBD" | "XCD" | "XDR" | "XOF" | "XPD" | "XPF" | "XPT" | "XSU" | "XTS" | "XUA" | "XXX" | "YER" | "ZAR" | "ZMW" | "ZWL", Partial<Record<"actual" | "incomingReserved" | "outgoingReserved", number>>>>>;
13
13
  const flaw: isly.Type.FlawFunction;
14
+ function add(addendee: Balances, addend: Balances): Balances;
14
15
  }
@@ -7,5 +7,12 @@ export var Balances;
7
7
  Balances.type = isly.record(isly.fromIs("isoly.Currency", isoly.Currency.is), Balances.Balance.type);
8
8
  Balances.is = Balances.type.is;
9
9
  Balances.flaw = Balances.type.flaw;
10
+ function add(addendee, addend) {
11
+ return Object.entries(addend).reduce((r, [currency, balance]) => ({
12
+ ...r,
13
+ [currency]: Balances.Balance.add(balance, addendee[currency] ?? {}, currency),
14
+ }), addendee);
15
+ }
16
+ Balances.add = add;
10
17
  })(Balances || (Balances = {}));
11
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../","sources":["Balances/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,WAAW,CAAA;AAItD,MAAM,KAAW,QAAQ,CASxB;AATD,WAAiB,QAAQ;IACX,gBAAO,GAAG,eAAe,CAAA;IAKzB,aAAI,GAAG,IAAI,CAAC,MAAM,CAAW,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACrG,WAAE,GAAG,SAAA,IAAI,CAAC,EAAE,CAAA;IACZ,aAAI,GAAG,SAAA,IAAI,CAAC,IAAI,CAAA;AAC9B,CAAC,EATgB,QAAQ,KAAR,QAAQ,QASxB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"../","sources":["Balances/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,WAAW,CAAA;AAItD,MAAM,KAAW,QAAQ,CAkBxB;AAlBD,WAAiB,QAAQ;IACX,gBAAO,GAAG,eAAe,CAAA;IAKzB,aAAI,GAAG,IAAI,CAAC,MAAM,CAAW,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACrG,WAAE,GAAG,SAAA,IAAI,CAAC,EAAE,CAAA;IACZ,aAAI,GAAG,SAAA,IAAI,CAAC,IAAI,CAAA;IAC7B,SAAgB,GAAG,CAAC,QAAkB,EAAE,MAAgB;QACvD,OAAQ,MAAM,CAAC,OAAO,CAAC,MAAM,CAAiC,CAAC,MAAM,CACpE,CAAC,CAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YACtC,GAAG,CAAC;YACJ,CAAC,QAAQ,CAAC,EAAE,SAAA,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC;SACpE,CAAC,EACF,QAAQ,CACR,CAAA;IACF,CAAC;IARe,YAAG,MAQlB,CAAA;AACF,CAAC,EAlBgB,QAAQ,KAAR,QAAQ,QAkBxB"}
@@ -1,3 +1,4 @@
1
+ import { isoly } from "isoly";
1
2
  import { isly } from "isly";
2
3
  export type Counterbalance = Partial<Record<Counterbalance.Entry, number>>;
3
4
  export declare namespace Counterbalance {
@@ -11,4 +12,5 @@ export declare namespace Counterbalance {
11
12
  const type: isly.Type<Partial<Record<"fee.test-paxgiro" | "fee.test-tpl-paxgiro" | "fee.testUK-marqeta" | "fee.uk-tpl-marqeta" | "settle.test-paxgiro" | "settle.test-tpl-paxgiro" | "settle.testUK-marqeta" | "settle.uk-tpl-marqeta" | "incoming.paxgiro" | "incoming.clearbank" | "outgoing.paxgiro" | "outgoing.clearbank" | "incoming.internal" | "outgoing.internal" | "fee.other", number>>>;
12
13
  const is: isly.Type.IsFunction<Partial<Record<"fee.test-paxgiro" | "fee.test-tpl-paxgiro" | "fee.testUK-marqeta" | "fee.uk-tpl-marqeta" | "settle.test-paxgiro" | "settle.test-tpl-paxgiro" | "settle.testUK-marqeta" | "settle.uk-tpl-marqeta" | "incoming.paxgiro" | "incoming.clearbank" | "outgoing.paxgiro" | "outgoing.clearbank" | "incoming.internal" | "outgoing.internal" | "fee.other", number>>>;
13
14
  const flaw: isly.Type.FlawFunction;
15
+ function add(addendee: Counterbalance, addend: Counterbalance, currency: isoly.Currency): Counterbalance;
14
16
  }
@@ -1,3 +1,4 @@
1
+ import { isoly } from "isoly";
1
2
  import { isly } from "isly";
2
3
  import { Card } from "../Card";
3
4
  import { Supplier } from "../Supplier";
@@ -19,5 +20,12 @@ export var Counterbalance;
19
20
  Counterbalance.type = isly.record(Entry.type, isly.number());
20
21
  Counterbalance.is = Counterbalance.type.is;
21
22
  Counterbalance.flaw = Counterbalance.type.flaw;
23
+ function add(addendee, addend, currency) {
24
+ return Object.entries(addend).reduce((r, [entry, amount]) => ({
25
+ ...r,
26
+ [entry]: isoly.Currency.add(currency, addendee[entry] ?? 0, amount),
27
+ }), addendee);
28
+ }
29
+ Counterbalance.add = add;
22
30
  })(Counterbalance || (Counterbalance = {}));
23
31
  //# sourceMappingURL=Counterbalance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Counterbalance.js","sourceRoot":"../","sources":["CounterBalances/Counterbalance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAItC,MAAM,KAAW,cAAc,CAiB9B;AAjBD,WAAiB,cAAc;IAE9B,IAAiB,KAAK,CAWrB;IAXD,WAAiB,KAAK;QACR,YAAM,GAAG;YACrB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAU,CAAC;YACvE,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,YAAY,CAAC,EAAE,CAAU,CAAC;YAC3E,mBAAmB;YACnB,mBAAmB;YACnB,WAAW;SACF,CAAA;QACG,UAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAChC,QAAE,GAAG,MAAA,IAAI,CAAC,EAAE,CAAA;QACZ,UAAI,GAAG,MAAA,IAAI,CAAC,IAAI,CAAA;IAC9B,CAAC,EAXgB,KAAK,GAAL,oBAAK,KAAL,oBAAK,QAWrB;IACY,mBAAI,GAAG,IAAI,CAAC,MAAM,CAAiB,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IAC7D,iBAAE,GAAG,eAAA,IAAI,CAAC,EAAE,CAAA;IACZ,mBAAI,GAAG,eAAA,IAAI,CAAC,IAAI,CAAA;AAC9B,CAAC,EAjBgB,cAAc,KAAd,cAAc,QAiB9B"}
1
+ {"version":3,"file":"Counterbalance.js","sourceRoot":"../","sources":["CounterBalances/Counterbalance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAItC,MAAM,KAAW,cAAc,CA0B9B;AA1BD,WAAiB,cAAc;IAE9B,IAAiB,KAAK,CAWrB;IAXD,WAAiB,KAAK;QACR,YAAM,GAAG;YACrB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAU,CAAC;YACvE,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,YAAY,CAAC,EAAE,CAAU,CAAC;YAC3E,mBAAmB;YACnB,mBAAmB;YACnB,WAAW;SACF,CAAA;QACG,UAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAChC,QAAE,GAAG,MAAA,IAAI,CAAC,EAAE,CAAA;QACZ,UAAI,GAAG,MAAA,IAAI,CAAC,IAAI,CAAA;IAC9B,CAAC,EAXgB,KAAK,GAAL,oBAAK,KAAL,oBAAK,QAWrB;IACY,mBAAI,GAAG,IAAI,CAAC,MAAM,CAAiB,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IAC7D,iBAAE,GAAG,eAAA,IAAI,CAAC,EAAE,CAAA;IACZ,mBAAI,GAAG,eAAA,IAAI,CAAC,IAAI,CAAA;IAC7B,SAAgB,GAAG,CAAC,QAAwB,EAAE,MAAsB,EAAE,QAAwB;QAC7F,OAAQ,MAAM,CAAC,OAAO,CAAC,MAAM,CAAuB,CAAC,MAAM,CAC1D,CAAC,CAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YACxC,GAAG,CAAC;YACJ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;SACnE,CAAC,EACF,QAAQ,CACR,CAAA;IACF,CAAC;IARe,kBAAG,MAQlB,CAAA;AACF,CAAC,EA1BgB,cAAc,KAAd,cAAc,QA0B9B"}
@@ -11,4 +11,5 @@ export declare namespace Counterbalances {
11
11
  const type: isly.Type<Partial<Record<"BTN" | "CHE" | "MKD" | "AED" | "AFN" | "ALL" | "AMD" | "ANG" | "AOA" | "ARS" | "AUD" | "AWG" | "AZN" | "BAM" | "BBD" | "BDT" | "BGN" | "BHD" | "BIF" | "BMD" | "BND" | "BOB" | "BOV" | "BRL" | "BSD" | "BWP" | "BYN" | "BZD" | "CAD" | "CDF" | "CHF" | "CHW" | "CLF" | "CLP" | "CNY" | "COP" | "COU" | "CRC" | "CUC" | "CUP" | "CVE" | "CZK" | "DJF" | "DKK" | "DOP" | "DZD" | "EGP" | "ERN" | "ETB" | "EUR" | "FJD" | "FKP" | "GBP" | "GEL" | "GHS" | "GIP" | "GMD" | "GNF" | "GTQ" | "GYD" | "HKD" | "HNL" | "HRK" | "HTG" | "HUF" | "IDR" | "ILS" | "INR" | "IQD" | "IRR" | "ISK" | "JMD" | "JOD" | "JPY" | "KES" | "KGS" | "KHR" | "KMF" | "KPW" | "KRW" | "KWD" | "KYD" | "KZT" | "LAK" | "LBP" | "LKR" | "LRD" | "LSL" | "LYD" | "MAD" | "MDL" | "MGA" | "MMK" | "MNT" | "MOP" | "MRU" | "MUR" | "MVR" | "MWK" | "MXN" | "MXV" | "MYR" | "MZN" | "NAD" | "NGN" | "NIO" | "NOK" | "NPR" | "NZD" | "OMR" | "PAB" | "PEN" | "PGK" | "PHP" | "PKR" | "PLN" | "PYG" | "QAR" | "RON" | "RSD" | "RUB" | "RWF" | "SAR" | "SBD" | "SCR" | "SDG" | "SEK" | "SGD" | "SHP" | "SLL" | "SOS" | "SRD" | "SSP" | "STN" | "SVC" | "SYP" | "SZL" | "THB" | "TJS" | "TMT" | "TND" | "TOP" | "TRY" | "TTD" | "TWD" | "TZS" | "UAH" | "UGX" | "USD" | "USN" | "UYI" | "UYU" | "UYW" | "UZS" | "VES" | "VND" | "VUV" | "WST" | "XAF" | "XAG" | "XAU" | "XBA" | "XBB" | "XBC" | "XBD" | "XCD" | "XDR" | "XOF" | "XPD" | "XPF" | "XPT" | "XSU" | "XTS" | "XUA" | "XXX" | "YER" | "ZAR" | "ZMW" | "ZWL", Partial<Record<"fee.test-paxgiro" | "fee.test-tpl-paxgiro" | "fee.testUK-marqeta" | "fee.uk-tpl-marqeta" | "settle.test-paxgiro" | "settle.test-tpl-paxgiro" | "settle.testUK-marqeta" | "settle.uk-tpl-marqeta" | "incoming.paxgiro" | "incoming.clearbank" | "outgoing.paxgiro" | "outgoing.clearbank" | "incoming.internal" | "outgoing.internal" | "fee.other", number>>>>>;
12
12
  const is: isly.Type.IsFunction<Partial<Record<"BTN" | "CHE" | "MKD" | "AED" | "AFN" | "ALL" | "AMD" | "ANG" | "AOA" | "ARS" | "AUD" | "AWG" | "AZN" | "BAM" | "BBD" | "BDT" | "BGN" | "BHD" | "BIF" | "BMD" | "BND" | "BOB" | "BOV" | "BRL" | "BSD" | "BWP" | "BYN" | "BZD" | "CAD" | "CDF" | "CHF" | "CHW" | "CLF" | "CLP" | "CNY" | "COP" | "COU" | "CRC" | "CUC" | "CUP" | "CVE" | "CZK" | "DJF" | "DKK" | "DOP" | "DZD" | "EGP" | "ERN" | "ETB" | "EUR" | "FJD" | "FKP" | "GBP" | "GEL" | "GHS" | "GIP" | "GMD" | "GNF" | "GTQ" | "GYD" | "HKD" | "HNL" | "HRK" | "HTG" | "HUF" | "IDR" | "ILS" | "INR" | "IQD" | "IRR" | "ISK" | "JMD" | "JOD" | "JPY" | "KES" | "KGS" | "KHR" | "KMF" | "KPW" | "KRW" | "KWD" | "KYD" | "KZT" | "LAK" | "LBP" | "LKR" | "LRD" | "LSL" | "LYD" | "MAD" | "MDL" | "MGA" | "MMK" | "MNT" | "MOP" | "MRU" | "MUR" | "MVR" | "MWK" | "MXN" | "MXV" | "MYR" | "MZN" | "NAD" | "NGN" | "NIO" | "NOK" | "NPR" | "NZD" | "OMR" | "PAB" | "PEN" | "PGK" | "PHP" | "PKR" | "PLN" | "PYG" | "QAR" | "RON" | "RSD" | "RUB" | "RWF" | "SAR" | "SBD" | "SCR" | "SDG" | "SEK" | "SGD" | "SHP" | "SLL" | "SOS" | "SRD" | "SSP" | "STN" | "SVC" | "SYP" | "SZL" | "THB" | "TJS" | "TMT" | "TND" | "TOP" | "TRY" | "TTD" | "TWD" | "TZS" | "UAH" | "UGX" | "USD" | "USN" | "UYI" | "UYU" | "UYW" | "UZS" | "VES" | "VND" | "VUV" | "WST" | "XAF" | "XAG" | "XAU" | "XBA" | "XBB" | "XBC" | "XBD" | "XCD" | "XDR" | "XOF" | "XPD" | "XPF" | "XPT" | "XSU" | "XTS" | "XUA" | "XXX" | "YER" | "ZAR" | "ZMW" | "ZWL", Partial<Record<"fee.test-paxgiro" | "fee.test-tpl-paxgiro" | "fee.testUK-marqeta" | "fee.uk-tpl-marqeta" | "settle.test-paxgiro" | "settle.test-tpl-paxgiro" | "settle.testUK-marqeta" | "settle.uk-tpl-marqeta" | "incoming.paxgiro" | "incoming.clearbank" | "outgoing.paxgiro" | "outgoing.clearbank" | "incoming.internal" | "outgoing.internal" | "fee.other", number>>>>>;
13
13
  const flaw: isly.Type.FlawFunction;
14
+ function add(addendee: Counterbalances, addend: Counterbalances): Counterbalances;
14
15
  }
@@ -7,5 +7,12 @@ export var Counterbalances;
7
7
  Counterbalances.type = isly.record(isly.fromIs("isoly.Currency", isoly.Currency.is), CounterbalancesCounterBalance.type);
8
8
  Counterbalances.is = Counterbalances.type.is;
9
9
  Counterbalances.flaw = Counterbalances.type.flaw;
10
+ function add(addendee, addend) {
11
+ return Object.entries(addend).reduce((r, [currency, counterbalance]) => ({
12
+ ...r,
13
+ [currency]: Counterbalances.Counterbalance.add(counterbalance, addendee[currency] ?? {}, currency),
14
+ }), addendee);
15
+ }
16
+ Counterbalances.add = add;
10
17
  })(Counterbalances || (Counterbalances = {}));
11
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../","sources":["CounterBalances/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,cAAc,IAAI,6BAA6B,EAAE,MAAM,kBAAkB,CAAA;AAGlF,MAAM,KAAW,eAAe,CAY/B;AAZD,WAAiB,eAAe;IAElB,8BAAc,GAAG,6BAA6B,CAAA;IAI9C,oBAAI,GAAG,IAAI,CAAC,MAAM,CAC9B,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAChD,6BAA6B,CAAC,IAAI,CAClC,CAAA;IACY,kBAAE,GAAG,gBAAA,IAAI,CAAC,EAAE,CAAA;IACZ,oBAAI,GAAG,gBAAA,IAAI,CAAC,IAAI,CAAA;AAC9B,CAAC,EAZgB,eAAe,KAAf,eAAe,QAY/B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"../","sources":["CounterBalances/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,cAAc,IAAI,6BAA6B,EAAE,MAAM,kBAAkB,CAAA;AAGlF,MAAM,KAAW,eAAe,CAqB/B;AArBD,WAAiB,eAAe;IAElB,8BAAc,GAAG,6BAA6B,CAAA;IAI9C,oBAAI,GAAG,IAAI,CAAC,MAAM,CAC9B,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAChD,6BAA6B,CAAC,IAAI,CAClC,CAAA;IACY,kBAAE,GAAG,gBAAA,IAAI,CAAC,EAAE,CAAA;IACZ,oBAAI,GAAG,gBAAA,IAAI,CAAC,IAAI,CAAA;IAC7B,SAAgB,GAAG,CAAC,QAAyB,EAAE,MAAuB;QACrE,OAAQ,MAAM,CAAC,OAAO,CAAC,MAAM,CAAwC,CAAC,MAAM,CAC3E,CAAC,CAAkB,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;YACpD,GAAG,CAAC;YACJ,CAAC,QAAQ,CAAC,EAAE,gBAAA,cAAc,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC;SAClF,CAAC,EACF,QAAQ,CACR,CAAA;IACF,CAAC;IARe,mBAAG,MAQlB,CAAA;AACF,CAAC,EArBgB,eAAe,KAAf,eAAe,QAqB/B"}
@@ -6,12 +6,9 @@ export interface Operation extends OperationCreatable {
6
6
  transaction: string;
7
7
  counter: number;
8
8
  created: isoly.DateTime;
9
+ signature?: string;
9
10
  }
10
11
  export declare namespace Operation {
11
- const type: isly.object.ExtendableType<Operation>;
12
- const is: isly.Type.IsFunction<Operation>;
13
- const flaw: isly.Type.FlawFunction;
14
- function fromCreatable(transaction: string, creatable: Creatable): Operation;
15
12
  type Creatable = OperationCreatable;
16
13
  const Creatable: typeof OperationCreatable;
17
14
  type Changes = OperationChanges;
@@ -19,4 +16,8 @@ export declare namespace Operation {
19
16
  namespace Changes {
20
17
  type Entry = OperationChanges.Entry;
21
18
  }
19
+ const type: isly.object.ExtendableType<Operation>;
20
+ const is: isly.Type.IsFunction<Operation>;
21
+ const flaw: isly.Type.FlawFunction;
22
+ function fromCreatable(transaction: string, creatable: Creatable, oldSignature?: string): Operation;
22
23
  }
@@ -4,23 +4,29 @@ import { Changes as OperationChanges } from "./Changes";
4
4
  import { Creatable as OperationCreatable } from "./Creatable";
5
5
  export var Operation;
6
6
  (function (Operation) {
7
+ Operation.Creatable = OperationCreatable;
8
+ Operation.Changes = OperationChanges;
7
9
  Operation.type = OperationCreatable.type.extend({
8
10
  transaction: isly.string(),
9
11
  counter: isly.number(),
10
12
  created: isly.fromIs("isoly.DateTime", isoly.DateTime.is),
13
+ signature: isly.string().optional(),
11
14
  });
12
15
  Operation.is = Operation.type.is;
13
16
  Operation.flaw = Operation.type.flaw;
14
- function fromCreatable(transaction, creatable) {
17
+ function sign(precursor) {
18
+ const signature = Number.parseInt(precursor);
19
+ return Number.isNaN(signature) ? undefined : (signature + 1).toString();
20
+ }
21
+ function fromCreatable(transaction, creatable, oldSignature) {
15
22
  return {
16
23
  ...creatable,
17
24
  transaction,
18
25
  counter: 0,
19
26
  created: isoly.DateTime.now(),
27
+ signature: oldSignature && sign(oldSignature),
20
28
  };
21
29
  }
22
30
  Operation.fromCreatable = fromCreatable;
23
- Operation.Creatable = OperationCreatable;
24
- Operation.Changes = OperationChanges;
25
31
  })(Operation || (Operation = {}));
26
32
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../","sources":["Operation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACvD,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAQ7D,MAAM,KAAW,SAAS,CAuBzB;AAvBD,WAAiB,SAAS;IACZ,cAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAY;QAC7D,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE;QAC1B,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE;QACtB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;KACzD,CAAC,CAAA;IACW,YAAE,GAAG,UAAA,IAAI,CAAC,EAAE,CAAA;IACZ,cAAI,GAAG,UAAA,IAAI,CAAC,IAAI,CAAA;IAC7B,SAAgB,aAAa,CAAC,WAAmB,EAAE,SAAoB;QACtE,OAAO;YACN,GAAG,SAAS;YACZ,WAAW;YACX,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;SAC7B,CAAA;IACF,CAAC;IAPe,uBAAa,gBAO5B,CAAA;IAEY,mBAAS,GAAG,kBAAkB,CAAA;IAE9B,iBAAO,GAAG,gBAAgB,CAAA;AAIxC,CAAC,EAvBgB,SAAS,KAAT,SAAS,QAuBzB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"../","sources":["Operation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACvD,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAQ7D,MAAM,KAAW,SAAS,CA8BzB;AA9BD,WAAiB,SAAS;IAEZ,mBAAS,GAAG,kBAAkB,CAAA;IAE9B,iBAAO,GAAG,gBAAgB,CAAA;IAI1B,cAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAY;QAC7D,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE;QAC1B,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE;QACtB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACnC,CAAC,CAAA;IACW,YAAE,GAAG,UAAA,IAAI,CAAC,EAAE,CAAA;IACZ,cAAI,GAAG,UAAA,IAAI,CAAC,IAAI,CAAA;IAE7B,SAAS,IAAI,CAAC,SAAiB;QAC9B,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QAC5C,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IACxE,CAAC;IACD,SAAgB,aAAa,CAAC,WAAmB,EAAE,SAAoB,EAAE,YAAqB;QAC7F,OAAO;YACN,GAAG,SAAS;YACZ,WAAW;YACX,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;YAC7B,SAAS,EAAE,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC;SAC7C,CAAA;IACF,CAAC;IARe,uBAAa,gBAQ5B,CAAA;AACF,CAAC,EA9BgB,SAAS,KAAT,SAAS,QA8BzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pax2pay/model-banking",
3
- "version": "0.1.160",
3
+ "version": "0.1.162",
4
4
  "description": "Library containing data model types and functions for the Pax2Pay Banking API.",
5
5
  "author": "Pax2Pay Ltd",
6
6
  "license": "MIT",