kuzzle 2.27.1 → 2.27.3

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.
Files changed (71) hide show
  1. package/README.md +12 -6
  2. package/lib/api/controllers/adminController.js +9 -9
  3. package/lib/api/controllers/bulkController.js +9 -9
  4. package/lib/api/controllers/collectionController.js +17 -17
  5. package/lib/api/controllers/documentController.js +51 -51
  6. package/lib/api/controllers/indexController.js +4 -4
  7. package/lib/api/controllers/memoryStorageController.js +11 -11
  8. package/lib/api/controllers/realtimeController.js +1 -1
  9. package/lib/api/controllers/securityController.js +67 -70
  10. package/lib/api/controllers/serverController.js +5 -5
  11. package/lib/api/documentExtractor.js +3 -3
  12. package/lib/api/funnel.js +43 -43
  13. package/lib/api/rateLimiter.js +1 -1
  14. package/lib/cluster/command.js +4 -4
  15. package/lib/cluster/idCardHandler.js +1 -1
  16. package/lib/cluster/node.js +55 -55
  17. package/lib/cluster/subscriber.js +33 -33
  18. package/lib/cluster/workers/IDCardRenewer.js +4 -4
  19. package/lib/config/index.js +24 -24
  20. package/lib/core/auth/passportWrapper.js +6 -6
  21. package/lib/core/cache/cacheEngine.js +20 -20
  22. package/lib/core/network/accessLogger.js +15 -15
  23. package/lib/core/network/entryPoint.js +12 -12
  24. package/lib/core/network/httpRouter/index.js +4 -4
  25. package/lib/core/network/httpRouter/routePart.js +2 -2
  26. package/lib/core/network/protocols/httpwsProtocol.js +41 -41
  27. package/lib/core/network/protocols/internalProtocol.js +2 -2
  28. package/lib/core/network/protocols/mqttProtocol.js +9 -9
  29. package/lib/core/network/protocols/protocol.js +3 -3
  30. package/lib/core/network/router.js +7 -7
  31. package/lib/core/plugin/plugin.js +23 -23
  32. package/lib/core/plugin/pluginManifest.js +1 -1
  33. package/lib/core/plugin/pluginsManager.js +62 -62
  34. package/lib/core/realtime/notifier.js +14 -14
  35. package/lib/core/security/README.md +223 -0
  36. package/lib/core/security/roleRepository.js +18 -18
  37. package/lib/core/security/securityLoader.js +7 -7
  38. package/lib/core/security/userRepository.js +16 -16
  39. package/lib/core/shared/README.md +3 -0
  40. package/lib/core/shared/abstractManifest.js +1 -1
  41. package/lib/core/shared/sdk/impersonatedSdk.js +1 -1
  42. package/lib/core/shared/store.js +11 -11
  43. package/lib/core/statistics/statistics.js +15 -15
  44. package/lib/core/storage/clientAdapter.js +61 -61
  45. package/lib/core/validation/baseType.js +1 -1
  46. package/lib/core/validation/types/date.js +1 -1
  47. package/lib/core/validation/types/enum.js +5 -5
  48. package/lib/core/validation/types/geoShape.js +13 -13
  49. package/lib/core/validation/types/numeric.js +2 -2
  50. package/lib/core/validation/types/string.js +2 -2
  51. package/lib/core/validation/validation.js +71 -71
  52. package/lib/kerror/codes/index.js +23 -23
  53. package/lib/kuzzle/dumpGenerator.js +17 -17
  54. package/lib/kuzzle/event/kuzzleEventEmitter.js +9 -9
  55. package/lib/kuzzle/event/pipeRunner.js +2 -2
  56. package/lib/kuzzle/internalIndexHandler.js +8 -8
  57. package/lib/kuzzle/log.js +2 -2
  58. package/lib/kuzzle/vault.js +4 -4
  59. package/lib/model/security/role.js +3 -1
  60. package/lib/model/security/user.js +3 -1
  61. package/lib/model/storage/apiKey.js +3 -3
  62. package/lib/model/storage/baseModel.js +7 -7
  63. package/lib/service/cache/redis.js +3 -3
  64. package/lib/service/storage/elasticsearch.js +52 -52
  65. package/lib/service/storage/esWrapper.js +3 -3
  66. package/lib/service/storage/queryTranslator.js +2 -2
  67. package/lib/util/assertType.js +1 -1
  68. package/lib/util/deprecate.js +3 -3
  69. package/lib/util/extractFields.js +2 -2
  70. package/lib/util/wildcard.js +1 -1
  71. package/package.json +69 -81
