@feathersjs/adapter-commons 5.0.0-pre.9 → 5.0.1

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/service.js CHANGED
@@ -1,38 +1,28 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.AdapterService = void 0;
13
- const errors_1 = require("@feathersjs/errors");
14
- const filter_query_1 = require("./filter-query");
15
- const callMethod = (self, name, ...args) => {
16
- if (typeof self[name] !== 'function') {
17
- return Promise.reject(new errors_1.NotImplemented(`Method ${name} not available`));
18
- }
19
- return self[name](...args);
20
- };
3
+ exports.AdapterBase = exports.VALIDATED = void 0;
4
+ const query_1 = require("./query");
5
+ exports.VALIDATED = Symbol.for('@feathersjs/adapter/sanitized');
21
6
  const alwaysMulti = {
22
7
  find: true,
23
8
  get: false,
24
9
  update: false
25
10
  };
26
- class AdapterService {
11
+ /**
12
+ * An abstract base class that a database adapter can extend from to implement the
13
+ * `__find`, `__get`, `__update`, `__patch` and `__remove` methods.
14
+ */
15
+ class AdapterBase {
27
16
  constructor(options) {
28
- this.options = Object.assign({
17
+ this.options = {
29
18
  id: 'id',
30
19
  events: [],
31
- paginate: {},
20
+ paginate: false,
32
21
  multi: false,
33
- filters: [],
34
- allow: []
35
- }, options);
22
+ filters: {},
23
+ operators: [],
24
+ ...options
25
+ };
36
26
  }
37
27
  get id() {
38
28
  return this.options.id;
@@ -40,66 +30,59 @@ class AdapterService {
40
30
  get events() {
41
31
  return this.options.events;
42
32
  }
43
- filterQuery(params = {}, opts = {}) {
44
- const paginate = typeof params.paginate !== 'undefined'
45
- ? params.paginate
46
- : this.getOptions(params).paginate;
47
- const { query = {} } = params;
48
- const options = Object.assign({
49
- operators: this.options.whitelist || this.options.allow || [],
50
- filters: this.options.filters,
51
- paginate
52
- }, opts);
53
- const result = filter_query_1.filterQuery(query, options);
54
- return Object.assign(result, { paginate });
55
- }
33
+ /**
34
+ * Check if this adapter allows multiple updates for a method.
35
+ * @param method The method name to check.
36
+ * @param params The service call params.
37
+ * @returns Wether or not multiple updates are allowed.
38
+ */
56
39
  allowsMulti(method, params = {}) {
57
40
  const always = alwaysMulti[method];
58
41
  if (typeof always !== 'undefined') {
59
42
  return always;
60
43
  }
61
- const { multi: option } = this.getOptions(params);
62
- if (option === true || option === false) {
63
- return option;
44
+ const { multi } = this.getOptions(params);
45
+ if (multi === true || !multi) {
46
+ return multi;
64
47
  }
65
- return option.includes(method);
48
+ return multi.includes(method);
66
49
  }
50
+ /**
51
+ * Returns the combined options for a service call. Options will be merged
52
+ * with `this.options` and `params.adapter` for dynamic overrides.
53
+ *
54
+ * @param params The parameters for the service method call
55
+ * @returns The actual options for this call
56
+ */
67
57
  getOptions(params) {
68
- return Object.assign(Object.assign({}, this.options), params.adapter);
58
+ const paginate = params.paginate !== undefined ? params.paginate : this.options.paginate;
59
+ return {
60
+ ...this.options,
61
+ paginate,
62
+ ...params.adapter
63
+ };
69
64
  }
70
- find(params) {
71
- return callMethod(this, '_find', params);
72
- }
73
- get(id, params) {
74
- return callMethod(this, '_get', id, params);
75
- }
76
- create(data, params) {
77
- if (Array.isArray(data) && !this.allowsMulti('create', params)) {
78
- return Promise.reject(new errors_1.MethodNotAllowed('Can not create multiple entries'));
65
+ /**
66
+ * Returns a sanitized version of `params.query`, converting filter values
67
+ * (like $limit and $skip) into the expected type. Will throw an error if
68
+ * a `$` prefixed filter or operator value that is not allowed in `filters`
69
+ * or `operators` is encountered.
70
+ *
71
+ * @param params The service call parameter.
72
+ * @returns A new object containing the sanitized query.
73
+ */
74
+ async sanitizeQuery(params = {}) {
75
+ // We don't need legacy query sanitisation if the query has been validated by a schema already
76
+ if (params.query && params.query[exports.VALIDATED]) {
77
+ return params.query || {};
79
78
  }
80
- return callMethod(this, '_create', data, params);
81
- }
82
- update(id, data, params) {
83
- if (id === null || Array.isArray(data)) {
84
- return Promise.reject(new errors_1.BadRequest('You can not replace multiple instances. Did you mean \'patch\'?'));
85
- }
86
- return callMethod(this, '_update', id, data, params);
87
- }
88
- patch(id, data, params) {
89
- if (id === null && !this.allowsMulti('patch', params)) {
90
- return Promise.reject(new errors_1.MethodNotAllowed('Can not patch multiple entries'));
91
- }
92
- return callMethod(this, '_patch', id, data, params);
93
- }
94
- remove(id, params) {
95
- if (id === null && !this.allowsMulti('remove', params)) {
96
- return Promise.reject(new errors_1.MethodNotAllowed('Can not remove multiple entries'));
97
- }
98
- return callMethod(this, '_remove', id, params);
99
- }
100
- setup() {
101
- return __awaiter(this, void 0, void 0, function* () { });
79
+ const options = this.getOptions(params);
80
+ const { query, filters } = (0, query_1.filterQuery)(params.query, options);
81
+ return {
82
+ ...filters,
83
+ ...query
84
+ };
102
85
  }
103
86
  }
104
- exports.AdapterService = AdapterService;
87
+ exports.AdapterBase = AdapterBase;
105
88
  //# sourceMappingURL=service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAAkF;AAElF,iDAA6C;AAE7C,MAAM,UAAU,GAAG,CAAC,IAAS,EAAE,IAAS,EAAE,GAAG,IAAW,EAAE,EAAE;IAC1D,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE;QACpC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,uBAAc,CAAC,UAAU,IAAI,gBAAgB,CAAC,CAAC,CAAC;KAC3E;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,WAAW,GAA+B;IAC9C,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,KAAK;CACd,CAAC;AAmGF,MAAa,cAAc;IAOzB,YAAa,OAAU;QACrB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;YAC3B,EAAE,EAAE,IAAI;YACR,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,EAAE;SACV,EAAE,OAAO,CAAC,CAAC;IACd,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,WAAW,CAAE,SAAwB,EAAE,EAAE,OAAY,EAAE;QACrD,MAAM,QAAQ,GAAG,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW;YACrD,CAAC,CAAC,MAAM,CAAC,QAAQ;YACjB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;QACrC,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;YAC5B,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;YAC7D,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,QAAQ;SACT,EAAE,IAAI,CAAC,CAAC;QACT,MAAM,MAAM,GAAG,0BAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAE3C,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,WAAW,CAAE,MAAc,EAAE,SAAwB,EAAE;QACrD,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QAEnC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,OAAO,MAAM,CAAC;SACf;QAED,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAElD,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,EAAE;YACvC,OAAO,MAAM,CAAC;SACf;QAED,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,UAAU,CAAE,MAAqB;QAC/B,uCACK,IAAI,CAAC,OAAO,GACZ,MAAM,CAAC,OAAO,EAClB;IACH,CAAC;IAED,IAAI,CAAE,MAAsB;QAC1B,OAAO,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,GAAG,CAAE,EAAM,EAAE,MAAsB;QACjC,OAAO,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAID,MAAM,CAAE,IAA+B,EAAE,MAAsB;QAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;YAC9D,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,yBAAgB,CAAC,iCAAiC,CAAC,CAAC,CAAC;SAChF;QAED,OAAO,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAE,EAAM,EAAE,IAAO,EAAE,MAAsB;QAC7C,IAAI,EAAE,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACtC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,mBAAU,CAClC,iEAAiE,CAClE,CAAC,CAAC;SACJ;QAED,OAAO,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IAKD,KAAK,CAAE,EAAc,EAAE,IAAgB,EAAE,MAAsB;QAC7D,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;YACrD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,yBAAgB,CAAC,gCAAgC,CAAC,CAAC,CAAC;SAC/E;QAED,OAAO,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAKD,MAAM,CAAE,EAAc,EAAE,MAAsB;QAC5C,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;YACtD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,yBAAgB,CAAC,iCAAiC,CAAC,CAAC,CAAC;SAChF;QAED,OAAO,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAEK,KAAK;8DAAK,CAAC;KAAA;CAClB;AAnHD,wCAmHC"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":";;;AAOA,mCAAqC;AAExB,QAAA,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAA;AAEpE,MAAM,WAAW,GAA+B;IAC9C,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,KAAK;CACd,CAAA;AAED;;;GAGG;AACH,MAAsB,WAAW;IAW/B,YAAY,OAAgB;QAC1B,IAAI,CAAC,OAAO,GAAG;YACb,EAAE,EAAE,IAAI;YACR,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,EAAE;YACb,GAAG,OAAO;SACX,CAAA;IACH,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAA;IACxB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA;IAC5B,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,MAAc,EAAE,SAAwB,EAAmB;QACrE,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;QAElC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,OAAO,MAAM,CAAA;SACd;QAED,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QAEzC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;YAC5B,OAAO,KAAK,CAAA;SACb;QAED,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC/B,CAAC;IAED;;;;;;OAMG;IACH,UAAU,CAAC,MAAqB;QAC9B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAA;QAExF,OAAO;YACL,GAAG,IAAI,CAAC,OAAO;YACf,QAAQ;YACR,GAAG,MAAM,CAAC,OAAO;SAClB,CAAA;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,aAAa,CAAC,SAAwB,EAAmB;QAC7D,8FAA8F;QAC9F,IAAI,MAAM,CAAC,KAAK,IAAK,MAAM,CAAC,KAAa,CAAC,iBAAS,CAAC,EAAE;YACpD,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAA;SAC1B;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QACvC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAA,mBAAW,EAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAE7D,OAAO;YACL,GAAG,OAAO;YACV,GAAG,KAAK;SACT,CAAA;IACH,CAAC;CA0EF;AAtKD,kCAsKC"}
package/lib/sort.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export declare function compareNSB(a: any, b: any): 1 | -1 | 0;
2
- export declare function compareArrays(a: any, b: any): any;
3
- export declare function compare(a: any, b: any, compareStrings?: any): any;
4
- export declare function sorter($sort: any): (a: any, b: any) => number;
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;
4
+ export declare function sorter($sort: {
5
+ [key: string]: -1 | 1;
6
+ }): (a: any, b: any) => number;
package/lib/sort.js CHANGED
@@ -14,77 +14,76 @@ function compareNSB(a, b) {
14
14
  }
15
15
  exports.compareNSB = compareNSB;
16
16
  function compareArrays(a, b) {
17
- let i;
18
- let comp;
19
- for (i = 0; i < Math.min(a.length, b.length); i += 1) {
20
- comp = exports.compare(a[i], b[i]);
21
- if (comp !== 0) {
22
- return comp;
17
+ for (let i = 0, l = Math.min(a.length, b.length); i < l; i++) {
18
+ const comparison = compare(a[i], b[i]);
19
+ if (comparison !== 0) {
20
+ return comparison;
23
21
  }
24
22
  }
25
23
  // Common section was identical, longest one wins
26
- return exports.compareNSB(a.length, b.length);
24
+ return compareNSB(a.length, b.length);
27
25
  }
28
26
  exports.compareArrays = compareArrays;
29
- function compare(a, b, compareStrings = exports.compareNSB) {
30
- const { compareNSB, compare, compareArrays } = exports;
27
+ function compare(a, b, compareStrings = compareNSB) {
28
+ if (a === b) {
29
+ return 0;
30
+ }
31
31
  // undefined
32
32
  if (a === undefined) {
33
- return b === undefined ? 0 : -1;
33
+ return -1;
34
34
  }
35
35
  if (b === undefined) {
36
- return a === undefined ? 0 : 1;
36
+ return 1;
37
37
  }
38
38
  // null
39
39
  if (a === null) {
40
- return b === null ? 0 : -1;
40
+ return -1;
41
41
  }
42
42
  if (b === null) {
43
- return a === null ? 0 : 1;
43
+ return 1;
44
44
  }
45
45
  // Numbers
46
46
  if (typeof a === 'number') {
47
47
  return typeof b === 'number' ? compareNSB(a, b) : -1;
48
48
  }
49
49
  if (typeof b === 'number') {
50
- return typeof a === 'number' ? compareNSB(a, b) : 1;
50
+ return 1;
51
51
  }
52
52
  // Strings
53
53
  if (typeof a === 'string') {
54
54
  return typeof b === 'string' ? compareStrings(a, b) : -1;
55
55
  }
56
56
  if (typeof b === 'string') {
57
- return typeof a === 'string' ? compareStrings(a, b) : 1;
57
+ return 1;
58
58
  }
59
59
  // Booleans
60
60
  if (typeof a === 'boolean') {
61
61
  return typeof b === 'boolean' ? compareNSB(a, b) : -1;
62
62
  }
63
63
  if (typeof b === 'boolean') {
64
- return typeof a === 'boolean' ? compareNSB(a, b) : 1;
64
+ return 1;
65
65
  }
66
66
  // Dates
67
67
  if (a instanceof Date) {
68
68
  return b instanceof Date ? compareNSB(a.getTime(), b.getTime()) : -1;
69
69
  }
70
70
  if (b instanceof Date) {
71
- return a instanceof Date ? compareNSB(a.getTime(), b.getTime()) : 1;
71
+ return 1;
72
72
  }
73
73
  // Arrays (first element is most significant and so on)
74
74
  if (Array.isArray(a)) {
75
75
  return Array.isArray(b) ? compareArrays(a, b) : -1;
76
76
  }
77
77
  if (Array.isArray(b)) {
78
- return Array.isArray(a) ? compareArrays(a, b) : 1;
78
+ return 1;
79
79
  }
80
80
  // Objects
81
81
  const aKeys = Object.keys(a).sort();
82
82
  const bKeys = Object.keys(b).sort();
83
- let comp = 0;
84
- for (let i = 0; i < Math.min(aKeys.length, bKeys.length); i += 1) {
85
- comp = compare(a[aKeys[i]], b[bKeys[i]]);
86
- if (comp !== 0) {
87
- return comp;
83
+ for (let i = 0, l = Math.min(aKeys.length, bKeys.length); i < l; i++) {
84
+ const comparison = compare(a[aKeys[i]], b[bKeys[i]]);
85
+ if (comparison !== 0) {
86
+ return comparison;
88
87
  }
89
88
  }
90
89
  return compareNSB(aKeys.length, bKeys.length);
@@ -93,33 +92,22 @@ exports.compare = compare;
93
92
  // An in-memory sorting function according to the
94
93
  // $sort special query parameter
95
94
  function sorter($sort) {
96
- let sortLevels = false; // True if $sort has tags with '.' i.e. '{a: 1, b: -1, "c.x.z": 1}'
97
- const getVal = (a, sortKeys) => {
98
- let keys = sortKeys.map(key => key);
99
- let val = a;
100
- do {
101
- let key = keys.shift();
102
- val = val[key];
103
- } while (keys.length);
104
- return val;
105
- };
106
- const criteria = Object.keys($sort).map(key => {
95
+ const get = (value, path) => path.reduce((value, key) => value[key], value);
96
+ const compares = Object.keys($sort).map((key) => {
107
97
  const direction = $sort[key];
108
- const keys = key.split('.');
109
- sortLevels = keys.length > 1;
110
- return { keys, direction };
98
+ const path = key.split('.');
99
+ if (path.length === 1) {
100
+ return (a, b) => direction * compare(a[key], b[key]);
101
+ }
102
+ else {
103
+ return (a, b) => direction * compare(get(a, path), get(b, path));
104
+ }
111
105
  });
112
106
  return function (a, b) {
113
- let compare;
114
- for (const criterion of criteria) {
115
- if (sortLevels) {
116
- compare = criterion.direction * exports.compare(getVal(a, criterion.keys), getVal(b, criterion.keys));
117
- }
118
- else {
119
- compare = criterion.direction * exports.compare(a[criterion.keys[0]], b[criterion.keys[0]]);
120
- }
121
- if (compare !== 0) {
122
- return compare;
107
+ for (const compare of compares) {
108
+ const comparasion = compare(a, b);
109
+ if (comparasion !== 0) {
110
+ return comparasion;
123
111
  }
124
112
  }
125
113
  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.0-pre.9",
3
+ "version": "5.0.1",
4
4
  "description": "Shared database adapter utility functions",
5
5
  "homepage": "https://feathersjs.com",
6
6
  "keywords": [
@@ -13,7 +13,8 @@
13
13
  },
14
14
  "repository": {
15
15
  "type": "git",
16
- "url": "git://github.com/feathersjs/feathers.git"
16
+ "url": "git://github.com/feathersjs/feathers.git",
17
+ "directory": "packages/adapter-commons"
17
18
  },
18
19
  "author": {
19
20
  "name": "Feathers contributor",
@@ -31,7 +32,8 @@
31
32
  "types": "lib/",
32
33
  "scripts": {
33
34
  "prepublish": "npm run compile",
34
- "compile": "shx rm -rf lib/ && tsc",
35
+ "pack": "npm pack --pack-destination ../generators/test/build",
36
+ "compile": "shx rm -rf lib/ && tsc && npm run pack",
35
37
  "test": "mocha --config ../../.mocharc.json --recursive test/**.test.ts test/**/*.test.ts"
36
38
  },
37
39
  "directories": {
@@ -48,19 +50,19 @@
48
50
  "access": "public"
49
51
  },
50
52
  "dependencies": {
51
- "@feathersjs/commons": "^5.0.0-pre.9",
52
- "@feathersjs/errors": "^5.0.0-pre.9",
53
- "@feathersjs/feathers": "^5.0.0-pre.9"
53
+ "@feathersjs/commons": "^5.0.1",
54
+ "@feathersjs/errors": "^5.0.1",
55
+ "@feathersjs/feathers": "^5.0.1"
54
56
  },
55
57
  "devDependencies": {
56
- "@types/mocha": "^9.0.0",
58
+ "@types/mocha": "^10.0.1",
57
59
  "@types/mongodb": "^4.0.6",
58
- "@types/node": "^16.4.13",
59
- "mocha": "^9.0.3",
60
- "mongodb": "^4.1.0",
61
- "shx": "^0.3.3",
62
- "ts-node": "^10.1.0",
63
- "typescript": "^4.3.5"
60
+ "@types/node": "^18.14.6",
61
+ "mocha": "^10.2.0",
62
+ "mongodb": "^5.1.0",
63
+ "shx": "^0.3.4",
64
+ "ts-node": "^10.9.1",
65
+ "typescript": "^4.9.5"
64
66
  },
65
- "gitHead": "3d1721a7286e6a7f37bbc38695fe45084023f13b"
67
+ "gitHead": "18b7f4ab0a8075572a81d78956ba1205a9795c91"
66
68
  }
@@ -0,0 +1,162 @@
1
+ import { Query, Params, Paginated, Id, PaginationParams, PaginationOptions } from '@feathersjs/feathers'
2
+
3
+ export type FilterQueryOptions = {
4
+ filters?: FilterSettings
5
+ operators?: string[]
6
+ paginate?: PaginationParams
7
+ }
8
+
9
+ export type QueryFilter = (value: any, options: FilterQueryOptions) => any
10
+
11
+ export type FilterSettings = {
12
+ [key: string]: QueryFilter | true
13
+ }
14
+
15
+ // re-export from @feathersjs/feathers to prevent breaking changes
16
+ export { PaginationOptions, PaginationParams }
17
+
18
+ export interface AdapterServiceOptions {
19
+ /**
20
+ * Whether to allow multiple updates for everything (`true`) or specific methods (e.g. `['create', 'remove']`)
21
+ */
22
+ multi?: boolean | string[]
23
+ /**
24
+ * The name of the id property
25
+ */
26
+ id?: string
27
+ /**
28
+ * Pagination settings for this service
29
+ */
30
+ paginate?: PaginationParams
31
+ /**
32
+ * A list of additional property query operators to allow in a query
33
+ *
34
+ * @deprecated No longer needed when a query schema is used
35
+ */
36
+ operators?: string[]
37
+ /**
38
+ * An object of additional top level query filters, e.g. `{ $populate: true }`
39
+ * Can also be a converter function like `{ $ignoreCase: (value) => value === 'true' ? true : false }`
40
+ *
41
+ * @deprecated No longer needed when a query schema is used
42
+ */
43
+ filters?: FilterSettings
44
+ /**
45
+ * @deprecated Use service `events` option when registering the service with `app.use`.
46
+ */
47
+ events?: string[]
48
+ /**
49
+ * @deprecated No longer needed when a query schema is used
50
+ */
51
+ whitelist?: string[]
52
+ }
53
+
54
+ export interface AdapterQuery extends Query {
55
+ $limit?: number
56
+ $skip?: number
57
+ $select?: string[]
58
+ $sort?: { [key: string]: 1 | -1 }
59
+ }
60
+ /**
61
+ * Additional `params` that can be passed to an adapter service method call.
62
+ */
63
+ export interface AdapterParams<
64
+ Q = AdapterQuery,
65
+ A extends Partial<AdapterServiceOptions> = Partial<AdapterServiceOptions>
66
+ > extends Params<Q> {
67
+ adapter?: A
68
+ paginate?: PaginationParams
69
+ }
70
+
71
+ /**
72
+ * Hook-less (internal) service methods. Directly call database adapter service methods
73
+ * without running any service-level hooks or sanitization. This can be useful if you need the raw data
74
+ * from the service and don't want to trigger any of its hooks.
75
+ *
76
+ * Important: These methods are only available internally on the server, not on the client
77
+ * side and only for the Feathers database adapters.
78
+ *
79
+ * These methods do not trigger events.
80
+ *
81
+ * @see {@link https://docs.feathersjs.com/guides/migrating.html#hook-less-service-methods}
82
+ */
83
+ export interface InternalServiceMethods<
84
+ Result = any,
85
+ Data = Result,
86
+ PatchData = Partial<Data>,
87
+ Params extends AdapterParams = AdapterParams,
88
+ IdType = Id
89
+ > {
90
+ /**
91
+ * Retrieve all resources from this service.
92
+ * Does not sanitize the query and should only be used on the server.
93
+ *
94
+ * @param _params - Service call parameters {@link Params}
95
+ */
96
+ _find(_params?: Params & { paginate?: PaginationOptions }): Promise<Paginated<Result>>
97
+ _find(_params?: Params & { paginate: false }): Promise<Result[]>
98
+ _find(params?: Params): Promise<Result[] | Paginated<Result>>
99
+
100
+ /**
101
+ * Retrieve a single resource matching the given ID, skipping any service-level hooks.
102
+ * Does not sanitize the query and should only be used on the server.
103
+ *
104
+ * @param id - ID of the resource to locate
105
+ * @param params - Service call parameters {@link Params}
106
+ * @see {@link HookLessServiceMethods}
107
+ * @see {@link https://docs.feathersjs.com/api/services.html#get-id-params|Feathers API Documentation: .get(id, params)}
108
+ */
109
+ _get(id: IdType, params?: Params): Promise<Result>
110
+
111
+ /**
112
+ * Create a new resource for this service, skipping any service-level hooks.
113
+ * Does not sanitize data or checks if multiple updates are allowed and should only be used on the server.
114
+ *
115
+ * @param data - Data to insert into this service.
116
+ * @param params - Service call parameters {@link Params}
117
+ * @see {@link HookLessServiceMethods}
118
+ * @see {@link https://docs.feathersjs.com/api/services.html#create-data-params|Feathers API Documentation: .create(data, params)}
119
+ */
120
+ _create(data: Data, params?: Params): Promise<Result>
121
+ _create(data: Data[], params?: Params): Promise<Result[]>
122
+ _create(data: Data | Data[], params?: Params): Promise<Result | Result[]>
123
+
124
+ /**
125
+ * Completely replace the resource identified by id, skipping any service-level hooks.
126
+ * Does not sanitize data or query and should only be used on the server.
127
+ *
128
+ * @param id - ID of the resource to be updated
129
+ * @param data - Data to be put in place of the current resource.
130
+ * @param params - Service call parameters {@link Params}
131
+ * @see {@link HookLessServiceMethods}
132
+ * @see {@link https://docs.feathersjs.com/api/services.html#update-id-data-params|Feathers API Documentation: .update(id, data, params)}
133
+ */
134
+ _update(id: IdType, data: Data, params?: Params): Promise<Result>
135
+
136
+ /**
137
+ * Merge any resources matching the given ID with the given data, skipping any service-level hooks.
138
+ * Does not sanitize the data or query and should only be used on the server.
139
+ *
140
+ * @param id - ID of the resource to be patched
141
+ * @param data - Data to merge with the current resource.
142
+ * @param params - Service call parameters {@link Params}
143
+ * @see {@link HookLessServiceMethods}
144
+ * @see {@link https://docs.feathersjs.com/api/services.html#patch-id-data-params|Feathers API Documentation: .patch(id, data, params)}
145
+ */
146
+ _patch(id: null, data: PatchData, params?: Params): Promise<Result[]>
147
+ _patch(id: IdType, data: PatchData, params?: Params): Promise<Result>
148
+ _patch(id: IdType | null, data: PatchData, params?: Params): Promise<Result | Result[]>
149
+
150
+ /**
151
+ * Remove resources matching the given ID from the this service, skipping any service-level hooks.
152
+ * Does not sanitize query and should only be used on the server.
153
+ *
154
+ * @param id - ID of the resource to be removed
155
+ * @param params - Service call parameters {@link Params}
156
+ * @see {@link HookLessServiceMethods}
157
+ * @see {@link https://docs.feathersjs.com/api/services.html#remove-id-params|Feathers API Documentation: .remove(id, params)}
158
+ */
159
+ _remove(id: null, params?: Params): Promise<Result[]>
160
+ _remove(id: IdType, params?: Params): Promise<Result>
161
+ _remove(id: IdType | null, params?: Params): Promise<Result | Result[]>
162
+ }
package/src/index.ts CHANGED
@@ -1,32 +1,29 @@
1
- import { _ } from '@feathersjs/commons';
1
+ import { _ } from '@feathersjs/commons'
2
+ import { Params } from '@feathersjs/feathers'
2
3
 
3
- export { AdapterService, InternalServiceMethods, ServiceOptions, AdapterParams } from './service';
4
- export { filterQuery, FILTERS, OPERATORS } from './filter-query';
5
- export * from './sort';
4
+ export * from './declarations'
5
+ export * from './service'
6
+ export * from './query'
7
+ export * from './sort'
6
8
 
7
9
  // Return a function that filters a result object or array
8
10
  // and picks only the fields passed as `params.query.$select`
9
11
  // and additional `otherFields`
10
- export function select (params: any, ...otherFields: any[]) {
11
- const fields = params && params.query && params.query.$select;
12
+ export function select(params: Params, ...otherFields: string[]) {
13
+ const queryFields: string[] | undefined = params?.query?.$select
12
14
 
13
- if (Array.isArray(fields) && otherFields.length) {
14
- fields.push(...otherFields);
15
+ if (!queryFields) {
16
+ return (result: any) => result
15
17
  }
16
18
 
17
- const convert = (result: any) => {
18
- if (!Array.isArray(fields)) {
19
- return result;
20
- }
21
-
22
- return _.pick(result, ...fields);
23
- };
19
+ const resultFields = queryFields.concat(otherFields)
20
+ const convert = (result: any) => _.pick(result, ...resultFields)
24
21
 
25
22
  return (result: any) => {
26
23
  if (Array.isArray(result)) {
27
- return result.map(convert);
24
+ return result.map(convert)
28
25
  }
29
26
 
30
- return convert(result);
31
- };
27
+ return convert(result)
28
+ }
32
29
  }