mirror of
https://github.com/wiseguru/ReWrite-Voice-Notes.git
synced 2026-07-22 07:49:19 +00:00
All ~30 warnings traced to the bot's lint environment resolving types differently from local, not to unsafe code (DEVCONFLICTS.md finding 10): - tsconfig lib was ES2016 while the code uses ES2017-ES2019 APIs (Object.entries/values/fromEntries, padStart, Promise.finally); the test suite's auto-included @types/node masked it locally. lib is now ["DOM", "ES2019"] with types: [] so a mismatch fails npm run build. - moment's typings don't resolve in the bot's environment (obsidian's re-export types via the moment package). All calls now go through formatMoment in src/time.ts, a narrow structural alias. - secrets.ts needed as-BufferSource assertions on TS 5.7+ that older TS flags as unnecessary; restructured (inferred ArrayBuffer-backed byte helpers, BufferSource param, one 32-byte copy) to need none on any TS version. Crypto behavior unchanged. - The two flagged as-Record casts became an isRecord type predicate. Docs: CLAUDE.md "Review-bot type environment" gotcha, RELEASING.md parity section (plus the pre-release docs from the workflow change), DEVCONFLICTS.md finding 10, ROADMAP.md Unreleased entry. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
19 lines
921 B
TypeScript
19 lines
921 B
TypeScript
import { moment } from 'obsidian';
|
|
|
|
// Obsidian re-exports its bundled moment, but the export's TYPE comes from the
|
|
// `moment` package (a transitive dependency of `obsidian`), which the community
|
|
// review bot's lint environment does not resolve: `obsidian` itself types fine
|
|
// there, `moment` does not, so every direct `moment(...)` call is error-typed and
|
|
// trips the bot's no-unsafe-* rules. All timestamp formatting therefore goes
|
|
// through this narrow structural alias (the same pattern as ScriptProcessorNodeLike
|
|
// and WakeLockLike), which needs nothing from moment's own typings. Runtime
|
|
// behavior is unchanged: it is still Obsidian's bundled moment doing the work.
|
|
interface MomentLike {
|
|
format(fmt: string): string;
|
|
}
|
|
|
|
type MomentFactory = (input?: Date) => MomentLike;
|
|
|
|
export function formatMoment(fmt: string, input?: Date): string {
|
|
return (moment as unknown as MomentFactory)(input).format(fmt);
|
|
}
|