Skip to content

Releases: frost-js/core

v4.0.0

Choose a tag to compare

@elusivecodes elusivecodes released this 12 Sep 10:16

Major release standardizing camel casing in the public DOM helper names. Update imports and calls to use the new names.

Breaking changes

  • Renamed callDOMMethod(node, method, ...args) to callDomMethod(node, method, ...args).
  • Renamed getDOMProperty(node, property) to getDomProperty(node, property).
  • Removed the previous export names without compatibility aliases. The helpers retain their existing behavior.

Changed

  • Updated internal imports, tests, and README documentation for the renamed helpers.
  • Rebuilt the distribution bundles and source maps.

v3.1.4

Choose a tag to compare

@elusivecodes elusivecodes released this 08 Sep 06:20

Patch release protecting DOM property access from named elements that shadow native properties. Adds two shared helpers while preserving existing node classification and array handling.

Fixed

  • Read nodeType through DOM prototypes so form controls named or identified as nodeType no longer break DOM predicates.
  • Protect window detection from named elements that shadow a document's defaultView.
  • Keep forms and windows affected by these collisions from being treated as array-like values or expanded by wrap().

Added

  • Exported getDOMProperty(node, property) and callDOMMethod(node, method, ...args) with the correct getter and method receivers, without requiring browser globals, DOM constructors, or new runtime dependencies.

Changed

  • Shared an internal node-type lookup across DOM predicates. isNode() still recognizes Element, Text, and Comment nodes only.
  • Preserved ordinary property access for non-DOM values, including plain document stand-ins and null-prototype objects. DOM prototype lookups intentionally bypass own properties even when the result is undefined.
  • Added focused regression coverage and documented the new helpers. Array identity and existing iterable handling are preserved.
  • Rebuilt the distribution bundles and source maps.

v3.1.3

Choose a tag to compare

@elusivecodes elusivecodes released this 05 Sep 12:52

Patch release focused on utility bug fixes, simpler implementations, and clearer documentation and tests. No utility functions were added or removed.

Fixed

  • Fixed decimal ranges omitting aligned endpoints, such as range(1, 1.4, 0.1) missing 1.4.
  • Recognized plain objects from other JavaScript contexts so deep merges preserve nested fields and copy those objects.
  • Preserved trailing empty slots in nested sparse arrays during deep merges.
  • Handled empty property names consistently in getDot(), hasDot(), setDot(), and forgetDot(), including paths generated by flatten().
  • Kept uppercase words and acronyms together during case conversion, so camelCase('HELLO WORLD') returns helloWorld.
  • Fixed randomInt() rounding up to the excluded upper bound when adding a random offset to a large lower bound.

Changed

  • Simplified range generation, deep merging, partial application, and type checks.
  • Updated the README to reflect current utility behavior and added JSDoc for top-level internal helpers.
  • Consolidated repetitive tests into data-driven cases and made random and timer checks deterministic.
  • Rebuilt the distribution bundles and source maps.

v3.1.2

Choose a tag to compare

@elusivecodes elusivecodes released this 29 Aug 06:50

Patch release reflecting the project's move to the frost-js GitHub organization and standardizing its display name. No exported API changes.

Changed

  • Updated the repository, issue tracker, CI, Codecov, bundle-size, and license links for the new frost-js/core location.
  • Standardized the human-facing project name from FrostCore to Frost Core throughout the README.
  • Updated @fr0st/eslint-config from 5.0.2 to 5.0.3.
  • Refreshed package-lock.json for the updated tooling dependency tree.

v3.1.1

Choose a tag to compare

@elusivecodes elusivecodes released this 28 Aug 23:17

Patch release focused on development tooling and clearer package usage documentation. No exported API changes.

