grafeo-ogm 1.0.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 (333) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1121 -0
  3. package/dist/cjs/compilers/fulltext.compiler.d.ts +67 -0
  4. package/dist/cjs/compilers/fulltext.compiler.d.ts.map +1 -0
  5. package/dist/cjs/compilers/fulltext.compiler.js +254 -0
  6. package/dist/cjs/compilers/fulltext.compiler.js.map +1 -0
  7. package/dist/cjs/compilers/mutation.compiler.d.ts +126 -0
  8. package/dist/cjs/compilers/mutation.compiler.d.ts.map +1 -0
  9. package/dist/cjs/compilers/mutation.compiler.js +1239 -0
  10. package/dist/cjs/compilers/mutation.compiler.js.map +1 -0
  11. package/dist/cjs/compilers/select-normalizer.d.ts +50 -0
  12. package/dist/cjs/compilers/select-normalizer.d.ts.map +1 -0
  13. package/dist/cjs/compilers/select-normalizer.js +225 -0
  14. package/dist/cjs/compilers/select-normalizer.js.map +1 -0
  15. package/dist/cjs/compilers/selection.compiler.d.ts +113 -0
  16. package/dist/cjs/compilers/selection.compiler.d.ts.map +1 -0
  17. package/dist/cjs/compilers/selection.compiler.js +410 -0
  18. package/dist/cjs/compilers/selection.compiler.js.map +1 -0
  19. package/dist/cjs/compilers/where.compiler.d.ts +39 -0
  20. package/dist/cjs/compilers/where.compiler.d.ts.map +1 -0
  21. package/dist/cjs/compilers/where.compiler.js +456 -0
  22. package/dist/cjs/compilers/where.compiler.js.map +1 -0
  23. package/dist/cjs/errors.d.ts +28 -0
  24. package/dist/cjs/errors.d.ts.map +1 -0
  25. package/dist/cjs/errors.js +42 -0
  26. package/dist/cjs/errors.js.map +1 -0
  27. package/dist/cjs/execution/executor.d.ts +38 -0
  28. package/dist/cjs/execution/executor.d.ts.map +1 -0
  29. package/dist/cjs/execution/executor.js +50 -0
  30. package/dist/cjs/execution/executor.js.map +1 -0
  31. package/dist/cjs/execution/result-mapper.d.ts +26 -0
  32. package/dist/cjs/execution/result-mapper.d.ts.map +1 -0
  33. package/dist/cjs/execution/result-mapper.js +92 -0
  34. package/dist/cjs/execution/result-mapper.js.map +1 -0
  35. package/dist/cjs/generator/generate-types.d.ts +55 -0
  36. package/dist/cjs/generator/generate-types.d.ts.map +1 -0
  37. package/dist/cjs/generator/generate-types.js +181 -0
  38. package/dist/cjs/generator/generate-types.js.map +1 -0
  39. package/dist/cjs/generator/index.d.ts +3 -0
  40. package/dist/cjs/generator/index.d.ts.map +1 -0
  41. package/dist/cjs/generator/index.js +6 -0
  42. package/dist/cjs/generator/index.js.map +1 -0
  43. package/dist/cjs/generator/type-emitters/aggregation-emitter.d.ts +7 -0
  44. package/dist/cjs/generator/type-emitters/aggregation-emitter.d.ts.map +1 -0
  45. package/dist/cjs/generator/type-emitters/aggregation-emitter.js +196 -0
  46. package/dist/cjs/generator/type-emitters/aggregation-emitter.js.map +1 -0
  47. package/dist/cjs/generator/type-emitters/connection-emitter.d.ts +22 -0
  48. package/dist/cjs/generator/type-emitters/connection-emitter.d.ts.map +1 -0
  49. package/dist/cjs/generator/type-emitters/connection-emitter.js +270 -0
  50. package/dist/cjs/generator/type-emitters/connection-emitter.js.map +1 -0
  51. package/dist/cjs/generator/type-emitters/enum-emitter.d.ts +7 -0
  52. package/dist/cjs/generator/type-emitters/enum-emitter.d.ts.map +1 -0
  53. package/dist/cjs/generator/type-emitters/enum-emitter.js +45 -0
  54. package/dist/cjs/generator/type-emitters/enum-emitter.js.map +1 -0
  55. package/dist/cjs/generator/type-emitters/fulltext-emitter.d.ts +15 -0
  56. package/dist/cjs/generator/type-emitters/fulltext-emitter.d.ts.map +1 -0
  57. package/dist/cjs/generator/type-emitters/fulltext-emitter.js +80 -0
  58. package/dist/cjs/generator/type-emitters/fulltext-emitter.js.map +1 -0
  59. package/dist/cjs/generator/type-emitters/helpers.d.ts +32 -0
  60. package/dist/cjs/generator/type-emitters/helpers.d.ts.map +1 -0
  61. package/dist/cjs/generator/type-emitters/helpers.js +69 -0
  62. package/dist/cjs/generator/type-emitters/helpers.js.map +1 -0
  63. package/dist/cjs/generator/type-emitters/input-emitter.d.ts +6 -0
  64. package/dist/cjs/generator/type-emitters/input-emitter.d.ts.map +1 -0
  65. package/dist/cjs/generator/type-emitters/input-emitter.js +560 -0
  66. package/dist/cjs/generator/type-emitters/input-emitter.js.map +1 -0
  67. package/dist/cjs/generator/type-emitters/interface-emitter.d.ts +10 -0
  68. package/dist/cjs/generator/type-emitters/interface-emitter.d.ts.map +1 -0
  69. package/dist/cjs/generator/type-emitters/interface-emitter.js +88 -0
  70. package/dist/cjs/generator/type-emitters/interface-emitter.js.map +1 -0
  71. package/dist/cjs/generator/type-emitters/model-map-emitter.d.ts +32 -0
  72. package/dist/cjs/generator/type-emitters/model-map-emitter.d.ts.map +1 -0
  73. package/dist/cjs/generator/type-emitters/model-map-emitter.js +154 -0
  74. package/dist/cjs/generator/type-emitters/model-map-emitter.js.map +1 -0
  75. package/dist/cjs/generator/type-emitters/mutation-response-emitter.d.ts +9 -0
  76. package/dist/cjs/generator/type-emitters/mutation-response-emitter.d.ts.map +1 -0
  77. package/dist/cjs/generator/type-emitters/mutation-response-emitter.js +69 -0
  78. package/dist/cjs/generator/type-emitters/mutation-response-emitter.js.map +1 -0
  79. package/dist/cjs/generator/type-emitters/node-type-emitter.d.ts +13 -0
  80. package/dist/cjs/generator/type-emitters/node-type-emitter.d.ts.map +1 -0
  81. package/dist/cjs/generator/type-emitters/node-type-emitter.js +123 -0
  82. package/dist/cjs/generator/type-emitters/node-type-emitter.js.map +1 -0
  83. package/dist/cjs/generator/type-emitters/select-fields-emitter.d.ts +8 -0
  84. package/dist/cjs/generator/type-emitters/select-fields-emitter.d.ts.map +1 -0
  85. package/dist/cjs/generator/type-emitters/select-fields-emitter.js +169 -0
  86. package/dist/cjs/generator/type-emitters/select-fields-emitter.js.map +1 -0
  87. package/dist/cjs/generator/type-emitters/select-result-emitter.d.ts +9 -0
  88. package/dist/cjs/generator/type-emitters/select-result-emitter.d.ts.map +1 -0
  89. package/dist/cjs/generator/type-emitters/select-result-emitter.js +61 -0
  90. package/dist/cjs/generator/type-emitters/select-result-emitter.js.map +1 -0
  91. package/dist/cjs/generator/type-emitters/sort-options-emitter.d.ts +8 -0
  92. package/dist/cjs/generator/type-emitters/sort-options-emitter.d.ts.map +1 -0
  93. package/dist/cjs/generator/type-emitters/sort-options-emitter.js +47 -0
  94. package/dist/cjs/generator/type-emitters/sort-options-emitter.js.map +1 -0
  95. package/dist/cjs/generator/type-emitters/utility-types.d.ts +10 -0
  96. package/dist/cjs/generator/type-emitters/utility-types.d.ts.map +1 -0
  97. package/dist/cjs/generator/type-emitters/utility-types.js +93 -0
  98. package/dist/cjs/generator/type-emitters/utility-types.js.map +1 -0
  99. package/dist/cjs/generator/type-emitters/where-emitter.d.ts +15 -0
  100. package/dist/cjs/generator/type-emitters/where-emitter.d.ts.map +1 -0
  101. package/dist/cjs/generator/type-emitters/where-emitter.js +189 -0
  102. package/dist/cjs/generator/type-emitters/where-emitter.js.map +1 -0
  103. package/dist/cjs/index.d.ts +30 -0
  104. package/dist/cjs/index.d.ts.map +1 -0
  105. package/dist/cjs/index.js +59 -0
  106. package/dist/cjs/index.js.map +1 -0
  107. package/dist/cjs/interface-model.d.ts +158 -0
  108. package/dist/cjs/interface-model.d.ts.map +1 -0
  109. package/dist/cjs/interface-model.js +214 -0
  110. package/dist/cjs/interface-model.js.map +1 -0
  111. package/dist/cjs/model.d.ts +354 -0
  112. package/dist/cjs/model.d.ts.map +1 -0
  113. package/dist/cjs/model.js +513 -0
  114. package/dist/cjs/model.js.map +1 -0
  115. package/dist/cjs/ogm.d.ts +97 -0
  116. package/dist/cjs/ogm.d.ts.map +1 -0
  117. package/dist/cjs/ogm.js +224 -0
  118. package/dist/cjs/ogm.js.map +1 -0
  119. package/dist/cjs/package.json +1 -0
  120. package/dist/cjs/schema/parser.d.ts +12 -0
  121. package/dist/cjs/schema/parser.d.ts.map +1 -0
  122. package/dist/cjs/schema/parser.js +331 -0
  123. package/dist/cjs/schema/parser.js.map +1 -0
  124. package/dist/cjs/schema/types.d.ts +66 -0
  125. package/dist/cjs/schema/types.d.ts.map +1 -0
  126. package/dist/cjs/schema/types.js +3 -0
  127. package/dist/cjs/schema/types.js.map +1 -0
  128. package/dist/cjs/schema/utils.d.ts +23 -0
  129. package/dist/cjs/schema/utils.d.ts.map +1 -0
  130. package/dist/cjs/schema/utils.js +92 -0
  131. package/dist/cjs/schema/utils.js.map +1 -0
  132. package/dist/cjs/subgraph/index.d.ts +3 -0
  133. package/dist/cjs/subgraph/index.d.ts.map +1 -0
  134. package/dist/cjs/subgraph/index.js +7 -0
  135. package/dist/cjs/subgraph/index.js.map +1 -0
  136. package/dist/cjs/subgraph/subgraph-operations.d.ts +34 -0
  137. package/dist/cjs/subgraph/subgraph-operations.d.ts.map +1 -0
  138. package/dist/cjs/subgraph/subgraph-operations.js +225 -0
  139. package/dist/cjs/subgraph/subgraph-operations.js.map +1 -0
  140. package/dist/cjs/subgraph/types.d.ts +23 -0
  141. package/dist/cjs/subgraph/types.d.ts.map +1 -0
  142. package/dist/cjs/subgraph/types.js +3 -0
  143. package/dist/cjs/subgraph/types.js.map +1 -0
  144. package/dist/cjs/testing/cypher-assert.d.ts +35 -0
  145. package/dist/cjs/testing/cypher-assert.d.ts.map +1 -0
  146. package/dist/cjs/testing/cypher-assert.js +72 -0
  147. package/dist/cjs/testing/cypher-assert.js.map +1 -0
  148. package/dist/cjs/testing/index.d.ts +4 -0
  149. package/dist/cjs/testing/index.d.ts.map +1 -0
  150. package/dist/cjs/testing/index.js +10 -0
  151. package/dist/cjs/testing/index.js.map +1 -0
  152. package/dist/cjs/testing/neo4j-record-factory.d.ts +25 -0
  153. package/dist/cjs/testing/neo4j-record-factory.d.ts.map +1 -0
  154. package/dist/cjs/testing/neo4j-record-factory.js +43 -0
  155. package/dist/cjs/testing/neo4j-record-factory.js.map +1 -0
  156. package/dist/cjs/testing/selection-set-factory.d.ts +24 -0
  157. package/dist/cjs/testing/selection-set-factory.d.ts.map +1 -0
  158. package/dist/cjs/testing/selection-set-factory.js +44 -0
  159. package/dist/cjs/testing/selection-set-factory.js.map +1 -0
  160. package/dist/cjs/utils/lucene.d.ts +9 -0
  161. package/dist/cjs/utils/lucene.d.ts.map +1 -0
  162. package/dist/cjs/utils/lucene.js +25 -0
  163. package/dist/cjs/utils/lucene.js.map +1 -0
  164. package/dist/cjs/utils/validation.d.ts +25 -0
  165. package/dist/cjs/utils/validation.d.ts.map +1 -0
  166. package/dist/cjs/utils/validation.js +53 -0
  167. package/dist/cjs/utils/validation.js.map +1 -0
  168. package/dist/esm/compilers/fulltext.compiler.d.ts +67 -0
  169. package/dist/esm/compilers/fulltext.compiler.d.ts.map +1 -0
  170. package/dist/esm/compilers/fulltext.compiler.js +250 -0
  171. package/dist/esm/compilers/fulltext.compiler.js.map +1 -0
  172. package/dist/esm/compilers/mutation.compiler.d.ts +126 -0
  173. package/dist/esm/compilers/mutation.compiler.d.ts.map +1 -0
  174. package/dist/esm/compilers/mutation.compiler.js +1235 -0
  175. package/dist/esm/compilers/mutation.compiler.js.map +1 -0
  176. package/dist/esm/compilers/select-normalizer.d.ts +50 -0
  177. package/dist/esm/compilers/select-normalizer.d.ts.map +1 -0
  178. package/dist/esm/compilers/select-normalizer.js +221 -0
  179. package/dist/esm/compilers/select-normalizer.js.map +1 -0
  180. package/dist/esm/compilers/selection.compiler.d.ts +113 -0
  181. package/dist/esm/compilers/selection.compiler.d.ts.map +1 -0
  182. package/dist/esm/compilers/selection.compiler.js +406 -0
  183. package/dist/esm/compilers/selection.compiler.js.map +1 -0
  184. package/dist/esm/compilers/where.compiler.d.ts +39 -0
  185. package/dist/esm/compilers/where.compiler.d.ts.map +1 -0
  186. package/dist/esm/compilers/where.compiler.js +452 -0
  187. package/dist/esm/compilers/where.compiler.js.map +1 -0
  188. package/dist/esm/errors.d.ts +28 -0
  189. package/dist/esm/errors.d.ts.map +1 -0
  190. package/dist/esm/errors.js +36 -0
  191. package/dist/esm/errors.js.map +1 -0
  192. package/dist/esm/execution/executor.d.ts +38 -0
  193. package/dist/esm/execution/executor.d.ts.map +1 -0
  194. package/dist/esm/execution/executor.js +46 -0
  195. package/dist/esm/execution/executor.js.map +1 -0
  196. package/dist/esm/execution/result-mapper.d.ts +26 -0
  197. package/dist/esm/execution/result-mapper.d.ts.map +1 -0
  198. package/dist/esm/execution/result-mapper.js +85 -0
  199. package/dist/esm/execution/result-mapper.js.map +1 -0
  200. package/dist/esm/generator/generate-types.d.ts +55 -0
  201. package/dist/esm/generator/generate-types.d.ts.map +1 -0
  202. package/dist/esm/generator/generate-types.js +141 -0
  203. package/dist/esm/generator/generate-types.js.map +1 -0
  204. package/dist/esm/generator/index.d.ts +3 -0
  205. package/dist/esm/generator/index.d.ts.map +1 -0
  206. package/dist/esm/generator/index.js +2 -0
  207. package/dist/esm/generator/index.js.map +1 -0
  208. package/dist/esm/generator/type-emitters/aggregation-emitter.d.ts +7 -0
  209. package/dist/esm/generator/type-emitters/aggregation-emitter.d.ts.map +1 -0
  210. package/dist/esm/generator/type-emitters/aggregation-emitter.js +193 -0
  211. package/dist/esm/generator/type-emitters/aggregation-emitter.js.map +1 -0
  212. package/dist/esm/generator/type-emitters/connection-emitter.d.ts +22 -0
  213. package/dist/esm/generator/type-emitters/connection-emitter.d.ts.map +1 -0
  214. package/dist/esm/generator/type-emitters/connection-emitter.js +266 -0
  215. package/dist/esm/generator/type-emitters/connection-emitter.js.map +1 -0
  216. package/dist/esm/generator/type-emitters/enum-emitter.d.ts +7 -0
  217. package/dist/esm/generator/type-emitters/enum-emitter.d.ts.map +1 -0
  218. package/dist/esm/generator/type-emitters/enum-emitter.js +42 -0
  219. package/dist/esm/generator/type-emitters/enum-emitter.js.map +1 -0
  220. package/dist/esm/generator/type-emitters/fulltext-emitter.d.ts +15 -0
  221. package/dist/esm/generator/type-emitters/fulltext-emitter.d.ts.map +1 -0
  222. package/dist/esm/generator/type-emitters/fulltext-emitter.js +77 -0
  223. package/dist/esm/generator/type-emitters/fulltext-emitter.js.map +1 -0
  224. package/dist/esm/generator/type-emitters/helpers.d.ts +32 -0
  225. package/dist/esm/generator/type-emitters/helpers.d.ts.map +1 -0
  226. package/dist/esm/generator/type-emitters/helpers.js +63 -0
  227. package/dist/esm/generator/type-emitters/helpers.js.map +1 -0
  228. package/dist/esm/generator/type-emitters/input-emitter.d.ts +6 -0
  229. package/dist/esm/generator/type-emitters/input-emitter.d.ts.map +1 -0
  230. package/dist/esm/generator/type-emitters/input-emitter.js +557 -0
  231. package/dist/esm/generator/type-emitters/input-emitter.js.map +1 -0
  232. package/dist/esm/generator/type-emitters/interface-emitter.d.ts +10 -0
  233. package/dist/esm/generator/type-emitters/interface-emitter.d.ts.map +1 -0
  234. package/dist/esm/generator/type-emitters/interface-emitter.js +85 -0
  235. package/dist/esm/generator/type-emitters/interface-emitter.js.map +1 -0
  236. package/dist/esm/generator/type-emitters/model-map-emitter.d.ts +32 -0
  237. package/dist/esm/generator/type-emitters/model-map-emitter.d.ts.map +1 -0
  238. package/dist/esm/generator/type-emitters/model-map-emitter.js +149 -0
  239. package/dist/esm/generator/type-emitters/model-map-emitter.js.map +1 -0
  240. package/dist/esm/generator/type-emitters/mutation-response-emitter.d.ts +9 -0
  241. package/dist/esm/generator/type-emitters/mutation-response-emitter.d.ts.map +1 -0
  242. package/dist/esm/generator/type-emitters/mutation-response-emitter.js +66 -0
  243. package/dist/esm/generator/type-emitters/mutation-response-emitter.js.map +1 -0
  244. package/dist/esm/generator/type-emitters/node-type-emitter.d.ts +13 -0
  245. package/dist/esm/generator/type-emitters/node-type-emitter.d.ts.map +1 -0
  246. package/dist/esm/generator/type-emitters/node-type-emitter.js +120 -0
  247. package/dist/esm/generator/type-emitters/node-type-emitter.js.map +1 -0
  248. package/dist/esm/generator/type-emitters/select-fields-emitter.d.ts +8 -0
  249. package/dist/esm/generator/type-emitters/select-fields-emitter.d.ts.map +1 -0
  250. package/dist/esm/generator/type-emitters/select-fields-emitter.js +166 -0
  251. package/dist/esm/generator/type-emitters/select-fields-emitter.js.map +1 -0
  252. package/dist/esm/generator/type-emitters/select-result-emitter.d.ts +9 -0
  253. package/dist/esm/generator/type-emitters/select-result-emitter.d.ts.map +1 -0
  254. package/dist/esm/generator/type-emitters/select-result-emitter.js +58 -0
  255. package/dist/esm/generator/type-emitters/select-result-emitter.js.map +1 -0
  256. package/dist/esm/generator/type-emitters/sort-options-emitter.d.ts +8 -0
  257. package/dist/esm/generator/type-emitters/sort-options-emitter.d.ts.map +1 -0
  258. package/dist/esm/generator/type-emitters/sort-options-emitter.js +44 -0
  259. package/dist/esm/generator/type-emitters/sort-options-emitter.js.map +1 -0
  260. package/dist/esm/generator/type-emitters/utility-types.d.ts +10 -0
  261. package/dist/esm/generator/type-emitters/utility-types.d.ts.map +1 -0
  262. package/dist/esm/generator/type-emitters/utility-types.js +88 -0
  263. package/dist/esm/generator/type-emitters/utility-types.js.map +1 -0
  264. package/dist/esm/generator/type-emitters/where-emitter.d.ts +15 -0
  265. package/dist/esm/generator/type-emitters/where-emitter.d.ts.map +1 -0
  266. package/dist/esm/generator/type-emitters/where-emitter.js +186 -0
  267. package/dist/esm/generator/type-emitters/where-emitter.js.map +1 -0
  268. package/dist/esm/index.d.ts +30 -0
  269. package/dist/esm/index.d.ts.map +1 -0
  270. package/dist/esm/index.js +29 -0
  271. package/dist/esm/index.js.map +1 -0
  272. package/dist/esm/interface-model.d.ts +158 -0
  273. package/dist/esm/interface-model.d.ts.map +1 -0
  274. package/dist/esm/interface-model.js +210 -0
  275. package/dist/esm/interface-model.js.map +1 -0
  276. package/dist/esm/model.d.ts +354 -0
  277. package/dist/esm/model.d.ts.map +1 -0
  278. package/dist/esm/model.js +507 -0
  279. package/dist/esm/model.js.map +1 -0
  280. package/dist/esm/ogm.d.ts +97 -0
  281. package/dist/esm/ogm.d.ts.map +1 -0
  282. package/dist/esm/ogm.js +220 -0
  283. package/dist/esm/ogm.js.map +1 -0
  284. package/dist/esm/package.json +1 -0
  285. package/dist/esm/schema/parser.d.ts +12 -0
  286. package/dist/esm/schema/parser.d.ts.map +1 -0
  287. package/dist/esm/schema/parser.js +324 -0
  288. package/dist/esm/schema/parser.js.map +1 -0
  289. package/dist/esm/schema/types.d.ts +66 -0
  290. package/dist/esm/schema/types.d.ts.map +1 -0
  291. package/dist/esm/schema/types.js +2 -0
  292. package/dist/esm/schema/types.js.map +1 -0
  293. package/dist/esm/schema/utils.d.ts +23 -0
  294. package/dist/esm/schema/utils.d.ts.map +1 -0
  295. package/dist/esm/schema/utils.js +87 -0
  296. package/dist/esm/schema/utils.js.map +1 -0
  297. package/dist/esm/subgraph/index.d.ts +3 -0
  298. package/dist/esm/subgraph/index.d.ts.map +1 -0
  299. package/dist/esm/subgraph/index.js +2 -0
  300. package/dist/esm/subgraph/index.js.map +1 -0
  301. package/dist/esm/subgraph/subgraph-operations.d.ts +34 -0
  302. package/dist/esm/subgraph/subgraph-operations.d.ts.map +1 -0
  303. package/dist/esm/subgraph/subgraph-operations.js +221 -0
  304. package/dist/esm/subgraph/subgraph-operations.js.map +1 -0
  305. package/dist/esm/subgraph/types.d.ts +23 -0
  306. package/dist/esm/subgraph/types.d.ts.map +1 -0
  307. package/dist/esm/subgraph/types.js +2 -0
  308. package/dist/esm/subgraph/types.js.map +1 -0
  309. package/dist/esm/testing/cypher-assert.d.ts +35 -0
  310. package/dist/esm/testing/cypher-assert.d.ts.map +1 -0
  311. package/dist/esm/testing/cypher-assert.js +68 -0
  312. package/dist/esm/testing/cypher-assert.js.map +1 -0
  313. package/dist/esm/testing/index.d.ts +4 -0
  314. package/dist/esm/testing/index.d.ts.map +1 -0
  315. package/dist/esm/testing/index.js +4 -0
  316. package/dist/esm/testing/index.js.map +1 -0
  317. package/dist/esm/testing/neo4j-record-factory.d.ts +25 -0
  318. package/dist/esm/testing/neo4j-record-factory.d.ts.map +1 -0
  319. package/dist/esm/testing/neo4j-record-factory.js +36 -0
  320. package/dist/esm/testing/neo4j-record-factory.js.map +1 -0
  321. package/dist/esm/testing/selection-set-factory.d.ts +24 -0
  322. package/dist/esm/testing/selection-set-factory.d.ts.map +1 -0
  323. package/dist/esm/testing/selection-set-factory.js +40 -0
  324. package/dist/esm/testing/selection-set-factory.js.map +1 -0
  325. package/dist/esm/utils/lucene.d.ts +9 -0
  326. package/dist/esm/utils/lucene.d.ts.map +1 -0
  327. package/dist/esm/utils/lucene.js +22 -0
  328. package/dist/esm/utils/lucene.js.map +1 -0
  329. package/dist/esm/utils/validation.d.ts +25 -0
  330. package/dist/esm/utils/validation.d.ts.map +1 -0
  331. package/dist/esm/utils/validation.js +46 -0
  332. package/dist/esm/utils/validation.js.map +1 -0
  333. package/package.json +88 -0
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.emitSelectFieldTypes = emitSelectFieldTypes;
4
+ const helpers_1 = require("./helpers");
5
+ /**
6
+ * Emits `SelectFields` types for every node, interface, and edge-properties
7
+ * type in the schema. These types describe which fields can be selected in
8
+ * the type-safe `select` API.
9
+ */
10
+ function emitSelectFieldTypes(schema) {
11
+ const blocks = [];
12
+ // Edge SelectFields — emitted first so node SelectFields can reference them
13
+ const edgeSelectBlocks = emitEdgeSelectFields(schema);
14
+ if (edgeSelectBlocks.length > 0)
15
+ blocks.push(...edgeSelectBlocks);
16
+ // Node SelectFields (sorted alphabetically)
17
+ const sortedNodes = [...schema.nodes.entries()].sort(([a], [b]) => a.localeCompare(b));
18
+ for (const [, node] of sortedNodes)
19
+ blocks.push(emitNodeSelectFields(node, schema));
20
+ // Interface SelectFields (sorted alphabetically)
21
+ const sortedInterfaces = [...schema.interfaces.entries()].sort(([a], [b]) => a.localeCompare(b));
22
+ for (const [, iface] of sortedInterfaces)
23
+ blocks.push(emitInterfaceSelectFields(iface, schema));
24
+ // Union SelectFields (type alias of member SelectFields)
25
+ const sortedUnions = [...(schema.unions?.entries() ?? [])].sort(([a], [b]) => a.localeCompare(b));
26
+ for (const [name, members] of sortedUnions) {
27
+ const memberFields = members.map((m) => `${m}SelectFields`).join(' | ');
28
+ blocks.push(`export type ${name}SelectFields = ${memberFields};`);
29
+ }
30
+ return blocks.join('\n\n');
31
+ }
32
+ // ---------------------------------------------------------------------------
33
+ // Node SelectFields
34
+ // ---------------------------------------------------------------------------
35
+ function emitNodeSelectFields(node, schema) {
36
+ const members = [];
37
+ // Scalar / enum fields
38
+ for (const [, prop] of node.properties) {
39
+ if (prop.isCypher)
40
+ continue;
41
+ members.push(` ${prop.name}?: boolean;`);
42
+ }
43
+ // Relationship fields
44
+ for (const [, rel] of node.relationships)
45
+ members.push(emitRelationshipField(rel));
46
+ // Connection fields
47
+ for (const [, rel] of node.relationships)
48
+ members.push(emitConnectionField(node.typeName, rel, schema));
49
+ return `export type ${node.typeName}SelectFields = {\n${members.join('\n')}\n};`;
50
+ }
51
+ // ---------------------------------------------------------------------------
52
+ // Interface SelectFields
53
+ // ---------------------------------------------------------------------------
54
+ function emitInterfaceSelectFields(iface, schema) {
55
+ const members = [];
56
+ // Scalar / enum fields
57
+ for (const [, prop] of iface.properties) {
58
+ if (prop.isCypher)
59
+ continue;
60
+ members.push(` ${prop.name}?: boolean;`);
61
+ }
62
+ // Relationship fields
63
+ for (const [, rel] of iface.relationships)
64
+ members.push(emitRelationshipField(rel));
65
+ // Connection fields — interfaces can also expose connections
66
+ for (const [, rel] of iface.relationships)
67
+ members.push(emitConnectionField(iface.name, rel, schema));
68
+ return `export type ${iface.name}SelectFields = {\n${members.join('\n')}\n};`;
69
+ }
70
+ // ---------------------------------------------------------------------------
71
+ // Edge SelectFields (for relationships with properties)
72
+ // ---------------------------------------------------------------------------
73
+ function emitEdgeSelectFields(schema) {
74
+ const blocks = [];
75
+ const emittedEdges = new Set();
76
+ // Gather all relationship definitions that carry edge properties
77
+ const allNodes = [...schema.nodes.values()];
78
+ for (const node of allNodes)
79
+ for (const [, rel] of node.relationships) {
80
+ if (!rel.properties)
81
+ continue;
82
+ const edgeTypeName = buildEdgeSelectFieldsName(node.typeName, rel);
83
+ if (emittedEdges.has(edgeTypeName))
84
+ continue;
85
+ emittedEdges.add(edgeTypeName);
86
+ const propsType = schema.relationshipProperties.get(rel.properties);
87
+ if (!propsType)
88
+ continue;
89
+ const members = buildScalarMembers(propsType.properties);
90
+ blocks.push(`export type ${edgeTypeName} = {\n${members.join('\n')}\n};`);
91
+ }
92
+ // Sort for deterministic output
93
+ blocks.sort();
94
+ return blocks;
95
+ }
96
+ // ---------------------------------------------------------------------------
97
+ // Helpers
98
+ // ---------------------------------------------------------------------------
99
+ /** Emits a single relationship field entry (non-connection). */
100
+ function emitRelationshipField(rel) {
101
+ return ` ${rel.fieldName}?: boolean | { where?: ${rel.target}Where; select?: ${rel.target}SelectFields };`;
102
+ }
103
+ /**
104
+ * Emits a single connection field entry.
105
+ *
106
+ * Pattern:
107
+ * ```
108
+ * drugsConnection?: boolean | {
109
+ * where?: ChartDrugsConnectionWhere;
110
+ * select: {
111
+ * edges?: boolean | {
112
+ * node?: boolean | { select: DrugSelectFields };
113
+ * properties?: boolean | { select: ChartDrugsEdgeSelectFields };
114
+ * };
115
+ * };
116
+ * };
117
+ * ```
118
+ */
119
+ function emitConnectionField(ownerTypeName, rel, schema) {
120
+ const connFieldName = `${rel.fieldName}Connection`;
121
+ const connWhereName = `${ownerTypeName}${(0, helpers_1.toPascalCase)(rel.fieldName)}ConnectionWhere`;
122
+ const targetSelect = `${rel.target}SelectFields`;
123
+ // Build edge inner type
124
+ const edgeMembers = [
125
+ ` node?: boolean | { select: ${targetSelect} };`,
126
+ ];
127
+ // Only include properties if the relationship carries edge properties
128
+ if (rel.properties) {
129
+ const propsType = schema.relationshipProperties.get(rel.properties);
130
+ if (propsType) {
131
+ const edgeSelectName = buildEdgeSelectFieldsName(ownerTypeName, rel);
132
+ edgeMembers.push(` properties?: boolean | { select: ${edgeSelectName} };`);
133
+ }
134
+ }
135
+ const lines = [
136
+ ` ${connFieldName}?: boolean | {`,
137
+ ` where?: ${connWhereName};`,
138
+ ` select: {`,
139
+ ` edges?: boolean | {`,
140
+ ...edgeMembers,
141
+ ` };`,
142
+ ` };`,
143
+ ` };`,
144
+ ];
145
+ return lines.join('\n');
146
+ }
147
+ /**
148
+ * Builds the name for an edge SelectFields type.
149
+ *
150
+ * Convention: `<OwnerType><PascalFieldName>EdgeSelectFields`
151
+ * Example: `ChartDrugsEdgeSelectFields`
152
+ */
153
+ function buildEdgeSelectFieldsName(ownerTypeName, rel) {
154
+ return `${ownerTypeName}${(0, helpers_1.toPascalCase)(rel.fieldName)}EdgeSelectFields`;
155
+ }
156
+ /**
157
+ * Builds `fieldName?: boolean;` members for a set of scalar properties,
158
+ * skipping @cypher fields.
159
+ */
160
+ function buildScalarMembers(properties) {
161
+ const members = [];
162
+ for (const [, prop] of properties) {
163
+ if (prop.isCypher)
164
+ continue;
165
+ members.push(` ${prop.name}?: boolean;`);
166
+ }
167
+ return members;
168
+ }
169
+ //# sourceMappingURL=select-fields-emitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-fields-emitter.js","sourceRoot":"","sources":["../../../../src/generator/type-emitters/select-fields-emitter.ts"],"names":[],"mappings":";;AAcA,oDAkCC;AAzCD,uCAAyC;AAEzC;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,MAAsB;IACzD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,4EAA4E;IAC5E,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;IAElE,4CAA4C;IAC5C,MAAM,WAAW,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAChE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CACnB,CAAC;IAEF,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,WAAW;QAChC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAElD,iDAAiD;IACjD,MAAM,gBAAgB,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1E,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CACnB,CAAC;IAEF,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,gBAAgB;QACtC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAExD,yDAAyD;IACzD,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3E,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CACnB,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,YAAY,EAAE,CAAC;QAC3C,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxE,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,kBAAkB,YAAY,GAAG,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,SAAS,oBAAoB,CAC3B,IAAoB,EACpB,MAAsB;IAEtB,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,uBAAuB;IACvB,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,QAAQ;YAAE,SAAS;QAC5B,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,aAAa,CAAC,CAAC;IAC5C,CAAC;IAED,sBAAsB;IACtB,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa;QACtC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;IAE3C,oBAAoB;IACpB,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa;QACtC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IAEhE,OAAO,eAAe,IAAI,CAAC,QAAQ,qBAAqB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACnF,CAAC;AAED,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E,SAAS,yBAAyB,CAChC,KAA0B,EAC1B,MAAsB;IAEtB,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,uBAAuB;IACvB,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,QAAQ;YAAE,SAAS;QAC5B,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,aAAa,CAAC,CAAC;IAC5C,CAAC;IAED,sBAAsB;IACtB,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,aAAa;QACvC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;IAE3C,6DAA6D;IAC7D,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,aAAa;QACvC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IAE7D,OAAO,eAAe,KAAK,CAAC,IAAI,qBAAqB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAChF,CAAC;AAED,8EAA8E;AAC9E,wDAAwD;AACxD,8EAA8E;AAE9E,SAAS,oBAAoB,CAAC,MAAsB;IAClD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IAEvC,iEAAiE;IACjE,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAE5C,KAAK,MAAM,IAAI,IAAI,QAAQ;QACzB,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACzC,IAAI,CAAC,GAAG,CAAC,UAAU;gBAAE,SAAS;YAE9B,MAAM,YAAY,GAAG,yBAAyB,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACnE,IAAI,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;gBAAE,SAAS;YAC7C,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAE/B,MAAM,SAAS,GAAG,MAAM,CAAC,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACpE,IAAI,CAAC,SAAS;gBAAE,SAAS;YAEzB,MAAM,OAAO,GAAG,kBAAkB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACzD,MAAM,CAAC,IAAI,CAAC,eAAe,YAAY,SAAS,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5E,CAAC;IAEH,gCAAgC;IAChC,MAAM,CAAC,IAAI,EAAE,CAAC;IACd,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,gEAAgE;AAChE,SAAS,qBAAqB,CAAC,GAA2B;IACxD,OAAO,KAAK,GAAG,CAAC,SAAS,0BAA0B,GAAG,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAAM,iBAAiB,CAAC;AAC9G,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,mBAAmB,CAC1B,aAAqB,EACrB,GAA2B,EAC3B,MAAsB;IAEtB,MAAM,aAAa,GAAG,GAAG,GAAG,CAAC,SAAS,YAAY,CAAC;IACnD,MAAM,aAAa,GAAG,GAAG,aAAa,GAAG,IAAA,sBAAY,EAAC,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC;IACtF,MAAM,YAAY,GAAG,GAAG,GAAG,CAAC,MAAM,cAAc,CAAC;IAEjD,wBAAwB;IACxB,MAAM,WAAW,GAAa;QAC5B,sCAAsC,YAAY,KAAK;KACxD,CAAC;IAEF,sEAAsE;IACtE,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,MAAM,CAAC,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACpE,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,cAAc,GAAG,yBAAyB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;YACrE,WAAW,CAAC,IAAI,CACd,4CAA4C,cAAc,KAAK,CAChE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,KAAK,aAAa,gBAAgB;QAClC,eAAe,aAAa,GAAG;QAC/B,eAAe;QACf,2BAA2B;QAC3B,GAAG,WAAW;QACd,UAAU;QACV,QAAQ;QACR,MAAM;KACP,CAAC;IAEF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,SAAS,yBAAyB,CAChC,aAAqB,EACrB,GAA2B;IAE3B,OAAO,GAAG,aAAa,GAAG,IAAA,sBAAY,EAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC;AAC1E,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CACzB,UAA2C;IAE3C,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,QAAQ;YAAE,SAAS;QAC5B,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,aAAa,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Emits the schema-independent `SelectFields` base type and `SelectResult`
3
+ * utility type that infers return shapes from a `select` object.
4
+ *
5
+ * These types are emitted once per generated file and do not depend on
6
+ * the parsed schema.
7
+ */
8
+ export declare function emitSelectResultType(): string;
9
+ //# sourceMappingURL=select-result-emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-result-emitter.d.ts","sourceRoot":"","sources":["../../../../src/generator/type-emitters/select-result-emitter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAiD7C"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.emitSelectResultType = emitSelectResultType;
4
+ /**
5
+ * Emits the schema-independent `SelectFields` base type and `SelectResult`
6
+ * utility type that infers return shapes from a `select` object.
7
+ *
8
+ * These types are emitted once per generated file and do not depend on
9
+ * the parsed schema.
10
+ */
11
+ function emitSelectResultType() {
12
+ return `export type SelectFields = Record<
13
+ string,
14
+ boolean | { select: SelectFields } | { where?: unknown; select: unknown }
15
+ >;
16
+
17
+ export type SelectResult<T, S extends SelectFields> = {
18
+ [K in keyof S & keyof T]: S[K] extends true
19
+ ? T[K]
20
+ : S[K] extends { select: infer NestedS }
21
+ ? T[K] extends Array<infer U>
22
+ ? NestedS extends SelectFields
23
+ ? Array<SelectResult<U, NestedS>>
24
+ : T[K]
25
+ : T[K] extends infer U | null | undefined
26
+ ? NestedS extends SelectFields
27
+ ? SelectResult<NonNullable<U>, NestedS> | null
28
+ : T[K]
29
+ : T[K]
30
+ : never;
31
+ };
32
+
33
+ type MutationInfoFields = {
34
+ nodesCreated: number;
35
+ nodesDeleted: number;
36
+ relationshipsCreated: number;
37
+ relationshipsDeleted: number;
38
+ };
39
+
40
+ export type MutationInfoResult<S extends Record<string, boolean>> = {
41
+ [K in keyof S & keyof MutationInfoFields]: MutationInfoFields[K];
42
+ };
43
+
44
+ export type MutationSelectResult<
45
+ T,
46
+ TPluralKey extends string,
47
+ S extends Record<string, unknown>,
48
+ > =
49
+ ('info' extends keyof S
50
+ ? S['info'] extends Record<string, boolean>
51
+ ? { info: MutationInfoResult<S['info']> }
52
+ : {}
53
+ : {})
54
+ &
55
+ (TPluralKey extends keyof S
56
+ ? S[TPluralKey] extends SelectFields
57
+ ? { [K in TPluralKey]: Array<SelectResult<T, S[TPluralKey] & SelectFields>> }
58
+ : {}
59
+ : {});`;
60
+ }
61
+ //# sourceMappingURL=select-result-emitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-result-emitter.js","sourceRoot":"","sources":["../../../../src/generator/type-emitters/select-result-emitter.ts"],"names":[],"mappings":";;AAOA,oDAiDC;AAxDD;;;;;;GAMG;AACH,SAAgB,oBAAoB;IAClC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA+CE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { SchemaMetadata } from '../../schema/types';
2
+ /**
3
+ * For each node in the schema, emits a `<Node>Sort` type (with one optional
4
+ * `SortDirection` field per scalar property) and a `<Node>Options` type that
5
+ * exposes `limit`, `offset`, and `sort`.
6
+ */
7
+ export declare function emitSortOptions(schema: SchemaMetadata): string;
8
+ //# sourceMappingURL=sort-options-emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-options-emitter.d.ts","sourceRoot":"","sources":["../../../../src/generator/type-emitters/sort-options-emitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,oBAAoB,CAAC;AAEzE;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAW9D"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.emitSortOptions = emitSortOptions;
4
+ /**
5
+ * For each node in the schema, emits a `<Node>Sort` type (with one optional
6
+ * `SortDirection` field per scalar property) and a `<Node>Options` type that
7
+ * exposes `limit`, `offset`, and `sort`.
8
+ */
9
+ function emitSortOptions(schema) {
10
+ const blocks = [];
11
+ // Process nodes in alphabetical order
12
+ const sortedNodes = [...schema.nodes.entries()].sort(([a], [b]) => a.localeCompare(b));
13
+ for (const [, node] of sortedNodes)
14
+ blocks.push(emitNodeSortAndOptions(node));
15
+ return blocks.join('\n\n');
16
+ }
17
+ // ---------------------------------------------------------------------------
18
+ // Helpers
19
+ // ---------------------------------------------------------------------------
20
+ function emitNodeSortAndOptions(node) {
21
+ const sortFields = getSortableProperties(node);
22
+ const sortMembers = sortFields
23
+ .map((name) => ` ${name}?: InputMaybe<SortDirection>;`)
24
+ .join('\n');
25
+ const sortType = `export type ${node.typeName}Sort = {\n${sortMembers}\n};`;
26
+ const optionsType = `export type ${node.typeName}Options = {
27
+ limit?: InputMaybe<Scalars["Int"]["input"]>;
28
+ offset?: InputMaybe<Scalars["Int"]["input"]>;
29
+ sort?: InputMaybe<Array<${node.typeName}Sort>>;
30
+ };`;
31
+ return `${sortType}\n\n${optionsType}`;
32
+ }
33
+ /**
34
+ * Returns the names of all scalar (non-relationship, non-cypher) properties
35
+ * on a node, preserving the insertion order of the properties map.
36
+ */
37
+ function getSortableProperties(node) {
38
+ const names = [];
39
+ for (const [name, prop] of node.properties) {
40
+ // Skip @cypher fields — they are computed and not stored
41
+ if (prop.isCypher)
42
+ continue;
43
+ names.push(name);
44
+ }
45
+ return names;
46
+ }
47
+ //# sourceMappingURL=sort-options-emitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-options-emitter.js","sourceRoot":"","sources":["../../../../src/generator/type-emitters/sort-options-emitter.ts"],"names":[],"mappings":";;AAOA,0CAWC;AAhBD;;;;GAIG;AACH,SAAgB,eAAe,CAAC,MAAsB;IACpD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,sCAAsC;IACtC,MAAM,WAAW,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAChE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CACnB,CAAC;IAEF,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,WAAW;QAAE,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9E,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAS,sBAAsB,CAAC,IAAoB;IAClD,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAE/C,MAAM,WAAW,GAAG,UAAU;SAC3B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,+BAA+B,CAAC;SACvD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,QAAQ,GAAG,eAAe,IAAI,CAAC,QAAQ,aAAa,WAAW,MAAM,CAAC;IAE5E,MAAM,WAAW,GAAG,eAAe,IAAI,CAAC,QAAQ;;;4BAGtB,IAAI,CAAC,QAAQ;GACtC,CAAC;IAEF,OAAO,GAAG,QAAQ,OAAO,WAAW,EAAE,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,IAAoB;IACjD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAC3C,yDAAyD;QACzD,IAAI,IAAI,CAAC,QAAQ;YAAE,SAAS;QAE5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Emits the static utility types that appear at the top of every generated
3
+ * `ogm-types.ts` file. These types are schema-independent.
4
+ */
5
+ export declare function emitHeader(config?: {
6
+ header?: string;
7
+ }, packageName?: string): string;
8
+ export declare function emitImports(packageName?: string): string;
9
+ export declare function emitUtilityTypes(): string;
10
+ //# sourceMappingURL=utility-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utility-types.d.ts","sourceRoot":"","sources":["../../../../src/generator/type-emitters/utility-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,wBAAgB,UAAU,CACxB,MAAM,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5B,WAAW,SAAe,GACzB,MAAM,CASR;AAMD,wBAAgB,WAAW,CAAC,WAAW,SAAe,GAAG,MAAM,CAK9D;AAMD,wBAAgB,gBAAgB,IAAI,MAAM,CA0DzC"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ /**
3
+ * Emits the static utility types that appear at the top of every generated
4
+ * `ogm-types.ts` file. These types are schema-independent.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.emitHeader = emitHeader;
8
+ exports.emitImports = emitImports;
9
+ exports.emitUtilityTypes = emitUtilityTypes;
10
+ // ---------------------------------------------------------------------------
11
+ // Header
12
+ // ---------------------------------------------------------------------------
13
+ function emitHeader(config, packageName = 'grafeo-ogm') {
14
+ const lines = [
15
+ '// AUTO-GENERATED FILE — DO NOT EDIT',
16
+ `// Generated by ${packageName} generateTypes()`,
17
+ ];
18
+ if (config?.header)
19
+ lines.push(config.header);
20
+ return lines.join('\n');
21
+ }
22
+ // ---------------------------------------------------------------------------
23
+ // Imports
24
+ // ---------------------------------------------------------------------------
25
+ function emitImports(packageName = 'grafeo-ogm') {
26
+ return [
27
+ 'import type { SelectionSetNode, DocumentNode } from "graphql";',
28
+ `import type { Model, ModelInterface, InterfaceModelInterface } from "${packageName}";`,
29
+ ].join('\n');
30
+ }
31
+ // ---------------------------------------------------------------------------
32
+ // Utility types (copied verbatim from the Neo4j OGM codegen output)
33
+ // ---------------------------------------------------------------------------
34
+ function emitUtilityTypes() {
35
+ return `export type Maybe<T> = T | null;
36
+ export type InputMaybe<T> = Maybe<T>;
37
+ export type Exact<T extends { [key: string]: unknown }> = {
38
+ [K in keyof T]: T[K];
39
+ };
40
+ export type MakeOptional<T, K extends keyof T> = Omit<T, K> & {
41
+ [SubKey in K]?: Maybe<T[SubKey]>;
42
+ };
43
+ export type MakeMaybe<T, K extends keyof T> = Omit<T, K> & {
44
+ [SubKey in K]: Maybe<T[SubKey]>;
45
+ };
46
+ export type MakeEmpty<
47
+ T extends { [key: string]: unknown },
48
+ K extends keyof T
49
+ > = { [_ in K]?: never };
50
+ export type Incremental<T> =
51
+ | T
52
+ | {
53
+ [P in keyof T]?: P extends " $fragmentName" | "__typename" ? T[P] : never;
54
+ };
55
+ /** All built-in and custom scalars, mapped to their actual values */
56
+ export type Scalars = {
57
+ /** The \`ID\` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as \`"4"\`) or integer (such as \`4\`) input value will be accepted as an ID. */
58
+ ID: { input: string; output: string };
59
+ /** The \`String\` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text. */
60
+ String: { input: string; output: string };
61
+ /** The \`Boolean\` scalar type represents \`true\` or \`false\`. */
62
+ Boolean: { input: boolean; output: boolean };
63
+ /** The \`Int\` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1. */
64
+ Int: { input: number; output: number };
65
+ /** The \`Float\` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point). */
66
+ Float: { input: number; output: number };
67
+ /** A date and time, represented as an ISO-8601 string */
68
+ DateTime: { input: any; output: any };
69
+ /** A 64-bit integer, represented as a string to avoid precision loss */
70
+ BigInt: { input: string; output: string };
71
+ /** A date without time, represented as an ISO-8601 date string (e.g. "2024-01-15") */
72
+ Date: { input: string; output: string };
73
+ /** A time with UTC offset, represented as an ISO-8601 time string (e.g. "12:30:00Z") */
74
+ Time: { input: string; output: string };
75
+ /** A local time without timezone, represented as an ISO-8601 time string (e.g. "12:30:00") */
76
+ LocalTime: { input: string; output: string };
77
+ /** A local date and time without timezone, represented as an ISO-8601 string */
78
+ LocalDateTime: { input: string; output: string };
79
+ /** An ISO 8601 duration (e.g. "P1Y2M3DT4H5M6S") */
80
+ Duration: { input: string; output: string };
81
+ /** A geographic point (WGS 84). Input accepts latitude/longitude; output uses x (longitude), y (latitude) from the driver */
82
+ Point: {
83
+ input: { latitude: number; longitude: number; height?: number; srid?: number };
84
+ output: { x: number; y: number; z?: number; srid: number };
85
+ };
86
+ /** A cartesian point with x, y, optional z coordinates, and SRID */
87
+ CartesianPoint: {
88
+ input: { x: number; y: number; z?: number; srid?: number };
89
+ output: { x: number; y: number; z?: number; srid: number };
90
+ };
91
+ };`;
92
+ }
93
+ //# sourceMappingURL=utility-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utility-types.js","sourceRoot":"","sources":["../../../../src/generator/type-emitters/utility-types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAMH,gCAYC;AAMD,kCAKC;AAMD,4CA0DC;AA3FD,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,SAAgB,UAAU,CACxB,MAA4B,EAC5B,WAAW,GAAG,YAAY;IAE1B,MAAM,KAAK,GAAG;QACZ,sCAAsC;QACtC,mBAAmB,WAAW,kBAAkB;KACjD,CAAC;IAEF,IAAI,MAAM,EAAE,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE9C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAgB,WAAW,CAAC,WAAW,GAAG,YAAY;IACpD,OAAO;QACL,gEAAgE;QAChE,wEAAwE,WAAW,IAAI;KACxF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,oEAAoE;AACpE,8EAA8E;AAE9E,SAAgB,gBAAgB;IAC9B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDN,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { SchemaMetadata } from '../../schema/types';
2
+ export interface WhereEmitterConfig {
3
+ /** When `false`, omits `_MATCHES` for String fields. Defaults to `true`. */
4
+ stringMatchesFilter?: boolean;
5
+ }
6
+ /**
7
+ * Emits `{TypeName}Where` types for every node and interface in the schema.
8
+ *
9
+ * Each Where type contains:
10
+ * 1. Scalar operator fields (per scalar property)
11
+ * 2. Relationship operator fields (per relationship)
12
+ * 3. Logical operators (OR, AND, NOT)
13
+ */
14
+ export declare function emitWhereTypes(schema: SchemaMetadata, config?: WhereEmitterConfig): string;
15
+ //# sourceMappingURL=where-emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"where-emitter.d.ts","sourceRoot":"","sources":["../../../../src/generator/type-emitters/where-emitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAIf,MAAM,oBAAoB,CAAC;AAO5B,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,cAAc,EACtB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,MAAM,CA8DR"}
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.emitWhereTypes = emitWhereTypes;
4
+ const helpers_1 = require("./helpers");
5
+ /**
6
+ * Emits `{TypeName}Where` types for every node and interface in the schema.
7
+ *
8
+ * Each Where type contains:
9
+ * 1. Scalar operator fields (per scalar property)
10
+ * 2. Relationship operator fields (per relationship)
11
+ * 3. Logical operators (OR, AND, NOT)
12
+ */
13
+ function emitWhereTypes(schema, config) {
14
+ const blocks = [];
15
+ const enableMatches = config?.stringMatchesFilter !== false;
16
+ // Node Where types (sorted alphabetically)
17
+ const sortedNodes = [...schema.nodes.entries()].sort(([a], [b]) => a.localeCompare(b));
18
+ for (const [, node] of sortedNodes)
19
+ blocks.push(emitWhereType(node.typeName, node.properties, node.relationships, schema, enableMatches, node));
20
+ // Interface Where types (sorted alphabetically)
21
+ const sortedInterfaces = [...schema.interfaces.entries()].sort(([a], [b]) => a.localeCompare(b));
22
+ for (const [, iface] of sortedInterfaces)
23
+ blocks.push(emitWhereType(iface.name, iface.properties, iface.relationships, schema, enableMatches));
24
+ // Relationship-property Where types (sorted alphabetically)
25
+ const sortedRelProps = [...schema.relationshipProperties.entries()].sort(([a], [b]) => a.localeCompare(b));
26
+ for (const [, relProp] of sortedRelProps)
27
+ blocks.push(emitWhereType(relProp.typeName, relProp.properties, new Map(), schema, enableMatches));
28
+ // Union Where types (per-member keyed)
29
+ const sortedUnions = [...(schema.unions?.entries() ?? [])].sort(([a], [b]) => a.localeCompare(b));
30
+ for (const [name, members] of sortedUnions)
31
+ blocks.push(emitUnionWhereType(name, members));
32
+ return blocks.join('\n\n');
33
+ }
34
+ // ---------------------------------------------------------------------------
35
+ // Core emitter
36
+ // ---------------------------------------------------------------------------
37
+ function emitWhereType(typeName, properties, relationships, schema, enableMatches, nodeDef) {
38
+ const lines = [];
39
+ // 1. Scalar operator fields (including @cypher fields with scalar return types)
40
+ for (const [, prop] of properties) {
41
+ // Skip @cypher fields that return node/interface types (not scalars)
42
+ if (prop.isCypher &&
43
+ !(0, helpers_1.isBuiltInScalar)(prop.type) &&
44
+ !schema.enums.has(prop.type))
45
+ continue;
46
+ lines.push(...emitScalarOperators(prop, schema, enableMatches));
47
+ }
48
+ // 2. Logical operators (before relationships, matching reference output)
49
+ lines.push(` OR?: InputMaybe<Array<${typeName}Where>>;`);
50
+ lines.push(` AND?: InputMaybe<Array<${typeName}Where>>;`);
51
+ lines.push(` NOT?: InputMaybe<${typeName}Where>;`);
52
+ // 3. Relationship operator fields
53
+ for (const [, rel] of relationships)
54
+ lines.push(...emitRelationshipOperators(typeName, rel, schema, nodeDef));
55
+ return `export type ${typeName}Where = {\n${lines.join('\n')}\n};`;
56
+ }
57
+ /** Temporal types that support comparison operators (LT, LTE, GT, GTE) */
58
+ const TEMPORAL_TYPES = new Set([
59
+ 'DateTime',
60
+ 'Date',
61
+ 'Time',
62
+ 'LocalTime',
63
+ 'LocalDateTime',
64
+ 'Duration',
65
+ ]);
66
+ /** Spatial types that only support equality and IN operators */
67
+ const SPATIAL_TYPES = new Set(['Point', 'CartesianPoint']);
68
+ function classifyType(typeName, enums) {
69
+ if (typeName === 'Boolean')
70
+ return 'boolean';
71
+ if (typeName === 'ID' || typeName === 'String')
72
+ return 'string-like';
73
+ if (typeName === 'Int' || typeName === 'Float' || typeName === 'BigInt')
74
+ return 'numeric-like';
75
+ if (TEMPORAL_TYPES.has(typeName))
76
+ return 'numeric-like';
77
+ if (SPATIAL_TYPES.has(typeName))
78
+ return 'spatial';
79
+ if (enums.has(typeName))
80
+ return 'enum';
81
+ // Default to string-like for unknown scalars
82
+ return 'string-like';
83
+ }
84
+ function scalarInputType(typeName, enums) {
85
+ if ((0, helpers_1.isBuiltInScalar)(typeName))
86
+ return `Scalars["${typeName}"]["input"]`;
87
+ if (enums.has(typeName))
88
+ return typeName;
89
+ return `Scalars["${typeName}"]["input"]`;
90
+ }
91
+ function emitScalarOperators(prop, schema, enableMatches) {
92
+ const lines = [];
93
+ const { name, type, required } = prop;
94
+ const category = classifyType(type, schema.enums);
95
+ const inputType = scalarInputType(type, schema.enums);
96
+ const wrap = (inner) => `InputMaybe<${inner}>`;
97
+ // Exact match
98
+ lines.push(` ${name}?: ${wrap(inputType)};`);
99
+ // _NOT
100
+ lines.push(` ${name}_NOT?: ${wrap(inputType)};`);
101
+ if (category === 'boolean')
102
+ // Boolean only has exact + _NOT
103
+ return lines;
104
+ // _IN / _NOT_IN (all non-boolean types)
105
+ const arrayInner = required ? inputType : `InputMaybe<${inputType}>`;
106
+ lines.push(` ${name}_IN?: ${wrap(`Array<${arrayInner}>`)};`);
107
+ lines.push(` ${name}_NOT_IN?: ${wrap(`Array<${arrayInner}>`)};`);
108
+ // Category-specific operators
109
+ switch (category) {
110
+ case 'string-like':
111
+ lines.push(` ${name}_CONTAINS?: ${wrap(inputType)};`);
112
+ lines.push(` ${name}_STARTS_WITH?: ${wrap(inputType)};`);
113
+ lines.push(` ${name}_ENDS_WITH?: ${wrap(inputType)};`);
114
+ // _MATCHES only for String (not ID), and only if enabled
115
+ if (type === 'String' && enableMatches)
116
+ lines.push(` ${name}_MATCHES?: ${wrap(inputType)};`);
117
+ lines.push(` ${name}_NOT_CONTAINS?: ${wrap(inputType)};`);
118
+ lines.push(` ${name}_NOT_STARTS_WITH?: ${wrap(inputType)};`);
119
+ lines.push(` ${name}_NOT_ENDS_WITH?: ${wrap(inputType)};`);
120
+ break;
121
+ case 'numeric-like':
122
+ lines.push(` ${name}_LT?: ${wrap(inputType)};`);
123
+ lines.push(` ${name}_LTE?: ${wrap(inputType)};`);
124
+ lines.push(` ${name}_GT?: ${wrap(inputType)};`);
125
+ lines.push(` ${name}_GTE?: ${wrap(inputType)};`);
126
+ break;
127
+ case 'enum':
128
+ // Enum has exact, _NOT, _IN, _NOT_IN — already emitted above
129
+ break;
130
+ case 'spatial':
131
+ // Spatial types only support exact, _NOT, _IN, _NOT_IN — already emitted above
132
+ break;
133
+ }
134
+ return lines;
135
+ }
136
+ // ---------------------------------------------------------------------------
137
+ // Relationship operator generation
138
+ // ---------------------------------------------------------------------------
139
+ function emitRelationshipOperators(parentType, rel, schema, nodeDef) {
140
+ const lines = [];
141
+ const { fieldName, target, isArray } = rel;
142
+ const pascalField = (0, helpers_1.toPascalCase)(fieldName);
143
+ // For relationships inherited from an interface (@declareRelationship),
144
+ // use the interface-level ConnectionWhere type name
145
+ let connectionWhereName = `${parentType}${pascalField}ConnectionWhere`;
146
+ if (schema && nodeDef)
147
+ for (const ifaceName of nodeDef.implementsInterfaces) {
148
+ const iface = schema.interfaces.get(ifaceName);
149
+ if (iface?.relationships.has(fieldName)) {
150
+ connectionWhereName = `${ifaceName}${pascalField}ConnectionWhere`;
151
+ break;
152
+ }
153
+ }
154
+ // Aggregate filter operator
155
+ const aggInputName = `${parentType}${pascalField}AggregateInput`;
156
+ lines.push(` ${fieldName}Aggregate?: InputMaybe<${aggInputName}>;`);
157
+ if (isArray) {
158
+ // Array relationship: full set of operators
159
+ lines.push(` ${fieldName}?: InputMaybe<${target}Where>;`);
160
+ lines.push(` ${fieldName}_NOT?: InputMaybe<${target}Where>;`);
161
+ lines.push(` ${fieldName}Connection?: InputMaybe<${connectionWhereName}>;`);
162
+ lines.push(` ${fieldName}Connection_NOT?: InputMaybe<${connectionWhereName}>;`);
163
+ lines.push(` ${fieldName}_ALL?: InputMaybe<${target}Where>;`);
164
+ lines.push(` ${fieldName}_NONE?: InputMaybe<${target}Where>;`);
165
+ lines.push(` ${fieldName}_SINGLE?: InputMaybe<${target}Where>;`);
166
+ lines.push(` ${fieldName}_SOME?: InputMaybe<${target}Where>;`);
167
+ lines.push(` ${fieldName}Connection_ALL?: InputMaybe<${connectionWhereName}>;`);
168
+ lines.push(` ${fieldName}Connection_NONE?: InputMaybe<${connectionWhereName}>;`);
169
+ lines.push(` ${fieldName}Connection_SINGLE?: InputMaybe<${connectionWhereName}>;`);
170
+ lines.push(` ${fieldName}Connection_SOME?: InputMaybe<${connectionWhereName}>;`);
171
+ }
172
+ else {
173
+ // Singular relationship: limited operators
174
+ lines.push(` ${fieldName}?: InputMaybe<${target}Where>;`);
175
+ lines.push(` ${fieldName}_NOT?: InputMaybe<${target}Where>;`);
176
+ lines.push(` ${fieldName}Connection?: InputMaybe<${connectionWhereName}>;`);
177
+ lines.push(` ${fieldName}Connection_NOT?: InputMaybe<${connectionWhereName}>;`);
178
+ }
179
+ return lines;
180
+ }
181
+ // ---------------------------------------------------------------------------
182
+ // Union Where types (per-member keyed)
183
+ // ---------------------------------------------------------------------------
184
+ function emitUnionWhereType(name, members) {
185
+ const sorted = [...members].sort();
186
+ const lines = sorted.map((m) => ` ${m}?: InputMaybe<${m}Where>;`);
187
+ return `export type ${name}Where = {\n${lines.join('\n')}\n};`;
188
+ }
189
+ //# sourceMappingURL=where-emitter.js.map