Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,17 @@
"curly": "warn",
"eqeqeq": "warn",
"no-throw-literal": "warn",
"indent": "off"
"indent": "off",
"no-restricted-syntax": [
"error",
{
"selector": "CallExpression[callee.property.name='sendTelemetryError'][arguments.0.type='Literal'][arguments.0.value!=/Error$/]",
"message": "First argument to sendTelemetryError must be an event name ending in 'Error' (project convention — e.g. 'compileNodePythonError', 'extensionActivationError'). Rename the event or use a TelemetryEvents enum entry that ends in 'Error'."
},
{
"selector": "CallExpression[callee.property.name='sendTelemetryError'][arguments.0.object.name='TelemetryEvents'][arguments.0.property.value!=/Error$/]",
"message": "TelemetryEvents key passed to sendTelemetryError must end in 'Error' (project convention). Rename the enum entry in src/telemetry/events.ts and all call sites."
}
]
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ export class DbtDocumentFormattingEditProvider implements DocumentFormattingEdit
return this.processDiffOutput(document, (e as Error).message);
} catch (error) {
this.telemetry.sendTelemetryError(
"formatDbtModelApplyDiffFailed",
"formatDbtModelApplyDiffError",
error,
);
window.showErrorMessage(
Expand All @@ -101,7 +101,7 @@ export class DbtDocumentFormattingEditProvider implements DocumentFormattingEdit
}
}
} catch (error) {
this.telemetry.sendTelemetryError("formatDbtModelApplyDiffFailed", error);
this.telemetry.sendTelemetryError("formatDbtModelApplyDiffError", error);
window.showErrorMessage(
extendErrorWithSupportLinks(
'Could not run sqlfmt. If sqlfmt is installed (e.g. via `uv tool install "shandy-sqlfmt[jinjafmt]"` or `pipx install "shandy-sqlfmt[jinjafmt]"`), ' +
Expand Down
2 changes: 1 addition & 1 deletion src/services/dbtLineageService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -484,7 +484,7 @@ export class DbtLineageService {
),
);
this.telemetry.sendTelemetryError(
"columnLevelLineageRequestTimeout",
"columnLevelLineageRequestTimeoutError",
error,
);
return;
Expand Down
2 changes: 1 addition & 1 deletion src/telemetry/events.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ export enum TelemetryEvents {
"Notebook/LaunchError" = "Notebook/LaunchError",
"Notebook/StoreDataInKernelError" = "Notebook/StoreDataInKernelError",
"QueryHistory/Disabled" = "QueryHistory/Disabled",
"QueryHistory/Cleared" = "QueryHistory/Cleared",
"QueryHistory/ClearError" = "QueryHistory/ClearError",
"CteProfiler/Profile" = "CteProfiler/Profile",
"CteProfiler/Cancel" = "CteProfiler/Cancel",
"MCP/ToolCall" = "MCP/ToolCall",
Expand Down
4 changes: 2 additions & 2 deletions src/test/suite/telemetryService.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,13 +77,13 @@ describe("TelemetryService.sendTelemetryError surfaces diagnostic fields", () =>

it("forwards error.name as a top-level property", () => {
const err = new TypeError("Cannot destructure property 'returnResult'");
telemetry.sendTelemetryError("unhandlederror", err);
telemetry.sendTelemetryError("unhandledRejectionError", err);
expect(captureProperties().error_name).toBe("TypeError");
});

it("forwards error.message as a top-level property (survives URL redaction)", () => {
const err = new Error("Channel closed");
telemetry.sendTelemetryError("unhandlederror", err);
telemetry.sendTelemetryError("unhandledRejectionError", err);
expect(captureProperties().error_message).toBe("Channel closed");
});

Expand Down
2 changes: 1 addition & 1 deletion src/webview_provider/queryResultPanel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -412,7 +412,7 @@ export class QueryResultPanel extends AltimateWebviewProvider {
// to disable query history and retry
case InboundCommand.ClearQueryHistory:
this.telemetry.sendTelemetryError(
TelemetryEvents["QueryHistory/Cleared"],
TelemetryEvents["QueryHistory/ClearError"],
message.error,
);
this._queryHistory = [];
Expand Down
Loading