@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.
- package/Card/Creatable.ts +2 -1
- package/Card/index.ts +2 -1
- package/Operation/Creatable.ts +1 -1
- package/Organization/index.ts +2 -1
- package/Rule/{Rule/Base.ts → Base.ts} +7 -0
- package/Rule/Charge.ts +108 -0
- package/Rule/Other.ts +48 -0
- package/Rule/Reserve.ts +111 -0
- package/Rule/Score.ts +45 -0
- package/Rule/State/Transaction.ts +17 -4
- package/Rule/State/index.ts +3 -2
- package/Rule/control.ts +8 -0
- package/Rule/index.ts +76 -97
- package/Rule/type.ts +13 -0
- package/Settlement/Batch.ts +1 -2
- package/Transaction/index.ts +3 -3
- package/dist/Authorization/Status.d.ts +1 -1
- package/dist/Card/Creatable.d.ts +1 -1
- package/dist/Card/Creatable.js +1 -1
- package/dist/Card/Creatable.js.map +1 -1
- package/dist/Card/index.d.ts +1 -1
- package/dist/Card/index.js +1 -1
- package/dist/Card/index.js.map +1 -1
- package/dist/Operation/Creatable.js +1 -1
- package/dist/Operation/Creatable.js.map +1 -1
- package/dist/Organization/index.d.ts +3 -3
- package/dist/Organization/index.js +1 -1
- package/dist/Organization/index.js.map +1 -1
- package/dist/Rail/index.d.ts +1 -1
- package/dist/Rule/{Rule/Base.d.ts → Base.d.ts} +1 -0
- package/dist/Rule/{Rule/Base.js → Base.js} +6 -0
- package/dist/Rule/Base.js.map +1 -0
- package/dist/Rule/Charge.d.ts +40 -0
- package/dist/Rule/Charge.js +68 -0
- package/dist/Rule/Charge.js.map +1 -0
- package/dist/Rule/{Rule/Other.d.ts → Other.d.ts} +8 -0
- package/dist/Rule/Other.js +38 -0
- package/dist/Rule/Other.js.map +1 -0
- package/dist/Rule/Reserve.d.ts +38 -0
- package/dist/Rule/Reserve.js +76 -0
- package/dist/Rule/Reserve.js.map +1 -0
- package/dist/Rule/{Rule/Score.d.ts → Score.d.ts} +6 -0
- package/dist/Rule/Score.js +30 -0
- package/dist/Rule/Score.js.map +1 -0
- package/dist/Rule/State/Transaction.d.ts +9 -4
- package/dist/Rule/State/Transaction.js +7 -2
- package/dist/Rule/State/Transaction.js.map +1 -1
- package/dist/Rule/State/index.d.ts +3 -3
- package/dist/Rule/State/index.js +2 -2
- package/dist/Rule/State/index.js.map +1 -1
- package/dist/Rule/control.d.ts +4 -0
- package/dist/Rule/control.js +6 -0
- package/dist/Rule/control.js.map +1 -0
- package/dist/Rule/index.d.ts +29 -13
- package/dist/Rule/index.js +68 -70
- package/dist/Rule/index.js.map +1 -1
- package/dist/Rule/type.d.ts +3 -0
- package/dist/Rule/type.js +7 -0
- package/dist/Rule/type.js.map +1 -0
- package/dist/Settlement/Batch.d.ts +0 -1
- package/dist/Settlement/Batch.js +1 -2
- package/dist/Settlement/Batch.js.map +1 -1
- package/dist/Transaction/Status.d.ts +1 -1
- package/dist/Transaction/index.js +3 -3
- package/dist/Transaction/index.js.map +1 -1
- package/package.json +1 -1
- package/Rule/Rule/Charge.ts +0 -48
- package/Rule/Rule/Other.ts +0 -14
- package/Rule/Rule/Score.ts +0 -21
- package/Rule/Rule/index.ts +0 -37
- package/dist/Rule/Rule/Base.js.map +0 -1
- package/dist/Rule/Rule/Charge.d.ts +0 -29
- package/dist/Rule/Rule/Charge.js +0 -34
- package/dist/Rule/Rule/Charge.js.map +0 -1
- package/dist/Rule/Rule/Other.js +0 -12
- package/dist/Rule/Rule/Other.js.map +0 -1
- package/dist/Rule/Rule/Score.js +0 -16
- package/dist/Rule/Rule/Score.js.map +0 -1
- package/dist/Rule/Rule/index.d.ts +0 -24
- package/dist/Rule/Rule/index.js +0 -27
- package/dist/Rule/Rule/index.js.map +0 -1
package/Settlement/Batch.ts
CHANGED
|
@@ -2,7 +2,6 @@ import { isly } from "isly"
|
|
|
2
2
|
|
|
3
3
|
export type Batch = string
|
|
4
4
|
export namespace Batch {
|
|
5
|
-
export const
|
|
6
|
-
export const type = isly.string<Batch>(regexp)
|
|
5
|
+
export const type = isly.string<Batch>()
|
|
7
6
|
export const is = type.is
|
|
8
7
|
}
|
package/Transaction/index.ts
CHANGED
|
@@ -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" | "
|
|
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
|
}
|
package/dist/Card/Creatable.d.ts
CHANGED
|
@@ -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
|
|
4
|
+
import type { Rule } from "../Rule";
|
|
5
5
|
import { Expiry } from "./Expiry";
|
|
6
6
|
import { Meta } from "./Meta";
|
|
7
7
|
import { Preset } from "./Preset";
|
package/dist/Card/Creatable.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isoly } from "isoly";
|
|
2
2
|
import { isly } from "isly";
|
|
3
|
-
import { type as ruleType } from "../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;
|
|
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"}
|
package/dist/Card/index.d.ts
CHANGED
|
@@ -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
|
|
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";
|
package/dist/Card/index.js
CHANGED
|
@@ -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/
|
|
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";
|
package/dist/Card/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Card/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Card/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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
|
|
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/
|
|
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;
|
|
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"}
|
package/dist/Rail/index.d.ts
CHANGED
|
@@ -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" | "
|
|
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":"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"}
|
|
@@ -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 "../
|
|
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?:
|
|
14
|
-
|
|
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: {
|
|
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;
|