@pax2pay/model-banking 0.1.467 → 0.1.468

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/Client/Processor/Tpl.ts +22 -0
  2. package/Client/Processor/index.ts +9 -0
  3. package/Client/index.ts +2 -0
  4. package/dist/Client/Processor/Tpl.d.ts +12 -0
  5. package/dist/Client/Processor/Tpl.js +10 -0
  6. package/dist/Client/Processor/Tpl.js.map +1 -0
  7. package/dist/Client/Processor/index.d.ts +7 -0
  8. package/dist/Client/Processor/index.js +8 -0
  9. package/dist/Client/Processor/index.js.map +1 -0
  10. package/dist/Client/index.d.ts +2 -0
  11. package/dist/Client/index.js +2 -0
  12. package/dist/Client/index.js.map +1 -1
  13. package/dist/reports/visa/Data/Country.d.ts +1 -0
  14. package/dist/reports/visa/Data/Country.js +13 -0
  15. package/dist/reports/visa/Data/Country.js.map +1 -1
  16. package/dist/reports/visa/Data/Monthly.d.ts +2 -0
  17. package/dist/reports/visa/Data/Monthly.js +17 -5
  18. package/dist/reports/visa/Data/Monthly.js.map +1 -1
  19. package/dist/reports/visa/Data/NonMonthly.d.ts +2 -1
  20. package/dist/reports/visa/Data/NonMonthly.js +18 -7
  21. package/dist/reports/visa/Data/NonMonthly.js.map +1 -1
  22. package/dist/reports/visa/Data/Regional.d.ts +1 -0
  23. package/dist/reports/visa/Data/Regional.js +7 -0
  24. package/dist/reports/visa/Data/Regional.js.map +1 -1
  25. package/dist/reports/visa/Data/index.d.ts +3 -2
  26. package/dist/reports/visa/Data/index.js +10 -1
  27. package/dist/reports/visa/Data/index.js.map +1 -1
  28. package/package.json +1 -1
  29. package/reports/visa/Data/Country.ts +12 -0
  30. package/reports/visa/Data/Monthly.ts +20 -5
  31. package/reports/visa/Data/NonMonthly.ts +15 -6
  32. package/reports/visa/Data/Regional.ts +6 -0
  33. package/reports/visa/Data/index.ts +10 -2
@@ -0,0 +1,22 @@
1
+ import { gracely } from "gracely"
2
+ import { http } from "cloudly-http"
3
+ import { storage } from "cloudly-storage"
4
+ import { Card } from "../../Card"
5
+ import { reports } from "../../reports"
6
+
7
+ export class Tpl {
8
+ constructor(private readonly client: http.Client) {}
9
+
10
+ async getQuarterly(
11
+ stack: Card.Stack,
12
+ [start, end]: NonNullable<storage.KeyValueStore.ListOptions["range"]>,
13
+ cursor?: string,
14
+ limit?: number
15
+ ): Promise<(reports.visa.Data & { cursor?: string }) | gracely.Error> {
16
+ const search =
17
+ `?start=${start}&end=${end}` + `${cursor ? `&cursor=${cursor}` : ""}` + `${limit ? `&limit=${limit}` : ""}`
18
+ return await this.client.get<reports.visa.Data & { cursor?: string }>(
19
+ `/processor/${stack}/report/quarterly${search}`
20
+ )
21
+ }
22
+ }
@@ -0,0 +1,9 @@
1
+ import { http } from "cloudly-http"
2
+ import { Tpl } from "./Tpl"
3
+
4
+ export class Processor {
5
+ readonly tpl: Tpl
6
+ constructor(private readonly client: http.Client) {
7
+ this.tpl = new Tpl(this.client)
8
+ }
9
+ }
package/Client/index.ts CHANGED
@@ -9,6 +9,7 @@ import { Labels } from "./Labels"
9
9
  import { Logs } from "./Logs"
10
10
  import { Operations } from "./Operations"
11
11
  import { Organizations } from "./Organizations"
12
+ import { Processor } from "./Processor"
12
13
  import { Reports } from "./Reports"
13
14
  import { Rules } from "./Rules"
14
15
  import { Settlements } from "./Settlements"
