@gomomento/sdk-core 1.37.0 → 1.39.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.
Files changed (27) hide show
  1. package/dist/src/auth/credential-provider.d.ts +21 -48
  2. package/dist/src/auth/credential-provider.js +61 -44
  3. package/dist/src/auth/tokens/disposable-token-scope.d.ts +24 -0
  4. package/dist/src/auth/tokens/disposable-token-scope.js +55 -0
  5. package/dist/src/auth/tokens/disposable-token-scopes.d.ts +3 -2
  6. package/dist/src/auth/tokens/disposable-token-scopes.js +9 -9
  7. package/dist/src/auth/tokens/{token-scope.d.ts → permission-scope.d.ts} +7 -26
  8. package/dist/src/auth/tokens/permission-scope.js +82 -0
  9. package/dist/src/auth/tokens/{token-scopes.d.ts → permission-scopes.d.ts} +7 -7
  10. package/dist/src/auth/tokens/permission-scopes.js +59 -0
  11. package/dist/src/clients/IAuthClient.d.ts +12 -4
  12. package/dist/src/clients/IAuthClient.js +1 -1
  13. package/dist/src/index.d.ts +22 -5
  14. package/dist/src/index.js +27 -19
  15. package/dist/src/internal/clients/auth/AbstractAuthClient.d.ts +26 -18
  16. package/dist/src/internal/clients/auth/AbstractAuthClient.js +29 -17
  17. package/dist/src/internal/utils/auth.d.ts +8 -1
  18. package/dist/src/internal/utils/auth.js +14 -8
  19. package/dist/src/messages/responses/{generate-auth-token.d.ts → generate-api-key.d.ts} +5 -1
  20. package/dist/src/messages/responses/generate-api-key.js +49 -0
  21. package/dist/src/messages/responses/{refresh-auth-token.d.ts → refresh-api-key.d.ts} +6 -1
  22. package/dist/src/messages/responses/refresh-api-key.js +50 -0
  23. package/package.json +1 -1
  24. package/dist/src/auth/tokens/token-scope.js +0 -132
  25. package/dist/src/auth/tokens/token-scopes.js +0 -59
  26. package/dist/src/messages/responses/generate-auth-token.js +0 -43
  27. package/dist/src/messages/responses/refresh-auth-token.js +0 -43
@@ -1,23 +1,13 @@
1
+ import { AllEndpoints } from '../internal/utils';
2
+ export interface BaseEndpointOverride {
3
+ baseEndpoint: string;
4
+ }
5
+ export type EndpointOverrides = BaseEndpointOverride | AllEndpoints;
1
6
  /**
2
7
  * Encapsulates arguments for instantiating an EnvMomentoTokenProvider
3
8
  */
4
9
  interface CredentialProviderProps {
5
- /**
6
- * optionally overrides the default controlEndpoint
7
- */
8
- controlEndpoint?: string;
9
- /**
10
- * optionally overrides the default cacheEndpoint
11
- */
12
- cacheEndpoint?: string;
13
- /**
14
- * optionally overrides the default vectorEndpoint
15
- */
16
- tokenEndpoint?: string;
17
- /**
18
- * optionally overrides the default vectorEndpoint
19
- */
20
- vectorEndpoint?: string;
10
+ endpointOverrides?: EndpointOverrides;
21
11
  }
22
12
  /**
23
13
  * Provides information that the CacheClient needs in order to establish a connection to and authenticate with
@@ -47,21 +37,9 @@ export declare abstract class CredentialProvider {
47
37
  */
48
38
  abstract getVectorEndpoint(): string;
49
39
  /**
50
- * @returns {boolean} true if the cache endpoint was manually overridden at construction time; false otherwise
40
+ * @returns {boolean} true if the endpoints were manually overridden at construction time; false otherwise
51
41
  */
52
- abstract isCacheEndpointOverridden(): boolean;
53
- /**
54
- * @returns {boolean} true if the control endpoint was manually overridden at construction time; false otherwise
55
- */
56
- abstract isControlEndpointOverridden(): boolean;
57
- /**
58
- * @returns {boolean} true if the token endpoint was manually overridden at construction time; false otherwise
59
- */
60
- abstract isTokenEndpointOverridden(): boolean;
61
- /**
62
- * @returns {boolean} true if the vector endpoint was manually overridden at construction time; false otherwise
63
- */
64
- abstract isVectorEndpointOverridden(): boolean;
42
+ abstract areEndpointsOverridden(): boolean;
65
43
  static fromEnvironmentVariable(props: EnvMomentoTokenProviderProps): CredentialProvider;
66
44
  static fromString(props: StringMomentoTokenProviderProps): CredentialProvider;
67
45
  }
@@ -71,33 +49,31 @@ declare abstract class CredentialProviderBase implements CredentialProvider {
71
49
  abstract getControlEndpoint(): string;
72
50
  abstract getTokenEndpoint(): string;
73
51
  abstract getVectorEndpoint(): string;
74
- abstract isCacheEndpointOverridden(): boolean;
75
- abstract isControlEndpointOverridden(): boolean;
76
- abstract isTokenEndpointOverridden(): boolean;
77
- abstract isVectorEndpointOverridden(): boolean;
52
+ abstract areEndpointsOverridden(): boolean;
78
53
  valueOf(): object;
79
54
  }