@@ -93,7 +93,7 @@ class DocumentController extends NativeController {
93
93
  "api",
94
94
  "assert",
95
95
  "missing_argument",
96
- "index, collection or targets"
96
+ "index, collection or targets",
97
97
  );
98
98
  }
99
99
 
@@ -105,7 +105,7 @@ class DocumentController extends NativeController {
105
105
  throw kerror.get(
106
106
  "services",
107
107
  "storage",
108
- "invalid_multi_index_collection_usage"
108
+ "invalid_multi_index_collection_usage",
109
109
  );
110
110
  }
111
111
 
@@ -128,7 +128,7 @@ class DocumentController extends NativeController {
128
128
  "core:storage:public:document:multiSearch",
129
129
  targets,
130
130
  searchBody,
131
- { from, scroll: scrollTTL, size }
131
+ { from, scroll: scrollTTL, size },
132
132
  );
133
133
  } else {
134
134
  if (!index) {
@@ -144,7 +144,7 @@ class DocumentController extends NativeController {
144
144
  index,
145
145
  collection,
146
146
  searchBody,
147
- { from, scroll: scrollTTL, size }
147
+ { from, scroll: scrollTTL, size },
148
148
  );
149
149
  }
150
150
 
@@ -169,7 +169,7 @@ class DocumentController extends NativeController {
169
169
  const result = await this.ask(
170
170
  "core:storage:public:document:scroll",
171
171
  _scrollId,
172
- { scrollTTL }
172
+ { scrollTTL },
173
173
  );
174
174
 
175
175
  return {
@@ -192,7 +192,7 @@ class DocumentController extends NativeController {
192
192
  "core:storage:public:document:exist",
193
193
  index,
194
194
  collection,
195
- id
195
+ id,
196
196
  );
197
197
  }
198
198
 
@@ -219,7 +219,7 @@ class DocumentController extends NativeController {
219
219
  "core:storage:public:document:mExists",
220
220
  index,
221
221
  collection,
222
- ids
222
+ ids,
223
223
  );
224
224
 
225
225
  if (strict && errors.length) {
@@ -228,7 +228,7 @@ class DocumentController extends NativeController {
228
228
  "process",
229
229
  "incomplete_multiple_request",
230
230
  "get",
231
- errors
231
+ errors,
232
232
  );
233
233
  }
234
234
 
@@ -256,7 +256,7 @@ class DocumentController extends NativeController {
256
256
  "assert",
257
257
  "unsupported_protocol",
258
258
  request.context.connection.protocol,
259
- "document:export"
259
+ "document:export",
260
260
  );
261
261
  }
262
262
 
@@ -289,7 +289,7 @@ class DocumentController extends NativeController {
289
289
  scroll: scrollTTL || "5s",
290
290
  separator,
291
291
  size,
292
- }
292
+ },
293
293
  );
294
294
  }
295
295
 
@@ -305,7 +305,7 @@ class DocumentController extends NativeController {
305
305
  "core:storage:public:document:get",
306
306
  index,
307
307
  collection,
308
- id
308
+ id,
309
309
  );
310
310
 
