types_from_serializers 2.5.0 → 2.6.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 +4 -4
- data/CHANGELOG.md +10 -0
- data/lib/types_from_serializers/generator.rb +65 -11
- data/lib/types_from_serializers/railtie.rb +7 -7
- data/lib/types_from_serializers/version.rb +1 -1
- metadata +2 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5ba3078a6ac5b9c49a435628333f17bcd3136ad469acd9aa074ab5d92f359c75
|
|
4
|
+
data.tar.gz: 8f19bc101b8634b1afbc1d64ef66372a87f448bcaa5a802ad6c6ca39c607749b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e1b5481824e42a2d7721946e9a3d39dd533074d3ef4f7f5d6fd89dbd7a754e8ccb689d30af3ec211f49602ce81c11ac34e79079e6408a1e2a294687757431312
|
|
7
|
+
data.tar.gz: 4d8d66623371ec2fe42effadde394103b6164fec7400af77addcb7abea266ca8bbc1d8587cffa3f0d9f107694328f585aef469161e40428e0169f2972b09037f
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
# [2.6.0](https://github.com/ElMassimo/types_from_serializers/compare/types_from_serializers@2.5.0...types_from_serializers@2.6.0) (2026-05-06)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* relax oj_serializers dependency by removing the upper constraint ([#34](https://github.com/ElMassimo/types_from_serializers/issues/34)) ([3018e89](https://github.com/ElMassimo/types_from_serializers/commit/3018e8937a6808123bf0dd482e730bc666d20137))
|
|
7
|
+
* support multiple generator instances for Rails monolith sub-apps ([#32](https://github.com/ElMassimo/types_from_serializers/issues/32)) ([33ce3c1](https://github.com/ElMassimo/types_from_serializers/commit/33ce3c1cfa78c6c899ef9fdd05a034ccde50431f))
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
1
11
|
# [2.5.0](https://github.com/ElMassimo/types_from_serializers/compare/types_from_serializers@2.4.0...types_from_serializers@2.5.0) (2026-01-02)
|
|
2
12
|
|
|
3
13
|
|
|
@@ -265,11 +265,21 @@ module TypesFromSerializers
|
|
|
265
265
|
|
|
266
266
|
attr_reader :force_generation
|
|
267
267
|
|
|
268
|
+
# Public: Registry of named configurations for multi-app setups.
|
|
269
|
+
def configs
|
|
270
|
+
@configs ||= {}
|
|
271
|
+
end
|
|
272
|
+
|
|
268
273
|
# Public: Configuration of the code generator.
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
274
|
+
# Without a name: returns/modifies the default config (backward compatible).
|
|
275
|
+
# With a name: returns/creates a named config for a specific sub-app.
|
|
276
|
+
def config(name = :default, &block)
|
|
277
|
+
cfg = if name == :default
|
|
278
|
+
@config ||= default_config(root)
|
|
279
|
+
else
|
|
280
|
+
configs[name] ||= default_config(root)
|
|
272
281
|
end
|
|
282
|
+
cfg.tap { |c| yield(c) if block }
|
|
273
283
|
end
|
|
274
284
|
|
|
275
285
|
# Public: Generates code for all serializers in the app.
|
|
@@ -288,12 +298,36 @@ module TypesFromSerializers
|
|
|
288
298
|
end
|
|
289
299
|
end
|
|
290
300
|
|
|
301
|
+
# Public: Generates types for all registered configurations (default + named).
|
|
302
|
+
# Use this in monolith setups with multiple sub-apps.
|
|
303
|
+
def generate_all(force: ENV["SERIALIZER_TYPES_FORCE"])
|
|
304
|
+
all_configs_list.each do |cfg|
|
|
305
|
+
with_active_config(cfg) { generate(force: force) }
|
|
306
|
+
end
|
|
307
|
+
end
|
|
308
|
+
|
|
291
309
|
def generate_changed
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
310
|
+
chg = changes_for(config)
|
|
311
|
+
if chg.updated?
|
|
312
|
+
config.output_dir.rmtree if chg.any_removed?
|
|
313
|
+
load_serializers(chg.modified_files)
|
|
295
314
|
generate
|
|
296
|
-
|
|
315
|
+
chg.clear
|
|
316
|
+
end
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
# Public: Like generate_changed but for all registered configurations.
|
|
320
|
+
def generate_all_changed
|
|
321
|
+
all_configs_list.each do |cfg|
|
|
322
|
+
chg = changes_for(cfg)
|
|
323
|
+
if chg.updated?
|
|
324
|
+
with_active_config(cfg) do
|
|
325
|
+
config.output_dir.rmtree if chg.any_removed?
|
|
326
|
+
load_serializers(chg.modified_files)
|
|
327
|
+
generate
|
|
328
|
+
chg.clear
|
|
329
|
+
end
|
|
330
|
+
end
|
|
297
331
|
end
|
|
298
332
|
end
|
|
299
333
|
|
|
@@ -321,9 +355,14 @@ module TypesFromSerializers
|
|
|
321
355
|
config.skip_serializer_if.call(serializer)
|
|
322
356
|
end
|
|
323
357
|
|
|
324
|
-
# Internal: Returns
|
|
358
|
+
# Internal: Returns the Changes tracker for the default config (backward compatible).
|
|
325
359
|
def track_changes
|
|
326
|
-
|
|
360
|
+
changes_for(config)
|
|
361
|
+
end
|
|
362
|
+
|
|
363
|
+
# Public: Returns Changes trackers for all registered configurations.
|
|
364
|
+
def all_changes
|
|
365
|
+
all_configs_list.map { |cfg| changes_for(cfg) }
|
|
327
366
|
end
|
|
328
367
|
|
|
329
368
|
private
|
|
@@ -332,8 +371,23 @@ module TypesFromSerializers
|
|
|
332
371
|
defined?(Rails) ? Rails.root : Pathname.new(Dir.pwd)
|
|
333
372
|
end
|
|
334
373
|
|
|
335
|
-
def
|
|
336
|
-
@
|
|
374
|
+
def changes_for(cfg)
|
|
375
|
+
@changes_registry ||= {}
|
|
376
|
+
@changes_registry[cfg.object_id] ||= Changes.new(cfg.serializers_dirs)
|
|
377
|
+
end
|
|
378
|
+
|
|
379
|
+
# Internal: Returns the default config followed by all named configs.
|
|
380
|
+
def all_configs_list
|
|
381
|
+
[(@config || default_config(root))] + configs.values
|
|
382
|
+
end
|
|
383
|
+
|
|
384
|
+
# Internal: Temporarily sets the active config for the duration of a block,
|
|
385
|
+
# so all internal methods and refinements pick up the correct config.
|
|
386
|
+
def with_active_config(cfg)
|
|
387
|
+
saved, @config = @config, cfg
|
|
388
|
+
yield
|
|
389
|
+
ensure
|
|
390
|
+
@config = saved
|
|
337
391
|
end
|
|
338
392
|
|
|
339
393
|
def all_serializer_files
|
|
@@ -14,15 +14,17 @@ class TypesFromSerializers::Railtie < Rails::Railtie
|
|
|
14
14
|
require "listen"
|
|
15
15
|
|
|
16
16
|
app.config.after_initialize do
|
|
17
|
-
|
|
17
|
+
TypesFromSerializers.all_changes.each do |changes|
|
|
18
|
+
app.reloaders << changes
|
|
19
|
+
end
|
|
18
20
|
end
|
|
19
21
|
|
|
20
22
|
app.config.to_prepare do
|
|
21
|
-
TypesFromSerializers.
|
|
23
|
+
TypesFromSerializers.generate_all_changed
|
|
22
24
|
end
|
|
23
25
|
else
|
|
24
26
|
app.config.to_prepare do
|
|
25
|
-
TypesFromSerializers.
|
|
27
|
+
TypesFromSerializers.generate_all
|
|
26
28
|
end
|
|
27
29
|
|
|
28
30
|
Rails.logger.warn "Add 'listen' to your Gemfile to automatically generate code on serializer changes."
|
|
@@ -38,10 +40,8 @@ class TypesFromSerializers::Railtie < Rails::Railtie
|
|
|
38
40
|
require_relative "generator"
|
|
39
41
|
start_time = Time.zone.now
|
|
40
42
|
print "Generating TypeScript interfaces..."
|
|
41
|
-
|
|
42
|
-
puts "completed in #{(Time.zone.now - start_time).round(2)} seconds
|
|
43
|
-
puts "Found #{serializers.size} serializers:"
|
|
44
|
-
puts serializers.map { |s| "\t#{s.name}" }.join("\n")
|
|
43
|
+
TypesFromSerializers.generate_all(force: true)
|
|
44
|
+
puts "completed in #{(Time.zone.now - start_time).round(2)} seconds."
|
|
45
45
|
end
|
|
46
46
|
end
|
|
47
47
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: types_from_serializers
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.6.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Máximo Mussini
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-05-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: railties
|
|
@@ -31,9 +31,6 @@ dependencies:
|
|
|
31
31
|
- - ">="
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
33
|
version: 2.0.2
|
|
34
|
-
- - "~>"
|
|
35
|
-
- !ruby/object:Gem::Version
|
|
36
|
-
version: '2.0'
|
|
37
34
|
type: :runtime
|
|
38
35
|
prerelease: false
|
|
39
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -41,9 +38,6 @@ dependencies:
|
|
|
41
38
|
- - ">="
|
|
42
39
|
- !ruby/object:Gem::Version
|
|
43
40
|
version: 2.0.2
|
|
44
|
-
- - "~>"
|
|
45
|
-
- !ruby/object:Gem::Version
|
|
46
|
-
version: '2.0'
|
|
47
41
|
- !ruby/object:Gem::Dependency
|
|
48
42
|
name: listen
|
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|