diff --git a/src/datastore/parsers/dataforged.test.ts b/src/datastore/parsers/dataforged.test.ts index 3e39f467..51dc038d 100644 --- a/src/datastore/parsers/dataforged.test.ts +++ b/src/datastore/parsers/dataforged.test.ts @@ -1,10 +1,11 @@ +import { Ruleset } from "@datasworn/core"; +import data from "@datasworn/starforged/json/starforged.json"; import { OracleGrouping, OracleGroupingType } from "../../model/oracle"; import { indexIntoOracleMap } from "./dataforged"; -const data = require("@datasworn/starforged/json/starforged.json"); describe("indexIntoOracleMap", () => { it("indexes included starforged data", () => { - const map = indexIntoOracleMap(data); + const map = indexIntoOracleMap(data as Ruleset); expect(map.get("starforged/oracles/core/action")).toHaveProperty( "id", "starforged/oracles/core/action", @@ -12,7 +13,7 @@ describe("indexIntoOracleMap", () => { }); it("indexes each Ask The Oracle entry", () => { - const map = indexIntoOracleMap(data); + const map = indexIntoOracleMap(data as Ruleset); const almostCertain = map.get( "starforged/oracles/moves/ask_the_oracle/almost_certain", )!; diff --git a/src/datastore/parsers/datasworn/oracles.test.ts b/src/datastore/parsers/datasworn/oracles.test.ts index 4b3d92fd..df3a7f50 100644 --- a/src/datastore/parsers/datasworn/oracles.test.ts +++ b/src/datastore/parsers/datasworn/oracles.test.ts @@ -3,7 +3,9 @@ import assert from "assert"; import { OracleGrouping, OracleGroupingType } from "../../../model/oracle"; import { DataswornOracle } from "./oracles"; -const data = require("@datasworn/starforged/json/starforged.json") as Ruleset; +import rawSfData from "@datasworn/starforged/json/starforged.json"; + +const data: Ruleset = rawSfData as Ruleset; function loadOracle(...[first, ...rest]: string[]): DataswornOracle { let collection: OracleCollection = data.oracles[first]; diff --git a/src/datastore/parsers/datasworn/oracles.ts b/src/datastore/parsers/datasworn/oracles.ts index 4405ba40..331b23c4 100644 --- a/src/datastore/parsers/datasworn/oracles.ts +++ b/src/datastore/parsers/datasworn/oracles.ts @@ -101,7 +101,7 @@ export class DataswornOracle implements Oracle { for (const [, id] of template.result.matchAll( /\{\{result:([^{}]+)\}\}/g, )) { - let prevRoll = subrolls[id]; + const prevRoll = subrolls[id]; if (!prevRoll) { const subTable = context.lookup(id); if (subTable == null) { @@ -151,7 +151,7 @@ export class DataswornOracle implements Oracle { } } - let subrollable: Oracle | undefined = + const subrollable: Oracle | undefined = subOracle.oracle == null ? this : context.lookup(subOracle.oracle); if (!subrollable) throw new Error( @@ -186,6 +186,8 @@ export class DataswornOracle implements Oracle { this.id, subOracle.oracle, ); + results.push(roll); + break; case "keep": results.push(roll); break; diff --git a/src/datastore/parsers/markdown.ts b/src/datastore/parsers/markdown.ts index 602cc6b4..ef02989b 100644 --- a/src/datastore/parsers/markdown.ts +++ b/src/datastore/parsers/markdown.ts @@ -30,7 +30,7 @@ export function parserForFrontmatter( } export function dataforgedInlineParser(content: string): ParserReturn { - let matches = content.match( + const matches = content.match( /^```[^\S\r\n]*data(forged|sworn)\s?\n([\s\S]+?)^```/m, ); if (matches == null) { diff --git a/src/datastore/parsers/oracle-table.ts b/src/datastore/parsers/oracle-table.ts index 4af881c0..8fd2151e 100644 --- a/src/datastore/parsers/oracle-table.ts +++ b/src/datastore/parsers/oracle-table.ts @@ -30,7 +30,7 @@ export function parseRange(input: string): NumberRange | undefined { }; } -const TEMPLATE_REGEX = /\[[^\[\]]+\]\(id:([\w_\-/]+)\)/gi; +const TEMPLATE_REGEX = /\[[^[\]]+\]\(id:([\w_\-/]+)\)/gi; export function parseResultTemplate( input: string, diff --git a/src/datastore/parsers/table.ts b/src/datastore/parsers/table.ts index 8f56384d..bad4b934 100644 --- a/src/datastore/parsers/table.ts +++ b/src/datastore/parsers/table.ts @@ -67,15 +67,7 @@ export function matchTable(content: string): MarkdownTable { export function matchTables(content: string): MarkdownTable[] { const tables: Array = []; for (const tableMatch of content.matchAll(TABLE_REGEX)) { - let table; - // try { - table = parseTable(tableMatch); - // } catch { - // table = null; - // } - if (table) { - tables.push(table); - } + tables.push(parseTable(tableMatch)); } return tables; diff --git a/src/datastore/paths.ts b/src/datastore/paths.ts index 9b63ac6d..3cf2adeb 100644 --- a/src/datastore/paths.ts +++ b/src/datastore/paths.ts @@ -1,3 +1,5 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +// NOTE: This whole thing is a currently unused experiment. import { Asset, AssetAbility, diff --git a/src/datastore/priority-index.ts b/src/datastore/priority-index.ts index 581ce22c..d2211866 100644 --- a/src/datastore/priority-index.ts +++ b/src/datastore/priority-index.ts @@ -25,6 +25,7 @@ function getHighestPriorityChecked( function getHighestPriority( entries: Array>, ): Sourced | undefined { + // eslint-disable-next-line prefer-const let [first, ...rest] = entries; if (first === undefined) { return undefined; @@ -59,8 +60,8 @@ export class PriorityIndexer implements ReadonlyMap { } forEach( - callbackfn: (value: V, key: K, map: ReadonlyMap) => void, - thisArg?: any, + _callbackfn: (value: V, key: K, map: ReadonlyMap) => void, + _thisArg?: unknown, ): void { throw new Error("Method not implemented."); } diff --git a/src/entity/command.ts b/src/entity/command.ts index 32fe2f01..d98d47af 100644 --- a/src/entity/command.ts +++ b/src/entity/command.ts @@ -144,7 +144,7 @@ const ENTITIES: Record> = { creature: { label: "Creature", - nameGen: (ent) => "TBD", + nameGen: (_ent) => "TBD", spec: { environment: { id: "starforged/oracles/creatures/environment", @@ -222,7 +222,7 @@ export async function generateEntityCommand( plugin: ForgedPlugin, editor: Editor, ): Promise { - const [_key, entityDesc] = await CustomSuggestModal.select( + const [, entityDesc] = await CustomSuggestModal.select( plugin.app, Object.entries(ENTITIES), ([_key, { label }]) => label, diff --git a/src/model/rolls.ts b/src/model/rolls.ts index 8cd5d9fd..f3f68228 100644 --- a/src/model/rolls.ts +++ b/src/model/rolls.ts @@ -192,7 +192,7 @@ export class RollWrapper { return [this.row.result]; case RollResultKind.Multi: return this.selfRolls.flatMap((r) => r.results); - case RollResultKind.Templated: + case RollResultKind.Templated: { const templateString = this.row.template?.result; if (templateString == null) { throw new Error( @@ -202,7 +202,7 @@ export class RollWrapper { return [ templateString.replace( /\{\{result:([^{}]+)\}\}/g, - (_: any, id: string) => { + (_, id: string) => { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const templateRolls = this.subrolls[id]; if (templateRolls == null) { @@ -212,6 +212,7 @@ export class RollWrapper { }, ), ]; + } } } } diff --git a/src/moves/move-line-parser.ts b/src/moves/move-line-parser.ts index a1703cc5..6609ba82 100644 --- a/src/moves/move-line-parser.ts +++ b/src/moves/move-line-parser.ts @@ -49,7 +49,7 @@ function modifierWithDesc(): Parser<{ amount: number; desc: string }> { function descriptor(): Parser { return takeMid( string("{"), - regexp(/[^\}\{]+/g, "string without curly braces"), + regexp(/[^}{]+/g, "string without curly braces"), string("}"), ); } diff --git a/src/oracles/modal.ts b/src/oracles/modal.ts index 1ada0d24..ef475c89 100644 --- a/src/oracles/modal.ts +++ b/src/oracles/modal.ts @@ -68,7 +68,7 @@ export class OracleRollerModal extends Modal { }); }); - this.scope.register([], "r", (evt, ctx) => { + this.scope.register([], "r", () => { setRoll(this.currentRoll.reroll()); return false; }); diff --git a/src/tracks/progress-create.ts b/src/tracks/progress-create.ts index 4a85dc1c..aa3318ea 100644 --- a/src/tracks/progress-create.ts +++ b/src/tracks/progress-create.ts @@ -57,7 +57,7 @@ class GenericTextSuggest extends TextInputSuggest> { } } -const OBSIDIAN_ILLEGAL_FILENAME_CHARS = /[/\\:*?"<>|#^\[\]]/g; +const OBSIDIAN_ILLEGAL_FILENAME_CHARS = /[/\\:*?"<>|#^[\]]/g; function generateTrackName(name: string): string { return name diff --git a/src/tracks/writer.ts b/src/tracks/writer.ts index a5f3cca6..0c8f6679 100644 --- a/src/tracks/writer.ts +++ b/src/tracks/writer.ts @@ -20,7 +20,7 @@ export class ProgressTrackFileWriter implements ProgressTrackWriterContext { public readonly adapter: ProgressTrackFileAdapter, public readonly settings: ProgressTrackSettings, public readonly processor: ( - process: (data: any) => object, + process: (data: unknown) => object, ) => Promise, public readonly location: string, ) {} @@ -47,7 +47,7 @@ export class LegacyTrackWriter implements ProgressTrackWriterContext { constructor( public readonly character: CharacterContext, public readonly processor: ( - process: (data: any) => object, + process: (data: unknown) => object, ) => Promise, public readonly trackKey: string, public readonly location: string, diff --git a/src/typings/obsidian-ex.d.ts b/src/typings/obsidian-ex.d.ts index a552e9bf..1e3c3900 100644 --- a/src/typings/obsidian-ex.d.ts +++ b/src/typings/obsidian-ex.d.ts @@ -24,7 +24,11 @@ declare module "obsidian" { declare module "obsidian" { interface MetadataCache { - on(name: "forged:index-changed", callback: () => any, ctx?: any): EventRef; + on( + name: "forged:index-changed", + callback: () => unknown, + ctx?: unknown, + ): EventRef; } interface App { diff --git a/src/utils/either.ts b/src/utils/either.ts index 7b3ad3a5..744e6359 100644 --- a/src/utils/either.ts +++ b/src/utils/either.ts @@ -25,7 +25,7 @@ export class Left { return Left.create(fn(this.error)); } - map(fn: (val: never) => V): Left { + map(_fn: (val: never) => V): Left { return this; } @@ -52,7 +52,7 @@ export class Right { return new Right(value); } - mapError(fn: (err: any) => V): Right { + mapError(_fn: (err: unknown) => V): Right { return this; } @@ -60,7 +60,7 @@ export class Right { return Right.create(fn(this.value)); } - expect(msg: string): U { + expect(_msg: string): U { return this.value; } diff --git a/src/utils/obsidian.ts b/src/utils/obsidian.ts index d2a659b4..068ffb9d 100644 --- a/src/utils/obsidian.ts +++ b/src/utils/obsidian.ts @@ -31,13 +31,13 @@ export function pluginAsset(plug: Plugin, assetPath: string): string { export function vaultProcess( app: App, path: string, -): (processor: (data: any) => object) => Promise { +): (processor: (data: unknown) => object) => Promise { return async (processor) => { const file = app.vault.getAbstractFileByPath(path); if (!(file instanceof TFile)) { throw new Error(`invalid character file ${path}`); } - await app.fileManager.processFrontMatter(file, (frontmatter: any) => { + await app.fileManager.processFrontMatter(file, (frontmatter: object) => { const updated = processor(frontmatter); // TODO: this isn't actually going to work right... for deletes Object.assign(frontmatter, updated); diff --git a/src/utils/tracking-proxy.ts b/src/utils/tracking-proxy.ts deleted file mode 100644 index 4b9185f8..00000000 --- a/src/utils/tracking-proxy.ts +++ /dev/null @@ -1,4 +0,0 @@ -export function createProxy(obj: T): [T, Map] { - const changeMap = new Map(); - return [new Proxy(obj, {}), changeMap]; -} diff --git a/src/utils/update.ts b/src/utils/update.ts index 99c18827..bef7d2fc 100644 --- a/src/utils/update.ts +++ b/src/utils/update.ts @@ -2,12 +2,12 @@ export function updater( fromData: (data: object) => T, toData: (obj: T) => object, ): ( - process: (processer: (data: any) => object) => Promise, + process: (processer: (data: unknown) => object) => Promise, updater: (obj: T) => T, ) => Promise { return async (process, updater) => { let updated: T | undefined; - await process((data: any) => { + await process((data: unknown) => { updated = updater(fromData(Object.freeze(Object.assign({}, data)))); return toData(updated); }); @@ -21,12 +21,12 @@ export function updaterWithContext( toData: (obj: T) => object, context: U, ): ( - process: (processer: (data: any) => object) => Promise, + process: (processer: (data: unknown) => object) => Promise, updater: (obj: T, context: U) => T, ) => Promise { return async (process, updater) => { let updated: T | undefined; - await process((data: any) => { + await process((data: unknown) => { updated = updater( fromData(Object.freeze(Object.assign({}, data))), context,