80
- export interface StringMomentoTokenProviderProps extends CredentialProviderProps {
55
+ export interface StringMomentoApiKeyProviderProps extends CredentialProviderProps {
56
+ /**
57
+ * apiKey the momento API key
58
+ */
59
+ apiKey: string;
60
+ }
61
+ export interface StringMomentoAuthTokenProviderProps extends CredentialProviderProps {
81
62
  /**
82
63
  * authToken the momento auth token
83
64
  */
84
65
  authToken: string;
85
66
  }
67
+ export type StringMomentoTokenProviderProps = StringMomentoApiKeyProviderProps | StringMomentoAuthTokenProviderProps;
86
68
  /**
87
69
  * Reads and parses a momento auth token stored in a String
88
70
  * @export
89
71
  * @class StringMomentoTokenProvider
90
72
  */
91
73
  export declare class StringMomentoTokenProvider extends CredentialProviderBase {
92
- private readonly authToken;
93
- private readonly controlEndpoint;
94
- private readonly cacheEndpoint;
95
- private readonly tokenEndpoint;
96
- private readonly vectorEndpoint;
97
- private readonly controlEndpointOverridden;
98
- private readonly cacheEndpointOverridden;
99
- private readonly tokenEndpointOverridden;
100
- private readonly vectorEndpointOverridden;
74
+ private readonly apiKey;
75
+ private readonly allEndpoints;
76
+ private readonly endpointsOverridden;
101
77
  /**
102
78
  * @param {StringMomentoTokenProviderProps} props configuration options for the token provider
103
79
  */
@@ -107,10 +83,7 @@ export declare class StringMomentoTokenProvider extends CredentialProviderBase {
107
83
  getControlEndpoint(): string;
108
84
  getTokenEndpoint(): string;
109
85
  getVectorEndpoint(): string;
110
- isControlEndpointOverridden(): boolean;
111
- isCacheEndpointOverridden(): boolean;
112
- isTokenEndpointOverridden(): boolean;
113
- isVectorEndpointOverridden(): boolean;
86
+ areEndpointsOverridden(): boolean;
114
87
  }
115
88
  export interface EnvMomentoTokenProviderProps extends CredentialProviderProps {
116
89
  /**
@@ -2,6 +2,16 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EnvMomentoTokenProvider = exports.StringMomentoTokenProvider = exports.CredentialProvider = void 0;
4
4
  const utils_1 = require("../internal/utils");
5
+ function isBaseEndpointOverride(endpointOverrides) {
6
+ return endpointOverrides.baseEndpoint !== undefined;
7
+ }
8
+ function isAllEndpoints(endpointOverrides) {
9
+ const allEndpoints = endpointOverrides;
10
+ return (allEndpoints.cacheEndpoint !== undefined &&
11
+ allEndpoints.controlEndpoint !== undefined &&
12
+ allEndpoints.tokenEndpoint !== undefined &&
13
+ allEndpoints.vectorEndpoint !== undefined);
14
+ }
5
15
  /**
6
16
  * Provides information that the CacheClient needs in order to establish a connection to and authenticate with
7
17
  * the Momento service.
@@ -35,61 +45,71 @@ class StringMomentoTokenProvider extends CredentialProviderBase {
35
45
  * @param {StringMomentoTokenProviderProps} props configuration options for the token provider
36
46
  */
37
47
  constructor(props) {
38
- var _a, _b, _c, _d;
39
48
  super();
40
- const decodedToken = (0, utils_1.decodeAuthToken)(props.authToken);
41
- this.authToken = decodedToken.authToken;
42
- this.controlEndpointOverridden = props.controlEndpoint !== undefined;
43
- const controlEndpoint = (_a = props.controlEndpoint) !== null && _a !== void 0 ? _a : decodedToken.controlEndpoint;
44
- if (controlEndpoint === undefined) {
45
- throw new Error('Malformed token; unable to determine control endpoint. Depending on the type of token you are using, you may need to specify the controlEndpoint explicitly.');
49
+ let key;
50
+ if ('authToken' in props) {
51
+ key = props.authToken;
52
+ }
53
+ else if ('apiKey' in props) {
54
+ key = props.apiKey;
55
+ }
56
+ else {
57
+ throw new Error('Missing required property: authToken or apiKey');
46
58
  }
47
- this.cacheEndpointOverridden = props.cacheEndpoint !== undefined;
48
- const cacheEndpoint = (_b = props.cacheEndpoint) !== null && _b !== void 0 ? _b : decodedToken.cacheEndpoint;
49
- if (cacheEndpoint === undefined) {
50
- throw new Error('Malformed token; unable to determine cache endpoint. Depending on the type of token you are using, you may need to specify the cacheEndpoint explicitly.');
59
+ const decodedToken = (0, utils_1.decodeAuthToken)(key);
60
+ this.apiKey = decodedToken.authToken;
61
+ if (props.endpointOverrides === undefined) {
62
+ this.endpointsOverridden = false;
63
+ if (decodedToken.controlEndpoint === undefined) {
64
+ throw new Error('Malformed token; unable to determine control endpoint. Depending on the type of token you are using, you may need to specify the controlEndpoint explicitly.');
65
+ }
66
+ if (decodedToken.cacheEndpoint === undefined) {
67
+ throw new Error('Malformed token; unable to determine cache endpoint. Depending on the type of token you are using, you may need to specify the cacheEndpoint explicitly.');
68
+ }
69
+ if (decodedToken.tokenEndpoint === undefined) {
70
+ throw new Error('Malformed token; unable to determine token endpoint. Depending on the type of token you are using, you may need to specify the tokenEndpoint explicitly.');
71
+ }
72
+ if (decodedToken.vectorEndpoint === undefined) {
73
+ throw new Error('Malformed token; unable to determine vector endpoint. Depending on the type of token you are using, you may need to specify the vectorEndpoint explicitly.');
74
+ }
75
+ this.allEndpoints = {
76
+ controlEndpoint: decodedToken.controlEndpoint,
77
+ cacheEndpoint: decodedToken.cacheEndpoint,
78
+ tokenEndpoint: decodedToken.tokenEndpoint,
79
+ vectorEndpoint: decodedToken.vectorEndpoint,
80
+ };
51
81
  }
52
- this.tokenEndpointOverridden = props.tokenEndpoint !== undefined;
53
- const tokenEndpoint = (_c = props.tokenEndpoint) !== null && _c !== void 0 ? _c : decodedToken.tokenEndpoint;
54
- if (tokenEndpoint === undefined) {
55
- throw new Error('Malformed token; unable to determine token endpoint. Depending on the type of token you are using, you may need to specify the tokenEndpoint explicitly.');
82
+ else if (isAllEndpoints(props.endpointOverrides)) {
83
+ this.endpointsOverridden = true;
84
+ this.allEndpoints = props.endpointOverrides;
56
85
  }
57
- this.vectorEndpointOverridden = props.vectorEndpoint !== undefined;
58
- const vectorEndpoint = (_d = props.vectorEndpoint) !== null && _d !== void 0 ? _d : decodedToken.vectorEndpoint;
59
- if (vectorEndpoint === undefined) {
60
- throw new Error('Malformed token; unable to determine vector endpoint. Depending on the type of token you are using, you may need to specify the vectorEndpoint explicitly.');
86
+ else if (isBaseEndpointOverride(props.endpointOverrides)) {
87
+ this.endpointsOverridden = true;
88
+ this.allEndpoints = (0, utils_1.populateAllEndpointsFromBaseEndpoint)(props.endpointOverrides.baseEndpoint);
89
+ }
90
+ else {
91
+ throw new Error(
92
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
93
+ `Unsupported endpointOverrides: ${props.endpointOverrides}`);
61
94
  }
62
- this.controlEndpoint = controlEndpoint;
63
- this.cacheEndpoint = cacheEndpoint;
64
- this.tokenEndpoint = decodedToken.tokenEndpoint || cacheEndpoint;
65
- this.vectorEndpoint = vectorEndpoint;
66
95
  }
67
96
  getAuthToken() {
68
- return this.authToken;
97
+ return this.apiKey;
69
98
  }
70
99
  getCacheEndpoint() {
71
- return this.cacheEndpoint;
100
+ return this.allEndpoints.cacheEndpoint;
72
101
  }
73
102
  getControlEndpoint() {
74
- return this.controlEndpoint;
103
+ return this.allEndpoints.controlEndpoint;
75
104
  }
76
105
  getTokenEndpoint() {
77
- return this.tokenEndpoint;
106
+ return this.allEndpoints.tokenEndpoint;
78
107
  }
79
108
  getVectorEndpoint() {
80
- return this.vectorEndpoint;
81
- }
82
- isControlEndpointOverridden() {
83
- return this.controlEndpointOverridden;
84
- }
85
- isCacheEndpointOverridden() {
86
- return this.cacheEndpointOverridden;
87
- }
88
- isTokenEndpointOverridden() {
89
- return this.tokenEndpointOverridden;
109
+ return this.allEndpoints.vectorEndpoint;
90
110
  }
91
- isVectorEndpointOverridden() {
92
- return this.vectorEndpointOverridden;
111
+ areEndpointsOverridden() {
112
+ return this.endpointsOverridden;
93
113
  }
94
114
  }
95
115
  exports.StringMomentoTokenProvider = StringMomentoTokenProvider;
@@ -109,13 +129,10 @@ class EnvMomentoTokenProvider extends StringMomentoTokenProvider {
109
129
  }
110
130
  super({
111
131
  authToken: authToken,
112
- controlEndpoint: props.controlEndpoint,
113
- cacheEndpoint: props.cacheEndpoint,
114
- tokenEndpoint: props.tokenEndpoint,
115
- vectorEndpoint: props.vectorEndpoint,
132
+ endpointOverrides: props.endpointOverrides,
116
133
  });
117
134
  this.environmentVariableName = props.environmentVariableName;
118
135
  }
119
136
  }
120
137
  exports.EnvMomentoTokenProvider = EnvMomentoTokenProvider;
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGVudGlhbC1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRoL2NyZWRlbnRpYWwtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQStEO0FBd0IvRDs7Ozs7R0FLRztBQUNILE1BQXNCLGtCQUFrQjtJQThDdEMsTUFBTSxDQUFDLHVCQUF1QixDQUM1QixLQUFtQztRQUVuQyxPQUFPLElBQUksdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQ2YsS0FBc0M7UUFFdEMsT0FBTyxJQUFJLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDRjtBQXpERCxnREF5REM7QUFFRCxNQUFlLHNCQUFzQjtJQWdCbkMsT0FBTztRQUNMLDZEQUE2RDtRQUM3RCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxXQUFXLENBQUMsQ0FBQztRQUN4RSxNQUFNLEtBQUssR0FBRyxJQUFBLG1CQUFXLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsT0FBTyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBVUQ7Ozs7R0FJRztBQUNILE1BQWEsMEJBQTJCLFNBQVEsc0JBQXNCO0lBV3BFOztPQUVHO0lBQ0gsWUFBWSxLQUFzQzs7UUFDaEQsS0FBSyxFQUFFLENBQUM7UUFDUixNQUFNLFlBQVksR0FBRyxJQUFBLHVCQUFlLEVBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQztRQUN4QyxJQUFJLENBQUMseUJBQXlCLEdBQUcsS0FBSyxDQUFDLGVBQWUsS0FBSyxT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LENBQUMsYUFBYTtZQUNsQyxjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWM7U0FDckMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQztJQUMvRCxDQUFDO0NBQ0Y7QUFyQkQsMERBcUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkZWNvZGVBdXRoVG9rZW4sIGZyb21FbnRyaWVzfSBmcm9tICcuLi9pbnRlcm5hbC91dGlscyc7XG5cbi8qKlxuICogRW5jYXBzdWxhdGVzIGFyZ3VtZW50cyBmb3IgaW5zdGFudGlhdGluZyBhbiBFbnZNb21lbnRvVG9rZW5Qcm92aWRlclxuICovXG5pbnRlcmZhY2UgQ3JlZGVudGlhbFByb3ZpZGVyUHJvcHMge1xuICAvKipcbiAgICogb3B0aW9uYWxseSBvdmVycmlkZXMgdGhlIGRlZmF1bHQgY29udHJvbEVuZHBvaW50XG4gICAqL1xuICBjb250cm9sRW5kcG9pbnQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBvcHRpb25hbGx5IG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBjYWNoZUVuZHBvaW50XG4gICAqL1xuICBjYWNoZUVuZHBvaW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogb3B0aW9uYWxseSBvdmVycmlkZXMgdGhlIGRlZmF1bHQgdmVjdG9yRW5kcG9pbnRcbiAgICovXG4gIHRva2VuRW5kcG9pbnQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBvcHRpb25hbGx5IG92ZXJyaWRlcyB0aGUgZGVmYXVsdCB2ZWN0b3JFbmRwb2ludFxuICAgKi9cbiAgdmVjdG9yRW5kcG9pbnQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgaW5mb3JtYXRpb24gdGhhdCB0aGUgQ2FjaGVDbGllbnQgbmVlZHMgaW4gb3JkZXIgdG8gZXN0YWJsaXNoIGEgY29ubmVjdGlvbiB0byBhbmQgYXV0aGVudGljYXRlIHdpdGhcbiAqIHRoZSBNb21lbnRvIHNlcnZpY2UuXG4gKiBAZXhwb3J0XG4gKiBAaW50ZXJmYWNlIENyZWRlbnRpYWxQcm92aWRlclxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ3JlZGVudGlhbFByb3ZpZGVyIHtcbiAgLyoqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IEF1dGggdG9rZW4gcHJvdmlkZWQgYnkgdXNlciwgcmVxdWlyZWQgdG8gYXV0aGVudGljYXRlIHdpdGggdGhlIHNlcnZpY2VcbiAgICovXG4gIGFic3RyYWN0IGdldEF1dGhUb2tlbigpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBob3N0IHdoaWNoIHRoZSBNb21lbnRvIGNsaWVudCB3aWxsIGNvbm5lY3QgdG8gZm9yIE1vbWVudG8gY29udHJvbCBwbGFuZSBvcGVyYXRpb25zXG4gICAqL1xuICBhYnN0cmFjdCBnZXRDb250cm9sRW5kcG9pbnQoKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgaG9zdCB3aGljaCB0aGUgTW9tZW50byBjbGllbnQgd2lsbCBjb25uZWN0IHRvIGZvciBNb21lbnRvIGRhdGEgcGxhbmUgb3BlcmF0aW9uc1xuICAgKi9cbiAgYWJzdHJhY3QgZ2V0Q2FjaGVFbmRwb2ludCgpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBob3N0IHdoaWNoIHRoZSBNb21lbnRvIGNsaWVudCB3aWxsIGNvbm5lY3QgdG8gZm9yIE1vbWVudG8gdG9rZW4gb3BlcmF0aW9uc1xuICAgKi9cbiAgYWJzdHJhY3QgZ2V0VG9rZW5FbmRwb2ludCgpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBob3N0IHdoaWNoIHRoZSBNb21lbnRvIGNsaWVudCB3aWxsIGNvbm5lY3QgdG8gZm9yIE1vbWVudG8gdmVjdG9yIGluZGV4IG9wZXJhdGlvbnNcbiAgICovXG4gIGFic3RyYWN0IGdldFZlY3RvckVuZHBvaW50KCk6IHN0cmluZztcblxuICAvKipcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIGNhY2hlIGVuZHBvaW50IHdhcyBtYW51YWxseSBvdmVycmlkZGVuIGF0IGNvbnN0cnVjdGlvbiB0aW1lOyBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIGFic3RyYWN0IGlzQ2FjaGVFbmRwb2ludE92ZXJyaWRkZW4oKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIGNvbnRyb2wgZW5kcG9pbnQgd2FzIG1hbnVhbGx5IG92ZXJyaWRkZW4gYXQgY29uc3RydWN0aW9uIHRpbWU7IGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgYWJzdHJhY3QgaXNDb250cm9sRW5kcG9pbnRPdmVycmlkZGVuKCk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoZSB0b2tlbiBlbmRwb2ludCB3YXMgbWFudWFsbHkgb3ZlcnJpZGRlbiBhdCBjb25zdHJ1Y3Rpb24gdGltZTsgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICBhYnN0cmFjdCBpc1Rva2VuRW5kcG9pbnRPdmVycmlkZGVuKCk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoZSB2ZWN0b3IgZW5kcG9pbnQgd2FzIG1hbnVhbGx5IG92ZXJyaWRkZW4gYXQgY29uc3RydWN0aW9uIHRpbWU7IGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgYWJzdHJhY3QgaXNWZWN0b3JFbmRwb2ludE92ZXJyaWRkZW4oKTogYm9vbGVhbjtcblxuICBzdGF0aWMgZnJvbUVudmlyb25tZW50VmFyaWFibGUoXG4gICAgcHJvcHM6IEVudk1vbWVudG9Ub2tlblByb3ZpZGVyUHJvcHNcbiAgKTogQ3JlZGVudGlhbFByb3ZpZGVyIHtcbiAgICByZXR1cm4gbmV3IEVudk1vbWVudG9Ub2tlblByb3ZpZGVyKHByb3BzKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RyaW5nKFxuICAgIHByb3BzOiBTdHJpbmdNb21lbnRvVG9rZW5Qcm92aWRlclByb3BzXG4gICk6IENyZWRlbnRpYWxQcm92aWRlciB7XG4gICAgcmV0dXJuIG5ldyBTdHJpbmdNb21lbnRvVG9rZW5Qcm92aWRlcihwcm9wcyk7XG4gIH1cbn1cblxuYWJzdHJhY3QgY2xhc3MgQ3JlZGVudGlhbFByb3ZpZGVyQmFzZSBpbXBsZW1lbnRzIENyZWRlbnRpYWxQcm92aWRlciB7XG4gIGFic3RyYWN0IGdldEF1dGhUb2tlbigpOiBzdHJpbmc7XG5cbiAgYWJzdHJhY3QgZ2V0Q2FjaGVFbmRwb2ludCgpOiBzdHJpbmc7XG5cbiAgYWJzdHJhY3QgZ2V0Q29udHJvbEVuZHBvaW50KCk6IHN0cmluZztcblxuICBhYnN0cmFjdCBnZXRUb2tlbkVuZHBvaW50KCk6IHN0cmluZztcblxuICBhYnN0cmFjdCBnZXRWZWN0b3JFbmRwb2ludCgpOiBzdHJpbmc7XG5cbiAgYWJzdHJhY3QgaXNDYWNoZUVuZHBvaW50T3ZlcnJpZGRlbigpOiBib29sZWFuO1xuICBhYnN0cmFjdCBpc0NvbnRyb2xFbmRwb2ludE92ZXJyaWRkZW4oKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgaXNUb2tlbkVuZHBvaW50T3ZlcnJpZGRlbigpOiBib29sZWFuO1xuICBhYnN0cmFjdCBpc1ZlY3RvckVuZHBvaW50T3ZlcnJpZGRlbigpOiBib29sZWFuO1xuXG4gIHZhbHVlT2YoKTogb2JqZWN0IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHRoaXMpLmZpbHRlcigoW2tdKSA9PiBrICE9PSAnYXV0aFRva2VuJyk7XG4gICAgY29uc3QgY2xvbmUgPSBmcm9tRW50cmllcyhlbnRyaWVzKTtcbiAgICByZXR1cm4gY2xvbmUudmFsdWVPZigpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaW5nTW9tZW50b1Rva2VuUHJvdmlkZXJQcm9wc1xuICBleHRlbmRzIENyZWRlbnRpYWxQcm92aWRlclByb3BzIHtcbiAgLyoqXG4gICAqIGF1dGhUb2tlbiB0aGUgbW9tZW50byBhdXRoIHRva2VuXG4gICAqL1xuICBhdXRoVG9rZW46IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZWFkcyBhbmQgcGFyc2VzIGEgbW9tZW50byBhdXRoIHRva2VuIHN0b3JlZCBpbiBhIFN0cmluZ1xuICogQGV4cG9ydFxuICogQGNsYXNzIFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyXG4gKi9cbmV4cG9ydCBjbGFzcyBTdHJpbmdNb21lbnRvVG9rZW5Qcm92aWRlciBleHRlbmRzIENyZWRlbnRpYWxQcm92aWRlckJhc2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGF1dGhUb2tlbjogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbnRyb2xFbmRwb2ludDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlRW5kcG9pbnQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSB0b2tlbkVuZHBvaW50OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgdmVjdG9yRW5kcG9pbnQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBjb250cm9sRW5kcG9pbnRPdmVycmlkZGVuOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlRW5kcG9pbnRPdmVycmlkZGVuOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IHRva2VuRW5kcG9pbnRPdmVycmlkZGVuOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IHZlY3RvckVuZHBvaW50T3ZlcnJpZGRlbjogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHBhcmFtIHtTdHJpbmdNb21lbnRvVG9rZW5Qcm92aWRlclByb3BzfSBwcm9wcyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSB0b2tlbiBwcm92aWRlclxuICAgKi9cbiAgY29uc3RydWN0b3IocHJvcHM6IFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyUHJvcHMpIHtcbiAgICBzdXBlcigpO1xuICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IGRlY29kZUF1dGhUb2tlbihwcm9wcy5hdXRoVG9rZW4pO1xuICAgIHRoaXMuYXV0aFRva2VuID0gZGVjb2RlZFRva2VuLmF1dGhUb2tlbjtcbiAgICB0aGlzLmNvbnRyb2xFbmRwb2ludE92ZXJyaWRkZW4gPSBwcm9wcy5jb250cm9sRW5kcG9pbnQgIT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBjb250cm9sRW5kcG9pbnQgPVxuICAgICAgcHJvcHMuY29udHJvbEVuZHBvaW50ID8/IGRlY29kZWRUb2tlbi5jb250cm9sRW5kcG9pbnQ7XG4gICAgaWYgKGNvbnRyb2xFbmRwb2ludCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdNYWxmb3JtZWQgdG9rZW47IHVuYWJsZSB0byBkZXRlcm1pbmUgY29udHJvbCBlbmRwb2ludC4gIERlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiB0b2tlbiB5b3UgYXJlIHVzaW5nLCB5b3UgbWF5IG5lZWQgdG8gc3BlY2lmeSB0aGUgY29udHJvbEVuZHBvaW50IGV4cGxpY2l0bHkuJ1xuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5jYWNoZUVuZHBvaW50T3ZlcnJpZGRlbiA9IHByb3BzLmNhY2hlRW5kcG9pbnQgIT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBjYWNoZUVuZHBvaW50ID0gcHJvcHMuY2FjaGVFbmRwb2ludCA/PyBkZWNvZGVkVG9rZW4uY2FjaGVFbmRwb2ludDtcbiAgICBpZiAoY2FjaGVFbmRwb2ludCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdNYWxmb3JtZWQgdG9rZW47IHVuYWJsZSB0byBkZXRlcm1pbmUgY2FjaGUgZW5kcG9pbnQuICBEZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgdG9rZW4geW91IGFyZSB1c2luZywgeW91IG1heSBuZWVkIHRvIHNwZWNpZnkgdGhlIGNhY2hlRW5kcG9pbnQgZXhwbGljaXRseS4nXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMudG9rZW5FbmRwb2ludE92ZXJyaWRkZW4gPSBwcm9wcy50b2tlbkVuZHBvaW50ICE9PSB1bmRlZmluZWQ7XG4gICAgY29uc3QgdG9rZW5FbmRwb2ludCA9IHByb3BzLnRva2VuRW5kcG9pbnQgPz8gZGVjb2RlZFRva2VuLnRva2VuRW5kcG9pbnQ7XG4gICAgaWYgKHRva2VuRW5kcG9pbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnTWFsZm9ybWVkIHRva2VuOyB1bmFibGUgdG8gZGV0ZXJtaW5lIHRva2VuIGVuZHBvaW50LiAgRGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIHRva2VuIHlvdSBhcmUgdXNpbmcsIHlvdSBtYXkgbmVlZCB0byBzcGVjaWZ5IHRoZSB0b2tlbkVuZHBvaW50IGV4cGxpY2l0bHkuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnZlY3RvckVuZHBvaW50T3ZlcnJpZGRlbiA9IHByb3BzLnZlY3RvckVuZHBvaW50ICE9PSB1bmRlZmluZWQ7XG4gICAgY29uc3QgdmVjdG9yRW5kcG9pbnQgPSBwcm9wcy52ZWN0b3JFbmRwb2ludCA/PyBkZWNvZGVkVG9rZW4udmVjdG9yRW5kcG9pbnQ7XG4gICAgaWYgKHZlY3RvckVuZHBvaW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ01hbGZvcm1lZCB0b2tlbjsgdW5hYmxlIHRvIGRldGVybWluZSB2ZWN0b3IgZW5kcG9pbnQuICBEZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgdG9rZW4geW91IGFyZSB1c2luZywgeW91IG1heSBuZWVkIHRvIHNwZWNpZnkgdGhlIHZlY3RvckVuZHBvaW50IGV4cGxpY2l0bHkuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRyb2xFbmRwb2ludCA9IGNvbnRyb2xFbmRwb2ludDtcbiAgICB0aGlzLmNhY2hlRW5kcG9pbnQgPSBjYWNoZUVuZHBvaW50O1xuICAgIHRoaXMudG9rZW5FbmRwb2ludCA9IGRlY29kZWRUb2tlbi50b2tlbkVuZHBvaW50IHx8IGNhY2hlRW5kcG9pbnQ7XG4gICAgdGhpcy52ZWN0b3JFbmRwb2ludCA9IHZlY3RvckVuZHBvaW50O1xuICB9XG5cbiAgZ2V0QXV0aFRva2VuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aFRva2VuO1xuICB9XG5cbiAgZ2V0Q2FjaGVFbmRwb2ludCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNhY2hlRW5kcG9pbnQ7XG4gIH1cblxuICBnZXRDb250cm9sRW5kcG9pbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sRW5kcG9pbnQ7XG4gIH1cblxuICBnZXRUb2tlbkVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5FbmRwb2ludDtcbiAgfVxuXG4gIGdldFZlY3RvckVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudmVjdG9yRW5kcG9pbnQ7XG4gIH1cblxuICBpc0NvbnRyb2xFbmRwb2ludE92ZXJyaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbEVuZHBvaW50T3ZlcnJpZGRlbjtcbiAgfVxuXG4gIGlzQ2FjaGVFbmRwb2ludE92ZXJyaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVFbmRwb2ludE92ZXJyaWRkZW47XG4gIH1cblxuICBpc1Rva2VuRW5kcG9pbnRPdmVycmlkZGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRva2VuRW5kcG9pbnRPdmVycmlkZGVuO1xuICB9XG5cbiAgaXNWZWN0b3JFbmRwb2ludE92ZXJyaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmVjdG9yRW5kcG9pbnRPdmVycmlkZGVuO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW52TW9tZW50b1Rva2VuUHJvdmlkZXJQcm9wcyBleHRlbmRzIENyZWRlbnRpYWxQcm92aWRlclByb3BzIHtcbiAgLyoqXG4gICAqIHRoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmcm9tIHdoaWNoIHRoZSBhdXRoIHRva2VuIHdpbGwgYmUgcmVhZFxuICAgKi9cbiAgZW52aXJvbm1lbnRWYXJpYWJsZU5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZWFkcyBhbmQgcGFyc2VzIGEgbW9tZW50byBhdXRoIHRva2VuIHN0b3JlZCBhcyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBFbnZNb21lbnRvVG9rZW5Qcm92aWRlclxuICovXG5leHBvcnQgY2xhc3MgRW52TW9tZW50b1Rva2VuUHJvdmlkZXIgZXh0ZW5kcyBTdHJpbmdNb21lbnRvVG9rZW5Qcm92aWRlciB7XG4gIGVudmlyb25tZW50VmFyaWFibGVOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0Vudk1vbWVudG9Ub2tlblByb3ZpZGVyUHJvcHN9IHByb3BzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHRva2VuIHByb3ZpZGVyXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wczogRW52TW9tZW50b1Rva2VuUHJvdmlkZXJQcm9wcykge1xuICAgIGNvbnN0IGF1dGhUb2tlbiA9IHByb2Nlc3MuZW52W3Byb3BzLmVudmlyb25tZW50VmFyaWFibGVOYW1lXTtcbiAgICBpZiAoIWF1dGhUb2tlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgTWlzc2luZyByZXF1aXJlZCBlbnZpcm9ubWVudCB2YXJpYWJsZSAke3Byb3BzLmVudmlyb25tZW50VmFyaWFibGVOYW1lfWBcbiAgICAgICk7XG4gICAgfVxuICAgIHN1cGVyKHtcbiAgICAgIGF1dGhUb2tlbjogYXV0aFRva2VuLFxuICAgICAgY29udHJvbEVuZHBvaW50OiBwcm9wcy5jb250cm9sRW5kcG9pbnQsXG4gICAgICBjYWNoZUVuZHBvaW50OiBwcm9wcy5jYWNoZUVuZHBvaW50LFxuICAgICAgdG9rZW5FbmRwb2ludDogcHJvcHMudG9rZW5FbmRwb2ludCxcbiAgICAgIHZlY3RvckVuZHBvaW50OiBwcm9wcy52ZWN0b3JFbmRwb2ludCxcbiAgICB9KTtcbiAgICB0aGlzLmVudmlyb25tZW50VmFyaWFibGVOYW1lID0gcHJvcHMuZW52aXJvbm1lbnRWYXJpYWJsZU5hbWU7XG4gIH1cbn1cbiJdfQ==
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGVudGlhbC1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRoL2NyZWRlbnRpYWwtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBSzJCO0FBUTNCLFNBQVMsc0JBQXNCLENBQzdCLGlCQUFvQztJQUVwQyxPQUFRLGlCQUEwQyxDQUFDLFlBQVksS0FBSyxTQUFTLENBQUM7QUFDaEYsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUNyQixpQkFBb0M7SUFFcEMsTUFBTSxZQUFZLEdBQUcsaUJBQWlDLENBQUM7SUFDdkQsT0FBTyxDQUNMLFlBQVksQ0FBQyxhQUFhLEtBQUssU0FBUztRQUN4QyxZQUFZLENBQUMsZUFBZSxLQUFLLFNBQVM7UUFDMUMsWUFBWSxDQUFDLGFBQWEsS0FBSyxTQUFTO1FBQ3hDLFlBQVksQ0FBQyxjQUFjLEtBQUssU0FBUyxDQUMxQyxDQUFDO0FBQ0osQ0FBQztBQVNEOzs7OztHQUtHO0FBQ0gsTUFBc0Isa0JBQWtCO0lBK0J0QyxNQUFNLENBQUMsdUJBQXVCLENBQzVCLEtBQW1DO1FBRW5DLE9BQU8sSUFBSSx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FDZixLQUFzQztRQUV0QyxPQUFPLElBQUksMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNGO0FBMUNELGdEQTBDQztBQUVELE1BQWUsc0JBQXNCO0lBYW5DLE9BQU87UUFDTCw2REFBNkQ7UUFDN0QsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssV0FBVyxDQUFDLENBQUM7UUFDeEUsTUFBTSxLQUFLLEdBQUcsSUFBQSxtQkFBVyxFQUFDLE9BQU8sQ0FBQyxDQUFDO1FB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LE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7Q0FDRjtBQXZGRCxnRUF1RkM7QUFTRDs7OztHQUlHO0FBQ0gsTUFBYSx1QkFBd0IsU0FBUSwwQkFBMEI7SUFFckU7O09BRUc7SUFDSCxZQUFZLEtBQW1DO1FBQzdDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNkLE1BQU0sSUFBSSxLQUFLLENBQ2IseUNBQXlDLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxDQUN6RSxDQUFDO1NBQ0g7UUFDRCxLQUFLLENBQUM7WUFDSixTQUFTLEVBQUUsU0FBUztZQUNwQixpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1NBQzNDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUMsdUJBQXVCLENBQUM7SUFDL0QsQ0FBQztDQUNGO0FBbEJELDBEQWtCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFsbEVuZHBvaW50cyxcbiAgZGVjb2RlQXV0aFRva2VuLFxuICBmcm9tRW50cmllcyxcbiAgcG9wdWxhdGVBbGxFbmRwb2ludHNGcm9tQmFzZUVuZHBvaW50LFxufSBmcm9tICcuLi9pbnRlcm5hbC91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUVuZHBvaW50T3ZlcnJpZGUge1xuICBiYXNlRW5kcG9pbnQ6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgRW5kcG9pbnRPdmVycmlkZXMgPSBCYXNlRW5kcG9pbnRPdmVycmlkZSB8IEFsbEVuZHBvaW50cztcblxuZnVuY3Rpb24gaXNCYXNlRW5kcG9pbnRPdmVycmlkZShcbiAgZW5kcG9pbnRPdmVycmlkZXM6IEVuZHBvaW50T3ZlcnJpZGVzXG4pOiBlbmRwb2ludE92ZXJyaWRlcyBpcyBCYXNlRW5kcG9pbnRPdmVycmlkZSB7XG4gIHJldHVybiAoZW5kcG9pbnRPdmVycmlkZXMgYXMgQmFzZUVuZHBvaW50T3ZlcnJpZGUpLmJhc2VFbmRwb2ludCAhPT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc0FsbEVuZHBvaW50cyhcbiAgZW5kcG9pbnRPdmVycmlkZXM6IEVuZHBvaW50T3ZlcnJpZGVzXG4pOiBlbmRwb2ludE92ZXJyaWRlcyBpcyBBbGxFbmRwb2ludHMge1xuICBjb25zdCBhbGxFbmRwb2ludHMgPSBlbmRwb2ludE92ZXJyaWRlcyBhcyBBbGxFbmRwb2ludHM7XG4gIHJldHVybiAoXG4gICAgYWxsRW5kcG9pbnRzLmNhY2hlRW5kcG9pbnQgIT09IHVuZGVmaW5lZCAmJlxuICAgIGFsbEVuZHBvaW50cy5jb250cm9sRW5kcG9pbnQgIT09IHVuZGVmaW5lZCAmJlxuICAgIGFsbEVuZHBvaW50cy50b2tlbkVuZHBvaW50ICE9PSB1bmRlZmluZWQgJiZcbiAgICBhbGxFbmRwb2ludHMudmVjdG9yRW5kcG9pbnQgIT09IHVuZGVmaW5lZFxuICApO1xufVxuXG4vKipcbiAqIEVuY2Fwc3VsYXRlcyBhcmd1bWVudHMgZm9yIGluc3RhbnRpYXRpbmcgYW4gRW52TW9tZW50b1Rva2VuUHJvdmlkZXJcbiAqL1xuaW50ZXJmYWNlIENyZWRlbnRpYWxQcm92aWRlclByb3BzIHtcbiAgZW5kcG9pbnRPdmVycmlkZXM/OiBFbmRwb2ludE92ZXJyaWRlcztcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBpbmZvcm1hdGlvbiB0aGF0IHRoZSBDYWNoZUNsaWVudCBuZWVkcyBpbiBvcmRlciB0byBlc3RhYmxpc2ggYSBjb25uZWN0aW9uIHRvIGFuZCBhdXRoZW50aWNhdGUgd2l0aFxuICogdGhlIE1vbWVudG8gc2VydmljZS5cbiAqIEBleHBvcnRcbiAqIEBpbnRlcmZhY2UgQ3JlZGVudGlhbFByb3ZpZGVyXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDcmVkZW50aWFsUHJvdmlkZXIge1xuICAvKipcbiAgICogQHJldHVybnMge3N0cmluZ30gQXV0aCB0b2tlbiBwcm92aWRlZCBieSB1c2VyLCByZXF1aXJlZCB0byBhdXRoZW50aWNhdGUgd2l0aCB0aGUgc2VydmljZVxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0QXV0aFRva2VuKCk6IHN0cmluZztcblxuICAvKipcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGhvc3Qgd2hpY2ggdGhlIE1vbWVudG8gY2xpZW50IHdpbGwgY29ubmVjdCB0byBmb3IgTW9tZW50byBjb250cm9sIHBsYW5lIG9wZXJhdGlvbnNcbiAgICovXG4gIGFic3RyYWN0IGdldENvbnRyb2xFbmRwb2ludCgpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBob3N0IHdoaWNoIHRoZSBNb21lbnRvIGNsaWVudCB3aWxsIGNvbm5lY3QgdG8gZm9yIE1vbWVudG8gZGF0YSBwbGFuZSBvcGVyYXRpb25zXG4gICAqL1xuICBhYnN0cmFjdCBnZXRDYWNoZUVuZHBvaW50KCk6IHN0cmluZztcblxuICAvKipcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGhvc3Qgd2hpY2ggdGhlIE1vbWVudG8gY2xpZW50IHdpbGwgY29ubmVjdCB0byBmb3IgTW9tZW50byB0b2tlbiBvcGVyYXRpb25zXG4gICAqL1xuICBhYnN0cmFjdCBnZXRUb2tlbkVuZHBvaW50KCk6IHN0cmluZztcblxuICAvKipcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGhvc3Qgd2hpY2ggdGhlIE1vbWVudG8gY2xpZW50IHdpbGwgY29ubmVjdCB0byBmb3IgTW9tZW50byB2ZWN0b3IgaW5kZXggb3BlcmF0aW9uc1xuICAgKi9cbiAgYWJzdHJhY3QgZ2V0VmVjdG9yRW5kcG9pbnQoKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgZW5kcG9pbnRzIHdlcmUgbWFudWFsbHkgb3ZlcnJpZGRlbiBhdCBjb25zdHJ1Y3Rpb24gdGltZTsgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICBhYnN0cmFjdCBhcmVFbmRwb2ludHNPdmVycmlkZGVuKCk6IGJvb2xlYW47XG5cbiAgc3RhdGljIGZyb21FbnZpcm9ubWVudFZhcmlhYmxlKFxuICAgIHByb3BzOiBFbnZNb21lbnRvVG9rZW5Qcm92aWRlclByb3BzXG4gICk6IENyZWRlbnRpYWxQcm92aWRlciB7XG4gICAgcmV0dXJuIG5ldyBFbnZNb21lbnRvVG9rZW5Qcm92aWRlcihwcm9wcyk7XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0cmluZyhcbiAgICBwcm9wczogU3RyaW5nTW9tZW50b1Rva2VuUHJvdmlkZXJQcm9wc1xuICApOiBDcmVkZW50aWFsUHJvdmlkZXIge1xuICAgIHJldHVybiBuZXcgU3RyaW5nTW9tZW50b1Rva2VuUHJvdmlkZXIocHJvcHMpO1xuICB9XG59XG5cbmFic3RyYWN0IGNsYXNzIENyZWRlbnRpYWxQcm92aWRlckJhc2UgaW1wbGVtZW50cyBDcmVkZW50aWFsUHJvdmlkZXIge1xuICBhYnN0cmFjdCBnZXRBdXRoVG9rZW4oKTogc3RyaW5nO1xuXG4gIGFic3RyYWN0IGdldENhY2hlRW5kcG9pbnQoKTogc3RyaW5nO1xuXG4gIGFic3RyYWN0IGdldENvbnRyb2xFbmRwb2ludCgpOiBzdHJpbmc7XG5cbiAgYWJzdHJhY3QgZ2V0VG9rZW5FbmRwb2ludCgpOiBzdHJpbmc7XG5cbiAgYWJzdHJhY3QgZ2V0VmVjdG9yRW5kcG9pbnQoKTogc3RyaW5nO1xuXG4gIGFic3RyYWN0IGFyZUVuZHBvaW50c092ZXJyaWRkZW4oKTogYm9vbGVhbjtcblxuICB2YWx1ZU9mKCk6IG9iamVjdCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyh0aGlzKS5maWx0ZXIoKFtrXSkgPT4gayAhPT0gJ2F1dGhUb2tlbicpO1xuICAgIGNvbnN0IGNsb25lID0gZnJvbUVudHJpZXMoZW50cmllcyk7XG4gICAgcmV0dXJuIGNsb25lLnZhbHVlT2YoKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ01vbWVudG9BcGlLZXlQcm92aWRlclByb3BzXG4gIGV4dGVuZHMgQ3JlZGVudGlhbFByb3ZpZGVyUHJvcHMge1xuICAvKipcbiAgICogYXBpS2V5IHRoZSBtb21lbnRvIEFQSSBrZXlcbiAgICovXG4gIGFwaUtleTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ01vbWVudG9BdXRoVG9rZW5Qcm92aWRlclByb3BzXG4gIGV4dGVuZHMgQ3JlZGVudGlhbFByb3ZpZGVyUHJvcHMge1xuICAvKipcbiAgICogYXV0aFRva2VuIHRoZSBtb21lbnRvIGF1dGggdG9rZW5cbiAgICovXG4gIGF1dGhUb2tlbjogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBTdHJpbmdNb21lbnRvVG9rZW5Qcm92aWRlclByb3BzID1cbiAgfCBTdHJpbmdNb21lbnRvQXBpS2V5UHJvdmlkZXJQcm9wc1xuICB8IFN0cmluZ01vbWVudG9BdXRoVG9rZW5Qcm92aWRlclByb3BzO1xuXG4vKipcbiAqIFJlYWRzIGFuZCBwYXJzZXMgYSBtb21lbnRvIGF1dGggdG9rZW4gc3RvcmVkIGluIGEgU3RyaW5nXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgU3RyaW5nTW9tZW50b1Rva2VuUHJvdmlkZXJcbiAqL1xuZXhwb3J0IGNsYXNzIFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyIGV4dGVuZHMgQ3JlZGVudGlhbFByb3ZpZGVyQmFzZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpS2V5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWxsRW5kcG9pbnRzOiBBbGxFbmRwb2ludHM7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW5kcG9pbnRzT3ZlcnJpZGRlbjogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHBhcmFtIHtTdHJpbmdNb21lbnRvVG9rZW5Qcm92aWRlclByb3BzfSBwcm9wcyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSB0b2tlbiBwcm92aWRlclxuICAgKi9cbiAgY29uc3RydWN0b3IocHJvcHM6IFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyUHJvcHMpIHtcbiAgICBzdXBlcigpO1xuICAgIGxldCBrZXk6IHN0cmluZztcbiAgICBpZiAoJ2F1dGhUb2tlbicgaW4gcHJvcHMpIHtcbiAgICAgIGtleSA9IHByb3BzLmF1dGhUb2tlbjtcbiAgICB9IGVsc2UgaWYgKCdhcGlLZXknIGluIHByb3BzKSB7XG4gICAgICBrZXkgPSBwcm9wcy5hcGlLZXk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyByZXF1aXJlZCBwcm9wZXJ0eTogYXV0aFRva2VuIG9yIGFwaUtleScpO1xuICAgIH1cbiAgICBjb25zdCBkZWNvZGVkVG9rZW4gPSBkZWNvZGVBdXRoVG9rZW4oa2V5KTtcbiAgICB0aGlzLmFwaUtleSA9IGRlY29kZWRUb2tlbi5hdXRoVG9rZW47XG4gICAgaWYgKHByb3BzLmVuZHBvaW50T3ZlcnJpZGVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZW5kcG9pbnRzT3ZlcnJpZGRlbiA9IGZhbHNlO1xuICAgICAgaWYgKGRlY29kZWRUb2tlbi5jb250cm9sRW5kcG9pbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ01hbGZvcm1lZCB0b2tlbjsgdW5hYmxlIHRvIGRldGVybWluZSBjb250cm9sIGVuZHBvaW50LiAgRGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIHRva2VuIHlvdSBhcmUgdXNpbmcsIHlvdSBtYXkgbmVlZCB0byBzcGVjaWZ5IHRoZSBjb250cm9sRW5kcG9pbnQgZXhwbGljaXRseS4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoZGVjb2RlZFRva2VuLmNhY2hlRW5kcG9pbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ01hbGZvcm1lZCB0b2tlbjsgdW5hYmxlIHRvIGRldGVybWluZSBjYWNoZSBlbmRwb2ludC4gIERlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiB0b2tlbiB5b3UgYXJlIHVzaW5nLCB5b3UgbWF5IG5lZWQgdG8gc3BlY2lmeSB0aGUgY2FjaGVFbmRwb2ludCBleHBsaWNpdGx5LidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChkZWNvZGVkVG9rZW4udG9rZW5FbmRwb2ludCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnTWFsZm9ybWVkIHRva2VuOyB1bmFibGUgdG8gZGV0ZXJtaW5lIHRva2VuIGVuZHBvaW50LiAgRGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIHRva2VuIHlvdSBhcmUgdXNpbmcsIHlvdSBtYXkgbmVlZCB0byBzcGVjaWZ5IHRoZSB0b2tlbkVuZHBvaW50IGV4cGxpY2l0bHkuJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGRlY29kZWRUb2tlbi52ZWN0b3JFbmRwb2ludCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnTWFsZm9ybWVkIHRva2VuOyB1bmFibGUgdG8gZGV0ZXJtaW5lIHZlY3RvciBlbmRwb2ludC4gIERlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiB0b2tlbiB5b3UgYXJlIHVzaW5nLCB5b3UgbWF5IG5lZWQgdG8gc3BlY2lmeSB0aGUgdmVjdG9yRW5kcG9pbnQgZXhwbGljaXRseS4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLmFsbEVuZHBvaW50cyA9IHtcbiAgICAgICAgY29udHJvbEVuZHBvaW50OiBkZWNvZGVkVG9rZW4uY29udHJvbEVuZHBvaW50LFxuICAgICAgICBjYWNoZUVuZHBvaW50OiBkZWNvZGVkVG9rZW4uY2FjaGVFbmRwb2ludCxcbiAgICAgICAgdG9rZW5FbmRwb2ludDogZGVjb2RlZFRva2VuLnRva2VuRW5kcG9pbnQsXG4gICAgICAgIHZlY3RvckVuZHBvaW50OiBkZWNvZGVkVG9rZW4udmVjdG9yRW5kcG9pbnQsXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoaXNBbGxFbmRwb2ludHMocHJvcHMuZW5kcG9pbnRPdmVycmlkZXMpKSB7XG4gICAgICB0aGlzLmVuZHBvaW50c092ZXJyaWRkZW4gPSB0cnVlO1xuICAgICAgdGhpcy5hbGxFbmRwb2ludHMgPSBwcm9wcy5lbmRwb2ludE92ZXJyaWRlcztcbiAgICB9IGVsc2UgaWYgKGlzQmFzZUVuZHBvaW50T3ZlcnJpZGUocHJvcHMuZW5kcG9pbnRPdmVycmlkZXMpKSB7XG4gICAgICB0aGlzLmVuZHBvaW50c092ZXJyaWRkZW4gPSB0cnVlO1xuICAgICAgdGhpcy5hbGxFbmRwb2ludHMgPSBwb3B1bGF0ZUFsbEVuZHBvaW50c0Zyb21CYXNlRW5kcG9pbnQoXG4gICAgICAgIHByb3BzLmVuZHBvaW50T3ZlcnJpZGVzLmJhc2VFbmRwb2ludFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgIGBVbnN1cHBvcnRlZCBlbmRwb2ludE92ZXJyaWRlczogJHtwcm9wcy5lbmRwb2ludE92ZXJyaWRlc31gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGdldEF1dGhUb2tlbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFwaUtleTtcbiAgfVxuXG4gIGdldENhY2hlRW5kcG9pbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hbGxFbmRwb2ludHMuY2FjaGVFbmRwb2ludDtcbiAgfVxuXG4gIGdldENvbnRyb2xFbmRwb2ludCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFsbEVuZHBvaW50cy5jb250cm9sRW5kcG9pbnQ7XG4gIH1cblxuICBnZXRUb2tlbkVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYWxsRW5kcG9pbnRzLnRva2VuRW5kcG9pbnQ7XG4gIH1cblxuICBnZXRWZWN0b3JFbmRwb2ludCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFsbEVuZHBvaW50cy52ZWN0b3JFbmRwb2ludDtcbiAgfVxuXG4gIGFyZUVuZHBvaW50c092ZXJyaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZW5kcG9pbnRzT3ZlcnJpZGRlbjtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudk1vbWVudG9Ub2tlblByb3ZpZGVyUHJvcHMgZXh0ZW5kcyBDcmVkZW50aWFsUHJvdmlkZXJQcm9wcyB7XG4gIC8qKlxuICAgKiB0aGUgbmFtZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgZnJvbSB3aGljaCB0aGUgYXV0aCB0b2tlbiB3aWxsIGJlIHJlYWRcbiAgICovXG4gIGVudmlyb25tZW50VmFyaWFibGVOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVhZHMgYW5kIHBhcnNlcyBhIG1vbWVudG8gYXV0aCB0b2tlbiBzdG9yZWQgYXMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgRW52TW9tZW50b1Rva2VuUHJvdmlkZXJcbiAqL1xuZXhwb3J0IGNsYXNzIEVudk1vbWVudG9Ub2tlblByb3ZpZGVyIGV4dGVuZHMgU3RyaW5nTW9tZW50b1Rva2VuUHJvdmlkZXIge1xuICBlbnZpcm9ubWVudFZhcmlhYmxlTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogQHBhcmFtIHtFbnZNb21lbnRvVG9rZW5Qcm92aWRlclByb3BzfSBwcm9wcyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSB0b2tlbiBwcm92aWRlclxuICAgKi9cbiAgY29uc3RydWN0b3IocHJvcHM6IEVudk1vbWVudG9Ub2tlblByb3ZpZGVyUHJvcHMpIHtcbiAgICBjb25zdCBhdXRoVG9rZW4gPSBwcm9jZXNzLmVudltwcm9wcy5lbnZpcm9ubWVudFZhcmlhYmxlTmFtZV07XG4gICAgaWYgKCFhdXRoVG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYE1pc3NpbmcgcmVxdWlyZWQgZW52aXJvbm1lbnQgdmFyaWFibGUgJHtwcm9wcy5lbnZpcm9ubWVudFZhcmlhYmxlTmFtZX1gXG4gICAgICApO1xuICAgIH1cbiAgICBzdXBlcih7XG4gICAgICBhdXRoVG9rZW46IGF1dGhUb2tlbixcbiAgICAgIGVuZHBvaW50T3ZlcnJpZGVzOiBwcm9wcy5lbmRwb2ludE92ZXJyaWRlcyxcbiAgICB9KTtcbiAgICB0aGlzLmVudmlyb25tZW50VmFyaWFibGVOYW1lID0gcHJvcHMuZW52aXJvbm1lbnRWYXJpYWJsZU5hbWU7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,24 @@
1
+ import { AllCacheItems, CachePermission, Permission, Permissions, PredefinedScope } from './permission-scope';
2
+ export interface CacheItemKey {
3
+ key: string;
4
+ }
5
+ export interface CacheItemKeyPrefix {
6
+ keyPrefix: string;
7
+ }
8
+ export declare function isCacheItemKey(cacheItem: CacheItemSelector): cacheItem is CacheItemKey;
9
+ export declare function isCacheItemKeyPrefix(cacheItem: CacheItemSelector): cacheItem is CacheItemKeyPrefix;
10
+ export type CacheItemSelector = typeof AllCacheItems | CacheItemKey | CacheItemKeyPrefix | string;
11
+ export interface DisposableTokenCachePermission extends CachePermission {
12
+ /**
13
+ * Scope the token permissions to select cache items
14
+ */
15
+ item: CacheItemSelector;
16
+ }
17
+ export declare function isDisposableTokenCachePermission(p: Permission): boolean;
18
+ export declare function asDisposableTokenCachePermission(p: Permission): DisposableTokenCachePermission;
19
+ export interface DisposableTokenCachePermissions {
20
+ permissions: Array<DisposableTokenCachePermission>;
21
+ }
22
+ export type DisposableTokenScope = Permissions | PredefinedScope | DisposableTokenCachePermissions;
23
+ export declare function isDisposableTokenPermissionsObject(scope: DisposableTokenScope): boolean;
24
+ export declare function asDisposableTokenPermissionsObject(scope: DisposableTokenScope): DisposableTokenCachePermissions;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.asDisposableTokenPermissionsObject = exports.isDisposableTokenPermissionsObject = exports.asDisposableTokenCachePermission = exports.isDisposableTokenCachePermission = exports.isCacheItemKeyPrefix = exports.isCacheItemKey = void 0;
4
+ const permission_scope_1 = require("./permission-scope");
5
+ function isCacheItemKey(cacheItem) {
6
+ if (cacheItem === permission_scope_1.AllCacheItems) {
7
+ return false;
8
+ }
9
+ if (typeof cacheItem === 'string') {
10
+ return true;
11
+ }
12
+ return 'key' in cacheItem;
13
+ }
14
+ exports.isCacheItemKey = isCacheItemKey;
15
+ function isCacheItemKeyPrefix(cacheItem) {
16
+ if (cacheItem === permission_scope_1.AllCacheItems) {
17
+ return false;
18
+ }
19
+ if (typeof cacheItem === 'string') {
20
+ return false;
21
+ }
22
+ return 'keyPrefix' in cacheItem;
23
+ }
24
+ exports.isCacheItemKeyPrefix = isCacheItemKeyPrefix;
25
+ function isDisposableTokenCachePermission(p) {
26
+ return 'role' in p && 'cache' in p && 'item' in p && !('topic' in p);
27
+ }
28
+ exports.isDisposableTokenCachePermission = isDisposableTokenCachePermission;
29
+ function asDisposableTokenCachePermission(p) {
30
+ if (!isDisposableTokenCachePermission(p)) {
31
+ throw new Error(`permission is not a DisposableTokenCachePermission object: ${JSON.stringify(p)}`);
32
+ }
33
+ return p;
34
+ }
35
+ exports.asDisposableTokenCachePermission = asDisposableTokenCachePermission;
36
+ function isDisposableTokenPermissionObject(p) {
37
+ return isDisposableTokenCachePermission(p);
38
+ }
39
+ function isDisposableTokenPermissionsObject(scope) {
40
+ if (!('permissions' in scope)) {
41
+ return false;
42
+ }
43
+ const permissions = scope.permissions;
44
+ return permissions.every(p => isDisposableTokenPermissionObject(p));
45
+ }
46
+ exports.isDisposableTokenPermissionsObject = isDisposableTokenPermissionsObject;
47
+ function asDisposableTokenPermissionsObject(scope) {
48
+ console.log(`AS_DISPOSABLE_TOKEN_PERMISSIONS_OBJECT: ${JSON.stringify(scope)}`);
49
+ if (!isDisposableTokenPermissionsObject(scope)) {
50
+ throw new Error(`Token scope is not a DisposableTokenCachePermissions object: ${JSON.stringify(scope)}`);
51
+ }
52
+ return scope;
53
+ }
54
+ exports.asDisposableTokenPermissionsObject = asDisposableTokenPermissionsObject;
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcG9zYWJsZS10b2tlbi1zY29wZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hdXRoL3Rva2Vucy9kaXNwb3NhYmxlLXRva2VuLXNjb3BlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlEQU00QjtBQVU1QixTQUFnQixjQUFjLENBQzVCLFNBQTRCO0lBRTVCLElBQUksU0FBUyxLQUFLLGdDQUFhLEVBQUU7UUFDL0IsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxFQUFFO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCxPQUFPLEtBQUssSUFBSSxTQUFTLENBQUM7QUFDNUIsQ0FBQztBQVZELHdDQVVDO0FBRUQsU0FBZ0Isb0JBQW9CLENBQ2xDLFNBQTRCO0lBRTVCLElBQUksU0FBUyxLQUFLLGdDQUFhLEVBQUU7UUFDL0IsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxFQUFFO1FBQ2pDLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLFdBQVcsSUFBSSxTQUFTLENBQUM7QUFDbEMsQ0FBQztBQVZELG9EQVVDO0FBZUQsU0FBZ0IsZ0NBQWdDLENBQUMsQ0FBYTtJQUM1RCxPQUFPLE1BQU0sSUFBSSxDQUFDLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDdkUsQ0FBQztBQUZELDRFQUVDO0FBRUQsU0FBZ0IsZ0NBQWdDLENBQzlDLENBQWE7SUFFYixJQUFJLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDeEMsTUFBTSxJQUFJLEtBQUssQ0FDYiw4REFBOEQsSUFBSSxDQUFDLFNBQVMsQ0FDMUUsQ0FBQyxDQUNGLEVBQUUsQ0FDSixDQUFDO0tBQ0g7SUFDRCxPQUFPLENBQW1DLENBQUM7QUFDN0MsQ0FBQztBQVhELDRFQVdDO0FBV0QsU0FBUyxpQ0FBaUMsQ0FBQyxDQUFhO0lBQ3RELE9BQU8sZ0NBQWdDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVELFNBQWdCLGtDQUFrQyxDQUNoRCxLQUEyQjtJQUUzQixJQUFJLENBQUMsQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDLEVBQUU7UUFDN0IsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7SUFDdEMsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsaUNBQWlDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RSxDQUFDO0FBUkQsZ0ZBUUM7QUFFRCxTQUFnQixrQ0FBa0MsQ0FDaEQsS0FBMkI7SUFFM0IsT0FBTyxDQUFDLEdBQUcsQ0FDVCwyQ0FBMkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUNuRSxDQUFDO0lBQ0YsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQzlDLE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0VBQWdFLElBQUksQ0FBQyxTQUFTLENBQzVFLEtBQUssQ0FDTixFQUFFLENBQ0osQ0FBQztLQUNIO0lBQ0QsT0FBTyxLQUF3QyxDQUFDO0FBQ2xELENBQUM7QUFkRCxnRkFjQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFsbENhY2hlSXRlbXMsXG4gIENhY2hlUGVybWlzc2lvbixcbiAgUGVybWlzc2lvbixcbiAgUGVybWlzc2lvbnMsXG4gIFByZWRlZmluZWRTY29wZSxcbn0gZnJvbSAnLi9wZXJtaXNzaW9uLXNjb3BlJztcblxuZXhwb3J0IGludGVyZmFjZSBDYWNoZUl0ZW1LZXkge1xuICBrZXk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYWNoZUl0ZW1LZXlQcmVmaXgge1xuICBrZXlQcmVmaXg6IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FjaGVJdGVtS2V5KFxuICBjYWNoZUl0ZW06IENhY2hlSXRlbVNlbGVjdG9yXG4pOiBjYWNoZUl0ZW0gaXMgQ2FjaGVJdGVtS2V5IHtcbiAgaWYgKGNhY2hlSXRlbSA9PT0gQWxsQ2FjaGVJdGVtcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodHlwZW9mIGNhY2hlSXRlbSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gJ2tleScgaW4gY2FjaGVJdGVtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDYWNoZUl0ZW1LZXlQcmVmaXgoXG4gIGNhY2hlSXRlbTogQ2FjaGVJdGVtU2VsZWN0b3Jcbik6IGNhY2hlSXRlbSBpcyBDYWNoZUl0ZW1LZXlQcmVmaXgge1xuICBpZiAoY2FjaGVJdGVtID09PSBBbGxDYWNoZUl0ZW1zKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh0eXBlb2YgY2FjaGVJdGVtID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gJ2tleVByZWZpeCcgaW4gY2FjaGVJdGVtO1xufVxuXG5leHBvcnQgdHlwZSBDYWNoZUl0ZW1TZWxlY3RvciA9XG4gIHwgdHlwZW9mIEFsbENhY2hlSXRlbXNcbiAgfCBDYWNoZUl0ZW1LZXlcbiAgfCBDYWNoZUl0ZW1LZXlQcmVmaXhcbiAgfCBzdHJpbmc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlzcG9zYWJsZVRva2VuQ2FjaGVQZXJtaXNzaW9uIGV4dGVuZHMgQ2FjaGVQZXJtaXNzaW9uIHtcbiAgLyoqXG4gICAqIFNjb3BlIHRoZSB0b2tlbiBwZXJtaXNzaW9ucyB0byBzZWxlY3QgY2FjaGUgaXRlbXNcbiAgICovXG4gIGl0ZW06IENhY2hlSXRlbVNlbGVjdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEaXNwb3NhYmxlVG9rZW5DYWNoZVBlcm1pc3Npb24ocDogUGVybWlzc2lvbik6IGJvb2xlYW4ge1xuICByZXR1cm4gJ3JvbGUnIGluIHAgJiYgJ2NhY2hlJyBpbiBwICYmICdpdGVtJyBpbiBwICYmICEoJ3RvcGljJyBpbiBwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzRGlzcG9zYWJsZVRva2VuQ2FjaGVQZXJtaXNzaW9uKFxuICBwOiBQZXJtaXNzaW9uXG4pOiBEaXNwb3NhYmxlVG9rZW5DYWNoZVBlcm1pc3Npb24ge1xuICBpZiAoIWlzRGlzcG9zYWJsZVRva2VuQ2FjaGVQZXJtaXNzaW9uKHApKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYHBlcm1pc3Npb24gaXMgbm90IGEgRGlzcG9zYWJsZVRva2VuQ2FjaGVQZXJtaXNzaW9uIG9iamVjdDogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgcFxuICAgICAgKX1gXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcCBhcyBEaXNwb3NhYmxlVG9rZW5DYWNoZVBlcm1pc3Npb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlzcG9zYWJsZVRva2VuQ2FjaGVQZXJtaXNzaW9ucyB7XG4gIHBlcm1pc3Npb25zOiBBcnJheTxEaXNwb3NhYmxlVG9rZW5DYWNoZVBlcm1pc3Npb24+O1xufVxuXG5leHBvcnQgdHlwZSBEaXNwb3NhYmxlVG9rZW5TY29wZSA9XG4gIHwgUGVybWlzc2lvbnNcbiAgfCBQcmVkZWZpbmVkU2NvcGVcbiAgfCBEaXNwb3NhYmxlVG9rZW5DYWNoZVBlcm1pc3Npb25zO1xuXG5mdW5jdGlvbiBpc0Rpc3Bvc2FibGVUb2tlblBlcm1pc3Npb25PYmplY3QocDogUGVybWlzc2lvbik6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNEaXNwb3NhYmxlVG9rZW5DYWNoZVBlcm1pc3Npb24ocCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Rpc3Bvc2FibGVUb2tlblBlcm1pc3Npb25zT2JqZWN0KFxuICBzY29wZTogRGlzcG9zYWJsZVRva2VuU2NvcGVcbik6IGJvb2xlYW4ge1xuICBpZiAoISgncGVybWlzc2lvbnMnIGluIHNjb3BlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBwZXJtaXNzaW9ucyA9IHNjb3BlLnBlcm1pc3Npb25zO1xuICByZXR1cm4gcGVybWlzc2lvbnMuZXZlcnkocCA9PiBpc0Rpc3Bvc2FibGVUb2tlblBlcm1pc3Npb25PYmplY3QocCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNEaXNwb3NhYmxlVG9rZW5QZXJtaXNzaW9uc09iamVjdChcbiAgc2NvcGU6IERpc3Bvc2FibGVUb2tlblNjb3BlXG4pOiBEaXNwb3NhYmxlVG9rZW5DYWNoZVBlcm1pc3Npb25zIHtcbiAgY29uc29sZS5sb2coXG4gICAgYEFTX0RJU1BPU0FCTEVfVE9LRU5fUEVSTUlTU0lPTlNfT0JKRUNUOiAke0pTT04uc3RyaW5naWZ5KHNjb3BlKX1gXG4gICk7XG4gIGlmICghaXNEaXNwb3NhYmxlVG9rZW5QZXJtaXNzaW9uc09iamVjdChzY29wZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgVG9rZW4gc2NvcGUgaXMgbm90IGEgRGlzcG9zYWJsZVRva2VuQ2FjaGVQZXJtaXNzaW9ucyBvYmplY3Q6ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIHNjb3BlXG4gICAgICApfWBcbiAgICApO1xuICB9XG4gIHJldHVybiBzY29wZSBhcyBEaXNwb3NhYmxlVG9rZW5DYWNoZVBlcm1pc3Npb25zO1xufVxuIl19
@@ -1,5 +1,6 @@
1
- import { CacheSelector, DisposableTokenScope } from './token-scope';
2
- export * from './token-scopes';
1
+ import { CacheSelector } from './permission-scope';
2
+ import { DisposableTokenScope } from './disposable-token-scope';
3
+ export * from './permission-scopes';
3
4
  export declare function cacheKeyReadWrite(cacheSelector: CacheSelector, key: string): DisposableTokenScope;
4
5
  export declare function cacheKeyPrefixReadWrite(cacheSelector: CacheSelector, keyPrefix: string): DisposableTokenScope;
5
6
  export declare function cacheKeyReadOnly(cacheSelector: CacheSelector, key: string): DisposableTokenScope;
@@ -15,11 +15,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.cacheKeyPrefixWriteOnly = exports.cacheKeyWriteOnly = exports.cacheKeyPrefixReadOnly = exports.cacheKeyReadOnly = exports.cacheKeyPrefixReadWrite = exports.cacheKeyReadWrite = void 0;
18
- const token_scope_1 = require("./token-scope");
19
- __exportStar(require("./token-scopes"), exports);
18
+ const permission_scope_1 = require("./permission-scope");
19
+ __exportStar(require("./permission-scopes"), exports);
20
20
  function cacheKeyReadWrite(cacheSelector, key) {
21
21
  return {
22
- permissions: [{ role: token_scope_1.CacheRole.ReadWrite, cache: cacheSelector, item: key }],
22
+ permissions: [{ role: permission_scope_1.CacheRole.ReadWrite, cache: cacheSelector, item: key }],
23
23
  };
24
24
  }
25
25
  exports.cacheKeyReadWrite = cacheKeyReadWrite;
@@ -27,7 +27,7 @@ function cacheKeyPrefixReadWrite(cacheSelector, keyPrefix) {
27
27
  return {
28
28
  permissions: [
29
29
  {
30
- role: token_scope_1.CacheRole.ReadWrite,
30
+ role: permission_scope_1.CacheRole.ReadWrite,
31
31
  cache: cacheSelector,
32
32
  item: { keyPrefix: keyPrefix },
33
33
  },
@@ -37,7 +37,7 @@ function cacheKeyPrefixReadWrite(cacheSelector, keyPrefix) {
37
37
  exports.cacheKeyPrefixReadWrite = cacheKeyPrefixReadWrite;
38
38
  function cacheKeyReadOnly(cacheSelector, key) {
39
39
  return {
40
- permissions: [{ role: token_scope_1.CacheRole.ReadOnly, cache: cacheSelector, item: key }],
40
+ permissions: [{ role: permission_scope_1.CacheRole.ReadOnly, cache: cacheSelector, item: key }],
41
41
  };
42
42
  }
43
43
  exports.cacheKeyReadOnly = cacheKeyReadOnly;
@@ -45,7 +45,7 @@ function cacheKeyPrefixReadOnly(cacheSelector, keyPrefix) {
45
45
  return {
46
46
  permissions: [
47
47
  {
48
- role: token_scope_1.CacheRole.ReadOnly,
48
+ role: permission_scope_1.CacheRole.ReadOnly,
49
49
  cache: cacheSelector,
50
50
  item: { keyPrefix: keyPrefix },
51
51
  },
@@ -55,7 +55,7 @@ function cacheKeyPrefixReadOnly(cacheSelector, keyPrefix) {
55
55
  exports.cacheKeyPrefixReadOnly = cacheKeyPrefixReadOnly;
56
56
  function cacheKeyWriteOnly(cacheSelector, key) {
57
57
  return {
58
- permissions: [{ role: token_scope_1.CacheRole.WriteOnly, cache: cacheSelector, item: key }],
58
+ permissions: [{ role: permission_scope_1.CacheRole.WriteOnly, cache: cacheSelector, item: key }],
59
59
  };
60
60
  }
61
61
  exports.cacheKeyWriteOnly = cacheKeyWriteOnly;
@@ -63,7 +63,7 @@ function cacheKeyPrefixWriteOnly(cacheSelector, keyPrefix) {
63
63
  return {
64
64
  permissions: [
65
65
  {
66
- role: token_scope_1.CacheRole.WriteOnly,
66
+ role: permission_scope_1.CacheRole.WriteOnly,
67
67
  cache: cacheSelector,
68
68
  item: { keyPrefix: keyPrefix },
69
69
  },
@@ -71,4 +71,4 @@ function cacheKeyPrefixWriteOnly(cacheSelector, keyPrefix) {
71
71
  };
72
72
  }
73
73
  exports.cacheKeyPrefixWriteOnly = cacheKeyPrefixWriteOnly;
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcG9zYWJsZS10b2tlbi1zY29wZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXV0aC90b2tlbnMvZGlzcG9zYWJsZS10b2tlbi1zY29wZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBNkU7QUFFN0UsaURBQStCO0FBRS9CLFNBQWdCLGlCQUFpQixDQUMvQixhQUE0QixFQUM1QixHQUFXO0lBRVgsT0FBTztRQUNMLFdBQVcsRUFBRSxDQUFDLEVBQUMsSUFBSSxFQUFFLHVCQUFTLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBQyxDQUFDO0tBQzVFLENBQUM7QUFDSixDQUFDO0FBUEQsOENBT0M7QUFFRCxTQUFnQix1QkFBdUIsQ0FDckMsYUFBNEIsRUFDNUIsU0FBaUI7SUFFakIsT0FBTztRQUNMLFdBQVcsRUFBRTtZQUNYO2dCQUNFLElBQUksRUFBRSx1QkFBUyxDQUFDLFNBQVM7Z0JBQ3pCLEtBQUssRUFBRSxhQUFhO2dCQUNwQixJQUFJLEVBQUUsRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFDO2FBQzdCO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQztBQWJELDBEQWFDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQzlCLGFBQTRCLEVBQzVCLEdBQVc7SUFFWCxPQUFPO1FBQ0wsV0FBVyxFQUFFLENBQUMsRUFBQyxJQUFJLEVBQUUsdUJBQVMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFDLENBQUM7S0FDM0UsQ0FBQztBQUNKLENBQUM7QUFQRCw0Q0FPQztBQUVELFNBQWdCLHNCQUFzQixDQUNwQyxhQUE0QixFQUM1QixTQUFpQjtJQUVqQixPQUFPO1FBQ0wsV0FBVyxFQUFFO1lBQ1g7Z0JBQ0UsSUFBSSxFQUFFLHVCQUFTLENBQUMsUUFBUTtnQkFDeEIsS0FBSyxFQUFFLGFBQWE7Z0JBQ3BCLElBQUksRUFBRSxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUM7YUFDN0I7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDO0FBYkQsd0RBYUM7QUFFRCxTQUFnQixpQkFBaUIsQ0FDL0IsYUFBNEIsRUFDNUIsR0FBVztJQUVYLE9BQU87UUFDTCxXQUFXLEVBQUUsQ0FBQyxFQUFDLElBQUksRUFBRSx1QkFBUyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUMsQ0FBQztLQUM1RSxDQUFDO0FBQ0osQ0FBQztBQVBELDhDQU9DO0FBRUQsU0FBZ0IsdUJBQXVCLENBQ3JDLGFBQTRCLEVBQzVCLFNBQWlCO0lBRWpCLE9BQU87UUFDTCxXQUFXLEVBQUU7WUFDWDtnQkFDRSxJQUFJLEVBQUUsdUJBQVMsQ0FBQyxTQUFTO2dCQUN6QixLQUFLLEVBQUUsYUFBYTtnQkFDcEIsSUFBSSxFQUFFLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBQzthQUM3QjtTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFiRCwwREFhQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2FjaGVSb2xlLCBDYWNoZVNlbGVjdG9yLCBEaXNwb3NhYmxlVG9rZW5TY29wZX0gZnJvbSAnLi90b2tlbi1zY29wZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vdG9rZW4tc2NvcGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNhY2hlS2V5UmVhZFdyaXRlKFxuICBjYWNoZVNlbGVjdG9yOiBDYWNoZVNlbGVjdG9yLFxuICBrZXk6IHN0cmluZ1xuKTogRGlzcG9zYWJsZVRva2VuU2NvcGUge1xuICByZXR1cm4ge1xuICAgIHBlcm1pc3Npb25zOiBbe3JvbGU6IENhY2hlUm9sZS5SZWFkV3JpdGUsIGNhY2hlOiBjYWNoZVNlbGVjdG9yLCBpdGVtOiBrZXl9XSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhY2hlS2V5UHJlZml4UmVhZFdyaXRlKFxuICBjYWNoZVNlbGVjdG9yOiBDYWNoZVNlbGVjdG9yLFxuICBrZXlQcmVmaXg6IHN0cmluZ1xuKTogRGlzcG9zYWJsZVRva2VuU2NvcGUge1xuICByZXR1cm4ge1xuICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICB7XG4gICAgICAgIHJvbGU6IENhY2hlUm9sZS5SZWFkV3JpdGUsXG4gICAgICAgIGNhY2hlOiBjYWNoZVNlbGVjdG9yLFxuICAgICAgICBpdGVtOiB7a2V5UHJlZml4OiBrZXlQcmVmaXh9LFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FjaGVLZXlSZWFkT25seShcbiAgY2FjaGVTZWxlY3RvcjogQ2FjaGVTZWxlY3RvcixcbiAga2V5OiBzdHJpbmdcbik6IERpc3Bvc2FibGVUb2tlblNjb3BlIHtcbiAgcmV0dXJuIHtcbiAgICBwZXJtaXNzaW9uczogW3tyb2xlOiBDYWNoZVJvbGUuUmVhZE9ubHksIGNhY2hlOiBjYWNoZVNlbGVjdG9yLCBpdGVtOiBrZXl9XSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhY2hlS2V5UHJlZml4UmVhZE9ubHkoXG4gIGNhY2hlU2VsZWN0b3I6IENhY2hlU2VsZWN0b3IsXG4gIGtleVByZWZpeDogc3RyaW5nXG4pOiBEaXNwb3NhYmxlVG9rZW5TY29wZSB7XG4gIHJldHVybiB7XG4gICAgcGVybWlzc2lvbnM6IFtcbiAgICAgIHtcbiAgICAgICAgcm9sZTogQ2FjaGVSb2xlLlJlYWRPbmx5LFxuICAgICAgICBjYWNoZTogY2FjaGVTZWxlY3RvcixcbiAgICAgICAgaXRlbToge2tleVByZWZpeDoga2V5UHJlZml4fSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhY2hlS2V5V3JpdGVPbmx5KFxuICBjYWNoZVNlbGVjdG9yOiBDYWNoZVNlbGVjdG9yLFxuICBrZXk6IHN0cmluZ1xuKTogRGlzcG9zYWJsZVRva2VuU2NvcGUge1xuICByZXR1cm4ge1xuICAgIHBlcm1pc3Npb25zOiBbe3JvbGU6IENhY2hlUm9sZS5Xcml0ZU9ubHksIGNhY2hlOiBjYWNoZVNlbGVjdG9yLCBpdGVtOiBrZXl9XSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhY2hlS2V5UHJlZml4V3JpdGVPbmx5KFxuICBjYWNoZVNlbGVjdG9yOiBDYWNoZVNlbGVjdG9yLFxuICBrZXlQcmVmaXg6IHN0cmluZ1xuKTogRGlzcG9zYWJsZVRva2VuU2NvcGUge1xuICByZXR1cm4ge1xuICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICB7XG4gICAgICAgIHJvbGU6IENhY2hlUm9sZS5Xcml0ZU9ubHksXG4gICAgICAgIGNhY2hlOiBjYWNoZVNlbGVjdG9yLFxuICAgICAgICBpdGVtOiB7a2V5UHJlZml4OiBrZXlQcmVmaXh9LFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xufVxuIl19
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcG9zYWJsZS10b2tlbi1zY29wZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXV0aC90b2tlbnMvZGlzcG9zYWJsZS10b2tlbi1zY29wZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5REFBNEQ7QUFHNUQsc0RBQW9DO0FBRXBDLFNBQWdCLGlCQUFpQixDQUMvQixhQUE0QixFQUM1QixHQUFXO0lBRVgsT0FBTztRQUNMLFdBQVcsRUFBRSxDQUFDLEVBQUMsSUFBSSxFQUFFLDRCQUFTLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBQyxDQUFDO0tBQzVFLENBQUM7QUFDSixDQUFDO0FBUEQsOENBT0M7QUFFRCxTQUFnQix1QkFBdUIsQ0FDckMsYUFBNEIsRUFDNUIsU0FBaUI7SUFFakIsT0FBTztRQUNMLFdBQVcsRUFBRTtZQUNYO2dCQUNFLElBQUksRUFBRSw0QkFBUyxDQUFDLFNBQVM7Z0JBQ3pCLEtBQUssRUFBRSxhQUFhO2dCQUNwQixJQUFJLEVBQUUsRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFDO2FBQzdCO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQztBQWJELDBEQWFDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQzlCLGFBQTRCLEVBQzVCLEdBQVc7SUFFWCxPQUFPO1FBQ0wsV0FBVyxFQUFFLENBQUMsRUFBQyxJQUFJLEVBQUUsNEJBQVMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFDLENBQUM7S0FDM0UsQ0FBQztBQUNKLENBQUM7QUFQRCw0Q0FPQztBQUVELFNBQWdCLHNCQUFzQixDQUNwQyxhQUE0QixFQUM1QixTQUFpQjtJQUVqQixPQUFPO1FBQ0wsV0FBVyxFQUFFO1lBQ1g7Z0JBQ0UsSUFBSSxFQUFFLDRCQUFTLENBQUMsUUFBUTtnQkFDeEIsS0FBSyxFQUFFLGFBQWE7Z0JBQ3BCLElBQUksRUFBRSxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUM7YUFDN0I7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDO0FBYkQsd0RBYUM7QUFFRCxTQUFnQixpQkFBaUIsQ0FDL0IsYUFBNEIsRUFDNUIsR0FBVztJQUVYLE9BQU87UUFDTCxXQUFXLEVBQUUsQ0FBQyxFQUFDLElBQUksRUFBRSw0QkFBUyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUMsQ0FBQztLQUM1RSxDQUFDO0FBQ0osQ0FBQztBQVBELDhDQU9DO0FBRUQsU0FBZ0IsdUJBQXVCLENBQ3JDLGFBQTRCLEVBQzVCLFNBQWlCO0lBRWpCLE9BQU87UUFDTCxXQUFXLEVBQUU7WUFDWDtnQkFDRSxJQUFJLEVBQUUsNEJBQVMsQ0FBQyxTQUFTO2dCQUN6QixLQUFLLEVBQUUsYUFBYTtnQkFDcEIsSUFBSSxFQUFFLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBQzthQUM3QjtTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFiRCwwREFhQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2FjaGVSb2xlLCBDYWNoZVNlbGVjdG9yfSBmcm9tICcuL3Blcm1pc3Npb24tc2NvcGUnO1xuaW1wb3J0IHtEaXNwb3NhYmxlVG9rZW5TY29wZX0gZnJvbSAnLi9kaXNwb3NhYmxlLXRva2VuLXNjb3BlJztcblxuZXhwb3J0ICogZnJvbSAnLi9wZXJtaXNzaW9uLXNjb3Blcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWNoZUtleVJlYWRXcml0ZShcbiAgY2FjaGVTZWxlY3RvcjogQ2FjaGVTZWxlY3RvcixcbiAga2V5OiBzdHJpbmdcbik6IERpc3Bvc2FibGVUb2tlblNjb3BlIHtcbiAgcmV0dXJuIHtcbiAgICBwZXJtaXNzaW9uczogW3tyb2xlOiBDYWNoZVJvbGUuUmVhZFdyaXRlLCBjYWNoZTogY2FjaGVTZWxlY3RvciwgaXRlbToga2V5fV0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWNoZUtleVByZWZpeFJlYWRXcml0ZShcbiAgY2FjaGVTZWxlY3RvcjogQ2FjaGVTZWxlY3RvcixcbiAga2V5UHJlZml4OiBzdHJpbmdcbik6IERpc3Bvc2FibGVUb2tlblNjb3BlIHtcbiAgcmV0dXJuIHtcbiAgICBwZXJtaXNzaW9uczogW1xuICAgICAge1xuICAgICAgICByb2xlOiBDYWNoZVJvbGUuUmVhZFdyaXRlLFxuICAgICAgICBjYWNoZTogY2FjaGVTZWxlY3RvcixcbiAgICAgICAgaXRlbToge2tleVByZWZpeDoga2V5UHJlZml4fSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhY2hlS2V5UmVhZE9ubHkoXG4gIGNhY2hlU2VsZWN0b3I6IENhY2hlU2VsZWN0b3IsXG4gIGtleTogc3RyaW5nXG4pOiBEaXNwb3NhYmxlVG9rZW5TY29wZSB7XG4gIHJldHVybiB7XG4gICAgcGVybWlzc2lvbnM6IFt7cm9sZTogQ2FjaGVSb2xlLlJlYWRPbmx5LCBjYWNoZTogY2FjaGVTZWxlY3RvciwgaXRlbToga2V5fV0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWNoZUtleVByZWZpeFJlYWRPbmx5KFxuICBjYWNoZVNlbGVjdG9yOiBDYWNoZVNlbGVjdG9yLFxuICBrZXlQcmVmaXg6IHN0cmluZ1xuKTogRGlzcG9zYWJsZVRva2VuU2NvcGUge1xuICByZXR1cm4ge1xuICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICB7XG4gICAgICAgIHJvbGU6IENhY2hlUm9sZS5SZWFkT25seSxcbiAgICAgICAgY2FjaGU6IGNhY2hlU2VsZWN0b3IsXG4gICAgICAgIGl0ZW06IHtrZXlQcmVmaXg6IGtleVByZWZpeH0sXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWNoZUtleVdyaXRlT25seShcbiAgY2FjaGVTZWxlY3RvcjogQ2FjaGVTZWxlY3RvcixcbiAga2V5OiBzdHJpbmdcbik6IERpc3Bvc2FibGVUb2tlblNjb3BlIHtcbiAgcmV0dXJuIHtcbiAgICBwZXJtaXNzaW9uczogW3tyb2xlOiBDYWNoZVJvbGUuV3JpdGVPbmx5LCBjYWNoZTogY2FjaGVTZWxlY3RvciwgaXRlbToga2V5fV0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWNoZUtleVByZWZpeFdyaXRlT25seShcbiAgY2FjaGVTZWxlY3RvcjogQ2FjaGVTZWxlY3RvcixcbiAga2V5UHJlZml4OiBzdHJpbmdcbik6IERpc3Bvc2FibGVUb2tlblNjb3BlIHtcbiAgcmV0dXJuIHtcbiAgICBwZXJtaXNzaW9uczogW1xuICAgICAge1xuICAgICAgICByb2xlOiBDYWNoZVJvbGUuV3JpdGVPbmx5LFxuICAgICAgICBjYWNoZTogY2FjaGVTZWxlY3RvcixcbiAgICAgICAgaXRlbToge2tleVByZWZpeDoga2V5UHJlZml4fSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcbn1cbiJdfQ==
@@ -48,31 +48,12 @@ export interface Permissions {
48
48
  permissions: Array<Permission>;
49
49
  }
50
50
  export declare const AllDataReadWrite: Permissions;
51
- export declare function isPermissionsObject(scope: TokenScope): boolean;
52
- export declare function asPermissionsObject(scope: TokenScope): Permissions;
51
+ export declare function isPermissionsObject(scope: PermissionScope): boolean;
52
+ export declare function asPermissionsObject(scope: PermissionScope): Permissions;
53
53
  export declare abstract class PredefinedScope {
54
54
  }
55
- export type TokenScope = typeof AllDataReadWrite | Permissions | PredefinedScope;
56
- export interface CacheItemKey {
57
- key: string;
58
- }
59
- export interface CacheItemKeyPrefix {
60
- keyPrefix: string;
61
- }
62
- export declare function isCacheItemKey(cacheItem: CacheItemSelector): cacheItem is CacheItemKey;
63
- export declare function isCacheItemKeyPrefix(cacheItem: CacheItemSelector): cacheItem is CacheItemKeyPrefix;
64
- export type CacheItemSelector = typeof AllCacheItems | CacheItemKey | CacheItemKeyPrefix | string;
65
- export interface DisposableTokenCachePermission extends CachePermission {
66
- /**
67
- * Scope the token permissions to select cache items
68
- */
69
- item: CacheItemSelector;
70
- }
71
- export declare function isDisposableTokenCachePermission(p: Permission): boolean;
72
- export declare function asDisposableTokenCachePermission(p: Permission): DisposableTokenCachePermission;
73
- export interface DisposableTokenCachePermissions {
74
- permissions: Array<DisposableTokenCachePermission>;
75
- }
76
- export type DisposableTokenScope = Permissions | PredefinedScope | DisposableTokenCachePermissions;
77
- export declare function isDisposableTokenPermissionsObject(scope: DisposableTokenScope): boolean;
78
- export declare function asDisposableTokenPermissionsObject(scope: DisposableTokenScope): DisposableTokenCachePermissions;
55
+ export type PermissionScope = typeof AllDataReadWrite | Permissions | PredefinedScope;
56
+ /**
57
+ * @deprecated please use PermissionScope instead
58
+ */
59
+ export type TokenScope = PermissionScope;
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PredefinedScope = exports.asPermissionsObject = exports.isPermissionsObject = exports.AllDataReadWrite = exports.asTopicPermission = exports.isTopicPermission = exports.isTopicName = exports.TopicRole = exports.asCachePermission = exports.isCachePermission = exports.isCacheName = exports.AllCacheItems = exports.AllTopics = exports.AllCaches = exports.CacheRole = void 0;
4
+ var CacheRole;
5
+ (function (CacheRole) {
6
+ CacheRole["ReadWrite"] = "readwrite";
7
+ CacheRole["ReadOnly"] = "readonly";
8
+ CacheRole["WriteOnly"] = "writeonly";
9
+ })(CacheRole = exports.CacheRole || (exports.CacheRole = {}));
10
+ exports.AllCaches = Symbol();
11
+ exports.AllTopics = Symbol();
12
+ exports.AllCacheItems = Symbol();
13
+ function isCacheName(cache) {
14
+ if (cache === exports.AllCaches) {
15
+ return false;
16
+ }
17
+ return 'name' in cache;
18
+ }
19
+ exports.isCacheName = isCacheName;
20
+ function isCachePermission(p) {
21
+ return 'role' in p && 'cache' in p && !('topic' in p);
22
+ }
23
+ exports.isCachePermission = isCachePermission;
24
+ function asCachePermission(p) {
25
+ if (!isCachePermission(p)) {
26
+ throw new Error(`permission is not a CachePermission object: ${JSON.stringify(p)}`);
27
+ }
28
+ return p;
29
+ }
30
+ exports.asCachePermission = asCachePermission;
31
+ var TopicRole;
32
+ (function (TopicRole) {
33
+ TopicRole["PublishSubscribe"] = "publishsubscribe";
34
+ TopicRole["SubscribeOnly"] = "subscribeonly";
35
+ TopicRole["PublishOnly"] = "publishonly";
36
+ })(TopicRole = exports.TopicRole || (exports.TopicRole = {}));
37
+ function isTopicName(topic) {
38
+ if (topic === exports.AllTopics) {
39
+ return false;
40
+ }
41
+ return 'name' in topic;
42
+ }
43
+ exports.isTopicName = isTopicName;
44
+ function isTopicPermission(p) {
45
+ return 'role' in p && 'cache' in p && 'topic' in p;
46
+ }
47
+ exports.isTopicPermission = isTopicPermission;
48
+ function asTopicPermission(p) {
49
+ if (!isTopicPermission(p)) {
50
+ throw new Error(`permission is not a TopicPermission object: ${JSON.stringify(p)}`);
51
+ }
52
+ return p;
53
+ }
54
+ exports.asTopicPermission = asTopicPermission;
55
+ exports.AllDataReadWrite = {
56
+ permissions: [
57
+ { role: CacheRole.ReadWrite, cache: exports.AllCaches },
58
+ { role: TopicRole.PublishSubscribe, cache: exports.AllCaches, topic: exports.AllTopics },
59
+ ],
60
+ };
61
+ function isPermissionObject(p) {
62
+ return isCachePermission(p) || isTopicPermission(p);
63
+ }
64
+ function isPermissionsObject(scope) {
65
+ if (!('permissions' in scope)) {
66
+ return false;
67
+ }
68
+ const permissions = scope.permissions;
69
+ return permissions.every(p => isPermissionObject(p));
70
+ }
71
+ exports.isPermissionsObject = isPermissionsObject;
72
+ function asPermissionsObject(scope) {
73
+ if (!isPermissionsObject(scope)) {
74
+ throw new Error(`Token scope is not a Permissions object: ${JSON.stringify(scope)}`);
75
+ }
76
+ return scope;
77
+ }
78
+ exports.asPermissionsObject = asPermissionsObject;
79
+ class PredefinedScope {
80
+ }
81
+ exports.PredefinedScope = PredefinedScope;
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1zY29wZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hdXRoL3Rva2Vucy9wZXJtaXNzaW9uLXNjb3BlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQVksU0FJWDtBQUpELFdBQVksU0FBUztJQUNuQixvQ0FBdUIsQ0FBQTtJQUN2QixrQ0FBcUIsQ0FBQTtJQUNyQixvQ0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBSlcsU0FBUyxHQUFULGlCQUFTLEtBQVQsaUJBQVMsUUFJcEI7QUFFWSxRQUFBLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUNyQixRQUFBLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUNyQixRQUFBLGFBQWEsR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUt0QyxTQUFnQixXQUFXLENBQ3pCLEtBQW1DO0lBRW5DLElBQUksS0FBSyxLQUFLLGlCQUFTLEVBQUU7UUFDdkIsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE9BQU8sTUFBTSxJQUFJLEtBQUssQ0FBQztBQUN6QixDQUFDO0FBUEQsa0NBT0M7QUFXRCxTQUFnQixpQkFBaUIsQ0FBQyxDQUFhO0lBQzdDLE9BQU8sTUFBTSxJQUFJLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUZELDhDQUVDO0FBRUQsU0FBZ0IsaUJBQWlCLENBQUMsQ0FBYTtJQUM3QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDekIsTUFBTSxJQUFJLEtBQUssQ0FDYiwrQ0FBK0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNuRSxDQUFDO0tBQ0g7SUFDRCxPQUFPLENBQW9CLENBQUM7QUFDOUIsQ0FBQztBQVBELDhDQU9DO0FBRUQsSUFBWSxTQUlYO0FBSkQsV0FBWSxTQUFTO0lBQ25CLGtEQUFxQyxDQUFBO0lBQ3JDLDRDQUErQixDQUFBO0lBQy9CLHdDQUEyQixDQUFBO0FBQzdCLENBQUMsRUFKVyxTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQUlwQjtBQUtELFNBQWdCLFdBQVcsQ0FDekIsS0FBbUM7SUFFbkMsSUFBSSxLQUFLLEtBQUssaUJBQVMsRUFBRTtRQUN2QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsT0FBTyxNQUFNLElBQUksS0FBSyxDQUFDO0FBQ3pCLENBQUM7QUFQRCxrQ0FPQztBQWVELFNBQWdCLGlCQUFpQixDQUFDLENBQWE7SUFDN0MsT0FBTyxNQUFNLElBQUksQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQztBQUNyRCxDQUFDO0FBRkQsOENBRUM7QUFFRCxTQUFnQixpQkFBaUIsQ0FBQyxDQUFhO0lBQzdDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUN6QixNQUFNLElBQUksS0FBSyxDQUNiLCtDQUErQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ25FLENBQUM7S0FDSDtJQUNELE9BQU8sQ0FBb0IsQ0FBQztBQUM5QixDQUFDO0FBUEQsOENBT0M7QUFRWSxRQUFBLGdCQUFnQixHQUFnQjtJQUMzQyxXQUFXLEVBQUU7UUFDWCxFQUFDLElBQUksRUFBRSxTQUFTLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBUyxFQUFDO1FBQzdDLEVBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsaUJBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQVMsRUFBQztLQUN2RTtDQUNGLENBQUM7QUFFRixTQUFTLGtCQUFrQixDQUFDLENBQWE7SUFDdkMsT0FBTyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBRUQsU0FBZ0IsbUJBQW1CLENBQUMsS0FBc0I7SUFDeEQsSUFBSSxDQUFDLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQyxFQUFFO1FBQzdCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO0lBQ3RDLE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQU5ELGtEQU1DO0FBRUQsU0FBZ0IsbUJBQW1CLENBQUMsS0FBc0I7SUFDeEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQy9CLE1BQU0sSUFBSSxLQUFLLENBQ2IsNENBQTRDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDcEUsQ0FBQztLQUNIO0lBQ0QsT0FBTyxLQUFvQixDQUFDO0FBQzlCLENBQUM7QUFQRCxrREFPQztBQUVELE1BQXNCLGVBQWU7Q0FBRztBQUF4QywwQ0FBd0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBDYWNoZVJvbGUge1xuICBSZWFkV3JpdGUgPSAncmVhZHdyaXRlJyxcbiAgUmVhZE9ubHkgPSAncmVhZG9ubHknLFxuICBXcml0ZU9ubHkgPSAnd3JpdGVvbmx5Jyxcbn1cblxuZXhwb3J0IGNvbnN0IEFsbENhY2hlcyA9IFN5bWJvbCgpO1xuZXhwb3J0IGNvbnN0IEFsbFRvcGljcyA9IFN5bWJvbCgpO1xuZXhwb3J0IGNvbnN0IEFsbENhY2hlSXRlbXMgPSBTeW1ib2woKTtcblxuZXhwb3J0IGludGVyZmFjZSBDYWNoZU5hbWUge1xuICBuYW1lOiBzdHJpbmc7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNDYWNoZU5hbWUoXG4gIGNhY2hlOiBDYWNoZU5hbWUgfCB0eXBlb2YgQWxsQ2FjaGVzXG4pOiBjYWNoZSBpcyBDYWNoZU5hbWUge1xuICBpZiAoY2FjaGUgPT09IEFsbENhY2hlcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gJ25hbWUnIGluIGNhY2hlO1xufVxuZXhwb3J0IHR5cGUgQ2FjaGVTZWxlY3RvciA9IHR5cGVvZiBBbGxDYWNoZXMgfCBDYWNoZU5hbWUgfCBzdHJpbmc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FjaGVQZXJtaXNzaW9uIHtcbiAgcm9sZTogQ2FjaGVSb2xlO1xuICAvKipcbiAgICogU2NvcGUgdGhlIHRva2VuIHBlcm1pc3Npb25zIHRvIHNlbGVjdCBjYWNoZXNcbiAgICovXG4gIGNhY2hlOiBDYWNoZVNlbGVjdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDYWNoZVBlcm1pc3Npb24ocDogUGVybWlzc2lvbik6IGJvb2xlYW4ge1xuICByZXR1cm4gJ3JvbGUnIGluIHAgJiYgJ2NhY2hlJyBpbiBwICYmICEoJ3RvcGljJyBpbiBwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzQ2FjaGVQZXJtaXNzaW9uKHA6IFBlcm1pc3Npb24pOiBDYWNoZVBlcm1pc3Npb24ge1xuICBpZiAoIWlzQ2FjaGVQZXJtaXNzaW9uKHApKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYHBlcm1pc3Npb24gaXMgbm90IGEgQ2FjaGVQZXJtaXNzaW9uIG9iamVjdDogJHtKU09OLnN0cmluZ2lmeShwKX1gXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcCBhcyBDYWNoZVBlcm1pc3Npb247XG59XG5cbmV4cG9ydCBlbnVtIFRvcGljUm9sZSB7XG4gIFB1Ymxpc2hTdWJzY3JpYmUgPSAncHVibGlzaHN1YnNjcmliZScsXG4gIFN1YnNjcmliZU9ubHkgPSAnc3Vic2NyaWJlb25seScsXG4gIFB1Ymxpc2hPbmx5ID0gJ3B1Ymxpc2hvbmx5Jyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUb3BpY05hbWUge1xuICBuYW1lOiBzdHJpbmc7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNUb3BpY05hbWUoXG4gIHRvcGljOiBUb3BpY05hbWUgfCB0eXBlb2YgQWxsVG9waWNzXG4pOiB0b3BpYyBpcyBUb3BpY05hbWUge1xuICBpZiAodG9waWMgPT09IEFsbFRvcGljcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gJ25hbWUnIGluIHRvcGljO1xufVxuZXhwb3J0IHR5cGUgVG9waWNTZWxlY3RvciA9IHR5cGVvZiBBbGxUb3BpY3MgfCBUb3BpY05hbWUgfCBzdHJpbmc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9waWNQZXJtaXNzaW9uIHtcbiAgcm9sZTogVG9waWNSb2xlO1xuICAvKipcbiAgICogU2NvcGUgdGhlIHRva2VuIHBlcm1pc3Npb25zIHRvIHNlbGVjdCBjYWNoZXNcbiAgICovXG4gIGNhY2hlOiBDYWNoZVNlbGVjdG9yO1xuICAvKipcbiAgICogU2NvcGUgdGhlIHRva2VuIHBlcm1pc3Npb25zIHRvIHNlbGVjdCB0b3BpY3NcbiAgICovXG4gIHRvcGljOiBUb3BpY1NlbGVjdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUb3BpY1Blcm1pc3Npb24ocDogUGVybWlzc2lvbik6IGJvb2xlYW4ge1xuICByZXR1cm4gJ3JvbGUnIGluIHAgJiYgJ2NhY2hlJyBpbiBwICYmICd0b3BpYycgaW4gcDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzVG9waWNQZXJtaXNzaW9uKHA6IFBlcm1pc3Npb24pOiBUb3BpY1Blcm1pc3Npb24ge1xuICBpZiAoIWlzVG9waWNQZXJtaXNzaW9uKHApKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYHBlcm1pc3Npb24gaXMgbm90IGEgVG9waWNQZXJtaXNzaW9uIG9iamVjdDogJHtKU09OLnN0cmluZ2lmeShwKX1gXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcCBhcyBUb3BpY1Blcm1pc3Npb247XG59XG5cbmV4cG9ydCB0eXBlIFBlcm1pc3Npb24gPSBDYWNoZVBlcm1pc3Npb24gfCBUb3BpY1Blcm1pc3Npb247XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGVybWlzc2lvbnMge1xuICBwZXJtaXNzaW9uczogQXJyYXk8UGVybWlzc2lvbj47XG59XG5cbmV4cG9ydCBjb25zdCBBbGxEYXRhUmVhZFdyaXRlOiBQZXJtaXNzaW9ucyA9IHtcbiAgcGVybWlzc2lvbnM6IFtcbiAgICB7cm9sZTogQ2FjaGVSb2xlLlJlYWRXcml0ZSwgY2FjaGU6IEFsbENhY2hlc30sXG4gICAge3JvbGU6IFRvcGljUm9sZS5QdWJsaXNoU3Vic2NyaWJlLCBjYWNoZTogQWxsQ2FjaGVzLCB0b3BpYzogQWxsVG9waWNzfSxcbiAgXSxcbn07XG5cbmZ1bmN0aW9uIGlzUGVybWlzc2lvbk9iamVjdChwOiBQZXJtaXNzaW9uKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc0NhY2hlUGVybWlzc2lvbihwKSB8fCBpc1RvcGljUGVybWlzc2lvbihwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUGVybWlzc2lvbnNPYmplY3Qoc2NvcGU6IFBlcm1pc3Npb25TY29wZSk6IGJvb2xlYW4ge1xuICBpZiAoISgncGVybWlzc2lvbnMnIGluIHNjb3BlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBwZXJtaXNzaW9ucyA9IHNjb3BlLnBlcm1pc3Npb25zO1xuICByZXR1cm4gcGVybWlzc2lvbnMuZXZlcnkocCA9PiBpc1Blcm1pc3Npb25PYmplY3QocCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNQZXJtaXNzaW9uc09iamVjdChzY29wZTogUGVybWlzc2lvblNjb3BlKTogUGVybWlzc2lvbnMge1xuICBpZiAoIWlzUGVybWlzc2lvbnNPYmplY3Qoc2NvcGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFRva2VuIHNjb3BlIGlzIG5vdCBhIFBlcm1pc3Npb25zIG9iamVjdDogJHtKU09OLnN0cmluZ2lmeShzY29wZSl9YFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHNjb3BlIGFzIFBlcm1pc3Npb25zO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUHJlZGVmaW5lZFNjb3BlIHt9XG5cbmV4cG9ydCB0eXBlIFBlcm1pc3Npb25TY29wZSA9XG4gIHwgdHlwZW9mIEFsbERhdGFSZWFkV3JpdGVcbiAgfCBQZXJtaXNzaW9uc1xuICB8IFByZWRlZmluZWRTY29wZTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBwbGVhc2UgdXNlIFBlcm1pc3Npb25TY29wZSBpbnN0ZWFkXG4gKi9cbmV4cG9ydCB0eXBlIFRva2VuU2NvcGUgPSBQZXJtaXNzaW9uU2NvcGU7XG4iXX0=