Package Exports
- estree-util-value-to-estree
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (estree-util-value-to-estree) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
estree-util-value-to-estree
Convert a JavaScript value to an estree expression
Installation
npm install estree-util-value-to-estree
Usage
This package converts a JavaScript value to an estree for values that can be constructed without the need for a context.
Currently the following types are supported:
- arrays
- bigints
- booleans
- dates
- null
- numbers (including
Infinity
,NaN
, and negative numbers) - objects (plain objects only)
- regular expressions
- strings
- symbols (only global symbols)
- typed arrays (
Float32Array
,Float64Array
,Uint8Array
,Uint8ClampedArray
,Uint16Array
, andUint32Array
) - undefined
- URL objects
- URLSearchParams objects
import { deepEqual } from 'assert';
import { valueToEstree } from 'estree-util-value-to-estree';
const result = valueToEstree({
null: null,
undefined,
string: 'Hello world!',
number: 42,
negativeNumber: -1337,
infinity: Number.POSITIVE_INFINITY,
notANumber: Number.NaN,
regex: /\w+/i,
date: new Date('1970-01-01'),
array: ['I’m an array item!'],
object: { nested: 'value' },
});
deepEqual(result, {
type: 'ObjectExpression',
properties: [
{
type: 'Property',
method: false,
shorthand: false,
computed: false,
kind: 'init',
key: { type: 'Literal', value: 'null', raw: '"null"' },
value: { type: 'Literal', value: null, raw: 'null' },
},
{
type: 'Property',
method: false,
shorthand: false,
computed: false,
kind: 'init',
key: { type: 'Literal', value: 'undefined', raw: '"undefined"' },
value: { type: 'Identifier', name: 'undefined' },
},
{
type: 'Property',
method: false,
shorthand: false,
computed: false,
kind: 'init',
key: { type: 'Literal', value: 'string', raw: '"string"' },
value: { type: 'Literal', value: 'Hello world!', raw: '"Hello world!"' },
},
{
type: 'Property',
method: false,
shorthand: false,
computed: false,
kind: 'init',
key: { type: 'Literal', value: 'number', raw: '"number"' },
value: { type: 'Literal', value: 42, raw: '42' },
},
{
type: 'Property',
method: false,
shorthand: false,
computed: false,
kind: 'init',
key: {
type: 'Literal',
value: 'negativeNumber',
raw: '"negativeNumber"',
},
value: {
type: 'UnaryExpression',
operator: '-',
prefix: true,
argument: { type: 'Literal', value: 1337, raw: '1337' },
},
},
{
type: 'Property',
method: false,
shorthand: false,
computed: false,
kind: 'init',
key: { type: 'Literal', value: 'infinity', raw: '"infinity"' },
value: { type: 'Identifier', name: 'Infinity' },
},
{
type: 'Property',
method: false,
shorthand: false,
computed: false,
kind: 'init',
key: { type: 'Literal', value: 'notANumber', raw: '"notANumber"' },
value: { type: 'Identifier', name: 'NaN' },
},
{
type: 'Property',
method: false,
shorthand: false,
computed: false,
kind: 'init',
key: { type: 'Literal', value: 'regex', raw: '"regex"' },
value: {
type: 'Literal',
value: /\w+/i,
raw: '/\\w+/i',
regex: { pattern: '\\w+', flags: 'i' },
},
},
{
type: 'Property',
method: false,
shorthand: false,
computed: false,
kind: 'init',
key: { type: 'Literal', value: 'date', raw: '"date"' },
value: {
type: 'NewExpression',
callee: { type: 'Identifier', name: 'Date' },
arguments: [{ type: 'Literal', value: 0, raw: '0' }],
},
},
{
type: 'Property',
method: false,
shorthand: false,
computed: false,
kind: 'init',
key: { type: 'Literal', value: 'array', raw: '"array"' },
value: {
type: 'ArrayExpression',
elements: [
{
type: 'Literal',
value: 'I’m an array item!',
raw: '"I’m an array item!"',
},
],
},
},
{
type: 'Property',
method: false,
shorthand: false,
computed: false,
kind: 'init',
key: { type: 'Literal', value: 'object', raw: '"object"' },
value: {
type: 'ObjectExpression',
properties: [
{
type: 'Property',
method: false,
shorthand: false,
computed: false,
kind: 'init',
key: { type: 'Literal', value: 'nested', raw: '"nested"' },
value: { type: 'Literal', value: 'value', raw: '"value"' },
},
],
},
},
],
});