@pax2pay/model-banking 0.1.282 → 0.1.284
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/Rule/Rule/Base.ts +6 -2
- package/Rule/Rule/Score.ts +6 -1
- package/Rule/index.ts +9 -2
- package/dist/Key/Roles.d.ts +2 -2
- package/dist/Rule/Rule/Base.d.ts +4 -1
- package/dist/Rule/Rule/Base.js +3 -1
- package/dist/Rule/Rule/Base.js.map +1 -1
- package/dist/Rule/Rule/Score.d.ts +1 -0
- package/dist/Rule/Rule/Score.js +5 -1
- package/dist/Rule/Rule/Score.js.map +1 -1
- package/dist/Rule/index.d.ts +6 -3
- package/dist/Rule/index.js +9 -0
- package/dist/Rule/index.js.map +1 -1
- package/package.json +1 -1
package/Rule/Rule/Base.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { isly } from "isly"
|
|
2
2
|
|
|
3
3
|
export interface Base {
|
|
4
|
-
code
|
|
4
|
+
code: string
|
|
5
5
|
name: string
|
|
6
6
|
description: string
|
|
7
7
|
type: Base.Kind
|
|
8
|
+
category: Base.Category
|
|
8
9
|
condition: string
|
|
9
10
|
flags: string[]
|
|
10
11
|
groups?: string[]
|
|
@@ -12,11 +13,14 @@ export interface Base {
|
|
|
12
13
|
export namespace Base {
|
|
13
14
|
export const kinds = ["authorization", "outbound", "inbound"] as const
|
|
14
15
|
export type Kind = typeof kinds[number]
|
|
16
|
+
export const categories = ["customer", "product", "fincrime"] as const
|
|
17
|
+
export type Category = typeof categories[number]
|
|
15
18
|
export const type = isly.object<Base>({
|
|
16
|
-
code: isly.string(new RegExp(/^[a-z0-9\-_]+$/))
|
|
19
|
+
code: isly.string(new RegExp(/^[a-z0-9\-_]+$/)),
|
|
17
20
|
name: isly.string(),
|
|
18
21
|
description: isly.string(),
|
|
19
22
|
type: isly.string(kinds),
|
|
23
|
+
category: isly.string(categories),
|
|
20
24
|
condition: isly.string(),
|
|
21
25
|
flags: isly.string().array(),
|
|
22
26
|
groups: isly.string().array().optional(),
|
package/Rule/Rule/Score.ts
CHANGED
|
@@ -3,10 +3,15 @@ import { Base } from "./Base"
|
|
|
3
3
|
|
|
4
4
|
export interface Score extends Base {
|
|
5
5
|
action: "score"
|
|
6
|
+
category: "fincrime"
|
|
6
7
|
risk: Score.Risk
|
|
7
8
|
}
|
|
8
9
|
export namespace Score {
|
|
9
10
|
export type Risk = number
|
|
10
11
|
export const Risk = isly.number<Risk>(["positive", "integer"])
|
|
11
|
-
export const type = Base.type.extend<Score>({
|
|
12
|
+
export const type = Base.type.extend<Score>({
|
|
13
|
+
action: isly.string("score"),
|
|
14
|
+
category: isly.string("fincrime"),
|
|
15
|
+
risk: Risk,
|
|
16
|
+
})
|
|
12
17
|
}
|
package/Rule/index.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { selectively } from "selectively"
|
|
2
|
+
import { isly } from "isly"
|
|
2
3
|
import { definitions } from "./definitions"
|
|
3
4
|
import { Rule as ModelRule, type as ruleType } from "./Rule"
|
|
4
5
|
import { State as RuleState } from "./State"
|
|
@@ -20,7 +21,7 @@ export namespace Rule {
|
|
|
20
21
|
return selectively.resolve({ ...macros, ...definitions }, selectively.parse(rule.condition)).is(state)
|
|
21
22
|
}
|
|
22
23
|
function score(
|
|
23
|
-
rules:
|
|
24
|
+
rules: ModelRule.Score[],
|
|
24
25
|
state: State,
|
|
25
26
|
macros?: Record<string, selectively.Definition>
|
|
26
27
|
): number | undefined {
|
|
@@ -36,7 +37,7 @@ export namespace Rule {
|
|
|
36
37
|
): Record<ModelRule.Other.Action, Rule[]> & { risk?: number } {
|
|
37
38
|
const result: Record<ModelRule.Other.Action, Rule[]> & { risk?: number } = { review: [], reject: [], flag: [] }
|
|
38
39
|
const [other, scorers] = rules.reduce(
|
|
39
|
-
(r: [
|
|
40
|
+
(r: [ModelRule.Other[], ModelRule.Score[]], rule) => {
|
|
40
41
|
rule.action == "score" ? r[1].push(rule) : r[0].push(rule)
|
|
41
42
|
return r
|
|
42
43
|
},
|
|
@@ -47,4 +48,10 @@ export namespace Rule {
|
|
|
47
48
|
other.forEach(rule => control(rule, state, macros) && result[rule.action].push(rule))
|
|
48
49
|
return result
|
|
49
50
|
}
|
|
51
|
+
export function isLegacy(rule: Rule): boolean {
|
|
52
|
+
return !isly.string(ModelRule.Base.categories).is(rule.category)
|
|
53
|
+
}
|
|
54
|
+
export function fromLegacy(rule: Rule): Rule {
|
|
55
|
+
return isLegacy(rule) ? { ...rule, category: "fincrime" } : rule
|
|
56
|
+
}
|
|
50
57
|
}
|
package/dist/Key/Roles.d.ts
CHANGED
|
@@ -14,8 +14,8 @@ export declare namespace Roles {
|
|
|
14
14
|
type Roles = Partial<Record<Role, true>>;
|
|
15
15
|
type Role = typeof roles[number];
|
|
16
16
|
const roles: readonly ["admin", "fincrime-readonly", "fincrime", "finance", "operations", "support"];
|
|
17
|
-
const type: isly.Type<"
|
|
18
|
-
const is: isly.Type.IsFunction<"
|
|
17
|
+
const type: isly.Type<"fincrime" | "operations" | "admin" | "fincrime-readonly" | "finance" | "support">;
|
|
18
|
+
const is: isly.Type.IsFunction<"fincrime" | "operations" | "admin" | "fincrime-readonly" | "finance" | "support">;
|
|
19
19
|
const definitions: Record<Role, Permissions.Realm | true>;
|
|
20
20
|
}
|
|
21
21
|
namespace Organization {
|
package/dist/Rule/Rule/Base.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { isly } from "isly";
|
|
2
2
|
export interface Base {
|
|
3
|
-
code
|
|
3
|
+
code: string;
|
|
4
4
|
name: string;
|
|
5
5
|
description: string;
|
|
6
6
|
type: Base.Kind;
|
|
7
|
+
category: Base.Category;
|
|
7
8
|
condition: string;
|
|
8
9
|
flags: string[];
|
|
9
10
|
groups?: string[];
|
|
@@ -11,5 +12,7 @@ export interface Base {
|
|
|
11
12
|
export declare namespace Base {
|
|
12
13
|
const kinds: readonly ["authorization", "outbound", "inbound"];
|
|
13
14
|
type Kind = typeof kinds[number];
|
|
15
|
+
const categories: readonly ["customer", "product", "fincrime"];
|
|
16
|
+
type Category = typeof categories[number];
|
|
14
17
|
const type: isly.object.ExtendableType<Base>;
|
|
15
18
|
}
|
package/dist/Rule/Rule/Base.js
CHANGED
|
@@ -2,11 +2,13 @@ import { isly } from "isly";
|
|
|
2
2
|
export var Base;
|
|
3
3
|
(function (Base) {
|
|
4
4
|
Base.kinds = ["authorization", "outbound", "inbound"];
|
|
5
|
+
Base.categories = ["customer", "product", "fincrime"];
|
|
5
6
|
Base.type = isly.object({
|
|
6
|
-
code: isly.string(new RegExp(/^[a-z0-9\-_]+$/))
|
|
7
|
+
code: isly.string(new RegExp(/^[a-z0-9\-_]+$/)),
|
|
7
8
|
name: isly.string(),
|
|
8
9
|
description: isly.string(),
|
|
9
10
|
type: isly.string(Base.kinds),
|
|
11
|
+
category: isly.string(Base.categories),
|
|
10
12
|
condition: isly.string(),
|
|
11
13
|
flags: isly.string().array(),
|
|
12
14
|
groups: isly.string().array().optional(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Base.js","sourceRoot":"../","sources":["Rule/Rule/Base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"Base.js","sourceRoot":"../","sources":["Rule/Rule/Base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAY3B,MAAM,KAAW,IAAI,CAepB;AAfD,WAAiB,IAAI;IACP,UAAK,GAAG,CAAC,eAAe,EAAE,UAAU,EAAE,SAAS,CAAU,CAAA;IAEzD,eAAU,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAU,CAAA;IAEzD,SAAI,GAAG,IAAI,CAAC,MAAM,CAAO;QACrC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC/C,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;QACnB,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE;QAC1B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAA,KAAK,CAAC;QACxB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,KAAA,UAAU,CAAC;QACjC,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,EAfgB,IAAI,KAAJ,IAAI,QAepB"}
|
package/dist/Rule/Rule/Score.js
CHANGED
|
@@ -3,6 +3,10 @@ import { Base } from "./Base";
|
|
|
3
3
|
export var Score;
|
|
4
4
|
(function (Score) {
|
|
5
5
|
Score.Risk = isly.number(["positive", "integer"]);
|
|
6
|
-
Score.type = Base.type.extend({
|
|
6
|
+
Score.type = Base.type.extend({
|
|
7
|
+
action: isly.string("score"),
|
|
8
|
+
category: isly.string("fincrime"),
|
|
9
|
+
risk: Score.Risk,
|
|
10
|
+
});
|
|
7
11
|
})(Score || (Score = {}));
|
|
8
12
|
//# sourceMappingURL=Score.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Score.js","sourceRoot":"../","sources":["Rule/Rule/Score.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"Score.js","sourceRoot":"../","sources":["Rule/Rule/Score.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAO7B,MAAM,KAAW,KAAK,CAQrB;AARD,WAAiB,KAAK;IAER,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,OAAO,CAAC;QAC5B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QACjC,IAAI,EAAE,MAAA,IAAI;KACV,CAAC,CAAA;AACH,CAAC,EARgB,KAAK,KAAL,KAAK,QAQrB"}
|
package/dist/Rule/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { selectively } from "selectively";
|
|
2
|
+
import { isly } from "isly";
|
|
2
3
|
import { Rule as ModelRule } from "./Rule";
|
|
3
4
|
import { State as RuleState } from "./State";
|
|
4
5
|
export type Rule = ModelRule;
|
|
@@ -10,10 +11,12 @@ export declare namespace Rule {
|
|
|
10
11
|
export import Other = ModelRule.Other;
|
|
11
12
|
export import Score = ModelRule.Score;
|
|
12
13
|
export import State = RuleState;
|
|
13
|
-
const type:
|
|
14
|
-
const is:
|
|
15
|
-
const flaw:
|
|
14
|
+
const type: isly.Type<Other | Score>;
|
|
15
|
+
const is: isly.Type.IsFunction<Other | Score>;
|
|
16
|
+
const flaw: isly.Type.FlawFunction;
|
|
16
17
|
function evaluate(rules: Rule[], state: State, macros?: Record<string, selectively.Definition>): Record<ModelRule.Other.Action, Rule[]> & {
|
|
17
18
|
risk?: number;
|
|
18
19
|
};
|
|
20
|
+
function isLegacy(rule: Rule): boolean;
|
|
21
|
+
function fromLegacy(rule: Rule): Rule;
|
|
19
22
|
}
|
package/dist/Rule/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { selectively } from "selectively";
|
|
2
|
+
import { isly } from "isly";
|
|
2
3
|
import { definitions } from "./definitions";
|
|
3
4
|
import { Rule as ModelRule, type as ruleType } from "./Rule";
|
|
4
5
|
import { State as RuleState } from "./State";
|
|
@@ -30,5 +31,13 @@ export var Rule;
|
|
|
30
31
|
return result;
|
|
31
32
|
}
|
|
32
33
|
Rule.evaluate = evaluate;
|
|
34
|
+
function isLegacy(rule) {
|
|
35
|
+
return !isly.string(ModelRule.Base.categories).is(rule.category);
|
|
36
|
+
}
|
|
37
|
+
Rule.isLegacy = isLegacy;
|
|
38
|
+
function fromLegacy(rule) {
|
|
39
|
+
return isLegacy(rule) ? { ...rule, category: "fincrime" } : rule;
|
|
40
|
+
}
|
|
41
|
+
Rule.fromLegacy = fromLegacy;
|
|
33
42
|
})(Rule || (Rule = {}));
|
|
34
43
|
//# sourceMappingURL=index.js.map
|
package/dist/Rule/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Rule/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAC5D,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,SAAS,CAAA;AAI5C,MAAM,KAAW,IAAI,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Rule/index.ts"],"names":[],"mappings":"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"}
|