All Downloads are FREE. Search and download functionalities are using the official Maven repository.

package.dist.src.config.configurations.js Maven / Gradle / Ivy

The newest version!
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.InRegion = exports.Lambda = exports.Laptop = void 0;
const configuration_1 = require("./configuration");
const fixed_count_retry_strategy_1 = require("./retry/fixed-count-retry-strategy");
const sdk_core_1 = require("@gomomento/sdk-core");
const __1 = require("..");
const default_momento_logger_1 = require("./logging/default-momento-logger");
// 4 minutes.  We want to remain comfortably underneath the idle timeout for AWS NLB, which is 350s.
const defaultMaxIdleMillis = 4 * 60 * 1000;
const defaultMaxSessionMemoryMb = 256;
const defaultLoggerFactory = new default_momento_logger_1.DefaultMomentoLoggerFactory();
const defaultMiddlewares = [];
function defaultRetryStrategy(loggerFactory) {
    return new fixed_count_retry_strategy_1.FixedCountRetryStrategy({
        loggerFactory: loggerFactory,
        maxAttempts: 3,
    });
}
/**
 * Laptop config provides defaults suitable for a medium-to-high-latency dev environment.  Permissive timeouts, retries, and
 * relaxed latency and throughput targets.
 * @export
 * @class Laptop
 */
class Laptop extends configuration_1.CacheConfiguration {
    /**
     * Provides the latest recommended configuration for a laptop development environment.  NOTE: this configuration may
     * change in future releases to take advantage of improvements we identify for default configurations.
     * @param {MomentoLoggerFactory} [loggerFactory=defaultLoggerFactory]
     * @returns {CacheConfiguration}
     */
    static latest(loggerFactory = defaultLoggerFactory) {
        return Laptop.v1(loggerFactory);
    }
    /**
     * Provides v1 recommended configuration for a laptop development environment.  This configuration is guaranteed not
     * to change in future releases of the Momento node.js SDK.
     * @param {MomentoLoggerFactory} [loggerFactory=defaultLoggerFactory]
     * @returns {CacheConfiguration}
     */
    static v1(loggerFactory = defaultLoggerFactory) {
        const deadlineMillis = 5000;
        const grpcConfig = new __1.StaticGrpcConfiguration({
            deadlineMillis: deadlineMillis,
            maxSessionMemoryMb: defaultMaxSessionMemoryMb,
            keepAlivePermitWithoutCalls: 1,
            keepAliveTimeMs: 5000,
            keepAliveTimeoutMs: 1000,
        });
        const transportStrategy = new __1.StaticTransportStrategy({
            grpcConfiguration: grpcConfig,
            maxIdleMillis: defaultMaxIdleMillis,
        });
        return new Laptop({
            loggerFactory: loggerFactory,
            retryStrategy: defaultRetryStrategy(loggerFactory),
            transportStrategy: transportStrategy,
            middlewares: defaultMiddlewares,
            throwOnErrors: false,
            readConcern: sdk_core_1.ReadConcern.BALANCED,
            compression: undefined,
        });
    }
}
exports.Laptop = Laptop;
class Lambda extends configuration_1.CacheConfiguration {
    /**
     * Provides the latest recommended configuration for a lambda environment.  NOTE: this configuration may
     * change in future releases to take advantage of improvements we identify for default configurations.
     * @param {MomentoLoggerFactory} [loggerFactory=defaultLoggerFactory]
     * @returns {CacheConfiguration}
     */
    static latest(loggerFactory = defaultLoggerFactory) {
        const deadlineMillis = 1100;
        const grpcConfig = new __1.StaticGrpcConfiguration({
            deadlineMillis: deadlineMillis,
            maxSessionMemoryMb: defaultMaxSessionMemoryMb,
            numClients: 1,
        });
        const transportStrategy = new __1.StaticTransportStrategy({
            grpcConfiguration: grpcConfig,
            maxIdleMillis: defaultMaxIdleMillis,
        });
        return new Lambda({
            loggerFactory: loggerFactory,
            retryStrategy: defaultRetryStrategy(loggerFactory),
            transportStrategy: transportStrategy,
            middlewares: defaultMiddlewares,
            throwOnErrors: false,
            readConcern: sdk_core_1.ReadConcern.BALANCED,
            compression: undefined,
        });
    }
}
exports.Lambda = Lambda;
class InRegionDefault extends configuration_1.CacheConfiguration {
    /**
     * Provides the latest recommended configuration for a typical in-region environment.  NOTE: this configuration may
     * change in future releases to take advantage of improvements we identify for default configurations.
     * @param {MomentoLoggerFactory} [loggerFactory=defaultLoggerFactory]
     * @returns {CacheConfiguration}
     */
    static latest(loggerFactory = defaultLoggerFactory) {
        return InRegionDefault.v1(loggerFactory);
    }
    /**
     * Provides v1 recommended configuration for a typical in-region environment.  This configuration is guaranteed not
     * to change in future releases of the Momento node.js SDK.
     * @param {MomentoLoggerFactory} [loggerFactory=defaultLoggerFactory]
     * @returns {CacheConfiguration}
     */
    static v1(loggerFactory = defaultLoggerFactory) {
        const deadlineMillis = 1100;
        const grpcConfig = new __1.StaticGrpcConfiguration({
            deadlineMillis: deadlineMillis,
            maxSessionMemoryMb: defaultMaxSessionMemoryMb,
            keepAlivePermitWithoutCalls: 1,
            keepAliveTimeMs: 5000,
            keepAliveTimeoutMs: 1000,
        });
        const transportStrategy = new __1.StaticTransportStrategy({
            grpcConfiguration: grpcConfig,
            maxIdleMillis: defaultMaxIdleMillis,
        });
        return new InRegionDefault({
            loggerFactory: loggerFactory,
            retryStrategy: defaultRetryStrategy(loggerFactory),
            transportStrategy: transportStrategy,
            middlewares: defaultMiddlewares,
            throwOnErrors: false,
            readConcern: sdk_core_1.ReadConcern.BALANCED,
            compression: undefined,
        });
    }
}
class InRegionLowLatency extends configuration_1.CacheConfiguration {
    /**
     * Provides the latest recommended configuration for an in-region environment with aggressive low-latency requirements.
     * NOTE: this configuration may change in future releases to take advantage of improvements we identify for default
     * configurations.
     * @param {MomentoLoggerFactory} [loggerFactory=defaultLoggerFactory]
     * @returns {CacheConfiguration}
     */
    static latest(loggerFactory = defaultLoggerFactory) {
        return InRegionLowLatency.v1(loggerFactory);
    }
    /**
     * Provides v1 recommended configuration for an in-region environment with aggressive low-latency requirements.
     * This configuration is guaranteed not to change in future releases of the Momento node.js SDK.
     * @param {MomentoLoggerFactory} [loggerFactory=defaultLoggerFactory]
     * @returns {CacheConfiguration}
     */
    static v1(loggerFactory = defaultLoggerFactory) {
        const deadlineMillis = 500;
        const grpcConfig = new __1.StaticGrpcConfiguration({
            deadlineMillis: deadlineMillis,
            maxSessionMemoryMb: defaultMaxSessionMemoryMb,
            keepAlivePermitWithoutCalls: 1,
            keepAliveTimeMs: 5000,
            keepAliveTimeoutMs: 1000,
        });
        const transportStrategy = new __1.StaticTransportStrategy({
            grpcConfiguration: grpcConfig,
            maxIdleMillis: defaultMaxIdleMillis,
        });
        return new InRegionDefault({
            loggerFactory: loggerFactory,
            retryStrategy: defaultRetryStrategy(loggerFactory),
            transportStrategy: transportStrategy,
            middlewares: defaultMiddlewares,
            throwOnErrors: false,
            readConcern: sdk_core_1.ReadConcern.BALANCED,
            compression: undefined,
        });
    }
}
/**
 * InRegion provides defaults suitable for an environment where your client is running in the same region as the Momento
 * service.  It has more aggressive timeouts and retry behavior than the Laptop config.
 * @export
 * @class InRegion
 */
