vfile-is

vfile utility to check if a vfile passes a test

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
vfile-is
203.0.09 months ago5 years agoMinified + gzip package size for vfile-is in KB

Readme

vfile-is
!Buildbuild-badgebuild !Coveragecoverage-badgecoverage !Downloadsdownloads-badgedownloads !Sizesize-badgesize !Sponsorssponsors-badgecollective !Backersbackers-badgecollective !Chatchat-badgechat
vfilevfile utility to check if a file passes a test.

Contents

*   [`convert(check)`](#convertcheck)
*   [`is(file, check?)`](#isfile-check)
*   [`Assert`](#assert)
*   [`Check`](#check)
*   [`CheckFields`](#checkfields)
*   [`CheckFile`](#checkfile)

What is this?

This package is a small utility that checks that a file is a certain file.

When should I use this?

Use this small utility if you find yourself repeating code for checking files.

Install

This package is ESM onlyesm. In Node.js (version 16+), install with npm:
npm install vfile-is

In Deno with esm.shesmsh:
import {is} from 'https://esm.sh/vfile-is@3'

In browsers with esm.shesmsh:
<script type="module">
  import {is} from 'https://esm.sh/vfile-is@3?bundle'
</script>

Use

import {VFile} from 'to-vfile'
import {is} from 'vfile-is'

is(undefined, '.js') // => false
is({}, '.js') // => false

is(new VFile({path: 'index.js'}), '.js') // => true
is(new VFile({path: 'index.js'}), '.md') // => false
is(new VFile({path: 'index.js'}), 'index.js') // => true
is(new VFile({path: 'index.js'}), 'readme.md') // => false
is(new VFile({path: 'index.js'}), '*.js') // => true
is(new VFile({path: 'index.js'}), '*.md') // => false

is(new VFile({path: 'index.js'}), {stem: 'index'}) // => true
is(new VFile({path: 'index.js'}), {stem: 'readme'}) // => false

is(new VFile({path: 'index.js'}), {stem: {prefix: 'in'}}) // => true
is(new VFile({path: 'index.js'}), {stem: {prefix: 're'}}) // => false
is(new VFile({path: 'index.js'}), {stem: {suffix: 'ex'}}) // => true
is(new VFile({path: 'index.js'}), {stem: {suffix: 'me'}}) // => false

API

This package exports the identifiers convertapi-convert and isapi-is. There is no default export.

convert(check)

Create an assertion from check.
Parameters
— check
Returns
Assertion (Assertapi-assert).

is(file, check?)

Check if file is a specific file.
Converts check to an assertion and calls that assertion with file. If you’re doing a lot of checks, use convert.
Parameters
  • file (unknown)
— file to check (typically [`VFile`][vfile])
— check
Returns
Whether file is a file and matches check (boolean).

Assert

Check that a file is a vfile and passes a test (TypeScript type).
Parameters
  • file (unknown)
— file to check (typically [`VFile`][vfile])
Returns
Whether file is a file and matches a bound check (boolean).

Check

Different ways to check for a specific file (TypeScript type).
  • if check is a glob string, checks if that glob matches file.path
  • if check is a normal string, checks if that is file.basename or
`file.extname`
  • if check is a function, checks whether that yields true when called
  • if check is a normal object, checks if the given file matches the
[`CheckFields`][api-check-fields]
  • if check is an array, all tests in it must pass
Type
type Check =
  | Array<CheckFields | CheckFile | string | null | undefined>
  | CheckFields
  | CheckFile
  | string
  | null
  | undefined

CheckFields

Object describing fields to values (TypeScript type).
Each key is a field in the file and each value is:
  • boolean — whether the field exists or not
  • object — start (prefix) and/or end (suffix) of the field
  • string — exact value of that field
Type
type FieldPartial = {
  prefix?: string | null | undefined
  suffix?: string | null | undefined
}

type CheckFields = Record<
  string,
  FieldPartial | boolean | string | null | undefined
>

CheckFile

Check if a file passes a custom test (TypeScript type).
Parameters
— file to check
Returns
Whether the test passed for this file (boolean, optional).

Types

This package is fully typed with TypeScript. It exports the additional types Assertapi-assert, Checkapi-check, CheckFieldsapi-check-fields, and CheckFileapi-check-file.

Compatibility

Projects maintained by the unified collective are compatible with maintained versions of Node.js.
When we cut a new major release, we drop support for unmaintained versions of Node. This means we try to keep the current release line, vfile-is@^3, compatible with Node.js 16.

Contribute

See contributing.mdcontributing in vfile/.githubhealth for ways to get started. See support.mdsupport for ways to get help.
This project has a code of conductcoc. By interacting with this repository, organization, or community you agree to abide by its terms.

License

MITlicense © Titus Wormerauthor