build: gate builds on tsc, fix lib floor, correct minAppVersion

The build only ran esbuild, which strips types without checking them — that
is how the week-number ReferenceError shipped. Add a typecheck script and run
it before bundling. It is invoked as 'node node_modules/typescript/bin/tsc'
rather than a bare 'tsc' because this repo's node_modules/.bin entries are
Linux-style symlinks with no Windows .cmd shims, matching how the existing
scripts already call 'node esbuild.config.mjs' directly.

- tsconfig lib gains ES2017 so Object.entries resolves (was TS2550 plus
  cascading TS7031 implicit-any errors); strictness untouched.
- manifest minAppVersion 0.16.3 -> 1.4.4: the plugin calls setTooltip(), added
  in API 1.4.4, so every declared-supported version below that threw
  TypeError on render.
- settings-tab: type plugin as WaypointPlugin via a type-only import (no
  runtime cycle) to drop the (this.plugin as any).saveSettings() cast, and
  make the slider helper generic instead of obj: any. No UI change.
- Add the MIT LICENSE file that package.json and the About tab already claim.
This commit is contained in:
2026-09-07 20:03:53 -04:00
parent dc9e4c3200
commit c5282dbdef
5 changed files with 34 additions and 10 deletions
+8 -7
View File
@@ -1,13 +1,14 @@
import { Setting, PluginSettingTab, App, Plugin, setIcon } from 'obsidian';
import { Setting, PluginSettingTab, App, setIcon } from 'obsidian';
import type WaypointPlugin from 'src/main';
import { WaypointSettings, DEFAULT_SETTINGS, PeriodNoteSettings } from 'src/settings';
export class WaypointSettingTab extends PluginSettingTab {
private plugin: Plugin;
private plugin: WaypointPlugin;
private settings: WaypointSettings;
private onSettingsChange: () => void;
private activeTab: 'calendar' | 'periodic' | 'recent' | 'display' | 'about' = 'calendar';
constructor(app: App, plugin: Plugin, settings: WaypointSettings, onSettingsChange: () => void) {
constructor(app: App, plugin: WaypointPlugin, settings: WaypointSettings, onSettingsChange: () => void) {
super(app, plugin);
this.plugin = plugin;
this.settings = settings;
@@ -284,12 +285,12 @@ export class WaypointSettingTab extends PluginSettingTab {
);
}
private addSliderSetting(
private addSliderSetting<K extends string>(
container: HTMLElement,
name: string,
desc: string,
obj: any,
key: string,
obj: Record<K, number>,
key: K,
min: number,
max: number,
step: number,
@@ -313,7 +314,7 @@ export class WaypointSettingTab extends PluginSettingTab {
}
private async saveAndRefresh(): Promise<void> {
await (this.plugin as any).saveSettings();
await this.plugin.saveSettings();
this.onSettingsChange();
}