From 267f9ccbb451861827aa1edd71879d85e7d702a3 Mon Sep 17 00:00:00 2001 From: Kacper Kula Date: Tue, 4 Mar 2025 17:26:24 +0100 Subject: [PATCH 1/9] feat: Ability to manually define types for columns --- src/database/database.ts | 5 ++ src/database/worker/database.ts | 20 ++++++- src/datamodel/sync.ts | 2 +- .../syncStrategy/CsvFileSyncStrategy.ts | 13 +++-- .../syncStrategy/JSONFileSyncStrategy.ts | 2 +- .../syncStrategy/MarkdownTableSyncStrategy.ts | 2 +- .../syncStrategy/abstractSyncStrategy.ts | 3 +- src/utils/csvConfig.ts | 47 +++++++++++++++ src/utils/types.ts | 6 ++ src/view/CSVView.ts | 58 ++++++++++++++++++- 10 files changed, 146 insertions(+), 12 deletions(-) create mode 100644 src/utils/csvConfig.ts create mode 100644 src/utils/types.ts diff --git a/src/database/database.ts b/src/database/database.ts index 9480313..72ef3b5 100644 --- a/src/database/database.ts +++ b/src/database/database.ts @@ -4,6 +4,7 @@ import * as Comlink from 'comlink' import workerCode from 'virtual:worker-code' import { WorkerDatabase } from "./worker/database"; import { sanitise } from "../utils/sanitiseColumn"; +import { ColumnDefinition } from "../utils/types"; export class SqlSealDatabase { db: Comlink.Remote @@ -83,6 +84,10 @@ export class SqlSealDatabase { await this.db.createTableNoTypes(name, columns, noDrop) } + async createTable(name: string, columns: ColumnDefinition[], noDrop?: boolean) { + this.db.createTable(name, columns, noDrop) + } + async createIndex(indexName: string, tableName: string, columns: string[]) { await this.db.createIndex(indexName, tableName, columns) } diff --git a/src/database/worker/database.ts b/src/database/worker/database.ts index ef7b920..4216cf4 100644 --- a/src/database/worker/database.ts +++ b/src/database/worker/database.ts @@ -9,7 +9,8 @@ import { SQLiteFS } from 'absurd-sql'; import IndexedDBBackend from '../../../node_modules/absurd-sql/dist/indexeddb-backend.js'; import type { BindParams, Database, Statement } from "sql.js"; import { sanitise } from "../../utils/sanitiseColumn"; -import { uniq } from "lodash"; +import { uniq, uniqBy } from "lodash"; +import { ColumnDefinition } from "../../utils/types"; function toObjectArray(stmt: Statement) { @@ -131,6 +132,23 @@ export class WorkerDatabase { this.db.run(createStmt) } + async createTable(tableName: string, columns: ColumnDefinition[], noDrop: boolean = false) { + const fields = uniqBy(columns.map(c => ({ + ...c, + name: sanitise(c.name) + })), 'name') + + if (!noDrop) { + await this.dropTable(tableName) + } + + const fieldDefinitions = fields.map(c => c.name + ' ' + (c.type === 'auto' ? '' : c.type.toUpperCase())) + + const createStmt = `CREATE TABLE IF NOT EXISTS ${tableName}(${fieldDefinitions.join(', ')})` + console.log('CREATE STMT', createStmt) + this.db.run(createStmt) + } + async clearTable(tableName: string) { this.db.run(`DELETE FROM ${tableName}`) diff --git a/src/datamodel/sync.ts b/src/datamodel/sync.ts index 2662f53..019debc 100644 --- a/src/datamodel/sync.ts +++ b/src/datamodel/sync.ts @@ -92,7 +92,7 @@ export class Sync { const { data, columns } = await syncObject.returnData() const tableName = entry.table_name - await this.db.createTableNoTypes(tableName, columns) + await this.db.createTable(tableName, columns) await this.db.insertData(tableName, data) await this.tableDefinitionsRepo.update(entry.id, { file_hash: file.stat.mtime.toString() }) this.bus.trigger('change::' + tableName) diff --git a/src/datamodel/syncStrategy/CsvFileSyncStrategy.ts b/src/datamodel/syncStrategy/CsvFileSyncStrategy.ts index 7439e57..9b5b800 100644 --- a/src/datamodel/syncStrategy/CsvFileSyncStrategy.ts +++ b/src/datamodel/syncStrategy/CsvFileSyncStrategy.ts @@ -5,6 +5,7 @@ import { FilepathHasher } from "../../utils/hasher"; import { TableDefinitionExternal } from "../repository/tableDefinitions"; import { ParserTableDefinition } from "./types"; import { App } from "obsidian"; +import { loadConfig } from "../../utils/csvConfig"; const DEFAULT_FILE_HASH = '' @@ -60,12 +61,12 @@ export class CsvFileSyncStrategy extends ISyncStrategy { skipEmptyLines: true, transformHeader: sanitise }) - // const typeStatements = toTypeStatements(parsed.meta.fields ?? [], parsed.data) - // const columns = Object.entries(typeStatements.types).map(([key, value]) => ({ - // name: key, - // type: value as FieldTypes - // })); - return { data: parsed.data, columns: parsed.meta.fields ?? [] } + const config = await loadConfig(file, this.app.vault) + + return { data: parsed.data, columns: parsed.meta.fields?.map(f => ({ + name: f, + type: config.columnDefinitions[f]?.type ?? 'auto' as const + })) ?? [] } } } \ No newline at end of file diff --git a/src/datamodel/syncStrategy/JSONFileSyncStrategy.ts b/src/datamodel/syncStrategy/JSONFileSyncStrategy.ts index a547339..b11fc1e 100644 --- a/src/datamodel/syncStrategy/JSONFileSyncStrategy.ts +++ b/src/datamodel/syncStrategy/JSONFileSyncStrategy.ts @@ -53,7 +53,7 @@ export class JsonFileSyncStrategy extends ISyncStrategy { throw new Error('Resulting data is not an array') } - const columns = uniq(data.map(d => Object.keys(d)).flat()) + const columns = uniq(data.map(d => Object.keys(d)).flat()).map(c => ({ name: c, type: 'auto' as const })) return { columns, data: data } } diff --git a/src/datamodel/syncStrategy/MarkdownTableSyncStrategy.ts b/src/datamodel/syncStrategy/MarkdownTableSyncStrategy.ts index a2375a3..1622cac 100644 --- a/src/datamodel/syncStrategy/MarkdownTableSyncStrategy.ts +++ b/src/datamodel/syncStrategy/MarkdownTableSyncStrategy.ts @@ -65,7 +65,7 @@ export class MarkdownTableSyncStrategy extends ISyncStrategy { return { data, - columns: headers ?? [] + columns: headers.map(c => ({ name: c, type: 'auto' as const })) ?? [] }; } } \ No newline at end of file diff --git a/src/datamodel/syncStrategy/abstractSyncStrategy.ts b/src/datamodel/syncStrategy/abstractSyncStrategy.ts index d56ad57..d54172e 100644 --- a/src/datamodel/syncStrategy/abstractSyncStrategy.ts +++ b/src/datamodel/syncStrategy/abstractSyncStrategy.ts @@ -1,6 +1,7 @@ import { App } from "obsidian"; import { TableDefinitionExternal } from "../repository/tableDefinitions"; import { ParserTableDefinition } from "./types"; +import { ColumnDefinition } from "../../utils/types"; export abstract class ISyncStrategy { constructor(protected def: TableDefinitionExternal, protected app: App) { @@ -11,7 +12,7 @@ export abstract class ISyncStrategy { } abstract returnData(): Promise<{ data: Record[], - columns: string[] + columns: ColumnDefinition[] }>; static async fromParser(def: ParserTableDefinition, app: App): Promise { diff --git a/src/utils/csvConfig.ts b/src/utils/csvConfig.ts new file mode 100644 index 0000000..9c347b4 --- /dev/null +++ b/src/utils/csvConfig.ts @@ -0,0 +1,47 @@ +import { TFile, Vault } from "obsidian" +import { parse as jsonParse, stringify as jsonStringify } from 'json5' + + +export type ColumnType = 'auto' | 'number' | 'text' + +interface ColumnDefinition { + type: ColumnType +} + +export interface ConfigObject { + columnDefinitions: {[key: string]: ColumnDefinition } +} + +export const loadConfig = async (file: TFile, vault: Vault): Promise => { + const config = { + columnDefinitions: {} + } + + console.log('LOADING CONFIG') + // Now loading saved one + const configPath = file!.path + '.sqlsealconfig' + const configFile = vault.getFileByPath(configPath) + if (!configFile) { + return config + } + const loadedConfig = await vault.read(configFile) + // decode + const decoded = jsonParse(loadedConfig) + console.log('Config loaded', decoded) + return decoded +} + +export const saveConfig = async (file: TFile, content: Object, vault: Vault) => { + const serialised = jsonStringify(content, null, 2) + + // Check if exists + const configPath = file!.path + '.sqlsealconfig' + const configFile = vault.getFileByPath(configPath) + if (!configFile) { + // CREATE NEW + await vault.create(configPath, serialised) + return + } + + await vault.modify(configFile, serialised) +} \ No newline at end of file diff --git a/src/utils/types.ts b/src/utils/types.ts new file mode 100644 index 0000000..67934bd --- /dev/null +++ b/src/utils/types.ts @@ -0,0 +1,6 @@ +export type ColumnType = 'auto' | 'text' | 'number' + +export interface ColumnDefinition { + name: string; + type: ColumnType +} \ No newline at end of file diff --git a/src/view/CSVView.ts b/src/view/CSVView.ts index e70e76e..b48089f 100644 --- a/src/view/CSVView.ts +++ b/src/view/CSVView.ts @@ -6,6 +6,10 @@ import { CodeSampleModal } from '../modal/showCodeSample'; import { GridRenderer } from '../renderer/GridRenderer'; import { CellParser } from '../cellParser'; import { errorNotice } from '../utils/notice'; +import { ConfigObject, loadConfig, saveConfig } from 'src/utils/csvConfig'; +import { ColumnType } from '../utils/types'; + +const delay = (n: number) => new Promise(resolve => setTimeout(resolve, n)) export const CSV_VIEW_TYPE = "csv-viewer" as const; export const CSV_VIEW_EXTENSIONS = ['csv']; @@ -13,6 +17,7 @@ export const CSV_VIEW_EXTENSIONS = ['csv']; export class CSVView extends TextFileView { private content: string; private table: HTMLTableElement; + private config: ConfigObject; constructor( leaf: WorkspaceLeaf, @@ -120,6 +125,37 @@ export class CSVView extends TextFileView { } + getColumnType(columnName: string) { + if (this.config.columnDefinitions[columnName]) { + return this.config.columnDefinitions[columnName].type + } + return 'auto' + } + + async changeColumnType(columnName: string, type: ColumnType) { + const prev = this.config.columnDefinitions[columnName] ?? {} + this.config.columnDefinitions[columnName] = { + ...prev, + type: type + } + await this.saveConfig() + + // We need to touch original file to reload the data - probably we should make it in a nicer way + this.saveData() + + } + + async loadConfig() { + while (!this.file) { + await delay(100) + } + this.config = await loadConfig(this.file, this.app.vault) + } + + async saveConfig() { + await saveConfig(this.file!, this.config, this.app.vault) + } + moveColumn(name: string, toIndex: number) { let fields = this.result.fields as Array fields = fields.filter(f => f !== name) @@ -224,7 +260,6 @@ export class CSVView extends TextFileView { menu.addItem(item => { item.setTitle('Delete Column') item.onClick(() => { - this.column.colId const modal = new DeleteConfirmationModal(csvView.app, `column ${this.column.colId}`, () => { csvView.deleteColumn(this.column.colId) }) @@ -232,6 +267,26 @@ export class CSVView extends TextFileView { }) }) + // FIXME: rework it to submenus. + menu.addSeparator() + menu.addItem(item => { + item.setDisabled(true) + item.setTitle('Data Type') + }) + + const current = csvView.getColumnType(this.column.colId) + + const types = ['auto', 'text', 'number'] as ColumnType[] + + types.forEach(type => { + menu.addItem(item => { + const checkbox = type === current ? '✔️ ' : '' + item.setTitle(checkbox + type) + item.onClick(() => { + csvView.changeColumnType(this.column.colId, type) + }) + }) + }) const pos = e.getBoundingClientRect(); menu.showAtPosition({ x: pos.x, y: pos.y + 20 }) @@ -279,6 +334,7 @@ export class CSVView extends TextFileView { }, gridEl) this.api = api; + await this.loadConfig() this.loadDataIntoGrid() } } \ No newline at end of file From d5f9d6dcae774c47de488097fdec951ccba59528 Mon Sep 17 00:00:00 2001 From: Kacper Kula Date: Tue, 11 Mar 2025 15:49:40 +0000 Subject: [PATCH 2/9] docs: adding documentation --- docs/.vitepress/config.mts | 1 + docs/define-column-types.md | 4 ++++ docs/setting-column-type.png | Bin 0 -> 85947 bytes 3 files changed, 5 insertions(+) create mode 100644 docs/define-column-types.md create mode 100644 docs/setting-column-type.png diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index cea7155..5826934 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -36,6 +36,7 @@ export default defineConfig({ { text: 'Links and Images', link: '/links-and-images' }, { text: 'CSV Viewer', link: '/csv-viewer' }, { text: 'Query Configuration', link: '/query-configuration' }, + { text: 'Define Column Types', link: '/define-column-types' }, { text: 'Troubleshooting', link: '/troubleshooting' }, { text: 'Future Plans', link: '/future-plans' }, { text: 'Changelog', link: '/changelog' } diff --git a/docs/define-column-types.md b/docs/define-column-types.md new file mode 100644 index 0000000..6421582 --- /dev/null +++ b/docs/define-column-types.md @@ -0,0 +1,4 @@ +# Define Column Types + +SQLSeal sets types of your data automatically. This is the mechanism which for most of the cases works perfectly, but for more advanced use-cases, you might want to force specific type of the column (for example you might have ids which you want to treat like text, even if they consist of just the numbers). To enforce the specific type, you can set individual types inside the CSV Viewer: +![Setting Column Type](./setting-column-type.png) \ No newline at end of file diff --git a/docs/setting-column-type.png b/docs/setting-column-type.png new file mode 100644 index 0000000000000000000000000000000000000000..5d678705b1eec4308b6fe8128cdd5a3ddf9a261c GIT binary patch literal 85947 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 Date: Tue, 11 Mar 2025 15:50:55 +0000 Subject: [PATCH 3/9] docs: minor formatting fix --- docs/define-column-types.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/define-column-types.md b/docs/define-column-types.md index 6421582..39e5eba 100644 --- a/docs/define-column-types.md +++ b/docs/define-column-types.md @@ -1,4 +1,5 @@ # Define Column Types SQLSeal sets types of your data automatically. This is the mechanism which for most of the cases works perfectly, but for more advanced use-cases, you might want to force specific type of the column (for example you might have ids which you want to treat like text, even if they consist of just the numbers). To enforce the specific type, you can set individual types inside the CSV Viewer: -![Setting Column Type](./setting-column-type.png) \ No newline at end of file + +![Setting Column Type](./setting-column-type.png) From 759099e4d09ac1c958520a2daf51a2b05d9fa0ac Mon Sep 17 00:00:00 2001 From: Kacper Kula Date: Fri, 16 May 2025 23:15:04 +0100 Subject: [PATCH 4/9] feat: adding boolean, date formats. properly parsing. fixing bunch of issues with ag grid --- package.json | 16 +- pnpm-lock.yaml | 792 ++++++++++++++++--------------- src/database/worker/database.ts | 3 +- src/renderer/GridRenderer.ts | 17 +- src/renderer/rendererRegistry.ts | 2 +- src/utils/csvConfig.ts | 5 +- src/utils/types.ts | 3 +- src/view/CSVView.ts | 196 +++++--- styles.css | 6 + 9 files changed, 569 insertions(+), 471 deletions(-) diff --git a/package.json b/package.json index a8be0c7..6485dc6 100644 --- a/package.json +++ b/package.json @@ -27,11 +27,11 @@ "@types/estraverse": "^5.1.7", "@types/jest": "^29.5.14", "@types/lodash": "^4.17.16", - "@types/node": "^22.15.12", - "@types/papaparse": "^5.3.15", + "@types/node": "^22.15.18", + "@types/papaparse": "^5.3.16", "@types/sql.js": "^1.4.9", - "@typescript-eslint/eslint-plugin": "8.32.0", - "@typescript-eslint/parser": "8.32.0", + "@typescript-eslint/eslint-plugin": "8.32.1", + "@typescript-eslint/parser": "8.32.1", "builtin-modules": "5.0.0", "electron-rebuild": "^3.2.9", "esbuild": "0.25.4", @@ -39,23 +39,23 @@ "jest": "^29.7.0", "obsidian": "^1.8.7", "prettier": "3.5.3", - "ts-jest": "^29.3.2", + "ts-jest": "^29.3.4", "tslib": "2.8.1", "typescript": "5.8.3", "vitepress": "^1.6.3", - "vue": "^3.5.13" + "vue": "^3.5.14" }, "dependencies": { "@ag-grid-community/theming": "^32.3.5", "@codemirror/language": "^6.11.0", "@codemirror/state": "^6.5.2", - "@codemirror/view": "^6.36.7", + "@codemirror/view": "^6.36.8", "@hypersphere/omnibus": "^0.1.6", "@jlongster/sql.js": "^1.6.7", "@types/jsonpath": "^0.2.4", "@vanakat/plugin-api": "^0.2.1", "absurd-sql": "^0.0.54", - "ag-grid-community": "^33.2.4", + "ag-grid-community": "^33.3.0", "comlink": "^4.4.2", "esbuild-plugin-polyfill-node": "^0.3.0", "esprima": "^4.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c6f9827..70b6206 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,8 +18,8 @@ importers: specifier: ^6.5.2 version: 6.5.2 '@codemirror/view': - specifier: ^6.36.7 - version: 6.36.7 + specifier: ^6.36.8 + version: 6.36.8 '@hypersphere/omnibus': specifier: ^0.1.6 version: 0.1.6 @@ -31,13 +31,13 @@ importers: version: 0.2.4 '@vanakat/plugin-api': specifier: ^0.2.1 - version: 0.2.1(@codemirror/state@6.5.2)(@codemirror/view@6.36.7)(eslint@9.15.0) + version: 0.2.1(@codemirror/state@6.5.2)(@codemirror/view@6.36.8)(eslint@9.15.0) absurd-sql: specifier: ^0.0.54 version: 0.0.54 ag-grid-community: - specifier: ^33.2.4 - version: 33.2.4 + specifier: ^33.3.0 + version: 33.3.0 comlink: specifier: ^4.4.2 version: 4.4.2 @@ -97,20 +97,20 @@ importers: specifier: ^4.17.16 version: 4.17.16 '@types/node': - specifier: ^22.15.12 - version: 22.15.12 + specifier: ^22.15.18 + version: 22.15.18 '@types/papaparse': - specifier: ^5.3.15 - version: 5.3.15 + specifier: ^5.3.16 + version: 5.3.16 '@types/sql.js': specifier: ^1.4.9 version: 1.4.9 '@typescript-eslint/eslint-plugin': - specifier: 8.32.0 - version: 8.32.0(@typescript-eslint/parser@8.32.0(eslint@9.15.0)(typescript@5.8.3))(eslint@9.15.0)(typescript@5.8.3) + specifier: 8.32.1 + version: 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.15.0)(typescript@5.8.3))(eslint@9.15.0)(typescript@5.8.3) '@typescript-eslint/parser': - specifier: 8.32.0 - version: 8.32.0(eslint@9.15.0)(typescript@5.8.3) + specifier: 8.32.1 + version: 8.32.1(eslint@9.15.0)(typescript@5.8.3) builtin-modules: specifier: 5.0.0 version: 5.0.0 @@ -125,16 +125,16 @@ importers: version: 1.4.0 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.15.12) + version: 29.7.0(@types/node@22.15.18) obsidian: specifier: ^1.8.7 - version: 1.8.7(@codemirror/state@6.5.2)(@codemirror/view@6.36.7) + version: 1.8.7(@codemirror/state@6.5.2)(@codemirror/view@6.36.8) prettier: specifier: 3.5.3 version: 3.5.3 ts-jest: - specifier: ^29.3.2 - version: 29.3.2(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(esbuild@0.25.4)(jest@29.7.0(@types/node@22.15.12))(typescript@5.8.3) + specifier: ^29.3.4 + version: 29.3.4(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(esbuild@0.25.4)(jest@29.7.0(@types/node@22.15.18))(typescript@5.8.3) tslib: specifier: 2.8.1 version: 2.8.1 @@ -143,10 +143,10 @@ importers: version: 5.8.3 vitepress: specifier: ^1.6.3 - version: 1.6.3(@algolia/client-search@5.24.0)(@types/node@22.15.12)(postcss@8.5.3)(search-insights@2.17.3)(typescript@5.8.3) + version: 1.6.3(@algolia/client-search@5.25.0)(@types/node@22.15.18)(postcss@8.5.3)(search-insights@2.17.3)(typescript@5.8.3) vue: - specifier: ^3.5.13 - version: 3.5.13(typescript@5.8.3) + specifier: ^3.5.14 + version: 3.5.14(typescript@5.8.3) packages: @@ -176,56 +176,56 @@ packages: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - '@algolia/client-abtesting@5.24.0': - resolution: {integrity: sha512-pNTIB5YqVVwu6UogvdX8TqsRZENaflqMMjdY7/XIPMNGrBoNH9tewINLI7+qc9tIaOLcAp3ZldqoEwAihZZ3ig==} + '@algolia/client-abtesting@5.25.0': + resolution: {integrity: sha512-1pfQulNUYNf1Tk/svbfjfkLBS36zsuph6m+B6gDkPEivFmso/XnRgwDvjAx80WNtiHnmeNjIXdF7Gos8+OLHqQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.24.0': - resolution: {integrity: sha512-IF+r9RRQsIf0ylIBNFxo7c6hDxxuhIfIbffhBXEF1HD13rjhP5AVfiaea9RzbsAZoySkm318plDpH/nlGIjbRA==} + '@algolia/client-analytics@5.25.0': + resolution: {integrity: sha512-AFbG6VDJX/o2vDd9hqncj1B6B4Tulk61mY0pzTtzKClyTDlNP0xaUiEKhl6E7KO9I/x0FJF5tDCm0Hn6v5x18A==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.24.0': - resolution: {integrity: sha512-p8K6tiXQTebRBxbrzWIfGCvfkT+Umml+2lzI92acZjHsvl6KYH6igOfVstKqXJRei9pvRzEEvVDNDLXDVleGTA==} + '@algolia/client-common@5.25.0': + resolution: {integrity: sha512-il1zS/+Rc6la6RaCdSZ2YbJnkQC6W1wiBO8+SH+DE6CPMWBU6iDVzH0sCKSAtMWl9WBxoN6MhNjGBnCv9Yy2bA==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.24.0': - resolution: {integrity: sha512-jOHF0+tixR3IZJMhZPquFNdCVPzwzzXoiqVsbTvfKojeaY6ZXybgUiTSB8JNX+YpsUT8Ebhu3UvRy4mw2PbEzw==} + '@algolia/client-insights@5.25.0': + resolution: {integrity: sha512-blbjrUH1siZNfyCGeq0iLQu00w3a4fBXm0WRIM0V8alcAPo7rWjLbMJMrfBtzL9X5ic6wgxVpDADXduGtdrnkw==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.24.0': - resolution: {integrity: sha512-Fx/Fp6d8UmDBHecTt0XYF8C9TAaA3qeCQortfGSZzWp4gVmtrUCFNZ1SUwb8ULREnO9DanVrM5hGE8R8C4zZTQ==} + '@algolia/client-personalization@5.25.0': + resolution: {integrity: sha512-aywoEuu1NxChBcHZ1pWaat0Plw7A8jDMwjgRJ00Mcl7wGlwuPt5dJ/LTNcg3McsEUbs2MBNmw0ignXBw9Tbgow==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.24.0': - resolution: {integrity: sha512-F8ypOedSMhz6W7zuT5O1SXXsdXSOVhY2U6GkRbYk/mzrhs3jWFR3uQIfeQVWmsJjUwIGZmPoAr9E+T/Zm2M4wA==} + '@algolia/client-query-suggestions@5.25.0': + resolution: {integrity: sha512-a/W2z6XWKjKjIW1QQQV8PTTj1TXtaKx79uR3NGBdBdGvVdt24KzGAaN7sCr5oP8DW4D3cJt44wp2OY/fZcPAVA==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.24.0': - resolution: {integrity: sha512-k+nuciQuq7WERNNE+hsx3DX636zIy+9R4xdtvW3PANT2a2BDGOv3fv2mta8+QUMcVTVcGe/Mo3QCb4pc1HNoxA==} + '@algolia/client-search@5.25.0': + resolution: {integrity: sha512-9rUYcMIBOrCtYiLX49djyzxqdK9Dya/6Z/8sebPn94BekT+KLOpaZCuc6s0Fpfq7nx5J6YY5LIVFQrtioK9u0g==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.24.0': - resolution: {integrity: sha512-/lqVxmrvwoA+OyVK4XLMdz/PJaCTW4qYchX1AZ+98fdnH3K6XM/kMydQLfP0bUNGBQbmVrF88MqhqZRnZEn/MA==} + '@algolia/ingestion@1.25.0': + resolution: {integrity: sha512-jJeH/Hk+k17Vkokf02lkfYE4A+EJX+UgnMhTLR/Mb+d1ya5WhE+po8p5a/Nxb6lo9OLCRl6w3Hmk1TX1e9gVbQ==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.24.0': - resolution: {integrity: sha512-cRisDXQJhvfZCXL4hD22qca2CmW52TniOx6L7pvkaBDx0oQk1k9o+3w11fgfcCG+47OndMeNx5CMpu+K+COMzg==} + '@algolia/monitoring@1.25.0': + resolution: {integrity: sha512-Ls3i1AehJ0C6xaHe7kK9vPmzImOn5zBg7Kzj8tRYIcmCWVyuuFwCIsbuIIz/qzUf1FPSWmw0TZrGeTumk2fqXg==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.24.0': - resolution: {integrity: sha512-JTMz0JqN2gidvKa2QCF/rMe8LNtdHaght03px2cluZaZfBRYy8TgHgkCeBspKKvV/abWJwl7J0FzWThCshqT3w==} + '@algolia/recommend@5.25.0': + resolution: {integrity: sha512-79sMdHpiRLXVxSjgw7Pt4R1aNUHxFLHiaTDnN2MQjHwJ1+o3wSseb55T9VXU4kqy3m7TUme3pyRhLk5ip/S4Mw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.24.0': - resolution: {integrity: sha512-B2Gc+iSxct1WSza5CF6AgfNgmLvVb61d5bqmIWUZixtJIhyAC6lSQZuF+nvt+lmKhQwuY2gYjGGClil8onQvKQ==} + '@algolia/requester-browser-xhr@5.25.0': + resolution: {integrity: sha512-JLaF23p1SOPBmfEqozUAgKHQrGl3z/Z5RHbggBu6s07QqXXcazEsub5VLonCxGVqTv6a61AAPr8J1G5HgGGjEw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.24.0': - resolution: {integrity: sha512-6E5+hliqGc5w8ZbyTAQ+C3IGLZ/GiX623Jl2bgHA974RPyFWzVSj4rKqkboUAxQmrFY7Z02ybJWVZS5OhPQocA==} + '@algolia/requester-fetch@5.25.0': + resolution: {integrity: sha512-rtzXwqzFi1edkOF6sXxq+HhmRKDy7tz84u0o5t1fXwz0cwx+cjpmxu/6OQKTdOJFS92JUYHsG51Iunie7xbqfQ==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.24.0': - resolution: {integrity: sha512-zM+nnqZpiQj20PyAh6uvgdSz+hD7Rj7UfAZwizqNP+bLvcbGXZwABERobuilkCQqyDBBH4uv0yqIcPRl8dSBEg==} + '@algolia/requester-node-http@5.25.0': + resolution: {integrity: sha512-ZO0UKvDyEFvyeJQX0gmZDQEvhLZ2X10K+ps6hViMo1HgE2V8em00SwNsQ+7E/52a+YiBkVWX61pJJJE44juDMQ==} engines: {node: '>= 14.0.0'} '@ampproject/remapping@2.3.0': @@ -236,8 +236,8 @@ packages: resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.27.1': - resolution: {integrity: sha512-Q+E+rd/yBzNQhXkG+zQnF58e4zoZfBedaxwzPmicKsiK3nt8iJYrSrDbjwFFDGC4f+rPafqRaPH6TsDoSvMf7A==} + '@babel/compat-data@7.27.2': + resolution: {integrity: sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==} engines: {node: '>=6.9.0'} '@babel/core@7.27.1': @@ -248,8 +248,8 @@ packages: resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.27.1': - resolution: {integrity: sha512-2YaDd/Rd9E598B5+WIc8wJPmWETiiJXFYVE60oX8FDohv7rAUU3CQj+A1MgeEmcsk2+dQuEjIe/GDvig0SqL4g==} + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} '@babel/helper-module-imports@7.27.1': @@ -282,8 +282,8 @@ packages: resolution: {integrity: sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==} engines: {node: '>=6.9.0'} - '@babel/parser@7.27.1': - resolution: {integrity: sha512-I0dZ3ZpCrJ1c04OqlNsQcKiZlsrXf/kkE4FXzID9rIOYICsAbA8mMDzhW/luRNAHdCNt7os/u8wenklZDlUVUQ==} + '@babel/parser@7.27.2': + resolution: {integrity: sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==} engines: {node: '>=6.0.0'} hasBin: true @@ -378,8 +378,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/template@7.27.1': - resolution: {integrity: sha512-Fyo3ghWMqkHHpHQCoBs2VnYjR4iWFFjguTDEqA5WgZDOrFesVjMhMM2FSqTKSoUSDO1VQtavj8NFpdRBEvJTtg==} + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} '@babel/traverse@7.27.1': @@ -399,8 +399,8 @@ packages: '@codemirror/state@6.5.2': resolution: {integrity: sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==} - '@codemirror/view@6.36.7': - resolution: {integrity: sha512-kCWGW/chWGPgZqfZ36Um9Iz0X2IVpmCjg1P/qY6B6a2ecXtWRRAigmpJ6YgUQ5lTWXMyyVdfmpzhLZmsZQMbtg==} + '@codemirror/view@6.36.8': + resolution: {integrity: sha512-yoRo4f+FdnD01fFt4XpfpMCcCAo9QvZOtbrXExn4SqzH32YC6LgzqxfLZw/r6Ge65xyY03mK/UfUqrVw1gFiFg==} '@docsearch/css@3.8.2': resolution: {integrity: sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==} @@ -770,15 +770,15 @@ packages: resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} engines: {node: '>=18.18'} - '@humanwhocodes/retry@0.4.2': - resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} '@hypersphere/omnibus@0.1.6': resolution: {integrity: sha512-agZuKyhdW0n1JoLYZUuA6Du1QoQn39/LapFgRtbJs7fyRM62C9O2PWISHUCwAKnC1Splshpd8glQgx5pA2zkCg==} - '@iconify-json/simple-icons@1.2.33': - resolution: {integrity: sha512-nL5/UmI9x5PQ/AHv6bOaL2pH6twEdEz4pI89efB/K7HFn5etQnxMtGx9DFlOg/sRA2/yFpX8KXvc95CSDv5bJA==} + '@iconify-json/simple-icons@1.2.34': + resolution: {integrity: sha512-1FRWEA94hSl5zmBogRh6lQL36l7bVTfrl0n5+QJ+WmXmw70RccPT5phqeiSynwo3IhUWKoW2LiajyUMeweXW8g==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} @@ -1138,11 +1138,11 @@ packages: '@types/mdurl@2.0.0': resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} - '@types/node@22.15.12': - resolution: {integrity: sha512-K0fpC/ZVeb8G9rm7bH7vI0KAec4XHEhBam616nVJCV51bKzJ6oA3luG4WdKoaztxe70QaNjS/xBmcDLmr4PiGw==} + '@types/node@22.15.18': + resolution: {integrity: sha512-v1DKRfUdyW+jJhZNEI1PYy29S2YRxMV5AOO/x/SjKmW0acCIOqmbj6Haf9eHAhsPmrhlHSxEhv/1WszcLWV4cg==} - '@types/papaparse@5.3.15': - resolution: {integrity: sha512-JHe6vF6x/8Z85nCX4yFdDslN11d+1pr12E526X8WAfhadOeaOTx5AuIkvDKIBopfvlzpzkdMx4YyvSKCM9oqtw==} + '@types/papaparse@5.3.16': + resolution: {integrity: sha512-T3VuKMC2H0lgsjI9buTB3uuKj3EMD2eap1MOuEQuBQ44EnDx/IkGhU6EwiTf9zG3za4SKlmwKAImdDKdNnCsXg==} '@types/responselike@1.0.3': resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} @@ -1179,8 +1179,8 @@ packages: typescript: optional: true - '@typescript-eslint/eslint-plugin@8.32.0': - resolution: {integrity: sha512-/jU9ettcntkBFmWUzzGgsClEi2ZFiikMX5eEQsmxIAWMOn4H3D4rvHssstmAHGVvrYnaMqdWWWg0b5M6IN/MTQ==} + '@typescript-eslint/eslint-plugin@8.32.1': + resolution: {integrity: sha512-6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -1197,8 +1197,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.32.0': - resolution: {integrity: sha512-B2MdzyWxCE2+SqiZHAjPphft+/2x2FlO9YBx7eKE1BCb+rqBlQdhtAEhzIEdozHd55DXPmxBdpMygFJjfjjA9A==} + '@typescript-eslint/parser@8.32.1': + resolution: {integrity: sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1208,8 +1208,8 @@ packages: resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/scope-manager@8.32.0': - resolution: {integrity: sha512-jc/4IxGNedXkmG4mx4nJTILb6TMjL66D41vyeaPWvDUmeYQzF3lKtN15WsAeTr65ce4mPxwopPSo1yUUAWw0hQ==} + '@typescript-eslint/scope-manager@8.32.1': + resolution: {integrity: sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/type-utils@7.18.0': @@ -1222,8 +1222,8 @@ packages: typescript: optional: true - '@typescript-eslint/type-utils@8.32.0': - resolution: {integrity: sha512-t2vouuYQKEKSLtJaa5bB4jHeha2HJczQ6E5IXPDPgIty9EqcJxpr1QHQ86YyIPwDwxvUmLfP2YADQ5ZY4qddZg==} + '@typescript-eslint/type-utils@8.32.1': + resolution: {integrity: sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1233,8 +1233,8 @@ packages: resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/types@8.32.0': - resolution: {integrity: sha512-O5Id6tGadAZEMThM6L9HmVf5hQUXNSxLVKeGJYWNhhVseps/0LddMkp7//VDkzwJ69lPL0UmZdcZwggj9akJaA==} + '@typescript-eslint/types@8.32.1': + resolution: {integrity: sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@7.18.0': @@ -1246,8 +1246,8 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@8.32.0': - resolution: {integrity: sha512-pU9VD7anSCOIoBFnhTGfOzlVFQIA1XXiQpH/CezqOBaDppRwTglJzCC6fUQGpfwey4T183NKhF1/mfatYmjRqQ==} + '@typescript-eslint/typescript-estree@8.32.1': + resolution: {integrity: sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' @@ -1258,8 +1258,8 @@ packages: peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/utils@8.32.0': - resolution: {integrity: sha512-8S9hXau6nQ/sYVtC3D6ISIDoJzS1NsCK+gluVhLN2YkBPX+/1wkwyUiDKnxRh15579WoOIyVWnoyIf3yGI9REw==} + '@typescript-eslint/utils@8.32.1': + resolution: {integrity: sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1269,8 +1269,8 @@ packages: resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/visitor-keys@8.32.0': - resolution: {integrity: sha512-1rYQTCLFFzOI5Nl0c8LUpJT8HxpwVRn9E4CkMsYfuN6ctmQqExjSTzzSk0Tz2apmXy7WU6/6fyaZVVA/thPN+w==} + '@typescript-eslint/visitor-keys@8.32.1': + resolution: {integrity: sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': @@ -1279,24 +1279,24 @@ packages: '@vanakat/plugin-api@0.2.1': resolution: {integrity: sha512-m2gVJFTPoIG+fUDAWYPPW/XoywBXrGtYOZFZdQHZmL62Zoc9NntCID76/Wu17DAanQ4aiZN8yRHHXlfq6sPvsQ==} - '@vitejs/plugin-vue@5.2.3': - resolution: {integrity: sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg==} + '@vitejs/plugin-vue@5.2.4': + resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 || ^6.0.0 vue: ^3.2.25 - '@vue/compiler-core@3.5.13': - resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} + '@vue/compiler-core@3.5.14': + resolution: {integrity: sha512-k7qMHMbKvoCXIxPhquKQVw3Twid3Kg4s7+oYURxLGRd56LiuHJVrvFKI4fm2AM3c8apqODPfVJGoh8nePbXMRA==} - '@vue/compiler-dom@3.5.13': - resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} + '@vue/compiler-dom@3.5.14': + resolution: {integrity: sha512-1aOCSqxGOea5I80U2hQJvXYpPm/aXo95xL/m/mMhgyPUsKe9jhjwWpziNAw7tYRnbz1I61rd9Mld4W9KmmRoug==} - '@vue/compiler-sfc@3.5.13': - resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==} + '@vue/compiler-sfc@3.5.14': + resolution: {integrity: sha512-9T6m/9mMr81Lj58JpzsiSIjBgv2LiVoWjIVa7kuXHICUi8LiDSIotMpPRXYJsXKqyARrzjT24NAwttrMnMaCXA==} - '@vue/compiler-ssr@3.5.13': - resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==} + '@vue/compiler-ssr@3.5.14': + resolution: {integrity: sha512-Y0G7PcBxr1yllnHuS/NxNCSPWnRGH4Ogrp0tsLA5QemDZuJLs99YjAKQ7KqkHE0vCg4QTKlQzXLKCMF7WPSl7Q==} '@vue/devtools-api@7.7.6': resolution: {integrity: sha512-b2Xx0KvXZObePpXPYHvBRRJLDQn5nhKjXh7vUhMEtWxz1AYNFOVIsh5+HLP8xDGL7sy+Q7hXeUxPHB/KgbtsPw==} @@ -1307,22 +1307,22 @@ packages: '@vue/devtools-shared@7.7.6': resolution: {integrity: sha512-yFEgJZ/WblEsojQQceuyK6FzpFDx4kqrz2ohInxNj5/DnhoX023upTv4OD6lNPLAA5LLkbwPVb10o/7b+Y4FVA==} - '@vue/reactivity@3.5.13': - resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==} + '@vue/reactivity@3.5.14': + resolution: {integrity: sha512-7cK1Hp343Fu/SUCCO52vCabjvsYu7ZkOqyYu7bXV9P2yyfjUMUXHZafEbq244sP7gf+EZEz+77QixBTuEqkQQw==} - '@vue/runtime-core@3.5.13': - resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==} + '@vue/runtime-core@3.5.14': + resolution: {integrity: sha512-w9JWEANwHXNgieAhxPpEpJa+0V5G0hz3NmjAZwlOebtfKyp2hKxKF0+qSh0Xs6/PhfGihuSdqMprMVcQU/E6ag==} - '@vue/runtime-dom@3.5.13': - resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==} + '@vue/runtime-dom@3.5.14': + resolution: {integrity: sha512-lCfR++IakeI35TVR80QgOelsUIdcKjd65rWAMfdSlCYnaEY5t3hYwru7vvcWaqmrK+LpI7ZDDYiGU5V3xjMacw==} - '@vue/server-renderer@3.5.13': - resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==} + '@vue/server-renderer@3.5.14': + resolution: {integrity: sha512-Rf/ISLqokIvcySIYnv3tNWq40PLpNLDLSJwwVWzG6MNtyIhfbcrAxo5ZL9nARJhqjZyWWa40oRb2IDuejeuv6w==} peerDependencies: - vue: 3.5.13 + vue: 3.5.14 - '@vue/shared@3.5.13': - resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} + '@vue/shared@3.5.14': + resolution: {integrity: sha512-oXTwNxVfc9EtP1zzXAlSlgARLXNC84frFYkS0HHz0h3E4WZSP9sywqjqzGCP9Y34M8ipNmd380pVgmMuwELDyQ==} '@vueuse/core@12.8.2': resolution: {integrity: sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==} @@ -1393,11 +1393,11 @@ packages: ag-charts-types@10.3.5: resolution: {integrity: sha512-DtvV+IS4RlocGV2IcaQOe/eM6eBGGCvkLnwxGkDxKa8ddxivv90fwlfPxK0O5XnVectiKtWFfOw35Cm0k+4vMw==} - ag-charts-types@11.2.4: - resolution: {integrity: sha512-a1aQjtQ9ZH+J8BF3YcWAIHUt9ZLiL9IVZ8R5h7z2CkTNu2TPq5UlsCcF0/YZKc1M8CM0CdSNLSGQuWUwDNxAcA==} + ag-charts-types@11.3.0: + resolution: {integrity: sha512-FXyk24PizYS4QoPTk7FVaFDgvmZYBQo6sgl5n3lkHugTNTZBtwBmN3i4JnBXgNjGDB6Q05MRkoBA2rvW8rPBag==} - ag-grid-community@33.2.4: - resolution: {integrity: sha512-7XT1+wxmMlMVXB27BJOzlft9ATB0C5HOJcCGMc8dCO2W17JXbNknVEEDGTBKoSvA4Cei8sARrRDxmPgY8mWopQ==} + ag-grid-community@33.3.0: + resolution: {integrity: sha512-Nr7Wd3Qc0tbR+BWZ4y8LgEwLkHTvrtJ4f4k5eb4zuoNZFM52MyLfu+m4OAplIm9nOVBdp5tg/ALWvu13jak+Nw==} agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} @@ -1414,8 +1414,8 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - algoliasearch@5.24.0: - resolution: {integrity: sha512-CkaUygzZ91Xbw11s0CsHMawrK3tl+Ue57725HGRgRzKgt2Z4wvXVXRCtQfvzh8K7Tp4Zp7f1pyHAtMROtTJHxg==} + algoliasearch@5.25.0: + resolution: {integrity: sha512-n73BVorL4HIwKlfJKb4SEzAYkR3Buwfwbh+MYxg2mloFph2fFGV58E90QTzdbfzWrLn4HE5Czx/WTjI8fcHaMg==} engines: {node: '>= 14.0.0'} ansi-escapes@4.3.2: @@ -1568,8 +1568,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001717: - resolution: {integrity: sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw==} + caniuse-lite@1.0.30001718: + resolution: {integrity: sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -1671,8 +1671,8 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -1751,8 +1751,8 @@ packages: deprecated: Please use @electron/rebuild moving forward. There is no API change, just a package name change hasBin: true - electron-to-chromium@1.5.150: - resolution: {integrity: sha512-rOOkP2ZUMx1yL4fCxXQKDHQ8ZXwisb2OycOQVKHgvB3ZI4CvehOd4y2tfnnLDieJ3Zs1RL1Dlp3cMkyIn7nnXA==} + electron-to-chromium@1.5.155: + resolution: {integrity: sha512-ps5KcGGmwL8VaeJlvlDlu4fORQpv3+GIcF5I3f9tUKUlJ/wsysh6HU8P5L1XWRYeXfA0oJd4PyM8ds8zTFf6Ng==} emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -2094,8 +2094,8 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + http-cache-semantics@4.2.0: + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} @@ -2127,6 +2127,10 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} + ignore@7.0.4: + resolution: {integrity: sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==} + engines: {node: '>= 4'} + import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} @@ -2801,8 +2805,8 @@ packages: resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} - preact@10.26.5: - resolution: {integrity: sha512-fmpDkgfGU6JYux9teDWLhj9mKN55tyepwYbxHgQuIxbWQzgFg5vk7Mrrtfx7xRxq798ynkY4DDDxZr235Kk+4w==} + preact@10.26.6: + resolution: {integrity: sha512-5SRRBinwpwkaD+OqlBDeITlRgvd8I8QlxHJw9AxSdMNV6O+LodN9nUyYGpSF7sadHjs6RzeFShMexC6DbtWr9g==} prelude-ls@1.1.2: resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} @@ -2837,8 +2841,8 @@ packages: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} - property-information@7.0.0: - resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==} + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} pump@3.0.2: resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} @@ -2952,8 +2956,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.1: - resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} engines: {node: '>=10'} hasBin: true @@ -3121,8 +3125,8 @@ packages: peerDependencies: typescript: '>=4.8.4' - ts-jest@29.3.2: - resolution: {integrity: sha512-bJJkrWc6PjFVz5g2DGCNUo8z7oFEYaz1xP1NpeDU7KNLMWPpEyV8Chbpkn8xjzgRDpQhnGMyvyldoL7h8JXyug==} + ts-jest@29.3.4: + resolution: {integrity: sha512-Iqbrm8IXOmV+ggWHOTEbjwyCf2xZlUMv5npExksXohL+tk8va4Fjhb+X2+Rt9NBmgO7bJ8WpnMLOwih/DnMlFA==} engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -3292,8 +3296,8 @@ packages: postcss: optional: true - vue@3.5.13: - resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==} + vue@3.5.14: + resolution: {integrity: sha512-LbOm50/vZFG6Mhy6KscQYXZMQ0LMCC/y40HDJPPvGFQ+i/lUH+PJHR6C3assgOQiXdl6tAfsXHbXYVBZZu65ew==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -3376,110 +3380,110 @@ snapshots: '@ag-grid-community/core': 32.3.5 tslib: 2.8.1 - '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.24.0)(algoliasearch@5.24.0)(search-insights@2.17.3)': + '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.24.0)(algoliasearch@5.24.0)(search-insights@2.17.3) - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.24.0)(algoliasearch@5.24.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.25.0)(algoliasearch@5.25.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.24.0)(algoliasearch@5.24.0)(search-insights@2.17.3)': + '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.24.0)(algoliasearch@5.24.0) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.25.0)(algoliasearch@5.25.0) search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.24.0)(algoliasearch@5.24.0)': + '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.24.0)(algoliasearch@5.24.0) - '@algolia/client-search': 5.24.0 - algoliasearch: 5.24.0 + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.25.0)(algoliasearch@5.25.0) + '@algolia/client-search': 5.25.0 + algoliasearch: 5.25.0 - '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.24.0)(algoliasearch@5.24.0)': + '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)': dependencies: - '@algolia/client-search': 5.24.0 - algoliasearch: 5.24.0 + '@algolia/client-search': 5.25.0 + algoliasearch: 5.25.0 - '@algolia/client-abtesting@5.24.0': + '@algolia/client-abtesting@5.25.0': dependencies: - '@algolia/client-common': 5.24.0 - '@algolia/requester-browser-xhr': 5.24.0 - '@algolia/requester-fetch': 5.24.0 - '@algolia/requester-node-http': 5.24.0 + '@algolia/client-common': 5.25.0 + '@algolia/requester-browser-xhr': 5.25.0 + '@algolia/requester-fetch': 5.25.0 + '@algolia/requester-node-http': 5.25.0 - '@algolia/client-analytics@5.24.0': + '@algolia/client-analytics@5.25.0': dependencies: - '@algolia/client-common': 5.24.0 - '@algolia/requester-browser-xhr': 5.24.0 - '@algolia/requester-fetch': 5.24.0 - '@algolia/requester-node-http': 5.24.0 + '@algolia/client-common': 5.25.0 + '@algolia/requester-browser-xhr': 5.25.0 + '@algolia/requester-fetch': 5.25.0 + '@algolia/requester-node-http': 5.25.0 - '@algolia/client-common@5.24.0': {} + '@algolia/client-common@5.25.0': {} - '@algolia/client-insights@5.24.0': + '@algolia/client-insights@5.25.0': dependencies: - '@algolia/client-common': 5.24.0 - '@algolia/requester-browser-xhr': 5.24.0 - '@algolia/requester-fetch': 5.24.0 - '@algolia/requester-node-http': 5.24.0 + '@algolia/client-common': 5.25.0 + '@algolia/requester-browser-xhr': 5.25.0 + '@algolia/requester-fetch': 5.25.0 + '@algolia/requester-node-http': 5.25.0 - '@algolia/client-personalization@5.24.0': + '@algolia/client-personalization@5.25.0': dependencies: - '@algolia/client-common': 5.24.0 - '@algolia/requester-browser-xhr': 5.24.0 - '@algolia/requester-fetch': 5.24.0 - '@algolia/requester-node-http': 5.24.0 + '@algolia/client-common': 5.25.0 + '@algolia/requester-browser-xhr': 5.25.0 + '@algolia/requester-fetch': 5.25.0 + '@algolia/requester-node-http': 5.25.0 - '@algolia/client-query-suggestions@5.24.0': + '@algolia/client-query-suggestions@5.25.0': dependencies: - '@algolia/client-common': 5.24.0 - '@algolia/requester-browser-xhr': 5.24.0 - '@algolia/requester-fetch': 5.24.0 - '@algolia/requester-node-http': 5.24.0 + '@algolia/client-common': 5.25.0 + '@algolia/requester-browser-xhr': 5.25.0 + '@algolia/requester-fetch': 5.25.0 + '@algolia/requester-node-http': 5.25.0 - '@algolia/client-search@5.24.0': + '@algolia/client-search@5.25.0': dependencies: - '@algolia/client-common': 5.24.0 - '@algolia/requester-browser-xhr': 5.24.0 - '@algolia/requester-fetch': 5.24.0 - '@algolia/requester-node-http': 5.24.0 + '@algolia/client-common': 5.25.0 + '@algolia/requester-browser-xhr': 5.25.0 + '@algolia/requester-fetch': 5.25.0 + '@algolia/requester-node-http': 5.25.0 - '@algolia/ingestion@1.24.0': + '@algolia/ingestion@1.25.0': dependencies: - '@algolia/client-common': 5.24.0 - '@algolia/requester-browser-xhr': 5.24.0 - '@algolia/requester-fetch': 5.24.0 - '@algolia/requester-node-http': 5.24.0 + '@algolia/client-common': 5.25.0 + '@algolia/requester-browser-xhr': 5.25.0 + '@algolia/requester-fetch': 5.25.0 + '@algolia/requester-node-http': 5.25.0 - '@algolia/monitoring@1.24.0': + '@algolia/monitoring@1.25.0': dependencies: - '@algolia/client-common': 5.24.0 - '@algolia/requester-browser-xhr': 5.24.0 - '@algolia/requester-fetch': 5.24.0 - '@algolia/requester-node-http': 5.24.0 + '@algolia/client-common': 5.25.0 + '@algolia/requester-browser-xhr': 5.25.0 + '@algolia/requester-fetch': 5.25.0 + '@algolia/requester-node-http': 5.25.0 - '@algolia/recommend@5.24.0': + '@algolia/recommend@5.25.0': dependencies: - '@algolia/client-common': 5.24.0 - '@algolia/requester-browser-xhr': 5.24.0 - '@algolia/requester-fetch': 5.24.0 - '@algolia/requester-node-http': 5.24.0 + '@algolia/client-common': 5.25.0 + '@algolia/requester-browser-xhr': 5.25.0 + '@algolia/requester-fetch': 5.25.0 + '@algolia/requester-node-http': 5.25.0 - '@algolia/requester-browser-xhr@5.24.0': + '@algolia/requester-browser-xhr@5.25.0': dependencies: - '@algolia/client-common': 5.24.0 + '@algolia/client-common': 5.25.0 - '@algolia/requester-fetch@5.24.0': + '@algolia/requester-fetch@5.25.0': dependencies: - '@algolia/client-common': 5.24.0 + '@algolia/client-common': 5.25.0 - '@algolia/requester-node-http@5.24.0': + '@algolia/requester-node-http@5.25.0': dependencies: - '@algolia/client-common': 5.24.0 + '@algolia/client-common': 5.25.0 '@ampproject/remapping@2.3.0': dependencies: @@ -3492,22 +3496,22 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.27.1': {} + '@babel/compat-data@7.27.2': {} '@babel/core@7.27.1': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.27.1 '@babel/generator': 7.27.1 - '@babel/helper-compilation-targets': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) '@babel/helpers': 7.27.1 - '@babel/parser': 7.27.1 - '@babel/template': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/template': 7.27.2 '@babel/traverse': 7.27.1 '@babel/types': 7.27.1 convert-source-map: 2.0.0 - debug: 4.4.0 + debug: 4.4.1 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -3516,15 +3520,15 @@ snapshots: '@babel/generator@7.27.1': dependencies: - '@babel/parser': 7.27.1 + '@babel/parser': 7.27.2 '@babel/types': 7.27.1 '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 - '@babel/helper-compilation-targets@7.27.1': + '@babel/helper-compilation-targets@7.27.2': dependencies: - '@babel/compat-data': 7.27.1 + '@babel/compat-data': 7.27.2 '@babel/helper-validator-option': 7.27.1 browserslist: 4.24.5 lru-cache: 5.1.1 @@ -3556,10 +3560,10 @@ snapshots: '@babel/helpers@7.27.1': dependencies: - '@babel/template': 7.27.1 + '@babel/template': 7.27.2 '@babel/types': 7.27.1 - '@babel/parser@7.27.1': + '@babel/parser@7.27.2': dependencies: '@babel/types': 7.27.1 @@ -3648,20 +3652,20 @@ snapshots: '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/template@7.27.1': + '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.27.1 + '@babel/parser': 7.27.2 '@babel/types': 7.27.1 '@babel/traverse@7.27.1': dependencies: '@babel/code-frame': 7.27.1 '@babel/generator': 7.27.1 - '@babel/parser': 7.27.1 - '@babel/template': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/template': 7.27.2 '@babel/types': 7.27.1 - debug: 4.4.0 + debug: 4.4.1 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -3676,7 +3680,7 @@ snapshots: '@codemirror/language@6.11.0': dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.36.7 + '@codemirror/view': 6.36.8 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 @@ -3686,7 +3690,7 @@ snapshots: dependencies: '@marijn/find-cluster-break': 1.0.2 - '@codemirror/view@6.36.7': + '@codemirror/view@6.36.8': dependencies: '@codemirror/state': 6.5.2 style-mod: 4.1.2 @@ -3694,10 +3698,10 @@ snapshots: '@docsearch/css@3.8.2': {} - '@docsearch/js@3.8.2(@algolia/client-search@5.24.0)(search-insights@2.17.3)': + '@docsearch/js@3.8.2(@algolia/client-search@5.25.0)(search-insights@2.17.3)': dependencies: - '@docsearch/react': 3.8.2(@algolia/client-search@5.24.0)(search-insights@2.17.3) - preact: 10.26.5 + '@docsearch/react': 3.8.2(@algolia/client-search@5.25.0)(search-insights@2.17.3) + preact: 10.26.6 transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -3705,12 +3709,12 @@ snapshots: - react-dom - search-insights - '@docsearch/react@3.8.2(@algolia/client-search@5.24.0)(search-insights@2.17.3)': + '@docsearch/react@3.8.2(@algolia/client-search@5.25.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.24.0)(algoliasearch@5.24.0)(search-insights@2.17.3) - '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.24.0)(algoliasearch@5.24.0) + '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)(search-insights@2.17.3) + '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.25.0)(algoliasearch@5.25.0) '@docsearch/css': 3.8.2 - algoliasearch: 5.24.0 + algoliasearch: 5.25.0 optionalDependencies: search-insights: 2.17.3 transitivePeerDependencies: @@ -3870,7 +3874,7 @@ snapshots: '@eslint/config-array@0.19.2': dependencies: '@eslint/object-schema': 2.1.6 - debug: 4.4.0 + debug: 4.4.1 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -3886,7 +3890,7 @@ snapshots: '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 - debug: 4.4.0 + debug: 4.4.1 espree: 10.3.0 globals: 14.0.0 ignore: 5.3.2 @@ -3919,11 +3923,11 @@ snapshots: '@humanwhocodes/retry@0.3.1': {} - '@humanwhocodes/retry@0.4.2': {} + '@humanwhocodes/retry@0.4.3': {} '@hypersphere/omnibus@0.1.6': {} - '@iconify-json/simple-icons@1.2.33': + '@iconify-json/simple-icons@1.2.34': dependencies: '@iconify/types': 2.0.0 @@ -3942,7 +3946,7 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.12 + '@types/node': 22.15.18 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -3955,14 +3959,14 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.12 + '@types/node': 22.15.18 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.15.12) + jest-config: 29.7.0(@types/node@22.15.18) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -3987,7 +3991,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.12 + '@types/node': 22.15.18 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -4005,7 +4009,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.15.12 + '@types/node': 22.15.18 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -4027,7 +4031,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 22.15.12 + '@types/node': 22.15.18 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -4097,7 +4101,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.15.12 + '@types/node': 22.15.18 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -4153,7 +4157,7 @@ snapshots: '@npmcli/fs@2.1.2': dependencies: '@gar/promisify': 1.1.3 - semver: 7.7.1 + semver: 7.7.2 '@npmcli/move-file@2.0.1': dependencies: @@ -4280,7 +4284,7 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.27.1 + '@babel/parser': 7.27.2 '@babel/types': 7.27.1 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 @@ -4292,7 +4296,7 @@ snapshots: '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.27.1 + '@babel/parser': 7.27.2 '@babel/types': 7.27.1 '@types/babel__traverse@7.20.7': @@ -4303,7 +4307,7 @@ snapshots: dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 22.15.12 + '@types/node': 22.15.18 '@types/responselike': 1.0.3 '@types/codemirror@5.60.8': @@ -4324,7 +4328,7 @@ snapshots: '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.15.12 + '@types/node': 22.15.18 '@types/hast@3.0.4': dependencies: @@ -4353,7 +4357,7 @@ snapshots: '@types/keyv@3.1.4': dependencies: - '@types/node': 22.15.12 + '@types/node': 22.15.18 '@types/linkify-it@5.0.0': {} @@ -4370,22 +4374,22 @@ snapshots: '@types/mdurl@2.0.0': {} - '@types/node@22.15.12': + '@types/node@22.15.18': dependencies: undici-types: 6.21.0 - '@types/papaparse@5.3.15': + '@types/papaparse@5.3.16': dependencies: - '@types/node': 22.15.12 + '@types/node': 22.15.18 '@types/responselike@1.0.3': dependencies: - '@types/node': 22.15.12 + '@types/node': 22.15.18 '@types/sql.js@1.4.9': dependencies: '@types/emscripten': 1.40.1 - '@types/node': 22.15.12 + '@types/node': 22.15.18 '@types/stack-utils@2.0.3': {} @@ -4421,17 +4425,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.32.0(@typescript-eslint/parser@8.32.0(eslint@9.15.0)(typescript@5.8.3))(eslint@9.15.0)(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.15.0)(typescript@5.8.3))(eslint@9.15.0)(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.32.0(eslint@9.15.0)(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.32.0 - '@typescript-eslint/type-utils': 8.32.0(eslint@9.15.0)(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.0(eslint@9.15.0)(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.32.0 + '@typescript-eslint/parser': 8.32.1(eslint@9.15.0)(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/type-utils': 8.32.1(eslint@9.15.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.15.0)(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.32.1 eslint: 9.15.0 graphemer: 1.4.0 - ignore: 5.3.2 + ignore: 7.0.4 natural-compare: 1.4.0 ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 @@ -4444,20 +4448,20 @@ snapshots: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.4.5) '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.4.0 + debug: 4.4.1 eslint: 9.15.0 optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.32.0(eslint@9.15.0)(typescript@5.8.3)': + '@typescript-eslint/parser@8.32.1(eslint@9.15.0)(typescript@5.8.3)': dependencies: - '@typescript-eslint/scope-manager': 8.32.0 - '@typescript-eslint/types': 8.32.0 - '@typescript-eslint/typescript-estree': 8.32.0(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.32.0 - debug: 4.4.0 + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.32.1 + debug: 4.4.1 eslint: 9.15.0 typescript: 5.8.3 transitivePeerDependencies: @@ -4468,16 +4472,16 @@ snapshots: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - '@typescript-eslint/scope-manager@8.32.0': + '@typescript-eslint/scope-manager@8.32.1': dependencies: - '@typescript-eslint/types': 8.32.0 - '@typescript-eslint/visitor-keys': 8.32.0 + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/visitor-keys': 8.32.1 '@typescript-eslint/type-utils@7.18.0(eslint@9.15.0)(typescript@5.4.5)': dependencies: '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.4.5) '@typescript-eslint/utils': 7.18.0(eslint@9.15.0)(typescript@5.4.5) - debug: 4.4.0 + debug: 4.4.1 eslint: 9.15.0 ts-api-utils: 1.4.3(typescript@5.4.5) optionalDependencies: @@ -4485,11 +4489,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.32.0(eslint@9.15.0)(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.32.1(eslint@9.15.0)(typescript@5.8.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.32.0(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.0(eslint@9.15.0)(typescript@5.8.3) - debug: 4.4.0 + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.15.0)(typescript@5.8.3) + debug: 4.4.1 eslint: 9.15.0 ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 @@ -4498,32 +4502,32 @@ snapshots: '@typescript-eslint/types@7.18.0': {} - '@typescript-eslint/types@8.32.0': {} + '@typescript-eslint/types@8.32.1': {} '@typescript-eslint/typescript-estree@7.18.0(typescript@5.4.5)': dependencies: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.4.0 + debug: 4.4.1 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.1 + semver: 7.7.2 ts-api-utils: 1.4.3(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.32.0(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.32.1(typescript@5.8.3)': dependencies: - '@typescript-eslint/types': 8.32.0 - '@typescript-eslint/visitor-keys': 8.32.0 - debug: 4.4.0 + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/visitor-keys': 8.32.1 + debug: 4.4.1 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.1 + semver: 7.7.2 ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: @@ -4540,12 +4544,12 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@8.32.0(eslint@9.15.0)(typescript@5.8.3)': + '@typescript-eslint/utils@8.32.1(eslint@9.15.0)(typescript@5.8.3)': dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@9.15.0) - '@typescript-eslint/scope-manager': 8.32.0 - '@typescript-eslint/types': 8.32.0 - '@typescript-eslint/typescript-estree': 8.32.0(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) eslint: 9.15.0 typescript: 5.8.3 transitivePeerDependencies: @@ -4556,18 +4560,18 @@ snapshots: '@typescript-eslint/types': 7.18.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.32.0': + '@typescript-eslint/visitor-keys@8.32.1': dependencies: - '@typescript-eslint/types': 8.32.0 + '@typescript-eslint/types': 8.32.1 eslint-visitor-keys: 4.2.0 '@ungap/structured-clone@1.3.0': {} - '@vanakat/plugin-api@0.2.1(@codemirror/state@6.5.2)(@codemirror/view@6.36.7)(eslint@9.15.0)': + '@vanakat/plugin-api@0.2.1(@codemirror/state@6.5.2)(@codemirror/view@6.36.8)(eslint@9.15.0)': dependencies: '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.15.0)(typescript@5.4.5))(eslint@9.15.0)(typescript@5.4.5) '@typescript-eslint/parser': 7.18.0(eslint@9.15.0)(typescript@5.4.5) - obsidian: 1.8.7(@codemirror/state@6.5.2)(@codemirror/view@6.36.7) + obsidian: 1.8.7(@codemirror/state@6.5.2)(@codemirror/view@6.36.8) typescript: 5.4.5 transitivePeerDependencies: - '@codemirror/state' @@ -4575,40 +4579,40 @@ snapshots: - eslint - supports-color - '@vitejs/plugin-vue@5.2.3(vite@5.4.19(@types/node@22.15.12))(vue@3.5.13(typescript@5.8.3))': + '@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@22.15.18))(vue@3.5.14(typescript@5.8.3))': dependencies: - vite: 5.4.19(@types/node@22.15.12) - vue: 3.5.13(typescript@5.8.3) + vite: 5.4.19(@types/node@22.15.18) + vue: 3.5.14(typescript@5.8.3) - '@vue/compiler-core@3.5.13': + '@vue/compiler-core@3.5.14': dependencies: - '@babel/parser': 7.27.1 - '@vue/shared': 3.5.13 + '@babel/parser': 7.27.2 + '@vue/shared': 3.5.14 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.13': + '@vue/compiler-dom@3.5.14': dependencies: - '@vue/compiler-core': 3.5.13 - '@vue/shared': 3.5.13 + '@vue/compiler-core': 3.5.14 + '@vue/shared': 3.5.14 - '@vue/compiler-sfc@3.5.13': + '@vue/compiler-sfc@3.5.14': dependencies: - '@babel/parser': 7.27.1 - '@vue/compiler-core': 3.5.13 - '@vue/compiler-dom': 3.5.13 - '@vue/compiler-ssr': 3.5.13 - '@vue/shared': 3.5.13 + '@babel/parser': 7.27.2 + '@vue/compiler-core': 3.5.14 + '@vue/compiler-dom': 3.5.14 + '@vue/compiler-ssr': 3.5.14 + '@vue/shared': 3.5.14 estree-walker: 2.0.2 magic-string: 0.30.17 postcss: 8.5.3 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.13': + '@vue/compiler-ssr@3.5.14': dependencies: - '@vue/compiler-dom': 3.5.13 - '@vue/shared': 3.5.13 + '@vue/compiler-dom': 3.5.14 + '@vue/shared': 3.5.14 '@vue/devtools-api@7.7.6': dependencies: @@ -4628,36 +4632,36 @@ snapshots: dependencies: rfdc: 1.4.1 - '@vue/reactivity@3.5.13': + '@vue/reactivity@3.5.14': dependencies: - '@vue/shared': 3.5.13 + '@vue/shared': 3.5.14 - '@vue/runtime-core@3.5.13': + '@vue/runtime-core@3.5.14': dependencies: - '@vue/reactivity': 3.5.13 - '@vue/shared': 3.5.13 + '@vue/reactivity': 3.5.14 + '@vue/shared': 3.5.14 - '@vue/runtime-dom@3.5.13': + '@vue/runtime-dom@3.5.14': dependencies: - '@vue/reactivity': 3.5.13 - '@vue/runtime-core': 3.5.13 - '@vue/shared': 3.5.13 + '@vue/reactivity': 3.5.14 + '@vue/runtime-core': 3.5.14 + '@vue/shared': 3.5.14 csstype: 3.1.3 - '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.8.3))': + '@vue/server-renderer@3.5.14(vue@3.5.14(typescript@5.8.3))': dependencies: - '@vue/compiler-ssr': 3.5.13 - '@vue/shared': 3.5.13 - vue: 3.5.13(typescript@5.8.3) + '@vue/compiler-ssr': 3.5.14 + '@vue/shared': 3.5.14 + vue: 3.5.14(typescript@5.8.3) - '@vue/shared@3.5.13': {} + '@vue/shared@3.5.14': {} '@vueuse/core@12.8.2(typescript@5.8.3)': dependencies: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 12.8.2 '@vueuse/shared': 12.8.2(typescript@5.8.3) - vue: 3.5.13(typescript@5.8.3) + vue: 3.5.14(typescript@5.8.3) transitivePeerDependencies: - typescript @@ -4665,7 +4669,7 @@ snapshots: dependencies: '@vueuse/core': 12.8.2(typescript@5.8.3) '@vueuse/shared': 12.8.2(typescript@5.8.3) - vue: 3.5.13(typescript@5.8.3) + vue: 3.5.14(typescript@5.8.3) optionalDependencies: focus-trap: 7.6.4 transitivePeerDependencies: @@ -4675,7 +4679,7 @@ snapshots: '@vueuse/shared@12.8.2(typescript@5.8.3)': dependencies: - vue: 3.5.13(typescript@5.8.3) + vue: 3.5.14(typescript@5.8.3) transitivePeerDependencies: - typescript @@ -4693,15 +4697,15 @@ snapshots: ag-charts-types@10.3.5: {} - ag-charts-types@11.2.4: {} + ag-charts-types@11.3.0: {} - ag-grid-community@33.2.4: + ag-grid-community@33.3.0: dependencies: - ag-charts-types: 11.2.4 + ag-charts-types: 11.3.0 agent-base@6.0.2: dependencies: - debug: 4.4.0 + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -4721,21 +4725,21 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - algoliasearch@5.24.0: + algoliasearch@5.25.0: dependencies: - '@algolia/client-abtesting': 5.24.0 - '@algolia/client-analytics': 5.24.0 - '@algolia/client-common': 5.24.0 - '@algolia/client-insights': 5.24.0 - '@algolia/client-personalization': 5.24.0 - '@algolia/client-query-suggestions': 5.24.0 - '@algolia/client-search': 5.24.0 - '@algolia/ingestion': 1.24.0 - '@algolia/monitoring': 1.24.0 - '@algolia/recommend': 5.24.0 - '@algolia/requester-browser-xhr': 5.24.0 - '@algolia/requester-fetch': 5.24.0 - '@algolia/requester-node-http': 5.24.0 + '@algolia/client-abtesting': 5.25.0 + '@algolia/client-analytics': 5.25.0 + '@algolia/client-common': 5.25.0 + '@algolia/client-insights': 5.25.0 + '@algolia/client-personalization': 5.25.0 + '@algolia/client-query-suggestions': 5.25.0 + '@algolia/client-search': 5.25.0 + '@algolia/ingestion': 1.25.0 + '@algolia/monitoring': 1.25.0 + '@algolia/recommend': 5.25.0 + '@algolia/requester-browser-xhr': 5.25.0 + '@algolia/requester-fetch': 5.25.0 + '@algolia/requester-node-http': 5.25.0 ansi-escapes@4.3.2: dependencies: @@ -4800,7 +4804,7 @@ snapshots: babel-plugin-jest-hoist@29.6.3: dependencies: - '@babel/template': 7.27.1 + '@babel/template': 7.27.2 '@babel/types': 7.27.1 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.7 @@ -4857,8 +4861,8 @@ snapshots: browserslist@4.24.5: dependencies: - caniuse-lite: 1.0.30001717 - electron-to-chromium: 1.5.150 + caniuse-lite: 1.0.30001718 + electron-to-chromium: 1.5.155 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.5) @@ -4908,7 +4912,7 @@ snapshots: dependencies: clone-response: 1.0.3 get-stream: 5.2.0 - http-cache-semantics: 4.1.1 + http-cache-semantics: 4.2.0 keyv: 4.5.4 lowercase-keys: 2.0.0 normalize-url: 6.1.0 @@ -4937,7 +4941,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001717: {} + caniuse-lite@1.0.30001718: {} ccount@2.0.1: {} @@ -5004,13 +5008,13 @@ snapshots: dependencies: is-what: 4.1.16 - create-jest@29.7.0(@types/node@22.15.12): + create-jest@29.7.0(@types/node@22.15.18): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.15.12) + jest-config: 29.7.0(@types/node@22.15.18) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -5027,7 +5031,7 @@ snapshots: csstype@3.1.3: {} - debug@4.4.0: + debug@4.4.1: dependencies: ms: 2.1.3 @@ -5085,7 +5089,7 @@ snapshots: dependencies: '@malept/cross-spawn-promise': 2.0.0 chalk: 4.1.2 - debug: 4.4.0 + debug: 4.4.1 detect-libc: 2.0.4 fs-extra: 10.1.0 got: 11.8.6 @@ -5094,14 +5098,14 @@ snapshots: node-api-version: 0.1.4 node-gyp: 9.4.1 ora: 5.4.1 - semver: 7.7.1 + semver: 7.7.2 tar: 6.2.1 yargs: 17.7.2 transitivePeerDependencies: - bluebird - supports-color - electron-to-chromium@1.5.150: {} + electron-to-chromium@1.5.155: {} emittery@0.13.1: {} @@ -5235,13 +5239,13 @@ snapshots: '@eslint/plugin-kit': 0.2.8 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.2 + '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.7 '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.0 + debug: 4.4.1 escape-string-regexp: 4.0.0 eslint-scope: 8.3.0 eslint-visitor-keys: 4.2.0 @@ -5524,7 +5528,7 @@ snapshots: hast-util-whitespace: 3.0.0 html-void-elements: 3.0.0 mdast-util-to-hast: 13.2.0 - property-information: 7.0.0 + property-information: 7.1.0 space-separated-tokens: 2.0.2 stringify-entities: 4.0.4 zwitch: 2.0.4 @@ -5539,13 +5543,13 @@ snapshots: html-void-elements@3.0.0: {} - http-cache-semantics@4.1.1: {} + http-cache-semantics@4.2.0: {} http-proxy-agent@5.0.0: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.4.0 + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -5557,7 +5561,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.4.0 + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -5576,6 +5580,8 @@ snapshots: ignore@5.3.2: {} + ignore@7.0.4: {} + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 @@ -5666,7 +5672,7 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: '@babel/core': 7.27.1 - '@babel/parser': 7.27.1 + '@babel/parser': 7.27.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -5676,10 +5682,10 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: '@babel/core': 7.27.1 - '@babel/parser': 7.27.1 + '@babel/parser': 7.27.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.7.1 + semver: 7.7.2 transitivePeerDependencies: - supports-color @@ -5691,7 +5697,7 @@ snapshots: istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.4.0 + debug: 4.4.1 istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -5721,7 +5727,7 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.12 + '@types/node': 22.15.18 chalk: 4.1.2 co: 4.6.0 dedent: 1.6.0 @@ -5741,16 +5747,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@22.15.12): + jest-cli@29.7.0(@types/node@22.15.18): dependencies: '@jest/core': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.15.12) + create-jest: 29.7.0(@types/node@22.15.18) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.15.12) + jest-config: 29.7.0(@types/node@22.15.18) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -5760,7 +5766,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@22.15.12): + jest-config@29.7.0(@types/node@22.15.18): dependencies: '@babel/core': 7.27.1 '@jest/test-sequencer': 29.7.0 @@ -5785,7 +5791,7 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 22.15.12 + '@types/node': 22.15.18 transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -5814,7 +5820,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.12 + '@types/node': 22.15.18 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -5824,7 +5830,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 22.15.12 + '@types/node': 22.15.18 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -5863,7 +5869,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.12 + '@types/node': 22.15.18 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -5898,7 +5904,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.12 + '@types/node': 22.15.18 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -5926,7 +5932,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.12 + '@types/node': 22.15.18 chalk: 4.1.2 cjs-module-lexer: 1.4.3 collect-v8-coverage: 1.0.2 @@ -5965,14 +5971,14 @@ snapshots: jest-util: 29.7.0 natural-compare: 1.4.0 pretty-format: 29.7.0 - semver: 7.7.1 + semver: 7.7.2 transitivePeerDependencies: - supports-color jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.12 + '@types/node': 22.15.18 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -5991,7 +5997,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.12 + '@types/node': 22.15.18 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -6000,17 +6006,17 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 22.15.12 + '@types/node': 22.15.18 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@22.15.12): + jest@29.7.0(@types/node@22.15.18): dependencies: '@jest/core': 29.7.0 '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.15.12) + jest-cli: 29.7.0(@types/node@22.15.18) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -6117,7 +6123,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.7.1 + semver: 7.7.2 make-error@1.3.6: {} @@ -6125,7 +6131,7 @@ snapshots: dependencies: agentkeepalive: 4.6.0 cacache: 16.1.3 - http-cache-semantics: 4.1.1 + http-cache-semantics: 4.2.0 http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-lambda: 1.0.1 @@ -6266,13 +6272,13 @@ snapshots: node-abi@3.75.0: dependencies: - semver: 7.7.1 + semver: 7.7.2 node-addon-api@3.2.1: {} node-api-version@0.1.4: dependencies: - semver: 7.7.1 + semver: 7.7.2 node-gyp-build@4.8.4: {} @@ -6286,7 +6292,7 @@ snapshots: nopt: 6.0.0 npmlog: 6.0.2 rimraf: 3.0.2 - semver: 7.7.1 + semver: 7.7.2 tar: 6.2.1 which: 2.0.2 transitivePeerDependencies: @@ -6316,10 +6322,10 @@ snapshots: gauge: 4.0.4 set-blocking: 2.0.0 - obsidian@1.8.7(@codemirror/state@6.5.2)(@codemirror/view@6.36.7): + obsidian@1.8.7(@codemirror/state@6.5.2)(@codemirror/view@6.36.8): dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.36.7 + '@codemirror/view': 6.36.8 '@types/codemirror': 5.60.8 moment: 2.29.4 @@ -6436,7 +6442,7 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - preact@10.26.5: {} + preact@10.26.6: {} prelude-ls@1.1.2: {} @@ -6462,7 +6468,7 @@ snapshots: kleur: 3.0.3 sisteransi: 1.0.5 - property-information@7.0.0: {} + property-information@7.1.0: {} pump@3.0.2: dependencies: @@ -6581,7 +6587,7 @@ snapshots: semver@6.3.1: {} - semver@7.7.1: {} + semver@7.7.2: {} set-blocking@2.0.0: {} @@ -6622,7 +6628,7 @@ snapshots: socks-proxy-agent@7.0.0: dependencies: agent-base: 6.0.2 - debug: 4.4.0 + debug: 4.4.1 socks: 2.8.4 transitivePeerDependencies: - supports-color @@ -6744,17 +6750,17 @@ snapshots: dependencies: typescript: 5.8.3 - ts-jest@29.3.2(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(esbuild@0.25.4)(jest@29.7.0(@types/node@22.15.12))(typescript@5.8.3): + ts-jest@29.3.4(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(esbuild@0.25.4)(jest@29.7.0(@types/node@22.15.18))(typescript@5.8.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@22.15.12) + jest: 29.7.0(@types/node@22.15.18) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.7.1 + semver: 7.7.2 type-fest: 4.41.0 typescript: 5.8.3 yargs-parser: 21.1.1 @@ -6865,35 +6871,35 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite@5.4.19(@types/node@22.15.12): + vite@5.4.19(@types/node@22.15.18): dependencies: esbuild: 0.21.5 postcss: 8.5.3 rollup: 4.40.2 optionalDependencies: - '@types/node': 22.15.12 + '@types/node': 22.15.18 fsevents: 2.3.3 - vitepress@1.6.3(@algolia/client-search@5.24.0)(@types/node@22.15.12)(postcss@8.5.3)(search-insights@2.17.3)(typescript@5.8.3): + vitepress@1.6.3(@algolia/client-search@5.25.0)(@types/node@22.15.18)(postcss@8.5.3)(search-insights@2.17.3)(typescript@5.8.3): dependencies: '@docsearch/css': 3.8.2 - '@docsearch/js': 3.8.2(@algolia/client-search@5.24.0)(search-insights@2.17.3) - '@iconify-json/simple-icons': 1.2.33 + '@docsearch/js': 3.8.2(@algolia/client-search@5.25.0)(search-insights@2.17.3) + '@iconify-json/simple-icons': 1.2.34 '@shikijs/core': 2.5.0 '@shikijs/transformers': 2.5.0 '@shikijs/types': 2.5.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.3(vite@5.4.19(@types/node@22.15.12))(vue@3.5.13(typescript@5.8.3)) + '@vitejs/plugin-vue': 5.2.4(vite@5.4.19(@types/node@22.15.18))(vue@3.5.14(typescript@5.8.3)) '@vue/devtools-api': 7.7.6 - '@vue/shared': 3.5.13 + '@vue/shared': 3.5.14 '@vueuse/core': 12.8.2(typescript@5.8.3) '@vueuse/integrations': 12.8.2(focus-trap@7.6.4)(typescript@5.8.3) focus-trap: 7.6.4 mark.js: 8.11.1 minisearch: 7.1.2 shiki: 2.5.0 - vite: 5.4.19(@types/node@22.15.12) - vue: 3.5.13(typescript@5.8.3) + vite: 5.4.19(@types/node@22.15.18) + vue: 3.5.14(typescript@5.8.3) optionalDependencies: postcss: 8.5.3 transitivePeerDependencies: @@ -6923,13 +6929,13 @@ snapshots: - typescript - universal-cookie - vue@3.5.13(typescript@5.8.3): + vue@3.5.14(typescript@5.8.3): dependencies: - '@vue/compiler-dom': 3.5.13 - '@vue/compiler-sfc': 3.5.13 - '@vue/runtime-dom': 3.5.13 - '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.8.3)) - '@vue/shared': 3.5.13 + '@vue/compiler-dom': 3.5.14 + '@vue/compiler-sfc': 3.5.14 + '@vue/runtime-dom': 3.5.14 + '@vue/server-renderer': 3.5.14(vue@3.5.14(typescript@5.8.3)) + '@vue/shared': 3.5.14 optionalDependencies: typescript: 5.8.3 diff --git a/src/database/worker/database.ts b/src/database/worker/database.ts index 4216cf4..e5915d4 100644 --- a/src/database/worker/database.ts +++ b/src/database/worker/database.ts @@ -142,10 +142,9 @@ export class WorkerDatabase { await this.dropTable(tableName) } - const fieldDefinitions = fields.map(c => c.name + ' ' + (c.type === 'auto' ? '' : c.type.toUpperCase())) + const fieldDefinitions = fields.map(c => c.name) // Setting type inside engine changes nothing for SQLite const createStmt = `CREATE TABLE IF NOT EXISTS ${tableName}(${fieldDefinitions.join(', ')})` - console.log('CREATE STMT', createStmt) this.db.run(createStmt) } diff --git a/src/renderer/GridRenderer.ts b/src/renderer/GridRenderer.ts index bf0eaab..c21953e 100644 --- a/src/renderer/GridRenderer.ts +++ b/src/renderer/GridRenderer.ts @@ -26,13 +26,13 @@ const getAgGridTheme = (theme: 'dark' | 'light') => { } as const } -class GridRendererCommunicator { +export class GridRendererCommunicator { constructor( private el: HTMLElement, private config: Partial, private plugin: SqlSealPlugin | null, private app: App, - private cellParser: ModernCellParser + private cellParser?: ModernCellParser ) { this.initialize() this.setupLayoutObservers() @@ -105,11 +105,11 @@ class GridRendererCommunicator { theme: myTheme, defaultColDef: { resizable: false, - cellRendererSelector: () => { + cellRendererSelector: this.cellParser ? () => { return { - component: ({ value }: { value: string }) => this.cellParser.render(value) + component: ({ value }: { value: string }) => this.cellParser!.render(value) } - }, + } : undefined, autoHeight: true }, autoSizeStrategy: { @@ -137,10 +137,6 @@ class GridRendererCommunicator { if (!this.gridApi) { throw new Error('Grid has not been initiated') } - this.gridApi.setGridOption('columnDefs', columns.map((c: any) => ({ - headerName: c, - valueGetter: (params) => params.data[c] - }))) this.gridApi.setGridOption('rowData', data) this.gridApi.setGridOption('loading', false) } @@ -194,7 +190,8 @@ export class GridRenderer implements RendererConfig { cleanup: () => { communicator.cleanup() communicator.gridApi.destroy() - } + }, + communicator } } } \ No newline at end of file diff --git a/src/renderer/rendererRegistry.ts b/src/renderer/rendererRegistry.ts index 016e24b..f853c8b 100644 --- a/src/renderer/rendererRegistry.ts +++ b/src/renderer/rendererRegistry.ts @@ -7,7 +7,7 @@ export interface DataFormat { } export interface RendererContext { - cellParser: ModernCellParser, + cellParser?: ModernCellParser, sourcePath: string } diff --git a/src/utils/csvConfig.ts b/src/utils/csvConfig.ts index 9c347b4..dc5a014 100644 --- a/src/utils/csvConfig.ts +++ b/src/utils/csvConfig.ts @@ -2,7 +2,8 @@ import { TFile, Vault } from "obsidian" import { parse as jsonParse, stringify as jsonStringify } from 'json5' -export type ColumnType = 'auto' | 'number' | 'text' +// export type ColumnType = 'auto' | 'number' | 'text' +export type ColumnType = string interface ColumnDefinition { type: ColumnType @@ -17,7 +18,6 @@ export const loadConfig = async (file: TFile, vault: Vault): Promise) { this.result.data[parseInt(newRowData.__index, 10)] = newRowData; - this.saveData() + this.saveData(true) } deleteRow(idx: number) { @@ -107,6 +107,7 @@ export class CSVView extends TextFileView { return d }) this.saveData() + this.loadDataIntoGrid() } setIsEditable(newValue: boolean) { @@ -114,9 +115,25 @@ export class CSVView extends TextFileView { // FIXME: if there already rendered view, use this to rerender it? } - saveData() { - const output = unparse(this.result) + saveData(noRefresh: boolean = false) { + if (noRefresh) { + this.refreshSkip = Date.now() + 500 + } + + // Map results + const res = [...this.result.data].map(r => { + const r2 = {...r} + Object.keys(r).forEach(k => { + if (typeof r[k] === 'boolean') { + r2[k] = r[k] ? 1 : 0 + } + }) + return r2 + }) + + const output = unparse({ ...this.result, data: res }) this.app.vault.modify(this.file!, output) + this.refreshTypes() } createRow() { @@ -139,10 +156,6 @@ export class CSVView extends TextFileView { type: type } await this.saveConfig() - - // We need to touch original file to reload the data - probably we should make it in a nicer way - this.saveData() - } async loadConfig() { @@ -156,6 +169,39 @@ export class CSVView extends TextFileView { await saveConfig(this.file!, this.config, this.app.vault) } + private getColumnConfigurations(columns: string[]) { + return columns.map(f => { + if (!this.config) { + return { + field: f + } + } + const def = this.config.columnDefinitions[f]?.type + if (!def || def === 'auto') { + return { field: f } + } + if (def === 'date') { + return { + field: f, + cellDataType: 'dateString' + } + } + return { + field: f, + cellDataType: def + } + }) + } + + refreshTypes() { + if (this.gridCommunicator) { + const columns = this.result.fields + if (columns && columns.length) { + this.gridCommunicator.gridApi.setGridOption('columnDefs', this.getColumnConfigurations(columns)) + } + } + } + moveColumn(name: string, toIndex: number) { let fields = this.result.fields as Array fields = fields.filter(f => f !== name) @@ -169,42 +215,82 @@ export class CSVView extends TextFileView { } api: any = null; + gridCommunicator: GridRendererCommunicator | null = null + refreshSkip: number = 0 + + formatWithTypes(d: Record) { + Object.entries(this.config.columnDefinitions).forEach(([key, value]) => { + if (!d[key]) { + return + } + if (value.type === 'boolean') { + if (d[key] === 'false' || d[key] === '0') { + d[key] = false + } + d[key] = !!d[key] + } + if (value.type === 'number') { + if (d[key] === null || d[key] === '') { + d[key] = '' + } else { + d[key] = parseInt(d[key] as string, 10) + } + } + if (value.type === 'date') { + // try parsing + const val = d[key] as string + const date = new Date(val) + d[key] = date.toISOString().split('T')[0] + } + }) + return d + } + + prepareData() { + const result = parse(this.content, { + header: true, + skipEmptyLines: true, + }); + const data = result.data.map((d: any, i) => ({ + ...this.formatWithTypes(d), + __index: i.toString() + })) + return { + data: data, + fields: result.meta.fields + } + } loadDataIntoGrid() { + if (this.refreshSkip > Date.now()) { + return + } requestAnimationFrame(() => { - const result = parse(this.content, { - header: true, - skipEmptyLines: true, - }); - const data = result.data.map((d: any, i) => ({ - ...d, - __index: i.toString() - })) - this.result = { - data: data, - fields: result.meta.fields - } - - - this.api!.render({ - data: data, - columns: result.meta.fields - }) - + const result = this.prepareData() + this.result = result + this.refreshTypes() + this.api!.render(result) }) + } + isLoading: boolean = false + private async renderCSV() { - if (this.api) { - this.loadDataIntoGrid() + if (this.isLoading) { + if (this.api) { + this.loadDataIntoGrid() + } return } + this.isLoading = true this.contentEl.empty() const csvEditorDiv = this.contentEl.createDiv({ cls: 'sql-seal-csv-editor' }) const buttonsRow = csvEditorDiv.createDiv({ cls: 'sql-seal-csv-viewer-buttons' }) + await this.loadConfig() if (this.enableEditing) { const createColumn = buttonsRow.createEl('button', { text: 'Add Column' }) const createRow = buttonsRow.createEl('button', { text: 'Add Row' }) @@ -235,16 +321,14 @@ export class CSVView extends TextFileView { modal.open() }) - const grid = new GridRenderer(this.app, null) const csvView = this; + const data = this.prepareData() + this.result = data const api = grid.render({ + columnDefs: this.getColumnConfigurations(data.fields ?? []), defaultColDef: { editable: this.enableEditing, - valueSetter: (e) => { - e.data[e.column.getUserProvidedColDef()?.headerName!] = e.newValue - return e.newValue - }, headerComponentParams: { enableMenu: this.enableEditing, showColumnMenu: function (e: any) { @@ -255,7 +339,7 @@ export class CSVView extends TextFileView { item.onClick(() => { const modal = new RenameColumnModal(csvView.app, (res) => { csvView.renameColumn( - this.column.userProvidedColDef.headerName, res) + this.column.userProvidedColDef.field, res) }) modal.open() }) @@ -264,7 +348,7 @@ export class CSVView extends TextFileView { menu.addItem(item => { item.setTitle('Delete Column') item.onClick(() => { - const colName = this.column.userProvidedColDef.headerName + const colName = this.column.userProvidedColDef.field const modal = new DeleteConfirmationModal(csvView.app, `column ${colName}`, () => { csvView.deleteColumn(colName) }) @@ -272,27 +356,34 @@ export class CSVView extends TextFileView { }) }) + // FIXME: rework it to submenus. menu.addSeparator() menu.addItem(item => { - item.setDisabled(true) + // item.setDisabled(true) item.setTitle('Data Type') - }) + // item.setIsLabel(true) + const ipfSubmenu = (item as any).setSubmenu(); + const types = ['auto', 'text', 'number', 'boolean', 'date'] as ColumnType[] - const current = csvView.getColumnType(this.column.colId) - const types = ['auto', 'text', 'number'] as ColumnType[] - types.forEach(type => { - menu.addItem(item => { - const checkbox = type === current ? '✔️ ' : '' - item.setTitle(checkbox + type) - item.onClick(() => { - csvView.changeColumnType(this.column.colId, type) + const colName = this.column.userProvidedColDef.field + + const current = csvView.getColumnType(colName) + types.forEach(type => { + ipfSubmenu.addItem((subItem: MenuItem) => { + const checkbox = type === current ? '✓ ' : '' + subItem.setTitle(checkbox + type) + subItem.onClick(() => { + csvView.changeColumnType(colName, type) + csvView.refreshTypes() + csvView.loadDataIntoGrid() + }) }) }) }) - + const pos = e.getBoundingClientRect(); menu.showAtPosition({ x: pos.x, y: pos.y + 20 }) } @@ -310,7 +401,7 @@ export class CSVView extends TextFileView { if (!columnName) { return } - csvView.moveColumn(columnName?.headerName!, e.toIndex!) + csvView.moveColumn(columnName?.field!, e.toIndex!) }, domLayout: 'normal', getRowId: (p) => p.data.__index, @@ -336,10 +427,9 @@ export class CSVView extends TextFileView { }) menu.showAtMouseEvent(e.event as any) } - }, gridEl, { cellParser: this.cellParser, sourcePath: this.file?.path || '' }) - + }, gridEl, { sourcePath: this.file?.path || '' }) this.api = api; - await this.loadConfig() - this.loadDataIntoGrid() + this.gridCommunicator = api.communicator + api.render(data) } } \ No newline at end of file diff --git a/styles.css b/styles.css index 6eaf31a..86fbd52 100644 --- a/styles.css +++ b/styles.css @@ -295,4 +295,10 @@ .markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>:has(>.block-language-sqlseal table.dataview) { width: var(--container-dataview-table-width); max-width: var(--container-table-max-width); +} + + +/* AG GRID CUSTOMS */ +.ag-checkbox-input { + opacity: 1 !important; } \ No newline at end of file From b6c9f6a5134d71050672c2d3253a4c17946ab0dd Mon Sep 17 00:00:00 2001 From: Kacper Kula Date: Fri, 16 May 2025 23:29:55 +0100 Subject: [PATCH 5/9] chore: typecheck update --- src/renderer/ListRenderer.ts | 2 +- src/renderer/MarkdownRenderer.ts | 3 +-- src/renderer/TableRenderer.ts | 3 +-- src/renderer/TemplateRenderer.ts | 2 +- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/renderer/ListRenderer.ts b/src/renderer/ListRenderer.ts index 8db8067..4c72949 100644 --- a/src/renderer/ListRenderer.ts +++ b/src/renderer/ListRenderer.ts @@ -57,7 +57,7 @@ export class ListRenderer implements RendererConfig { text: createEl('span', { text: c, cls: 'sqlseal-column-name' }) as any, // FIXME: this should be properly typed cls: singleCol ? ['sqlseal-list-element', 'sqlseal-list-element-single'] : ['sqlseal-list-element-single'] }) - const val: any = cellParser.render(d[c]) + const val: any = cellParser!.render(d[c]) el.append(val) el.dataset.sqlsealColumn = c }) diff --git a/src/renderer/MarkdownRenderer.ts b/src/renderer/MarkdownRenderer.ts index a0bccb0..725a9c1 100644 --- a/src/renderer/MarkdownRenderer.ts +++ b/src/renderer/MarkdownRenderer.ts @@ -5,7 +5,6 @@ import { RendererConfig, RendererContext } from "../renderer/rendererRegistry"; import { displayError } from "../utils/ui"; import { ViewDefinition } from "../grammar/parser"; import { ParseResults } from "../cellParser/parseResults"; -import { ModernCellParser } from "../cellParser/ModernCellParser"; const mapDataFromHeaders = (columns: string[], data: Record[]) => { return data.map(d => columns.map(c => String(d[c]))) @@ -31,7 +30,7 @@ export class MarkdownRenderer implements RendererConfig { } render(config: ReturnType, el: HTMLElement, { cellParser } : RendererContext) { - const parseResult = new ParseResults(cellParser) + const parseResult = new ParseResults(cellParser!) return { render: ({ columns, data }: any) => { const tab = getMarkdownTable({ diff --git a/src/renderer/TableRenderer.ts b/src/renderer/TableRenderer.ts index 992e931..05eb9c4 100644 --- a/src/renderer/TableRenderer.ts +++ b/src/renderer/TableRenderer.ts @@ -3,7 +3,6 @@ import { App } from "obsidian"; import { RendererConfig, RendererContext } from "../renderer/rendererRegistry"; import { displayError } from "../utils/ui"; import { ViewDefinition } from "../grammar/parser"; -import { ModernCellParser } from "../cellParser/ModernCellParser"; interface HTMLRendererConfig { classNames: string[] @@ -73,7 +72,7 @@ export class TableRenderer implements RendererConfig { data.forEach((d: any) => { const row = body.createEl("tr") columns.forEach((c: any) => { - const parsed = cellParser.render(d[c]) as string + const parsed = cellParser!.render(d[c]) as string if (adjustLayout) { const td = row.createEl("td") td.createSpan({ text: parsed }) diff --git a/src/renderer/TemplateRenderer.ts b/src/renderer/TemplateRenderer.ts index 70286fd..157b1ef 100644 --- a/src/renderer/TemplateRenderer.ts +++ b/src/renderer/TemplateRenderer.ts @@ -42,7 +42,7 @@ export class TemplateRenderer implements RendererConfig { render: ({ columns, data, frontmatter }: any) => { el.empty() - const parser = new ParseResults(cellParser, (el) => new Handlebars.SafeString(el.outerHTML)) + const parser = new ParseResults(cellParser!, (el) => new Handlebars.SafeString(el.outerHTML)) // Seems to be the only way to render handlebars into DOM. Don't like it but what can we do. el.innerHTML = config.template({ From 64354edaec33638e6593fc3990b6ff659a9bb8b9 Mon Sep 17 00:00:00 2001 From: Kacper Kula Date: Fri, 16 May 2025 23:41:18 +0100 Subject: [PATCH 6/9] chore: fixing docs --- docs/define-column-types.md | 6 ++++-- docs/setting-column-type.png | Bin 85947 -> 58941 bytes src/view/CSVView.ts | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/define-column-types.md b/docs/define-column-types.md index 39e5eba..beb3cfc 100644 --- a/docs/define-column-types.md +++ b/docs/define-column-types.md @@ -1,5 +1,7 @@ -# Define Column Types +# Define Column Types (CSV files) -SQLSeal sets types of your data automatically. This is the mechanism which for most of the cases works perfectly, but for more advanced use-cases, you might want to force specific type of the column (for example you might have ids which you want to treat like text, even if they consist of just the numbers). To enforce the specific type, you can set individual types inside the CSV Viewer: +SQLSeal sets types of your data automatically. This is the mechanism which for most of the cases works perfectly, but for more advanced use-cases, you might want to force specific type of the column (for example you might have ids which you want to treat like text, even if they consist of just the numbers). To enforce a specific type, you can set individual types inside the CSV Viewer: ![Setting Column Type](./setting-column-type.png) + +Changing data type enables corresponding controls. \ No newline at end of file diff --git a/docs/setting-column-type.png b/docs/setting-column-type.png index 5d678705b1eec4308b6fe8128cdd5a3ddf9a261c..1b632a3e85cc78686fa0a96ca3a0d79401804022 100644 GIT binary patch literal 58941 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�HY2#nGt|y_r7By?{#b}%FOpoXdcD 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 Date: Thu, 22 May 2025 14:40:12 +0100 Subject: [PATCH 7/9] chore: added changelog --- .changeset/cold-groups-search.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/cold-groups-search.md diff --git a/.changeset/cold-groups-search.md b/.changeset/cold-groups-search.md new file mode 100644 index 0000000..079d964 --- /dev/null +++ b/.changeset/cold-groups-search.md @@ -0,0 +1,5 @@ +--- +"sqlseal": minor +--- + +added ability to manually define column types From 6d0af3aa95923f26d78244a2b0829bb47ca20720 Mon Sep 17 00:00:00 2001 From: Kacper Kula Date: Thu, 22 May 2025 14:44:25 +0100 Subject: [PATCH 8/9] chore: enabling setting up github user --- .github/workflows/release.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1ed31e5..5232c20 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -39,6 +39,5 @@ jobs: title: "Release: $VERSION" commit: "release: Release $VERSION" createGithubReleases: false # this is handled inside ci:publish script - setupGitUser: false # this is handled inside ci:publish script env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From 1c5c1a66b7b0f6abee5adeaf47ae2b7a1bd8f6a3 Mon Sep 17 00:00:00 2001 From: Kacper Kula Date: Thu, 22 May 2025 14:49:45 +0100 Subject: [PATCH 9/9] fixing changelog format --- .github/workflows/release.yml | 4 +- CHANGELOG.md | 128 +++++++++++++++++----------------- 2 files changed, 67 insertions(+), 65 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5232c20..0ae672f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -36,8 +36,8 @@ jobs: with: publish: pnpm run ci:publish version: pnpm run ci:version - title: "Release: $VERSION" - commit: "release: Release $VERSION" + title: "[Release] Next Release" + commit: "automated release" createGithubReleases: false # this is handled inside ci:publish script env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 6cd74d3..40c5fd1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,22 +1,24 @@ -# 0.36.0 (2025-05-06) +# Releases + +## 0.36.0 (2025-05-06) - fix: deleting columns and renaming columns works again - chore: updated dependencies to the latest versions -# 0.35.0 (2025-05-02) +## 0.35.0 (2025-05-02) - fix: fixed issue with CSV files edits not being saved -# 0.34.0 (2025-04-30) +## 0.34.0 (2025-04-30) - feat: you can now navigate to linked CSV and JSON file sources - feat: improved support for minimal theme custom classes -# 0.33.0 (2025-04-09) +## 0.33.0 (2025-04-09) - fix: better text links for images (by @satkowski) - fix: lists are now rendered properly (by @satkowski) - chore: exposing filename in the renderer (by @satkowski) - fix: numbers are now properly handled (by @satkowski) - fix: SQLSeal results are now properly rendered on canvas -# 0.32.0 (2025-04-02) +## 0.32.0 (2025-04-02) - feat: added text rendering for links, images and checkboxes (for MARKDOWN renderer) - fix: fixed issue with rendering numbers - fix: fixed how grid renders columns - now they automatically match content and don't truncate the text @@ -24,35 +26,35 @@ - fix: columns with dots in the name render properly in grid view - chore: now external plugins can use cellRenderer from the main plugin -# 0.31.0 (2025-03-31) +## 0.31.0 (2025-03-31) - feat: TEMPLATE renderer can now use checkboxes, links and images like other views. -# 0.30.1 (2025-03-27) +## 0.30.1 (2025-03-27) - feat: added basename and parent SQL variables -# 0.30.0 (2025-03-26) +## 0.30.0 (2025-03-26) - feat: added ability to reference tables from the other files in `table()` functions - feat: added ability to reference tables by their header name - feat: new heading and heading_level columns in tasks table (by @kDCYorke) -# 0.29.0 (2025-03-19) +## 0.29.0 (2025-03-19) - feat: LIST views with single column are rendered as a regular list (rather than nested one) (by @kDCYorke) - feat: files table now contains tags column with tags defined directly in properties (by @sksizer) - feat: frontmatter links are now exposed in links table (by @kDCYorke) - feat: added checkbox field to tasks which adds **interactive** checkbox so you can mark tasks as completed directly from the SQLSeal -# 0.28.4 (2025-03-15) +## 0.28.4 (2025-03-15) - Feat: Template view can now access file properties -# 0.28.3 (2025-03-15) +## 0.28.3 (2025-03-15) - Fix: Filename field in files column no longer truncates name after dot -# 0.28.2 (2025-03-14) +## 0.28.2 (2025-03-14) - Added ability to define default view (Grid, HTML or Markdown) - Added ability to configure default page size for the GRID view -# 0.28.1 (2025-03-14) +## 0.28.1 (2025-03-14) - Adding syntax highlighting for javascript (to be used with GRAPH view) -# 0.28.0 (2025-03-14) +## 0.28.0 (2025-03-14) - Added TEMPLATE view that allow to render your template with custom Handlebars template. - Improved syntax highlighting - now lines with errors will get highlighted with appropriate colour to indicate the issue - Added @path, @fileName and @extension variables you can use inside your SQL alongside other Frontmatter properties @@ -63,16 +65,16 @@ Fixes: Technical: - Other plugins can now register flags to allow for extra configuration -# 0.27.0 (2025-02-17) +## 0.27.0 (2025-02-17) - Better syntax highlighting! Now it highlights SQL query parts - Support for comments. You can now add comments like `--` and `/* */` to you queries -# 0.26.0 (2025-02-16) +## 0.26.0 (2025-02-16) - Better language parser! Reworked from the ground up, now SQLSeal uses Ohm.js parser which works much better and opens much more possibilities (like syntax highlighting also introduced in this version). - Syntax highlighting! Your SQLSeal text is now being highlighted helping you spot potential syntax issues quickly. The highlighting will be iterated on so please join discussion on our Discord! - fix: database did not load properly when vault name consisted spaces or was in the subfolder (mostly causing issue on mobile) -# 0.25.0 (2025-02-06) +## 0.25.0 (2025-02-06) - feat: you can now generate list of links - feat: lists are now properly rendered - feat: ability to edit column names in CSV files @@ -80,125 +82,125 @@ Technical: - fix: empty links no longer generate errors - fix: fixed how lists behave when you refresh the file -# 0.24.2 (2025-02-05) +## 0.24.2 (2025-02-05) - Fixed how links are displayed. Now you can use links as `a(href)` or `a(href, name)`. -# 0.24.1 (2025-02-05) +## 0.24.1 (2025-02-05) - Added `path` columns to `tags` and `tasks` tables. Thanks to that you can use `NATURAL JOIN`s now to connect join them. -# 0.24.0 (2025-02-05) +## 0.24.0 (2025-02-05) - Better column names! Now non-latin characters are being romanised so you can access your properties (and other column names) easier: geändert becomes geandert, 类别 becomes lei_bie, ノートタイプ becomes nototaipu, etc. -# 0.23.2 (2025-02-04) +## 0.23.2 (2025-02-04) - No longer captalising renderer options (it was breaking SQLSeal Charts integration) -# 0.23.1 (2025-02-04) +## 0.23.1 (2025-02-04) - SQLSeal now works with multiple vaults open. It registers database with unique filename to avoid conflicts. -# 0.23.0 (2025-02-04) +## 0.23.0 (2025-02-04) - Added support for wikilinks in the `a` function. You can now use markdown links in your queries. - Improved how links are being rendered. Now using native links with the preview on hover -# 0.22.3 (2025-02-04) +## 0.22.3 (2025-02-04) - Ability to enable / disable query refreshing individually for each query (REFRESH / NO REFRESH statement) - (Advanced) Added ability to show SQL execution plan for the query -# 0.22.2 (2025-02-01) +## 0.22.2 (2025-02-01) - Added index to tags.tag which was missed in the last release -# 0.22.1 (2025-02-01) +## 0.22.1 (2025-02-01) - Added indexes to the `files`, `tags`, `links` and `tasks` tables. This should speed up a lot of common queries performed agains these tables. -# 0.22.0 (2025-01-31) +## 0.22.0 (2025-01-31) Breaking change: `created_at` and `modified_at` has been changed from JS unix epoch to ISO 8601 dates (human readable). Thanks to that many of date operations are now easier to perform. Example, extracting year from the creation date: Before: `strftime("%Y", datetime(ROUND(created_at / 1000), 'unixepoch'))` Now: `strftime("%Y", created_at)` -# 0.21.3 (2025-01-31) +## 0.21.3 (2025-01-31) - fix: fixed issue with inline queries breaking rendering -# 0.21.2 (2025-01-30) +## 0.21.2 (2025-01-30) - feat: now dynamic refreshing of the views can be disabled in the settings -# 0.21.1 (2025-01-30) +## 0.21.1 (2025-01-30) - feat: ability to register new tables from other plugins -# 0.21.0 (2025-01-30) +## 0.21.0 (2025-01-30) - feat: other plugins can now register custom database functions - feat: improved API for other plugins - chore: added subproject to release types for other plugins to use. See [`@hypersphere/sqlseal` package in NPM](https://www.npmjs.com/package/@hypersphere/sqlseal) for more info. -# 0.20.0 (2025-01-28) +## 0.20.0 (2025-01-28) Added `links` table containing all the references between files. [Read more about the file structure in our documentation](https://hypersphere.blog/sql-seal/data-sources/vault-data.html#links-table) -# 0.19.2 (2025-01-27) +## 0.19.2 (2025-01-27) Fixed issue with files and folders containing dots in them. -# 0.19.1 (2025-01-27) +## 0.19.1 (2025-01-27) Added logging for unprocessable data to help reporting. -# 0.19.0 (2025-01-24) +## 0.19.0 (2025-01-24) Adding support for JSON and JSON5 files. You can now query these data types and create tables based on them. You can use JSONPath to traverse the JSON files and extract data from it. [See more in the documentation](http://hypersphere.blog/sql-seal/data-sources/json-and-json5.html). Added support for viewing JSON files. For now it is very simple preview with plans to expand in the future. You can disable this preview in the settings. -# 0.18.1 (2025-01-23) +## 0.18.1 (2025-01-23) Adding created_at, modified_at and file_size field to files table. Also added documentation and fixed issue with files not refreshing already visible views. -# 0.18.0 (2025-01-23) +## 0.18.0 (2025-01-23) Synchronisation code has been greatly refactored. Thanks to that many common issue with files not being refreshed or pointing to the wrong file occasionally should be fixed. Also fixed many instances of potential memory leaks. Now plugin should be more stable and reliable. -# 0.17.0 (2025-01-20) +## 0.17.0 (2025-01-20) Adding support for `LIST` view. You can now set custom classes for `HTML` (table) view. -# 0.16.1 (2025-01-17) +## 0.16.1 (2025-01-17) Fixed issue with variables causing error. Now you can pass variables from your frontmatter with no problem. -# 0.16.0 (2025-01-16) +## 0.16.0 (2025-01-16) Now you can query tables in your note and use them as data source! [Check more information in the documentation](http://hypersphere.blog/sql-seal/query-markdown-tables.html). -# 0.15.0 (2025-01-15) +## 0.15.0 (2025-01-15) This version brings plenty of the bugfixes - fix: fix issue with local links not being clickable - fix: query is now less case sensitive. You can use keywords like `TABLE`, `HTML`, `MARKDOWN` in any casing you want - fix: improved SQL parser - now more complex syntax like recursive CTE, window functions, etc. should work properly. Migrated from `node-sql-parser` to `sql-parser-cst` - fix: codeblocks now observe only the tables that are relevant to them instead of all. This should fix some tables refresh too often -# 0.14.1 (2025-01-13) +## 0.14.1 (2025-01-13) - fix: fixed the issue where rows with extra data in them (rows with more columns that a header) were not synchronised correctly - fix: fixed the issue where queries with lowercase SELECT would not work in certain cases. -# 0.14.0 (2025-01-10) +## 0.14.0 (2025-01-10) Added support for inline code blocks. Create a codeblock (backtick `) and use prefix S> to indicate it's SQLSeal query. -# 0.13.0 (2025-01-09) +## 0.13.0 (2025-01-09) Huge upgrade to the code codebase. SQLSeal should be now much faster and more reliable thanks to the following: - Rewritten how files are synched - now each CSV file creates AT MOST one table in the database (synchronisations are being reused accross files) - Rewritten SQL parser - this enables using more advanced SQLite functionality like recursive CTEs, UNIONS and `json_each`! - (minor, technical): code got restructured and fixed so it's easier to contribute. -# 0.12.4 (2025-01-09) +## 0.12.4 (2025-01-09) - added "Create CSV file" option in context menu in file explorer. -# 0.12.3 (2024-12-20) +## 0.12.3 (2024-12-20) - fix: Fixing completed flag in tasks being reversed -# 0.12.2 (2024-12-20) +## 0.12.2 (2024-12-20) fix: Fixed issue with CTE table names being incorrectly processed causing error -# 0.12.1 (2024-12-20) +## 0.12.1 (2024-12-20) fix: Fixed issue with the library on mobile - now it should load properly. -# 0.12.0 (2024-12-19) +## 0.12.0 (2024-12-19) This update does not bring any functionality changes yet but it fixes some problems with underlying architecture, helping to make SQLSeal more efficient in the future. If you work with many datasets, you might see slightly smaller memory usage as the database is now persisted in the IndexedDb (tech comment: as block storage). Technical update: Database has been moved to WebWorker, making data loading and retrieval slightly more efficient. Also integrated with [Absurd-SQL](https://github.com/jlongster/absurd-sql) which allows to store SQLite inside IndexedDb block storage, meaning it can be persisted and offloaded from the memory. Due to Obsidian API limitations, we still need to load huge files CSV to the memory instead of streaming their content but once the content is loaded, the memory usage should significantly go down now. More changes using this update to come soon! -# 0.11.0 (2024-11-24) +## 0.11.0 (2024-11-24) The biggest update yet with plenty of exciting features: Added CSV Viewer! Now you can see all your CSV files in your vault in the file explorer and open it to preview the data. You can also edit the data in place (remember always to backup your files!) @@ -208,7 +210,7 @@ Now the files in the queries are resolved relatively to the file they are in. Yo Added more lax parser implementation for now Minor: updated dependencies to the latest versions -# 0.10.1 (2024-11-07) +## 0.10.1 (2024-11-07) Many small fixes: - Changed how parsing is done to simplify code greatly - Grid now supports dark mode @@ -216,48 +218,48 @@ Many small fixes: - Restored ability to have `TABLE` syntax without select. -# 0.10.0 (2024-11-06) +## 0.10.0 (2024-11-06) SQLSeal is now compatible with mobile! Plugin now uses SQL.JS instead of better-sqlite3 which is written in Web Assembly so no longer native binaries are needed. This makes plugin portable. Also reworked implementation of the parser from Antlr4TS into Antlr4. -# 0.9.2 (2024-11-03) +## 0.9.2 (2024-11-03) Adding checkbox method to display boolean values as checkboxes Fixing how updates are parsed -# 0.9.1 (2024-11-03) +## 0.9.1 (2024-11-03) Turning off verbose mode -# 0.9.0 (2024-11-03) +## 0.9.0 (2024-11-03) We now use proper grid library to render data. This allow for many great features like pagination, sorting and more visally pleasing UI out of the box. Rewritten internal communication to use Signals. -# 0.8.0 (2024-09-05) +## 0.8.0 (2024-09-05) Now you can embed links and images (both local and external). Introduced `a` and `img` custom SQL functions. -# 0.7.0 (2024-09-02) +## 0.7.0 (2024-09-02) A lot of changes packed in this one! Now SQLSeal is parsing the input using proper language parser (thanks to ANTLR4) rather than relying on RegExes. This finally allows for proper support of CTE statements (WITH) and fixes a lot of other minor problems with the syntax. Also improved the way files are being observed and updated which should lead to performance improvements. -# 0.6.0 (2024-09-01) +## 0.6.0 (2024-09-01) - fixing CSV loading when names has been converted to camelCase - Fixing constantly reloading files when modifying sql inside the same block that has table declaration in - Auto-parsing JSON values with JSON5 - Better errors when error occurs in select statement -# 0.5.0 (2024-08-25) +## 0.5.0 (2024-08-25) - Adding support for JSON objects! Automatically detecting JSON in the frontmatter and converting it to JSON type in SQLite. You can query fields using built-in SQLite functions like `json_extract`, `json_array_length`, etc. More about SQlite functionality [can be found here.](https://www.sqlite.org/json1.html). - Fixed issue with bookean types not being saved properly. -# 0.4.1 (2024-08-25) +## 0.4.1 (2024-08-25) - Fixed issue with potential duplicate column sql error when two different fields resolve to the same uppercase structure -# 0.4.0 (2024-08-23) +## 0.4.0 (2024-08-23) - Fixed issue with better_sqlite3 not loading on different systems and architectures -# 0.3.0 (2024-08-23) +## 0.3.0 (2024-08-23) - Added ability to query files in the fault directly. - Added observability - when CSV or file in the vault is changed, all SELECTS that uses it should update too - Added custom class to sqlseal tables and ability to scroll vertically when the data is overflowing horizontally. -# 0.1.0 (2024-06-23) +## 0.1.0 (2024-06-23) - Initial release. Allows to create tables based on CSV files in your vault and query them using SQL.