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
package/lib/util/promback.js
CHANGED
|
@@ -18,12 +18,12 @@
|
|
|
18
18
|
* See the License for the specific language governing permissions and
|
|
19
19
|
* limitations under the License.
|
|
20
20
|
*/
|
|
21
|
-
|
|
21
|
+
"use strict";
|
|
22
22
|
|
|
23
|
-
const Bluebird = require(
|
|
23
|
+
const Bluebird = require("bluebird");
|
|
24
24
|
|
|
25
25
|
class Promback {
|
|
26
|
-
constructor
|
|
26
|
+
constructor(callback = null) {
|
|
27
27
|
this._callback = callback;
|
|
28
28
|
this._resolve = null;
|
|
29
29
|
this._reject = null;
|
|
@@ -38,29 +38,27 @@ class Promback {
|
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
resolve
|
|
41
|
+
resolve(result) {
|
|
42
42
|
if (this.isPromise) {
|
|
43
43
|
this._resolve(result);
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
44
|
+
} else {
|
|
46
45
|
this._callback(null, result);
|
|
47
46
|
}
|
|
48
47
|
|
|
49
48
|
return this.deferred;
|
|
50
49
|
}
|
|
51
50
|
|
|
52
|
-
reject
|
|
51
|
+
reject(error) {
|
|
53
52
|
if (this.isPromise) {
|
|
54
53
|
this._reject(error);
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
54
|
+
} else {
|
|
57
55
|
this._callback(error);
|
|
58
56
|
}
|
|
59
57
|
|
|
60
58
|
return this.deferred;
|
|
61
59
|
}
|
|
62
60
|
|
|
63
|
-
get promise
|
|
61
|
+
get promise() {
|
|
64
62
|
return this.deferred;
|
|
65
63
|
}
|
|
66
64
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { JSONObject } from
|
|
1
|
+
import { JSONObject } from "../../index";
|
|
2
2
|
export declare function readYamlFile(path: string): JSONObject;
|
package/lib/util/readYamlFile.js
CHANGED
|
@@ -4,7 +4,7 @@ exports.readYamlFile = void 0;
|
|
|
4
4
|
const fs_1 = require("fs");
|
|
5
5
|
const js_yaml_1 = require("js-yaml");
|
|
6
6
|
function readYamlFile(path) {
|
|
7
|
-
return (0, js_yaml_1.load)((0, fs_1.readFileSync)(path,
|
|
7
|
+
return (0, js_yaml_1.load)((0, fs_1.readFileSync)(path, "utf-8"));
|
|
8
8
|
}
|
|
9
9
|
exports.readYamlFile = readYamlFile;
|
|
10
10
|
//# sourceMappingURL=readYamlFile.js.map
|
|
@@ -19,13 +19,13 @@
|
|
|
19
19
|
* limitations under the License.
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
"use strict";
|
|
23
23
|
|
|
24
|
-
const _ = require(
|
|
25
|
-
const { get, isPlainObject } = require(
|
|
26
|
-
const kerror = require(
|
|
24
|
+
const _ = require("lodash");
|
|
25
|
+
const { get, isPlainObject } = require("./safeObject");
|
|
26
|
+
const kerror = require("../kerror");
|
|
27
27
|
|
|
28
|
-
const assertionError = kerror.wrap(
|
|
28
|
+
const assertionError = kerror.wrap("api", "assert");
|
|
29
29
|
|
|
30
30
|
module.exports = {
|
|
31
31
|
/**
|
|
@@ -33,7 +33,7 @@ module.exports = {
|
|
|
33
33
|
*/
|
|
34
34
|
assertArgsHasAttribute: (request, attribute) => {
|
|
35
35
|
if (_.isNil(get(request.input.args, attribute))) {
|
|
36
|
-
throw assertionError.get(
|
|
36
|
+
throw assertionError.get("missing_argument", attribute);
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
39
|
|
|
@@ -45,29 +45,29 @@ module.exports = {
|
|
|
45
45
|
*/
|
|
46
46
|
assertBodyAttributeType: (request, attribute, type) => {
|
|
47
47
|
switch (type) {
|
|
48
|
-
case
|
|
49
|
-
case
|
|
50
|
-
case
|
|
48
|
+
case "number":
|
|
49
|
+
case "boolean":
|
|
50
|
+
case "string":
|
|
51
51
|
// The body should always be passed as JSON, we don't consider type conversion possibilities
|
|
52
52
|
if (typeof get(request.input.body, attribute) === type) {
|
|
53
53
|
return true;
|
|
54
54
|
}
|
|
55
55
|
break;
|
|
56
|
-
case
|
|
56
|
+
case "array":
|
|
57
57
|
if (Array.isArray(get(request.input.body, attribute))) {
|
|
58
58
|
return true;
|
|
59
59
|
}
|
|
60
60
|
break;
|
|
61
|
-
case
|
|
61
|
+
case "object":
|
|
62
62
|
if (isPlainObject(get(request.input.body, attribute))) {
|
|
63
63
|
return true;
|
|
64
64
|
}
|
|
65
65
|
break;
|
|
66
66
|
default:
|
|
67
|
-
throw assertionError.get(
|
|
67
|
+
throw assertionError.get("unexpected_type_assertion", type, attribute);
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
throw assertionError.get(
|
|
70
|
+
throw assertionError.get("invalid_type", `body.${attribute}`, type);
|
|
71
71
|
},
|
|
72
72
|
|
|
73
73
|
/**
|
|
@@ -77,7 +77,7 @@ module.exports = {
|
|
|
77
77
|
*/
|
|
78
78
|
assertBodyHasAttribute: (request, attribute) => {
|
|
79
79
|
if (_.isNil(get(request.input.body, attribute))) {
|
|
80
|
-
throw assertionError.get(
|
|
80
|
+
throw assertionError.get("missing_argument", `body.${attribute}`);
|
|
81
81
|
}
|
|
82
82
|
},
|
|
83
83
|
|
|
@@ -86,8 +86,8 @@ module.exports = {
|
|
|
86
86
|
* @param {string} attribute
|
|
87
87
|
*/
|
|
88
88
|
assertBodyHasNotAttribute: (request, attribute) => {
|
|
89
|
-
if (!
|
|
90
|
-
throw assertionError.get(
|
|
89
|
+
if (!_.isNil(get(request.input.body, attribute))) {
|
|
90
|
+
throw assertionError.get("forbidden_argument", `body.${attribute}`);
|
|
91
91
|
}
|
|
92
92
|
},
|
|
93
93
|
|
|
@@ -98,40 +98,40 @@ module.exports = {
|
|
|
98
98
|
* @param {string} attribute
|
|
99
99
|
* @param {string} type
|
|
100
100
|
*/
|
|
101
|
-
assertHasBody: request => {
|
|
101
|
+
assertHasBody: (request) => {
|
|
102
102
|
if (_.isNil(request.input.body)) {
|
|
103
|
-
throw assertionError.get(
|
|
103
|
+
throw assertionError.get("body_required");
|
|
104
104
|
}
|
|
105
105
|
},
|
|
106
106
|
|
|
107
107
|
/**
|
|
108
108
|
* @param {Request} request
|
|
109
109
|
*/
|
|
110
|
-
assertHasId: request => {
|
|
111
|
-
if (!
|
|
112
|
-
throw assertionError.get(
|
|
110
|
+
assertHasId: (request) => {
|
|
111
|
+
if (!request.input.args._id) {
|
|
112
|
+
throw assertionError.get("missing_argument", "_id");
|
|
113
113
|
}
|
|
114
114
|
},
|
|
115
115
|
|
|
116
116
|
/**
|
|
117
117
|
* @param {Request} request
|
|
118
118
|
*/
|
|
119
|
-
assertHasIndex: request => {
|
|
120
|
-
if (!
|
|
121
|
-
throw assertionError.get(
|
|
119
|
+
assertHasIndex: (request) => {
|
|
120
|
+
if (!request.input.args.index) {
|
|
121
|
+
throw assertionError.get("missing_argument", "index");
|
|
122
122
|
}
|
|
123
123
|
},
|
|
124
124
|
|
|
125
125
|
/**
|
|
126
126
|
* @param {Request} request
|
|
127
127
|
*/
|
|
128
|
-
assertHasIndexAndCollection: request => {
|
|
129
|
-
if (!
|
|
130
|
-
throw assertionError.get(
|
|
128
|
+
assertHasIndexAndCollection: (request) => {
|
|
129
|
+
if (!request.input.args.index) {
|
|
130
|
+
throw assertionError.get("missing_argument", "index");
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
-
if (!
|
|
134
|
-
throw assertionError.get(
|
|
133
|
+
if (!request.input.args.collection) {
|
|
134
|
+
throw assertionError.get("missing_argument", "collection");
|
|
135
135
|
}
|
|
136
136
|
},
|
|
137
137
|
|
|
@@ -141,7 +141,7 @@ module.exports = {
|
|
|
141
141
|
*/
|
|
142
142
|
assertIsAuthenticated: (anonymousId, request) => {
|
|
143
143
|
if (request.context.user._id === anonymousId) {
|
|
144
|
-
throw kerror.get(
|
|
144
|
+
throw kerror.get("security", "rights", "unauthorized");
|
|
145
145
|
}
|
|
146
146
|
},
|
|
147
147
|
|
|
@@ -149,9 +149,9 @@ module.exports = {
|
|
|
149
149
|
* @param {Kuzzle} kuzzle
|
|
150
150
|
* @param {Request} request
|
|
151
151
|
*/
|
|
152
|
-
assertIsObject: value => {
|
|
153
|
-
if (!
|
|
154
|
-
throw assertionError.get(
|
|
152
|
+
assertIsObject: (value) => {
|
|
153
|
+
if (!isPlainObject(value)) {
|
|
154
|
+
throw assertionError.get("invalid_argument", value, "object");
|
|
155
155
|
}
|
|
156
|
-
}
|
|
156
|
+
},
|
|
157
157
|
};
|
package/lib/util/safeObject.js
CHANGED
|
@@ -19,15 +19,15 @@
|
|
|
19
19
|
* limitations under the License.
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
"use strict";
|
|
23
23
|
|
|
24
24
|
// Simple utility functions for safe (and fast) object manipulations
|
|
25
25
|
|
|
26
|
-
function has
|
|
26
|
+
function has(o, prop) {
|
|
27
27
|
return Object.prototype.hasOwnProperty.call(o, prop);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
function get
|
|
30
|
+
function get(o, prop) {
|
|
31
31
|
if (has(o, prop)) {
|
|
32
32
|
return o[prop];
|
|
33
33
|
}
|
|
@@ -35,8 +35,8 @@ function get (o, prop) {
|
|
|
35
35
|
return undefined;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
function isPlainObject
|
|
39
|
-
return Object.prototype.toString.call(o) ===
|
|
38
|
+
function isPlainObject(o) {
|
|
39
|
+
return Object.prototype.toString.call(o) === "[object Object]";
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
module.exports = { get, has, isPlainObject };
|
package/lib/util/stackTrace.js
CHANGED
|
@@ -19,12 +19,12 @@
|
|
|
19
19
|
* limitations under the License.
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
"use strict";
|
|
23
23
|
|
|
24
|
-
const util = require(
|
|
24
|
+
const util = require("util");
|
|
25
25
|
|
|
26
|
-
const MARKER =
|
|
27
|
-
const PADDING =
|
|
26
|
+
const MARKER = ">";
|
|
27
|
+
const PADDING = " ";
|
|
28
28
|
|
|
29
29
|
/**
|
|
30
30
|
* Hilight user code
|
|
@@ -36,17 +36,18 @@ const PADDING = ' ';
|
|
|
36
36
|
* >>>> at init (/home/aschen/projets/app/test.ts:8:3)
|
|
37
37
|
* at Module._compile (internal/modules/cjs/loader.js:1133:30)
|
|
38
38
|
*/
|
|
39
|
-
function hilightUserCode
|
|
39
|
+
function hilightUserCode(line) {
|
|
40
40
|
// ignore first line (error message) or already enhanced
|
|
41
|
-
if (!
|
|
41
|
+
if (!line.includes(" at ") || line.startsWith(MARKER)) {
|
|
42
42
|
return line;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
const isKuzzleCode = line.includes(
|
|
46
|
-
const isNodeCode =
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
45
|
+
const isKuzzleCode = line.includes("kuzzle/lib/");
|
|
46
|
+
const isNodeCode =
|
|
47
|
+
!line.includes("at /") &&
|
|
48
|
+
!line.includes("at async /") &&
|
|
49
|
+
line.charAt(line.indexOf("(") + 1) !== "/";
|
|
50
|
+
const isModuleCode = line.includes("node_modules");
|
|
50
51
|
if (isKuzzleCode || isNodeCode || isModuleCode) {
|
|
51
52
|
return PADDING + line;
|
|
52
53
|
}
|
|
@@ -62,23 +63,20 @@ function hilightUserCode (line) {
|
|
|
62
63
|
* request response
|
|
63
64
|
* @returns {*} return the data minus the stack trace
|
|
64
65
|
*/
|
|
65
|
-
function removeStacktrace
|
|
66
|
+
function removeStacktrace(data) {
|
|
66
67
|
if (util.types.isNativeError(data)) {
|
|
67
|
-
if (global.NODE_ENV !==
|
|
68
|
+
if (global.NODE_ENV !== "development") {
|
|
68
69
|
data.stack = undefined;
|
|
70
|
+
} else {
|
|
71
|
+
data.stack = data.stack.split("\n").map(hilightUserCode).join("\n");
|
|
69
72
|
}
|
|
70
|
-
|
|
71
|
-
data.stack = data.stack.split('\n').map(hilightUserCode).join('\n');
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
else if (data && data.content && data.content.error) {
|
|
73
|
+
} else if (data && data.content && data.content.error) {
|
|
75
74
|
// @todo v3: stack should be removed only for "production" env
|
|
76
|
-
if (global.NODE_ENV !==
|
|
75
|
+
if (global.NODE_ENV !== "development") {
|
|
77
76
|
data.content.error.stack = undefined;
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
77
|
+
} else {
|
|
80
78
|
data.content.error.stack = data.content.error.stack
|
|
81
|
-
? data.content.error.stack.split(
|
|
79
|
+
? data.content.error.stack.split("\n").map(hilightUserCode).join("\n")
|
|
82
80
|
: undefined;
|
|
83
81
|
}
|
|
84
82
|
}
|
package/lib/util/wildcard.js
CHANGED
|
@@ -19,37 +19,37 @@
|
|
|
19
19
|
* limitations under the License.
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
"use strict";
|
|
23
23
|
|
|
24
|
-
const _ = require(
|
|
24
|
+
const _ = require("lodash");
|
|
25
25
|
|
|
26
|
-
function match
|
|
26
|
+
function match(pattern, list) {
|
|
27
27
|
// Match everything
|
|
28
|
-
if (pattern ===
|
|
28
|
+
if (pattern === "*") {
|
|
29
29
|
return list;
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
32
|
* Reduces repeating "*" to one ".*"
|
|
33
33
|
* One of the fastest and most readable way to do this
|
|
34
34
|
*/
|
|
35
|
-
const wildCardPattern = pattern
|
|
36
|
-
.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
const wildCardPattern = pattern
|
|
36
|
+
.split("*")
|
|
37
|
+
.filter(
|
|
38
|
+
(patternPart, index, array) =>
|
|
39
|
+
patternPart !== "" || index === 0 || index === array.length - 1
|
|
40
40
|
)
|
|
41
|
-
.map(patternPart => _.escapeRegExp(patternPart)) // escape special regex characters
|
|
42
|
-
.join(
|
|
43
|
-
|
|
41
|
+
.map((patternPart) => _.escapeRegExp(patternPart)) // escape special regex characters
|
|
42
|
+
.join(".*");
|
|
43
|
+
|
|
44
44
|
// Match everything
|
|
45
|
-
if (wildCardPattern ===
|
|
45
|
+
if (wildCardPattern === ".*") {
|
|
46
46
|
return list;
|
|
47
47
|
}
|
|
48
|
-
|
|
48
|
+
|
|
49
49
|
const regex = new RegExp(`^${wildCardPattern}$`);
|
|
50
50
|
|
|
51
51
|
// Keep only matching elements
|
|
52
|
-
return list.filter(item => !
|
|
52
|
+
return list.filter((item) => !regex.test(item));
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
module.exports = { match };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kuzzle",
|
|
3
3
|
"author": "The Kuzzle Team <support@kuzzle.io>",
|
|
4
|
-
"version": "2.19.
|
|
4
|
+
"version": "2.19.3",
|
|
5
5
|
"description": "Kuzzle is an open-source solution that handles all the data management through a secured API, with a large choice of protocols.",
|
|
6
6
|
"bin": "bin/start-kuzzle-server",
|
|
7
7
|
"scripts": {
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
"test:lint": "npm run test:lint:js && npm run test:lint:ts",
|
|
30
30
|
"test:lint:ts": "eslint --max-warnings=0 ./lib --ext .ts --config .eslintc-ts.json",
|
|
31
31
|
"test:lint:ts:fix": "eslint --max-warnings=0 --fix ./lib --ext .ts --config .eslintc-ts.json",
|
|
32
|
-
"test:lint:js": "eslint --max-warnings=0 ./lib ./test ./
|
|
33
|
-
"test:lint:js:fix": "eslint --max-warnings=0 --fix ./lib ./test ./
|
|
32
|
+
"test:lint:js": "eslint --max-warnings=0 ./lib ./test ./bin ./features ./plugins/available/functional-test-plugin",
|
|
33
|
+
"test:lint:js:fix": "eslint --max-warnings=0 --fix ./lib ./test ./bin ./features",
|
|
34
34
|
"doc-error-codes": "node -r ts-node/register doc/build-error-codes",
|
|
35
35
|
"docker:install": "docker-compose run kuzzle_node_1 npm install",
|
|
36
36
|
"docker:test:unit": "docker-compose run kuzzle_node_1 npm run test:unit",
|
|
@@ -71,12 +71,13 @@
|
|
|
71
71
|
"ndjson": "^2.0.0",
|
|
72
72
|
"node-segfault-handler": "^1.0.4",
|
|
73
73
|
"passport": "^0.5.2",
|
|
74
|
+
"prettier": "^2.7.1",
|
|
74
75
|
"protobufjs": "~6.11.2",
|
|
75
76
|
"rc": "1.2.8",
|
|
76
77
|
"semver": "^7.3.7",
|
|
77
78
|
"sorted-array": "^2.0.4",
|
|
78
|
-
"uuid": "^8.3.2",
|
|
79
79
|
"uWebSockets.js": "https://github.com/uNetworking/uWebSockets.js/archive/refs/tags/v20.0.0.tar.gz",
|
|
80
|
+
"uuid": "^8.3.2",
|
|
80
81
|
"validator": "^13.7.0",
|
|
81
82
|
"winston": "^3.7.2",
|
|
82
83
|
"winston-elasticsearch": "0.16.1",
|
|
@@ -99,7 +100,7 @@
|
|
|
99
100
|
"cucumber": "^6.0.5",
|
|
100
101
|
"ergol": "^1.0.2",
|
|
101
102
|
"eslint": "^8.13.0",
|
|
102
|
-
"eslint-plugin-
|
|
103
|
+
"eslint-plugin-kuzzle": "0.0.1",
|
|
103
104
|
"mocha": "^9.2.2",
|
|
104
105
|
"mock-require": "^3.0.3",
|
|
105
106
|
"mqtt": "^4.3.7",
|
|
@@ -126,7 +127,6 @@
|
|
|
126
127
|
"lib/**/*.proto",
|
|
127
128
|
"lib/**/*.yaml",
|
|
128
129
|
"package.json",
|
|
129
|
-
"package-lock.json",
|
|
130
130
|
"index.js",
|
|
131
131
|
"index.d.ts",
|
|
132
132
|
"LICENSE.md",
|