311
311
  return {
@@ -341,7 +341,7 @@ class DocumentController extends NativeController {
341
341
  "core:storage:public:document:mGet",
342
342
  index,
343
343
  collection,
344
- ids
344
+ ids,
345
345
  );
346
346
 
347
347
  if (strict && errors.length) {
@@ -350,7 +350,7 @@ class DocumentController extends NativeController {
350
350
  "process",
351
351
  "incomplete_multiple_request",
352
352
  "get",
353
- errors
353
+ errors,
354
354
  );
355
355
  }
356
356
 
@@ -377,7 +377,7 @@ class DocumentController extends NativeController {
377
377
  "core:storage:public:document:count",
378
378
  index,
379
379
  collection,
380
- searchBody
380
+ searchBody,
381
381
  );
382
382
 
383
383
  return { count };
@@ -409,7 +409,7 @@ class DocumentController extends NativeController {
409
409
  updater: null,
410
410
  },
411
411
  request,
412
- }
412
+ },
413
413
  );
414
414
 
415
415
  const created = await this.ask(
@@ -425,7 +425,7 @@ class DocumentController extends NativeController {
425
425
  injectKuzzleMeta: false,
426
426
  refresh,
427
427
  userId,
428
- }
428
+ },
429
429
  );
430
430
 
431
431
  if (!silent) {
@@ -433,7 +433,7 @@ class DocumentController extends NativeController {
433
433
  "core:realtime:document:notify",
434
434
  validated,
435
435
  actionEnum.CREATE,
436
- created
436
+ created,
437
437
  );
438
438
  }
439
439
 
@@ -467,7 +467,7 @@ class DocumentController extends NativeController {
467
467
 
468
468
  const modifiedRequest = await global.kuzzle.validation.validate(
469
469
  request,
470
- false
470
+ false,
471
471
  );
472
472
 
473
473
  // Add metadata
@@ -481,7 +481,7 @@ class DocumentController extends NativeController {
481
481
  updater: userId,
482
482
  },
483
483
  request,
484
- }
484
+ },
485
485
  );
486
486
 
487
487
  const response = await this.ask(
@@ -497,7 +497,7 @@ class DocumentController extends NativeController {
497
497
  injectKuzzleMeta: false,
498
498
  refresh,
499
499
  userId,
500
- }
500
+ },
501
501
  );
502
502
 
503
503
  if (!silent) {
@@ -505,7 +505,7 @@ class DocumentController extends NativeController {
505
505
  "core:realtime:document:notify",
506
506
  modifiedRequest,
507
507
  actionEnum.WRITE,
508
- response
508
+ response,
509
509
  );
510
510
  }
511
511
 
@@ -541,7 +541,7 @@ class DocumentController extends NativeController {
541
541
 
542
542
  const modifiedRequest = await global.kuzzle.validation.validate(
543
543
  request,
544
- false
544
+ false,
545
545
  );
546
546
 
547
547
  // Add metadata
@@ -553,7 +553,7 @@ class DocumentController extends NativeController {
553
553
  updater: userId,
554
554
  },
555
555
  request,
556
- }
556
+ },
557
557
  );
558
558
 
559
559
  const updatedDocument = await this.ask(
@@ -570,7 +570,7 @@ class DocumentController extends NativeController {
570
570
  refresh,
571
571
  retryOnConflict,
572
572
  userId,
573
- }
573
+ },
574
574
  );
575
575
 
576
576
  const _updatedFields = extractFields(content, {
@@ -586,7 +586,7 @@ class DocumentController extends NativeController {
586
586
  _id: updatedDocument._id,
587
587
  _source: updatedDocument._source,
588
588
  _updatedFields,
589
- }
589
+ },
590
590
  );
591
591
  }
592
592
 
@@ -632,7 +632,7 @@ class DocumentController extends NativeController {
632
632
  updater: userId,
633
633
  },
634
634
  request,
635
- }
635
+ },
636
636
  );
637
637
 
638
638
  const updatedDocument = await this.ask(
@@ -653,7 +653,7 @@ class DocumentController extends NativeController {
653
653
  refresh,
654
654
  retryOnConflict,
655
655
  userId,
656
- }
656
+ },
657
657
  );
