lutaml-model 0.8.17 → 0.8.18

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 (192) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/downstream-performance.yml +27 -1
  3. data/.github/workflows/js-pr-check.yml +102 -0
  4. data/.github/workflows/js-sync.yml +51 -0
  5. data/.github/workflows/opal.yml +26 -6
  6. data/.github/workflows/performance.yml +32 -7
  7. data/.github/workflows/rake.yml +78 -32
  8. data/.gitmodules +6 -0
  9. data/.rubocop_todo.yml +8 -0
  10. data/Gemfile +16 -1
  11. data/README.adoc +267 -0
  12. data/Rakefile +166 -4
  13. data/docs/_guides/schema-import.adoc +42 -0
  14. data/docs/_guides/xml-mapping.adoc +21 -0
  15. data/docs/_pages/validation.adoc +65 -0
  16. data/lib/compat/opal/generate_boot.rb +123 -0
  17. data/lib/compat/opal/js_bundle_entry.rb +42 -0
  18. data/lib/compat/opal/lutaml_model_boot.rb +497 -0
  19. data/lib/compat/opal/moxml_boot.rb +68 -0
  20. data/lib/compat/opal/yaml_compat.rb +32 -0
  21. data/lib/lutaml/json.rb +1 -1
  22. data/lib/lutaml/key_value/transform.rb +3 -8
  23. data/lib/lutaml/key_value/transformation/value_serializer.rb +14 -1
  24. data/lib/lutaml/key_value/transformation.rb +17 -5
  25. data/lib/lutaml/model/adapter_resolver.rb +2 -2
  26. data/lib/lutaml/model/attribute.rb +88 -11
  27. data/lib/lutaml/model/cached_type_resolver.rb +1 -1
  28. data/lib/lutaml/model/error/union_schema_unsupported_error.rb +11 -0
  29. data/lib/lutaml/model/global_context.rb +11 -8
  30. data/lib/lutaml/model/instrumentation.rb +2 -2
  31. data/lib/lutaml/model/mapping/mapping_rule.rb +0 -6
  32. data/lib/lutaml/model/register.rb +2 -2
  33. data/lib/lutaml/model/runtime_compatibility.rb +50 -0
  34. data/lib/lutaml/model/schema/class_loader.rb +58 -0
  35. data/lib/lutaml/model/schema/compiled_output.rb +83 -0
  36. data/lib/lutaml/model/schema/definitions/attribute.rb +32 -0
  37. data/lib/lutaml/model/schema/definitions/choice.rb +20 -0
  38. data/lib/lutaml/model/schema/definitions/facet.rb +40 -0
  39. data/lib/lutaml/model/schema/definitions/group_import.rb +22 -0
  40. data/lib/lutaml/model/schema/definitions/member_walk.rb +33 -0
  41. data/lib/lutaml/model/schema/definitions/model.rb +40 -0
  42. data/lib/lutaml/model/schema/definitions/namespace.rb +23 -0
  43. data/lib/lutaml/model/schema/definitions/restricted_type.rb +30 -0
  44. data/lib/lutaml/model/schema/definitions/sequence.rb +19 -0
  45. data/lib/lutaml/model/schema/definitions/simple_content.rb +22 -0
  46. data/lib/lutaml/model/schema/definitions/transform_facet.rb +21 -0
  47. data/lib/lutaml/model/schema/definitions/type_ref.rb +20 -0
  48. data/lib/lutaml/model/schema/definitions/union_type.rb +28 -0
  49. data/lib/lutaml/model/schema/definitions/xml_root.rb +20 -0
  50. data/lib/lutaml/model/schema/definitions.rb +24 -0
  51. data/lib/lutaml/model/schema/file_writer.rb +70 -0
  52. data/lib/lutaml/model/schema/generator/definitions_collection.rb +16 -2
  53. data/lib/lutaml/model/schema/generator/property.rb +21 -4
  54. data/lib/lutaml/model/schema/module_nesting.rb +31 -0
  55. data/lib/lutaml/model/schema/namespace_naming.rb +46 -0
  56. data/lib/lutaml/model/schema/registry_generator.rb +115 -0
  57. data/lib/lutaml/model/schema/renderers/base.rb +40 -0
  58. data/lib/lutaml/model/schema/renderers/mappings.rb +72 -0
  59. data/lib/lutaml/model/schema/renderers/member_decls.rb +115 -0
  60. data/lib/lutaml/model/schema/renderers/model.rb +121 -0
  61. data/lib/lutaml/model/schema/renderers/namespace.rb +30 -0
  62. data/lib/lutaml/model/schema/renderers/registration.rb +64 -0
  63. data/lib/lutaml/model/schema/renderers/required_files_calculator.rb +93 -0
  64. data/lib/lutaml/model/schema/renderers/restricted_type.rb +88 -0
  65. data/lib/lutaml/model/schema/renderers/union.rb +83 -0
  66. data/lib/lutaml/model/schema/renderers.rb +19 -0
  67. data/lib/lutaml/model/schema/rnc_compiler/source_resolver.rb +47 -0
  68. data/lib/lutaml/model/schema/rnc_compiler.rb +62 -0
  69. data/lib/lutaml/model/schema/rng_compiler/define_classifier.rb +91 -0
  70. data/lib/lutaml/model/schema/rng_compiler/element_visitor.rb +392 -0
  71. data/lib/lutaml/model/schema/rng_compiler/member_collector.rb +30 -0
  72. data/lib/lutaml/model/schema/rng_compiler/rng_helpers.rb +152 -0
  73. data/lib/lutaml/model/schema/rng_compiler/value_type_resolver.rb +125 -0
  74. data/lib/lutaml/model/schema/rng_compiler.rb +220 -0
  75. data/lib/lutaml/model/schema/templates.rb +162 -0
  76. data/lib/lutaml/model/schema/xml_compiler/element_order.rb +41 -0
  77. data/lib/lutaml/model/schema/xml_compiler/registry_generator.rb +31 -107
  78. data/lib/lutaml/model/schema/xml_compiler/spec_builder/complex_types.rb +191 -0
  79. data/lib/lutaml/model/schema/xml_compiler/spec_builder/members.rb +216 -0
  80. data/lib/lutaml/model/schema/xml_compiler/spec_builder/simple_types.rb +153 -0
  81. data/lib/lutaml/model/schema/xml_compiler/spec_builder.rb +167 -0
  82. data/lib/lutaml/model/schema/xml_compiler/supported_data_types.rb +87 -0
  83. data/lib/lutaml/model/schema/xml_compiler.rb +38 -517
  84. data/lib/lutaml/model/schema.rb +19 -0
  85. data/lib/lutaml/model/serialize/attribute_definition.rb +14 -2
  86. data/lib/lutaml/model/serialize/builder.rb +15 -2
  87. data/lib/lutaml/model/serialize/value_mapping.rb +9 -57
  88. data/lib/lutaml/model/serialize.rb +6 -9
  89. data/lib/lutaml/model/services/rule_value_extractor.rb +2 -3
  90. data/lib/lutaml/model/services.rb +0 -2
  91. data/lib/lutaml/model/store.rb +2 -1
  92. data/lib/lutaml/model/toml.rb +1 -1
  93. data/lib/lutaml/model/transform.rb +17 -39
  94. data/lib/lutaml/model/transformation_registry.rb +1 -1
  95. data/lib/lutaml/model/type.rb +1 -0
  96. data/lib/lutaml/model/union.rb +320 -0
  97. data/lib/lutaml/model/utils.rb +6 -0
  98. data/lib/lutaml/model/validation.rb +1 -4
  99. data/lib/lutaml/model/version.rb +1 -1
  100. data/lib/lutaml/model.rb +18 -0
  101. data/lib/lutaml/toml.rb +1 -1
  102. data/lib/lutaml/xml/adapter.rb +1 -1
  103. data/lib/lutaml/xml/adapter_loader.rb +1 -1
  104. data/lib/lutaml/xml/builder/base.rb +1 -1
  105. data/lib/lutaml/xml/builder.rb +1 -1
  106. data/lib/lutaml/xml/error/schema_validation_error.rb +25 -0
  107. data/lib/lutaml/xml/model_transform.rb +5 -1
  108. data/lib/lutaml/xml/schema/relaxng_schema.rb +5 -0
  109. data/lib/lutaml/xml/schema/xsd_schema.rb +4 -0
  110. data/lib/lutaml/xml/serialization/format_conversion.rb +48 -0
  111. data/lib/lutaml/xml/serialization/instance_methods.rb +13 -0
  112. data/lib/lutaml/xml/transformation/element_builder.rb +21 -8
  113. data/lib/lutaml/xml/transformation/ordered_applier.rb +6 -0
  114. data/lib/lutaml/xml/xsd_validator.rb +66 -0
  115. data/lib/lutaml/xml.rb +53 -12
  116. data/lutaml-model.gemspec +4 -2
  117. data/spec/fixtures/xml/schema/rnc/address_book.rnc +15 -0
  118. data/spec/fixtures/xml/schema/rnc/book_features.rnc +18 -0
  119. data/spec/fixtures/xml/schema/rnc/includes/book.rnc +6 -0
  120. data/spec/fixtures/xml/schema/rnc/includes/circular_a.rnc +8 -0
  121. data/spec/fixtures/xml/schema/rnc/includes/circular_b.rnc +8 -0
  122. data/spec/fixtures/xml/schema/rnc/includes/library.rnc +8 -0
  123. data/spec/fixtures/xml/schema/rng/address_book.rng +16 -0
  124. data/spec/fixtures/xml/schema/rng/book.rng +27 -0
  125. data/spec/fixtures/xml/schema/rng/fixed_value.rng +11 -0
  126. data/spec/fixtures/xml/schema/rng/fragment_in_choice.rng +30 -0
  127. data/spec/fixtures/xml/schema/rng/full_name.rng +39 -0
  128. data/spec/fixtures/xml/schema/rng/integer_range.rng +32 -0
  129. data/spec/fixtures/xml/schema/rng/list_type.rng +12 -0
  130. data/spec/fixtures/xml/schema/rng/namespaced.rng +9 -0
  131. data/spec/fixtures/xml/schema/rng/paragraph.rng +13 -0
  132. data/spec/fixtures/xml/schema/rng/person.rng +23 -0
  133. data/spec/fixtures/xml/schema/rng/union.rng +14 -0
  134. data/spec/fixtures/xml/validate_xml_with_address.xsd +13 -0
  135. data/spec/fixtures/xml/validate_xml_with_contact.xsd +11 -0
  136. data/spec/fixtures/xml/validate_xml_with_person.xsd +11 -0
  137. data/spec/fixtures/xml/validate_xml_with_person_strict.xsd +17 -0
  138. data/spec/fixtures/xml/validate_xml_with_product.xsd +37 -0
  139. data/spec/lutaml/model/attribute_apply_value_map_spec.rb +134 -0
  140. data/spec/lutaml/model/attribute_spec.rb +169 -12
  141. data/spec/lutaml/model/boot_manifest_spec.rb +30 -0
  142. data/spec/lutaml/model/collection_spec.rb +18 -0
  143. data/spec/lutaml/model/mixed_content_spec.rb +171 -0
  144. data/spec/lutaml/model/opal_smoke_spec.rb +67 -2
  145. data/spec/lutaml/model/ordered_content_spec.rb +30 -0
  146. data/spec/lutaml/model/raw_element_spec.rb +125 -0
  147. data/spec/lutaml/model/rule_value_extractor_spec.rb +7 -14
  148. data/spec/lutaml/model/runtime_compatibility_spec.rb +25 -0
  149. data/spec/lutaml/model/schema/renderers/model_spec.rb +149 -0
  150. data/spec/lutaml/model/schema/renderers/namespace_spec.rb +36 -0
  151. data/spec/lutaml/model/schema/renderers/restricted_type_spec.rb +75 -0
  152. data/spec/lutaml/model/schema/renderers/union_spec.rb +58 -0
  153. data/spec/lutaml/model/transform_apply_value_map_spec.rb +64 -0
  154. data/spec/lutaml/model/union_attribute_spec.rb +658 -0
  155. data/spec/lutaml/model/union_spec.rb +257 -0
  156. data/spec/lutaml/model/utils_spec.rb +14 -0
  157. data/spec/lutaml/xml/opal_xml_spec.rb +22 -20
  158. data/spec/lutaml/xml/schema/compiler_spec.rb +21 -4
  159. data/spec/lutaml/xml/schema/rnc_compiler_spec.rb +404 -0
  160. data/spec/lutaml/xml/schema/rng_compiler_spec.rb +893 -0
  161. data/spec/lutaml/xml/validate_xml_with_constructs_spec.rb +222 -0
  162. data/spec/lutaml/xml/validate_xml_with_spec.rb +186 -0
  163. data/spec/spec_helper.rb +28 -11
  164. data/spec/support/opal.rb +5 -2
  165. metadata +97 -31
  166. data/lib/lutaml/model/schema/xml_compiler/attribute.rb +0 -106
  167. data/lib/lutaml/model/schema/xml_compiler/attribute_group.rb +0 -47
  168. data/lib/lutaml/model/schema/xml_compiler/choice.rb +0 -67
  169. data/lib/lutaml/model/schema/xml_compiler/complex_content.rb +0 -27
  170. data/lib/lutaml/model/schema/xml_compiler/complex_content_restriction.rb +0 -34
  171. data/lib/lutaml/model/schema/xml_compiler/complex_type.rb +0 -173
  172. data/lib/lutaml/model/schema/xml_compiler/element.rb +0 -121
  173. data/lib/lutaml/model/schema/xml_compiler/group.rb +0 -113
  174. data/lib/lutaml/model/schema/xml_compiler/restriction.rb +0 -104
  175. data/lib/lutaml/model/schema/xml_compiler/sequence.rb +0 -52
  176. data/lib/lutaml/model/schema/xml_compiler/simple_content.rb +0 -40
  177. data/lib/lutaml/model/schema/xml_compiler/simple_type.rb +0 -265
  178. data/lib/lutaml/model/schema/xml_compiler/xml_namespace_class.rb +0 -110
  179. data/lib/lutaml/model/services/default_value_resolver.rb +0 -60
  180. data/spec/lutaml/model/services/default_value_resolver_spec.rb +0 -162
  181. data/spec/lutaml/xml/schema/compiler/attribute_group_spec.rb +0 -71
  182. data/spec/lutaml/xml/schema/compiler/attribute_spec.rb +0 -67
  183. data/spec/lutaml/xml/schema/compiler/choice_spec.rb +0 -74
  184. data/spec/lutaml/xml/schema/compiler/complex_content_restriction_spec.rb +0 -60
  185. data/spec/lutaml/xml/schema/compiler/complex_content_spec.rb +0 -41
  186. data/spec/lutaml/xml/schema/compiler/complex_type_spec.rb +0 -202
  187. data/spec/lutaml/xml/schema/compiler/element_spec.rb +0 -68
  188. data/spec/lutaml/xml/schema/compiler/group_spec.rb +0 -90
  189. data/spec/lutaml/xml/schema/compiler/restriction_spec.rb +0 -77
  190. data/spec/lutaml/xml/schema/compiler/sequence_spec.rb +0 -65
  191. data/spec/lutaml/xml/schema/compiler/simple_content_spec.rb +0 -61
  192. data/spec/lutaml/xml/schema/compiler/simple_type_spec.rb +0 -184
