JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1214362
  • Score
    100M100P100Q242013F
  • License MIT

Convert a JavaScript value to an estree expression

Package Exports

  • estree-util-value-to-estree

Readme

estree-util-value-to-estree

github actions codecov npm version npm downloads

Convert a JavaScript value to an ESTree expression.

Table of Contents

Installation

npm install estree-util-value-to-estree

Usage

This package converts a JavaScript value to an ESTree expression for values that can be constructed without the need for a context.

Currently the following types are supported:

import { valueToEstree } from 'estree-util-value-to-estree'

const result = valueToEstree({
  string: 'Hello world!',
  number: 42
})

console.log(result)
// {
//   type: 'ObjectExpression',
//   properties: [
//     {
//       type: 'Property',
//       method: false,
//       shorthand: false,
//       computed: false,
//       kind: 'init',
//       key: { type: 'Literal', value: 'string' },
//       value: { type: 'Literal', value: 'Hello world!' }
//     },
//     {
//       type: 'Property',
//       method: false,
//       shorthand: false,
//       computed: false,
//       kind: 'init',
//       key: { type: 'Literal', value: 'number' },
//       value: { type: 'Literal', value: 42 }
//     }
//   ]
// })

API

This API exports the function valueToEstree.

valueToEstree(value, options?)

Convert a value to an ESTree node.

options

  • instanceAsObject (boolean, default: false) — If true, treat objects that have a prototype as plain objects.
  • preserveReferences (boolean, default: false) — If true, preserve references to the same object found within the input. This also allows to serialize recursive structures. If needed, the resulting expression will be an iife.

Examples

By default custom types result in an error. If options.instanceAsObject is set to true however, they are turned into plain objects.

import { valueToEstree } from 'estree-util-value-to-estree'

class Point {
  line: number

  column: number

  constructor(line: number, column: number) {
    this.line = line
    this.column = column
  }
}

const point = new Point(2, 3)
const result = valueToEstree(point, { instanceAsObject: true })
console.log(result)
// {
//   type: 'ObjectExpression',
//   properties: [
//     {
//       type: 'Property',
//       method: false,
//       shorthand: false,
//       computed: false,
//       kind: 'init',
//       key: { type: 'Literal', value: 'line' },
//       value: { type: 'Literal', value: 2 }
//     },
//     {
//       type: 'Property',
//       method: false,
//       shorthand: false,
//       computed: false,
//       kind: 'init',
//       key: { type: 'Literal', value: 'column' },
//       value: { type: 'Literal', value: 3 }
//     }
//   ]
// }

Compatibility

This project is compatible with Node.js 16 or greater.

License

MIT © Remco Haszing