class InRegion {
}
exports.InRegion = InRegion;
/**
 * This config prioritizes throughput and client resource utilization.  It has a slightly relaxed client-side timeout
 * setting to maximize throughput.
 * @type {InRegionDefault}
 */
InRegion.Default = InRegionDefault;
/**
 * This config prioritizes keeping p99.9 latencies as low as possible, potentially sacrificing
 * some throughput to achieve this.  It has a very aggressive client-side timeout.  Use this
 * configuration if the most important factor is to ensure that cache unavailability doesn't force
 * unacceptably high latencies for your own application.
 * @type {InRegionLowLatency}
 */
InRegion.LowLatency = InRegionLowLatency;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uZmlnL2NvbmZpZ3VyYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUFtRDtBQUNuRCxtRkFBMkU7QUFHM0Usa0RBQXNFO0FBQ3RFLDBCQUtZO0FBQ1osNkVBQTZFO0FBRTdFLG9HQUFvRztBQUNwRyxNQUFNLG9CQUFvQixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSyxDQUFDO0FBQzVDLE1BQU0seUJBQXlCLEdBQUcsR0FBRyxDQUFDO0FBQ3RDLE1BQU0sb0JBQW9CLEdBQ3hCLElBQUksb0RBQTJCLEVBQUUsQ0FBQztBQUNwQyxNQUFNLGtCQUFrQixHQUFpQixFQUFFLENBQUM7QUFFNUMsU0FBUyxvQkFBb0IsQ0FDM0IsYUFBbUM7SUFFbkMsT0FBTyxJQUFJLG9EQUF1QixDQUFDO1FBQ2pDLGFBQWEsRUFBRSxhQUFhO1FBQzVCLFdBQVcsRUFBRSxDQUFDO0tBQ2YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBYSxNQUFPLFNBQVEsa0NBQWtCO0lBQzVDOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FDWCxnQkFBc0Msb0JBQW9CO1FBRTFELE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsRUFBRSxDQUNQLGdCQUFzQyxvQkFBb0I7UUFFMUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzVCLE1BQU0sVUFBVSxHQUFzQixJQUFJLDJCQUF1QixDQUFDO1lBQ2hFLGNBQWMsRUFBRSxjQUFjO1lBQzlCLGtCQUFrQixFQUFFLHlCQUF5QjtZQUM3QywyQkFBMkIsRUFBRSxDQUFDO1lBQzlCLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLGtCQUFrQixFQUFFLElBQUk7U0FDekIsQ0FBQyxD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QUM7SUFDOUMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLEVBQUUsQ0FDUCxnQkFBc0Msb0JBQW9CO1FBRTFELE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQztRQUMzQixNQUFNLFVBQVUsR0FBc0IsSUFBSSwyQkFBdUIsQ0FBQztZQUNoRSxjQUFjLEVBQUUsY0FBYztZQUM5QixrQkFBa0IsRUFBRSx5QkFBeUI7WUFDN0MsMkJBQTJCLEVBQUUsQ0FBQztZQUM5QixlQUFlLEVBQUUsSUFBSTtZQUNyQixrQkFBa0IsRUFBRSxJQUFJO1NBQ3pCLENBQUMsQ0FBQztRQUNILE1BQU0saUJBQWlCLEdBQXNCLElBQUksMkJBQXVCLENBQUM7WUFDdkUsaUJBQWlCLEVBQUUsVUFBVTtZQUM3QixhQUFhLEVBQUUsb0JBQW9CO1NBQ3BDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxlQUFlLENBQUM7WUFDekIsYUFBYSxFQUFFLGFBQWE7WUFDNUIsYUFBYSxFQUFFLG9CQUFvQixDQUFDLGFBQWEsQ0FBQztZQUNsRCxpQkFBaUIsRUFBRSxpQkFBaUI7WUFDcEMsV0FBVyxFQUFFLGtCQUFrQjtZQUMvQixhQUFhLEVBQUUsS0FBSztZQUNwQixXQUFXLEVBQUUsc0JBQVcsQ0FBQyxRQUFRO1lBQ2pDLFdBQVcsRUFBRSxTQUFTO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQUVEOzs7OztHQUtHO0FBQ0gsTUFBYSxRQUFROztBQUFyQiw0QkFlQztBQWRDOzs7O0dBSUc7QUFDSSxnQkFBTyxHQUFHLGVBQWUsQ0FBQztBQUNqQzs7Ozs7O0dBTUc7QUFDSSxtQkFBVSxHQUFHLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDYWNoZUNvbmZpZ3VyYXRpb259IGZyb20gJy4vY29uZmlndXJhdGlvbic7XG5pbXBvcnQge0ZpeGVkQ291bnRSZXRyeVN0cmF0ZWd5fSBmcm9tICcuL3JldHJ5L2ZpeGVkLWNvdW50LXJldHJ5LXN0cmF0ZWd5JztcbmltcG9ydCB7UmV0cnlTdHJhdGVneX0gZnJvbSAnLi9yZXRyeS9yZXRyeS1zdHJhdGVneSc7XG5pbXBvcnQge01pZGRsZXdhcmV9IGZyb20gJy4vbWlkZGxld2FyZS9taWRkbGV3YXJlJztcbmltcG9ydCB7TW9tZW50b0xvZ2dlckZhY3RvcnksIFJlYWRDb25jZXJufSBmcm9tICdAZ29tb21lbnRvL3Nkay1jb3JlJztcbmltcG9ydCB7XG4gIEdycGNDb25maWd1cmF0aW9uLFxuICBTdGF0aWNHcnBjQ29uZmlndXJhdGlvbixcbiAgU3RhdGljVHJhbnNwb3J0U3RyYXRlZ3ksXG4gIFRyYW5zcG9ydFN0cmF0ZWd5LFxufSBmcm9tICcuLic7XG5pbXBvcnQge0RlZmF1bHRNb21lbnRvTG9nZ2VyRmFjdG9yeX0gZnJvbSAnLi9sb2dnaW5nL2RlZmF1bHQtbW9tZW50by1sb2dnZXInO1xuXG4vLyA0IG1pbnV0ZXMuICBXZSB3YW50IHRvIHJlbWFpbiBjb21mb3J0YWJseSB1bmRlcm5lYXRoIHRoZSBpZGxlIHRpbWVvdXQgZm9yIEFXUyBOTEIsIHdoaWNoIGlzIDM1MHMuXG5jb25zdCBkZWZhdWx0TWF4SWRsZU1pbGxpcyA9IDQgKiA2MCAqIDFfMDAwO1xuY29uc3QgZGVmYXVsdE1heFNlc3Npb25NZW1vcnlNYiA9IDI1NjtcbmNvbnN0IGRlZmF1bHRMb2dnZXJGYWN0b3J5OiBNb21lbnRvTG9nZ2VyRmFjdG9yeSA9XG4gIG5ldyBEZWZhdWx0TW9tZW50b0xvZ2dlckZhY3RvcnkoKTtcbmNvbnN0IGRlZmF1bHRNaWRkbGV3YXJlczogTWlkZGxld2FyZVtdID0gW107XG5cbmZ1bmN0aW9uIGRlZmF1bHRSZXRyeVN0cmF0ZWd5KFxuICBsb2dnZXJGYWN0b3J5OiBNb21lbnRvTG9nZ2VyRmFjdG9yeVxuKTogUmV0cnlTdHJhdGVneSB7XG4gIHJldHVybiBuZXcgRml4ZWRDb3VudFJldHJ5U3RyYXRlZ3koe1xuICAgIGxvZ2dlckZhY3Rvcnk6IGxvZ2dlckZhY3RvcnksXG4gICAgbWF4QXR0ZW1wdHM6IDMsXG4gIH0pO1xufVxuXG4vKipcbiAqIExhcHRvcCBjb25maWcgcHJvdmlkZXMgZGVmYXVsdHMgc3VpdGFibGUgZm9yIGEgbWVkaXVtLXRvLWhpZ2gtbGF0ZW5jeSBkZXYgZW52aXJvbm1lbnQuICBQZXJtaXNzaXZlIHRpbWVvdXRzLCByZXRyaWVzLCBhbmRcbiAqIHJlbGF4ZWQgbGF0ZW5jeSBhbmQgdGhyb3VnaHB1dCB0YXJnZXRzLlxuICogQGV4cG9ydFxuICogQGNsYXNzIExhcHRvcFxuICovXG5leHBvcnQgY2xhc3MgTGFwdG9wIGV4dGVuZHMgQ2FjaGVDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFByb3ZpZGVzIHRoZSBsYXRlc3QgcmVjb21tZW5kZWQgY29uZmlndXJhdGlvbiBmb3IgYSBsYXB0b3AgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuICBOT1RFOiB0aGlzIGNvbmZpZ3VyYXRpb24gbWF5XG4gICAqIGNoYW5nZSBpbiBmdXR1cmUgcmVsZWFzZXMgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgaW1wcm92ZW1lbnRzIHdlIGlkZW50aWZ5IGZvciBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zLlxuICAgKiBAcGFyYW0ge01vbWVudG9Mb2dnZXJGYWN0b3J5fSBbbG9nZ2VyRmFjdG9yeT1kZWZhdWx0TG9nZ2VyRmFjdG9yeV1cbiAgICogQHJldHVybnMge0NhY2hlQ29uZmlndXJhdGlvbn1cbiAgICovXG4gIHN0YXRpYyBsYXRlc3QoXG4gICAgbG9nZ2VyRmFjdG9yeTogTW9tZW50b0xvZ2dlckZhY3RvcnkgPSBkZWZhdWx0TG9nZ2VyRmFjdG9yeVxuICApOiBDYWNoZUNvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiBMYXB0b3AudjEobG9nZ2VyRmFjdG9yeSk7XG4gIH1cblxuICAvKipcbiAgICogUHJvdmlkZXMgdjEgcmVjb21tZW5kZWQgY29uZmlndXJhdGlvbiBmb3IgYSBsYXB0b3AgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuICBUaGlzIGNvbmZpZ3VyYXRpb24gaXMgZ3VhcmFudGVlZCBub3RcbiAgICogdG8gY2hhbmdlIGluIGZ1dHVyZSByZWxlYXNlcyBvZiB0aGUgTW9tZW50byBub2RlLmpzIFNESy5cbiAgICogQHBhcmFtIHtNb21lbnRvTG9nZ2VyRmFjdG9yeX0gW2xvZ2dlckZhY3Rvcnk9ZGVmYXVsdExvZ2dlckZhY3RvcnldXG4gICAqIEByZXR1cm5zIHtDYWNoZUNvbmZpZ3VyYXRpb259XG4gICAqL1xuICBzdGF0aWMgdjEoXG4gICAgbG9nZ2VyRmFjdG9yeTogTW9tZW50b0xvZ2dlckZhY3RvcnkgPSBkZWZhdWx0TG9nZ2VyRmFjdG9yeVxuICApOiBDYWNoZUNvbmZpZ3VyYXRpb24ge1xuICAgIGNvbnN0IGRlYWRsaW5lTWlsbGlzID0gNTAwMDtcbiAgICBjb25zdCBncnBjQ29uZmlnOiBHcnBjQ29uZmlndXJhdGlvbiA9IG5ldyBTdGF0aWNHcnBjQ29uZmlndXJhdGlvbih7XG4gICAgICBkZWFkbGluZU1pbGxpczogZGVhZGxpbmVNaWxsaXMsXG4gICAgICBtYXhTZXNzaW9uTWVtb3J5TWI6IGRlZmF1bHRNYXhTZXNzaW9uTWVtb3J5TWIsXG4gICAgICBrZWVwQWxpdmVQZXJtaXRXaXRob3V0Q2FsbHM6IDEsXG4gICAgICBrZWVwQWxpdmVUaW1lTXM6IDUwMDAsXG4gICAgICBrZWVwQWxpdmVUaW1lb3V0TXM6IDEwMDAsXG4gICAgfSk7XG4gICAgY29uc3QgdHJhbnNwb3J0U3RyYXRlZ3k6IFRyYW5zcG9ydFN0cmF0ZWd5ID0gbmV3IFN0YXRpY1RyYW5zcG9ydFN0cmF0ZWd5KHtcbiAgICAgIGdycGNDb25maWd1cmF0aW9uOiBncnBjQ29uZmlnLFxuICAgICAgbWF4SWRsZU1pbGxpczogZGVmYXVsdE1heElkbGVNaWxsaXMsXG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBMYXB0b3Aoe1xuICAgICAgbG9nZ2VyRmFjdG9yeTogbG9nZ2VyRmFjdG9yeSxcbiAgICAgIHJldHJ5U3RyYXRlZ3k6IGRlZmF1bHRSZXRyeVN0cmF0ZWd5KGxvZ2dlckZhY3RvcnkpLFxuICAgICAgdHJhbnNwb3J0U3RyYXRlZ3k6IHRyYW5zcG9ydFN0cmF0ZWd5LFxuICAgICAgbWlkZGxld2FyZXM6IGRlZmF1bHRNaWRkbGV3YXJlcyxcbiAgICAgIHRocm93T25FcnJvcnM6IGZhbHNlLFxuICAgICAgcmVhZENvbmNlcm46IFJlYWRDb25jZXJuLkJBTEFOQ0VELFxuICAgICAgY29tcHJlc3Npb246IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGFtYmRhIGV4dGVuZHMgQ2FjaGVDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFByb3ZpZGVzIHRoZSBsYXRlc3QgcmVjb21tZW5kZWQgY29uZmlndXJhdGlvbiBmb3IgYSBsYW1iZGEgZW52aXJvbm1lbnQuICBOT1RFOiB0aGlzIGNvbmZpZ3VyYXRpb24gbWF5XG4gICAqIGNoYW5nZSBpbiBmdXR1cmUgcmVsZWFzZXMgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgaW1wcm92ZW1lbnRzIHdlIGlkZW50aWZ5IGZvciBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zLlxuICAgKiBAcGFyYW0ge01vbWVudG9Mb2dnZXJGYWN0b3J5fSBbbG9nZ2VyRmFjdG9yeT1kZWZhdWx0TG9nZ2VyRmFjdG9yeV1cbiAgICogQHJldHVybnMge0NhY2hlQ29uZmlndXJhdGlvbn1cbiAgICovXG4gIHN0YXRpYyBsYXRlc3QoXG4gICAgbG9nZ2VyRmFjdG9yeTogTW9tZW50b0xvZ2dlckZhY3RvcnkgPSBkZWZhdWx0TG9nZ2VyRmFjdG9yeVxuICApOiBDYWNoZUNvbmZpZ3VyYXRpb24ge1xuICAgIGNvbnN0IGRlYWRsaW5lTWlsbGlzID0gMTEwMDtcbiAgICBjb25zdCBncnBjQ29uZmlnOiBHcnBjQ29uZmlndXJhdGlvbiA9IG5ldyBTdGF0aWNHcnBjQ29uZmlndXJhdGlvbih7XG4gICAgICBkZWFkbGluZU1pbGxpczogZGVhZGxpbmVNaWxsaXMsXG4gICAgICBtYXhTZXNzaW9uTWVtb3J5TWI6IGRlZmF1bHRNYXhTZXNzaW9uTWVtb3J5TWIsXG4gICAgICBudW1DbGllbnRzOiAxLFxuICAgIH0pO1xuICAgIGNvbnN0IHRyYW5zcG9ydFN0cmF0ZWd5OiBUcmFuc3BvcnRTdHJhdGVneSA9IG5ldyBTdGF0aWNUcmFuc3BvcnRTdHJhdGVneSh7XG4gICAgICBncnBjQ29uZmlndXJhdGlvbjogZ3JwY0NvbmZpZyxcbiAgICAgIG1heElkbGVNaWxsaXM6IGRlZmF1bHRNYXhJZGxlTWlsbGlzLFxuICAgIH0pO1xuICAgIHJldHVybiBuZXcgTGFtYmRhKHtcbiAgICAgIGxvZ2dlckZhY3Rvcnk6IGxvZ2dlckZhY3RvcnksXG4gICAgICByZXRyeVN0cmF0ZWd5OiBkZWZhdWx0UmV0cnlTdHJhdGVneShsb2dnZXJGYWN0b3J5KSxcbiAgICAgIHRyYW5zcG9ydFN0cmF0ZWd5OiB0cmFuc3BvcnRTdHJhdGVneSxcbiAgICAgIG1pZGRsZXdhcmVzOiBkZWZhdWx0TWlkZGxld2FyZXMsXG4gICAgICB0aHJvd09uRXJyb3JzOiBmYWxzZSxcbiAgICAgIHJlYWRDb25jZXJuOiBSZWFkQ29uY2Vybi5CQUxBTkNFRCxcbiAgICAgIGNvbXByZXNzaW9uOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgSW5SZWdpb25EZWZhdWx0IGV4dGVuZHMgQ2FjaGVDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFByb3ZpZGVzIHRoZSBsYXRlc3QgcmVjb21tZW5kZWQgY29uZmlndXJhdGlvbiBmb3IgYSB0eXBpY2FsIGluLXJlZ2lvbiBlbnZpcm9ubWVudC4gIE5PVEU6IHRoaXMgY29uZmlndXJhdGlvbiBtYXlcbiAgICogY2hhbmdlIGluIGZ1dHVyZSByZWxlYXNlcyB0byB0YWtlIGFkdmFudGFnZSBvZiBpbXByb3ZlbWVudHMgd2UgaWRlbnRpZnkgZm9yIGRlZmF1bHQgY29uZmlndXJhdGlvbnMuXG4gICAqIEBwYXJhbSB7TW9tZW50b0xvZ2dlckZhY3Rvcnl9IFtsb2dnZXJGYWN0b3J5PWRlZmF1bHRMb2dnZXJGYWN0b3J5XVxuICAgKiBAcmV0dXJucyB7Q2FjaGVDb25maWd1cmF0aW9ufVxuICAgKi9cbiAgc3RhdGljIGxhdGVzdChcbiAgICBsb2dnZXJGYWN0b3J5OiBNb21lbnRvTG9nZ2VyRmFjdG9yeSA9IGRlZmF1bHRMb2dnZXJGYWN0b3J5XG4gICk6IENhY2hlQ29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIEluUmVnaW9uRGVmYXVsdC52MShsb2dnZXJGYWN0b3J5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm92aWRlcyB2MSByZWNvbW1lbmRlZCBjb25maWd1cmF0aW9uIGZvciBhIHR5cGljYWwgaW4tcmVnaW9uIGVudmlyb25tZW50LiAgVGhpcyBjb25maWd1cmF0aW9uIGlzIGd1YXJhbnRlZWQgbm90XG4gICAqIHRvIGNoYW5nZSBpbiBmdXR1cmUgcmVsZWFzZXMgb2YgdGhlIE1vbWVudG8gbm9kZS5qcyBTREsuXG4gICAqIEBwYXJhbSB7TW9tZW50b0xvZ2dlckZhY3Rvcnl9IFtsb2dnZXJGYWN0b3J5PWRlZmF1bHRMb2dnZXJGYWN0b3J5XVxuICAgKiBAcmV0dXJucyB7Q2FjaGVDb25maWd1cmF0aW9ufVxuICAgKi9cbiAgc3RhdGljIHYxKFxuICAgIGxvZ2dlckZhY3Rvcnk6IE1vbWVudG9Mb2dnZXJGYWN0b3J5ID0gZGVmYXVsdExvZ2dlckZhY3RvcnlcbiAgKTogQ2FjaGVDb25maWd1cmF0aW9uIHtcbiAgICBjb25zdCBkZWFkbGluZU1pbGxpcyA9IDExMDA7XG4gICAgY29uc3QgZ3JwY0NvbmZpZzogR3JwY0NvbmZpZ3VyYXRpb24gPSBuZXcgU3RhdGljR3JwY0NvbmZpZ3VyYXRpb24oe1xuICAgICAgZGVhZGxpbmVNaWxsaXM6IGRlYWRsaW5lTWlsbGlzLFxuICAgICAgbWF4U2Vzc2lvbk1lbW9yeU1iOiBkZWZhdWx0TWF4U2Vzc2lvbk1lbW9yeU1iLFxuICAgICAga2VlcEFsaXZlUGVybWl0V2l0aG91dENhbGxzOiAxLFxuICAgICAga2VlcEFsaXZlVGltZU1zOiA1MDAwLFxuICAgICAga2VlcEFsaXZlVGltZW91dE1zOiAxMDAwLFxuICAgIH0pO1xuICAgIGNvbnN0IHRyYW5zcG9ydFN0cmF0ZWd5OiBUcmFuc3BvcnRTdHJhdGVneSA9IG5ldyBTdGF0aWNUcmFuc3BvcnRTdHJhdGVneSh7XG4gICAgICBncnBjQ29uZmlndXJhdGlvbjogZ3JwY0NvbmZpZyxcbiAgICAgIG1heElkbGVNaWxsaXM6IGRlZmF1bHRNYXhJZGxlTWlsbGlzLFxuICAgIH0pO1xuICAgIHJldHVybiBuZXcgSW5SZWdpb25EZWZhdWx0KHtcbiAgICAgIGxvZ2dlckZhY3Rvcnk6IGxvZ2dlckZhY3RvcnksXG4gICAgICByZXRyeVN0cmF0ZWd5OiBkZWZhdWx0UmV0cnlTdHJhdGVneShsb2dnZXJGYWN0b3J5KSxcbiAgICAgIHRyYW5zcG9ydFN0cmF0ZWd5OiB0cmFuc3BvcnRTdHJhdGVneSxcbiAgICAgIG1pZGRsZXdhcmVzOiBkZWZhdWx0TWlkZGxld2FyZXMsXG4gICAgICB0aHJvd09uRXJyb3JzOiBmYWxzZSxcbiAgICAgIHJlYWRDb25jZXJuOiBSZWFkQ29uY2Vybi5CQUxBTkNFRCxcbiAgICAgIGNvbXByZXNzaW9uOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgSW5SZWdpb25Mb3dMYXRlbmN5IGV4dGVuZHMgQ2FjaGVDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFByb3ZpZGVzIHRoZSBsYXRlc3QgcmVjb21tZW5kZWQgY29uZmlndXJhdGlvbiBmb3IgYW4gaW4tcmVnaW9uIGVudmlyb25tZW50IHdpdGggYWdncmVzc2l2ZSBsb3ctbGF0ZW5jeSByZXF1aXJlbWVudHMuXG4gICAqIE5PVEU6IHRoaXMgY29uZmlndXJhdGlvbiBtYXkgY2hhbmdlIGluIGZ1dHVyZSByZWxlYXNlcyB0byB0YWtlIGFkdmFudGFnZSBvZiBpbXByb3ZlbWVudHMgd2UgaWRlbnRpZnkgZm9yIGRlZmF1bHRcbiAgICogY29uZmlndXJhdGlvbnMuXG4gICAqIEBwYXJhbSB7TW9tZW50b0xvZ2dlckZhY3Rvcnl9IFtsb2dnZXJGYWN0b3J5PWRlZmF1bHRMb2dnZXJGYWN0b3J5XVxuICAgKiBAcmV0dXJucyB7Q2FjaGVDb25maWd1cmF0aW9ufVxuICAgKi9cbiAgc3RhdGljIGxhdGVzdChcbiAgICBsb2dnZXJGYWN0b3J5OiBNb21lbnRvTG9nZ2VyRmFjdG9yeSA9IGRlZmF1bHRMb2dnZXJGYWN0b3J5XG4gICk6IENhY2hlQ29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIEluUmVnaW9uTG93TGF0ZW5jeS52MShsb2dnZXJGYWN0b3J5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm92aWRlcyB2MSByZWNvbW1lbmRlZCBjb25maWd1cmF0aW9uIGZvciBhbiBpbi1yZWdpb24gZW52aXJvbm1lbnQgd2l0aCBhZ2dyZXNzaXZlIGxvdy1sYXRlbmN5IHJlcXVpcmVtZW50cy5cbiAgICogVGhpcyBjb25maWd1cmF0aW9uIGlzIGd1YXJhbnRlZWQgbm90IHRvIGNoYW5nZSBpbiBmdXR1cmUgcmVsZWFzZXMgb2YgdGhlIE1vbWVudG8gbm9kZS5qcyBTREsuXG4gICAqIEBwYXJhbSB7TW9tZW50b0xvZ2dlckZhY3Rvcnl9IFtsb2dnZXJGYWN0b3J5PWRlZmF1bHRMb2dnZXJGYWN0b3J5XVxuICAgKiBAcmV0dXJucyB7Q2FjaGVDb25maWd1cmF0aW9ufVxuICAgKi9cbiAgc3RhdGljIHYxKFxuICAgIGxvZ2dlckZhY3Rvcnk6IE1vbWVudG9Mb2dnZXJGYWN0b3J5ID0gZGVmYXVsdExvZ2dlckZhY3RvcnlcbiAgKTogQ2FjaGVDb25maWd1cmF0aW9uIHtcbiAgICBjb25zdCBkZWFkbGluZU1pbGxpcyA9IDUwMDtcbiAgICBjb25zdCBncnBjQ29uZmlnOiBHcnBjQ29uZmlndXJhdGlvbiA9IG5ldyBTdGF0aWNHcnBjQ29uZmlndXJhdGlvbih7XG4gICAgICBkZWFkbGluZU1pbGxpczogZGVhZGxpbmVNaWxsaXMsXG4gICAgICBtYXhTZXNzaW9uTWVtb3J5TWI6IGRlZmF1bHRNYXhTZXNzaW9uTWVtb3J5TWIsXG4gICAgICBrZWVwQWxpdmVQZXJtaXRXaXRob3V0Q2FsbHM6IDEsXG4gICAgICBrZWVwQWxpdmVUaW1lTXM6IDUwMDAsXG4gICAgICBrZWVwQWxpdmVUaW1lb3V0TXM6IDEwMDAsXG4gICAgfSk7XG4gICAgY29uc3QgdHJhbnNwb3J0U3RyYXRlZ3k6IFRyYW5zcG9ydFN0cmF0ZWd5ID0gbmV3IFN0YXRpY1RyYW5zcG9ydFN0cmF0ZWd5KHtcbiAgICAgIGdycGNDb25maWd1cmF0aW9uOiBncnBjQ29uZmlnLFxuICAgICAgbWF4SWRsZU1pbGxpczogZGVmYXVsdE1heElkbGVNaWxsaXMsXG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBJblJlZ2lvbkRlZmF1bHQoe1xuICAgICAgbG9nZ2VyRmFjdG9yeTogbG9nZ2VyRmFjdG9yeSxcbiAgICAgIHJldHJ5U3RyYXRlZ3k6IGRlZmF1bHRSZXRyeVN0cmF0ZWd5KGxvZ2dlckZhY3RvcnkpLFxuICAgICAgdHJhbnNwb3J0U3RyYXRlZ3k6IHRyYW5zcG9ydFN0cmF0ZWd5LFxuICAgICAgbWlkZGxld2FyZXM6IGRlZmF1bHRNaWRkbGV3YXJlcyxcbiAgICAgIHRocm93T25FcnJvcnM6IGZhbHNlLFxuICAgICAgcmVhZENvbmNlcm46IFJlYWRDb25jZXJuLkJBTEFOQ0VELFxuICAgICAgY29tcHJlc3Npb246IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEluUmVnaW9uIHByb3ZpZGVzIGRlZmF1bHRzIHN1aXRhYmxlIGZvciBhbiBlbnZpcm9ubWVudCB3aGVyZSB5b3VyIGNsaWVudCBpcyBydW5uaW5nIGluIHRoZSBzYW1lIHJlZ2lvbiBhcyB0aGUgTW9tZW50b1xuICogc2VydmljZS4gIEl0IGhhcyBtb3JlIGFnZ3Jlc3NpdmUgdGltZW91dHMgYW5kIHJldHJ5IGJlaGF2aW9yIHRoYW4gdGhlIExhcHRvcCBjb25maWcuXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgSW5SZWdpb25cbiAqL1xuZXhwb3J0IGNsYXNzIEluUmVnaW9uIHtcbiAgLyoqXG4gICAqIFRoaXMgY29uZmlnIHByaW9yaXRpemVzIHRocm91Z2hwdXQgYW5kIGNsaWVudCByZXNvdXJjZSB1dGlsaXphdGlvbi4gIEl0IGhhcyBhIHNsaWdodGx5IHJlbGF4ZWQgY2xpZW50LXNpZGUgdGltZW91dFxuICAgKiBzZXR0aW5nIHRvIG1heGltaXplIHRocm91Z2hwdXQuXG4gICAqIEB0eXBlIHtJblJlZ2lvbkRlZmF1bHR9XG4gICAqL1xuICBzdGF0aWMgRGVmYXVsdCA9IEluUmVnaW9uRGVmYXVsdDtcbiAgLyoqXG4gICAqIFRoaXMgY29uZmlnIHByaW9yaXRpemVzIGtlZXBpbmcgcDk5LjkgbGF0ZW5jaWVzIGFzIGxvdyBhcyBwb3NzaWJsZSwgcG90ZW50aWFsbHkgc2FjcmlmaWNpbmdcbiAgICogc29tZSB0aHJvdWdocHV0IHRvIGFjaGlldmUgdGhpcy4gIEl0IGhhcyBhIHZlcnkgYWdncmVzc2l2ZSBjbGllbnQtc2lkZSB0aW1lb3V0LiAgVXNlIHRoaXNcbiAgICogY29uZmlndXJhdGlvbiBpZiB0aGUgbW9zdCBpbXBvcnRhbnQgZmFjdG9yIGlzIHRvIGVuc3VyZSB0aGF0IGNhY2hlIHVuYXZhaWxhYmlsaXR5IGRvZXNuJ3QgZm9yY2VcbiAgICogdW5hY2NlcHRhYmx5IGhpZ2ggbGF0ZW5jaWVzIGZvciB5b3VyIG93biBhcHBsaWNhdGlvbi5cbiAgICogQHR5cGUge0luUmVnaW9uTG93TGF0ZW5jeX1cbiAgICovXG4gIHN0YXRpYyBMb3dMYXRlbmN5ID0gSW5SZWdpb25Mb3dMYXRlbmN5O1xufVxuIl19




© 2015 - 2025 Weber Informatics LLC | Privacy Policy