From 605a995ec6a18b3d4cb98fa29b504aeb8f2770ea Mon Sep 17 00:00:00 2001 From: NekoPunch Date: Fri, 28 Aug 2026 02:33:00 -0700 Subject: [PATCH] fix(models): support Node 26 type stripping --- scripts/sync-model-metadata.mjs | 4 ++-- scripts/sync-model-metadata.test.mjs | 20 +++++++++++++++++++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/scripts/sync-model-metadata.mjs b/scripts/sync-model-metadata.mjs index 2629072d38..55220d5825 100644 --- a/scripts/sync-model-metadata.mjs +++ b/scripts/sync-model-metadata.mjs @@ -496,8 +496,8 @@ async function assertGeneratedOutputs(metadataPath, pricingPath, source) { ); } -async function loadTypeScriptModule(source) { - const javascript = stripTypeScriptTypes(source, { mode: 'transform' }); +export async function loadTypeScriptModule(source) { + const javascript = stripTypeScriptTypes(source, { mode: 'strip' }); return import(`data:text/javascript;base64,${Buffer.from(javascript).toString('base64')}`); } diff --git a/scripts/sync-model-metadata.test.mjs b/scripts/sync-model-metadata.test.mjs index 8ca634d813..f0475cd5f0 100644 --- a/scripts/sync-model-metadata.test.mjs +++ b/scripts/sync-model-metadata.test.mjs @@ -22,7 +22,7 @@ import { mkdtemp, readFile, readdir, rm, writeFile } from 'node:fs/promises'; import { tmpdir } from 'node:os'; import { join } from 'node:path'; import { test } from 'node:test'; -import { main, PROVIDERS } from './sync-model-metadata.mjs'; +import { loadTypeScriptModule, main, PROVIDERS } from './sync-model-metadata.mjs'; function fixtureCatalog() { const catalog = {}; @@ -46,6 +46,24 @@ function fixtureCatalog() { return catalog; } +test('loads the committed generated TypeScript modules', async () => { + const [metadataSource, pricingSource] = await Promise.all([ + readFile(new URL('../packages/core/src/model-metadata.generated.ts', import.meta.url), 'utf8'), + readFile( + new URL('../packages/runtime/src/telemetry/model-pricing.generated.ts', import.meta.url), + 'utf8', + ), + ]); + const [metadataModule, pricingModule] = await Promise.all([ + loadTypeScriptModule(metadataSource), + loadTypeScriptModule(pricingSource), + ]); + + assert.ok(Object.keys(metadataModule.GENERATED_MODELS_DEV_METADATA).length > 0); + assert.ok(Array.isArray(pricingModule.GENERATED_MODEL_PRICING)); + assert.ok(pricingModule.GENERATED_MODEL_PRICING.length > 0); +}); + test('a refresh persists the exact selected input and check fails on stale output', async () => { const root = await mkdtemp(join(tmpdir(), 'maka-model-snapshot-')); try {