@pax2pay/model-banking 0.1.359 → 0.1.361
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/Analytics/Configuration/Base.ts +4 -3
- package/Analytics/Configuration/Ledger/Base.ts +2 -1
- package/Analytics/Event/AuditLog.ts +2 -3
- package/Analytics/Event/Base.ts +1 -2
- package/Analytics/Event/Ledger/Account.ts +2 -3
- package/Analytics/Event/Ledger/Operation.ts +2 -3
- package/Analytics/Event/Ledger/Organization.ts +2 -3
- package/Analytics/Event/Ledger/Rule.ts +2 -3
- package/Analytics/Event/Ledger/Transaction.ts +2 -3
- package/Operation/Changes.ts +55 -6
- package/Operation/Creatable.ts +0 -9
- package/Operation/index.ts +14 -8
- package/dist/Analytics/Configuration/Base.d.ts +4 -3
- package/dist/Analytics/Configuration/Base.js +2 -2
- package/dist/Analytics/Configuration/Base.js.map +1 -1
- package/dist/Analytics/Configuration/Ledger/Base.d.ts +4 -3
- package/dist/Analytics/Configuration/Ledger/Base.js.map +1 -1
- package/dist/Analytics/Configuration/Transaction.d.ts +2 -2
- package/dist/Analytics/Event/AuditLog.d.ts +4 -1
- package/dist/Analytics/Event/AuditLog.js +1 -2
- package/dist/Analytics/Event/AuditLog.js.map +1 -1
- package/dist/Analytics/Event/Base.d.ts +4 -2
- package/dist/Analytics/Event/Ledger/Account.d.ts +4 -1
- package/dist/Analytics/Event/Ledger/Account.js +1 -2
- package/dist/Analytics/Event/Ledger/Account.js.map +1 -1
- package/dist/Analytics/Event/Ledger/Operation.d.ts +4 -1
- package/dist/Analytics/Event/Ledger/Operation.js +1 -2
- package/dist/Analytics/Event/Ledger/Operation.js.map +1 -1
- package/dist/Analytics/Event/Ledger/Organization.d.ts +4 -1
- package/dist/Analytics/Event/Ledger/Organization.js +1 -2
- package/dist/Analytics/Event/Ledger/Organization.js.map +1 -1
- package/dist/Analytics/Event/Ledger/Rule.d.ts +4 -1
- package/dist/Analytics/Event/Ledger/Rule.js +1 -2
- package/dist/Analytics/Event/Ledger/Rule.js.map +1 -1
- package/dist/Analytics/Event/Ledger/Transaction.d.ts +4 -1
- package/dist/Analytics/Event/Ledger/Transaction.js +1 -2
- package/dist/Analytics/Event/Ledger/Transaction.js.map +1 -1
- package/dist/Operation/Changes.d.ts +27 -5
- package/dist/Operation/Changes.js +38 -3
- package/dist/Operation/Changes.js.map +1 -1
- package/dist/Operation/Creatable.js +0 -5
- package/dist/Operation/Creatable.js.map +1 -1
- package/dist/Operation/index.d.ts +2 -8
- package/dist/Operation/index.js +10 -0
- package/dist/Operation/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { filter, listener } from "cloudly-analytics-common"
|
|
2
2
|
import { Event } from "../Event"
|
|
3
|
+
import type { FlattenKeys } from ".";
|
|
3
4
|
|
|
4
5
|
export namespace Base {
|
|
5
|
-
export type Selectors =
|
|
6
|
+
export type Selectors = FlattenKeys<Required<Omit<Event.Base<any>, "value">>>
|
|
6
7
|
| "version"
|
|
7
8
|
| "source"
|
|
8
9
|
export const mapping = {
|
|
9
10
|
realm: "realm",
|
|
10
|
-
entityType: "
|
|
11
|
-
entity: "entity",
|
|
11
|
+
entityType: "entity.type",
|
|
12
|
+
entity: "entity.id",
|
|
12
13
|
action: "action",
|
|
13
14
|
created: "created",
|
|
14
15
|
isError: { selector: "isError", transform: "boolean" },
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { filter, listener } from "cloudly-analytics-common"
|
|
2
2
|
import { Event } from "../../Event"
|
|
3
|
+
import { FlattenKeys } from ".."
|
|
3
4
|
import { Base as ConfigBase } from "../Base"
|
|
4
5
|
|
|
5
6
|
export namespace Base {
|
|
6
|
-
export type Selectors =
|
|
7
|
+
export type Selectors = FlattenKeys<Required<Event.Ledger.Base<any>>>
|
|
7
8
|
| "version"
|
|
8
9
|
| "source"
|
|
9
10
|
export const mapping = {
|
|
@@ -4,15 +4,14 @@ import { Realm } from "../../Realm"
|
|
|
4
4
|
import { Base } from "./Base"
|
|
5
5
|
|
|
6
6
|
export type AuditLog = Base<Audit> & {
|
|
7
|
-
|
|
7
|
+
entity: { type: "auditLog"; id: string }
|
|
8
8
|
action: "created"
|
|
9
9
|
}
|
|
10
10
|
export namespace AuditLog {
|
|
11
11
|
export function create(value: Audit, realm: Realm, action: AuditLog["action"]): AuditLog {
|
|
12
12
|
return {
|
|
13
13
|
realm,
|
|
14
|
-
|
|
15
|
-
entity: value.id,
|
|
14
|
+
entity: { type: "auditLog", id: value.id },
|
|
16
15
|
action,
|
|
17
16
|
created: isoly.DateTime.now(),
|
|
18
17
|
value,
|
package/Analytics/Event/Base.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { Realm } from "../../../Realm"
|
|
|
4
4
|
import { Base } from "./Base"
|
|
5
5
|
|
|
6
6
|
export interface Account extends Base<modelAccount> {
|
|
7
|
-
|
|
7
|
+
entity: { type: "account"; id: string }
|
|
8
8
|
action: "created" | "updated"
|
|
9
9
|
meta: { accountKey: string }
|
|
10
10
|
}
|
|
@@ -12,8 +12,7 @@ export namespace Account {
|
|
|
12
12
|
export function create(value: modelAccount, organization: string, realm: Realm, action: Account["action"]): Account {
|
|
13
13
|
return {
|
|
14
14
|
realm,
|
|
15
|
-
entity: value.id,
|
|
16
|
-
entityType: "account",
|
|
15
|
+
entity: { type: "account", id: value.id },
|
|
17
16
|
organization,
|
|
18
17
|
action,
|
|
19
18
|
created: isoly.DateTime.now(),
|
|
@@ -4,7 +4,7 @@ import { Realm } from "../../../Realm"
|
|
|
4
4
|
import { Base } from "./Base"
|
|
5
5
|
|
|
6
6
|
export interface Operation extends Base<modelOperation> {
|
|
7
|
-
|
|
7
|
+
entity: { type: "operation"; id: string }
|
|
8
8
|
action: "created"
|
|
9
9
|
}
|
|
10
10
|
export namespace Operation {
|
|
@@ -17,8 +17,7 @@ export namespace Operation {
|
|
|
17
17
|
): Operation {
|
|
18
18
|
return {
|
|
19
19
|
realm,
|
|
20
|
-
|
|
21
|
-
entity: value.signature ?? "",
|
|
20
|
+
entity: { type: "operation", id: value.signature ?? "" },
|
|
22
21
|
organization,
|
|
23
22
|
account,
|
|
24
23
|
action,
|
|
@@ -4,15 +4,14 @@ import { Realm } from "../../../Realm"
|
|
|
4
4
|
import { Base } from "./Base"
|
|
5
5
|
|
|
6
6
|
export interface Organization extends Base<modelOrganization> {
|
|
7
|
-
|
|
7
|
+
entity: { type: "organization"; id: string }
|
|
8
8
|
action: "created" | "updated"
|
|
9
9
|
}
|
|
10
10
|
export namespace Organization {
|
|
11
11
|
export function create(value: modelOrganization, realm: Realm, action: Organization["action"]): Organization {
|
|
12
12
|
return {
|
|
13
13
|
realm,
|
|
14
|
-
|
|
15
|
-
entity: value.code,
|
|
14
|
+
entity: { type: "organization", id: value.code },
|
|
16
15
|
action,
|
|
17
16
|
created: isoly.DateTime.now(),
|
|
18
17
|
value,
|
|
@@ -4,7 +4,7 @@ import { Rule as modelRule } from "../../../Rule"
|
|
|
4
4
|
import { Base } from "./Base"
|
|
5
5
|
|
|
6
6
|
export interface Rule extends Base<modelRule> {
|
|
7
|
-
|
|
7
|
+
entity: { type: "rule"; id: string }
|
|
8
8
|
action: "created" | "updated" | "removed"
|
|
9
9
|
meta: {
|
|
10
10
|
ruleType: modelRule.Kind
|
|
@@ -22,8 +22,7 @@ export namespace Rule {
|
|
|
22
22
|
): Rule {
|
|
23
23
|
return {
|
|
24
24
|
realm,
|
|
25
|
-
|
|
26
|
-
entity: value.code,
|
|
25
|
+
entity: { type: "rule", id: value.code },
|
|
27
26
|
organization,
|
|
28
27
|
account,
|
|
29
28
|
action,
|
|
@@ -4,7 +4,7 @@ import { Transaction as modelTransaction } from "../../../Transaction"
|
|
|
4
4
|
import { Base } from "./Base"
|
|
5
5
|
|
|
6
6
|
export interface Transaction extends Base<modelTransaction> {
|
|
7
|
-
|
|
7
|
+
entity: { type: "transaction"; id: string }
|
|
8
8
|
action: "created" | "finalized" | "cancelled" | "failed"
|
|
9
9
|
isError?: true
|
|
10
10
|
}
|
|
@@ -12,8 +12,7 @@ export namespace Transaction {
|
|
|
12
12
|
export function create(value: modelTransaction, realm: Realm, action: Transaction["action"]): Transaction {
|
|
13
13
|
return {
|
|
14
14
|
realm,
|
|
15
|
-
|
|
16
|
-
entity: value.id,
|
|
15
|
+
entity: { type: "transaction", id: value.id },
|
|
17
16
|
action,
|
|
18
17
|
...(action == "failed" ? { isError: true } : {}),
|
|
19
18
|
created: isoly.DateTime.now(),
|
package/Operation/Changes.ts
CHANGED
|
@@ -4,19 +4,68 @@ import { Balances } from "../Balances"
|
|
|
4
4
|
import { Counterbalance as CounterbalanceOperation } from "../Counterbalance"
|
|
5
5
|
import { Change } from "./Change"
|
|
6
6
|
|
|
7
|
-
export type Changes = Partial<Record<
|
|
8
|
-
|
|
7
|
+
export type Changes = Partial<Record<Changes.Entry.Balance, Change>> & Record<Changes.Entry.Counterbalance, Change>
|
|
9
8
|
export namespace Changes {
|
|
9
|
+
export function available(changes: Changes, currency: isoly.Currency): number {
|
|
10
|
+
return Object.entries(changes).reduce(
|
|
11
|
+
(r, [entry, change]) =>
|
|
12
|
+
isoly.Currency.add(
|
|
13
|
+
currency,
|
|
14
|
+
r,
|
|
15
|
+
Balances.Balance.Entry.is(entry) || Entry.Balance.type.is(entry)
|
|
16
|
+
? (entry == "actual" || entry == "available" ? 1 : -1) *
|
|
17
|
+
(change.type == "subtract" ? -1 : 1) *
|
|
18
|
+
(change.amount ?? 0)
|
|
19
|
+
: 0
|
|
20
|
+
),
|
|
21
|
+
0
|
|
22
|
+
)
|
|
23
|
+
}
|
|
24
|
+
export function reserved(changes: Changes, currency: isoly.Currency): number {
|
|
25
|
+
return Object.entries(changes).reduce(
|
|
26
|
+
(r, [entry, change]) =>
|
|
27
|
+
isoly.Currency.add(
|
|
28
|
+
currency,
|
|
29
|
+
r,
|
|
30
|
+
entry == "actual" ||
|
|
31
|
+
entry == "available" ||
|
|
32
|
+
(!Balances.Balance.Entry.is(entry) && !Entry.Balance.type.is(entry))
|
|
33
|
+
? 0
|
|
34
|
+
: (change.type == "subtract" ? -1 : 1) * (change.amount ?? 0)
|
|
35
|
+
),
|
|
36
|
+
0
|
|
37
|
+
)
|
|
38
|
+
}
|
|
39
|
+
export type Sum = Partial<Record<Changes.Entry.Balance, number>> & Record<Changes.Entry.Counterbalance, number>
|
|
40
|
+
export type MaybeLegacy = Changes | Legacy
|
|
41
|
+
export const type = isly.record<Legacy>(isly.string(), Change.type)
|
|
42
|
+
export type Legacy = Partial<Record<Balances.Balance.Entry, Change>> & Record<Changes.Entry.Counterbalance, Change>
|
|
43
|
+
export namespace Legacy {
|
|
44
|
+
export const type = isly.record<Legacy>(isly.string(), Change.type)
|
|
45
|
+
export const is = type.is
|
|
46
|
+
export const flaw = type.flaw
|
|
47
|
+
export type Entry = Balances.Balance.Entry | Legacy.Entry.Counterbalance
|
|
48
|
+
export namespace Entry {
|
|
49
|
+
export type Balance = typeof Balances.Balance.Entry.values[number]
|
|
50
|
+
export namespace Balance {
|
|
51
|
+
export const type = Balances.Balance.Entry.type
|
|
52
|
+
}
|
|
53
|
+
export type Counterbalance = `${CounterbalanceOperation.Link}-${isoly.DateTime}`
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export type Entry = Changes.Entry.Balance | Changes.Entry.Counterbalance
|
|
10
57
|
export namespace Entry {
|
|
58
|
+
export const type = isly.string<Entry>()
|
|
11
59
|
export type Counterbalance = `${CounterbalanceOperation.Link}-${isoly.DateTime}`
|
|
12
60
|
export function split(counterbalance: Counterbalance): [CounterbalanceOperation.Link, isoly.DateTime] {
|
|
13
61
|
const split = counterbalance.split("-")
|
|
14
62
|
const [realm, supplier, account, hour] = [split[0], split[1], split[2], split.slice(3).join("-")]
|
|
15
63
|
return [`${realm}-${supplier}-${account}`, hour]
|
|
16
64
|
}
|
|
65
|
+
export type Balance = typeof Balance.values[number]
|
|
66
|
+
export namespace Balance {
|
|
67
|
+
export const values = ["available", "incomingReserved", "outgoingReserved", "bufferReserved"] as const
|
|
68
|
+
export const type = isly.string<Balance>(values)
|
|
69
|
+
}
|
|
17
70
|
}
|
|
18
|
-
export type Entry = Balances.Balance.Entry | Entry.Counterbalance
|
|
19
|
-
export const type = isly.record<Changes>(isly.string(), Change.type)
|
|
20
|
-
export const is = type.is
|
|
21
|
-
export const flaw = type.flaw
|
|
22
71
|
}
|
package/Operation/Creatable.ts
CHANGED
|
@@ -49,15 +49,6 @@ export namespace Creatable {
|
|
|
49
49
|
currency,
|
|
50
50
|
type: "refund",
|
|
51
51
|
changes: {
|
|
52
|
-
actual: {
|
|
53
|
-
type: "add",
|
|
54
|
-
amount: isoly.Currency.subtract(
|
|
55
|
-
currency,
|
|
56
|
-
isoly.Currency.add(currency, operationAmount, operationFee),
|
|
57
|
-
Math.abs(charge)
|
|
58
|
-
),
|
|
59
|
-
status: "pending",
|
|
60
|
-
},
|
|
61
52
|
incomingReserved: {
|
|
62
53
|
type: "add",
|
|
63
54
|
amount: isoly.Currency.add(currency, operationAmount, operationFee),
|
package/Operation/index.ts
CHANGED
|
@@ -12,17 +12,23 @@ export interface Operation extends OperationCreatable {
|
|
|
12
12
|
previous?: string
|
|
13
13
|
}
|
|
14
14
|
export namespace Operation {
|
|
15
|
+
export function sum(operations: Operation[]): Changes.Sum {
|
|
16
|
+
const result: Changes.Sum = {}
|
|
17
|
+
for (const operation of operations) {
|
|
18
|
+
Object.entries(operation.changes).forEach(([entry, change]) => {
|
|
19
|
+
result[entry as Changes.Entry.Balance] = isoly.Currency[change.type](
|
|
20
|
+
operation.currency,
|
|
21
|
+
result[entry as Changes.Entry.Balance] ?? 0,
|
|
22
|
+
change.amount
|
|
23
|
+
)
|
|
24
|
+
})
|
|
25
|
+
}
|
|
26
|
+
return result
|
|
27
|
+
}
|
|
15
28
|
export const Signer = OperationSigner
|
|
16
29
|
export type Creatable = OperationCreatable
|
|
17
30
|
export const Creatable = OperationCreatable
|
|
18
|
-
export
|
|
19
|
-
export const Changes = OperationChanges
|
|
20
|
-
export namespace Changes {
|
|
21
|
-
export type Entry = OperationChanges.Entry
|
|
22
|
-
export namespace Entry {
|
|
23
|
-
export type Counterbalance = OperationChanges.Entry.Counterbalance
|
|
24
|
-
}
|
|
25
|
-
}
|
|
31
|
+
export import Changes = OperationChanges
|
|
26
32
|
export const type = OperationCreatable.type.extend<Operation>({
|
|
27
33
|
transaction: isly.string(),
|
|
28
34
|
counter: isly.number(),
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { listener } from "cloudly-analytics-common";
|
|
2
2
|
import { Event } from "../Event";
|
|
3
|
+
import type { FlattenKeys } from ".";
|
|
3
4
|
export declare namespace Base {
|
|
4
|
-
type Selectors =
|
|
5
|
+
type Selectors = FlattenKeys<Required<Omit<Event.Base<any>, "value">>> | "version" | "source";
|
|
5
6
|
const mapping: {
|
|
6
7
|
readonly realm: "realm";
|
|
7
|
-
readonly entityType: "
|
|
8
|
-
readonly entity: "entity";
|
|
8
|
+
readonly entityType: "entity.type";
|
|
9
|
+
readonly entity: "entity.id";
|
|
9
10
|
readonly action: "action";
|
|
10
11
|
readonly created: "created";
|
|
11
12
|
readonly isError: {
|
|
@@ -2,8 +2,8 @@ export var Base;
|
|
|
2
2
|
(function (Base) {
|
|
3
3
|
Base.mapping = {
|
|
4
4
|
realm: "realm",
|
|
5
|
-
entityType: "
|
|
6
|
-
entity: "entity",
|
|
5
|
+
entityType: "entity.type",
|
|
6
|
+
entity: "entity.id",
|
|
7
7
|
action: "action",
|
|
8
8
|
created: "created",
|
|
9
9
|
isError: { selector: "isError", transform: "boolean" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Base.js","sourceRoot":"../","sources":["Analytics/Configuration/Base.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Base.js","sourceRoot":"../","sources":["Analytics/Configuration/Base.ts"],"names":[],"mappings":"AAIA,MAAM,KAAW,IAAI,CA0BpB;AA1BD,WAAiB,IAAI;IAIP,YAAO,GAAG;QACtB,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,aAAa;QACzB,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE;QACtD,OAAO,EAAE,SAAS;QAClB,MAAM,EAAE,QAAQ;KAEgD,CAAC;IAErD,WAAM,GAA6C;QAC/D,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;QACjC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;QAClC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE;QACtC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;QAClC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE;QACtC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE;QACtD,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;QAClC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;KACnC,CAAA;AACF,CAAC,EA1BgB,IAAI,KAAJ,IAAI,QA0BpB"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { listener } from "cloudly-analytics-common";
|
|
2
2
|
import { Event } from "../../Event";
|
|
3
|
+
import { FlattenKeys } from "..";
|
|
3
4
|
export declare namespace Base {
|
|
4
|
-
type Selectors =
|
|
5
|
+
type Selectors = FlattenKeys<Required<Event.Ledger.Base<any>>> | "version" | "source";
|
|
5
6
|
const mapping: {
|
|
6
7
|
readonly organization: "organization";
|
|
7
8
|
readonly account: "account";
|
|
@@ -14,8 +15,8 @@ export declare namespace Base {
|
|
|
14
15
|
readonly transform: "stringify";
|
|
15
16
|
};
|
|
16
17
|
readonly realm: "realm";
|
|
17
|
-
readonly entityType: "
|
|
18
|
-
readonly entity: "entity";
|
|
18
|
+
readonly entityType: "entity.type";
|
|
19
|
+
readonly entity: "entity.id";
|
|
19
20
|
readonly action: "action";
|
|
20
21
|
readonly created: "created";
|
|
21
22
|
readonly isError: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Base.js","sourceRoot":"../","sources":["Analytics/Configuration/Ledger/Base.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Base.js","sourceRoot":"../","sources":["Analytics/Configuration/Ledger/Base.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,SAAS,CAAA;AAE5C,MAAM,KAAW,IAAI,CAuBpB;AAvBD,WAAiB,IAAI;IAIP,YAAO,GAAG;QACtB,GAAG,UAAU,CAAC,OAAO;QACrB,YAAY,EAAE,cAAc;QAC5B,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE;QAC9C,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE;KAEY,CAAC;IAErD,WAAM,GAA6C;QAC/D,GAAG,UAAU,CAAC,MAAM;QACpB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE;QAC1D,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE;QACrD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE;gBACzD,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC/B,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;aACjC,EAAC;QACF,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;KACjC,CAAA;AACF,CAAC,EAvBgB,IAAI,KAAJ,IAAI,QAuBpB"}
|
|
@@ -101,8 +101,8 @@ export declare namespace Transaction {
|
|
|
101
101
|
readonly transform: "stringify";
|
|
102
102
|
};
|
|
103
103
|
readonly realm: "realm";
|
|
104
|
-
readonly entityType: "
|
|
105
|
-
readonly entity: "entity";
|
|
104
|
+
readonly entityType: "entity.type";
|
|
105
|
+
readonly entity: "entity.id";
|
|
106
106
|
readonly action: "action";
|
|
107
107
|
readonly created: "created";
|
|
108
108
|
readonly isError: {
|
|
@@ -2,7 +2,10 @@ import { Audit } from "../../Audit";
|
|
|
2
2
|
import { Realm } from "../../Realm";
|
|
3
3
|
import { Base } from "./Base";
|
|
4
4
|
export type AuditLog = Base<Audit> & {
|
|
5
|
-
|
|
5
|
+
entity: {
|
|
6
|
+
type: "auditLog";
|
|
7
|
+
id: string;
|
|
8
|
+
};
|
|
6
9
|
action: "created";
|
|
7
10
|
};
|
|
8
11
|
export declare namespace AuditLog {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuditLog.js","sourceRoot":"../","sources":["Analytics/Event/AuditLog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAS7B,MAAM,KAAW,QAAQ,
|
|
1
|
+
{"version":3,"file":"AuditLog.js","sourceRoot":"../","sources":["Analytics/Event/AuditLog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAS7B,MAAM,KAAW,QAAQ,CAUxB;AAVD,WAAiB,QAAQ;IACxB,SAAgB,MAAM,CAAC,KAAY,EAAE,KAAY,EAAE,MAA0B;QAC5E,OAAO;YACN,KAAK;YACL,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE;YAC1C,MAAM;YACN,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;YAC7B,KAAK;SACL,CAAA;IACF,CAAC;IARe,eAAM,SAQrB,CAAA;AACF,CAAC,EAVgB,QAAQ,KAAR,QAAQ,QAUxB"}
|
|
@@ -2,8 +2,10 @@ import { isoly } from "isoly";
|
|
|
2
2
|
import { Realm } from "../../Realm";
|
|
3
3
|
export type Base<T> = {
|
|
4
4
|
realm: Realm;
|
|
5
|
-
entity:
|
|
6
|
-
|
|
5
|
+
entity: {
|
|
6
|
+
type: string;
|
|
7
|
+
id: string;
|
|
8
|
+
};
|
|
7
9
|
action: string;
|
|
8
10
|
created: isoly.DateTime;
|
|
9
11
|
isError?: true;
|
|
@@ -2,7 +2,10 @@ import { Account as modelAccount } from "../../../Account";
|
|
|
2
2
|
import { Realm } from "../../../Realm";
|
|
3
3
|
import { Base } from "./Base";
|
|
4
4
|
export interface Account extends Base<modelAccount> {
|
|
5
|
-
|
|
5
|
+
entity: {
|
|
6
|
+
type: "account";
|
|
7
|
+
id: string;
|
|
8
|
+
};
|
|
6
9
|
action: "created" | "updated";
|
|
7
10
|
meta: {
|
|
8
11
|
accountKey: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Account.js","sourceRoot":"../","sources":["Analytics/Event/Ledger/Account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAU7B,MAAM,KAAW,OAAO,
|
|
1
|
+
{"version":3,"file":"Account.js","sourceRoot":"../","sources":["Analytics/Event/Ledger/Account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAU7B,MAAM,KAAW,OAAO,CAYvB;AAZD,WAAiB,OAAO;IACvB,SAAgB,MAAM,CAAC,KAAmB,EAAE,YAAoB,EAAE,KAAY,EAAE,MAAyB;QACxG,OAAO;YACN,KAAK;YACL,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE;YACzC,YAAY;YACZ,MAAM;YACN,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;YAC7B,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE,EAAE;YACrC,KAAK;SACL,CAAA;IACF,CAAC;IAVe,cAAM,SAUrB,CAAA;AACF,CAAC,EAZgB,OAAO,KAAP,OAAO,QAYvB"}
|
|
@@ -2,7 +2,10 @@ import { Operation as modelOperation } from "../../../Operation";
|
|
|
2
2
|
import { Realm } from "../../../Realm";
|
|
3
3
|
import { Base } from "./Base";
|
|
4
4
|
export interface Operation extends Base<modelOperation> {
|
|
5
|
-
|
|
5
|
+
entity: {
|
|
6
|
+
type: "operation";
|
|
7
|
+
id: string;
|
|
8
|
+
};
|
|
6
9
|
action: "created";
|
|
7
10
|
}
|
|
8
11
|
export declare namespace Operation {
|
|
@@ -4,8 +4,7 @@ export var Operation;
|
|
|
4
4
|
function create(value, realm, action, organization, account) {
|
|
5
5
|
return {
|
|
6
6
|
realm,
|
|
7
|
-
|
|
8
|
-
entity: value.signature ?? "",
|
|
7
|
+
entity: { type: "operation", id: value.signature ?? "" },
|
|
9
8
|
organization,
|
|
10
9
|
account,
|
|
11
10
|
action,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Operation.js","sourceRoot":"../","sources":["Analytics/Event/Ledger/Operation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAS7B,MAAM,KAAW,SAAS,
|
|
1
|
+
{"version":3,"file":"Operation.js","sourceRoot":"../","sources":["Analytics/Event/Ledger/Operation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAS7B,MAAM,KAAW,SAAS,CAkBzB;AAlBD,WAAiB,SAAS;IACzB,SAAgB,MAAM,CACrB,KAAqB,EACrB,KAAY,EACZ,MAA2B,EAC3B,YAAqB,EACrB,OAAgB;QAEhB,OAAO;YACN,KAAK;YACL,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE;YACxD,YAAY;YACZ,OAAO;YACP,MAAM;YACN,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;YAC7B,KAAK;SACL,CAAA;IACF,CAAC;IAhBe,gBAAM,SAgBrB,CAAA;AACF,CAAC,EAlBgB,SAAS,KAAT,SAAS,QAkBzB"}
|
|
@@ -2,7 +2,10 @@ import { Organization as modelOrganization } from "../../../Organization";
|
|
|
2
2
|
import { Realm } from "../../../Realm";
|
|
3
3
|
import { Base } from "./Base";
|
|
4
4
|
export interface Organization extends Base<modelOrganization> {
|
|
5
|
-
|
|
5
|
+
entity: {
|
|
6
|
+
type: "organization";
|
|
7
|
+
id: string;
|
|
8
|
+
};
|
|
6
9
|
action: "created" | "updated";
|
|
7
10
|
}
|
|
8
11
|
export declare namespace Organization {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Organization.js","sourceRoot":"../","sources":["Analytics/Event/Ledger/Organization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAS7B,MAAM,KAAW,YAAY,
|
|
1
|
+
{"version":3,"file":"Organization.js","sourceRoot":"../","sources":["Analytics/Event/Ledger/Organization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAS7B,MAAM,KAAW,YAAY,CAU5B;AAVD,WAAiB,YAAY;IAC5B,SAAgB,MAAM,CAAC,KAAwB,EAAE,KAAY,EAAE,MAA8B;QAC5F,OAAO;YACN,KAAK;YACL,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE;YAChD,MAAM;YACN,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;YAC7B,KAAK;SACL,CAAA;IACF,CAAC;IARe,mBAAM,SAQrB,CAAA;AACF,CAAC,EAVgB,YAAY,KAAZ,YAAY,QAU5B"}
|
|
@@ -2,7 +2,10 @@ import { Realm } from "../../../Realm";
|
|
|
2
2
|
import { Rule as modelRule } from "../../../Rule";
|
|
3
3
|
import { Base } from "./Base";
|
|
4
4
|
export interface Rule extends Base<modelRule> {
|
|
5
|
-
|
|
5
|
+
entity: {
|
|
6
|
+
type: "rule";
|
|
7
|
+
id: string;
|
|
8
|
+
};
|
|
6
9
|
action: "created" | "updated" | "removed";
|
|
7
10
|
meta: {
|
|
8
11
|
ruleType: modelRule.Kind;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Rule.js","sourceRoot":"../","sources":["Analytics/Event/Ledger/Rule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAc7B,MAAM,KAAW,IAAI,
|
|
1
|
+
{"version":3,"file":"Rule.js","sourceRoot":"../","sources":["Analytics/Event/Ledger/Rule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAc7B,MAAM,KAAW,IAAI,CAuBpB;AAvBD,WAAiB,IAAI;IACpB,SAAgB,MAAM,CACrB,KAAgB,EAChB,KAAY,EACZ,MAAsB,EACtB,YAAqB,EACrB,OAAgB;QAEhB,OAAO;YACN,KAAK;YACL,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE;YACxC,YAAY;YACZ,OAAO;YACP,MAAM;YACN,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;YAC7B,IAAI,EAAE;gBACL,QAAQ,EAAE,KAAK,CAAC,IAAI;gBACpB,YAAY,EAAE,KAAK,CAAC,QAAQ;gBAC5B,UAAU,EAAE,KAAK,CAAC,MAAM;aACxB;YACD,KAAK;SACL,CAAA;IACF,CAAC;IArBe,WAAM,SAqBrB,CAAA;AACF,CAAC,EAvBgB,IAAI,KAAJ,IAAI,QAuBpB"}
|
|
@@ -2,7 +2,10 @@ import { Realm } from "../../../Realm";
|
|
|
2
2
|
import { Transaction as modelTransaction } from "../../../Transaction";
|
|
3
3
|
import { Base } from "./Base";
|
|
4
4
|
export interface Transaction extends Base<modelTransaction> {
|
|
5
|
-
|
|
5
|
+
entity: {
|
|
6
|
+
type: "transaction";
|
|
7
|
+
id: string;
|
|
8
|
+
};
|
|
6
9
|
action: "created" | "finalized" | "cancelled" | "failed";
|
|
7
10
|
isError?: true;
|
|
8
11
|
}
|
|
@@ -4,8 +4,7 @@ export var Transaction;
|
|
|
4
4
|
function create(value, realm, action) {
|
|
5
5
|
return {
|
|
6
6
|
realm,
|
|
7
|
-
|
|
8
|
-
entity: value.id,
|
|
7
|
+
entity: { type: "transaction", id: value.id },
|
|
9
8
|
action,
|
|
10
9
|
...(action == "failed" ? { isError: true } : {}),
|
|
11
10
|
created: isoly.DateTime.now(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transaction.js","sourceRoot":"../","sources":["Analytics/Event/Ledger/Transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAU7B,MAAM,KAAW,WAAW,
|
|
1
|
+
{"version":3,"file":"Transaction.js","sourceRoot":"../","sources":["Analytics/Event/Ledger/Transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAU7B,MAAM,KAAW,WAAW,CAW3B;AAXD,WAAiB,WAAW;IAC3B,SAAgB,MAAM,CAAC,KAAuB,EAAE,KAAY,EAAE,MAA6B;QAC1F,OAAO;YACN,KAAK;YACL,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE;YAC7C,MAAM;YACN,GAAG,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;YAC7B,KAAK;SACL,CAAA;IACF,CAAC;IATe,kBAAM,SASrB,CAAA;AACF,CAAC,EAXgB,WAAW,KAAX,WAAW,QAW3B"}
|
|
@@ -3,14 +3,36 @@ import { isly } from "isly";
|
|
|
3
3
|
import { Balances } from "../Balances";
|
|
4
4
|
import { Counterbalance as CounterbalanceOperation } from "../Counterbalance";
|
|
5
5
|
import { Change } from "./Change";
|
|
6
|
-
export type Changes = Partial<Record<
|
|
6
|
+
export type Changes = Partial<Record<Changes.Entry.Balance, Change>> & Record<Changes.Entry.Counterbalance, Change>;
|
|
7
7
|
export declare namespace Changes {
|
|
8
|
+
function available(changes: Changes, currency: isoly.Currency): number;
|
|
9
|
+
function reserved(changes: Changes, currency: isoly.Currency): number;
|
|
10
|
+
type Sum = Partial<Record<Changes.Entry.Balance, number>> & Record<Changes.Entry.Counterbalance, number>;
|
|
11
|
+
type MaybeLegacy = Changes | Legacy;
|
|
12
|
+
const type: isly.Type<Legacy>;
|
|
13
|
+
type Legacy = Partial<Record<Balances.Balance.Entry, Change>> & Record<Changes.Entry.Counterbalance, Change>;
|
|
14
|
+
namespace Legacy {
|
|
15
|
+
const type: isly.Type<Legacy>;
|
|
16
|
+
const is: isly.Type.IsFunction<Legacy>;
|
|
17
|
+
const flaw: isly.Type.FlawFunction;
|
|
18
|
+
type Entry = Balances.Balance.Entry | Legacy.Entry.Counterbalance;
|
|
19
|
+
namespace Entry {
|
|
20
|
+
type Balance = typeof Balances.Balance.Entry.values[number];
|
|
21
|
+
namespace Balance {
|
|
22
|
+
const type: isly.Type<"actual" | "incomingReserved" | "outgoingReserved" | "bufferReserved">;
|
|
23
|
+
}
|
|
24
|
+
type Counterbalance = `${CounterbalanceOperation.Link}-${isoly.DateTime}`;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
type Entry = Changes.Entry.Balance | Changes.Entry.Counterbalance;
|
|
8
28
|
namespace Entry {
|
|
29
|
+
const type: isly.Type<Entry>;
|
|
9
30
|
type Counterbalance = `${CounterbalanceOperation.Link}-${isoly.DateTime}`;
|
|
10
31
|
function split(counterbalance: Counterbalance): [CounterbalanceOperation.Link, isoly.DateTime];
|
|
32
|
+
type Balance = typeof Balance.values[number];
|
|
33
|
+
namespace Balance {
|
|
34
|
+
const values: readonly ["available", "incomingReserved", "outgoingReserved", "bufferReserved"];
|
|
35
|
+
const type: isly.Type<"incomingReserved" | "outgoingReserved" | "bufferReserved" | "available">;
|
|
36
|
+
}
|
|
11
37
|
}
|
|
12
|
-
type Entry = Balances.Balance.Entry | Entry.Counterbalance;
|
|
13
|
-
const type: isly.Type<Changes>;
|
|
14
|
-
const is: isly.Type.IsFunction<Changes>;
|
|
15
|
-
const flaw: isly.Type.FlawFunction;
|
|
16
38
|
}
|
|
@@ -1,18 +1,53 @@
|
|
|
1
|
+
import { isoly } from "isoly";
|
|
1
2
|
import { isly } from "isly";
|
|
3
|
+
import { Balances } from "../Balances";
|
|
2
4
|
import { Change } from "./Change";
|
|
3
5
|
export var Changes;
|
|
4
6
|
(function (Changes) {
|
|
7
|
+
function available(changes, currency) {
|
|
8
|
+
return Object.entries(changes).reduce((r, [entry, change]) => isoly.Currency.add(currency, r, Balances.Balance.Entry.is(entry) || Entry.Balance.type.is(entry)
|
|
9
|
+
? (entry == "actual" || entry == "available" ? 1 : -1) *
|
|
10
|
+
(change.type == "subtract" ? -1 : 1) *
|
|
11
|
+
(change.amount ?? 0)
|
|
12
|
+
: 0), 0);
|
|
13
|
+
}
|
|
14
|
+
Changes.available = available;
|
|
15
|
+
function reserved(changes, currency) {
|
|
16
|
+
return Object.entries(changes).reduce((r, [entry, change]) => isoly.Currency.add(currency, r, entry == "actual" ||
|
|
17
|
+
entry == "available" ||
|
|
18
|
+
(!Balances.Balance.Entry.is(entry) && !Entry.Balance.type.is(entry))
|
|
19
|
+
? 0
|
|
20
|
+
: (change.type == "subtract" ? -1 : 1) * (change.amount ?? 0)), 0);
|
|
21
|
+
}
|
|
22
|
+
Changes.reserved = reserved;
|
|
23
|
+
Changes.type = isly.record(isly.string(), Change.type);
|
|
24
|
+
let Legacy;
|
|
25
|
+
(function (Legacy) {
|
|
26
|
+
Legacy.type = isly.record(isly.string(), Change.type);
|
|
27
|
+
Legacy.is = Legacy.type.is;
|
|
28
|
+
Legacy.flaw = Legacy.type.flaw;
|
|
29
|
+
let Entry;
|
|
30
|
+
(function (Entry) {
|
|
31
|
+
let Balance;
|
|
32
|
+
(function (Balance) {
|
|
33
|
+
Balance.type = Balances.Balance.Entry.type;
|
|
34
|
+
})(Balance = Entry.Balance || (Entry.Balance = {}));
|
|
35
|
+
})(Entry = Legacy.Entry || (Legacy.Entry = {}));
|
|
36
|
+
})(Legacy = Changes.Legacy || (Changes.Legacy = {}));
|
|
5
37
|
let Entry;
|
|
6
38
|
(function (Entry) {
|
|
39
|
+
Entry.type = isly.string();
|
|
7
40
|
function split(counterbalance) {
|
|
8
41
|
const split = counterbalance.split("-");
|
|
9
42
|
const [realm, supplier, account, hour] = [split[0], split[1], split[2], split.slice(3).join("-")];
|
|
10
43
|
return [`${realm}-${supplier}-${account}`, hour];
|
|
11
44
|
}
|
|
12
45
|
Entry.split = split;
|
|
46
|
+
let Balance;
|
|
47
|
+
(function (Balance) {
|
|
48
|
+
Balance.values = ["available", "incomingReserved", "outgoingReserved", "bufferReserved"];
|
|
49
|
+
Balance.type = isly.string(Balance.values);
|
|
50
|
+
})(Balance = Entry.Balance || (Entry.Balance = {}));
|
|
13
51
|
})(Entry = Changes.Entry || (Changes.Entry = {}));
|
|
14
|
-
Changes.type = isly.record(isly.string(), Change.type);
|
|
15
|
-
Changes.is = Changes.type.is;
|
|
16
|
-
Changes.flaw = Changes.type.flaw;
|
|
17
52
|
})(Changes || (Changes = {}));
|
|
18
53
|
//# sourceMappingURL=Changes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Changes.js","sourceRoot":"../","sources":["Operation/Changes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Changes.js","sourceRoot":"../","sources":["Operation/Changes.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,11 +38,6 @@ export var Creatable;
|
|
|
38
38
|
currency,
|
|
39
39
|
type: "refund",
|
|
40
40
|
changes: {
|
|
41
|
-
actual: {
|
|
42
|
-
type: "add",
|
|
43
|
-
amount: isoly.Currency.subtract(currency, isoly.Currency.add(currency, operationAmount, operationFee), Math.abs(charge)),
|
|
44
|
-
status: "pending",
|
|
45
|
-
},
|
|
46
41
|
incomingReserved: {
|
|
47
42
|
type: "add",
|
|
48
43
|
amount: isoly.Currency.add(currency, operationAmount, operationFee),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Creatable.js","sourceRoot":"../","sources":["Operation/Creatable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC,MAAM,KAAW,SAAS,
|
|
1
|
+
{"version":3,"file":"Creatable.js","sourceRoot":"../","sources":["Operation/Creatable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC,MAAM,KAAW,SAAS,CA8CzB;AA9CD,WAAiB,SAAS;IACZ,eAAK,GAAG;QACpB,UAAU;QACV,kBAAkB;QAClB,UAAU;QACV,kBAAkB;QAClB,eAAe;QACf,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,cAAc;KACL,CAAA;IAEG,cAAI,GAAG,IAAI,CAAC,MAAM,CAAY;QAC1C,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACjE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1D,OAAO,EAAE,OAAO,CAAC,IAAI;QACrB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,UAAA,KAAK,CAAC;KACxB,CAAC,CAAA;IACW,YAAE,GAAG,UAAA,IAAI,CAAC,EAAE,CAAA;IACZ,cAAI,GAAG,UAAA,IAAI,CAAC,IAAI,CAAA;IAC7B,SAAgB,UAAU,CAAC,OAAe,EAAE,KAAwC,EAAE,MAAc;QAGnG,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA;QAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QAC7D,OAAO;YACN,OAAO,EAAE,OAAO;YAChB,QAAQ;YACR,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACR,gBAAgB,EAAE;oBACjB,IAAI,EAAE,KAAK;oBACX,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,YAAY,CAAC;oBACnE,MAAM,EAAE,SAAS;iBACjB;aACD;SACD,CAAA;IACF,CAAC;IAlBe,oBAAU,aAkBzB,CAAA;AACF,CAAC,EA9CgB,SAAS,KAAT,SAAS,QA8CzB"}
|
|
@@ -11,17 +11,11 @@ export interface Operation extends OperationCreatable {
|
|
|
11
11
|
previous?: string;
|
|
12
12
|
}
|
|
13
13
|
export declare namespace Operation {
|
|
14
|
+
function sum(operations: Operation[]): Changes.Sum;
|
|
14
15
|
const Signer: typeof OperationSigner;
|
|
15
16
|
type Creatable = OperationCreatable;
|
|
16
17
|
const Creatable: typeof OperationCreatable;
|
|
17
|
-
|
|
18
|
-
const Changes: typeof OperationChanges;
|
|
19
|
-
namespace Changes {
|
|
20
|
-
type Entry = OperationChanges.Entry;
|
|
21
|
-
namespace Entry {
|
|
22
|
-
type Counterbalance = OperationChanges.Entry.Counterbalance;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
18
|
+
export import Changes = OperationChanges;
|
|
25
19
|
const type: isly.object.ExtendableType<Operation>;
|
|
26
20
|
const is: isly.Type.IsFunction<Operation>;
|
|
27
21
|
const flaw: isly.Type.FlawFunction;
|
package/dist/Operation/index.js
CHANGED
|
@@ -5,6 +5,16 @@ import { Creatable as OperationCreatable } from "./Creatable";
|
|
|
5
5
|
import { Signer as OperationSigner } from "./Signer";
|
|
6
6
|
export var Operation;
|
|
7
7
|
(function (Operation) {
|
|
8
|
+
function sum(operations) {
|
|
9
|
+
const result = {};
|
|
10
|
+
for (const operation of operations) {
|
|
11
|
+
Object.entries(operation.changes).forEach(([entry, change]) => {
|
|
12
|
+
result[entry] = isoly.Currency[change.type](operation.currency, result[entry] ?? 0, change.amount);
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
Operation.sum = sum;
|
|
8
18
|
Operation.Signer = OperationSigner;
|
|
9
19
|
Operation.Creatable = OperationCreatable;
|
|
10
20
|
Operation.Changes = OperationChanges;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Operation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACvD,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,UAAU,CAAA;AASpD,MAAM,KAAW,SAAS,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Operation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACvD,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,UAAU,CAAA;AASpD,MAAM,KAAW,SAAS,CAmCzB;AAnCD,WAAiB,SAAS;IACzB,SAAgB,GAAG,CAAC,UAAuB;QAC1C,MAAM,MAAM,GAAgB,EAAE,CAAA;QAC9B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACpC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE;gBAC7D,MAAM,CAAC,KAA8B,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CACnE,SAAS,CAAC,QAAQ,EAClB,MAAM,CAAC,KAA8B,CAAC,IAAI,CAAC,EAC3C,MAAM,CAAC,MAAM,CACb,CAAA;YACF,CAAC,CAAC,CAAA;QACH,CAAC;QACD,OAAO,MAAM,CAAA;IACd,CAAC;IAZe,aAAG,MAYlB,CAAA;IACY,gBAAM,GAAG,eAAe,CAAA;IAExB,mBAAS,GAAG,kBAAkB,CAAA;IAC7B,iBAAO,GAAG,gBAAgB,CAAA;IAC3B,cAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAY;QAC7D,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE;QAC1B,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE;QACtB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACnC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAClC,CAAC,CAAA;IACW,YAAE,GAAG,UAAA,IAAI,CAAC,EAAE,CAAA;IACZ,cAAI,GAAG,UAAA,IAAI,CAAC,IAAI,CAAA;IAC7B,SAAgB,aAAa,CAAC,WAAmB,EAAE,SAAoB;QACtE,OAAO;YACN,GAAG,SAAS;YACZ,WAAW;YACX,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;SAC7B,CAAA;IACF,CAAC;IAPe,uBAAa,gBAO5B,CAAA;AACF,CAAC,EAnCgB,SAAS,KAAT,SAAS,QAmCzB"}
|