From 1032698bd271809fc4d5d0a05b9a31e0e8560797 Mon Sep 17 00:00:00 2001 From: whatuserever <83753332+whatuserever@users.noreply.github.com> Date: Sat, 15 Feb 2025 23:39:25 +0200 Subject: [PATCH 01/12] Add zod schema for original config --- package.json | 3 +- .../configMigration/versions/original.ts | 94 +++++++++++++++++++ yarn.lock | 5 + 3 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 packages/main/src/backend/configManager/configMigration/versions/original.ts diff --git a/package.json b/package.json index 5a95e36c..20e7a9ec 100644 --- a/package.json +++ b/package.json @@ -98,7 +98,8 @@ "react-dom": "^18.3.1", "svelte": "^4.2.19", "web-vitals": "^4.2.3", - "ynab": "^1.19.0" + "ynab": "^1.19.0", + "zod": "^3.24.2" }, "resolutions": { "underscore": "1.12.1", diff --git a/packages/main/src/backend/configManager/configMigration/versions/original.ts b/packages/main/src/backend/configManager/configMigration/versions/original.ts new file mode 100644 index 00000000..88e6991e --- /dev/null +++ b/packages/main/src/backend/configManager/configMigration/versions/original.ts @@ -0,0 +1,94 @@ +import { z } from 'zod'; + +export const outputVendorNameSchema = z.enum(['ynab', 'googleSheets', 'json', 'csv']); + +export const companyTypeSchema = z.enum([ + 'hapoalim', + 'hapoalimBeOnline', + 'beinleumi', + 'union', + 'amex', + 'isracard', + 'visaCal', + 'max', + 'leumiCard', + 'otsarHahayal', + 'discount', + 'mercantile', + 'mizrahi', + 'leumi', + 'massad', + 'yahav', + 'behatsdaa', + 'beyahadBishvilha', + 'oneZero', + 'pagi', +]); + +export const googleSheetsConfigSchema = z.object({ + active: z.boolean(), + options: z.object({ + credentials: z.any(), + spreadsheetId: z.string(), + }), +}); + +export const ynabConfigSchema = z.object({ + active: z.boolean(), + options: z.object({ + accessToken: z.string(), + accountNumbersToYnabAccountIds: z.record(z.string(), z.string()), + budgetId: z.string(), + maxPayeeNameLength: z.number().optional(), + }), +}); + +export const jsonConfigSchema = z.object({ + active: z.boolean(), + options: z.object({ + filePath: z.string(), + }), +}); + +export const csvConfigSchema = z.object({ + active: z.boolean(), + options: z.object({ + filePath: z.string(), + }), +}); + +export const outputVendorsSchema = z.object({ + [outputVendorNameSchema.Values.googleSheets]: googleSheetsConfigSchema.optional(), + [outputVendorNameSchema.Values.ynab]: ynabConfigSchema.optional(), + [outputVendorNameSchema.Values.json]: jsonConfigSchema.optional(), + [outputVendorNameSchema.Values.csv]: csvConfigSchema.optional(), +}); + +export const accountToScrapeConfigSchema = z.object({ + id: z.string(), + key: companyTypeSchema, + name: z.string(), + loginFields: z.any(), + active: z.boolean().optional(), +}); + +export const scrapingSchema = z.object({ + numDaysBack: z.number(), + showBrowser: z.boolean(), + accountsToScrape: z.array(accountToScrapeConfigSchema), + chromiumPath: z.string().optional(), + maxConcurrency: z.number().optional(), + timeout: z.number(), + periodicScrapingIntervalHours: z.number().optional(), +}); + +export const originalConfigSchema = z.object({ + outputVendors: outputVendorsSchema, + scraping: scrapingSchema, + useReactUI: z.boolean().optional(), +}); + +export function isOriginalConfig(obj: unknown): obj is z.infer { + const parseResult = originalConfigSchema.strict().safeParse(obj); + return parseResult.success; +} diff --git a/yarn.lock b/yarn.lock index c7251dd0..eb2093fb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6493,3 +6493,8 @@ zod@3.23.8: version "3.23.8" resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.8.tgz#e37b957b5d52079769fb8097099b592f0ef4067d" integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g== + +zod@^3.24.2: + version "3.24.2" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.2.tgz#8efa74126287c675e92f46871cfc8d15c34372b3" + integrity sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ== From c2f73f3f051e94c4492e6f922758fdd60c5c6097 Mon Sep 17 00:00:00 2001 From: whatuserever <83753332+whatuserever@users.noreply.github.com> Date: Sat, 15 Feb 2025 23:40:20 +0200 Subject: [PATCH 02/12] Add schema for v1 config --- .../configManager/configMigration/versions/v1.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 packages/main/src/backend/configManager/configMigration/versions/v1.ts diff --git a/packages/main/src/backend/configManager/configMigration/versions/v1.ts b/packages/main/src/backend/configManager/configMigration/versions/v1.ts new file mode 100644 index 00000000..6b3a635b --- /dev/null +++ b/packages/main/src/backend/configManager/configMigration/versions/v1.ts @@ -0,0 +1,11 @@ +import { z } from 'zod'; +import { originalConfigSchema } from './original'; + +export const v1ConfigSchema = originalConfigSchema.extend({ version: z.literal(1) }); + +export function migrateOriginalToV1(v1Config: z.infer): z.infer { + return { + ...v1Config, + version: 1, + }; +} From 101a1db5797acf2f7e999a3cdc829c6a05d320d3 Mon Sep 17 00:00:00 2001 From: whatuserever <83753332+whatuserever@users.noreply.github.com> Date: Sat, 15 Feb 2025 23:41:01 +0200 Subject: [PATCH 03/12] Add config migration mechanism --- .../backend/configManager/configManager.ts | 3 +- .../configMigration/configMigrator.ts | 31 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 packages/main/src/backend/configManager/configMigration/configMigrator.ts diff --git a/packages/main/src/backend/configManager/configManager.ts b/packages/main/src/backend/configManager/configManager.ts index 4e618d5f..71dd5f98 100644 --- a/packages/main/src/backend/configManager/configManager.ts +++ b/packages/main/src/backend/configManager/configManager.ts @@ -2,6 +2,7 @@ import { configFilePath } from '@/app-globals'; import { type Config } from '@/backend/commonTypes'; import { decrypt, encrypt } from '@/backend/configManager/encryption/crypto'; import { existsSync, promises as fs } from 'fs'; +import { migrateConfig } from './configMigration/configMigrator'; import configExample from './defaultConfig'; import logger from '/@/logging/logger'; @@ -19,7 +20,7 @@ export async function getConfig(configPath: string = configFilePath): Promise any> = {}; + +export function migrateConfig(config: unknown): Config { + let currentConfig = config; + // original config does not have version key and must be handled separately + if (isOriginalConfig(config)) { + return config as Config; + } + let currentVersion = getConfigVersion(currentConfig); + + while (migrations[currentVersion]) { + currentConfig = migrations[currentVersion](currentConfig); + currentVersion = getConfigVersion(currentConfig); + } + + return latestConfigSchema.parse(currentConfig) as Config; +} + +function getConfigVersion(config: unknown): keyof typeof migrations { + const versionSchema = z.object({ version: z.number().int().positive() }); + return versionSchema.parse(config).version; +} From 304e55ea6b307c8e205aab01b70595a2002b336c Mon Sep 17 00:00:00 2001 From: whatuserever <83753332+whatuserever@users.noreply.github.com> Date: Sat, 15 Feb 2025 23:48:30 +0200 Subject: [PATCH 04/12] Add version key to config --- packages/main/src/backend/commonTypes.ts | 1 + .../backend/configManager/configMigration/configMigrator.ts | 4 ++-- packages/main/src/backend/configManager/defaultConfig.ts | 1 + packages/preload/src/commonTypes.ts | 1 + packages/renderer/src/store/Store.test.tsx | 1 + packages/renderer/src/types.tsx | 1 + 6 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/main/src/backend/commonTypes.ts b/packages/main/src/backend/commonTypes.ts index 78def43e..439612b5 100644 --- a/packages/main/src/backend/commonTypes.ts +++ b/packages/main/src/backend/commonTypes.ts @@ -11,6 +11,7 @@ export type { Spreadsheet, } from './export/outputVendors/googleSheets/googleSheetsInternalAPI'; export interface Config { + version: number; outputVendors: { [OutputVendorName.GOOGLE_SHEETS]?: GoogleSheetsConfig; [OutputVendorName.YNAB]?: YnabConfig; diff --git a/packages/main/src/backend/configManager/configMigration/configMigrator.ts b/packages/main/src/backend/configManager/configMigration/configMigrator.ts index ff4e2ca5..21788321 100644 --- a/packages/main/src/backend/configManager/configMigration/configMigrator.ts +++ b/packages/main/src/backend/configManager/configMigration/configMigrator.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; import { type Config } from '../../commonTypes'; import { isOriginalConfig } from './versions/original'; -import { v1ConfigSchema } from './versions/v1'; +import { migrateOriginalToV1, v1ConfigSchema } from './versions/v1'; const latestConfigSchema = v1ConfigSchema; @@ -13,7 +13,7 @@ export function migrateConfig(config: unknown): Config { let currentConfig = config; // original config does not have version key and must be handled separately if (isOriginalConfig(config)) { - return config as Config; + currentConfig = migrateOriginalToV1(config); } let currentVersion = getConfigVersion(currentConfig); diff --git a/packages/main/src/backend/configManager/defaultConfig.ts b/packages/main/src/backend/configManager/defaultConfig.ts index df8f7034..11c2b416 100644 --- a/packages/main/src/backend/configManager/defaultConfig.ts +++ b/packages/main/src/backend/configManager/defaultConfig.ts @@ -1,6 +1,7 @@ import { type Config } from '../commonTypes'; const DEFAULT_CONFIG: Config = { + version: 1, scraping: { numDaysBack: 40, showBrowser: false, diff --git a/packages/preload/src/commonTypes.ts b/packages/preload/src/commonTypes.ts index bac6c7c2..d04265f2 100644 --- a/packages/preload/src/commonTypes.ts +++ b/packages/preload/src/commonTypes.ts @@ -15,6 +15,7 @@ export enum OutputVendorName { } export interface Config { + version: number; outputVendors: { [OutputVendorName.GOOGLE_SHEETS]?: GoogleSheetsConfig; [OutputVendorName.YNAB]?: YnabConfig; diff --git a/packages/renderer/src/store/Store.test.tsx b/packages/renderer/src/store/Store.test.tsx index 1ae4f397..9fddb1ce 100644 --- a/packages/renderer/src/store/Store.test.tsx +++ b/packages/renderer/src/store/Store.test.tsx @@ -99,6 +99,7 @@ describe('Store', () => { }); export const dummyConfig: Config = { + version: 1, scraping: { numDaysBack: 40, showBrowser: false, diff --git a/packages/renderer/src/types.tsx b/packages/renderer/src/types.tsx index f24fb543..1bd944b9 100644 --- a/packages/renderer/src/types.tsx +++ b/packages/renderer/src/types.tsx @@ -17,6 +17,7 @@ export enum OutputVendorName { } export interface Config { + version: number; outputVendors: { [OutputVendorName.GOOGLE_SHEETS]?: GoogleSheetsConfig; [OutputVendorName.YNAB]?: YnabConfig; From 30c18c774ce1e26edce0265b8f3847f2020e7b1e Mon Sep 17 00:00:00 2001 From: whatuserever <83753332+whatuserever@users.noreply.github.com> Date: Tue, 11 Mar 2025 22:57:05 +0200 Subject: [PATCH 05/12] Remove zod --- package.json | 6 +- .../configMigration/configMigrator.ts | 19 ++-- .../configMigration/versions/original.ts | 94 ------------------- .../configMigration/versions/v1.ts | 8 +- yarn.lock | 5 - 5 files changed, 13 insertions(+), 119 deletions(-) delete mode 100644 packages/main/src/backend/configManager/configMigration/versions/original.ts diff --git a/package.json b/package.json index 20e7a9ec..14f9c6f6 100644 --- a/package.json +++ b/package.json @@ -98,11 +98,11 @@ "react-dom": "^18.3.1", "svelte": "^4.2.19", "web-vitals": "^4.2.3", - "ynab": "^1.19.0", - "zod": "^3.24.2" + "ynab": "^1.19.0" }, "resolutions": { "underscore": "1.12.1", "ws": "8.17.1" - } + }, + "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" } diff --git a/packages/main/src/backend/configManager/configMigration/configMigrator.ts b/packages/main/src/backend/configManager/configMigration/configMigrator.ts index 21788321..62ce2a06 100644 --- a/packages/main/src/backend/configManager/configMigration/configMigrator.ts +++ b/packages/main/src/backend/configManager/configMigration/configMigrator.ts @@ -1,18 +1,15 @@ -import { z } from 'zod'; import { type Config } from '../../commonTypes'; -import { isOriginalConfig } from './versions/original'; -import { migrateOriginalToV1, v1ConfigSchema } from './versions/v1'; - -const latestConfigSchema = v1ConfigSchema; +import { migrateOriginalToV1 } from './versions/v1'; // migrations[n] should be a function that converts version n to version n+1 // eslint-disable-next-line @typescript-eslint/no-explicit-any const migrations: Record any> = {}; -export function migrateConfig(config: unknown): Config { +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export function migrateConfig(config: any): Config { let currentConfig = config; // original config does not have version key and must be handled separately - if (isOriginalConfig(config)) { + if (config.version === undefined) { currentConfig = migrateOriginalToV1(config); } let currentVersion = getConfigVersion(currentConfig); @@ -22,10 +19,10 @@ export function migrateConfig(config: unknown): Config { currentVersion = getConfigVersion(currentConfig); } - return latestConfigSchema.parse(currentConfig) as Config; + return currentConfig as Config; } -function getConfigVersion(config: unknown): keyof typeof migrations { - const versionSchema = z.object({ version: z.number().int().positive() }); - return versionSchema.parse(config).version; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function getConfigVersion(config: any): keyof typeof migrations { + return config.version; } diff --git a/packages/main/src/backend/configManager/configMigration/versions/original.ts b/packages/main/src/backend/configManager/configMigration/versions/original.ts deleted file mode 100644 index 88e6991e..00000000 --- a/packages/main/src/backend/configManager/configMigration/versions/original.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { z } from 'zod'; - -export const outputVendorNameSchema = z.enum(['ynab', 'googleSheets', 'json', 'csv']); - -export const companyTypeSchema = z.enum([ - 'hapoalim', - 'hapoalimBeOnline', - 'beinleumi', - 'union', - 'amex', - 'isracard', - 'visaCal', - 'max', - 'leumiCard', - 'otsarHahayal', - 'discount', - 'mercantile', - 'mizrahi', - 'leumi', - 'massad', - 'yahav', - 'behatsdaa', - 'beyahadBishvilha', - 'oneZero', - 'pagi', -]); - -export const googleSheetsConfigSchema = z.object({ - active: z.boolean(), - options: z.object({ - credentials: z.any(), - spreadsheetId: z.string(), - }), -}); - -export const ynabConfigSchema = z.object({ - active: z.boolean(), - options: z.object({ - accessToken: z.string(), - accountNumbersToYnabAccountIds: z.record(z.string(), z.string()), - budgetId: z.string(), - maxPayeeNameLength: z.number().optional(), - }), -}); - -export const jsonConfigSchema = z.object({ - active: z.boolean(), - options: z.object({ - filePath: z.string(), - }), -}); - -export const csvConfigSchema = z.object({ - active: z.boolean(), - options: z.object({ - filePath: z.string(), - }), -}); - -export const outputVendorsSchema = z.object({ - [outputVendorNameSchema.Values.googleSheets]: googleSheetsConfigSchema.optional(), - [outputVendorNameSchema.Values.ynab]: ynabConfigSchema.optional(), - [outputVendorNameSchema.Values.json]: jsonConfigSchema.optional(), - [outputVendorNameSchema.Values.csv]: csvConfigSchema.optional(), -}); - -export const accountToScrapeConfigSchema = z.object({ - id: z.string(), - key: companyTypeSchema, - name: z.string(), - loginFields: z.any(), - active: z.boolean().optional(), -}); - -export const scrapingSchema = z.object({ - numDaysBack: z.number(), - showBrowser: z.boolean(), - accountsToScrape: z.array(accountToScrapeConfigSchema), - chromiumPath: z.string().optional(), - maxConcurrency: z.number().optional(), - timeout: z.number(), - periodicScrapingIntervalHours: z.number().optional(), -}); - -export const originalConfigSchema = z.object({ - outputVendors: outputVendorsSchema, - scraping: scrapingSchema, - useReactUI: z.boolean().optional(), -}); - -export function isOriginalConfig(obj: unknown): obj is z.infer { - const parseResult = originalConfigSchema.strict().safeParse(obj); - return parseResult.success; -} diff --git a/packages/main/src/backend/configManager/configMigration/versions/v1.ts b/packages/main/src/backend/configManager/configMigration/versions/v1.ts index 6b3a635b..1bc2f1a0 100644 --- a/packages/main/src/backend/configManager/configMigration/versions/v1.ts +++ b/packages/main/src/backend/configManager/configMigration/versions/v1.ts @@ -1,9 +1,5 @@ -import { z } from 'zod'; -import { originalConfigSchema } from './original'; - -export const v1ConfigSchema = originalConfigSchema.extend({ version: z.literal(1) }); - -export function migrateOriginalToV1(v1Config: z.infer): z.infer { +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export function migrateOriginalToV1(v1Config: any): any { return { ...v1Config, version: 1, diff --git a/yarn.lock b/yarn.lock index eb2093fb..c7251dd0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6493,8 +6493,3 @@ zod@3.23.8: version "3.23.8" resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.8.tgz#e37b957b5d52079769fb8097099b592f0ef4067d" integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g== - -zod@^3.24.2: - version "3.24.2" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.2.tgz#8efa74126287c675e92f46871cfc8d15c34372b3" - integrity sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ== From fa63338e091a4fe4efbcf90eed0fd1151a401292 Mon Sep 17 00:00:00 2001 From: whatuserever <83753332+whatuserever@users.noreply.github.com> Date: Tue, 11 Mar 2025 23:01:22 +0200 Subject: [PATCH 06/12] Avoid special handling for original config --- .../configMigration/configMigrator.ts | 14 +++++++------- .../configManager/configMigration/versions/v1.ts | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/main/src/backend/configManager/configMigration/configMigrator.ts b/packages/main/src/backend/configManager/configMigration/configMigrator.ts index 62ce2a06..2d869501 100644 --- a/packages/main/src/backend/configManager/configMigration/configMigrator.ts +++ b/packages/main/src/backend/configManager/configMigration/configMigrator.ts @@ -1,17 +1,15 @@ import { type Config } from '../../commonTypes'; -import { migrateOriginalToV1 } from './versions/v1'; +import { migrateV0ToV1 } from './versions/v1'; // migrations[n] should be a function that converts version n to version n+1 // eslint-disable-next-line @typescript-eslint/no-explicit-any -const migrations: Record any> = {}; +const migrations: Record any> = { + 0: migrateV0ToV1, +}; // eslint-disable-next-line @typescript-eslint/no-explicit-any export function migrateConfig(config: any): Config { let currentConfig = config; - // original config does not have version key and must be handled separately - if (config.version === undefined) { - currentConfig = migrateOriginalToV1(config); - } let currentVersion = getConfigVersion(currentConfig); while (migrations[currentVersion]) { @@ -24,5 +22,7 @@ export function migrateConfig(config: any): Config { // eslint-disable-next-line @typescript-eslint/no-explicit-any function getConfigVersion(config: any): keyof typeof migrations { - return config.version; + // Prior to v1, the config didn't have a version field. + // In that case, we treat it as v0. + return config.version ?? 0; } diff --git a/packages/main/src/backend/configManager/configMigration/versions/v1.ts b/packages/main/src/backend/configManager/configMigration/versions/v1.ts index 1bc2f1a0..e140511a 100644 --- a/packages/main/src/backend/configManager/configMigration/versions/v1.ts +++ b/packages/main/src/backend/configManager/configMigration/versions/v1.ts @@ -1,5 +1,5 @@ // eslint-disable-next-line @typescript-eslint/no-explicit-any -export function migrateOriginalToV1(v1Config: any): any { +export function migrateV0ToV1(v1Config: any): any { return { ...v1Config, version: 1, From b99b5639adf602f2c924cd11ec7304bc0f70a5f1 Mon Sep 17 00:00:00 2001 From: whatuserever <83753332+whatuserever@users.noreply.github.com> Date: Tue, 11 Mar 2025 23:03:13 +0200 Subject: [PATCH 07/12] Disable eslint any for entire configMigrator file --- .../backend/configManager/configMigration/configMigrator.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/main/src/backend/configManager/configMigration/configMigrator.ts b/packages/main/src/backend/configManager/configMigration/configMigrator.ts index 2d869501..4532c1fd 100644 --- a/packages/main/src/backend/configManager/configMigration/configMigrator.ts +++ b/packages/main/src/backend/configManager/configMigration/configMigrator.ts @@ -1,13 +1,12 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { type Config } from '../../commonTypes'; import { migrateV0ToV1 } from './versions/v1'; // migrations[n] should be a function that converts version n to version n+1 -// eslint-disable-next-line @typescript-eslint/no-explicit-any const migrations: Record any> = { 0: migrateV0ToV1, }; -// eslint-disable-next-line @typescript-eslint/no-explicit-any export function migrateConfig(config: any): Config { let currentConfig = config; let currentVersion = getConfigVersion(currentConfig); @@ -20,7 +19,6 @@ export function migrateConfig(config: any): Config { return currentConfig as Config; } -// eslint-disable-next-line @typescript-eslint/no-explicit-any function getConfigVersion(config: any): keyof typeof migrations { // Prior to v1, the config didn't have a version field. // In that case, we treat it as v0. From a064f192e8f73f249934779736b09d8a83d569ef Mon Sep 17 00:00:00 2001 From: whatuserever <83753332+whatuserever@users.noreply.github.com> Date: Tue, 11 Mar 2025 23:07:26 +0200 Subject: [PATCH 08/12] Add description of config version --- .../src/backend/configManager/configMigration/versions/v1.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/main/src/backend/configManager/configMigration/versions/v1.ts b/packages/main/src/backend/configManager/configMigration/versions/v1.ts index e140511a..4b0f9691 100644 --- a/packages/main/src/backend/configManager/configMigration/versions/v1.ts +++ b/packages/main/src/backend/configManager/configMigration/versions/v1.ts @@ -1,3 +1,5 @@ +// V1 adds the version field to the config object + // eslint-disable-next-line @typescript-eslint/no-explicit-any export function migrateV0ToV1(v1Config: any): any { return { From 46cdf9799b41e8cde57a0601527ce1ac669a446d Mon Sep 17 00:00:00 2001 From: whatuserever <83753332+whatuserever@users.noreply.github.com> Date: Tue, 11 Mar 2025 23:18:00 +0200 Subject: [PATCH 09/12] Fix typo --- .../src/backend/configManager/configMigration/versions/v1.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/main/src/backend/configManager/configMigration/versions/v1.ts b/packages/main/src/backend/configManager/configMigration/versions/v1.ts index 4b0f9691..83a07d92 100644 --- a/packages/main/src/backend/configManager/configMigration/versions/v1.ts +++ b/packages/main/src/backend/configManager/configMigration/versions/v1.ts @@ -1,9 +1,9 @@ // V1 adds the version field to the config object // eslint-disable-next-line @typescript-eslint/no-explicit-any -export function migrateV0ToV1(v1Config: any): any { +export function migrateV0ToV1(v0Config: any): any { return { - ...v1Config, + ...v0Config, version: 1, }; } From 8d6f1241ef093f7956c7cc30ea693e7cdcf8bf0e Mon Sep 17 00:00:00 2001 From: whatuserever <83753332+whatuserever@users.noreply.github.com> Date: Tue, 11 Mar 2025 23:18:23 +0200 Subject: [PATCH 10/12] Use @ alias for importing Config type --- .../src/backend/configManager/configMigration/configMigrator.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/main/src/backend/configManager/configMigration/configMigrator.ts b/packages/main/src/backend/configManager/configMigration/configMigrator.ts index 4532c1fd..88b88520 100644 --- a/packages/main/src/backend/configManager/configMigration/configMigrator.ts +++ b/packages/main/src/backend/configManager/configMigration/configMigrator.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { type Config } from '../../commonTypes'; +import { type Config } from '@/backend/commonTypes'; import { migrateV0ToV1 } from './versions/v1'; // migrations[n] should be a function that converts version n to version n+1 From f7a485944ef9a52d261711e9895de823c979e89e Mon Sep 17 00:00:00 2001 From: whatuserever <83753332+whatuserever@users.noreply.github.com> Date: Tue, 11 Mar 2025 23:22:53 +0200 Subject: [PATCH 11/12] Remove package maanger from package.json Why does this even happen?! --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 14f9c6f6..5a95e36c 100644 --- a/package.json +++ b/package.json @@ -103,6 +103,5 @@ "resolutions": { "underscore": "1.12.1", "ws": "8.17.1" - }, - "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" + } } From 4499711cda34fac72d1908e1eeb0cf187681bfe7 Mon Sep 17 00:00:00 2001 From: whatuserever <83753332+whatuserever@users.noreply.github.com> Date: Tue, 11 Mar 2025 23:27:55 +0200 Subject: [PATCH 12/12] Rename versions folder to migrations --- .../src/backend/configManager/configMigration/configMigrator.ts | 2 +- .../configMigration/{versions => migrations}/v1.ts | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename packages/main/src/backend/configManager/configMigration/{versions => migrations}/v1.ts (100%) diff --git a/packages/main/src/backend/configManager/configMigration/configMigrator.ts b/packages/main/src/backend/configManager/configMigration/configMigrator.ts index 88b88520..ca910f3e 100644 --- a/packages/main/src/backend/configManager/configMigration/configMigrator.ts +++ b/packages/main/src/backend/configManager/configMigration/configMigrator.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { type Config } from '@/backend/commonTypes'; -import { migrateV0ToV1 } from './versions/v1'; +import { migrateV0ToV1 } from './migrations/v1'; // migrations[n] should be a function that converts version n to version n+1 const migrations: Record any> = { diff --git a/packages/main/src/backend/configManager/configMigration/versions/v1.ts b/packages/main/src/backend/configManager/configMigration/migrations/v1.ts similarity index 100% rename from packages/main/src/backend/configManager/configMigration/versions/v1.ts rename to packages/main/src/backend/configManager/configMigration/migrations/v1.ts