@@ -35,6 +36,7 @@ export class Client {
35
36
  readonly groups = new Labels(this.client, "group")
36
37
  readonly userwidgets = (server: string, application: string) =>
37
38
  new userwidgets.ClientCollection(new http.Client(server), { application })
39
+ readonly processors = new Processor(this.client)
38
40
  readonly version = new Version(this.client)
39
41
  onUnauthorized?: (client: Client) => Promise<boolean>
40
42
  private constructor(private readonly client: http.Client<gracely.Error>) {
@@ -0,0 +1,12 @@
1
+ import { gracely } from "gracely";
2
+ import { http } from "cloudly-http";
3
+ import { storage } from "cloudly-storage";
4
+ import { Card } from "../../Card";
5
+ import { reports } from "../../reports";
6
+ export declare class Tpl {
7
+ private readonly client;
8
+ constructor(client: http.Client);
9
+ getQuarterly(stack: Card.Stack, [start, end]: NonNullable<storage.KeyValueStore.ListOptions["range"]>, cursor?: string, limit?: number): Promise<(reports.visa.Data & {
10
+ cursor?: string;
11
+ }) | gracely.Error>;
12
+ }
@@ -0,0 +1,10 @@
1
+ export class Tpl {
2
+ constructor(client) {
3
+ this.client = client;
4
+ }
5
+ async getQuarterly(stack, [start, end], cursor, limit) {
6
+ const search = `?start=${start}&end=${end}` + `${cursor ? `&cursor=${cursor}` : ""}` + `${limit ? `&limit=${limit}` : ""}`;
7
+ return await this.client.get(`/processor/${stack}/report/quarterly${search}`);
8
+ }
9
+ }
10
+ //# sourceMappingURL=Tpl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tpl.js","sourceRoot":"../","sources":["Client/Processor/Tpl.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,GAAG;IACf,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD,KAAK,CAAC,YAAY,CACjB,KAAiB,EACjB,CAAC,KAAK,EAAE,GAAG,CAA0D,EACrE,MAAe,EACf,KAAc;QAEd,MAAM,MAAM,GACX,UAAU,KAAK,QAAQ,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;QAC5G,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAC3B,cAAc,KAAK,oBAAoB,MAAM,EAAE,CAC/C,CAAA;IACF,CAAC;CACD"}
@@ -0,0 +1,7 @@
1
+ import { http } from "cloudly-http";
2
+ import { Tpl } from "./Tpl";
3
+ export declare class Processor {
4
+ private readonly client;
5
+ readonly tpl: Tpl;
6
+ constructor(client: http.Client);
7
+ }
@@ -0,0 +1,8 @@
1
+ import { Tpl } from "./Tpl";
2
+ export class Processor {
3
+ constructor(client) {
4
+ this.client = client;
5
+ this.tpl = new Tpl(this.client);
6
+ }
7
+ }
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"../","sources":["Client/Processor/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAE3B,MAAM,OAAO,SAAS;IAErB,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;QAC/C,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAChC,CAAC;CACD"}
@@ -8,6 +8,7 @@ import { Labels } from "./Labels";
8
8
  import { Logs } from "./Logs";
9
9
  import { Operations } from "./Operations";
10
10
  import { Organizations } from "./Organizations";
11
+ import { Processor } from "./Processor";
11
12
  import { Reports } from "./Reports";
12
13
  import { Rules } from "./Rules";
13
14
  import { Settlements } from "./Settlements";
@@ -33,6 +34,7 @@ export declare class Client {
33
34
  readonly flags: Labels;
34
35
  readonly groups: Labels;
35
36
  readonly userwidgets: (server: string, application: string) => userwidgets.ClientCollection;
37
+ readonly processors: Processor;
36
38
  readonly version: Version;
37
39
  onUnauthorized?: (client: Client) => Promise<boolean>;
38
40
  private constructor();
@@ -8,6 +8,7 @@ import { Labels } from "./Labels";
8
8
  import { Logs } from "./Logs";
9
9
  import { Operations } from "./Operations";
10
10
  import { Organizations } from "./Organizations";
11
+ import { Processor } from "./Processor";
11
12
  import { Reports } from "./Reports";
12
13
  import { Rules } from "./Rules";
13
14
  import { Settlements } from "./Settlements";
@@ -32,6 +33,7 @@ export class Client {
32
33
  this.flags = new Labels(this.client, "flag");
33
34
  this.groups = new Labels(this.client, "group");
34
35
  this.userwidgets = (server, application) => new userwidgets.ClientCollection(new http.Client(server), { application });
36
+ this.processors = new Processor(this.client);
35
37
  this.version = new Version(this.client);
36
38
  this.client.onUnauthorized = async () => this.onUnauthorized != undefined && (await this.onUnauthorized(this));
37
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../","sources":["Client/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"../","sources":["Client/index.ts"],"names":[],"mappings":"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"}
@@ -11,5 +11,6 @@ export declare namespace Country {
11
11
  function toCsv(country: Country): string;
12
12
  function csvLine(country: string, region: Region, data: PerCountry, presence: "present" | "notPresent", type: "count" | "volume"): string;
13
13
  function update(country: Country, transaction: Transaction.CardTransaction): Country;
14
+ function merge(previous: Country, addition: Country): Country;
14
15
  }
15
16
  export {};
@@ -39,5 +39,18 @@ export var Country;
39
39
  result[key] = Monthly.update(result[key], transaction);
40
40
  return result;
41
41
  }
42
+ function merge(previous, addition) {
43
+ const result = {};
44
+ for (const country of Object.keys(previous).concat(Object.keys(addition)))
45
+ result[country] = mergePerCountry(previous[country] ?? {}, addition[country] ?? {});
46
+ return result;
47
+ }
48
+ Country.merge = merge;
42
49
  })(Country || (Country = {}));