Changed

  • Updated @fr0st/eslint-config from 5.0.1 to 5.0.2.
  • Clarified that the package entry point is ESM-only and added a direct import example.
  • Documented the prebuilt ESM entry point and available ./dist/* and ./src/* package subpaths.
  • Refreshed package-lock.json for the updated tooling dependency tree.

v3.1.0

Choose a tag to compare

@elusivecodes elusivecodes released this 28 Aug 12:52

Minor release focused on modernizing the build and test toolchain and expanding distribution options. No utility functions were added or removed.

Added

  • Added prebuilt ESM bundles, including minified variants and source maps, for direct browser and CDN use.
  • Added public ./dist/* and ./src/* package subpath exports.
  • Added Codecov reporting with LCOV uploads over GitHub OIDC and a repository-defined coverage policy.

Changed

  • Replaced the Rollup and Terser build pipeline with Vite and Rolldown while retaining the existing UMD bundles.
  • Updated the primary package entry point to use the prebuilt ESM bundle.
  • Replaced Mocha with Vitest and converted timer-dependent tests to deterministic fake timers.
  • Updated CI to collect and upload coverage and validate the generated package contents.
  • Refreshed the README, generated bundles, development dependencies, and package-lock.json for the updated toolchain.

v3.0.6

Choose a tag to compare

@elusivecodes elusivecodes released this 27 Aug 06:57

Maintenance release focused on development tooling and npm script consistency. No exported API changes.

Changed

  • Renamed npm scripts from js-compile, js-lint, and js-minify to bundle, lint, and minify.
  • Updated CI, publishing, and development documentation to use the normalized script names.
  • Updated @fr0st/eslint-config from 4.0.0 to 5.0.0 and aligned JSDoc with the expanded lint rules.
  • Simplified internal animation-frame callback forwarding without changing its public behavior.
  • Refreshed generated bundles and package-lock.json for the updated tooling dependency tree.

v3.0.5

Choose a tag to compare

@elusivecodes elusivecodes released this 15 Aug 06:43

Patch release focused on utility correctness, edge-case handling, and release safeguards. No exported APIs were added or removed.

Fixed

  • Updated intersect() to handle empty input and preserve first-array order while removing duplicates.
  • Updated merge() to support self-merges and very large arrays.
  • Improved range() floating-point endpoint handling and wrap() support for iterable values.
  • Preserved call-site context across function wrappers, corrected stale delayed calls, and hardened once() behavior for errors, re-entrancy, and promises.
  • Corrected randomInt() behavior for fractional and large bounds, and improved toStep() handling of scientific notation.
  • Hardened object merge and dot-path utilities against inherited properties and prototype-shaped keys, including wildcard and overwrite handling.
  • Updated escapeRegExp() for Unicode-mode compatibility and randomString() for complete Unicode code points and empty-character validation.
  • Expanded isPlainObject() support for null-prototype and shadowed-constructor objects.

Changed

  • Added --forbid-only to the test command.
  • Added CI validation that generated bundles remain current.
  • Updated source map output naming and added an npm release-age policy.
  • Updated @fr0st/eslint-config from 3.0.0 to 4.0.0.
  • Updated eslint from 10.1.0 to 10.8.1.
  • Updated mocha from 11.7.5 to 11.8.0.
  • Updated rollup from 4.60.0 to 4.62.4.
  • Updated terser from 5.46.1 to 5.50.0.

v3.0.4

Choose a tag to compare

@elusivecodes elusivecodes released this 22 Mar 12:23

Maintenance release focused on development tooling updates. No runtime API changes.

Changed

  • Updated @fr0st/eslint-config from 2.0.6 to 3.0.0.
  • Updated rollup from 4.59.1 to 4.60.0.
  • Refreshed package-lock.json to capture the updated tooling dependency tree.

v3.0.3

Choose a tag to compare

@elusivecodes elusivecodes released this 21 Mar 10:35

Maintenance release focused on CI coverage, publish validation, and tooling updates. No runtime API changes.

Changed

  • Expanded CI to run on Node.js 20, 22, and 24.
  • Added npm pack --dry-run validation to the CI and publish workflows.
  • Added explicit workflow permissions for CI and publish jobs.
  • Updated @fr0st/eslint-config from 2.0.4 to 2.0.6.
  • Updated eslint from 10.0.3 to 10.1.0.
  • Updated rollup from 4.59.0 to 4.59.1.
  • Tightened the declared Node.js engine range to ^20.19.0 || ^22.13.0 || >=24.
  • Removed the manual workflow_dispatch trigger from the publish workflow.