jsonschema_rs 0.50.1-aarch64-linux → 0.52.0-aarch64-linux

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 024531047540ae02d18065a5ebc16c86befcef12319892bc74634edd00d5783a
4
- data.tar.gz: 705163665dfba247b7a98f66dfa38d4e0aa4e2f249485b9446c9d03ebee4dcc0
3
+ metadata.gz: a6fe5212fd6a2c946a50089d5baef447a542be9c4b083575c27b8a3c1133f25e
4
+ data.tar.gz: '028ad6da8db3bf3c8c48a9735c90aa815554c40b9dd0a08f90e24363a4444696'
5
5
  SHA512:
6
- metadata.gz: 925754bbefe9c0942a767976f0e8147c58aeba75a84ee5c0f6914eb9620aecfb41b66eee12823aaad393bb30a8fab3f2cc6e6f608e1e83edc13f5371ebb1986c
7
- data.tar.gz: de0020b79fc16136a2dc5e96862318c8abfcd0ae4f908502797326c3a279b1622c4625f60634322b09ed1ecb13cf1ccc5b166d99785365d262165523805592e4
6
+ metadata.gz: 77c903c3c2faa5b79cc0676146b2646a73569b2a2e1f564720e6cacdb81ad00fc7af204943a7466947fdac14ea9a201e5ea4b998d1aa0afbfc97bcba6ac50de2
7
+ data.tar.gz: 8b8becab2affc02220b0b39ef1fb47037933c099f73f51f6ac16537de0c2dd6b0a747f718383f429d91403156d108850390cc605e170dc0321077e32541cfd23
data/CHANGELOG.md CHANGED
@@ -2,6 +2,43 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.52.0] - 2026-08-27
6
+
7
+ ### Added
8
+
9
+ - The `offline:` keyword argument, refusing to fetch references outside `registry:`.
10
+
11
+ ### Fixed
12
+
13
+ - Canonicalization not idempotent where a `patternProperties` `$ref` matches a key `properties` names.
14
+ - The `draft:` keyword argument and the `Draft201909Validator` / `Draft202012Validator` classes gating keywords on the vocabularies of the `$schema` they override, so the validator accepted every instance.
15
+ - `valid?` disagreeing with `validate!`, `each_error`, and `evaluate` on a schema that reaches its own `$ref` twice, one of them under `not`.
16
+
17
+ ## [0.51.0] - 2026-08-23
18
+
19
+ ### Added
20
+
21
+ - `vocabularies` option, declaring support for a vocabulary this library does not implement.
22
+
23
+ ### Fixed
24
+
25
+ - The `uniqueItems` length ceiling not reading an `items` or `contains` schema written as a `$ref`.
26
+ - The Draft 2020-12 Format-Assertion vocabulary read as an annotation, so a meta-schema requiring it accepted values its `format` rejects.
27
+ - An unrecognized `format` accepted under a meta-schema requiring the Format-Assertion vocabulary (it should be rejected).
28
+ - A meta-schema requiring a vocabulary this library does not implement accepted (it should be rejected).
29
+ - The Draft 2019-09 Format vocabulary declared `true` read as an annotation, so a meta-schema requiring it accepted values its `format` rejects.
30
+ - The bundled `https://json-schema.org/draft/2020-12/meta/format-assertion` meta-schema not declaring its vocabulary, so a schema written against it annotated `format` instead of asserting it.
31
+ - A meta-schema without `$id` keeping its `$vocabulary` unread, so a schema written against it got every Draft 2020-12 vocabulary.
32
+ - A schema naming a bundled vocabulary meta-schema as its `$schema` rejected as an unknown meta-schema (it should build).
33
+ - The `regex` format reading the Rust regex dialect (it should read the ECMA-262 dialect in Unicode mode).
34
+ - The `uri-template` format rejecting an apostrophe in a literal (it should accept it, per RFC 6570 errata 6937).
35
+ - The `duration` format accepting weeks combined with a time part, such as `P1WT1H` (it should reject it).
36
+ - Stack overflow compiling `unevaluatedProperties` or `unevaluatedItems` beside a `$ref` that cycles back to the node, written as `#`, through its `$id`, or through a chain of definitions.
37
+
38
+ ### Performance
39
+
40
+ - Building `unevaluatedProperties` or `unevaluatedItems` over a deep `allOf` or `$ref` chain costs its depth instead of its square.
41
+
5
42
  ## [0.50.1] - 2026-08-22
6
43
 
7
44
  ### Changed
@@ -442,7 +479,9 @@
442
479
 
443
480
  - Initial public release
444
481
 
445
- [Unreleased]: https://github.com/Stranger6667/jsonschema/compare/ruby-v0.50.1...HEAD
482
+ [Unreleased]: https://github.com/Stranger6667/jsonschema/compare/ruby-v0.52.0...HEAD
483
+ [0.52.0]: https://github.com/Stranger6667/jsonschema/compare/ruby-v0.51.0...ruby-v0.52.0
484
+ [0.51.0]: https://github.com/Stranger6667/jsonschema/compare/ruby-v0.50.1...ruby-v0.51.0
446
485
  [0.50.1]: https://github.com/Stranger6667/jsonschema/compare/ruby-v0.50.0...ruby-v0.50.1
447
486
  [0.50.0]: https://github.com/Stranger6667/jsonschema/compare/ruby-v0.49.9...ruby-v0.50.0
448
487
  [0.49.9]: https://github.com/Stranger6667/jsonschema/compare/ruby-v0.49.8...ruby-v0.49.9
data/README.md CHANGED
@@ -49,7 +49,7 @@ end
49
49
  - 🌐 Remote reference fetching (network/file)
