| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- // @ts-check
-
- /*
- This script will generate TypeScript content for the code editor. It inlines
- the content of several files into one large string which can be passed to the
- Monaco editor as an extraLib.
-
- Important notes:
-
- - Files must include the "Start Copy Here" comment indicated below.
-
- - This comment must be placed BELOW any import statements.
-
- Run the script with `yarn scripts`.
- */
-
- const fs = require('fs/promises')
- const root = process.cwd()
-
- async function inlineFileContents(path) {
- console.log(`📄 Inlining contents of ${path}`)
- const text = await fs.readFile(`${root}${path}`, 'utf-8')
- return text
- .match(
- /\/\* ----------------- Start Copy Here ---------------- \*\/(.|\n)*$/g
- )[0]
- .replaceAll('/* ----------------- Start Copy Here ---------------- */', '')
- .replaceAll('export default', '')
- .replaceAll('export ', '')
- }
-
- async function copyTypesToFile() {
- console.log('⚙️ Generating types-import.ts')
-
- const content =
- `
- // HEY! DO NOT MODIFY THIS FILE. THE CONTENTS OF THIS FILE
- // ARE AUTO-GENERATED BY A SCRIPT AT: /scripts/type-gen.js
- // ANY CHANGES WILL BE LOST WHEN THE SCRIPT RUNS AGAIN!
-
- export default {` +
- `
- name: "types.ts",
- content: \`
-
-
- ${await inlineFileContents('/types.ts')}
-
- ${await inlineFileContents('/utils/vec.ts')}
-
- ${await inlineFileContents('/state/code/utils.ts')}
-
- ${await inlineFileContents('/state/code/index.ts')}
-
- ${await inlineFileContents('/state/code/dot.ts')}
-
- ${await inlineFileContents('/state/code/ellipse.ts')}
-
- ${await inlineFileContents('/state/code/line.ts')}
-
- ${await inlineFileContents('/state/code/polyline.ts')}
-
- ${await inlineFileContents('/state/code/ray.ts')}
-
- ${await inlineFileContents('/state/code/arrow.ts')}
-
- ${await inlineFileContents('/state/code/draw.ts')}
-
- ${await inlineFileContents('/state/code/rectangle.ts')}
-
- ${await inlineFileContents('/state/code/control.ts')}
-
- declare const controls: {[key:string]: any} = {}
- \`}`
-
- await fs.writeFile(
- __dirname + '/../components/code-panel/types-import.ts',
- content
- )
-
- console.log('✅ Process complete')
- }
-
- // Kickoff
- copyTypesToFile()
|