ravendb
Version:
RavenDB client for Node.js
218 lines • 11.2 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.AuthorizationInfo = exports.SupportedFeatures = exports.TestConnectionFeatures = exports.HeartbeatsFeatures = exports.SubscriptionFeatures = exports.DropFeatures = exports.NoneFeatures = exports.PingFeatures = exports.TEST_CONNECTION_TCP_VERSION = exports.SUBSCRIPTION_TCP_VERSION = exports.HEARTBEATS_TCP_VERSION = exports.TEST_CONNECTION_BASE_LINE = exports.TCP_CONNECTIONS_WITH_COMPRESSION = exports.SUBSCRIPTION_TIME_SERIES_INCLUDES = exports.SUBSCRIPTION_COUNTER_INCLUDES = exports.SUBSCRIPTION_INCLUDES = exports.SUBSCRIPTION_BASE_LINE = exports.HEARTBEATS_WITH_TCP_COMPRESSION = exports.HEARTBEATS_42000 = exports.HEARTBEATS_41200 = exports.HEARTBEATS_BASE_LINE = exports.DROP_BASE_LINE = exports.NONE_BASE_LINE = exports.PING_BASE_LINE = exports.NUMBER_OR_RETRIES_FOR_SENDING_TCP_HEADER = void 0;
exports.operationVersionSupported = operationVersionSupported;
exports.getOperationTcpVersion = getOperationTcpVersion;
exports.getSupportedFeaturesFor = getSupportedFeaturesFor;
const index_js_1 = require("../../Exceptions/index.js");
const TypeUtil_js_1 = require("../../Utility/TypeUtil.js");
exports.NUMBER_OR_RETRIES_FOR_SENDING_TCP_HEADER = 2;
exports.PING_BASE_LINE = -1;
exports.NONE_BASE_LINE = -1;
exports.DROP_BASE_LINE = -2;
exports.HEARTBEATS_BASE_LINE = 20;
exports.HEARTBEATS_41200 = 41_200;
exports.HEARTBEATS_42000 = 42_000;
exports.HEARTBEATS_WITH_TCP_COMPRESSION = 54_000;
exports.SUBSCRIPTION_BASE_LINE = 40;
exports.SUBSCRIPTION_INCLUDES = 41_400;
exports.SUBSCRIPTION_COUNTER_INCLUDES = 50_000;
exports.SUBSCRIPTION_TIME_SERIES_INCLUDES = 51_000;
exports.TCP_CONNECTIONS_WITH_COMPRESSION = 53_000;
exports.TEST_CONNECTION_BASE_LINE = 50;
exports.HEARTBEATS_TCP_VERSION = exports.HEARTBEATS_WITH_TCP_COMPRESSION;
exports.SUBSCRIPTION_TCP_VERSION = exports.TCP_CONNECTIONS_WITH_COMPRESSION;
exports.TEST_CONNECTION_TCP_VERSION = exports.TEST_CONNECTION_BASE_LINE;
class PingFeatures {
baseLine = true;
}
exports.PingFeatures = PingFeatures;
class NoneFeatures {
baseLine = true;
}
exports.NoneFeatures = NoneFeatures;
class DropFeatures {
baseLine = true;
}
exports.DropFeatures = DropFeatures;
class SubscriptionFeatures {
baseLine = true;
includes = false;
counterIncludes = false;
timeSeriesIncludes = false;
}
exports.SubscriptionFeatures = SubscriptionFeatures;
class HeartbeatsFeatures {
baseLine = true;
sendChangesOnly = false;
includeServerInfo;
}
exports.HeartbeatsFeatures = HeartbeatsFeatures;
class TestConnectionFeatures {
baseLine = true;
}
exports.TestConnectionFeatures = TestConnectionFeatures;
class SupportedFeatures {
protocolVersion;
constructor(versionOrSource) {
if (TypeUtil_js_1.TypeUtil.isNumber(versionOrSource)) {
this.protocolVersion = versionOrSource;
return;
}
const source = versionOrSource;
this.protocolVersion = source.protocolVersion;
this.ping = source.ping;
this.none = source.none;
this.drop = source.drop;
this.subscription = source.subscription;
this.heartbeats = source.heartbeats;
this.testConnection = source.testConnection;
this.dataCompression = source.dataCompression;
}
ping;
none;
drop;
subscription;
heartbeats;
testConnection;
dataCompression;
}
exports.SupportedFeatures = SupportedFeatures;
const operationsToSupportedProtocolVersions = new Map();
const supportedFeaturesByProtocol = new Map();
{
operationsToSupportedProtocolVersions.set("Ping", [exports.PING_BASE_LINE]);
operationsToSupportedProtocolVersions.set("None", [exports.NONE_BASE_LINE]);
operationsToSupportedProtocolVersions.set("Drop", [exports.DROP_BASE_LINE]);
operationsToSupportedProtocolVersions.set("Subscription", [
exports.TCP_CONNECTIONS_WITH_COMPRESSION, exports.SUBSCRIPTION_TIME_SERIES_INCLUDES, exports.SUBSCRIPTION_COUNTER_INCLUDES,
exports.SUBSCRIPTION_INCLUDES, exports.SUBSCRIPTION_BASE_LINE
]);
operationsToSupportedProtocolVersions.set("Heartbeats", [
exports.HEARTBEATS_TCP_VERSION,
exports.HEARTBEATS_42000,
exports.HEARTBEATS_41200,
exports.HEARTBEATS_BASE_LINE
]);
operationsToSupportedProtocolVersions.set("TestConnection", [exports.TEST_CONNECTION_BASE_LINE]);
const pingFeaturesMap = new Map();
supportedFeaturesByProtocol.set("Ping", pingFeaturesMap);
const pingFeatures = new SupportedFeatures(exports.PING_BASE_LINE);
pingFeatures.ping = new PingFeatures();
pingFeaturesMap.set(exports.PING_BASE_LINE, pingFeatures);
const noneFeaturesMap = new Map();
supportedFeaturesByProtocol.set("None", noneFeaturesMap);
const noneFeatures = new SupportedFeatures(exports.NONE_BASE_LINE);
noneFeatures.none = new NoneFeatures();
noneFeaturesMap.set(exports.NONE_BASE_LINE, noneFeatures);
const dropFeaturesMap = new Map();
supportedFeaturesByProtocol.set("Drop", dropFeaturesMap);
const dropFeatures = new SupportedFeatures(exports.DROP_BASE_LINE);
dropFeatures.drop = new DropFeatures();
dropFeaturesMap.set(exports.DROP_BASE_LINE, dropFeatures);
const subscriptionFeaturesMap = new Map();
supportedFeaturesByProtocol.set("Subscription", subscriptionFeaturesMap);
const subscriptionFeatures = new SupportedFeatures(exports.SUBSCRIPTION_BASE_LINE);
subscriptionFeatures.subscription = new SubscriptionFeatures();
subscriptionFeaturesMap.set(exports.SUBSCRIPTION_BASE_LINE, subscriptionFeatures);
const subscriptions41400Features = new SupportedFeatures(exports.SUBSCRIPTION_INCLUDES);
subscriptions41400Features.subscription = new SubscriptionFeatures();
subscriptions41400Features.subscription.includes = true;
subscriptionFeaturesMap.set(exports.SUBSCRIPTION_INCLUDES, subscriptions41400Features);
const subscriptions50000Features = new SupportedFeatures(exports.SUBSCRIPTION_COUNTER_INCLUDES);
subscriptions50000Features.subscription = new SubscriptionFeatures();
subscriptions50000Features.subscription.includes = true;
subscriptions50000Features.subscription.counterIncludes = true;
subscriptionFeaturesMap.set(exports.SUBSCRIPTION_COUNTER_INCLUDES, subscriptions50000Features);
const subscriptions51000Features = new SupportedFeatures(exports.SUBSCRIPTION_TIME_SERIES_INCLUDES);
subscriptions51000Features.subscription = new SubscriptionFeatures();
subscriptions51000Features.subscription.includes = true;
subscriptions51000Features.subscription.counterIncludes = true;
subscriptions51000Features.subscription.timeSeriesIncludes = true;
subscriptionFeaturesMap.set(exports.SUBSCRIPTION_TIME_SERIES_INCLUDES, subscriptions51000Features);
const subscriptions53000Features = new SupportedFeatures(exports.TCP_CONNECTIONS_WITH_COMPRESSION);
subscriptions53000Features.dataCompression = true;
subscriptions53000Features.subscription = new SubscriptionFeatures();
subscriptions53000Features.subscription.includes = true;
subscriptions53000Features.subscription.counterIncludes = true;
subscriptions53000Features.subscription.timeSeriesIncludes = true;
subscriptionFeaturesMap.set(exports.TCP_CONNECTIONS_WITH_COMPRESSION, subscriptions53000Features);
const heartbeatsFeaturesMap = new Map();
supportedFeaturesByProtocol.set("Heartbeats", heartbeatsFeaturesMap);
const heartbeatsFeatures = new SupportedFeatures(exports.HEARTBEATS_BASE_LINE);
heartbeatsFeatures.heartbeats = new HeartbeatsFeatures();
heartbeatsFeaturesMap.set(exports.HEARTBEATS_BASE_LINE, heartbeatsFeatures);
const heartbeats41200Features = new SupportedFeatures(exports.HEARTBEATS_41200);
heartbeats41200Features.heartbeats = new HeartbeatsFeatures();
heartbeats41200Features.heartbeats.sendChangesOnly = true;
heartbeatsFeaturesMap.set(exports.HEARTBEATS_41200, heartbeats41200Features);
const heartbeats42000Features = new SupportedFeatures(exports.HEARTBEATS_42000);
heartbeats42000Features.heartbeats = new HeartbeatsFeatures();
heartbeats42000Features.heartbeats.sendChangesOnly = true;
heartbeats42000Features.heartbeats.includeServerInfo = true;
heartbeatsFeaturesMap.set(exports.HEARTBEATS_42000, heartbeats42000Features);
const heartbeatsWithTcpCompressionFeatures = new SupportedFeatures(exports.HEARTBEATS_WITH_TCP_COMPRESSION);
heartbeatsWithTcpCompressionFeatures.heartbeats = new HeartbeatsFeatures();
heartbeatsWithTcpCompressionFeatures.heartbeats.sendChangesOnly = true;
heartbeatsWithTcpCompressionFeatures.heartbeats.includeServerInfo = true;
heartbeatsWithTcpCompressionFeatures.dataCompression = true;
heartbeatsFeaturesMap.set(exports.HEARTBEATS_WITH_TCP_COMPRESSION, heartbeatsWithTcpCompressionFeatures);
const testConnectionFeaturesMap = new Map();
supportedFeaturesByProtocol.set("TestConnection", testConnectionFeaturesMap);
const testConnectionFeatures = new SupportedFeatures(exports.TEST_CONNECTION_BASE_LINE);
testConnectionFeatures.testConnection = new TestConnectionFeatures();
testConnectionFeaturesMap.set(exports.TEST_CONNECTION_BASE_LINE, testConnectionFeatures);
}
function operationVersionSupported(operationType, version, currentRef) {
currentRef(-1);
const supportedProtocols = operationsToSupportedProtocolVersions.get(operationType);
if (!supportedProtocols) {
(0, index_js_1.throwError)("InvalidOperationException", "This is a bug. Probably you forgot to add '"
+ operationType + "' operation to the operationsToSupportedProtocolVersions map");
}
for (const current of supportedProtocols) {
currentRef(current);
if (current === version) {
return "Supported";
}
if (current < version) {
return "NotSupported";
}
}
return "OutOfRange";
}
function getOperationTcpVersion(operationType, index) {
// we don't check the if the index go out of range, since this is expected and means that we don't have
switch (operationType) {
case "Ping":
case "None": {
return -1;
}
case "Drop": {
return -2;
}
case "Subscription":
case "Replication":
case "Cluster":
case "Heartbeats":
case "TestConnection": {
return operationsToSupportedProtocolVersions.get(operationType)[index];
}
default: {
(0, index_js_1.throwError)("InvalidArgumentException", "Invalid operation type: " + operationType);
}
}
}
function getSupportedFeaturesFor(type, protocolVersion) {
const features = supportedFeaturesByProtocol.get(type).get(protocolVersion);
if (!features) {
(0, index_js_1.throwError)("InvalidArgumentException", type + "in protocol " + protocolVersion + " was not found in the features set");
}
return features;
}
class AuthorizationInfo {
authorizeAs;
authorizationFor;
}
exports.AuthorizationInfo = AuthorizationInfo;
//# sourceMappingURL=TcpConnectionHeaderMessage.js.map