@pax2pay/model-banking 0.1.651 → 0.1.652

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 (90) hide show
  1. package/Client/Policies.ts +23 -0
  2. package/Client/index.ts +3 -3
  3. package/dist/cjs/Client/Policies.d.ts +15 -0
  4. package/dist/cjs/Client/{MCCPolicies.js → Policies.js} +8 -8
  5. package/dist/cjs/Client/Policies.js.map +1 -0
  6. package/dist/cjs/Client/index.d.ts +2 -2
  7. package/dist/cjs/Client/index.js +3 -3
  8. package/dist/cjs/Client/index.js.map +1 -1
  9. package/dist/cjs/pax2pay.d.ts +1 -1
  10. package/dist/cjs/pax2pay.js +3 -3
  11. package/dist/cjs/pax2pay.js.map +1 -1
  12. package/dist/cjs/policy/Mcc/Action.js.map +1 -0
  13. package/dist/{mjs/MCCPolicy → cjs/policy/Mcc}/Creatable.d.ts +1 -1
  14. package/dist/cjs/{MCCPolicy → policy/Mcc}/Creatable.js +1 -1
  15. package/dist/cjs/policy/Mcc/Creatable.js.map +1 -0
  16. package/dist/{mjs/MCCPolicy → cjs/policy/Mcc}/Group.d.ts +1 -1
  17. package/dist/cjs/{MCCPolicy → policy/Mcc}/Group.js +3 -9
  18. package/dist/cjs/policy/Mcc/Group.js.map +1 -0
  19. package/dist/cjs/{MCCPolicy → policy/Mcc}/Updatable.js +1 -3
  20. package/dist/cjs/policy/Mcc/Updatable.js.map +1 -0
  21. package/dist/cjs/policy/Mcc/index.d.ts +29 -0
  22. package/dist/cjs/{MCCPolicy → policy/Mcc}/index.js +20 -21
  23. package/dist/cjs/policy/Mcc/index.js.map +1 -0
  24. package/dist/cjs/policy/index.d.ts +4 -0
  25. package/dist/cjs/policy/index.js +9 -0
  26. package/dist/cjs/policy/index.js.map +1 -0
  27. package/dist/mjs/Client/Policies.d.ts +15 -0
  28. package/dist/mjs/Client/{MCCPolicies.js → Policies.js} +6 -6
  29. package/dist/mjs/Client/Policies.js.map +1 -0
  30. package/dist/mjs/Client/index.d.ts +2 -2
  31. package/dist/mjs/Client/index.js +3 -3
  32. package/dist/mjs/Client/index.js.map +1 -1
  33. package/dist/mjs/pax2pay.d.ts +1 -1
  34. package/dist/mjs/pax2pay.js +1 -1
  35. package/dist/mjs/pax2pay.js.map +1 -1
  36. package/dist/mjs/policy/Mcc/Action.js.map +1 -0
  37. package/dist/{cjs/MCCPolicy → mjs/policy/Mcc}/Creatable.d.ts +1 -1
  38. package/dist/mjs/{MCCPolicy → policy/Mcc}/Creatable.js +1 -1
  39. package/dist/mjs/policy/Mcc/Creatable.js.map +1 -0
  40. package/dist/{cjs/MCCPolicy → mjs/policy/Mcc}/Group.d.ts +1 -1
  41. package/dist/mjs/{MCCPolicy → policy/Mcc}/Group.js +3 -9
  42. package/dist/mjs/policy/Mcc/Group.js.map +1 -0
  43. package/dist/mjs/{MCCPolicy → policy/Mcc}/Updatable.js +1 -3
  44. package/dist/mjs/policy/Mcc/Updatable.js.map +1 -0
  45. package/dist/mjs/policy/Mcc/index.d.ts +29 -0
  46. package/dist/mjs/policy/Mcc/index.js +42 -0
  47. package/dist/mjs/policy/Mcc/index.js.map +1 -0
  48. package/dist/mjs/policy/index.d.ts +4 -0
  49. package/dist/mjs/policy/index.js +6 -0
  50. package/dist/mjs/policy/index.js.map +1 -0
  51. package/package.json +1 -1
  52. package/pax2pay.ts +1 -1
  53. package/{MCCPolicy → policy/Mcc}/Action.ts +1 -2
  54. package/{MCCPolicy → policy/Mcc}/Creatable.ts +1 -2
  55. package/{MCCPolicy → policy/Mcc}/Group.ts +3 -9
  56. package/{MCCPolicy → policy/Mcc}/Updatable.ts +1 -4
  57. package/policy/Mcc/index.ts +47 -0
  58. package/policy/index.ts +5 -0
  59. package/Client/MCCPolicies.ts +0 -23
  60. package/MCCPolicy/Identifier.ts +0 -9
  61. package/MCCPolicy/index.ts +0 -47
  62. package/dist/cjs/Client/MCCPolicies.d.ts +0 -15
  63. package/dist/cjs/Client/MCCPolicies.js.map +0 -1
  64. package/dist/cjs/MCCPolicy/Action.js.map +0 -1
  65. package/dist/cjs/MCCPolicy/Creatable.js.map +0 -1
  66. package/dist/cjs/MCCPolicy/Group.js.map +0 -1
  67. package/dist/cjs/MCCPolicy/Identifier.d.ts +0 -4
  68. package/dist/cjs/MCCPolicy/Identifier.js +0 -12
  69. package/dist/cjs/MCCPolicy/Identifier.js.map +0 -1
  70. package/dist/cjs/MCCPolicy/Updatable.js.map +0 -1
  71. package/dist/cjs/MCCPolicy/index.d.ts +0 -31
  72. package/dist/cjs/MCCPolicy/index.js.map +0 -1
  73. package/dist/mjs/Client/MCCPolicies.d.ts +0 -15
  74. package/dist/mjs/Client/MCCPolicies.js.map +0 -1
  75. package/dist/mjs/MCCPolicy/Action.js.map +0 -1
  76. package/dist/mjs/MCCPolicy/Creatable.js.map +0 -1
  77. package/dist/mjs/MCCPolicy/Group.js.map +0 -1
  78. package/dist/mjs/MCCPolicy/Identifier.d.ts +0 -4
  79. package/dist/mjs/MCCPolicy/Identifier.js +0 -9
  80. package/dist/mjs/MCCPolicy/Identifier.js.map +0 -1
  81. package/dist/mjs/MCCPolicy/Updatable.js.map +0 -1
  82. package/dist/mjs/MCCPolicy/index.d.ts +0 -31
  83. package/dist/mjs/MCCPolicy/index.js +0 -43
  84. package/dist/mjs/MCCPolicy/index.js.map +0 -1
  85. /package/dist/cjs/{MCCPolicy → policy/Mcc}/Action.d.ts +0 -0
  86. /package/dist/cjs/{MCCPolicy → policy/Mcc}/Action.js +0 -0
  87. /package/dist/cjs/{MCCPolicy → policy/Mcc}/Updatable.d.ts +0 -0
  88. /package/dist/mjs/{MCCPolicy → policy/Mcc}/Action.d.ts +0 -0
  89. /package/dist/mjs/{MCCPolicy → policy/Mcc}/Action.js +0 -0
  90. /package/dist/mjs/{MCCPolicy → policy/Mcc}/Updatable.d.ts +0 -0
