@rhinostone/swig 2.1.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/HISTORY.md +14 -0
  2. package/ROADMAP.md +11 -0
  3. package/bin/swig.js +272 -87
  4. package/dist/swig.js +120 -41
  5. package/dist/swig.min.js +2 -2
  6. package/dist/swig.min.js.map +1 -1
  7. package/lib/filters.js +23 -20
  8. package/lib/swig.js +13 -2
  9. package/lib/tags/import.js +42 -21
  10. package/lib/tags/include.js +4 -0
  11. package/package.json +3 -4
  12. package/.changes/unreleased/.gitkeep +0 -0
  13. package/.changes/v0.1.2.md +0 -6
  14. package/.changes/v0.1.3.md +0 -6
  15. package/.changes/v0.1.5.md +0 -11
  16. package/.changes/v0.1.6.md +0 -6
  17. package/.changes/v0.1.7.md +0 -7
  18. package/.changes/v0.1.8.md +0 -7
  19. package/.changes/v0.1.9.md +0 -7
  20. package/.changes/v0.10.0.md +0 -11
  21. package/.changes/v0.11.0.md +0 -15
  22. package/.changes/v0.11.1.md +0 -6
  23. package/.changes/v0.11.2.md +0 -6
  24. package/.changes/v0.12.0.md +0 -7
  25. package/.changes/v0.12.1.md +0 -11
  26. package/.changes/v0.13.0.md +0 -8
  27. package/.changes/v0.13.1.md +0 -8
  28. package/.changes/v0.13.2.md +0 -9
  29. package/.changes/v0.13.3.md +0 -5
  30. package/.changes/v0.13.4.md +0 -5
  31. package/.changes/v0.13.5.md +0 -4
  32. package/.changes/v0.14.0.md +0 -6
  33. package/.changes/v0.2.0.md +0 -7
  34. package/.changes/v0.2.1.md +0 -6
  35. package/.changes/v0.2.2.md +0 -6
  36. package/.changes/v0.2.3.md +0 -10
  37. package/.changes/v0.3.0.md +0 -6
  38. package/.changes/v0.4.0.md +0 -11
  39. package/.changes/v0.5.0.md +0 -11
  40. package/.changes/v0.6.0.md +0 -12
  41. package/.changes/v0.6.1.md +0 -6
  42. package/.changes/v0.7.0.md +0 -7
  43. package/.changes/v0.8.0.md +0 -18
  44. package/.changes/v0.9.0.md +0 -13
  45. package/.changes/v0.9.1.md +0 -6
  46. package/.changes/v0.9.2.md +0 -6
  47. package/.changes/v0.9.3.md +0 -6
  48. package/.changes/v0.9.4.md +0 -10
  49. package/.changes/v1.0.0-pre1.md +0 -22
  50. package/.changes/v1.0.0-pre2.md +0 -18
  51. package/.changes/v1.0.0-pre3.md +0 -7
  52. package/.changes/v1.0.0-rc1.md +0 -12
  53. package/.changes/v1.0.0-rc2.md +0 -10
  54. package/.changes/v1.0.0-rc3.md +0 -7
  55. package/.changes/v1.0.0.md +0 -7
  56. package/.changes/v1.1.0.md +0 -6
  57. package/.changes/v1.2.0.md +0 -10
  58. package/.changes/v1.2.1.md +0 -4
  59. package/.changes/v1.2.2.md +0 -4
  60. package/.changes/v1.3.0.md +0 -14
  61. package/.changes/v1.3.2.md +0 -6
  62. package/.changes/v1.4.0.md +0 -13
  63. package/.changes/v1.4.1.md +0 -5
  64. package/.changes/v1.4.2.md +0 -10
  65. package/.changes/v1.4.3.md +0 -4
  66. package/.changes/v1.4.4.md +0 -6
  67. package/.changes/v1.4.5.md +0 -10
  68. package/.changes/v1.4.6.md +0 -6
  69. package/.changes/v1.4.7.md +0 -8
  70. package/.changes/v1.5.0.md +0 -4
  71. package/.changes/v1.6.0.md +0 -4
  72. package/.changes/v2.0.0-alpha.1.md +0 -4
  73. package/.changes/v2.0.0-alpha.2.md +0 -4
  74. package/.changes/v2.0.0-alpha.4.md +0 -10
  75. package/.changes/v2.0.0-alpha.5.md +0 -16
  76. package/.changes/v2.0.0-alpha.6.md +0 -4
  77. package/.changes/v2.0.0-alpha.7.md +0 -4
  78. package/.changes/v2.0.0-alpha.8.md +0 -4
  79. package/.changes/v2.0.0.md +0 -6
  80. package/.changes/v2.0.1.md +0 -8
  81. package/.changes/v2.1.0.md +0 -8
  82. package/.playwright-mcp/console-2026-04-22T15-34-20-480Z.log +0 -2
  83. package/.playwright-mcp/console-2026-04-22T15-35-04-265Z.log +0 -11
  84. package/.playwright-mcp/console-2026-04-22T15-37-26-953Z.log +0 -1
  85. package/.playwright-mcp/console-2026-04-22T15-51-15-160Z.log +0 -148
  86. package/.playwright-mcp/console-2026-04-22T15-51-33-405Z.log +0 -74
  87. package/.playwright-mcp/console-2026-04-22T15-51-53-922Z.log +0 -74
  88. package/.playwright-mcp/console-2026-04-22T15-53-10-736Z.log +0 -74
  89. package/.playwright-mcp/console-2026-04-22T15-53-40-091Z.log +0 -883
  90. package/.playwright-mcp/console-2026-04-22T16-12-02-541Z.log +0 -74
  91. package/.playwright-mcp/console-2026-04-22T16-33-44-982Z.log +0 -13973
  92. package/.playwright-mcp/page-2026-04-22T15-34-24-524Z.yml +0 -1
  93. package/.playwright-mcp/page-2026-04-22T15-35-04-346Z.yml +0 -0
  94. package/.playwright-mcp/page-2026-04-22T15-37-27-039Z.yml +0 -5
  95. package/.playwright-mcp/page-2026-04-22T15-51-15-600Z.yml +0 -76
  96. package/.playwright-mcp/page-2026-04-22T15-51-33-605Z.yml +0 -0
  97. package/.playwright-mcp/page-2026-04-22T15-51-54-206Z.yml +0 -676
  98. package/.playwright-mcp/page-2026-04-22T15-53-11-277Z.yml +0 -632
  99. package/.playwright-mcp/page-2026-04-22T15-53-40-297Z.yml +0 -0
  100. package/.playwright-mcp/page-2026-04-22T16-12-02-855Z.yml +0 -0
  101. package/.playwright-mcp/page-2026-04-22T16-33-45-281Z.yml +0 -0
