@feathersjs/adapter-commons 5.0.24 → 5.0.26

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 CHANGED
@@ -3,6 +3,16 @@
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
+ ## [5.0.26](https://github.com/feathersjs/feathers/compare/v5.0.25...v5.0.26) (2024-06-09)
7
+
8
+ ### Bug Fixes
9
+
10
+ - **adapter-commons:** Faster sorter ([#3495](https://github.com/feathersjs/feathers/issues/3495)) ([22243e4](https://github.com/feathersjs/feathers/commit/22243e4d92edc1a7343b4cf42be6dfb22e8b86d5))
11
+
12
+ ## [5.0.25](https://github.com/feathersjs/feathers/compare/v5.0.24...v5.0.25) (2024-05-03)
13
+
14
+ **Note:** Version bump only for package @feathersjs/adapter-commons
15
+
6
16
  ## [5.0.24](https://github.com/feathersjs/feathers/compare/v5.0.23...v5.0.24) (2024-03-13)
7
17
 
8
18
  **Note:** Version bump only for package @feathersjs/adapter-commons
package/lib/sort.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- export declare function compareNSB(a: any, b: any): 1 | -1 | 0;
2
- export declare function compareArrays(a: any[], b: any[]): 1 | -1 | 0;
3
- export declare function compare(a: any, b: any, compareStrings?: any): 0 | 1 | -1;
1
+ export declare function compareNSB(a: number | string | boolean, b: number | string | boolean): 0 | 1 | -1;
2
+ export declare function compareArrays(a: any[], b: any[]): 0 | 1 | -1;
3
+ export declare function compare(a: any, b: any, compareStrings?: (a: any, b: any) => 0 | 1 | -1): 0 | 1 | -1;
4
4
  export declare function sorter($sort: {
5
5
  [key: string]: -1 | 1;
6
6
  }): (a: any, b: any) => number;
package/lib/sort.js CHANGED
@@ -4,13 +4,10 @@
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.sorter = exports.compare = exports.compareArrays = exports.compareNSB = void 0;
6
6
  function compareNSB(a, b) {
7
- if (a < b) {
8
- return -1;
9
- }
10
- if (a > b) {
11
- return 1;
7
+ if (a === b) {
8
+ return 0;
12
9
  }
13
- return 0;
10
+ return a < b ? -1 : 1;
14
11
  }
15
12
  exports.compareNSB = compareNSB;
16
13
  function compareArrays(a, b) {
@@ -28,39 +25,35 @@ function compare(a, b, compareStrings = compareNSB) {
28
25
  if (a === b) {
29
26
  return 0;
30
27
  }
31
- // undefined
32
- if (a === undefined) {
33
- return -1;
34
- }
35
- if (b === undefined) {
36
- return 1;
37
- }
38
- // null
39
- if (a === null) {
28
+ // null or undefined
29
+ if (a == null) {
40
30
  return -1;
41
31
  }
42
- if (b === null) {
32
+ if (b == null) {
43
33
  return 1;
44
34
  }
35
+ // detect typeof once
36
+ const typeofA = typeof a;
37
+ const typeofB = typeof b;
45
38
  // Numbers
46
- if (typeof a === 'number') {
47
- return typeof b === 'number' ? compareNSB(a, b) : -1;
39
+ if (typeofA === 'number') {
40
+ return typeofB === 'number' ? compareNSB(a, b) : -1;
48
41
  }
49
- if (typeof b === 'number') {
42
+ if (typeofB === 'number') {
50
43
  return 1;
51
44
  }
52
45
  // Strings
53
- if (typeof a === 'string') {
54
- return typeof b === 'string' ? compareStrings(a, b) : -1;
46
+ if (typeofA === 'string') {
47
+ return typeofB === 'string' ? compareStrings(a, b) : -1;
55
48
  }
56
- if (typeof b === 'string') {
49
+ if (typeofB === 'string') {
57
50
  return 1;
58
51
  }
59
52
  // Booleans
60
- if (typeof a === 'boolean') {
61
- return typeof b === 'boolean' ? compareNSB(a, b) : -1;
53
+ if (typeofA === 'boolean') {
54
+ return typeofB === 'boolean' ? compareNSB(a, b) : -1;
62
55
  }
63
- if (typeof b === 'boolean') {
56
+ if (typeofB === 'boolean') {
64
57
  return 1;
65
58
  }
66
59
  // Dates
@@ -89,25 +82,26 @@ function compare(a, b, compareStrings = compareNSB) {
89
82
  return compareNSB(aKeys.length, bKeys.length);
90
83
  }
91
84
  exports.compare = compare;
85
+ // lodash-y get - probably want to use lodash get instead
86
+ const get = (value, path) => path.reduce((value, key) => value[key], value);
92
87
  // An in-memory sorting function according to the
93
88
  // $sort special query parameter
94
89
  function sorter($sort) {
95
- const get = (value, path) => path.reduce((value, key) => value[key], value);
96
90
  const compares = Object.keys($sort).map((key) => {
97
91
  const direction = $sort[key];
98
- const path = key.split('.');
99
- if (path.length === 1) {
92
+ if (!key.includes('.')) {
100
93
  return (a, b) => direction * compare(a[key], b[key]);
101
94
  }
102
95
  else {
96
+ const path = key.split('.');
103
97
  return (a, b) => direction * compare(get(a, path), get(b, path));
104
98
  }
105
99
  });
106
100
  return function (a, b) {
107
101
  for (const compare of compares) {
108
- const comparasion = compare(a, b);
109
- if (comparasion !== 0) {
110
- return comparasion;
102
+ const comparison = compare(a, b);
103
+ if (comparison !== 0) {
104
+ return comparison;
111
105
  }
112
106
  }
113
107
  return 0;
package/lib/sort.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sort.js","sourceRoot":"","sources":["../src/sort.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sort.js","sourceRoot":"","sources":["../src/sort.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@feathersjs/adapter-commons",
3
- "version": "5.0.24",
3
+ "version": "5.0.26",
4
4
  "description": "Shared database adapter utility functions",
5
5
  "homepage": "https://feathersjs.com",
6
6
  "keywords": [
@@ -50,19 +50,19 @@
50
50
  "access": "public"
51
51
  },
52
52
  "dependencies": {
53
- "@feathersjs/commons": "^5.0.24",
54
- "@feathersjs/errors": "^5.0.24",
55
- "@feathersjs/feathers": "^5.0.24"
53
+ "@feathersjs/commons": "^5.0.26",
54
+ "@feathersjs/errors": "^5.0.26",
55
+ "@feathersjs/feathers": "^5.0.26"
56
56
  },
57
57
  "devDependencies": {
58
58
  "@types/mocha": "^10.0.6",
59
59
  "@types/mongodb": "^4.0.6",
60
- "@types/node": "^20.11.26",
61
- "mocha": "^10.3.0",
60
+ "@types/node": "^20.12.8",
61
+ "mocha": "^10.4.0",
62
62
  "mongodb": "^6.5.0",
63
63
  "shx": "^0.3.4",
64
64
  "ts-node": "^10.9.2",
65
- "typescript": "^5.4.2"
65
+ "typescript": "^5.4.5"
66
66
  },
67
- "gitHead": "09519fb1c454ea718747a09797bc6dfd3b6a79a3"
67
+ "gitHead": "3fe6843c1a478a2887ca91b6f79eda3b61d35ef3"
68
68
  }
package/src/sort.ts CHANGED
@@ -1,17 +1,15 @@
1
1
  // Sorting algorithm taken from NeDB (https://github.com/louischatriot/nedb)
2
2
  // See https://github.com/louischatriot/nedb/blob/e3f0078499aa1005a59d0c2372e425ab789145c1/lib/model.js#L189
3
3
 
4
- export function compareNSB(a: any, b: any) {
5
- if (a < b) {
6
- return -1
7
- }
8
- if (a > b) {
9
- return 1
4
+ export function compareNSB(a: number | string | boolean, b: number | string | boolean): 0 | 1 | -1 {
5
+ if (a === b) {
6
+ return 0
10
7
  }
11
- return 0
8
+
9
+ return a < b ? -1 : 1
12
10
  }
13
11
 
14
- export function compareArrays(a: any[], b: any[]) {
12
+ export function compareArrays(a: any[], b: any[]): 0 | 1 | -1 {
15
13
  for (let i = 0, l = Math.min(a.length, b.length); i < l; i++) {
16
14
  const comparison = compare(a[i], b[i])
17
15
 
@@ -24,48 +22,48 @@ export function compareArrays(a: any[], b: any[]) {
24
22
  return compareNSB(a.length, b.length)
25
23
  }
26
24
 
27
- export function compare(a: any, b: any, compareStrings: any = compareNSB): 0 | 1 | -1 {
25
+ export function compare(
26
+ a: any,
27
+ b: any,
28
+ compareStrings: (a: any, b: any) => 0 | 1 | -1 = compareNSB
29
+ ): 0 | 1 | -1 {
28
30
  if (a === b) {
29
31
  return 0
30
32
  }
31
33
 
32
- // undefined
33
- if (a === undefined) {
34
+ // null or undefined
35
+ if (a == null) {
34
36
  return -1
35
37
  }
36
- if (b === undefined) {
38
+ if (b == null) {
37
39
  return 1
38
40
  }
39
41
 
40
- // null
41
- if (a === null) {
42
- return -1
43
- }
44
- if (b === null) {
45
- return 1
46
- }
42
+ // detect typeof once
43
+ const typeofA = typeof a
44
+ const typeofB = typeof b
47
45
 
48
46
  // Numbers
49
- if (typeof a === 'number') {
50
- return typeof b === 'number' ? compareNSB(a, b) : -1
47
+ if (typeofA === 'number') {
48
+ return typeofB === 'number' ? compareNSB(a, b) : -1
51
49
  }
52
- if (typeof b === 'number') {
50
+ if (typeofB === 'number') {
53
51
  return 1
54
52
  }
55
53
 
56
54
  // Strings
57
- if (typeof a === 'string') {
58
- return typeof b === 'string' ? compareStrings(a, b) : -1
55
+ if (typeofA === 'string') {
56
+ return typeofB === 'string' ? compareStrings(a, b) : -1
59
57
  }
60
- if (typeof b === 'string') {
58
+ if (typeofB === 'string') {
61
59
  return 1
62
60
  }
63
61
 
64
62
  // Booleans
65
- if (typeof a === 'boolean') {
66
- return typeof b === 'boolean' ? compareNSB(a, b) : -1
63
+ if (typeofA === 'boolean') {
64
+ return typeofB === 'boolean' ? compareNSB(a, b) : -1
67
65
  }
68
- if (typeof b === 'boolean') {
66
+ if (typeofB === 'boolean') {
69
67
  return 1
70
68
  }
71
69
 
@@ -100,28 +98,29 @@ export function compare(a: any, b: any, compareStrings: any = compareNSB): 0 | 1
100
98
  return compareNSB(aKeys.length, bKeys.length)
101
99
  }
102
100
 
101
+ // lodash-y get - probably want to use lodash get instead
102
+ const get = (value: any, path: string[]) => path.reduce((value, key) => value[key], value)
103
+
103
104
  // An in-memory sorting function according to the
104
105
  // $sort special query parameter
105
106
  export function sorter($sort: { [key: string]: -1 | 1 }) {
106
- const get = (value: any, path: string[]) => path.reduce((value, key) => value[key], value)
107
-
108
107
  const compares = Object.keys($sort).map((key) => {
109
108
  const direction = $sort[key]
110
- const path = key.split('.')
111
109
 
112
- if (path.length === 1) {
110
+ if (!key.includes('.')) {
113
111
  return (a: any, b: any) => direction * compare(a[key], b[key])
114
112
  } else {
113
+ const path = key.split('.')
115
114
  return (a: any, b: any) => direction * compare(get(a, path), get(b, path))
116
115
  }
117
116
  })
118
117
 
119
118
  return function (a: any, b: any) {
120
119
  for (const compare of compares) {
121
- const comparasion = compare(a, b)
120
+ const comparison = compare(a, b)
122
121
 
123
- if (comparasion !== 0) {
124
- return comparasion
122
+ if (comparison !== 0) {
123
+ return comparison
125
124
  }
126
125
  }
127
126