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