@gomomento/sdk-core 1.19.0 → 1.21.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gomomento/sdk-core",
3
- "version": "1.19.0",
3
+ "version": "1.21.0",
4
4
  "description": "Common code for Momento JS SDKs",
5
5
  "main": "dist/src/index.js",
6
6
  "files": [
@@ -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,2 +0,0 @@
1
- export * from './grpc-configuration';
2
- export * from './transport-strategy';
@@ -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==