construct-hub 0.4.352 → 0.4.353

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../node_modules/aws-embedded-metrics/lib/Constants.js", "../../../../node_modules/aws-embedded-metrics/lib/environment/Environments.js", "../../../../node_modules/aws-embedded-metrics/lib/config/EnvironmentConfigurationProvider.js", "../../../../node_modules/aws-embedded-metrics/lib/config/Configuration.js", "../../../../node_modules/aws-embedded-metrics/lib/utils/Logger.js", "../../../../node_modules/aws-embedded-metrics/lib/logger/Unit.js", "../../../../node_modules/aws-embedded-metrics/lib/logger/StorageResolution.js", "../../../../node_modules/aws-embedded-metrics/lib/exceptions/DimensionSetExceededError.js", "../../../../node_modules/aws-embedded-metrics/lib/exceptions/InvalidDimensionError.js", "../../../../node_modules/aws-embedded-metrics/lib/exceptions/InvalidMetricError.js", "../../../../node_modules/aws-embedded-metrics/lib/exceptions/InvalidNamespaceError.js", "../../../../node_modules/aws-embedded-metrics/lib/exceptions/InvalidTimestampError.js", "../../../../node_modules/aws-embedded-metrics/lib/utils/Validator.js", "../../../../node_modules/aws-embedded-metrics/lib/logger/MetricValues.js", "../../../../node_modules/aws-embedded-metrics/lib/logger/MetricsContext.js", "../../../../node_modules/aws-embedded-metrics/lib/logger/MetricsLogger.js", "../../../../node_modules/@datastructures-js/heap/src/heap.js", "../../../../node_modules/@datastructures-js/heap/src/minHeap.js", "../../../../node_modules/@datastructures-js/heap/src/maxHeap.js", "../../../../node_modules/@datastructures-js/heap/index.js", "../../../../node_modules/aws-embedded-metrics/lib/serializers/LogSerializer.js", "../../../../node_modules/aws-embedded-metrics/lib/sinks/ConsoleSink.js", "../../../../node_modules/aws-embedded-metrics/lib/sinks/connections/TcpClient.js", "../../../../node_modules/aws-embedded-metrics/lib/sinks/connections/UdpClient.js", "../../../../node_modules/aws-embedded-metrics/lib/sinks/AgentSink.js", "../../../../node_modules/aws-embedded-metrics/lib/environment/DefaultEnvironment.js", "../../../../node_modules/aws-embedded-metrics/lib/utils/Fetch.js", "../../../../node_modules/aws-embedded-metrics/lib/environment/ECSEnvironment.js", "../../../../node_modules/aws-embedded-metrics/lib/environment/EC2Environment.js", "../../../../node_modules/aws-embedded-metrics/lib/environment/LambdaEnvironment.js", "../../../../node_modules/aws-embedded-metrics/lib/environment/LocalEnvironment.js", "../../../../node_modules/aws-embedded-metrics/lib/environment/EnvironmentDetector.js", "../../../../node_modules/aws-embedded-metrics/lib/logger/MetricsLoggerFactory.js", "../../../../node_modules/aws-embedded-metrics/lib/logger/MetricScope.js", "../../../../node_modules/aws-embedded-metrics/lib/index.js", "../../../../node_modules/semver/internal/constants.js", "../../../../node_modules/semver/internal/debug.js", "../../../../node_modules/semver/internal/re.js", "../../../../node_modules/semver/internal/parse-options.js", "../../../../node_modules/semver/internal/identifiers.js", "../../../../node_modules/semver/classes/semver.js", "../../../../node_modules/semver/functions/parse.js", "../../../../node_modules/semver/functions/valid.js", "../../../../node_modules/semver/functions/clean.js", "../../../../node_modules/semver/functions/inc.js", "../../../../node_modules/semver/functions/diff.js", "../../../../node_modules/semver/functions/major.js", "../../../../node_modules/semver/functions/minor.js", "../../../../node_modules/semver/functions/patch.js", "../../../../node_modules/semver/functions/prerelease.js", "../../../../node_modules/semver/functions/compare.js", "../../../../node_modules/semver/functions/rcompare.js", "../../../../node_modules/semver/functions/compare-loose.js", "../../../../node_modules/semver/functions/compare-build.js", "../../../../node_modules/semver/functions/sort.js", "../../../../node_modules/semver/functions/rsort.js", "../../../../node_modules/semver/functions/gt.js", "../../../../node_modules/semver/functions/lt.js", "../../../../node_modules/semver/functions/eq.js", "../../../../node_modules/semver/functions/neq.js", "../../../../node_modules/semver/functions/gte.js", "../../../../node_modules/semver/functions/lte.js", "../../../../node_modules/semver/functions/cmp.js", "../../../../node_modules/semver/functions/coerce.js", "../../../../node_modules/yallist/iterator.js", "../../../../node_modules/yallist/yallist.js", "../../../../node_modules/lru-cache/index.js", "../../../../node_modules/semver/classes/range.js", "../../../../node_modules/semver/classes/comparator.js", "../../../../node_modules/semver/functions/satisfies.js", "../../../../node_modules/semver/ranges/to-comparators.js", "../../../../node_modules/semver/ranges/max-satisfying.js", "../../../../node_modules/semver/ranges/min-satisfying.js", "../../../../node_modules/semver/ranges/min-version.js", "../../../../node_modules/semver/ranges/valid.js", "../../../../node_modules/semver/ranges/outside.js", "../../../../node_modules/semver/ranges/gtr.js", "../../../../node_modules/semver/ranges/ltr.js", "../../../../node_modules/semver/ranges/intersects.js", "../../../../node_modules/semver/ranges/simplify.js", "../../../../node_modules/semver/ranges/subset.js", "../../../../node_modules/semver/index.js", "../../../../node_modules/shimmer/index.js", "../../../../node_modules/emitter-listener/listener.js", "../../../../node_modules/cls-hooked/context.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/logger.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/segments/attributes/captured_exception.js", "../../../../node_modules/atomic-batcher/index.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/daemon_config.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/segment_emitter.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/segments/attributes/trace_id.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/utils.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/segments/segment_utils.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/segments/attributes/remote_request_data.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/segments/attributes/subsegment.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/segments/segment.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/context_utils.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/middleware/incoming_request_data.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/middleware/sampling/local_reservoir.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/resources/default_sampling_rules.json", "../../../../node_modules/aws-xray-sdk-core/dist/lib/middleware/sampling/local_sampler.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/middleware/sampling/reservoir.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/middleware/sampling/sampling_rule.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/middleware/sampling/service_connector.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/middleware/sampling/rule_cache.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/middleware/sampling/rule_poller.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/middleware/sampling/target_poller.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/middleware/sampling/default_sampler.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/middleware/mw_utils.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/env/aws_lambda.js", "../../../../node_modules/aws-xray-sdk-core/package.json", "../../../../node_modules/aws-xray-sdk-core/dist/lib/segments/plugins/plugin.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/segments/plugins/ec2_plugin.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/segments/plugins/ecs_plugin.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/segments/plugins/elastic_beanstalk_plugin.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/resources/aws_whitelist.json", "../../../../node_modules/aws-xray-sdk-core/dist/lib/patchers/call_capturer.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/segments/attributes/aws.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/capture.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/patchers/aws_p.js", "../../../../node_modules/tslib/tslib.es6.mjs", "../../../../node_modules/@aws-sdk/service-error-classification/node_modules/@smithy/service-error-classification/dist-cjs/constants.js", "../../../../node_modules/@aws-sdk/service-error-classification/node_modules/@smithy/service-error-classification/dist-cjs/index.js", "../../../../node_modules/@aws-sdk/service-error-classification/dist-cjs/index.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/patchers/aws3_p.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/patchers/http_p.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/patchers/promise_p.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/database/sql_data.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/aws-xray.js", "../../../../node_modules/aws-xray-sdk-core/dist/lib/index.js", "../../../../src/backend/inventory/canary.lambda.ts", "../../../../src/backend/inventory/constants.ts", "../../../../src/backend/shared/aws.lambda-shared.ts", "../../../../src/backend/shared/compress-content.lambda-shared.ts", "../../../../src/backend/shared/language.ts", "../../../../src/backend/shared/constants.ts", "../../../../src/backend/shared/env.lambda-shared.ts"],
4
- "sourcesContent": ["\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Constants = void 0;\nvar Constants;\n(function (Constants) {\n Constants[Constants[\"MAX_DIMENSION_SET_SIZE\"] = 30] = \"MAX_DIMENSION_SET_SIZE\";\n Constants[Constants[\"MAX_DIMENSION_NAME_LENGTH\"] = 250] = \"MAX_DIMENSION_NAME_LENGTH\";\n Constants[Constants[\"MAX_DIMENSION_VALUE_LENGTH\"] = 1024] = \"MAX_DIMENSION_VALUE_LENGTH\";\n Constants[Constants[\"MAX_METRIC_NAME_LENGTH\"] = 1024] = \"MAX_METRIC_NAME_LENGTH\";\n Constants[Constants[\"MAX_NAMESPACE_LENGTH\"] = 256] = \"MAX_NAMESPACE_LENGTH\";\n Constants[\"VALID_NAMESPACE_REGEX\"] = \"^[a-zA-Z0-9._#:/-]+$\";\n Constants[\"VALID_DIMENSION_REGEX\"] = \"^[\\0-\u007F]+$\";\n Constants[Constants[\"MAX_TIMESTAMP_PAST_AGE\"] = 1209600000] = \"MAX_TIMESTAMP_PAST_AGE\";\n Constants[Constants[\"MAX_TIMESTAMP_FUTURE_AGE\"] = 7200000] = \"MAX_TIMESTAMP_FUTURE_AGE\";\n Constants[\"DEFAULT_NAMESPACE\"] = \"aws-embedded-metrics\";\n Constants[Constants[\"MAX_METRICS_PER_EVENT\"] = 100] = \"MAX_METRICS_PER_EVENT\";\n Constants[Constants[\"MAX_VALUES_PER_METRIC\"] = 100] = \"MAX_VALUES_PER_METRIC\";\n Constants[\"DEFAULT_AGENT_HOST\"] = \"0.0.0.0\";\n Constants[Constants[\"DEFAULT_AGENT_PORT\"] = 25888] = \"DEFAULT_AGENT_PORT\";\n})(Constants = exports.Constants || (exports.Constants = {}));\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Environments;\n(function (Environments) {\n Environments[\"Local\"] = \"Local\";\n Environments[\"Lambda\"] = \"Lambda\";\n Environments[\"Agent\"] = \"Agent\";\n Environments[\"EC2\"] = \"EC2\";\n Environments[\"ECS\"] = \"ECS\";\n Environments[\"Unknown\"] = \"\";\n})(Environments || (Environments = {}));\nexports.default = Environments;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnvironmentConfigurationProvider = void 0;\nconst Constants_1 = require(\"../Constants\");\nconst Environments_1 = __importDefault(require(\"../environment/Environments\"));\nconst ENV_VAR_PREFIX = 'AWS_EMF';\nvar ConfigKeys;\n(function (ConfigKeys) {\n ConfigKeys[\"LOG_GROUP_NAME\"] = \"LOG_GROUP_NAME\";\n ConfigKeys[\"LOG_STREAM_NAME\"] = \"LOG_STREAM_NAME\";\n ConfigKeys[\"ENABLE_DEBUG_LOGGING\"] = \"ENABLE_DEBUG_LOGGING\";\n ConfigKeys[\"SERVICE_NAME\"] = \"SERVICE_NAME\";\n ConfigKeys[\"SERVICE_TYPE\"] = \"SERVICE_TYPE\";\n ConfigKeys[\"AGENT_ENDPOINT\"] = \"AGENT_ENDPOINT\";\n ConfigKeys[\"ENVIRONMENT_OVERRIDE\"] = \"ENVIRONMENT\";\n ConfigKeys[\"NAMESPACE\"] = \"NAMESPACE\";\n})(ConfigKeys || (ConfigKeys = {}));\nclass EnvironmentConfigurationProvider {\n getConfiguration() {\n return {\n agentEndpoint: this.getEnvVariable(ConfigKeys.AGENT_ENDPOINT),\n debuggingLoggingEnabled: this.tryGetEnvVariableAsBoolean(ConfigKeys.ENABLE_DEBUG_LOGGING, false),\n logGroupName: this.getEnvVariable(ConfigKeys.LOG_GROUP_NAME),\n logStreamName: this.getEnvVariable(ConfigKeys.LOG_STREAM_NAME),\n serviceName: this.getEnvVariable(ConfigKeys.SERVICE_NAME) || this.getEnvVariableWithoutPrefix(ConfigKeys.SERVICE_NAME),\n serviceType: this.getEnvVariable(ConfigKeys.SERVICE_TYPE) || this.getEnvVariableWithoutPrefix(ConfigKeys.SERVICE_TYPE),\n environmentOverride: this.getEnvironmentOverride(),\n namespace: this.getEnvVariable(ConfigKeys.NAMESPACE) || Constants_1.Constants.DEFAULT_NAMESPACE,\n };\n }\n getEnvVariableWithoutPrefix(configKey) {\n return process.env[configKey];\n }\n getEnvVariable(configKey) {\n return process.env[`${ENV_VAR_PREFIX}_${configKey}`];\n }\n tryGetEnvVariableAsBoolean(configKey, fallback) {\n const configValue = this.getEnvVariable(configKey);\n return !configValue ? fallback : configValue.toLowerCase() === 'true';\n }\n getEnvironmentOverride() {\n const overrideValue = this.getEnvVariable(ConfigKeys.ENVIRONMENT_OVERRIDE);\n const environment = Environments_1.default[overrideValue];\n if (environment === undefined) {\n return Environments_1.default.Unknown;\n }\n return environment;\n }\n}\nexports.EnvironmentConfigurationProvider = EnvironmentConfigurationProvider;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst EnvironmentConfigurationProvider_1 = require(\"./EnvironmentConfigurationProvider\");\nconst Configuration = new EnvironmentConfigurationProvider_1.EnvironmentConfigurationProvider().getConfiguration();\nexports.default = Configuration;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LOG = void 0;\nconst Configuration_1 = __importDefault(require(\"../config/Configuration\"));\nconst LOG = (...args) => {\n if (Configuration_1.default.debuggingLoggingEnabled) {\n console.log(...args);\n }\n};\nexports.LOG = LOG;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Unit = void 0;\nvar Unit;\n(function (Unit) {\n Unit[\"Seconds\"] = \"Seconds\";\n Unit[\"Microseconds\"] = \"Microseconds\";\n Unit[\"Milliseconds\"] = \"Milliseconds\";\n Unit[\"Bytes\"] = \"Bytes\";\n Unit[\"Kilobytes\"] = \"Kilobytes\";\n Unit[\"Megabytes\"] = \"Megabytes\";\n Unit[\"Gigabytes\"] = \"Gigabytes\";\n Unit[\"Terabytes\"] = \"Terabytes\";\n Unit[\"Bits\"] = \"Bits\";\n Unit[\"Kilobits\"] = \"Kilobits\";\n Unit[\"Megabits\"] = \"Megabits\";\n Unit[\"Gigabits\"] = \"Gigabits\";\n Unit[\"Terabits\"] = \"Terabits\";\n Unit[\"Percent\"] = \"Percent\";\n Unit[\"Count\"] = \"Count\";\n Unit[\"BytesPerSecond\"] = \"Bytes/Second\";\n Unit[\"KilobytesPerSecond\"] = \"Kilobytes/Second\";\n Unit[\"MegabytesPerSecond\"] = \"Megabytes/Second\";\n Unit[\"GigabytesPerSecond\"] = \"Gigabytes/Second\";\n Unit[\"TerabytesPerSecond\"] = \"Terabytes/Second\";\n Unit[\"BitsPerSecond\"] = \"Bits/Second\";\n Unit[\"KilobitsPerSecond\"] = \"Kilobits/Second\";\n Unit[\"MegabitsPerSecond\"] = \"Megabits/Second\";\n Unit[\"GigabitsPerSecond\"] = \"Gigabits/Second\";\n Unit[\"TerabitsPerSecond\"] = \"Terabits/Second\";\n Unit[\"CountPerSecond\"] = \"Count/Second\";\n Unit[\"None\"] = \"None\";\n})(Unit = exports.Unit || (exports.Unit = {}));\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StorageResolution = void 0;\nvar StorageResolution;\n(function (StorageResolution) {\n StorageResolution[StorageResolution[\"High\"] = 1] = \"High\";\n StorageResolution[StorageResolution[\"Standard\"] = 60] = \"Standard\";\n})(StorageResolution = exports.StorageResolution || (exports.StorageResolution = {}));\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DimensionSetExceededError = void 0;\nclass DimensionSetExceededError extends Error {\n constructor(msg) {\n super(msg);\n // Set the prototype explicitly.\n Object.setPrototypeOf(this, DimensionSetExceededError.prototype);\n }\n}\nexports.DimensionSetExceededError = DimensionSetExceededError;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InvalidDimensionError = void 0;\nclass InvalidDimensionError extends Error {\n constructor(msg) {\n super(msg);\n // Set the prototype explicitly.\n Object.setPrototypeOf(this, InvalidDimensionError.prototype);\n }\n}\nexports.InvalidDimensionError = InvalidDimensionError;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InvalidMetricError = void 0;\nclass InvalidMetricError extends Error {\n constructor(msg) {\n super(msg);\n // Set the prototype explicitly.\n Object.setPrototypeOf(this, InvalidMetricError.prototype);\n }\n}\nexports.InvalidMetricError = InvalidMetricError;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InvalidNamespaceError = void 0;\nclass InvalidNamespaceError extends Error {\n constructor(msg) {\n super(msg);\n // Set the prototype explicitly.\n Object.setPrototypeOf(this, InvalidNamespaceError.prototype);\n }\n}\nexports.InvalidNamespaceError = InvalidNamespaceError;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InvalidTimestampError = void 0;\nclass InvalidTimestampError extends Error {\n constructor(msg) {\n super(msg);\n // Set the prototype explicitly.\n Object.setPrototypeOf(this, InvalidTimestampError.prototype);\n }\n}\nexports.InvalidTimestampError = InvalidTimestampError;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateTimestamp = exports.validateNamespace = exports.validateMetric = exports.validateDimensionSet = void 0;\nconst Constants_1 = require(\"../Constants\");\nconst Unit_1 = require(\"../logger/Unit\");\nconst StorageResolution_1 = require(\"../logger/StorageResolution\");\nconst DimensionSetExceededError_1 = require(\"../exceptions/DimensionSetExceededError\");\nconst InvalidDimensionError_1 = require(\"../exceptions/InvalidDimensionError\");\nconst InvalidMetricError_1 = require(\"../exceptions/InvalidMetricError\");\nconst InvalidNamespaceError_1 = require(\"../exceptions/InvalidNamespaceError\");\nconst InvalidTimestampError_1 = require(\"../exceptions/InvalidTimestampError\");\n/**\n * Validates dimension set.\n * @see [CloudWatch Dimensions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_Dimension.html)\n *\n * @param dimensionSet\n * @throws {DimensionSetExceededError} Dimension set must not exceed 30 dimensions.\n * @throws {InvalidDimensionError} Dimension name and value must be valid.\n */\nconst validateDimensionSet = (dimensionSet) => {\n // Validates dimension set length\n if (Object.keys(dimensionSet).length > Constants_1.Constants.MAX_DIMENSION_SET_SIZE)\n throw new DimensionSetExceededError_1.DimensionSetExceededError(`Maximum number of dimensions per dimension set allowed are ${Constants_1.Constants.MAX_DIMENSION_SET_SIZE}`);\n // Validate dimension key and value\n Object.entries(dimensionSet).forEach(([key, value]) => {\n dimensionSet[key] = value = String(value);\n if (!new RegExp(Constants_1.Constants.VALID_DIMENSION_REGEX).test(key)) {\n throw new InvalidDimensionError_1.InvalidDimensionError(`Dimension key ${key} has invalid characters`);\n }\n if (!new RegExp(Constants_1.Constants.VALID_DIMENSION_REGEX).test(value)) {\n throw new InvalidDimensionError_1.InvalidDimensionError(`Dimension value ${value} has invalid characters`);\n }\n if (key.trim().length == 0) {\n throw new InvalidDimensionError_1.InvalidDimensionError(`Dimension key ${key} must include at least one non-whitespace character`);\n }\n if (value.trim().length == 0) {\n throw new InvalidDimensionError_1.InvalidDimensionError(`Dimension value ${value} must include at least one non-whitespace character`);\n }\n if (key.length > Constants_1.Constants.MAX_DIMENSION_NAME_LENGTH) {\n throw new InvalidDimensionError_1.InvalidDimensionError(`Dimension key ${key} must not exceed maximum length ${Constants_1.Constants.MAX_DIMENSION_NAME_LENGTH}`);\n }\n if (value.length > Constants_1.Constants.MAX_DIMENSION_VALUE_LENGTH) {\n throw new InvalidDimensionError_1.InvalidDimensionError(`Dimension value ${value} must not exceed maximum length ${Constants_1.Constants.MAX_DIMENSION_VALUE_LENGTH}`);\n }\n if (key.startsWith(':')) {\n throw new InvalidDimensionError_1.InvalidDimensionError(`Dimension key ${key} cannot start with ':'`);\n }\n });\n};\nexports.validateDimensionSet = validateDimensionSet;\n/**\n * Validates metric.\n * @see [CloudWatch Metric](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html)\n *\n * @param key\n * @param value\n * @param unit\n * @param storageResolution\n *\n * @throws {InvalidMetricError} Metric name must be valid.\n */\nconst validateMetric = (key, value, unit, storageResolution, metricNameAndResolutionMap) => {\n if (key.trim().length == 0) {\n throw new InvalidMetricError_1.InvalidMetricError(`Metric key ${key} must include at least one non-whitespace character`);\n }\n if (key.length > Constants_1.Constants.MAX_METRIC_NAME_LENGTH) {\n throw new InvalidMetricError_1.InvalidMetricError(`Metric key ${key} must not exceed maximum length ${Constants_1.Constants.MAX_METRIC_NAME_LENGTH}`);\n }\n if (!Number.isFinite(value)) {\n throw new InvalidMetricError_1.InvalidMetricError(`Metric value ${value} is not a number`);\n }\n if (value > Number.MAX_SAFE_INTEGER) {\n throw new InvalidMetricError_1.InvalidMetricError(`Metric value ${value} must not exceed maximum value ${Number.MAX_SAFE_INTEGER}}`);\n }\n if (value < -Number.MAX_SAFE_INTEGER) {\n throw new InvalidMetricError_1.InvalidMetricError(`Metric value ${value} must not be less than minimum value ${-Number.MAX_SAFE_INTEGER}`);\n }\n if (unit !== undefined &&\n !Object.values(Unit_1.Unit)\n .map((u) => String(u))\n .includes(unit)) {\n throw new InvalidMetricError_1.InvalidMetricError(`Metric unit ${unit} is not valid`);\n }\n if (storageResolution !== undefined &&\n !Object.values(StorageResolution_1.StorageResolution)\n .map((s) => s)\n .includes(storageResolution)) {\n throw new InvalidMetricError_1.InvalidMetricError(`Metric resolution ${storageResolution} is not valid`);\n }\n if ((metricNameAndResolutionMap === null || metricNameAndResolutionMap === void 0 ? void 0 : metricNameAndResolutionMap.has(key)) &&\n metricNameAndResolutionMap.get(key) !== (storageResolution ? storageResolution : StorageResolution_1.StorageResolution.Standard)) {\n throw new InvalidMetricError_1.InvalidMetricError(`Resolution for metrics ${key} is already set. A single log event cannot have a metric with two different resolutions.`);\n }\n};\nexports.validateMetric = validateMetric;\n/**\n * Validates metric namespace.\n * @see [CloudWatch Namespace](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Namespace)\n *\n * @param namespace\n * @throws {InvalidNamespaceError} Namespace must be of valid length.\n */\nconst validateNamespace = (namespace) => {\n if (namespace.trim().length == 0) {\n throw new InvalidNamespaceError_1.InvalidNamespaceError(`Namespace must include at least one non-whitespace character`);\n }\n if (namespace.length > Constants_1.Constants.MAX_NAMESPACE_LENGTH) {\n throw new InvalidNamespaceError_1.InvalidNamespaceError(`Namespace must not exceed maximum length ${Constants_1.Constants.MAX_NAMESPACE_LENGTH}`);\n }\n if (!new RegExp(Constants_1.Constants.VALID_NAMESPACE_REGEX).test(namespace)) {\n throw new InvalidNamespaceError_1.InvalidNamespaceError(`Namespace ${namespace} has invalid characters`);\n }\n};\nexports.validateNamespace = validateNamespace;\n/**\n * Validates timestamp.\n * @see [CloudWatch Timestamp](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#about_timestamp)\n *\n * @param timestamp\n */\nconst validateTimestamp = (timestamp) => {\n if (!isDate(timestamp)) {\n throw new InvalidTimestampError_1.InvalidTimestampError(`Timestamp ${String(timestamp)} is invalid`);\n }\n timestamp = new Date(timestamp);\n if (timestamp < new Date(Date.now() - Constants_1.Constants.MAX_TIMESTAMP_PAST_AGE)) {\n throw new InvalidTimestampError_1.InvalidTimestampError(`Timestamp ${String(timestamp)} must not be older than ${Constants_1.Constants.MAX_TIMESTAMP_PAST_AGE} milliseconds`);\n }\n if (timestamp > new Date(Date.now() + Constants_1.Constants.MAX_TIMESTAMP_FUTURE_AGE)) {\n throw new InvalidTimestampError_1.InvalidTimestampError(`Timestamp ${String(timestamp)} must not be newer than ${Constants_1.Constants.MAX_TIMESTAMP_FUTURE_AGE} milliseconds`);\n }\n};\nexports.validateTimestamp = validateTimestamp;\nconst isDate = (timestamp) => {\n return (timestamp instanceof Date && !isNaN(new Date(timestamp).getTime())) || new Date(timestamp).getTime() > 0;\n};\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MetricValues = void 0;\nconst StorageResolution_1 = require(\"./StorageResolution\");\nclass MetricValues {\n constructor(value, unit, storageResolution) {\n this.values = [value];\n this.unit = unit || 'None';\n this.storageResolution = storageResolution || StorageResolution_1.StorageResolution.Standard;\n }\n /**\n * Appends the provided value to the current metric\n * @param value\n */\n addValue(value) {\n this.values.push(value);\n }\n}\nexports.MetricValues = MetricValues;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MetricsContext = void 0;\nconst Configuration_1 = __importDefault(require(\"../config/Configuration\"));\nconst Logger_1 = require(\"../utils/Logger\");\nconst Validator_1 = require(\"../utils/Validator\");\nconst MetricValues_1 = require(\"./MetricValues\");\nconst StorageResolution_1 = require(\"./StorageResolution\");\nclass MetricsContext {\n /**\n * Use this to create a new, empty context.\n */\n static empty() {\n return new MetricsContext();\n }\n /**\n * Constructor used to create child instances.\n * You should not use this constructor directly.\n * Instead, use createCopyWithContext() or empty().\n *\n * The reason for this is to avoid unexpected behavior when creating\n * MetricsContexts with defaultDimensions and existing dimensions.\n *\n * @param properties\n * @param dimensions\n */\n constructor(namespace, properties, dimensions, defaultDimensions, shouldUseDefaultDimensions, timestamp) {\n this.metrics = new Map();\n this.meta = {};\n this.shouldUseDefaultDimensions = true;\n this.metricNameAndResolutionMap = new Map();\n this.namespace = namespace || Configuration_1.default.namespace;\n this.properties = properties || {};\n this.dimensions = dimensions || [];\n this.timestamp = timestamp;\n this.meta.Timestamp = MetricsContext.resolveMetaTimestamp(timestamp);\n this.defaultDimensions = defaultDimensions || {};\n if (shouldUseDefaultDimensions != undefined) {\n this.shouldUseDefaultDimensions = shouldUseDefaultDimensions;\n }\n }\n static resolveMetaTimestamp(timestamp) {\n if (timestamp instanceof Date) {\n return timestamp.getTime();\n }\n else if (timestamp) {\n return timestamp;\n }\n else {\n return Date.now();\n }\n }\n setNamespace(value) {\n (0, Validator_1.validateNamespace)(value);\n this.namespace = value;\n }\n setProperty(key, value) {\n this.properties[key] = value;\n }\n setTimestamp(timestamp) {\n (0, Validator_1.validateTimestamp)(timestamp);\n this.timestamp = timestamp;\n this.meta.Timestamp = MetricsContext.resolveMetaTimestamp(timestamp);\n }\n /**\n * Sets default dimensions for the Context.\n * A dimension set will be created with just the default dimensions\n * and all calls to putDimensions will be prepended with the defaults.\n */\n setDefaultDimensions(dimensions) {\n (0, Logger_1.LOG)(`Received default dimensions`, dimensions);\n this.defaultDimensions = dimensions;\n }\n /**\n * Adds a new set of dimensions. Any time a new dimensions set\n * is added, the set is first prepended by the default dimensions.\n *\n * @param dimensions\n */\n putDimensions(incomingDimensionSet) {\n (0, Validator_1.validateDimensionSet)(incomingDimensionSet);\n // Duplicate dimensions sets are removed before being added to the end of the collection.\n // This ensures the latest dimension key-value is used as a target member on the root EMF node.\n // This operation is O(n^2), but acceptable given sets are capped at 10 dimensions\n const incomingDimensionSetKeys = Object.keys(incomingDimensionSet);\n this.dimensions = this.dimensions.filter((existingDimensionSet) => {\n const existingDimensionSetKeys = Object.keys(existingDimensionSet);\n if (existingDimensionSetKeys.length !== incomingDimensionSetKeys.length) {\n return true;\n }\n return !existingDimensionSetKeys.every((existingDimensionSetKey) => incomingDimensionSetKeys.includes(existingDimensionSetKey));\n });\n this.dimensions.push(incomingDimensionSet);\n }\n /**\n * Overwrite all dimensions.\n *\n * @param dimensionSets\n */\n setDimensions(dimensionSets, useDefault = false) {\n dimensionSets.forEach((dimensionSet) => (0, Validator_1.validateDimensionSet)(dimensionSet));\n this.shouldUseDefaultDimensions = useDefault;\n this.dimensions = dimensionSets;\n }\n /**\n * Reset all custom dimensions\n * @param useDefault Indicates whether default dimensions should be used\n */\n resetDimensions(useDefault) {\n this.shouldUseDefaultDimensions = useDefault;\n this.dimensions = [];\n }\n /**\n * Get the current dimensions.\n */\n getDimensions() {\n // caller has explicitly called setDimensions\n if (this.shouldUseDefaultDimensions === false) {\n return this.dimensions;\n }\n // if there are no default dimensions, return the custom dimensions\n if (Object.keys(this.defaultDimensions).length === 0) {\n return this.dimensions;\n }\n // if default dimensions have been provided, but no custom dimensions, use the defaults\n if (this.dimensions.length === 0) {\n return [this.defaultDimensions];\n }\n // otherwise, merge the dimensions\n // we do this on the read path because default dimensions\n // may get updated asynchronously by environment detection\n return this.dimensions.map((custom) => {\n return Object.assign(Object.assign({}, this.defaultDimensions), custom);\n });\n }\n putMetric(key, value, unit, storageResolution) {\n var _a;\n (0, Validator_1.validateMetric)(key, value, unit, storageResolution, this.metricNameAndResolutionMap);\n const currentMetric = this.metrics.get(key);\n if (currentMetric) {\n currentMetric.addValue(value);\n }\n else {\n this.metrics.set(key, new MetricValues_1.MetricValues(value, unit, storageResolution));\n }\n (_a = this.metricNameAndResolutionMap) === null || _a === void 0 ? void 0 : _a.set(key, storageResolution || StorageResolution_1.StorageResolution.Standard);\n }\n /**\n * Creates an independently flushable context.\n * Custom dimensions are preserved by default unless preserveDimensions parameter is set.\n * @param preserveDimensions Indicates whether custom dimensions should be preserved\n */\n createCopyWithContext(preserveDimensions = true) {\n return new MetricsContext(this.namespace, Object.assign({}, this.properties), preserveDimensions ? Object.assign([], this.dimensions) : [], this.defaultDimensions, this.shouldUseDefaultDimensions, this.timestamp);\n }\n}\nexports.MetricsContext = MetricsContext;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MetricsLogger = void 0;\nconst Configuration_1 = __importDefault(require(\"../config/Configuration\"));\nconst MetricsContext_1 = require(\"./MetricsContext\");\n/**\n * An async metrics logger.\n * Use this interface to publish logs to CloudWatch Logs\n * and extract metrics to CloudWatch Metrics asynchronously.\n */\nclass MetricsLogger {\n constructor(resolveEnvironment, context) {\n this.configureContextForEnvironment = (context, environment) => {\n const defaultDimensions = {\n // LogGroup name will entirely depend on the environment since there\n // are some cases where the LogGroup cannot be configured (e.g. Lambda)\n LogGroup: environment.getLogGroupName(),\n ServiceName: Configuration_1.default.serviceName || environment.getName(),\n ServiceType: Configuration_1.default.serviceType || environment.getType(),\n };\n context.setDefaultDimensions(defaultDimensions);\n environment.configureContext(context);\n };\n this.resolveEnvironment = resolveEnvironment;\n this.context = context || MetricsContext_1.MetricsContext.empty();\n this.flushPreserveDimensions = true;\n }\n /**\n * Flushes the current context state to the configured sink.\n */\n flush() {\n return __awaiter(this, void 0, void 0, function* () {\n // resolve the environment and get the sink\n // MOST of the time this will run synchonrously\n // This only runs asynchronously if executing for the\n // first time in a non-lambda environment\n const environment = yield this.resolveEnvironment();\n this.configureContextForEnvironment(this.context, environment);\n const sink = environment.getSink();\n // accept and reset the context\n yield sink.accept(this.context);\n this.context = this.context.createCopyWithContext(this.flushPreserveDimensions);\n });\n }\n /**\n * Set a property on the published metrics.\n * This is stored in the emitted log data and you are not\n * charged for this data by CloudWatch Metrics.\n * These values can be values that are useful for searching on,\n * but have too high cardinality to emit as dimensions to\n * CloudWatch Metrics.\n *\n * @param key Property name\n * @param value Property value\n */\n setProperty(key, value) {\n this.context.setProperty(key, value);\n return this;\n }\n /**\n * Adds a dimension.\n * This is generally a low cardinality key-value pair that is part of the metric identity.\n * CloudWatch treats each unique combination of dimensions as a separate metric, even if the metrics have the same metric name.\n *\n * @param dimension\n * @param value\n * @see [CloudWatch Dimensions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Dimension)\n */\n putDimensions(dimensions) {\n this.context.putDimensions(dimensions);\n return this;\n }\n setDimensions(dimensionSetOrSets, useDefault = false) {\n if (Array.isArray(dimensionSetOrSets)) {\n this.context.setDimensions(dimensionSetOrSets, useDefault);\n }\n else {\n this.context.setDimensions([dimensionSetOrSets], useDefault);\n }\n return this;\n }\n /**\n * Clear all custom dimensions on this MetricsLogger instance\n *\n * @param useDefault indicates whether default dimensions should be used\n */\n resetDimensions(useDefault) {\n this.context.resetDimensions(useDefault);\n return this;\n }\n /**\n * Put a metric value.\n * This value will be emitted to CloudWatch Metrics asyncronously and does not contribute to your\n * account TPS limits. The value will also be available in your CloudWatch Logs\n * @param key\n * @param value\n * @param unit\n * @param storageResolution\n */\n putMetric(key, value, unit, storageResolution) {\n this.context.putMetric(key, value, unit, storageResolution);\n return this;\n }\n /**\n * Set the CloudWatch namespace that metrics should be published to.\n * @param value\n */\n setNamespace(value) {\n this.context.setNamespace(value);\n return this;\n }\n /**\n * Set the timestamp of metrics emitted in this context.\n *\n * If not set, the timestamp will default to new Date() at the point\n * the context is constructed.\n *\n * If set, timestamp will preserved across calls to flush().\n *\n * @param timestamp\n */\n setTimestamp(timestamp) {\n this.context.setTimestamp(timestamp);\n return this;\n }\n /**\n * Creates a new logger using the same contextual data as\n * the previous logger. This allows you to flush the instances\n * independently.\n */\n new() {\n return new MetricsLogger(this.resolveEnvironment, this.context.createCopyWithContext());\n }\n}\nexports.MetricsLogger = MetricsLogger;\n", "/**\n * @license MIT\n * @copyright 2020 Eyas Ranjous <eyas.ranjous@gmail.com>\n *\n * @class\n */\nclass Heap {\n /**\n * @param {function} compare\n * @param {array} [_values]\n * @param {number|string|object} [_leaf]\n */\n constructor(compare, _values, _leaf) {\n if (typeof compare !== 'function') {\n throw new Error('Heap constructor expects a compare function');\n }\n this._compare = compare;\n this._nodes = Array.isArray(_values) ? _values : [];\n this._leaf = _leaf || null;\n }\n\n /**\n * Converts the heap to a cloned array without sorting.\n * @public\n * @returns {Array}\n */\n toArray() {\n return Array.from(this._nodes);\n }\n\n /**\n * Checks if a parent has a left child\n * @private\n */\n _hasLeftChild(parentIndex) {\n const leftChildIndex = (parentIndex * 2) + 1;\n return leftChildIndex < this.size();\n }\n\n /**\n * Checks if a parent has a right child\n * @private\n */\n _hasRightChild(parentIndex) {\n const rightChildIndex = (parentIndex * 2) + 2;\n return rightChildIndex < this.size();\n }\n\n /**\n * Compares two nodes\n * @private\n */\n _compareAt(i, j) {\n return this._compare(this._nodes[i], this._nodes[j]);\n }\n\n /**\n * Swaps two nodes in the heap\n * @private\n */\n _swap(i, j) {\n const temp = this._nodes[i];\n this._nodes[i] = this._nodes[j];\n this._nodes[j] = temp;\n }\n\n /**\n * Checks if parent and child should be swapped\n * @private\n */\n _shouldSwap(parentIndex, childIndex) {\n if (parentIndex < 0 || parentIndex >= this.size()) {\n return false;\n }\n\n if (childIndex < 0 || childIndex >= this.size()) {\n return false;\n }\n\n return this._compareAt(parentIndex, childIndex) > 0;\n }\n\n /**\n * Compares children of a parent\n * @private\n */\n _compareChildrenOf(parentIndex) {\n if (!this._hasLeftChild(parentIndex) && !this._hasRightChild(parentIndex)) {\n return -1;\n }\n\n const leftChildIndex = (parentIndex * 2) + 1;\n const rightChildIndex = (parentIndex * 2) + 2;\n\n if (!this._hasLeftChild(parentIndex)) {\n return rightChildIndex;\n }\n\n if (!this._hasRightChild(parentIndex)) {\n return leftChildIndex;\n }\n\n const compare = this._compareAt(leftChildIndex, rightChildIndex);\n return compare > 0 ? rightChildIndex : leftChildIndex;\n }\n\n /**\n * Compares two children before a position\n * @private\n */\n _compareChildrenBefore(index, leftChildIndex, rightChildIndex) {\n const compare = this._compareAt(rightChildIndex, leftChildIndex);\n\n if (compare <= 0 && rightChildIndex < index) {\n return rightChildIndex;\n }\n\n return leftChildIndex;\n }\n\n /**\n * Recursively bubbles up a node if it's in a wrong position\n * @private\n */\n _heapifyUp(startIndex) {\n let childIndex = startIndex;\n let parentIndex = Math.floor((childIndex - 1) / 2);\n\n while (this._shouldSwap(parentIndex, childIndex)) {\n this._swap(parentIndex, childIndex);\n childIndex = parentIndex;\n parentIndex = Math.floor((childIndex - 1) / 2);\n }\n }\n\n /**\n * Recursively bubbles down a node if it's in a wrong position\n * @private\n */\n _heapifyDown(startIndex) {\n let parentIndex = startIndex;\n let childIndex = this._compareChildrenOf(parentIndex);\n\n while (this._shouldSwap(parentIndex, childIndex)) {\n this._swap(parentIndex, childIndex);\n parentIndex = childIndex;\n childIndex = this._compareChildrenOf(parentIndex);\n }\n }\n\n /**\n * Recursively bubbles down a node before a given index\n * @private\n */\n _heapifyDownUntil(index) {\n let parentIndex = 0;\n let leftChildIndex = 1;\n let rightChildIndex = 2;\n let childIndex;\n\n while (leftChildIndex < index) {\n childIndex = this._compareChildrenBefore(\n index,\n leftChildIndex,\n rightChildIndex\n );\n\n if (this._shouldSwap(parentIndex, childIndex)) {\n this._swap(parentIndex, childIndex);\n }\n\n parentIndex = childIndex;\n leftChildIndex = (parentIndex * 2) + 1;\n rightChildIndex = (parentIndex * 2) + 2;\n }\n }\n\n /**\n * Inserts a new value into the heap\n * @public\n * @param {number|string|object} value\n * @returns {Heap}\n */\n insert(value) {\n this._nodes.push(value);\n this._heapifyUp(this.size() - 1);\n if (this._leaf === null || this._compare(value, this._leaf) > 0) {\n this._leaf = value;\n }\n return this;\n }\n\n /**\n * Inserts a new value into the heap\n * @public\n * @param {number|string|object} value\n * @returns {Heap}\n */\n push(value) {\n return this.insert(value);\n }\n\n /**\n * Removes and returns the root node in the heap\n * @public\n * @returns {number|string|object}\n */\n extractRoot() {\n if (this.isEmpty()) {\n return null;\n }\n\n const root = this.root();\n this._nodes[0] = this._nodes[this.size() - 1];\n this._nodes.pop();\n this._heapifyDown(0);\n\n if (root === this._leaf) {\n this._leaf = this.root();\n }\n\n return root;\n }\n\n /**\n * Removes and returns the root node in the heap\n * @public\n * @returns {number|string|object}\n */\n pop() {\n return this.extractRoot();\n }\n\n /**\n * Applies heap sort and return the values sorted by priority\n * @public\n * @returns {array}\n */\n sort() {\n for (let i = this.size() - 1; i > 0; i -= 1) {\n this._swap(0, i);\n this._heapifyDownUntil(i);\n }\n return this._nodes;\n }\n\n /**\n * Fixes node positions in the heap\n * @public\n * @returns {Heap}\n */\n fix() {\n // fix node positions\n for (let i = Math.floor(this.size() / 2) - 1; i >= 0; i -= 1) {\n this._heapifyDown(i);\n }\n\n // fix leaf value\n for (let i = Math.floor(this.size() / 2); i < this.size(); i += 1) {\n const value = this._nodes[i];\n if (this._leaf === null || this._compare(value, this._leaf) > 0) {\n this._leaf = value;\n }\n }\n\n return this;\n }\n\n /**\n * Verifies that all heap nodes are in the right position\n * @public\n * @returns {boolean}\n */\n isValid() {\n const isValidRecursive = (parentIndex) => {\n let isValidLeft = true;\n let isValidRight = true;\n\n if (this._hasLeftChild(parentIndex)) {\n const leftChildIndex = (parentIndex * 2) + 1;\n if (this._compareAt(parentIndex, leftChildIndex) > 0) {\n return false;\n }\n isValidLeft = isValidRecursive(leftChildIndex);\n }\n\n if (this._hasRightChild(parentIndex)) {\n const rightChildIndex = (parentIndex * 2) + 2;\n if (this._compareAt(parentIndex, rightChildIndex) > 0) {\n return false;\n }\n isValidRight = isValidRecursive(rightChildIndex);\n }\n\n return isValidLeft && isValidRight;\n };\n\n return isValidRecursive(0);\n }\n\n /**\n * Returns a shallow copy of the heap\n * @public\n * @returns {Heap}\n */\n clone() {\n return new Heap(this._compare, this._nodes.slice(), this._leaf);\n }\n\n /**\n * Returns the root node in the heap\n * @public\n * @returns {number|string|object}\n */\n root() {\n if (this.isEmpty()) {\n return null;\n }\n\n return this._nodes[0];\n }\n\n /**\n * Returns the root node in the heap\n * @public\n * @returns {number|string|object}\n */\n top() {\n return this.root();\n }\n\n /**\n * Returns a leaf node in the heap\n * @public\n * @returns {number|string|object}\n */\n leaf() {\n return this._leaf;\n }\n\n /**\n * Returns the number of nodes in the heap\n * @public\n * @returns {number}\n */\n size() {\n return this._nodes.length;\n }\n\n /**\n * Checks if the heap is empty\n * @public\n * @returns {boolean}\n */\n isEmpty() {\n return this.size() === 0;\n }\n\n /**\n * Clears the heap\n * @public\n */\n clear() {\n this._nodes = [];\n this._leaf = null;\n }\n\n /**\n * Implements an iterable on the heap\n * @public\n */\n [Symbol.iterator]() {\n let size = this.size();\n return {\n next: () => {\n size -= 1;\n return {\n value: this.pop(),\n done: size === -1\n };\n }\n };\n }\n\n /**\n * Builds a heap from a array of values\n * @public\n * @static\n * @param {array} values\n * @param {function} compare\n * @returns {Heap}\n */\n static heapify(values, compare) {\n if (!Array.isArray(values)) {\n throw new Error('Heap.heapify expects an array of values');\n }\n\n if (typeof compare !== 'function') {\n throw new Error('Heap.heapify expects a compare function');\n }\n\n return new Heap(compare, values).fix();\n }\n\n /**\n * Checks if a list of values is a valid heap\n * @public\n * @static\n * @param {array} values\n * @param {function} compare\n * @returns {boolean}\n */\n static isHeapified(values, compare) {\n return new Heap(compare, values).isValid();\n }\n}\n\nexports.Heap = Heap;\n", "/**\n * @license MIT\n * @copyright 2020 Eyas Ranjous <eyas.ranjous@gmail.com>\n */\n\nconst { Heap } = require('./heap');\n\nconst getMinCompare = (getCompareValue) => (a, b) => {\n const aVal = typeof getCompareValue === 'function' ? getCompareValue(a) : a;\n const bVal = typeof getCompareValue === 'function' ? getCompareValue(b) : b;\n return aVal < bVal ? -1 : 1;\n};\n\n/**\n * @class MinHeap\n * @extends Heap\n */\nclass MinHeap {\n /**\n * @param {function} [getCompareValue]\n * @param {Heap} [_heap]\n */\n constructor(getCompareValue, _heap) {\n this._getCompareValue = getCompareValue;\n this._heap = _heap || new Heap(getMinCompare(getCompareValue));\n }\n\n /**\n * Converts the heap to a cloned array without sorting.\n * @public\n * @returns {Array}\n */\n toArray() {\n return Array.from(this._heap._nodes);\n }\n\n /**\n * Inserts a new value into the heap\n * @public\n * @param {number|string|object} value\n * @returns {MinHeap}\n */\n insert(value) {\n return this._heap.insert(value);\n }\n\n /**\n * Inserts a new value into the heap\n * @public\n * @param {number|string|object} value\n * @returns {Heap}\n */\n push(value) {\n return this.insert(value);\n }\n\n /**\n * Removes and returns the root node in the heap\n * @public\n * @returns {number|string|object}\n */\n extractRoot() {\n return this._heap.extractRoot();\n }\n\n /**\n * Removes and returns the root node in the heap\n * @public\n * @returns {number|string|object}\n */\n pop() {\n return this.extractRoot();\n }\n\n /**\n * Applies heap sort and return the values sorted by priority\n * @public\n * @returns {array}\n */\n sort() {\n return this._heap.sort();\n }\n\n /**\n * Fixes node positions in the heap\n * @public\n * @returns {MinHeap}\n */\n fix() {\n return this._heap.fix();\n }\n\n /**\n * Verifies that all heap nodes are in the right position\n * @public\n * @returns {boolean}\n */\n isValid() {\n return this._heap.isValid();\n }\n\n /**\n * Returns the root node in the heap\n * @public\n * @returns {number|string|object}\n */\n root() {\n return this._heap.root();\n }\n\n /**\n * Returns the root node in the heap\n * @public\n * @returns {number|string|object}\n */\n top() {\n return this.root();\n }\n\n /**\n * Returns a leaf node in the heap\n * @public\n * @returns {number|string|object}\n */\n leaf() {\n return this._heap.leaf();\n }\n\n /**\n * Returns the number of nodes in the heap\n * @public\n * @returns {number}\n */\n size() {\n return this._heap.size();\n }\n\n /**\n * Checks if the heap is empty\n * @public\n * @returns {boolean}\n */\n isEmpty() {\n return this._heap.isEmpty();\n }\n\n /**\n * Clears the heap\n * @public\n */\n clear() {\n this._heap.clear();\n }\n\n /**\n * Returns a shallow copy of the MinHeap\n * @public\n * @returns {MinHeap}\n */\n clone() {\n return new MinHeap(this._getCompareValue, this._heap.clone());\n }\n\n /**\n * Implements an iterable on the heap\n * @public\n */\n [Symbol.iterator]() {\n let size = this.size();\n return {\n next: () => {\n size -= 1;\n return {\n value: this.pop(),\n done: size === -1\n };\n }\n };\n }\n\n /**\n * Builds a MinHeap from an array\n * @public\n * @static\n * @param {array} values\n * @param {function} [getCompareValue]\n * @returns {MinHeap}\n */\n static heapify(values, getCompareValue) {\n if (!Array.isArray(values)) {\n throw new Error('MinHeap.heapify expects an array');\n }\n const heap = new Heap(getMinCompare(getCompareValue), values);\n return new MinHeap(getCompareValue, heap).fix();\n }\n\n /**\n * Checks if a list of values is a valid min heap\n * @public\n * @static\n * @param {array} values\n * @param {function} [getCompareValue]\n * @returns {boolean}\n */\n static isHeapified(values, getCompareValue) {\n const heap = new Heap(getMinCompare(getCompareValue), values);\n return new MinHeap(getCompareValue, heap).isValid();\n }\n}\n\nexports.MinHeap = MinHeap;\n", "/**\n * @license MIT\n * @copyright 2020 Eyas Ranjous <eyas.ranjous@gmail.com>\n */\n\nconst { Heap } = require('./heap');\n\nconst getMaxCompare = (getCompareValue) => (a, b) => {\n const aVal = typeof getCompareValue === 'function' ? getCompareValue(a) : a;\n const bVal = typeof getCompareValue === 'function' ? getCompareValue(b) : b;\n return aVal < bVal ? 1 : -1;\n};\n\n/**\n * @class MaxHeap\n * @extends Heap\n */\nclass MaxHeap {\n /**\n * @param {function} [getCompareValue]\n * @param {Heap} [_heap]\n */\n constructor(getCompareValue, _heap) {\n this._getCompareValue = getCompareValue;\n this._heap = _heap || new Heap(getMaxCompare(getCompareValue));\n }\n\n /**\n * Inserts a new value into the heap\n * @public\n * @param {number|string|object} value\n * @returns {MaxHeap}\n */\n insert(value) {\n return this._heap.insert(value);\n }\n\n /**\n * Inserts a new value into the heap\n * @public\n * @param {number|string|object} value\n * @returns {Heap}\n */\n push(value) {\n return this.insert(value);\n }\n\n /**\n * Removes and returns the root node in the heap\n * @public\n * @returns {number|string|object}\n */\n extractRoot() {\n return this._heap.extractRoot();\n }\n\n /**\n * Removes and returns the root node in the heap\n * @public\n * @returns {number|string|object}\n */\n pop() {\n return this.extractRoot();\n }\n\n /**\n * Applies heap sort and return the values sorted by priority\n * @public\n * @returns {array}\n */\n sort() {\n return this._heap.sort();\n }\n\n /**\n * Converts the heap to a cloned array without sorting.\n * @public\n * @returns {Array}\n */\n toArray() {\n return Array.from(this._heap._nodes);\n }\n\n /**\n * Fixes node positions in the heap\n * @public\n * @returns {MaxHeap}\n */\n fix() {\n return this._heap.fix();\n }\n\n /**\n * Verifies that all heap nodes are in the right position\n * @public\n * @returns {boolean}\n */\n isValid() {\n return this._heap.isValid();\n }\n\n /**\n * Returns the root node in the heap\n * @public\n * @returns {number|string|object}\n */\n root() {\n return this._heap.root();\n }\n\n /**\n * Returns the root node in the heap\n * @public\n * @returns {number|string|object}\n */\n top() {\n return this.root();\n }\n\n /**\n * Returns a leaf node in the heap\n * @public\n * @returns {number|string|object}\n */\n leaf() {\n return this._heap.leaf();\n }\n\n /**\n * Returns the number of nodes in the heap\n * @public\n * @returns {number}\n */\n size() {\n return this._heap.size();\n }\n\n /**\n * Checks if the heap is empty\n * @public\n * @returns {boolean}\n */\n isEmpty() {\n return this._heap.isEmpty();\n }\n\n /**\n * Clears the heap\n * @public\n */\n clear() {\n this._heap.clear();\n }\n\n /**\n * Returns a shallow copy of the MaxHeap\n * @public\n * @returns {MaxHeap}\n */\n clone() {\n return new MaxHeap(this._getCompareValue, this._heap.clone());\n }\n\n /**\n * Implements an iterable on the heap\n * @public\n */\n [Symbol.iterator]() {\n let size = this.size();\n return {\n next: () => {\n size -= 1;\n return {\n value: this.pop(),\n done: size === -1\n };\n }\n };\n }\n\n /**\n * Builds a MaxHeap from an array\n * @public\n * @static\n * @param {array} values\n * @param {function} [getCompareValue]\n * @returns {MaxHeap}\n */\n static heapify(values, getCompareValue) {\n if (!Array.isArray(values)) {\n throw new Error('MaxHeap.heapify expects an array');\n }\n const heap = new Heap(getMaxCompare(getCompareValue), values);\n return new MaxHeap(getCompareValue, heap).fix();\n }\n\n /**\n * Checks if a list of values is a valid max heap\n * @public\n * @static\n * @param {array} values\n * @param {function} [getCompareValue]\n * @returns {boolean}\n */\n static isHeapified(values, getCompareValue) {\n const heap = new Heap(getMaxCompare(getCompareValue), values);\n return new MaxHeap(getCompareValue, heap).isValid();\n }\n}\n\nexports.MaxHeap = MaxHeap;\n", "const { Heap } = require('./src/heap');\nconst { MinHeap } = require('./src/minHeap');\nconst { MaxHeap } = require('./src/maxHeap');\n\nexports.Heap = Heap;\nexports.MinHeap = MinHeap;\nexports.MaxHeap = MaxHeap;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LogSerializer = void 0;\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst heap_1 = require(\"@datastructures-js/heap\");\nconst Constants_1 = require(\"../Constants\");\nconst DimensionSetExceededError_1 = require(\"../exceptions/DimensionSetExceededError\");\nconst StorageResolution_1 = require(\"../logger/StorageResolution\");\n/**\n * Serializes the provided context to the CWL Structured\n * Logs format with Embedded Metric Filters.\n */\nclass LogSerializer {\n /**\n * Retrieve the current context as a JSON string\n */\n serialize(context) {\n const dimensionKeys = [];\n let dimensionProperties = {};\n context.getDimensions().forEach((dimensionSet) => {\n const keys = Object.keys(dimensionSet);\n if (keys.length > Constants_1.Constants.MAX_DIMENSION_SET_SIZE) {\n const errMsg = `Maximum number of dimensions allowed are ${Constants_1.Constants.MAX_DIMENSION_SET_SIZE}.` +\n `Account for default dimensions if not using set_dimensions.`;\n throw new DimensionSetExceededError_1.DimensionSetExceededError(errMsg);\n }\n dimensionKeys.push(keys);\n dimensionProperties = Object.assign(Object.assign({}, dimensionProperties), dimensionSet);\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const createBody = () => {\n return Object.assign(Object.assign(Object.assign({}, dimensionProperties), context.properties), { _aws: Object.assign(Object.assign({}, context.meta), { CloudWatchMetrics: [\n {\n Dimensions: dimensionKeys,\n Metrics: [],\n Namespace: context.namespace,\n },\n ] }) });\n };\n const eventBatches = [];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n let currentBody = createBody();\n // eslint-disable-next-line\n const currentMetricsInBody = () => currentBody._aws.CloudWatchMetrics[0].Metrics.length;\n const hasMaxMetrics = () => currentMetricsInBody() === Constants_1.Constants.MAX_METRICS_PER_EVENT;\n // converts the body to JSON and pushes it into the batches\n const serializeCurrentBody = () => {\n eventBatches.push(JSON.stringify(currentBody));\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n currentBody = createBody();\n };\n const remainingMetrics = heap_1.MaxHeap.heapify(Array.from(context.metrics, ([key, value]) => {\n return { name: key, numLeft: value.values.length };\n }), (metric) => metric.numLeft);\n let processedMetrics = [];\n // Batches the metrics with the most number of values first, such that each metric has no more\n // than 100 values, and each batch has no more than 100 metric definitions.\n while (!remainingMetrics.isEmpty()) {\n const metricProgress = remainingMetrics.extractRoot();\n const metric = context.metrics.get(metricProgress.name);\n if (metric) {\n const startIndex = metric.values.length - metricProgress.numLeft;\n // if there is only one metric value, unwrap it to make querying easier\n const metricValue = metricProgress.numLeft === 1\n ? metric.values[startIndex]\n : // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n metric.values.slice(startIndex, startIndex + Constants_1.Constants.MAX_VALUES_PER_METRIC);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n currentBody[metricProgress.name] = metricValue;\n const metricBody = Object.assign({ Name: metricProgress.name, Unit: metric.unit }, (metric.storageResolution == StorageResolution_1.StorageResolution.High ? { StorageResolution: StorageResolution_1.StorageResolution.High } : {}));\n // eslint-disable-next-line\n currentBody._aws.CloudWatchMetrics[0].Metrics.push(metricBody);\n metricProgress.numLeft -= Constants_1.Constants.MAX_VALUES_PER_METRIC;\n if (metricProgress.numLeft > 0) {\n processedMetrics.push(metricProgress);\n }\n if (hasMaxMetrics() || remainingMetrics.isEmpty()) {\n serializeCurrentBody();\n // inserts these metrics back in the heap to be processed in the next iteration.\n processedMetrics.forEach((processingMetric) => remainingMetrics.insert(processingMetric));\n processedMetrics = [];\n }\n }\n }\n if (eventBatches.length === 0 || currentMetricsInBody() > 0) {\n serializeCurrentBody();\n }\n return eventBatches;\n }\n}\nexports.LogSerializer = LogSerializer;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsoleSink = void 0;\nconst LogSerializer_1 = require(\"../serializers/LogSerializer\");\n/**\n * A sink that flushes log data to stdout.\n * This is the preferred sink for Lambda functions.\n */\nclass ConsoleSink {\n constructor(serializer) {\n this.name = 'ConsoleSink';\n this.serializer = serializer || new LogSerializer_1.LogSerializer();\n }\n accept(context) {\n // tslint:disable-next-line\n const events = this.serializer.serialize(context);\n events.forEach(event => console.log(event));\n return Promise.resolve();\n }\n}\nexports.ConsoleSink = ConsoleSink;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TcpClient = void 0;\nconst net = require(\"net\");\nconst Logger_1 = require(\"../../utils/Logger\");\nclass TcpClient {\n constructor(endpoint) {\n this.endpoint = endpoint;\n this.socket = new net.Socket({ allowHalfOpen: true })\n .setEncoding('utf8')\n .setKeepAlive(true)\n .setTimeout(5000) // idle timeout\n .on('timeout', () => this.disconnect('idle timeout'))\n .on('end', () => this.disconnect('end'))\n .on('data', data => (0, Logger_1.LOG)('TcpClient received data.', data));\n // Used to create an initial connection on the socket right after creation to avoid socket failures.\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.initialConnect.apply(this);\n }\n initialConnect() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => {\n this.socket.connect(this.endpoint.port, this.endpoint.host, (err) => {\n if (err)\n reject(err);\n else\n resolve();\n });\n });\n });\n }\n warmup() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n yield this.establishConnection();\n }\n catch (err) {\n (0, Logger_1.LOG)('Failed to connect', err);\n }\n });\n }\n sendMessage(message) {\n return __awaiter(this, void 0, void 0, function* () {\n // ensure the socket is open and writable\n yield this.waitForOpenConnection();\n yield new Promise((resolve, reject) => {\n const onSendError = (err) => {\n (0, Logger_1.LOG)('Failed to write', err);\n reject(err);\n };\n const wasFlushedToKernel = this.socket.write(message, (err) => {\n if (!err) {\n (0, Logger_1.LOG)('Write succeeded');\n resolve();\n }\n else {\n onSendError(err);\n }\n });\n if (!wasFlushedToKernel) {\n (0, Logger_1.LOG)('TcpClient data was not flushed to kernel buffer and was queued in memory.');\n }\n });\n });\n }\n disconnect(eventName) {\n (0, Logger_1.LOG)('TcpClient disconnected due to:', eventName);\n this.socket.removeAllListeners();\n this.socket.destroy();\n this.socket.unref();\n }\n waitForOpenConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.socket.writable || this.socket.readyState !== 'open') {\n yield this.establishConnection();\n }\n });\n }\n establishConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n yield new Promise((resolve, reject) => {\n const onError = (e) => {\n // socket is already open, no need to connect\n if (e.message.includes('EISCONN')) {\n resolve();\n return;\n }\n (0, Logger_1.LOG)('TCP Client received error', e);\n this.disconnect(e.message);\n reject(e);\n };\n const onConnect = () => {\n this.socket.removeListener('error', onError);\n (0, Logger_1.LOG)('TcpClient connected.', this.endpoint);\n resolve();\n };\n // TODO: convert this to a proper state machine\n switch (this.socket.readyState) {\n case 'open':\n resolve();\n break;\n case 'opening':\n // the socket is currently opening, we will resolve\n // or fail the current promise on the connect or\n // error events\n this.socket.once('connect', onConnect);\n this.socket.once('error', onError);\n break;\n default:\n (0, Logger_1.LOG)('opening connection with socket in state: ', this.socket.readyState);\n this.socket.connect(this.endpoint.port, this.endpoint.host, onConnect).once('error', onError);\n break;\n }\n });\n });\n }\n}\nexports.TcpClient = TcpClient;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UdpClient = void 0;\nconst dgram = require(\"dgram\");\nconst Logger_1 = require(\"../../utils/Logger\");\nclass UdpClient {\n constructor(endpoint) {\n this.endpoint = endpoint;\n }\n // No warm up for UDP\n warmup() {\n return Promise.resolve();\n }\n sendMessage(message) {\n return __awaiter(this, void 0, void 0, function* () {\n const client = dgram.createSocket('udp4');\n client.send(message, this.endpoint.port, this.endpoint.host, (error) => {\n if (error) {\n (0, Logger_1.LOG)(error);\n }\n client.close();\n });\n return Promise.resolve();\n });\n }\n}\nexports.UdpClient = UdpClient;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AgentSink = void 0;\nconst url = require(\"url\");\nconst Configuration_1 = __importDefault(require(\"../config/Configuration\"));\nconst LogSerializer_1 = require(\"../serializers/LogSerializer\");\nconst Logger_1 = require(\"../utils/Logger\");\nconst TcpClient_1 = require(\"./connections/TcpClient\");\nconst UdpClient_1 = require(\"./connections/UdpClient\");\nconst TCP = 'tcp:';\nconst UDP = 'udp:';\nconst defaultTcpEndpoint = {\n host: '0.0.0.0',\n port: 25888,\n protocol: TCP,\n};\nconst parseEndpoint = (endpoint) => {\n try {\n if (!endpoint) {\n return defaultTcpEndpoint;\n }\n const parsedUrl = url.parse(endpoint);\n if (!parsedUrl.hostname || !parsedUrl.port || !parsedUrl.protocol) {\n (0, Logger_1.LOG)(`Failed to parse the provided agent endpoint. Falling back to the default TCP endpoint.`, parsedUrl);\n return defaultTcpEndpoint;\n }\n if (parsedUrl.protocol !== TCP && parsedUrl.protocol !== UDP) {\n (0, Logger_1.LOG)(`The provided agent endpoint protocol '${parsedUrl.protocol}' is not supported. Please use TCP or UDP. Falling back to the default TCP endpoint.`, parsedUrl);\n return defaultTcpEndpoint;\n }\n return {\n host: parsedUrl.hostname,\n port: Number(parsedUrl.port),\n protocol: parsedUrl.protocol,\n };\n }\n catch (e) {\n (0, Logger_1.LOG)('Failed to parse the provided agent endpoint', e);\n return defaultTcpEndpoint;\n }\n};\n/**\n * A sink that flushes to the CW Agent.\n * This sink instance should be re-used to avoid\n * leaking connections.\n */\nclass AgentSink {\n constructor(logGroupName, logStreamName, serializer) {\n this.name = 'AgentSink';\n this.logGroupName = logGroupName;\n this.logStreamName = logStreamName;\n this.serializer = serializer || new LogSerializer_1.LogSerializer();\n this.endpoint = parseEndpoint(Configuration_1.default.agentEndpoint);\n this.socketClient = this.getSocketClient(this.endpoint);\n (0, Logger_1.LOG)('Using socket client', this.socketClient.constructor.name);\n }\n accept(context) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.logGroupName) {\n context.meta.LogGroupName = this.logGroupName;\n }\n if (this.logStreamName) {\n context.meta.LogStreamName = this.logStreamName;\n }\n const events = this.serializer.serialize(context);\n (0, Logger_1.LOG)(`Sending {} events to socket.`, events.length);\n for (let index = 0; index < events.length; index++) {\n const event = events[index];\n const message = event + '\\n';\n const bytes = Buffer.from(message);\n yield this.socketClient.sendMessage(bytes);\n }\n });\n }\n getSocketClient(endpoint) {\n (0, Logger_1.LOG)('Getting socket client for connection.', endpoint);\n const client = endpoint.protocol === TCP ? new TcpClient_1.TcpClient(endpoint) : new UdpClient_1.UdpClient(endpoint);\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n client.warmup();\n return client;\n }\n}\nexports.AgentSink = AgentSink;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefaultEnvironment = void 0;\nconst Configuration_1 = __importDefault(require(\"../config/Configuration\"));\nconst AgentSink_1 = require(\"../sinks/AgentSink\");\nconst Logger_1 = require(\"../utils/Logger\");\nclass DefaultEnvironment {\n probe() {\n return Promise.resolve(true);\n }\n getName() {\n if (!Configuration_1.default.serviceName) {\n (0, Logger_1.LOG)('Unknown ServiceName.');\n return 'Unknown';\n }\n return Configuration_1.default.serviceName;\n }\n getType() {\n if (!Configuration_1.default.serviceType) {\n (0, Logger_1.LOG)('Unknown ServiceType.');\n return 'Unknown';\n }\n return Configuration_1.default.serviceType;\n }\n getLogGroupName() {\n // if the caller explicitly overrides logGroupName to\n // be empty, we should honor that rather than providing\n // the default behavior.\n if (Configuration_1.default.logGroupName === '') {\n return '';\n }\n return Configuration_1.default.logGroupName ? Configuration_1.default.logGroupName : `${this.getName()}-metrics`;\n }\n configureContext() {\n // no-op\n }\n getSink() {\n if (!this.sink) {\n this.sink = new AgentSink_1.AgentSink(this.getLogGroupName(), Configuration_1.default.logStreamName);\n }\n return this.sink;\n }\n}\nexports.DefaultEnvironment = DefaultEnvironment;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fetchString = exports.fetchJSON = exports.fetch = void 0;\nconst http_1 = require(\"http\");\nconst SOCKET_TIMEOUT = 1000;\n/**\n * Fetch data from a remote HTTP endpoint with the provided headers.\n *\n * @param options - HTTP request options\n */\nconst fetch = (options) => {\n return new Promise((resolve, reject) => {\n const request = (0, http_1.request)(options, (response) => {\n if (!response.statusCode) {\n reject(`Received undefined response status code from '${options.host || 'unknown'}/${options.path || 'unknown'}'`);\n return;\n }\n if (response.statusCode < 200 || response.statusCode > 299) {\n reject(new Error(`Failed to load page, status code: ${response.statusCode}`));\n return;\n }\n // using similar approach to node-fetch\n // https://github.com/bitinn/node-fetch/blob/6a5d192034a0f438551dffb6d2d8df2c00921d16/src/body.js#L217\n const body = [];\n let bodyBytes = 0;\n response.on('data', (chunk) => {\n bodyBytes += chunk.length;\n body.push(chunk);\n });\n response.on('end', () => {\n const buffer = Buffer.concat(body, bodyBytes);\n resolve(buffer);\n });\n }).on('error', (err) => {\n reject(err);\n });\n request.on('socket', socket => {\n socket.on('timeout', () => {\n request.abort();\n reject(`Socket timeout while connecting to '${options.host || 'unknown'}/${options.path || 'unknown'}'`);\n });\n socket.setTimeout(SOCKET_TIMEOUT);\n });\n request.end();\n });\n};\nexports.fetch = fetch;\n/**\n * Fetch a string from a remote HTTP endpoint with the provided headers.\n *\n * @param options - HTTP request options\n */\nconst fetchString = (options) => __awaiter(void 0, void 0, void 0, function* () {\n const buffer = yield fetch(options);\n return buffer.toString();\n});\nexports.fetchString = fetchString;\n/**\n * Fetch JSON data from a remote HTTP endpoint with the provided headers and de-serialize to the provided type.\n * There are no guarantees the response will conform to the contract defined by T.\n * It is up to the consumer to ensure the provided T captures all possible response types\n * from the provided endpoint.\n *\n * @param options - HTTP request options\n */\nconst fetchJSON = (options) => __awaiter(void 0, void 0, void 0, function* () {\n const responseString = yield fetchString(options);\n return JSON.parse(responseString);\n});\nexports.fetchJSON = fetchJSON;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ECSEnvironment = void 0;\nconst Configuration_1 = __importDefault(require(\"../config/Configuration\"));\nconst AgentSink_1 = require(\"../sinks/AgentSink\");\nconst Fetch_1 = require(\"../utils/Fetch\");\nconst Logger_1 = require(\"../utils/Logger\");\nconst os = __importStar(require(\"os\"));\nconst Constants_1 = require(\"../Constants\");\n// formats image names into something more readable for a metric name\n// e.g. <account-id>.dkr.ecr.<region>.amazonaws.com/<image-name>:latest -> <image-name>:latest\nconst formatImageName = (imageName) => {\n if (imageName) {\n const splitImageName = imageName.split('/');\n return splitImageName[splitImageName.length - 1];\n }\n return imageName;\n};\nclass ECSEnvironment {\n probe() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!process.env.ECS_CONTAINER_METADATA_URI) {\n return Promise.resolve(false);\n }\n if (process.env.FLUENT_HOST && !Configuration_1.default.agentEndpoint) {\n this.fluentBitEndpoint = `tcp://${process.env.FLUENT_HOST}:${Constants_1.Constants.DEFAULT_AGENT_PORT}`;\n Configuration_1.default.agentEndpoint = this.fluentBitEndpoint;\n (0, Logger_1.LOG)(`Using FluentBit configuration. Endpoint: ${this.fluentBitEndpoint}`);\n }\n try {\n const options = new URL(process.env.ECS_CONTAINER_METADATA_URI);\n this.metadata = yield (0, Fetch_1.fetchJSON)(options);\n if (this.metadata) {\n this.metadata.FormattedImageName = formatImageName(this.metadata.Image);\n (0, Logger_1.LOG)(`Successfully collected ECS Container metadata.`);\n }\n }\n catch (e) {\n (0, Logger_1.LOG)('Failed to collect ECS Container Metadata.');\n (0, Logger_1.LOG)(e);\n }\n // return true regardless of whether or not metadata collection\n // succeeded. we know that this is supposed to be an ECS environment\n // just from the environment variable\n return true;\n });\n }\n getName() {\n var _a;\n if (Configuration_1.default.serviceName) {\n return Configuration_1.default.serviceName;\n }\n return ((_a = this.metadata) === null || _a === void 0 ? void 0 : _a.FormattedImageName) ? this.metadata.FormattedImageName : 'Unknown';\n }\n getType() {\n return 'AWS::ECS::Container';\n }\n getLogGroupName() {\n // FireLens / fluent-bit does not need the log group to be included\n // since configuration of the LogGroup is handled by the\n // fluent bit config file\n if (this.fluentBitEndpoint) {\n return '';\n }\n return Configuration_1.default.logGroupName || this.getName();\n }\n configureContext(context) {\n var _a, _b, _c, _d, _e;\n this.addProperty(context, 'containerId', os.hostname());\n this.addProperty(context, 'createdAt', (_a = this.metadata) === null || _a === void 0 ? void 0 : _a.CreatedAt);\n this.addProperty(context, 'startedAt', (_b = this.metadata) === null || _b === void 0 ? void 0 : _b.StartedAt);\n this.addProperty(context, 'image', (_c = this.metadata) === null || _c === void 0 ? void 0 : _c.Image);\n this.addProperty(context, 'cluster', (_d = this.metadata) === null || _d === void 0 ? void 0 : _d.Labels['com.amazonaws.ecs.cluster']);\n this.addProperty(context, 'taskArn', (_e = this.metadata) === null || _e === void 0 ? void 0 : _e.Labels['com.amazonaws.ecs.task-arn']);\n // we override the standard default dimensions here because in the\n // FireLens / fluent-bit case, we don't need the LogGroup\n if (this.fluentBitEndpoint) {\n context.setDefaultDimensions({\n ServiceName: Configuration_1.default.serviceName || this.getName(),\n ServiceType: Configuration_1.default.serviceType || this.getType(),\n });\n }\n }\n getSink() {\n if (!this.sink) {\n const logGroupName = this.fluentBitEndpoint ? '' : this.getLogGroupName();\n this.sink = new AgentSink_1.AgentSink(logGroupName);\n }\n return this.sink;\n }\n addProperty(context, key, value) {\n if (value) {\n context.setProperty(key, value);\n }\n }\n}\nexports.ECSEnvironment = ECSEnvironment;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EC2Environment = void 0;\nconst Configuration_1 = __importDefault(require(\"../config/Configuration\"));\nconst AgentSink_1 = require(\"../sinks/AgentSink\");\nconst Fetch_1 = require(\"../utils/Fetch\");\nconst Logger_1 = require(\"../utils/Logger\");\n// Documentation for configuring instance metadata can be found here:\n// https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html\nconst host = '169.254.169.254';\nconst tokenPath = '/latest/api/token';\nconst tokenRequestHeaderKey = 'X-aws-ec2-metadata-token-ttl-seconds';\nconst tokenRequestHeaderValue = '21600';\nconst metadataPath = '/latest/dynamic/instance-identity/document';\nconst metadataRequestTokenHeaderKey = 'X-aws-ec2-metadata-token';\nclass EC2Environment {\n probe() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const options = {\n host,\n path: tokenPath,\n method: 'PUT',\n headers: { [tokenRequestHeaderKey]: tokenRequestHeaderValue },\n };\n this.token = yield (0, Fetch_1.fetchString)(options);\n }\n catch (e) {\n (0, Logger_1.LOG)(e);\n return false;\n }\n try {\n const metadataOptions = {\n host,\n path: metadataPath,\n method: 'GET',\n headers: { [metadataRequestTokenHeaderKey]: this.token },\n };\n this.metadata = yield (0, Fetch_1.fetchJSON)(metadataOptions);\n return !!this.metadata;\n }\n catch (e) {\n (0, Logger_1.LOG)(e);\n return false;\n }\n });\n }\n getName() {\n if (!Configuration_1.default.serviceName) {\n (0, Logger_1.LOG)('Unknown ServiceName.');\n return 'Unknown';\n }\n return Configuration_1.default.serviceName;\n }\n getType() {\n if (this.metadata) {\n return 'AWS::EC2::Instance';\n }\n // this will only happen if probe() is not called first\n return 'Unknown';\n }\n getLogGroupName() {\n return Configuration_1.default.logGroupName ? Configuration_1.default.logGroupName : `${this.getName()}-metrics`;\n }\n configureContext(context) {\n if (this.metadata) {\n context.setProperty('imageId', this.metadata.imageId);\n context.setProperty('instanceId', this.metadata.instanceId);\n context.setProperty('instanceType', this.metadata.instanceType);\n context.setProperty('privateIP', this.metadata.privateIp);\n context.setProperty('availabilityZone', this.metadata.availabilityZone);\n }\n }\n getSink() {\n if (!this.sink) {\n this.sink = new AgentSink_1.AgentSink(this.getLogGroupName(), Configuration_1.default.logStreamName);\n }\n return this.sink;\n }\n}\nexports.EC2Environment = EC2Environment;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LambdaEnvironment = void 0;\nconst ConsoleSink_1 = require(\"../sinks/ConsoleSink\");\nclass LambdaEnvironment {\n probe() {\n return Promise.resolve(process.env.AWS_LAMBDA_FUNCTION_NAME ? true : false);\n }\n getName() {\n return process.env.AWS_LAMBDA_FUNCTION_NAME || 'Unknown';\n }\n getType() {\n return 'AWS::Lambda::Function';\n }\n getLogGroupName() {\n return this.getName();\n }\n configureContext(context) {\n this.addProperty(context, 'executionEnvironment', process.env.AWS_EXECUTION_ENV);\n this.addProperty(context, 'memorySize', process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE);\n this.addProperty(context, 'functionVersion', process.env.AWS_LAMBDA_FUNCTION_VERSION);\n this.addProperty(context, 'logStreamId', process.env.AWS_LAMBDA_LOG_STREAM_NAME);\n const trace = this.getSampledTrace();\n if (trace) {\n this.addProperty(context, 'traceId', trace);\n }\n }\n getSink() {\n if (!this.sink) {\n this.sink = new ConsoleSink_1.ConsoleSink();\n }\n return this.sink;\n }\n addProperty(context, key, value) {\n if (value) {\n context.setProperty(key, value);\n }\n }\n getSampledTrace() {\n // only collect traces which have been sampled\n if (process.env._X_AMZN_TRACE_ID && process.env._X_AMZN_TRACE_ID.includes('Sampled=1')) {\n return process.env._X_AMZN_TRACE_ID;\n }\n }\n}\nexports.LambdaEnvironment = LambdaEnvironment;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LocalEnvironment = void 0;\nconst Configuration_1 = __importDefault(require(\"../config/Configuration\"));\nconst Logger_1 = require(\"../utils/Logger\");\nconst ConsoleSink_1 = require(\"../sinks/ConsoleSink\");\nclass LocalEnvironment {\n probe() {\n // probe is not intended to be used in the LocalEnvironment\n // To use the local environment you should set the environment\n // override\n return Promise.resolve(false);\n }\n getName() {\n if (!Configuration_1.default.serviceName) {\n (0, Logger_1.LOG)('Unknown ServiceName.');\n return 'Unknown';\n }\n return Configuration_1.default.serviceName;\n }\n getType() {\n if (!Configuration_1.default.serviceType) {\n (0, Logger_1.LOG)('Unknown ServiceType.');\n return 'Unknown';\n }\n return Configuration_1.default.serviceType;\n }\n getLogGroupName() {\n return Configuration_1.default.logGroupName ? Configuration_1.default.logGroupName : `${this.getName()}-metrics`;\n }\n configureContext() {\n // no-op\n }\n getSink() {\n if (!this.sink) {\n this.sink = new ConsoleSink_1.ConsoleSink();\n }\n return this.sink;\n }\n}\nexports.LocalEnvironment = LocalEnvironment;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cleanResolveEnvironment = exports.resolveEnvironment = void 0;\nconst Logger_1 = require(\"../utils/Logger\");\nconst DefaultEnvironment_1 = require(\"./DefaultEnvironment\");\nconst ECSEnvironment_1 = require(\"./ECSEnvironment\");\nconst EC2Environment_1 = require(\"./EC2Environment\");\nconst LambdaEnvironment_1 = require(\"./LambdaEnvironment\");\nconst Configuration_1 = __importDefault(require(\"../config/Configuration\"));\nconst Environments_1 = __importDefault(require(\"./Environments\"));\nconst LocalEnvironment_1 = require(\"./LocalEnvironment\");\nconst lambdaEnvironment = new LambdaEnvironment_1.LambdaEnvironment();\nconst ecsEnvironment = new ECSEnvironment_1.ECSEnvironment();\nconst ec2Environment = new EC2Environment_1.EC2Environment();\nconst defaultEnvironment = new DefaultEnvironment_1.DefaultEnvironment();\n// ordering of this array matters\n// both Lambda and ECS can be determined from environment variables\n// making the entire detection process fast an cheap\n// EC2 can only be determined by making a remote HTTP request\nconst environments = [lambdaEnvironment, ecsEnvironment, ec2Environment];\nlet environment = undefined;\nconst getEnvironmentFromOverride = () => {\n // short-circuit environment detection and use override\n switch (Configuration_1.default.environmentOverride) {\n case Environments_1.default.Agent:\n return defaultEnvironment;\n case Environments_1.default.EC2:\n return ec2Environment;\n case Environments_1.default.Lambda:\n return lambdaEnvironment;\n case Environments_1.default.ECS:\n return ecsEnvironment;\n case Environments_1.default.Local:\n return new LocalEnvironment_1.LocalEnvironment();\n case Environments_1.default.Unknown:\n default:\n return undefined;\n }\n};\nconst discoverEnvironment = () => __awaiter(void 0, void 0, void 0, function* () {\n (0, Logger_1.LOG)(`Discovering environment`);\n for (const envUnderTest of environments) {\n (0, Logger_1.LOG)(`Testing: ${envUnderTest.constructor.name}`);\n try {\n if (yield envUnderTest.probe()) {\n return envUnderTest;\n }\n }\n catch (e) {\n (0, Logger_1.LOG)(`Failed probe: ${envUnderTest.constructor.name}`);\n }\n }\n return defaultEnvironment;\n});\nconst _resolveEnvironment = () => __awaiter(void 0, void 0, void 0, function* () {\n (0, Logger_1.LOG)('Resolving environment');\n if (environment) {\n return environment;\n }\n if (Configuration_1.default.environmentOverride) {\n (0, Logger_1.LOG)('Environment override supplied', Configuration_1.default.environmentOverride);\n // this will be falsy if an invalid configuration value is provided\n environment = getEnvironmentFromOverride();\n if (environment) {\n return environment;\n }\n else {\n (0, Logger_1.LOG)('Invalid environment provided. Falling back to auto-discovery.', Configuration_1.default.environmentOverride);\n }\n }\n environment = yield discoverEnvironment(); // eslint-disable-line require-atomic-updates\n return environment;\n});\n// pro-actively begin resolving the environment\n// this will allow us to kick off any async tasks\n// at module load time to reduce any blocking that\n// may occur on the initial flush()\nconst environmentPromise = _resolveEnvironment();\nconst resolveEnvironment = () => __awaiter(void 0, void 0, void 0, function* () {\n return environmentPromise;\n});\nexports.resolveEnvironment = resolveEnvironment;\n// this method is used for testing to bypass the cached environmentPromise result\nconst cleanResolveEnvironment = () => __awaiter(void 0, void 0, void 0, function* () {\n yield environmentPromise;\n environment = undefined;\n return yield _resolveEnvironment();\n});\nexports.cleanResolveEnvironment = cleanResolveEnvironment;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createMetricsLogger = void 0;\nconst __1 = require(\"..\");\nconst EnvironmentDetector_1 = require(\"../environment/EnvironmentDetector\");\nconst MetricsContext_1 = require(\"./MetricsContext\");\nconst createMetricsLogger = () => {\n const context = MetricsContext_1.MetricsContext.empty();\n return new __1.MetricsLogger(EnvironmentDetector_1.resolveEnvironment, context);\n};\nexports.createMetricsLogger = createMetricsLogger;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.metricScope = void 0;\nconst Logger_1 = require(\"../utils/Logger\");\nconst MetricsLoggerFactory_1 = require(\"./MetricsLoggerFactory\");\n/**\n * An asynchronous wrapper that provides a metrics instance.\n */\nconst metricScope = (handler) => {\n const wrappedHandler = (...args) => __awaiter(void 0, void 0, void 0, function* () {\n const metrics = (0, MetricsLoggerFactory_1.createMetricsLogger)();\n try {\n return yield handler(metrics)(...args);\n }\n finally {\n try {\n yield metrics.flush();\n }\n catch (e) {\n (0, Logger_1.LOG)('Failed to flush metrics', e);\n }\n }\n });\n return wrappedHandler;\n};\nexports.metricScope = metricScope;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Configuration = exports.StorageResolution = exports.Unit = exports.createMetricsLogger = exports.metricScope = exports.AgentSink = exports.LocalSink = exports.MetricsLogger = void 0;\nvar MetricsLogger_1 = require(\"./logger/MetricsLogger\");\nObject.defineProperty(exports, \"MetricsLogger\", { enumerable: true, get: function () { return MetricsLogger_1.MetricsLogger; } });\nvar ConsoleSink_1 = require(\"./sinks/ConsoleSink\");\nObject.defineProperty(exports, \"LocalSink\", { enumerable: true, get: function () { return ConsoleSink_1.ConsoleSink; } });\nvar AgentSink_1 = require(\"./sinks/AgentSink\");\nObject.defineProperty(exports, \"AgentSink\", { enumerable: true, get: function () { return AgentSink_1.AgentSink; } });\nvar MetricScope_1 = require(\"./logger/MetricScope\");\nObject.defineProperty(exports, \"metricScope\", { enumerable: true, get: function () { return MetricScope_1.metricScope; } });\nvar MetricsLoggerFactory_1 = require(\"./logger/MetricsLoggerFactory\");\nObject.defineProperty(exports, \"createMetricsLogger\", { enumerable: true, get: function () { return MetricsLoggerFactory_1.createMetricsLogger; } });\nvar Unit_1 = require(\"./logger/Unit\");\nObject.defineProperty(exports, \"Unit\", { enumerable: true, get: function () { return Unit_1.Unit; } });\nvar StorageResolution_1 = require(\"./logger/StorageResolution\");\nObject.defineProperty(exports, \"StorageResolution\", { enumerable: true, get: function () { return StorageResolution_1.StorageResolution; } });\nconst Configuration_1 = __importDefault(require(\"./config/Configuration\"));\nexports.Configuration = Configuration_1.default;\n", "// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n", "const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n", "const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCE', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n", "// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n", "const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n", "const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n", "const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n", "const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n", "const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n", "const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n", "const parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // Otherwise it can be determined by checking the high version\n\n if (highVersion.patch) {\n // anything higher than a patch bump would result in the wrong version\n return 'patch'\n }\n\n if (highVersion.minor) {\n // anything higher than a minor bump would result in the wrong version\n return 'minor'\n }\n\n // bumping major/minor/patch all have same result\n return 'major'\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n", "const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n", "const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n", "const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n", "const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n", "const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n", "const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n", "const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n", "const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n", "const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n", "const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n", "const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", "const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n", "const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n", "const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n", "const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n", "const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n", "const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n", "const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n let next\n while ((next = re[t.COERCERTL].exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n re[t.COERCERTL].lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)\n}\nmodule.exports = coerce\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n", "// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.format()\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range\n .trim()\n .split(/\\s+/)\n .join(' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => comps.join(' ').trim())\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n", "const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n", "const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n", "const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n", "const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n", "const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n", "// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n", "const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n", "const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n", "// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n", "const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n", "// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n", "'use strict'\n\nfunction isFunction (funktion) {\n return typeof funktion === 'function'\n}\n\n// Default to complaining loudly when things don't go according to plan.\nvar logger = console.error.bind(console)\n\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty (obj, name, value) {\n var enumerable = !!obj[name] && obj.propertyIsEnumerable(name)\n Object.defineProperty(obj, name, {\n configurable: true,\n enumerable: enumerable,\n writable: true,\n value: value\n })\n}\n\n// Keep initialization idempotent.\nfunction shimmer (options) {\n if (options && options.logger) {\n if (!isFunction(options.logger)) logger(\"new logger isn't a function, not replacing\")\n else logger = options.logger\n }\n}\n\nfunction wrap (nodule, name, wrapper) {\n if (!nodule || !nodule[name]) {\n logger('no original function ' + name + ' to wrap')\n return\n }\n\n if (!wrapper) {\n logger('no wrapper function')\n logger((new Error()).stack)\n return\n }\n\n if (!isFunction(nodule[name]) || !isFunction(wrapper)) {\n logger('original object and wrapper must be functions')\n return\n }\n\n var original = nodule[name]\n var wrapped = wrapper(original, name)\n\n defineProperty(wrapped, '__original', original)\n defineProperty(wrapped, '__unwrap', function () {\n if (nodule[name] === wrapped) defineProperty(nodule, name, original)\n })\n defineProperty(wrapped, '__wrapped', true)\n\n defineProperty(nodule, name, wrapped)\n return wrapped\n}\n\nfunction massWrap (nodules, names, wrapper) {\n if (!nodules) {\n logger('must provide one or more modules to patch')\n logger((new Error()).stack)\n return\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules]\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to wrap on modules')\n return\n }\n\n nodules.forEach(function (nodule) {\n names.forEach(function (name) {\n wrap(nodule, name, wrapper)\n })\n })\n}\n\nfunction unwrap (nodule, name) {\n if (!nodule || !nodule[name]) {\n logger('no function to unwrap.')\n logger((new Error()).stack)\n return\n }\n\n if (!nodule[name].__unwrap) {\n logger('no original to unwrap to -- has ' + name + ' already been unwrapped?')\n } else {\n return nodule[name].__unwrap()\n }\n}\n\nfunction massUnwrap (nodules, names) {\n if (!nodules) {\n logger('must provide one or more modules to patch')\n logger((new Error()).stack)\n return\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules]\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to unwrap on modules')\n return\n }\n\n nodules.forEach(function (nodule) {\n names.forEach(function (name) {\n unwrap(nodule, name)\n })\n })\n}\n\nshimmer.wrap = wrap\nshimmer.massWrap = massWrap\nshimmer.unwrap = unwrap\nshimmer.massUnwrap = massUnwrap\n\nmodule.exports = shimmer\n", "'use strict';\n\nvar shimmer = require('shimmer');\nvar wrap = shimmer.wrap;\nvar unwrap = shimmer.unwrap;\n\n// Default to complaining loudly when things don't go according to plan.\n// dunderscores are boring\nvar SYMBOL = 'wrap@before';\n\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty(obj, name, value) {\n var enumerable = !!obj[name] && obj.propertyIsEnumerable(name);\n Object.defineProperty(obj, name, {\n configurable: true,\n enumerable: enumerable,\n writable: true,\n value: value\n });\n}\n\nfunction _process(self, listeners) {\n var l = listeners.length;\n for (var p = 0; p < l; p++) {\n var listener = listeners[p];\n // set up the listener so that onEmit can do whatever it needs\n var before = self[SYMBOL];\n if (typeof before === 'function') {\n before(listener);\n }\n else if (Array.isArray(before)) {\n var length = before.length;\n for (var i = 0; i < length; i++) before[i](listener);\n }\n }\n}\n\nfunction _listeners(self, event) {\n var listeners;\n listeners = self._events && self._events[event];\n if (!Array.isArray(listeners)) {\n if (listeners) {\n listeners = [listeners];\n }\n else {\n listeners = [];\n }\n }\n\n return listeners;\n}\n\nfunction _findAndProcess(self, event, before) {\n var after = _listeners(self, event);\n var unprocessed = after.filter(function(fn) { return before.indexOf(fn) === -1; });\n if (unprocessed.length > 0) _process(self, unprocessed);\n}\n\nfunction _wrap(unwrapped, visit) {\n if (!unwrapped) return;\n\n var wrapped = unwrapped;\n if (typeof unwrapped === 'function') {\n wrapped = visit(unwrapped);\n }\n else if (Array.isArray(unwrapped)) {\n wrapped = [];\n for (var i = 0; i < unwrapped.length; i++) {\n wrapped[i] = visit(unwrapped[i]);\n }\n }\n return wrapped;\n}\n\nmodule.exports = function wrapEmitter(emitter, onAddListener, onEmit) {\n if (!emitter || !emitter.on || !emitter.addListener ||\n !emitter.removeListener || !emitter.emit) {\n throw new Error(\"can only wrap real EEs\");\n }\n\n if (!onAddListener) throw new Error(\"must have function to run on listener addition\");\n if (!onEmit) throw new Error(\"must have function to wrap listeners when emitting\");\n\n /* Attach a context to a listener, and make sure that this hook stays\n * attached to the emitter forevermore.\n */\n function adding(on) {\n return function added(event, listener) {\n var existing = _listeners(this, event).slice();\n\n try {\n var returned = on.call(this, event, listener);\n _findAndProcess(this, event, existing);\n return returned;\n }\n finally {\n // old-style streaming overwrites .on and .addListener, so rewrap\n if (!this.on.__wrapped) wrap(this, 'on', adding);\n if (!this.addListener.__wrapped) wrap(this, 'addListener', adding);\n }\n };\n }\n\n function emitting(emit) {\n return function emitted(event) {\n if (!this._events || !this._events[event]) return emit.apply(this, arguments);\n\n var unwrapped = this._events[event];\n\n /* Ensure that if removeListener gets called, it's working with the\n * unwrapped listeners.\n */\n function remover(removeListener) {\n return function removed() {\n this._events[event] = unwrapped;\n try {\n return removeListener.apply(this, arguments);\n }\n finally {\n unwrapped = this._events[event];\n this._events[event] = _wrap(unwrapped, onEmit);\n }\n };\n }\n wrap(this, 'removeListener', remover);\n\n try {\n /* At emit time, ensure that whatever else is going on, removeListener will\n * still work while at the same time running whatever hooks are necessary to\n * make sure the listener is run in the correct context.\n */\n this._events[event] = _wrap(unwrapped, onEmit);\n return emit.apply(this, arguments);\n }\n finally {\n /* Ensure that regardless of what happens when preparing and running the\n * listeners, the status quo ante is restored before continuing.\n */\n unwrap(this, 'removeListener');\n this._events[event] = unwrapped;\n }\n };\n }\n\n // support multiple onAddListeners\n if (!emitter[SYMBOL]) {\n defineProperty(emitter, SYMBOL, onAddListener);\n }\n else if (typeof emitter[SYMBOL] === 'function') {\n defineProperty(emitter, SYMBOL, [emitter[SYMBOL], onAddListener]);\n }\n else if (Array.isArray(emitter[SYMBOL])) {\n emitter[SYMBOL].push(onAddListener);\n }\n\n // only wrap the core functions once\n if (!emitter.__wrapped) {\n wrap(emitter, 'addListener', adding);\n wrap(emitter, 'on', adding);\n wrap(emitter, 'emit', emitting);\n\n defineProperty(emitter, '__unwrap', function () {\n unwrap(emitter, 'addListener');\n unwrap(emitter, 'on');\n unwrap(emitter, 'emit');\n delete emitter[SYMBOL];\n delete emitter.__wrapped;\n });\n defineProperty(emitter, '__wrapped', true);\n }\n};\n", "/* eslint-disable max-len */\n'use strict';\n\nconst util = require('util');\nconst assert = require('assert');\nconst wrapEmitter = require('emitter-listener');\nconst async_hooks = require('async_hooks');\n\nconst CONTEXTS_SYMBOL = 'cls@contexts';\nconst ERROR_SYMBOL = 'error@context';\n\nconst DEBUG_CLS_HOOKED = process.env.DEBUG_CLS_HOOKED;\n\nlet currentUid = -1;\n\nmodule.exports = {\n getNamespace: getNamespace,\n createNamespace: createNamespace,\n destroyNamespace: destroyNamespace,\n reset: reset,\n ERROR_SYMBOL: ERROR_SYMBOL\n};\n\nfunction Namespace(name) {\n this.name = name;\n // changed in 2.7: no default context\n this.active = null;\n this._set = [];\n this.id = null;\n this._contexts = new Map();\n this._indent = 0;\n}\n\nNamespace.prototype.set = function set(key, value) {\n if (!this.active) {\n throw new Error('No context available. ns.run() or ns.bind() must be called first.');\n }\n\n this.active[key] = value;\n\n if (DEBUG_CLS_HOOKED) {\n const indentStr = ' '.repeat(this._indent < 0 ? 0 : this._indent);\n debug2(indentStr + 'CONTEXT-SET KEY:' + key + '=' + value + ' in ns:' + this.name + ' currentUid:' + currentUid + ' active:' + util.inspect(this.active, {showHidden:true, depth:2, colors:true}));\n }\n\n return value;\n};\n\nNamespace.prototype.get = function get(key) {\n if (!this.active) {\n if (DEBUG_CLS_HOOKED) {\n const asyncHooksCurrentId = async_hooks.currentId();\n const triggerId = async_hooks.triggerAsyncId();\n const indentStr = ' '.repeat(this._indent < 0 ? 0 : this._indent);\n //debug2(indentStr + 'CONTEXT-GETTING KEY NO ACTIVE NS:' + key + '=undefined' + ' (' + this.name + ') currentUid:' + currentUid + ' active:' + util.inspect(this.active, {showHidden:true, depth:2, colors:true}));\n debug2(`${indentStr}CONTEXT-GETTING KEY NO ACTIVE NS: (${this.name}) ${key}=undefined currentUid:${currentUid} asyncHooksCurrentId:${asyncHooksCurrentId} triggerId:${triggerId} len:${this._set.length}`);\n }\n return undefined;\n }\n if (DEBUG_CLS_HOOKED) {\n const asyncHooksCurrentId = async_hooks.executionAsyncId();\n const triggerId = async_hooks.triggerAsyncId();\n const indentStr = ' '.repeat(this._indent < 0 ? 0 : this._indent);\n debug2(indentStr + 'CONTEXT-GETTING KEY:' + key + '=' + this.active[key] + ' (' + this.name + ') currentUid:' + currentUid + ' active:' + util.inspect(this.active, {showHidden:true, depth:2, colors:true}));\n debug2(`${indentStr}CONTEXT-GETTING KEY: (${this.name}) ${key}=${this.active[key]} currentUid:${currentUid} asyncHooksCurrentId:${asyncHooksCurrentId} triggerId:${triggerId} len:${this._set.length} active:${util.inspect(this.active)}`);\n }\n return this.active[key];\n};\n\nNamespace.prototype.createContext = function createContext() {\n // Prototype inherit existing context if created a new child context within existing context.\n let context = Object.create(this.active ? this.active : Object.prototype);\n context._ns_name = this.name;\n context.id = currentUid;\n\n if (DEBUG_CLS_HOOKED) {\n const asyncHooksCurrentId = async_hooks.executionAsyncId();\n const triggerId = async_hooks.triggerAsyncId();\n const indentStr = ' '.repeat(this._indent < 0 ? 0 : this._indent);\n debug2(`${indentStr}CONTEXT-CREATED Context: (${this.name}) currentUid:${currentUid} asyncHooksCurrentId:${asyncHooksCurrentId} triggerId:${triggerId} len:${this._set.length} context:${util.inspect(context, {showHidden:true, depth:2, colors:true})}`);\n }\n\n return context;\n};\n\nNamespace.prototype.run = function run(fn) {\n let context = this.createContext();\n this.enter(context);\n\n try {\n if (DEBUG_CLS_HOOKED) {\n const triggerId = async_hooks.triggerAsyncId();\n const asyncHooksCurrentId = async_hooks.executionAsyncId();\n const indentStr = ' '.repeat(this._indent < 0 ? 0 : this._indent);\n debug2(`${indentStr}CONTEXT-RUN BEGIN: (${this.name}) currentUid:${currentUid} triggerId:${triggerId} asyncHooksCurrentId:${asyncHooksCurrentId} len:${this._set.length} context:${util.inspect(context)}`);\n }\n fn(context);\n return context;\n } catch (exception) {\n if (exception) {\n exception[ERROR_SYMBOL] = context;\n }\n throw exception;\n } finally {\n if (DEBUG_CLS_HOOKED) {\n const triggerId = async_hooks.triggerAsyncId();\n const asyncHooksCurrentId = async_hooks.executionAsyncId();\n const indentStr = ' '.repeat(this._indent < 0 ? 0 : this._indent);\n debug2(`${indentStr}CONTEXT-RUN END: (${this.name}) currentUid:${currentUid} triggerId:${triggerId} asyncHooksCurrentId:${asyncHooksCurrentId} len:${this._set.length} ${util.inspect(context)}`);\n }\n this.exit(context);\n }\n};\n\nNamespace.prototype.runAndReturn = function runAndReturn(fn) {\n let value;\n this.run(function (context) {\n value = fn(context);\n });\n return value;\n};\n\n/**\n * Uses global Promise and assumes Promise is cls friendly or wrapped already.\n * @param {function} fn\n * @returns {*}\n */\nNamespace.prototype.runPromise = function runPromise(fn) {\n let context = this.createContext();\n this.enter(context);\n\n let promise = fn(context);\n if (!promise || !promise.then || !promise.catch) {\n throw new Error('fn must return a promise.');\n }\n\n if (DEBUG_CLS_HOOKED) {\n debug2('CONTEXT-runPromise BEFORE: (' + this.name + ') currentUid:' + currentUid + ' len:' + this._set.length + ' ' + util.inspect(context));\n }\n\n return promise\n .then(result => {\n if (DEBUG_CLS_HOOKED) {\n debug2('CONTEXT-runPromise AFTER then: (' + this.name + ') currentUid:' + currentUid + ' len:' + this._set.length + ' ' + util.inspect(context));\n }\n this.exit(context);\n return result;\n })\n .catch(err => {\n err[ERROR_SYMBOL] = context;\n if (DEBUG_CLS_HOOKED) {\n debug2('CONTEXT-runPromise AFTER catch: (' + this.name + ') currentUid:' + currentUid + ' len:' + this._set.length + ' ' + util.inspect(context));\n }\n this.exit(context);\n throw err;\n });\n};\n\nNamespace.prototype.bind = function bindFactory(fn, context) {\n if (!context) {\n if (!this.active) {\n context = this.createContext();\n } else {\n context = this.active;\n }\n }\n\n let self = this;\n return function clsBind() {\n self.enter(context);\n try {\n return fn.apply(this, arguments);\n } catch (exception) {\n if (exception) {\n exception[ERROR_SYMBOL] = context;\n }\n throw exception;\n } finally {\n self.exit(context);\n }\n };\n};\n\nNamespace.prototype.enter = function enter(context) {\n assert.ok(context, 'context must be provided for entering');\n if (DEBUG_CLS_HOOKED) {\n const asyncHooksCurrentId = async_hooks.executionAsyncId();\n const triggerId = async_hooks.triggerAsyncId();\n const indentStr = ' '.repeat(this._indent < 0 ? 0 : this._indent);\n debug2(`${indentStr}CONTEXT-ENTER: (${this.name}) currentUid:${currentUid} triggerId:${triggerId} asyncHooksCurrentId:${asyncHooksCurrentId} len:${this._set.length} ${util.inspect(context)}`);\n }\n\n this._set.push(this.active);\n this.active = context;\n};\n\nNamespace.prototype.exit = function exit(context) {\n assert.ok(context, 'context must be provided for exiting');\n if (DEBUG_CLS_HOOKED) {\n const asyncHooksCurrentId = async_hooks.executionAsyncId();\n const triggerId = async_hooks.triggerAsyncId();\n const indentStr = ' '.repeat(this._indent < 0 ? 0 : this._indent);\n debug2(`${indentStr}CONTEXT-EXIT: (${this.name}) currentUid:${currentUid} triggerId:${triggerId} asyncHooksCurrentId:${asyncHooksCurrentId} len:${this._set.length} ${util.inspect(context)}`);\n }\n\n // Fast path for most exits that are at the top of the stack\n if (this.active === context) {\n assert.ok(this._set.length, 'can\\'t remove top context');\n this.active = this._set.pop();\n return;\n }\n\n // Fast search in the stack using lastIndexOf\n let index = this._set.lastIndexOf(context);\n\n if (index < 0) {\n if (DEBUG_CLS_HOOKED) {\n debug2('??ERROR?? context exiting but not entered - ignoring: ' + util.inspect(context));\n }\n assert.ok(index >= 0, 'context not currently entered; can\\'t exit. \\n' + util.inspect(this) + '\\n' + util.inspect(context));\n } else {\n assert.ok(index, 'can\\'t remove top context');\n this._set.splice(index, 1);\n }\n};\n\nNamespace.prototype.bindEmitter = function bindEmitter(emitter) {\n assert.ok(emitter.on && emitter.addListener && emitter.emit, 'can only bind real EEs');\n\n let namespace = this;\n let thisSymbol = 'context@' + this.name;\n\n // Capture the context active at the time the emitter is bound.\n function attach(listener) {\n if (!listener) {\n return;\n }\n if (!listener[CONTEXTS_SYMBOL]) {\n listener[CONTEXTS_SYMBOL] = Object.create(null);\n }\n\n listener[CONTEXTS_SYMBOL][thisSymbol] = {\n namespace: namespace,\n context: namespace.active\n };\n }\n\n // At emit time, bind the listener within the correct context.\n function bind(unwrapped) {\n if (!(unwrapped && unwrapped[CONTEXTS_SYMBOL])) {\n return unwrapped;\n }\n\n let wrapped = unwrapped;\n let unwrappedContexts = unwrapped[CONTEXTS_SYMBOL];\n Object.keys(unwrappedContexts).forEach(function (name) {\n let thunk = unwrappedContexts[name];\n wrapped = thunk.namespace.bind(wrapped, thunk.context);\n });\n return wrapped;\n }\n\n wrapEmitter(emitter, attach, bind);\n};\n\n/**\n * If an error comes out of a namespace, it will have a context attached to it.\n * This function knows how to find it.\n *\n * @param {Error} exception Possibly annotated error.\n */\nNamespace.prototype.fromException = function fromException(exception) {\n return exception[ERROR_SYMBOL];\n};\n\nfunction getNamespace(name) {\n return process.namespaces[name];\n}\n\nfunction createNamespace(name) {\n assert.ok(name, 'namespace must be given a name.');\n\n if (DEBUG_CLS_HOOKED) {\n debug2(`NS-CREATING NAMESPACE (${name})`);\n }\n let namespace = new Namespace(name);\n namespace.id = currentUid;\n\n const hook = async_hooks.createHook({\n init(asyncId, type, triggerId, resource) {\n currentUid = async_hooks.executionAsyncId();\n\n //CHAIN Parent's Context onto child if none exists. This is needed to pass net-events.spec\n // let initContext = namespace.active;\n // if(!initContext && triggerId) {\n // let parentContext = namespace._contexts.get(triggerId);\n // if (parentContext) {\n // namespace.active = parentContext;\n // namespace._contexts.set(currentUid, parentContext);\n // if (DEBUG_CLS_HOOKED) {\n // const indentStr = ' '.repeat(namespace._indent < 0 ? 0 : namespace._indent);\n // debug2(`${indentStr}INIT [${type}] (${name}) WITH PARENT CONTEXT asyncId:${asyncId} currentUid:${currentUid} triggerId:${triggerId} active:${util.inspect(namespace.active, true)} resource:${resource}`);\n // }\n // } else if (DEBUG_CLS_HOOKED) {\n // const indentStr = ' '.repeat(namespace._indent < 0 ? 0 : namespace._indent);\n // debug2(`${indentStr}INIT [${type}] (${name}) MISSING CONTEXT asyncId:${asyncId} currentUid:${currentUid} triggerId:${triggerId} active:${util.inspect(namespace.active, true)} resource:${resource}`);\n // }\n // }else {\n // namespace._contexts.set(currentUid, namespace.active);\n // if (DEBUG_CLS_HOOKED) {\n // const indentStr = ' '.repeat(namespace._indent < 0 ? 0 : namespace._indent);\n // debug2(`${indentStr}INIT [${type}] (${name}) asyncId:${asyncId} currentUid:${currentUid} triggerId:${triggerId} active:${util.inspect(namespace.active, true)} resource:${resource}`);\n // }\n // }\n if(namespace.active) {\n namespace._contexts.set(asyncId, namespace.active);\n\n if (DEBUG_CLS_HOOKED) {\n const indentStr = ' '.repeat(namespace._indent < 0 ? 0 : namespace._indent);\n debug2(`${indentStr}INIT [${type}] (${name}) asyncId:${asyncId} currentUid:${currentUid} triggerId:${triggerId} active:${util.inspect(namespace.active, {showHidden:true, depth:2, colors:true})} resource:${resource}`);\n }\n }else if(currentUid === 0){\n // CurrentId will be 0 when triggered from C++. Promise events\n // https://github.com/nodejs/node/blob/master/doc/api/async_hooks.md#triggerid\n const triggerId = async_hooks.triggerAsyncId();\n const triggerIdContext = namespace._contexts.get(triggerId);\n if (triggerIdContext) {\n namespace._contexts.set(asyncId, triggerIdContext);\n if (DEBUG_CLS_HOOKED) {\n const indentStr = ' '.repeat(namespace._indent < 0 ? 0 : namespace._indent);\n debug2(`${indentStr}INIT USING CONTEXT FROM TRIGGERID [${type}] (${name}) asyncId:${asyncId} currentUid:${currentUid} triggerId:${triggerId} active:${util.inspect(namespace.active, { showHidden: true, depth: 2, colors: true })} resource:${resource}`);\n }\n } else if (DEBUG_CLS_HOOKED) {\n const indentStr = ' '.repeat(namespace._indent < 0 ? 0 : namespace._indent);\n debug2(`${indentStr}INIT MISSING CONTEXT [${type}] (${name}) asyncId:${asyncId} currentUid:${currentUid} triggerId:${triggerId} active:${util.inspect(namespace.active, { showHidden: true, depth: 2, colors: true })} resource:${resource}`);\n }\n }\n\n\n if(DEBUG_CLS_HOOKED && type === 'PROMISE'){\n debug2(util.inspect(resource, {showHidden: true}));\n const parentId = resource.parentId;\n const indentStr = ' '.repeat(namespace._indent < 0 ? 0 : namespace._indent);\n debug2(`${indentStr}INIT RESOURCE-PROMISE [${type}] (${name}) parentId:${parentId} asyncId:${asyncId} currentUid:${currentUid} triggerId:${triggerId} active:${util.inspect(namespace.active, {showHidden:true, depth:2, colors:true})} resource:${resource}`);\n }\n\n },\n before(asyncId) {\n currentUid = async_hooks.executionAsyncId();\n let context;\n\n /*\n if(currentUid === 0){\n // CurrentId will be 0 when triggered from C++. Promise events\n // https://github.com/nodejs/node/blob/master/doc/api/async_hooks.md#triggerid\n //const triggerId = async_hooks.triggerAsyncId();\n context = namespace._contexts.get(asyncId); // || namespace._contexts.get(triggerId);\n }else{\n context = namespace._contexts.get(currentUid);\n }\n */\n\n //HACK to work with promises until they are fixed in node > 8.1.1\n context = namespace._contexts.get(asyncId) || namespace._contexts.get(currentUid);\n\n if (context) {\n if (DEBUG_CLS_HOOKED) {\n const triggerId = async_hooks.triggerAsyncId();\n const indentStr = ' '.repeat(namespace._indent < 0 ? 0 : namespace._indent);\n debug2(`${indentStr}BEFORE (${name}) asyncId:${asyncId} currentUid:${currentUid} triggerId:${triggerId} active:${util.inspect(namespace.active, {showHidden:true, depth:2, colors:true})} context:${util.inspect(context)}`);\n namespace._indent += 2;\n }\n\n namespace.enter(context);\n\n } else if (DEBUG_CLS_HOOKED) {\n const triggerId = async_hooks.triggerAsyncId();\n const indentStr = ' '.repeat(namespace._indent < 0 ? 0 : namespace._indent);\n debug2(`${indentStr}BEFORE MISSING CONTEXT (${name}) asyncId:${asyncId} currentUid:${currentUid} triggerId:${triggerId} active:${util.inspect(namespace.active, {showHidden:true, depth:2, colors:true})} namespace._contexts:${util.inspect(namespace._contexts, {showHidden:true, depth:2, colors:true})}`);\n namespace._indent += 2;\n }\n },\n after(asyncId) {\n currentUid = async_hooks.executionAsyncId();\n let context; // = namespace._contexts.get(currentUid);\n /*\n if(currentUid === 0){\n // CurrentId will be 0 when triggered from C++. Promise events\n // https://github.com/nodejs/node/blob/master/doc/api/async_hooks.md#triggerid\n //const triggerId = async_hooks.triggerAsyncId();\n context = namespace._contexts.get(asyncId); // || namespace._contexts.get(triggerId);\n }else{\n context = namespace._contexts.get(currentUid);\n }\n */\n //HACK to work with promises until they are fixed in node > 8.1.1\n context = namespace._contexts.get(asyncId) || namespace._contexts.get(currentUid);\n\n if (context) {\n if (DEBUG_CLS_HOOKED) {\n const triggerId = async_hooks.triggerAsyncId();\n namespace._indent -= 2;\n const indentStr = ' '.repeat(namespace._indent < 0 ? 0 : namespace._indent);\n debug2(`${indentStr}AFTER (${name}) asyncId:${asyncId} currentUid:${currentUid} triggerId:${triggerId} active:${util.inspect(namespace.active, {showHidden:true, depth:2, colors:true})} context:${util.inspect(context)}`);\n }\n\n namespace.exit(context);\n\n } else if (DEBUG_CLS_HOOKED) {\n const triggerId = async_hooks.triggerAsyncId();\n namespace._indent -= 2;\n const indentStr = ' '.repeat(namespace._indent < 0 ? 0 : namespace._indent);\n debug2(`${indentStr}AFTER MISSING CONTEXT (${name}) asyncId:${asyncId} currentUid:${currentUid} triggerId:${triggerId} active:${util.inspect(namespace.active, {showHidden:true, depth:2, colors:true})} context:${util.inspect(context)}`);\n }\n },\n destroy(asyncId) {\n currentUid = async_hooks.executionAsyncId();\n if (DEBUG_CLS_HOOKED) {\n const triggerId = async_hooks.triggerAsyncId();\n const indentStr = ' '.repeat(namespace._indent < 0 ? 0 : namespace._indent);\n debug2(`${indentStr}DESTROY (${name}) currentUid:${currentUid} asyncId:${asyncId} triggerId:${triggerId} active:${util.inspect(namespace.active, {showHidden:true, depth:2, colors:true})} context:${util.inspect(namespace._contexts.get(currentUid))}`);\n }\n\n namespace._contexts.delete(asyncId);\n }\n });\n\n hook.enable();\n\n process.namespaces[name] = namespace;\n return namespace;\n}\n\nfunction destroyNamespace(name) {\n let namespace = getNamespace(name);\n\n assert.ok(namespace, 'can\\'t delete nonexistent namespace! \"' + name + '\"');\n assert.ok(namespace.id, 'don\\'t assign to process.namespaces directly! ' + util.inspect(namespace));\n\n process.namespaces[name] = null;\n}\n\nfunction reset() {\n // must unregister async listeners\n if (process.namespaces) {\n Object.keys(process.namespaces).forEach(function (name) {\n destroyNamespace(name);\n });\n }\n process.namespaces = Object.create(null);\n}\n\nprocess.namespaces = {};\n\n//const fs = require('fs');\nfunction debug2(...args) {\n if (DEBUG_CLS_HOOKED) {\n //fs.writeSync(1, `${util.format(...args)}\\n`);\n process._rawDebug(`${util.format(...args)}`);\n }\n}\n\n/*function getFunctionName(fn) {\n if (!fn) {\n return fn;\n }\n if (typeof fn === 'function') {\n if (fn.name) {\n return fn.name;\n }\n return (fn.toString().trim().match(/^function\\s*([^\\s(]+)/) || [])[1];\n } else if (fn.constructor && fn.constructor.name) {\n return fn.constructor.name;\n }\n}*/\n\n\n", "\"use strict\";\nvar validLogLevels = ['debug', 'info', 'warn', 'error', 'silent'];\nvar defaultLogLevel = validLogLevels.indexOf('error');\nvar logLevel = calculateLogLevel(process.env.AWS_XRAY_DEBUG_MODE ? 'debug' : process.env.AWS_XRAY_LOG_LEVEL);\nvar logger = {\n error: createLoggerForLevel('error'),\n info: createLoggerForLevel('info'),\n warn: createLoggerForLevel('warn'),\n debug: createLoggerForLevel('debug'),\n};\nfunction createLoggerForLevel(level) {\n var loggerLevel = validLogLevels.indexOf(level);\n var consoleMethod = console[level] || console.log || (() => { });\n if (loggerLevel >= logLevel) {\n return (message, meta) => {\n if (message || meta) {\n consoleMethod(formatLogMessage(level, message, meta));\n }\n };\n }\n else {\n return () => { };\n }\n}\nfunction calculateLogLevel(level) {\n if (level) {\n var normalisedLevel = level.toLowerCase();\n var index = validLogLevels.indexOf(normalisedLevel);\n return index >= 0 ? index : defaultLogLevel;\n }\n // Silently ignore invalid log levels, default to default level\n return defaultLogLevel;\n}\nfunction createTimestamp(date) {\n var tzo = -date.getTimezoneOffset(), // Negate to make this tzo = local - UTC\n dif = tzo >= 0 ? '+' : '-', pad = function (num) {\n var norm = Math.floor(Math.abs(num));\n return (norm < 10 ? '0' : '') + norm;\n };\n return new Date(date.getTime() + (tzo * 60 * 1000)).toISOString()\n .replace(/T/, ' ')\n .replace(/Z/, ' ') +\n dif + pad(tzo / 60) +\n ':' + pad(tzo % 60);\n}\nfunction isLambdaFunction() {\n return process.env.LAMBDA_TASK_ROOT !== undefined;\n}\nfunction formatLogMessage(level, message, meta) {\n var messageParts = [];\n if (!isLambdaFunction()) {\n messageParts.push(createTimestamp(new Date()));\n messageParts.push(`[${level.toUpperCase()}]`);\n }\n if (message) {\n messageParts.push(message);\n }\n var logString = messageParts.join(' ');\n var metaDataString = formatMetaData(meta);\n return [logString, metaDataString].filter(str => str.length > 0).join('\\n ');\n}\nfunction formatMetaData(meta) {\n if (!meta) {\n return '';\n }\n return ((typeof (meta) === 'string') ? meta : JSON.stringify(meta));\n}\nvar logging = {\n setLogger: function setLogger(logObj) {\n logger = logObj;\n },\n getLogger: function getLogger() {\n return logger;\n }\n};\nmodule.exports = logging;\n", "\"use strict\";\nconst crypto = require('crypto');\n/**\n * Represents a captured exception.\n * @constructor\n * @param {Exception} err - The exception to capture.\n * @param {boolean} [remote] - Flag for whether the error was remote.\n */\nfunction CapturedException(err, remote) {\n this.init(err, remote);\n}\nCapturedException.prototype.init = function init(err, remote) {\n var e = (typeof err === 'string' || err instanceof String) ? { message: err, name: '' } : err;\n this.message = e.message;\n this.type = e.name;\n this.stack = [];\n this.remote = !!remote;\n this.id = crypto.randomBytes(8).toString('hex');\n if (e.stack) {\n var stack = e.stack.split('\\n');\n stack.shift();\n stack.forEach((stackline) => {\n var line = stackline.trim().replace(/\\(|\\)/g, '');\n line = line.substring(line.indexOf(' ') + 1);\n var label = line.lastIndexOf(' ') >= 0 ? line.slice(0, line.lastIndexOf(' ')) : null;\n var path = Array.isArray(label) && !label.length ? line : line.slice(line.lastIndexOf(' ') + 1);\n path = path.split(':');\n var entry = {\n path: path[0],\n line: parseInt(path[1]),\n label: label || 'anonymous'\n };\n this.stack.push(entry);\n }, this);\n }\n};\nmodule.exports = CapturedException;\n", "module.exports = batcher\n\nfunction batcher (run) {\n var running = false\n var pendingBatch = null\n var pendingCallbacks = null\n var callbacks = null\n\n return append\n\n function done (err) {\n if (callbacks) callAll(callbacks, err)\n\n running = false\n callbacks = pendingCallbacks\n var nextBatch = pendingBatch\n\n pendingBatch = null\n pendingCallbacks = null\n\n if (!nextBatch || !nextBatch.length) {\n if (!callbacks || !callbacks.length) {\n callbacks = null\n return\n }\n if (!nextBatch) nextBatch = []\n }\n\n running = true\n run(nextBatch, done)\n }\n\n function append (val, cb) {\n if (running) {\n if (!pendingBatch) {\n pendingBatch = []\n pendingCallbacks = []\n }\n pushAll(pendingBatch, val)\n if (cb) pendingCallbacks.push(cb)\n } else {\n if (cb) callbacks = [cb]\n running = true\n run(Array.isArray(val) ? val : [val], done)\n }\n }\n}\n\nfunction pushAll (list, val) {\n if (Array.isArray(val)) pushArray(list, val)\n else list.push(val)\n}\n\nfunction pushArray (list, val) {\n for (var i = 0; i < val.length; i++) list.push(val[i])\n}\n\nfunction callAll (list, err) {\n for (var i = 0; i < list.length; i++) list[i](err)\n}\n", "\"use strict\";\nvar logger = require('./logger');\n/**\n * A module representing the X-Ray daemon configuration including the udp and tcp addresses.\n * @module DaemonConfig\n */\nvar DaemonConfig = {\n udp_ip: '127.0.0.1',\n udp_port: 2000,\n tcp_ip: '127.0.0.1',\n tcp_port: 2000,\n setDaemonAddress: function setDaemonAddress(address) {\n if (!process.env.AWS_XRAY_DAEMON_ADDRESS) {\n processAddress(address);\n logger.getLogger().info('Configured daemon address to ' + address + '.');\n }\n else {\n logger.getLogger().warn('Ignoring call to setDaemonAddress as AWS_XRAY_DAEMON_ADDRESS is set. ' +\n 'The current daemon address will not be changed.');\n }\n }\n};\nvar processAddress = function processAddress(address) {\n if (address.indexOf(':') === -1) {\n throw new Error('Invalid Daemon Address. You must specify an ip and port.');\n }\n else {\n var splitAddress = address.split(' ');\n if (splitAddress.length === 1) {\n // in format of 127.0.0.1:2000\n if (address.indexOf('udp') > -1 || address.indexOf('tcp') > -1) {\n throw new Error('Invalid Daemon Address. You must specify both tcp and udp addresses.');\n }\n var addr = address.split(':');\n if (!addr[0]) {\n throw new Error('Invalid Daemon Address. You must specify an ip.');\n }\n DaemonConfig.udp_ip = addr[0];\n DaemonConfig.tcp_ip = addr[0];\n DaemonConfig.udp_port = addr[1];\n DaemonConfig.tcp_port = addr[1];\n }\n else if (splitAddress.length === 2) {\n // in format of udp:127.0.0.1:2000 tcp:127.0.0.1:2001\n var part_1 = splitAddress[0].split(':');\n var part_2 = splitAddress[1].split(':');\n var addr_map = {};\n addr_map[part_1[0]] = part_1;\n addr_map[part_2[0]] = part_2;\n DaemonConfig.udp_ip = addr_map['udp'][1];\n DaemonConfig.udp_port = parseInt(addr_map['udp'][2]);\n DaemonConfig.tcp_ip = addr_map['tcp'][1];\n DaemonConfig.tcp_port = parseInt(addr_map['tcp'][2]);\n if (!DaemonConfig.udp_port || !DaemonConfig.tcp_port) {\n throw new Error('Invalid Daemon Address. You must specify port number.');\n }\n }\n }\n};\nif (process.env.AWS_XRAY_DAEMON_ADDRESS) {\n processAddress(process.env.AWS_XRAY_DAEMON_ADDRESS);\n}\nmodule.exports = DaemonConfig;\n", "\"use strict\";\nvar dgram = require('dgram');\nvar batcher = require('atomic-batcher');\nvar logger = require('./logger');\nvar PROTOCOL_HEADER = '{\"format\":\"json\",\"version\":1}';\nvar PROTOCOL_DELIMITER = '\\n';\n/**\n * Sends a collection of data over a UDP socket. This method\n * is designed to be used by `atomic-batcher` as a way to share\n * a single UDP socket for sending multiple data blocks.\n *\n * @param {object} ops - Details of the data to send\n * @param {Function} callback - The function to call when done\n */\nfunction batchSendData(ops, callback) {\n var client = dgram.createSocket('udp4');\n executeSendData(client, ops, 0, function () {\n try {\n client.close();\n }\n finally {\n callback();\n }\n });\n}\n/**\n * Execute sending data starting at the specified index and\n * using the provided client.\n *\n * @param {Socket} client - Socket to send data with\n * @param {object} ops - Details of data to send\n * @param {number} index - Starting index for sending\n * @param {Function} callback - Function to call when done\n */\nfunction executeSendData(client, ops, index, callback) {\n if (index >= ops.length) {\n callback();\n return;\n }\n sendMessage(client, ops[index], function () {\n executeSendData(client, ops, index + 1, callback);\n });\n}\n/**\n * Send a single message over a UDP socket.\n *\n * @param {Socket} client - Socket to send data with\n * @param {object} data - Details of the data to send\n * @param {Function} batchCallback - Function to call when done\n */\nfunction sendMessage(client, data, batchCallback) {\n var msg = data.msg;\n var offset = data.offset;\n var length = data.length;\n var port = data.port;\n var address = data.address;\n var callback = data.callback;\n client.send(msg, offset, length, port, address, function (err) {\n try {\n callback(err);\n }\n finally {\n batchCallback();\n }\n });\n}\n/**\n * Class to mimic the Socket interface for a UDP client, but to provided\n * batching of outgoing sends using temporary Sockets that are created and\n * destroyed as needed.\n */\nfunction BatchingTemporarySocket() {\n this.batchSend = batcher(batchSendData);\n}\n/**\n * Provide the same signature as the Socket.send method but the work will be\n * batched to share temporary UDP sockets whenever possible.\n */\nBatchingTemporarySocket.prototype.send = function (msg, offset, length, port, address, callback) {\n var work = {\n msg: msg,\n offset: offset,\n length: length,\n port: port,\n address: address,\n callback: callback\n };\n this.batchSend(work);\n};\n/**\n * Segment emitter module.\n * @module SegmentEmitter\n */\nvar SegmentEmitter = {\n daemonConfig: require('./daemon_config'),\n /**\n * Returns the formatted segment JSON string.\n * @param {Segment} segment - The segment to format.\n */\n format: function format(segment) {\n return PROTOCOL_HEADER + PROTOCOL_DELIMITER + segment.toString();\n },\n /**\n * Creates a UDP socket connection and send the formatted segment.\n * @param {Segment} segment - The segment to send to the daemon.\n */\n send: function send(segment) {\n if (!this.socket) {\n if (this.useBatchingTemporarySocket) {\n this.socket = new BatchingTemporarySocket();\n }\n else {\n this.socket = dgram.createSocket('udp4').unref();\n }\n }\n var client = this.socket;\n var formatted = segment.format();\n var data = PROTOCOL_HEADER + PROTOCOL_DELIMITER + formatted;\n var message = Buffer.from(data);\n var short = '{\"trace_id:\"' + segment.trace_id + '\",\"id\":\"' + segment.id + '\"}';\n var type = segment.type === 'subsegment' ? 'Subsegment' : 'Segment';\n client.send(message, 0, message.length, this.daemonConfig.udp_port, this.daemonConfig.udp_ip, function (err) {\n if (err) {\n if (err.code === 'EMSGSIZE') {\n logger.getLogger().error(type + ' too large to send: ' + short + ' (' + message.length + ' bytes).');\n }\n else {\n logger.getLogger().error('Error occured sending segment: ', err);\n }\n }\n else {\n logger.getLogger().debug(type + ' sent: {\"trace_id:\"' + segment.trace_id + '\",\"id\":\"' + segment.id + '\"}');\n logger.getLogger().debug('UDP message sent: ' + segment);\n }\n });\n },\n /**\n * Configures the address and/or port the daemon is expected to be on.\n * @param {string} address - Address of the daemon the segments should be sent to. Should be formatted as an IPv4 address.\n * @module SegmentEmitter\n * @function setDaemonAddress\n */\n setDaemonAddress: function setDaemonAddress(address) {\n this.daemonConfig.setDaemonAddress(address);\n },\n /**\n * Get the UDP IP the emitter is configured to.\n * @module SegmentEmitter\n * @function getIp\n */\n getIp: function getIp() {\n return this.daemonConfig.udp_ip;\n },\n /**\n * Get the UDP port the emitter is configured to.\n * @module SegmentEmitter\n * @function getPort\n */\n getPort: function getPort() {\n return this.daemonConfig.udp_port;\n },\n /**\n * Forces the segment emitter to create a new socket on send, and close it on complete.\n * @module SegmentEmitter\n * @function disableReusableSocket\n */\n disableReusableSocket: function () {\n this.useBatchingTemporarySocket = true;\n }\n};\nmodule.exports = SegmentEmitter;\n", "\"use strict\";\nvar crypto = require('crypto');\nvar logger = require('../../logger');\n/**\n * Class describing an AWS X-Ray trace ID.\n * @see https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-traces\n */\nclass TraceID {\n /**\n * Constructs a new trace ID using the current time.\n * @param {string} [tsHex] - time stamp to use for trace ID in hexadecimal format\n * @param {string} [numberhex] - string of hexadecimal characters for random portion of Trace ID\n * @constructor\n */\n constructor(tsHex, numberhex) {\n this.version = 1;\n this.timestamp = tsHex || Math.round(new Date().getTime() / 1000).toString(16);\n this.id = numberhex || crypto.randomBytes(12).toString('hex');\n }\n /**\n * @returns {TraceID} - a hardcoded trace ID using zeroed timestamp and random ID\n */\n static Invalid() {\n return new TraceID('00000000', '000000000000000000000000');\n }\n /**\n * Constructs a new trace ID from provided string. If no string is provided or the provided string is invalid,\n * log an error but a new trace ID still returned. This can be used as a trace ID string validator.\n * @param {string} [rawID] - string to create a Trace ID object from.\n */\n static FromString(rawID) {\n const DELIMITER = '-';\n var traceID = new TraceID();\n var version, timestamp;\n if (!rawID || typeof rawID !== 'string') {\n logger.getLogger().error('Empty or non-string trace ID provided');\n return traceID;\n }\n const parts = rawID.trim().split(DELIMITER);\n if (parts.length !== 3) {\n logger.getLogger().error('Unrecognized trace ID format');\n return traceID;\n }\n version = parseInt(parts[0]);\n if (isNaN(version) || version < 1) {\n logger.getLogger().error('Trace ID version must be positive integer');\n return traceID;\n }\n timestamp = parseInt(parts[1], 16).toString(16);\n if (timestamp === 'NaN') {\n logger.getLogger().error('Trace ID timestamp must be a hex-encoded value');\n return traceID;\n }\n traceID.version = version;\n traceID.timestamp = timestamp;\n traceID.id = parts[2];\n return traceID;\n }\n /**\n * Returns a string representation of the trace ID.\n * @returns {string} - stringified trace ID, e.g. 1-57fbe041-2c7ad569f5d6ff149137be86\n */\n toString() {\n return `${this.version.toString()}-${this.timestamp}-${this.id}`;\n }\n}\nmodule.exports = TraceID;\n", "\"use strict\";\n/**\n * @module utils\n */\nvar crypto = require('crypto');\nvar logger = require('./logger');\nvar TraceID = require('./segments/attributes/trace_id');\nvar utils = {\n /**\n * Checks a HTTP response code, where 4xx are 'error' and 5xx are 'fault'.\n * @param {string} status - the HTTP response status code.\n * @returns [string] - 'error', 'fault' or nothing on no match\n * @alias module:utils.getCauseTypeFromHttpStatus\n */\n getCauseTypeFromHttpStatus: function getCauseTypeFromHttpStatus(status) {\n var stat = status.toString();\n if (stat.match(/^[4][0-9]{2}$/) !== null) {\n return 'error';\n }\n else if (stat.match(/^[5][0-9]{2}$/) !== null) {\n return 'fault';\n }\n },\n /**\n * Removes the query string parameters from a given http request path\n * as it may contain sensitive information\n *\n * Related issue: https://github.com/aws/aws-xray-sdk-node/issues/246\n *\n * Node documentation: https://nodejs.org/api/http.html#http_http_request_url_options_callback\n *\n * @param {string} path - options.path in a http.request callback\n * @returns [string] - removes query string element from path\n * @alias module:utils.stripQueryStringFromPath\n */\n stripQueryStringFromPath: function stripQueryStringFromPath(path) {\n return path ? path.split('?')[0] : '';\n },\n /**\n * Performs a case-insensitive wildcard match against two strings. This method works with pseduo-regex chars; specifically ? and * are supported.\n * An asterisk (*) represents any combination of characters\n * A question mark (?) represents any single character\n *\n * @param {string} pattern - the regex-like pattern to be compared against.\n * @param {string} text - the string to compare against the pattern.\n * @returns boolean\n * @alias module:utils.wildcardMatch\n */\n wildcardMatch: function wildcardMatch(pattern, text) {\n if (pattern === undefined || text === undefined) {\n return false;\n }\n if (pattern.length === 1 && pattern.charAt(0) === '*') {\n return true;\n }\n var patternLength = pattern.length;\n var textLength = text.length;\n var indexOfGlob = pattern.indexOf('*');\n pattern = pattern.toLowerCase();\n text = text.toLowerCase();\n // Infix globs are relatively rare, and the below search is expensive especially when\n // Balsa is used a lot. Check for infix globs and, in their absence, do the simple thing\n if (indexOfGlob === -1 || indexOfGlob === (patternLength - 1)) {\n var match = function simpleWildcardMatch() {\n var j = 0;\n for (var i = 0; i < patternLength; i++) {\n var patternChar = pattern.charAt(i);\n if (patternChar === '*') {\n // Presumption for this method is that globs only occur at end\n return true;\n }\n else if (patternChar === '?') {\n if (j === textLength) {\n return false;\n } // No character to match\n j++;\n }\n else {\n if (j >= textLength || patternChar != text.charAt(j)) {\n return false;\n }\n j++;\n }\n }\n // Ate up all the pattern and didn't end at a glob, so a match will have consumed all\n // the text\n return j === textLength;\n };\n return match();\n }\n /*\n * The matchArray[i] is used to record if there is a match between the first i chars in =\n * text and the first j chars in pattern.\n * So will return matchArray[textLength+1] in the end\n * Loop from the beginning of the pattern\n * case not '*': if text[i]==pattern[j] or pattern[j] is '?', and matchArray[i] is true,\n * set matchArray[i+1] to true, otherwise false\n * case '*': since '*' can match any globing, as long as there is a true in matchArray before i\n * all the matchArray[i+1], matchArray[i+2],...,matchArray[textLength] could be true\n */\n var matchArray = [];\n matchArray[0] = true;\n for (var j = 0; j < patternLength; j++) {\n var i;\n var patternChar = pattern.charAt(j);\n if (patternChar != '*') {\n for (i = textLength - 1; i >= 0; i--) {\n matchArray[i + 1] = !!matchArray[i] && (patternChar === '?' || (patternChar === text.charAt(i)));\n }\n }\n else {\n i = 0;\n while (i <= textLength && !matchArray[i]) {\n i++;\n }\n for (i; i <= textLength; i++) {\n matchArray[i] = true;\n }\n }\n matchArray[0] = (matchArray[0] && patternChar === '*');\n }\n return matchArray[textLength];\n },\n LambdaUtils: {\n validTraceData: function (xAmznTraceId) {\n var valid = false;\n if (xAmznTraceId) {\n var data = utils.processTraceData(xAmznTraceId);\n valid = !!(data && data.root && data.parent && data.sampled);\n }\n return valid;\n },\n /**\n * Populates trace ID, parent ID, and sampled decision of given segment. Will always populate valid values,\n * even if xAmznTraceId contains missing or invalid values. This ensures downstream services receive valid\n * headers.\n * @param {Segment} segment - Facade segment to be populated\n * @param {String} xAmznTraceId - Raw Trace Header to supply trace data\n * @returns {Boolean} - true if required fields are present and Trace ID is valid, false otherwise\n */\n populateTraceData: function (segment, xAmznTraceId) {\n logger.getLogger().debug('Lambda trace data found: ' + xAmznTraceId);\n let traceData = utils.processTraceData(xAmznTraceId);\n var valid = false;\n if (!traceData) {\n traceData = {};\n logger.getLogger().error('_X_AMZN_TRACE_ID is empty or has an invalid format');\n }\n else if (!traceData.root || !traceData.parent || !traceData.sampled) {\n logger.getLogger().error('_X_AMZN_TRACE_ID is missing required information');\n }\n else {\n valid = true;\n }\n segment.trace_id = TraceID.FromString(traceData.root).toString(); // Will always assign valid trace_id\n segment.id = traceData.parent || crypto.randomBytes(8).toString('hex');\n if (traceData.root && segment.trace_id !== traceData.root) {\n logger.getLogger().error('_X_AMZN_TRACE_ID contains invalid trace ID');\n valid = false;\n }\n if (!parseInt(traceData.sampled)) {\n segment.notTraced = true;\n }\n else {\n delete segment.notTraced;\n }\n if (traceData.data) {\n segment.additionalTraceData = traceData.data;\n }\n logger.getLogger().debug('Segment started: ' + JSON.stringify(traceData));\n return valid;\n }\n },\n /**\n * Splits out the data from the trace id format. Used by the middleware.\n * @param {String} traceData - The additional trace data (typically in req.headers.x-amzn-trace-id).\n * @returns {object}\n * @alias module:mw_utils.processTraceData\n */\n processTraceData: function processTraceData(traceData) {\n var amznTraceData = {};\n var data = {};\n var reservedKeywords = ['root', 'parent', 'sampled', 'self'];\n var remainingBytes = 256;\n if (!(typeof traceData === 'string' && traceData)) {\n return amznTraceData;\n }\n traceData.split(';').forEach(function (header) {\n if (!header) {\n return;\n }\n var pair = header.split('=');\n if (pair[0] && pair[1]) {\n let key = pair[0].trim();\n let value = pair[1].trim();\n let lowerCaseKey = key.toLowerCase();\n let reserved = reservedKeywords.indexOf(lowerCaseKey) !== -1;\n if (reserved) {\n amznTraceData[lowerCaseKey] = value;\n }\n else if (!reserved && remainingBytes - (lowerCaseKey.length + value.length) >= 0) {\n data[key] = value;\n remainingBytes -= (key.length + value.length);\n }\n }\n });\n amznTraceData['data'] = data;\n return amznTraceData;\n },\n /**\n * Makes a shallow copy of an object without given keys - keeps prototype\n * @param {Object} obj - The object to copy\n * @param {string[]} [keys=[]] - The keys that won't be copied\n * @param {boolean} [preservePrototype=false] - If true also copy prototype properties\n * @returns {}\n */\n objectWithoutProperties: function objectWithoutProperties(obj, keys, preservePrototype) {\n keys = Array.isArray(keys) ? keys : [];\n preservePrototype = typeof preservePrototype === 'boolean' ? preservePrototype : false;\n var target = preservePrototype ? Object.create(Object.getPrototypeOf(obj)) : {};\n for (var property in obj) {\n if (keys.indexOf(property) >= 0) {\n continue;\n }\n if (!Object.prototype.hasOwnProperty.call(obj, property)) {\n continue;\n }\n target[property] = obj[property];\n }\n return target;\n },\n /**\n * Safely gets an integer from a string or number\n * @param {String | Number} - input to cast to integer\n * @returns {Number} - Integer representation of input, or 0 if input is not castable to int\n */\n safeParseInt: (val) => {\n if (!val || isNaN(val)) {\n return 0;\n }\n return parseInt(val);\n }\n};\nmodule.exports = utils;\n", "\"use strict\";\nconst { safeParseInt } = require('../utils');\nvar logger = require('../logger');\nvar DEFAULT_STREAMING_THRESHOLD = 100;\nvar utils = {\n streamingThreshold: DEFAULT_STREAMING_THRESHOLD,\n getCurrentTime: function getCurrentTime() {\n return Date.now() / 1000;\n },\n setOrigin: function setOrigin(origin) {\n this.origin = origin;\n },\n setPluginData: function setPluginData(pluginData) {\n this.pluginData = pluginData;\n },\n setSDKData: function setSDKData(sdkData) {\n this.sdkData = sdkData;\n },\n setServiceData: function setServiceData(serviceData) {\n this.serviceData = serviceData;\n },\n /**\n * Overrides the default streaming threshold (100).\n * The threshold represents the maximum number of subsegments on a single segment before\n * the SDK beings to send the completed subsegments out of band of the main segment.\n * Reduce this threshold if you see the 'Segment too large to send' error.\n * @param {number} threshold - The new threshold to use.\n * @memberof AWSXRay\n */\n setStreamingThreshold: function setStreamingThreshold(threshold) {\n if (isFinite(threshold) && threshold >= 0) {\n utils.streamingThreshold = threshold;\n logger.getLogger().debug('Subsegment streaming threshold set to: ' + threshold);\n }\n else {\n logger.getLogger().error('Invalid threshold: ' + threshold + '. Must be a whole number >= 0.');\n }\n },\n getStreamingThreshold: function getStreamingThreshold() {\n return utils.streamingThreshold;\n },\n /**\n * Parses an HTTP response object to return an X-Ray compliant HTTP response object.\n * @param {http.ServerResponse} res\n * @returns {Object} - X-Ray response object to be added to (sub)segment\n */\n getHttpResponseData: (res) => {\n const ret = {};\n if (!res) {\n return ret;\n }\n const status = safeParseInt(res.statusCode);\n if (status !== 0) {\n ret.status = status;\n }\n if (res.headers && res.headers['content-length']) {\n ret.content_length = safeParseInt(res.headers['content-length']);\n }\n return ret;\n }\n};\nmodule.exports = utils;\n", "\"use strict\";\nconst { getHttpResponseData } = require('../segment_utils');\nvar { stripQueryStringFromPath } = require('../../utils');\n/**\n * Represents an outgoing HTTP/HTTPS call.\n * @constructor\n * @param {http.ClientRequest|https.ClientRequest} req - The request object from the HTTP/HTTPS call.\n * @param {http.IncomingMessage|https.IncomingMessage} res - The response object from the HTTP/HTTPS call.\n * @param {boolean} downstreamXRayEnabled - when true, adds a \"traced\": true hint to generated subsegments such that the AWS X-Ray service expects a corresponding segment from the downstream service.\n */\nfunction RemoteRequestData(req, res, downstreamXRayEnabled) {\n this.init(req, res, downstreamXRayEnabled);\n}\nRemoteRequestData.prototype.init = function init(req, res, downstreamXRayEnabled) {\n this.request = {\n url: (req.agent && req.agent.protocol) ? (req.agent.protocol + '//' + (req.host || req.getHeader('host')) + stripQueryStringFromPath(req.path)) : '',\n method: req.method || '',\n };\n if (downstreamXRayEnabled) {\n this.request.traced = true;\n }\n if (res) {\n this.response = getHttpResponseData(res);\n }\n};\nmodule.exports = RemoteRequestData;\n", "\"use strict\";\nvar crypto = require('crypto');\nvar CapturedException = require('./captured_exception');\nvar RemoteRequestData = require('./remote_request_data');\nvar SegmentEmitter = require('../../segment_emitter');\nvar SegmentUtils = require('../segment_utils');\nvar Utils = require('../../utils');\nvar logger = require('../../logger');\n/**\n * Represents a subsegment.\n * @constructor\n * @param {string} name - The name of the subsegment.\n */\nfunction Subsegment(name) {\n this.init(name);\n}\nSubsegment.prototype.init = function init(name) {\n if (typeof name != 'string') {\n throw new Error('Subsegment name must be of type string.');\n }\n this.id = crypto.randomBytes(8).toString('hex');\n this.name = name;\n this.start_time = SegmentUtils.getCurrentTime();\n this.in_progress = true;\n this.counter = 0;\n this.notTraced = false;\n};\n/**\n * Nests a new subsegment to the array of subsegments.\n * @param {string} name - The name of the new subsegment to append.\n * @returns {Subsegment} - The newly created subsegment.\n */\nSubsegment.prototype.addNewSubsegment = function addNewSubsegment(name) {\n const subsegment = new Subsegment(name);\n this.addSubsegment(subsegment);\n return subsegment;\n};\nSubsegment.prototype.addSubsegmentWithoutSampling = function addSubsegmentWithoutSampling(subsegment) {\n this.addSubsegment(subsegment);\n subsegment.notTraced = true;\n};\nSubsegment.prototype.addNewSubsegmentWithoutSampling = function addNewSubsegmentWithoutSampling(name) {\n const subsegment = new Subsegment(name);\n this.addSubsegment(subsegment);\n subsegment.notTraced = true;\n return subsegment;\n};\n/**\n * Adds a subsegment to the array of subsegments.\n * @param {Subsegment} subsegment - The subsegment to append.\n */\nSubsegment.prototype.addSubsegment = function (subsegment) {\n if (!(subsegment instanceof Subsegment)) {\n throw new Error('Failed to add subsegment:' + subsegment + ' to subsegment \"' + this.name +\n '\". Not a subsegment.');\n }\n if (this.subsegments === undefined) {\n this.subsegments = [];\n }\n subsegment.segment = this.segment;\n subsegment.parent = this;\n subsegment.notTraced = subsegment.parent.notTraced;\n if (subsegment.end_time === undefined) {\n this.incrementCounter(subsegment.counter);\n }\n this.subsegments.push(subsegment);\n};\n/**\n * Removes the subsegment from the subsegments array, used in subsegment streaming.\n */\nSubsegment.prototype.removeSubsegment = function removeSubsegment(subsegment) {\n if (!(subsegment instanceof Subsegment)) {\n throw new Error('Failed to remove subsegment:' + subsegment + ' from subsegment \"' + this.name +\n '\". Not a subsegment.');\n }\n if (this.subsegments !== undefined) {\n var index = this.subsegments.indexOf(subsegment);\n if (index >= 0) {\n this.subsegments.splice(index, 1);\n }\n }\n};\n/**\n * Adds a property with associated data into the subsegment.\n * @param {string} name - The name of the property to add.\n * @param {Object} data - The data of the property to add.\n */\nSubsegment.prototype.addAttribute = function addAttribute(name, data) {\n this[name] = data;\n};\n/**\n * Adds a subsegement id to record ordering.\n * @param {string} id - A subsegment id.\n */\nSubsegment.prototype.addPrecursorId = function (id) {\n if (typeof id !== 'string') {\n logger.getLogger().error('Failed to add id:' + id + ' to subsegment ' + this.name +\n '. Precursor Ids must be of type string.');\n }\n if (this.precursor_ids === undefined) {\n this.precursor_ids = [];\n }\n this.precursor_ids.push(id);\n};\n/**\n * Adds a key-value pair that can be queryable through GetTraceSummaries.\n * Only acceptable types are string, float/int and boolean.\n * @param {string} key - The name of key to add.\n * @param {boolean|string|number} value - The value to add for the given key.\n */\nSubsegment.prototype.addAnnotation = function (key, value) {\n if (typeof value !== 'boolean' && typeof value !== 'string' && !isFinite(value)) {\n logger.getLogger().error('Failed to add annotation key: ' + key + ' value: ' + value + ' to subsegment ' +\n this.name + '. Value must be of type string, number or boolean.');\n return;\n }\n if (typeof key !== 'string') {\n logger.getLogger().error('Failed to add annotation key: ' + key + ' value: ' + value + ' to subsegment ' +\n this.name + '. Key must be of type string.');\n return;\n }\n if (this.annotations === undefined) {\n this.annotations = {};\n }\n this.annotations[key] = value;\n};\n/**\n * Adds a key-value pair to the metadata.default attribute when no namespace is given.\n * Metadata is not queryable, but is recorded.\n * @param {string} key - The name of the key to add.\n * @param {object|null} value - The value of the associated key.\n * @param {string} [namespace] - The property name to put the key/value pair under.\n */\nSubsegment.prototype.addMetadata = function (key, value, namespace) {\n if (typeof key !== 'string') {\n logger.getLogger().error('Failed to add metadata key: ' + key + ' value: ' + value + ' to subsegment ' +\n this.name + '. Key must be of type string.');\n return;\n }\n if (namespace && typeof namespace !== 'string') {\n logger.getLogger().error('Failed to add metadata key: ' + key + ' value: ' + value + ' to subsegment ' +\n this.name + '. Namespace must be of type string.');\n return;\n }\n var ns = namespace || 'default';\n if (!this.metadata) {\n this.metadata = {};\n }\n if (!this.metadata[ns]) {\n this.metadata[ns] = {};\n }\n if (ns !== '__proto__') {\n this.metadata[ns][key] = value !== null && value !== undefined ? value : '';\n }\n};\nSubsegment.prototype.addSqlData = function addSqlData(sqlData) {\n this.sql = sqlData;\n};\n/**\n * Adds an error with associated data into the subsegment.\n * To handle propagating errors, the subsegment also sets a copy of the error on the\n * root segment. As the error passes up the execution stack, a reference is created\n * on each subsegment to the originating subsegment.\n * @param {Error|string} err - The error to capture.\n * @param {boolean} [remote] - Flag for whether the exception caught was remote or not.\n */\nSubsegment.prototype.addError = function addError(err, remote) {\n if (err == null || typeof err !== 'object' && typeof (err) !== 'string') {\n logger.getLogger().error('Failed to add error:' + err + ' to subsegment \"' + this.name +\n '\". Not an object or string literal.');\n return;\n }\n this.addFaultFlag();\n if (this.segment && this.segment.exception) {\n if (err === this.segment.exception.ex) {\n this.fault = true;\n this.cause = { id: this.segment.exception.cause, exceptions: [] };\n return;\n }\n delete this.segment.exception;\n }\n if (this.segment) {\n this.segment.exception = {\n ex: err,\n cause: this.id\n };\n }\n else {\n //error, cannot propagate exception if not added to segment\n }\n if (this.cause === undefined) {\n this.cause = {\n working_directory: process.cwd(),\n exceptions: []\n };\n }\n this.cause.exceptions.unshift(new CapturedException(err, remote));\n};\n/**\n * Adds data for an outgoing HTTP/HTTPS call.\n * @param {http.ClientRequest/https.ClientRequest} req - The request object from the HTTP/HTTPS call.\n * @param {http.IncomingMessage/https.IncomingMessage} res - The response object from the HTTP/HTTPS call.\n * @param {boolean} downstreamXRayEnabled - when true, adds a \"traced\": true hint to generated subsegments such that the AWS X-Ray service expects a corresponding segment from the downstream service.\n */\nSubsegment.prototype.addRemoteRequestData = function addRemoteRequestData(req, res, downstreamXRayEnabled) {\n this.http = new RemoteRequestData(req, res, downstreamXRayEnabled);\n if ('traced' in this.http.request) {\n this.traced = this.http.request.traced;\n delete this.http.request.traced;\n }\n};\n/**\n * Adds fault flag to the subsegment.\n */\nSubsegment.prototype.addFaultFlag = function addFaultFlag() {\n this.fault = true;\n};\n/**\n * Adds error flag to the subsegment.\n */\nSubsegment.prototype.addErrorFlag = function addErrorFlag() {\n this.error = true;\n};\n/**\n * Adds throttle flag to the subsegment.\n */\nSubsegment.prototype.addThrottleFlag = function addThrottleFlag() {\n this.throttle = true;\n};\n/**\n * Closes the current subsegment. This automatically captures any exceptions and sets the end time.\n * @param {Error|string} [err] - The error to capture.\n * @param {boolean} [remote] - Flag for whether the exception caught was remote or not.\n */\nSubsegment.prototype.close = function close(err, remote) {\n var root = this.segment;\n this.end_time = SegmentUtils.getCurrentTime();\n delete this.in_progress;\n if (err) {\n this.addError(err, remote);\n }\n if (this.parent) {\n this.parent.decrementCounter();\n }\n if (root && root.counter > SegmentUtils.getStreamingThreshold()) {\n if (this.streamSubsegments() && this.parent) {\n this.parent.removeSubsegment(this);\n }\n }\n};\n/**\n * Each subsegment holds a counter of open subsegments. This increments\n * the counter such that it can be called from a child and propagate up.\n * @param {Number} [additional] - An additional amount to increment. Used when adding subsegment trees.\n */\nSubsegment.prototype.incrementCounter = function incrementCounter(additional) {\n this.counter = additional ? this.counter + additional + 1 : this.counter + 1;\n if (this.parent) {\n this.parent.incrementCounter(additional);\n }\n};\n/**\n * Each subsegment holds a counter of its open subsegments. This decrements\n * the counter such that it can be called from a child and propagate up.\n */\nSubsegment.prototype.decrementCounter = function decrementCounter() {\n this.counter--;\n if (this.parent) {\n this.parent.decrementCounter();\n }\n};\n/**\n * Returns a boolean indicating whether or not the subsegment has been closed.\n * @returns {boolean} - Returns true if the subsegment is closed.\n */\nSubsegment.prototype.isClosed = function isClosed() {\n return !this.in_progress;\n};\n/**\n * Sends the subsegment to the daemon.\n */\nSubsegment.prototype.flush = function flush() {\n if (!this.parent || !this.segment) {\n logger.getLogger().error('Failed to flush subsegment: ' + this.name + '. Subsegment must be added ' +\n 'to a segment chain to flush.');\n return;\n }\n if (this.segment.trace_id) {\n if (this.segment.notTraced !== true && !this.notTraced) {\n SegmentEmitter.send(this);\n }\n else {\n logger.getLogger().debug('Ignoring flush on subsegment ' + this.id + '. Associated segment is marked as not sampled.');\n }\n }\n else {\n logger.getLogger().debug('Ignoring flush on subsegment ' + this.id + '. Associated segment is missing a trace ID.');\n }\n};\n/**\n * Returns true if the subsegment was streamed in its entirety\n */\nSubsegment.prototype.streamSubsegments = function streamSubsegments() {\n if (this.isClosed() && this.counter <= 0) {\n this.flush();\n return true;\n }\n else if (this.subsegments && this.subsegments.length > 0) {\n var open = [];\n this.subsegments.forEach(function (child) {\n if (!child.streamSubsegments()) {\n open.push(child);\n }\n });\n this.subsegments = open;\n }\n};\n/**\n * Returns the formatted, trimmed subsegment JSON string to send to the daemon.\n */\nSubsegment.prototype.format = function format() {\n this.type = 'subsegment';\n if (this.parent) {\n this.parent_id = this.parent.id;\n }\n if (this.segment) {\n this.trace_id = this.segment.trace_id;\n }\n return JSON.stringify(this);\n};\n/**\n * Returns the formatted subsegment JSON string.\n */\nSubsegment.prototype.toString = function toString() {\n return JSON.stringify(this);\n};\nSubsegment.prototype.toJSON = function toJSON() {\n var ignore = ['segment', 'parent', 'counter'];\n if (this.subsegments == null || this.subsegments.length === 0) {\n ignore.push('subsegments');\n }\n var thisCopy = Utils.objectWithoutProperties(this, ignore, false);\n return thisCopy;\n};\nmodule.exports = Subsegment;\n", "\"use strict\";\nvar crypto = require('crypto');\nvar CapturedException = require('./attributes/captured_exception');\nvar SegmentEmitter = require('../segment_emitter');\nvar SegmentUtils = require('./segment_utils');\nvar Subsegment = require('./attributes/subsegment');\nvar TraceID = require('./attributes/trace_id');\nvar Utils = require('../utils');\nvar logger = require('../logger');\n/**\n * Represents a segment.\n * @constructor\n * @param {string} name - The name of the subsegment.\n * @param {string} [rootId] - The trace ID of the spawning parent, included in the 'X-Amzn-Trace-Id' header of the incoming request. If one is not supplied, it will be generated.\n * @param {string} [parentId] - The sub/segment ID of the spawning parent, included in the 'X-Amzn-Trace-Id' header of the incoming request.\n */\nfunction Segment(name, rootId, parentId) {\n this.init(name, rootId, parentId);\n}\nSegment.prototype.init = function init(name, rootId, parentId) {\n if (typeof name != 'string') {\n throw new Error('Segment name must be of type string.');\n }\n // Validate the Trace ID\n var traceId;\n if (rootId && typeof rootId == 'string') {\n traceId = TraceID.FromString(rootId);\n }\n else {\n traceId = new TraceID();\n }\n var id = crypto.randomBytes(8).toString('hex');\n var startTime = SegmentUtils.getCurrentTime();\n this.trace_id = traceId.toString();\n this.id = id;\n this.start_time = startTime;\n this.name = name || '';\n this.in_progress = true;\n this.counter = 0;\n if (parentId) {\n this.parent_id = parentId;\n }\n if (SegmentUtils.serviceData) {\n this.setServiceData(SegmentUtils.serviceData);\n }\n if (SegmentUtils.pluginData) {\n this.addPluginData(SegmentUtils.pluginData);\n }\n if (SegmentUtils.origin) {\n this.origin = SegmentUtils.origin;\n }\n if (SegmentUtils.sdkData) {\n this.setSDKData(SegmentUtils.sdkData);\n }\n};\n/**\n * Adds incoming request data to the http block of the segment.\n * @param {IncomingRequestData} data - The data of the property to add.\n */\nSegment.prototype.addIncomingRequestData = function addIncomingRequestData(data) {\n this.http = data;\n};\n/**\n * Adds a key-value pair that can be queryable through GetTraceSummaries.\n * Only acceptable types are string, float/int and boolean.\n * @param {string} key - The name of key to add.\n * @param {boolean|string|number} value - The value to add for the given key.\n */\nSegment.prototype.addAnnotation = function addAnnotation(key, value) {\n if (typeof value !== 'boolean' && typeof value !== 'string' && !isFinite(value)) {\n logger.getLogger().error('Failed to add annotation key: ' + key + ' value: ' + value + ' to subsegment ' +\n this.name + '. Value must be of type string, number or boolean.');\n return;\n }\n if (typeof key !== 'string') {\n logger.getLogger().error('Failed to add annotation key: ' + key + ' value: ' + value + ' to subsegment ' +\n this.name + '. Key must be of type string.');\n return;\n }\n if (this.annotations === undefined) {\n this.annotations = {};\n }\n this.annotations[key] = value;\n};\n/**\n * Adds a User ID that can be queried from the X-Ray console. User ID\n * must be a string.\n * @param {string} user - The ID of the user corresponding to this segment\n */\nSegment.prototype.setUser = function (user) {\n if (typeof user !== 'string') {\n logger.getLogger().error('Set user: ' + user + ' failed. User IDs must be of type string.');\n }\n this.user = user;\n};\n/**\n * Adds a key-value pair to the metadata.default attribute when no namespace is given.\n * Metadata is not queryable, but is recorded.\n * @param {string} key - The name of the key to add.\n * @param {object|null} value - The value of the associated key.\n * @param {string} [namespace] - The property name to put the key/value pair under.\n */\nSegment.prototype.addMetadata = function (key, value, namespace) {\n if (typeof key !== 'string') {\n logger.getLogger().error('Failed to add metadata key: ' + key + ' value: ' + value + ' to segment ' +\n this.name + '. Key must be of type string.');\n return;\n }\n if (namespace && typeof namespace !== 'string') {\n logger.getLogger().error('Failed to add metadata key: ' + key + ' value: ' + value + ' to segment ' +\n this.name + '. Namespace must be of type string.');\n return;\n }\n var ns = namespace || 'default';\n if (!this.metadata) {\n this.metadata = {};\n }\n if (!this.metadata[ns]) {\n this.metadata[ns] = {};\n }\n if (ns !== '__proto__') {\n this.metadata[ns][key] = value !== null && value !== undefined ? value : '';\n }\n};\n/**\n * Adds data about the AWS X-Ray SDK onto the segment.\n * @param {Object} data - Object that contains the version of the SDK, and other information.\n */\nSegment.prototype.setSDKData = function setSDKData(data) {\n if (!data) {\n logger.getLogger().error('Add SDK data: ' + data + ' failed.' +\n 'Must not be empty.');\n return;\n }\n if (!this.aws) {\n this.aws = {};\n }\n this.aws.xray = data;\n};\nSegment.prototype.setMatchedSamplingRule = function setMatchedSamplingRule(ruleName) {\n if (this.aws) {\n this.aws = JSON.parse(JSON.stringify(this.aws));\n }\n if (this.aws && this.aws['xray']) {\n this.aws.xray['rule_name'] = ruleName;\n }\n else {\n this.aws = { xray: { 'rule_name': ruleName } };\n }\n};\n/**\n * Adds data about the service into the segment.\n * @param {Object} data - Object that contains the version of the application, and other information.\n */\nSegment.prototype.setServiceData = function setServiceData(data) {\n if (!data) {\n logger.getLogger().error('Add service data: ' + data + ' failed.' +\n 'Must not be empty.');\n return;\n }\n this.service = data;\n};\n/**\n * Adds a service with associated version data into the segment.\n * @param {Object} data - The associated AWS data.\n */\nSegment.prototype.addPluginData = function addPluginData(data) {\n if (this.aws === undefined) {\n this.aws = {};\n }\n Object.assign(this.aws, data);\n};\n/**\n * Adds a new subsegment to the array of subsegments.\n * @param {string} name - The name of the new subsegment to append.\n */\nSegment.prototype.addNewSubsegment = function addNewSubsegment(name) {\n var subsegment = new Subsegment(name);\n this.addSubsegment(subsegment);\n return subsegment;\n};\nSegment.prototype.addSubsegmentWithoutSampling = function addSubsegmentWithoutSampling(subsegment) {\n this.addSubsegment(subsegment);\n subsegment.notTraced = true;\n};\nSegment.prototype.addNewSubsegmentWithoutSampling = function addNewSubsegmentWithoutSampling(name) {\n const subsegment = new Subsegment(name);\n this.addSubsegment(subsegment);\n subsegment.notTraced = true;\n return subsegment;\n};\n/**\n * Adds a subsegment to the array of subsegments.\n * @param {Subsegment} subsegment - The subsegment to append.\n */\nSegment.prototype.addSubsegment = function addSubsegment(subsegment) {\n if (!(subsegment instanceof Subsegment)) {\n throw new Error('Cannot add subsegment: ' + subsegment + '. Not a subsegment.');\n }\n if (this.subsegments === undefined) {\n this.subsegments = [];\n }\n subsegment.segment = this;\n subsegment.parent = this;\n subsegment.notTraced = subsegment.parent.notTraced;\n this.subsegments.push(subsegment);\n if (!subsegment.end_time) {\n this.incrementCounter(subsegment.counter);\n }\n};\n/**\n * Removes the subsegment from the subsegments array, used in subsegment streaming.\n */\nSegment.prototype.removeSubsegment = function removeSubsegment(subsegment) {\n if (!(subsegment instanceof Subsegment)) {\n throw new Error('Failed to remove subsegment:' + subsegment + ' from subsegment \"' + this.name +\n '\". Not a subsegment.');\n }\n if (this.subsegments !== undefined) {\n var index = this.subsegments.indexOf(subsegment);\n if (index >= 0) {\n this.subsegments.splice(index, 1);\n }\n }\n};\n/**\n * Adds error data into the segment.\n * @param {Error|string} err - The error to capture.\n * @param {boolean} [remote] - Flag for whether the exception caught was remote or not.\n */\nSegment.prototype.addError = function addError(err, remote) {\n if (err == null || typeof err !== 'object' && typeof (err) !== 'string') {\n logger.getLogger().error('Failed to add error:' + err + ' to subsegment \"' + this.name +\n '\". Not an object or string literal.');\n return;\n }\n this.addFaultFlag();\n if (this.exception) {\n if (err === this.exception.ex) {\n this.cause = { id: this.exception.cause };\n delete this.exception;\n return;\n }\n delete this.exception;\n }\n if (this.cause === undefined) {\n this.cause = {\n working_directory: process.cwd(),\n exceptions: []\n };\n }\n this.cause.exceptions.push(new CapturedException(err, remote));\n};\n/**\n * Adds fault flag to the subsegment.\n */\nSegment.prototype.addFaultFlag = function addFaultFlag() {\n this.fault = true;\n};\n/**\n * Adds error flag to the subsegment.\n */\nSegment.prototype.addErrorFlag = function addErrorFlag() {\n this.error = true;\n};\n/**\n * Adds throttle flag to the subsegment.\n */\nSegment.prototype.addThrottleFlag = function addThrottleFlag() {\n this.throttle = true;\n};\n/**\n * Returns a boolean indicating whether or not the segment has been closed.\n * @returns {boolean} - Returns true if the subsegment is closed.\n */\nSegment.prototype.isClosed = function isClosed() {\n return !this.in_progress;\n};\n/**\n * Each segment holds a counter of open subsegments. This increments the counter.\n * @param {Number} [additional] - An additional amount to increment. Used when adding subsegment trees.\n */\nSegment.prototype.incrementCounter = function incrementCounter(additional) {\n this.counter = additional ? this.counter + additional + 1 : this.counter + 1;\n if (this.counter > SegmentUtils.streamingThreshold && this.subsegments && this.subsegments.length > 0) {\n var open = [];\n this.subsegments.forEach(function (child) {\n if (!child.streamSubsegments()) {\n open.push(child);\n }\n });\n this.subsegments = open;\n }\n};\n/**\n * Each segment holds a counter of open subsegments. This decrements\n * the counter such that it can be called from a child and propagate up.\n */\nSegment.prototype.decrementCounter = function decrementCounter() {\n this.counter--;\n if (this.counter <= 0 && this.isClosed()) {\n this.flush();\n }\n};\n/**\n * Closes the current segment. This automatically sets the end time.\n * @param {Error|string} [err] - The error to capture.\n * @param {boolean} [remote] - Flag for whether the exception caught was remote or not.\n */\nSegment.prototype.close = function (err, remote) {\n if (!this.end_time) {\n this.end_time = SegmentUtils.getCurrentTime();\n }\n if (err !== undefined) {\n this.addError(err, remote);\n }\n delete this.in_progress;\n delete this.exception;\n if (this.counter <= 0) {\n this.flush();\n }\n};\n/**\n * Sends the segment to the daemon.\n */\nSegment.prototype.flush = function flush() {\n if (this.notTraced !== true) {\n delete this.exception;\n var thisCopy = Utils.objectWithoutProperties(this, ['counter', 'notTraced'], true);\n SegmentEmitter.send(thisCopy);\n }\n};\nSegment.prototype.format = function format() {\n var ignore = ['segment', 'parent', 'counter'];\n if (this.subsegments == null || this.subsegments.length === 0) {\n ignore.push('subsegments');\n }\n var thisCopy = Utils.objectWithoutProperties(this, ignore, false);\n return JSON.stringify(thisCopy);\n};\nSegment.prototype.toString = function toString() {\n return JSON.stringify(this);\n};\nmodule.exports = Segment;\n", "\"use strict\";\n/**\n * @module context_utils\n */\nvar cls = require('cls-hooked/context');\nvar logger = require('./logger');\nvar Segment = require('./segments/segment');\nvar Subsegment = require('./segments/attributes/subsegment');\nvar cls_mode = true;\nvar NAMESPACE = 'AWSXRay';\nvar SEGMENT = 'segment';\nvar contextOverride = false;\nvar contextUtils = {\n CONTEXT_MISSING_STRATEGY: {\n RUNTIME_ERROR: {\n contextMissing: function contextMissingRuntimeError(message) {\n throw new Error(message);\n }\n },\n LOG_ERROR: {\n contextMissing: function contextMissingLogError(message) {\n var err = new Error(message);\n logger.getLogger().error(err.stack);\n }\n },\n IGNORE_ERROR: {\n contextMissing: function contextMissingIgnoreError() {\n }\n }\n },\n contextMissingStrategy: {},\n /**\n * Resolves the segment or subsegment given manual mode and params on the call required.\n * @param [Segment|Subsegment] segment - The segment manually provided via params.XraySegment, if provided.\n * @returns {Segment|Subsegment}\n * @alias module:context_utils.resolveManualSegmentParams\n */\n resolveManualSegmentParams: function resolveManualSegmentParams(params) {\n if (params && !contextUtils.isAutomaticMode()) {\n var xraySegment = params.XRaySegment || params.XraySegment;\n var segment = params.Segment;\n var found = null;\n if (xraySegment && (xraySegment instanceof Segment || xraySegment instanceof Subsegment)) {\n found = xraySegment;\n delete params.XRaySegment;\n delete params.XraySegment;\n }\n else if (segment && (segment instanceof Segment || segment instanceof Subsegment)) {\n found = segment;\n delete params.Segment;\n }\n return found;\n }\n },\n /**\n * Gets current CLS namespace for X-Ray SDK or creates one if absent.\n * @returns {Namespace}\n * @alias module:context_utils.getNamespace\n */\n getNamespace: function getNamespace() {\n return cls.getNamespace(NAMESPACE) || cls.createNamespace(NAMESPACE);\n },\n /**\n * Resolves the segment or subsegment given manual or automatic mode.\n * @param [Segment|Subsegment] segment - The segment manually provided, if provided.\n * @returns {Segment|Subsegment}\n * @alias module:context_utils.resolveSegment\n */\n resolveSegment: function resolveSegment(segment) {\n if (cls_mode) {\n return this.getSegment();\n }\n else if (segment && !cls_mode) {\n return segment;\n }\n else if (!segment && !cls_mode) {\n contextUtils.contextMissingStrategy.contextMissing('No sub/segment specified. A sub/segment must be provided for manual mode.');\n }\n },\n /**\n * Returns the current segment or subsegment. For use with in automatic mode only.\n * @returns {Segment|Subsegment}\n * @alias module:context_utils.getSegment\n */\n getSegment: function getSegment() {\n if (cls_mode) {\n var segment = contextUtils.getNamespace(NAMESPACE).get(SEGMENT);\n if (!segment) {\n contextUtils.contextMissingStrategy.contextMissing('Failed to get the current sub/segment from the context.');\n }\n else if (segment instanceof Segment && process.env.LAMBDA_TASK_ROOT && segment.facade == true) {\n segment.resolveLambdaTraceData();\n }\n return segment;\n }\n else {\n contextUtils.contextMissingStrategy.contextMissing('Cannot get sub/segment from context. Not supported in manual mode.');\n }\n },\n /**\n * Sets the current segment or subsegment. For use with in automatic mode only.\n * @param [Segment|Subsegment] segment - The sub/segment to set.\n * @returns {Segment|Subsegment}\n * @alias module:context_utils.setSegment\n */\n setSegment: function setSegment(segment) {\n if (cls_mode) {\n if (!contextUtils.getNamespace(NAMESPACE).set(SEGMENT, segment)) {\n logger.getLogger().warn('Failed to set the current sub/segment on the context.');\n }\n }\n else {\n contextUtils.contextMissingStrategy.contextMissing('Cannot set sub/segment on context. Not supported in manual mode.');\n }\n },\n /**\n * Returns true if in automatic mode, otherwise false.\n * @returns {Segment|Subsegment}\n * @alias module:context_utils.isAutomaticMode\n */\n isAutomaticMode: function isAutomaticMode() {\n return cls_mode;\n },\n /**\n * Enables automatic mode. Automatic mode uses 'cls-hooked'.\n * @see https://github.com/jeff-lewis/cls-hooked\n * @alias module:context_utils.enableAutomaticMode\n */\n enableAutomaticMode: function enableAutomaticMode() {\n cls_mode = true;\n contextUtils.getNamespace(NAMESPACE);\n logger.getLogger().debug('Overriding AWS X-Ray SDK mode. Set to automatic mode.');\n },\n /**\n * Disables automatic mode. Current segment or subsegment then must be passed manually\n * via the parent optional on captureFunc, captureAsyncFunc etc.\n * @alias module:context_utils.enableManualMode\n */\n enableManualMode: function enableManualMode() {\n cls_mode = false;\n if (cls.getNamespace(NAMESPACE)) {\n cls.destroyNamespace(NAMESPACE);\n }\n logger.getLogger().debug('Overriding AWS X-Ray SDK mode. Set to manual mode.');\n },\n /**\n * Sets the context missing strategy if no context missing strategy is set using the environment variable with\n * key AWS_XRAY_CONTEXT_MISSING. The context missing strategy's contextMissing function will be called whenever\n * trace context is not found.\n * @param {string|function} strategy - The strategy to set. Valid string values are 'LOG_ERROR' and 'RUNTIME_ERROR'.\n * Alternatively, a custom function can be supplied, which takes a error message string.\n */\n setContextMissingStrategy: function setContextMissingStrategy(strategy) {\n if (!contextOverride) {\n if (typeof strategy === 'string') {\n var lookupStrategy = contextUtils.CONTEXT_MISSING_STRATEGY[strategy.toUpperCase()];\n if (lookupStrategy) {\n contextUtils.contextMissingStrategy.contextMissing = lookupStrategy.contextMissing;\n if (process.env.AWS_XRAY_CONTEXT_MISSING) {\n logger.getLogger().debug('AWS_XRAY_CONTEXT_MISSING is set. Configured context missing strategy to ' +\n process.env.AWS_XRAY_CONTEXT_MISSING + '.');\n }\n else {\n logger.getLogger().debug('Configured context missing strategy to: ' + strategy);\n }\n }\n else {\n throw new Error('Invalid context missing strategy: ' + strategy + '. Valid values are ' +\n Object.keys(contextUtils.CONTEXT_MISSING_STRATEGY) + '.');\n }\n }\n else if (typeof strategy === 'function') {\n contextUtils.contextMissingStrategy.contextMissing = strategy;\n logger.getLogger().info('Configured custom context missing strategy to function: ' + strategy.name);\n }\n else {\n throw new Error('Context missing strategy must be either a string or a custom function.');\n }\n }\n else {\n logger.getLogger().warn('Ignoring call to setContextMissingStrategy as AWS_XRAY_CONTEXT_MISSING is set. ' +\n 'The current context missing strategy will not be changed.');\n }\n }\n};\nif (process.env.AWS_XRAY_MANUAL_MODE) {\n cls_mode = false;\n logger.getLogger().debug('Starting the AWS X-Ray SDK in manual mode.');\n}\nelse {\n cls.createNamespace(NAMESPACE);\n logger.getLogger().debug('Starting the AWS X-Ray SDK in automatic mode (default).');\n}\nif (process.env.AWS_XRAY_CONTEXT_MISSING) {\n contextUtils.setContextMissingStrategy(process.env.AWS_XRAY_CONTEXT_MISSING);\n contextOverride = true;\n}\nelse {\n contextUtils.contextMissingStrategy.contextMissing = contextUtils.CONTEXT_MISSING_STRATEGY.LOG_ERROR.contextMissing;\n logger.getLogger().debug('Using default context missing strategy: LOG_ERROR');\n}\nmodule.exports = contextUtils;\n", "\"use strict\";\nvar { getHttpResponseData } = require('../segments/segment_utils');\n/**\n * Represents an incoming HTTP/HTTPS call.\n * @constructor\n * @param {http.IncomingMessage|https.IncomingMessage} req - The request object from the HTTP/HTTPS call.\n */\nfunction IncomingRequestData(req) {\n this.init(req);\n}\nIncomingRequestData.prototype.init = function init(req) {\n var forwarded = !!req.headers['x-forwarded-for'];\n var url;\n if (req.connection) {\n url = ((req.connection.secure || req.connection.encrypted) ? 'https://' : 'http://') +\n ((req.headers['host'] || '') + (req.url || ''));\n }\n this.request = {\n method: req.method || '',\n user_agent: req.headers['user-agent'] || '',\n client_ip: getClientIp(req) || '',\n url: url || '',\n };\n if (forwarded) {\n this.request.x_forwarded_for = forwarded;\n }\n};\nvar getClientIp = function getClientIp(req) {\n var clientIp;\n if (req.headers['x-forwarded-for']) {\n clientIp = (req.headers['x-forwarded-for'] || '').split(',')[0];\n }\n else if (req.connection && req.connection.remoteAddress) {\n clientIp = req.connection.remoteAddress;\n }\n else if (req.socket && req.socket.remoteAddress) {\n clientIp = req.socket.remoteAddress;\n }\n else if (req.connection && req.connection.socket && req.connection.socket.remoteAddress) {\n clientIp = req.connection.socket.remoteAddress;\n }\n return clientIp;\n};\n/**\n * Closes the local and automatically captures the response data.\n * @param {http.ServerResponse|https.ServerResponse} res - The response object from the HTTP/HTTPS call.\n */\nIncomingRequestData.prototype.close = function close(res) {\n this.response = getHttpResponseData(res);\n};\nmodule.exports = IncomingRequestData;\n", "\"use strict\";\n/**\n * Represents a LocalReservoir object that keeps track of the number of traces per second sampled and\n * the fixed rate for a given sampling rule defined locally.\n * It also decides if a given trace should be sampled or not based on the state of current second.\n * @constructor\n * @param {number} fixedTarget - An integer value to specify the maximum number of traces per second to sample.\n * @param {number} fallbackRate - A value between 0 and 1 indicating the sampling rate after the maximum traces per second has been hit.\n */\nfunction LocalReservoir(fixedTarget, fallbackRate) {\n this.init(fixedTarget, fallbackRate);\n}\nLocalReservoir.prototype.init = function init(fixedTarget, fallbackRate) {\n this.usedThisSecond = 0;\n if (typeof fixedTarget === 'number' && fixedTarget % 1 === 0 && fixedTarget >= 0) {\n this.fixedTarget = fixedTarget;\n }\n else {\n throw new Error('Error in sampling file. Rule attribute \"fixed_target\" must be a non-negative integer.');\n }\n if (typeof fallbackRate === 'number' && fallbackRate >= 0 && fallbackRate <= 1) {\n this.fallbackRate = fallbackRate;\n }\n else {\n throw new Error('Error in sampling file. Rule attribute \"rate\" must be a number between 0 and 1 inclusive.');\n }\n};\nLocalReservoir.prototype.isSampled = function isSampled() {\n var now = Math.round(new Date().getTime() / 1000);\n if (now !== this.thisSecond) {\n this.usedThisSecond = 0;\n this.thisSecond = now;\n }\n if (this.usedThisSecond >= this.fixedTarget) {\n return Math.random() < this.fallbackRate;\n }\n this.usedThisSecond++;\n return true;\n};\nmodule.exports = LocalReservoir;\n", "{\n \"default\": {\n \"fixed_target\": 1,\n \"rate\": 0.05\n },\n \"version\": 2\n}\n", "\"use strict\";\nvar fs = require('fs');\nvar LocalReservoir = require('./local_reservoir');\nvar Utils = require('../../utils');\nvar defaultRules = require('../../resources/default_sampling_rules.json');\nvar logger = require('../../logger');\n/**\n * The local sampler used to make sampling decisions when the decisions are absent in the incoming requests\n * and the default sampler needs to fall back on local rules. It will also be the primary sampler\n * if the default sampler is disabled.\n * @module LocalSampler\n */\nvar LocalSampler = {\n /**\n * Makes a sample decision based on the sample request.\n * @param {object} sampleRequest - Contains information for rules matching.\n * @module LocalSampler\n * @function shouldSample\n */\n shouldSample: function shouldSample(sampleRequest) {\n var host = sampleRequest.host;\n var httpMethod = sampleRequest.httpMethod;\n var urlPath = sampleRequest.urlPath;\n var formatted = '{ http_method: ' + httpMethod + ', host: ' + host + ', url_path: ' + urlPath + ' }';\n var matched;\n this.rules.some(function (rule) {\n // Any null parameters provided will be considered an implicit match.\n if (rule.default || (host == null || (Utils.wildcardMatch(rule.host, host))\n && (httpMethod == null || Utils.wildcardMatch(rule.http_method, httpMethod))\n && (urlPath == null || Utils.wildcardMatch(rule.url_path, urlPath)))) {\n matched = rule.reservoir;\n logger.getLogger().debug('Local sampling rule match found for ' + formatted + '. Matched ' + (rule.default ?\n 'default' : '{ http_method: ' + rule.http_method + ', host: ' + rule.host + ', url_path: ' +\n rule.url_path + ' }') + '. Using fixed_target: ' + matched.fixedTarget + ' and rate: ' + matched.fallbackRate + '.');\n return true;\n }\n });\n if (matched) {\n return matched.isSampled();\n }\n else {\n logger.getLogger().debug('No sampling rule matched for ' + formatted);\n return false;\n }\n },\n /**\n * Set local rules for making sampling decisions.\n * @module LocalSampler\n * @function setLocalRules\n */\n setLocalRules: function setLocalRules(source) {\n if (source) {\n if (typeof source === 'string') {\n logger.getLogger().info('Using custom sampling rules file: ' + source);\n this.rules = loadRulesConfig(JSON.parse(fs.readFileSync(source, 'utf8')));\n }\n else {\n logger.getLogger().info('Using custom sampling rules source.');\n this.rules = loadRulesConfig(source);\n }\n }\n else {\n this.rules = parseRulesConfig(defaultRules);\n }\n }\n};\nvar loadRulesConfig = function loadRulesConfig(config) {\n if (!config.version) {\n throw new Error('Error in sampling file. Missing \"version\" attribute.');\n }\n if (config.version === 1 || config.version === 2) {\n return parseRulesConfig(config);\n }\n else {\n throw new Error('Error in sampling file. Unknown version \"' + config.version + '\".');\n }\n};\nvar parseRulesConfig = function parseRulesConfig(config) {\n var defaultRule;\n var rules = [];\n if (config.default) {\n var missing = [];\n for (var key in config.default) {\n if (key !== 'fixed_target' && key !== 'rate') {\n throw new Error('Error in sampling file. Invalid attribute for default: ' + key +\n '. Valid attributes for default are \"fixed_target\" and \"rate\".');\n }\n else if (typeof config.default[key] !== 'number') {\n throw new Error('Error in sampling file. Default ' + key + ' must be a number.');\n }\n }\n if (typeof config.default.fixed_target === 'undefined') {\n missing.push('fixed_target');\n }\n if (typeof config.default.rate === 'undefined') {\n missing.push('rate');\n }\n if (missing.length !== 0) {\n throw new Error('Error in sampling file. Missing required attributes for default: ' + missing + '.');\n }\n defaultRule = { default: true, reservoir: new LocalReservoir(config.default.fixed_target, config.default.rate) };\n }\n else {\n throw new Error('Error in sampling file. Expecting \"default\" object to be defined with attributes \"fixed_target\" and \"rate\".');\n }\n if (Array.isArray(config.rules)) {\n config.rules.forEach(function (rawRule) {\n var params = {};\n var required;\n if (config.version === 2) {\n required = { host: 1, http_method: 1, url_path: 1, fixed_target: 1, rate: 1 };\n }\n if (config.version === 1) {\n required = { service_name: 1, http_method: 1, url_path: 1, fixed_target: 1, rate: 1 };\n }\n for (var key in rawRule) {\n var value = rawRule[key];\n if (!required[key] && key != 'description') {\n throw new Error('Error in sampling file. Rule ' + JSON.stringify(rawRule) + ' has invalid attribute: ' + key + '.');\n }\n else if (key != 'description' && !value && value !== 0) {\n throw new Error('Error in sampling file. Rule ' + JSON.stringify(rawRule) + ' attribute \"' + key + '\" has invalid value: ' + value + '.');\n }\n else {\n if (config.version === 2) {\n params[key] = value;\n }\n if (config.version === 1 && key === 'service_name') {\n params['host'] = value;\n }\n else {\n params[key] = value;\n }\n delete required[key];\n }\n }\n if (Object.keys(required).length !== 0 && required.constructor === Object) {\n throw new Error('Error in sampling file. Rule ' + JSON.stringify(rawRule) + ' is missing required attributes: ' + Object.keys(required) + '.');\n }\n var rule = params;\n rule.reservoir = new LocalReservoir(rawRule.fixed_target, rawRule.rate);\n rules.push(rule);\n });\n }\n rules.push(defaultRule);\n return rules;\n};\nLocalSampler.setLocalRules();\nmodule.exports = LocalSampler;\n", "\"use strict\";\n/**\n * Represents a Reservoir object that keeps track of the number of traces per second sampled and\n * the fixed rate for a given sampling rule. This information is fetched from X-Ray serivce.\n * It decides if a given trace should be borrowed or sampled or not sampled based on the state of current second.\n * @constructor\n */\nfunction Reservoir() {\n this.init();\n}\nReservoir.prototype.init = function init() {\n this.quota = null;\n this.TTL = null;\n this.takenThisSec = 0;\n this.borrowedThisSec = 0;\n this.reportInterval = 1;\n this.reportElapsed = 0;\n};\nReservoir.prototype.borrowOrTake = function borrowOrTake(now, canBorrow) {\n this.adjustThisSec(now);\n // Don't borrow if the quota is available and fresh.\n if (this.quota >= 0 && this.TTL >= now) {\n if (this.takenThisSec >= this.quota) {\n return false;\n }\n this.takenThisSec++;\n return 'take';\n }\n // Otherwise try to borrow if the quota is not present or expired.\n if (canBorrow) {\n if (this.borrowedThisSec >= 1) {\n return false;\n }\n this.borrowedThisSec++;\n return 'borrow';\n }\n};\nReservoir.prototype.adjustThisSec = function adjustThisSec(now) {\n if (now !== this.thisSec) {\n this.takenThisSec = 0;\n this.borrowedThisSec = 0;\n this.thisSec = now;\n }\n};\nReservoir.prototype.loadNewQuota = function loadNewQuota(quota, TTL, interval) {\n if (quota) {\n this.quota = quota;\n }\n if (TTL) {\n this.TTL = TTL;\n }\n if (interval) {\n this.reportInterval = interval / 10;\n } // Report interval is always time of 10.\n};\nReservoir.prototype.timeToReport = function timeToReport() {\n if (this.reportElapsed + 1 >= this.reportInterval) {\n this.reportElapsed = 0;\n return true;\n }\n else {\n this.reportElapsed += 1;\n return false;\n }\n};\nmodule.exports = Reservoir;\n", "\"use strict\";\nvar Utils = require('../../utils');\nvar Reservoir = require('./reservoir');\n/**\n * The data model for a sampling rule defined using X-Ray API CreateSamplingRules.\n * It should be only instantiated directly from the X-Ray API response.\n * @constructor\n */\nfunction SamplingRule(name, priority, rate, reservoirSize, host, httpMethod, urlPath, serviceName, serviceType) {\n this.init(name, priority, rate, reservoirSize, host, httpMethod, urlPath, serviceName, serviceType);\n}\nSamplingRule.prototype.init = function init(name, priority, rate, reservoirSize, host, httpMethod, urlPath, serviceName, serviceType) {\n this.name = name;\n this.priority = priority;\n this.rate = rate;\n this.host = host;\n this.httpMethod = httpMethod;\n this.urlPath = urlPath;\n this.serviceName = serviceName;\n this.serviceType = serviceType;\n this.reservoir = new Reservoir();\n this.borrow = !!reservoirSize;\n this.resetStatistics();\n};\nSamplingRule.prototype.match = function match(sampleRequest) {\n var host = sampleRequest.host;\n var httpMethod = sampleRequest.httpMethod;\n var serviceName = sampleRequest.serviceName;\n var urlPath = sampleRequest.urlPath;\n var serviceType = sampleRequest.serviceType;\n return this.isDefault() || (!host || Utils.wildcardMatch(this.host, host))\n && (!httpMethod || Utils.wildcardMatch(this.httpMethod, httpMethod))\n && (!serviceName || Utils.wildcardMatch(this.serviceName, serviceName))\n && (!urlPath || Utils.wildcardMatch(this.urlPath, urlPath))\n && (!serviceType || Utils.wildcardMatch(this.serviceType, serviceType));\n};\nSamplingRule.prototype.snapshotStatistics = function snapshotStatistics() {\n var statistics = {\n requestCount: this.requestCount,\n borrowCount: this.borrowCount,\n sampledCount: this.sampledCount\n };\n this.resetStatistics();\n return statistics;\n};\nSamplingRule.prototype.merge = function merge(rule) {\n this.reservoir = rule.reservoir;\n this.requestCount = rule.requestCount;\n this.borrowCount = rule.borrowCount;\n this.sampledCount = rule.sampledCount;\n rule = null; // unref the old rule so it can be garbage collected.\n};\nSamplingRule.prototype.isDefault = function isDefault() {\n return this.name === 'Default'; // \"Default\" is a reserved keyword from X-Ray back-end.\n};\nSamplingRule.prototype.incrementRequestCount = function incrementRequestCount() {\n this.requestCount++;\n};\nSamplingRule.prototype.incrementBorrowCount = function incrementBorrowCount() {\n this.borrowCount++;\n};\nSamplingRule.prototype.incrementSampledCount = function incrementSampledCount() {\n this.sampledCount++;\n};\nSamplingRule.prototype.setRate = function setRate(rate) {\n this.rate = rate;\n};\nSamplingRule.prototype.getRate = function getRate() {\n return this.rate;\n};\nSamplingRule.prototype.getName = function getName() {\n return this.name;\n};\nSamplingRule.prototype.getPriority = function getPriority() {\n return this.priority;\n};\nSamplingRule.prototype.getReservoir = function getReservoir() {\n return this.reservoir;\n};\nSamplingRule.prototype.resetStatistics = function resetStatistics() {\n this.requestCount = 0;\n this.borrowCount = 0;\n this.sampledCount = 0;\n};\nSamplingRule.prototype.canBorrow = function canBorrow() {\n return this.borrow;\n};\nSamplingRule.prototype.everMatched = function everMatched() {\n return this.requestCount > 0;\n};\nSamplingRule.prototype.timeToReport = function timeToReport() {\n return this.reservoir.timeToReport();\n};\nmodule.exports = SamplingRule;\n", "\"use strict\";\nvar crypto = require('crypto');\nvar logger = require('../../logger');\nvar SamplingRule = require('./sampling_rule');\nvar DaemonConfig = require('../../daemon_config');\nconst util = require('util');\nconst http = require('http');\n/**\n * The ServiceConnector that calls X-Ray service and convert the API response bodies to data models\n * defined in the X-Ray SDK and return them to the pollers.\n * @module ServiceConnector\n */\nvar ServiceConnector = {\n // client_id is a 12 byte cryptographically secure random hex\n // identifying the SDK instance and is generated during SDK initialization/\n // This is required when reporting sampling to X-Ray back-end.\n clientId: crypto.randomBytes(12).toString('hex'),\n samplingRulesPath: '/GetSamplingRules',\n samplingTargetsPath: '/SamplingTargets',\n logger: logger,\n httpClient: http,\n fetchSamplingRules: function fetchSamplingRules(callback) {\n const body = '{}'; // Payload needed for GetSamplingRules POST request\n const options = getOptions(this.samplingRulesPath, body.length);\n const httpReq = this.httpClient.__request ? this.httpClient.__request : this.httpClient.request;\n const req = httpReq(options, res => {\n var data = '';\n res.on('data', d => {\n data += d;\n });\n res.on('error', error => {\n callback(error);\n });\n res.on('end', () => {\n var dataObj;\n try {\n dataObj = JSON.parse(data);\n }\n catch (err) {\n callback(err);\n return;\n }\n if (!dataObj) {\n callback(new Error('AWS X-Ray GetSamplingRules API returned empty response'));\n return;\n }\n var newRules = assembleRules(dataObj);\n callback(null, newRules);\n });\n });\n req.on('error', () => {\n callback(new Error(`Failed to connect to X-Ray daemon at ${options.hostname}:${options.port} to get sampling rules.`));\n });\n req.write(body);\n req.end();\n },\n fetchTargets: function fetchTargets(rules, callback) {\n const body = JSON.stringify(constructStatisticsDocs(rules));\n const options = getOptions(this.samplingTargetsPath, body.length);\n const httpReq = this.httpClient.__request ? this.httpClient.__request : this.httpClient.request;\n const req = httpReq(options, res => {\n var data = '';\n res.on('data', d => {\n data += d;\n });\n res.on('error', error => {\n callback(error);\n });\n res.on('end', () => {\n var dataObj;\n try {\n dataObj = JSON.parse(data);\n }\n catch (err) {\n callback(err);\n return;\n }\n if (!dataObj || typeof dataObj['LastRuleModification'] != 'number') {\n callback(new Error('AWS X-Ray SamplingTargets API returned invalid response'));\n return;\n }\n var targetsMapping = assembleTargets(dataObj);\n var ruleFreshness = dateToEpoch(dataObj['LastRuleModification']);\n callback(null, targetsMapping, ruleFreshness);\n });\n });\n req.on('error', () => {\n callback(new Error(`Failed to connect to X-Ray daemon at ${options.hostname}:${options.port} to get sampling targets.`));\n });\n req.write(body);\n req.end();\n }\n};\nvar constructStatisticsDocs = function constructStatisticsDocs(rules) {\n var documents = [];\n var now = Math.floor(new Date().getTime() / 1000);\n rules.forEach(function (rule) {\n var statistics = rule.snapshotStatistics();\n var doc = {\n 'RuleName': rule.getName(),\n 'ClientID': ServiceConnector.clientId,\n 'RequestCount': statistics.requestCount,\n 'BorrowCount': statistics.borrowCount,\n 'SampledCount': statistics.sampledCount,\n 'Timestamp': now\n };\n documents.push(doc);\n });\n return { SamplingStatisticsDocuments: documents };\n};\nvar assembleRules = function assembleRules(data) {\n var newRules = [];\n var ruleList = data['SamplingRuleRecords'] || [];\n ruleList.forEach(function (ruleRecord) {\n ruleRecord = ruleRecord['SamplingRule'];\n // For forward compatibility reason right now it only\n // deals with version 1 sampling rules.\n if (isRuleValid(ruleRecord)) {\n var newRule = new SamplingRule(ruleRecord['RuleName'], ruleRecord['Priority'], ruleRecord['FixedRate'], ruleRecord['ReservoirSize'], ruleRecord['Host'], ruleRecord['HTTPMethod'], ruleRecord['URLPath'], ruleRecord['ServiceName'], ruleRecord['ServiceType']);\n newRules.push(newRule);\n }\n });\n return newRules;\n};\nvar assembleTargets = function assembleTargets(data) {\n var docs = data['SamplingTargetDocuments'] || [];\n var targetsMapping = {};\n docs.forEach(function (doc) {\n var newTarget = {\n rate: doc['FixedRate'],\n quota: doc['ReservoirQuota'],\n TTL: dateToEpoch(doc['ReservoirQuotaTTL']),\n interval: doc['Interval']\n };\n targetsMapping[doc['RuleName']] = newTarget;\n });\n return targetsMapping;\n};\nvar isRuleValid = function isRuleValid(record) {\n return record['Version'] === 1\n && record['ResourceARN'] === '*'\n && record['Attributes'] && Object.keys(record['Attributes']).length === 0\n && record['ServiceType']\n && record['RuleName']\n && record['Priority']\n && typeof record['FixedRate'] == 'number';\n};\nvar dateToEpoch = function dateToEpoch(date) {\n return new Date(date).getTime() / 1000;\n};\nvar getOptions = function getOptions(path, contentLength) {\n const options = {\n hostname: DaemonConfig.tcp_ip,\n port: DaemonConfig.tcp_port,\n method: 'POST',\n path: path,\n headers: {\n 'Content-Type': 'application/json',\n 'Content-Length': contentLength,\n 'Host': util.format('%s:%d', DaemonConfig.tcp_ip, DaemonConfig.tcp_port)\n }\n };\n return options;\n};\nmodule.exports = ServiceConnector;\n", "\"use strict\";\nvar TTL = 60 * 60; // The cache expires 1 hour after the last refresh time.\n/**\n * The rule cache that stores sampling rules fetched from X-Ray service.\n * @module RuleCache\n */\nvar RuleCache = {\n rules: [],\n lastUpdated: null,\n /**\n * Tries to find a valid rule that matches the sample request.\n * @param {object} sampleRequest - Contains information for rules matching.\n * @param {number} now - Current epoch in seconds.\n * @module RuleCache\n * @function getMatchedRule\n */\n getMatchedRule: function getMatchedRule(sampleRequest, now) {\n if (isExpired(now)) {\n return null;\n }\n var matchedRule;\n this.rules.forEach(function (rule) {\n if (!matchedRule && rule.match(sampleRequest)) {\n matchedRule = rule;\n }\n if (rule.isDefault() && !matchedRule) {\n matchedRule = rule;\n }\n });\n return matchedRule;\n },\n /**\n * Load rules fetched from X-Ray service in order sorted by priorities.\n * @param {object} rules - Newly fetched rules to load.\n * @module RuleCache\n * @function loadRules\n */\n loadRules: function loadRules(rules) {\n // Record the old rules for later merging.\n var oldRules = {};\n this.rules.forEach(function (rule) {\n oldRules[rule.getName()] = rule;\n });\n // Update the rules in the cache.\n this.rules = rules;\n // Transfer state information to refreshed rules.\n this.rules.forEach(function (rule) {\n var oldRule = oldRules[rule.getName()];\n if (oldRule) {\n rule.merge(oldRule);\n }\n });\n // The cache should maintain the order of the rules based on\n // priority. If priority is the same we sort name by alphabet\n // as rule name is unique.\n this.rules.sort(function (a, b) {\n var v = a.getPriority() - b.getPriority();\n if (v !== 0) {\n return v;\n }\n if (a.getName() > b.getName()) {\n return 1;\n }\n else {\n return -1;\n }\n });\n },\n /**\n * Load targets fetched from X-Ray service.\n * @param {object} targetsMapping - Newly fetched targets map with rule name as key.\n * @module RuleCache\n * @function loadTargets\n */\n loadTargets: function loadTargets(targetsMapping) {\n this.rules.forEach(function (rule) {\n var target = targetsMapping[rule.getName()];\n if (target) {\n rule.getReservoir().loadNewQuota(target.quota, target.TTL, target.interval);\n rule.setRate(target.rate);\n }\n });\n },\n getRules: function getRules() {\n return this.rules;\n },\n timestamp: function timestamp(now) {\n this.lastUpdated = now;\n },\n getLastUpdated: function getLastUpdated() {\n return this.lastUpdated;\n }\n};\nvar isExpired = function isExpired(now) {\n // The cache is considered expired if it is never loaded.\n if (!RuleCache.getLastUpdated()) {\n return true;\n }\n return now > RuleCache.getLastUpdated() + TTL;\n};\nmodule.exports = RuleCache;\n", "\"use strict\";\nvar logger = require('../../logger');\nvar ServiceConnector = require('./service_connector');\nvar ruleCache = require('./rule_cache');\nvar DEFAULT_INTERVAL = 5 * 60 * 1000; // 5 minutes on sampling rules fetch\n/**\n * The RulePoller that periodically fetch sampling rules from X-Ray service\n * and load them into RuleCache.\n * @module RulePoller\n */\nvar RulePoller = {\n start: function start() {\n if (this.poller) {\n clearInterval(this.poller);\n }\n // Refresh sampling rules cache with no jitter upon start.\n refresh(false);\n this.poller = setInterval(refresh, DEFAULT_INTERVAL);\n this.poller.unref();\n },\n};\nvar refresh = function refresh(jitter) {\n // Add jitter by default unless explicitly told not to.\n jitter = typeof jitter === 'undefined' ? true : jitter;\n if (jitter) {\n var delay = getJitter();\n setTimeout(refreshWithFirewall, delay);\n }\n else {\n refreshWithFirewall();\n }\n};\nvar refreshWithFirewall = function refreshWithFirewall() {\n try {\n refreshCache();\n }\n catch (e) {\n logger.getLogger().warn('Encountered unexpected exception when fetching sampling rules: ' + e);\n }\n};\nvar refreshCache = function refreshCache() {\n // Timestamp should be generated *before* the actual outbound call to ensure\n // we don't mark the cache as being fresher than it actually is.\n var now = Math.floor(new Date().getTime() / 1000);\n // Pass a callback that only runs when the new rules are\n // successfully fetched.\n ServiceConnector.fetchSamplingRules(function (err, newRules) {\n if (err) {\n logger.getLogger().warn('Failed to retrieve sampling rules from X-Ray service:', err);\n }\n else if (newRules.length !== 0) {\n ruleCache.loadRules(newRules);\n ruleCache.timestamp(now);\n logger.getLogger().info('Successfully refreshed centralized sampling rule cache.');\n }\n });\n};\n// A random jitter of up to 5 seconds is injected after every run to ensure\n// the calls eventually get evenly distributed over the 5 minute window.\nvar getJitter = function getJitter() {\n return Math.random() * 5;\n};\nmodule.exports = RulePoller;\n", "\"use strict\";\nvar rulePoller = require('./rule_poller');\nvar serviceConnector = require('./service_connector');\nvar ruleCache = require('./rule_cache');\nvar logger = require('../../logger');\nvar DEFAULT_INTERVAL = 10 * 1000; // 10 seconds on sampling targets fetch\n/**\n * The TargetPoller that periodically fetch sampling targets from X-Ray service\n * and load them into RuleCache.\n * @module TargetPoller\n */\nvar TargetPoller = {\n interval: DEFAULT_INTERVAL,\n start: function start() {\n this.poller = setInterval(refreshWithFirewall, DEFAULT_INTERVAL + getJitter());\n this.poller.unref();\n },\n};\nvar refreshWithFirewall = function refreshWithFirewall() {\n try {\n refresh();\n }\n catch (e) {\n logger.getLogger().warn('Encountered unexpected exception when fetching sampling targets: ' + e);\n }\n};\nvar refresh = function refresh() {\n var candidates = getCandidates();\n if (candidates && candidates.length > 0) {\n serviceConnector.fetchTargets(candidates, function (err, targetsMapping, ruleFreshness) {\n if (err) {\n logger.getLogger().warn('Failed to retrieve sampling targets from X-Ray service:', err);\n return;\n }\n ruleCache.loadTargets(targetsMapping);\n if (ruleFreshness > ruleCache.getLastUpdated()) {\n logger.getLogger().info('Performing out-of-band sampling rule polling to fetch updated rules.');\n rulePoller.start();\n }\n logger.getLogger().info('Successfully reported rule statistics to get new sampling quota.');\n });\n }\n};\n// Don't report a rule statistics if any of the conditions is met:\n// 1. The report time hasn't come (some rules might have larger report intervals).\n// 2. The rule is never matched.\nvar getCandidates = function getCandidates() {\n var rules = ruleCache.getRules();\n var candidates = [];\n rules.forEach(function (rule) {\n if (rule.everMatched() && rule.timeToReport()) {\n candidates.push(rule);\n }\n });\n return candidates;\n};\n// A random jitter of up to 0.1 seconds is injected after every run to ensure\n// the calls eventually get evenly distributed over the 10 second window.\nvar getJitter = function getJitter() {\n return Math.random() / TargetPoller.interval;\n};\nmodule.exports = TargetPoller;\n", "\"use strict\";\nvar logger = require('../../logger');\nconst util = require('util');\nvar SegmentUtils = require('../../segments/segment_utils');\n/**\n * The default sampler used to make sampling decisions when the decisions are absent in the incoming requests.\n * The sampler use pollers to poll sampling rules from X-Ray service.\n * @module DefaultSampler\n */\nvar DefaultSampler = {\n localSampler: require('./local_sampler'),\n rulePoller: require('./rule_poller'),\n targetPoller: require('./target_poller'),\n ruleCache: require('./rule_cache'),\n started: false,\n /**\n * Makes a sample decision based on the sample request.\n * @param {object} sampleRequest - Contains information for rules matching.\n * @module DefaultSampler\n * @function shouldSample\n */\n shouldSample: function shouldSample(sampleRequest) {\n try {\n if (!this.started) {\n this.start();\n }\n if (!sampleRequest.serviceType) {\n sampleRequest.serviceType = SegmentUtils.origin;\n }\n var now = Math.floor(new Date().getTime() / 1000);\n var matchedRule = this.ruleCache.getMatchedRule(sampleRequest, now);\n if (matchedRule) {\n logger.getLogger().debug(util.format('Rule %s is matched.', matchedRule.getName()));\n return processMatchedRule(matchedRule, now);\n }\n else {\n logger.getLogger().info('No effective centralized sampling rule match. Fallback to local rules.');\n return this.localSampler.shouldSample(sampleRequest);\n }\n }\n catch (err) {\n logger.getLogger().error('Unhandled exception by the SDK during making sampling decisions: ' + err);\n }\n },\n /**\n * Set local rules in case there is a need to fallback.\n * @module DefaultSampler\n * @function setLocalRules\n */\n setLocalRules: function setLocalRules(source) {\n this.localSampler.setLocalRules(source);\n },\n /**\n * Start the pollers to poll sampling rules and targets from X-Ray service.\n * @module DefaultSampler\n * @function start\n */\n start: function start() {\n if (!this.started) {\n this.rulePoller.start();\n this.targetPoller.start();\n this.started = true;\n }\n }\n};\nvar processMatchedRule = function processMatchedRule(rule, now) {\n // As long as a rule is matched we increment request counter.\n rule.incrementRequestCount();\n var reservoir = rule.getReservoir();\n var sample = true;\n // We check if we can borrow or take from reservoir first.\n var decision = reservoir.borrowOrTake(now, rule.canBorrow());\n if (decision === 'borrow') {\n rule.incrementBorrowCount();\n }\n else if (decision === 'take') {\n rule.incrementSampledCount();\n }\n else if (Math.random() <= rule.getRate()) {\n // Otherwise we compute based on FixedRate of this sampling rule.\n rule.incrementSampledCount();\n }\n else {\n sample = false;\n }\n if (sample) {\n return rule.getName();\n }\n else {\n return false;\n }\n};\nmodule.exports = DefaultSampler;\n", "\"use strict\";\n/**\n * Middleware Utils module.\n *\n * Exposes various configuration and helper methods to be used by the middleware.\n * @module mw_utils\n */\nvar Segment = require('../segments/segment');\nvar IncomingRequestData = require('./incoming_request_data');\nvar logger = require('../logger');\nvar coreUtils = require('../utils');\nvar wildcardMatch = require('../utils').wildcardMatch;\nvar processTraceData = require('../utils').processTraceData;\n//headers are case-insensitive\nvar XRAY_HEADER = 'x-amzn-trace-id';\nvar overrideFlag = !!process.env.AWS_XRAY_TRACING_NAME;\nvar utils = {\n defaultName: process.env.AWS_XRAY_TRACING_NAME,\n dynamicNaming: false,\n hostPattern: null,\n sampler: require('./sampling/default_sampler'),\n /**\n * Enables dynamic naming for segments via the middleware. Use 'AWSXRay.middleware.enableDynamicNaming()'.\n * @param {string} [hostPattern] - The pattern to match the host header. See the README on dynamic and fixed naming modes.\n * @alias module:mw_utils.enableDynamicNaming\n */\n enableDynamicNaming: function (hostPattern) {\n this.dynamicNaming = true;\n if (hostPattern && typeof hostPattern !== 'string') {\n throw new Error('Host pattern must be a string.');\n }\n this.hostPattern = hostPattern || null;\n },\n /**\n * Splits out the 'x-amzn-trace-id' header params from the incoming request. Used by the middleware.\n * @param {http.IncomingMessage|https.IncomingMessage} req - The request object from the incoming call.\n * @returns {object}\n * @alias module:mw_utils.processHeaders\n */\n processHeaders: function processHeaders(req) {\n var amznTraceHeader = {};\n if (req && req.headers && req.headers[XRAY_HEADER]) {\n amznTraceHeader = processTraceData(req.headers[XRAY_HEADER]);\n }\n return amznTraceHeader;\n },\n /**\n * Resolves the name of the segment as determined by fixed or dynamic mode options. Used by the middleware.\n * @param {string} hostHeader - The string from the request.headers.host property.\n * @returns {string}\n * @alias module:mw_utils.resolveName\n */\n resolveName: function resolveName(hostHeader) {\n var name;\n if (this.dynamicNaming && hostHeader) {\n name = this.hostPattern ? (wildcardMatch(this.hostPattern, hostHeader) ? hostHeader : this.defaultName) : hostHeader;\n }\n else {\n name = this.defaultName;\n }\n return name;\n },\n /**\n * Resolves the sampling decision as determined by the values given and options set. Used by the middleware.\n * @param {object} amznTraceHeader - The object as returned by the processHeaders function.\n * @param {Segment} segment - The string from the request.headers.host property.\n * @param {http.ServerResponse|https.ServerResponse} res - The response object from the incoming call.\n * @returns {boolean}\n * @alias module:mw_utils.resolveSampling\n */\n resolveSampling: function resolveSampling(amznTraceHeader, segment, res) {\n var isSampled;\n if (amznTraceHeader.sampled === '1') {\n isSampled = true;\n }\n else if (amznTraceHeader.sampled === '0') {\n isSampled = false;\n }\n else {\n var sampleRequest = {\n host: res.req.headers.host,\n httpMethod: res.req.method,\n urlPath: res.req.url,\n serviceName: segment.name\n };\n isSampled = this.sampler.shouldSample(sampleRequest);\n if (isSampled instanceof String || typeof isSampled === 'string') {\n segment.setMatchedSamplingRule(isSampled);\n isSampled = true;\n }\n }\n if (amznTraceHeader.sampled === '?') {\n res.header[XRAY_HEADER] = 'Root=' + amznTraceHeader.root + ';Sampled=' + (isSampled ? '1' : '0');\n }\n if (!isSampled) {\n segment.notTraced = true;\n }\n },\n /**\n * Sets the default name of created segments. Used with the middleware.\n * Can be overridden by the AWS_XRAY_TRACING_NAME environment variable.\n * @param {string} name - The default name for segments created in the middleware.\n * @alias module:mw_utils.setDefaultName\n */\n setDefaultName: function setDefaultName(name) {\n if (!overrideFlag) {\n this.defaultName = name;\n }\n },\n disableCentralizedSampling: function disableCentralizedSampling() {\n this.sampler = require('./sampling/local_sampler');\n },\n /**\n * Overrides the default sampling rules file to specify at what rate to sample at for specific routes.\n * The base sampling rules file can be found at /lib/resources/default_sampling_rules.json\n * @param {string|Object} source - The path to the custom sampling rules file, or the source JSON object.\n * @memberof AWSXRay\n */\n setSamplingRules: function setSamplingRules(source) {\n if (!source || source instanceof String || !(typeof source === 'string' || (source instanceof Object))) {\n throw new Error('Please specify a path to the local sampling rules file, or supply an object containing the rules.');\n }\n this.sampler.setLocalRules(source);\n },\n /**\n * Logs a debug message including core request and segment information\n * @param {string} message - The message to be logged\n * @param {string} url - The request url being traced\n * @param {Segment} - The current segment\n */\n middlewareLog: function middlewareLog(message, url, segment) {\n logger.getLogger().debug(message + ': { url: ' + url + ', name: ' + segment.name + ', trace_id: ' +\n segment.trace_id + ', id: ' + segment.id + ', sampled: ' + !segment.notTraced + ' }');\n },\n /**\n * Traces the request/response cycle of an http.IncomingMessage / http.ServerResponse pair.\n * Resolves sampling rules, creates a segment, adds the core request / response data adding\n * throttling / error / fault flags based on the response status code.\n * @param {http.IncomingMessage} req - The incoming request.\n * @param {http.ServerResponse} res - The server response.\n * @returns {Segment}\n * @memberof AWSXRay\n */\n traceRequestResponseCycle: function traceRequestResponseCycle(req, res) {\n var amznTraceHeader = this.processHeaders(req);\n var name = this.resolveName(req.headers.host);\n var segment = new Segment(name, amznTraceHeader.root, amznTraceHeader.parent);\n var responseWithEmbeddedRequest = Object.assign({}, res, { req: req });\n this.resolveSampling(amznTraceHeader, segment, responseWithEmbeddedRequest);\n segment.addIncomingRequestData(new IncomingRequestData(req));\n this.middlewareLog('Starting middleware segment', req.url, segment);\n var middlewareLog = this.middlewareLog;\n var didEnd = false;\n var endSegment = function () {\n // ensure `endSegment` is only called once\n // in some versions of node.js 10.x and in all versions of node.js 11.x and higher,\n // the 'finish' and 'close' event are BOTH triggered.\n // Previously, only one or the other was triggered:\n // https://github.com/nodejs/node/pull/20611\n if (didEnd) {\n return;\n }\n didEnd = true;\n if (res.statusCode === 429) {\n segment.addThrottleFlag();\n }\n const cause = coreUtils.getCauseTypeFromHttpStatus(res.statusCode);\n if (cause) {\n segment[cause] = true;\n }\n segment.http.close(res);\n segment.close();\n middlewareLog('Closed middleware segment successfully', req.url, segment);\n };\n res.on('finish', endSegment);\n res.on('close', endSegment);\n return segment;\n }\n};\nmodule.exports = utils;\n", "\"use strict\";\nvar contextUtils = require('../context_utils');\nvar mwUtils = require('../middleware/mw_utils');\nvar LambdaUtils = require('../utils').LambdaUtils;\nvar Segment = require('../segments/segment');\nvar SegmentEmitter = require('../segment_emitter');\nvar SegmentUtils = require('../segments/segment_utils');\nvar logger = require('../logger');\nconst TraceID = require('../segments/attributes/trace_id');\n/**\n * @namespace\n * @ignore\n */\nvar xAmznTraceIdPrev = null;\n/**\n* Used to initialize segments on AWS Lambda with extra data from the context.\n*/\nmodule.exports.init = function init() {\n contextUtils.enableManualMode = function () {\n logger.getLogger().warn('AWS Lambda does not support AWS X-Ray manual mode.');\n };\n SegmentEmitter.disableReusableSocket();\n SegmentUtils.setStreamingThreshold(0);\n /**\n * Disabling all centralized sampling in Lambda environments. The sampling decisions would be\n * uselessly applied to the facade segment, and the sampling pollers were causing errors.\n *\n * See: https://github.com/aws/aws-xray-sdk-node/issues/217\n */\n logger.getLogger().info('Disabling centralized sampling in Lambda environment.');\n mwUtils.disableCentralizedSampling();\n var namespace = contextUtils.getNamespace();\n namespace.enter(namespace.createContext());\n contextUtils.setSegment(facadeSegment());\n};\nvar facadeSegment = function facadeSegment() {\n var segment = new Segment('facade');\n var whitelistFcn = ['addNewSubsegment', 'addSubsegment', 'removeSubsegment', 'toString', 'addSubsegmentWithoutSampling', 'addNewSubsegmentWithoutSampling'];\n var silentFcn = ['incrementCounter', 'decrementCounter', 'isClosed', 'close', 'format', 'flush'];\n var xAmznTraceId = process.env._X_AMZN_TRACE_ID;\n for (var key in segment) {\n if (typeof segment[key] === 'function' && whitelistFcn.indexOf(key) === -1) {\n if (silentFcn.indexOf(key) === -1) {\n segment[key] = (function () {\n var func = key;\n return function facade() {\n logger.getLogger().warn('Function \"' + func + '\" cannot be called on an AWS Lambda segment. Please use a subsegment to record data.');\n return;\n };\n })();\n }\n else {\n segment[key] = function facade() {\n return;\n };\n }\n }\n }\n segment.trace_id = TraceID.Invalid().toString();\n segment.isClosed = function () {\n return true;\n };\n segment.in_progress = false;\n segment.counter = 1;\n segment.notTraced = true;\n segment.facade = true;\n segment.reset = function reset() {\n this.trace_id = TraceID.Invalid().toString();\n this.id = '00000000';\n delete this.subsegments;\n this.notTraced = true;\n };\n segment.resolveLambdaTraceData = function resolveLambdaTraceData() {\n var xAmznLambda = process.env._X_AMZN_TRACE_ID;\n if (xAmznLambda) {\n // This check resets the trace data whenever a new trace header is read to not leak data between invocations\n if (xAmznLambda != xAmznTraceIdPrev) {\n this.reset();\n if (LambdaUtils.populateTraceData(segment, xAmznLambda)) {\n xAmznTraceIdPrev = xAmznLambda;\n }\n }\n }\n else {\n this.reset();\n contextUtils.contextMissingStrategy.contextMissing('Missing AWS Lambda trace data for X-Ray. ' +\n 'Ensure Active Tracing is enabled and no subsegments are created outside the function handler.');\n }\n };\n // Test for valid trace data during SDK startup. It's likely we're still in the cold-start portion of the\n // code at this point and a valid trace header has not been set\n if (LambdaUtils.validTraceData(xAmznTraceId)) {\n if (LambdaUtils.populateTraceData(segment, xAmznTraceId)) {\n xAmznTraceIdPrev = xAmznTraceId;\n }\n }\n return segment;\n};\n", "{\n \"name\": \"aws-xray-sdk-core\",\n \"version\": \"3.5.2\",\n \"description\": \"AWS X-Ray SDK for Javascript\",\n \"author\": \"Amazon Web Services\",\n \"contributors\": [\n \"Sandra McMullen <mcmuls@amazon.com>\",\n \"William Armiros <armiros@amazon.com>\",\n \"Moritz Onken <onken@netcubed.de>\"\n ],\n \"files\": [\n \"dist/lib/**/*\",\n \"LICENSE\",\n \"README.md\"\n ],\n \"main\": \"dist/lib/index.js\",\n \"types\": \"dist/lib/index.d.ts\",\n \"engines\": {\n \"node\": \">= 14.x\"\n },\n \"directories\": {\n \"test\": \"test\"\n },\n \"//\": \"@types/cls-hooked is exposed in API so must be in dependencies, not devDependencies\",\n \"dependencies\": {\n \"@aws-sdk/service-error-classification\": \"^3.4.1\",\n \"@aws-sdk/types\": \"^3.4.1\",\n \"@types/cls-hooked\": \"^4.3.3\",\n \"atomic-batcher\": \"^1.0.2\",\n \"cls-hooked\": \"^4.2.2\",\n \"semver\": \"^7.5.3\"\n },\n \"scripts\": {\n \"prepare\": \"npm run compile\",\n \"compile\": \"tsc && npm run copy-lib && npm run copy-test\",\n \"copy-lib\": \"find lib -type f \\\\( -name '*.d.ts' -o -name '*.json' \\\\) | xargs -I % ../../scripts/cp-with-structure.sh % dist\",\n \"copy-test\": \"find test -name '*.json' | xargs -I % ../../scripts/cp-with-structure.sh % dist\",\n \"lint\": \"eslint .\",\n \"lint:fix\": \"eslint . --fix\",\n \"test\": \"npm run compile && mocha --recursive ./dist/test/ -R spec && tsd && mocha --recursive ./dist/test_async/ -R spec\",\n \"test-d\": \"tsd\",\n \"test-async\": \"npm run compile && mocha --recursive ./dist/test_async/ -R spec\",\n \"clean\": \"rm -rf dist && rm -rf node_modules\",\n \"testcov\": \"nyc npm run test\",\n \"reportcov\": \"nyc report --reporter=text-lcov > coverage.lcov && codecov\"\n },\n \"keywords\": [\n \"amazon\",\n \"api\",\n \"aws\",\n \"core\",\n \"xray\",\n \"x-ray\",\n \"x ray\"\n ],\n \"license\": \"Apache-2.0\",\n \"repository\": \"https://github.com/aws/aws-xray-sdk-node/tree/master/packages/core\",\n \"gitHead\": \"6a9f9991c4aa3eead1609f986ea9354d50f5436f\"\n}\n", "\"use strict\";\nvar http = require('http');\nvar Plugin = {\n METADATA_TIMEOUT: 1000,\n /**\n * Asynchronously retrieves metadata from on-instance endpoint with an HTTP request using retries for\n * requests that time out.\n * @param {object} options - The HTTP options to make the request with\n * @param {function} callback - callback to plugin\n */\n getPluginMetadata: function (options, callback) {\n const METADATA_RETRY_TIMEOUT = 250; // Millis\n const METADATA_RETRIES = 5;\n var retries = METADATA_RETRIES;\n var getMetadata = function () {\n var httpReq = http.__request ? http.__request : http.request;\n var req = httpReq(options, function (res) {\n var body = '';\n res.on('data', function (chunk) {\n body += chunk;\n });\n res.on('end', function () {\n if (this.statusCode === 200 || this.statusCode === 300) {\n try {\n body = JSON.parse(body);\n }\n catch (e) {\n callback(e);\n return;\n }\n callback(null, body);\n }\n else if (retries > 0 && Math.floor(this.statusCode / 100) === 5) {\n retries--;\n setTimeout(getMetadata, METADATA_RETRY_TIMEOUT);\n }\n else {\n callback(new Error(`Failed to retrieve metadata with options: ${options}`));\n }\n });\n });\n req.on('error', function (err) {\n callback(err);\n });\n req.on('timeout', function () {\n req.abort();\n });\n req.setTimeout(Plugin.METADATA_TIMEOUT);\n req.end();\n };\n getMetadata();\n }\n};\nmodule.exports = Plugin;\n", "\"use strict\";\nvar Plugin = require('./plugin');\nvar logger = require('../../logger');\nvar http = require('http');\nvar EC2Plugin = {\n /**\n * A function to get the instance data from the EC2 metadata service.\n * @param {function} callback - The callback for the plugin loader.\n */\n getData: function (callback) {\n const METADATA_PATH = '/latest/dynamic/instance-identity/document';\n function populateMetadata(token) {\n const options = getOptions(METADATA_PATH, 'GET', token ? { 'X-aws-ec2-metadata-token': token } : {});\n Plugin.getPluginMetadata(options, function (err, data) {\n if (err || !data) {\n logger.getLogger().error('Error loading EC2 plugin metadata: ', err ? err.toString() : 'Could not retrieve data from IMDS.');\n callback();\n return;\n }\n const metadata = {\n ec2: {\n instance_id: data.instanceId,\n availability_zone: data.availabilityZone,\n instance_size: data.instanceType,\n ami_id: data.imageId\n }\n };\n callback(metadata);\n });\n }\n /**\n * This kicks off a requet to get a token used for requests to IMDSv2. If the request for the token\n * fails, we fall back to IMDSv1. Otherwise, the token will be used for an IMDSv2 request.\n */\n getToken(function (token) {\n if (token === null) {\n logger.getLogger().debug('EC2Plugin failed to get token from IMDSv2. Falling back to IMDSv1.');\n }\n populateMetadata(token);\n });\n },\n originName: 'AWS::EC2::Instance'\n};\n/**\n * Asynchronously retrieves a token used in requests to EC2 instance metadata service.\n * @param {function} callback - callback to plugin\n */\nfunction getToken(callback) {\n const httpReq = http.__request ? http.__request : http.request;\n const TTL = 60; //seconds\n const TOKEN_PATH = '/latest/api/token';\n const options = getOptions(TOKEN_PATH, 'PUT', {\n 'X-aws-ec2-metadata-token-ttl-seconds': TTL\n });\n let req = httpReq(options, function (res) {\n let body = '';\n res.on('data', function (chunk) {\n body += chunk;\n });\n res.on('end', function () {\n if (this.statusCode === 200 || this.statusCode === 300) {\n callback(body);\n }\n else {\n callback(null);\n }\n });\n });\n req.on('error', function () {\n callback(null);\n });\n req.on('timeout', function () {\n req.abort();\n callback(null);\n });\n req.setTimeout(Plugin.METADATA_TIMEOUT);\n req.end();\n}\nfunction getOptions(path, method, headers) {\n if (!method) {\n method = 'GET';\n }\n if (!headers) {\n headers = {};\n }\n return {\n host: '169.254.169.254',\n path: path,\n method: method,\n headers: headers\n };\n}\nmodule.exports = EC2Plugin;\n", "\"use strict\";\nvar os = require('os');\nvar ECSPlugin = {\n /**\n * A function to get the instance data from the ECS instance.\n * @param {function} callback - The callback for the plugin loader.\n */\n getData: function (callback) {\n callback({ ecs: { container: os.hostname() } });\n },\n originName: 'AWS::ECS::Container'\n};\nmodule.exports = ECSPlugin;\n", "\"use strict\";\nvar fs = require('fs');\nvar logger = require('../../logger');\nvar ENV_CONFIG_LOCATION = '/var/elasticbeanstalk/xray/environment.conf';\nvar ElasticBeanstalkPlugin = {\n /**\n * A function to get data from the Elastic Beanstalk environment configuration file.\n * @param {function} callback - The callback for the plugin loader.\n */\n getData: function (callback) {\n fs.readFile(ENV_CONFIG_LOCATION, 'utf8', function (err, rawData) {\n if (err) {\n logger.getLogger().error('Error loading Elastic Beanstalk plugin:', err.stack);\n callback();\n }\n else {\n var data = JSON.parse(rawData);\n var metadata = {\n elastic_beanstalk: {\n environment: data.environment_name,\n version_label: data.version_label,\n deployment_id: data.deployment_id\n }\n };\n callback(metadata);\n }\n });\n },\n originName: 'AWS::ElasticBeanstalk::Environment'\n};\nmodule.exports = ElasticBeanstalkPlugin;\n", "{\n \"services\": {\n \"dynamodb\": {\n \"operations\": {\n \"batchGetItem\": {\n \"request_descriptors\": {\n \"RequestItems\": {\n \"get_keys\": true,\n \"rename_to\": \"table_names\"\n }\n },\n \"response_parameters\": [\n \"ConsumedCapacity\"\n ]\n },\n \"batchWriteItem\": {\n \"request_descriptors\": {\n \"RequestItems\": {\n \"get_keys\": true,\n \"rename_to\": \"table_names\"\n }\n },\n \"response_parameters\": [\n \"ConsumedCapacity\",\n \"ItemCollectionMetrics\"\n ]\n },\n \"createTable\": {\n \"request_parameters\": [\n \"GlobalSecondaryIndexes\",\n \"LocalSecondaryIndexes\",\n \"ProvisionedThroughput\",\n \"TableName\"\n ]\n },\n \"deleteItem\": {\n \"request_parameters\": [\n \"TableName\"\n ],\n \"response_parameters\": [\n \"ConsumedCapacity\",\n \"ItemCollectionMetrics\"\n ]\n },\n \"deleteTable\": {\n \"request_parameters\": [\n \"TableName\"\n ]\n },\n \"describeTable\": {\n \"request_parameters\": [\n \"TableName\"\n ]\n },\n \"getItem\": {\n \"request_parameters\": [\n \"ConsistentRead\",\n \"ProjectionExpression\",\n \"TableName\"\n ],\n \"response_parameters\": [\n \"ConsumedCapacity\"\n ]\n },\n \"listTables\": {\n \"request_parameters\": [\n \"ExclusiveStartTableName\",\n \"Limit\"\n ],\n \"response_descriptors\": {\n \"TableNames\": {\n \"list\": true,\n \"get_count\": true,\n \"rename_to\": \"table_count\"\n }\n }\n },\n \"putItem\": {\n \"request_parameters\": [\n \"TableName\"\n ],\n \"response_parameters\": [\n \"ConsumedCapacity\",\n \"ItemCollectionMetrics\"\n ]\n },\n \"query\": {\n \"request_parameters\": [\n \"AttributesToGet\",\n \"ConsistentRead\",\n \"IndexName\",\n \"Limit\",\n \"ProjectionExpression\",\n \"ScanIndexForward\",\n \"Select\",\n \"TableName\"\n ],\n \"response_parameters\": [\n \"ConsumedCapacity\"\n ]\n },\n \"scan\": {\n \"request_parameters\": [\n \"AttributesToGet\",\n \"ConsistentRead\",\n \"IndexName\",\n \"Limit\",\n \"ProjectionExpression\",\n \"Segment\",\n \"Select\",\n \"TableName\",\n \"TotalSegments\"\n ],\n \"response_parameters\": [\n \"ConsumedCapacity\",\n \"Count\",\n \"ScannedCount\"\n ]\n },\n \"updateItem\": {\n \"request_parameters\": [\n \"TableName\"\n ],\n \"response_parameters\": [\n \"ConsumedCapacity\",\n \"ItemCollectionMetrics\"\n ]\n },\n \"updateTable\": {\n \"request_parameters\": [\n \"AttributeDefinitions\",\n \"GlobalSecondaryIndexUpdates\",\n \"ProvisionedThroughput\",\n \"TableName\"\n ]\n }\n }\n },\n \"sqs\": {\n \"operations\": {\n \"addPermission\": {\n \"request_parameters\": [\n \"Label\",\n \"QueueUrl\"\n ]\n },\n \"changeMessageVisibility\": {\n \"request_parameters\": [\n \"QueueUrl\",\n \"VisibilityTimeout\"\n ]\n },\n \"changeMessageVisibilityBatch\": {\n \"request_parameters\": [\n \"QueueUrl\"\n ],\n \"response_parameters\": [\n \"Failed\"\n ]\n },\n \"createQueue\": {\n \"request_parameters\": [\n \"Attributes\",\n \"QueueName\"\n ]\n },\n \"deleteMessage\": {\n \"request_parameters\": [\n \"QueueUrl\"\n ]\n },\n \"deleteMessageBatch\": {\n \"request_parameters\": [\n \"QueueUrl\"\n ],\n \"response_parameters\": [\n \"Failed\"\n ]\n },\n \"deleteQueue\": {\n \"request_parameters\": [\n \"QueueUrl\"\n ]\n },\n \"getQueueAttributes\": {\n \"request_parameters\": [\n \"QueueUrl\"\n ],\n \"response_parameters\": [\n \"Attributes\"\n ]\n },\n \"getQueueUrl\": {\n \"request_parameters\": [\n \"QueueName\",\n \"QueueOwnerAWSAccountId\"\n ],\n \"response_parameters\": [\n \"QueueUrl\"\n ]\n },\n \"listDeadLetterSourceQueues\": {\n \"request_parameters\": [\n \"QueueUrl\"\n ],\n \"response_parameters\": [\n \"QueueUrls\"\n ]\n },\n \"listQueues\": {\n \"request_parameters\": [\n \"QueueNamePrefix\"\n ],\n \"response_descriptors\": {\n \"QueueUrls\": {\n \"list\": true,\n \"get_count\": true,\n \"rename_to\": \"queue_count\"\n }\n }\n },\n \"purgeQueue\": {\n \"request_parameters\": [\n \"QueueUrl\"\n ]\n },\n \"receiveMessage\": {\n \"request_parameters\": [\n \"AttributeNames\",\n \"MaxNumberOfMessages\",\n \"MessageAttributeNames\",\n \"QueueUrl\",\n \"VisibilityTimeout\",\n \"WaitTimeSeconds\"\n ],\n \"response_descriptors\": {\n \"Messages\": {\n \"list\": true,\n \"get_count\": true,\n \"rename_to\": \"message_count\"\n }\n }\n },\n \"removePermission\": {\n \"request_parameters\": [\n \"QueueUrl\"\n ]\n },\n \"sendMessage\": {\n \"request_parameters\": [\n \"DelaySeconds\",\n \"QueueUrl\"\n ],\n \"request_descriptors\": {\n \"MessageAttributes\": {\n \"get_keys\": true,\n \"rename_to\": \"message_attribute_names\"\n }\n },\n \"response_parameters\": [\n \"MessageId\"\n ]\n },\n \"sendMessageBatch\": {\n \"request_parameters\": [\n \"QueueUrl\"\n ],\n \"request_descriptors\": {\n \"Entries\": {\n \"list\": true,\n \"get_count\": true,\n \"rename_to\": \"message_count\"\n }\n },\n \"response_descriptors\": {\n \"Failed\": {\n \"list\": true,\n \"get_count\": true,\n \"rename_to\": \"failed_count\"\n },\n \"Successful\": {\n \"list\": true,\n \"get_count\": true,\n \"rename_to\": \"successful_count\"\n }\n }\n },\n \"setQueueAttributes\": {\n \"request_parameters\": [\n \"QueueUrl\"\n ],\n \"request_descriptors\": {\n \"Attributes\": {\n \"get_keys\": true,\n \"rename_to\": \"attribute_names\"\n }\n }\n }\n }\n },\n \"sns\": {\n \"operations\": {\n \"publish\": {\n \"request_parameters\": [\n \"TopicArn\"\n ]\n },\n \"publishBatch\": {\n \"request_parameters\": [\n \"TopicArn\"\n ]\n }\n }\n },\n \"lambda\": {\n \"operations\": {\n \"invoke\": {\n \"request_parameters\": [\n \"FunctionName\",\n \"InvocationType\",\n \"LogType\",\n \"Qualifier\"\n ],\n \"response_parameters\": [\n \"FunctionError\",\n \"StatusCode\"\n ]\n },\n \"invokeAsync\": {\n \"request_parameters\": [\n \"FunctionName\"\n ],\n \"response_parameters\": [\n \"Status\"\n ]\n }\n }\n },\n \"s3\": {\n \"operations\": {\n \"abortMultipartUpload\": {\n \"request_parameters\": [\n \"Key\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"completeMultipartUpload\": {\n \"request_parameters\": [\n \"Key\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"copyObject\": {\n \"request_parameters\": [\n \"CopySource\",\n \"Key\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"createBucket\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"createMultipartUpload\": {\n \"request_parameters\": [\n \"Key\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteBucket\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteBucketAnalyticsConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteBucketCors\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteBucketEncryption\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteBucketInventoryConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteBucketLifecycle\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteBucketMetricsConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteBucketPolicy\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteBucketReplication\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteBucketTagging\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteBucketWebsite\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteObject\": {\n \"request_parameters\": [\n \"Key\",\n \"VersionId\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteObjectTagging\": {\n \"request_parameters\": [\n \"Key\",\n \"VersionId\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteObjects\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketAccelerateConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketAcl\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketAnalyticsConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketCors\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketEncryption\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketInventoryConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketLifecycle\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketLifecycleConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketLocation\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketLogging\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketMetricsConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketNotification\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketNotificationConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketPolicy\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketReplication\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketRequestPayment\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketTagging\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketVersioning\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketWebsite\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getObject\": {\n \"request_parameters\": [\n \"Key\",\n \"VersionId\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getObjectAcl\": {\n \"request_parameters\": [\n \"Key\",\n \"VersionId\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getObjectTagging\": {\n \"request_parameters\": [\n \"Key\",\n \"VersionId\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getObjectTorrent\": {\n \"request_parameters\": [\n \"Key\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"headBucket\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"headObject\": {\n \"request_parameters\": [\n \"Key\",\n \"VersionId\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"listBucketAnalyticsConfigurations\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"listBucketInventoryConfigurations\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"listBucketMetricsConfigurations\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"listMultipartUploads\": {\n \"request_parameters\": [\n \"Prefix\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"listObjectVersions\": {\n \"request_parameters\": [\n \"Prefix\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"listObjects\": {\n \"request_parameters\": [\n \"Prefix\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"listObjectsV2\": {\n \"request_parameters\": [\n \"Prefix\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"listParts\": {\n \"request_parameters\": [\n \"Key\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketAccelerateConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketAcl\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketAnalyticsConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketCors\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketEncryption\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketInventoryConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketLifecycle\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketLifecycleConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketLogging\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketMetricsConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketNotification\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketNotificationConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketPolicy\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketReplication\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketRequestPayment\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketTagging\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketVersioning\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketWebsite\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putObject\": {\n \"request_parameters\": [\n \"Key\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putObjectAcl\": {\n \"request_parameters\": [\n \"Key\",\n \"VersionId\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putObjectTagging\": {\n \"request_parameters\": [\n \"Key\",\n \"VersionId\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"restoreObject\": {\n \"request_parameters\": [\n \"Key\",\n \"VersionId\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"uploadPart\": {\n \"request_parameters\": [\n \"Key\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"uploadPartCopy\": {\n \"request_parameters\": [\n \"CopySource\",\n \"Key\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n }\n }\n },\n \"sagemakerruntime\": {\n \"operations\": {\n \"invokeEndpoint\": {\n \"request_parameters\": [\n \"EndpointName\"\n ]\n }\n }\n }\n }\n}\n", "\"use strict\";\nvar fs = require('fs');\nvar logger = require('../logger');\nvar whitelist = require('../resources/aws_whitelist.json');\nvar paramTypes = {\n REQ_DESC: 'request_descriptors',\n REQ_PARAMS: 'request_parameters',\n RES_DESC: 'response_descriptors',\n RES_PARAMS: 'response_parameters'\n};\n/**\n * Represents a set of AWS services, operations and keys or params to capture.\n * @constructor\n * @param {string|Object} [source] - The location or source JSON object of the custom AWS whitelist file. If none is provided, the default file will be used.\n */\nfunction CallCapturer(source) {\n this.init(source);\n}\nCallCapturer.prototype.init = function init(source) {\n if (source) {\n if (typeof source === 'string') {\n logger.getLogger().info('Using custom AWS whitelist file: ' + source);\n this.services = loadWhitelist(JSON.parse(fs.readFileSync(source, 'utf8')));\n }\n else {\n logger.getLogger().info('Using custom AWS whitelist source.');\n this.services = loadWhitelist(source);\n }\n }\n else {\n this.services = whitelist.services;\n }\n};\nCallCapturer.prototype.append = function append(source) {\n var newServices = {};\n if (typeof source === 'string') {\n logger.getLogger().info('Appending AWS whitelist with custom file: ' + source);\n newServices = loadWhitelist(JSON.parse(fs.readFileSync(source, 'utf8')));\n }\n else {\n logger.getLogger().info('Appending AWS whitelist with a custom source.');\n newServices = loadWhitelist(source);\n }\n for (var attribute in newServices) {\n this.services[attribute] = newServices[attribute];\n }\n};\nCallCapturer.prototype.capture = function capture(serviceName, response) {\n var operation = response.request.operation;\n var call = this.services[serviceName] !== undefined ? this.services[serviceName].operations[operation] : null;\n if (call === null) {\n logger.getLogger().debug('Call \"' + serviceName + '.' + operation + '\" is not whitelisted for additional data capturing. Ignoring.');\n return;\n }\n var dataCaptured = {};\n for (var paramType in call) {\n var params = call[paramType];\n if (paramType === paramTypes.REQ_PARAMS) {\n captureCallParams(params, response.request.params, dataCaptured);\n }\n else if (paramType === paramTypes.REQ_DESC) {\n captureDescriptors(params, response.request.params, dataCaptured);\n }\n else if (paramType === paramTypes.RES_PARAMS) {\n if (response.data) {\n captureCallParams(params, response.data, dataCaptured);\n }\n }\n else if (paramType === paramTypes.RES_DESC) {\n if (response.data) {\n captureDescriptors(params, response.data, dataCaptured);\n }\n }\n else {\n logger.getLogger().error('Unknown parameter type \"' + paramType + '\". Must be \"request_descriptors\", \"response_descriptors\", ' +\n '\"request_parameters\" or \"response_parameters\".');\n }\n }\n return dataCaptured;\n};\nfunction captureCallParams(params, call, data) {\n params.forEach(function (param) {\n if (typeof call[param] !== 'undefined') {\n var formatted = toSnakeCase(param);\n this[formatted] = call[param];\n }\n }, data);\n}\nfunction captureDescriptors(descriptors, params, data) {\n for (var paramName in descriptors) {\n var attributes = descriptors[paramName];\n if (typeof params[paramName] !== 'undefined') {\n var paramData;\n if (attributes.list && attributes.get_count) {\n paramData = params[paramName] ? params[paramName].length : 0;\n }\n else {\n paramData = attributes.get_keys === true ? Object.keys(params[paramName]) : params[paramName];\n }\n if (typeof attributes.rename_to === 'string') {\n data[attributes.rename_to] = paramData;\n }\n else {\n var formatted = toSnakeCase(paramName);\n data[formatted] = paramData;\n }\n }\n }\n}\nfunction toSnakeCase(param) {\n if (param === 'IPAddress') {\n return 'ip_address';\n }\n else {\n return param.split(/(?=[A-Z])/).join('_').toLowerCase();\n }\n}\nfunction loadWhitelist(source) {\n var doc = source;\n if (doc.services === undefined) {\n throw new Error('Document formatting is incorrect. Expecting \"services\" param.');\n }\n return doc.services;\n}\nmodule.exports = CallCapturer;\n", "\"use strict\";\nvar CallCapturer = require('../../patchers/call_capturer.js');\nvar capturer = new CallCapturer();\n/**\n * Represents a AWS client call. Automatically captures data from the supplied response object,\n * Data captured depends on the whitelisting file supplied.\n * The base whitelisting file can be found at /lib/resources/aws_whitelist.json.\n * @constructor\n * @param {any} res - The response object from the AWS call. Typed as any to avoid AWS SDK dependency. Otherwise would be AWS.Response.\n * @param {string} serviceName - The service name of the AWS client.\n * @see https://github.com/aws/aws-sdk-js/blob/master/lib/response.js\n */\nfunction Aws(res, serviceName) {\n this.init(res, serviceName);\n}\nAws.prototype.init = function init(res, serviceName) {\n //TODO: account ID\n this.operation = formatOperation(res.request.operation) || '';\n if (res && res.request && res.request.httpRequest && res.request.httpRequest.region) {\n this.region = res.request.httpRequest.region;\n }\n if (res && res.requestId) {\n this.request_id = res.requestId;\n }\n this.retries = res.retryCount || 0;\n if (res.extendedRequestId && serviceName && serviceName.toLowerCase() === 's3') {\n this.id_2 = res.extendedRequestId;\n }\n if (serviceName) {\n this.addData(capturer.capture(serviceName.toLowerCase(), res));\n }\n};\nAws.prototype.addData = function addData(data) {\n for (var attribute in data) {\n this[attribute] = data[attribute];\n }\n};\n/**\n * Overrides the default whitelisting file to specify what params to capture on each AWS Service call.\n * @param {string|Object} source - The path to the custom whitelist file, or a whitelist source JSON object.\n * @exports setAWSWhitelist\n */\nvar setAWSWhitelist = function setAWSWhitelist(source) {\n if (!source || source instanceof String || !(typeof source === 'string' || (source instanceof Object))) {\n throw new Error('Please specify a path to the local whitelist file, or supply a whitelist source object.');\n }\n capturer = new CallCapturer(source);\n};\n/**\n * Appends to the default whitelisting file to specify what params to capture on each AWS Service call.\n * @param {string|Object} source - The path to the custom whitelist file, or a whitelist source JSON object.\n * @exports appendAWSWhitelist\n */\nvar appendAWSWhitelist = function appendAWSWhitelist(source) {\n if (!source || source instanceof String || !(typeof source === 'string' || (source instanceof Object))) {\n throw new Error('Please specify a path to the local whitelist file, or supply a whitelist source object.');\n }\n capturer.append(source);\n};\nfunction formatOperation(operation) {\n if (!operation) {\n return;\n }\n return operation.charAt(0).toUpperCase() + operation.slice(1);\n}\nmodule.exports = Aws;\nmodule.exports.appendAWSWhitelist = appendAWSWhitelist;\nmodule.exports.setAWSWhitelist = setAWSWhitelist;\n", "\"use strict\";\n/**\n * Capture module.\n * @module capture\n */\nvar contextUtils = require('./context_utils');\nvar logger = require('./logger');\n/**\n * Wrap to automatically capture information for the segment.\n * @param {string} name - The name of the new subsegment.\n * @param {function} fcn - The function context to wrap. Can take a single 'subsegment' argument.\n * @param {Segment|Subsegment} [parent] - The parent for the new subsegment, for manual mode.\n * @alias module:capture.captureFunc\n * @return {*} - Returns the result if any by executing the provided function.\n */\nvar captureFunc = function captureFunc(name, fcn, parent) {\n validate(name, fcn);\n var current, executeFcn;\n var parentSeg = contextUtils.resolveSegment(parent);\n if (!parentSeg) {\n logger.getLogger().warn('Failed to capture function.');\n return fcn();\n }\n current = parentSeg.addNewSubsegment(name);\n executeFcn = captureFcn(fcn, current);\n try {\n const response = executeFcn(current);\n current.close();\n return response;\n }\n catch (e) {\n current.close(e);\n throw (e);\n }\n};\n/**\n * Wrap to automatically capture information for the sub/segment. You must close the segment\n * manually from within the function.\n * @param {string} name - The name of the new subsegment.\n * @param {function} fcn - The function context to wrap. Must take a single 'subsegment' argument and call 'subsegment.close([optional error])' when the async function completes.\n * @param {Segment|Subsegment} [parent] - The parent for the new subsegment, for manual mode.\n * @alias module:capture.captureAsyncFunc\n * @return {*} - Returns a promise by executing the provided async function.\n */\nvar captureAsyncFunc = function captureAsyncFunc(name, fcn, parent) {\n validate(name, fcn);\n var current, executeFcn;\n var parentSeg = contextUtils.resolveSegment(parent);\n if (!parentSeg) {\n logger.getLogger().warn('Failed to capture async function.');\n return fcn();\n }\n current = parentSeg.addNewSubsegment(name);\n executeFcn = captureFcn(fcn, current);\n try {\n return executeFcn(current);\n }\n catch (e) {\n current.close(e);\n throw (e);\n }\n};\n/**\n * Wrap to automatically capture information for the sub/segment. This wraps the callback and returns a function.\n * when executed, all arguments are passed through accordingly. An additional argument is appended to gain access to the newly created subsegment.\n * For this reason, always call the captured callback with the full list of arguments.\n * @param {string} name - The name of the new subsegment.\n * @param {function} fcn - The function context to wrap. Can take a single 'subsegment' argument.\n * @param {Segment|Subsegment} [parent] - The parent for the new subsegment, for manual mode.\n * @alias module:capture.captureCallbackFunc\n */\nvar captureCallbackFunc = function captureCallbackFunc(name, fcn, parent) {\n validate(name, fcn);\n var base = contextUtils.resolveSegment(parent);\n if (!base) {\n logger.getLogger().warn('Failed to capture callback function.');\n return fcn;\n }\n base.incrementCounter();\n return function () {\n var parentSeg = contextUtils.resolveSegment(parent);\n var args = Array.prototype.slice.call(arguments);\n captureFunc(name, fcn.bind.apply(fcn, [null].concat(args)), parentSeg);\n base.decrementCounter();\n }.bind(this);\n};\nfunction captureFcn(fcn, current) {\n var executeFcn;\n if (contextUtils.isAutomaticMode()) {\n var session = contextUtils.getNamespace();\n var contextFcn = function () {\n var value;\n session.run(function () {\n contextUtils.setSegment(current);\n value = fcn(current);\n });\n return value;\n };\n executeFcn = contextFcn;\n }\n else {\n executeFcn = fcn;\n }\n return executeFcn;\n}\nfunction validate(name, fcn) {\n var error;\n if (!name || typeof name !== 'string') {\n error = 'Param \"name\" must be a non-empty string.';\n logger.getLogger().error(error);\n throw new Error(error);\n }\n else if (typeof fcn !== 'function') {\n error = 'Param \"fcn\" must be a function.';\n logger.getLogger().error(error);\n throw new Error(error);\n }\n}\nmodule.exports.captureFunc = captureFunc;\nmodule.exports.captureAsyncFunc = captureAsyncFunc;\nmodule.exports.captureCallbackFunc = captureCallbackFunc;\n", "\"use strict\";\n/**\n * Capture module.\n * @module aws_p\n */\nvar semver = require('semver');\nvar Aws = require('../segments/attributes/aws');\nvar contextUtils = require('../context_utils');\nvar Utils = require('../utils');\nvar logger = require('../logger');\nvar minVersion = '2.7.15';\nvar throttledErrorDefault = function throttledErrorDefault() {\n return false; // If the customer doesn't provide an aws-sdk with a throttled error function, we can't make assumptions.\n};\n/**\n * Configures the AWS SDK to automatically capture information for the segment.\n * All created clients will automatically be captured. See 'captureAWSClient'\n * for additional details.\n * @param {AWS} awssdk - The Javascript AWS SDK.\n * @alias module:aws_p.captureAWS\n * @returns {AWS}\n * @see https://github.com/aws/aws-sdk-js\n */\nvar captureAWS = function captureAWS(awssdk) {\n if (!semver.gte(awssdk.VERSION, minVersion)) {\n throw new Error('AWS SDK version ' + minVersion + ' or greater required.');\n }\n for (var prop in awssdk) {\n if (awssdk[prop].serviceIdentifier) {\n var Service = awssdk[prop];\n Service.prototype.customizeRequests(captureAWSRequest);\n }\n }\n return awssdk;\n};\n/**\n * Configures any AWS Client instance to automatically capture information for the segment.\n * For manual mode, a param with key called 'Segment' is required as a part of the AWS\n * call paramaters, and must reference a Segment or Subsegment object.\n * @param {AWS.Service} service - An instance of a AWS service to wrap.\n * @alias module:aws_p.captureAWSClient\n * @returns {AWS.Service}\n * @see https://github.com/aws/aws-sdk-js\n */\nvar captureAWSClient = function captureAWSClient(service) {\n service.customizeRequests(captureAWSRequest);\n return service;\n};\nfunction captureAWSRequest(req) {\n var parent = contextUtils.resolveSegment(contextUtils.resolveManualSegmentParams(req.params));\n if (!parent) {\n var output = this.serviceIdentifier + '.' + req.operation;\n if (!contextUtils.isAutomaticMode()) {\n logger.getLogger().info('Call ' + output + ' requires a segment object' +\n ' on the request params as \"XRaySegment\" for tracing in manual mode. Ignoring.');\n }\n else {\n logger.getLogger().info('Call ' + output +\n ' is missing the sub/segment context for automatic mode. Ignoring.');\n }\n return req;\n }\n var throttledError = this.throttledError || throttledErrorDefault;\n var stack = (new Error()).stack;\n let subsegment;\n if (parent.notTraced) {\n subsegment = parent.addNewSubsegmentWithoutSampling(this.serviceIdentifier);\n }\n else {\n subsegment = parent.addNewSubsegment(this.serviceIdentifier);\n }\n var traceId = parent.segment ? parent.segment.trace_id : parent.trace_id;\n const data = parent.segment ? parent.segment.additionalTraceData : parent.additionalTraceData;\n var buildListener = function (req) {\n let traceHeader = 'Root=' + traceId + ';Parent=' + subsegment.id +\n ';Sampled=' + (subsegment.notTraced ? '0' : '1');\n if (data != null) {\n for (const [key, value] of Object.entries(data)) {\n traceHeader += ';' + key + '=' + value;\n }\n }\n req.httpRequest.headers['X-Amzn-Trace-Id'] = traceHeader;\n };\n var completeListener = function (res) {\n subsegment.addAttribute('namespace', 'aws');\n subsegment.addAttribute('aws', new Aws(res, subsegment.name));\n var httpRes = res.httpResponse;\n if (httpRes) {\n subsegment.addAttribute('http', new HttpResponse(httpRes));\n if (httpRes.statusCode === 429 || (res.error && throttledError(res.error))) {\n subsegment.addThrottleFlag();\n }\n }\n if (res.error) {\n var err = { message: res.error.message, name: res.error.code, stack: stack };\n if (httpRes && httpRes.statusCode) {\n if (Utils.getCauseTypeFromHttpStatus(httpRes.statusCode) == 'error') {\n subsegment.addErrorFlag();\n }\n subsegment.close(err, true);\n }\n else {\n subsegment.close(err);\n }\n }\n else {\n if (httpRes && httpRes.statusCode) {\n var cause = Utils.getCauseTypeFromHttpStatus(httpRes.statusCode);\n if (cause) {\n subsegment[cause] = true;\n }\n }\n subsegment.close();\n }\n };\n req.on('beforePresign', function (req) {\n // Only the AWS Presigner triggers this event,\n // so we can rely on this event to notify us when\n // a request is for a presigned url\n parent.removeSubsegment(subsegment);\n parent.decrementCounter();\n req.removeListener('build', buildListener);\n req.removeListener('complete', completeListener);\n });\n req.on('build', buildListener).on('complete', completeListener);\n if (!req.__send) {\n req.__send = req.send;\n req.send = function (callback) {\n if (contextUtils.isAutomaticMode()) {\n var session = contextUtils.getNamespace();\n session.run(function () {\n contextUtils.setSegment(subsegment);\n req.__send(callback);\n });\n }\n else {\n req.__send(callback);\n }\n };\n }\n}\nfunction HttpResponse(res) {\n this.init(res);\n}\nHttpResponse.prototype.init = function init(res) {\n this.response = {\n status: res.statusCode || '',\n };\n if (res.headers && res.headers['content-length']) {\n this.response.content_length = res.headers['content-length'];\n }\n};\nmodule.exports.captureAWSClient = captureAWSClient;\nmodule.exports.captureAWS = captureAWS;\n", "/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NODEJS_TIMEOUT_ERROR_CODES = exports.TRANSIENT_ERROR_STATUS_CODES = exports.TRANSIENT_ERROR_CODES = exports.THROTTLING_ERROR_CODES = exports.CLOCK_SKEW_ERROR_CODES = void 0;\nexports.CLOCK_SKEW_ERROR_CODES = [\n \"AuthFailure\",\n \"InvalidSignatureException\",\n \"RequestExpired\",\n \"RequestInTheFuture\",\n \"RequestTimeTooSkewed\",\n \"SignatureDoesNotMatch\",\n];\nexports.THROTTLING_ERROR_CODES = [\n \"BandwidthLimitExceeded\",\n \"EC2ThrottledException\",\n \"LimitExceededException\",\n \"PriorRequestNotComplete\",\n \"ProvisionedThroughputExceededException\",\n \"RequestLimitExceeded\",\n \"RequestThrottled\",\n \"RequestThrottledException\",\n \"SlowDown\",\n \"ThrottledException\",\n \"Throttling\",\n \"ThrottlingException\",\n \"TooManyRequestsException\",\n \"TransactionInProgressException\",\n];\nexports.TRANSIENT_ERROR_CODES = [\"TimeoutError\", \"RequestTimeout\", \"RequestTimeoutException\"];\nexports.TRANSIENT_ERROR_STATUS_CODES = [500, 502, 503, 504];\nexports.NODEJS_TIMEOUT_ERROR_CODES = [\"ECONNRESET\", \"ECONNREFUSED\", \"EPIPE\", \"ETIMEDOUT\"];\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isServerError = exports.isTransientError = exports.isThrottlingError = exports.isClockSkewError = exports.isRetryableByTrait = void 0;\nconst constants_1 = require(\"./constants\");\nconst isRetryableByTrait = (error) => error.$retryable !== undefined;\nexports.isRetryableByTrait = isRetryableByTrait;\nconst isClockSkewError = (error) => constants_1.CLOCK_SKEW_ERROR_CODES.includes(error.name);\nexports.isClockSkewError = isClockSkewError;\nconst isThrottlingError = (error) => {\n var _a, _b;\n return ((_a = error.$metadata) === null || _a === void 0 ? void 0 : _a.httpStatusCode) === 429 ||\n constants_1.THROTTLING_ERROR_CODES.includes(error.name) ||\n ((_b = error.$retryable) === null || _b === void 0 ? void 0 : _b.throttling) == true;\n};\nexports.isThrottlingError = isThrottlingError;\nconst isTransientError = (error) => {\n var _a;\n return constants_1.TRANSIENT_ERROR_CODES.includes(error.name) ||\n constants_1.NODEJS_TIMEOUT_ERROR_CODES.includes((error === null || error === void 0 ? void 0 : error.code) || \"\") ||\n constants_1.TRANSIENT_ERROR_STATUS_CODES.includes(((_a = error.$metadata) === null || _a === void 0 ? void 0 : _a.httpStatusCode) || 0);\n};\nexports.isTransientError = isTransientError;\nconst isServerError = (error) => {\n var _a;\n if (((_a = error.$metadata) === null || _a === void 0 ? void 0 : _a.httpStatusCode) !== undefined) {\n const statusCode = error.$metadata.httpStatusCode;\n if (500 <= statusCode && statusCode <= 599 && !(0, exports.isTransientError)(error)) {\n return true;\n }\n return false;\n }\n return false;\n};\nexports.isServerError = isServerError;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"@smithy/service-error-classification\"), exports);\n", "\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.captureAWSClient = void 0;\nconst service_error_classification_1 = require(\"@aws-sdk/service-error-classification\");\nconst aws_1 = __importDefault(require(\"../segments/attributes/aws\"));\nconst querystring_1 = require(\"querystring\");\nconst subsegment_1 = __importDefault(require(\"../segments/attributes/subsegment\"));\nconst contextUtils = require('../context_utils');\nconst logger = require('../logger');\nconst { safeParseInt } = require('../utils');\nconst utils_1 = require(\"../utils\");\nconst XRAY_PLUGIN_NAME = 'XRaySDKInstrumentation';\nconst buildAttributesFromMetadata = async (service, operation, region, commandInput, res, error) => {\n var _a, _b, _c;\n const { extendedRequestId, requestId, httpStatusCode: statusCode, attempts } = ((_a = res === null || res === void 0 ? void 0 : res.output) === null || _a === void 0 ? void 0 : _a.$metadata) || (error === null || error === void 0 ? void 0 : error.$metadata);\n const aws = new aws_1.default({\n extendedRequestId,\n requestId,\n retryCount: attempts,\n data: res === null || res === void 0 ? void 0 : res.output,\n request: {\n operation,\n params: commandInput,\n httpRequest: {\n region,\n statusCode,\n },\n },\n }, service);\n const http = {};\n if (statusCode) {\n http.response = {};\n http.response.status = statusCode;\n }\n if (((_b = res === null || res === void 0 ? void 0 : res.response) === null || _b === void 0 ? void 0 : _b.headers) && ((_c = res === null || res === void 0 ? void 0 : res.response) === null || _c === void 0 ? void 0 : _c.headers['content-length']) !== undefined) {\n if (!http.response) {\n http.response = {};\n }\n http.response.content_length = safeParseInt(res.response.headers['content-length']);\n }\n return [aws, http];\n};\nfunction addFlags(http, subsegment, err) {\n var _a, _b, _c;\n if (err && (0, service_error_classification_1.isThrottlingError)(err)) {\n subsegment.addThrottleFlag();\n }\n else if (safeParseInt((_a = http.response) === null || _a === void 0 ? void 0 : _a.status) === 429 || safeParseInt((_b = err === null || err === void 0 ? void 0 : err.$metadata) === null || _b === void 0 ? void 0 : _b.httpStatusCode) === 429) {\n subsegment.addThrottleFlag();\n }\n const cause = (0, utils_1.getCauseTypeFromHttpStatus)(safeParseInt((_c = http.response) === null || _c === void 0 ? void 0 : _c.status));\n if (cause === 'fault') {\n subsegment.addFaultFlag();\n }\n else if (cause === 'error') {\n subsegment.addErrorFlag();\n }\n}\nconst getXRayMiddleware = (config, manualSegment) => (next, context) => async (args) => {\n var _a;\n const segment = contextUtils.isAutomaticMode() ? contextUtils.resolveSegment() : manualSegment;\n const { clientName, commandName } = context;\n const commandInput = (_a = args === null || args === void 0 ? void 0 : args.input) !== null && _a !== void 0 ? _a : {};\n const commandOperation = commandName.slice(0, -7); // Strip trailing \"Command\" string\n const operation = commandOperation.charAt(0).toLowerCase() + commandOperation.slice(1);\n const service = clientName.slice(0, -6); // Strip trailing \"Client\" string\n if (!segment) {\n const output = service + '.' + operation;\n if (!contextUtils.isAutomaticMode()) {\n logger.getLogger().info('Call ' + output + ' requires a segment object' +\n ' passed to captureAWSv3Client for tracing in manual mode. Ignoring.');\n }\n else {\n logger.getLogger().info('Call ' + output +\n ' is missing the sub/segment context for automatic mode. Ignoring.');\n }\n return next(args);\n }\n let subsegment;\n if (segment.notTraced) {\n subsegment = segment.addNewSubsegmentWithoutSampling(service);\n }\n else {\n subsegment = segment.addNewSubsegment(service);\n }\n subsegment.addAttribute('namespace', 'aws');\n const parent = (segment instanceof subsegment_1.default ? segment.segment : segment);\n const data = parent.segment ? parent.segment.additionalTraceData : parent.additionalTraceData;\n let traceHeader = (0, querystring_1.stringify)({\n Root: parent.trace_id,\n Parent: subsegment.id,\n Sampled: subsegment.notTraced ? '0' : '1',\n }, ';');\n if (data != null) {\n for (const [key, value] of Object.entries(data)) {\n traceHeader += ';' + key + '=' + value;\n }\n }\n args.request.headers['X-Amzn-Trace-Id'] = traceHeader;\n let res;\n try {\n res = await next(args);\n if (!res) {\n throw new Error('Failed to get response from instrumented AWS Client.');\n }\n const [aws, http] = await buildAttributesFromMetadata(service, operation, await config.region(), commandInput, res, null);\n subsegment.addAttribute('aws', aws);\n subsegment.addAttribute('http', http);\n addFlags(http, subsegment);\n subsegment.close();\n return res;\n }\n catch (err) {\n if (err.$metadata) {\n const [aws, http] = await buildAttributesFromMetadata(service, operation, await config.region(), commandInput, null, err);\n subsegment.addAttribute('aws', aws);\n subsegment.addAttribute('http', http);\n addFlags(http, subsegment, err);\n }\n const errObj = { message: err.message, name: err.name, stack: err.stack || new Error().stack };\n subsegment.close(errObj, true);\n throw err;\n }\n};\nconst xRayMiddlewareOptions = {\n name: XRAY_PLUGIN_NAME,\n step: 'build',\n};\nconst getXRayPlugin = (config, manualSegment) => ({\n applyToStack: (stack) => {\n stack.add(getXRayMiddleware(config, manualSegment), xRayMiddlewareOptions);\n },\n});\n/**\n * Instruments AWS SDK V3 clients with X-Ray via middleware.\n *\n * @param client - AWS SDK V3 client to instrument\n * @param manualSegment - Parent segment or subsegment that is passed in for manual mode users\n * @returns - the client with the X-Ray instrumentation middleware added to its middleware stack\n */\nfunction captureAWSClient(client, manualSegment) {\n // Remove existing middleware to ensure operation is idempotent\n client.middlewareStack.remove(XRAY_PLUGIN_NAME);\n client.middlewareStack.use(getXRayPlugin(client.config, manualSegment));\n return client;\n}\nexports.captureAWSClient = captureAWSClient;\n", "\"use strict\";\n/**\n * @module http_p\n */\n/**\n * This module patches the HTTP and HTTPS node built-in libraries and returns a copy of the module with tracing enabled.\n */\nvar url = require('url');\nvar contextUtils = require('../context_utils');\nvar Utils = require('../utils');\nvar logger = require('../logger');\nvar events = require('events');\n/**\n * Wraps the http/https.request() and .get() calls to automatically capture information for the segment.\n * This patches the built-in HTTP and HTTPS modules globally. If using a 3rd party HTTP library,\n * it should still use HTTP under the hood. Be sure to patch globally before requiring the 3rd party library.\n * 3rd party library compatibility is best effort. Some incompatibility issues may arise.\n * @param {http|https} module - The built in Node.js HTTP or HTTPS module.\n * @param {boolean} downstreamXRayEnabled - when true, adds a \"traced:true\" property to the subsegment\n * so the AWS X-Ray service expects a corresponding segment from the downstream service.\n * @param {function} subsegmentCallback - a callback that is called with the subsegment, the Node.js\n * http.ClientRequest, the Node.js http.IncomingMessage (if a response was received) and any error issued,\n * allowing custom annotations and metadata to be added.\n * to be added to the subsegment.\n * @alias module:http_p.captureHTTPsGlobal\n */\nvar captureHTTPsGlobal = function captureHTTPsGlobal(module, downstreamXRayEnabled, subsegmentCallback) {\n if (!module.__request) {\n enableCapture(module, downstreamXRayEnabled, subsegmentCallback);\n }\n};\n/**\n * Wraps the http/https.request() and .get() calls to automatically capture information for the segment.\n * Returns an instance of the HTTP or HTTPS module that is patched.\n * @param {http|https} module - The built in Node.js HTTP or HTTPS module.\n * @param {boolean} downstreamXRayEnabled - when true, adds a \"traced:true\" property to the subsegment\n * so the AWS X-Ray service expects a corresponding segment from the downstream service.\n * @param {function} subsegmentCallback - a callback that is called with the subsegment, the Node.js\n * http.ClientRequest, and the Node.js http.IncomingMessage to allow custom annotations and metadata\n * to be added to the subsegment.\n * @alias module:http_p.captureHTTPs\n * @returns {http|https}\n */\nvar captureHTTPs = function captureHTTPs(module, downstreamXRayEnabled, subsegmentCallback) {\n if (module.__request) {\n return module;\n }\n var tracedModule = {};\n Object.keys(module).forEach(function (val) {\n tracedModule[val] = module[val];\n });\n enableCapture(tracedModule, downstreamXRayEnabled, subsegmentCallback);\n return tracedModule;\n};\nfunction enableCapture(module, downstreamXRayEnabled, subsegmentCallback) {\n function captureOutgoingHTTPs(baseFunc, ...args) {\n let options;\n let callback;\n let hasUrl;\n let urlObj;\n let arg0 = args[0];\n if (typeof args[1] === 'object') {\n hasUrl = true;\n urlObj = typeof arg0 === 'string' ? new url.URL(arg0) : arg0;\n options = args[1],\n callback = args[2];\n }\n else {\n hasUrl = false;\n options = arg0;\n callback = args[1];\n }\n // Short circuit if the HTTP request has no options or is already being captured\n if (!options || (options.headers && (options.headers['X-Amzn-Trace-Id']))) {\n return baseFunc(...args);\n }\n // Case of calling a string URL without options, e.g.: http.request('http://amazon.com', callback)\n if (typeof options === 'string') {\n options = new url.URL(options);\n }\n if (!hasUrl) {\n urlObj = options;\n }\n const parent = contextUtils.resolveSegment(contextUtils.resolveManualSegmentParams(options));\n const hostname = options.hostname || options.host || urlObj.hostname || urlObj.host || 'Unknown host';\n if (!parent) {\n let output = '[ host: ' + hostname;\n output = options.method ? (output + ', method: ' + options.method) : output;\n output += ', path: ' + (urlObj.pathname || Utils.stripQueryStringFromPath(options.path)) + ' ]';\n if (!contextUtils.isAutomaticMode()) {\n logger.getLogger().info('Options for request ' + output +\n ' requires a segment object on the options params as \"XRaySegment\" for tracing in manual mode. Ignoring.');\n }\n else {\n logger.getLogger().info('Options for request ' + output +\n ' is missing the sub/segment context for automatic mode. Ignoring.');\n }\n // Options are not modified, only parsed for logging. We can pass in the original arguments.\n return baseFunc(...args);\n }\n let subsegment;\n if (parent.notTraced) {\n subsegment = parent.addNewSubsegmentWithoutSampling(hostname);\n }\n else {\n subsegment = parent.addNewSubsegment(hostname);\n }\n const root = parent.segment ? parent.segment : parent;\n subsegment.namespace = 'remote';\n if (!options.headers) {\n options.headers = {};\n }\n options.headers['X-Amzn-Trace-Id'] = 'Root=' + root.trace_id + ';Parent=' + subsegment.id +\n ';Sampled=' + (subsegment.notTraced ? '0' : '1');\n const errorCapturer = function errorCapturer(e) {\n if (subsegmentCallback) {\n subsegmentCallback(subsegment, this, null, e);\n }\n if (subsegment.http && subsegment.http.response) {\n if (Utils.getCauseTypeFromHttpStatus(subsegment.http.response.status) === 'error') {\n subsegment.addErrorFlag();\n }\n subsegment.close(e, true);\n }\n else {\n const madeItToDownstream = (e.code !== 'ECONNREFUSED');\n subsegment.addRemoteRequestData(this, null, madeItToDownstream && downstreamXRayEnabled);\n subsegment.close(e);\n }\n };\n const optionsCopy = Utils.objectWithoutProperties(options, ['Segment'], true);\n let req = baseFunc(...(hasUrl ? [arg0, optionsCopy] : [options]), function (res) {\n res.on('end', function () {\n if (subsegmentCallback) {\n subsegmentCallback(subsegment, this.req, res);\n }\n if (res.statusCode === 429) {\n subsegment.addThrottleFlag();\n }\n const cause = Utils.getCauseTypeFromHttpStatus(res.statusCode);\n if (cause) {\n subsegment[cause] = true;\n }\n subsegment.addRemoteRequestData(res.req, res, !!downstreamXRayEnabled);\n subsegment.close();\n });\n if (typeof callback === 'function') {\n if (contextUtils.isAutomaticMode()) {\n const session = contextUtils.getNamespace();\n session.run(function () {\n contextUtils.setSegment(subsegment);\n callback(res);\n });\n }\n else {\n callback(res);\n }\n // if no callback provided by user application, AND no explicit response listener\n // added by user application, then we consume the response so the 'end' event fires\n // See: https://nodejs.org/api/http.html#http_class_http_clientrequest\n }\n else if (res.req && res.req.listenerCount('response') === 0) {\n res.resume();\n }\n });\n // Use errorMonitor if available (in Node 12.17+), otherwise fall back to standard error listener\n // See: https://nodejs.org/dist/latest-v12.x/docs/api/events.html#events_eventemitter_errormonitor\n req.on(events.errorMonitor || 'error', errorCapturer);\n return req;\n }\n module.__request = module.request;\n function captureHTTPsRequest(...args) {\n return captureOutgoingHTTPs(module.__request, ...args);\n }\n module.__get = module.get;\n function captureHTTPsGet(...args) {\n return captureOutgoingHTTPs(module.__get, ...args);\n }\n Object.defineProperties(module, {\n request: { value: captureHTTPsRequest, configurable: true, enumerable: true, writable: true },\n get: { value: captureHTTPsGet, configurable: true, enumerable: true, writable: true },\n });\n}\nmodule.exports.captureHTTPsGlobal = captureHTTPsGlobal;\nmodule.exports.captureHTTPs = captureHTTPs;\n", "\"use strict\";\n/**\n * @module promise_p\n */\n/**\n * This module patches native Promise libraries provided by V8 engine\n * so all subsegments generated within Promise are attached to the correct parent.\n */\nconst contextUtils = require('../context_utils');\nconst originalThen = Symbol('original then');\nconst originalCatch = Symbol('original catch');\nfunction patchPromise(Promise) {\n const then = Promise.prototype.then;\n if (!then[originalThen]) {\n Promise.prototype.then = function (onFulfilled, onRejected) {\n if (contextUtils.isAutomaticMode()\n && tryGetCurrentSegment()) {\n const ns = contextUtils.getNamespace();\n onFulfilled = onFulfilled && ns.bind(onFulfilled);\n onRejected = onRejected && ns.bind(onRejected);\n }\n return then.call(this, onFulfilled, onRejected);\n };\n Promise.prototype.then[originalThen] = then;\n }\n const origCatch = Promise.prototype.catch;\n if (origCatch && !origCatch[originalCatch]) {\n Promise.prototype.catch = function (onRejected) {\n if (contextUtils.isAutomaticMode()\n && tryGetCurrentSegment()) {\n const ns = contextUtils.getNamespace();\n onRejected = onRejected && ns.bind(onRejected);\n }\n return origCatch.call(this, onRejected);\n };\n Promise.prototype.catch[originalCatch] = origCatch;\n }\n}\nfunction unpatchPromise(Promise) {\n const then = Promise.prototype.then;\n if (then[originalThen]) {\n Promise.prototype.then = then[originalThen];\n }\n const origCatch = Promise.prototype.catch;\n if (origCatch && origCatch[originalCatch]) {\n Promise.prototype.catch = origCatch[originalCatch];\n }\n}\nfunction tryGetCurrentSegment() {\n try {\n return contextUtils.getSegment();\n }\n catch (e) {\n return undefined;\n }\n}\nfunction capturePromise() {\n patchPromise(Promise);\n}\nfunction uncapturePromise() {\n unpatchPromise(Promise);\n}\ncapturePromise.patchThirdPartyPromise = patchPromise;\nmodule.exports.capturePromise = capturePromise;\nmodule.exports.uncapturePromise = uncapturePromise;\n", "\"use strict\";\n/**\n * Represents a SQL database call.\n * @constructor\n * @param {string} databaseVer - The version on the database (user supplied).\n * @param {string} driverVer - The version on the database driver (user supplied).\n * @param {string} user - The user associated to the database call.\n * @param {string} queryType - The SQL query type.\n */\nfunction SqlData(databaseVer, driverVer, user, url, queryType) {\n this.init(databaseVer, driverVer, user, url, queryType);\n}\nSqlData.prototype.init = function init(databaseVer, driverVer, user, url, queryType) {\n if (databaseVer) {\n this.database_version = databaseVer;\n }\n if (driverVer) {\n this.driver_version = driverVer;\n }\n if (queryType) {\n this.preparation = queryType;\n }\n this.url = url;\n this.user = user;\n};\nmodule.exports = SqlData;\n", "\"use strict\";\nvar contextUtils = require('./context_utils');\nvar logging = require('./logger');\nvar segmentUtils = require('./segments/segment_utils');\nvar utils = require('./utils');\nvar LambdaEnv = require('./env/aws_lambda');\n// Import Data from package.json,\n// If the importing of package.json fails leave\n// pkginfo as an empty object\nvar pkginfo = {};\ntry {\n pkginfo = require('../../package.json');\n}\ncatch (err) {\n logging.getLogger().debug('Failed to load SDK data:', err);\n}\nvar UNKNOWN = 'unknown';\n/**\n * A module representing the AWSXRay SDK.\n * @namespace AWSXRay\n */\nvar AWSXRay = {\n /**\n * @memberof AWSXRay\n * @type {object}\n * @namespace AWSXRay.plugins\n */\n plugins: {\n /**\n * Exposes the AWS EC2 plugin.\n * @memberof AWSXRay.plugins\n */\n EC2Plugin: require('./segments/plugins/ec2_plugin'),\n /**\n * Exposes the AWS ECS plugin.\n * @memberof AWSXRay.plugins\n */\n ECSPlugin: require('./segments/plugins/ecs_plugin'),\n /**\n * Exposes the AWS Elastic Beanstalk plugin.\n * @memberof AWSXRay.plugins\n */\n ElasticBeanstalkPlugin: require('./segments/plugins/elastic_beanstalk_plugin'),\n },\n /**\n * Enables use of plugins to capture additional data for segments.\n * @param {Array} plugins - A configurable subset of AWSXRay.plugins.\n * @memberof AWSXRay\n * @see AWSXRay.plugins\n */\n config: function (plugins) {\n var pluginData = {};\n plugins.forEach(function (plugin) {\n plugin.getData(function (data) {\n if (data) {\n for (var attribute in data) {\n pluginData[attribute] = data[attribute];\n }\n }\n });\n segmentUtils.setOrigin(plugin.originName);\n segmentUtils.setPluginData(pluginData);\n });\n },\n /**\n * Overrides the default whitelisting file to specify what params to capture on each AWS Service call.\n * If a service or API is not listed, no additional data is captured.\n * The base whitelisting file can be found at /lib/resources/aws_whitelist.json\n * @param {string|Object} source - The path to the custom whitelist file, or a whitelist source JSON object.\n * @memberof AWSXRay\n */\n setAWSWhitelist: require('./segments/attributes/aws').setAWSWhitelist,\n /**\n * Appends to the current whitelisting file.\n * In the case of a duplicate service API listed, the new source will override the previous values.\n * @param {string|Object} source - The path to the custom whitelist file, or a whitelist source JSON object.\n * @memberof AWSXRay\n */\n appendAWSWhitelist: require('./segments/attributes/aws').appendAWSWhitelist,\n /**\n * Overrides the default streaming threshold (100).\n * The threshold represents the maximum number of subsegments on a single segment before\n * the SDK begins to send the completed subsegments out of band of the main segment.\n * Reduce this threshold if you see the 'Segment too large to send' error.\n * @param {number} threshold - The new threshold to use.\n * @memberof AWSXRay\n */\n setStreamingThreshold: segmentUtils.setStreamingThreshold,\n /**\n * Set your own logger for the SDK.\n * @param {Object} logger - A logger which responds to debug/info/warn/error calls.\n * @memberof AWSXRay\n */\n setLogger: logging.setLogger,\n /**\n * Gets the set logger for the SDK.\n * @memberof AWSXRay\n */\n getLogger: logging.getLogger,\n /**\n * Configures the address and port the daemon is expected to be on.\n * @param {string} address - Address of the daemon the segments should be sent to. Expects 'x.x.x.x', ':yyyy' or 'x.x.x.x:yyyy' IPv4 formats.\n * @module DaemonConfig\n * @memberof AWSXRay\n * @function\n * @see module:DaemonConfig.setDaemonAddress\n */\n setDaemonAddress: require('./daemon_config').setDaemonAddress,\n /**\n * @param {string} name - The name of the new subsegment.\n * @param {function} fcn - The function conext to wrap.\n * @param {Segment|Subsegment} [parent] - The parent for the new subsegment, for manual mode.\n * @memberof AWSXRay\n * @function\n * @see module:capture.captureFunc\n */\n captureFunc: require('./capture').captureFunc,\n /**\n * @param {string} name - The name of the new subsegment.\n * @param {function} fcn - The function conext to wrap.\n * @param {Segment|Subsegment} [parent] - The parent for the new subsegment, for manual mode.\n * @memberof AWSXRay\n * @function\n * @see module:capture.captureAsyncFunc\n */\n captureAsyncFunc: require('./capture').captureAsyncFunc,\n /**\n * @param {string} name - The name of the new subsegment.\n * @param {function} fcn - The function conext to wrap.\n * @param {Segment|Subsegment} [parent] - The parent for the new subsegment, for manual mode.\n * @memberof AWSXRay\n * @function\n * @see module:capture.captureCallbackFunc\n */\n captureCallbackFunc: require('./capture').captureCallbackFunc,\n /**\n * @param {AWS} awssdk - The Javascript AWS SDK.\n * @memberof AWSXRay\n * @function\n * @see module:aws_p.captureAWS\n */\n captureAWS: require('./patchers/aws_p').captureAWS,\n /**\n * @param {AWS.Service} service - An instance of a AWS service to wrap.\n * @memberof AWSXRay\n * @function\n * @see module:aws_p.captureAWSClient\n */\n captureAWSClient: require('./patchers/aws_p').captureAWSClient,\n /**\n * @param {AWSv3.Service} service - An instance of a AWS SDK v3 service to wrap.\n * @param {Segment|Subsegment} segment - Optional segment for manual mode.\n * @memberof AWSXRay\n * @function\n * @see module:aws3_p.captureAWSClient\n */\n captureAWSv3Client: require('./patchers/aws3_p').captureAWSClient,\n /**\n * @param {http|https} module - The built in Node.js HTTP or HTTPS module.\n * @memberof AWSXRay\n * @function\n * @returns {http|https}\n * @see module:http_p.captureHTTPs\n */\n captureHTTPs: require('./patchers/http_p').captureHTTPs,\n /**\n * @param {http|https} module - The built in Node.js HTTP or HTTPS module.\n * @memberof AWSXRay\n * @function\n * @see module:http_p.captureHTTPsGlobal\n */\n captureHTTPsGlobal: require('./patchers/http_p').captureHTTPsGlobal,\n /**\n * @memberof AWSXRay\n * @function\n * @see module:promise_p.capturePromise\n */\n capturePromise: require('./patchers/promise_p').capturePromise,\n /**\n * Exposes various helper methods.\n * @memberof AWSXRay\n * @function\n * @see module:utils\n */\n utils: utils,\n /**\n * @memberof AWSXRay\n * @type {object}\n * @namespace AWSXRay.database\n */\n database: {\n /**\n * Exposes the SqlData class.\n * @memberof AWSXRay.database\n * @see SqlData\n */\n SqlData: require('./database/sql_data'),\n },\n /**\n * Exposes the Middleware Utils class.\n * @memberof AWSXRay\n * @function\n * @see module:mw_utils\n */\n middleware: require('./middleware/mw_utils'),\n /**\n * Gets the current namespace of the context.\n * Used for supporting functions that can be used in automatic mode.\n * @memberof AWSXRay\n * @function\n * @returns {Segment|Subsegment}\n * @see module:context_utils.getNamespace\n */\n getNamespace: contextUtils.getNamespace,\n /**\n * Resolves the current segment or subsegment, checks manual and automatic modes.\n * Used for supporting functions that can be used in both manual and automatic modes.\n * @memberof AWSXRay\n * @function\n * @returns {Segment|Subsegment}\n * @see module:context_utils.resolveSegment\n */\n resolveSegment: contextUtils.resolveSegment,\n /**\n * Returns the current segment or subsegment. For use with automatic mode only.\n * @memberof AWSXRay\n * @function\n * @returns {Segment|Subsegment}\n * @see module:context_utils.getSegment\n */\n getSegment: contextUtils.getSegment,\n /**\n * Sets the current segment or subsegment. For use with automatic mode only.\n * @memberof AWSXRay\n * @function\n * @see module:context_utils.setSegment\n */\n setSegment: contextUtils.setSegment,\n /**\n * Returns true if automatic mode is enabled, otherwise false.\n * @memberof AWSXRay\n * @function\n * @see module:context_utils.isAutomaticMode\n */\n isAutomaticMode: contextUtils.isAutomaticMode,\n /**\n * Enables automatic mode. Automatic mode uses 'cls-hooked'.\n * @see https://github.com/jeff-lewis/cls-hooked\n * @memberof AWSXRay\n * @function\n * @see module:context_utils.enableAutomaticMode\n */\n enableAutomaticMode: contextUtils.enableAutomaticMode,\n /**\n * Disables automatic mode. Current segment or subsegment must be passed manually\n * via the parent optional on captureFunc, captureAsyncFunc etc.\n * @memberof AWSXRay\n * @function\n * @see module:context_utils.enableManualMode\n */\n enableManualMode: contextUtils.enableManualMode,\n /**\n * Sets the context missing strategy.\n * @param {Object} strategy - The strategy to set. This object's contextMissing function will be called whenever trace context is not found.\n */\n setContextMissingStrategy: contextUtils.setContextMissingStrategy,\n /**\n * Exposes the segment class.\n * @memberof AWSXRay\n * @function\n */\n Segment: require('./segments/segment'),\n /**\n * Exposes the subsegment class.\n * @memberof AWSXRay\n * @see Subsegment\n */\n Subsegment: require('./segments/attributes/subsegment'),\n SegmentUtils: segmentUtils\n};\n/**\n * Exposes the IncomingRequestData, to capture incoming request data.\n * For use with middleware.\n * @memberof AWSXRay.middleware\n * @see IncomingRequestData\n */\nAWSXRay.middleware.IncomingRequestData = require('./middleware/incoming_request_data'),\n (function () {\n var data = {\n runtime: (process.release && process.release.name) ? process.release.name : UNKNOWN,\n runtime_version: process.version,\n version: process.env.npm_package_version || UNKNOWN,\n name: process.env.npm_package_name || UNKNOWN\n };\n var sdkData = {\n sdk: 'X-Ray for Node.js',\n sdk_version: pkginfo.version ? pkginfo.version : UNKNOWN,\n package: pkginfo.name ? pkginfo.name : UNKNOWN,\n };\n segmentUtils.setSDKData(sdkData);\n segmentUtils.setServiceData(data);\n if (process.env.LAMBDA_TASK_ROOT) {\n LambdaEnv.init();\n }\n })();\nmodule.exports = AWSXRay;\n", "\"use strict\";\n// Convenience file to require the SDK from the root of the repository\nmodule.exports = require('./aws-xray');\n", "import { gunzipSync } from 'zlib';\nimport { metricScope, Configuration, Unit } from 'aws-embedded-metrics';\nimport type { Context } from 'aws-lambda';\nimport { PromiseResult } from 'aws-sdk/lib/request';\nimport { SemVer } from 'semver';\nimport { METRICS_NAMESPACE, MetricName, LANGUAGE_DIMENSION } from './constants';\nimport * as aws from '../shared/aws.lambda-shared';\nimport { compressContent } from '../shared/compress-content.lambda-shared';\nimport * as constants from '../shared/constants';\nimport { requireEnv } from '../shared/env.lambda-shared';\nimport { DocumentationLanguage } from '../shared/language';\n\nConfiguration.namespace = METRICS_NAMESPACE;\n\nexport async function handler(event: InventoryCanaryEvent, context: Context) {\n console.log('Event:', JSON.stringify(event, null, 2));\n\n const scratchworkBucket = requireEnv('SCRATCHWORK_BUCKET_NAME');\n\n const {\n continuationToken,\n indexedPackages,\n packageNames,\n packageMajorVersions,\n perLanguage,\n } = event.continuationObjectKey\n ? await loadProgress(event.continuationObjectKey)\n : {\n continuationToken: undefined,\n indexedPackages: new Map<string, IndexedPackageStatus>(),\n packageNames: new Set<string>(),\n packageMajorVersions: new Set<string>(),\n perLanguage: new Map<string, PerLanguageData>(),\n };\n\n async function loadProgress(continuationObjectKey: string) {\n console.log(\n 'Found a continuation object key, retrieving data from the existing run...'\n );\n let { Body, ContentEncoding } = await aws\n .s3()\n .getObject({\n Bucket: scratchworkBucket,\n Key: continuationObjectKey,\n })\n .promise();\n // If it was compressed, decompress it.\n if (ContentEncoding === 'gzip') {\n Body = gunzipSync(Buffer.from(Body! as any));\n }\n if (!Body) {\n throw new Error(\n `Object key \"${event.continuationObjectKey}\" not found in bucket \"${scratchworkBucket}\".`\n );\n }\n console.log('Deserializing data...');\n const serializedState = Body.toString(\n 'utf-8'\n ) as Serialized<InventoryCanaryState>;\n const state = deserialize(serializedState);\n console.log('Deserializing finished.');\n return state;\n }\n\n /**\n * Records the status of a particular package, package major version, package\n * version, and package version submodule in the per-language state storage.\n * Whenever a new entry is added, a `MISSING` entry is automatically inserted\n * for the other languages (unless another entry already exists).\n *\n * If a submodule is provided, only that submodule's availability is updated.\n */\n function recordPerLanguage(\n language: DocumentationLanguage,\n status: DocumentationStatus,\n pkgName: string,\n pkgMajor: string,\n pkgVersion: string,\n submodule?: string\n ) {\n for (const lang of DocumentationLanguage.ALL) {\n doRecordPerLanguage(\n perLanguage,\n lang,\n // If the language is NOT the registered one, then we insert \"MISSING\".\n lang === language ? status : DocumentationStatus.MISSING,\n pkgName,\n pkgMajor,\n pkgVersion,\n submodule\n );\n }\n }\n\n async function saveProgress(\n latestContinuationToken: string\n ): Promise<InventoryCanaryEvent> {\n console.log('Serializing data...');\n const serializedState: Serialized<InventoryCanaryState> = serialize({\n continuationToken: latestContinuationToken,\n packageNames,\n packageMajorVersions,\n indexedPackages,\n perLanguage,\n });\n console.log('Serializing finished.');\n\n const { buffer, contentEncoding } = compressContent(\n Buffer.from(serializedState)\n );\n\n const keyName = `inventory-canary-progress-${Date.now()}`;\n await aws\n .s3()\n .putObject({\n Bucket: scratchworkBucket,\n Key: keyName,\n Body: buffer,\n ContentType: 'application/json',\n ContentEncoding: contentEncoding,\n Metadata: {\n 'Lambda-Log-Group': context.logGroupName,\n 'Lambda-Log-Stream': context.logStreamName,\n 'Lambda-Run-Id': context.awsRequestId,\n },\n })\n .promise();\n return {\n continuationObjectKey: keyName,\n };\n }\n\n /**\n * The time margin when we need to stop working through S3 keys when we're nearing the end of the Lambda time slice.\n *\n * Needs to account for the time taken to do both:\n *\n * - Going through the list+process loop one more time\n * - Creating metrics and uploading reports\n *\n * When we used to have this at 1 minute, we hit ~1 timeout a day. So set the margin\n * a bit wider than that.\n */\n const maxMetricProcessingTime = 120_000;\n\n const packageDataBucket = requireEnv('PACKAGE_DATA_BUCKET_NAME');\n\n for await (const [keys, latestContinuationToken] of relevantObjectKeys(\n packageDataBucket,\n continuationToken\n )) {\n console.log(`Got a page of ${keys.length} keys`);\n for (const key of keys) {\n const [, name, version] = constants.STORAGE_KEY_FORMAT_REGEX.exec(key)!;\n\n packageNames.add(name);\n const majorVersion = `${name}@${new SemVer(version).major}`;\n packageMajorVersions.add(majorVersion);\n\n const fullName = `${name}@${version}`;\n\n // Ensure the package is fully registered for per-language status, even if no doc exists yet.\n for (const language of DocumentationLanguage.ALL) {\n recordPerLanguage(\n language,\n DocumentationStatus.MISSING,\n name,\n majorVersion,\n fullName\n );\n }\n\n if (!indexedPackages.has(fullName)) {\n indexedPackages.set(fullName, {});\n }\n const status = indexedPackages.get(fullName)!;\n\n if (key.endsWith(constants.METADATA_KEY_SUFFIX)) {\n status.metadataPresent = true;\n } else if (key.endsWith(constants.PACKAGE_KEY_SUFFIX)) {\n status.tarballPresent = true;\n } else if (key.endsWith(constants.ASSEMBLY_KEY_SUFFIX)) {\n status.assemblyPresent = true;\n } else if (key.endsWith(constants.UNINSTALLABLE_PACKAGE_SUFFIX)) {\n status.uninstallable = true;\n } else {\n let identified = false;\n for (const language of DocumentationLanguage.ALL) {\n const matchJson = submoduleKeyRegexp(language, 'json').exec(key);\n const matchMd = submoduleKeyRegexp(language, 'md').exec(key);\n if (matchJson != null) {\n const [, submodule, isUnsupported] = matchJson;\n if (status.submodules == null) {\n status.submodules = new Set();\n }\n status.submodules.add(`${fullName}.${submodule}`);\n recordPerLanguage(\n language,\n isUnsupported\n ? DocumentationStatus.UNSUPPORTED\n : DocumentationStatus.SUPPORTED,\n name,\n majorVersion,\n fullName,\n submodule\n );\n identified = true;\n } else if (\n key.endsWith(constants.docsKeySuffix(language, undefined, 'json'))\n ) {\n recordPerLanguage(\n language,\n DocumentationStatus.SUPPORTED,\n name,\n majorVersion,\n fullName\n );\n identified = true;\n } else if (\n key.endsWith(\n constants.notSupportedKeySuffix(language, undefined, 'json')\n )\n ) {\n recordPerLanguage(\n language,\n DocumentationStatus.UNSUPPORTED,\n name,\n majorVersion,\n fullName\n );\n identified = true;\n } else if (\n key.endsWith(\n constants.corruptAssemblyKeySuffix(language, undefined, 'json')\n )\n ) {\n recordPerLanguage(\n language,\n DocumentationStatus.CORRUPT_ASSEMBLY,\n name,\n majorVersion,\n fullName\n );\n identified = true;\n\n // Currently we generate both JSON files and markdown files, so for now\n // we record JSON files as the source of truth, but still identify\n // markdown files so they are not counted as unknown.\n } else if (matchMd != null) {\n identified = true;\n } else if (\n key.endsWith(constants.docsKeySuffix(language, undefined, 'md'))\n ) {\n identified = true;\n } else if (\n key.endsWith(\n constants.notSupportedKeySuffix(language, undefined, 'md')\n )\n ) {\n identified = true;\n } else if (\n key.endsWith(\n constants.corruptAssemblyKeySuffix(language, undefined, 'md')\n )\n ) {\n identified = true;\n }\n }\n if (!identified) {\n status.unknownObjects = status.unknownObjects ?? [];\n status.unknownObjects.push(key);\n }\n }\n }\n\n if (\n latestContinuationToken &&\n context.getRemainingTimeInMillis() <= maxMetricProcessingTime\n ) {\n console.log(\n 'Running up to the Lambda time limit and there are still items to process. Saving our current progress...'\n );\n return saveProgress(latestContinuationToken);\n }\n }\n\n const reports: Promise<\n PromiseResult<AWS.S3.PutObjectOutput, AWS.AWSError>\n >[] = [];\n\n function createReport(reportKey: string, packageVersions: string[]) {\n const report = JSON.stringify(packageVersions, null, 2);\n const { buffer, contentEncoding } = compressContent(Buffer.from(report));\n console.log(`Uploading list to s3://${packageDataBucket}/${reportKey}`);\n reports.push(\n aws\n .s3()\n .putObject({\n Body: buffer,\n Bucket: packageDataBucket,\n ContentEncoding: contentEncoding,\n ContentType: 'application/json',\n Expires: new Date(Date.now() + 300_000), // 5 minutes from now\n Key: reportKey,\n Metadata: {\n 'Lambda-Run-Id': context.awsRequestId,\n 'Lambda-Log-Group-Name': context.logGroupName,\n 'Lambda-Log-Stream-Name': context.logStreamName,\n },\n })\n .promise()\n );\n }\n\n await metricScope((metrics) => () => {\n // Clear out default dimensions as we don't need those. See https://github.com/awslabs/aws-embedded-metrics-node/issues/73.\n metrics.setDimensions({});\n\n const missingMetadata = new Array<string>();\n const missingAssembly = new Array<string>();\n const missingTarball = new Array<string>();\n const uninstallable = new Array<string>();\n const unknownObjects = new Array<string>();\n const submodules = new Array<string>();\n for (const [name, status] of indexedPackages.entries()) {\n if (!status.metadataPresent) {\n missingMetadata.push(name);\n }\n if (!status.assemblyPresent) {\n missingAssembly.push(name);\n }\n if (!status.tarballPresent) {\n missingTarball.push(name);\n }\n if (status.uninstallable) {\n uninstallable.push(name);\n }\n if (status.unknownObjects?.length ?? 0 > 0) {\n unknownObjects.push(...status.unknownObjects!);\n }\n\n for (const submodule of status.submodules ?? []) {\n submodules.push(submodule);\n }\n }\n\n metrics.setProperty('detail', {\n missingMetadata,\n missingAssembly,\n missingTarball,\n unknownObjects,\n });\n\n metrics.putMetric(\n MetricName.UNINSTALLABLE_PACKAGE_COUNT,\n uninstallable.length,\n Unit.Count\n );\n metrics.putMetric(\n MetricName.MISSING_METADATA_COUNT,\n missingMetadata.length,\n Unit.Count\n );\n metrics.putMetric(\n MetricName.MISSING_ASSEMBLY_COUNT,\n missingAssembly.length,\n Unit.Count\n );\n metrics.putMetric(\n MetricName.MISSING_TARBALL_COUNT,\n missingTarball.length,\n Unit.Count\n );\n metrics.putMetric(MetricName.PACKAGE_COUNT, packageNames.size, Unit.Count);\n metrics.putMetric(\n MetricName.PACKAGE_MAJOR_COUNT,\n packageMajorVersions.size,\n Unit.Count\n );\n metrics.putMetric(\n MetricName.PACKAGE_VERSION_COUNT,\n indexedPackages.size,\n Unit.Count\n );\n metrics.putMetric(\n MetricName.SUBMODULE_COUNT,\n submodules.length,\n Unit.Count\n );\n metrics.putMetric(\n MetricName.UNKNOWN_OBJECT_COUNT,\n unknownObjects.length,\n Unit.Count\n );\n\n createReport(constants.UNINSTALLABLE_PACKAGES_REPORT, uninstallable);\n })();\n\n for (const entry of Array.from(perLanguage.entries())) {\n await metricScope(\n (metrics) => async (language: string, data: PerLanguageData) => {\n console.log('');\n console.log('##################################################');\n console.log(`### Start of data for ${language}`);\n\n metrics.setDimensions({ [LANGUAGE_DIMENSION]: language.toString() });\n\n for (const forStatus of [\n DocumentationStatus.SUPPORTED,\n DocumentationStatus.UNSUPPORTED,\n DocumentationStatus.MISSING,\n DocumentationStatus.CORRUPT_ASSEMBLY,\n ]) {\n for (const [key, statuses] of data.entries()) {\n let filtered = Array.from(statuses.entries()).filter(\n ([, status]) => forStatus === status\n );\n let metricName =\n METRIC_NAME_BY_STATUS_AND_GRAIN[forStatus as DocumentationStatus][\n key as Grain\n ];\n\n if (\n (forStatus === DocumentationStatus.MISSING &&\n metricName === MetricName.PER_LANGUAGE_MISSING_VERSIONS) ||\n (forStatus === DocumentationStatus.CORRUPT_ASSEMBLY &&\n metricName ===\n MetricName.PER_LANGUAGE_CORRUPT_ASSEMBLY_VERSIONS)\n ) {\n // generate reports for missing/corrupt only for package versions granularity\n const lang = DocumentationLanguage.fromString(language);\n const reportKey =\n forStatus === DocumentationStatus.MISSING\n ? constants.missingDocumentationReport(lang)\n : constants.corruptAssemblyReport(lang);\n createReport(reportKey, filtered.map(([name]) => name).sort());\n }\n\n console.log(\n `${forStatus} ${key} for ${language}: ${filtered.length} entries`\n );\n metrics.putMetric(metricName, filtered.length, Unit.Count);\n }\n }\n\n console.log(`### End of data for ${language}`);\n console.log('##################################################');\n console.log('');\n }\n )(...entry);\n }\n\n for (const report of reports) {\n await report;\n }\n\n return {};\n}\n\n/**\n * List all objects in the bucket, yielding batches of up to 1000 keys. Also\n * yields the next continuation token if there is one.\n */\nasync function* relevantObjectKeys(\n bucket: string,\n continuationToken?: string\n): AsyncGenerator<[string[], string | undefined], void, void> {\n const request: AWS.S3.ListObjectsV2Request = {\n Bucket: bucket,\n Prefix: constants.STORAGE_KEY_PREFIX,\n };\n if (continuationToken) request.ContinuationToken = continuationToken;\n\n do {\n const response = await aws.s3().listObjectsV2(request).promise();\n const keys = [];\n for (const { Key } of response.Contents ?? []) {\n if (Key == null) {\n continue;\n }\n keys.push(Key);\n }\n yield [keys, response.ContinuationToken];\n request.ContinuationToken = response.NextContinuationToken;\n } while (request.ContinuationToken != null);\n}\n\n/**\n * This function obtains a regular expression with a capture group that allows\n * determining the submodule name from a submodule documentation key, and\n * another to determine whether the object is an \"unsupported beacon\" or not.\n */\nfunction submoduleKeyRegexp(\n language: DocumentationLanguage,\n fileExt: string\n): RegExp {\n // We use a placeholder to be able to insert the capture group once we have\n // fully quoted the key prefix for Regex safety.\n const placeholder = '<SUBMODULENAME>';\n\n // We obtain the standard key suffix.\n const keyPrefix = constants.docsKeySuffix(language, placeholder, fileExt);\n\n // Finally, assemble the regular expression with the capture group.\n return new RegExp(\n `.*${reQuote(keyPrefix).replace(placeholder, '(.+)')}(${reQuote(\n constants.NOT_SUPPORTED_SUFFIX\n )})?$`\n );\n\n /**\n * Escapes all \"speacial meaning\" characters in a string, so it can be used as\n * part of a regular expression.\n */\n function reQuote(str: string): string {\n return str.replace(/([+*.()?$[\\]])/g, '\\\\$1');\n }\n}\n\ninterface IndexedPackageStatus {\n metadataPresent?: boolean;\n assemblyPresent?: boolean;\n uninstallable?: boolean;\n submodules?: Set<string>;\n tarballPresent?: boolean;\n unknownObjects?: string[];\n}\n\nexport const enum Grain {\n PACKAGE_MAJOR_VERSIONS = 'package major versions',\n PACKAGE_VERSION_SUBMODULES = 'package version submodules',\n PACKAGE_VERSIONS = 'package versions',\n PACKAGES = 'packages',\n}\n\ntype PerLanguageData = Map<Grain, Map<string, DocumentationStatus>>;\n\nexport const enum DocumentationStatus {\n /**\n * This package is missing any kind of documentation or marker file.\n */\n MISSING = 'Missing',\n\n /**\n * This package does not support the given language.\n */\n UNSUPPORTED = 'Unsupported',\n\n /**\n * This package has a corrupted JSII assembly so we can't generate\n * documentation for it.\n */\n CORRUPT_ASSEMBLY = 'CorruptAssembly',\n\n /**\n * This package supports the given language and has documentation for it.\n */\n SUPPORTED = 'Supported',\n}\n\nconst METRIC_NAME_BY_STATUS_AND_GRAIN: {\n readonly [status in DocumentationStatus]: {\n readonly [grain in Grain]: MetricName;\n };\n} = {\n [DocumentationStatus.MISSING]: {\n [Grain.PACKAGES]: MetricName.PER_LANGUAGE_MISSING_PACKAGES,\n [Grain.PACKAGE_MAJOR_VERSIONS]: MetricName.PER_LANGUAGE_MISSING_MAJORS,\n [Grain.PACKAGE_VERSIONS]: MetricName.PER_LANGUAGE_MISSING_VERSIONS,\n [Grain.PACKAGE_VERSION_SUBMODULES]:\n MetricName.PER_LANGUAGE_MISSING_SUBMODULES,\n },\n [DocumentationStatus.UNSUPPORTED]: {\n [Grain.PACKAGES]: MetricName.PER_LANGUAGE_UNSUPPORTED_PACKAGES,\n [Grain.PACKAGE_MAJOR_VERSIONS]: MetricName.PER_LANGUAGE_UNSUPPORTED_MAJORS,\n [Grain.PACKAGE_VERSIONS]: MetricName.PER_LANGUAGE_UNSUPPORTED_VERSIONS,\n [Grain.PACKAGE_VERSION_SUBMODULES]:\n MetricName.PER_LANGUAGE_UNSUPPORTED_SUBMODULES,\n },\n [DocumentationStatus.SUPPORTED]: {\n [Grain.PACKAGES]: MetricName.PER_LANGUAGE_SUPPORTED_PACKAGES,\n [Grain.PACKAGE_MAJOR_VERSIONS]: MetricName.PER_LANGUAGE_SUPPORTED_MAJORS,\n [Grain.PACKAGE_VERSIONS]: MetricName.PER_LANGUAGE_SUPPORTED_VERSIONS,\n [Grain.PACKAGE_VERSION_SUBMODULES]:\n MetricName.PER_LANGUAGE_SUPPORTED_SUBMODULES,\n },\n [DocumentationStatus.CORRUPT_ASSEMBLY]: {\n [Grain.PACKAGES]: MetricName.PER_LANGUAGE_CORRUPT_ASSEMBLY_PACKAGES,\n [Grain.PACKAGE_MAJOR_VERSIONS]:\n MetricName.PER_LANGUAGE_CORRUPT_ASSEMBLY_MAJORS,\n [Grain.PACKAGE_VERSIONS]: MetricName.PER_LANGUAGE_CORRUPT_ASSEMBLY_VERSIONS,\n [Grain.PACKAGE_VERSION_SUBMODULES]:\n MetricName.PER_LANGUAGE_CORRUPT_ASSEMBLY_SUBMODULES,\n },\n};\n\n/**\n * Registers the information for the provided language. A \"MISSING\" status\n * will be ignored if another status was already registered for the same\n * entity. An \"UNSUPPORTED\" status will be ignored if a \"SUPPORTED\" status\n * was already registered for the same entity.\n *\n * If a submodule is provided, only that submodule's availability is updated.\n */\nfunction doRecordPerLanguage(\n perLanguage: Map<string, PerLanguageData>,\n language: DocumentationLanguage,\n status: DocumentationStatus,\n pkgName: string,\n pkgMajor: string,\n pkgVersion: string,\n submodule?: string\n) {\n if (!perLanguage.has(language.name)) {\n const perGrainData = new Map<Grain, Map<string, DocumentationStatus>>();\n perGrainData.set(Grain.PACKAGE_MAJOR_VERSIONS, new Map());\n perGrainData.set(Grain.PACKAGES, new Map());\n perGrainData.set(Grain.PACKAGE_VERSION_SUBMODULES, new Map());\n perGrainData.set(Grain.PACKAGE_VERSIONS, new Map());\n perLanguage.set(language.name, perGrainData);\n }\n const data = perLanguage.get(language.name)!;\n\n // If there is a submodule, only update the submodule domain.\n const outputDomains: readonly [Map<string, DocumentationStatus>, string][] =\n submodule\n ? [\n [\n data.get(Grain.PACKAGE_VERSION_SUBMODULES)!,\n `${pkgVersion}.${submodule}`,\n ],\n ]\n : [\n [data.get(Grain.PACKAGE_MAJOR_VERSIONS)!, pkgMajor],\n [data.get(Grain.PACKAGE_VERSIONS)!, pkgVersion],\n [data.get(Grain.PACKAGES)!, pkgName],\n ];\n for (const [map, name] of outputDomains) {\n switch (status) {\n case DocumentationStatus.MISSING:\n // If we already have a status, don't override it with \"MISSING\".\n if (!map.has(name)) {\n map.set(name, status);\n }\n break;\n case DocumentationStatus.SUPPORTED:\n // If the package is \"supported\", this always \"wins\"\n map.set(name, status);\n break;\n case DocumentationStatus.UNSUPPORTED:\n case DocumentationStatus.CORRUPT_ASSEMBLY:\n // If we already have a status, only override with if it was \"MISSING\".\n if (!map.has(name) || map.get(name) === DocumentationStatus.MISSING) {\n map.set(name, status);\n }\n break;\n }\n }\n}\n\n/**\n * Expected input event structure as passed by the state machine.\n */\nexport interface InventoryCanaryEvent {\n readonly continuationObjectKey?: string;\n}\n\n/**\n * Intermediate state stored between invocations of the inventory canary.\n */\nexport interface InventoryCanaryState {\n readonly continuationToken: string;\n readonly indexedPackages: Map<string, IndexedPackageStatus>;\n readonly packageNames: Set<string>;\n readonly packageMajorVersions: Set<string>;\n readonly perLanguage: Map<string, PerLanguageData>;\n}\n\ntype Serialized<T> = string & { _serialized: T };\n\n/**\n * Replacer that can be used in JSON.stringify to automatically turn objects back into maps\n * and arrays back into sets where appropriate.\n */\nfunction safeReplacer(_key: string, value: any) {\n if (value instanceof Map) {\n return {\n _type: 'Map',\n value: Array.from(value.entries()),\n };\n } else if (value instanceof Set) {\n return {\n _type: 'Set',\n value: Array.from([...value]),\n };\n } else {\n return value;\n }\n}\n\nfunction safeReviver(_key: string, value: any) {\n if (typeof value === 'object' && value !== null) {\n if (value._type === 'Map') {\n return new Map(value.value);\n }\n if (value._type === 'Set') {\n return new Set(value.value);\n }\n }\n return value;\n}\n\nexport function serialize<T>(value: T): Serialized<T> {\n return JSON.stringify(value, safeReplacer, 2) as Serialized<T>;\n}\n\nexport function deserialize<T>(value: Serialized<T>): T {\n return JSON.parse(value, safeReviver);\n}\n", "/**\n * The namespace in which metrics are published.\n */\nexport const METRICS_NAMESPACE = 'ConstructHub/Inventory';\n\n/**\n * Names of available metrics from the Inventory canary function.\n */\nexport const enum MetricName {\n UNINSTALLABLE_PACKAGE_COUNT = 'UninstallablePackageCount',\n MISSING_METADATA_COUNT = 'MissingPackageMetadataCount',\n MISSING_ASSEMBLY_COUNT = 'MissingAssemblyCount',\n MISSING_TARBALL_COUNT = 'MissingPackageTarballCount',\n PACKAGE_VERSION_COUNT = 'PackageVersionCount',\n PACKAGE_MAJOR_COUNT = 'PackageMajorVersionCount',\n PACKAGE_COUNT = 'PackageCount',\n SUBMODULE_COUNT = 'SubmoduleCount',\n UNKNOWN_OBJECT_COUNT = 'UnknownObjectCount',\n\n // Scoped metrics\n PER_LANGUAGE_MISSING_PACKAGES = 'MissingPackageCount',\n PER_LANGUAGE_MISSING_MAJORS = 'MissingMajorVersionCount',\n PER_LANGUAGE_MISSING_VERSIONS = 'MissingPackageVersionCount',\n PER_LANGUAGE_MISSING_SUBMODULES = 'MissingSubmoduleCount',\n\n PER_LANGUAGE_SUPPORTED_PACKAGES = 'SupportedPackageCount',\n PER_LANGUAGE_SUPPORTED_MAJORS = 'SupportedMajorVersionCount',\n PER_LANGUAGE_SUPPORTED_VERSIONS = 'SupportedPackageVersionCount',\n PER_LANGUAGE_SUPPORTED_SUBMODULES = 'SupportedSubmoduleCount',\n\n PER_LANGUAGE_UNSUPPORTED_PACKAGES = 'UnsupportedPackageCount',\n PER_LANGUAGE_UNSUPPORTED_MAJORS = 'UnsupportedMajorVersionCount',\n PER_LANGUAGE_UNSUPPORTED_VERSIONS = 'UnsupportedPackageVersionCount',\n PER_LANGUAGE_UNSUPPORTED_SUBMODULES = 'UnsupportedSubmoduleCount',\n\n PER_LANGUAGE_CORRUPT_ASSEMBLY_PACKAGES = 'CorruptAssemblyPackageCount',\n PER_LANGUAGE_CORRUPT_ASSEMBLY_MAJORS = 'CorruptAssemblyMajorVersionCount',\n PER_LANGUAGE_CORRUPT_ASSEMBLY_VERSIONS = 'CorruptAssemblyPackageVersionCount',\n PER_LANGUAGE_CORRUPT_ASSEMBLY_SUBMODULES = 'CorruptAssemblySubmoduleCount',\n}\n\n/**\n * The dimension key to use for accessing the language.\n */\nexport const LANGUAGE_DIMENSION = 'Language';\n", "import * as _AWS from 'aws-sdk';\nimport * as AWSXRay from 'aws-xray-sdk-core';\n\n// Do nothing if there is no XRay trace context\nAWSXRay.setContextMissingStrategy(() => {});\n\nconst AWS = AWSXRay.captureAWS(_AWS);\n\nlet _ecs: AWS.ECS | undefined;\nlet _s3: AWS.S3 | undefined;\nlet _sqs: AWS.SQS | undefined;\nlet _sfn: AWS.StepFunctions | undefined;\nlet _lambda: AWS.Lambda | undefined;\nlet _codeArtifact: AWS.CodeArtifact | undefined;\n\nexport function ecs(): AWS.ECS {\n if (_ecs == null) {\n _ecs = new AWS.ECS();\n }\n return _ecs;\n}\n\nexport function s3(): AWS.S3 {\n if (_s3 == null) {\n _s3 = new AWS.S3();\n }\n return _s3;\n}\n\n/**\n * Checks whether an object exists in S3 at the provided bucket and key.\n */\nexport function s3ObjectExists(bucket: string, key: string): Promise<boolean> {\n return s3()\n .headObject({\n Bucket: bucket,\n Key: key,\n })\n .promise()\n .then(\n () => true,\n (cause) => {\n if (cause.code === 'NotFound') {\n return false;\n }\n return Promise.reject(cause);\n }\n );\n}\n\nexport function sqs(): AWS.SQS {\n if (_sqs == null) {\n _sqs = new AWS.SQS();\n }\n return _sqs;\n}\n\nexport function stepFunctions(): AWS.StepFunctions {\n if (_sfn == null) {\n _sfn = new AWS.StepFunctions();\n }\n return _sfn;\n}\n\nexport function lambda(): AWS.Lambda {\n if (_lambda == null) {\n _lambda = new AWS.Lambda();\n }\n return _lambda;\n}\n\nexport function codeArtifact(): AWS.CodeArtifact {\n if (_codeArtifact == null) {\n _codeArtifact = new AWS.CodeArtifact();\n }\n return _codeArtifact;\n}\n\n/**\n * Resets all clients vended by this module. This is useful in unit tests when\n * `aws-sdk-mocks` is used, so that new mocks are injected as intended.\n */\nexport function reset(): void {\n _ecs = _s3 = _sqs = _sfn = _lambda = _codeArtifact = undefined;\n}\n", "import { gzipSync } from 'zlib';\n\nconst MINIMUM_SIZE_TO_COMPRESS = 1_024;\n\n/**\n * Compresses the content of the provided `buffer` if it is large enough to\n * warrant the effort, and if the compressed output is actually smaller than\n * the input.\n *\n * @param buffer the buffer to be compressed.\n *\n * @returns the result of the operation.\n */\nexport function compressContent(buffer: Buffer): CompressContentResult {\n if (buffer.length < MINIMUM_SIZE_TO_COMPRESS) {\n return { buffer };\n }\n const gz = gzipSync(buffer, { level: 9 });\n // If it did not compress well, we'll keep the un-compressed original...\n if (gz.length >= buffer.length) {\n return { buffer };\n }\n return { buffer: gz, contentEncoding: 'gzip' };\n}\n\n/**\n * The result of a `compressContent` call.\n */\nexport interface CompressContentResult {\n /**\n * The possibly compressed buffer. This may be the un-modified input buffer.\n */\n readonly buffer: Buffer;\n\n /**\n * The content-encoding that should be applied to the object. This is\n * undefined if the input has not been modified.\n */\n readonly contentEncoding?: 'gzip';\n}\n", "/**\n * Supported languages to generate documentation in.\n */\nexport class DocumentationLanguage {\n /**\n * TypeScript.\n */\n public static readonly TYPESCRIPT = new DocumentationLanguage('typescript');\n\n /**\n * Python.\n */\n public static readonly PYTHON = new DocumentationLanguage('python');\n\n /**\n * Java.\n */\n public static readonly JAVA = new DocumentationLanguage('java');\n\n /**\n * CSharp.\n */\n public static readonly CSHARP = new DocumentationLanguage('csharp', 'dotnet');\n\n /**\n * Go.\n */\n public static readonly GO = new DocumentationLanguage('go');\n\n /**\n * All supported languages.\n */\n public static readonly ALL = [\n DocumentationLanguage.TYPESCRIPT,\n DocumentationLanguage.PYTHON,\n DocumentationLanguage.JAVA,\n DocumentationLanguage.CSHARP,\n DocumentationLanguage.GO,\n ] as const;\n\n /**\n * Transform a literal string to the `DocumentationLanguage` object.\n *\n * Throws an `UnsupportedLanguageError` if the language is not supported.\n */\n public static fromString(lang: string) {\n switch (lang) {\n case DocumentationLanguage.TYPESCRIPT.toString():\n return DocumentationLanguage.TYPESCRIPT;\n case DocumentationLanguage.PYTHON.toString():\n return DocumentationLanguage.PYTHON;\n case DocumentationLanguage.JAVA.toString():\n return DocumentationLanguage.JAVA;\n case DocumentationLanguage.CSHARP.toString():\n case DocumentationLanguage.CSHARP.targetName:\n return DocumentationLanguage.CSHARP;\n case DocumentationLanguage.GO.toString():\n return DocumentationLanguage.GO;\n default:\n throw new UnsupportedLanguageError(lang, DocumentationLanguage.ALL);\n }\n }\n\n private constructor(\n public readonly name: string,\n public readonly targetName = name\n ) {}\n\n public toString() {\n return this.name;\n }\n}\n\nexport class UnsupportedLanguageError extends Error {\n constructor(lang: string, supported: readonly DocumentationLanguage[]) {\n super(\n `Unsupported language: ${lang}. Supported languages are: [${supported}]`\n );\n }\n}\n", "/*\n * IMPORTANT: This file is used both by bundled lambda functions and by\n * constructs. This means it should not directly or transitively import anything\n * not part of the package's `dependencies`, such as the `aws-sdk`.\n */\n\nimport { DocumentationLanguage } from './language';\n\n/**\n * Key prefix for the package data storage.\n */\nexport const STORAGE_KEY_PREFIX = 'data/';\n\n/**\n * Key suffix for storing npm package bundles.\n */\nexport const PACKAGE_KEY_SUFFIX = '/package.tgz';\n\n/**\n * Key suffix for storing npm package metadata.\n */\nexport const METADATA_KEY_SUFFIX = '/metadata.json';\n\n/**\n * The key suffix for (TypeScript) assembly files\n */\nexport const ASSEMBLY_KEY_SUFFIX = '/assembly.json';\n\n/**\n * The key suffix release notes file\n */\nexport const PACKAGE_RELEASE_NOTES_KEY_SUFFIX = '/release-notes.md';\n\n/**\n * The key suffix for a TypeScript doc artifact (root module).\n */\nexport const DOCS_KEY_SUFFIX_TYPESCRIPT = docsKeySuffix(\n DocumentationLanguage.TYPESCRIPT\n);\n\n/**\n * The key suffix for a Python doc artifact (root module).\n */\nexport const DOCS_KEY_SUFFIX_PYTHON = docsKeySuffix(\n DocumentationLanguage.PYTHON\n);\n\n/**\n * The key suffix for a Java doc artifact (root module).\n */\nexport const DOCS_KEY_SUFFIX_JAVA = docsKeySuffix(DocumentationLanguage.JAVA);\n\n/**\n * The key suffix for a Dotnet doc artifact (root module).\n */\nexport const DOCS_KEY_SUFFIX_CSHARP = docsKeySuffix(\n DocumentationLanguage.CSHARP\n);\n\n/**\n * The key suffix for a Go doc artifact (root module).\n */\nexport const DOCS_KEY_SUFFIX_GO = docsKeySuffix(DocumentationLanguage.GO);\n\n/**\n * The key suffix matching any documentation artifact.\n */\nexport const DOCS_KEY_SUFFIX_ANY = docsKeySuffix('*');\n\n/**\n * Key for RSS document\n */\nexport const FEED_RSS_KEY = 'rss';\n\n/**\n * Key for RSS document\n */\nexport const FEED_ATOM_KEY = 'atom';\n\n/**\n * Key for badge image endpoint.\n */\nexport const BADGE_KEY = 'badge';\n\n/**\n * Env variable name used to set construct hub url for RSS/ATOM feed\n */\nexport const CONSTRUCT_HUB_URL_ENV_VAR_NAME = 'CONSTRUCT_HUB_URL';\n\nexport const CONSTRUCT_HUB_FEED_TITLE = 'CONSTRUCT_HUB_FEED_TITLE';\n\nexport const CONSTRUCT_HUB_FEED_DESCRIPTION = 'CONSTRUCT_HUB_FEED_DESCRIPTION';\n\n/**\n * Return the S3 object key prefix for a specific package name and optionally a\n * version. Note that the prefix does not end with a \"/\" so you will likely want\n * to add that if you want to match a specific set of objects.\n */\nexport function getObjectKeyPrefix(\n packageName: string,\n packageVersion?: string\n) {\n let key = `${STORAGE_KEY_PREFIX}${packageName}`;\n if (packageVersion) {\n key += `/v${packageVersion}`;\n }\n\n return key;\n}\n\n/**\n * Resolves the set of S3 object keys use for a specific package/version.\n */\nexport function getObjectKeys(packageName: string, packageVersion: string) {\n const prefix = getObjectKeyPrefix(packageName, packageVersion);\n return {\n assemblyKey: `${prefix}${ASSEMBLY_KEY_SUFFIX}`,\n packageKey: `${prefix}${PACKAGE_KEY_SUFFIX}`,\n metadataKey: `${prefix}${METADATA_KEY_SUFFIX}`,\n releaseNotesKey: `${prefix}${PACKAGE_RELEASE_NOTES_KEY_SUFFIX}`,\n };\n}\n\n/**\n * The key suffix for documentation artifacts by language and submodule.\n *\n * SubmoduleFqn can cleverly be '*' which means \"all submodules\".\n */\nexport function docsKeySuffix(\n lang?: DocumentationLanguage | '*',\n submoduleFqn?: string,\n fileExt?: string\n) {\n // We strip the first part (assembly name) off of the submodule name, but\n // only if it's not '*'\n const submodule =\n submoduleFqn && submoduleFqn !== '*'\n ? submoduleFqn.split('.').slice(1).join('.')\n : submoduleFqn;\n\n return `/docs-${submodule ? `${submodule}-` : ''}${lang}.${fileExt ?? '*'}`;\n}\n\n/**\n * The key suffix for a corrupted assembly marker by language and submodule.\n */\nexport function corruptAssemblyKeySuffix(\n lang?: DocumentationLanguage | '*',\n submodule?: string,\n fileExt?: string\n) {\n return `${docsKeySuffix(lang, submodule, fileExt)}${CORRUPT_ASSEMBLY_SUFFIX}`;\n}\n\n/**\n * The key suffix for a not supported marker by language and submodule.\n */\nexport function notSupportedKeySuffix(\n lang?: DocumentationLanguage | '*',\n submodule?: string,\n fileExt?: string\n) {\n return `${docsKeySuffix(lang, submodule, fileExt)}${NOT_SUPPORTED_SUFFIX}`;\n}\n\n/**\n * Key suffix for beacon files when a particular feature is not supported for\n * the particular package (i.e: Python docs for a package that does not have a\n * Python target configured).\n */\nexport const NOT_SUPPORTED_SUFFIX = '.not-supported';\n\n/**\n * Key suffix for beacon files marking that a language specific assembly is corrupt\n * and we cannot generate docs from it.\n */\nexport const CORRUPT_ASSEMBLY_SUFFIX = '.corruptassembly';\n\n/**\n * Key suffix for a beacon file when a package cannot be installed.\n */\nexport const UNINSTALLABLE_PACKAGE_SUFFIX = '/uninstallable';\n\n/**\n * Name of the error denoting an unprocessable package that should be diverted away from the DLQ.\n */\nexport const UNPROCESSABLE_PACKAGE_ERROR_NAME = 'UnprocessablePackageError';\n\n/**\n * The key for the catalog document.\n */\nexport const CATALOG_KEY = 'catalog.json';\n\n/** Key for feed metadata document*/\nexport const FEED_METADATA_KEY = 'feed-metadata.json';\n\n/**\n * The key for the version tracking document.\n */\nexport const VERSION_TRACKER_KEY = 'all-versions.json';\n\n/**\n * The key for missing documentation report.\n *\n * @param language the language for which missing documentation is requested.\n */\nexport function missingDocumentationReport(\n language: DocumentationLanguage\n): string {\n return `missing-objects/${language.name}-documentation.json`;\n}\n\n/**\n * The key for corrupt assembly report.\n *\n * @param language the language for which the report is requested.\n */\nexport function corruptAssemblyReport(language: DocumentationLanguage): string {\n return `corruptassembly-objects/${language.name}.json`;\n}\n\n/**\n * The key for uninstallable packages report.\n */\nexport const UNINSTALLABLE_PACKAGES_REPORT = 'uninstallable-objects/data.json';\n\n/**\n * The key pattern for objects containing missing documentation lists.\n */\nexport const MISSING_DOCUMENTATION_REPORT_PATTERN =\n 'missing-objects/*-documentation.json';\n\n/**\n * The key pattern for objects containing unprocessable assembly lists.\n */\nexport const CORRUPT_ASSEMBLY_REPORT_PATTERN = 'corruptassembly-objects/*.json';\n\n/**\n * A regular expression that can be used to parse out a storage key.\n */\nexport const STORAGE_KEY_FORMAT_REGEX = new RegExp(\n `^${STORAGE_KEY_PREFIX}((?:@[^/]+/)?[^/]+)/v([^/]+)/.*$`\n);\n// Capture groups: \u2517\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u25011\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u251B \u2517\u2501\u25012\u2501\u2501\u251B\n", "import { env } from 'process';\n\nexport function requireEnv(name: string): string {\n const result = env[name];\n if (!result) {\n throw new Error(\n `No value specified for required environment variable: ${name}`\n );\n }\n return result;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Constants = void 0;\nvar Constants;\n(function (Constants) {\n Constants[Constants[\"MAX_DIMENSION_SET_SIZE\"] = 30] = \"MAX_DIMENSION_SET_SIZE\";\n Constants[Constants[\"MAX_DIMENSION_NAME_LENGTH\"] = 250] = \"MAX_DIMENSION_NAME_LENGTH\";\n Constants[Constants[\"MAX_DIMENSION_VALUE_LENGTH\"] = 1024] = \"MAX_DIMENSION_VALUE_LENGTH\";\n Constants[Constants[\"MAX_METRIC_NAME_LENGTH\"] = 1024] = \"MAX_METRIC_NAME_LENGTH\";\n Constants[Constants[\"MAX_NAMESPACE_LENGTH\"] = 256] = \"MAX_NAMESPACE_LENGTH\";\n Constants[\"VALID_NAMESPACE_REGEX\"] = \"^[a-zA-Z0-9._#:/-]+$\";\n Constants[\"VALID_DIMENSION_REGEX\"] = \"^[\\0-\u007F]+$\";\n Constants[Constants[\"MAX_TIMESTAMP_PAST_AGE\"] = 1209600000] = \"MAX_TIMESTAMP_PAST_AGE\";\n Constants[Constants[\"MAX_TIMESTAMP_FUTURE_AGE\"] = 7200000] = \"MAX_TIMESTAMP_FUTURE_AGE\";\n Constants[\"DEFAULT_NAMESPACE\"] = \"aws-embedded-metrics\";\n Constants[Constants[\"MAX_METRICS_PER_EVENT\"] = 100] = \"MAX_METRICS_PER_EVENT\";\n Constants[Constants[\"MAX_VALUES_PER_METRIC\"] = 100] = \"MAX_VALUES_PER_METRIC\";\n Constants[\"DEFAULT_AGENT_HOST\"] = \"0.0.0.0\";\n Constants[Constants[\"DEFAULT_AGENT_PORT\"] = 25888] = \"DEFAULT_AGENT_PORT\";\n})(Constants = exports.Constants || (exports.Constants = {}));\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Environments;\n(function (Environments) {\n Environments[\"Local\"] = \"Local\";\n Environments[\"Lambda\"] = \"Lambda\";\n Environments[\"Agent\"] = \"Agent\";\n Environments[\"EC2\"] = \"EC2\";\n Environments[\"ECS\"] = \"ECS\";\n Environments[\"Unknown\"] = \"\";\n})(Environments || (Environments = {}));\nexports.default = Environments;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnvironmentConfigurationProvider = void 0;\nconst Constants_1 = require(\"../Constants\");\nconst Environments_1 = __importDefault(require(\"../environment/Environments\"));\nconst ENV_VAR_PREFIX = 'AWS_EMF';\nvar ConfigKeys;\n(function (ConfigKeys) {\n ConfigKeys[\"LOG_GROUP_NAME\"] = \"LOG_GROUP_NAME\";\n ConfigKeys[\"LOG_STREAM_NAME\"] = \"LOG_STREAM_NAME\";\n ConfigKeys[\"ENABLE_DEBUG_LOGGING\"] = \"ENABLE_DEBUG_LOGGING\";\n ConfigKeys[\"SERVICE_NAME\"] = \"SERVICE_NAME\";\n ConfigKeys[\"SERVICE_TYPE\"] = \"SERVICE_TYPE\";\n ConfigKeys[\"AGENT_ENDPOINT\"] = \"AGENT_ENDPOINT\";\n ConfigKeys[\"ENVIRONMENT_OVERRIDE\"] = \"ENVIRONMENT\";\n ConfigKeys[\"NAMESPACE\"] = \"NAMESPACE\";\n})(ConfigKeys || (ConfigKeys = {}));\nclass EnvironmentConfigurationProvider {\n getConfiguration() {\n return {\n agentEndpoint: this.getEnvVariable(ConfigKeys.AGENT_ENDPOINT),\n debuggingLoggingEnabled: this.tryGetEnvVariableAsBoolean(ConfigKeys.ENABLE_DEBUG_LOGGING, false),\n logGroupName: this.getEnvVariable(ConfigKeys.LOG_GROUP_NAME),\n logStreamName: this.getEnvVariable(ConfigKeys.LOG_STREAM_NAME),\n serviceName: this.getEnvVariable(ConfigKeys.SERVICE_NAME) || this.getEnvVariableWithoutPrefix(ConfigKeys.SERVICE_NAME),\n serviceType: this.getEnvVariable(ConfigKeys.SERVICE_TYPE) || this.getEnvVariableWithoutPrefix(ConfigKeys.SERVICE_TYPE),\n environmentOverride: this.getEnvironmentOverride(),\n namespace: this.getEnvVariable(ConfigKeys.NAMESPACE) || Constants_1.Constants.DEFAULT_NAMESPACE,\n };\n }\n getEnvVariableWithoutPrefix(configKey) {\n return process.env[configKey];\n }\n getEnvVariable(configKey) {\n return process.env[`${ENV_VAR_PREFIX}_${configKey}`];\n }\n tryGetEnvVariableAsBoolean(configKey, fallback) {\n const configValue = this.getEnvVariable(configKey);\n return !configValue ? fallback : configValue.toLowerCase() === 'true';\n }\n getEnvironmentOverride() {\n const overrideValue = this.getEnvVariable(ConfigKeys.ENVIRONMENT_OVERRIDE);\n const environment = Environments_1.default[overrideValue];\n if (environment === undefined) {\n return Environments_1.default.Unknown;\n }\n return environment;\n }\n}\nexports.EnvironmentConfigurationProvider = EnvironmentConfigurationProvider;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst EnvironmentConfigurationProvider_1 = require(\"./EnvironmentConfigurationProvider\");\nconst Configuration = new EnvironmentConfigurationProvider_1.EnvironmentConfigurationProvider().getConfiguration();\nexports.default = Configuration;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LOG = void 0;\nconst Configuration_1 = __importDefault(require(\"../config/Configuration\"));\nconst LOG = (...args) => {\n if (Configuration_1.default.debuggingLoggingEnabled) {\n console.log(...args);\n }\n};\nexports.LOG = LOG;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Unit = void 0;\nvar Unit;\n(function (Unit) {\n Unit[\"Seconds\"] = \"Seconds\";\n Unit[\"Microseconds\"] = \"Microseconds\";\n Unit[\"Milliseconds\"] = \"Milliseconds\";\n Unit[\"Bytes\"] = \"Bytes\";\n Unit[\"Kilobytes\"] = \"Kilobytes\";\n Unit[\"Megabytes\"] = \"Megabytes\";\n Unit[\"Gigabytes\"] = \"Gigabytes\";\n Unit[\"Terabytes\"] = \"Terabytes\";\n Unit[\"Bits\"] = \"Bits\";\n Unit[\"Kilobits\"] = \"Kilobits\";\n Unit[\"Megabits\"] = \"Megabits\";\n Unit[\"Gigabits\"] = \"Gigabits\";\n Unit[\"Terabits\"] = \"Terabits\";\n Unit[\"Percent\"] = \"Percent\";\n Unit[\"Count\"] = \"Count\";\n Unit[\"BytesPerSecond\"] = \"Bytes/Second\";\n Unit[\"KilobytesPerSecond\"] = \"Kilobytes/Second\";\n Unit[\"MegabytesPerSecond\"] = \"Megabytes/Second\";\n Unit[\"GigabytesPerSecond\"] = \"Gigabytes/Second\";\n Unit[\"TerabytesPerSecond\"] = \"Terabytes/Second\";\n Unit[\"BitsPerSecond\"] = \"Bits/Second\";\n Unit[\"KilobitsPerSecond\"] = \"Kilobits/Second\";\n Unit[\"MegabitsPerSecond\"] = \"Megabits/Second\";\n Unit[\"GigabitsPerSecond\"] = \"Gigabits/Second\";\n Unit[\"TerabitsPerSecond\"] = \"Terabits/Second\";\n Unit[\"CountPerSecond\"] = \"Count/Second\";\n Unit[\"None\"] = \"None\";\n})(Unit = exports.Unit || (exports.Unit = {}));\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StorageResolution = void 0;\nvar StorageResolution;\n(function (StorageResolution) {\n StorageResolution[StorageResolution[\"High\"] = 1] = \"High\";\n StorageResolution[StorageResolution[\"Standard\"] = 60] = \"Standard\";\n})(StorageResolution = exports.StorageResolution || (exports.StorageResolution = {}));\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DimensionSetExceededError = void 0;\nclass DimensionSetExceededError extends Error {\n constructor(msg) {\n super(msg);\n // Set the prototype explicitly.\n Object.setPrototypeOf(this, DimensionSetExceededError.prototype);\n }\n}\nexports.DimensionSetExceededError = DimensionSetExceededError;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InvalidDimensionError = void 0;\nclass InvalidDimensionError extends Error {\n constructor(msg) {\n super(msg);\n // Set the prototype explicitly.\n Object.setPrototypeOf(this, InvalidDimensionError.prototype);\n }\n}\nexports.InvalidDimensionError = InvalidDimensionError;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InvalidMetricError = void 0;\nclass InvalidMetricError extends Error {\n constructor(msg) {\n super(msg);\n // Set the prototype explicitly.\n Object.setPrototypeOf(this, InvalidMetricError.prototype);\n }\n}\nexports.InvalidMetricError = InvalidMetricError;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InvalidNamespaceError = void 0;\nclass InvalidNamespaceError extends Error {\n constructor(msg) {\n super(msg);\n // Set the prototype explicitly.\n Object.setPrototypeOf(this, InvalidNamespaceError.prototype);\n }\n}\nexports.InvalidNamespaceError = InvalidNamespaceError;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InvalidTimestampError = void 0;\nclass InvalidTimestampError extends Error {\n constructor(msg) {\n super(msg);\n // Set the prototype explicitly.\n Object.setPrototypeOf(this, InvalidTimestampError.prototype);\n }\n}\nexports.InvalidTimestampError = InvalidTimestampError;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateTimestamp = exports.validateNamespace = exports.validateMetric = exports.validateDimensionSet = void 0;\nconst Constants_1 = require(\"../Constants\");\nconst Unit_1 = require(\"../logger/Unit\");\nconst StorageResolution_1 = require(\"../logger/StorageResolution\");\nconst DimensionSetExceededError_1 = require(\"../exceptions/DimensionSetExceededError\");\nconst InvalidDimensionError_1 = require(\"../exceptions/InvalidDimensionError\");\nconst InvalidMetricError_1 = require(\"../exceptions/InvalidMetricError\");\nconst InvalidNamespaceError_1 = require(\"../exceptions/InvalidNamespaceError\");\nconst InvalidTimestampError_1 = require(\"../exceptions/InvalidTimestampError\");\n/**\n * Validates dimension set.\n * @see [CloudWatch Dimensions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_Dimension.html)\n *\n * @param dimensionSet\n * @throws {DimensionSetExceededError} Dimension set must not exceed 30 dimensions.\n * @throws {InvalidDimensionError} Dimension name and value must be valid.\n */\nconst validateDimensionSet = (dimensionSet) => {\n // Validates dimension set length\n if (Object.keys(dimensionSet).length > Constants_1.Constants.MAX_DIMENSION_SET_SIZE)\n throw new DimensionSetExceededError_1.DimensionSetExceededError(`Maximum number of dimensions per dimension set allowed are ${Constants_1.Constants.MAX_DIMENSION_SET_SIZE}`);\n // Validate dimension key and value\n Object.entries(dimensionSet).forEach(([key, value]) => {\n dimensionSet[key] = value = String(value);\n if (!new RegExp(Constants_1.Constants.VALID_DIMENSION_REGEX).test(key)) {\n throw new InvalidDimensionError_1.InvalidDimensionError(`Dimension key ${key} has invalid characters`);\n }\n if (!new RegExp(Constants_1.Constants.VALID_DIMENSION_REGEX).test(value)) {\n throw new InvalidDimensionError_1.InvalidDimensionError(`Dimension value ${value} has invalid characters`);\n }\n if (key.trim().length == 0) {\n throw new InvalidDimensionError_1.InvalidDimensionError(`Dimension key ${key} must include at least one non-whitespace character`);\n }\n if (value.trim().length == 0) {\n throw new InvalidDimensionError_1.InvalidDimensionError(`Dimension value ${value} must include at least one non-whitespace character`);\n }\n if (key.length > Constants_1.Constants.MAX_DIMENSION_NAME_LENGTH) {\n throw new InvalidDimensionError_1.InvalidDimensionError(`Dimension key ${key} must not exceed maximum length ${Constants_1.Constants.MAX_DIMENSION_NAME_LENGTH}`);\n }\n if (value.length > Constants_1.Constants.MAX_DIMENSION_VALUE_LENGTH) {\n throw new InvalidDimensionError_1.InvalidDimensionError(`Dimension value ${value} must not exceed maximum length ${Constants_1.Constants.MAX_DIMENSION_VALUE_LENGTH}`);\n }\n if (key.startsWith(':')) {\n throw new InvalidDimensionError_1.InvalidDimensionError(`Dimension key ${key} cannot start with ':'`);\n }\n });\n};\nexports.validateDimensionSet = validateDimensionSet;\n/**\n * Validates metric.\n * @see [CloudWatch Metric](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html)\n *\n * @param key\n * @param value\n * @param unit\n * @param storageResolution\n *\n * @throws {InvalidMetricError} Metric name must be valid.\n */\nconst validateMetric = (key, value, unit, storageResolution, metricNameAndResolutionMap) => {\n if (key.trim().length == 0) {\n throw new InvalidMetricError_1.InvalidMetricError(`Metric key ${key} must include at least one non-whitespace character`);\n }\n if (key.length > Constants_1.Constants.MAX_METRIC_NAME_LENGTH) {\n throw new InvalidMetricError_1.InvalidMetricError(`Metric key ${key} must not exceed maximum length ${Constants_1.Constants.MAX_METRIC_NAME_LENGTH}`);\n }\n if (!Number.isFinite(value)) {\n throw new InvalidMetricError_1.InvalidMetricError(`Metric value ${value} is not a number`);\n }\n if (value > Number.MAX_SAFE_INTEGER) {\n throw new InvalidMetricError_1.InvalidMetricError(`Metric value ${value} must not exceed maximum value ${Number.MAX_SAFE_INTEGER}}`);\n }\n if (value < -Number.MAX_SAFE_INTEGER) {\n throw new InvalidMetricError_1.InvalidMetricError(`Metric value ${value} must not be less than minimum value ${-Number.MAX_SAFE_INTEGER}`);\n }\n if (unit !== undefined &&\n !Object.values(Unit_1.Unit)\n .map((u) => String(u))\n .includes(unit)) {\n throw new InvalidMetricError_1.InvalidMetricError(`Metric unit ${unit} is not valid`);\n }\n if (storageResolution !== undefined &&\n !Object.values(StorageResolution_1.StorageResolution)\n .map((s) => s)\n .includes(storageResolution)) {\n throw new InvalidMetricError_1.InvalidMetricError(`Metric resolution ${storageResolution} is not valid`);\n }\n if ((metricNameAndResolutionMap === null || metricNameAndResolutionMap === void 0 ? void 0 : metricNameAndResolutionMap.has(key)) &&\n metricNameAndResolutionMap.get(key) !== (storageResolution ? storageResolution : StorageResolution_1.StorageResolution.Standard)) {\n throw new InvalidMetricError_1.InvalidMetricError(`Resolution for metrics ${key} is already set. A single log event cannot have a metric with two different resolutions.`);\n }\n};\nexports.validateMetric = validateMetric;\n/**\n * Validates metric namespace.\n * @see [CloudWatch Namespace](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Namespace)\n *\n * @param namespace\n * @throws {InvalidNamespaceError} Namespace must be of valid length.\n */\nconst validateNamespace = (namespace) => {\n if (namespace.trim().length == 0) {\n throw new InvalidNamespaceError_1.InvalidNamespaceError(`Namespace must include at least one non-whitespace character`);\n }\n if (namespace.length > Constants_1.Constants.MAX_NAMESPACE_LENGTH) {\n throw new InvalidNamespaceError_1.InvalidNamespaceError(`Namespace must not exceed maximum length ${Constants_1.Constants.MAX_NAMESPACE_LENGTH}`);\n }\n if (!new RegExp(Constants_1.Constants.VALID_NAMESPACE_REGEX).test(namespace)) {\n throw new InvalidNamespaceError_1.InvalidNamespaceError(`Namespace ${namespace} has invalid characters`);\n }\n};\nexports.validateNamespace = validateNamespace;\n/**\n * Validates timestamp.\n * @see [CloudWatch Timestamp](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#about_timestamp)\n *\n * @param timestamp\n */\nconst validateTimestamp = (timestamp) => {\n if (!isDate(timestamp)) {\n throw new InvalidTimestampError_1.InvalidTimestampError(`Timestamp ${String(timestamp)} is invalid`);\n }\n timestamp = new Date(timestamp);\n if (timestamp < new Date(Date.now() - Constants_1.Constants.MAX_TIMESTAMP_PAST_AGE)) {\n throw new InvalidTimestampError_1.InvalidTimestampError(`Timestamp ${String(timestamp)} must not be older than ${Constants_1.Constants.MAX_TIMESTAMP_PAST_AGE} milliseconds`);\n }\n if (timestamp > new Date(Date.now() + Constants_1.Constants.MAX_TIMESTAMP_FUTURE_AGE)) {\n throw new InvalidTimestampError_1.InvalidTimestampError(`Timestamp ${String(timestamp)} must not be newer than ${Constants_1.Constants.MAX_TIMESTAMP_FUTURE_AGE} milliseconds`);\n }\n};\nexports.validateTimestamp = validateTimestamp;\nconst isDate = (timestamp) => {\n return (timestamp instanceof Date && !isNaN(new Date(timestamp).getTime())) || new Date(timestamp).getTime() > 0;\n};\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MetricValues = void 0;\nconst StorageResolution_1 = require(\"./StorageResolution\");\nclass MetricValues {\n constructor(value, unit, storageResolution) {\n this.values = [value];\n this.unit = unit || 'None';\n this.storageResolution = storageResolution || StorageResolution_1.StorageResolution.Standard;\n }\n /**\n * Appends the provided value to the current metric\n * @param value\n */\n addValue(value) {\n this.values.push(value);\n }\n}\nexports.MetricValues = MetricValues;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MetricsContext = void 0;\nconst Configuration_1 = __importDefault(require(\"../config/Configuration\"));\nconst Logger_1 = require(\"../utils/Logger\");\nconst Validator_1 = require(\"../utils/Validator\");\nconst MetricValues_1 = require(\"./MetricValues\");\nconst StorageResolution_1 = require(\"./StorageResolution\");\nclass MetricsContext {\n /**\n * Use this to create a new, empty context.\n */\n static empty() {\n return new MetricsContext();\n }\n /**\n * Constructor used to create child instances.\n * You should not use this constructor directly.\n * Instead, use createCopyWithContext() or empty().\n *\n * The reason for this is to avoid unexpected behavior when creating\n * MetricsContexts with defaultDimensions and existing dimensions.\n *\n * @param properties\n * @param dimensions\n */\n constructor(namespace, properties, dimensions, defaultDimensions, shouldUseDefaultDimensions, timestamp) {\n this.metrics = new Map();\n this.meta = {};\n this.shouldUseDefaultDimensions = true;\n this.metricNameAndResolutionMap = new Map();\n this.namespace = namespace || Configuration_1.default.namespace;\n this.properties = properties || {};\n this.dimensions = dimensions || [];\n this.timestamp = timestamp;\n this.meta.Timestamp = MetricsContext.resolveMetaTimestamp(timestamp);\n this.defaultDimensions = defaultDimensions || {};\n if (shouldUseDefaultDimensions != undefined) {\n this.shouldUseDefaultDimensions = shouldUseDefaultDimensions;\n }\n }\n static resolveMetaTimestamp(timestamp) {\n if (timestamp instanceof Date) {\n return timestamp.getTime();\n }\n else if (timestamp) {\n return timestamp;\n }\n else {\n return Date.now();\n }\n }\n setNamespace(value) {\n (0, Validator_1.validateNamespace)(value);\n this.namespace = value;\n }\n setProperty(key, value) {\n this.properties[key] = value;\n }\n setTimestamp(timestamp) {\n (0, Validator_1.validateTimestamp)(timestamp);\n this.timestamp = timestamp;\n this.meta.Timestamp = MetricsContext.resolveMetaTimestamp(timestamp);\n }\n /**\n * Sets default dimensions for the Context.\n * A dimension set will be created with just the default dimensions\n * and all calls to putDimensions will be prepended with the defaults.\n */\n setDefaultDimensions(dimensions) {\n (0, Logger_1.LOG)(`Received default dimensions`, dimensions);\n this.defaultDimensions = dimensions;\n }\n /**\n * Adds a new set of dimensions. Any time a new dimensions set\n * is added, the set is first prepended by the default dimensions.\n *\n * @param dimensions\n */\n putDimensions(incomingDimensionSet) {\n (0, Validator_1.validateDimensionSet)(incomingDimensionSet);\n // Duplicate dimensions sets are removed before being added to the end of the collection.\n // This ensures the latest dimension key-value is used as a target member on the root EMF node.\n // This operation is O(n^2), but acceptable given sets are capped at 10 dimensions\n const incomingDimensionSetKeys = Object.keys(incomingDimensionSet);\n this.dimensions = this.dimensions.filter((existingDimensionSet) => {\n const existingDimensionSetKeys = Object.keys(existingDimensionSet);\n if (existingDimensionSetKeys.length !== incomingDimensionSetKeys.length) {\n return true;\n }\n return !existingDimensionSetKeys.every((existingDimensionSetKey) => incomingDimensionSetKeys.includes(existingDimensionSetKey));\n });\n this.dimensions.push(incomingDimensionSet);\n }\n /**\n * Overwrite all dimensions.\n *\n * @param dimensionSets\n */\n setDimensions(dimensionSets, useDefault = false) {\n dimensionSets.forEach((dimensionSet) => (0, Validator_1.validateDimensionSet)(dimensionSet));\n this.shouldUseDefaultDimensions = useDefault;\n this.dimensions = dimensionSets;\n }\n /**\n * Reset all custom dimensions\n * @param useDefault Indicates whether default dimensions should be used\n */\n resetDimensions(useDefault) {\n this.shouldUseDefaultDimensions = useDefault;\n this.dimensions = [];\n }\n /**\n * Get the current dimensions.\n */\n getDimensions() {\n // caller has explicitly called setDimensions\n if (this.shouldUseDefaultDimensions === false) {\n return this.dimensions;\n }\n // if there are no default dimensions, return the custom dimensions\n if (Object.keys(this.defaultDimensions).length === 0) {\n return this.dimensions;\n }\n // if default dimensions have been provided, but no custom dimensions, use the defaults\n if (this.dimensions.length === 0) {\n return [this.defaultDimensions];\n }\n // otherwise, merge the dimensions\n // we do this on the read path because default dimensions\n // may get updated asynchronously by environment detection\n return this.dimensions.map((custom) => {\n return Object.assign(Object.assign({}, this.defaultDimensions), custom);\n });\n }\n putMetric(key, value, unit, storageResolution) {\n var _a;\n (0, Validator_1.validateMetric)(key, value, unit, storageResolution, this.metricNameAndResolutionMap);\n const currentMetric = this.metrics.get(key);\n if (currentMetric) {\n currentMetric.addValue(value);\n }\n else {\n this.metrics.set(key, new MetricValues_1.MetricValues(value, unit, storageResolution));\n }\n (_a = this.metricNameAndResolutionMap) === null || _a === void 0 ? void 0 : _a.set(key, storageResolution || StorageResolution_1.StorageResolution.Standard);\n }\n /**\n * Creates an independently flushable context.\n * Custom dimensions are preserved by default unless preserveDimensions parameter is set.\n * @param preserveDimensions Indicates whether custom dimensions should be preserved\n */\n createCopyWithContext(preserveDimensions = true) {\n return new MetricsContext(this.namespace, Object.assign({}, this.properties), preserveDimensions ? Object.assign([], this.dimensions) : [], this.defaultDimensions, this.shouldUseDefaultDimensions, this.timestamp);\n }\n}\nexports.MetricsContext = MetricsContext;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MetricsLogger = void 0;\nconst Configuration_1 = __importDefault(require(\"../config/Configuration\"));\nconst MetricsContext_1 = require(\"./MetricsContext\");\n/**\n * An async metrics logger.\n * Use this interface to publish logs to CloudWatch Logs\n * and extract metrics to CloudWatch Metrics asynchronously.\n */\nclass MetricsLogger {\n constructor(resolveEnvironment, context) {\n this.configureContextForEnvironment = (context, environment) => {\n const defaultDimensions = {\n // LogGroup name will entirely depend on the environment since there\n // are some cases where the LogGroup cannot be configured (e.g. Lambda)\n LogGroup: environment.getLogGroupName(),\n ServiceName: Configuration_1.default.serviceName || environment.getName(),\n ServiceType: Configuration_1.default.serviceType || environment.getType(),\n };\n context.setDefaultDimensions(defaultDimensions);\n environment.configureContext(context);\n };\n this.resolveEnvironment = resolveEnvironment;\n this.context = context || MetricsContext_1.MetricsContext.empty();\n this.flushPreserveDimensions = true;\n }\n /**\n * Flushes the current context state to the configured sink.\n */\n flush() {\n return __awaiter(this, void 0, void 0, function* () {\n // resolve the environment and get the sink\n // MOST of the time this will run synchonrously\n // This only runs asynchronously if executing for the\n // first time in a non-lambda environment\n const environment = yield this.resolveEnvironment();\n this.configureContextForEnvironment(this.context, environment);\n const sink = environment.getSink();\n // accept and reset the context\n yield sink.accept(this.context);\n this.context = this.context.createCopyWithContext(this.flushPreserveDimensions);\n });\n }\n /**\n * Set a property on the published metrics.\n * This is stored in the emitted log data and you are not\n * charged for this data by CloudWatch Metrics.\n * These values can be values that are useful for searching on,\n * but have too high cardinality to emit as dimensions to\n * CloudWatch Metrics.\n *\n * @param key Property name\n * @param value Property value\n */\n setProperty(key, value) {\n this.context.setProperty(key, value);\n return this;\n }\n /**\n * Adds a dimension.\n * This is generally a low cardinality key-value pair that is part of the metric identity.\n * CloudWatch treats each unique combination of dimensions as a separate metric, even if the metrics have the same metric name.\n *\n * @param dimension\n * @param value\n * @see [CloudWatch Dimensions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Dimension)\n */\n putDimensions(dimensions) {\n this.context.putDimensions(dimensions);\n return this;\n }\n setDimensions(dimensionSetOrSets, useDefault = false) {\n if (Array.isArray(dimensionSetOrSets)) {\n this.context.setDimensions(dimensionSetOrSets, useDefault);\n }\n else {\n this.context.setDimensions([dimensionSetOrSets], useDefault);\n }\n return this;\n }\n /**\n * Clear all custom dimensions on this MetricsLogger instance\n *\n * @param useDefault indicates whether default dimensions should be used\n */\n resetDimensions(useDefault) {\n this.context.resetDimensions(useDefault);\n return this;\n }\n /**\n * Put a metric value.\n * This value will be emitted to CloudWatch Metrics asyncronously and does not contribute to your\n * account TPS limits. The value will also be available in your CloudWatch Logs\n * @param key\n * @param value\n * @param unit\n * @param storageResolution\n */\n putMetric(key, value, unit, storageResolution) {\n this.context.putMetric(key, value, unit, storageResolution);\n return this;\n }\n /**\n * Set the CloudWatch namespace that metrics should be published to.\n * @param value\n */\n setNamespace(value) {\n this.context.setNamespace(value);\n return this;\n }\n /**\n * Set the timestamp of metrics emitted in this context.\n *\n * If not set, the timestamp will default to new Date() at the point\n * the context is constructed.\n *\n * If set, timestamp will preserved across calls to flush().\n *\n * @param timestamp\n */\n setTimestamp(timestamp) {\n this.context.setTimestamp(timestamp);\n return this;\n }\n /**\n * Creates a new logger using the same contextual data as\n * the previous logger. This allows you to flush the instances\n * independently.\n */\n new() {\n return new MetricsLogger(this.resolveEnvironment, this.context.createCopyWithContext());\n }\n}\nexports.MetricsLogger = MetricsLogger;\n", "/**\n * @license MIT\n * @copyright 2020 Eyas Ranjous <eyas.ranjous@gmail.com>\n *\n * @class\n */\nclass Heap {\n /**\n * @param {function} compare\n * @param {array} [_values]\n * @param {number|string|object} [_leaf]\n */\n constructor(compare, _values, _leaf) {\n if (typeof compare !== 'function') {\n throw new Error('Heap constructor expects a compare function');\n }\n this._compare = compare;\n this._nodes = Array.isArray(_values) ? _values : [];\n this._leaf = _leaf || null;\n }\n\n /**\n * Converts the heap to a cloned array without sorting.\n * @public\n * @returns {Array}\n */\n toArray() {\n return Array.from(this._nodes);\n }\n\n /**\n * Checks if a parent has a left child\n * @private\n */\n _hasLeftChild(parentIndex) {\n const leftChildIndex = (parentIndex * 2) + 1;\n return leftChildIndex < this.size();\n }\n\n /**\n * Checks if a parent has a right child\n * @private\n */\n _hasRightChild(parentIndex) {\n const rightChildIndex = (parentIndex * 2) + 2;\n return rightChildIndex < this.size();\n }\n\n /**\n * Compares two nodes\n * @private\n */\n _compareAt(i, j) {\n return this._compare(this._nodes[i], this._nodes[j]);\n }\n\n /**\n * Swaps two nodes in the heap\n * @private\n */\n _swap(i, j) {\n const temp = this._nodes[i];\n this._nodes[i] = this._nodes[j];\n this._nodes[j] = temp;\n }\n\n /**\n * Checks if parent and child should be swapped\n * @private\n */\n _shouldSwap(parentIndex, childIndex) {\n if (parentIndex < 0 || parentIndex >= this.size()) {\n return false;\n }\n\n if (childIndex < 0 || childIndex >= this.size()) {\n return false;\n }\n\n return this._compareAt(parentIndex, childIndex) > 0;\n }\n\n /**\n * Compares children of a parent\n * @private\n */\n _compareChildrenOf(parentIndex) {\n if (!this._hasLeftChild(parentIndex) && !this._hasRightChild(parentIndex)) {\n return -1;\n }\n\n const leftChildIndex = (parentIndex * 2) + 1;\n const rightChildIndex = (parentIndex * 2) + 2;\n\n if (!this._hasLeftChild(parentIndex)) {\n return rightChildIndex;\n }\n\n if (!this._hasRightChild(parentIndex)) {\n return leftChildIndex;\n }\n\n const compare = this._compareAt(leftChildIndex, rightChildIndex);\n return compare > 0 ? rightChildIndex : leftChildIndex;\n }\n\n /**\n * Compares two children before a position\n * @private\n */\n _compareChildrenBefore(index, leftChildIndex, rightChildIndex) {\n const compare = this._compareAt(rightChildIndex, leftChildIndex);\n\n if (compare <= 0 && rightChildIndex < index) {\n return rightChildIndex;\n }\n\n return leftChildIndex;\n }\n\n /**\n * Recursively bubbles up a node if it's in a wrong position\n * @private\n */\n _heapifyUp(startIndex) {\n let childIndex = startIndex;\n let parentIndex = Math.floor((childIndex - 1) / 2);\n\n while (this._shouldSwap(parentIndex, childIndex)) {\n this._swap(parentIndex, childIndex);\n childIndex = parentIndex;\n parentIndex = Math.floor((childIndex - 1) / 2);\n }\n }\n\n /**\n * Recursively bubbles down a node if it's in a wrong position\n * @private\n */\n _heapifyDown(startIndex) {\n let parentIndex = startIndex;\n let childIndex = this._compareChildrenOf(parentIndex);\n\n while (this._shouldSwap(parentIndex, childIndex)) {\n this._swap(parentIndex, childIndex);\n parentIndex = childIndex;\n childIndex = this._compareChildrenOf(parentIndex);\n }\n }\n\n /**\n * Recursively bubbles down a node before a given index\n * @private\n */\n _heapifyDownUntil(index) {\n let parentIndex = 0;\n let leftChildIndex = 1;\n let rightChildIndex = 2;\n let childIndex;\n\n while (leftChildIndex < index) {\n childIndex = this._compareChildrenBefore(\n index,\n leftChildIndex,\n rightChildIndex\n );\n\n if (this._shouldSwap(parentIndex, childIndex)) {\n this._swap(parentIndex, childIndex);\n }\n\n parentIndex = childIndex;\n leftChildIndex = (parentIndex * 2) + 1;\n rightChildIndex = (parentIndex * 2) + 2;\n }\n }\n\n /**\n * Inserts a new value into the heap\n * @public\n * @param {number|string|object} value\n * @returns {Heap}\n */\n insert(value) {\n this._nodes.push(value);\n this._heapifyUp(this.size() - 1);\n if (this._leaf === null || this._compare(value, this._leaf) > 0) {\n this._leaf = value;\n }\n return this;\n }\n\n /**\n * Inserts a new value into the heap\n * @public\n * @param {number|string|object} value\n * @returns {Heap}\n */\n push(value) {\n return this.insert(value);\n }\n\n /**\n * Removes and returns the root node in the heap\n * @public\n * @returns {number|string|object}\n */\n extractRoot() {\n if (this.isEmpty()) {\n return null;\n }\n\n const root = this.root();\n this._nodes[0] = this._nodes[this.size() - 1];\n this._nodes.pop();\n this._heapifyDown(0);\n\n if (root === this._leaf) {\n this._leaf = this.root();\n }\n\n return root;\n }\n\n /**\n * Removes and returns the root node in the heap\n * @public\n * @returns {number|string|object}\n */\n pop() {\n return this.extractRoot();\n }\n\n /**\n * Applies heap sort and return the values sorted by priority\n * @public\n * @returns {array}\n */\n sort() {\n for (let i = this.size() - 1; i > 0; i -= 1) {\n this._swap(0, i);\n this._heapifyDownUntil(i);\n }\n return this._nodes;\n }\n\n /**\n * Fixes node positions in the heap\n * @public\n * @returns {Heap}\n */\n fix() {\n // fix node positions\n for (let i = Math.floor(this.size() / 2) - 1; i >= 0; i -= 1) {\n this._heapifyDown(i);\n }\n\n // fix leaf value\n for (let i = Math.floor(this.size() / 2); i < this.size(); i += 1) {\n const value = this._nodes[i];\n if (this._leaf === null || this._compare(value, this._leaf) > 0) {\n this._leaf = value;\n }\n }\n\n return this;\n }\n\n /**\n * Verifies that all heap nodes are in the right position\n * @public\n * @returns {boolean}\n */\n isValid() {\n const isValidRecursive = (parentIndex) => {\n let isValidLeft = true;\n let isValidRight = true;\n\n if (this._hasLeftChild(parentIndex)) {\n const leftChildIndex = (parentIndex * 2) + 1;\n if (this._compareAt(parentIndex, leftChildIndex) > 0) {\n return false;\n }\n isValidLeft = isValidRecursive(leftChildIndex);\n }\n\n if (this._hasRightChild(parentIndex)) {\n const rightChildIndex = (parentIndex * 2) + 2;\n if (this._compareAt(parentIndex, rightChildIndex) > 0) {\n return false;\n }\n isValidRight = isValidRecursive(rightChildIndex);\n }\n\n return isValidLeft && isValidRight;\n };\n\n return isValidRecursive(0);\n }\n\n /**\n * Returns a shallow copy of the heap\n * @public\n * @returns {Heap}\n */\n clone() {\n return new Heap(this._compare, this._nodes.slice(), this._leaf);\n }\n\n /**\n * Returns the root node in the heap\n * @public\n * @returns {number|string|object}\n */\n root() {\n if (this.isEmpty()) {\n return null;\n }\n\n return this._nodes[0];\n }\n\n /**\n * Returns the root node in the heap\n * @public\n * @returns {number|string|object}\n */\n top() {\n return this.root();\n }\n\n /**\n * Returns a leaf node in the heap\n * @public\n * @returns {number|string|object}\n */\n leaf() {\n return this._leaf;\n }\n\n /**\n * Returns the number of nodes in the heap\n * @public\n * @returns {number}\n */\n size() {\n return this._nodes.length;\n }\n\n /**\n * Checks if the heap is empty\n * @public\n * @returns {boolean}\n */\n isEmpty() {\n return this.size() === 0;\n }\n\n /**\n * Clears the heap\n * @public\n */\n clear() {\n this._nodes = [];\n this._leaf = null;\n }\n\n /**\n * Implements an iterable on the heap\n * @public\n */\n [Symbol.iterator]() {\n let size = this.size();\n return {\n next: () => {\n size -= 1;\n return {\n value: this.pop(),\n done: size === -1\n };\n }\n };\n }\n\n /**\n * Builds a heap from a array of values\n * @public\n * @static\n * @param {array} values\n * @param {function} compare\n * @returns {Heap}\n */\n static heapify(values, compare) {\n if (!Array.isArray(values)) {\n throw new Error('Heap.heapify expects an array of values');\n }\n\n if (typeof compare !== 'function') {\n throw new Error('Heap.heapify expects a compare function');\n }\n\n return new Heap(compare, values).fix();\n }\n\n /**\n * Checks if a list of values is a valid heap\n * @public\n * @static\n * @param {array} values\n * @param {function} compare\n * @returns {boolean}\n */\n static isHeapified(values, compare) {\n return new Heap(compare, values).isValid();\n }\n}\n\nexports.Heap = Heap;\n", "/**\n * @license MIT\n * @copyright 2020 Eyas Ranjous <eyas.ranjous@gmail.com>\n */\n\nconst { Heap } = require('./heap');\n\nconst getMinCompare = (getCompareValue) => (a, b) => {\n const aVal = typeof getCompareValue === 'function' ? getCompareValue(a) : a;\n const bVal = typeof getCompareValue === 'function' ? getCompareValue(b) : b;\n return aVal < bVal ? -1 : 1;\n};\n\n/**\n * @class MinHeap\n * @extends Heap\n */\nclass MinHeap {\n /**\n * @param {function} [getCompareValue]\n * @param {Heap} [_heap]\n */\n constructor(getCompareValue, _heap) {\n this._getCompareValue = getCompareValue;\n this._heap = _heap || new Heap(getMinCompare(getCompareValue));\n }\n\n /**\n * Converts the heap to a cloned array without sorting.\n * @public\n * @returns {Array}\n */\n toArray() {\n return Array.from(this._heap._nodes);\n }\n\n /**\n * Inserts a new value into the heap\n * @public\n * @param {number|string|object} value\n * @returns {MinHeap}\n */\n insert(value) {\n return this._heap.insert(value);\n }\n\n /**\n * Inserts a new value into the heap\n * @public\n * @param {number|string|object} value\n * @returns {Heap}\n */\n push(value) {\n return this.insert(value);\n }\n\n /**\n * Removes and returns the root node in the heap\n * @public\n * @returns {number|string|object}\n */\n extractRoot() {\n return this._heap.extractRoot();\n }\n\n /**\n * Removes and returns the root node in the heap\n * @public\n * @returns {number|string|object}\n */\n pop() {\n return this.extractRoot();\n }\n\n /**\n * Applies heap sort and return the values sorted by priority\n * @public\n * @returns {array}\n */\n sort() {\n return this._heap.sort();\n }\n\n /**\n * Fixes node positions in the heap\n * @public\n * @returns {MinHeap}\n */\n fix() {\n return this._heap.fix();\n }\n\n /**\n * Verifies that all heap nodes are in the right position\n * @public\n * @returns {boolean}\n */\n isValid() {\n return this._heap.isValid();\n }\n\n /**\n * Returns the root node in the heap\n * @public\n * @returns {number|string|object}\n */\n root() {\n return this._heap.root();\n }\n\n /**\n * Returns the root node in the heap\n * @public\n * @returns {number|string|object}\n */\n top() {\n return this.root();\n }\n\n /**\n * Returns a leaf node in the heap\n * @public\n * @returns {number|string|object}\n */\n leaf() {\n return this._heap.leaf();\n }\n\n /**\n * Returns the number of nodes in the heap\n * @public\n * @returns {number}\n */\n size() {\n return this._heap.size();\n }\n\n /**\n * Checks if the heap is empty\n * @public\n * @returns {boolean}\n */\n isEmpty() {\n return this._heap.isEmpty();\n }\n\n /**\n * Clears the heap\n * @public\n */\n clear() {\n this._heap.clear();\n }\n\n /**\n * Returns a shallow copy of the MinHeap\n * @public\n * @returns {MinHeap}\n */\n clone() {\n return new MinHeap(this._getCompareValue, this._heap.clone());\n }\n\n /**\n * Implements an iterable on the heap\n * @public\n */\n [Symbol.iterator]() {\n let size = this.size();\n return {\n next: () => {\n size -= 1;\n return {\n value: this.pop(),\n done: size === -1\n };\n }\n };\n }\n\n /**\n * Builds a MinHeap from an array\n * @public\n * @static\n * @param {array} values\n * @param {function} [getCompareValue]\n * @returns {MinHeap}\n */\n static heapify(values, getCompareValue) {\n if (!Array.isArray(values)) {\n throw new Error('MinHeap.heapify expects an array');\n }\n const heap = new Heap(getMinCompare(getCompareValue), values);\n return new MinHeap(getCompareValue, heap).fix();\n }\n\n /**\n * Checks if a list of values is a valid min heap\n * @public\n * @static\n * @param {array} values\n * @param {function} [getCompareValue]\n * @returns {boolean}\n */\n static isHeapified(values, getCompareValue) {\n const heap = new Heap(getMinCompare(getCompareValue), values);\n return new MinHeap(getCompareValue, heap).isValid();\n }\n}\n\nexports.MinHeap = MinHeap;\n", "/**\n * @license MIT\n * @copyright 2020 Eyas Ranjous <eyas.ranjous@gmail.com>\n */\n\nconst { Heap } = require('./heap');\n\nconst getMaxCompare = (getCompareValue) => (a, b) => {\n const aVal = typeof getCompareValue === 'function' ? getCompareValue(a) : a;\n const bVal = typeof getCompareValue === 'function' ? getCompareValue(b) : b;\n return aVal < bVal ? 1 : -1;\n};\n\n/**\n * @class MaxHeap\n * @extends Heap\n */\nclass MaxHeap {\n /**\n * @param {function} [getCompareValue]\n * @param {Heap} [_heap]\n */\n constructor(getCompareValue, _heap) {\n this._getCompareValue = getCompareValue;\n this._heap = _heap || new Heap(getMaxCompare(getCompareValue));\n }\n\n /**\n * Inserts a new value into the heap\n * @public\n * @param {number|string|object} value\n * @returns {MaxHeap}\n */\n insert(value) {\n return this._heap.insert(value);\n }\n\n /**\n * Inserts a new value into the heap\n * @public\n * @param {number|string|object} value\n * @returns {Heap}\n */\n push(value) {\n return this.insert(value);\n }\n\n /**\n * Removes and returns the root node in the heap\n * @public\n * @returns {number|string|object}\n */\n extractRoot() {\n return this._heap.extractRoot();\n }\n\n /**\n * Removes and returns the root node in the heap\n * @public\n * @returns {number|string|object}\n */\n pop() {\n return this.extractRoot();\n }\n\n /**\n * Applies heap sort and return the values sorted by priority\n * @public\n * @returns {array}\n */\n sort() {\n return this._heap.sort();\n }\n\n /**\n * Converts the heap to a cloned array without sorting.\n * @public\n * @returns {Array}\n */\n toArray() {\n return Array.from(this._heap._nodes);\n }\n\n /**\n * Fixes node positions in the heap\n * @public\n * @returns {MaxHeap}\n */\n fix() {\n return this._heap.fix();\n }\n\n /**\n * Verifies that all heap nodes are in the right position\n * @public\n * @returns {boolean}\n */\n isValid() {\n return this._heap.isValid();\n }\n\n /**\n * Returns the root node in the heap\n * @public\n * @returns {number|string|object}\n */\n root() {\n return this._heap.root();\n }\n\n /**\n * Returns the root node in the heap\n * @public\n * @returns {number|string|object}\n */\n top() {\n return this.root();\n }\n\n /**\n * Returns a leaf node in the heap\n * @public\n * @returns {number|string|object}\n */\n leaf() {\n return this._heap.leaf();\n }\n\n /**\n * Returns the number of nodes in the heap\n * @public\n * @returns {number}\n */\n size() {\n return this._heap.size();\n }\n\n /**\n * Checks if the heap is empty\n * @public\n * @returns {boolean}\n */\n isEmpty() {\n return this._heap.isEmpty();\n }\n\n /**\n * Clears the heap\n * @public\n */\n clear() {\n this._heap.clear();\n }\n\n /**\n * Returns a shallow copy of the MaxHeap\n * @public\n * @returns {MaxHeap}\n */\n clone() {\n return new MaxHeap(this._getCompareValue, this._heap.clone());\n }\n\n /**\n * Implements an iterable on the heap\n * @public\n */\n [Symbol.iterator]() {\n let size = this.size();\n return {\n next: () => {\n size -= 1;\n return {\n value: this.pop(),\n done: size === -1\n };\n }\n };\n }\n\n /**\n * Builds a MaxHeap from an array\n * @public\n * @static\n * @param {array} values\n * @param {function} [getCompareValue]\n * @returns {MaxHeap}\n */\n static heapify(values, getCompareValue) {\n if (!Array.isArray(values)) {\n throw new Error('MaxHeap.heapify expects an array');\n }\n const heap = new Heap(getMaxCompare(getCompareValue), values);\n return new MaxHeap(getCompareValue, heap).fix();\n }\n\n /**\n * Checks if a list of values is a valid max heap\n * @public\n * @static\n * @param {array} values\n * @param {function} [getCompareValue]\n * @returns {boolean}\n */\n static isHeapified(values, getCompareValue) {\n const heap = new Heap(getMaxCompare(getCompareValue), values);\n return new MaxHeap(getCompareValue, heap).isValid();\n }\n}\n\nexports.MaxHeap = MaxHeap;\n", "const { Heap } = require('./src/heap');\nconst { MinHeap } = require('./src/minHeap');\nconst { MaxHeap } = require('./src/maxHeap');\n\nexports.Heap = Heap;\nexports.MinHeap = MinHeap;\nexports.MaxHeap = MaxHeap;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LogSerializer = void 0;\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst heap_1 = require(\"@datastructures-js/heap\");\nconst Constants_1 = require(\"../Constants\");\nconst DimensionSetExceededError_1 = require(\"../exceptions/DimensionSetExceededError\");\nconst StorageResolution_1 = require(\"../logger/StorageResolution\");\n/**\n * Serializes the provided context to the CWL Structured\n * Logs format with Embedded Metric Filters.\n */\nclass LogSerializer {\n /**\n * Retrieve the current context as a JSON string\n */\n serialize(context) {\n const dimensionKeys = [];\n let dimensionProperties = {};\n context.getDimensions().forEach((dimensionSet) => {\n const keys = Object.keys(dimensionSet);\n if (keys.length > Constants_1.Constants.MAX_DIMENSION_SET_SIZE) {\n const errMsg = `Maximum number of dimensions allowed are ${Constants_1.Constants.MAX_DIMENSION_SET_SIZE}.` +\n `Account for default dimensions if not using set_dimensions.`;\n throw new DimensionSetExceededError_1.DimensionSetExceededError(errMsg);\n }\n dimensionKeys.push(keys);\n dimensionProperties = Object.assign(Object.assign({}, dimensionProperties), dimensionSet);\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const createBody = () => {\n return Object.assign(Object.assign(Object.assign({}, dimensionProperties), context.properties), { _aws: Object.assign(Object.assign({}, context.meta), { CloudWatchMetrics: [\n {\n Dimensions: dimensionKeys,\n Metrics: [],\n Namespace: context.namespace,\n },\n ] }) });\n };\n const eventBatches = [];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n let currentBody = createBody();\n // eslint-disable-next-line\n const currentMetricsInBody = () => currentBody._aws.CloudWatchMetrics[0].Metrics.length;\n const hasMaxMetrics = () => currentMetricsInBody() === Constants_1.Constants.MAX_METRICS_PER_EVENT;\n // converts the body to JSON and pushes it into the batches\n const serializeCurrentBody = () => {\n eventBatches.push(JSON.stringify(currentBody));\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n currentBody = createBody();\n };\n const remainingMetrics = heap_1.MaxHeap.heapify(Array.from(context.metrics, ([key, value]) => {\n return { name: key, numLeft: value.values.length };\n }), (metric) => metric.numLeft);\n let processedMetrics = [];\n // Batches the metrics with the most number of values first, such that each metric has no more\n // than 100 values, and each batch has no more than 100 metric definitions.\n while (!remainingMetrics.isEmpty()) {\n const metricProgress = remainingMetrics.extractRoot();\n const metric = context.metrics.get(metricProgress.name);\n if (metric) {\n const startIndex = metric.values.length - metricProgress.numLeft;\n // if there is only one metric value, unwrap it to make querying easier\n const metricValue = metricProgress.numLeft === 1\n ? metric.values[startIndex]\n : // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n metric.values.slice(startIndex, startIndex + Constants_1.Constants.MAX_VALUES_PER_METRIC);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n currentBody[metricProgress.name] = metricValue;\n const metricBody = Object.assign({ Name: metricProgress.name, Unit: metric.unit }, (metric.storageResolution == StorageResolution_1.StorageResolution.High ? { StorageResolution: StorageResolution_1.StorageResolution.High } : {}));\n // eslint-disable-next-line\n currentBody._aws.CloudWatchMetrics[0].Metrics.push(metricBody);\n metricProgress.numLeft -= Constants_1.Constants.MAX_VALUES_PER_METRIC;\n if (metricProgress.numLeft > 0) {\n processedMetrics.push(metricProgress);\n }\n if (hasMaxMetrics() || remainingMetrics.isEmpty()) {\n serializeCurrentBody();\n // inserts these metrics back in the heap to be processed in the next iteration.\n processedMetrics.forEach((processingMetric) => remainingMetrics.insert(processingMetric));\n processedMetrics = [];\n }\n }\n }\n if (eventBatches.length === 0 || currentMetricsInBody() > 0) {\n serializeCurrentBody();\n }\n return eventBatches;\n }\n}\nexports.LogSerializer = LogSerializer;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsoleSink = void 0;\nconst LogSerializer_1 = require(\"../serializers/LogSerializer\");\n/**\n * A sink that flushes log data to stdout.\n * This is the preferred sink for Lambda functions.\n */\nclass ConsoleSink {\n constructor(serializer) {\n this.name = 'ConsoleSink';\n this.serializer = serializer || new LogSerializer_1.LogSerializer();\n }\n accept(context) {\n // tslint:disable-next-line\n const events = this.serializer.serialize(context);\n events.forEach(event => console.log(event));\n return Promise.resolve();\n }\n}\nexports.ConsoleSink = ConsoleSink;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TcpClient = void 0;\nconst net = require(\"net\");\nconst Logger_1 = require(\"../../utils/Logger\");\nclass TcpClient {\n constructor(endpoint) {\n this.endpoint = endpoint;\n this.socket = new net.Socket({ allowHalfOpen: true })\n .setEncoding('utf8')\n .setKeepAlive(true)\n .setTimeout(5000) // idle timeout\n .on('timeout', () => this.disconnect('idle timeout'))\n .on('end', () => this.disconnect('end'))\n .on('data', data => (0, Logger_1.LOG)('TcpClient received data.', data));\n // Used to create an initial connection on the socket right after creation to avoid socket failures.\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.initialConnect.apply(this);\n }\n initialConnect() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => {\n this.socket.connect(this.endpoint.port, this.endpoint.host, (err) => {\n if (err)\n reject(err);\n else\n resolve();\n });\n });\n });\n }\n warmup() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n yield this.establishConnection();\n }\n catch (err) {\n (0, Logger_1.LOG)('Failed to connect', err);\n }\n });\n }\n sendMessage(message) {\n return __awaiter(this, void 0, void 0, function* () {\n // ensure the socket is open and writable\n yield this.waitForOpenConnection();\n yield new Promise((resolve, reject) => {\n const onSendError = (err) => {\n (0, Logger_1.LOG)('Failed to write', err);\n reject(err);\n };\n const wasFlushedToKernel = this.socket.write(message, (err) => {\n if (!err) {\n (0, Logger_1.LOG)('Write succeeded');\n resolve();\n }\n else {\n onSendError(err);\n }\n });\n if (!wasFlushedToKernel) {\n (0, Logger_1.LOG)('TcpClient data was not flushed to kernel buffer and was queued in memory.');\n }\n });\n });\n }\n disconnect(eventName) {\n (0, Logger_1.LOG)('TcpClient disconnected due to:', eventName);\n this.socket.removeAllListeners();\n this.socket.destroy();\n this.socket.unref();\n }\n waitForOpenConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.socket.writable || this.socket.readyState !== 'open') {\n yield this.establishConnection();\n }\n });\n }\n establishConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n yield new Promise((resolve, reject) => {\n const onError = (e) => {\n // socket is already open, no need to connect\n if (e.message.includes('EISCONN')) {\n resolve();\n return;\n }\n (0, Logger_1.LOG)('TCP Client received error', e);\n this.disconnect(e.message);\n reject(e);\n };\n const onConnect = () => {\n this.socket.removeListener('error', onError);\n (0, Logger_1.LOG)('TcpClient connected.', this.endpoint);\n resolve();\n };\n // TODO: convert this to a proper state machine\n switch (this.socket.readyState) {\n case 'open':\n resolve();\n break;\n case 'opening':\n // the socket is currently opening, we will resolve\n // or fail the current promise on the connect or\n // error events\n this.socket.once('connect', onConnect);\n this.socket.once('error', onError);\n break;\n default:\n (0, Logger_1.LOG)('opening connection with socket in state: ', this.socket.readyState);\n this.socket.connect(this.endpoint.port, this.endpoint.host, onConnect).once('error', onError);\n break;\n }\n });\n });\n }\n}\nexports.TcpClient = TcpClient;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UdpClient = void 0;\nconst dgram = require(\"dgram\");\nconst Logger_1 = require(\"../../utils/Logger\");\nclass UdpClient {\n constructor(endpoint) {\n this.endpoint = endpoint;\n }\n // No warm up for UDP\n warmup() {\n return Promise.resolve();\n }\n sendMessage(message) {\n return __awaiter(this, void 0, void 0, function* () {\n const client = dgram.createSocket('udp4');\n client.send(message, this.endpoint.port, this.endpoint.host, (error) => {\n if (error) {\n (0, Logger_1.LOG)(error);\n }\n client.close();\n });\n return Promise.resolve();\n });\n }\n}\nexports.UdpClient = UdpClient;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AgentSink = void 0;\nconst url = require(\"url\");\nconst Configuration_1 = __importDefault(require(\"../config/Configuration\"));\nconst LogSerializer_1 = require(\"../serializers/LogSerializer\");\nconst Logger_1 = require(\"../utils/Logger\");\nconst TcpClient_1 = require(\"./connections/TcpClient\");\nconst UdpClient_1 = require(\"./connections/UdpClient\");\nconst TCP = 'tcp:';\nconst UDP = 'udp:';\nconst defaultTcpEndpoint = {\n host: '0.0.0.0',\n port: 25888,\n protocol: TCP,\n};\nconst parseEndpoint = (endpoint) => {\n try {\n if (!endpoint) {\n return defaultTcpEndpoint;\n }\n const parsedUrl = url.parse(endpoint);\n if (!parsedUrl.hostname || !parsedUrl.port || !parsedUrl.protocol) {\n (0, Logger_1.LOG)(`Failed to parse the provided agent endpoint. Falling back to the default TCP endpoint.`, parsedUrl);\n return defaultTcpEndpoint;\n }\n if (parsedUrl.protocol !== TCP && parsedUrl.protocol !== UDP) {\n (0, Logger_1.LOG)(`The provided agent endpoint protocol '${parsedUrl.protocol}' is not supported. Please use TCP or UDP. Falling back to the default TCP endpoint.`, parsedUrl);\n return defaultTcpEndpoint;\n }\n return {\n host: parsedUrl.hostname,\n port: Number(parsedUrl.port),\n protocol: parsedUrl.protocol,\n };\n }\n catch (e) {\n (0, Logger_1.LOG)('Failed to parse the provided agent endpoint', e);\n return defaultTcpEndpoint;\n }\n};\n/**\n * A sink that flushes to the CW Agent.\n * This sink instance should be re-used to avoid\n * leaking connections.\n */\nclass AgentSink {\n constructor(logGroupName, logStreamName, serializer) {\n this.name = 'AgentSink';\n this.logGroupName = logGroupName;\n this.logStreamName = logStreamName;\n this.serializer = serializer || new LogSerializer_1.LogSerializer();\n this.endpoint = parseEndpoint(Configuration_1.default.agentEndpoint);\n this.socketClient = this.getSocketClient(this.endpoint);\n (0, Logger_1.LOG)('Using socket client', this.socketClient.constructor.name);\n }\n accept(context) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.logGroupName) {\n context.meta.LogGroupName = this.logGroupName;\n }\n if (this.logStreamName) {\n context.meta.LogStreamName = this.logStreamName;\n }\n const events = this.serializer.serialize(context);\n (0, Logger_1.LOG)(`Sending {} events to socket.`, events.length);\n for (let index = 0; index < events.length; index++) {\n const event = events[index];\n const message = event + '\\n';\n const bytes = Buffer.from(message);\n yield this.socketClient.sendMessage(bytes);\n }\n });\n }\n getSocketClient(endpoint) {\n (0, Logger_1.LOG)('Getting socket client for connection.', endpoint);\n const client = endpoint.protocol === TCP ? new TcpClient_1.TcpClient(endpoint) : new UdpClient_1.UdpClient(endpoint);\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n client.warmup();\n return client;\n }\n}\nexports.AgentSink = AgentSink;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefaultEnvironment = void 0;\nconst Configuration_1 = __importDefault(require(\"../config/Configuration\"));\nconst AgentSink_1 = require(\"../sinks/AgentSink\");\nconst Logger_1 = require(\"../utils/Logger\");\nclass DefaultEnvironment {\n probe() {\n return Promise.resolve(true);\n }\n getName() {\n if (!Configuration_1.default.serviceName) {\n (0, Logger_1.LOG)('Unknown ServiceName.');\n return 'Unknown';\n }\n return Configuration_1.default.serviceName;\n }\n getType() {\n if (!Configuration_1.default.serviceType) {\n (0, Logger_1.LOG)('Unknown ServiceType.');\n return 'Unknown';\n }\n return Configuration_1.default.serviceType;\n }\n getLogGroupName() {\n // if the caller explicitly overrides logGroupName to\n // be empty, we should honor that rather than providing\n // the default behavior.\n if (Configuration_1.default.logGroupName === '') {\n return '';\n }\n return Configuration_1.default.logGroupName ? Configuration_1.default.logGroupName : `${this.getName()}-metrics`;\n }\n configureContext() {\n // no-op\n }\n getSink() {\n if (!this.sink) {\n this.sink = new AgentSink_1.AgentSink(this.getLogGroupName(), Configuration_1.default.logStreamName);\n }\n return this.sink;\n }\n}\nexports.DefaultEnvironment = DefaultEnvironment;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fetchString = exports.fetchJSON = exports.fetch = void 0;\nconst http_1 = require(\"http\");\nconst SOCKET_TIMEOUT = 1000;\n/**\n * Fetch data from a remote HTTP endpoint with the provided headers.\n *\n * @param options - HTTP request options\n */\nconst fetch = (options) => {\n return new Promise((resolve, reject) => {\n const request = (0, http_1.request)(options, (response) => {\n if (!response.statusCode) {\n reject(`Received undefined response status code from '${options.host || 'unknown'}/${options.path || 'unknown'}'`);\n return;\n }\n if (response.statusCode < 200 || response.statusCode > 299) {\n reject(new Error(`Failed to load page, status code: ${response.statusCode}`));\n return;\n }\n // using similar approach to node-fetch\n // https://github.com/bitinn/node-fetch/blob/6a5d192034a0f438551dffb6d2d8df2c00921d16/src/body.js#L217\n const body = [];\n let bodyBytes = 0;\n response.on('data', (chunk) => {\n bodyBytes += chunk.length;\n body.push(chunk);\n });\n response.on('end', () => {\n const buffer = Buffer.concat(body, bodyBytes);\n resolve(buffer);\n });\n }).on('error', (err) => {\n reject(err);\n });\n request.on('socket', socket => {\n socket.on('timeout', () => {\n request.abort();\n reject(`Socket timeout while connecting to '${options.host || 'unknown'}/${options.path || 'unknown'}'`);\n });\n socket.setTimeout(SOCKET_TIMEOUT);\n });\n request.end();\n });\n};\nexports.fetch = fetch;\n/**\n * Fetch a string from a remote HTTP endpoint with the provided headers.\n *\n * @param options - HTTP request options\n */\nconst fetchString = (options) => __awaiter(void 0, void 0, void 0, function* () {\n const buffer = yield fetch(options);\n return buffer.toString();\n});\nexports.fetchString = fetchString;\n/**\n * Fetch JSON data from a remote HTTP endpoint with the provided headers and de-serialize to the provided type.\n * There are no guarantees the response will conform to the contract defined by T.\n * It is up to the consumer to ensure the provided T captures all possible response types\n * from the provided endpoint.\n *\n * @param options - HTTP request options\n */\nconst fetchJSON = (options) => __awaiter(void 0, void 0, void 0, function* () {\n const responseString = yield fetchString(options);\n return JSON.parse(responseString);\n});\nexports.fetchJSON = fetchJSON;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ECSEnvironment = void 0;\nconst Configuration_1 = __importDefault(require(\"../config/Configuration\"));\nconst AgentSink_1 = require(\"../sinks/AgentSink\");\nconst Fetch_1 = require(\"../utils/Fetch\");\nconst Logger_1 = require(\"../utils/Logger\");\nconst os = __importStar(require(\"os\"));\nconst Constants_1 = require(\"../Constants\");\n// formats image names into something more readable for a metric name\n// e.g. <account-id>.dkr.ecr.<region>.amazonaws.com/<image-name>:latest -> <image-name>:latest\nconst formatImageName = (imageName) => {\n if (imageName) {\n const splitImageName = imageName.split('/');\n return splitImageName[splitImageName.length - 1];\n }\n return imageName;\n};\nclass ECSEnvironment {\n probe() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!process.env.ECS_CONTAINER_METADATA_URI) {\n return Promise.resolve(false);\n }\n if (process.env.FLUENT_HOST && !Configuration_1.default.agentEndpoint) {\n this.fluentBitEndpoint = `tcp://${process.env.FLUENT_HOST}:${Constants_1.Constants.DEFAULT_AGENT_PORT}`;\n Configuration_1.default.agentEndpoint = this.fluentBitEndpoint;\n (0, Logger_1.LOG)(`Using FluentBit configuration. Endpoint: ${this.fluentBitEndpoint}`);\n }\n try {\n const options = new URL(process.env.ECS_CONTAINER_METADATA_URI);\n this.metadata = yield (0, Fetch_1.fetchJSON)(options);\n if (this.metadata) {\n this.metadata.FormattedImageName = formatImageName(this.metadata.Image);\n (0, Logger_1.LOG)(`Successfully collected ECS Container metadata.`);\n }\n }\n catch (e) {\n (0, Logger_1.LOG)('Failed to collect ECS Container Metadata.');\n (0, Logger_1.LOG)(e);\n }\n // return true regardless of whether or not metadata collection\n // succeeded. we know that this is supposed to be an ECS environment\n // just from the environment variable\n return true;\n });\n }\n getName() {\n var _a;\n if (Configuration_1.default.serviceName) {\n return Configuration_1.default.serviceName;\n }\n return ((_a = this.metadata) === null || _a === void 0 ? void 0 : _a.FormattedImageName) ? this.metadata.FormattedImageName : 'Unknown';\n }\n getType() {\n return 'AWS::ECS::Container';\n }\n getLogGroupName() {\n // FireLens / fluent-bit does not need the log group to be included\n // since configuration of the LogGroup is handled by the\n // fluent bit config file\n if (this.fluentBitEndpoint) {\n return '';\n }\n return Configuration_1.default.logGroupName || this.getName();\n }\n configureContext(context) {\n var _a, _b, _c, _d, _e;\n this.addProperty(context, 'containerId', os.hostname());\n this.addProperty(context, 'createdAt', (_a = this.metadata) === null || _a === void 0 ? void 0 : _a.CreatedAt);\n this.addProperty(context, 'startedAt', (_b = this.metadata) === null || _b === void 0 ? void 0 : _b.StartedAt);\n this.addProperty(context, 'image', (_c = this.metadata) === null || _c === void 0 ? void 0 : _c.Image);\n this.addProperty(context, 'cluster', (_d = this.metadata) === null || _d === void 0 ? void 0 : _d.Labels['com.amazonaws.ecs.cluster']);\n this.addProperty(context, 'taskArn', (_e = this.metadata) === null || _e === void 0 ? void 0 : _e.Labels['com.amazonaws.ecs.task-arn']);\n // we override the standard default dimensions here because in the\n // FireLens / fluent-bit case, we don't need the LogGroup\n if (this.fluentBitEndpoint) {\n context.setDefaultDimensions({\n ServiceName: Configuration_1.default.serviceName || this.getName(),\n ServiceType: Configuration_1.default.serviceType || this.getType(),\n });\n }\n }\n getSink() {\n if (!this.sink) {\n const logGroupName = this.fluentBitEndpoint ? '' : this.getLogGroupName();\n this.sink = new AgentSink_1.AgentSink(logGroupName);\n }\n return this.sink;\n }\n addProperty(context, key, value) {\n if (value) {\n context.setProperty(key, value);\n }\n }\n}\nexports.ECSEnvironment = ECSEnvironment;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EC2Environment = void 0;\nconst Configuration_1 = __importDefault(require(\"../config/Configuration\"));\nconst AgentSink_1 = require(\"../sinks/AgentSink\");\nconst Fetch_1 = require(\"../utils/Fetch\");\nconst Logger_1 = require(\"../utils/Logger\");\n// Documentation for configuring instance metadata can be found here:\n// https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html\nconst host = '169.254.169.254';\nconst tokenPath = '/latest/api/token';\nconst tokenRequestHeaderKey = 'X-aws-ec2-metadata-token-ttl-seconds';\nconst tokenRequestHeaderValue = '21600';\nconst metadataPath = '/latest/dynamic/instance-identity/document';\nconst metadataRequestTokenHeaderKey = 'X-aws-ec2-metadata-token';\nclass EC2Environment {\n probe() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const options = {\n host,\n path: tokenPath,\n method: 'PUT',\n headers: { [tokenRequestHeaderKey]: tokenRequestHeaderValue },\n };\n this.token = yield (0, Fetch_1.fetchString)(options);\n }\n catch (e) {\n (0, Logger_1.LOG)(e);\n return false;\n }\n try {\n const metadataOptions = {\n host,\n path: metadataPath,\n method: 'GET',\n headers: { [metadataRequestTokenHeaderKey]: this.token },\n };\n this.metadata = yield (0, Fetch_1.fetchJSON)(metadataOptions);\n return !!this.metadata;\n }\n catch (e) {\n (0, Logger_1.LOG)(e);\n return false;\n }\n });\n }\n getName() {\n if (!Configuration_1.default.serviceName) {\n (0, Logger_1.LOG)('Unknown ServiceName.');\n return 'Unknown';\n }\n return Configuration_1.default.serviceName;\n }\n getType() {\n if (this.metadata) {\n return 'AWS::EC2::Instance';\n }\n // this will only happen if probe() is not called first\n return 'Unknown';\n }\n getLogGroupName() {\n return Configuration_1.default.logGroupName ? Configuration_1.default.logGroupName : `${this.getName()}-metrics`;\n }\n configureContext(context) {\n if (this.metadata) {\n context.setProperty('imageId', this.metadata.imageId);\n context.setProperty('instanceId', this.metadata.instanceId);\n context.setProperty('instanceType', this.metadata.instanceType);\n context.setProperty('privateIP', this.metadata.privateIp);\n context.setProperty('availabilityZone', this.metadata.availabilityZone);\n }\n }\n getSink() {\n if (!this.sink) {\n this.sink = new AgentSink_1.AgentSink(this.getLogGroupName(), Configuration_1.default.logStreamName);\n }\n return this.sink;\n }\n}\nexports.EC2Environment = EC2Environment;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LambdaEnvironment = void 0;\nconst ConsoleSink_1 = require(\"../sinks/ConsoleSink\");\nclass LambdaEnvironment {\n probe() {\n return Promise.resolve(process.env.AWS_LAMBDA_FUNCTION_NAME ? true : false);\n }\n getName() {\n return process.env.AWS_LAMBDA_FUNCTION_NAME || 'Unknown';\n }\n getType() {\n return 'AWS::Lambda::Function';\n }\n getLogGroupName() {\n return this.getName();\n }\n configureContext(context) {\n this.addProperty(context, 'executionEnvironment', process.env.AWS_EXECUTION_ENV);\n this.addProperty(context, 'memorySize', process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE);\n this.addProperty(context, 'functionVersion', process.env.AWS_LAMBDA_FUNCTION_VERSION);\n this.addProperty(context, 'logStreamId', process.env.AWS_LAMBDA_LOG_STREAM_NAME);\n const trace = this.getSampledTrace();\n if (trace) {\n this.addProperty(context, 'traceId', trace);\n }\n }\n getSink() {\n if (!this.sink) {\n this.sink = new ConsoleSink_1.ConsoleSink();\n }\n return this.sink;\n }\n addProperty(context, key, value) {\n if (value) {\n context.setProperty(key, value);\n }\n }\n getSampledTrace() {\n // only collect traces which have been sampled\n if (process.env._X_AMZN_TRACE_ID && process.env._X_AMZN_TRACE_ID.includes('Sampled=1')) {\n return process.env._X_AMZN_TRACE_ID;\n }\n }\n}\nexports.LambdaEnvironment = LambdaEnvironment;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LocalEnvironment = void 0;\nconst Configuration_1 = __importDefault(require(\"../config/Configuration\"));\nconst Logger_1 = require(\"../utils/Logger\");\nconst ConsoleSink_1 = require(\"../sinks/ConsoleSink\");\nclass LocalEnvironment {\n probe() {\n // probe is not intended to be used in the LocalEnvironment\n // To use the local environment you should set the environment\n // override\n return Promise.resolve(false);\n }\n getName() {\n if (!Configuration_1.default.serviceName) {\n (0, Logger_1.LOG)('Unknown ServiceName.');\n return 'Unknown';\n }\n return Configuration_1.default.serviceName;\n }\n getType() {\n if (!Configuration_1.default.serviceType) {\n (0, Logger_1.LOG)('Unknown ServiceType.');\n return 'Unknown';\n }\n return Configuration_1.default.serviceType;\n }\n getLogGroupName() {\n return Configuration_1.default.logGroupName ? Configuration_1.default.logGroupName : `${this.getName()}-metrics`;\n }\n configureContext() {\n // no-op\n }\n getSink() {\n if (!this.sink) {\n this.sink = new ConsoleSink_1.ConsoleSink();\n }\n return this.sink;\n }\n}\nexports.LocalEnvironment = LocalEnvironment;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cleanResolveEnvironment = exports.resolveEnvironment = void 0;\nconst Logger_1 = require(\"../utils/Logger\");\nconst DefaultEnvironment_1 = require(\"./DefaultEnvironment\");\nconst ECSEnvironment_1 = require(\"./ECSEnvironment\");\nconst EC2Environment_1 = require(\"./EC2Environment\");\nconst LambdaEnvironment_1 = require(\"./LambdaEnvironment\");\nconst Configuration_1 = __importDefault(require(\"../config/Configuration\"));\nconst Environments_1 = __importDefault(require(\"./Environments\"));\nconst LocalEnvironment_1 = require(\"./LocalEnvironment\");\nconst lambdaEnvironment = new LambdaEnvironment_1.LambdaEnvironment();\nconst ecsEnvironment = new ECSEnvironment_1.ECSEnvironment();\nconst ec2Environment = new EC2Environment_1.EC2Environment();\nconst defaultEnvironment = new DefaultEnvironment_1.DefaultEnvironment();\n// ordering of this array matters\n// both Lambda and ECS can be determined from environment variables\n// making the entire detection process fast an cheap\n// EC2 can only be determined by making a remote HTTP request\nconst environments = [lambdaEnvironment, ecsEnvironment, ec2Environment];\nlet environment = undefined;\nconst getEnvironmentFromOverride = () => {\n // short-circuit environment detection and use override\n switch (Configuration_1.default.environmentOverride) {\n case Environments_1.default.Agent:\n return defaultEnvironment;\n case Environments_1.default.EC2:\n return ec2Environment;\n case Environments_1.default.Lambda:\n return lambdaEnvironment;\n case Environments_1.default.ECS:\n return ecsEnvironment;\n case Environments_1.default.Local:\n return new LocalEnvironment_1.LocalEnvironment();\n case Environments_1.default.Unknown:\n default:\n return undefined;\n }\n};\nconst discoverEnvironment = () => __awaiter(void 0, void 0, void 0, function* () {\n (0, Logger_1.LOG)(`Discovering environment`);\n for (const envUnderTest of environments) {\n (0, Logger_1.LOG)(`Testing: ${envUnderTest.constructor.name}`);\n try {\n if (yield envUnderTest.probe()) {\n return envUnderTest;\n }\n }\n catch (e) {\n (0, Logger_1.LOG)(`Failed probe: ${envUnderTest.constructor.name}`);\n }\n }\n return defaultEnvironment;\n});\nconst _resolveEnvironment = () => __awaiter(void 0, void 0, void 0, function* () {\n (0, Logger_1.LOG)('Resolving environment');\n if (environment) {\n return environment;\n }\n if (Configuration_1.default.environmentOverride) {\n (0, Logger_1.LOG)('Environment override supplied', Configuration_1.default.environmentOverride);\n // this will be falsy if an invalid configuration value is provided\n environment = getEnvironmentFromOverride();\n if (environment) {\n return environment;\n }\n else {\n (0, Logger_1.LOG)('Invalid environment provided. Falling back to auto-discovery.', Configuration_1.default.environmentOverride);\n }\n }\n environment = yield discoverEnvironment(); // eslint-disable-line require-atomic-updates\n return environment;\n});\n// pro-actively begin resolving the environment\n// this will allow us to kick off any async tasks\n// at module load time to reduce any blocking that\n// may occur on the initial flush()\nconst environmentPromise = _resolveEnvironment();\nconst resolveEnvironment = () => __awaiter(void 0, void 0, void 0, function* () {\n return environmentPromise;\n});\nexports.resolveEnvironment = resolveEnvironment;\n// this method is used for testing to bypass the cached environmentPromise result\nconst cleanResolveEnvironment = () => __awaiter(void 0, void 0, void 0, function* () {\n yield environmentPromise;\n environment = undefined;\n return yield _resolveEnvironment();\n});\nexports.cleanResolveEnvironment = cleanResolveEnvironment;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createMetricsLogger = void 0;\nconst __1 = require(\"..\");\nconst EnvironmentDetector_1 = require(\"../environment/EnvironmentDetector\");\nconst MetricsContext_1 = require(\"./MetricsContext\");\nconst createMetricsLogger = () => {\n const context = MetricsContext_1.MetricsContext.empty();\n return new __1.MetricsLogger(EnvironmentDetector_1.resolveEnvironment, context);\n};\nexports.createMetricsLogger = createMetricsLogger;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.metricScope = void 0;\nconst Logger_1 = require(\"../utils/Logger\");\nconst MetricsLoggerFactory_1 = require(\"./MetricsLoggerFactory\");\n/**\n * An asynchronous wrapper that provides a metrics instance.\n */\nconst metricScope = (handler) => {\n const wrappedHandler = (...args) => __awaiter(void 0, void 0, void 0, function* () {\n const metrics = (0, MetricsLoggerFactory_1.createMetricsLogger)();\n try {\n return yield handler(metrics)(...args);\n }\n finally {\n try {\n yield metrics.flush();\n }\n catch (e) {\n (0, Logger_1.LOG)('Failed to flush metrics', e);\n }\n }\n });\n return wrappedHandler;\n};\nexports.metricScope = metricScope;\n", "\"use strict\";\n/*\n * Copyright 2019 Amazon.com, Inc. or its affiliates.\n * Licensed under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Configuration = exports.StorageResolution = exports.Unit = exports.createMetricsLogger = exports.metricScope = exports.AgentSink = exports.LocalSink = exports.MetricsLogger = void 0;\nvar MetricsLogger_1 = require(\"./logger/MetricsLogger\");\nObject.defineProperty(exports, \"MetricsLogger\", { enumerable: true, get: function () { return MetricsLogger_1.MetricsLogger; } });\nvar ConsoleSink_1 = require(\"./sinks/ConsoleSink\");\nObject.defineProperty(exports, \"LocalSink\", { enumerable: true, get: function () { return ConsoleSink_1.ConsoleSink; } });\nvar AgentSink_1 = require(\"./sinks/AgentSink\");\nObject.defineProperty(exports, \"AgentSink\", { enumerable: true, get: function () { return AgentSink_1.AgentSink; } });\nvar MetricScope_1 = require(\"./logger/MetricScope\");\nObject.defineProperty(exports, \"metricScope\", { enumerable: true, get: function () { return MetricScope_1.metricScope; } });\nvar MetricsLoggerFactory_1 = require(\"./logger/MetricsLoggerFactory\");\nObject.defineProperty(exports, \"createMetricsLogger\", { enumerable: true, get: function () { return MetricsLoggerFactory_1.createMetricsLogger; } });\nvar Unit_1 = require(\"./logger/Unit\");\nObject.defineProperty(exports, \"Unit\", { enumerable: true, get: function () { return Unit_1.Unit; } });\nvar StorageResolution_1 = require(\"./logger/StorageResolution\");\nObject.defineProperty(exports, \"StorageResolution\", { enumerable: true, get: function () { return StorageResolution_1.StorageResolution; } });\nconst Configuration_1 = __importDefault(require(\"./config/Configuration\"));\nexports.Configuration = Configuration_1.default;\n", "// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n", "const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n", "const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCE', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n", "// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n", "const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n", "const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n", "const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n", "const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n", "const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n", "const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n", "const parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // Otherwise it can be determined by checking the high version\n\n if (highVersion.patch) {\n // anything higher than a patch bump would result in the wrong version\n return 'patch'\n }\n\n if (highVersion.minor) {\n // anything higher than a minor bump would result in the wrong version\n return 'minor'\n }\n\n // bumping major/minor/patch all have same result\n return 'major'\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n", "const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n", "const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n", "const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n", "const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n", "const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n", "const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n", "const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n", "const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n", "const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n", "const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n", "const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", "const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n", "const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n", "const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n", "const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n", "const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n", "const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n", "const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n let next\n while ((next = re[t.COERCERTL].exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n re[t.COERCERTL].lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)\n}\nmodule.exports = coerce\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n", "// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.format()\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range\n .trim()\n .split(/\\s+/)\n .join(' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => comps.join(' ').trim())\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n", "const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n", "const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n", "const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n", "const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n", "const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n", "// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n", "const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n", "const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n", "// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n", "const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n", "// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n", "'use strict'\n\nfunction isFunction (funktion) {\n return typeof funktion === 'function'\n}\n\n// Default to complaining loudly when things don't go according to plan.\nvar logger = console.error.bind(console)\n\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty (obj, name, value) {\n var enumerable = !!obj[name] && obj.propertyIsEnumerable(name)\n Object.defineProperty(obj, name, {\n configurable: true,\n enumerable: enumerable,\n writable: true,\n value: value\n })\n}\n\n// Keep initialization idempotent.\nfunction shimmer (options) {\n if (options && options.logger) {\n if (!isFunction(options.logger)) logger(\"new logger isn't a function, not replacing\")\n else logger = options.logger\n }\n}\n\nfunction wrap (nodule, name, wrapper) {\n if (!nodule || !nodule[name]) {\n logger('no original function ' + name + ' to wrap')\n return\n }\n\n if (!wrapper) {\n logger('no wrapper function')\n logger((new Error()).stack)\n return\n }\n\n if (!isFunction(nodule[name]) || !isFunction(wrapper)) {\n logger('original object and wrapper must be functions')\n return\n }\n\n var original = nodule[name]\n var wrapped = wrapper(original, name)\n\n defineProperty(wrapped, '__original', original)\n defineProperty(wrapped, '__unwrap', function () {\n if (nodule[name] === wrapped) defineProperty(nodule, name, original)\n })\n defineProperty(wrapped, '__wrapped', true)\n\n defineProperty(nodule, name, wrapped)\n return wrapped\n}\n\nfunction massWrap (nodules, names, wrapper) {\n if (!nodules) {\n logger('must provide one or more modules to patch')\n logger((new Error()).stack)\n return\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules]\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to wrap on modules')\n return\n }\n\n nodules.forEach(function (nodule) {\n names.forEach(function (name) {\n wrap(nodule, name, wrapper)\n })\n })\n}\n\nfunction unwrap (nodule, name) {\n if (!nodule || !nodule[name]) {\n logger('no function to unwrap.')\n logger((new Error()).stack)\n return\n }\n\n if (!nodule[name].__unwrap) {\n logger('no original to unwrap to -- has ' + name + ' already been unwrapped?')\n } else {\n return nodule[name].__unwrap()\n }\n}\n\nfunction massUnwrap (nodules, names) {\n if (!nodules) {\n logger('must provide one or more modules to patch')\n logger((new Error()).stack)\n return\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules]\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to unwrap on modules')\n return\n }\n\n nodules.forEach(function (nodule) {\n names.forEach(function (name) {\n unwrap(nodule, name)\n })\n })\n}\n\nshimmer.wrap = wrap\nshimmer.massWrap = massWrap\nshimmer.unwrap = unwrap\nshimmer.massUnwrap = massUnwrap\n\nmodule.exports = shimmer\n", "'use strict';\n\nvar shimmer = require('shimmer');\nvar wrap = shimmer.wrap;\nvar unwrap = shimmer.unwrap;\n\n// Default to complaining loudly when things don't go according to plan.\n// dunderscores are boring\nvar SYMBOL = 'wrap@before';\n\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty(obj, name, value) {\n var enumerable = !!obj[name] && obj.propertyIsEnumerable(name);\n Object.defineProperty(obj, name, {\n configurable: true,\n enumerable: enumerable,\n writable: true,\n value: value\n });\n}\n\nfunction _process(self, listeners) {\n var l = listeners.length;\n for (var p = 0; p < l; p++) {\n var listener = listeners[p];\n // set up the listener so that onEmit can do whatever it needs\n var before = self[SYMBOL];\n if (typeof before === 'function') {\n before(listener);\n }\n else if (Array.isArray(before)) {\n var length = before.length;\n for (var i = 0; i < length; i++) before[i](listener);\n }\n }\n}\n\nfunction _listeners(self, event) {\n var listeners;\n listeners = self._events && self._events[event];\n if (!Array.isArray(listeners)) {\n if (listeners) {\n listeners = [listeners];\n }\n else {\n listeners = [];\n }\n }\n\n return listeners;\n}\n\nfunction _findAndProcess(self, event, before) {\n var after = _listeners(self, event);\n var unprocessed = after.filter(function(fn) { return before.indexOf(fn) === -1; });\n if (unprocessed.length > 0) _process(self, unprocessed);\n}\n\nfunction _wrap(unwrapped, visit) {\n if (!unwrapped) return;\n\n var wrapped = unwrapped;\n if (typeof unwrapped === 'function') {\n wrapped = visit(unwrapped);\n }\n else if (Array.isArray(unwrapped)) {\n wrapped = [];\n for (var i = 0; i < unwrapped.length; i++) {\n wrapped[i] = visit(unwrapped[i]);\n }\n }\n return wrapped;\n}\n\nmodule.exports = function wrapEmitter(emitter, onAddListener, onEmit) {\n if (!emitter || !emitter.on || !emitter.addListener ||\n !emitter.removeListener || !emitter.emit) {\n throw new Error(\"can only wrap real EEs\");\n }\n\n if (!onAddListener) throw new Error(\"must have function to run on listener addition\");\n if (!onEmit) throw new Error(\"must have function to wrap listeners when emitting\");\n\n /* Attach a context to a listener, and make sure that this hook stays\n * attached to the emitter forevermore.\n */\n function adding(on) {\n return function added(event, listener) {\n var existing = _listeners(this, event).slice();\n\n try {\n var returned = on.call(this, event, listener);\n _findAndProcess(this, event, existing);\n return returned;\n }\n finally {\n // old-style streaming overwrites .on and .addListener, so rewrap\n if (!this.on.__wrapped) wrap(this, 'on', adding);\n if (!this.addListener.__wrapped) wrap(this, 'addListener', adding);\n }\n };\n }\n\n function emitting(emit) {\n return function emitted(event) {\n if (!this._events || !this._events[event]) return emit.apply(this, arguments);\n\n var unwrapped = this._events[event];\n\n /* Ensure that if removeListener gets called, it's working with the\n * unwrapped listeners.\n */\n function remover(removeListener) {\n return function removed() {\n this._events[event] = unwrapped;\n try {\n return removeListener.apply(this, arguments);\n }\n finally {\n unwrapped = this._events[event];\n this._events[event] = _wrap(unwrapped, onEmit);\n }\n };\n }\n wrap(this, 'removeListener', remover);\n\n try {\n /* At emit time, ensure that whatever else is going on, removeListener will\n * still work while at the same time running whatever hooks are necessary to\n * make sure the listener is run in the correct context.\n */\n this._events[event] = _wrap(unwrapped, onEmit);\n return emit.apply(this, arguments);\n }\n finally {\n /* Ensure that regardless of what happens when preparing and running the\n * listeners, the status quo ante is restored before continuing.\n */\n unwrap(this, 'removeListener');\n this._events[event] = unwrapped;\n }\n };\n }\n\n // support multiple onAddListeners\n if (!emitter[SYMBOL]) {\n defineProperty(emitter, SYMBOL, onAddListener);\n }\n else if (typeof emitter[SYMBOL] === 'function') {\n defineProperty(emitter, SYMBOL, [emitter[SYMBOL], onAddListener]);\n }\n else if (Array.isArray(emitter[SYMBOL])) {\n emitter[SYMBOL].push(onAddListener);\n }\n\n // only wrap the core functions once\n if (!emitter.__wrapped) {\n wrap(emitter, 'addListener', adding);\n wrap(emitter, 'on', adding);\n wrap(emitter, 'emit', emitting);\n\n defineProperty(emitter, '__unwrap', function () {\n unwrap(emitter, 'addListener');\n unwrap(emitter, 'on');\n unwrap(emitter, 'emit');\n delete emitter[SYMBOL];\n delete emitter.__wrapped;\n });\n defineProperty(emitter, '__wrapped', true);\n }\n};\n", "/* eslint-disable max-len */\n'use strict';\n\nconst util = require('util');\nconst assert = require('assert');\nconst wrapEmitter = require('emitter-listener');\nconst async_hooks = require('async_hooks');\n\nconst CONTEXTS_SYMBOL = 'cls@contexts';\nconst ERROR_SYMBOL = 'error@context';\n\nconst DEBUG_CLS_HOOKED = process.env.DEBUG_CLS_HOOKED;\n\nlet currentUid = -1;\n\nmodule.exports = {\n getNamespace: getNamespace,\n createNamespace: createNamespace,\n destroyNamespace: destroyNamespace,\n reset: reset,\n ERROR_SYMBOL: ERROR_SYMBOL\n};\n\nfunction Namespace(name) {\n this.name = name;\n // changed in 2.7: no default context\n this.active = null;\n this._set = [];\n this.id = null;\n this._contexts = new Map();\n this._indent = 0;\n}\n\nNamespace.prototype.set = function set(key, value) {\n if (!this.active) {\n throw new Error('No context available. ns.run() or ns.bind() must be called first.');\n }\n\n this.active[key] = value;\n\n if (DEBUG_CLS_HOOKED) {\n const indentStr = ' '.repeat(this._indent < 0 ? 0 : this._indent);\n debug2(indentStr + 'CONTEXT-SET KEY:' + key + '=' + value + ' in ns:' + this.name + ' currentUid:' + currentUid + ' active:' + util.inspect(this.active, {showHidden:true, depth:2, colors:true}));\n }\n\n return value;\n};\n\nNamespace.prototype.get = function get(key) {\n if (!this.active) {\n if (DEBUG_CLS_HOOKED) {\n const asyncHooksCurrentId = async_hooks.currentId();\n const triggerId = async_hooks.triggerAsyncId();\n const indentStr = ' '.repeat(this._indent < 0 ? 0 : this._indent);\n //debug2(indentStr + 'CONTEXT-GETTING KEY NO ACTIVE NS:' + key + '=undefined' + ' (' + this.name + ') currentUid:' + currentUid + ' active:' + util.inspect(this.active, {showHidden:true, depth:2, colors:true}));\n debug2(`${indentStr}CONTEXT-GETTING KEY NO ACTIVE NS: (${this.name}) ${key}=undefined currentUid:${currentUid} asyncHooksCurrentId:${asyncHooksCurrentId} triggerId:${triggerId} len:${this._set.length}`);\n }\n return undefined;\n }\n if (DEBUG_CLS_HOOKED) {\n const asyncHooksCurrentId = async_hooks.executionAsyncId();\n const triggerId = async_hooks.triggerAsyncId();\n const indentStr = ' '.repeat(this._indent < 0 ? 0 : this._indent);\n debug2(indentStr + 'CONTEXT-GETTING KEY:' + key + '=' + this.active[key] + ' (' + this.name + ') currentUid:' + currentUid + ' active:' + util.inspect(this.active, {showHidden:true, depth:2, colors:true}));\n debug2(`${indentStr}CONTEXT-GETTING KEY: (${this.name}) ${key}=${this.active[key]} currentUid:${currentUid} asyncHooksCurrentId:${asyncHooksCurrentId} triggerId:${triggerId} len:${this._set.length} active:${util.inspect(this.active)}`);\n }\n return this.active[key];\n};\n\nNamespace.prototype.createContext = function createContext() {\n // Prototype inherit existing context if created a new child context within existing context.\n let context = Object.create(this.active ? this.active : Object.prototype);\n context._ns_name = this.name;\n context.id = currentUid;\n\n if (DEBUG_CLS_HOOKED) {\n const asyncHooksCurrentId = async_hooks.executionAsyncId();\n const triggerId = async_hooks.triggerAsyncId();\n const indentStr = ' '.repeat(this._indent < 0 ? 0 : this._indent);\n debug2(`${indentStr}CONTEXT-CREATED Context: (${this.name}) currentUid:${currentUid} asyncHooksCurrentId:${asyncHooksCurrentId} triggerId:${triggerId} len:${this._set.length} context:${util.inspect(context, {showHidden:true, depth:2, colors:true})}`);\n }\n\n return context;\n};\n\nNamespace.prototype.run = function run(fn) {\n let context = this.createContext();\n this.enter(context);\n\n try {\n if (DEBUG_CLS_HOOKED) {\n const triggerId = async_hooks.triggerAsyncId();\n const asyncHooksCurrentId = async_hooks.executionAsyncId();\n const indentStr = ' '.repeat(this._indent < 0 ? 0 : this._indent);\n debug2(`${indentStr}CONTEXT-RUN BEGIN: (${this.name}) currentUid:${currentUid} triggerId:${triggerId} asyncHooksCurrentId:${asyncHooksCurrentId} len:${this._set.length} context:${util.inspect(context)}`);\n }\n fn(context);\n return context;\n } catch (exception) {\n if (exception) {\n exception[ERROR_SYMBOL] = context;\n }\n throw exception;\n } finally {\n if (DEBUG_CLS_HOOKED) {\n const triggerId = async_hooks.triggerAsyncId();\n const asyncHooksCurrentId = async_hooks.executionAsyncId();\n const indentStr = ' '.repeat(this._indent < 0 ? 0 : this._indent);\n debug2(`${indentStr}CONTEXT-RUN END: (${this.name}) currentUid:${currentUid} triggerId:${triggerId} asyncHooksCurrentId:${asyncHooksCurrentId} len:${this._set.length} ${util.inspect(context)}`);\n }\n this.exit(context);\n }\n};\n\nNamespace.prototype.runAndReturn = function runAndReturn(fn) {\n let value;\n this.run(function (context) {\n value = fn(context);\n });\n return value;\n};\n\n/**\n * Uses global Promise and assumes Promise is cls friendly or wrapped already.\n * @param {function} fn\n * @returns {*}\n */\nNamespace.prototype.runPromise = function runPromise(fn) {\n let context = this.createContext();\n this.enter(context);\n\n let promise = fn(context);\n if (!promise || !promise.then || !promise.catch) {\n throw new Error('fn must return a promise.');\n }\n\n if (DEBUG_CLS_HOOKED) {\n debug2('CONTEXT-runPromise BEFORE: (' + this.name + ') currentUid:' + currentUid + ' len:' + this._set.length + ' ' + util.inspect(context));\n }\n\n return promise\n .then(result => {\n if (DEBUG_CLS_HOOKED) {\n debug2('CONTEXT-runPromise AFTER then: (' + this.name + ') currentUid:' + currentUid + ' len:' + this._set.length + ' ' + util.inspect(context));\n }\n this.exit(context);\n return result;\n })\n .catch(err => {\n err[ERROR_SYMBOL] = context;\n if (DEBUG_CLS_HOOKED) {\n debug2('CONTEXT-runPromise AFTER catch: (' + this.name + ') currentUid:' + currentUid + ' len:' + this._set.length + ' ' + util.inspect(context));\n }\n this.exit(context);\n throw err;\n });\n};\n\nNamespace.prototype.bind = function bindFactory(fn, context) {\n if (!context) {\n if (!this.active) {\n context = this.createContext();\n } else {\n context = this.active;\n }\n }\n\n let self = this;\n return function clsBind() {\n self.enter(context);\n try {\n return fn.apply(this, arguments);\n } catch (exception) {\n if (exception) {\n exception[ERROR_SYMBOL] = context;\n }\n throw exception;\n } finally {\n self.exit(context);\n }\n };\n};\n\nNamespace.prototype.enter = function enter(context) {\n assert.ok(context, 'context must be provided for entering');\n if (DEBUG_CLS_HOOKED) {\n const asyncHooksCurrentId = async_hooks.executionAsyncId();\n const triggerId = async_hooks.triggerAsyncId();\n const indentStr = ' '.repeat(this._indent < 0 ? 0 : this._indent);\n debug2(`${indentStr}CONTEXT-ENTER: (${this.name}) currentUid:${currentUid} triggerId:${triggerId} asyncHooksCurrentId:${asyncHooksCurrentId} len:${this._set.length} ${util.inspect(context)}`);\n }\n\n this._set.push(this.active);\n this.active = context;\n};\n\nNamespace.prototype.exit = function exit(context) {\n assert.ok(context, 'context must be provided for exiting');\n if (DEBUG_CLS_HOOKED) {\n const asyncHooksCurrentId = async_hooks.executionAsyncId();\n const triggerId = async_hooks.triggerAsyncId();\n const indentStr = ' '.repeat(this._indent < 0 ? 0 : this._indent);\n debug2(`${indentStr}CONTEXT-EXIT: (${this.name}) currentUid:${currentUid} triggerId:${triggerId} asyncHooksCurrentId:${asyncHooksCurrentId} len:${this._set.length} ${util.inspect(context)}`);\n }\n\n // Fast path for most exits that are at the top of the stack\n if (this.active === context) {\n assert.ok(this._set.length, 'can\\'t remove top context');\n this.active = this._set.pop();\n return;\n }\n\n // Fast search in the stack using lastIndexOf\n let index = this._set.lastIndexOf(context);\n\n if (index < 0) {\n if (DEBUG_CLS_HOOKED) {\n debug2('??ERROR?? context exiting but not entered - ignoring: ' + util.inspect(context));\n }\n assert.ok(index >= 0, 'context not currently entered; can\\'t exit. \\n' + util.inspect(this) + '\\n' + util.inspect(context));\n } else {\n assert.ok(index, 'can\\'t remove top context');\n this._set.splice(index, 1);\n }\n};\n\nNamespace.prototype.bindEmitter = function bindEmitter(emitter) {\n assert.ok(emitter.on && emitter.addListener && emitter.emit, 'can only bind real EEs');\n\n let namespace = this;\n let thisSymbol = 'context@' + this.name;\n\n // Capture the context active at the time the emitter is bound.\n function attach(listener) {\n if (!listener) {\n return;\n }\n if (!listener[CONTEXTS_SYMBOL]) {\n listener[CONTEXTS_SYMBOL] = Object.create(null);\n }\n\n listener[CONTEXTS_SYMBOL][thisSymbol] = {\n namespace: namespace,\n context: namespace.active\n };\n }\n\n // At emit time, bind the listener within the correct context.\n function bind(unwrapped) {\n if (!(unwrapped && unwrapped[CONTEXTS_SYMBOL])) {\n return unwrapped;\n }\n\n let wrapped = unwrapped;\n let unwrappedContexts = unwrapped[CONTEXTS_SYMBOL];\n Object.keys(unwrappedContexts).forEach(function (name) {\n let thunk = unwrappedContexts[name];\n wrapped = thunk.namespace.bind(wrapped, thunk.context);\n });\n return wrapped;\n }\n\n wrapEmitter(emitter, attach, bind);\n};\n\n/**\n * If an error comes out of a namespace, it will have a context attached to it.\n * This function knows how to find it.\n *\n * @param {Error} exception Possibly annotated error.\n */\nNamespace.prototype.fromException = function fromException(exception) {\n return exception[ERROR_SYMBOL];\n};\n\nfunction getNamespace(name) {\n return process.namespaces[name];\n}\n\nfunction createNamespace(name) {\n assert.ok(name, 'namespace must be given a name.');\n\n if (DEBUG_CLS_HOOKED) {\n debug2(`NS-CREATING NAMESPACE (${name})`);\n }\n let namespace = new Namespace(name);\n namespace.id = currentUid;\n\n const hook = async_hooks.createHook({\n init(asyncId, type, triggerId, resource) {\n currentUid = async_hooks.executionAsyncId();\n\n //CHAIN Parent's Context onto child if none exists. This is needed to pass net-events.spec\n // let initContext = namespace.active;\n // if(!initContext && triggerId) {\n // let parentContext = namespace._contexts.get(triggerId);\n // if (parentContext) {\n // namespace.active = parentContext;\n // namespace._contexts.set(currentUid, parentContext);\n // if (DEBUG_CLS_HOOKED) {\n // const indentStr = ' '.repeat(namespace._indent < 0 ? 0 : namespace._indent);\n // debug2(`${indentStr}INIT [${type}] (${name}) WITH PARENT CONTEXT asyncId:${asyncId} currentUid:${currentUid} triggerId:${triggerId} active:${util.inspect(namespace.active, true)} resource:${resource}`);\n // }\n // } else if (DEBUG_CLS_HOOKED) {\n // const indentStr = ' '.repeat(namespace._indent < 0 ? 0 : namespace._indent);\n // debug2(`${indentStr}INIT [${type}] (${name}) MISSING CONTEXT asyncId:${asyncId} currentUid:${currentUid} triggerId:${triggerId} active:${util.inspect(namespace.active, true)} resource:${resource}`);\n // }\n // }else {\n // namespace._contexts.set(currentUid, namespace.active);\n // if (DEBUG_CLS_HOOKED) {\n // const indentStr = ' '.repeat(namespace._indent < 0 ? 0 : namespace._indent);\n // debug2(`${indentStr}INIT [${type}] (${name}) asyncId:${asyncId} currentUid:${currentUid} triggerId:${triggerId} active:${util.inspect(namespace.active, true)} resource:${resource}`);\n // }\n // }\n if(namespace.active) {\n namespace._contexts.set(asyncId, namespace.active);\n\n if (DEBUG_CLS_HOOKED) {\n const indentStr = ' '.repeat(namespace._indent < 0 ? 0 : namespace._indent);\n debug2(`${indentStr}INIT [${type}] (${name}) asyncId:${asyncId} currentUid:${currentUid} triggerId:${triggerId} active:${util.inspect(namespace.active, {showHidden:true, depth:2, colors:true})} resource:${resource}`);\n }\n }else if(currentUid === 0){\n // CurrentId will be 0 when triggered from C++. Promise events\n // https://github.com/nodejs/node/blob/master/doc/api/async_hooks.md#triggerid\n const triggerId = async_hooks.triggerAsyncId();\n const triggerIdContext = namespace._contexts.get(triggerId);\n if (triggerIdContext) {\n namespace._contexts.set(asyncId, triggerIdContext);\n if (DEBUG_CLS_HOOKED) {\n const indentStr = ' '.repeat(namespace._indent < 0 ? 0 : namespace._indent);\n debug2(`${indentStr}INIT USING CONTEXT FROM TRIGGERID [${type}] (${name}) asyncId:${asyncId} currentUid:${currentUid} triggerId:${triggerId} active:${util.inspect(namespace.active, { showHidden: true, depth: 2, colors: true })} resource:${resource}`);\n }\n } else if (DEBUG_CLS_HOOKED) {\n const indentStr = ' '.repeat(namespace._indent < 0 ? 0 : namespace._indent);\n debug2(`${indentStr}INIT MISSING CONTEXT [${type}] (${name}) asyncId:${asyncId} currentUid:${currentUid} triggerId:${triggerId} active:${util.inspect(namespace.active, { showHidden: true, depth: 2, colors: true })} resource:${resource}`);\n }\n }\n\n\n if(DEBUG_CLS_HOOKED && type === 'PROMISE'){\n debug2(util.inspect(resource, {showHidden: true}));\n const parentId = resource.parentId;\n const indentStr = ' '.repeat(namespace._indent < 0 ? 0 : namespace._indent);\n debug2(`${indentStr}INIT RESOURCE-PROMISE [${type}] (${name}) parentId:${parentId} asyncId:${asyncId} currentUid:${currentUid} triggerId:${triggerId} active:${util.inspect(namespace.active, {showHidden:true, depth:2, colors:true})} resource:${resource}`);\n }\n\n },\n before(asyncId) {\n currentUid = async_hooks.executionAsyncId();\n let context;\n\n /*\n if(currentUid === 0){\n // CurrentId will be 0 when triggered from C++. Promise events\n // https://github.com/nodejs/node/blob/master/doc/api/async_hooks.md#triggerid\n //const triggerId = async_hooks.triggerAsyncId();\n context = namespace._contexts.get(asyncId); // || namespace._contexts.get(triggerId);\n }else{\n context = namespace._contexts.get(currentUid);\n }\n */\n\n //HACK to work with promises until they are fixed in node > 8.1.1\n context = namespace._contexts.get(asyncId) || namespace._contexts.get(currentUid);\n\n if (context) {\n if (DEBUG_CLS_HOOKED) {\n const triggerId = async_hooks.triggerAsyncId();\n const indentStr = ' '.repeat(namespace._indent < 0 ? 0 : namespace._indent);\n debug2(`${indentStr}BEFORE (${name}) asyncId:${asyncId} currentUid:${currentUid} triggerId:${triggerId} active:${util.inspect(namespace.active, {showHidden:true, depth:2, colors:true})} context:${util.inspect(context)}`);\n namespace._indent += 2;\n }\n\n namespace.enter(context);\n\n } else if (DEBUG_CLS_HOOKED) {\n const triggerId = async_hooks.triggerAsyncId();\n const indentStr = ' '.repeat(namespace._indent < 0 ? 0 : namespace._indent);\n debug2(`${indentStr}BEFORE MISSING CONTEXT (${name}) asyncId:${asyncId} currentUid:${currentUid} triggerId:${triggerId} active:${util.inspect(namespace.active, {showHidden:true, depth:2, colors:true})} namespace._contexts:${util.inspect(namespace._contexts, {showHidden:true, depth:2, colors:true})}`);\n namespace._indent += 2;\n }\n },\n after(asyncId) {\n currentUid = async_hooks.executionAsyncId();\n let context; // = namespace._contexts.get(currentUid);\n /*\n if(currentUid === 0){\n // CurrentId will be 0 when triggered from C++. Promise events\n // https://github.com/nodejs/node/blob/master/doc/api/async_hooks.md#triggerid\n //const triggerId = async_hooks.triggerAsyncId();\n context = namespace._contexts.get(asyncId); // || namespace._contexts.get(triggerId);\n }else{\n context = namespace._contexts.get(currentUid);\n }\n */\n //HACK to work with promises until they are fixed in node > 8.1.1\n context = namespace._contexts.get(asyncId) || namespace._contexts.get(currentUid);\n\n if (context) {\n if (DEBUG_CLS_HOOKED) {\n const triggerId = async_hooks.triggerAsyncId();\n namespace._indent -= 2;\n const indentStr = ' '.repeat(namespace._indent < 0 ? 0 : namespace._indent);\n debug2(`${indentStr}AFTER (${name}) asyncId:${asyncId} currentUid:${currentUid} triggerId:${triggerId} active:${util.inspect(namespace.active, {showHidden:true, depth:2, colors:true})} context:${util.inspect(context)}`);\n }\n\n namespace.exit(context);\n\n } else if (DEBUG_CLS_HOOKED) {\n const triggerId = async_hooks.triggerAsyncId();\n namespace._indent -= 2;\n const indentStr = ' '.repeat(namespace._indent < 0 ? 0 : namespace._indent);\n debug2(`${indentStr}AFTER MISSING CONTEXT (${name}) asyncId:${asyncId} currentUid:${currentUid} triggerId:${triggerId} active:${util.inspect(namespace.active, {showHidden:true, depth:2, colors:true})} context:${util.inspect(context)}`);\n }\n },\n destroy(asyncId) {\n currentUid = async_hooks.executionAsyncId();\n if (DEBUG_CLS_HOOKED) {\n const triggerId = async_hooks.triggerAsyncId();\n const indentStr = ' '.repeat(namespace._indent < 0 ? 0 : namespace._indent);\n debug2(`${indentStr}DESTROY (${name}) currentUid:${currentUid} asyncId:${asyncId} triggerId:${triggerId} active:${util.inspect(namespace.active, {showHidden:true, depth:2, colors:true})} context:${util.inspect(namespace._contexts.get(currentUid))}`);\n }\n\n namespace._contexts.delete(asyncId);\n }\n });\n\n hook.enable();\n\n process.namespaces[name] = namespace;\n return namespace;\n}\n\nfunction destroyNamespace(name) {\n let namespace = getNamespace(name);\n\n assert.ok(namespace, 'can\\'t delete nonexistent namespace! \"' + name + '\"');\n assert.ok(namespace.id, 'don\\'t assign to process.namespaces directly! ' + util.inspect(namespace));\n\n process.namespaces[name] = null;\n}\n\nfunction reset() {\n // must unregister async listeners\n if (process.namespaces) {\n Object.keys(process.namespaces).forEach(function (name) {\n destroyNamespace(name);\n });\n }\n process.namespaces = Object.create(null);\n}\n\nprocess.namespaces = {};\n\n//const fs = require('fs');\nfunction debug2(...args) {\n if (DEBUG_CLS_HOOKED) {\n //fs.writeSync(1, `${util.format(...args)}\\n`);\n process._rawDebug(`${util.format(...args)}`);\n }\n}\n\n/*function getFunctionName(fn) {\n if (!fn) {\n return fn;\n }\n if (typeof fn === 'function') {\n if (fn.name) {\n return fn.name;\n }\n return (fn.toString().trim().match(/^function\\s*([^\\s(]+)/) || [])[1];\n } else if (fn.constructor && fn.constructor.name) {\n return fn.constructor.name;\n }\n}*/\n\n\n", "\"use strict\";\nvar validLogLevels = ['debug', 'info', 'warn', 'error', 'silent'];\nvar defaultLogLevel = validLogLevels.indexOf('error');\nvar logLevel = calculateLogLevel(process.env.AWS_XRAY_DEBUG_MODE ? 'debug' : process.env.AWS_XRAY_LOG_LEVEL);\nvar logger = {\n error: createLoggerForLevel('error'),\n info: createLoggerForLevel('info'),\n warn: createLoggerForLevel('warn'),\n debug: createLoggerForLevel('debug'),\n};\nfunction createLoggerForLevel(level) {\n var loggerLevel = validLogLevels.indexOf(level);\n var consoleMethod = console[level] || console.log || (() => { });\n if (loggerLevel >= logLevel) {\n return (message, meta) => {\n if (message || meta) {\n consoleMethod(formatLogMessage(level, message, meta));\n }\n };\n }\n else {\n return () => { };\n }\n}\nfunction calculateLogLevel(level) {\n if (level) {\n var normalisedLevel = level.toLowerCase();\n var index = validLogLevels.indexOf(normalisedLevel);\n return index >= 0 ? index : defaultLogLevel;\n }\n // Silently ignore invalid log levels, default to default level\n return defaultLogLevel;\n}\nfunction createTimestamp(date) {\n var tzo = -date.getTimezoneOffset(), // Negate to make this tzo = local - UTC\n dif = tzo >= 0 ? '+' : '-', pad = function (num) {\n var norm = Math.floor(Math.abs(num));\n return (norm < 10 ? '0' : '') + norm;\n };\n return new Date(date.getTime() + (tzo * 60 * 1000)).toISOString()\n .replace(/T/, ' ')\n .replace(/Z/, ' ') +\n dif + pad(tzo / 60) +\n ':' + pad(tzo % 60);\n}\nfunction isLambdaFunction() {\n return process.env.LAMBDA_TASK_ROOT !== undefined;\n}\nfunction formatLogMessage(level, message, meta) {\n var messageParts = [];\n if (!isLambdaFunction()) {\n messageParts.push(createTimestamp(new Date()));\n messageParts.push(`[${level.toUpperCase()}]`);\n }\n if (message) {\n messageParts.push(message);\n }\n var logString = messageParts.join(' ');\n var metaDataString = formatMetaData(meta);\n return [logString, metaDataString].filter(str => str.length > 0).join('\\n ');\n}\nfunction formatMetaData(meta) {\n if (!meta) {\n return '';\n }\n return ((typeof (meta) === 'string') ? meta : JSON.stringify(meta));\n}\nvar logging = {\n setLogger: function setLogger(logObj) {\n logger = logObj;\n },\n getLogger: function getLogger() {\n return logger;\n }\n};\nmodule.exports = logging;\n", "\"use strict\";\nconst crypto = require('crypto');\n/**\n * Represents a captured exception.\n * @constructor\n * @param {Exception} err - The exception to capture.\n * @param {boolean} [remote] - Flag for whether the error was remote.\n */\nfunction CapturedException(err, remote) {\n this.init(err, remote);\n}\nCapturedException.prototype.init = function init(err, remote) {\n var e = (typeof err === 'string' || err instanceof String) ? { message: err, name: '' } : err;\n this.message = e.message;\n this.type = e.name;\n this.stack = [];\n this.remote = !!remote;\n this.id = crypto.randomBytes(8).toString('hex');\n if (e.stack) {\n var stack = e.stack.split('\\n');\n stack.shift();\n stack.forEach((stackline) => {\n var line = stackline.trim().replace(/\\(|\\)/g, '');\n line = line.substring(line.indexOf(' ') + 1);\n var label = line.lastIndexOf(' ') >= 0 ? line.slice(0, line.lastIndexOf(' ')) : null;\n var path = Array.isArray(label) && !label.length ? line : line.slice(line.lastIndexOf(' ') + 1);\n path = path.split(':');\n var entry = {\n path: path[0],\n line: parseInt(path[1]),\n label: label || 'anonymous'\n };\n this.stack.push(entry);\n }, this);\n }\n};\nmodule.exports = CapturedException;\n", "module.exports = batcher\n\nfunction batcher (run) {\n var running = false\n var pendingBatch = null\n var pendingCallbacks = null\n var callbacks = null\n\n return append\n\n function done (err) {\n if (callbacks) callAll(callbacks, err)\n\n running = false\n callbacks = pendingCallbacks\n var nextBatch = pendingBatch\n\n pendingBatch = null\n pendingCallbacks = null\n\n if (!nextBatch || !nextBatch.length) {\n if (!callbacks || !callbacks.length) {\n callbacks = null\n return\n }\n if (!nextBatch) nextBatch = []\n }\n\n running = true\n run(nextBatch, done)\n }\n\n function append (val, cb) {\n if (running) {\n if (!pendingBatch) {\n pendingBatch = []\n pendingCallbacks = []\n }\n pushAll(pendingBatch, val)\n if (cb) pendingCallbacks.push(cb)\n } else {\n if (cb) callbacks = [cb]\n running = true\n run(Array.isArray(val) ? val : [val], done)\n }\n }\n}\n\nfunction pushAll (list, val) {\n if (Array.isArray(val)) pushArray(list, val)\n else list.push(val)\n}\n\nfunction pushArray (list, val) {\n for (var i = 0; i < val.length; i++) list.push(val[i])\n}\n\nfunction callAll (list, err) {\n for (var i = 0; i < list.length; i++) list[i](err)\n}\n", "\"use strict\";\nvar logger = require('./logger');\n/**\n * A module representing the X-Ray daemon configuration including the udp and tcp addresses.\n * @module DaemonConfig\n */\nvar DaemonConfig = {\n udp_ip: '127.0.0.1',\n udp_port: 2000,\n tcp_ip: '127.0.0.1',\n tcp_port: 2000,\n setDaemonAddress: function setDaemonAddress(address) {\n if (!process.env.AWS_XRAY_DAEMON_ADDRESS) {\n processAddress(address);\n logger.getLogger().info('Configured daemon address to ' + address + '.');\n }\n else {\n logger.getLogger().warn('Ignoring call to setDaemonAddress as AWS_XRAY_DAEMON_ADDRESS is set. ' +\n 'The current daemon address will not be changed.');\n }\n }\n};\nvar processAddress = function processAddress(address) {\n if (address.indexOf(':') === -1) {\n throw new Error('Invalid Daemon Address. You must specify an ip and port.');\n }\n else {\n var splitAddress = address.split(' ');\n if (splitAddress.length === 1) {\n // in format of 127.0.0.1:2000\n if (address.indexOf('udp') > -1 || address.indexOf('tcp') > -1) {\n throw new Error('Invalid Daemon Address. You must specify both tcp and udp addresses.');\n }\n var addr = address.split(':');\n if (!addr[0]) {\n throw new Error('Invalid Daemon Address. You must specify an ip.');\n }\n DaemonConfig.udp_ip = addr[0];\n DaemonConfig.tcp_ip = addr[0];\n DaemonConfig.udp_port = addr[1];\n DaemonConfig.tcp_port = addr[1];\n }\n else if (splitAddress.length === 2) {\n // in format of udp:127.0.0.1:2000 tcp:127.0.0.1:2001\n var part_1 = splitAddress[0].split(':');\n var part_2 = splitAddress[1].split(':');\n var addr_map = {};\n addr_map[part_1[0]] = part_1;\n addr_map[part_2[0]] = part_2;\n DaemonConfig.udp_ip = addr_map['udp'][1];\n DaemonConfig.udp_port = parseInt(addr_map['udp'][2]);\n DaemonConfig.tcp_ip = addr_map['tcp'][1];\n DaemonConfig.tcp_port = parseInt(addr_map['tcp'][2]);\n if (!DaemonConfig.udp_port || !DaemonConfig.tcp_port) {\n throw new Error('Invalid Daemon Address. You must specify port number.');\n }\n }\n }\n};\nif (process.env.AWS_XRAY_DAEMON_ADDRESS) {\n processAddress(process.env.AWS_XRAY_DAEMON_ADDRESS);\n}\nmodule.exports = DaemonConfig;\n", "\"use strict\";\nvar dgram = require('dgram');\nvar batcher = require('atomic-batcher');\nvar logger = require('./logger');\nvar PROTOCOL_HEADER = '{\"format\":\"json\",\"version\":1}';\nvar PROTOCOL_DELIMITER = '\\n';\n/**\n * Sends a collection of data over a UDP socket. This method\n * is designed to be used by `atomic-batcher` as a way to share\n * a single UDP socket for sending multiple data blocks.\n *\n * @param {object} ops - Details of the data to send\n * @param {Function} callback - The function to call when done\n */\nfunction batchSendData(ops, callback) {\n var client = dgram.createSocket('udp4');\n executeSendData(client, ops, 0, function () {\n try {\n client.close();\n }\n finally {\n callback();\n }\n });\n}\n/**\n * Execute sending data starting at the specified index and\n * using the provided client.\n *\n * @param {Socket} client - Socket to send data with\n * @param {object} ops - Details of data to send\n * @param {number} index - Starting index for sending\n * @param {Function} callback - Function to call when done\n */\nfunction executeSendData(client, ops, index, callback) {\n if (index >= ops.length) {\n callback();\n return;\n }\n sendMessage(client, ops[index], function () {\n executeSendData(client, ops, index + 1, callback);\n });\n}\n/**\n * Send a single message over a UDP socket.\n *\n * @param {Socket} client - Socket to send data with\n * @param {object} data - Details of the data to send\n * @param {Function} batchCallback - Function to call when done\n */\nfunction sendMessage(client, data, batchCallback) {\n var msg = data.msg;\n var offset = data.offset;\n var length = data.length;\n var port = data.port;\n var address = data.address;\n var callback = data.callback;\n client.send(msg, offset, length, port, address, function (err) {\n try {\n callback(err);\n }\n finally {\n batchCallback();\n }\n });\n}\n/**\n * Class to mimic the Socket interface for a UDP client, but to provided\n * batching of outgoing sends using temporary Sockets that are created and\n * destroyed as needed.\n */\nfunction BatchingTemporarySocket() {\n this.batchSend = batcher(batchSendData);\n}\n/**\n * Provide the same signature as the Socket.send method but the work will be\n * batched to share temporary UDP sockets whenever possible.\n */\nBatchingTemporarySocket.prototype.send = function (msg, offset, length, port, address, callback) {\n var work = {\n msg: msg,\n offset: offset,\n length: length,\n port: port,\n address: address,\n callback: callback\n };\n this.batchSend(work);\n};\n/**\n * Segment emitter module.\n * @module SegmentEmitter\n */\nvar SegmentEmitter = {\n daemonConfig: require('./daemon_config'),\n /**\n * Returns the formatted segment JSON string.\n * @param {Segment} segment - The segment to format.\n */\n format: function format(segment) {\n return PROTOCOL_HEADER + PROTOCOL_DELIMITER + segment.toString();\n },\n /**\n * Creates a UDP socket connection and send the formatted segment.\n * @param {Segment} segment - The segment to send to the daemon.\n */\n send: function send(segment) {\n if (!this.socket) {\n if (this.useBatchingTemporarySocket) {\n this.socket = new BatchingTemporarySocket();\n }\n else {\n this.socket = dgram.createSocket('udp4').unref();\n }\n }\n var client = this.socket;\n var formatted = segment.format();\n var data = PROTOCOL_HEADER + PROTOCOL_DELIMITER + formatted;\n var message = Buffer.from(data);\n var short = '{\"trace_id:\"' + segment.trace_id + '\",\"id\":\"' + segment.id + '\"}';\n var type = segment.type === 'subsegment' ? 'Subsegment' : 'Segment';\n client.send(message, 0, message.length, this.daemonConfig.udp_port, this.daemonConfig.udp_ip, function (err) {\n if (err) {\n if (err.code === 'EMSGSIZE') {\n logger.getLogger().error(type + ' too large to send: ' + short + ' (' + message.length + ' bytes).');\n }\n else {\n logger.getLogger().error('Error occured sending segment: ', err);\n }\n }\n else {\n logger.getLogger().debug(type + ' sent: {\"trace_id:\"' + segment.trace_id + '\",\"id\":\"' + segment.id + '\"}');\n logger.getLogger().debug('UDP message sent: ' + segment);\n }\n });\n },\n /**\n * Configures the address and/or port the daemon is expected to be on.\n * @param {string} address - Address of the daemon the segments should be sent to. Should be formatted as an IPv4 address.\n * @module SegmentEmitter\n * @function setDaemonAddress\n */\n setDaemonAddress: function setDaemonAddress(address) {\n this.daemonConfig.setDaemonAddress(address);\n },\n /**\n * Get the UDP IP the emitter is configured to.\n * @module SegmentEmitter\n * @function getIp\n */\n getIp: function getIp() {\n return this.daemonConfig.udp_ip;\n },\n /**\n * Get the UDP port the emitter is configured to.\n * @module SegmentEmitter\n * @function getPort\n */\n getPort: function getPort() {\n return this.daemonConfig.udp_port;\n },\n /**\n * Forces the segment emitter to create a new socket on send, and close it on complete.\n * @module SegmentEmitter\n * @function disableReusableSocket\n */\n disableReusableSocket: function () {\n this.useBatchingTemporarySocket = true;\n }\n};\nmodule.exports = SegmentEmitter;\n", "\"use strict\";\nvar crypto = require('crypto');\nvar logger = require('../../logger');\n/**\n * Class describing an AWS X-Ray trace ID.\n * @see https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-traces\n */\nclass TraceID {\n /**\n * Constructs a new trace ID using the current time.\n * @param {string} [tsHex] - time stamp to use for trace ID in hexadecimal format\n * @param {string} [numberhex] - string of hexadecimal characters for random portion of Trace ID\n * @constructor\n */\n constructor(tsHex, numberhex) {\n this.version = 1;\n this.timestamp = tsHex || Math.round(new Date().getTime() / 1000).toString(16);\n this.id = numberhex || crypto.randomBytes(12).toString('hex');\n }\n /**\n * @returns {TraceID} - a hardcoded trace ID using zeroed timestamp and random ID\n */\n static Invalid() {\n return new TraceID('00000000', '000000000000000000000000');\n }\n /**\n * Constructs a new trace ID from provided string. If no string is provided or the provided string is invalid,\n * log an error but a new trace ID still returned. This can be used as a trace ID string validator.\n * @param {string} [rawID] - string to create a Trace ID object from.\n */\n static FromString(rawID) {\n const DELIMITER = '-';\n var traceID = new TraceID();\n var version, timestamp;\n if (!rawID || typeof rawID !== 'string') {\n logger.getLogger().error('Empty or non-string trace ID provided');\n return traceID;\n }\n const parts = rawID.trim().split(DELIMITER);\n if (parts.length !== 3) {\n logger.getLogger().error('Unrecognized trace ID format');\n return traceID;\n }\n version = parseInt(parts[0]);\n if (isNaN(version) || version < 1) {\n logger.getLogger().error('Trace ID version must be positive integer');\n return traceID;\n }\n timestamp = parseInt(parts[1], 16).toString(16);\n if (timestamp === 'NaN') {\n logger.getLogger().error('Trace ID timestamp must be a hex-encoded value');\n return traceID;\n }\n traceID.version = version;\n traceID.timestamp = timestamp;\n traceID.id = parts[2];\n return traceID;\n }\n /**\n * Returns a string representation of the trace ID.\n * @returns {string} - stringified trace ID, e.g. 1-57fbe041-2c7ad569f5d6ff149137be86\n */\n toString() {\n return `${this.version.toString()}-${this.timestamp}-${this.id}`;\n }\n}\nmodule.exports = TraceID;\n", "\"use strict\";\n/**\n * @module utils\n */\nvar crypto = require('crypto');\nvar logger = require('./logger');\nvar TraceID = require('./segments/attributes/trace_id');\nvar utils = {\n /**\n * Checks a HTTP response code, where 4xx are 'error' and 5xx are 'fault'.\n * @param {string} status - the HTTP response status code.\n * @returns [string] - 'error', 'fault' or nothing on no match\n * @alias module:utils.getCauseTypeFromHttpStatus\n */\n getCauseTypeFromHttpStatus: function getCauseTypeFromHttpStatus(status) {\n var stat = status.toString();\n if (stat.match(/^[4][0-9]{2}$/) !== null) {\n return 'error';\n }\n else if (stat.match(/^[5][0-9]{2}$/) !== null) {\n return 'fault';\n }\n },\n /**\n * Removes the query string parameters from a given http request path\n * as it may contain sensitive information\n *\n * Related issue: https://github.com/aws/aws-xray-sdk-node/issues/246\n *\n * Node documentation: https://nodejs.org/api/http.html#http_http_request_url_options_callback\n *\n * @param {string} path - options.path in a http.request callback\n * @returns [string] - removes query string element from path\n * @alias module:utils.stripQueryStringFromPath\n */\n stripQueryStringFromPath: function stripQueryStringFromPath(path) {\n return path ? path.split('?')[0] : '';\n },\n /**\n * Performs a case-insensitive wildcard match against two strings. This method works with pseduo-regex chars; specifically ? and * are supported.\n * An asterisk (*) represents any combination of characters\n * A question mark (?) represents any single character\n *\n * @param {string} pattern - the regex-like pattern to be compared against.\n * @param {string} text - the string to compare against the pattern.\n * @returns boolean\n * @alias module:utils.wildcardMatch\n */\n wildcardMatch: function wildcardMatch(pattern, text) {\n if (pattern === undefined || text === undefined) {\n return false;\n }\n if (pattern.length === 1 && pattern.charAt(0) === '*') {\n return true;\n }\n var patternLength = pattern.length;\n var textLength = text.length;\n var indexOfGlob = pattern.indexOf('*');\n pattern = pattern.toLowerCase();\n text = text.toLowerCase();\n // Infix globs are relatively rare, and the below search is expensive especially when\n // Balsa is used a lot. Check for infix globs and, in their absence, do the simple thing\n if (indexOfGlob === -1 || indexOfGlob === (patternLength - 1)) {\n var match = function simpleWildcardMatch() {\n var j = 0;\n for (var i = 0; i < patternLength; i++) {\n var patternChar = pattern.charAt(i);\n if (patternChar === '*') {\n // Presumption for this method is that globs only occur at end\n return true;\n }\n else if (patternChar === '?') {\n if (j === textLength) {\n return false;\n } // No character to match\n j++;\n }\n else {\n if (j >= textLength || patternChar != text.charAt(j)) {\n return false;\n }\n j++;\n }\n }\n // Ate up all the pattern and didn't end at a glob, so a match will have consumed all\n // the text\n return j === textLength;\n };\n return match();\n }\n /*\n * The matchArray[i] is used to record if there is a match between the first i chars in =\n * text and the first j chars in pattern.\n * So will return matchArray[textLength+1] in the end\n * Loop from the beginning of the pattern\n * case not '*': if text[i]==pattern[j] or pattern[j] is '?', and matchArray[i] is true,\n * set matchArray[i+1] to true, otherwise false\n * case '*': since '*' can match any globing, as long as there is a true in matchArray before i\n * all the matchArray[i+1], matchArray[i+2],...,matchArray[textLength] could be true\n */\n var matchArray = [];\n matchArray[0] = true;\n for (var j = 0; j < patternLength; j++) {\n var i;\n var patternChar = pattern.charAt(j);\n if (patternChar != '*') {\n for (i = textLength - 1; i >= 0; i--) {\n matchArray[i + 1] = !!matchArray[i] && (patternChar === '?' || (patternChar === text.charAt(i)));\n }\n }\n else {\n i = 0;\n while (i <= textLength && !matchArray[i]) {\n i++;\n }\n for (i; i <= textLength; i++) {\n matchArray[i] = true;\n }\n }\n matchArray[0] = (matchArray[0] && patternChar === '*');\n }\n return matchArray[textLength];\n },\n LambdaUtils: {\n validTraceData: function (xAmznTraceId) {\n var valid = false;\n if (xAmznTraceId) {\n var data = utils.processTraceData(xAmznTraceId);\n valid = !!(data && data.root && data.parent && data.sampled);\n }\n return valid;\n },\n /**\n * Populates trace ID, parent ID, and sampled decision of given segment. Will always populate valid values,\n * even if xAmznTraceId contains missing or invalid values. This ensures downstream services receive valid\n * headers.\n * @param {Segment} segment - Facade segment to be populated\n * @param {String} xAmznTraceId - Raw Trace Header to supply trace data\n * @returns {Boolean} - true if required fields are present and Trace ID is valid, false otherwise\n */\n populateTraceData: function (segment, xAmznTraceId) {\n logger.getLogger().debug('Lambda trace data found: ' + xAmznTraceId);\n let traceData = utils.processTraceData(xAmznTraceId);\n var valid = false;\n if (!traceData) {\n traceData = {};\n logger.getLogger().error('_X_AMZN_TRACE_ID is empty or has an invalid format');\n }\n else if (!traceData.root || !traceData.parent || !traceData.sampled) {\n logger.getLogger().error('_X_AMZN_TRACE_ID is missing required information');\n }\n else {\n valid = true;\n }\n segment.trace_id = TraceID.FromString(traceData.root).toString(); // Will always assign valid trace_id\n segment.id = traceData.parent || crypto.randomBytes(8).toString('hex');\n if (traceData.root && segment.trace_id !== traceData.root) {\n logger.getLogger().error('_X_AMZN_TRACE_ID contains invalid trace ID');\n valid = false;\n }\n if (!parseInt(traceData.sampled)) {\n segment.notTraced = true;\n }\n else {\n delete segment.notTraced;\n }\n if (traceData.data) {\n segment.additionalTraceData = traceData.data;\n }\n logger.getLogger().debug('Segment started: ' + JSON.stringify(traceData));\n return valid;\n }\n },\n /**\n * Splits out the data from the trace id format. Used by the middleware.\n * @param {String} traceData - The additional trace data (typically in req.headers.x-amzn-trace-id).\n * @returns {object}\n * @alias module:mw_utils.processTraceData\n */\n processTraceData: function processTraceData(traceData) {\n var amznTraceData = {};\n var data = {};\n var reservedKeywords = ['root', 'parent', 'sampled', 'self'];\n var remainingBytes = 256;\n if (!(typeof traceData === 'string' && traceData)) {\n return amznTraceData;\n }\n traceData.split(';').forEach(function (header) {\n if (!header) {\n return;\n }\n var pair = header.split('=');\n if (pair[0] && pair[1]) {\n let key = pair[0].trim();\n let value = pair[1].trim();\n let lowerCaseKey = key.toLowerCase();\n let reserved = reservedKeywords.indexOf(lowerCaseKey) !== -1;\n if (reserved) {\n amznTraceData[lowerCaseKey] = value;\n }\n else if (!reserved && remainingBytes - (lowerCaseKey.length + value.length) >= 0) {\n data[key] = value;\n remainingBytes -= (key.length + value.length);\n }\n }\n });\n amznTraceData['data'] = data;\n return amznTraceData;\n },\n /**\n * Makes a shallow copy of an object without given keys - keeps prototype\n * @param {Object} obj - The object to copy\n * @param {string[]} [keys=[]] - The keys that won't be copied\n * @param {boolean} [preservePrototype=false] - If true also copy prototype properties\n * @returns {}\n */\n objectWithoutProperties: function objectWithoutProperties(obj, keys, preservePrototype) {\n keys = Array.isArray(keys) ? keys : [];\n preservePrototype = typeof preservePrototype === 'boolean' ? preservePrototype : false;\n var target = preservePrototype ? Object.create(Object.getPrototypeOf(obj)) : {};\n for (var property in obj) {\n if (keys.indexOf(property) >= 0) {\n continue;\n }\n if (!Object.prototype.hasOwnProperty.call(obj, property)) {\n continue;\n }\n target[property] = obj[property];\n }\n return target;\n },\n /**\n * Safely gets an integer from a string or number\n * @param {String | Number} - input to cast to integer\n * @returns {Number} - Integer representation of input, or 0 if input is not castable to int\n */\n safeParseInt: (val) => {\n if (!val || isNaN(val)) {\n return 0;\n }\n return parseInt(val);\n }\n};\nmodule.exports = utils;\n", "\"use strict\";\nconst { safeParseInt } = require('../utils');\nvar logger = require('../logger');\nvar DEFAULT_STREAMING_THRESHOLD = 100;\nvar utils = {\n streamingThreshold: DEFAULT_STREAMING_THRESHOLD,\n getCurrentTime: function getCurrentTime() {\n return Date.now() / 1000;\n },\n setOrigin: function setOrigin(origin) {\n this.origin = origin;\n },\n setPluginData: function setPluginData(pluginData) {\n this.pluginData = pluginData;\n },\n setSDKData: function setSDKData(sdkData) {\n this.sdkData = sdkData;\n },\n setServiceData: function setServiceData(serviceData) {\n this.serviceData = serviceData;\n },\n /**\n * Overrides the default streaming threshold (100).\n * The threshold represents the maximum number of subsegments on a single segment before\n * the SDK beings to send the completed subsegments out of band of the main segment.\n * Reduce this threshold if you see the 'Segment too large to send' error.\n * @param {number} threshold - The new threshold to use.\n * @memberof AWSXRay\n */\n setStreamingThreshold: function setStreamingThreshold(threshold) {\n if (isFinite(threshold) && threshold >= 0) {\n utils.streamingThreshold = threshold;\n logger.getLogger().debug('Subsegment streaming threshold set to: ' + threshold);\n }\n else {\n logger.getLogger().error('Invalid threshold: ' + threshold + '. Must be a whole number >= 0.');\n }\n },\n getStreamingThreshold: function getStreamingThreshold() {\n return utils.streamingThreshold;\n },\n /**\n * Parses an HTTP response object to return an X-Ray compliant HTTP response object.\n * @param {http.ServerResponse} res\n * @returns {Object} - X-Ray response object to be added to (sub)segment\n */\n getHttpResponseData: (res) => {\n const ret = {};\n if (!res) {\n return ret;\n }\n const status = safeParseInt(res.statusCode);\n if (status !== 0) {\n ret.status = status;\n }\n if (res.headers && res.headers['content-length']) {\n ret.content_length = safeParseInt(res.headers['content-length']);\n }\n return ret;\n }\n};\nmodule.exports = utils;\n", "\"use strict\";\nconst { getHttpResponseData } = require('../segment_utils');\nvar { stripQueryStringFromPath } = require('../../utils');\n/**\n * Represents an outgoing HTTP/HTTPS call.\n * @constructor\n * @param {http.ClientRequest|https.ClientRequest} req - The request object from the HTTP/HTTPS call.\n * @param {http.IncomingMessage|https.IncomingMessage} res - The response object from the HTTP/HTTPS call.\n * @param {boolean} downstreamXRayEnabled - when true, adds a \"traced\": true hint to generated subsegments such that the AWS X-Ray service expects a corresponding segment from the downstream service.\n */\nfunction RemoteRequestData(req, res, downstreamXRayEnabled) {\n this.init(req, res, downstreamXRayEnabled);\n}\nRemoteRequestData.prototype.init = function init(req, res, downstreamXRayEnabled) {\n this.request = {\n url: (req.agent && req.agent.protocol) ? (req.agent.protocol + '//' + (req.host || req.getHeader('host')) + stripQueryStringFromPath(req.path)) : '',\n method: req.method || '',\n };\n if (downstreamXRayEnabled) {\n this.request.traced = true;\n }\n if (res) {\n this.response = getHttpResponseData(res);\n }\n};\nmodule.exports = RemoteRequestData;\n", "\"use strict\";\nvar crypto = require('crypto');\nvar CapturedException = require('./captured_exception');\nvar RemoteRequestData = require('./remote_request_data');\nvar SegmentEmitter = require('../../segment_emitter');\nvar SegmentUtils = require('../segment_utils');\nvar Utils = require('../../utils');\nvar logger = require('../../logger');\n/**\n * Represents a subsegment.\n * @constructor\n * @param {string} name - The name of the subsegment.\n */\nfunction Subsegment(name) {\n this.init(name);\n}\nSubsegment.prototype.init = function init(name) {\n if (typeof name != 'string') {\n throw new Error('Subsegment name must be of type string.');\n }\n this.id = crypto.randomBytes(8).toString('hex');\n this.name = name;\n this.start_time = SegmentUtils.getCurrentTime();\n this.in_progress = true;\n this.counter = 0;\n this.notTraced = false;\n};\n/**\n * Nests a new subsegment to the array of subsegments.\n * @param {string} name - The name of the new subsegment to append.\n * @returns {Subsegment} - The newly created subsegment.\n */\nSubsegment.prototype.addNewSubsegment = function addNewSubsegment(name) {\n const subsegment = new Subsegment(name);\n this.addSubsegment(subsegment);\n return subsegment;\n};\nSubsegment.prototype.addSubsegmentWithoutSampling = function addSubsegmentWithoutSampling(subsegment) {\n this.addSubsegment(subsegment);\n subsegment.notTraced = true;\n};\nSubsegment.prototype.addNewSubsegmentWithoutSampling = function addNewSubsegmentWithoutSampling(name) {\n const subsegment = new Subsegment(name);\n this.addSubsegment(subsegment);\n subsegment.notTraced = true;\n return subsegment;\n};\n/**\n * Adds a subsegment to the array of subsegments.\n * @param {Subsegment} subsegment - The subsegment to append.\n */\nSubsegment.prototype.addSubsegment = function (subsegment) {\n if (!(subsegment instanceof Subsegment)) {\n throw new Error('Failed to add subsegment:' + subsegment + ' to subsegment \"' + this.name +\n '\". Not a subsegment.');\n }\n if (this.subsegments === undefined) {\n this.subsegments = [];\n }\n subsegment.segment = this.segment;\n subsegment.parent = this;\n subsegment.notTraced = subsegment.parent.notTraced;\n if (subsegment.end_time === undefined) {\n this.incrementCounter(subsegment.counter);\n }\n this.subsegments.push(subsegment);\n};\n/**\n * Removes the subsegment from the subsegments array, used in subsegment streaming.\n */\nSubsegment.prototype.removeSubsegment = function removeSubsegment(subsegment) {\n if (!(subsegment instanceof Subsegment)) {\n throw new Error('Failed to remove subsegment:' + subsegment + ' from subsegment \"' + this.name +\n '\". Not a subsegment.');\n }\n if (this.subsegments !== undefined) {\n var index = this.subsegments.indexOf(subsegment);\n if (index >= 0) {\n this.subsegments.splice(index, 1);\n }\n }\n};\n/**\n * Adds a property with associated data into the subsegment.\n * @param {string} name - The name of the property to add.\n * @param {Object} data - The data of the property to add.\n */\nSubsegment.prototype.addAttribute = function addAttribute(name, data) {\n this[name] = data;\n};\n/**\n * Adds a subsegement id to record ordering.\n * @param {string} id - A subsegment id.\n */\nSubsegment.prototype.addPrecursorId = function (id) {\n if (typeof id !== 'string') {\n logger.getLogger().error('Failed to add id:' + id + ' to subsegment ' + this.name +\n '. Precursor Ids must be of type string.');\n }\n if (this.precursor_ids === undefined) {\n this.precursor_ids = [];\n }\n this.precursor_ids.push(id);\n};\n/**\n * Adds a key-value pair that can be queryable through GetTraceSummaries.\n * Only acceptable types are string, float/int and boolean.\n * @param {string} key - The name of key to add.\n * @param {boolean|string|number} value - The value to add for the given key.\n */\nSubsegment.prototype.addAnnotation = function (key, value) {\n if (typeof value !== 'boolean' && typeof value !== 'string' && !isFinite(value)) {\n logger.getLogger().error('Failed to add annotation key: ' + key + ' value: ' + value + ' to subsegment ' +\n this.name + '. Value must be of type string, number or boolean.');\n return;\n }\n if (typeof key !== 'string') {\n logger.getLogger().error('Failed to add annotation key: ' + key + ' value: ' + value + ' to subsegment ' +\n this.name + '. Key must be of type string.');\n return;\n }\n if (this.annotations === undefined) {\n this.annotations = {};\n }\n this.annotations[key] = value;\n};\n/**\n * Adds a key-value pair to the metadata.default attribute when no namespace is given.\n * Metadata is not queryable, but is recorded.\n * @param {string} key - The name of the key to add.\n * @param {object|null} value - The value of the associated key.\n * @param {string} [namespace] - The property name to put the key/value pair under.\n */\nSubsegment.prototype.addMetadata = function (key, value, namespace) {\n if (typeof key !== 'string') {\n logger.getLogger().error('Failed to add metadata key: ' + key + ' value: ' + value + ' to subsegment ' +\n this.name + '. Key must be of type string.');\n return;\n }\n if (namespace && typeof namespace !== 'string') {\n logger.getLogger().error('Failed to add metadata key: ' + key + ' value: ' + value + ' to subsegment ' +\n this.name + '. Namespace must be of type string.');\n return;\n }\n var ns = namespace || 'default';\n if (!this.metadata) {\n this.metadata = {};\n }\n if (!this.metadata[ns]) {\n this.metadata[ns] = {};\n }\n if (ns !== '__proto__') {\n this.metadata[ns][key] = value !== null && value !== undefined ? value : '';\n }\n};\nSubsegment.prototype.addSqlData = function addSqlData(sqlData) {\n this.sql = sqlData;\n};\n/**\n * Adds an error with associated data into the subsegment.\n * To handle propagating errors, the subsegment also sets a copy of the error on the\n * root segment. As the error passes up the execution stack, a reference is created\n * on each subsegment to the originating subsegment.\n * @param {Error|string} err - The error to capture.\n * @param {boolean} [remote] - Flag for whether the exception caught was remote or not.\n */\nSubsegment.prototype.addError = function addError(err, remote) {\n if (err == null || typeof err !== 'object' && typeof (err) !== 'string') {\n logger.getLogger().error('Failed to add error:' + err + ' to subsegment \"' + this.name +\n '\". Not an object or string literal.');\n return;\n }\n this.addFaultFlag();\n if (this.segment && this.segment.exception) {\n if (err === this.segment.exception.ex) {\n this.fault = true;\n this.cause = { id: this.segment.exception.cause, exceptions: [] };\n return;\n }\n delete this.segment.exception;\n }\n if (this.segment) {\n this.segment.exception = {\n ex: err,\n cause: this.id\n };\n }\n else {\n //error, cannot propagate exception if not added to segment\n }\n if (this.cause === undefined) {\n this.cause = {\n working_directory: process.cwd(),\n exceptions: []\n };\n }\n this.cause.exceptions.unshift(new CapturedException(err, remote));\n};\n/**\n * Adds data for an outgoing HTTP/HTTPS call.\n * @param {http.ClientRequest/https.ClientRequest} req - The request object from the HTTP/HTTPS call.\n * @param {http.IncomingMessage/https.IncomingMessage} res - The response object from the HTTP/HTTPS call.\n * @param {boolean} downstreamXRayEnabled - when true, adds a \"traced\": true hint to generated subsegments such that the AWS X-Ray service expects a corresponding segment from the downstream service.\n */\nSubsegment.prototype.addRemoteRequestData = function addRemoteRequestData(req, res, downstreamXRayEnabled) {\n this.http = new RemoteRequestData(req, res, downstreamXRayEnabled);\n if ('traced' in this.http.request) {\n this.traced = this.http.request.traced;\n delete this.http.request.traced;\n }\n};\n/**\n * Adds fault flag to the subsegment.\n */\nSubsegment.prototype.addFaultFlag = function addFaultFlag() {\n this.fault = true;\n};\n/**\n * Adds error flag to the subsegment.\n */\nSubsegment.prototype.addErrorFlag = function addErrorFlag() {\n this.error = true;\n};\n/**\n * Adds throttle flag to the subsegment.\n */\nSubsegment.prototype.addThrottleFlag = function addThrottleFlag() {\n this.throttle = true;\n};\n/**\n * Closes the current subsegment. This automatically captures any exceptions and sets the end time.\n * @param {Error|string} [err] - The error to capture.\n * @param {boolean} [remote] - Flag for whether the exception caught was remote or not.\n */\nSubsegment.prototype.close = function close(err, remote) {\n var root = this.segment;\n this.end_time = SegmentUtils.getCurrentTime();\n delete this.in_progress;\n if (err) {\n this.addError(err, remote);\n }\n if (this.parent) {\n this.parent.decrementCounter();\n }\n if (root && root.counter > SegmentUtils.getStreamingThreshold()) {\n if (this.streamSubsegments() && this.parent) {\n this.parent.removeSubsegment(this);\n }\n }\n};\n/**\n * Each subsegment holds a counter of open subsegments. This increments\n * the counter such that it can be called from a child and propagate up.\n * @param {Number} [additional] - An additional amount to increment. Used when adding subsegment trees.\n */\nSubsegment.prototype.incrementCounter = function incrementCounter(additional) {\n this.counter = additional ? this.counter + additional + 1 : this.counter + 1;\n if (this.parent) {\n this.parent.incrementCounter(additional);\n }\n};\n/**\n * Each subsegment holds a counter of its open subsegments. This decrements\n * the counter such that it can be called from a child and propagate up.\n */\nSubsegment.prototype.decrementCounter = function decrementCounter() {\n this.counter--;\n if (this.parent) {\n this.parent.decrementCounter();\n }\n};\n/**\n * Returns a boolean indicating whether or not the subsegment has been closed.\n * @returns {boolean} - Returns true if the subsegment is closed.\n */\nSubsegment.prototype.isClosed = function isClosed() {\n return !this.in_progress;\n};\n/**\n * Sends the subsegment to the daemon.\n */\nSubsegment.prototype.flush = function flush() {\n if (!this.parent || !this.segment) {\n logger.getLogger().error('Failed to flush subsegment: ' + this.name + '. Subsegment must be added ' +\n 'to a segment chain to flush.');\n return;\n }\n if (this.segment.trace_id) {\n if (this.segment.notTraced !== true && !this.notTraced) {\n SegmentEmitter.send(this);\n }\n else {\n logger.getLogger().debug('Ignoring flush on subsegment ' + this.id + '. Associated segment is marked as not sampled.');\n }\n }\n else {\n logger.getLogger().debug('Ignoring flush on subsegment ' + this.id + '. Associated segment is missing a trace ID.');\n }\n};\n/**\n * Returns true if the subsegment was streamed in its entirety\n */\nSubsegment.prototype.streamSubsegments = function streamSubsegments() {\n if (this.isClosed() && this.counter <= 0) {\n this.flush();\n return true;\n }\n else if (this.subsegments && this.subsegments.length > 0) {\n var open = [];\n this.subsegments.forEach(function (child) {\n if (!child.streamSubsegments()) {\n open.push(child);\n }\n });\n this.subsegments = open;\n }\n};\n/**\n * Returns the formatted, trimmed subsegment JSON string to send to the daemon.\n */\nSubsegment.prototype.format = function format() {\n this.type = 'subsegment';\n if (this.parent) {\n this.parent_id = this.parent.id;\n }\n if (this.segment) {\n this.trace_id = this.segment.trace_id;\n }\n return JSON.stringify(this);\n};\n/**\n * Returns the formatted subsegment JSON string.\n */\nSubsegment.prototype.toString = function toString() {\n return JSON.stringify(this);\n};\nSubsegment.prototype.toJSON = function toJSON() {\n var ignore = ['segment', 'parent', 'counter'];\n if (this.subsegments == null || this.subsegments.length === 0) {\n ignore.push('subsegments');\n }\n var thisCopy = Utils.objectWithoutProperties(this, ignore, false);\n return thisCopy;\n};\nmodule.exports = Subsegment;\n", "\"use strict\";\nvar crypto = require('crypto');\nvar CapturedException = require('./attributes/captured_exception');\nvar SegmentEmitter = require('../segment_emitter');\nvar SegmentUtils = require('./segment_utils');\nvar Subsegment = require('./attributes/subsegment');\nvar TraceID = require('./attributes/trace_id');\nvar Utils = require('../utils');\nvar logger = require('../logger');\n/**\n * Represents a segment.\n * @constructor\n * @param {string} name - The name of the subsegment.\n * @param {string} [rootId] - The trace ID of the spawning parent, included in the 'X-Amzn-Trace-Id' header of the incoming request. If one is not supplied, it will be generated.\n * @param {string} [parentId] - The sub/segment ID of the spawning parent, included in the 'X-Amzn-Trace-Id' header of the incoming request.\n */\nfunction Segment(name, rootId, parentId) {\n this.init(name, rootId, parentId);\n}\nSegment.prototype.init = function init(name, rootId, parentId) {\n if (typeof name != 'string') {\n throw new Error('Segment name must be of type string.');\n }\n // Validate the Trace ID\n var traceId;\n if (rootId && typeof rootId == 'string') {\n traceId = TraceID.FromString(rootId);\n }\n else {\n traceId = new TraceID();\n }\n var id = crypto.randomBytes(8).toString('hex');\n var startTime = SegmentUtils.getCurrentTime();\n this.trace_id = traceId.toString();\n this.id = id;\n this.start_time = startTime;\n this.name = name || '';\n this.in_progress = true;\n this.counter = 0;\n if (parentId) {\n this.parent_id = parentId;\n }\n if (SegmentUtils.serviceData) {\n this.setServiceData(SegmentUtils.serviceData);\n }\n if (SegmentUtils.pluginData) {\n this.addPluginData(SegmentUtils.pluginData);\n }\n if (SegmentUtils.origin) {\n this.origin = SegmentUtils.origin;\n }\n if (SegmentUtils.sdkData) {\n this.setSDKData(SegmentUtils.sdkData);\n }\n};\n/**\n * Adds incoming request data to the http block of the segment.\n * @param {IncomingRequestData} data - The data of the property to add.\n */\nSegment.prototype.addIncomingRequestData = function addIncomingRequestData(data) {\n this.http = data;\n};\n/**\n * Adds a key-value pair that can be queryable through GetTraceSummaries.\n * Only acceptable types are string, float/int and boolean.\n * @param {string} key - The name of key to add.\n * @param {boolean|string|number} value - The value to add for the given key.\n */\nSegment.prototype.addAnnotation = function addAnnotation(key, value) {\n if (typeof value !== 'boolean' && typeof value !== 'string' && !isFinite(value)) {\n logger.getLogger().error('Failed to add annotation key: ' + key + ' value: ' + value + ' to subsegment ' +\n this.name + '. Value must be of type string, number or boolean.');\n return;\n }\n if (typeof key !== 'string') {\n logger.getLogger().error('Failed to add annotation key: ' + key + ' value: ' + value + ' to subsegment ' +\n this.name + '. Key must be of type string.');\n return;\n }\n if (this.annotations === undefined) {\n this.annotations = {};\n }\n this.annotations[key] = value;\n};\n/**\n * Adds a User ID that can be queried from the X-Ray console. User ID\n * must be a string.\n * @param {string} user - The ID of the user corresponding to this segment\n */\nSegment.prototype.setUser = function (user) {\n if (typeof user !== 'string') {\n logger.getLogger().error('Set user: ' + user + ' failed. User IDs must be of type string.');\n }\n this.user = user;\n};\n/**\n * Adds a key-value pair to the metadata.default attribute when no namespace is given.\n * Metadata is not queryable, but is recorded.\n * @param {string} key - The name of the key to add.\n * @param {object|null} value - The value of the associated key.\n * @param {string} [namespace] - The property name to put the key/value pair under.\n */\nSegment.prototype.addMetadata = function (key, value, namespace) {\n if (typeof key !== 'string') {\n logger.getLogger().error('Failed to add metadata key: ' + key + ' value: ' + value + ' to segment ' +\n this.name + '. Key must be of type string.');\n return;\n }\n if (namespace && typeof namespace !== 'string') {\n logger.getLogger().error('Failed to add metadata key: ' + key + ' value: ' + value + ' to segment ' +\n this.name + '. Namespace must be of type string.');\n return;\n }\n var ns = namespace || 'default';\n if (!this.metadata) {\n this.metadata = {};\n }\n if (!this.metadata[ns]) {\n this.metadata[ns] = {};\n }\n if (ns !== '__proto__') {\n this.metadata[ns][key] = value !== null && value !== undefined ? value : '';\n }\n};\n/**\n * Adds data about the AWS X-Ray SDK onto the segment.\n * @param {Object} data - Object that contains the version of the SDK, and other information.\n */\nSegment.prototype.setSDKData = function setSDKData(data) {\n if (!data) {\n logger.getLogger().error('Add SDK data: ' + data + ' failed.' +\n 'Must not be empty.');\n return;\n }\n if (!this.aws) {\n this.aws = {};\n }\n this.aws.xray = data;\n};\nSegment.prototype.setMatchedSamplingRule = function setMatchedSamplingRule(ruleName) {\n if (this.aws) {\n this.aws = JSON.parse(JSON.stringify(this.aws));\n }\n if (this.aws && this.aws['xray']) {\n this.aws.xray['rule_name'] = ruleName;\n }\n else {\n this.aws = { xray: { 'rule_name': ruleName } };\n }\n};\n/**\n * Adds data about the service into the segment.\n * @param {Object} data - Object that contains the version of the application, and other information.\n */\nSegment.prototype.setServiceData = function setServiceData(data) {\n if (!data) {\n logger.getLogger().error('Add service data: ' + data + ' failed.' +\n 'Must not be empty.');\n return;\n }\n this.service = data;\n};\n/**\n * Adds a service with associated version data into the segment.\n * @param {Object} data - The associated AWS data.\n */\nSegment.prototype.addPluginData = function addPluginData(data) {\n if (this.aws === undefined) {\n this.aws = {};\n }\n Object.assign(this.aws, data);\n};\n/**\n * Adds a new subsegment to the array of subsegments.\n * @param {string} name - The name of the new subsegment to append.\n */\nSegment.prototype.addNewSubsegment = function addNewSubsegment(name) {\n var subsegment = new Subsegment(name);\n this.addSubsegment(subsegment);\n return subsegment;\n};\nSegment.prototype.addSubsegmentWithoutSampling = function addSubsegmentWithoutSampling(subsegment) {\n this.addSubsegment(subsegment);\n subsegment.notTraced = true;\n};\nSegment.prototype.addNewSubsegmentWithoutSampling = function addNewSubsegmentWithoutSampling(name) {\n const subsegment = new Subsegment(name);\n this.addSubsegment(subsegment);\n subsegment.notTraced = true;\n return subsegment;\n};\n/**\n * Adds a subsegment to the array of subsegments.\n * @param {Subsegment} subsegment - The subsegment to append.\n */\nSegment.prototype.addSubsegment = function addSubsegment(subsegment) {\n if (!(subsegment instanceof Subsegment)) {\n throw new Error('Cannot add subsegment: ' + subsegment + '. Not a subsegment.');\n }\n if (this.subsegments === undefined) {\n this.subsegments = [];\n }\n subsegment.segment = this;\n subsegment.parent = this;\n subsegment.notTraced = subsegment.parent.notTraced;\n this.subsegments.push(subsegment);\n if (!subsegment.end_time) {\n this.incrementCounter(subsegment.counter);\n }\n};\n/**\n * Removes the subsegment from the subsegments array, used in subsegment streaming.\n */\nSegment.prototype.removeSubsegment = function removeSubsegment(subsegment) {\n if (!(subsegment instanceof Subsegment)) {\n throw new Error('Failed to remove subsegment:' + subsegment + ' from subsegment \"' + this.name +\n '\". Not a subsegment.');\n }\n if (this.subsegments !== undefined) {\n var index = this.subsegments.indexOf(subsegment);\n if (index >= 0) {\n this.subsegments.splice(index, 1);\n }\n }\n};\n/**\n * Adds error data into the segment.\n * @param {Error|string} err - The error to capture.\n * @param {boolean} [remote] - Flag for whether the exception caught was remote or not.\n */\nSegment.prototype.addError = function addError(err, remote) {\n if (err == null || typeof err !== 'object' && typeof (err) !== 'string') {\n logger.getLogger().error('Failed to add error:' + err + ' to subsegment \"' + this.name +\n '\". Not an object or string literal.');\n return;\n }\n this.addFaultFlag();\n if (this.exception) {\n if (err === this.exception.ex) {\n this.cause = { id: this.exception.cause };\n delete this.exception;\n return;\n }\n delete this.exception;\n }\n if (this.cause === undefined) {\n this.cause = {\n working_directory: process.cwd(),\n exceptions: []\n };\n }\n this.cause.exceptions.push(new CapturedException(err, remote));\n};\n/**\n * Adds fault flag to the subsegment.\n */\nSegment.prototype.addFaultFlag = function addFaultFlag() {\n this.fault = true;\n};\n/**\n * Adds error flag to the subsegment.\n */\nSegment.prototype.addErrorFlag = function addErrorFlag() {\n this.error = true;\n};\n/**\n * Adds throttle flag to the subsegment.\n */\nSegment.prototype.addThrottleFlag = function addThrottleFlag() {\n this.throttle = true;\n};\n/**\n * Returns a boolean indicating whether or not the segment has been closed.\n * @returns {boolean} - Returns true if the subsegment is closed.\n */\nSegment.prototype.isClosed = function isClosed() {\n return !this.in_progress;\n};\n/**\n * Each segment holds a counter of open subsegments. This increments the counter.\n * @param {Number} [additional] - An additional amount to increment. Used when adding subsegment trees.\n */\nSegment.prototype.incrementCounter = function incrementCounter(additional) {\n this.counter = additional ? this.counter + additional + 1 : this.counter + 1;\n if (this.counter > SegmentUtils.streamingThreshold && this.subsegments && this.subsegments.length > 0) {\n var open = [];\n this.subsegments.forEach(function (child) {\n if (!child.streamSubsegments()) {\n open.push(child);\n }\n });\n this.subsegments = open;\n }\n};\n/**\n * Each segment holds a counter of open subsegments. This decrements\n * the counter such that it can be called from a child and propagate up.\n */\nSegment.prototype.decrementCounter = function decrementCounter() {\n this.counter--;\n if (this.counter <= 0 && this.isClosed()) {\n this.flush();\n }\n};\n/**\n * Closes the current segment. This automatically sets the end time.\n * @param {Error|string} [err] - The error to capture.\n * @param {boolean} [remote] - Flag for whether the exception caught was remote or not.\n */\nSegment.prototype.close = function (err, remote) {\n if (!this.end_time) {\n this.end_time = SegmentUtils.getCurrentTime();\n }\n if (err !== undefined) {\n this.addError(err, remote);\n }\n delete this.in_progress;\n delete this.exception;\n if (this.counter <= 0) {\n this.flush();\n }\n};\n/**\n * Sends the segment to the daemon.\n */\nSegment.prototype.flush = function flush() {\n if (this.notTraced !== true) {\n delete this.exception;\n var thisCopy = Utils.objectWithoutProperties(this, ['counter', 'notTraced'], true);\n SegmentEmitter.send(thisCopy);\n }\n};\nSegment.prototype.format = function format() {\n var ignore = ['segment', 'parent', 'counter'];\n if (this.subsegments == null || this.subsegments.length === 0) {\n ignore.push('subsegments');\n }\n var thisCopy = Utils.objectWithoutProperties(this, ignore, false);\n return JSON.stringify(thisCopy);\n};\nSegment.prototype.toString = function toString() {\n return JSON.stringify(this);\n};\nmodule.exports = Segment;\n", "\"use strict\";\n/**\n * @module context_utils\n */\nvar cls = require('cls-hooked/context');\nvar logger = require('./logger');\nvar Segment = require('./segments/segment');\nvar Subsegment = require('./segments/attributes/subsegment');\nvar cls_mode = true;\nvar NAMESPACE = 'AWSXRay';\nvar SEGMENT = 'segment';\nvar contextOverride = false;\nvar contextUtils = {\n CONTEXT_MISSING_STRATEGY: {\n RUNTIME_ERROR: {\n contextMissing: function contextMissingRuntimeError(message) {\n throw new Error(message);\n }\n },\n LOG_ERROR: {\n contextMissing: function contextMissingLogError(message) {\n var err = new Error(message);\n logger.getLogger().error(err.stack);\n }\n },\n IGNORE_ERROR: {\n contextMissing: function contextMissingIgnoreError() {\n }\n }\n },\n contextMissingStrategy: {},\n /**\n * Resolves the segment or subsegment given manual mode and params on the call required.\n * @param [Segment|Subsegment] segment - The segment manually provided via params.XraySegment, if provided.\n * @returns {Segment|Subsegment}\n * @alias module:context_utils.resolveManualSegmentParams\n */\n resolveManualSegmentParams: function resolveManualSegmentParams(params) {\n if (params && !contextUtils.isAutomaticMode()) {\n var xraySegment = params.XRaySegment || params.XraySegment;\n var segment = params.Segment;\n var found = null;\n if (xraySegment && (xraySegment instanceof Segment || xraySegment instanceof Subsegment)) {\n found = xraySegment;\n delete params.XRaySegment;\n delete params.XraySegment;\n }\n else if (segment && (segment instanceof Segment || segment instanceof Subsegment)) {\n found = segment;\n delete params.Segment;\n }\n return found;\n }\n },\n /**\n * Gets current CLS namespace for X-Ray SDK or creates one if absent.\n * @returns {Namespace}\n * @alias module:context_utils.getNamespace\n */\n getNamespace: function getNamespace() {\n return cls.getNamespace(NAMESPACE) || cls.createNamespace(NAMESPACE);\n },\n /**\n * Resolves the segment or subsegment given manual or automatic mode.\n * @param [Segment|Subsegment] segment - The segment manually provided, if provided.\n * @returns {Segment|Subsegment}\n * @alias module:context_utils.resolveSegment\n */\n resolveSegment: function resolveSegment(segment) {\n if (cls_mode) {\n return this.getSegment();\n }\n else if (segment && !cls_mode) {\n return segment;\n }\n else if (!segment && !cls_mode) {\n contextUtils.contextMissingStrategy.contextMissing('No sub/segment specified. A sub/segment must be provided for manual mode.');\n }\n },\n /**\n * Returns the current segment or subsegment. For use with in automatic mode only.\n * @returns {Segment|Subsegment}\n * @alias module:context_utils.getSegment\n */\n getSegment: function getSegment() {\n if (cls_mode) {\n var segment = contextUtils.getNamespace(NAMESPACE).get(SEGMENT);\n if (!segment) {\n contextUtils.contextMissingStrategy.contextMissing('Failed to get the current sub/segment from the context.');\n }\n else if (segment instanceof Segment && process.env.LAMBDA_TASK_ROOT && segment.facade == true) {\n segment.resolveLambdaTraceData();\n }\n return segment;\n }\n else {\n contextUtils.contextMissingStrategy.contextMissing('Cannot get sub/segment from context. Not supported in manual mode.');\n }\n },\n /**\n * Sets the current segment or subsegment. For use with in automatic mode only.\n * @param [Segment|Subsegment] segment - The sub/segment to set.\n * @returns {Segment|Subsegment}\n * @alias module:context_utils.setSegment\n */\n setSegment: function setSegment(segment) {\n if (cls_mode) {\n if (!contextUtils.getNamespace(NAMESPACE).set(SEGMENT, segment)) {\n logger.getLogger().warn('Failed to set the current sub/segment on the context.');\n }\n }\n else {\n contextUtils.contextMissingStrategy.contextMissing('Cannot set sub/segment on context. Not supported in manual mode.');\n }\n },\n /**\n * Returns true if in automatic mode, otherwise false.\n * @returns {Segment|Subsegment}\n * @alias module:context_utils.isAutomaticMode\n */\n isAutomaticMode: function isAutomaticMode() {\n return cls_mode;\n },\n /**\n * Enables automatic mode. Automatic mode uses 'cls-hooked'.\n * @see https://github.com/jeff-lewis/cls-hooked\n * @alias module:context_utils.enableAutomaticMode\n */\n enableAutomaticMode: function enableAutomaticMode() {\n cls_mode = true;\n contextUtils.getNamespace(NAMESPACE);\n logger.getLogger().debug('Overriding AWS X-Ray SDK mode. Set to automatic mode.');\n },\n /**\n * Disables automatic mode. Current segment or subsegment then must be passed manually\n * via the parent optional on captureFunc, captureAsyncFunc etc.\n * @alias module:context_utils.enableManualMode\n */\n enableManualMode: function enableManualMode() {\n cls_mode = false;\n if (cls.getNamespace(NAMESPACE)) {\n cls.destroyNamespace(NAMESPACE);\n }\n logger.getLogger().debug('Overriding AWS X-Ray SDK mode. Set to manual mode.');\n },\n /**\n * Sets the context missing strategy if no context missing strategy is set using the environment variable with\n * key AWS_XRAY_CONTEXT_MISSING. The context missing strategy's contextMissing function will be called whenever\n * trace context is not found.\n * @param {string|function} strategy - The strategy to set. Valid string values are 'LOG_ERROR' and 'RUNTIME_ERROR'.\n * Alternatively, a custom function can be supplied, which takes a error message string.\n */\n setContextMissingStrategy: function setContextMissingStrategy(strategy) {\n if (!contextOverride) {\n if (typeof strategy === 'string') {\n var lookupStrategy = contextUtils.CONTEXT_MISSING_STRATEGY[strategy.toUpperCase()];\n if (lookupStrategy) {\n contextUtils.contextMissingStrategy.contextMissing = lookupStrategy.contextMissing;\n if (process.env.AWS_XRAY_CONTEXT_MISSING) {\n logger.getLogger().debug('AWS_XRAY_CONTEXT_MISSING is set. Configured context missing strategy to ' +\n process.env.AWS_XRAY_CONTEXT_MISSING + '.');\n }\n else {\n logger.getLogger().debug('Configured context missing strategy to: ' + strategy);\n }\n }\n else {\n throw new Error('Invalid context missing strategy: ' + strategy + '. Valid values are ' +\n Object.keys(contextUtils.CONTEXT_MISSING_STRATEGY) + '.');\n }\n }\n else if (typeof strategy === 'function') {\n contextUtils.contextMissingStrategy.contextMissing = strategy;\n logger.getLogger().info('Configured custom context missing strategy to function: ' + strategy.name);\n }\n else {\n throw new Error('Context missing strategy must be either a string or a custom function.');\n }\n }\n else {\n logger.getLogger().warn('Ignoring call to setContextMissingStrategy as AWS_XRAY_CONTEXT_MISSING is set. ' +\n 'The current context missing strategy will not be changed.');\n }\n }\n};\nif (process.env.AWS_XRAY_MANUAL_MODE) {\n cls_mode = false;\n logger.getLogger().debug('Starting the AWS X-Ray SDK in manual mode.');\n}\nelse {\n cls.createNamespace(NAMESPACE);\n logger.getLogger().debug('Starting the AWS X-Ray SDK in automatic mode (default).');\n}\nif (process.env.AWS_XRAY_CONTEXT_MISSING) {\n contextUtils.setContextMissingStrategy(process.env.AWS_XRAY_CONTEXT_MISSING);\n contextOverride = true;\n}\nelse {\n contextUtils.contextMissingStrategy.contextMissing = contextUtils.CONTEXT_MISSING_STRATEGY.LOG_ERROR.contextMissing;\n logger.getLogger().debug('Using default context missing strategy: LOG_ERROR');\n}\nmodule.exports = contextUtils;\n", "\"use strict\";\nvar { getHttpResponseData } = require('../segments/segment_utils');\n/**\n * Represents an incoming HTTP/HTTPS call.\n * @constructor\n * @param {http.IncomingMessage|https.IncomingMessage} req - The request object from the HTTP/HTTPS call.\n */\nfunction IncomingRequestData(req) {\n this.init(req);\n}\nIncomingRequestData.prototype.init = function init(req) {\n var forwarded = !!req.headers['x-forwarded-for'];\n var url;\n if (req.connection) {\n url = ((req.connection.secure || req.connection.encrypted) ? 'https://' : 'http://') +\n ((req.headers['host'] || '') + (req.url || ''));\n }\n this.request = {\n method: req.method || '',\n user_agent: req.headers['user-agent'] || '',\n client_ip: getClientIp(req) || '',\n url: url || '',\n };\n if (forwarded) {\n this.request.x_forwarded_for = forwarded;\n }\n};\nvar getClientIp = function getClientIp(req) {\n var clientIp;\n if (req.headers['x-forwarded-for']) {\n clientIp = (req.headers['x-forwarded-for'] || '').split(',')[0];\n }\n else if (req.connection && req.connection.remoteAddress) {\n clientIp = req.connection.remoteAddress;\n }\n else if (req.socket && req.socket.remoteAddress) {\n clientIp = req.socket.remoteAddress;\n }\n else if (req.connection && req.connection.socket && req.connection.socket.remoteAddress) {\n clientIp = req.connection.socket.remoteAddress;\n }\n return clientIp;\n};\n/**\n * Closes the local and automatically captures the response data.\n * @param {http.ServerResponse|https.ServerResponse} res - The response object from the HTTP/HTTPS call.\n */\nIncomingRequestData.prototype.close = function close(res) {\n this.response = getHttpResponseData(res);\n};\nmodule.exports = IncomingRequestData;\n", "\"use strict\";\n/**\n * Represents a LocalReservoir object that keeps track of the number of traces per second sampled and\n * the fixed rate for a given sampling rule defined locally.\n * It also decides if a given trace should be sampled or not based on the state of current second.\n * @constructor\n * @param {number} fixedTarget - An integer value to specify the maximum number of traces per second to sample.\n * @param {number} fallbackRate - A value between 0 and 1 indicating the sampling rate after the maximum traces per second has been hit.\n */\nfunction LocalReservoir(fixedTarget, fallbackRate) {\n this.init(fixedTarget, fallbackRate);\n}\nLocalReservoir.prototype.init = function init(fixedTarget, fallbackRate) {\n this.usedThisSecond = 0;\n if (typeof fixedTarget === 'number' && fixedTarget % 1 === 0 && fixedTarget >= 0) {\n this.fixedTarget = fixedTarget;\n }\n else {\n throw new Error('Error in sampling file. Rule attribute \"fixed_target\" must be a non-negative integer.');\n }\n if (typeof fallbackRate === 'number' && fallbackRate >= 0 && fallbackRate <= 1) {\n this.fallbackRate = fallbackRate;\n }\n else {\n throw new Error('Error in sampling file. Rule attribute \"rate\" must be a number between 0 and 1 inclusive.');\n }\n};\nLocalReservoir.prototype.isSampled = function isSampled() {\n var now = Math.round(new Date().getTime() / 1000);\n if (now !== this.thisSecond) {\n this.usedThisSecond = 0;\n this.thisSecond = now;\n }\n if (this.usedThisSecond >= this.fixedTarget) {\n return Math.random() < this.fallbackRate;\n }\n this.usedThisSecond++;\n return true;\n};\nmodule.exports = LocalReservoir;\n", "{\n \"default\": {\n \"fixed_target\": 1,\n \"rate\": 0.05\n },\n \"version\": 2\n}\n", "\"use strict\";\nvar fs = require('fs');\nvar LocalReservoir = require('./local_reservoir');\nvar Utils = require('../../utils');\nvar defaultRules = require('../../resources/default_sampling_rules.json');\nvar logger = require('../../logger');\n/**\n * The local sampler used to make sampling decisions when the decisions are absent in the incoming requests\n * and the default sampler needs to fall back on local rules. It will also be the primary sampler\n * if the default sampler is disabled.\n * @module LocalSampler\n */\nvar LocalSampler = {\n /**\n * Makes a sample decision based on the sample request.\n * @param {object} sampleRequest - Contains information for rules matching.\n * @module LocalSampler\n * @function shouldSample\n */\n shouldSample: function shouldSample(sampleRequest) {\n var host = sampleRequest.host;\n var httpMethod = sampleRequest.httpMethod;\n var urlPath = sampleRequest.urlPath;\n var formatted = '{ http_method: ' + httpMethod + ', host: ' + host + ', url_path: ' + urlPath + ' }';\n var matched;\n this.rules.some(function (rule) {\n // Any null parameters provided will be considered an implicit match.\n if (rule.default || (host == null || (Utils.wildcardMatch(rule.host, host))\n && (httpMethod == null || Utils.wildcardMatch(rule.http_method, httpMethod))\n && (urlPath == null || Utils.wildcardMatch(rule.url_path, urlPath)))) {\n matched = rule.reservoir;\n logger.getLogger().debug('Local sampling rule match found for ' + formatted + '. Matched ' + (rule.default ?\n 'default' : '{ http_method: ' + rule.http_method + ', host: ' + rule.host + ', url_path: ' +\n rule.url_path + ' }') + '. Using fixed_target: ' + matched.fixedTarget + ' and rate: ' + matched.fallbackRate + '.');\n return true;\n }\n });\n if (matched) {\n return matched.isSampled();\n }\n else {\n logger.getLogger().debug('No sampling rule matched for ' + formatted);\n return false;\n }\n },\n /**\n * Set local rules for making sampling decisions.\n * @module LocalSampler\n * @function setLocalRules\n */\n setLocalRules: function setLocalRules(source) {\n if (source) {\n if (typeof source === 'string') {\n logger.getLogger().info('Using custom sampling rules file: ' + source);\n this.rules = loadRulesConfig(JSON.parse(fs.readFileSync(source, 'utf8')));\n }\n else {\n logger.getLogger().info('Using custom sampling rules source.');\n this.rules = loadRulesConfig(source);\n }\n }\n else {\n this.rules = parseRulesConfig(defaultRules);\n }\n }\n};\nvar loadRulesConfig = function loadRulesConfig(config) {\n if (!config.version) {\n throw new Error('Error in sampling file. Missing \"version\" attribute.');\n }\n if (config.version === 1 || config.version === 2) {\n return parseRulesConfig(config);\n }\n else {\n throw new Error('Error in sampling file. Unknown version \"' + config.version + '\".');\n }\n};\nvar parseRulesConfig = function parseRulesConfig(config) {\n var defaultRule;\n var rules = [];\n if (config.default) {\n var missing = [];\n for (var key in config.default) {\n if (key !== 'fixed_target' && key !== 'rate') {\n throw new Error('Error in sampling file. Invalid attribute for default: ' + key +\n '. Valid attributes for default are \"fixed_target\" and \"rate\".');\n }\n else if (typeof config.default[key] !== 'number') {\n throw new Error('Error in sampling file. Default ' + key + ' must be a number.');\n }\n }\n if (typeof config.default.fixed_target === 'undefined') {\n missing.push('fixed_target');\n }\n if (typeof config.default.rate === 'undefined') {\n missing.push('rate');\n }\n if (missing.length !== 0) {\n throw new Error('Error in sampling file. Missing required attributes for default: ' + missing + '.');\n }\n defaultRule = { default: true, reservoir: new LocalReservoir(config.default.fixed_target, config.default.rate) };\n }\n else {\n throw new Error('Error in sampling file. Expecting \"default\" object to be defined with attributes \"fixed_target\" and \"rate\".');\n }\n if (Array.isArray(config.rules)) {\n config.rules.forEach(function (rawRule) {\n var params = {};\n var required;\n if (config.version === 2) {\n required = { host: 1, http_method: 1, url_path: 1, fixed_target: 1, rate: 1 };\n }\n if (config.version === 1) {\n required = { service_name: 1, http_method: 1, url_path: 1, fixed_target: 1, rate: 1 };\n }\n for (var key in rawRule) {\n var value = rawRule[key];\n if (!required[key] && key != 'description') {\n throw new Error('Error in sampling file. Rule ' + JSON.stringify(rawRule) + ' has invalid attribute: ' + key + '.');\n }\n else if (key != 'description' && !value && value !== 0) {\n throw new Error('Error in sampling file. Rule ' + JSON.stringify(rawRule) + ' attribute \"' + key + '\" has invalid value: ' + value + '.');\n }\n else {\n if (config.version === 2) {\n params[key] = value;\n }\n if (config.version === 1 && key === 'service_name') {\n params['host'] = value;\n }\n else {\n params[key] = value;\n }\n delete required[key];\n }\n }\n if (Object.keys(required).length !== 0 && required.constructor === Object) {\n throw new Error('Error in sampling file. Rule ' + JSON.stringify(rawRule) + ' is missing required attributes: ' + Object.keys(required) + '.');\n }\n var rule = params;\n rule.reservoir = new LocalReservoir(rawRule.fixed_target, rawRule.rate);\n rules.push(rule);\n });\n }\n rules.push(defaultRule);\n return rules;\n};\nLocalSampler.setLocalRules();\nmodule.exports = LocalSampler;\n", "\"use strict\";\n/**\n * Represents a Reservoir object that keeps track of the number of traces per second sampled and\n * the fixed rate for a given sampling rule. This information is fetched from X-Ray serivce.\n * It decides if a given trace should be borrowed or sampled or not sampled based on the state of current second.\n * @constructor\n */\nfunction Reservoir() {\n this.init();\n}\nReservoir.prototype.init = function init() {\n this.quota = null;\n this.TTL = null;\n this.takenThisSec = 0;\n this.borrowedThisSec = 0;\n this.reportInterval = 1;\n this.reportElapsed = 0;\n};\nReservoir.prototype.borrowOrTake = function borrowOrTake(now, canBorrow) {\n this.adjustThisSec(now);\n // Don't borrow if the quota is available and fresh.\n if (this.quota >= 0 && this.TTL >= now) {\n if (this.takenThisSec >= this.quota) {\n return false;\n }\n this.takenThisSec++;\n return 'take';\n }\n // Otherwise try to borrow if the quota is not present or expired.\n if (canBorrow) {\n if (this.borrowedThisSec >= 1) {\n return false;\n }\n this.borrowedThisSec++;\n return 'borrow';\n }\n};\nReservoir.prototype.adjustThisSec = function adjustThisSec(now) {\n if (now !== this.thisSec) {\n this.takenThisSec = 0;\n this.borrowedThisSec = 0;\n this.thisSec = now;\n }\n};\nReservoir.prototype.loadNewQuota = function loadNewQuota(quota, TTL, interval) {\n if (quota) {\n this.quota = quota;\n }\n if (TTL) {\n this.TTL = TTL;\n }\n if (interval) {\n this.reportInterval = interval / 10;\n } // Report interval is always time of 10.\n};\nReservoir.prototype.timeToReport = function timeToReport() {\n if (this.reportElapsed + 1 >= this.reportInterval) {\n this.reportElapsed = 0;\n return true;\n }\n else {\n this.reportElapsed += 1;\n return false;\n }\n};\nmodule.exports = Reservoir;\n", "\"use strict\";\nvar Utils = require('../../utils');\nvar Reservoir = require('./reservoir');\n/**\n * The data model for a sampling rule defined using X-Ray API CreateSamplingRules.\n * It should be only instantiated directly from the X-Ray API response.\n * @constructor\n */\nfunction SamplingRule(name, priority, rate, reservoirSize, host, httpMethod, urlPath, serviceName, serviceType) {\n this.init(name, priority, rate, reservoirSize, host, httpMethod, urlPath, serviceName, serviceType);\n}\nSamplingRule.prototype.init = function init(name, priority, rate, reservoirSize, host, httpMethod, urlPath, serviceName, serviceType) {\n this.name = name;\n this.priority = priority;\n this.rate = rate;\n this.host = host;\n this.httpMethod = httpMethod;\n this.urlPath = urlPath;\n this.serviceName = serviceName;\n this.serviceType = serviceType;\n this.reservoir = new Reservoir();\n this.borrow = !!reservoirSize;\n this.resetStatistics();\n};\nSamplingRule.prototype.match = function match(sampleRequest) {\n var host = sampleRequest.host;\n var httpMethod = sampleRequest.httpMethod;\n var serviceName = sampleRequest.serviceName;\n var urlPath = sampleRequest.urlPath;\n var serviceType = sampleRequest.serviceType;\n return this.isDefault() || (!host || Utils.wildcardMatch(this.host, host))\n && (!httpMethod || Utils.wildcardMatch(this.httpMethod, httpMethod))\n && (!serviceName || Utils.wildcardMatch(this.serviceName, serviceName))\n && (!urlPath || Utils.wildcardMatch(this.urlPath, urlPath))\n && (!serviceType || Utils.wildcardMatch(this.serviceType, serviceType));\n};\nSamplingRule.prototype.snapshotStatistics = function snapshotStatistics() {\n var statistics = {\n requestCount: this.requestCount,\n borrowCount: this.borrowCount,\n sampledCount: this.sampledCount\n };\n this.resetStatistics();\n return statistics;\n};\nSamplingRule.prototype.merge = function merge(rule) {\n this.reservoir = rule.reservoir;\n this.requestCount = rule.requestCount;\n this.borrowCount = rule.borrowCount;\n this.sampledCount = rule.sampledCount;\n rule = null; // unref the old rule so it can be garbage collected.\n};\nSamplingRule.prototype.isDefault = function isDefault() {\n return this.name === 'Default'; // \"Default\" is a reserved keyword from X-Ray back-end.\n};\nSamplingRule.prototype.incrementRequestCount = function incrementRequestCount() {\n this.requestCount++;\n};\nSamplingRule.prototype.incrementBorrowCount = function incrementBorrowCount() {\n this.borrowCount++;\n};\nSamplingRule.prototype.incrementSampledCount = function incrementSampledCount() {\n this.sampledCount++;\n};\nSamplingRule.prototype.setRate = function setRate(rate) {\n this.rate = rate;\n};\nSamplingRule.prototype.getRate = function getRate() {\n return this.rate;\n};\nSamplingRule.prototype.getName = function getName() {\n return this.name;\n};\nSamplingRule.prototype.getPriority = function getPriority() {\n return this.priority;\n};\nSamplingRule.prototype.getReservoir = function getReservoir() {\n return this.reservoir;\n};\nSamplingRule.prototype.resetStatistics = function resetStatistics() {\n this.requestCount = 0;\n this.borrowCount = 0;\n this.sampledCount = 0;\n};\nSamplingRule.prototype.canBorrow = function canBorrow() {\n return this.borrow;\n};\nSamplingRule.prototype.everMatched = function everMatched() {\n return this.requestCount > 0;\n};\nSamplingRule.prototype.timeToReport = function timeToReport() {\n return this.reservoir.timeToReport();\n};\nmodule.exports = SamplingRule;\n", "\"use strict\";\nvar crypto = require('crypto');\nvar logger = require('../../logger');\nvar SamplingRule = require('./sampling_rule');\nvar DaemonConfig = require('../../daemon_config');\nconst util = require('util');\nconst http = require('http');\n/**\n * The ServiceConnector that calls X-Ray service and convert the API response bodies to data models\n * defined in the X-Ray SDK and return them to the pollers.\n * @module ServiceConnector\n */\nvar ServiceConnector = {\n // client_id is a 12 byte cryptographically secure random hex\n // identifying the SDK instance and is generated during SDK initialization/\n // This is required when reporting sampling to X-Ray back-end.\n clientId: crypto.randomBytes(12).toString('hex'),\n samplingRulesPath: '/GetSamplingRules',\n samplingTargetsPath: '/SamplingTargets',\n logger: logger,\n httpClient: http,\n fetchSamplingRules: function fetchSamplingRules(callback) {\n const body = '{}'; // Payload needed for GetSamplingRules POST request\n const options = getOptions(this.samplingRulesPath, body.length);\n const httpReq = this.httpClient.__request ? this.httpClient.__request : this.httpClient.request;\n const req = httpReq(options, res => {\n var data = '';\n res.on('data', d => {\n data += d;\n });\n res.on('error', error => {\n callback(error);\n });\n res.on('end', () => {\n var dataObj;\n try {\n dataObj = JSON.parse(data);\n }\n catch (err) {\n callback(err);\n return;\n }\n if (!dataObj) {\n callback(new Error('AWS X-Ray GetSamplingRules API returned empty response'));\n return;\n }\n var newRules = assembleRules(dataObj);\n callback(null, newRules);\n });\n });\n req.on('error', () => {\n callback(new Error(`Failed to connect to X-Ray daemon at ${options.hostname}:${options.port} to get sampling rules.`));\n });\n req.write(body);\n req.end();\n },\n fetchTargets: function fetchTargets(rules, callback) {\n const body = JSON.stringify(constructStatisticsDocs(rules));\n const options = getOptions(this.samplingTargetsPath, body.length);\n const httpReq = this.httpClient.__request ? this.httpClient.__request : this.httpClient.request;\n const req = httpReq(options, res => {\n var data = '';\n res.on('data', d => {\n data += d;\n });\n res.on('error', error => {\n callback(error);\n });\n res.on('end', () => {\n var dataObj;\n try {\n dataObj = JSON.parse(data);\n }\n catch (err) {\n callback(err);\n return;\n }\n if (!dataObj || typeof dataObj['LastRuleModification'] != 'number') {\n callback(new Error('AWS X-Ray SamplingTargets API returned invalid response'));\n return;\n }\n var targetsMapping = assembleTargets(dataObj);\n var ruleFreshness = dateToEpoch(dataObj['LastRuleModification']);\n callback(null, targetsMapping, ruleFreshness);\n });\n });\n req.on('error', () => {\n callback(new Error(`Failed to connect to X-Ray daemon at ${options.hostname}:${options.port} to get sampling targets.`));\n });\n req.write(body);\n req.end();\n }\n};\nvar constructStatisticsDocs = function constructStatisticsDocs(rules) {\n var documents = [];\n var now = Math.floor(new Date().getTime() / 1000);\n rules.forEach(function (rule) {\n var statistics = rule.snapshotStatistics();\n var doc = {\n 'RuleName': rule.getName(),\n 'ClientID': ServiceConnector.clientId,\n 'RequestCount': statistics.requestCount,\n 'BorrowCount': statistics.borrowCount,\n 'SampledCount': statistics.sampledCount,\n 'Timestamp': now\n };\n documents.push(doc);\n });\n return { SamplingStatisticsDocuments: documents };\n};\nvar assembleRules = function assembleRules(data) {\n var newRules = [];\n var ruleList = data['SamplingRuleRecords'] || [];\n ruleList.forEach(function (ruleRecord) {\n ruleRecord = ruleRecord['SamplingRule'];\n // For forward compatibility reason right now it only\n // deals with version 1 sampling rules.\n if (isRuleValid(ruleRecord)) {\n var newRule = new SamplingRule(ruleRecord['RuleName'], ruleRecord['Priority'], ruleRecord['FixedRate'], ruleRecord['ReservoirSize'], ruleRecord['Host'], ruleRecord['HTTPMethod'], ruleRecord['URLPath'], ruleRecord['ServiceName'], ruleRecord['ServiceType']);\n newRules.push(newRule);\n }\n });\n return newRules;\n};\nvar assembleTargets = function assembleTargets(data) {\n var docs = data['SamplingTargetDocuments'] || [];\n var targetsMapping = {};\n docs.forEach(function (doc) {\n var newTarget = {\n rate: doc['FixedRate'],\n quota: doc['ReservoirQuota'],\n TTL: dateToEpoch(doc['ReservoirQuotaTTL']),\n interval: doc['Interval']\n };\n targetsMapping[doc['RuleName']] = newTarget;\n });\n return targetsMapping;\n};\nvar isRuleValid = function isRuleValid(record) {\n return record['Version'] === 1\n && record['ResourceARN'] === '*'\n && record['Attributes'] && Object.keys(record['Attributes']).length === 0\n && record['ServiceType']\n && record['RuleName']\n && record['Priority']\n && typeof record['FixedRate'] == 'number';\n};\nvar dateToEpoch = function dateToEpoch(date) {\n return new Date(date).getTime() / 1000;\n};\nvar getOptions = function getOptions(path, contentLength) {\n const options = {\n hostname: DaemonConfig.tcp_ip,\n port: DaemonConfig.tcp_port,\n method: 'POST',\n path: path,\n headers: {\n 'Content-Type': 'application/json',\n 'Content-Length': contentLength,\n 'Host': util.format('%s:%d', DaemonConfig.tcp_ip, DaemonConfig.tcp_port)\n }\n };\n return options;\n};\nmodule.exports = ServiceConnector;\n", "\"use strict\";\nvar TTL = 60 * 60; // The cache expires 1 hour after the last refresh time.\n/**\n * The rule cache that stores sampling rules fetched from X-Ray service.\n * @module RuleCache\n */\nvar RuleCache = {\n rules: [],\n lastUpdated: null,\n /**\n * Tries to find a valid rule that matches the sample request.\n * @param {object} sampleRequest - Contains information for rules matching.\n * @param {number} now - Current epoch in seconds.\n * @module RuleCache\n * @function getMatchedRule\n */\n getMatchedRule: function getMatchedRule(sampleRequest, now) {\n if (isExpired(now)) {\n return null;\n }\n var matchedRule;\n this.rules.forEach(function (rule) {\n if (!matchedRule && rule.match(sampleRequest)) {\n matchedRule = rule;\n }\n if (rule.isDefault() && !matchedRule) {\n matchedRule = rule;\n }\n });\n return matchedRule;\n },\n /**\n * Load rules fetched from X-Ray service in order sorted by priorities.\n * @param {object} rules - Newly fetched rules to load.\n * @module RuleCache\n * @function loadRules\n */\n loadRules: function loadRules(rules) {\n // Record the old rules for later merging.\n var oldRules = {};\n this.rules.forEach(function (rule) {\n oldRules[rule.getName()] = rule;\n });\n // Update the rules in the cache.\n this.rules = rules;\n // Transfer state information to refreshed rules.\n this.rules.forEach(function (rule) {\n var oldRule = oldRules[rule.getName()];\n if (oldRule) {\n rule.merge(oldRule);\n }\n });\n // The cache should maintain the order of the rules based on\n // priority. If priority is the same we sort name by alphabet\n // as rule name is unique.\n this.rules.sort(function (a, b) {\n var v = a.getPriority() - b.getPriority();\n if (v !== 0) {\n return v;\n }\n if (a.getName() > b.getName()) {\n return 1;\n }\n else {\n return -1;\n }\n });\n },\n /**\n * Load targets fetched from X-Ray service.\n * @param {object} targetsMapping - Newly fetched targets map with rule name as key.\n * @module RuleCache\n * @function loadTargets\n */\n loadTargets: function loadTargets(targetsMapping) {\n this.rules.forEach(function (rule) {\n var target = targetsMapping[rule.getName()];\n if (target) {\n rule.getReservoir().loadNewQuota(target.quota, target.TTL, target.interval);\n rule.setRate(target.rate);\n }\n });\n },\n getRules: function getRules() {\n return this.rules;\n },\n timestamp: function timestamp(now) {\n this.lastUpdated = now;\n },\n getLastUpdated: function getLastUpdated() {\n return this.lastUpdated;\n }\n};\nvar isExpired = function isExpired(now) {\n // The cache is considered expired if it is never loaded.\n if (!RuleCache.getLastUpdated()) {\n return true;\n }\n return now > RuleCache.getLastUpdated() + TTL;\n};\nmodule.exports = RuleCache;\n", "\"use strict\";\nvar logger = require('../../logger');\nvar ServiceConnector = require('./service_connector');\nvar ruleCache = require('./rule_cache');\nvar DEFAULT_INTERVAL = 5 * 60 * 1000; // 5 minutes on sampling rules fetch\n/**\n * The RulePoller that periodically fetch sampling rules from X-Ray service\n * and load them into RuleCache.\n * @module RulePoller\n */\nvar RulePoller = {\n start: function start() {\n if (this.poller) {\n clearInterval(this.poller);\n }\n // Refresh sampling rules cache with no jitter upon start.\n refresh(false);\n this.poller = setInterval(refresh, DEFAULT_INTERVAL);\n this.poller.unref();\n },\n};\nvar refresh = function refresh(jitter) {\n // Add jitter by default unless explicitly told not to.\n jitter = typeof jitter === 'undefined' ? true : jitter;\n if (jitter) {\n var delay = getJitter();\n setTimeout(refreshWithFirewall, delay);\n }\n else {\n refreshWithFirewall();\n }\n};\nvar refreshWithFirewall = function refreshWithFirewall() {\n try {\n refreshCache();\n }\n catch (e) {\n logger.getLogger().warn('Encountered unexpected exception when fetching sampling rules: ' + e);\n }\n};\nvar refreshCache = function refreshCache() {\n // Timestamp should be generated *before* the actual outbound call to ensure\n // we don't mark the cache as being fresher than it actually is.\n var now = Math.floor(new Date().getTime() / 1000);\n // Pass a callback that only runs when the new rules are\n // successfully fetched.\n ServiceConnector.fetchSamplingRules(function (err, newRules) {\n if (err) {\n logger.getLogger().warn('Failed to retrieve sampling rules from X-Ray service:', err);\n }\n else if (newRules.length !== 0) {\n ruleCache.loadRules(newRules);\n ruleCache.timestamp(now);\n logger.getLogger().info('Successfully refreshed centralized sampling rule cache.');\n }\n });\n};\n// A random jitter of up to 5 seconds is injected after every run to ensure\n// the calls eventually get evenly distributed over the 5 minute window.\nvar getJitter = function getJitter() {\n return Math.random() * 5;\n};\nmodule.exports = RulePoller;\n", "\"use strict\";\nvar rulePoller = require('./rule_poller');\nvar serviceConnector = require('./service_connector');\nvar ruleCache = require('./rule_cache');\nvar logger = require('../../logger');\nvar DEFAULT_INTERVAL = 10 * 1000; // 10 seconds on sampling targets fetch\n/**\n * The TargetPoller that periodically fetch sampling targets from X-Ray service\n * and load them into RuleCache.\n * @module TargetPoller\n */\nvar TargetPoller = {\n interval: DEFAULT_INTERVAL,\n start: function start() {\n this.poller = setInterval(refreshWithFirewall, DEFAULT_INTERVAL + getJitter());\n this.poller.unref();\n },\n};\nvar refreshWithFirewall = function refreshWithFirewall() {\n try {\n refresh();\n }\n catch (e) {\n logger.getLogger().warn('Encountered unexpected exception when fetching sampling targets: ' + e);\n }\n};\nvar refresh = function refresh() {\n var candidates = getCandidates();\n if (candidates && candidates.length > 0) {\n serviceConnector.fetchTargets(candidates, function (err, targetsMapping, ruleFreshness) {\n if (err) {\n logger.getLogger().warn('Failed to retrieve sampling targets from X-Ray service:', err);\n return;\n }\n ruleCache.loadTargets(targetsMapping);\n if (ruleFreshness > ruleCache.getLastUpdated()) {\n logger.getLogger().info('Performing out-of-band sampling rule polling to fetch updated rules.');\n rulePoller.start();\n }\n logger.getLogger().info('Successfully reported rule statistics to get new sampling quota.');\n });\n }\n};\n// Don't report a rule statistics if any of the conditions is met:\n// 1. The report time hasn't come (some rules might have larger report intervals).\n// 2. The rule is never matched.\nvar getCandidates = function getCandidates() {\n var rules = ruleCache.getRules();\n var candidates = [];\n rules.forEach(function (rule) {\n if (rule.everMatched() && rule.timeToReport()) {\n candidates.push(rule);\n }\n });\n return candidates;\n};\n// A random jitter of up to 0.1 seconds is injected after every run to ensure\n// the calls eventually get evenly distributed over the 10 second window.\nvar getJitter = function getJitter() {\n return Math.random() / TargetPoller.interval;\n};\nmodule.exports = TargetPoller;\n", "\"use strict\";\nvar logger = require('../../logger');\nconst util = require('util');\nvar SegmentUtils = require('../../segments/segment_utils');\n/**\n * The default sampler used to make sampling decisions when the decisions are absent in the incoming requests.\n * The sampler use pollers to poll sampling rules from X-Ray service.\n * @module DefaultSampler\n */\nvar DefaultSampler = {\n localSampler: require('./local_sampler'),\n rulePoller: require('./rule_poller'),\n targetPoller: require('./target_poller'),\n ruleCache: require('./rule_cache'),\n started: false,\n /**\n * Makes a sample decision based on the sample request.\n * @param {object} sampleRequest - Contains information for rules matching.\n * @module DefaultSampler\n * @function shouldSample\n */\n shouldSample: function shouldSample(sampleRequest) {\n try {\n if (!this.started) {\n this.start();\n }\n if (!sampleRequest.serviceType) {\n sampleRequest.serviceType = SegmentUtils.origin;\n }\n var now = Math.floor(new Date().getTime() / 1000);\n var matchedRule = this.ruleCache.getMatchedRule(sampleRequest, now);\n if (matchedRule) {\n logger.getLogger().debug(util.format('Rule %s is matched.', matchedRule.getName()));\n return processMatchedRule(matchedRule, now);\n }\n else {\n logger.getLogger().info('No effective centralized sampling rule match. Fallback to local rules.');\n return this.localSampler.shouldSample(sampleRequest);\n }\n }\n catch (err) {\n logger.getLogger().error('Unhandled exception by the SDK during making sampling decisions: ' + err);\n }\n },\n /**\n * Set local rules in case there is a need to fallback.\n * @module DefaultSampler\n * @function setLocalRules\n */\n setLocalRules: function setLocalRules(source) {\n this.localSampler.setLocalRules(source);\n },\n /**\n * Start the pollers to poll sampling rules and targets from X-Ray service.\n * @module DefaultSampler\n * @function start\n */\n start: function start() {\n if (!this.started) {\n this.rulePoller.start();\n this.targetPoller.start();\n this.started = true;\n }\n }\n};\nvar processMatchedRule = function processMatchedRule(rule, now) {\n // As long as a rule is matched we increment request counter.\n rule.incrementRequestCount();\n var reservoir = rule.getReservoir();\n var sample = true;\n // We check if we can borrow or take from reservoir first.\n var decision = reservoir.borrowOrTake(now, rule.canBorrow());\n if (decision === 'borrow') {\n rule.incrementBorrowCount();\n }\n else if (decision === 'take') {\n rule.incrementSampledCount();\n }\n else if (Math.random() <= rule.getRate()) {\n // Otherwise we compute based on FixedRate of this sampling rule.\n rule.incrementSampledCount();\n }\n else {\n sample = false;\n }\n if (sample) {\n return rule.getName();\n }\n else {\n return false;\n }\n};\nmodule.exports = DefaultSampler;\n", "\"use strict\";\n/**\n * Middleware Utils module.\n *\n * Exposes various configuration and helper methods to be used by the middleware.\n * @module mw_utils\n */\nvar Segment = require('../segments/segment');\nvar IncomingRequestData = require('./incoming_request_data');\nvar logger = require('../logger');\nvar coreUtils = require('../utils');\nvar wildcardMatch = require('../utils').wildcardMatch;\nvar processTraceData = require('../utils').processTraceData;\n//headers are case-insensitive\nvar XRAY_HEADER = 'x-amzn-trace-id';\nvar overrideFlag = !!process.env.AWS_XRAY_TRACING_NAME;\nvar utils = {\n defaultName: process.env.AWS_XRAY_TRACING_NAME,\n dynamicNaming: false,\n hostPattern: null,\n sampler: require('./sampling/default_sampler'),\n /**\n * Enables dynamic naming for segments via the middleware. Use 'AWSXRay.middleware.enableDynamicNaming()'.\n * @param {string} [hostPattern] - The pattern to match the host header. See the README on dynamic and fixed naming modes.\n * @alias module:mw_utils.enableDynamicNaming\n */\n enableDynamicNaming: function (hostPattern) {\n this.dynamicNaming = true;\n if (hostPattern && typeof hostPattern !== 'string') {\n throw new Error('Host pattern must be a string.');\n }\n this.hostPattern = hostPattern || null;\n },\n /**\n * Splits out the 'x-amzn-trace-id' header params from the incoming request. Used by the middleware.\n * @param {http.IncomingMessage|https.IncomingMessage} req - The request object from the incoming call.\n * @returns {object}\n * @alias module:mw_utils.processHeaders\n */\n processHeaders: function processHeaders(req) {\n var amznTraceHeader = {};\n if (req && req.headers && req.headers[XRAY_HEADER]) {\n amznTraceHeader = processTraceData(req.headers[XRAY_HEADER]);\n }\n return amznTraceHeader;\n },\n /**\n * Resolves the name of the segment as determined by fixed or dynamic mode options. Used by the middleware.\n * @param {string} hostHeader - The string from the request.headers.host property.\n * @returns {string}\n * @alias module:mw_utils.resolveName\n */\n resolveName: function resolveName(hostHeader) {\n var name;\n if (this.dynamicNaming && hostHeader) {\n name = this.hostPattern ? (wildcardMatch(this.hostPattern, hostHeader) ? hostHeader : this.defaultName) : hostHeader;\n }\n else {\n name = this.defaultName;\n }\n return name;\n },\n /**\n * Resolves the sampling decision as determined by the values given and options set. Used by the middleware.\n * @param {object} amznTraceHeader - The object as returned by the processHeaders function.\n * @param {Segment} segment - The string from the request.headers.host property.\n * @param {http.ServerResponse|https.ServerResponse} res - The response object from the incoming call.\n * @returns {boolean}\n * @alias module:mw_utils.resolveSampling\n */\n resolveSampling: function resolveSampling(amznTraceHeader, segment, res) {\n var isSampled;\n if (amznTraceHeader.sampled === '1') {\n isSampled = true;\n }\n else if (amznTraceHeader.sampled === '0') {\n isSampled = false;\n }\n else {\n var sampleRequest = {\n host: res.req.headers.host,\n httpMethod: res.req.method,\n urlPath: res.req.url,\n serviceName: segment.name\n };\n isSampled = this.sampler.shouldSample(sampleRequest);\n if (isSampled instanceof String || typeof isSampled === 'string') {\n segment.setMatchedSamplingRule(isSampled);\n isSampled = true;\n }\n }\n if (amznTraceHeader.sampled === '?') {\n res.header[XRAY_HEADER] = 'Root=' + amznTraceHeader.root + ';Sampled=' + (isSampled ? '1' : '0');\n }\n if (!isSampled) {\n segment.notTraced = true;\n }\n },\n /**\n * Sets the default name of created segments. Used with the middleware.\n * Can be overridden by the AWS_XRAY_TRACING_NAME environment variable.\n * @param {string} name - The default name for segments created in the middleware.\n * @alias module:mw_utils.setDefaultName\n */\n setDefaultName: function setDefaultName(name) {\n if (!overrideFlag) {\n this.defaultName = name;\n }\n },\n disableCentralizedSampling: function disableCentralizedSampling() {\n this.sampler = require('./sampling/local_sampler');\n },\n /**\n * Overrides the default sampling rules file to specify at what rate to sample at for specific routes.\n * The base sampling rules file can be found at /lib/resources/default_sampling_rules.json\n * @param {string|Object} source - The path to the custom sampling rules file, or the source JSON object.\n * @memberof AWSXRay\n */\n setSamplingRules: function setSamplingRules(source) {\n if (!source || source instanceof String || !(typeof source === 'string' || (source instanceof Object))) {\n throw new Error('Please specify a path to the local sampling rules file, or supply an object containing the rules.');\n }\n this.sampler.setLocalRules(source);\n },\n /**\n * Logs a debug message including core request and segment information\n * @param {string} message - The message to be logged\n * @param {string} url - The request url being traced\n * @param {Segment} - The current segment\n */\n middlewareLog: function middlewareLog(message, url, segment) {\n logger.getLogger().debug(message + ': { url: ' + url + ', name: ' + segment.name + ', trace_id: ' +\n segment.trace_id + ', id: ' + segment.id + ', sampled: ' + !segment.notTraced + ' }');\n },\n /**\n * Traces the request/response cycle of an http.IncomingMessage / http.ServerResponse pair.\n * Resolves sampling rules, creates a segment, adds the core request / response data adding\n * throttling / error / fault flags based on the response status code.\n * @param {http.IncomingMessage} req - The incoming request.\n * @param {http.ServerResponse} res - The server response.\n * @returns {Segment}\n * @memberof AWSXRay\n */\n traceRequestResponseCycle: function traceRequestResponseCycle(req, res) {\n var amznTraceHeader = this.processHeaders(req);\n var name = this.resolveName(req.headers.host);\n var segment = new Segment(name, amznTraceHeader.root, amznTraceHeader.parent);\n var responseWithEmbeddedRequest = Object.assign({}, res, { req: req });\n this.resolveSampling(amznTraceHeader, segment, responseWithEmbeddedRequest);\n segment.addIncomingRequestData(new IncomingRequestData(req));\n this.middlewareLog('Starting middleware segment', req.url, segment);\n var middlewareLog = this.middlewareLog;\n var didEnd = false;\n var endSegment = function () {\n // ensure `endSegment` is only called once\n // in some versions of node.js 10.x and in all versions of node.js 11.x and higher,\n // the 'finish' and 'close' event are BOTH triggered.\n // Previously, only one or the other was triggered:\n // https://github.com/nodejs/node/pull/20611\n if (didEnd) {\n return;\n }\n didEnd = true;\n if (res.statusCode === 429) {\n segment.addThrottleFlag();\n }\n const cause = coreUtils.getCauseTypeFromHttpStatus(res.statusCode);\n if (cause) {\n segment[cause] = true;\n }\n segment.http.close(res);\n segment.close();\n middlewareLog('Closed middleware segment successfully', req.url, segment);\n };\n res.on('finish', endSegment);\n res.on('close', endSegment);\n return segment;\n }\n};\nmodule.exports = utils;\n", "\"use strict\";\nvar contextUtils = require('../context_utils');\nvar mwUtils = require('../middleware/mw_utils');\nvar LambdaUtils = require('../utils').LambdaUtils;\nvar Segment = require('../segments/segment');\nvar SegmentEmitter = require('../segment_emitter');\nvar SegmentUtils = require('../segments/segment_utils');\nvar logger = require('../logger');\nconst TraceID = require('../segments/attributes/trace_id');\n/**\n * @namespace\n * @ignore\n */\nvar xAmznTraceIdPrev = null;\n/**\n* Used to initialize segments on AWS Lambda with extra data from the context.\n*/\nmodule.exports.init = function init() {\n contextUtils.enableManualMode = function () {\n logger.getLogger().warn('AWS Lambda does not support AWS X-Ray manual mode.');\n };\n SegmentEmitter.disableReusableSocket();\n SegmentUtils.setStreamingThreshold(0);\n /**\n * Disabling all centralized sampling in Lambda environments. The sampling decisions would be\n * uselessly applied to the facade segment, and the sampling pollers were causing errors.\n *\n * See: https://github.com/aws/aws-xray-sdk-node/issues/217\n */\n logger.getLogger().info('Disabling centralized sampling in Lambda environment.');\n mwUtils.disableCentralizedSampling();\n var namespace = contextUtils.getNamespace();\n namespace.enter(namespace.createContext());\n contextUtils.setSegment(facadeSegment());\n};\nvar facadeSegment = function facadeSegment() {\n var segment = new Segment('facade');\n var whitelistFcn = ['addNewSubsegment', 'addSubsegment', 'removeSubsegment', 'toString', 'addSubsegmentWithoutSampling', 'addNewSubsegmentWithoutSampling'];\n var silentFcn = ['incrementCounter', 'decrementCounter', 'isClosed', 'close', 'format', 'flush'];\n var xAmznTraceId = process.env._X_AMZN_TRACE_ID;\n for (var key in segment) {\n if (typeof segment[key] === 'function' && whitelistFcn.indexOf(key) === -1) {\n if (silentFcn.indexOf(key) === -1) {\n segment[key] = (function () {\n var func = key;\n return function facade() {\n logger.getLogger().warn('Function \"' + func + '\" cannot be called on an AWS Lambda segment. Please use a subsegment to record data.');\n return;\n };\n })();\n }\n else {\n segment[key] = function facade() {\n return;\n };\n }\n }\n }\n segment.trace_id = TraceID.Invalid().toString();\n segment.isClosed = function () {\n return true;\n };\n segment.in_progress = false;\n segment.counter = 1;\n segment.notTraced = true;\n segment.facade = true;\n segment.reset = function reset() {\n this.trace_id = TraceID.Invalid().toString();\n this.id = '00000000';\n delete this.subsegments;\n this.notTraced = true;\n };\n segment.resolveLambdaTraceData = function resolveLambdaTraceData() {\n var xAmznLambda = process.env._X_AMZN_TRACE_ID;\n if (xAmznLambda) {\n // This check resets the trace data whenever a new trace header is read to not leak data between invocations\n if (xAmznLambda != xAmznTraceIdPrev) {\n this.reset();\n if (LambdaUtils.populateTraceData(segment, xAmznLambda)) {\n xAmznTraceIdPrev = xAmznLambda;\n }\n }\n }\n else {\n this.reset();\n contextUtils.contextMissingStrategy.contextMissing('Missing AWS Lambda trace data for X-Ray. ' +\n 'Ensure Active Tracing is enabled and no subsegments are created outside the function handler.');\n }\n };\n // Test for valid trace data during SDK startup. It's likely we're still in the cold-start portion of the\n // code at this point and a valid trace header has not been set\n if (LambdaUtils.validTraceData(xAmznTraceId)) {\n if (LambdaUtils.populateTraceData(segment, xAmznTraceId)) {\n xAmznTraceIdPrev = xAmznTraceId;\n }\n }\n return segment;\n};\n", "{\n \"name\": \"aws-xray-sdk-core\",\n \"version\": \"3.5.2\",\n \"description\": \"AWS X-Ray SDK for Javascript\",\n \"author\": \"Amazon Web Services\",\n \"contributors\": [\n \"Sandra McMullen <mcmuls@amazon.com>\",\n \"William Armiros <armiros@amazon.com>\",\n \"Moritz Onken <onken@netcubed.de>\"\n ],\n \"files\": [\n \"dist/lib/**/*\",\n \"LICENSE\",\n \"README.md\"\n ],\n \"main\": \"dist/lib/index.js\",\n \"types\": \"dist/lib/index.d.ts\",\n \"engines\": {\n \"node\": \">= 14.x\"\n },\n \"directories\": {\n \"test\": \"test\"\n },\n \"//\": \"@types/cls-hooked is exposed in API so must be in dependencies, not devDependencies\",\n \"dependencies\": {\n \"@aws-sdk/service-error-classification\": \"^3.4.1\",\n \"@aws-sdk/types\": \"^3.4.1\",\n \"@types/cls-hooked\": \"^4.3.3\",\n \"atomic-batcher\": \"^1.0.2\",\n \"cls-hooked\": \"^4.2.2\",\n \"semver\": \"^7.5.3\"\n },\n \"scripts\": {\n \"prepare\": \"npm run compile\",\n \"compile\": \"tsc && npm run copy-lib && npm run copy-test\",\n \"copy-lib\": \"find lib -type f \\\\( -name '*.d.ts' -o -name '*.json' \\\\) | xargs -I % ../../scripts/cp-with-structure.sh % dist\",\n \"copy-test\": \"find test -name '*.json' | xargs -I % ../../scripts/cp-with-structure.sh % dist\",\n \"lint\": \"eslint .\",\n \"lint:fix\": \"eslint . --fix\",\n \"test\": \"npm run compile && mocha --recursive ./dist/test/ -R spec && tsd && mocha --recursive ./dist/test_async/ -R spec\",\n \"test-d\": \"tsd\",\n \"test-async\": \"npm run compile && mocha --recursive ./dist/test_async/ -R spec\",\n \"clean\": \"rm -rf dist && rm -rf node_modules\",\n \"testcov\": \"nyc npm run test\",\n \"reportcov\": \"nyc report --reporter=text-lcov > coverage.lcov && codecov\"\n },\n \"keywords\": [\n \"amazon\",\n \"api\",\n \"aws\",\n \"core\",\n \"xray\",\n \"x-ray\",\n \"x ray\"\n ],\n \"license\": \"Apache-2.0\",\n \"repository\": \"https://github.com/aws/aws-xray-sdk-node/tree/master/packages/core\",\n \"gitHead\": \"6a9f9991c4aa3eead1609f986ea9354d50f5436f\"\n}\n", "\"use strict\";\nvar http = require('http');\nvar Plugin = {\n METADATA_TIMEOUT: 1000,\n /**\n * Asynchronously retrieves metadata from on-instance endpoint with an HTTP request using retries for\n * requests that time out.\n * @param {object} options - The HTTP options to make the request with\n * @param {function} callback - callback to plugin\n */\n getPluginMetadata: function (options, callback) {\n const METADATA_RETRY_TIMEOUT = 250; // Millis\n const METADATA_RETRIES = 5;\n var retries = METADATA_RETRIES;\n var getMetadata = function () {\n var httpReq = http.__request ? http.__request : http.request;\n var req = httpReq(options, function (res) {\n var body = '';\n res.on('data', function (chunk) {\n body += chunk;\n });\n res.on('end', function () {\n if (this.statusCode === 200 || this.statusCode === 300) {\n try {\n body = JSON.parse(body);\n }\n catch (e) {\n callback(e);\n return;\n }\n callback(null, body);\n }\n else if (retries > 0 && Math.floor(this.statusCode / 100) === 5) {\n retries--;\n setTimeout(getMetadata, METADATA_RETRY_TIMEOUT);\n }\n else {\n callback(new Error(`Failed to retrieve metadata with options: ${options}`));\n }\n });\n });\n req.on('error', function (err) {\n callback(err);\n });\n req.on('timeout', function () {\n req.abort();\n });\n req.setTimeout(Plugin.METADATA_TIMEOUT);\n req.end();\n };\n getMetadata();\n }\n};\nmodule.exports = Plugin;\n", "\"use strict\";\nvar Plugin = require('./plugin');\nvar logger = require('../../logger');\nvar http = require('http');\nvar EC2Plugin = {\n /**\n * A function to get the instance data from the EC2 metadata service.\n * @param {function} callback - The callback for the plugin loader.\n */\n getData: function (callback) {\n const METADATA_PATH = '/latest/dynamic/instance-identity/document';\n function populateMetadata(token) {\n const options = getOptions(METADATA_PATH, 'GET', token ? { 'X-aws-ec2-metadata-token': token } : {});\n Plugin.getPluginMetadata(options, function (err, data) {\n if (err || !data) {\n logger.getLogger().error('Error loading EC2 plugin metadata: ', err ? err.toString() : 'Could not retrieve data from IMDS.');\n callback();\n return;\n }\n const metadata = {\n ec2: {\n instance_id: data.instanceId,\n availability_zone: data.availabilityZone,\n instance_size: data.instanceType,\n ami_id: data.imageId\n }\n };\n callback(metadata);\n });\n }\n /**\n * This kicks off a requet to get a token used for requests to IMDSv2. If the request for the token\n * fails, we fall back to IMDSv1. Otherwise, the token will be used for an IMDSv2 request.\n */\n getToken(function (token) {\n if (token === null) {\n logger.getLogger().debug('EC2Plugin failed to get token from IMDSv2. Falling back to IMDSv1.');\n }\n populateMetadata(token);\n });\n },\n originName: 'AWS::EC2::Instance'\n};\n/**\n * Asynchronously retrieves a token used in requests to EC2 instance metadata service.\n * @param {function} callback - callback to plugin\n */\nfunction getToken(callback) {\n const httpReq = http.__request ? http.__request : http.request;\n const TTL = 60; //seconds\n const TOKEN_PATH = '/latest/api/token';\n const options = getOptions(TOKEN_PATH, 'PUT', {\n 'X-aws-ec2-metadata-token-ttl-seconds': TTL\n });\n let req = httpReq(options, function (res) {\n let body = '';\n res.on('data', function (chunk) {\n body += chunk;\n });\n res.on('end', function () {\n if (this.statusCode === 200 || this.statusCode === 300) {\n callback(body);\n }\n else {\n callback(null);\n }\n });\n });\n req.on('error', function () {\n callback(null);\n });\n req.on('timeout', function () {\n req.abort();\n callback(null);\n });\n req.setTimeout(Plugin.METADATA_TIMEOUT);\n req.end();\n}\nfunction getOptions(path, method, headers) {\n if (!method) {\n method = 'GET';\n }\n if (!headers) {\n headers = {};\n }\n return {\n host: '169.254.169.254',\n path: path,\n method: method,\n headers: headers\n };\n}\nmodule.exports = EC2Plugin;\n", "\"use strict\";\nvar os = require('os');\nvar ECSPlugin = {\n /**\n * A function to get the instance data from the ECS instance.\n * @param {function} callback - The callback for the plugin loader.\n */\n getData: function (callback) {\n callback({ ecs: { container: os.hostname() } });\n },\n originName: 'AWS::ECS::Container'\n};\nmodule.exports = ECSPlugin;\n", "\"use strict\";\nvar fs = require('fs');\nvar logger = require('../../logger');\nvar ENV_CONFIG_LOCATION = '/var/elasticbeanstalk/xray/environment.conf';\nvar ElasticBeanstalkPlugin = {\n /**\n * A function to get data from the Elastic Beanstalk environment configuration file.\n * @param {function} callback - The callback for the plugin loader.\n */\n getData: function (callback) {\n fs.readFile(ENV_CONFIG_LOCATION, 'utf8', function (err, rawData) {\n if (err) {\n logger.getLogger().error('Error loading Elastic Beanstalk plugin:', err.stack);\n callback();\n }\n else {\n var data = JSON.parse(rawData);\n var metadata = {\n elastic_beanstalk: {\n environment: data.environment_name,\n version_label: data.version_label,\n deployment_id: data.deployment_id\n }\n };\n callback(metadata);\n }\n });\n },\n originName: 'AWS::ElasticBeanstalk::Environment'\n};\nmodule.exports = ElasticBeanstalkPlugin;\n", "{\n \"services\": {\n \"dynamodb\": {\n \"operations\": {\n \"batchGetItem\": {\n \"request_descriptors\": {\n \"RequestItems\": {\n \"get_keys\": true,\n \"rename_to\": \"table_names\"\n }\n },\n \"response_parameters\": [\n \"ConsumedCapacity\"\n ]\n },\n \"batchWriteItem\": {\n \"request_descriptors\": {\n \"RequestItems\": {\n \"get_keys\": true,\n \"rename_to\": \"table_names\"\n }\n },\n \"response_parameters\": [\n \"ConsumedCapacity\",\n \"ItemCollectionMetrics\"\n ]\n },\n \"createTable\": {\n \"request_parameters\": [\n \"GlobalSecondaryIndexes\",\n \"LocalSecondaryIndexes\",\n \"ProvisionedThroughput\",\n \"TableName\"\n ]\n },\n \"deleteItem\": {\n \"request_parameters\": [\n \"TableName\"\n ],\n \"response_parameters\": [\n \"ConsumedCapacity\",\n \"ItemCollectionMetrics\"\n ]\n },\n \"deleteTable\": {\n \"request_parameters\": [\n \"TableName\"\n ]\n },\n \"describeTable\": {\n \"request_parameters\": [\n \"TableName\"\n ]\n },\n \"getItem\": {\n \"request_parameters\": [\n \"ConsistentRead\",\n \"ProjectionExpression\",\n \"TableName\"\n ],\n \"response_parameters\": [\n \"ConsumedCapacity\"\n ]\n },\n \"listTables\": {\n \"request_parameters\": [\n \"ExclusiveStartTableName\",\n \"Limit\"\n ],\n \"response_descriptors\": {\n \"TableNames\": {\n \"list\": true,\n \"get_count\": true,\n \"rename_to\": \"table_count\"\n }\n }\n },\n \"putItem\": {\n \"request_parameters\": [\n \"TableName\"\n ],\n \"response_parameters\": [\n \"ConsumedCapacity\",\n \"ItemCollectionMetrics\"\n ]\n },\n \"query\": {\n \"request_parameters\": [\n \"AttributesToGet\",\n \"ConsistentRead\",\n \"IndexName\",\n \"Limit\",\n \"ProjectionExpression\",\n \"ScanIndexForward\",\n \"Select\",\n \"TableName\"\n ],\n \"response_parameters\": [\n \"ConsumedCapacity\"\n ]\n },\n \"scan\": {\n \"request_parameters\": [\n \"AttributesToGet\",\n \"ConsistentRead\",\n \"IndexName\",\n \"Limit\",\n \"ProjectionExpression\",\n \"Segment\",\n \"Select\",\n \"TableName\",\n \"TotalSegments\"\n ],\n \"response_parameters\": [\n \"ConsumedCapacity\",\n \"Count\",\n \"ScannedCount\"\n ]\n },\n \"updateItem\": {\n \"request_parameters\": [\n \"TableName\"\n ],\n \"response_parameters\": [\n \"ConsumedCapacity\",\n \"ItemCollectionMetrics\"\n ]\n },\n \"updateTable\": {\n \"request_parameters\": [\n \"AttributeDefinitions\",\n \"GlobalSecondaryIndexUpdates\",\n \"ProvisionedThroughput\",\n \"TableName\"\n ]\n }\n }\n },\n \"sqs\": {\n \"operations\": {\n \"addPermission\": {\n \"request_parameters\": [\n \"Label\",\n \"QueueUrl\"\n ]\n },\n \"changeMessageVisibility\": {\n \"request_parameters\": [\n \"QueueUrl\",\n \"VisibilityTimeout\"\n ]\n },\n \"changeMessageVisibilityBatch\": {\n \"request_parameters\": [\n \"QueueUrl\"\n ],\n \"response_parameters\": [\n \"Failed\"\n ]\n },\n \"createQueue\": {\n \"request_parameters\": [\n \"Attributes\",\n \"QueueName\"\n ]\n },\n \"deleteMessage\": {\n \"request_parameters\": [\n \"QueueUrl\"\n ]\n },\n \"deleteMessageBatch\": {\n \"request_parameters\": [\n \"QueueUrl\"\n ],\n \"response_parameters\": [\n \"Failed\"\n ]\n },\n \"deleteQueue\": {\n \"request_parameters\": [\n \"QueueUrl\"\n ]\n },\n \"getQueueAttributes\": {\n \"request_parameters\": [\n \"QueueUrl\"\n ],\n \"response_parameters\": [\n \"Attributes\"\n ]\n },\n \"getQueueUrl\": {\n \"request_parameters\": [\n \"QueueName\",\n \"QueueOwnerAWSAccountId\"\n ],\n \"response_parameters\": [\n \"QueueUrl\"\n ]\n },\n \"listDeadLetterSourceQueues\": {\n \"request_parameters\": [\n \"QueueUrl\"\n ],\n \"response_parameters\": [\n \"QueueUrls\"\n ]\n },\n \"listQueues\": {\n \"request_parameters\": [\n \"QueueNamePrefix\"\n ],\n \"response_descriptors\": {\n \"QueueUrls\": {\n \"list\": true,\n \"get_count\": true,\n \"rename_to\": \"queue_count\"\n }\n }\n },\n \"purgeQueue\": {\n \"request_parameters\": [\n \"QueueUrl\"\n ]\n },\n \"receiveMessage\": {\n \"request_parameters\": [\n \"AttributeNames\",\n \"MaxNumberOfMessages\",\n \"MessageAttributeNames\",\n \"QueueUrl\",\n \"VisibilityTimeout\",\n \"WaitTimeSeconds\"\n ],\n \"response_descriptors\": {\n \"Messages\": {\n \"list\": true,\n \"get_count\": true,\n \"rename_to\": \"message_count\"\n }\n }\n },\n \"removePermission\": {\n \"request_parameters\": [\n \"QueueUrl\"\n ]\n },\n \"sendMessage\": {\n \"request_parameters\": [\n \"DelaySeconds\",\n \"QueueUrl\"\n ],\n \"request_descriptors\": {\n \"MessageAttributes\": {\n \"get_keys\": true,\n \"rename_to\": \"message_attribute_names\"\n }\n },\n \"response_parameters\": [\n \"MessageId\"\n ]\n },\n \"sendMessageBatch\": {\n \"request_parameters\": [\n \"QueueUrl\"\n ],\n \"request_descriptors\": {\n \"Entries\": {\n \"list\": true,\n \"get_count\": true,\n \"rename_to\": \"message_count\"\n }\n },\n \"response_descriptors\": {\n \"Failed\": {\n \"list\": true,\n \"get_count\": true,\n \"rename_to\": \"failed_count\"\n },\n \"Successful\": {\n \"list\": true,\n \"get_count\": true,\n \"rename_to\": \"successful_count\"\n }\n }\n },\n \"setQueueAttributes\": {\n \"request_parameters\": [\n \"QueueUrl\"\n ],\n \"request_descriptors\": {\n \"Attributes\": {\n \"get_keys\": true,\n \"rename_to\": \"attribute_names\"\n }\n }\n }\n }\n },\n \"sns\": {\n \"operations\": {\n \"publish\": {\n \"request_parameters\": [\n \"TopicArn\"\n ]\n },\n \"publishBatch\": {\n \"request_parameters\": [\n \"TopicArn\"\n ]\n }\n }\n },\n \"lambda\": {\n \"operations\": {\n \"invoke\": {\n \"request_parameters\": [\n \"FunctionName\",\n \"InvocationType\",\n \"LogType\",\n \"Qualifier\"\n ],\n \"response_parameters\": [\n \"FunctionError\",\n \"StatusCode\"\n ]\n },\n \"invokeAsync\": {\n \"request_parameters\": [\n \"FunctionName\"\n ],\n \"response_parameters\": [\n \"Status\"\n ]\n }\n }\n },\n \"s3\": {\n \"operations\": {\n \"abortMultipartUpload\": {\n \"request_parameters\": [\n \"Key\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"completeMultipartUpload\": {\n \"request_parameters\": [\n \"Key\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"copyObject\": {\n \"request_parameters\": [\n \"CopySource\",\n \"Key\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"createBucket\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"createMultipartUpload\": {\n \"request_parameters\": [\n \"Key\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteBucket\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteBucketAnalyticsConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteBucketCors\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteBucketEncryption\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteBucketInventoryConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteBucketLifecycle\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteBucketMetricsConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteBucketPolicy\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteBucketReplication\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteBucketTagging\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteBucketWebsite\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteObject\": {\n \"request_parameters\": [\n \"Key\",\n \"VersionId\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteObjectTagging\": {\n \"request_parameters\": [\n \"Key\",\n \"VersionId\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"deleteObjects\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketAccelerateConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketAcl\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketAnalyticsConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketCors\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketEncryption\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketInventoryConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketLifecycle\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketLifecycleConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketLocation\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketLogging\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketMetricsConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketNotification\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketNotificationConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketPolicy\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketReplication\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketRequestPayment\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketTagging\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketVersioning\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getBucketWebsite\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getObject\": {\n \"request_parameters\": [\n \"Key\",\n \"VersionId\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getObjectAcl\": {\n \"request_parameters\": [\n \"Key\",\n \"VersionId\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getObjectTagging\": {\n \"request_parameters\": [\n \"Key\",\n \"VersionId\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"getObjectTorrent\": {\n \"request_parameters\": [\n \"Key\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"headBucket\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"headObject\": {\n \"request_parameters\": [\n \"Key\",\n \"VersionId\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"listBucketAnalyticsConfigurations\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"listBucketInventoryConfigurations\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"listBucketMetricsConfigurations\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"listMultipartUploads\": {\n \"request_parameters\": [\n \"Prefix\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"listObjectVersions\": {\n \"request_parameters\": [\n \"Prefix\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"listObjects\": {\n \"request_parameters\": [\n \"Prefix\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"listObjectsV2\": {\n \"request_parameters\": [\n \"Prefix\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"listParts\": {\n \"request_parameters\": [\n \"Key\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketAccelerateConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketAcl\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketAnalyticsConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketCors\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketEncryption\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketInventoryConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketLifecycle\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketLifecycleConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketLogging\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketMetricsConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketNotification\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketNotificationConfiguration\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketPolicy\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketReplication\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketRequestPayment\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketTagging\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketVersioning\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putBucketWebsite\": {\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putObject\": {\n \"request_parameters\": [\n \"Key\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putObjectAcl\": {\n \"request_parameters\": [\n \"Key\",\n \"VersionId\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"putObjectTagging\": {\n \"request_parameters\": [\n \"Key\",\n \"VersionId\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"restoreObject\": {\n \"request_parameters\": [\n \"Key\",\n \"VersionId\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"uploadPart\": {\n \"request_parameters\": [\n \"Key\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n },\n \"uploadPartCopy\": {\n \"request_parameters\": [\n \"CopySource\",\n \"Key\"\n ],\n \"request_descriptors\": {\n \"Bucket\": {\n \"rename_to\": \"bucket_name\"\n }\n }\n }\n }\n },\n \"sagemakerruntime\": {\n \"operations\": {\n \"invokeEndpoint\": {\n \"request_parameters\": [\n \"EndpointName\"\n ]\n }\n }\n }\n }\n}\n", "\"use strict\";\nvar fs = require('fs');\nvar logger = require('../logger');\nvar whitelist = require('../resources/aws_whitelist.json');\nvar paramTypes = {\n REQ_DESC: 'request_descriptors',\n REQ_PARAMS: 'request_parameters',\n RES_DESC: 'response_descriptors',\n RES_PARAMS: 'response_parameters'\n};\n/**\n * Represents a set of AWS services, operations and keys or params to capture.\n * @constructor\n * @param {string|Object} [source] - The location or source JSON object of the custom AWS whitelist file. If none is provided, the default file will be used.\n */\nfunction CallCapturer(source) {\n this.init(source);\n}\nCallCapturer.prototype.init = function init(source) {\n if (source) {\n if (typeof source === 'string') {\n logger.getLogger().info('Using custom AWS whitelist file: ' + source);\n this.services = loadWhitelist(JSON.parse(fs.readFileSync(source, 'utf8')));\n }\n else {\n logger.getLogger().info('Using custom AWS whitelist source.');\n this.services = loadWhitelist(source);\n }\n }\n else {\n this.services = whitelist.services;\n }\n};\nCallCapturer.prototype.append = function append(source) {\n var newServices = {};\n if (typeof source === 'string') {\n logger.getLogger().info('Appending AWS whitelist with custom file: ' + source);\n newServices = loadWhitelist(JSON.parse(fs.readFileSync(source, 'utf8')));\n }\n else {\n logger.getLogger().info('Appending AWS whitelist with a custom source.');\n newServices = loadWhitelist(source);\n }\n for (var attribute in newServices) {\n this.services[attribute] = newServices[attribute];\n }\n};\nCallCapturer.prototype.capture = function capture(serviceName, response) {\n var operation = response.request.operation;\n var call = this.services[serviceName] !== undefined ? this.services[serviceName].operations[operation] : null;\n if (call === null) {\n logger.getLogger().debug('Call \"' + serviceName + '.' + operation + '\" is not whitelisted for additional data capturing. Ignoring.');\n return;\n }\n var dataCaptured = {};\n for (var paramType in call) {\n var params = call[paramType];\n if (paramType === paramTypes.REQ_PARAMS) {\n captureCallParams(params, response.request.params, dataCaptured);\n }\n else if (paramType === paramTypes.REQ_DESC) {\n captureDescriptors(params, response.request.params, dataCaptured);\n }\n else if (paramType === paramTypes.RES_PARAMS) {\n if (response.data) {\n captureCallParams(params, response.data, dataCaptured);\n }\n }\n else if (paramType === paramTypes.RES_DESC) {\n if (response.data) {\n captureDescriptors(params, response.data, dataCaptured);\n }\n }\n else {\n logger.getLogger().error('Unknown parameter type \"' + paramType + '\". Must be \"request_descriptors\", \"response_descriptors\", ' +\n '\"request_parameters\" or \"response_parameters\".');\n }\n }\n return dataCaptured;\n};\nfunction captureCallParams(params, call, data) {\n params.forEach(function (param) {\n if (typeof call[param] !== 'undefined') {\n var formatted = toSnakeCase(param);\n this[formatted] = call[param];\n }\n }, data);\n}\nfunction captureDescriptors(descriptors, params, data) {\n for (var paramName in descriptors) {\n var attributes = descriptors[paramName];\n if (typeof params[paramName] !== 'undefined') {\n var paramData;\n if (attributes.list && attributes.get_count) {\n paramData = params[paramName] ? params[paramName].length : 0;\n }\n else {\n paramData = attributes.get_keys === true ? Object.keys(params[paramName]) : params[paramName];\n }\n if (typeof attributes.rename_to === 'string') {\n data[attributes.rename_to] = paramData;\n }\n else {\n var formatted = toSnakeCase(paramName);\n data[formatted] = paramData;\n }\n }\n }\n}\nfunction toSnakeCase(param) {\n if (param === 'IPAddress') {\n return 'ip_address';\n }\n else {\n return param.split(/(?=[A-Z])/).join('_').toLowerCase();\n }\n}\nfunction loadWhitelist(source) {\n var doc = source;\n if (doc.services === undefined) {\n throw new Error('Document formatting is incorrect. Expecting \"services\" param.');\n }\n return doc.services;\n}\nmodule.exports = CallCapturer;\n", "\"use strict\";\nvar CallCapturer = require('../../patchers/call_capturer.js');\nvar capturer = new CallCapturer();\n/**\n * Represents a AWS client call. Automatically captures data from the supplied response object,\n * Data captured depends on the whitelisting file supplied.\n * The base whitelisting file can be found at /lib/resources/aws_whitelist.json.\n * @constructor\n * @param {any} res - The response object from the AWS call. Typed as any to avoid AWS SDK dependency. Otherwise would be AWS.Response.\n * @param {string} serviceName - The service name of the AWS client.\n * @see https://github.com/aws/aws-sdk-js/blob/master/lib/response.js\n */\nfunction Aws(res, serviceName) {\n this.init(res, serviceName);\n}\nAws.prototype.init = function init(res, serviceName) {\n //TODO: account ID\n this.operation = formatOperation(res.request.operation) || '';\n if (res && res.request && res.request.httpRequest && res.request.httpRequest.region) {\n this.region = res.request.httpRequest.region;\n }\n if (res && res.requestId) {\n this.request_id = res.requestId;\n }\n this.retries = res.retryCount || 0;\n if (res.extendedRequestId && serviceName && serviceName.toLowerCase() === 's3') {\n this.id_2 = res.extendedRequestId;\n }\n if (serviceName) {\n this.addData(capturer.capture(serviceName.toLowerCase(), res));\n }\n};\nAws.prototype.addData = function addData(data) {\n for (var attribute in data) {\n this[attribute] = data[attribute];\n }\n};\n/**\n * Overrides the default whitelisting file to specify what params to capture on each AWS Service call.\n * @param {string|Object} source - The path to the custom whitelist file, or a whitelist source JSON object.\n * @exports setAWSWhitelist\n */\nvar setAWSWhitelist = function setAWSWhitelist(source) {\n if (!source || source instanceof String || !(typeof source === 'string' || (source instanceof Object))) {\n throw new Error('Please specify a path to the local whitelist file, or supply a whitelist source object.');\n }\n capturer = new CallCapturer(source);\n};\n/**\n * Appends to the default whitelisting file to specify what params to capture on each AWS Service call.\n * @param {string|Object} source - The path to the custom whitelist file, or a whitelist source JSON object.\n * @exports appendAWSWhitelist\n */\nvar appendAWSWhitelist = function appendAWSWhitelist(source) {\n if (!source || source instanceof String || !(typeof source === 'string' || (source instanceof Object))) {\n throw new Error('Please specify a path to the local whitelist file, or supply a whitelist source object.');\n }\n capturer.append(source);\n};\nfunction formatOperation(operation) {\n if (!operation) {\n return;\n }\n return operation.charAt(0).toUpperCase() + operation.slice(1);\n}\nmodule.exports = Aws;\nmodule.exports.appendAWSWhitelist = appendAWSWhitelist;\nmodule.exports.setAWSWhitelist = setAWSWhitelist;\n", "\"use strict\";\n/**\n * Capture module.\n * @module capture\n */\nvar contextUtils = require('./context_utils');\nvar logger = require('./logger');\n/**\n * Wrap to automatically capture information for the segment.\n * @param {string} name - The name of the new subsegment.\n * @param {function} fcn - The function context to wrap. Can take a single 'subsegment' argument.\n * @param {Segment|Subsegment} [parent] - The parent for the new subsegment, for manual mode.\n * @alias module:capture.captureFunc\n * @return {*} - Returns the result if any by executing the provided function.\n */\nvar captureFunc = function captureFunc(name, fcn, parent) {\n validate(name, fcn);\n var current, executeFcn;\n var parentSeg = contextUtils.resolveSegment(parent);\n if (!parentSeg) {\n logger.getLogger().warn('Failed to capture function.');\n return fcn();\n }\n current = parentSeg.addNewSubsegment(name);\n executeFcn = captureFcn(fcn, current);\n try {\n const response = executeFcn(current);\n current.close();\n return response;\n }\n catch (e) {\n current.close(e);\n throw (e);\n }\n};\n/**\n * Wrap to automatically capture information for the sub/segment. You must close the segment\n * manually from within the function.\n * @param {string} name - The name of the new subsegment.\n * @param {function} fcn - The function context to wrap. Must take a single 'subsegment' argument and call 'subsegment.close([optional error])' when the async function completes.\n * @param {Segment|Subsegment} [parent] - The parent for the new subsegment, for manual mode.\n * @alias module:capture.captureAsyncFunc\n * @return {*} - Returns a promise by executing the provided async function.\n */\nvar captureAsyncFunc = function captureAsyncFunc(name, fcn, parent) {\n validate(name, fcn);\n var current, executeFcn;\n var parentSeg = contextUtils.resolveSegment(parent);\n if (!parentSeg) {\n logger.getLogger().warn('Failed to capture async function.');\n return fcn();\n }\n current = parentSeg.addNewSubsegment(name);\n executeFcn = captureFcn(fcn, current);\n try {\n return executeFcn(current);\n }\n catch (e) {\n current.close(e);\n throw (e);\n }\n};\n/**\n * Wrap to automatically capture information for the sub/segment. This wraps the callback and returns a function.\n * when executed, all arguments are passed through accordingly. An additional argument is appended to gain access to the newly created subsegment.\n * For this reason, always call the captured callback with the full list of arguments.\n * @param {string} name - The name of the new subsegment.\n * @param {function} fcn - The function context to wrap. Can take a single 'subsegment' argument.\n * @param {Segment|Subsegment} [parent] - The parent for the new subsegment, for manual mode.\n * @alias module:capture.captureCallbackFunc\n */\nvar captureCallbackFunc = function captureCallbackFunc(name, fcn, parent) {\n validate(name, fcn);\n var base = contextUtils.resolveSegment(parent);\n if (!base) {\n logger.getLogger().warn('Failed to capture callback function.');\n return fcn;\n }\n base.incrementCounter();\n return function () {\n var parentSeg = contextUtils.resolveSegment(parent);\n var args = Array.prototype.slice.call(arguments);\n captureFunc(name, fcn.bind.apply(fcn, [null].concat(args)), parentSeg);\n base.decrementCounter();\n }.bind(this);\n};\nfunction captureFcn(fcn, current) {\n var executeFcn;\n if (contextUtils.isAutomaticMode()) {\n var session = contextUtils.getNamespace();\n var contextFcn = function () {\n var value;\n session.run(function () {\n contextUtils.setSegment(current);\n value = fcn(current);\n });\n return value;\n };\n executeFcn = contextFcn;\n }\n else {\n executeFcn = fcn;\n }\n return executeFcn;\n}\nfunction validate(name, fcn) {\n var error;\n if (!name || typeof name !== 'string') {\n error = 'Param \"name\" must be a non-empty string.';\n logger.getLogger().error(error);\n throw new Error(error);\n }\n else if (typeof fcn !== 'function') {\n error = 'Param \"fcn\" must be a function.';\n logger.getLogger().error(error);\n throw new Error(error);\n }\n}\nmodule.exports.captureFunc = captureFunc;\nmodule.exports.captureAsyncFunc = captureAsyncFunc;\nmodule.exports.captureCallbackFunc = captureCallbackFunc;\n", "\"use strict\";\n/**\n * Capture module.\n * @module aws_p\n */\nvar semver = require('semver');\nvar Aws = require('../segments/attributes/aws');\nvar contextUtils = require('../context_utils');\nvar Utils = require('../utils');\nvar logger = require('../logger');\nvar minVersion = '2.7.15';\nvar throttledErrorDefault = function throttledErrorDefault() {\n return false; // If the customer doesn't provide an aws-sdk with a throttled error function, we can't make assumptions.\n};\n/**\n * Configures the AWS SDK to automatically capture information for the segment.\n * All created clients will automatically be captured. See 'captureAWSClient'\n * for additional details.\n * @param {AWS} awssdk - The Javascript AWS SDK.\n * @alias module:aws_p.captureAWS\n * @returns {AWS}\n * @see https://github.com/aws/aws-sdk-js\n */\nvar captureAWS = function captureAWS(awssdk) {\n if (!semver.gte(awssdk.VERSION, minVersion)) {\n throw new Error('AWS SDK version ' + minVersion + ' or greater required.');\n }\n for (var prop in awssdk) {\n if (awssdk[prop].serviceIdentifier) {\n var Service = awssdk[prop];\n Service.prototype.customizeRequests(captureAWSRequest);\n }\n }\n return awssdk;\n};\n/**\n * Configures any AWS Client instance to automatically capture information for the segment.\n * For manual mode, a param with key called 'Segment' is required as a part of the AWS\n * call paramaters, and must reference a Segment or Subsegment object.\n * @param {AWS.Service} service - An instance of a AWS service to wrap.\n * @alias module:aws_p.captureAWSClient\n * @returns {AWS.Service}\n * @see https://github.com/aws/aws-sdk-js\n */\nvar captureAWSClient = function captureAWSClient(service) {\n service.customizeRequests(captureAWSRequest);\n return service;\n};\nfunction captureAWSRequest(req) {\n var parent = contextUtils.resolveSegment(contextUtils.resolveManualSegmentParams(req.params));\n if (!parent) {\n var output = this.serviceIdentifier + '.' + req.operation;\n if (!contextUtils.isAutomaticMode()) {\n logger.getLogger().info('Call ' + output + ' requires a segment object' +\n ' on the request params as \"XRaySegment\" for tracing in manual mode. Ignoring.');\n }\n else {\n logger.getLogger().info('Call ' + output +\n ' is missing the sub/segment context for automatic mode. Ignoring.');\n }\n return req;\n }\n var throttledError = this.throttledError || throttledErrorDefault;\n var stack = (new Error()).stack;\n let subsegment;\n if (parent.notTraced) {\n subsegment = parent.addNewSubsegmentWithoutSampling(this.serviceIdentifier);\n }\n else {\n subsegment = parent.addNewSubsegment(this.serviceIdentifier);\n }\n var traceId = parent.segment ? parent.segment.trace_id : parent.trace_id;\n const data = parent.segment ? parent.segment.additionalTraceData : parent.additionalTraceData;\n var buildListener = function (req) {\n let traceHeader = 'Root=' + traceId + ';Parent=' + subsegment.id +\n ';Sampled=' + (subsegment.notTraced ? '0' : '1');\n if (data != null) {\n for (const [key, value] of Object.entries(data)) {\n traceHeader += ';' + key + '=' + value;\n }\n }\n req.httpRequest.headers['X-Amzn-Trace-Id'] = traceHeader;\n };\n var completeListener = function (res) {\n subsegment.addAttribute('namespace', 'aws');\n subsegment.addAttribute('aws', new Aws(res, subsegment.name));\n var httpRes = res.httpResponse;\n if (httpRes) {\n subsegment.addAttribute('http', new HttpResponse(httpRes));\n if (httpRes.statusCode === 429 || (res.error && throttledError(res.error))) {\n subsegment.addThrottleFlag();\n }\n }\n if (res.error) {\n var err = { message: res.error.message, name: res.error.code, stack: stack };\n if (httpRes && httpRes.statusCode) {\n if (Utils.getCauseTypeFromHttpStatus(httpRes.statusCode) == 'error') {\n subsegment.addErrorFlag();\n }\n subsegment.close(err, true);\n }\n else {\n subsegment.close(err);\n }\n }\n else {\n if (httpRes && httpRes.statusCode) {\n var cause = Utils.getCauseTypeFromHttpStatus(httpRes.statusCode);\n if (cause) {\n subsegment[cause] = true;\n }\n }\n subsegment.close();\n }\n };\n req.on('beforePresign', function (req) {\n // Only the AWS Presigner triggers this event,\n // so we can rely on this event to notify us when\n // a request is for a presigned url\n parent.removeSubsegment(subsegment);\n parent.decrementCounter();\n req.removeListener('build', buildListener);\n req.removeListener('complete', completeListener);\n });\n req.on('build', buildListener).on('complete', completeListener);\n if (!req.__send) {\n req.__send = req.send;\n req.send = function (callback) {\n if (contextUtils.isAutomaticMode()) {\n var session = contextUtils.getNamespace();\n session.run(function () {\n contextUtils.setSegment(subsegment);\n req.__send(callback);\n });\n }\n else {\n req.__send(callback);\n }\n };\n }\n}\nfunction HttpResponse(res) {\n this.init(res);\n}\nHttpResponse.prototype.init = function init(res) {\n this.response = {\n status: res.statusCode || '',\n };\n if (res.headers && res.headers['content-length']) {\n this.response.content_length = res.headers['content-length'];\n }\n};\nmodule.exports.captureAWSClient = captureAWSClient;\nmodule.exports.captureAWS = captureAWS;\n", "/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NODEJS_TIMEOUT_ERROR_CODES = exports.TRANSIENT_ERROR_STATUS_CODES = exports.TRANSIENT_ERROR_CODES = exports.THROTTLING_ERROR_CODES = exports.CLOCK_SKEW_ERROR_CODES = void 0;\nexports.CLOCK_SKEW_ERROR_CODES = [\n \"AuthFailure\",\n \"InvalidSignatureException\",\n \"RequestExpired\",\n \"RequestInTheFuture\",\n \"RequestTimeTooSkewed\",\n \"SignatureDoesNotMatch\",\n];\nexports.THROTTLING_ERROR_CODES = [\n \"BandwidthLimitExceeded\",\n \"EC2ThrottledException\",\n \"LimitExceededException\",\n \"PriorRequestNotComplete\",\n \"ProvisionedThroughputExceededException\",\n \"RequestLimitExceeded\",\n \"RequestThrottled\",\n \"RequestThrottledException\",\n \"SlowDown\",\n \"ThrottledException\",\n \"Throttling\",\n \"ThrottlingException\",\n \"TooManyRequestsException\",\n \"TransactionInProgressException\",\n];\nexports.TRANSIENT_ERROR_CODES = [\"TimeoutError\", \"RequestTimeout\", \"RequestTimeoutException\"];\nexports.TRANSIENT_ERROR_STATUS_CODES = [500, 502, 503, 504];\nexports.NODEJS_TIMEOUT_ERROR_CODES = [\"ECONNRESET\", \"ECONNREFUSED\", \"EPIPE\", \"ETIMEDOUT\"];\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isServerError = exports.isTransientError = exports.isThrottlingError = exports.isClockSkewError = exports.isRetryableByTrait = void 0;\nconst constants_1 = require(\"./constants\");\nconst isRetryableByTrait = (error) => error.$retryable !== undefined;\nexports.isRetryableByTrait = isRetryableByTrait;\nconst isClockSkewError = (error) => constants_1.CLOCK_SKEW_ERROR_CODES.includes(error.name);\nexports.isClockSkewError = isClockSkewError;\nconst isThrottlingError = (error) => {\n var _a, _b;\n return ((_a = error.$metadata) === null || _a === void 0 ? void 0 : _a.httpStatusCode) === 429 ||\n constants_1.THROTTLING_ERROR_CODES.includes(error.name) ||\n ((_b = error.$retryable) === null || _b === void 0 ? void 0 : _b.throttling) == true;\n};\nexports.isThrottlingError = isThrottlingError;\nconst isTransientError = (error) => {\n var _a;\n return constants_1.TRANSIENT_ERROR_CODES.includes(error.name) ||\n constants_1.NODEJS_TIMEOUT_ERROR_CODES.includes((error === null || error === void 0 ? void 0 : error.code) || \"\") ||\n constants_1.TRANSIENT_ERROR_STATUS_CODES.includes(((_a = error.$metadata) === null || _a === void 0 ? void 0 : _a.httpStatusCode) || 0);\n};\nexports.isTransientError = isTransientError;\nconst isServerError = (error) => {\n var _a;\n if (((_a = error.$metadata) === null || _a === void 0 ? void 0 : _a.httpStatusCode) !== undefined) {\n const statusCode = error.$metadata.httpStatusCode;\n if (500 <= statusCode && statusCode <= 599 && !(0, exports.isTransientError)(error)) {\n return true;\n }\n return false;\n }\n return false;\n};\nexports.isServerError = isServerError;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"@smithy/service-error-classification\"), exports);\n", "\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.captureAWSClient = void 0;\nconst service_error_classification_1 = require(\"@aws-sdk/service-error-classification\");\nconst aws_1 = __importDefault(require(\"../segments/attributes/aws\"));\nconst querystring_1 = require(\"querystring\");\nconst subsegment_1 = __importDefault(require(\"../segments/attributes/subsegment\"));\nconst contextUtils = require('../context_utils');\nconst logger = require('../logger');\nconst { safeParseInt } = require('../utils');\nconst utils_1 = require(\"../utils\");\nconst XRAY_PLUGIN_NAME = 'XRaySDKInstrumentation';\nconst buildAttributesFromMetadata = async (service, operation, region, commandInput, res, error) => {\n var _a, _b, _c;\n const { extendedRequestId, requestId, httpStatusCode: statusCode, attempts } = ((_a = res === null || res === void 0 ? void 0 : res.output) === null || _a === void 0 ? void 0 : _a.$metadata) || (error === null || error === void 0 ? void 0 : error.$metadata);\n const aws = new aws_1.default({\n extendedRequestId,\n requestId,\n retryCount: attempts,\n data: res === null || res === void 0 ? void 0 : res.output,\n request: {\n operation,\n params: commandInput,\n httpRequest: {\n region,\n statusCode,\n },\n },\n }, service);\n const http = {};\n if (statusCode) {\n http.response = {};\n http.response.status = statusCode;\n }\n if (((_b = res === null || res === void 0 ? void 0 : res.response) === null || _b === void 0 ? void 0 : _b.headers) && ((_c = res === null || res === void 0 ? void 0 : res.response) === null || _c === void 0 ? void 0 : _c.headers['content-length']) !== undefined) {\n if (!http.response) {\n http.response = {};\n }\n http.response.content_length = safeParseInt(res.response.headers['content-length']);\n }\n return [aws, http];\n};\nfunction addFlags(http, subsegment, err) {\n var _a, _b, _c;\n if (err && (0, service_error_classification_1.isThrottlingError)(err)) {\n subsegment.addThrottleFlag();\n }\n else if (safeParseInt((_a = http.response) === null || _a === void 0 ? void 0 : _a.status) === 429 || safeParseInt((_b = err === null || err === void 0 ? void 0 : err.$metadata) === null || _b === void 0 ? void 0 : _b.httpStatusCode) === 429) {\n subsegment.addThrottleFlag();\n }\n const cause = (0, utils_1.getCauseTypeFromHttpStatus)(safeParseInt((_c = http.response) === null || _c === void 0 ? void 0 : _c.status));\n if (cause === 'fault') {\n subsegment.addFaultFlag();\n }\n else if (cause === 'error') {\n subsegment.addErrorFlag();\n }\n}\nconst getXRayMiddleware = (config, manualSegment) => (next, context) => async (args) => {\n var _a;\n const segment = contextUtils.isAutomaticMode() ? contextUtils.resolveSegment() : manualSegment;\n const { clientName, commandName } = context;\n const commandInput = (_a = args === null || args === void 0 ? void 0 : args.input) !== null && _a !== void 0 ? _a : {};\n const commandOperation = commandName.slice(0, -7); // Strip trailing \"Command\" string\n const operation = commandOperation.charAt(0).toLowerCase() + commandOperation.slice(1);\n const service = clientName.slice(0, -6); // Strip trailing \"Client\" string\n if (!segment) {\n const output = service + '.' + operation;\n if (!contextUtils.isAutomaticMode()) {\n logger.getLogger().info('Call ' + output + ' requires a segment object' +\n ' passed to captureAWSv3Client for tracing in manual mode. Ignoring.');\n }\n else {\n logger.getLogger().info('Call ' + output +\n ' is missing the sub/segment context for automatic mode. Ignoring.');\n }\n return next(args);\n }\n let subsegment;\n if (segment.notTraced) {\n subsegment = segment.addNewSubsegmentWithoutSampling(service);\n }\n else {\n subsegment = segment.addNewSubsegment(service);\n }\n subsegment.addAttribute('namespace', 'aws');\n const parent = (segment instanceof subsegment_1.default ? segment.segment : segment);\n const data = parent.segment ? parent.segment.additionalTraceData : parent.additionalTraceData;\n let traceHeader = (0, querystring_1.stringify)({\n Root: parent.trace_id,\n Parent: subsegment.id,\n Sampled: subsegment.notTraced ? '0' : '1',\n }, ';');\n if (data != null) {\n for (const [key, value] of Object.entries(data)) {\n traceHeader += ';' + key + '=' + value;\n }\n }\n args.request.headers['X-Amzn-Trace-Id'] = traceHeader;\n let res;\n try {\n res = await next(args);\n if (!res) {\n throw new Error('Failed to get response from instrumented AWS Client.');\n }\n const [aws, http] = await buildAttributesFromMetadata(service, operation, await config.region(), commandInput, res, null);\n subsegment.addAttribute('aws', aws);\n subsegment.addAttribute('http', http);\n addFlags(http, subsegment);\n subsegment.close();\n return res;\n }\n catch (err) {\n if (err.$metadata) {\n const [aws, http] = await buildAttributesFromMetadata(service, operation, await config.region(), commandInput, null, err);\n subsegment.addAttribute('aws', aws);\n subsegment.addAttribute('http', http);\n addFlags(http, subsegment, err);\n }\n const errObj = { message: err.message, name: err.name, stack: err.stack || new Error().stack };\n subsegment.close(errObj, true);\n throw err;\n }\n};\nconst xRayMiddlewareOptions = {\n name: XRAY_PLUGIN_NAME,\n step: 'build',\n};\nconst getXRayPlugin = (config, manualSegment) => ({\n applyToStack: (stack) => {\n stack.add(getXRayMiddleware(config, manualSegment), xRayMiddlewareOptions);\n },\n});\n/**\n * Instruments AWS SDK V3 clients with X-Ray via middleware.\n *\n * @param client - AWS SDK V3 client to instrument\n * @param manualSegment - Parent segment or subsegment that is passed in for manual mode users\n * @returns - the client with the X-Ray instrumentation middleware added to its middleware stack\n */\nfunction captureAWSClient(client, manualSegment) {\n // Remove existing middleware to ensure operation is idempotent\n client.middlewareStack.remove(XRAY_PLUGIN_NAME);\n client.middlewareStack.use(getXRayPlugin(client.config, manualSegment));\n return client;\n}\nexports.captureAWSClient = captureAWSClient;\n", "\"use strict\";\n/**\n * @module http_p\n */\n/**\n * This module patches the HTTP and HTTPS node built-in libraries and returns a copy of the module with tracing enabled.\n */\nvar url = require('url');\nvar contextUtils = require('../context_utils');\nvar Utils = require('../utils');\nvar logger = require('../logger');\nvar events = require('events');\n/**\n * Wraps the http/https.request() and .get() calls to automatically capture information for the segment.\n * This patches the built-in HTTP and HTTPS modules globally. If using a 3rd party HTTP library,\n * it should still use HTTP under the hood. Be sure to patch globally before requiring the 3rd party library.\n * 3rd party library compatibility is best effort. Some incompatibility issues may arise.\n * @param {http|https} module - The built in Node.js HTTP or HTTPS module.\n * @param {boolean} downstreamXRayEnabled - when true, adds a \"traced:true\" property to the subsegment\n * so the AWS X-Ray service expects a corresponding segment from the downstream service.\n * @param {function} subsegmentCallback - a callback that is called with the subsegment, the Node.js\n * http.ClientRequest, the Node.js http.IncomingMessage (if a response was received) and any error issued,\n * allowing custom annotations and metadata to be added.\n * to be added to the subsegment.\n * @alias module:http_p.captureHTTPsGlobal\n */\nvar captureHTTPsGlobal = function captureHTTPsGlobal(module, downstreamXRayEnabled, subsegmentCallback) {\n if (!module.__request) {\n enableCapture(module, downstreamXRayEnabled, subsegmentCallback);\n }\n};\n/**\n * Wraps the http/https.request() and .get() calls to automatically capture information for the segment.\n * Returns an instance of the HTTP or HTTPS module that is patched.\n * @param {http|https} module - The built in Node.js HTTP or HTTPS module.\n * @param {boolean} downstreamXRayEnabled - when true, adds a \"traced:true\" property to the subsegment\n * so the AWS X-Ray service expects a corresponding segment from the downstream service.\n * @param {function} subsegmentCallback - a callback that is called with the subsegment, the Node.js\n * http.ClientRequest, and the Node.js http.IncomingMessage to allow custom annotations and metadata\n * to be added to the subsegment.\n * @alias module:http_p.captureHTTPs\n * @returns {http|https}\n */\nvar captureHTTPs = function captureHTTPs(module, downstreamXRayEnabled, subsegmentCallback) {\n if (module.__request) {\n return module;\n }\n var tracedModule = {};\n Object.keys(module).forEach(function (val) {\n tracedModule[val] = module[val];\n });\n enableCapture(tracedModule, downstreamXRayEnabled, subsegmentCallback);\n return tracedModule;\n};\nfunction enableCapture(module, downstreamXRayEnabled, subsegmentCallback) {\n function captureOutgoingHTTPs(baseFunc, ...args) {\n let options;\n let callback;\n let hasUrl;\n let urlObj;\n let arg0 = args[0];\n if (typeof args[1] === 'object') {\n hasUrl = true;\n urlObj = typeof arg0 === 'string' ? new url.URL(arg0) : arg0;\n options = args[1],\n callback = args[2];\n }\n else {\n hasUrl = false;\n options = arg0;\n callback = args[1];\n }\n // Short circuit if the HTTP request has no options or is already being captured\n if (!options || (options.headers && (options.headers['X-Amzn-Trace-Id']))) {\n return baseFunc(...args);\n }\n // Case of calling a string URL without options, e.g.: http.request('http://amazon.com', callback)\n if (typeof options === 'string') {\n options = new url.URL(options);\n }\n if (!hasUrl) {\n urlObj = options;\n }\n const parent = contextUtils.resolveSegment(contextUtils.resolveManualSegmentParams(options));\n const hostname = options.hostname || options.host || urlObj.hostname || urlObj.host || 'Unknown host';\n if (!parent) {\n let output = '[ host: ' + hostname;\n output = options.method ? (output + ', method: ' + options.method) : output;\n output += ', path: ' + (urlObj.pathname || Utils.stripQueryStringFromPath(options.path)) + ' ]';\n if (!contextUtils.isAutomaticMode()) {\n logger.getLogger().info('Options for request ' + output +\n ' requires a segment object on the options params as \"XRaySegment\" for tracing in manual mode. Ignoring.');\n }\n else {\n logger.getLogger().info('Options for request ' + output +\n ' is missing the sub/segment context for automatic mode. Ignoring.');\n }\n // Options are not modified, only parsed for logging. We can pass in the original arguments.\n return baseFunc(...args);\n }\n let subsegment;\n if (parent.notTraced) {\n subsegment = parent.addNewSubsegmentWithoutSampling(hostname);\n }\n else {\n subsegment = parent.addNewSubsegment(hostname);\n }\n const root = parent.segment ? parent.segment : parent;\n subsegment.namespace = 'remote';\n if (!options.headers) {\n options.headers = {};\n }\n options.headers['X-Amzn-Trace-Id'] = 'Root=' + root.trace_id + ';Parent=' + subsegment.id +\n ';Sampled=' + (subsegment.notTraced ? '0' : '1');\n const errorCapturer = function errorCapturer(e) {\n if (subsegmentCallback) {\n subsegmentCallback(subsegment, this, null, e);\n }\n if (subsegment.http && subsegment.http.response) {\n if (Utils.getCauseTypeFromHttpStatus(subsegment.http.response.status) === 'error') {\n subsegment.addErrorFlag();\n }\n subsegment.close(e, true);\n }\n else {\n const madeItToDownstream = (e.code !== 'ECONNREFUSED');\n subsegment.addRemoteRequestData(this, null, madeItToDownstream && downstreamXRayEnabled);\n subsegment.close(e);\n }\n };\n const optionsCopy = Utils.objectWithoutProperties(options, ['Segment'], true);\n let req = baseFunc(...(hasUrl ? [arg0, optionsCopy] : [options]), function (res) {\n res.on('end', function () {\n if (subsegmentCallback) {\n subsegmentCallback(subsegment, this.req, res);\n }\n if (res.statusCode === 429) {\n subsegment.addThrottleFlag();\n }\n const cause = Utils.getCauseTypeFromHttpStatus(res.statusCode);\n if (cause) {\n subsegment[cause] = true;\n }\n subsegment.addRemoteRequestData(res.req, res, !!downstreamXRayEnabled);\n subsegment.close();\n });\n if (typeof callback === 'function') {\n if (contextUtils.isAutomaticMode()) {\n const session = contextUtils.getNamespace();\n session.run(function () {\n contextUtils.setSegment(subsegment);\n callback(res);\n });\n }\n else {\n callback(res);\n }\n // if no callback provided by user application, AND no explicit response listener\n // added by user application, then we consume the response so the 'end' event fires\n // See: https://nodejs.org/api/http.html#http_class_http_clientrequest\n }\n else if (res.req && res.req.listenerCount('response') === 0) {\n res.resume();\n }\n });\n // Use errorMonitor if available (in Node 12.17+), otherwise fall back to standard error listener\n // See: https://nodejs.org/dist/latest-v12.x/docs/api/events.html#events_eventemitter_errormonitor\n req.on(events.errorMonitor || 'error', errorCapturer);\n return req;\n }\n module.__request = module.request;\n function captureHTTPsRequest(...args) {\n return captureOutgoingHTTPs(module.__request, ...args);\n }\n module.__get = module.get;\n function captureHTTPsGet(...args) {\n return captureOutgoingHTTPs(module.__get, ...args);\n }\n Object.defineProperties(module, {\n request: { value: captureHTTPsRequest, configurable: true, enumerable: true, writable: true },\n get: { value: captureHTTPsGet, configurable: true, enumerable: true, writable: true },\n });\n}\nmodule.exports.captureHTTPsGlobal = captureHTTPsGlobal;\nmodule.exports.captureHTTPs = captureHTTPs;\n", "\"use strict\";\n/**\n * @module promise_p\n */\n/**\n * This module patches native Promise libraries provided by V8 engine\n * so all subsegments generated within Promise are attached to the correct parent.\n */\nconst contextUtils = require('../context_utils');\nconst originalThen = Symbol('original then');\nconst originalCatch = Symbol('original catch');\nfunction patchPromise(Promise) {\n const then = Promise.prototype.then;\n if (!then[originalThen]) {\n Promise.prototype.then = function (onFulfilled, onRejected) {\n if (contextUtils.isAutomaticMode()\n && tryGetCurrentSegment()) {\n const ns = contextUtils.getNamespace();\n onFulfilled = onFulfilled && ns.bind(onFulfilled);\n onRejected = onRejected && ns.bind(onRejected);\n }\n return then.call(this, onFulfilled, onRejected);\n };\n Promise.prototype.then[originalThen] = then;\n }\n const origCatch = Promise.prototype.catch;\n if (origCatch && !origCatch[originalCatch]) {\n Promise.prototype.catch = function (onRejected) {\n if (contextUtils.isAutomaticMode()\n && tryGetCurrentSegment()) {\n const ns = contextUtils.getNamespace();\n onRejected = onRejected && ns.bind(onRejected);\n }\n return origCatch.call(this, onRejected);\n };\n Promise.prototype.catch[originalCatch] = origCatch;\n }\n}\nfunction unpatchPromise(Promise) {\n const then = Promise.prototype.then;\n if (then[originalThen]) {\n Promise.prototype.then = then[originalThen];\n }\n const origCatch = Promise.prototype.catch;\n if (origCatch && origCatch[originalCatch]) {\n Promise.prototype.catch = origCatch[originalCatch];\n }\n}\nfunction tryGetCurrentSegment() {\n try {\n return contextUtils.getSegment();\n }\n catch (e) {\n return undefined;\n }\n}\nfunction capturePromise() {\n patchPromise(Promise);\n}\nfunction uncapturePromise() {\n unpatchPromise(Promise);\n}\ncapturePromise.patchThirdPartyPromise = patchPromise;\nmodule.exports.capturePromise = capturePromise;\nmodule.exports.uncapturePromise = uncapturePromise;\n", "\"use strict\";\n/**\n * Represents a SQL database call.\n * @constructor\n * @param {string} databaseVer - The version on the database (user supplied).\n * @param {string} driverVer - The version on the database driver (user supplied).\n * @param {string} user - The user associated to the database call.\n * @param {string} queryType - The SQL query type.\n */\nfunction SqlData(databaseVer, driverVer, user, url, queryType) {\n this.init(databaseVer, driverVer, user, url, queryType);\n}\nSqlData.prototype.init = function init(databaseVer, driverVer, user, url, queryType) {\n if (databaseVer) {\n this.database_version = databaseVer;\n }\n if (driverVer) {\n this.driver_version = driverVer;\n }\n if (queryType) {\n this.preparation = queryType;\n }\n this.url = url;\n this.user = user;\n};\nmodule.exports = SqlData;\n", "\"use strict\";\nvar contextUtils = require('./context_utils');\nvar logging = require('./logger');\nvar segmentUtils = require('./segments/segment_utils');\nvar utils = require('./utils');\nvar LambdaEnv = require('./env/aws_lambda');\n// Import Data from package.json,\n// If the importing of package.json fails leave\n// pkginfo as an empty object\nvar pkginfo = {};\ntry {\n pkginfo = require('../../package.json');\n}\ncatch (err) {\n logging.getLogger().debug('Failed to load SDK data:', err);\n}\nvar UNKNOWN = 'unknown';\n/**\n * A module representing the AWSXRay SDK.\n * @namespace AWSXRay\n */\nvar AWSXRay = {\n /**\n * @memberof AWSXRay\n * @type {object}\n * @namespace AWSXRay.plugins\n */\n plugins: {\n /**\n * Exposes the AWS EC2 plugin.\n * @memberof AWSXRay.plugins\n */\n EC2Plugin: require('./segments/plugins/ec2_plugin'),\n /**\n * Exposes the AWS ECS plugin.\n * @memberof AWSXRay.plugins\n */\n ECSPlugin: require('./segments/plugins/ecs_plugin'),\n /**\n * Exposes the AWS Elastic Beanstalk plugin.\n * @memberof AWSXRay.plugins\n */\n ElasticBeanstalkPlugin: require('./segments/plugins/elastic_beanstalk_plugin'),\n },\n /**\n * Enables use of plugins to capture additional data for segments.\n * @param {Array} plugins - A configurable subset of AWSXRay.plugins.\n * @memberof AWSXRay\n * @see AWSXRay.plugins\n */\n config: function (plugins) {\n var pluginData = {};\n plugins.forEach(function (plugin) {\n plugin.getData(function (data) {\n if (data) {\n for (var attribute in data) {\n pluginData[attribute] = data[attribute];\n }\n }\n });\n segmentUtils.setOrigin(plugin.originName);\n segmentUtils.setPluginData(pluginData);\n });\n },\n /**\n * Overrides the default whitelisting file to specify what params to capture on each AWS Service call.\n * If a service or API is not listed, no additional data is captured.\n * The base whitelisting file can be found at /lib/resources/aws_whitelist.json\n * @param {string|Object} source - The path to the custom whitelist file, or a whitelist source JSON object.\n * @memberof AWSXRay\n */\n setAWSWhitelist: require('./segments/attributes/aws').setAWSWhitelist,\n /**\n * Appends to the current whitelisting file.\n * In the case of a duplicate service API listed, the new source will override the previous values.\n * @param {string|Object} source - The path to the custom whitelist file, or a whitelist source JSON object.\n * @memberof AWSXRay\n */\n appendAWSWhitelist: require('./segments/attributes/aws').appendAWSWhitelist,\n /**\n * Overrides the default streaming threshold (100).\n * The threshold represents the maximum number of subsegments on a single segment before\n * the SDK begins to send the completed subsegments out of band of the main segment.\n * Reduce this threshold if you see the 'Segment too large to send' error.\n * @param {number} threshold - The new threshold to use.\n * @memberof AWSXRay\n */\n setStreamingThreshold: segmentUtils.setStreamingThreshold,\n /**\n * Set your own logger for the SDK.\n * @param {Object} logger - A logger which responds to debug/info/warn/error calls.\n * @memberof AWSXRay\n */\n setLogger: logging.setLogger,\n /**\n * Gets the set logger for the SDK.\n * @memberof AWSXRay\n */\n getLogger: logging.getLogger,\n /**\n * Configures the address and port the daemon is expected to be on.\n * @param {string} address - Address of the daemon the segments should be sent to. Expects 'x.x.x.x', ':yyyy' or 'x.x.x.x:yyyy' IPv4 formats.\n * @module DaemonConfig\n * @memberof AWSXRay\n * @function\n * @see module:DaemonConfig.setDaemonAddress\n */\n setDaemonAddress: require('./daemon_config').setDaemonAddress,\n /**\n * @param {string} name - The name of the new subsegment.\n * @param {function} fcn - The function conext to wrap.\n * @param {Segment|Subsegment} [parent] - The parent for the new subsegment, for manual mode.\n * @memberof AWSXRay\n * @function\n * @see module:capture.captureFunc\n */\n captureFunc: require('./capture').captureFunc,\n /**\n * @param {string} name - The name of the new subsegment.\n * @param {function} fcn - The function conext to wrap.\n * @param {Segment|Subsegment} [parent] - The parent for the new subsegment, for manual mode.\n * @memberof AWSXRay\n * @function\n * @see module:capture.captureAsyncFunc\n */\n captureAsyncFunc: require('./capture').captureAsyncFunc,\n /**\n * @param {string} name - The name of the new subsegment.\n * @param {function} fcn - The function conext to wrap.\n * @param {Segment|Subsegment} [parent] - The parent for the new subsegment, for manual mode.\n * @memberof AWSXRay\n * @function\n * @see module:capture.captureCallbackFunc\n */\n captureCallbackFunc: require('./capture').captureCallbackFunc,\n /**\n * @param {AWS} awssdk - The Javascript AWS SDK.\n * @memberof AWSXRay\n * @function\n * @see module:aws_p.captureAWS\n */\n captureAWS: require('./patchers/aws_p').captureAWS,\n /**\n * @param {AWS.Service} service - An instance of a AWS service to wrap.\n * @memberof AWSXRay\n * @function\n * @see module:aws_p.captureAWSClient\n */\n captureAWSClient: require('./patchers/aws_p').captureAWSClient,\n /**\n * @param {AWSv3.Service} service - An instance of a AWS SDK v3 service to wrap.\n * @param {Segment|Subsegment} segment - Optional segment for manual mode.\n * @memberof AWSXRay\n * @function\n * @see module:aws3_p.captureAWSClient\n */\n captureAWSv3Client: require('./patchers/aws3_p').captureAWSClient,\n /**\n * @param {http|https} module - The built in Node.js HTTP or HTTPS module.\n * @memberof AWSXRay\n * @function\n * @returns {http|https}\n * @see module:http_p.captureHTTPs\n */\n captureHTTPs: require('./patchers/http_p').captureHTTPs,\n /**\n * @param {http|https} module - The built in Node.js HTTP or HTTPS module.\n * @memberof AWSXRay\n * @function\n * @see module:http_p.captureHTTPsGlobal\n */\n captureHTTPsGlobal: require('./patchers/http_p').captureHTTPsGlobal,\n /**\n * @memberof AWSXRay\n * @function\n * @see module:promise_p.capturePromise\n */\n capturePromise: require('./patchers/promise_p').capturePromise,\n /**\n * Exposes various helper methods.\n * @memberof AWSXRay\n * @function\n * @see module:utils\n */\n utils: utils,\n /**\n * @memberof AWSXRay\n * @type {object}\n * @namespace AWSXRay.database\n */\n database: {\n /**\n * Exposes the SqlData class.\n * @memberof AWSXRay.database\n * @see SqlData\n */\n SqlData: require('./database/sql_data'),\n },\n /**\n * Exposes the Middleware Utils class.\n * @memberof AWSXRay\n * @function\n * @see module:mw_utils\n */\n middleware: require('./middleware/mw_utils'),\n /**\n * Gets the current namespace of the context.\n * Used for supporting functions that can be used in automatic mode.\n * @memberof AWSXRay\n * @function\n * @returns {Segment|Subsegment}\n * @see module:context_utils.getNamespace\n */\n getNamespace: contextUtils.getNamespace,\n /**\n * Resolves the current segment or subsegment, checks manual and automatic modes.\n * Used for supporting functions that can be used in both manual and automatic modes.\n * @memberof AWSXRay\n * @function\n * @returns {Segment|Subsegment}\n * @see module:context_utils.resolveSegment\n */\n resolveSegment: contextUtils.resolveSegment,\n /**\n * Returns the current segment or subsegment. For use with automatic mode only.\n * @memberof AWSXRay\n * @function\n * @returns {Segment|Subsegment}\n * @see module:context_utils.getSegment\n */\n getSegment: contextUtils.getSegment,\n /**\n * Sets the current segment or subsegment. For use with automatic mode only.\n * @memberof AWSXRay\n * @function\n * @see module:context_utils.setSegment\n */\n setSegment: contextUtils.setSegment,\n /**\n * Returns true if automatic mode is enabled, otherwise false.\n * @memberof AWSXRay\n * @function\n * @see module:context_utils.isAutomaticMode\n */\n isAutomaticMode: contextUtils.isAutomaticMode,\n /**\n * Enables automatic mode. Automatic mode uses 'cls-hooked'.\n * @see https://github.com/jeff-lewis/cls-hooked\n * @memberof AWSXRay\n * @function\n * @see module:context_utils.enableAutomaticMode\n */\n enableAutomaticMode: contextUtils.enableAutomaticMode,\n /**\n * Disables automatic mode. Current segment or subsegment must be passed manually\n * via the parent optional on captureFunc, captureAsyncFunc etc.\n * @memberof AWSXRay\n * @function\n * @see module:context_utils.enableManualMode\n */\n enableManualMode: contextUtils.enableManualMode,\n /**\n * Sets the context missing strategy.\n * @param {Object} strategy - The strategy to set. This object's contextMissing function will be called whenever trace context is not found.\n */\n setContextMissingStrategy: contextUtils.setContextMissingStrategy,\n /**\n * Exposes the segment class.\n * @memberof AWSXRay\n * @function\n */\n Segment: require('./segments/segment'),\n /**\n * Exposes the subsegment class.\n * @memberof AWSXRay\n * @see Subsegment\n */\n Subsegment: require('./segments/attributes/subsegment'),\n SegmentUtils: segmentUtils\n};\n/**\n * Exposes the IncomingRequestData, to capture incoming request data.\n * For use with middleware.\n * @memberof AWSXRay.middleware\n * @see IncomingRequestData\n */\nAWSXRay.middleware.IncomingRequestData = require('./middleware/incoming_request_data'),\n (function () {\n var data = {\n runtime: (process.release && process.release.name) ? process.release.name : UNKNOWN,\n runtime_version: process.version,\n version: process.env.npm_package_version || UNKNOWN,\n name: process.env.npm_package_name || UNKNOWN\n };\n var sdkData = {\n sdk: 'X-Ray for Node.js',\n sdk_version: pkginfo.version ? pkginfo.version : UNKNOWN,\n package: pkginfo.name ? pkginfo.name : UNKNOWN,\n };\n segmentUtils.setSDKData(sdkData);\n segmentUtils.setServiceData(data);\n if (process.env.LAMBDA_TASK_ROOT) {\n LambdaEnv.init();\n }\n })();\nmodule.exports = AWSXRay;\n", "\"use strict\";\n// Convenience file to require the SDK from the root of the repository\nmodule.exports = require('./aws-xray');\n", "import { gunzipSync } from 'zlib';\nimport { metricScope, Configuration, Unit } from 'aws-embedded-metrics';\nimport type { Context } from 'aws-lambda';\nimport { PromiseResult } from 'aws-sdk/lib/request';\nimport { SemVer } from 'semver';\nimport { METRICS_NAMESPACE, MetricName, LANGUAGE_DIMENSION } from './constants';\nimport * as aws from '../shared/aws.lambda-shared';\nimport { compressContent } from '../shared/compress-content.lambda-shared';\nimport * as constants from '../shared/constants';\nimport { requireEnv } from '../shared/env.lambda-shared';\nimport { DocumentationLanguage } from '../shared/language';\n\nConfiguration.namespace = METRICS_NAMESPACE;\n\nexport async function handler(event: InventoryCanaryEvent, context: Context) {\n console.log('Event:', JSON.stringify(event, null, 2));\n\n const scratchworkBucket = requireEnv('SCRATCHWORK_BUCKET_NAME');\n\n const {\n continuationToken,\n indexedPackages,\n packageNames,\n packageMajorVersions,\n perLanguage,\n } = event.continuationObjectKey\n ? await loadProgress(event.continuationObjectKey)\n : {\n continuationToken: undefined,\n indexedPackages: new Map<string, IndexedPackageStatus>(),\n packageNames: new Set<string>(),\n packageMajorVersions: new Set<string>(),\n perLanguage: new Map<string, PerLanguageData>(),\n };\n\n async function loadProgress(continuationObjectKey: string) {\n console.log(\n 'Found a continuation object key, retrieving data from the existing run...'\n );\n let { Body, ContentEncoding } = await aws\n .s3()\n .getObject({\n Bucket: scratchworkBucket,\n Key: continuationObjectKey,\n })\n .promise();\n // If it was compressed, decompress it.\n if (ContentEncoding === 'gzip') {\n Body = gunzipSync(Buffer.from(Body! as any));\n }\n if (!Body) {\n throw new Error(\n `Object key \"${event.continuationObjectKey}\" not found in bucket \"${scratchworkBucket}\".`\n );\n }\n console.log('Deserializing data...');\n const serializedState = Body.toString(\n 'utf-8'\n ) as Serialized<InventoryCanaryState>;\n const state = deserialize(serializedState);\n console.log('Deserializing finished.');\n return state;\n }\n\n /**\n * Records the status of a particular package, package major version, package\n * version, and package version submodule in the per-language state storage.\n * Whenever a new entry is added, a `MISSING` entry is automatically inserted\n * for the other languages (unless another entry already exists).\n *\n * If a submodule is provided, only that submodule's availability is updated.\n */\n function recordPerLanguage(\n language: DocumentationLanguage,\n status: DocumentationStatus,\n pkgName: string,\n pkgMajor: string,\n pkgVersion: string,\n submodule?: string\n ) {\n for (const lang of DocumentationLanguage.ALL) {\n doRecordPerLanguage(\n perLanguage,\n lang,\n // If the language is NOT the registered one, then we insert \"MISSING\".\n lang === language ? status : DocumentationStatus.MISSING,\n pkgName,\n pkgMajor,\n pkgVersion,\n submodule\n );\n }\n }\n\n async function saveProgress(\n latestContinuationToken: string\n ): Promise<InventoryCanaryEvent> {\n console.log('Serializing data...');\n const serializedState: Serialized<InventoryCanaryState> = serialize({\n continuationToken: latestContinuationToken,\n packageNames,\n packageMajorVersions,\n indexedPackages,\n perLanguage,\n });\n console.log('Serializing finished.');\n\n const { buffer, contentEncoding } = compressContent(\n Buffer.from(serializedState)\n );\n\n const keyName = `inventory-canary-progress-${Date.now()}`;\n await aws\n .s3()\n .putObject({\n Bucket: scratchworkBucket,\n Key: keyName,\n Body: buffer,\n ContentType: 'application/json',\n ContentEncoding: contentEncoding,\n Metadata: {\n 'Lambda-Log-Group': context.logGroupName,\n 'Lambda-Log-Stream': context.logStreamName,\n 'Lambda-Run-Id': context.awsRequestId,\n },\n })\n .promise();\n return {\n continuationObjectKey: keyName,\n };\n }\n\n /**\n * The time margin when we need to stop working through S3 keys when we're nearing the end of the Lambda time slice.\n *\n * Needs to account for the time taken to do both:\n *\n * - Going through the list+process loop one more time\n * - Creating metrics and uploading reports\n *\n * When we used to have this at 1 minute, we hit ~1 timeout a day. So set the margin\n * a bit wider than that.\n */\n const maxMetricProcessingTime = 120_000;\n\n const packageDataBucket = requireEnv('PACKAGE_DATA_BUCKET_NAME');\n\n for await (const [keys, latestContinuationToken] of relevantObjectKeys(\n packageDataBucket,\n continuationToken\n )) {\n for (const key of keys) {\n const [, name, version] = constants.STORAGE_KEY_FORMAT_REGEX.exec(key)!;\n\n packageNames.add(name);\n const majorVersion = `${name}@${new SemVer(version).major}`;\n packageMajorVersions.add(majorVersion);\n\n const fullName = `${name}@${version}`;\n\n // Ensure the package is fully registered for per-language status, even if no doc exists yet.\n for (const language of DocumentationLanguage.ALL) {\n recordPerLanguage(\n language,\n DocumentationStatus.MISSING,\n name,\n majorVersion,\n fullName\n );\n }\n\n if (!indexedPackages.has(fullName)) {\n indexedPackages.set(fullName, {});\n }\n const status = indexedPackages.get(fullName)!;\n\n if (key.endsWith(constants.METADATA_KEY_SUFFIX)) {\n status.metadataPresent = true;\n } else if (key.endsWith(constants.PACKAGE_KEY_SUFFIX)) {\n status.tarballPresent = true;\n } else if (key.endsWith(constants.ASSEMBLY_KEY_SUFFIX)) {\n status.assemblyPresent = true;\n } else if (key.endsWith(constants.UNINSTALLABLE_PACKAGE_SUFFIX)) {\n status.uninstallable = true;\n } else {\n let identified = false;\n for (const language of DocumentationLanguage.ALL) {\n const matchJson = submoduleKeyRegexp(language, 'json').exec(key);\n const matchMd = submoduleKeyRegexp(language, 'md').exec(key);\n if (matchJson != null) {\n const [, submodule, isUnsupported] = matchJson;\n if (status.submodules == null) {\n status.submodules = new Set();\n }\n status.submodules.add(`${fullName}.${submodule}`);\n recordPerLanguage(\n language,\n isUnsupported\n ? DocumentationStatus.UNSUPPORTED\n : DocumentationStatus.SUPPORTED,\n name,\n majorVersion,\n fullName,\n submodule\n );\n identified = true;\n } else if (\n key.endsWith(constants.docsKeySuffix(language, undefined, 'json'))\n ) {\n recordPerLanguage(\n language,\n DocumentationStatus.SUPPORTED,\n name,\n majorVersion,\n fullName\n );\n identified = true;\n } else if (\n key.endsWith(\n constants.notSupportedKeySuffix(language, undefined, 'json')\n )\n ) {\n recordPerLanguage(\n language,\n DocumentationStatus.UNSUPPORTED,\n name,\n majorVersion,\n fullName\n );\n identified = true;\n } else if (\n key.endsWith(\n constants.corruptAssemblyKeySuffix(language, undefined, 'json')\n )\n ) {\n recordPerLanguage(\n language,\n DocumentationStatus.CORRUPT_ASSEMBLY,\n name,\n majorVersion,\n fullName\n );\n identified = true;\n\n // Currently we generate both JSON files and markdown files, so for now\n // we record JSON files as the source of truth, but still identify\n // markdown files so they are not counted as unknown.\n } else if (matchMd != null) {\n identified = true;\n } else if (\n key.endsWith(constants.docsKeySuffix(language, undefined, 'md'))\n ) {\n identified = true;\n } else if (\n key.endsWith(\n constants.notSupportedKeySuffix(language, undefined, 'md')\n )\n ) {\n identified = true;\n } else if (\n key.endsWith(\n constants.corruptAssemblyKeySuffix(language, undefined, 'md')\n )\n ) {\n identified = true;\n }\n }\n if (!identified) {\n status.unknownObjects = status.unknownObjects ?? [];\n status.unknownObjects.push(key);\n }\n }\n }\n\n if (\n latestContinuationToken &&\n context.getRemainingTimeInMillis() <= maxMetricProcessingTime\n ) {\n console.log(\n 'Running up to the Lambda time limit and there are still items to process. Saving our current progress...'\n );\n return saveProgress(latestContinuationToken);\n }\n }\n\n const reports: Promise<\n PromiseResult<AWS.S3.PutObjectOutput, AWS.AWSError>\n >[] = [];\n\n function createReport(reportKey: string, packageVersions: string[]) {\n const report = JSON.stringify(packageVersions, null, 2);\n const { buffer, contentEncoding } = compressContent(Buffer.from(report));\n console.log(`Uploading list to s3://${packageDataBucket}/${reportKey}`);\n reports.push(\n aws\n .s3()\n .putObject({\n Body: buffer,\n Bucket: packageDataBucket,\n ContentEncoding: contentEncoding,\n ContentType: 'application/json',\n Expires: new Date(Date.now() + 300_000), // 5 minutes from now\n Key: reportKey,\n Metadata: {\n 'Lambda-Run-Id': context.awsRequestId,\n 'Lambda-Log-Group-Name': context.logGroupName,\n 'Lambda-Log-Stream-Name': context.logStreamName,\n },\n })\n .promise()\n );\n }\n\n await metricScope((metrics) => () => {\n // Clear out default dimensions as we don't need those. See https://github.com/awslabs/aws-embedded-metrics-node/issues/73.\n metrics.setDimensions({});\n\n const missingMetadata = new Array<string>();\n const missingAssembly = new Array<string>();\n const missingTarball = new Array<string>();\n const uninstallable = new Array<string>();\n const unknownObjects = new Array<string>();\n const submodules = new Array<string>();\n for (const [name, status] of indexedPackages.entries()) {\n if (!status.metadataPresent) {\n missingMetadata.push(name);\n }\n if (!status.assemblyPresent) {\n missingAssembly.push(name);\n }\n if (!status.tarballPresent) {\n missingTarball.push(name);\n }\n if (status.uninstallable) {\n uninstallable.push(name);\n }\n if (status.unknownObjects?.length ?? 0 > 0) {\n unknownObjects.push(...status.unknownObjects!);\n }\n\n for (const submodule of status.submodules ?? []) {\n submodules.push(submodule);\n }\n }\n\n metrics.setProperty('detail', {\n missingMetadata,\n missingAssembly,\n missingTarball,\n unknownObjects,\n });\n\n metrics.putMetric(\n MetricName.UNINSTALLABLE_PACKAGE_COUNT,\n uninstallable.length,\n Unit.Count\n );\n metrics.putMetric(\n MetricName.MISSING_METADATA_COUNT,\n missingMetadata.length,\n Unit.Count\n );\n metrics.putMetric(\n MetricName.MISSING_ASSEMBLY_COUNT,\n missingAssembly.length,\n Unit.Count\n );\n metrics.putMetric(\n MetricName.MISSING_TARBALL_COUNT,\n missingTarball.length,\n Unit.Count\n );\n metrics.putMetric(MetricName.PACKAGE_COUNT, packageNames.size, Unit.Count);\n metrics.putMetric(\n MetricName.PACKAGE_MAJOR_COUNT,\n packageMajorVersions.size,\n Unit.Count\n );\n metrics.putMetric(\n MetricName.PACKAGE_VERSION_COUNT,\n indexedPackages.size,\n Unit.Count\n );\n metrics.putMetric(\n MetricName.SUBMODULE_COUNT,\n submodules.length,\n Unit.Count\n );\n metrics.putMetric(\n MetricName.UNKNOWN_OBJECT_COUNT,\n unknownObjects.length,\n Unit.Count\n );\n\n createReport(constants.UNINSTALLABLE_PACKAGES_REPORT, uninstallable);\n })();\n\n for (const entry of Array.from(perLanguage.entries())) {\n await metricScope(\n (metrics) => async (language: string, data: PerLanguageData) => {\n console.log('');\n console.log('##################################################');\n console.log(`### Start of data for ${language}`);\n\n metrics.setDimensions({ [LANGUAGE_DIMENSION]: language.toString() });\n\n for (const forStatus of [\n DocumentationStatus.SUPPORTED,\n DocumentationStatus.UNSUPPORTED,\n DocumentationStatus.MISSING,\n DocumentationStatus.CORRUPT_ASSEMBLY,\n ]) {\n for (const [key, statuses] of data.entries()) {\n let filtered = Array.from(statuses.entries()).filter(\n ([, status]) => forStatus === status\n );\n let metricName =\n METRIC_NAME_BY_STATUS_AND_GRAIN[forStatus as DocumentationStatus][\n key as Grain\n ];\n\n if (\n (forStatus === DocumentationStatus.MISSING &&\n metricName === MetricName.PER_LANGUAGE_MISSING_VERSIONS) ||\n (forStatus === DocumentationStatus.CORRUPT_ASSEMBLY &&\n metricName ===\n MetricName.PER_LANGUAGE_CORRUPT_ASSEMBLY_VERSIONS)\n ) {\n // generate reports for missing/corrupt only for package versions granularity\n const lang = DocumentationLanguage.fromString(language);\n const reportKey =\n forStatus === DocumentationStatus.MISSING\n ? constants.missingDocumentationReport(lang)\n : constants.corruptAssemblyReport(lang);\n createReport(reportKey, filtered.map(([name]) => name).sort());\n }\n\n console.log(\n `${forStatus} ${key} for ${language}: ${filtered.length} entries`\n );\n metrics.putMetric(metricName, filtered.length, Unit.Count);\n }\n }\n\n console.log(`### End of data for ${language}`);\n console.log('##################################################');\n console.log('');\n }\n )(...entry);\n }\n\n for (const report of reports) {\n await report;\n }\n\n return {};\n}\n\n/**\n * List all objects in the bucket, yielding batches of up to 1000 keys. Also\n * yields the next continuation token if there is one.\n */\nasync function* relevantObjectKeys(\n bucket: string,\n continuationToken?: string\n): AsyncGenerator<[string[], string | undefined], void, void> {\n const request: AWS.S3.ListObjectsV2Request = {\n Bucket: bucket,\n Prefix: constants.STORAGE_KEY_PREFIX,\n };\n if (continuationToken) request.ContinuationToken = continuationToken;\n\n do {\n const response = await aws.s3().listObjectsV2(request).promise();\n const keys = [];\n for (const { Key } of response.Contents ?? []) {\n if (Key == null) {\n continue;\n }\n keys.push(Key);\n }\n yield [keys, response.ContinuationToken];\n request.ContinuationToken = response.NextContinuationToken;\n } while (request.ContinuationToken != null);\n}\n\n/**\n * This function obtains a regular expression with a capture group that allows\n * determining the submodule name from a submodule documentation key, and\n * another to determine whether the object is an \"unsupported beacon\" or not.\n */\nfunction submoduleKeyRegexp(\n language: DocumentationLanguage,\n fileExt: string\n): RegExp {\n // We use a placeholder to be able to insert the capture group once we have\n // fully quoted the key prefix for Regex safety.\n const placeholder = '<SUBMODULENAME>';\n\n // We obtain the standard key suffix.\n const keyPrefix = constants.docsKeySuffix(language, placeholder, fileExt);\n\n // Finally, assemble the regular expression with the capture group.\n return new RegExp(\n `.*${reQuote(keyPrefix).replace(placeholder, '(.+)')}(${reQuote(\n constants.NOT_SUPPORTED_SUFFIX\n )})?$`\n );\n\n /**\n * Escapes all \"speacial meaning\" characters in a string, so it can be used as\n * part of a regular expression.\n */\n function reQuote(str: string): string {\n return str.replace(/([+*.()?$[\\]])/g, '\\\\$1');\n }\n}\n\ninterface IndexedPackageStatus {\n metadataPresent?: boolean;\n assemblyPresent?: boolean;\n uninstallable?: boolean;\n submodules?: Set<string>;\n tarballPresent?: boolean;\n unknownObjects?: string[];\n}\n\nexport const enum Grain {\n PACKAGE_MAJOR_VERSIONS = 'package major versions',\n PACKAGE_VERSION_SUBMODULES = 'package version submodules',\n PACKAGE_VERSIONS = 'package versions',\n PACKAGES = 'packages',\n}\n\ntype PerLanguageData = Map<Grain, Map<string, DocumentationStatus>>;\n\nexport const enum DocumentationStatus {\n /**\n * This package is missing any kind of documentation or marker file.\n */\n MISSING = 'Missing',\n\n /**\n * This package does not support the given language.\n */\n UNSUPPORTED = 'Unsupported',\n\n /**\n * This package has a corrupted JSII assembly so we can't generate\n * documentation for it.\n */\n CORRUPT_ASSEMBLY = 'CorruptAssembly',\n\n /**\n * This package supports the given language and has documentation for it.\n */\n SUPPORTED = 'Supported',\n}\n\nconst METRIC_NAME_BY_STATUS_AND_GRAIN: {\n readonly [status in DocumentationStatus]: {\n readonly [grain in Grain]: MetricName;\n };\n} = {\n [DocumentationStatus.MISSING]: {\n [Grain.PACKAGES]: MetricName.PER_LANGUAGE_MISSING_PACKAGES,\n [Grain.PACKAGE_MAJOR_VERSIONS]: MetricName.PER_LANGUAGE_MISSING_MAJORS,\n [Grain.PACKAGE_VERSIONS]: MetricName.PER_LANGUAGE_MISSING_VERSIONS,\n [Grain.PACKAGE_VERSION_SUBMODULES]:\n MetricName.PER_LANGUAGE_MISSING_SUBMODULES,\n },\n [DocumentationStatus.UNSUPPORTED]: {\n [Grain.PACKAGES]: MetricName.PER_LANGUAGE_UNSUPPORTED_PACKAGES,\n [Grain.PACKAGE_MAJOR_VERSIONS]: MetricName.PER_LANGUAGE_UNSUPPORTED_MAJORS,\n [Grain.PACKAGE_VERSIONS]: MetricName.PER_LANGUAGE_UNSUPPORTED_VERSIONS,\n [Grain.PACKAGE_VERSION_SUBMODULES]:\n MetricName.PER_LANGUAGE_UNSUPPORTED_SUBMODULES,\n },\n [DocumentationStatus.SUPPORTED]: {\n [Grain.PACKAGES]: MetricName.PER_LANGUAGE_SUPPORTED_PACKAGES,\n [Grain.PACKAGE_MAJOR_VERSIONS]: MetricName.PER_LANGUAGE_SUPPORTED_MAJORS,\n [Grain.PACKAGE_VERSIONS]: MetricName.PER_LANGUAGE_SUPPORTED_VERSIONS,\n [Grain.PACKAGE_VERSION_SUBMODULES]:\n MetricName.PER_LANGUAGE_SUPPORTED_SUBMODULES,\n },\n [DocumentationStatus.CORRUPT_ASSEMBLY]: {\n [Grain.PACKAGES]: MetricName.PER_LANGUAGE_CORRUPT_ASSEMBLY_PACKAGES,\n [Grain.PACKAGE_MAJOR_VERSIONS]:\n MetricName.PER_LANGUAGE_CORRUPT_ASSEMBLY_MAJORS,\n [Grain.PACKAGE_VERSIONS]: MetricName.PER_LANGUAGE_CORRUPT_ASSEMBLY_VERSIONS,\n [Grain.PACKAGE_VERSION_SUBMODULES]:\n MetricName.PER_LANGUAGE_CORRUPT_ASSEMBLY_SUBMODULES,\n },\n};\n\n/**\n * Registers the information for the provided language. A \"MISSING\" status\n * will be ignored if another status was already registered for the same\n * entity. An \"UNSUPPORTED\" status will be ignored if a \"SUPPORTED\" status\n * was already registered for the same entity.\n *\n * If a submodule is provided, only that submodule's availability is updated.\n */\nfunction doRecordPerLanguage(\n perLanguage: Map<string, PerLanguageData>,\n language: DocumentationLanguage,\n status: DocumentationStatus,\n pkgName: string,\n pkgMajor: string,\n pkgVersion: string,\n submodule?: string\n) {\n if (!perLanguage.has(language.name)) {\n const perGrainData = new Map<Grain, Map<string, DocumentationStatus>>();\n perGrainData.set(Grain.PACKAGE_MAJOR_VERSIONS, new Map());\n perGrainData.set(Grain.PACKAGES, new Map());\n perGrainData.set(Grain.PACKAGE_VERSION_SUBMODULES, new Map());\n perGrainData.set(Grain.PACKAGE_VERSIONS, new Map());\n perLanguage.set(language.name, perGrainData);\n }\n const data = perLanguage.get(language.name)!;\n\n // If there is a submodule, only update the submodule domain.\n const outputDomains: readonly [Map<string, DocumentationStatus>, string][] =\n submodule\n ? [\n [\n data.get(Grain.PACKAGE_VERSION_SUBMODULES)!,\n `${pkgVersion}.${submodule}`,\n ],\n ]\n : [\n [data.get(Grain.PACKAGE_MAJOR_VERSIONS)!, pkgMajor],\n [data.get(Grain.PACKAGE_VERSIONS)!, pkgVersion],\n [data.get(Grain.PACKAGES)!, pkgName],\n ];\n for (const [map, name] of outputDomains) {\n switch (status) {\n case DocumentationStatus.MISSING:\n // If we already have a status, don't override it with \"MISSING\".\n if (!map.has(name)) {\n map.set(name, status);\n }\n break;\n case DocumentationStatus.SUPPORTED:\n // If the package is \"supported\", this always \"wins\"\n map.set(name, status);\n break;\n case DocumentationStatus.UNSUPPORTED:\n case DocumentationStatus.CORRUPT_ASSEMBLY:\n // If we already have a status, only override with if it was \"MISSING\".\n if (!map.has(name) || map.get(name) === DocumentationStatus.MISSING) {\n map.set(name, status);\n }\n break;\n }\n }\n}\n\n/**\n * Expected input event structure as passed by the state machine.\n */\nexport interface InventoryCanaryEvent {\n readonly continuationObjectKey?: string;\n}\n\n/**\n * Intermediate state stored between invocations of the inventory canary.\n */\nexport interface InventoryCanaryState {\n readonly continuationToken: string;\n readonly indexedPackages: Map<string, IndexedPackageStatus>;\n readonly packageNames: Set<string>;\n readonly packageMajorVersions: Set<string>;\n readonly perLanguage: Map<string, PerLanguageData>;\n}\n\ntype Serialized<T> = string & { _serialized: T };\n\n/**\n * Replacer that can be used in JSON.stringify to automatically turn objects back into maps\n * and arrays back into sets where appropriate.\n */\nfunction safeReplacer(_key: string, value: any) {\n if (value instanceof Map) {\n return {\n _type: 'Map',\n value: Array.from(value.entries()),\n };\n } else if (value instanceof Set) {\n return {\n _type: 'Set',\n value: Array.from([...value]),\n };\n } else {\n return value;\n }\n}\n\nfunction safeReviver(_key: string, value: any) {\n if (typeof value === 'object' && value !== null) {\n if (value._type === 'Map') {\n return new Map(value.value);\n }\n if (value._type === 'Set') {\n return new Set(value.value);\n }\n }\n return value;\n}\n\nexport function serialize<T>(value: T): Serialized<T> {\n return JSON.stringify(value, safeReplacer, 2) as Serialized<T>;\n}\n\nexport function deserialize<T>(value: Serialized<T>): T {\n return JSON.parse(value, safeReviver);\n}\n", "/**\n * The namespace in which metrics are published.\n */\nexport const METRICS_NAMESPACE = 'ConstructHub/Inventory';\n\n/**\n * Names of available metrics from the Inventory canary function.\n */\nexport const enum MetricName {\n UNINSTALLABLE_PACKAGE_COUNT = 'UninstallablePackageCount',\n MISSING_METADATA_COUNT = 'MissingPackageMetadataCount',\n MISSING_ASSEMBLY_COUNT = 'MissingAssemblyCount',\n MISSING_TARBALL_COUNT = 'MissingPackageTarballCount',\n PACKAGE_VERSION_COUNT = 'PackageVersionCount',\n PACKAGE_MAJOR_COUNT = 'PackageMajorVersionCount',\n PACKAGE_COUNT = 'PackageCount',\n SUBMODULE_COUNT = 'SubmoduleCount',\n UNKNOWN_OBJECT_COUNT = 'UnknownObjectCount',\n\n // Scoped metrics\n PER_LANGUAGE_MISSING_PACKAGES = 'MissingPackageCount',\n PER_LANGUAGE_MISSING_MAJORS = 'MissingMajorVersionCount',\n PER_LANGUAGE_MISSING_VERSIONS = 'MissingPackageVersionCount',\n PER_LANGUAGE_MISSING_SUBMODULES = 'MissingSubmoduleCount',\n\n PER_LANGUAGE_SUPPORTED_PACKAGES = 'SupportedPackageCount',\n PER_LANGUAGE_SUPPORTED_MAJORS = 'SupportedMajorVersionCount',\n PER_LANGUAGE_SUPPORTED_VERSIONS = 'SupportedPackageVersionCount',\n PER_LANGUAGE_SUPPORTED_SUBMODULES = 'SupportedSubmoduleCount',\n\n PER_LANGUAGE_UNSUPPORTED_PACKAGES = 'UnsupportedPackageCount',\n PER_LANGUAGE_UNSUPPORTED_MAJORS = 'UnsupportedMajorVersionCount',\n PER_LANGUAGE_UNSUPPORTED_VERSIONS = 'UnsupportedPackageVersionCount',\n PER_LANGUAGE_UNSUPPORTED_SUBMODULES = 'UnsupportedSubmoduleCount',\n\n PER_LANGUAGE_CORRUPT_ASSEMBLY_PACKAGES = 'CorruptAssemblyPackageCount',\n PER_LANGUAGE_CORRUPT_ASSEMBLY_MAJORS = 'CorruptAssemblyMajorVersionCount',\n PER_LANGUAGE_CORRUPT_ASSEMBLY_VERSIONS = 'CorruptAssemblyPackageVersionCount',\n PER_LANGUAGE_CORRUPT_ASSEMBLY_SUBMODULES = 'CorruptAssemblySubmoduleCount',\n}\n\n/**\n * The dimension key to use for accessing the language.\n */\nexport const LANGUAGE_DIMENSION = 'Language';\n", "import * as _AWS from 'aws-sdk';\nimport * as AWSXRay from 'aws-xray-sdk-core';\n\n// Do nothing if there is no XRay trace context\nAWSXRay.setContextMissingStrategy(() => {});\n\nconst AWS = AWSXRay.captureAWS(_AWS);\n\nlet _ecs: AWS.ECS | undefined;\nlet _s3: AWS.S3 | undefined;\nlet _sqs: AWS.SQS | undefined;\nlet _sfn: AWS.StepFunctions | undefined;\nlet _lambda: AWS.Lambda | undefined;\nlet _codeArtifact: AWS.CodeArtifact | undefined;\n\nexport function ecs(): AWS.ECS {\n if (_ecs == null) {\n _ecs = new AWS.ECS();\n }\n return _ecs;\n}\n\nexport function s3(): AWS.S3 {\n if (_s3 == null) {\n _s3 = new AWS.S3();\n }\n return _s3;\n}\n\n/**\n * Checks whether an object exists in S3 at the provided bucket and key.\n */\nexport function s3ObjectExists(bucket: string, key: string): Promise<boolean> {\n return s3()\n .headObject({\n Bucket: bucket,\n Key: key,\n })\n .promise()\n .then(\n () => true,\n (cause) => {\n if (cause.code === 'NotFound') {\n return false;\n }\n return Promise.reject(cause);\n }\n );\n}\n\nexport function sqs(): AWS.SQS {\n if (_sqs == null) {\n _sqs = new AWS.SQS();\n }\n return _sqs;\n}\n\nexport function stepFunctions(): AWS.StepFunctions {\n if (_sfn == null) {\n _sfn = new AWS.StepFunctions();\n }\n return _sfn;\n}\n\nexport function lambda(): AWS.Lambda {\n if (_lambda == null) {\n _lambda = new AWS.Lambda();\n }\n return _lambda;\n}\n\nexport function codeArtifact(): AWS.CodeArtifact {\n if (_codeArtifact == null) {\n _codeArtifact = new AWS.CodeArtifact();\n }\n return _codeArtifact;\n}\n\n/**\n * Resets all clients vended by this module. This is useful in unit tests when\n * `aws-sdk-mocks` is used, so that new mocks are injected as intended.\n */\nexport function reset(): void {\n _ecs = _s3 = _sqs = _sfn = _lambda = _codeArtifact = undefined;\n}\n", "import { gzipSync } from 'zlib';\n\nconst MINIMUM_SIZE_TO_COMPRESS = 1_024;\n\n/**\n * Compresses the content of the provided `buffer` if it is large enough to\n * warrant the effort, and if the compressed output is actually smaller than\n * the input.\n *\n * @param buffer the buffer to be compressed.\n *\n * @returns the result of the operation.\n */\nexport function compressContent(buffer: Buffer): CompressContentResult {\n if (buffer.length < MINIMUM_SIZE_TO_COMPRESS) {\n return { buffer };\n }\n const gz = gzipSync(buffer, { level: 9 });\n // If it did not compress well, we'll keep the un-compressed original...\n if (gz.length >= buffer.length) {\n return { buffer };\n }\n return { buffer: gz, contentEncoding: 'gzip' };\n}\n\n/**\n * The result of a `compressContent` call.\n */\nexport interface CompressContentResult {\n /**\n * The possibly compressed buffer. This may be the un-modified input buffer.\n */\n readonly buffer: Buffer;\n\n /**\n * The content-encoding that should be applied to the object. This is\n * undefined if the input has not been modified.\n */\n readonly contentEncoding?: 'gzip';\n}\n", "/**\n * Supported languages to generate documentation in.\n */\nexport class DocumentationLanguage {\n /**\n * TypeScript.\n */\n public static readonly TYPESCRIPT = new DocumentationLanguage('typescript');\n\n /**\n * Python.\n */\n public static readonly PYTHON = new DocumentationLanguage('python');\n\n /**\n * Java.\n */\n public static readonly JAVA = new DocumentationLanguage('java');\n\n /**\n * CSharp.\n */\n public static readonly CSHARP = new DocumentationLanguage('csharp', 'dotnet');\n\n /**\n * Go.\n */\n public static readonly GO = new DocumentationLanguage('go');\n\n /**\n * All supported languages.\n */\n public static readonly ALL = [\n DocumentationLanguage.TYPESCRIPT,\n DocumentationLanguage.PYTHON,\n DocumentationLanguage.JAVA,\n DocumentationLanguage.CSHARP,\n DocumentationLanguage.GO,\n ] as const;\n\n /**\n * Transform a literal string to the `DocumentationLanguage` object.\n *\n * Throws an `UnsupportedLanguageError` if the language is not supported.\n */\n public static fromString(lang: string) {\n switch (lang) {\n case DocumentationLanguage.TYPESCRIPT.toString():\n return DocumentationLanguage.TYPESCRIPT;\n case DocumentationLanguage.PYTHON.toString():\n return DocumentationLanguage.PYTHON;\n case DocumentationLanguage.JAVA.toString():\n return DocumentationLanguage.JAVA;\n case DocumentationLanguage.CSHARP.toString():\n case DocumentationLanguage.CSHARP.targetName:\n return DocumentationLanguage.CSHARP;\n case DocumentationLanguage.GO.toString():\n return DocumentationLanguage.GO;\n default:\n throw new UnsupportedLanguageError(lang, DocumentationLanguage.ALL);\n }\n }\n\n private constructor(\n public readonly name: string,\n public readonly targetName = name\n ) {}\n\n public toString() {\n return this.name;\n }\n}\n\nexport class UnsupportedLanguageError extends Error {\n constructor(lang: string, supported: readonly DocumentationLanguage[]) {\n super(\n `Unsupported language: ${lang}. Supported languages are: [${supported}]`\n );\n }\n}\n", "/*\n * IMPORTANT: This file is used both by bundled lambda functions and by\n * constructs. This means it should not directly or transitively import anything\n * not part of the package's `dependencies`, such as the `aws-sdk`.\n */\n\nimport { DocumentationLanguage } from './language';\n\n/**\n * Key prefix for the package data storage.\n */\nexport const STORAGE_KEY_PREFIX = 'data/';\n\n/**\n * Key suffix for storing npm package bundles.\n */\nexport const PACKAGE_KEY_SUFFIX = '/package.tgz';\n\n/**\n * Key suffix for storing npm package metadata.\n */\nexport const METADATA_KEY_SUFFIX = '/metadata.json';\n\n/**\n * The key suffix for (TypeScript) assembly files\n */\nexport const ASSEMBLY_KEY_SUFFIX = '/assembly.json';\n\n/**\n * The key suffix release notes file\n */\nexport const PACKAGE_RELEASE_NOTES_KEY_SUFFIX = '/release-notes.md';\n\n/**\n * The key suffix for a TypeScript doc artifact (root module).\n */\nexport const DOCS_KEY_SUFFIX_TYPESCRIPT = docsKeySuffix(\n DocumentationLanguage.TYPESCRIPT\n);\n\n/**\n * The key suffix for a Python doc artifact (root module).\n */\nexport const DOCS_KEY_SUFFIX_PYTHON = docsKeySuffix(\n DocumentationLanguage.PYTHON\n);\n\n/**\n * The key suffix for a Java doc artifact (root module).\n */\nexport const DOCS_KEY_SUFFIX_JAVA = docsKeySuffix(DocumentationLanguage.JAVA);\n\n/**\n * The key suffix for a Dotnet doc artifact (root module).\n */\nexport const DOCS_KEY_SUFFIX_CSHARP = docsKeySuffix(\n DocumentationLanguage.CSHARP\n);\n\n/**\n * The key suffix for a Go doc artifact (root module).\n */\nexport const DOCS_KEY_SUFFIX_GO = docsKeySuffix(DocumentationLanguage.GO);\n\n/**\n * The key suffix matching any documentation artifact.\n */\nexport const DOCS_KEY_SUFFIX_ANY = docsKeySuffix('*');\n\n/**\n * Key for RSS document\n */\nexport const FEED_RSS_KEY = 'rss';\n\n/**\n * Key for RSS document\n */\nexport const FEED_ATOM_KEY = 'atom';\n\n/**\n * Key for badge image endpoint.\n */\nexport const BADGE_KEY = 'badge';\n\n/**\n * Env variable name used to set construct hub url for RSS/ATOM feed\n */\nexport const CONSTRUCT_HUB_URL_ENV_VAR_NAME = 'CONSTRUCT_HUB_URL';\n\nexport const CONSTRUCT_HUB_FEED_TITLE = 'CONSTRUCT_HUB_FEED_TITLE';\n\nexport const CONSTRUCT_HUB_FEED_DESCRIPTION = 'CONSTRUCT_HUB_FEED_DESCRIPTION';\n\n/**\n * Return the S3 object key prefix for a specific package name and optionally a\n * version. Note that the prefix does not end with a \"/\" so you will likely want\n * to add that if you want to match a specific set of objects.\n */\nexport function getObjectKeyPrefix(\n packageName: string,\n packageVersion?: string\n) {\n let key = `${STORAGE_KEY_PREFIX}${packageName}`;\n if (packageVersion) {\n key += `/v${packageVersion}`;\n }\n\n return key;\n}\n\n/**\n * Resolves the set of S3 object keys use for a specific package/version.\n */\nexport function getObjectKeys(packageName: string, packageVersion: string) {\n const prefix = getObjectKeyPrefix(packageName, packageVersion);\n return {\n assemblyKey: `${prefix}${ASSEMBLY_KEY_SUFFIX}`,\n packageKey: `${prefix}${PACKAGE_KEY_SUFFIX}`,\n metadataKey: `${prefix}${METADATA_KEY_SUFFIX}`,\n releaseNotesKey: `${prefix}${PACKAGE_RELEASE_NOTES_KEY_SUFFIX}`,\n };\n}\n\n/**\n * The key suffix for documentation artifacts by language and submodule.\n *\n * SubmoduleFqn can cleverly be '*' which means \"all submodules\".\n */\nexport function docsKeySuffix(\n lang?: DocumentationLanguage | '*',\n submoduleFqn?: string,\n fileExt?: string\n) {\n // We strip the first part (assembly name) off of the submodule name, but\n // only if it's not '*'\n const submodule =\n submoduleFqn && submoduleFqn !== '*'\n ? submoduleFqn.split('.').slice(1).join('.')\n : submoduleFqn;\n\n return `/docs-${submodule ? `${submodule}-` : ''}${lang}.${fileExt ?? '*'}`;\n}\n\n/**\n * The key suffix for a corrupted assembly marker by language and submodule.\n */\nexport function corruptAssemblyKeySuffix(\n lang?: DocumentationLanguage | '*',\n submodule?: string,\n fileExt?: string\n) {\n return `${docsKeySuffix(lang, submodule, fileExt)}${CORRUPT_ASSEMBLY_SUFFIX}`;\n}\n\n/**\n * The key suffix for a not supported marker by language and submodule.\n */\nexport function notSupportedKeySuffix(\n lang?: DocumentationLanguage | '*',\n submodule?: string,\n fileExt?: string\n) {\n return `${docsKeySuffix(lang, submodule, fileExt)}${NOT_SUPPORTED_SUFFIX}`;\n}\n\n/**\n * Key suffix for beacon files when a particular feature is not supported for\n * the particular package (i.e: Python docs for a package that does not have a\n * Python target configured).\n */\nexport const NOT_SUPPORTED_SUFFIX = '.not-supported';\n\n/**\n * Key suffix for beacon files marking that a language specific assembly is corrupt\n * and we cannot generate docs from it.\n */\nexport const CORRUPT_ASSEMBLY_SUFFIX = '.corruptassembly';\n\n/**\n * Key suffix for a beacon file when a package cannot be installed.\n */\nexport const UNINSTALLABLE_PACKAGE_SUFFIX = '/uninstallable';\n\n/**\n * Name of the error denoting an unprocessable package that should be diverted away from the DLQ.\n */\nexport const UNPROCESSABLE_PACKAGE_ERROR_NAME = 'UnprocessablePackageError';\n\n/**\n * The key for the catalog document.\n */\nexport const CATALOG_KEY = 'catalog.json';\n\n/** Key for feed metadata document*/\nexport const FEED_METADATA_KEY = 'feed-metadata.json';\n\n/**\n * The key for the version tracking document.\n */\nexport const VERSION_TRACKER_KEY = 'all-versions.json';\n\n/**\n * The key for missing documentation report.\n *\n * @param language the language for which missing documentation is requested.\n */\nexport function missingDocumentationReport(\n language: DocumentationLanguage\n): string {\n return `missing-objects/${language.name}-documentation.json`;\n}\n\n/**\n * The key for corrupt assembly report.\n *\n * @param language the language for which the report is requested.\n */\nexport function corruptAssemblyReport(language: DocumentationLanguage): string {\n return `corruptassembly-objects/${language.name}.json`;\n}\n\n/**\n * The key for uninstallable packages report.\n */\nexport const UNINSTALLABLE_PACKAGES_REPORT = 'uninstallable-objects/data.json';\n\n/**\n * The key pattern for objects containing missing documentation lists.\n */\nexport const MISSING_DOCUMENTATION_REPORT_PATTERN =\n 'missing-objects/*-documentation.json';\n\n/**\n * The key pattern for objects containing unprocessable assembly lists.\n */\nexport const CORRUPT_ASSEMBLY_REPORT_PATTERN = 'corruptassembly-objects/*.json';\n\n/**\n * A regular expression that can be used to parse out a storage key.\n */\nexport const STORAGE_KEY_FORMAT_REGEX = new RegExp(\n `^${STORAGE_KEY_PREFIX}((?:@[^/]+/)?[^/]+)/v([^/]+)/.*$`\n);\n// Capture groups: \u2517\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u25011\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u251B \u2517\u2501\u25012\u2501\u2501\u251B\n", "import { env } from 'process';\n\nexport function requireEnv(name: string): string {\n const result = env[name];\n if (!result) {\n throw new Error(\n `No value specified for required environment variable: ${name}`\n );\n }\n return result;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["Constants", "Environments", "__importDefault", "ConfigKeys", "Configuration", "__importDefault", "Unit", "StorageResolution", "__importDefault", "__awaiter", "__importDefault", "context", "require_heap", "__awaiter", "__awaiter", "__awaiter", "__importDefault", "__importDefault", "__awaiter", "__createBinding", "__setModuleDefault", "__importStar", "__awaiter", "__importDefault", "__awaiter", "__importDefault", "__importDefault", "__awaiter", "__importDefault", "__awaiter", "metricScope", "handler", "__importDefault", "module", "module", "module", "module", "module", "module", "SemVer", "module", "SemVer", "module", "module", "module", "SemVer", "module", "module", "SemVer", "module", "SemVer", "module", "SemVer", "module", "module", "SemVer", "module", "module", "module", "SemVer", "module", "module", "module", "module", "module", "module", "module", "module", "module", "module", "SemVer", "module", "module", "module", "module", "SemVer", "module", "SemVer", "module", "module", "module", "SemVer", "module", "SemVer", "module", "SemVer", "require_valid", "module", "module", "SemVer", "module", "module", "module", "module", "module", "require_semver", "module", "SemVer", "module", "module", "module", "triggerId", "module", "module", "module", "module", "processAddress", "module", "module", "module", "j", "i", "patternChar", "module", "module", "module", "module", "module", "setContextMissingStrategy", "module", "getClientIp", "module", "module", "module", "loadRulesConfig", "parseRulesConfig", "key", "module", "module", "module", "constructStatisticsDocs", "assembleRules", "assembleTargets", "isRuleValid", "dateToEpoch", "getOptions", "module", "isExpired", "module", "refresh", "refreshWithFirewall", "refreshCache", "getJitter", "module", "refreshWithFirewall", "refresh", "getCandidates", "getJitter", "module", "processMatchedRule", "module", "module", "facadeSegment", "module", "module", "module", "module", "module", "module", "module", "module", "setAWSWhitelist", "appendAWSWhitelist", "module", "captureFunc", "captureAsyncFunc", "captureCallbackFunc", "module", "throttledErrorDefault", "captureAWS", "captureAWSClient", "req", "v", "env", "d", "b", "__assign", "require_constants", "require_dist_cjs", "__importDefault", "module", "captureHTTPsGlobal", "captureHTTPs", "errorCapturer", "module", "Promise", "module", "module", "AWSXRay", "require_lib", "module", "import_zlib", "Grain", "DocumentationStatus"]
7
7
  }