@gomomento/sdk-core 1.19.0 → 1.20.0
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/package.json +1 -1
- package/dist/src/config/transport/grpc-configuration.d.ts +0 -41
- package/dist/src/config/transport/grpc-configuration.js +0 -3
- package/dist/src/config/transport/index.d.ts +0 -2
- package/dist/src/config/transport/index.js +0 -19
- package/dist/src/config/transport/transport-strategy.d.ts +0 -77
- package/dist/src/config/transport/transport-strategy.js +0 -60
package/package.json
CHANGED
@@ -1,41 +0,0 @@
|
|
1
|
-
export interface GrpcConfigurationProps {
|
2
|
-
/**
|
3
|
-
* number of milliseconds the client is willing to wait for an RPC to complete before it is terminated
|
4
|
-
* with a DeadlineExceeded error.
|
5
|
-
*/
|
6
|
-
deadlineMillis: number;
|
7
|
-
/**
|
8
|
-
* the maximum amount of memory, in megabytes, that a session is allowed to consume. Sessions that consume
|
9
|
-
* more than this amount will return a ResourceExhausted error.
|
10
|
-
*/
|
11
|
-
maxSessionMemoryMb: number;
|
12
|
-
}
|
13
|
-
/**
|
14
|
-
* Encapsulates gRPC configuration tunables.
|
15
|
-
* @export
|
16
|
-
* @interface GrpcConfiguration
|
17
|
-
*/
|
18
|
-
export interface GrpcConfiguration {
|
19
|
-
/**
|
20
|
-
* @returns {number} number of milliseconds the client is willing to wait for an RPC to complete before it is terminated
|
21
|
-
* with a DeadlineExceeded error.
|
22
|
-
*/
|
23
|
-
getDeadlineMillis(): number;
|
24
|
-
/**
|
25
|
-
* Copy constructor for overriding the client-side deadline
|
26
|
-
* @param {number} deadlineMillis
|
27
|
-
* @returns {GrpcConfiguration} a new GrpcConfiguration with the specified client-side deadline
|
28
|
-
*/
|
29
|
-
withDeadlineMillis(deadlineMillis: number): GrpcConfiguration;
|
30
|
-
/**
|
31
|
-
* @returns {number} the maximum amount of memory, in megabytes, that a session is allowed to consume. Sessions that consume
|
32
|
-
* more than this amount will return a ResourceExhausted error.
|
33
|
-
*/
|
34
|
-
getMaxSessionMemoryMb(): number;
|
35
|
-
/**
|
36
|
-
* Copy constructor for overriding the max session memory
|
37
|
-
* @param {number} maxSessionMemoryMb the desired maximum amount of memory, in megabytes, to allow a client session to consume
|
38
|
-
* @returns {GrpcConfiguration} a new GrpcConfiguration with the specified maximum memory
|
39
|
-
*/
|
40
|
-
withMaxSessionMemoryMb(maxSessionMemoryMb: number): GrpcConfiguration;
|
41
|
-
}
|
@@ -1,3 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JwYy1jb25maWd1cmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbmZpZy90cmFuc3BvcnQvZ3JwYy1jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEdycGNDb25maWd1cmF0aW9uUHJvcHMge1xuICAvKipcbiAgICogbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGUgY2xpZW50IGlzIHdpbGxpbmcgdG8gd2FpdCBmb3IgYW4gUlBDIHRvIGNvbXBsZXRlIGJlZm9yZSBpdCBpcyB0ZXJtaW5hdGVkXG4gICAqIHdpdGggYSBEZWFkbGluZUV4Y2VlZGVkIGVycm9yLlxuICAgKi9cbiAgZGVhZGxpbmVNaWxsaXM6IG51bWJlcjtcbiAgLyoqXG4gICAqIHRoZSBtYXhpbXVtIGFtb3VudCBvZiBtZW1vcnksIGluIG1lZ2FieXRlcywgdGhhdCBhIHNlc3Npb24gaXMgYWxsb3dlZCB0byBjb25zdW1lLiAgU2Vzc2lvbnMgdGhhdCBjb25zdW1lXG4gICAqIG1vcmUgdGhhbiB0aGlzIGFtb3VudCB3aWxsIHJldHVybiBhIFJlc291cmNlRXhoYXVzdGVkIGVycm9yLlxuICAgKi9cbiAgbWF4U2Vzc2lvbk1lbW9yeU1iOiBudW1iZXI7XG59XG5cbi8qKlxuICogRW5jYXBzdWxhdGVzIGdSUEMgY29uZmlndXJhdGlvbiB0dW5hYmxlcy5cbiAqIEBleHBvcnRcbiAqIEBpbnRlcmZhY2UgR3JwY0NvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcnBjQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoZSBjbGllbnQgaXMgd2lsbGluZyB0byB3YWl0IGZvciBhbiBSUEMgdG8gY29tcGxldGUgYmVmb3JlIGl0IGlzIHRlcm1pbmF0ZWRcbiAgICogICAgd2l0aCBhIERlYWRsaW5lRXhjZWVkZWQgZXJyb3IuXG4gICAqL1xuICBnZXREZWFkbGluZU1pbGxpcygpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENvcHkgY29uc3RydWN0b3IgZm9yIG92ZXJyaWRpbmcgdGhlIGNsaWVudC1zaWRlIGRlYWRsaW5lXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBkZWFkbGluZU1pbGxpc1xuICAgKiBAcmV0dXJucyB7R3JwY0NvbmZpZ3VyYXRpb259IGEgbmV3IEdycGNDb25maWd1cmF0aW9uIHdpdGggdGhlIHNwZWNpZmllZCBjbGllbnQtc2lkZSBkZWFkbGluZVxuICAgKi9cbiAgd2l0aERlYWRsaW5lTWlsbGlzKGRlYWRsaW5lTWlsbGlzOiBudW1iZXIpOiBHcnBjQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogQHJldHVybnMge251bWJlcn0gdGhlIG1heGltdW0gYW1vdW50IG9mIG1lbW9yeSwgaW4gbWVnYWJ5dGVzLCB0aGF0IGEgc2Vzc2lvbiBpcyBhbGxvd2VkIHRvIGNvbnN1bWUuICBTZXNzaW9ucyB0aGF0IGNvbnN1bWVcbiAgICogICAgbW9yZSB0aGFuIHRoaXMgYW1vdW50IHdpbGwgcmV0dXJuIGEgUmVzb3VyY2VFeGhhdXN0ZWQgZXJyb3IuXG4gICAqL1xuICBnZXRNYXhTZXNzaW9uTWVtb3J5TWIoKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDb3B5IGNvbnN0cnVjdG9yIGZvciBvdmVycmlkaW5nIHRoZSBtYXggc2Vzc2lvbiBtZW1vcnlcbiAgICogQHBhcmFtIHtudW1iZXJ9IG1heFNlc3Npb25NZW1vcnlNYiB0aGUgZGVzaXJlZCBtYXhpbXVtIGFtb3VudCBvZiBtZW1vcnksIGluIG1lZ2FieXRlcywgdG8gYWxsb3cgYSBjbGllbnQgc2Vzc2lvbiB0byBjb25zdW1lXG4gICAqIEByZXR1cm5zIHtHcnBjQ29uZmlndXJhdGlvbn0gYSBuZXcgR3JwY0NvbmZpZ3VyYXRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIG1heGltdW0gbWVtb3J5XG4gICAqL1xuICB3aXRoTWF4U2Vzc2lvbk1lbW9yeU1iKG1heFNlc3Npb25NZW1vcnlNYjogbnVtYmVyKTogR3JwY0NvbmZpZ3VyYXRpb247XG59XG4iXX0=
|
@@ -1,19 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
-
if (k2 === undefined) k2 = k;
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
-
}
|
8
|
-
Object.defineProperty(o, k2, desc);
|
9
|
-
}) : (function(o, m, k, k2) {
|
10
|
-
if (k2 === undefined) k2 = k;
|
11
|
-
o[k2] = m[k];
|
12
|
-
}));
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
|
-
};
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
-
__exportStar(require("./grpc-configuration"), exports);
|
18
|
-
__exportStar(require("./transport-strategy"), exports);
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29uZmlnL3RyYW5zcG9ydC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdURBQXFDO0FBQ3JDLHVEQUFxQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZ3JwYy1jb25maWd1cmF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNwb3J0LXN0cmF0ZWd5JztcbiJdfQ==
|
@@ -1,77 +0,0 @@
|
|
1
|
-
import { GrpcConfiguration, GrpcConfigurationProps } from './grpc-configuration';
|
2
|
-
export interface TransportStrategyProps {
|
3
|
-
/**
|
4
|
-
* low-level gRPC settings for communication with the Momento server
|
5
|
-
*/
|
6
|
-
grpcConfiguration: GrpcConfiguration;
|
7
|
-
/**
|
8
|
-
* The maximum duration for which a connection may remain idle before being replaced. This
|
9
|
-
* setting can be used to force re-connection of a client if it has been idle for too long.
|
10
|
-
* In environments such as AWS lambda, if the lambda is suspended for too long the connection
|
11
|
-
* may be closed by the load balancer, resulting in an error on the subsequent request. If
|
12
|
-
* this setting is set to a duration less than the load balancer timeout, we can ensure that
|
13
|
-
* the connection will be refreshed to avoid errors.
|
14
|
-
* @returns {number}
|
15
|
-
*/
|
16
|
-
maxIdleMillis: number;
|
17
|
-
}
|
18
|
-
/**
|
19
|
-
* Configures the network options for communicating with the Momento service.
|
20
|
-
* @export
|
21
|
-
* @interface TransportStrategy
|
22
|
-
*/
|
23
|
-
export interface TransportStrategy {
|
24
|
-
/**
|
25
|
-
* Configures the low-level gRPC settings for the Momento client's communication
|
26
|
-
* with the Momento server.
|
27
|
-
* @returns {GrpcConfiguration}
|
28
|
-
*/
|
29
|
-
getGrpcConfig(): GrpcConfiguration;
|
30
|
-
/**
|
31
|
-
* Copy constructor for overriding the gRPC configuration
|
32
|
-
* @param {GrpcConfiguration} grpcConfig
|
33
|
-
* @returns {TransportStrategy} a new TransportStrategy with the specified gRPC config.
|
34
|
-
*/
|
35
|
-
withGrpcConfig(grpcConfig: GrpcConfiguration): TransportStrategy;
|
36
|
-
/**
|
37
|
-
* Copy constructor to update the client-side timeout
|
38
|
-
* @param {number} clientTimeoutMillis
|
39
|
-
* @returns {TransportStrategy} a new TransportStrategy with the specified client timeout
|
40
|
-
*/
|
41
|
-
withClientTimeoutMillis(clientTimeoutMillis: number): TransportStrategy;
|
42
|
-
/**
|
43
|
-
* The maximum duration for which a connection may remain idle before being replaced. This
|
44
|
-
* setting can be used to force re-connection of a client if it has been idle for too long.
|
45
|
-
* In environments such as AWS lambda, if the lambda is suspended for too long the connection
|
46
|
-
* may be closed by the load balancer, resulting in an error on the subsequent request. If
|
47
|
-
* this setting is set to a duration less than the load balancer timeout, we can ensure that
|
48
|
-
* the connection will be refreshed to avoid errors.
|
49
|
-
* @returns {number}
|
50
|
-
*/
|
51
|
-
getMaxIdleMillis(): number;
|
52
|
-
/**
|
53
|
-
* Copy constructor to update the max idle connection timeout. (See {getMaxIdleMillis}.)
|
54
|
-
* @param {number} maxIdleMillis
|
55
|
-
* @returns {TransportStrategy} a new TransportStrategy with the specified max idle connection timeout.
|
56
|
-
*/
|
57
|
-
withMaxIdleMillis(maxIdleMillis: number): TransportStrategy;
|
58
|
-
}
|
59
|
-
export declare class StaticGrpcConfiguration implements GrpcConfiguration {
|
60
|
-
private readonly deadlineMillis;
|
61
|
-
private readonly maxSessionMemoryMb;
|
62
|
-
constructor(props: GrpcConfigurationProps);
|
63
|
-
getDeadlineMillis(): number;
|
64
|
-
getMaxSessionMemoryMb(): number;
|
65
|
-
withDeadlineMillis(deadlineMillis: number): StaticGrpcConfiguration;
|
66
|
-
withMaxSessionMemoryMb(maxSessionMemoryMb: number): StaticGrpcConfiguration;
|
67
|
-
}
|
68
|
-
export declare class StaticTransportStrategy implements TransportStrategy {
|
69
|
-
private readonly grpcConfig;
|
70
|
-
private readonly maxIdleMillis;
|
71
|
-
constructor(props: TransportStrategyProps);
|
72
|
-
getGrpcConfig(): GrpcConfiguration;
|
73
|
-
withGrpcConfig(grpcConfig: GrpcConfiguration): StaticTransportStrategy;
|
74
|
-
getMaxIdleMillis(): number;
|
75
|
-
withMaxIdleMillis(maxIdleMillis: number): TransportStrategy;
|
76
|
-
withClientTimeoutMillis(clientTimeout: number): StaticTransportStrategy;
|
77
|
-
}
|
@@ -1,60 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.StaticTransportStrategy = exports.StaticGrpcConfiguration = void 0;
|
4
|
-
class StaticGrpcConfiguration {
|
5
|
-
constructor(props) {
|
6
|
-
this.deadlineMillis = props.deadlineMillis;
|
7
|
-
this.maxSessionMemoryMb = props.maxSessionMemoryMb;
|
8
|
-
}
|
9
|
-
getDeadlineMillis() {
|
10
|
-
return this.deadlineMillis;
|
11
|
-
}
|
12
|
-
getMaxSessionMemoryMb() {
|
13
|
-
return this.maxSessionMemoryMb;
|
14
|
-
}
|
15
|
-
withDeadlineMillis(deadlineMillis) {
|
16
|
-
return new StaticGrpcConfiguration({
|
17
|
-
deadlineMillis: deadlineMillis,
|
18
|
-
maxSessionMemoryMb: this.maxSessionMemoryMb,
|
19
|
-
});
|
20
|
-
}
|
21
|
-
withMaxSessionMemoryMb(maxSessionMemoryMb) {
|
22
|
-
return new StaticGrpcConfiguration({
|
23
|
-
deadlineMillis: this.deadlineMillis,
|
24
|
-
maxSessionMemoryMb: maxSessionMemoryMb,
|
25
|
-
});
|
26
|
-
}
|
27
|
-
}
|
28
|
-
exports.StaticGrpcConfiguration = StaticGrpcConfiguration;
|
29
|
-
class StaticTransportStrategy {
|
30
|
-
constructor(props) {
|
31
|
-
this.grpcConfig = props.grpcConfiguration;
|
32
|
-
this.maxIdleMillis = props.maxIdleMillis;
|
33
|
-
}
|
34
|
-
getGrpcConfig() {
|
35
|
-
return this.grpcConfig;
|
36
|
-
}
|
37
|
-
withGrpcConfig(grpcConfig) {
|
38
|
-
return new StaticTransportStrategy({
|
39
|
-
grpcConfiguration: grpcConfig,
|
40
|
-
maxIdleMillis: this.maxIdleMillis,
|
41
|
-
});
|
42
|
-
}
|
43
|
-
getMaxIdleMillis() {
|
44
|
-
return this.maxIdleMillis;
|
45
|
-
}
|
46
|
-
withMaxIdleMillis(maxIdleMillis) {
|
47
|
-
return new StaticTransportStrategy({
|
48
|
-
grpcConfiguration: this.grpcConfig,
|
49
|
-
maxIdleMillis: maxIdleMillis,
|
50
|
-
});
|
51
|
-
}
|
52
|
-
withClientTimeoutMillis(clientTimeout) {
|
53
|
-
return new StaticTransportStrategy({
|
54
|
-
grpcConfiguration: this.grpcConfig.withDeadlineMillis(clientTimeout),
|
55
|
-
maxIdleMillis: this.maxIdleMillis,
|
56
|
-
});
|
57
|
-
}
|
58
|
-
}
|
59
|
-
exports.StaticTransportStrategy = StaticTransportStrategy;
|
60
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNwb3J0LXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbmZpZy90cmFuc3BvcnQvdHJhbnNwb3J0LXN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWlFQSxNQUFhLHVCQUF1QjtJQUdsQyxZQUFZLEtBQTZCO1FBQ3ZDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQztRQUMzQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDO0lBQ3JELENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsY0FBc0I7UUFDdkMsT0FBTyxJQUFJLHVCQUF1QixDQUFDO1lBQ2pDLGNBQWMsRUFBRSxjQUFjO1lBQzlCLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7U0FDNUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHNCQUFzQixDQUFDLGtCQUEwQjtRQUMvQyxPQUFPLElBQUksdUJBQXVCLENBQUM7WUFDakMsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ25DLGtCQUFrQixFQUFFLGtCQUFrQjtTQUN2QyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUE3QkQsMERBNkJDO0FBRUQsTUFBYSx1QkFBdUI7SUFJbEMsWUFBWSxLQUE2QjtRQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztRQUMxQyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7SUFDM0MsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELGNBQWMsQ0FBQyxVQUE2QjtRQUMxQyxPQUFPLElBQUksdUJBQXVCLENBQUM7WUFDakMsaUJBQWlCLEVBQUUsVUFBVTtZQUM3QixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7U0FDbEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsYUFBcUI7UUFDckMsT0FBTyxJQUFJLHVCQUF1QixDQUFDO1lBQ2pDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxVQUFVO1lBQ2xDLGFBQWEsRUFBRSxhQUFhO1NBQzdCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxhQUFxQjtRQUMzQyxPQUFPLElBQUksdUJBQXVCLENBQUM7WUFDakMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUM7WUFDcEUsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1NBQ2xDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXJDRCwwREFxQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0dycGNDb25maWd1cmF0aW9uLCBHcnBjQ29uZmlndXJhdGlvblByb3BzfSBmcm9tICcuL2dycGMtY29uZmlndXJhdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNwb3J0U3RyYXRlZ3lQcm9wcyB7XG4gIC8qKlxuICAgKiBsb3ctbGV2ZWwgZ1JQQyBzZXR0aW5ncyBmb3IgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBNb21lbnRvIHNlcnZlclxuICAgKi9cbiAgZ3JwY0NvbmZpZ3VyYXRpb246IEdycGNDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogVGhlIG1heGltdW0gZHVyYXRpb24gZm9yIHdoaWNoIGEgY29ubmVjdGlvbiBtYXkgcmVtYWluIGlkbGUgYmVmb3JlIGJlaW5nIHJlcGxhY2VkLiAgVGhpc1xuICAgKiBzZXR0aW5nIGNhbiBiZSB1c2VkIHRvIGZvcmNlIHJlLWNvbm5lY3Rpb24gb2YgYSBjbGllbnQgaWYgaXQgaGFzIGJlZW4gaWRsZSBmb3IgdG9vIGxvbmcuXG4gICAqIEluIGVudmlyb25tZW50cyBzdWNoIGFzIEFXUyBsYW1iZGEsIGlmIHRoZSBsYW1iZGEgaXMgc3VzcGVuZGVkIGZvciB0b28gbG9uZyB0aGUgY29ubmVjdGlvblxuICAgKiBtYXkgYmUgY2xvc2VkIGJ5IHRoZSBsb2FkIGJhbGFuY2VyLCByZXN1bHRpbmcgaW4gYW4gZXJyb3Igb24gdGhlIHN1YnNlcXVlbnQgcmVxdWVzdC4gIElmXG4gICAqIHRoaXMgc2V0dGluZyBpcyBzZXQgdG8gYSBkdXJhdGlvbiBsZXNzIHRoYW4gdGhlIGxvYWQgYmFsYW5jZXIgdGltZW91dCwgd2UgY2FuIGVuc3VyZSB0aGF0XG4gICAqIHRoZSBjb25uZWN0aW9uIHdpbGwgYmUgcmVmcmVzaGVkIHRvIGF2b2lkIGVycm9ycy5cbiAgICogQHJldHVybnMge251bWJlcn1cbiAgICovXG4gIG1heElkbGVNaWxsaXM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDb25maWd1cmVzIHRoZSBuZXR3b3JrIG9wdGlvbnMgZm9yIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgTW9tZW50byBzZXJ2aWNlLlxuICogQGV4cG9ydFxuICogQGludGVyZmFjZSBUcmFuc3BvcnRTdHJhdGVneVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zcG9ydFN0cmF0ZWd5IHtcbiAgLyoqXG4gICAqIENvbmZpZ3VyZXMgdGhlIGxvdy1sZXZlbCBnUlBDIHNldHRpbmdzIGZvciB0aGUgTW9tZW50byBjbGllbnQncyBjb21tdW5pY2F0aW9uXG4gICAqIHdpdGggdGhlIE1vbWVudG8gc2VydmVyLlxuICAgKiBAcmV0dXJucyB7R3JwY0NvbmZpZ3VyYXRpb259XG4gICAqL1xuICBnZXRHcnBjQ29uZmlnKCk6IEdycGNDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBDb3B5IGNvbnN0cnVjdG9yIGZvciBvdmVycmlkaW5nIHRoZSBnUlBDIGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtIHtHcnBjQ29uZmlndXJhdGlvbn0gZ3JwY0NvbmZpZ1xuICAgKiBAcmV0dXJucyB7VHJhbnNwb3J0U3RyYXRlZ3l9IGEgbmV3IFRyYW5zcG9ydFN0cmF0ZWd5IHdpdGggdGhlIHNwZWNpZmllZCBnUlBDIGNvbmZpZy5cbiAgICovXG4gIHdpdGhHcnBjQ29uZmlnKGdycGNDb25maWc6IEdycGNDb25maWd1cmF0aW9uKTogVHJhbnNwb3J0U3RyYXRlZ3k7XG5cbiAgLyoqXG4gICAqIENvcHkgY29uc3RydWN0b3IgdG8gdXBkYXRlIHRoZSBjbGllbnQtc2lkZSB0aW1lb3V0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjbGllbnRUaW1lb3V0TWlsbGlzXG4gICAqIEByZXR1cm5zIHtUcmFuc3BvcnRTdHJhdGVneX0gYSBuZXcgVHJhbnNwb3J0U3RyYXRlZ3kgd2l0aCB0aGUgc3BlY2lmaWVkIGNsaWVudCB0aW1lb3V0XG4gICAqL1xuICB3aXRoQ2xpZW50VGltZW91dE1pbGxpcyhjbGllbnRUaW1lb3V0TWlsbGlzOiBudW1iZXIpOiBUcmFuc3BvcnRTdHJhdGVneTtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gZHVyYXRpb24gZm9yIHdoaWNoIGEgY29ubmVjdGlvbiBtYXkgcmVtYWluIGlkbGUgYmVmb3JlIGJlaW5nIHJlcGxhY2VkLiAgVGhpc1xuICAgKiBzZXR0aW5nIGNhbiBiZSB1c2VkIHRvIGZvcmNlIHJlLWNvbm5lY3Rpb24gb2YgYSBjbGllbnQgaWYgaXQgaGFzIGJlZW4gaWRsZSBmb3IgdG9vIGxvbmcuXG4gICAqIEluIGVudmlyb25tZW50cyBzdWNoIGFzIEFXUyBsYW1iZGEsIGlmIHRoZSBsYW1iZGEgaXMgc3VzcGVuZGVkIGZvciB0b28gbG9uZyB0aGUgY29ubmVjdGlvblxuICAgKiBtYXkgYmUgY2xvc2VkIGJ5IHRoZSBsb2FkIGJhbGFuY2VyLCByZXN1bHRpbmcgaW4gYW4gZXJyb3Igb24gdGhlIHN1YnNlcXVlbnQgcmVxdWVzdC4gIElmXG4gICAqIHRoaXMgc2V0dGluZyBpcyBzZXQgdG8gYSBkdXJhdGlvbiBsZXNzIHRoYW4gdGhlIGxvYWQgYmFsYW5jZXIgdGltZW91dCwgd2UgY2FuIGVuc3VyZSB0aGF0XG4gICAqIHRoZSBjb25uZWN0aW9uIHdpbGwgYmUgcmVmcmVzaGVkIHRvIGF2b2lkIGVycm9ycy5cbiAgICogQHJldHVybnMge251bWJlcn1cbiAgICovXG4gIGdldE1heElkbGVNaWxsaXMoKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDb3B5IGNvbnN0cnVjdG9yIHRvIHVwZGF0ZSB0aGUgbWF4IGlkbGUgY29ubmVjdGlvbiB0aW1lb3V0LiAgKFNlZSB7Z2V0TWF4SWRsZU1pbGxpc30uKVxuICAgKiBAcGFyYW0ge251bWJlcn0gbWF4SWRsZU1pbGxpc1xuICAgKiBAcmV0dXJucyB7VHJhbnNwb3J0U3RyYXRlZ3l9IGEgbmV3IFRyYW5zcG9ydFN0cmF0ZWd5IHdpdGggdGhlIHNwZWNpZmllZCBtYXggaWRsZSBjb25uZWN0aW9uIHRpbWVvdXQuXG4gICAqL1xuICB3aXRoTWF4SWRsZU1pbGxpcyhtYXhJZGxlTWlsbGlzOiBudW1iZXIpOiBUcmFuc3BvcnRTdHJhdGVneTtcbn1cblxuZXhwb3J0IGNsYXNzIFN0YXRpY0dycGNDb25maWd1cmF0aW9uIGltcGxlbWVudHMgR3JwY0NvbmZpZ3VyYXRpb24ge1xuICBwcml2YXRlIHJlYWRvbmx5IGRlYWRsaW5lTWlsbGlzOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWF4U2Vzc2lvbk1lbW9yeU1iOiBudW1iZXI7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBHcnBjQ29uZmlndXJhdGlvblByb3BzKSB7XG4gICAgdGhpcy5kZWFkbGluZU1pbGxpcyA9IHByb3BzLmRlYWRsaW5lTWlsbGlzO1xuICAgIHRoaXMubWF4U2Vzc2lvbk1lbW9yeU1iID0gcHJvcHMubWF4U2Vzc2lvbk1lbW9yeU1iO1xuICB9XG5cbiAgZ2V0RGVhZGxpbmVNaWxsaXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5kZWFkbGluZU1pbGxpcztcbiAgfVxuXG4gIGdldE1heFNlc3Npb25NZW1vcnlNYigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm1heFNlc3Npb25NZW1vcnlNYjtcbiAgfVxuXG4gIHdpdGhEZWFkbGluZU1pbGxpcyhkZWFkbGluZU1pbGxpczogbnVtYmVyKTogU3RhdGljR3JwY0NvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiBuZXcgU3RhdGljR3JwY0NvbmZpZ3VyYXRpb24oe1xuICAgICAgZGVhZGxpbmVNaWxsaXM6IGRlYWRsaW5lTWlsbGlzLFxuICAgICAgbWF4U2Vzc2lvbk1lbW9yeU1iOiB0aGlzLm1heFNlc3Npb25NZW1vcnlNYixcbiAgICB9KTtcbiAgfVxuXG4gIHdpdGhNYXhTZXNzaW9uTWVtb3J5TWIobWF4U2Vzc2lvbk1lbW9yeU1iOiBudW1iZXIpOiBTdGF0aWNHcnBjQ29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBTdGF0aWNHcnBjQ29uZmlndXJhdGlvbih7XG4gICAgICBkZWFkbGluZU1pbGxpczogdGhpcy5kZWFkbGluZU1pbGxpcyxcbiAgICAgIG1heFNlc3Npb25NZW1vcnlNYjogbWF4U2Vzc2lvbk1lbW9yeU1iLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTdGF0aWNUcmFuc3BvcnRTdHJhdGVneSBpbXBsZW1lbnRzIFRyYW5zcG9ydFN0cmF0ZWd5IHtcbiAgcHJpdmF0ZSByZWFkb25seSBncnBjQ29uZmlnOiBHcnBjQ29uZmlndXJhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBtYXhJZGxlTWlsbGlzOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IFRyYW5zcG9ydFN0cmF0ZWd5UHJvcHMpIHtcbiAgICB0aGlzLmdycGNDb25maWcgPSBwcm9wcy5ncnBjQ29uZmlndXJhdGlvbjtcbiAgICB0aGlzLm1heElkbGVNaWxsaXMgPSBwcm9wcy5tYXhJZGxlTWlsbGlzO1xuICB9XG5cbiAgZ2V0R3JwY0NvbmZpZygpOiBHcnBjQ29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZ3JwY0NvbmZpZztcbiAgfVxuXG4gIHdpdGhHcnBjQ29uZmlnKGdycGNDb25maWc6IEdycGNDb25maWd1cmF0aW9uKTogU3RhdGljVHJhbnNwb3J0U3RyYXRlZ3kge1xuICAgIHJldHVybiBuZXcgU3RhdGljVHJhbnNwb3J0U3RyYXRlZ3koe1xuICAgICAgZ3JwY0NvbmZpZ3VyYXRpb246IGdycGNDb25maWcsXG4gICAgICBtYXhJZGxlTWlsbGlzOiB0aGlzLm1heElkbGVNaWxsaXMsXG4gICAgfSk7XG4gIH1cblxuICBnZXRNYXhJZGxlTWlsbGlzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubWF4SWRsZU1pbGxpcztcbiAgfVxuXG4gIHdpdGhNYXhJZGxlTWlsbGlzKG1heElkbGVNaWxsaXM6IG51bWJlcik6IFRyYW5zcG9ydFN0cmF0ZWd5IHtcbiAgICByZXR1cm4gbmV3IFN0YXRpY1RyYW5zcG9ydFN0cmF0ZWd5KHtcbiAgICAgIGdycGNDb25maWd1cmF0aW9uOiB0aGlzLmdycGNDb25maWcsXG4gICAgICBtYXhJZGxlTWlsbGlzOiBtYXhJZGxlTWlsbGlzLFxuICAgIH0pO1xuICB9XG5cbiAgd2l0aENsaWVudFRpbWVvdXRNaWxsaXMoY2xpZW50VGltZW91dDogbnVtYmVyKTogU3RhdGljVHJhbnNwb3J0U3RyYXRlZ3kge1xuICAgIHJldHVybiBuZXcgU3RhdGljVHJhbnNwb3J0U3RyYXRlZ3koe1xuICAgICAgZ3JwY0NvbmZpZ3VyYXRpb246IHRoaXMuZ3JwY0NvbmZpZy53aXRoRGVhZGxpbmVNaWxsaXMoY2xpZW50VGltZW91dCksXG4gICAgICBtYXhJZGxlTWlsbGlzOiB0aGlzLm1heElkbGVNaWxsaXMsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|