tapioca 0.16.9 → 0.17.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.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +21 -0
  3. data/exe/tapioca +6 -1
  4. data/lib/ruby_lsp/tapioca/addon.rb +73 -43
  5. data/lib/ruby_lsp/tapioca/run_gem_rbi_check.rb +43 -43
  6. data/lib/ruby_lsp/tapioca/server_addon.rb +13 -10
  7. data/lib/tapioca/bundler_ext/auto_require_hook.rb +6 -14
  8. data/lib/tapioca/cli.rb +16 -8
  9. data/lib/tapioca/commands/abstract_dsl.rb +39 -66
  10. data/lib/tapioca/commands/abstract_gem.rb +25 -46
  11. data/lib/tapioca/commands/annotations.rb +28 -34
  12. data/lib/tapioca/commands/check_shims.rb +6 -15
  13. data/lib/tapioca/commands/command.rb +12 -26
  14. data/lib/tapioca/commands/command_without_tracker.rb +2 -5
  15. data/lib/tapioca/commands/configure.rb +11 -16
  16. data/lib/tapioca/commands/dsl_compiler_list.rb +2 -1
  17. data/lib/tapioca/commands/dsl_generate.rb +2 -1
  18. data/lib/tapioca/commands/dsl_verify.rb +2 -1
  19. data/lib/tapioca/commands/gem_generate.rb +5 -9
  20. data/lib/tapioca/commands/gem_sync.rb +2 -1
  21. data/lib/tapioca/commands/gem_verify.rb +3 -2
  22. data/lib/tapioca/commands/require.rb +3 -7
  23. data/lib/tapioca/commands/todo.rb +6 -10
  24. data/lib/tapioca/dsl/compiler.rb +36 -63
  25. data/lib/tapioca/dsl/compilers/aasm.rb +33 -44
  26. data/lib/tapioca/dsl/compilers/action_controller_helpers.rb +8 -7
  27. data/lib/tapioca/dsl/compilers/action_mailer.rb +6 -5
  28. data/lib/tapioca/dsl/compilers/action_text.rb +6 -5
  29. data/lib/tapioca/dsl/compilers/active_job.rb +6 -10
  30. data/lib/tapioca/dsl/compilers/active_model_attributes.rb +10 -11
  31. data/lib/tapioca/dsl/compilers/active_model_secure_password.rb +5 -6
  32. data/lib/tapioca/dsl/compilers/active_model_validations_confirmation.rb +5 -12
  33. data/lib/tapioca/dsl/compilers/active_record_associations.rb +17 -44
  34. data/lib/tapioca/dsl/compilers/active_record_columns.rb +20 -26
  35. data/lib/tapioca/dsl/compilers/active_record_delegated_types.rb +9 -8
  36. data/lib/tapioca/dsl/compilers/active_record_enum.rb +7 -6
  37. data/lib/tapioca/dsl/compilers/active_record_fixtures.rb +54 -62
  38. data/lib/tapioca/dsl/compilers/active_record_relations.rb +148 -209
  39. data/lib/tapioca/dsl/compilers/active_record_scope.rb +8 -13
  40. data/lib/tapioca/dsl/compilers/active_record_secure_token.rb +5 -4
  41. data/lib/tapioca/dsl/compilers/active_record_store.rb +5 -4
  42. data/lib/tapioca/dsl/compilers/active_record_typed_store.rb +19 -28
  43. data/lib/tapioca/dsl/compilers/active_resource.rb +19 -21
  44. data/lib/tapioca/dsl/compilers/active_storage.rb +6 -14
  45. data/lib/tapioca/dsl/compilers/active_support_concern.rb +9 -8
  46. data/lib/tapioca/dsl/compilers/active_support_current_attributes.rb +8 -7
  47. data/lib/tapioca/dsl/compilers/active_support_time_ext.rb +5 -4
  48. data/lib/tapioca/dsl/compilers/config.rb +5 -4
  49. data/lib/tapioca/dsl/compilers/frozen_record.rb +7 -11
  50. data/lib/tapioca/dsl/compilers/graphql_input_object.rb +9 -10
  51. data/lib/tapioca/dsl/compilers/graphql_mutation.rb +6 -10
  52. data/lib/tapioca/dsl/compilers/identity_cache.rb +11 -39
  53. data/lib/tapioca/dsl/compilers/json_api_client_resource.rb +9 -18
  54. data/lib/tapioca/dsl/compilers/kredis.rb +7 -8
  55. data/lib/tapioca/dsl/compilers/mixed_in_class_attributes.rb +5 -4
  56. data/lib/tapioca/dsl/compilers/protobuf.rb +13 -26
  57. data/lib/tapioca/dsl/compilers/rails_generators.rb +9 -11
  58. data/lib/tapioca/dsl/compilers/sidekiq_worker.rb +23 -13
  59. data/lib/tapioca/dsl/compilers/smart_properties.rb +32 -38
  60. data/lib/tapioca/dsl/compilers/state_machines.rb +15 -26
  61. data/lib/tapioca/dsl/compilers/url_helpers.rb +10 -9
  62. data/lib/tapioca/dsl/compilers.rb +4 -7
  63. data/lib/tapioca/dsl/helpers/active_model_type_helper.rb +13 -16
  64. data/lib/tapioca/dsl/helpers/active_record_column_type_helper.rb +13 -28
  65. data/lib/tapioca/dsl/helpers/active_record_constants_helper.rb +19 -15
  66. data/lib/tapioca/dsl/helpers/graphql_type_helper.rb +5 -24
  67. data/lib/tapioca/dsl/pipeline.rb +30 -58
  68. data/lib/tapioca/executor.rb +6 -12
  69. data/lib/tapioca/gem/events.rb +24 -34
  70. data/lib/tapioca/gem/listeners/base.rb +7 -10
  71. data/lib/tapioca/gem/listeners/dynamic_mixins.rb +4 -2
  72. data/lib/tapioca/gem/listeners/foreign_constants.rb +5 -7
  73. data/lib/tapioca/gem/listeners/methods.rb +36 -47
  74. data/lib/tapioca/gem/listeners/mixins.rb +6 -18
  75. data/lib/tapioca/gem/listeners/remove_empty_payload_scopes.rb +4 -2
  76. data/lib/tapioca/gem/listeners/sorbet_enums.rb +4 -2
  77. data/lib/tapioca/gem/listeners/sorbet_helpers.rb +4 -2
  78. data/lib/tapioca/gem/listeners/sorbet_props.rb +4 -2
  79. data/lib/tapioca/gem/listeners/sorbet_required_ancestors.rb +4 -2
  80. data/lib/tapioca/gem/listeners/sorbet_signatures.rb +7 -5
  81. data/lib/tapioca/gem/listeners/sorbet_type_variables.rb +6 -4
  82. data/lib/tapioca/gem/listeners/source_location.rb +15 -8
  83. data/lib/tapioca/gem/listeners/subconstants.rb +5 -4
  84. data/lib/tapioca/gem/listeners/yard_doc.rb +30 -23
  85. data/lib/tapioca/gem/pipeline.rb +107 -91
  86. data/lib/tapioca/gem_info.rb +1 -1
  87. data/lib/tapioca/gemfile.rb +64 -73
  88. data/lib/tapioca/helpers/cli_helper.rb +4 -7
  89. data/lib/tapioca/helpers/config_helper.rb +17 -29
  90. data/lib/tapioca/helpers/env_helper.rb +2 -5
  91. data/lib/tapioca/helpers/gem_helper.rb +5 -5
  92. data/lib/tapioca/helpers/git_attributes.rb +3 -3
  93. data/lib/tapioca/helpers/rbi_files_helper.rb +76 -73
  94. data/lib/tapioca/helpers/rbi_helper.rb +14 -22
  95. data/lib/tapioca/helpers/sorbet_helper.rb +9 -18
  96. data/lib/tapioca/helpers/source_uri.rb +15 -25
  97. data/lib/tapioca/helpers/test/content.rb +7 -10
  98. data/lib/tapioca/helpers/test/dsl_compiler.rb +20 -33
  99. data/lib/tapioca/helpers/test/isolation.rb +10 -14
  100. data/lib/tapioca/helpers/test/template.rb +6 -11
  101. data/lib/tapioca/internal.rb +18 -8
  102. data/lib/tapioca/loaders/dsl.rb +11 -19
  103. data/lib/tapioca/loaders/gem.rb +6 -21
  104. data/lib/tapioca/loaders/loader.rb +21 -39
  105. data/lib/tapioca/rbi_ext/model.rb +12 -37
  106. data/lib/tapioca/rbi_formatter.rb +10 -19
  107. data/lib/tapioca/rbs/rewriter.rb +55 -0
  108. data/lib/tapioca/repo_index.rb +7 -9
  109. data/lib/tapioca/runtime/attached_class_of_32.rb +1 -1
  110. data/lib/tapioca/runtime/attached_class_of_legacy.rb +2 -5
  111. data/lib/tapioca/runtime/dynamic_mixin_compiler.rb +23 -23
  112. data/lib/tapioca/runtime/generic_type_registry.rb +13 -23
  113. data/lib/tapioca/runtime/reflection.rb +81 -60
  114. data/lib/tapioca/runtime/source_location.rb +44 -0
  115. data/lib/tapioca/runtime/trackers/autoload.rb +7 -9
  116. data/lib/tapioca/runtime/trackers/constant_definition.rb +18 -14
  117. data/lib/tapioca/runtime/trackers/method_definition.rb +65 -0
  118. data/lib/tapioca/runtime/trackers/mixin.rb +8 -11
  119. data/lib/tapioca/runtime/trackers/required_ancestor.rb +3 -3
  120. data/lib/tapioca/runtime/trackers/tracker.rb +3 -6
  121. data/lib/tapioca/runtime/trackers.rb +5 -8
  122. data/lib/tapioca/sorbet_ext/generic_name_patch.rb +9 -15
  123. data/lib/tapioca/sorbet_ext/name_patch.rb +2 -2
  124. data/lib/tapioca/sorbet_ext/proc_bind_patch.rb +1 -1
  125. data/lib/tapioca/static/requires_compiler.rb +6 -6
  126. data/lib/tapioca/static/symbol_loader.rb +14 -16
  127. data/lib/tapioca/static/symbol_table_parser.rb +8 -8
  128. data/lib/tapioca/version.rb +1 -1
  129. data/lib/tapioca.rb +22 -29
  130. metadata +27 -10
