@unchainedshop/core-assortments 3.0.0-rc4 → 3.0.0-rc5
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/lib/utils/tree-zipper/zipTreeByDeepness.d.ts +5 -2
- package/lib/utils/tree-zipper/zipTreeByDeepness.d.ts.map +1 -1
- package/lib/utils/tree-zipper/zipTreeByDeepness.js +11 -6
- package/lib/utils/tree-zipper/zipTreeByDeepness.js.map +1 -1
- package/lib/utils/tree-zipper/zipTreeBySimplyFlattening.d.ts.map +1 -1
- package/lib/utils/tree-zipper/zipTreeBySimplyFlattening.js +1 -5
- package/lib/utils/tree-zipper/zipTreeBySimplyFlattening.js.map +1 -1
- package/package.json +5 -7
- package/src/utils/tree-zipper/zipTreeByDeepness.ts +16 -10
- package/src/utils/tree-zipper/zipTreeBySimplyFlattening.test.ts +11 -0
- package/src/utils/tree-zipper/zipTreeBySimplyFlattening.ts +1 -5
|
@@ -5,8 +5,11 @@ export declare const divideTreeByLevels: (array: Tree<string>, level?: number) =
|
|
|
5
5
|
level: number;
|
|
6
6
|
items: Array<string>;
|
|
7
7
|
}>;
|
|
8
|
-
export declare const concatItemsByLevels: (levelArray:
|
|
9
|
-
|
|
8
|
+
export declare const concatItemsByLevels: (levelArray: Array<{
|
|
9
|
+
level: number;
|
|
10
|
+
items: Array<string>;
|
|
11
|
+
}>) => string[][][];
|
|
12
|
+
export declare const shuffleEachLevel: (unshuffledLevels: string[][][]) => string[][];
|
|
10
13
|
declare const _default: (tree: Tree<string>) => Array<string>;
|
|
11
14
|
export default _default;
|
|
12
15
|
//# sourceMappingURL=zipTreeByDeepness.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zipTreeByDeepness.d.ts","sourceRoot":"","sources":["../../../src/utils/tree-zipper/zipTreeByDeepness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"zipTreeByDeepness.d.ts","sourceRoot":"","sources":["../../../src/utils/tree-zipper/zipTreeByDeepness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5C,eAAO,MAAM,MAAM,GAAI,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,MAAM,KAAG,KAAK,CAAC,CAAC,CACP,CAAC;AAEzD,eAAO,MAAM,qBAAqB,GAAI,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,UAGhE,CAAC;AAEF,eAAO,MAAM,kBAAkB,UACtB,IAAI,CAAC,MAAM,CAAC,qBAElB,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CAAE,CAgB/C,CAAC;AAEF,eAAO,MAAM,mBAAmB,eAAgB,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC,iBAS7F,CAAC;AAaF,eAAO,MAAM,gBAAgB,qBAAsB,MAAM,EAAE,EAAE,EAAE,eAQ9D,CAAC;+BAEoB,IAAI,CAAC,MAAM,CAAC,KAAG,KAAK,CAAC,MAAM,CAAC;AAAlD,wBAKE"}
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
import zip from 'ramda/es/zip';
|
|
2
|
-
import flatten from 'ramda/es/flatten';
|
|
3
|
-
import filter from 'ramda/es/filter';
|
|
4
|
-
import pipe from 'ramda/es/pipe';
|
|
5
1
|
export const fillUp = (arr, size) => [...arr, ...new Array(size).fill(null)].slice(0, size);
|
|
6
2
|
export const fillToSameLengthArray = (a, b) => {
|
|
7
3
|
const length = Math.max(a.length, b.length);
|
|
@@ -30,6 +26,16 @@ export const concatItemsByLevels = (levelArray) => {
|
|
|
30
26
|
};
|
|
31
27
|
}, {}));
|
|
32
28
|
};
|
|
29
|
+
const zip = function zip(a, b) {
|
|
30
|
+
const len = Math.min(a.length, b.length);
|
|
31
|
+
const rv = Array(len);
|
|
32
|
+
let idx = 0;
|
|
33
|
+
while (idx < len) {
|
|
34
|
+
rv[idx] = [a[idx], b[idx]];
|
|
35
|
+
idx += 1;
|
|
36
|
+
}
|
|
37
|
+
return rv;
|
|
38
|
+
};
|
|
33
39
|
export const shuffleEachLevel = (unshuffledLevels) => {
|
|
34
40
|
return unshuffledLevels.map((subArrays) => {
|
|
35
41
|
const shuffled = subArrays.reduce((a, b) => {
|
|
@@ -43,7 +49,6 @@ export default (tree) => {
|
|
|
43
49
|
const levels = divideTreeByLevels(tree);
|
|
44
50
|
const concattedLevels = concatItemsByLevels(levels);
|
|
45
51
|
const items = shuffleEachLevel(concattedLevels);
|
|
46
|
-
|
|
47
|
-
return zipped;
|
|
52
|
+
return items.flat(Infinity).filter(Boolean);
|
|
48
53
|
};
|
|
49
54
|
//# sourceMappingURL=zipTreeByDeepness.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zipTreeByDeepness.js","sourceRoot":"","sources":["../../../src/utils/tree-zipper/zipTreeByDeepness.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"zipTreeByDeepness.js","sourceRoot":"","sources":["../../../src/utils/tree-zipper/zipTreeByDeepness.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,MAAM,GAAG,CAAI,GAAa,EAAE,IAAY,EAAY,EAAE,CACjE,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAI,CAAW,EAAE,CAAW,EAAE,EAAE;IACnE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,KAAmB,EACnB,KAAK,GAAG,CAAC,EACuC,EAAE;IAClD,MAAM,YAAY,GAAkB,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QAC7D,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,GAAG,CAAC;QACb,CAAC;QACD,OAAO,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC,EAAE,EAAE,CAAkB,CAAC;IAExB,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QAC5C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,kBAAkB,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAmD,CAAC;IAEzD,OAAO,CAAC,YAAY,CAAC,MAAM,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,GAAG,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChG,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,UAA0D,EAAE,EAAE;IAChG,OAAO,MAAM,CAAC,MAAM,CAClB,UAAU,CAAC,MAAM,CAAuC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;QAChF,OAAO;YACL,GAAG,GAAG;YACN,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC;SACxC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,GAAG,GAAG,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACtB,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,OAAO,GAAG,GAAG,GAAG,EAAE,CAAC;QACjB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3B,GAAG,IAAI,CAAC,CAAC;IACX,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,gBAA8B,EAAE,EAAE;IACjE,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QACxC,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAW,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACnD,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAChE,OAAO,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACxC,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,eAAe,CAAC,IAAkB,EAAiB,EAAE;IACnD,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,eAAe,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAChD,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAyB,CAAC;AACtE,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zipTreeBySimplyFlattening.d.ts","sourceRoot":"","sources":["../../../src/utils/tree-zipper/zipTreeBySimplyFlattening.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;+
|
|
1
|
+
{"version":3,"file":"zipTreeBySimplyFlattening.d.ts","sourceRoot":"","sources":["../../../src/utils/tree-zipper/zipTreeBySimplyFlattening.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;+BAEtB,IAAI,CAAC,MAAM,CAAC,KAAG,KAAK,CAAC,MAAM,CAAC;AAAlD,wBAEE"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import flatten from 'ramda/es/flatten';
|
|
2
|
-
import filter from 'ramda/es/filter';
|
|
3
|
-
import pipe from 'ramda/es/pipe';
|
|
4
1
|
export default (tree) => {
|
|
5
|
-
|
|
6
|
-
return zipped;
|
|
2
|
+
return tree.flat(Number.MAX_SAFE_INTEGER).filter(Boolean);
|
|
7
3
|
};
|
|
8
4
|
//# sourceMappingURL=zipTreeBySimplyFlattening.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zipTreeBySimplyFlattening.js","sourceRoot":"","sources":["../../../src/utils/tree-zipper/zipTreeBySimplyFlattening.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"zipTreeBySimplyFlattening.js","sourceRoot":"","sources":["../../../src/utils/tree-zipper/zipTreeBySimplyFlattening.ts"],"names":[],"mappings":"AAEA,eAAe,CAAC,IAAkB,EAAiB,EAAE;IACnD,OAAQ,IAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAkB,CAAC;AAC7F,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unchainedshop/core-assortments",
|
|
3
|
-
"version": "3.0.0-
|
|
3
|
+
"version": "3.0.0-rc5",
|
|
4
4
|
"main": "lib/assortments-index.js",
|
|
5
5
|
"types": "lib/assortments-index.d.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -28,15 +28,13 @@
|
|
|
28
28
|
},
|
|
29
29
|
"homepage": "https://github.com/unchainedshop/unchained#readme",
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@unchainedshop/events": "^3.0.0-
|
|
32
|
-
"@unchainedshop/file-upload": "^3.0.0-
|
|
33
|
-
"@unchainedshop/logger": "^3.0.0-
|
|
34
|
-
"@unchainedshop/utils": "^3.0.0-
|
|
35
|
-
"ramda": "^0.30.1"
|
|
31
|
+
"@unchainedshop/events": "^3.0.0-rc5",
|
|
32
|
+
"@unchainedshop/file-upload": "^3.0.0-rc5",
|
|
33
|
+
"@unchainedshop/logger": "^3.0.0-rc5",
|
|
34
|
+
"@unchainedshop/utils": "^3.0.0-rc5"
|
|
36
35
|
},
|
|
37
36
|
"devDependencies": {
|
|
38
37
|
"@types/node": "^22.10.2",
|
|
39
|
-
"cross-env": "^7.0.3",
|
|
40
38
|
"jest": "^29.7.0",
|
|
41
39
|
"ts-jest": "^29.2.5",
|
|
42
40
|
"typescript": "^5.7.2"
|
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
import { Tree } from '@unchainedshop/utils';
|
|
2
|
-
import zip from 'ramda/es/zip';
|
|
3
|
-
import flatten from 'ramda/es/flatten';
|
|
4
|
-
import filter from 'ramda/es/filter';
|
|
5
|
-
import pipe from 'ramda/es/pipe';
|
|
6
2
|
|
|
7
3
|
export const fillUp = <T>(arr: Array<T>, size: number): Array<T> =>
|
|
8
4
|
[...arr, ...new Array(size).fill(null)].slice(0, size);
|
|
@@ -33,9 +29,9 @@ export const divideTreeByLevels = (
|
|
|
33
29
|
return [currentLevel.length && { level, items: currentLevel }, ...nextLevels].filter(Boolean);
|
|
34
30
|
};
|
|
35
31
|
|
|
36
|
-
export const concatItemsByLevels = (levelArray
|
|
32
|
+
export const concatItemsByLevels = (levelArray: Array<{ level: number; items: Array<string> }>) => {
|
|
37
33
|
return Object.values(
|
|
38
|
-
levelArray.reduce((acc, { level, items }) => {
|
|
34
|
+
levelArray.reduce<Record<number, Array<Array<string>>>>((acc, { level, items }) => {
|
|
39
35
|
return {
|
|
40
36
|
...acc,
|
|
41
37
|
[level]: [...(acc[level] || []), items],
|
|
@@ -44,9 +40,20 @@ export const concatItemsByLevels = (levelArray): Tree<string> => {
|
|
|
44
40
|
);
|
|
45
41
|
};
|
|
46
42
|
|
|
47
|
-
|
|
43
|
+
const zip = function zip(a, b) {
|
|
44
|
+
const len = Math.min(a.length, b.length);
|
|
45
|
+
const rv = Array(len);
|
|
46
|
+
let idx = 0;
|
|
47
|
+
while (idx < len) {
|
|
48
|
+
rv[idx] = [a[idx], b[idx]];
|
|
49
|
+
idx += 1;
|
|
50
|
+
}
|
|
51
|
+
return rv;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
export const shuffleEachLevel = (unshuffledLevels: string[][][]) => {
|
|
48
55
|
return unshuffledLevels.map((subArrays) => {
|
|
49
|
-
const shuffled = subArrays.reduce((a, b) => {
|
|
56
|
+
const shuffled = subArrays.reduce<string[]>((a, b) => {
|
|
50
57
|
const [accumulator, currentArray] = fillToSameLengthArray(a, b);
|
|
51
58
|
return zip(accumulator, currentArray);
|
|
52
59
|
}, []);
|
|
@@ -58,6 +65,5 @@ export default (tree: Tree<string>): Array<string> => {
|
|
|
58
65
|
const levels = divideTreeByLevels(tree);
|
|
59
66
|
const concattedLevels = concatItemsByLevels(levels);
|
|
60
67
|
const items = shuffleEachLevel(concattedLevels);
|
|
61
|
-
|
|
62
|
-
return zipped;
|
|
68
|
+
return items.flat(Infinity).filter(Boolean) as any as Array<string>;
|
|
63
69
|
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Tree } from '@unchainedshop/utils';
|
|
2
|
+
import zipTreeBySimplyFlattening from './zipTreeBySimplyFlattening.js';
|
|
3
|
+
|
|
4
|
+
describe('zipTreeBySimplyFlattening', () => {
|
|
5
|
+
it('should return the expected result', () => {
|
|
6
|
+
const array: Tree<string> = ['a', ['b', ['c', 'd']], 'e'];
|
|
7
|
+
const expected = ['a', 'b', 'c', 'd', 'e'];
|
|
8
|
+
|
|
9
|
+
expect(zipTreeBySimplyFlattening(array)).toEqual(expected);
|
|
10
|
+
});
|
|
11
|
+
});
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import { Tree } from '@unchainedshop/utils';
|
|
2
|
-
import flatten from 'ramda/es/flatten';
|
|
3
|
-
import filter from 'ramda/es/filter';
|
|
4
|
-
import pipe from 'ramda/es/pipe';
|
|
5
2
|
|
|
6
3
|
export default (tree: Tree<string>): Array<string> => {
|
|
7
|
-
|
|
8
|
-
return zipped;
|
|
4
|
+
return (tree as string[][]).flat(Number.MAX_SAFE_INTEGER).filter(Boolean) as Array<string>;
|
|
9
5
|
};
|