658
658
 
659
659
  if (!silent && updatedDocument.created) {
@@ -661,7 +661,7 @@ class DocumentController extends NativeController {
661
661
  "core:realtime:document:notify",
662
662
  request,
663
663
  actionEnum.CREATE,
664
- updatedDocument._source
664
+ updatedDocument._source,
665
665
  );
666
666
  } else if (!silent) {
667
667
  const _updatedFields = extractFields(content, {
@@ -676,7 +676,7 @@ class DocumentController extends NativeController {
676
676
  _id: updatedDocument._id,
677
677
  _source: updatedDocument._source,
678
678
  _updatedFields,
679
- }
679
+ },
680
680
  );
681
681
  }
682
682
 
@@ -729,7 +729,7 @@ class DocumentController extends NativeController {
729
729
 
730
730
  const modifiedRequest = await global.kuzzle.validation.validate(
731
731
  request,
732
- false
732
+ false,
733
733
  );
734
734
 
735
735
  // Add metadata
@@ -743,7 +743,7 @@ class DocumentController extends NativeController {
743
743
  updater: userId,
744
744
  },
745
745
  request,
746
- }
746
+ },
747
747
  );
748
748
 
749
749
  const response = await this.ask(
@@ -759,7 +759,7 @@ class DocumentController extends NativeController {
759
759
  injectKuzzleMeta: false,
760
760
  refresh,
761
761
  userId,
762
- }
762
+ },
763
763
  );
764
764
 
765
765
  if (!silent) {
@@ -770,7 +770,7 @@ class DocumentController extends NativeController {
770
770
  {
771
771
  _id: modifiedRequest.input.args._id,
772
772
  _source: modifiedRequest.input.body,
773
- }
773
+ },
774
774
  );
775
775
  }
776
776
 
@@ -805,7 +805,7 @@ class DocumentController extends NativeController {
805
805
  "core:storage:public:document:get",
806
806
  index,
807
807
  collection,
808
- id
808
+ id,
809
809
  );
810
810
 
811
811
  await this.ask(
@@ -815,7 +815,7 @@ class DocumentController extends NativeController {
815
815
  id,
816
816
  {
817
817
  refresh,
818
- }
818
+ },
819
819
  );
820
820
 
821
821
  if (!silent) {
@@ -823,7 +823,7 @@ class DocumentController extends NativeController {
823
823
  "core:realtime:document:notify",
824
824
  request,
825
825
  actionEnum.DELETE,
826
- document
826
+ document,
827
827
  );
828
828
  }
829
829
 
@@ -849,7 +849,7 @@ class DocumentController extends NativeController {
849
849
  index,
850
850
  collection,
851
851
  ids,
852
- { refresh }
852
+ { refresh },
853
853
  );
854
854
 
855
855
  if (strict && errors.length) {
@@ -858,7 +858,7 @@ class DocumentController extends NativeController {
858
858
  "process",
859
859
  "incomplete_multiple_request",
860
860
  "delete",
861
- errors
861
+ errors,
862
862
  );
863
863
  }
864
864
 
@@ -869,7 +869,7 @@ class DocumentController extends NativeController {
869
869
  "core:realtime:document:mNotify",
870
870
  request,
871
871
  actionEnum.DELETE,
872
- documents
872
+ documents,
873
873
  );
874
874
  }
875
875
 
@@ -902,7 +902,7 @@ class DocumentController extends NativeController {
902
902
  index,
903
903
  collection,
904
904
  query,
905
- { refresh }
905
+ { refresh },
906
906
  );
907
907
 
908
908
  if (!silent) {
@@ -910,7 +910,7 @@ class DocumentController extends NativeController {
910
910
  "core:realtime:document:mNotify",
911
911
  request,
912
912
  actionEnum.DELETE,
913
- result.documents
913
+ result.documents,
914
914
  );
915
915
  }