data/lib/tapioca.rb CHANGED
@@ -7,16 +7,12 @@ require "rubygems/user_interaction"
7
7
  module Tapioca
8
8
  extend T::Sig
9
9
 
10
- @traces = T.let([], T::Array[TracePoint])
10
+ @traces = [] #: Array[TracePoint]
11
11
 
12
12
  class << self
13
13
  extend T::Sig
14
14
 
15
- sig do
16
- type_parameters(:Result)
17
- .params(blk: T.proc.returns(T.type_parameter(:Result)))
18
- .returns(T.type_parameter(:Result))
19
- end
15
+ #: [Result] { -> Result } -> Result
20
16
  def silence_warnings(&blk)
21
17
  original_verbosity = $VERBOSE
22
18
  $VERBOSE = nil
@@ -30,29 +26,26 @@ module Tapioca
30
26
 
31
27
  class Error < StandardError; end
32
28
 
33
- LIB_ROOT_DIR = T.let(T.must(__dir__), String)
34
- SORBET_DIR = T.let("sorbet", String)
35
- SORBET_CONFIG_FILE = T.let("#{SORBET_DIR}/config", String)
36
- TAPIOCA_DIR = T.let("#{SORBET_DIR}/tapioca", String)
37
- TAPIOCA_CONFIG_FILE = T.let("#{TAPIOCA_DIR}/config.yml", String)
38
-
39
- BINARY_FILE = T.let("bin/tapioca", String)
40
- DEFAULT_POSTREQUIRE_FILE = T.let("#{TAPIOCA_DIR}/require.rb", String)
41
- DEFAULT_RBI_DIR = T.let("#{SORBET_DIR}/rbi", String)
42
- DEFAULT_DSL_DIR = T.let("#{DEFAULT_RBI_DIR}/dsl", String)
43
- DEFAULT_GEM_DIR = T.let("#{DEFAULT_RBI_DIR}/gems", String)
44
- DEFAULT_SHIM_DIR = T.let("#{DEFAULT_RBI_DIR}/shims", String)
45
- DEFAULT_TODO_FILE = T.let("#{DEFAULT_RBI_DIR}/todo.rbi", String)
46
- DEFAULT_ANNOTATIONS_DIR = T.let("#{DEFAULT_RBI_DIR}/annotations", String)
47
-
48
- DEFAULT_OVERRIDES = T.let(
49
- {
50
- # ActiveSupport overrides some core methods with different signatures
51
- # so we generate a typed: false RBI for it to suppress errors
52
- "activesupport" => "false",
53
- }.freeze,
54
- T::Hash[String, String],
55
- )
29
+ LIB_ROOT_DIR = T.must(__dir__) #: String
30
+ SORBET_DIR = "sorbet" #: String
31
+ SORBET_CONFIG_FILE = "#{SORBET_DIR}/config" #: String
32
+ TAPIOCA_DIR = "#{SORBET_DIR}/tapioca" #: String
33
+ TAPIOCA_CONFIG_FILE = "#{TAPIOCA_DIR}/config.yml" #: String
34
+
35
+ BINARY_FILE = "bin/tapioca" #: String
36
+ DEFAULT_POSTREQUIRE_FILE = "#{TAPIOCA_DIR}/require.rb" #: String
37
+ DEFAULT_RBI_DIR = "#{SORBET_DIR}/rbi" #: String
38
+ DEFAULT_DSL_DIR = "#{DEFAULT_RBI_DIR}/dsl" #: String
39
+ DEFAULT_GEM_DIR = "#{DEFAULT_RBI_DIR}/gems" #: String
40
+ DEFAULT_SHIM_DIR = "#{DEFAULT_RBI_DIR}/shims" #: String
41
+ DEFAULT_TODO_FILE = "#{DEFAULT_RBI_DIR}/todo.rbi" #: String
42
+ DEFAULT_ANNOTATIONS_DIR = "#{DEFAULT_RBI_DIR}/annotations" #: String
43
+
44
+ DEFAULT_OVERRIDES = {
45
+ # ActiveSupport overrides some core methods with different signatures
46
+ # so we generate a typed: false RBI for it to suppress errors
47
+ "activesupport" => "false",
48
+ }.freeze #: Hash[String, String]
56
49
 