50
50
  - 🔧 Custom keywords and format validators
51
51
  - ✨ Meta-schema validation for schema documents
52
- - 📦 Schema bundling into Compound Schema Documents
52
+ - 📦 Schema bundling into Compound Schema Documents, and `$ref` dereferencing
53
53
  - 🧮 Experimental schema canonicalization
54
54
  - ♦️ Supports Ruby 3.2, 3.4 and 4.0
55
55
 
@@ -371,7 +371,7 @@ Compare a request schema new-against-old and a response schema old-against-new:
371
371
 
372
372
  Both operands must share one setup - the same draft, format policy, regular-expression engine and definitions - or `IncompatibleOperands` is raised. `UnsupportedOperand` means an operand is a `Raw` pass-through, and `UnsupportedResult` that the canonical form does not support the result. All three live under `JSONSchema::Canonical`.
373
373
 
374
- ## Schema Bundling
374
+ ## Schema Bundling and Dereferencing
375
375
 
376
376
  Produce a Compound Schema Document ([Appendix B](https://json-schema.org/draft/2020-12/json-schema-core#appendix-B)) by embedding all external `$ref` targets into a draft-appropriate container. The result validates identically to the original.
377
377
 
@@ -395,6 +395,12 @@ registry = JSONSchema::Registry.new([["https://example.com/address.json", addres
395
395
  bundled = JSONSchema.bundle(schema, registry: registry)
396
396
  ```
397
397
 
398
+ `dereference` instead replaces each `$ref` with the schema it points to, for consumers that do not resolve references. Circular references are left in place.
399
+
400
+ ```ruby
401
+ dereferenced = JSONSchema.dereference(schema, registry: registry)
402
+ ```
403
+
398
404
  ## Meta-Schema Validation
399
405
 
400
406
  Validate that a JSON Schema document is itself valid:
@@ -644,6 +650,7 @@ JSONSchema.valid?(schema, instance,
644
650
  formats: { "name" => proc }, # Custom format validators
645
651
  keywords: { "name" => Klass }, # Custom keyword validators
646
652
  registry: registry, # Pre-registered schemas
653
+ vocabularies: ["https://..."], # Vocabularies implemented by custom keywords
647
654
  pattern_options: opts, # RegexOptions or FancyRegexOptions
648
655
  email_options: opts, # EmailOptions
649
656
  http_options: opts # HttpOptions
Binary file
Binary file
Binary file
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JSONSchema
4
- VERSION = "0.50.1"
4
+ VERSION = "0.52.0"
5
5
  end
data/sig/jsonschema.rbs CHANGED
@@ -310,6 +310,7 @@ module JSONSchema
310
310
  untyped schema,
311
311
  ?validate_formats: bool?,
312
312
  ?ignore_unknown_formats: bool?,
313
+ ?vocabularies: Array[String]?,
313
314
  ?base_uri: String?,
314
315
  ?retriever: (^(String) -> untyped)?,
315
316
  ?mask: String?,
@@ -326,6 +327,7 @@ module JSONSchema
326
327
  untyped schema,
327
328
  ?validate_formats: bool?,
328
329
  ?ignore_unknown_formats: bool?,
330
+ ?vocabularies: Array[String]?,
329
331
  ?mask: ::String?,
330
332
  ?base_uri: ::String?,
331
333
  ?retriever: (^(::String) -> untyped)?,
@@ -371,6 +373,7 @@ module JSONSchema
371
373
  ?draft: draft?,
372
374
  ?validate_formats: bool?,
373
375
  ?ignore_unknown_formats: bool?,
376
+ ?vocabularies: Array[String]?,
374
377
  ?base_uri: String?,
375
378
  ?retriever: (^(String) -> untyped)?,
376
379
  ?mask: String?,
@@ -389,6 +392,7 @@ module JSONSchema
389
392
  ?draft: draft?,
390
393
  ?validate_formats: bool?,
391
394
  ?ignore_unknown_formats: bool?,
395
+ ?vocabularies: Array[String]?,
392
396
  ?base_uri: String?,
393
397
  ?retriever: (^(String) -> untyped)?,
394
398
  ?mask: String?,
@@ -407,6 +411,7 @@ module JSONSchema
407
411
  ?draft: draft?,
408
412
  ?validate_formats: bool?,
409
413
  ?ignore_unknown_formats: bool?,
414
+ ?vocabularies: Array[String]?,
410
415
  ?base_uri: String?,
411
416
  ?retriever: (^(String) -> untyped)?,
412
417
  ?mask: String?,
@@ -423,6 +428,7 @@ module JSONSchema
423
428
  ?draft: draft?,
424
429
  ?validate_formats: bool?,
425
430
  ?ignore_unknown_formats: bool?,
431
+ ?vocabularies: Array[String]?,
426
432
  ?base_uri: String?,
427
433
  ?retriever: (^(String) -> untyped)?,
428
434
  ?mask: String?,
@@ -441,6 +447,7 @@ module JSONSchema
441
447
  ?draft: draft?,
442
448
  ?validate_formats: bool?,
443
449
  ?ignore_unknown_formats: bool?,
450
+ ?vocabularies: Array[String]?,
444
451
  ?base_uri: String?,
445
452
  ?retriever: (^(String) -> untyped)?,
446
453
  ?formats: Hash[String, ^(String) -> bool]?,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsonschema_rs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.50.1
4
+ version: 0.52.0
5
5
  platform: aarch64-linux
6
6
  authors:
7
7
  - Dmitry Dygalo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-08-22 00:00:00.000000000 Z
11
+ date: 2026-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bigdecimal