916
916
 
@@ -944,7 +944,7 @@ class DocumentController extends NativeController {
944
944
  collection,
945
945
  id,
946
946
  fields,
947
- { refresh, userId }
947
+ { refresh, userId },
948
948
  );
949
949
 
950
950
  if (!silent) {
@@ -955,7 +955,7 @@ class DocumentController extends NativeController {
955
955
  {
956
956
  _id: response._id,
957
957
  _source: response._source,
958
- }
958
+ },
959
959
  );
960
960
  }
961
961
 
@@ -995,7 +995,7 @@ class DocumentController extends NativeController {
995
995
  collection,
996
996
  query,
997
997
  changes,
998
- { refresh, userId }
998
+ { refresh, userId },
999
999
  );
1000
1000
 
1001
1001
  if (!silent) {
@@ -1009,7 +1009,7 @@ class DocumentController extends NativeController {
1009
1009
  _updatedFields: extractFields(changes, {
1010
1010
  fieldsToIgnore: ["_kuzzle_info"],
1011
1011
  }),
1012
- }))
1012
+ })),
1013
1013
  );
1014
1014
  }
1015
1015
 
@@ -1079,7 +1079,7 @@ class DocumentController extends NativeController {
1079
1079
  "assert",
1080
1080
  "unexpected_argument",
1081
1081
  `documents[${i}]._source`,
1082
- `documents[${i}].body`
1082
+ `documents[${i}].body`,
1083
1083
  );
1084
1084
  }
1085
1085
  }
@@ -1089,7 +1089,7 @@ class DocumentController extends NativeController {
1089
1089
  index,
1090
1090
  collection,
1091
1091
  documents,
1092
- { refresh, retryOnConflict, source, userId }
1092
+ { refresh, retryOnConflict, source, userId },
1093
1093
  );
1094
1094
 
1095
1095
  if (strict && response.errors.length) {
@@ -1098,7 +1098,7 @@ class DocumentController extends NativeController {
1098
1098
  "process",
1099
1099
  "incomplete_multiple_request",
1100
1100
  methodName,
1101
- response.errors
1101
+ response.errors,
1102
1102
  );
1103
1103
  }
1104
1104
 
@@ -1122,18 +1122,18 @@ class DocumentController extends NativeController {
1122
1122
  if (!item.created) {
1123
1123
  item._updatedFields = extractFields(
1124
1124
  documentsDictionnary[item._id],
1125
- { fieldsToIgnore: ["_kuzzle_info"] }
1125
+ { fieldsToIgnore: ["_kuzzle_info"] },
1126
1126
  );
1127
1127
  }
1128
1128
  return item;
1129
- })
1129
+ }),
1130
1130
  );
1131
1131
  } else if (!silent) {
1132
1132
  await this.ask(
1133
1133
  "core:realtime:document:mNotify",
1134
1134
  request,
1135
1135
  action,
1136
- response.items
1136
+ response.items,
1137
1137
  );
1138
1138
  }
1139
1139
 
@@ -53,7 +53,7 @@ class IndexController extends NativeController {
53
53
 
54
54
  const deleted = await this.ask(
55
55
  "core:storage:public:index:mDelete",
56
- allowed
56
+ allowed,
57
57
  );
58
58
 
59
59
  return { deleted };
@@ -109,8 +109,8 @@ class IndexController extends NativeController {
109
109
  this.ask("core:storage:public:collection:list", index).then(
110
110
  (collections) => {
111
111
  response.collections[index] = collections.length;
112
- }
113
- )
112
+ },
113
+ ),
114
114
  );
115
115
  }
116
116
 
