jsonapi-resources-anchor 2.5.0 → 2.7.0

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: b9acca6a7381ed3c6095f85b22032786dd2542e81d07ff6e0ea5faeefd09de9e
4
- data.tar.gz: 4ea4dd50bde622c0ab2da68126a892cc3f2ca6dc1282355b660b75b139b20d6c
3
+ metadata.gz: 73315646b6bd128cb07de6a329756015a9cf2895d2a4b287dd265fa233315c4b
4
+ data.tar.gz: 655e5a292f2530600dde1fe1a1dce901d2e4132d22a9f4bc5603622b469aaf2e
5
5
  SHA512:
6
- metadata.gz: 027b7e5f9732f4e08d0d085cf6b5b5cb7a50a504e9d3e92932fe845255e91b5c86eaa19ef3b3bb6d5d53e42250abb762358940d6745ecaa91997fee401d8334b
7
- data.tar.gz: a5b5116e36020f9db5e73abfdc47fd735393281aaa6a28159db9d2561b175d90386acf5602339e92907e1b460331053569dcd53d0a27f8945366cd6f8f22bfd9
6
+ metadata.gz: 89bcca0ec24af07ba1c8b03879175913c7deb115d9454ba905e5234312adb40c22f30ea1027124baf56ceeb15c6ab11a868b583681624ac77f02b6891e8d20c7
7
+ data.tar.gz: e0e808710edf6449c2745a7044ba8e94aa67fa04409885bb71f52b39005bb69712020de4a701e6204f74352d80e08e8773be04146a8cf133886bf0e0bf2f9857
data/lib/anchor/config.rb CHANGED
@@ -7,7 +7,8 @@ module Anchor
7
7
  :infer_nullable_relationships_as_optional,
8
8
  :empty_relationship_type,
9
9
  :use_type_as_schema_name,
10
- :maybe_as_union
10
+ :maybe_as_union,
11
+ :array_bracket_notation
11
12
 
12
13
  def initialize
13
14
  @ar_column_to_type = nil
@@ -18,6 +19,7 @@ module Anchor
18
19
  @empty_relationship_type = nil
19
20
  @use_type_as_schema_name = nil
20
21
  @maybe_as_union = nil
22
+ @array_bracket_notation = nil
21
23
  end
22
24
  end
23
25
  end
data/lib/anchor/schema.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  module Anchor
2
2
  class Schema
3
+ class DuplicateTypeError < StandardError; end
4
+
3
5
  class << self
4
6
  Register = Struct.new(:resources, :enums, keyword_init: true)
5
7
 
@@ -9,6 +11,9 @@ module Anchor
9
11
 
10
12
  def resource(resource)
11
13
  @resources ||= []
14
+ if @resources.map(&:anchor_schema_name).include?(resource.anchor_schema_name)
15
+ raise DuplicateTypeError, "A resource with type name '#{resource.anchor_schema_name}' has already been registered."
16
+ end
12
17
  @resources.push(resource)
13
18
  end
14
19
 
@@ -12,7 +12,7 @@ module Anchor::TypeScript
12
12
  when Anchor::Types::Record, Anchor::Types::Record.singleton_class then "Record<string, #{type_string(type.try(:value_type) || Anchor::Types::Unknown)}>"
13
13
  when Anchor::Types::Union then type.types.map { |type| type_string(type, depth) }.join(" | ")
14
14
  when Anchor::Types::Maybe then Anchor.config.maybe_as_union ? type_string(Anchor::Types::Union.new([type.type, Anchor::Types::Null]), depth) : "Maybe<#{type_string(type.type, depth)}>"
15
- when Anchor::Types::Array then "Array<#{type_string(type.type, depth)}>"
15
+ when Anchor::Types::Array then Anchor.config.array_bracket_notation ? "#{type_string(type.type, depth)}[]" : "Array<#{type_string(type.type, depth)}>"
16
16
  when Anchor::Types::Literal then serialize_literal(type.value)
17
17
  when Anchor::Types::Reference then type.name
18
18
  when Anchor::Types::Object, Anchor::Types::Object.singleton_class then serialize_object(type, depth)
@@ -1,3 +1,3 @@
1
1
  module Anchor
2
- VERSION = "2.5.0"
2
+ VERSION = "2.7.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsonapi-resources-anchor
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.0
4
+ version: 2.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-07-15 00:00:00.000000000 Z
11
+ date: 2025-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jsonapi-resources