@opentelemetry/otlp-exporter-base 0.52.1 → 0.54.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. package/build/esm/OTLPExporterBase.d.ts +0 -5
  2. package/build/esm/OTLPExporterBase.js +0 -8
  3. package/build/esm/OTLPExporterBase.js.map +1 -1
  4. package/build/esm/configuration/otlp-http-configuration.d.ts +13 -0
  5. package/build/esm/configuration/otlp-http-configuration.js +67 -0
  6. package/build/esm/configuration/otlp-http-configuration.js.map +1 -0
  7. package/build/esm/configuration/otlp-http-env-configuration.d.ts +9 -0
  8. package/build/esm/configuration/otlp-http-env-configuration.js +104 -0
  9. package/build/esm/configuration/otlp-http-env-configuration.js.map +1 -0
  10. package/build/esm/configuration/shared-configuration.d.ts +22 -0
  11. package/build/esm/configuration/shared-configuration.js +44 -0
  12. package/build/esm/configuration/shared-configuration.js.map +1 -0
  13. package/build/esm/configuration/shared-env-configuration.d.ts +3 -0
  14. package/build/esm/configuration/shared-env-configuration.js +44 -0
  15. package/build/esm/configuration/shared-env-configuration.js.map +1 -0
  16. package/build/esm/export-response.d.ts +14 -0
  17. package/build/esm/export-response.js +17 -0
  18. package/build/esm/export-response.js.map +1 -0
  19. package/build/esm/exporter-transport.d.ts +6 -0
  20. package/build/esm/exporter-transport.js +17 -0
  21. package/build/esm/exporter-transport.js.map +1 -0
  22. package/build/esm/index.d.ts +5 -1
  23. package/build/esm/index.js +6 -1
  24. package/build/esm/index.js.map +1 -1
  25. package/build/esm/is-export-retryable.d.ts +3 -0
  26. package/build/esm/is-export-retryable.js +35 -0
  27. package/build/esm/is-export-retryable.js.map +1 -0
  28. package/build/esm/platform/browser/OTLPExporterBrowserBase.d.ts +7 -9
  29. package/build/esm/platform/browser/OTLPExporterBrowserBase.js +49 -32
  30. package/build/esm/platform/browser/OTLPExporterBrowserBase.js.map +1 -1
  31. package/build/esm/platform/browser/index.d.ts +0 -1
  32. package/build/esm/platform/browser/index.js +0 -1
  33. package/build/esm/platform/browser/index.js.map +1 -1
  34. package/build/esm/platform/browser/send-beacon-transport.d.ts +10 -0
  35. package/build/esm/platform/browser/send-beacon-transport.js +47 -0
  36. package/build/esm/platform/browser/send-beacon-transport.js.map +1 -0
  37. package/build/esm/platform/browser/xhr-transport.d.ts +11 -0
  38. package/build/esm/platform/browser/xhr-transport.js +101 -0
  39. package/build/esm/platform/browser/xhr-transport.js.map +1 -0
  40. package/build/esm/platform/index.d.ts +2 -2
  41. package/build/esm/platform/index.js +2 -2
  42. package/build/esm/platform/index.js.map +1 -1
  43. package/build/esm/platform/node/OTLPExporterNodeBase.d.ts +6 -13
  44. package/build/esm/platform/node/OTLPExporterNodeBase.js +45 -14
  45. package/build/esm/platform/node/OTLPExporterNodeBase.js.map +1 -1
  46. package/build/esm/platform/node/convert-legacy-agent-options.d.ts +12 -0
  47. package/build/esm/platform/node/convert-legacy-agent-options.js +27 -0
  48. package/build/esm/platform/node/convert-legacy-agent-options.js.map +1 -0
  49. package/build/esm/platform/node/http-exporter-transport.d.ts +4 -0
  50. package/build/esm/platform/node/http-exporter-transport.js +87 -0
  51. package/build/esm/platform/node/http-exporter-transport.js.map +1 -0
  52. package/build/esm/platform/node/http-transport-types.d.ts +12 -0
  53. package/build/esm/platform/node/http-transport-types.js +17 -0
  54. package/build/esm/platform/node/http-transport-types.js.map +1 -0
  55. package/build/esm/platform/node/http-transport-utils.d.ts +16 -0
  56. package/build/esm/platform/node/http-transport-utils.js +127 -0
  57. package/build/esm/platform/node/http-transport-utils.js.map +1 -0
  58. package/build/esm/platform/node/index.d.ts +0 -1
  59. package/build/esm/platform/node/index.js +0 -1
  60. package/build/esm/platform/node/index.js.map +1 -1
  61. package/build/esm/retrying-transport.d.ts +8 -0
  62. package/build/esm/retrying-transport.js +119 -0
  63. package/build/esm/retrying-transport.js.map +1 -0
  64. package/build/esm/types.d.ts +1 -2
  65. package/build/esm/types.js.map +1 -1
  66. package/build/esm/util.d.ts +1 -27
  67. package/build/esm/util.js +1 -89
  68. package/build/esm/util.js.map +1 -1
  69. package/build/esm/version.d.ts +1 -1
  70. package/build/esm/version.js +1 -1
  71. package/build/esm/version.js.map +1 -1
  72. package/build/esnext/OTLPExporterBase.d.ts +0 -5
  73. package/build/esnext/OTLPExporterBase.js +0 -8
  74. package/build/esnext/OTLPExporterBase.js.map +1 -1
  75. package/build/esnext/configuration/otlp-http-configuration.d.ts +13 -0
  76. package/build/esnext/configuration/otlp-http-configuration.js +56 -0
  77. package/build/esnext/configuration/otlp-http-configuration.js.map +1 -0
  78. package/build/esnext/configuration/otlp-http-env-configuration.d.ts +9 -0
  79. package/build/esnext/configuration/otlp-http-env-configuration.js +93 -0
  80. package/build/esnext/configuration/otlp-http-env-configuration.js.map +1 -0
  81. package/build/esnext/configuration/shared-configuration.d.ts +22 -0
  82. package/build/esnext/configuration/shared-configuration.js +44 -0
  83. package/build/esnext/configuration/shared-configuration.js.map +1 -0
  84. package/build/esnext/configuration/shared-env-configuration.d.ts +3 -0
  85. package/build/esnext/configuration/shared-env-configuration.js +44 -0
  86. package/build/esnext/configuration/shared-env-configuration.js.map +1 -0
  87. package/build/esnext/export-response.d.ts +14 -0
  88. package/build/esnext/export-response.js +17 -0
  89. package/build/esnext/export-response.js.map +1 -0
  90. package/build/esnext/exporter-transport.d.ts +6 -0
  91. package/build/esnext/exporter-transport.js +17 -0
  92. package/build/esnext/exporter-transport.js.map +1 -0
  93. package/build/esnext/index.d.ts +5 -1
  94. package/build/esnext/index.js +6 -1
  95. package/build/esnext/index.js.map +1 -1
  96. package/build/esnext/is-export-retryable.d.ts +3 -0
  97. package/build/esnext/is-export-retryable.js +35 -0
  98. package/build/esnext/is-export-retryable.js.map +1 -0
  99. package/build/esnext/platform/browser/OTLPExporterBrowserBase.d.ts +7 -9
  100. package/build/esnext/platform/browser/OTLPExporterBrowserBase.js +49 -21
  101. package/build/esnext/platform/browser/OTLPExporterBrowserBase.js.map +1 -1
  102. package/build/esnext/platform/browser/index.d.ts +0 -1
  103. package/build/esnext/platform/browser/index.js +0 -1
  104. package/build/esnext/platform/browser/index.js.map +1 -1
  105. package/build/esnext/platform/browser/send-beacon-transport.d.ts +10 -0
  106. package/build/esnext/platform/browser/send-beacon-transport.js +45 -0
  107. package/build/esnext/platform/browser/send-beacon-transport.js.map +1 -0
  108. package/build/esnext/platform/browser/xhr-transport.d.ts +11 -0
  109. package/build/esnext/platform/browser/xhr-transport.js +82 -0
  110. package/build/esnext/platform/browser/xhr-transport.js.map +1 -0
  111. package/build/esnext/platform/index.d.ts +2 -2
  112. package/build/esnext/platform/index.js +2 -2
  113. package/build/esnext/platform/index.js.map +1 -1
  114. package/build/esnext/platform/node/OTLPExporterNodeBase.d.ts +6 -13
  115. package/build/esnext/platform/node/OTLPExporterNodeBase.js +45 -14
  116. package/build/esnext/platform/node/OTLPExporterNodeBase.js.map +1 -1
  117. package/build/esnext/platform/node/convert-legacy-agent-options.d.ts +12 -0
  118. package/build/esnext/platform/node/convert-legacy-agent-options.js +27 -0
  119. package/build/esnext/platform/node/convert-legacy-agent-options.js.map +1 -0
  120. package/build/esnext/platform/node/http-exporter-transport.d.ts +4 -0
  121. package/build/esnext/platform/node/http-exporter-transport.js +47 -0
  122. package/build/esnext/platform/node/http-exporter-transport.js.map +1 -0
  123. package/build/esnext/platform/node/http-transport-types.d.ts +12 -0
  124. package/build/esnext/platform/node/http-transport-types.js +17 -0
  125. package/build/esnext/platform/node/http-transport-types.js.map +1 -0
  126. package/build/esnext/platform/node/http-transport-utils.d.ts +16 -0
  127. package/build/esnext/platform/node/http-transport-utils.js +116 -0
  128. package/build/esnext/platform/node/http-transport-utils.js.map +1 -0
  129. package/build/esnext/platform/node/index.d.ts +0 -1
  130. package/build/esnext/platform/node/index.js +0 -1
  131. package/build/esnext/platform/node/index.js.map +1 -1
  132. package/build/esnext/retrying-transport.d.ts +8 -0
  133. package/build/esnext/retrying-transport.js +69 -0
  134. package/build/esnext/retrying-transport.js.map +1 -0
  135. package/build/esnext/types.d.ts +1 -2
  136. package/build/esnext/types.js.map +1 -1
  137. package/build/esnext/util.d.ts +1 -27
  138. package/build/esnext/util.js +1 -89
  139. package/build/esnext/util.js.map +1 -1
  140. package/build/esnext/version.d.ts +1 -1
  141. package/build/esnext/version.js +1 -1
  142. package/build/esnext/version.js.map +1 -1
  143. package/build/src/OTLPExporterBase.d.ts +0 -5
  144. package/build/src/OTLPExporterBase.js +0 -8
  145. package/build/src/OTLPExporterBase.js.map +1 -1
  146. package/build/src/configuration/otlp-http-configuration.d.ts +13 -0
  147. package/build/src/configuration/otlp-http-configuration.js +61 -0
  148. package/build/src/configuration/otlp-http-configuration.js.map +1 -0
  149. package/build/src/configuration/otlp-http-env-configuration.d.ts +9 -0
  150. package/build/src/configuration/otlp-http-env-configuration.js +97 -0
  151. package/build/src/configuration/otlp-http-env-configuration.js.map +1 -0
  152. package/build/src/configuration/shared-configuration.d.ts +22 -0
  153. package/build/src/configuration/shared-configuration.js +50 -0
  154. package/build/src/configuration/shared-configuration.js.map +1 -0
  155. package/build/src/configuration/shared-env-configuration.d.ts +3 -0
  156. package/build/src/configuration/shared-env-configuration.js +48 -0
  157. package/build/src/configuration/shared-env-configuration.js.map +1 -0
  158. package/build/src/export-response.d.ts +14 -0
  159. package/build/src/export-response.js +18 -0
  160. package/build/src/export-response.js.map +1 -0
  161. package/build/src/exporter-transport.d.ts +6 -0
  162. package/build/src/exporter-transport.js +18 -0
  163. package/build/src/exporter-transport.js.map +1 -0
  164. package/build/src/index.d.ts +5 -1
  165. package/build/src/index.js +21 -17
  166. package/build/src/index.js.map +1 -1
  167. package/build/src/is-export-retryable.d.ts +3 -0
  168. package/build/src/is-export-retryable.js +40 -0
  169. package/build/src/is-export-retryable.js.map +1 -0
  170. package/build/src/platform/browser/OTLPExporterBrowserBase.d.ts +7 -9
  171. package/build/src/platform/browser/OTLPExporterBrowserBase.js +49 -21
  172. package/build/src/platform/browser/OTLPExporterBrowserBase.js.map +1 -1
  173. package/build/src/platform/browser/index.d.ts +0 -1
  174. package/build/src/platform/browser/index.js +1 -3
  175. package/build/src/platform/browser/index.js.map +1 -1
  176. package/build/src/platform/browser/send-beacon-transport.d.ts +10 -0
  177. package/build/src/platform/browser/send-beacon-transport.js +49 -0
  178. package/build/src/platform/browser/send-beacon-transport.js.map +1 -0
  179. package/build/src/platform/browser/xhr-transport.d.ts +11 -0
  180. package/build/src/platform/browser/xhr-transport.js +86 -0
  181. package/build/src/platform/browser/xhr-transport.js.map +1 -0
  182. package/build/src/platform/index.d.ts +2 -2
  183. package/build/src/platform/index.js +1 -5
  184. package/build/src/platform/index.js.map +1 -1
  185. package/build/src/platform/node/OTLPExporterNodeBase.d.ts +6 -13
  186. package/build/src/platform/node/OTLPExporterNodeBase.js +45 -14
  187. package/build/src/platform/node/OTLPExporterNodeBase.js.map +1 -1
  188. package/build/src/platform/node/convert-legacy-agent-options.d.ts +12 -0
  189. package/build/src/platform/node/convert-legacy-agent-options.js +31 -0
  190. package/build/src/platform/node/convert-legacy-agent-options.js.map +1 -0
  191. package/build/src/platform/node/http-exporter-transport.d.ts +4 -0
  192. package/build/src/platform/node/http-exporter-transport.js +51 -0
  193. package/build/src/platform/node/http-exporter-transport.js.map +1 -0
  194. package/build/src/platform/node/http-transport-types.d.ts +12 -0
  195. package/build/src/platform/node/http-transport-types.js +18 -0
  196. package/build/src/platform/node/http-transport-types.js.map +1 -0
  197. package/build/src/platform/node/http-transport-utils.d.ts +16 -0
  198. package/build/src/platform/node/http-transport-utils.js +121 -0
  199. package/build/src/platform/node/http-transport-utils.js.map +1 -0
  200. package/build/src/platform/node/index.d.ts +0 -1
  201. package/build/src/platform/node/index.js +1 -5
  202. package/build/src/platform/node/index.js.map +1 -1
  203. package/build/src/retrying-transport.d.ts +8 -0
  204. package/build/src/retrying-transport.js +73 -0
  205. package/build/src/retrying-transport.js.map +1 -0
  206. package/build/src/types.d.ts +1 -2
  207. package/build/src/types.js.map +1 -1
  208. package/build/src/util.d.ts +1 -27
  209. package/build/src/util.js +3 -97
  210. package/build/src/util.js.map +1 -1
  211. package/build/src/version.d.ts +1 -1
  212. package/build/src/version.js +1 -1
  213. package/build/src/version.js.map +1 -1
  214. package/package.json +13 -17
  215. package/build/esm/platform/browser/util.d.ts +0 -21
  216. package/build/esm/platform/browser/util.js +0 -152
  217. package/build/esm/platform/browser/util.js.map +0 -1
  218. package/build/esm/platform/node/util.d.ts +0 -19
  219. package/build/esm/platform/node/util.js +0 -194
  220. package/build/esm/platform/node/util.js.map +0 -1
  221. package/build/esnext/platform/browser/util.d.ts +0 -21
  222. package/build/esnext/platform/browser/util.js +0 -122
  223. package/build/esnext/platform/browser/util.js.map +0 -1
  224. package/build/esnext/platform/node/util.d.ts +0 -19
  225. package/build/esnext/platform/node/util.js +0 -181
  226. package/build/esnext/platform/node/util.js.map +0 -1
  227. package/build/src/platform/browser/util.d.ts +0 -21
  228. package/build/src/platform/browser/util.js +0 -127
  229. package/build/src/platform/browser/util.js.map +0 -1
  230. package/build/src/platform/node/util.d.ts +0 -19
  231. package/build/src/platform/node/util.js +0 -187
  232. package/build/src/platform/node/util.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/platform/node/util.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://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 */\nimport * as url from 'url';\nimport * as http from 'http';\nimport * as https from 'https';\nimport * as zlib from 'zlib';\nimport { Readable } from 'stream';\nimport { OTLPExporterNodeBase } from './OTLPExporterNodeBase';\nimport { OTLPExporterNodeConfigBase } from '.';\nimport { diag } from '@opentelemetry/api';\nimport { CompressionAlgorithm } from './types';\nimport { getEnv } from '@opentelemetry/core';\nimport { OTLPExporterError } from '../../types';\nimport {\n DEFAULT_EXPORT_MAX_ATTEMPTS,\n DEFAULT_EXPORT_INITIAL_BACKOFF,\n DEFAULT_EXPORT_BACKOFF_MULTIPLIER,\n DEFAULT_EXPORT_MAX_BACKOFF,\n isExportRetryable,\n parseRetryAfterToMills,\n} from '../../util';\n\n/**\n * Sends data using http\n * @param collector\n * @param data\n * @param contentType\n * @param onSuccess\n * @param onError\n */\nexport function sendWithHttp<ExportItem, ServiceResponse>(\n collector: OTLPExporterNodeBase<ExportItem, ServiceResponse>,\n data: string | Uint8Array,\n contentType: string,\n onSuccess: () => void,\n onError: (error: OTLPExporterError) => void\n): void {\n const exporterTimeout = collector.timeoutMillis;\n const parsedUrl = new url.URL(collector.url);\n const nodeVersion = Number(process.versions.node.split('.')[0]);\n let retryTimer: ReturnType<typeof setTimeout>;\n let req: http.ClientRequest;\n let reqIsDestroyed = false;\n\n const exporterTimer = setTimeout(() => {\n clearTimeout(retryTimer);\n reqIsDestroyed = true;\n\n if (req.destroyed) {\n const err = new OTLPExporterError('Request Timeout');\n onError(err);\n } else {\n // req.abort() was deprecated since v14\n nodeVersion >= 14 ? req.destroy() : req.abort();\n }\n }, exporterTimeout);\n\n const options: http.RequestOptions | https.RequestOptions = {\n hostname: parsedUrl.hostname,\n port: parsedUrl.port,\n path: parsedUrl.pathname,\n method: 'POST',\n headers: {\n 'Content-Type': contentType,\n ...collector.headers,\n },\n agent: collector.agent,\n };\n\n const request = parsedUrl.protocol === 'http:' ? http.request : https.request;\n\n const sendWithRetry = (\n retries = DEFAULT_EXPORT_MAX_ATTEMPTS,\n minDelay = DEFAULT_EXPORT_INITIAL_BACKOFF\n ) => {\n req = request(options, (res: http.IncomingMessage) => {\n let responseData = '';\n res.on('data', chunk => (responseData += chunk));\n\n res.on('aborted', () => {\n if (reqIsDestroyed) {\n const err = new OTLPExporterError('Request Timeout');\n onError(err);\n }\n });\n\n res.on('end', () => {\n if (reqIsDestroyed === false) {\n if (res.statusCode && res.statusCode < 299) {\n diag.debug(`statusCode: ${res.statusCode}`, responseData);\n onSuccess();\n // clear all timers since request was completed and promise was resolved\n clearTimeout(exporterTimer);\n clearTimeout(retryTimer);\n } else if (\n res.statusCode &&\n isExportRetryable(res.statusCode) &&\n retries > 0\n ) {\n let retryTime: number;\n minDelay = DEFAULT_EXPORT_BACKOFF_MULTIPLIER * minDelay;\n\n // retry after interval specified in Retry-After header\n if (res.headers['retry-after']) {\n retryTime = parseRetryAfterToMills(res.headers['retry-after']!);\n } else {\n // exponential backoff with jitter\n retryTime = Math.round(\n Math.random() * (DEFAULT_EXPORT_MAX_BACKOFF - minDelay) +\n minDelay\n );\n }\n\n retryTimer = setTimeout(() => {\n sendWithRetry(retries - 1, minDelay);\n }, retryTime);\n } else {\n const error = new OTLPExporterError(\n res.statusMessage,\n res.statusCode,\n responseData\n );\n onError(error);\n // clear all timers since request was completed and promise was resolved\n clearTimeout(exporterTimer);\n clearTimeout(retryTimer);\n }\n }\n });\n });\n\n req.on('error', (error: Error | any) => {\n if (reqIsDestroyed) {\n const err = new OTLPExporterError('Request Timeout', error.code);\n onError(err);\n } else {\n onError(error);\n }\n clearTimeout(exporterTimer);\n clearTimeout(retryTimer);\n });\n\n req.on('abort', () => {\n if (reqIsDestroyed) {\n const err = new OTLPExporterError('Request Timeout');\n onError(err);\n }\n clearTimeout(exporterTimer);\n clearTimeout(retryTimer);\n });\n\n switch (collector.compression) {\n case CompressionAlgorithm.GZIP: {\n req.setHeader('Content-Encoding', 'gzip');\n const dataStream = readableFromUnit8Array(data);\n dataStream\n .on('error', onError)\n .pipe(zlib.createGzip())\n .on('error', onError)\n .pipe(req);\n\n break;\n }\n default:\n req.end(Buffer.from(data));\n break;\n }\n };\n sendWithRetry();\n}\n\nfunction readableFromUnit8Array(buff: string | Uint8Array): Readable {\n const readable = new Readable();\n readable.push(buff);\n readable.push(null);\n\n return readable;\n}\n\nexport function createHttpAgent(\n config: OTLPExporterNodeConfigBase\n): http.Agent | https.Agent | undefined {\n if (config.httpAgentOptions && config.keepAlive === false) {\n diag.warn('httpAgentOptions is used only when keepAlive is true');\n return undefined;\n }\n\n if (config.keepAlive === false || !config.url) return undefined;\n\n try {\n const parsedUrl = new url.URL(config.url as string);\n const Agent = parsedUrl.protocol === 'http:' ? http.Agent : https.Agent;\n return new Agent({ keepAlive: true, ...config.httpAgentOptions });\n } catch (err) {\n diag.error(\n `collector exporter failed to create http agent. err: ${err.message}`\n );\n return undefined;\n }\n}\n\nexport function configureCompression(\n compression: CompressionAlgorithm | undefined\n): CompressionAlgorithm {\n if (compression) {\n return compression;\n } else {\n const definedCompression =\n getEnv().OTEL_EXPORTER_OTLP_TRACES_COMPRESSION ||\n getEnv().OTEL_EXPORTER_OTLP_COMPRESSION;\n return definedCompression === CompressionAlgorithm.GZIP\n ? CompressionAlgorithm.GZIP\n : CompressionAlgorithm.NONE;\n }\n}\n"]}
