@pax2pay/model-banking 0.0.4 → 0.0.5
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/Account/Creatable.ts +8 -0
- package/Balances/index.ts +5 -8
- package/Balances/type.ts +7 -0
- package/Event/index.ts +34 -3
- package/Monitoring/Decision.ts +29 -0
- package/Monitoring/Reviewable.ts +38 -0
- package/Monitoring/index.ts +2 -0
- package/Operation/Creatable.ts +2 -8
- package/Operation/index.ts +0 -39
- package/Organization/Creatable.ts +12 -1
- package/Organization/index.ts +5 -7
- package/Rail/Type.ts +1 -1
- package/Rail/index.ts +1 -1
- package/Transaction/Creatable.ts +0 -1
- package/Transaction/index.ts +8 -4
- package/dist/Account/Creatable.d.ts +1 -0
- package/dist/Account/Creatable.js +7 -0
- package/dist/Account/Creatable.js.map +1 -1
- package/dist/Balances/index.d.ts +4 -5
- package/dist/Balances/index.js +3 -8
- package/dist/Balances/index.js.map +1 -1
- package/dist/Balances/type.d.ts +4 -0
- package/dist/Balances/type.js +8 -0
- package/dist/Balances/type.js.map +1 -0
- package/dist/Event/index.d.ts +9 -2
- package/dist/Event/index.js +39 -3
- package/dist/Event/index.js.map +1 -1
- package/dist/Monitoring/Decision.d.ts +17 -0
- package/dist/Monitoring/Decision.js +21 -0
- package/dist/Monitoring/Decision.js.map +1 -0
- package/dist/Monitoring/Reviewable.d.ts +19 -0
- package/dist/Monitoring/Reviewable.js +26 -0
- package/dist/Monitoring/Reviewable.js.map +1 -0
- package/dist/Monitoring/index.d.ts +2 -0
- package/dist/Monitoring/index.js +3 -0
- package/dist/Monitoring/index.js.map +1 -0
- package/dist/Operation/Creatable.d.ts +2 -4
- package/dist/Operation/Creatable.js +0 -8
- package/dist/Operation/Creatable.js.map +1 -1
- package/dist/Operation/index.d.ts +0 -3
- package/dist/Operation/index.js +0 -31
- package/dist/Operation/index.js.map +1 -1
- package/dist/Organization/Creatable.d.ts +5 -0
- package/dist/Organization/Creatable.js +8 -1
- package/dist/Organization/Creatable.js.map +1 -1
- package/dist/Organization/index.d.ts +1 -0
- package/dist/Organization/index.js +5 -5
- package/dist/Organization/index.js.map +1 -1
- package/dist/Rail/Type.d.ts +1 -1
- package/dist/Rail/index.d.ts +1 -1
- package/dist/Transaction/Creatable.js +0 -1
- package/dist/Transaction/Creatable.js.map +1 -1
- package/dist/Transaction/index.d.ts +2 -1
- package/dist/Transaction/index.js +6 -2
- package/dist/Transaction/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/index.ts +1 -0
- package/package.json +12 -12
package/Account/Creatable.ts
CHANGED
|
@@ -6,4 +6,12 @@ export namespace Creatable {
|
|
|
6
6
|
export function is(value: Creatable | any): value is Creatable {
|
|
7
7
|
return typeof value == "object" && typeof value.name == "string"
|
|
8
8
|
}
|
|
9
|
+
export function isPartial(value: Partial<Creatable> | any): value is Partial<Creatable> {
|
|
10
|
+
return (
|
|
11
|
+
value &&
|
|
12
|
+
typeof value == "object" &&
|
|
13
|
+
Object.entries(value).length > 0 &&
|
|
14
|
+
Object.entries(value).every(([k, v]) => k == "name" && typeof v == "string")
|
|
15
|
+
)
|
|
16
|
+
}
|
|
9
17
|
}
|
package/Balances/index.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as isoly from "isoly"
|
|
2
|
+
import { BalanceEntry } from "./type"
|
|
2
3
|
|
|
3
|
-
export type Balances = Partial<Record<isoly.Currency, Partial<Record<
|
|
4
|
+
export type Balances = Partial<Record<isoly.Currency, Partial<Record<BalanceEntry, number>>>>
|
|
4
5
|
|
|
5
6
|
export namespace Balances {
|
|
6
7
|
export function is(value: Balances | any): value is Balances {
|
|
@@ -11,15 +12,11 @@ export namespace Balances {
|
|
|
11
12
|
isoly.Currency.is(k) &&
|
|
12
13
|
typeof v == "object" &&
|
|
13
14
|
Object.entries(v as Record<string, unknown>).every(
|
|
14
|
-
([kInner, vInner]) =>
|
|
15
|
+
([kInner, vInner]) => BalanceEntry.is(kInner) && typeof vInner == "number"
|
|
15
16
|
)
|
|
16
17
|
)
|
|
17
18
|
)
|
|
18
19
|
}
|
|
19
|
-
export type Entry =
|
|
20
|
-
export
|
|
21
|
-
export function is(value: any | Entry): value is Entry {
|
|
22
|
-
return typeof value == "string" && (value == "actual" || value == "reserved")
|
|
23
|
-
}
|
|
24
|
-
}
|
|
20
|
+
export type Entry = BalanceEntry
|
|
21
|
+
export const Entry = BalanceEntry
|
|
25
22
|
}
|
package/Balances/type.ts
ADDED
package/Event/index.ts
CHANGED
|
@@ -12,7 +12,7 @@ export interface Event {
|
|
|
12
12
|
data: any
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
type Entity = "account" | "transaction" | "operation" | "rail" | "organization" | "authorization"
|
|
15
|
+
type Entity = "account" | "transaction" | "operation" | "rail" | "organization" | "authorization" | "supplier"
|
|
16
16
|
export namespace Event {
|
|
17
17
|
export namespace Account {
|
|
18
18
|
export function created(account: modelAccount, organization: string): Event {
|
|
@@ -44,12 +44,12 @@ export namespace Event {
|
|
|
44
44
|
data: transaction,
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
-
export function
|
|
47
|
+
export function finalized(transaction: modelTransaction, organization: string, account: string): Event {
|
|
48
48
|
return {
|
|
49
49
|
organization: organization,
|
|
50
50
|
account: account,
|
|
51
51
|
entity: "transaction",
|
|
52
|
-
action: "
|
|
52
|
+
action: "finalized",
|
|
53
53
|
data: transaction,
|
|
54
54
|
}
|
|
55
55
|
}
|
|
@@ -62,5 +62,36 @@ export namespace Event {
|
|
|
62
62
|
data: transaction,
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
|
+
export function validated(transaction: modelTransaction, organization: string, account: string): Event {
|
|
66
|
+
return {
|
|
67
|
+
organization: organization,
|
|
68
|
+
account: account,
|
|
69
|
+
entity: "transaction",
|
|
70
|
+
action: "validated",
|
|
71
|
+
data: transaction,
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export function expired(transaction: modelTransaction, organization: string, account: string): Event {
|
|
75
|
+
return {
|
|
76
|
+
organization: organization,
|
|
77
|
+
account: account,
|
|
78
|
+
entity: "transaction",
|
|
79
|
+
action: "expired",
|
|
80
|
+
data: transaction,
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
export namespace Supplier {
|
|
85
|
+
export namespace PaxGiro {
|
|
86
|
+
export function response(response: any, organization: string, account: string): Event {
|
|
87
|
+
return {
|
|
88
|
+
organization: organization,
|
|
89
|
+
account: account,
|
|
90
|
+
entity: "supplier",
|
|
91
|
+
action: "transaction response",
|
|
92
|
+
data: response,
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
65
96
|
}
|
|
66
97
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as isoly from "isoly"
|
|
2
|
+
import { Transaction } from "../Transaction"
|
|
3
|
+
|
|
4
|
+
export interface Decision extends Decision.Creatable {
|
|
5
|
+
transaction: Transaction
|
|
6
|
+
timestamp: isoly.DateTime
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export namespace Decision {
|
|
10
|
+
export function is(value: any | Decision): value is Decision {
|
|
11
|
+
return Creatable.is({ ...value }) && Transaction.is(value.transaction) && isoly.DateTime.is(value.timestamp)
|
|
12
|
+
}
|
|
13
|
+
export interface Creatable {
|
|
14
|
+
author: string
|
|
15
|
+
status: "approved" | "rejected"
|
|
16
|
+
comment: string
|
|
17
|
+
}
|
|
18
|
+
export namespace Creatable {
|
|
19
|
+
export function is(value: any | Creatable): value is Creatable {
|
|
20
|
+
return (
|
|
21
|
+
value &&
|
|
22
|
+
typeof value == "object" &&
|
|
23
|
+
typeof value.author == "string" &&
|
|
24
|
+
typeof value.comment == "string" &&
|
|
25
|
+
(value.status == "rejected" || value.status == "approved")
|
|
26
|
+
)
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as cryptly from "cryptly"
|
|
2
|
+
import { Transaction } from "../Transaction"
|
|
3
|
+
|
|
4
|
+
export interface Reviewable {
|
|
5
|
+
transaction: Transaction
|
|
6
|
+
direction: "incoming" | "outgoing"
|
|
7
|
+
organization: cryptly.Identifier
|
|
8
|
+
account: cryptly.Identifier
|
|
9
|
+
rule: string
|
|
10
|
+
}
|
|
11
|
+
export namespace Reviewable {
|
|
12
|
+
export function open(
|
|
13
|
+
transaction: Transaction,
|
|
14
|
+
direction: "incoming" | "outgoing",
|
|
15
|
+
organization: cryptly.Identifier,
|
|
16
|
+
account: cryptly.Identifier,
|
|
17
|
+
rule: string
|
|
18
|
+
) {
|
|
19
|
+
return {
|
|
20
|
+
transaction: transaction,
|
|
21
|
+
direction: direction,
|
|
22
|
+
organization: organization,
|
|
23
|
+
account: account,
|
|
24
|
+
rule: rule,
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export function is(value: Reviewable | any): value is Reviewable {
|
|
28
|
+
return (
|
|
29
|
+
value &&
|
|
30
|
+
typeof value == "object" &&
|
|
31
|
+
Transaction.is(value.transaction) &&
|
|
32
|
+
cryptly.Identifier.is(value.organization) &&
|
|
33
|
+
cryptly.Identifier.is(value.account) &&
|
|
34
|
+
typeof value.rule == "string" &&
|
|
35
|
+
(value.direction == "incoming" || value.direction == "outgoing")
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
}
|
package/Operation/Creatable.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as isoly from "isoly"
|
|
2
2
|
import { Balances } from "../Balances"
|
|
3
3
|
|
|
4
|
-
export type
|
|
4
|
+
export type Status = "pending" | "success" | "failed" //| "cancelled"
|
|
5
5
|
|
|
6
|
-
type ChangeType = { type: "add" | "subtract"; amount: number; status:
|
|
6
|
+
type ChangeType = { type: "add" | "subtract"; amount: number; status: Status }
|
|
7
7
|
export type Change = Partial<Record<Balances.Entry, ChangeType>>
|
|
8
8
|
|
|
9
9
|
export namespace Change {
|
|
@@ -72,10 +72,4 @@ export namespace Creatable {
|
|
|
72
72
|
Change.is(value.change)
|
|
73
73
|
)
|
|
74
74
|
}
|
|
75
|
-
export function openReservation(currency: isoly.Currency, amount: number): Creatable {
|
|
76
|
-
return { currency: currency, change: { reserved: { type: "add", amount: amount, status: "pending" } } }
|
|
77
|
-
}
|
|
78
|
-
export function openDeposit(currency: isoly.Currency, amount: number): Creatable {
|
|
79
|
-
return { currency: currency, change: { actual: { type: "add", amount: amount, status: "pending" } } }
|
|
80
|
-
}
|
|
81
75
|
}
|
package/Operation/index.ts
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import * as cryptly from "cryptly"
|
|
2
|
-
import * as gracely from "gracely"
|
|
3
2
|
import * as isoly from "isoly"
|
|
4
3
|
import { Creatable as OperationCreatable } from "./Creatable"
|
|
5
4
|
|
|
6
5
|
export interface Operation extends OperationCreatable {
|
|
7
6
|
id: cryptly.Identifier
|
|
8
7
|
created: isoly.DateTime
|
|
9
|
-
//index?: number
|
|
10
8
|
}
|
|
11
9
|
export namespace Operation {
|
|
12
10
|
export function is(value: any | Operation): value is Operation {
|
|
@@ -27,43 +25,6 @@ export namespace Operation {
|
|
|
27
25
|
}
|
|
28
26
|
}
|
|
29
27
|
|
|
30
|
-
export function reverse(operation: Operation): Operation {
|
|
31
|
-
const id = cryptly.Identifier.generate(8)
|
|
32
|
-
const timestamp = isoly.DateTime.now()
|
|
33
|
-
const reverseChange = Object.fromEntries(
|
|
34
|
-
Object.entries(operation.change)
|
|
35
|
-
.filter(([k, v]) => v.status == "success")
|
|
36
|
-
.map(([k, v]) => [k, { type: v.type == "add" ? "subtract" : "add", amount: v.amount, status: "pending" }])
|
|
37
|
-
)
|
|
38
|
-
return {
|
|
39
|
-
...operation,
|
|
40
|
-
id: id,
|
|
41
|
-
created: timestamp,
|
|
42
|
-
change: reverseChange,
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
export function openFinalization(reservation: Operation): Operation | gracely.Error {
|
|
46
|
-
return typeof reservation.change.actual == "object" ||
|
|
47
|
-
typeof reservation.change.reserved == "undefined" ||
|
|
48
|
-
reservation.change.reserved.status == "failed"
|
|
49
|
-
? gracely.client.invalidContent("Operation", "Amount is not reserved.")
|
|
50
|
-
: {
|
|
51
|
-
id: cryptly.Identifier.generate(8),
|
|
52
|
-
created: isoly.DateTime.now(),
|
|
53
|
-
currency: reservation.currency,
|
|
54
|
-
change: {
|
|
55
|
-
actual: { type: "subtract", amount: reservation.change.reserved.amount, status: "pending" },
|
|
56
|
-
reserved: { type: "subtract", amount: reservation.change.reserved.amount, status: "pending" },
|
|
57
|
-
},
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// export function id(operation: Operation): string {
|
|
62
|
-
// return `${operation.created}/${operation.id}`
|
|
63
|
-
// }
|
|
64
|
-
|
|
65
28
|
export type Creatable = OperationCreatable
|
|
66
29
|
export const Creatable = OperationCreatable
|
|
67
30
|
}
|
|
68
|
-
|
|
69
|
-
//export { ChangeType, Change }
|
|
@@ -1,9 +1,20 @@
|
|
|
1
1
|
export interface Creatable {
|
|
2
2
|
name: string
|
|
3
|
+
realm: "test" | "uk" | "eu"
|
|
4
|
+
rule: { incoming: string; outgoing: string }
|
|
3
5
|
}
|
|
4
6
|
|
|
5
7
|
export namespace Creatable {
|
|
6
8
|
export function is(value: any | Creatable): value is Creatable {
|
|
7
|
-
return
|
|
9
|
+
return (
|
|
10
|
+
value &&
|
|
11
|
+
typeof value == "object" &&
|
|
12
|
+
typeof value.name == "string" &&
|
|
13
|
+
(value.realm == "test" || value.realm == "uk" || value.realm == "eu") &&
|
|
14
|
+
value.rule &&
|
|
15
|
+
typeof value.rule == "object" &&
|
|
16
|
+
typeof value.rule.incoming == "string" &&
|
|
17
|
+
typeof value.rule.outgoing == "string"
|
|
18
|
+
)
|
|
8
19
|
}
|
|
9
20
|
}
|
package/Organization/index.ts
CHANGED
|
@@ -7,17 +7,15 @@ export interface Organization extends OrganizationCreatable {
|
|
|
7
7
|
|
|
8
8
|
export namespace Organization {
|
|
9
9
|
export function is(value: Organization | any): value is Organization {
|
|
10
|
-
return
|
|
11
|
-
value &&
|
|
12
|
-
typeof value == "object" &&
|
|
13
|
-
cryptly.Identifier.is(value.id, 8) &&
|
|
14
|
-
typeof value.name == "string" &&
|
|
15
|
-
typeof value.value == "number"
|
|
16
|
-
)
|
|
10
|
+
return value && OrganizationCreatable.is({ ...value }) && typeof value.id == "string"
|
|
17
11
|
}
|
|
18
12
|
export function fromCreatable(organization: Creatable): Organization {
|
|
19
13
|
return { ...organization, id: cryptly.Identifier.generate(8) }
|
|
20
14
|
}
|
|
15
|
+
export function isIdentifier(value: cryptly.Identifier | any): value is cryptly.Identifier {
|
|
16
|
+
return cryptly.Identifier.is(value, 8)
|
|
17
|
+
}
|
|
18
|
+
|
|
21
19
|
export type Creatable = OrganizationCreatable
|
|
22
20
|
export const Creatable = OrganizationCreatable
|
|
23
21
|
}
|
package/Rail/Type.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export type Type = "
|
|
1
|
+
export type Type = "paxgiro" | "internal" | "iban" //| "swedish" |
|
package/Rail/index.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { Internal as RailInternal } from "./internal"
|
|
|
3
3
|
import { PaxGiro as RailPaxGiro } from "./PaxGiro"
|
|
4
4
|
import { Type as RailType } from "./Type"
|
|
5
5
|
|
|
6
|
-
export type Rail = RailPaxGiro |
|
|
6
|
+
export type Rail = RailPaxGiro | RailInternal | RailIban
|
|
7
7
|
|
|
8
8
|
export namespace Rail {
|
|
9
9
|
export function parse(value: string): Rail | undefined {
|
package/Transaction/Creatable.ts
CHANGED
|
@@ -20,7 +20,6 @@ export namespace Creatable {
|
|
|
20
20
|
!Rail.hasSameIdentifiers(value.account, value.counterpart) &&
|
|
21
21
|
isoly.Currency.is(value.currency) &&
|
|
22
22
|
typeof value.amount == "number" &&
|
|
23
|
-
value.amount > 0 &&
|
|
24
23
|
(value.description == undefined || typeof value.description == "string") &&
|
|
25
24
|
(value.operations == undefined ||
|
|
26
25
|
(Array.isArray(value.operations) && value.operations.every(Operation.Creatable.is)))
|
package/Transaction/index.ts
CHANGED
|
@@ -5,10 +5,10 @@ import { Creatable as TransactionCreatable } from "./Creatable"
|
|
|
5
5
|
|
|
6
6
|
export interface Transaction extends TransactionCreatable {
|
|
7
7
|
readonly id: cryptly.Identifier
|
|
8
|
-
readonly
|
|
8
|
+
readonly posted: isoly.DateTime
|
|
9
|
+
readonly transacted?: isoly.DateTime
|
|
9
10
|
type: "actual" | "available"
|
|
10
11
|
balance: number
|
|
11
|
-
//status: "pending" | "settled" | "rejected" | "cancelled"
|
|
12
12
|
operations: Operation[]
|
|
13
13
|
}
|
|
14
14
|
|
|
@@ -18,7 +18,7 @@ export namespace Transaction {
|
|
|
18
18
|
typeof value == "object" &&
|
|
19
19
|
TransactionCreatable.is({ ...value }) &&
|
|
20
20
|
cryptly.Identifier.is(value.id, 8) &&
|
|
21
|
-
isoly.DateTime.is(value.
|
|
21
|
+
isoly.DateTime.is(value.posted) &&
|
|
22
22
|
(value.type == "actual" || value.type == "available") &&
|
|
23
23
|
typeof value.balance == "number" &&
|
|
24
24
|
Array.isArray(value.operations) &&
|
|
@@ -32,9 +32,13 @@ export namespace Transaction {
|
|
|
32
32
|
): Transaction {
|
|
33
33
|
const id = cryptly.Identifier.generate(8)
|
|
34
34
|
const timestamp = isoly.DateTime.now()
|
|
35
|
+
if ("id" in transaction)
|
|
36
|
+
delete transaction.id
|
|
37
|
+
if ("posted" in transaction)
|
|
38
|
+
delete transaction.posted
|
|
35
39
|
return {
|
|
36
40
|
id: id,
|
|
37
|
-
|
|
41
|
+
posted: timestamp,
|
|
38
42
|
type: type,
|
|
39
43
|
balance: result,
|
|
40
44
|
...transaction,
|
|
@@ -4,5 +4,12 @@ export var Creatable;
|
|
|
4
4
|
return typeof value == "object" && typeof value.name == "string";
|
|
5
5
|
}
|
|
6
6
|
Creatable.is = is;
|
|
7
|
+
function isPartial(value) {
|
|
8
|
+
return (value &&
|
|
9
|
+
typeof value == "object" &&
|
|
10
|
+
Object.entries(value).length > 0 &&
|
|
11
|
+
Object.entries(value).every(([k, v]) => k == "name" && typeof v == "string"));
|
|
12
|
+
}
|
|
13
|
+
Creatable.isPartial = isPartial;
|
|
7
14
|
})(Creatable || (Creatable = {}));
|
|
8
15
|
//# sourceMappingURL=Creatable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Creatable.js","sourceRoot":"../","sources":["Account/Creatable.ts"],"names":[],"mappings":"AAIA,MAAM,KAAW,SAAS,
|
|
1
|
+
{"version":3,"file":"Creatable.js","sourceRoot":"../","sources":["Account/Creatable.ts"],"names":[],"mappings":"AAIA,MAAM,KAAW,SAAS,CAYzB;AAZD,WAAiB,SAAS;IACzB,SAAgB,EAAE,CAAC,KAAsB;QACxC,OAAO,OAAO,KAAK,IAAI,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAA;IACjE,CAAC;IAFe,YAAE,KAEjB,CAAA;IACD,SAAgB,SAAS,CAAC,KAA+B;QACxD,OAAO,CACN,KAAK;YACL,OAAO,KAAK,IAAI,QAAQ;YACxB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;YAChC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,MAAM,IAAI,OAAO,CAAC,IAAI,QAAQ,CAAC,CAC5E,CAAA;IACF,CAAC;IAPe,mBAAS,YAOxB,CAAA;AACF,CAAC,EAZgB,SAAS,KAAT,SAAS,QAYzB"}
|
package/dist/Balances/index.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import * as isoly from "isoly";
|
|
2
|
-
|
|
2
|
+
import { BalanceEntry } from "./type";
|
|
3
|
+
export type Balances = Partial<Record<isoly.Currency, Partial<Record<BalanceEntry, number>>>>;
|
|
3
4
|
export declare namespace Balances {
|
|
4
5
|
function is(value: Balances | any): value is Balances;
|
|
5
|
-
type Entry =
|
|
6
|
-
|
|
7
|
-
function is(value: any | Entry): value is Entry;
|
|
8
|
-
}
|
|
6
|
+
type Entry = BalanceEntry;
|
|
7
|
+
const Entry: typeof BalanceEntry;
|
|
9
8
|
}
|
package/dist/Balances/index.js
CHANGED
|
@@ -1,19 +1,14 @@
|
|
|
1
1
|
import * as isoly from "isoly";
|
|
2
|
+
import { BalanceEntry } from "./type";
|
|
2
3
|
export var Balances;
|
|
3
4
|
(function (Balances) {
|
|
4
5
|
function is(value) {
|
|
5
6
|
return (typeof value == "object" &&
|
|
6
7
|
Object.entries(value).every(([k, v]) => isoly.Currency.is(k) &&
|
|
7
8
|
typeof v == "object" &&
|
|
8
|
-
Object.entries(v).every(([kInner, vInner]) =>
|
|
9
|
+
Object.entries(v).every(([kInner, vInner]) => BalanceEntry.is(kInner) && typeof vInner == "number")));
|
|
9
10
|
}
|
|
10
11
|
Balances.is = is;
|
|
11
|
-
|
|
12
|
-
(function (Entry) {
|
|
13
|
-
function is(value) {
|
|
14
|
-
return typeof value == "string" && (value == "actual" || value == "reserved");
|
|
15
|
-
}
|
|
16
|
-
Entry.is = is;
|
|
17
|
-
})(Entry = Balances.Entry || (Balances.Entry = {}));
|
|
12
|
+
Balances.Entry = BalanceEntry;
|
|
18
13
|
})(Balances || (Balances = {}));
|
|
19
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Balances/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Balances/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAIrC,MAAM,KAAW,QAAQ,CAgBxB;AAhBD,WAAiB,QAAQ;IACxB,SAAgB,EAAE,CAAC,KAAqB;QACvC,OAAO,CACN,OAAO,KAAK,IAAI,QAAQ;YACxB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAC1B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CACV,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpB,OAAO,CAAC,IAAI,QAAQ;gBACpB,MAAM,CAAC,OAAO,CAAC,CAA4B,CAAC,CAAC,KAAK,CACjD,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,OAAO,MAAM,IAAI,QAAQ,CAC1E,CACF,CACD,CAAA;IACF,CAAC;IAZe,WAAE,KAYjB,CAAA;IAEY,cAAK,GAAG,YAAY,CAAA;AAClC,CAAC,EAhBgB,QAAQ,KAAR,QAAQ,QAgBxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.js","sourceRoot":"../","sources":["Balances/type.ts"],"names":[],"mappings":"AAEA,MAAM,KAAW,YAAY,CAI5B;AAJD,WAAiB,YAAY;IAC5B,SAAgB,EAAE,CAAC,KAAyB;QAC3C,OAAO,OAAO,KAAK,IAAI,QAAQ,IAAI,CAAC,KAAK,IAAI,QAAQ,IAAI,KAAK,IAAI,UAAU,CAAC,CAAA;IAC9E,CAAC;IAFe,eAAE,KAEjB,CAAA;AACF,CAAC,EAJgB,YAAY,KAAZ,YAAY,QAI5B"}
|
package/dist/Event/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export interface Event {
|
|
|
10
10
|
action: string;
|
|
11
11
|
data: any;
|
|
12
12
|
}
|
|
13
|
-
type Entity = "account" | "transaction" | "operation" | "rail" | "organization" | "authorization";
|
|
13
|
+
type Entity = "account" | "transaction" | "operation" | "rail" | "organization" | "authorization" | "supplier";
|
|
14
14
|
export declare namespace Event {
|
|
15
15
|
namespace Account {
|
|
16
16
|
function created(account: modelAccount, organization: string): Event;
|
|
@@ -26,8 +26,15 @@ export declare namespace Event {
|
|
|
26
26
|
}
|
|
27
27
|
namespace Transaction {
|
|
28
28
|
function initiated(transaction: modelTransaction, organization: string, account: string): Event;
|
|
29
|
-
function
|
|
29
|
+
function finalized(transaction: modelTransaction, organization: string, account: string): Event;
|
|
30
30
|
function incoming(transaction: modelTransaction, organization: string, account: string): Event;
|
|
31
|
+
function validated(transaction: modelTransaction, organization: string, account: string): Event;
|
|
32
|
+
function expired(transaction: modelTransaction, organization: string, account: string): Event;
|
|
33
|
+
}
|
|
34
|
+
namespace Supplier {
|
|
35
|
+
namespace PaxGiro {
|
|
36
|
+
function response(response: any, organization: string, account: string): Event;
|
|
37
|
+
}
|
|
31
38
|
}
|
|
32
39
|
}
|
|
33
40
|
export {};
|
package/dist/Event/index.js
CHANGED
|
@@ -40,16 +40,16 @@ export var Event;
|
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
42
|
Transaction.initiated = initiated;
|
|
43
|
-
function
|
|
43
|
+
function finalized(transaction, organization, account) {
|
|
44
44
|
return {
|
|
45
45
|
organization: organization,
|
|
46
46
|
account: account,
|
|
47
47
|
entity: "transaction",
|
|
48
|
-
action: "
|
|
48
|
+
action: "finalized",
|
|
49
49
|
data: transaction,
|
|
50
50
|
};
|
|
51
51
|
}
|
|
52
|
-
Transaction.
|
|
52
|
+
Transaction.finalized = finalized;
|
|
53
53
|
function incoming(transaction, organization, account) {
|
|
54
54
|
return {
|
|
55
55
|
organization: organization,
|
|
@@ -60,6 +60,42 @@ export var Event;
|
|
|
60
60
|
};
|
|
61
61
|
}
|
|
62
62
|
Transaction.incoming = incoming;
|
|
63
|
+
function validated(transaction, organization, account) {
|
|
64
|
+
return {
|
|
65
|
+
organization: organization,
|
|
66
|
+
account: account,
|
|
67
|
+
entity: "transaction",
|
|
68
|
+
action: "validated",
|
|
69
|
+
data: transaction,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
Transaction.validated = validated;
|
|
73
|
+
function expired(transaction, organization, account) {
|
|
74
|
+
return {
|
|
75
|
+
organization: organization,
|
|
76
|
+
account: account,
|
|
77
|
+
entity: "transaction",
|
|
78
|
+
action: "expired",
|
|
79
|
+
data: transaction,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
Transaction.expired = expired;
|
|
63
83
|
})(Transaction = Event.Transaction || (Event.Transaction = {}));
|
|
84
|
+
let Supplier;
|
|
85
|
+
(function (Supplier) {
|
|
86
|
+
let PaxGiro;
|
|
87
|
+
(function (PaxGiro) {
|
|
88
|
+
function response(response, organization, account) {
|
|
89
|
+
return {
|
|
90
|
+
organization: organization,
|
|
91
|
+
account: account,
|
|
92
|
+
entity: "supplier",
|
|
93
|
+
action: "transaction response",
|
|
94
|
+
data: response,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
PaxGiro.response = response;
|
|
98
|
+
})(PaxGiro = Supplier.PaxGiro || (Supplier.PaxGiro = {}));
|
|
99
|
+
})(Supplier = Event.Supplier || (Event.Supplier = {}));
|
|
64
100
|
})(Event || (Event = {}));
|
|
65
101
|
//# sourceMappingURL=index.js.map
|
package/dist/Event/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Event/index.ts"],"names":[],"mappings":"AAeA,MAAM,KAAW,KAAK,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Event/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as isoly from "isoly";
|
|
2
|
+
import { Transaction } from "../Transaction";
|
|
3
|
+
export interface Decision extends Decision.Creatable {
|
|
4
|
+
transaction: Transaction;
|
|
5
|
+
timestamp: isoly.DateTime;
|
|
6
|
+
}
|
|
7
|
+
export declare namespace Decision {
|
|
8
|
+
function is(value: any | Decision): value is Decision;
|
|
9
|
+
interface Creatable {
|
|
10
|
+
author: string;
|
|
11
|
+
status: "approved" | "rejected";
|
|
12
|
+
comment: string;
|
|
13
|
+
}
|
|
14
|
+
namespace Creatable {
|
|
15
|
+
function is(value: any | Creatable): value is Creatable;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as isoly from "isoly";
|
|
2
|
+
import { Transaction } from "../Transaction";
|
|
3
|
+
export var Decision;
|
|
4
|
+
(function (Decision) {
|
|
5
|
+
function is(value) {
|
|
6
|
+
return Creatable.is({ ...value }) && Transaction.is(value.transaction) && isoly.DateTime.is(value.timestamp);
|
|
7
|
+
}
|
|
8
|
+
Decision.is = is;
|
|
9
|
+
let Creatable;
|
|
10
|
+
(function (Creatable) {
|
|
11
|
+
function is(value) {
|
|
12
|
+
return (value &&
|
|
13
|
+
typeof value == "object" &&
|
|
14
|
+
typeof value.author == "string" &&
|
|
15
|
+
typeof value.comment == "string" &&
|
|
16
|
+
(value.status == "rejected" || value.status == "approved"));
|
|
17
|
+
}
|
|
18
|
+
Creatable.is = is;
|
|
19
|
+
})(Creatable = Decision.Creatable || (Decision.Creatable = {}));
|
|
20
|
+
})(Decision || (Decision = {}));
|
|
21
|
+
//# sourceMappingURL=Decision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Decision.js","sourceRoot":"../","sources":["Monitoring/Decision.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAO5C,MAAM,KAAW,QAAQ,CAoBxB;AApBD,WAAiB,QAAQ;IACxB,SAAgB,EAAE,CAAC,KAAqB;QACvC,OAAO,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,IAAI,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC7G,CAAC;IAFe,WAAE,KAEjB,CAAA;IAMD,IAAiB,SAAS,CAUzB;IAVD,WAAiB,SAAS;QACzB,SAAgB,EAAE,CAAC,KAAsB;YACxC,OAAO,CACN,KAAK;gBACL,OAAO,KAAK,IAAI,QAAQ;gBACxB,OAAO,KAAK,CAAC,MAAM,IAAI,QAAQ;gBAC/B,OAAO,KAAK,CAAC,OAAO,IAAI,QAAQ;gBAChC,CAAC,KAAK,CAAC,MAAM,IAAI,UAAU,IAAI,KAAK,CAAC,MAAM,IAAI,UAAU,CAAC,CAC1D,CAAA;QACF,CAAC;QARe,YAAE,KAQjB,CAAA;IACF,CAAC,EAVgB,SAAS,GAAT,kBAAS,KAAT,kBAAS,QAUzB;AACF,CAAC,EApBgB,QAAQ,KAAR,QAAQ,QAoBxB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as cryptly from "cryptly";
|
|
2
|
+
import { Transaction } from "../Transaction";
|
|
3
|
+
export interface Reviewable {
|
|
4
|
+
transaction: Transaction;
|
|
5
|
+
direction: "incoming" | "outgoing";
|
|
6
|
+
organization: cryptly.Identifier;
|
|
7
|
+
account: cryptly.Identifier;
|
|
8
|
+
rule: string;
|
|
9
|
+
}
|
|
10
|
+
export declare namespace Reviewable {
|
|
11
|
+
function open(transaction: Transaction, direction: "incoming" | "outgoing", organization: cryptly.Identifier, account: cryptly.Identifier, rule: string): {
|
|
12
|
+
transaction: Transaction;
|
|
13
|
+
direction: "incoming" | "outgoing";
|
|
14
|
+
organization: string;
|
|
15
|
+
account: string;
|
|
16
|
+
rule: string;
|
|
17
|
+
};
|
|
18
|
+
function is(value: Reviewable | any): value is Reviewable;
|
|
19
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as cryptly from "cryptly";
|
|
2
|
+
import { Transaction } from "../Transaction";
|
|
3
|
+
export var Reviewable;
|
|
4
|
+
(function (Reviewable) {
|
|
5
|
+
function open(transaction, direction, organization, account, rule) {
|
|
6
|
+
return {
|
|
7
|
+
transaction: transaction,
|
|
8
|
+
direction: direction,
|
|
9
|
+
organization: organization,
|
|
10
|
+
account: account,
|
|
11
|
+
rule: rule,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
Reviewable.open = open;
|
|
15
|
+
function is(value) {
|
|
16
|
+
return (value &&
|
|
17
|
+
typeof value == "object" &&
|
|
18
|
+
Transaction.is(value.transaction) &&
|
|
19
|
+
cryptly.Identifier.is(value.organization) &&
|
|
20
|
+
cryptly.Identifier.is(value.account) &&
|
|
21
|
+
typeof value.rule == "string" &&
|
|
22
|
+
(value.direction == "incoming" || value.direction == "outgoing"));
|
|
23
|
+
}
|
|
24
|
+
Reviewable.is = is;
|
|
25
|
+
})(Reviewable || (Reviewable = {}));
|
|
26
|
+
//# sourceMappingURL=Reviewable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Reviewable.js","sourceRoot":"../","sources":["Monitoring/Reviewable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAS5C,MAAM,KAAW,UAAU,CA2B1B;AA3BD,WAAiB,UAAU;IAC1B,SAAgB,IAAI,CACnB,WAAwB,EACxB,SAAkC,EAClC,YAAgC,EAChC,OAA2B,EAC3B,IAAY;QAEZ,OAAO;YACN,WAAW,EAAE,WAAW;YACxB,SAAS,EAAE,SAAS;YACpB,YAAY,EAAE,YAAY;YAC1B,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,IAAI;SACV,CAAA;IACF,CAAC;IAde,eAAI,OAcnB,CAAA;IACD,SAAgB,EAAE,CAAC,KAAuB;QACzC,OAAO,CACN,KAAK;YACL,OAAO,KAAK,IAAI,QAAQ;YACxB,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;YACjC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;YACzC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;YACpC,OAAO,KAAK,CAAC,IAAI,IAAI,QAAQ;YAC7B,CAAC,KAAK,CAAC,SAAS,IAAI,UAAU,IAAI,KAAK,CAAC,SAAS,IAAI,UAAU,CAAC,CAChE,CAAA;IACF,CAAC;IAVe,aAAE,KAUjB,CAAA;AACF,CAAC,EA3BgB,UAAU,KAAV,UAAU,QA2B1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Monitoring/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as isoly from "isoly";
|
|
2
2
|
import { Balances } from "../Balances";
|
|
3
|
-
export type
|
|
3
|
+
export type Status = "pending" | "success" | "failed";
|
|
4
4
|
type ChangeType = {
|
|
5
5
|
type: "add" | "subtract";
|
|
6
6
|
amount: number;
|
|
7
|
-
status:
|
|
7
|
+
status: Status;
|
|
8
8
|
};
|
|
9
9
|
export type Change = Partial<Record<Balances.Entry, ChangeType>>;
|
|
10
10
|
export declare namespace Change {
|
|
@@ -42,7 +42,5 @@ export interface Creatable {
|
|
|
42
42
|
}
|
|
43
43
|
export declare namespace Creatable {
|
|
44
44
|
function is(value: any | Creatable): value is Creatable;
|
|
45
|
-
function openReservation(currency: isoly.Currency, amount: number): Creatable;
|
|
46
|
-
function openDeposit(currency: isoly.Currency, amount: number): Creatable;
|
|
47
45
|
}
|
|
48
46
|
export {};
|
|
@@ -49,13 +49,5 @@ export var Creatable;
|
|
|
49
49
|
Change.is(value.change));
|
|
50
50
|
}
|
|
51
51
|
Creatable.is = is;
|
|
52
|
-
function openReservation(currency, amount) {
|
|
53
|
-
return { currency: currency, change: { reserved: { type: "add", amount: amount, status: "pending" } } };
|
|
54
|
-
}
|
|
55
|
-
Creatable.openReservation = openReservation;
|
|
56
|
-
function openDeposit(currency, amount) {
|
|
57
|
-
return { currency: currency, change: { actual: { type: "add", amount: amount, status: "pending" } } };
|
|
58
|
-
}
|
|
59
|
-
Creatable.openDeposit = openDeposit;
|
|
60
52
|
})(Creatable || (Creatable = {}));
|
|
61
53
|
//# sourceMappingURL=Creatable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Creatable.js","sourceRoot":"../","sources":["Operation/Creatable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,MAAM,KAAW,MAAM,CAkDtB;AAlDD,WAAiB,MAAM;IACtB,SAAgB,EAAE,CAAC,KAAmB;QACrC,OAAO,CACN,OAAO,KAAK,IAAI,QAAQ;YACxB,CAAC,KAAK,CAAC,MAAM,IAAI,SAAS,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzD,CAAC,KAAK,CAAC,QAAQ,IAAI,SAAS,IAAI,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC7D,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAChC,CAAA;IACF,CAAC;IAPe,SAAE,KAOjB,CAAA;IACD,SAAgB,YAAY,CAAC,KAAuB;QACnD,OAAO,CACN,OAAO,KAAK,IAAI,QAAQ;YACxB,OAAO,KAAK,CAAC,MAAM,IAAI,QAAQ;YAC/B,KAAK,CAAC,MAAM,GAAG,CAAC;YAChB,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,UAAU,CAAC;YACjD,OAAO,KAAK,CAAC,MAAM,IAAI,QAAQ;YAC/B,CAAC,KAAK,CAAC,MAAM,IAAI,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,CACpF,CAAA;IACF,CAAC;IATe,mBAAY,eAS3B,CAAA;IAOD,SAAgB,aAAa,CAAC,KAAwB;QACrD,OAAO,CACN,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;YACvB,KAAK,CAAC,MAAM,IAAI,SAAS;YACzB,OAAO,KAAK,CAAC,QAAQ,IAAI,QAAQ;YACjC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,KAAK,CAC5B,CAAA;IACF,CAAC;IAPe,oBAAa,gBAO5B,CAAA;IACD,SAAgB,SAAS,CAAC,KAAoB;QAC7C,OAAO,CACN,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;YACvB,KAAK,CAAC,QAAQ,IAAI,SAAS;YAC3B,OAAO,KAAK,CAAC,MAAM,IAAI,QAAQ;YAC/B,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,KAAK,CAC1B,CAAA;IACF,CAAC;IAPe,gBAAS,YAOxB,CAAA;IACD,SAAgB,cAAc,CAAC,KAAyB;QACvD,OAAO,CACN,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC,MAAM,IAAI,QAAQ;YAC/B,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,UAAU;YAC/B,OAAO,KAAK,CAAC,QAAQ,IAAI,QAAQ;YACjC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,UAAU,CACjC,CAAA;IACF,CAAC;IARe,qBAAc,iBAQ7B,CAAA;AACF,CAAC,EAlDgB,MAAM,KAAN,MAAM,QAkDtB;AAOD,MAAM,KAAW,SAAS,
|
|
1
|
+
{"version":3,"file":"Creatable.js","sourceRoot":"../","sources":["Operation/Creatable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,MAAM,KAAW,MAAM,CAkDtB;AAlDD,WAAiB,MAAM;IACtB,SAAgB,EAAE,CAAC,KAAmB;QACrC,OAAO,CACN,OAAO,KAAK,IAAI,QAAQ;YACxB,CAAC,KAAK,CAAC,MAAM,IAAI,SAAS,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzD,CAAC,KAAK,CAAC,QAAQ,IAAI,SAAS,IAAI,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC7D,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAChC,CAAA;IACF,CAAC;IAPe,SAAE,KAOjB,CAAA;IACD,SAAgB,YAAY,CAAC,KAAuB;QACnD,OAAO,CACN,OAAO,KAAK,IAAI,QAAQ;YACxB,OAAO,KAAK,CAAC,MAAM,IAAI,QAAQ;YAC/B,KAAK,CAAC,MAAM,GAAG,CAAC;YAChB,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,UAAU,CAAC;YACjD,OAAO,KAAK,CAAC,MAAM,IAAI,QAAQ;YAC/B,CAAC,KAAK,CAAC,MAAM,IAAI,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,CACpF,CAAA;IACF,CAAC;IATe,mBAAY,eAS3B,CAAA;IAOD,SAAgB,aAAa,CAAC,KAAwB;QACrD,OAAO,CACN,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;YACvB,KAAK,CAAC,MAAM,IAAI,SAAS;YACzB,OAAO,KAAK,CAAC,QAAQ,IAAI,QAAQ;YACjC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,KAAK,CAC5B,CAAA;IACF,CAAC;IAPe,oBAAa,gBAO5B,CAAA;IACD,SAAgB,SAAS,CAAC,KAAoB;QAC7C,OAAO,CACN,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;YACvB,KAAK,CAAC,QAAQ,IAAI,SAAS;YAC3B,OAAO,KAAK,CAAC,MAAM,IAAI,QAAQ;YAC/B,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,KAAK,CAC1B,CAAA;IACF,CAAC;IAPe,gBAAS,YAOxB,CAAA;IACD,SAAgB,cAAc,CAAC,KAAyB;QACvD,OAAO,CACN,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC,MAAM,IAAI,QAAQ;YAC/B,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,UAAU;YAC/B,OAAO,KAAK,CAAC,QAAQ,IAAI,QAAQ;YACjC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,UAAU,CACjC,CAAA;IACF,CAAC;IARe,qBAAc,iBAQ7B,CAAA;AACF,CAAC,EAlDgB,MAAM,KAAN,MAAM,QAkDtB;AAOD,MAAM,KAAW,SAAS,CASzB;AATD,WAAiB,SAAS;IACzB,SAAgB,EAAE,CAAC,KAAsB;QACxC,OAAO,CACN,OAAO,KAAK,IAAI,QAAQ;YACxB,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;YACjC,OAAO,KAAK,CAAC,MAAM,IAAI,QAAQ;YAC/B,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CACvB,CAAA;IACF,CAAC;IAPe,YAAE,KAOjB,CAAA;AACF,CAAC,EATgB,SAAS,KAAT,SAAS,QASzB"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as cryptly from "cryptly";
|
|
2
|
-
import * as gracely from "gracely";
|
|
3
2
|
import * as isoly from "isoly";
|
|
4
3
|
import { Creatable as OperationCreatable } from "./Creatable";
|
|
5
4
|
export interface Operation extends OperationCreatable {
|
|
@@ -9,8 +8,6 @@ export interface Operation extends OperationCreatable {
|
|
|
9
8
|
export declare namespace Operation {
|
|
10
9
|
function is(value: any | Operation): value is Operation;
|
|
11
10
|
function fromCreatable(operation: Creatable): Operation;
|
|
12
|
-
function reverse(operation: Operation): Operation;
|
|
13
|
-
function openFinalization(reservation: Operation): Operation | gracely.Error;
|
|
14
11
|
type Creatable = OperationCreatable;
|
|
15
12
|
const Creatable: typeof OperationCreatable;
|
|
16
13
|
}
|
package/dist/Operation/index.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as cryptly from "cryptly";
|
|
2
|
-
import * as gracely from "gracely";
|
|
3
2
|
import * as isoly from "isoly";
|
|
4
3
|
import { Creatable as OperationCreatable } from "./Creatable";
|
|
5
4
|
export var Operation;
|
|
@@ -21,36 +20,6 @@ export var Operation;
|
|
|
21
20
|
};
|
|
22
21
|
}
|
|
23
22
|
Operation.fromCreatable = fromCreatable;
|
|
24
|
-
function reverse(operation) {
|
|
25
|
-
const id = cryptly.Identifier.generate(8);
|
|
26
|
-
const timestamp = isoly.DateTime.now();
|
|
27
|
-
const reverseChange = Object.fromEntries(Object.entries(operation.change)
|
|
28
|
-
.filter(([k, v]) => v.status == "success")
|
|
29
|
-
.map(([k, v]) => [k, { type: v.type == "add" ? "subtract" : "add", amount: v.amount, status: "pending" }]));
|
|
30
|
-
return {
|
|
31
|
-
...operation,
|
|
32
|
-
id: id,
|
|
33
|
-
created: timestamp,
|
|
34
|
-
change: reverseChange,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
Operation.reverse = reverse;
|
|
38
|
-
function openFinalization(reservation) {
|
|
39
|
-
return typeof reservation.change.actual == "object" ||
|
|
40
|
-
typeof reservation.change.reserved == "undefined" ||
|
|
41
|
-
reservation.change.reserved.status == "failed"
|
|
42
|
-
? gracely.client.invalidContent("Operation", "Amount is not reserved.")
|
|
43
|
-
: {
|
|
44
|
-
id: cryptly.Identifier.generate(8),
|
|
45
|
-
created: isoly.DateTime.now(),
|
|
46
|
-
currency: reservation.currency,
|
|
47
|
-
change: {
|
|
48
|
-
actual: { type: "subtract", amount: reservation.change.reserved.amount, status: "pending" },
|
|
49
|
-
reserved: { type: "subtract", amount: reservation.change.reserved.amount, status: "pending" },
|
|
50
|
-
},
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
Operation.openFinalization = openFinalization;
|
|
54
23
|
Operation.Creatable = OperationCreatable;
|
|
55
24
|
})(Operation || (Operation = {}));
|
|
56
25
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Operation/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAClC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Operation/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAM7D,MAAM,KAAW,SAAS,CAqBzB;AArBD,WAAiB,SAAS;IACzB,SAAgB,EAAE,CAAC,KAAsB;QACxC,OAAO,CACN,OAAO,KAAK,IAAI,QAAQ;YACxB,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAClC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;YAChC,kBAAkB,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CACnC,CAAA;IACF,CAAC;IAPe,YAAE,KAOjB,CAAA;IACD,SAAgB,aAAa,CAAC,SAAoB;QACjD,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QACzC,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAA;QACtC,OAAO;YACN,GAAG,SAAS;YACZ,EAAE,EAAE,EAAE;YACN,OAAO,EAAE,SAAS;SAClB,CAAA;IACF,CAAC;IARe,uBAAa,gBAQ5B,CAAA;IAGY,mBAAS,GAAG,kBAAkB,CAAA;AAC5C,CAAC,EArBgB,SAAS,KAAT,SAAS,QAqBzB"}
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
export var Creatable;
|
|
2
2
|
(function (Creatable) {
|
|
3
3
|
function is(value) {
|
|
4
|
-
return
|
|
4
|
+
return (value &&
|
|
5
|
+
typeof value == "object" &&
|
|
6
|
+
typeof value.name == "string" &&
|
|
7
|
+
(value.realm == "test" || value.realm == "uk" || value.realm == "eu") &&
|
|
8
|
+
value.rule &&
|
|
9
|
+
typeof value.rule == "object" &&
|
|
10
|
+
typeof value.rule.incoming == "string" &&
|
|
11
|
+
typeof value.rule.outgoing == "string");
|
|
5
12
|
}
|
|
6
13
|
Creatable.is = is;
|
|
7
14
|
})(Creatable || (Creatable = {}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Creatable.js","sourceRoot":"../","sources":["Organization/Creatable.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Creatable.js","sourceRoot":"../","sources":["Organization/Creatable.ts"],"names":[],"mappings":"AAMA,MAAM,KAAW,SAAS,CAazB;AAbD,WAAiB,SAAS;IACzB,SAAgB,EAAE,CAAC,KAAsB;QACxC,OAAO,CACN,KAAK;YACL,OAAO,KAAK,IAAI,QAAQ;YACxB,OAAO,KAAK,CAAC,IAAI,IAAI,QAAQ;YAC7B,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC;YACrE,KAAK,CAAC,IAAI;YACV,OAAO,KAAK,CAAC,IAAI,IAAI,QAAQ;YAC7B,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ;YACtC,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CACtC,CAAA;IACF,CAAC;IAXe,YAAE,KAWjB,CAAA;AACF,CAAC,EAbgB,SAAS,KAAT,SAAS,QAazB"}
|
|
@@ -6,6 +6,7 @@ export interface Organization extends OrganizationCreatable {
|
|
|
6
6
|
export declare namespace Organization {
|
|
7
7
|
function is(value: Organization | any): value is Organization;
|
|
8
8
|
function fromCreatable(organization: Creatable): Organization;
|
|
9
|
+
function isIdentifier(value: cryptly.Identifier | any): value is cryptly.Identifier;
|
|
9
10
|
type Creatable = OrganizationCreatable;
|
|
10
11
|
const Creatable: typeof OrganizationCreatable;
|
|
11
12
|
}
|
|
@@ -3,17 +3,17 @@ import { Creatable as OrganizationCreatable } from "./Creatable";
|
|
|
3
3
|
export var Organization;
|
|
4
4
|
(function (Organization) {
|
|
5
5
|
function is(value) {
|
|
6
|
-
return
|
|
7
|
-
typeof value == "object" &&
|
|
8
|
-
cryptly.Identifier.is(value.id, 8) &&
|
|
9
|
-
typeof value.name == "string" &&
|
|
10
|
-
typeof value.value == "number");
|
|
6
|
+
return value && OrganizationCreatable.is({ ...value }) && typeof value.id == "string";
|
|
11
7
|
}
|
|
12
8
|
Organization.is = is;
|
|
13
9
|
function fromCreatable(organization) {
|
|
14
10
|
return { ...organization, id: cryptly.Identifier.generate(8) };
|
|
15
11
|
}
|
|
16
12
|
Organization.fromCreatable = fromCreatable;
|
|
13
|
+
function isIdentifier(value) {
|
|
14
|
+
return cryptly.Identifier.is(value, 8);
|
|
15
|
+
}
|
|
16
|
+
Organization.isIdentifier = isIdentifier;
|
|
17
17
|
Organization.Creatable = OrganizationCreatable;
|
|
18
18
|
})(Organization || (Organization = {}));
|
|
19
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Organization/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,SAAS,IAAI,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAMhE,MAAM,KAAW,YAAY,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Organization/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,SAAS,IAAI,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAMhE,MAAM,KAAW,YAAY,CAa5B;AAbD,WAAiB,YAAY;IAC5B,SAAgB,EAAE,CAAC,KAAyB;QAC3C,OAAO,KAAK,IAAI,qBAAqB,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE,IAAI,QAAQ,CAAA;IACtF,CAAC;IAFe,eAAE,KAEjB,CAAA;IACD,SAAgB,aAAa,CAAC,YAAuB;QACpD,OAAO,EAAE,GAAG,YAAY,EAAE,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;IAC/D,CAAC;IAFe,0BAAa,gBAE5B,CAAA;IACD,SAAgB,YAAY,CAAC,KAA+B;QAC3D,OAAO,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IACvC,CAAC;IAFe,yBAAY,eAE3B,CAAA;IAGY,sBAAS,GAAG,qBAAqB,CAAA;AAC/C,CAAC,EAbgB,YAAY,KAAZ,YAAY,QAa5B"}
|
package/dist/Rail/Type.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export type Type = "
|
|
1
|
+
export type Type = "paxgiro" | "internal" | "iban";
|
package/dist/Rail/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { Iban as RailIban } from "./Iban";
|
|
|
2
2
|
import { Internal as RailInternal } from "./internal";
|
|
3
3
|
import { PaxGiro as RailPaxGiro } from "./PaxGiro";
|
|
4
4
|
import { Type as RailType } from "./Type";
|
|
5
|
-
export type Rail = RailPaxGiro |
|
|
5
|
+
export type Rail = RailPaxGiro | RailInternal | RailIban;
|
|
6
6
|
export declare namespace Rail {
|
|
7
7
|
function parse(value: string): Rail | undefined;
|
|
8
8
|
function stringify(rail: Rail): string;
|
|
@@ -10,7 +10,6 @@ export var Creatable;
|
|
|
10
10
|
!Rail.hasSameIdentifiers(value.account, value.counterpart) &&
|
|
11
11
|
isoly.Currency.is(value.currency) &&
|
|
12
12
|
typeof value.amount == "number" &&
|
|
13
|
-
value.amount > 0 &&
|
|
14
13
|
(value.description == undefined || typeof value.description == "string") &&
|
|
15
14
|
(value.operations == undefined ||
|
|
16
15
|
(Array.isArray(value.operations) && value.operations.every(Operation.Creatable.is))));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Creatable.js","sourceRoot":"../","sources":["Transaction/Creatable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAW9B,MAAM,KAAW,SAAS,
|
|
1
|
+
{"version":3,"file":"Creatable.js","sourceRoot":"../","sources":["Transaction/Creatable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAW9B,MAAM,KAAW,SAAS,CAczB;AAdD,WAAiB,SAAS;IACzB,SAAgB,EAAE,CAAC,KAAsB;QACxC,OAAO,CACN,OAAO,KAAK,IAAI,QAAQ;YACxB,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;YACtB,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;YAC1B,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC;YAC1D,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;YACjC,OAAO,KAAK,CAAC,MAAM,IAAI,QAAQ;YAC/B,CAAC,KAAK,CAAC,WAAW,IAAI,SAAS,IAAI,OAAO,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC;YACxE,CAAC,KAAK,CAAC,UAAU,IAAI,SAAS;gBAC7B,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CACrF,CAAA;IACF,CAAC;IAZe,YAAE,KAYjB,CAAA;AACF,CAAC,EAdgB,SAAS,KAAT,SAAS,QAczB"}
|
|
@@ -4,7 +4,8 @@ import { Operation } from "../Operation";
|
|
|
4
4
|
import { Creatable as TransactionCreatable } from "./Creatable";
|
|
5
5
|
export interface Transaction extends TransactionCreatable {
|
|
6
6
|
readonly id: cryptly.Identifier;
|
|
7
|
-
readonly
|
|
7
|
+
readonly posted: isoly.DateTime;
|
|
8
|
+
readonly transacted?: isoly.DateTime;
|
|
8
9
|
type: "actual" | "available";
|
|
9
10
|
balance: number;
|
|
10
11
|
operations: Operation[];
|
|
@@ -8,7 +8,7 @@ export var Transaction;
|
|
|
8
8
|
return (typeof value == "object" &&
|
|
9
9
|
TransactionCreatable.is({ ...value }) &&
|
|
10
10
|
cryptly.Identifier.is(value.id, 8) &&
|
|
11
|
-
isoly.DateTime.is(value.
|
|
11
|
+
isoly.DateTime.is(value.posted) &&
|
|
12
12
|
(value.type == "actual" || value.type == "available") &&
|
|
13
13
|
typeof value.balance == "number" &&
|
|
14
14
|
Array.isArray(value.operations) &&
|
|
@@ -18,9 +18,13 @@ export var Transaction;
|
|
|
18
18
|
function fromCreatable(transaction, type, result) {
|
|
19
19
|
const id = cryptly.Identifier.generate(8);
|
|
20
20
|
const timestamp = isoly.DateTime.now();
|
|
21
|
+
if ("id" in transaction)
|
|
22
|
+
delete transaction.id;
|
|
23
|
+
if ("posted" in transaction)
|
|
24
|
+
delete transaction.posted;
|
|
21
25
|
return {
|
|
22
26
|
id: id,
|
|
23
|
-
|
|
27
|
+
posted: timestamp,
|
|
24
28
|
type: type,
|
|
25
29
|
balance: result,
|
|
26
30
|
...transaction,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Transaction/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,SAAS,IAAI,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAW/D,MAAM,KAAW,WAAW,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Transaction/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,SAAS,IAAI,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAW/D,MAAM,KAAW,WAAW,CAuC3B;AAvCD,WAAiB,WAAW;IAC3B,SAAgB,EAAE,CAAC,KAAwB;QAC1C,OAAO,CACN,OAAO,KAAK,IAAI,QAAQ;YACxB,oBAAoB,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;YACrC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAClC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;YAC/B,CAAC,KAAK,CAAC,IAAI,IAAI,QAAQ,IAAI,KAAK,CAAC,IAAI,IAAI,WAAW,CAAC;YACrD,OAAO,KAAK,CAAC,OAAO,IAAI,QAAQ;YAChC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;YAC/B,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CACpC,CAAA;IACF,CAAC;IAXe,cAAE,KAWjB,CAAA;IACD,SAAgB,aAAa,CAC5B,WAA8D,EAC9D,IAA4B,EAC5B,MAAc;QAEd,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QACzC,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAA;QACtC,IAAI,IAAI,IAAI,WAAW;YACtB,OAAO,WAAW,CAAC,EAAE,CAAA;QACtB,IAAI,QAAQ,IAAI,WAAW;YAC1B,OAAO,WAAW,CAAC,MAAM,CAAA;QAC1B,OAAO;YACN,EAAE,EAAE,EAAE;YACN,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,MAAM;YACf,GAAG,WAAW;YACd,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC;SAC/D,CAAA;IACF,CAAC;IAnBe,yBAAa,gBAmB5B,CAAA;IACD,SAAgB,YAAY,CAAC,KAA+B;QAC3D,OAAO,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IACvC,CAAC;IAFe,wBAAY,eAE3B,CAAA;IAGY,qBAAS,GAAG,oBAAoB,CAAA;AAC9C,CAAC,EAvCgB,WAAW,KAAX,WAAW,QAuC3B"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA"}
|
package/index.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pax2pay/model-banking",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"description": "Library containing data model types and functions for the Pax2Pay Banking API.",
|
|
5
5
|
"author": "Pax2Pay Ltd",
|
|
6
6
|
"license": "MIT",
|
|
@@ -54,17 +54,17 @@
|
|
|
54
54
|
"clean": "rimraf dist node_modules coverage"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
|
-
"@types/jest": "^29.
|
|
58
|
-
"@typescript-eslint/eslint-plugin": "5.
|
|
59
|
-
"@typescript-eslint/parser": "5.
|
|
60
|
-
"eslint": "^8.
|
|
61
|
-
"eslint-plugin-prettierx": "github:utily/eslint-plugin-prettierx#utily-
|
|
62
|
-
"eslint-plugin-simple-import-sort": "^
|
|
63
|
-
"jest": "^29.
|
|
64
|
-
"prettierx": "github:utily/prettierx#utily-
|
|
65
|
-
"rimraf": "^
|
|
66
|
-
"ts-jest": "^29.0.
|
|
67
|
-
"typescript": "^4.9.
|
|
57
|
+
"@types/jest": "^29.4.0",
|
|
58
|
+
"@typescript-eslint/eslint-plugin": "5.52.0",
|
|
59
|
+
"@typescript-eslint/parser": "5.52.0",
|
|
60
|
+
"eslint": "^8.34.0",
|
|
61
|
+
"eslint-plugin-prettierx": "github:utily/eslint-plugin-prettierx#utily-20221229",
|
|
62
|
+
"eslint-plugin-simple-import-sort": "^10.0.0",
|
|
63
|
+
"jest": "^29.4.2",
|
|
64
|
+
"prettierx": "github:utily/prettierx#utily-20221229",
|
|
65
|
+
"rimraf": "^4.1.2",
|
|
66
|
+
"ts-jest": "^29.0.5",
|
|
67
|
+
"typescript": "^4.9.5"
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
70
|
"cryptly": "^3.0.2",
|