JSPM

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

Convert a JavaScript value to an estree expression

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

github actions codecov npm prettier jest

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"' },
          },
        ],
      },
    },
  ],
});