@rio-cloud/cdk-v2-constructs 9.0.0-alpha.8 → 9.0.0-alpha.9

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.
@@ -0,0 +1,87 @@
1
+ import type * as constructs from 'constructs';
2
+ /**
3
+ * The trace sampling strategy used by the Fargate Datadog integration.
4
+ */
5
+ export declare enum TraceSamplingMode {
6
+ /**
7
+ * Use RIO's per-Agent head-sampling target of 5 traces/sec and an additional
8
+ * error-sampling budget of 10 local error trace chunks/sec.
9
+ * Target-per-second sampling is a practical default for both low- and
10
+ * high-traffic services.
11
+ */
12
+ DEFAULT = 0,
13
+ /** Do not set sampling environment variables; retain Datadog's defaults. */
14
+ DATADOG_DEFAULT = 1,
15
+ /** Set a fixed sampling rule on the application tracer. */
16
+ FIXED_RATE = 2,
17
+ /** Set a per-Agent target number of traces per second. */
18
+ TARGET_PER_SECOND = 3
19
+ }
20
+ /**
21
+ * Use RIO's default Datadog Agent sampling targets.
22
+ *
23
+ * This is also the default when `traceSampling` is omitted.
24
+ */
25
+ export interface RioDefaultTraceSamplingOptions {
26
+ /**
27
+ * The sampling strategy. May be omitted to use the default.
28
+ *
29
+ * @defaultValue - `TraceSamplingMode.DEFAULT`
30
+ */
31
+ readonly mode?: TraceSamplingMode.DEFAULT;
32
+ }
33
+ /** Do not set sampling environment variables; retain Datadog's defaults. */
34
+ export interface DatadogDefaultTraceSamplingOptions {
35
+ /** The sampling strategy. */
36
+ readonly mode: TraceSamplingMode.DATADOG_DEFAULT;
37
+ }
38
+ /** Configure a fixed application-tracer sampling rate. */
39
+ export interface FixedRateTraceSamplingOptions {
40
+ /** The sampling strategy. */
41
+ readonly mode: TraceSamplingMode.FIXED_RATE;
42
+ /**
43
+ * The global tracer sampling-rule rate, from 0.0 to 1.0 inclusive.
44
+ * Datadog tracers additionally apply their built-in 100-traces-per-second
45
+ * rate limit when sampling rules are configured. This construct does not
46
+ * expose or override that per-instance safeguard.
47
+ */
48
+ readonly fixedRate: number;
49
+ }
50
+ /** Configure Datadog Agent target sampling. */
51
+ export interface TargetPerSecondTraceSamplingOptions {
52
+ /** The sampling strategy. */
53
+ readonly mode: TraceSamplingMode.TARGET_PER_SECOND;
54
+ /**
55
+ * The average head-sampling target in traces per second for each Agent
56
+ * sidecar (and therefore each Fargate service instance). Traffic spikes
57
+ * can exceed this target; it is not a hard cap on total ingestion.
58
+ */
59
+ readonly targetTracesPerSecond: number;
60
+ /**
61
+ * The budget for additional local error trace chunks per second missed by
62
+ * head sampling, for each Agent sidecar (and therefore each Fargate service
63
+ * instance). This does not cap error traces already kept by head sampling.
64
+ */
65
+ readonly errorTracesPerSecond?: number;
66
+ }
67
+ /**
68
+ * Options for configuring Datadog APM trace sampling.
69
+ *
70
+ * This discriminated union makes mode-specific settings invalid in TypeScript
71
+ * before synthesis. Numeric ranges are checked during synthesis.
72
+ */
73
+ export type TraceSamplingOptions = RioDefaultTraceSamplingOptions | DatadogDefaultTraceSamplingOptions | FixedRateTraceSamplingOptions | TargetPerSecondTraceSamplingOptions;
74
+ export declare class TraceSamplingValidator implements constructs.IValidation {
75
+ private readonly traceSampling?;
76
+ constructor(traceSampling?: TraceSamplingOptions | undefined);
77
+ validate(): string[];
78
+ }
79
+ export declare function addTraceSamplingEnvironmentWarning(scope: constructs.Construct, environment: {
80
+ [key: string]: string;
81
+ } | undefined): void;
82
+ export declare function getApplicationTraceSamplingEnvironment(traceSampling?: TraceSamplingOptions): {
83
+ [key: string]: string;
84
+ };
85
+ export declare function getAgentTraceSamplingEnvironment(traceSampling?: TraceSamplingOptions): {
86
+ [key: string]: string;
87
+ };
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.TraceSamplingValidator = exports.TraceSamplingMode = void 0;
5
+ exports.addTraceSamplingEnvironmentWarning = addTraceSamplingEnvironmentWarning;
6
+ exports.getApplicationTraceSamplingEnvironment = getApplicationTraceSamplingEnvironment;
7
+ exports.getAgentTraceSamplingEnvironment = getAgentTraceSamplingEnvironment;
8
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
9
+ const cdk = require("aws-cdk-lib");
10
+ /**
11
+ * The trace sampling strategy used by the Fargate Datadog integration.
12
+ */
13
+ var TraceSamplingMode;
14
+ (function (TraceSamplingMode) {
15
+ /**
16
+ * Use RIO's per-Agent head-sampling target of 5 traces/sec and an additional
17
+ * error-sampling budget of 10 local error trace chunks/sec.
18
+ * Target-per-second sampling is a practical default for both low- and
19
+ * high-traffic services.
20
+ */
21
+ TraceSamplingMode[TraceSamplingMode["DEFAULT"] = 0] = "DEFAULT";
22
+ /** Do not set sampling environment variables; retain Datadog's defaults. */
23
+ TraceSamplingMode[TraceSamplingMode["DATADOG_DEFAULT"] = 1] = "DATADOG_DEFAULT";
24
+ /** Set a fixed sampling rule on the application tracer. */
25
+ TraceSamplingMode[TraceSamplingMode["FIXED_RATE"] = 2] = "FIXED_RATE";
26
+ /** Set a per-Agent target number of traces per second. */
27
+ TraceSamplingMode[TraceSamplingMode["TARGET_PER_SECOND"] = 3] = "TARGET_PER_SECOND";
28
+ })(TraceSamplingMode || (exports.TraceSamplingMode = TraceSamplingMode = {}));
29
+ class TraceSamplingValidator {
30
+ constructor(traceSampling) {
31
+ this.traceSampling = traceSampling;
32
+ }
33
+ validate() {
34
+ const options = this.traceSampling;
35
+ if (!options) {
36
+ return [];
37
+ }
38
+ // Keep validating the runtime shape: JavaScript consumers and TypeScript
39
+ // callers using a cast can bypass the discriminated union.
40
+ const values = options;
41
+ const mode = values.mode ?? TraceSamplingMode.DEFAULT;
42
+ const hasFixedRate = values.fixedRate !== undefined;
43
+ const hasTargetTps = values.targetTracesPerSecond !== undefined;
44
+ const hasErrorTps = values.errorTracesPerSecond !== undefined;
45
+ const errors = [];
46
+ const isNonNegativeInteger = (value) => value !== undefined && Number.isInteger(value) && value >= 0;
47
+ if (mode === TraceSamplingMode.DEFAULT || mode === TraceSamplingMode.DATADOG_DEFAULT) {
48
+ if (hasFixedRate || hasTargetTps || hasErrorTps) {
49
+ errors.push(`${TraceSamplingMode[mode]} does not accept fixedRate, targetTracesPerSecond, or errorTracesPerSecond.`);
50
+ }
51
+ }
52
+ else if (mode === TraceSamplingMode.FIXED_RATE) {
53
+ const fixedRate = values.fixedRate;
54
+ if (!hasFixedRate ||
55
+ fixedRate === undefined ||
56
+ !Number.isFinite(fixedRate) ||
57
+ fixedRate < 0.0 ||
58
+ fixedRate > 1.0) {
59
+ errors.push('FIXED_RATE requires fixedRate to be a number between 0 and 1 inclusive.');
60
+ }
61
+ if (hasTargetTps) {
62
+ errors.push('FIXED_RATE does not accept targetTracesPerSecond.');
63
+ }
64
+ if (hasErrorTps) {
65
+ errors.push('FIXED_RATE does not accept errorTracesPerSecond.');
66
+ }
67
+ }
68
+ else if (mode === TraceSamplingMode.TARGET_PER_SECOND) {
69
+ if (!isNonNegativeInteger(values.targetTracesPerSecond)) {
70
+ errors.push('TARGET_PER_SECOND requires targetTracesPerSecond to be a non-negative integer.');
71
+ }
72
+ if (hasFixedRate) {
73
+ errors.push('TARGET_PER_SECOND does not accept fixedRate.');
74
+ }
75
+ if (hasErrorTps && !isNonNegativeInteger(values.errorTracesPerSecond)) {
76
+ errors.push('TARGET_PER_SECOND errorTracesPerSecond must be a non-negative integer.');
77
+ }
78
+ }
79
+ else {
80
+ errors.push('traceSampling.mode must be a TraceSamplingMode value.');
81
+ }
82
+ return errors;
83
+ }
84
+ }
85
+ exports.TraceSamplingValidator = TraceSamplingValidator;
86
+ _a = JSII_RTTI_SYMBOL_1;
87
+ TraceSamplingValidator[_a] = { fqn: "@rio-cloud-internal/cdk-v2-constructs.TraceSamplingValidator", version: "0.0.0" };
88
+ function addTraceSamplingEnvironmentWarning(scope, environment) {
89
+ const samplingKeys = ['DD_TRACE_SAMPLING_RULES', 'DD_TRACE_SAMPLE_RATE', 'DD_APM_TARGET_TPS', 'DD_APM_ERROR_TPS'];
90
+ const configuredKeys = samplingKeys.filter(key => environment && key in environment);
91
+ if (configuredKeys.length > 0) {
92
+ cdk.Validations.of(scope).addWarning('@rio-cloud/cdk-v2-constructs:directTraceSamplingEnvironment', [
93
+ `Direct trace-sampling environment variable(s) detected: ${configuredKeys.join(', ')}.`,
94
+ 'Recommended action: remove these variables to use the DEFAULT sampling policy.',
95
+ 'To select a different policy, configure datadogOptions.traceSampling explicitly.',
96
+ 'Direct sampling environment variables remain supported only for backwards compatibility. Users who choose them are responsible for their compatibility and maintenance.',
97
+ ].join('\n'));
98
+ }
99
+ }
100
+ function getApplicationTraceSamplingEnvironment(traceSampling) {
101
+ if (traceSampling?.mode === TraceSamplingMode.FIXED_RATE) {
102
+ const rules = [{ sample_rate: traceSampling.fixedRate }];
103
+ return { DD_TRACE_SAMPLING_RULES: JSON.stringify(rules) };
104
+ }
105
+ return {};
106
+ }
107
+ function getAgentTraceSamplingEnvironment(traceSampling) {
108
+ if (traceSampling?.mode === undefined || traceSampling.mode === TraceSamplingMode.DEFAULT) {
109
+ return { DD_APM_TARGET_TPS: '5', DD_APM_ERROR_TPS: '10' };
110
+ }
111
+ if (traceSampling?.mode === TraceSamplingMode.TARGET_PER_SECOND) {
112
+ const environment = {};
113
+ if (traceSampling.targetTracesPerSecond !== undefined) {
114
+ environment.DD_APM_TARGET_TPS = String(traceSampling.targetTracesPerSecond);
115
+ }
116
+ if (traceSampling.errorTracesPerSecond !== undefined) {
117
+ environment.DD_APM_ERROR_TPS = String(traceSampling.errorTracesPerSecond);
118
+ }
119
+ return environment;
120
+ }
121
+ return {};
122
+ }
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2Utc2FtcGxpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmFyZ2F0ZS90cmFjZS1zYW1wbGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBZ0tBLGdGQWlCQztBQUVELHdGQVFDO0FBRUQsNEVBZUM7O0FBNU1ELG1DQUFtQztBQUduQzs7R0FFRztBQUNILElBQVksaUJBaUJYO0FBakJELFdBQVksaUJBQWlCO0lBQzNCOzs7OztPQUtHO0lBQ0gsK0RBQU8sQ0FBQTtJQUVQLDRFQUE0RTtJQUM1RSwrRUFBZSxDQUFBO0lBRWYsMkRBQTJEO0lBQzNELHFFQUFVLENBQUE7SUFFViwwREFBMEQ7SUFDMUQsbUZBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQWpCVyxpQkFBaUIsaUNBQWpCLGlCQUFpQixRQWlCNUI7QUE0RUQsTUFBYSxzQkFBc0I7SUFDakMsWUFBNkIsYUFBb0M7UUFBcEMsa0JBQWEsR0FBYixhQUFhLENBQXVCO0lBQUcsQ0FBQztJQUVyRSxRQUFRO1FBQ04sTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCx5RUFBeUU7UUFDekUsMkRBQTJEO1FBQzNELE1BQU0sTUFBTSxHQUFHLE9BQThCLENBQUM7UUFDOUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLENBQUM7UUFDdEQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUM7UUFDcEQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixLQUFLLFNBQVMsQ0FBQztRQUNoRSxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsb0JBQW9CLEtBQUssU0FBUyxDQUFDO1FBQzlELE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztRQUM1QixNQUFNLG9C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RSxJQUFJLEtBQUssaUJBQWlCLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDekQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFFLFdBQVcsRUFBRSxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQzVELENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUM7QUFFRCxTQUFnQixnQ0FBZ0MsQ0FBQyxhQUFvQztJQUNuRixJQUFJLGFBQWEsRUFBRSxJQUFJLEtBQUssU0FBUyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEtBQUssaUJBQWlCLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0lBQ0QsSUFBSSxhQUFhLEVBQUUsSUFBSSxLQUFLLGlCQUFpQixDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDaEUsTUFBTSxXQUFXLEdBQThCLEVBQUUsQ0FBQztRQUNsRCxJQUFJLGFBQWEsQ0FBQyxxQkFBcUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN0RCxXQUFXLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzlFLENBQUM7UUFDRCxJQUFJLGFBQWEsQ0FBQyxvQkFBb0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNyRCxXQUFXLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBQ0QsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB0eXBlICogYXMgY29uc3RydWN0cyBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBUaGUgdHJhY2Ugc2FtcGxpbmcgc3RyYXRlZ3kgdXNlZCBieSB0aGUgRmFyZ2F0ZSBEYXRhZG9nIGludGVncmF0aW9uLlxuICovXG5leHBvcnQgZW51bSBUcmFjZVNhbXBsaW5nTW9kZSB7XG4gIC8qKlxuICAgKiBVc2UgUklPJ3MgcGVyLUFnZW50IGhlYWQtc2FtcGxpbmcgdGFyZ2V0IG9mIDUgdHJhY2VzL3NlYyBhbmQgYW4gYWRkaXRpb25hbFxuICAgKiBlcnJvci1zYW1wbGluZyBidWRnZXQgb2YgMTAgbG9jYWwgZXJyb3IgdHJhY2UgY2h1bmtzL3NlYy5cbiAgICogVGFyZ2V0LXBlci1zZWNvbmQgc2FtcGxpbmcgaXMgYSBwcmFjdGljYWwgZGVmYXVsdCBmb3IgYm90aCBsb3ctIGFuZFxuICAgKiBoaWdoLXRyYWZmaWMgc2VydmljZXMuXG4gICAqL1xuICBERUZBVUxULFxuXG4gIC8qKiBEbyBub3Qgc2V0IHNhbXBsaW5nIGVudmlyb25tZW50IHZhcmlhYmxlczsgcmV0YWluIERhdGFkb2cncyBkZWZhdWx0cy4gKi9cbiAgREFUQURPR19ERUZBVUxULFxuXG4gIC8qKiBTZXQgYSBmaXhlZCBzYW1wbGluZyBydWxlIG9uIHRoZSBhcHBsaWNhdGlvbiB0cmFjZXIuICovXG4gIEZJWEVEX1JBVEUsXG5cbiAgLyoqIFNldCBhIHBlci1BZ2VudCB0YXJnZXQgbnVtYmVyIG9mIHRyYWNlcyBwZXIgc2Vjb25kLiAqL1xuICBUQVJHRVRfUEVSX1NFQ09ORCxcbn1cblxuLyoqXG4gKiBVc2UgUklPJ3MgZGVmYXVsdCBEYXRhZG9nIEFnZW50IHNhbXBsaW5nIHRhcmdldHMuXG4gKlxuICogVGhpcyBpcyBhbHNvIHRoZSBkZWZhdWx0IHdoZW4gYHRyYWNlU2FtcGxpbmdgIGlzIG9taXR0ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmlvRGVmYXVsdFRyYWNlU2FtcGxpbmdPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBzYW1wbGluZyBzdHJhdGVneS4gTWF5IGJlIG9taXR0ZWQgdG8gdXNlIHRoZSBkZWZhdWx0LlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIC0gYFRyYWNlU2FtcGxpbmdNb2RlLkRFRkFVTFRgXG4gICAqL1xuICByZWFkb25seSBtb2RlPzogVHJhY2VTYW1wbGluZ01vZGUuREVGQVVMVDtcbn1cblxuLyoqIERvIG5vdCBzZXQgc2FtcGxpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzOyByZXRhaW4gRGF0YWRvZydzIGRlZmF1bHRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhZG9nRGVmYXVsdFRyYWNlU2FtcGxpbmdPcHRpb25zIHtcbiAgLyoqIFRoZSBzYW1wbGluZyBzdHJhdGVneS4gKi9cbiAgcmVhZG9ubHkgbW9kZTogVHJhY2VTYW1wbGluZ01vZGUuREFUQURPR19ERUZBVUxUO1xufVxuXG4vKiogQ29uZmlndXJlIGEgZml4ZWQgYXBwbGljYXRpb24tdHJhY2VyIHNhbXBsaW5nIHJhdGUuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpeGVkUmF0ZVRyYWNlU2FtcGxpbmdPcHRpb25zIHtcbiAgLyoqIFRoZSBzYW1wbGluZyBzdHJhdGVneS4gKi9cbiAgcmVhZG9ubHkgbW9kZTogVHJhY2VTYW1wbGluZ01vZGUuRklYRURfUkFURTtcblxuICAvKipcbiAgICogVGhlIGdsb2JhbCB0cmFjZXIgc2FtcGxpbmctcnVsZSByYXRlLCBmcm9tIDAuMCB0byAxLjAgaW5jbHVzaXZlLlxuICAgKiBEYXRhZG9nIHRyYWNlcnMgYWRkaXRpb25hbGx5IGFwcGx5IHRoZWlyIGJ1aWx0LWluIDEwMC10cmFjZXMtcGVyLXNlY29uZFxuICAgKiByYXRlIGxpbWl0IHdoZW4gc2FtcGxpbmcgcnVsZXMgYXJlIGNvbmZpZ3VyZWQuIFRoaXMgY29uc3RydWN0IGRvZXMgbm90XG4gICAqIGV4cG9zZSBvciBvdmVycmlkZSB0aGF0IHBlci1pbnN0YW5jZSBzYWZlZ3VhcmQuXG4gICAqL1xuICByZWFkb25seSBmaXhlZFJhdGU6IG51bWJlcjtcbn1cblxuLyoqIENvbmZpZ3VyZSBEYXRhZG9nIEFnZW50IHRhcmdldCBzYW1wbGluZy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0UGVyU2Vjb25kVHJhY2VTYW1wbGluZ09wdGlvbnMge1xuICAvKiogVGhlIHNhbXBsaW5nIHN0cmF0ZWd5LiAqL1xuICByZWFkb25seSBtb2RlOiBUcmFjZVNhbXBsaW5nTW9kZS5UQVJHRVRfUEVSX1NFQ09ORDtcblxuICAvKipcbiAgICogVGhlIGF2ZXJhZ2UgaGVhZC1zYW1wbGluZyB0YXJnZXQgaW4gdHJhY2VzIHBlciBzZWNvbmQgZm9yIGVhY2ggQWdlbnRcbiAgICogc2lkZWNhciAoYW5kIHRoZXJlZm9yZSBlYWNoIEZhcmdhdGUgc2VydmljZSBpbnN0YW5jZSkuIFRyYWZmaWMgc3Bpa2VzXG4gICAqIGNhbiBleGNlZWQgdGhpcyB0YXJnZXQ7IGl0IGlzIG5vdCBhIGhhcmQgY2FwIG9uIHRvdGFsIGluZ2VzdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldFRyYWNlc1BlclNlY29uZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgYnVkZ2V0IGZvciBhZGRpdGlvbmFsIGxvY2FsIGVycm9yIHRyYWNlIGNodW5rcyBwZXIgc2Vjb25kIG1pc3NlZCBieVxuICAgKiBoZWFkIHNhbXBsaW5nLCBmb3IgZWFjaCBBZ2VudCBzaWRlY2FyIChhbmQgdGhlcmVmb3JlIGVhY2ggRmFyZ2F0ZSBzZXJ2aWNlXG4gICAqIGluc3RhbmNlKS4gVGhpcyBkb2VzIG5vdCBjYXAgZXJyb3IgdHJhY2VzIGFscmVhZHkga2VwdCBieSBoZWFkIHNhbXBsaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgZXJyb3JUcmFjZXNQZXJTZWNvbmQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29uZmlndXJpbmcgRGF0YWRvZyBBUE0gdHJhY2Ugc2FtcGxpbmcuXG4gKlxuICogVGhpcyBkaXNjcmltaW5hdGVkIHVuaW9uIG1ha2VzIG1vZGUtc3BlY2lmaWMgc2V0dGluZ3MgaW52YWxpZCBpbiBUeXBlU2NyaXB0XG4gKiBiZWZvcmUgc3ludGhlc2lzLiBOdW1lcmljIHJhbmdlcyBhcmUgY2hlY2tlZCBkdXJpbmcgc3ludGhlc2lzLlxuICovXG5leHBvcnQgdHlwZSBUcmFjZVNhbXBsaW5nT3B0aW9ucyA9XG4gIHwgUmlvRGVmYXVsdFRyYWNlU2FtcGxpbmdPcHRpb25zXG4gIHwgRGF0YWRvZ0RlZmF1bHRUcmFjZVNhbXBsaW5nT3B0aW9uc1xuICB8IEZpeGVkUmF0ZVRyYWNlU2FtcGxpbmdPcHRpb25zXG4gIHwgVGFyZ2V0UGVyU2Vjb25kVHJhY2VTYW1wbGluZ09wdGlvbnM7XG5cbi8qKiBUaGUgdW50cnVzdGVkIHJ1bnRpbWUgc2hhcGUgdXNlZCBieSBzeW50aGVzaXMtdGltZSB2YWxpZGF0aW9uLiAqL1xudHlwZSBUcmFjZVNhbXBsaW5nVmFsdWVzID0ge1xuICByZWFkb25seSBtb2RlPzogVHJhY2VTYW1wbGluZ01vZGU7XG4gIHJlYWRvbmx5IGZpeGVkUmF0ZT86IG51bWJlcjtcbiAgcmVhZG9ubHkgdGFyZ2V0VHJhY2VzUGVyU2Vjb25kPzogbnVtYmVyO1xuICByZWFkb25seSBlcnJvclRyYWNlc1BlclNlY29uZD86IG51bWJlcjtcbn07XG5cbmV4cG9ydCBjbGFzcyBUcmFjZVNhbXBsaW5nVmFsaWRhdG9yIGltcGxlbWVudHMgY29uc3RydWN0cy5JVmFsaWRhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdHJhY2VTYW1wbGluZz86IFRyYWNlU2FtcGxpbmdPcHRpb25zKSB7fVxuXG4gIHZhbGlkYXRlKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy50cmFjZVNhbXBsaW5nO1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIC8vIEtlZXAgdmFsaWRhdGluZyB0aGUgcnVudGltZSBzaGFwZTogSmF2YVNjcmlwdCBjb25zdW1lcnMgYW5kIFR5cGVTY3JpcHRcbiAgICAvLyBjYWxsZXJzIHVzaW5nIGEgY2FzdCBjYW4gYnlwYXNzIHRoZSBkaXNjcmltaW5hdGVkIHVuaW9uLlxuICAgIGNvbnN0IHZhbHVlcyA9IG9wdGlvbnMgYXMgVHJhY2VTYW1wbGluZ1ZhbHVlcztcbiAgICBjb25zdCBtb2RlID0gdmFsdWVzLm1vZGUgPz8gVHJhY2VTYW1wbGluZ01vZGUuREVGQVVMVDtcbiAgICBjb25zdCBoYXNGaXhlZFJhdGUgPSB2YWx1ZXMuZml4ZWRSYXRlICE9PSB1bmRlZmluZWQ7XG4gICAgY29uc3QgaGFzVGFyZ2V0VHBzID0gdmFsdWVzLnRhcmdldFRyYWNlc1BlclNlY29uZCAhPT0gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGhhc0Vycm9yVHBzID0gdmFsdWVzLmVycm9yVHJhY2VzUGVyU2Vjb25kICE9PSB1bmRlZmluZWQ7XG4gICAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGlzTm9uTmVnYXRpdmVJbnRlZ2VyID0gKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpID0+XG4gICAgICB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIE51bWJlci5pc0ludGVnZXIodmFsdWUpICYmIHZhbHVlID49IDA7XG5cbiAgICBpZiAobW9kZSA9PT0gVHJhY2VTYW1wbGluZ01vZGUuREVGQVVMVCB8fCBtb2RlID09PSBUcmFjZVNhbXBsaW5nTW9kZS5EQVRBRE9HX0RFRkFVTFQpIHtcbiAgICAgIGlmIChoYXNGaXhlZFJhdGUgfHwgaGFzVGFyZ2V0VHBzIHx8IGhhc0Vycm9yVHBzKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAgIGAke1RyYWNlU2FtcGxpbmdNb2RlW21vZGVdfSBkb2VzIG5vdCBhY2NlcHQgZml4ZWRSYXRlLCB0YXJnZXRUcmFjZXNQZXJTZWNvbmQsIG9yIGVycm9yVHJhY2VzUGVyU2Vjb25kLmBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG1vZGUgPT09IFRyYWNlU2FtcGxpbmdNb2RlLkZJWEVEX1JBVEUpIHtcbiAgICAgIGNvbnN0IGZpeGVkUmF0ZSA9IHZhbHVlcy5maXhlZFJhdGU7XG4gICAgICBpZiAoXG4gICAgICAgICFoYXNGaXhlZFJhdGUgfHxcbiAgICAgICAgZml4ZWRSYXRlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgIU51bWJlci5pc0Zpbml0ZShmaXhlZFJhdGUpIHx8XG4gICAgICAgIGZpeGVkUmF0ZSA8IDAuMCB8fFxuICAgICAgICBmaXhlZFJhdGUgPiAxLjBcbiAgICAgICkge1xuICAgICAgICBlcnJvcnMucHVzaCgnRklYRURfUkFURSByZXF1aXJlcyBmaXhlZFJhdGUgdG8gYmUgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAxIGluY2x1c2l2ZS4nKTtcbiAgICAgIH1cbiAgICAgIGlmIChoYXNUYXJnZXRUcHMpIHtcbiAgICAgICAgZXJyb3JzLnB1c2goJ0ZJWEVEX1JBVEUgZG9lcyBub3QgYWNjZXB0IHRhcmdldFRyYWNlc1BlclNlY29uZC4nKTtcbiAgICAgIH1cbiAgICAgIGlmIChoYXNFcnJvclRwcykge1xuICAgICAgICBlcnJvcnMucHVzaCgnRklYRURfUkFURSBkb2VzIG5vdCBhY2NlcHQgZXJyb3JUcmFjZXNQZXJTZWNvbmQuJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChtb2RlID09PSBUcmFjZVNhbXBsaW5nTW9kZS5UQVJHRVRfUEVSX1NFQ09ORCkge1xuICAgICAgaWYgKCFpc05vbk5lZ2F0aXZlSW50ZWdlcih2YWx1ZXMudGFyZ2V0VHJhY2VzUGVyU2Vjb25kKSkge1xuICAgICAgICBlcnJvcnMucHVzaCgnVEFSR0VUX1BFUl9TRUNPTkQgcmVxdWlyZXMgdGFyZ2V0VHJhY2VzUGVyU2Vjb25kIHRvIGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIuJyk7XG4gICAgICB9XG4gICAgICBpZiAoaGFzRml4ZWRSYXRlKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKCdUQVJHRVRfUEVSX1NFQ09ORCBkb2VzIG5vdCBhY2NlcHQgZml4ZWRSYXRlLicpO1xuICAgICAgfVxuICAgICAgaWYgKGhhc0Vycm9yVHBzICYmICFpc05vbk5lZ2F0aXZlSW50ZWdlcih2YWx1ZXMuZXJyb3JUcmFjZXNQZXJTZWNvbmQpKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKCdUQVJHRVRfUEVSX1NFQ09ORCBlcnJvclRyYWNlc1BlclNlY29uZCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIuJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGVycm9ycy5wdXNoKCd0cmFjZVNhbXBsaW5nLm1vZGUgbXVzdCBiZSBhIFRyYWNlU2FtcGxpbmdNb2RlIHZhbHVlLicpO1xuICAgIH1cblxuICAgIHJldHVybiBlcnJvcnM7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFRyYWNlU2FtcGxpbmdFbnZpcm9ubWVudFdhcm5pbmcoXG4gIHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCxcbiAgZW52aXJvbm1lbnQ6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCB1bmRlZmluZWRcbik6IHZvaWQge1xuICBjb25zdCBzYW1wbGluZ0tleXMgPSBbJ0REX1RSQUNFX1NBTVBMSU5HX1JVTEVTJywgJ0REX1RSQUNFX1NBTVBMRV9SQVRFJywgJ0REX0FQTV9UQVJHRVRfVFBTJywgJ0REX0FQTV9FUlJPUl9UUFMnXTtcbiAgY29uc3QgY29uZmlndXJlZEtleXMgPSBzYW1wbGluZ0tleXMuZmlsdGVyKGtleSA9PiBlbnZpcm9ubWVudCAmJiBrZXkgaW4gZW52aXJvbm1lbnQpO1xuICBpZiAoY29uZmlndXJlZEtleXMubGVuZ3RoID4gMCkge1xuICAgIGNkay5WYWxpZGF0aW9ucy5vZihzY29wZSkuYWRkV2FybmluZyhcbiAgICAgICdAcmlvLWNsb3VkL2Nkay12Mi1jb25zdHJ1Y3RzOmRpcmVjdFRyYWNlU2FtcGxpbmdFbnZpcm9ubWVudCcsXG4gICAgICBbXG4gICAgICAgIGBEaXJlY3QgdHJhY2Utc2FtcGxpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUocykgZGV0ZWN0ZWQ6ICR7Y29uZmlndXJlZEtleXMuam9pbignLCAnKX0uYCxcbiAgICAgICAgJ1JlY29tbWVuZGVkIGFjdGlvbjogcmVtb3ZlIHRoZXNlIHZhcmlhYmxlcyB0byB1c2UgdGhlIERFRkFVTFQgc2FtcGxpbmcgcG9saWN5LicsXG4gICAgICAgICdUbyBzZWxlY3QgYSBkaWZmZXJlbnQgcG9saWN5LCBjb25maWd1cmUgZGF0YWRvZ09wdGlvbnMudHJhY2VTYW1wbGluZyBleHBsaWNpdGx5LicsXG4gICAgICAgICdEaXJlY3Qgc2FtcGxpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIHJlbWFpbiBzdXBwb3J0ZWQgb25seSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuIFVzZXJzIHdobyBjaG9vc2UgdGhlbSBhcmUgcmVzcG9uc2libGUgZm9yIHRoZWlyIGNvbXBhdGliaWxpdHkgYW5kIG1haW50ZW5hbmNlLicsXG4gICAgICBdLmpvaW4oJ1xcbicpXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBwbGljYXRpb25UcmFjZVNhbXBsaW5nRW52aXJvbm1lbnQodHJhY2VTYW1wbGluZz86IFRyYWNlU2FtcGxpbmdPcHRpb25zKToge1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG59IHtcbiAgaWYgKHRyYWNlU2FtcGxpbmc/Lm1vZGUgPT09IFRyYWNlU2FtcGxpbmdNb2RlLkZJWEVEX1JBVEUpIHtcbiAgICBjb25zdCBydWxlcyA9IFt7IHNhbXBsZV9yYXRlOiB0cmFjZVNhbXBsaW5nLmZpeGVkUmF0ZSB9XTtcbiAgICByZXR1cm4geyBERF9UUkFDRV9TQU1QTElOR19SVUxFUzogSlNPTi5zdHJpbmdpZnkocnVsZXMpIH07XG4gIH1cbiAgcmV0dXJuIHt9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWdlbnRUcmFjZVNhbXBsaW5nRW52aXJvbm1lbnQodHJhY2VTYW1wbGluZz86IFRyYWNlU2FtcGxpbmdPcHRpb25zKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gIGlmICh0cmFjZVNhbXBsaW5nPy5tb2RlID09PSB1bmRlZmluZWQgfHwgdHJhY2VTYW1wbGluZy5tb2RlID09PSBUcmFjZVNhbXBsaW5nTW9kZS5ERUZBVUxUKSB7XG4gICAgcmV0dXJuIHsgRERfQVBNX1RBUkdFVF9UUFM6ICc1JywgRERfQVBNX0VSUk9SX1RQUzogJzEwJyB9O1xuICB9XG4gIGlmICh0cmFjZVNhbXBsaW5nPy5tb2RlID09PSBUcmFjZVNhbXBsaW5nTW9kZS5UQVJHRVRfUEVSX1NFQ09ORCkge1xuICAgIGNvbnN0IGVudmlyb25tZW50OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gICAgaWYgKHRyYWNlU2FtcGxpbmcudGFyZ2V0VHJhY2VzUGVyU2Vjb25kICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGVudmlyb25tZW50LkREX0FQTV9UQVJHRVRfVFBTID0gU3RyaW5nKHRyYWNlU2FtcGxpbmcudGFyZ2V0VHJhY2VzUGVyU2Vjb25kKTtcbiAgICB9XG4gICAgaWYgKHRyYWNlU2FtcGxpbmcuZXJyb3JUcmFjZXNQZXJTZWNvbmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZW52aXJvbm1lbnQuRERfQVBNX0VSUk9SX1RQUyA9IFN0cmluZyh0cmFjZVNhbXBsaW5nLmVycm9yVHJhY2VzUGVyU2Vjb25kKTtcbiAgICB9XG4gICAgcmV0dXJuIGVudmlyb25tZW50O1xuICB9XG4gIHJldHVybiB7fTtcbn1cbiJdfQ==
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  ],
16
16
  "main": "lib/index.js",
17
17
  "license": "Apache-2.0",
18
- "version": "9.0.0-alpha.8",
18
+ "version": "9.0.0-alpha.9",
19
19
  "types": "lib/index.d.ts",
20
20
  "stability": "stable",
21
21
  "exports": {
package/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "9.0.0-alpha.8"
2
+ "version": "9.0.0-alpha.9"
3
3
  }