diff --git a/app/web/eslint.config.ts b/app/web/eslint.config.ts index 1a2257b2bf..d591c38afa 100644 --- a/app/web/eslint.config.ts +++ b/app/web/eslint.config.ts @@ -74,9 +74,7 @@ export default defineConfigWithVueTs( // dont want this "@typescript-eslint/consistent-type-imports": 0, "import/named": 0, - - // warning on this because we have some shenanigans where it is a promise but a literal `await` is not present - "@typescript-eslint/require-await": "warn", + "@typescript-eslint/require-await": 0, // "prettier/prettier": "warn", "@typescript-eslint/quotes": 0, @@ -103,10 +101,11 @@ export default defineConfigWithVueTs( "no-await-in-loop": 0, "no-lonely-if": 0, "@typescript-eslint/no-unused-vars": [ - "warn", + "error", { argsIgnorePattern: "^_|^(response)$", varsIgnorePattern: "^_|^(props|emit)$", + caughtErrorsIgnorePattern: "^_", }, ], "@typescript-eslint/return-await": 0, @@ -116,7 +115,7 @@ export default defineConfigWithVueTs( // curly: ["error", "multi-line"], // "brace-style": "error", "max-len": [ - "warn", // just a warning since prettier will enforce + "off", // prettier will enforce 120, 2, { @@ -167,9 +166,9 @@ export default defineConfigWithVueTs( "@typescript-eslint/no-shadow": 0, "guard-for-in": 0, + "no-console": "error", // some rules to downgrade to warning while developing -------------------- // useful so things dont crash when code is temporarily commented out - "no-console": "warn", "@typescript-eslint/no-empty-function": "warn", "no-debugger": "warn", "no-alert": "warn", @@ -192,6 +191,12 @@ export default defineConfigWithVueTs( // useful while debugging and commenting things out, otherwise gets automatically changed from let to const // "no-autofix/prefer-const": "warn", + // not clear to me why we have these problems + "import/no-named-as-default": 0, + "import/no-named-as-default-member": 0, + + "@typescript-eslint/no-empty-function": 0, + "vue/block-order": [ "error", { diff --git a/app/web/src/components/CachedAppNotification.vue b/app/web/src/components/CachedAppNotification.vue index f49d9fbec3..86dae08f82 100644 --- a/app/web/src/components/CachedAppNotification.vue +++ b/app/web/src/components/CachedAppNotification.vue @@ -54,7 +54,7 @@ async function check() { if (runningHash && latestHash !== runningHash) { openModal(); } - } catch (err) { + } catch (_err) { // local dev errors here because the manifest file doesn't exist stopInterval(); } diff --git a/app/web/src/newhotness/FuncRunDetails.vue b/app/web/src/newhotness/FuncRunDetails.vue index 0b19ca0df1..dd34cfe67b 100644 --- a/app/web/src/newhotness/FuncRunDetails.vue +++ b/app/web/src/newhotness/FuncRunDetails.vue @@ -289,7 +289,7 @@ const functionCode = computed(() => { try { const decodedCode = atob(funcRun.value.functionCodeBase64); return decodedCode; - } catch (e) { + } catch (_e) { return "// Error decoding function code"; } }); @@ -300,7 +300,7 @@ const argsJson = computed(() => { try { return JSON.stringify(funcRun.value.functionArgs, null, 2); - } catch (e) { + } catch (_e) { return "// Error formatting arguments"; } }); @@ -311,7 +311,7 @@ const resultJson = computed(() => { try { return JSON.stringify(funcRun.value.resultValue, null, 2); - } catch (e) { + } catch (_e) { return "// Error formatting result"; } }); diff --git a/app/web/src/newhotness/LatestFuncRunDetails.vue b/app/web/src/newhotness/LatestFuncRunDetails.vue index 1de9b1969a..8c7b490864 100644 --- a/app/web/src/newhotness/LatestFuncRunDetails.vue +++ b/app/web/src/newhotness/LatestFuncRunDetails.vue @@ -104,7 +104,7 @@ const functionCode = computed(() => actionDetailQuery.data.value?.code); const argsJson = computed(() => { try { return JSON.stringify(actionDetailQuery.data.value?.args, null, 2); - } catch (e) { + } catch (_e) { return "// Error formatting arguments"; } }); diff --git a/app/web/src/newhotness/Review.vue b/app/web/src/newhotness/Review.vue index ff97f69eb7..2740cab660 100644 --- a/app/web/src/newhotness/Review.vue +++ b/app/web/src/newhotness/Review.vue @@ -971,7 +971,7 @@ const restoreComponent = async () => { await sleep(1000); const result = await restoreComponents([selectedComponent.value.id]); restoreComponentStatus.value = result.success ? "succeeded" : undefined; - } catch (e) { + } catch (_e) { restoreComponentStatus.value = undefined; } }; diff --git a/app/web/src/newhotness/StatusPanel.vue b/app/web/src/newhotness/StatusPanel.vue index 3b4eb91732..c817aeb647 100644 --- a/app/web/src/newhotness/StatusPanel.vue +++ b/app/web/src/newhotness/StatusPanel.vue @@ -88,7 +88,7 @@ const STATUS_PANEL_KEY = "statusPanel"; realtimeStore.subscribe(STATUS_PANEL_KEY, `workspace/${ctx.workspacePk.value}`, [ { eventType: "ChangeSetStatusChanged", - callback: async (data) => { + callback: (data) => { if ( [ChangeSetStatus.Abandoned, ChangeSetStatus.Applied, ChangeSetStatus.Closed].includes(data.changeSet.status) && data.changeSet.id !== ctx.headChangeSetId.value @@ -102,7 +102,7 @@ realtimeStore.subscribe(STATUS_PANEL_KEY, `workspace/${ctx.workspacePk.value}`, }, { eventType: "ManagementOperationsComplete", - callback: async (payload, meta) => { + callback: (payload, meta) => { if (!payload.requestUlid) return; const key = `management-${payload.requestUlid}`; if (superBucket[meta.change_set_id]?.[key]) { @@ -113,7 +113,7 @@ realtimeStore.subscribe(STATUS_PANEL_KEY, `workspace/${ctx.workspacePk.value}`, }, { eventType: "ManagementOperationsFailed", - callback: async (payload, meta) => { + callback: (payload, meta) => { // BUCKET ITEM -- ADD -- MANAGEMENT FUNCS const key = `management-${payload.requestUlid}`; let bucket = superBucket[meta.change_set_id]; @@ -126,7 +126,7 @@ realtimeStore.subscribe(STATUS_PANEL_KEY, `workspace/${ctx.workspacePk.value}`, }, { eventType: "ManagementOperationsInProgress", - callback: async (payload, meta) => { + callback: (payload, meta) => { // BUCKET ITEM -- ADD -- MANAGEMENT FUNCS const key = `management-${payload.requestUlid}`; let bucket = superBucket[meta.change_set_id]; diff --git a/app/web/src/newhotness/logic_composables/rainbow_counter.ts b/app/web/src/newhotness/logic_composables/rainbow_counter.ts index c5af0906d1..6778b48ecf 100644 --- a/app/web/src/newhotness/logic_composables/rainbow_counter.ts +++ b/app/web/src/newhotness/logic_composables/rainbow_counter.ts @@ -26,7 +26,7 @@ export const useRainbow = (changeSetId: ComputedRef) => { * When its > 0 the system is waiting for data */ return { count: computed(() => queue?.size ?? 0) }; - } catch (err) { + } catch (_err) { return { count: 0 }; } }); diff --git a/app/web/src/newhotness/logic_composables/watched_form.ts b/app/web/src/newhotness/logic_composables/watched_form.ts index a951016010..861006b326 100644 --- a/app/web/src/newhotness/logic_composables/watched_form.ts +++ b/app/web/src/newhotness/logic_composables/watched_form.ts @@ -130,7 +130,7 @@ export const useWatchedForm = >(label: strin try { await onSubmit(props); hasSubmitted = true; - } catch (e) { + } catch (_e) { // TODO report errors and display on caller forms // Cancel the spinner and bifrosting on failure markComplete(); diff --git a/app/web/src/store/auth.store.ts b/app/web/src/store/auth.store.ts index 6d4da47009..b558b379e8 100644 --- a/app/web/src/store/auth.store.ts +++ b/app/web/src/store/auth.store.ts @@ -292,7 +292,7 @@ export const useAuthStore = () => { }, }); } - } catch (error) { + } catch (_error) { // Silently fail - logout will still clear local state } diff --git a/app/web/src/store/realtime/heimdall.ts b/app/web/src/store/realtime/heimdall.ts index 2ff0a57b23..808b7e53aa 100644 --- a/app/web/src/store/realtime/heimdall.ts +++ b/app/web/src/store/realtime/heimdall.ts @@ -320,17 +320,13 @@ db.getConnections().then((conns) => { }); }); -const updateConnectionStatus: ConnStatusFn = async ( - workspaceId: WorkspacePk, - connected: boolean, - noBroadcast?: boolean, -) => { +const updateConnectionStatus: ConnStatusFn = (workspaceId: WorkspacePk, connected: boolean, noBroadcast?: boolean) => { _wsConnections.value[workspaceId] = connected; // always update to connected if (connected) wsConnections.value[workspaceId] = connected; - await db.setConnections({ ..._wsConnections.value }); + db.setConnections({ ..._wsConnections.value }); // prevent blips in the UI from quick disconnect -> connect flips setTimeout(() => { @@ -691,7 +687,7 @@ const fetchOpenChangeSets = async (workspaceId: WorkspacePk): Promise { // toRebaseChangeSetId is HEAD / where merges are going into try { topics.push(`changeset/${eventData.toRebaseChangeSetId}`); - } catch (err) { + } catch (_err) { // do nothing } } diff --git a/app/web/src/workers/types/dbinterface.ts b/app/web/src/workers/types/dbinterface.ts index 91da2ab5c7..9376402729 100644 --- a/app/web/src/workers/types/dbinterface.ts +++ b/app/web/src/workers/types/dbinterface.ts @@ -43,7 +43,7 @@ export type UpdateFn = ( noBroadcast?: boolean, ) => void; export type RainbowFn = (changeSetId: ChangeSetId, label: string, noBroadcast?: boolean) => void; -export type LobbyExitFn = (workspacePk: string, changeSetId: string, noBroadcast?: boolean) => void; +export type LobbyExitFn = (workspacePk: string, changeSetId: string, noBroadcast?: boolean) => Promise; export type MjolnirBulk = Array<{ kind: EntityKind; diff --git a/app/web/src/workers/webworker.mess.ts b/app/web/src/workers/webworker.mess.ts index 5f99b45798..39c02f1d8b 100644 --- a/app/web/src/workers/webworker.mess.ts +++ b/app/web/src/workers/webworker.mess.ts @@ -1412,7 +1412,7 @@ async function go() { db.addListenerInFlight(Comlink.proxy(() => {})); db.addListenerReturned(Comlink.proxy(() => {})); db.addAtomUpdated(Comlink.proxy(() => {})); - db.addListenerLobbyExit(Comlink.proxy(() => {})); + db.addListenerLobbyExit(Comlink.proxy(async () => {})); db.addConnStatusFn(Comlink.proxy(() => {})); await db.initDB(true); await db.migrate(true); diff --git a/app/web/src/workers/webworker.perf.ts b/app/web/src/workers/webworker.perf.ts index b1811dc2ab..5f7d457865 100644 --- a/app/web/src/workers/webworker.perf.ts +++ b/app/web/src/workers/webworker.perf.ts @@ -1411,7 +1411,7 @@ async function go() { db.addListenerInFlight(Comlink.proxy(() => {})); db.addListenerReturned(Comlink.proxy(() => {})); db.addAtomUpdated(Comlink.proxy(() => {})); - db.addListenerLobbyExit(Comlink.proxy(() => {})); + db.addListenerLobbyExit(Comlink.proxy(async () => {})); db.addConnStatusFn(Comlink.proxy(() => {})); await db.initDB(true); await db.migrate(true); diff --git a/app/web/src/workers/webworker.test.ts b/app/web/src/workers/webworker.test.ts index 1bf413b9f7..cee0c5a400 100644 --- a/app/web/src/workers/webworker.test.ts +++ b/app/web/src/workers/webworker.test.ts @@ -6,7 +6,6 @@ import { NOROW, WorkspacePatchBatch, AtomDocument, - OutgoingConnections, WorkspaceIndexUpdate, MessageKind, } from "@/workers/types/dbinterface"; @@ -5422,7 +5421,7 @@ async function go() { db.addListenerInFlight(Comlink.proxy(() => {})); db.addListenerReturned(Comlink.proxy(() => {})); db.addAtomUpdated(Comlink.proxy(() => {})); - db.addListenerLobbyExit(Comlink.proxy(() => {})); + db.addListenerLobbyExit(Comlink.proxy(async () => {})); db.addConnStatusFn(Comlink.proxy(() => {})); await db.initDB(true); await db.migrate(true); diff --git a/app/web/src/workers/webworker.ts b/app/web/src/workers/webworker.ts index 47952f5cee..f8e9939299 100644 --- a/app/web/src/workers/webworker.ts +++ b/app/web/src/workers/webworker.ts @@ -1204,7 +1204,7 @@ const handleWorkspacePatchMessage = async (db: Database, data: WorkspacePatchBat try { await initIndexAndChangeSet(db, data.meta, span); await updateChangeSetWithNewIndex(db, data.meta); - } catch (err) { + } catch (_err) { error("Failed to handle empty patch", data); } span.end(); @@ -1455,7 +1455,7 @@ const handlePatchOperations = async ( for (const atom of atomsToInsert) { try { await postProcess(db, workspaceId, changeSetId, atom.kind, atom.doc, atom.id, indexChecksum, false, true); - } catch (err) { + } catch (_err) { error("Failed to post process atom", atom, error); } }