@vscode/telemetry-extractor 1.19.0 → 1.20.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/lib/operations.js +72 -0
- package/out/lib/operations.js.map +1 -1
- package/out/lib/parser.js +46 -5
- package/out/lib/parser.js.map +1 -1
- package/out/lib/save-declarations.js +38 -4
- package/out/lib/save-declarations.js.map +1 -1
- package/out/lib/ts-parser.js +28 -0
- package/out/lib/ts-parser.js.map +1 -1
- package/package.json +1 -1
- package/src/lib/operations.ts +78 -0
- package/src/lib/parser.ts +62 -8
- package/src/lib/save-declarations.ts +53 -4
- package/src/lib/ts-parser.ts +38 -0
package/out/lib/operations.js
CHANGED
|
@@ -38,6 +38,12 @@ function merge(target, source) {
|
|
|
38
38
|
});
|
|
39
39
|
// We combine their properties together if the event already exists
|
|
40
40
|
if (found) {
|
|
41
|
+
if (target instanceof events_1.Events && source instanceof events_1.Events && found instanceof events_1.Event && item instanceof events_1.Event) {
|
|
42
|
+
if (!sameEventDefinition(found, item)) {
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
41
47
|
found.properties = found.properties.concat(item.properties);
|
|
42
48
|
}
|
|
43
49
|
else {
|
|
@@ -46,6 +52,72 @@ function merge(target, source) {
|
|
|
46
52
|
}
|
|
47
53
|
}
|
|
48
54
|
exports.merge = merge;
|
|
55
|
+
function sameEventDefinition(left, right) {
|
|
56
|
+
return stableSerialize(eventToComparable(left)) === stableSerialize(eventToComparable(right));
|
|
57
|
+
}
|
|
58
|
+
function eventToComparable(event) {
|
|
59
|
+
const properties = event.properties.map(propertyToComparable);
|
|
60
|
+
properties.sort((a, b) => stableSerialize(a).localeCompare(stableSerialize(b)));
|
|
61
|
+
return {
|
|
62
|
+
name: event.name,
|
|
63
|
+
properties
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function propertyToComparable(property) {
|
|
67
|
+
if (property instanceof common_properties_1.Property) {
|
|
68
|
+
return {
|
|
69
|
+
type: 'property',
|
|
70
|
+
name: property.name,
|
|
71
|
+
classification: property.classification,
|
|
72
|
+
purpose: property.purpose,
|
|
73
|
+
expiration: property.expiration,
|
|
74
|
+
owner: property.owner,
|
|
75
|
+
comment: property.comment,
|
|
76
|
+
endPoint: property.endPoint,
|
|
77
|
+
isMeasurement: property.isMeasurement
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
if (property instanceof events_1.Metadata) {
|
|
81
|
+
return {
|
|
82
|
+
type: 'metadata',
|
|
83
|
+
name: property.name,
|
|
84
|
+
value: property.value
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
if (property instanceof events_1.Include) {
|
|
88
|
+
return {
|
|
89
|
+
type: 'include',
|
|
90
|
+
includeNames: [...property.includeNames].sort()
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
if (property instanceof events_1.Inline) {
|
|
94
|
+
return {
|
|
95
|
+
type: 'inline',
|
|
96
|
+
inlineName: property.inlineName,
|
|
97
|
+
inlines: [...property.inlines].sort()
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
type: 'wildcard',
|
|
102
|
+
entries: property.entries.map(entry => ({
|
|
103
|
+
prefix: entry.prefix,
|
|
104
|
+
classification: entry.classification,
|
|
105
|
+
endpoint: entry.endpoint
|
|
106
|
+
})).sort((a, b) => stableSerialize(a).localeCompare(stableSerialize(b)))
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
function stableSerialize(value) {
|
|
110
|
+
if (Array.isArray(value)) {
|
|
111
|
+
return `[${value.map(stableSerialize).join(',')}]`;
|
|
112
|
+
}
|
|
113
|
+
if (value && typeof value === 'object') {
|
|
114
|
+
const entries = Object.entries(value)
|
|
115
|
+
.sort(([left], [right]) => left.localeCompare(right))
|
|
116
|
+
.map(([key, entryValue]) => `${JSON.stringify(key)}:${stableSerialize(entryValue)}`);
|
|
117
|
+
return `{${entries.join(',')}}`;
|
|
118
|
+
}
|
|
119
|
+
return JSON.stringify(value);
|
|
120
|
+
}
|
|
49
121
|
// Searches the object for an event or fragment of the specific name
|
|
50
122
|
// If found returns, if not found creates it, places it in the array, and then returns
|
|
51
123
|
function findOrCreate(searchTarget, name) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/lib/operations.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAuC;AACvC,kCAAkC;AAClC,2CAAkD;AAClD,qCAA6F;AAC7F,2DAA+C;AAC/C,qDAAuC;AACvC,2CAA6B;AAE7B,SAAgB,KAAK,CAAC,MAA0B,EAAE,MAA0B;IACxE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACvC,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,mEAAmE;QACnE,IAAI,KAAK,EAAE,CAAC;YACR,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;AACL,CAAC;
|
|
1
|
+
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/lib/operations.ts"],"names":[],"mappings":"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"}
|
package/out/lib/parser.js
CHANGED
|
@@ -40,11 +40,13 @@ class Parser {
|
|
|
40
40
|
excludedDirs;
|
|
41
41
|
applyEndpoints;
|
|
42
42
|
lowerCaseEvents;
|
|
43
|
+
eventDefinitions;
|
|
43
44
|
constructor(sourceDirs, excludedDirs, applyEndpoints, lowerCaseEvents) {
|
|
44
45
|
this.sourceDirs = sourceDirs;
|
|
45
46
|
this.excludedDirs = excludedDirs;
|
|
46
47
|
this.applyEndpoints = applyEndpoints;
|
|
47
48
|
this.lowerCaseEvents = lowerCaseEvents;
|
|
49
|
+
this.eventDefinitions = new Map();
|
|
48
50
|
}
|
|
49
51
|
toRipGrepOption(dir) {
|
|
50
52
|
while (dir.startsWith('/') || dir.startsWith('\\')) {
|
|
@@ -55,10 +57,10 @@ class Parser {
|
|
|
55
57
|
extractComments(absoluteFilePaths, commentMatcher, collector) {
|
|
56
58
|
absoluteFilePaths.forEach(absoluteFilePath => {
|
|
57
59
|
if (absoluteFilePath) {
|
|
58
|
-
const fileContents = fs.readFileSync(absoluteFilePath);
|
|
60
|
+
const fileContents = fs.readFileSync(absoluteFilePath).toString();
|
|
59
61
|
let match;
|
|
60
|
-
while ((match = commentMatcher.exec(fileContents
|
|
61
|
-
collector(absoluteFilePath, match);
|
|
62
|
+
while ((match = commentMatcher.exec(fileContents))) {
|
|
63
|
+
collector(absoluteFilePath, match, fileContents);
|
|
62
64
|
}
|
|
63
65
|
}
|
|
64
66
|
});
|
|
@@ -136,17 +138,26 @@ class Parser {
|
|
|
136
138
|
}
|
|
137
139
|
findEvents(sourceDir) {
|
|
138
140
|
const filesWithEvents = this.asAbsoluteFilePaths(this.findFilesWithEvents(sourceDir));
|
|
141
|
+
const eventSignatures = new Map();
|
|
139
142
|
// Using [\s\S]* instead of .* since the latter does not match when using /m option
|
|
140
143
|
const eventMatcher = /\/\*\s*__GDPR__\b([\s\S]*?)\*\//mg;
|
|
141
144
|
const eventDeclarations = new events_1.Events();
|
|
142
|
-
this.extractComments(filesWithEvents, eventMatcher, (filePath, match) => {
|
|
145
|
+
this.extractComments(filesWithEvents, eventMatcher, (filePath, match, fileContents) => {
|
|
143
146
|
try {
|
|
144
147
|
const eventDeclaration = JSON.parse(`{ ${match[1]} }`);
|
|
145
148
|
let eventName = Object.keys(eventDeclaration)[0];
|
|
146
149
|
eventName = this.lowerCaseEvents ? eventName.toLowerCase() : eventName;
|
|
150
|
+
const eventProperties = eventDeclaration[Object.keys(eventDeclaration)[0]];
|
|
151
|
+
const currentSignature = this.stableSerialize(eventProperties);
|
|
152
|
+
const lineNumber = this.getLineNumber(fileContents, match.index);
|
|
153
|
+
this.addEventDefinition(eventName, currentSignature, `${filePath}:${lineNumber}`);
|
|
154
|
+
const existingSignature = eventSignatures.get(eventName);
|
|
155
|
+
if (existingSignature) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
eventSignatures.set(eventName, currentSignature);
|
|
147
159
|
const event = (0, operations_1.findOrCreate)(eventDeclarations, eventName);
|
|
148
160
|
// Get the propeties which the event possesses
|
|
149
|
-
const eventProperties = eventDeclaration[Object.keys(eventDeclaration)[0]];
|
|
150
161
|
(0, operations_1.populateProperties)(eventProperties, event, this.applyEndpoints);
|
|
151
162
|
}
|
|
152
163
|
catch (error) {
|
|
@@ -157,6 +168,36 @@ class Parser {
|
|
|
157
168
|
});
|
|
158
169
|
return eventDeclarations;
|
|
159
170
|
}
|
|
171
|
+
getEventDefinitions() {
|
|
172
|
+
const definitions = new Map();
|
|
173
|
+
for (const [eventName, entries] of this.eventDefinitions.entries()) {
|
|
174
|
+
definitions.set(eventName, [...entries]);
|
|
175
|
+
}
|
|
176
|
+
return definitions;
|
|
177
|
+
}
|
|
178
|
+
addEventDefinition(eventName, signature, location) {
|
|
179
|
+
const existing = this.eventDefinitions.get(eventName) ?? [];
|
|
180
|
+
existing.push({ signature, location });
|
|
181
|
+
this.eventDefinitions.set(eventName, existing);
|
|
182
|
+
}
|
|
183
|
+
getLineNumber(fileContents, index) {
|
|
184
|
+
if (index === undefined) {
|
|
185
|
+
return 1;
|
|
186
|
+
}
|
|
187
|
+
return fileContents.slice(0, index).split(/\r\n|\r|\n/).length;
|
|
188
|
+
}
|
|
189
|
+
stableSerialize(value) {
|
|
190
|
+
if (Array.isArray(value)) {
|
|
191
|
+
return `[${value.map((entry) => this.stableSerialize(entry)).join(',')}]`;
|
|
192
|
+
}
|
|
193
|
+
if (value && typeof value === 'object') {
|
|
194
|
+
const entries = Object.entries(value)
|
|
195
|
+
.sort(([left], [right]) => left.localeCompare(right))
|
|
196
|
+
.map(([key, entryValue]) => `${JSON.stringify(key)}:${this.stableSerialize(entryValue)}`);
|
|
197
|
+
return `{${entries.join(',')}}`;
|
|
198
|
+
}
|
|
199
|
+
return JSON.stringify(value);
|
|
200
|
+
}
|
|
160
201
|
// Utilizes a regex to find the files containing the specific pattern
|
|
161
202
|
findFiles(ripgrepPattern, sourceDir) {
|
|
162
203
|
const relativeExclusions = (0, operations_1.makeExclusionsRelativeToSource)(sourceDir, this.excludedDirs);
|
package/out/lib/parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/lib/parser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAuC;AACvC,kCAAkC;AAClC,6CAAyC;AACzC,2CAA6B;AAC7B,kDAAoC;AACpC,uCAAyB;AACzB,iGAAiG;AACjG,2CAAwC;AACxC,2DAAiE;AACjE,qCAAkC;AAElC,6CAAuG;
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/lib/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -86,19 +86,48 @@ function validateOutputtedDeclarations(declarations) {
|
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
if (failedValidation) {
|
|
89
|
-
|
|
89
|
+
return true;
|
|
90
90
|
}
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
function mergeEventDefinitions(target, definitions, source, prefix = '') {
|
|
94
|
+
for (const [eventName, entries] of definitions.entries()) {
|
|
95
|
+
const prefixedName = `${prefix}${eventName}`;
|
|
96
|
+
const existing = target.get(prefixedName) ?? [];
|
|
97
|
+
existing.push(...entries.map((entry) => ({ ...entry, source })));
|
|
98
|
+
target.set(prefixedName, existing);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function reportDuplicateEventConflicts(definitions) {
|
|
102
|
+
let hasConflicts = false;
|
|
103
|
+
for (const [eventName, entries] of definitions.entries()) {
|
|
104
|
+
const signatures = new Set(entries.map(entry => entry.signature));
|
|
105
|
+
if (signatures.size <= 1) {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
hasConflicts = true;
|
|
109
|
+
const uniqueLocations = [...new Set(entries.map(entry => `${entry.location.replace(/\\/g, '/')} (${entry.source})`))];
|
|
110
|
+
console.error(`Duplicate telemetry event declaration '${eventName}' has conflicting details at:`);
|
|
111
|
+
uniqueLocations.forEach(location => console.error(` - ${location}`));
|
|
112
|
+
}
|
|
113
|
+
return hasConflicts;
|
|
91
114
|
}
|
|
92
115
|
async function extractAndResolveDeclarations(sourceSpecs) {
|
|
93
116
|
try {
|
|
94
117
|
const allDeclarations = { events: new events_1.Events(), commonProperties: new common_properties_1.CommonProperties(), fragments: new fragments_1.Fragments() };
|
|
95
118
|
const allTypeScriptDeclarations = Object.create(null);
|
|
119
|
+
const allEventDefinitions = new Map();
|
|
96
120
|
for (const spec of sourceSpecs) {
|
|
97
|
-
|
|
121
|
+
(0, logger_1.logMessage)('...extracting', spec.parserOptions.silenceOutput);
|
|
122
|
+
const parser = new parser_1.Parser(spec.sourceDirs, spec.excludedDirs, spec.parserOptions.applyEndpoints, spec.parserOptions.lowerCaseEvents);
|
|
123
|
+
let declarations = await parser.extractDeclarations();
|
|
124
|
+
declarations = (0, declarations_1.resolveDeclarations)(declarations, spec.parserOptions.verbose);
|
|
98
125
|
let typescriptDeclarations = Object.create(null);
|
|
99
126
|
// The parser does not know how to handle multiple source directories due to different TS configs, so we manually have to parse each source dir
|
|
100
127
|
spec.sourceDirs.forEach((dir) => {
|
|
101
|
-
|
|
128
|
+
const tsParser = new ts_parser_1.TsParser(dir, spec.excludedDirs, spec.parserOptions.applyEndpoints, spec.parserOptions.lowerCaseEvents);
|
|
129
|
+
Object.assign(typescriptDeclarations, tsParser.parseFiles());
|
|
130
|
+
mergeEventDefinitions(allEventDefinitions, tsParser.getEventDefinitions(), 'TS', spec.parserOptions.eventPrefix);
|
|
102
131
|
});
|
|
103
132
|
if (spec.parserOptions.eventPrefix !== '') {
|
|
104
133
|
declarations.events.dataPoints = declarations.events.dataPoints.map((event) => {
|
|
@@ -120,7 +149,9 @@ async function extractAndResolveDeclarations(sourceSpecs) {
|
|
|
120
149
|
allDeclarations.commonProperties.properties = allDeclarations.commonProperties.properties.concat(declarations.commonProperties.properties);
|
|
121
150
|
allDeclarations.events.dataPoints = allDeclarations.events.dataPoints.concat(declarations.events.dataPoints);
|
|
122
151
|
Object.assign(allTypeScriptDeclarations, typescriptDeclarations);
|
|
152
|
+
mergeEventDefinitions(allEventDefinitions, parser.getEventDefinitions(), 'GDPR', spec.parserOptions.eventPrefix);
|
|
123
153
|
}
|
|
154
|
+
const hasDuplicateEventConflicts = reportDuplicateEventConflicts(allEventDefinitions);
|
|
124
155
|
const formattedDeclarations = await (0, object_converter_1.transformOutput)(allDeclarations);
|
|
125
156
|
for (const dec in allTypeScriptDeclarations) {
|
|
126
157
|
// If there's typescript declarations but we returned a null object
|
|
@@ -130,7 +161,10 @@ async function extractAndResolveDeclarations(sourceSpecs) {
|
|
|
130
161
|
}
|
|
131
162
|
formattedDeclarations.events[dec] = allTypeScriptDeclarations[dec];
|
|
132
163
|
}
|
|
133
|
-
validateOutputtedDeclarations(formattedDeclarations);
|
|
164
|
+
const hasPropertyValidationErrors = validateOutputtedDeclarations(formattedDeclarations);
|
|
165
|
+
if (hasDuplicateEventConflicts || hasPropertyValidationErrors || process.exitCode === 1) {
|
|
166
|
+
throw new Error('Validation failed, please see logs for more information');
|
|
167
|
+
}
|
|
134
168
|
return Promise.resolve(deepSortKeys(formattedDeclarations));
|
|
135
169
|
}
|
|
136
170
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save-declarations.js","sourceRoot":"","sources":["../../src/lib/save-declarations.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAuC;AACvC,kCAAkC;AAClC,2CAA6B;AAC7B,qCAAkC;AAClC,0DAA4C;AAC5C,iDAA0F;AAC1F,yDAAqD;AACrD,qCAAkC;AAClC,2DAAuD;AACvD,2CAAuC;AACvC,+CAAiD;AAEjD,qCAAsC;AACtC,2CAAwC;
|
|
1
|
+
{"version":3,"file":"save-declarations.js","sourceRoot":"","sources":["../../src/lib/save-declarations.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAuC;AACvC,kCAAkC;AAClC,2CAA6B;AAC7B,qCAAkC;AAClC,0DAA4C;AAC5C,iDAA0F;AAC1F,yDAAqD;AACrD,qCAAkC;AAClC,2DAAuD;AACvD,2CAAuC;AACvC,+CAAiD;AAEjD,qCAAsC;AACtC,2CAAwC;AASxC,SAAS,YAAY,CAAC,GAAY;IAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,MAAM,GAA4B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACxC,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAE,GAA+B,CAAC,GAAG,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAgB,WAAW,CAAC,SAAiB,EAAE,QAAgB,EAAE,QAAgB,EAAE,mBAA4B;IAC3G,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,IAAA,mBAAU,EAAC,6CAA6C,EAAE,CAAC,mBAAmB,CAAC,CAAC;QAChF,OAAO;IACX,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,QAAQ,OAAO,CAAC,CAAC;IAC/D,IAAA,mBAAU,EAAC,cAAc,UAAU,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC;IAC7D,OAAO,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAClD,CAAC;AATD,kCASC;AAEM,KAAK,UAAU,sBAAsB,CAAC,UAAyB,EAAE,YAA2B,EAAE,OAAsB;IACvH,IAAA,mBAAU,EAAC,eAAe,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACrG,IAAI,YAAY,GAAG,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC;IACtD,YAAY,GAAG,IAAA,kCAAmB,EAAC,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,OAAO,YAAY,CAAC;AACxB,CAAC;AAND,wDAMC;AAED;;;GAGG;AACH,SAAS,6BAA6B,CAAC,YAAmC;IACtE,MAAM,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,CAAC;IACvD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;IACnC,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,gBAAgB,GAAG,IAAI,CAAC;gBACxB,OAAO,CAAC,KAAK,CAAC,YAAY,QAAQ,aAAa,KAAK,qCAAqC,CAAC,CAAC;YAC/F,CAAC;QACL,CAAC;IACL,CAAC;IACD,IAAI,gBAAgB,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,qBAAqB,CAC1B,MAAyC,EACzC,WAA2C,EAC3C,MAAqB,EACrB,MAAM,GAAG,EAAE;IAEX,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;QACvD,MAAM,YAAY,GAAG,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAChD,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;AACL,CAAC;AAED,SAAS,6BAA6B,CAAC,WAA8C;IACjF,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QAClE,IAAI,UAAU,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;YACvB,SAAS;QACb,CAAC;QAED,YAAY,GAAG,IAAI,CAAC;QACpB,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QACtH,OAAO,CAAC,KAAK,CAAC,0CAA0C,SAAS,+BAA+B,CAAC,CAAC;QAClG,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,YAAY,CAAC;AACxB,CAAC;AAEM,KAAK,UAAU,6BAA6B,CAAC,WAA8B;IAC9E,IAAI,CAAC;QACD,MAAM,eAAe,GAAiB,EAAE,MAAM,EAAE,IAAI,eAAM,EAAE,EAAE,gBAAgB,EAAE,IAAI,oCAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,qBAAS,EAAE,EAAE,CAAC;QACrI,MAAM,yBAAyB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAgC,CAAC;QACpE,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC7B,IAAA,mBAAU,EAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;YACrI,IAAI,YAAY,GAAG,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC;YACtD,YAAY,GAAG,IAAA,kCAAmB,EAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC7E,IAAI,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACjD,+IAA+I;YAC/I,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC5B,MAAM,QAAQ,GAAG,IAAI,oBAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;gBAC7H,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC7D,qBAAqB,CAAC,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YACrH,CAAC,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,KAAK,EAAE,EAAE,CAAC;gBACxC,YAAY,CAAC,MAAM,CAAC,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;oBAC1E,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC;oBACzD,OAAO,KAAK,CAAC;gBACjB,CAAC,CAAC,CAAC;gBACH,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAChD,kEAAkE;gBAClE,KAAK,MAAM,GAAG,IAAI,sBAAsB,EAAE,CAAC;oBACvC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,GAAG,CAAC,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;gBAC5F,CAAC;gBACD,sBAAsB,GAAG,mBAAmB,CAAC;YACjD,CAAC;YACD,IAAI,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;gBACtC,IAAA,8BAAgB,EAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YAC1E,CAAC;YACD,+DAA+D;YAC/D,gGAAgG;YAChG,eAAe,CAAC,gBAAgB,CAAC,UAAU,GAAG,eAAe,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YAC3I,eAAe,CAAC,MAAM,CAAC,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC7G,MAAM,CAAC,MAAM,CAAC,yBAAyB,EAAE,sBAAsB,CAAC,CAAC;YACjE,qBAAqB,CAAC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACrH,CAAC;QACD,MAAM,0BAA0B,GAAG,6BAA6B,CAAC,mBAAmB,CAAC,CAAC;QACtF,MAAM,qBAAqB,GAAG,MAAM,IAAA,kCAAe,EAAC,eAAe,CAAC,CAAC;QACrE,KAAK,MAAM,GAAG,IAAI,yBAAyB,EAAE,CAAC;YAC1C,mEAAmE;YACnE,6DAA6D;YAC7D,IAAI,qBAAqB,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC7C,qBAAqB,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACvD,CAAC;YACD,qBAAqB,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC;QACvE,CAAC;QACD,MAAM,2BAA2B,GAAG,6BAA6B,CAAC,qBAAqB,CAAC,CAAC;QACzF,IAAI,0BAA0B,IAAI,2BAA2B,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACtF,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,qBAAqB,CAA0B,CAAC,CAAC;IACzF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC;QACjC,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;AACL,CAAC;AA1DD,sEA0DC"}
|
package/out/lib/ts-parser.js
CHANGED
|
@@ -192,11 +192,13 @@ class TsParser {
|
|
|
192
192
|
applyEndpoints;
|
|
193
193
|
lowerCaseEvents;
|
|
194
194
|
project;
|
|
195
|
+
eventDefinitions;
|
|
195
196
|
constructor(sourceDir, excludedDirs, applyEndpoints, lowerCaseEvents) {
|
|
196
197
|
this.sourceDir = sourceDir;
|
|
197
198
|
this.excludedDirs = excludedDirs;
|
|
198
199
|
this.applyEndpoints = applyEndpoints;
|
|
199
200
|
this.lowerCaseEvents = lowerCaseEvents;
|
|
201
|
+
this.eventDefinitions = new Map();
|
|
200
202
|
// We search for a TS config as that allows the language service to handle weird imports
|
|
201
203
|
if (fs.existsSync(path.join(this.sourceDir, 'src/tsconfig.json'))) {
|
|
202
204
|
this.project = new ts_morph_1.Project({
|
|
@@ -239,6 +241,30 @@ class TsParser {
|
|
|
239
241
|
// No-op
|
|
240
242
|
}
|
|
241
243
|
}
|
|
244
|
+
getEventDefinitions() {
|
|
245
|
+
const definitions = new Map();
|
|
246
|
+
for (const [eventName, entries] of this.eventDefinitions.entries()) {
|
|
247
|
+
definitions.set(eventName, [...entries]);
|
|
248
|
+
}
|
|
249
|
+
return definitions;
|
|
250
|
+
}
|
|
251
|
+
addEventDefinition(eventName, signature, location) {
|
|
252
|
+
const existing = this.eventDefinitions.get(eventName) ?? [];
|
|
253
|
+
existing.push({ signature, location });
|
|
254
|
+
this.eventDefinitions.set(eventName, existing);
|
|
255
|
+
}
|
|
256
|
+
stableSerialize(value) {
|
|
257
|
+
if (Array.isArray(value)) {
|
|
258
|
+
return `[${value.map((entry) => this.stableSerialize(entry)).join(',')}]`;
|
|
259
|
+
}
|
|
260
|
+
if (value && typeof value === 'object') {
|
|
261
|
+
const entries = Object.entries(value)
|
|
262
|
+
.sort(([left], [right]) => left.localeCompare(right))
|
|
263
|
+
.map(([key, entryValue]) => `${JSON.stringify(key)}:${this.stableSerialize(entryValue)}`);
|
|
264
|
+
return `{${entries.join(',')}}`;
|
|
265
|
+
}
|
|
266
|
+
return JSON.stringify(value);
|
|
267
|
+
}
|
|
242
268
|
parseFiles() {
|
|
243
269
|
let publicLogUse = [];
|
|
244
270
|
this.project.getSourceFiles().forEach((source) => {
|
|
@@ -282,6 +308,7 @@ class TsParser {
|
|
|
282
308
|
created_event.properties.forEach((prop) => {
|
|
283
309
|
Object.assign(events[event_name], prop);
|
|
284
310
|
});
|
|
311
|
+
this.addEventDefinition(event_name, this.stableSerialize(events[event_name]), `${pl.getSourceFile().getFilePath()}:${pl.getStartLineNumber()}`);
|
|
285
312
|
const eventProperties = typeArgs[0].getType().getProperties();
|
|
286
313
|
// Find all eventProperties that have a number or boolean type
|
|
287
314
|
eventProperties.forEach((prop) => {
|
|
@@ -316,6 +343,7 @@ class TsParser {
|
|
|
316
343
|
}
|
|
317
344
|
event_name = this.lowerCaseEvents ? event_name.toLowerCase() : event_name;
|
|
318
345
|
events[event_name] = {};
|
|
346
|
+
this.addEventDefinition(event_name, this.stableSerialize(events[event_name]), `${pl.getSourceFile().getFilePath()}:${pl.getStartLineNumber()}`);
|
|
319
347
|
}
|
|
320
348
|
});
|
|
321
349
|
return events;
|
package/out/lib/ts-parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ts-parser.js","sourceRoot":"","sources":["../../src/lib/ts-parser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ts-parser.js","sourceRoot":"","sources":["../../src/lib/ts-parser.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/lib/operations.ts
CHANGED
|
@@ -13,6 +13,12 @@ export function merge(target: Fragments | Events, source: Fragments | Events) {
|
|
|
13
13
|
});
|
|
14
14
|
// We combine their properties together if the event already exists
|
|
15
15
|
if (found) {
|
|
16
|
+
if (target instanceof Events && source instanceof Events && found instanceof Event && item instanceof Event) {
|
|
17
|
+
if (!sameEventDefinition(found, item)) {
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
16
22
|
found.properties = found.properties.concat(item.properties);
|
|
17
23
|
} else {
|
|
18
24
|
target.dataPoints.push(item);
|
|
@@ -20,6 +26,78 @@ export function merge(target: Fragments | Events, source: Fragments | Events) {
|
|
|
20
26
|
}
|
|
21
27
|
}
|
|
22
28
|
|
|
29
|
+
function sameEventDefinition(left: Event, right: Event) {
|
|
30
|
+
return stableSerialize(eventToComparable(left)) === stableSerialize(eventToComparable(right));
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function eventToComparable(event: Event) {
|
|
34
|
+
const properties = event.properties.map(propertyToComparable);
|
|
35
|
+
properties.sort((a, b) => stableSerialize(a).localeCompare(stableSerialize(b)));
|
|
36
|
+
return {
|
|
37
|
+
name: event.name,
|
|
38
|
+
properties
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function propertyToComparable(property: Property | Metadata | Include | Inline | Wildcard) {
|
|
43
|
+
if (property instanceof Property) {
|
|
44
|
+
return {
|
|
45
|
+
type: 'property',
|
|
46
|
+
name: property.name,
|
|
47
|
+
classification: property.classification,
|
|
48
|
+
purpose: property.purpose,
|
|
49
|
+
expiration: property.expiration,
|
|
50
|
+
owner: property.owner,
|
|
51
|
+
comment: property.comment,
|
|
52
|
+
endPoint: property.endPoint,
|
|
53
|
+
isMeasurement: property.isMeasurement
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
if (property instanceof Metadata) {
|
|
57
|
+
return {
|
|
58
|
+
type: 'metadata',
|
|
59
|
+
name: property.name,
|
|
60
|
+
value: property.value
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
if (property instanceof Include) {
|
|
64
|
+
return {
|
|
65
|
+
type: 'include',
|
|
66
|
+
includeNames: [...property.includeNames].sort()
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
if (property instanceof Inline) {
|
|
70
|
+
return {
|
|
71
|
+
type: 'inline',
|
|
72
|
+
inlineName: property.inlineName,
|
|
73
|
+
inlines: [...property.inlines].sort()
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
type: 'wildcard',
|
|
78
|
+
entries: property.entries.map(entry => ({
|
|
79
|
+
prefix: entry.prefix,
|
|
80
|
+
classification: entry.classification,
|
|
81
|
+
endpoint: entry.endpoint
|
|
82
|
+
})).sort((a, b) => stableSerialize(a).localeCompare(stableSerialize(b)))
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function stableSerialize(value: unknown): string {
|
|
87
|
+
if (Array.isArray(value)) {
|
|
88
|
+
return `[${value.map(stableSerialize).join(',')}]`;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (value && typeof value === 'object') {
|
|
92
|
+
const entries = Object.entries(value as Record<string, unknown>)
|
|
93
|
+
.sort(([left], [right]) => left.localeCompare(right))
|
|
94
|
+
.map(([key, entryValue]) => `${JSON.stringify(key)}:${stableSerialize(entryValue)}`);
|
|
95
|
+
return `{${entries.join(',')}}`;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return JSON.stringify(value);
|
|
99
|
+
}
|
|
100
|
+
|
|
23
101
|
// Searches the object for an event or fragment of the specific name
|
|
24
102
|
// If found returns, if not found creates it, places it in the array, and then returns
|
|
25
103
|
export function findOrCreate(searchTarget: Events | Fragments, name: string) {
|
package/src/lib/parser.ts
CHANGED
|
@@ -11,6 +11,11 @@ import { Events } from './events';
|
|
|
11
11
|
import { Declarations } from './declarations';
|
|
12
12
|
import { merge, findOrCreate, populateProperties, makeExclusionsRelativeToSource } from './operations';
|
|
13
13
|
|
|
14
|
+
export interface EventDefinition {
|
|
15
|
+
signature: string;
|
|
16
|
+
location: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
14
19
|
export class Parser {
|
|
15
20
|
|
|
16
21
|
private sourceDirs: string[];
|
|
@@ -18,12 +23,14 @@ export class Parser {
|
|
|
18
23
|
private applyEndpoints: boolean;
|
|
19
24
|
|
|
20
25
|
private lowerCaseEvents: boolean;
|
|
26
|
+
private eventDefinitions: Map<string, EventDefinition[]>;
|
|
21
27
|
|
|
22
28
|
constructor(sourceDirs: string[], excludedDirs: string[], applyEndpoints: boolean, lowerCaseEvents: boolean) {
|
|
23
29
|
this.sourceDirs = sourceDirs;
|
|
24
30
|
this.excludedDirs = excludedDirs;
|
|
25
31
|
this.applyEndpoints = applyEndpoints;
|
|
26
32
|
this.lowerCaseEvents = lowerCaseEvents;
|
|
33
|
+
this.eventDefinitions = new Map();
|
|
27
34
|
}
|
|
28
35
|
|
|
29
36
|
private toRipGrepOption(dir: string): string[] {
|
|
@@ -33,13 +40,13 @@ export class Parser {
|
|
|
33
40
|
return ['--glob', `!${dir}/**`];
|
|
34
41
|
}
|
|
35
42
|
|
|
36
|
-
private extractComments(absoluteFilePaths: string[], commentMatcher: RegExp, collector: (filePath: string, match: RegExpExecArray) => void) {
|
|
43
|
+
private extractComments(absoluteFilePaths: string[], commentMatcher: RegExp, collector: (filePath: string, match: RegExpExecArray, fileContents: string) => void) {
|
|
37
44
|
absoluteFilePaths.forEach(absoluteFilePath => {
|
|
38
45
|
if (absoluteFilePath) {
|
|
39
|
-
const fileContents = fs.readFileSync(absoluteFilePath);
|
|
46
|
+
const fileContents = fs.readFileSync(absoluteFilePath).toString();
|
|
40
47
|
let match;
|
|
41
|
-
while ((match = commentMatcher.exec(fileContents
|
|
42
|
-
collector(absoluteFilePath, match);
|
|
48
|
+
while ((match = commentMatcher.exec(fileContents))) {
|
|
49
|
+
collector(absoluteFilePath, match, fileContents);
|
|
43
50
|
}
|
|
44
51
|
}
|
|
45
52
|
});
|
|
@@ -62,7 +69,7 @@ export class Parser {
|
|
|
62
69
|
|
|
63
70
|
const commonPropertyMatcher = /\/\/\s*__GDPR__COMMON__(.*)$/mg;
|
|
64
71
|
const commonPropertyDeclarations = new CommonProperties();
|
|
65
|
-
this.extractComments(filesWithCommonProperties, commonPropertyMatcher, (filePath: string, match:
|
|
72
|
+
this.extractComments(filesWithCommonProperties, commonPropertyMatcher, (filePath: string, match: RegExpExecArray) => {
|
|
66
73
|
try {
|
|
67
74
|
const commonPropertyDeclaration = JSON.parse(`{ ${match[1]} }`);
|
|
68
75
|
const propertyName = Object.keys(commonPropertyDeclaration)[0];
|
|
@@ -99,7 +106,7 @@ export class Parser {
|
|
|
99
106
|
// Using [\s\S]* instead of .* since the latter does not match when using /m option
|
|
100
107
|
const fragmentMatcher = /\/\*\s*__GDPR__FRAGMENT__([\s\S]*?)\*\//mg;
|
|
101
108
|
const fragmentDeclarations = new Fragments();
|
|
102
|
-
this.extractComments(filesWithFragments, fragmentMatcher, (filePath: string, match:
|
|
109
|
+
this.extractComments(filesWithFragments, fragmentMatcher, (filePath: string, match: RegExpExecArray) => {
|
|
103
110
|
try {
|
|
104
111
|
const fragmentDeclaration = JSON.parse(`{ ${match[1]} }`);
|
|
105
112
|
// There's only ever one key per match
|
|
@@ -125,18 +132,29 @@ export class Parser {
|
|
|
125
132
|
|
|
126
133
|
private findEvents(sourceDir: string) {
|
|
127
134
|
const filesWithEvents = this.asAbsoluteFilePaths(this.findFilesWithEvents(sourceDir));
|
|
135
|
+
const eventSignatures = new Map<string, string>();
|
|
128
136
|
|
|
129
137
|
// Using [\s\S]* instead of .* since the latter does not match when using /m option
|
|
130
138
|
const eventMatcher = /\/\*\s*__GDPR__\b([\s\S]*?)\*\//mg;
|
|
131
139
|
const eventDeclarations = new Events();
|
|
132
|
-
this.extractComments(filesWithEvents, eventMatcher, (filePath: string, match:
|
|
140
|
+
this.extractComments(filesWithEvents, eventMatcher, (filePath: string, match: RegExpExecArray, fileContents: string) => {
|
|
133
141
|
try {
|
|
134
142
|
const eventDeclaration = JSON.parse(`{ ${match[1]} }`);
|
|
135
143
|
let eventName = Object.keys(eventDeclaration)[0];
|
|
136
144
|
eventName = this.lowerCaseEvents ? eventName.toLowerCase() : eventName;
|
|
145
|
+
const eventProperties = eventDeclaration[Object.keys(eventDeclaration)[0]];
|
|
146
|
+
const currentSignature = this.stableSerialize(eventProperties);
|
|
147
|
+
const lineNumber = this.getLineNumber(fileContents, match.index);
|
|
148
|
+
this.addEventDefinition(eventName, currentSignature, `${filePath}:${lineNumber}`);
|
|
149
|
+
const existingSignature = eventSignatures.get(eventName);
|
|
150
|
+
|
|
151
|
+
if (existingSignature) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
eventSignatures.set(eventName, currentSignature);
|
|
137
156
|
const event = findOrCreate(eventDeclarations, eventName);
|
|
138
157
|
// Get the propeties which the event possesses
|
|
139
|
-
const eventProperties = eventDeclaration[Object.keys(eventDeclaration)[0]];
|
|
140
158
|
populateProperties(eventProperties, event, this.applyEndpoints);
|
|
141
159
|
} catch (error) {
|
|
142
160
|
console.error(`Event Declaration Error: ${error} in file ${filePath}`);
|
|
@@ -147,6 +165,42 @@ export class Parser {
|
|
|
147
165
|
return eventDeclarations;
|
|
148
166
|
}
|
|
149
167
|
|
|
168
|
+
public getEventDefinitions() {
|
|
169
|
+
const definitions = new Map<string, EventDefinition[]>();
|
|
170
|
+
for (const [eventName, entries] of this.eventDefinitions.entries()) {
|
|
171
|
+
definitions.set(eventName, [...entries]);
|
|
172
|
+
}
|
|
173
|
+
return definitions;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
private addEventDefinition(eventName: string, signature: string, location: string) {
|
|
177
|
+
const existing = this.eventDefinitions.get(eventName) ?? [];
|
|
178
|
+
existing.push({ signature, location });
|
|
179
|
+
this.eventDefinitions.set(eventName, existing);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
private getLineNumber(fileContents: string, index: number | undefined) {
|
|
183
|
+
if (index === undefined) {
|
|
184
|
+
return 1;
|
|
185
|
+
}
|
|
186
|
+
return fileContents.slice(0, index).split(/\r\n|\r|\n/).length;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
private stableSerialize(value: unknown): string {
|
|
190
|
+
if (Array.isArray(value)) {
|
|
191
|
+
return `[${value.map((entry) => this.stableSerialize(entry)).join(',')}]`;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
if (value && typeof value === 'object') {
|
|
195
|
+
const entries = Object.entries(value as Record<string, unknown>)
|
|
196
|
+
.sort(([left], [right]) => left.localeCompare(right))
|
|
197
|
+
.map(([key, entryValue]) => `${JSON.stringify(key)}:${this.stableSerialize(entryValue)}`);
|
|
198
|
+
return `{${entries.join(',')}}`;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
return JSON.stringify(value);
|
|
202
|
+
}
|
|
203
|
+
|
|
150
204
|
// Utilizes a regex to find the files containing the specific pattern
|
|
151
205
|
private findFiles(ripgrepPattern: string, sourceDir: string) {
|
|
152
206
|
const relativeExclusions = makeExclusionsRelativeToSource(sourceDir, this.excludedDirs);
|
|
@@ -12,6 +12,13 @@ import { patchDebugEvents } from './debug-patch';
|
|
|
12
12
|
import { ParserOptions, SourceSpec } from './source-spec';
|
|
13
13
|
import { logMessage } from './logger';
|
|
14
14
|
import { Fragments } from './fragments';
|
|
15
|
+
import { EventDefinition } from './parser';
|
|
16
|
+
|
|
17
|
+
interface EventConflictEntry {
|
|
18
|
+
signature: string;
|
|
19
|
+
location: string;
|
|
20
|
+
source: 'GDPR' | 'TS';
|
|
21
|
+
}
|
|
15
22
|
|
|
16
23
|
function deepSortKeys(obj: unknown): unknown {
|
|
17
24
|
if (Array.isArray(obj)) {
|
|
@@ -63,20 +70,57 @@ function validateOutputtedDeclarations(declarations: OutputtedDeclarations) {
|
|
|
63
70
|
}
|
|
64
71
|
}
|
|
65
72
|
if (failedValidation) {
|
|
66
|
-
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function mergeEventDefinitions(
|
|
79
|
+
target: Map<string, EventConflictEntry[]>,
|
|
80
|
+
definitions: Map<string, EventDefinition[]>,
|
|
81
|
+
source: 'GDPR' | 'TS',
|
|
82
|
+
prefix = ''
|
|
83
|
+
) {
|
|
84
|
+
for (const [eventName, entries] of definitions.entries()) {
|
|
85
|
+
const prefixedName = `${prefix}${eventName}`;
|
|
86
|
+
const existing = target.get(prefixedName) ?? [];
|
|
87
|
+
existing.push(...entries.map((entry) => ({ ...entry, source })));
|
|
88
|
+
target.set(prefixedName, existing);
|
|
67
89
|
}
|
|
68
90
|
}
|
|
69
91
|
|
|
92
|
+
function reportDuplicateEventConflicts(definitions: Map<string, EventConflictEntry[]>) {
|
|
93
|
+
let hasConflicts = false;
|
|
94
|
+
for (const [eventName, entries] of definitions.entries()) {
|
|
95
|
+
const signatures = new Set(entries.map(entry => entry.signature));
|
|
96
|
+
if (signatures.size <= 1) {
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
hasConflicts = true;
|
|
101
|
+
const uniqueLocations = [...new Set(entries.map(entry => `${entry.location.replace(/\\/g, '/')} (${entry.source})`))];
|
|
102
|
+
console.error(`Duplicate telemetry event declaration '${eventName}' has conflicting details at:`);
|
|
103
|
+
uniqueLocations.forEach(location => console.error(` - ${location}`));
|
|
104
|
+
}
|
|
105
|
+
return hasConflicts;
|
|
106
|
+
}
|
|
107
|
+
|
|
70
108
|
export async function extractAndResolveDeclarations(sourceSpecs: Array<SourceSpec>): Promise<OutputtedDeclarations> {
|
|
71
109
|
try {
|
|
72
110
|
const allDeclarations: Declarations = { events: new Events(), commonProperties: new CommonProperties(), fragments: new Fragments() };
|
|
73
111
|
const allTypeScriptDeclarations = Object.create(null);
|
|
112
|
+
const allEventDefinitions = new Map<string, EventConflictEntry[]>();
|
|
74
113
|
for (const spec of sourceSpecs) {
|
|
75
|
-
|
|
114
|
+
logMessage('...extracting', spec.parserOptions.silenceOutput);
|
|
115
|
+
const parser = new Parser(spec.sourceDirs, spec.excludedDirs, spec.parserOptions.applyEndpoints, spec.parserOptions.lowerCaseEvents);
|
|
116
|
+
let declarations = await parser.extractDeclarations();
|
|
117
|
+
declarations = resolveDeclarations(declarations, spec.parserOptions.verbose);
|
|
76
118
|
let typescriptDeclarations = Object.create(null);
|
|
77
119
|
// The parser does not know how to handle multiple source directories due to different TS configs, so we manually have to parse each source dir
|
|
78
120
|
spec.sourceDirs.forEach((dir) => {
|
|
79
|
-
|
|
121
|
+
const tsParser = new TsParser(dir, spec.excludedDirs, spec.parserOptions.applyEndpoints, spec.parserOptions.lowerCaseEvents);
|
|
122
|
+
Object.assign(typescriptDeclarations, tsParser.parseFiles());
|
|
123
|
+
mergeEventDefinitions(allEventDefinitions, tsParser.getEventDefinitions(), 'TS', spec.parserOptions.eventPrefix);
|
|
80
124
|
});
|
|
81
125
|
if (spec.parserOptions.eventPrefix !== '') {
|
|
82
126
|
declarations.events.dataPoints = declarations.events.dataPoints.map((event) => {
|
|
@@ -98,7 +142,9 @@ export async function extractAndResolveDeclarations(sourceSpecs: Array<SourceSpe
|
|
|
98
142
|
allDeclarations.commonProperties.properties = allDeclarations.commonProperties.properties.concat(declarations.commonProperties.properties);
|
|
99
143
|
allDeclarations.events.dataPoints = allDeclarations.events.dataPoints.concat(declarations.events.dataPoints);
|
|
100
144
|
Object.assign(allTypeScriptDeclarations, typescriptDeclarations);
|
|
145
|
+
mergeEventDefinitions(allEventDefinitions, parser.getEventDefinitions(), 'GDPR', spec.parserOptions.eventPrefix);
|
|
101
146
|
}
|
|
147
|
+
const hasDuplicateEventConflicts = reportDuplicateEventConflicts(allEventDefinitions);
|
|
102
148
|
const formattedDeclarations = await transformOutput(allDeclarations);
|
|
103
149
|
for (const dec in allTypeScriptDeclarations) {
|
|
104
150
|
// If there's typescript declarations but we returned a null object
|
|
@@ -108,7 +154,10 @@ export async function extractAndResolveDeclarations(sourceSpecs: Array<SourceSpe
|
|
|
108
154
|
}
|
|
109
155
|
formattedDeclarations.events[dec] = allTypeScriptDeclarations[dec];
|
|
110
156
|
}
|
|
111
|
-
validateOutputtedDeclarations(formattedDeclarations);
|
|
157
|
+
const hasPropertyValidationErrors = validateOutputtedDeclarations(formattedDeclarations);
|
|
158
|
+
if (hasDuplicateEventConflicts || hasPropertyValidationErrors || process.exitCode === 1) {
|
|
159
|
+
throw new Error('Validation failed, please see logs for more information');
|
|
160
|
+
}
|
|
112
161
|
return Promise.resolve(deepSortKeys(formattedDeclarations) as OutputtedDeclarations);
|
|
113
162
|
} catch (error) {
|
|
114
163
|
console.error(`Error: ${error}`);
|
package/src/lib/ts-parser.ts
CHANGED
|
@@ -9,6 +9,11 @@ import { makeExclusionsRelativeToSource } from "./operations";
|
|
|
9
9
|
import { Event, Metadata } from './events';
|
|
10
10
|
import { Property } from "./common-properties";
|
|
11
11
|
|
|
12
|
+
interface EventDefinition {
|
|
13
|
+
signature: string;
|
|
14
|
+
location: string;
|
|
15
|
+
}
|
|
16
|
+
|
|
12
17
|
function isMeasurement(type: Type) {
|
|
13
18
|
if (type.isNumber()) {
|
|
14
19
|
return true;
|
|
@@ -180,11 +185,13 @@ export class TsParser {
|
|
|
180
185
|
private applyEndpoints: boolean;
|
|
181
186
|
private lowerCaseEvents: boolean;
|
|
182
187
|
private project: Project;
|
|
188
|
+
private eventDefinitions: Map<string, EventDefinition[]>;
|
|
183
189
|
constructor(sourceDir: string, excludedDirs: string[], applyEndpoints: boolean, lowerCaseEvents: boolean) {
|
|
184
190
|
this.sourceDir = sourceDir;
|
|
185
191
|
this.excludedDirs = excludedDirs;
|
|
186
192
|
this.applyEndpoints = applyEndpoints;
|
|
187
193
|
this.lowerCaseEvents = lowerCaseEvents;
|
|
194
|
+
this.eventDefinitions = new Map();
|
|
188
195
|
// We search for a TS config as that allows the language service to handle weird imports
|
|
189
196
|
if (fs.existsSync(path.join(this.sourceDir, 'src/tsconfig.json'))) {
|
|
190
197
|
this.project = new Project({
|
|
@@ -226,6 +233,35 @@ export class TsParser {
|
|
|
226
233
|
}
|
|
227
234
|
}
|
|
228
235
|
|
|
236
|
+
public getEventDefinitions() {
|
|
237
|
+
const definitions = new Map<string, EventDefinition[]>();
|
|
238
|
+
for (const [eventName, entries] of this.eventDefinitions.entries()) {
|
|
239
|
+
definitions.set(eventName, [...entries]);
|
|
240
|
+
}
|
|
241
|
+
return definitions;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
private addEventDefinition(eventName: string, signature: string, location: string) {
|
|
245
|
+
const existing = this.eventDefinitions.get(eventName) ?? [];
|
|
246
|
+
existing.push({ signature, location });
|
|
247
|
+
this.eventDefinitions.set(eventName, existing);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
private stableSerialize(value: unknown): string {
|
|
251
|
+
if (Array.isArray(value)) {
|
|
252
|
+
return `[${value.map((entry) => this.stableSerialize(entry)).join(',')}]`;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
if (value && typeof value === 'object') {
|
|
256
|
+
const entries = Object.entries(value as Record<string, unknown>)
|
|
257
|
+
.sort(([left], [right]) => left.localeCompare(right))
|
|
258
|
+
.map(([key, entryValue]) => `${JSON.stringify(key)}:${this.stableSerialize(entryValue)}`);
|
|
259
|
+
return `{${entries.join(',')}}`;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
return JSON.stringify(value);
|
|
263
|
+
}
|
|
264
|
+
|
|
229
265
|
public parseFiles() {
|
|
230
266
|
let publicLogUse: Array<CallExpression> = [];
|
|
231
267
|
this.project.getSourceFiles().forEach((source) => {
|
|
@@ -269,6 +305,7 @@ export class TsParser {
|
|
|
269
305
|
created_event.properties.forEach((prop) => {
|
|
270
306
|
Object.assign(events[event_name], prop);
|
|
271
307
|
});
|
|
308
|
+
this.addEventDefinition(event_name, this.stableSerialize(events[event_name]), `${pl.getSourceFile().getFilePath()}:${pl.getStartLineNumber()}`);
|
|
272
309
|
const eventProperties = typeArgs[0].getType().getProperties();
|
|
273
310
|
// Find all eventProperties that have a number or boolean type
|
|
274
311
|
eventProperties.forEach((prop) => {
|
|
@@ -302,6 +339,7 @@ export class TsParser {
|
|
|
302
339
|
}
|
|
303
340
|
event_name = this.lowerCaseEvents ? event_name.toLowerCase() : event_name;
|
|
304
341
|
events[event_name] = {};
|
|
342
|
+
this.addEventDefinition(event_name, this.stableSerialize(events[event_name]), `${pl.getSourceFile().getFilePath()}:${pl.getStartLineNumber()}`);
|
|
305
343
|
}
|
|
306
344
|
});
|
|
307
345
|
return events;
|