kuzzle 2.44.0 → 2.46.0-beta.1
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/check-node-version.js +1 -0
- package/lib/api/controllers/adminController.js +2 -1
- package/lib/api/controllers/authController.d.ts +1 -0
- package/lib/api/controllers/authController.js +2 -1
- package/lib/api/controllers/securityController.js +22 -20
- package/lib/api/funnel.js +30 -10
- package/lib/cluster/command.js +3 -2
- package/lib/cluster/idCardHandler.d.ts +1 -0
- package/lib/cluster/idCardHandler.js +2 -1
- package/lib/cluster/node.js +18 -19
- package/lib/cluster/subscriber.js +5 -3
- package/lib/core/backend/backend.d.ts +4 -6
- package/lib/core/backend/backend.js +25 -23
- package/lib/core/cache/cacheEngine.js +3 -1
- package/lib/core/network/accessLogger.js +3 -2
- package/lib/core/network/entryPoint.js +7 -7
- package/lib/core/network/protocols/httpwsProtocol.js +7 -7
- package/lib/core/network/protocols/mqttProtocol.js +3 -2
- package/lib/core/network/router.js +4 -3
- package/lib/core/plugin/pluginContext.d.ts +5 -0
- package/lib/core/plugin/pluginContext.js +8 -6
- package/lib/core/plugin/pluginsManager.js +13 -5
- package/lib/core/realtime/hotelClerk.d.ts +1 -0
- package/lib/core/realtime/hotelClerk.js +4 -3
- package/lib/core/realtime/notifier.js +2 -1
- package/lib/core/security/roleRepository.js +3 -2
- package/lib/core/security/securityLoader.js +5 -7
- package/lib/core/shared/store.d.ts +1 -0
- package/lib/core/shared/store.js +2 -1
- package/lib/core/statistics/statistics.js +3 -1
- package/lib/core/storage/storageEngine.js +6 -1
- package/lib/core/validation/validation.js +6 -5
- package/lib/kuzzle/Logger.d.ts +1 -1
- package/lib/kuzzle/Logger.js +7 -7
- package/lib/kuzzle/dumpGenerator.js +17 -16
- package/lib/kuzzle/internalIndexHandler.js +3 -1
- package/lib/kuzzle/kuzzle.js +6 -8
- package/lib/service/cache/redis.js +4 -0
- package/lib/service/storage/7/elasticsearch.d.ts +1 -0
- package/lib/service/storage/7/elasticsearch.js +11 -4
- package/lib/service/storage/8/elasticsearch.d.ts +1 -0
- package/lib/service/storage/8/elasticsearch.js +11 -4
- package/lib/service/storage/Elasticsearch.d.ts +1 -0
- package/lib/service/storage/Elasticsearch.js +1 -1
- package/package.json +19 -19
|
@@ -36,6 +36,7 @@ const kerror = require("../kerror");
|
|
|
36
36
|
class DumpGenerator {
|
|
37
37
|
constructor() {
|
|
38
38
|
this._dump = false;
|
|
39
|
+
this.logger = global.kuzzle.log.child("dump:dumpGenerator");
|
|
39
40
|
}
|
|
40
41
|
|
|
41
42
|
/**
|
|
@@ -59,8 +60,8 @@ class DumpGenerator {
|
|
|
59
60
|
.substring(0, 200),
|
|
60
61
|
);
|
|
61
62
|
|
|
62
|
-
|
|
63
|
-
|
|
63
|
+
this.logger.info("=".repeat(79));
|
|
64
|
+
this.logger.info(`Generating dump in ${dumpPath}`);
|
|
64
65
|
this._cleanUpHistory();
|
|
65
66
|
try {
|
|
66
67
|
fs.mkdirSync(dumpPath, { recursive: true });
|
|
@@ -69,12 +70,12 @@ class DumpGenerator {
|
|
|
69
70
|
? "Dump directory already exists. Skipping.."
|
|
70
71
|
: `Unable to create dump folder: ${e.message}`;
|
|
71
72
|
|
|
72
|
-
|
|
73
|
+
this.logger.error(message);
|
|
73
74
|
throw new Error(message);
|
|
74
75
|
}
|
|
75
76
|
|
|
76
77
|
// dump kuzzle information
|
|
77
|
-
|
|
78
|
+
this.logger.info("> dumping kuzzle configuration");
|
|
78
79
|
fs.writeFileSync(
|
|
79
80
|
path.join(dumpPath, "kuzzle.json"),
|
|
80
81
|
JSON.stringify(
|
|
@@ -88,7 +89,7 @@ class DumpGenerator {
|
|
|
88
89
|
);
|
|
89
90
|
|
|
90
91
|
// dump plugins configuration
|
|
91
|
-
|
|
92
|
+
this.logger.info("> dumping plugins configuration");
|
|
92
93
|
fs.writeFileSync(
|
|
93
94
|
path.join(dumpPath, "plugins.json"),
|
|
94
95
|
JSON.stringify(
|
|
@@ -99,7 +100,7 @@ class DumpGenerator {
|
|
|
99
100
|
);
|
|
100
101
|
|
|
101
102
|
// dump Node.js configuration
|
|
102
|
-
|
|
103
|
+
this.logger.info("> dumping Node.js configuration");
|
|
103
104
|
fs.writeFileSync(
|
|
104
105
|
path.join(dumpPath, "nodejs.json"),
|
|
105
106
|
JSON.stringify(
|
|
@@ -117,7 +118,7 @@ class DumpGenerator {
|
|
|
117
118
|
);
|
|
118
119
|
|
|
119
120
|
// dump os configuration
|
|
120
|
-
|
|
121
|
+
this.logger.info("> dumping os configuration");
|
|
121
122
|
fs.writeFileSync(
|
|
122
123
|
path.join(dumpPath, "os.json"),
|
|
123
124
|
JSON.stringify(
|
|
@@ -138,7 +139,7 @@ class DumpGenerator {
|
|
|
138
139
|
);
|
|
139
140
|
|
|
140
141
|
// core-dump
|
|
141
|
-
|
|
142
|
+
this.logger.info("> generating core-dump");
|
|
142
143
|
dumpme(global.kuzzle.config.dump.gcore || "gcore", `${dumpPath}/core`);
|
|
143
144
|
|
|
144
145
|
// Gzip the core
|
|
@@ -158,7 +159,7 @@ class DumpGenerator {
|
|
|
158
159
|
try {
|
|
159
160
|
fs.unlinkSync(corefiles[0]);
|
|
160
161
|
} catch (e) {
|
|
161
|
-
|
|
162
|
+
this.logger.warn(
|
|
162
163
|
`> unable to clean up core file ${corefiles[0]}`,
|
|
163
164
|
);
|
|
164
165
|
}
|
|
@@ -166,18 +167,18 @@ class DumpGenerator {
|
|
|
166
167
|
}),
|
|
167
168
|
);
|
|
168
169
|
} else {
|
|
169
|
-
|
|
170
|
+
this.logger.warn("> could not generate dump");
|
|
170
171
|
}
|
|
171
172
|
} catch (error) {
|
|
172
|
-
|
|
173
|
+
this.logger.error(error);
|
|
173
174
|
}
|
|
174
175
|
|
|
175
176
|
// copy node binary
|
|
176
|
-
|
|
177
|
+
this.logger.info("> copy node binary");
|
|
177
178
|
fs.copyFileSync(process.execPath, path.join(dumpPath, "node"));
|
|
178
179
|
|
|
179
180
|
// dumping Kuzzle's stats
|
|
180
|
-
|
|
181
|
+
this.logger.info("> dumping kuzzle's stats");
|
|
181
182
|
const statistics = await global.kuzzle.statistics.getAllStats(
|
|
182
183
|
new Request({ action: "getAllStats", controller: "statistics" }),
|
|
183
184
|
);
|
|
@@ -187,11 +188,11 @@ class DumpGenerator {
|
|
|
187
188
|
JSON.stringify(statistics.hits, null, " ").concat("\n"),
|
|
188
189
|
);
|
|
189
190
|
|
|
190
|
-
|
|
191
|
-
|
|
191
|
+
this.logger.info("Done.");
|
|
192
|
+
this.logger.info(
|
|
192
193
|
"[ℹ] You can send the folder to the kuzzle core team at support@kuzzle.io",
|
|
193
194
|
);
|
|
194
|
-
|
|
195
|
+
this.logger.info("=".repeat(79));
|
|
195
196
|
|
|
196
197
|
this._dump = false;
|
|
197
198
|
return dumpPath;
|
|
@@ -92,6 +92,8 @@ class InternalIndexHandler extends Store {
|
|
|
92
92
|
this._BOOTSTRAP_DONE_ID = `${this.index}.done`;
|
|
93
93
|
this._DATAMODEL_VERSION_ID = "internalIndex.dataModelVersion";
|
|
94
94
|
this._JWT_SECRET_ID = "security.jwt.secret";
|
|
95
|
+
|
|
96
|
+
this.logger = global.kuzzle.log.child("internalIndexHandler");
|
|
95
97
|
}
|
|
96
98
|
|
|
97
99
|
/**
|
|
@@ -219,7 +221,7 @@ class InternalIndexHandler extends Store {
|
|
|
219
221
|
);
|
|
220
222
|
}
|
|
221
223
|
|
|
222
|
-
|
|
224
|
+
this.logger.warn(
|
|
223
225
|
"[!] Kuzzle is using a generated seed for authentication. This is suitable for development but should NEVER be used in production. See https://docs.kuzzle.io/core/2/guides/getting-started/deploy-your-application/",
|
|
224
226
|
);
|
|
225
227
|
}
|
package/lib/kuzzle/kuzzle.js
CHANGED
|
@@ -73,7 +73,6 @@ const kerror = __importStar(require("../kerror"));
|
|
|
73
73
|
const asyncStore_1 = __importDefault(require("../util/asyncStore"));
|
|
74
74
|
const crypto_1 = require("../util/crypto");
|
|
75
75
|
const mutex_1 = require("../util/mutex");
|
|
76
|
-
const name_generator_1 = require("../util/name-generator");
|
|
77
76
|
const dumpGenerator_1 = __importDefault(require("./dumpGenerator"));
|
|
78
77
|
const KuzzleEventEmitter_1 = __importDefault(require("./event/KuzzleEventEmitter"));
|
|
79
78
|
const internalIndexHandler_1 = __importDefault(require("./internalIndexHandler"));
|
|
@@ -152,7 +151,7 @@ class Kuzzle extends KuzzleEventEmitter_1.default {
|
|
|
152
151
|
await this.internalIndex.init();
|
|
153
152
|
await new security_1.default().init();
|
|
154
153
|
// This will init the cluster module if enabled
|
|
155
|
-
|
|
154
|
+
await this.initKuzzleNode();
|
|
156
155
|
this.vault = vault_1.default.load(options.vaultKey, options.secretsFile);
|
|
157
156
|
await this.validation.init();
|
|
158
157
|
await this.tokenManager.init();
|
|
@@ -165,7 +164,6 @@ class Kuzzle extends KuzzleEventEmitter_1.default {
|
|
|
165
164
|
await this.debugger.init();
|
|
166
165
|
this.pluginsManager.application = application;
|
|
167
166
|
const pluginImports = await this.pluginsManager.init(options.plugins);
|
|
168
|
-
this.log.info(`[✔] Successfully loaded ${this.pluginsManager.loadedPlugins.length} plugins: ${this.pluginsManager.loadedPlugins.join(", ")}`);
|
|
169
167
|
const imports = lodash_1.default.merge({}, pluginImports, options.import);
|
|
170
168
|
// Authentification plugins must be loaded before users import to avoid
|
|
171
169
|
// credentials related error which would prevent Kuzzle from starting
|
|
@@ -181,7 +179,7 @@ class Kuzzle extends KuzzleEventEmitter_1.default {
|
|
|
181
179
|
await this.pipe("kuzzle:state:live");
|
|
182
180
|
await this.entryPoint.startListening();
|
|
183
181
|
await this.pipe("kuzzle:state:ready");
|
|
184
|
-
this.log.info(`[✔] Kuzzle ${this.version} is ready (node name: ${
|
|
182
|
+
this.log.info(`[✔] Kuzzle ${this.version} is ready (node name: ${global.nodeId})`);
|
|
185
183
|
// @deprecated
|
|
186
184
|
this.emit("core:kuzzleStart", "Kuzzle is ready to accept requests");
|
|
187
185
|
this._state = kuzzleStateEnum_1.default.RUNNING;
|
|
@@ -197,16 +195,13 @@ class Kuzzle extends KuzzleEventEmitter_1.default {
|
|
|
197
195
|
* This will init the cluster if it's enabled.
|
|
198
196
|
*/
|
|
199
197
|
async initKuzzleNode() {
|
|
200
|
-
let id;
|
|
201
198
|
if (this.config.cluster.enabled) {
|
|
202
|
-
|
|
199
|
+
await new cluster_1.default().init();
|
|
203
200
|
this.log.info("[✔] Cluster initialized");
|
|
204
201
|
}
|
|
205
202
|
else {
|
|
206
|
-
id = name_generator_1.NameGenerator.generateRandomName({ prefix: "knode" });
|
|
207
203
|
this.log.info("[X] Cluster disabled: single node mode.");
|
|
208
204
|
}
|
|
209
|
-
return id;
|
|
210
205
|
}
|
|
211
206
|
/**
|
|
212
207
|
* Gracefully exits after processing remaining requests
|
|
@@ -226,6 +221,9 @@ class Kuzzle extends KuzzleEventEmitter_1.default {
|
|
|
226
221
|
await bluebird_1.default.delay(1000);
|
|
227
222
|
}
|
|
228
223
|
this.log.info("Halted.");
|
|
224
|
+
// flush both application and Kuzzle core loggers before leaving (Could happen even if some core/application components are not initialized)
|
|
225
|
+
await this?.log?.flush?.();
|
|
226
|
+
await this?.pluginsManager?.application?.log?.flush?.();
|
|
229
227
|
process.exit(0);
|
|
230
228
|
}
|
|
231
229
|
/**
|
|
@@ -43,6 +43,10 @@ class Redis extends Service {
|
|
|
43
43
|
this.commands = {};
|
|
44
44
|
this.adapterName = name;
|
|
45
45
|
this.pingIntervalID = null;
|
|
46
|
+
|
|
47
|
+
this.logger = global.kuzzle.log.child // It means we're in the main Kuzzle process
|
|
48
|
+
? global.kuzzle.log.child("services:cache:redis")
|
|
49
|
+
: global.kuzzle.log;
|
|
46
50
|
}
|
|
47
51
|
|
|
48
52
|
/**
|
|
@@ -99,6 +99,7 @@ let esState = esStateEnum.NONE;
|
|
|
99
99
|
*/
|
|
100
100
|
class ES7 {
|
|
101
101
|
constructor(config, scope = storeScopeEnum_1.storeScopeEnum.PUBLIC) {
|
|
102
|
+
this.logger = global.kuzzle.log.child("service:storage:elasticsearch:7");
|
|
102
103
|
this._config = config;
|
|
103
104
|
this._scope = scope;
|
|
104
105
|
this._indexPrefix =
|
|
@@ -151,7 +152,7 @@ class ES7 {
|
|
|
151
152
|
}
|
|
152
153
|
if (global.NODE_ENV !== "development" &&
|
|
153
154
|
this._config.commonMapping.dynamic === "true") {
|
|
154
|
-
|
|
155
|
+
this.logger.warn([
|
|
155
156
|
"Your dynamic mapping policy is set to 'true' for new fields.",
|
|
156
157
|
"Elasticsearch will try to automatically infer mapping for new fields, and those cannot be changed afterward.",
|
|
157
158
|
'See the "services.storageEngine.commonMapping.dynamic" option in the kuzzlerc configuration file to change this value.',
|
|
@@ -2328,6 +2329,9 @@ class ES7 {
|
|
|
2328
2329
|
_processExtract(prepareMUpsert, prepareMGet, metadata, document, extractedDocuments, documentsToGet) {
|
|
2329
2330
|
let extractedDocument;
|
|
2330
2331
|
if (prepareMUpsert) {
|
|
2332
|
+
if (document.changes !== undefined && document.changes !== null) {
|
|
2333
|
+
delete document.changes._kuzzle_info;
|
|
2334
|
+
}
|
|
2331
2335
|
extractedDocument = {
|
|
2332
2336
|
_source: {
|
|
2333
2337
|
// Do not use destructuring, it's 10x slower
|
|
@@ -2337,6 +2341,9 @@ class ES7 {
|
|
|
2337
2341
|
};
|
|
2338
2342
|
}
|
|
2339
2343
|
else {
|
|
2344
|
+
if (document.body !== undefined && document.body !== null) {
|
|
2345
|
+
delete document.body._kuzzle_info;
|
|
2346
|
+
}
|
|
2340
2347
|
extractedDocument = {
|
|
2341
2348
|
// Do not use destructuring, it's 10x slower
|
|
2342
2349
|
_source: Object.assign({}, metadata, document.body),
|
|
@@ -2768,7 +2775,7 @@ class ES7 {
|
|
|
2768
2775
|
return;
|
|
2769
2776
|
}
|
|
2770
2777
|
esState = esStateEnum.AWAITING;
|
|
2771
|
-
|
|
2778
|
+
this.logger.info("[ℹ] Trying to connect to Elasticsearch...");
|
|
2772
2779
|
while (esState !== esStateEnum.OK) {
|
|
2773
2780
|
try {
|
|
2774
2781
|
// Wait for at least 1 shard to be initialized
|
|
@@ -2776,11 +2783,11 @@ class ES7 {
|
|
|
2776
2783
|
wait_for_no_initializing_shards: true,
|
|
2777
2784
|
});
|
|
2778
2785
|
if (health.body.number_of_pending_tasks === 0) {
|
|
2779
|
-
|
|
2786
|
+
this.logger.info("[✔] Elasticsearch is ready");
|
|
2780
2787
|
esState = esStateEnum.OK;
|
|
2781
2788
|
}
|
|
2782
2789
|
else {
|
|
2783
|
-
|
|
2790
|
+
this.logger.info(`[ℹ] Still waiting for Elasticsearch: ${health.body.number_of_pending_tasks} cluster tasks remaining`);
|
|
2784
2791
|
await bluebird_1.default.delay(1000);
|
|
2785
2792
|
}
|
|
2786
2793
|
}
|
|
@@ -99,6 +99,7 @@ let esState = esStateEnum.NONE;
|
|
|
99
99
|
*/
|
|
100
100
|
class ES8 {
|
|
101
101
|
constructor(config, scope = storeScopeEnum_1.storeScopeEnum.PUBLIC) {
|
|
102
|
+
this.logger = global.kuzzle.log.child("service:storage:elasticsearch:8");
|
|
102
103
|
this._config = config;
|
|
103
104
|
this._scope = scope;
|
|
104
105
|
this._indexPrefix =
|
|
@@ -151,7 +152,7 @@ class ES8 {
|
|
|
151
152
|
}
|
|
152
153
|
if (global.NODE_ENV !== "development" &&
|
|
153
154
|
this._config.commonMapping.dynamic === "true") {
|
|
154
|
-
|
|
155
|
+
this.logger.warn([
|
|
155
156
|
"Your dynamic mapping policy is set to 'true' for new fields.",
|
|
156
157
|
"Elasticsearch will try to automatically infer mapping for new fields, and those cannot be changed afterward.",
|
|
157
158
|
'See the "services.storageEngine.commonMapping.dynamic" option in the kuzzlerc configuration file to change this value.',
|
|
@@ -2321,6 +2322,9 @@ class ES8 {
|
|
|
2321
2322
|
_processExtract(prepareMUpsert, prepareMGet, metadata, document, extractedDocuments, documentsToGet) {
|
|
2322
2323
|
let extractedDocument;
|
|
2323
2324
|
if (prepareMUpsert) {
|
|
2325
|
+
if (document.changes !== undefined && document.changes !== null) {
|
|
2326
|
+
delete document.changes._kuzzle_info;
|
|
2327
|
+
}
|
|
2324
2328
|
extractedDocument = {
|
|
2325
2329
|
_source: {
|
|
2326
2330
|
// Do not use destructuring, it's 10x slower
|
|
@@ -2330,6 +2334,9 @@ class ES8 {
|
|
|
2330
2334
|
};
|
|
2331
2335
|
}
|
|
2332
2336
|
else {
|
|
2337
|
+
if (document.body !== undefined && document.body !== null) {
|
|
2338
|
+
delete document.body._kuzzle_info;
|
|
2339
|
+
}
|
|
2333
2340
|
extractedDocument = {
|
|
2334
2341
|
// Do not use destructuring, it's 10x slower
|
|
2335
2342
|
_source: Object.assign({}, metadata, document.body),
|
|
@@ -2758,7 +2765,7 @@ class ES8 {
|
|
|
2758
2765
|
return;
|
|
2759
2766
|
}
|
|
2760
2767
|
esState = esStateEnum.AWAITING;
|
|
2761
|
-
|
|
2768
|
+
this.logger.info("[ℹ] Trying to connect to Elasticsearch...");
|
|
2762
2769
|
while (esState !== esStateEnum.OK) {
|
|
2763
2770
|
try {
|
|
2764
2771
|
// Wait for at least 1 shard to be initialized
|
|
@@ -2766,11 +2773,11 @@ class ES8 {
|
|
|
2766
2773
|
wait_for_no_initializing_shards: true,
|
|
2767
2774
|
});
|
|
2768
2775
|
if (health.number_of_pending_tasks === 0) {
|
|
2769
|
-
|
|
2776
|
+
this.logger.info("[✔] Elasticsearch is ready");
|
|
2770
2777
|
esState = esStateEnum.OK;
|
|
2771
2778
|
}
|
|
2772
2779
|
else {
|
|
2773
|
-
|
|
2780
|
+
this.logger.info(`[ℹ] Still waiting for Elasticsearch: ${health.number_of_pending_tasks} cluster tasks remaining`);
|
|
2774
2781
|
await bluebird_1.default.delay(1000);
|
|
2775
2782
|
}
|
|
2776
2783
|
}
|
|
@@ -2,6 +2,7 @@ import Service from "../service";
|
|
|
2
2
|
import { storeScopeEnum } from "../../core/storage/storeScopeEnum";
|
|
3
3
|
export declare class Elasticsearch extends Service {
|
|
4
4
|
client: any;
|
|
5
|
+
private readonly logger;
|
|
5
6
|
constructor(config: any, scope?: storeScopeEnum);
|
|
6
7
|
static buildClient(config: any, version?: "7" | "8"): any;
|
|
7
8
|
_initSequence(): Promise<void>;
|
|
@@ -13,7 +13,7 @@ const storeScopeEnum_1 = require("../../core/storage/storeScopeEnum");
|
|
|
13
13
|
class Elasticsearch extends service_1.default {
|
|
14
14
|
constructor(config, scope = storeScopeEnum_1.storeScopeEnum.PUBLIC) {
|
|
15
15
|
super("elasticsearch", config);
|
|
16
|
-
global.kuzzle.log.
|
|
16
|
+
this.logger = global.kuzzle.log.child("service:storage:elasticsearch");
|
|
17
17
|
if (config.majorVersion === "7") {
|
|
18
18
|
this.client = new elasticsearch_1.ES7(config, scope);
|
|
19
19
|
}
|
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.
|
|
4
|
+
"version": "2.46.0-beta.1",
|
|
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": {
|
|
@@ -33,21 +33,21 @@
|
|
|
33
33
|
"bluebird": "3.7.2",
|
|
34
34
|
"cli-color": "2.0.4",
|
|
35
35
|
"cookie": "1.0.2",
|
|
36
|
-
"debug": "4.4.
|
|
36
|
+
"debug": "4.4.3",
|
|
37
37
|
"denque": "2.1.0",
|
|
38
38
|
"didyoumean": "1.2.2",
|
|
39
39
|
"dumpme": "2.0.0",
|
|
40
40
|
"eventemitter3": "5.0.1",
|
|
41
|
-
"inquirer": "12.
|
|
42
|
-
"ioredis": "5.
|
|
41
|
+
"inquirer": "12.9.6",
|
|
42
|
+
"ioredis": "5.8.0",
|
|
43
43
|
"js-yaml": "4.1.0",
|
|
44
44
|
"json-stable-stringify": "1.3.0",
|
|
45
45
|
"json2yaml": "1.1.0",
|
|
46
46
|
"jsonwebtoken": "9.0.2",
|
|
47
47
|
"koncorde": "4.6.0",
|
|
48
|
-
"kuzzle-logger": "1.
|
|
48
|
+
"kuzzle-logger": "1.4.0",
|
|
49
49
|
"kuzzle-plugin-auth-passport-local": "6.4.1",
|
|
50
|
-
"kuzzle-sdk": ">=7.15.
|
|
50
|
+
"kuzzle-sdk": ">=7.15.1",
|
|
51
51
|
"kuzzle-vault": "2.1.0",
|
|
52
52
|
"lodash": "4.17.21",
|
|
53
53
|
"long": "5.3.2",
|
|
@@ -59,9 +59,9 @@
|
|
|
59
59
|
"pino-caller": "4.0.0",
|
|
60
60
|
"pino-elasticsearch": "8.1.0",
|
|
61
61
|
"pino-loki": "2.6.0",
|
|
62
|
-
"pino-pretty": "13.
|
|
62
|
+
"pino-pretty": "13.1.1",
|
|
63
63
|
"pino-transport-ecs": "1.1.0",
|
|
64
|
-
"protobufjs": "7.5.
|
|
64
|
+
"protobufjs": "7.5.4",
|
|
65
65
|
"rc": "1.2.8",
|
|
66
66
|
"sdk-es7": "npm:@elastic/elasticsearch@7.13.0",
|
|
67
67
|
"sdk-es8": "npm:@elastic/elasticsearch@8.17.1",
|
|
@@ -82,9 +82,9 @@
|
|
|
82
82
|
"url": "git://github.com/kuzzleio/kuzzle.git"
|
|
83
83
|
},
|
|
84
84
|
"devDependencies": {
|
|
85
|
-
"@commitlint/cli": "
|
|
86
|
-
"@commitlint/config-conventional": "
|
|
87
|
-
"@jest/globals": "30.
|
|
85
|
+
"@commitlint/cli": "20.0.0",
|
|
86
|
+
"@commitlint/config-conventional": "20.0.0",
|
|
87
|
+
"@jest/globals": "30.1.2",
|
|
88
88
|
"@types/bluebird": "3.5.42",
|
|
89
89
|
"@types/cookie": "1.0.0",
|
|
90
90
|
"@types/jest": "30.0.0",
|
|
@@ -96,10 +96,10 @@
|
|
|
96
96
|
"cucumber": "6.0.7",
|
|
97
97
|
"cz-conventional-changelog": "3.3.0",
|
|
98
98
|
"eslint-plugin-kuzzle": "0.0.14",
|
|
99
|
-
"jest": "30.
|
|
100
|
-
"mocha": "11.7.
|
|
99
|
+
"jest": "30.1.3",
|
|
100
|
+
"mocha": "11.7.2",
|
|
101
101
|
"mock-require": "3.0.3",
|
|
102
|
-
"mqtt": "5.
|
|
102
|
+
"mqtt": "5.14.1",
|
|
103
103
|
"nyc": "17.1.0",
|
|
104
104
|
"request": "2.88.2",
|
|
105
105
|
"request-promise": "4.2.6",
|
|
@@ -109,16 +109,16 @@
|
|
|
109
109
|
"should-sinon": "0.0.6",
|
|
110
110
|
"sinon": "21.0.0",
|
|
111
111
|
"strip-json-comments": "https://github.com/sindresorhus/strip-json-comments/archive/refs/tags/v3.1.1.tar.gz",
|
|
112
|
-
"ts-jest": "29.4.
|
|
112
|
+
"ts-jest": "29.4.4",
|
|
113
113
|
"ts-node": "10.9.2",
|
|
114
|
-
"tsx": "4.20.
|
|
115
|
-
"typescript": "5.
|
|
116
|
-
"yaml": "2.8.
|
|
114
|
+
"tsx": "4.20.6",
|
|
115
|
+
"typescript": "5.4.5",
|
|
116
|
+
"yaml": "2.8.1"
|
|
117
117
|
},
|
|
118
118
|
"engines": {
|
|
119
119
|
"node": ">=18.0.0 <23.0.0"
|
|
120
120
|
},
|
|
121
|
-
"packageManager": "npm@11.
|
|
121
|
+
"packageManager": "npm@11.6.1",
|
|
122
122
|
"engineStrict": true,
|
|
123
123
|
"license": "Apache-2.0",
|
|
124
124
|
"files": [
|