serverless-plugin-datadog 3.4.0 → 3.5.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. package/README.md +31 -38
  2. package/dist/package.json +14 -4
  3. package/dist/src/env.d.ts +6 -3
  4. package/dist/src/env.d.ts.map +1 -1
  5. package/dist/src/env.js +25 -3
  6. package/dist/src/env.js.map +1 -1
  7. package/dist/src/forwarder.d.ts +1 -1
  8. package/dist/src/forwarder.d.ts.map +1 -1
  9. package/dist/src/git-metadata/interfaces.d.ts +10 -0
  10. package/dist/src/git-metadata/interfaces.d.ts.map +1 -0
  11. package/dist/src/git-metadata/interfaces.js +43 -0
  12. package/dist/src/git-metadata/interfaces.js.map +1 -0
  13. package/dist/src/git.d.ts +8 -0
  14. package/dist/src/git.d.ts.map +1 -0
  15. package/dist/src/git.js +115 -0
  16. package/dist/src/git.js.map +1 -0
  17. package/dist/src/helpers/apikey.d.ts +13 -0
  18. package/dist/src/helpers/apikey.d.ts.map +1 -0
  19. package/dist/src/helpers/apikey.js +74 -0
  20. package/dist/src/helpers/apikey.js.map +1 -0
  21. package/dist/src/helpers/errors.d.ts +3 -0
  22. package/dist/src/helpers/errors.d.ts.map +1 -0
  23. package/dist/src/helpers/errors.js +7 -0
  24. package/dist/src/helpers/errors.js.map +1 -0
  25. package/dist/src/helpers/interfaces.d.ts +20 -0
  26. package/dist/src/helpers/interfaces.d.ts.map +1 -0
  27. package/dist/src/helpers/interfaces.js +3 -0
  28. package/dist/src/helpers/interfaces.js.map +1 -0
  29. package/dist/src/helpers/retry.d.ts +3 -0
  30. package/dist/src/helpers/retry.d.ts.map +1 -0
  31. package/dist/src/helpers/retry.js +39 -0
  32. package/dist/src/helpers/retry.js.map +1 -0
  33. package/dist/src/helpers/tags.d.ts +29 -0
  34. package/dist/src/helpers/tags.d.ts.map +1 -0
  35. package/dist/src/helpers/tags.js +50 -0
  36. package/dist/src/helpers/tags.js.map +1 -0
  37. package/dist/src/helpers/upload.d.ts +45 -0
  38. package/dist/src/helpers/upload.d.ts.map +1 -0
  39. package/dist/src/helpers/upload.js +70 -0
  40. package/dist/src/helpers/upload.js.map +1 -0
  41. package/dist/src/helpers/utils.d.ts +31 -0
  42. package/dist/src/helpers/utils.d.ts.map +1 -0
  43. package/dist/src/helpers/utils.js +115 -0
  44. package/dist/src/helpers/utils.js.map +1 -0
  45. package/dist/src/index.d.ts +9 -1
  46. package/dist/src/index.d.ts.map +1 -1
  47. package/dist/src/index.js +57 -13
  48. package/dist/src/index.js.map +1 -1
  49. package/dist/src/layers-gov.json +8 -8
  50. package/dist/src/layers.json +84 -84
  51. package/dist/src/monitor-api-requests.d.ts +1 -1
  52. package/dist/src/monitor-api-requests.d.ts.map +1 -1
  53. package/dist/src/monitor-api-requests.js.map +1 -1
  54. package/dist/src/output.d.ts +1 -1
  55. package/dist/src/output.d.ts.map +1 -1
  56. package/dist/src/source-code-integration.d.ts +12 -0
  57. package/dist/src/source-code-integration.d.ts.map +1 -0
  58. package/dist/src/source-code-integration.js +76 -0
  59. package/dist/src/source-code-integration.js.map +1 -0
  60. package/dist/src/tracing.d.ts +1 -1
  61. package/dist/src/tracing.d.ts.map +1 -1
  62. package/package.json +14 -4
  63. package/dist/env.d.ts +0 -17
  64. package/dist/env.d.ts.map +0 -1
  65. package/dist/env.js +0 -63
  66. package/dist/env.js.map +0 -1
  67. package/dist/forwarder.d.ts +0 -14
  68. package/dist/forwarder.d.ts.map +0 -1
  69. package/dist/forwarder.js +0 -87
  70. package/dist/forwarder.js.map +0 -1
  71. package/dist/index.d.ts +0 -10
  72. package/dist/index.d.ts.map +0 -1
  73. package/dist/index.js +0 -161
  74. package/dist/index.js.map +0 -1
  75. package/dist/layer.d.ts +0 -26
  76. package/dist/layer.d.ts.map +0 -1
  77. package/dist/layer.js +0 -65
  78. package/dist/layer.js.map +0 -1
  79. package/dist/layers.json +0 -156
  80. package/dist/templates/node-es6-template.d.ts +0 -2
  81. package/dist/templates/node-es6-template.d.ts.map +0 -1
  82. package/dist/templates/node-es6-template.js +0 -25
  83. package/dist/templates/node-es6-template.js.map +0 -1
  84. package/dist/templates/node-js-template.d.ts +0 -2
  85. package/dist/templates/node-js-template.d.ts.map +0 -1
  86. package/dist/templates/node-js-template.js +0 -24
  87. package/dist/templates/node-js-template.js.map +0 -1
  88. package/dist/templates/node-ts-template.d.ts +0 -2
  89. package/dist/templates/node-ts-template.d.ts.map +0 -1
  90. package/dist/templates/node-ts-template.js +0 -26
  91. package/dist/templates/node-ts-template.js.map +0 -1
  92. package/dist/templates/python-template.d.ts +0 -2
  93. package/dist/templates/python-template.d.ts.map +0 -1
  94. package/dist/templates/python-template.js +0 -25
  95. package/dist/templates/python-template.js.map +0 -1
  96. package/dist/tracing.d.ts +0 -9
  97. package/dist/tracing.d.ts.map +0 -1
  98. package/dist/tracing.js +0 -36
  99. package/dist/tracing.js.map +0 -1
  100. package/dist/util.d.ts +0 -9
  101. package/dist/util.d.ts.map +0 -1
  102. package/dist/util.js +0 -72
  103. package/dist/util.js.map +0 -1
  104. package/dist/wrapper.d.ts +0 -11
  105. package/dist/wrapper.d.ts.map +0 -1
  106. package/dist/wrapper.js +0 -57
  107. package/dist/wrapper.js.map +0 -1
  108. package/dist/yarn.lock +0 -3703
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.newApiKeyValidator = void 0;
16
+ const axios_1 = __importDefault(require("axios"));
17
+ const chalk_1 = __importDefault(require("chalk"));
18
+ const errors_1 = require("./errors");
19
+ const newApiKeyValidator = (params) => new ApiKeyValidatorImplem(params.apiKey, params.datadogSite);
20
+ exports.newApiKeyValidator = newApiKeyValidator;
21
+ /** ApiKeyValidator is an helper class to interpret Datadog error responses and possibly check the
22
+ * validity of the api key.
23
+ */
24
+ class ApiKeyValidatorImplem {
25
+ constructor(apiKey, datadogSite) {
26
+ this.apiKey = apiKey;
27
+ this.datadogSite = datadogSite;
28
+ }
29
+ /** Check if an API key is valid, based on the Axios error and defaulting to verify the API key
30
+ * through Datadog's API for ambiguous cases.
31
+ * An exception is raised when the API key is invalid.
32
+ * Callers should catch the exception to display it nicely.
33
+ */
34
+ verifyApiKey(error) {
35
+ return __awaiter(this, void 0, void 0, function* () {
36
+ if (error.response === undefined) {
37
+ return;
38
+ }
39
+ if (error.response.status === 403 || (error.response.status === 400 && !(yield this.isApiKeyValid()))) {
40
+ throw new errors_1.InvalidConfigurationError(`${chalk_1.default.red.bold("DATADOG_API_KEY")} does not contain a valid API key for Datadog site ${this.datadogSite}`);
41
+ }
42
+ });
43
+ }
44
+ getApiKeyValidationURL() {
45
+ return `https://api.${this.datadogSite}/api/v1/validate`;
46
+ }
47
+ isApiKeyValid() {
48
+ return __awaiter(this, void 0, void 0, function* () {
49
+ if (this.isValid === undefined) {
50
+ this.isValid = yield this.validateApiKey();
51
+ }
52
+ return this.isValid;
53
+ });
54
+ }
55
+ validateApiKey() {
56
+ return __awaiter(this, void 0, void 0, function* () {
57
+ try {
58
+ const response = yield axios_1.default.get(this.getApiKeyValidationURL(), {
59
+ headers: {
60
+ "DD-API-KEY": this.apiKey,
61
+ },
62
+ });
63
+ return response.data.valid;
64
+ }
65
+ catch (error) {
66
+ if (error.response && error.response.status === 403) {
67
+ return false;
68
+ }
69
+ throw error;
70
+ }
71
+ });
72
+ }
73
+ }
74
+ //# sourceMappingURL=apikey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apikey.js","sourceRoot":"","sources":["../../../src/helpers/apikey.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAAqD;AACrD,kDAA0B;AAC1B,qCAAqD;AAc9C,MAAM,kBAAkB,GAAG,CAAC,MAA6B,EAAmB,EAAE,CACnF,IAAI,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AADlD,QAAA,kBAAkB,sBACgC;AAE/D;;GAEG;AACH,MAAM,qBAAqB;IAMzB,YAAY,MAAc,EAAE,WAAmB;QAC7C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACU,YAAY,CAAC,KAAiB;;YACzC,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE;gBAChC,OAAO;aACR;YACD,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE;gBACrG,MAAM,IAAI,kCAAyB,CACjC,GAAG,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,sDAAsD,IAAI,CAAC,WAAW,EAAE,CAC7G,CAAC;aACH;QACH,CAAC;KAAA;IAEO,sBAAsB;QAC5B,OAAO,eAAe,IAAI,CAAC,WAAW,kBAAkB,CAAC;IAC3D,CAAC;IAEa,aAAa;;YACzB,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;gBAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;aAC5C;YAED,OAAO,IAAI,CAAC,OAAQ,CAAC;QACvB,CAAC;KAAA;IAEa,cAAc;;YAC1B,IAAI;gBACF,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE;oBAC9D,OAAO,EAAE;wBACP,YAAY,EAAE,IAAI,CAAC,MAAM;qBAC1B;iBACF,CAAC,CAAC;gBAEH,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;aAC5B;YAAC,OAAO,KAAU,EAAE;gBACnB,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;oBACnD,OAAO,KAAK,CAAC;iBACd;gBACD,MAAM,KAAK,CAAC;aACb;QACH,CAAC;KAAA;CACF"}
@@ -0,0 +1,3 @@
1
+ export declare class InvalidConfigurationError extends Error {
2
+ }
3
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/helpers/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,yBAA0B,SAAQ,KAAK;CAAG"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvalidConfigurationError = void 0;
4
+ class InvalidConfigurationError extends Error {
5
+ }
6
+ exports.InvalidConfigurationError = InvalidConfigurationError;
7
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/helpers/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,yBAA0B,SAAQ,KAAK;CAAG;AAAvD,8DAAuD"}
@@ -0,0 +1,20 @@
1
+ import { AxiosPromise, AxiosRequestConfig, AxiosResponse } from "axios";
2
+ import { CI_JOB_NAME, CI_JOB_URL, CI_PIPELINE_ID, CI_PIPELINE_NAME, CI_PIPELINE_NUMBER, CI_PIPELINE_URL, CI_PROVIDER_NAME, CI_STAGE_NAME, CI_WORKSPACE_PATH, GIT_BRANCH, GIT_COMMIT_AUTHOR_DATE, GIT_COMMIT_AUTHOR_EMAIL, GIT_COMMIT_AUTHOR_NAME, GIT_COMMIT_COMMITTER_DATE, GIT_COMMIT_COMMITTER_EMAIL, GIT_COMMIT_COMMITTER_NAME, GIT_COMMIT_MESSAGE, GIT_REPOSITORY_URL, GIT_SHA, GIT_TAG } from "./tags";
3
+ export interface Metadata {
4
+ ci: {
5
+ pipeline: {
6
+ url?: string;
7
+ };
8
+ provider: {
9
+ name: string;
10
+ };
11
+ };
12
+ git: {
13
+ branch?: string;
14
+ commitSha?: string;
15
+ };
16
+ }
17
+ export declare type SpanTag = typeof CI_JOB_NAME | typeof CI_JOB_URL | typeof CI_PIPELINE_ID | typeof CI_PIPELINE_NAME | typeof CI_PIPELINE_NUMBER | typeof CI_PIPELINE_URL | typeof CI_PROVIDER_NAME | typeof CI_STAGE_NAME | typeof CI_WORKSPACE_PATH | typeof GIT_BRANCH | typeof GIT_REPOSITORY_URL | typeof GIT_SHA | typeof GIT_TAG | typeof GIT_COMMIT_AUTHOR_EMAIL | typeof GIT_COMMIT_AUTHOR_NAME | typeof GIT_COMMIT_AUTHOR_DATE | typeof GIT_COMMIT_MESSAGE | typeof GIT_COMMIT_COMMITTER_DATE | typeof GIT_COMMIT_COMMITTER_EMAIL | typeof GIT_COMMIT_COMMITTER_NAME;
18
+ export declare type SpanTags = Partial<Record<SpanTag, string>>;
19
+ export declare type RequestBuilder = (args: AxiosRequestConfig) => AxiosPromise<AxiosResponse>;
20
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/helpers/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACxE,OAAO,EACL,WAAW,EACX,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,UAAU,EACV,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,OAAO,EACP,OAAO,EACR,MAAM,QAAQ,CAAC;AAEhB,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE;QACF,QAAQ,EAAE;YACR,GAAG,CAAC,EAAE,MAAM,CAAC;SACd,CAAC;QACF,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;KACH,CAAC;IACF,GAAG,EAAE;QACH,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,oBAAY,OAAO,GACf,OAAO,WAAW,GAClB,OAAO,UAAU,GACjB,OAAO,cAAc,GACrB,OAAO,gBAAgB,GACvB,OAAO,kBAAkB,GACzB,OAAO,eAAe,GACtB,OAAO,gBAAgB,GACvB,OAAO,aAAa,GACpB,OAAO,iBAAiB,GACxB,OAAO,UAAU,GACjB,OAAO,kBAAkB,GACzB,OAAO,OAAO,GACd,OAAO,OAAO,GACd,OAAO,uBAAuB,GAC9B,OAAO,sBAAsB,GAC7B,OAAO,sBAAsB,GAC7B,OAAO,kBAAkB,GACzB,OAAO,yBAAyB,GAChC,OAAO,0BAA0B,GACjC,OAAO,yBAAyB,CAAC;AAErC,oBAAY,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAExD,oBAAY,cAAc,GAAG,CAAC,IAAI,EAAE,kBAAkB,KAAK,YAAY,CAAC,aAAa,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/helpers/interfaces.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import retry from "async-retry";
2
+ export declare const retryRequest: (requestPerformer: () => Promise<any>, retryOpts: retry.Options) => Promise<void>;
3
+ //# sourceMappingURL=retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../src/helpers/retry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,aAAa,CAAC;AAIhC,eAAO,MAAM,YAAY,qBAA4B,MAAM,QAAQ,GAAG,CAAC,aAAa,MAAM,OAAO,KAAG,QAAQ,IAAI,CAoB/G,CAAC"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.retryRequest = void 0;
16
+ const async_retry_1 = __importDefault(require("async-retry"));
17
+ const errorCodesNoRetry = [400, 403, 413];
18
+ const retryRequest = (requestPerformer, retryOpts) => __awaiter(void 0, void 0, void 0, function* () {
19
+ // Request function, passed to async-retry
20
+ const doRequest = (bail) => __awaiter(void 0, void 0, void 0, function* () {
21
+ try {
22
+ yield requestPerformer();
23
+ }
24
+ catch (error) {
25
+ if (error.response && errorCodesNoRetry.includes(error.response.status)) {
26
+ // If it's an axios error with a status code that is excluded from retries, we bail to avoid retrying
27
+ bail(error);
28
+ return;
29
+ }
30
+ // Other cases are retried: other axios HTTP errors as well as
31
+ // non-axios errors such as DNS resolution errors and connection timeouts
32
+ throw error;
33
+ }
34
+ });
35
+ // Do the actual call
36
+ return (0, async_retry_1.default)(doRequest, retryOpts);
37
+ });
38
+ exports.retryRequest = retryRequest;
39
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../src/helpers/retry.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,8DAAgC;AAEhC,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEnC,MAAM,YAAY,GAAG,CAAO,gBAAoC,EAAE,SAAwB,EAAiB,EAAE;IAClH,0CAA0C;IAC1C,MAAM,SAAS,GAAG,CAAO,IAAwB,EAAE,EAAE;QACnD,IAAI;YACF,MAAM,gBAAgB,EAAE,CAAC;SAC1B;QAAC,OAAO,KAAU,EAAE;YACnB,IAAI,KAAK,CAAC,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACvE,qGAAqG;gBACrG,IAAI,CAAC,KAAK,CAAC,CAAC;gBAEZ,OAAO;aACR;YACD,8DAA8D;YAC9D,yEAAyE;YACzE,MAAM,KAAK,CAAC;SACb;IACH,CAAC,CAAA,CAAC;IAEF,qBAAqB;IACrB,OAAO,IAAA,qBAAK,EAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACrC,CAAC,CAAA,CAAC;AApBW,QAAA,YAAY,gBAoBvB"}
@@ -0,0 +1,29 @@
1
+ export declare const CI_PIPELINE_URL = "ci.pipeline.url";
2
+ export declare const CI_PROVIDER_NAME = "ci.provider.name";
3
+ export declare const CI_PIPELINE_ID = "ci.pipeline.id";
4
+ export declare const CI_PIPELINE_NAME = "ci.pipeline.name";
5
+ export declare const CI_PIPELINE_NUMBER = "ci.pipeline.number";
6
+ export declare const CI_WORKSPACE_PATH = "ci.workspace_path";
7
+ export declare const GIT_REPOSITORY_URL = "git.repository_url";
8
+ export declare const CI_JOB_URL = "ci.job.url";
9
+ export declare const CI_JOB_NAME = "ci.job.name";
10
+ export declare const CI_STAGE_NAME = "ci.stage.name";
11
+ export declare const CI_LEVEL = "_dd.ci.level";
12
+ export declare const CI_BUILD_LEVEL = "_dd.ci.build_level";
13
+ export declare const GIT_BRANCH = "git.branch";
14
+ export declare const GIT_COMMIT_AUTHOR_DATE = "git.commit.author.date";
15
+ export declare const GIT_COMMIT_AUTHOR_EMAIL = "git.commit.author.email";
16
+ export declare const GIT_COMMIT_AUTHOR_NAME = "git.commit.author.name";
17
+ export declare const GIT_COMMIT_COMMITTER_DATE = "git.commit.committer.date";
18
+ export declare const GIT_COMMIT_COMMITTER_EMAIL = "git.commit.committer.email";
19
+ export declare const GIT_COMMIT_COMMITTER_NAME = "git.commit.committer.name";
20
+ export declare const GIT_COMMIT_MESSAGE = "git.commit.message";
21
+ export declare const GIT_SHA = "git.commit.sha";
22
+ export declare const GIT_TAG = "git.tag";
23
+ export declare const SPAN_TYPE = "span.type";
24
+ /**
25
+ * Receives an array of the form ['key:value', 'key2:value2']
26
+ * and returns an object of the form {key: 'value', key2: 'value2'}
27
+ */
28
+ export declare const parseTags: (tags: string[]) => {};
29
+ //# sourceMappingURL=tags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../../src/helpers/tags.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,QAAQ,iBAAiB,CAAC;AAEvC,eAAO,MAAM,cAAc,uBAAuB,CAAC;AAGnD,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAC/D,eAAO,MAAM,uBAAuB,4BAA4B,CAAC;AACjE,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAC/D,eAAO,MAAM,yBAAyB,8BAA8B,CAAC;AACrE,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;AACvE,eAAO,MAAM,yBAAyB,8BAA8B,CAAC;AACrE,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,OAAO,mBAAmB,CAAC;AACxC,eAAO,MAAM,OAAO,YAAY,CAAC;AAGjC,eAAO,MAAM,SAAS,cAAc,CAAC;AAErC;;;GAGG;AACH,eAAO,MAAM,SAAS,SAAU,MAAM,EAAE,OAgBvC,CAAC"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseTags = exports.SPAN_TYPE = exports.GIT_TAG = exports.GIT_SHA = exports.GIT_COMMIT_MESSAGE = exports.GIT_COMMIT_COMMITTER_NAME = exports.GIT_COMMIT_COMMITTER_EMAIL = exports.GIT_COMMIT_COMMITTER_DATE = exports.GIT_COMMIT_AUTHOR_NAME = exports.GIT_COMMIT_AUTHOR_EMAIL = exports.GIT_COMMIT_AUTHOR_DATE = exports.GIT_BRANCH = exports.CI_BUILD_LEVEL = exports.CI_LEVEL = exports.CI_STAGE_NAME = exports.CI_JOB_NAME = exports.CI_JOB_URL = exports.GIT_REPOSITORY_URL = exports.CI_WORKSPACE_PATH = exports.CI_PIPELINE_NUMBER = exports.CI_PIPELINE_NAME = exports.CI_PIPELINE_ID = exports.CI_PROVIDER_NAME = exports.CI_PIPELINE_URL = void 0;
4
+ // Build
5
+ exports.CI_PIPELINE_URL = "ci.pipeline.url";
6
+ exports.CI_PROVIDER_NAME = "ci.provider.name";
7
+ exports.CI_PIPELINE_ID = "ci.pipeline.id";
8
+ exports.CI_PIPELINE_NAME = "ci.pipeline.name";
9
+ exports.CI_PIPELINE_NUMBER = "ci.pipeline.number";
10
+ exports.CI_WORKSPACE_PATH = "ci.workspace_path";
11
+ exports.GIT_REPOSITORY_URL = "git.repository_url";
12
+ exports.CI_JOB_URL = "ci.job.url";
13
+ exports.CI_JOB_NAME = "ci.job.name";
14
+ exports.CI_STAGE_NAME = "ci.stage.name";
15
+ exports.CI_LEVEL = "_dd.ci.level";
16
+ // @deprecated TODO: remove this once backend is updated
17
+ exports.CI_BUILD_LEVEL = "_dd.ci.build_level";
18
+ // Git
19
+ exports.GIT_BRANCH = "git.branch";
20
+ exports.GIT_COMMIT_AUTHOR_DATE = "git.commit.author.date";
21
+ exports.GIT_COMMIT_AUTHOR_EMAIL = "git.commit.author.email";
22
+ exports.GIT_COMMIT_AUTHOR_NAME = "git.commit.author.name";
23
+ exports.GIT_COMMIT_COMMITTER_DATE = "git.commit.committer.date";
24
+ exports.GIT_COMMIT_COMMITTER_EMAIL = "git.commit.committer.email";
25
+ exports.GIT_COMMIT_COMMITTER_NAME = "git.commit.committer.name";
26
+ exports.GIT_COMMIT_MESSAGE = "git.commit.message";
27
+ exports.GIT_SHA = "git.commit.sha";
28
+ exports.GIT_TAG = "git.tag";
29
+ // General
30
+ exports.SPAN_TYPE = "span.type";
31
+ /**
32
+ * Receives an array of the form ['key:value', 'key2:value2']
33
+ * and returns an object of the form {key: 'value', key2: 'value2'}
34
+ */
35
+ const parseTags = (tags) => {
36
+ try {
37
+ return tags.reduce((acc, keyValuePair) => {
38
+ if (!keyValuePair.includes(":")) {
39
+ return acc;
40
+ }
41
+ const [key, value] = keyValuePair.split(":");
42
+ return Object.assign(Object.assign({}, acc), { [key]: value });
43
+ }, {});
44
+ }
45
+ catch (e) {
46
+ return {};
47
+ }
48
+ };
49
+ exports.parseTags = parseTags;
50
+ //# sourceMappingURL=tags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tags.js","sourceRoot":"","sources":["../../../src/helpers/tags.ts"],"names":[],"mappings":";;;AAAA,QAAQ;AACK,QAAA,eAAe,GAAG,iBAAiB,CAAC;AACpC,QAAA,gBAAgB,GAAG,kBAAkB,CAAC;AACtC,QAAA,cAAc,GAAG,gBAAgB,CAAC;AAClC,QAAA,gBAAgB,GAAG,kBAAkB,CAAC;AACtC,QAAA,kBAAkB,GAAG,oBAAoB,CAAC;AAC1C,QAAA,iBAAiB,GAAG,mBAAmB,CAAC;AACxC,QAAA,kBAAkB,GAAG,oBAAoB,CAAC;AAC1C,QAAA,UAAU,GAAG,YAAY,CAAC;AAC1B,QAAA,WAAW,GAAG,aAAa,CAAC;AAC5B,QAAA,aAAa,GAAG,eAAe,CAAC;AAChC,QAAA,QAAQ,GAAG,cAAc,CAAC;AACvC,wDAAwD;AAC3C,QAAA,cAAc,GAAG,oBAAoB,CAAC;AAEnD,MAAM;AACO,QAAA,UAAU,GAAG,YAAY,CAAC;AAC1B,QAAA,sBAAsB,GAAG,wBAAwB,CAAC;AAClD,QAAA,uBAAuB,GAAG,yBAAyB,CAAC;AACpD,QAAA,sBAAsB,GAAG,wBAAwB,CAAC;AAClD,QAAA,yBAAyB,GAAG,2BAA2B,CAAC;AACxD,QAAA,0BAA0B,GAAG,4BAA4B,CAAC;AAC1D,QAAA,yBAAyB,GAAG,2BAA2B,CAAC;AACxD,QAAA,kBAAkB,GAAG,oBAAoB,CAAC;AAC1C,QAAA,OAAO,GAAG,gBAAgB,CAAC;AAC3B,QAAA,OAAO,GAAG,SAAS,CAAC;AAEjC,UAAU;AACG,QAAA,SAAS,GAAG,WAAW,CAAC;AAErC;;;GAGG;AACI,MAAM,SAAS,GAAG,CAAC,IAAc,EAAE,EAAE;IAC1C,IAAI;QACF,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE;YACvC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAC/B,OAAO,GAAG,CAAC;aACZ;YACD,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAE7C,uCACK,GAAG,KACN,CAAC,GAAG,CAAC,EAAE,KAAK,IACZ;QACJ,CAAC,EAAE,EAAE,CAAC,CAAC;KACR;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,EAAE,CAAC;KACX;AACH,CAAC,CAAC;AAhBW,QAAA,SAAS,aAgBpB"}
@@ -0,0 +1,45 @@
1
+ /// <reference types="node" />
2
+ import FormData from "form-data";
3
+ import { ReadStream } from "fs";
4
+ import { ApiKeyValidator } from "./apikey";
5
+ import { RequestBuilder } from "./interfaces";
6
+ /** Multipart payload destined to be sent to Datadog's API
7
+ */
8
+ export interface MultipartPayload {
9
+ content: Map<string, MultipartValue>;
10
+ }
11
+ export interface MultipartValue {
12
+ options?: FormData.AppendOptions | string;
13
+ value: string | ReadStream;
14
+ }
15
+ export interface UploadOptions {
16
+ /** ApiKeyValidator (optional) throws an InvalidConfigurationException when upload fails because
17
+ * of an invalid API key. Callers should most likely catch this exception and display it as a
18
+ * nice error message.
19
+ */
20
+ apiKeyValidator?: ApiKeyValidator;
21
+ /** Retries is the amount of upload retries before giving up. Some requests are never retried
22
+ * (400, 413).
23
+ */
24
+ retries: number;
25
+ /** Callback when upload fails (retries are not considered as failure)
26
+ */
27
+ onError(error: Error): void;
28
+ /** Callback to execute before retries
29
+ */
30
+ onRetry(error: Error, attempts: number): void;
31
+ /** Callback to execute before upload.
32
+ */
33
+ onUpload(): void;
34
+ }
35
+ export declare enum UploadStatus {
36
+ Success = 0,
37
+ Failure = 1,
38
+ Skipped = 2
39
+ }
40
+ /** Upload a MultipartPayload to Datadog's API using the provided RequestBuilder.
41
+ * This handles retries as well as logging information about upload if a logger is provided in
42
+ * the options
43
+ */
44
+ export declare const upload: (requestBuilder: RequestBuilder) => (payload: MultipartPayload, opts: UploadOptions) => Promise<UploadStatus>;
45
+ //# sourceMappingURL=upload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../src/helpers/upload.ts"],"names":[],"mappings":";AAAA,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C;GACG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,QAAQ,CAAC,aAAa,GAAG,MAAM,CAAC;IAC1C,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAElC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;OACG;IACH,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAE5B;OACG;IACH,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9C;OACG;IACH,QAAQ,IAAI,IAAI,CAAC;CAClB;AAED,oBAAY,YAAY;IACtB,OAAO,IAAA;IACP,OAAO,IAAA;IACP,OAAO,IAAA;CACR;AAED;;;GAGG;AACH,eAAO,MAAM,MAAM,mBACA,cAAc,eACf,gBAAgB,QAAQ,aAAa,KAAG,QAAQ,YAAY,CAwB3E,CAAC"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.upload = exports.UploadStatus = void 0;
16
+ const form_data_1 = __importDefault(require("form-data"));
17
+ const retry_1 = require("./retry");
18
+ var UploadStatus;
19
+ (function (UploadStatus) {
20
+ UploadStatus[UploadStatus["Success"] = 0] = "Success";
21
+ UploadStatus[UploadStatus["Failure"] = 1] = "Failure";
22
+ UploadStatus[UploadStatus["Skipped"] = 2] = "Skipped";
23
+ })(UploadStatus = exports.UploadStatus || (exports.UploadStatus = {}));
24
+ /** Upload a MultipartPayload to Datadog's API using the provided RequestBuilder.
25
+ * This handles retries as well as logging information about upload if a logger is provided in
26
+ * the options
27
+ */
28
+ const upload = (requestBuilder) => (payload, opts) => __awaiter(void 0, void 0, void 0, function* () {
29
+ opts.onUpload();
30
+ try {
31
+ yield (0, retry_1.retryRequest)(() => uploadMultipart(requestBuilder, payload), {
32
+ onRetry: opts.onRetry,
33
+ retries: opts.retries,
34
+ });
35
+ return UploadStatus.Success;
36
+ }
37
+ catch (error) {
38
+ if (opts.apiKeyValidator) {
39
+ // Raise an exception in case of invalid API key
40
+ yield opts.apiKeyValidator.verifyApiKey(error);
41
+ }
42
+ if (error.response && error.response.statusText) {
43
+ // Rewrite error to have formatted error string
44
+ opts.onError(new Error(`${error.message} (${error.response.statusText})`));
45
+ }
46
+ else {
47
+ // Default error handling
48
+ opts.onError(error);
49
+ }
50
+ return UploadStatus.Failure;
51
+ }
52
+ });
53
+ exports.upload = upload;
54
+ // Dependency follows-redirects sets a default maxBodyLength of 10 MB https://github.com/follow-redirects/follow-redirects/blob/b774a77e582b97174813b3eaeb86931becba69db/index.js#L391
55
+ // We don't want any hard limit enforced by the CLI, the backend will enforce a max size by returning 413 errors.
56
+ const maxBodyLength = Infinity;
57
+ const uploadMultipart = (request, payload) => __awaiter(void 0, void 0, void 0, function* () {
58
+ const form = new form_data_1.default();
59
+ payload.content.forEach((value, key) => {
60
+ form.append(key, value.value, value.options);
61
+ });
62
+ return request({
63
+ data: form,
64
+ headers: form.getHeaders(),
65
+ maxBodyLength,
66
+ method: "POST",
67
+ url: "v1/input",
68
+ });
69
+ });
70
+ //# sourceMappingURL=upload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../src/helpers/upload.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,0DAAiC;AAIjC,mCAAuC;AAsCvC,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,qDAAO,CAAA;IACP,qDAAO,CAAA;IACP,qDAAO,CAAA;AACT,CAAC,EAJW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAIvB;AAED;;;GAGG;AACI,MAAM,MAAM,GACjB,CAAC,cAA8B,EAAE,EAAE,CACnC,CAAO,OAAyB,EAAE,IAAmB,EAAyB,EAAE;IAC9E,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChB,IAAI;QACF,MAAM,IAAA,oBAAY,EAAC,GAAG,EAAE,CAAC,eAAe,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE;YACjE,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC,OAAO,CAAC;KAC7B;IAAC,OAAO,KAAU,EAAE;QACnB,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,gDAAgD;YAChD,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SAChD;QACD,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE;YAC/C,+CAA+C;YAC/C,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;SAC5E;aAAM;YACL,yBAAyB;YACzB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACrB;QAED,OAAO,YAAY,CAAC,OAAO,CAAC;KAC7B;AACH,CAAC,CAAA,CAAC;AA1BS,QAAA,MAAM,UA0Bf;AAEJ,sLAAsL;AACtL,iHAAiH;AACjH,MAAM,aAAa,GAAG,QAAQ,CAAC;AAE/B,MAAM,eAAe,GAAG,CAAO,OAAuB,EAAE,OAAyB,EAAE,EAAE;IACnF,MAAM,IAAI,GAAG,IAAI,mBAAQ,EAAE,CAAC;IAC5B,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAqB,EAAE,GAAW,EAAE,EAAE;QAC7D,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;QACb,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;QAC1B,aAAa;QACb,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,UAAU;KAChB,CAAC,CAAC;AACL,CAAC,CAAA,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { AxiosRequestConfig } from "axios";
2
+ import ProxyAgent from "proxy-agent";
3
+ import type { SpanTags } from "./interfaces";
4
+ export declare const pick: <T extends object, K extends keyof T>(base: T, keys: K[]) => Partial<T>;
5
+ export declare const getConfig: (configPath: string) => Promise<any>;
6
+ declare type ProxyType = "http" | "https" | "socks" | "socks4" | "socks4a" | "socks5" | "socks5h" | "pac+data" | "pac+file" | "pac+ftp" | "pac+http" | "pac+https";
7
+ export interface ProxyConfiguration {
8
+ auth?: {
9
+ password: string;
10
+ username: string;
11
+ };
12
+ host?: string;
13
+ port?: number;
14
+ protocol: ProxyType;
15
+ }
16
+ export declare const getProxyUrl: (options?: ProxyConfiguration | undefined) => string;
17
+ export interface RequestOptions {
18
+ apiKey: string;
19
+ appKey?: string;
20
+ baseUrl: string;
21
+ headers?: Map<string, string>;
22
+ overrideUrl?: string;
23
+ proxyOpts?: ProxyConfiguration;
24
+ }
25
+ export declare const getRequestBuilder: (options: RequestOptions) => (args: AxiosRequestConfig) => import("axios").AxiosPromise<any>;
26
+ export declare const getProxyAgent: (proxyOpts?: ProxyConfiguration | undefined) => ReturnType<typeof ProxyAgent>;
27
+ export declare const getApiHostForSite: (site: string) => string;
28
+ export declare const buildPath: (...args: string[]) => string;
29
+ export declare const removeEmptyValues: (tags: SpanTags) => {};
30
+ export {};
31
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/helpers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAoB,MAAM,OAAO,CAAC;AAE7D,OAAO,UAAU,MAAM,aAAa,CAAC;AAErC,OAAO,KAAK,EAAW,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEtD,eAAO,MAAM,IAAI,yEAShB,CAAC;AAEF,eAAO,MAAM,SAAS,eAAsB,MAAM,iBAIjD,CAAC;AAEF,aAAK,SAAS,GACV,MAAM,GACN,OAAO,GACP,OAAO,GACP,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,SAAS,GACT,UAAU,GACV,UAAU,GACV,SAAS,GACT,UAAU,GACV,WAAW,CAAC;AAEhB,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE;QACL,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,WAAW,gDAAmC,MAc1D,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC;AAED,eAAO,MAAM,iBAAiB,YAAa,cAAc,YAsCzC,kBAAkB,sCACjC,CAAC;AAEF,eAAO,MAAM,aAAa,kDAAqC,WAAW,iBAAiB,CAI1F,CAAC;AAEF,eAAO,MAAM,iBAAiB,SAAU,MAAM,WAS7C,CAAC;AAIF,eAAO,MAAM,SAAS,YAAa,MAAM,EAAE,WAc7B,CAAC;AAEf,eAAO,MAAM,iBAAiB,SAAU,QAAQ,OAUxC,CAAC"}
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.removeEmptyValues = exports.buildPath = exports.getApiHostForSite = exports.getProxyAgent = exports.getRequestBuilder = exports.getProxyUrl = exports.getConfig = exports.pick = void 0;
16
+ const axios_1 = __importDefault(require("axios"));
17
+ const fs_1 = __importDefault(require("fs"));
18
+ const proxy_agent_1 = __importDefault(require("proxy-agent"));
19
+ const util_1 = require("util");
20
+ const pick = (base, keys) => {
21
+ const definedKeys = keys.filter((key) => !!base[key]);
22
+ const pickedObject = {};
23
+ for (const key of definedKeys) {
24
+ pickedObject[key] = base[key];
25
+ }
26
+ return pickedObject;
27
+ };
28
+ exports.pick = pick;
29
+ const getConfig = (configPath) => __awaiter(void 0, void 0, void 0, function* () {
30
+ const configFile = yield (0, util_1.promisify)(fs_1.default.readFile)(configPath, "utf-8");
31
+ return JSON.parse(configFile);
32
+ });
33
+ exports.getConfig = getConfig;
34
+ const getProxyUrl = (options) => {
35
+ if (!options) {
36
+ return "";
37
+ }
38
+ const { auth, host, port, protocol } = options;
39
+ if (!host || !port) {
40
+ return "";
41
+ }
42
+ const authFragment = auth ? `${auth.username}:${auth.password}@` : "";
43
+ return `${protocol}://${authFragment}${host}:${port}`;
44
+ };
45
+ exports.getProxyUrl = getProxyUrl;
46
+ const getRequestBuilder = (options) => {
47
+ const { apiKey, appKey, baseUrl, overrideUrl, proxyOpts } = options;
48
+ const overrideArgs = (args) => {
49
+ const newArguments = Object.assign(Object.assign({}, args), { headers: Object.assign(Object.assign({ "DD-API-KEY": apiKey }, (appKey ? { "DD-APPLICATION-KEY": appKey } : {})), args.headers) });
50
+ if (overrideUrl !== undefined) {
51
+ newArguments.url = overrideUrl;
52
+ }
53
+ const proxyAgent = (0, exports.getProxyAgent)(proxyOpts);
54
+ if (proxyAgent) {
55
+ newArguments.httpAgent = proxyAgent;
56
+ newArguments.httpsAgent = proxyAgent;
57
+ }
58
+ if (options.headers !== undefined) {
59
+ options.headers.forEach((value, key) => {
60
+ newArguments.headers[key] = value;
61
+ });
62
+ }
63
+ return newArguments;
64
+ };
65
+ const baseConfiguration = {
66
+ baseURL: baseUrl,
67
+ // Disabling proxy in Axios config as it's not working properly
68
+ // the passed httpAgent/httpsAgent are handling the proxy instead.
69
+ proxy: false,
70
+ };
71
+ return (args) => axios_1.default.create(baseConfiguration)(overrideArgs(args));
72
+ };
73
+ exports.getRequestBuilder = getRequestBuilder;
74
+ const getProxyAgent = (proxyOpts) => {
75
+ const proxyUrlFromConfiguration = (0, exports.getProxyUrl)(proxyOpts);
76
+ return new proxy_agent_1.default(proxyUrlFromConfiguration);
77
+ };
78
+ exports.getProxyAgent = getProxyAgent;
79
+ const getApiHostForSite = (site) => {
80
+ switch (site) {
81
+ case "datad0g.com":
82
+ return `app.${site}`;
83
+ case "datadoghq.com":
84
+ case "datadoghq.eu":
85
+ default:
86
+ return `api.${site}`;
87
+ }
88
+ };
89
+ exports.getApiHostForSite = getApiHostForSite;
90
+ // The buildPath function is used to concatenate several paths. The goal is to have a function working for both unix
91
+ // paths and URL whereas standard path.join does not work with both.
92
+ const buildPath = (...args) => args
93
+ .map((part, i) => {
94
+ if (i === 0) {
95
+ // For the first part, drop all / at the end of the path
96
+ return part.trim().replace(/[\/]*$/g, "");
97
+ }
98
+ else {
99
+ // For the following parts, remove all / at the beginning and at the end
100
+ return part.trim().replace(/(^[\/]*|[\/]*$)/g, "");
101
+ }
102
+ })
103
+ // Filter out emtpy parts
104
+ .filter((x) => x.length)
105
+ // Join all these parts with /
106
+ .join("/");
107
+ exports.buildPath = buildPath;
108
+ const removeEmptyValues = (tags) => Object.keys(tags).reduce((filteredTags, tag) => {
109
+ if (!tags[tag]) {
110
+ return filteredTags;
111
+ }
112
+ return Object.assign(Object.assign({}, filteredTags), { [tag]: tags[tag] });
113
+ }, {});
114
+ exports.removeEmptyValues = removeEmptyValues;
115
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/helpers/utils.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,10 @@
1
- export {};
1
+ import { FunctionDefinition } from "serverless";
2
+ export interface ExtendedFunctionDefinition extends FunctionDefinition {
3
+ tags?: {
4
+ [key: string]: string;
5
+ };
6
+ environment?: {
7
+ [key: string]: string;
8
+ };
9
+ }
2
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAwBhD,MAAM,WAAW,0BAA2B,SAAQ,kBAAkB;IACpE,IAAI,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACjC,WAAW,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACzC"}