@@ -160,7 +160,7 @@ class IndexController extends NativeController {
160
160
  const promises = publicIndexes.map((index) => {
161
161
  const deleteIndexRequest = new Request(
162
162
  { action: "delete", controller: "index", index },
163
- request.context
163
+ request.context,
164
164
  );
165
165
 
166
166
  return request.context.user
@@ -46,7 +46,7 @@ class MemoryStorageController extends NativeController {
46
46
  return async (request) =>
47
47
  global.kuzzle.ask(
48
48
  "core:cache:public:mExecute",
49
- extractArgumentsFromRequest(command, request)
49
+ extractArgumentsFromRequest(command, request),
50
50
  );
51
51
  }
52
52
 
@@ -57,7 +57,7 @@ class MemoryStorageController extends NativeController {
57
57
  global.kuzzle.ask(
58
58
  "core:cache:public:execute",
59
59
  command,
60
- extractArgumentsFromRequest(command, request)
60
+ extractArgumentsFromRequest(command, request),
61
61
  );
62
62
  }
63
63
 
@@ -65,7 +65,7 @@ class MemoryStorageController extends NativeController {
65
65
  global.kuzzle.ask(
66
66
  "core:cache:public:execute",
67
67
  command,
68
- ...extractArgumentsFromRequest(command, request)
68
+ ...extractArgumentsFromRequest(command, request),
69
69
  );
70
70
  };
71
71
 
@@ -172,7 +172,7 @@ function initMapping() {
172
172
  throw kerror.get(
173
173
  "invalid_argument",
174
174
  "points",
175
- "<array of geopoints>"
175
+ "<array of geopoints>",
176
176
  );
177
177
  }
178
178
 
@@ -271,7 +271,7 @@ function initMapping() {
271
271
  throw kerror.get(
272
272
  "invalid_argument",
273
273
  "entries",
274
- "<array of object>"
274
+ "<array of object>",
275
275
  );
276
276
  }
277
277
 
@@ -352,7 +352,7 @@ function initMapping() {
352
352
  throw kerror.get(
353
353
  "invalid_argument",
354
354
  "entries",
355
- "<array of objects>"
355
+ "<array of objects>",
356
356
  );
357
357
  }
358
358
 
@@ -671,7 +671,7 @@ function extractArgumentsFromRequest(command, request) {
671
671
  }
672
672
  return undefined;
673
673
  },
674
- request.input
674
+ request.input,
675
675
  );
676
676
 
677
677
  if (value === undefined) {
@@ -709,7 +709,7 @@ function extractArgumentsFromRequestForSet(request) {
709
709
 
710
710
  if (
711
711
  ["undefined", "boolean", "object"].indexOf(
712
- typeof request.input.body.value
712
+ typeof request.input.body.value,
713
713
  ) !== -1
714
714
  ) {
715
715
  throw kerror.get("invalid_type", "value", "string, number");
@@ -780,7 +780,7 @@ function extractArgumentsFromRequestForSort(request) {
780
780
  args.push(
781
781
  "LIMIT",
782
782
  request.input.body.limit[0],
783
- request.input.body.limit[1]
783
+ request.input.body.limit[1],
784
784
  );
785
785
  }
786
786
 
@@ -831,7 +831,7 @@ function extractArgumentsFromRequestForMExecute(request) {
831
831
  const subRequest = new Request(command.args);
832
832
  const extractedArguments = extractArgumentsFromRequest(
833
833
  command.action,
834
- subRequest
834
+ subRequest,
835
835
  );
836
836
 
837
837
  return [command.action, ...extractedArguments];
@@ -933,7 +933,7 @@ function extractArgumentsFromRequestForZInterstore(request) {
933
933
  throw kerror.get(
934
934
  "invalid_argument",
935
935
  "aggregate",
936
- '"SUM", "MIN" or "MAX"'
936
+ '"SUM", "MIN" or "MAX"',
937
937
  );
938
938
  }
939
939
 
@@ -92,7 +92,7 @@ class RealtimeController extends NativeController {
92
92
  await global.kuzzle.ask(
93
93
  "core:realtime:unsubscribe",
94
94
  request.context.connection.id,
95
- roomId
95
+ roomId,
96
96
  );
97
97
 
98
98
  return { roomId };