@@ -1,21 +0,0 @@
1
- import { OTLPExporterError } from '../../types';
2
- /**
3
- * Send metrics/spans using browser navigator.sendBeacon
4
- * @param body
5
- * @param url
6
- * @param blobPropertyBag
7
- * @param onSuccess
8
- * @param onError
9
- */
10
- export declare function sendWithBeacon(body: Uint8Array, url: string, blobPropertyBag: BlobPropertyBag, onSuccess: () => void, onError: (error: OTLPExporterError) => void): void;
11
- /**
12
- * function to send metrics/spans using browser XMLHttpRequest
13
- * used when navigator.sendBeacon is not available
14
- * @param body
15
- * @param url
16
- * @param headers
17
- * @param onSuccess
18
- * @param onError
19
- */
20
- export declare function sendWithXhr(body: Uint8Array, url: string, headers: Record<string, string>, exporterTimeout: number, onSuccess: () => void, onError: (error: OTLPExporterError) => void): void;
21
- //# sourceMappingURL=util.d.ts.map
@@ -1,122 +0,0 @@
1
- /*
2
- * Copyright The OpenTelemetry Authors
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { diag } from '@opentelemetry/api';
17
- import { OTLPExporterError } from '../../types';
18
- import { DEFAULT_EXPORT_MAX_ATTEMPTS, DEFAULT_EXPORT_INITIAL_BACKOFF, DEFAULT_EXPORT_BACKOFF_MULTIPLIER, DEFAULT_EXPORT_MAX_BACKOFF, isExportRetryable, parseRetryAfterToMills, } from '../../util';
19
- /**
20
- * Send metrics/spans using browser navigator.sendBeacon
21
- * @param body
22
- * @param url
23
- * @param blobPropertyBag
24
- * @param onSuccess
25
- * @param onError
26
- */
27
- export function sendWithBeacon(body, url, blobPropertyBag, onSuccess, onError) {
28
- if (navigator.sendBeacon(url, new Blob([body], blobPropertyBag))) {
29
- diag.debug('sendBeacon - can send', body);
30
- onSuccess();
31
- }
32
- else {
33
- const error = new OTLPExporterError(`sendBeacon - cannot send ${body}`);
34
- onError(error);
35
- }
36
- }
37
- /**
38
- * function to send metrics/spans using browser XMLHttpRequest
39
- * used when navigator.sendBeacon is not available
40
- * @param body
41
- * @param url
42
- * @param headers
43
- * @param onSuccess
44
- * @param onError
45
- */
46
- export function sendWithXhr(body, url, headers, exporterTimeout, onSuccess, onError) {
47
- let retryTimer;
48
- let xhr;
49
- let reqIsDestroyed = false;
50
- const exporterTimer = setTimeout(() => {
51
- clearTimeout(retryTimer);
52
- reqIsDestroyed = true;
53
- if (xhr.readyState === XMLHttpRequest.DONE) {
54
- const err = new OTLPExporterError('Request Timeout');
55
- onError(err);
56
- }
57
- else {
58
- xhr.abort();
59
- }
60
- }, exporterTimeout);
61
- const sendWithRetry = (retries = DEFAULT_EXPORT_MAX_ATTEMPTS, minDelay = DEFAULT_EXPORT_INITIAL_BACKOFF) => {
62
- xhr = new XMLHttpRequest();
63
- xhr.open('POST', url);
64
- const defaultHeaders = {
65
- Accept: 'application/json',
66
- 'Content-Type': 'application/json',
67
- };
68
- Object.entries(Object.assign(Object.assign({}, defaultHeaders), headers)).forEach(([k, v]) => {
69
- xhr.setRequestHeader(k, v);
70
- });
71
- xhr.send(body);
72
- xhr.onreadystatechange = () => {
73
- if (xhr.readyState === XMLHttpRequest.DONE && reqIsDestroyed === false) {
74
- if (xhr.status >= 200 && xhr.status <= 299) {
75
- diag.debug('xhr success', body);
76
- onSuccess();
77
- clearTimeout(exporterTimer);
78
- clearTimeout(retryTimer);
79
- }
80
- else if (xhr.status && isExportRetryable(xhr.status) && retries > 0) {
81
- let retryTime;
82
- minDelay = DEFAULT_EXPORT_BACKOFF_MULTIPLIER * minDelay;
83
- // retry after interval specified in Retry-After header
84
- if (xhr.getResponseHeader('Retry-After')) {
85
- retryTime = parseRetryAfterToMills(xhr.getResponseHeader('Retry-After'));
86
- }
87
- else {
88
- // exponential backoff with jitter
89
- retryTime = Math.round(Math.random() * (DEFAULT_EXPORT_MAX_BACKOFF - minDelay) + minDelay);
90
- }
91
- retryTimer = setTimeout(() => {
92
- sendWithRetry(retries - 1, minDelay);
93
- }, retryTime);
94
- }
95
- else {
96
- const error = new OTLPExporterError(`Failed to export with XHR (status: ${xhr.status})`, xhr.status);
97
- onError(error);
98
- clearTimeout(exporterTimer);
99
- clearTimeout(retryTimer);
100
- }
101
- }
102
- };
103
- xhr.onabort = () => {
104
- if (reqIsDestroyed) {
105
- const err = new OTLPExporterError('Request Timeout');
106
- onError(err);
107
- }
108
- clearTimeout(exporterTimer);
109
- clearTimeout(retryTimer);
110
- };
111
- xhr.onerror = () => {
112
- if (reqIsDestroyed) {
113
- const err = new OTLPExporterError('Request Timeout');
114
- onError(err);
115
- }
116
- clearTimeout(exporterTimer);
117
- clearTimeout(retryTimer);
118
- };
119
- };
120
- sendWithRetry();
121
- }
122
- //# sourceMappingURL=util.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/platform/browser/util.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://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 */\nimport { diag } from '@opentelemetry/api';\nimport { OTLPExporterError } from '../../types';\nimport {\n DEFAULT_EXPORT_MAX_ATTEMPTS,\n DEFAULT_EXPORT_INITIAL_BACKOFF,\n DEFAULT_EXPORT_BACKOFF_MULTIPLIER,\n DEFAULT_EXPORT_MAX_BACKOFF,\n isExportRetryable,\n parseRetryAfterToMills,\n} from '../../util';\n\n/**\n * Send metrics/spans using browser navigator.sendBeacon\n * @param body\n * @param url\n * @param blobPropertyBag\n * @param onSuccess\n * @param onError\n */\nexport function sendWithBeacon(\n body: Uint8Array,\n url: string,\n blobPropertyBag: BlobPropertyBag,\n onSuccess: () => void,\n onError: (error: OTLPExporterError) => void\n): void {\n if (navigator.sendBeacon(url, new Blob([body], blobPropertyBag))) {\n diag.debug('sendBeacon - can send', body);\n onSuccess();\n } else {\n const error = new OTLPExporterError(`sendBeacon - cannot send ${body}`);\n onError(error);\n }\n}\n\n/**\n * function to send metrics/spans using browser XMLHttpRequest\n * used when navigator.sendBeacon is not available\n * @param body\n * @param url\n * @param headers\n * @param onSuccess\n * @param onError\n */\nexport function sendWithXhr(\n body: Uint8Array,\n url: string,\n headers: Record<string, string>,\n exporterTimeout: number,\n onSuccess: () => void,\n onError: (error: OTLPExporterError) => void\n): void {\n let retryTimer: ReturnType<typeof setTimeout>;\n let xhr: XMLHttpRequest;\n let reqIsDestroyed = false;\n\n const exporterTimer = setTimeout(() => {\n clearTimeout(retryTimer);\n reqIsDestroyed = true;\n\n if (xhr.readyState === XMLHttpRequest.DONE) {\n const err = new OTLPExporterError('Request Timeout');\n onError(err);\n } else {\n xhr.abort();\n }\n }, exporterTimeout);\n\n const sendWithRetry = (\n retries = DEFAULT_EXPORT_MAX_ATTEMPTS,\n minDelay = DEFAULT_EXPORT_INITIAL_BACKOFF\n ) => {\n xhr = new XMLHttpRequest();\n xhr.open('POST', url);\n\n const defaultHeaders = {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n };\n\n Object.entries({\n ...defaultHeaders,\n ...headers,\n }).forEach(([k, v]) => {\n xhr.setRequestHeader(k, v);\n });\n\n xhr.send(body);\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === XMLHttpRequest.DONE && reqIsDestroyed === false) {\n if (xhr.status >= 200 && xhr.status <= 299) {\n diag.debug('xhr success', body);\n onSuccess();\n clearTimeout(exporterTimer);\n clearTimeout(retryTimer);\n } else if (xhr.status && isExportRetryable(xhr.status) && retries > 0) {\n let retryTime: number;\n minDelay = DEFAULT_EXPORT_BACKOFF_MULTIPLIER * minDelay;\n\n // retry after interval specified in Retry-After header\n if (xhr.getResponseHeader('Retry-After')) {\n retryTime = parseRetryAfterToMills(\n xhr.getResponseHeader('Retry-After')!\n );\n } else {\n // exponential backoff with jitter\n retryTime = Math.round(\n Math.random() * (DEFAULT_EXPORT_MAX_BACKOFF - minDelay) + minDelay\n );\n }\n\n retryTimer = setTimeout(() => {\n sendWithRetry(retries - 1, minDelay);\n }, retryTime);\n } else {\n const error = new OTLPExporterError(\n `Failed to export with XHR (status: ${xhr.status})`,\n xhr.status\n );\n onError(error);\n clearTimeout(exporterTimer);\n clearTimeout(retryTimer);\n }\n }\n };\n\n xhr.onabort = () => {\n if (reqIsDestroyed) {\n const err = new OTLPExporterError('Request Timeout');\n onError(err);\n }\n clearTimeout(exporterTimer);\n clearTimeout(retryTimer);\n };\n\n xhr.onerror = () => {\n if (reqIsDestroyed) {\n const err = new OTLPExporterError('Request Timeout');\n onError(err);\n }\n clearTimeout(exporterTimer);\n clearTimeout(retryTimer);\n };\n };\n\n sendWithRetry();\n}\n"]}
@@ -1,19 +0,0 @@
1
- /// <reference types="node" />
2
- import * as http from 'http';
3
- import * as https from 'https';
4
- import { OTLPExporterNodeBase } from './OTLPExporterNodeBase';
5
- import { OTLPExporterNodeConfigBase } from '.';
6
- import { CompressionAlgorithm } from './types';
7
- import { OTLPExporterError } from '../../types';
8
- /**
9
- * Sends data using http
10
- * @param collector
11
- * @param data
12
- * @param contentType
13
- * @param onSuccess
14
- * @param onError
15
- */
16
- export declare function sendWithHttp<ExportItem, ServiceResponse>(collector: OTLPExporterNodeBase<ExportItem, ServiceResponse>, data: string | Uint8Array, contentType: string, onSuccess: () => void, onError: (error: OTLPExporterError) => void): void;
17
- export declare function createHttpAgent(config: OTLPExporterNodeConfigBase): http.Agent | https.Agent | undefined;
18
- export declare function configureCompression(compression: CompressionAlgorithm | undefined): CompressionAlgorithm;
19
- //# sourceMappingURL=util.d.ts.map
@@ -1,181 +0,0 @@
1
- /*
2
- * Copyright The OpenTelemetry Authors
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import * as url from 'url';
17
- import * as http from 'http';
18
- import * as https from 'https';
19
- import * as zlib from 'zlib';
20
- import { Readable } from 'stream';
21
- import { diag } from '@opentelemetry/api';
22
- import { CompressionAlgorithm } from './types';
23
- import { getEnv } from '@opentelemetry/core';
24
- import { OTLPExporterError } from '../../types';
25
- import { DEFAULT_EXPORT_MAX_ATTEMPTS, DEFAULT_EXPORT_INITIAL_BACKOFF, DEFAULT_EXPORT_BACKOFF_MULTIPLIER, DEFAULT_EXPORT_MAX_BACKOFF, isExportRetryable, parseRetryAfterToMills, } from '../../util';
26
- /**
27
- * Sends data using http
28
- * @param collector
29
- * @param data
30
- * @param contentType
31
- * @param onSuccess
32
- * @param onError
33
- */
34
- export function sendWithHttp(collector, data, contentType, onSuccess, onError) {
35
- const exporterTimeout = collector.timeoutMillis;
36
- const parsedUrl = new url.URL(collector.url);
37
- const nodeVersion = Number(process.versions.node.split('.')[0]);
38
- let retryTimer;
39
- let req;
40
- let reqIsDestroyed = false;
41
- const exporterTimer = setTimeout(() => {
42
- clearTimeout(retryTimer);
43
- reqIsDestroyed = true;
44
- if (req.destroyed) {
45
- const err = new OTLPExporterError('Request Timeout');
46
- onError(err);
47
- }
48
- else {
49
- // req.abort() was deprecated since v14
50
- nodeVersion >= 14 ? req.destroy() : req.abort();
51
- }
52
- }, exporterTimeout);
53
- const options = {
54
- hostname: parsedUrl.hostname,
55
- port: parsedUrl.port,
56
- path: parsedUrl.pathname,
57
- method: 'POST',
58
- headers: Object.assign({ 'Content-Type': contentType }, collector.headers),
59
- agent: collector.agent,
60
- };
61
- const request = parsedUrl.protocol === 'http:' ? http.request : https.request;
62
- const sendWithRetry = (retries = DEFAULT_EXPORT_MAX_ATTEMPTS, minDelay = DEFAULT_EXPORT_INITIAL_BACKOFF) => {
63
- req = request(options, (res) => {
64
- let responseData = '';
65
- res.on('data', chunk => (responseData += chunk));
66
- res.on('aborted', () => {
67
- if (reqIsDestroyed) {
68
- const err = new OTLPExporterError('Request Timeout');
69
- onError(err);
70
- }
71
- });
72
- res.on('end', () => {
73
- if (reqIsDestroyed === false) {
74
- if (res.statusCode && res.statusCode < 299) {
75
- diag.debug(`statusCode: ${res.statusCode}`, responseData);
76
- onSuccess();
77
- // clear all timers since request was completed and promise was resolved
78
- clearTimeout(exporterTimer);
79
- clearTimeout(retryTimer);
80
- }
81
- else if (res.statusCode &&
82
- isExportRetryable(res.statusCode) &&
83
- retries > 0) {
84
- let retryTime;
85
- minDelay = DEFAULT_EXPORT_BACKOFF_MULTIPLIER * minDelay;
86
- // retry after interval specified in Retry-After header
87
- if (res.headers['retry-after']) {
88
- retryTime = parseRetryAfterToMills(res.headers['retry-after']);
89
- }
90
- else {
91
- // exponential backoff with jitter
92
- retryTime = Math.round(Math.random() * (DEFAULT_EXPORT_MAX_BACKOFF - minDelay) +
93
- minDelay);
94
- }
95
- retryTimer = setTimeout(() => {
96
- sendWithRetry(retries - 1, minDelay);
97
- }, retryTime);
98
- }
99
- else {
100
- const error = new OTLPExporterError(res.statusMessage, res.statusCode, responseData);
101
- onError(error);
102
- // clear all timers since request was completed and promise was resolved
103
- clearTimeout(exporterTimer);
104
- clearTimeout(retryTimer);
105
- }
106
- }
107
- });
108
- });
109
- req.on('error', (error) => {
110
- if (reqIsDestroyed) {
111
- const err = new OTLPExporterError('Request Timeout', error.code);
112
- onError(err);
113
- }
114
- else {
115
- onError(error);
116
- }
117
- clearTimeout(exporterTimer);
118
- clearTimeout(retryTimer);
119
- });
120
- req.on('abort', () => {
121
- if (reqIsDestroyed) {
122
- const err = new OTLPExporterError('Request Timeout');
123
- onError(err);
124
- }
125
- clearTimeout(exporterTimer);
126
- clearTimeout(retryTimer);
127
- });
128
- switch (collector.compression) {
129
- case CompressionAlgorithm.GZIP: {
130
- req.setHeader('Content-Encoding', 'gzip');
131
- const dataStream = readableFromUnit8Array(data);
132
- dataStream
133
- .on('error', onError)
134
- .pipe(zlib.createGzip())
135
- .on('error', onError)
136
- .pipe(req);
137
- break;
138
- }
139
- default:
140
- req.end(Buffer.from(data));
141
- break;
142
- }
143
- };
144
- sendWithRetry();
145
- }
146
- function readableFromUnit8Array(buff) {
147
- const readable = new Readable();
148
- readable.push(buff);
149
- readable.push(null);
150
- return readable;
151
- }
152
- export function createHttpAgent(config) {
153
- if (config.httpAgentOptions && config.keepAlive === false) {
154
- diag.warn('httpAgentOptions is used only when keepAlive is true');
155
- return undefined;
156
- }
157
- if (config.keepAlive === false || !config.url)
158
- return undefined;
159
- try {
160
- const parsedUrl = new url.URL(config.url);
161
- const Agent = parsedUrl.protocol === 'http:' ? http.Agent : https.Agent;
162
- return new Agent(Object.assign({ keepAlive: true }, config.httpAgentOptions));
163
- }
164
- catch (err) {
165
- diag.error(`collector exporter failed to create http agent. err: ${err.message}`);
166
- return undefined;
167
- }
168
- }
169
- export function configureCompression(compression) {
170
- if (compression) {
171
- return compression;
172
- }
173
- else {
174
- const definedCompression = getEnv().OTEL_EXPORTER_OTLP_TRACES_COMPRESSION ||
175
- getEnv().OTEL_EXPORTER_OTLP_COMPRESSION;
176
- return definedCompression === CompressionAlgorithm.GZIP
177
- ? CompressionAlgorithm.GZIP
178
- : CompressionAlgorithm.NONE;
179
- }
180
- }
181
- //# sourceMappingURL=util.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/platform/node/util.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://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 */\nimport * as url from 'url';\nimport * as http from 'http';\nimport * as https from 'https';\nimport * as zlib from 'zlib';\nimport { Readable } from 'stream';\nimport { OTLPExporterNodeBase } from './OTLPExporterNodeBase';\nimport { OTLPExporterNodeConfigBase } from '.';\nimport { diag } from '@opentelemetry/api';\nimport { CompressionAlgorithm } from './types';\nimport { getEnv } from '@opentelemetry/core';\nimport { OTLPExporterError } from '../../types';\nimport {\n DEFAULT_EXPORT_MAX_ATTEMPTS,\n DEFAULT_EXPORT_INITIAL_BACKOFF,\n DEFAULT_EXPORT_BACKOFF_MULTIPLIER,\n DEFAULT_EXPORT_MAX_BACKOFF,\n isExportRetryable,\n parseRetryAfterToMills,\n} from '../../util';\n\n/**\n * Sends data using http\n * @param collector\n * @param data\n * @param contentType\n * @param onSuccess\n * @param onError\n */\nexport function sendWithHttp<ExportItem, ServiceResponse>(\n collector: OTLPExporterNodeBase<ExportItem, ServiceResponse>,\n data: string | Uint8Array,\n contentType: string,\n onSuccess: () => void,\n onError: (error: OTLPExporterError) => void\n): void {\n const exporterTimeout = collector.timeoutMillis;\n const parsedUrl = new url.URL(collector.url);\n const nodeVersion = Number(process.versions.node.split('.')[0]);\n let retryTimer: ReturnType<typeof setTimeout>;\n let req: http.ClientRequest;\n let reqIsDestroyed = false;\n\n const exporterTimer = setTimeout(() => {\n clearTimeout(retryTimer);\n reqIsDestroyed = true;\n\n if (req.destroyed) {\n const err = new OTLPExporterError('Request Timeout');\n onError(err);\n } else {\n // req.abort() was deprecated since v14\n nodeVersion >= 14 ? req.destroy() : req.abort();\n }\n }, exporterTimeout);\n\n const options: http.RequestOptions | https.RequestOptions = {\n hostname: parsedUrl.hostname,\n port: parsedUrl.port,\n path: parsedUrl.pathname,\n method: 'POST',\n headers: {\n 'Content-Type': contentType,\n ...collector.headers,\n },\n agent: collector.agent,\n };\n\n const request = parsedUrl.protocol === 'http:' ? http.request : https.request;\n\n const sendWithRetry = (\n retries = DEFAULT_EXPORT_MAX_ATTEMPTS,\n minDelay = DEFAULT_EXPORT_INITIAL_BACKOFF\n ) => {\n req = request(options, (res: http.IncomingMessage) => {\n let responseData = '';\n res.on('data', chunk => (responseData += chunk));\n\n res.on('aborted', () => {\n if (reqIsDestroyed) {\n const err = new OTLPExporterError('Request Timeout');\n onError(err);\n }\n });\n\n res.on('end', () => {\n if (reqIsDestroyed === false) {\n if (res.statusCode && res.statusCode < 299) {\n diag.debug(`statusCode: ${res.statusCode}`, responseData);\n onSuccess();\n // clear all timers since request was completed and promise was resolved\n clearTimeout(exporterTimer);\n clearTimeout(retryTimer);\n } else if (\n res.statusCode &&\n isExportRetryable(res.statusCode) &&\n retries > 0\n ) {\n let retryTime: number;\n minDelay = DEFAULT_EXPORT_BACKOFF_MULTIPLIER * minDelay;\n\n // retry after interval specified in Retry-After header\n if (res.headers['retry-after']) {\n retryTime = parseRetryAfterToMills(res.headers['retry-after']!);\n } else {\n // exponential backoff with jitter\n retryTime = Math.round(\n Math.random() * (DEFAULT_EXPORT_MAX_BACKOFF - minDelay) +\n minDelay\n );\n }\n\n retryTimer = setTimeout(() => {\n sendWithRetry(retries - 1, minDelay);\n }, retryTime);\n } else {\n const error = new OTLPExporterError(\n res.statusMessage,\n res.statusCode,\n responseData\n );\n onError(error);\n // clear all timers since request was completed and promise was resolved\n clearTimeout(exporterTimer);\n clearTimeout(retryTimer);\n }\n }\n });\n });\n\n req.on('error', (error: Error | any) => {\n if (reqIsDestroyed) {\n const err = new OTLPExporterError('Request Timeout', error.code);\n onError(err);\n } else {\n onError(error);\n }\n clearTimeout(exporterTimer);\n clearTimeout(retryTimer);\n });\n\n req.on('abort', () => {\n if (reqIsDestroyed) {\n const err = new OTLPExporterError('Request Timeout');\n onError(err);\n }\n clearTimeout(exporterTimer);\n clearTimeout(retryTimer);\n });\n\n switch (collector.compression) {\n case CompressionAlgorithm.GZIP: {\n req.setHeader('Content-Encoding', 'gzip');\n const dataStream = readableFromUnit8Array(data);\n dataStream\n .on('error', onError)\n .pipe(zlib.createGzip())\n .on('error', onError)\n .pipe(req);\n\n break;\n }\n default:\n req.end(Buffer.from(data));\n break;\n }\n };\n sendWithRetry();\n}\n\nfunction readableFromUnit8Array(buff: string | Uint8Array): Readable {\n const readable = new Readable();\n readable.push(buff);\n readable.push(null);\n\n return readable;\n}\n\nexport function createHttpAgent(\n config: OTLPExporterNodeConfigBase\n): http.Agent | https.Agent | undefined {\n if (config.httpAgentOptions && config.keepAlive === false) {\n diag.warn('httpAgentOptions is used only when keepAlive is true');\n return undefined;\n }\n\n if (config.keepAlive === false || !config.url) return undefined;\n\n try {\n const parsedUrl = new url.URL(config.url as string);\n const Agent = parsedUrl.protocol === 'http:' ? http.Agent : https.Agent;\n return new Agent({ keepAlive: true, ...config.httpAgentOptions });\n } catch (err) {\n diag.error(\n `collector exporter failed to create http agent. err: ${err.message}`\n );\n return undefined;\n }\n}\n\nexport function configureCompression(\n compression: CompressionAlgorithm | undefined\n): CompressionAlgorithm {\n if (compression) {\n return compression;\n } else {\n const definedCompression =\n getEnv().OTEL_EXPORTER_OTLP_TRACES_COMPRESSION ||\n getEnv().OTEL_EXPORTER_OTLP_COMPRESSION;\n return definedCompression === CompressionAlgorithm.GZIP\n ? CompressionAlgorithm.GZIP\n : CompressionAlgorithm.NONE;\n }\n}\n"]}
@@ -1,21 +0,0 @@
1
- import { OTLPExporterError } from '../../types';
2
- /**
3
- * Send metrics/spans using browser navigator.sendBeacon
4
- * @param body
5
- * @param url
6
- * @param blobPropertyBag
7
- * @param onSuccess
8
- * @param onError
9
- */
10
- export declare function sendWithBeacon(body: Uint8Array, url: string, blobPropertyBag: BlobPropertyBag, onSuccess: () => void, onError: (error: OTLPExporterError) => void): void;
11
- /**
12
- * function to send metrics/spans using browser XMLHttpRequest
13
- * used when navigator.sendBeacon is not available
14
- * @param body
15
- * @param url
16
- * @param headers
17
- * @param onSuccess
18
- * @param onError
19
- */
20
- export declare function sendWithXhr(body: Uint8Array, url: string, headers: Record<string, string>, exporterTimeout: number, onSuccess: () => void, onError: (error: OTLPExporterError) => void): void;
21
- //# sourceMappingURL=util.d.ts.map
@@ -1,127 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sendWithXhr = exports.sendWithBeacon = void 0;
4
- /*
5
- * Copyright The OpenTelemetry Authors
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the "License");
8
- * you may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * https://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- */
19
- const api_1 = require("@opentelemetry/api");
20
- const types_1 = require("../../types");
21
- const util_1 = require("../../util");
22
- /**
23
- * Send metrics/spans using browser navigator.sendBeacon
24
- * @param body
25
- * @param url
26
- * @param blobPropertyBag
27
- * @param onSuccess
28
- * @param onError
29
- */
30
- function sendWithBeacon(body, url, blobPropertyBag, onSuccess, onError) {
31
- if (navigator.sendBeacon(url, new Blob([body], blobPropertyBag))) {
32
- api_1.diag.debug('sendBeacon - can send', body);
33
- onSuccess();
34
- }
35
- else {
36
- const error = new types_1.OTLPExporterError(`sendBeacon - cannot send ${body}`);
37
- onError(error);
38
- }
39
- }
40
- exports.sendWithBeacon = sendWithBeacon;
41
- /**
42
- * function to send metrics/spans using browser XMLHttpRequest
43
- * used when navigator.sendBeacon is not available
44
- * @param body
45
- * @param url
46
- * @param headers
47
- * @param onSuccess
48
- * @param onError
49
- */
50
- function sendWithXhr(body, url, headers, exporterTimeout, onSuccess, onError) {
51
- let retryTimer;
52
- let xhr;
53
- let reqIsDestroyed = false;
54
- const exporterTimer = setTimeout(() => {
55
- clearTimeout(retryTimer);
56
- reqIsDestroyed = true;
57
- if (xhr.readyState === XMLHttpRequest.DONE) {
58
- const err = new types_1.OTLPExporterError('Request Timeout');
59
- onError(err);
60
- }
61
- else {
62
- xhr.abort();
63
- }
64
- }, exporterTimeout);
65
- const sendWithRetry = (retries = util_1.DEFAULT_EXPORT_MAX_ATTEMPTS, minDelay = util_1.DEFAULT_EXPORT_INITIAL_BACKOFF) => {
66
- xhr = new XMLHttpRequest();
67
- xhr.open('POST', url);
68
- const defaultHeaders = {
69
- Accept: 'application/json',
70
- 'Content-Type': 'application/json',
71
- };
72
- Object.entries(Object.assign(Object.assign({}, defaultHeaders), headers)).forEach(([k, v]) => {
73
- xhr.setRequestHeader(k, v);
74
- });
75
- xhr.send(body);
76
- xhr.onreadystatechange = () => {
77
- if (xhr.readyState === XMLHttpRequest.DONE && reqIsDestroyed === false) {
78
- if (xhr.status >= 200 && xhr.status <= 299) {
79
- api_1.diag.debug('xhr success', body);
80
- onSuccess();
81
- clearTimeout(exporterTimer);
82
- clearTimeout(retryTimer);
83
- }
84
- else if (xhr.status && (0, util_1.isExportRetryable)(xhr.status) && retries > 0) {
85
- let retryTime;
86
- minDelay = util_1.DEFAULT_EXPORT_BACKOFF_MULTIPLIER * minDelay;
87
- // retry after interval specified in Retry-After header
88
- if (xhr.getResponseHeader('Retry-After')) {
89
- retryTime = (0, util_1.parseRetryAfterToMills)(xhr.getResponseHeader('Retry-After'));
90
- }
91
- else {
92
- // exponential backoff with jitter
93
- retryTime = Math.round(Math.random() * (util_1.DEFAULT_EXPORT_MAX_BACKOFF - minDelay) + minDelay);
94
- }
95
- retryTimer = setTimeout(() => {
96
- sendWithRetry(retries - 1, minDelay);
97
- }, retryTime);
98
- }
99
- else {
100
- const error = new types_1.OTLPExporterError(`Failed to export with XHR (status: ${xhr.status})`, xhr.status);
101
- onError(error);
102
- clearTimeout(exporterTimer);
103
- clearTimeout(retryTimer);
104
- }
105
- }
106
- };
107
- xhr.onabort = () => {
108
- if (reqIsDestroyed) {
109
- const err = new types_1.OTLPExporterError('Request Timeout');
110
- onError(err);
111
- }
112
- clearTimeout(exporterTimer);
113
- clearTimeout(retryTimer);
114
- };
115
- xhr.onerror = () => {
116
- if (reqIsDestroyed) {
117
- const err = new types_1.OTLPExporterError('Request Timeout');
118
- onError(err);
119
- }
120
- clearTimeout(exporterTimer);
121
- clearTimeout(retryTimer);
122
- };
123
- };
124
- sendWithRetry();
125
- }
126
- exports.sendWithXhr = sendWithXhr;
127
- //# sourceMappingURL=util.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/platform/browser/util.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,4CAA0C;AAC1C,uCAAgD;AAChD,qCAOoB;AAEpB;;;;;;;GAOG;AACH,SAAgB,cAAc,CAC5B,IAAgB,EAChB,GAAW,EACX,eAAgC,EAChC,SAAqB,EACrB,OAA2C;IAE3C,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE;QAChE,UAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;QAC1C,SAAS,EAAE,CAAC;KACb;SAAM;QACL,MAAM,KAAK,GAAG,IAAI,yBAAiB,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;QACxE,OAAO,CAAC,KAAK,CAAC,CAAC;KAChB;AACH,CAAC;AAdD,wCAcC;AAED;;;;;;;;GAQG;AACH,SAAgB,WAAW,CACzB,IAAgB,EAChB,GAAW,EACX,OAA+B,EAC/B,eAAuB,EACvB,SAAqB,EACrB,OAA2C;IAE3C,IAAI,UAAyC,CAAC;IAC9C,IAAI,GAAmB,CAAC;IACxB,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;QACpC,YAAY,CAAC,UAAU,CAAC,CAAC;QACzB,cAAc,GAAG,IAAI,CAAC;QAEtB,IAAI,GAAG,CAAC,UAAU,KAAK,cAAc,CAAC,IAAI,EAAE;YAC1C,MAAM,GAAG,GAAG,IAAI,yBAAiB,CAAC,iBAAiB,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,CAAC;SACd;aAAM;YACL,GAAG,CAAC,KAAK,EAAE,CAAC;SACb;IACH,CAAC,EAAE,eAAe,CAAC,CAAC;IAEpB,MAAM,aAAa,GAAG,CACpB,OAAO,GAAG,kCAA2B,EACrC,QAAQ,GAAG,qCAA8B,EACzC,EAAE;QACF,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAEtB,MAAM,cAAc,GAAG;YACrB,MAAM,EAAE,kBAAkB;YAC1B,cAAc,EAAE,kBAAkB;SACnC,CAAC;QAEF,MAAM,CAAC,OAAO,iCACT,cAAc,GACd,OAAO,EACV,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;YACpB,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEf,GAAG,CAAC,kBAAkB,GAAG,GAAG,EAAE;YAC5B,IAAI,GAAG,CAAC,UAAU,KAAK,cAAc,CAAC,IAAI,IAAI,cAAc,KAAK,KAAK,EAAE;gBACtE,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;oBAC1C,UAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;oBAChC,SAAS,EAAE,CAAC;oBACZ,YAAY,CAAC,aAAa,CAAC,CAAC;oBAC5B,YAAY,CAAC,UAAU,CAAC,CAAC;iBAC1B;qBAAM,IAAI,GAAG,CAAC,MAAM,IAAI,IAAA,wBAAiB,EAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE;oBACrE,IAAI,SAAiB,CAAC;oBACtB,QAAQ,GAAG,wCAAiC,GAAG,QAAQ,CAAC;oBAExD,uDAAuD;oBACvD,IAAI,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE;wBACxC,SAAS,GAAG,IAAA,6BAAsB,EAChC,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAE,CACtC,CAAC;qBACH;yBAAM;wBACL,kCAAkC;wBAClC,SAAS,GAAG,IAAI,CAAC,KAAK,CACpB,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,iCAA0B,GAAG,QAAQ,CAAC,GAAG,QAAQ,CACnE,CAAC;qBACH;oBAED,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;wBAC3B,aAAa,CAAC,OAAO,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;oBACvC,CAAC,EAAE,SAAS,CAAC,CAAC;iBACf;qBAAM;oBACL,MAAM,KAAK,GAAG,IAAI,yBAAiB,CACjC,sCAAsC,GAAG,CAAC,MAAM,GAAG,EACnD,GAAG,CAAC,MAAM,CACX,CAAC;oBACF,OAAO,CAAC,KAAK,CAAC,CAAC;oBACf,YAAY,CAAC,aAAa,CAAC,CAAC;oBAC5B,YAAY,CAAC,UAAU,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC,CAAC;QAEF,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE;YACjB,IAAI,cAAc,EAAE;gBAClB,MAAM,GAAG,GAAG,IAAI,yBAAiB,CAAC,iBAAiB,CAAC,CAAC;gBACrD,OAAO,CAAC,GAAG,CAAC,CAAC;aACd;YACD,YAAY,CAAC,aAAa,CAAC,CAAC;YAC5B,YAAY,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC,CAAC;QAEF,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE;YACjB,IAAI,cAAc,EAAE;gBAClB,MAAM,GAAG,GAAG,IAAI,yBAAiB,CAAC,iBAAiB,CAAC,CAAC;gBACrD,OAAO,CAAC,GAAG,CAAC,CAAC;aACd;YACD,YAAY,CAAC,aAAa,CAAC,CAAC;YAC5B,YAAY,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,aAAa,EAAE,CAAC;AAClB,CAAC;AAvGD,kCAuGC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://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 */\nimport { diag } from '@opentelemetry/api';\nimport { OTLPExporterError } from '../../types';\nimport {\n DEFAULT_EXPORT_MAX_ATTEMPTS,\n DEFAULT_EXPORT_INITIAL_BACKOFF,\n DEFAULT_EXPORT_BACKOFF_MULTIPLIER,\n DEFAULT_EXPORT_MAX_BACKOFF,\n isExportRetryable,\n parseRetryAfterToMills,\n} from '../../util';\n\n/**\n * Send metrics/spans using browser navigator.sendBeacon\n * @param body\n * @param url\n * @param blobPropertyBag\n * @param onSuccess\n * @param onError\n */\nexport function sendWithBeacon(\n body: Uint8Array,\n url: string,\n blobPropertyBag: BlobPropertyBag,\n onSuccess: () => void,\n onError: (error: OTLPExporterError) => void\n): void {\n if (navigator.sendBeacon(url, new Blob([body], blobPropertyBag))) {\n diag.debug('sendBeacon - can send', body);\n onSuccess();\n } else {\n const error = new OTLPExporterError(`sendBeacon - cannot send ${body}`);\n onError(error);\n }\n}\n\n/**\n * function to send metrics/spans using browser XMLHttpRequest\n * used when navigator.sendBeacon is not available\n * @param body\n * @param url\n * @param headers\n * @param onSuccess\n * @param onError\n */\nexport function sendWithXhr(\n body: Uint8Array,\n url: string,\n headers: Record<string, string>,\n exporterTimeout: number,\n onSuccess: () => void,\n onError: (error: OTLPExporterError) => void\n): void {\n let retryTimer: ReturnType<typeof setTimeout>;\n let xhr: XMLHttpRequest;\n let reqIsDestroyed = false;\n\n const exporterTimer = setTimeout(() => {\n clearTimeout(retryTimer);\n reqIsDestroyed = true;\n\n if (xhr.readyState === XMLHttpRequest.DONE) {\n const err = new OTLPExporterError('Request Timeout');\n onError(err);\n } else {\n xhr.abort();\n }\n }, exporterTimeout);\n\n const sendWithRetry = (\n retries = DEFAULT_EXPORT_MAX_ATTEMPTS,\n minDelay = DEFAULT_EXPORT_INITIAL_BACKOFF\n ) => {\n xhr = new XMLHttpRequest();\n xhr.open('POST', url);\n\n const defaultHeaders = {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n };\n\n Object.entries({\n ...defaultHeaders,\n ...headers,\n }).forEach(([k, v]) => {\n xhr.setRequestHeader(k, v);\n });\n\n xhr.send(body);\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === XMLHttpRequest.DONE && reqIsDestroyed === false) {\n if (xhr.status >= 200 && xhr.status <= 299) {\n diag.debug('xhr success', body);\n onSuccess();\n clearTimeout(exporterTimer);\n clearTimeout(retryTimer);\n } else if (xhr.status && isExportRetryable(xhr.status) && retries > 0) {\n let retryTime: number;\n minDelay = DEFAULT_EXPORT_BACKOFF_MULTIPLIER * minDelay;\n\n // retry after interval specified in Retry-After header\n if (xhr.getResponseHeader('Retry-After')) {\n retryTime = parseRetryAfterToMills(\n xhr.getResponseHeader('Retry-After')!\n );\n } else {\n // exponential backoff with jitter\n retryTime = Math.round(\n Math.random() * (DEFAULT_EXPORT_MAX_BACKOFF - minDelay) + minDelay\n );\n }\n\n retryTimer = setTimeout(() => {\n sendWithRetry(retries - 1, minDelay);\n }, retryTime);\n } else {\n const error = new OTLPExporterError(\n `Failed to export with XHR (status: ${xhr.status})`,\n xhr.status\n );\n onError(error);\n clearTimeout(exporterTimer);\n clearTimeout(retryTimer);\n }\n }\n };\n\n xhr.onabort = () => {\n if (reqIsDestroyed) {\n const err = new OTLPExporterError('Request Timeout');\n onError(err);\n }\n clearTimeout(exporterTimer);\n clearTimeout(retryTimer);\n };\n\n xhr.onerror = () => {\n if (reqIsDestroyed) {\n const err = new OTLPExporterError('Request Timeout');\n onError(err);\n }\n clearTimeout(exporterTimer);\n clearTimeout(retryTimer);\n };\n };\n\n sendWithRetry();\n}\n"]}
@@ -1,19 +0,0 @@
1
- /// <reference types="node" />
2
- import * as http from 'http';
3
- import * as https from 'https';
4
- import { OTLPExporterNodeBase } from './OTLPExporterNodeBase';
5
- import { OTLPExporterNodeConfigBase } from '.';
6
- import { CompressionAlgorithm } from './types';
7
- import { OTLPExporterError } from '../../types';
8
- /**
9
- * Sends data using http
10
- * @param collector
11
- * @param data
12
- * @param contentType
13
- * @param onSuccess
14
- * @param onError
15
- */
16
- export declare function sendWithHttp<ExportItem, ServiceResponse>(collector: OTLPExporterNodeBase<ExportItem, ServiceResponse>, data: string | Uint8Array, contentType: string, onSuccess: () => void, onError: (error: OTLPExporterError) => void): void;
17
- export declare function createHttpAgent(config: OTLPExporterNodeConfigBase): http.Agent | https.Agent | undefined;
18
- export declare function configureCompression(compression: CompressionAlgorithm | undefined): CompressionAlgorithm;
19
- //# sourceMappingURL=util.d.ts.map