![Maven Central Adds Sigstore Signature Validation](https://cdn.sanity.io/images/cgdhsj6q/production/7da3bc8a946cfb5df15d7fcf49767faedc72b483-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Maven Central Adds Sigstore Signature Validation
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.
Reads a directory and return results with the ability to use Ant style file match patterns
A Node.js utility module to read the contents of a directory with support for Ant style filtering to easily order the results - particularly useful for any order specific build system.
Install using npm npm install readdir
then use with require for either synchronous use:
import { readSync, ABSOLUTE_PATHS, CASELESS_SORT } from 'readdir';
const allTextFilesFilter = ['*.js'];
const options = ABSOLUTE_PATHS + CASELESS_SORT;
const contents = readSync('some_path', allTextFilesFilter, options);
contents.forEach(path => console.log(`Matched path: "${path}"`));
or asynchronous use in either promise chains, async/await or with a trailing callback:
import { read, ABSOLUTE_PATHS, CASELESS_SORT } from 'readdir';
const allTextFilesFilter = ['*.js'];
const options = ABSOLUTE_PATHS + CASELESS_SORT;
const logMatched = (contents) => contents.forEach(path => console.log(`Matched path: "${path}"`));
// as a step in a promise chain
read('some_path', allTextFilesFilter, options).then(logMatched);
// as an async/await
logMatched(await read('some-path', allTextFilesFilter));
// as a callback
read('some_path', allTextFilesFilter, options, (err, contents) => {
logMatched(contents);
})
The readSync( path, [filters, [options]])
method can accept a path that is either
absolute or relative to the current working directory.
Filters can be supplied as an array of strings that are Ant style expressions that
any file found in the path
directory must satisfy, use a *
to signify any file
in the current directory or **
to signify any file in the current or any sub directory.
If the filter contains a /
then the file path must also include a path, so */*
would
mean any file of a directory that is a direct sub-directory of the path directory and
*/**
would be any file that is in any subdirectory of the path directory.
To select just one type of file, add a file extension suffix to the filter
(eg: **.js
to pick any JavaScript file in the path directory).
If the options argument is supplied, it should be a number representing the sum of any options you want to apply:
ABSOLUTE_PATHS
changes the return value so that each item in the array is an absolute
path instead of relative to the path directory.
CASELESS_SORT
sort the return array as a case-insensitive sort
CASE_SORT
sort the return array as a case-sensitive sort
INCLUDE_DIRECTORIES
include the names of directories in the results returned, including
just directories can be done by using the filter ['*/']
, note that directory names will
have a trailing slash to identify them from files that have no extension
INCLUDE_HIDDEN
includes the content of directories named with a leading .
(which is commonly
used as a way to hide the directory). Note that files named with a leading .
are included
when they match a file filter and are not impacted by this option: for example .gitignore
would be listed files in .git/*
would not unless INCLUDE_HIDDEN
is set.
NON_RECURSIVE
prevents the automatic recursion to only scan the current directory.
Options can also be supplied as an array of the options bits themselves:
import { readSync, ReadDirOptions } from 'readdir';
const allTextFilesFilter = ['*.js'];
const options = [ReadDirOptions.ABSOLUTE_PATHS, ReadDirOptions.CASELESS_SORT];
const contents = readSync('some_path', allTextFilesFilter, options);
With filters:
const readDir = require('readdir');
// an array of all JavaScript files in some_path/
readDir.readSync( 'some_path/', ['**.js'] );
With ordering of results using filters:
const {readSync, read} = require('readdir');
// an array of all JavaScript files in some_path/ with base.js first, then all core then anything else
const filesArray = readSync( 'some_path/', ['base.js', 'core/**.js', '**.js'] );
// an array of all JavaScript files in some_path/ with base.js first, then all core then anything else
read( 'some_path/', ['base.js', 'core/**.js', '**.js'], function (err, filesArray) {
// err either null or an error instance
// filesArray the same as the return value from readSync
});
With options
const {readSync, read, ABSOLUTE_PATHS, CASELESS_SORT, ReadDirOptions} = require('readdir');
// an array of all files in some_path/ as absolute file paths
readSync( 'some_path/', null, ABSOLUTE_PATHS );
// an array of all files in some_path/ as absolute file paths sorted without case
read( 'some_path/', ABSOLUTE_PATHS + CASELESS_SORT, function (err, allFiles) {});
// an array of just directory names directly under some_path
read( 'some_path/', ['*/'], ReadDirOptions.INCLUDE_DIRECTORIES + ReadDirOptions.NON_RECURSIVE,
function (err, allFiles) {});
Full details available in the change log.
Pull requests and issue reports are welcomed via https://github.com/steveukx/readdir.js
FAQs
Reads a directory and return results with the ability to use Ant style file match patterns
The npm package readdir receives a total of 13,532 weekly downloads. As such, readdir popularity was classified as popular.
We found that readdir demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.
Security News
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.