types_from_serializers 2.2.0 → 2.4.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: 0e3961bc80ddc72831c77e7cf9ddf0959809a49a845f0d778d0c6ac50148cb87
4
- data.tar.gz: e676ddfe4c4c51081075bd5bbb3a66990d8ea469dc60305a550175abe8c43c99
3
+ metadata.gz: be10a6dcb68468930d839963a8ce27bacde784ff887f0171eb924289d63ec163
4
+ data.tar.gz: 03a221ba1c0a452cdbf8214d14d3ebd8dccc37a5a3c7860e5fa46c919bfb2905
5
5
  SHA512:
6
- metadata.gz: 01e286a9381c3d8f2e00c4085ba491ab4d4332ee3ac0ea2ebd109a7ff53ddb131b43d1c0839a09459884edc0536cd805d5303be2a80143a12998d6b5839dfc14
7
- data.tar.gz: a3687e203f27c34a3243f1422588bd2c79362ef4b7f9c2432ec6ce53493c83c11782f784f8acb4a76d7a611fab6ca7e9422f63560c3053739e3b39c3258d91ed
6
+ metadata.gz: 9b05949d6f5355e8e7dad8e22a639dc3e92bcc47e47d379a2695e5530b86a1ed2db66ecd687b96964e06415a58c283475dd6aa4cf77eef4c39c9c1b64bf68782
7
+ data.tar.gz: f0132d60528bdca4dc175700aeea04cd31f9e06b22247d3fe9ce98e9eb2cbc0c9d575d1ce2effc8f305cd911179ef70434a8e5c71c90b63de2ddff99d5f7084e
data/CHANGELOG.md CHANGED
@@ -1,3 +1,22 @@
1
+ # [2.4.0](https://github.com/ElMassimo/types_from_serializers/compare/types_from_serializers@2.3.0...types_from_serializers@2.4.0) (2025-04-08)
2
+
3
+
4
+ ### Features
5
+
6
+ * add support for json and jsonb fields ([#25](https://github.com/ElMassimo/types_from_serializers/issues/25)) ([34e747f](https://github.com/ElMassimo/types_from_serializers/commit/34e747f11ebdd032484d10679240701eb2548ed3))
7
+ * convert uuid fields to string type ([#24](https://github.com/ElMassimo/types_from_serializers/issues/24)) ([35c87a9](https://github.com/ElMassimo/types_from_serializers/commit/35c87a96365d32d40adce5ba9fddd3d380f29169))
8
+
9
+
10
+
11
+ # [2.3.0](https://github.com/ElMassimo/types_from_serializers/compare/types_from_serializers@2.2.0...types_from_serializers@2.3.0) (2024-08-23)
12
+
13
+
14
+ ### Features
15
+
16
+ * generate types for inline serializers, exclude them from the index ([1c3657c](https://github.com/ElMassimo/types_from_serializers/commit/1c3657c61a1bc891f3219f6eaf8557cd3cd6344a)), closes [#19](https://github.com/ElMassimo/types_from_serializers/issues/19)
17
+
18
+
19
+
1
20
  # [2.2.0](https://github.com/ElMassimo/types_from_serializers/compare/types_from_serializers@2.1.0...types_from_serializers@2.2.0) (2024-08-23)
2
21
 
3
22
 
@@ -38,6 +38,11 @@ module TypesFromSerializers
38
38
  TypesFromSerializers.config.name_from_serializer.call(name).gsub("::", "/")
39
39
  end
40
40
 
41
+ # Internal: If the serializer was defined inside a file.
42
+ def inline_serializer?
43
+ name.include?("Serializer::")
44
+ end
45
+
41
46
  # Internal: The TypeScript properties of the serialzeir interface.
42
47
  def ts_properties
43
48
  @ts_properties ||= begin
@@ -312,9 +317,7 @@ module TypesFromSerializers
312
317
  # Internal: Checks if it should avoid generating an interface.
313
318
  def skip_serializer?(serializer)
314
319
  serializer.name.in?(config.base_serializers) ||
315
- config.skip_serializer_if.call(serializer) ||
316
- # NOTE: Ignore inline serializers.
317
- serializer.ts_name.include?("Serializer")
320
+ config.skip_serializer_if.call(serializer)
318
321
  end
319
322
 
320
323
  # Internal: Returns an object compatible with FileUpdateChecker.
@@ -362,7 +365,9 @@ module TypesFromSerializers
362
365
  output_dir: root.join(defined?(ViteRuby) ? ViteRuby.config.source_code_dir : "app/frontend").join("types/serializers"),
363
366
 
364
367
  # Remove the serializer suffix from the class name.
365
- name_from_serializer: ->(name) { name.delete_suffix("Serializer") },
368
+ name_from_serializer: ->(name) {
369
+ name.split("::").map { |n| n.delete_suffix("Serializer") }.join("::")
370
+ },
366
371
 
367
372
  # Types that don't need to be imported in TypeScript.
368
373
  global_types: [
@@ -387,6 +392,9 @@ module TypesFromSerializers
387
392
  string: :string,
388
393
  text: :string,
389
394
  citext: :string,
395
+ uuid: :string,
396
+ json: "Record<string, any>",
397
+ jsonb: "Record<string, any>",
390
398
  }.tap do |types|
391
399
  types.default = :unknown
392
400
  end,
@@ -420,7 +428,7 @@ module TypesFromSerializers
420
428
  <<~TS
421
429
  //
422
430
  // DO NOT MODIFY: This file was automatically generated by TypesFromSerializers.
423
- #{serializers.map { |s|
431
+ #{serializers.reject(&:inline_serializer?).map { |s|
424
432
  "export type { default as #{s.ts_name} } from './#{s.ts_filename}'"
425
433
  }.join("\n")}
426
434
  TS
@@ -2,5 +2,5 @@
2
2
 
3
3
  module TypesFromSerializers
4
4
  # Public: This library adheres to semantic versioning.
5
- VERSION = "2.2.0"
5
+ VERSION = "2.4.0"
6
6
  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.2.0
4
+ version: 2.4.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: 2024-08-23 00:00:00.000000000 Z
11
+ date: 2025-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -277,7 +277,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
277
277
  - !ruby/object:Gem::Version
278
278
  version: '0'
279
279
  requirements: []
280
- rubygems_version: 3.4.10
280
+ rubygems_version: 3.5.16
281
281
  signing_key:
282
282
  specification_version: 4
283
283
  summary: Generate TypeScript interfaces from your JSON serializers.