Sha256: fac942a4d23715ed244862c9f8bc7d8a9a690ae6ae25c01d66cd32a62f7aad56

Contents?: true

Size: 1.35 KB

Versions: 3

Compression:

Stored size: 1.35 KB

Contents

const isBoolean = (str) => /^true/.test(str) || /^false/.test(str)

const ensureTrailingSlash = (path) => (path.endsWith("/") ? path : `${path}/`)

const resolvedPath = (packageName) => {
  try {
    return require.resolve(packageName)
  } catch (e) {
    if (e.code !== "MODULE_NOT_FOUND") {
      throw e
    }
    return null
  }
}

const moduleExists = (packageName) => !!resolvedPath(packageName)

const canProcess = (rule, fn) => {
  const modulePath = resolvedPath(rule)

  if (modulePath) {
    return fn(modulePath)
  }

  return null
}

const loaderMatches = (configLoader, loaderToCheck, fn) => {
  if (configLoader !== loaderToCheck) {
    return null
  }

  const loaderName = `${configLoader}-loader`

  if (!moduleExists(loaderName)) {
    throw new Error(
      `Your Shakapacker config specified using ${configLoader}, but ${loaderName} package is not installed. Please install ${loaderName} first.`
    )
  }

  return fn()
}

const packageMajorVersion = (packageName) => {
  // eslint-disable-next-line import/no-dynamic-require
  const packageJsonPath = require.resolve(`${packageName}/package.json`)
  // eslint-disable-next-line import/no-dynamic-require, global-require
  return require(packageJsonPath).version.match(/^\d+/)[0]
}

module.exports = {
  isBoolean,
  ensureTrailingSlash,
  canProcess,
  moduleExists,
  loaderMatches,
  packageMajorVersion
}

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
shakapacker-8.2.0 package/utils/helpers.js
shakapacker-8.1.0 package/utils/helpers.js
shakapacker-8.0.2 package/utils/helpers.js