@vscode/telemetry-extractor 1.20.2 → 1.20.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/.github/dependabot.yml +11 -0
  2. package/.github/workflows/node.js.yml +3 -2
  3. package/eslint.config.js +6 -1
  4. package/out/cli-options.js +2 -1
  5. package/out/cli-options.js.map +1 -1
  6. package/out/extractor.js +7 -1
  7. package/out/extractor.js.map +1 -1
  8. package/out/lib/common-properties.js +51 -1
  9. package/out/lib/common-properties.js.map +1 -1
  10. package/out/lib/declarations.js.map +1 -1
  11. package/out/lib/event-definition.js +5 -0
  12. package/out/lib/event-definition.js.map +1 -0
  13. package/out/lib/events.js +28 -1
  14. package/out/lib/events.js.map +1 -1
  15. package/out/lib/object-converter.js +58 -4
  16. package/out/lib/object-converter.js.map +1 -1
  17. package/out/lib/operations.js +83 -66
  18. package/out/lib/operations.js.map +1 -1
  19. package/out/lib/parser.js +18 -23
  20. package/out/lib/parser.js.map +1 -1
  21. package/out/lib/ripgrep.js +14 -0
  22. package/out/lib/ripgrep.js.map +1 -0
  23. package/out/lib/save-declarations.js +32 -10
  24. package/out/lib/save-declarations.js.map +1 -1
  25. package/out/lib/ts-parser-worker.js +39 -0
  26. package/out/lib/ts-parser-worker.js.map +1 -0
  27. package/out/lib/ts-parser.js +204 -37
  28. package/out/lib/ts-parser.js.map +1 -1
  29. package/package.json +3 -3
  30. package/src/cli-options.ts +2 -1
  31. package/src/extractor.ts +8 -1
  32. package/src/lib/common-properties.ts +71 -5
  33. package/src/lib/declarations.ts +2 -1
  34. package/src/lib/event-definition.ts +7 -0
  35. package/src/lib/events.ts +33 -1
  36. package/src/lib/object-converter.ts +73 -4
  37. package/src/lib/operations.ts +75 -72
  38. package/src/lib/parser.ts +22 -34
  39. package/src/lib/ripgrep.ts +10 -0
  40. package/src/lib/save-declarations.ts +37 -13
  41. package/src/lib/ts-parser-worker.ts +38 -0
  42. package/src/lib/ts-parser.ts +247 -41
  43. package/tsconfig.json +1 -0
  44. package/vscode-telemetry-extractor.d.ts +21 -1
@@ -23,16 +23,48 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.TsParser = void 0;
26
+ exports.TsProjectParser = exports.TsParser = exports.runParserWorker = void 0;
27
27
  // Copyright (c) Microsoft Corporation.
28
28
  // Licensed under the MIT license.
29
29
  const ts_morph_1 = require("ts-morph");
30
30
  const fs = __importStar(require("fs"));
31
31
  const cp = __importStar(require("child_process"));
32
32
  const path = __importStar(require("path"));
33
+ const worker_threads_1 = require("worker_threads");
33
34
  const ripgrep_1 = require("@vscode/ripgrep");
34
35
  const operations_1 = require("./operations");
35
36
  const events_1 = require("./events");
