@pax2pay/model-banking 0.1.314 → 0.1.315
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/Expiry.ts +8 -0
- package/Rule/State/Authorization.ts +16 -0
- package/Rule/State/Card.ts +23 -0
- package/dist/Card/Expiry.d.ts +1 -0
- package/dist/Card/Expiry.js +7 -0
- package/dist/Card/Expiry.js.map +1 -1
- package/dist/Rule/State/Authorization.d.ts +5 -0
- package/dist/Rule/State/Authorization.js +13 -0
- package/dist/Rule/State/Authorization.js.map +1 -1
- package/dist/Rule/State/Card.d.ts +4 -0
- package/dist/Rule/State/Card.js +23 -0
- package/dist/Rule/State/Card.js.map +1 -1
- package/package.json +1 -1
package/Card/Expiry.ts
CHANGED
|
@@ -16,4 +16,12 @@ export namespace Expiry {
|
|
|
16
16
|
"20" + expiry[0].toString() + "-" + expiry[1].toString().padStart(2, "0") + "-01T00:00:01.000Z"
|
|
17
17
|
)
|
|
18
18
|
}
|
|
19
|
+
export function isExpired(expiry: Expiry): boolean {
|
|
20
|
+
const now = isoly.DateTime.now()
|
|
21
|
+
const expiryYear = 2000 + expiry[0]
|
|
22
|
+
return (
|
|
23
|
+
expiryYear < isoly.DateTime.getYear(now) ||
|
|
24
|
+
(expiryYear == isoly.DateTime.getYear(now) && expiry[1] < isoly.DateTime.getMonth(now))
|
|
25
|
+
)
|
|
26
|
+
}
|
|
19
27
|
}
|
|
@@ -2,6 +2,8 @@ import { isoly } from "isoly"
|
|
|
2
2
|
import { isly } from "isly"
|
|
3
3
|
import { Creatable as AuthorizationCreatable } from "../../Authorization/Creatable"
|
|
4
4
|
import { Merchant } from "../../Merchant"
|
|
5
|
+
import type { Rail } from "../../Rail"
|
|
6
|
+
import type { Transaction } from "../../Transaction"
|
|
5
7
|
|
|
6
8
|
export interface Authorization extends Omit<AuthorizationCreatable, "amount"> {
|
|
7
9
|
time: string
|
|
@@ -21,6 +23,20 @@ export namespace Authorization {
|
|
|
21
23
|
merchant: { ...authorization.merchant, reference: `${authorization.acquirer.id}-${authorization.merchant.id}` },
|
|
22
24
|
}
|
|
23
25
|
}
|
|
26
|
+
export function toTransaction(authorization: Authorization): Transaction.Creatable & {
|
|
27
|
+
counterpart: Rail.Address.Card.Counterpart
|
|
28
|
+
} {
|
|
29
|
+
return {
|
|
30
|
+
amount: authorization.amount,
|
|
31
|
+
currency: authorization.currency,
|
|
32
|
+
description: authorization.description,
|
|
33
|
+
counterpart: {
|
|
34
|
+
type: "card",
|
|
35
|
+
merchant: authorization.merchant,
|
|
36
|
+
acquirer: authorization.acquirer,
|
|
37
|
+
},
|
|
38
|
+
}
|
|
39
|
+
}
|
|
24
40
|
export const type = AuthorizationCreatable.type.omit(["amount"]).extend<Authorization>({
|
|
25
41
|
time: isly.string(),
|
|
26
42
|
hour: isly.number(),
|
package/Rule/State/Card.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { isoly } from "isoly"
|
|
2
2
|
import { isly } from "isly"
|
|
3
3
|
import { Card as ModelCard } from "../../Card"
|
|
4
|
+
import type { Rail } from "../../Rail"
|
|
5
|
+
import type { Status as TransactionStatus } from "../../Transaction/Status"
|
|
4
6
|
|
|
5
7
|
export interface Card extends Omit<ModelCard, "limit">, Card.Statistics {
|
|
6
8
|
age: { days: number; minutes: number }
|
|
@@ -30,6 +32,27 @@ export namespace Card {
|
|
|
30
32
|
original: { currency: card.limit[0], limit: card.limit[1] },
|
|
31
33
|
}
|
|
32
34
|
}
|
|
35
|
+
export function check(card: Card, amount: number): TransactionStatus {
|
|
36
|
+
let result: TransactionStatus
|
|
37
|
+
if (ModelCard.Expiry.isExpired(card.details.expiry))
|
|
38
|
+
result = ["rejected", "card expired"]
|
|
39
|
+
else if (amount + card.spent[1] > card.limit)
|
|
40
|
+
result = ["rejected", "exceeds limit"]
|
|
41
|
+
else
|
|
42
|
+
result = "processing"
|
|
43
|
+
return result
|
|
44
|
+
}
|
|
45
|
+
export function toAddress(card: Card): Rail.Address.Card {
|
|
46
|
+
return {
|
|
47
|
+
type: "card",
|
|
48
|
+
id: card.id,
|
|
49
|
+
expiry: card.details.expiry,
|
|
50
|
+
holder: card.details.holder,
|
|
51
|
+
iin: card.details.iin,
|
|
52
|
+
last4: card.details.last4,
|
|
53
|
+
scheme: card.scheme,
|
|
54
|
+
}
|
|
55
|
+
}
|
|
33
56
|
export const type = ModelCard.type.omit(["limit"]).extend<Card>({
|
|
34
57
|
age: isly.object<Card["age"]>({ days: isly.number(), minutes: isly.number() }),
|
|
35
58
|
limit: isly.number(),
|
package/dist/Card/Expiry.d.ts
CHANGED
package/dist/Card/Expiry.js
CHANGED
|
@@ -10,5 +10,12 @@ export var Expiry;
|
|
|
10
10
|
return isoly.DateTime.nextMonth("20" + expiry[0].toString() + "-" + expiry[1].toString().padStart(2, "0") + "-01T00:00:01.000Z");
|
|
11
11
|
}
|
|
12
12
|
Expiry.toDateTime = toDateTime;
|
|
13
|
+
function isExpired(expiry) {
|
|
14
|
+
const now = isoly.DateTime.now();
|
|
15
|
+
const expiryYear = 2000 + expiry[0];
|
|
16
|
+
return (expiryYear < isoly.DateTime.getYear(now) ||
|
|
17
|
+
(expiryYear == isoly.DateTime.getYear(now) && expiry[1] < isoly.DateTime.getMonth(now)));
|
|
18
|
+
}
|
|
19
|
+
Expiry.isExpired = isExpired;
|
|
13
20
|
})(Expiry || (Expiry = {}));
|
|
14
21
|
//# sourceMappingURL=Expiry.js.map
|
package/dist/Card/Expiry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Expiry.js","sourceRoot":"../","sources":["Card/Expiry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,MAAM,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAU,CAAA;AAG9F,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAU,CAAA;AAI9D,MAAM,KAAW,MAAM,
|
|
1
|
+
{"version":3,"file":"Expiry.js","sourceRoot":"../","sources":["Card/Expiry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,MAAM,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAU,CAAA;AAG9F,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAU,CAAA;AAI9D,MAAM,KAAW,MAAM,CAgBtB;AAhBD,WAAiB,MAAM;IACT,WAAI,GAAG,IAAI,CAAC,KAAK,CAAS,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IAC1E,SAAE,GAAG,OAAA,IAAI,CAAC,EAAE,CAAA;IACzB,SAAgB,UAAU,CAAC,MAAc;QACxC,OAAO,KAAK,CAAC,QAAQ,CAAC,SAAS,CAC9B,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,mBAAmB,CAC/F,CAAA;IACF,CAAC;IAJe,iBAAU,aAIzB,CAAA;IACD,SAAgB,SAAS,CAAC,MAAc;QACvC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAA;QAChC,MAAM,UAAU,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACnC,OAAO,CACN,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;YACxC,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CACvF,CAAA;IACF,CAAC;IAPe,gBAAS,YAOxB,CAAA;AACF,CAAC,EAhBgB,MAAM,KAAN,MAAM,QAgBtB"}
|
|
@@ -2,6 +2,8 @@ import { isoly } from "isoly";
|
|
|
2
2
|
import { isly } from "isly";
|
|
3
3
|
import { Creatable as AuthorizationCreatable } from "../../Authorization/Creatable";
|
|
4
4
|
import { Merchant } from "../../Merchant";
|
|
5
|
+
import type { Rail } from "../../Rail";
|
|
6
|
+
import type { Transaction } from "../../Transaction";
|
|
5
7
|
export interface Authorization extends Omit<AuthorizationCreatable, "amount"> {
|
|
6
8
|
time: string;
|
|
7
9
|
hour: number;
|
|
@@ -13,6 +15,9 @@ export interface Authorization extends Omit<AuthorizationCreatable, "amount"> {
|
|
|
13
15
|
}
|
|
14
16
|
export declare namespace Authorization {
|
|
15
17
|
function from(authorization: AuthorizationCreatable): Authorization;
|
|
18
|
+
function toTransaction(authorization: Authorization): Transaction.Creatable & {
|
|
19
|
+
counterpart: Rail.Address.Card.Counterpart;
|
|
20
|
+
};
|
|
16
21
|
const type: isly.object.ExtendableType<Authorization>;
|
|
17
22
|
const is: isly.Type.IsFunction<Authorization>;
|
|
18
23
|
const flaw: isly.Type.FlawFunction;
|
|
@@ -15,6 +15,19 @@ export var Authorization;
|
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
17
|
Authorization.from = from;
|
|
18
|
+
function toTransaction(authorization) {
|
|
19
|
+
return {
|
|
20
|
+
amount: authorization.amount,
|
|
21
|
+
currency: authorization.currency,
|
|
22
|
+
description: authorization.description,
|
|
23
|
+
counterpart: {
|
|
24
|
+
type: "card",
|
|
25
|
+
merchant: authorization.merchant,
|
|
26
|
+
acquirer: authorization.acquirer,
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
Authorization.toTransaction = toTransaction;
|
|
18
31
|
Authorization.type = AuthorizationCreatable.type.omit(["amount"]).extend({
|
|
19
32
|
time: isly.string(),
|
|
20
33
|
hour: isly.number(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Authorization.js","sourceRoot":"../","sources":["Rule/State/Authorization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,SAAS,IAAI,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACnF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"Authorization.js","sourceRoot":"../","sources":["Rule/State/Authorization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,SAAS,IAAI,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACnF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAWzC,MAAM,KAAW,aAAa,CAqC7B;AArCD,WAAiB,aAAa;IAC7B,SAAgB,IAAI,CAAC,aAAqC;QACzD,OAAO;YACN,GAAG,aAAa;YAChB,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;YAClD,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;YAClD,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;YACjC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACzC,QAAQ,EAAE,EAAE,GAAG,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,EAAE,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE;SAC/G,CAAA;IACF,CAAC;IATe,kBAAI,OASnB,CAAA;IACD,SAAgB,aAAa,CAAC,aAA4B;QAGzD,OAAO;YACN,MAAM,EAAE,aAAa,CAAC,MAAM;YAC5B,QAAQ,EAAE,aAAa,CAAC,QAAQ;YAChC,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,WAAW,EAAE;gBACZ,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,aAAa,CAAC,QAAQ;gBAChC,QAAQ,EAAE,aAAa,CAAC,QAAQ;aAChC;SACD,CAAA;IACF,CAAC;IAbe,2BAAa,gBAa5B,CAAA;IACY,kBAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAgB;QACtF,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;QACnB,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;QACnB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC3C,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;QACrB,QAAQ,EAAE,IAAI,CAAC,YAAY,CAC1B,QAAQ,CAAC,IAAI,EACb,IAAI,CAAC,MAAM,CAAwB,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAChE;KACD,CAAC,CAAA;IACW,gBAAE,GAAG,cAAA,IAAI,CAAC,EAAE,CAAA;IACZ,kBAAI,GAAG,cAAA,IAAI,CAAC,IAAI,CAAA;AAC9B,CAAC,EArCgB,aAAa,KAAb,aAAa,QAqC7B"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { isoly } from "isoly";
|
|
2
2
|
import { isly } from "isly";
|
|
3
3
|
import { Card as ModelCard } from "../../Card";
|
|
4
|
+
import type { Rail } from "../../Rail";
|
|
5
|
+
import type { Status as TransactionStatus } from "../../Transaction/Status";
|
|
4
6
|
export interface Card extends Omit<ModelCard, "limit">, Card.Statistics {
|
|
5
7
|
age: {
|
|
6
8
|
days: number;
|
|
@@ -25,6 +27,8 @@ export declare namespace Card {
|
|
|
25
27
|
};
|
|
26
28
|
const initialStatistics: Statistics;
|
|
27
29
|
function from(card: ModelCard, statistics?: Statistics): Card;
|
|
30
|
+
function check(card: Card, amount: number): TransactionStatus;
|
|
31
|
+
function toAddress(card: Card): Rail.Address.Card;
|
|
28
32
|
const type: isly.object.ExtendableType<Card>;
|
|
29
33
|
const is: isly.Type.IsFunction<Card>;
|
|
30
34
|
const flaw: isly.Type.FlawFunction;
|
package/dist/Rule/State/Card.js
CHANGED
|
@@ -21,6 +21,29 @@ export var Card;
|
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
23
|
Card.from = from;
|
|
24
|
+
function check(card, amount) {
|
|
25
|
+
let result;
|
|
26
|
+
if (ModelCard.Expiry.isExpired(card.details.expiry))
|
|
27
|
+
result = ["rejected", "card expired"];
|
|
28
|
+
else if (amount + card.spent[1] > card.limit)
|
|
29
|
+
result = ["rejected", "exceeds limit"];
|
|
30
|
+
else
|
|
31
|
+
result = "processing";
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
Card.check = check;
|
|
35
|
+
function toAddress(card) {
|
|
36
|
+
return {
|
|
37
|
+
type: "card",
|
|
38
|
+
id: card.id,
|
|
39
|
+
expiry: card.details.expiry,
|
|
40
|
+
holder: card.details.holder,
|
|
41
|
+
iin: card.details.iin,
|
|
42
|
+
last4: card.details.last4,
|
|
43
|
+
scheme: card.scheme,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
Card.toAddress = toAddress;
|
|
24
47
|
Card.type = ModelCard.type.omit(["limit"]).extend({
|
|
25
48
|
age: isly.object({ days: isly.number(), minutes: isly.number() }),
|
|
26
49
|
limit: isly.number(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.js","sourceRoot":"../","sources":["Rule/State/Card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"Card.js","sourceRoot":"../","sources":["Rule/State/Card.ts"],"names":[],"mappings":"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"}
|