@datadog/datadog-ci 3.2.0 → 3.3.1
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/README.md +3 -0
- package/dist/__tests__/cli.test.js +1 -0
- package/dist/__tests__/cli.test.js.map +1 -1
- package/dist/commands/dora/__tests__/deployment.test.js +2 -0
- package/dist/commands/dora/__tests__/deployment.test.js.map +1 -1
- package/dist/commands/dora/api.js +3 -0
- package/dist/commands/dora/api.js.map +1 -1
- package/dist/commands/dora/deployment.d.ts +1 -0
- package/dist/commands/dora/deployment.js +8 -1
- package/dist/commands/dora/deployment.js.map +1 -1
- package/dist/commands/dora/interfaces.d.ts +1 -0
- package/dist/commands/elf-symbols/__tests__/elf.test.js +12 -9
- package/dist/commands/elf-symbols/__tests__/elf.test.js.map +1 -1
- package/dist/commands/elf-symbols/__tests__/upload.test.js +9 -5
- package/dist/commands/elf-symbols/__tests__/upload.test.js.map +1 -1
- package/dist/commands/elf-symbols/elf.d.ts +2 -11
- package/dist/commands/elf-symbols/elf.js +52 -68
- package/dist/commands/elf-symbols/elf.js.map +1 -1
- package/dist/commands/elf-symbols/upload.js +3 -3
- package/dist/commands/elf-symbols/upload.js.map +1 -1
- package/dist/commands/pe-symbols/__tests__/pe.test.d.ts +1 -0
- package/dist/commands/pe-symbols/__tests__/pe.test.js +81 -0
- package/dist/commands/pe-symbols/__tests__/pe.test.js.map +1 -0
- package/dist/commands/pe-symbols/cli.d.ts +1 -0
- package/dist/commands/pe-symbols/cli.js +5 -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 +35 -0
- package/dist/commands/pe-symbols/pe.js +248 -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 +32 -0
- package/dist/commands/pe-symbols/upload.js +412 -0
- package/dist/commands/pe-symbols/upload.js.map +1 -0
- package/dist/commands/sbom/__tests__/payload.test.js +88 -26
- package/dist/commands/sbom/__tests__/payload.test.js.map +1 -1
- package/dist/commands/sbom/payload.js +44 -0
- package/dist/commands/sbom/payload.js.map +1 -1
- package/dist/commands/sbom/types.d.ts +4 -0
- package/dist/commands/synthetics/__tests__/api.test.js +2 -2
- package/dist/commands/synthetics/__tests__/api.test.js.map +1 -1
- package/dist/commands/synthetics/__tests__/batch.test.js +38 -37
- package/dist/commands/synthetics/__tests__/batch.test.js.map +1 -1
- package/dist/commands/synthetics/__tests__/build-and-test.test.d.ts +1 -0
- package/dist/commands/synthetics/__tests__/build-and-test.test.js +133 -0
- package/dist/commands/synthetics/__tests__/build-and-test.test.js.map +1 -0
- package/dist/commands/synthetics/__tests__/cli.test.js +83 -47
- package/dist/commands/synthetics/__tests__/cli.test.js.map +1 -1
- package/dist/commands/synthetics/__tests__/deploy-tests-lib.test.js +2 -2
- package/dist/commands/synthetics/__tests__/deploy-tests-lib.test.js.map +1 -1
- package/dist/commands/synthetics/__tests__/import-tests-lib.test.js +4 -4
- package/dist/commands/synthetics/__tests__/import-tests-lib.test.js.map +1 -1
- package/dist/commands/synthetics/__tests__/test.test.js +6 -7
- package/dist/commands/synthetics/__tests__/test.test.js.map +1 -1
- package/dist/commands/synthetics/__tests__/tunnel/websocket.test.js +1 -1
- package/dist/commands/synthetics/__tests__/tunnel/websocket.test.js.map +1 -1
- package/dist/commands/synthetics/__tests__/utils/public.test.js +8 -7
- package/dist/commands/synthetics/__tests__/utils/public.test.js.map +1 -1
- package/dist/commands/synthetics/api.js +2 -2
- package/dist/commands/synthetics/api.js.map +1 -1
- package/dist/commands/synthetics/base-command.d.ts +29 -0
- package/dist/commands/synthetics/base-command.js +125 -0
- package/dist/commands/synthetics/base-command.js.map +1 -0
- package/dist/commands/synthetics/batch.d.ts +1 -0
- package/dist/commands/synthetics/batch.js +3 -3
- package/dist/commands/synthetics/batch.js.map +1 -1
- package/dist/commands/synthetics/build-and-test.d.ts +8 -0
- package/dist/commands/synthetics/build-and-test.js +102 -0
- package/dist/commands/synthetics/build-and-test.js.map +1 -0
- package/dist/commands/synthetics/deploy-tests-command.d.ts +8 -16
- package/dist/commands/synthetics/deploy-tests-command.js +19 -91
- package/dist/commands/synthetics/deploy-tests-command.js.map +1 -1
- package/dist/commands/synthetics/import-tests-command.d.ts +6 -14
- package/dist/commands/synthetics/import-tests-command.js +15 -83
- package/dist/commands/synthetics/import-tests-command.js.map +1 -1
- package/dist/commands/synthetics/index.d.ts +1 -1
- package/dist/commands/synthetics/index.js +6 -6
- package/dist/commands/synthetics/index.js.map +1 -1
- package/dist/commands/synthetics/interfaces.d.ts +5 -2
- package/dist/commands/synthetics/run-tests-command.d.ts +12 -17
- package/dist/commands/synthetics/run-tests-command.js +133 -190
- package/dist/commands/synthetics/run-tests-command.js.map +1 -1
- package/dist/commands/synthetics/run-tests-lib.d.ts +1 -0
- package/dist/commands/synthetics/run-tests-lib.js +8 -4
- package/dist/commands/synthetics/run-tests-lib.js.map +1 -1
- package/dist/commands/synthetics/test.d.ts +2 -0
- package/dist/commands/synthetics/test.js +9 -8
- package/dist/commands/synthetics/test.js.map +1 -1
- package/dist/commands/synthetics/upload-application-command.d.ts +6 -13
- package/dist/commands/synthetics/upload-application-command.js +22 -87
- package/dist/commands/synthetics/upload-application-command.js.map +1 -1
- package/dist/commands/synthetics/utils/internal.d.ts +2 -0
- package/dist/commands/synthetics/utils/internal.js +15 -1
- package/dist/commands/synthetics/utils/internal.js.map +1 -1
- package/dist/helpers/ci.d.ts +2 -0
- package/dist/helpers/filereader.d.ts +21 -0
- package/dist/helpers/filereader.js +59 -0
- package/dist/helpers/filereader.js.map +1 -0
- package/dist/helpers/interfaces.d.ts +2 -2
- package/dist/helpers/tags.d.ts +2 -0
- package/dist/helpers/tags.js +4 -1
- package/dist/helpers/tags.js.map +1 -1
- package/dist/helpers/utils.d.ts +1 -0
- package/dist/helpers/utils.js +14 -1
- package/dist/helpers/utils.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CV_INFO_PDB_FILENAME_OFFSET = exports.CV_INFO_AGE_OFFSET = exports.CV_INFO_GUID_OFFSET = exports.CV_INFO_SIGNATURE_OFFSET = exports.PDB70_SIGNATURE = exports.CV_INFO_PDB70_SIZE = exports.IMAGE_DEBUG_DIRECTORY_POINTERTORAWDATA_OFFSET = exports.IMAGE_DEBUG_DIRECTORY_ADDRESSOFRAWDATA_OFFSET = exports.IMAGE_DEBUG_DIRECTORY_SIZEOFDATA_OFFSET = exports.IMAGE_DEBUG_DIRECTORY_TYPE_OFFSET = exports.IMAGE_DEBUG_DIRECTORY_SIZE = exports.IMAGE_DEBUG_TYPE_CODEVIEW = exports.IMAGE_SECTION_HEADER_POINTERTORAWDATA_OFFSET = exports.IMAGE_SECTION_HEADER_VIRTUALADDRESS_OFFSET = exports.IMAGE_SECTION_HEADER_VIRTUALSIZE_OFFSET = exports.IMAGE_SECTION_HEADER_SIZE = exports.IMAGE_SHORT_NAME_SIZE = exports.IMAGE_DATA_DIRECTORY_SIZE_OFFSET = exports.IMAGE_DATA_DIRECTORY_VIRTUAL_ADDRESS_OFFSET = exports.IMAGE_DATA_DIRECTORY64_OFFSET = exports.IMAGE_NT_HEADERS64_SIZE = exports.IMAGE_DATA_DIRECTORY32_OFFSET = exports.IMAGE_NT_HEADERS32_SIZE = exports.IMAGE_DIRECTORY_ENTRY_DEBUG = exports.IMAGE_DATA_DIRECTORY_SIZE = exports.IMAGE_NUMBEROF_DIRECTORY_ENTRIES = exports.IMAGE_NT_OPTIONAL_HDR64_MAGIC = exports.IMAGE_NT_OPTIONAL_HDR32_MAGIC = exports.IMAGE_NT_HEADERS_GENERIC_MAGIC_OFFSET = exports.IMAGE_NT_HEADERS_GENERIC_TIMESTAMP_OFFSET = exports.IMAGE_NT_HEADERS_GENERIC_NUMBEROFSECTIONS_OFFSET = exports.MachineArchitecture = exports.IMAGE_FILE_MACHINE_ARM64 = exports.IMAGE_FILE_MACHINE_ARM32 = exports.IMAGE_FILE_MACHINE_AMD64 = exports.IMAGE_FILE_MACHINE_I386 = exports.IMAGE_NT_HEADERS_GENERIC_MACHINE_OFFSET = exports.IMAGE_NT_HEADERS_GENERIC_SIZE = exports.DOS_HEADER_LFANEW_OFFSET = exports.IMAGE_DOS_SIGNATURE = exports.DOS_HEADER_SIZE = void 0;
|
|
4
|
+
/*
|
|
5
|
+
typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header
|
|
6
|
+
0 WORD e_magic; // Magic number
|
|
7
|
+
WORD e_cblp; // Bytes on last page of file
|
|
8
|
+
WORD e_cp; // Pages in file
|
|
9
|
+
WORD e_crlc; // Relocations
|
|
10
|
+
WORD e_cparhdr; // Size of header in paragraphs
|
|
11
|
+
WORD e_minalloc; // Minimum extra paragraphs needed
|
|
12
|
+
WORD e_maxalloc; // Maximum extra paragraphs needed
|
|
13
|
+
WORD e_ss; // Initial (relative) SS value
|
|
14
|
+
WORD e_sp; // Initial SP value
|
|
15
|
+
WORD e_csum; // Checksum
|
|
16
|
+
WORD e_ip; // Initial IP value
|
|
17
|
+
WORD e_cs; // Initial (relative) CS value
|
|
18
|
+
WORD e_lfarlc; // File address of relocation table
|
|
19
|
+
WORD e_ovno; // Overlay number
|
|
20
|
+
WORD e_res[4]; // Reserved words
|
|
21
|
+
WORD e_oemid; // OEM identifier (for e_oeminfo)
|
|
22
|
+
WORD e_oeminfo; // OEM information; e_oemid specific
|
|
23
|
+
WORD e_res2[10]; // Reserved words
|
|
24
|
+
60 LONG e_lfanew; // File address of new exe header
|
|
25
|
+
} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
|
|
26
|
+
*/
|
|
27
|
+
exports.DOS_HEADER_SIZE = 64;
|
|
28
|
+
exports.IMAGE_DOS_SIGNATURE = 0x5a4d; // MZ
|
|
29
|
+
exports.DOS_HEADER_LFANEW_OFFSET = 0x3c; // = 60 bytes - offset to read e_lfanew in DOS header
|
|
30
|
+
/*
|
|
31
|
+
// PE32 and PE64 have different optional headers, which complexify the logic to fetch them
|
|
32
|
+
// This struct contains the common fields between the two types of headers
|
|
33
|
+
struct IMAGE_NT_HEADERS_GENERIC
|
|
34
|
+
{
|
|
35
|
+
0 DWORD Signature;
|
|
36
|
+
IMAGE_FILE_HEADER FileHeader;
|
|
37
|
+
4 WORD Machine;
|
|
38
|
+
6 WORD NumberOfSections;
|
|
39
|
+
8 DWORD TimeDateStamp;
|
|
40
|
+
DWORD PointerToSymbolTable;
|
|
41
|
+
DWORD NumberOfSymbols;
|
|
42
|
+
WORD SizeOfOptionalHeader;
|
|
43
|
+
WORD Characteristics;
|
|
44
|
+
24 WORD Magic; // common between 32 bit and 64 bit structures
|
|
45
|
+
};
|
|
46
|
+
*/
|
|
47
|
+
exports.IMAGE_NT_HEADERS_GENERIC_SIZE = 26;
|
|
48
|
+
// Signature field is at the beginning of the common PR header
|
|
49
|
+
// export const IMAGE_NT_SIGNATURE: number = 0x00004550; // PE00 at the start of the structure
|
|
50
|
+
// export const IMAGE_NT_HEADERS_GENERIC_SIGNATURE_OFFSET = 0; // looking Signature field
|
|
51
|
+
// Machine field
|
|
52
|
+
exports.IMAGE_NT_HEADERS_GENERIC_MACHINE_OFFSET = 4; // looking for Machine field
|
|
53
|
+
exports.IMAGE_FILE_MACHINE_I386 = 0x014c; // 32 bit
|
|
54
|
+
exports.IMAGE_FILE_MACHINE_AMD64 = 0x8664; // 64 bit
|
|
55
|
+
exports.IMAGE_FILE_MACHINE_ARM32 = 0x01c0; // 32 bit
|
|
56
|
+
exports.IMAGE_FILE_MACHINE_ARM64 = 0xaa64; // 64 bit
|
|
57
|
+
var MachineArchitecture;
|
|
58
|
+
(function (MachineArchitecture) {
|
|
59
|
+
MachineArchitecture[MachineArchitecture["unknown"] = 0] = "unknown";
|
|
60
|
+
MachineArchitecture[MachineArchitecture["x86"] = 1] = "x86";
|
|
61
|
+
MachineArchitecture[MachineArchitecture["x64"] = 2] = "x64";
|
|
62
|
+
MachineArchitecture[MachineArchitecture["Arm32"] = 3] = "Arm32";
|
|
63
|
+
MachineArchitecture[MachineArchitecture["Arm64"] = 4] = "Arm64";
|
|
64
|
+
})(MachineArchitecture || (exports.MachineArchitecture = MachineArchitecture = {}));
|
|
65
|
+
// NumberOfSections field
|
|
66
|
+
exports.IMAGE_NT_HEADERS_GENERIC_NUMBEROFSECTIONS_OFFSET = 6;
|
|
67
|
+
// Timestamp field
|
|
68
|
+
exports.IMAGE_NT_HEADERS_GENERIC_TIMESTAMP_OFFSET = 8; // looking for Timestamp field
|
|
69
|
+
// // SizeOfOptionalHeader field
|
|
70
|
+
// export const IMAGE_NT_HEADERS_GENERIC_SIZEOFOPTIONALHEADER_OFFSET: number = 20;
|
|
71
|
+
// Magic field
|
|
72
|
+
exports.IMAGE_NT_HEADERS_GENERIC_MAGIC_OFFSET = 24; // looking for 32/64 bit info
|
|
73
|
+
exports.IMAGE_NT_OPTIONAL_HDR32_MAGIC = 0x10b;
|
|
74
|
+
exports.IMAGE_NT_OPTIONAL_HDR64_MAGIC = 0x20b;
|
|
75
|
+
// the offset to the 16 sections (including the DEBUG one - the IMAGE_DIRECTORY_ENTRY_DEBUG entry in the array)
|
|
76
|
+
// are at the end of the IMAGE_OPTIONAL_HEADERxx structure whose content is different between 32 and 64 bit
|
|
77
|
+
// the DEBUG section contains the address to the debug metadata
|
|
78
|
+
exports.IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16;
|
|
79
|
+
exports.IMAGE_DATA_DIRECTORY_SIZE = 8; // DWORD + DWORD
|
|
80
|
+
exports.IMAGE_DIRECTORY_ENTRY_DEBUG = 6; // --> 6 entries before this one
|
|
81
|
+
exports.IMAGE_NT_HEADERS32_SIZE = 248;
|
|
82
|
+
exports.IMAGE_DATA_DIRECTORY32_OFFSET = exports.IMAGE_NT_HEADERS32_SIZE - exports.IMAGE_NUMBEROF_DIRECTORY_ENTRIES * exports.IMAGE_DATA_DIRECTORY_SIZE;
|
|
83
|
+
exports.IMAGE_NT_HEADERS64_SIZE = 264;
|
|
84
|
+
exports.IMAGE_DATA_DIRECTORY64_OFFSET = exports.IMAGE_NT_HEADERS64_SIZE - exports.IMAGE_NUMBEROF_DIRECTORY_ENTRIES * exports.IMAGE_DATA_DIRECTORY_SIZE;
|
|
85
|
+
// in the DEBUG directory, we need to find the Virtual Address field and the size of the section
|
|
86
|
+
/*
|
|
87
|
+
typedef struct _IMAGE_DATA_DIRECTORY {
|
|
88
|
+
0 DWORD VirtualAddress;
|
|
89
|
+
4 DWORD Size;
|
|
90
|
+
} IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;
|
|
91
|
+
*/
|
|
92
|
+
exports.IMAGE_DATA_DIRECTORY_VIRTUAL_ADDRESS_OFFSET = 0;
|
|
93
|
+
exports.IMAGE_DATA_DIRECTORY_SIZE_OFFSET = 4;
|
|
94
|
+
// !!! don't forget that VirtualAddress needs to be transformed into an offset from the beginning of the file !!!
|
|
95
|
+
// this code uses the table of sections header within the PE file that appear AFTER the array of IMAGE_DATA_DIRECTORY
|
|
96
|
+
// i.e. at IMAGE_NT_HEADERS32_SIZE or IMAGE_NT_HEADERS64_SIZE after the beginning of the PE header
|
|
97
|
+
/*
|
|
98
|
+
#define IMAGE_SIZEOF_SHORT_NAME 8
|
|
99
|
+
|
|
100
|
+
typedef struct _IMAGE_SECTION_HEADER {
|
|
101
|
+
0 BYTE Name[IMAGE_SIZEOF_SHORT_NAME];
|
|
102
|
+
union {
|
|
103
|
+
8 DWORD PhysicalAddress;
|
|
104
|
+
DWORD VirtualSize;
|
|
105
|
+
} Misc;
|
|
106
|
+
12 DWORD VirtualAddress;
|
|
107
|
+
DWORD SizeOfRawData;
|
|
108
|
+
20 DWORD PointerToRawData;
|
|
109
|
+
DWORD PointerToRelocations;
|
|
110
|
+
DWORD PointerToLinenumbers;
|
|
111
|
+
WORD NumberOfRelocations;
|
|
112
|
+
WORD NumberOfLinenumbers;
|
|
113
|
+
DWORD Characteristics;
|
|
114
|
+
} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;
|
|
115
|
+
|
|
116
|
+
#define IMAGE_SIZEOF_SECTION_HEADER 40
|
|
117
|
+
*/
|
|
118
|
+
exports.IMAGE_SHORT_NAME_SIZE = 8;
|
|
119
|
+
exports.IMAGE_SECTION_HEADER_SIZE = 40;
|
|
120
|
+
exports.IMAGE_SECTION_HEADER_VIRTUALSIZE_OFFSET = 8;
|
|
121
|
+
exports.IMAGE_SECTION_HEADER_VIRTUALADDRESS_OFFSET = 12;
|
|
122
|
+
exports.IMAGE_SECTION_HEADER_POINTERTORAWDATA_OFFSET = 20;
|
|
123
|
+
// once we've tranformed this "virtual address" into an offset, it points to an array of IMAGE_DEBUG_DIRECTORY
|
|
124
|
+
/*
|
|
125
|
+
typedef struct _IMAGE_DEBUG_DIRECTORY {
|
|
126
|
+
DWORD Characteristics;
|
|
127
|
+
4 DWORD TimeDateStamp;
|
|
128
|
+
WORD MajorVersion;
|
|
129
|
+
WORD MinorVersion;
|
|
130
|
+
12 DWORD Type;
|
|
131
|
+
16 DWORD SizeOfData;
|
|
132
|
+
20 DWORD AddressOfRawData;
|
|
133
|
+
24 DWORD PointerToRawData;
|
|
134
|
+
} IMAGE_DEBUG_DIRECTORY, *PIMAGE_DEBUG_DIRECTORY;
|
|
135
|
+
|
|
136
|
+
#define IMAGE_DEBUG_TYPE_CODEVIEW 2
|
|
137
|
+
*/
|
|
138
|
+
exports.IMAGE_DEBUG_TYPE_CODEVIEW = 2;
|
|
139
|
+
exports.IMAGE_DEBUG_DIRECTORY_SIZE = 28;
|
|
140
|
+
exports.IMAGE_DEBUG_DIRECTORY_TYPE_OFFSET = 12;
|
|
141
|
+
exports.IMAGE_DEBUG_DIRECTORY_SIZEOFDATA_OFFSET = 16;
|
|
142
|
+
exports.IMAGE_DEBUG_DIRECTORY_ADDRESSOFRAWDATA_OFFSET = 20;
|
|
143
|
+
exports.IMAGE_DEBUG_DIRECTORY_POINTERTORAWDATA_OFFSET = 24;
|
|
144
|
+
// the next step is to follow the raw data pointer to
|
|
145
|
+
/*
|
|
146
|
+
struct CV_INFO_PDB70
|
|
147
|
+
{
|
|
148
|
+
0 DWORD Signature;
|
|
149
|
+
4 GUID Guid;
|
|
150
|
+
20 DWORD Age;
|
|
151
|
+
24 char PdbFileName[];
|
|
152
|
+
};
|
|
153
|
+
*/
|
|
154
|
+
exports.CV_INFO_PDB70_SIZE = 24; // followed by an array of char for the .pdb name
|
|
155
|
+
exports.PDB70_SIGNATURE = 0x53445352; // "SDSR"
|
|
156
|
+
exports.CV_INFO_SIGNATURE_OFFSET = 0;
|
|
157
|
+
exports.CV_INFO_GUID_OFFSET = 4;
|
|
158
|
+
exports.CV_INFO_AGE_OFFSET = 20;
|
|
159
|
+
exports.CV_INFO_PDB_FILENAME_OFFSET = 24;
|
|
160
|
+
//# sourceMappingURL=pe-constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pe-constants.js","sourceRoot":"","sources":["../../../src/commands/pe-symbols/pe-constants.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;;;;;;;EAsBE;AACW,QAAA,eAAe,GAAG,EAAE,CAAA;AACpB,QAAA,mBAAmB,GAAG,MAAM,CAAA,CAAC,KAAK;AAClC,QAAA,wBAAwB,GAAG,IAAI,CAAA,CAAC,qDAAqD;AAMlG;;;;;;;;;;;;;;;;EAgBE;AACW,QAAA,6BAA6B,GAAG,EAAE,CAAA;AAE/C,8DAA8D;AAC9D,+FAA+F;AAC/F,0FAA0F;AAE1F,gBAAgB;AACH,QAAA,uCAAuC,GAAG,CAAC,CAAA,CAAC,4BAA4B;AACxE,QAAA,uBAAuB,GAAG,MAAM,CAAA,CAAC,SAAS;AAC1C,QAAA,wBAAwB,GAAG,MAAM,CAAA,CAAC,SAAS;AAC3C,QAAA,wBAAwB,GAAG,MAAM,CAAA,CAAC,SAAS;AAC3C,QAAA,wBAAwB,GAAG,MAAM,CAAA,CAAC,SAAS;AACxD,IAAY,mBAMX;AAND,WAAY,mBAAmB;IAC7B,mEAAW,CAAA;IACX,2DAAO,CAAA;IACP,2DAAO,CAAA;IACP,+DAAS,CAAA;IACT,+DAAS,CAAA;AACX,CAAC,EANW,mBAAmB,mCAAnB,mBAAmB,QAM9B;AAED,yBAAyB;AACZ,QAAA,gDAAgD,GAAG,CAAC,CAAA;AAEjE,kBAAkB;AACL,QAAA,yCAAyC,GAAG,CAAC,CAAA,CAAC,8BAA8B;AAEzF,gCAAgC;AAChC,kFAAkF;AAElF,cAAc;AACD,QAAA,qCAAqC,GAAG,EAAE,CAAA,CAAC,6BAA6B;AACxE,QAAA,6BAA6B,GAAG,KAAK,CAAA;AACrC,QAAA,6BAA6B,GAAG,KAAK,CAAA;AAElD,+GAA+G;AAC/G,2GAA2G;AAC3G,+DAA+D;AAClD,QAAA,gCAAgC,GAAG,EAAE,CAAA;AACrC,QAAA,yBAAyB,GAAG,CAAC,CAAA,CAAC,gBAAgB;AAC9C,QAAA,2BAA2B,GAAG,CAAC,CAAA,CAAC,gCAAgC;AAChE,QAAA,uBAAuB,GAAG,GAAG,CAAA;AAC7B,QAAA,6BAA6B,GACxC,+BAAuB,GAAG,wCAAgC,GAAG,iCAAyB,CAAA;AAC3E,QAAA,uBAAuB,GAAG,GAAG,CAAA;AAC7B,QAAA,6BAA6B,GACxC,+BAAuB,GAAG,wCAAgC,GAAG,iCAAyB,CAAA;AAExF,gGAAgG;AAChG;;;;;GAKG;AACU,QAAA,2CAA2C,GAAG,CAAC,CAAA;AAC/C,QAAA,gCAAgC,GAAG,CAAC,CAAA;AAEjD,iHAAiH;AACjH,qHAAqH;AACrH,kGAAkG;AAClG;;;;;;;;;;;;;;;;;;;;EAoBE;AACW,QAAA,qBAAqB,GAAG,CAAC,CAAA;AACzB,QAAA,yBAAyB,GAAG,EAAE,CAAA;AAC9B,QAAA,uCAAuC,GAAG,CAAC,CAAA;AAC3C,QAAA,0CAA0C,GAAG,EAAE,CAAA;AAC/C,QAAA,4CAA4C,GAAG,EAAE,CAAA;AAE9D,8GAA8G;AAC9G;;;;;;;;;;;;;EAaE;AACW,QAAA,yBAAyB,GAAG,CAAC,CAAA;AAC7B,QAAA,0BAA0B,GAAG,EAAE,CAAA;AAC/B,QAAA,iCAAiC,GAAG,EAAE,CAAA;AACtC,QAAA,uCAAuC,GAAG,EAAE,CAAA;AAC5C,QAAA,6CAA6C,GAAG,EAAE,CAAA;AAClD,QAAA,6CAA6C,GAAG,EAAE,CAAA;AAE/D,qDAAqD;AACrD;;;;;;;;EAQE;AACW,QAAA,kBAAkB,GAAG,EAAE,CAAA,CAAC,iDAAiD;AACzE,QAAA,eAAe,GAAG,UAAU,CAAA,CAAC,SAAS;AACtC,QAAA,wBAAwB,GAAG,CAAC,CAAA;AAC5B,QAAA,mBAAmB,GAAG,CAAC,CAAA;AACvB,QAAA,kBAAkB,GAAG,EAAE,CAAA;AACvB,QAAA,2BAA2B,GAAG,EAAE,CAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { MachineArchitecture } from './pe-constants';
|
|
2
|
+
export type GUID = {
|
|
3
|
+
Data1: number;
|
|
4
|
+
Data2: number;
|
|
5
|
+
Data3: number;
|
|
6
|
+
Data4: number;
|
|
7
|
+
Data4_1: number;
|
|
8
|
+
Data4_2: number;
|
|
9
|
+
Data4_3: number;
|
|
10
|
+
};
|
|
11
|
+
export type PEHeader = {
|
|
12
|
+
peHeaderOffset: number;
|
|
13
|
+
is64: boolean;
|
|
14
|
+
architecture: MachineArchitecture;
|
|
15
|
+
numberOfSections: number;
|
|
16
|
+
buildTime: string;
|
|
17
|
+
sectionHeadersOffset: number;
|
|
18
|
+
};
|
|
19
|
+
export type PEFileMetadata = {
|
|
20
|
+
filename: string;
|
|
21
|
+
isPE: boolean;
|
|
22
|
+
arch: MachineArchitecture;
|
|
23
|
+
hasPdbInfo: boolean;
|
|
24
|
+
pdbAge: number;
|
|
25
|
+
pdbSig: string | undefined;
|
|
26
|
+
pdbFilename: string;
|
|
27
|
+
error?: Error;
|
|
28
|
+
};
|
|
29
|
+
export type PEResult = {
|
|
30
|
+
isPE: boolean;
|
|
31
|
+
peHeader?: PEHeader;
|
|
32
|
+
error?: Error;
|
|
33
|
+
};
|
|
34
|
+
export declare const getPEFileMetadata: (filename: string) => Promise<PEFileMetadata>;
|
|
35
|
+
export declare const getBuildId: (fileMetadata: PEFileMetadata) => string;
|
|
@@ -0,0 +1,248 @@
|
|
|
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.getBuildId = exports.getPEFileMetadata = void 0;
|
|
16
|
+
const fs_1 = __importDefault(require("fs"));
|
|
17
|
+
const filereader_1 = require("../../helpers/filereader");
|
|
18
|
+
const pe_constants_1 = require("./pe-constants");
|
|
19
|
+
const getArchitecture = (machine) => {
|
|
20
|
+
let architecture = pe_constants_1.MachineArchitecture.unknown;
|
|
21
|
+
if (machine === pe_constants_1.IMAGE_FILE_MACHINE_I386) {
|
|
22
|
+
architecture = pe_constants_1.MachineArchitecture.x86;
|
|
23
|
+
}
|
|
24
|
+
else if (machine === pe_constants_1.IMAGE_FILE_MACHINE_AMD64) {
|
|
25
|
+
architecture = pe_constants_1.MachineArchitecture.x64;
|
|
26
|
+
}
|
|
27
|
+
else if (machine === pe_constants_1.IMAGE_FILE_MACHINE_ARM32) {
|
|
28
|
+
architecture = pe_constants_1.MachineArchitecture.Arm32;
|
|
29
|
+
}
|
|
30
|
+
else if (machine === pe_constants_1.IMAGE_FILE_MACHINE_ARM64) {
|
|
31
|
+
architecture = pe_constants_1.MachineArchitecture.Arm64;
|
|
32
|
+
}
|
|
33
|
+
return architecture;
|
|
34
|
+
};
|
|
35
|
+
const readPEHeader = (reader) => __awaiter(void 0, void 0, void 0, function* () {
|
|
36
|
+
const result = {
|
|
37
|
+
isPE: false,
|
|
38
|
+
};
|
|
39
|
+
result.peHeader = {
|
|
40
|
+
peHeaderOffset: 0,
|
|
41
|
+
is64: false,
|
|
42
|
+
architecture: pe_constants_1.MachineArchitecture.unknown,
|
|
43
|
+
numberOfSections: 0,
|
|
44
|
+
buildTime: '',
|
|
45
|
+
sectionHeadersOffset: 0,
|
|
46
|
+
};
|
|
47
|
+
try {
|
|
48
|
+
// read the DOS header to find the offset to the PE header
|
|
49
|
+
const dosHeaderBuffer = yield reader.read(pe_constants_1.DOS_HEADER_SIZE);
|
|
50
|
+
const dosMagic = dosHeaderBuffer.readInt16LE(0);
|
|
51
|
+
if (dosMagic !== pe_constants_1.IMAGE_DOS_SIGNATURE) {
|
|
52
|
+
result.isPE = false;
|
|
53
|
+
result.error = Error('Invalid DOS header');
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
56
|
+
const peHeaderOffset = dosHeaderBuffer.readUint32LE(pe_constants_1.DOS_HEADER_LFANEW_OFFSET);
|
|
57
|
+
result.peHeader.peHeaderOffset = peHeaderOffset;
|
|
58
|
+
// look at the PE header now
|
|
59
|
+
const peCommonHeaderBuffer = yield reader.read(pe_constants_1.IMAGE_NT_HEADERS_GENERIC_SIZE, peHeaderOffset);
|
|
60
|
+
// check the signature
|
|
61
|
+
const peSignature = peCommonHeaderBuffer.toString('utf-8', 0, 4);
|
|
62
|
+
if (peSignature !== 'PE\0\0') {
|
|
63
|
+
result.isPE = false;
|
|
64
|
+
result.error = Error('Invalid PE header');
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
// read the Machine field
|
|
68
|
+
const machine = peCommonHeaderBuffer.readUint16LE(pe_constants_1.IMAGE_NT_HEADERS_GENERIC_MACHINE_OFFSET);
|
|
69
|
+
result.peHeader.architecture = getArchitecture(machine);
|
|
70
|
+
// read the NumberOfSections field
|
|
71
|
+
result.peHeader.numberOfSections = peCommonHeaderBuffer.readUint16LE(pe_constants_1.IMAGE_NT_HEADERS_GENERIC_NUMBEROFSECTIONS_OFFSET);
|
|
72
|
+
// read the build time
|
|
73
|
+
const timestamp = peCommonHeaderBuffer.readUint32LE(pe_constants_1.IMAGE_NT_HEADERS_GENERIC_TIMESTAMP_OFFSET);
|
|
74
|
+
const buildDate = new Date(timestamp * 1000).toUTCString();
|
|
75
|
+
result.peHeader.buildTime = `${buildDate}`;
|
|
76
|
+
// read the Magic field
|
|
77
|
+
const magic = peCommonHeaderBuffer.readUint16LE(pe_constants_1.IMAGE_NT_HEADERS_GENERIC_MAGIC_OFFSET);
|
|
78
|
+
result.peHeader.is64 = magic === pe_constants_1.IMAGE_NT_OPTIONAL_HDR64_MAGIC;
|
|
79
|
+
result.peHeader.sectionHeadersOffset = result.peHeader.is64 ? pe_constants_1.IMAGE_NT_HEADERS64_SIZE : pe_constants_1.IMAGE_NT_HEADERS32_SIZE;
|
|
80
|
+
result.isPE = true;
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
// console.log(error)
|
|
84
|
+
if (error instanceof Error) {
|
|
85
|
+
result.error = error;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
throw error;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return result;
|
|
92
|
+
});
|
|
93
|
+
const getSectionHeaders = (reader, peHeader) => __awaiter(void 0, void 0, void 0, function* () {
|
|
94
|
+
const sections = new Array(peHeader.numberOfSections);
|
|
95
|
+
const sectionHeadersOffset = peHeader.peHeaderOffset + peHeader.sectionHeadersOffset;
|
|
96
|
+
const sectionsBuffer = yield reader.read(peHeader.numberOfSections * pe_constants_1.IMAGE_SECTION_HEADER_SIZE, sectionHeadersOffset);
|
|
97
|
+
let sectionOffset = 0;
|
|
98
|
+
for (let i = 0; i < peHeader.numberOfSections; i++) {
|
|
99
|
+
// the name is at the beginning of the section header
|
|
100
|
+
let name = '';
|
|
101
|
+
for (let j = 0; j < pe_constants_1.IMAGE_SHORT_NAME_SIZE; j++) {
|
|
102
|
+
if (sectionsBuffer[sectionOffset + j] === 0) {
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
name += String.fromCharCode(sectionsBuffer[sectionOffset + j]);
|
|
106
|
+
}
|
|
107
|
+
const virtualSize = sectionsBuffer.readUInt32LE(sectionOffset + pe_constants_1.IMAGE_SECTION_HEADER_VIRTUALSIZE_OFFSET);
|
|
108
|
+
const virtualAddress = sectionsBuffer.readUInt32LE(sectionOffset + pe_constants_1.IMAGE_SECTION_HEADER_VIRTUALADDRESS_OFFSET);
|
|
109
|
+
const pointerToRawData = sectionsBuffer.readUInt32LE(sectionOffset + pe_constants_1.IMAGE_SECTION_HEADER_POINTERTORAWDATA_OFFSET);
|
|
110
|
+
sections[i] = { name, virtualSize, virtualAddress, pointerToRawData };
|
|
111
|
+
sectionOffset += pe_constants_1.IMAGE_SECTION_HEADER_SIZE;
|
|
112
|
+
}
|
|
113
|
+
return sections;
|
|
114
|
+
});
|
|
115
|
+
// from https://github.com/microsoft/clrmd/blob/main/src/Microsoft.Diagnostics.Runtime/Utilities/PEImage/PEImage.cs#L286C1-L303C10
|
|
116
|
+
const rvaToOffset = (virtualAddress, sections) => {
|
|
117
|
+
if (virtualAddress < 4096) {
|
|
118
|
+
return virtualAddress;
|
|
119
|
+
}
|
|
120
|
+
for (const section of sections) {
|
|
121
|
+
if (section.virtualAddress <= virtualAddress && virtualAddress < section.virtualAddress + section.virtualSize) {
|
|
122
|
+
const offset = section.pointerToRawData + (virtualAddress - section.virtualAddress);
|
|
123
|
+
return offset;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return 0;
|
|
127
|
+
};
|
|
128
|
+
const toHex = (value, length) => {
|
|
129
|
+
return value.toString(16).padStart(length, '0').toUpperCase();
|
|
130
|
+
};
|
|
131
|
+
const getPEFileMetadata = (filename) => __awaiter(void 0, void 0, void 0, function* () {
|
|
132
|
+
var _a;
|
|
133
|
+
const metadata = {
|
|
134
|
+
filename,
|
|
135
|
+
isPE: false,
|
|
136
|
+
arch: pe_constants_1.MachineArchitecture.unknown,
|
|
137
|
+
hasPdbInfo: false,
|
|
138
|
+
pdbAge: 0,
|
|
139
|
+
pdbSig: undefined,
|
|
140
|
+
pdbFilename: '',
|
|
141
|
+
};
|
|
142
|
+
let fileHandle;
|
|
143
|
+
try {
|
|
144
|
+
fileHandle = yield fs_1.default.promises.open(filename, 'r');
|
|
145
|
+
const reader = new filereader_1.FileReader(fileHandle);
|
|
146
|
+
const peHeaderResult = yield readPEHeader(reader);
|
|
147
|
+
if (!peHeaderResult.isPE || peHeaderResult.peHeader === undefined) {
|
|
148
|
+
throw peHeaderResult.error;
|
|
149
|
+
}
|
|
150
|
+
metadata.isPE = true;
|
|
151
|
+
metadata.arch = (_a = peHeaderResult.peHeader) === null || _a === void 0 ? void 0 : _a.architecture;
|
|
152
|
+
// get the DEBUG section
|
|
153
|
+
let debugSectionOffset = 0;
|
|
154
|
+
if (peHeaderResult.peHeader.is64) {
|
|
155
|
+
debugSectionOffset = peHeaderResult.peHeader.peHeaderOffset + pe_constants_1.IMAGE_DATA_DIRECTORY64_OFFSET;
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
debugSectionOffset = peHeaderResult.peHeader.peHeaderOffset + pe_constants_1.IMAGE_DATA_DIRECTORY32_OFFSET;
|
|
159
|
+
}
|
|
160
|
+
debugSectionOffset += pe_constants_1.IMAGE_DIRECTORY_ENTRY_DEBUG * pe_constants_1.IMAGE_DATA_DIRECTORY_SIZE;
|
|
161
|
+
const peCommonHeaderBuffer = yield reader.read(pe_constants_1.IMAGE_DATA_DIRECTORY_SIZE, debugSectionOffset);
|
|
162
|
+
const debugSectionVirtualAddress = peCommonHeaderBuffer.readUInt32LE(pe_constants_1.IMAGE_DATA_DIRECTORY_VIRTUAL_ADDRESS_OFFSET);
|
|
163
|
+
const debugSectionSize = peCommonHeaderBuffer.readUInt32LE(pe_constants_1.IMAGE_DATA_DIRECTORY_SIZE_OFFSET);
|
|
164
|
+
if (debugSectionVirtualAddress === 0) {
|
|
165
|
+
metadata.hasPdbInfo = false;
|
|
166
|
+
return metadata;
|
|
167
|
+
}
|
|
168
|
+
// The "virtual address" needs to be converted into an offset from the begining of the PE file (like peHeaderOffset).
|
|
169
|
+
// To be able to do that, we need to load the array of IMAGE_SECTION_HEADER that follows the optional header;
|
|
170
|
+
// their count is given by the IMAGE_SECTION_HEADER.NumberOfSections field
|
|
171
|
+
const sectionHeaders = yield getSectionHeaders(reader, peHeaderResult.peHeader);
|
|
172
|
+
const debugDirectoriesOffset = rvaToOffset(debugSectionVirtualAddress, sectionHeaders);
|
|
173
|
+
// look inside the different IMAGE_DEBUG_DIRECTORY
|
|
174
|
+
const debugSectionBuffer = yield reader.read(debugSectionSize, debugDirectoriesOffset);
|
|
175
|
+
const entryCount = debugSectionSize / pe_constants_1.IMAGE_DEBUG_DIRECTORY_SIZE;
|
|
176
|
+
let entryOffset = 0;
|
|
177
|
+
for (let i = 0; i < entryCount; i++) {
|
|
178
|
+
const type = debugSectionBuffer.readUInt32LE(entryOffset + pe_constants_1.IMAGE_DEBUG_DIRECTORY_TYPE_OFFSET);
|
|
179
|
+
if (type === pe_constants_1.IMAGE_DEBUG_TYPE_CODEVIEW) {
|
|
180
|
+
const pdbInfoSizeOfData = debugSectionBuffer.readUInt32LE(entryOffset + pe_constants_1.IMAGE_DEBUG_DIRECTORY_SIZEOFDATA_OFFSET);
|
|
181
|
+
const pdbInfoAddress = debugSectionBuffer.readUInt32LE(entryOffset + pe_constants_1.IMAGE_DEBUG_DIRECTORY_ADDRESSOFRAWDATA_OFFSET);
|
|
182
|
+
const pdbInfoOffset = rvaToOffset(pdbInfoAddress, sectionHeaders);
|
|
183
|
+
// we are insterested in the .pdb filename that goes beyond the CV_INFO_PDB70 structure
|
|
184
|
+
const pdbInfoBuffer = yield reader.read(pdbInfoSizeOfData, pdbInfoOffset);
|
|
185
|
+
const pdbSignature = pdbInfoBuffer.readUInt32LE(pe_constants_1.CV_INFO_SIGNATURE_OFFSET);
|
|
186
|
+
if (pdbSignature === pe_constants_1.PDB70_SIGNATURE) {
|
|
187
|
+
metadata.hasPdbInfo = true;
|
|
188
|
+
metadata.pdbAge = pdbInfoBuffer.readUInt32LE(pe_constants_1.CV_INFO_AGE_OFFSET);
|
|
189
|
+
// read the GUID that spans 16 bytes and save it as
|
|
190
|
+
// xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
|
191
|
+
metadata.pdbSig =
|
|
192
|
+
toHex(pdbInfoBuffer.readUInt32LE(pe_constants_1.CV_INFO_GUID_OFFSET), 8) +
|
|
193
|
+
'-' +
|
|
194
|
+
toHex(pdbInfoBuffer.readUInt16LE(pe_constants_1.CV_INFO_GUID_OFFSET + 4), 4) +
|
|
195
|
+
'-' +
|
|
196
|
+
toHex(pdbInfoBuffer.readUInt16LE(pe_constants_1.CV_INFO_GUID_OFFSET + 6), 4) +
|
|
197
|
+
'-' +
|
|
198
|
+
toHex(pdbInfoBuffer.readUInt16BE(pe_constants_1.CV_INFO_GUID_OFFSET + 8), 4) +
|
|
199
|
+
'-' +
|
|
200
|
+
toHex(pdbInfoBuffer.readUInt16BE(pe_constants_1.CV_INFO_GUID_OFFSET + 10), 4) +
|
|
201
|
+
toHex(pdbInfoBuffer.readUInt16BE(pe_constants_1.CV_INFO_GUID_OFFSET + 12), 4) +
|
|
202
|
+
toHex(pdbInfoBuffer.readUInt16BE(pe_constants_1.CV_INFO_GUID_OFFSET + 14), 4);
|
|
203
|
+
// read .pdb filename that follows in the structure
|
|
204
|
+
// --> read the characters up to pdbInfoSizeOfData
|
|
205
|
+
// this is not working maybe due to the \ that are replaced by \\
|
|
206
|
+
// const pdbFilename = pdbInfoBuffer.toString('utf-8', CV_INFO_PDB_FILENAME_OFFSET, pdbInfoSizeOfData - CV_INFO_PDB_FILENAME_OFFSET + 1)
|
|
207
|
+
let pdbFilename = '';
|
|
208
|
+
for (let j = pe_constants_1.CV_INFO_PDB_FILENAME_OFFSET; j < pdbInfoSizeOfData; j++) {
|
|
209
|
+
if (pdbInfoBuffer[j] === 0) {
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
pdbFilename += String.fromCharCode(pdbInfoBuffer[j]);
|
|
213
|
+
}
|
|
214
|
+
metadata.pdbFilename = pdbFilename;
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
metadata.hasPdbInfo = false;
|
|
218
|
+
}
|
|
219
|
+
return metadata;
|
|
220
|
+
}
|
|
221
|
+
entryOffset += pe_constants_1.IMAGE_DEBUG_DIRECTORY_SIZE;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
catch (error) {
|
|
225
|
+
// console.log(error)
|
|
226
|
+
if (error instanceof Error) {
|
|
227
|
+
metadata.error = error;
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
throw error;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
finally {
|
|
234
|
+
if (fileHandle) {
|
|
235
|
+
yield fileHandle.close();
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return metadata;
|
|
239
|
+
});
|
|
240
|
+
exports.getPEFileMetadata = getPEFileMetadata;
|
|
241
|
+
const getBuildId = (fileMetadata) => {
|
|
242
|
+
if (fileMetadata.isPE && fileMetadata.hasPdbInfo) {
|
|
243
|
+
return `${fileMetadata.pdbSig}_${fileMetadata.pdbAge}`;
|
|
244
|
+
}
|
|
245
|
+
return '?_?';
|
|
246
|
+
};
|
|
247
|
+
exports.getBuildId = getBuildId;
|
|
248
|
+
//# sourceMappingURL=pe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pe.js","sourceRoot":"","sources":["../../../src/commands/pe-symbols/pe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { UploadStatus } from '../../helpers/upload';
|
|
2
|
+
import { MappingMetadata } from './interfaces';
|
|
3
|
+
export interface UploadInfo {
|
|
4
|
+
fileType: string;
|
|
5
|
+
location: string;
|
|
6
|
+
platform: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const renderCommandInfo: (dryRun: boolean, symbolsLocations: string[]) => string;
|
|
9
|
+
export declare const renderCommandSummary: (statuses: UploadStatus[], duration: number, dryRun: boolean) => string;
|
|
10
|
+
export declare const renderEventPayload: (payload: string) => string;
|
|
11
|
+
export declare const renderMissingPdbFile: (pdbFilename: string, dllPath: string) => string;
|
|
12
|
+
export declare const renderGitWarning: (errorMessage: string) => string;
|
|
13
|
+
export declare const renderWarning: (errorMessage: string) => string;
|
|
14
|
+
export declare const renderArgumentMissingError: (argumentName: string) => string;
|
|
15
|
+
export declare const renderInvalidSymbolsLocation: (symbolsDirectory: string) => string;
|
|
16
|
+
export declare const renderGeneralizedError: (error: any) => string;
|
|
17
|
+
export declare const renderFailedUpload: (filePath: string, errorMessage: string) => string;
|
|
18
|
+
export declare const renderRetriedUpload: (filePath: string, errorMessage: string, attempt: number) => string;
|
|
19
|
+
export declare const renderUpload: (filePath: string, metadata: MappingMetadata) => string;
|
|
@@ -0,0 +1,87 @@
|
|
|
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.renderRetriedUpload = exports.renderFailedUpload = exports.renderGeneralizedError = exports.renderInvalidSymbolsLocation = exports.renderArgumentMissingError = exports.renderWarning = exports.renderGitWarning = exports.renderMissingPdbFile = exports.renderEventPayload = exports.renderCommandSummary = exports.renderCommandInfo = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const formatting_1 = require("../../helpers/formatting");
|
|
9
|
+
const upload_1 = require("../../helpers/upload");
|
|
10
|
+
const utils_1 = require("../../helpers/utils");
|
|
11
|
+
const renderCommandInfo = (dryRun, symbolsLocations) => {
|
|
12
|
+
let fullString = '';
|
|
13
|
+
if (dryRun) {
|
|
14
|
+
fullString += chalk_1.default.yellow(`${formatting_1.ICONS.WARNING} DRY-RUN MODE ENABLED. WILL NOT UPLOAD SYMBOLS\n`);
|
|
15
|
+
}
|
|
16
|
+
const startStr = chalk_1.default.green('Starting upload. \n');
|
|
17
|
+
fullString += startStr;
|
|
18
|
+
fullString += chalk_1.default.green(`Uploading symbols from location(s): ${symbolsLocations.join(' ')}\n`);
|
|
19
|
+
fullString += chalk_1.default.green(`After upload is successful symbol files will be processed and ready to use within the next 5 minutes.\n`);
|
|
20
|
+
return fullString;
|
|
21
|
+
};
|
|
22
|
+
exports.renderCommandInfo = renderCommandInfo;
|
|
23
|
+
const renderCommandSummary = (statuses, duration, dryRun) => {
|
|
24
|
+
const results = new Map();
|
|
25
|
+
statuses.forEach((status) => {
|
|
26
|
+
if (!results.has(status)) {
|
|
27
|
+
results.set(status, 0);
|
|
28
|
+
}
|
|
29
|
+
results.set(status, results.get(status) + 1);
|
|
30
|
+
});
|
|
31
|
+
const output = ['', chalk_1.default.bold('Command summary:')];
|
|
32
|
+
if (results.get(upload_1.UploadStatus.Failure)) {
|
|
33
|
+
output.push(chalk_1.default.red(`${formatting_1.ICONS.FAILED} Some symbol files may not been uploaded correctly.`));
|
|
34
|
+
}
|
|
35
|
+
else if (results.get(upload_1.UploadStatus.Skipped)) {
|
|
36
|
+
output.push(chalk_1.default.yellow(`${formatting_1.ICONS.WARNING} Some symbol files have been skipped.`));
|
|
37
|
+
}
|
|
38
|
+
else if (results.get(upload_1.UploadStatus.Success)) {
|
|
39
|
+
if (dryRun) {
|
|
40
|
+
output.push(chalk_1.default.green(`${formatting_1.ICONS.SUCCESS} [DRYRUN] Handled symbol ${(0, utils_1.pluralize)(results.get(upload_1.UploadStatus.Success), 'file', 'files')} with success in ${duration} seconds.`));
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
output.push(chalk_1.default.green(`${formatting_1.ICONS.SUCCESS} Uploaded symbol ${(0, utils_1.pluralize)(results.get(upload_1.UploadStatus.Success), 'file', 'files')} in ${duration} seconds.`));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
output.push(chalk_1.default.yellow(`${formatting_1.ICONS.WARNING} No actions were taken. Did you specify the correct path?`));
|
|
48
|
+
}
|
|
49
|
+
return output.join('\n') + '\n';
|
|
50
|
+
};
|
|
51
|
+
exports.renderCommandSummary = renderCommandSummary;
|
|
52
|
+
const renderEventPayload = (payload) => chalk_1.default.white(`${formatting_1.ICONS.SUCCESS} Event payload = ${payload}\n`);
|
|
53
|
+
exports.renderEventPayload = renderEventPayload;
|
|
54
|
+
const renderMissingPdbFile = (pdbFilename, dllPath) => chalk_1.default.yellow(`${formatting_1.ICONS.WARNING} Error: Missing '${pdbFilename}' file expected for ${dllPath}`);
|
|
55
|
+
exports.renderMissingPdbFile = renderMissingPdbFile;
|
|
56
|
+
const renderGitWarning = (errorMessage) => chalk_1.default.yellow(`${formatting_1.ICONS.WARNING} An error occured while invoking git: ${errorMessage}
|
|
57
|
+
Make sure the command is running within your git repository to fully leverage Datadog's git integration.
|
|
58
|
+
To ignore this warning use the --disable-git flag.\n`);
|
|
59
|
+
exports.renderGitWarning = renderGitWarning;
|
|
60
|
+
const renderWarning = (errorMessage) => chalk_1.default.yellow(`${formatting_1.ICONS.WARNING} ${errorMessage}.\n`);
|
|
61
|
+
exports.renderWarning = renderWarning;
|
|
62
|
+
const renderArgumentMissingError = (argumentName) => chalk_1.default.red(`${formatting_1.ICONS.FAILED} Error: parameter "${argumentName}" is required.\n`);
|
|
63
|
+
exports.renderArgumentMissingError = renderArgumentMissingError;
|
|
64
|
+
const renderInvalidSymbolsLocation = (symbolsDirectory) => chalk_1.default.red(`${formatting_1.ICONS.FAILED} Failed to get symbols files - ${symbolsDirectory} is not a file, nor a directory.\n`);
|
|
65
|
+
exports.renderInvalidSymbolsLocation = renderInvalidSymbolsLocation;
|
|
66
|
+
const renderGeneralizedError = (error) => {
|
|
67
|
+
let str = chalk_1.default.red(`${formatting_1.ICONS.FAILED} Error: ${error}\n`);
|
|
68
|
+
str += error.stack;
|
|
69
|
+
return str;
|
|
70
|
+
};
|
|
71
|
+
exports.renderGeneralizedError = renderGeneralizedError;
|
|
72
|
+
const renderFailedUpload = (filePath, errorMessage) => {
|
|
73
|
+
const filePathBold = `[${chalk_1.default.bold.dim(filePath)}]`;
|
|
74
|
+
return chalk_1.default.red(`${formatting_1.ICONS.FAILED} Failed upload for ${filePathBold}: ${errorMessage}\n`);
|
|
75
|
+
};
|
|
76
|
+
exports.renderFailedUpload = renderFailedUpload;
|
|
77
|
+
const renderRetriedUpload = (filePath, errorMessage, attempt) => {
|
|
78
|
+
const sourcemapPathBold = `[${chalk_1.default.bold.dim(filePath)}]`;
|
|
79
|
+
return chalk_1.default.yellow(`[attempt ${attempt}] Retrying upload ${sourcemapPathBold}: ${errorMessage}\n`);
|
|
80
|
+
};
|
|
81
|
+
exports.renderRetriedUpload = renderRetriedUpload;
|
|
82
|
+
const renderUpload = (filePath, metadata) => `Uploading debug info for ${filePath} (arch:${metadata.arch} \
|
|
83
|
+
pdb_age:${metadata.pdb_age} \
|
|
84
|
+
pdb_sig:${metadata.pdb_sig} \
|
|
85
|
+
filename:${metadata.filename})\n`;
|
|
86
|
+
exports.renderUpload = renderUpload;
|
|
87
|
+
//# sourceMappingURL=renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../../src/commands/pe-symbols/renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Command } from 'clipanion';
|
|
2
|
+
export declare class UploadCommand extends Command {
|
|
3
|
+
static paths: string[][];
|
|
4
|
+
static usage: import("clipanion").Usage;
|
|
5
|
+
private disableGit;
|
|
6
|
+
private dryRun;
|
|
7
|
+
private configPath;
|
|
8
|
+
private maxConcurrency;
|
|
9
|
+
private repositoryUrl;
|
|
10
|
+
private replaceExisting;
|
|
11
|
+
private symbolsLocations;
|
|
12
|
+
private cliVersion;
|
|
13
|
+
private config;
|
|
14
|
+
private gitData?;
|
|
15
|
+
private fips;
|
|
16
|
+
private fipsIgnoreError;
|
|
17
|
+
private fipsConfig;
|
|
18
|
+
execute(): Promise<0 | 1>;
|
|
19
|
+
private getApiKeyValidator;
|
|
20
|
+
private getGitDataPayload;
|
|
21
|
+
private getGitMetadata;
|
|
22
|
+
private getPESymbolSource;
|
|
23
|
+
private getArchitecture;
|
|
24
|
+
private getMappingMetadata;
|
|
25
|
+
private getMetricsLogger;
|
|
26
|
+
private getPESymbolFiles;
|
|
27
|
+
private removeBuildIdDuplicates;
|
|
28
|
+
private getFileInSameFolder;
|
|
29
|
+
private getAssociatedPdbFilename;
|
|
30
|
+
private performPESymbolsUpload;
|
|
31
|
+
private verifyParameters;
|
|
32
|
+
}
|