@@ -1,18 +1,12 @@
1
1
  import { isly } from "isly";
2
- import { Merchant } from "../Merchant";
2
+ import { Merchant } from "../../Merchant";
3
3
  export var Group;
4
4
  (function (Group) {
5
5
  let Range;
6
6
  (function (Range) {
7
- Range.type = isly.object({
8
- from: Merchant.Category.type,
9
- to: Merchant.Category.type,
10
- });
7
+ Range.type = isly.object({ from: Merchant.Category.type, to: Merchant.Category.type });
11
8
  })(Range = Group.Range || (Group.Range = {}));
12
- Group.type = isly.object({
13
- values: Merchant.Category.type.array(),
14
- ranges: Range.type.array(),
15
- });
9
+ Group.type = isly.object({ values: Merchant.Category.type.array(), ranges: Range.type.array() });
16
10
  function within(set, category) {
17
11
  return set.values.includes(category) || set.ranges.some(r => r.from <= category && category <= r.to);
18
12
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Group.js","sourceRoot":"","sources":["../../../../policy/Mcc/Group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAMzC,MAAM,KAAW,KAAK,CAYrB;AAZD,WAAiB,KAAK;IAKrB,IAAiB,KAAK,CAErB;IAFD,WAAiB,KAAK;QACR,UAAI,GAAG,IAAI,CAAC,MAAM,CAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IACrG,CAAC,EAFgB,KAAK,GAAL,WAAK,KAAL,WAAK,QAErB;IACY,UAAI,GAAG,IAAI,CAAC,MAAM,CAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAC9G,SAAgB,MAAM,CAAC,GAAU,EAAE,QAA2B;QAC7D,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,QAAQ,IAAI,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,CAAA;IACrG,CAAC;IAFe,YAAM,SAErB,CAAA;AACF,CAAC,EAZgB,KAAK,KAAL,KAAK,QAYrB"}
@@ -2,8 +2,6 @@ import { isly } from "isly";
2
2
  import { Creatable } from "./Creatable";
3
3
  export var Updatable;
4
4
  (function (Updatable) {
5
- Updatable.type = Creatable.type.extend({
6
- id: isly.string(),
7
- });
5
+ Updatable.type = Creatable.type.extend({ id: isly.string() });
8
6
  })(Updatable || (Updatable = {}));
9
7
  //# sourceMappingURL=Updatable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Updatable.js","sourceRoot":"","sources":["../../../../policy/Mcc/Updatable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAKvC,MAAM,KAAW,SAAS,CAEzB;AAFD,WAAiB,SAAS;IACZ,cAAI,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAY,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;AAC5E,CAAC,EAFgB,SAAS,KAAT,SAAS,QAEzB"}
@@ -0,0 +1,29 @@
1
+ import { isoly } from "isoly";
2
+ import { Card } from "../../Card";
3
+ import { Merchant } from "../../Merchant";
4
+ import { Realm } from "../../Realm";
5
+ import { Action as MCCAction } from "./Action";
6
+ import { Creatable as MccCreatable } from "./Creatable";
7
+ import { Group as MCCGroup } from "./Group";
8
+ import { Updatable as MccUpdatable } from "./Updatable";
9
+ export interface Mcc extends MccCreatable {
10
+ id: string;
11
+ realm: Realm;
12
+ created: isoly.DateTime;
13
+ updated: isoly.DateTime;
14
+ }
15
+ export declare namespace Mcc {
16
+ export import Creatable = MccCreatable;
17
+ export import Updatable = MccUpdatable;
18
+ export import Action = MCCAction;
19
+ export import Group = MCCGroup;
20
+ type TransactionInput = {
21
+ category?: Merchant.Category;
22
+ preset?: Card.Preset;
23
+ organization?: string;
24
+ };
25
+ const type: import("isly/dist/cjs/object").IslyObject<Mcc, Creatable>;
26
+ function match(policy: Mcc, transaction: TransactionInput): boolean;
27
+ function resolve(policies: Mcc[], transaction: TransactionInput): Mcc[];
28
+ function isAllowed(policies: Mcc[], transaction: TransactionInput): boolean | undefined;
29
+ }
@@ -0,0 +1,42 @@
1
+ import { isoly } from "isoly";
2
+ import { isly } from "isly";
3
+ import { Card } from "../../Card";
4
+ import { Realm } from "../../Realm";
5
+ import { Action as MCCAction } from "./Action";
6
+ import { Creatable as MccCreatable } from "./Creatable";
7
+ import { Group as MCCGroup } from "./Group";
8
+ import { Updatable as MccUpdatable } from "./Updatable";
9
+ export var Mcc;
10
+ (function (Mcc) {
11
+ Mcc.Creatable = MccCreatable;
12
+ Mcc.Updatable = MccUpdatable;
13
+ Mcc.Action = MCCAction;
14
+ Mcc.Group = MCCGroup;
15
+ Mcc.type = Mcc.Creatable.type.extend({
16
+ id: isly.string(),
17
+ realm: Realm.type,
18
+ created: isly.fromIs("isoly.DateTime", isoly.DateTime.is),
19
+ updated: isly.fromIs("isoly.DateTime", isoly.DateTime.is),
20
+ });
21
+ function match(policy, transaction) {
22
+ const stack = transaction.preset ? Card.Preset.presets[transaction.preset] : undefined;
23
+ const stackMatches = !policy.stacks || (!!stack && policy.stacks.includes(stack));
24
+ const orgMatches = policy.organization == undefined ||
25
+ (!!transaction.organization && policy.organization == transaction.organization);
26
+ return !!transaction.category && stackMatches && orgMatches && Mcc.Group.within(policy.group, transaction.category);
27
+ }
28
+ Mcc.match = match;
29
+ function resolve(policies, transaction) {
30
+ const blocks = policies.filter(c => c.action == "block");
31
+ const blockMatches = blocks.filter(c => Mcc.match(c, transaction));
32
+ const allows = policies.filter(c => c.action == "allow");
33
+ return blockMatches.length ? blockMatches : allows.filter(c => Mcc.match(c, transaction));
34
+ }
35
+ Mcc.resolve = resolve;
36
+ function isAllowed(policies, transaction) {
37
+ const [result] = resolve(policies, transaction);
38
+ return result ? result.action == "allow" : undefined;
39
+ }
40
+ Mcc.isAllowed = isAllowed;
41
+ })(Mcc || (Mcc = {}));
42
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../policy/Mcc/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Mcc as PolicyMcc } from "./Mcc";
2
+ export declare namespace policy {
3
+ export import Mcc = PolicyMcc;
4
+ }
@@ -0,0 +1,6 @@
1
+ import { Mcc as PolicyMcc } from "./Mcc";
2
+ export var policy;
3
+ (function (policy) {
4
+ policy.Mcc = PolicyMcc;
5
+ })(policy || (policy = {}));
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../policy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,IAAI,SAAS,EAAE,MAAM,OAAO,CAAA;AAExC,MAAM,KAAW,MAAM,CAEtB;AAFD,WAAiB,MAAM;IACR,UAAG,GAAG,SAAS,CAAA;AAC9B,CAAC,EAFgB,MAAM,KAAN,MAAM,QAEtB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pax2pay/model-banking",
3
- "version": "0.1.651",
3
+ "version": "0.1.652",
4
4
  "description": "Library containing data model types and functions for the Pax2Pay Banking API.",
5
5
  "author": "Pax2Pay Ltd",
6
6
  "license": "MIT",
package/pax2pay.ts CHANGED
@@ -13,7 +13,7 @@ export { fx } from "./fx"
13
13
  export { Holidays } from "./Holidays"
14
14
  export { Identifier } from "./Identifier"
15
15
  export { Log } from "./Log"
16
- export { MCCPolicy } from "./MCCPolicy"
16
+ export { policy } from "./policy"
17
17
  export { Merchant } from "./Merchant"
18
18
  export { Operation } from "./Operation"
19
19
  export { Organization } from "./Organization"
@@ -1,8 +1,7 @@
1
1
  import { isly } from "isly"
2
2
 
3
3
  export type Action = (typeof Action.values)[number]
4
-
5
4
  export namespace Action {
6
5
  export const values = ["allow", "block"] as const
7
- export const type = isly.string(values)
6
+ export const type = isly.string<Action>(values)
8
7
  }
@@ -1,5 +1,5 @@
1
1
  import { isly } from "isly"
2
- import { Card } from "../Card"
2
+ import { Card } from "../../Card"
3
3
  import { Action } from "./Action"
4
4
  import { Group } from "./Group"
5
5
 
@@ -11,7 +11,6 @@ export interface Creatable {
11
11
  organization?: string
12
12
  group: Group
13
13
  }
14
-
15
14
  export namespace Creatable {
16
15
  export const type = isly.object<Creatable>({
17
16
  action: Action.type,
@@ -1,5 +1,5 @@
1
1
  import { isly } from "isly"
2
- import { Merchant } from "../Merchant"
2
+ import { Merchant } from "../../Merchant"
3
3
 
4
4
  export interface Group {
5
5
  values: Merchant.Category[]
@@ -11,15 +11,9 @@ export namespace Group {
11
11
  to: Merchant.Category
12
12
  }
13
13
  export namespace Range {
14
- export const type = isly.object<Range>({
15
- from: Merchant.Category.type,
16
- to: Merchant.Category.type,
17
- })
14
+ export const type = isly.object<Range>({ from: Merchant.Category.type, to: Merchant.Category.type })
18
15
  }
19
- export const type = isly.object<Group>({
20
- values: Merchant.Category.type.array(),
21
- ranges: Range.type.array(),
22
- })
16
+ export const type = isly.object<Group>({ values: Merchant.Category.type.array(), ranges: Range.type.array() })
23
17
  export function within(set: Group, category: Merchant.Category): boolean {
24
18
  return set.values.includes(category) || set.ranges.some(r => r.from <= category && category <= r.to)
25
19
  }
@@ -4,9 +4,6 @@ import { Creatable } from "./Creatable"
4
4
  export interface Updatable extends Creatable {
5
5
  id: string
6
6
  }
7
-
8
7
  export namespace Updatable {
9
- export const type = Creatable.type.extend<Updatable>({
10
- id: isly.string(),
11
- })
8
+ export const type = Creatable.type.extend<Updatable>({ id: isly.string() })
12
9
  }
@@ -0,0 +1,47 @@
1
+ import { isoly } from "isoly"
2
+ import { isly } from "isly"
3
+ import { Card } from "../../Card"
4
+ import { Merchant } from "../../Merchant"
5
+ import { Realm } from "../../Realm"
6
+ import { Action as MCCAction } from "./Action"
7
+ import { Creatable as MccCreatable } from "./Creatable"
8
+ import { Group as MCCGroup } from "./Group"
9
+ import { Updatable as MccUpdatable } from "./Updatable"
10
+
11
+ export interface Mcc extends MccCreatable {
12
+ id: string
13
+ realm: Realm
14
+ created: isoly.DateTime
15
+ updated: isoly.DateTime
16
+ }
17
+ export namespace Mcc {
18
+ export import Creatable = MccCreatable
19
+ export import Updatable = MccUpdatable
20
+ export import Action = MCCAction
21
+ export import Group = MCCGroup
22
+ export type TransactionInput = { category?: Merchant.Category; preset?: Card.Preset; organization?: string }
23
+ export const type = Creatable.type.extend<Mcc>({
24
+ id: isly.string(),
25
+ realm: Realm.type,
26
+ created: isly.fromIs("isoly.DateTime", isoly.DateTime.is),
27
+ updated: isly.fromIs("isoly.DateTime", isoly.DateTime.is),
28
+ })
29
+ export function match(policy: Mcc, transaction: TransactionInput): boolean {
30
+ const stack = transaction.preset ? Card.Preset.presets[transaction.preset] : undefined
31
+ const stackMatches = !policy.stacks || (!!stack && policy.stacks.includes(stack))
32
+ const orgMatches =
33
+ policy.organization == undefined ||
34
+ (!!transaction.organization && policy.organization == transaction.organization)
35
+ return !!transaction.category && stackMatches && orgMatches && Group.within(policy.group, transaction.category)
36
+ }
37
+ export function resolve(policies: Mcc[], transaction: TransactionInput): Mcc[] {
38
+ const blocks = policies.filter(c => c.action == "block")
39
+ const blockMatches = blocks.filter(c => Mcc.match(c, transaction))
40
+ const allows = policies.filter(c => c.action == "allow")
41
+ return blockMatches.length ? blockMatches : allows.filter(c => Mcc.match(c, transaction))
42
+ }
43
+ export function isAllowed(policies: Mcc[], transaction: TransactionInput): boolean | undefined {
44
+ const [result] = resolve(policies, transaction)
45
+ return result ? result.action == "allow" : undefined
46
+ }
47
+ }
@@ -0,0 +1,5 @@
1
+ import { Mcc as PolicyMcc } from "./Mcc"
2
+
3
+ export namespace policy {
4
+ export import Mcc = PolicyMcc
5
+ }
@@ -1,23 +0,0 @@
1
- import { gracely } from "gracely"
2
- import { http } from "cloudly-http"
3
- import { Card } from "../Card"
4
- import { MCCPolicy } from "../MCCPolicy"
5
-
6
- export class MCCPolicies {
7
- constructor(private readonly client: http.Client) {}
8
- async create(policy: MCCPolicy.Creatable): Promise<MCCPolicy | gracely.Error> {
9
- return this.client.post<MCCPolicy>(`/mcc-policy`, policy)
10
- }
11
- async update(policy: MCCPolicy.Updatable): Promise<MCCPolicy | gracely.Error> {
12
- return this.client.put<MCCPolicy>(`/mcc-policy`, policy)
13
- }
14
- async list(filter: { organization?: string; stack?: Card.Stack }): Promise<MCCPolicy[] | gracely.Error> {
15
- const query = Object.entries(filter)
16
- .map(([key, value]) => `${key}=${value}`)
17
- .join("&")
18
- return this.client.get<MCCPolicy[]>(`/mcc-policy${query ? `?${query}` : ""}`)
19
- }
20
- async remove(id: string): Promise<MCCPolicy | gracely.Error> {
21
- return this.client.delete<MCCPolicy>(`/mcc-policy/${id}`)
22
- }
23
- }
@@ -1,9 +0,0 @@
1
- import { cryptly } from "cryptly"
2
-
3
- export type Identifier = string
4
-
5
- export namespace Identifier {
6
- export function generate(): Identifier {
7
- return cryptly.Identifier.generate(8)
8
- }
9
- }
@@ -1,47 +0,0 @@
1
- import { isoly } from "isoly"
2
- import { isly } from "isly"
3
- import { Card } from "../Card"
4
- import { Merchant } from "../Merchant"
5
- import { Realm } from "../Realm"
6
- import { Action as MCCAction } from "./Action"
7
- import { Creatable as MCCPolicyCreatable } from "./Creatable"
8
- import { Group as MCCGroup } from "./Group"
9
- import { Identifier as MCCPolicyIdentifier } from "./Identifier"
10
- import { Updatable as MCCPolicyUpdatable } from "./Updatable"
11
-
12
- export interface MCCPolicy extends MCCPolicyCreatable {
13
- id: string
14
- realm: Realm
15
- created: isoly.DateTime
16
- updated: isoly.DateTime
17
- }
18
- export namespace MCCPolicy {
19
- export import Creatable = MCCPolicyCreatable
20
- export import Updatable = MCCPolicyUpdatable
21
- export import Identifier = MCCPolicyIdentifier
22
- export import Action = MCCAction
23
- export import Group = MCCGroup
24
- export type TransactionInput = { category?: Merchant.Category; cardPreset?: Card.Preset; org?: string }
25
- export const type = Creatable.type.extend<MCCPolicy>({
26
- id: isly.string(),
27
- realm: Realm.type,
28
- created: isly.fromIs("isoly.DateTime", isoly.DateTime.is),
29
- updated: isly.fromIs("isoly.DateTime", isoly.DateTime.is),
30
- })
31
- export function match(policy: MCCPolicy, transaction: TransactionInput): boolean {
32
- const stack = transaction.cardPreset ? Card.Preset.presets[transaction.cardPreset] : undefined
33
- const stackMatches = !policy.stacks || (!!stack && policy.stacks.includes(stack))
34
- const orgMatches = policy.organization == undefined || (!!transaction.org && policy.organization == transaction.org)
35
- return !!transaction.category && stackMatches && orgMatches && Group.within(policy.group, transaction.category)
36
- }
37
- export function resolve(policies: MCCPolicy[], transaction: TransactionInput): MCCPolicy[] {
38
- const blocks = policies.filter(c => c.action == "block")
39
- const blockMatches = blocks.filter(c => MCCPolicy.match(c, transaction))
40
- const allows = policies.filter(c => c.action == "allow")
41
- return blockMatches.length ? blockMatches : allows.filter(c => MCCPolicy.match(c, transaction))
42
- }
43
- export function isAllowed(policies: MCCPolicy[], transaction: TransactionInput): boolean | undefined {
44
- const [result] = resolve(policies, transaction)
45
- return result ? result.action == "allow" : undefined
46
- }
47
- }
@@ -1,15 +0,0 @@
1
- import { gracely } from "gracely";
2
- import { http } from "cloudly-http";
3
- import { Card } from "../Card";
4
- import { MCCPolicy } from "../MCCPolicy";
5
- export declare class MCCPolicies {
6
- private readonly client;
7
- constructor(client: http.Client);
8
- create(policy: MCCPolicy.Creatable): Promise<MCCPolicy | gracely.Error>;
9
- update(policy: MCCPolicy.Updatable): Promise<MCCPolicy | gracely.Error>;
10
- list(filter: {
11
- organization?: string;
12
- stack?: Card.Stack;
13
- }): Promise<MCCPolicy[] | gracely.Error>;
14
- remove(id: string): Promise<MCCPolicy | gracely.Error>;
15
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"MCCPolicies.js","sourceRoot":"","sources":["../../../Client/MCCPolicies.ts"],"names":[],"mappings":";;;AAKA,MAAa,WAAW;IACM;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IACpD,KAAK,CAAC,MAAM,CAAC,MAA2B;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAY,aAAa,EAAE,MAAM,CAAC,CAAA;IAC1D,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,MAA2B;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAY,aAAa,EAAE,MAAM,CAAC,CAAA;IACzD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,MAAqD;QAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;aAClC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;aACxC,IAAI,CAAC,GAAG,CAAC,CAAA;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAc,cAAc,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAC9E,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,EAAU;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAY,eAAe,EAAE,EAAE,CAAC,CAAA;IAC1D,CAAC;CACD;AAjBD,kCAiBC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Action.js","sourceRoot":"","sources":["../../../MCCPolicy/Action.ts"],"names":[],"mappings":";;;AAAA,+BAA2B;AAI3B,IAAiB,MAAM,CAGtB;AAHD,WAAiB,MAAM;IACT,aAAM,GAAG,CAAC,OAAO,EAAE,OAAO,CAAU,CAAA;IACpC,WAAI,GAAG,WAAI,CAAC,MAAM,CAAC,OAAA,MAAM,CAAC,CAAA;AACxC,CAAC,EAHgB,MAAM,sBAAN,MAAM,QAGtB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Creatable.js","sourceRoot":"","sources":["../../../MCCPolicy/Creatable.ts"],"names":[],"mappings":";;;AAAA,+BAA2B;AAC3B,kCAA8B;AAC9B,qCAAiC;AACjC,mCAA+B;AAW/B,IAAiB,SAAS,CASzB;AATD,WAAiB,SAAS;IACZ,cAAI,GAAG,WAAI,CAAC,MAAM,CAAY;QAC1C,MAAM,EAAE,eAAM,CAAC,IAAI;QACnB,IAAI,EAAE,WAAI,CAAC,MAAM,EAAE;QACnB,WAAW,EAAE,WAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACrC,YAAY,EAAE,WAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACtC,MAAM,EAAE,WAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;QAC1C,KAAK,EAAE,aAAK,CAAC,IAAI;KACjB,CAAC,CAAA;AACH,CAAC,EATgB,SAAS,yBAAT,SAAS,QASzB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Group.js","sourceRoot":"","sources":["../../../MCCPolicy/Group.ts"],"names":[],"mappings":";;;AAAA,+BAA2B;AAC3B,0CAAsC;AAMtC,IAAiB,KAAK,CAkBrB;AAlBD,WAAiB,KAAK;IAKrB,IAAiB,KAAK,CAKrB;IALD,WAAiB,KAAK;QACR,UAAI,GAAG,WAAI,CAAC,MAAM,CAAQ;YACtC,IAAI,EAAE,mBAAQ,CAAC,QAAQ,CAAC,IAAI;YAC5B,EAAE,EAAE,mBAAQ,CAAC,QAAQ,CAAC,IAAI;SAC1B,CAAC,CAAA;IACH,CAAC,EALgB,KAAK,GAAL,WAAK,KAAL,WAAK,QAKrB;IACY,UAAI,GAAG,WAAI,CAAC,MAAM,CAAQ;QACtC,MAAM,EAAE,mBAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;QACtC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE;KAC1B,CAAC,CAAA;IACF,SAAgB,MAAM,CAAC,GAAU,EAAE,QAA2B;QAC7D,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,QAAQ,IAAI,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,CAAA;IACrG,CAAC;IAFe,YAAM,SAErB,CAAA;AACF,CAAC,EAlBgB,KAAK,qBAAL,KAAK,QAkBrB"}
@@ -1,4 +0,0 @@
1
- export type Identifier = string;
2
- export declare namespace Identifier {
3
- function generate(): Identifier;
4
- }
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Identifier = void 0;
4
- const cryptly_1 = require("cryptly");
5
- var Identifier;
6
- (function (Identifier) {
7
- function generate() {
8
- return cryptly_1.cryptly.Identifier.generate(8);
9
- }
10
- Identifier.generate = generate;
11
- })(Identifier || (exports.Identifier = Identifier = {}));
12
- //# sourceMappingURL=Identifier.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Identifier.js","sourceRoot":"","sources":["../../../MCCPolicy/Identifier.ts"],"names":[],"mappings":";;;AAAA,qCAAiC;AAIjC,IAAiB,UAAU,CAI1B;AAJD,WAAiB,UAAU;IAC1B,SAAgB,QAAQ;QACvB,OAAO,iBAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IACtC,CAAC;IAFe,mBAAQ,WAEvB,CAAA;AACF,CAAC,EAJgB,UAAU,0BAAV,UAAU,QAI1B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Updatable.js","sourceRoot":"","sources":["../../../MCCPolicy/Updatable.ts"],"names":[],"mappings":";;;AAAA,+BAA2B;AAC3B,2CAAuC;AAMvC,IAAiB,SAAS,CAIzB;AAJD,WAAiB,SAAS;IACZ,cAAI,GAAG,qBAAS,CAAC,IAAI,CAAC,MAAM,CAAY;QACpD,EAAE,EAAE,WAAI,CAAC,MAAM,EAAE;KACjB,CAAC,CAAA;AACH,CAAC,EAJgB,SAAS,yBAAT,SAAS,QAIzB"}
@@ -1,31 +0,0 @@
1
- import { isoly } from "isoly";
2
- import { Card } from "../Card";
3
- import { Merchant } from "../Merchant";
4
- import { Realm } from "../Realm";
5
- import { Action as MCCAction } from "./Action";
6
- import { Creatable as MCCPolicyCreatable } from "./Creatable";
7
- import { Group as MCCGroup } from "./Group";
8
- import { Identifier as MCCPolicyIdentifier } from "./Identifier";
9
- import { Updatable as MCCPolicyUpdatable } from "./Updatable";
10
- export interface MCCPolicy extends MCCPolicyCreatable {
11
- id: string;
12
- realm: Realm;
13
- created: isoly.DateTime;
14
- updated: isoly.DateTime;
15
- }
16
- export declare namespace MCCPolicy {
17
- export import Creatable = MCCPolicyCreatable;
18
- export import Updatable = MCCPolicyUpdatable;
19
- export import Identifier = MCCPolicyIdentifier;
20
- export import Action = MCCAction;
21
- export import Group = MCCGroup;
22
- type TransactionInput = {
23
- category?: Merchant.Category;
24
- cardPreset?: Card.Preset;
25
- org?: string;
26
- };
27
- const type: import("isly/dist/cjs/object").IslyObject<MCCPolicy, Creatable>;
28
- function match(policy: MCCPolicy, transaction: TransactionInput): boolean;
29
- function resolve(policies: MCCPolicy[], transaction: TransactionInput): MCCPolicy[];
30
- function isAllowed(policies: MCCPolicy[], transaction: TransactionInput): boolean | undefined;
31
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../MCCPolicy/index.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAC7B,+BAA2B;AAC3B,kCAA8B;AAE9B,oCAAgC;AAChC,qCAA8C;AAC9C,2CAA6D;AAC7D,mCAA2C;AAC3C,6CAAgE;AAChE,2CAA6D;AAQ7D,IAAiB,SAAS,CA6BzB;AA7BD,WAAiB,SAAS;IACX,mBAAS,GAAG,qBAAkB,CAAA;IAC9B,mBAAS,GAAG,qBAAkB,CAAA;IAC9B,oBAAU,GAAG,uBAAmB,CAAA;IAChC,gBAAM,GAAG,eAAS,CAAA;IAClB,eAAK,GAAG,aAAQ,CAAA;IAEjB,cAAI,GAAG,UAAA,SAAS,CAAC,IAAI,CAAC,MAAM,CAAY;QACpD,EAAE,EAAE,WAAI,CAAC,MAAM,EAAE;QACjB,KAAK,EAAE,aAAK,CAAC,IAAI;QACjB,OAAO,EAAE,WAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,aAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,OAAO,EAAE,WAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,aAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;KACzD,CAAC,CAAA;IACF,SAAgB,KAAK,CAAC,MAAiB,EAAE,WAA6B;QACrE,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,WAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAC9F,MAAM,YAAY,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;QACjF,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,IAAI,SAAS,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,IAAI,MAAM,CAAC,YAAY,IAAI,WAAW,CAAC,GAAG,CAAC,CAAA;QACpH,OAAO,CAAC,CAAC,WAAW,CAAC,QAAQ,IAAI,YAAY,IAAI,UAAU,IAAI,UAAA,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IAChH,CAAC;IALe,eAAK,QAKpB,CAAA;IACD,SAAgB,OAAO,CAAC,QAAqB,EAAE,WAA6B;QAC3E,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,CAAA;QACxD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAA;QACxE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,CAAA;QACxD,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAA;IAChG,CAAC;IALe,iBAAO,UAKtB,CAAA;IACD,SAAgB,SAAS,CAAC,QAAqB,EAAE,WAA6B;QAC7E,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;QAC/C,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;IACrD,CAAC;IAHe,mBAAS,YAGxB,CAAA;AACF,CAAC,EA7BgB,SAAS,yBAAT,SAAS,QA6BzB"}
@@ -1,15 +0,0 @@
1
- import { gracely } from "gracely";
2
- import { http } from "cloudly-http";
3
- import { Card } from "../Card";
4
- import { MCCPolicy } from "../MCCPolicy";
5
- export declare class MCCPolicies {
6
- private readonly client;
7
- constructor(client: http.Client);
8
- create(policy: MCCPolicy.Creatable): Promise<MCCPolicy | gracely.Error>;
9
- update(policy: MCCPolicy.Updatable): Promise<MCCPolicy | gracely.Error>;
10
- list(filter: {
11
- organization?: string;
12
- stack?: Card.Stack;
13
- }): Promise<MCCPolicy[] | gracely.Error>;
14
- remove(id: string): Promise<MCCPolicy | gracely.Error>;
15
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"MCCPolicies.js","sourceRoot":"","sources":["../../../Client/MCCPolicies.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,WAAW;IACM;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IACpD,KAAK,CAAC,MAAM,CAAC,MAA2B;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAY,aAAa,EAAE,MAAM,CAAC,CAAA;IAC1D,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,MAA2B;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAY,aAAa,EAAE,MAAM,CAAC,CAAA;IACzD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,MAAqD;QAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;aAClC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;aACxC,IAAI,CAAC,GAAG,CAAC,CAAA;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAc,cAAc,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAC9E,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,EAAU;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAY,eAAe,EAAE,EAAE,CAAC,CAAA;IAC1D,CAAC;CACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Action.js","sourceRoot":"","sources":["../../../MCCPolicy/Action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,MAAM,KAAW,MAAM,CAGtB;AAHD,WAAiB,MAAM;IACT,aAAM,GAAG,CAAC,OAAO,EAAE,OAAO,CAAU,CAAA;IACpC,WAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAA,MAAM,CAAC,CAAA;AACxC,CAAC,EAHgB,MAAM,KAAN,MAAM,QAGtB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Creatable.js","sourceRoot":"","sources":["../../../MCCPolicy/Creatable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAW/B,MAAM,KAAW,SAAS,CASzB;AATD,WAAiB,SAAS;IACZ,cAAI,GAAG,IAAI,CAAC,MAAM,CAAY;QAC1C,MAAM,EAAE,MAAM,CAAC,IAAI;QACnB,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;QACnB,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACrC,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACtC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;QAC1C,KAAK,EAAE,KAAK,CAAC,IAAI;KACjB,CAAC,CAAA;AACH,CAAC,EATgB,SAAS,KAAT,SAAS,QASzB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Group.js","sourceRoot":"","sources":["../../../MCCPolicy/Group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAMtC,MAAM,KAAW,KAAK,CAkBrB;AAlBD,WAAiB,KAAK;IAKrB,IAAiB,KAAK,CAKrB;IALD,WAAiB,KAAK;QACR,UAAI,GAAG,IAAI,CAAC,MAAM,CAAQ;YACtC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI;YAC5B,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI;SAC1B,CAAC,CAAA;IACH,CAAC,EALgB,KAAK,GAAL,WAAK,KAAL,WAAK,QAKrB;IACY,UAAI,GAAG,IAAI,CAAC,MAAM,CAAQ;QACtC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;QACtC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE;KAC1B,CAAC,CAAA;IACF,SAAgB,MAAM,CAAC,GAAU,EAAE,QAA2B;QAC7D,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,QAAQ,IAAI,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,CAAA;IACrG,CAAC;IAFe,YAAM,SAErB,CAAA;AACF,CAAC,EAlBgB,KAAK,KAAL,KAAK,QAkBrB"}
@@ -1,4 +0,0 @@
1
- export type Identifier = string;
2
- export declare namespace Identifier {
3
- function generate(): Identifier;
4
- }
@@ -1,9 +0,0 @@
1
- import { cryptly } from "cryptly";
2
- export var Identifier;
3
- (function (Identifier) {
4
- function generate() {
5
- return cryptly.Identifier.generate(8);
6
- }
7
- Identifier.generate = generate;
8
- })(Identifier || (Identifier = {}));
9
- //# sourceMappingURL=Identifier.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Identifier.js","sourceRoot":"","sources":["../../../MCCPolicy/Identifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAIjC,MAAM,KAAW,UAAU,CAI1B;AAJD,WAAiB,UAAU;IAC1B,SAAgB,QAAQ;QACvB,OAAO,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IACtC,CAAC;IAFe,mBAAQ,WAEvB,CAAA;AACF,CAAC,EAJgB,UAAU,KAAV,UAAU,QAI1B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Updatable.js","sourceRoot":"","sources":["../../../MCCPolicy/Updatable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAMvC,MAAM,KAAW,SAAS,CAIzB;AAJD,WAAiB,SAAS;IACZ,cAAI,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAY;QACpD,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE;KACjB,CAAC,CAAA;AACH,CAAC,EAJgB,SAAS,KAAT,SAAS,QAIzB"}
@@ -1,31 +0,0 @@
1
- import { isoly } from "isoly";
2
- import { Card } from "../Card";
3
- import { Merchant } from "../Merchant";
4
- import { Realm } from "../Realm";
5
- import { Action as MCCAction } from "./Action";
6
- import { Creatable as MCCPolicyCreatable } from "./Creatable";
7
- import { Group as MCCGroup } from "./Group";
8
- import { Identifier as MCCPolicyIdentifier } from "./Identifier";
9
- import { Updatable as MCCPolicyUpdatable } from "./Updatable";
10
- export interface MCCPolicy extends MCCPolicyCreatable {
11
- id: string;
12
- realm: Realm;
13
- created: isoly.DateTime;
14
- updated: isoly.DateTime;
15
- }
16
- export declare namespace MCCPolicy {
17
- export import Creatable = MCCPolicyCreatable;
18
- export import Updatable = MCCPolicyUpdatable;
19
- export import Identifier = MCCPolicyIdentifier;
20
- export import Action = MCCAction;
21
- export import Group = MCCGroup;
22
- type TransactionInput = {
23
- category?: Merchant.Category;
24
- cardPreset?: Card.Preset;
25
- org?: string;
26
- };
27
- const type: import("isly/dist/cjs/object").IslyObject<MCCPolicy, Creatable>;
28
- function match(policy: MCCPolicy, transaction: TransactionInput): boolean;
29
- function resolve(policies: MCCPolicy[], transaction: TransactionInput): MCCPolicy[];
30
- function isAllowed(policies: MCCPolicy[], transaction: TransactionInput): boolean | undefined;
31
- }
@@ -1,43 +0,0 @@
1
- import { isoly } from "isoly";
2
- import { isly } from "isly";
3
- import { Card } from "../Card";
4
- import { Realm } from "../Realm";
5
- import { Action as MCCAction } from "./Action";
6
- import { Creatable as MCCPolicyCreatable } from "./Creatable";
7
- import { Group as MCCGroup } from "./Group";
8
- import { Identifier as MCCPolicyIdentifier } from "./Identifier";
9
- import { Updatable as MCCPolicyUpdatable } from "./Updatable";
10
- export var MCCPolicy;
11
- (function (MCCPolicy) {
12
- MCCPolicy.Creatable = MCCPolicyCreatable;
13
- MCCPolicy.Updatable = MCCPolicyUpdatable;
14
- MCCPolicy.Identifier = MCCPolicyIdentifier;
15
- MCCPolicy.Action = MCCAction;
16
- MCCPolicy.Group = MCCGroup;
17
- MCCPolicy.type = MCCPolicy.Creatable.type.extend({
18
- id: isly.string(),
19
- realm: Realm.type,
20
- created: isly.fromIs("isoly.DateTime", isoly.DateTime.is),
21
- updated: isly.fromIs("isoly.DateTime", isoly.DateTime.is),
22
- });
23
- function match(policy, transaction) {
24
- const stack = transaction.cardPreset ? Card.Preset.presets[transaction.cardPreset] : undefined;
25
- const stackMatches = !policy.stacks || (!!stack && policy.stacks.includes(stack));
26
- const orgMatches = policy.organization == undefined || (!!transaction.org && policy.organization == transaction.org);
27
- return !!transaction.category && stackMatches && orgMatches && MCCPolicy.Group.within(policy.group, transaction.category);
28
- }
29
- MCCPolicy.match = match;
30
- function resolve(policies, transaction) {
31
- const blocks = policies.filter(c => c.action == "block");
32
- const blockMatches = blocks.filter(c => MCCPolicy.match(c, transaction));
33
- const allows = policies.filter(c => c.action == "allow");
34
- return blockMatches.length ? blockMatches : allows.filter(c => MCCPolicy.match(c, transaction));
35
- }
36
- MCCPolicy.resolve = resolve;
37
- function isAllowed(policies, transaction) {
38
- const [result] = resolve(policies, transaction);
39
- return result ? result.action == "allow" : undefined;
40
- }
41
- MCCPolicy.isAllowed = isAllowed;
42
- })(MCCPolicy || (MCCPolicy = {}));
43
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../MCCPolicy/index.ts"],"names":[],"mappings":"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"}
File without changes
File without changes
File without changes
File without changes