@datadog/datadog-ci 2.40.1 → 2.40.2

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 (269) hide show
  1. package/dist/__tests__/cli.test.d.ts +1 -0
  2. package/dist/__tests__/cli.test.js +41 -0
  3. package/dist/__tests__/cli.test.js.map +1 -0
  4. package/dist/commands/cloud-run/__tests__/fixtures.d.ts +2 -0
  5. package/dist/commands/cloud-run/__tests__/fixtures.js +12 -0
  6. package/dist/commands/cloud-run/__tests__/fixtures.js.map +1 -0
  7. package/dist/commands/cloud-run/__tests__/flare.test.d.ts +1 -0
  8. package/dist/commands/cloud-run/__tests__/flare.test.js +557 -0
  9. package/dist/commands/cloud-run/__tests__/flare.test.js.map +1 -0
  10. package/dist/commands/deployment/__tests__/mark.test.d.ts +1 -0
  11. package/dist/commands/deployment/__tests__/mark.test.js +47 -0
  12. package/dist/commands/deployment/__tests__/mark.test.js.map +1 -0
  13. package/dist/commands/dora/__tests__/deployment.test.d.ts +1 -0
  14. package/dist/commands/dora/__tests__/deployment.test.js +201 -0
  15. package/dist/commands/dora/__tests__/deployment.test.js.map +1 -0
  16. package/dist/commands/dsyms/__tests__/upload.test.d.ts +1 -0
  17. package/dist/commands/dsyms/__tests__/upload.test.js +346 -0
  18. package/dist/commands/dsyms/__tests__/upload.test.js.map +1 -0
  19. package/dist/commands/dsyms/__tests__/utils.test.d.ts +1 -0
  20. package/dist/commands/dsyms/__tests__/utils.test.js +100 -0
  21. package/dist/commands/dsyms/__tests__/utils.test.js.map +1 -0
  22. package/dist/commands/dsyms/upload.js +3 -3
  23. package/dist/commands/dsyms/upload.js.map +1 -1
  24. package/dist/commands/dsyms/utils.js +4 -2
  25. package/dist/commands/dsyms/utils.js.map +1 -1
  26. package/dist/commands/elf-symbols/__tests__/elf.test.d.ts +1 -0
  27. package/dist/commands/elf-symbols/__tests__/elf.test.js +813 -0
  28. package/dist/commands/elf-symbols/__tests__/elf.test.js.map +1 -0
  29. package/dist/commands/elf-symbols/__tests__/upload.test.d.ts +1 -0
  30. package/dist/commands/elf-symbols/__tests__/upload.test.js +249 -0
  31. package/dist/commands/elf-symbols/__tests__/upload.test.js.map +1 -0
  32. package/dist/commands/elf-symbols/upload.js +2 -3
  33. package/dist/commands/elf-symbols/upload.js.map +1 -1
  34. package/dist/commands/flutter-symbols/__tests__/upload.test.d.ts +1 -0
  35. package/dist/commands/flutter-symbols/__tests__/upload.test.js +617 -0
  36. package/dist/commands/flutter-symbols/__tests__/upload.test.js.map +1 -0
  37. package/dist/commands/flutter-symbols/upload.js +2 -2
  38. package/dist/commands/flutter-symbols/upload.js.map +1 -1
  39. package/dist/commands/gate/__tests__/evaluate.test.d.ts +1 -0
  40. package/dist/commands/gate/__tests__/evaluate.test.js +398 -0
  41. package/dist/commands/gate/__tests__/evaluate.test.js.map +1 -0
  42. package/dist/commands/gate/__tests__/scope.test.d.ts +1 -0
  43. package/dist/commands/gate/__tests__/scope.test.js +29 -0
  44. package/dist/commands/gate/__tests__/scope.test.js.map +1 -0
  45. package/dist/commands/git-metadata/__tests__/git.test.d.ts +1 -0
  46. package/dist/commands/git-metadata/__tests__/git.test.js +132 -0
  47. package/dist/commands/git-metadata/__tests__/git.test.js.map +1 -0
  48. package/dist/commands/git-metadata/__tests__/gitdb.test.d.ts +1 -0
  49. package/dist/commands/git-metadata/__tests__/gitdb.test.js +1386 -0
  50. package/dist/commands/git-metadata/__tests__/gitdb.test.js.map +1 -0
  51. package/dist/commands/git-metadata/__tests__/library.test.d.ts +1 -0
  52. package/dist/commands/git-metadata/__tests__/library.test.js +118 -0
  53. package/dist/commands/git-metadata/__tests__/library.test.js.map +1 -0
  54. package/dist/commands/git-metadata/__tests__/upload.test.d.ts +1 -0
  55. package/dist/commands/git-metadata/__tests__/upload.test.js +52 -0
  56. package/dist/commands/git-metadata/__tests__/upload.test.js.map +1 -0
  57. package/dist/commands/junit/__tests__/id.test.d.ts +1 -0
  58. package/dist/commands/junit/__tests__/id.test.js +24 -0
  59. package/dist/commands/junit/__tests__/id.test.js.map +1 -0
  60. package/dist/commands/junit/__tests__/upload.test.d.ts +1 -0
  61. package/dist/commands/junit/__tests__/upload.test.js +495 -0
  62. package/dist/commands/junit/__tests__/upload.test.js.map +1 -0
  63. package/dist/commands/junit/upload.js +5 -3
  64. package/dist/commands/junit/upload.js.map +1 -1
  65. package/dist/commands/lambda/__tests__/fixtures.d.ts +51 -0
  66. package/dist/commands/lambda/__tests__/fixtures.js +146 -0
  67. package/dist/commands/lambda/__tests__/fixtures.js.map +1 -0
  68. package/dist/commands/lambda/__tests__/flare.test.d.ts +1 -0
  69. package/dist/commands/lambda/__tests__/flare.test.js +730 -0
  70. package/dist/commands/lambda/__tests__/flare.test.js.map +1 -0
  71. package/dist/commands/lambda/__tests__/functions/commons.test.d.ts +1 -0
  72. package/dist/commands/lambda/__tests__/functions/commons.test.js +791 -0
  73. package/dist/commands/lambda/__tests__/functions/commons.test.js.map +1 -0
  74. package/dist/commands/lambda/__tests__/functions/instrument.part1.test.d.ts +1 -0
  75. package/dist/commands/lambda/__tests__/functions/instrument.part1.test.js +386 -0
  76. package/dist/commands/lambda/__tests__/functions/instrument.part1.test.js.map +1 -0
  77. package/dist/commands/lambda/__tests__/functions/instrument.part2.test.d.ts +1 -0
  78. package/dist/commands/lambda/__tests__/functions/instrument.part2.test.js +721 -0
  79. package/dist/commands/lambda/__tests__/functions/instrument.part2.test.js.map +1 -0
  80. package/dist/commands/lambda/__tests__/functions/uninstrument.test.d.ts +1 -0
  81. package/dist/commands/lambda/__tests__/functions/uninstrument.test.js +513 -0
  82. package/dist/commands/lambda/__tests__/functions/uninstrument.test.js.map +1 -0
  83. package/dist/commands/lambda/__tests__/functions/versionChecker.test.d.ts +1 -0
  84. package/dist/commands/lambda/__tests__/functions/versionChecker.test.js +33 -0
  85. package/dist/commands/lambda/__tests__/functions/versionChecker.test.js.map +1 -0
  86. package/dist/commands/lambda/__tests__/instrument.test.d.ts +1 -0
  87. package/dist/commands/lambda/__tests__/instrument.test.js +1511 -0
  88. package/dist/commands/lambda/__tests__/instrument.test.js.map +1 -0
  89. package/dist/commands/lambda/__tests__/loggroup.test.d.ts +1 -0
  90. package/dist/commands/lambda/__tests__/loggroup.test.js +340 -0
  91. package/dist/commands/lambda/__tests__/loggroup.test.js.map +1 -0
  92. package/dist/commands/lambda/__tests__/prompt.test.d.ts +1 -0
  93. package/dist/commands/lambda/__tests__/prompt.test.js +206 -0
  94. package/dist/commands/lambda/__tests__/prompt.test.js.map +1 -0
  95. package/dist/commands/lambda/__tests__/tags.test.d.ts +1 -0
  96. package/dist/commands/lambda/__tests__/tags.test.js +305 -0
  97. package/dist/commands/lambda/__tests__/tags.test.js.map +1 -0
  98. package/dist/commands/lambda/__tests__/uninstrument.test.d.ts +1 -0
  99. package/dist/commands/lambda/__tests__/uninstrument.test.js +722 -0
  100. package/dist/commands/lambda/__tests__/uninstrument.test.js.map +1 -0
  101. package/dist/commands/measure/__tests__/measure.test.d.ts +1 -0
  102. package/dist/commands/measure/__tests__/measure.test.js +110 -0
  103. package/dist/commands/measure/__tests__/measure.test.js.map +1 -0
  104. package/dist/commands/react-native/__tests__/codepush.test.d.ts +1 -0
  105. package/dist/commands/react-native/__tests__/codepush.test.js +161 -0
  106. package/dist/commands/react-native/__tests__/codepush.test.js.map +1 -0
  107. package/dist/commands/react-native/__tests__/interfaces.test.d.ts +1 -0
  108. package/dist/commands/react-native/__tests__/interfaces.test.js +33 -0
  109. package/dist/commands/react-native/__tests__/interfaces.test.js.map +1 -0
  110. package/dist/commands/react-native/__tests__/upload.test.d.ts +1 -0
  111. package/dist/commands/react-native/__tests__/upload.test.js +238 -0
  112. package/dist/commands/react-native/__tests__/upload.test.js.map +1 -0
  113. package/dist/commands/react-native/__tests__/utils.test.d.ts +1 -0
  114. package/dist/commands/react-native/__tests__/utils.test.js +27 -0
  115. package/dist/commands/react-native/__tests__/utils.test.js.map +1 -0
  116. package/dist/commands/react-native/__tests__/xcode.test.d.ts +1 -0
  117. package/dist/commands/react-native/__tests__/xcode.test.js +465 -0
  118. package/dist/commands/react-native/__tests__/xcode.test.js.map +1 -0
  119. package/dist/commands/sarif/__tests__/upload.test.d.ts +1 -0
  120. package/dist/commands/sarif/__tests__/upload.test.js +228 -0
  121. package/dist/commands/sarif/__tests__/upload.test.js.map +1 -0
  122. package/dist/commands/sarif/upload.js +2 -2
  123. package/dist/commands/sarif/upload.js.map +1 -1
  124. package/dist/commands/sbom/__tests__/payload.test.d.ts +1 -0
  125. package/dist/commands/sbom/__tests__/payload.test.js +262 -0
  126. package/dist/commands/sbom/__tests__/payload.test.js.map +1 -0
  127. package/dist/commands/sbom/__tests__/validation.test.d.ts +1 -0
  128. package/dist/commands/sbom/__tests__/validation.test.js +41 -0
  129. package/dist/commands/sbom/__tests__/validation.test.js.map +1 -0
  130. package/dist/commands/sourcemaps/__tests__/upload.test.d.ts +1 -0
  131. package/dist/commands/sourcemaps/__tests__/upload.test.js +270 -0
  132. package/dist/commands/sourcemaps/__tests__/upload.test.js.map +1 -0
  133. package/dist/commands/sourcemaps/__tests__/utils.test.d.ts +1 -0
  134. package/dist/commands/sourcemaps/__tests__/utils.test.js +31 -0
  135. package/dist/commands/sourcemaps/__tests__/utils.test.js.map +1 -0
  136. package/dist/commands/sourcemaps/upload.js +2 -2
  137. package/dist/commands/sourcemaps/upload.js.map +1 -1
  138. package/dist/commands/stepfunctions/__tests__/awsCommands.test.d.ts +1 -0
  139. package/dist/commands/stepfunctions/__tests__/awsCommands.test.js +192 -0
  140. package/dist/commands/stepfunctions/__tests__/awsCommands.test.js.map +1 -0
  141. package/dist/commands/stepfunctions/__tests__/fixtures/aws-resources.d.ts +6 -0
  142. package/dist/commands/stepfunctions/__tests__/fixtures/aws-resources.js +45 -0
  143. package/dist/commands/stepfunctions/__tests__/fixtures/aws-resources.js.map +1 -0
  144. package/dist/commands/stepfunctions/__tests__/fixtures/cli.d.ts +5 -0
  145. package/dist/commands/stepfunctions/__tests__/fixtures/cli.js +19 -0
  146. package/dist/commands/stepfunctions/__tests__/fixtures/cli.js.map +1 -0
  147. package/dist/commands/stepfunctions/__tests__/helpers.test.d.ts +1 -0
  148. package/dist/commands/stepfunctions/__tests__/helpers.test.js +205 -0
  149. package/dist/commands/stepfunctions/__tests__/helpers.test.js.map +1 -0
  150. package/dist/commands/stepfunctions/__tests__/instrument.test.d.ts +1 -0
  151. package/dist/commands/stepfunctions/__tests__/instrument.test.js +431 -0
  152. package/dist/commands/stepfunctions/__tests__/instrument.test.js.map +1 -0
  153. package/dist/commands/stepfunctions/__tests__/uninstrument.test.d.ts +1 -0
  154. package/dist/commands/stepfunctions/__tests__/uninstrument.test.js +166 -0
  155. package/dist/commands/stepfunctions/__tests__/uninstrument.test.js.map +1 -0
  156. package/dist/commands/synthetics/__tests__/api.test.d.ts +1 -0
  157. package/dist/commands/synthetics/__tests__/api.test.js +422 -0
  158. package/dist/commands/synthetics/__tests__/api.test.js.map +1 -0
  159. package/dist/commands/synthetics/__tests__/cli.test.d.ts +1 -0
  160. package/dist/commands/synthetics/__tests__/cli.test.js +1325 -0
  161. package/dist/commands/synthetics/__tests__/cli.test.js.map +1 -0
  162. package/dist/commands/synthetics/__tests__/fixtures.d.ts +149 -0
  163. package/dist/commands/synthetics/__tests__/fixtures.js +507 -0
  164. package/dist/commands/synthetics/__tests__/fixtures.js.map +1 -0
  165. package/dist/commands/synthetics/__tests__/mobile.test.d.ts +1 -0
  166. package/dist/commands/synthetics/__tests__/mobile.test.js +376 -0
  167. package/dist/commands/synthetics/__tests__/mobile.test.js.map +1 -0
  168. package/dist/commands/synthetics/__tests__/reporters/default.test.d.ts +1 -0
  169. package/dist/commands/synthetics/__tests__/reporters/default.test.js +354 -0
  170. package/dist/commands/synthetics/__tests__/reporters/default.test.js.map +1 -0
  171. package/dist/commands/synthetics/__tests__/reporters/junit.test.d.ts +1 -0
  172. package/dist/commands/synthetics/__tests__/reporters/junit.test.js +353 -0
  173. package/dist/commands/synthetics/__tests__/reporters/junit.test.js.map +1 -0
  174. package/dist/commands/synthetics/__tests__/reporters/mobile/app-upload.test.d.ts +1 -0
  175. package/dist/commands/synthetics/__tests__/reporters/mobile/app-upload.test.js +232 -0
  176. package/dist/commands/synthetics/__tests__/reporters/mobile/app-upload.test.js.map +1 -0
  177. package/dist/commands/synthetics/__tests__/run-tests-lib.test.d.ts +1 -0
  178. package/dist/commands/synthetics/__tests__/run-tests-lib.test.js +735 -0
  179. package/dist/commands/synthetics/__tests__/run-tests-lib.test.js.map +1 -0
  180. package/dist/commands/synthetics/__tests__/test.test.d.ts +1 -0
  181. package/dist/commands/synthetics/__tests__/test.test.js +33 -0
  182. package/dist/commands/synthetics/__tests__/test.test.js.map +1 -0
  183. package/dist/commands/synthetics/__tests__/tunnel/crypto.test.d.ts +1 -0
  184. package/dist/commands/synthetics/__tests__/tunnel/crypto.test.js +21 -0
  185. package/dist/commands/synthetics/__tests__/tunnel/crypto.test.js.map +1 -0
  186. package/dist/commands/synthetics/__tests__/tunnel/tunnel.test.d.ts +1 -0
  187. package/dist/commands/synthetics/__tests__/tunnel/tunnel.test.js +80 -0
  188. package/dist/commands/synthetics/__tests__/tunnel/tunnel.test.js.map +1 -0
  189. package/dist/commands/synthetics/__tests__/tunnel/websocket.test.d.ts +1 -0
  190. package/dist/commands/synthetics/__tests__/tunnel/websocket.test.js +109 -0
  191. package/dist/commands/synthetics/__tests__/tunnel/websocket.test.js.map +1 -0
  192. package/dist/commands/synthetics/__tests__/utils/internal.test.d.ts +1 -0
  193. package/dist/commands/synthetics/__tests__/utils/internal.test.js +186 -0
  194. package/dist/commands/synthetics/__tests__/utils/internal.test.js.map +1 -0
  195. package/dist/commands/synthetics/__tests__/utils/public.test.d.ts +1 -0
  196. package/dist/commands/synthetics/__tests__/utils/public.test.js +1526 -0
  197. package/dist/commands/synthetics/__tests__/utils/public.test.js.map +1 -0
  198. package/dist/commands/synthetics/api.d.ts +1 -1
  199. package/dist/commands/synthetics/api.js +10 -5
  200. package/dist/commands/synthetics/api.js.map +1 -1
  201. package/dist/commands/synthetics/run-tests-command.d.ts +1 -0
  202. package/dist/commands/synthetics/run-tests-command.js +3 -2
  203. package/dist/commands/synthetics/run-tests-command.js.map +1 -1
  204. package/dist/commands/synthetics/run-tests-lib.js +0 -4
  205. package/dist/commands/synthetics/run-tests-lib.js.map +1 -1
  206. package/dist/commands/synthetics/test.js +9 -1
  207. package/dist/commands/synthetics/test.js.map +1 -1
  208. package/dist/commands/synthetics/utils/public.js +3 -3
  209. package/dist/commands/synthetics/utils/public.js.map +1 -1
  210. package/dist/commands/tag/__tests__/tag.test.d.ts +1 -0
  211. package/dist/commands/tag/__tests__/tag.test.js +75 -0
  212. package/dist/commands/tag/__tests__/tag.test.js.map +1 -0
  213. package/dist/commands/trace/__tests__/trace.test.d.ts +1 -0
  214. package/dist/commands/trace/__tests__/trace.test.js +145 -0
  215. package/dist/commands/trace/__tests__/trace.test.js.map +1 -0
  216. package/dist/commands/unity-symbols/__tests__/upload.test.d.ts +1 -0
  217. package/dist/commands/unity-symbols/__tests__/upload.test.js +369 -0
  218. package/dist/commands/unity-symbols/__tests__/upload.test.js.map +1 -0
  219. package/dist/commands/unity-symbols/upload.js +2 -2
  220. package/dist/commands/unity-symbols/upload.js.map +1 -1
  221. package/dist/helpers/__tests__/app.test.d.ts +1 -0
  222. package/dist/helpers/__tests__/app.test.js +31 -0
  223. package/dist/helpers/__tests__/app.test.js.map +1 -0
  224. package/dist/helpers/__tests__/ci.test.d.ts +1 -0
  225. package/dist/helpers/__tests__/ci.test.js +252 -0
  226. package/dist/helpers/__tests__/ci.test.js.map +1 -0
  227. package/dist/helpers/__tests__/fixtures.d.ts +33 -0
  228. package/dist/helpers/__tests__/fixtures.js +71 -0
  229. package/dist/helpers/__tests__/fixtures.js.map +1 -0
  230. package/dist/helpers/__tests__/flare.test.d.ts +1 -0
  231. package/dist/helpers/__tests__/flare.test.js +226 -0
  232. package/dist/helpers/__tests__/flare.test.js.map +1 -0
  233. package/dist/helpers/__tests__/fs.test.d.ts +1 -0
  234. package/dist/helpers/__tests__/fs.test.js +189 -0
  235. package/dist/helpers/__tests__/fs.test.js.map +1 -0
  236. package/dist/helpers/__tests__/plist.test.d.ts +1 -0
  237. package/dist/helpers/__tests__/plist.test.js +43 -0
  238. package/dist/helpers/__tests__/plist.test.js.map +1 -0
  239. package/dist/helpers/__tests__/prompt.test.d.ts +1 -0
  240. package/dist/helpers/__tests__/prompt.test.js +71 -0
  241. package/dist/helpers/__tests__/prompt.test.js.map +1 -0
  242. package/dist/helpers/__tests__/retry.test.d.ts +1 -0
  243. package/dist/helpers/__tests__/retry.test.js +99 -0
  244. package/dist/helpers/__tests__/retry.test.js.map +1 -0
  245. package/dist/helpers/__tests__/tags.test.d.ts +1 -0
  246. package/dist/helpers/__tests__/tags.test.js +71 -0
  247. package/dist/helpers/__tests__/tags.test.js.map +1 -0
  248. package/dist/helpers/__tests__/upload.test.d.ts +1 -0
  249. package/dist/helpers/__tests__/upload.test.js +231 -0
  250. package/dist/helpers/__tests__/upload.test.js.map +1 -0
  251. package/dist/helpers/__tests__/user-provided-git.test.d.ts +1 -0
  252. package/dist/helpers/__tests__/user-provided-git.test.js +119 -0
  253. package/dist/helpers/__tests__/user-provided-git.test.js.map +1 -0
  254. package/dist/helpers/__tests__/utils.test.d.ts +1 -0
  255. package/dist/helpers/__tests__/utils.test.js +429 -0
  256. package/dist/helpers/__tests__/utils.test.js.map +1 -0
  257. package/dist/helpers/__tests__/validation.test.d.ts +1 -0
  258. package/dist/helpers/__tests__/validation.test.js +25 -0
  259. package/dist/helpers/__tests__/validation.test.js.map +1 -0
  260. package/dist/helpers/git/__tests__/format-git-sourcemaps-data.test.d.ts +1 -0
  261. package/dist/helpers/git/__tests__/format-git-sourcemaps-data.test.js +103 -0
  262. package/dist/helpers/git/__tests__/format-git-sourcemaps-data.test.js.map +1 -0
  263. package/dist/helpers/git/__tests__/format-git-span-data.test.d.ts +1 -0
  264. package/dist/helpers/git/__tests__/format-git-span-data.test.js +121 -0
  265. package/dist/helpers/git/__tests__/format-git-span-data.test.js.map +1 -0
  266. package/dist/helpers/git/__tests__/get-git-data.test.d.ts +1 -0
  267. package/dist/helpers/git/__tests__/get-git-data.test.js +72 -0
  268. package/dist/helpers/git/__tests__/get-git-data.test.js.map +1 -0
  269. package/package.json +4 -6
