import assert from 'node:assert/strict'; import fs from 'node:fs'; import path from 'node:path'; import test from 'node:test'; import { fileURLToPath } from 'node:url'; const here = path.dirname(fileURLToPath(import.meta.url)); const contractsPath = path.join(here, 'contracts.ts'); void test('contracts: players and sceneNpcTokensSession channels exist', () => { const src = fs.readFileSync(contractsPath, 'utf8'); assert.match(src, /players:\s*\{/); assert.match(src, /list:\s*'players\.list'/); assert.match(src, /upsertProgress:\s*'players\.upsertProgress'/); assert.match(src, /sceneNpcTokensSession:\s*\{/); assert.match(src, /scenePlayerTokensSession:\s*\{/); assert.match(src, /tokenGridSnap:\s*\{/); assert.match(src, /tokenGridSnap\.setEnabled/); assert.match(src, /npcTokens\?:\s*SceneNpcToken\[\]/); });