Module: Zodra::Export
- Defined in:
- lib/zodra/export.rb,
lib/zodra/export/writer.rb,
lib/zodra/export/zod_mapper.rb,
lib/zodra/export/type_analysis.rb,
lib/zodra/export/contract_mapper.rb,
lib/zodra/export/surface_resolver.rb,
lib/zodra/export/type_script_mapper.rb
Defined Under Namespace
Classes: ContractMapper, SurfaceResolver, TypeAnalysis, TypeScriptMapper, Writer, ZodMapper
Constant Summary
collapse
- MAPPERS =
{
typescript: TypeScriptMapper,
zod: ZodMapper
}.freeze
Class Method Summary
collapse
Class Method Details
.generate(format, key_format: :camel, zod_import: 'zod') ⇒ Object
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/zodra/export.rb', line 10
def self.generate(format, key_format: :camel, zod_import: 'zod')
mapper_class = MAPPERS.fetch(format) do
raise ConfigurationError, "Unknown export format: #{format}. Available: #{MAPPERS.keys.join(', ')}"
end
mapper = mapper_class.new(key_format:)
contracts = ContractRegistry.global.to_a
definitions = SurfaceResolver.call(TypeRegistry.global.to_a, contracts)
analysis = TypeAnalysis.call(definitions)
parts = []
parts << "import { z } from '#{zod_import}';" if format == :zod
parts << mapper.map_definitions(analysis.sorted, cycles: analysis.cycles)
parts << mapper.map_contracts(contracts) unless contracts.empty?
parts.reject(&:empty?).join("\n\n")
end
|
.generate_contracts ⇒ Object
28
29
30
31
32
33
|
# File 'lib/zodra/export.rb', line 28
def self.generate_contracts
contracts = ContractRegistry.global.to_a
api_definitions = ApiRegistry.global.to_a
ContractMapper.new(api_definitions, contracts).generate
end
|