50
+ function mergePerCountry(previous, addition) {
51
+ return {
52
+ present: Monthly.merge(previous.present, addition.present),
53
+ notPresent: Monthly.merge(previous.notPresent, addition.notPresent),
54
+ };
55
+ }
43
56
  //# sourceMappingURL=Country.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Country.js","sourceRoot":"../","sources":["reports/visa/Data/Country.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AASjC,MAAM,KAAW,OAAO,CA6CvB;AA7CD,WAAiB,OAAO;IACvB,SAAgB,KAAK,CAAC,OAAgB;QACrC,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,KAAK,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACjE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAuC,CAAC,CAAA;YACnE,MAAM,IAAI,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;YACtE,MAAM,IAAI,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;YACvE,MAAM,IAAI,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;YACzE,MAAM,IAAI,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAA;QAC3E,CAAC;QACD,OAAO,MAAM,CAAA;IACd,CAAC;IAVe,aAAK,QAUpB,CAAA;IACD,SAAgB,OAAO,CACtB,OAAe,EACf,MAAc,EACd,IAAgB,EAChB,QAAkC,EAClC,IAAwB;QAExB,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,IAAI,IAAI,CAAC,QAAQ,CAAC;YACjB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC1C,MAAM,IAAI,WAAW,OAAO,MAAM,MAAM,SAAS,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,IACjG,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAC7B,YAAY,KAAK,EAAE,CAAA;gBACnB,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM;oBAC3B,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAA;gBACtD,MAAM,IAAI,IAAI,CAAA;YACf,CAAC;QACF,OAAO,MAAM,CAAA;IACd,CAAC;IAlBe,eAAO,UAkBtB,CAAA;IACD,SAAgB,MAAM,CAAC,OAAgB,EAAE,WAAwC;QAChF,MAAM,MAAM,GAAY,OAAO,CAAA;QAC/B,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,gBAAgB,CAClE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EACtD,WAAW,CACX,CAAA;QACD,OAAO,MAAM,CAAA;IACd,CAAC;IAPe,cAAM,SAOrB,CAAA;IACD,SAAS,gBAAgB,CAAC,KAAiB,EAAE,WAAwC;QACpF,MAAM,MAAM,GAAG,KAAK,CAAA;QACpB,MAAM,GAAG,GAAG,WAAW,CAAC,WAAW,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAA;QAC/E,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,CAAA;QACtD,OAAO,MAAM,CAAA;IACd,CAAC;AACF,CAAC,EA7CgB,OAAO,KAAP,OAAO,QA6CvB"}
1
+ {"version":3,"file":"Country.js","sourceRoot":"../","sources":["reports/visa/Data/Country.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AASjC,MAAM,KAAW,OAAO,CAmDvB;AAnDD,WAAiB,OAAO;IACvB,SAAgB,KAAK,CAAC,OAAgB;QACrC,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,KAAK,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACjE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAuC,CAAC,CAAA;YACnE,MAAM,IAAI,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;YACtE,MAAM,IAAI,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;YACvE,MAAM,IAAI,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;YACzE,MAAM,IAAI,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAA;QAC3E,CAAC;QACD,OAAO,MAAM,CAAA;IACd,CAAC;IAVe,aAAK,QAUpB,CAAA;IACD,SAAgB,OAAO,CACtB,OAAe,EACf,MAAc,EACd,IAAgB,EAChB,QAAkC,EAClC,IAAwB;QAExB,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,IAAI,IAAI,CAAC,QAAQ,CAAC;YACjB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC1C,MAAM,IAAI,WAAW,OAAO,MAAM,MAAM,SAAS,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,IACjG,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAC7B,YAAY,KAAK,EAAE,CAAA;gBACnB,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM;oBAC3B,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAA;gBACtD,MAAM,IAAI,IAAI,CAAA;YACf,CAAC;QACF,OAAO,MAAM,CAAA;IACd,CAAC;IAlBe,eAAO,UAkBtB,CAAA;IACD,SAAgB,MAAM,CAAC,OAAgB,EAAE,WAAwC;QAChF,MAAM,MAAM,GAAY,OAAO,CAAA;QAC/B,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,gBAAgB,CAClE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EACtD,WAAW,CACX,CAAA;QACD,OAAO,MAAM,CAAA;IACd,CAAC;IAPe,cAAM,SAOrB,CAAA;IACD,SAAS,gBAAgB,CAAC,KAAiB,EAAE,WAAwC;QACpF,MAAM,MAAM,GAAG,KAAK,CAAA;QACpB,MAAM,GAAG,GAAG,WAAW,CAAC,WAAW,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAA;QAC/E,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,CAAA;QACtD,OAAO,MAAM,CAAA;IACd,CAAC;IACD,SAAgB,KAAK,CAAC,QAAiB,EAAE,QAAiB;QACzD,MAAM,MAAM,GAAY,EAAE,CAAA;QAC1B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAA+B;YACtG,MAAM,CAAC,OAAO,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QACpF,OAAO,MAAM,CAAA;IACd,CAAC;IALe,aAAK,QAKpB,CAAA;AACF,CAAC,EAnDgB,OAAO,KAAP,OAAO,QAmDvB;AACD,SAAS,eAAe,CAAC,QAAoB,EAAE,QAAoB;IAClE,OAAO;QACN,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;QAC1D,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;KACnE,CAAA;AACF,CAAC"}
@@ -10,5 +10,7 @@ export declare namespace Monthly {
10
10
  const values: readonly [1, 2, 3];
11
11
  }
12
12
  function getMonth(transaction: Transaction.CardTransaction): Monthly.Month;
13
+ function empty(): Monthly;
13
14
  function update(previous: Monthly | undefined, transaction: Transaction.CardTransaction): Monthly;
15
+ function merge(previous: Monthly | undefined, addition: Monthly | undefined): Monthly;
14
16
  }
