@shaclmate/compiler 4.0.7 → 4.0.9

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 (306) hide show
  1. package/dist/Compiler.d.ts +1 -4
  2. package/dist/Compiler.js +1 -5
  3. package/dist/ShapesGraphToAstTransformer.d.ts +2 -11
  4. package/dist/ShapesGraphToAstTransformer.js +25 -27
  5. package/dist/_ShapesGraphToAstTransformer/defaultNodeShapeNodeKinds.d.ts +3 -0
  6. package/dist/_ShapesGraphToAstTransformer/defaultNodeShapeNodeKinds.js +5 -0
  7. package/dist/_ShapesGraphToAstTransformer/shapeAstTypeName.d.ts +4 -0
  8. package/dist/_ShapesGraphToAstTransformer/shapeAstTypeName.js +27 -0
  9. package/dist/_ShapesGraphToAstTransformer/transformPropertyShapeToAstObjectTypeProperty.js +74 -19
  10. package/dist/_ShapesGraphToAstTransformer/transformShapeToAstCompoundType.d.ts +1 -1
  11. package/dist/_ShapesGraphToAstTransformer/transformShapeToAstCompoundType.js +45 -91
  12. package/dist/_ShapesGraphToAstTransformer/transformShapeToAstListType.d.ts +11 -0
  13. package/dist/_ShapesGraphToAstTransformer/transformShapeToAstListType.js +146 -0
  14. package/dist/_ShapesGraphToAstTransformer/transformShapeToAstObjectType.d.ts +7 -0
  15. package/dist/_ShapesGraphToAstTransformer/transformShapeToAstObjectType.js +182 -0
  16. package/dist/_ShapesGraphToAstTransformer/transformShapeToAstTermType.js +9 -7
  17. package/dist/_ShapesGraphToAstTransformer/transformShapeToAstType.d.ts +3 -5
  18. package/dist/_ShapesGraphToAstTransformer/transformShapeToAstType.js +33 -10
  19. package/dist/ast/AbstractCompoundType.d.ts +26 -8
  20. package/dist/ast/AbstractCompoundType.js +84 -16
  21. package/dist/ast/AbstractContainerType.d.ts +2 -4
  22. package/dist/ast/AbstractContainerType.js +3 -4
  23. package/dist/ast/AbstractLazyObjectType.d.ts +1 -0
  24. package/dist/ast/AbstractLazyObjectType.js +3 -0
  25. package/dist/ast/AbstractTermType.d.ts +1 -0
  26. package/dist/ast/AbstractTermType.js +1 -0
  27. package/dist/ast/AbstractType.d.ts +16 -1
  28. package/dist/ast/AbstractType.js +11 -1
  29. package/dist/ast/Ast.d.ts +4 -4
  30. package/dist/ast/BlankNodeType.d.ts +1 -1
  31. package/dist/ast/DefaultValueType.d.ts +1 -2
  32. package/dist/ast/DefaultValueType.js +2 -0
  33. package/dist/ast/IdentifierType.d.ts +1 -1
  34. package/dist/ast/IntersectionType.d.ts +7 -2
  35. package/dist/ast/IntersectionType.js +8 -0
  36. package/dist/ast/ListType.d.ts +2 -9
  37. package/dist/ast/ListType.js +1 -9
  38. package/dist/ast/LiteralType.d.ts +1 -0
  39. package/dist/ast/LiteralType.js +26 -0
  40. package/dist/ast/ObjectCompoundType.d.ts +12 -0
  41. package/dist/ast/ObjectCompoundType.js +88 -0
  42. package/dist/ast/ObjectIntersectionType.d.ts +3 -7
  43. package/dist/ast/ObjectIntersectionType.js +1 -7
  44. package/dist/ast/ObjectType.d.ts +14 -31
  45. package/dist/ast/ObjectType.js +41 -73
  46. package/dist/ast/ObjectUnionType.d.ts +3 -7
  47. package/dist/ast/ObjectUnionType.js +1 -7
  48. package/dist/ast/OptionType.d.ts +1 -2
  49. package/dist/ast/OptionType.js +2 -0
  50. package/dist/ast/SetType.d.ts +1 -2
  51. package/dist/ast/SetType.js +2 -0
  52. package/dist/ast/Type.d.ts +1 -4
  53. package/dist/ast/Type.js +0 -6
  54. package/dist/ast/UnionType.d.ts +11 -6
  55. package/dist/ast/UnionType.js +6 -4
  56. package/dist/ast/index.d.ts +1 -2
  57. package/dist/ast/index.js +1 -2
  58. package/dist/generators/json/AstJsonGenerator.js +16 -14
  59. package/dist/generators/ts/AbstractCollectionType.js +8 -10
  60. package/dist/generators/ts/AbstractContainerType.d.ts +8 -3
  61. package/dist/generators/ts/AbstractContainerType.js +9 -2
  62. package/dist/generators/ts/AbstractDateType.d.ts +2 -2
  63. package/dist/generators/ts/AbstractDateType.js +2 -2
  64. package/dist/generators/ts/AbstractIdentifierType.d.ts +1 -1
  65. package/dist/generators/ts/AbstractIdentifierType.js +1 -1
  66. package/dist/generators/ts/AbstractLazyObjectType.d.ts +11 -8
  67. package/dist/generators/ts/AbstractLazyObjectType.js +19 -14
  68. package/dist/generators/ts/AbstractNamedUnionType.d.ts +33 -0
  69. package/dist/generators/ts/AbstractNamedUnionType.js +193 -0
  70. package/dist/generators/ts/AbstractNumericType.d.ts +2 -2
  71. package/dist/generators/ts/AbstractNumericType.js +3 -3
  72. package/dist/generators/ts/AbstractTermType.d.ts +7 -4
  73. package/dist/generators/ts/AbstractTermType.js +7 -4
  74. package/dist/generators/ts/AbstractType.d.ts +29 -14
  75. package/dist/generators/ts/AbstractUnionType.d.ts +80 -0
  76. package/dist/generators/ts/AbstractUnionType.js +514 -0
  77. package/dist/generators/ts/AnonymousUnionType.d.ts +26 -0
  78. package/dist/generators/ts/AnonymousUnionType.js +56 -0
  79. package/dist/generators/ts/BigDecimalType.d.ts +3 -3
  80. package/dist/generators/ts/BigDecimalType.js +3 -3
  81. package/dist/generators/ts/BlankNodeType.d.ts +1 -1
  82. package/dist/generators/ts/BlankNodeType.js +1 -1
  83. package/dist/generators/ts/BooleanType.d.ts +2 -2
  84. package/dist/generators/ts/BooleanType.js +2 -2
  85. package/dist/generators/ts/DefaultValueType.d.ts +4 -4
  86. package/dist/generators/ts/DefaultValueType.js +14 -13
  87. package/dist/generators/ts/IdentifierType.d.ts +1 -1
  88. package/dist/generators/ts/IdentifierType.js +1 -1
  89. package/dist/generators/ts/IriType.d.ts +1 -1
  90. package/dist/generators/ts/IriType.js +1 -1
  91. package/dist/generators/ts/LazyObjectOptionType.d.ts +1 -1
  92. package/dist/generators/ts/LazyObjectOptionType.js +9 -9
  93. package/dist/generators/ts/LazyObjectSetType.d.ts +1 -1
  94. package/dist/generators/ts/LazyObjectSetType.js +7 -7
  95. package/dist/generators/ts/LazyObjectType.d.ts +1 -1
  96. package/dist/generators/ts/LazyObjectType.js +7 -8
  97. package/dist/generators/ts/ListType.d.ts +8 -7
  98. package/dist/generators/ts/ListType.js +14 -13
  99. package/dist/generators/ts/LiteralType.d.ts +1 -1
  100. package/dist/generators/ts/LiteralType.js +2 -2
  101. package/dist/generators/ts/NamedObjectUnionType.d.ts +35 -0
  102. package/dist/generators/ts/NamedObjectUnionType.js +221 -0
  103. package/dist/generators/ts/NamedUnionType.d.ts +11 -0
  104. package/dist/generators/ts/NamedUnionType.js +13 -0
  105. package/dist/generators/ts/ObjectType.d.ts +34 -25
  106. package/dist/generators/ts/ObjectType.js +62 -52
  107. package/dist/generators/ts/OptionType.d.ts +4 -4
  108. package/dist/generators/ts/OptionType.js +10 -10
  109. package/dist/generators/ts/SetType.d.ts +4 -4
  110. package/dist/generators/ts/SetType.js +13 -11
  111. package/dist/generators/ts/StringType.d.ts +2 -2
  112. package/dist/generators/ts/StringType.js +2 -2
  113. package/dist/generators/ts/TermType.d.ts +1 -1
  114. package/dist/generators/ts/TermType.js +2 -2
  115. package/dist/generators/ts/TsGenerator.js +23 -15
  116. package/dist/generators/ts/Type.d.ts +4 -3
  117. package/dist/generators/ts/TypeFactory.d.ts +7 -5
  118. package/dist/generators/ts/TypeFactory.js +117 -90
  119. package/dist/generators/ts/ZodGenerator.js +6 -6
  120. package/dist/generators/ts/_ObjectType/AbstractProperty.d.ts +3 -3
  121. package/dist/generators/ts/_ObjectType/{TypeDiscriminantProperty.d.ts → DiscriminantProperty.d.ts} +14 -14
  122. package/dist/generators/ts/_ObjectType/{TypeDiscriminantProperty.js → DiscriminantProperty.js} +10 -10
  123. package/dist/generators/ts/_ObjectType/IdentifierPrefixProperty.d.ts +2 -2
  124. package/dist/generators/ts/_ObjectType/IdentifierPrefixProperty.js +2 -2
  125. package/dist/generators/ts/_ObjectType/IdentifierProperty.d.ts +2 -2
  126. package/dist/generators/ts/_ObjectType/IdentifierProperty.js +7 -4
  127. package/dist/generators/ts/_ObjectType/ObjectType_classDeclaration.js +8 -8
  128. package/dist/generators/ts/_ObjectType/ObjectType_focusSparqlConstructTriplesFunctionDeclaration.d.ts +5 -0
  129. package/dist/generators/ts/_ObjectType/{ObjectType_sparqlConstructTriplesFunctionDeclaration.js → ObjectType_focusSparqlConstructTriplesFunctionDeclaration.js} +6 -5
  130. package/dist/generators/ts/_ObjectType/ObjectType_focusSparqlWherePatternsFunctionDeclaration.d.ts +5 -0
  131. package/dist/generators/ts/_ObjectType/{ObjectType_sparqlWherePatternsFunctionDeclarations.js → ObjectType_focusSparqlWherePatternsFunctionDeclaration.js} +5 -5
  132. package/dist/generators/ts/_ObjectType/ObjectType_fromJsonFunctionDeclaration.d.ts +5 -0
  133. package/dist/generators/ts/_ObjectType/ObjectType_fromJsonFunctionDeclaration.js +20 -0
  134. package/dist/generators/ts/_ObjectType/ObjectType_fromRdfResourceFunctionDeclaration.d.ts +5 -0
  135. package/dist/generators/ts/_ObjectType/{ObjectType_fromRdfFunctionDeclaration.js → ObjectType_fromRdfResourceFunctionDeclaration.js} +6 -7
  136. package/dist/generators/ts/_ObjectType/ObjectType_fromRdfResourceValuesFunctionDeclaration.d.ts +5 -0
  137. package/dist/generators/ts/_ObjectType/ObjectType_fromRdfResourceValuesFunctionDeclaration.js +20 -0
  138. package/dist/generators/ts/_ObjectType/ObjectType_isTypeFunctionDeclaration.js +2 -2
  139. package/dist/generators/ts/_ObjectType/ObjectType_parseJsonFunctionDeclaration.d.ts +5 -0
  140. package/dist/generators/ts/_ObjectType/ObjectType_parseJsonFunctionDeclaration.js +19 -0
  141. package/dist/generators/ts/_ObjectType/ObjectType_propertiesFromJsonFunctionDeclaration.d.ts +5 -0
  142. package/dist/generators/ts/_ObjectType/ObjectType_propertiesFromJsonFunctionDeclaration.js +38 -0
  143. package/dist/generators/ts/_ObjectType/ObjectType_propertiesFromRdfResourceFunctionDeclaration.d.ts +5 -0
  144. package/dist/generators/ts/_ObjectType/{ObjectType_propertiesFromRdfFunctionDeclaration.js → ObjectType_propertiesFromRdfResourceFunctionDeclaration.js} +16 -15
  145. package/dist/generators/ts/_ObjectType/ObjectType_schemaVariableStatement.js +1 -2
  146. package/dist/generators/ts/_ObjectType/ObjectType_sparqlConstructQueryFunctionDeclaration.js +2 -2
  147. package/dist/generators/ts/_ObjectType/ObjectType_toRdfResourceFunctionOrMethodDeclaration.d.ts +5 -0
  148. package/dist/generators/ts/_ObjectType/{ObjectType_toRdfFunctionOrMethodDeclaration.js → ObjectType_toRdfResourceFunctionOrMethodDeclaration.js} +10 -8
  149. package/dist/generators/ts/_ObjectType/ObjectType_valueSparqlConstructTriplesFunctionDeclaration.d.ts +5 -0
  150. package/dist/generators/ts/_ObjectType/ObjectType_valueSparqlConstructTriplesFunctionDeclaration.js +13 -0
  151. package/dist/generators/ts/_ObjectType/ObjectType_valueSparqlWherePatternsFunctionDeclaration.d.ts +5 -0
  152. package/dist/generators/ts/_ObjectType/ObjectType_valueSparqlWherePatternsFunctionDeclaration.js +15 -0
  153. package/dist/generators/ts/_ObjectType/Property.d.ts +2 -2
  154. package/dist/generators/ts/_ObjectType/ShaclProperty.d.ts +2 -2
  155. package/dist/generators/ts/_ObjectType/ShaclProperty.js +6 -6
  156. package/dist/generators/ts/_snippets/snippets_FocusSparqlConstructTriplesFunction.d.ts +2 -0
  157. package/dist/generators/ts/_snippets/snippets_FocusSparqlConstructTriplesFunction.js +12 -0
  158. package/dist/generators/ts/_snippets/snippets_FocusSparqlWherePatternsFunction.d.ts +2 -0
  159. package/dist/generators/ts/_snippets/snippets_FocusSparqlWherePatternsFunction.js +14 -0
  160. package/dist/generators/ts/_snippets/snippets_FromRdfResourceFunction.d.ts +2 -0
  161. package/dist/generators/ts/_snippets/snippets_FromRdfResourceFunction.js +15 -0
  162. package/dist/generators/ts/_snippets/snippets_FromRdfResourceValuesFunction.d.ts +2 -0
  163. package/dist/generators/ts/_snippets/snippets_FromRdfResourceValuesFunction.js +17 -0
  164. package/dist/generators/ts/_snippets/snippets_PropertiesFromRdfResourceFunction.d.ts +2 -0
  165. package/dist/generators/ts/_snippets/snippets_PropertiesFromRdfResourceFunction.js +15 -0
  166. package/dist/generators/ts/_snippets/snippets_PropertyPath.d.ts +5 -0
  167. package/dist/generators/ts/_snippets/snippets_PropertyPath.js +35 -0
  168. package/dist/generators/ts/_snippets/snippets_ShaclPropertySchema.js +2 -2
  169. package/dist/generators/ts/_snippets/snippets_ToRdfResourceFunction.d.ts +2 -0
  170. package/dist/generators/ts/_snippets/snippets_ToRdfResourceFunction.js +7 -0
  171. package/dist/generators/ts/_snippets/snippets_ToRdfResourceValuesFunction.d.ts +2 -0
  172. package/dist/generators/ts/_snippets/snippets_ToRdfResourceValuesFunction.js +16 -0
  173. package/dist/generators/ts/_snippets/snippets_ValueSparqlConstructTriplesFunction.d.ts +2 -0
  174. package/dist/generators/ts/_snippets/snippets_ValueSparqlConstructTriplesFunction.js +13 -0
  175. package/dist/generators/ts/_snippets/snippets_ValueSparqlWherePatternsFunction.d.ts +2 -0
  176. package/dist/generators/ts/_snippets/snippets_ValueSparqlWherePatternsFunction.js +16 -0
  177. package/dist/generators/ts/_snippets/snippets_bigDecimalSparqlWherePatterns.js +2 -2
  178. package/dist/generators/ts/_snippets/snippets_blankNodeSparqlWherePatterns.js +2 -2
  179. package/dist/generators/ts/_snippets/snippets_booleanEquals.js +1 -1
  180. package/dist/generators/ts/_snippets/snippets_booleanSparqlWherePatterns.js +2 -2
  181. package/dist/generators/ts/_snippets/snippets_dateSparqlWherePatterns.js +2 -2
  182. package/dist/generators/ts/_snippets/snippets_defaultValueSparqlWherePatterns.js +2 -2
  183. package/dist/generators/ts/_snippets/snippets_fromRdfLanguageIn.js +1 -1
  184. package/dist/generators/ts/_snippets/snippets_identifierSparqlWherePatterns.js +2 -2
  185. package/dist/generators/ts/_snippets/snippets_iriSparqlWherePatterns.js +2 -2
  186. package/dist/generators/ts/_snippets/snippets_listSparqlConstructTriples.js +2 -2
  187. package/dist/generators/ts/_snippets/snippets_listSparqlWherePatterns.js +2 -2
  188. package/dist/generators/ts/_snippets/snippets_literalSparqlWherePatterns.js +2 -2
  189. package/dist/generators/ts/_snippets/snippets_maybeSparqlConstructTriples.js +2 -2
  190. package/dist/generators/ts/_snippets/snippets_maybeSparqlWherePatterns.js +2 -2
  191. package/dist/generators/ts/_snippets/snippets_numericSparqlWherePatterns.js +2 -3
  192. package/dist/generators/ts/_snippets/snippets_setSparqlConstructTriples.js +2 -2
  193. package/dist/generators/ts/_snippets/snippets_setSparqlWherePatterns.js +2 -2
  194. package/dist/generators/ts/_snippets/snippets_shaclPropertySparqlConstructTriples.js +4 -3
  195. package/dist/generators/ts/_snippets/snippets_shaclPropertySparqlWherePatterns.js +4 -3
  196. package/dist/generators/ts/_snippets/snippets_sparqlPropertyPath.js +3 -2
  197. package/dist/generators/ts/_snippets/snippets_stringSparqlWherePatterns.js +2 -2
  198. package/dist/generators/ts/_snippets/snippets_termSparqlWherePatterns.js +2 -2
  199. package/dist/generators/ts/graphqlSchemaVariableStatement.d.ts +2 -2
  200. package/dist/generators/ts/graphqlSchemaVariableStatement.js +4 -4
  201. package/dist/generators/ts/imports.d.ts +1 -1
  202. package/dist/generators/ts/imports.js +1 -1
  203. package/dist/generators/ts/objectSetDeclarations.d.ts +3 -3
  204. package/dist/generators/ts/objectSetDeclarations.js +15 -15
  205. package/dist/generators/ts/objectSetInterfaceDeclaration.d.ts +3 -3
  206. package/dist/generators/ts/objectSetInterfaceDeclaration.js +2 -2
  207. package/dist/generators/ts/rdfjsDatasetObjectSetClassDeclaration.d.ts +3 -3
  208. package/dist/generators/ts/rdfjsDatasetObjectSetClassDeclaration.js +16 -17
  209. package/dist/generators/ts/snippets.d.ts +10 -6
  210. package/dist/generators/ts/snippets.js +20 -12
  211. package/dist/generators/ts/sparqlObjectSetClassDeclaration.d.ts +3 -3
  212. package/dist/generators/ts/sparqlObjectSetClassDeclaration.js +7 -8
  213. package/dist/generators/ts/synthesizeUberObjectUnionType.d.ts +2 -2
  214. package/dist/generators/ts/synthesizeUberObjectUnionType.js +9 -4
  215. package/dist/input/NodeShape.d.ts +5 -6
  216. package/dist/input/NodeShape.js +19 -22
  217. package/dist/input/Ontology.d.ts +4 -4
  218. package/dist/input/Ontology.js +10 -10
  219. package/dist/input/PropertyShape.d.ts +4 -4
  220. package/dist/input/PropertyShape.js +10 -10
  221. package/dist/input/ShapesGraph.d.ts +3 -2
  222. package/dist/input/ShapesGraph.js +13 -8
  223. package/dist/input/generated.d.ts +2551 -2040
  224. package/dist/input/generated.js +2806 -2346
  225. package/package.json +3 -5
  226. package/dist/_ShapesGraphToAstTransformer/CurieFactory.d.ts +0 -16
  227. package/dist/_ShapesGraphToAstTransformer/CurieFactory.js +0 -45
  228. package/dist/_ShapesGraphToAstTransformer/NodeShapeAstType.d.ts +0 -3
  229. package/dist/_ShapesGraphToAstTransformer/NodeShapeAstType.js +0 -2
  230. package/dist/_ShapesGraphToAstTransformer/index.d.ts +0 -6
  231. package/dist/_ShapesGraphToAstTransformer/index.js +0 -6
  232. package/dist/_ShapesGraphToAstTransformer/shapeIdentifier.d.ts +0 -5
  233. package/dist/_ShapesGraphToAstTransformer/shapeIdentifier.js +0 -9
  234. package/dist/_ShapesGraphToAstTransformer/transformNodeShapeToAstType.d.ts +0 -11
  235. package/dist/_ShapesGraphToAstTransformer/transformNodeShapeToAstType.js +0 -338
  236. package/dist/_ShapesGraphToAstTransformer/transformShapeToAstAbstractTypeProperties.d.ts +0 -12
  237. package/dist/_ShapesGraphToAstTransformer/transformShapeToAstAbstractTypeProperties.js +0 -31
  238. package/dist/ast/AbstractObjectCompoundType.d.ts +0 -45
  239. package/dist/ast/AbstractObjectCompoundType.js +0 -180
  240. package/dist/ast/Curie.d.ts +0 -21
  241. package/dist/ast/Curie.js +0 -29
  242. package/dist/ast/PlaceholderType.d.ts +0 -15
  243. package/dist/ast/PlaceholderType.js +0 -19
  244. package/dist/generators/codeName.d.ts +0 -6
  245. package/dist/generators/codeName.js +0 -66
  246. package/dist/generators/ts/AbstractDeclaredType.d.ts +0 -23
  247. package/dist/generators/ts/AbstractDeclaredType.js +0 -17
  248. package/dist/generators/ts/ObjectUnionType.d.ts +0 -65
  249. package/dist/generators/ts/ObjectUnionType.js +0 -257
  250. package/dist/generators/ts/UnionType.d.ts +0 -40
  251. package/dist/generators/ts/UnionType.js +0 -527
  252. package/dist/generators/ts/_ObjectType/ObjectType_fromJsonFunctionDeclarations.d.ts +0 -4
  253. package/dist/generators/ts/_ObjectType/ObjectType_fromJsonFunctionDeclarations.js +0 -66
  254. package/dist/generators/ts/_ObjectType/ObjectType_fromRdfFunctionDeclaration.d.ts +0 -5
  255. package/dist/generators/ts/_ObjectType/ObjectType_propertiesFromRdfFunctionDeclaration.d.ts +0 -5
  256. package/dist/generators/ts/_ObjectType/ObjectType_sparqlConstructTriplesFunctionDeclaration.d.ts +0 -5
  257. package/dist/generators/ts/_ObjectType/ObjectType_sparqlWherePatternsFunctionDeclarations.d.ts +0 -5
  258. package/dist/generators/ts/_ObjectType/ObjectType_toRdfFunctionOrMethodDeclaration.d.ts +0 -5
  259. package/dist/generators/ts/_ObjectUnionType/MemberType.d.ts +0 -34
  260. package/dist/generators/ts/_ObjectUnionType/MemberType.js +0 -105
  261. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_equalsFunctionDeclaration.d.ts +0 -5
  262. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_equalsFunctionDeclaration.js +0 -29
  263. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_filterFunctionDeclaration.d.ts +0 -4
  264. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_filterFunctionDeclaration.js +0 -19
  265. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_filterTypeDeclaration.d.ts +0 -4
  266. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_filterTypeDeclaration.js +0 -10
  267. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_fromJsonFunctionDeclaration.d.ts +0 -5
  268. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_fromJsonFunctionDeclaration.js +0 -19
  269. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_fromRdfFunctionDeclarations.d.ts +0 -5
  270. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_fromRdfFunctionDeclarations.js +0 -20
  271. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_graphqlTypeVariableStatement.d.ts +0 -5
  272. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_graphqlTypeVariableStatement.js +0 -18
  273. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_hashFunctionDeclaration.d.ts +0 -5
  274. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_hashFunctionDeclaration.js +0 -28
  275. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_identifierTypeDeclarations.d.ts +0 -4
  276. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_identifierTypeDeclarations.js +0 -9
  277. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_isTypeFunctionDeclaration.d.ts +0 -5
  278. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_isTypeFunctionDeclaration.js +0 -13
  279. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_jsonTypeAliasDeclaration.d.ts +0 -5
  280. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_jsonTypeAliasDeclaration.js +0 -10
  281. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_jsonZodSchemaFunctionDeclaration.d.ts +0 -5
  282. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_jsonZodSchemaFunctionDeclaration.js +0 -14
  283. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_schemaVariableStatement.d.ts +0 -4
  284. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_schemaVariableStatement.js +0 -37
  285. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_sparqlConstructTriplesFunctionDeclaration.d.ts +0 -5
  286. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_sparqlConstructTriplesFunctionDeclaration.js +0 -15
  287. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_sparqlWherePatternsFunctionDeclaration.d.ts +0 -5
  288. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_sparqlWherePatternsFunctionDeclaration.js +0 -35
  289. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_toJsonFunctionDeclaration.d.ts +0 -5
  290. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_toJsonFunctionDeclaration.js +0 -26
  291. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_toRdfFunctionDeclarations.d.ts +0 -5
  292. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_toRdfFunctionDeclarations.js +0 -43
  293. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_typeAliasDeclaration.d.ts +0 -4
  294. package/dist/generators/ts/_ObjectUnionType/ObjectUnionType_typeAliasDeclaration.js +0 -10
  295. package/dist/generators/ts/_snippets/snippets_FromRdfOptions.d.ts +0 -2
  296. package/dist/generators/ts/_snippets/snippets_FromRdfOptions.js +0 -5
  297. package/dist/generators/ts/_snippets/snippets_PropertiesFromRdfParameters.d.ts +0 -2
  298. package/dist/generators/ts/_snippets/snippets_PropertiesFromRdfParameters.js +0 -5
  299. package/dist/generators/ts/_snippets/snippets_SparqlConstructTriplesFunction.d.ts +0 -2
  300. package/dist/generators/ts/_snippets/snippets_SparqlConstructTriplesFunction.js +0 -6
  301. package/dist/generators/ts/_snippets/snippets_SparqlConstructTriplesFunctionParameters.d.ts +0 -2
  302. package/dist/generators/ts/_snippets/snippets_SparqlConstructTriplesFunctionParameters.js +0 -12
  303. package/dist/generators/ts/_snippets/snippets_SparqlWherePatternsFunction.d.ts +0 -2
  304. package/dist/generators/ts/_snippets/snippets_SparqlWherePatternsFunction.js +0 -6
  305. package/dist/generators/ts/_snippets/snippets_SparqlWherePatternsFunctionParameters.d.ts +0 -2
  306. package/dist/generators/ts/_snippets/snippets_SparqlWherePatternsFunctionParameters.js +0 -15
