saus icon indicating copy to clipboard operation
saus copied to clipboard

Add compile-time evaluation

Open aleclarson opened this issue 3 years ago • 0 comments

Useful for compile-time data generation used in declaring routes, paths, etc.

// src/node/routes.ts
import { preval } from 'saus'

// Run this module at compile-time. Unwrap its default export. Top-level await is allowed.
const result = preval(import('./path/to/module'))

In the future, we could support inline function that references outside its scope.

// src/node/routes.ts
import { preval } from 'saus'
import fs from 'fs'

const result = preval(() => {
  return fs.readdirSync('./data')
})

…or even a simple expression:

// src/node/routes.ts
import { preval } from 'saus'
import fs from 'fs'

const result = preval(fs.readdirSync('./data'))

The result would be passed through our dataToEsm helper.

aleclarson avatar Feb 18 '22 19:02 aleclarson