fix(typert): close remote gateway review gaps

This commit is contained in:
imccyu
2026-08-06 18:43:31 +08:00
parent 22bec5e63f
commit 1ea5507bf8
11 changed files with 77 additions and 38 deletions

View File

@@ -1,5 +1,42 @@
import ts from 'typescript'
const decoratorSyntax = /^\s*@[A-Za-z_$][\w$]*/m
/**
* Worker arguments that keep process-wide Web Storage from shadowing jsdom storage.
* Node lists the positive spelling in `allowedNodeEnvironmentFlags` for this negatable flag.
*/
export const vitestExecArgv = process.allowedNodeEnvironmentFlags.has('--webstorage') ? ['--no-webstorage'] : []
/**
* Transform standard TypeScript decorators before Vite's default parser sees source files.
* @returns a pre-transform Vite plugin shared by source-mode test configurations.
*/
export function standardDecoratorPlugin() {
return {
name: 'dsh-standard-decorators',
enforce: 'pre' as const,
transform(code: string, id: string) {
const file = id.split('?', 1)[0]!
if (!/\.[cm]?tsx?$/.test(file) || !decoratorSyntax.test(code)) return
const result = ts.transpileModule(code, {
fileName: file,
compilerOptions: {
target: ts.ScriptTarget.ES2024,
module: ts.ModuleKind.ESNext,
jsx: file.endsWith('x') ? ts.JsxEmit.ReactJSX : undefined,
sourceMap: true,
},
})
return {
code: result.outputText
.replace(
/^(\s*)(__esDecorate\()/gmu,
'$1/* v8 ignore next -- compiler-synthetic decorator accessors have no source behavior */ $2',
)
.replace(/\n?\/\/# sourceMappingURL=.*$/u, '\n'),
map: result.sourceMapText,
}
},
}
}