57
50
  DEFAULT_RBI_MAX_LINE_LENGTH = 120
58
51
  DEFAULT_ENVIRONMENT = "development"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tapioca
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.9
4
+ version: 0.17.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ufuk Kayserilioglu
@@ -10,7 +10,7 @@ authors:
10
10
  - Peter Zhu
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2025-02-04 00:00:00.000000000 Z
13
+ date: 1980-01-02 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: benchmark
@@ -72,16 +72,30 @@ dependencies:
72
72
  name: rbi
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
- - - "~>"
75
+ - - ">="
76
76
  - !ruby/object:Gem::Version
77
- version: '0.2'
77
+ version: 0.3.1
78
78
  type: :runtime
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
- - - "~>"
82
+ - - ">="
83
83
  - !ruby/object:Gem::Version
84
- version: '0.2'
84
+ version: 0.3.1
85
+ - !ruby/object:Gem::Dependency
86
+ name: require-hooks
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: 0.2.2
92
+ type: :runtime
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: 0.2.2
85
99
  - !ruby/object:Gem::Dependency
86
100
  name: sorbet-static-and-runtime
87
101
  requirement: !ruby/object:Gem::Requirement
@@ -102,14 +116,14 @@ dependencies:
102
116
  requirements:
103
117
  - - ">="
