================================================================================
THIRD-PARTY NOTICES
================================================================================

The projects below shaped fjader's design, and parts of its code are adapted
from Mosaic. Their licenses follow in full.

--------------------------------------------------------------------------------
Mosaic, by the UW Interactive Data Lab
https://github.com/uwdata/mosaic
--------------------------------------------------------------------------------

fjader began as a Mosaic client, with @uwdata/mosaic-core as a dependency, and
its query layer is built on what Mosaic showed works. It now has its own query
layer, still builds every query with @uwdata/mosaic-sql, a direct dependency,
and kept Mosaic's ideas and, in places, the structure of Mosaic's code:

- Pre-aggregation with sufficient statistics. The preaggregation code in
  src/lib/query-engine/ (sufficient-statistics.ts and preagg/) follows
  mosaic-core's preagg module: aggregates rewritten into partial statistics,
  FILTER clauses carried onto them, and preaggregated tables named by a hash
  of their query.
- The crossfilter selection model, in which a selection clause filters every
  mark except those its source excludes.
- vgplot's API style, its interactors (interval brushes, toggles) and its
  JSON spec layout (hconcat, vconcat), without being compatible with vgplot.

Mosaic's license, reproduced in full, including its own notice for the parts
it derives from Observable Plot:

BSD 3-Clause License

Copyright (c) 2023-2025, UW Interactive Data Lab

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its
   contributors may be used to endorse or promote products derived from
   this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

---

Portions of this software are derived from Observable Plot, which is released
under the ISC license.

Copyright 2020-2023 Observable, Inc.

Permission to use, copy, modify, and/or distribute this software for any purpose
with or without fee is hereby granted, provided that the above copyright notice
and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
THIS SOFTWARE.

--------------------------------------------------------------------------------
Observable Plot, by Observable, Inc.
https://github.com/observablehq/plot
--------------------------------------------------------------------------------

fjader's mark API borrows from Observable Plot, though it is its own API and
not compatible with Plot's: mark names and channels, the shorthands that imply
stacking (x for x1/x2, y for y1/y2), the stackX/stackY conventions, z as the
series grouping channel, and many defaults.

fjader contains no code from Observable Plot; its license is included as a
courtesy. Observable Plot's license (ISC):

Copyright 2020-2025 Observable, Inc.

Permission to use, copy, modify, and/or distribute this software for any purpose
with or without fee is hereby granted, provided that the above copyright notice
and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
THIS SOFTWARE.

--------------------------------------------------------------------------------
Bundled dependencies
--------------------------------------------------------------------------------

The Python package ships prebuilt JavaScript bundles that include third-party
packages, among them Svelte, d3, Flechette, mosaic-sql, Apache Arrow and
DuckDB-WASM. Each bundle sits next to a THIRD_PARTY_LICENSES.txt listing every
package compiled into it, with its license in full. The npm package bundles
nothing: its dependencies install with their own licenses.
