@nymphjs/sorter 1.0.0-beta.98 → 1.0.0-beta.99
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/CHANGELOG.md +4 -0
- package/lib/Sorter.d.ts +53 -0
- package/lib/Sorter.js +199 -0
- package/lib/Sorter.js.map +1 -0
- package/lib/Sorter.test.d.ts +1 -0
- package/lib/Sorter.test.js +282 -0
- package/lib/Sorter.test.js.map +1 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.js +24 -0
- package/lib/index.js.map +1 -0
- package/lib/testArtifacts.d.ts +10 -0
- package/lib/testArtifacts.js +24 -0
- package/lib/testArtifacts.js.map +1 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [1.0.0-beta.99](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.98...v1.0.0-beta.99) (2025-11-26)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @nymphjs/sorter
|
|
9
|
+
|
|
6
10
|
# [1.0.0-beta.98](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.97...v1.0.0-beta.98) (2025-10-24)
|
|
7
11
|
|
|
8
12
|
### Features
|
package/lib/Sorter.d.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export type SortOptions = {
|
|
2
|
+
/** Sort case sensitively. */
|
|
3
|
+
caseSensitive?: boolean;
|
|
4
|
+
/** Reverse the sort order. */
|
|
5
|
+
reverse?: boolean;
|
|
6
|
+
/** Options to pass to Intl.Collator for string comparisons. This overrides the caseSensitive options. */
|
|
7
|
+
collatorOptions?: Intl.CollatorOptions;
|
|
8
|
+
/** A custom comparator to use. This overrides all other options except reverse. */
|
|
9
|
+
comparator?: (a: any, b: any) => number;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Entity Array Sorter
|
|
13
|
+
*
|
|
14
|
+
* Sorting functions sort the array in place and also return the sorted array.
|
|
15
|
+
*/
|
|
16
|
+
export default class Sorter<Entity extends Object> {
|
|
17
|
+
array: (Entity & {
|
|
18
|
+
[k: string]: any;
|
|
19
|
+
})[];
|
|
20
|
+
private sortProperty;
|
|
21
|
+
private sortParent;
|
|
22
|
+
private collator;
|
|
23
|
+
private comparator;
|
|
24
|
+
constructor(array: Entity[]);
|
|
25
|
+
private _arraySortProperty;
|
|
26
|
+
/**
|
|
27
|
+
* Sort an array of entities hierarchically by a specified property's value.
|
|
28
|
+
*
|
|
29
|
+
* Entities will be placed immediately after their parents. The
|
|
30
|
+
* `parentProperty` property, if present, should hold either null, undefined,
|
|
31
|
+
* or the entity's parent.
|
|
32
|
+
*
|
|
33
|
+
* @param property The name of the property to sort entities by.
|
|
34
|
+
* @param parentProperty The name of the property which holds the parent of the entity.
|
|
35
|
+
*/
|
|
36
|
+
hsort(property: string, parentProperty: string, { caseSensitive, reverse, collatorOptions, comparator, }?: SortOptions): Entity[];
|
|
37
|
+
/**
|
|
38
|
+
* Sort an array of entities by parent and a specified property's value.
|
|
39
|
+
*
|
|
40
|
+
* Entities' will be sorted by their parents' properties, then the entities'
|
|
41
|
+
* properties.
|
|
42
|
+
*
|
|
43
|
+
* @param property The name of the property to sort entities by.
|
|
44
|
+
* @param parentProperty The name of the property which holds the parent of the entity.
|
|
45
|
+
*/
|
|
46
|
+
psort(property: string, parentProperty: string, { caseSensitive, reverse, collatorOptions, comparator, }?: SortOptions): Entity[];
|
|
47
|
+
/**
|
|
48
|
+
* Sort an array of entities by a specified property's value.
|
|
49
|
+
*
|
|
50
|
+
* @param property The name of the property to sort entities by.
|
|
51
|
+
*/
|
|
52
|
+
sort(property: string, { caseSensitive, reverse, collatorOptions, comparator, }?: SortOptions): Entity[];
|
|
53
|
+
}
|
package/lib/Sorter.js
ADDED
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* Entity Array Sorter
|
|
5
|
+
*
|
|
6
|
+
* Sorting functions sort the array in place and also return the sorted array.
|
|
7
|
+
*/
|
|
8
|
+
class Sorter {
|
|
9
|
+
constructor(array) {
|
|
10
|
+
this.sortProperty = null;
|
|
11
|
+
this.sortParent = null;
|
|
12
|
+
this.collator = new Intl.Collator();
|
|
13
|
+
this.comparator = undefined;
|
|
14
|
+
this.array = array;
|
|
15
|
+
}
|
|
16
|
+
_arraySortProperty(a, b) {
|
|
17
|
+
const prop = this.sortProperty;
|
|
18
|
+
const parent = this.sortParent;
|
|
19
|
+
if (parent != null &&
|
|
20
|
+
a[parent] instanceof Object &&
|
|
21
|
+
b[parent] instanceof Object) {
|
|
22
|
+
const aParentProp = a[parent][prop];
|
|
23
|
+
const bParentProp = b[parent][prop];
|
|
24
|
+
if (typeof aParentProp !== 'undefined' ||
|
|
25
|
+
typeof bParentProp !== 'undefined') {
|
|
26
|
+
if (this.comparator != null) {
|
|
27
|
+
const result = this.comparator(aParentProp, bParentProp);
|
|
28
|
+
if (result !== 0) {
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
else if (typeof aParentProp === 'string' &&
|
|
33
|
+
typeof bParentProp === 'string') {
|
|
34
|
+
const result = this.collator.compare(aParentProp, bParentProp);
|
|
35
|
+
if (result !== 0) {
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
else if (aParentProp > bParentProp) {
|
|
40
|
+
return 1;
|
|
41
|
+
}
|
|
42
|
+
else if (aParentProp < bParentProp) {
|
|
43
|
+
return -1;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// If they have the same parent, order them by their own prop.
|
|
48
|
+
const aProp = a[prop];
|
|
49
|
+
const bProp = b[prop];
|
|
50
|
+
if (this.comparator != null) {
|
|
51
|
+
return this.comparator(aProp, bProp);
|
|
52
|
+
}
|
|
53
|
+
else if (typeof aProp === 'string' && typeof bProp === 'string') {
|
|
54
|
+
return this.collator.compare(aProp, bProp);
|
|
55
|
+
}
|
|
56
|
+
else if (aProp > bProp) {
|
|
57
|
+
return 1;
|
|
58
|
+
}
|
|
59
|
+
else if (aProp < bProp) {
|
|
60
|
+
return -1;
|
|
61
|
+
}
|
|
62
|
+
return 0;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Sort an array of entities hierarchically by a specified property's value.
|
|
66
|
+
*
|
|
67
|
+
* Entities will be placed immediately after their parents. The
|
|
68
|
+
* `parentProperty` property, if present, should hold either null, undefined,
|
|
69
|
+
* or the entity's parent.
|
|
70
|
+
*
|
|
71
|
+
* @param property The name of the property to sort entities by.
|
|
72
|
+
* @param parentProperty The name of the property which holds the parent of the entity.
|
|
73
|
+
*/
|
|
74
|
+
hsort(property, parentProperty, { caseSensitive = false, reverse = false, collatorOptions = undefined, comparator = undefined, } = {}) {
|
|
75
|
+
if (typeof parentProperty === 'undefined' || parentProperty === null) {
|
|
76
|
+
// Just sort by the requested property.
|
|
77
|
+
this.sort(property, {
|
|
78
|
+
caseSensitive,
|
|
79
|
+
reverse,
|
|
80
|
+
collatorOptions,
|
|
81
|
+
comparator,
|
|
82
|
+
});
|
|
83
|
+
return this.array;
|
|
84
|
+
}
|
|
85
|
+
this.sortProperty = property;
|
|
86
|
+
this.sortParent = null;
|
|
87
|
+
this.collator = new Intl.Collator(undefined, collatorOptions || {
|
|
88
|
+
sensitivity: caseSensitive ? 'case' : 'base',
|
|
89
|
+
});
|
|
90
|
+
this.comparator = comparator;
|
|
91
|
+
const sort = (array) => {
|
|
92
|
+
// Sort by the requested property.
|
|
93
|
+
array.sort(this._arraySortProperty.bind(this));
|
|
94
|
+
if (reverse) {
|
|
95
|
+
array.reverse();
|
|
96
|
+
}
|
|
97
|
+
return array;
|
|
98
|
+
};
|
|
99
|
+
// Pick out all of the children.
|
|
100
|
+
const guidEntries = {};
|
|
101
|
+
const newEntries = new Map();
|
|
102
|
+
// There is no incrementor in this for loop on purpose. It is incremented
|
|
103
|
+
// conditionally.
|
|
104
|
+
for (let i = 0; i < this.array.length;) {
|
|
105
|
+
const entity = this.array[i];
|
|
106
|
+
const parent = entity[parentProperty];
|
|
107
|
+
if (parent == null) {
|
|
108
|
+
i++;
|
|
109
|
+
}
|
|
110
|
+
else if (parent.guid != null) {
|
|
111
|
+
this.array.splice(i, 1);
|
|
112
|
+
if (!(parent.guid in guidEntries)) {
|
|
113
|
+
guidEntries[parent.guid] = [];
|
|
114
|
+
}
|
|
115
|
+
guidEntries[parent.guid].push(entity);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
this.array.splice(i, 1);
|
|
119
|
+
let entries = [];
|
|
120
|
+
if (newEntries.has(parent)) {
|
|
121
|
+
entries = newEntries.get(parent) || [];
|
|
122
|
+
}
|
|
123
|
+
entries.push(entity);
|
|
124
|
+
newEntries.set(parent, entries);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Sort the top level entries.
|
|
128
|
+
sort(this.array);
|
|
129
|
+
// Now place all of the children back in order.
|
|
130
|
+
for (let i = 0; i < this.array.length; i++) {
|
|
131
|
+
const entity = this.array[i];
|
|
132
|
+
if (entity.guid != null) {
|
|
133
|
+
if (entity.guid in guidEntries) {
|
|
134
|
+
this.array.splice(i + 1, 0, ...sort(guidEntries[entity.guid]));
|
|
135
|
+
delete guidEntries[entity.guid];
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
if (newEntries.has(entity)) {
|
|
140
|
+
this.array.splice(i + 1, 0, ...sort(newEntries.get(entity.guid) || []));
|
|
141
|
+
newEntries.delete(entity);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Now place any orphans on the end.
|
|
146
|
+
for (let orphans of Object.values(guidEntries)) {
|
|
147
|
+
this.array.splice(this.array.length, 0, ...sort(orphans));
|
|
148
|
+
}
|
|
149
|
+
for (let [parent, orphans] of newEntries) {
|
|
150
|
+
this.array.splice(this.array.length, 0, ...sort(orphans));
|
|
151
|
+
}
|
|
152
|
+
return this.array;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Sort an array of entities by parent and a specified property's value.
|
|
156
|
+
*
|
|
157
|
+
* Entities' will be sorted by their parents' properties, then the entities'
|
|
158
|
+
* properties.
|
|
159
|
+
*
|
|
160
|
+
* @param property The name of the property to sort entities by.
|
|
161
|
+
* @param parentProperty The name of the property which holds the parent of the entity.
|
|
162
|
+
*/
|
|
163
|
+
psort(property, parentProperty, { caseSensitive = false, reverse = false, collatorOptions = undefined, comparator = undefined, } = {}) {
|
|
164
|
+
// Sort by the requested property.
|
|
165
|
+
this.sortProperty = property;
|
|
166
|
+
this.sortParent = parentProperty;
|
|
167
|
+
this.collator = new Intl.Collator(undefined, collatorOptions || {
|
|
168
|
+
sensitivity: caseSensitive ? 'case' : 'base',
|
|
169
|
+
caseFirst: 'false',
|
|
170
|
+
});
|
|
171
|
+
this.comparator = comparator;
|
|
172
|
+
this.array.sort(this._arraySortProperty.bind(this));
|
|
173
|
+
if (reverse) {
|
|
174
|
+
this.array.reverse();
|
|
175
|
+
}
|
|
176
|
+
return this.array;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Sort an array of entities by a specified property's value.
|
|
180
|
+
*
|
|
181
|
+
* @param property The name of the property to sort entities by.
|
|
182
|
+
*/
|
|
183
|
+
sort(property, { caseSensitive = false, reverse = false, collatorOptions = undefined, comparator = undefined, } = {}) {
|
|
184
|
+
// Sort by the requested property.
|
|
185
|
+
this.sortProperty = property;
|
|
186
|
+
this.sortParent = null;
|
|
187
|
+
this.collator = new Intl.Collator(undefined, collatorOptions || {
|
|
188
|
+
sensitivity: caseSensitive ? 'case' : 'base',
|
|
189
|
+
});
|
|
190
|
+
this.comparator = comparator;
|
|
191
|
+
this.array.sort(this._arraySortProperty.bind(this));
|
|
192
|
+
if (reverse) {
|
|
193
|
+
this.array.reverse();
|
|
194
|
+
}
|
|
195
|
+
return this.array;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
exports.default = Sorter;
|
|
199
|
+
//# sourceMappingURL=Sorter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sorter.js","sourceRoot":"","sources":["../src/Sorter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const Sorter_1 = __importDefault(require("./Sorter"));
|
|
7
|
+
const testArtifacts_1 = require("./testArtifacts");
|
|
8
|
+
describe('Sorter', () => {
|
|
9
|
+
it('sorts entities by a string property', () => {
|
|
10
|
+
const entities = [];
|
|
11
|
+
for (const prop of ['d', 'a', 'C', 'e', 'b']) {
|
|
12
|
+
const entity = new testArtifacts_1.TestModel();
|
|
13
|
+
entity.name = prop;
|
|
14
|
+
entities.push(entity);
|
|
15
|
+
}
|
|
16
|
+
const sorter = new Sorter_1.default(entities);
|
|
17
|
+
sorter.sort('name');
|
|
18
|
+
expect(sorter.array.map((entity) => entity.name)).toEqual([
|
|
19
|
+
'a',
|
|
20
|
+
'b',
|
|
21
|
+
'C',
|
|
22
|
+
'd',
|
|
23
|
+
'e',
|
|
24
|
+
]);
|
|
25
|
+
sorter.sort('name', { reverse: true });
|
|
26
|
+
expect(sorter.array.map((entity) => entity.name)).toEqual([
|
|
27
|
+
'e',
|
|
28
|
+
'd',
|
|
29
|
+
'C',
|
|
30
|
+
'b',
|
|
31
|
+
'a',
|
|
32
|
+
]);
|
|
33
|
+
});
|
|
34
|
+
it('sorts entities by a number property', () => {
|
|
35
|
+
const entities = [];
|
|
36
|
+
for (const prop of [4, 300, 5, 1, 2]) {
|
|
37
|
+
const entity = new testArtifacts_1.TestModel();
|
|
38
|
+
entity.number = prop;
|
|
39
|
+
entities.push(entity);
|
|
40
|
+
}
|
|
41
|
+
const sorter = new Sorter_1.default(entities);
|
|
42
|
+
sorter.sort('number');
|
|
43
|
+
expect(sorter.array.map((entity) => entity.number)).toEqual([
|
|
44
|
+
1, 2, 4, 5, 300,
|
|
45
|
+
]);
|
|
46
|
+
sorter.sort('number', { reverse: true });
|
|
47
|
+
expect(sorter.array.map((entity) => entity.number)).toEqual([
|
|
48
|
+
300, 5, 4, 2, 1,
|
|
49
|
+
]);
|
|
50
|
+
});
|
|
51
|
+
it('sorts entities case sensitively', () => {
|
|
52
|
+
const entities = [];
|
|
53
|
+
for (const prop of ['America', 'america', 'baseball', 'Bernard', 'zebra']) {
|
|
54
|
+
const entity = new testArtifacts_1.TestModel();
|
|
55
|
+
entity.name = prop;
|
|
56
|
+
entities.push(entity);
|
|
57
|
+
}
|
|
58
|
+
const sorter = new Sorter_1.default(entities);
|
|
59
|
+
sorter.sort('name');
|
|
60
|
+
expect(sorter.array.map((entity) => entity.name)).toEqual([
|
|
61
|
+
'America',
|
|
62
|
+
'america',
|
|
63
|
+
'baseball',
|
|
64
|
+
'Bernard',
|
|
65
|
+
'zebra',
|
|
66
|
+
]);
|
|
67
|
+
sorter.sort('name', { caseSensitive: true });
|
|
68
|
+
expect(sorter.array.map((entity) => entity.name)).toEqual([
|
|
69
|
+
'america',
|
|
70
|
+
'America',
|
|
71
|
+
'baseball',
|
|
72
|
+
'Bernard',
|
|
73
|
+
'zebra',
|
|
74
|
+
]);
|
|
75
|
+
sorter.sort('name', {
|
|
76
|
+
collatorOptions: {
|
|
77
|
+
sensitivity: 'case',
|
|
78
|
+
caseFirst: 'upper',
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
expect(sorter.array.map((entity) => entity.name)).toEqual([
|
|
82
|
+
'America',
|
|
83
|
+
'america',
|
|
84
|
+
'baseball',
|
|
85
|
+
'Bernard',
|
|
86
|
+
'zebra',
|
|
87
|
+
]);
|
|
88
|
+
sorter.sort('name', {
|
|
89
|
+
comparator: (a, b) => (a < b ? -1 : a > b ? 1 : 0),
|
|
90
|
+
});
|
|
91
|
+
expect(sorter.array.map((entity) => entity.name)).toEqual([
|
|
92
|
+
'America',
|
|
93
|
+
'Bernard',
|
|
94
|
+
'america',
|
|
95
|
+
'baseball',
|
|
96
|
+
'zebra',
|
|
97
|
+
]);
|
|
98
|
+
});
|
|
99
|
+
it('sorts entities numerically', () => {
|
|
100
|
+
const entities = [];
|
|
101
|
+
for (const prop of [
|
|
102
|
+
'1: first',
|
|
103
|
+
'10: tenth',
|
|
104
|
+
'40: fourtieth',
|
|
105
|
+
'3: third',
|
|
106
|
+
'2: second',
|
|
107
|
+
]) {
|
|
108
|
+
const entity = new testArtifacts_1.TestModel();
|
|
109
|
+
entity.name = prop;
|
|
110
|
+
entities.push(entity);
|
|
111
|
+
}
|
|
112
|
+
const sorter = new Sorter_1.default(entities);
|
|
113
|
+
sorter.sort('name');
|
|
114
|
+
expect(sorter.array.map((entity) => entity.name)).toEqual([
|
|
115
|
+
'1: first',
|
|
116
|
+
'10: tenth',
|
|
117
|
+
'2: second',
|
|
118
|
+
'3: third',
|
|
119
|
+
'40: fourtieth',
|
|
120
|
+
]);
|
|
121
|
+
sorter.sort('name', {
|
|
122
|
+
collatorOptions: {
|
|
123
|
+
numeric: true,
|
|
124
|
+
},
|
|
125
|
+
});
|
|
126
|
+
expect(sorter.array.map((entity) => entity.name)).toEqual([
|
|
127
|
+
'1: first',
|
|
128
|
+
'2: second',
|
|
129
|
+
'3: third',
|
|
130
|
+
'10: tenth',
|
|
131
|
+
'40: fourtieth',
|
|
132
|
+
]);
|
|
133
|
+
});
|
|
134
|
+
it('sorts entities by parent', () => {
|
|
135
|
+
const firstParent = new testArtifacts_1.TestModel();
|
|
136
|
+
firstParent.name = 'Aaron';
|
|
137
|
+
const secondParent = new testArtifacts_1.TestModel();
|
|
138
|
+
secondParent.name = 'Kevin';
|
|
139
|
+
const entities = [
|
|
140
|
+
(() => {
|
|
141
|
+
const entity = new testArtifacts_1.TestModel();
|
|
142
|
+
entity.name = 'Sarah';
|
|
143
|
+
entity.parent = firstParent;
|
|
144
|
+
return entity;
|
|
145
|
+
})(),
|
|
146
|
+
(() => {
|
|
147
|
+
const entity = new testArtifacts_1.TestModel();
|
|
148
|
+
entity.name = 'Jimmy';
|
|
149
|
+
entity.parent = firstParent;
|
|
150
|
+
return entity;
|
|
151
|
+
})(),
|
|
152
|
+
(() => {
|
|
153
|
+
const entity = new testArtifacts_1.TestModel();
|
|
154
|
+
entity.name = 'Mary';
|
|
155
|
+
entity.parent = firstParent;
|
|
156
|
+
return entity;
|
|
157
|
+
})(),
|
|
158
|
+
(() => {
|
|
159
|
+
const entity = new testArtifacts_1.TestModel();
|
|
160
|
+
entity.name = 'Jessica';
|
|
161
|
+
entity.parent = secondParent;
|
|
162
|
+
return entity;
|
|
163
|
+
})(),
|
|
164
|
+
firstParent,
|
|
165
|
+
secondParent,
|
|
166
|
+
];
|
|
167
|
+
const sorter = new Sorter_1.default(entities);
|
|
168
|
+
sorter.psort('name', 'parent');
|
|
169
|
+
expect(sorter.array.map((entity) => entity.name)).toEqual([
|
|
170
|
+
'Aaron',
|
|
171
|
+
'Jimmy',
|
|
172
|
+
'Kevin',
|
|
173
|
+
'Mary',
|
|
174
|
+
'Sarah',
|
|
175
|
+
'Jessica',
|
|
176
|
+
]);
|
|
177
|
+
});
|
|
178
|
+
it('sorts entities hierarchically', () => {
|
|
179
|
+
const getEntries = () => {
|
|
180
|
+
const firstParent = new testArtifacts_1.TestModel();
|
|
181
|
+
firstParent.name = 'Herbert';
|
|
182
|
+
const secondParent = new testArtifacts_1.TestModel();
|
|
183
|
+
secondParent.name = 'Anthony';
|
|
184
|
+
const subParent = new testArtifacts_1.TestModel();
|
|
185
|
+
subParent.name = 'Lamar';
|
|
186
|
+
subParent.parent = secondParent;
|
|
187
|
+
return [
|
|
188
|
+
(() => {
|
|
189
|
+
const entity = new testArtifacts_1.TestModel();
|
|
190
|
+
entity.name = 'Jacob';
|
|
191
|
+
entity.parent = firstParent;
|
|
192
|
+
return entity;
|
|
193
|
+
})(),
|
|
194
|
+
(() => {
|
|
195
|
+
const entity = new testArtifacts_1.TestModel();
|
|
196
|
+
entity.name = 'Joshua';
|
|
197
|
+
entity.parent = firstParent;
|
|
198
|
+
return entity;
|
|
199
|
+
})(),
|
|
200
|
+
subParent,
|
|
201
|
+
(() => {
|
|
202
|
+
const entity = new testArtifacts_1.TestModel();
|
|
203
|
+
entity.name = 'Peter';
|
|
204
|
+
entity.parent = secondParent;
|
|
205
|
+
return entity;
|
|
206
|
+
})(),
|
|
207
|
+
(() => {
|
|
208
|
+
const entity = new testArtifacts_1.TestModel();
|
|
209
|
+
entity.name = 'Warren';
|
|
210
|
+
entity.parent = subParent;
|
|
211
|
+
return entity;
|
|
212
|
+
})(),
|
|
213
|
+
(() => {
|
|
214
|
+
const entity = new testArtifacts_1.TestModel();
|
|
215
|
+
entity.name = 'Arthur';
|
|
216
|
+
entity.parent = subParent;
|
|
217
|
+
return entity;
|
|
218
|
+
})(),
|
|
219
|
+
firstParent,
|
|
220
|
+
secondParent,
|
|
221
|
+
];
|
|
222
|
+
};
|
|
223
|
+
const entities = [];
|
|
224
|
+
for (let i = 0; i < 100; i++) {
|
|
225
|
+
entities.push(...getEntries());
|
|
226
|
+
}
|
|
227
|
+
const sorter = new Sorter_1.default(entities);
|
|
228
|
+
sorter.hsort('name', 'parent');
|
|
229
|
+
expect(sorter.array.map((entity) => {
|
|
230
|
+
let output = '';
|
|
231
|
+
let parent = entity.parent;
|
|
232
|
+
while (parent) {
|
|
233
|
+
output += '- ';
|
|
234
|
+
parent = parent.parent;
|
|
235
|
+
}
|
|
236
|
+
return output + entity.name;
|
|
237
|
+
})).toEqual([
|
|
238
|
+
...[...Array(100)]
|
|
239
|
+
.map(() => [
|
|
240
|
+
'Anthony',
|
|
241
|
+
'- Lamar',
|
|
242
|
+
'- - Arthur',
|
|
243
|
+
'- - Warren',
|
|
244
|
+
'- Peter',
|
|
245
|
+
])
|
|
246
|
+
.flat(),
|
|
247
|
+
...[...Array(100)].map(() => ['Herbert', '- Jacob', '- Joshua']).flat(),
|
|
248
|
+
]);
|
|
249
|
+
});
|
|
250
|
+
it('sorts array in place', () => {
|
|
251
|
+
const entities = [];
|
|
252
|
+
for (const prop of ['d', 'a', 'c', 'e', 'b']) {
|
|
253
|
+
const entity = new testArtifacts_1.TestModel();
|
|
254
|
+
entity.name = prop;
|
|
255
|
+
entities.push(entity);
|
|
256
|
+
}
|
|
257
|
+
const sorter = new Sorter_1.default(entities);
|
|
258
|
+
const sorted = sorter.sort('name');
|
|
259
|
+
expect(entities.map((entity) => entity.name)).toEqual([
|
|
260
|
+
'a',
|
|
261
|
+
'b',
|
|
262
|
+
'c',
|
|
263
|
+
'd',
|
|
264
|
+
'e',
|
|
265
|
+
]);
|
|
266
|
+
expect(sorter.array.map((entity) => entity.name)).toEqual([
|
|
267
|
+
'a',
|
|
268
|
+
'b',
|
|
269
|
+
'c',
|
|
270
|
+
'd',
|
|
271
|
+
'e',
|
|
272
|
+
]);
|
|
273
|
+
expect(sorted.map((entity) => entity.name)).toEqual([
|
|
274
|
+
'a',
|
|
275
|
+
'b',
|
|
276
|
+
'c',
|
|
277
|
+
'd',
|
|
278
|
+
'e',
|
|
279
|
+
]);
|
|
280
|
+
});
|
|
281
|
+
});
|
|
282
|
+
//# sourceMappingURL=Sorter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sorter.test.js","sourceRoot":"","sources":["../src/Sorter.test.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
ADDED
package/lib/index.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.Sorter = void 0;
|
|
21
|
+
__exportStar(require("./Sorter"), exports);
|
|
22
|
+
const Sorter_1 = __importDefault(require("./Sorter"));
|
|
23
|
+
exports.Sorter = Sorter_1.default;
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,sDAA+C;AACtC,iBADF,gBAAM,CACE"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TestModel = void 0;
|
|
4
|
+
let counter = 0;
|
|
5
|
+
class TestModel {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.guid = 'guid-' + counter++;
|
|
8
|
+
return this;
|
|
9
|
+
}
|
|
10
|
+
$inArray(array) {
|
|
11
|
+
return this.$arraySearch(array) !== -1;
|
|
12
|
+
}
|
|
13
|
+
$arraySearch(array) {
|
|
14
|
+
for (let i = 0; i < array.length; i++) {
|
|
15
|
+
if (array[i] && array[i].guid === this.guid) {
|
|
16
|
+
return i;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return -1;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.TestModel = TestModel;
|
|
23
|
+
TestModel.class = 'TestModel';
|
|
24
|
+
//# sourceMappingURL=testArtifacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testArtifacts.js","sourceRoot":"","sources":["../src/testArtifacts.ts"],"names":[],"mappings":";;;AAAA,IAAI,OAAO,GAAG,CAAC,CAAC;AAEhB,MAAa,SAAS;IAQpB;QACE,IAAI,CAAC,IAAI,GAAG,OAAO,GAAG,OAAO,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,KAAkB;QACzB,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,YAAY,CAAC,KAAkB;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5C,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;;AAxBH,8BAyBC;AAxBQ,eAAK,GAAG,WAAW,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nymphjs/sorter",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.99",
|
|
4
4
|
"description": "Nymph.js - Sorter",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -38,5 +38,5 @@
|
|
|
38
38
|
"ts-node": "^10.9.2",
|
|
39
39
|
"typescript": "^5.7.2"
|
|
40
40
|
},
|
|
41
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "2c1308c2fa7e716453211b14a20e3f039370c875"
|
|
42
42
|
}
|