kuzzle 2.19.0 → 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
|
@@ -32,38 +32,38 @@ class OpenApiManager {
|
|
|
32
32
|
constructor(applicationDefinition, kuzzleRoutes, pluginsRoutes) {
|
|
33
33
|
/* eslint-disable sort-keys */
|
|
34
34
|
this.kuzzleDefinition = {
|
|
35
|
-
swagger:
|
|
35
|
+
swagger: "2.0",
|
|
36
36
|
info: {
|
|
37
|
-
title:
|
|
38
|
-
description:
|
|
37
|
+
title: "Kuzzle API",
|
|
38
|
+
description: "Kuzzle HTTP API definition",
|
|
39
39
|
contact: {
|
|
40
|
-
name:
|
|
41
|
-
url:
|
|
42
|
-
email:
|
|
43
|
-
discord:
|
|
40
|
+
name: "Kuzzle team",
|
|
41
|
+
url: "https://kuzzle.io",
|
|
42
|
+
email: "support@kuzzle.io",
|
|
43
|
+
discord: "http://join.discord.kuzzle.io",
|
|
44
44
|
},
|
|
45
45
|
license: {
|
|
46
|
-
name:
|
|
47
|
-
url:
|
|
46
|
+
name: "Apache 2",
|
|
47
|
+
url: "http://opensource.org/licenses/apache2.0",
|
|
48
48
|
},
|
|
49
|
-
version: package_json_1.version
|
|
49
|
+
version: package_json_1.version,
|
|
50
50
|
},
|
|
51
51
|
externalDocs: {
|
|
52
|
-
description:
|
|
53
|
-
url:
|
|
52
|
+
description: "Kuzzle API Documentation",
|
|
53
|
+
url: "https://docs.kuzzle.io/core/2/api/",
|
|
54
54
|
},
|
|
55
55
|
servers: [
|
|
56
56
|
{
|
|
57
|
-
url:
|
|
58
|
-
description:
|
|
57
|
+
url: "https://{baseUrl}:{port}",
|
|
58
|
+
description: "Kuzzle Base Url",
|
|
59
59
|
variables: {
|
|
60
|
-
baseUrl: { default:
|
|
61
|
-
port: { default: 7512 }
|
|
60
|
+
baseUrl: { default: "localhost" },
|
|
61
|
+
port: { default: 7512 },
|
|
62
62
|
},
|
|
63
|
-
}
|
|
63
|
+
},
|
|
64
64
|
],
|
|
65
65
|
tags: [],
|
|
66
|
-
schemes: [
|
|
66
|
+
schemes: ["https", "http"],
|
|
67
67
|
paths: {},
|
|
68
68
|
components: {
|
|
69
69
|
...components_1.OpenApiPayloadsDefinitions,
|
|
@@ -83,8 +83,8 @@ class OpenApiManager {
|
|
|
83
83
|
security: {
|
|
84
84
|
...components_1.OpenApiSecurityUpsertUserComponent,
|
|
85
85
|
...components_1.OpenApiDocumentmCreateOrReplaceComponent,
|
|
86
|
-
}
|
|
87
|
-
}
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
88
|
};
|
|
89
89
|
this.applicationDefinition = applicationDefinition;
|
|
90
90
|
(0, openApiGenerator_1.generateOpenApi)(kuzzleRoutes, this.kuzzleDefinition);
|
|
@@ -92,8 +92,8 @@ class OpenApiManager {
|
|
|
92
92
|
this.registerAskEvents();
|
|
93
93
|
}
|
|
94
94
|
registerAskEvents() {
|
|
95
|
-
global.kuzzle.onAsk(
|
|
96
|
-
global.kuzzle.onAsk(
|
|
95
|
+
global.kuzzle.onAsk("core:api:openapi:kuzzle", () => this.kuzzleDefinition);
|
|
96
|
+
global.kuzzle.onAsk("core:api:openapi:app", () => this.applicationDefinition);
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
exports.OpenApiManager = OpenApiManager;
|
|
@@ -21,7 +21,7 @@ DocumentCreate:
|
|
|
21
21
|
200:
|
|
22
22
|
description: "Creates a new document in the persistent data storage."
|
|
23
23
|
schema:
|
|
24
|
-
|
|
24
|
+
$ref: "#/components/document/DocumentCreateResponse"
|
|
25
25
|
|
|
26
26
|
components:
|
|
27
27
|
schemas:
|
|
@@ -43,4 +43,4 @@ components:
|
|
|
43
43
|
_version:
|
|
44
44
|
type: "integer"
|
|
45
45
|
_sources:
|
|
46
|
-
type: "object"
|
|
46
|
+
type: "object"
|
|
@@ -22,7 +22,7 @@ DocumentGet:
|
|
|
22
22
|
200:
|
|
23
23
|
description: "Gets a document."
|
|
24
24
|
schema:
|
|
25
|
-
|
|
25
|
+
$ref: "#/components/document/DocumentGetResponse"
|
|
26
26
|
|
|
27
27
|
components:
|
|
28
28
|
schemas:
|
|
@@ -65,4 +65,4 @@ components:
|
|
|
65
65
|
updater:
|
|
66
66
|
type:
|
|
67
67
|
- integer
|
|
68
|
-
- null
|
|
68
|
+
- null
|
|
@@ -4,62 +4,62 @@ exports.OpenApiDocumentmCreateOrReplaceComponent = exports.OpenApiDocumentmCreat
|
|
|
4
4
|
const readYamlFile_1 = require("../../../../util/readYamlFile");
|
|
5
5
|
// reading the description of the Count action in the controller document.
|
|
6
6
|
// The yaml objects are then stored in the variables below
|
|
7
|
-
const countObject = (0, readYamlFile_1.readYamlFile)(__dirname +
|
|
7
|
+
const countObject = (0, readYamlFile_1.readYamlFile)(__dirname + "/count.yaml");
|
|
8
8
|
exports.OpenApiDocumentCount = countObject.DocumentCount;
|
|
9
9
|
exports.OpenApiDocumentCountComponent = countObject.components.schemas;
|
|
10
10
|
// reading the description of the Create action in the controller document.
|
|
11
11
|
// The yaml objects are then stored in the variables below
|
|
12
|
-
const createObject = (0, readYamlFile_1.readYamlFile)(__dirname +
|
|
12
|
+
const createObject = (0, readYamlFile_1.readYamlFile)(__dirname + "/create.yaml");
|
|
13
13
|
exports.OpenApiDocumentCreate = createObject.DocumentCreate;
|
|
14
14
|
exports.OpenApiDocumentCreateComponent = createObject.components.schemas;
|
|
15
15
|
// reading the description of the CreateOrReplace action in the controller document.
|
|
16
16
|
// The yaml objects are then stored in the variables below
|
|
17
|
-
const createOrReplaceObject = (0, readYamlFile_1.readYamlFile)(__dirname +
|
|
17
|
+
const createOrReplaceObject = (0, readYamlFile_1.readYamlFile)(__dirname + "/createOrReplace.yaml");
|
|
18
18
|
exports.OpenApiDocumentCreateOrReplace = createOrReplaceObject.DocumentCreateOrReplace;
|
|
19
19
|
exports.OpenApiDocumentCreateOrReplaceComponent = createOrReplaceObject.components.schemas;
|
|
20
20
|
// reading the description of the Get action in the controller document.
|
|
21
21
|
// The yaml objects are then stored in the variables below
|
|
22
|
-
const getObject = (0, readYamlFile_1.readYamlFile)(__dirname +
|
|
22
|
+
const getObject = (0, readYamlFile_1.readYamlFile)(__dirname + "/get.yaml");
|
|
23
23
|
exports.OpenApiDocumentGet = getObject.DocumentGet;
|
|
24
24
|
exports.OpenApiDocumentGetComponent = getObject.components.schemas;
|
|
25
25
|
// reading the description of the Replace action in the controller document.
|
|
26
26
|
// The yaml objects are then stored in the variables below
|
|
27
|
-
const replaceObject = (0, readYamlFile_1.readYamlFile)(__dirname +
|
|
27
|
+
const replaceObject = (0, readYamlFile_1.readYamlFile)(__dirname + "/replace.yaml");
|
|
28
28
|
exports.OpenApiDocumentReplace = replaceObject.DocumentReplace;
|
|
29
29
|
exports.OpenApiDocumentReplaceComponent = replaceObject.components.schemas;
|
|
30
30
|
// reading the description of the Exists action in the controller document.
|
|
31
31
|
// The yaml objects are then stored in the variables below
|
|
32
|
-
const existsObject = (0, readYamlFile_1.readYamlFile)(__dirname +
|
|
32
|
+
const existsObject = (0, readYamlFile_1.readYamlFile)(__dirname + "/exists.yaml");
|
|
33
33
|
exports.OpenApiDocumentExists = existsObject.DocumentExists;
|
|
34
34
|
exports.OpenApiDocumentExistsComponent = existsObject.components.schemas;
|
|
35
35
|
// reading the description of the Update action in the controller document.
|
|
36
36
|
// The yaml objects are then stored in the variables below
|
|
37
|
-
const updateObject = (0, readYamlFile_1.readYamlFile)(__dirname +
|
|
37
|
+
const updateObject = (0, readYamlFile_1.readYamlFile)(__dirname + "/update.yaml");
|
|
38
38
|
exports.OpenApiDocumentUpdate = updateObject.DocumentUpdate;
|
|
39
39
|
exports.OpenApiDocumentUpdateComponent = updateObject.components.schemas;
|
|
40
40
|
// reading the description of the Scroll action in the controller document.
|
|
41
41
|
// The yaml objects are then stored in the variables below
|
|
42
|
-
const scrollObject = (0, readYamlFile_1.readYamlFile)(__dirname +
|
|
42
|
+
const scrollObject = (0, readYamlFile_1.readYamlFile)(__dirname + "/scroll.yaml");
|
|
43
43
|
exports.OpenApiDocumentScroll = scrollObject.DocumentScroll;
|
|
44
44
|
exports.OpenApiDocumentScrollComponent = scrollObject.components.schemas;
|
|
45
45
|
// reading the description of the Delete action in the controller document.
|
|
46
46
|
// The yaml objects are then stored in the variables below
|
|
47
|
-
const deleteObject = (0, readYamlFile_1.readYamlFile)(__dirname +
|
|
47
|
+
const deleteObject = (0, readYamlFile_1.readYamlFile)(__dirname + "/delete.yaml");
|
|
48
48
|
exports.OpenApiDocumentDelete = deleteObject.DocumentDelete;
|
|
49
49
|
exports.OpenApiDocumentDeleteComponent = deleteObject.components.schemas;
|
|
50
50
|
// reading the description of the DeleteByQuery action in the controller document.
|
|
51
51
|
// The yaml objects are then stored in the variables below
|
|
52
|
-
const deleteByQueryObject = (0, readYamlFile_1.readYamlFile)(__dirname +
|
|
52
|
+
const deleteByQueryObject = (0, readYamlFile_1.readYamlFile)(__dirname + "/deleteByQuery.yaml");
|
|
53
53
|
exports.OpenApiDocumentDeleteByQuery = deleteByQueryObject.DocumentDeleteByQuery;
|
|
54
54
|
exports.OpenApiDocumentDeleteByQueryComponent = deleteByQueryObject.components.schemas;
|
|
55
55
|
// reading the description of the Validate action in the controller document.
|
|
56
56
|
// The yaml objects are then stored in the variables below
|
|
57
|
-
const validateObject = (0, readYamlFile_1.readYamlFile)(__dirname +
|
|
57
|
+
const validateObject = (0, readYamlFile_1.readYamlFile)(__dirname + "/validate.yaml");
|
|
58
58
|
exports.OpenApiDocumentValidate = validateObject.DocumentValidate;
|
|
59
59
|
exports.OpenApiDocumentValidateComponent = validateObject.components.schemas;
|
|
60
60
|
// reading the description of the mCreateOrReplace action in the controller document.
|
|
61
61
|
// The yaml objects are then stored in the variables below
|
|
62
|
-
const mCreateOrReplaceObject = (0, readYamlFile_1.readYamlFile)(__dirname +
|
|
62
|
+
const mCreateOrReplaceObject = (0, readYamlFile_1.readYamlFile)(__dirname + "/mCreateOrReplace.yaml");
|
|
63
63
|
exports.OpenApiDocumentmCreateOrReplace = mCreateOrReplaceObject.DocumentmCreateOrReplace;
|
|
64
64
|
exports.OpenApiDocumentmCreateOrReplaceComponent = mCreateOrReplaceObject.components.schemas;
|
|
65
65
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
1
|
+
export * from "./document";
|
|
2
|
+
export * from "./security";
|
|
3
3
|
export declare const OpenApiPayloadsDefinitions: any;
|
|
@@ -19,5 +19,5 @@ const readYamlFile_1 = require("../../../util/readYamlFile");
|
|
|
19
19
|
__exportStar(require("./document"), exports);
|
|
20
20
|
__exportStar(require("./security"), exports);
|
|
21
21
|
// Document definitions (reusable object for KuzzleRequest and KuzzleResponse)
|
|
22
|
-
exports.OpenApiPayloadsDefinitions = (0, readYamlFile_1.readYamlFile)(__dirname +
|
|
22
|
+
exports.OpenApiPayloadsDefinitions = (0, readYamlFile_1.readYamlFile)(__dirname + "/payloads.yaml").definitions;
|
|
23
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -4,7 +4,7 @@ exports.OpenApiSecurityUpsertUserComponent = exports.OpenApiSecurityUpsertUser =
|
|
|
4
4
|
const readYamlFile_1 = require("../../../../util/readYamlFile");
|
|
5
5
|
// reading the description of the UpsertUser action in the controller security.
|
|
6
6
|
// The yaml objects are then stored in the variables below
|
|
7
|
-
const upsertUserObject = (0, readYamlFile_1.readYamlFile)(__dirname +
|
|
7
|
+
const upsertUserObject = (0, readYamlFile_1.readYamlFile)(__dirname + "/upsertUser.yaml");
|
|
8
8
|
exports.OpenApiSecurityUpsertUser = upsertUserObject.SecurityUpsertUser;
|
|
9
9
|
exports.OpenApiSecurityUpsertUserComponent = upsertUserObject.components.schemas;
|
|
10
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -31,7 +31,7 @@ SecurityUpsertUser:
|
|
|
31
31
|
description: "Updates or creates a user."
|
|
32
32
|
schema:
|
|
33
33
|
$ref: "#/components/security/SecurityUpsertUserResponse"
|
|
34
|
-
|
|
34
|
+
|
|
35
35
|
components:
|
|
36
36
|
schemas:
|
|
37
37
|
SecurityUpsertUserRequest:
|
|
@@ -53,7 +53,6 @@ components:
|
|
|
53
53
|
type: "integer"
|
|
54
54
|
_source:
|
|
55
55
|
type: "object"
|
|
56
|
-
description:
|
|
56
|
+
description: ' (optional) actualized user content. This property appears only if the "source" option is set to true'
|
|
57
57
|
created:
|
|
58
58
|
type: "boolean"
|
|
59
|
-
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from "./OpenApiManager";
|
|
@@ -38,7 +38,7 @@ function generateController(route, definition) {
|
|
|
38
38
|
const capitalizedController = inflector_1.Inflector.pascalCase(route.controller);
|
|
39
39
|
definition.tags.push({
|
|
40
40
|
description: `${capitalizedController} Controller`,
|
|
41
|
-
name: route.controller
|
|
41
|
+
name: route.controller,
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
44
|
if (route.openapi.tags === undefined) {
|
|
@@ -69,10 +69,10 @@ function generateParameters(route) {
|
|
|
69
69
|
while (m !== null) {
|
|
70
70
|
routeUrlMatch.lastIndex++;
|
|
71
71
|
route.openapi.parameters.push({
|
|
72
|
-
in:
|
|
72
|
+
in: "path",
|
|
73
73
|
name: m[1],
|
|
74
74
|
required: true,
|
|
75
|
-
schema: { type:
|
|
75
|
+
schema: { type: "string" },
|
|
76
76
|
});
|
|
77
77
|
m = routeUrlMatch.exec(route.path);
|
|
78
78
|
}
|
|
@@ -87,9 +87,9 @@ function generateParameters(route) {
|
|
|
87
87
|
function generateResponse(route) {
|
|
88
88
|
if (route.openapi.responses === undefined) {
|
|
89
89
|
route.openapi.responses = {
|
|
90
|
-
|
|
91
|
-
description:
|
|
92
|
-
}
|
|
90
|
+
"200": {
|
|
91
|
+
description: "OK",
|
|
92
|
+
},
|
|
93
93
|
};
|
|
94
94
|
}
|
|
95
95
|
}
|
|
@@ -105,7 +105,7 @@ function generateOpenApi(routes, definition) {
|
|
|
105
105
|
route.verb = route.verb.toLowerCase();
|
|
106
106
|
}
|
|
107
107
|
// Set :param notation to {param}
|
|
108
|
-
route.formattedPath = route.path.replace(routeUrlMatch,
|
|
108
|
+
route.formattedPath = route.path.replace(routeUrlMatch, "{$1}");
|
|
109
109
|
if (definition.paths[route.formattedPath] === undefined) {
|
|
110
110
|
definition.paths[route.formattedPath] = {};
|
|
111
111
|
}
|
package/lib/api/rateLimiter.js
CHANGED
|
@@ -19,17 +19,17 @@
|
|
|
19
19
|
* limitations under the License.
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
"use strict";
|
|
23
23
|
|
|
24
24
|
class RateLimiter {
|
|
25
|
-
constructor
|
|
25
|
+
constructor() {
|
|
26
26
|
this.loginsPerSecond = global.kuzzle.config.limits.loginsPerSecond;
|
|
27
27
|
this.frame = {};
|
|
28
28
|
this.frameResetTimer = null;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
init
|
|
32
|
-
this.frameResetTimer = setInterval(() => (
|
|
31
|
+
init() {
|
|
32
|
+
this.frameResetTimer = setInterval(() => (this.frame = {}), 1000);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
/**
|
|
@@ -42,36 +42,35 @@ class RateLimiter {
|
|
|
42
42
|
* @param {Request} request
|
|
43
43
|
* @returns {Boolean}
|
|
44
44
|
*/
|
|
45
|
-
async isAllowed
|
|
45
|
+
async isAllowed(request) {
|
|
46
46
|
const { controller, action } = request.input;
|
|
47
47
|
let count = 0;
|
|
48
48
|
let limit = -1;
|
|
49
49
|
|
|
50
|
-
if (controller ===
|
|
50
|
+
if (controller === "auth" && action === "login") {
|
|
51
51
|
const cid = request.context.connection.id;
|
|
52
52
|
|
|
53
53
|
count = this.frame[cid] = (this.frame[cid] || 0) + 1;
|
|
54
54
|
limit = this.loginsPerSecond;
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
55
|
+
} else {
|
|
57
56
|
const { _id, profileIds } = request.context.user;
|
|
58
57
|
|
|
59
58
|
// By definition, auth:logout should be unrestricted
|
|
60
|
-
if (_id !==
|
|
59
|
+
if (_id !== "-1" && controller === "auth" && action === "logout") {
|
|
61
60
|
return true;
|
|
62
61
|
}
|
|
63
62
|
|
|
64
63
|
const profiles = await global.kuzzle.ask(
|
|
65
|
-
|
|
66
|
-
profileIds
|
|
64
|
+
"core:security:profile:mGet",
|
|
65
|
+
profileIds
|
|
66
|
+
);
|
|
67
67
|
|
|
68
68
|
for (let i = 0; i < profiles.length; i++) {
|
|
69
69
|
const { rateLimit = 0 } = profiles[i];
|
|
70
70
|
|
|
71
71
|
if (limit === 0 || rateLimit === 0) {
|
|
72
72
|
limit = 0;
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
73
|
+
} else {
|
|
75
74
|
limit = Math.max(limit, rateLimit);
|
|
76
75
|
}
|
|
77
76
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
4
|
-
export * from
|
|
1
|
+
export * from "./kuzzleRequest";
|
|
2
|
+
export * from "./requestContext";
|
|
3
|
+
export * from "./requestInput";
|
|
4
|
+
export * from "./requestResponse";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { JSONObject } from
|
|
2
|
-
import { RequestInput } from
|
|
3
|
-
import { RequestResponse } from
|
|
4
|
-
import { RequestContext } from
|
|
5
|
-
import { KuzzleError } from
|
|
6
|
-
import { Deprecation, User } from
|
|
1
|
+
import { JSONObject } from "kuzzle-sdk";
|
|
2
|
+
import { RequestInput } from "./requestInput";
|
|
3
|
+
import { RequestResponse } from "./requestResponse";
|
|
4
|
+
import { RequestContext } from "./requestContext";
|
|
5
|
+
import { KuzzleError } from "../../kerror/errors";
|
|
6
|
+
import { Deprecation, User } from "../../types";
|
|
7
7
|
/**
|
|
8
8
|
* The `KuzzleRequest` class represents a request being processed by Kuzzle.
|
|
9
9
|
*
|
|
@@ -140,7 +140,7 @@ export declare class KuzzleRequest {
|
|
|
140
140
|
*
|
|
141
141
|
* It can only be 'elasticsearch' or 'koncorde'
|
|
142
142
|
*/
|
|
143
|
-
getLangParam():
|
|
143
|
+
getLangParam(): "elasticsearch" | "koncorde";
|
|
144
144
|
/**
|
|
145
145
|
* Gets a parameter from a request body and checks that it is a boolean.
|
|
146
146
|
* Contrary to other parameter types, an unset boolean does not trigger an
|
|
@@ -358,7 +358,7 @@ export declare class KuzzleRequest {
|
|
|
358
358
|
*
|
|
359
359
|
*/
|
|
360
360
|
getId(options?: {
|
|
361
|
-
ifMissing?:
|
|
361
|
+
ifMissing?: "error" | "generate" | "ignore";
|
|
362
362
|
generator?: () => string;
|
|
363
363
|
}): string;
|
|
364
364
|
/**
|
|
@@ -390,7 +390,7 @@ export declare class KuzzleRequest {
|
|
|
390
390
|
/**
|
|
391
391
|
* Gets the refresh value.
|
|
392
392
|
*/
|
|
393
|
-
getRefresh(defaultValue?:
|
|
393
|
+
getRefresh(defaultValue?: "false" | "wait_for"): "false" | "wait_for";
|
|
394
394
|
/**
|
|
395
395
|
* Returns true if the current user have `admin` profile
|
|
396
396
|
*/
|