@@ -0,0 +1,123 @@
1
+ # frozen_string: true
2
+
3
+ # One-shot generator for lib/compat/opal/lutaml_model_boot.rb.
4
+ #
5
+ # Walks lib/lutaml/**/*.rb and extracts every `autoload :Name, "path"`
6
+ # declaration (single-line or multi-line), resolving the standard
7
+ # `"#{__dir__}/..."` and `"#{File.dirname(__FILE__)}/..."` interpolation
8
+ # patterns relative to the declaring file's directory.
9
+ #
10
+ # Opal treats autoload as a no-op, so every autoload target must appear
11
+ # here as an explicit `require` for nested constants to resolve at runtime.
12
+ #
13
+ # Run after adding/removing any autoload in lib/lutaml/:
14
+ # ruby lib/compat/opal/generate_boot.rb
15
+
16
+ require "pathname"
17
+
18
+ REPO_ROOT = Pathname.new(File.expand_path("../../..", __dir__))
19
+ LIB = REPO_ROOT.join("lib")
20
+
21
+ # Patterns excluded under Opal because they pull in native-only deps
22
+ # (Nokogiri/Ox C extensions, Thor CLI, etc.). REXML is pure Ruby and
23
+ # ships in the bundled gem + moxml's lib/compat/opal/rexml/* shadows,
24
+ # so it is NOT excluded — it is a fully working second Opal adapter.
25
+ NATIVE_ONLY_PATTERNS = [
26
+ %r{(nokogiri|ox)_adapter\z},
27
+ %r{/schema/(relaxng|xsd)\b},
28
+ %r{/schema_builder/(nokogiri|oga)\b},
29
+ %r{/schema/builder/(nokogiri|oga)\b},
30
+ %r{\Alutaml/model/cli\z},
31
+ ].freeze
32
+
33
+ # Match `autoload :Name, "...anything..."` where the string argument may
34
+ # span multiple physical lines (whitespace after the comma).
35
+ DECL_RE = /autoload\s+:[A-Za-z0-9_]+\s*,\s*"([^"]+)"/
36
+
37
+ # Stitches multi-line autoload declarations into a single logical line so
38
+ # DECL_RE can match. We only merge when the line ends right after the
39
+ # comma that follows `autoload :Name`.
40
+ def join_multiline_autoloads(src)
41
+ src.gsub(/(autoload\s+:[A-Za-z0-9_]+\s*,)\s*\n\s*/) { "#{Regexp.last_match(1)} " }
42
+ end
43
+
44
+ # Resolve an autoload's raw string argument to a require path relative to
45
+ # LIB. Both common interpolation shapes resolve relative to the declaring
46
+ # file's directory, which is what MRI does for them.
47
+ def resolve_path(raw, declaring_file)
48
+ declaring_dir = Pathname.new(declaring_file).dirname
49
+
50
+ if raw.start_with?("\#{__dir__}/")
51
+ subdir = raw.sub("\#{__dir__}/", "").delete_suffix(".rb")
52
+ (declaring_dir + subdir).relative_path_from(LIB).to_s.delete_suffix(".rb")
53
+ elsif raw.start_with?("\#{File.dirname(__FILE__)}/")
54
+ subdir = raw.sub("\#{File.dirname(__FILE__)}/", "").delete_suffix(".rb")
55
+ (declaring_dir + subdir).relative_path_from(LIB).to_s.delete_suffix(".rb")
56
+ elsif raw.start_with?("lutaml/")
57
+ raw.delete_suffix(".rb")
58
+ else
59
+ raw.delete_suffix(".rb")
60
+ end
61
+ end
62
+
63
+ paths = []
64
+ Dir.glob("#{LIB}/lutaml/**/*.rb").each do |file|
65
+ src = File.read(file)
66
+ # Strip full-line and trailing comments so commented-out autoload
67
+ # examples (e.g. in type_registry.rb) don't end up in the boot file.
68
+ src = src.lines.reject { |line| line.lstrip.start_with?("#") }.join
69
+ join_multiline_autoloads(src).scan(DECL_RE).each do |(raw)|
70
+ paths << resolve_path(raw, file)
71
+ end
72
+ end
73
+
74
+ paths = paths.uniq.sort
75
+ native_only = paths.select { |p| NATIVE_ONLY_PATTERNS.any? { |re| p =~ re } }
76
+ opal_paths = paths - native_only
77
+
78
+ # Order matters: namespace-defining entry files must load before any of
79
+ # their nested files. lutaml/model.rb declares the Lutaml::Model module
80
+ # (referenced by every other file); lutaml/xml.rb declares Lutaml::Xml.
81
+ # After the entry files, load by depth-then-name so a parent file (e.g.
82
+ # lutaml/hash_format.rb) is required before its children (e.g.
83
+ # lutaml/hash_format/adapter/document.rb).
84
+ #
85
+ # ENTRY_FILES are added unconditionally: they are top-level entry points
86
+ # that nothing else autoloads (because they ARE the entry points users
87
+ # require directly), so they would otherwise be missing from the list.
88
+ ENTRY_FILES = %w[lutaml/model lutaml/xml].freeze
89
+ remaining = (opal_paths - ENTRY_FILES).sort_by { |p| [p.count("/"), p] }
90
+ ordered = ENTRY_FILES + remaining
91
+
92
+ out = []
93
+ out << "# frozen_string_literal: true"
94
+ out << ""
95
+ out << "# DO NOT EDIT — regenerate with:"
96
+ out << "# ruby lib/compat/opal/generate_boot.rb"
97
+ out << "#"
98
+ out << "# Opal does not support Ruby autoload (it is a no-op at parse time)."
99
+ out << "# This file explicitly requires every autoload target in lib/lutaml/**"
100
+ out << "# so that nested constants resolve at runtime under Opal."
101
+ out << "#"
102
+ out << "# Native-only paths excluded under Opal:"
103
+ out << "# - nokogiri/ox/rexml adapters (C extensions unavailable)"
104
+ out << "# - XSD / RELAX NG schema generators (require Nokogiri)"
105
+ out << "# - lutaml/model/cli (thor-based, runtime-irrelevant under Opal)"
106
+ out << "#"
107
+ out << "# Ordering: lutaml/model and lutaml/xml define the Lutaml::Model and"
108
+ out << "# Lutaml::Xml namespaces, so they load first. Remaining paths are"
109
+ out << "# ordered by depth (shallower first) so parent files declare their"
110
+ out << "# child namespaces before children load."
111
+ out << "#"
112
+ out << "# Loaded by the Opal Rakefile before spec_helper."
113
+ out << ""
114
+ ordered.each { |p| out << %(require "#{p}") }
115
+ out << ""
116
+
117
+ # OPAL_BOOT_OUTPUT lets the in-sync guard spec regenerate to a temp path
118
+ # without clobbering the committed manifest; unset, it writes canonically.
119
+ target = ENV.fetch("OPAL_BOOT_OUTPUT") do
120
+ File.expand_path("lutaml_model_boot.rb", __dir__)
121
+ end
122
+ File.write(target, out.join("\n"))
123
+ warn "Generated #{ordered.size} requires (excluded #{native_only.size} native-only paths) -> #{target}"
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ # JS bundle entry point. Pulls in the Opal-only compat shims and boot
4
+ # files BEFORE lutaml/model so that moxml's adapter constants, the
5
+ # String/Encoding/YAML/Array#pack patches, and the eager-loaded
6
+ # Moxml::* / Lutaml::* constants are all in place by the time
7
+ # lib/lutaml/model.rb runs.
8
+ #
9
+ # Used by scripts/build.rb as the bundle ENTRY (instead of
10
+ # "lutaml/model" directly) so the JS bundle mirrors the load order
11
+ # that lutaml-model's Rakefile applies for `rake spec:opal`.
12
+
13
+ if RUBY_ENGINE == "opal"
14
+ # 0. runtime_compatibility first: it stubs Mutex/ConditionVariable/
15
+ # Thread/WeakRef and patches Module#prepend for Opal. Oga's LRU
16
+ # and other gems reference Mutex at file-load time, so this must
17
+ # run before any gem that touches thread-safety primitives.
18
+ require "lutaml/model/runtime_compatibility"
19
+
20
+ # 0a. Opal's stdlib StringIO < IO loads here so moxml's
21
+ # `class StringIO` (bare, no parent) in rexml_compat.rb re-opens
22
+ # the existing class instead of conflicting with `< ::IO`.
23
+ # Without this, the bare-class definition runs first and Opal's
24
+ # `< IO` definition later raises "superclass mismatch".
25
+ require "stringio"
26
+
27
+ # 1. stdlib shims: String/Encoding/StringIO + Array#pack + nodejs/yaml
28
+ require "rexml_compat"
29
+ require "yaml_compat"
30
+
31
+ # 2. forks' Opal-aware conditionals select the pure-Ruby lexer
32
+ require "oga"
33
+ require "ll/setup"
34
+
35
+ # 3. eager-load boots (Opal ignores autoload)
36
+ require "moxml_boot"
37
+ require "lutaml_model_boot"
38
+ end
39
+
40
+ # 4. the actual entry point
41
+ require "lutaml/model"
42
+ require "lutaml/xml"
@@ -0,0 +1,497 @@
1
+ # frozen_string_literal: true
2
+
3
+ # DO NOT EDIT — regenerate with:
4
+ # ruby lib/compat/opal/generate_boot.rb
5
+ #
6
+ # Opal does not support Ruby autoload (it is a no-op at parse time).
7
+ # This file explicitly requires every autoload target in lib/lutaml/**
8
+ # so that nested constants resolve at runtime under Opal.
9
+ #
10
+ # Native-only paths excluded under Opal:
11
+ # - nokogiri/ox/rexml adapters (C extensions unavailable)
12
+ # - XSD / RELAX NG schema generators (require Nokogiri)
13
+ # - lutaml/model/cli (thor-based, runtime-irrelevant under Opal)
14
+ #
15
+ # Ordering: lutaml/model and lutaml/xml define the Lutaml::Model and
16
+ # Lutaml::Xml namespaces, so they load first. Remaining paths are
17
+ # ordered by depth (shallower first) so parent files declare their
18
+ # child namespaces before children load.
19
+ #
20
+ # Loaded by the Opal Rakefile before spec_helper.
21
+
22
+ require "lutaml/model"
23
+ require "lutaml/xml"
24
+ require "lutaml/hash_format"
25
+ require "lutaml/json"
26
+ require "lutaml/jsonl"
27
+ require "lutaml/jsonld"
28
+ require "lutaml/key_value"
29
+ require "lutaml/toml"
30
+ require "lutaml/turtle"
31
+ require "lutaml/yaml"
32
+ require "lutaml/yamlld"
33
+ require "lutaml/yamls"
34
+ require "lutaml/hash_format/adapter"
35
+ require "lutaml/jsonl/adapter"
36
+ require "lutaml/jsonld/adapter"
37
+ require "lutaml/key_value/adapter"
38
+ require "lutaml/key_value/data_model"
39
+ require "lutaml/key_value/document"
40
+ require "lutaml/key_value/mapping"
41
+ require "lutaml/key_value/mapping_rule"
42
+ require "lutaml/key_value/transform"
43
+ require "lutaml/key_value/transformation"
44
+ require "lutaml/key_value/transformation_builder"
45
+ require "lutaml/model/adapter_resolver"
46
+ require "lutaml/model/adapter_scope"
47
+ require "lutaml/model/attribute"
48
+ require "lutaml/model/attribute_validator"
49
+ require "lutaml/model/cached_type_resolver"
50
+ require "lutaml/model/choice"
51
+ require "lutaml/model/collection"
52
+ require "lutaml/model/collection_handler"
53
+ require "lutaml/model/comparable_model"
54
+ require "lutaml/model/comparable_nil"
55
+ require "lutaml/model/compiled_rule"
56
+ require "lutaml/model/config"
57
+ require "lutaml/model/configuration"
58
+ require "lutaml/model/consolidation_map"
59
+ require "lutaml/model/consolidation_rule"
60
+ require "lutaml/model/constants"
61
+ require "lutaml/model/context_registry"
62
+ require "lutaml/model/deep_dupable"
63
+ require "lutaml/model/error"
64
+ require "lutaml/model/errors"
65
+ require "lutaml/model/finalization_cache"
66
+ require "lutaml/model/format_registry"
67
+ require "lutaml/model/global_context"
68
+ require "lutaml/model/global_register"
69
+ require "lutaml/model/hash"
70
+ require "lutaml/model/import_registry"
71
+ require "lutaml/model/instrumentation"
72
+ require "lutaml/model/json"
73
+ require "lutaml/model/json_adapter"
74
+ require "lutaml/model/jsonl"
75
+ require "lutaml/model/liquefiable"
76
+ require "lutaml/model/liquid"
77
+ require "lutaml/model/mapping_hash"
78
+ require "lutaml/model/model_transformer"
79
+ require "lutaml/model/one_entry_cache"
80
+ require "lutaml/model/organization"
81
+ require "lutaml/model/register"
82
+ require "lutaml/model/registrable"
83
+ require "lutaml/model/render_policy"
84
+ require "lutaml/model/runtime_compatibility"
85
+ require "lutaml/model/schema"
86
+ require "lutaml/model/schema_location"
87
+ require "lutaml/model/sequence"
88
+ require "lutaml/model/serializable"
89
+ require "lutaml/model/serialize"
90
+ require "lutaml/model/services"
91
+ require "lutaml/model/store"
92
+ require "lutaml/model/toml"
93
+ require "lutaml/model/transform"
94
+ require "lutaml/model/transformation"
95
+ require "lutaml/model/transformation_builder"
96
+ require "lutaml/model/transformation_registry"
97
+ require "lutaml/model/type"
98
+ require "lutaml/model/type_context"
99
+ require "lutaml/model/type_registry"
100
+ require "lutaml/model/type_resolver"
101
+ require "lutaml/model/type_substitution"
102
+ require "lutaml/model/uninitialized_class"
103
+ require "lutaml/model/union"
104
+ require "lutaml/model/utils"
105
+ require "lutaml/model/validation"
106
+ require "lutaml/model/value_transformer"
107
+ require "lutaml/model/version"
108
+ require "lutaml/model/yaml"
109
+ require "lutaml/model/yamls"
110
+ require "lutaml/rdf/context"
111
+ require "lutaml/rdf/error"
112
+ require "lutaml/rdf/iri"
113
+ require "lutaml/rdf/language_tagged"
114
+ require "lutaml/rdf/linked_data_transform"
115
+ require "lutaml/rdf/literal"
116
+ require "lutaml/rdf/mapping"
117
+ require "lutaml/rdf/mapping_rule"
118
+ require "lutaml/rdf/member_rule"
119
+ require "lutaml/rdf/namespace"
120
+ require "lutaml/rdf/namespace_set"
121
+ require "lutaml/rdf/namespaces"
122
+ require "lutaml/rdf/term_definition"
123
+ require "lutaml/rdf/transform"
124
+ require "lutaml/turtle/adapter"
125
+ require "lutaml/turtle/mapping"
126
+ require "lutaml/turtle/transform"
127
+ require "lutaml/xml/adapter"
128
+ require "lutaml/xml/adapter_element"
129
+ require "lutaml/xml/adapter_loader"
130
+ require "lutaml/xml/attribute_namespace_resolver"
131
+ require "lutaml/xml/blank_namespace"
132
+ require "lutaml/xml/blank_namespace_handler"
133
+ require "lutaml/xml/builder"
134
+ require "lutaml/xml/configurable"
135
+ require "lutaml/xml/data_model"
136
+ require "lutaml/xml/decisions"
137
+ require "lutaml/xml/declaration_handler"
138
+ require "lutaml/xml/declaration_plan"
139
+ require "lutaml/xml/declaration_plan_query"
140
+ require "lutaml/xml/declaration_planner"
141
+ require "lutaml/xml/doctype_extractor"
142
+ require "lutaml/xml/document"
143
+ require "lutaml/xml/element"
144
+ require "lutaml/xml/element_prefix_resolver"
145
+ require "lutaml/xml/encoding_normalizer"
146
+ require "lutaml/xml/format_chooser"
147
+ require "lutaml/xml/hoisting_algorithm"
148
+ require "lutaml/xml/listener"
149
+ require "lutaml/xml/mapping"
150
+ require "lutaml/xml/mapping_rule"
151
+ require "lutaml/xml/model_transform"
152
+ require "lutaml/xml/namespace"
153
+ require "lutaml/xml/namespace_class_registry"
154
+ require "lutaml/xml/namespace_collector"
155
+ require "lutaml/xml/namespace_declaration"
156
+ require "lutaml/xml/namespace_declaration_builder"
157
+ require "lutaml/xml/namespace_declaration_data"
158
+ require "lutaml/xml/namespace_inheritance_resolver"
159
+ require "lutaml/xml/namespace_inheritance_strategy"
160
+ require "lutaml/xml/namespace_needs"
161
+ require "lutaml/xml/namespace_resolution_strategy"
162
+ require "lutaml/xml/namespace_resolver"
163
+ require "lutaml/xml/namespace_scope_config"
164
+ require "lutaml/xml/namespace_type_resolver"
165
+ require "lutaml/xml/namespace_usage"
166
+ require "lutaml/xml/oga"
167
+ require "lutaml/xml/parsed_namespace_declaration"
168
+ require "lutaml/xml/parsed_namespace_set"
169
+ require "lutaml/xml/polymorphic_value_handler"
170
+ require "lutaml/xml/qualified_inheritance_strategy"
171
+ require "lutaml/xml/rexml"
172
+ require "lutaml/xml/schema"
173
+ require "lutaml/xml/schema_location"
174
+ require "lutaml/xml/serialization"
175
+ require "lutaml/xml/shared_dsl"
176
+ require "lutaml/xml/transform"
177
+ require "lutaml/xml/transformation"
178
+ require "lutaml/xml/transformation_builder"
179
+ require "lutaml/xml/transformation_support"
180
+ require "lutaml/xml/type_namespace"
181
+ require "lutaml/xml/type_namespace_resolver"
182
+ require "lutaml/xml/unqualified_inheritance_strategy"
183
+ require "lutaml/xml/w3c"
184
+ require "lutaml/xml/xml_attribute"
185
+ require "lutaml/xml/xml_element"
186
+ require "lutaml/xml/xsd_validator"
187
+ require "lutaml/yaml/adapter"
188
+ require "lutaml/yaml/schema"
189
+ require "lutaml/yamlld/adapter"
190
+ require "lutaml/yamls/adapter"
191
+ require "lutaml/hash_format/adapter/document"
192
+ require "lutaml/hash_format/adapter/mapping"
193
+ require "lutaml/hash_format/adapter/mapping_rule"
194
+ require "lutaml/hash_format/adapter/standard_adapter"
195
+ require "lutaml/hash_format/adapter/transform"
196
+ require "lutaml/json/adapter/document"
197
+ require "lutaml/json/adapter/mapping"
198
+ require "lutaml/json/adapter/mapping_rule"
199
+ require "lutaml/json/adapter/standard_adapter"
200
+ require "lutaml/json/adapter/transform"
201
+ require "lutaml/json/schema/json_schema"
202
+ require "lutaml/jsonl/adapter/document"
203
+ require "lutaml/jsonl/adapter/mapping"
204
+ require "lutaml/jsonl/adapter/mapping_rule"
205
+ require "lutaml/jsonl/adapter/standard_adapter"
206
+ require "lutaml/jsonl/adapter/transform"
207
+ require "lutaml/key_value/adapter/hash"
208
+ require "lutaml/key_value/adapter/json"
209
+ require "lutaml/key_value/adapter/jsonl"
210
+ require "lutaml/key_value/adapter/toml"
211
+ require "lutaml/key_value/adapter/yaml"
212
+ require "lutaml/key_value/adapter/yamls"
213
+ require "lutaml/key_value/data_model/element"
214
+ require "lutaml/key_value/transformation/collection_serializer"
215
+ require "lutaml/key_value/transformation/rule_compiler"
216
+ require "lutaml/key_value/transformation/value_serializer"
217
+ require "lutaml/model/cached_type_resolver/mutex_hash_cache"
218
+ require "lutaml/model/consolidation/engine"
219
+ require "lutaml/model/consolidation_rule/dispatch_block"
220
+ require "lutaml/model/consolidation_rule/gather_rule"
221
+ require "lutaml/model/consolidation_rule/pattern_content_rule"
222
+ require "lutaml/model/consolidation_rule/pattern_element_rule"
223
+ require "lutaml/model/error/choice_lower_bound_error"
224
+ require "lutaml/model/error/choice_upper_bound_error"
225
+ require "lutaml/model/error/collection_count_out_of_range_error"
226
+ require "lutaml/model/error/collection_true_missing_error"
227
+ require "lutaml/model/error/element_count_out_of_range_error"
228
+ require "lutaml/model/error/format_adapter_not_specified_error"
229
+ require "lutaml/model/error/import_model_with_root_error"
230
+ require "lutaml/model/error/incorrect_mapping_argument_error"
231
+ require "lutaml/model/error/incorrect_sequence_error"
232
+ require "lutaml/model/error/invalid_attribute_name_error"
233
+ require "lutaml/model/error/invalid_attribute_options_error"
234
+ require "lutaml/model/error/invalid_attribute_type_error"
235
+ require "lutaml/model/error/invalid_choice_range_error"
236
+ require "lutaml/model/error/invalid_format_error"
237
+ require "lutaml/model/error/invalid_value_error"
238
+ require "lutaml/model/error/liquid_class_not_found_error"
239
+ require "lutaml/model/error/liquid_drop_already_registered_error"
240
+ require "lutaml/model/error/liquid_not_enabled_error"
241
+ require "lutaml/model/error/mapping_already_exists_error"
242
+ require "lutaml/model/error/mapping_attribute_missing_error"
243
+ require "lutaml/model/error/mapping_attribute_type_error"
244
+ require "lutaml/model/error/mixed_content_collection_error"
245
+ require "lutaml/model/error/multiple_mappings_error"
246
+ require "lutaml/model/error/no_attributes_defined_liquid_error"
247
+ require "lutaml/model/error/no_mapping_found_error"
248
+ require "lutaml/model/error/no_root_mapping_error"
249
+ require "lutaml/model/error/no_root_namespace_error"
250
+ require "lutaml/model/error/ordered_content_mapping_error"
251
+ require "lutaml/model/error/pattern_not_matched_error"
252
+ require "lutaml/model/error/polymorphic_error"
253
+ require "lutaml/model/error/required_attribute_missing_error"
254
+ require "lutaml/model/error/reverse_transform_block_not_defined_error"
255
+ require "lutaml/model/error/reverse_transformation_declaration_error"
256
+ require "lutaml/model/error/sorting_configuration_conflict_error"
257
+ require "lutaml/model/error/transform_block_not_defined_error"
258
+ require "lutaml/model/error/type_error"
259
+ require "lutaml/model/error/type_not_enabled_error"
260
+ require "lutaml/model/error/type_only_mapping_error"
261
+ require "lutaml/model/error/type_only_namespace_error"
262
+ require "lutaml/model/error/undefined_attribute_error"
263
+ require "lutaml/model/error/union_schema_unsupported_error"
264
+ require "lutaml/model/error/unknown_adapter_type_error"
265
+ require "lutaml/model/error/unknown_sequence_mapping_error"
266
+ require "lutaml/model/error/unknown_type_error"
267
+ require "lutaml/model/error/unresolvable_type_error"
268
+ require "lutaml/model/error/validation_error"
269
+ require "lutaml/model/error/validation_failed_error"
270
+ require "lutaml/model/liquid/indexed_access"
271
+ require "lutaml/model/liquid/mapping"
272
+ require "lutaml/model/mapping/listener"
273
+ require "lutaml/model/mapping/mapping"
274
+ require "lutaml/model/mapping/mapping_rule"
275
+ require "lutaml/model/mapping/model_mapping"
276
+ require "lutaml/model/mapping/model_mapping_rule"
277
+ require "lutaml/model/register/model_tree_importer"
278
+ require "lutaml/model/register/namespace_binding"
279
+ require "lutaml/model/schema/base_schema"
280
+ require "lutaml/model/schema/class_loader"
281
+ require "lutaml/model/schema/compiled_output"
282
+ require "lutaml/model/schema/decorators"
283
+ require "lutaml/model/schema/definitions"
284
+ require "lutaml/model/schema/file_writer"
285
+ require "lutaml/model/schema/generator"
286
+ require "lutaml/model/schema/helpers"
287
+ require "lutaml/model/schema/json_schema"
288
+ require "lutaml/model/schema/module_nesting"
289
+ require "lutaml/model/schema/namespace_naming"
290
+ require "lutaml/model/schema/registry_generator"
291
+ require "lutaml/model/schema/renderer"
292
+ require "lutaml/model/schema/renderers"
293
+ require "lutaml/model/schema/shared_methods"
294
+ require "lutaml/model/schema/templates"
295
+ require "lutaml/model/schema/yaml_schema"
296
+ require "lutaml/model/serialize/attribute_definition"
297
+ require "lutaml/model/serialize/builder"
298
+ require "lutaml/model/serialize/deserialization_context"
299
+ require "lutaml/model/serialize/enum_handling"
300
+ require "lutaml/model/serialize/format_conversion"
301
+ require "lutaml/model/serialize/initialization"
302
+ require "lutaml/model/serialize/model_import"
303
+ require "lutaml/model/serialize/transformation_builder"
304
+ require "lutaml/model/serialize/value_mapping"
305
+ require "lutaml/model/services/base"
306
+ require "lutaml/model/services/logger"
307
+ require "lutaml/model/services/rule_value_extractor"
308
+ require "lutaml/model/services/transformer"
309
+ require "lutaml/model/services/type"
310
+ require "lutaml/model/services/validator"
311
+ require "lutaml/model/type/base64_binary"
312
+ require "lutaml/model/type/boolean"
313
+ require "lutaml/model/type/date"
314
+ require "lutaml/model/type/date_time"
315
+ require "lutaml/model/type/decimal"
316
+ require "lutaml/model/type/duration"
317
+ require "lutaml/model/type/float"
318
+ require "lutaml/model/type/hash"
319
+ require "lutaml/model/type/hex_binary"
320
+ require "lutaml/model/type/integer"
321
+ require "lutaml/model/type/qname"
322
+ require "lutaml/model/type/reference"
323
+ require "lutaml/model/type/string"
324
+ require "lutaml/model/type/symbol"
325
+ require "lutaml/model/type/time"
326
+ require "lutaml/model/type/time_without_date"
327
+ require "lutaml/model/type/uninitialized_class_guard"
328
+ require "lutaml/model/type/uri"
329
+ require "lutaml/model/type/value"
330
+ require "lutaml/rdf/namespaces/dcterms_namespace"
331
+ require "lutaml/rdf/namespaces/owl_namespace"
332
+ require "lutaml/rdf/namespaces/rdf_namespace"
333
+ require "lutaml/rdf/namespaces/rdfs_namespace"
334
+ require "lutaml/rdf/namespaces/skos_namespace"
335
+ require "lutaml/rdf/namespaces/xsd_namespace"
336
+ require "lutaml/toml/adapter/document"
337
+ require "lutaml/toml/adapter/mapping"
338
+ require "lutaml/toml/adapter/mapping_rule"
339
+ require "lutaml/toml/adapter/transform"
340
+ require "lutaml/xml/adapter/adapter_helpers"
341
+ require "lutaml/xml/adapter/base_adapter"
342
+ require "lutaml/xml/adapter/namespace_data"
343
+ require "lutaml/xml/adapter/namespace_uri_collector"
344
+ require "lutaml/xml/adapter/oga_adapter"
345
+ require "lutaml/xml/adapter/plan_based_builder"
346
+ require "lutaml/xml/adapter/rexml_adapter"
347
+ require "lutaml/xml/adapter/xml_parser"
348
+ require "lutaml/xml/adapter/xml_serializer"
349
+ require "lutaml/xml/builder/base"
350
+ require "lutaml/xml/builder/oga"
351
+ require "lutaml/xml/builder/rexml"
352
+ require "lutaml/xml/decisions/decision"
353
+ require "lutaml/xml/decisions/decision_context"
354
+ require "lutaml/xml/decisions/decision_engine"
355
+ require "lutaml/xml/decisions/decision_rule"
356
+ require "lutaml/xml/decisions/element_prefix_resolver"
357
+ require "lutaml/xml/decisions/rules"
358
+ require "lutaml/xml/declaration_plan/attribute_node"
359
+ require "lutaml/xml/declaration_plan/element_node"
360
+ require "lutaml/xml/error/invalid_namespace_error"
361
+ require "lutaml/xml/error/invalid_xsd_type_error"
362
+ require "lutaml/xml/error/namespace_mismatch_error"
363
+ require "lutaml/xml/error/schema_validation_error"
364
+ require "lutaml/xml/error/xml_configuration_error"
365
+ require "lutaml/xml/error/xml_error"
366
+ require "lutaml/xml/oga/element"
367
+ require "lutaml/xml/ox/element"
368
+ require "lutaml/xml/rexml/element"
369
+ require "lutaml/xml/serialization/format_conversion"
370
+ require "lutaml/xml/serialization/instance_methods"
371
+ require "lutaml/xml/serialization/model_import_ext"
372
+ require "lutaml/xml/transformation/custom_method_wrapper"
373
+ require "lutaml/xml/transformation/element_builder"
374
+ require "lutaml/xml/transformation/ordered_applier"
375
+ require "lutaml/xml/transformation/rule_applier"
376
+ require "lutaml/xml/transformation/rule_compiler"
377
+ require "lutaml/xml/transformation/skip_logic"
378
+ require "lutaml/xml/transformation/value_serializer"
379
+ require "lutaml/xml/type/configurable"
380
+ require "lutaml/xml/type/value_xml_mapping"
381
+ require "lutaml/xml/type_namespace/collector"
382
+ require "lutaml/xml/type_namespace/declaration"
383
+ require "lutaml/xml/type_namespace/planner"
384
+ require "lutaml/xml/type_namespace/reference"
385
+ require "lutaml/xml/type_namespace/resolver"
386
+ require "lutaml/yaml/adapter/document"
387
+ require "lutaml/yaml/adapter/mapping"
388
+ require "lutaml/yaml/adapter/mapping_rule"
389
+ require "lutaml/yaml/adapter/standard_adapter"
390
+ require "lutaml/yaml/adapter/transform"
391
+ require "lutaml/yaml/schema/yaml_schema"
392
+ require "lutaml/yamls/adapter/document"
393
+ require "lutaml/yamls/adapter/mapping"
394
+ require "lutaml/yamls/adapter/mapping_rule"
395
+ require "lutaml/yamls/adapter/standard_adapter"
396
+ require "lutaml/yamls/adapter/transform"
397
+ require "lutaml/yamls/adapter/yamls_sequence"
398
+ require "lutaml/yamls/adapter/yamls_sequence_rule"
399
+ require "lutaml/key_value/adapter/hash/document"
400
+ require "lutaml/key_value/adapter/hash/mapping"
401
+ require "lutaml/key_value/adapter/hash/mapping_rule"
402
+ require "lutaml/key_value/adapter/hash/standard_adapter"
403
+ require "lutaml/key_value/adapter/hash/transform"
404
+ require "lutaml/key_value/adapter/json/document"
405
+ require "lutaml/key_value/adapter/json/mapping"
406
+ require "lutaml/key_value/adapter/json/mapping_rule"
407
+ require "lutaml/key_value/adapter/json/standard_adapter"
408
+ require "lutaml/key_value/adapter/json/transform"
409
+ require "lutaml/key_value/adapter/jsonl/document"
410
+ require "lutaml/key_value/adapter/jsonl/mapping"
411
+ require "lutaml/key_value/adapter/jsonl/mapping_rule"
412
+ require "lutaml/key_value/adapter/jsonl/standard_adapter"
413
+ require "lutaml/key_value/adapter/jsonl/transform"
414
+ require "lutaml/key_value/adapter/toml/document"
415
+ require "lutaml/key_value/adapter/toml/mapping"
416
+ require "lutaml/key_value/adapter/toml/mapping_rule"
417
+ require "lutaml/key_value/adapter/toml/transform"
418
+ require "lutaml/key_value/adapter/yaml/document"
419
+ require "lutaml/key_value/adapter/yaml/mapping"
420
+ require "lutaml/key_value/adapter/yaml/mapping_rule"
421
+ require "lutaml/key_value/adapter/yaml/standard_adapter"
422
+ require "lutaml/key_value/adapter/yaml/transform"
423
+ require "lutaml/key_value/adapter/yamls/document"
424
+ require "lutaml/key_value/adapter/yamls/mapping"
425
+ require "lutaml/key_value/adapter/yamls/mapping_rule"
426
+ require "lutaml/key_value/adapter/yamls/standard_adapter"
427
+ require "lutaml/key_value/adapter/yamls/transform"
428
+ require "lutaml/model/error/register/not_registrable_class_error"
429
+ require "lutaml/model/error/type/invalid_value_error"
430
+ require "lutaml/model/error/type/max_bound_error"
431
+ require "lutaml/model/error/type/max_length_error"
432
+ require "lutaml/model/error/type/min_bound_error"
433
+ require "lutaml/model/error/type/min_length_error"
434
+ require "lutaml/model/error/type/pattern_not_matched_error"
435
+ require "lutaml/model/schema/decorators/attribute"
436
+ require "lutaml/model/schema/decorators/choices"
437
+ require "lutaml/model/schema/decorators/class_definition"
438
+ require "lutaml/model/schema/decorators/definition_collection"
439
+ require "lutaml/model/schema/definitions/attribute"
440
+ require "lutaml/model/schema/definitions/choice"
441
+ require "lutaml/model/schema/definitions/facet"
442
+ require "lutaml/model/schema/definitions/group_import"
443
+ require "lutaml/model/schema/definitions/member_walk"
444
+ require "lutaml/model/schema/definitions/model"
445
+ require "lutaml/model/schema/definitions/namespace"
446
+ require "lutaml/model/schema/definitions/restricted_type"
447
+ require "lutaml/model/schema/definitions/sequence"
448
+ require "lutaml/model/schema/definitions/simple_content"
449
+ require "lutaml/model/schema/definitions/transform_facet"
450
+ require "lutaml/model/schema/definitions/type_ref"
451
+ require "lutaml/model/schema/definitions/union_type"
452
+ require "lutaml/model/schema/definitions/xml_root"
453
+ require "lutaml/model/schema/generator/definition"
454
+ require "lutaml/model/schema/generator/definitions_collection"
455
+ require "lutaml/model/schema/generator/properties_collection"
456
+ require "lutaml/model/schema/generator/property"
457
+ require "lutaml/model/schema/generator/ref"
458
+ require "lutaml/model/schema/helpers/template_helper"
459
+ require "lutaml/model/schema/renderers/base"
460
+ require "lutaml/model/schema/renderers/mappings"
461
+ require "lutaml/model/schema/renderers/member_decls"
462
+ require "lutaml/model/schema/renderers/model"
463
+ require "lutaml/model/schema/renderers/namespace"
464
+ require "lutaml/model/schema/renderers/registration"
465
+ require "lutaml/model/schema/renderers/required_files_calculator"
466
+ require "lutaml/model/schema/renderers/restricted_type"
467
+ require "lutaml/model/schema/renderers/union"
468
+ require "lutaml/model/schema/rnc_compiler/source_resolver"
469
+ require "lutaml/model/schema/rng_compiler/define_classifier"
470
+ require "lutaml/model/schema/rng_compiler/element_visitor"
471
+ require "lutaml/model/schema/rng_compiler/member_collector"
472
+ require "lutaml/model/schema/rng_compiler/rng_helpers"
473
+ require "lutaml/model/schema/rng_compiler/value_type_resolver"
474
+ require "lutaml/model/schema/xml_compiler/element_order"
475
+ require "lutaml/model/schema/xml_compiler/registry_generator"
476
+ require "lutaml/model/schema/xml_compiler/spec_builder"
477
+ require "lutaml/model/schema/xml_compiler/supported_data_types"
478
+ require "lutaml/model/services/type/validator"
479
+ require "lutaml/xml/decisions/rules/attribute_usage_rule"
480
+ require "lutaml/xml/decisions/rules/default_preference_rule"
481
+ require "lutaml/xml/decisions/rules/element_form_default_rule"
482
+ require "lutaml/xml/decisions/rules/element_form_default_unqualified_rule"
483
+ require "lutaml/xml/decisions/rules/element_form_option_rule"
484
+ require "lutaml/xml/decisions/rules/explicit_option_rule"
485
+ require "lutaml/xml/decisions/rules/format_preservation_rule"
486
+ require "lutaml/xml/decisions/rules/hoisted_on_parent_rule"
487
+ require "lutaml/xml/decisions/rules/inherit_from_parent_rule"
488
+ require "lutaml/xml/decisions/rules/inherit_parent_prefix_rule"
489
+ require "lutaml/xml/decisions/rules/namespace_scope_rule"
490
+ require "lutaml/xml/decisions/rules/reuse_parent_prefix_rule"
491
+ require "lutaml/xml/decisions/rules/used_prefix_rule"
492
+ require "lutaml/model/schema/xml_compiler/spec_builder/complex_types"
493
+ require "lutaml/model/schema/xml_compiler/spec_builder/members"
494
+ require "lutaml/model/schema/xml_compiler/spec_builder/simple_types"
495
+ require "lutaml/model/services/type/validator/number"
496
+ require "lutaml/model/services/type/validator/string"
497
+ require "lutaml/model/services/type/validator/symbol"