meshai/work/dashboard-frontend/node_modules/js-tokens/CHANGELOG.md
malice 2c46c9104d
feat(region-routing): unified per-family routing cards + region-scoped family→channel routing (#87)
* feat(region-routing): P1 tagging + region_routes primitive + read/write API + preview launcher

- config.py: add Coverage.region_tagging (bool=False); add RegionRouteMatrix
  dataclass (enabled, cells) above NotificationsConfig; add region_routes field
  to NotificationsConfig; add explicit hydration branch for region_routes in
  _dict_to_dataclass mirroring destinations pattern.

- coverage_area.py: add MonitoringArea.name (str|None=None, frozen); update
  areas_from_config to preserve name; refactor inline geom extraction from
  classify_event_areas into shared _event_geom_json helper; add
  matching_area_names(geom_json, areas)->list[str] (additive, all named
  matches, config-order, deduped; gate unchanged); add event_region_names
  convenience wrapper.

- coverage_filter.py: add region_tagging ctor kwarg; stamp event.region/
  regions before the gate when region_tagging=True and areas non-empty and
  not event.regions (never clobbers satpass preset).

- pipeline/__init__.py: wire region_tagging into CoverageFilter construction.

- notification_routes.py: add GET /notifications/regions (named coverage area
  names, config-order, deduped); GET /notifications/region-routing (matrix as
  JSON); POST /notifications/region-routing (explicit RMW — only region_routes
  changes, toggles/rules/destinations survive).

- scripts/preview_dashboard.py: mesh-free launcher — dashboard API only, no
  mesh connector, no broadcast loop; vite runs separately.

All 87 coverage tests pass; 300 total pass; 6 pre-existing failures unchanged
(adapter config count mismatch + MeshCore EventType.NEW_CONTACT).

* feat(region-routing): manual region x family matrix editor page

Adds RegionRoutingMatrix.tsx — a plain editor over the region_routes
config primitive. Rows = families (via useFamilies()), cols = regions
(from GET /api/notifications/regions). Each cell exposes MT channel
(ChannelPicker single + includeDisabled), MC channel name (text input),
min_severity select (routine/priority/critical/immediate), and an enabled
checkbox. Only cells where MT or MC is set are included in the sparse
POST payload. Master enable toggle maps to top-level enabled. MT budget
guard warns when more than 7 distinct MT indices are in use. Sticky
family column; horizontal scroll for wide region sets.

Registers route /region-routing in App.tsx and adds "Region Routing"
nav entry (Map icon) under the Meshtastic section in Layout.tsx,
immediately after Routing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(region-routing): regions endpoint reads saved (disk) coverage so routing columns are dynamic without a bot restart; preview reloads config after writes

* feat(routing): unify MT/MC routing into per-family cards; region routing as an in-card expand; remove rules/destinations UI + standalone page

* refactor(routing): move Meshtastic Routing from /notifications to /meshtastic/routing (mirror /meshcore/routing); redirect legacy path

* feat(region-routing): dispatcher honors region_routes matrix (authoritative-on-match, per-region cooldown, per-channel dedup); non-matrix path unchanged

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(region-routing): matrix dedup key must match boot-restore 2-tuple form (prevents restart re-broadcast flood); regression test

---------

Co-authored-by: Matt Johnson <mj@k7zvx.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-07 16:52:03 -06:00

4.4 KiB
Raw Blame History

Version 4.0.0 (2018-01-28)

  • Added: Support for ES2018. The only change needed was recognizing the s regex flag.
  • Changed: All tokens returned by the matchToToken function now have a closed property. It is set to undefined for the tokens where “closed” doesnt make sense. This means that all tokens objects have the same shape, which might improve performance.

These are the breaking changes:

  • '/a/s'.match(jsTokens) no longer returns ['/', 'a', '/', 's'], but ['/a/s']. (There are of course other variations of this.)
  • Code that rely on some token objects not having the closed property could now behave differently.

Version 3.0.2 (2017-06-28)

  • No code changes. Just updates to the readme.

Version 3.0.1 (2017-01-30)

  • Fixed: ES2015 unicode escapes with more than 6 hex digits are now matched correctly.

Version 3.0.0 (2017-01-11)

This release contains one breaking change, that should improve performance in V8:

So how can you, as a JavaScript developer, ensure that your RegExps are fast? If you are not interested in hooking into RegExp internals, make sure that neither the RegExp instance, nor its prototype is modified in order to get the best performance:

var re = /./g;
re.exec('');  // Fast path.
re.new_property = 'slow';

This module used to export a single regex, with .matchToToken bolted on, just like in the above example. This release changes the exports of the module to avoid this issue.

Before:

import jsTokens from "js-tokens"
// or:
var jsTokens = require("js-tokens")
var matchToToken = jsTokens.matchToToken

After:

import jsTokens, {matchToToken} from "js-tokens"
// or:
var jsTokens = require("js-tokens").default
var matchToToken = require("js-tokens").matchToToken

Version 2.0.0 (2016-06-19)

  • Added: Support for ES2016. In other words, support for the ** exponentiation operator.

These are the breaking changes:

  • '**'.match(jsTokens) no longer returns ['*', '*'], but ['**'].
  • '**='.match(jsTokens) no longer returns ['*', '*='], but ['**='].

Version 1.0.3 (2016-03-27)

  • Improved: Made the regex ever so slightly smaller.
  • Updated: The readme.

Version 1.0.2 (2015-10-18)

  • Improved: Limited npm package contents for a smaller download. Thanks to @zertosh!

Version 1.0.1 (2015-06-20)

  • Fixed: Declared an undeclared variable.

Version 1.0.0 (2015-02-26)

  • Changed: Merged the 'operator' and 'punctuation' types into 'punctuator'. That type is now equivalent to the Punctuator token in the ECMAScript specification. (Backwards-incompatible change.)
  • Fixed: A - followed by a number is now correctly matched as a punctuator followed by a number. It used to be matched as just a number, but there is no such thing as negative number literals. (Possibly backwards-incompatible change.)

Version 0.4.1 (2015-02-21)

  • Added: Support for the regex u flag.

Version 0.4.0 (2015-02-21)

  • Improved: jsTokens.matchToToken performance.
  • Added: Support for octal and binary number literals.
  • Added: Support for template strings.

Version 0.3.1 (2015-01-06)

  • Fixed: Support for unicode spaces. They used to be allowed in names (which is very confusing), and some unicode newlines were wrongly allowed in strings and regexes.

Version 0.3.0 (2014-12-19)

  • Changed: The jsTokens.names array has been replaced with the jsTokens.matchToToken function. The capturing groups of jsTokens are no longer part of the public API; instead use said function. See this gist for an example. (Backwards-incompatible change.)
  • Changed: The empty string is now considered an “invalid” token, instead an “empty” token (its own group). (Backwards-incompatible change.)
  • Removed: component support. (Backwards-incompatible change.)

Version 0.2.0 (2014-06-19)

  • Changed: Match ES6 function arrows (=>) as an operator, instead of its own category (“functionArrow”), for simplicity. (Backwards-incompatible change.)
  • Added: ES6 splats (...) are now matched as an operator (instead of three punctuations). (Backwards-incompatible change.)

Version 0.1.0 (2014-03-08)

  • Initial release.