New:Socket for Asana Is Now Available.Learn more
Get Started

easy-stack

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

easy-stack - npm Package Compare versions

Comparing version
2.1.0
to
2.1.1
+9
-0
CHANGELOG.md

@@ -7,2 +7,11 @@ # Changelog

## 2.1.1 — 2026-08-23
- Add a dedicated Behavioral suite with composite consumer scenarios and real-Chrome Playground journeys for visible state, editor synchronization, failure, recovery, and user-directed Worker interruption.
- Prove that easy-stack works with bundlers and without a bundler: bundlers resolve the bare package import normally, while native browser ESM uses an explicit import map with no build or transpilation step.
- Document the complete normal npm-layout map, HTTP(S) and server-exposure requirements, unsupported <code>file://</code> path, and zero-build/no-transpilation workflow across every browser-facing guide and site area.
- Add a Given/When/Then native no-bundler acceptance scenario plus static source and deployment assertions that preserve import-map ordering and targets.
- Keep dependency-conflict and scoped-map testing explicitly not applicable while the published package has zero runtime dependencies; metadata and source guards force reassessment if that changes.
- Make the release workflow verify and skip an already-published matching immutable version instead of attempting a duplicate publication.
## 2.1.0 — 2026-08-21

@@ -9,0 +18,0 @@

@@ -31,2 +31,21 @@ # Migrating to easy-stack 2.1

## Browser package resolution
easy-stack works with bundlers and without a bundler. Bundlers resolve the bare package import normally. Native browser ESM needs an import map before the module script, but it needs no build or transpilation step:
```html
<script type="importmap">
{
"imports": {
"easy-stack": "./node_modules/easy-stack/stack.js"
}
}
</script>
<script type="module">
import Stack from 'easy-stack';
</script>
```
These URLs are relative to the HTML document. Serve the application over HTTP(S), expose the mapped files from the server, and do not use `file://`. Version 2.1.1 has zero runtime dependencies, so no dependency entries or scoped nested-dependency map are required.
## Contents and state

@@ -75,1 +94,2 @@

7. Use `es5.js` for browser targets that cannot parse private class fields.
8. For native no-bundler ESM, keep the import map before all module scripts and verify it over HTTP(S).
+5
-1
{
"name": "easy-stack",
"version": "2.1.0",
"version": "2.1.1",
"description": "Zero-dependency cooperative LIFO execution for Node.js and browsers",

@@ -47,2 +47,6 @@ "type": "module",

"test:functional": "node ./scripts/test.js functional",
"test:behavioral": "node ./scripts/test.js behavioral",
"test:behavioral:chrome": "node ./scripts/test.js behavioral-browser",
"test:browser-contract": "node ./scripts/verify-browser-contract.js .",
"test:coverage-inventory": "node ./scripts/verify-coverage-inventory.js",
"test:integration": "node ./scripts/test.js integration",

@@ -49,0 +53,0 @@ "test:regression": "node ./scripts/test.js regression",

@@ -13,3 +13,3 @@ [![easy-stack — explicit LIFO flow control for JavaScript](https://raw.githubusercontent.com/RIAEvangelist/easy-stack/main/assets/easy-stack-header.png)](https://riaevangelist.github.io/easy-stack/)

[![CI](https://github.com/RIAEvangelist/easy-stack/actions/workflows/ci.yml/badge.svg)](https://github.com/RIAEvangelist/easy-stack/actions/workflows/ci.yml)
[![test cases](https://img.shields.io/badge/test_cases-86_unique-12d9c4)](https://riaevangelist.github.io/easy-stack/testing/)
[![test cases](https://img.shields.io/badge/test_cases-94_unique-12d9c4)](https://riaevangelist.github.io/easy-stack/testing/)
[![test runner](https://img.shields.io/badge/test_runner-vanilla--test%202.1.1-12d9c4)](https://riaevangelist.github.io/easy-stack/testing/)

@@ -86,6 +86,25 @@ [![coverage](https://img.shields.io/badge/coverage-100%25-12d9c4)](https://riaevangelist.github.io/easy-stack/testing/)

Use `stack.js` as a native module, `stack-vanilla.js` as a modern classic script, or `es5.js` for legacy syntax:
easy-stack works with bundlers and without a bundler. Bundlers resolve the bare `easy-stack` import normally. Native browser ESM resolves that same bare import through an import map, with no build or transpilation step:
```html
<script src="https://unpkg.com/easy-stack@2.1.0/stack-vanilla.js"></script>
<script type="importmap">
{
"imports": {
"easy-stack": "./node_modules/easy-stack/stack.js"
}
}
</script>
<script type="module">
import Stack from 'easy-stack';
const stack = new Stack();
</script>
```
Import-map URLs are relative to the HTML document. Serve the page over HTTP(S), and configure the server to expose the mapped `node_modules` files; `file://` is not a supported path. easy-stack currently has zero runtime dependencies, so the complete normal-layout map needs only the package entry and no scoped nested-dependency map.
Alternatively, use `stack-vanilla.js` as a modern classic script or `es5.js` for legacy syntax:
```html
<script src="https://unpkg.com/easy-stack@2.1.1/stack-vanilla.js"></script>
<script>

@@ -100,3 +119,3 @@ const stack = new Stack();

The non-duplicated catalog contains 86 uniquely identified Unit, Functional, Integration, and Regression cases, all registered through `vanilla-test@2.1.1`. CI proves the exact Node 22.13 floor and Node 24 across Linux, macOS, and Windows; it also verifies same-constructor ESM/CommonJS interop, browser globals, the packed npm artifact, documentation links, the opaque Playground Worker, and 100% statement, branch, function, and line coverage.
The non-duplicated catalog contains 94 uniquely identified Unit, Functional, Behavioral, Integration, and Regression cases, all registered through `vanilla-test@2.1.1`. The same shared JavaScript inventory imports `easy-stack` by package name in Node and real Chrome; Chrome resolves it through the configured native import map. CI proves the exact Node 22.13 floor and Node 24 across Linux, macOS, and Windows; it also verifies composite consumer outcomes, five rendered Playground journeys in real Chrome, same-constructor ESM/CommonJS interop, browser globals, the packed npm artifact, documentation and deployment contracts, the opaque Playground Worker, and 100% statement, branch, function, and line coverage.

@@ -107,2 +126,4 @@ ```sh

npm run test:functional
npm run test:behavioral
npm run test:behavioral:chrome
npm run test:integration

@@ -109,0 +130,0 @@ npm run test:regression