@@ -0,0 +1,80 @@
1
+ import { Maybe } from "purify-ts";
2
+ import { AbstractType } from "./AbstractType.js";
3
+ import type { BlankNodeType } from "./BlankNodeType.js";
4
+ import type { IdentifierType } from "./IdentifierType.js";
5
+ import type { IriType } from "./IriType.js";
6
+ import type { Type } from "./Type.js";
7
+ import { type Code } from "./ts-poet-wrapper.js";
8
+ export declare abstract class AbstractUnionType<MemberTypeT extends Type> extends AbstractType {
9
+ private readonly discriminant;
10
+ private readonly identifierType;
11
+ readonly abstract = false;
12
+ private readonly lazyMembers;
13
+ readonly recursive: boolean;
14
+ constructor({ identifierType, members, recursive, ...superParameters }: {
15
+ identifierType: Maybe<BlankNodeType | IdentifierType | IriType>;
16
+ members: readonly (Pick<AbstractUnionType.Member<MemberTypeT>, "type"> & {
17
+ readonly discriminantValue: Maybe<number | string>;
18
+ })[];
19
+ recursive: boolean;
20
+ } & ConstructorParameters<typeof AbstractType>[0]);
21
+ get conversions(): readonly AbstractType.Conversion[];
22
+ get discriminantProperty(): Maybe<AbstractType.DiscriminantProperty>;
23
+ get members(): readonly AbstractUnionType.Member<MemberTypeT>[];
24
+ get mutable(): boolean;
25
+ get schema(): Code;
26
+ get schemaType(): Code;
27
+ get typeofs(): AbstractType["typeofs"];
28
+ protected get concreteMembers(): readonly AbstractUnionType.ConcreteMember<MemberTypeT>[];
29
+ protected get inlineEqualsFunction(): Code;
30
+ protected get inlineFilterFunction(): Code;
31
+ protected get inlineFilterType(): Code;
32
+ protected get inlineFromJsonFunction(): Code;
33
+ protected get inlineFromRdfResourceValuesFunction(): Code;
34
+ protected get inlineJsonType(): AbstractType.JsonType;
35
+ protected get inlineJsonZodSchema(): Code;
36
+ protected get inlineName(): Code;
37
+ protected get inlineValueSparqlConstructTriplesFunction(): Code;
38
+ protected get inlineValueSparqlWherePatternsFunction(): Code;
39
+ protected get inlineToJsonFunction(): Code;
40
+ protected get inlineToRdfResourceValuesFunction(): Code;
41
+ protected get schemaObject(): {
42
+ kind: Code;
43
+ members: Code;
44
+ };
45
+ jsonUiSchemaElement(): Maybe<Code>;
46
+ protected inlineHashStatements({ depth, variables, }: Parameters<AbstractType["hashStatements"]>[0]): readonly Code[];
47
+ }
48
+ type Discriminant = EnvelopeDiscriminant | InlineDiscriminant | TypeofDiscriminant;
49
+ type EnvelopeDiscriminant = {
50
+ kind: "envelope";
51
+ } & AbstractType.DiscriminantProperty;
52
+ type InlineDiscriminant = {
53
+ kind: "inline";
54
+ } & AbstractType.DiscriminantProperty;
55
+ type TypeofDiscriminant = {
56
+ kind: "typeof";
57
+ };
58
+ export declare namespace Discriminant {
59
+ function infer(memberTypes: readonly Type[]): Discriminant;
60
+ }
61
+ export declare namespace AbstractUnionType {
62
+ interface AbstractMember<TypeT extends Type> {
63
+ readonly abstract: true;
64
+ readonly discriminantValues: readonly AbstractType.DiscriminantProperty.Value[];
65
+ readonly type: TypeT;
66
+ }
67
+ interface ConcreteMember<TypeT extends Type> {
68
+ readonly abstract: false;
69
+ readonly discriminantValues: readonly AbstractType.DiscriminantProperty.Value[];
70
+ readonly jsonTypeCheck: (instance: Code) => Code;
71
+ readonly primaryDiscriminantValue: AbstractType.DiscriminantProperty.Value;
72
+ readonly type: TypeT;
73
+ readonly typeCheck: (instance: Code) => Code;
74
+ readonly unwrap: (instance: Code) => Code;
75
+ readonly wrap: (instance: Code) => Code;
76
+ }
77
+ type Member<TypeT extends Type> = AbstractMember<TypeT> | ConcreteMember<TypeT>;
78
+ }
79
+ export {};
80
+ //# sourceMappingURL=AbstractUnionType.d.ts.map
@@ -0,0 +1,514 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Maybe, NonEmptyList } from "purify-ts";
8
+ import { invariant } from "ts-invariant";
9
+ import { Memoize } from "typescript-memoize";
10
+ import { AbstractType } from "./AbstractType.js";
11
+ import { imports } from "./imports.js";
12
+ import { removeUndefined } from "./removeUndefined.js";
13
+ import { snippets } from "./snippets.js";
14
+ import { syntheticNamePrefix } from "./syntheticNamePrefix.js";
15
+ import { code, joinCode, literalOf } from "./ts-poet-wrapper.js";
16
+ export class AbstractUnionType extends AbstractType {
17
+ discriminant;
18
+ identifierType;
19
+ abstract = false;
20
+ lazyMembers;
21
+ recursive;
22
+ constructor({ identifierType, members, recursive, ...superParameters }) {
23
+ super(superParameters);
24
+ this.identifierType = identifierType;
25
+ invariant(members.length >= 2);
26
+ this.recursive = recursive;
27
+ if (members.some((member) => member.discriminantValue.isJust())) {
28
+ this.discriminant = {
29
+ descendantValues: [],
30
+ kind: "envelope",
31
+ name: "type",
32
+ ownValues: members.map((member, memberI) => member.discriminantValue.orDefault(memberI)),
33
+ };
34
+ }
35
+ else {
36
+ this.discriminant = Discriminant.infer(members.map((member) => member.type));
37
+ }
38
+ this.lazyMembers = () => members.map((member, memberI) => {
39
+ if (member.type.abstract) {
40
+ return { abstract: true, discriminantValues: [], type: member.type };
41
+ }
42
+ let discriminantValues;
43
+ switch (this.discriminant.kind) {
44
+ case "envelope":
45
+ discriminantValues = [this.discriminant.ownValues[memberI]];
46
+ break;
47
+ case "inline": {
48
+ // A member type's combined discriminant property values are its "own" values plus any descendant values that are
49
+ // not the "own" values of some other member type.
50
+ // So if you have type A, type B, and B inherits A, then
51
+ // A has
52
+ // own discriminant property values: ["A"]
53
+ // descendant discriminant property values: ["B"]
54
+ // and B has
55
+ // own discriminant property values: ["B"]
56
+ // descendant discriminant property values ["B"]
57
+ // In this case A shouldn't have "B" as a combined discriminant property value since it's "claimed" by B.
58
+ const memberOwnDiscriminantPropertyValues = new Set();
59
+ for (const member of members) {
60
+ for (const ownDiscriminantPropertyValue of member.type.discriminantProperty.unsafeCoerce()
61
+ .ownValues) {
62
+ memberOwnDiscriminantPropertyValues.add(ownDiscriminantPropertyValue);
63
+ }
64
+ }
65
+ discriminantValues = member.type.discriminantProperty
66
+ .unsafeCoerce()
67
+ .ownValues.concat(member.type.discriminantProperty
68
+ .unsafeCoerce()
69
+ .descendantValues.filter((value) => !memberOwnDiscriminantPropertyValues.has(value)));
70
+ break;
71
+ }
72
+ case "typeof":
73
+ discriminantValues = member.type.typeofs;
74
+ break;
75
+ default:
76
+ throw this.discriminant;
77
+ }
78
+ if (discriminantValues.length === 0) {
79
+ return { abstract: true, discriminantValues: [], type: member.type };
80
+ }
81
+ const typeCheck = (json) => (instance) => {
82
+ switch (this.discriminant.kind) {
83
+ case "envelope":
84
+ return code `(${joinCode(discriminantValues.map((discriminantValue) => code `${instance}.${this.discriminant.name} === ${literalOf(discriminantValue)}`), { on: " || " })})`;
85
+ case "inline": {
86
+ if (!json) {
87
+ switch (member.type.kind) {
88
+ case "NamedObjectUnionType":
89
+ case "NamedUnionType":
90
+ case "ObjectType":
91
+ return code `${member.type.staticModuleName}.is${member.type.name}(${instance})`;
92
+ }
93
+ }
94
+ return code `(${joinCode(discriminantValues.map((discriminantValue) => code `${instance}.${this.discriminant.name} === ${literalOf(discriminantValue)}`), { on: " || " })})`;
95
+ }
96
+ case "typeof":
97
+ return code `(${joinCode(discriminantValues.map((discriminantValue) => code `typeof ${instance} === ${literalOf(discriminantValue)}`), { on: " || " })})`;
98
+ }
99
+ };
100
+ return {
101
+ abstract: false,
102
+ discriminantValues,
103
+ jsonTypeCheck: typeCheck(true),
104
+ primaryDiscriminantValue: discriminantValues[0],
105
+ type: member.type,
106
+ typeCheck: typeCheck(false),
107
+ unwrap: (instance) => {
108
+ switch (this.discriminant.kind) {
109
+ case "envelope":
110
+ return code `${instance}.value`;
111
+ case "inline":
112
+ case "typeof":
113
+ return instance;
114
+ }
115
+ },
116
+ wrap: (instance) => {
117
+ switch (this.discriminant.kind) {
118
+ case "envelope":
119
+ return code `{ ${this.discriminant.name}: "${discriminantValues[0]}" as const, value: ${instance} }`;
120
+ case "inline":
121
+ case "typeof":
122
+ return instance;
123
+ }
124
+ },
125
+ };
126
+ });
127
+ }
128
+ get conversions() {
129
+ switch (this.discriminant.kind) {
130
+ case "envelope":
131
+ case "inline":
132
+ return [
133
+ {
134
+ conversionExpression: (value) => value,
135
+ sourceTypeCheckExpression: (value) => code `typeof ${value} === "object"`,
136
+ sourceTypeName: this.name,
137
+ sourceTypeof: "object",
138
+ },
139
+ ];
140
+ case "typeof":
141
+ return this.concreteMembers.map(({ primaryDiscriminantValue, type, typeCheck }) => ({
142
+ conversionExpression: (value) => value,
143
+ sourceTypeCheckExpression: (value) => typeCheck(value),
144
+ sourceTypeName: type.name,
145
+ sourceTypeof: primaryDiscriminantValue,
146
+ }));
147
+ default:
148
+ throw this.discriminant;
149
+ }
150
+ }
151
+ get discriminantProperty() {
152
+ switch (this.discriminant.kind) {
153
+ case "envelope":
154
+ case "inline":
155
+ return Maybe.of(this.discriminant);
156
+ case "typeof":
157
+ return Maybe.empty();
158
+ default:
159
+ throw this.discriminant;
160
+ }
161
+ }
162
+ get members() {
163
+ return this.lazyMembers();
164
+ }
165
+ get mutable() {
166
+ return this.members.some((member) => member.type.mutable);
167
+ }
168
+ get schema() {
169
+ return code `${removeUndefined(this.schemaObject)}`;
170
+ }
171
+ get schemaType() {
172
+ invariant(this.kind.endsWith("Type"));
173
+ return code `${{
174
+ // discriminant: {
175
+ // kind: '"envelope" | "inline" | "typeof"',
176
+ // },
177
+ kind: code `${literalOf(this.kind.substring(0, this.kind.length - "Type".length))}`,
178
+ members: code `{ ${joinCode(this.concreteMembers.map(({ type, primaryDiscriminantValue }) => code `readonly ${literalOf(primaryDiscriminantValue)}: ${{
179
+ discriminantValues: code `readonly (number | string)[]`,
180
+ type: type.schemaType,
181
+ }}`), { on: ";" })} }`,
182
+ }}`;
183
+ }
184
+ get typeofs() {
185
+ return NonEmptyList.fromArray(this.concreteMembers.flatMap((member) => member.type.typeofs)).unsafeCoerce();
186
+ }
187
+ get concreteMembers() {
188
+ return this.members.filter((member) => !member.abstract);
189
+ }
190
+ get inlineEqualsFunction() {
191
+ return code `\
192
+ ((left: ${this.name}, right: ${this.name}) => {
193
+ ${joinCode(this.concreteMembers.map(({ type, typeCheck, unwrap }) => code `if (${typeCheck(code `left`)} && ${typeCheck(code `right`)}) {
194
+ return ${type.equalsFunction}(${unwrap(code `left`)} as ${type.name}, ${unwrap(code `right`)} as ${type.name});
195
+ }`))}
196
+
197
+ return ${imports.Left}({ left, right, propertyName: "type", propertyValuesUnequal: { left: typeof left, right: typeof right, type: "boolean" as const }, type: "property" as const });
198
+ })`;
199
+ }
200
+ get inlineFilterFunction() {
201
+ return code `\
202
+ ((filter: ${this.filterType}, value: ${this.name}) => {
203
+ ${joinCode([
204
+ ...this.identifierType
205
+ .map((identifierType) => code `\
206
+ if (filter.${syntheticNamePrefix}identifier !== undefined && !${identifierType.filterFunction}(filter.${syntheticNamePrefix}identifier, value.${syntheticNamePrefix}identifier)) {
207
+ return false;
208
+ }`)
209
+ .toList(),
210
+ ...this.concreteMembers.map(({ primaryDiscriminantValue, type, typeCheck, unwrap }) => code `\
211
+ if (filter.on?.[${literalOf(primaryDiscriminantValue)}] !== undefined && ${typeCheck(code `value`)}) {
212
+ if (!${type.filterFunction}(filter.on[${literalOf(primaryDiscriminantValue)}], ${unwrap(code `value`)})) {
213
+ return false;
214
+ }
215
+ }`),
216
+ ])}
217
+
218
+ return true;
219
+ })`;
220
+ }
221
+ get inlineFilterType() {
222
+ return code `\
223
+ {
224
+ ${this.identifierType.map((identifierType) => code `readonly ${syntheticNamePrefix}identifier?: ${identifierType.filterType};`).orDefault(code ``)}
225
+ readonly on?: { ${joinCode(this.concreteMembers.map(({ type, primaryDiscriminantValue }) => code `readonly ${literalOf(primaryDiscriminantValue)}?: ${type.filterType}`), { on: ";" })} }
226
+ }`;
227
+ }
228
+ get inlineFromJsonFunction() {
229
+ return code `\
230
+ ((value: ${this.jsonType().name}): ${this.name} => {
231
+ ${joinCode(this.concreteMembers.map(({ jsonTypeCheck, type, unwrap, wrap }) => code `if (${jsonTypeCheck(code `value`)}) { return ${wrap(type.fromJsonExpression({
232
+ variables: {
233
+ value: code `(${unwrap(code `value`)} as ${type.jsonType().name})`,
234
+ },
235
+ }))}; }`))}
236
+
237
+ throw new Error("unable to deserialize JSON");
238
+ })`;
239
+ }
240
+ get inlineFromRdfResourceValuesFunction() {
241
+ const variables = {
242
+ context: code `_options.context`,
243
+ graph: code `_options.graph`,
244
+ ignoreRdfType: false,
245
+ objectSet: code `_options.objectSet`,
246
+ preferredLanguages: code `_options.preferredLanguages`,
247
+ propertyPath: code `_options.propertyPath`,
248
+ resource: code `_options.resource`,
249
+ };
250
+ return code `\
251
+ (((values, _options) =>
252
+ values.chain(values => values.chainMap(value => {
253
+ const valueAsValues = ${imports.Right}(value.toValues());
254
+ return ${this.concreteMembers.reduce((expression, { type, primaryDiscriminantValue }) => {
255
+ let typeExpression = type.fromRdfResourceValuesExpression({
256
+ variables: {
257
+ context: variables.context,
258
+ graph: variables.graph,
259
+ ignoreRdfType: false,
260
+ objectSet: variables.objectSet,
261
+ preferredLanguages: variables.preferredLanguages,
262
+ propertyPath: variables.propertyPath,
263
+ resource: variables.resource,
264
+ resourceValues: code `valueAsValues`,
265
+ },
266
+ });
267
+ if (this.discriminant.kind === "envelope") {
268
+ typeExpression = code `${typeExpression}.map(values => values.map(value => ({ ${this.discriminant.name}: ${literalOf(primaryDiscriminantValue)} as const, value }) as (${this.name})))`;
269
+ }
270
+ typeExpression = code `(${typeExpression} as ${imports.Either}<Error, ${imports.Resource}.Values<${this.name}>>)`;
271
+ return expression !== null
272
+ ? code `${expression}.altLazy(() => ${typeExpression})`
273
+ : typeExpression;
274
+ }, null)}.chain(values => values.head());
275
+ }))
276
+ ) satisfies ${snippets.FromRdfResourceValuesFunction}<${this.name}>)`;
277
+ }
278
+ get inlineJsonType() {
279
+ switch (this.discriminant.kind) {
280
+ case "envelope":
281
+ return new AbstractType.JsonType(code `(${joinCode(this.concreteMembers.map(({ type, primaryDiscriminantValue }) => code `{ ${this.discriminant.name}: ${literalOf(primaryDiscriminantValue)}, value: ${type.jsonType().name} }`), { on: "|" })})`);
282
+ case "inline":
283
+ case "typeof":
284
+ return new AbstractType.JsonType(joinCode(this.concreteMembers.map(({ type }) => code `${type.jsonType({
285
+ includeDiscriminantProperty: this.discriminant.kind === "inline",
286
+ }).name}`), { on: "|" }));
287
+ default:
288
+ throw this.discriminant;
289
+ }
290
+ }
291
+ get inlineJsonZodSchema() {
292
+ switch (this.discriminant.kind) {
293
+ case "envelope":
294
+ return code `${imports.z}.discriminatedUnion("${this.discriminant.name}", [${joinCode(this.concreteMembers.map(({ type, primaryDiscriminantValue }) => code `${imports.z}.object({ ${this.discriminant.name}: ${imports.z}.literal(${literalOf(primaryDiscriminantValue)}), value: ${type.jsonZodSchema({ context: "type" })} })`), { on: "," })}])`;
295
+ case "inline":
296
+ return code `${imports.z}.discriminatedUnion("${this.discriminant.name}", [${joinCode(this.concreteMembers.map(({ type }) => type.jsonZodSchema({
297
+ includeDiscriminantProperty: true,
298
+ context: "type",
299
+ })), { on: "," })}])`;
300
+ case "typeof":
301
+ return code `${imports.z}.union([${joinCode(this.concreteMembers.map(({ type }) => type.jsonZodSchema({ context: "type" })), { on: "," })}])`;
302
+ default:
303
+ throw this.discriminant;
304
+ }
305
+ }
306
+ get inlineName() {
307
+ switch (this.discriminant.kind) {
308
+ case "envelope":
309
+ return code `(${joinCode(this.concreteMembers.map(({ type, primaryDiscriminantValue }) => code `{ ${this.discriminant.name}: ${literalOf(primaryDiscriminantValue)}, value: ${type.name} }`), { on: "|" })})`;
310
+ case "inline":
311
+ // If every type shares a discriminant (e.g., RDF/JS "termType" or generated ObjectType "type"),
312
+ // just join their names with "|"
313
+ return code `(${joinCode(this.members.map(({ type }) => code `${type.name}`), { on: "|" })})`;
314
+ case "typeof":
315
+ // The type.name may include literal values, but they should still be unambiguous with other member types since the typeofs
316
+ // of the different member types are known to be different.
317
+ return code `(${joinCode(this.members.map(({ type }) => code `${type.name}`), { on: "|" })})`;
318
+ default:
319
+ this.discriminant;
320
+ throw new Error("should never reach this point");
321
+ }
322
+ }
323
+ get inlineValueSparqlConstructTriplesFunction() {
324
+ return code `\
325
+ ((({ ignoreRdfType, filter, schema, ...otherParameters }) => {
326
+ let triples: ${imports.sparqljs}.Triple[] = [];
327
+
328
+ ${joinCode(this.concreteMembers.map(({ type, primaryDiscriminantValue }) => code `\
329
+ triples = triples.concat(${type.valueSparqlConstructTriplesFunction}({ ...otherParameters, filter: filter?.on?.[${literalOf(primaryDiscriminantValue)}], ignoreRdfType: false, schema: schema.members[${literalOf(primaryDiscriminantValue)}].type }));`))}
330
+
331
+ return triples;
332
+ }) satisfies ${snippets.ValueSparqlConstructTriplesFunction}<${this.filterType}, ${this.schemaType}>)`;
333
+ }
334
+ get inlineValueSparqlWherePatternsFunction() {
335
+ return code `\
336
+ ((({ filter, schema, ...otherParameters }) => {
337
+ const unionPatterns: ${imports.sparqljs}.GroupPattern[] = [];
338
+
339
+ ${joinCode(this.concreteMembers.map(({ type, primaryDiscriminantValue }) => code `\
340
+ unionPatterns.push({ patterns: ${type.valueSparqlWherePatternsFunction}({ ...otherParameters, filter: filter?.on?.[${literalOf(primaryDiscriminantValue)}], ignoreRdfType: false, schema: schema.members[${literalOf(primaryDiscriminantValue)}].type }).concat(), type: "group" });`))}
341
+
342
+ return [{ patterns: unionPatterns, type: "union" }];
343
+ }) satisfies ${snippets.ValueSparqlWherePatternsFunction}<${this.filterType}, ${this.schemaType}>)`;
344
+ }
345
+ get inlineToJsonFunction() {
346
+ return code `\
347
+ ((value: ${this.name}): ${this.jsonType().name} => {
348
+ ${joinCode(this.concreteMembers.map(({ type, typeCheck, unwrap, wrap }) => code `if (${typeCheck(code `value`)}) { return ${wrap(type.toJsonExpression({
349
+ includeDiscriminantProperty: this.discriminant.kind === "inline",
350
+ variables: { value: unwrap(code `value`) },
351
+ }))}; }`))}
352
+
353
+ throw new Error("unable to serialize to JSON");
354
+ })`;
355
+ }
356
+ get inlineToRdfResourceValuesFunction() {
357
+ return code `\
358
+ (((value, _options) => {
359
+ ${joinCode(this.concreteMembers.map(({ type, unwrap, typeCheck }) => code `if (${typeCheck(code `value`)}) { return ${type.toRdfResourceValuesExpression({
360
+ variables: {
361
+ graph: code `_options.graph`,
362
+ propertyPath: code `_options.propertyPath`,
363
+ resource: code `_options.resource`,
364
+ resourceSet: code `_options.resourceSet`,
365
+ value: unwrap(code `value`),
366
+ },
367
+ })}; }`))}
368
+
369
+ throw new Error("unable to serialize to RDF");
370
+ }) as ${snippets.ToRdfResourceValuesFunction}<${this.name}>)`;
371
+ }
372
+ get schemaObject() {
373
+ return {
374
+ ...super.schemaObject,
375
+ members: code `{ ${joinCode(this.concreteMembers.map(({ discriminantValues, type, primaryDiscriminantValue }) => code `${literalOf(primaryDiscriminantValue)}: ${{
376
+ discriminantValues: discriminantValues,
377
+ type: type.schema,
378
+ }}`), { on: "," })} }`,
379
+ };
380
+ }
381
+ jsonUiSchemaElement() {
382
+ return Maybe.empty();
383
+ }
384
+ inlineHashStatements({ depth, variables, }) {
385
+ return this.concreteMembers.map(({ type, unwrap, typeCheck }) => code `if (${typeCheck(variables.value)}) { ${joinCode(type
386
+ .hashStatements({
387
+ depth: depth + 1,
388
+ variables: {
389
+ hasher: variables.hasher,
390
+ value: unwrap(variables.value),
391
+ },
392
+ })
393
+ .concat())} }`);
394
+ }
395
+ }
396
+ __decorate([
397
+ Memoize()
398
+ ], AbstractUnionType.prototype, "conversions", null);
399
+ __decorate([
400
+ Memoize()
401
+ ], AbstractUnionType.prototype, "discriminantProperty", null);
402
+ __decorate([
403
+ Memoize()
404
+ ], AbstractUnionType.prototype, "members", null);
405
+ __decorate([
406
+ Memoize()
407
+ ], AbstractUnionType.prototype, "mutable", null);
408
+ __decorate([
409
+ Memoize()
410
+ ], AbstractUnionType.prototype, "schema", null);
411
+ __decorate([
412
+ Memoize()
413
+ ], AbstractUnionType.prototype, "typeofs", null);
414
+ __decorate([
415
+ Memoize()
416
+ ], AbstractUnionType.prototype, "concreteMembers", null);
417
+ __decorate([
418
+ Memoize()
419
+ ], AbstractUnionType.prototype, "inlineEqualsFunction", null);
420
+ __decorate([
421
+ Memoize()
422
+ ], AbstractUnionType.prototype, "inlineFilterFunction", null);
423
+ __decorate([
424
+ Memoize()
425
+ ], AbstractUnionType.prototype, "inlineFilterType", null);
426
+ __decorate([
427
+ Memoize()
428
+ ], AbstractUnionType.prototype, "inlineJsonType", null);
429
+ __decorate([
430
+ Memoize()
431
+ ], AbstractUnionType.prototype, "inlineName", null);
432
+ __decorate([
433
+ Memoize()
434
+ ], AbstractUnionType.prototype, "inlineValueSparqlConstructTriplesFunction", null);
435
+ __decorate([
436
+ Memoize()
437
+ ], AbstractUnionType.prototype, "inlineValueSparqlWherePatternsFunction", null);
438
+ export var Discriminant;
439
+ (function (Discriminant) {
440
+ function inlineDiscriminantProperty(memberTypes) {
441
+ let inlineDiscriminantProperty;
442
+ for (const memberType of memberTypes) {
443
+ const memberTypeDiscriminantProperty = memberType.discriminantProperty.extract();
444
+ if (!memberTypeDiscriminantProperty) {
445
+ inlineDiscriminantProperty = undefined;
446
+ break;
447
+ }
448
+ if (!inlineDiscriminantProperty) {
449
+ inlineDiscriminantProperty = {
450
+ name: memberTypeDiscriminantProperty.name,
451
+ ownValues: memberTypeDiscriminantProperty.ownValues.concat(),
452
+ descendantValues: memberTypeDiscriminantProperty.descendantValues.concat(),
453
+ };
454
+ }
455
+ else if (memberTypeDiscriminantProperty.name === inlineDiscriminantProperty.name) {
456
+ inlineDiscriminantProperty.descendantValues =
457
+ inlineDiscriminantProperty.descendantValues.concat(memberTypeDiscriminantProperty.descendantValues);
458
+ inlineDiscriminantProperty.ownValues =
459
+ inlineDiscriminantProperty.ownValues.concat(memberTypeDiscriminantProperty.ownValues);
460
+ }
461
+ else {
462
+ return undefined;
463
+ }
464
+ }
465
+ return inlineDiscriminantProperty;
466
+ }
467
+ function infer(memberTypes) {
468
+ // Infer the discriminant kind
469
+ const inlineDiscriminantProperty_ = inlineDiscriminantProperty(memberTypes);
470
+ if (inlineDiscriminantProperty_) {
471
+ return {
472
+ ...inlineDiscriminantProperty_,
473
+ kind: "inline",
474
+ };
475
+ }
476
+ const memberTypeofs = new Set();
477
+ for (const memberType of memberTypes) {
478
+ for (const typeof_ of memberType.typeofs) {
479
+ memberTypeofs.add(typeof_);
480
+ }
481
+ }
482
+ if (memberTypeofs.size === memberTypes.length) {
483
+ return {
484
+ kind: "typeof",
485
+ };
486
+ }
487
+ let ownValues;
488
+ const memberTypeNames = memberTypes.map((memberType) => memberType.name);
489
+ if (memberTypeNames.every((memberTypeName) => typeof memberTypeName === "string")) {
490
+ const memberTypeNamesSet = new Set(memberTypeNames);
491
+ if (memberTypeNamesSet.size === memberTypeNames.length) {
492
+ // If every member type name is a unique string, use those strings as the discriminant values.
493
+ ownValues = memberTypeNames;
494
+ }
495
+ else {
496
+ // Otherwise prefix the non-unique strings with an index and use those as the discriminant values.
497
+ ownValues = memberTypeNames.map((memberTypeName, memberTypeIndex) => `${memberTypeIndex}-${memberTypeName}`);
498
+ }
499
+ }
500
+ else {
501
+ // At least one member type name is Code
502
+ // Use member type indices as the discriminant values.
503
+ ownValues = memberTypes.map((_, memberTypeIndex) => memberTypeIndex);
504
+ }
505
+ return {
506
+ descendantValues: [],
507
+ kind: "envelope",
508
+ name: "type",
509
+ ownValues,
510
+ };
511
+ }
512
+ Discriminant.infer = infer;
513
+ })(Discriminant || (Discriminant = {}));
514
+ //# sourceMappingURL=AbstractUnionType.js.map
@@ -0,0 +1,26 @@
1
+ import { Maybe } from "purify-ts";
2
+ import type { AbstractType } from "./AbstractType.js";
3
+ import { AbstractUnionType } from "./AbstractUnionType.js";
4
+ import type { Type } from "./Type.js";
5
+ import { type Code } from "./ts-poet-wrapper.js";
6
+ export declare class AnonymousUnionType extends AbstractUnionType<Type> {
7
+ readonly declaration: Maybe<Code>;
8
+ readonly graphqlArgs: AbstractType["graphqlArgs"];
9
+ readonly kind = "AnonymousUnionType";
10
+ get equalsFunction(): Code;
11
+ get filterFunction(): Code;
12
+ get filterType(): Code;
13
+ get graphqlType(): AbstractType.GraphqlType;
14
+ get name(): Code;
15
+ get valueSparqlConstructTriplesFunction(): Code;
16
+ get valueSparqlWherePatternsFunction(): Code;
17
+ fromJsonExpression({ variables, }: Parameters<AbstractType["fromJsonExpression"]>[0]): Code;
18
+ fromRdfResourceValuesExpression({ variables, }: Parameters<AbstractType["fromRdfResourceValuesExpression"]>[0]): Code;
19
+ graphqlResolveExpression(_parameters: Parameters<AbstractType["graphqlResolveExpression"]>[0]): Code;
20
+ hashStatements(parameters: Parameters<AbstractType["hashStatements"]>[0]): readonly Code[];
21
+ jsonType(): AbstractType.JsonType;
22
+ jsonZodSchema(_parameters: Parameters<AbstractType["jsonZodSchema"]>[0]): Code;
23
+ toJsonExpression({ variables, }: Parameters<AbstractType["toJsonExpression"]>[0]): Code;
24
+ toRdfResourceValuesExpression({ variables, }: Parameters<AbstractType["toRdfResourceValuesExpression"]>[0]): Code;
25
+ }
26
+ //# sourceMappingURL=AnonymousUnionType.d.ts.map
@@ -0,0 +1,56 @@
1
+ import { Maybe } from "purify-ts";
2
+ import { AbstractUnionType } from "./AbstractUnionType.js";
3
+ import { code } from "./ts-poet-wrapper.js";
4
+ export class AnonymousUnionType extends AbstractUnionType {
5
+ declaration = Maybe.empty();
6
+ graphqlArgs = Maybe.empty();
7
+ kind = "AnonymousUnionType";
8
+ get equalsFunction() {
9
+ return this.inlineEqualsFunction;
10
+ }
11
+ get filterFunction() {
12
+ return this.inlineFilterFunction;
13
+ }
14
+ get filterType() {
15
+ return this.inlineFilterType;
16
+ }
17
+ get graphqlType() {
18
+ throw new Error("GraphQL doesn't support scalar unions");
19
+ }
20
+ get name() {
21
+ return this.inlineName;
22
+ }
23
+ get valueSparqlConstructTriplesFunction() {
24
+ return this.inlineValueSparqlConstructTriplesFunction;
25
+ }
26
+ get valueSparqlWherePatternsFunction() {
27
+ return this.inlineValueSparqlWherePatternsFunction;
28
+ }
29
+ fromJsonExpression({ variables, }) {
30
+ return code `${this.inlineFromJsonFunction}(${variables.value})`;
31
+ }
32
+ fromRdfResourceValuesExpression({ variables, }) {
33
+ const { resourceValues: resourceValuesVariable, ...otherVariables } = variables;
34
+ return code `${this.inlineFromRdfResourceValuesFunction}(${resourceValuesVariable}, ${otherVariables})`;
35
+ }
36
+ graphqlResolveExpression(_parameters) {
37
+ throw new Error("not implemented");
38
+ }
39
+ hashStatements(parameters) {
40
+ return this.inlineHashStatements(parameters);
41
+ }
42
+ jsonType() {
43
+ return this.inlineJsonType;
44
+ }
45
+ jsonZodSchema(_parameters) {
46
+ return this.inlineJsonZodSchema;
47
+ }
48
+ toJsonExpression({ variables, }) {
49
+ return code `${this.inlineToJsonFunction}(${variables.value})`;
50
+ }
51
+ toRdfResourceValuesExpression({ variables, }) {
52
+ const { value: valueVariable, ...otherVariables } = variables;
53
+ return code `${this.inlineToRdfResourceValuesFunction}(${valueVariable}, ${otherVariables})`;
54
+ }
55
+ }
56
+ //# sourceMappingURL=AnonymousUnionType.js.map