typia 15.1.0 → 15.2.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.
Files changed (295) hide show
  1. package/lib/TypeGuardError.js.map +1 -1
  2. package/lib/basic.js.map +1 -1
  3. package/lib/compare.js.map +1 -1
  4. package/lib/functional.js.map +1 -1
  5. package/lib/http.js.map +1 -1
  6. package/lib/index.js.map +1 -1
  7. package/lib/internal/_IProtobufWriter.js.map +1 -1
  8. package/lib/internal/_ProtobufReader.js.map +1 -1
  9. package/lib/internal/_ProtobufSizer.js.map +1 -1
  10. package/lib/internal/_ProtobufWriter.js.map +1 -1
  11. package/lib/internal/_accessExpressionAsString.js.map +1 -1
  12. package/lib/internal/_assertGuard.js.map +1 -1
  13. package/lib/internal/_coerceLlmArguments.js.map +1 -1
  14. package/lib/internal/_createLlmEvaluation.js.map +1 -1
  15. package/lib/internal/_createStandardSchema.js.map +1 -1
  16. package/lib/internal/_decimal.js.map +1 -1
  17. package/lib/internal/_functionalTypeGuardErrorFactory.js.map +1 -1
  18. package/lib/internal/_httpFormDataReadArray.js.map +1 -1
  19. package/lib/internal/_httpFormDataReadBigint.js.map +1 -1
  20. package/lib/internal/_httpFormDataReadBlob.js.map +1 -1
  21. package/lib/internal/_httpFormDataReadBoolean.js.map +1 -1
  22. package/lib/internal/_httpFormDataReadFile.js.map +1 -1
  23. package/lib/internal/_httpFormDataReadNumber.js.map +1 -1
  24. package/lib/internal/_httpFormDataReadString.js.map +1 -1
  25. package/lib/internal/_httpHeaderReadBigint.js.map +1 -1
  26. package/lib/internal/_httpHeaderReadBoolean.js.map +1 -1
  27. package/lib/internal/_httpHeaderReadNumber.js.map +1 -1
  28. package/lib/internal/_httpParameterReadBigint.js.map +1 -1
  29. package/lib/internal/_httpParameterReadBoolean.js.map +1 -1
  30. package/lib/internal/_httpParameterReadNumber.js.map +1 -1
  31. package/lib/internal/_httpParameterReadString.js.map +1 -1
  32. package/lib/internal/_httpQueryParseURLSearchParams.js.map +1 -1
  33. package/lib/internal/_httpQueryReadArray.js.map +1 -1
  34. package/lib/internal/_httpQueryReadBigint.js.map +1 -1
  35. package/lib/internal/_httpQueryReadBoolean.js.map +1 -1
  36. package/lib/internal/_httpQueryReadNumber.js.map +1 -1
  37. package/lib/internal/_httpQueryReadString.js.map +1 -1
  38. package/lib/internal/_isBetween.js.map +1 -1
  39. package/lib/internal/_isBigintString.js.map +1 -1
  40. package/lib/internal/_isFormatByte.js.map +1 -1
  41. package/lib/internal/_isFormatDate.js.map +1 -1
  42. package/lib/internal/_isFormatDateTime.js.map +1 -1
  43. package/lib/internal/_isFormatDuration.js.map +1 -1
  44. package/lib/internal/_isFormatEmail.js.map +1 -1
  45. package/lib/internal/_isFormatHostname.js.map +1 -1
  46. package/lib/internal/_isFormatIdnEmail.js.map +1 -1
  47. package/lib/internal/_isFormatIdnHostname.js.map +1 -1
  48. package/lib/internal/_isFormatIpv4.js.map +1 -1
  49. package/lib/internal/_isFormatIpv6.js.map +1 -1
  50. package/lib/internal/_isFormatIri.js.map +1 -1
  51. package/lib/internal/_isFormatIriReference.js.map +1 -1
  52. package/lib/internal/_isFormatJsonPointer.js.map +1 -1
  53. package/lib/internal/_isFormatPassword.js.map +1 -1
  54. package/lib/internal/_isFormatRegex.js.map +1 -1
  55. package/lib/internal/_isFormatRelativeJsonPointer.js.map +1 -1
  56. package/lib/internal/_isFormatTime.js.map +1 -1
  57. package/lib/internal/_isFormatUri.js.map +1 -1
  58. package/lib/internal/_isFormatUriReference.js.map +1 -1
  59. package/lib/internal/_isFormatUriTemplate.js.map +1 -1
  60. package/lib/internal/_isFormatUrl.js.map +1 -1
  61. package/lib/internal/_isFormatUuid.js.map +1 -1
  62. package/lib/internal/_isMultipleOf.js.map +1 -1
  63. package/lib/internal/_isTypeFloat.js.map +1 -1
  64. package/lib/internal/_isTypeInt16.js.map +1 -1
  65. package/lib/internal/_isTypeInt32.js.map +1 -1
  66. package/lib/internal/_isTypeInt64.js.map +1 -1
  67. package/lib/internal/_isTypeInt64Bigint.js.map +1 -1
  68. package/lib/internal/_isTypeInt8.js.map +1 -1
  69. package/lib/internal/_isTypeUint16.js.map +1 -1
  70. package/lib/internal/_isTypeUint32.js.map +1 -1
  71. package/lib/internal/_isTypeUint64.js.map +1 -1
  72. package/lib/internal/_isTypeUint64Bigint.js.map +1 -1
  73. package/lib/internal/_isTypeUint8.js.map +1 -1
  74. package/lib/internal/_isUniqueItems.js.map +1 -1
  75. package/lib/internal/_jsonStringifyArray.js.map +1 -1
  76. package/lib/internal/_jsonStringifyElement.js.map +1 -1
  77. package/lib/internal/_jsonStringifyNumber.js.map +1 -1
  78. package/lib/internal/_jsonStringifyProperty.js.map +1 -1
  79. package/lib/internal/_jsonStringifyRest.js.map +1 -1
  80. package/lib/internal/_jsonStringifyString.js.map +1 -1
  81. package/lib/internal/_jsonStringifyTail.js.map +1 -1
  82. package/lib/internal/_llmApplicationFinalize.js +8 -1
  83. package/lib/internal/_llmApplicationFinalize.js.map +1 -1
  84. package/lib/internal/_notationAny.js.map +1 -1
  85. package/lib/internal/_notationAssign.js.map +1 -1
  86. package/lib/internal/_notationCamel.js.map +1 -1
  87. package/lib/internal/_notationKebab.js.map +1 -1
  88. package/lib/internal/_notationKeyCollision.js.map +1 -1
  89. package/lib/internal/_notationPascal.js.map +1 -1
  90. package/lib/internal/_notationSnake.js.map +1 -1
  91. package/lib/internal/_parseLlmArguments.js.map +1 -1
  92. package/lib/internal/_plainCloneAny.js.map +1 -1
  93. package/lib/internal/_randomArray.js.map +1 -1
  94. package/lib/internal/_randomBigint.js.map +1 -1
  95. package/lib/internal/_randomBoolean.js.map +1 -1
  96. package/lib/internal/_randomFormatByte.js.map +1 -1
  97. package/lib/internal/_randomFormatDate.js.map +1 -1
  98. package/lib/internal/_randomFormatDatetime.js.map +1 -1
  99. package/lib/internal/_randomFormatDuration.js.map +1 -1
  100. package/lib/internal/_randomFormatEmail.js.map +1 -1
  101. package/lib/internal/_randomFormatHostname.js.map +1 -1
  102. package/lib/internal/_randomFormatIdnEmail.js.map +1 -1
  103. package/lib/internal/_randomFormatIdnHostname.js.map +1 -1
  104. package/lib/internal/_randomFormatIpv4.js.map +1 -1
  105. package/lib/internal/_randomFormatIpv6.js.map +1 -1
  106. package/lib/internal/_randomFormatIri.js.map +1 -1
  107. package/lib/internal/_randomFormatIriReference.js.map +1 -1
  108. package/lib/internal/_randomFormatJsonPointer.js.map +1 -1
  109. package/lib/internal/_randomFormatPassword.js.map +1 -1
  110. package/lib/internal/_randomFormatRegex.js.map +1 -1
  111. package/lib/internal/_randomFormatRelativeJsonPointer.js.map +1 -1
  112. package/lib/internal/_randomFormatTime.js.map +1 -1
  113. package/lib/internal/_randomFormatUri.js.map +1 -1
  114. package/lib/internal/_randomFormatUriReference.js.map +1 -1
  115. package/lib/internal/_randomFormatUriTemplate.js.map +1 -1
  116. package/lib/internal/_randomFormatUrl.js.map +1 -1
  117. package/lib/internal/_randomFormatUuid.js.map +1 -1
  118. package/lib/internal/_randomInteger.js.map +1 -1
  119. package/lib/internal/_randomMultiple.js.map +1 -1
  120. package/lib/internal/_randomNumber.js.map +1 -1
  121. package/lib/internal/_randomPattern.js.map +1 -1
  122. package/lib/internal/_randomPick.js.map +1 -1
  123. package/lib/internal/_randomString.js.map +1 -1
  124. package/lib/internal/_randomStringLength.js.map +1 -1
  125. package/lib/internal/_stringLength.js.map +1 -1
  126. package/lib/internal/_stringLengthGte.js.map +1 -1
  127. package/lib/internal/_stringLengthLte.js.map +1 -1
  128. package/lib/internal/_throwTypeGuardError.js.map +1 -1
  129. package/lib/internal/_validateReport.js.map +1 -1
  130. package/lib/internal/private/__notationRename.js.map +1 -1
  131. package/lib/internal/private/__randomComposition.js.map +1 -1
  132. package/lib/internal/private/__randomEpoch.js.map +1 -1
  133. package/lib/json.js.map +1 -1
  134. package/lib/llm.js.map +1 -1
  135. package/lib/module.js.map +1 -1
  136. package/lib/notations.js.map +1 -1
  137. package/lib/plain.js.map +1 -1
  138. package/lib/protobuf.js.map +1 -1
  139. package/lib/re-exports.js.map +1 -1
  140. package/lib/reflect.js.map +1 -1
  141. package/lib/transform.d.ts +5 -2
  142. package/lib/transform.js +6 -2
  143. package/lib/transform.js.map +1 -1
  144. package/lib/transform.mjs +7 -3
  145. package/lib/transform.mjs.map +1 -1
  146. package/lib/transformers/NoTransformConfigurationError.js.map +1 -1
  147. package/native/cmd/ttsc-typia/build.go +3 -1
  148. package/native/cmd/ttsc-typia/content_mapper_transform_ts71_test.go +102 -0
  149. package/native/cmd/ttsc-typia/diagnostics.go +1 -1
  150. package/native/cmd/ttsc-typia/distinct_programs_concurrent_emit_test.go +167 -0
  151. package/native/cmd/ttsc-typia/exact_optional_family_emission_contract_test.go +2 -1
  152. package/native/cmd/ttsc-typia/project_dependencies_heritage_forms_transform_test.go +84 -0
  153. package/native/cmd/ttsc-typia/schema_literal_helpers_test.go +2 -1
  154. package/native/cmd/ttsc-typia/transform.go +7 -6
  155. package/native/core/context/EmitFactory.go +20 -29
  156. package/native/core/context/ImportProgrammer.go +5 -7
  157. package/native/core/context/NodeFactory.go +25 -0
  158. package/native/core/context/node_factory_ownership_test.go +45 -0
  159. package/native/core/factories/ExpressionFactory.go +13 -14
  160. package/native/core/factories/IdentifierFactory.go +3 -5
  161. package/native/core/factories/LiteralFactory.go +6 -8
  162. package/native/core/factories/NumericRangeFactory.go +8 -10
  163. package/native/core/factories/StatementFactory.go +5 -7
  164. package/native/core/factories/TemplateFactory.go +1 -3
  165. package/native/core/factories/TypeFactory.go +7 -9
  166. package/native/core/factories/ValueFactory.go +5 -7
  167. package/native/core/factories/factory_utility_coverage_test.go +21 -20
  168. package/native/core/factories/internal/metadata/MetadataHelper.go +13 -13
  169. package/native/core/factories/internal/metadata/comment_tags_coverage_test.go +7 -16
  170. package/native/core/factories/internal/metadata/emplace_metadata_object.go +36 -27
  171. package/native/core/factories/internal/metadata/iterate_metadata_alias.go +2 -2
  172. package/native/core/factories/internal/metadata/iterate_metadata_constant.go +4 -4
  173. package/native/core/factories/internal/metadata/iterate_metadata_function.go +2 -2
  174. package/native/core/factories/internal/metadata/iterate_metadata_intersection.go +11 -11
  175. package/native/core/factories/internal/metadata/js_doc_link_text_test.go +6 -16
  176. package/native/core/factories/internal/metadata/js_doc_parameter_name_reads_qualified_name_test.go +2 -1
  177. package/native/core/factories/internal/metadata/js_doc_source_helpers_test.go +44 -0
  178. package/native/core/factories/internal/metadata/js_doc_type_tag_blank_separation_test.go +16 -22
  179. package/native/core/factories/numeric_range_factory_enforces_64bit_bounds_test.go +2 -1
  180. package/native/core/programmers/AssertProgrammer.go +16 -18
  181. package/native/core/programmers/IsProgrammer.go +10 -12
  182. package/native/core/programmers/RandomProgrammer.go +29 -31
  183. package/native/core/programmers/ValidateProgrammer.go +20 -22
  184. package/native/core/programmers/compare/CompareEqualProgrammer.go +1 -3
  185. package/native/core/programmers/compare/CompareLessProgrammer.go +1 -3
  186. package/native/core/programmers/functional/FunctionalAssertFunctionProgrammer.go +3 -5
  187. package/native/core/programmers/functional/FunctionalAssertParametersProgrammer.go +2 -2
  188. package/native/core/programmers/functional/FunctionalAssertReturnProgrammer.go +2 -2
  189. package/native/core/programmers/functional/FunctionalIsFunctionProgrammer.go +2 -2
  190. package/native/core/programmers/functional/FunctionalIsParametersProgrammer.go +8 -10
  191. package/native/core/programmers/functional/FunctionalIsReturnProgrammer.go +2 -2
  192. package/native/core/programmers/functional/FunctionalValidateFunctionProgrammer.go +4 -6
  193. package/native/core/programmers/functional/FunctionalValidateParametersProgrammer.go +2 -2
  194. package/native/core/programmers/functional/FunctionalValidateReturnProgrammer.go +2 -2
  195. package/native/core/programmers/helpers/ClassifyJoiner.go +1 -3
  196. package/native/core/programmers/helpers/CloneJoiner.go +8 -14
  197. package/native/core/programmers/helpers/FunctionProgrammer.go +3 -5
  198. package/native/core/programmers/helpers/NotationJoiner.go +6 -12
  199. package/native/core/programmers/helpers/PruneJoiner.go +10 -12
  200. package/native/core/programmers/helpers/RandomJoiner.go +5 -7
  201. package/native/core/programmers/helpers/StringifyJoinder.go +15 -17
  202. package/native/core/programmers/helpers/UnionExplorer.go +24 -26
  203. package/native/core/programmers/http/HttpAssertFormDataProgrammer.go +2 -4
  204. package/native/core/programmers/http/HttpAssertHeadersProgrammer.go +1 -1
  205. package/native/core/programmers/http/HttpAssertQueryProgrammer.go +1 -1
  206. package/native/core/programmers/http/HttpFormDataProgrammer.go +9 -11
  207. package/native/core/programmers/http/HttpHeadersProgrammer.go +7 -9
  208. package/native/core/programmers/http/HttpIsFormDataProgrammer.go +2 -4
  209. package/native/core/programmers/http/HttpIsHeadersProgrammer.go +1 -1
  210. package/native/core/programmers/http/HttpIsQueryProgrammer.go +1 -1
  211. package/native/core/programmers/http/HttpParameterProgrammer.go +2 -4
  212. package/native/core/programmers/http/HttpQueryProgrammer.go +8 -10
  213. package/native/core/programmers/http/HttpValidateFormDataProgrammer.go +2 -4
  214. package/native/core/programmers/http/HttpValidateHeadersProgrammer.go +1 -1
  215. package/native/core/programmers/http/HttpValidateQueryProgrammer.go +1 -1
  216. package/native/core/programmers/internal/CheckerProgrammer.go +26 -28
  217. package/native/core/programmers/internal/FeatureProgrammer.go +32 -34
  218. package/native/core/programmers/iterate/check_array_length.go +1 -1
  219. package/native/core/programmers/iterate/check_bigint.go +2 -4
  220. package/native/core/programmers/iterate/check_dynamic_key.go +5 -7
  221. package/native/core/programmers/iterate/check_dynamic_properties.go +43 -57
  222. package/native/core/programmers/iterate/check_everything.go +3 -5
  223. package/native/core/programmers/iterate/check_exclude.go +2 -4
  224. package/native/core/programmers/iterate/check_native.go +2 -4
  225. package/native/core/programmers/iterate/check_number.go +2 -4
  226. package/native/core/programmers/iterate/check_object.go +3 -5
  227. package/native/core/programmers/iterate/check_object_type_tags.go +1 -1
  228. package/native/core/programmers/iterate/check_string.go +2 -4
  229. package/native/core/programmers/iterate/check_template.go +7 -9
  230. package/native/core/programmers/iterate/decode_union_object.go +2 -4
  231. package/native/core/programmers/iterate/feature_object_entries.go +2 -4
  232. package/native/core/programmers/json/JsonAssertParseProgrammer.go +2 -2
  233. package/native/core/programmers/json/JsonAssertStringifyProgrammer.go +2 -4
  234. package/native/core/programmers/json/JsonIsParseProgrammer.go +4 -6
  235. package/native/core/programmers/json/JsonIsStringifyProgrammer.go +2 -4
  236. package/native/core/programmers/json/JsonStringifyProgrammer.go +37 -39
  237. package/native/core/programmers/json/JsonValidateParseProgrammer.go +2 -2
  238. package/native/core/programmers/json/JsonValidateStringifyProgrammer.go +2 -4
  239. package/native/core/programmers/llm/LlmApplicationProgrammer.go +1 -3
  240. package/native/core/programmers/llm/LlmCoerceProgrammer.go +2 -4
  241. package/native/core/programmers/llm/LlmControllerProgrammer.go +1 -3
  242. package/native/core/programmers/llm/LlmEvaluationProgrammer.go +1 -3
  243. package/native/core/programmers/llm/LlmParametersProgrammer.go +1 -3
  244. package/native/core/programmers/llm/LlmParseProgrammer.go +3 -5
  245. package/native/core/programmers/llm/LlmSchemaProgrammer.go +5 -7
  246. package/native/core/programmers/llm/LlmStructuredOutputProgrammer.go +2 -4
  247. package/native/core/programmers/llm/llm_schema_programmer_coverage_test.go +1 -1
  248. package/native/core/programmers/notations/NotationAssertGeneralProgrammer.go +1 -3
  249. package/native/core/programmers/notations/NotationGeneralProgrammer.go +26 -28
  250. package/native/core/programmers/notations/NotationIsGeneralProgrammer.go +1 -3
  251. package/native/core/programmers/notations/NotationValidateGeneralProgrammer.go +1 -3
  252. package/native/core/programmers/plain/PlainAssertClassifyProgrammer.go +2 -4
  253. package/native/core/programmers/plain/PlainAssertCloneProgrammer.go +2 -4
  254. package/native/core/programmers/plain/PlainAssertPruneProgrammer.go +2 -4
  255. package/native/core/programmers/plain/PlainClassifyProgrammer.go +44 -46
  256. package/native/core/programmers/plain/PlainCloneProgrammer.go +30 -32
  257. package/native/core/programmers/plain/PlainIsCloneProgrammer.go +2 -4
  258. package/native/core/programmers/plain/PlainIsPruneProgrammer.go +2 -4
  259. package/native/core/programmers/plain/PlainPruneProgrammer.go +26 -28
  260. package/native/core/programmers/plain/PlainValidateClassifyProgrammer.go +2 -4
  261. package/native/core/programmers/plain/PlainValidateCloneProgrammer.go +2 -4
  262. package/native/core/programmers/plain/PlainValidatePruneProgrammer.go +2 -4
  263. package/native/core/programmers/protobuf/ProtobufAssertDecodeProgrammer.go +2 -4
  264. package/native/core/programmers/protobuf/ProtobufAssertEncodeProgrammer.go +2 -4
  265. package/native/core/programmers/protobuf/ProtobufDecodeProgrammer.go +24 -25
  266. package/native/core/programmers/protobuf/ProtobufEncodeProgrammer.go +23 -25
  267. package/native/core/programmers/protobuf/ProtobufIsDecodeProgrammer.go +2 -4
  268. package/native/core/programmers/protobuf/ProtobufIsEncodeProgrammer.go +2 -4
  269. package/native/core/programmers/protobuf/ProtobufMessageProgrammer.go +1 -3
  270. package/native/core/programmers/protobuf/ProtobufValidateDecodeProgrammer.go +2 -4
  271. package/native/core/programmers/protobuf/ProtobufValidateEncodeProgrammer.go +3 -5
  272. package/native/core/programmers/protobuf/protobuf_programmer_helper_coverage_test.go +1 -1
  273. package/native/core/programmers/reflect/ReflectLiteralsProgrammer.go +1 -3
  274. package/native/core/schemas/metadata/MetadataCollection.go +2 -2
  275. package/native/core/schemas/metadata/MetadataDefaultLibrary.go +1 -1
  276. package/native/core/schemas/metadata/MetadataDependency.go +13 -13
  277. package/native/core/utils/PromiseTypeFactory.go +3 -3
  278. package/native/go.mod +3 -4
  279. package/native/go.work +1 -1
  280. package/native/transform/CallExpressionTransformer.go +4 -4
  281. package/native/transform/FileTransformer.go +2 -4
  282. package/native/transform/features/RandomTransformer.go +1 -3
  283. package/native/transform/features/compare/CompareEqualTransformer.go +1 -1
  284. package/native/transform/features/compare/CompareLessTransformer.go +1 -1
  285. package/native/transform/features/functional/FunctionalGenericTransformer.go +2 -2
  286. package/native/transform/features/llm/LlmCoerceTransformer.go +1 -1
  287. package/native/transform/features/llm/LlmEvaluationProbabilityDeclarations.go +1 -1
  288. package/native/transform/features/llm/LlmEvaluationTransformer.go +1 -1
  289. package/native/transform/features/llm/LlmParseTransformer.go +1 -1
  290. package/native/transform/features/llm/LlmSchemaTransformer.go +1 -3
  291. package/native/transform/features/reflect/ReflectNameTransformer.go +1 -3
  292. package/native/transform/file_transformer_coverage_test.go +2 -1
  293. package/native/transform/internal/GenericTransformer.go +1 -3
  294. package/package.json +6 -6
  295. package/src/transform.ts +6 -2
