js-message works with bundlers and without a bundler.
Bundlers resolve the bare js-message import normally. Native browser ESM resolves it through a standard import map, with no build or transpilation step.
Runtime entry points
| ID | Focused check |
|---|---|
INT-01 | Root default and named exports share one class. |
INT-02 | The supported index.js and legacy Message.js paths share the root class. |
INT-03 | The browser-global entry exposes a constructor. |
INT-04 | The global JSON getter stays on a non-enumerable prototype. |
INT-05 | The global load() method stays on a non-enumerable prototype. |
INT-06 | Module and global entries agree on JSON text. |
INT-07 | Module and global entries agree on object input. |
INT-08 | The global entry serializes malformed input errors. |
INT-09 | The global toJSON() method returns the exact envelope. |
INT-10 | The module constructor exposes its named CommonJS identity. |
Chrome-only playground integration
These twelve cases exercise browser-only UI and Worker boundaries. They are distinct from—and are not added to—the 83 shared runtime checks.
| ID | Focused check |
|---|---|
INT-BROWSER-01 | The playground completes its same-origin ready and load handshake. |
INT-BROWSER-02 | The default playground module completes with visible round-trip output. |
INT-BROWSER-03 | A snippet cannot spoof runner messages through the Worker global channel. |
INT-BROWSER-04 | Revoked Proxy logging is contained and later console output survives. |
INT-BROWSER-05 | An infinite module is terminated at the playground run limit. |
INT-BROWSER-06 | Excess console lines terminate the module at the output limit. |
INT-BROWSER-07 | Loading source during a run restores the editor controls. |
INT-BROWSER-08 | The editor does not cancel keyboard exit commands. |
INT-BROWSER-09 | Large primitive console strings are bounded before rendering. |
INT-BROWSER-10 | Undefined custom JSON output fails promptly with a readable value. |
INT-BROWSER-11 | A focused recipe opens its exact source in the live workbench. |
INT-BROWSER-12 | The recovery recipe executes malformed JSON as a successful error envelope. |
Repository boundary gates
- Real Chrome runs the shared catalog against the same shipped source as Node.
- The live playground is exercised through its frame, editor controls, worker, and visible output.
- The local documentation server verifies routes, module headers, and security policies.
- A packed tarball is installed in a clean project and checked through every declared export.
Two layers of integration evidence.
The ten shared IDs remain portable between Node and Chrome. The twelve INT-BROWSER cases and other environment-specific gates stay separate so their setup does not masquerade as duplicate protocol coverage.