@feathersjs/mongodb 5.0.0-pre.33 → 5.0.0-pre.34

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.0-pre.34](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.33...v5.0.0-pre.34) (2022-12-14)
7
+
8
+ ### Bug Fixes
9
+
10
+ - **schema:** Check for undefined value in resolveQueryObjectId resolver ([#2914](https://github.com/feathersjs/feathers/issues/2914)) ([d9449fa](https://github.com/feathersjs/feathers/commit/d9449fa835f58fc9cec5f7254c50219494129140))
11
+
12
+ ### Features
13
+
14
+ - **adapter:** Add patch data type to adapters and refactor AdapterBase usage ([#2906](https://github.com/feathersjs/feathers/issues/2906)) ([9ddc2e6](https://github.com/feathersjs/feathers/commit/9ddc2e6b028f026f939d6af68125847e5c6734b4))
15
+
6
16
  # [5.0.0-pre.33](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.32...v5.0.0-pre.33) (2022-11-08)
7
17
 
8
18
  ### Features
package/lib/adapter.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { ObjectId, Collection, FindOptions, BulkWriteOptions, InsertOneOptions, DeleteOptions, CountDocumentsOptions, ReplaceOptions, Document } from 'mongodb';
2
2
  import { AdapterBase, AdapterParams, AdapterServiceOptions, PaginationOptions, AdapterQuery } from '@feathersjs/adapter-commons';
3
- import { NullableId, Id, Paginated } from '@feathersjs/feathers';
3
+ import { Id, Paginated } from '@feathersjs/feathers';
4
4
  export interface MongoDBAdapterOptions extends AdapterServiceOptions {
5
5
  Model: Collection | Promise<Collection>;
6
6
  disableObjectify?: boolean;
@@ -10,10 +10,12 @@ export interface MongoDBAdapterParams<Q = AdapterQuery> extends AdapterParams<Q,
10
10
  pipeline?: Document[];
11
11
  mongodb?: BulkWriteOptions | FindOptions | InsertOneOptions | DeleteOptions | CountDocumentsOptions | ReplaceOptions;
12
12
  }
13
- export declare class MongoDbAdapter<T, D = Partial<T>, P extends MongoDBAdapterParams<any> = MongoDBAdapterParams> extends AdapterBase<T, D, P, MongoDBAdapterOptions> {
13
+ export type AdapterId = Id | ObjectId;
14
+ export type NullableAdapterId = AdapterId | null;
15
+ export declare class MongoDbAdapter<Result, Data = Partial<Result>, ServiceParams extends MongoDBAdapterParams<any> = MongoDBAdapterParams, PatchData = Partial<Data>> extends AdapterBase<Result, Data, PatchData, ServiceParams, MongoDBAdapterOptions, AdapterId> {
14
16
  constructor(options: MongoDBAdapterOptions);
15
- getObjectId(id: Id | ObjectId): Id | ObjectId;
16
- filterQuery(id: NullableId | ObjectId, params: P): {
17
+ getObjectId(id: AdapterId): AdapterId;
18
+ filterQuery(id: NullableAdapterId, params: ServiceParams): {
17
19
  filters: {
18
20
  $select: string[];
19
21
  $sort: {
@@ -26,35 +28,33 @@ export declare class MongoDbAdapter<T, D = Partial<T>, P extends MongoDBAdapterP
26
28
  [key: string]: any;
27
29
  };
28
30
  };
29
- getModel(params: P): Promise<Collection<Document>>;
30
- findRaw(params: P): Promise<import("mongodb").FindCursor<import("mongodb").WithId<Document>>>;
31
- aggregateRaw(params: P): Promise<import("mongodb").AggregationCursor<Document>>;
32
- makeFeathersPipeline(params: P): Document[];
31
+ getModel(params: ServiceParams): Promise<Collection<Document>>;
32
+ findRaw(params: ServiceParams): Promise<import("mongodb").FindCursor<import("mongodb").WithId<Document>>>;
33
+ aggregateRaw(params: ServiceParams): Promise<import("mongodb").AggregationCursor<Document>>;
34
+ makeFeathersPipeline(params: ServiceParams): Document[];
33
35
  getSelect(select: string[] | {
34
36
  [key: string]: number;
35
37
  }): {
36
38
  [key: string]: number;
37
39
  };
38
- $findOrGet(id: NullableId | ObjectId, params: P): Promise<T | Paginated<T> | T[]>;
39
- normalizeId(id: NullableId | ObjectId, data: Partial<D>): Partial<D>;
40
- $get(id: Id | ObjectId, params?: P): Promise<T>;
41
- $find(params?: P & {
40
+ _findOrGet(id: NullableAdapterId, params: ServiceParams): Promise<Result | Paginated<Result> | Result[]>;
41
+ normalizeId<D>(id: NullableAdapterId, data: D): D;
42
+ _get(id: AdapterId, params?: ServiceParams): Promise<Result>;
43
+ _find(params?: ServiceParams & {
42
44
  paginate?: PaginationOptions;
43
- }): Promise<Paginated<T>>;
44
- $find(params?: P & {
45
+ }): Promise<Paginated<Result>>;
46
+ _find(params?: ServiceParams & {
45
47
  paginate: false;
46
- }): Promise<T[]>;
47
- $find(params?: P): Promise<Paginated<T> | T[]>;
48
- $create(data: D, params?: P): Promise<T>;
49
- $create(data: D[], params?: P): Promise<T[]>;
50
- $create(data: D | D[], _params?: P): Promise<T | T[]>;
51
- $patch(id: null, data: Partial<D>, params?: P): Promise<T[]>;
52
- $patch(id: Id, data: Partial<D>, params?: P): Promise<T>;
53
- $patch(id: ObjectId, data: Partial<D>, params?: P): Promise<T>;
54
- $patch(id: NullableId, data: Partial<D>, _params?: P): Promise<T | T[]>;
55
- $update(id: Id | ObjectId, data: D, params?: P): Promise<T>;
56
- $remove(id: null, params?: P): Promise<T[]>;
57
- $remove(id: Id, params?: P): Promise<T>;
58
- $remove(id: ObjectId, params?: P): Promise<T>;
59
- $remove(id: NullableId, _params?: P): Promise<T | T[]>;
48
+ }): Promise<Result[]>;
49
+ _find(params?: ServiceParams): Promise<Paginated<Result> | Result[]>;
50
+ _create(data: Data, params?: ServiceParams): Promise<Result>;
51
+ _create(data: Data[], params?: ServiceParams): Promise<Result[]>;
52
+ _create(data: Data | Data[], _params?: ServiceParams): Promise<Result | Result[]>;
53
+ _patch(id: null, data: PatchData, params?: ServiceParams): Promise<Result[]>;
54
+ _patch(id: AdapterId, data: PatchData, params?: ServiceParams): Promise<Result>;
55
+ _patch(id: NullableAdapterId, data: PatchData, _params?: ServiceParams): Promise<Result | Result[]>;
56
+ _update(id: AdapterId, data: Data, params?: ServiceParams): Promise<Result>;
57
+ _remove(id: null, params?: ServiceParams): Promise<Result[]>;
58
+ _remove(id: AdapterId, params?: ServiceParams): Promise<Result>;
59
+ _remove(id: NullableAdapterId, _params?: ServiceParams): Promise<Result | Result[]>;
60
60
  }
package/lib/adapter.js CHANGED
@@ -98,8 +98,8 @@ class MongoDbAdapter extends adapter_commons_1.AdapterBase {
98
98
  }
99
99
  return select;
100
100
  }
101
- async $findOrGet(id, params) {
102
- return id === null ? await this.$find(params) : await this.$get(id, params);
101
+ async _findOrGet(id, params) {
102
+ return id === null ? await this._find(params) : await this._get(id, params);
103
103
  }
104
104
  normalizeId(id, data) {
105
105
  if (this.id === '_id') {
@@ -117,7 +117,7 @@ class MongoDbAdapter extends adapter_commons_1.AdapterBase {
117
117
  }
118
118
  return data;
119
119
  }
120
- async $get(id, params = {}) {
120
+ async _get(id, params = {}) {
121
121
  const { query, filters: { $select } } = this.filterQuery(id, params);
122
122
  const projection = $select
123
123
  ? {
@@ -141,7 +141,7 @@ class MongoDbAdapter extends adapter_commons_1.AdapterBase {
141
141
  })
142
142
  .catch(error_handler_1.errorHandler);
143
143
  }
144
- async $find(params = {}) {
144
+ async _find(params = {}) {
145
145
  const { paginate, useEstimatedDocumentCount } = this.getOptions(params);
146
146
  const { filters, query } = this.filterQuery(null, params);
147
147
  const useAggregation = !params.mongodb && filters.$limit !== 0;
@@ -169,7 +169,7 @@ class MongoDbAdapter extends adapter_commons_1.AdapterBase {
169
169
  };
170
170
  return paginate && paginate.default ? page : page.data;
171
171
  }
172
- async $create(data, params = {}) {
172
+ async _create(data, params = {}) {
173
173
  const writeOptions = params.mongodb;
174
174
  const model = await this.getModel(params);
175
175
  const setId = (item) => {
@@ -192,7 +192,10 @@ class MongoDbAdapter extends adapter_commons_1.AdapterBase {
192
192
  .then(async (result) => model.findOne({ _id: result.insertedId }, params.mongodb));
193
193
  return promise.then((0, adapter_commons_1.select)(params, this.id)).catch(error_handler_1.errorHandler);
194
194
  }
195
- async $patch(id, _data, params = {}) {
195
+ async _patch(id, _data, params = {}) {
196
+ if (id === null && !this.allowsMulti('patch', params)) {
197
+ throw new errors_1.MethodNotAllowed('Can not patch multiple entries');
198
+ }
196
199
  const data = this.normalizeId(id, _data);
197
200
  const model = await this.getModel(params);
198
201
  const { query, filters: { $select } } = this.filterQuery(id, params);
@@ -210,7 +213,7 @@ class MongoDbAdapter extends adapter_commons_1.AdapterBase {
210
213
  }
211
214
  return current;
212
215
  }, {});
213
- const originalIds = await this.$findOrGet(id, {
216
+ const originalIds = await this._findOrGet(id, {
214
217
  ...params,
215
218
  query: {
216
219
  ...query,
@@ -229,16 +232,22 @@ class MongoDbAdapter extends adapter_commons_1.AdapterBase {
229
232
  }
230
233
  };
231
234
  await model.updateMany(query, modifier, updateOptions);
232
- return this.$findOrGet(id, findParams).catch(error_handler_1.errorHandler);
235
+ return this._findOrGet(id, findParams).catch(error_handler_1.errorHandler);
233
236
  }
234
- async $update(id, data, params = {}) {
237
+ async _update(id, data, params = {}) {
238
+ if (id === null || Array.isArray(data)) {
239
+ throw new errors_1.BadRequest("You can not replace multiple instances. Did you mean 'patch'?");
240
+ }
235
241
  const model = await this.getModel(params);
236
242
  const { query } = this.filterQuery(id, params);
237
243
  const replaceOptions = { ...params.mongodb };
238
244
  await model.replaceOne(query, this.normalizeId(id, data), replaceOptions);
239
- return this.$findOrGet(id, params).catch(error_handler_1.errorHandler);
245
+ return this._findOrGet(id, params).catch(error_handler_1.errorHandler);
240
246
  }
241
- async $remove(id, params = {}) {
247
+ async _remove(id, params = {}) {
248
+ if (id === null && !this.allowsMulti('remove', params)) {
249
+ throw new errors_1.MethodNotAllowed('Can not remove multiple entries');
250
+ }
242
251
  const model = await this.getModel(params);
243
252
  const { query, filters: { $select } } = this.filterQuery(id, params);
244
253
  const deleteOptions = { ...params.mongodb };
@@ -250,7 +259,7 @@ class MongoDbAdapter extends adapter_commons_1.AdapterBase {
250
259
  $select
251
260
  }
252
261
  };
253
- return this.$findOrGet(id, findParams)
262
+ return this._findOrGet(id, findParams)
254
263
  .then(async (items) => {
255
264
  await model.deleteMany(query, deleteOptions);
256
265
  return items;
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -1,28 +1,23 @@
1
1
  import { PaginationOptions } from '@feathersjs/adapter-commons';
2
- import { Paginated, ServiceMethods, Id, Params } from '@feathersjs/feathers';
3
- import { ObjectId } from 'mongodb';
4
- import { MongoDbAdapter, MongoDBAdapterParams } from './adapter';
2
+ import { Paginated, Params } from '@feathersjs/feathers';
3
+ import { AdapterId, MongoDbAdapter, MongoDBAdapterParams } from './adapter';
5
4
  export * from './adapter';
6
5
  export * from './error-handler';
7
6
  export * from './resolvers';
8
- export declare class MongoDBService<T = any, D = Partial<T>, P extends Params<any> = MongoDBAdapterParams> extends MongoDbAdapter<T, D, P> implements ServiceMethods<T | Paginated<T>, D, P> {
9
- find(params?: P & {
7
+ export declare class MongoDBService<Result = any, Data = Partial<Result>, ServiceParams extends Params<any> = MongoDBAdapterParams, PatchData = Partial<Data>> extends MongoDbAdapter<Result, Data, ServiceParams, PatchData> {
8
+ find(params?: ServiceParams & {
10
9
  paginate?: PaginationOptions;
11
- }): Promise<Paginated<T>>;
12
- find(params?: P & {
10
+ }): Promise<Paginated<Result>>;
11
+ find(params?: ServiceParams & {
13
12
  paginate: false;
14
- }): Promise<T[]>;
15
- find(params?: P): Promise<Paginated<T> | T[]>;
16
- get(id: ObjectId, params?: P): Promise<T>;
17
- get(id: Id, params?: P): Promise<T>;
18
- create(data: D, params?: P): Promise<T>;
19
- create(data: D[], params?: P): Promise<T[]>;
20
- update(id: Id, data: D, params?: P): Promise<T>;
21
- update(id: ObjectId, data: D, params?: P): Promise<T>;
22
- patch(id: ObjectId, data: Partial<D>, params?: P): Promise<T>;
23
- patch(id: Id, data: Partial<D>, params?: P): Promise<T>;
24
- patch(id: null, data: Partial<D>, params?: P): Promise<T[]>;
25
- remove(id: Id, params?: P): Promise<T>;
26
- remove(id: ObjectId, params?: P): Promise<T>;
27
- remove(id: null, params?: P): Promise<T[]>;
13
+ }): Promise<Result[]>;
14
+ find(params?: ServiceParams): Promise<Paginated<Result> | Result[]>;
15
+ get(id: AdapterId, params?: ServiceParams): Promise<Result>;
16
+ create(data: Data, params?: ServiceParams): Promise<Result>;
17
+ create(data: Data[], params?: ServiceParams): Promise<Result[]>;
18
+ update(id: AdapterId, data: Data, params?: ServiceParams): Promise<Result>;
19
+ patch(id: null, data: PatchData, params?: ServiceParams): Promise<Result[]>;
20
+ patch(id: AdapterId, data: PatchData, params?: ServiceParams): Promise<Result>;
21
+ remove(id: AdapterId, params?: ServiceParams): Promise<Result>;
22
+ remove(id: null, params?: ServiceParams): Promise<Result[]>;
28
23
  }
package/lib/index.js CHANGED
@@ -15,28 +15,49 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.MongoDBService = void 0;
18
+ const lib_1 = require("@feathersjs/errors/lib");
18
19
  const adapter_1 = require("./adapter");
19
20
  __exportStar(require("./adapter"), exports);
20
21
  __exportStar(require("./error-handler"), exports);
21
22
  __exportStar(require("./resolvers"), exports);
22
23
  class MongoDBService extends adapter_1.MongoDbAdapter {
23
24
  async find(params) {
24
- return this._find(params);
25
+ return this._find({
26
+ ...params,
27
+ query: await this.sanitizeQuery(params)
28
+ });
25
29
  }
26
30
  async get(id, params) {
27
- return this._get(id, params);
31
+ return this._get(id, {
32
+ ...params,
33
+ query: await this.sanitizeQuery(params)
34
+ });
28
35
  }
29
36
  async create(data, params) {
37
+ if (Array.isArray(data) && !this.allowsMulti('create', params)) {
38
+ throw new lib_1.MethodNotAllowed('Can not create multiple entries');
39
+ }
30
40
  return this._create(data, params);
31
41
  }
32
42
  async update(id, data, params) {
33
- return this._update(id, data, params);
43
+ return this._update(id, data, {
44
+ ...params,
45
+ query: await this.sanitizeQuery(params)
46
+ });
34
47
  }
35
48
  async patch(id, data, params) {
36
- return this._patch(id, data, params);
49
+ const { $limit, ...query } = await this.sanitizeQuery(params);
50
+ return this._patch(id, data, {
51
+ ...params,
52
+ query
53
+ });
37
54
  }
38
55
  async remove(id, params) {
39
- return this._remove(id, params);
56
+ const { $limit, ...query } = await this.sanitizeQuery(params);
57
+ return this._remove(id, {
58
+ ...params,
59
+ query
60
+ });
40
61
  }
41
62
  }
42
63
  exports.MongoDBService = MongoDBService;
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAGA,uCAAgE;AAEhE,4CAAyB;AACzB,kDAA+B;AAC/B,8CAA2B;AAE3B,MAAa,cACX,SAAQ,wBAAuB;IAM/B,KAAK,CAAC,IAAI,CAAC,MAAU;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAQ,CAAA;IAClC,CAAC;IAID,KAAK,CAAC,GAAG,CAAC,EAAiB,EAAE,MAAU;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAQ,EAAE,MAAM,CAAC,CAAA;IACpC,CAAC;IAID,KAAK,CAAC,MAAM,CAAC,IAAa,EAAE,MAAU;QACpC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACnC,CAAC;IAID,KAAK,CAAC,MAAM,CAAC,EAAiB,EAAE,IAAO,EAAE,MAAU;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IAC7C,CAAC;IAKD,KAAK,CAAC,KAAK,CAAC,EAAyB,EAAE,IAAgB,EAAE,MAAU;QACjE,OAAO,IAAI,CAAC,MAAM,CAAC,EAAgB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IACpD,CAAC;IAKD,KAAK,CAAC,MAAM,CAAC,EAAyB,EAAE,MAAU;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAgB,EAAE,MAAM,CAAC,CAAA;IAC/C,CAAC;CACF;AA1CD,wCA0CC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,gDAAyD;AAEzD,uCAA8F;AAE9F,4CAAyB;AACzB,kDAA+B;AAC/B,8CAA2B;AAE3B,MAAa,cAKX,SAAQ,wBAAsD;IAI9D,KAAK,CAAC,IAAI,CAAC,MAAsB;QAC/B,OAAO,IAAI,CAAC,KAAK,CAAC;YAChB,GAAG,MAAM;YACT,KAAK,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;SACxC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAa,EAAE,MAAsB;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;YACnB,GAAG,MAAM;YACT,KAAK,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;SACxC,CAAC,CAAA;IACJ,CAAC;IAID,KAAK,CAAC,MAAM,CAAC,IAAmB,EAAE,MAAsB;QACtD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;YAC9D,MAAM,IAAI,sBAAgB,CAAC,iCAAiC,CAAC,CAAA;SAC9D;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAa,EAAE,IAAU,EAAE,MAAsB;QAC5D,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE;YAC5B,GAAG,MAAM;YACT,KAAK,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;SACxC,CAAC,CAAA;IACJ,CAAC;IAID,KAAK,CAAC,KAAK,CAAC,EAAqB,EAAE,IAAe,EAAE,MAAsB;QACxE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAE7D,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE;YAC3B,GAAG,MAAM;YACT,KAAK;SACN,CAAC,CAAA;IACJ,CAAC;IAID,KAAK,CAAC,MAAM,CAAC,EAAqB,EAAE,MAAsB;QACxD,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAE7D,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE;YACtB,GAAG,MAAM;YACT,KAAK;SACN,CAAC,CAAA;IACJ,CAAC;CACF;AA7DD,wCA6DC"}
@@ -1,6 +1,6 @@
1
1
  import { ObjectId } from 'mongodb';
2
- export declare type ObjectIdParam = string | number | ObjectId;
3
- export declare type IdQueryObject<T> = {
2
+ export type ObjectIdParam = string | number | ObjectId;
3
+ export type IdQueryObject<T> = {
4
4
  $in?: T[];
5
5
  $nin?: T[];
6
6
  $ne?: T;
package/lib/resolvers.js CHANGED
@@ -8,6 +8,9 @@ async function resolveObjectId(value) {
8
8
  }
9
9
  exports.resolveObjectId = resolveObjectId;
10
10
  async function resolveQueryObjectId(value) {
11
+ if (!value) {
12
+ return undefined;
13
+ }
11
14
  if (typeof value === 'string' || typeof value === 'number' || value instanceof mongodb_1.ObjectId) {
12
15
  return toObjectId(value);
13
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../src/resolvers.ts"],"names":[],"mappings":";;;AAAA,qCAAkC;AAUlC,MAAM,UAAU,GAAG,CAAC,KAAoB,EAAE,EAAE,CAAC,IAAI,kBAAQ,CAAC,KAAK,CAAC,CAAA;AAEzD,KAAK,UAAU,eAAe,CAAC,KAAoB;IACxD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAA;AAC1B,CAAC;AAFD,0CAEC;AAMM,KAAK,UAAU,oBAAoB,CAAC,KAAmD;IAC5F,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,kBAAQ,EAAE;QACvF,OAAO,UAAU,CAAC,KAAK,CAAC,CAAA;KACzB;IAED,MAAM,eAAe,GAA4B,EAAE,CAAA;IAEnD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QAC5B,eAAe,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;KAChD;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QAC7B,eAAe,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;KAClD;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;QAC3B,eAAe,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;KAC5C;IAED,OAAO,eAAe,CAAA;AACxB,CAAC;AApBD,oDAoBC"}
1
+ {"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../src/resolvers.ts"],"names":[],"mappings":";;;AAAA,qCAAkC;AAUlC,MAAM,UAAU,GAAG,CAAC,KAAoB,EAAE,EAAE,CAAC,IAAI,kBAAQ,CAAC,KAAK,CAAC,CAAA;AAEzD,KAAK,UAAU,eAAe,CAAC,KAAoB;IACxD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAA;AAC1B,CAAC;AAFD,0CAEC;AAMM,KAAK,UAAU,oBAAoB,CAAC,KAAmD;IAC5F,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,SAAS,CAAA;KACjB;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,kBAAQ,EAAE;QACvF,OAAO,UAAU,CAAC,KAAK,CAAC,CAAA;KACzB;IAED,MAAM,eAAe,GAA4B,EAAE,CAAA;IAEnD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QAC5B,eAAe,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;KAChD;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QAC7B,eAAe,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;KAClD;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;QAC3B,eAAe,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;KAC5C;IAED,OAAO,eAAe,CAAA;AACxB,CAAC;AAxBD,oDAwBC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@feathersjs/mongodb",
3
3
  "description": "Feathers MongoDB service adapter",
4
- "version": "5.0.0-pre.33",
4
+ "version": "5.0.0-pre.34",
5
5
  "homepage": "https://feathersjs.com",
6
6
  "main": "lib/",
7
7
  "keywords": [
@@ -51,22 +51,22 @@
51
51
  "access": "public"
52
52
  },
53
53
  "dependencies": {
54
- "@feathersjs/adapter-commons": "^5.0.0-pre.33",
55
- "@feathersjs/commons": "^5.0.0-pre.33",
56
- "@feathersjs/errors": "^5.0.0-pre.33",
57
- "@feathersjs/feathers": "^5.0.0-pre.33"
54
+ "@feathersjs/adapter-commons": "^5.0.0-pre.34",
55
+ "@feathersjs/commons": "^5.0.0-pre.34",
56
+ "@feathersjs/errors": "^5.0.0-pre.34",
57
+ "@feathersjs/feathers": "^5.0.0-pre.34"
58
58
  },
59
59
  "peerDependencies": {
60
60
  "mongodb": "^4.5.0"
61
61
  },
62
62
  "devDependencies": {
63
- "@feathersjs/adapter-tests": "^5.0.0-pre.33",
64
- "@types/mocha": "^10.0.0",
65
- "@types/node": "^18.11.9",
63
+ "@feathersjs/adapter-tests": "^5.0.0-pre.34",
64
+ "@types/mocha": "^10.0.1",
65
+ "@types/node": "^18.11.10",
66
66
  "mocha": "^10.1.0",
67
- "mongodb-memory-server": "^8.9.5",
67
+ "mongodb-memory-server": "^8.10.1",
68
68
  "shx": "^0.3.4",
69
- "typescript": "^4.8.4"
69
+ "typescript": "^4.9.3"
70
70
  },
71
- "gitHead": "89f516bcb1457e23a02c6212e9cd8bacc4d267d4"
71
+ "gitHead": "42cca600d00f0b3b9d89fa79be30fcd46bc50132"
72
72
  }
package/src/adapter.ts CHANGED
@@ -9,7 +9,7 @@ import {
9
9
  ReplaceOptions,
10
10
  Document
11
11
  } from 'mongodb'
12
- import { NotFound } from '@feathersjs/errors'
12
+ import { BadRequest, MethodNotAllowed, NotFound } from '@feathersjs/errors'
13
13
  import { _ } from '@feathersjs/commons'
14
14
  import {
15
15
  AdapterBase,
@@ -19,7 +19,7 @@ import {
19
19
  PaginationOptions,
20
20
  AdapterQuery
21
21
  } from '@feathersjs/adapter-commons'
22
- import { NullableId, Id, Paginated } from '@feathersjs/feathers'
22
+ import { Id, Paginated } from '@feathersjs/feathers'
23
23
  import { errorHandler } from './error-handler'
24
24
 
25
25
  export interface MongoDBAdapterOptions extends AdapterServiceOptions {
@@ -40,12 +40,17 @@ export interface MongoDBAdapterParams<Q = AdapterQuery>
40
40
  | ReplaceOptions
41
41
  }
42
42
 
43
+ export type AdapterId = Id | ObjectId
44
+
45
+ export type NullableAdapterId = AdapterId | null
46
+
43
47
  // Create the service.
44
48
  export class MongoDbAdapter<
45
- T,
46
- D = Partial<T>,
47
- P extends MongoDBAdapterParams<any> = MongoDBAdapterParams
48
- > extends AdapterBase<T, D, P, MongoDBAdapterOptions> {
49
+ Result,
50
+ Data = Partial<Result>,
51
+ ServiceParams extends MongoDBAdapterParams<any> = MongoDBAdapterParams,
52
+ PatchData = Partial<Data>
53
+ > extends AdapterBase<Result, Data, PatchData, ServiceParams, MongoDBAdapterOptions, AdapterId> {
49
54
  constructor(options: MongoDBAdapterOptions) {
50
55
  if (!options) {
51
56
  throw new Error('MongoDB options have to be provided')
@@ -57,7 +62,7 @@ export class MongoDbAdapter<
57
62
  })
58
63
  }
59
64
 
60
- getObjectId(id: Id | ObjectId) {
65
+ getObjectId(id: AdapterId) {
61
66
  if (this.options.disableObjectify) {
62
67
  return id
63
68
  }
@@ -69,7 +74,7 @@ export class MongoDbAdapter<
69
74
  return id
70
75
  }
71
76
 
72
- filterQuery(id: NullableId | ObjectId, params: P) {
77
+ filterQuery(id: NullableAdapterId, params: ServiceParams) {
73
78
  const { $select, $sort, $limit, $skip, ...query } = (params.query || {}) as AdapterQuery
74
79
 
75
80
  if (id !== null) {
@@ -88,12 +93,12 @@ export class MongoDbAdapter<
88
93
  }
89
94
  }
90
95
 
91
- getModel(params: P) {
96
+ getModel(params: ServiceParams) {
92
97
  const { Model } = this.getOptions(params)
93
98
  return Promise.resolve(Model)
94
99
  }
95
100
 
96
- async findRaw(params: P) {
101
+ async findRaw(params: ServiceParams) {
97
102
  const { filters, query } = this.filterQuery(null, params)
98
103
  const model = await this.getModel(params)
99
104
  const q = model.find(query, { ...params.mongodb })
@@ -117,7 +122,7 @@ export class MongoDbAdapter<
117
122
  return q
118
123
  }
119
124
 
120
- async aggregateRaw(params: P) {
125
+ async aggregateRaw(params: ServiceParams) {
121
126
  const model = await this.getModel(params)
122
127
  const pipeline = params.pipeline || []
123
128
  const index = pipeline.findIndex((stage: Document) => stage.$feathers)
@@ -128,7 +133,7 @@ export class MongoDbAdapter<
128
133
  return model.aggregate([...before, ...feathersPipeline, ...after])
129
134
  }
130
135
 
131
- makeFeathersPipeline(params: P) {
136
+ makeFeathersPipeline(params: ServiceParams) {
132
137
  const { filters, query } = this.filterQuery(null, params)
133
138
  const pipeline: Document[] = [{ $match: query }]
134
139
 
@@ -164,11 +169,11 @@ export class MongoDbAdapter<
164
169
  return select
165
170
  }
166
171
 
167
- async $findOrGet(id: NullableId | ObjectId, params: P) {
168
- return id === null ? await this.$find(params) : await this.$get(id, params)
172
+ async _findOrGet(id: NullableAdapterId, params: ServiceParams) {
173
+ return id === null ? await this._find(params) : await this._get(id, params)
169
174
  }
170
175
 
171
- normalizeId(id: NullableId | ObjectId, data: Partial<D>): Partial<D> {
176
+ normalizeId<D>(id: NullableAdapterId, data: D): D {
172
177
  if (this.id === '_id') {
173
178
  // Default Mongo IDs cannot be updated. The Mongo library handles
174
179
  // this automatically.
@@ -184,7 +189,7 @@ export class MongoDbAdapter<
184
189
  return data
185
190
  }
186
191
 
187
- async $get(id: Id | ObjectId, params: P = {} as P): Promise<T> {
192
+ async _get(id: AdapterId, params: ServiceParams = {} as ServiceParams): Promise<Result> {
188
193
  const {
189
194
  query,
190
195
  filters: { $select }
@@ -214,10 +219,10 @@ export class MongoDbAdapter<
214
219
  .catch(errorHandler)
215
220
  }
216
221
 
217
- async $find(params?: P & { paginate?: PaginationOptions }): Promise<Paginated<T>>
218
- async $find(params?: P & { paginate: false }): Promise<T[]>
219
- async $find(params?: P): Promise<Paginated<T> | T[]>
220
- async $find(params: P = {} as P): Promise<Paginated<T> | T[]> {
222
+ async _find(params?: ServiceParams & { paginate?: PaginationOptions }): Promise<Paginated<Result>>
223
+ async _find(params?: ServiceParams & { paginate: false }): Promise<Result[]>
224
+ async _find(params?: ServiceParams): Promise<Paginated<Result> | Result[]>
225
+ async _find(params: ServiceParams = {} as ServiceParams): Promise<Paginated<Result> | Result[]> {
221
226
  const { paginate, useEstimatedDocumentCount } = this.getOptions(params)
222
227
  const { filters, query } = this.filterQuery(null, params)
223
228
  const useAggregation = !params.mongodb && filters.$limit !== 0
@@ -243,16 +248,19 @@ export class MongoDbAdapter<
243
248
  total,
244
249
  limit: filters.$limit,
245
250
  skip: filters.$skip || 0,
246
- data: filters.$limit === 0 ? [] : ((await request.toArray()) as any as T[])
251
+ data: filters.$limit === 0 ? [] : ((await request.toArray()) as any as Result[])
247
252
  }
248
253
 
249
254
  return paginate && paginate.default ? page : page.data
250
255
  }
251
256
 
252
- async $create(data: D, params?: P): Promise<T>
253
- async $create(data: D[], params?: P): Promise<T[]>
254
- async $create(data: D | D[], _params?: P): Promise<T | T[]>
255
- async $create(data: D | D[], params: P = {} as P): Promise<T | T[]> {
257
+ async _create(data: Data, params?: ServiceParams): Promise<Result>
258
+ async _create(data: Data[], params?: ServiceParams): Promise<Result[]>
259
+ async _create(data: Data | Data[], _params?: ServiceParams): Promise<Result | Result[]>
260
+ async _create(
261
+ data: Data | Data[],
262
+ params: ServiceParams = {} as ServiceParams
263
+ ): Promise<Result | Result[]> {
256
264
  const writeOptions = params.mongodb
257
265
  const model = await this.getModel(params)
258
266
  const setId = (item: any) => {
@@ -284,11 +292,18 @@ export class MongoDbAdapter<
284
292
  return promise.then(select(params, this.id)).catch(errorHandler)
285
293
  }
286
294
 
287
- async $patch(id: null, data: Partial<D>, params?: P): Promise<T[]>
288
- async $patch(id: Id, data: Partial<D>, params?: P): Promise<T>
289
- async $patch(id: ObjectId, data: Partial<D>, params?: P): Promise<T>
290
- async $patch(id: NullableId, data: Partial<D>, _params?: P): Promise<T | T[]>
291
- async $patch(id: NullableId | ObjectId, _data: Partial<D>, params: P = {} as P): Promise<T | T[]> {
295
+ async _patch(id: null, data: PatchData, params?: ServiceParams): Promise<Result[]>
296
+ async _patch(id: AdapterId, data: PatchData, params?: ServiceParams): Promise<Result>
297
+ async _patch(id: NullableAdapterId, data: PatchData, _params?: ServiceParams): Promise<Result | Result[]>
298
+ async _patch(
299
+ id: NullableAdapterId,
300
+ _data: PatchData,
301
+ params: ServiceParams = {} as ServiceParams
302
+ ): Promise<Result | Result[]> {
303
+ if (id === null && !this.allowsMulti('patch', params)) {
304
+ throw new MethodNotAllowed('Can not patch multiple entries')
305
+ }
306
+
292
307
  const data = this.normalizeId(id, _data)
293
308
  const model = await this.getModel(params)
294
309
  const {
@@ -310,7 +325,7 @@ export class MongoDbAdapter<
310
325
 
311
326
  return current
312
327
  }, {} as any)
313
- const originalIds = await this.$findOrGet(id, {
328
+ const originalIds = await this._findOrGet(id, {
314
329
  ...params,
315
330
  query: {
316
331
  ...query,
@@ -331,24 +346,34 @@ export class MongoDbAdapter<
331
346
 
332
347
  await model.updateMany(query, modifier, updateOptions)
333
348
 
334
- return this.$findOrGet(id, findParams).catch(errorHandler)
349
+ return this._findOrGet(id, findParams).catch(errorHandler)
335
350
  }
336
351
 
337
- async $update(id: Id | ObjectId, data: D, params: P = {} as P): Promise<T> {
352
+ async _update(id: AdapterId, data: Data, params: ServiceParams = {} as ServiceParams): Promise<Result> {
353
+ if (id === null || Array.isArray(data)) {
354
+ throw new BadRequest("You can not replace multiple instances. Did you mean 'patch'?")
355
+ }
356
+
338
357
  const model = await this.getModel(params)
339
358
  const { query } = this.filterQuery(id, params)
340
359
  const replaceOptions = { ...params.mongodb }
341
360
 
342
361
  await model.replaceOne(query, this.normalizeId(id, data), replaceOptions)
343
362
 
344
- return this.$findOrGet(id, params).catch(errorHandler)
363
+ return this._findOrGet(id, params).catch(errorHandler)
345
364
  }
346
365
 
347
- async $remove(id: null, params?: P): Promise<T[]>
348
- async $remove(id: Id, params?: P): Promise<T>
349
- async $remove(id: ObjectId, params?: P): Promise<T>
350
- async $remove(id: NullableId, _params?: P): Promise<T | T[]>
351
- async $remove(id: NullableId | ObjectId, params: P = {} as P): Promise<T | T[]> {
366
+ async _remove(id: null, params?: ServiceParams): Promise<Result[]>
367
+ async _remove(id: AdapterId, params?: ServiceParams): Promise<Result>
368
+ async _remove(id: NullableAdapterId, _params?: ServiceParams): Promise<Result | Result[]>
369
+ async _remove(
370
+ id: NullableAdapterId | ObjectId,
371
+ params: ServiceParams = {} as ServiceParams
372
+ ): Promise<Result | Result[]> {
373
+ if (id === null && !this.allowsMulti('remove', params)) {
374
+ throw new MethodNotAllowed('Can not remove multiple entries')
375
+ }
376
+
352
377
  const model = await this.getModel(params)
353
378
  const {
354
379
  query,
@@ -364,7 +389,7 @@ export class MongoDbAdapter<
364
389
  }
365
390
  }
366
391
 
367
- return this.$findOrGet(id, findParams)
392
+ return this._findOrGet(id, findParams)
368
393
  .then(async (items) => {
369
394
  await model.deleteMany(query, deleteOptions)
370
395
  return items
package/src/index.ts CHANGED
@@ -1,52 +1,71 @@
1
1
  import { PaginationOptions } from '@feathersjs/adapter-commons'
2
- import { Paginated, ServiceMethods, Id, NullableId, Params } from '@feathersjs/feathers'
3
- import { ObjectId } from 'mongodb'
4
- import { MongoDbAdapter, MongoDBAdapterParams } from './adapter'
2
+ import { MethodNotAllowed } from '@feathersjs/errors/lib'
3
+ import { Paginated, Params } from '@feathersjs/feathers'
4
+ import { AdapterId, MongoDbAdapter, MongoDBAdapterParams, NullableAdapterId } from './adapter'
5
5
 
6
6
  export * from './adapter'
7
7
  export * from './error-handler'
8
8
  export * from './resolvers'
9
9
 
10
- export class MongoDBService<T = any, D = Partial<T>, P extends Params<any> = MongoDBAdapterParams>
11
- extends MongoDbAdapter<T, D, P>
12
- implements ServiceMethods<T | Paginated<T>, D, P>
13
- {
14
- async find(params?: P & { paginate?: PaginationOptions }): Promise<Paginated<T>>
15
- async find(params?: P & { paginate: false }): Promise<T[]>
16
- async find(params?: P): Promise<Paginated<T> | T[]>
17
- async find(params?: P): Promise<Paginated<T> | T[]> {
18
- return this._find(params) as any
10
+ export class MongoDBService<
11
+ Result = any,
12
+ Data = Partial<Result>,
13
+ ServiceParams extends Params<any> = MongoDBAdapterParams,
14
+ PatchData = Partial<Data>
15
+ > extends MongoDbAdapter<Result, Data, ServiceParams, PatchData> {
16
+ async find(params?: ServiceParams & { paginate?: PaginationOptions }): Promise<Paginated<Result>>
17
+ async find(params?: ServiceParams & { paginate: false }): Promise<Result[]>
18
+ async find(params?: ServiceParams): Promise<Paginated<Result> | Result[]>
19
+ async find(params?: ServiceParams): Promise<Paginated<Result> | Result[]> {
20
+ return this._find({
21
+ ...params,
22
+ query: await this.sanitizeQuery(params)
23
+ })
19
24
  }
20
25
 
21
- async get(id: ObjectId, params?: P): Promise<T>
22
- async get(id: Id, params?: P): Promise<T>
23
- async get(id: Id | ObjectId, params?: P): Promise<T> {
24
- return this._get(id as Id, params)
26
+ async get(id: AdapterId, params?: ServiceParams): Promise<Result> {
27
+ return this._get(id, {
28
+ ...params,
29
+ query: await this.sanitizeQuery(params)
30
+ })
25
31
  }
26
32
 
27
- async create(data: D, params?: P): Promise<T>
28
- async create(data: D[], params?: P): Promise<T[]>
29
- async create(data: D | D[], params?: P): Promise<T | T[]> {
33
+ async create(data: Data, params?: ServiceParams): Promise<Result>
34
+ async create(data: Data[], params?: ServiceParams): Promise<Result[]>
35
+ async create(data: Data | Data[], params?: ServiceParams): Promise<Result | Result[]> {
36
+ if (Array.isArray(data) && !this.allowsMulti('create', params)) {
37
+ throw new MethodNotAllowed('Can not create multiple entries')
38
+ }
39
+
30
40
  return this._create(data, params)
31
41
  }
32
42
 
33
- async update(id: Id, data: D, params?: P): Promise<T>
34
- async update(id: ObjectId, data: D, params?: P): Promise<T>
35
- async update(id: Id | ObjectId, data: D, params?: P): Promise<T> {
36
- return this._update(id as Id, data, params)
43
+ async update(id: AdapterId, data: Data, params?: ServiceParams): Promise<Result> {
44
+ return this._update(id, data, {
45
+ ...params,
46
+ query: await this.sanitizeQuery(params)
47
+ })
37
48
  }
38
49
 
39
- async patch(id: ObjectId, data: Partial<D>, params?: P): Promise<T>
40
- async patch(id: Id, data: Partial<D>, params?: P): Promise<T>
41
- async patch(id: null, data: Partial<D>, params?: P): Promise<T[]>
42
- async patch(id: NullableId | ObjectId, data: Partial<D>, params?: P): Promise<T | T[]> {
43
- return this._patch(id as NullableId, data, params)
50
+ async patch(id: null, data: PatchData, params?: ServiceParams): Promise<Result[]>
51
+ async patch(id: AdapterId, data: PatchData, params?: ServiceParams): Promise<Result>
52
+ async patch(id: NullableAdapterId, data: PatchData, params?: ServiceParams): Promise<Result | Result[]> {
53
+ const { $limit, ...query } = await this.sanitizeQuery(params)
54
+
55
+ return this._patch(id, data, {
56
+ ...params,
57
+ query
58
+ })
44
59
  }
45
60
 
46
- async remove(id: Id, params?: P): Promise<T>
47
- async remove(id: ObjectId, params?: P): Promise<T>
48
- async remove(id: null, params?: P): Promise<T[]>
49
- async remove(id: NullableId | ObjectId, params?: P): Promise<T | T[]> {
50
- return this._remove(id as NullableId, params)
61
+ async remove(id: AdapterId, params?: ServiceParams): Promise<Result>
62
+ async remove(id: null, params?: ServiceParams): Promise<Result[]>
63
+ async remove(id: NullableAdapterId, params?: ServiceParams): Promise<Result | Result[]> {
64
+ const { $limit, ...query } = await this.sanitizeQuery(params)
65
+
66
+ return this._remove(id, {
67
+ ...params,
68
+ query
69
+ })
51
70
  }
52
71
  }
package/src/resolvers.ts CHANGED
@@ -19,6 +19,10 @@ export async function resolveQueryObjectId(
19
19
  ): Promise<IdQueryObject<ObjectId>>
20
20
  export async function resolveQueryObjectId(value: ObjectIdParam): Promise<ObjectId>
21
21
  export async function resolveQueryObjectId(value: ObjectIdParam | IdQueryObject<ObjectIdParam>) {
22
+ if (!value) {
23
+ return undefined
24
+ }
25
+
22
26
  if (typeof value === 'string' || typeof value === 'number' || value instanceof ObjectId) {
23
27
  return toObjectId(value)
24
28
  }