37
+ const ripgrep_2 = require("./ripgrep");
38
+ const sourceFilesPerBatch = 64;
39
+ function runParserWorker(request) {
40
+ return new Promise((resolve, reject) => {
41
+ const worker = new worker_threads_1.Worker(path.join(__dirname, 'ts-parser-worker.js'), { workerData: request });
42
+ let result;
43
+ let error;
44
+ worker.once('message', (message) => {
45
+ result = message;
46
+ });
47
+ worker.once('error', workerError => {
48
+ error = workerError;
49
+ });
50
+ // Do not start another compiler until this worker has released its heap.
51
+ worker.once('exit', code => {
52
+ if (error) {
53
+ reject(error);
54
+ }
55
+ else if (code !== 0) {
56
+ reject(new Error(`Telemetry parser worker exited with code ${code}`));
57
+ }
58
+ else if (!result) {
59
+ reject(new Error('Telemetry parser worker exited without a result'));
60
+ }
61
+ else {
62
+ resolve(result);
63
+ }
64
+ });
65
+ });
66
+ }
67
+ exports.runParserWorker = runParserWorker;
36
68
  function isMeasurement(type) {
37
69
  if (type.isNumber()) {
38
70
  return true;
@@ -119,7 +151,7 @@ class NodeVisitor {
119
151
  }
120
152
  visitNode(currentNode, previousNode) {
121
153
  let type = currentNode.getTypeAtLocation(this.pl_node);
122
- // If we mark a property as optional then it is nullable, however we want all properties
154
+ // If we mark a property as optional then it is nullable, however we want all properties
123
155
  // So we want its non nullable type tl;dr this chops off the | undefined
124
156
  if (type.isNullable()) {
125
157
  type = type.getNonNullableType();
@@ -145,10 +177,24 @@ class NodeVisitor {
145
177
  }
146
178
  return;
147
179
  }
148
- const properties = type.getProperties();
149
- properties.forEach((prop) => {
150
- this.visitNode(prop, currentNode);
151
- });
180
+ const nodeName = currentNode.getEscapedName();
181
+ if (nodeName !== 'column') {
182
+ const properties = type.getProperties();
183
+ properties.forEach((prop) => {
184
+ this.visitNode(prop, currentNode);
185
+ });
186
+ }
187
+ else {
188
+ const properties = type.getProperties();
189
+ const value = Object.create(null);
190
+ properties.forEach((prop) => {
191
+ const propType = prop.getTypeAtLocation(this.pl_node);
192
+ if (propType.isStringLiteral()) {
193
+ value[prop.getEscapedName()] = propType.getText().substring(1, propType.getText().length - 1);
194
+ }
195
+ });
196
+ this.resolved_property['column'] = value;
197
+ }
152
198
  // 95% of the time there is only one property in this array but inlines allow
153
199
  // for the number of properties found to be unpredictable so we must return an array
154
200
  if (this.inline && this.prop_name === this.original_prop_name) {
@@ -165,7 +211,7 @@ class NodeVisitor {
165
211
  }
166
212
  visitMetadataNode(currentNode) {
167
213
  let type = currentNode.getTypeAtLocation(this.pl_node);
168
- // If we mark a property as optional then it is nullable, however we want all properties
214
+ // If we mark a property as optional then it is nullable, however we want all properties
169
215
  // So we want its non nullable type tl;dr this chops off the | undefined
170
216
  if (type.isNullable()) {
171
217
  type = type.getNonNullableType();
@@ -179,6 +225,8 @@ class NodeVisitor {
179
225
  }
180
226
  }
181
227
  resolveProperties(currentNode) {
228
+ // @lramos15 Actually this.properties is of type any[] and the property data pushing into
229
+ // the array is not an instance of Property.
182
230
  // It could be a complex node with nested types or a simple node with a string literal
183
231
  // representing some kind of metadata, so we try both visitors.
184
232
  this.visitMetadataNode(currentNode);
@@ -192,6 +240,7 @@ class TsParser {
192
240
  applyEndpoints;
193
241
  lowerCaseEvents;
194
242
  project;
243
+ sourceFiles = [];
195
244
  eventDefinitions;
196
245
  constructor(sourceDir, excludedDirs, applyEndpoints, lowerCaseEvents) {
197
246
  this.sourceDir = sourceDir;
@@ -229,18 +278,65 @@ class TsParser {
229
278
  }
230
279
  const ripgrepArgs = ['--files-with-matches', ...rgGlobs, '--no-ignore', 'publicLog2|publicLogError2', this.sourceDir];
231
280
  try {
232
- const retrieved_paths = cp.execFileSync(ripgrep_1.rgPath, ripgrepArgs, { encoding: 'ascii' });
233
- // Split the paths into an array
234
- retrieved_paths.split(/(?:\r\n|\r|\n)/g).filter(path => path && path.length > 0).map((f) => {
235
- this.project.addSourceFileAtPathIfExists(f);
236
- return f;
237
- });
281
+ const retrievedPaths = cp.execFileSync(ripgrep_1.rgPath, ripgrepArgs, { encoding: 'ascii' });
282
+ this.sourceFiles = (0, ripgrep_2.parseRipgrepFilePaths)(retrievedPaths);
238
283
  // Empty catch because this fails when there are no typescript annotations which causes weird error messages
239
284
  }
240
285
  catch {
241
286
  // No-op
242
287
  }
243
288
  }
289
+ async parseFiles() {
290
+ if (this.sourceFiles.length <= sourceFilesPerBatch) {
291
+ for (const file of this.sourceFiles) {
292
+ this.project.addSourceFileAtPathIfExists(file);
293
+ }
294
+ const parser = new TsProjectParser(this.project, this.applyEndpoints, this.lowerCaseEvents, [...this.eventDefinitions]);
295
+ const events = parser.parseFiles();
296
+ this.eventDefinitions = parser.getEventDefinitions();
297
+ return events;
298
+ }
299
+ const compilerOptions = this.project.getCompilerOptions();
300
+ const prepared = await runParserWorker({ kind: 'prepare', sourceFiles: this.sourceFiles, compilerOptions });
301
+ if (prepared.kind !== 'prepared') {
302
+ throw new Error('Telemetry parser worker did not return call locations');
303
+ }
304
+ let events = Object.create(null);
305
+ for (let index = 0; index < prepared.calls.length; index += sourceFilesPerBatch) {
306
+ const parsed = await runParserWorker({
307
+ kind: 'parse',
308
+ calls: prepared.calls.slice(index, index + sourceFilesPerBatch),
309
+ sharedSourceFiles: prepared.sharedSourceFiles,
310
+ compilerOptions,
311
+ applyEndpoints: this.applyEndpoints,
312
+ lowerCaseEvents: this.lowerCaseEvents,
313
+ events,
314
+ definitions: [...this.eventDefinitions]
315
+ });
316
+ if (parsed.kind !== 'parsed') {
317
+ throw new Error('Telemetry parser worker did not return declarations');
318
+ }
319
+ events = Object.assign(Object.create(null), parsed.events);
320
+ this.eventDefinitions = new Map(parsed.definitions);
321
+ }
322
+ return events;
323
+ }
324
+ getEventDefinitions() {
325
+ return new Map([...this.eventDefinitions].map(([event, entries]) => [event, [...entries]]));
326
+ }
327
+ }
328
+ exports.TsParser = TsParser;
329
+ class TsProjectParser {
330
+ project;
331
+ applyEndpoints;
332
+ lowerCaseEvents;
333
+ eventDefinitions;
334
+ constructor(project, applyEndpoints, lowerCaseEvents, definitions = []) {
335
+ this.project = project;
336
+ this.applyEndpoints = applyEndpoints;
337
+ this.lowerCaseEvents = lowerCaseEvents;
338
+ this.eventDefinitions = new Map(definitions);
339
+ }
244
340
  getEventDefinitions() {
245
341
  const definitions = new Map();
246
342
  for (const [eventName, entries] of this.eventDefinitions.entries()) {
@@ -248,32 +344,82 @@ class TsParser {
248
344
  }
249
345
  return definitions;
250
346
  }
251
- addEventDefinition(eventName, signature, location) {
347
+ addEventDefinition(eventName, properties, location) {
252
348
  const existing = this.eventDefinitions.get(eventName) ?? [];
253
- existing.push({ signature, location });
349
+ existing.push({ properties, location });
254
350
  this.eventDefinitions.set(eventName, existing);
255
351
  }
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);
352
+ extractConflictProperties(eventProperties) {
353
+ return { ...eventProperties };
267
354
  }
268
- parseFiles() {
269
- let publicLogUse = [];
355
+ collectCalls() {
356
+ const publicLogCalls = [];
357
+ const publicLogErrorCalls = [];
270
358
  this.project.getSourceFiles().forEach((source) => {
271
- const descendants = source.getDescendantsOfKind(ts_morph_1.SyntaxKind.CallExpression).filter((c) => c.getExpression().getText().includes('publicLog2') && c.getArguments().length > 0);
272
- const descendants2 = source.getDescendantsOfKind(ts_morph_1.SyntaxKind.CallExpression).filter((c) => c.getExpression().getText().includes('publicLogError2') && c.getArguments().length > 0);
273
- publicLogUse = descendants.concat(publicLogUse, descendants2);
359
+ const calls = [];
360
+ const errorCalls = [];
361
+ const sourceFile = source.compilerNode;
362
+ const visit = (node) => {
363
+ if (ts_morph_1.ts.isCallExpression(node) && node.arguments.length > 0) {
364
+ const expression = node.expression.getText(sourceFile);
365
+ const isPublicLog = expression.includes('publicLog2');
366
+ const isPublicLogError = expression.includes('publicLogError2');
367
+ if ((isPublicLog || isPublicLogError) && node.arguments[0].getText(sourceFile) !== 'eventName') {
368
+ const call = { start: node.getStart(sourceFile), width: node.getWidth(sourceFile) };
369
+ if (isPublicLog) {
370
+ calls.push(call);
371
+ }
372
+ if (isPublicLogError) {
373
+ errorCalls.push(call);
374
+ }
375
+ }
376
+ }
377
+ ts_morph_1.ts.forEachChild(node, visit);
378
+ };
379
+ ts_morph_1.ts.forEachChild(sourceFile, visit);
380
+ if (calls.length > 0) {
381
+ publicLogCalls.unshift({ filePath: source.getFilePath(), calls });
382
+ }
383
+ if (errorCalls.length > 0) {
384
+ publicLogErrorCalls.push({ filePath: source.getFilePath(), calls: errorCalls });
385
+ }
274
386
  });
387
+ return publicLogCalls.concat(publicLogErrorCalls);
388
+ }
389
+ getSharedSourceFiles() {
390
+ const program = this.project.getProgram().compilerObject;
391
+ return program.getSourceFiles().filter(source => !ts_morph_1.ts.isExternalModule(source) || source.statements.some(statement => ts_morph_1.ts.isModuleDeclaration(statement) &&
392
+ (ts_morph_1.ts.isStringLiteral(statement.name) || (statement.flags & ts_morph_1.ts.NodeFlags.GlobalAugmentation) !== 0))).map(source => source.fileName);
393
+ }
394
+ prepare() {
395
+ const calls = this.collectCalls();
396
+ return {
397
+ kind: 'prepared',
398
+ calls,
399
+ sharedSourceFiles: calls.length > 0 ? this.getSharedSourceFiles() : []
400
+ };
401
+ }
402
+ parseCalls(groups, parseCall) {
403
+ for (const group of groups) {
404
+ const source = this.project.getSourceFileOrThrow(group.filePath);
405
+ for (const call of group.calls) {
406
+ const node = source.getDescendantAtStartWithWidth(call.start, call.width);
407
+ if (!node || !ts_morph_1.Node.isCallExpression(node)) {
408
+ throw new Error(`Could not locate telemetry call in ${group.filePath} at ${call.start}`);
409
+ }
410
+ parseCall(node);
411
+ }
412
+ }
413
+ }
414
+ parseFiles(calls = this.collectCalls(), previousEvents) {
275
415
  const events = Object.create(null);
276
- publicLogUse.forEach((pl) => {
416
+ if (previousEvents) {
417
+ // Structured cloning does not preserve dictionary prototypes.
418
+ for (const [name, properties] of Object.entries(previousEvents)) {
419
+ events[name] = Object.assign(Object.create(null), properties);
420
+ }
421
+ }
422
+ const parseCall = (pl) => {
277
423
  try {
278
424
  const typeArgs = pl.getTypeArguments();
279
425
  if (typeArgs.length != 2) {
@@ -303,12 +449,23 @@ class TsParser {
303
449
  type_properties.forEach((prop) => {
304
450
  const propName = prop.getEscapedName().toLowerCase();
305
451
  const node_visitor = new NodeVisitor(pl, propName, this.applyEndpoints);
306
- created_event.properties = created_event.properties.concat(node_visitor.resolveProperties(prop));
452
+ const resolved_properties = node_visitor.resolveProperties(prop);
453
+ for (const rp of resolved_properties) {
454
+ if (!(rp instanceof events_1.Metadata)) {
455
+ // This cast is necessary since rp is not of type Property although
456
+ // the resolveProperties claims it to be.
457
+ const propInfo = rp[propName];
458
+ if (propInfo !== undefined) {
459
+ this.captureOriginalPropNameForColumnInformation(prop.getEscapedName(), propInfo);
460
+ }
461
+ }
462
+ }
463
+ created_event.properties = created_event.properties.concat(resolved_properties);
307
464
  });
308
465
  created_event.properties.forEach((prop) => {
309
466
  Object.assign(events[event_name], prop);
310
467
  });
311
- this.addEventDefinition(event_name, this.stableSerialize(events[event_name]), `${pl.getSourceFile().getFilePath()}:${pl.getStartLineNumber()}`);
468
+ this.addEventDefinition(event_name, this.extractConflictProperties(events[event_name]), `${pl.getSourceFile().getFilePath()}:${pl.getStartLineNumber()}`);
312
469
  const eventProperties = typeArgs[0].getType().getProperties();
313
470
  // Find all eventProperties that have a number or boolean type
314
471
  eventProperties.forEach((prop) => {
@@ -343,11 +500,21 @@ class TsParser {
343
500
  }
344
501
  event_name = this.lowerCaseEvents ? event_name.toLowerCase() : event_name;
345
502
  events[event_name] = {};
346
- this.addEventDefinition(event_name, this.stableSerialize(events[event_name]), `${pl.getSourceFile().getFilePath()}:${pl.getStartLineNumber()}`);
503
+ this.addEventDefinition(event_name, this.extractConflictProperties(events[event_name]), `${pl.getSourceFile().getFilePath()}:${pl.getStartLineNumber()}`);
347
504
  }
348
- });
505
+ };
506
+ this.parseCalls(calls, parseCall);
349
507
  return events;
350
508
  }
509
+ captureOriginalPropNameForColumnInformation(propName, property) {
510
+ if (property.column && property.column.name === undefined) {
511
+ property.column.name = propName;
512
+ }
513
+ else if (typeof property.type === 'string') {
514
+ property.column = { name: propName, type: property.type };
515
+ delete property.type;
516
+ }
517
+ }
351
518
  }
352
- exports.TsParser = TsParser;
519
+ exports.TsProjectParser = TsProjectParser;
353
520
  //# sourceMappingURL=ts-parser.js.map
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAuC;AACvC,kCAAkC;AAClC,uCAAwG;AACxG,uCAAyB;AACzB,kDAAoC;AACpC,2CAA6B;AAC7B,mDAAwC;AACxC,6CAAyC;AACzC,6CAA8D;AAC9D,qCAA2C;AAE3C,uCAAkD;AAGlD,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAsC/B,SAAgB,eAAe,CAAC,OAA4B;IACxD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,IAAI,uBAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;QAChG,IAAI,MAAsC,CAAC;QAC3C,IAAI,KAAwB,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,OAA2B,EAAE,EAAE;YACnD,MAAM,GAAG,OAAO,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE;YAC/B,KAAK,GAAG,WAAW,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,yEAAyE;QACzE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YACvB,IAAI,KAAK,EAAE,CAAC;gBACR,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;iBAAM,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,KAAK,CAAC,4CAA4C,IAAI,EAAE,CAAC,CAAC,CAAC;YAC1E,CAAC;iBAAM,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC,CAAC;YACzE,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAxBD,0CAwBC;AAED,SAAS,aAAa,CAAC,IAAU;IAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC;IAC1C,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC;YAC1B,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;YAC3E,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,WAAW,CAAC,IAAU;IAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAChC,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;IAC9C,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,kDAAkD;IAClD,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACrC,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,qBAAU,CAAC,eAAe,EAAE,CAAC;YACvD,MAAM,eAAe,GAAG,WAAW,CAAC;YACpC,MAAM,OAAO,GAAG,eAAe,CAAC,iBAAiB,CAAC,qBAAU,CAAC,UAAU,CAAC,CAAC;YAEzE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC5C,IAAI,WAAW,EAAE,CAAC;oBACd,4CAA4C;oBAC5C,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;oBAC9C,IAAI,eAAe,CAAC,eAAe,EAAE,EAAE,CAAC;wBACpC,SAAS,GAAG,IAAI,CAAC;oBACrB,CAAC;yBAAM,IAAI,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC;wBACpC,SAAS,GAAG,IAAI,CAAC;oBACrB,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,8DAA8D;oBAC9D,SAAS,GAAG,IAAI,CAAC;gBACrB,CAAC;YACL,CAAC;YACD,MAAM;QACV,CAAC;IACL,CAAC;IAED,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC;IACnB,CAAC;SAAM,IAAI,SAAS,EAAE,CAAC;QACnB,OAAO,QAAQ,CAAC;IACpB,CAAC;SAAM,IAAI,SAAS,EAAE,CAAC;QACnB,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAGD,MAAM,WAAW;IAEL,OAAO,CAAO;IACd,SAAS,CAAS;IAClB,MAAM,GAAY,KAAK,CAAC;IACxB,kBAAkB,CAAS;IAC3B,cAAc,CAAU;IAChC,8DAA8D;IACvD,UAAU,GAAe,EAAE,CAAC;IACnC,8DAA8D;IACtD,iBAAiB,GAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrD,YAAY,gBAAsB,EAAE,SAAiB,EAAE,cAAuB;QAC1E,IAAI,CAAC,OAAO,GAAG,gBAAgB,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACzC,CAAC;IAEO,SAAS,CAAC,WAAmB,EAAE,YAAqB;QACxD,IAAI,IAAI,GAAG,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvD,wFAAwF;QACxF,wEAAwE;QACxE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YACpB,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACrC,CAAC;QACD,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;YACpD,IAAI,YAAY,EAAE,CAAC;gBACf,0GAA0G;gBAC1G,IAAI,IAAI,CAAC,SAAS,KAAK,YAAY,CAAC,cAAc,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,cAAc,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC;oBAChJ,IAAI,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,YAAY,CAAC,cAAc,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;oBACpF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACvB,CAAC;YACL,CAAC;YACD,uCAAuC;YACvC,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC,WAAW,EAAE,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,cAAc;gBAAE,OAAO;YAE9F,MAAM,QAAQ,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC;YAC9C,uCAAuC;YACvC,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;gBACzB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC9F,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM,CAAC;YACjE,CAAC;YACD,OAAO;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC;QAC9C,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACxB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACtD,IAAI,QAAQ,CAAC,eAAe,EAAE,EAAE,CAAC;oBAC7B,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAClG,CAAC;YACL,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QAC7C,CAAC;QACD,6EAA6E;QAC7E,oFAAoF;QACpF,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5D,mGAAmG;YACnG,OAAO;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC1H,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAClD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC;IAC7C,CAAC;IAEO,iBAAiB,CAAC,WAAmB;QACzC,IAAI,IAAI,GAAG,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvD,wFAAwF;QACxF,wEAAwE;QACxE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YACpB,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACrC,CAAC;QACD,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC;YAC9C,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC1F,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;gBAC9E,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,iBAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;YAClG,CAAC;QACL,CAAC;IACL,CAAC;IAEM,iBAAiB,CAAC,WAAmB;QACxC,yFAAyF;QACzF,4CAA4C;QAE5C,sFAAsF;QACtF,+DAA+D;QAC/D,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACpC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;CACJ;AAED,MAAa,QAAQ;IACT,SAAS,CAAS;IAClB,YAAY,CAAW;IACvB,cAAc,CAAU;IACxB,eAAe,CAAU;IACzB,OAAO,CAAU;IACjB,WAAW,GAAa,EAAE,CAAC;IAC3B,gBAAgB,CAAiC;IACzD,YAAY,SAAiB,EAAE,YAAsB,EAAE,cAAuB,EAAE,eAAwB;QACpG,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;QAClC,wFAAwF;QACxF,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAO,CAAC;gBACvB,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC;gBAChE,2BAA2B,EAAE,IAAI;aACpC,CAAC,CAAC;QACP,CAAC;aAAM,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC;YACnE,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAO,CAAC;gBACvB,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC;gBAC5D,2BAA2B,EAAE,IAAI;aACpC,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAO,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1B,kEAAkE;QAClE,IAAI,CAAC,YAAY,GAAG,IAAA,2CAA8B,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACtF,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC9B,SAAS,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC;QAED,MAAM,WAAW,GAAG,CAAC,sBAAsB,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,4BAA4B,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QACrH,IAAI,CAAC;YACD,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,gBAAM,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YACnF,IAAI,CAAC,WAAW,GAAG,IAAA,+BAAqB,EAAC,cAAc,CAAC,CAAC;YACzD,4GAA4G;QAChH,CAAC;QAAC,MAAM,CAAC;YACL,QAAQ;QACZ,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,UAAU;QACnB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,mBAAmB,EAAE,CAAC;YACjD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBAClC,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;YACnD,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACxH,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC;YACrD,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC;QAC5G,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,MAAM,GAAiB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,mBAAmB,EAAE,CAAC;YAC9E,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;gBACjC,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,mBAAmB,CAAC;gBAC/D,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;gBAC7C,eAAe;gBACf,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,MAAM;gBACN,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;aAC1C,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YAC3E,CAAC;YACD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3D,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAEM,mBAAmB;QACtB,OAAO,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAChG,CAAC;CACJ;AA5FD,4BA4FC;AAED,MAAa,eAAe;IAIH;IACA;IACA;IALb,gBAAgB,CAAiC;IAEzD,YACqB,OAAgB,EAChB,cAAuB,EACvB,eAAwB,EACzC,cAA6C,EAAE;QAH9B,YAAO,GAAP,OAAO,CAAS;QAChB,mBAAc,GAAd,cAAc,CAAS;QACvB,oBAAe,GAAf,eAAe,CAAS;QAGzC,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;IACjD,CAAC;IAEM,mBAAmB;QACtB,MAAM,WAAW,GAAG,IAAI,GAAG,EAA6B,CAAC;QACzD,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC;YACjE,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,WAAW,CAAC;IACvB,CAAC;IAEO,kBAAkB,CAAC,SAAiB,EAAE,UAAmC,EAAE,QAAgB;QAC/F,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC5D,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAEO,yBAAyB,CAAC,eAAwC;QACtE,OAAO,EAAE,GAAG,eAAe,EAAE,CAAC;IAClC,CAAC;IAEO,YAAY;QAChB,MAAM,cAAc,GAAqB,EAAE,CAAC;QAC5C,MAAM,mBAAmB,GAAqB,EAAE,CAAC;QACjD,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC7C,MAAM,KAAK,GAAoB,EAAE,CAAC;YAClC,MAAM,UAAU,GAAoB,EAAE,CAAC;YACvC,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC;YACvC,MAAM,KAAK,GAAG,CAAC,IAAa,EAAQ,EAAE;gBAClC,IAAI,aAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;oBACvD,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;oBACtD,MAAM,gBAAgB,GAAG,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;oBAChE,IAAI,CAAC,WAAW,IAAI,gBAAgB,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,WAAW,EAAE,CAAC;wBAC7F,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;wBACpF,IAAI,WAAW,EAAE,CAAC;4BACd,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACrB,CAAC;wBACD,IAAI,gBAAgB,EAAE,CAAC;4BACnB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC1B,CAAC;oBACL,CAAC;gBACL,CAAC;gBACD,aAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACjC,CAAC,CAAC;YACF,aAAE,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACnC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnB,cAAc,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACtE,CAAC;YACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,mBAAmB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;YACpF,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,cAAc,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACtD,CAAC;IAEO,oBAAoB;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,cAAc,CAAC;QACzD,OAAO,OAAO,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAC5C,CAAC,aAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAC/D,aAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC;YACjC,CAAC,aAAE,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,aAAE,CAAC,SAAS,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CACzG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAEM,OAAO;QACV,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,OAAO;YACH,IAAI,EAAE,UAAU;YAChB,KAAK;YACL,iBAAiB,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE;SACzE,CAAC;IACN,CAAC;IAEO,UAAU,CAAC,MAAwB,EAAE,SAAyC;QAClF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACjE,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,6BAA6B,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC1E,IAAI,CAAC,IAAI,IAAI,CAAC,eAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxC,MAAM,IAAI,KAAK,CAAC,sCAAsC,KAAK,CAAC,QAAQ,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC7F,CAAC;gBACD,SAAS,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;QACL,CAAC;IACL,CAAC;IAEM,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,cAA6B;QACxE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,cAAc,EAAE,CAAC;YACjB,8DAA8D;YAC9D,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC9D,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;YAClE,CAAC;QACL,CAAC;QACD,MAAM,SAAS,GAAG,CAAC,EAAkB,EAAQ,EAAE;YAC3C,IAAI,CAAC;gBACD,MAAM,QAAQ,GAAG,EAAE,CAAC,gBAAgB,EAAE,CAAC;gBACvC,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACvB,MAAM,IAAI,KAAK,CAAC,gDAAgD,EAAE,EAAE,CAAC,CAAC;gBAC1E,CAAC;gBACD,IAAI,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,WAAW,EAAE,CAAC;oBACjD,OAAO;gBACX,CAAC;gBACD,gEAAgE;gBAChE,IAAI,UAAU,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClH,gEAAgE;gBAChE,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;oBACpB,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;oBACvF,OAAO;gBACX,CAAC;qBAAM,CAAC;oBACJ,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAChE,CAAC;gBACD,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;gBAC1E,kEAAkE;gBAClE,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE,CAAC;oBACnC,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC7C,CAAC;gBACD,MAAM,aAAa,GAAG,IAAI,cAAK,CAAC,UAAU,CAAC,CAAC;gBAC5C,wHAAwH;gBACxH,MAAM,eAAe,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,aAAa,EAAE,CAAC;gBAC9D,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;oBAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,WAAW,EAAE,CAAC;oBACrD,MAAM,YAAY,GAAG,IAAI,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;oBACxE,MAAM,mBAAmB,GAAG,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;oBACjE,KAAK,MAAM,EAAE,IAAI,mBAAmB,EAAE,CAAC;wBACnC,IAAI,CAAC,CAAC,EAAE,YAAY,iBAAQ,CAAC,EAAE,CAAC;4BAC5B,mEAAmE;4BACnE,yCAAyC;4BACzC,MAAM,QAAQ,GAAI,EAA2C,CAAC,QAAQ,CAAC,CAAC;4BACxE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gCACzB,IAAI,CAAC,2CAA2C,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,CAAC,CAAC;4BACtF,CAAC;wBACL,CAAC;oBACL,CAAC;oBACD,aAAa,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBACpF,CAAC,CAAC,CAAC;gBACH,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;oBACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;gBAC1J,MAAM,eAAe,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,aAAa,EAAE,CAAC;gBAC9D,8DAA8D;gBAC9D,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;oBAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,WAAW,EAAE,CAAC;oBACrD,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBACpD,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;wBACjC,OAAO;oBACX,CAAC;oBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;oBAC1D,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC1B,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;wBACnD,IAAI,CAAC,aAAa,EAAE,CAAC;4BACjB,OAAO;wBACX,CAAC;wBACD,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC;oBACvC,CAAC;gBACL,CAAC,CAAC,CAAC;YAEP,CAAC;YAAC,MAAM,CAAC;gBACL,IAAI,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,WAAW,EAAE,CAAC;oBACjD,OAAO;gBACX,CAAC;gBACD,0GAA0G;gBAC1G,gEAAgE;gBAChE,IAAI,UAAU,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClH,sHAAsH;gBACtH,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;oBACpB,OAAO;gBACX,CAAC;qBAAM,CAAC;oBACJ,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAChE,CAAC;gBACD,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;gBAC1E,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;gBACxB,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;YAC9J,CAAC;QACL,CAAC,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,2CAA2C,CAAC,QAAgB,EAAE,QAAqE;QACvI,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACxD,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;QACpC,CAAC;aAAM,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3C,QAAQ,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC1D,OAAO,QAAQ,CAAC,IAAI,CAAC;QACzB,CAAC;IACL,CAAC;CACJ;AAvMD,0CAuMC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vscode/telemetry-extractor",
3
- "version": "1.20.2",
3
+ "version": "1.20.5",
4
4
  "description": "Extracts telemetry from VS Code",
5
5
  "main": "out/index.js",
6
6
  "typings": "vscode-telemetry-extractor.d.ts",
@@ -37,10 +37,10 @@
37
37
  "@types/node": "^18.18.2",
38
38
  "eslint": "^9.39.2",
39
39
  "mocha": "^10.2.0",
40
- "nyc": "^15.1.0",
40
+ "nyc": "^18.0.0",
41
41
  "source-map-support": "^0.5.21",
42
42
  "ts-node": "^10.9.2",
43
43
  "typescript": "^5.3.3",
44
44
  "typescript-eslint": "^8.56.0"
45
45
  }
46
- }
46
+ }
@@ -27,7 +27,8 @@ export const optionDefinitions = [
27
27
  { name: 'applyEndpoints', alias: 'e', type: Boolean, defaultValue: false },
28
28
  { name: 'silenceOutput', type: Boolean, description: 'Silences all progress messages.', defaultValue: false },
29
29
  { name: 'lowerCaseEvents', alias: 'l', type: Boolean, defaultValue: false },
30
- { name: 'verbose', alias: 'v', type: Boolean, defaultValue: false }
30
+ { name: 'verbose', alias: 'v', type: Boolean, defaultValue: false },
31
+ { name: 'tableInfo', alias: 't', type: Boolean, description: 'Outputs Kusto table information. If no filename is specified the default file name with -tableInfo is used.', defaultValue: false }
31
32
  ];
32
33
 
33
34
  export const options = resolveDirectories(commandLineArgs(optionDefinitions, { partial: true }));
package/src/extractor.ts CHANGED
@@ -7,6 +7,7 @@ import { cwd } from 'process';
7
7
  import { writeToFile, extractAndResolveDeclarations } from './lib/save-declarations';
8
8
  import { convertConfigToSourceSpecs, ParserOptions, SourceSpec } from './lib/source-spec';
9
9
  import { logMessage } from './lib/logger';
10
+ import type { OutputtedDeclarations } from './lib/declarations';
10
11
 
11
12
  if (options.config) {
12
13
  const sourceSpecs = convertConfigToSourceSpecs(options.config);
@@ -36,7 +37,13 @@ if (options.config) {
36
37
  };
37
38
  extractAndResolveDeclarations([sourceSpec]).then((declarations) => {
38
39
  if (options.outputDir) {
39
- writeToFile(options.outputDir, declarations, options.fileName || 'declarations-resolved', !options.silent);
40
+ const tableInfos = declarations.tableInfos;
41
+ const gdprDeclarations: Partial<OutputtedDeclarations> = { ...declarations };
42
+ delete gdprDeclarations.tableInfos;
43
+ writeToFile(options.outputDir, gdprDeclarations, options.fileName || 'declarations-resolved', !options.silent);
44
+ if (options.tableInfo) {
45
+ writeToFile(options.outputDir, tableInfos, options.fileName ? options.fileName + '-tableInfo' : 'tableInfo', !options.silent);
46
+ }
40
47
  } else {
41
48
  console.log(JSON.stringify(declarations));
42
49
  }
@@ -9,6 +9,67 @@ export class CommonProperties {
9
9
  }
10
10
  }
11
11
 
12
+ export type ColumnType =
13
+ 'bool' |
14
+ 'int' |
15
+ 'long' |
16
+ 'real' |
17
+ 'decimal' |
18
+ 'dynamic' |
19
+ 'guid' |
20
+ 'string' |
21
+ 'datetime' |
22
+ 'timespan';
23
+
24
+ export namespace ColumnType {
25
+ export function fromString(type: string): ColumnType | undefined{
26
+ switch (type.toLowerCase()) {
27
+ case 'bool':
28
+ case 'boolean':
29
+ return 'bool';
30
+ case 'int':
31
+ return 'int';
32
+ case 'long':
33
+ return 'long';
34
+ case 'real':
35
+ case 'double':
36
+ return 'real';
37
+ case 'decimal':
38
+ return 'decimal';
39
+ case 'dynamic':
40
+ return 'dynamic';
41
+ case 'guid':
42
+ case 'uuid':
43
+ case 'uniqueid':
44
+ return 'guid';
45
+ case 'string':
46
+ return 'string';
47
+ case 'datetime':
48
+ case 'date':
49
+ return 'datetime';
50
+ case 'timespan':
51
+ case 'time':
52
+ return 'timespan';
53
+ default:
54
+ return undefined;
55
+ }
56
+ }
57
+ }
58
+
59
+ export type ColumnInfo = {
60
+ name?: string;
61
+ type: ColumnType;
62
+ }
63
+
64
+ export namespace ColumnInfo {
65
+ export function is(obj: unknown): obj is ColumnInfo {
66
+ const candidate = obj as ColumnInfo;
67
+ return !!candidate &&
68
+ (candidate.name === undefined || typeof candidate.name === 'string') &&
69
+ typeof candidate.type === 'string' && ColumnType.fromString(candidate.type) !== undefined;
70
+ }
71
+ }
72
+
12
73
  export class Property implements IProperty {
13
74
  public name: string;
14
75
  public classification: string;
@@ -18,16 +79,21 @@ export class Property implements IProperty {
18
79
  public expiration?: string;
19
80
  public owner?: string;
20
81
  public comment?: string;
21
-
82
+
83
+ // The name and type of the property if mirrored into a flat table in Kusto.
84
+ // Needs to be removed when generating the patch for the GDPR catalog as
85
+ // flat table properties are not allowed in the catalog.
86
+ public column?: ColumnInfo;
87
+
22
88
  constructor (
23
- name: string,
89
+ name: string,
24
90
  classification: string,
25
- purpose: string,
91
+ purpose: string,
26
92
  expiration?: string,
27
93
  owner?: string,
28
94
  comment?: string,
29
- endpoint?: string,
30
- isMeasurement?: boolean
95
+ endpoint?: string,
96
+ isMeasurement?: boolean,
31
97
  ) {
32
98
  this.name = name;
33
99
  this.classification = classification;
@@ -3,7 +3,7 @@
3
3
  import { Fragments } from "./fragments";
4
4
  import { Events, Include, Inline } from "./events";
5
5
  import { CommonProperties, Property } from "./common-properties";
6
- import type { Events as OutputEvents, CommonProperties as OutputCommonProperties } from "../../vscode-telemetry-extractor";
6
+ import type { Events as OutputEvents, CommonProperties as OutputCommonProperties , TableInfo as OutputTableInfo } from "../../vscode-telemetry-extractor";
7
7
 
8
8
  export interface Declarations {
9
9
  fragments: Fragments;
@@ -15,6 +15,7 @@ export interface Declarations {
15
15
  export interface OutputtedDeclarations {
16
16
  events: OutputEvents;
17
17
  commonProperties: OutputCommonProperties;
18
+ tableInfos: { [key: string]: OutputTableInfo };
18
19
  }
19
20
 
20
21
  function resolveIncludes(target: Events | Fragments, fragments: Fragments) {
@@ -0,0 +1,7 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT license.
3
+
4
+ export interface EventDefinition {
5
+ properties: Record<string, unknown>;
6
+ location: string;
7
+ }
package/src/lib/events.ts CHANGED
@@ -11,14 +11,46 @@ export class Events implements ITelemetryData {
11
11
  }
12
12
  }
13
13
 
14
+ export type TableInfo = {
15
+ name: string;
16
+ commonProperties: 'standard';
17
+ backfill: boolean | string;
18
+ }
19
+ export namespace TableInfo {
20
+ export function fromObject(obj: unknown): TableInfo | undefined {
21
+ if (typeof obj !== 'object' || obj === null) {
22
+ return undefined;
23
+ }
24
+ const candidate: Partial<TableInfo> = obj as TableInfo;
25
+ if (typeof candidate.name !== 'string') {
26
+ return undefined;
27
+ }
28
+ const result: TableInfo = {
29
+ name: candidate.name,
30
+ commonProperties: 'standard',
31
+ backfill: false
32
+
33
+ };
34
+ if (candidate.commonProperties === 'standard') {
35
+ result.commonProperties = 'standard';
36
+ }
37
+ if (typeof candidate.backfill === 'boolean' || typeof candidate.backfill === 'string') {
38
+ result.backfill = candidate.backfill;
39
+ }
40
+ return result;
41
+ }
42
+ }
43
+
14
44
  export class Event implements ITelemetryDataPoint {
15
45
  public name: string;
16
46
  // It gets a little more complicated here as events can have a bunch of different things
17
47
  public properties: Array<Property | Metadata | Include | Inline | Wildcard>;
48
+ public tableInfo?: TableInfo;
18
49
  constructor (name: string) {
19
50
  this.name = name;
20
51
  this.properties = [];
21
- }
52
+ this.tableInfo = undefined;
53
+ }
22
54
  }
23
55
 
24
56
  export class Include implements IInclude {