@@ -57,10 +57,8 @@ type HttpQueryProgrammer_DecomposeProps struct {
57
57
  Missing bool
58
58
  }
59
59
 
60
- var httpQueryProgrammer_factory = shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
61
-
62
60
  func (httpQueryProgrammerNamespace) Decompose(props HttpQueryProgrammer_DecomposeProps) nativeinternal.FeatureProgrammer_IDecomposed {
63
- f := nativecontext.EmitFactoryOf(httpQueryProgrammer_factory, props.Context.Emit)
61
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
64
62
  collection := schemametadata.NewMetadataCollection()
65
63
  result := nativefactories.MetadataFactory.Analyze(nativefactories.MetadataFactory_IProps{
66
64
  Checker: props.Context.Checker,
@@ -153,7 +151,7 @@ func (httpQueryProgrammerNamespace) Write(props HttpQueryProgrammer_IProps) *shi
153
151
  Name: props.Name,
154
152
  Missing: true,
155
153
  })
156
- return nativeinternal.FeatureProgrammer.WriteDecomposed(nativeinternal.FeatureProgrammer_WriteDecomposedProps{
154
+ return nativeinternal.FeatureProgrammer.WriteDecomposed(nativeinternal.FeatureProgrammer_WriteDecomposedProps{Emit: props.Context.Emit,
157
155
  Modulo: props.Modulo,
158
156
  Functor: functor,
159
157
  Result: result,
@@ -233,7 +231,7 @@ func httpQueryProgrammer_decode_object(props struct {
233
231
  Object *schemametadata.MetadataObjectType
234
232
  Missing bool
235
233
  }) []*shimast.Node {
236
- f := nativecontext.EmitFactoryOf(httpQueryProgrammer_factory, props.Context.Emit)
234
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
237
235
  input := f.NewIdentifier("input")
238
236
  output := f.NewIdentifier("output")
239
237
  properties := make([]*shimast.Node, 0, len(props.Object.Properties))
@@ -286,7 +284,7 @@ func httpQueryProgrammer_decode_regular_property(props struct {
286
284
  Property *schemametadata.MetadataProperty
287
285
  Missing bool
288
286
  }) *shimast.Node {
289
- f := nativecontext.EmitFactoryOf(httpQueryProgrammer_factory, props.Context.Emit)
287
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
290
288
  key := httpProgrammer_property_key(props.Property)
291
289
  value := props.Property.Value
292
290
  typ, isArray := httpProgrammer_decode_type(value, false)
@@ -390,7 +388,7 @@ func httpQueryProgrammer_decode_value(props struct {
390
388
  Coalesce bool
391
389
  Input *shimast.Node
392
390
  }) *shimast.Node {
393
- f := nativecontext.EmitFactoryOf(httpQueryProgrammer_factory, props.Context.Emit)
391
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
394
392
  call := f.NewCallExpression(
395
393
  httpParameterProgrammer_internal(props.Context, "httpQueryRead"+httpParameterProgrammer_capitalize(props.Type)),
396
394
  nil,
@@ -411,7 +409,7 @@ func httpQueryProgrammer_decode_value(props struct {
411
409
  }
412
410
 
413
411
  func httpQueryProgrammer_assert_required_value(key string, input *shimast.Node, emit ...*shimprinter.EmitContext) *shimast.Node {
414
- f := nativecontext.EmitFactoryOf(httpQueryProgrammer_factory, emit...)
412
+ f := nativecontext.NodeFactoryOf(emit...)
415
413
  value := f.NewIdentifier("value")
416
414
  return f.NewCallExpression(
417
415
  f.NewArrowFunction(
@@ -448,7 +446,7 @@ func httpQueryProgrammer_assert_required_value(key string, input *shimast.Node,
448
446
  }
449
447
 
450
448
  func httpQueryProgrammer_missing_error(key string, emit ...*shimprinter.EmitContext) *shimast.Node {
451
- f := nativecontext.EmitFactoryOf(httpQueryProgrammer_factory, emit...)
449
+ f := nativecontext.NodeFactoryOf(emit...)
452
450
  return f.NewNewExpression(
453
451
  f.NewIdentifier("Error"),
454
452
  nil,
@@ -463,7 +461,7 @@ func httpQueryProgrammer_decode_array(props struct {
463
461
  Metadata *schemametadata.MetadataSchema
464
462
  Input *shimast.Node
465
463
  }) *shimast.Node {
466
- f := nativecontext.EmitFactoryOf(httpQueryProgrammer_factory, props.Context.Emit)
464
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
467
465
  if props.Metadata.Nullable == false && props.Metadata.IsRequired() == true {
468
466
  return props.Input
469
467
  }
@@ -30,8 +30,6 @@ type HttpValidateFormDataProgrammer_DecomposeProps struct {
30
30
  Name *string
31
31
  }
32
32
 
33
- var httpValidateProgrammer_factory = shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
34
-
35
33
  func (httpValidateFormDataProgrammerNamespace) Decompose(props HttpValidateFormDataProgrammer_DecomposeProps) nativeinternal.FeatureProgrammer_IDecomposed {
36
34
  validate := nativeprogrammers.ValidateProgrammer.Decompose(nativeprogrammers.ValidateProgrammer_DecomposeProps{
37
35
  Context: httpProgrammer_context(props.Context, false, false),
@@ -59,7 +57,7 @@ func (httpValidateFormDataProgrammerNamespace) Write(props nativecontext.IProgra
59
57
  Type: props.Type,
60
58
  Name: props.Name,
61
59
  })
62
- return nativeinternal.FeatureProgrammer.WriteDecomposed(nativeinternal.FeatureProgrammer_WriteDecomposedProps{
60
+ return nativeinternal.FeatureProgrammer.WriteDecomposed(nativeinternal.FeatureProgrammer_WriteDecomposedProps{Emit: props.Context.Emit,
63
61
  Modulo: props.Modulo,
64
62
  Functor: functor,
65
63
  Result: result,
@@ -67,7 +65,7 @@ func (httpValidateFormDataProgrammerNamespace) Write(props nativecontext.IProgra
67
65
  }
68
66
 
69
67
  func httpProgrammer_validate_result(context nativecontext.ITypiaContext, validate nativeinternal.FeatureProgrammer_IDecomposed, decode nativeinternal.FeatureProgrammer_IDecomposed) nativeinternal.FeatureProgrammer_IDecomposed {
70
- f := nativecontext.EmitFactoryOf(httpValidateProgrammer_factory, context.Emit)
68
+ f := nativecontext.NodeFactoryOf(context.Emit)
71
69
  decodeArrow := decode.Arrow.AsArrowFunction()
72
70
  output := decodeArrow.Type
73
71
  if output == nil {
@@ -56,7 +56,7 @@ func (httpValidateHeadersProgrammerNamespace) Write(props nativecontext.IProgram
56
56
  Type: props.Type,
57
57
  Name: props.Name,
58
58
  })
59
- return nativeinternal.FeatureProgrammer.WriteDecomposed(nativeinternal.FeatureProgrammer_WriteDecomposedProps{
59
+ return nativeinternal.FeatureProgrammer.WriteDecomposed(nativeinternal.FeatureProgrammer_WriteDecomposedProps{Emit: props.Context.Emit,
60
60
  Modulo: props.Modulo,
61
61
  Functor: functor,
62
62
  Result: result,
@@ -77,7 +77,7 @@ func (httpValidateQueryProgrammerNamespace) Write(props HttpValidateQueryProgram
77
77
  Name: props.Name,
78
78
  AllowOptional: props.AllowOptional,
79
79
  })
80
- return nativeinternal.FeatureProgrammer.WriteDecomposed(nativeinternal.FeatureProgrammer_WriteDecomposedProps{
80
+ return nativeinternal.FeatureProgrammer.WriteDecomposed(nativeinternal.FeatureProgrammer_WriteDecomposedProps{Emit: props.Context.Emit,
81
81
  Modulo: props.Modulo,
82
82
  Functor: functor,
83
83
  Result: result,
@@ -280,8 +280,6 @@ type CheckerProgrammer_DecodeObjectProps struct {
280
280
  Emit *shimprinter.EmitContext
281
281
  }
282
282
 
283
- var checkerProgrammer_factory = shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
284
-
285
283
  func (checkerProgrammerNamespace) Compose(props CheckerProgrammer_ComposeProps) FeatureProgrammer_IComposed {
286
284
  return FeatureProgrammer.Compose(FeatureProgrammer_ComposeProps{
287
285
  Context: props.Context,
@@ -322,7 +320,7 @@ func (checkerProgrammerNamespace) Write_union_functions(props CheckerProgrammer_
322
320
  }
323
321
 
324
322
  func (checkerProgrammerNamespace) Write_array_functions(props CheckerProgrammer_WriteArrayFunctionsProps) []*shimast.Node {
325
- f := nativecontext.EmitFactoryOf(checkerProgrammer_factory, props.Context.Emit)
323
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
326
324
  arrays := props.Collection.Arrays()
327
325
  output := []*shimast.Node{}
328
326
  for _, typ := range arrays {
@@ -371,7 +369,7 @@ func (checkerProgrammerNamespace) Write_array_functions(props CheckerProgrammer_
371
369
  }
372
370
 
373
371
  func (checkerProgrammerNamespace) Write_tuple_functions(props CheckerProgrammer_WriteTupleFunctionsProps) []*shimast.Node {
374
- f := nativecontext.EmitFactoryOf(checkerProgrammer_factory, props.Context.Emit)
372
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
375
373
  tuples := props.Collection.Tuples()
376
374
  output := []*shimast.Node{}
377
375
  for _, tuple := range tuples {
@@ -417,7 +415,7 @@ func (checkerProgrammerNamespace) Write_tuple_functions(props CheckerProgrammer_
417
415
  }
418
416
 
419
417
  func checkerProgrammer_configure(context nativecontext.ITypiaContext, config CheckerProgrammer_IConfig, functor *nativehelpers.FunctionProgrammer) FeatureProgrammer_IConfig {
420
- f := nativecontext.EmitFactoryOf(checkerProgrammer_factory, context.Emit)
418
+ f := nativecontext.NodeFactoryOf(context.Emit)
421
419
  return FeatureProgrammer_IConfig{
422
420
  Types: FeatureProgrammer_IConfig_ITypes{
423
421
  Input: func(_ *shimchecker.Type, _ *string) *shimast.TypeNode {
@@ -544,7 +542,7 @@ func checkerProgrammer_configure(context nativecontext.ITypiaContext, config Che
544
542
  },
545
543
  Unionizer: func(next FeatureProgrammer_ObjectorUnionizerProps) *shimast.Node {
546
544
  if config.Equals {
547
- return nativeiterate.Decode_union_object(nativeiterate.Decode_union_objectProps{
545
+ return nativeiterate.Decode_union_object(nativeiterate.Decode_union_objectProps{Emit: context.Emit,
548
546
  Checker: func(v nativeiterate.Decode_union_object_next) *shimast.Node {
549
547
  return CheckerProgrammer.Decode_object(CheckerProgrammer_DecodeObjectProps{
550
548
  Config: config,
@@ -670,7 +668,7 @@ func checkerProgrammer_configure(context nativecontext.ITypiaContext, config Che
670
668
  }
671
669
 
672
670
  func (checkerProgrammerNamespace) Decode(props CheckerProgrammer_DecodeProps) *shimast.Node {
673
- f := nativecontext.EmitFactoryOf(checkerProgrammer_factory, props.Context.Emit)
671
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
674
672
  if props.Metadata.Any {
675
673
  return props.Config.Success
676
674
  }
@@ -894,7 +892,7 @@ func (checkerProgrammerNamespace) Decode(props CheckerProgrammer_DecodeProps) *s
894
892
  binaries = append(binaries, CheckerProgrammer_IBinary{
895
893
  Expression: props.Config.Atomist(CheckerProgrammer_AtomistProps{
896
894
  Explore: props.Explore,
897
- Entry: nativeiterate.Check_template(nativeiterate.Check_templateProps{
895
+ Entry: nativeiterate.Check_template(nativeiterate.Check_templateProps{Emit: props.Context.Emit,
898
896
  Context: props.Context,
899
897
  Templates: props.Metadata.Templates,
900
898
  Input: props.Input,
@@ -907,7 +905,7 @@ func (checkerProgrammerNamespace) Decode(props CheckerProgrammer_DecodeProps) *s
907
905
 
908
906
  for _, native := range props.Metadata.Natives {
909
907
  binaries = append(binaries, CheckerProgrammer_IBinary{
910
- Expression: nativeiterate.Check_native(nativeiterate.Check_nativeProps{Name: native.Name, Input: props.Input}),
908
+ Expression: nativeiterate.Check_native(nativeiterate.Check_nativeProps{Emit: props.Context.Emit, Name: native.Name, Input: props.Input}),
911
909
  Combined: false,
912
910
  })
913
911
  }
@@ -932,7 +930,7 @@ func (checkerProgrammerNamespace) Decode(props CheckerProgrammer_DecodeProps) *s
932
930
  body = checkerProgrammer_explore_sets(checkerProgrammer_exploreSetsProps{Context: props.Context, Config: props.Config, Functor: props.Functor, Sets: props.Metadata.Sets, Input: props.Input, Explore: explore})
933
931
  }
934
932
  prepare(checkerProgrammer_IInstance{
935
- Head: nativeiterate.Check_native(nativeiterate.Check_nativeProps{Name: "Set", Input: props.Input}),
933
+ Head: nativeiterate.Check_native(nativeiterate.Check_nativeProps{Emit: props.Context.Emit, Name: "Set", Input: props.Input}),
936
934
  Expected: strings.Join(names, " | "),
937
935
  Body: body,
938
936
  })
@@ -953,7 +951,7 @@ func (checkerProgrammerNamespace) Decode(props CheckerProgrammer_DecodeProps) *s
953
951
  body = checkerProgrammer_explore_maps(checkerProgrammer_exploreMapsProps{Context: props.Context, Config: props.Config, Functor: props.Functor, Maps: props.Metadata.Maps, Input: props.Input, Explore: explore})
954
952
  }
955
953
  prepare(checkerProgrammer_IInstance{
956
- Head: nativeiterate.Check_native(nativeiterate.Check_nativeProps{Name: "Map", Input: props.Input}),
954
+ Head: nativeiterate.Check_native(nativeiterate.Check_nativeProps{Emit: props.Context.Emit, Name: "Map", Input: props.Input}),
957
955
  Expected: strings.Join(names, " | "),
958
956
  Body: body,
959
957
  })
@@ -1103,7 +1101,7 @@ func (checkerProgrammerNamespace) Decode(props CheckerProgrammer_DecodeProps) *s
1103
1101
  if props.Metadata.Escaped != nil {
1104
1102
  var expression *shimast.Node
1105
1103
  if props.Metadata.Escaped.Original.Size() == 1 && len(props.Metadata.Escaped.Original.Natives) == 1 {
1106
- expression = nativeiterate.Check_native(nativeiterate.Check_nativeProps{Name: props.Metadata.Escaped.Original.Natives[0].Name, Input: props.Input})
1104
+ expression = nativeiterate.Check_native(nativeiterate.Check_nativeProps{Emit: props.Context.Emit, Name: props.Metadata.Escaped.Original.Natives[0].Name, Input: props.Input})
1107
1105
  } else {
1108
1106
  expression = checkerProgrammer_and(
1109
1107
  CheckerProgrammer.Decode(CheckerProgrammer_DecodeProps{Context: props.Context, Config: props.Config, Functor: props.Functor, Metadata: props.Metadata.Escaped.Original, Input: props.Input, Explore: props.Explore}),
@@ -1234,7 +1232,7 @@ func checkerProgrammer_decode_array(props checkerProgrammer_decodeArrayProps) *s
1234
1232
  if props.Array.Type.Recursive == false {
1235
1233
  return checkerProgrammer_decode_array_inline(props)
1236
1234
  }
1237
- f := nativecontext.EmitFactoryOf(checkerProgrammer_factory, props.Context.Emit)
1235
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
1238
1236
  arrayExplore := props.Explore
1239
1237
  arrayExplore.Source = "function"
1240
1238
  arrayExplore.From = "array"
@@ -1344,7 +1342,7 @@ func checkerProgrammer_decode_tuple(props checkerProgrammer_decodeTupleProps) *s
1344
1342
  Explore: props.Explore,
1345
1343
  })
1346
1344
  }
1347
- f := nativecontext.EmitFactoryOf(checkerProgrammer_factory, props.Context.Emit)
1345
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
1348
1346
  arrayExplore := props.Explore
1349
1347
  arrayExplore.Source = "function"
1350
1348
  arrayExplore.From = "array"
@@ -1375,7 +1373,7 @@ func checkerProgrammer_decode_tuple(props checkerProgrammer_decodeTupleProps) *s
1375
1373
  }
1376
1374
 
1377
1375
  func checkerProgrammer_decode_tuple_inline(props checkerProgrammer_decodeTupleInlineProps) *shimast.Node {
1378
- f := nativecontext.EmitFactoryOf(checkerProgrammer_factory, props.Context.Emit)
1376
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
1379
1377
  binaries := []*shimast.Node{}
1380
1378
  for index, metadata := range props.Tuple.Elements {
1381
1379
  if metadata.Rest != nil {
@@ -1485,7 +1483,7 @@ type checkerProgrammer_decodeEscapedProps struct {
1485
1483
  }
1486
1484
 
1487
1485
  func checkerProgrammer_decode_escaped(props checkerProgrammer_decodeEscapedProps) *shimast.Node {
1488
- f := nativecontext.EmitFactoryOf(checkerProgrammer_factory, props.Context.Emit)
1486
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
1489
1487
  return f.NewCallExpression(
1490
1488
  f.NewParenthesizedExpression(
1491
1489
  f.NewArrowFunction(
@@ -1532,7 +1530,7 @@ type checkerProgrammer_exploreSetsProps struct {
1532
1530
  }
1533
1531
 
1534
1532
  func checkerProgrammer_explore_sets(props checkerProgrammer_exploreSetsProps) *shimast.Node {
1535
- f := nativecontext.EmitFactoryOf(checkerProgrammer_factory, props.Context.Emit)
1533
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
1536
1534
  return f.NewCallExpression(
1537
1535
  nativehelpers.UnionExplorer.Set(nativehelpers.UnionExplorer_SetProps{
1538
1536
  Config: nativehelpers.UnionExplorer_ArrayLikeConfig{
@@ -1581,7 +1579,7 @@ type checkerProgrammer_exploreMapsProps struct {
1581
1579
  }
1582
1580
 
1583
1581
  func checkerProgrammer_explore_maps(props checkerProgrammer_exploreMapsProps) *shimast.Node {
1584
- f := nativecontext.EmitFactoryOf(checkerProgrammer_factory, props.Context.Emit)
1582
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
1585
1583
  return f.NewCallExpression(
1586
1584
  nativehelpers.UnionExplorer.Map(nativehelpers.UnionExplorer_MapProps{
1587
1585
  Config: nativehelpers.UnionExplorer_ArrayLikeConfig{
@@ -1787,7 +1785,7 @@ type checkerProgrammer_exploreArrayLikeUnionTypesProps struct {
1787
1785
  }
1788
1786
 
1789
1787
  func checkerProgrammer_explore_array_like_union_types(props checkerProgrammer_exploreArrayLikeUnionTypesProps) *shimast.Node {
1790
- f := nativecontext.EmitFactoryOf(checkerProgrammer_factory, props.Emit)
1788
+ f := nativecontext.NodeFactoryOf(props.Emit)
1791
1789
  arrayExplore := props.Explore
1792
1790
  arrayExplore.Source = "function"
1793
1791
  arrayExplore.From = "array"
@@ -1808,7 +1806,7 @@ func checkerProgrammer_explore_array_like_union_types(props checkerProgrammer_ex
1808
1806
  return props.Factory(checkerProgrammer_exploreArrayLikeUnionTypesFactoryProps{
1809
1807
  Parameters: FeatureProgrammer.ParameterDeclarations(FeatureProgrammer_ParameterDeclarationsProps{
1810
1808
  Config: FeatureProgrammer_ParameterConfig{Path: props.Config.Path, Trace: props.Config.Trace, Visited: props.Functor.Visited()},
1811
- Type: nativefactories.TypeFactory.Keyword("any"),
1809
+ Type: nativefactories.TypeFactory.Keyword("any", props.Emit),
1812
1810
  Input: f.NewIdentifier("input"),
1813
1811
  Emit: props.Emit,
1814
1812
  }),
@@ -1864,7 +1862,7 @@ func checkerProgrammer_explore_objects(props checkerProgrammer_exploreObjectsPro
1864
1862
  names = append(names, object.GetDisplayName())
1865
1863
  }
1866
1864
  expected := "(" + strings.Join(names, " | ") + ")"
1867
- f := nativecontext.EmitFactoryOf(checkerProgrammer_factory, props.Context.Emit)
1865
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
1868
1866
  statements := make([]*shimast.Node, 0, len(props.Metadata.Objects)+1)
1869
1867
  for _, object := range props.Metadata.Objects {
1870
1868
  statements = append(statements, f.NewIfStatement(
@@ -1901,7 +1899,7 @@ func checkerProgrammer_explore_objects(props checkerProgrammer_exploreObjectsPro
1901
1899
  shimast.NodeFlagsNone,
1902
1900
  )
1903
1901
  }
1904
- f := nativecontext.EmitFactoryOf(checkerProgrammer_factory, props.Context.Emit)
1902
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
1905
1903
  index := 0
1906
1904
  if props.Metadata.Union_index != nil {
1907
1905
  index = *props.Metadata.Union_index
@@ -1986,7 +1984,7 @@ func checkerProgrammer_decode_object_reference(props checkerProgrammer_decodeObj
1986
1984
  }
1987
1985
 
1988
1986
  func checkerProgrammer_entry_condition(entry nativehelpers.ICheckEntry, emit *shimprinter.EmitContext) *shimast.Node {
1989
- f := nativecontext.EmitFactoryOf(checkerProgrammer_factory, emit)
1987
+ f := nativecontext.NodeFactoryOf(emit)
1990
1988
  expressions := []*shimast.Node{}
1991
1989
  if entry.Expression != nil {
1992
1990
  expressions = append(expressions, entry.Expression)
@@ -2042,7 +2040,7 @@ func checkerProgrammer_definitions_have_array_type_tags(definitions []any) bool
2042
2040
  }
2043
2041
 
2044
2042
  func checkerProgrammer_array_tag_candidate(context nativecontext.ITypiaContext) func(nativehelpers.UnionExplorer_ArrayLikeCandidateProps) *shimast.Node {
2045
- f := nativecontext.EmitFactoryOf(checkerProgrammer_factory, context.Emit)
2043
+ f := nativecontext.NodeFactoryOf(context.Emit)
2046
2044
  return func(props nativehelpers.UnionExplorer_ArrayLikeCandidateProps) *shimast.Node {
2047
2045
  array, ok := props.Definition.(*nativemetadata.MetadataArray)
2048
2046
  if ok == false {
@@ -2057,7 +2055,7 @@ func checkerProgrammer_array_tag_candidate(context nativecontext.ITypiaContext)
2057
2055
  }
2058
2056
 
2059
2057
  func checkerProgrammer_array_like_config(context nativecontext.ITypiaContext, config CheckerProgrammer_IConfig, functor *nativehelpers.FunctionProgrammer, checker func(v nativehelpers.UnionExplorer_ArrayLikeCheckerProps) *shimast.Node, decoder func(v nativehelpers.UnionExplorer_ArrayLikeDecoderProps) *shimast.Node) nativehelpers.UnionExplorer_ArrayLikeConfig {
2060
- f := nativecontext.EmitFactoryOf(checkerProgrammer_factory, context.Emit)
2058
+ f := nativecontext.NodeFactoryOf(context.Emit)
2061
2059
  return nativehelpers.UnionExplorer_ArrayLikeConfig{
2062
2060
  Checker: checker,
2063
2061
  Decoder: decoder,
@@ -2095,7 +2093,7 @@ func checkerProgrammer_create_add(binaries *[]CheckerProgrammer_IBinary, input *
2095
2093
  }
2096
2094
 
2097
2095
  func checkerProgrammer_binary(left *shimast.Expression, operator shimast.Kind, right *shimast.Expression, emit *shimprinter.EmitContext) *shimast.Node {
2098
- f := nativecontext.EmitFactoryOf(checkerProgrammer_factory, emit)
2096
+ f := nativecontext.NodeFactoryOf(emit)
2099
2097
  return f.NewBinaryExpression(
2100
2098
  nil,
2101
2099
  left,
@@ -2128,7 +2126,7 @@ func checkerProgrammer_and(x *shimast.Expression, y *shimast.Expression, emit *s
2128
2126
  // value cannot poison sibling checks; each recursive function owns its own
2129
2127
  // `_vctx` slot for the same reason.
2130
2128
  func checkerProgrammer_visit_guard(key string, body *shimast.Node, emit *shimprinter.EmitContext) *shimast.Node {
2131
- f := nativecontext.EmitFactoryOf(checkerProgrammer_factory, emit)
2129
+ f := nativecontext.NodeFactoryOf(emit)
2132
2130
  slot := "_vctx." + key
2133
2131
  return nativefactories.ExpressionFactory.Conditional(
2134
2132
  f.NewIdentifier("("+slot+" || ("+slot+" = new WeakSet())).has(input)"),
@@ -2234,7 +2232,7 @@ func checkerProgrammer_decode_to_json(props struct {
2234
2232
  CheckNull bool
2235
2233
  Emit *shimprinter.EmitContext
2236
2234
  }) *shimast.Node {
2237
- f := nativecontext.EmitFactoryOf(checkerProgrammer_factory, props.Emit)
2235
+ f := nativecontext.NodeFactoryOf(props.Emit)
2238
2236
  return checkerProgrammer_and(
2239
2237
  nativefactories.ExpressionFactory.IsObject(nativefactories.ExpressionFactory_IsObjectProps{
2240
2238
  CheckArray: false,
@@ -555,7 +555,7 @@ func (featureProgrammerNamespace) CollectionRecursive(collection *nativemetadata
555
555
  // the skip both the cycle breaker and the DAG deduplication. Handles the
556
556
  // block bodies the prune joiner produces as well as expression bodies.
557
557
  func (featureProgrammerNamespace) VisitGuardSkip(key string, body *shimast.Node, emit *shimprinter.EmitContext) *shimast.Node {
558
- f := nativecontext.EmitFactoryOf(featureProgrammer_factory, emit)
558
+ f := nativecontext.NodeFactoryOf(emit)
559
559
  slot := "_vctx." + key
560
560
  has := f.NewIdentifier("(" + slot + " || (" + slot + " = new WeakSet())).has(input)")
561
561
  add := f.NewIdentifier(slot + ".add(input)")
@@ -591,14 +591,14 @@ func (featureProgrammerNamespace) VisitGuardSkip(key string, body *shimast.Node,
591
591
  // way, because re-serializing a DAG alias at another position is legal and
592
592
  // must keep working.
593
593
  func (featureProgrammerNamespace) VisitGuardSerialize(key string, thrower *shimast.Node, body *shimast.Node, emit *shimprinter.EmitContext) *shimast.Node {
594
- f := nativecontext.EmitFactoryOf(featureProgrammer_factory, emit)
594
+ f := nativecontext.NodeFactoryOf(emit)
595
595
  slot := "_vctx." + key
596
596
  bodyExpression := featureProgrammer_block_to_expression(body, emit)
597
597
  finisher := f.NewArrowFunction(
598
598
  nil,
599
599
  nil,
600
600
  f.NewNodeList([]*shimast.Node{
601
- nativefactories.IdentifierFactory.Parameter("_vout", nativefactories.TypeFactory.Keyword("any"), nil),
601
+ nativefactories.IdentifierFactory.Parameter("_vout", nativefactories.TypeFactory.Keyword("any", emit), nil, emit),
602
602
  }),
603
603
  nil,
604
604
  nil,
@@ -642,7 +642,7 @@ func (featureProgrammerNamespace) VisitGuardSerialize(key string, thrower *shima
642
642
  // so recursive references inside the body resolve to the same (still
643
643
  // filling) instance, exactly like the structured-clone algorithm.
644
644
  func (featureProgrammerNamespace) VisitGuardRebuild(key string, array bool, body *shimast.Node, emit *shimprinter.EmitContext) *shimast.Node {
645
- f := nativecontext.EmitFactoryOf(featureProgrammer_factory, emit)
645
+ f := nativecontext.NodeFactoryOf(emit)
646
646
  allocator := f.NewObjectLiteralExpression(f.NewNodeList(nil), false)
647
647
  if array {
648
648
  allocator = f.NewArrayLiteralExpression(f.NewNodeList(nil), false)
@@ -659,14 +659,14 @@ func (featureProgrammerNamespace) VisitGuardRebuild(key string, array bool, body
659
659
  // registers in the WeakMap BEFORE the body evaluates, so a back-reference
660
660
  // inside the body resolves to this same (still filling) instance.
661
661
  func (featureProgrammerNamespace) VisitGuardRebuildWith(key string, allocator *shimast.Node, body *shimast.Node, emit *shimprinter.EmitContext) *shimast.Node {
662
- f := nativecontext.EmitFactoryOf(featureProgrammer_factory, emit)
662
+ f := nativecontext.NodeFactoryOf(emit)
663
663
  slot := "_vctx." + key
664
664
  bodyExpression := featureProgrammer_block_to_expression(body, emit)
665
665
  filler := f.NewArrowFunction(
666
666
  nil,
667
667
  nil,
668
668
  f.NewNodeList([]*shimast.Node{
669
- nativefactories.IdentifierFactory.Parameter("_vout", nativefactories.TypeFactory.Keyword("any"), nil),
669
+ nativefactories.IdentifierFactory.Parameter("_vout", nativefactories.TypeFactory.Keyword("any", emit), nil, emit),
670
670
  }),
671
671
  nil,
672
672
  nil,
@@ -711,8 +711,6 @@ func featureProgrammer_block_to_expression(body *shimast.Node, emit *shimprinter
711
711
  return body
712
712
  }
713
713
 
714
- var featureProgrammer_factory = shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
715
-
716
714
  func (featureProgrammerNamespace) Compose(props FeatureProgrammer_ComposeProps) FeatureProgrammer_IComposed {
717
715
  initialized := props.Config.Initializer(FeatureProgrammer_InitializerProps{
718
716
  Context: props.Context,
@@ -763,7 +761,7 @@ func (featureProgrammerNamespace) Compose(props FeatureProgrammer_ComposeProps)
763
761
  }
764
762
 
765
763
  func (featureProgrammerNamespace) WriteDecomposed(props FeatureProgrammer_WriteDecomposedProps) *shimast.Node {
766
- f := nativecontext.EmitFactoryOf(featureProgrammer_factory, props.Emit)
764
+ f := nativecontext.NodeFactoryOf(props.Emit)
767
765
  statements := []*shimast.Node{}
768
766
  statements = append(statements, props.Functor.Declare()...)
769
767
  keys := make([]string, 0, len(props.Result.Functions))
@@ -801,7 +799,7 @@ func (featureProgrammerNamespace) WriteDecomposed(props FeatureProgrammer_WriteD
801
799
  }
802
800
 
803
801
  func (featureProgrammerNamespace) Write(props FeatureProgrammer_WriteProps) *shimast.Node {
804
- f := nativecontext.EmitFactoryOf(featureProgrammer_factory, props.Context.Emit)
802
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
805
803
  initialized := props.Config.Initializer(FeatureProgrammer_InitializerProps{
806
804
  Context: props.Context,
807
805
  Functor: props.Functor,
@@ -882,14 +880,14 @@ func (featureProgrammerNamespace) Write_union_functions(props FeatureProgrammer_
882
880
  }
883
881
 
884
882
  func (featureProgrammerNamespace) Decode_array(props FeatureProgrammer_DecodeArrayProps) *shimast.Node {
885
- f := nativecontext.EmitFactoryOf(featureProgrammer_factory, props.Emit)
883
+ f := nativecontext.NodeFactoryOf(props.Emit)
886
884
  rand := fmt.Sprint(props.Functor.Increment())
887
885
  tail := []*shimast.Node{}
888
886
  if props.Config.Path || props.Config.Trace {
889
- tail = append(tail, nativefactories.IdentifierFactory.Parameter("_index"+rand, nativefactories.TypeFactory.Keyword("number"), nil))
887
+ tail = append(tail, nativefactories.IdentifierFactory.Parameter("_index"+rand, nativefactories.TypeFactory.Keyword("number", props.Emit), nil, props.Emit))
890
888
  }
891
889
  parameters := []*shimast.Node{
892
- nativefactories.IdentifierFactory.Parameter("elem", nativefactories.TypeFactory.Keyword("any"), nil),
890
+ nativefactories.IdentifierFactory.Parameter("elem", nativefactories.TypeFactory.Keyword("any", props.Emit), nil, props.Emit),
893
891
  }
894
892
  parameters = append(parameters, tail...)
895
893
  arrow := f.NewArrowFunction(
@@ -900,7 +898,7 @@ func (featureProgrammerNamespace) Decode_array(props FeatureProgrammer_DecodeArr
900
898
  nil,
901
899
  f.NewToken(shimast.KindEqualsGreaterThanToken),
902
900
  props.Config.Decoder(FeatureProgrammer_DecoderProps{
903
- Input: nativefactories.ValueFactory.INPUT(nil, "elem"),
901
+ Input: nativefactories.ValueFactory.INPUT(props.Emit, "elem"),
904
902
  Metadata: props.Array.Type.Value,
905
903
  Explore: FeatureProgrammer_IExplore{
906
904
  Tracable: props.Explore.Tracable,
@@ -921,7 +919,7 @@ func (featureProgrammerNamespace) Decode_array(props FeatureProgrammer_DecodeArr
921
919
  }
922
920
 
923
921
  func (featureProgrammerNamespace) Decode_object(props FeatureProgrammer_DecodeObjectProps) *shimast.Node {
924
- f := nativecontext.EmitFactoryOf(featureProgrammer_factory, props.Emit)
922
+ f := nativecontext.NodeFactoryOf(props.Emit)
925
923
  return f.NewCallExpression(
926
924
  f.NewIdentifier(
927
925
  props.Functor.UseLocal(fmt.Sprintf("%so%d", props.Config.Prefix, props.Object.Index)),
@@ -953,7 +951,7 @@ func (featureProgrammerNamespace) Index(props FeatureProgrammer_IndexProps) stri
953
951
  }
954
952
 
955
953
  func (featureProgrammerNamespace) ArgumentsArray(props FeatureProgrammer_ArgumentsArrayProps) []*shimast.Node {
956
- f := nativecontext.EmitFactoryOf(featureProgrammer_factory, props.Emit)
954
+ f := nativecontext.NodeFactoryOf(props.Emit)
957
955
  tail := []*shimast.Node{}
958
956
  if props.Config.Path == false && props.Config.Trace == false {
959
957
  tail = []*shimast.Node{}
@@ -992,16 +990,16 @@ func (featureProgrammerNamespace) ArgumentsArray(props FeatureProgrammer_Argumen
992
990
  }
993
991
 
994
992
  func (featureProgrammerNamespace) ParameterDeclarations(props FeatureProgrammer_ParameterDeclarationsProps) []*shimast.Node {
995
- f := nativecontext.EmitFactoryOf(featureProgrammer_factory, props.Emit)
993
+ f := nativecontext.NodeFactoryOf(props.Emit)
996
994
  tail := []*shimast.Node{}
997
995
  if props.Config.Path {
998
- tail = append(tail, nativefactories.IdentifierFactory.Parameter("_path", nativefactories.TypeFactory.Keyword("string"), nil))
996
+ tail = append(tail, nativefactories.IdentifierFactory.Parameter("_path", nativefactories.TypeFactory.Keyword("string", props.Emit), nil, props.Emit))
999
997
  }
1000
998
  if props.Config.Trace {
1001
999
  tail = append(tail, nativefactories.IdentifierFactory.Parameter(
1002
1000
  "_exceptionable",
1003
- nativefactories.TypeFactory.Keyword("boolean"),
1004
- f.NewKeywordExpression(shimast.KindTrueKeyword),
1001
+ nativefactories.TypeFactory.Keyword("boolean", props.Emit),
1002
+ f.NewKeywordExpression(shimast.KindTrueKeyword), props.Emit,
1005
1003
  ))
1006
1004
  }
1007
1005
  if props.Config.Visited {
@@ -1009,12 +1007,12 @@ func (featureProgrammerNamespace) ParameterDeclarations(props FeatureProgrammer_
1009
1007
  // so the default object literal only materializes at the public entry.
1010
1008
  tail = append(tail, nativefactories.IdentifierFactory.Parameter(
1011
1009
  "_vctx",
1012
- nativefactories.TypeFactory.Keyword("any"),
1013
- f.NewObjectLiteralExpression(f.NewNodeList(nil), false),
1010
+ nativefactories.TypeFactory.Keyword("any", props.Emit),
1011
+ f.NewObjectLiteralExpression(f.NewNodeList(nil), false), props.Emit,
1014
1012
  ))
1015
1013
  }
1016
1014
  return append([]*shimast.Node{
1017
- nativefactories.IdentifierFactory.Parameter(props.Input, props.Type, nil),
1015
+ nativefactories.IdentifierFactory.Parameter(props.Input, props.Type, nil, props.Emit),
1018
1016
  }, tail...)
1019
1017
  }
1020
1018
 
@@ -1254,7 +1252,7 @@ func featureProgrammer_register_schema_unions_iterate(collection *nativemetadata
1254
1252
  }
1255
1253
 
1256
1254
  func featureProgrammer_write_object_functions(config FeatureProgrammer_IConfig, context nativecontext.ITypiaContext, functor *nativehelpers.FunctionProgrammer, collection *nativemetadata.MetadataCollection) []*shimast.Node {
1257
- f := nativecontext.EmitFactoryOf(featureProgrammer_factory, context.Emit)
1255
+ f := nativecontext.NodeFactoryOf(context.Emit)
1258
1256
  objects := collection.Objects()
1259
1257
  propertyFrequencies := featureProgrammer_object_property_frequencies(config, context, functor, objects)
1260
1258
  output := make([]*shimast.Node, 0, len(objects))
@@ -1343,7 +1341,7 @@ func featureProgrammer_write_object_functions(config FeatureProgrammer_IConfig,
1343
1341
  nil,
1344
1342
  f.NewNodeList(FeatureProgrammer.ParameterDeclarations(FeatureProgrammer_ParameterDeclarationsProps{
1345
1343
  Config: FeatureProgrammer_ParameterConfig{Path: config.Path, Trace: config.Trace, Visited: featureProgrammer_visited(config)},
1346
- Type: nativefactories.TypeFactory.Keyword("any"),
1344
+ Type: nativefactories.TypeFactory.Keyword("any", context.Emit),
1347
1345
  Input: nativefactories.ValueFactory.INPUT(context.Emit),
1348
1346
  Emit: context.Emit,
1349
1347
  })),
@@ -1415,7 +1413,7 @@ func featureProgrammer_object_property_helper_key(
1415
1413
  }
1416
1414
 
1417
1415
  func featureProgrammer_object_property_helper_call(props featureProgrammer_objectPropertyHelperProps) *shimast.Node {
1418
- f := nativecontext.EmitFactoryOf(featureProgrammer_factory, props.Context.Emit)
1416
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
1419
1417
  helper := props.Functor.EmplaceVariableByKey(props.Config.Prefix+"p", props.Key, func(string) *shimast.Expression {
1420
1418
  input := nativefactories.ValueFactory.INPUT(props.Context.Emit)
1421
1419
  propertyInput := featureProgrammer_object_property_input(input, props.Next.Key, props.Context.Emit)
@@ -1429,7 +1427,7 @@ func featureProgrammer_object_property_helper_call(props featureProgrammer_objec
1429
1427
  nil,
1430
1428
  f.NewNodeList(FeatureProgrammer.ParameterDeclarations(FeatureProgrammer_ParameterDeclarationsProps{
1431
1429
  Config: FeatureProgrammer_ParameterConfig{Path: props.Config.Path, Trace: props.Config.Trace, Visited: featureProgrammer_visited(props.Config)},
1432
- Type: nativefactories.TypeFactory.Keyword("any"),
1430
+ Type: nativefactories.TypeFactory.Keyword("any", props.Context.Emit),
1433
1431
  Input: input,
1434
1432
  Emit: props.Context.Emit,
1435
1433
  })),
@@ -1459,7 +1457,7 @@ func featureProgrammer_object_property_helper_call(props featureProgrammer_objec
1459
1457
  }
1460
1458
 
1461
1459
  func featureProgrammer_object_property_input(input *shimast.Expression, key *string, emit ...*shimprinter.EmitContext) *shimast.Node {
1462
- f := nativecontext.EmitFactoryOf(featureProgrammer_factory, emit...)
1460
+ f := nativecontext.NodeFactoryOf(emit...)
1463
1461
  if key == nil {
1464
1462
  return f.NewIdentifier("value")
1465
1463
  }
@@ -1481,7 +1479,7 @@ func featureProgrammer_write_union_functions(config FeatureProgrammer_IConfig, c
1481
1479
  Config FeatureProgrammer_IConfig
1482
1480
  Objects []*nativemetadata.MetadataObjectType
1483
1481
  }{Config: config, Objects: union}, emit),
1484
- }))
1482
+ }, emit))
1485
1483
  }
1486
1484
  return output
1487
1485
  }
@@ -1490,17 +1488,17 @@ func featureProgrammer_write_union(props struct {
1490
1488
  Config FeatureProgrammer_IConfig
1491
1489
  Objects []*nativemetadata.MetadataObjectType
1492
1490
  }, emit *shimprinter.EmitContext) *shimast.Node {
1493
- f := nativecontext.EmitFactoryOf(featureProgrammer_factory, emit)
1491
+ f := nativecontext.NodeFactoryOf(emit)
1494
1492
  return f.NewArrowFunction(
1495
1493
  nil,
1496
1494
  nil,
1497
1495
  f.NewNodeList(FeatureProgrammer.ParameterDeclarations(FeatureProgrammer_ParameterDeclarationsProps{
1498
1496
  Config: FeatureProgrammer_ParameterConfig{Path: props.Config.Path, Trace: props.Config.Trace, Visited: featureProgrammer_visited(props.Config)},
1499
- Type: nativefactories.TypeFactory.Keyword("any"),
1500
- Input: nativefactories.ValueFactory.INPUT(nil),
1497
+ Type: nativefactories.TypeFactory.Keyword("any", emit),
1498
+ Input: nativefactories.ValueFactory.INPUT(emit),
1501
1499
  Emit: emit,
1502
1500
  })),
1503
- nativefactories.TypeFactory.Keyword("any"),
1501
+ nativefactories.TypeFactory.Keyword("any", emit),
1504
1502
  nil,
1505
1503
  f.NewToken(shimast.KindEqualsGreaterThanToken),
1506
1504
  nativehelpers.UnionExplorer.Object(nativehelpers.UnionExplorer_ObjectProps{
@@ -1508,7 +1506,7 @@ func featureProgrammer_write_union(props struct {
1508
1506
  Objector: featureProgrammer_union_objector(props.Config.Objector),
1509
1507
  },
1510
1508
  Objects: props.Objects,
1511
- Input: nativefactories.ValueFactory.INPUT(nil),
1509
+ Input: nativefactories.ValueFactory.INPUT(emit),
1512
1510
  Explore: FeatureProgrammer_IExplore{
1513
1511
  Tracable: props.Config.Path || props.Config.Trace,
1514
1512
  Source: "function",
@@ -75,5 +75,5 @@ func check_array_length_transpile(context nativecontext.ITypiaContext, script st
75
75
  return nativefactories.ExpressionFactory.Transpile(nativefactories.ExpressionFactory_TranspileProps{
76
76
  Importer: importer,
77
77
  Script: script,
78
- })
78
+ }, context.Emit)
79
79
  }
@@ -29,7 +29,7 @@ type Check_bigintProps struct {
29
29
  // @evidence contracts/common.md#prohibited-implementation-shortcuts Its inputs are its arguments and the context they carry, and it keeps no state of its own.
30
30
  // @evidence contracts/common.md#meaningful-documentation The doc states what it builds.
31
31
  func Check_bigint(props Check_bigintProps) nativehelpers.ICheckEntry {
32
- f := nativecontext.EmitFactoryOf(check_bigint_factory, props.Context.Emit)
32
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
33
33
  conditions := check_bigint_type_tags(props)
34
34
  return nativehelpers.ICheckEntry{
35
35
  Expected: props.Atomic.GetName(),
@@ -86,7 +86,5 @@ func check_bigint_transpile(context nativecontext.ITypiaContext, script string)
86
86
  return nativefactories.ExpressionFactory.Transpile(nativefactories.ExpressionFactory_TranspileProps{
87
87
  Importer: importer,
88
88
  Script: script,
89
- })
89
+ }, context.Emit)
90
90
  }
91
-
92
- var check_bigint_factory = shimast.NewNodeFactory(shimast.NodeFactoryHooks{})