- JSIs are immutable by default
- Immutable JSIs with new_jsi param
mutable
- JSIs are still mutable by default, but in the next release they will default to immutable
- Base#jsi_indicated_schemas
- Base::StringNode
- rename metaschema modules /JSONSchemaOrgDraft0X/JSONSchemaDraft0X/
- terminology: /Metaschema/Meta-Schema/ and /metaschema/meta-schema/ (where hyphen is allowed)
- Base::HashNode#jsi_each_propertyName
- new_schema and/or new_jsi params register, schema_registry, stringify_symbol_keys, to_immutable
- new_schema block param will module_exec on schema module
- Base#[] param use_default default false, overridable
- SchemaModule::Connects, SchemaModule::Connection
- rm Schema#jsi_schema_instance_modules
- JSI::Base instances include Array/Hash-like modules on subclasses rather than extending each instance; are only Enumerable when appropriate instead of always
- PathedHashNode -> Base::HashNode, PathedArrayNode -> Base::ArrayNode, PathedNode merged with Base
- change application of conditional schemas to instances which do not validate, always apply them
- fix nomenclature: child is immediately below parent; descendent is anywhere at/below an ancestor
- deprecate previous misnamed methods
- Base#jsi_descendent_node, Base#jsi_ancestor_nodes
- add Schema#describes_schema!, deprecate Schema#jsi_schema_instance_modules
- Schema#keyword?
- Base#jmespath_search
- MetaschemaNode keeps its jsi_root_node (reducing an enormous number of unnecessary instantiations of MetaschemaNode)
- /metaschema_instance_modules/schema_implementation_modules/
- separate JSI::Util (public) and JSI::Util::Private
- support ruby 3
- Schema.default_metaschema is nil unless set by the application
- deprecate JSI::Typelike module, merged with Util; Arraylike -> Util::Arraylike, Hashlike -> Util::Hashlike
- initial validation; remove gem
json-schema
dependency - initial schema issue collection
- JSI.new_schema / new_schema_module
- JSI::SchemaSet
- JSI::SchemaRegistry
- JSI::Schema::Ref
- Base#jsi_each_child_node, jsi_select_children_node_first, jsi_select_children_leaf_first
- JSI::JSON::Pointer → JSI::Ptr
- deprecate JSI.class_for_schemas
- remove test/development files from gem
- remove JSI::JSON::Node
- as always too much more to list
- a JSI::Base has multiple jsi_schemas #88
- JSI.class_for_schemas replaces JSI.class_for_schema
- fix uri/fragment nomenclature #89
- a schema is a JSI instance of a metaschema
- module JSI::Schema
- module JSI::Metaschema
- class JSI::MetaschemaNode
- JSI::JSON::Node breaking changes
- module SimpleWrap #87
- bugfix JSI::Schema#described_object_property_names looks only at allOf, not oneOf/anyOf
- rm unused Schema#default_value, #default_value?
- misc
- JSI::PathedNode unifies interfaces of JSI::Base, JSI::JSON::Node
- JSI::Base does not (generally) wrap a JSI::JSON::Node
- some method renames to try to better indicate what a method applies to, and unreserve common names
- JSI::Base
- #instance -> #jsi_instance
- #parents -> #parent_jsis, #parent -> #parent_jsi
- JSI::Schema
- #fully_validate -> #fully_validate_instance
- #validate -> #validate_instance
- #validate! -> #validate_instance!
- JSI::Base
- improvements to methods which use a modified copy - #dup, #update/#merge
- #deref on PathedNode classes uses a block form
- JSI::PathedArrayNode, PathedHashNode
- JSI::JSON::Pointer refactoring and improvement
- Schema#new_jsi
- JSI::SimpleWrap
- more
- JSI::JSON::Pointer replaces monkey-patched-in ::JSON::Schema::Pointer
- JSI::JSICoder replaces JSI::SchemaInstanceJSONCoder / ObjectJSONCoder
- remove JSI::StructJSONCoder
- misc improvements to code, doc, tests
- minor bugfixes / improvements
- JSI::Base returns an instance of the default value for the schema if applicable
- JSI::Base instance method #class_for_schema may be overridden by subclasses
- bugfixes and internal refactoring
- JSI::JSON::Node and other utilities duck-type better with #to_hash and #to_ary
- much improved documentation
- much improved test coverage
- code improvements too numerous to list
- extracted JSI from Scorpio