@pax2pay/model-banking 0.1.383 → 0.1.385

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.
Files changed (81) hide show
  1. package/Card/Creatable.ts +2 -1
  2. package/Card/index.ts +2 -1
  3. package/Operation/Creatable.ts +1 -1
  4. package/Organization/index.ts +2 -1
  5. package/Rule/{Rule/Base.ts → Base.ts} +7 -0
  6. package/Rule/Charge.ts +108 -0
  7. package/Rule/Other.ts +48 -0
  8. package/Rule/Reserve.ts +111 -0
  9. package/Rule/Score.ts +45 -0
  10. package/Rule/State/Transaction.ts +17 -4
  11. package/Rule/State/index.ts +3 -2
  12. package/Rule/control.ts +8 -0
  13. package/Rule/index.ts +76 -97
  14. package/Rule/type.ts +13 -0
  15. package/Settlement/Batch.ts +1 -2
  16. package/Transaction/index.ts +3 -3
  17. package/dist/Authorization/Status.d.ts +1 -1
  18. package/dist/Card/Creatable.d.ts +1 -1
  19. package/dist/Card/Creatable.js +1 -1
  20. package/dist/Card/Creatable.js.map +1 -1
  21. package/dist/Card/index.d.ts +1 -1
  22. package/dist/Card/index.js +1 -1
  23. package/dist/Card/index.js.map +1 -1
  24. package/dist/Operation/Creatable.js +1 -1
  25. package/dist/Operation/Creatable.js.map +1 -1
  26. package/dist/Organization/index.d.ts +3 -3
  27. package/dist/Organization/index.js +1 -1
  28. package/dist/Organization/index.js.map +1 -1
  29. package/dist/Rail/index.d.ts +1 -1
  30. package/dist/Rule/{Rule/Base.d.ts → Base.d.ts} +1 -0
  31. package/dist/Rule/{Rule/Base.js → Base.js} +6 -0
  32. package/dist/Rule/Base.js.map +1 -0
  33. package/dist/Rule/Charge.d.ts +40 -0
  34. package/dist/Rule/Charge.js +68 -0
  35. package/dist/Rule/Charge.js.map +1 -0
  36. package/dist/Rule/{Rule/Other.d.ts → Other.d.ts} +8 -0
  37. package/dist/Rule/Other.js +38 -0
  38. package/dist/Rule/Other.js.map +1 -0
  39. package/dist/Rule/Reserve.d.ts +38 -0
  40. package/dist/Rule/Reserve.js +76 -0
  41. package/dist/Rule/Reserve.js.map +1 -0
  42. package/dist/Rule/{Rule/Score.d.ts → Score.d.ts} +6 -0
  43. package/dist/Rule/Score.js +30 -0
  44. package/dist/Rule/Score.js.map +1 -0
  45. package/dist/Rule/State/Transaction.d.ts +9 -4
  46. package/dist/Rule/State/Transaction.js +7 -2
  47. package/dist/Rule/State/Transaction.js.map +1 -1
  48. package/dist/Rule/State/index.d.ts +3 -3
  49. package/dist/Rule/State/index.js +2 -2
  50. package/dist/Rule/State/index.js.map +1 -1
  51. package/dist/Rule/control.d.ts +4 -0
  52. package/dist/Rule/control.js +6 -0
  53. package/dist/Rule/control.js.map +1 -0
  54. package/dist/Rule/index.d.ts +29 -13
  55. package/dist/Rule/index.js +68 -70
  56. package/dist/Rule/index.js.map +1 -1
  57. package/dist/Rule/type.d.ts +3 -0
  58. package/dist/Rule/type.js +7 -0
  59. package/dist/Rule/type.js.map +1 -0
  60. package/dist/Settlement/Batch.d.ts +0 -1
  61. package/dist/Settlement/Batch.js +1 -2
  62. package/dist/Settlement/Batch.js.map +1 -1
  63. package/dist/Transaction/Status.d.ts +1 -1
  64. package/dist/Transaction/index.js +3 -3
  65. package/dist/Transaction/index.js.map +1 -1
  66. package/package.json +1 -1
  67. package/Rule/Rule/Charge.ts +0 -48
  68. package/Rule/Rule/Other.ts +0 -14
  69. package/Rule/Rule/Score.ts +0 -21
  70. package/Rule/Rule/index.ts +0 -37
  71. package/dist/Rule/Rule/Base.js.map +0 -1
  72. package/dist/Rule/Rule/Charge.d.ts +0 -29
  73. package/dist/Rule/Rule/Charge.js +0 -34
  74. package/dist/Rule/Rule/Charge.js.map +0 -1
  75. package/dist/Rule/Rule/Other.js +0 -12
  76. package/dist/Rule/Rule/Other.js.map +0 -1
  77. package/dist/Rule/Rule/Score.js +0 -16
  78. package/dist/Rule/Rule/Score.js.map +0 -1
  79. package/dist/Rule/Rule/index.d.ts +0 -24
  80. package/dist/Rule/Rule/index.js +0 -27
  81. package/dist/Rule/Rule/index.js.map +0 -1
@@ -2,7 +2,6 @@ import { isly } from "isly"
2
2
 
3
3
  export type Batch = string
4
4
  export namespace Batch {
5
- export const regexp = new RegExp(/20\d\d(?:[0-2]\d\d|3[0-6]\d)0[1-6]$/)
6
- export const type = isly.string<Batch>(regexp)
5
+ export const type = isly.string<Batch>()
7
6
  export const is = type.is
8
7
  }
@@ -138,7 +138,7 @@ export namespace Transaction {
138
138
  notes: state.notes,
139
139
  state,
140
140
  risk: state.transaction.risk,
141
- ...(state.transaction.original.charge && { charge: state.transaction.original.charge }),
141
+ ...(state.transaction.original.charge && { charge: state.transaction.original.charge.total }),
142
142
  }
