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
@@ -61,7 +61,7 @@ const storeScopeEnum_1 = __importDefault(require("../storage/storeScopeEnum"));
61
61
  const errors_1 = require("../../kerror/errors");
62
62
  const index_1 = require("../../../index");
63
63
  const backend_1 = require("../backend");
64
- const contextError = kerror.wrap('plugin', 'context');
64
+ const contextError = kerror.wrap("plugin", "context");
65
65
  class PluginContext {
66
66
  constructor(pluginName) {
67
67
  this.config = JSON.parse(JSON.stringify(global.kuzzle.config));
@@ -83,7 +83,7 @@ class PluginContext {
83
83
  TooManyRequestsError: errors_1.TooManyRequestsError,
84
84
  UnauthorizedError: errors_1.UnauthorizedError,
85
85
  };
86
- this.kerror = kerror.wrap('plugin', pluginName);
86
+ this.kerror = kerror.wrap("plugin", pluginName);
87
87
  // @deprecated - backward compatibility only
88
88
  this.errorsManager = this.kerror;
89
89
  /* context.secrets ====================================================== */
@@ -96,7 +96,7 @@ class PluginContext {
96
96
  // eslint-disable-next-line no-inner-declarations
97
97
  function PluginContextRepository(collection, ObjectConstructor = null) {
98
98
  if (!collection) {
99
- throw contextError.get('missing_collection');
99
+ throw contextError.get("missing_collection");
100
100
  }
101
101
  const pluginRepository = new pluginRepository_1.default(pluginStore, collection);
102
102
  pluginRepository.init({ ObjectConstructor });
@@ -108,16 +108,15 @@ class PluginContext {
108
108
  mGet: (...args) => pluginRepository.loadMultiFromDatabase(...args),
109
109
  replace: (...args) => pluginRepository.replace(...args),
110
110
  search: (...args) => pluginRepository.search(...args),
111
- update: (...args) => pluginRepository.update(...args)
111
+ update: (...args) => pluginRepository.update(...args),
112
112
  };
113
113
  }
114
114
  // eslint-disable-next-line no-inner-declarations
115
115
  function PluginContextESClient() {
116
- return elasticsearch_1.default
117
- .buildClient(global.kuzzle.config.services.storageEngine.client);
116
+ return elasticsearch_1.default.buildClient(global.kuzzle.config.services.storageEngine.client);
118
117
  }
119
118
  this.constructors = {
120
- BaseValidationType: require('../validation/baseType'),
119
+ BaseValidationType: require("../validation/baseType"),
121
120
  ESClient: PluginContextESClient,
122
121
  Koncorde: KoncordeWrapper_1.Koncorde,
123
122
  Mutex: mutex_1.Mutex,
@@ -129,12 +128,12 @@ class PluginContext {
129
128
  Object.freeze(this.constructors);
130
129
  /* context.log ======================================================== */
131
130
  this.log = {
132
- debug: msg => global.kuzzle.log.debug(`[${pluginName}] ${msg}`),
133
- error: msg => global.kuzzle.log.error(`[${pluginName}] ${msg}`),
134
- info: msg => global.kuzzle.log.info(`[${pluginName}] ${msg}`),
135
- silly: msg => global.kuzzle.log.silly(`[${pluginName}] ${msg}`),
136
- verbose: msg => global.kuzzle.log.verbose(`[${pluginName}] ${msg}`),
137
- warn: msg => global.kuzzle.log.warn(`[${pluginName}] ${msg}`)
131
+ debug: (msg) => global.kuzzle.log.debug(`[${pluginName}] ${msg}`),
132
+ error: (msg) => global.kuzzle.log.error(`[${pluginName}] ${msg}`),
133
+ info: (msg) => global.kuzzle.log.info(`[${pluginName}] ${msg}`),
134
+ silly: (msg) => global.kuzzle.log.silly(`[${pluginName}] ${msg}`),
135
+ verbose: (msg) => global.kuzzle.log.verbose(`[${pluginName}] ${msg}`),
136
+ warn: (msg) => global.kuzzle.log.warn(`[${pluginName}] ${msg}`),
138
137
  };
139
138
  Object.freeze(this.log);
140
139
  /* context.accessors ================================================== */
@@ -144,32 +143,32 @@ class PluginContext {
144
143
  nodeId: global.kuzzle.id,
145
144
  sdk: new embeddedSdk_1.EmbeddedSDK(),
146
145
  storage: {
147
- bootstrap: collections => pluginStore.init(collections),
148
- createCollection: (collection, mappings) => (pluginStore.createCollection(collection, { mappings }))
146
+ bootstrap: (collections) => pluginStore.init(collections),
147
+ createCollection: (collection, mappings) => pluginStore.createCollection(collection, { mappings }),
149
148
  },
150
149
  strategies: {
151
150
  add: curryAddStrategy(pluginName),
152
- remove: curryRemoveStrategy(pluginName)
151
+ remove: curryRemoveStrategy(pluginName),
153
152
  },
154
153
  subscription: {
155
154
  register: (connectionId, index, collection, filters) => {
156
155
  const request = new index_1.KuzzleRequest({
157
- action: 'subscribe',
156
+ action: "subscribe",
158
157
  body: filters,
159
158
  collection,
160
- controller: 'realtime',
159
+ controller: "realtime",
161
160
  index,
162
161
  }, {
163
162
  connectionId: connectionId,
164
163
  });
165
- return global.kuzzle.ask('core:realtime:subscribe', request);
164
+ return global.kuzzle.ask("core:realtime:subscribe", request);
166
165
  },
167
- unregister: (connectionId, roomId, notify) => global.kuzzle.ask('core:realtime:unsubscribe', connectionId, roomId, notify)
166
+ unregister: (connectionId, roomId, notify) => global.kuzzle.ask("core:realtime:unsubscribe", connectionId, roomId, notify),
168
167
  },
169
- trigger: (eventName, payload) => (global.kuzzle.pipe(`plugin-${pluginName}:${eventName}`, payload)),
168
+ trigger: (eventName, payload) => global.kuzzle.pipe(`plugin-${pluginName}:${eventName}`, payload),
170
169
  validation: {
171
170
  addType: global.kuzzle.validation.addType.bind(global.kuzzle.validation),
172
- validate: global.kuzzle.validation.validate.bind(global.kuzzle.validation)
171
+ validate: global.kuzzle.validation.validate.bind(global.kuzzle.validation),
173
172
  },
174
173
  };
175
174
  // @todo freeze the "accessors" object once we don't have
@@ -178,33 +177,35 @@ class PluginContext {
178
177
  }
179
178
  exports.PluginContext = PluginContext;
180
179
  /**
181
- * @param {KuzzleRequest} request
180
+ * @param {KuzzleRequest} request
182
181
  * @param {Function} [callback]
183
182
  */
184
183
  function execute(request, callback) {
185
- if (callback && typeof callback !== 'function') {
186
- const error = contextError.get('invalid_callback', typeof callback);
184
+ if (callback && typeof callback !== "function") {
185
+ const error = contextError.get("invalid_callback", typeof callback);
187
186
  global.kuzzle.log.error(error);
188
187
  return bluebird_1.default.reject(error);
189
188
  }
190
189
  const promback = new promback_1.default(callback);
191
- if (!request || (!(request instanceof index_1.KuzzleRequest) && !(request instanceof index_1.Request))) {
192
- return promback.reject(contextError.get('missing_request'));
190
+ if (!request ||
191
+ (!(request instanceof index_1.KuzzleRequest) && !(request instanceof index_1.Request))) {
192
+ return promback.reject(contextError.get("missing_request"));
193
193
  }
194
- if (request.input.controller === 'realtime'
195
- && ['subscribe', 'unsubscribe'].includes(request.input.action)) {
196
- return promback.reject(contextError.get('unavailable_realtime', request.input.action));
194
+ if (request.input.controller === "realtime" &&
195
+ ["subscribe", "unsubscribe"].includes(request.input.action)) {
196
+ return promback.reject(contextError.get("unavailable_realtime", request.input.action));
197
197
  }
198
198
  request.clearError();
199
199
  request.status = 102;
200
- global.kuzzle.funnel.executePluginRequest(request)
201
- .then(result => {
200
+ global.kuzzle.funnel
201
+ .executePluginRequest(request)
202
+ .then((result) => {
202
203
  request.setResult(result, {
203
- status: request.status === 102 ? 200 : request.status
204
+ status: request.status === 102 ? 200 : request.status,
204
205
  });
205
206
  promback.resolve(request);
206
207
  })
207
- .catch(err => {
208
+ .catch((err) => {
208
209
  promback.reject(err);
209
210
  });
210
211
  return promback.deferred;
@@ -222,7 +223,7 @@ function execute(request, callback) {
222
223
  function instantiateRequest(request, data, options = {}) {
223
224
  let _request = request, _data = data, _options = options;
224
225
  if (!_request) {
225
- throw contextError.get('missing_request_data');
226
+ throw contextError.get("missing_request_data");
226
227
  }
227
228
  if (!(_request instanceof index_1.KuzzleRequest)) {
228
229
  if (_data) {
@@ -237,7 +238,7 @@ function instantiateRequest(request, data, options = {}) {
237
238
  const target = new index_1.KuzzleRequest(_data, _options);
238
239
  // forward informations if a request object was supplied
239
240
  if (_request) {
240
- for (const resource of ['_id', 'index', 'collection']) {
241
+ for (const resource of ["_id", "index", "collection"]) {
241
242
  if (!target.input.resource[resource]) {
242
243
  target.input.resource[resource] = _request.input.resource[resource];
243
244
  }
@@ -274,17 +275,17 @@ function curryAddStrategy(pluginName) {
274
275
  // be serialized and propagated to other cluster nodes
275
276
  // so if a strategy is not defined using an authenticator, we have
276
277
  // to reject the call
277
- if (!(0, safeObject_1.isPlainObject)(strategy)
278
- || !(0, safeObject_1.isPlainObject)(strategy.config)
279
- || typeof strategy.config.authenticator !== 'string') {
280
- throw contextError.get('missing_authenticator', pluginName, name);
278
+ if (!(0, safeObject_1.isPlainObject)(strategy) ||
279
+ !(0, safeObject_1.isPlainObject)(strategy.config) ||
280
+ typeof strategy.config.authenticator !== "string") {
281
+ throw contextError.get("missing_authenticator", pluginName, name);
281
282
  }
282
- const mutex = new mutex_1.Mutex('auth:strategies:add', { ttl: 30000 });
283
+ const mutex = new mutex_1.Mutex("auth:strategies:add", { ttl: 30000 });
283
284
  await mutex.lock();
284
285
  try {
285
286
  // @todo use Plugin.checkName to ensure format
286
287
  global.kuzzle.pluginsManager.registerStrategy(pluginName, name, strategy);
287
- return await global.kuzzle.pipe('core:auth:strategyAdded', {
288
+ return await global.kuzzle.pipe("core:auth:strategyAdded", {
288
289
  name,
289
290
  pluginName,
290
291
  strategy,
@@ -307,11 +308,14 @@ function curryRemoveStrategy(pluginName) {
307
308
  // either async or catch unregisterStrategy exceptions + return a rejected
308
309
  // promise
309
310
  return async function removeStrategy(name) {
310
- const mutex = new mutex_1.Mutex('auth:strategies:remove', { ttl: 30000 });
311
+ const mutex = new mutex_1.Mutex("auth:strategies:remove", { ttl: 30000 });
311
312
  await mutex.lock();
312
313
  try {
313
314
  global.kuzzle.pluginsManager.unregisterStrategy(pluginName, name);
314
- return await global.kuzzle.pipe('core:auth:strategyRemoved', { name, pluginName });
315
+ return await global.kuzzle.pipe("core:auth:strategyRemoved", {
316
+ name,
317
+ pluginName,
318
+ });
315
319
  }
316
320
  finally {
317
321
  await mutex.unlock();
@@ -19,33 +19,34 @@
19
19
  * limitations under the License.
20
20
  */
21
21
 
22
- 'use strict';
22
+ "use strict";
23
23
 
24
- const _ = require('lodash');
24
+ const _ = require("lodash");
25
25
 
26
- const kerror = require('../../kerror').wrap('plugin', 'manifest');
27
- const AbstractManifest = require('../shared/abstractManifest');
26
+ const kerror = require("../../kerror").wrap("plugin", "manifest");
27
+ const AbstractManifest = require("../shared/abstractManifest");
28
28
 
29
29
  class PluginManifest extends AbstractManifest {
30
- constructor (pluginPath) {
30
+ constructor(pluginPath) {
31
31
  super(pluginPath);
32
32
  this.privileged = false;
33
33
  }
34
34
 
35
- load () {
35
+ load() {
36
36
  super.load();
37
37
 
38
38
  // Ensure ES will accept the plugin name as index
39
- if (! /^[\w-]+$/.test(this.name)) {
40
- throw kerror.get('invalid_name', this.path);
39
+ if (!/^[\w-]+$/.test(this.name)) {
40
+ throw kerror.get("invalid_name", this.path);
41
41
  }
42
42
 
43
- if (! _.isNil(this.raw) && ! _.isNil(this.raw.privileged)) {
44
- if (typeof this.raw.privileged !== 'boolean') {
43
+ if (!_.isNil(this.raw) && !_.isNil(this.raw.privileged)) {
44
+ if (typeof this.raw.privileged !== "boolean") {
45
45
  throw kerror.get(
46
- 'invalid_privileged',
46
+ "invalid_privileged",
47
47
  this.path,
48
- typeof this.raw.privileged);
48
+ typeof this.raw.privileged
49
+ );
49
50
  }
50
51
  this.privileged = this.raw.privileged;
51
52
  }
@@ -19,24 +19,24 @@
19
19
  * limitations under the License.
20
20
  */
21
21
 
22
- 'use strict';
22
+ "use strict";
23
23
 
24
- const { merge } = require('lodash');
24
+ const { merge } = require("lodash");
25
25
 
26
- const { NotFoundError } = require('../../kerror/errors');
27
- const Repository = require('../shared/repository');
28
- const cacheDbEnum = require('../cache/cacheDbEnum');
26
+ const { NotFoundError } = require("../../kerror/errors");
27
+ const Repository = require("../shared/repository");
28
+ const cacheDbEnum = require("../cache/cacheDbEnum");
29
29
 
30
30
  class PluginRepository extends Repository {
31
- constructor (store, collection) {
31
+ constructor(store, collection) {
32
32
  super({ cache: cacheDbEnum.NONE, store });
33
33
 
34
34
  this.collection = collection;
35
35
  this.ObjectConstructor = Object;
36
36
  }
37
37
 
38
- init (options) {
39
- if (options && typeof options === 'object' && ! Array.isArray(options)) {
38
+ init(options) {
39
+ if (options && typeof options === "object" && !Array.isArray(options)) {
40
40
  if (options.ObjectConstructor) {
41
41
  this.ObjectConstructor = options.ObjectConstructor;
42
42
  }
@@ -49,7 +49,7 @@ class PluginRepository extends Repository {
49
49
  * @param {object} data - The object to serialize
50
50
  * @returns {object}
51
51
  */
52
- serializeToDatabase (data) {
52
+ serializeToDatabase(data) {
53
53
  // avoid the data var mutation
54
54
  const result = merge({}, data);
55
55
 
@@ -63,8 +63,8 @@ class PluginRepository extends Repository {
63
63
  * @param {object} [options]
64
64
  * @returns {Promise}
65
65
  */
66
- create (object, options = {}) {
67
- const opts = Object.assign({ method: 'create' }, options);
66
+ create(object, options = {}) {
67
+ const opts = Object.assign({ method: "create" }, options);
68
68
 
69
69
  return this.persistToDatabase(object, opts);
70
70
  }
@@ -74,8 +74,8 @@ class PluginRepository extends Repository {
74
74
  * @param {object} [options]
75
75
  * @returns {Promise}
76
76
  */
77
- createOrReplace (object, options = {}) {
78
- const opts = Object.assign({ method: 'createOrReplace' }, options);
77
+ createOrReplace(object, options = {}) {
78
+ const opts = Object.assign({ method: "createOrReplace" }, options);
79
79
 
80
80
  return this.persistToDatabase(object, opts);
81
81
  }
@@ -85,8 +85,8 @@ class PluginRepository extends Repository {
85
85
  * @param {object} [options]
86
86
  * @returns {Promise}
87
87
  */
88
- replace (object, options = {}) {
89
- const opts = Object.assign({ method: 'replace' }, options);
88
+ replace(object, options = {}) {
89
+ const opts = Object.assign({ method: "replace" }, options);
90
90
 
91
91
  return this.persistToDatabase(object, opts);
92
92
  }
@@ -96,8 +96,8 @@ class PluginRepository extends Repository {
96
96
  * @param {object} [options]
97
97
  * @returns {Promise}
98
98
  */
99
- update (object, options = {}) {
100
- const opts = Object.assign({ method: 'update' }, options);
99
+ update(object, options = {}) {
100
+ const opts = Object.assign({ method: "update" }, options);
101
101
 
102
102
  return this.persistToDatabase(object, opts);
103
103
  }
@@ -109,15 +109,14 @@ class PluginRepository extends Repository {
109
109
  * @param {string} documentId
110
110
  * @returns {Promise}
111
111
  */
112
- load (documentId) {
113
- return super.load(documentId)
114
- .catch(error => {
115
- if (this.collection === 'users' && (error instanceof NotFoundError)) {
116
- return Promise.resolve(null);
117
- }
118
-
119
- throw error;
120
- });
112
+ load(documentId) {
113
+ return super.load(documentId).catch((error) => {
114
+ if (this.collection === "users" && error instanceof NotFoundError) {
115
+ return Promise.resolve(null);
116
+ }
117
+
118
+ throw error;
119
+ });
121
120
  }
122
121
 
123
122
  /**
@@ -125,7 +124,7 @@ class PluginRepository extends Repository {
125
124
  * @param {object} [options]
126
125
  * @returns {Promise}
127
126
  */
128
- delete (documentId, options = {}) {
127
+ delete(documentId, options = {}) {
129
128
  return super.delete({ _id: documentId }, options);
130
129
  }
131
130
  }