kuzzle 2.19.2 → 2.19.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 (289) hide show
  1. package/lib/api/controllers/adminController.js +94 -80
  2. package/lib/api/controllers/authController.js +239 -212
  3. package/lib/api/controllers/baseController.js +89 -51
  4. package/lib/api/controllers/bulkController.js +62 -49
  5. package/lib/api/controllers/clusterController.js +6 -8
  6. package/lib/api/controllers/collectionController.js +140 -129
  7. package/lib/api/controllers/debugController.d.ts +2 -2
  8. package/lib/api/controllers/debugController.js +33 -31
  9. package/lib/api/controllers/documentController.js +365 -274
  10. package/lib/api/controllers/index.js +13 -13
  11. package/lib/api/controllers/indexController.js +46 -50
  12. package/lib/api/controllers/memoryStorageController.js +410 -360
  13. package/lib/api/controllers/realtimeController.js +37 -36
  14. package/lib/api/controllers/securityController.js +553 -412
  15. package/lib/api/controllers/serverController.js +111 -104
  16. package/lib/api/documentExtractor.js +75 -68
  17. package/lib/api/funnel.js +411 -312
  18. package/lib/api/httpRoutes.js +1493 -324
  19. package/lib/api/openapi/OpenApiManager.d.ts +1 -1
  20. package/lib/api/openapi/OpenApiManager.js +22 -22
  21. package/lib/api/openapi/components/document/count.yaml +1 -1
  22. package/lib/api/openapi/components/document/create.yaml +2 -2
  23. package/lib/api/openapi/components/document/delete.yaml +1 -1
  24. package/lib/api/openapi/components/document/deleteByQuery.yaml +1 -1
  25. package/lib/api/openapi/components/document/exists.yaml +1 -1
  26. package/lib/api/openapi/components/document/get.yaml +2 -2
  27. package/lib/api/openapi/components/document/index.js +12 -12
  28. package/lib/api/openapi/components/document/replace.yaml +1 -1
  29. package/lib/api/openapi/components/document/scroll.yaml +1 -1
  30. package/lib/api/openapi/components/document/validate.yaml +1 -1
  31. package/lib/api/openapi/components/index.d.ts +2 -2
  32. package/lib/api/openapi/components/index.js +1 -1
  33. package/lib/api/openapi/components/security/index.js +1 -1
  34. package/lib/api/openapi/components/security/upsertUser.yaml +2 -3
  35. package/lib/api/openapi/index.d.ts +1 -1
  36. package/lib/api/openapi/openApiGenerator.d.ts +1 -1
  37. package/lib/api/openapi/openApiGenerator.js +7 -7
  38. package/lib/api/rateLimiter.js +12 -13
  39. package/lib/api/request/index.d.ts +4 -4
  40. package/lib/api/request/kuzzleRequest.d.ts +9 -9
  41. package/lib/api/request/kuzzleRequest.js +89 -87
  42. package/lib/api/request/requestContext.d.ts +2 -2
  43. package/lib/api/request/requestContext.js +17 -17
  44. package/lib/api/request/requestInput.d.ts +1 -1
  45. package/lib/api/request/requestInput.js +19 -19
  46. package/lib/api/request/requestResponse.d.ts +4 -4
  47. package/lib/api/request/requestResponse.js +31 -33
  48. package/lib/cluster/command.js +48 -44
  49. package/lib/cluster/idCardHandler.d.ts +1 -1
  50. package/lib/cluster/idCardHandler.js +15 -15
  51. package/lib/cluster/index.js +2 -2
  52. package/lib/cluster/node.js +301 -269
  53. package/lib/cluster/publisher.js +45 -46
  54. package/lib/cluster/state.d.ts +5 -5
  55. package/lib/cluster/state.js +8 -8
  56. package/lib/cluster/subscriber.js +163 -113
  57. package/lib/cluster/workers/IDCardRenewer.js +33 -32
  58. package/lib/config/default.config.d.ts +1 -1
  59. package/lib/config/default.config.js +212 -171
  60. package/lib/config/documentEventAliases.js +6 -6
  61. package/lib/config/index.js +161 -98
  62. package/lib/config/sdkCompatibility.json +8 -8
  63. package/lib/core/auth/formatProcessing.js +7 -7
  64. package/lib/core/auth/passportResponse.js +7 -7
  65. package/lib/core/auth/passportWrapper.js +34 -30
  66. package/lib/core/auth/tokenManager.d.ts +2 -2
  67. package/lib/core/auth/tokenManager.js +11 -10
  68. package/lib/core/backend/applicationManager.d.ts +1 -1
  69. package/lib/core/backend/applicationManager.js +2 -2
  70. package/lib/core/backend/backend.d.ts +3 -3
  71. package/lib/core/backend/backend.js +34 -31
  72. package/lib/core/backend/backendCluster.d.ts +2 -2
  73. package/lib/core/backend/backendCluster.js +5 -5
  74. package/lib/core/backend/backendConfig.d.ts +2 -2
  75. package/lib/core/backend/backendConfig.js +3 -3
  76. package/lib/core/backend/backendController.d.ts +2 -2
  77. package/lib/core/backend/backendController.js +9 -10
  78. package/lib/core/backend/backendErrors.d.ts +3 -3
  79. package/lib/core/backend/backendErrors.js +2 -1
  80. package/lib/core/backend/backendHook.d.ts +2 -2
  81. package/lib/core/backend/backendHook.js +5 -5
  82. package/lib/core/backend/backendImport.d.ts +3 -3
  83. package/lib/core/backend/backendImport.js +23 -23
  84. package/lib/core/backend/backendOpenApi.d.ts +2 -2
  85. package/lib/core/backend/backendOpenApi.js +16 -16
  86. package/lib/core/backend/backendPipe.d.ts +2 -2
  87. package/lib/core/backend/backendPipe.js +6 -6
  88. package/lib/core/backend/backendPlugin.d.ts +4 -4
  89. package/lib/core/backend/backendPlugin.js +14 -14
  90. package/lib/core/backend/backendStorage.d.ts +2 -2
  91. package/lib/core/backend/backendStorage.js +1 -2
  92. package/lib/core/backend/backendVault.d.ts +2 -2
  93. package/lib/core/backend/backendVault.js +3 -3
  94. package/lib/core/backend/index.d.ts +14 -14
  95. package/lib/core/backend/internalLogger.d.ts +1 -1
  96. package/lib/core/backend/internalLogger.js +5 -5
  97. package/lib/core/cache/cacheDbEnum.js +4 -4
  98. package/lib/core/cache/cacheEngine.js +79 -85
  99. package/lib/core/network/accessLogger.js +126 -120
  100. package/lib/core/network/clientConnection.js +5 -5
  101. package/lib/core/network/context.js +8 -8
  102. package/lib/core/network/entryPoint.js +100 -85
  103. package/lib/core/network/httpRouter/index.js +63 -60
  104. package/lib/core/network/httpRouter/routeHandler.js +18 -19
  105. package/lib/core/network/httpRouter/routePart.js +23 -19
  106. package/lib/core/network/protocolManifest.js +3 -3
  107. package/lib/core/network/protocols/httpMessage.js +8 -10
  108. package/lib/core/network/protocols/httpwsProtocol.js +305 -250
  109. package/lib/core/network/protocols/internalProtocol.js +27 -24
  110. package/lib/core/network/protocols/mqttProtocol.js +106 -96
  111. package/lib/core/network/protocols/protocol.js +20 -17
  112. package/lib/core/network/router.js +56 -46
  113. package/lib/core/plugin/plugin.js +151 -120
  114. package/lib/core/plugin/pluginContext.d.ts +7 -7
  115. package/lib/core/plugin/pluginContext.js +48 -44
  116. package/lib/core/plugin/pluginManifest.js +13 -12
  117. package/lib/core/plugin/pluginRepository.js +26 -27
  118. package/lib/core/plugin/pluginsManager.js +425 -304
  119. package/lib/core/plugin/privilegedContext.js +3 -3
  120. package/lib/core/realtime/actionEnum.js +1 -1
  121. package/lib/core/realtime/channel.d.ts +1 -1
  122. package/lib/core/realtime/channel.js +22 -22
  123. package/lib/core/realtime/connectionRooms.d.ts +1 -1
  124. package/lib/core/realtime/hotelClerk.d.ts +2 -2
  125. package/lib/core/realtime/hotelClerk.js +53 -50
  126. package/lib/core/realtime/index.js +5 -5
  127. package/lib/core/realtime/notification/document.js +25 -25
  128. package/lib/core/realtime/notification/index.js +4 -4
  129. package/lib/core/realtime/notification/server.js +3 -3
  130. package/lib/core/realtime/notification/user.js +4 -4
  131. package/lib/core/realtime/notifier.js +113 -75
  132. package/lib/core/realtime/room.d.ts +1 -1
  133. package/lib/core/realtime/subscription.d.ts +1 -1
  134. package/lib/core/realtime/subscription.js +1 -1
  135. package/lib/core/security/index.js +8 -8
  136. package/lib/core/security/profileRepository.d.ts +6 -6
  137. package/lib/core/security/profileRepository.js +48 -45
  138. package/lib/core/security/roleRepository.js +127 -115
  139. package/lib/core/security/securityLoader.js +70 -63
  140. package/lib/core/security/tokenRepository.js +132 -118
  141. package/lib/core/security/userRepository.js +104 -88
  142. package/lib/core/shared/KoncordeWrapper.d.ts +1 -1
  143. package/lib/core/shared/KoncordeWrapper.js +3 -1
  144. package/lib/core/shared/abstractManifest.js +22 -23
  145. package/lib/core/shared/repository.js +69 -67
  146. package/lib/core/shared/sdk/embeddedSdk.d.ts +2 -2
  147. package/lib/core/shared/sdk/embeddedSdk.js +36 -32
  148. package/lib/core/shared/sdk/funnelProtocol.d.ts +1 -1
  149. package/lib/core/shared/sdk/funnelProtocol.js +11 -11
  150. package/lib/core/shared/sdk/impersonatedSdk.js +19 -18
  151. package/lib/core/shared/store.js +127 -32
  152. package/lib/core/statistics/index.js +2 -2
  153. package/lib/core/statistics/statistics.js +99 -85
  154. package/lib/core/storage/clientAdapter.js +219 -136
  155. package/lib/core/storage/indexCache.js +3 -3
  156. package/lib/core/storage/storageEngine.js +10 -13
  157. package/lib/core/storage/storeScopeEnum.js +3 -3
  158. package/lib/core/validation/baseType.js +12 -10
  159. package/lib/core/validation/index.js +2 -2
  160. package/lib/core/validation/types/anything.js +4 -4
  161. package/lib/core/validation/types/boolean.js +7 -7
  162. package/lib/core/validation/types/date.js +165 -131
  163. package/lib/core/validation/types/email.js +18 -21
  164. package/lib/core/validation/types/enum.js +34 -21
  165. package/lib/core/validation/types/geoPoint.js +7 -7
  166. package/lib/core/validation/types/geoShape.js +148 -125
  167. package/lib/core/validation/types/integer.js +9 -9
  168. package/lib/core/validation/types/ipAddress.js +17 -19
  169. package/lib/core/validation/types/numeric.js +36 -29
  170. package/lib/core/validation/types/object.js +19 -19
  171. package/lib/core/validation/types/string.js +36 -29
  172. package/lib/core/validation/types/url.js +17 -19
  173. package/lib/core/validation/validation.js +422 -378
  174. package/lib/kerror/codes/1-services.json +7 -1
  175. package/lib/kerror/codes/4-plugin.json +2 -2
  176. package/lib/kerror/codes/index.js +85 -63
  177. package/lib/kerror/errors/badRequestError.d.ts +1 -1
  178. package/lib/kerror/errors/externalServiceError.d.ts +1 -1
  179. package/lib/kerror/errors/forbiddenError.d.ts +1 -1
  180. package/lib/kerror/errors/gatewayTimeoutError.d.ts +1 -1
  181. package/lib/kerror/errors/index.d.ts +15 -15
  182. package/lib/kerror/errors/internalError.d.ts +1 -1
  183. package/lib/kerror/errors/kuzzleError.d.ts +1 -1
  184. package/lib/kerror/errors/multipleErrorsError.d.ts +1 -1
  185. package/lib/kerror/errors/multipleErrorsError.js +1 -1
  186. package/lib/kerror/errors/notFoundError.d.ts +1 -1
  187. package/lib/kerror/errors/partialError.d.ts +1 -1
  188. package/lib/kerror/errors/partialError.js +1 -1
  189. package/lib/kerror/errors/pluginImplementationError.d.ts +1 -1
  190. package/lib/kerror/errors/pluginImplementationError.js +2 -1
  191. package/lib/kerror/errors/preconditionError.d.ts +1 -1
  192. package/lib/kerror/errors/serviceUnavailableError.d.ts +1 -1
  193. package/lib/kerror/errors/sizeLimitError.d.ts +1 -1
  194. package/lib/kerror/errors/tooManyRequestsError.d.ts +1 -1
  195. package/lib/kerror/errors/unauthorizedError.d.ts +1 -1
  196. package/lib/kerror/index.d.ts +3 -3
  197. package/lib/kerror/index.js +17 -16
  198. package/lib/kuzzle/dumpGenerator.js +130 -114
  199. package/lib/kuzzle/event/kuzzleEventEmitter.js +96 -70
  200. package/lib/kuzzle/event/pipeRunner.js +25 -24
  201. package/lib/kuzzle/event/waterfall.js +13 -15
  202. package/lib/kuzzle/index.js +2 -2
  203. package/lib/kuzzle/internalIndexHandler.js +80 -59
  204. package/lib/kuzzle/kuzzle.js +99 -99
  205. package/lib/kuzzle/kuzzleStateEnum.js +1 -1
  206. package/lib/kuzzle/log.js +23 -18
  207. package/lib/kuzzle/vault.js +34 -19
  208. package/lib/model/security/profile.d.ts +3 -3
  209. package/lib/model/security/profile.js +38 -37
  210. package/lib/model/security/rights.js +5 -5
  211. package/lib/model/security/role.d.ts +3 -3
  212. package/lib/model/security/role.js +25 -26
  213. package/lib/model/security/token.d.ts +1 -1
  214. package/lib/model/security/token.js +4 -4
  215. package/lib/model/security/user.d.ts +2 -2
  216. package/lib/model/security/user.js +9 -9
  217. package/lib/model/storage/apiKey.js +43 -33
  218. package/lib/model/storage/baseModel.js +49 -45
  219. package/lib/service/cache/redis.js +60 -55
  220. package/lib/service/service.js +17 -17
  221. package/lib/service/storage/elasticsearch.js +839 -755
  222. package/lib/service/storage/esWrapper.js +103 -86
  223. package/lib/service/storage/queryTranslator.js +52 -59
  224. package/lib/types/Controller.d.ts +3 -3
  225. package/lib/types/ControllerDefinition.d.ts +3 -3
  226. package/lib/types/DebugModule.d.ts +2 -2
  227. package/lib/types/DebugModule.js +1 -1
  228. package/lib/types/Global.d.ts +1 -1
  229. package/lib/types/HttpStream.d.ts +2 -1
  230. package/lib/types/HttpStream.js +7 -5
  231. package/lib/types/Kuzzle.d.ts +1 -1
  232. package/lib/types/KuzzleDocument.d.ts +1 -1
  233. package/lib/types/OpenApiDefinition.d.ts +1 -1
  234. package/lib/types/PasswordPolicy.d.ts +1 -1
  235. package/lib/types/Plugin.d.ts +6 -6
  236. package/lib/types/Plugin.js +2 -2
  237. package/lib/types/Policy.d.ts +1 -1
  238. package/lib/types/RequestPayload.d.ts +1 -1
  239. package/lib/types/ResponsePayload.d.ts +1 -1
  240. package/lib/types/Token.d.ts +1 -1
  241. package/lib/types/User.d.ts +1 -1
  242. package/lib/types/config/DumpConfiguration.d.ts +8 -8
  243. package/lib/types/config/HttpConfiguration.d.ts +1 -1
  244. package/lib/types/config/KuzzleConfiguration.d.ts +1 -1
  245. package/lib/types/config/LimitsConfiguration.d.ts +8 -8
  246. package/lib/types/config/PluginsConfiguration.d.ts +4 -4
  247. package/lib/types/config/SecurityConfiguration.d.ts +62 -62
  248. package/lib/types/config/ServerConfiguration.d.ts +55 -55
  249. package/lib/types/config/ServicesConfiguration.d.ts +2 -2
  250. package/lib/types/config/internalCache/InternalCacheRedisConfiguration.d.ts +10 -10
  251. package/lib/types/config/publicCache/PublicCacheRedisConfiguration.d.ts +3 -3
  252. package/lib/types/config/storageEngine/StorageEngineElasticsearchConfiguration.d.ts +194 -110
  253. package/lib/types/errors/ErrorDefinition.d.ts +1 -1
  254. package/lib/types/errors/ErrorDomains.d.ts +1 -1
  255. package/lib/types/index.d.ts +38 -38
  256. package/lib/types/realtime/RealtimeScope.d.ts +1 -1
  257. package/lib/types/realtime/RealtimeUsers.d.ts +1 -1
  258. package/lib/util/assertType.js +13 -11
  259. package/lib/util/async.d.ts +1 -0
  260. package/lib/util/async.js +61 -0
  261. package/lib/util/asyncStore.js +19 -21
  262. package/lib/util/bufferedPassThrough.d.ts +2 -2
  263. package/lib/util/bufferedPassThrough.js +4 -4
  264. package/lib/util/bytes.js +9 -13
  265. package/lib/util/crypto.js +1 -1
  266. package/lib/util/debug.js +5 -5
  267. package/lib/util/deprecate.js +24 -21
  268. package/lib/util/didYouMean.js +7 -7
  269. package/lib/util/dump-collection.d.ts +2 -2
  270. package/lib/util/dump-collection.js +26 -26
  271. package/lib/util/esRequest.d.ts +1 -0
  272. package/lib/util/esRequest.js +62 -0
  273. package/lib/util/extractFields.js +24 -25
  274. package/lib/util/inflector.js +5 -5
  275. package/lib/util/koncordeCompat.d.ts +2 -2
  276. package/lib/util/koncordeCompat.js +5 -5
  277. package/lib/util/memoize.js +3 -5
  278. package/lib/util/mutex.d.ts +19 -1
  279. package/lib/util/mutex.js +39 -12
  280. package/lib/util/name-generator.js +1331 -1331
  281. package/lib/util/promback.js +8 -10
  282. package/lib/util/readYamlFile.d.ts +1 -1
  283. package/lib/util/readYamlFile.js +1 -1
  284. package/lib/util/requestAssertions.js +34 -34
  285. package/lib/util/safeObject.js +5 -5
  286. package/lib/util/stackTrace.js +20 -22
  287. package/lib/util/wildcard.js +15 -15
  288. package/package.json +6 -6
  289. package/npm-shrinkwrap.json +0 -19422
@@ -19,22 +19,22 @@
19
19
  * limitations under the License.
20
20
  */
21
21
 
22
- 'use strict';
22
+ "use strict";
23
23
 
24
- const kerror = require('../kerror');
24
+ const kerror = require("../kerror");
25
25
 
26
- const assertionError = kerror.wrap('api', 'assert');
26
+ const assertionError = kerror.wrap("api", "assert");
27
27
 
28
- const extractors = ([
28
+ const extractors = [
29
29
  {
30
30
  methods: {
31
- extractFromRequest: request => [
31
+ extractFromRequest: (request) => [
32
32
  {
33
33
  _id: request.input.args._id,
34
34
  _source: request.input.body.fields,
35
35
  },
36
36
  ],
37
- extractFromResult: request => [request.result],
37
+ extractFromResult: (request) => [request.result],
38
38
  insertInRequest: ([documents], request) => {
39
39
  request.input.args._id = documents._id;
40
40
  request.input.body.fields = documents._source;
@@ -45,12 +45,12 @@ const extractors = ([
45
45
  return request;
46
46
  },
47
47
  },
48
- targets: [ 'deleteFields' ]
48
+ targets: ["deleteFields"],
49
49
  },
50
50
  {
51
51
  methods: {
52
- extractFromRequest: request => [{ _id: request.input.args._id }],
53
- extractFromResult: request => [request.result],
52
+ extractFromRequest: (request) => [{ _id: request.input.args._id }],
53
+ extractFromResult: (request) => [request.result],
54
54
  insertInRequest: (documents, request) => {
55
55
  request.input.args._id = documents[0] && documents[0]._id;
56
56
  return request;
@@ -58,39 +58,38 @@ const extractors = ([
58
58
  insertInResult: (documents, request) => {
59
59
  request.setResult(documents[0], { status: request.status });
60
60
  return request;
61
- }
61
+ },
62
62
  },
63
- targets: [ 'delete', 'get', 'exists' ]
63
+ targets: ["delete", "get", "exists"],
64
64
  },
65
65
  {
66
66
  methods: {
67
- extractFromRequest: request => {
67
+ extractFromRequest: (request) => {
68
68
  let ids = [];
69
- if ( request.input.body
70
- && request.input.body.ids
71
- && Object.keys(request.input.body.ids).length
69
+ if (
70
+ request.input.body &&
71
+ request.input.body.ids &&
72
+ Object.keys(request.input.body.ids).length
72
73
  ) {
73
74
  ids = request.input.body.ids;
74
- }
75
- else if (request.input.args.ids) {
75
+ } else if (request.input.args.ids) {
76
76
  if (Array.isArray(request.input.args.ids)) {
77
77
  ids = request.input.args.ids;
78
- }
79
- else if (typeof request.input.args.ids === 'string') {
78
+ } else if (typeof request.input.args.ids === "string") {
80
79
  // @deprecated Should be replaced with request.getArray('ids')
81
- ids = request.getArrayLegacy('ids');
82
- }
83
- else {
80
+ ids = request.getArrayLegacy("ids");
81
+ } else {
84
82
  throw assertionError.get(
85
- 'invalid_type',
83
+ "invalid_type",
86
84
  request.input.args.ids,
87
- 'Array or String');
85
+ "Array or String"
86
+ );
88
87
  }
89
88
  }
90
- return ids.map(_id => ({ _id }));
89
+ return ids.map((_id) => ({ _id }));
91
90
  },
92
- extractFromResult: request => {
93
- if (request.input.action === 'mGet') {
91
+ extractFromResult: (request) => {
92
+ if (request.input.action === "mGet") {
94
93
  return request.result.successes;
95
94
  }
96
95
 
@@ -104,30 +103,30 @@ const extractors = ([
104
103
  },
105
104
  insertInRequest: (documents, request) => {
106
105
  if (request.input.body && Object.keys(request.input.body).length) {
107
- request.input.body.ids = documents.map(document => document._id);
108
- }
109
- else {
110
- request.input.args.ids = documents.map(document => document._id);
106
+ request.input.body.ids = documents.map((document) => document._id);
107
+ } else {
108
+ request.input.args.ids = documents.map((document) => document._id);
111
109
  }
112
110
  return request;
113
111
  },
114
112
  insertInResult: (documents, request) => {
115
- if (request.input.action === 'mGet') {
113
+ if (request.input.action === "mGet") {
116
114
  request.setResult(
117
115
  {
118
116
  errors: request.result.errors,
119
- successes: documents
117
+ successes: documents,
120
118
  },
121
119
  {
122
- status: request.status
123
- });
120
+ status: request.status,
121
+ }
122
+ );
124
123
 
125
124
  return request;
126
125
  }
127
126
 
128
127
  const result = {
129
128
  errors: request.result.errors,
130
- successes: []
129
+ successes: [],
131
130
  };
132
131
 
133
132
  for (let it = 0; it < documents.length; it++) {
@@ -137,32 +136,31 @@ const extractors = ([
137
136
  request.setResult(result, { status: request.status });
138
137
 
139
138
  return request;
140
- }
139
+ },
141
140
  },
142
- targets: [ 'mDelete', 'mGet', 'mExists' ]
141
+ targets: ["mDelete", "mGet", "mExists"],
143
142
  },
144
143
  {
145
144
  methods: {
146
- extractFromRequest: request => {
145
+ extractFromRequest: (request) => {
147
146
  const documents = [];
148
147
 
149
148
  for (let it = 0; it < request.input.body.documents.length; it++) {
150
149
  const document = request.input.body.documents[it];
151
150
 
152
- if (request.input.action === 'mUpsert') {
151
+ if (request.input.action === "mUpsert") {
153
152
  documents.push({
154
153
  _id: document._id,
155
154
  _source: document.changes,
156
155
  });
157
- }
158
- else {
156
+ } else {
159
157
  documents.push({ _id: document._id, _source: document.body });
160
158
  }
161
159
  }
162
160
 
163
161
  return documents;
164
162
  },
165
- extractFromResult: request => request.result.successes,
163
+ extractFromResult: (request) => request.result.successes,
166
164
  insertInRequest: (documents, request) => {
167
165
  const tmpDocuments = request.input.body.documents;
168
166
 
@@ -171,14 +169,13 @@ const extractors = ([
171
169
  for (let it = 0; it < documents.length; it++) {
172
170
  const document = documents[it];
173
171
 
174
- if (request.input.action === 'mUpsert') {
172
+ if (request.input.action === "mUpsert") {
175
173
  request.input.body.documents.push({
176
174
  _id: document._id,
177
175
  changes: document._source,
178
176
  default: tmpDocuments[it].default,
179
177
  });
180
- }
181
- else {
178
+ } else {
182
179
  request.input.body.documents.push({
183
180
  _id: document._id,
184
181
  body: document._source,
@@ -191,42 +188,48 @@ const extractors = ([
191
188
  insertInResult: (documents, request) => {
192
189
  const result = {
193
190
  errors: request.result.errors,
194
- successes: documents
191
+ successes: documents,
195
192
  };
196
193
 
197
194
  request.setResult(result, { status: request.status });
198
195
 
199
196
  return request;
200
- }
197
+ },
201
198
  },
202
- targets: [ 'mCreate', 'mCreateOrReplace', 'mReplace', 'mUpdate', 'updateByQuery', 'mUpsert' ]
199
+ targets: [
200
+ "mCreate",
201
+ "mCreateOrReplace",
202
+ "mReplace",
203
+ "mUpdate",
204
+ "updateByQuery",
205
+ "mUpsert",
206
+ ],
203
207
  },
204
208
  {
205
209
  methods: {
206
210
  extractFromRequest: null, // not eligible for search queries
207
- extractFromResult: request => {
211
+ extractFromResult: (request) => {
208
212
  return request.result.hits || request.result.documents;
209
213
  },
210
214
  insertInRequest: null, // not eligible for search queries
211
215
  insertInResult: (documents, request) => {
212
- if (request.input.action === 'search') {
216
+ if (request.input.action === "search") {
213
217
  request.result.hits = documents;
214
- }
215
- else if (request.input.action === 'deleteByQuery') {
218
+ } else if (request.input.action === "deleteByQuery") {
216
219
  request.result.documents = documents;
217
220
  }
218
221
 
219
222
  return request;
220
223
  },
221
224
  },
222
- targets: [ 'search', 'deleteByQuery', 'export' ],
225
+ targets: ["search", "deleteByQuery", "export"],
223
226
  },
224
227
  {
225
228
  methods: {
226
- extractFromRequest: request => [
229
+ extractFromRequest: (request) => [
227
230
  { _id: request.input.args._id, _source: request.input.body },
228
231
  ],
229
- extractFromResult: request => [request.result],
232
+ extractFromResult: (request) => [request.result],
230
233
  insertInRequest: (documents, request) => {
231
234
  request.input.args._id = documents[0] && documents[0]._id;
232
235
  request.input.body = documents[0] && documents[0]._source;
@@ -237,17 +240,17 @@ const extractors = ([
237
240
  return request;
238
241
  },
239
242
  },
240
- targets: [ 'create', 'createOrReplace', 'replace', 'update' ],
243
+ targets: ["create", "createOrReplace", "replace", "update"],
241
244
  },
242
245
  {
243
246
  methods: {
244
- extractFromRequest: request => [
247
+ extractFromRequest: (request) => [
245
248
  {
246
249
  _id: request.input.args._id,
247
250
  _source: request.input.body.changes,
248
251
  },
249
252
  ],
250
- extractFromResult: request => [ request.result ],
253
+ extractFromResult: (request) => [request.result],
251
254
  insertInRequest: ([document], request) => {
252
255
  if (document) {
253
256
  request.input.args._id = document._id;
@@ -261,40 +264,44 @@ const extractors = ([
261
264
  return request;
262
265
  },
263
266
  },
264
- targets: [ 'upsert' ],
267
+ targets: ["upsert"],
265
268
  },
266
- ]).reduce((acc, extractor) => {
267
- extractor.targets.forEach(target => {
269
+ ].reduce((acc, extractor) => {
270
+ extractor.targets.forEach((target) => {
268
271
  acc[target] = extractor.methods;
269
272
  });
270
273
  return acc;
271
274
  }, {});
272
275
 
273
276
  class DocumentExtractor {
274
- constructor (request) {
277
+ constructor(request) {
275
278
  this.request = request;
276
279
 
277
280
  const extractor = extractors[request.input.action];
278
281
 
279
282
  if (extractor === undefined) {
280
- throw kerror.get('core', 'fatal', 'assertion_failed', `no generic documents extractor for ${request.input.action}`);
283
+ throw kerror.get(
284
+ "core",
285
+ "fatal",
286
+ "assertion_failed",
287
+ `no generic documents extractor for ${request.input.action}`
288
+ );
281
289
  }
282
290
 
283
291
  if (request.result) {
284
292
  this.extractMethod = extractor.extractFromResult;
285
293
  this.insertMethod = extractor.insertInResult;
286
- }
287
- else {
294
+ } else {
288
295
  this.extractMethod = extractor.extractFromRequest;
289
296
  this.insertMethod = extractor.insertInRequest;
290
297
  }
291
298
  }
292
299
 
293
- extract () {
300
+ extract() {
294
301
  return this.extractMethod(this.request);
295
302
  }
296
303
 
297
- insert (documents) {
304
+ insert(documents) {
298
305
  return this.insertMethod(documents, this.request);
299
306
  }
300
307
  }