From 75a950e830e823b3a89a54ea98e684beb2aaf7e3 Mon Sep 17 00:00:00 2001 From: Glen Whitney Date: Mon, 21 Oct 2024 21:46:52 +0000 Subject: [PATCH] chore: Remove string-based type injection via ship() (#8) Resolves #6. Reviewed-on: https://code.studioinfinity.org/glen/math5/pulls/8 Co-authored-by: Glen Whitney Co-committed-by: Glen Whitney --- tools/reflectTypes.mjs | 28 +++------------------------- 1 file changed, 3 insertions(+), 25 deletions(-) diff --git a/tools/reflectTypes.mjs b/tools/reflectTypes.mjs index c232072..6ba6d9d 100644 --- a/tools/reflectTypes.mjs +++ b/tools/reflectTypes.mjs @@ -20,39 +20,17 @@ function reflectType5(srcFile, options = { debug: false }) { log(`=========Reflecting file "${relative(__dirname, srcFile)}"`) const defFile = srcFile.replace(/.js$/, '.d.ts') - const src = String(readFileSync(srcFile)) + let src = String(readFileSync(srcFile)) const defs = String(readFileSync(defFile)) const parsedDefs = ts2json(defFile) - const typeDefMatches = defs.matchAll(/: ({(?:(?!\n}).)+\n}) & (?:(?!ReflectedTypeInfo).)+ReflectedTypeInfo/gs) - if (!typeDefMatches) { - log('No ReflectedTypeInfo found.') - return - } - - const typeDefs = Array.from(typeDefMatches).map(def => def[1]) - log(` ${typeDefs.length} ReflectedTypeInfo found`) - - let index = 0 - let srcReflected = src.replaceAll(/(\s*)\.ship\(\)/g, () => { - const def = typeDefs[index] - index++ - return `.ship({ reflectedType5: \`${def}\` })` - }) - log(` ReflectedTypeInfo injected in ${index} occurrences of .ship()`) - - if (index !== typeDefs.length) { - log(' WARNING: not all ReflectedTypeInfo occurrences could be injected') - } - for (const id in parsedDefs) { if (id.includes('interface')) continue if (parsedDefs[id] === undefined) continue log(` Tagging ${id} with type data`, parsedDefs[id]) - srcReflected += - `\n${id}._reflectedType5 = ${JSON.stringify(parsedDefs[id])}\n` + src += `\n${id}._reflectedType5 = ${JSON.stringify(parsedDefs[id])}\n` } - writeFileSync(srcFile, srcReflected) + writeFileSync(srcFile, src) function log(...args) { if (options.debug) {