anyvali 1.1.5 → 1.1.7

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: b36328b66f866c9c79313e92f8ed9dfbc1606e74f62dd67d8e91995d09740f1f
4
- data.tar.gz: 5d04a6b4592c92b4ff0e377d8609cc1ad9db4ad1db11dbaa609f1c5bdad6256c
3
+ metadata.gz: c292fcbdc9347a47f66b5e9fcd45a5ebdb8dd647fc4b756810f389aa14425636
4
+ data.tar.gz: 4c4a8d393839e273462d085c1414f40e61652af7b934c73439bc575bc4e37dc9
5
5
  SHA512:
6
- metadata.gz: 4485ddfead504310f1249664580b56467d81dde78d0760efbb3777e8a75ff3af20db81517cad3cc0cd4252e9a4925e4ad9f254d88df63adad15e806e31181df3
7
- data.tar.gz: 3efd36ea82429d7caf5860db4a482c17d263ef192fa56864b2cfa918e885c950c6888884218ef72ae22fc0acd82b5a50417e3e5cab5f661af8f2181415aff791
6
+ metadata.gz: 7c88cada8d52e7f650004a3cb5f12e880a2755b644b9f2b105c953ec62454b49a4dde1d2451c57afab7101ea56cf7688ea10aa293ac4509f4734d7ba74a2b438
7
+ data.tar.gz: 002ffdd02a6d7fb5e1e499ec04bd602d8c66bc782f1b912e910e1cec21b769a9a70ac232cf95fec2633bb894b3f19d2a9a6d1f56bec66859c68e6482858ecc76
data/README.md CHANGED
@@ -41,13 +41,15 @@ AnyVali lets you write validation schemas in your language, then share them acro
41
41
 
42
42
  ## Install
43
43
 
44
+ PHP uses a [pinned Composer source installation](docs/sdk-php.md#installation).
45
+
44
46
  ```bash
45
47
  npm install anyvali # JavaScript / TypeScript
46
48
  pip install anyvali # Python
47
49
  go get github.com/BetterCorp/AnyVali/sdk/go # Go
48
50
  cargo add anyvali # Rust
49
51
  dotnet add package AnyVali # C#
50
- composer require anyvali/anyvali # PHP
52
+ # PHP: pinned Composer source installation (see installation link above)
51
53
  gem install anyvali # Ruby
52
54
  ```
53
55
 
@@ -296,7 +298,7 @@ The portable JSON format:
296
298
  | Java | `com.anyvali:anyvali` | v0.0.1 |
297
299
  | C# | [`AnyVali`](https://www.nuget.org/packages/AnyVali) | v0.0.1 |
298
300
  | Rust | [`anyvali`](https://crates.io/crates/anyvali) | v0.0.1 |
299
- | PHP | `anyvali/anyvali` | v0.0.1 |
301
+ | PHP | [`anyvali/anyvali` from source](docs/sdk-php.md#installation) | Pinned repository release |
300
302
  | Ruby | [`anyvali`](https://rubygems.org/gems/anyvali) | v0.0.1 |
301
303
  | Kotlin | `com.anyvali:anyvali` | v0.0.1 |
302
304
  | C++ | `anyvali` (CMake) | v0.0.1 |
@@ -7,7 +7,6 @@ require "date"
7
7
  module AnyVali
8
8
  module Format
9
9
  module Validators
10
- EMAIL_REGEX = /\A[^@\s]+@[^@\s]+\.[^@\s]+\z/
11
10
  UUID_REGEX = /\A[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\z/i
12
11
  # Strict IPv4: no leading zeros, octets 0-255
13
12
  IPV4_REGEX = /\A(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\z/
@@ -39,7 +38,14 @@ module AnyVali
39
38
  end
40
39
 
41
40
  def valid_email?(value)
42
- EMAIL_REGEX.match?(value)
41
+ # The old regex could backtrack across repeated dots in the domain.
42
+ at = value.index("@")
43
+ return false unless at && at.positive? && at < value.length - 1 && at == value.rindex("@")
44
+ return false if /\s/.match?(value)
45
+
46
+ domain = value[(at + 1)..]
47
+ dot = domain.index(".", 1)
48
+ !dot.nil? && dot < domain.length - 1
43
49
  end
44
50
 
45
51
  def valid_url?(value)
@@ -78,7 +78,7 @@ module AnyVali
78
78
  # Spec 5.1: parse DECIMAL floating-point only. Ruby's Float() also accepts
79
79
  # digit-group underscores ("1_000.5") and hex floats ("0x1.8p3"), which
80
80
  # diverge from the JS reference and let non-decimal strings slip through.
81
- return { success: false, value: value } unless stripped.match?(/\A[+-]?(\d+\.?\d*|\.\d+)([eE][+-]?\d+)?\z/)
81
+ return { success: false, value: value } unless stripped.match?(/\A[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?\z/)
82
82
 
83
83
  begin
84
84
  f = Float(stripped)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: anyvali
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.5
4
+ version: 1.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - AnyVali Contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-09-08 00:00:00.000000000 Z
11
+ date: 2026-11-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest