bump to 1.6.5

This commit is contained in:
Chentao Yang 2026-06-23 23:00:06 +02:00
parent f0b8c405d9
commit 5a8a72c0bc
9 changed files with 152 additions and 143 deletions

View file

@ -8,7 +8,8 @@ export default tseslint.config(
"main.js",
"rollup.config.js",
"node_modules/**",
"dist/**"
"dist/**",
"test/**"
],
},
@ -20,12 +21,12 @@ export default tseslint.config(
],
languageOptions: {
parserOptions: {
projectService: true,
project: "./tsconfig.json",
tsconfigRootDir: import.meta.dirname,
},
},
rules: {
"@typescript-eslint/no-explicit-any": "warn"
"@typescript-eslint/no-explicit-any": "warn",
},
}
);
);

View file

@ -2,9 +2,9 @@
"id": "things-toolkit",
"name": "Things Toolkit",
"description": "Sync Things3 completions into daily notes with review stats and privacy-aware macOS access.",
"version": "1.6.4",
"version": "1.6.5",
"author": "yangcht",
"authorUrl": "https://github.com/yangcht",
"isDesktopOnly": false,
"minAppVersion": "1.13.1"
}
}

95
package-lock.json generated
View file

@ -1,34 +1,34 @@
{
"name": "obsidian-things-toolkit-plugin",
"version": "1.6.4",
"version": "1.6.5",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "obsidian-things-toolkit-plugin",
"version": "1.6.4",
"version": "1.6.5",
"license": "MIT",
"dependencies": {
"@obsidian-typings/obsidian-public-latest": "6.16.0",
"obsidian": "1.13.1",
"obsidian-daily-notes-interface": "0.9.2",
"papaparse": "5.3.1",
"tslib": "2.2.0"
},
"devDependencies": {
"@eslint/js": "^10.0.1",
"@obsidian-typings/obsidian-public-latest": "^6.16.0",
"@eslint/js": "10.0.1",
"@rollup/plugin-commonjs": "^29.0.3",
"@rollup/plugin-node-resolve": "^16.0.3",
"@rollup/plugin-typescript": "^12.3.0",
"@types/node": "latest",
"@types/node": "24.10.1",
"@types/papaparse": "5.3.1",
"@typescript-eslint/eslint-plugin": "latest",
"@typescript-eslint/parser": "latest",
"eslint": "latest",
"obsidian": "1.13.1",
"@typescript-eslint/eslint-plugin": "8.61.0",
"@typescript-eslint/parser": "8.61.0",
"eslint": "10.0.0",
"rollup": "^4.62.0",
"tsx": "4.22.4",
"typescript": "latest",
"typescript-eslint": "^8.61.0"
"typescript": "5.9.3",
"typescript-eslint": "8.61.0"
}
},
"node_modules/@codemirror/state": {
@ -541,9 +541,9 @@
}
},
"node_modules/@eslint/config-helpers": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.6.0.tgz",
"integrity": "sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==",
"version": "0.5.5",
"resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.5.tgz",
"integrity": "sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@ -598,13 +598,13 @@
}
},
"node_modules/@eslint/plugin-kit": {
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.2.tgz",
"integrity": "sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==",
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.6.1.tgz",
"integrity": "sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@eslint/core": "^1.2.1",
"@eslint/core": "^1.1.1",
"levn": "^0.4.1"
},
"engines": {
@ -695,20 +695,18 @@
"version": "6.20.0",
"resolved": "https://registry.npmjs.org/@obsidian-typings/obsidian-public-1.12.7/-/obsidian-public-1.12.7-6.20.0.tgz",
"integrity": "sha512-z5b7n7niCfkcg65+9D4MM333U1pgiVmJTbtU0jU3V62hcTHTSEqscyvOV6iISpdl4ecuOcssUGWljsBCBEzX9g==",
"dev": true,
"license": "MIT",
"peerDependencies": {
"@types/node": ">=16.0.0"
}
},
"node_modules/@obsidian-typings/obsidian-public-latest": {
"version": "6.18.0",
"resolved": "https://registry.npmjs.org/@obsidian-typings/obsidian-public-latest/-/obsidian-public-latest-6.18.0.tgz",
"integrity": "sha512-Vjvw1V5VccZQHurz5KlyrKNsQ5akOZZUSVKj1u1k7gt5+qhNBH/Zo5TPOr2Vv7KrqGgY9ckHG0SAOarhLMUMjg==",
"dev": true,
"version": "6.16.0",
"resolved": "https://registry.npmjs.org/@obsidian-typings/obsidian-public-latest/-/obsidian-public-latest-6.16.0.tgz",
"integrity": "sha512-Rd59GYcj1DejcdAu2OI6zT94Sb4eImVZiV5Mms1nfarpjB9b2GQ7eWAsuyGQ0WsiWUVL+7qhii/r9+mzSJCAZQ==",
"license": "MIT",
"dependencies": {
"@obsidian-typings/obsidian-public-1.12.7": "^6.20.0"
"@obsidian-typings/obsidian-public-1.12.7": "^6.18.0"
}
},
"node_modules/@rollup/plugin-commonjs": {
@ -1193,13 +1191,12 @@
"license": "MIT"
},
"node_modules/@types/node": {
"version": "25.9.3",
"resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.3.tgz",
"integrity": "sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg==",
"dev": true,
"version": "24.10.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz",
"integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==",
"license": "MIT",
"dependencies": {
"undici-types": ">=7.24.0 <7.24.7"
"undici-types": "~7.16.0"
}
},
"node_modules/@types/papaparse": {
@ -1654,32 +1651,29 @@
}
},
"node_modules/eslint": {
"version": "10.5.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-10.5.0.tgz",
"integrity": "sha512-1y+7C+vi12bUK1IpZeaV3gsH9fHLBmPvYmPx42pvT/E9yG0IC8g3PUZZgp0+JLJl7ZDK0flc2gc+Aw9dpCvIsQ==",
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-10.0.0.tgz",
"integrity": "sha512-O0piBKY36YSJhlFSG8p9VUdPV/SxxS4FYDWVpr/9GJuMaepzwlf4J8I4ov1b+ySQfDTPhc3DtLaxcT1fN0yqCg==",
"dev": true,
"license": "MIT",
"workspaces": [
"packages/*"
],
"dependencies": {
"@eslint-community/eslint-utils": "^4.8.0",
"@eslint-community/regexpp": "^4.12.2",
"@eslint/config-array": "^0.23.5",
"@eslint/config-helpers": "^0.6.0",
"@eslint/core": "^1.2.1",
"@eslint/plugin-kit": "^0.7.2",
"@eslint/config-array": "^0.23.0",
"@eslint/config-helpers": "^0.5.2",
"@eslint/core": "^1.1.0",
"@eslint/plugin-kit": "^0.6.0",
"@humanfs/node": "^0.16.6",
"@humanwhocodes/module-importer": "^1.0.1",
"@humanwhocodes/retry": "^0.4.2",
"@types/estree": "^1.0.6",
"ajv": "^6.14.0",
"ajv": "^6.12.4",
"cross-spawn": "^7.0.6",
"debug": "^4.3.2",
"escape-string-regexp": "^4.0.0",
"eslint-scope": "^9.1.2",
"eslint-visitor-keys": "^5.0.1",
"espree": "^11.2.0",
"eslint-scope": "^9.1.0",
"eslint-visitor-keys": "^5.0.0",
"espree": "^11.1.0",
"esquery": "^1.7.0",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
@ -1690,7 +1684,7 @@
"imurmurhash": "^0.1.4",
"is-glob": "^4.0.0",
"json-stable-stringify-without-jsonify": "^1.0.1",
"minimatch": "^10.2.4",
"minimatch": "^10.1.1",
"natural-compare": "^1.4.0",
"optionator": "^0.9.3"
},
@ -2526,9 +2520,9 @@
}
},
"node_modules/typescript": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz",
"integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==",
"version": "5.9.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@ -2564,10 +2558,9 @@
}
},
"node_modules/undici-types": {
"version": "7.24.6",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz",
"integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==",
"dev": true,
"version": "7.16.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
"integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
"license": "MIT"
},
"node_modules/uri-js": {

View file

@ -1,6 +1,6 @@
{
"name": "obsidian-things-toolkit-plugin",
"version": "1.6.4",
"version": "1.6.5",
"type": "module",
"description": "Sync Things3 completions into Obsidian daily notes with review stats",
"author": "yangcht",
@ -15,28 +15,28 @@
"build:nolint": "rollup -c",
"release:create": "npm run build && VERSION=$(node -p \"require('./manifest.json').version\") && gh release create \"$VERSION\" main.js manifest.json styles.css --title \"$VERSION\" --notes \"Release $VERSION\"",
"release:upload": "npm run build && VERSION=$(node -p \"require('./manifest.json').version\") && (gh release delete-asset \"$VERSION\" versions.json -y >/dev/null 2>&1 || true) && gh release upload \"$VERSION\" main.js manifest.json styles.css --clobber",
"test:watch": "yarn test -- --watch"
"test:watch": "npm test -- --watch"
},
"dependencies": {
"@obsidian-typings/obsidian-public-latest": "6.16.0",
"obsidian": "1.13.1",
"obsidian-daily-notes-interface": "0.9.2",
"papaparse": "5.3.1",
"tslib": "2.2.0"
},
"devDependencies": {
"@eslint/js": "^10.0.1",
"@obsidian-typings/obsidian-public-latest": "^6.16.0",
"@eslint/js": "10.0.1",
"@rollup/plugin-commonjs": "^29.0.3",
"@rollup/plugin-node-resolve": "^16.0.3",
"@rollup/plugin-typescript": "^12.3.0",
"@types/node": "latest",
"@types/node": "24.10.1",
"@types/papaparse": "5.3.1",
"@typescript-eslint/eslint-plugin": "latest",
"@typescript-eslint/parser": "latest",
"eslint": "latest",
"obsidian": "1.13.1",
"@typescript-eslint/eslint-plugin": "8.61.0",
"@typescript-eslint/parser": "8.61.0",
"eslint": "10.0.0",
"rollup": "^4.62.0",
"tsx": "4.22.4",
"typescript": "latest",
"typescript-eslint": "^8.61.0"
"typescript": "5.9.3",
"typescript-eslint": "8.61.0"
}
}

View file

@ -1,14 +1,10 @@
import { Platform } from "obsidian";
interface DesktopWindow extends Window {
require?: (moduleName: string) => unknown;
}
type ModuleRequire = (moduleName: string) => unknown;
declare const require:
| ModuleRequire
| undefined;
declare const require: ModuleRequire | undefined;
export interface ChildProcessLike {
on(event: "close" | "exit", listener: (code: number | null) => void): void;
@ -43,21 +39,19 @@ interface StreamLike {
}
function requireDesktopModule<T>(moduleName: string): T {
if (!Platform.isDesktopApp) {
throw new Error(`${moduleName} is only available in Obsidian desktop`);
}
const requireFns: ModuleRequire[] = [];
if (typeof require === "function") {
requireFns.push(require);
}
const windowRequire = (window as DesktopWindow).require;
if (typeof windowRequire === "function") {
requireFns.push(windowRequire.bind(window));
}
if (requireFns.length === 0) {
throw new Error("Obsidian desktop require API is unavailable");
throw new Error(`${moduleName} is only available in Obsidian desktop`);
}
let lastError: unknown;
@ -87,4 +81,4 @@ export function getOsModule(): OsModuleLike {
export function getPathModule(): PathModuleLike {
return requireDesktopModule<PathModuleLike>("path");
}
}

View file

@ -1,4 +1,4 @@
import Papa from "papaparse";
import { parse } from "papaparse";
import { getChildProcessModule } from "./nodeUtils";
@ -16,11 +16,13 @@ function chunkToString(chunk: unknown): string {
function parseCSV<T>(csv: string[]): T[] {
const lines = csv.join("");
return Papa.parse<T>(lines, {
const result = parse<T>(lines, {
dynamicTyping: false,
header: true,
skipEmptyLines: true,
}).data;
});
return result.data;
}
async function handleSqliteQuery(
@ -31,6 +33,7 @@ async function handleSqliteQuery(
const stdOut: string[] = [];
const stdErr: string[] = [];
let settled = false;
const finish = (result: ISpawnResults) => {
if (!settled) {
settled = true;
@ -48,6 +51,7 @@ async function handleSqliteQuery(
spawned.stdout.on("data", (chunk: unknown) => {
stdOut.push(chunkToString(chunk));
});
spawned.stderr.on("data", (chunk: unknown) => {
stdErr.push(chunkToString(chunk));
});
@ -55,8 +59,14 @@ async function handleSqliteQuery(
spawned.on("error", (err: Error) => {
stdErr.push(err.stack ?? err.message);
});
spawned.on("close", (code: number | null) => finish({ stdErr, stdOut, code }));
spawned.on("exit", (code: number | null) => finish({ stdErr, stdOut, code }));
spawned.on("close", (code: number | null) =>
finish({ stdErr, stdOut, code })
);
spawned.on("exit", (code: number | null) =>
finish({ stdErr, stdOut, code })
);
});
}
@ -65,9 +75,11 @@ export async function querySqliteDB<T>(
query: string
): Promise<T[]> {
const { stdOut, stdErr, code } = await handleSqliteQuery(dbPath, query);
if (stdErr.length || code !== 0) {
const error = stdErr.join("") || `sqlite3 exited with code ${String(code)}`;
throw new Error(error);
}
return parseCSV<T>(stdOut);
}
}

View file

@ -1,5 +1,5 @@
import type { App, TFile } from "obsidian";
import { Platform } from "obsidian";
import { getEditorForFile } from "./fileUtils";
export function getHeadingLevel(line = ""): number | null {
@ -7,7 +7,11 @@ export function getHeadingLevel(line = ""): number | null {
return heading ? heading[1].length : null;
}
export function toHeading(title: string, level: number, addEmptyLine: boolean): string {
export function toHeading(
title: string,
level: number,
addEmptyLine: boolean
): string {
const emptyLine = addEmptyLine ? "\n" : "";
const hash = "".padStart(level, "#");
return `${emptyLine}${hash} ${title}`;
@ -33,7 +37,7 @@ export function groupBy<T>(
}
export function isMacOS(): boolean {
return Platform.isMacOS;
return /Mac|iPhone|iPad|iPod/.test(navigator.platform);
}
export async function updateSection(
@ -76,6 +80,7 @@ export async function updateSection(
)
.join("\n")
.trimEnd();
if (currentSection === sectionContents.trimEnd()) {
return false;
}
@ -85,6 +90,7 @@ export async function updateSection(
nextSectionLineNum !== -1
? { line: nextSectionLineNum, ch: 0 }
: { line: fileLines.length, ch: 0 };
editor.replaceRange(`${sectionContents}\n`, from, to);
return true;
}
@ -110,7 +116,9 @@ export async function updateSection(
return false;
}
await vault.process(file, () => [...prefix, sectionContents, ...suffix].join("\n"));
await vault.process(file, () =>
[...prefix, sectionContents, ...suffix].join("\n")
);
return true;
}
@ -163,4 +171,4 @@ export function countThingsTasksInSection(
.split("\n")
.filter((line) => /^- \[[ xXcC]\] .*things:\/\/\/show\?id=/.test(line))
.length;
}
}

View file

@ -9,5 +9,6 @@
"1.6.1": "1.13.1",
"1.6.2": "1.13.1",
"1.6.3": "1.13.1",
"1.6.4": "1.13.1"
}
"1.6.4": "1.13.1",
"1.6.5": "1.13.1"
}

102
yarn.lock
View file

@ -36,7 +36,7 @@
resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz"
integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==
"@eslint/config-array@^0.23.5":
"@eslint/config-array@^0.23.0":
version "0.23.5"
resolved "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz"
integrity sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==
@ -45,21 +45,21 @@
debug "^4.3.1"
minimatch "^10.2.4"
"@eslint/config-helpers@^0.6.0":
version "0.6.0"
resolved "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.6.0.tgz"
integrity sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==
"@eslint/config-helpers@^0.5.2":
version "0.5.5"
resolved "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.5.tgz"
integrity sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w==
dependencies:
"@eslint/core" "^1.2.1"
"@eslint/core@^1.2.1":
"@eslint/core@^1.1.0", "@eslint/core@^1.1.1", "@eslint/core@^1.2.1":
version "1.2.1"
resolved "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz"
integrity sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==
dependencies:
"@types/json-schema" "^7.0.15"
"@eslint/js@^10.0.1":
"@eslint/js@10.0.1":
version "10.0.1"
resolved "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz"
integrity sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==
@ -69,12 +69,12 @@
resolved "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz"
integrity sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==
"@eslint/plugin-kit@^0.7.2":
version "0.7.2"
resolved "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.2.tgz"
integrity sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==
"@eslint/plugin-kit@^0.6.0":
version "0.6.1"
resolved "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.6.1.tgz"
integrity sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==
dependencies:
"@eslint/core" "^1.2.1"
"@eslint/core" "^1.1.1"
levn "^0.4.1"
"@humanfs/core@^0.19.2":
@ -118,17 +118,17 @@
resolved "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz"
integrity sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==
"@obsidian-typings/obsidian-public-1.12.7@^6.20.0":
"@obsidian-typings/obsidian-public-1.12.7@^6.18.0":
version "6.20.0"
resolved "https://registry.npmjs.org/@obsidian-typings/obsidian-public-1.12.7/-/obsidian-public-1.12.7-6.20.0.tgz"
integrity sha512-z5b7n7niCfkcg65+9D4MM333U1pgiVmJTbtU0jU3V62hcTHTSEqscyvOV6iISpdl4ecuOcssUGWljsBCBEzX9g==
"@obsidian-typings/obsidian-public-latest@^6.16.0":
version "6.18.0"
resolved "https://registry.npmjs.org/@obsidian-typings/obsidian-public-latest/-/obsidian-public-latest-6.18.0.tgz"
integrity sha512-Vjvw1V5VccZQHurz5KlyrKNsQ5akOZZUSVKj1u1k7gt5+qhNBH/Zo5TPOr2Vv7KrqGgY9ckHG0SAOarhLMUMjg==
"@obsidian-typings/obsidian-public-latest@6.16.0":
version "6.16.0"
resolved "https://registry.npmjs.org/@obsidian-typings/obsidian-public-latest/-/obsidian-public-latest-6.16.0.tgz"
integrity sha512-Rd59GYcj1DejcdAu2OI6zT94Sb4eImVZiV5Mms1nfarpjB9b2GQ7eWAsuyGQ0WsiWUVL+7qhii/r9+mzSJCAZQ==
dependencies:
"@obsidian-typings/obsidian-public-1.12.7" "^6.20.0"
"@obsidian-typings/obsidian-public-1.12.7" "^6.18.0"
"@rollup/plugin-commonjs@^29.0.3":
version "29.0.3"
@ -198,12 +198,12 @@
resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz"
integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
"@types/node@*", "@types/node@>=16.0.0", "@types/node@latest":
version "25.9.3"
resolved "https://registry.npmjs.org/@types/node/-/node-25.9.3.tgz"
integrity sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg==
"@types/node@*", "@types/node@>=16.0.0", "@types/node@24.10.1":
version "24.10.1"
resolved "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz"
integrity sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==
dependencies:
undici-types ">=7.24.0 <7.24.7"
undici-types "~7.16.0"
"@types/papaparse@5.3.1":
version "5.3.1"
@ -224,7 +224,7 @@
dependencies:
"@types/estree" "*"
"@typescript-eslint/eslint-plugin@8.61.0", "@typescript-eslint/eslint-plugin@latest":
"@typescript-eslint/eslint-plugin@8.61.0":
version "8.61.0"
resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.61.0.tgz"
integrity sha512-bFNvl9ZczlVb+wR2Akszf3gHfKVj/8WanXaGJ3UstTA7brNKg0cNdk6X1Psu5V7MZ2oQtzZKOEzIUehaoxbDGw==
@ -238,7 +238,7 @@
natural-compare "^1.4.0"
ts-api-utils "^2.5.0"
"@typescript-eslint/parser@^8.61.0", "@typescript-eslint/parser@8.61.0", "@typescript-eslint/parser@latest":
"@typescript-eslint/parser@^8.61.0", "@typescript-eslint/parser@8.61.0":
version "8.61.0"
resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.61.0.tgz"
integrity sha512-5B7PfA2e1NQGCnDHd/0lW7W3gvp3d59Ryw54FYO8Uswxo9f6ikw3AZV+Xj/TvpImmpsiYyUqAfhC6kJID1jF6w==
@ -330,7 +330,7 @@ acorn-jsx@^5.3.2:
resolved "https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz"
integrity sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==
ajv@^6.14.0:
ajv@^6.12.4:
version "6.15.0"
resolved "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz"
integrity sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==
@ -430,7 +430,7 @@ escape-string-regexp@^4.0.0:
resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
eslint-scope@^9.1.2:
eslint-scope@^9.1.0:
version "9.1.2"
resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz"
integrity sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==
@ -455,28 +455,28 @@ eslint-visitor-keys@^5.0.1:
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz"
integrity sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==
eslint@^10.0.0, "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^8.57.0 || ^9.0.0 || ^10.0.0", eslint@latest:
version "10.5.0"
resolved "https://registry.npmjs.org/eslint/-/eslint-10.5.0.tgz"
integrity sha512-1y+7C+vi12bUK1IpZeaV3gsH9fHLBmPvYmPx42pvT/E9yG0IC8g3PUZZgp0+JLJl7ZDK0flc2gc+Aw9dpCvIsQ==
eslint@^10.0.0, "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^8.57.0 || ^9.0.0 || ^10.0.0", eslint@10.0.0:
version "10.0.0"
resolved "https://registry.npmjs.org/eslint/-/eslint-10.0.0.tgz"
integrity sha512-O0piBKY36YSJhlFSG8p9VUdPV/SxxS4FYDWVpr/9GJuMaepzwlf4J8I4ov1b+ySQfDTPhc3DtLaxcT1fN0yqCg==
dependencies:
"@eslint-community/eslint-utils" "^4.8.0"
"@eslint-community/regexpp" "^4.12.2"
"@eslint/config-array" "^0.23.5"
"@eslint/config-helpers" "^0.6.0"
"@eslint/core" "^1.2.1"
"@eslint/plugin-kit" "^0.7.2"
"@eslint/config-array" "^0.23.0"
"@eslint/config-helpers" "^0.5.2"
"@eslint/core" "^1.1.0"
"@eslint/plugin-kit" "^0.6.0"
"@humanfs/node" "^0.16.6"
"@humanwhocodes/module-importer" "^1.0.1"
"@humanwhocodes/retry" "^0.4.2"
"@types/estree" "^1.0.6"
ajv "^6.14.0"
ajv "^6.12.4"
cross-spawn "^7.0.6"
debug "^4.3.2"
escape-string-regexp "^4.0.0"
eslint-scope "^9.1.2"
eslint-visitor-keys "^5.0.1"
espree "^11.2.0"
eslint-scope "^9.1.0"
eslint-visitor-keys "^5.0.0"
espree "^11.1.0"
esquery "^1.7.0"
esutils "^2.0.2"
fast-deep-equal "^3.1.3"
@ -487,11 +487,11 @@ eslint@^10.0.0, "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^8.57.0 || ^9.0.0
imurmurhash "^0.1.4"
is-glob "^4.0.0"
json-stable-stringify-without-jsonify "^1.0.1"
minimatch "^10.2.4"
minimatch "^10.1.1"
natural-compare "^1.4.0"
optionator "^0.9.3"
espree@^11.2.0:
espree@^11.1.0:
version "11.2.0"
resolved "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz"
integrity sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==
@ -691,7 +691,7 @@ magic-string@^0.30.3:
dependencies:
"@jridgewell/sourcemap-codec" "^1.5.5"
minimatch@^10.2.2, minimatch@^10.2.4:
minimatch@^10.1.1, minimatch@^10.2.2, minimatch@^10.2.4:
version "10.2.5"
resolved "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz"
integrity sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==
@ -900,7 +900,7 @@ type-check@^0.4.0, type-check@~0.4.0:
dependencies:
prelude-ls "^1.2.1"
typescript-eslint@^8.61.0:
typescript-eslint@8.61.0:
version "8.61.0"
resolved "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.61.0.tgz"
integrity sha512-8y31Rd0eGTrDKqhy6vT0HtzhN+YLjQizwX3aA3hPXP/ynSfnrBXcQY5IzsP9/DM7+klX4IUncZZjkchP0z+rUw==
@ -910,15 +910,15 @@ typescript-eslint@^8.61.0:
"@typescript-eslint/typescript-estree" "8.61.0"
"@typescript-eslint/utils" "8.61.0"
typescript@>=3.7.0, typescript@>=4.8.4, "typescript@>=4.8.4 <6.1.0", typescript@latest:
version "6.0.3"
resolved "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz"
integrity sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==
typescript@>=3.7.0, typescript@>=4.8.4, "typescript@>=4.8.4 <6.1.0", typescript@5.9.3:
version "5.9.3"
resolved "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz"
integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==
"undici-types@>=7.24.0 <7.24.7":
version "7.24.6"
resolved "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz"
integrity sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==
undici-types@~7.16.0:
version "7.16.0"
resolved "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz"
integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==
uri-js@^4.2.2:
version "4.4.1"