Skip to content

Commit ea8628a

Browse files
committed
Add concept of collision winners since no need to qualify all of them
This fixes a bug when the superclass we import collides with dependencies
1 parent 0e10d66 commit ea8628a

File tree

8 files changed

+36
-21
lines changed

8 files changed

+36
-21
lines changed

src/remote_generator/services/aggregate_entity_generator.rb

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,18 @@ def model_generators
3030
end
3131
end
3232

33+
def dependencies
34+
[*super, superclass_generator]
35+
end
36+
37+
def collision_winners
38+
superclass_generator
39+
end
40+
41+
def superclass_generator
42+
@superclass_generator ||= LoadedEntityGenerator.new(relevant_manifest)
43+
end
44+
3345
def attributes_type_ts_type
3446
aggregate_attributes_ts_type
3547
end
@@ -38,10 +50,6 @@ def ts_instance_path
3850
[*model_prefix, generated_type]
3951
end
4052

41-
def import_destructure
42-
"{ #{generated_type} }"
43-
end
44-
4553
def generated_type
4654
"#{scoped_short_name}Aggregate"
4755
end

src/remote_generator/services/atom_entity_generator.rb

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,6 @@ def ts_instance_path
3636
[*model_prefix, generated_type]
3737
end
3838

39-
def import_destructure
40-
"{ #{generated_type} }"
41-
end
42-
4339
def generated_type
4440
"#{scoped_short_name}Atom"
4541
end

src/remote_generator/services/dependency_group.rb

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,14 @@ def collisions_for_points
1010
end
1111
end
1212

13-
attr_accessor :dependencies, :name, :will_define, :deps_are_for
13+
attr_accessor :dependencies, :name, :will_define, :deps_are_for, :winners
1414

15-
def initialize(dependencies, name:, deps_are_for:, will_define:)
15+
def initialize(dependencies, name:, deps_are_for:, will_define:, winners: nil)
1616
self.deps_are_for = deps_are_for
1717
self.will_define = will_define
1818
self.name = name
1919
self.dependencies = dependencies.to_set
20+
self.winners = [*winners] if winners
2021

2122
find_collisions
2223
end
@@ -69,7 +70,7 @@ def non_colliding_root(dep)
6970
root
7071
end
7172

72-
def points_for(dep)
73+
def raw_points_for(dep)
7374
points = collision_data_for(dep).points
7475

7576
unless points
@@ -81,6 +82,14 @@ def points_for(dep)
8182
points
8283
end
8384

85+
def points_for(dep)
86+
if winners&.include?(dep)
87+
0
88+
else
89+
raw_points_for(dep)
90+
end
91+
end
92+
8493
def non_colliding_type_name(dep, points = points_for(dep))
8594
non_colliding_type_path(dep, points).join(".")
8695
end

src/remote_generator/services/loaded_entity_generator.rb

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@ def ts_instance_path
1616
[*model_prefix, generated_type]
1717
end
1818

19-
def import_destructure
20-
"{ #{generated_type} }"
21-
end
22-
2319
def generated_type
2420
"Loaded#{scoped_short_name}"
2521
end

src/remote_generator/services/model_generator.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ def model_name_downcase
5050
def generated_type
5151
model_short_name
5252
end
53+
54+
def import_destructure
55+
"{ #{generated_type} }"
56+
end
5357
end
5458
end
5559
end

src/remote_generator/services/typescript_from_manifest_base_generator.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,11 @@ def dependency_group
120120
generator_for(dependency)
121121
end
122122

123-
DependencyGroup.new(generators, deps_are_for: self, name: scoped_full_path.join("."), will_define:)
123+
DependencyGroup.new(generators,
124+
deps_are_for: self,
125+
name: scoped_full_path.join("."),
126+
will_define:,
127+
winners: collision_winners)
124128
end
125129
end
126130

@@ -141,6 +145,8 @@ def dependency_roots
141145
@dependency_roots = dependency_group.non_colliding_dependency_roots.sort_by(&:scoped_full_name)
142146
end
143147

148+
def collision_winners = nil
149+
144150
def ts_instance_path
145151
scoped_path
146152
end

src/remote_generator/services/unloaded_entity_generator.rb

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@ def ts_instance_path
1414
[*model_prefix, generated_type]
1515
end
1616

17-
def import_destructure
18-
"{ #{generated_type} }"
19-
end
20-
2117
def generated_type
2218
"Unloaded#{scoped_short_name}"
2319
end

templates/Entity/Aggregate.ts.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {
22
<%= entity_short_name %>AttributesType
33
} from "./Ambiguous"
4-
import { Loaded<%= entity_short_name %> } from "./Loaded"
4+
55
<% dependency_roots.each do |dependency_root| %>
66
import <%= dependency_root.import_destructure %> from "<%= path_to_root %><%= dependency_root.import_path %>"
77
<% end %>

0 commit comments

Comments
 (0)