104
118
  - !ruby/object:Gem::Version
105
- version: 1.2.0
119
+ version: 1.7.0
106
120
  type: :runtime
107
121
  prerelease: false
108
122
  version_requirements: !ruby/object:Gem::Requirement
109
123
  requirements:
110
124
  - - ">="
111
125
  - !ruby/object:Gem::Version
112
- version: 1.2.0
126
+ version: 1.7.0
113
127
  - !ruby/object:Gem::Dependency
114
128
  name: thor
115
129
  requirement: !ruby/object:Gem::Requirement
@@ -260,15 +274,18 @@ files:
260
274
  - lib/tapioca/loaders/loader.rb
261
275
  - lib/tapioca/rbi_ext/model.rb
262
276
  - lib/tapioca/rbi_formatter.rb
277
+ - lib/tapioca/rbs/rewriter.rb
263
278
  - lib/tapioca/repo_index.rb
264
279
  - lib/tapioca/runtime/attached_class_of_32.rb
265
280
  - lib/tapioca/runtime/attached_class_of_legacy.rb
266
281
  - lib/tapioca/runtime/dynamic_mixin_compiler.rb
267
282
  - lib/tapioca/runtime/generic_type_registry.rb
268
283
  - lib/tapioca/runtime/reflection.rb
284
+ - lib/tapioca/runtime/source_location.rb
269
285
  - lib/tapioca/runtime/trackers.rb
270
286
  - lib/tapioca/runtime/trackers/autoload.rb
271
287
  - lib/tapioca/runtime/trackers/constant_definition.rb
288
+ - lib/tapioca/runtime/trackers/method_definition.rb
272
289
  - lib/tapioca/runtime/trackers/mixin.rb
273
290
  - lib/tapioca/runtime/trackers/required_ancestor.rb
274
291
  - lib/tapioca/runtime/trackers/tracker.rb
@@ -292,14 +309,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
292
309
  requirements:
293
310
  - - ">="
294
311
  - !ruby/object:Gem::Version
295
- version: '3.1'
312
+ version: '3.2'
296
313
  required_rubygems_version: !ruby/object:Gem::Requirement
297
314
  requirements:
298
315
  - - ">="
299
316
  - !ruby/object:Gem::Version
300
317
  version: '0'
301
318
  requirements: []
302
- rubygems_version: 3.6.3
319
+ rubygems_version: 3.6.9
303
320
  specification_version: 4
304
321
  summary: A Ruby Interface file generator for gems, core types and the Ruby standard
305
322
  library