extract-files
Advanced tools
Changelog
13.0.0
^14.17.0 || ^16.0.0 || >= 18.0.0
.node:
URL scheme for Node.js builtin module imports in tests.actions/checkout
to v3.actions/setup-node
to v3.jsconfig.json
:
compilerOptions.maxNodeModuleJsDepth
to 10
.compilerOptions.module
to nodenext
.not IE > 0
from the Browserslist query.Record
types with index signatures.Changelog
12.0.0
Updated Node.js support to ^12.22.0 || ^14.17.0 || >= 16.0.0
.
Added a new is-plain-obj
dependency that is ESM.
Updated dev dependencies, some of which require newer Node.js versions than previously supported.
Public modules are now individually listed in the package files
and exports
fields.
Removed ./package
from the package exports
field; the full package.json
filename must be used in a require
path.
Removed the package main index module; deep imports must be used.
Shortened public module deep import paths, removing the /public/
.
The API is now ESM in .mjs
files instead of CJS in .js
files, accessible via import
but not require
.
Implemented TypeScript types via JSDoc and @deno-types
comments, fixing #7.
Changed the function extractFiles
parameters. The previously third isExtractableFile
parameter has been renamed isExtractable
, is now the second parameter, and no longer defaults to the function isExtractableFile
to avoid a redundant import when a custom function is specified.
The function extractFiles
now does basic runtime argument type validation.
The function extractFiles
now also deep clones “plain” objects that aren’t Object
instances (e.g. Object.create(null)
).
Removed out of the box React Native support. The class ReactNativeFile
is no longer exported, or matched by the function isExtractableFile
.
This class was bloating non React Native environments with an extra module, increasing bundle sizes when building and adding an extra step to ESM loading waterfalls in browsers.
It’s the responsibility of Facebook to adhere to web standards and implement spec-complaint File
, Glob
, and FormData
globals in the React Native environment.
In the meantime, React Native projects can manually implement a class ReactNativeFile
and match it with a custom function isReactNativeFile
for use with the function extractFiles
.
types
script.jsdoc-md
dev dependency and the related package scripts, replacing the readme “API” section with a manually written “Exports” section.assertBundleSize
function to assert module bundle size in tests:
extractFiles
function test bug.extractFiles
function test clarifying that object properties with Symbol
keys don’t get cloned.singleQuote
to the default, false
.license.md
MIT License file, fixing #19 via #20.Changelog
11.0.0
extractFiles
now deeply clones an input value containing multiple references of an object or array with a mirrored reference structure instead of creating multiple objects or arrays. This change shouldn’t affect typical JSON.stringify
use with cloned values.extractFiles
now uses for…of
to iterate FileList
instances.main
field path.extractFiles
now correctly handles circular references within the input value by recreating the circular references in the returned clone instead of infinitely recursing to the point of a Maximum call stack size exceeded
error, fixing #14.extractFiles
tests to use Object.freeze
with input objects and arrays to ensure input isn’t mutated.Changelog
10.0.0
^12.20 || >= 14.13
.package.json
exports
field public subpath folder mapping (deprecated by Node.js) with a subpath pattern, fixing #17. Deep require
paths within extract-files/public/
must now include the .js
file extension..mjs
files instead of CJS in .js
files.hard-rejection
to detect unhandled Promise
rejections in tests, as Node.js v15+ does this natively.revertable-globals
to define globals per-test.esbuild
and gzip-size
, removing size-limit
related dev dependencies, config, and scripts.npm-debug.log
from the .gitignore
file as npm v4.2.0+ doesn’t create it in the current working directory.extractFiles
with an undefined
value.actions/checkout
to v2.actions/setup-node
to v2.CI
environment variable as it’s set by default.main
field path.jsdoc-md
v10 automatically generates a Prettier formatted readme.test:jsdoc
script that checks the readme API docs are up to date with the source JSDoc..js
file extension in internal require
paths.changelog.md
is no longer published.Changelog
9.0.0
^10.17.0 || ^12.0.0 || >= 13.7.0
.lib
directory to public
; existing deep import or require paths must be updated.module
field.npm install-test
command..js
files are parsed as scripts..js
file extensions from require
paths.import
and require
the public API.Changelog
8.1.0
Updated the package exports
field:
Deep imports to specific files are now allowed, e.g.
import extractFiles from "extract-files/lib/extractFiles.js";
const extractFiles = require("extract-files/lib/extractFiles");
The package.json
can now be required, e.g.
const pkg = require("extract-files/package.json");
// With Node.js --experimental-json-modules flag.
import pkg from "extract-files/package.json";
engines.node
field to 10 - 12 || >= 13.7
to reflect the package exports
related breaking changes in extract-files@8.0.0
.prepare:prettier
and test:prettier
scripts.test:eslint
script args for consistency with test:prettier
.semi
to the default, true
.src
directory so lib
and test
files are separate with their own .babelrc.js
files.Changelog
8.0.0
exports
field to support native ESM in Node.js..js
(CJS) instead of .mjs
(ESM), so undocumented deep imports may no longer work. This approach avoids the dual package hazard.@babel/plugin-proposal-class-properties
from dev dependencies and the Babel config.prettier
v2.ExtractableFileMatcher
JSDoc typedef.Changelog
7.0.0
tap
and nyc
with test-director
, coverage-node
and hard-rejection
to improve the dev experience, test ESM natively with Node.js, and reduce the dev install size by ~78.8 MB. These new dev dependencies require Node.js v10+.eslint-plugin-import-order-alphabetical
dev dependency.husky
and lint-staged
.Changelog
6.0.0
extractFiles
function, for specifying a custom extractable file matcher.isExtractableFile
function that is used as the default extractable file matcher for the extractFiles
function. This can be used in a custom extractable file matcher implementation to match the default extractable files, along with additional custom files..github/funding.yml
to display a sponsor button in GitHub.package.json
funding
field to enable npm CLI funding features.size-limit
dev dependency with @size-limit/preset-small-lib
.babel-plugin-transform-require-extensions
dev dependency and ensured ESM import specifiers in both source and published .mjs
files contain file names with extensions, which are mandatory in the final Node.js ESM implementation. Published CJS .js
files now also have file extensions in require
paths.module
field.require-jsdoc
comments.test
script as they are the slowest.test:tap
script to workaround a tap
bug.prepublishOnly
script.plugins
before presets
in Babel config as they run first.package.json
by moving dev tool config to files.lib
directory in .gitignore
and .eslintignore
.package-lock.json
from .gitignore
and .prettierignore
as it’s disabled in .npmrc
anyway.Changelog
5.0.1
new Date()
) references are copied to the clone instead of recursed as objects; fixing jaydenseric/apollo-upload-client#138 via #9.