@nymphjs/sorter 1.0.0-beta.12 → 1.0.0-beta.121
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 +448 -0
- package/README.md +2 -2
- package/dist/Sorter.d.ts +57 -0
- package/dist/Sorter.js +216 -0
- package/dist/Sorter.js.map +1 -0
- package/dist/Sorter.test.js +435 -0
- package/dist/Sorter.test.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/{lib → dist}/testArtifacts.d.ts +1 -0
- package/{lib → dist}/testArtifacts.js +7 -6
- package/dist/testArtifacts.js.map +1 -0
- package/jest.config.js +31 -5
- package/package.json +26 -30
- package/src/Sorter.test.ts +202 -20
- package/src/Sorter.ts +115 -76
- package/src/index.ts +2 -2
- package/src/testArtifacts.ts +1 -0
- package/tsconfig.json +7 -4
- package/typedoc.json +4 -0
- package/lib/Sorter.d.ts +0 -20
- package/lib/Sorter.js +0 -144
- package/lib/Sorter.js.map +0 -1
- package/lib/Sorter.test.js +0 -274
- package/lib/Sorter.test.js.map +0 -1
- package/lib/index.d.ts +0 -3
- package/lib/index.js +0 -24
- package/lib/index.js.map +0 -1
- package/lib/testArtifacts.js.map +0 -1
- package/webpack.config.js +0 -28
- /package/{lib → dist}/Sorter.test.d.ts +0 -0
package/src/Sorter.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type SortOptions = {
|
|
1
|
+
export type SortOptions<Entity extends Object> = {
|
|
2
2
|
/** Sort case sensitively. */
|
|
3
3
|
caseSensitive?: boolean;
|
|
4
4
|
/** Reverse the sort order. */
|
|
@@ -7,6 +7,8 @@ export type SortOptions = {
|
|
|
7
7
|
collatorOptions?: Intl.CollatorOptions;
|
|
8
8
|
/** A custom comparator to use. This overrides all other options except reverse. */
|
|
9
9
|
comparator?: (a: any, b: any) => number;
|
|
10
|
+
/** A function to resolve order of entities with identical properties. */
|
|
11
|
+
identiticalResolver?: (a: Entity, b: Entity) => number;
|
|
10
12
|
};
|
|
11
13
|
|
|
12
14
|
/**
|
|
@@ -20,6 +22,7 @@ export default class Sorter<Entity extends Object> {
|
|
|
20
22
|
private sortParent: string | null = null;
|
|
21
23
|
private collator: Intl.Collator = new Intl.Collator();
|
|
22
24
|
private comparator: ((a: any, b: any) => number) | undefined = undefined;
|
|
25
|
+
private identiticalResolver: (a: Entity, b: Entity) => number = (a, b) => 0;
|
|
23
26
|
|
|
24
27
|
constructor(array: Entity[]) {
|
|
25
28
|
this.array = array as (Entity & { [k: string]: any })[];
|
|
@@ -27,7 +30,7 @@ export default class Sorter<Entity extends Object> {
|
|
|
27
30
|
|
|
28
31
|
private _arraySortProperty(
|
|
29
32
|
a: Entity & { [k: string]: any },
|
|
30
|
-
b: Entity & { [k: string]: any }
|
|
33
|
+
b: Entity & { [k: string]: any },
|
|
31
34
|
) {
|
|
32
35
|
const prop = this.sortProperty as string;
|
|
33
36
|
const parent = this.sortParent as string;
|
|
@@ -68,15 +71,26 @@ export default class Sorter<Entity extends Object> {
|
|
|
68
71
|
const aProp = a[prop];
|
|
69
72
|
const bProp = b[prop];
|
|
70
73
|
if (this.comparator != null) {
|
|
71
|
-
|
|
74
|
+
const result = this.comparator(aProp, bProp);
|
|
75
|
+
if (result === 0) {
|
|
76
|
+
return this.identiticalResolver(a, b);
|
|
77
|
+
} else {
|
|
78
|
+
return result;
|
|
79
|
+
}
|
|
72
80
|
} else if (typeof aProp === 'string' && typeof bProp === 'string') {
|
|
73
|
-
|
|
81
|
+
const result = this.collator.compare(aProp, bProp);
|
|
82
|
+
if (result === 0) {
|
|
83
|
+
return this.identiticalResolver(a, b);
|
|
84
|
+
} else {
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
74
87
|
} else if (aProp > bProp) {
|
|
75
88
|
return 1;
|
|
76
89
|
} else if (aProp < bProp) {
|
|
77
90
|
return -1;
|
|
91
|
+
} else {
|
|
92
|
+
return this.identiticalResolver(a, b);
|
|
78
93
|
}
|
|
79
|
-
return 0;
|
|
80
94
|
}
|
|
81
95
|
|
|
82
96
|
/**
|
|
@@ -92,83 +106,103 @@ export default class Sorter<Entity extends Object> {
|
|
|
92
106
|
public hsort(
|
|
93
107
|
property: string,
|
|
94
108
|
parentProperty: string,
|
|
95
|
-
|
|
109
|
+
{
|
|
110
|
+
caseSensitive = false,
|
|
111
|
+
reverse = false,
|
|
112
|
+
collatorOptions = undefined,
|
|
113
|
+
comparator = undefined,
|
|
114
|
+
identiticalResolver = (a, b) => 0,
|
|
115
|
+
}: SortOptions<Entity> = {},
|
|
96
116
|
): Entity[] {
|
|
97
|
-
// First sort by the requested property.
|
|
98
|
-
this.sort(property, sortOptions);
|
|
99
117
|
if (typeof parentProperty === 'undefined' || parentProperty === null) {
|
|
118
|
+
// Just sort by the requested property.
|
|
119
|
+
this.sort(property, {
|
|
120
|
+
caseSensitive,
|
|
121
|
+
reverse,
|
|
122
|
+
collatorOptions,
|
|
123
|
+
comparator,
|
|
124
|
+
});
|
|
100
125
|
return this.array;
|
|
101
126
|
}
|
|
102
127
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
newKey += 1;
|
|
145
|
-
}
|
|
146
|
-
// Where to place the entity.
|
|
147
|
-
newKey += 1;
|
|
148
|
-
if (newKey < newArray.length) {
|
|
149
|
-
// If it already exists, we have to splice it in.
|
|
150
|
-
newArray.splice(newKey, 0, this.array[key]);
|
|
151
|
-
} else {
|
|
152
|
-
// Else just add it.
|
|
153
|
-
newArray.push(this.array[key]);
|
|
154
|
-
}
|
|
155
|
-
this.array.splice(key, 1);
|
|
156
|
-
changed = true;
|
|
157
|
-
break;
|
|
158
|
-
}
|
|
128
|
+
this.sortProperty = property;
|
|
129
|
+
this.sortParent = null;
|
|
130
|
+
this.collator = new Intl.Collator(
|
|
131
|
+
undefined,
|
|
132
|
+
collatorOptions || {
|
|
133
|
+
sensitivity: caseSensitive ? 'case' : 'base',
|
|
134
|
+
},
|
|
135
|
+
);
|
|
136
|
+
this.comparator = comparator;
|
|
137
|
+
this.identiticalResolver = identiticalResolver;
|
|
138
|
+
const sort = (array: Entity[]) => {
|
|
139
|
+
// Sort by the requested property.
|
|
140
|
+
array.sort(this._arraySortProperty.bind(this));
|
|
141
|
+
if (reverse) {
|
|
142
|
+
array.reverse();
|
|
143
|
+
}
|
|
144
|
+
return array;
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
// Pick out all of the children.
|
|
148
|
+
const guidEntries: { [k: string]: Entity[] } = {};
|
|
149
|
+
const newEntries = new Map<Entity, Entity[]>();
|
|
150
|
+
|
|
151
|
+
// There is no incrementor in this for loop on purpose. It is incremented
|
|
152
|
+
// conditionally.
|
|
153
|
+
for (let i = 0; i < this.array.length;) {
|
|
154
|
+
const entity = this.array[i];
|
|
155
|
+
const parent = entity[parentProperty];
|
|
156
|
+
if (parent == null) {
|
|
157
|
+
i++;
|
|
158
|
+
} else if (parent.guid != null) {
|
|
159
|
+
this.array.splice(i, 1);
|
|
160
|
+
if (!(parent.guid in guidEntries)) {
|
|
161
|
+
guidEntries[parent.guid] = [];
|
|
162
|
+
}
|
|
163
|
+
guidEntries[parent.guid].push(entity);
|
|
164
|
+
} else {
|
|
165
|
+
this.array.splice(i, 1);
|
|
166
|
+
let entries: Entity[] = [];
|
|
167
|
+
if (newEntries.has(parent)) {
|
|
168
|
+
entries = newEntries.get(parent) || [];
|
|
159
169
|
}
|
|
170
|
+
entries.push(entity);
|
|
171
|
+
newEntries.set(parent, entries);
|
|
160
172
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// Sort the top level entries.
|
|
176
|
+
sort(this.array);
|
|
177
|
+
|
|
178
|
+
// Now place all of the children back in order.
|
|
179
|
+
for (let i = 0; i < this.array.length; i++) {
|
|
180
|
+
const entity = this.array[i];
|
|
181
|
+
if (entity.guid != null) {
|
|
182
|
+
if (entity.guid in guidEntries) {
|
|
183
|
+
this.array.splice(i + 1, 0, ...sort(guidEntries[entity.guid]));
|
|
184
|
+
delete guidEntries[entity.guid];
|
|
185
|
+
}
|
|
186
|
+
} else {
|
|
187
|
+
if (newEntries.has(entity)) {
|
|
188
|
+
this.array.splice(
|
|
189
|
+
i + 1,
|
|
190
|
+
0,
|
|
191
|
+
...sort(newEntries.get(entity.guid) || []),
|
|
192
|
+
);
|
|
193
|
+
newEntries.delete(entity);
|
|
167
194
|
}
|
|
168
195
|
}
|
|
169
196
|
}
|
|
170
|
-
|
|
171
|
-
|
|
197
|
+
|
|
198
|
+
// Now place any orphans on the end.
|
|
199
|
+
for (let orphans of Object.values(guidEntries)) {
|
|
200
|
+
this.array.splice(this.array.length, 0, ...sort(orphans));
|
|
201
|
+
}
|
|
202
|
+
for (let [parent, orphans] of newEntries) {
|
|
203
|
+
this.array.splice(this.array.length, 0, ...sort(orphans));
|
|
204
|
+
}
|
|
205
|
+
|
|
172
206
|
return this.array as Entity[];
|
|
173
207
|
}
|
|
174
208
|
|
|
@@ -189,7 +223,8 @@ export default class Sorter<Entity extends Object> {
|
|
|
189
223
|
reverse = false,
|
|
190
224
|
collatorOptions = undefined,
|
|
191
225
|
comparator = undefined,
|
|
192
|
-
|
|
226
|
+
identiticalResolver = (a, b) => 0,
|
|
227
|
+
}: SortOptions<Entity> = {},
|
|
193
228
|
): Entity[] {
|
|
194
229
|
// Sort by the requested property.
|
|
195
230
|
this.sortProperty = property;
|
|
@@ -199,9 +234,10 @@ export default class Sorter<Entity extends Object> {
|
|
|
199
234
|
collatorOptions || {
|
|
200
235
|
sensitivity: caseSensitive ? 'case' : 'base',
|
|
201
236
|
caseFirst: 'false',
|
|
202
|
-
}
|
|
237
|
+
},
|
|
203
238
|
);
|
|
204
239
|
this.comparator = comparator;
|
|
240
|
+
this.identiticalResolver = identiticalResolver;
|
|
205
241
|
this.array.sort(this._arraySortProperty.bind(this));
|
|
206
242
|
if (reverse) {
|
|
207
243
|
this.array.reverse();
|
|
@@ -213,6 +249,7 @@ export default class Sorter<Entity extends Object> {
|
|
|
213
249
|
* Sort an array of entities by a specified property's value.
|
|
214
250
|
*
|
|
215
251
|
* @param property The name of the property to sort entities by.
|
|
252
|
+
* @param identiticalResolver A function to resolve order of identical entities.
|
|
216
253
|
*/
|
|
217
254
|
public sort(
|
|
218
255
|
property: string,
|
|
@@ -221,7 +258,8 @@ export default class Sorter<Entity extends Object> {
|
|
|
221
258
|
reverse = false,
|
|
222
259
|
collatorOptions = undefined,
|
|
223
260
|
comparator = undefined,
|
|
224
|
-
|
|
261
|
+
identiticalResolver = (a, b) => 0,
|
|
262
|
+
}: SortOptions<Entity> = {},
|
|
225
263
|
): Entity[] {
|
|
226
264
|
// Sort by the requested property.
|
|
227
265
|
this.sortProperty = property;
|
|
@@ -230,9 +268,10 @@ export default class Sorter<Entity extends Object> {
|
|
|
230
268
|
undefined,
|
|
231
269
|
collatorOptions || {
|
|
232
270
|
sensitivity: caseSensitive ? 'case' : 'base',
|
|
233
|
-
}
|
|
271
|
+
},
|
|
234
272
|
);
|
|
235
273
|
this.comparator = comparator;
|
|
274
|
+
this.identiticalResolver = identiticalResolver;
|
|
236
275
|
this.array.sort(this._arraySortProperty.bind(this));
|
|
237
276
|
if (reverse) {
|
|
238
277
|
this.array.reverse();
|
package/src/index.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './Sorter';
|
|
2
|
-
import Sorter, { SortOptions } from './Sorter';
|
|
1
|
+
export * from './Sorter.js';
|
|
2
|
+
import Sorter, { SortOptions } from './Sorter.js';
|
|
3
3
|
export { Sorter, SortOptions };
|
package/src/testArtifacts.ts
CHANGED
package/tsconfig.json
CHANGED
|
@@ -2,12 +2,15 @@
|
|
|
2
2
|
"extends": "@tsconfig/recommended/tsconfig.json",
|
|
3
3
|
|
|
4
4
|
"compilerOptions": {
|
|
5
|
-
"
|
|
6
|
-
"
|
|
5
|
+
"types": ["jest"],
|
|
6
|
+
"module": "nodenext",
|
|
7
|
+
"moduleResolution": "nodenext",
|
|
8
|
+
"lib": ["DOM", "es2023"],
|
|
9
|
+
"target": "es2023",
|
|
7
10
|
"noImplicitAny": true,
|
|
8
|
-
"removeComments":
|
|
11
|
+
"removeComments": false,
|
|
9
12
|
"sourceMap": true,
|
|
10
|
-
"outDir": "
|
|
13
|
+
"outDir": "dist",
|
|
11
14
|
"resolveJsonModule": true,
|
|
12
15
|
"rootDir": "src/",
|
|
13
16
|
"declaration": true
|
package/typedoc.json
ADDED
package/lib/Sorter.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export type SortOptions = {
|
|
2
|
-
caseSensitive?: boolean;
|
|
3
|
-
reverse?: boolean;
|
|
4
|
-
collatorOptions?: Intl.CollatorOptions;
|
|
5
|
-
comparator?: (a: any, b: any) => number;
|
|
6
|
-
};
|
|
7
|
-
export default class Sorter<Entity extends Object> {
|
|
8
|
-
array: (Entity & {
|
|
9
|
-
[k: string]: any;
|
|
10
|
-
})[];
|
|
11
|
-
private sortProperty;
|
|
12
|
-
private sortParent;
|
|
13
|
-
private collator;
|
|
14
|
-
private comparator;
|
|
15
|
-
constructor(array: Entity[]);
|
|
16
|
-
private _arraySortProperty;
|
|
17
|
-
hsort(property: string, parentProperty: string, sortOptions?: SortOptions): Entity[];
|
|
18
|
-
psort(property: string, parentProperty: string, { caseSensitive, reverse, collatorOptions, comparator, }?: SortOptions): Entity[];
|
|
19
|
-
sort(property: string, { caseSensitive, reverse, collatorOptions, comparator, }?: SortOptions): Entity[];
|
|
20
|
-
}
|
package/lib/Sorter.js
DELETED
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
class Sorter {
|
|
4
|
-
constructor(array) {
|
|
5
|
-
this.sortProperty = null;
|
|
6
|
-
this.sortParent = null;
|
|
7
|
-
this.collator = new Intl.Collator();
|
|
8
|
-
this.comparator = undefined;
|
|
9
|
-
this.array = array;
|
|
10
|
-
}
|
|
11
|
-
_arraySortProperty(a, b) {
|
|
12
|
-
const prop = this.sortProperty;
|
|
13
|
-
const parent = this.sortParent;
|
|
14
|
-
if (parent != null &&
|
|
15
|
-
a[parent] instanceof Object &&
|
|
16
|
-
b[parent] instanceof Object) {
|
|
17
|
-
const aParentProp = a[parent][prop];
|
|
18
|
-
const bParentProp = b[parent][prop];
|
|
19
|
-
if (typeof aParentProp !== 'undefined' ||
|
|
20
|
-
typeof bParentProp !== 'undefined') {
|
|
21
|
-
if (this.comparator != null) {
|
|
22
|
-
const result = this.comparator(aParentProp, bParentProp);
|
|
23
|
-
if (result !== 0) {
|
|
24
|
-
return result;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
else if (typeof aParentProp === 'string' &&
|
|
28
|
-
typeof bParentProp === 'string') {
|
|
29
|
-
const result = this.collator.compare(aParentProp, bParentProp);
|
|
30
|
-
if (result !== 0) {
|
|
31
|
-
return result;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
else if (aParentProp > bParentProp) {
|
|
35
|
-
return 1;
|
|
36
|
-
}
|
|
37
|
-
else if (aParentProp < bParentProp) {
|
|
38
|
-
return -1;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
const aProp = a[prop];
|
|
43
|
-
const bProp = b[prop];
|
|
44
|
-
if (this.comparator != null) {
|
|
45
|
-
return this.comparator(aProp, bProp);
|
|
46
|
-
}
|
|
47
|
-
else if (typeof aProp === 'string' && typeof bProp === 'string') {
|
|
48
|
-
return this.collator.compare(aProp, bProp);
|
|
49
|
-
}
|
|
50
|
-
else if (aProp > bProp) {
|
|
51
|
-
return 1;
|
|
52
|
-
}
|
|
53
|
-
else if (aProp < bProp) {
|
|
54
|
-
return -1;
|
|
55
|
-
}
|
|
56
|
-
return 0;
|
|
57
|
-
}
|
|
58
|
-
hsort(property, parentProperty, sortOptions) {
|
|
59
|
-
this.sort(property, sortOptions);
|
|
60
|
-
if (typeof parentProperty === 'undefined' || parentProperty === null) {
|
|
61
|
-
return this.array;
|
|
62
|
-
}
|
|
63
|
-
let newArray = [];
|
|
64
|
-
let changed;
|
|
65
|
-
while (this.array.length) {
|
|
66
|
-
changed = false;
|
|
67
|
-
for (let key = 0; key < this.array.length; key++) {
|
|
68
|
-
if (!(parentProperty in this.array[key]) ||
|
|
69
|
-
this.array[key][parentProperty] == null ||
|
|
70
|
-
typeof this.array[key][parentProperty].$inArray !== 'function' ||
|
|
71
|
-
!this.array[key][parentProperty].$inArray([
|
|
72
|
-
...newArray,
|
|
73
|
-
...this.array,
|
|
74
|
-
])) {
|
|
75
|
-
newArray.push(this.array[key]);
|
|
76
|
-
this.array.splice(key, 1);
|
|
77
|
-
changed = true;
|
|
78
|
-
break;
|
|
79
|
-
}
|
|
80
|
-
else if (typeof this.array[key][parentProperty].$arraySearch === 'function') {
|
|
81
|
-
const pkey = this.array[key][parentProperty].$arraySearch(newArray);
|
|
82
|
-
if (pkey !== -1) {
|
|
83
|
-
const ancestry = [this.array[key][parentProperty].guid];
|
|
84
|
-
let newKey = pkey;
|
|
85
|
-
while (newKey + 1 < newArray.length &&
|
|
86
|
-
parentProperty in newArray[newKey + 1] &&
|
|
87
|
-
newArray[newKey + 1][parentProperty] != null &&
|
|
88
|
-
ancestry.indexOf(newArray[newKey + 1][parentProperty].guid) !== -1) {
|
|
89
|
-
ancestry.push(newArray[newKey + 1].guid);
|
|
90
|
-
newKey += 1;
|
|
91
|
-
}
|
|
92
|
-
newKey += 1;
|
|
93
|
-
if (newKey < newArray.length) {
|
|
94
|
-
newArray.splice(newKey, 0, this.array[key]);
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
newArray.push(this.array[key]);
|
|
98
|
-
}
|
|
99
|
-
this.array.splice(key, 1);
|
|
100
|
-
changed = true;
|
|
101
|
-
break;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
if (!changed) {
|
|
106
|
-
if (this.array.length) {
|
|
107
|
-
newArray = newArray.concat(this.array);
|
|
108
|
-
this.array.splice(0, this.array.length);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
this.array.splice(0, 0, ...newArray);
|
|
113
|
-
return this.array;
|
|
114
|
-
}
|
|
115
|
-
psort(property, parentProperty, { caseSensitive = false, reverse = false, collatorOptions = undefined, comparator = undefined, } = {}) {
|
|
116
|
-
this.sortProperty = property;
|
|
117
|
-
this.sortParent = parentProperty;
|
|
118
|
-
this.collator = new Intl.Collator(undefined, collatorOptions || {
|
|
119
|
-
sensitivity: caseSensitive ? 'case' : 'base',
|
|
120
|
-
caseFirst: 'false',
|
|
121
|
-
});
|
|
122
|
-
this.comparator = comparator;
|
|
123
|
-
this.array.sort(this._arraySortProperty.bind(this));
|
|
124
|
-
if (reverse) {
|
|
125
|
-
this.array.reverse();
|
|
126
|
-
}
|
|
127
|
-
return this.array;
|
|
128
|
-
}
|
|
129
|
-
sort(property, { caseSensitive = false, reverse = false, collatorOptions = undefined, comparator = undefined, } = {}) {
|
|
130
|
-
this.sortProperty = property;
|
|
131
|
-
this.sortParent = null;
|
|
132
|
-
this.collator = new Intl.Collator(undefined, collatorOptions || {
|
|
133
|
-
sensitivity: caseSensitive ? 'case' : 'base',
|
|
134
|
-
});
|
|
135
|
-
this.comparator = comparator;
|
|
136
|
-
this.array.sort(this._arraySortProperty.bind(this));
|
|
137
|
-
if (reverse) {
|
|
138
|
-
this.array.reverse();
|
|
139
|
-
}
|
|
140
|
-
return this.array;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
exports.default = Sorter;
|
|
144
|
-
//# sourceMappingURL=Sorter.js.map
|
package/lib/Sorter.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Sorter.js","sourceRoot":"","sources":["../src/Sorter.ts"],"names":[],"mappings":"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"}
|