@depup/aws-cdk 2.1117.0-depup.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 (308) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +16 -0
  3. package/README.md +25 -0
  4. package/THIRD_PARTY_LICENSES +24866 -0
  5. package/bin/cdk +6 -0
  6. package/build-info.json +4 -0
  7. package/changes.json +5 -0
  8. package/db.json.gz +0 -0
  9. package/docs/deploy-architecture.md +194 -0
  10. package/lib/api/aws-auth.d.ts +3 -0
  11. package/lib/api/aws-auth.js +21 -0
  12. package/lib/api/bootstrap/bootstrap-template.yaml +855 -0
  13. package/lib/api/bootstrap.d.ts +1 -0
  14. package/lib/api/bootstrap.js +19 -0
  15. package/lib/api/cloud-assembly.d.ts +5 -0
  16. package/lib/api/cloud-assembly.js +23 -0
  17. package/lib/api/cloudformation.d.ts +1 -0
  18. package/lib/api/cloudformation.js +19 -0
  19. package/lib/api/context.d.ts +1 -0
  20. package/lib/api/context.js +19 -0
  21. package/lib/api/deployments.d.ts +1 -0
  22. package/lib/api/deployments.js +19 -0
  23. package/lib/api/hotswap.d.ts +1 -0
  24. package/lib/api/hotswap.js +19 -0
  25. package/lib/api/index.d.ts +16 -0
  26. package/lib/api/index.js +38 -0
  27. package/lib/api/network-detector.d.ts +1 -0
  28. package/lib/api/network-detector.js +19 -0
  29. package/lib/api/notices.d.ts +1 -0
  30. package/lib/api/notices.js +19 -0
  31. package/lib/api/plugin.d.ts +1 -0
  32. package/lib/api/plugin.js +19 -0
  33. package/lib/api/refactor.d.ts +1 -0
  34. package/lib/api/refactor.js +8 -0
  35. package/lib/api/settings.d.ts +1 -0
  36. package/lib/api/settings.js +19 -0
  37. package/lib/api/tags.d.ts +1 -0
  38. package/lib/api/tags.js +19 -0
  39. package/lib/api-private.d.ts +9 -0
  40. package/lib/api-private.js +29 -0
  41. package/lib/cli/cdk-toolkit.d.ts +699 -0
  42. package/lib/cli/cdk-toolkit.js +1260 -0
  43. package/lib/cli/ci-systems.d.ts +29 -0
  44. package/lib/cli/ci-systems.js +61 -0
  45. package/lib/cli/cli-config.d.ts +10 -0
  46. package/lib/cli/cli-config.js +556 -0
  47. package/lib/cli/cli-type-registry.json +1147 -0
  48. package/lib/cli/cli.d.ts +3 -0
  49. package/lib/cli/cli.js +746 -0
  50. package/lib/cli/convert-to-user-input.d.ts +3 -0
  51. package/lib/cli/convert-to-user-input.js +560 -0
  52. package/lib/cli/display-version.d.ts +11 -0
  53. package/lib/cli/display-version.js +101 -0
  54. package/lib/cli/io-host/cli-io-host.d.ts +191 -0
  55. package/lib/cli/io-host/cli-io-host.js +477 -0
  56. package/lib/cli/io-host/index.d.ts +1 -0
  57. package/lib/cli/io-host/index.js +18 -0
  58. package/lib/cli/parse-command-line-arguments.d.ts +1 -0
  59. package/lib/cli/parse-command-line-arguments.js +1067 -0
  60. package/lib/cli/platform-warnings.d.ts +3 -0
  61. package/lib/cli/platform-warnings.js +44 -0
  62. package/lib/cli/pretty-print-error.d.ts +1 -0
  63. package/lib/cli/pretty-print-error.js +37 -0
  64. package/lib/cli/proxy-agent.d.ts +30 -0
  65. package/lib/cli/proxy-agent.js +52 -0
  66. package/lib/cli/root-dir.d.ts +10 -0
  67. package/lib/cli/root-dir.js +23 -0
  68. package/lib/cli/singleton-plugin-host.d.ts +7 -0
  69. package/lib/cli/singleton-plugin-host.js +11 -0
  70. package/lib/cli/tables.d.ts +1 -0
  71. package/lib/cli/tables.js +10 -0
  72. package/lib/cli/telemetry/collect-telemetry.d.ts +5 -0
  73. package/lib/cli/telemetry/collect-telemetry.js +16 -0
  74. package/lib/cli/telemetry/error.d.ts +15 -0
  75. package/lib/cli/telemetry/error.js +68 -0
  76. package/lib/cli/telemetry/feature-flags.d.ts +96 -0
  77. package/lib/cli/telemetry/feature-flags.js +103 -0
  78. package/lib/cli/telemetry/installation-id.d.ts +5 -0
  79. package/lib/cli/telemetry/installation-id.js +47 -0
  80. package/lib/cli/telemetry/library-version.d.ts +2 -0
  81. package/lib/cli/telemetry/library-version.js +30 -0
  82. package/lib/cli/telemetry/messages.d.ts +43 -0
  83. package/lib/cli/telemetry/messages.js +60 -0
  84. package/lib/cli/telemetry/sanitation.d.ts +100 -0
  85. package/lib/cli/telemetry/sanitation.js +79 -0
  86. package/lib/cli/telemetry/schema.d.ts +85 -0
  87. package/lib/cli/telemetry/schema.js +3 -0
  88. package/lib/cli/telemetry/session.d.ts +67 -0
  89. package/lib/cli/telemetry/session.js +174 -0
  90. package/lib/cli/telemetry/sink/endpoint-sink.d.ts +44 -0
  91. package/lib/cli/telemetry/sink/endpoint-sink.js +105 -0
  92. package/lib/cli/telemetry/sink/file-sink.d.ts +32 -0
  93. package/lib/cli/telemetry/sink/file-sink.js +43 -0
  94. package/lib/cli/telemetry/sink/funnel.d.ts +16 -0
  95. package/lib/cli/telemetry/sink/funnel.js +29 -0
  96. package/lib/cli/telemetry/sink/io-host-sink.d.ts +27 -0
  97. package/lib/cli/telemetry/sink/io-host-sink.js +35 -0
  98. package/lib/cli/telemetry/sink/sink-interface.d.ts +18 -0
  99. package/lib/cli/telemetry/sink/sink-interface.js +3 -0
  100. package/lib/cli/user-configuration.d.ts +104 -0
  101. package/lib/cli/user-configuration.js +334 -0
  102. package/lib/cli/user-input.d.ts +1505 -0
  103. package/lib/cli/user-input.js +3 -0
  104. package/lib/cli/util/ci.d.ts +5 -0
  105. package/lib/cli/util/ci.js +11 -0
  106. package/lib/cli/util/console-formatters.d.ts +18 -0
  107. package/lib/cli/util/console-formatters.js +42 -0
  108. package/lib/cli/util/guess-agent.d.ts +7 -0
  109. package/lib/cli/util/guess-agent.js +32 -0
  110. package/lib/cli/util/npm.d.ts +4 -0
  111. package/lib/cli/util/npm.js +34 -0
  112. package/lib/cli/util/trap-errors.d.ts +6 -0
  113. package/lib/cli/util/trap-errors.js +17 -0
  114. package/lib/cli/util/yargs-helpers.d.ts +22 -0
  115. package/lib/cli/util/yargs-helpers.js +49 -0
  116. package/lib/cli/version.d.ts +3 -0
  117. package/lib/cli/version.js +22 -0
  118. package/lib/commands/context.d.ts +40 -0
  119. package/lib/commands/context.js +158 -0
  120. package/lib/commands/deploy.d.ts +13 -0
  121. package/lib/commands/deploy.js +18 -0
  122. package/lib/commands/docs.d.ts +18 -0
  123. package/lib/commands/docs.js +33 -0
  124. package/lib/commands/doctor.d.ts +4 -0
  125. package/lib/commands/doctor.js +69 -0
  126. package/lib/commands/flags/flags.d.ts +13 -0
  127. package/lib/commands/flags/flags.js +30 -0
  128. package/lib/commands/flags/interactive-handler.d.ts +16 -0
  129. package/lib/commands/flags/interactive-handler.js +71 -0
  130. package/lib/commands/flags/obsolete-flags.d.ts +1 -0
  131. package/lib/commands/flags/obsolete-flags.js +9 -0
  132. package/lib/commands/flags/operations.d.ts +80 -0
  133. package/lib/commands/flags/operations.js +467 -0
  134. package/lib/commands/flags/router.d.ts +18 -0
  135. package/lib/commands/flags/router.js +60 -0
  136. package/lib/commands/flags/types.d.ts +12 -0
  137. package/lib/commands/flags/types.js +12 -0
  138. package/lib/commands/flags/validator.d.ts +22 -0
  139. package/lib/commands/flags/validator.js +95 -0
  140. package/lib/commands/init/index.d.ts +1 -0
  141. package/lib/commands/init/index.js +18 -0
  142. package/lib/commands/init/init-hooks.d.ts +41 -0
  143. package/lib/commands/init/init-hooks.js +85 -0
  144. package/lib/commands/init/init.d.ts +139 -0
  145. package/lib/commands/init/init.js +788 -0
  146. package/lib/commands/init/os.d.ts +8 -0
  147. package/lib/commands/init/os.js +91 -0
  148. package/lib/commands/init/package-manager.d.ts +15 -0
  149. package/lib/commands/init/package-manager.js +14 -0
  150. package/lib/commands/language.d.ts +30 -0
  151. package/lib/commands/language.js +46 -0
  152. package/lib/commands/list-stacks.d.ts +21 -0
  153. package/lib/commands/list-stacks.js +28 -0
  154. package/lib/commands/migrate.d.ts +316 -0
  155. package/lib/commands/migrate.js +801 -0
  156. package/lib/context-providers.d.ts +1 -0
  157. package/lib/context-providers.js +19 -0
  158. package/lib/cxapp/cloud-assembly.d.ts +79 -0
  159. package/lib/cxapp/cloud-assembly.js +109 -0
  160. package/lib/cxapp/cloud-executable.d.ts +51 -0
  161. package/lib/cxapp/cloud-executable.js +123 -0
  162. package/lib/cxapp/environments.d.ts +8 -0
  163. package/lib/cxapp/environments.js +66 -0
  164. package/lib/cxapp/exec.d.ts +14 -0
  165. package/lib/cxapp/exec.js +133 -0
  166. package/lib/cxapp/index.d.ts +4 -0
  167. package/lib/cxapp/index.js +21 -0
  168. package/lib/index.d.ts +2 -0
  169. package/lib/index.js +364043 -0
  170. package/lib/index_bg.wasm +0 -0
  171. package/lib/init-templates/.init-version.json +1 -0
  172. package/lib/init-templates/.no-packagejson-validator +0 -0
  173. package/lib/init-templates/.recommended-feature-flags.json +86 -0
  174. package/lib/init-templates/LICENSE +16 -0
  175. package/lib/init-templates/app/csharp/.template.gitignore +342 -0
  176. package/lib/init-templates/app/csharp/README.md +14 -0
  177. package/lib/init-templates/app/csharp/cdk.template.json +15 -0
  178. package/lib/init-templates/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj +20 -0
  179. package/lib/init-templates/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs +13 -0
  180. package/lib/init-templates/app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs +1 -0
  181. package/lib/init-templates/app/csharp/src/%name.PascalCased%/Program.template.cs +44 -0
  182. package/lib/init-templates/app/csharp/src/%name.PascalCased%.template.sln +18 -0
  183. package/lib/init-templates/app/fsharp/.template.gitignore +342 -0
  184. package/lib/init-templates/app/fsharp/README.md +18 -0
  185. package/lib/init-templates/app/fsharp/cdk.template.json +14 -0
  186. package/lib/init-templates/app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj +25 -0
  187. package/lib/init-templates/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs +8 -0
  188. package/lib/init-templates/app/fsharp/src/%name.PascalCased%/Program.template.fs +11 -0
  189. package/lib/init-templates/app/fsharp/src/%name.PascalCased%.template.sln +18 -0
  190. package/lib/init-templates/app/go/%name%.template.go +70 -0
  191. package/lib/init-templates/app/go/%name%_test.template.go +26 -0
  192. package/lib/init-templates/app/go/.template.gitignore +19 -0
  193. package/lib/init-templates/app/go/README.md +12 -0
  194. package/lib/init-templates/app/go/cdk.template.json +13 -0
  195. package/lib/init-templates/app/go/go.template.mod +9 -0
  196. package/lib/init-templates/app/info.json +4 -0
  197. package/lib/init-templates/app/java/.template.gitignore +13 -0
  198. package/lib/init-templates/app/java/README.md +18 -0
  199. package/lib/init-templates/app/java/cdk.json +13 -0
  200. package/lib/init-templates/app/java/pom.xml +60 -0
  201. package/lib/init-templates/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java +42 -0
  202. package/lib/init-templates/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java +24 -0
  203. package/lib/init-templates/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java +26 -0
  204. package/lib/init-templates/app/javascript/.template.gitignore +5 -0
  205. package/lib/init-templates/app/javascript/.template.npmignore +3 -0
  206. package/lib/init-templates/app/javascript/README.md +12 -0
  207. package/lib/init-templates/app/javascript/bin/%name%.template.js +21 -0
  208. package/lib/init-templates/app/javascript/cdk.template.json +15 -0
  209. package/lib/init-templates/app/javascript/jest.config.js +4 -0
  210. package/lib/init-templates/app/javascript/lib/%name%-stack.template.js +23 -0
  211. package/lib/init-templates/app/javascript/package.json +20 -0
  212. package/lib/init-templates/app/javascript/test/%name%.test.template.js +17 -0
  213. package/lib/init-templates/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py +19 -0
  214. package/lib/init-templates/app/python/%name.PythonModule%/__init__.py +0 -0
  215. package/lib/init-templates/app/python/.template.gitignore +10 -0
  216. package/lib/init-templates/app/python/README.template.md +58 -0
  217. package/lib/init-templates/app/python/app.template.py +28 -0
  218. package/lib/init-templates/app/python/cdk.template.json +15 -0
  219. package/lib/init-templates/app/python/requirements-dev.txt +1 -0
  220. package/lib/init-templates/app/python/requirements.txt +2 -0
  221. package/lib/init-templates/app/python/source.bat +13 -0
  222. package/lib/init-templates/app/python/tests/__init__.py +0 -0
  223. package/lib/init-templates/app/python/tests/unit/__init__.py +0 -0
  224. package/lib/init-templates/app/python/tests/unit/test_%name.PythonModule%_stack.template.py +15 -0
  225. package/lib/init-templates/app/typescript/.template.gitignore +8 -0
  226. package/lib/init-templates/app/typescript/.template.npmignore +6 -0
  227. package/lib/init-templates/app/typescript/README.md +14 -0
  228. package/lib/init-templates/app/typescript/bin/%name%.template.ts +20 -0
  229. package/lib/init-templates/app/typescript/cdk.template.json +17 -0
  230. package/lib/init-templates/app/typescript/jest.config.js +9 -0
  231. package/lib/init-templates/app/typescript/lib/%name%-stack.template.ts +16 -0
  232. package/lib/init-templates/app/typescript/package.json +26 -0
  233. package/lib/init-templates/app/typescript/test/%name%.test.template.ts +17 -0
  234. package/lib/init-templates/app/typescript/tsconfig.json +32 -0
  235. package/lib/init-templates/lib/info.json +4 -0
  236. package/lib/init-templates/lib/typescript/.template.gitignore +8 -0
  237. package/lib/init-templates/lib/typescript/.template.npmignore +6 -0
  238. package/lib/init-templates/lib/typescript/README.template.md +12 -0
  239. package/lib/init-templates/lib/typescript/jest.config.js +9 -0
  240. package/lib/init-templates/lib/typescript/lib/index.template.ts +21 -0
  241. package/lib/init-templates/lib/typescript/package.json +24 -0
  242. package/lib/init-templates/lib/typescript/test/%name%.test.template.ts +18 -0
  243. package/lib/init-templates/lib/typescript/tsconfig.json +32 -0
  244. package/lib/init-templates/sample-app/csharp/.template.gitignore +342 -0
  245. package/lib/init-templates/sample-app/csharp/README.template.md +19 -0
  246. package/lib/init-templates/sample-app/csharp/cdk.template.json +15 -0
  247. package/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj +20 -0
  248. package/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs +24 -0
  249. package/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs +1 -0
  250. package/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/Program.template.cs +15 -0
  251. package/lib/init-templates/sample-app/csharp/src/%name.PascalCased%.template.sln +18 -0
  252. package/lib/init-templates/sample-app/fsharp/.template.gitignore +342 -0
  253. package/lib/init-templates/sample-app/fsharp/README.template.md +20 -0
  254. package/lib/init-templates/sample-app/fsharp/cdk.template.json +14 -0
  255. package/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj +25 -0
  256. package/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs +14 -0
  257. package/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs +11 -0
  258. package/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%.template.sln +18 -0
  259. package/lib/init-templates/sample-app/go/%name%.template.go +73 -0
  260. package/lib/init-templates/sample-app/go/%name%_test.template.go +25 -0
  261. package/lib/init-templates/sample-app/go/.template.gitignore +19 -0
  262. package/lib/init-templates/sample-app/go/README.md +12 -0
  263. package/lib/init-templates/sample-app/go/cdk.template.json +13 -0
  264. package/lib/init-templates/sample-app/go/go.template.mod +9 -0
  265. package/lib/init-templates/sample-app/info.json +4 -0
  266. package/lib/init-templates/sample-app/java/.template.gitignore +13 -0
  267. package/lib/init-templates/sample-app/java/README.template.md +19 -0
  268. package/lib/init-templates/sample-app/java/cdk.json +13 -0
  269. package/lib/init-templates/sample-app/java/pom.xml +55 -0
  270. package/lib/init-templates/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java +13 -0
  271. package/lib/init-templates/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java +29 -0
  272. package/lib/init-templates/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java +27 -0
  273. package/lib/init-templates/sample-app/javascript/.template.gitignore +5 -0
  274. package/lib/init-templates/sample-app/javascript/.template.npmignore +3 -0
  275. package/lib/init-templates/sample-app/javascript/README.template.md +13 -0
  276. package/lib/init-templates/sample-app/javascript/bin/%name%.template.js +6 -0
  277. package/lib/init-templates/sample-app/javascript/cdk.template.json +15 -0
  278. package/lib/init-templates/sample-app/javascript/jest.config.js +4 -0
  279. package/lib/init-templates/sample-app/javascript/lib/%name%-stack.template.js +25 -0
  280. package/lib/init-templates/sample-app/javascript/package.json +20 -0
  281. package/lib/init-templates/sample-app/javascript/test/%name%.test.template.js +16 -0
  282. package/lib/init-templates/sample-app/javascript/tsconfig.json +34 -0
  283. package/lib/init-templates/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py +26 -0
  284. package/lib/init-templates/sample-app/python/%name.PythonModule%/__init__.py +0 -0
  285. package/lib/init-templates/sample-app/python/.template.gitignore +22 -0
  286. package/lib/init-templates/sample-app/python/README.template.md +65 -0
  287. package/lib/init-templates/sample-app/python/app.template.py +11 -0
  288. package/lib/init-templates/sample-app/python/cdk.template.json +15 -0
  289. package/lib/init-templates/sample-app/python/requirements-dev.txt +1 -0
  290. package/lib/init-templates/sample-app/python/requirements.txt +2 -0
  291. package/lib/init-templates/sample-app/python/source.bat +13 -0
  292. package/lib/init-templates/sample-app/python/tests/__init__.py +0 -0
  293. package/lib/init-templates/sample-app/python/tests/unit/__init__.py +0 -0
  294. package/lib/init-templates/sample-app/python/tests/unit/test_%name.PythonModule%_stack.template.py +21 -0
  295. package/lib/init-templates/sample-app/typescript/.template.gitignore +8 -0
  296. package/lib/init-templates/sample-app/typescript/.template.npmignore +6 -0
  297. package/lib/init-templates/sample-app/typescript/README.template.md +15 -0
  298. package/lib/init-templates/sample-app/typescript/bin/%name%.template.ts +6 -0
  299. package/lib/init-templates/sample-app/typescript/cdk.template.json +17 -0
  300. package/lib/init-templates/sample-app/typescript/jest.config.js +9 -0
  301. package/lib/init-templates/sample-app/typescript/lib/%name%-stack.template.ts +19 -0
  302. package/lib/init-templates/sample-app/typescript/package.json +26 -0
  303. package/lib/init-templates/sample-app/typescript/test/%name%.test.template.ts +17 -0
  304. package/lib/init-templates/sample-app/typescript/tsconfig.json +32 -0
  305. package/lib/util.d.ts +1 -0
  306. package/lib/util.js +19 -0
  307. package/package.json +170 -0
  308. package/release.txt +2 -0
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbnRlcmZhY2UgU2Vzc2lvbklkZW50aWZpZXJzIHtcbiAgcmVhZG9ubHkgY2RrQ2xpVmVyc2lvbjogc3RyaW5nO1xuICByZWFkb25seSBjZGtMaWJyYXJ5VmVyc2lvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgdGVsZW1ldHJ5VmVyc2lvbjogc3RyaW5nO1xuICByZWFkb25seSBzZXNzaW9uSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgaW5zdGFsbGF0aW9uSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElkZW50aWZpZXJzIGV4dGVuZHMgU2Vzc2lvbklkZW50aWZpZXJzIHtcbiAgcmVhZG9ubHkgZXZlbnRJZDogc3RyaW5nO1xuICByZWFkb25seSB0aW1lc3RhbXA6IHN0cmluZztcbn1cblxudHlwZSBDb25maWdFbnRyeSA9IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbW1hbmQge1xuICByZWFkb25seSBwYXRoOiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgcGFyYW1ldGVyczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcmVhZG9ubHkgY29uZmlnOiB7IFtrZXk6IHN0cmluZ106IENvbmZpZ0VudHJ5IH07XG59XG5cbmludGVyZmFjZSBTZXNzaW9uRXZlbnQge1xuICByZWFkb25seSBjb21tYW5kOiBDb21tYW5kO1xufVxuXG5leHBvcnQgdHlwZSBFdmVudFR5cGUgPSAnU1lOVEgnIHwgJ0lOVk9LRScgfCAnREVQTE9ZJyB8ICdIT1RTV0FQJztcbmV4cG9ydCB0eXBlIFN0YXRlID0gJ0FCT1JURUQnIHwgJ0ZBSUxFRCcgfCAnU1VDQ0VFREVEJztcbmludGVyZmFjZSBFdmVudCBleHRlbmRzIFNlc3Npb25FdmVudCB7XG4gIHJlYWRvbmx5IHN0YXRlOiBTdGF0ZTtcbiAgcmVhZG9ubHkgZXZlbnRUeXBlOiBFdmVudFR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvbkVudmlyb25tZW50IHtcbiAgcmVhZG9ubHkgb3M6IHtcbiAgICByZWFkb25seSBwbGF0Zm9ybTogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHJlbGVhc2U6IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgY2k6IGJvb2xlYW47XG4gIHJlYWRvbmx5IG5vZGVWZXJzaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFnZW50PzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIEVudmlyb25tZW50IGV4dGVuZHMgU2Vzc2lvbkVudmlyb25tZW50IHtcbn1cblxuaW50ZXJmYWNlIER1cmF0aW9uIHtcbiAgcmVhZG9ubHkgdG90YWw6IG51bWJlcjtcbiAgcmVhZG9ubHkgY29tcG9uZW50cz86IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH07XG59XG5cbnR5cGUgQ291bnRlcnMgPSB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yRGV0YWlscyB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbWVzc2FnZT86IHN0cmluZzsgLy8gc2FuaXRpemVkIHN0YWNrIG1lc3NhZ2VcbiAgcmVhZG9ubHkgc3RhY2tUcmFjZT86IHN0cmluZzsgLy8gc2FuaXRpemVkIHN0YWNrIHRyYWNlXG4gIHJlYWRvbmx5IGxvZ3M/OiBzdHJpbmc7IC8vIHNhbml0aXplZCBzdGFjayBsb2dzXG59XG5cbmludGVyZmFjZSBEZXBlbmRlbmN5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBTZXNzaW9uUHJvamVjdCB7XG4gIHJlYWRvbmx5IGRlcGVuZGVuY2llcz86IERlcGVuZGVuY3lbXTtcbiAgcmVhZG9ubHkgbGFuZ3VhZ2U/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBQcm9qZWN0IGV4dGVuZHMgU2Vzc2lvblByb2plY3Qge1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlbGVtZXRyeVNjaGVtYSB7XG4gIHJlYWRvbmx5IGlkZW50aWZpZXJzOiBJZGVudGlmaWVycztcbiAgcmVhZG9ubHkgZXZlbnQ6IEV2ZW50O1xuICByZWFkb25seSBlbnZpcm9ubWVudDogRW52aXJvbm1lbnQ7XG4gIHJlYWRvbmx5IHByb2plY3Q6IFByb2plY3Q7XG4gIHJlYWRvbmx5IGR1cmF0aW9uOiBEdXJhdGlvbjtcbiAgcmVhZG9ubHkgY291bnRlcnM/OiBDb3VudGVycztcbiAgcmVhZG9ubHkgZXJyb3I/OiBFcnJvckRldGFpbHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvblNjaGVtYSB7XG4gIGlkZW50aWZpZXJzOiBTZXNzaW9uSWRlbnRpZmllcnM7XG4gIGV2ZW50OiBTZXNzaW9uRXZlbnQ7XG4gIGVudmlyb25tZW50OiBTZXNzaW9uRW52aXJvbm1lbnQ7XG4gIHByb2plY3Q6IFNlc3Npb25Qcm9qZWN0O1xufVxuIl19
@@ -0,0 +1,67 @@
1
+ import { type EventType, type ErrorDetails } from './schema';
2
+ import type { ITelemetrySink } from './sink/sink-interface';
3
+ import type { Context } from '../../api/context';
4
+ import type { CliIoHost } from '../io-host/cli-io-host';
5
+ export interface TelemetrySessionProps {
6
+ readonly ioHost: CliIoHost;
7
+ readonly client: ITelemetrySink;
8
+ readonly arguments: any;
9
+ readonly context: Context;
10
+ }
11
+ export interface TelemetryEvent {
12
+ readonly eventType: EventType;
13
+ readonly duration: number;
14
+ readonly error?: ErrorDetails;
15
+ readonly counters?: Record<string, number>;
16
+ }
17
+ /**
18
+ * Timer of a single event
19
+ */
20
+ export interface Timing {
21
+ /**
22
+ * Total time spent in this operation
23
+ */
24
+ totalMs: number;
25
+ /**
26
+ * Count of operations that together took `totalMs`.
27
+ */
28
+ count: number;
29
+ }
30
+ export declare class TelemetrySession {
31
+ private readonly props;
32
+ private ioHost;
33
+ private client;
34
+ private _sessionInfo?;
35
+ private span?;
36
+ private count;
37
+ constructor(props: TelemetrySessionProps);
38
+ begin(): Promise<void>;
39
+ attachRegion(region: string): Promise<void>;
40
+ /**
41
+ * Attach a language guess
42
+ */
43
+ attachLanguage(language: string | undefined): void;
44
+ /**
45
+ * Attach our best guess at running under an agent or not
46
+ */
47
+ attachAgent(isAgent: boolean | undefined): void;
48
+ /**
49
+ * Attach the CDK library version
50
+ *
51
+ * By default the telemetry will guess at the CDK library version if it so
52
+ * happens that the CDK project is an NPM project and the CDK CLI is executed
53
+ * in the root of NPM project with `aws-cdk-lib` available in `node_modules`.
54
+ * This may succeed or may fail.
55
+ *
56
+ * Once we have produced and loaded the cloud assembly more accurate
57
+ * information becomes available that we can add in.
58
+ */
59
+ attachCdkLibVersion(libVersion: string): void;
60
+ /**
61
+ * When the command is complete, so is the CliIoHost. Ends the span of the entire CliIoHost
62
+ * and notifies with an optional error message in the data.
63
+ */
64
+ end(error?: ErrorDetails): Promise<void>;
65
+ emit(event: TelemetryEvent): Promise<void>;
66
+ private get sessionInfo();
67
+ }
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TelemetrySession = void 0;
4
+ const crypto_1 = require("crypto");
5
+ const toolkit_lib_1 = require("@aws-cdk/toolkit-lib");
6
+ const installation_id_1 = require("./installation-id");
7
+ const library_version_1 = require("./library-version");
8
+ const sanitation_1 = require("./sanitation");
9
+ const ci_systems_1 = require("../ci-systems");
10
+ const messages_1 = require("../telemetry/messages");
11
+ const ci_1 = require("../util/ci");
12
+ const version_1 = require("../version");
13
+ const error_1 = require("./error");
14
+ const ABORTED_ERROR_MESSAGE = '__CDK-Toolkit__Aborted';
15
+ class TelemetrySession {
16
+ constructor(props) {
17
+ this.props = props;
18
+ this.count = 0;
19
+ this.ioHost = props.ioHost;
20
+ this.client = props.client;
21
+ }
22
+ async begin() {
23
+ // sanitize the raw cli input
24
+ const { path, parameters } = (0, sanitation_1.sanitizeCommandLineArguments)(this.props.arguments);
25
+ this._sessionInfo = {
26
+ identifiers: {
27
+ installationId: await (0, installation_id_1.getOrCreateInstallationId)(this.ioHost.asIoHelper()),
28
+ sessionId: (0, crypto_1.randomUUID)(),
29
+ telemetryVersion: '2.0',
30
+ cdkCliVersion: (0, version_1.versionNumber)(),
31
+ cdkLibraryVersion: await (0, library_version_1.getLibraryVersion)(this.ioHost.asIoHelper()),
32
+ },
33
+ event: {
34
+ command: {
35
+ path,
36
+ parameters,
37
+ config: {
38
+ context: (0, sanitation_1.sanitizeContext)(this.props.context),
39
+ },
40
+ },
41
+ },
42
+ environment: {
43
+ ci: (0, ci_1.isCI)() || Boolean((0, ci_systems_1.detectCiSystem)()),
44
+ os: {
45
+ platform: process.platform,
46
+ release: process.release.name,
47
+ },
48
+ nodeVersion: process.version,
49
+ },
50
+ project: {},
51
+ };
52
+ // If SIGINT has a listener installed, its default behavior will be removed (Node.js will no longer exit).
53
+ // This ensures that on SIGINT we process safely close the telemetry session before exiting.
54
+ process.on('SIGINT', async () => {
55
+ try {
56
+ await this.end({
57
+ name: error_1.USER_INTERRUPTED_CODE,
58
+ message: ABORTED_ERROR_MESSAGE,
59
+ });
60
+ }
61
+ catch (e) {
62
+ await this.ioHost.defaults.trace(`Ending Telemetry failed: ${e.message}`);
63
+ }
64
+ process.exit(1);
65
+ });
66
+ // Begin the session span
67
+ this.span = await this.ioHost.asIoHelper().span(messages_1.CLI_PRIVATE_SPAN.COMMAND).begin({});
68
+ }
69
+ async attachRegion(region) {
70
+ this.sessionInfo.identifiers = {
71
+ ...this.sessionInfo.identifiers,
72
+ region,
73
+ };
74
+ }
75
+ /**
76
+ * Attach a language guess
77
+ */
78
+ attachLanguage(language) {
79
+ // Don't want to crash accidentally
80
+ if (!this._sessionInfo) {
81
+ return;
82
+ }
83
+ if (language) {
84
+ mutable(this.sessionInfo.project).language = language;
85
+ }
86
+ }
87
+ /**
88
+ * Attach our best guess at running under an agent or not
89
+ */
90
+ attachAgent(isAgent) {
91
+ // Don't want to crash accidentally
92
+ if (!this._sessionInfo) {
93
+ return;
94
+ }
95
+ mutable(this.sessionInfo.environment).agent = isAgent;
96
+ }
97
+ /**
98
+ * Attach the CDK library version
99
+ *
100
+ * By default the telemetry will guess at the CDK library version if it so
101
+ * happens that the CDK project is an NPM project and the CDK CLI is executed
102
+ * in the root of NPM project with `aws-cdk-lib` available in `node_modules`.
103
+ * This may succeed or may fail.
104
+ *
105
+ * Once we have produced and loaded the cloud assembly more accurate
106
+ * information becomes available that we can add in.
107
+ */
108
+ attachCdkLibVersion(libVersion) {
109
+ // Don't want to crash accidentally
110
+ if (!this._sessionInfo) {
111
+ return;
112
+ }
113
+ mutable(this.sessionInfo.identifiers).cdkLibraryVersion = libVersion;
114
+ }
115
+ /**
116
+ * When the command is complete, so is the CliIoHost. Ends the span of the entire CliIoHost
117
+ * and notifies with an optional error message in the data.
118
+ */
119
+ async end(error) {
120
+ await this.span?.end({ error });
121
+ // Ideally span.end() should no-op if called twice, but that is not the case right now
122
+ this.span = undefined;
123
+ await this.client.flush();
124
+ }
125
+ async emit(event) {
126
+ this.count += 1;
127
+ return this.client.emit({
128
+ event: {
129
+ command: this.sessionInfo.event.command,
130
+ state: getState(event.error),
131
+ eventType: event.eventType,
132
+ },
133
+ identifiers: {
134
+ ...this.sessionInfo.identifiers,
135
+ eventId: `${this.sessionInfo.identifiers.sessionId}:${this.count}`,
136
+ timestamp: new Date().toISOString(),
137
+ },
138
+ environment: this.sessionInfo.environment,
139
+ project: this.sessionInfo.project,
140
+ duration: {
141
+ total: event.duration,
142
+ },
143
+ ...(event.error ? {
144
+ error: {
145
+ name: event.error.name,
146
+ },
147
+ } : {}),
148
+ ...(event.counters && Object.keys(event.counters).length > 0 ? { counters: event.counters } : {}),
149
+ });
150
+ }
151
+ get sessionInfo() {
152
+ if (!this._sessionInfo) {
153
+ throw new toolkit_lib_1.ToolkitError('SessionNotInitialized', 'Session Info not initialized. Call begin() first.');
154
+ }
155
+ return this._sessionInfo;
156
+ }
157
+ }
158
+ exports.TelemetrySession = TelemetrySession;
159
+ function getState(error) {
160
+ if (error) {
161
+ return isAbortedError(error) ? 'ABORTED' : 'FAILED';
162
+ }
163
+ return 'SUCCEEDED';
164
+ }
165
+ function isAbortedError(error) {
166
+ if (error?.name === 'ToolkitError' && error?.message?.includes(ABORTED_ERROR_MESSAGE)) {
167
+ return true;
168
+ }
169
+ return false;
170
+ }
171
+ function mutable(x) {
172
+ return x;
173
+ }
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW9DO0FBQ3BDLHNEQUFvRDtBQUNwRCx1REFBOEQ7QUFDOUQsdURBQXNEO0FBQ3RELDZDQUE2RTtBQUs3RSw4Q0FBK0M7QUFHL0Msb0RBQXlEO0FBQ3pELG1DQUFrQztBQUNsQyx3Q0FBMkM7QUFDM0MsbUNBQWdEO0FBRWhELE1BQU0scUJBQXFCLEdBQUcsd0JBQXdCLENBQUM7QUErQnZELE1BQWEsZ0JBQWdCO0lBTzNCLFlBQTZCLEtBQTRCO1FBQTVCLFVBQUssR0FBTCxLQUFLLENBQXVCO1FBRmpELFVBQUssR0FBRyxDQUFDLENBQUM7UUFHaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUM3QixDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQUs7UUFDaEIsNkJBQTZCO1FBQzdCLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBQSx5Q0FBNEIsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxZQUFZLEdBQUc7WUFDbEIsV0FBVyxFQUFFO2dCQUNYLGNBQWMsRUFBRSxNQUFNLElBQUEsMkNBQXlCLEVBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDekUsU0FBUyxFQUFFLElBQUEsbUJBQVUsR0FBRTtnQkFDdkIsZ0JBQWdCLEVBQUUsS0FBSztnQkFDdkIsYUFBYSxFQUFFLElBQUEsdUJBQWEsR0FBRTtnQkFDOUIsaUJBQWlCLEVBQUUsTUFBTSxJQUFBLG1DQUFpQixFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDckU7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wsT0FBTyxFQUFF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QUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDbEcsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQVksV0FBVztRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSwwQkFBWSxDQUFDLHVCQUF1QixFQUFFLG1EQUFtRCxDQUFDLENBQUM7UUFDdkcsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0NBQ0Y7QUEvSkQsNENBK0pDO0FBRUQsU0FBUyxRQUFRLENBQUMsS0FBb0I7SUFDcEMsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLE9BQU8sY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLEtBQW9CO0lBQzFDLElBQUksS0FBSyxFQUFFLElBQUksS0FBSyxjQUFjLElBQUksS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDO1FBQ3RGLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQVMsT0FBTyxDQUFtQixDQUFJO0lBQ3JDLE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJhbmRvbVVVSUQgfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgVG9vbGtpdEVycm9yIH0gZnJvbSAnQGF3cy1jZGsvdG9vbGtpdC1saWInO1xuaW1wb3J0IHsgZ2V0T3JDcmVhdGVJbnN0YWxsYXRpb25JZCB9IGZyb20gJy4vaW5zdGFsbGF0aW9uLWlkJztcbmltcG9ydCB7IGdldExpYnJhcnlWZXJzaW9uIH0gZnJvbSAnLi9saWJyYXJ5LXZlcnNpb24nO1xuaW1wb3J0IHsgc2FuaXRpemVDb21tYW5kTGluZUFyZ3VtZW50cywgc2FuaXRpemVDb250ZXh0IH0gZnJvbSAnLi9zYW5pdGF0aW9uJztcbmltcG9ydCB7IHR5cGUgRXZlbnRUeXBlLCB0eXBlIFNlc3Npb25TY2hlbWEsIHR5cGUgU3RhdGUsIHR5cGUgRXJyb3JEZXRhaWxzIH0gZnJvbSAnLi9zY2hlbWEnO1xuaW1wb3J0IHR5cGUgeyBJVGVsZW1ldHJ5U2luayB9IGZyb20gJy4vc2luay9zaW5rLWludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IENvbnRleHQgfSBmcm9tICcuLi8uLi9hcGkvY29udGV4dCc7XG5pbXBvcnQgdHlwZSB7IElNZXNzYWdlU3BhbiB9IGZyb20gJy4uLy4uL2FwaS1wcml2YXRlJztcbmltcG9ydCB7IGRldGVjdENpU3lzdGVtIH0gZnJvbSAnLi4vY2ktc3lzdGVtcyc7XG5pbXBvcnQgdHlwZSB7IENsaUlvSG9zdCB9IGZyb20gJy4uL2lvLWhvc3QvY2xpLWlvLWhvc3QnO1xuaW1wb3J0IHR5cGUgeyBFdmVudFJlc3VsdCB9IGZyb20gJy4uL3RlbGVtZXRyeS9tZXNzYWdlcyc7XG5pbXBvcnQgeyBDTElfUFJJVkFURV9TUEFOIH0gZnJvbSAnLi4vdGVsZW1ldHJ5L21lc3NhZ2VzJztcbmltcG9ydCB7IGlzQ0kgfSBmcm9tICcuLi91dGlsL2NpJztcbmltcG9ydCB7IHZlcnNpb25OdW1iZXIgfSBmcm9tICcuLi92ZXJzaW9uJztcbmltcG9ydCB7IFVTRVJfSU5URVJSVVBURURfQ09ERSB9IGZyb20gJy4vZXJyb3InO1xuXG5jb25zdCBBQk9SVEVEX0VSUk9SX01FU1NBR0UgPSAnX19DREstVG9vbGtpdF9fQWJvcnRlZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVsZW1ldHJ5U2Vzc2lvblByb3BzIHtcbiAgcmVhZG9ubHkgaW9Ib3N0OiBDbGlJb0hvc3Q7XG4gIHJlYWRvbmx5IGNsaWVudDogSVRlbGVtZXRyeVNpbms7XG4gIHJlYWRvbmx5IGFyZ3VtZW50czogYW55O1xuICByZWFkb25seSBjb250ZXh0OiBDb250ZXh0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlbGVtZXRyeUV2ZW50IHtcbiAgcmVhZG9ubHkgZXZlbnRUeXBlOiBFdmVudFR5cGU7XG4gIHJlYWRvbmx5IGR1cmF0aW9uOiBudW1iZXI7XG4gIHJlYWRvbmx5IGVycm9yPzogRXJyb3JEZXRhaWxzO1xuICByZWFkb25seSBjb3VudGVycz86IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG59XG5cbi8qKlxuICogVGltZXIgb2YgYSBzaW5nbGUgZXZlbnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUaW1pbmcge1xuICAvKipcbiAgICogVG90YWwgdGltZSBzcGVudCBpbiB0aGlzIG9wZXJhdGlvblxuICAgKi9cbiAgdG90YWxNczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDb3VudCBvZiBvcGVyYXRpb25zIHRoYXQgdG9nZXRoZXIgdG9vayBgdG90YWxNc2AuXG4gICAqL1xuICBjb3VudDogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgVGVsZW1ldHJ5U2Vzc2lvbiB7XG4gIHByaXZhdGUgaW9Ib3N0OiBDbGlJb0hvc3Q7XG4gIHByaXZhdGUgY2xpZW50OiBJVGVsZW1ldHJ5U2luaztcbiAgcHJpdmF0ZSBfc2Vzc2lvbkluZm8/OiBTZXNzaW9uU2NoZW1hO1xuICBwcml2YXRlIHNwYW4/OiBJTWVzc2FnZVNwYW48RXZlbnRSZXN1bHQ+O1xuICBwcml2YXRlIGNvdW50ID0gMDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBUZWxlbWV0cnlTZXNzaW9uUHJvcHMpIHtcbiAgICB0aGlzLmlvSG9zdCA9IHByb3BzLmlvSG9zdDtcbiAgICB0aGlzLmNsaWVudCA9IHByb3BzLmNsaWVudDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBiZWdpbigpIHtcbiAgICAvLyBzYW5pdGl6ZSB0aGUgcmF3IGNsaSBpbnB1dFxuICAgIGNvbnN0IHsgcGF0aCwgcGFyYW1ldGVycyB9ID0gc2FuaXRpemVDb21tYW5kTGluZUFyZ3VtZW50cyh0aGlzLnByb3BzLmFyZ3VtZW50cyk7XG4gICAgdGhpcy5fc2Vzc2lvbkluZm8gPSB7XG4gICAgICBpZGVudGlmaWVyczoge1xuICAgICAgICBpbnN0YWxsYXRpb25JZDogYXdhaXQgZ2V0T3JDcmVhdGVJbnN0YWxsYXRpb25JZCh0aGlzLmlvSG9zdC5hc0lvSGVscGVyKCkpLFxuICAgICAgICBzZXNzaW9uSWQ6IHJhbmRvbVVVSUQoKSxcbiAgICAgICAgdGVsZW1ldHJ5VmVyc2lvbjogJzIuMCcsXG4gICAgICAgIGNka0NsaVZlcnNpb246IHZlcnNpb25OdW1iZXIoKSxcbiAgICAgICAgY2RrTGlicmFyeVZlcnNpb246IGF3YWl0IGdldExpYnJhcnlWZXJzaW9uKHRoaXMuaW9Ib3N0LmFzSW9IZWxwZXIoKSksXG4gICAgICB9LFxuICAgICAgZXZlbnQ6IHtcbiAgICAgICAgY29tbWFuZDoge1xuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgcGFyYW1ldGVycyxcbiAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgIGNvbnRleHQ6IHNhbml0aXplQ29udGV4dCh0aGlzLnByb3BzLmNvbnRleHQpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgY2k6IGlzQ0koKSB8fCBCb29sZWFuKGRldGVjdENpU3lzdGVtKCkpLFxuICAgICAgICBvczoge1xuICAgICAgICAgIHBsYXRmb3JtOiBwcm9jZXNzLnBsYXRmb3JtLFxuICAgICAgICAgIHJlbGVhc2U6IHByb2Nlc3MucmVsZWFzZS5uYW1lLFxuICAgICAgICB9LFxuICAgICAgICBub2RlVmVyc2lvbjogcHJvY2Vzcy52ZXJzaW9uLFxuICAgICAgfSxcbiAgICAgIHByb2plY3Q6IHt9LFxuICAgIH07XG5cbiAgICAvLyBJZiBTSUdJTlQgaGFzIGEgbGlzdGVuZXIgaW5zdGFsbGVkLCBpdHMgZGVmYXVsdCBiZWhhdmlvciB3aWxsIGJlIHJlbW92ZWQgKE5vZGUuanMgd2lsbCBubyBsb25nZXIgZXhpdCkuXG4gICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgb24gU0lHSU5UIHdlIHByb2Nlc3Mgc2FmZWx5IGNsb3NlIHRoZSB0ZWxlbWV0cnkgc2Vzc2lvbiBiZWZvcmUgZXhpdGluZy5cbiAgICBwcm9jZXNzLm9uKCdTSUdJTlQnLCBhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLmVuZCh7XG4gICAgICAgICAgbmFtZTogVVNFUl9JTlRFUlJVUFRFRF9DT0RFLFxuICAgICAgICAgIG1lc3NhZ2U6IEFCT1JURURfRVJST1JfTUVTU0FHRSxcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5pb0hvc3QuZGVmYXVsdHMudHJhY2UoYEVuZGluZyBUZWxlbWV0cnkgZmFpbGVkOiAke2UubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9KTtcblxuICAgIC8vIEJlZ2luIHRoZSBzZXNzaW9uIHNwYW5cbiAgICB0aGlzLnNwYW4gPSBhd2FpdCB0aGlzLmlvSG9zdC5hc0lvSGVscGVyKCkuc3BhbihDTElfUFJJVkFURV9TUEFOLkNPTU1BTkQpLmJlZ2luKHt9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhdHRhY2hSZWdpb24ocmVnaW9uOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlc3Npb25JbmZvLmlkZW50aWZpZXJzID0ge1xuICAgICAgLi4udGhpcy5zZXNzaW9uSW5mby5pZGVudGlmaWVycyxcbiAgICAgIHJlZ2lvbixcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGFjaCBhIGxhbmd1YWdlIGd1ZXNzXG4gICAqL1xuICBwdWJsaWMgYXR0YWNoTGFuZ3VhZ2UobGFuZ3VhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIC8vIERvbid0IHdhbnQgdG8gY3Jhc2ggYWNjaWRlbnRhbGx5XG4gICAgaWYgKCF0aGlzLl9zZXNzaW9uSW5mbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChsYW5ndWFnZSkge1xuICAgICAgbXV0YWJsZSh0aGlzLnNlc3Npb25JbmZvLnByb2plY3QpLmxhbmd1YWdlID0gbGFuZ3VhZ2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEF0dGFjaCBvdXIgYmVzdCBndWVzcyBhdCBydW5uaW5nIHVuZGVyIGFuIGFnZW50IG9yIG5vdFxuICAgKi9cbiAgcHVibGljIGF0dGFjaEFnZW50KGlzQWdlbnQ6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICAvLyBEb24ndCB3YW50IHRvIGNyYXNoIGFjY2lkZW50YWxseVxuICAgIGlmICghdGhpcy5fc2Vzc2lvbkluZm8pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBtdXRhYmxlKHRoaXMuc2Vzc2lvbkluZm8uZW52aXJvbm1lbnQpLmFnZW50ID0gaXNBZ2VudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2ggdGhlIENESyBsaWJyYXJ5IHZlcnNpb25cbiAgICpcbiAgICogQnkgZGVmYXVsdCB0aGUgdGVsZW1ldHJ5IHdpbGwgZ3Vlc3MgYXQgdGhlIENESyBsaWJyYXJ5IHZlcnNpb24gaWYgaXQgc29cbiAgICogaGFwcGVucyB0aGF0IHRoZSBDREsgcHJvamVjdCBpcyBhbiBOUE0gcHJvamVjdCBhbmQgdGhlIENESyBDTEkgaXMgZXhlY3V0ZWRcbiAgICogaW4gdGhlIHJvb3Qgb2YgTlBNIHByb2plY3Qgd2l0aCBgYXdzLWNkay1saWJgIGF2YWlsYWJsZSBpbiBgbm9kZV9tb2R1bGVzYC5cbiAgICogVGhpcyBtYXkgc3VjY2VlZCBvciBtYXkgZmFpbC5cbiAgICpcbiAgICogT25jZSB3ZSBoYXZlIHByb2R1Y2VkIGFuZCBsb2FkZWQgdGhlIGNsb3VkIGFzc2VtYmx5IG1vcmUgYWNjdXJhdGVcbiAgICogaW5mb3JtYXRpb24gYmVjb21lcyBhdmFpbGFibGUgdGhhdCB3ZSBjYW4gYWRkIGluLlxuICAgKi9cbiAgcHVibGljIGF0dGFjaENka0xpYlZlcnNpb24obGliVmVyc2lvbjogc3RyaW5nKSB7XG4gICAgLy8gRG9uJ3Qgd2FudCB0byBjcmFzaCBhY2NpZGVudGFsbHlcbiAgICBpZiAoIXRoaXMuX3Nlc3Npb25JbmZvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbXV0YWJsZSh0aGlzLnNlc3Npb25JbmZvLmlkZW50aWZpZXJzKS5jZGtMaWJyYXJ5VmVyc2lvbiA9IGxpYlZlcnNpb247XG4gIH1cblxuICAvKipcbiAgICogV2hlbiB0aGUgY29tbWFuZCBpcyBjb21wbGV0ZSwgc28gaXMgdGhlIENsaUlvSG9zdC4gRW5kcyB0aGUgc3BhbiBvZiB0aGUgZW50aXJlIENsaUlvSG9zdFxuICAgKiBhbmQgbm90aWZpZXMgd2l0aCBhbiBvcHRpb25hbCBlcnJvciBtZXNzYWdlIGluIHRoZSBkYXRhLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGVuZChlcnJvcj86IEVycm9yRGV0YWlscykge1xuICAgIGF3YWl0IHRoaXMuc3Bhbj8uZW5kKHsgZXJyb3IgfSk7XG4gICAgLy8gSWRlYWxseSBzcGFuLmVuZCgpIHNob3VsZCBuby1vcCBpZiBjYWxsZWQgdHdpY2UsIGJ1dCB0aGF0IGlzIG5vdCB0aGUgY2FzZSByaWdodCBub3dcbiAgICB0aGlzLnNwYW4gPSB1bmRlZmluZWQ7XG4gICAgYXdhaXQgdGhpcy5jbGllbnQuZmx1c2goKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWl0KGV2ZW50OiBUZWxlbWV0cnlFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY291bnQgKz0gMTtcblxuICAgIHJldHVybiB0aGlzLmNsaWVudC5lbWl0KHtcbiAgICAgIGV2ZW50OiB7XG4gICAgICAgIGNvbW1hbmQ6IHRoaXMuc2Vzc2lvbkluZm8uZXZlbnQuY29tbWFuZCxcbiAgICAgICAgc3RhdGU6IGdldFN0YXRlKGV2ZW50LmVycm9yKSxcbiAgICAgICAgZXZlbnRUeXBlOiBldmVudC5ldmVudFR5cGUsXG4gICAgICB9LFxuICAgICAgaWRlbnRpZmllcnM6IHtcbiAgICAgICAgLi4udGhpcy5zZXNzaW9uSW5mby5pZGVudGlmaWVycyxcbiAgICAgICAgZXZlbnRJZDogYCR7dGhpcy5zZXNzaW9uSW5mby5pZGVudGlmaWVycy5zZXNzaW9uSWR9OiR7dGhpcy5jb3VudH1gLFxuICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIH0sXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5zZXNzaW9uSW5mby5lbnZpcm9ubWVudCxcbiAgICAgIHByb2plY3Q6IHRoaXMuc2Vzc2lvbkluZm8ucHJvamVjdCxcbiAgICAgIGR1cmF0aW9uOiB7XG4gICAgICAgIHRvdGFsOiBldmVudC5kdXJhdGlvbixcbiAgICAgIH0sXG4gICAgICAuLi4oZXZlbnQuZXJyb3IgPyB7XG4gICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgbmFtZTogZXZlbnQuZXJyb3IubmFtZSxcbiAgICAgICAgfSxcbiAgICAgIH0gOiB7fSksXG4gICAgICAuLi4oZXZlbnQuY291bnRlcnMgJiYgT2JqZWN0LmtleXMoZXZlbnQuY291bnRlcnMpLmxlbmd0aCA+IDAgPyB7IGNvdW50ZXJzOiBldmVudC5jb3VudGVycyB9IDoge30pLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgc2Vzc2lvbkluZm8oKTogU2Vzc2lvblNjaGVtYSB7XG4gICAgaWYgKCF0aGlzLl9zZXNzaW9uSW5mbykge1xuICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcignU2Vzc2lvbk5vdEluaXRpYWxpemVkJywgJ1Nlc3Npb24gSW5mbyBub3QgaW5pdGlhbGl6ZWQuIENhbGwgYmVnaW4oKSBmaXJzdC4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3Nlc3Npb25JbmZvO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFN0YXRlKGVycm9yPzogRXJyb3JEZXRhaWxzKTogU3RhdGUge1xuICBpZiAoZXJyb3IpIHtcbiAgICByZXR1cm4gaXNBYm9ydGVkRXJyb3IoZXJyb3IpID8gJ0FCT1JURUQnIDogJ0ZBSUxFRCc7XG4gIH1cbiAgcmV0dXJuICdTVUNDRUVERUQnO1xufVxuXG5mdW5jdGlvbiBpc0Fib3J0ZWRFcnJvcihlcnJvcj86IEVycm9yRGV0YWlscykge1xuICBpZiAoZXJyb3I/Lm5hbWUgPT09ICdUb29sa2l0RXJyb3InICYmIGVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcyhBQk9SVEVEX0VSUk9SX01FU1NBR0UpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBtdXRhYmxlPEEgZXh0ZW5kcyBvYmplY3Q+KHg6IEEpOiB7IC1yZWFkb25seSBbayBpbiBrZXlvZiBBXTogQVtrXSB9IHtcbiAgcmV0dXJuIHg7XG59XG4iXX0=
@@ -0,0 +1,44 @@
1
+ import type { Agent } from 'https';
2
+ import type { IIoHost } from '../../io-host';
3
+ import type { TelemetrySchema } from '../schema';
4
+ import type { ITelemetrySink } from './sink-interface';
5
+ /**
6
+ * Properties for the Endpoint Telemetry Client
7
+ */
8
+ export interface EndpointTelemetrySinkProps {
9
+ /**
10
+ * The external endpoint to hit
11
+ */
12
+ readonly endpoint: string;
13
+ /**
14
+ * Where messages are going to be sent
15
+ */
16
+ readonly ioHost: IIoHost;
17
+ /**
18
+ * The agent responsible for making the network requests.
19
+ *
20
+ * Use this to set up a proxy connection.
21
+ *
22
+ * @default - Uses the shared global node agent
23
+ */
24
+ readonly agent?: Agent;
25
+ }
26
+ /**
27
+ * The telemetry client that hits an external endpoint.
28
+ */
29
+ export declare class EndpointTelemetrySink implements ITelemetrySink {
30
+ private events;
31
+ private endpoint;
32
+ private ioHelper;
33
+ private agent?;
34
+ constructor(props: EndpointTelemetrySinkProps);
35
+ /**
36
+ * Add an event to the collection.
37
+ */
38
+ emit(event: TelemetrySchema): Promise<void>;
39
+ flush(): Promise<void>;
40
+ /**
41
+ * Returns true if telemetry successfully posted, false otherwise.
42
+ */
43
+ private https;
44
+ }
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EndpointTelemetrySink = void 0;
4
+ const https_1 = require("https");
5
+ const toolkit_lib_1 = require("@aws-cdk/toolkit-lib");
6
+ const network_detector_1 = require("../../../api/network-detector");
7
+ const api_private_1 = require("../../../api-private");
8
+ const REQUEST_ATTEMPT_TIMEOUT_MS = 500;
9
+ /**
10
+ * The telemetry client that hits an external endpoint.
11
+ */
12
+ class EndpointTelemetrySink {
13
+ constructor(props) {
14
+ this.events = [];
15
+ this.endpoint = new URL(props.endpoint);
16
+ if (!this.endpoint.hostname || !this.endpoint.pathname) {
17
+ throw new toolkit_lib_1.ToolkitError('MalformedEndpoint', `Telemetry Endpoint malformed. Received hostname: ${this.endpoint.hostname}, pathname: ${this.endpoint.pathname}`);
18
+ }
19
+ this.ioHelper = api_private_1.IoHelper.fromActionAwareIoHost(props.ioHost);
20
+ this.agent = props.agent;
21
+ // Batch events every 30 seconds
22
+ setInterval(() => this.flush(), 30000).unref();
23
+ }
24
+ /**
25
+ * Add an event to the collection.
26
+ */
27
+ async emit(event) {
28
+ try {
29
+ this.events.push(event);
30
+ }
31
+ catch (e) {
32
+ // Never throw errors, just log them via ioHost
33
+ await this.ioHelper.defaults.trace(`Failed to add telemetry event: ${e.message}`);
34
+ }
35
+ }
36
+ async flush() {
37
+ try {
38
+ if (this.events.length === 0) {
39
+ return;
40
+ }
41
+ const res = await this.https(this.endpoint, { events: this.events });
42
+ // Clear the events array after successful output
43
+ if (res) {
44
+ this.events = [];
45
+ }
46
+ }
47
+ catch (e) {
48
+ // Never throw errors, just log them via ioHost
49
+ await this.ioHelper.defaults.trace(`Failed to send telemetry event: ${e.message}`);
50
+ }
51
+ }
52
+ /**
53
+ * Returns true if telemetry successfully posted, false otherwise.
54
+ */
55
+ async https(url, body) {
56
+ // Check connectivity before attempting network request
57
+ const hasConnectivity = await network_detector_1.NetworkDetector.hasConnectivity(this.agent);
58
+ if (!hasConnectivity) {
59
+ await this.ioHelper.defaults.trace('No internet connectivity detected, skipping telemetry');
60
+ return false;
61
+ }
62
+ try {
63
+ const res = await doRequest(url, body, this.agent);
64
+ // Successfully posted
65
+ if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
66
+ await this.ioHelper.defaults.trace('Telemetry Sent Successfully');
67
+ return true;
68
+ }
69
+ await this.ioHelper.defaults.trace(`Telemetry Unsuccessful: POST ${url.hostname}${url.pathname}: ${res.statusCode}:${res.statusMessage}`);
70
+ return false;
71
+ }
72
+ catch (e) {
73
+ await this.ioHelper.defaults.trace(`Telemetry Error: POST ${url.hostname}${url.pathname}: ${JSON.stringify(e)}`);
74
+ return false;
75
+ }
76
+ }
77
+ }
78
+ exports.EndpointTelemetrySink = EndpointTelemetrySink;
79
+ /**
80
+ * A Promisified version of `https.request()`
81
+ */
82
+ function doRequest(url, data, agent) {
83
+ return new Promise((ok, ko) => {
84
+ const payload = JSON.stringify(data);
85
+ const req = (0, https_1.request)({
86
+ hostname: url.hostname,
87
+ port: url.port || null,
88
+ path: url.pathname,
89
+ method: 'POST',
90
+ headers: {
91
+ 'content-type': 'application/json',
92
+ 'content-length': payload.length,
93
+ },
94
+ agent,
95
+ timeout: REQUEST_ATTEMPT_TIMEOUT_MS,
96
+ }, ok);
97
+ req.on('error', ko);
98
+ req.on('timeout', () => {
99
+ const error = new toolkit_lib_1.ToolkitError('RequestTimeout', `Timeout after ${REQUEST_ATTEMPT_TIMEOUT_MS}ms, aborting request`);
100
+ req.destroy(error);
101
+ });
102
+ req.end(payload);
103
+ });
104
+ }
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5kcG9pbnQtc2luay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImVuZHBvaW50LXNpbmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsaUNBQWdDO0FBQ2hDLHNEQUFvRDtBQUNwRCxvRUFBZ0U7QUFDaEUsc0RBQWdEO0FBS2hELE1BQU0sMEJBQTBCLEdBQUcsR0FBRyxDQUFDO0FBMEJ2Qzs7R0FFRztBQUNILE1BQWEscUJBQXFCO0lBTWhDLFlBQW1CLEtBQWlDO1FBTDVDLFdBQU0sR0FBc0IsRUFBRSxDQUFDO1FBTXJDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXhDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdkQsTUFBTSxJQUFJLDBCQUFZLENBQUMsbUJBQW1CLEVBQUUsb0RBQW9ELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxlQUFlLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNqSyxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxzQkFBUSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFFekIsZ0NBQWdDO1FBQ2hDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFzQjtRQUN0QyxJQUFJLENBQUM7WUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixDQUFDO1FB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QixRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVE7WUFDdEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSTtZQUN0QixJQUFJLEVBQUUsR0FBRyxDQUFDLFFBQVE7WUFDbEIsTUFBTSxFQUFFLE1BQU07WUFDZCxPQUFPLEVBQUU7Z0JBQ1AsY0FBYyxFQUFFLGtCQUFrQjtnQkFDbEMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLE1BQU07YUFDakM7WUFDRCxLQUFLO1lBQ0wsT0FBTyxFQUFFLDBCQUEwQjtTQUNwQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRVAsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEIsR0FBRyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksMEJBQVksQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsMEJBQTBCLHNCQUFzQixDQUFDLENBQUM7WUFDcEgsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUVILEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBJbmNvbWluZ01lc3NhZ2UgfSBmcm9tICdodHRwJztcbmltcG9ydCB0eXBlIHsgQWdlbnQgfSBmcm9tICdodHRwcyc7XG5pbXBvcnQgeyByZXF1ZXN0IH0gZnJvbSAnaHR0cHMnO1xuaW1wb3J0IHsgVG9vbGtpdEVycm9yIH0gZnJvbSAnQGF3cy1jZGsvdG9vbGtpdC1saWInO1xuaW1wb3J0IHsgTmV0d29ya0RldGVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vYXBpL25ldHdvcmstZGV0ZWN0b3InO1xuaW1wb3J0IHsgSW9IZWxwZXIgfSBmcm9tICcuLi8uLi8uLi9hcGktcHJpdmF0ZSc7XG5pbXBvcnQgdHlwZSB7IElJb0hvc3QgfSBmcm9tICcuLi8uLi9pby1ob3N0JztcbmltcG9ydCB0eXBlIHsgVGVsZW1ldHJ5U2NoZW1hIH0gZnJvbSAnLi4vc2NoZW1hJztcbmltcG9ydCB0eXBlIHsgSVRlbGVtZXRyeVNpbmsgfSBmcm9tICcuL3NpbmstaW50ZXJmYWNlJztcblxuY29uc3QgUkVRVUVTVF9BVFRFTVBUX1RJTUVPVVRfTVMgPSA1MDA7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIEVuZHBvaW50IFRlbGVtZXRyeSBDbGllbnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmRwb2ludFRlbGVtZXRyeVNpbmtQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgZXh0ZXJuYWwgZW5kcG9pbnQgdG8gaGl0XG4gICAqL1xuICByZWFkb25seSBlbmRwb2ludDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVyZSBtZXNzYWdlcyBhcmUgZ29pbmcgdG8gYmUgc2VudFxuICAgKi9cbiAgcmVhZG9ubHkgaW9Ib3N0OiBJSW9Ib3N0O1xuXG4gIC8qKlxuICAgKiBUaGUgYWdlbnQgcmVzcG9uc2libGUgZm9yIG1ha2luZyB0aGUgbmV0d29yayByZXF1ZXN0cy5cbiAgICpcbiAgICogVXNlIHRoaXMgdG8gc2V0IHVwIGEgcHJveHkgY29ubmVjdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBVc2VzIHRoZSBzaGFyZWQgZ2xvYmFsIG5vZGUgYWdlbnRcbiAgICovXG4gIHJlYWRvbmx5IGFnZW50PzogQWdlbnQ7XG59XG5cbi8qKlxuICogVGhlIHRlbGVtZXRyeSBjbGllbnQgdGhhdCBoaXRzIGFuIGV4dGVybmFsIGVuZHBvaW50LlxuICovXG5leHBvcnQgY2xhc3MgRW5kcG9pbnRUZWxlbWV0cnlTaW5rIGltcGxlbWVudHMgSVRlbGVtZXRyeVNpbmsge1xuICBwcml2YXRlIGV2ZW50czogVGVsZW1ldHJ5U2NoZW1hW10gPSBbXTtcbiAgcHJpdmF0ZSBlbmRwb2ludDogVVJMO1xuICBwcml2YXRlIGlvSGVscGVyOiBJb0hlbHBlcjtcbiAgcHJpdmF0ZSBhZ2VudD86IEFnZW50O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm9wczogRW5kcG9pbnRUZWxlbWV0cnlTaW5rUHJvcHMpIHtcbiAgICB0aGlzLmVuZHBvaW50ID0gbmV3IFVSTChwcm9wcy5lbmRwb2ludCk7XG5cbiAgICBpZiAoIXRoaXMuZW5kcG9pbnQuaG9zdG5hbWUgfHwgIXRoaXMuZW5kcG9pbnQucGF0aG5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoJ01hbGZvcm1lZEVuZHBvaW50JywgYFRlbGVtZXRyeSBFbmRwb2ludCBtYWxmb3JtZWQuIFJlY2VpdmVkIGhvc3RuYW1lOiAke3RoaXMuZW5kcG9pbnQuaG9zdG5hbWV9LCBwYXRobmFtZTogJHt0aGlzLmVuZHBvaW50LnBhdGhuYW1lfWApO1xuICAgIH1cblxuICAgIHRoaXMuaW9IZWxwZXIgPSBJb0hlbHBlci5mcm9tQWN0aW9uQXdhcmVJb0hvc3QocHJvcHMuaW9Ib3N0KTtcbiAgICB0aGlzLmFnZW50ID0gcHJvcHMuYWdlbnQ7XG5cbiAgICAvLyBCYXRjaCBldmVudHMgZXZlcnkgMzAgc2Vjb25kc1xuICAgIHNldEludGVydmFsKCgpID0+IHRoaXMuZmx1c2goKSwgMzAwMDApLnVucmVmKCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIGV2ZW50IHRvIHRoZSBjb2xsZWN0aW9uLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGVtaXQoZXZlbnQ6IFRlbGVtZXRyeVNjaGVtYSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmV2ZW50cy5wdXNoKGV2ZW50KTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIC8vIE5ldmVyIHRocm93IGVycm9ycywganVzdCBsb2cgdGhlbSB2aWEgaW9Ib3N0XG4gICAgICBhd2FpdCB0aGlzLmlvSGVscGVyLmRlZmF1bHRzLnRyYWNlKGBGYWlsZWQgdG8gYWRkIHRlbGVtZXRyeSBldmVudDogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGZsdXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5ldmVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5odHRwcyh0aGlzLmVuZHBvaW50LCB7IGV2ZW50czogdGhpcy5ldmVudHMgfSk7XG5cbiAgICAgIC8vIENsZWFyIHRoZSBldmVudHMgYXJyYXkgYWZ0ZXIgc3VjY2Vzc2Z1bCBvdXRwdXRcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgdGhpcy5ldmVudHMgPSBbXTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIC8vIE5ldmVyIHRocm93IGVycm9ycywganVzdCBsb2cgdGhlbSB2aWEgaW9Ib3N0XG4gICAgICBhd2FpdCB0aGlzLmlvSGVscGVyLmRlZmF1bHRzLnRyYWNlKGBGYWlsZWQgdG8gc2VuZCB0ZWxlbWV0cnkgZXZlbnQ6ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgdGVsZW1ldHJ5IHN1Y2Nlc3NmdWxseSBwb3N0ZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgaHR0cHMoXG4gICAgdXJsOiBVUkwsXG4gICAgYm9keTogeyBldmVudHM6IFRlbGVtZXRyeVNjaGVtYVtdIH0sXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIC8vIENoZWNrIGNvbm5lY3Rpdml0eSBiZWZvcmUgYXR0ZW1wdGluZyBuZXR3b3JrIHJlcXVlc3RcbiAgICBjb25zdCBoYXNDb25uZWN0aXZpdHkgPSBhd2FpdCBOZXR3b3JrRGV0ZWN0b3IuaGFzQ29ubmVjdGl2aXR5KHRoaXMuYWdlbnQpO1xuICAgIGlmICghaGFzQ29ubmVjdGl2aXR5KSB7XG4gICAgICBhd2FpdCB0aGlzLmlvSGVscGVyLmRlZmF1bHRzLnRyYWNlKCdObyBpbnRlcm5ldCBjb25uZWN0aXZpdHkgZGV0ZWN0ZWQsIHNraXBwaW5nIHRlbGVtZXRyeScpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBkb1JlcXVlc3QodXJsLCBib2R5LCB0aGlzLmFnZW50KTtcblxuICAgICAgLy8gU3VjY2Vzc2Z1bGx5IHBvc3RlZFxuICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlICYmIHJlcy5zdGF0dXNDb2RlID49IDIwMCAmJiByZXMuc3RhdHVzQ29kZSA8IDMwMCkge1xuICAgICAgICBhd2FpdCB0aGlzLmlvSGVscGVyLmRlZmF1bHRzLnRyYWNlKCdUZWxlbWV0cnkgU2VudCBTdWNjZXNzZnVsbHknKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIuZGVmYXVsdHMudHJhY2UoYFRlbGVtZXRyeSBVbnN1Y2Nlc3NmdWw6IFBPU1QgJHt1cmwuaG9zdG5hbWV9JHt1cmwucGF0aG5hbWV9OiAke3Jlcy5zdGF0dXNDb2RlfToke3Jlcy5zdGF0dXNNZXNzYWdlfWApO1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBhd2FpdCB0aGlzLmlvSGVscGVyLmRlZmF1bHRzLnRyYWNlKGBUZWxlbWV0cnkgRXJyb3I6IFBPU1QgJHt1cmwuaG9zdG5hbWV9JHt1cmwucGF0aG5hbWV9OiAke0pTT04uc3RyaW5naWZ5KGUpfWApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEEgUHJvbWlzaWZpZWQgdmVyc2lvbiBvZiBgaHR0cHMucmVxdWVzdCgpYFxuICovXG5mdW5jdGlvbiBkb1JlcXVlc3QoXG4gIHVybDogVVJMLFxuICBkYXRhOiB7IGV2ZW50czogVGVsZW1ldHJ5U2NoZW1hW10gfSxcbiAgYWdlbnQ/OiBBZ2VudCxcbikge1xuICByZXR1cm4gbmV3IFByb21pc2U8SW5jb21pbmdNZXNzYWdlPigob2ssIGtvKSA9PiB7XG4gICAgY29uc3QgcGF5bG9hZDogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAgY29uc3QgcmVxID0gcmVxdWVzdCh7XG4gICAgICBob3N0bmFtZTogdXJsLmhvc3RuYW1lLFxuICAgICAgcG9ydDogdXJsLnBvcnQgfHwgbnVsbCxcbiAgICAgIHBhdGg6IHVybC5wYXRobmFtZSxcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAnY29udGVudC1sZW5ndGgnOiBwYXlsb2FkLmxlbmd0aCxcbiAgICAgIH0sXG4gICAgICBhZ2VudCxcbiAgICAgIHRpbWVvdXQ6IFJFUVVFU1RfQVRURU1QVF9USU1FT1VUX01TLFxuICAgIH0sIG9rKTtcblxuICAgIHJlcS5vbignZXJyb3InLCBrbyk7XG4gICAgcmVxLm9uKCd0aW1lb3V0JywgKCkgPT4ge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgVG9vbGtpdEVycm9yKCdSZXF1ZXN0VGltZW91dCcsIGBUaW1lb3V0IGFmdGVyICR7UkVRVUVTVF9BVFRFTVBUX1RJTUVPVVRfTVN9bXMsIGFib3J0aW5nIHJlcXVlc3RgKTtcbiAgICAgIHJlcS5kZXN0cm95KGVycm9yKTtcbiAgICB9KTtcblxuICAgIHJlcS5lbmQocGF5bG9hZCk7XG4gIH0pO1xufVxuIl19
@@ -0,0 +1,32 @@
1
+ import { type IIoHost } from '@aws-cdk/toolkit-lib';
2
+ import type { TelemetrySchema } from '../schema';
3
+ import type { ITelemetrySink } from './sink-interface';
4
+ /**
5
+ * Properties for the FileTelemetryClient
6
+ */
7
+ export interface FileTelemetrySinkProps {
8
+ /**
9
+ * Where messages are going to be sent
10
+ */
11
+ readonly ioHost: IIoHost;
12
+ /**
13
+ * The local file to log telemetry data to.
14
+ */
15
+ readonly logFilePath: string;
16
+ }
17
+ /**
18
+ * A telemetry client that collects events writes them to a file
19
+ */
20
+ export declare class FileTelemetrySink implements ITelemetrySink {
21
+ private ioHelper;
22
+ private logFilePath;
23
+ /**
24
+ * Create a new FileTelemetryClient
25
+ */
26
+ constructor(props: FileTelemetrySinkProps);
27
+ /**
28
+ * Emit an event.
29
+ */
30
+ emit(event: TelemetrySchema): Promise<void>;
31
+ flush(): Promise<void>;
32
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FileTelemetrySink = void 0;
4
+ const toolkit_lib_1 = require("@aws-cdk/toolkit-lib");
5
+ const fs = require("fs-extra");
6
+ const api_private_1 = require("../../../api-private");
7
+ /**
8
+ * A telemetry client that collects events writes them to a file
9
+ */
10
+ class FileTelemetrySink {
11
+ /**
12
+ * Create a new FileTelemetryClient
13
+ */
14
+ constructor(props) {
15
+ this.ioHelper = api_private_1.IoHelper.fromActionAwareIoHost(props.ioHost);
16
+ this.logFilePath = props.logFilePath;
17
+ if (fs.existsSync(this.logFilePath)) {
18
+ throw new toolkit_lib_1.ToolkitError('TelemetryFileExists', `Telemetry file already exists at ${this.logFilePath}`);
19
+ }
20
+ // Create the file
21
+ fs.ensureFileSync(this.logFilePath);
22
+ fs.writeJsonSync(this.logFilePath, []);
23
+ }
24
+ /**
25
+ * Emit an event.
26
+ */
27
+ async emit(event) {
28
+ try {
29
+ const json = fs.readJsonSync(this.logFilePath);
30
+ json.push(event);
31
+ fs.writeJSONSync(this.logFilePath, json, { spaces: 2 });
32
+ }
33
+ catch (e) {
34
+ // Never throw errors, just log them via ioHost
35
+ await this.ioHelper.defaults.trace(`Failed to add telemetry event: ${e.message}`);
36
+ }
37
+ }
38
+ async flush() {
39
+ return;
40
+ }
41
+ }
42
+ exports.FileTelemetrySink = FileTelemetrySink;
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zaW5rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZmlsZS1zaW5rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNEQUFrRTtBQUNsRSwrQkFBK0I7QUFDL0Isc0RBQWdEO0FBbUJoRDs7R0FFRztBQUNILE1BQWEsaUJBQWlCO0lBSTVCOztPQUVHO0lBQ0gsWUFBWSxLQUE2QjtRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLHNCQUFRLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztRQUVyQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDcEMsTUFBTSxJQUFJLDBCQUFZLENBQUMscUJBQXFCLEVBQUUsb0NBQW9DLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3hHLENBQUM7UUFFRCxrQkFBa0I7UUFDbEIsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBc0I7UUFDdEMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQixFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUQsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsK0NBQStDO1lBQy9DLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNwRixDQUFDO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLE9BQU87SUFDVCxDQUFDO0NBQ0Y7QUFyQ0QsOENBcUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVG9vbGtpdEVycm9yLCB0eXBlIElJb0hvc3QgfSBmcm9tICdAYXdzLWNkay90b29sa2l0LWxpYic7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgeyBJb0hlbHBlciB9IGZyb20gJy4uLy4uLy4uL2FwaS1wcml2YXRlJztcbmltcG9ydCB0eXBlIHsgVGVsZW1ldHJ5U2NoZW1hIH0gZnJvbSAnLi4vc2NoZW1hJztcbmltcG9ydCB0eXBlIHsgSVRlbGVtZXRyeVNpbmsgfSBmcm9tICcuL3NpbmstaW50ZXJmYWNlJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciB0aGUgRmlsZVRlbGVtZXRyeUNsaWVudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVUZWxlbWV0cnlTaW5rUHJvcHMge1xuICAvKipcbiAgICogV2hlcmUgbWVzc2FnZXMgYXJlIGdvaW5nIHRvIGJlIHNlbnRcbiAgICovXG4gIHJlYWRvbmx5IGlvSG9zdDogSUlvSG9zdDtcblxuICAvKipcbiAgICogVGhlIGxvY2FsIGZpbGUgdG8gbG9nIHRlbGVtZXRyeSBkYXRhIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nRmlsZVBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHRlbGVtZXRyeSBjbGllbnQgdGhhdCBjb2xsZWN0cyBldmVudHMgd3JpdGVzIHRoZW0gdG8gYSBmaWxlXG4gKi9cbmV4cG9ydCBjbGFzcyBGaWxlVGVsZW1ldHJ5U2luayBpbXBsZW1lbnRzIElUZWxlbWV0cnlTaW5rIHtcbiAgcHJpdmF0ZSBpb0hlbHBlcjogSW9IZWxwZXI7XG4gIHByaXZhdGUgbG9nRmlsZVBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IEZpbGVUZWxlbWV0cnlDbGllbnRcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBGaWxlVGVsZW1ldHJ5U2lua1Byb3BzKSB7XG4gICAgdGhpcy5pb0hlbHBlciA9IElvSGVscGVyLmZyb21BY3Rpb25Bd2FyZUlvSG9zdChwcm9wcy5pb0hvc3QpO1xuICAgIHRoaXMubG9nRmlsZVBhdGggPSBwcm9wcy5sb2dGaWxlUGF0aDtcblxuICAgIGlmIChmcy5leGlzdHNTeW5jKHRoaXMubG9nRmlsZVBhdGgpKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdUZWxlbWV0cnlGaWxlRXhpc3RzJywgYFRlbGVtZXRyeSBmaWxlIGFscmVhZHkgZXhpc3RzIGF0ICR7dGhpcy5sb2dGaWxlUGF0aH1gKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdGhlIGZpbGVcbiAgICBmcy5lbnN1cmVGaWxlU3luYyh0aGlzLmxvZ0ZpbGVQYXRoKTtcbiAgICBmcy53cml0ZUpzb25TeW5jKHRoaXMubG9nRmlsZVBhdGgsIFtdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0IGFuIGV2ZW50LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGVtaXQoZXZlbnQ6IFRlbGVtZXRyeVNjaGVtYSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBqc29uID0gZnMucmVhZEpzb25TeW5jKHRoaXMubG9nRmlsZVBhdGgpO1xuICAgICAganNvbi5wdXNoKGV2ZW50KTtcbiAgICAgIGZzLndyaXRlSlNPTlN5bmModGhpcy5sb2dGaWxlUGF0aCwganNvbiwgeyBzcGFjZXM6IDIgfSk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAvLyBOZXZlciB0aHJvdyBlcnJvcnMsIGp1c3QgbG9nIHRoZW0gdmlhIGlvSG9zdFxuICAgICAgYXdhaXQgdGhpcy5pb0hlbHBlci5kZWZhdWx0cy50cmFjZShgRmFpbGVkIHRvIGFkZCB0ZWxlbWV0cnkgZXZlbnQ6ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBmbHVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm47XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import type { TelemetrySchema } from '../schema';
2
+ import type { ITelemetrySink } from './sink-interface';
3
+ export interface FunnelProps {
4
+ readonly sinks: ITelemetrySink[];
5
+ }
6
+ /**
7
+ * A funnel is a combination of one or more sinks.
8
+ * The sink functions are executed in parallel, and a maximum of 5
9
+ * sinks are supported per funnel.
10
+ */
11
+ export declare class Funnel {
12
+ private readonly sinks;
13
+ constructor(props: FunnelProps);
14
+ emit(event: TelemetrySchema): Promise<void>;
15
+ flush(): Promise<void>;
16
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Funnel = void 0;
4
+ const toolkit_lib_1 = require("@aws-cdk/toolkit-lib");
5
+ /**
6
+ * A funnel is a combination of one or more sinks.
7
+ * The sink functions are executed in parallel, and a maximum of 5
8
+ * sinks are supported per funnel.
9
+ */
10
+ class Funnel {
11
+ constructor(props) {
12
+ if (props.sinks.length > 5) {
13
+ throw new toolkit_lib_1.ToolkitError('MaxSinksExceeded', `Funnel class supports a maximum of 5 parallel sinks, got ${props.sinks.length} sinks.`);
14
+ }
15
+ this.sinks = props.sinks;
16
+ }
17
+ async emit(event) {
18
+ // Funnel class enforces a maximum of 5 parallel sinks
19
+ // eslint-disable-next-line @cdklabs/promiseall-no-unbounded-parallelism
20
+ await Promise.all(this.sinks.map(sink => sink.emit(event)));
21
+ }
22
+ async flush() {
23
+ // Funnel class enforces a maximum of 5 parallel sinks
24
+ // eslint-disable-next-line @cdklabs/promiseall-no-unbounded-parallelism
25
+ await Promise.all(this.sinks.map(sink => sink.flush()));
26
+ }
27
+ }
28
+ exports.Funnel = Funnel;
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVubmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZnVubmVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNEQUFvRDtBQVFwRDs7OztHQUlHO0FBQ0gsTUFBYSxNQUFNO0lBR2pCLFlBQVksS0FBa0I7UUFDNUIsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksMEJBQVksQ0FBQyxrQkFBa0IsRUFBRSw0REFBNEQsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLFNBQVMsQ0FBQyxDQUFDO1FBQ3RJLENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBc0I7UUFDdEMsc0RBQXNEO1FBQ3RELHdFQUF3RTtRQUN4RSxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQUs7UUFDaEIsc0RBQXNEO1FBQ3RELHdFQUF3RTtRQUN4RSxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7Q0FDRjtBQXRCRCx3QkFzQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUb29sa2l0RXJyb3IgfSBmcm9tICdAYXdzLWNkay90b29sa2l0LWxpYic7XG5pbXBvcnQgdHlwZSB7IFRlbGVtZXRyeVNjaGVtYSB9IGZyb20gJy4uL3NjaGVtYSc7XG5pbXBvcnQgdHlwZSB7IElUZWxlbWV0cnlTaW5rIH0gZnJvbSAnLi9zaW5rLWludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnVubmVsUHJvcHMge1xuICByZWFkb25seSBzaW5rczogSVRlbGVtZXRyeVNpbmtbXTtcbn1cblxuLyoqXG4gKiBBIGZ1bm5lbCBpcyBhIGNvbWJpbmF0aW9uIG9mIG9uZSBvciBtb3JlIHNpbmtzLlxuICogVGhlIHNpbmsgZnVuY3Rpb25zIGFyZSBleGVjdXRlZCBpbiBwYXJhbGxlbCwgYW5kIGEgbWF4aW11bSBvZiA1XG4gKiBzaW5rcyBhcmUgc3VwcG9ydGVkIHBlciBmdW5uZWwuXG4gKi9cbmV4cG9ydCBjbGFzcyBGdW5uZWwge1xuICBwcml2YXRlIHJlYWRvbmx5IHNpbmtzOiBJVGVsZW1ldHJ5U2lua1tdO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBGdW5uZWxQcm9wcykge1xuICAgIGlmIChwcm9wcy5zaW5rcy5sZW5ndGggPiA1KSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdNYXhTaW5rc0V4Y2VlZGVkJywgYEZ1bm5lbCBjbGFzcyBzdXBwb3J0cyBhIG1heGltdW0gb2YgNSBwYXJhbGxlbCBzaW5rcywgZ290ICR7cHJvcHMuc2lua3MubGVuZ3RofSBzaW5rcy5gKTtcbiAgICB9XG5cbiAgICB0aGlzLnNpbmtzID0gcHJvcHMuc2lua3M7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1pdChldmVudDogVGVsZW1ldHJ5U2NoZW1hKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gRnVubmVsIGNsYXNzIGVuZm9yY2VzIGEgbWF4aW11bSBvZiA1IHBhcmFsbGVsIHNpbmtzXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBjZGtsYWJzL3Byb21pc2VhbGwtbm8tdW5ib3VuZGVkLXBhcmFsbGVsaXNtXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5zaW5rcy5tYXAoc2luayA9PiBzaW5rLmVtaXQoZXZlbnQpKSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZmx1c2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gRnVubmVsIGNsYXNzIGVuZm9yY2VzIGEgbWF4aW11bSBvZiA1IHBhcmFsbGVsIHNpbmtzXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBjZGtsYWJzL3Byb21pc2VhbGwtbm8tdW5ib3VuZGVkLXBhcmFsbGVsaXNtXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5zaW5rcy5tYXAoc2luayA9PiBzaW5rLmZsdXNoKCkpKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,27 @@
1
+ import type { IIoHost } from '@aws-cdk/toolkit-lib';
2
+ import type { TelemetrySchema } from '../schema';
3
+ import type { ITelemetrySink } from './sink-interface';
4
+ /**
5
+ * Properties for the StdoutTelemetryClient
6
+ */
7
+ export interface IoHostTelemetrySinkProps {
8
+ /**
9
+ * Where messages are going to be sent
10
+ */
11
+ readonly ioHost: IIoHost;
12
+ }
13
+ /**
14
+ * A telemetry client that collects events and flushes them to stdout.
15
+ */
16
+ export declare class IoHostTelemetrySink implements ITelemetrySink {
17
+ private ioHelper;
18
+ /**
19
+ * Create a new StdoutTelemetryClient
20
+ */
21
+ constructor(props: IoHostTelemetrySinkProps);
22
+ /**
23
+ * Emit an event
24
+ */
25
+ emit(event: TelemetrySchema): Promise<void>;
26
+ flush(): Promise<void>;
27
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IoHostTelemetrySink = void 0;
4
+ const api_private_1 = require("../../../api-private");
5
+ /**
6
+ * A telemetry client that collects events and flushes them to stdout.
7
+ */
8
+ class IoHostTelemetrySink {
9
+ /**
10
+ * Create a new StdoutTelemetryClient
11
+ */
12
+ constructor(props) {
13
+ this.ioHelper = api_private_1.IoHelper.fromActionAwareIoHost(props.ioHost);
14
+ }
15
+ /**
16
+ * Emit an event
17
+ */
18
+ async emit(event) {
19
+ try {
20
+ // Format the events as a JSON string with pretty printing
21
+ const output = JSON.stringify(event, null, 2);
22
+ // Write to IoHost
23
+ await this.ioHelper.defaults.trace(`--- TELEMETRY EVENT ---\n${output}\n-----------------------\n`);
24
+ }
25
+ catch (e) {
26
+ // Never throw errors, just log them via ioHost
27
+ await this.ioHelper.defaults.trace(`Failed to add telemetry event: ${e.message}`);
28
+ }
29
+ }
30
+ async flush() {
31
+ return;
32
+ }
33
+ }
34
+ exports.IoHostTelemetrySink = IoHostTelemetrySink;
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW8taG9zdC1zaW5rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaW8taG9zdC1zaW5rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHNEQUFnRDtBQWNoRDs7R0FFRztBQUNILE1BQWEsbUJBQW1CO0lBRzlCOztPQUVHO0lBQ0gsWUFBWSxLQUErQjtRQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLHNCQUFRLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBc0I7UUFDdEMsSUFBSSxDQUFDO1lBQ0gsMERBQTBEO1lBQzFELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUU5QyxrQkFBa0I7WUFDbEIsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsNEJBQTRCLE1BQU0sNkJBQTZCLENBQUMsQ0FBQztRQUN0RyxDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQiwrQ0FBK0M7WUFDL0MsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQUs7UUFDaEIsT0FBTztJQUNULENBQUM7Q0FDRjtBQTdCRCxrREE2QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IElJb0hvc3QgfSBmcm9tICdAYXdzLWNkay90b29sa2l0LWxpYic7XG5pbXBvcnQgeyBJb0hlbHBlciB9IGZyb20gJy4uLy4uLy4uL2FwaS1wcml2YXRlJztcbmltcG9ydCB0eXBlIHsgVGVsZW1ldHJ5U2NoZW1hIH0gZnJvbSAnLi4vc2NoZW1hJztcbmltcG9ydCB0eXBlIHsgSVRlbGVtZXRyeVNpbmsgfSBmcm9tICcuL3NpbmstaW50ZXJmYWNlJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciB0aGUgU3Rkb3V0VGVsZW1ldHJ5Q2xpZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW9Ib3N0VGVsZW1ldHJ5U2lua1Byb3BzIHtcbiAgLyoqXG4gICAqIFdoZXJlIG1lc3NhZ2VzIGFyZSBnb2luZyB0byBiZSBzZW50XG4gICAqL1xuICByZWFkb25seSBpb0hvc3Q6IElJb0hvc3Q7XG59XG5cbi8qKlxuICogQSB0ZWxlbWV0cnkgY2xpZW50IHRoYXQgY29sbGVjdHMgZXZlbnRzIGFuZCBmbHVzaGVzIHRoZW0gdG8gc3Rkb3V0LlxuICovXG5leHBvcnQgY2xhc3MgSW9Ib3N0VGVsZW1ldHJ5U2luayBpbXBsZW1lbnRzIElUZWxlbWV0cnlTaW5rIHtcbiAgcHJpdmF0ZSBpb0hlbHBlcjogSW9IZWxwZXI7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBTdGRvdXRUZWxlbWV0cnlDbGllbnRcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBJb0hvc3RUZWxlbWV0cnlTaW5rUHJvcHMpIHtcbiAgICB0aGlzLmlvSGVscGVyID0gSW9IZWxwZXIuZnJvbUFjdGlvbkF3YXJlSW9Ib3N0KHByb3BzLmlvSG9zdCk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdCBhbiBldmVudFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGVtaXQoZXZlbnQ6IFRlbGVtZXRyeVNjaGVtYSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBGb3JtYXQgdGhlIGV2ZW50cyBhcyBhIEpTT04gc3RyaW5nIHdpdGggcHJldHR5IHByaW50aW5nXG4gICAgICBjb25zdCBvdXRwdXQgPSBKU09OLnN0cmluZ2lmeShldmVudCwgbnVsbCwgMik7XG5cbiAgICAgIC8vIFdyaXRlIHRvIElvSG9zdFxuICAgICAgYXdhaXQgdGhpcy5pb0hlbHBlci5kZWZhdWx0cy50cmFjZShgLS0tIFRFTEVNRVRSWSBFVkVOVCAtLS1cXG4ke291dHB1dH1cXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbmApO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgLy8gTmV2ZXIgdGhyb3cgZXJyb3JzLCBqdXN0IGxvZyB0aGVtIHZpYSBpb0hvc3RcbiAgICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIuZGVmYXVsdHMudHJhY2UoYEZhaWxlZCB0byBhZGQgdGVsZW1ldHJ5IGV2ZW50OiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZmx1c2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuO1xuICB9XG59XG4iXX0=