Sha256: e0a124fd0809270153556957faa03d96478c99c6cb98d18e01a87ee42984aa13

Contents?: true

Size: 927 Bytes

Versions: 43

Compression:

Stored size: 927 Bytes

Contents

"use strict"

const crypto = require('crypto')
    , moduleRequire = require('eslint-module-utils/module-require').default
    , hashObject = require('eslint-module-utils/hash').hashObject

const cache = new Map()

// must match ESLint default options or we'll miss the cache every time
const parserOptions = {
  loc: true,
  range: true,
  raw: true,
  tokens: true,
  comment: true,
  attachComment: true,
}

exports.parse = function parse(content, options) {
  options = Object.assign({}, options, parserOptions)

  if (!options.filePath) {
    throw new Error("no file path provided!")
  }

  const keyHash = crypto.createHash('sha256')
  keyHash.update(content)
  hashObject(options, keyHash)

  const key = keyHash.digest('hex')

  let ast = cache.get(key)
  if (ast != null) return ast

  const realParser = moduleRequire(options.parser)

  ast = realParser.parse(content, options)
  cache.set(key, ast)

  return ast
}

Version data entries

43 entries across 43 versions & 1 rubygems

Version Path
govuk_publishing_components-18.0.0 node_modules/eslint-plugin-import/memo-parser/index.js
govuk_publishing_components-17.21.0 node_modules/eslint-plugin-import/memo-parser/index.js
govuk_publishing_components-17.20.0 node_modules/eslint-plugin-import/memo-parser/index.js
govuk_publishing_components-17.19.1 node_modules/eslint-plugin-import/memo-parser/index.js
govuk_publishing_components-17.19.0 node_modules/eslint-plugin-import/memo-parser/index.js
govuk_publishing_components-17.18.0 node_modules/eslint-plugin-import/memo-parser/index.js
govuk_publishing_components-17.17.0 node_modules/eslint-plugin-import/memo-parser/index.js
govuk_publishing_components-17.16.0 node_modules/eslint-plugin-import/memo-parser/index.js
govuk_publishing_components-17.15.0 node_modules/eslint-plugin-import/memo-parser/index.js
govuk_publishing_components-17.14.0 node_modules/eslint-plugin-import/memo-parser/index.js
govuk_publishing_components-17.13.0 node_modules/eslint-plugin-import/memo-parser/index.js
govuk_publishing_components-17.12.2 node_modules/eslint-plugin-import/memo-parser/index.js
govuk_publishing_components-17.12.1 node_modules/eslint-plugin-import/memo-parser/index.js
govuk_publishing_components-17.12.0 node_modules/eslint-plugin-import/memo-parser/index.js
govuk_publishing_components-17.11.0 node_modules/eslint-plugin-import/memo-parser/index.js
govuk_publishing_components-17.10.0 node_modules/eslint-plugin-import/memo-parser/index.js
govuk_publishing_components-17.9.0 node_modules/eslint-plugin-import/memo-parser/index.js
govuk_publishing_components-17.8.0 node_modules/eslint-plugin-import/memo-parser/index.js
govuk_publishing_components-17.7.0 node_modules/eslint-plugin-import/memo-parser/index.js
govuk_publishing_components-17.6.1 node_modules/eslint-plugin-import/memo-parser/index.js