@@ -0,0 +1,791 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ jest.mock('fs');
36
+ jest.mock('@aws-sdk/credential-providers');
37
+ jest.mock('../../renderers/instrument-uninstrument-renderer');
38
+ const fs = __importStar(require("fs"));
39
+ const client_cloudwatch_logs_1 = require("@aws-sdk/client-cloudwatch-logs");
40
+ const client_lambda_1 = require("@aws-sdk/client-lambda");
41
+ const credential_providers_1 = require("@aws-sdk/credential-providers");
42
+ const aws_sdk_client_mock_1 = require("aws-sdk-client-mock");
43
+ require("aws-sdk-client-mock-jest");
44
+ const constants_1 = require("../../../../constants");
45
+ const fixtures_1 = require("../../../../helpers/__tests__/fixtures");
46
+ const constants_2 = require("../../constants");
47
+ const commons_1 = require("../../functions/commons");
48
+ const instrument_1 = require("../../instrument");
49
+ const fixtures_2 = require("../fixtures");
50
+ describe('commons', () => {
51
+ const cloudWatchLogsClientMock = (0, aws_sdk_client_mock_1.mockClient)(client_cloudwatch_logs_1.CloudWatchLogsClient);
52
+ const lambdaClientMock = (0, aws_sdk_client_mock_1.mockClient)(client_lambda_1.LambdaClient);
53
+ beforeEach(() => {
54
+ cloudWatchLogsClientMock.reset();
55
+ lambdaClientMock.reset();
56
+ (0, fixtures_2.mockLambdaClientCommands)(lambdaClientMock);
57
+ });
58
+ describe('addLayerArn', () => {
59
+ test('adds layers and removes previous versions', () => {
60
+ const runtime = 'python3.9';
61
+ const config = {
62
+ Runtime: runtime,
63
+ };
64
+ let layerARNs = [
65
+ 'arn:aws:lambda:sa-east-1:464622532012:layer:Datadog-Python39:48',
66
+ 'arn:aws:lambda:sa-east-1:464622532012:layer:Datadog-Extension:10',
67
+ ];
68
+ const region = 'sa-east-1';
69
+ const lambdaLibraryLayerName = constants_2.LAYER_LOOKUP[runtime];
70
+ const fullLambdaLibraryLayerArn = (0, commons_1.getLayerArn)(config, config.Runtime, region) + ':49';
71
+ const fullExtensionLayerArn = (0, commons_1.getLayerArn)(config, constants_2.EXTENSION_LAYER_KEY, region) + ':11';
72
+ layerARNs = (0, commons_1.addLayerArn)(fullLambdaLibraryLayerArn, lambdaLibraryLayerName, layerARNs);
73
+ layerARNs = (0, commons_1.addLayerArn)(fullExtensionLayerArn, constants_2.DD_LAMBDA_EXTENSION_LAYER_NAME, layerARNs);
74
+ expect(layerARNs).toEqual([
75
+ 'arn:aws:lambda:sa-east-1:464622532012:layer:Datadog-Python39:49',
76
+ 'arn:aws:lambda:sa-east-1:464622532012:layer:Datadog-Extension:11',
77
+ ]);
78
+ });
79
+ test('swaps layers if architecture is arm64', () => {
80
+ const runtime = client_lambda_1.Runtime.python39;
81
+ const config = {
82
+ Architectures: [client_lambda_1.Architecture.arm64],
83
+ Runtime: runtime,
84
+ };
85
+ let layerARNs = [
86
+ 'arn:aws:lambda:sa-east-1:464622532012:layer:Datadog-Python39:49',
87
+ 'arn:aws:lambda:sa-east-1:464622532012:layer:Datadog-Extension:11',
88
+ ];
89
+ const region = 'sa-east-1';
90
+ const lambdaLibraryLayerName = constants_2.LAYER_LOOKUP[runtime];
91
+ const fullLambdaLibraryLayerArn = (0, commons_1.getLayerArn)(config, config.Runtime, region) + ':49';
92
+ const fullExtensionLayerArn = (0, commons_1.getLayerArn)(config, constants_2.EXTENSION_LAYER_KEY, region) + ':11';
93
+ layerARNs = (0, commons_1.addLayerArn)(fullLambdaLibraryLayerArn, lambdaLibraryLayerName, layerARNs);
94
+ layerARNs = (0, commons_1.addLayerArn)(fullExtensionLayerArn, constants_2.DD_LAMBDA_EXTENSION_LAYER_NAME, layerARNs);
95
+ expect(layerARNs).toEqual([
96
+ 'arn:aws:lambda:sa-east-1:464622532012:layer:Datadog-Python39-ARM:49',
97
+ 'arn:aws:lambda:sa-east-1:464622532012:layer:Datadog-Extension-ARM:11',
98
+ ]);
99
+ });
100
+ });
101
+ describe('coerceBoolean', () => {
102
+ test('return fallback when none of the values provided can be parsed to boolean', () => {
103
+ expect((0, commons_1.coerceBoolean)(true, 'NotBoolean', 123, [], {})).toBe(true);
104
+ expect((0, commons_1.coerceBoolean)(false, 'NotBooleanEither', 456, ['An array'], { booleanInObject: true })).toBe(false);
105
+ });
106
+ test('return the first boolean when one of the values provided can be parsed to boolean', () => {
107
+ expect((0, commons_1.coerceBoolean)(true, 'false', 'true')).toBe(false);
108
+ expect((0, commons_1.coerceBoolean)(false, 'true', 'False')).toBe(true);
109
+ });
110
+ test('return the first boolean when one of the values provided is boolean', () => {
111
+ expect((0, commons_1.coerceBoolean)(true, false, 'truE', true)).toBe(false);
112
+ expect((0, commons_1.coerceBoolean)(false, true, 'False', false)).toBe(true);
113
+ });
114
+ });
115
+ describe('collectFunctionsByRegion', () => {
116
+ test('groups functions with region read from arn', () => {
117
+ process.env = {};
118
+ const command = (0, fixtures_1.createCommand)(instrument_1.InstrumentCommand);
119
+ const region = 'us-east-1';
120
+ command['functions'] = [
121
+ 'arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world',
122
+ 'arn:aws:lambda:us-east-1:123456789012:function:another',
123
+ 'arn:aws:lambda:us-east-2:123456789012:function:third-func',
124
+ ];
125
+ expect((0, commons_1.collectFunctionsByRegion)(command['functions'], region)).toEqual({
126
+ 'us-east-1': [
127
+ 'arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world',
128
+ 'arn:aws:lambda:us-east-1:123456789012:function:another',
129
+ ],
130
+ 'us-east-2': ['arn:aws:lambda:us-east-2:123456789012:function:third-func'],
131
+ });
132
+ });
133
+ test('groups functions in the config object', () => {
134
+ process.env = {};
135
+ const command = (0, fixtures_1.createCommand)(instrument_1.InstrumentCommand);
136
+ const region = 'us-east-1';
137
+ command['config']['functions'] = [
138
+ 'arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world',
139
+ 'arn:aws:lambda:us-east-1:123456789012:function:another',
140
+ 'arn:aws:lambda:us-east-2:123456789012:function:third-func',
141
+ ];
142
+ expect((0, commons_1.collectFunctionsByRegion)(command['config']['functions'], region)).toEqual({
143
+ 'us-east-1': [
144
+ 'arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world',
145
+ 'arn:aws:lambda:us-east-1:123456789012:function:another',
146
+ ],
147
+ 'us-east-2': ['arn:aws:lambda:us-east-2:123456789012:function:third-func'],
148
+ });
149
+ });
150
+ test('uses default region for functions not in arn format', () => {
151
+ process.env = {};
152
+ const command = (0, fixtures_1.createCommand)(instrument_1.InstrumentCommand);
153
+ command['functions'] = [
154
+ 'arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world',
155
+ 'arn:aws:lambda:*:123456789012:function:func-with-wildcard',
156
+ 'func-without-region',
157
+ 'arn:aws:lambda:us-east-2:123456789012:function:third-func',
158
+ ];
159
+ command['region'] = 'ap-south-1';
160
+ expect((0, commons_1.collectFunctionsByRegion)(command['functions'], command['region'])).toEqual({
161
+ 'ap-south-1': ['arn:aws:lambda:*:123456789012:function:func-with-wildcard', 'func-without-region'],
162
+ 'us-east-1': ['arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world'],
163
+ 'us-east-2': ['arn:aws:lambda:us-east-2:123456789012:function:third-func'],
164
+ });
165
+ });
166
+ test('fails to collect when there are regionless functions and no default region is set', () => {
167
+ process.env = {};
168
+ const command = (0, fixtures_1.createCommand)(instrument_1.InstrumentCommand);
169
+ command['functions'] = [
170
+ 'arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world',
171
+ 'arn:aws:lambda:*:123456789012:function:func-with-wildcard',
172
+ 'func-without-region',
173
+ 'arn:aws:lambda:us-east-2:123456789012:function:third-func',
174
+ ];
175
+ command['region'] = undefined;
176
+ command['config']['region'] = undefined;
177
+ let functionsGroup;
178
+ try {
179
+ functionsGroup = (0, commons_1.collectFunctionsByRegion)(command['functions'], command['region']);
180
+ }
181
+ catch (err) {
182
+ // Do nothing
183
+ }
184
+ expect(functionsGroup).toBeUndefined();
185
+ });
186
+ });
187
+ describe('findLatestLayerVersion', () => {
188
+ beforeEach(() => {
189
+ lambdaClientMock.reset();
190
+ (0, fixtures_2.mockLambdaClientCommands)(lambdaClientMock);
191
+ });
192
+ test('finds latests version for Python39', () => __awaiter(void 0, void 0, void 0, function* () {
193
+ const layer = `arn:aws:lambda:sa-east-1:${constants_2.DEFAULT_LAYER_AWS_ACCOUNT}:layer:Datadog-Python39`;
194
+ (0, fixtures_2.mockLambdaLayers)(lambdaClientMock, {
195
+ [`${layer}:1`]: {
196
+ LayerName: layer,
197
+ VersionNumber: 1,
198
+ },
199
+ [`${layer}:2`]: {
200
+ LayerName: layer,
201
+ VersionNumber: 2,
202
+ },
203
+ [`${layer}:10`]: {
204
+ LayerName: layer,
205
+ VersionNumber: 10,
206
+ },
207
+ [`${layer}:20`]: {
208
+ LayerName: layer,
209
+ VersionNumber: 20,
210
+ },
211
+ [`${layer}:30`]: {
212
+ LayerName: layer,
213
+ VersionNumber: 30,
214
+ },
215
+ [`${layer}:31`]: {
216
+ LayerName: layer,
217
+ VersionNumber: 31,
218
+ },
219
+ [`${layer}:32`]: {
220
+ LayerName: layer,
221
+ VersionNumber: 32,
222
+ },
223
+ });
224
+ const runtime = 'python3.9';
225
+ const region = 'sa-east-1';
226
+ const expectedLatestVersion = 32;
227
+ const latestVersionFound = yield (0, commons_1.findLatestLayerVersion)(runtime, region);
228
+ expect(latestVersionFound).toBe(expectedLatestVersion);
229
+ }));
230
+ test('finds latests version for Node20', () => __awaiter(void 0, void 0, void 0, function* () {
231
+ const layer = `arn:aws:lambda:us-east-1:${constants_2.DEFAULT_LAYER_AWS_ACCOUNT}:layer:Datadog-Node20-x`;
232
+ (0, fixtures_2.mockLambdaLayers)(lambdaClientMock, {
233
+ [`${layer}:1`]: {
234
+ LayerName: layer,
235
+ VersionNumber: 1,
236
+ },
237
+ [`${layer}:2`]: {
238
+ LayerName: layer,
239
+ VersionNumber: 2,
240
+ },
241
+ [`${layer}:10`]: {
242
+ LayerName: layer,
243
+ VersionNumber: 10,
244
+ },
245
+ [`${layer}:20`]: {
246
+ LayerName: layer,
247
+ VersionNumber: 20,
248
+ },
249
+ [`${layer}:30`]: {
250
+ LayerName: layer,
251
+ VersionNumber: 30,
252
+ },
253
+ [`${layer}:40`]: {
254
+ LayerName: layer,
255
+ VersionNumber: 40,
256
+ },
257
+ [`${layer}:41`]: {
258
+ LayerName: layer,
259
+ VersionNumber: 41,
260
+ },
261
+ });
262
+ const runtime = 'nodejs20.x';
263
+ const region = 'us-east-1';
264
+ const expectedLatestVersion = 41;
265
+ const latestVersionFound = yield (0, commons_1.findLatestLayerVersion)(runtime, region);
266
+ expect(latestVersionFound).toBe(expectedLatestVersion);
267
+ }));
268
+ test('returns 0 when no layer can be found', () => __awaiter(void 0, void 0, void 0, function* () {
269
+ const runtime = 'python3.12';
270
+ const region = 'us-east-1';
271
+ const expectedLatestVersion = 0;
272
+ const latestVersionFound = yield (0, commons_1.findLatestLayerVersion)(runtime, region);
273
+ expect(latestVersionFound).toBe(expectedLatestVersion);
274
+ }));
275
+ });
276
+ describe('getAWSCredentials', () => {
277
+ const OLD_ENV = process.env;
278
+ beforeEach(() => {
279
+ jest.resetModules();
280
+ process.env = {};
281
+ });
282
+ afterEach(() => {
283
+ process.env = OLD_ENV;
284
+ });
285
+ fs.readFile.mockImplementation((a, b, callback) => callback({ code: 'ENOENT' }));
286
+ test('returns credentials when `fromNodeProviderChain` returns a succesful promise', () => __awaiter(void 0, void 0, void 0, function* () {
287
+ ;
288
+ credential_providers_1.fromNodeProviderChain.mockImplementation(() => () => Promise.resolve({
289
+ accessKeyId: fixtures_2.mockAwsAccessKeyId,
290
+ secretAccessKey: fixtures_2.mockAwsSecretAccessKey,
291
+ }));
292
+ const credentials = yield (0, commons_1.getAWSCredentials)();
293
+ expect(credentials).toStrictEqual({
294
+ accessKeyId: fixtures_2.mockAwsAccessKeyId,
295
+ secretAccessKey: fixtures_2.mockAwsSecretAccessKey,
296
+ });
297
+ }));
298
+ test('throws an error when `fromNodeProviderChain` fails when fetching credentials', () => __awaiter(void 0, void 0, void 0, function* () {
299
+ ;
300
+ credential_providers_1.fromNodeProviderChain.mockImplementation(() => () => Promise.reject(new Error('Unexpected error')));
301
+ let error;
302
+ try {
303
+ yield (0, commons_1.getAWSCredentials)();
304
+ }
305
+ catch (e) {
306
+ if (e instanceof Error) {
307
+ error = e;
308
+ }
309
+ }
310
+ expect(error === null || error === void 0 ? void 0 : error.message).toBe("Couldn't fetch AWS credentials. Unexpected error");
311
+ }));
312
+ });
313
+ describe('isMissingDatadogEnvVars', () => {
314
+ const OLD_ENV = process.env;
315
+ beforeEach(() => {
316
+ jest.resetModules();
317
+ process.env = {};
318
+ });
319
+ afterAll(() => {
320
+ process.env = OLD_ENV;
321
+ });
322
+ test('returns true when any Datadog Env Var is missing', () => {
323
+ process.env[constants_1.CI_SITE_ENV_VAR] = 'datadoghq.com';
324
+ expect((0, commons_1.isMissingDatadogEnvVars)()).toBe(true);
325
+ // Reset env
326
+ process.env = {};
327
+ process.env[constants_1.CI_API_KEY_ENV_VAR] = 'SOME-DATADOG-API-KEY';
328
+ expect((0, commons_1.isMissingDatadogEnvVars)()).toBe(true);
329
+ process.env = {};
330
+ process.env[constants_1.API_KEY_ENV_VAR] = 'SOME-DATADOG-API-KEY';
331
+ expect((0, commons_1.isMissingDatadogEnvVars)()).toBe(true);
332
+ process.env = {};
333
+ process.env[constants_2.CI_KMS_API_KEY_ENV_VAR] = 'SOME-AWS-KMS-API-KEY-CONTAINING-DATADOG-API-KEY';
334
+ expect((0, commons_1.isMissingDatadogEnvVars)()).toBe(true);
335
+ process.env = {};
336
+ process.env[constants_2.CI_API_KEY_SECRET_ARN_ENV_VAR] = 'SOME-AWS-SECRET-ARN-CONTAINING-DATADOG-API-KEY';
337
+ expect((0, commons_1.isMissingDatadogEnvVars)()).toBe(true);
338
+ });
339
+ test('returns false when Datadog Env Vars are set with DATADOG_API_KEY', () => {
340
+ process.env[constants_1.CI_API_KEY_ENV_VAR] = 'SOME-DATADOG-API-KEY';
341
+ process.env[constants_1.CI_SITE_ENV_VAR] = 'datadoghq.com';
342
+ expect((0, commons_1.isMissingDatadogEnvVars)()).toBe(false);
343
+ });
344
+ test('returns false when Datadog Env Vars are set with DD_API_KEY', () => {
345
+ process.env[constants_1.API_KEY_ENV_VAR] = 'SOME-DATADOG-API-KEY';
346
+ process.env[constants_1.CI_SITE_ENV_VAR] = 'datadoghq.com';
347
+ expect((0, commons_1.isMissingDatadogEnvVars)()).toBe(false);
348
+ });
349
+ test('returns false when Datadog Env Vars are set with DATADOG_KMS_API_KEY', () => {
350
+ process.env[constants_2.CI_KMS_API_KEY_ENV_VAR] = 'SOME-AWS-KMS-API-KEY-CONTAINING-DATADOG-API-KEY';
351
+ process.env[constants_1.CI_SITE_ENV_VAR] = 'datadoghq.com';
352
+ expect((0, commons_1.isMissingDatadogEnvVars)()).toBe(false);
353
+ });
354
+ test('returns false when Datadog Env Vars are set with DATADOG_API_KEY_SECRET_ARN', () => {
355
+ process.env[constants_2.CI_API_KEY_SECRET_ARN_ENV_VAR] = 'SOME-AWS-SECRET-ARN-CONTAINING-DATADOG-API-KEY';
356
+ process.env[constants_1.CI_SITE_ENV_VAR] = 'datadoghq.com';
357
+ expect((0, commons_1.isMissingDatadogEnvVars)()).toBe(false);
358
+ });
359
+ });
360
+ describe('isMissingAnyDatadogApiKeyEnvVar', () => {
361
+ const OLD_ENV = process.env;
362
+ beforeEach(() => {
363
+ jest.resetModules();
364
+ process.env = {};
365
+ });
366
+ afterAll(() => {
367
+ process.env = OLD_ENV;
368
+ });
369
+ test('returns true when no Datadog Api Key is set', () => {
370
+ expect((0, commons_1.isMissingAnyDatadogApiKeyEnvVar)()).toBe(true);
371
+ });
372
+ test('returns false when DATADOG_API_KEY is set', () => {
373
+ process.env[constants_1.CI_API_KEY_ENV_VAR] = 'SOME-DATADOG-API-KEY';
374
+ expect((0, commons_1.isMissingAnyDatadogApiKeyEnvVar)()).toBe(false);
375
+ });
376
+ test('returns false when DD_API_KEY is set', () => {
377
+ process.env[constants_1.API_KEY_ENV_VAR] = 'SOME-DATADOG-API-KEY';
378
+ expect((0, commons_1.isMissingAnyDatadogApiKeyEnvVar)()).toBe(false);
379
+ });
380
+ test('returns false when DATADOG_KMS_API_KEY is set', () => {
381
+ process.env[constants_2.CI_KMS_API_KEY_ENV_VAR] = 'SOME-AWS-KMS-API-KEY-CONTAINING-DATADOG-API-KEY';
382
+ expect((0, commons_1.isMissingAnyDatadogApiKeyEnvVar)()).toBe(false);
383
+ });
384
+ test('returns false when DATADOG_API_KEY_SECRET_ARN is set', () => {
385
+ process.env[constants_2.CI_API_KEY_SECRET_ARN_ENV_VAR] = 'SOME-AWS-SECRET-ARN-CONTAINING-DATADOG-API-KEY';
386
+ expect((0, commons_1.isMissingAnyDatadogApiKeyEnvVar)()).toBe(false);
387
+ });
388
+ });
389
+ describe('getLayerArn', () => {
390
+ const OLD_ENV = process.env;
391
+ beforeEach(() => {
392
+ jest.resetModules();
393
+ process.env = {};
394
+ });
395
+ afterAll(() => {
396
+ process.env = OLD_ENV;
397
+ });
398
+ test('gets sa-east-1 Lambda Extension layer ARN', () => __awaiter(void 0, void 0, void 0, function* () {
399
+ const settings = {
400
+ flushMetricsToLogs: false,
401
+ layerAWSAccount: fixtures_2.mockAwsAccount,
402
+ mergeXrayTraces: false,
403
+ tracingEnabled: false,
404
+ };
405
+ const region = 'sa-east-1';
406
+ const layerArn = (0, commons_1.getLayerArn)({}, constants_2.EXTENSION_LAYER_KEY, region, settings);
407
+ expect(layerArn).toEqual(`arn:aws:lambda:${region}:${fixtures_2.mockAwsAccount}:layer:Datadog-Extension`);
408
+ }));
409
+ test('gets sa-east-1 arm64 Lambda Extension layer ARN', () => __awaiter(void 0, void 0, void 0, function* () {
410
+ const config = {
411
+ Architectures: [client_lambda_1.Architecture.arm64],
412
+ };
413
+ const settings = {
414
+ flushMetricsToLogs: false,
415
+ layerAWSAccount: fixtures_2.mockAwsAccount,
416
+ mergeXrayTraces: false,
417
+ tracingEnabled: false,
418
+ };
419
+ const region = 'sa-east-1';
420
+ const layerArn = (0, commons_1.getLayerArn)(config, constants_2.EXTENSION_LAYER_KEY, region, settings);
421
+ expect(layerArn).toEqual(`arn:aws:lambda:${region}:${fixtures_2.mockAwsAccount}:layer:Datadog-Extension-ARM`);
422
+ }));
423
+ test('gets us-gov-1 gov cloud Lambda Extension layer ARN', () => __awaiter(void 0, void 0, void 0, function* () {
424
+ const settings = {
425
+ flushMetricsToLogs: false,
426
+ layerAWSAccount: fixtures_2.mockAwsAccount,
427
+ mergeXrayTraces: false,
428
+ tracingEnabled: false,
429
+ };
430
+ const region = 'us-gov-1';
431
+ const layerArn = (0, commons_1.getLayerArn)({}, constants_2.EXTENSION_LAYER_KEY, region, settings);
432
+ expect(layerArn).toEqual(`arn:aws-us-gov:lambda:${region}:${constants_2.GOVCLOUD_LAYER_AWS_ACCOUNT}:layer:Datadog-Extension`);
433
+ }));
434
+ test('gets us-gov-1 gov cloud arm64 Lambda Extension layer ARN', () => __awaiter(void 0, void 0, void 0, function* () {
435
+ const config = {
436
+ Architectures: [client_lambda_1.Architecture.arm64],
437
+ };
438
+ const settings = {
439
+ flushMetricsToLogs: false,
440
+ layerAWSAccount: fixtures_2.mockAwsAccount,
441
+ mergeXrayTraces: false,
442
+ tracingEnabled: false,
443
+ };
444
+ const region = 'us-gov-1';
445
+ const layerArn = (0, commons_1.getLayerArn)(config, constants_2.EXTENSION_LAYER_KEY, region, settings);
446
+ expect(layerArn).toEqual(`arn:aws-us-gov:lambda:${region}:${constants_2.GOVCLOUD_LAYER_AWS_ACCOUNT}:layer:Datadog-Extension-ARM`);
447
+ }));
448
+ test('gets sa-east-1 Node20 Lambda Library layer ARN', () => __awaiter(void 0, void 0, void 0, function* () {
449
+ const runtime = client_lambda_1.Runtime.nodejs20x;
450
+ const config = {
451
+ Runtime: runtime,
452
+ };
453
+ const settings = {
454
+ flushMetricsToLogs: false,
455
+ layerAWSAccount: fixtures_2.mockAwsAccount,
456
+ mergeXrayTraces: false,
457
+ tracingEnabled: false,
458
+ };
459
+ const region = 'sa-east-1';
460
+ const layerArn = (0, commons_1.getLayerArn)(config, config.Runtime, region, settings);
461
+ expect(layerArn).toEqual(`arn:aws:lambda:${region}:${fixtures_2.mockAwsAccount}:layer:Datadog-Node20-x`);
462
+ }));
463
+ test('gets sa-east-1 Python39 arm64 Lambda Library layer ARN', () => __awaiter(void 0, void 0, void 0, function* () {
464
+ const runtime = client_lambda_1.Runtime.python39;
465
+ const config = {
466
+ Architectures: [client_lambda_1.Architecture.arm64],
467
+ Runtime: runtime,
468
+ };
469
+ const settings = {
470
+ flushMetricsToLogs: false,
471
+ layerAWSAccount: fixtures_2.mockAwsAccount,
472
+ mergeXrayTraces: false,
473
+ tracingEnabled: false,
474
+ };
475
+ const region = 'sa-east-1';
476
+ const layerArn = (0, commons_1.getLayerArn)(config, config.Runtime, region, settings);
477
+ expect(layerArn).toEqual(`arn:aws:lambda:${region}:${fixtures_2.mockAwsAccount}:layer:Datadog-Python39-ARM`);
478
+ }));
479
+ test('gets us-gov-1 Python312 gov cloud Lambda Library layer ARN', () => __awaiter(void 0, void 0, void 0, function* () {
480
+ const runtime = client_lambda_1.Runtime.python312;
481
+ const config = {
482
+ Runtime: runtime,
483
+ };
484
+ const settings = {
485
+ flushMetricsToLogs: false,
486
+ layerAWSAccount: fixtures_2.mockAwsAccount,
487
+ mergeXrayTraces: false,
488
+ tracingEnabled: false,
489
+ };
490
+ const region = 'us-gov-1';
491
+ const layerArn = (0, commons_1.getLayerArn)(config, config.Runtime, region, settings);
492
+ expect(layerArn).toEqual(`arn:aws-us-gov:lambda:${region}:${constants_2.GOVCLOUD_LAYER_AWS_ACCOUNT}:layer:Datadog-Python312`);
493
+ }));
494
+ test('gets us-gov-1 Python39 gov cloud arm64 Lambda Library layer ARN', () => __awaiter(void 0, void 0, void 0, function* () {
495
+ const runtime = client_lambda_1.Runtime.python39;
496
+ const config = {
497
+ Architectures: [client_lambda_1.Architecture.arm64],
498
+ Runtime: runtime,
499
+ };
500
+ const settings = {
501
+ flushMetricsToLogs: false,
502
+ layerAWSAccount: fixtures_2.mockAwsAccount,
503
+ mergeXrayTraces: false,
504
+ tracingEnabled: false,
505
+ };
506
+ const region = 'us-gov-1';
507
+ const layerArn = (0, commons_1.getLayerArn)(config, config.Runtime, region, settings);
508
+ expect(layerArn).toEqual(`arn:aws-us-gov:lambda:${region}:${constants_2.GOVCLOUD_LAYER_AWS_ACCOUNT}:layer:Datadog-Python39-ARM`);
509
+ }));
510
+ test('gets dotnet6 arm64 Lambda Library layer ARN', () => __awaiter(void 0, void 0, void 0, function* () {
511
+ const runtime = client_lambda_1.Runtime.dotnet6;
512
+ const config = {
513
+ Runtime: runtime,
514
+ Architectures: [client_lambda_1.Architecture.arm64],
515
+ };
516
+ const settings = {
517
+ flushMetricsToLogs: false,
518
+ layerAWSAccount: fixtures_2.mockAwsAccount,
519
+ mergeXrayTraces: false,
520
+ tracingEnabled: false,
521
+ };
522
+ const region = 'us-east-1';
523
+ const layerArn = (0, commons_1.getLayerArn)(config, config.Runtime, region, settings);
524
+ expect(layerArn).toEqual(`arn:aws:lambda:${region}:${fixtures_2.mockAwsAccount}:layer:dd-trace-dotnet-ARM`);
525
+ }));
526
+ });
527
+ describe('getLayerNameWithVersion', () => {
528
+ const OLD_ENV = process.env;
529
+ beforeEach(() => {
530
+ jest.resetModules();
531
+ process.env = {};
532
+ });
533
+ afterAll(() => {
534
+ process.env = OLD_ENV;
535
+ });
536
+ test('returns the correct name and version given an extension layer arn', () => {
537
+ const layerName = constants_2.DD_LAMBDA_EXTENSION_LAYER_NAME;
538
+ const version = '16';
539
+ const layerNameWithVersion = `${layerName}:${version}`;
540
+ const layerArn = `arn:aws:lambda:sa-east-1:${fixtures_2.mockAwsAccount}:layer:${layerNameWithVersion}`;
541
+ expect((0, commons_1.getLayerNameWithVersion)(layerArn)).toBe(layerNameWithVersion);
542
+ });
543
+ test('returns the correct name and version given a library layer arn', () => {
544
+ const layerName = 'Datadog-Python39';
545
+ const version = '59';
546
+ const layerNameWithVersion = `${layerName}:${version}`;
547
+ const layerArn = `arn:aws:lambda:sa-east-1:${fixtures_2.mockAwsAccount}:layer:${layerNameWithVersion}`;
548
+ expect((0, commons_1.getLayerNameWithVersion)(layerArn)).toBe(layerNameWithVersion);
549
+ });
550
+ test('returns undefined if arn is incomplete', () => {
551
+ const layerArn = `arn:aws:lambda:sa-east-1:${fixtures_2.mockAwsAccount}:layer:Datadog-Python39`;
552
+ expect((0, commons_1.getLayerNameWithVersion)(layerArn)).toBe(undefined);
553
+ });
554
+ });
555
+ describe('getRegion', () => {
556
+ test('should return the expected region', () => {
557
+ const functionARN = 'arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world';
558
+ const expectedRegion = 'us-east-1';
559
+ const region = (0, commons_1.getRegion)(functionARN);
560
+ expect(region).toBe(expectedRegion);
561
+ });
562
+ test('should return undefined if Function ARN does not contain the region', () => {
563
+ const functionName = 'lambda-hello-world';
564
+ const region = (0, commons_1.getRegion)(functionName);
565
+ expect(region).toBe(undefined);
566
+ });
567
+ });
568
+ describe('sentenceMatchesRegEx', () => {
569
+ const tags = [
570
+ ['not@complying:regex-should-fail', false],
571
+ ['1first-char-is-number:should-fail', false],
572
+ ['_also-not-complying:should-fail', false],
573
+ ['complying_tag:accepted/with/slashes.and.dots,but-empty-tag', false],
574
+ ['also_complying:success,1but_is_illegal:should-fail', false],
575
+ ['this:complies,also_this_one:yes,numb3r_in_name:should-succeed,dots:al.lo.wed', true],
576
+ ['complying_ip_address_4:192.342.3134.231', true],
577
+ ['complying:alone', true],
578
+ ['one_divided_by_two:1/2,one_divided_by_four:0.25,three_minus_one_half:3-1/2', true],
579
+ ['this_is_a_valid_t4g:yes/it.is-42', true],
580
+ // multiple colons, periods in tag, slashes in tag
581
+ ['env-staging:east:staging,version.minor:1,version.major:3.4/v3,category/service:not/defined', true],
582
+ ['email:user@email.com,numb3r:t', true],
583
+ ];
584
+ test.each(tags)('check if the tags match the expected result from the regex', (tag, expectedResult) => {
585
+ const result = !!(0, commons_1.sentenceMatchesRegEx)(tag, constants_2.EXTRA_TAGS_REG_EXP);
586
+ expect(result).toEqual(expectedResult);
587
+ });
588
+ });
589
+ describe('updateLambdaFunctionConfig', () => {
590
+ const OLD_ENV = process.env;
591
+ beforeEach(() => {
592
+ cloudWatchLogsClientMock.reset();
593
+ lambdaClientMock.reset();
594
+ jest.resetModules();
595
+ process.env = {};
596
+ });
597
+ afterAll(() => {
598
+ process.env = OLD_ENV;
599
+ });
600
+ test('updates every lambda', () => __awaiter(void 0, void 0, void 0, function* () {
601
+ const configs = [
602
+ {
603
+ functionARN: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument',
604
+ lambdaConfig: {
605
+ FunctionArn: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument',
606
+ Handler: 'index.handler',
607
+ Runtime: client_lambda_1.Runtime.nodejs20x,
608
+ },
609
+ lambdaLibraryLayerArn: 'arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Node20-x',
610
+ updateFunctionConfigurationCommandInput: {
611
+ Environment: {
612
+ Variables: {
613
+ [constants_2.LAMBDA_HANDLER_ENV_VAR]: 'index.handler',
614
+ [constants_2.MERGE_XRAY_TRACES_ENV_VAR]: 'false',
615
+ [constants_2.TRACE_ENABLED_ENV_VAR]: 'false',
616
+ },
617
+ },
618
+ FunctionName: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument',
619
+ Handler: '/opt/nodejs/node_modules/datadog-lambda-js/handler.handler',
620
+ Layers: ['arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Node20-x:22'],
621
+ },
622
+ },
623
+ ];
624
+ yield Promise.all(configs.map((config) => __awaiter(void 0, void 0, void 0, function* () { return (0, commons_1.updateLambdaFunctionConfig)(lambdaClientMock, cloudWatchLogsClientMock, config); })));
625
+ expect(lambdaClientMock).toHaveReceivedCommandWith(client_lambda_1.UpdateFunctionConfigurationCommand, {
626
+ Environment: {
627
+ Variables: {
628
+ [constants_2.LAMBDA_HANDLER_ENV_VAR]: 'index.handler',
629
+ [constants_2.MERGE_XRAY_TRACES_ENV_VAR]: 'false',
630
+ [constants_2.TRACE_ENABLED_ENV_VAR]: 'false',
631
+ },
632
+ },
633
+ FunctionName: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument',
634
+ Handler: '/opt/nodejs/node_modules/datadog-lambda-js/handler.handler',
635
+ Layers: ['arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Node20-x:22'],
636
+ });
637
+ }));
638
+ });
639
+ describe('handleLambdaFunctionUpdates', () => {
640
+ const OLD_ENV = process.env;
641
+ beforeEach(() => {
642
+ cloudWatchLogsClientMock.reset();
643
+ lambdaClientMock.reset();
644
+ jest.resetModules();
645
+ process.env = {};
646
+ });
647
+ afterAll(() => {
648
+ process.env = OLD_ENV;
649
+ });
650
+ const stdout = { write: (_) => jest.fn() };
651
+ const getConfigs = (lambdaClient) => [
652
+ {
653
+ lambdaClient,
654
+ cloudWatchLogsClientMock,
655
+ configs: [
656
+ {
657
+ functionARN: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument',
658
+ lambdaConfig: {
659
+ FunctionArn: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument',
660
+ Handler: 'index.handler',
661
+ Runtime: 'nodejs20.x',
662
+ },
663
+ lambdaLibraryLayerArn: 'arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Node20-x',
664
+ updateFunctionConfigurationCommandInput: {
665
+ Environment: {
666
+ Variables: {
667
+ [constants_2.LAMBDA_HANDLER_ENV_VAR]: 'index.handler',
668
+ [constants_2.MERGE_XRAY_TRACES_ENV_VAR]: 'false',
669
+ [constants_2.TRACE_ENABLED_ENV_VAR]: 'false',
670
+ },
671
+ },
672
+ FunctionName: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument',
673
+ Handler: '/opt/nodejs/node_modules/datadog-lambda-js/handler.handler',
674
+ Layers: ['arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Node20-x:XX'],
675
+ },
676
+ },
677
+ ],
678
+ region: 'us-east-1',
679
+ },
680
+ {
681
+ lambdaClient,
682
+ cloudWatchLogsClientMock,
683
+ configs: [
684
+ {
685
+ functionARN: 'arn:aws:lambda:us-east-2:000000000000:function:autoinstrument',
686
+ lambdaConfig: {
687
+ FunctionArn: 'arn:aws:lambda:us-east-2:000000000000:function:autoinstrument',
688
+ Handler: 'index.handler',
689
+ Runtime: 'nodejs20.x',
690
+ },
691
+ lambdaLibraryLayerArn: 'arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Node20-x',
692
+ updateFunctionConfigurationCommandInput: {
693
+ Environment: {
694
+ Variables: {
695
+ [constants_2.LAMBDA_HANDLER_ENV_VAR]: 'index.handler',
696
+ [constants_2.MERGE_XRAY_TRACES_ENV_VAR]: 'false',
697
+ [constants_2.TRACE_ENABLED_ENV_VAR]: 'false',
698
+ },
699
+ },
700
+ FunctionName: 'arn:aws:lambda:us-east-2:000000000000:function:autoinstrument',
701
+ Handler: '/opt/nodejs/node_modules/datadog-lambda-js/handler.handler',
702
+ Layers: ['arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Node20-x:XX'],
703
+ },
704
+ },
705
+ ],
706
+ region: 'us-east-2',
707
+ },
708
+ ];
709
+ test('throws an error when all functions from every region fail to update', () => __awaiter(void 0, void 0, void 0, function* () {
710
+ lambdaClientMock.on(client_lambda_1.UpdateFunctionConfigurationCommand).rejects();
711
+ const configs = getConfigs(lambdaClientMock);
712
+ yield expect((0, commons_1.handleLambdaFunctionUpdates)(configs, stdout)).rejects.toThrow();
713
+ }));
714
+ test('to not throw an error when at least one function is updated', () => __awaiter(void 0, void 0, void 0, function* () {
715
+ lambdaClientMock
716
+ .on(client_lambda_1.UpdateFunctionConfigurationCommand, {
717
+ FunctionName: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument',
718
+ })
719
+ .rejects();
720
+ const configs = getConfigs(lambdaClientMock);
721
+ // when sucessful, the function doesnt do anything
722
+ const result = yield (0, commons_1.handleLambdaFunctionUpdates)(configs, stdout);
723
+ expect(result).toBe(undefined);
724
+ }));
725
+ });
726
+ describe('handles multiple runtimes', () => {
727
+ test('returns true if all runtimes are uniform', () => __awaiter(void 0, void 0, void 0, function* () {
728
+ const configs = [
729
+ {
730
+ functionARN: 'arn:aws:lambda:us-east-1:000000000000:function:func3',
731
+ lambdaConfig: {
732
+ FunctionArn: 'arn:aws:lambda:us-east-1:000000000000:function:func3',
733
+ Handler: 'index.handler',
734
+ Runtime: 'nodejs16.x',
735
+ },
736
+ },
737
+ {
738
+ functionARN: 'arn:aws:lambda:us-east-1:000000000000:function:func4',
739
+ lambdaConfig: {
740
+ FunctionArn: 'arn:aws:lambda:us-east-1:000000000000:function:func4',
741
+ Handler: 'index.handler',
742
+ Runtime: 'nodejs18.x',
743
+ },
744
+ },
745
+ {
746
+ functionARN: 'arn:aws:lambda:us-east-1:000000000000:function:func5',
747
+ lambdaConfig: {
748
+ FunctionArn: 'arn:aws:lambda:us-east-1:000000000000:function:func5',
749
+ Handler: 'index.handler',
750
+ Runtime: 'nodejs20.x',
751
+ },
752
+ },
753
+ ];
754
+ expect((0, commons_1.checkRuntimeTypesAreUniform)(configs)).toBe(true);
755
+ }));
756
+ test('returns false if runtimes are not uniform', () => __awaiter(void 0, void 0, void 0, function* () {
757
+ const configs = [
758
+ {
759
+ functionARN: 'arn:aws:lambda:us-east-1:000000000000:function:func1',
760
+ lambdaConfig: {
761
+ FunctionArn: 'arn:aws:lambda:us-east-1:000000000000:function:func1',
762
+ Handler: 'index.handler',
763
+ Runtime: 'nodejs20.x',
764
+ },
765
+ },
766
+ {
767
+ functionARN: 'arn:aws:lambda:us-east-1:000000000000:function:func2',
768
+ lambdaConfig: {
769
+ FunctionArn: 'arn:aws:lambda:us-east-1:000000000000:function:func2',
770
+ Handler: 'index.handler',
771
+ Runtime: 'python3.9',
772
+ },
773
+ },
774
+ ];
775
+ expect((0, commons_1.checkRuntimeTypesAreUniform)(configs)).toBe(false);
776
+ }));
777
+ });
778
+ describe('maskConfig', () => {
779
+ it('should mask a Lambda config correctly', () => {
780
+ const maskedConfig = (0, commons_1.maskConfig)(fixtures_2.MOCK_LAMBDA_CONFIG);
781
+ expect(maskedConfig).toMatchSnapshot();
782
+ });
783
+ it('should not modify config if env vars are missing', () => {
784
+ const lambdaConfigCopy = JSON.parse(JSON.stringify(fixtures_2.MOCK_LAMBDA_CONFIG));
785
+ delete lambdaConfigCopy.Environment.Variables;
786
+ const maskedConfig = (0, commons_1.maskConfig)(lambdaConfigCopy);
787
+ expect(maskedConfig).toMatchSnapshot();
788
+ });
789
+ });
790
+ });
791
+ //# sourceMappingURL=commons.test.js.map