@pax2pay/model-banking 0.1.510 → 0.1.512
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/Restriction/Merchant.ts +19 -94
- package/Card/Restriction/merchants/Merchant.ts +28 -0
- package/Card/Restriction/merchants/airlines.json +957 -0
- package/Card/Restriction/merchants/hotels.json +252 -0
- package/Card/Restriction/merchants/index.ts +765 -0
- package/Card/Restriction/merchants/misc.json +139 -0
- package/Client/Users/Invites.ts +20 -0
- package/Client/Users/index.ts +31 -0
- package/Client/index.ts +15 -12
- package/Identity.ts +20 -14
- package/Key/Permissions.ts +46 -0
- package/Key/index.ts +16 -5
- package/User/Access/Permission.ts +1 -1
- package/User/Identity.ts +2 -2
- package/User/JWT/index.ts +3 -1
- package/User/JWT/whitelist.ts +16 -0
- package/dist/cjs/Card/Restriction/Merchant.d.ts +3 -9
- package/dist/cjs/Card/Restriction/Merchant.js +18 -87
- package/dist/cjs/Card/Restriction/Merchant.js.map +1 -1
- package/dist/cjs/Card/Restriction/merchants/Merchant.d.ts +12 -0
- package/dist/cjs/Card/Restriction/merchants/Merchant.js +26 -0
- package/dist/cjs/Card/Restriction/merchants/Merchant.js.map +1 -0
- package/dist/cjs/Card/Restriction/merchants/index.d.ts +763 -0
- package/dist/cjs/Card/Restriction/merchants/index.js +767 -0
- package/dist/cjs/Card/Restriction/merchants/index.js.map +1 -0
- package/dist/cjs/Client/Users/Invites.d.ts +11 -0
- package/dist/cjs/Client/Users/Invites.js +23 -0
- package/dist/cjs/Client/Users/Invites.js.map +1 -0
- package/dist/cjs/Client/Users/index.d.ts +16 -0
- package/dist/cjs/Client/Users/index.js +34 -0
- package/dist/cjs/Client/Users/index.js.map +1 -0
- package/dist/cjs/Client/index.d.ts +8 -6
- package/dist/cjs/Client/index.js +15 -12
- package/dist/cjs/Client/index.js.map +1 -1
- package/dist/cjs/Identity.d.ts +3 -4
- package/dist/cjs/Identity.js +19 -8
- package/dist/cjs/Identity.js.map +1 -1
- package/dist/cjs/Key/Permissions.d.ts +2 -0
- package/dist/cjs/Key/Permissions.js +47 -0
- package/dist/cjs/Key/Permissions.js.map +1 -1
- package/dist/cjs/Key/index.d.ts +3 -5
- package/dist/cjs/Key/index.js +17 -0
- package/dist/cjs/Key/index.js.map +1 -1
- package/dist/cjs/User/Access/Permission.d.ts +4 -4
- package/dist/cjs/User/Access/Permission.js +1 -1
- package/dist/cjs/User/Access/Permission.js.map +1 -1
- package/dist/cjs/User/Identity.d.ts +1 -2
- package/dist/cjs/User/Identity.js +2 -4
- package/dist/cjs/User/Identity.js.map +1 -1
- package/dist/cjs/User/JWT/index.d.ts +1 -0
- package/dist/cjs/User/JWT/index.js +3 -1
- package/dist/cjs/User/JWT/index.js.map +1 -1
- package/dist/cjs/User/JWT/whitelist.d.ts +2 -0
- package/dist/cjs/User/JWT/whitelist.js +17 -0
- package/dist/cjs/User/JWT/whitelist.js.map +1 -0
- package/dist/mjs/Card/Restriction/Merchant.d.ts +3 -9
- package/dist/mjs/Card/Restriction/Merchant.js +18 -87
- package/dist/mjs/Card/Restriction/Merchant.js.map +1 -1
- package/dist/mjs/Card/Restriction/merchants/Merchant.d.ts +12 -0
- package/dist/mjs/Card/Restriction/merchants/Merchant.js +23 -0
- package/dist/mjs/Card/Restriction/merchants/Merchant.js.map +1 -0
- package/dist/mjs/Card/Restriction/merchants/index.d.ts +763 -0
- package/dist/mjs/Card/Restriction/merchants/index.js +764 -0
- package/dist/mjs/Card/Restriction/merchants/index.js.map +1 -0
- package/dist/mjs/Client/Users/Invites.d.ts +11 -0
- package/dist/mjs/Client/Users/Invites.js +19 -0
- package/dist/mjs/Client/Users/Invites.js.map +1 -0
- package/dist/mjs/Client/Users/index.d.ts +16 -0
- package/dist/mjs/Client/Users/index.js +30 -0
- package/dist/mjs/Client/Users/index.js.map +1 -0
- package/dist/mjs/Client/index.d.ts +8 -6
- package/dist/mjs/Client/index.js +15 -12
- package/dist/mjs/Client/index.js.map +1 -1
- package/dist/mjs/Identity.d.ts +3 -4
- package/dist/mjs/Identity.js +19 -8
- package/dist/mjs/Identity.js.map +1 -1
- package/dist/mjs/Key/Permissions.d.ts +2 -0
- package/dist/mjs/Key/Permissions.js +47 -0
- package/dist/mjs/Key/Permissions.js.map +1 -1
- package/dist/mjs/Key/index.d.ts +3 -5
- package/dist/mjs/Key/index.js +17 -0
- package/dist/mjs/Key/index.js.map +1 -1
- package/dist/mjs/User/Access/Permission.d.ts +4 -4
- package/dist/mjs/User/Access/Permission.js +1 -1
- package/dist/mjs/User/Access/Permission.js.map +1 -1
- package/dist/mjs/User/Identity.d.ts +1 -2
- package/dist/mjs/User/Identity.js +2 -4
- package/dist/mjs/User/Identity.js.map +1 -1
- package/dist/mjs/User/JWT/index.d.ts +1 -0
- package/dist/mjs/User/JWT/index.js +3 -1
- package/dist/mjs/User/JWT/index.js.map +1 -1
- package/dist/mjs/User/JWT/whitelist.d.ts +2 -0
- package/dist/mjs/User/JWT/whitelist.js +14 -0
- package/dist/mjs/User/JWT/whitelist.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,108 +1,33 @@
|
|
|
1
1
|
import { isly } from "isly"
|
|
2
2
|
import { isly as isly2 } from "isly2"
|
|
3
|
+
import { typedly } from "typedly"
|
|
3
4
|
import type { Transaction } from "../../Transaction"
|
|
5
|
+
import { merchants } from "./merchants"
|
|
6
|
+
import { Merchant as Attribute } from "./merchants/Merchant"
|
|
4
7
|
|
|
5
8
|
export type Merchant = typeof Merchant.values[number]
|
|
6
9
|
export namespace Merchant {
|
|
7
|
-
export const values =
|
|
8
|
-
"united airlines",
|
|
9
|
-
"american air",
|
|
10
|
-
"british airways",
|
|
11
|
-
"air france",
|
|
12
|
-
"lufthansa",
|
|
13
|
-
"qantas",
|
|
14
|
-
"alitalia",
|
|
15
|
-
"saudi air",
|
|
16
|
-
"sas",
|
|
17
|
-
"air india",
|
|
18
|
-
"air algerie",
|
|
19
|
-
"emirates",
|
|
20
|
-
"air malta",
|
|
21
|
-
"etihad air",
|
|
22
|
-
"tap",
|
|
23
|
-
"avianca",
|
|
24
|
-
"gulf air",
|
|
25
|
-
"aer lingus",
|
|
26
|
-
"turkish air",
|
|
27
|
-
"royal air maroc",
|
|
28
|
-
"tunis air",
|
|
29
|
-
"austrian air",
|
|
30
|
-
"flydubai",
|
|
31
|
-
"cebu air",
|
|
32
|
-
"thai airways",
|
|
33
|
-
"china airlines",
|
|
34
|
-
"malaysia airlines",
|
|
35
|
-
"iberia",
|
|
36
|
-
"qatar air",
|
|
37
|
-
"ana air",
|
|
38
|
-
"jet blue",
|
|
39
|
-
"middle east airlines",
|
|
40
|
-
"lot polish airlines",
|
|
41
|
-
"norwegian air",
|
|
42
|
-
"air arabia",
|
|
43
|
-
"easyjet",
|
|
44
|
-
"ryanair",
|
|
45
|
-
"air china",
|
|
46
|
-
"ethiopian airlines",
|
|
47
|
-
"wizz air",
|
|
48
|
-
] as const
|
|
10
|
+
export const values = typedly.Object.keys(merchants)
|
|
49
11
|
export const type = isly.string<Merchant>(values)
|
|
50
12
|
export const type2 = isly2.string<Merchant>("value", ...values)
|
|
51
|
-
export type Checker = (
|
|
52
|
-
merchant: Merchant,
|
|
53
|
-
transaction: Transaction.Creatable.CardTransaction | Transaction.PreTransaction.Authorization
|
|
54
|
-
) => boolean
|
|
55
|
-
export type Attribute = { mccs: string[]; checkers?: Checker[] }
|
|
56
|
-
export const attributes: Record<Merchant, Attribute> = {
|
|
57
|
-
"united airlines": { mccs: ["3000"] },
|
|
58
|
-
"american air": { mccs: ["3001"] },
|
|
59
|
-
"british airways": { mccs: ["3005"] },
|
|
60
|
-
"air france": { mccs: ["3007"] },
|
|
61
|
-
lufthansa: { mccs: ["3008"] },
|
|
62
|
-
qantas: { mccs: ["3012"] },
|
|
63
|
-
alitalia: { mccs: ["3013"] },
|
|
64
|
-
"saudi air": { mccs: ["3014"] },
|
|
65
|
-
sas: { mccs: ["3016"] },
|
|
66
|
-
"air india": { mccs: ["3020"] },
|
|
67
|
-
"air algerie": { mccs: ["3021"] },
|
|
68
|
-
emirates: { mccs: ["3026"] },
|
|
69
|
-
"air malta": { mccs: ["3028"] },
|
|
70
|
-
"etihad air": { mccs: ["3034"] },
|
|
71
|
-
tap: { mccs: ["3035"] },
|
|
72
|
-
avianca: { mccs: ["3039"] },
|
|
73
|
-
"gulf air": { mccs: ["3040"] },
|
|
74
|
-
"aer lingus": { mccs: ["3043"] },
|
|
75
|
-
"turkish air": { mccs: ["3047"] },
|
|
76
|
-
"royal air maroc": { mccs: ["3048"] },
|
|
77
|
-
"tunis air": { mccs: ["3049"] },
|
|
78
|
-
"austrian air": { mccs: ["3051"] },
|
|
79
|
-
flydubai: { mccs: ["3070"] },
|
|
80
|
-
"cebu air": { mccs: ["3072"] },
|
|
81
|
-
"thai airways": { mccs: ["3077"] },
|
|
82
|
-
"china airlines": { mccs: ["3078"] },
|
|
83
|
-
"malaysia airlines": { mccs: ["3100"] },
|
|
84
|
-
iberia: { mccs: ["3102"] },
|
|
85
|
-
"qatar air": { mccs: ["3136"] },
|
|
86
|
-
"ana air": { mccs: ["3161"] },
|
|
87
|
-
"jet blue": { mccs: ["3174"] },
|
|
88
|
-
"middle east airlines": { mccs: ["3175"] },
|
|
89
|
-
"lot polish airlines": { mccs: ["3182"] },
|
|
90
|
-
"norwegian air": { mccs: ["3211"] },
|
|
91
|
-
"air arabia": { mccs: ["3236"] },
|
|
92
|
-
easyjet: { mccs: ["3245"] },
|
|
93
|
-
ryanair: { mccs: ["3246"] },
|
|
94
|
-
"air china": { mccs: ["3261"] },
|
|
95
|
-
"ethiopian airlines": { mccs: ["3294"] },
|
|
96
|
-
"wizz air": { mccs: ["3301"] },
|
|
97
|
-
}
|
|
98
13
|
export function check(
|
|
99
14
|
merchant: Merchant,
|
|
100
15
|
transaction: Transaction.Creatable.CardTransaction | Transaction.PreTransaction.Authorization
|
|
101
16
|
): boolean {
|
|
102
|
-
const attribute =
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
)
|
|
17
|
+
const attribute: Attribute = merchants[merchant]
|
|
18
|
+
let result: boolean
|
|
19
|
+
if (attribute?.unambiguousMcc == transaction.counterpart.merchant.category)
|
|
20
|
+
result = true
|
|
21
|
+
else if (attribute.contains && attribute.mccs)
|
|
22
|
+
result =
|
|
23
|
+
attribute.mccs.some(mcc => mcc == transaction.counterpart.merchant.category) &&
|
|
24
|
+
attribute.contains.some(n => transaction.counterpart.merchant.name.includes(n))
|
|
25
|
+
else if (attribute.startsWith && attribute.mccs)
|
|
26
|
+
result =
|
|
27
|
+
attribute.mccs.some(mcc => mcc == transaction.counterpart.merchant.category) &&
|
|
28
|
+
attribute.startsWith.some(n => transaction.counterpart.merchant.name.startsWith(n))
|
|
29
|
+
else
|
|
30
|
+
result = false
|
|
31
|
+
return result
|
|
107
32
|
}
|
|
108
33
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { isly } from "isly2"
|
|
2
|
+
|
|
3
|
+
export interface Merchant {
|
|
4
|
+
name: string
|
|
5
|
+
unambiguousMcc?: string
|
|
6
|
+
mccs?: Readonly<string[]>
|
|
7
|
+
startsWith?: Readonly<string[]>
|
|
8
|
+
contains?: Readonly<string[]>
|
|
9
|
+
}
|
|
10
|
+
export namespace Merchant {
|
|
11
|
+
export const type = isly.object<Merchant>({
|
|
12
|
+
name: isly.string(),
|
|
13
|
+
unambiguousMcc: isly.string().optional(),
|
|
14
|
+
mccs: isly.string().array().optional(),
|
|
15
|
+
startsWith: isly.string().array().optional(),
|
|
16
|
+
contains: isly.string().array().optional(),
|
|
17
|
+
})
|
|
18
|
+
export function parse(value: Record<string, any>): Merchant | undefined {
|
|
19
|
+
const result = {
|
|
20
|
+
name: value.name?.toLowerCase(),
|
|
21
|
+
unambiguousMcc: value.unambiguousMcc && value.unambiguousMcc.toString(),
|
|
22
|
+
mccs: value.mccs && (Array.isArray(value.mccs) ? value.mccs.map(v => v.toString()) : [value.mccs.toString()]),
|
|
23
|
+
startsWith: value.startsWith && (Array.isArray(value.startsWith) ? value.startsWith : [value.startsWith]),
|
|
24
|
+
contains: value.contains && (Array.isArray(value.contains) ? value.contains : [value.contains]),
|
|
25
|
+
}
|
|
26
|
+
return type.prune(result)
|
|
27
|
+
}
|
|
28
|
+
}
|