@@ -11,12 +11,12 @@ export var Monthly;
11
11
  return (((month - 1) % 3) + 1);
12
12
  }
13
13
  Monthly.getMonth = getMonth;
14
+ function empty() {
15
+ return { "1": { count: {}, volume: {} }, "2": { count: {}, volume: {} }, "3": { count: {}, volume: {} } };
16
+ }
17
+ Monthly.empty = empty;
14
18
  function update(previous, transaction) {
15
- const result = previous ?? {
16
- "1": { count: {}, volume: {} },
17
- "2": { count: {}, volume: {} },
18
- "3": { count: {}, volume: {} },
19
- };
19
+ const result = previous ?? empty();
20
20
  if (transaction.direction == "outbound" && transaction.status == "finalized") {
21
21
  const month = getMonth(transaction);
22
22
  result[month].count[transaction.account.iin] =
@@ -30,5 +30,17 @@ export var Monthly;
30
30
  return result;
31
31
  }
32
32
  Monthly.update = update;
33
+ function merge(previous, addition) {
34
+ const result = empty();
35
+ previous ??= empty();
36
+ addition ??= empty();
37
+ for (const month of Monthly.Month.values)
38
+ for (const iin of Iin.values) {
39
+ result[month].count[iin] = (previous[month].count[iin] ?? 0) + (addition[month].count[iin] ?? 0);
40
+ result[month].volume[iin] = isoly.Currency.add("GBP", previous[month].volume[iin] ?? 0, addition[month].volume[iin] ?? 0);
41
+ }
42
+ return result;
43
+ }
44
+ Monthly.merge = merge;
33
45
  })(Monthly || (Monthly = {}));
34
46
  //# sourceMappingURL=Monthly.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Monthly.js","sourceRoot":"../","sources":["reports/visa/Data/Monthly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAE7B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAM3B,MAAM,KAAW,OAAO,CAoCvB;AApCD,WAAiB,OAAO;IAEvB,IAAiB,KAAK,CAErB;IAFD,WAAiB,KAAK;QACR,YAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAU,CAAA;IACzC,CAAC,EAFgB,KAAK,GAAL,aAAK,KAAL,aAAK,QAErB;IAED,SAAgB,QAAQ,CAAC,WAAwC;QAChE,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,IAAI,WAAW,CAAC,MAAM,CAAC,CAAA;QACnF,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAkB,CAAA;IAChD,CAAC;IAHe,gBAAQ,WAGvB,CAAA;IACD,SAAgB,MAAM,CAAC,QAA6B,EAAE,WAAwC;QAC7F,MAAM,MAAM,GAAY,QAAQ,IAAI;YACnC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YAC9B,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YAC9B,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;SAC9B,CAAA;QACD,IAAI,WAAW,CAAC,SAAS,IAAI,UAAU,IAAI,WAAW,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC;YAC9E,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAA;YACnC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,GAAU,CAAC;gBAClD,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,GAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;YAC/D,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CACxE,KAAK,EACL,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAU,CAAC,IAAI,CAAC,EACzD,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CACrC,CAAA;YACD,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9C,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;gBAC5E,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CACpD,KAAK,EACL,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EACrC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CACrC,CAAA;YACF,CAAC;QACF,CAAC;QACD,OAAO,MAAM,CAAA;IACd,CAAC;IAzBe,cAAM,SAyBrB,CAAA;AACF,CAAC,EApCgB,OAAO,KAAP,OAAO,QAoCvB"}