143
143
  }
144
144
  export function system(
@@ -259,7 +259,7 @@ export namespace Transaction {
259
259
  notes: state.notes,
260
260
  state,
261
261
  risk: state.transaction.risk,
262
- ...(state.transaction.original.charge && { charge: state.transaction.original.charge }),
262
+ ...(state.transaction.original.charge && { charge: state.transaction.original.charge.total }),
263
263
  }
264
264
  }
265
265
  export function fromRefund(
@@ -286,7 +286,7 @@ export namespace Transaction {
286
286
  flags: [],
287
287
  oldFlags: [],
288
288
  notes: [],
289
- ...(state.transaction.original.charge && { charge: state.transaction.original.charge }),
289
+ ...(state.transaction.original.charge && { charge: state.transaction.original.charge.total }),
290
290
  }
291
291
  }
292
292
  export function isIdentifier(value: string | any): value is string {
@@ -8,5 +8,5 @@ export declare namespace Status {
8
8
  namespace Failed {
9
9
  function from(error: gracely.Error | Transaction.Status.Reason): Failed;
10
10
  }
11
- const type: isly.Type<"denied" | "other" | "approved" | "insufficient funds" | "cancelled card" | "card expired" | "exceeds limit" | "invalid csc" | "system failure" | "invalid request" | "expired" | "card not found" | "account not found">;
11
+ const type: isly.Type<"denied" | "other" | "insufficient funds" | "cancelled card" | "card expired" | "exceeds limit" | "invalid csc" | "system failure" | "invalid request" | "expired" | "card not found" | "account not found" | "approved">;
12
12
  }
@@ -1,7 +1,7 @@
1
1
  import { isoly } from "isoly";
2
2
  import { isly } from "isly";
3
3
  import { Amount } from "../Amount";
4
- import { Rule } from "../Rule/Rule";
4
+ import type { Rule } from "../Rule";
5
5
  import { Expiry } from "./Expiry";
6
6
  import { Meta } from "./Meta";
7
7
  import { Preset } from "./Preset";
@@ -1,6 +1,6 @@
1
1
  import { isoly } from "isoly";
2
2
  import { isly } from "isly";
3
- import { type as ruleType } from "../Rule/Rule";
3
+ import { type as ruleType } from "../Rule/type";
4
4
  import { Expiry } from "./Expiry";
5
5
  import { Meta } from "./Meta";
6
6
  import { Preset } from "./Preset";
@@ -1 +1 @@
1
- {"version":3,"file":"Creatable.js","sourceRoot":"../","sources":["Card/Creatable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAQ,IAAI,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAgBjC,MAAM,KAAW,SAAS,CAezB;AAfD,WAAiB,SAAS;IACZ,cAAI,GAAG,IAAI,CAAC,MAAM,CAAY;QAC1C,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE;QACtB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,MAAM,EAAE,MAAM,CAAC,IAAI;QACnB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;YACpB,MAAM,EAAE,MAAM,CAAC,IAAI;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;SACrB,CAAC;QACF,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAClF,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;QAClC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;QAClD,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC7B,CAAC,CAAA;IACW,YAAE,GAAG,UAAA,IAAI,CAAC,EAAE,CAAA;AAC1B,CAAC,EAfgB,SAAS,KAAT,SAAS,QAezB"}
1
+ {"version":3,"file":"Creatable.js","sourceRoot":"../","sources":["Card/Creatable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAgBjC,MAAM,KAAW,SAAS,CAezB;AAfD,WAAiB,SAAS;IACZ,cAAI,GAAG,IAAI,CAAC,MAAM,CAAY;QAC1C,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE;QACtB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,MAAM,EAAE,MAAM,CAAC,IAAI;QACnB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;YACpB,MAAM,EAAE,MAAM,CAAC,IAAI;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;SACrB,CAAC;QACF,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAClF,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;QAClC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;QAClD,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC7B,CAAC,CAAA;IACW,YAAE,GAAG,UAAA,IAAI,CAAC,EAAE,CAAA;AAC1B,CAAC,EAfgB,SAAS,KAAT,SAAS,QAezB"}
@@ -2,7 +2,7 @@ import { isoly } from "isoly";
2
2
  import { isly } from "isly";
3
3
  import { Amount } from "../Amount";
4
4
  import { Realm } from "../Realm";
5
- import { Rule } from "../Rule/Rule";
5
+ import type { Rule } from "../Rule";
6
6
  import { Changeable as CardChangeable } from "./Changeable";
7
7
  import { Creatable as CardCreatable } from "./Creatable";
8
8
  import { Expiry as CardExpiry } from "./Expiry";
@@ -2,7 +2,7 @@ import { isoly } from "isoly";
2
2
  import { isly } from "isly";
3
3
  import { Realm } from "../Realm";
4
4
  import { Report } from "../Report";
5
- import { type as ruleType } from "../Rule/Rule";
5
+ import { type as ruleType } from "../Rule/type";
6
6
  import { Changeable as CardChangeable } from "./Changeable";
7
7
  import { Creatable as CardCreatable } from "./Creatable";
8
8
  import { Expiry as CardExpiry } from "./Expiry";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../","sources":["Card/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"../","sources":["Card/index.ts"],"names":[],"mappings":"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"}
@@ -61,7 +61,7 @@ export var Creatable;
61
61
  },
62
62
  available: {
63
63
  type: "subtract",
64
- amount: charge,
64
+ amount: Math.abs(charge),
65
65
  status: "pending",
66
66
  },
67
67
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"Creatable.js","sourceRoot":"../","sources":["Operation/Creatable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC,MAAM,KAAW,SAAS,CAyEzB;AAzED,WAAiB,SAAS;IACZ,eAAK,GAAG;QACpB,UAAU;QACV,kBAAkB;QAClB,UAAU;QACV,kBAAkB;QAClB,eAAe;QACf,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,cAAc;KACL,CAAA;IAEG,cAAI,GAAG,IAAI,CAAC,MAAM,CAAY;QAC1C,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACjE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1D,OAAO,EAAE,OAAO,CAAC,IAAI;QACrB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,UAAA,KAAK,CAAC;KACxB,CAAC,CAAA;IACW,YAAE,GAAG,UAAA,IAAI,CAAC,EAAE,CAAA;IACZ,cAAI,GAAG,UAAA,IAAI,CAAC,IAAI,CAAA;IAC7B,SAAgB,UAAU,CACzB,OAAe,EACf,UAAkB,EAClB,KAAwC,EACxC,MAAc;QAId,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QAC7D,OAAO;YACN,OAAO,EAAE,OAAO;YAChB,QAAQ;YACR,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACR,mBAAmB,EAAE;oBACpB,IAAI,EAAE,KAAK;oBACX,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC;oBAChE,MAAM,EAAE,SAAS;iBACjB;gBACD,CAAC,GAAG,UAAU,MAAM,CAAC,EAAE;oBACtB,IAAI,EAAE,UAAmB;oBACzB,MAAM,EAAE,YAAY;oBACpB,MAAM,EAAE,SAAkB;iBAC1B;gBACD,CAAC,GAAG,UAAU,MAAM,CAAC,EAAE;oBACtB,IAAI,EAAE,UAAmB;oBACzB,MAAM,EAAE,YAAY;oBACpB,MAAM,EAAE,SAAkB;iBAC1B;gBACD,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI;oBACjB,CAAC,GAAG,UAAU,SAAS,CAAC,EAAE;wBACzB,IAAI,EAAE,KAAc;wBACpB,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,SAAkB;qBAC1B;oBACD,SAAS,EAAE;wBACV,IAAI,EAAE,UAAmB;wBACzB,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,SAAkB;qBAC1B;iBACD,CAAC;aACF;SACD,CAAA;IACF,CAAC;IA7Ce,oBAAU,aA6CzB,CAAA;AACF,CAAC,EAzEgB,SAAS,KAAT,SAAS,QAyEzB"}
1
+ {"version":3,"file":"Creatable.js","sourceRoot":"../","sources":["Operation/Creatable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC,MAAM,KAAW,SAAS,CAyEzB;AAzED,WAAiB,SAAS;IACZ,eAAK,GAAG;QACpB,UAAU;QACV,kBAAkB;QAClB,UAAU;QACV,kBAAkB;QAClB,eAAe;QACf,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,cAAc;KACL,CAAA;IAEG,cAAI,GAAG,IAAI,CAAC,MAAM,CAAY;QAC1C,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACjE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1D,OAAO,EAAE,OAAO,CAAC,IAAI;QACrB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,UAAA,KAAK,CAAC;KACxB,CAAC,CAAA;IACW,YAAE,GAAG,UAAA,IAAI,CAAC,EAAE,CAAA;IACZ,cAAI,GAAG,UAAA,IAAI,CAAC,IAAI,CAAA;IAC7B,SAAgB,UAAU,CACzB,OAAe,EACf,UAAkB,EAClB,KAAwC,EACxC,MAAc;QAId,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QAC7D,OAAO;YACN,OAAO,EAAE,OAAO;YAChB,QAAQ;YACR,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACR,mBAAmB,EAAE;oBACpB,IAAI,EAAE,KAAK;oBACX,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC;oBAChE,MAAM,EAAE,SAAS;iBACjB;gBACD,CAAC,GAAG,UAAU,MAAM,CAAC,EAAE;oBACtB,IAAI,EAAE,UAAmB;oBACzB,MAAM,EAAE,YAAY;oBACpB,MAAM,EAAE,SAAkB;iBAC1B;gBACD,CAAC,GAAG,UAAU,MAAM,CAAC,EAAE;oBACtB,IAAI,EAAE,UAAmB;oBACzB,MAAM,EAAE,YAAY;oBACpB,MAAM,EAAE,SAAkB;iBAC1B;gBACD,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI;oBACjB,CAAC,GAAG,UAAU,SAAS,CAAC,EAAE;wBACzB,IAAI,EAAE,KAAc;wBACpB,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,SAAkB;qBAC1B;oBACD,SAAS,EAAE;wBACV,IAAI,EAAE,UAAmB;wBACzB,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;wBACxB,MAAM,EAAE,SAAkB;qBAC1B;iBACD,CAAC;aACF;SACD,CAAA;IACF,CAAC;IA7Ce,oBAAU,aA6CzB,CAAA;AACF,CAAC,EAzEgB,SAAS,KAAT,SAAS,QAyEzB"}
@@ -1,6 +1,6 @@
1
1
  import { isly } from "isly";
2
2
  import { Realm } from "../Realm";
3
- import { Rule } from "../Rule/Rule";
3
+ import { Rule } from "../Rule";
4
4
  import { Changeable as OrganizationChangeable } from "./Changeable";
5
5
  import { Contact as OrganizationContact } from "./Contact";
6
6
  export interface Organization {
@@ -12,8 +12,8 @@ export interface Organization {
12
12
  groups?: string[];
13
13
  }
14
14
  export declare namespace Organization {
15
- const type: isly.object.ExtendableType<Organization>;
16
- const is: isly.Type.IsFunction<Organization>;
15
+ const type: isly.object.ExtendableType<Rule.State.Organization>;
16
+ const is: isly.Type.IsFunction<Rule.State.Organization>;
17
17
  const flaw: isly.Type.FlawFunction;
18
18
  type Changeable = OrganizationChangeable;
19
19
  const Changeable: typeof OrganizationChangeable;
@@ -1,6 +1,6 @@
1
1
  import { isly } from "isly";
2
2
  import { Realm } from "../Realm";
3
- import { type as ruleType } from "../Rule/Rule";
3
+ import { type as ruleType } from "../Rule/type";
4
4
  import { Changeable as OrganizationChangeable } from "./Changeable";
5
5
  import { Contact as OrganizationContact } from "./Contact";
6
6
  export var Organization;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../","sources":["Organization/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAChC,OAAO,EAAQ,IAAI,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,UAAU,IAAI,sBAAsB,EAAE,MAAM,cAAc,CAAA;AACnE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAU1D,MAAM,KAAW,YAAY,CAmB5B;AAnBD,WAAiB,YAAY;IACf,iBAAI,GAAG,IAAI,CAAC,MAAM,CAAe;QAC7C,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;QACnB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAClD,KAAK,EAAE,KAAK,CAAC,IAAI;QACjB,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE;QACvB,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE;QAC5C,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;KACxC,CAAC,CAAA;IACW,eAAE,GAAG,aAAA,IAAI,CAAC,EAAE,CAAA;IACZ,iBAAI,GAAG,aAAA,IAAI,CAAC,IAAI,CAAA;IAEhB,uBAAU,GAAG,sBAAsB,CAAA;IAEnC,oBAAO,GAAG,mBAAmB,CAAA;AAK3C,CAAC,EAnBgB,YAAY,KAAZ,YAAY,QAmB5B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"../","sources":["Organization/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAEhC,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,UAAU,IAAI,sBAAsB,EAAE,MAAM,cAAc,CAAA;AACnE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAU1D,MAAM,KAAW,YAAY,CAmB5B;AAnBD,WAAiB,YAAY;IACf,iBAAI,GAAG,IAAI,CAAC,MAAM,CAAe;QAC7C,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;QACnB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAClD,KAAK,EAAE,KAAK,CAAC,IAAI;QACjB,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE;QACvB,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE;QAC5C,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;KACxC,CAAC,CAAA;IACW,eAAE,GAAG,aAAA,IAAI,CAAC,EAAE,CAAA;IACZ,iBAAI,GAAG,aAAA,IAAI,CAAC,IAAI,CAAA;IAEhB,uBAAU,GAAG,sBAAsB,CAAA;IAEnC,oBAAO,GAAG,mBAAmB,CAAA;AAK3C,CAAC,EAnBgB,YAAY,KAAZ,YAAY,QAmB5B"}
@@ -3,6 +3,6 @@ import { Address as RailAddress } from "./Address";
3
3
  export type Rail = typeof Rail.rails[number];
4
4
  export declare namespace Rail {
5
5
  const rails: readonly ["internal", "paxgiro", "paxgiro-credit", "mastercard", "diners", "fasterpayments", "chaps", "bacs", "transfer", "credit"];
6
- const type: isly.Type<"paxgiro" | "mastercard" | "diners" | "internal" | "paxgiro-credit" | "fasterpayments" | "chaps" | "bacs" | "transfer" | "credit">;
6
+ const type: isly.Type<"paxgiro" | "internal" | "mastercard" | "diners" | "paxgiro-credit" | "fasterpayments" | "chaps" | "bacs" | "transfer" | "credit">;
7
7
  export import Address = RailAddress;
8
8
  }
@@ -14,6 +14,7 @@ export declare namespace Base {
14
14
  namespace Kind {
15
15
  const values: readonly ["authorization", "outbound", "inbound", "capture", "refund"];
16
16
  const type: isly.Type<"authorization" | "outbound" | "inbound" | "capture" | "refund">;
17
+ function is(kind: Kind, rule: Base, groups: string[] | undefined): boolean;
17
18
  }
18
19
  type Category = typeof Category.values[number];
19
20
  namespace Category {
@@ -5,6 +5,12 @@ export var Base;
5
5
  (function (Kind) {
6
6
  Kind.values = ["authorization", "outbound", "inbound", "capture", "refund"];
7
7
  Kind.type = isly.string(Kind.values);
8
+ function is(kind, rule, groups) {
9
+ return (kind == rule.type &&
10
+ (!rule.groups ||
11
+ rule.groups.some(ruleGroup => groups?.some(organizationGroup => organizationGroup == ruleGroup))));
12
+ }
13
+ Kind.is = is;
8
14
  })(Kind = Base.Kind || (Base.Kind = {}));
9
15
  let Category;
10
16
  (function (Category) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Base.js","sourceRoot":"../","sources":["Rule/Base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAY3B,MAAM,KAAW,IAAI,CA4BpB;AA5BD,WAAiB,IAAI;IAEpB,IAAiB,IAAI,CAUpB;IAVD,WAAiB,IAAI;QACP,WAAM,GAAG,CAAC,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAU,CAAA;QAC/E,SAAI,GAAG,IAAI,CAAC,MAAM,CAAO,KAAA,MAAM,CAAC,CAAA;QAC7C,SAAgB,EAAE,CAAC,IAAU,EAAE,IAAU,EAAE,MAA4B;YACtE,OAAO,CACN,IAAI,IAAI,IAAI,CAAC,IAAI;gBACjB,CAAC,CAAC,IAAI,CAAC,MAAM;oBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,iBAAiB,IAAI,SAAS,CAAC,CAAC,CAAC,CAClG,CAAA;QACF,CAAC;QANe,OAAE,KAMjB,CAAA;IACF,CAAC,EAVgB,IAAI,GAAJ,SAAI,KAAJ,SAAI,QAUpB;IAED,IAAiB,QAAQ,CAGxB;IAHD,WAAiB,QAAQ;QACX,eAAM,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAU,CAAA;QACrD,aAAI,GAAG,IAAI,CAAC,MAAM,CAAW,SAAA,MAAM,CAAC,CAAA;IAClD,CAAC,EAHgB,QAAQ,GAAR,aAAQ,KAAR,aAAQ,QAGxB;IACY,SAAI,GAAG,IAAI,CAAC,MAAM,CAAO;QACrC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;QACnC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;QACnB,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE;QAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,QAAQ,CAAC,IAAI;QACvB,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE;QACxB,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;QAC5B,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;KACxC,CAAC,CAAA;AACH,CAAC,EA5BgB,IAAI,KAAJ,IAAI,QA4BpB"}
@@ -0,0 +1,40 @@
1
+ import { isoly } from "isoly";
2
+ import { selectively } from "selectively";
3
+ import { isly } from "isly";
4
+ import { Amount } from "../Amount";
5
+ import { Exchange } from "../Exchange";
6
+ import { Realm } from "../Realm";
7
+ import { Base } from "./Base";
8
+ import type { State } from "./State";
9
+ export interface Charge extends Charge.Api {
10
+ charge: {
11
+ percentage?: number;
12
+ fixed?: Amount;
13
+ };
14
+ }
15
+ export declare namespace Charge {
16
+ type Action = typeof Action.value;
17
+ namespace Action {
18
+ const value = "charge";
19
+ }
20
+ interface Api extends Base {
21
+ action: Charge.Action;
22
+ charge: {
23
+ percentage?: number;
24
+ fixed?: number | Amount;
25
+ };
26
+ }
27
+ namespace Api {
28
+ const type: isly.object.ExtendableType<Api>;
29
+ }
30
+ function fromApi(rule: Api, realm: Realm): Charge;
31
+ function fromApi(rule: Api, currency: isoly.Currency): Charge;
32
+ function evaluate(rules: Charge[], state: State, macros?: Record<string, selectively.Definition>, table?: Exchange.Rates): {
33
+ outcomes: Charge[];
34
+ charge: Required<State["transaction"]["original"]>["charge"];
35
+ };
36
+ function apply(charge: {
37
+ current: number;
38
+ total: number;
39
+ }, state: State): number;
40
+ }
@@ -0,0 +1,68 @@
1
+ import { isoly } from "isoly";
2
+ import { isly } from "isly";
3
+ import { Amount } from "../Amount";
4
+ import { Exchange } from "../Exchange";
5
+ import { Realm } from "../Realm";
6
+ import { Base } from "./Base";
7
+ import { control } from "./control";
8
+ export var Charge;
9
+ (function (Charge) {
10
+ let Action;
11
+ (function (Action) {
12
+ Action.value = "charge";
13
+ })(Action = Charge.Action || (Charge.Action = {}));
14
+ let Api;
15
+ (function (Api) {
16
+ Api.type = Base.type.extend({
17
+ action: isly.string(Action.value),
18
+ charge: isly.object({
19
+ percentage: isly.number().optional(),
20
+ fixed: isly.union(Amount.type, isly.number()).optional(),
21
+ }),
22
+ });
23
+ })(Api = Charge.Api || (Charge.Api = {}));
24
+ function fromApi(rule, currency) {
25
+ return {
26
+ ...rule,
27
+ charge: {
28
+ ...rule.charge,
29
+ fixed: typeof rule.charge.fixed == "number"
30
+ ? [Realm.is(currency) ? Realm.currency[currency] : currency, rule.charge.fixed]
31
+ : rule.charge.fixed,
32
+ },
33
+ };
34
+ }
35
+ Charge.fromApi = fromApi;
36
+ function evaluate(rules, state, macros, table = {}) {
37
+ const result = {
38
+ outcomes: [],
39
+ charge: { current: 0, total: state.transaction.original.charge?.total ?? 0 },
40
+ };
41
+ if (state.transaction.stage == "finalize" && ["card", "external"].some(type => type == state.transaction.type))
42
+ for (const rule of rules) {
43
+ if (control(rule, state, macros)) {
44
+ if (rule.charge.percentage)
45
+ result.charge.current = isoly.Currency.add(state.transaction.original.currency, result.charge.current, isoly.Currency.multiply(state.transaction.original.currency, state.transaction.original.amount, rule.charge.percentage / 100));
46
+ if (rule.charge.fixed) {
47
+ const charge = state.transaction.original.currency === rule.charge.fixed[0]
48
+ ? rule.charge.fixed[1]
49
+ : Exchange.convert(rule.charge.fixed[1], rule.charge.fixed[0], state.transaction.original.currency, table) ?? 0;
50
+ result.charge.current = isoly.Currency.add(state.transaction.original.currency, result.charge.current, charge);
51
+ }
52
+ result.outcomes.push(rule);
53
+ }
54
+ }
55
+ result.charge.total = isoly.Currency.add(state.transaction.original.currency, result.charge.current, result.charge.total);
56
+ return result;
57
+ }
58
+ Charge.evaluate = evaluate;
59
+ function apply(charge, state) {
60
+ return state.transaction.kind == "authorization" ||
61
+ state.transaction.kind == "outbound" ||
62
+ state.transaction.kind == "capture"
63
+ ? isoly.Currency.add(state.transaction.original.currency, state.transaction.original.total, charge.current)
64
+ : isoly.Currency.subtract(state.transaction.original.currency, state.transaction.original.total, charge.current);
65
+ }
66
+ Charge.apply = apply;
67
+ })(Charge || (Charge = {}));
68
+ //# sourceMappingURL=Charge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Charge.js","sourceRoot":"../","sources":["Rule/Charge.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,8 @@
1
+ import { selectively } from "selectively";
1
2
  import { isly } from "isly";
3
+ import type { Note } from "../Transaction/Note";
2
4
  import { Base } from "./Base";
5
+ import type { State } from "./State";
3
6
  export interface Other extends Base {
4
7
  action: Other.Action;
5
8
  }
@@ -10,4 +13,9 @@ export declare namespace Other {
10
13
  const type: isly.Type<"review" | "reject" | "flag">;
11
14
  }
12
15
  const type: isly.object.ExtendableType<Other>;
16
+ function evaluate(rules: Other[], state: State, macros?: Record<string, selectively.Definition>): {
17
+ outcomes: Record<Other.Action, Other[]>;
18
+ notes: Note[];
19
+ flags: Set<string>;
20
+ };
13
21
  }
@@ -0,0 +1,38 @@
1
+ import { isoly } from "isoly";
2
+ import { isly } from "isly";
3
+ import { Base } from "./Base";
4
+ import { control } from "./control";
5
+ export var Other;
6
+ (function (Other) {
7
+ let Action;
8
+ (function (Action) {
9
+ Action.values = ["review", "reject", "flag"];
10
+ Action.type = isly.string(Action.values);
11
+ })(Action = Other.Action || (Other.Action = {}));
12
+ Other.type = Base.type.extend({ action: Action.type });
13
+ function evaluate(rules, state, macros) {
14
+ const now = isoly.DateTime.now();
15
+ const result = {
16
+ outcomes: {
17
+ review: [],
18
+ reject: [],
19
+ flag: [],
20
+ },
21
+ notes: [],
22
+ flags: new Set(),
23
+ };
24
+ if (state.transaction.stage == "initiate" &&
25
+ ["card", "external", "internal"].some(type => type == state.transaction.type))
26
+ for (const rule of rules) {
27
+ if (control(rule, state, macros)) {
28
+ result.outcomes[rule.action].push(rule);
29
+ result.notes.push({ author: "automatic", created: now, text: rule.name, rule });
30
+ rule.flags.forEach(f => result.flags.add(f));
31
+ rule.action == "review" && result.flags.add("review");
32
+ }
33
+ }
34
+ return result;
35
+ }
36
+ Other.evaluate = evaluate;
37
+ })(Other || (Other = {}));
38
+ //# sourceMappingURL=Other.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Other.js","sourceRoot":"../","sources":["Rule/Other.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAE7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,MAAM,KAAW,KAAK,CAoCrB;AApCD,WAAiB,KAAK;IAErB,IAAiB,MAAM,CAGtB;IAHD,WAAiB,MAAM;QACT,aAAM,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAA;QAC9C,WAAI,GAAG,IAAI,CAAC,MAAM,CAAS,OAAA,MAAM,CAAC,CAAA;IAChD,CAAC,EAHgB,MAAM,GAAN,YAAM,KAAN,YAAM,QAGtB;IACY,UAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IACpE,SAAgB,QAAQ,CACvB,KAAc,EACd,KAAY,EACZ,MAA+C;QAE/C,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAA;QAChC,MAAM,MAAM,GAAgC;YAC3C,QAAQ,EAAE;gBACT,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,EAAE;gBACV,IAAI,EAAE,EAAE;aACR;YACD,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,IAAI,GAAG,EAAU;SACxB,CAAA;QACD,IACC,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI,UAAU;YACrC,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;YAE7E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC1B,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;oBAClC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACvC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;oBAC/E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;oBAC5C,IAAI,CAAC,MAAM,IAAI,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;gBACtD,CAAC;YACF,CAAC;QACF,OAAO,MAAM,CAAA;IACd,CAAC;IA5Be,cAAQ,WA4BvB,CAAA;AACF,CAAC,EApCgB,KAAK,KAAL,KAAK,QAoCrB"}
@@ -0,0 +1,38 @@
1
+ import { isoly } from "isoly";
2
+ import { selectively } from "selectively";
3
+ import { isly } from "isly";
4
+ import { Amount } from "../Amount";
5
+ import { Exchange } from "../Exchange";
6
+ import { Realm } from "../Realm";
7
+ import { Base } from "./Base";
8
+ import type { State } from "./State";
9
+ export interface Reserve extends Reserve.Api {
10
+ reserve: {
11
+ percentage?: number;
12
+ fixed?: Amount;
13
+ };
14
+ }
15
+ export declare namespace Reserve {
16
+ type Action = typeof Action.value;
17
+ namespace Action {
18
+ const value = "reserve";
19
+ }
20
+ const type: isly.object.ExtendableType<Reserve>;
21
+ interface Api extends Base {
22
+ action: Reserve.Action;
23
+ reserve: {
24
+ percentage?: number;
25
+ fixed?: number | Amount;
26
+ };
27
+ }
28
+ namespace Api {
29
+ const type: isly.object.ExtendableType<Api>;
30
+ }
31
+ function fromApi(rule: Api, realm: Realm): Reserve;
32
+ function fromApi(rule: Api, currency: isoly.Currency): Reserve;
33
+ function evaluate(rules: Reserve[], state: State, macros?: Record<string, selectively.Definition>, table?: Exchange.Rates): {
34
+ outcomes: Reserve[];
35
+ reserve: number;
36
+ };
37
+ function apply(reserve: number, state: State): number;
38
+ }
@@ -0,0 +1,76 @@
1
+ import { isoly } from "isoly";
2
+ import { isly } from "isly";
3
+ import { Amount } from "../Amount";
4
+ import { Exchange } from "../Exchange";
5
+ import { Realm } from "../Realm";
6
+ import { Base } from "./Base";
7
+ import { control } from "./control";
8
+ export var Reserve;
9
+ (function (Reserve) {
10
+ let Action;
11
+ (function (Action) {
12
+ Action.value = "reserve";
13
+ })(Action = Reserve.Action || (Reserve.Action = {}));
14
+ Reserve.type = Base.type.extend({
15
+ action: isly.string(Action.value),
16
+ reserve: isly.object({
17
+ percentage: isly.number(),
18
+ fixed: Amount.type.optional(),
19
+ }),
20
+ });
21
+ let Api;
22
+ (function (Api) {
23
+ Api.type = Base.type.extend({
24
+ action: isly.string(Action.value),
25
+ reserve: isly.object({
26
+ percentage: isly.number().optional(),
27
+ fixed: isly.union(Amount.type, isly.number()).optional(),
28
+ }),
29
+ });
30
+ })(Api = Reserve.Api || (Reserve.Api = {}));
31
+ function fromApi(rule, currency) {
32
+ return {
33
+ ...rule,
34
+ reserve: {
35
+ ...rule.reserve,
36
+ fixed: typeof rule.reserve.fixed == "number"
37
+ ? [Realm.is(currency) ? Realm.currency[currency] : currency, rule.reserve.fixed]
38
+ : rule.reserve.fixed,
39
+ },
40
+ };
41
+ }
42
+ Reserve.fromApi = fromApi;
43
+ function evaluate(rules, state, macros, table = {}) {
44
+ const result = {
45
+ outcomes: [],
46
+ reserve: 0,
47
+ };
48
+ if (state.transaction.stage == "initiate" &&
49
+ ["authorization", "outbound"].some(kind => kind == state.transaction.kind) &&
50
+ ["card", "external"].some(type => type == state.transaction.type))
51
+ for (const rule of rules) {
52
+ if (control(rule, state, macros)) {
53
+ if (rule.reserve.percentage)
54
+ result.reserve = isoly.Currency.add(state.transaction.original.currency, result.reserve, isoly.Currency.multiply(state.transaction.original.currency, state.transaction.original.amount, rule.reserve.percentage / 100));
55
+ if (rule.reserve.fixed) {
56
+ const reserve = state.transaction.original.currency === rule.reserve.fixed[0]
57
+ ? rule.reserve.fixed[1]
58
+ : Exchange.convert(rule.reserve.fixed[1], rule.reserve.fixed[0], state.transaction.original.currency, table) ?? 0;
59
+ result.reserve = isoly.Currency.add(state.transaction.original.currency, result.reserve, reserve);
60
+ }
61
+ result.outcomes.push(rule);
62
+ }
63
+ }
64
+ return result;
65
+ }
66
+ Reserve.evaluate = evaluate;
67
+ function apply(reserve, state) {
68
+ return state.transaction.kind == "authorization" ||
69
+ state.transaction.kind == "outbound" ||
70
+ state.transaction.kind == "capture"
71
+ ? isoly.Currency.add(state.transaction.original.currency, state.transaction.original.total, reserve)
72
+ : isoly.Currency.subtract(state.transaction.original.currency, state.transaction.original.total, reserve);
73
+ }
74
+ Reserve.apply = apply;
75
+ })(Reserve || (Reserve = {}));
76
+ //# sourceMappingURL=Reserve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Reserve.js","sourceRoot":"../","sources":["Rule/Reserve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAE7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC,MAAM,KAAW,OAAO,CA8FvB;AA9FD,WAAiB,OAAO;IAEvB,IAAiB,MAAM,CAEtB;IAFD,WAAiB,MAAM;QACT,YAAK,GAAG,SAAS,CAAA;IAC/B,CAAC,EAFgB,MAAM,GAAN,cAAM,KAAN,cAAM,QAEtB;IACY,YAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAU;QAC7C,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QACjC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;YACpB,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE;YACzB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;SAC7B,CAAC;KACF,CAAC,CAAA;IASF,IAAiB,GAAG,CAQnB;IARD,WAAiB,GAAG;QACN,QAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAM;YACzC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YACjC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;gBACpB,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBACpC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAkB,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;aACzE,CAAC;SACF,CAAC,CAAA;IACH,CAAC,EARgB,GAAG,GAAH,WAAG,KAAH,WAAG,QAQnB;IAGD,SAAgB,OAAO,CAAC,IAAS,EAAE,QAAgC;QAClE,OAAO;YACN,GAAG,IAAI;YACP,OAAO,EAAE;gBACR,GAAG,IAAI,CAAC,OAAO;gBACf,KAAK,EACJ,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,QAAQ;oBACpC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;oBAChF,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;aACtB;SACD,CAAA;IACF,CAAC;IAXe,eAAO,UAWtB,CAAA;IACD,SAAgB,QAAQ,CACvB,KAAgB,EAChB,KAAY,EACZ,MAA+C,EAC/C,QAAwB,EAAE;QAE1B,MAAM,MAAM,GAAgC;YAC3C,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,CAAC;SACV,CAAA;QACD,IACC,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI,UAAU;YACrC,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;YAC1E,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;YAEjE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC1B,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;oBAClC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU;wBAC1B,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAClC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EACnC,MAAM,CAAC,OAAO,EACd,KAAK,CAAC,QAAQ,CAAC,QAAQ,CACtB,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EACnC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,EACjC,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,GAAG,CAC7B,CACD,CAAA;oBACF,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;wBACxB,MAAM,OAAO,GACZ,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;4BAC5D,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;4BACvB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAChB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EACrB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EACrB,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EACnC,KAAK,CACJ,IAAI,CAAC,CAAA;wBACV,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;oBAClG,CAAC;oBACD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC3B,CAAC;YACF,CAAC;QACF,OAAO,MAAM,CAAA;IACd,CAAC;IA3Ce,gBAAQ,WA2CvB,CAAA;IACD,SAAgB,KAAK,CAAC,OAAe,EAAE,KAAY;QAClD,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,eAAe;YAC/C,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,UAAU;YACpC,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,SAAS;YACnC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;YACpG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAC3G,CAAC;IANe,aAAK,QAMpB,CAAA;AACF,CAAC,EA9FgB,OAAO,KAAP,OAAO,QA8FvB"}
@@ -1,5 +1,7 @@
1
+ import { selectively } from "selectively";
1
2
  import { isly } from "isly";
2
3
  import { Base } from "./Base";
4
+ import type { State } from "./State";
3
5
  export interface Score extends Base {
4
6
  action: Score.Action;
5
7
  category: "fincrime";
@@ -13,4 +15,8 @@ export declare namespace Score {
13
15
  type Risk = number;
14
16
  const Risk: isly.Type<number>;
15
17
  const type: isly.object.ExtendableType<Score>;
18
+ function evaluate(rules: Score[], state: State, macros?: Record<string, selectively.Definition>): {
19
+ outcomes: Score[];
20
+ risk?: number | undefined;
21
+ };
16
22
  }
@@ -0,0 +1,30 @@
1
+ import { isly } from "isly";
2
+ import { Base } from "./Base";
3
+ import { control } from "./control";
4
+ export var Score;
5
+ (function (Score) {
6
+ let Action;
7
+ (function (Action) {
8
+ Action.value = "score";
9
+ })(Action = Score.Action || (Score.Action = {}));
10
+ Score.Risk = isly.number(["positive", "integer"]);
11
+ Score.type = Base.type.extend({
12
+ action: isly.string(Action.value),
13
+ category: isly.string("fincrime"),
14
+ risk: Score.Risk,
15
+ });
16
+ function evaluate(rules, state, macros) {
17
+ const result = { outcomes: [] };
18
+ if (state.transaction.stage == "initiate" &&
19
+ ["card", "external", "internal"].some(type => type == state.transaction.type))
20
+ for (const rule of rules) {
21
+ if (control(rule, state, macros)) {
22
+ result.risk = (result.risk ?? 100) * (rule.risk / 100);
23
+ result.outcomes.push(rule);
24
+ }
25
+ }
26
+ return result;
27
+ }
28
+ Score.evaluate = evaluate;
29
+ })(Score || (Score = {}));
30
+ //# sourceMappingURL=Score.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Score.js","sourceRoot":"../","sources":["Rule/Score.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAQnC,MAAM,KAAW,KAAK,CAiCrB;AAjCD,WAAiB,KAAK;IAErB,IAAiB,MAAM,CAEtB;IAFD,WAAiB,MAAM;QACT,YAAK,GAAG,OAAO,CAAA;IAC7B,CAAC,EAFgB,MAAM,GAAN,YAAM,KAAN,YAAM,QAEtB;IAEY,UAAI,GAAG,IAAI,CAAC,MAAM,CAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAA;IACjD,UAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAQ;QAC3C,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QACjC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QACjC,IAAI,EAAE,MAAA,IAAI;KACV,CAAC,CAAA;IACF,SAAgB,QAAQ,CACvB,KAAc,EACd,KAAY,EACZ,MAA+C;QAK/C,MAAM,MAAM,GAAgC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;QAC5D,IACC,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI,UAAU;YACrC,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;YAE7E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC1B,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;oBAClC,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,CAAA;oBACtD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC3B,CAAC;YACF,CAAC;QACF,OAAO,MAAM,CAAA;IACd,CAAC;IApBe,cAAQ,WAoBvB,CAAA;AACF,CAAC,EAjCgB,KAAK,KAAL,KAAK,QAiCrB"}
@@ -1,21 +1,26 @@
1
1
  import { isoly } from "isoly";
2
2
  import type { Address } from "../../Rail/Address";
3
3
  import { Transaction as ModelTransaction } from "../../Transaction";
4
- import { Rule } from "../Rule";
4
+ import type { Rule } from "../index";
5
5
  export interface Transaction extends ModelTransaction.Creatable {
6
6
  kind: Rule.Base.Kind;
7
+ stage: "finalize" | "initiate";
7
8
  amount: number;
8
9
  type: ModelTransaction.Types;
9
10
  risk?: number;
10
11
  original: {
11
12
  currency: isoly.Currency;
13
+ total: number;
12
14
  amount: number;
13
- charge?: number;
14
- total?: number;
15
+ charge?: {
16
+ current: number;
17
+ total: number;
18
+ };
19
+ reserve?: number;
15
20
  };
16
21
  }
17
22
  export declare namespace Transaction {
18
23
  function from(accountName: string, transaction: ModelTransaction.Creatable & {
19
24
  counterpart: Address;
20
- }, kind: Rule.Base.Kind): Transaction;
25
+ }, kind: Rule.Base.Kind, stage: "finalize" | "initiate"): Transaction;
21
26
  }
@@ -1,13 +1,18 @@
1
1
  import { Transaction as ModelTransaction } from "../../Transaction";
2
2
  export var Transaction;
3
3
  (function (Transaction) {
4
- function from(accountName, transaction, kind) {
4
+ function from(accountName, transaction, kind, stage) {
5
5
  return {
6
6
  ...transaction,
7
+ stage,
7
8
  kind,
8
9
  amount: Math.abs(transaction.amount),
9
10
  type: ModelTransaction.getType(transaction.counterpart, accountName),
10
- original: { currency: transaction.currency, amount: Math.abs(transaction.amount) },
11
+ original: {
12
+ currency: transaction.currency,
13
+ amount: Math.abs(transaction.amount),
14
+ total: Math.abs(transaction.amount),
15
+ },
11
16
  };
12
17
  }
13
18
  Transaction.from = from;