@fleet-sdk/common 0.1.0-alpha.28 → 0.1.0-alpha.30

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.
@@ -3,17 +3,18 @@ import { NonMandatoryRegisters } from "./registers";
3
3
  import { TokenAmount } from "./token";
4
4
  import { TransactionId } from "./transactions";
5
5
  export type BoxId = string;
6
- type BoxBaseType<AmountType> = {
6
+ export type AmountType = string | bigint;
7
+ type BoxBaseType<T extends AmountType> = {
7
8
  ergoTree: ErgoTree;
8
9
  creationHeight: number;
9
- value: AmountType;
10
- assets: TokenAmount<AmountType>[];
10
+ value: T;
11
+ assets: TokenAmount<T>[];
11
12
  additionalRegisters: NonMandatoryRegisters;
12
13
  };
13
- export type BoxCandidate<AmountType> = BoxBaseType<AmountType> & {
14
+ export type BoxCandidate<T extends AmountType> = BoxBaseType<T> & {
14
15
  boxId?: BoxId;
15
16
  };
16
- export type Box<AmountType> = BoxBaseType<AmountType> & {
17
+ export type Box<T extends AmountType> = BoxBaseType<T> & {
17
18
  boxId: BoxId;
18
19
  transactionId: TransactionId;
19
20
  index: number;
@@ -1,4 +1,5 @@
1
1
  import { SortingDirection, SortingSelector } from "../types";
2
+ type ObjectSelector<T> = (item: T) => T[keyof T];
2
3
  export declare function isEmpty<T extends object>(obj?: T): obj is undefined;
3
4
  export declare function isEmpty<T>(array?: T[]): array is undefined;
4
5
  export declare function some<T extends object>(obj?: T): obj is T;
@@ -13,9 +14,13 @@ export declare function hasDuplicates<T>(array: T[]): boolean;
13
14
  /**
14
15
  * Check for duplicate keys in complex elements
15
16
  */
16
- export declare function hasDuplicatesBy<T>(array: T[], selector: (value: T) => unknown): boolean;
17
+ export declare function hasDuplicatesBy<T>(array: T[], selector: ObjectSelector<T>): boolean;
17
18
  export declare function chunk<T>(array: T[], size: number): T[][];
18
19
  export declare function orderBy<T>(array: T[], iteratee: SortingSelector<T>, order?: SortingDirection): T[];
19
20
  export declare function areEqual<T>(array1: ArrayLike<T>, array2: ArrayLike<T>): boolean;
21
+ export declare function areEqualBy<T>(array1: ArrayLike<T>, array2: ArrayLike<T>, selector: ObjectSelector<T>): boolean;
20
22
  export declare function startsWith<T>(array: ArrayLike<T>, target: ArrayLike<T>): boolean;
21
23
  export declare function endsWith<T>(array: ArrayLike<T>, target: ArrayLike<T>): boolean;
24
+ export declare function uniq<T>(array: Array<T>): Array<T>;
25
+ export declare function uniqBy<T>(array: Array<T>, selector: ObjectSelector<T>, selection?: "keep-first" | "keep-last"): Array<T>;
26
+ export {};
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.endsWith = exports.startsWith = exports.areEqual = exports.orderBy = exports.chunk = exports.hasDuplicatesBy = exports.hasDuplicates = exports.first = exports.some = exports.isEmpty = void 0;
3
+ exports.uniqBy = exports.uniq = exports.endsWith = exports.startsWith = exports.areEqualBy = exports.areEqual = exports.orderBy = exports.chunk = exports.hasDuplicatesBy = exports.hasDuplicates = exports.first = exports.some = exports.isEmpty = void 0;
4
4
  function isEmpty(obj) {
5
5
  if (!obj) {
6
6
  return true;
@@ -80,6 +80,21 @@ function areEqual(array1, array2) {
80
80
  return true;
81
81
  }
82
82
  exports.areEqual = areEqual;
83
+ function areEqualBy(array1, array2, selector) {
84
+ if (array1 === array2) {
85
+ return true;
86
+ }
87
+ if (array1.length != array2.length) {
88
+ return false;
89
+ }
90
+ for (let i = 0; i < array1.length; i++) {
91
+ if (selector(array1[i]) !== selector(array2[i])) {
92
+ return false;
93
+ }
94
+ }
95
+ return true;
96
+ }
97
+ exports.areEqualBy = areEqualBy;
83
98
  function startsWith(array, target) {
84
99
  if (array === target) {
85
100
  return true;
@@ -111,4 +126,26 @@ function endsWith(array, target) {
111
126
  return true;
112
127
  }
113
128
  exports.endsWith = endsWith;
129
+ function uniq(array) {
130
+ if (isEmpty(array)) {
131
+ return array;
132
+ }
133
+ return Array.from(new Set(array));
134
+ }
135
+ exports.uniq = uniq;
136
+ function uniqBy(array, selector, selection = "keep-first") {
137
+ if (isEmpty(array)) {
138
+ return array;
139
+ }
140
+ return Array.from(array
141
+ .reduce((map, e) => {
142
+ const key = selector(e);
143
+ if (selection === "keep-first" && map.has(key)) {
144
+ return map;
145
+ }
146
+ return map.set(key, e);
147
+ }, new Map())
148
+ .values());
149
+ }
150
+ exports.uniqBy = uniqBy;
114
151
  //# sourceMappingURL=arrayUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"arrayUtils.js","sourceRoot":"","sources":["../../../src/utils/arrayUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arrayUtils.js","sourceRoot":"","sources":["../../../src/utils/arrayUtils.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,21 @@
1
- import { Amount, NonMandatoryRegisters, TokenId } from "../types";
2
- export declare function utxoSum(boxes: MinimalBoxAmounts): BoxAmounts;
1
+ import { Amount, AmountType, Box, NonMandatoryRegisters, TokenAmount, TokenId } from "../types";
2
+ export declare function utxoSum(boxes: MinimalBoxAmounts): BoxSummary;
3
3
  export declare function utxoSum(boxes: MinimalBoxAmounts, tokenId: TokenId): bigint;
4
- export declare function utxoSumResultDiff(amountsA: BoxAmounts, amountsB: BoxAmounts): BoxAmounts;
4
+ export declare function utxoDiff(amountsA: BoxSummary, amountsB: BoxSummary): BoxSummary;
5
5
  export declare function areRegistersDenselyPacked(registers: NonMandatoryRegisters): boolean;
6
- type TokenAmount<AmountType> = {
7
- tokenId: TokenId;
8
- amount: AmountType;
6
+ export declare function utxoFilter<T extends AmountType>(utxos: Box<T>[], filterParams: UTxOFilterParams<T>): Box<T>[];
7
+ export type UTxOFilterParams<T extends AmountType> = {
8
+ by?: (utxo: Box<T>) => boolean;
9
+ max?: {
10
+ count?: number;
11
+ aggregatedDistinctTokens?: number;
12
+ };
9
13
  };
10
- export type BoxAmounts = {
14
+ export type BoxSummary = {
11
15
  nanoErgs: bigint;
12
16
  tokens: TokenAmount<bigint>[];
13
17
  };
14
- type MinimalBoxAmounts = readonly {
18
+ export type MinimalBoxAmounts = readonly {
15
19
  value: Amount;
16
20
  assets: TokenAmount<Amount>[];
17
21
  }[];
18
- export {};
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.areRegistersDenselyPacked = exports.utxoSumResultDiff = exports.utxoSum = void 0;
3
+ exports.utxoFilter = exports.areRegistersDenselyPacked = exports.utxoDiff = exports.utxoSum = void 0;
4
+ const arrayUtils_1 = require("./arrayUtils");
4
5
  const bigIntLiterals_1 = require("./bigIntLiterals");
5
6
  const bigIntUtils_1 = require("./bigIntUtils");
6
7
  const objectUtils_1 = require("./objectUtils");
@@ -24,14 +25,15 @@ function utxoSum(boxes, tokenId) {
24
25
  return balances[tokenId] || bigIntLiterals_1._0n;
25
26
  }
26
27
  return {
27
- nanoErgs: balances[NANOERGS_TOKEN_ID],
28
+ nanoErgs: balances[NANOERGS_TOKEN_ID] || bigIntLiterals_1._0n,
28
29
  tokens: Object.keys(balances)
29
30
  .filter((x) => x !== NANOERGS_TOKEN_ID)
30
31
  .map((tokenId) => ({ tokenId, amount: balances[tokenId] }))
31
32
  };
32
33
  }
33
34
  exports.utxoSum = utxoSum;
34
- function utxoSumResultDiff(amountsA, amountsB) {
35
+ // todo: make it accept arrays of utxos as params
36
+ function utxoDiff(amountsA, amountsB) {
35
37
  const tokens = [];
36
38
  const nanoErgs = amountsA.nanoErgs - amountsB.nanoErgs;
37
39
  for (const token of amountsA.tokens) {
@@ -42,14 +44,14 @@ function utxoSumResultDiff(amountsA, amountsB) {
42
44
  }
43
45
  return { nanoErgs, tokens };
44
46
  }
45
- exports.utxoSumResultDiff = utxoSumResultDiff;
46
- const MIN_REGISTER_NUMBER = 4;
47
- const MAX_REGISTER_NUMBER = 9;
47
+ exports.utxoDiff = utxoDiff;
48
+ const MIN_REGISTERS = 4;
49
+ const MAX_REGISTERS = 9;
48
50
  function areRegistersDenselyPacked(registers) {
49
51
  let lastValueIndex = 0;
50
- for (let i = MIN_REGISTER_NUMBER; i <= MAX_REGISTER_NUMBER; i++) {
52
+ for (let i = MIN_REGISTERS; i <= MAX_REGISTERS; i++) {
51
53
  if (registers[`R${i}`]) {
52
- if (i === MIN_REGISTER_NUMBER) {
54
+ if (i === MIN_REGISTERS) {
53
55
  lastValueIndex = i;
54
56
  continue;
55
57
  }
@@ -62,4 +64,41 @@ function areRegistersDenselyPacked(registers) {
62
64
  return true;
63
65
  }
64
66
  exports.areRegistersDenselyPacked = areRegistersDenselyPacked;
67
+ function utxoFilter(utxos, filterParams) {
68
+ if ((0, arrayUtils_1.isEmpty)(filterParams) || (0, arrayUtils_1.isEmpty)(utxos)) {
69
+ return utxos;
70
+ }
71
+ const { by, max } = filterParams;
72
+ let filtered = utxos;
73
+ if (by) {
74
+ filtered = utxos.filter(by);
75
+ if ((0, arrayUtils_1.isEmpty)(filtered)) {
76
+ return filtered;
77
+ }
78
+ }
79
+ if (!max) {
80
+ return filtered;
81
+ }
82
+ if ((0, objectUtils_1.isDefined)(max.aggregatedDistinctTokens)) {
83
+ const tokenIds = _getDistinctTokenIds(filtered, max.aggregatedDistinctTokens);
84
+ filtered = filtered.filter((utxo) => (0, arrayUtils_1.isEmpty)(utxo.assets) || utxo.assets.every((token) => tokenIds.has(token.tokenId)));
85
+ }
86
+ if ((0, objectUtils_1.isDefined)(max.count) && filtered.length > max.count) {
87
+ filtered = filtered.slice(0, max.count);
88
+ }
89
+ return filtered;
90
+ }
91
+ exports.utxoFilter = utxoFilter;
92
+ function _getDistinctTokenIds(utxos, max) {
93
+ const tokenIds = new Set();
94
+ for (let i = 0; i < utxos.length && tokenIds.size < max; i++) {
95
+ if ((0, arrayUtils_1.isEmpty)(utxos[i].assets) || utxos[i].assets.length > max) {
96
+ continue;
97
+ }
98
+ for (const token of utxos[i].assets) {
99
+ tokenIds.add(token.tokenId);
100
+ }
101
+ }
102
+ return tokenIds;
103
+ }
65
104
  //# sourceMappingURL=boxUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"boxUtils.js","sourceRoot":"","sources":["../../../src/utils/boxUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"boxUtils.js","sourceRoot":"","sources":["../../../src/utils/boxUtils.ts"],"names":[],"mappings":"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"}
@@ -3,17 +3,18 @@ import { NonMandatoryRegisters } from "./registers";
3
3
  import { TokenAmount } from "./token";
4
4
  import { TransactionId } from "./transactions";
5
5
  export type BoxId = string;
6
- type BoxBaseType<AmountType> = {
6
+ export type AmountType = string | bigint;
7
+ type BoxBaseType<T extends AmountType> = {
7
8
  ergoTree: ErgoTree;
8
9
  creationHeight: number;
9
- value: AmountType;
10
- assets: TokenAmount<AmountType>[];
10
+ value: T;
11
+ assets: TokenAmount<T>[];
11
12
  additionalRegisters: NonMandatoryRegisters;
12
13
  };
13
- export type BoxCandidate<AmountType> = BoxBaseType<AmountType> & {
14
+ export type BoxCandidate<T extends AmountType> = BoxBaseType<T> & {
14
15
  boxId?: BoxId;
15
16
  };
16
- export type Box<AmountType> = BoxBaseType<AmountType> & {
17
+ export type Box<T extends AmountType> = BoxBaseType<T> & {
17
18
  boxId: BoxId;
18
19
  transactionId: TransactionId;
19
20
  index: number;
@@ -1,4 +1,5 @@
1
1
  import { SortingDirection, SortingSelector } from "../types";
2
+ type ObjectSelector<T> = (item: T) => T[keyof T];
2
3
  export declare function isEmpty<T extends object>(obj?: T): obj is undefined;
3
4
  export declare function isEmpty<T>(array?: T[]): array is undefined;
4
5
  export declare function some<T extends object>(obj?: T): obj is T;
@@ -13,9 +14,13 @@ export declare function hasDuplicates<T>(array: T[]): boolean;
13
14
  /**
14
15
  * Check for duplicate keys in complex elements
15
16
  */
16
- export declare function hasDuplicatesBy<T>(array: T[], selector: (value: T) => unknown): boolean;
17
+ export declare function hasDuplicatesBy<T>(array: T[], selector: ObjectSelector<T>): boolean;
17
18
  export declare function chunk<T>(array: T[], size: number): T[][];
18
19
  export declare function orderBy<T>(array: T[], iteratee: SortingSelector<T>, order?: SortingDirection): T[];
19
20
  export declare function areEqual<T>(array1: ArrayLike<T>, array2: ArrayLike<T>): boolean;
21
+ export declare function areEqualBy<T>(array1: ArrayLike<T>, array2: ArrayLike<T>, selector: ObjectSelector<T>): boolean;
20
22
  export declare function startsWith<T>(array: ArrayLike<T>, target: ArrayLike<T>): boolean;
21
23
  export declare function endsWith<T>(array: ArrayLike<T>, target: ArrayLike<T>): boolean;
24
+ export declare function uniq<T>(array: Array<T>): Array<T>;
25
+ export declare function uniqBy<T>(array: Array<T>, selector: ObjectSelector<T>, selection?: "keep-first" | "keep-last"): Array<T>;
26
+ export {};
@@ -69,6 +69,20 @@ export function areEqual(array1, array2) {
69
69
  }
70
70
  return true;
71
71
  }
72
+ export function areEqualBy(array1, array2, selector) {
73
+ if (array1 === array2) {
74
+ return true;
75
+ }
76
+ if (array1.length != array2.length) {
77
+ return false;
78
+ }
79
+ for (let i = 0; i < array1.length; i++) {
80
+ if (selector(array1[i]) !== selector(array2[i])) {
81
+ return false;
82
+ }
83
+ }
84
+ return true;
85
+ }
72
86
  export function startsWith(array, target) {
73
87
  if (array === target) {
74
88
  return true;
@@ -98,4 +112,24 @@ export function endsWith(array, target) {
98
112
  }
99
113
  return true;
100
114
  }
115
+ export function uniq(array) {
116
+ if (isEmpty(array)) {
117
+ return array;
118
+ }
119
+ return Array.from(new Set(array));
120
+ }
121
+ export function uniqBy(array, selector, selection = "keep-first") {
122
+ if (isEmpty(array)) {
123
+ return array;
124
+ }
125
+ return Array.from(array
126
+ .reduce((map, e) => {
127
+ const key = selector(e);
128
+ if (selection === "keep-first" && map.has(key)) {
129
+ return map;
130
+ }
131
+ return map.set(key, e);
132
+ }, new Map())
133
+ .values());
134
+ }
101
135
  //# sourceMappingURL=arrayUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"arrayUtils.js","sourceRoot":"","sources":["../../../src/utils/arrayUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arrayUtils.js","sourceRoot":"","sources":["../../../src/utils/arrayUtils.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,21 @@
1
- import { Amount, NonMandatoryRegisters, TokenId } from "../types";
2
- export declare function utxoSum(boxes: MinimalBoxAmounts): BoxAmounts;
1
+ import { Amount, AmountType, Box, NonMandatoryRegisters, TokenAmount, TokenId } from "../types";
2
+ export declare function utxoSum(boxes: MinimalBoxAmounts): BoxSummary;
3
3
  export declare function utxoSum(boxes: MinimalBoxAmounts, tokenId: TokenId): bigint;
4
- export declare function utxoSumResultDiff(amountsA: BoxAmounts, amountsB: BoxAmounts): BoxAmounts;
4
+ export declare function utxoDiff(amountsA: BoxSummary, amountsB: BoxSummary): BoxSummary;
5
5
  export declare function areRegistersDenselyPacked(registers: NonMandatoryRegisters): boolean;
6
- type TokenAmount<AmountType> = {
7
- tokenId: TokenId;
8
- amount: AmountType;
6
+ export declare function utxoFilter<T extends AmountType>(utxos: Box<T>[], filterParams: UTxOFilterParams<T>): Box<T>[];
7
+ export type UTxOFilterParams<T extends AmountType> = {
8
+ by?: (utxo: Box<T>) => boolean;
9
+ max?: {
10
+ count?: number;
11
+ aggregatedDistinctTokens?: number;
12
+ };
9
13
  };
10
- export type BoxAmounts = {
14
+ export type BoxSummary = {
11
15
  nanoErgs: bigint;
12
16
  tokens: TokenAmount<bigint>[];
13
17
  };
14
- type MinimalBoxAmounts = readonly {
18
+ export type MinimalBoxAmounts = readonly {
15
19
  value: Amount;
16
20
  assets: TokenAmount<Amount>[];
17
21
  }[];
18
- export {};
@@ -1,3 +1,4 @@
1
+ import { isEmpty } from "./arrayUtils";
1
2
  import { _0n } from "./bigIntLiterals";
2
3
  import { ensureBigInt } from "./bigIntUtils";
3
4
  import { isDefined, isUndefined } from "./objectUtils";
@@ -21,13 +22,14 @@ export function utxoSum(boxes, tokenId) {
21
22
  return balances[tokenId] || _0n;
22
23
  }
23
24
  return {
24
- nanoErgs: balances[NANOERGS_TOKEN_ID],
25
+ nanoErgs: balances[NANOERGS_TOKEN_ID] || _0n,
25
26
  tokens: Object.keys(balances)
26
27
  .filter((x) => x !== NANOERGS_TOKEN_ID)
27
28
  .map((tokenId) => ({ tokenId, amount: balances[tokenId] }))
28
29
  };
29
30
  }
30
- export function utxoSumResultDiff(amountsA, amountsB) {
31
+ // todo: make it accept arrays of utxos as params
32
+ export function utxoDiff(amountsA, amountsB) {
31
33
  const tokens = [];
32
34
  const nanoErgs = amountsA.nanoErgs - amountsB.nanoErgs;
33
35
  for (const token of amountsA.tokens) {
@@ -38,13 +40,13 @@ export function utxoSumResultDiff(amountsA, amountsB) {
38
40
  }
39
41
  return { nanoErgs, tokens };
40
42
  }
41
- const MIN_REGISTER_NUMBER = 4;
42
- const MAX_REGISTER_NUMBER = 9;
43
+ const MIN_REGISTERS = 4;
44
+ const MAX_REGISTERS = 9;
43
45
  export function areRegistersDenselyPacked(registers) {
44
46
  let lastValueIndex = 0;
45
- for (let i = MIN_REGISTER_NUMBER; i <= MAX_REGISTER_NUMBER; i++) {
47
+ for (let i = MIN_REGISTERS; i <= MAX_REGISTERS; i++) {
46
48
  if (registers[`R${i}`]) {
47
- if (i === MIN_REGISTER_NUMBER) {
49
+ if (i === MIN_REGISTERS) {
48
50
  lastValueIndex = i;
49
51
  continue;
50
52
  }
@@ -56,4 +58,40 @@ export function areRegistersDenselyPacked(registers) {
56
58
  }
57
59
  return true;
58
60
  }
61
+ export function utxoFilter(utxos, filterParams) {
62
+ if (isEmpty(filterParams) || isEmpty(utxos)) {
63
+ return utxos;
64
+ }
65
+ const { by, max } = filterParams;
66
+ let filtered = utxos;
67
+ if (by) {
68
+ filtered = utxos.filter(by);
69
+ if (isEmpty(filtered)) {
70
+ return filtered;
71
+ }
72
+ }
73
+ if (!max) {
74
+ return filtered;
75
+ }
76
+ if (isDefined(max.aggregatedDistinctTokens)) {
77
+ const tokenIds = _getDistinctTokenIds(filtered, max.aggregatedDistinctTokens);
78
+ filtered = filtered.filter((utxo) => isEmpty(utxo.assets) || utxo.assets.every((token) => tokenIds.has(token.tokenId)));
79
+ }
80
+ if (isDefined(max.count) && filtered.length > max.count) {
81
+ filtered = filtered.slice(0, max.count);
82
+ }
83
+ return filtered;
84
+ }
85
+ function _getDistinctTokenIds(utxos, max) {
86
+ const tokenIds = new Set();
87
+ for (let i = 0; i < utxos.length && tokenIds.size < max; i++) {
88
+ if (isEmpty(utxos[i].assets) || utxos[i].assets.length > max) {
89
+ continue;
90
+ }
91
+ for (const token of utxos[i].assets) {
92
+ tokenIds.add(token.tokenId);
93
+ }
94
+ }
95
+ return tokenIds;
96
+ }
59
97
  //# sourceMappingURL=boxUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"boxUtils.js","sourceRoot":"","sources":["../../../src/utils/boxUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEvD,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAIrC,MAAM,UAAU,OAAO,CAAC,KAAwB,EAAE,OAAiB;IACjE,MAAM,QAAQ,GAAkC,EAAE,CAAC;IAEnD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;QACvB,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,iBAAiB,EAAE;YACzD,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC9F;QAED,IAAI,OAAO,KAAK,iBAAiB,EAAE;YACjC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE;gBAC9B,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE;oBACnD,SAAS;iBACV;gBAED,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;aACzF;SACF;KACF;IAED,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE;QACtB,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC;KACjC;IAED,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,iBAAiB,CAAC;QACrC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,iBAAiB,CAAC;aACtC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;KAC9D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAoB,EAAE,QAAoB;IAC1E,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAEvD,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE;QACnC,MAAM,OAAO,GACX,KAAK,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC;QAE3F,IAAI,OAAO,KAAK,GAAG,EAAE;YACnB,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;SAC1D;KACF;IAED,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B,MAAM,UAAU,yBAAyB,CAAC,SAAgC;IACxE,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,mBAAmB,EAAE,CAAC,IAAI,mBAAmB,EAAE,CAAC,EAAE,EAAE;QAC/D,IAAI,SAAS,CAAC,IAAI,CAAC,EAAiC,CAAC,EAAE;YACrD,IAAI,CAAC,KAAK,mBAAmB,EAAE;gBAC7B,cAAc,GAAG,CAAC,CAAC;gBACnB,SAAS;aACV;YAED,IAAI,CAAC,GAAG,cAAc,GAAG,CAAC,EAAE;gBAC1B,OAAO,KAAK,CAAC;aACd;YAED,cAAc,GAAG,CAAC,CAAC;SACpB;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"boxUtils.js","sourceRoot":"","sources":["../../../src/utils/boxUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEvD,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAIrC,MAAM,UAAU,OAAO,CAAC,KAAwB,EAAE,OAAiB;IACjE,MAAM,QAAQ,GAAkC,EAAE,CAAC;IAEnD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;QACvB,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,iBAAiB,EAAE;YACzD,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC9F;QAED,IAAI,OAAO,KAAK,iBAAiB,EAAE;YACjC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE;gBAC9B,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE;oBACnD,SAAS;iBACV;gBAED,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;aACzF;SACF;KACF;IAED,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE;QACtB,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC;KACjC;IAED,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG;QAC5C,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,iBAAiB,CAAC;aACtC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;KAC9D,CAAC;AACJ,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,QAAQ,CAAC,QAAoB,EAAE,QAAoB;IACjE,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAEvD,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE;QACnC,MAAM,OAAO,GACX,KAAK,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC;QAE3F,IAAI,OAAO,KAAK,GAAG,EAAE;YACnB,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;SAC1D;KACF;IAED,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,aAAa,GAAG,CAAC,CAAC;AAExB,MAAM,UAAU,yBAAyB,CAAC,SAAgC;IACxE,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,aAAa,EAAE,CAAC,IAAI,aAAa,EAAE,CAAC,EAAE,EAAE;QACnD,IAAI,SAAS,CAAC,IAAI,CAAC,EAAiC,CAAC,EAAE;YACrD,IAAI,CAAC,KAAK,aAAa,EAAE;gBACvB,cAAc,GAAG,CAAC,CAAC;gBACnB,SAAS;aACV;YAED,IAAI,CAAC,GAAG,cAAc,GAAG,CAAC,EAAE;gBAC1B,OAAO,KAAK,CAAC;aACd;YAED,cAAc,GAAG,CAAC,CAAC;SACpB;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,KAAe,EACf,YAAiC;IAEjC,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;QAC3C,OAAO,KAAK,CAAC;KACd;IAED,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC;IACjC,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,IAAI,EAAE,EAAE;QACN,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;YACrB,OAAO,QAAQ,CAAC;SACjB;KACF;IAED,IAAI,CAAC,GAAG,EAAE;QACR,OAAO,QAAQ,CAAC;KACjB;IAED,IAAI,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE;QAC3C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,EAAE,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAC9E,QAAQ,GAAG,QAAQ,CAAC,MAAM,CACxB,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAC5F,CAAC;KACH;IAED,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE;QACvD,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;KACzC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAwB,EAAE,GAAW;IACjE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QAC5D,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE;YAC5D,SAAS;SACV;QAED,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;YACnC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC7B;KACF;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}