1
+ {"version":3,"file":"Monthly.js","sourceRoot":"../","sources":["reports/visa/Data/Monthly.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,8 @@ import { rows } from "../rows";
3
3
  import { Iin } from "./Iin";
4
4
  export type NonMonthly = Record<"Total Number of Cards" | "Total Number of Active Cards" | "Total Number of Accounts" | "Number of Accounts - International Enabled" | "Payments Transactions Declined for Insufficient Funds - Number", Partial<Record<Iin, number>>>;
5
5
  export declare namespace NonMonthly {
6
- const empty: NonMonthly;
6
+ function empty(): NonMonthly;
7
7
  function update(previous: NonMonthly, transaction: Transaction.CardTransaction): NonMonthly;
8
8
  function toCsvRow(data: NonMonthly, row: rows.NonZero): string;
9
+ function merge(previous: NonMonthly, addition: NonMonthly): NonMonthly;
9
10
  }
@@ -1,13 +1,16 @@
1
1
  import { Iin } from "./Iin";
2
2
  export var NonMonthly;
3
3
  (function (NonMonthly) {
4
- NonMonthly.empty = {
5
- "Number of Accounts - International Enabled": {},
6
- "Payments Transactions Declined for Insufficient Funds - Number": {},
7
- "Total Number of Accounts": {},
8
- "Total Number of Active Cards": {},
9
- "Total Number of Cards": {},
10
- };
4
+ function empty() {
5
+ return {
6
+ "Number of Accounts - International Enabled": {},
7
+ "Payments Transactions Declined for Insufficient Funds - Number": {},
8
+ "Total Number of Accounts": {},
9
+ "Total Number of Active Cards": {},
10
+ "Total Number of Cards": {},
11
+ };
12
+ }
13
+ NonMonthly.empty = empty;
11
14
  function update(previous, transaction) {
12
15
  const result = previous;
13
16
  if (Array.isArray(transaction.status) && transaction.status[1] == "insufficient funds")
@@ -25,5 +28,13 @@ export var NonMonthly;
25
28
  return result;
26
29
  }
27
30
  NonMonthly.toCsvRow = toCsvRow;
31
+ function merge(previous, addition) {
32
+ const result = empty();
33
+ for (const key of Object.keys(result))
34
+ for (const iin of Iin.values)
35
+ result[key][iin] = (previous[key]?.[iin] ?? 0) + (addition[key]?.[iin] ?? 0);
36
+ return result;
37
+ }
38
+ NonMonthly.merge = merge;
28
39
  })(NonMonthly || (NonMonthly = {}));
29
40
  //# sourceMappingURL=NonMonthly.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NonMonthly.js","sourceRoot":"../","sources":["reports/visa/Data/NonMonthly.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAU3B,MAAM,KAAW,UAAU,CAuB1B;AAvBD,WAAiB,UAAU;IACb,gBAAK,GAAe;QAChC,4CAA4C,EAAE,EAAE;QAChD,gEAAgE,EAAE,EAAE;QACpE,0BAA0B,EAAE,EAAE;QAC9B,8BAA8B,EAAE,EAAE;QAClC,uBAAuB,EAAE,EAAE;KAC3B,CAAA;IACD,SAAgB,MAAM,CAAC,QAAoB,EAAE,WAAwC;QACpF,MAAM,MAAM,GAAG,QAAQ,CAAA;QACvB,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,oBAAoB;YACrF,MAAM,CAAC,gEAAgE,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,GAAU,CAAC;gBACvG,CAAC,MAAM,CAAC,gEAAgE,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,GAAU,CAAC;oBAC1G,CAAC,CAAC,GAAG,CAAC,CAAA;QACT,OAAO,MAAM,CAAA;IACd,CAAC;IAPe,iBAAM,SAOrB,CAAA;IACD,SAAgB,QAAQ,CAAC,IAAgB,EAAE,GAAiB;QAC3D,IAAI,MAAM,GAAG,GAAG,CAAA;QAChB,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM;YAC3B,MAAM,IAAI,IAAI,IAAI,CAAC,GAAuB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAA;QACxD,MAAM,IAAI,IAAI,CAAA;QACd,OAAO,MAAM,CAAA;IACd,CAAC;IANe,mBAAQ,WAMvB,CAAA;AACF,CAAC,EAvBgB,UAAU,KAAV,UAAU,QAuB1B"}
1
+ {"version":3,"file":"NonMonthly.js","sourceRoot":"../","sources":["reports/visa/Data/NonMonthly.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAU3B,MAAM,KAAW,UAAU,CAgC1B;AAhCD,WAAiB,UAAU;IAC1B,SAAgB,KAAK;QACpB,OAAO;YACN,4CAA4C,EAAE,EAAE;YAChD,gEAAgE,EAAE,EAAE;YACpE,0BAA0B,EAAE,EAAE;YAC9B,8BAA8B,EAAE,EAAE;YAClC,uBAAuB,EAAE,EAAE;SAC3B,CAAA;IACF,CAAC;IARe,gBAAK,QAQpB,CAAA;IACD,SAAgB,MAAM,CAAC,QAAoB,EAAE,WAAwC;QACpF,MAAM,MAAM,GAAG,QAAQ,CAAA;QACvB,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,oBAAoB;YACrF,MAAM,CAAC,gEAAgE,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,GAAU,CAAC;gBACvG,CAAC,MAAM,CAAC,gEAAgE,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,GAAU,CAAC;oBAC1G,CAAC,CAAC,GAAG,CAAC,CAAA;QACT,OAAO,MAAM,CAAA;IACd,CAAC;IAPe,iBAAM,SAOrB,CAAA;IACD,SAAgB,QAAQ,CAAC,IAAgB,EAAE,GAAiB;QAC3D,IAAI,MAAM,GAAG,GAAG,CAAA;QAChB,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM;YAC3B,MAAM,IAAI,IAAI,IAAI,CAAC,GAAuB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAA;QACxD,MAAM,IAAI,IAAI,CAAA;QACd,OAAO,MAAM,CAAA;IACd,CAAC;IANe,mBAAQ,WAMvB,CAAA;IACD,SAAgB,KAAK,CAAC,QAAoB,EAAE,QAAoB;QAC/D,MAAM,MAAM,GAAe,KAAK,EAAE,CAAA;QAClC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAyB;YAC5D,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM;gBAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;QAC9E,OAAO,MAAM,CAAA;IACd,CAAC;IANe,gBAAK,QAMpB,CAAA;AACF,CAAC,EAhCgB,UAAU,KAAV,UAAU,QAgC1B"}
@@ -4,5 +4,6 @@ import { Region } from "./Region";
4
4
  export type Regional = Partial<Record<Region, Monthly>>;
5
5
  export declare namespace Regional {
6
6
  function update(previous: Regional, transaction: Transaction.CardTransaction): Regional;
7
+ function merge(previous: Regional, addition: Regional): Regional;
7
8
  function toCsvRow(regional: Regional, row: string): string;
8
9
  }
@@ -10,6 +10,13 @@ export var Regional;
10
10
  return result;
11
11
  }
12
12
  Regional.update = update;
13
+ function merge(previous, addition) {
14
+ const result = {};
15
+ for (const region of Region.values)
16
+ result[region] = Monthly.merge(previous[region], addition[region]);
17
+ return result;
18
+ }
19
+ Regional.merge = merge;
13
20
  function toCsvRow(regional, row) {
14
21
  let result = "";
15
22
  const region = Region.fromRow(row);
@@ -1 +1 @@
1
- {"version":3,"file":"Regional.js","sourceRoot":"../","sources":["reports/visa/Data/Regional.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAGjC,MAAM,KAAW,QAAQ,CAmBxB;AAnBD,WAAiB,QAAQ;IACxB,SAAgB,MAAM,CAAC,QAAkB,EAAE,WAAwC;QAClF,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QACpE,MAAM,MAAM,GAAa,QAAQ,CAAA;QACjC,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAA;QAC5D,OAAO,MAAM,CAAA;IACd,CAAC;IALe,eAAM,SAKrB,CAAA;IACD,SAAgB,QAAQ,CAAC,QAAkB,EAAE,GAAW;QACvD,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAClC,MAAM,GAAG,GAAuB,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAA;QAC1E,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,KAAK,EAAE,CAAC,CAAA;YAClD,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM;gBAC3B,MAAM,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAA;YACzD,MAAM,IAAI,IAAI,CAAA;QACf,CAAC;QACD,OAAO,MAAM,CAAA;IACd,CAAC;IAXe,iBAAQ,WAWvB,CAAA;AACF,CAAC,EAnBgB,QAAQ,KAAR,QAAQ,QAmBxB"}
1
+ {"version":3,"file":"Regional.js","sourceRoot":"../","sources":["reports/visa/Data/Regional.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAGjC,MAAM,KAAW,QAAQ,CAyBxB;AAzBD,WAAiB,QAAQ;IACxB,SAAgB,MAAM,CAAC,QAAkB,EAAE,WAAwC;QAClF,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QACpE,MAAM,MAAM,GAAa,QAAQ,CAAA;QACjC,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAA;QAC5D,OAAO,MAAM,CAAA;IACd,CAAC;IALe,eAAM,SAKrB,CAAA;IACD,SAAgB,KAAK,CAAC,QAAkB,EAAE,QAAkB;QAC3D,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM;YACjC,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;QACnE,OAAO,MAAM,CAAA;IACd,CAAC;IALe,cAAK,QAKpB,CAAA;IACD,SAAgB,QAAQ,CAAC,QAAkB,EAAE,GAAW;QACvD,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAClC,MAAM,GAAG,GAAuB,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAA;QAC1E,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,KAAK,EAAE,CAAC,CAAA;YAClD,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM;gBAC3B,MAAM,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAA;YACzD,MAAM,IAAI,IAAI,CAAA;QACf,CAAC;QACD,OAAO,MAAM,CAAA;IACd,CAAC;IAXe,iBAAQ,WAWvB,CAAA;AACF,CAAC,EAzBgB,QAAQ,KAAR,QAAQ,QAyBxB"}
@@ -4,14 +4,15 @@ import { Country as DataCountry } from "./Country";
4
4
  import { Iin as DataIin } from "./Iin";
5
5
  import { NonMonthly } from "./NonMonthly";
6
6
  import { Regional } from "./Regional";
7
- export type Data = {
7
+ export interface Data {
8
8
  regional: Regional;
9
9
  nonMonthly: NonMonthly;
10
10
  country: Data.Country;
11
- };
11
+ }
12
12
  export declare namespace Data {
13
13
  export import Iin = DataIin;
14
14
  export import Country = DataCountry;
15
15
  function create(transactions: Transaction.CardTransaction[]): Data;
16
+ function merge(previous: Data, addition: Data): Data;
16
17
  function toCsv(data: Data, row: rows.NonZero): string;
17
18
  }
@@ -7,7 +7,7 @@ export var Data;
7
7
  Data.Iin = DataIin;
8
8
  Data.Country = DataCountry;
9
9
  function create(transactions) {
10
- const result = { regional: {}, nonMonthly: NonMonthly.empty, country: {} };
10
+ const result = { regional: {}, nonMonthly: NonMonthly.empty(), country: {} };
11
11
  for (const transaction of transactions) {
12
12
  result.nonMonthly = NonMonthly.update(result.nonMonthly, transaction);
13
13
  result.regional = Regional.update(result.regional, transaction);
@@ -16,6 +16,15 @@ export var Data;
16
16
  return result;
17
17
  }
18
18
  Data.create = create;
19
+ function merge(previous, addition) {
20
+ const result = {
21
+ regional: Regional.merge(previous.regional, addition.regional),
22
+ nonMonthly: NonMonthly.merge(previous.nonMonthly, addition.nonMonthly),
23
+ country: Data.Country.merge(previous.country, addition.country),
24
+ };
25
+ return result;
26
+ }
27
+ Data.merge = merge;
19
28
  function toCsv(data, row) {
20
29
  let result;
21
30
  if (row.endsWith("Month x"))
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../","sources":["reports/visa/Data/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,EAAE,GAAG,IAAI,OAAO,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAOrC,MAAM,KAAW,IAAI,CAoBpB;AApBD,WAAiB,IAAI;IACN,QAAG,GAAG,OAAO,CAAA;IACb,YAAO,GAAG,WAAW,CAAA;IACnC,SAAgB,MAAM,CAAC,YAA2C;QACjE,MAAM,MAAM,GAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;QAChF,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACxC,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;YACrE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;YAC/D,MAAM,CAAC,OAAO,GAAG,KAAA,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;QAC7D,CAAC;QACD,OAAO,MAAM,CAAA;IACd,CAAC;IARe,WAAM,SAQrB,CAAA;IACD,SAAgB,KAAK,CAAC,IAAU,EAAE,GAAiB;QAClD,IAAI,MAAc,CAAA;QAClB,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC1B,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;;YAE9C,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;QACnD,OAAO,MAAM,CAAA;IACd,CAAC;IAPe,UAAK,QAOpB,CAAA;AACF,CAAC,EApBgB,IAAI,KAAJ,IAAI,QAoBpB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"../","sources":["reports/visa/Data/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,EAAE,GAAG,IAAI,OAAO,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAOrC,MAAM,KAAW,IAAI,CA4BpB;AA5BD,WAAiB,IAAI;IACN,QAAG,GAAG,OAAO,CAAA;IACb,YAAO,GAAG,WAAW,CAAA;IACnC,SAAgB,MAAM,CAAC,YAA2C;QACjE,MAAM,MAAM,GAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;QAClF,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACxC,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;YACrE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;YAC/D,MAAM,CAAC,OAAO,GAAG,KAAA,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;QAC7D,CAAC;QACD,OAAO,MAAM,CAAA;IACd,CAAC;IARe,WAAM,SAQrB,CAAA;IACD,SAAgB,KAAK,CAAC,QAAc,EAAE,QAAc;QACnD,MAAM,MAAM,GAAS;YACpB,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;YAC9D,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;YACtE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;SAC/D,CAAA;QACD,OAAO,MAAM,CAAA;IACd,CAAC;IAPe,UAAK,QAOpB,CAAA;IACD,SAAgB,KAAK,CAAC,IAAU,EAAE,GAAiB;QAClD,IAAI,MAAc,CAAA;QAClB,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC1B,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;;YAE9C,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;QACnD,OAAO,MAAM,CAAA;IACd,CAAC;IAPe,UAAK,QAOpB,CAAA;AACF,CAAC,EA5BgB,IAAI,KAAJ,IAAI,QA4BpB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pax2pay/model-banking",
3
- "version": "0.1.467",
3
+ "version": "0.1.468",
4
4
  "description": "Library containing data model types and functions for the Pax2Pay Banking API.",
5
5
  "author": "Pax2Pay Ltd",
6
6
  "license": "MIT",
@@ -56,4 +56,16 @@ export namespace Country {
56
56
  result[key] = Monthly.update(result[key], transaction)
57
57
  return result
58
58
  }
59
+ export function merge(previous: Country, addition: Country): Country {
60
+ const result: Country = {}
61
+ for (const country of Object.keys(previous).concat(Object.keys(addition)) as isoly.CountryCode.Alpha2[])
62
+ result[country] = mergePerCountry(previous[country] ?? {}, addition[country] ?? {})
63
+ return result
64
+ }
65
+ }
66
+ function mergePerCountry(previous: PerCountry, addition: PerCountry): PerCountry {
67
+ return {
68
+ present: Monthly.merge(previous.present, addition.present),
69
+ notPresent: Monthly.merge(previous.notPresent, addition.notPresent),
70
+ }
59
71
  }
@@ -16,12 +16,11 @@ export namespace Monthly {
16
16
  const month = isoly.DateTime.getMonth(transaction.transacted ?? transaction.posted)
17
17
  return (((month - 1) % 3) + 1) as Monthly.Month
18
18
  }
19
+ export function empty(): Monthly {
20
+ return { "1": { count: {}, volume: {} }, "2": { count: {}, volume: {} }, "3": { count: {}, volume: {} } }
21
+ }
19
22
  export function update(previous: Monthly | undefined, transaction: Transaction.CardTransaction): Monthly {
20
- const result: Monthly = previous ?? {
21
- "1": { count: {}, volume: {} },
22
- "2": { count: {}, volume: {} },
23
- "3": { count: {}, volume: {} },
24
- }
23
+ const result: Monthly = previous ?? empty()
25
24
  if (transaction.direction == "outbound" && transaction.status == "finalized") {
26
25
  const month = getMonth(transaction)
27
26
  result[month].count[transaction.account.iin as Iin] =
@@ -42,4 +41,20 @@ export namespace Monthly {
42
41
  }
43
42
  return result
44
43
  }
44
+ export function merge(previous: Monthly | undefined, addition: Monthly | undefined): Monthly {
45
+ const result: Monthly = empty()
46
+ previous ??= empty()
47
+ addition ??= empty()
48
+ for (const month of Monthly.Month.values)
49
+ for (const iin of Iin.values) {
50
+ result[month].count[iin] = (previous[month].count[iin] ?? 0) + (addition[month].count[iin] ?? 0)
51
+ result[month].volume[iin] = isoly.Currency.add(
52
+ "GBP",
53
+ previous[month].volume[iin] ?? 0,
54
+ addition[month].volume[iin] ?? 0
55
+ )
56
+ }
57
+
58
+ return result
59
+ }
45
60
  }
@@ -11,12 +11,14 @@ export type NonMonthly = Record<
11
11
  Partial<Record<Iin, number>>
12
12
  >
13
13
  export namespace NonMonthly {
14
- export const empty: NonMonthly = {
15
- "Number of Accounts - International Enabled": {},
16
- "Payments Transactions Declined for Insufficient Funds - Number": {},
17
- "Total Number of Accounts": {},
18
- "Total Number of Active Cards": {},
19
- "Total Number of Cards": {},
14
+ export function empty(): NonMonthly {
15
+ return {
16
+ "Number of Accounts - International Enabled": {},
17
+ "Payments Transactions Declined for Insufficient Funds - Number": {},
18
+ "Total Number of Accounts": {},
19
+ "Total Number of Active Cards": {},
20
+ "Total Number of Cards": {},
21
+ }
20
22
  }
21
23
  export function update(previous: NonMonthly, transaction: Transaction.CardTransaction): NonMonthly {
22
24
  const result = previous
@@ -33,4 +35,11 @@ export namespace NonMonthly {
33
35
  result += "\n"
34
36
  return result
35
37
  }
38
+ export function merge(previous: NonMonthly, addition: NonMonthly): NonMonthly {
39
+ const result: NonMonthly = empty()
40
+ for (const key of Object.keys(result) as (keyof NonMonthly)[])
41
+ for (const iin of Iin.values)
42
+ result[key][iin] = (previous[key]?.[iin] ?? 0) + (addition[key]?.[iin] ?? 0)
43
+ return result
44
+ }
36
45
  }
@@ -11,6 +11,12 @@ export namespace Regional {
11
11
  result[region] = Monthly.update(result[region], transaction)
12
12
  return result
13
13
  }
14
+ export function merge(previous: Regional, addition: Regional): Regional {
15
+ const result: Regional = {}
16
+ for (const region of Region.values)
17
+ result[region] = Monthly.merge(previous[region], addition[region])
18
+ return result
19
+ }
14
20
  export function toCsvRow(regional: Regional, row: string): string {
15
21
  let result = ""
16
22
  const region = Region.fromRow(row)
@@ -5,7 +5,7 @@ import { Iin as DataIin } from "./Iin"
5
5
  import { NonMonthly } from "./NonMonthly"
6
6
  import { Regional } from "./Regional"
7
7
 
8
- export type Data = {
8
+ export interface Data {
9
9
  regional: Regional
10
10
  nonMonthly: NonMonthly
11
11
  country: Data.Country
@@ -14,7 +14,7 @@ export namespace Data {
14
14
  export import Iin = DataIin
15
15
  export import Country = DataCountry
16
16
  export function create(transactions: Transaction.CardTransaction[]): Data {
17
- const result: Data = { regional: {}, nonMonthly: NonMonthly.empty, country: {} }
17
+ const result: Data = { regional: {}, nonMonthly: NonMonthly.empty(), country: {} }
18
18
  for (const transaction of transactions) {
19
19
  result.nonMonthly = NonMonthly.update(result.nonMonthly, transaction)
20
20
  result.regional = Regional.update(result.regional, transaction)
@@ -22,6 +22,14 @@ export namespace Data {
22
22
  }
23
23
  return result
24
24
  }
25
+ export function merge(previous: Data, addition: Data): Data {
26
+ const result: Data = {
27
+ regional: Regional.merge(previous.regional, addition.regional),
28
+ nonMonthly: NonMonthly.merge(previous.nonMonthly, addition.nonMonthly),
29
+ country: Data.Country.merge(previous.country, addition.country),
30
+ }
31
+ return result
32
+ }
25
33
  export function toCsv(data: Data, row: rows.NonZero): string {
26
34
  let result: string
27
35
  if (row.endsWith("Month x"))