Sha256: 8d6c89ceda8d1774ab8ebc2f4e8036d9c653685e2e5258beb0057842bdeb087a

Contents?: true

Size: 1.07 KB

Versions: 25

Compression:

Stored size: 1.07 KB

Contents

/* eslint-env jest */
import getProp from '../src/getProp';

const nodeVersion = parseInt(process.version.match(/^v(\d+)\./)[1], 10);

export const fallbackToBabylon = nodeVersion < 6;

const parser = fallbackToBabylon ? require('babylon') : require('@babel/parser');

const defaultPlugins = ['jsx', 'functionBind', 'estree', 'objectRestSpread', 'optionalChaining'];
let plugins = [...defaultPlugins];

export function changePlugins(pluginOrFn) {
  if (Array.isArray(pluginOrFn)) {
    plugins = pluginOrFn;
  } else if (typeof pluginOrFn === 'function') {
    plugins = pluginOrFn(plugins);
  } else {
    throw new Error('changePlugins argument should be either an array or a function');
  }
}

beforeEach(() => {
  plugins = [...defaultPlugins];
});

function parse(code) {
  return parser.parse(code, { plugins });
}

export function getOpeningElement(code) {
  return parse(code).program.body[0].expression.openingElement;
}

export function extractProp(code, prop = 'foo') {
  const node = getOpeningElement(code);
  const { attributes: props } = node;
  return getProp(props, prop);
}

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
govuk_publishing_components-17.7.0 node_modules/jsx-ast-utils/__tests__/helper.js
govuk_publishing_components-17.6.1 node_modules/jsx-ast-utils/__tests__/helper.js
govuk_publishing_components-17.6.0 node_modules/jsx-ast-utils/__tests__/helper.js
govuk_publishing_components-17.5.0 node_modules/jsx-ast-utils/__tests__/helper.js
govuk_publishing_components-17.4.0 node_modules/jsx-ast-utils/__tests__/helper.js
govuk_publishing_components-17.3.0 node_modules/jsx-ast-utils/__tests__/helper.js
govuk_publishing_components-17.2.0 node_modules/jsx-ast-utils/__tests__/helper.js
govuk_publishing_components-17.1.1 node_modules/jsx-ast-utils/__tests__/helper.js
govuk_publishing_components-17.1.0 node_modules/jsx-ast-utils/__tests__/helper.js
govuk_publishing_components-17.0.0 node_modules/jsx-ast-utils/__tests__/helper.js
govuk_publishing_components-16.29.0 node_modules/jsx-ast-utils/__tests__/helper.js
govuk_publishing_components-16.28.0 node_modules/jsx-ast-utils/__tests__/helper.js
govuk_publishing_components-16.27.1 node_modules/jsx-ast-utils/__tests__/helper.js
govuk_publishing_components-16.27.0 node_modules/jsx-ast-utils/__tests__/helper.js
govuk_publishing_components-16.26.0 node_modules/jsx-ast-utils/__tests__/helper.js
govuk_publishing_components-16.25.0 node_modules/jsx-ast-utils/__tests__/helper.js
govuk_publishing_components-16.24.0 node_modules/jsx-ast-utils/__tests__/helper.js
govuk_publishing_components-16.23.0 node_modules/jsx-ast-utils/__tests__/helper.js
govuk_publishing_components-16.22.0 node_modules/jsx-ast-utils/__tests__/helper.js
govuk_publishing_components-16.21.0 node_modules/jsx-ast-utils/__tests__/helper.js