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.
- package/lib/api/controllers/adminController.js +94 -80
- package/lib/api/controllers/authController.js +239 -212
- package/lib/api/controllers/baseController.js +89 -51
- package/lib/api/controllers/bulkController.js +62 -49
- package/lib/api/controllers/clusterController.js +6 -8
- package/lib/api/controllers/collectionController.js +140 -129
- package/lib/api/controllers/debugController.d.ts +2 -2
- package/lib/api/controllers/debugController.js +33 -31
- package/lib/api/controllers/documentController.js +365 -274
- package/lib/api/controllers/index.js +13 -13
- package/lib/api/controllers/indexController.js +46 -50
- package/lib/api/controllers/memoryStorageController.js +410 -360
- package/lib/api/controllers/realtimeController.js +37 -36
- package/lib/api/controllers/securityController.js +553 -412
- package/lib/api/controllers/serverController.js +111 -104
- package/lib/api/documentExtractor.js +75 -68
- package/lib/api/funnel.js +411 -312
- package/lib/api/httpRoutes.js +1493 -324
- package/lib/api/openapi/OpenApiManager.d.ts +1 -1
- package/lib/api/openapi/OpenApiManager.js +22 -22
- package/lib/api/openapi/components/document/count.yaml +1 -1
- package/lib/api/openapi/components/document/create.yaml +2 -2
- package/lib/api/openapi/components/document/delete.yaml +1 -1
- package/lib/api/openapi/components/document/deleteByQuery.yaml +1 -1
- package/lib/api/openapi/components/document/exists.yaml +1 -1
- package/lib/api/openapi/components/document/get.yaml +2 -2
- package/lib/api/openapi/components/document/index.js +12 -12
- package/lib/api/openapi/components/document/replace.yaml +1 -1
- package/lib/api/openapi/components/document/scroll.yaml +1 -1
- package/lib/api/openapi/components/document/validate.yaml +1 -1
- package/lib/api/openapi/components/index.d.ts +2 -2
- package/lib/api/openapi/components/index.js +1 -1
- package/lib/api/openapi/components/security/index.js +1 -1
- package/lib/api/openapi/components/security/upsertUser.yaml +2 -3
- package/lib/api/openapi/index.d.ts +1 -1
- package/lib/api/openapi/openApiGenerator.d.ts +1 -1
- package/lib/api/openapi/openApiGenerator.js +7 -7
- package/lib/api/rateLimiter.js +12 -13
- package/lib/api/request/index.d.ts +4 -4
- package/lib/api/request/kuzzleRequest.d.ts +9 -9
- package/lib/api/request/kuzzleRequest.js +89 -87
- package/lib/api/request/requestContext.d.ts +2 -2
- package/lib/api/request/requestContext.js +17 -17
- package/lib/api/request/requestInput.d.ts +1 -1
- package/lib/api/request/requestInput.js +19 -19
- package/lib/api/request/requestResponse.d.ts +4 -4
- package/lib/api/request/requestResponse.js +31 -33
- package/lib/cluster/command.js +48 -44
- package/lib/cluster/idCardHandler.d.ts +1 -1
- package/lib/cluster/idCardHandler.js +15 -15
- package/lib/cluster/index.js +2 -2
- package/lib/cluster/node.js +301 -269
- package/lib/cluster/publisher.js +45 -46
- package/lib/cluster/state.d.ts +5 -5
- package/lib/cluster/state.js +8 -8
- package/lib/cluster/subscriber.js +163 -113
- package/lib/cluster/workers/IDCardRenewer.js +33 -32
- package/lib/config/default.config.d.ts +1 -1
- package/lib/config/default.config.js +212 -171
- package/lib/config/documentEventAliases.js +6 -6
- package/lib/config/index.js +161 -98
- package/lib/config/sdkCompatibility.json +8 -8
- package/lib/core/auth/formatProcessing.js +7 -7
- package/lib/core/auth/passportResponse.js +7 -7
- package/lib/core/auth/passportWrapper.js +34 -30
- package/lib/core/auth/tokenManager.d.ts +2 -2
- package/lib/core/auth/tokenManager.js +11 -10
- package/lib/core/backend/applicationManager.d.ts +1 -1
- package/lib/core/backend/applicationManager.js +2 -2
- package/lib/core/backend/backend.d.ts +3 -3
- package/lib/core/backend/backend.js +34 -31
- package/lib/core/backend/backendCluster.d.ts +2 -2
- package/lib/core/backend/backendCluster.js +5 -5
- package/lib/core/backend/backendConfig.d.ts +2 -2
- package/lib/core/backend/backendConfig.js +3 -3
- package/lib/core/backend/backendController.d.ts +2 -2
- package/lib/core/backend/backendController.js +9 -10
- package/lib/core/backend/backendErrors.d.ts +3 -3
- package/lib/core/backend/backendErrors.js +2 -1
- package/lib/core/backend/backendHook.d.ts +2 -2
- package/lib/core/backend/backendHook.js +5 -5
- package/lib/core/backend/backendImport.d.ts +3 -3
- package/lib/core/backend/backendImport.js +23 -23
- package/lib/core/backend/backendOpenApi.d.ts +2 -2
- package/lib/core/backend/backendOpenApi.js +16 -16
- package/lib/core/backend/backendPipe.d.ts +2 -2
- package/lib/core/backend/backendPipe.js +6 -6
- package/lib/core/backend/backendPlugin.d.ts +4 -4
- package/lib/core/backend/backendPlugin.js +14 -14
- package/lib/core/backend/backendStorage.d.ts +2 -2
- package/lib/core/backend/backendStorage.js +1 -2
- package/lib/core/backend/backendVault.d.ts +2 -2
- package/lib/core/backend/backendVault.js +3 -3
- package/lib/core/backend/index.d.ts +14 -14
- package/lib/core/backend/internalLogger.d.ts +1 -1
- package/lib/core/backend/internalLogger.js +5 -5
- package/lib/core/cache/cacheDbEnum.js +4 -4
- package/lib/core/cache/cacheEngine.js +79 -85
- package/lib/core/network/accessLogger.js +126 -120
- package/lib/core/network/clientConnection.js +5 -5
- package/lib/core/network/context.js +8 -8
- package/lib/core/network/entryPoint.js +100 -85
- package/lib/core/network/httpRouter/index.js +63 -60
- package/lib/core/network/httpRouter/routeHandler.js +18 -19
- package/lib/core/network/httpRouter/routePart.js +23 -19
- package/lib/core/network/protocolManifest.js +3 -3
- package/lib/core/network/protocols/httpMessage.js +8 -10
- package/lib/core/network/protocols/httpwsProtocol.js +305 -250
- package/lib/core/network/protocols/internalProtocol.js +27 -24
- package/lib/core/network/protocols/mqttProtocol.js +106 -96
- package/lib/core/network/protocols/protocol.js +20 -17
- package/lib/core/network/router.js +56 -46
- package/lib/core/plugin/plugin.js +151 -120
- package/lib/core/plugin/pluginContext.d.ts +7 -7
- package/lib/core/plugin/pluginContext.js +48 -44
- package/lib/core/plugin/pluginManifest.js +13 -12
- package/lib/core/plugin/pluginRepository.js +26 -27
- package/lib/core/plugin/pluginsManager.js +425 -304
- package/lib/core/plugin/privilegedContext.js +3 -3
- package/lib/core/realtime/actionEnum.js +1 -1
- package/lib/core/realtime/channel.d.ts +1 -1
- package/lib/core/realtime/channel.js +22 -22
- package/lib/core/realtime/connectionRooms.d.ts +1 -1
- package/lib/core/realtime/hotelClerk.d.ts +2 -2
- package/lib/core/realtime/hotelClerk.js +53 -50
- package/lib/core/realtime/index.js +5 -5
- package/lib/core/realtime/notification/document.js +25 -25
- package/lib/core/realtime/notification/index.js +4 -4
- package/lib/core/realtime/notification/server.js +3 -3
- package/lib/core/realtime/notification/user.js +4 -4
- package/lib/core/realtime/notifier.js +113 -75
- package/lib/core/realtime/room.d.ts +1 -1
- package/lib/core/realtime/subscription.d.ts +1 -1
- package/lib/core/realtime/subscription.js +1 -1
- package/lib/core/security/index.js +8 -8
- package/lib/core/security/profileRepository.d.ts +6 -6
- package/lib/core/security/profileRepository.js +48 -45
- package/lib/core/security/roleRepository.js +127 -115
- package/lib/core/security/securityLoader.js +70 -63
- package/lib/core/security/tokenRepository.js +132 -118
- package/lib/core/security/userRepository.js +104 -88
- package/lib/core/shared/KoncordeWrapper.d.ts +1 -1
- package/lib/core/shared/KoncordeWrapper.js +3 -1
- package/lib/core/shared/abstractManifest.js +22 -23
- package/lib/core/shared/repository.js +69 -67
- package/lib/core/shared/sdk/embeddedSdk.d.ts +2 -2
- package/lib/core/shared/sdk/embeddedSdk.js +36 -32
- package/lib/core/shared/sdk/funnelProtocol.d.ts +1 -1
- package/lib/core/shared/sdk/funnelProtocol.js +11 -11
- package/lib/core/shared/sdk/impersonatedSdk.js +19 -18
- package/lib/core/shared/store.js +127 -32
- package/lib/core/statistics/index.js +2 -2
- package/lib/core/statistics/statistics.js +99 -85
- package/lib/core/storage/clientAdapter.js +219 -136
- package/lib/core/storage/indexCache.js +3 -3
- package/lib/core/storage/storageEngine.js +10 -13
- package/lib/core/storage/storeScopeEnum.js +3 -3
- package/lib/core/validation/baseType.js +12 -10
- package/lib/core/validation/index.js +2 -2
- package/lib/core/validation/types/anything.js +4 -4
- package/lib/core/validation/types/boolean.js +7 -7
- package/lib/core/validation/types/date.js +165 -131
- package/lib/core/validation/types/email.js +18 -21
- package/lib/core/validation/types/enum.js +34 -21
- package/lib/core/validation/types/geoPoint.js +7 -7
- package/lib/core/validation/types/geoShape.js +148 -125
- package/lib/core/validation/types/integer.js +9 -9
- package/lib/core/validation/types/ipAddress.js +17 -19
- package/lib/core/validation/types/numeric.js +36 -29
- package/lib/core/validation/types/object.js +19 -19
- package/lib/core/validation/types/string.js +36 -29
- package/lib/core/validation/types/url.js +17 -19
- package/lib/core/validation/validation.js +422 -378
- package/lib/kerror/codes/1-services.json +7 -1
- package/lib/kerror/codes/4-plugin.json +2 -2
- package/lib/kerror/codes/index.js +85 -63
- package/lib/kerror/errors/badRequestError.d.ts +1 -1
- package/lib/kerror/errors/externalServiceError.d.ts +1 -1
- package/lib/kerror/errors/forbiddenError.d.ts +1 -1
- package/lib/kerror/errors/gatewayTimeoutError.d.ts +1 -1
- package/lib/kerror/errors/index.d.ts +15 -15
- package/lib/kerror/errors/internalError.d.ts +1 -1
- package/lib/kerror/errors/kuzzleError.d.ts +1 -1
- package/lib/kerror/errors/multipleErrorsError.d.ts +1 -1
- package/lib/kerror/errors/multipleErrorsError.js +1 -1
- package/lib/kerror/errors/notFoundError.d.ts +1 -1
- package/lib/kerror/errors/partialError.d.ts +1 -1
- package/lib/kerror/errors/partialError.js +1 -1
- package/lib/kerror/errors/pluginImplementationError.d.ts +1 -1
- package/lib/kerror/errors/pluginImplementationError.js +2 -1
- package/lib/kerror/errors/preconditionError.d.ts +1 -1
- package/lib/kerror/errors/serviceUnavailableError.d.ts +1 -1
- package/lib/kerror/errors/sizeLimitError.d.ts +1 -1
- package/lib/kerror/errors/tooManyRequestsError.d.ts +1 -1
- package/lib/kerror/errors/unauthorizedError.d.ts +1 -1
- package/lib/kerror/index.d.ts +3 -3
- package/lib/kerror/index.js +17 -16
- package/lib/kuzzle/dumpGenerator.js +130 -114
- package/lib/kuzzle/event/kuzzleEventEmitter.js +96 -70
- package/lib/kuzzle/event/pipeRunner.js +25 -24
- package/lib/kuzzle/event/waterfall.js +13 -15
- package/lib/kuzzle/index.js +2 -2
- package/lib/kuzzle/internalIndexHandler.js +80 -59
- package/lib/kuzzle/kuzzle.js +99 -99
- package/lib/kuzzle/kuzzleStateEnum.js +1 -1
- package/lib/kuzzle/log.js +23 -18
- package/lib/kuzzle/vault.js +34 -19
- package/lib/model/security/profile.d.ts +3 -3
- package/lib/model/security/profile.js +38 -37
- package/lib/model/security/rights.js +5 -5
- package/lib/model/security/role.d.ts +3 -3
- package/lib/model/security/role.js +25 -26
- package/lib/model/security/token.d.ts +1 -1
- package/lib/model/security/token.js +4 -4
- package/lib/model/security/user.d.ts +2 -2
- package/lib/model/security/user.js +9 -9
- package/lib/model/storage/apiKey.js +43 -33
- package/lib/model/storage/baseModel.js +49 -45
- package/lib/service/cache/redis.js +60 -55
- package/lib/service/service.js +17 -17
- package/lib/service/storage/elasticsearch.js +839 -755
- package/lib/service/storage/esWrapper.js +103 -86
- package/lib/service/storage/queryTranslator.js +52 -59
- package/lib/types/Controller.d.ts +3 -3
- package/lib/types/ControllerDefinition.d.ts +3 -3
- package/lib/types/DebugModule.d.ts +2 -2
- package/lib/types/DebugModule.js +1 -1
- package/lib/types/Global.d.ts +1 -1
- package/lib/types/HttpStream.d.ts +2 -1
- package/lib/types/HttpStream.js +7 -5
- package/lib/types/Kuzzle.d.ts +1 -1
- package/lib/types/KuzzleDocument.d.ts +1 -1
- package/lib/types/OpenApiDefinition.d.ts +1 -1
- package/lib/types/PasswordPolicy.d.ts +1 -1
- package/lib/types/Plugin.d.ts +6 -6
- package/lib/types/Plugin.js +2 -2
- package/lib/types/Policy.d.ts +1 -1
- package/lib/types/RequestPayload.d.ts +1 -1
- package/lib/types/ResponsePayload.d.ts +1 -1
- package/lib/types/Token.d.ts +1 -1
- package/lib/types/User.d.ts +1 -1
- package/lib/types/config/DumpConfiguration.d.ts +8 -8
- package/lib/types/config/HttpConfiguration.d.ts +1 -1
- package/lib/types/config/KuzzleConfiguration.d.ts +1 -1
- package/lib/types/config/LimitsConfiguration.d.ts +8 -8
- package/lib/types/config/PluginsConfiguration.d.ts +4 -4
- package/lib/types/config/SecurityConfiguration.d.ts +62 -62
- package/lib/types/config/ServerConfiguration.d.ts +55 -55
- package/lib/types/config/ServicesConfiguration.d.ts +2 -2
- package/lib/types/config/internalCache/InternalCacheRedisConfiguration.d.ts +10 -10
- package/lib/types/config/publicCache/PublicCacheRedisConfiguration.d.ts +3 -3
- package/lib/types/config/storageEngine/StorageEngineElasticsearchConfiguration.d.ts +194 -110
- package/lib/types/errors/ErrorDefinition.d.ts +1 -1
- package/lib/types/errors/ErrorDomains.d.ts +1 -1
- package/lib/types/index.d.ts +38 -38
- package/lib/types/realtime/RealtimeScope.d.ts +1 -1
- package/lib/types/realtime/RealtimeUsers.d.ts +1 -1
- package/lib/util/assertType.js +13 -11
- package/lib/util/async.d.ts +1 -0
- package/lib/util/async.js +61 -0
- package/lib/util/asyncStore.js +19 -21
- package/lib/util/bufferedPassThrough.d.ts +2 -2
- package/lib/util/bufferedPassThrough.js +4 -4
- package/lib/util/bytes.js +9 -13
- package/lib/util/crypto.js +1 -1
- package/lib/util/debug.js +5 -5
- package/lib/util/deprecate.js +24 -21
- package/lib/util/didYouMean.js +7 -7
- package/lib/util/dump-collection.d.ts +2 -2
- package/lib/util/dump-collection.js +26 -26
- package/lib/util/esRequest.d.ts +1 -0
- package/lib/util/esRequest.js +62 -0
- package/lib/util/extractFields.js +24 -25
- package/lib/util/inflector.js +5 -5
- package/lib/util/koncordeCompat.d.ts +2 -2
- package/lib/util/koncordeCompat.js +5 -5
- package/lib/util/memoize.js +3 -5
- package/lib/util/mutex.d.ts +19 -1
- package/lib/util/mutex.js +39 -12
- package/lib/util/name-generator.js +1331 -1331
- package/lib/util/promback.js +8 -10
- package/lib/util/readYamlFile.d.ts +1 -1
- package/lib/util/readYamlFile.js +1 -1
- package/lib/util/requestAssertions.js +34 -34
- package/lib/util/safeObject.js +5 -5
- package/lib/util/stackTrace.js +20 -22
- package/lib/util/wildcard.js +15 -15
- package/package.json +6 -6
- package/npm-shrinkwrap.json +0 -19422
|
@@ -19,36 +19,37 @@
|
|
|
19
19
|
* limitations under the License.
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
"use strict";
|
|
23
23
|
|
|
24
|
-
const kerror = require(
|
|
25
|
-
const { isPlainObject } = require(
|
|
26
|
-
const { NativeController } = require(
|
|
24
|
+
const kerror = require("../../kerror");
|
|
25
|
+
const { isPlainObject } = require("../../util/safeObject");
|
|
26
|
+
const { NativeController } = require("./baseController");
|
|
27
27
|
|
|
28
28
|
/**
|
|
29
29
|
* @class CollectionController
|
|
30
30
|
*/
|
|
31
31
|
class CollectionController extends NativeController {
|
|
32
|
-
constructor
|
|
32
|
+
constructor() {
|
|
33
33
|
super([
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
34
|
+
"create",
|
|
35
|
+
"delete",
|
|
36
|
+
"deleteSpecifications",
|
|
37
|
+
"exists",
|
|
38
|
+
"getMapping",
|
|
39
|
+
"getSpecifications",
|
|
40
|
+
"list",
|
|
41
|
+
"refresh",
|
|
42
|
+
"scrollSpecifications",
|
|
43
|
+
"searchSpecifications",
|
|
44
|
+
"truncate",
|
|
45
|
+
"update",
|
|
46
|
+
"updateMapping",
|
|
47
|
+
"updateSpecifications",
|
|
48
|
+
"validateSpecifications",
|
|
49
49
|
]);
|
|
50
50
|
|
|
51
|
-
this.defaultScrollTTL =
|
|
51
|
+
this.defaultScrollTTL =
|
|
52
|
+
global.kuzzle.config.services.storageEngine.defaults.scrollTTL;
|
|
52
53
|
}
|
|
53
54
|
|
|
54
55
|
/**
|
|
@@ -57,18 +58,21 @@ class CollectionController extends NativeController {
|
|
|
57
58
|
* @param {Request} request
|
|
58
59
|
* @returns {Promise.<Object>}
|
|
59
60
|
*/
|
|
60
|
-
async updateMapping
|
|
61
|
-
request.addDeprecation(
|
|
62
|
-
|
|
61
|
+
async updateMapping(request) {
|
|
62
|
+
request.addDeprecation(
|
|
63
|
+
"2.1.0",
|
|
64
|
+
'This action has been deprecated since Kuzzle version 2.1.0. This feature might be removed in a future major version. To update a collection, use this API action instead: "collection:update".'
|
|
65
|
+
);
|
|
63
66
|
|
|
64
67
|
const { index, collection } = request.getIndexAndCollection();
|
|
65
68
|
const mappings = request.getBody();
|
|
66
69
|
|
|
67
70
|
const updated = await this.ask(
|
|
68
|
-
|
|
71
|
+
"core:storage:public:mappings:update",
|
|
69
72
|
index,
|
|
70
73
|
collection,
|
|
71
|
-
mappings
|
|
74
|
+
mappings
|
|
75
|
+
);
|
|
72
76
|
|
|
73
77
|
return this._filterMappingResponse(updated);
|
|
74
78
|
}
|
|
@@ -79,16 +83,16 @@ class CollectionController extends NativeController {
|
|
|
79
83
|
* @param {Request} request
|
|
80
84
|
* @returns {Promise.<Object>}
|
|
81
85
|
*/
|
|
82
|
-
async getMapping
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
includeKuzzleMeta = request.getBoolean('includeKuzzleMeta');
|
|
86
|
+
async getMapping(request) {
|
|
87
|
+
const { index, collection } = request.getIndexAndCollection(),
|
|
88
|
+
includeKuzzleMeta = request.getBoolean("includeKuzzleMeta");
|
|
86
89
|
|
|
87
90
|
const mapping = await this.ask(
|
|
88
|
-
|
|
91
|
+
"core:storage:public:mappings:get",
|
|
89
92
|
index,
|
|
90
93
|
collection,
|
|
91
|
-
{ includeKuzzleMeta }
|
|
94
|
+
{ includeKuzzleMeta }
|
|
95
|
+
);
|
|
92
96
|
|
|
93
97
|
return this._filterMappingResponse(mapping);
|
|
94
98
|
}
|
|
@@ -99,20 +103,22 @@ class CollectionController extends NativeController {
|
|
|
99
103
|
* @param {Request} request
|
|
100
104
|
* @returns {Promise.<Object>}
|
|
101
105
|
*/
|
|
102
|
-
getSpecifications
|
|
106
|
+
getSpecifications(request) {
|
|
103
107
|
const { index, collection } = request.getIndexAndCollection();
|
|
104
108
|
|
|
105
|
-
return global.kuzzle.internalIndex
|
|
106
|
-
.
|
|
107
|
-
.
|
|
109
|
+
return global.kuzzle.internalIndex
|
|
110
|
+
.get("validations", `${index}#${collection}`)
|
|
111
|
+
.then((response) => response._source)
|
|
112
|
+
.catch((error) => {
|
|
108
113
|
if (error.status === 404) {
|
|
109
114
|
throw kerror.getFrom(
|
|
110
115
|
error,
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
116
|
+
"validation",
|
|
117
|
+
"assert",
|
|
118
|
+
"not_found",
|
|
114
119
|
index,
|
|
115
|
-
collection
|
|
120
|
+
collection
|
|
121
|
+
);
|
|
116
122
|
}
|
|
117
123
|
|
|
118
124
|
throw error;
|
|
@@ -125,24 +131,20 @@ class CollectionController extends NativeController {
|
|
|
125
131
|
* @param {Request} request
|
|
126
132
|
* @returns {Promise.<Object>}
|
|
127
133
|
*/
|
|
128
|
-
async searchSpecifications
|
|
134
|
+
async searchSpecifications(request) {
|
|
129
135
|
const { from, size, scrollTTL, searchBody } = request.getSearchParams();
|
|
130
136
|
|
|
131
|
-
if (!
|
|
132
|
-
throw kerror.get(
|
|
133
|
-
'api',
|
|
134
|
-
'assert',
|
|
135
|
-
'invalid_type',
|
|
136
|
-
'body.query',
|
|
137
|
-
'object');
|
|
137
|
+
if (!isPlainObject(searchBody)) {
|
|
138
|
+
throw kerror.get("api", "assert", "invalid_type", "body.query", "object");
|
|
138
139
|
}
|
|
139
140
|
|
|
140
141
|
this.assertNotExceedMaxFetch(size - from);
|
|
141
142
|
|
|
142
143
|
const { hits, scrollId, total } = await global.kuzzle.internalIndex.search(
|
|
143
|
-
|
|
144
|
+
"validations",
|
|
144
145
|
searchBody,
|
|
145
|
-
{ from, scroll: scrollTTL, size }
|
|
146
|
+
{ from, scroll: scrollTTL, size }
|
|
147
|
+
);
|
|
146
148
|
|
|
147
149
|
return { hits, scrollId, total };
|
|
148
150
|
}
|
|
@@ -153,16 +155,16 @@ class CollectionController extends NativeController {
|
|
|
153
155
|
* @param {Request} request
|
|
154
156
|
* @returns {Promise.<object>}
|
|
155
157
|
*/
|
|
156
|
-
async scrollSpecifications
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
id = request.getString('scrollId');
|
|
158
|
+
async scrollSpecifications(request) {
|
|
159
|
+
const ttl = request.getString("scroll", this.defaultScrollTTL),
|
|
160
|
+
id = request.getString("scrollId");
|
|
160
161
|
|
|
161
|
-
return global.kuzzle.internalIndex
|
|
162
|
+
return global.kuzzle.internalIndex
|
|
163
|
+
.scroll(id, ttl)
|
|
162
164
|
.then(({ scrollId, hits, total }) => ({
|
|
163
165
|
hits,
|
|
164
166
|
scrollId,
|
|
165
|
-
total
|
|
167
|
+
total,
|
|
166
168
|
}));
|
|
167
169
|
}
|
|
168
170
|
|
|
@@ -172,7 +174,7 @@ class CollectionController extends NativeController {
|
|
|
172
174
|
* @param {Request} request
|
|
173
175
|
* @returns {Promise.<Object>}
|
|
174
176
|
*/
|
|
175
|
-
async updateSpecifications
|
|
177
|
+
async updateSpecifications(request) {
|
|
176
178
|
const { index, collection } = request.getIndexAndCollection();
|
|
177
179
|
const specifications = request.getBody();
|
|
178
180
|
|
|
@@ -180,26 +182,29 @@ class CollectionController extends NativeController {
|
|
|
180
182
|
index,
|
|
181
183
|
collection,
|
|
182
184
|
specifications,
|
|
183
|
-
true
|
|
185
|
+
true
|
|
186
|
+
);
|
|
184
187
|
|
|
185
|
-
if (!
|
|
188
|
+
if (!isValid) {
|
|
186
189
|
throw kerror.get(
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
errors.join(
|
|
190
|
+
"validation",
|
|
191
|
+
"assert",
|
|
192
|
+
"invalid_specifications",
|
|
193
|
+
errors.join("\n\t- ")
|
|
194
|
+
);
|
|
191
195
|
}
|
|
192
196
|
|
|
193
197
|
await global.kuzzle.internalIndex.createOrReplace(
|
|
194
|
-
|
|
198
|
+
"validations",
|
|
195
199
|
`${index}#${collection}`,
|
|
196
200
|
{
|
|
197
201
|
collection,
|
|
198
202
|
index,
|
|
199
203
|
validation: specifications,
|
|
200
|
-
}
|
|
204
|
+
}
|
|
205
|
+
);
|
|
201
206
|
|
|
202
|
-
await global.kuzzle.internalIndex.refreshCollection(
|
|
207
|
+
await global.kuzzle.internalIndex.refreshCollection("validations");
|
|
203
208
|
await global.kuzzle.validation.curateSpecification();
|
|
204
209
|
|
|
205
210
|
return specifications;
|
|
@@ -211,14 +216,13 @@ class CollectionController extends NativeController {
|
|
|
211
216
|
* @param {Request} request
|
|
212
217
|
* @returns {Promise.<Object>}
|
|
213
218
|
*/
|
|
214
|
-
async deleteSpecifications
|
|
219
|
+
async deleteSpecifications(request) {
|
|
215
220
|
const { index, collection } = request.getIndexAndCollection();
|
|
216
221
|
const specificationsId = `${index}#${collection}`;
|
|
217
222
|
|
|
218
223
|
try {
|
|
219
|
-
await global.kuzzle.internalIndex.delete(
|
|
220
|
-
}
|
|
221
|
-
catch (error) {
|
|
224
|
+
await global.kuzzle.internalIndex.delete("validations", specificationsId);
|
|
225
|
+
} catch (error) {
|
|
222
226
|
if (error.status === 404) {
|
|
223
227
|
return {
|
|
224
228
|
acknowledged: true,
|
|
@@ -228,11 +232,11 @@ class CollectionController extends NativeController {
|
|
|
228
232
|
throw error;
|
|
229
233
|
}
|
|
230
234
|
|
|
231
|
-
await global.kuzzle.internalIndex.refreshCollection(
|
|
235
|
+
await global.kuzzle.internalIndex.refreshCollection("validations");
|
|
232
236
|
await global.kuzzle.validation.curateSpecification();
|
|
233
237
|
|
|
234
238
|
return {
|
|
235
|
-
acknowledged: true
|
|
239
|
+
acknowledged: true,
|
|
236
240
|
};
|
|
237
241
|
}
|
|
238
242
|
|
|
@@ -242,28 +246,23 @@ class CollectionController extends NativeController {
|
|
|
242
246
|
* @param {Request} request
|
|
243
247
|
* @returns {Promise.<Object>}
|
|
244
248
|
*/
|
|
245
|
-
validateSpecifications
|
|
246
|
-
const
|
|
247
|
-
{ index, collection } = request.getIndexAndCollection(),
|
|
249
|
+
validateSpecifications(request) {
|
|
250
|
+
const { index, collection } = request.getIndexAndCollection(),
|
|
248
251
|
specifications = request.getBody();
|
|
249
252
|
|
|
250
|
-
return global.kuzzle.validation
|
|
251
|
-
index,
|
|
252
|
-
collection,
|
|
253
|
-
specifications,
|
|
254
|
-
true
|
|
255
|
-
)
|
|
253
|
+
return global.kuzzle.validation
|
|
254
|
+
.validateFormat(index, collection, specifications, true)
|
|
256
255
|
.then(({ isValid, errors }) => {
|
|
257
|
-
if (!
|
|
256
|
+
if (!isValid) {
|
|
258
257
|
return {
|
|
259
|
-
description:
|
|
258
|
+
description: "Some errors with provided specifications.",
|
|
260
259
|
details: errors,
|
|
261
|
-
valid: false
|
|
260
|
+
valid: false,
|
|
262
261
|
};
|
|
263
262
|
}
|
|
264
263
|
|
|
265
264
|
return {
|
|
266
|
-
valid: true
|
|
265
|
+
valid: true,
|
|
267
266
|
};
|
|
268
267
|
});
|
|
269
268
|
}
|
|
@@ -274,13 +273,17 @@ class CollectionController extends NativeController {
|
|
|
274
273
|
* @param {KuzzleRequest} request
|
|
275
274
|
* @returns {Promise.<Object>}
|
|
276
275
|
*/
|
|
277
|
-
async truncate
|
|
276
|
+
async truncate(request) {
|
|
278
277
|
const { index, collection } = request.getIndexAndCollection();
|
|
279
278
|
|
|
280
|
-
await this.ask(
|
|
279
|
+
await this.ask(
|
|
280
|
+
"core:storage:public:collection:truncate",
|
|
281
|
+
index,
|
|
282
|
+
collection
|
|
283
|
+
);
|
|
281
284
|
|
|
282
285
|
return {
|
|
283
|
-
acknowledged: true
|
|
286
|
+
acknowledged: true,
|
|
284
287
|
};
|
|
285
288
|
}
|
|
286
289
|
|
|
@@ -288,35 +291,44 @@ class CollectionController extends NativeController {
|
|
|
288
291
|
* @param {Request} request
|
|
289
292
|
* @returns {Promise.<Object>}
|
|
290
293
|
*/
|
|
291
|
-
async list
|
|
294
|
+
async list(request) {
|
|
292
295
|
const index = request.getIndex();
|
|
293
|
-
const from = request.getInteger(
|
|
294
|
-
const size = request.getInteger(
|
|
295
|
-
const type = request.getString(
|
|
296
|
+
const from = request.getInteger("from", 0);
|
|
297
|
+
const size = request.getInteger("size", 0);
|
|
298
|
+
const type = request.getString("type", "all");
|
|
296
299
|
|
|
297
|
-
if (!
|
|
298
|
-
throw kerror.get(
|
|
300
|
+
if (!["all", "stored", "realtime"].includes(type)) {
|
|
301
|
+
throw kerror.get(
|
|
302
|
+
"api",
|
|
303
|
+
"assert",
|
|
304
|
+
"invalid_argument",
|
|
305
|
+
'"all", "stored", "realtime"'
|
|
306
|
+
);
|
|
299
307
|
}
|
|
300
308
|
|
|
301
309
|
if (request.input.args.type) {
|
|
302
|
-
request.addDeprecation(
|
|
303
|
-
|
|
310
|
+
request.addDeprecation(
|
|
311
|
+
"2.10.2",
|
|
312
|
+
'The "type" argument and this route returning a list of realtime collections have both been deprecated since Kuzzle version 2.10.1. This feature might be removed in a future major version. To get a list of realtime collections, use this API action instead: "realtime:list".'
|
|
313
|
+
);
|
|
304
314
|
}
|
|
305
315
|
|
|
306
316
|
let collections = [];
|
|
307
317
|
|
|
308
|
-
if (type ===
|
|
309
|
-
const list = await this.ask(
|
|
310
|
-
collections = list.map(name => ({ name, type:
|
|
318
|
+
if (type === "realtime" || type === "all") {
|
|
319
|
+
const list = await this.ask("core:realtime:collections:get", index);
|
|
320
|
+
collections = list.map((name) => ({ name, type: "realtime" }));
|
|
311
321
|
}
|
|
312
322
|
|
|
313
|
-
if (type !==
|
|
323
|
+
if (type !== "realtime") {
|
|
314
324
|
const publicCollections = await this.ask(
|
|
315
|
-
|
|
316
|
-
index
|
|
325
|
+
"core:storage:public:collection:list",
|
|
326
|
+
index
|
|
327
|
+
);
|
|
317
328
|
|
|
318
329
|
collections = collections.concat(
|
|
319
|
-
publicCollections.map(name => ({ name, type:
|
|
330
|
+
publicCollections.map((name) => ({ name, type: "stored" }))
|
|
331
|
+
);
|
|
320
332
|
}
|
|
321
333
|
|
|
322
334
|
collections.sort((a, b) => {
|
|
@@ -333,10 +345,10 @@ class CollectionController extends NativeController {
|
|
|
333
345
|
* @param {Request} request
|
|
334
346
|
* @returns {Promise.<boolean>}
|
|
335
347
|
*/
|
|
336
|
-
exists
|
|
348
|
+
exists(request) {
|
|
337
349
|
const { index, collection } = request.getIndexAndCollection();
|
|
338
350
|
|
|
339
|
-
return this.ask(
|
|
351
|
+
return this.ask("core:storage:public:collection:exist", index, collection);
|
|
340
352
|
}
|
|
341
353
|
|
|
342
354
|
/**
|
|
@@ -346,7 +358,7 @@ class CollectionController extends NativeController {
|
|
|
346
358
|
* @param {Request} request
|
|
347
359
|
* @returns {Promise.<Object>}
|
|
348
360
|
*/
|
|
349
|
-
async create
|
|
361
|
+
async create(request) {
|
|
350
362
|
const body = request.getBody({});
|
|
351
363
|
const { index, collection } = request.getIndexAndCollection();
|
|
352
364
|
|
|
@@ -355,18 +367,20 @@ class CollectionController extends NativeController {
|
|
|
355
367
|
// @deprecated sending directly the mappings is deprecated since 2.1.0
|
|
356
368
|
if (body.properties || body.dynamic || body._meta) {
|
|
357
369
|
config.mappings = body;
|
|
358
|
-
request.addDeprecation(
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
370
|
+
request.addDeprecation(
|
|
371
|
+
"2.1.0",
|
|
372
|
+
'Using "properties", "dynamic" or "_meta" fields in the body has been deprecated since Kuzzle version 2.1.0. This feature might be removed in a future major version. Use "settings" and "mappings" fields instead'
|
|
373
|
+
);
|
|
374
|
+
} else {
|
|
362
375
|
config = body;
|
|
363
376
|
}
|
|
364
377
|
|
|
365
378
|
await this.ask(
|
|
366
|
-
|
|
379
|
+
"core:storage:public:collection:create",
|
|
367
380
|
index,
|
|
368
381
|
collection,
|
|
369
|
-
config
|
|
382
|
+
config
|
|
383
|
+
);
|
|
370
384
|
|
|
371
385
|
return { acknowledged: true };
|
|
372
386
|
}
|
|
@@ -377,16 +391,16 @@ class CollectionController extends NativeController {
|
|
|
377
391
|
* @param {Request} request
|
|
378
392
|
* @returns {Promise.<Object>}
|
|
379
393
|
*/
|
|
380
|
-
async update
|
|
381
|
-
const
|
|
382
|
-
config = request.getBody({}),
|
|
394
|
+
async update(request) {
|
|
395
|
+
const config = request.getBody({}),
|
|
383
396
|
{ index, collection } = request.getIndexAndCollection();
|
|
384
397
|
|
|
385
398
|
await this.ask(
|
|
386
|
-
|
|
399
|
+
"core:storage:public:collection:update",
|
|
387
400
|
index,
|
|
388
401
|
collection,
|
|
389
|
-
config
|
|
402
|
+
config
|
|
403
|
+
);
|
|
390
404
|
|
|
391
405
|
return null;
|
|
392
406
|
}
|
|
@@ -397,10 +411,10 @@ class CollectionController extends NativeController {
|
|
|
397
411
|
* @param {Request} request
|
|
398
412
|
* @returns {Promise.<null>}
|
|
399
413
|
*/
|
|
400
|
-
async refresh
|
|
414
|
+
async refresh(request) {
|
|
401
415
|
const { index, collection } = request.getIndexAndCollection();
|
|
402
416
|
|
|
403
|
-
await this.ask(
|
|
417
|
+
await this.ask("core:storage:public:collection:refresh", index, collection);
|
|
404
418
|
|
|
405
419
|
return null;
|
|
406
420
|
}
|
|
@@ -413,15 +427,14 @@ class CollectionController extends NativeController {
|
|
|
413
427
|
*
|
|
414
428
|
* @returns {Promise.<null>}
|
|
415
429
|
*/
|
|
416
|
-
async delete
|
|
430
|
+
async delete(request) {
|
|
417
431
|
const { index, collection } = request.getIndexAndCollection();
|
|
418
432
|
|
|
419
|
-
await this.ask(
|
|
433
|
+
await this.ask("core:storage:public:collection:delete", index, collection);
|
|
420
434
|
|
|
421
435
|
return null;
|
|
422
436
|
}
|
|
423
437
|
|
|
424
|
-
|
|
425
438
|
/**
|
|
426
439
|
* Uses from and size to paginate response results
|
|
427
440
|
* If type is "all", stored collections are prioritary
|
|
@@ -431,12 +444,11 @@ class CollectionController extends NativeController {
|
|
|
431
444
|
* @param {Object} response
|
|
432
445
|
* @returns {Object} { collections, from, size }
|
|
433
446
|
*/
|
|
434
|
-
_paginateCollections
|
|
447
|
+
_paginateCollections(from, size, response) {
|
|
435
448
|
if (from || size) {
|
|
436
449
|
if (from) {
|
|
437
450
|
response.from = Number.parseInt(from);
|
|
438
|
-
}
|
|
439
|
-
else {
|
|
451
|
+
} else {
|
|
440
452
|
response.from = 0;
|
|
441
453
|
}
|
|
442
454
|
|
|
@@ -447,8 +459,7 @@ class CollectionController extends NativeController {
|
|
|
447
459
|
response.from,
|
|
448
460
|
response.from + response.size
|
|
449
461
|
);
|
|
450
|
-
}
|
|
451
|
-
else {
|
|
462
|
+
} else {
|
|
452
463
|
response.collections = response.collections.slice(response.from);
|
|
453
464
|
}
|
|
454
465
|
}
|
|
@@ -461,11 +472,11 @@ class CollectionController extends NativeController {
|
|
|
461
472
|
* @param {Object} mapping - raw ES mapping
|
|
462
473
|
* @returns {Object}
|
|
463
474
|
*/
|
|
464
|
-
_filterMappingResponse
|
|
475
|
+
_filterMappingResponse(mapping) {
|
|
465
476
|
return {
|
|
466
477
|
_meta: mapping._meta,
|
|
467
478
|
dynamic: mapping.dynamic,
|
|
468
|
-
properties: mapping.properties
|
|
479
|
+
properties: mapping.properties,
|
|
469
480
|
};
|
|
470
481
|
}
|
|
471
482
|
}
|