Convert a JavaScript value to an ESTree expression.
npm install estree-util-value-to-estree
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:
bigintbooleannullnumber (Including
Infinity
and NaN)stringsymbol
(shared
and
well-known)objectObjectundefinedArrayBigInt64ArrayBigUint64ArrayBooleanBufferDateFloat16ArrayFloat32ArrayFloat64ArrayInt8ArrayInt16ArrayInt32ArrayMapNumberRegExpSetStringTemporal.DurationTemporal.InstantTemporal.PlainDateTemporal.PlainDateTimeTemporal.PlainYearMonthTemporal.PlainMonthDayTemporal.PlainTimeTemporal.ZonedDateTimeUint8ArrayUint8ClampedArrayUint16ArrayUint32ArrayURLURLSearchParamsimport { 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 }
// }
// ]
// }
This API exports the function valueToEstree.
valueToEstree(value, options?)Convert a value to an ESTree node.
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.replacer (Function) — A function to customize the serialization of a value. It accepts the value
to serialize as an argument. It must return the value serialized to an ESTree expression. If
nothing is returned, the value is processed by the builtin logic.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 }
// }
// ]
// }
You can customize the serialization of values using the replacer option. For example, to serialize
a custom class:
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, {
replacer(value) {
if (value instanceof Point) {
return {
type: 'NewExpression',
callee: { type: 'Identifier', name: 'Point' },
arguments: [valueToEstree(value.line), valueToEstree(value.column)]
}
}
}
})
console.log(result)
This project is compatible with Node.js 16 or greater.
148 commits
9 commits
JavaScript
53.9%
TypeScript
46.1%
Convert a JavaScript value to an ESTree expression.
npm install estree-util-value-to-estree
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:
bigintbooleannullnumber (Including
Infinity
and NaN)stringsymbol
(shared
and
well-known)objectObjectundefinedArrayBigInt64ArrayBigUint64ArrayBooleanBufferDateFloat16ArrayFloat32ArrayFloat64ArrayInt8ArrayInt16ArrayInt32ArrayMapNumberRegExpSetStringTemporal.DurationTemporal.InstantTemporal.PlainDateTemporal.PlainDateTimeTemporal.PlainYearMonthTemporal.PlainMonthDayTemporal.PlainTimeTemporal.ZonedDateTimeUint8ArrayUint8ClampedArrayUint16ArrayUint32ArrayURLURLSearchParamsimport { 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 }
// }
// ]
// }
This API exports the function valueToEstree.
valueToEstree(value, options?)Convert a value to an ESTree node.
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.replacer (Function) — A function to customize the serialization of a value. It accepts the value
to serialize as an argument. It must return the value serialized to an ESTree expression. If
nothing is returned, the value is processed by the builtin logic.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 }
// }
// ]
// }
You can customize the serialization of values using the replacer option. For example, to serialize
a custom class:
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, {
replacer(value) {
if (value instanceof Point) {
return {
type: 'NewExpression',
callee: { type: 'Identifier', name: 'Point' },
arguments: [valueToEstree(value.line), valueToEstree(value.column)]
}
}
}
})
console.log(result)
This project is compatible with Node.js 16 or greater.
148 commits
9 commits
JavaScript
53.9%
TypeScript
46.1%