@datadog/datadog-ci-base 5.7.0 → 5.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.d.ts +13 -1
- package/dist/cli.js +76 -33
- package/dist/cli.js.map +1 -1
- package/dist/commands/aas/common.d.ts +13 -2
- package/dist/commands/aas/common.js +46 -24
- package/dist/commands/aas/common.js.map +1 -1
- package/dist/commands/aas/instrument.js +1 -1
- package/dist/commands/aas/instrument.js.map +1 -1
- package/dist/commands/aas/uninstrument.js +1 -1
- package/dist/commands/aas/uninstrument.js.map +1 -1
- package/dist/commands/ci-env/cli.d.ts +2 -0
- package/dist/commands/ci-env/cli.js +10 -0
- package/dist/commands/ci-env/cli.js.map +1 -0
- package/dist/commands/ci-env/read.d.ts +7 -0
- package/dist/commands/ci-env/read.js +176 -0
- package/dist/commands/ci-env/read.js.map +1 -0
- package/dist/commands/cloud-run/constants.js +1 -2
- package/dist/commands/cloud-run/constants.js.map +1 -1
- package/dist/commands/container-app/common.js +10 -11
- package/dist/commands/container-app/common.js.map +1 -1
- package/dist/commands/coverage/upload.d.ts +2 -0
- package/dist/commands/coverage/upload.js +6 -0
- package/dist/commands/coverage/upload.js.map +1 -1
- package/dist/commands/elf-symbols/cli.d.ts +2 -0
- package/dist/commands/elf-symbols/cli.js +10 -0
- package/dist/commands/elf-symbols/cli.js.map +1 -0
- package/dist/commands/elf-symbols/elf-constants.d.ts +256 -0
- package/dist/commands/elf-symbols/elf-constants.js +465 -0
- package/dist/commands/elf-symbols/elf-constants.js.map +1 -0
- package/dist/commands/elf-symbols/elf.d.ts +105 -0
- package/dist/commands/elf-symbols/elf.js +431 -0
- package/dist/commands/elf-symbols/elf.js.map +1 -0
- package/dist/commands/elf-symbols/helpers.d.ts +4 -0
- package/dist/commands/elf-symbols/helpers.js +29 -0
- package/dist/commands/elf-symbols/helpers.js.map +1 -0
- package/dist/commands/elf-symbols/interfaces.d.ts +18 -0
- package/dist/commands/elf-symbols/interfaces.js +7 -0
- package/dist/commands/elf-symbols/interfaces.js.map +1 -0
- package/dist/commands/elf-symbols/renderer.d.ts +19 -0
- package/dist/commands/elf-symbols/renderer.js +87 -0
- package/dist/commands/elf-symbols/renderer.js.map +1 -0
- package/dist/commands/elf-symbols/upload.d.ts +31 -0
- package/dist/commands/elf-symbols/upload.js +412 -0
- package/dist/commands/elf-symbols/upload.js.map +1 -0
- package/dist/commands/flutter-symbols/cli.d.ts +2 -0
- package/dist/commands/flutter-symbols/cli.js +10 -0
- package/dist/commands/flutter-symbols/cli.js.map +1 -0
- package/dist/commands/flutter-symbols/helpers.d.ts +8 -0
- package/dist/commands/flutter-symbols/helpers.js +51 -0
- package/dist/commands/flutter-symbols/helpers.js.map +1 -0
- package/dist/commands/flutter-symbols/interfaces.d.ts +17 -0
- package/dist/commands/flutter-symbols/interfaces.js +10 -0
- package/dist/commands/flutter-symbols/interfaces.js.map +1 -0
- package/dist/commands/flutter-symbols/renderer.d.ts +23 -0
- package/dist/commands/flutter-symbols/renderer.js +106 -0
- package/dist/commands/flutter-symbols/renderer.js.map +1 -0
- package/dist/commands/flutter-symbols/upload.d.ts +44 -0
- package/dist/commands/flutter-symbols/upload.js +510 -0
- package/dist/commands/flutter-symbols/upload.js.map +1 -0
- package/dist/commands/lambda/cli.d.ts +2 -1
- package/dist/commands/lambda/cli.js +2 -0
- package/dist/commands/lambda/cli.js.map +1 -1
- package/dist/commands/lambda/cloudwatch.d.ts +15 -0
- package/dist/commands/lambda/cloudwatch.js +77 -0
- package/dist/commands/lambda/cloudwatch.js.map +1 -0
- package/dist/commands/measure/cli.d.ts +2 -0
- package/dist/commands/measure/cli.js +10 -0
- package/dist/commands/measure/cli.js.map +1 -0
- package/dist/commands/measure/measure.d.ts +18 -0
- package/dist/commands/measure/measure.js +171 -0
- package/dist/commands/measure/measure.js.map +1 -0
- package/dist/commands/pe-symbols/breakpad.d.ts +2 -0
- package/dist/commands/pe-symbols/breakpad.js +159 -0
- package/dist/commands/pe-symbols/breakpad.js.map +1 -0
- package/dist/commands/pe-symbols/cli.d.ts +2 -0
- package/dist/commands/pe-symbols/cli.js +10 -0
- package/dist/commands/pe-symbols/cli.js.map +1 -0
- package/dist/commands/pe-symbols/helpers.d.ts +4 -0
- package/dist/commands/pe-symbols/helpers.js +30 -0
- package/dist/commands/pe-symbols/helpers.js.map +1 -0
- package/dist/commands/pe-symbols/interfaces.d.ts +17 -0
- package/dist/commands/pe-symbols/interfaces.js +7 -0
- package/dist/commands/pe-symbols/interfaces.js.map +1 -0
- package/dist/commands/pe-symbols/pe-constants.d.ts +51 -0
- package/dist/commands/pe-symbols/pe-constants.js +160 -0
- package/dist/commands/pe-symbols/pe-constants.js.map +1 -0
- package/dist/commands/pe-symbols/pe.d.ts +40 -0
- package/dist/commands/pe-symbols/pe.js +249 -0
- package/dist/commands/pe-symbols/pe.js.map +1 -0
- package/dist/commands/pe-symbols/renderer.d.ts +19 -0
- package/dist/commands/pe-symbols/renderer.js +87 -0
- package/dist/commands/pe-symbols/renderer.js.map +1 -0
- package/dist/commands/pe-symbols/upload.d.ts +34 -0
- package/dist/commands/pe-symbols/upload.js +457 -0
- package/dist/commands/pe-symbols/upload.js.map +1 -0
- package/dist/commands/react-native/cli.d.ts +5 -0
- package/dist/commands/react-native/cli.js +16 -0
- package/dist/commands/react-native/cli.js.map +1 -0
- package/dist/commands/react-native/codepush.d.ts +29 -0
- package/dist/commands/react-native/codepush.js +176 -0
- package/dist/commands/react-native/codepush.js.map +1 -0
- package/dist/commands/react-native/errors.d.ts +9 -0
- package/dist/commands/react-native/errors.js +34 -0
- package/dist/commands/react-native/errors.js.map +1 -0
- package/dist/commands/react-native/injectDebugId.d.ts +42 -0
- package/dist/commands/react-native/injectDebugId.js +252 -0
- package/dist/commands/react-native/injectDebugId.js.map +1 -0
- package/dist/commands/react-native/interfaces.d.ts +20 -0
- package/dist/commands/react-native/interfaces.js +93 -0
- package/dist/commands/react-native/interfaces.js.map +1 -0
- package/dist/commands/react-native/renderer.d.ts +20 -0
- package/dist/commands/react-native/renderer.js +111 -0
- package/dist/commands/react-native/renderer.js.map +1 -0
- package/dist/commands/react-native/upload.d.ts +30 -0
- package/dist/commands/react-native/upload.js +317 -0
- package/dist/commands/react-native/upload.js.map +1 -0
- package/dist/commands/react-native/utils.d.ts +4 -0
- package/dist/commands/react-native/utils.js +35 -0
- package/dist/commands/react-native/utils.js.map +1 -0
- package/dist/commands/react-native/validation.d.ts +6 -0
- package/dist/commands/react-native/validation.js +24 -0
- package/dist/commands/react-native/validation.js.map +1 -0
- package/dist/commands/react-native/xcode.d.ts +58 -0
- package/dist/commands/react-native/xcode.js +561 -0
- package/dist/commands/react-native/xcode.js.map +1 -0
- package/dist/commands/sourcemaps/cli.d.ts +2 -0
- package/dist/commands/sourcemaps/cli.js +10 -0
- package/dist/commands/sourcemaps/cli.js.map +1 -0
- package/dist/commands/sourcemaps/interfaces.d.ts +18 -0
- package/dist/commands/sourcemaps/interfaces.js +59 -0
- package/dist/commands/sourcemaps/interfaces.js.map +1 -0
- package/dist/commands/sourcemaps/renderer.d.ts +13 -0
- package/dist/commands/sourcemaps/renderer.js +93 -0
- package/dist/commands/sourcemaps/renderer.js.map +1 -0
- package/dist/commands/sourcemaps/upload.d.ts +29 -0
- package/dist/commands/sourcemaps/upload.js +342 -0
- package/dist/commands/sourcemaps/upload.js.map +1 -0
- package/dist/commands/sourcemaps/utils.d.ts +3 -0
- package/dist/commands/sourcemaps/utils.js +73 -0
- package/dist/commands/sourcemaps/utils.js.map +1 -0
- package/dist/commands/sourcemaps/validation.d.ts +7 -0
- package/dist/commands/sourcemaps/validation.js +41 -0
- package/dist/commands/sourcemaps/validation.js.map +1 -0
- package/dist/commands/span/cli.d.ts +2 -0
- package/dist/commands/span/cli.js +10 -0
- package/dist/commands/span/cli.js.map +1 -0
- package/dist/commands/span/span.d.ts +10 -0
- package/dist/commands/span/span.js +112 -0
- package/dist/commands/span/span.js.map +1 -0
- package/dist/commands/terraform/cli.d.ts +2 -0
- package/dist/commands/terraform/cli.js +10 -0
- package/dist/commands/terraform/cli.js.map +1 -0
- package/dist/commands/terraform/upload.d.ts +14 -0
- package/dist/commands/terraform/upload.js +93 -0
- package/dist/commands/terraform/upload.js.map +1 -0
- package/dist/commands/trace/api.d.ts +6 -0
- package/dist/commands/trace/api.js +38 -0
- package/dist/commands/trace/api.js.map +1 -0
- package/dist/commands/trace/cli.d.ts +2 -0
- package/dist/commands/trace/cli.js +10 -0
- package/dist/commands/trace/cli.js.map +1 -0
- package/dist/commands/trace/helper.d.ts +16 -0
- package/dist/commands/trace/helper.js +125 -0
- package/dist/commands/trace/helper.js.map +1 -0
- package/dist/commands/trace/interfaces.d.ts +18 -0
- package/dist/commands/trace/interfaces.js +14 -0
- package/dist/commands/trace/interfaces.js.map +1 -0
- package/dist/commands/trace/test-utils.d.ts +4 -0
- package/dist/commands/trace/test-utils.js +156 -0
- package/dist/commands/trace/test-utils.js.map +1 -0
- package/dist/commands/trace/trace.d.ts +10 -0
- package/dist/commands/trace/trace.js +110 -0
- package/dist/commands/trace/trace.js.map +1 -0
- package/dist/commands/unity-symbols/cli.d.ts +2 -0
- package/dist/commands/unity-symbols/cli.js +10 -0
- package/dist/commands/unity-symbols/cli.js.map +1 -0
- package/dist/commands/unity-symbols/helpers.d.ts +4 -0
- package/dist/commands/unity-symbols/helpers.js +29 -0
- package/dist/commands/unity-symbols/helpers.js.map +1 -0
- package/dist/commands/unity-symbols/interfaces.d.ts +14 -0
- package/dist/commands/unity-symbols/interfaces.js +9 -0
- package/dist/commands/unity-symbols/interfaces.js.map +1 -0
- package/dist/commands/unity-symbols/renderer.d.ts +19 -0
- package/dist/commands/unity-symbols/renderer.js +88 -0
- package/dist/commands/unity-symbols/renderer.js.map +1 -0
- package/dist/commands/unity-symbols/upload.d.ts +32 -0
- package/dist/commands/unity-symbols/upload.js +392 -0
- package/dist/commands/unity-symbols/upload.js.map +1 -0
- package/dist/commands/version/cli.d.ts +2 -0
- package/dist/commands/version/cli.js +10 -0
- package/dist/commands/version/cli.js.map +1 -0
- package/dist/commands/version/version.d.ts +6 -0
- package/dist/commands/version/version.js +31 -0
- package/dist/commands/version/version.js.map +1 -0
- package/dist/helpers/ci.js +50 -5
- package/dist/helpers/ci.js.map +1 -1
- package/dist/helpers/plugin.js +1 -1
- package/dist/helpers/plugin.js.map +1 -1
- package/dist/helpers/serverless/azure.d.ts +2 -0
- package/dist/helpers/serverless/azure.js +3 -3
- package/dist/helpers/serverless/azure.js.map +1 -1
- package/dist/helpers/serverless/lambda-layer-versions.d.ts +3 -3
- package/dist/helpers/serverless/lambda-layer-versions.js +3 -3
- package/package.json +23 -17
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.commands = void 0;
|
|
4
|
+
/* eslint-disable import-x/order */
|
|
5
|
+
const upload_1 = require("./upload");
|
|
6
|
+
// prettier-ignore
|
|
7
|
+
exports.commands = [
|
|
8
|
+
upload_1.SourcemapsUploadCommand,
|
|
9
|
+
];
|
|
10
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/commands/sourcemaps/cli.ts"],"names":[],"mappings":";;;AAAA,mCAAmC;AACnC,qCAAgD;AAEhD,kBAAkB;AACL,QAAA,QAAQ,GAAG;IACtB,gCAAuB;CACxB,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { MultipartPayload } from '@datadog/datadog-ci-base/helpers/upload';
|
|
2
|
+
export declare class Sourcemap {
|
|
3
|
+
gitData?: GitData;
|
|
4
|
+
minifiedFilePath: string;
|
|
5
|
+
minifiedPathPrefix?: string;
|
|
6
|
+
minifiedUrl: string;
|
|
7
|
+
relativePath: string;
|
|
8
|
+
sourcemapPath: string;
|
|
9
|
+
constructor(minifiedFilePath: string, minifiedUrl: string, sourcemapPath: string, relativePath: string, minifiedPathPrefix?: string);
|
|
10
|
+
addRepositoryData(gitData: GitData): void;
|
|
11
|
+
asMultipartPayload(cliVersion: string, service: string, version: string, projectPath: string): MultipartPayload;
|
|
12
|
+
private getMetadataPayload;
|
|
13
|
+
}
|
|
14
|
+
export interface GitData {
|
|
15
|
+
gitCommitSha: string;
|
|
16
|
+
gitRepositoryPayload?: string;
|
|
17
|
+
gitRepositoryURL: string;
|
|
18
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Sourcemap = void 0;
|
|
4
|
+
class Sourcemap {
|
|
5
|
+
constructor(minifiedFilePath, minifiedUrl, sourcemapPath, relativePath, minifiedPathPrefix) {
|
|
6
|
+
this.minifiedFilePath = minifiedFilePath;
|
|
7
|
+
this.minifiedPathPrefix = minifiedPathPrefix;
|
|
8
|
+
this.minifiedUrl = minifiedUrl;
|
|
9
|
+
this.relativePath = relativePath;
|
|
10
|
+
this.sourcemapPath = sourcemapPath;
|
|
11
|
+
}
|
|
12
|
+
addRepositoryData(gitData) {
|
|
13
|
+
this.gitData = gitData;
|
|
14
|
+
}
|
|
15
|
+
asMultipartPayload(cliVersion, service, version, projectPath) {
|
|
16
|
+
const content = new Map([
|
|
17
|
+
['event', this.getMetadataPayload(cliVersion, service, version, projectPath)],
|
|
18
|
+
['source_map', { type: 'file', path: this.sourcemapPath, options: { filename: 'source_map' } }],
|
|
19
|
+
['minified_file', { type: 'file', path: this.minifiedFilePath, options: { filename: 'minified_file' } }],
|
|
20
|
+
]);
|
|
21
|
+
if (this.gitData !== undefined && this.gitData.gitRepositoryPayload !== undefined) {
|
|
22
|
+
content.set('repository', {
|
|
23
|
+
type: 'string',
|
|
24
|
+
options: {
|
|
25
|
+
contentType: 'application/json',
|
|
26
|
+
filename: 'repository',
|
|
27
|
+
},
|
|
28
|
+
value: this.gitData.gitRepositoryPayload,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
content,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
getMetadataPayload(cliVersion, service, version, projectPath) {
|
|
36
|
+
const metadata = {
|
|
37
|
+
cli_version: cliVersion,
|
|
38
|
+
minified_url: this.minifiedUrl,
|
|
39
|
+
project_path: projectPath,
|
|
40
|
+
service,
|
|
41
|
+
type: 'js_sourcemap',
|
|
42
|
+
version,
|
|
43
|
+
};
|
|
44
|
+
if (this.gitData !== undefined) {
|
|
45
|
+
metadata.git_repository_url = this.gitData.gitRepositoryURL;
|
|
46
|
+
metadata.git_commit_sha = this.gitData.gitCommitSha;
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
type: 'string',
|
|
50
|
+
options: {
|
|
51
|
+
contentType: 'application/json',
|
|
52
|
+
filename: 'event',
|
|
53
|
+
},
|
|
54
|
+
value: JSON.stringify(metadata),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.Sourcemap = Sourcemap;
|
|
59
|
+
//# sourceMappingURL=interfaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/commands/sourcemaps/interfaces.ts"],"names":[],"mappings":";;;AAEA,MAAa,SAAS;IAQpB,YACE,gBAAwB,EACxB,WAAmB,EACnB,aAAqB,EACrB,YAAoB,EACpB,kBAA2B;QAE3B,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;QACxC,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAA;QAC5C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAChC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;IACpC,CAAC;IAEM,iBAAiB,CAAC,OAAgB;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAEM,kBAAkB,CACvB,UAAkB,EAClB,OAAe,EACf,OAAe,EACf,WAAmB;QAEnB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAyB;YAC9C,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;YAC7E,CAAC,YAAY,EAAE,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,EAAC,QAAQ,EAAE,YAAY,EAAC,EAAC,CAAC;YAC3F,CAAC,eAAe,EAAE,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,EAAC,QAAQ,EAAE,eAAe,EAAC,EAAC,CAAC;SACrG,CAAC,CAAA;QACF,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,KAAK,SAAS,EAAE;YACjF,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE;gBACxB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE;oBACP,WAAW,EAAE,kBAAkB;oBAC/B,QAAQ,EAAE,YAAY;iBACvB;gBACD,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB;aACzC,CAAC,CAAA;SACH;QAED,OAAO;YACL,OAAO;SACR,CAAA;IACH,CAAC;IAEO,kBAAkB,CACxB,UAAkB,EAClB,OAAe,EACf,OAAe,EACf,WAAmB;QAEnB,MAAM,QAAQ,GAAuB;YACnC,WAAW,EAAE,UAAU;YACvB,YAAY,EAAE,IAAI,CAAC,WAAW;YAC9B,YAAY,EAAE,WAAW;YACzB,OAAO;YACP,IAAI,EAAE,cAAc;YACpB,OAAO;SACR,CAAA;QACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;YAC9B,QAAQ,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAA;YAC3D,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAA;SACpD;QAED,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,WAAW,EAAE,kBAAkB;gBAC/B,QAAQ,EAAE,OAAO;aAClB;YACD,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;SAChC,CAAA;IACH,CAAC;CACF;AAjFD,8BAiFC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { UploadStatus } from '@datadog/datadog-ci-base/helpers/upload';
|
|
2
|
+
import { Sourcemap } from './interfaces';
|
|
3
|
+
export declare const renderGitWarning: (errorMessage: string) => string;
|
|
4
|
+
export declare const renderGitDataNotAttachedWarning: (sourcemap: string, errorMessage: string) => string;
|
|
5
|
+
export declare const renderSourcesNotFoundWarning: (sourcemap: string) => string;
|
|
6
|
+
export declare const renderConfigurationError: (error: Error) => string;
|
|
7
|
+
export declare const renderInvalidPrefix: string;
|
|
8
|
+
export declare const renderMinifiedPathPrefixMisusage: (sourcemap: Sourcemap, repeated: string) => string;
|
|
9
|
+
export declare const renderFailedUpload: (sourcemap: Sourcemap, errorMessage: string) => string;
|
|
10
|
+
export declare const renderRetriedUpload: (payload: Sourcemap, errorMessage: string, attempt: number) => string;
|
|
11
|
+
export declare const renderSuccessfulCommand: (statuses: UploadStatus[], duration: number, dryRun: boolean) => string;
|
|
12
|
+
export declare const renderCommandInfo: (basePath: string, minifiedPathPrefix: string, projectPath: string, releaseVersion: string, service: string, poolLimit: number, dryRun: boolean) => string;
|
|
13
|
+
export declare const renderUpload: (sourcemap: Sourcemap) => string;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.renderUpload = exports.renderCommandInfo = exports.renderSuccessfulCommand = exports.renderRetriedUpload = exports.renderFailedUpload = exports.renderMinifiedPathPrefixMisusage = exports.renderInvalidPrefix = exports.renderConfigurationError = exports.renderSourcesNotFoundWarning = exports.renderGitDataNotAttachedWarning = exports.renderGitWarning = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const formatting_1 = require("@datadog/datadog-ci-base/helpers/formatting");
|
|
9
|
+
const upload_1 = require("@datadog/datadog-ci-base/helpers/upload");
|
|
10
|
+
const utils_1 = require("@datadog/datadog-ci-base/helpers/utils");
|
|
11
|
+
const renderGitWarning = (errorMessage) => chalk_1.default.yellow(`${formatting_1.ICONS.WARNING} An error occurred while invoking git: ${errorMessage}
|
|
12
|
+
Make sure the command is running within your git repository to fully leverage Datadog's git integration.
|
|
13
|
+
To ignore this warning use the --disable-git flag.\n`);
|
|
14
|
+
exports.renderGitWarning = renderGitWarning;
|
|
15
|
+
const renderGitDataNotAttachedWarning = (sourcemap, errorMessage) => chalk_1.default.yellow(`${formatting_1.ICONS.WARNING} Could not attach git data for sourcemap ${sourcemap}: ${errorMessage}\n`);
|
|
16
|
+
exports.renderGitDataNotAttachedWarning = renderGitDataNotAttachedWarning;
|
|
17
|
+
const renderSourcesNotFoundWarning = (sourcemap) => chalk_1.default.yellow(`${formatting_1.ICONS.WARNING} No tracked files found for sources contained in ${sourcemap}\n`);
|
|
18
|
+
exports.renderSourcesNotFoundWarning = renderSourcesNotFoundWarning;
|
|
19
|
+
const renderConfigurationError = (error) => chalk_1.default.red(`${formatting_1.ICONS.FAILED} Configuration error: ${error}.\n`);
|
|
20
|
+
exports.renderConfigurationError = renderConfigurationError;
|
|
21
|
+
exports.renderInvalidPrefix = chalk_1.default.red(`${formatting_1.ICONS.FAILED} --minified-path-prefix should either be an URL (such as "http://example.com/static") or an absolute path starting with a / such as "/static"\n`);
|
|
22
|
+
const renderMinifiedPathPrefixMisusage = (sourcemap, repeated) => chalk_1.default.yellow(`${formatting_1.ICONS.WARNING} The --minified-path-prefix flag value "${sourcemap.minifiedPathPrefix}" seems to repeat "${repeated}" which is already present in the path "${sourcemap.relativePath}"\n`);
|
|
23
|
+
exports.renderMinifiedPathPrefixMisusage = renderMinifiedPathPrefixMisusage;
|
|
24
|
+
const renderFailedUpload = (sourcemap, errorMessage) => {
|
|
25
|
+
const sourcemapPathBold = `[${chalk_1.default.bold.dim(sourcemap.sourcemapPath)}]`;
|
|
26
|
+
return chalk_1.default.red(`${formatting_1.ICONS.FAILED} Failed upload sourcemap for ${sourcemapPathBold}: ${errorMessage}\n`);
|
|
27
|
+
};
|
|
28
|
+
exports.renderFailedUpload = renderFailedUpload;
|
|
29
|
+
const renderRetriedUpload = (payload, errorMessage, attempt) => {
|
|
30
|
+
const sourcemapPathBold = `[${chalk_1.default.bold.dim(payload.sourcemapPath)}]`;
|
|
31
|
+
return chalk_1.default.yellow(`[attempt ${attempt}] Retrying sourcemap upload ${sourcemapPathBold}: ${errorMessage}\n`);
|
|
32
|
+
};
|
|
33
|
+
exports.renderRetriedUpload = renderRetriedUpload;
|
|
34
|
+
const renderSuccessfulCommand = (statuses, duration, dryRun) => {
|
|
35
|
+
const results = new Map();
|
|
36
|
+
statuses.forEach((status) => {
|
|
37
|
+
if (!results.has(status)) {
|
|
38
|
+
results.set(status, 0);
|
|
39
|
+
}
|
|
40
|
+
results.set(status, results.get(status) + 1);
|
|
41
|
+
});
|
|
42
|
+
const output = ['', chalk_1.default.bold('Command summary:')];
|
|
43
|
+
if (results.get(upload_1.UploadStatus.Failure)) {
|
|
44
|
+
output.push(chalk_1.default.red(`${formatting_1.ICONS.FAILED} Some sourcemaps have not been uploaded correctly.`));
|
|
45
|
+
}
|
|
46
|
+
else if (results.get(upload_1.UploadStatus.Skipped)) {
|
|
47
|
+
output.push(chalk_1.default.yellow(`${formatting_1.ICONS.WARNING} Some sourcemaps have been skipped.`));
|
|
48
|
+
}
|
|
49
|
+
else if (results.get(upload_1.UploadStatus.Success)) {
|
|
50
|
+
if (dryRun) {
|
|
51
|
+
output.push(chalk_1.default.green(`${formatting_1.ICONS.SUCCESS} [DRYRUN] Handled ${(0, utils_1.pluralize)(results.get(upload_1.UploadStatus.Success), 'sourcemap', 'sourcemaps')} with success in ${duration} seconds.`));
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
output.push(chalk_1.default.green(`${formatting_1.ICONS.SUCCESS} Uploaded ${(0, utils_1.pluralize)(results.get(upload_1.UploadStatus.Success), 'sourcemap', 'sourcemaps')} in ${duration} seconds.`));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
output.push(chalk_1.default.yellow(`${formatting_1.ICONS.WARNING} No sourcemaps detected. Did you specify the correct directory?`));
|
|
59
|
+
}
|
|
60
|
+
if (results.get(upload_1.UploadStatus.Failure) || results.get(upload_1.UploadStatus.Skipped)) {
|
|
61
|
+
output.push(`Details about the ${(0, utils_1.pluralize)(statuses.length, 'found sourcemap', 'found sourcemaps')}:`);
|
|
62
|
+
if (results.get(upload_1.UploadStatus.Success)) {
|
|
63
|
+
output.push(` * ${(0, utils_1.pluralize)(results.get(upload_1.UploadStatus.Success), 'sourcemap', 'sourcemaps')} successfully uploaded`);
|
|
64
|
+
}
|
|
65
|
+
if (results.get(upload_1.UploadStatus.Skipped)) {
|
|
66
|
+
output.push(chalk_1.default.yellow(` * ${(0, utils_1.pluralize)(results.get(upload_1.UploadStatus.Skipped), 'sourcemap was', 'sourcemaps were')} skipped`));
|
|
67
|
+
}
|
|
68
|
+
if (results.get(upload_1.UploadStatus.Failure)) {
|
|
69
|
+
output.push(chalk_1.default.red(` * ${(0, utils_1.pluralize)(results.get(upload_1.UploadStatus.Failure), 'sourcemap', 'sourcemaps')} failed to upload`));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return output.join('\n') + '\n';
|
|
73
|
+
};
|
|
74
|
+
exports.renderSuccessfulCommand = renderSuccessfulCommand;
|
|
75
|
+
const renderCommandInfo = (basePath, minifiedPathPrefix, projectPath, releaseVersion, service, poolLimit, dryRun) => {
|
|
76
|
+
let fullStr = '';
|
|
77
|
+
if (dryRun) {
|
|
78
|
+
fullStr += chalk_1.default.yellow(`${formatting_1.ICONS.WARNING} DRY-RUN MODE ENABLED. WILL NOT UPLOAD SOURCEMAPS\n`);
|
|
79
|
+
}
|
|
80
|
+
const startStr = chalk_1.default.green(`Starting upload with concurrency ${poolLimit}. \n`);
|
|
81
|
+
fullStr += startStr;
|
|
82
|
+
const basePathStr = chalk_1.default.green(`Will look for sourcemaps in ${basePath}\n`);
|
|
83
|
+
fullStr += basePathStr;
|
|
84
|
+
const minifiedPathPrefixStr = chalk_1.default.green(`Will match JS files for errors on files starting with ${minifiedPathPrefix}\n`);
|
|
85
|
+
fullStr += minifiedPathPrefixStr;
|
|
86
|
+
const serviceVersionProjectPathStr = chalk_1.default.green(`version: ${releaseVersion} service: ${service} project path: ${projectPath}\n`);
|
|
87
|
+
fullStr += serviceVersionProjectPathStr;
|
|
88
|
+
return fullStr;
|
|
89
|
+
};
|
|
90
|
+
exports.renderCommandInfo = renderCommandInfo;
|
|
91
|
+
const renderUpload = (sourcemap) => `Uploading sourcemap ${sourcemap.sourcemapPath} for JS file available at ${sourcemap.minifiedUrl}\n`;
|
|
92
|
+
exports.renderUpload = renderUpload;
|
|
93
|
+
//# sourceMappingURL=renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../../src/commands/sourcemaps/renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { BaseCommand } from '@datadog/datadog-ci-base';
|
|
2
|
+
export declare class SourcemapsUploadCommand extends BaseCommand {
|
|
3
|
+
static paths: string[][];
|
|
4
|
+
static usage: import("clipanion").Usage;
|
|
5
|
+
private basePath;
|
|
6
|
+
private disableGit;
|
|
7
|
+
private quiet;
|
|
8
|
+
private dryRun;
|
|
9
|
+
private maxConcurrency;
|
|
10
|
+
private minifiedPathPrefix;
|
|
11
|
+
private projectPath;
|
|
12
|
+
private releaseVersion;
|
|
13
|
+
private repositoryURL;
|
|
14
|
+
private service;
|
|
15
|
+
private cliVersion;
|
|
16
|
+
private fips;
|
|
17
|
+
private fipsIgnoreError;
|
|
18
|
+
private config;
|
|
19
|
+
execute(): Promise<1 | 0>;
|
|
20
|
+
private addRepositoryDataToPayloads;
|
|
21
|
+
private getMatchingSourcemapFiles;
|
|
22
|
+
private getLegacyMatchingSourcemapFiles;
|
|
23
|
+
private getMinifiedURLAndRelativePath;
|
|
24
|
+
private getPayloadsToUpload;
|
|
25
|
+
private getRepositoryPayload;
|
|
26
|
+
private getRequestBuilder;
|
|
27
|
+
private isMinifiedPathPrefixValid;
|
|
28
|
+
private upload;
|
|
29
|
+
}
|
|
@@ -0,0 +1,342 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.SourcemapsUploadCommand = void 0;
|
|
39
|
+
const url_1 = require("url");
|
|
40
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
41
|
+
const clipanion_1 = require("clipanion");
|
|
42
|
+
const upath_1 = __importDefault(require("upath"));
|
|
43
|
+
const datadog_ci_base_1 = require("@datadog/datadog-ci-base");
|
|
44
|
+
const constants_1 = require("@datadog/datadog-ci-base/constants");
|
|
45
|
+
const apikey_1 = require("@datadog/datadog-ci-base/helpers/apikey");
|
|
46
|
+
const base_intake_url_1 = require("@datadog/datadog-ci-base/helpers/base-intake-url");
|
|
47
|
+
const concurrency_1 = require("@datadog/datadog-ci-base/helpers/concurrency");
|
|
48
|
+
const env_1 = require("@datadog/datadog-ci-base/helpers/env");
|
|
49
|
+
const errors_1 = require("@datadog/datadog-ci-base/helpers/errors");
|
|
50
|
+
const fips_1 = require("@datadog/datadog-ci-base/helpers/fips");
|
|
51
|
+
const format_git_sourcemaps_data_1 = require("@datadog/datadog-ci-base/helpers/git/format-git-sourcemaps-data");
|
|
52
|
+
const glob_1 = require("@datadog/datadog-ci-base/helpers/glob");
|
|
53
|
+
const metrics_1 = require("@datadog/datadog-ci-base/helpers/metrics");
|
|
54
|
+
const upload_1 = require("@datadog/datadog-ci-base/helpers/upload");
|
|
55
|
+
const utils_1 = require("@datadog/datadog-ci-base/helpers/utils");
|
|
56
|
+
const validation = __importStar(require("@datadog/datadog-ci-base/helpers/validation"));
|
|
57
|
+
const version_1 = require("@datadog/datadog-ci-base/version");
|
|
58
|
+
const interfaces_1 = require("./interfaces");
|
|
59
|
+
const renderer_1 = require("./renderer");
|
|
60
|
+
const utils_2 = require("./utils");
|
|
61
|
+
const validation_1 = require("./validation");
|
|
62
|
+
class SourcemapsUploadCommand extends datadog_ci_base_1.BaseCommand {
|
|
63
|
+
constructor() {
|
|
64
|
+
var _a, _b;
|
|
65
|
+
super(...arguments);
|
|
66
|
+
this.basePath = clipanion_1.Option.String({ required: true });
|
|
67
|
+
this.disableGit = clipanion_1.Option.Boolean('--disable-git');
|
|
68
|
+
this.quiet = clipanion_1.Option.Boolean('--quiet', false);
|
|
69
|
+
this.dryRun = clipanion_1.Option.Boolean('--dry-run', false);
|
|
70
|
+
this.maxConcurrency = clipanion_1.Option.String('--max-concurrency', '20', { validator: validation.isInteger() });
|
|
71
|
+
this.minifiedPathPrefix = clipanion_1.Option.String('--minified-path-prefix');
|
|
72
|
+
this.projectPath = clipanion_1.Option.String('--project-path', '');
|
|
73
|
+
this.releaseVersion = clipanion_1.Option.String('--release-version');
|
|
74
|
+
this.repositoryURL = clipanion_1.Option.String('--repository-url');
|
|
75
|
+
this.service = clipanion_1.Option.String('--service');
|
|
76
|
+
this.cliVersion = version_1.cliVersion;
|
|
77
|
+
this.fips = clipanion_1.Option.Boolean('--fips', false);
|
|
78
|
+
this.fipsIgnoreError = clipanion_1.Option.Boolean('--fips-ignore-error', false);
|
|
79
|
+
this.config = {
|
|
80
|
+
apiKey: process.env.DATADOG_API_KEY || process.env.DD_API_KEY,
|
|
81
|
+
datadogSite: process.env.DATADOG_SITE || process.env.DD_SITE || 'datadoghq.com',
|
|
82
|
+
fips: (_a = (0, env_1.toBoolean)(process.env[constants_1.FIPS_ENV_VAR])) !== null && _a !== void 0 ? _a : false,
|
|
83
|
+
fipsIgnoreError: (_b = (0, env_1.toBoolean)(process.env[constants_1.FIPS_IGNORE_ERROR_ENV_VAR])) !== null && _b !== void 0 ? _b : false,
|
|
84
|
+
};
|
|
85
|
+
// Fills the 'repository' field of each payload with data gathered using git.
|
|
86
|
+
this.addRepositoryDataToPayloads = (payloads) => __awaiter(this, void 0, void 0, function* () {
|
|
87
|
+
try {
|
|
88
|
+
const repositoryData = yield (0, format_git_sourcemaps_data_1.getRepositoryData)(yield (0, format_git_sourcemaps_data_1.newSimpleGit)(), this.repositoryURL);
|
|
89
|
+
yield Promise.all(payloads.map((payload) => __awaiter(this, void 0, void 0, function* () {
|
|
90
|
+
const repositoryPayload = this.getRepositoryPayload(repositoryData, payload.sourcemapPath);
|
|
91
|
+
payload.addRepositoryData({
|
|
92
|
+
gitCommitSha: repositoryData.hash,
|
|
93
|
+
gitRepositoryPayload: repositoryPayload,
|
|
94
|
+
gitRepositoryURL: repositoryData.remote,
|
|
95
|
+
});
|
|
96
|
+
})));
|
|
97
|
+
}
|
|
98
|
+
catch (e) {
|
|
99
|
+
this.context.stdout.write((0, renderer_1.renderGitWarning)(e));
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
// Looks for the sourcemaps and minified files on disk and returns
|
|
103
|
+
// the associated payloads.
|
|
104
|
+
this.getMatchingSourcemapFiles = () => __awaiter(this, void 0, void 0, function* () {
|
|
105
|
+
const jsFiles = (0, glob_1.globSync)((0, utils_1.buildPath)(this.basePath, '**/*.js'));
|
|
106
|
+
const sourcemaps = (yield (0, concurrency_1.doWithMaxConcurrency)(this.maxConcurrency, jsFiles, (minifiedFilePath) => __awaiter(this, void 0, void 0, function* () {
|
|
107
|
+
try {
|
|
108
|
+
const lastLine = yield (0, utils_2.readLastLine)(minifiedFilePath);
|
|
109
|
+
// Look for sourceMappingURL comment
|
|
110
|
+
const sourceMappingMatch = lastLine.match(/\/\/# sourceMappingURL=(.+\.map)/);
|
|
111
|
+
if (sourceMappingMatch) {
|
|
112
|
+
// mert: nextjs/turbopack uses url-percent encoding
|
|
113
|
+
const sourcemapUrl = decodeURIComponent(sourceMappingMatch[1].trim());
|
|
114
|
+
// Skip absolute URLs and absolute paths — they can't be resolved to local files
|
|
115
|
+
if (sourcemapUrl.includes('://') || upath_1.default.isAbsolute(sourcemapUrl)) {
|
|
116
|
+
return undefined;
|
|
117
|
+
}
|
|
118
|
+
// Join the sourcemap path relative to the minified file's directory
|
|
119
|
+
const minifiedFileDir = upath_1.default.dirname(minifiedFilePath);
|
|
120
|
+
const sourcemapPath = upath_1.default.join(minifiedFileDir, sourcemapUrl);
|
|
121
|
+
const [minifiedURL, relativePath] = this.getMinifiedURLAndRelativePath(minifiedFilePath);
|
|
122
|
+
return new interfaces_1.Sourcemap(minifiedFilePath, minifiedURL, sourcemapPath, relativePath, this.minifiedPathPrefix);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
return undefined;
|
|
127
|
+
}
|
|
128
|
+
return undefined;
|
|
129
|
+
}))).filter((sourcemap) => sourcemap !== undefined);
|
|
130
|
+
// Fall back to legacy method if no sourcemaps were found
|
|
131
|
+
if (sourcemaps.length === 0) {
|
|
132
|
+
return this.getLegacyMatchingSourcemapFiles();
|
|
133
|
+
}
|
|
134
|
+
return sourcemaps;
|
|
135
|
+
});
|
|
136
|
+
// Looks for the sourcemaps and minified files on disk and returns
|
|
137
|
+
// the associated payloads.
|
|
138
|
+
this.getLegacyMatchingSourcemapFiles = () => __awaiter(this, void 0, void 0, function* () {
|
|
139
|
+
const sourcemapFiles = (0, glob_1.globSync)((0, utils_1.buildPath)(this.basePath, '**/*js.map'));
|
|
140
|
+
return Promise.all(sourcemapFiles.map((sourcemapPath) => __awaiter(this, void 0, void 0, function* () {
|
|
141
|
+
const minifiedFilePath = (0, utils_2.getMinifiedFilePath)(sourcemapPath);
|
|
142
|
+
const [minifiedURL, relativePath] = this.getMinifiedURLAndRelativePath(minifiedFilePath);
|
|
143
|
+
return new interfaces_1.Sourcemap(minifiedFilePath, minifiedURL, sourcemapPath, relativePath, this.minifiedPathPrefix);
|
|
144
|
+
})));
|
|
145
|
+
});
|
|
146
|
+
this.getPayloadsToUpload = (useGit) => __awaiter(this, void 0, void 0, function* () {
|
|
147
|
+
const payloads = yield this.getMatchingSourcemapFiles();
|
|
148
|
+
if (!useGit) {
|
|
149
|
+
return payloads;
|
|
150
|
+
}
|
|
151
|
+
yield this.addRepositoryDataToPayloads(payloads);
|
|
152
|
+
return payloads;
|
|
153
|
+
});
|
|
154
|
+
// GetRepositoryPayload generates the repository payload for a specific sourcemap.
|
|
155
|
+
// It specifically looks for the list of tracked files that are associated to the source paths
|
|
156
|
+
// declared inside the sourcemap.
|
|
157
|
+
this.getRepositoryPayload = (repositoryData, sourcemapPath) => {
|
|
158
|
+
const onSourcesNotFound = () => {
|
|
159
|
+
this.context.stdout.write((0, renderer_1.renderSourcesNotFoundWarning)(sourcemapPath));
|
|
160
|
+
};
|
|
161
|
+
let repositoryPayload;
|
|
162
|
+
try {
|
|
163
|
+
const files = repositoryData.trackedFilesMatcher.matchSourcemap(sourcemapPath, onSourcesNotFound);
|
|
164
|
+
if (files) {
|
|
165
|
+
repositoryPayload = JSON.stringify({
|
|
166
|
+
data: [
|
|
167
|
+
{
|
|
168
|
+
files,
|
|
169
|
+
hash: repositoryData.hash,
|
|
170
|
+
repository_url: repositoryData.remote,
|
|
171
|
+
},
|
|
172
|
+
],
|
|
173
|
+
// Make sure to update the version if the format of the JSON payloads changes in any way.
|
|
174
|
+
version: 1,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
return repositoryPayload;
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
this.context.stdout.write((0, renderer_1.renderGitDataNotAttachedWarning)(sourcemapPath, error.message));
|
|
181
|
+
return undefined;
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
execute() {
|
|
186
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
187
|
+
(0, fips_1.enableFips)(this.fips || this.config.fips, this.fipsIgnoreError || this.config.fipsIgnoreError);
|
|
188
|
+
if (!this.releaseVersion) {
|
|
189
|
+
this.context.stderr.write('Missing release version\n');
|
|
190
|
+
return 1;
|
|
191
|
+
}
|
|
192
|
+
if (!this.service) {
|
|
193
|
+
this.context.stderr.write('Missing service\n');
|
|
194
|
+
return 1;
|
|
195
|
+
}
|
|
196
|
+
if (!this.minifiedPathPrefix) {
|
|
197
|
+
this.context.stderr.write('Missing minified path\n');
|
|
198
|
+
return 1;
|
|
199
|
+
}
|
|
200
|
+
if (!this.isMinifiedPathPrefixValid()) {
|
|
201
|
+
this.context.stdout.write(renderer_1.renderInvalidPrefix);
|
|
202
|
+
return 1;
|
|
203
|
+
}
|
|
204
|
+
// Normalizing the basePath to resolve .. and .
|
|
205
|
+
this.basePath = upath_1.default.normalize(this.basePath);
|
|
206
|
+
this.context.stdout.write((0, renderer_1.renderCommandInfo)(this.basePath, this.minifiedPathPrefix, this.projectPath, this.releaseVersion, this.service, this.maxConcurrency, this.dryRun));
|
|
207
|
+
const metricsLogger = (0, metrics_1.getMetricsLogger)({
|
|
208
|
+
datadogSite: process.env.DATADOG_SITE || process.env.DD_SITE,
|
|
209
|
+
defaultTags: [`version:${this.releaseVersion}`, `service:${this.service}`, `cli_version:${this.cliVersion}`],
|
|
210
|
+
prefix: 'datadog.ci.sourcemaps.',
|
|
211
|
+
});
|
|
212
|
+
const apiKeyValidator = (0, apikey_1.newApiKeyValidator)({
|
|
213
|
+
apiKey: this.config.apiKey,
|
|
214
|
+
datadogSite: this.config.datadogSite,
|
|
215
|
+
metricsLogger: metricsLogger.logger,
|
|
216
|
+
});
|
|
217
|
+
const useGit = this.disableGit === undefined || !this.disableGit;
|
|
218
|
+
const initialTime = Date.now();
|
|
219
|
+
const payloads = yield this.getPayloadsToUpload(useGit);
|
|
220
|
+
const requestBuilder = this.getRequestBuilder();
|
|
221
|
+
const uploadMultipart = this.upload(requestBuilder, metricsLogger, apiKeyValidator);
|
|
222
|
+
try {
|
|
223
|
+
const results = yield (0, concurrency_1.doWithMaxConcurrency)(this.maxConcurrency, payloads, uploadMultipart);
|
|
224
|
+
const totalTime = (Date.now() - initialTime) / 1000;
|
|
225
|
+
this.context.stdout.write((0, renderer_1.renderSuccessfulCommand)(results, totalTime, this.dryRun));
|
|
226
|
+
metricsLogger.logger.gauge('duration', totalTime);
|
|
227
|
+
return 0;
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
if (error instanceof errors_1.InvalidConfigurationError) {
|
|
231
|
+
this.context.stdout.write((0, renderer_1.renderConfigurationError)(error));
|
|
232
|
+
return 1;
|
|
233
|
+
}
|
|
234
|
+
// Otherwise unknown error, let's propagate the exception
|
|
235
|
+
throw error;
|
|
236
|
+
}
|
|
237
|
+
finally {
|
|
238
|
+
try {
|
|
239
|
+
yield metricsLogger.flush();
|
|
240
|
+
}
|
|
241
|
+
catch (err) {
|
|
242
|
+
this.context.stdout.write(`WARN: ${err}\n`);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
getMinifiedURLAndRelativePath(minifiedFilePath) {
|
|
248
|
+
const relativePath = minifiedFilePath.replace(this.basePath, '');
|
|
249
|
+
return [(0, utils_1.buildPath)(this.minifiedPathPrefix, relativePath), relativePath];
|
|
250
|
+
}
|
|
251
|
+
getRequestBuilder() {
|
|
252
|
+
if (!this.config.apiKey) {
|
|
253
|
+
throw new errors_1.InvalidConfigurationError(`Missing ${chalk_1.default.bold('DATADOG_API_KEY')} or ${chalk_1.default.bold('DD_API_KEY')} in your environment.`);
|
|
254
|
+
}
|
|
255
|
+
return (0, utils_1.getRequestBuilder)({
|
|
256
|
+
apiKey: this.config.apiKey,
|
|
257
|
+
baseUrl: (0, base_intake_url_1.getBaseSourcemapIntakeUrl)(this.config.datadogSite),
|
|
258
|
+
headers: new Map([
|
|
259
|
+
['DD-EVP-ORIGIN', 'datadog-ci_sourcemaps'],
|
|
260
|
+
['DD-EVP-ORIGIN-VERSION', this.cliVersion],
|
|
261
|
+
]),
|
|
262
|
+
overrideUrl: 'api/v2/srcmap',
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
isMinifiedPathPrefixValid() {
|
|
266
|
+
let host;
|
|
267
|
+
try {
|
|
268
|
+
const objUrl = new url_1.URL(this.minifiedPathPrefix);
|
|
269
|
+
host = objUrl.host;
|
|
270
|
+
}
|
|
271
|
+
catch (_a) {
|
|
272
|
+
// Do nothing.
|
|
273
|
+
}
|
|
274
|
+
if (!host && !this.minifiedPathPrefix.startsWith('/')) {
|
|
275
|
+
return false;
|
|
276
|
+
}
|
|
277
|
+
return true;
|
|
278
|
+
}
|
|
279
|
+
upload(requestBuilder, metricsLogger, apiKeyValidator) {
|
|
280
|
+
return (sourcemap) => __awaiter(this, void 0, void 0, function* () {
|
|
281
|
+
try {
|
|
282
|
+
(0, validation_1.validatePayload)(sourcemap, this.context.stdout);
|
|
283
|
+
}
|
|
284
|
+
catch (error) {
|
|
285
|
+
if (error instanceof validation_1.InvalidPayload) {
|
|
286
|
+
this.context.stdout.write((0, renderer_1.renderFailedUpload)(sourcemap, error.message));
|
|
287
|
+
metricsLogger.logger.increment('skipped_sourcemap', 1, [`reason:${error.reason}`]);
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
this.context.stdout.write((0, renderer_1.renderFailedUpload)(sourcemap, `Skipping sourcemap ${sourcemap.sourcemapPath} because of error: ${error.message}`));
|
|
291
|
+
metricsLogger.logger.increment('skipped_sourcemap', 1, ['reason:unknown']);
|
|
292
|
+
}
|
|
293
|
+
return upload_1.UploadStatus.Skipped;
|
|
294
|
+
}
|
|
295
|
+
const payload = sourcemap.asMultipartPayload(this.cliVersion, this.service, this.releaseVersion, this.projectPath);
|
|
296
|
+
if (this.dryRun) {
|
|
297
|
+
this.context.stdout.write(`[DRYRUN] ${(0, renderer_1.renderUpload)(sourcemap)}`);
|
|
298
|
+
return upload_1.UploadStatus.Success;
|
|
299
|
+
}
|
|
300
|
+
return (0, upload_1.upload)(requestBuilder)(payload, {
|
|
301
|
+
apiKeyValidator,
|
|
302
|
+
onError: (e) => {
|
|
303
|
+
this.context.stdout.write((0, renderer_1.renderFailedUpload)(sourcemap, e.message));
|
|
304
|
+
metricsLogger.logger.increment('failed', 1);
|
|
305
|
+
},
|
|
306
|
+
onRetry: (e, attempts) => {
|
|
307
|
+
this.context.stdout.write((0, renderer_1.renderRetriedUpload)(sourcemap, e.message, attempts));
|
|
308
|
+
metricsLogger.logger.increment('retries', 1);
|
|
309
|
+
},
|
|
310
|
+
onUpload: () => {
|
|
311
|
+
if (this.quiet) {
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
this.context.stdout.write((0, renderer_1.renderUpload)(sourcemap));
|
|
315
|
+
},
|
|
316
|
+
retries: 5,
|
|
317
|
+
useGzip: true,
|
|
318
|
+
});
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
exports.SourcemapsUploadCommand = SourcemapsUploadCommand;
|
|
323
|
+
SourcemapsUploadCommand.paths = [['sourcemaps', 'upload']];
|
|
324
|
+
SourcemapsUploadCommand.usage = clipanion_1.Command.Usage({
|
|
325
|
+
category: 'RUM',
|
|
326
|
+
description: 'Upload JavaScript sourcemaps to Datadog.',
|
|
327
|
+
details: `
|
|
328
|
+
This command will upload all JavaScript sourcemaps and their corresponding JavaScript file to Datadog in order to un-minify front-end stack traces received by Datadog.\n
|
|
329
|
+
See README for details.
|
|
330
|
+
`,
|
|
331
|
+
examples: [
|
|
332
|
+
[
|
|
333
|
+
'Upload all sourcemaps in current directory',
|
|
334
|
+
'datadog-ci sourcemaps upload . --service my-service --minified-path-prefix https://static.datadog.com --release-version 1.234',
|
|
335
|
+
],
|
|
336
|
+
[
|
|
337
|
+
'Upload all sourcemaps in /home/users/ci with 50 concurrent uploads',
|
|
338
|
+
'datadog-ci sourcemaps upload /home/users/ci --service my-service --minified-path-prefix https://static.datadog.com --release-version 1.234 --max-concurrency 50',
|
|
339
|
+
],
|
|
340
|
+
],
|
|
341
|
+
});
|
|
342
|
+
//# sourceMappingURL=upload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../src/commands/sourcemaps/upload.ts"],"names":[],"mappings":"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"}
|