v1.0.0
What's Changed
- Clarify that
.clear()
works on arrays by @jviotti in #11 - Implement
make_object
andmake_array
constructors by @jviotti in #12 - Document how to convert existing instances to arrays/objects by @jviotti in #14
- Note functions that are useful for programatically creating containers by @jviotti in #15
- Test programatically creating objects and arrays by @jviotti in #13
- Implement prettify contrib/ program by @jviotti in #16
- Implement a
contrib/
minify program by @jviotti in #17 - Do not build
contrib/
programs by default by @jviotti in #19 - Add FetchContent usage instructions by @jviotti in #20
- Do not build tests by default by @jviotti in #21
- Reduce required C++ version to 17 by @jviotti in #23
- Improve contribution instructions by @jviotti in #26
- Vendor bootstrap by @jviotti in #25
- Minor fixes to support Windows by @jviotti in #28
- Support a custom backend path by @jviotti in #29
- Do not run stdin contrib tests on Windows by @jviotti in #30
- Extract contrib test scripts into variables by @jviotti in #31
- Specify --build-config when running ctest by @jviotti in #32
- Fix Windows stdin checks by @jviotti in #33
- Support finding rapidjson from vcpkg by @jviotti in #34
- Fix crash on .assign() with move semantics by @jviotti in #35
- Namespace JSON tests by @jviotti in #36
- Implement a metaschema() function by @jviotti in #37
- Refactor metaschema() to solve one-definition-rule problem by @jviotti in #38
- Specify
--config
when building using CMake by @jviotti in #39 - Simplify JSON unit tests by @jviotti in #40
- Upgrade vendorpull by @jviotti in #41
- Implement a JSON Schema
id()
function by @jviotti in #42 - Implement a function to return schema vocabularies by @jviotti in #43
- Ignore
vendor/
in.ackrc
by @jviotti in #44 - Implement a function to deep-copy a JSON document or value by @jviotti in #45
- Support from() when passing a zero literal by @jviotti in #46
- Add easy-to-use range-based for loop support by @jviotti in #50
- Implement support for iterating over subschemas by @jviotti in #51
- Increase granularity of GNU Make targets by @jviotti in #52
- Implement a default JSON Schema 2020-12 schema walker by @jviotti in #53
- Let vocabularies() take an optional default metaschema URI by @jviotti in #56
- Check vocabularies at every step in
subschema_iterator()
by @jviotti in #55 - Implement a flat subschema iterator by @jviotti in #57
- Change domain to jsontoolkit.org by @jviotti in #60
- Make JSON Toolkit build on Debian 11 (current Stable) by @jviotti in #58
- Enable pthreads on Linux by @jviotti in #61
- Test building on GNU/Linux using GCC by @jviotti in #59
- Add a contrib tool to analyze JSON Schema keywords by @jviotti in #47
- Implement a function to determine the schema's dialect URI by @jviotti in #62
- Assume core vocabularies if $vocabulary is unset by @jviotti in #63
- Take small enough
std::uint64_t
as input infrom()
by @jviotti in #64 - Fix
flat_subschema_iterator()
on schema without a metaschema by @jviotti in #65 - Define a schema walker that never walks by @jviotti in #66
- Implement
erase_many()
by @jviotti in #67 - Document GCC support by @jviotti in #68
- Minor misc fixes for
erase_many()
by @jviotti in #69 - Define
defines_any()
by @jviotti in #70 - Fix
push_back()
docs example by @jviotti in #71 - Implement
is_number()
by @jviotti in #72 - Support using
from()
withstd::size_t
by @jviotti in #73 - Implement an "add" function to increment/decrement numbers in-place by @jviotti in #74
- Document the
contains()
array function by @jviotti in #75 - Implement a "compare" function for standard algorithms by @jviotti in #76
- Generalize iterator-based
erase_many
to work on arrays by @jviotti in #77 - Implement a
clear_except()
function for objects by @jviotti in #78 - Make sure
schema_walker_strategy_t
is defined outside of GCC by @jviotti in #80 - Build website using CMake by @jviotti in #81
- Test CMake installation on CI by @jviotti in #82
- Make Makefile NMAKE compliant by @jviotti in #83
- Disable some JSONTestSuite tests for MSVC by @jviotti in #85
- Fix cast to make MSVC happy by @jviotti in #84
- Add basic Windows support by @jviotti in #86
- Create a new "test" target in the Makefile by @jviotti in #87
- Get rid of
fail.sh
contrib test helper script by @jviotti in #88 - Do not run tests twice on the Makefile by @jviotti in #89
- Bring back "contrib" tests on Windows by @jviotti in #27
- Run
clang_format_test
, notclang_format
on CI by @jviotti in #92 - Implement a sample contrib cURL resolver by @jviotti in #91
- Disable min/max macros on MSVC by @jviotti in #94
- Implement a local-first resolver for 2020-12 official schemas by @jviotti in #93
- Split JSON and JSON Schema into its own modules within
src/
by @jviotti in #95 - Merge the local resolver with the core JSON Schema module by @jviotti in #96
- Support JSON Schema 2019-09 on the default resolver by @jviotti in #97
- Throw if the core vocabulary is missing or set to optional by @jviotti in #98
- Better handle vocabularies for boolean schemas by @jviotti in #99
- Check current dialect when fetching vocabularies by @jviotti in #100
- Make
vocabularies()
dialect-aware by @jviotti in #101 - Add 2019-09 support in
vocabularies()
by @jviotti in #102 - Support 2020-12 and 2019-09 Hyper Schema by @jviotti in #104
- Note intention to support older JSON Schema dialects in
.vocabularies()
by @jviotti in #105 - Implement a
copy()
function for JSON containers by @jviotti in #106 - Add a
copy()
overload to duplicate entire containers by @jviotti in #107 - Ensure doubles are never NaN or infinity by @jviotti in #108
- Re-license the project as AGPL by @jviotti in #109
- Implement a
to_vector()
utility function by @jviotti in #110 - Implement an
is_positive()
utility function by @jviotti in #111 - Be explicit about JSON iterator begin/end types by @jviotti in #112
- Add iterator traits to JSON iterators by @jviotti in #113
- Declare
iterator
andconst_iterator
forSchemaWalker
by @jviotti in #114 - Run CMake parallel builds by default by @jviotti in #115
- Handle "None" schema walker strategy on the
switch
case by @jviotti in #117 - Run tests in parallel by @jviotti in #118
- Properly allocate keys on object assignment by @jviotti in #119
- Implement a hash function for JSON documents by @jviotti in #120
- Rename "dialect()" function to "draft()" by @jviotti in #121
- Integrate with Cirrus CI for BSD runs by @jviotti in #122
- Mention FreeBSD support by @jviotti in #123
- Improve compiler warnings by @jviotti in #124
- Install README on the package docs directory by @jviotti in #125
- Define library aliases by @jviotti in #126
- Always perform component-based installation by @jviotti in #127
- Allow installing contrib programs by @jviotti in #128
- Use :: namespaced target aliases by @jviotti in #129
- Correctly define header sources in JSON interface library by @jviotti in #130
- Set correct output/export names for libraries by @jviotti in #131
- Only install README on top-level builds by @jviotti in #133
- Remove warnings macro in favor of global options by @jviotti in #134
- Ignore -Wdocumentation for RapidJSON by @jviotti in #135
- Exercise installation on local builds by @jviotti in #136
- Fix
JSONTOOLKIT_BACKEND_PATH
empty conditional logic by @jviotti in #137 - Declare top-level JSON header as part of the JSON library by @jviotti in #138
- Install library CMake exports by @jviotti in #139
- Turn rapidjson wrapper into an imported target by @jviotti in #140
- Make the project consumable by CMake
find_package()
by @jviotti in #132 - Better integrate with VCPKG on Windows by @jviotti in #141
- Add a Brewfile for macOS dependencies by @jviotti in #142
- Remove artificial JSON Schema
resolver.h
install by @jviotti in #144 - Implement a basic
ParseError
exception subclass by @jviotti in #145 - Introduce a general purpose
SchemaError
exception subclass by @jviotti in #146 - Implement a
ResolutionError
exception subclass by @jviotti in #147 - Support calling
from()
with astd::string_view
by @jviotti in #148 - Add a Sourcemeta namespaces to libraries by @jviotti in #149
- Update
#if
guards to useSOURCEMETA_
by @jviotti in #150 - Re-organize installed CMake files by @jviotti in #151
- Import the Noa project by @jviotti in #152
- Use Noa's compiler variables by @jviotti in #153
- Simplify ISO C++ settings with Noa by @jviotti in #154
- Integrate with ClangTidy by @jviotti in #155
- Upgrade Noa to handle RPATHs by @jviotti in #156
- Address ClangTidy comments by @jviotti in #157
- Add a CHANGELOG template by @jviotti in #159
- Use underscores in contrib apps by @jviotti in #160
- Use underscores in library output names by @jviotti in #161
- Support shared libraries by @jviotti in #158
- Refactor JSON Schema library declaration by @jviotti in #162
- Rename main component to
sourcemeta_jsontoolkit
by @jviotti in #164 - Separate
contrib
tools into their own component by @jviotti in #165 - Create a separate
sourcemeta_jsontoolkit_dev
component by @jviotti in #166 - Set HOMEPAGE_URL in the CMake project declaration by @jviotti in #167
- Improve conditional with ClangTidy suggestions by @jviotti in #168
- Quiet
argv
pointer ClangTidy warnings until we are in C++20 by @jviotti in #169 - Quiet ref member ClangTidy warnings by @jviotti in #170
- Set
JSONTOOLKIT_BACKEND_PATH
to be of typePATH
by @jviotti in #171 - Be explicit about CMake variable types by @jviotti in #172
- Improve "backend" option definition by @jviotti in #173
- Improve GoogleTest discovery defaults by @jviotti in #176
- Use typed CMake variables in packaging tests by @jviotti in #174
- Configure IDE folders in CMake by @jviotti in #177
- Do not hardcode warnings as errors by @jviotti in #178
- Move
config.cmake.in
to the root of the project by @jviotti in #180 - Remove support for specifying a backend path by @jviotti in #179
- Build against an address sanitizer on Linux by @jviotti in #181
- Fix several shared library generation warnings on Windows by @jviotti in #186
- Test including JSON Schema component in packaging tests by @jviotti in #185
- Rename export header by @jviotti in #188
- Unit test
compare()
with equal strings by @jviotti in #189 - Get rid of RapidJSON by @jviotti in #190
- Apply sanitizers per target by @jviotti in #193
- Use
std::map
instead ofstd::unordered_map
in JSON Schema by @jviotti in #196 - Allow
ParseError
to be exported on Windows by @jviotti in #195 - Enable remaining JSONTestSuite cases by @jviotti in #197
- Use trailing return types by @jviotti in #198
- Add various grammar comments by @jviotti in #199
- Override
operator<<
for JSON by @jviotti in #200 - Vendor GoogleTest by @jviotti in #202
- Improve contrib target names by @jviotti in #203
- Fix various MSVC DLL warnings by @jviotti in #204
- Run with an undefined behavior sanitizer by @jviotti in #194
- Recommend C++20 on installation examples by @jviotti in #205
- Support initializing from
string_view
by @jviotti in #206 - Extract test scripts out of
test/contrib
by @jviotti in #208 - Support Emscripten by @jviotti in #207
- Remove obsolete Makefile ctest comment by @jviotti in #209
- Implement basic JSON Pointer support by @jviotti in #143
- Simplify JSON Pointer "get" branch by @jviotti in #210
- Test a pointer with a stringified index by @jviotti in #214
- Cover JSON Pointer RFC tests by @jviotti in #213
- Improve JSON Pointer "get" inline docs by @jviotti in #212
- Test a JSON string with an null byte inside by @jviotti in #215
- Test presence of null in an object property by @jviotti in #211
- Implement a "set" operator for JSON Pointer by @jviotti in #216
- Test JSON Pointer setting to a hyphen property by @jviotti in #217
- Support the concept of a JSON Pointer hyphen constant by @jviotti in #218
- Use iterators to traverse JSON Pointers by @jviotti in #219
- Declare JSON char and char_traits types by @jviotti in #220
- Implement a
.back()
method for JSON Pointer by @jviotti in #221 - Support setting to the hyphen JSON Pointer token in arrays by @jviotti in #222
- Add support for stringifying JSON Pointers by @jviotti in #223
- Correctly stringify control characters in JSON by @jviotti in #224
- Fix JSON Pointer stringify Doxygen group by @jviotti in #225
- No Emscripten on default
Make
builds by @jviotti in #226 - Rename
parse
toparse_json
by @jviotti in #227 - Implement
emplace_back
for pointers by @jviotti in #229 - Do not include generated export file on Unikraft by @jviotti in #230
- Support C++17 in the JSON component by @jviotti in #231
- Add basic Unikraft support by @jviotti in #232
- Properly support C++20 in Unikraft by @jviotti in #234
- Allow object properties to be queries using integer indexes by @jviotti in #235
- Simplify syntax for accessing JSON Pointer iterators by @jviotti in #237
- Test pointers that traverse objects using integer indexes by @jviotti in #236
- Avoid exporting templated classes by @jviotti in #238
- Make Doxygen optional by @jviotti in #240
- Fix MSVC out of range debug warning when parsing unicode symbols by @jviotti in #239
- Match
CMAKE_BUILD_TYPE
on packaging tests by @jviotti in #241 - Upgrade Noa to get Windows library/runtime directory fixes by @jviotti in #242
- Test generation of shared libraries on Windows by @jviotti in #163
- Fix
Traits::eof()
on JSON parser in older GCC versions by @jviotti in #243 - Rename
parse_json
toparse
by @jviotti in #244 - Don't test
emscripten
support in this project by @jviotti in #245 - Rename JSON parser test file to just "parse" by @jviotti in #247
- Implement a
to_stringstream()
method by @jviotti in #248 - Implement a
PointerParseError
class by @jviotti in #246 - Make JSON Pointer grammar header private by @jviotti in #249
- Add JSON Pointer parsing support by @jviotti in #228
- Refactor and simplify schema resolver functionality by @jviotti in #250
- Add Draft7 metaschemas by @jviotti in #251
- Include main JSON Schema metaschemas from all drafts by @jviotti in #252
- Add all missing meta-schemas to default resolver by @jviotti in #253
- Make schema resolver take a string view as identifier by @jviotti in #254
- Remove
jsonschema_default_walker.h
header by @jviotti in #255 - Simplify
SchemaWalker
class by @jviotti in #256 - Completely redo the schema walker interface by @jviotti in #257
- Test presence of all official metaschemas in default resolver by @jviotti in #258
- Rename
draft()
todialect()
by @jviotti in #259 - Simplify official schema resolver by @jviotti in #260
- Use string views in
SchemaWalker
by @jviotti in #261 - Fix 2019-09 "links" metaschema in default resolver by @jviotti in #263
- Rename dialect to "base_dialect" by @jviotti in #262
- Rename
metaschema()
todialect()
by @jviotti in #264 - Rename mentions of default metaschema to default dialect by @jviotti in #265
- Revise
dialect()
function to support all versions of JSON Schema by @jviotti in #266 - Rename
ResolutionError
toSchemaResolutionError
by @jviotti in #267 - Split base dialect tests by dialect by @jviotti in #269
- Revisit official resolver tests by @jviotti in #270
- Split dialect tests by dialect by @jviotti in #271
- Set an explicit parallel build limit by @jviotti in #272
- Re-implement the
vocabularies()
function by @jviotti in #268 - Extract metaschemas file read into a separate file by @jviotti in #273
- Inline
schema_walker_none
by @jviotti in #275 - Rename
default_resolver.cc
toofficial_resolver.cc
by @jviotti in #274 - Use C++20 map
contains
in default walker by @jviotti in #276 - Separately and properly test
schema_walker_none
by @jviotti in #277 - Revise the default walker tests by @jviotti in #278
- Revisit default walker 2020-12 tests by @jviotti in #279
- Support 2019-09 in the default walker by @jviotti in #280
- Add Draft7 support to the default walker by @jviotti in #281
- Refactor the definition of the default walker by @jviotti in #282
- Don't run every GoogleTest case as a separate process by @jviotti in #283
- Add Draft6 support to the default walker by @jviotti in #284
- Add Draft4 support to the default walker by @jviotti in #285
- Add Draft3 support to default walker by @jviotti in #286
- Add Draft2 support to the default walker by @jviotti in #287
- Add Draft1 support to the default walker by @jviotti in #288
- Add Draft0 support to the default walker by @jviotti in #289
- Add hyper-schema walker support to 2019-09 and 2020-12 by @jviotti in #290
- Test hyperschema support for Draft0 in default walker by @jviotti in #291
- Test hyperschema support for Draft1 in default walker by @jviotti in #292
- Add hyperschema support for Draft2 in default walker by @jviotti in #293
- Add hyperschema support for Draft3 and Draft4 in default walker by @jviotti in #294
- Add hyperschema support to default walker for Draft6 and Draft7 by @jviotti in #295
- Make
id()
taker a resolver and a default dialect by @jviotti in #297 - Return a
string_view
when fetching the id of aSchemaResolutionError
by @jviotti in #296 - Properly implement the
id
based on dialects by @jviotti in #298 - Properly test
id()
across dialects by @jviotti in #299 - Remove unused VCPKG integration file by @jviotti in #301
- Implement a basic URI class based on
uriparser
by @jviotti in #300 - Document the new URI module by @jviotti in #302
- Implement a
fragment
method on the URI class by @jviotti in #303 - Implement URI escaping/unescaping by @jviotti in #304
- Add TODO for constructing URIs using input streams by @jviotti in #305
- Implement JSON Pointer equality support by @jviotti in #307
- Include JSON Pointer before JSON Schema by @jviotti in #308
- Report back only JSON Pointers when walking schemas by @jviotti in #310
- Take a default value in the
dialect()
function by @jviotti in #311 - Add basic copy/move semantics to URI by @jviotti in #312
- Add a
pop_back()
method toPointer
by @jviotti in #313 - Overload the
<
operator forPointer
by @jviotti in #314 - Implement an
anchors()
function similar toid()
by @jviotti in #315 - Make Pointer's
pop_back()
throw on empty pointers by @jviotti in #316 - Implement a
from_fragment
URI static factory method by @jviotti in #317 - Support JSON Pointer and URI on Unikraft by @jviotti in #319
- Document how to use JSON Toolkit with Unikraft by @jviotti in #320
- Extract
official_resolver
interpolation to a separate script by @jviotti in #321 - Setup a Unikraft project for running JSON Toolkit tests by @jviotti in #322
- Support JSON Schema on Unikraft by @jviotti in #323
- Implement a subpointer walker by @jviotti in #324
- Fix Draft0, Draft1, and Draft2 hyper schema walkers by @jviotti in #325
- Implement JSON Schema framing by @jviotti in #306
- Support JSON Schema framing when mixing dialects by @jviotti in #326
- Revise
frame()
to ignore dynamic anchors for now by @jviotti in #327 - Use
-latest
runners on GitHub Actions by @jviotti in #329 - Report dialect URI on
frame()
by @jviotti in #328 - Store the top-level schema id on
frame()
entries by @jviotti in #330 - Fix documentation example for
frame()
by @jviotti in #331 - Ensure
uriparser
doesn't affectBUILD_SHARED_LIBS
by @jviotti in #332 - Attempt to workaround Clang Ubuntu issues on GitHub Actions by @jviotti in #338
- Fix JSON Pointer include guards by @jviotti in #335
- Fix README link by @jviotti in #337
- Run Unikraft build GitHub Actions by @jviotti in #318
- Run Unikraft build using QEMU on CI by @jviotti in #340
- Don't run
kraft fetch
on the Makefile for local development by @jviotti in #341 - Build packaging example with C++20 by @jviotti in #345
- Fix ctest comment on GitHub Actions by @jviotti in #344
- Add Doxygen to the Brewfile by @jviotti in #343
- Run Unikraft on GitHub Actions by disabling acceleration by @jviotti in #342
- Use Doxygen integration from Noa by @jviotti in #346
- Run
apt-get update
on GitHub Actions by @jviotti in #347 - Extend
Config.uk
to list all requirements by @jviotti in #348 - Run
apt-get update
on Unikraft pipelines by @jviotti in #350 - Add a Patron license by @jviotti in #349
- Test that backspace is not whitespace according to JSON by @jviotti in #351
- Extend the URI class to get the scheme by @jviotti in #352
- Extend the URI class to get port numbers by @jviotti in #353
- Implement a convenience function to parse JSON from a file by @jviotti in #355
- Gracefully take boolean schemas in
anchors()
by @jviotti in #356 - Use
noa_library
to define libraries by @jviotti in #357 - Let the
id()
function take a default id by @jviotti in #359 - Accept an optional default id in
frame()
by @jviotti in #358 - Optionally take read/write line/column on JSON parsing by @jviotti in #360
- Include JSON Pointer in CMake config much earlier on by @jviotti in #361
- Implement JSONL parsing support by @jviotti in #334
- Vendor the 2020-12 tests of the JSON Schema Referencing Suite by @jviotti in #362
- Test parsing a URI that consists of an invalid fragment by @jviotti in #364
- Run test workflow once every working day by @jviotti in #363
- Implement a method to get a URI path by @jviotti in #366
- Add a method to check whether a URI is a URN by @jviotti in #367
- Test current URI methods against URNs by @jviotti in #365
- Test URNs that contain fragments by @jviotti in #368
- Add tests exercising URIs with empty fragments by @jviotti in #369
- Add test exercising URI recomposing with trailing slash path by @jviotti in #370
- Simplify
id()
ternary logic inframe()
by @jviotti in #373 - Turn
ReferenceFrame
into a proper class by @jviotti in #372 - Fix
frame()
Doxygen example by @jviotti in #375 - Exercise
frame()
when passing an explicit equal default id by @jviotti in #377 - Add a constant that represents the empty pointer by @jviotti in #374
- Extend
.frame()
to work on multiple URI bases by @jviotti in #376 - Clarify that in
frame()
, found identifiers only may be relative by @jviotti in #378 - Handle framing with explicit different IDs by @jviotti in #371
- Clarify that
URI::recompose
doesn't really normalize by @jviotti in #379 - Implement a basic method to get the query part of a URI by @jviotti in #380
- Implement a simple URI canonicalize method by @jviotti in #381
- Implement support for tag URIs by @jviotti in #382
- Canonicalize when storing URIs to reference frames by @jviotti in #383
- Add basic URI iterator support to
ReferenceFrame
by @jviotti in #384 - Rename JSON Pointer walker files to "subpointer walker" by @jviotti in #385
- Implement a general-purpose JSON walker with JSON Pointer by @jviotti in #386
- Add missing URI tests to Unikraft test runner app by @jviotti in #387
- Implement JSON Pointer relative resolution by @jviotti in #388
- Perform URI canonicalization on
ReferenceFrame::defines
by @jviotti in #390 - Refactor
frame()
find bases internal function by @jviotti in #391 - Add an assertion to confirm there is one base dialect only in
frame()
by @jviotti in #392 - Implement a convenient function to convert a Pointer to a string by @jviotti in #393
- Introduce an
EXPECT_FRAME
test macro by @jviotti in #394 - Extend
frame()
to consider every JSON Pointer to the schema by @jviotti in #389 - Upgrade the JSON Schema Referencing Suite to latest by @jviotti in #395
- Rename
base()
toroot()
inReferenceFrame
by @jviotti in #396 - Add a base to every
ReferenceFrame
entry by @jviotti in #397 - Implement a function to convert a JSON Pointer to a URI fragment by @jviotti in #398
- Add URI canonicalize examples around URI escaping by @jviotti in #399
- Integrate with the JSON Schema referencing suite by @jviotti in #354
- Run the JSON Schema Referencing Suite for 2019-09 by @jviotti in #400
- Run the JSON Schema Referencing Suite for Draft7 by @jviotti in #401
- Run the JSON Schema Referencing Suite for Draft6 by @jviotti in #402
- Run the JSON Schema Referencing Suite on Draft 4 by @jviotti in #403
- Run most of the JSON Schema Referencing Suite on Draft 3 by @jviotti in #404
- Enable every test from the JSON Schema Referencing Suite by @jviotti in #405
- Add a method to concatenate two JSON Pointers by @jviotti in #407
- Implement schema transformation functionality by @jviotti in #406
- Make schema transformation rules report the values they modified by @jviotti in #408
- Fix rule/bundle examples by @jviotti in #409
- Revert schema transform rules returning set of pointers by @jviotti in #410
- Introduce a schema transformer proxy for transform rules by @jviotti in #411
- Add method to check whether a Pointer starts with another Pointer by @jviotti in #412
- Implement JSON Pointer rebasing by @jviotti in #413
- Test URI resolution with fragments by @jviotti in #414
- Let JSON Pointer instances be constructed from standard C++ strings by @jviotti in #415
- Support framing references in anonymous schemas by @jviotti in #416
- Add TODO about anchors and anonymous frames by @jviotti in #417
- Implement an example "frame" JSON Schema CLI tool by @jviotti in #418
- Cleanup Frame CLI output by @jviotti in #419
- Add CMake option to control component installation by @jviotti in #420
- Extend framing to support pointers without a base by @jviotti in #421
- Support framing pointers to
$anchor
in anonymous schemas by @jviotti in #423 - Frame static anchors on anonymous schemas by @jviotti in #424
- Extend
.frame()
to receiveReferenceMap
argument by @jviotti in #425 - Revise
.frame()
reference map basic tests by @jviotti in #426 - Remove incorrect TODOs by @jviotti in #427
- Extend framing to resolve static references by @jviotti in #422
- Print references in frame CLI tool by @jviotti in #428
- Document frame references by @jviotti in #429
- Register top-level static anchors without identifiers by @jviotti in #431
- Extend framing to record dynamic anchors by @jviotti in #430
- Dereference after framing by @jviotti in #432
- Extract
ReferenceFrame
into a separate unit by @jviotti in #433 - Remove invalid TODO in
frame()
by @jviotti in #434 - Revert changes that frame dynamic anchors by @jviotti in #435
- Don't record plain reference frames on schemas with ids by @jviotti in #436
- Explicitly include
CompilerOptions
by @jviotti in #437 - Upgrade Noa to
0862a96772362a6997ce2f5fda877b182a7b6f71
by @jviotti in #438 - Simplify
ReferenceMap
to only consider static references by @jviotti in #439 - Avoid passing a separate
ReferenceFrame
for dynamic frames by @jviotti in #440 - Add a
ReferenceType
qualifier toReferenceMap
by @jviotti in #441 - Implement
$dynamicRef
support inframe()
by @jviotti in #442 - Implement a method to recompose a URI without its fragment by @jviotti in #443
- Make
recompose_without_fragment()
return an optional value by @jviotti in #445 - Add TODOs to URI about the benefits of supporting mutations by @jviotti in #446
- Add TODO for checking that static references exists in frames by @jviotti in #447
- Extend
ReferenceMap
to split URI by its potential fragment by @jviotti in #444 - Extract
ReferenceType
to its own header by @jviotti in #448 - Simplify
TO_POINTER
macro in JSON Schema test utils by @jviotti in #450 - Revise GitHub Actions Linux Clang CI workaround by @jviotti in #452
- Check for 2020-12 Core vocabulary before framing
$dynamicRef
by @jviotti in #453 - Store the reference type in
ReferenceFrame
by @jviotti in #449 - Do not frame relative anchor URIs for schemas with identifiers by @jviotti in #455
- Update
frame()
description docs by @jviotti in #456 - Set
ReferenceType
as part of theReferenceFrame
key by @jviotti in #457 - Correctly detect anchors that are both static and dynamic by @jviotti in #458
- Add an overload for
anchors()
that directly take vocabularies by @jviotti in #459 - Frame
$dynamicAnchor
for 2020-12 by @jviotti in #454 - Implement a convenience base dialect shortcut for
id()
by @jviotti in #460 - Add comment about extending
SchemaIterator
to return more information by @jviotti in #461 - Add a helper for checking if
$ref
overrides adjacent keywords by @jviotti in #462 - Upgrade KraftKit to v0.7.2 by @jviotti in #463
- Optimize
base_dialect()
to require less JSON parsing by @jviotti in #465 - Add performance-friendly
vocabularies()
overloads by @jviotti in #466 - Optimize
vocabularies()
for 2020-12 and 2019-09 by @jviotti in #467 - Extract URI parser into a separate function by @jviotti in #468
- Perform URI canonicalization in-place by @jviotti in #469
- Simplify
ReferenceFrame::defines
to not canonicalize by @jviotti in #472 - Get rid of
ReferenceFrame
wrapper class in favor of an alias by @jviotti in #471 - Simplify the
ReferenceMap
helper type by @jviotti in #473 - Turn
URI::resolve_from
into a method that mutates the instance by @jviotti in #470 - Upgrade Vendorpull by @jviotti in #474
- Upgrade Noa to latest by @jviotti in #475
- Add a default Vendorpull mask by @jviotti in #476
- Perform a single pass over subschemas in
frame()
by @jviotti in #477 - Test framing remote references by @jviotti in #479
- Extend
SchemaIterator
to pass metadata about each schema by @jviotti in #478 - Implement an
assign_if_missing
JSON helper method by @jviotti in #481 - Implement JSON Schema bundling by @jviotti in #480
- Extend SchemaTransformer to support the JSON BinPack Mapper by @jviotti in #482
- Generalize transformer
.at()
into a schema getter by @jviotti in #484 - Improve docs on how to define schema transformation methods by @jviotti in #485
- Generalize transformer
into_object()
asreplace()
by @jviotti in #486 - Generalize transformer
.replace()
to take pointers by @jviotti in #487 - Generalize transformer
.assign()
to take base pointers by @jviotti in #488 - Generalize transformer erase to take a pointer path by @jviotti in #489
- Fix JSON
erase
iterator docs by @jviotti in #490 - Implement
erase_keys
atSchemaTransformer
by @jviotti in #491 - Revise transformer
erase_keys
to take iterators by @jviotti in #492 - De-duplicate
noa_sanitizer
commands by @jviotti in #493 - Generate CMake config even on non-top level builds by @jviotti in #494
- Support component-based
find_package
by @jviotti in #495 - Get rid of Cirrus CI by @jviotti in #496
- Guard package find scripts by @jviotti in #497
- Fix GCC taking
initializer_list
precedence over copy-constructor by @jviotti in #498 - Upgrade Noa to latest by @jviotti in #499
- Simplify test Kraftfile by @jviotti in #500
- Upgrade Noa to the latest version by @jviotti in #502
- Implement a JSON method to estimate memory usage by @jviotti in #501
Full Changelog: https://github.com/sourcemeta/jsontoolkit/commits/v1.0.0