class Anchor::TypeScript::SchemaGenerator
def call
def call maybe_type = "type Maybe<T> = T | null;" enum_expressions = enums.map(&:express) type_expressions = resources.map do |r| r.express( context: @context, include_all_fields: @include_all_fields, exclude_fields: @exclude_fields.nil? ? [] : @exclude_fields[r.anchor_schema_name.to_sym], ) end ([maybe_type] + enum_expressions + type_expressions).join("\n\n") + "\n" end
def enums
def enums @enums ||= @register.enums.map { |e| Anchor::TypeScript::Types::Enum.new(e) } end
def initialize(register:, context: {}, include_all_fields: false, exclude_fields: nil) # rubocop:disable Lint/MissingSuper
def initialize(register:, context: {}, include_all_fields: false, exclude_fields: nil) # rubocop:disable Lint/MissingSuper @register = register @context = context @include_all_fields = include_all_fields @exclude_fields = exclude_fields end
def resources
def resources @resources ||= @register.resources.map { |r| Anchor::TypeScript::Resource.new(r) } end