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
@@ -82,21 +82,20 @@ class TokenManager {
82
82
  if (a.idx === b.idx) {
83
83
  return 0;
84
84
  }
85
- if (a.idx && a.idx[0] === '-') {
85
+ if (a.idx && a.idx[0] === "-") {
86
86
  return 1;
87
87
  }
88
- if (b.idx && b.idx[0] === '-') {
88
+ if (b.idx && b.idx[0] === "-") {
89
89
  return -1;
90
90
  }
91
91
  return a.idx < b.idx ? -1 : 1;
92
92
  });
93
93
  }
94
94
  async init() {
95
- const anonymous = await global.kuzzle.ask('core:security:user:anonymous:get');
95
+ const anonymous = await global.kuzzle.ask("core:security:user:anonymous:get");
96
96
  this.anonymousUserId = anonymous._id;
97
- global.kuzzle.on('connection:remove', connection => {
98
- this.removeConnection(connection.id)
99
- .catch(err => global.kuzzle.log.info(err));
97
+ global.kuzzle.on("connection:remove", (connection) => {
98
+ this.removeConnection(connection.id).catch((err) => global.kuzzle.log.info(err));
100
99
  });
101
100
  }
102
101
  runTimer() {
@@ -186,7 +185,7 @@ class TokenManager {
186
185
  const managedToken = this.tokens.array[searchResult];
187
186
  for (const connectionId of managedToken.connectionIds) {
188
187
  this.tokensByConnection.delete(connectionId);
189
- await global.kuzzle.ask('core:realtime:connection:remove', connectionId);
188
+ await global.kuzzle.ask("core:realtime:connection:remove", connectionId);
190
189
  }
191
190
  this.deleteByIndex(searchResult);
192
191
  }
@@ -217,11 +216,13 @@ class TokenManager {
217
216
  async checkTokensValidity() {
218
217
  const arr = this.tokens.array;
219
218
  // API key can never expire (-1)
220
- if (arr.length > 0 && (arr[0].expiresAt > 0 && arr[0].expiresAt < Date.now())) {
219
+ if (arr.length > 0 &&
220
+ arr[0].expiresAt > 0 &&
221
+ arr[0].expiresAt < Date.now()) {
221
222
  const managedToken = arr[0];
222
223
  arr.shift();
223
224
  for (const connectionId of managedToken.connectionIds) {
224
- await global.kuzzle.ask('core:realtime:tokenExpired:notify', connectionId);
225
+ await global.kuzzle.ask("core:realtime:tokenExpired:notify", connectionId);
225
226
  this.tokensByConnection.delete(connectionId);
226
227
  }
227
228
  setImmediate(() => this.checkTokensValidity());
@@ -257,7 +258,7 @@ class TokenManager {
257
258
  add(token, connectionIds) {
258
259
  const orderedToken = Object.assign({}, token, {
259
260
  connectionIds: new Set(connectionIds),
260
- idx: ManagedToken.indexFor(token)
261
+ idx: ManagedToken.indexFor(token),
261
262
  });
262
263
  for (const connectionId of connectionIds) {
263
264
  this.tokensByConnection.set(connectionId, orderedToken);
@@ -1,4 +1,4 @@
1
- import { Backend } from './index';
1
+ import { Backend } from "./index";
2
2
  export declare class ApplicationManager {
3
3
  protected _application: any;
4
4
  constructor(application: Backend);
@@ -23,8 +23,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
23
23
  exports.ApplicationManager = void 0;
24
24
  class ApplicationManager {
25
25
  constructor(application) {
26
- Reflect.defineProperty(this, '_application', {
27
- value: application
26
+ Reflect.defineProperty(this, "_application", {
27
+ value: application,
28
28
  });
29
29
  }
30
30
  get _kuzzle() {
@@ -1,6 +1,6 @@
1
- import { EmbeddedSDK } from '../shared/sdk/embeddedSdk';
2
- import { JSONObject } from '../../../index';
3
- import { BackendCluster, BackendConfig, BackendController, BackendHook, BackendImport, BackendPipe, BackendPlugin, BackendStorage, BackendVault, BackendOpenApi, InternalLogger, BackendErrors } from './index';
1
+ import { EmbeddedSDK } from "../shared/sdk/embeddedSdk";
2
+ import { JSONObject } from "../../../index";
3
+ import { BackendCluster, BackendConfig, BackendController, BackendHook, BackendImport, BackendPipe, BackendPlugin, BackendStorage, BackendVault, BackendOpenApi, InternalLogger, BackendErrors } from "./index";
4
4
  export declare class Backend {
5
5
  private _kuzzle;
6
6
  private _name;
@@ -52,21 +52,21 @@ const kuzzle_1 = __importDefault(require("../../kuzzle"));
52
52
  const embeddedSdk_1 = require("../shared/sdk/embeddedSdk");
53
53
  const kerror = __importStar(require("../../kerror"));
54
54
  const index_1 = require("./index");
55
- const assertionError = kerror.wrap('plugin', 'assert');
56
- const runtimeError = kerror.wrap('plugin', 'runtime');
55
+ const assertionError = kerror.wrap("plugin", "assert");
56
+ const runtimeError = kerror.wrap("plugin", "runtime");
57
57
  let _app = null;
58
- Reflect.defineProperty(global, 'app', {
58
+ Reflect.defineProperty(global, "app", {
59
59
  configurable: true,
60
60
  enumerable: false,
61
61
  get() {
62
62
  if (_app === null) {
63
- throw new Error('App instance not found. Are you sure you have already started your application?');
63
+ throw new Error("App instance not found. Are you sure you have already started your application?");
64
64
  }
65
65
  return _app;
66
66
  },
67
67
  set(value) {
68
68
  if (_app !== null) {
69
- throw new Error('Cannot build an App instance: another one already exists');
69
+ throw new Error("Cannot build an App instance: another one already exists");
70
70
  }
71
71
  _app = value;
72
72
  },
@@ -85,11 +85,11 @@ class Backend {
85
85
  this._plugins = {};
86
86
  this._import = {
87
87
  mappings: {},
88
- onExistingUsers: 'skip',
88
+ onExistingUsers: "skip",
89
89
  profiles: {},
90
90
  roles: {},
91
91
  userMappings: {},
92
- users: {}
92
+ users: {},
93
93
  };
94
94
  this._installationsWaitingList = [];
95
95
  /**
@@ -109,30 +109,30 @@ class Backend {
109
109
  /**
110
110
  * Requiring the PluginObject on module top level creates cyclic dependency
111
111
  */
112
- Reflect.defineProperty(this, 'PluginObject', {
113
- value: require('../plugin/plugin')
112
+ Reflect.defineProperty(this, "PluginObject", {
113
+ value: require("../plugin/plugin"),
114
114
  });
115
115
  if (!this.PluginObject.checkName(name)) {
116
- throw assertionError.get('invalid_application_name', name);
116
+ throw assertionError.get("invalid_application_name", name);
117
117
  }
118
118
  this._name = name;
119
- Reflect.defineProperty(this, '_kuzzle', {
120
- writable: true
119
+ Reflect.defineProperty(this, "_kuzzle", {
120
+ writable: true,
121
121
  });
122
- Reflect.defineProperty(this, '_sdk', {
123
- writable: true
122
+ Reflect.defineProperty(this, "_sdk", {
123
+ writable: true,
124
124
  });
125
125
  /**
126
126
  * Set the "started" property in this event so developers can use runtime
127
127
  * features in pipes/hooks attached to this event.
128
128
  */
129
- this._pipes['kuzzle:state:ready'] = [
129
+ this._pipes["kuzzle:state:ready"] = [
130
130
  async () => {
131
131
  this.started = true;
132
132
  },
133
133
  ];
134
134
  try {
135
- const info = JSON.parse(fs_1.default.readFileSync('./package.json', 'utf8'));
135
+ const info = JSON.parse(fs_1.default.readFileSync("./package.json", "utf8"));
136
136
  this.version = info.version;
137
137
  }
138
138
  catch (error) {
@@ -164,7 +164,7 @@ class Backend {
164
164
  */
165
165
  async start() {
166
166
  if (this.started) {
167
- throw runtimeError.get('already_started', 'start');
167
+ throw runtimeError.get("already_started", "start");
168
168
  }
169
169
  this._kuzzle = new kuzzle_1.default(this.config.content);
170
170
  for (const plugin of this.config.content.plugins.common.include) {
@@ -174,7 +174,10 @@ class Backend {
174
174
  name: plugin,
175
175
  });
176
176
  }
177
- const application = new this.PluginObject(this._instanceProxy, { application: true, name: this.name });
177
+ const application = new this.PluginObject(this._instanceProxy, {
178
+ application: true,
179
+ name: this.name,
180
+ });
178
181
  application.version = this.version;
179
182
  application.commit = this.commit;
180
183
  application.openApi = this.openApi.definition;
@@ -200,7 +203,7 @@ class Backend {
200
203
  */
201
204
  trigger(event, ...payload) {
202
205
  if (!this.started) {
203
- throw runtimeError.get('unavailable_before_start', 'trigger');
206
+ throw runtimeError.get("unavailable_before_start", "trigger");
204
207
  }
205
208
  return this._kuzzle.pipe(event, ...payload);
206
209
  }
@@ -215,16 +218,16 @@ class Backend {
215
218
  */
216
219
  install(id, handler, description) {
217
220
  if (this.started) {
218
- throw runtimeError.get('already_started', 'install');
221
+ throw runtimeError.get("already_started", "install");
219
222
  }
220
- if (typeof id !== 'string') {
221
- throw kerror.get('validation', 'assert', 'invalid_type', 'id', 'string');
223
+ if (typeof id !== "string") {
224
+ throw kerror.get("validation", "assert", "invalid_type", "id", "string");
222
225
  }
223
- if (typeof handler !== 'function') {
224
- throw kerror.get('validation', 'assert', 'invalid_type', 'handler', 'function');
226
+ if (typeof handler !== "function") {
227
+ throw kerror.get("validation", "assert", "invalid_type", "handler", "function");
225
228
  }
226
- if (description && typeof description !== 'string') {
227
- throw kerror.get('validation', 'assert', 'invalid_type', 'id', 'string');
229
+ if (description && typeof description !== "string") {
230
+ throw kerror.get("validation", "assert", "invalid_type", "id", "string");
228
231
  }
229
232
  this._installationsWaitingList.push({ description, handler, id });
230
233
  }
@@ -239,7 +242,7 @@ class Backend {
239
242
  */
240
243
  get sdk() {
241
244
  if (!this.started) {
242
- throw runtimeError.get('unavailable_before_start', 'sdk');
245
+ throw runtimeError.get("unavailable_before_start", "sdk");
243
246
  }
244
247
  return this._sdk;
245
248
  }
@@ -248,7 +251,7 @@ class Backend {
248
251
  */
249
252
  get nodeId() {
250
253
  if (!this.started) {
251
- throw runtimeError.get('unavailable_before_start', 'nodeId');
254
+ throw runtimeError.get("unavailable_before_start", "nodeId");
252
255
  }
253
256
  return this._kuzzle.id;
254
257
  }
@@ -275,12 +278,12 @@ class Backend {
275
278
  if (!fs_1.default.statSync(gitDir).isDirectory()) {
276
279
  return null;
277
280
  }
278
- const ref = fs_1.default.readFileSync(`${dir}/.git/HEAD`, 'utf8').split('ref: ')[1];
279
- const refFile = `${dir}/.git/${ref}`.replace('\n', '');
281
+ const ref = fs_1.default.readFileSync(`${dir}/.git/HEAD`, "utf8").split("ref: ")[1];
282
+ const refFile = `${dir}/.git/${ref}`.replace("\n", "");
280
283
  if (!fs_1.default.existsSync(refFile)) {
281
284
  return null;
282
285
  }
283
- return fs_1.default.readFileSync(refFile, 'utf8').replace('\n', '');
286
+ return fs_1.default.readFileSync(refFile, "utf8").replace("\n", "");
284
287
  }
285
288
  }
286
289
  exports.Backend = Backend;
@@ -1,5 +1,5 @@
1
- import { JSONObject } from '../../../index';
2
- import { EventHandler } from '../../types';
1
+ import { JSONObject } from "../../../index";
2
+ import { EventHandler } from "../../types";
3
3
  export declare class BackendCluster {
4
4
  /**
5
5
  * Broadcasts an event to listeners across all registered Kuzzle nodes
@@ -30,7 +30,7 @@ class BackendCluster {
30
30
  * @return {Promise<void>}
31
31
  */
32
32
  async broadcast(event, payload) {
33
- await global.kuzzle.ask('cluster:event:broadcast', event, payload);
33
+ await global.kuzzle.ask("cluster:event:broadcast", event, payload);
34
34
  }
35
35
  /**
36
36
  * Registers a listener to the provided event name.
@@ -40,7 +40,7 @@ class BackendCluster {
40
40
  * @return {Promise<void>} [description]
41
41
  */
42
42
  async on(event, listener) {
43
- await global.kuzzle.ask('cluster:event:on', event, listener);
43
+ await global.kuzzle.ask("cluster:event:on", event, listener);
44
44
  }
45
45
  /**
46
46
  * Registers a listener to the provided event name. This listener can be
@@ -51,7 +51,7 @@ class BackendCluster {
51
51
  * @return {Promise<void>}
52
52
  */
53
53
  async once(event, listener) {
54
- await global.kuzzle.ask('cluster:event:once', event, listener);
54
+ await global.kuzzle.ask("cluster:event:once", event, listener);
55
55
  }
56
56
  /**
57
57
  * Removes a listener from an event.
@@ -63,7 +63,7 @@ class BackendCluster {
63
63
  * @return {Promise<void>}
64
64
  */
65
65
  async off(event, listener) {
66
- await global.kuzzle.ask('cluster:event:off', event, listener);
66
+ await global.kuzzle.ask("cluster:event:off", event, listener);
67
67
  }
68
68
  /**
69
69
  * Removes all listeners from an event.
@@ -72,7 +72,7 @@ class BackendCluster {
72
72
  * @return {Promise<void>}
73
73
  */
74
74
  async removeAllListeners(event) {
75
- await global.kuzzle.ask('cluster:event:removeAllListeners', event);
75
+ await global.kuzzle.ask("cluster:event:removeAllListeners", event);
76
76
  }
77
77
  }
78
78
  exports.BackendCluster = BackendCluster;
@@ -1,5 +1,5 @@
1
- import { ApplicationManager, Backend } from './index';
2
- import { KuzzleConfiguration } from '../../types/config/KuzzleConfiguration';
1
+ import { ApplicationManager, Backend } from "./index";
2
+ import { KuzzleConfiguration } from "../../types/config/KuzzleConfiguration";
3
3
  export declare class BackendConfig extends ApplicationManager {
4
4
  /**
5
5
  * Configuration content.
@@ -51,7 +51,7 @@ const lodash_1 = __importDefault(require("lodash"));
51
51
  const kerror = __importStar(require("../../kerror"));
52
52
  const index_1 = require("./index");
53
53
  const index_js_1 = require("../../config/index.js");
54
- const runtimeError = kerror.wrap('plugin', 'runtime');
54
+ const runtimeError = kerror.wrap("plugin", "runtime");
55
55
  class BackendConfig extends index_1.ApplicationManager {
56
56
  constructor(application) {
57
57
  super(application);
@@ -67,7 +67,7 @@ class BackendConfig extends index_1.ApplicationManager {
67
67
  */
68
68
  set(path, value) {
69
69
  if (this._application.started) {
70
- throw runtimeError.get('already_started', 'config');
70
+ throw runtimeError.get("already_started", "config");
71
71
  }
72
72
  lodash_1.default.set(this.content, path, value);
73
73
  }
@@ -80,7 +80,7 @@ class BackendConfig extends index_1.ApplicationManager {
80
80
  */
81
81
  merge(config) {
82
82
  if (this._application.started) {
83
- throw runtimeError.get('already_started', 'config');
83
+ throw runtimeError.get("already_started", "config");
84
84
  }
85
85
  this.content = lodash_1.default.merge(this.content, config);
86
86
  }
@@ -1,5 +1,5 @@
1
- import { ControllerDefinition, Controller } from '../../types';
2
- import { ApplicationManager } from './index';
1
+ import { ControllerDefinition, Controller } from "../../types";
2
+ import { ApplicationManager } from "./index";
3
3
  export declare class BackendController extends ApplicationManager {
4
4
  /**
5
5
  * Registers a new controller.
@@ -51,8 +51,8 @@ const inflector_1 = require("../../util/inflector");
51
51
  const kerror = __importStar(require("../../kerror"));
52
52
  const index_1 = require("./index");
53
53
  const plugin_1 = __importDefault(require("../plugin/plugin"));
54
- const assertionError = kerror.wrap('plugin', 'assert');
55
- const runtimeError = kerror.wrap('plugin', 'runtime');
54
+ const assertionError = kerror.wrap("plugin", "assert");
55
+ const runtimeError = kerror.wrap("plugin", "runtime");
56
56
  class BackendController extends index_1.ApplicationManager {
57
57
  /**
58
58
  * Registers a new controller.
@@ -76,7 +76,7 @@ class BackendController extends index_1.ApplicationManager {
76
76
  */
77
77
  register(name, definition) {
78
78
  if (this._application.started) {
79
- throw runtimeError.get('already_started', 'controller');
79
+ throw runtimeError.get("already_started", "controller");
80
80
  }
81
81
  plugin_1.default.checkControllerDefinition(name, definition);
82
82
  this.add(name, definition);
@@ -146,21 +146,20 @@ class BackendController extends index_1.ApplicationManager {
146
146
  */
147
147
  use(controller) {
148
148
  if (this._application.started) {
149
- throw runtimeError.get('already_started', 'controller');
149
+ throw runtimeError.get("already_started", "controller");
150
150
  }
151
151
  if (!controller.name) {
152
- controller.name = inflector_1.Inflector.kebabCase(controller.constructor.name)
153
- .replace('-controller', '');
152
+ controller.name = inflector_1.Inflector.kebabCase(controller.constructor.name).replace("-controller", "");
154
153
  }
155
154
  plugin_1.default.checkControllerDefinition(controller.name, controller.definition);
156
155
  for (const [action, definition] of Object.entries(controller.definition.actions)) {
157
- if (typeof definition.handler !== 'function') {
158
- throw assertionError.get('invalid_controller_definition', controller.name, `Handler for action "${action}" is not a function.`);
156
+ if (typeof definition.handler !== "function") {
157
+ throw assertionError.get("invalid_controller_definition", controller.name, `Handler for action "${action}" is not a function.`);
159
158
  }
160
159
  // if the function handler is an instance method,
161
160
  // bind the context to the controller instance
162
161
  const handlerName = definition.handler.name;
163
- if (handlerName && typeof controller[handlerName] === 'function') {
162
+ if (handlerName && typeof controller[handlerName] === "function") {
164
163
  definition.handler = definition.handler.bind(controller);
165
164
  }
166
165
  }
@@ -174,7 +173,7 @@ class BackendController extends index_1.ApplicationManager {
174
173
  */
175
174
  add(name, definition) {
176
175
  if (this._application._controllers[name]) {
177
- throw assertionError.get('invalid_controller_definition', name, 'A controller with this name already exists');
176
+ throw assertionError.get("invalid_controller_definition", name, "A controller with this name already exists");
178
177
  }
179
178
  this._application._controllers[name] = definition;
180
179
  }
@@ -1,6 +1,6 @@
1
- import { KuzzleError } from '../../kerror/errors';
2
- import { ApplicationManager, Backend } from './index';
3
- import { CustomErrorDefinition } from '../../types';
1
+ import { KuzzleError } from "../../kerror/errors";
2
+ import { ApplicationManager, Backend } from "./index";
3
+ import { CustomErrorDefinition } from "../../types";
4
4
  export declare class BackendErrors extends ApplicationManager {
5
5
  private domains;
6
6
  constructor(application: Backend);
@@ -82,7 +82,8 @@ class BackendErrors extends index_1.ApplicationManager {
82
82
  };
83
83
  }
84
84
  this.domains[domain].subDomains[subDomain].errors[name] = {
85
- code: Object.keys(this.domains[domain].subDomains[subDomain].errors).length,
85
+ code: Object.keys(this.domains[domain].subDomains[subDomain].errors)
86
+ .length,
86
87
  ...definition,
87
88
  };
88
89
  }
@@ -1,5 +1,5 @@
1
- import { EventHandler } from '../../types';
2
- import { ApplicationManager } from './index';
1
+ import { EventHandler } from "../../types";
2
+ import { ApplicationManager } from "./index";
3
3
  export declare class BackendHook extends ApplicationManager {
4
4
  /**
5
5
  * Registers a new hook on an event
@@ -46,8 +46,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
46
46
  exports.BackendHook = void 0;
47
47
  const kerror = __importStar(require("../../kerror"));
48
48
  const index_1 = require("./index");
49
- const assertionError = kerror.wrap('plugin', 'assert');
50
- const runtimeError = kerror.wrap('plugin', 'runtime');
49
+ const assertionError = kerror.wrap("plugin", "assert");
50
+ const runtimeError = kerror.wrap("plugin", "runtime");
51
51
  class BackendHook extends index_1.ApplicationManager {
52
52
  /**
53
53
  * Registers a new hook on an event
@@ -58,10 +58,10 @@ class BackendHook extends index_1.ApplicationManager {
58
58
  */
59
59
  register(event, handler) {
60
60
  if (this._application.started) {
61
- throw runtimeError.get('already_started', 'hook');
61
+ throw runtimeError.get("already_started", "hook");
62
62
  }
63
- if (typeof handler !== 'function') {
64
- throw assertionError.get('invalid_hook', event);
63
+ if (typeof handler !== "function") {
64
+ throw assertionError.get("invalid_hook", event);
65
65
  }
66
66
  if (!this._application._hooks[event]) {
67
67
  this._application._hooks[event] = [];
@@ -1,5 +1,5 @@
1
- import { ApplicationManager } from './index';
2
- import { JSONObject } from '../../../index';
1
+ import { ApplicationManager } from "./index";
2
+ import { JSONObject } from "../../../index";
3
3
  export declare type DefaultMappings = {
4
4
  [index: string]: {
5
5
  [collection: string]: {
@@ -80,6 +80,6 @@ export declare class BackendImport extends ApplicationManager {
80
80
  * @param options onExistingUsers: Default to `skip`. Strategy to adopt when trying to create an already existing user.
81
81
  */
82
82
  users(users: JSONObject, options?: {
83
- onExistingUsers?: 'overwrite' | 'skip';
83
+ onExistingUsers?: "overwrite" | "skip";
84
84
  }): void;
85
85
  }
@@ -47,8 +47,8 @@ exports.BackendImport = void 0;
47
47
  const kerror = __importStar(require("../../kerror"));
48
48
  const index_1 = require("./index");
49
49
  const safeObject_1 = require("../../../lib/util/safeObject");
50
- const assertionError = kerror.wrap('validation', 'assert');
51
- const runtimeError = kerror.wrap('plugin', 'runtime');
50
+ const assertionError = kerror.wrap("validation", "assert");
51
+ const runtimeError = kerror.wrap("plugin", "runtime");
52
52
  class BackendImport extends index_1.ApplicationManager {
53
53
  /**
54
54
  * Import mappings.
@@ -68,18 +68,17 @@ class BackendImport extends index_1.ApplicationManager {
68
68
  */
69
69
  mappings(mappings) {
70
70
  if (this._application.started) {
71
- throw runtimeError.get('already_started', 'import');
71
+ throw runtimeError.get("already_started", "import");
72
72
  }
73
73
  else if (!(0, safeObject_1.isPlainObject)(mappings)) {
74
- throw assertionError.get('invalid_type', 'mappings', 'object');
74
+ throw assertionError.get("invalid_type", "mappings", "object");
75
75
  }
76
76
  for (const index of Object.keys(mappings)) {
77
77
  if (!(0, safeObject_1.isPlainObject)(mappings[index])) {
78
- throw assertionError.get('invalid_type', `mappings.${index}`, 'object');
78
+ throw assertionError.get("invalid_type", `mappings.${index}`, "object");
79
79
  }
80
80
  // If some collections have already been defined, only their last mappings will be retained
81
- this._application._import.mappings[index] =
82
- Object.assign({}, this._application._import.mappings[index], mappings[index]);
81
+ this._application._import.mappings[index] = Object.assign({}, this._application._import.mappings[index], mappings[index]);
83
82
  }
84
83
  }
85
84
  /**
@@ -96,14 +95,13 @@ class BackendImport extends index_1.ApplicationManager {
96
95
  */
97
96
  profiles(profiles) {
98
97
  if (this._application.started) {
99
- throw runtimeError.get('already_started', 'import');
98
+ throw runtimeError.get("already_started", "import");
100
99
  }
101
100
  else if (!(0, safeObject_1.isPlainObject)(profiles)) {
102
- throw assertionError.get('invalid_type', 'profiles', 'object');
101
+ throw assertionError.get("invalid_type", "profiles", "object");
103
102
  }
104
103
  // If some profiles have already been defined, only their last definition will be retained
105
- this._application._import.profiles =
106
- Object.assign({}, this._application._import.profiles, profiles);
104
+ this._application._import.profiles = Object.assign({}, this._application._import.profiles, profiles);
107
105
  }
108
106
  /**
109
107
  * Import roles
@@ -119,14 +117,13 @@ class BackendImport extends index_1.ApplicationManager {
119
117
  */
120
118
  roles(roles) {
121
119
  if (this._application.started) {
122
- throw runtimeError.get('already_started', 'import');
120
+ throw runtimeError.get("already_started", "import");
123
121
  }
124
122
  else if (!(0, safeObject_1.isPlainObject)(roles)) {
125
- throw assertionError.get('invalid_type', 'roles', 'object');
123
+ throw assertionError.get("invalid_type", "roles", "object");
126
124
  }
127
125
  // If some roles have already been defined, only their last definition will be retained
128
- this._application._import.roles =
129
- Object.assign({}, this._application._import.roles, roles);
126
+ this._application._import.roles = Object.assign({}, this._application._import.roles, roles);
130
127
  }
131
128
  /**
132
129
  * Import user mappings.
@@ -144,10 +141,10 @@ class BackendImport extends index_1.ApplicationManager {
144
141
  */
145
142
  userMappings(mappings) {
146
143
  if (this._application.started) {
147
- throw runtimeError.get('already_started', 'import');
144
+ throw runtimeError.get("already_started", "import");
148
145
  }
149
146
  else if (!(0, safeObject_1.isPlainObject)(mappings)) {
150
- throw assertionError.get('invalid_type', 'mappings', 'object');
147
+ throw assertionError.get("invalid_type", "mappings", "object");
151
148
  }
152
149
  this._application._import.userMappings = mappings;
153
150
  }
@@ -165,20 +162,23 @@ class BackendImport extends index_1.ApplicationManager {
165
162
  */
166
163
  users(users, options = {}) {
167
164
  if (this._application.started) {
168
- throw runtimeError.get('already_started', 'import');
165
+ throw runtimeError.get("already_started", "import");
169
166
  }
170
167
  else if (!(0, safeObject_1.isPlainObject)(users)) {
171
- throw assertionError.get('invalid_type', 'users', 'object');
168
+ throw assertionError.get("invalid_type", "users", "object");
172
169
  }
173
170
  else if (options.onExistingUsers) {
174
- if (!(options.onExistingUsers === 'overwrite' || options.onExistingUsers === 'skip')) {
175
- throw assertionError.get('invalid_type', 'onExistingUsers', ['overwrite', 'skip']);
171
+ if (!(options.onExistingUsers === "overwrite" ||
172
+ options.onExistingUsers === "skip")) {
173
+ throw assertionError.get("invalid_type", "onExistingUsers", [
174
+ "overwrite",
175
+ "skip",
176
+ ]);
176
177
  }
177
178
  this._application._import.onExistingUsers = options.onExistingUsers;
178
179
  }
179
180
  // If some users have already been defined (before startup), only their last definition will be retained
180
- this._application._import.users =
181
- Object.assign({}, this._application._import.users, users);
181
+ this._application._import.users = Object.assign({}, this._application._import.users, users);
182
182
  }
183
183
  }
184
184
  exports.BackendImport = BackendImport;
@@ -1,5 +1,5 @@
1
- import { ApplicationManager, Backend } from './index';
2
- import { OpenApiDefinition } from '../../types';
1
+ import { ApplicationManager, Backend } from "./index";
2
+ import { OpenApiDefinition } from "../../types";
3
3
  export declare class BackendOpenApi extends ApplicationManager {
4
4
  /**
5
5
  * Application Open API definition