@@ -1,7 +0,0 @@
1
- [1.0.0-rc3](https://github.com/paularmstrong/swig/tree/v1.0.0-rc3) / 2013-09-14
2
- -------------------------------------------------------------------------------
3
-
4
- * **Fixed** Allow bools in token parser by default. gh-321
5
- * **Fixed** Allow variables as object values. gh-323
6
- * **Fixed** Don't partially match logic words. gh-322
7
- * **Fixed** Parent tag in parent's block with no local block edge case. gh-316
@@ -1,7 +0,0 @@
1
- [1.0.0](https://github.com/paularmstrong/swig/tree/v1.0.0) / 2013-09-23
2
- -----------------------------------------------------------------------
3
-
4
- * **Fixed** Allow parent and other tags to work correctly nested in other tags. gh-331
5
- * **Fixed** Prevent lexer from matching partial logic/words in variables. gh-330
6
-
7
- Migrating from v0.x.x? The upstream wiki has since been deleted; see the individual breaking-change entries below.
@@ -1,6 +0,0 @@
1
- [1.1.0](https://github.com/paularmstrong/swig/tree/v1.1.0) / 2013-10-02
2
- -----------------------------------------------------------------------
3
-
4
- * **Added** Allow logic in default parsing. gh-326
5
- * **Fixed** Error when attempting to wrap spaceless tag around macro/function output. gh-336
6
- * **Fixed** Don't overwrite keys on the locals object. gh-337
@@ -1,10 +0,0 @@
1
- [1.2.0](https://github.com/paularmstrong/swig/tree/v1.2.0) / 2013-12-01
2
- -----------------------------------------------------------------------
3
-
4
- * **Added** Filepath parameter can be passed to swig.run to allow extends in-browser. gh-349
5
- * **Changed** Use local-context first for var lookups. gh-344, gh-347
6
- * **Changed** Allow DOTKEY after functions/objects/filters. gh-355
7
- * **Changed** Context of for-tags carries into includes. gh-356
8
- * **Changed** When a callback is passed into compileFile, catch all errors thrown by compile and pass the error to callback. gh-340
9
- * **Fixed** Instances of Swig retain their options properly. gh-351
10
- * **Fixed** Fix misc documentation issues. gh-359, gh-358
@@ -1,4 +0,0 @@
1
- [1.2.1](https://github.com/paularmstrong/swig/tree/v1.2.1) / 2013-12-02
2
- -----------------------------------------------------------------------
3
-
4
- * **Fixed** Scoping for Express. gh-363
@@ -1,4 +0,0 @@
1
- [1.2.2](https://github.com/paularmstrong/swig/tree/v1.2.2) / 2013-12-02
2
- -----------------------------------------------------------------------
3
-
4
- * **Fixed** CTX var output in imported macros. gh-363
@@ -1,14 +0,0 @@
1
- [1.3.0](https://github.com/paularmstrong/swig/tree/v1.3.0) / 2014-01-20
2
- -----------------------------------------------------------------------
3
-
4
- * **Changed** Removed official node v0.8.x support
5
- * **Added** Custom template loader support. gh-377, gh-384, gh-382
6
- * **Added** Ability to set root path using template loaders. gh-382, gh-293
7
- * **Added** CLI now accepts custom filter and tag arguments. gh-391
8
- * **Added** Allow `set` tag to set keys on objects with bracket and dot-notation. gh-388
9
- * **Added** `groupBy` filter from swig-extras. gh-383
10
- * **Fixed** `swig.run` `filepath` arg is always optional. gh-402
11
- * **Fixed** Filters on non-empty functions apply correctly. gh-397
12
- * **Fixed** Filters applied to functions w/ & w/o dotkeys. gh-365
13
- * **Fixed** `date` filter `N` option returns correct number. gh-375
14
- * **Fixed** Ensure getting parent template checks cache if on. gh-378
@@ -1,6 +0,0 @@
1
- [1.3.2](https://github.com/paularmstrong/swig/tree/v1.3.2) / 2014-01-27
2
- -----------------------------------------------------------------------
3
-
4
- * **Fixed** `for` loop variables on objects. gh-409
5
- * **Fixed** Misc. IE8 fixes. gh-410
6
- * **Fixed** `include` files when loaders have base paths. gh-407
@@ -1,13 +0,0 @@
1
- [1.4.0](https://github.com/paularmstrong/swig/tree/v1.4.0) / 2014-07-03
2
- -----------------------------------------------------------------------
3
-
4
- * **Changed** Allow variable tokens to start with `$`. gh-455
5
- * **Changed** `fs` loader should take `cwd` as default base path. gh-419
6
- * **Changed** handle errors which occur at the time of rendering. gh-417
7
- * **Changed** default options in bin (`varControls`, `tagControls`, `cmtControls`). gh-415
8
- * **Changed** `null` should yield empty string when resolving variable. gh-408
9
- * **Added** Escape character for `date` filter argument. gh-427, gh-432
10
- * **Added** Make `if` and `elseif` throw a better error message when a tag body is omitted. gh-425
11
- * **Fixed** don't throw errors on accessing property of `null` object. gh-471
12
- * **Fixed** `loop` variables work correctly in nested loops. gh-433
13
- * **Fixed** Some IE8 compatibility (require es5). gh-428
@@ -1,5 +0,0 @@
1
- [1.4.1](https://github.com/paularmstrong/swig/tree/v1.4.1) / 2014-07-03
2
- -----------------------------------------------------------------------
3
-
4
- * **Fixed** `macro` argument names colliding with context variable names. gh-457
5
- * **Fixed** filter chaining within tags. gh-441
@@ -1,10 +0,0 @@
1
- [1.4.2](https://github.com/paularmstrong/swig/tree/v1.4.2) / 2014-08-04
2
- -----------------------------------------------------------------------
3
-
4
- * **Added** Report JS parse errors with template filenames. gh-492
5
- * **Fixed** Ensure block-level tags (`set`, etc) are parsed in correct order. gh-495
6
- * **Fixed** Ensure import tag uses current Swig instance's loader. gh-421, gh-503
7
- * **Fixed** Allow disabling cache on compile/render functions directly. gh-423
8
- * **Fixed** Ensure compilation does not leak global variables. gh-496
9
- * **Fixed** Fix for-loops to run on strings. gh-478, gh-479
10
- * **Fixed** Allow macro output to be assigned using `set` tag. gh-499, gh-502
@@ -1,4 +0,0 @@
1
- [1.4.3](https://github.com/gina-io/swig/tree/v1.4.3) / 2026-04-09
2
- -----------------------------------------------------------------
3
-
4
- * **Security** Pin `minimist` to `^1.2.8` via npm `overrides` to close CVE-2021-44906 (prototype pollution reachable through `swig` → `optimist@0.6.1` → `minimist@~0.0.1`). Requires npm >= 8.3 to honour the override. gh-swig-cve-2021-44906
@@ -1,6 +0,0 @@
1
- [1.4.4](https://github.com/gina-io/swig/tree/v1.4.4) / 2026-04-10
2
- -----------------------------------------------------------------
3
-
4
- * **Changed** Replace uglify-js with terser in the Makefile build target -- make build now works on Node >= 14
5
-
6
- * **Security** Block __proto__, constructor, and prototype access in template variables and set-tag assignments to prevent prototype-chain traversal and arbitrary code execution (CVE-2023-25345)
@@ -1,10 +0,0 @@
1
- [1.4.5](https://github.com/gina-io/swig/tree/v1.4.5) / 2026-04-10
2
- -----------------------------------------------------------------
3
-
4
- * **Added** GitHub Actions CI workflow (lint + test on PRs and pushes)
5
-
6
- * **Added** Public roadmap (`ROADMAP.md`)
7
-
8
- * **Changed** Clean up legacy `paularmstrong` references in documentation
9
-
10
- * **Security** Replace `optimist` with `yargs` in CLI, removing `minimist` from the production dependency tree entirely (CVE-2021-44906 fully resolved)
@@ -1,6 +0,0 @@
1
- [1.4.6](https://github.com/gina-io/swig/tree/v1.4.6) / 2026-04-10
2
- -----------------------------------------------------------------
3
-
4
- * **Changed** Exclude `.github/` from npm tarball
5
-
6
- * **Changed** Replace `uglify-js` with `terser` in CLI (`--minify` flag), removing the last Snyk-flagged runtime dependency (ReDoS, CVE in uglify-js@2.4)
@@ -1,8 +0,0 @@
1
- [1.4.7](https://github.com/gina-io/swig/tree/v1.4.7) / 2026-04-10
2
- -----------------------------------------------------------------
3
-
4
- * **Changed** Upgrade `yargs` from 3.x to 17.x, replacing unmaintained transitive dependencies (`os-locale`, `window-size`, `number-is-nan`, `ansi-regex@2`, etc.) with actively maintained equivalents
5
-
6
- * **Changed** Update `engines` field to `node >= 12` (reflects actual minimum required by `terser` and `yargs` 17)
7
-
8
- * **Fixed** Replace private IP address (`192.168.0.2`) with `localhost:11211` in JSDoc example for template loaders
@@ -1,4 +0,0 @@
1
- [1.5.0](https://github.com/gina-io/swig/tree/v1.5.0) / 2026-04-12
2
- -----------------------------------------------------------------
3
-
4
- * **Security** Extended CVE-2023-25345 guards to bracket-notation access (`foo["__proto__"]`), for-loop variables, macro names, and import aliases. All five gaps now rejected at parse time.
@@ -1,4 +0,0 @@
1
- [1.6.0](https://github.com/gina-io/swig/tree/v1.6.0) / 2026-04-13
2
- -----------------------------------------------------------------
3
-
4
- * **Added** `swig compile --recursive <dir>` walks a directory and emits a single AOT bundle module mapping relative paths to compiled template functions. Honours optional `--ext` extension filter; conflicts with `--method-name` / `--wrap-start` / `--wrap-end`. `extends` / `include` / `import` are still resolved at render time through the consumer's loader.
@@ -1,4 +0,0 @@
1
- [2.0.0-alpha.1](https://github.com/gina-io/swig/tree/v2.0.0-alpha.1) / 2026-04-14
2
- ---------------------------------------------------------------------------------
3
-
4
- * **Changed** First release on the 2.0.0 track. Internals carved into `@rhinostone/swig-core` (Phase 1). No user-visible API changes vs 1.6.0 — same entry points, same compiled output, same test suite.
@@ -1,4 +0,0 @@
1
- [2.0.0-alpha.2](https://github.com/gina-io/swig/tree/v2.0.0-alpha.2) / 2026-04-15
2
- ---------------------------------------------------------------------------------
3
-
4
- * **Changed** Phase 2 of the multi-flavor architecture: native frontend now compiles source → IR → backend. All built-in tags (`autoescape`, `filter`, `if`/`elseif`/`else`, `for`, `set`, `block`/`extends`/`parent`, `include`, `import`, `macro`) emit structured IR nodes; `IRLegacyJS` preserves the JS-string `compile` path for userland `setTag` consumers. TokenParser expression-level codegen migrated to IRExpr — every `{{ … }}` output site lowers through `parseOutput` + `parseExpr` (Pratt parser), with a structured fallback to `IRLegacyJS` for shapes the flat IR cannot represent. Filter chains, deep-filter compositions (`{{ a|f(b|g) }}`), and per-operand filter precedence (`{{ a|upper + b|lower }}`) all route through IR via the new `IRFilterCallExpr`. Internal-only carve; no user-visible API changes vs `2.0.0-alpha.1` — same entry points, same compiled-output semantics, all 7 CVE-2023-25345 + 1 CVE-2021-44906 regressions remain green. 526 → 673 Node tests (added IR + parseExpr + parseOutput acceptance suites).
@@ -1,10 +0,0 @@
1
- [2.0.0-alpha.4](https://github.com/gina-io/swig/tree/v2.0.0-alpha.4) / 2026-04-18
2
- ---------------------------------------------------------------------------------
3
-
4
- * **Added** `@rhinostone/swig-twig` gains the `{{ x|date(format[, offset[, abbr]]) }}` filter. Accepts a `Date`, epoch-ms number, or date-compatible string; format spec matches PHP `date()` (backslash escapes literal characters). Wraps the shared `@rhinostone/swig-core/lib/dateformatter`, so `swig.setDefaultTZOffset` applies in Twig templates too. Twig-native `DateTime` / `DateInterval` inputs, timezone-string arguments, and locale-aware month/day names are Phase 4 concerns — today the filter surface matches native swig `date` verbatim.
5
-
6
- * **Fixed** `@rhinostone/swig@2.0.0-alpha.2` was unusable as a Node consumer — it relied on `@rhinostone/swig-core` at runtime but did not declare the dependency, so a fresh `npm install @rhinostone/swig@alpha` failed with `Cannot find module '@rhinostone/swig-core'`. `2.0.0-alpha.3` adds an exact-version pin (`"@rhinostone/swig-core": "2.0.0-alpha.3"`) and ships all three packages (`@rhinostone/swig-core`, `@rhinostone/swig`, `@rhinostone/swig-twig`) in lockstep. `@rhinostone/swig@2.0.0-alpha.2` has been deprecated on the registry pointing users at alpha.3.
7
-
8
- * **Changed** Internal carve — `lib/dateformatter.js` moved into `@rhinostone/swig-core/lib/dateformatter`. The old path stays as a shim so every existing `require('./dateformatter')` consumer (including `lib/swig.js` and `lib/filters.js`) resolves to the same exports object via Node's module cache. `swig.setDefaultTZOffset` continues to mutate the shared `tzOffset` binding. No user-visible change.
9
-
10
- * **Changed** `@rhinostone/swig-twig` soft-deprecates the legacy `exports.parse(source, options)` Path B wrapper. Calling it still returns a parse-tree shape (`{ name, parent, tokens, blocks }`) for backwards compatibility, but emits a one-shot `console.warn` on first invocation. Slated for removal in `2.0.0` stable. Migrate to `new twig.Twig(opts)` and the per-instance `precompile` / `compile` / `render` API installed by `engine.install` — the full-instance path uses closure-captured tag/filter maps and honors `setFilter` / `setTag` overrides, which the Path B wrapper does not.
@@ -1,16 +0,0 @@
1
- [2.0.0-alpha.5](https://github.com/gina-io/swig/tree/v2.0.0-alpha.5) / 2026-04-19
2
- ---------------------------------------------------------------------------------
3
-
4
- * **Added** `@rhinostone/swig-core` gains an `IRVarRefExists` IR node + backend emitter carrying a boolean defined-and-non-null signal for VarRef paths. Needed by Twig `is defined` / `is null` tests and by `??` undefined-fallback, both of which cannot use `IRVarRef` directly because `emitVarRef` coerces missing / `null` to `""`. `ir.varRefExists()` factory on the shared IR surface; `emitVarRefExists` dispatches in `emitExpr` and honors the `_dangerousProps` guard per segment. `checkDot` hoisted out of `checkMatchExpr` into a top-level `checkDotExpr` helper so `emitVarRef` and `emitVarRefExists` share the dot-walk shape; `checkMatchExpr`-emitted output stays byte-identical.
5
-
6
- * **Added** `@rhinostone/swig-twig` `is <test>` / `is not <test>` now routes through `_ext._test_<name>(subject, ...args)`. VarRef subjects with `is defined` / `is null` special-case through `IRVarRefExists` to preserve the defined-or-not-null signal `emitVarRef` would otherwise coerce to `""`. Seven built-in test helpers ship at `packages/swig-twig/lib/tests/index.js` and register on every `Twig` instance via `setExtension`: `defined`, `null`, `empty`, `iterable`, `odd`, `even`, `divisibleby`. Closes the last Phase 4 runtime-parity gap on the render corpus — 11 new `is-*` render fixtures + a `null-coalesce` fixture exercising both branches land under `tests/swig-twig/cases/`.
7
-
8
- * **Added** `@rhinostone/swig-twig` `..` range operator now lowers through `_utils.range`. Previously the parser lowered to an IR varRef of `_range`, which resolved to `_ctx._range` and silently fell through to `_fn` (returning `""`). Now emits `ir.fnCall(ir.varRef([_utils, range]), [start, end])`; the shared `@rhinostone/swig-core` backend reaches `_utils` via the 4th positional arg of the compiled template function. `@rhinostone/swig-core/lib/utils.js` adds `range(start, end)` with Twig-compatible inclusive-both-ends semantics for numeric + single-char-string bounds (ascending and descending). Three new render fixtures (`range-asc`, `range-desc`, `range-char`) under `tests/swig-twig/cases/`.
9
-
10
- * **Added** `@rhinostone/swig-twig` end-to-end render-fixture suite at `tests/swig-twig/cases/` (19 `*.test.twig` + `.expectation.html` pairs across operators, Twig-specific tags, filter semantics, and multi-template flows), walked by `tests/swig-twig/templates.test.js`.
11
-
12
- * **Fixed** `@rhinostone/swig-core` backend now routes Twig / Jinja2 `??` undefined-fallback through `IRVarRefExists` for VarRef LHS, matching Twig-strict semantics (fallback on undefined OR missing property). Before the fix `{{ foo ?? "x" }}` always returned `""` because `emitVarRef` coerces missing paths to `""`, and JavaScript's native `??` only triggers on `null` / `undefined` — the empty-string output was never falsy enough to trip the right-hand expression. `emitBinaryOp` now special-cases VarRef LHS adjacent to `~` and `in`: re-uses the already-emitted `left` string wrapped in an `IRVarRefExists`-gated ternary. Non-VarRef LHS (FnCall, FilterCall, Literal) falls through to bare `left??right` — those emitters do not coerce missing → `""`, so JS-native `??` is sufficient.
13
-
14
- * **Fixed** `@rhinostone/swig-twig` parser now routes STRING and NUMBER literal LHS through `parsePostfix`, so filter chains like `{{ "hi"|upper }}` and `{{ 42|json_encode }}` parse correctly instead of bailing with `Unexpected token "<filter>"`.
15
-
16
- * **Fixed** `@rhinostone/swig-core` backend now lowers Twig/Jinja2 `~` (string-concat) to `(String(left) + String(right))`. Bare `<left>~<right>` emission was JS unary bitwise-NOT and threw `SyntaxError` at compile time.
@@ -1,4 +0,0 @@
1
- [2.0.0-alpha.6](https://github.com/gina-io/swig/tree/v2.0.0-alpha.6) / 2026-04-20
2
- ---------------------------------------------------------------------------------
3
-
4
- * **Added** README.md files for @rhinostone/swig-core and @rhinostone/swig-twig so the npm landing pages and socket.dev have orientation content describing the alpha status, the shared-runtime relationship, and the supported Twig surface. Metadata-only release; no functional changes since 2.0.0-alpha.5.
@@ -1,4 +0,0 @@
1
- [2.0.0-alpha.7](https://github.com/gina-io/swig/tree/v2.0.0-alpha.7) / 2026-04-20
2
- ---------------------------------------------------------------------------------
3
-
4
- * **Changed** Source-comment cleanup pass across the workspace. No functional or API changes since 2.0.0-alpha.5; this is a metadata-only republish with commit messages and source comments tidied. Supersedes 2.0.0-alpha.6 (unpublished).
@@ -1,4 +0,0 @@
1
- [2.0.0-alpha.8](https://github.com/gina-io/swig/tree/v2.0.0-alpha.8) / 2026-04-20
2
- ---------------------------------------------------------------------------------
3
-
4
- * **Changed** `@rhinostone/swig-twig` removes the soft-deprecated `exports.parse(source, options)` wrapper (Path B). Soft-deprecated since `2.0.0-alpha.4`; removed now so any remaining consumer surfaces during the alpha.8 bake window before `2.0.0` stable. Migrate to the per-instance API installed by `engine.install`: `new twig.Twig(opts)` (or the default instance `exports.precompile` / `exports.compile` / `exports.render` / `exports.renderFile`). The full-instance path uses closure-captured tag/filter maps and honors per-instance `setFilter` / `setTag` overrides; the Path B wrapper did not. Internal plumbing (`exports.parser.parse`, `exports.parseFile`) is unaffected.
@@ -1,6 +0,0 @@
1
- [2.0.0](https://github.com/gina-io/swig/tree/v2.0.0) / 2026-05-06
2
- -----------------------------------------------------------------
3
-
4
- * **Fixed** Refreshed stale external URL references across documentation surfaces from the 2026-04-13 link-health audit (gina-io/gina#18). `README.md`, `packages/swig-core/README.md`, `packages/swig-twig/README.md` — swapped `www.npmjs.org` for the canonical `www.npmjs.com` in the NPM badges (the old `.org` form now redirects). `README.md` — rewrote the "Swig v0.x → v1.x migration notes" bullet, since the `paularmstrong/swig/wiki/Migrating-from-...` page was deleted upstream (302s to repo root). `HISTORY.md` — dropped the three dead upstream-wiki links around the v1.0.0 / v1.0.0-pre1 entries; the breaking-change prose stays intact. `browser/comments.js` — updated the DateZ `@license` URL from `TomoUniversalis/DateZ` to `ocrybit/DateZ` (the upstream GitHub user was renamed). `packages/swig-core/lib/dateformatter.js` — dropped the dead `http://tomouniversalis.com` parenthetical from the DateZ copyright comment (domain NXDOMAINs). `.changes/v1.0.0.md` and `.changes/v1.0.0-pre1.md` synced to match the rewritten `HISTORY.md` lines so future `changie merge` runs stay idempotent. Documentation and comment-only; no runtime or API change.
5
-
6
- * **Changed** `2.0.0` stable. Multi-flavor architecture (introduced across `2.0.0-alpha.1` through `2.0.0-alpha.5`) is the production-ready cut. No functional or API changes since `2.0.0-alpha.5`; the `alpha.6`–`alpha.8` cycle was metadata republishes plus removal of the soft-deprecated `exports.parse` Path B wrapper from `@rhinostone/swig-twig`. IR ABI is stable from this release onward; cross-package dependencies pin exact versions and frontends + core release in lockstep. README messaging refreshed across all three packages to reflect production-ready status; package descriptions cleaned of historical internal-tracking references.
@@ -1,8 +0,0 @@
1
- [2.0.1](https://github.com/gina-io/swig/tree/v2.0.1) / 2026-05-10
2
- -----------------------------------------------------------------
3
-
4
- * **Fixed** Fixed bracket-access expressions failing on unspaced binary arithmetic in both `@rhinostone/swig` and `@rhinostone/swig-twig`. The lexer NUMBER rule's optional sign prefix (`[+\-]?`) greedy-ate a leading operator inside bracket expressions — `arr[arr.length-1]` and `arr[idx-1]` lexed as VAR + DOTKEY/VAR + NUMBER(-1) + `]`, and parsePostfix then bailed with "Unexpected closing square bracket". Dropped the optional sign from both `lib/lexer.js` and `packages/swig-twig/lib/lexer.js`; parsePrimary's OPERATOR branch already wraps unary `-` / `+` as IRUnaryOp via parseUnary, so signed-literal paths (`{% set x = -5 %}`, `{{ a + -5 }}`) continue to work and the backend's emitUnaryOp produces byte-identical JS for negative numbers (the `emit('-1.5') === '-1.5'` round-trip is unchanged). Three pre-existing parse/lexer assertions documented the old "NUMBER rule, not UnaryOp" choice and were rewritten to assert the new IRUnaryOp shape; a regression suite covers `arr[arr.length-1]` / `arr[idx-1]` / `arr[idx+0]` / `arr[idx-2]` plus a `*` / `/` round-trip sweep on both render surfaces.
5
-
6
- * **Fixed** Fixed missing whitespace-control parity in `@rhinostone/swig-twig`. `{{- … -}}` and `{%- … -%}` markers now strip surrounding whitespace at chunk boundaries, matching the native swig surface and the upstream Twig spec. Previously absent — `packages/swig-twig/lib/parser.js` had only a basic strip regex and no `varStripBefore` / `*After` / `tagStripBefore` / `*After` detection regexes, so `{{- foo -}}` either rendered as junk or threw "Unexpected end of expression". Implementation mirrors the native chunk-boundary pattern (`stripPrev` / `stripNext` flags, `stripPrevToken` helper) with the corrected strip-regex shape baked in from day one (`-?` adjacent to the open / close marker only, not after `\s*`), so negative-literal expressions like `{{ -5 }}` and `{{- -5 -}}` compose correctly. New `tests/swig-twig/whitespace.test.js` covers the six mirror-of-native cases (strips before / after / both, on `{{...}}` and `{%...%}`) plus four negative-literal composition cases. Same one-level-deep limitation as native — a `{%- endif %}` strips the trailing whitespace of the immediately enclosing tag's last child only, not deeper.
7
-
8
- * **Fixed** Fixed `varStrip` / `tagStrip` regexes in `lib/parser.js` greedy-eating the leading `-` of negative-number expressions. The strip patterns were `^{{-?\s*-?|-?\s*-?}}$` (and the tag-form equivalent) — the second `-?` after `\s*` matched the leading `-` of an expression as if it were a whitespace-control marker, so `{{ -5 }}` and `{{ -1.5 }}` rendered as `"5"` / `"1.5"` (the sign was eaten before the lexer ever saw the chunk). Dropped the inner `-?` from both regexes; whitespace-control now fires only when `-` is immediately adjacent to the open / close marker (`{{-`, `-}}`, `{%-`, `-%}`), matching the standard Twig/Jinja2 contract. Existing whitespace strip-control tests continue to pass, and a new regression case covers negative literals plain, with strip-control before / after / both, plus a check that strip-control on regular variables still composes correctly. `@rhinostone/swig-twig` was unaffected — its parser-side strip regex (`packages/swig-twig/lib/parser.js`) is a simpler `^{{ \s*|\s* }}$` with no `-?` markers, so the same shape doesn't apply (a side-effect of the verification surfaced that swig-twig has no whitespace-control support today; tracked separately).
@@ -1,8 +0,0 @@
1
- [2.1.0](https://github.com/gina-io/swig/tree/v2.1.0) / 2026-05-10
2
- -----------------------------------------------------------------
3
-
4
- * **Added** `@rhinostone/swig` and `@rhinostone/swig-twig` gain `renderFileAsync(path, locals, cb)` and `compileFileAsync(path, options, cb)` for use with async-only loaders (S3, Redis, CDN, fetch-backed). The implementation pre-walks the template dependency graph through the user loader's cb-shape arm (`loader.load(path, cb)`), builds an in-memory map keyed by resolved path, then runs the existing sync render path against an in-memory wrapper for the duration of the call. The pre-walker text-scans for `extends` / `include` / `import` (and Twig `from`) string-literal targets only — dynamic paths (`{% extends parent_var %}`) are not pre-resolved and surface a `Pre-walked map missing path` error at render time, with full async-parse support for dynamic paths tracked separately. Isolation strategy is transactional `self.options.loader` mutation for the duration of the sync render — safe under JS event-loop semantics because sync render never yields, so concurrent `renderFileAsync` calls don't interleave their render phases; documented caveat is not to externally mutate `swig.options.loader` mid-flight on the same instance while async renders are pending. Pre-walker modules live at `lib/async/pre-walker.js` (native) and `packages/swig-twig/lib/async/pre-walker.js` (Twig) — per-flavor copies because the rawTag (`raw` vs `verbatim`) and keyword set differ. Existing sync `renderFile` / `compileFile` consumers are unaffected.
5
-
6
- * **Changed** Internal scaffolding for a future async parse path. `@rhinostone/swig-core` gains four deferred-resolution IR shapes (`IRExtendsDeferred`, `IRIncludeDeferred`, `IRImportDeferred`, `IRFromImportDeferred`) and matching backend emit branches that produce `AsyncFunction`-wrapped template bodies. The async emit flows through a new `_swig.getTemplate(<path>, options)` runtime helper that returns `Promise<TemplateFn>`, and async-mode template functions return `Promise<{output, exports}>` so importers can pick up macro definitions at runtime. Block override resolution rides on a new sixth `_blocks` positional parameter on the wrapped AsyncFunction. All gated behind an explicit `options.codegenMode === 'async'` flag — default is sync and no behavior changes for existing consumers; the frontend tag wiring and public API dispatch that would activate this path are not yet shipped. Mock coverage at `tests/swig-core/async-emit.test.js` (63 cases across the four deferred shapes plus macro exports and block override). ESLint `parserOptions.ecmaVersion` bumped to 2017 for the AsyncFunction literal.
7
-
8
- * **Changed** Internal cleanup. `@rhinostone/swig-core` `IRVarRef` emit shape simplified from a nested-ternary dot-walk into a single-evaluation ternary expression with the same runtime semantics, producing smaller compiled bodies and easier-to-read `precompile().tpl.toString()` output. The legacy twin in `lib/tokenparser.js`'s `checkMatch` updated to match. Phase 2 byte-identity test rewritten to assert the new shape; multi-segment substring assertions still hold unchanged. New `benchmarks/` directory with a runnable render-throughput suite comparing `@rhinostone/swig` against Nunjucks (`benchmarks/render.js`), excluded from the published tarball via `.npmignore`. README clarifications surfaced the prototype-pollution hardening across CVE-2023-25345 / CVE-2021-44906 and added a benchmark pointer.
@@ -1,2 +0,0 @@
1
- [ 4000ms] Invalid or unexpected token
2
- [ 4017ms] [ERROR] Failed to load resource: the server responded with a status of 404 (File not found) @ http://127.0.0.1:8765/favicon.ico:0
@@ -1,11 +0,0 @@
1
- [ 64ms] Error: Unexpected tag "else" on line 1.
2
- at Z.throwError (http://127.0.0.1:8765/dist/browser.js:1:1239)
3
- at k (http://127.0.0.1:8765/dist/browser.js:59:1031)
4
- at http://127.0.0.1:8765/dist/browser.js:59:1470
5
- at Z.each (http://127.0.0.1:8765/dist/browser.js:1:328)
6
- at be.parse (http://127.0.0.1:8765/dist/browser.js:59:1318)
7
- at e.parse (http://127.0.0.1:8765/dist/browser.js:58:1133)
8
- at e.precompile (http://127.0.0.1:8765/dist/browser.js:58:1361)
9
- at e.compile (http://127.0.0.1:8765/dist/browser.js:58:1671)
10
- at e.render (http://127.0.0.1:8765/dist/browser.js:58:2212)
11
- at http://127.0.0.1:8765/test.js:6:16
@@ -1 +0,0 @@
1
- [ 59ms] [LOG] [smoke] [{"id":"simple","got":"Hello TWIG!"},{"id":"extends","got":"<title>Hi</title>Hi WORLD!"},{"id":"autoescape","got":"&lt;script&gt;alert(1)&lt;/script&gt;","payload":"<script>alert(1)</script>"},{"id":"cve","blocked":true}] @ http://127.0.0.1:8765/test.js:35
@@ -1,148 +0,0 @@
1
- [ 285ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ webpack-internal:///./node_modules/react-dom/cjs/react-dom-client.development.js:28002
2
- [ 340ms] [WARNING] [webpack-dev-server] Warnings while compiling. @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
3
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 10:121-152
4
- export 'docsPluginIdForPreferredVersion' (imported as 'docsPluginIdForPreferredVersion') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
5
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 11:464-484
6
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
7
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 12:238-258
8
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
9
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 13:178-210
10
- export 'hideSearchBarWithNoSearchContext' (imported as 'hideSearchBarWithNoSearchContext') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
11
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 13:226-246
12
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
13
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 14:595-615
14
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
15
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 14:617-642
16
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
17
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 14:1317-1337
18
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
19
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 14:1342-1375
20
- export 'useAllContextsWithNoSearchContext' (imported as 'useAllContextsWithNoSearchContext') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
21
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 14:2098-2115
22
- export 'searchBarPosition' (imported as 'searchBarPosition') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
23
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 14:2433-2451
24
- export 'searchResultLimits' (imported as 'searchResultLimits') was not found in '../../utils/proxiedGeneratedConstants' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
25
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 14:2736-2769
26
- export 'useAllContextsWithNoSearchContext' (imported as 'useAllContextsWithNoSearchContext') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
27
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 16:189-193
28
- export 'Mark' (imported as 'Mark') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
29
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 20:94-98
30
- export 'Mark' (imported as 'Mark') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
31
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 28:23-40
32
- export 'searchBarShortcut' (imported as 'searchBarShortcut') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
33
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 28:43-66
34
- export 'searchBarShortcutKeymap' (imported as 'searchBarShortcutKeymap') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
35
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 28:107-130
36
- export 'searchBarShortcutKeymap' (imported as 'searchBarShortcutKeymap') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
37
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 29:274-297
38
- export 'searchBarShortcutKeymap' (imported as 'searchBarShortcutKeymap') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
39
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 31:387-392
40
- export 'askAi' (imported as 'askAi') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
41
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 31:478-483
42
- export 'askAi' (imported as 'askAi') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
43
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 31:606-623
44
- export 'searchBarShortcut' (imported as 'searchBarShortcut') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
45
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 31:625-646
46
- export 'searchBarShortcutHint' (imported as 'searchBarShortcutHint') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
47
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 31:781-804
48
- export 'searchBarShortcutKeymap' (imported as 'searchBarShortcutKeymap') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
49
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 31:892-915
50
- export 'searchBarShortcutKeymap' (imported as 'searchBarShortcutKeymap') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
51
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SuggestionTemplate.js 1:1622-1646
52
- export 'explicitSearchResultPath' (imported as 'explicitSearchResultPath') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
53
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchPage/SearchPage.jsx 3:356-376
54
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
55
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchPage/SearchPage.jsx 3:394-427
56
- export 'useAllContextsWithNoSearchContext' (imported as 'useAllContextsWithNoSearchContext') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
57
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchPage/SearchPage.jsx 3:1026-1046
58
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
59
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchPage/SearchPage.jsx 3:1071-1091
60
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
61
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchPage/SearchPage.jsx 3:1118-1138
62
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
63
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchPage/SearchPage.jsx 3:1360-1380
64
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
65
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchPage/SearchPage.jsx 3:1682-1715
66
- export 'useAllContextsWithNoSearchContext' (imported as 'useAllContextsWithNoSearchContext') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
67
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchPage/SearchPage.jsx 3:1846-1870
68
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
69
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/hooks/useSearchQuery.js 6:1025-1045
70
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
71
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/hooks/useSearchQuery.js 6:1048-1073
72
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
73
- [ 341ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/utils/highlightStemmed.js 1:244-272
74
- export 'searchResultContextMaxLength' (imported as 'searchResultContextMaxLength') was not found in './proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
75
- [ 17067ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ webpack-internal:///./node_modules/react-dom/cjs/react-dom-client.development.js:28002
76
- [ 17083ms] [WARNING] [webpack-dev-server] Warnings while compiling. @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
77
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 10:121-152
78
- export 'docsPluginIdForPreferredVersion' (imported as 'docsPluginIdForPreferredVersion') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
79
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 11:464-484
80
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
81
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 12:238-258
82
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
83
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 13:178-210
84
- export 'hideSearchBarWithNoSearchContext' (imported as 'hideSearchBarWithNoSearchContext') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
85
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 13:226-246
86
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
87
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 14:595-615
88
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
89
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 14:617-642
90
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
91
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 14:1317-1337
92
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
93
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 14:1342-1375
94
- export 'useAllContextsWithNoSearchContext' (imported as 'useAllContextsWithNoSearchContext') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
95
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 14:2098-2115
96
- export 'searchBarPosition' (imported as 'searchBarPosition') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
97
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 14:2433-2451
98
- export 'searchResultLimits' (imported as 'searchResultLimits') was not found in '../../utils/proxiedGeneratedConstants' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
99
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 14:2736-2769
100
- export 'useAllContextsWithNoSearchContext' (imported as 'useAllContextsWithNoSearchContext') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
101
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 16:189-193
102
- export 'Mark' (imported as 'Mark') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
103
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 20:94-98
104
- export 'Mark' (imported as 'Mark') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
105
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 28:23-40
106
- export 'searchBarShortcut' (imported as 'searchBarShortcut') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
107
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 28:43-66
108
- export 'searchBarShortcutKeymap' (imported as 'searchBarShortcutKeymap') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
109
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 28:107-130
110
- export 'searchBarShortcutKeymap' (imported as 'searchBarShortcutKeymap') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
111
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 29:274-297
112
- export 'searchBarShortcutKeymap' (imported as 'searchBarShortcutKeymap') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
113
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 31:387-392
114
- export 'askAi' (imported as 'askAi') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
115
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 31:478-483
116
- export 'askAi' (imported as 'askAi') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
117
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 31:606-623
118
- export 'searchBarShortcut' (imported as 'searchBarShortcut') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
119
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 31:625-646
120
- export 'searchBarShortcutHint' (imported as 'searchBarShortcutHint') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
121
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 31:781-804
122
- export 'searchBarShortcutKeymap' (imported as 'searchBarShortcutKeymap') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
123
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SearchBar.jsx 31:892-915
124
- export 'searchBarShortcutKeymap' (imported as 'searchBarShortcutKeymap') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
125
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchBar/SuggestionTemplate.js 1:1622-1646
126
- export 'explicitSearchResultPath' (imported as 'explicitSearchResultPath') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
127
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchPage/SearchPage.jsx 3:356-376
128
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
129
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchPage/SearchPage.jsx 3:394-427
130
- export 'useAllContextsWithNoSearchContext' (imported as 'useAllContextsWithNoSearchContext') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
131
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchPage/SearchPage.jsx 3:1026-1046
132
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
133
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchPage/SearchPage.jsx 3:1071-1091
134
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
135
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchPage/SearchPage.jsx 3:1118-1138
136
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
137
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchPage/SearchPage.jsx 3:1360-1380
138
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
139
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchPage/SearchPage.jsx 3:1682-1715
140
- export 'useAllContextsWithNoSearchContext' (imported as 'useAllContextsWithNoSearchContext') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
141
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/SearchPage/SearchPage.jsx 3:1846-1870
142
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
143
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/hooks/useSearchQuery.js 6:1025-1045
144
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
145
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/theme/hooks/useSearchQuery.js 6:1048-1073
146
- export 'searchContextByPaths' (imported as 'searchContextByPaths') was not found in '../../utils/proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603
147
- [ 17083ms] [WARNING] [webpack-dev-server] WARNING in ./node_modules/@easyops-cn/docusaurus-search-local/dist/client/client/utils/highlightStemmed.js 1:244-272
148
- export 'searchResultContextMaxLength' (imported as 'searchResultContextMaxLength') was not found in './proxiedGenerated' (module has no exports) @ webpack-internal:///./node_modules/webpack-dev-server/client/modules/logger/index.js:603