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
@@ -42,15 +42,13 @@ type compareLessProgrammerGenerator struct {
42
42
  Counter int
43
43
  }
44
44
 
45
- var compareLessProgrammer_factory = shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
46
-
47
45
  // Write emits an `(x, y) => boolean` predicate that reports whether `x`
48
46
  // lexicographically precedes `y`. It builds a three-way comparator (negative /
49
47
  // zero / positive) over the declared structure of the type and returns
50
48
  // `cmp(x, y) < 0` so that `equal` and `less` together compose into an
51
49
  // Array.prototype.sort comparator.
52
50
  func (compareLessProgrammerNamespace) Write(props CompareLessProgrammer_IProps) *shimast.Node {
53
- f := nativecontext.EmitFactoryOf(compareLessProgrammer_factory, props.Context.Emit)
51
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
54
52
  method := nativehelpers.ModuloMethodText(props.Modulo)
55
53
  collection := schemametadata.NewMetadataCollection()
56
54
  result := nativefactories.MetadataFactory.Analyze(nativefactories.MetadataFactory_IProps{
@@ -70,8 +70,6 @@ type FunctionalAssertFunctionProgrammer_ErrorFactoryWrapperOutput struct {
70
70
  Variable *shimast.Node
71
71
  }
72
72
 
73
- var functionalAssertProgrammer_factory = shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
74
-
75
73
  func (functionalAssertFunctionProgrammerNamespace) Write(props FunctionalAssertFunctionProgrammer_IProps) *shimast.Node {
76
74
  wrapper := FunctionalAssertFunctionProgrammer.ErrorFactoryWrapper(struct {
77
75
  Context nativecontext.ITypiaContext
@@ -97,7 +95,7 @@ func (functionalAssertFunctionProgrammerNamespace) Write(props FunctionalAssertF
97
95
  Declaration: props.Declaration,
98
96
  Wrapper: wrapper.Name,
99
97
  })
100
- f := nativecontext.EmitFactoryOf(functionalAssertProgrammer_factory, props.Context.Emit)
98
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
101
99
  statements := []*shimast.Node{wrapper.Variable}
102
100
  statements = append(statements, p.Functions...)
103
101
  statements = append(statements, r.Functions...)
@@ -150,7 +148,7 @@ func (functionalAssertFunctionProgrammerNamespace) HookPath(props struct {
150
148
  Wrapper string
151
149
  Replacer string
152
150
  }) *shimast.Node {
153
- f := nativecontext.EmitFactoryOf(functionalAssertProgrammer_factory, props.Context.Emit)
151
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
154
152
  path := nativefactories.IdentifierFactory.Access(props.Context.Emit, f.NewIdentifier("p"), "path")
155
153
  return f.NewArrowFunction(
156
154
  nil,
@@ -207,5 +205,5 @@ func functionalAssertProgrammer_internal(context nativecontext.ITypiaContext, na
207
205
  if importer := context.Importer; importer != nil {
208
206
  return importer.Internal(name)
209
207
  }
210
- return nativecontext.EmitFactoryOf(functionalAssertProgrammer_factory, context.Emit).NewIdentifier(name)
208
+ return nativecontext.NodeFactoryOf(context.Emit).NewIdentifier(name)
211
209
  }
@@ -107,7 +107,7 @@ func (functionalAssertParametersProgrammerNamespace) Write(props FunctionalAsser
107
107
  Parameters: functionalIsProgrammer_parameterNodes(props.Declaration),
108
108
  Init: props.Init,
109
109
  })
110
- f := nativecontext.EmitFactoryOf(functionalAssertProgrammer_factory, props.Context.Emit)
110
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
111
111
  output := functionalinternal.FunctionalGeneralProgrammer.GetReturnType(functionalinternal.FunctionalGeneralProgrammer_IProps{
112
112
  Checker: props.Context.Checker,
113
113
  Declaration: props.Declaration,
@@ -142,7 +142,7 @@ func (functionalAssertParametersProgrammerNamespace) Write(props FunctionalAsser
142
142
  }
143
143
 
144
144
  func (functionalAssertParametersProgrammerNamespace) Decompose(props FunctionalAssertParametersProgrammer_IDecomposeProps) FunctionalAssertParametersProgrammer_IDecomposeOutput {
145
- f := nativecontext.EmitFactoryOf(functionalAssertProgrammer_factory, props.Context.Emit)
145
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
146
146
  functions := make([]*shimast.Node, 0, len(props.Parameters))
147
147
  expressions := make([]*shimast.Node, 0, len(props.Parameters))
148
148
  for i, p := range props.Parameters {
@@ -122,7 +122,7 @@ func (functionAssertReturnProgrammerNamespace) Write(props FunctionAssertReturnP
122
122
  Declaration: props.Declaration,
123
123
  Wrapper: wrapper.Name,
124
124
  })
125
- f := nativecontext.EmitFactoryOf(functionalAssertProgrammer_factory, props.Context.Emit)
125
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
126
126
  statements := []*shimast.Node{wrapper.Variable}
127
127
  statements = append(statements, result.Functions...)
128
128
  statements = append(statements, f.NewReturnStatement(
@@ -141,7 +141,7 @@ func (functionAssertReturnProgrammerNamespace) Write(props FunctionAssertReturnP
141
141
  }
142
142
 
143
143
  func (functionAssertReturnProgrammerNamespace) Decompose(props FunctionAssertReturnProgrammer_IDecomposeProps) FunctionAssertReturnProgrammer_IDecomposeOutput {
144
- f := nativecontext.EmitFactoryOf(functionalAssertProgrammer_factory, props.Context.Emit)
144
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
145
145
  output := functionalinternal.FunctionalGeneralProgrammer.GetReturnType(functionalinternal.FunctionalGeneralProgrammer_IProps{
146
146
  Checker: props.Context.Checker,
147
147
  Declaration: props.Declaration,
@@ -50,7 +50,7 @@ type FunctionalIsFunctionProgrammer_IProps struct {
50
50
  }
51
51
 
52
52
  func (functionalIsFunctionProgrammerNamespace) Write(props FunctionalIsFunctionProgrammer_IProps) *shimast.Node {
53
- f := nativecontext.EmitFactoryOf(functionalIsProgrammer_factory, props.Context.Emit)
53
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
54
54
  p := FunctionalIsParametersProgrammer.Decompose(FunctionalIsParametersProgrammer_IDecomposeProps{
55
55
  Context: props.Context,
56
56
  Config: FunctionalIsParametersProgrammer_IConfig{Equals: props.Config.Equals},
@@ -103,7 +103,7 @@ func (functionalIsFunctionProgrammerNamespace) GetReturnTypeNode(props struct {
103
103
  if typ == nil {
104
104
  return nil
105
105
  }
106
- f := nativecontext.EmitFactoryOf(functionalIsProgrammer_factory, props.Context.Emit)
106
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
107
107
  nullType := f.NewTypeReferenceNode(f.NewIdentifier("null"), nil)
108
108
  if props.Async {
109
109
  var inner *shimast.Node
@@ -92,10 +92,8 @@ type FunctionalIsParametersProgrammer_IDecomposeOutput struct {
92
92
  Statements []*shimast.Node
93
93
  }
94
94
 
95
- var functionalIsProgrammer_factory = shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
96
-
97
95
  func (functionalIsParametersProgrammerNamespace) Write(props FunctionalIsParametersProgrammer_IProps) *shimast.Node {
98
- f := nativecontext.EmitFactoryOf(functionalIsProgrammer_factory, props.Context.Emit)
96
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
99
97
  output := functionalinternal.FunctionalGeneralProgrammer.GetReturnType(functionalinternal.FunctionalGeneralProgrammer_IProps{
100
98
  Checker: props.Context.Checker,
101
99
  Declaration: props.Declaration,
@@ -134,7 +132,7 @@ func (functionalIsParametersProgrammerNamespace) Write(props FunctionalIsParamet
134
132
  }
135
133
 
136
134
  func (functionalIsParametersProgrammerNamespace) Decompose(props FunctionalIsParametersProgrammer_IDecomposeProps) FunctionalIsParametersProgrammer_IDecomposeOutput {
137
- f := nativecontext.EmitFactoryOf(functionalIsProgrammer_factory, props.Context.Emit)
135
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
138
136
  parameters := functionalIsProgrammer_parameterNodes(props.Declaration)
139
137
  functions := make([]*shimast.Node, 0, len(parameters))
140
138
  statements := []*shimast.Node{}
@@ -176,7 +174,7 @@ func (functionalIsParametersProgrammerNamespace) Decompose(props FunctionalIsPar
176
174
 
177
175
  func functionalIsProgrammer_parameters(declaration *shimast.Node, emit ...*shimprinter.EmitContext) *shimast.ParameterList {
178
176
  if declaration == nil || declaration.FunctionLikeData() == nil || declaration.FunctionLikeData().Parameters == nil {
179
- return nativecontext.EmitFactoryOf(functionalIsProgrammer_factory, emit...).NewNodeList(nil)
177
+ return nativecontext.NodeFactoryOf(emit...).NewNodeList(nil)
180
178
  }
181
179
  return declaration.FunctionLikeData().Parameters
182
180
  }
@@ -203,7 +201,7 @@ func functionalIsProgrammer_function(
203
201
  returnType *shimast.Node,
204
202
  body *shimast.Node,
205
203
  ) *shimast.Node {
206
- f := nativecontext.EmitFactoryOf(functionalIsProgrammer_factory, context.Emit)
204
+ f := nativecontext.NodeFactoryOf(context.Emit)
207
205
  return f.NewFunctionExpression(
208
206
  functionalIsProgrammer_asyncModifiers(async, context.Emit),
209
207
  nil,
@@ -217,7 +215,7 @@ func functionalIsProgrammer_function(
217
215
  }
218
216
 
219
217
  func functionalIsProgrammer_call(context nativecontext.ITypiaContext, expression *shimast.Node, declaration *shimast.Node) *shimast.Node {
220
- f := nativecontext.EmitFactoryOf(functionalIsProgrammer_factory, context.Emit)
218
+ f := nativecontext.NodeFactoryOf(context.Emit)
221
219
  return f.NewCallExpression(
222
220
  nativefactories.IdentifierFactory.Access(context.Emit, f.NewIdentifier("Reflect"), "apply"),
223
221
  nil,
@@ -232,7 +230,7 @@ func functionalIsProgrammer_call(context nativecontext.ITypiaContext, expression
232
230
  }
233
231
 
234
232
  func functionalIsProgrammer_parameterIdentifiers(declaration *shimast.Node, emit ...*shimprinter.EmitContext) []*shimast.Node {
235
- f := nativecontext.EmitFactoryOf(functionalIsProgrammer_factory, emit...)
233
+ f := nativecontext.NodeFactoryOf(emit...)
236
234
  parameters := functionalIsProgrammer_parameterNodes(declaration)
237
235
  output := make([]*shimast.Node, 0, len(parameters))
238
236
  for _, p := range parameters {
@@ -251,7 +249,7 @@ func functionalIsProgrammer_parameterIdentifiers(declaration *shimast.Node, emit
251
249
  // functionalIsProgrammer_parameterName gives it: the wrapper validates and
252
250
  // forwards the whole argument, and a pattern names no single value.
253
251
  func functionalIsProgrammer_wrapperParameters(declaration *shimast.Node, emit ...*shimprinter.EmitContext) *shimast.ParameterList {
254
- f := nativecontext.EmitFactoryOf(functionalIsProgrammer_factory, emit...)
252
+ f := nativecontext.NodeFactoryOf(emit...)
255
253
  list := functionalIsProgrammer_parameters(declaration, emit...)
256
254
  if list == nil {
257
255
  return list
@@ -357,7 +355,7 @@ func functionalIsProgrammer_asyncModifiers(async bool, emit ...*shimprinter.Emit
357
355
  if async == false {
358
356
  return nil
359
357
  }
360
- f := nativecontext.EmitFactoryOf(functionalIsProgrammer_factory, emit...)
358
+ f := nativecontext.NodeFactoryOf(emit...)
361
359
  return f.NewModifierList([]*shimast.Node{
362
360
  f.NewModifier(shimast.KindAsyncKeyword),
363
361
  })
@@ -96,7 +96,7 @@ type FunctionalIsReturnProgrammer_IDecomposeOutput struct {
96
96
  }
97
97
 
98
98
  func (functionalIsReturnProgrammerNamespace) Write(props FunctionalIsReturnProgrammer_IProps) *shimast.Node {
99
- f := nativecontext.EmitFactoryOf(functionalIsProgrammer_factory, props.Context.Emit)
99
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
100
100
  result := FunctionalIsReturnProgrammer.Decompose(FunctionalIsReturnProgrammer_IDecomposeProps{
101
101
  Context: props.Context,
102
102
  Modulo: props.Modulo,
@@ -129,7 +129,7 @@ func (functionalIsReturnProgrammerNamespace) Write(props FunctionalIsReturnProgr
129
129
  }
130
130
 
131
131
  func (functionalIsReturnProgrammerNamespace) Decompose(props FunctionalIsReturnProgrammer_IDecomposeProps) FunctionalIsReturnProgrammer_IDecomposeOutput {
132
- f := nativecontext.EmitFactoryOf(functionalIsProgrammer_factory, props.Context.Emit)
132
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
133
133
  output := functionalinternal.FunctionalGeneralProgrammer.GetReturnType(functionalinternal.FunctionalGeneralProgrammer_IProps{
134
134
  Checker: props.Context.Checker,
135
135
  Declaration: props.Declaration,
@@ -49,8 +49,6 @@ type FunctionalValidateFunctionProgrammer_IProps struct {
49
49
  Expression *shimast.Node
50
50
  }
51
51
 
52
- var functionalValidateProgrammer_factory = shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
53
-
54
52
  func (functionalValidateFunctionProgrammerNamespace) Write(props FunctionalValidateFunctionProgrammer_IProps) *shimast.Node {
55
53
  p := FunctionalValidateParametersProgrammer.Decompose(FunctionalValidateParametersProgrammer_IDecomposeProps{
56
54
  Context: props.Context,
@@ -65,7 +63,7 @@ func (functionalValidateFunctionProgrammerNamespace) Write(props FunctionalValid
65
63
  Expression: props.Expression,
66
64
  Declaration: props.Declaration,
67
65
  })
68
- f := nativecontext.EmitFactoryOf(functionalValidateProgrammer_factory, props.Context.Emit)
66
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
69
67
  statements := append([]*shimast.Node{}, p.Functions...)
70
68
  statements = append(statements, r.Functions...)
71
69
  body := append([]*shimast.Node{}, p.Statements...)
@@ -98,7 +96,7 @@ func (functionalValidateFunctionProgrammerNamespace) HookErrors(props struct {
98
96
  Expression *shimast.Node
99
97
  Replacer *shimast.Node
100
98
  }) *shimast.Node {
101
- f := nativecontext.EmitFactoryOf(functionalValidateProgrammer_factory, props.Context.Emit)
99
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
102
100
  return f.NewCallExpression(
103
101
  nativefactories.IdentifierFactory.Access(props.Context.Emit, props.Expression, "map"),
104
102
  nil,
@@ -154,7 +152,7 @@ func (functionalValidateFunctionProgrammerNamespace) GetReturnTypeNode(props str
154
152
  if typ == nil {
155
153
  return nil
156
154
  }
157
- f := nativecontext.EmitFactoryOf(functionalValidateProgrammer_factory, props.Context.Emit)
155
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
158
156
  if props.Async {
159
157
  var inner *shimast.Node
160
158
  if typ.Kind == shimast.KindTypeReference {
@@ -189,7 +187,7 @@ func functionalValidateProgrammer_import_type(context nativecontext.ITypiaContex
189
187
  return importer.Type(props)
190
188
  }
191
189
  if str, ok := props.Name.(string); ok {
192
- f := nativecontext.EmitFactoryOf(functionalValidateProgrammer_factory, context.Emit)
190
+ f := nativecontext.NodeFactoryOf(context.Emit)
193
191
  return f.NewTypeReferenceNode(f.NewIdentifier(str), f.NewNodeList(props.Arguments))
194
192
  }
195
193
  return props.Name.(*shimast.Node)
@@ -101,7 +101,7 @@ func (functionalValidateParametersProgrammerNamespace) Write(props FunctionalVal
101
101
  Config: props.Config,
102
102
  Declaration: props.Declaration,
103
103
  })
104
- f := nativecontext.EmitFactoryOf(functionalValidateProgrammer_factory, props.Context.Emit)
104
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
105
105
  caller := functionalIsProgrammer_call(props.Context, props.Expression, props.Declaration)
106
106
  data := caller
107
107
  if output.Async {
@@ -138,7 +138,7 @@ func (functionalValidateParametersProgrammerNamespace) Write(props FunctionalVal
138
138
  }
139
139
 
140
140
  func (functionalValidateParametersProgrammerNamespace) Decompose(props FunctionalValidateParametersProgrammer_IDecomposeProps) FunctionalValidateParametersProgrammer_IDecomposeOutput {
141
- f := nativecontext.EmitFactoryOf(functionalValidateProgrammer_factory, props.Context.Emit)
141
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
142
142
  parameters := functionalIsProgrammer_parameterNodes(props.Declaration)
143
143
  resultName := functionalIsProgrammer_escapeDuplicate(functionalIsProgrammer_parameterNames(props.Declaration), "paramErrorResults")
144
144
  functions := make([]*shimast.Node, 0, len(parameters))
@@ -104,7 +104,7 @@ func (functionalValidateReturnProgrammerNamespace) Write(props FunctionalValidat
104
104
  Expression: props.Expression,
105
105
  Declaration: props.Declaration,
106
106
  })
107
- f := nativecontext.EmitFactoryOf(functionalValidateProgrammer_factory, props.Context.Emit)
107
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
108
108
  statements := append([]*shimast.Node{}, result.Functions...)
109
109
  statements = append(statements, f.NewReturnStatement(
110
110
  functionalIsProgrammer_function(
@@ -130,7 +130,7 @@ func (functionalValidateReturnProgrammerNamespace) Write(props FunctionalValidat
130
130
  }
131
131
 
132
132
  func (functionalValidateReturnProgrammerNamespace) Decompose(props FunctionalValidateReturnProgrammer_IDecomposeProps) FunctionalValidateReturnProgrammer_IDecomposeOutput {
133
- f := nativecontext.EmitFactoryOf(functionalValidateProgrammer_factory, props.Context.Emit)
133
+ f := nativecontext.NodeFactoryOf(props.Context.Emit)
134
134
  output := functionalinternal.FunctionalGeneralProgrammer.GetReturnType(functionalinternal.FunctionalGeneralProgrammer_IProps{
135
135
  Checker: props.Context.Checker,
136
136
  Declaration: props.Declaration,
@@ -33,8 +33,6 @@ type ClassifyJoiner_ObjectProps struct {
33
33
  Emit *shimprinter.EmitContext
34
34
  }
35
35
 
36
- var classifyJoiner_factory = shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
37
-
38
36
  // Object reconstructs an object value for plain.classify.
39
37
  //
40
38
  // For an anonymous / interface (literal) shape there is no class to
@@ -67,7 +65,7 @@ func (classifyJoinerNamespace) Object(props ClassifyJoiner_ObjectProps) *shimast
67
65
  Emit: props.Emit,
68
66
  })
69
67
  }
70
- f := nativecontext.EmitFactoryOf(classifyJoiner_factory, props.Emit)
68
+ f := nativecontext.NodeFactoryOf(props.Emit)
71
69
 
72
70
  regular := []IExpressionEntry{}
73
71
  dynamic := []IExpressionEntry{}
@@ -70,10 +70,8 @@ type CloneJoiner_ArrayProps struct {
70
70
  Emit *shimprinter.EmitContext
71
71
  }
72
72
 
73
- var cloneJoiner_factory = shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
74
-
75
73
  func (cloneJoinerNamespace) Object(props CloneJoiner_ObjectProps) *shimast.Node {
76
- f := nativecontext.EmitFactoryOf(cloneJoiner_factory, props.Emit)
74
+ f := nativecontext.NodeFactoryOf(props.Emit)
77
75
  if len(props.Entries) == 0 {
78
76
  return f.NewIdentifier("{}")
79
77
  }
@@ -192,7 +190,7 @@ func cloneJoiner_optional_condition(entry IExpressionEntry, input *shimast.Expre
192
190
  if key == nil {
193
191
  return nativefactories.ExpressionFactory.IsRequired(entry.Input, emit...)
194
192
  }
195
- f := nativecontext.EmitFactoryOf(cloneJoiner_factory, emit...)
193
+ f := nativecontext.NodeFactoryOf(emit...)
196
194
  return f.NewBinaryExpression(
197
195
  nil,
198
196
  nativefactories.ExpressionFactory.IsRequired(entry.Input, emit...),
@@ -209,7 +207,7 @@ func cloneJoiner_optional_condition(entry IExpressionEntry, input *shimast.Expre
209
207
  }
210
208
 
211
209
  func (cloneJoinerNamespace) Tuple(props CloneJoiner_TupleProps) *shimast.Node {
212
- f := nativecontext.EmitFactoryOf(cloneJoiner_factory, props.Emit)
210
+ f := nativecontext.NodeFactoryOf(props.Emit)
213
211
  elements := make([]*shimast.Node, 0, len(props.Elements)+1)
214
212
  for _, elem := range props.Elements {
215
213
  elements = append(elements, elem)
@@ -233,7 +231,7 @@ func (cloneJoinerNamespace) Tuple(props CloneJoiner_TupleProps) *shimast.Node {
233
231
  // for `[string, number?]` stays `["a"]` (length 1) and round-trips under
234
232
  // `compare.equals`, while a present optional keeps its value.
235
233
  func (cloneJoinerNamespace) OptionalTupleElement(props CloneJoiner_OptionalElementProps) *shimast.Node {
236
- f := nativecontext.EmitFactoryOf(cloneJoiner_factory, props.Emit)
234
+ f := nativecontext.NodeFactoryOf(props.Emit)
237
235
  condition := f.NewBinaryExpression(
238
236
  nil,
239
237
  nativefactories.ExpressionFactory.Number(props.Index, props.Emit),
@@ -252,9 +250,9 @@ func (cloneJoinerNamespace) OptionalTupleElement(props CloneJoiner_OptionalEleme
252
250
  }
253
251
 
254
252
  func (cloneJoinerNamespace) Array(props CloneJoiner_ArrayProps) *shimast.Node {
255
- f := nativecontext.EmitFactoryOf(cloneJoiner_factory, props.Emit)
253
+ f := nativecontext.NodeFactoryOf(props.Emit)
256
254
  return f.NewCallExpression(
257
- nativefactories.IdentifierFactory.Access(nil, props.Input, "map"),
255
+ nativefactories.IdentifierFactory.Access(props.Emit, props.Input, "map"),
258
256
  nil,
259
257
  nil,
260
258
  f.NewNodeList([]*shimast.Node{props.Arrow}),
@@ -263,18 +261,14 @@ func (cloneJoinerNamespace) Array(props CloneJoiner_ArrayProps) *shimast.Node {
263
261
  }
264
262
 
265
263
  func cloneJoiner_regular_skip(regular []IExpressionEntry, emit ...*shimprinter.EmitContext) *shimast.Node {
266
- f := nativecontext.EmitFactoryOf(cloneJoiner_factory, emit...)
264
+ f := nativecontext.NodeFactoryOf(emit...)
267
265
  elements := make([]*shimast.Node, 0, len(regular))
268
266
  for _, entry := range regular {
269
267
  elements = append(elements, f.NewStringLiteral(*entry.Key.GetSoleLiteral(), shimast.TokenFlagsNone))
270
268
  }
271
269
  return f.NewIfStatement(
272
270
  f.NewCallExpression(
273
- nativefactories.IdentifierFactory.Access(
274
- nil,
275
- f.NewArrayLiteralExpression(f.NewNodeList(elements), false),
276
- "some",
277
- ),
271
+ f.NewPropertyAccessExpression(f.NewArrayLiteralExpression(f.NewNodeList(elements), false), nil, f.NewIdentifier("some"), shimast.NodeFlagsNone),
278
272
  nil,
279
273
  nil,
280
274
  f.NewNodeList([]*shimast.Node{
@@ -55,8 +55,6 @@ type functionProgrammer_union struct {
55
55
  value *shimast.Node
56
56
  }
57
57
 
58
- var functionProgrammer_factory = shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
59
-
60
58
  // NewFunctionProgrammer returns an empty FunctionProgrammer labeled with the
61
59
  // typia method text and bound to an optional emit context.
62
60
  //
@@ -247,7 +245,7 @@ func (p *FunctionProgrammer) EmplaceVariable(name string, value *shimast.Express
247
245
  p.variableOrder_ = append(p.variableOrder_, name)
248
246
  }
249
247
  p.variables_[name] = value
250
- return nativecontext.EmitFactoryOf(functionProgrammer_factory, p.emit_).NewIdentifier(name)
248
+ return nativecontext.NodeFactoryOf(p.emit_).NewIdentifier(name)
251
249
  }
252
250
 
253
251
  // EmplaceVariableByKey returns an identifier for the variable registered under
@@ -260,7 +258,7 @@ func (p *FunctionProgrammer) EmplaceVariable(name string, value *shimast.Express
260
258
  func (p *FunctionProgrammer) EmplaceVariableByKey(prefix string, key string, factory func(name string) *shimast.Expression) *shimast.Node {
261
259
  compound := prefix + "::" + key
262
260
  if name, ok := p.variableKeys_[compound]; ok {
263
- return nativecontext.EmitFactoryOf(functionProgrammer_factory, p.emit_).NewIdentifier(name)
261
+ return nativecontext.NodeFactoryOf(p.emit_).NewIdentifier(name)
264
262
  }
265
263
  name := p.reserveGeneratedName(prefix)
266
264
  p.variableKeys_[compound] = name
@@ -268,7 +266,7 @@ func (p *FunctionProgrammer) EmplaceVariableByKey(prefix string, key string, fac
268
266
  p.variableOrder_ = append(p.variableOrder_, name)
269
267
  }
270
268
  p.variables_[name] = factory(name)
271
- return nativecontext.EmitFactoryOf(functionProgrammer_factory, p.emit_).NewIdentifier(name)
269
+ return nativecontext.NodeFactoryOf(p.emit_).NewIdentifier(name)
272
270
  }
273
271
 
274
272
  func (p *FunctionProgrammer) reserveGeneratedName(prefix string) string {
@@ -57,10 +57,8 @@ type NotationJoiner_ArrayProps struct {
57
57
  Emit *shimprinter.EmitContext
58
58
  }
59
59
 
60
- var notationJoiner_factory = shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
61
-
62
60
  func (notationJoinerNamespace) Object(props NotationJoiner_ObjectProps) *shimast.Node {
63
- f := nativecontext.EmitFactoryOf(notationJoiner_factory, props.Emit)
61
+ f := nativecontext.NodeFactoryOf(props.Emit)
64
62
  if len(props.Entries) == 0 {
65
63
  return f.NewIdentifier("{}")
66
64
  }
@@ -215,7 +213,7 @@ func (notationJoinerNamespace) Object(props NotationJoiner_ObjectProps) *shimast
215
213
  }
216
214
 
217
215
  func (notationJoinerNamespace) Tuple(props NotationJoiner_TupleProps) *shimast.Node {
218
- f := nativecontext.EmitFactoryOf(notationJoiner_factory, props.Emit)
216
+ f := nativecontext.NodeFactoryOf(props.Emit)
219
217
  elements := make([]*shimast.Node, 0, len(props.Elements)+1)
220
218
  for _, elem := range props.Elements {
221
219
  elements = append(elements, elem)
@@ -233,9 +231,9 @@ func (notationJoinerNamespace) Tuple(props NotationJoiner_TupleProps) *shimast.N
233
231
  }
234
232
 
235
233
  func (notationJoinerNamespace) Array(props NotationJoiner_ArrayProps) *shimast.Node {
236
- f := nativecontext.EmitFactoryOf(notationJoiner_factory, props.Emit)
234
+ f := nativecontext.NodeFactoryOf(props.Emit)
237
235
  return f.NewCallExpression(
238
- nativefactories.IdentifierFactory.Access(nil, props.Input, "map"),
236
+ nativefactories.IdentifierFactory.Access(props.Emit, props.Input, "map"),
239
237
  nil,
240
238
  nil,
241
239
  f.NewNodeList([]*shimast.Node{props.Arrow}),
@@ -244,18 +242,14 @@ func (notationJoinerNamespace) Array(props NotationJoiner_ArrayProps) *shimast.N
244
242
  }
245
243
 
246
244
  func notationJoiner_regular_skip(regular []IExpressionEntry, emit ...*shimprinter.EmitContext) *shimast.Node {
247
- f := nativecontext.EmitFactoryOf(notationJoiner_factory, emit...)
245
+ f := nativecontext.NodeFactoryOf(emit...)
248
246
  elements := make([]*shimast.Node, 0, len(regular))
249
247
  for _, entry := range regular {
250
248
  elements = append(elements, f.NewStringLiteral(*entry.Key.GetSoleLiteral(), shimast.TokenFlagsNone))
251
249
  }
252
250
  return f.NewIfStatement(
253
251
  f.NewCallExpression(
254
- nativefactories.IdentifierFactory.Access(
255
- nil,
256
- f.NewArrayLiteralExpression(f.NewNodeList(elements), false),
257
- "some",
258
- ),
252
+ f.NewPropertyAccessExpression(f.NewArrayLiteralExpression(f.NewNodeList(elements), false), nil, f.NewIdentifier("some"), shimast.NodeFlagsNone),
259
253
  nil,
260
254
  nil,
261
255
  f.NewNodeList([]*shimast.Node{
@@ -52,10 +52,8 @@ type PruneJoiner_TupleProps struct {
52
52
  Emit *shimprinter.EmitContext
53
53
  }
54
54
 
55
- var pruneJoiner_factory = shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
56
-
57
55
  func (pruneJoinerNamespace) Object(props PruneJoiner_ObjectProps) *shimast.Node {
58
- f := nativecontext.EmitFactoryOf(pruneJoiner_factory, props.Emit)
56
+ f := nativecontext.NodeFactoryOf(props.Emit)
59
57
  regular := []IExpressionEntry{}
60
58
  dynamic := []IExpressionEntry{}
61
59
  for _, entry := range props.Entries {
@@ -88,9 +86,9 @@ func (pruneJoinerNamespace) Object(props PruneJoiner_ObjectProps) *shimast.Node
88
86
  }
89
87
 
90
88
  func (pruneJoinerNamespace) Array(props PruneJoiner_ArrayProps) *shimast.Node {
91
- f := nativecontext.EmitFactoryOf(pruneJoiner_factory, props.Emit)
89
+ f := nativecontext.NodeFactoryOf(props.Emit)
92
90
  return f.NewCallExpression(
93
- nativefactories.IdentifierFactory.Access(nil, props.Input, "forEach"),
91
+ nativefactories.IdentifierFactory.Access(props.Emit, props.Input, "forEach"),
94
92
  nil,
95
93
  nil,
96
94
  f.NewNodeList([]*shimast.Node{props.Arrow}),
@@ -99,7 +97,7 @@ func (pruneJoinerNamespace) Array(props PruneJoiner_ArrayProps) *shimast.Node {
99
97
  }
100
98
 
101
99
  func (pruneJoinerNamespace) Tuple(props PruneJoiner_TupleProps) *shimast.Node {
102
- f := nativecontext.EmitFactoryOf(pruneJoiner_factory, props.Emit)
100
+ f := nativecontext.NodeFactoryOf(props.Emit)
103
101
  entire := make([]*shimast.Node, 0, len(props.Elements)+1)
104
102
  for _, elem := range props.Elements {
105
103
  entire = append(entire, elem)
@@ -118,7 +116,7 @@ func (pruneJoinerNamespace) Tuple(props PruneJoiner_TupleProps) *shimast.Node {
118
116
  }
119
117
 
120
118
  func pruneJoiner_statements(node *shimast.Node, emit ...*shimprinter.EmitContext) []*shimast.Node {
121
- f := nativecontext.EmitFactoryOf(pruneJoiner_factory, emit...)
119
+ f := nativecontext.NodeFactoryOf(emit...)
122
120
  if node != nil && node.Kind == shimast.KindBlock {
123
121
  return append([]*shimast.Node{}, node.Statements()...)
124
122
  }
@@ -133,7 +131,7 @@ type pruneJoiner_iterate_dynamic_propertiesProps struct {
133
131
  }
134
132
 
135
133
  func pruneJoiner_iterate_dynamic_properties(props pruneJoiner_iterate_dynamic_propertiesProps) *shimast.Node {
136
- f := nativecontext.EmitFactoryOf(pruneJoiner_factory, props.Emit)
134
+ f := nativecontext.NodeFactoryOf(props.Emit)
137
135
  statements := []*shimast.Node{
138
136
  f.NewIfStatement(
139
137
  f.NewBinaryExpression(
@@ -190,7 +188,7 @@ func pruneJoiner_iterate_dynamic_properties(props pruneJoiner_iterate_dynamic_pr
190
188
  }
191
189
  return f.NewCallExpression(
192
190
  nativefactories.IdentifierFactory.Access(
193
- nil,
191
+ props.Emit,
194
192
  f.NewCallExpression(
195
193
  f.NewIdentifier("Object.entries"),
196
194
  nil,
@@ -220,7 +218,7 @@ func pruneJoiner_iterate_dynamic_properties(props pruneJoiner_iterate_dynamic_pr
220
218
  }
221
219
 
222
220
  func pruneJoiner_binding_pattern(emit ...*shimprinter.EmitContext) *shimast.Node {
223
- f := nativecontext.EmitFactoryOf(pruneJoiner_factory, emit...)
221
+ f := nativecontext.NodeFactoryOf(emit...)
224
222
  return f.NewBindingPattern(
225
223
  shimast.KindArrayBindingPattern,
226
224
  f.NewNodeList([]*shimast.Node{
@@ -231,7 +229,7 @@ func pruneJoiner_binding_pattern(emit ...*shimprinter.EmitContext) *shimast.Node
231
229
  }
232
230
 
233
231
  func pruneJoiner_prune_object_properties(object *nativemetadata.MetadataObjectType, emit ...*shimprinter.EmitContext) *shimast.Node {
234
- f := nativecontext.EmitFactoryOf(pruneJoiner_factory, emit...)
232
+ f := nativecontext.NodeFactoryOf(emit...)
235
233
  input := f.NewIdentifier("input")
236
234
  key := f.NewIdentifier("key")
237
235
  conditions := []*shimast.Node{}
@@ -296,7 +294,7 @@ func pruneJoiner_prune_object_properties(object *nativemetadata.MetadataObjectTy
296
294
  }
297
295
 
298
296
  func pruneJoiner_reduce(expressions []*shimast.Node, operator shimast.Kind, emit ...*shimprinter.EmitContext) *shimast.Node {
299
- f := nativecontext.EmitFactoryOf(pruneJoiner_factory, emit...)
297
+ f := nativecontext.NodeFactoryOf(emit...)
300
298
  output := expressions[0]
301
299
  for _, next := range expressions[1:] {
302
300
  output = f.NewBinaryExpression(
@@ -113,10 +113,8 @@ type randomJoiner_DynamicPropertyProps struct {
113
113
  Emit *shimprinter.EmitContext
114
114
  }
115
115
 
116
- var randomJoiner_factory = shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
117
-
118
116
  func (randomJoinerNamespace) Array(props RandomJoiner_ArrayProps) *shimast.Node {
119
- f := nativecontext.EmitFactoryOf(randomJoiner_factory, props.Emit)
117
+ f := nativecontext.NodeFactoryOf(props.Emit)
120
118
  properties := []*shimast.Node{}
121
119
  if props.Schema != nil {
122
120
  keys := make([]string, 0, len(props.Schema))
@@ -728,7 +726,7 @@ func randomJoiner_is_recursive_metadata(
728
726
  }
729
727
 
730
728
  func (randomJoinerNamespace) Tuple(props RandomJoiner_TupleProps) *shimast.Node {
731
- f := nativecontext.EmitFactoryOf(randomJoiner_factory, props.Emit)
729
+ f := nativecontext.NodeFactoryOf(props.Emit)
732
730
  elements := make([]*shimast.Node, 0, len(props.Elements))
733
731
  for _, elem := range props.Elements {
734
732
  if elem != nil && elem.Rest != nil {
@@ -763,7 +761,7 @@ func (randomJoinerNamespace) Tuple(props RandomJoiner_TupleProps) *shimast.Node
763
761
  }
764
762
 
765
763
  func (randomJoinerNamespace) Object(props RandomJoiner_ObjectProps) *shimast.Node {
766
- f := nativecontext.EmitFactoryOf(randomJoiner_factory, props.Emit)
764
+ f := nativecontext.NodeFactoryOf(props.Emit)
767
765
  if len(props.Object.Properties) == 0 {
768
766
  return nativefactories.LiteralFactory.Write(map[string]any{}, props.Emit)
769
767
  }
@@ -822,7 +820,7 @@ func (randomJoinerNamespace) Object(props RandomJoiner_ObjectProps) *shimast.Nod
822
820
  }
823
821
 
824
822
  func randomJoiner_dynamicProperty(props randomJoiner_DynamicPropertyProps) *shimast.Node {
825
- f := nativecontext.EmitFactoryOf(randomJoiner_factory, props.Emit)
823
+ f := nativecontext.NodeFactoryOf(props.Emit)
826
824
  tuple := nativemetadata.MetadataTuple_create(nativemetadata.MetadataTuple{
827
825
  Type: nativemetadata.MetadataTupleType_create(nativemetadata.MetadataTupleType{
828
826
  Name: fmt.Sprintf("[%s, %s]", props.Property.Key.GetName(), props.Property.Value.GetName()),
@@ -848,7 +846,7 @@ func randomJoiner_dynamicProperty(props randomJoiner_DynamicPropertyProps) *shim
848
846
  metadata := nativemetadata.MetadataSchema_initialize()
849
847
  metadata.Arrays = []*nativemetadata.MetadataArray{array}
850
848
  return f.NewCallExpression(
851
- nativefactories.IdentifierFactory.Access(nil, f.NewIdentifier("Object"), "fromEntries"),
849
+ nativefactories.IdentifierFactory.Access(props.Emit, f.NewIdentifier("Object"), "fromEntries"),
852
850
  nil,
853
851
  nil,
854
852
  f.NewNodeList([]*shimast.Node{