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,507 @@
1
+ import { int as neo4jInt } from 'neo4j-driver';
2
+ import { FulltextCompiler } from './compilers/fulltext.compiler';
3
+ import { MutationCompiler } from './compilers/mutation.compiler';
4
+ import { SelectNormalizer } from './compilers/select-normalizer';
5
+ import { SelectionCompiler, } from './compilers/selection.compiler';
6
+ import { WhereCompiler } from './compilers/where.compiler';
7
+ import { OGMError, RecordNotFoundError } from './errors';
8
+ import { Executor } from './execution/executor';
9
+ import { ResultMapper } from './execution/result-mapper';
10
+ import { assertSafeIdentifier, assertSafeLabel, assertSortDirection, escapeIdentifier, } from './utils/validation';
11
+ /** Type guard: checks if a fulltext input is a leaf (not a logical operator) */
12
+ export function isFulltextLeaf(input) {
13
+ return !('OR' in input || 'AND' in input || 'NOT' in input);
14
+ }
15
+ /** Type guard: checks if a value is a direct index entry (has `phrase`) */
16
+ export function isFulltextIndexEntry(value) {
17
+ return 'phrase' in value;
18
+ }
19
+ export class Model {
20
+ /** Clear the static selection cache. Useful in tests to prevent cross-test pollution. */
21
+ static clearSelectionCache() {
22
+ Model._selectionCache.clear();
23
+ }
24
+ constructor(nodeDef, schema, driver, compilers, logger) {
25
+ this.nodeDef = nodeDef;
26
+ this.schema = schema;
27
+ this._maxDepth = 5;
28
+ this.whereCompiler = compilers?.where ?? new WhereCompiler(schema);
29
+ this.selectionCompiler =
30
+ compilers?.selection ?? new SelectionCompiler(schema, this.whereCompiler);
31
+ this.selectNormalizer =
32
+ compilers?.selectNormalizer ?? new SelectNormalizer(schema);
33
+ this.mutationCompiler = compilers?.mutation ?? new MutationCompiler(schema);
34
+ this.fulltextCompiler = compilers?.fulltext ?? new FulltextCompiler(schema);
35
+ this.executor = new Executor(driver, logger);
36
+ }
37
+ /** Override the default RETURN clause -- legacy escape hatch */
38
+ set selectionSet(value) {
39
+ if (typeof value === 'string') {
40
+ this._selectionSet = value;
41
+ this._parsedSelection = this.selectionCompiler.parseSelectionSet(value);
42
+ }
43
+ else {
44
+ // DocumentNode -- convert to string first
45
+ const str = typeof value === 'object' && 'loc' in value && value.loc?.source?.body
46
+ ? value.loc.source.body
47
+ : String(value);
48
+ this._selectionSet = str;
49
+ this._parsedSelection = this.selectionCompiler.parseSelectionSet(str);
50
+ }
51
+ }
52
+ set maxDepth(value) {
53
+ this._maxDepth = value;
54
+ }
55
+ // --- find -----------------------------------------------------------------
56
+ async find(params) {
57
+ if (params?.select && params?.selectionSet)
58
+ throw new OGMError('Cannot provide both "select" and "selectionSet". They are mutually exclusive.');
59
+ const cypherParts = [];
60
+ const allParams = {};
61
+ const paramCounter = { count: 0 };
62
+ // Determine selection
63
+ let selection;
64
+ if (params?.select)
65
+ selection = this.selectNormalizer.normalize(params.select, this.nodeDef);
66
+ else if (params?.selectionSet) {
67
+ const selStr = typeof params.selectionSet === 'string'
68
+ ? params.selectionSet
69
+ : (params.selectionSet.loc?.source?.body ??
70
+ String(params.selectionSet));
71
+ if (Model._selectionCache.has(selStr))
72
+ selection = Model._selectionCache.get(selStr);
73
+ else {
74
+ selection = this.selectionCompiler.parseSelectionSet(selStr);
75
+ if (Model._selectionCache.size < 500)
76
+ Model._selectionCache.set(selStr, selection);
77
+ }
78
+ }
79
+ else if (this._parsedSelection)
80
+ selection = this._parsedSelection;
81
+ else
82
+ // Default: return all scalar properties
83
+ selection = this.defaultSelection();
84
+ // Fulltext or MATCH
85
+ if (params?.fulltext) {
86
+ const ft = this.fulltextCompiler.compile(params.fulltext, this.nodeDef, 'n');
87
+ cypherParts.push(ft.cypher);
88
+ Object.assign(allParams, ft.params);
89
+ // Add label filter in WHERE for fulltext queries
90
+ const labelFilters = [
91
+ `n:${escapeIdentifier(this.nodeDef.label)}`,
92
+ ];
93
+ if (params.labels)
94
+ for (const label of params.labels)
95
+ labelFilters.push(`n:${assertSafeLabel(label)}`);
96
+ // Compile WHERE
97
+ const whereResult = this.whereCompiler.compile(params?.where, 'n', this.nodeDef, paramCounter);
98
+ Object.assign(allParams, whereResult.params);
99
+ const whereParts = [labelFilters.join(' AND ')];
100
+ if (ft.scoreThreshold !== undefined)
101
+ whereParts.push('score >= $ft_score');
102
+ if (whereResult.cypher)
103
+ whereParts.push(whereResult.cypher);
104
+ cypherParts.push(`WHERE ${whereParts.join(' AND ')}`);
105
+ }
106
+ else {
107
+ // Standard MATCH
108
+ const validatedLabels = (params?.labels ?? []).map((l) => assertSafeLabel(l));
109
+ const labels = [escapeIdentifier(this.nodeDef.label), ...validatedLabels];
110
+ cypherParts.push(`MATCH (n:${labels.join(':')})`);
111
+ // WHERE
112
+ const whereResult = this.whereCompiler.compile(params?.where, 'n', this.nodeDef, paramCounter);
113
+ if (whereResult.cypher) {
114
+ cypherParts.push(`WHERE ${whereResult.cypher}`);
115
+ Object.assign(allParams, whereResult.params);
116
+ }
117
+ }
118
+ // RETURN
119
+ const returnClause = this.selectionCompiler.compile(selection, 'n', this.nodeDef, this._maxDepth, 0, allParams, paramCounter);
120
+ cypherParts.push(`RETURN ${returnClause}`);
121
+ // OPTIONS (sort, limit, offset)
122
+ if (params?.options) {
123
+ const optCypher = this.compileOptions(params.options, allParams);
124
+ if (optCypher)
125
+ cypherParts.push(optCypher);
126
+ }
127
+ const cypher = cypherParts.join('\n');
128
+ const result = await this.executor.execute(cypher, allParams, params?.context);
129
+ return ResultMapper.mapRecords(result.records, 'n');
130
+ }
131
+ // --- create ---------------------------------------------------------------
132
+ async create(params) {
133
+ if (params.select && params.selectionSet)
134
+ throw new OGMError('Cannot provide both "select" and "selectionSet". They are mutually exclusive.');
135
+ const { cypher, params: mutParams } = this.mutationCompiler.compileCreate(params.input, this.nodeDef, params.labels);
136
+ let finalCypher;
137
+ if (params.select)
138
+ finalCypher = this.applySelectToMutation(cypher, params.select, mutParams);
139
+ else
140
+ finalCypher = this.applySelectionSetToMutation(cypher, params.selectionSet ?? this._selectionSet, mutParams);
141
+ const result = await this.executor.execute(finalCypher, mutParams, params.context);
142
+ const summary = result.summary;
143
+ const counters = summary.counters.updates();
144
+ const mapped = ResultMapper.mapRecords(result.records, 'n');
145
+ if (params.select)
146
+ return this.buildSelectResult(params.select, counters, mapped);
147
+ return {
148
+ info: {
149
+ nodesCreated: counters.nodesCreated,
150
+ nodesDeleted: counters.nodesDeleted,
151
+ relationshipsCreated: counters.relationshipsCreated,
152
+ relationshipsDeleted: counters.relationshipsDeleted,
153
+ },
154
+ [this.nodeDef.pluralName]: mapped,
155
+ };
156
+ }
157
+ // --- update ---------------------------------------------------------------
158
+ async update(params) {
159
+ if (params.select && params.selectionSet)
160
+ throw new OGMError('Cannot provide both "select" and "selectionSet". They are mutually exclusive.');
161
+ const paramCounter = { count: 0 };
162
+ const whereResult = this.whereCompiler.compile(params.where, 'n', this.nodeDef, paramCounter);
163
+ const { cypher, params: mutParams } = this.mutationCompiler.compileUpdate(params.where ?? {}, params.update, params.connect, params.disconnect, this.nodeDef, whereResult, params.labels);
164
+ let finalCypher;
165
+ if (params.select)
166
+ finalCypher = this.applySelectToMutation(cypher, params.select, mutParams);
167
+ else
168
+ finalCypher = this.applySelectionSetToMutation(cypher, params.selectionSet ?? this._selectionSet, mutParams);
169
+ const result = await this.executor.execute(finalCypher, mutParams, params.context);
170
+ const summary = result.summary;
171
+ const counters = summary.counters.updates();
172
+ const mapped = ResultMapper.mapRecords(result.records, 'n');
173
+ if (params.select)
174
+ return this.buildSelectResult(params.select, counters, mapped);
175
+ return {
176
+ info: {
177
+ nodesCreated: counters.nodesCreated,
178
+ nodesDeleted: counters.nodesDeleted,
179
+ relationshipsCreated: counters.relationshipsCreated,
180
+ relationshipsDeleted: counters.relationshipsDeleted,
181
+ },
182
+ [this.nodeDef.pluralName]: mapped,
183
+ };
184
+ }
185
+ // --- delete ---------------------------------------------------------------
186
+ async delete(params) {
187
+ const paramCounter = { count: 0 };
188
+ const whereResult = this.whereCompiler.compile(params.where, 'n', this.nodeDef, paramCounter);
189
+ const { cypher, params: mutParams } = this.mutationCompiler.compileDelete(this.nodeDef, whereResult, params.delete);
190
+ const result = await this.executor.execute(cypher, mutParams, params.context);
191
+ const counters = result.summary.counters.updates();
192
+ return {
193
+ nodesDeleted: counters.nodesDeleted,
194
+ relationshipsDeleted: counters.relationshipsDeleted,
195
+ };
196
+ }
197
+ // --- aggregate ------------------------------------------------------------
198
+ async aggregate(params) {
199
+ const cypherParts = [];
200
+ const allParams = {};
201
+ const paramCounter = { count: 0 };
202
+ if (params.fulltext) {
203
+ const ft = this.fulltextCompiler.compile(params.fulltext, this.nodeDef, 'n');
204
+ cypherParts.push(ft.cypher);
205
+ Object.assign(allParams, ft.params);
206
+ const labelFilters = [`n:${escapeIdentifier(this.nodeDef.label)}`];
207
+ if (params.labels)
208
+ for (const label of params.labels)
209
+ labelFilters.push(`n:${assertSafeLabel(label)}`);
210
+ const whereResult = this.whereCompiler.compile(params.where, 'n', this.nodeDef, paramCounter);
211
+ Object.assign(allParams, whereResult.params);
212
+ const whereParts = [labelFilters.join(' AND ')];
213
+ if (ft.scoreThreshold !== undefined)
214
+ whereParts.push('score >= $ft_score');
215
+ if (whereResult.cypher)
216
+ whereParts.push(whereResult.cypher);
217
+ cypherParts.push(`WHERE ${whereParts.join(' AND ')}`);
218
+ }
219
+ else {
220
+ const validatedLabels = (params.labels ?? []).map((l) => assertSafeLabel(l));
221
+ const labels = [escapeIdentifier(this.nodeDef.label), ...validatedLabels];
222
+ cypherParts.push(`MATCH (n:${labels.join(':')})`);
223
+ const whereResult = this.whereCompiler.compile(params.where, 'n', this.nodeDef, paramCounter);
224
+ if (whereResult.cypher) {
225
+ cypherParts.push(`WHERE ${whereResult.cypher}`);
226
+ Object.assign(allParams, whereResult.params);
227
+ }
228
+ }
229
+ // Build RETURN clause for aggregation
230
+ const returnParts = [];
231
+ if (params.aggregate.count)
232
+ returnParts.push('count(n) AS count');
233
+ for (const [field, enabled] of Object.entries(params.aggregate)) {
234
+ if (field === 'count' || !enabled)
235
+ continue;
236
+ assertSafeIdentifier(field, 'aggregate field');
237
+ returnParts.push(`min(n.${escapeIdentifier(field)}) AS ${field}_min`);
238
+ returnParts.push(`max(n.${escapeIdentifier(field)}) AS ${field}_max`);
239
+ returnParts.push(`avg(n.${escapeIdentifier(field)}) AS ${field}_avg`);
240
+ }
241
+ cypherParts.push(`RETURN ${returnParts.join(', ')}`);
242
+ const cypher = cypherParts.join('\n');
243
+ const result = await this.executor.execute(cypher, allParams, params.context);
244
+ if (result.records.length === 0)
245
+ return params.aggregate.count ? { count: 0 } : {};
246
+ const record = result.records[0];
247
+ const aggregateResult = {};
248
+ if (params.aggregate.count) {
249
+ const countVal = record.get('count');
250
+ aggregateResult.count = ResultMapper.convertNeo4jTypes(countVal);
251
+ }
252
+ for (const [field, enabled] of Object.entries(params.aggregate)) {
253
+ if (field === 'count' || !enabled)
254
+ continue;
255
+ aggregateResult[field] = {
256
+ min: ResultMapper.convertNeo4jTypes(record.get(`${field}_min`)),
257
+ max: ResultMapper.convertNeo4jTypes(record.get(`${field}_max`)),
258
+ average: ResultMapper.convertNeo4jTypes(record.get(`${field}_avg`)),
259
+ };
260
+ }
261
+ return aggregateResult;
262
+ }
263
+ // --- setLabels ------------------------------------------------------------
264
+ async setLabels(params) {
265
+ const paramCounter = { count: 0 };
266
+ const whereResult = this.whereCompiler.compile(params.where, 'n', this.nodeDef, paramCounter);
267
+ const { cypher, params: mutParams } = this.mutationCompiler.compileSetLabels(this.nodeDef, whereResult, params.addLabels, params.removeLabels);
268
+ await this.executor.execute(cypher, mutParams, params.context);
269
+ }
270
+ // --- findFirst / findUnique ------------------------------------------------
271
+ async findFirst(params) {
272
+ const results = await this.find({
273
+ ...params,
274
+ options: { ...params?.options, limit: 1 },
275
+ });
276
+ return results[0] ?? null;
277
+ }
278
+ async findUnique(params) {
279
+ return this.findFirst(params);
280
+ }
281
+ async findFirstOrThrow(params) {
282
+ const result = await this.findFirst(params);
283
+ if (result === null)
284
+ throw new RecordNotFoundError(this.nodeDef.typeName, params?.where);
285
+ return result;
286
+ }
287
+ async findUniqueOrThrow(params) {
288
+ const result = await this.findUnique(params);
289
+ if (result === null)
290
+ throw new RecordNotFoundError(this.nodeDef.typeName, params.where);
291
+ return result;
292
+ }
293
+ // --- count ----------------------------------------------------------------
294
+ async count(params) {
295
+ const result = await this.aggregate({
296
+ where: params?.where,
297
+ aggregate: { count: true },
298
+ labels: params?.labels,
299
+ fulltext: params?.fulltext,
300
+ context: params?.context,
301
+ });
302
+ return result.count ?? 0;
303
+ }
304
+ // --- upsert ---------------------------------------------------------------
305
+ async upsert(params) {
306
+ if (params.select && params.selectionSet)
307
+ throw new OGMError('Cannot provide both "select" and "selectionSet". They are mutually exclusive.');
308
+ const { cypher, params: mergeParams } = this.mutationCompiler.compileMerge(params.where, params.create, params.update, this.nodeDef, params.labels);
309
+ let finalCypher;
310
+ if (params.select)
311
+ finalCypher = this.applySelectToUpsert(cypher, params.select, mergeParams);
312
+ else
313
+ finalCypher = this.applySelectionSetToUpsert(cypher, params.selectionSet ?? this._selectionSet, mergeParams);
314
+ const result = await this.executor.execute(finalCypher, mergeParams, params.context);
315
+ const mapped = ResultMapper.mapRecords(result.records, 'n');
316
+ return mapped[0] ?? null;
317
+ }
318
+ // --- createMany -----------------------------------------------------------
319
+ async createMany(params) {
320
+ const { cypher, params: mutParams } = this.mutationCompiler.compileCreateMany(params.data, this.nodeDef, params.skipDuplicates, params.labels);
321
+ const result = await this.executor.execute(cypher, mutParams, params.context);
322
+ const record = result.records[0];
323
+ const count = record
324
+ ? ResultMapper.convertNeo4jTypes(record.get('count'))
325
+ : 0;
326
+ return { count: count };
327
+ }
328
+ // --- updateMany ----------------------------------------------------------
329
+ async updateMany(params) {
330
+ const paramCounter = { count: 0 };
331
+ const whereResult = this.whereCompiler.compile(params.where, 'n', this.nodeDef, paramCounter);
332
+ const { cypher, params: mutParams } = this.mutationCompiler.compileUpdate(params.where ?? {}, params.data, undefined, // no connect
333
+ undefined, // no disconnect
334
+ this.nodeDef, whereResult, params.labels, 'count');
335
+ const result = await this.executor.execute(cypher, mutParams, params.context);
336
+ const record = result.records[0];
337
+ const count = record
338
+ ? ResultMapper.convertNeo4jTypes(record.get('count'))
339
+ : 0;
340
+ return { count: count };
341
+ }
342
+ // --- deleteMany ----------------------------------------------------------
343
+ async deleteMany(params) {
344
+ const paramCounter = { count: 0 };
345
+ const whereResult = this.whereCompiler.compile(params.where, 'n', this.nodeDef, paramCounter);
346
+ const { cypher, params: mutParams } = this.mutationCompiler.compileDelete(this.nodeDef, whereResult, undefined);
347
+ const result = await this.executor.execute(cypher, mutParams, params.context);
348
+ const counters = result.summary.counters.updates();
349
+ return { count: counters.nodesDeleted };
350
+ }
351
+ // --- Private helpers ------------------------------------------------------
352
+ defaultSelection() {
353
+ if (this._defaultSelection)
354
+ return this._defaultSelection;
355
+ const nodes = [];
356
+ for (const [, prop] of this.nodeDef.properties) {
357
+ if (prop.isCypher)
358
+ continue;
359
+ nodes.push({
360
+ fieldName: prop.name,
361
+ isScalar: true,
362
+ isRelationship: false,
363
+ isConnection: false,
364
+ });
365
+ }
366
+ this._defaultSelection = nodes;
367
+ return nodes;
368
+ }
369
+ /**
370
+ * Replace the plain "RETURN n" in mutation cypher with a projected RETURN
371
+ * when a selectionSet is provided, enabling relationship traversals.
372
+ */
373
+ applySelectionSetToMutation(cypher, selectionSet, params) {
374
+ if (!selectionSet)
375
+ return cypher;
376
+ const selStr = typeof selectionSet === 'string'
377
+ ? selectionSet
378
+ : (selectionSet.loc?.source?.body ?? String(selectionSet));
379
+ let selection;
380
+ if (Model._selectionCache.has(selStr))
381
+ selection = Model._selectionCache.get(selStr);
382
+ else {
383
+ selection = this.selectionCompiler.parseSelectionSet(selStr);
384
+ if (Model._selectionCache.size < 500)
385
+ Model._selectionCache.set(selStr, selection);
386
+ }
387
+ // Mutation selectionSets use the pattern: { <pluralName> { <actual fields> } }
388
+ // or { info { ... } <pluralName> { <actual fields> } }
389
+ // Unwrap the outer response key to get the inner node fields.
390
+ if (selection.length === 1 &&
391
+ !selection[0].isScalar &&
392
+ selection[0].children?.length) {
393
+ const outer = selection[0];
394
+ if (outer.fieldName === this.nodeDef.pluralName ||
395
+ !this.nodeDef.relationships.has(outer.fieldName))
396
+ selection = outer.children;
397
+ }
398
+ else if (selection.length > 1) {
399
+ // Multi-field mutation response (e.g., { info { ... } drugs { id } })
400
+ // Find the field matching the plural name and use its children.
401
+ const entityField = selection.find((s) => s.fieldName === this.nodeDef.pluralName &&
402
+ !s.isScalar &&
403
+ s.children?.length);
404
+ if (entityField)
405
+ selection = entityField.children;
406
+ }
407
+ const paramCounter = { count: 0 };
408
+ const returnClause = this.selectionCompiler.compile(selection, 'n', this.nodeDef, this._maxDepth, 0, params, paramCounter);
409
+ return cypher.replace(/RETURN n\s*$/, `RETURN ${returnClause}`);
410
+ }
411
+ /**
412
+ * Apply a type-safe `select` object to a mutation's RETURN clause.
413
+ * Only projects entity fields when select[pluralName] is present.
414
+ */
415
+ applySelectToMutation(cypher, select, params) {
416
+ const entitySelect = select[this.nodeDef.pluralName];
417
+ if (!entitySelect || typeof entitySelect !== 'object')
418
+ return cypher;
419
+ const selection = this.selectNormalizer.normalize(entitySelect, this.nodeDef);
420
+ const paramCounter = { count: 0 };
421
+ const returnClause = this.selectionCompiler.compile(selection, 'n', this.nodeDef, this._maxDepth, 0, params, paramCounter);
422
+ return cypher.replace(/RETURN n\s*$/, `RETURN ${returnClause}`);
423
+ }
424
+ /**
425
+ * Build a narrowed result object based on which keys are present in `select`.
426
+ */
427
+ buildSelectResult(select, counters, mapped) {
428
+ const result = {};
429
+ if (select.info && typeof select.info === 'object') {
430
+ const infoSelect = select.info;
431
+ const info = {};
432
+ for (const [key, val] of Object.entries(infoSelect))
433
+ if (val && key in counters)
434
+ info[key] = counters[key];
435
+ result.info = info;
436
+ }
437
+ if (select[this.nodeDef.pluralName])
438
+ result[this.nodeDef.pluralName] = mapped;
439
+ return result;
440
+ }
441
+ /**
442
+ * Replace "RETURN n" in upsert cypher with a projected RETURN clause.
443
+ */
444
+ applySelectionSetToUpsert(cypher, selectionSet, params) {
445
+ if (!selectionSet)
446
+ return cypher;
447
+ const selStr = typeof selectionSet === 'string'
448
+ ? selectionSet
449
+ : (selectionSet.loc?.source?.body ?? String(selectionSet));
450
+ let selection;
451
+ if (Model._selectionCache.has(selStr))
452
+ selection = Model._selectionCache.get(selStr);
453
+ else {
454
+ selection = this.selectionCompiler.parseSelectionSet(selStr);
455
+ if (Model._selectionCache.size < 500)
456
+ Model._selectionCache.set(selStr, selection);
457
+ }
458
+ const paramCounter = { count: 0 };
459
+ const returnClause = this.selectionCompiler.compile(selection, 'n', this.nodeDef, this._maxDepth, 0, params, paramCounter);
460
+ return cypher.replace(/RETURN n\s*$/, `RETURN ${returnClause}`);
461
+ }
462
+ /**
463
+ * Apply a type-safe `select` object to an upsert's RETURN clause.
464
+ */
465
+ applySelectToUpsert(cypher, select, params) {
466
+ const selection = this.selectNormalizer.normalize(select, this.nodeDef);
467
+ const paramCounter = { count: 0 };
468
+ const returnClause = this.selectionCompiler.compile(selection, 'n', this.nodeDef, this._maxDepth, 0, params, paramCounter);
469
+ return cypher.replace(/RETURN n\s*$/, `RETURN ${returnClause}`);
470
+ }
471
+ compileOptions(options, params) {
472
+ const parts = [];
473
+ if (options.sort && options.sort.length > 0) {
474
+ const sortItems = options.sort.map((sortObj) => {
475
+ const [field, direction] = Object.entries(sortObj)[0];
476
+ assertSafeIdentifier(field, 'sort field');
477
+ const validDirection = assertSortDirection(direction);
478
+ return `n.${escapeIdentifier(field)} ${validDirection}`;
479
+ });
480
+ parts.push(`ORDER BY ${sortItems.join(', ')}`);
481
+ }
482
+ if (options.offset != null) {
483
+ const offset = Math.trunc(Number(options.offset));
484
+ if (!Number.isFinite(offset) || offset < 0)
485
+ throw new OGMError('offset must be a non-negative integer');
486
+ params.options_offset = neo4jInt(offset);
487
+ parts.push(`SKIP $options_offset`);
488
+ }
489
+ if (options.limit != null) {
490
+ const limit = Math.trunc(Number(options.limit));
491
+ if (!Number.isFinite(limit) || limit < 0)
492
+ throw new OGMError('limit must be a non-negative integer');
493
+ // Cap at 10,000 to prevent runaway queries
494
+ const MAX_LIMIT = 10000;
495
+ params.options_limit = neo4jInt(Math.min(limit, MAX_LIMIT));
496
+ parts.push(`LIMIT $options_limit`);
497
+ }
498
+ return parts.join('\n');
499
+ }
500
+ }
501
+ /**
502
+ * Global selection cache capped at 500 entries. No eviction — assumes bounded
503
+ * selection set variety (fixed set of selectionSet strings used across resolvers).
504
+ * In practice, NestJS services use a fixed set of selection strings, so growth is bounded.
505
+ */
506
+ Model._selectionCache = new Map();
507
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ import { Driver, Transaction } from 'neo4j-driver';
2
+ import { OGMLogger } from './execution/executor';
3
+ import { InterfaceModel } from './interface-model';
4
+ import { Model } from './model';
5
+ export interface OGMConfig {
6
+ typeDefs: string;
7
+ driver: Driver;
8
+ logger?: OGMLogger;
9
+ features?: {
10
+ filters?: {
11
+ String?: {
12
+ MATCHES?: boolean;
13
+ };
14
+ };
15
+ };
16
+ }
17
+ export declare class OGM<TModelMap extends Record<string, unknown> = Record<string, unknown>, TInterfaceModelMap extends Record<string, unknown> = Record<string, unknown>> {
18
+ private config;
19
+ private schema;
20
+ private models;
21
+ private interfaceModels;
22
+ private modelCompilers;
23
+ private interfaceModelCompilers;
24
+ private relPropsToRelType;
25
+ constructor(config: OGMConfig);
26
+ init(): Promise<void>;
27
+ assertIndexesAndConstraints(options?: {
28
+ options?: {
29
+ create?: boolean;
30
+ };
31
+ }): Promise<void>;
32
+ /** Resolve which relationship type uses a given @relationshipProperties type name. */
33
+ private findRelTypeForProps;
34
+ model<K extends string & keyof TModelMap>(name: K): Model<TModelMap[K] extends {
35
+ Type: infer T;
36
+ } ? T : Record<string, unknown>, TModelMap[K] extends {
37
+ SelectFields: infer S extends Record<string, unknown>;
38
+ } ? S : Record<string, unknown>, TModelMap[K] extends {
39
+ Where: infer W extends Record<string, unknown>;
40
+ } ? W : Record<string, unknown>, TModelMap[K] extends {
41
+ CreateInput: infer C extends Record<string, unknown>;
42
+ } ? C : Record<string, unknown>, TModelMap[K] extends {
43
+ UpdateInput: infer U extends Record<string, unknown>;
44
+ } ? U : Record<string, unknown>, TModelMap[K] extends {
45
+ ConnectInput: infer Co extends Record<string, unknown>;
46
+ } ? Co : Record<string, unknown>, TModelMap[K] extends {
47
+ DisconnectInput: infer D extends Record<string, unknown>;
48
+ } ? D : Record<string, unknown>, TModelMap[K] extends {
49
+ DeleteInput: infer De extends Record<string, unknown>;
50
+ } ? De : Record<string, unknown>, TModelMap[K] extends {
51
+ PluralKey: infer PK extends string;
52
+ } ? PK : string>;
53
+ /** @deprecated Legacy overload for backward compatibility with @neo4j/graphql-ogm. Use the single-generic overload instead. */
54
+ model<_T, K extends string>(name: K): Model<any, any, any, any, any, any, any, any, any>;
55
+ model<T = Record<string, unknown>>(name: string): Model<T, any, any, any, any, any, any, any, any>;
56
+ interfaceModel<K extends string & keyof TInterfaceModelMap>(name: K): InterfaceModel<TInterfaceModelMap[K] extends {
57
+ Type: infer T;
58
+ } ? T : Record<string, unknown>, TInterfaceModelMap[K] extends {
59
+ Where: infer W;
60
+ } ? W : Record<string, unknown>>;
61
+ interfaceModel<T = Record<string, unknown>>(name: string): InterfaceModel<T>;
62
+ /**
63
+ * Clear all internal caches and release model references.
64
+ * Call when disposing the OGM instance (e.g., in tests or module teardown).
65
+ */
66
+ close(): void;
67
+ /**
68
+ * Execute a raw Cypher query and return mapped results.
69
+ * Uses OGM-managed sessions with debug logging.
70
+ */
71
+ $queryRaw<T = Record<string, unknown>>(cypher: string, params?: Record<string, unknown>): Promise<T[]>;
72
+ /**
73
+ * Execute a raw Cypher write operation and return affected counts.
74
+ * Uses OGM-managed sessions with debug logging.
75
+ */
76
+ $executeRaw(cypher: string, params?: Record<string, unknown>): Promise<{
77
+ recordsAffected: number;
78
+ }>;
79
+ /**
80
+ * Execute a callback within a Neo4j transaction.
81
+ * Automatically commits on success and rolls back on error.
82
+ * The callback receives an `ExecutionContext` to pass into model methods.
83
+ *
84
+ * Overloads:
85
+ * - Callback: `$transaction(async (ctx) => { ... })` — interactive transaction
86
+ * - Sequential: `$transaction([(ctx) => op1(ctx), (ctx) => op2(ctx)])` — array of operations
87
+ */
88
+ $transaction<R>(fn: (ctx: {
89
+ transaction: Transaction;
90
+ }) => Promise<R>): Promise<R>;
91
+ $transaction<T extends unknown[]>(operations: {
92
+ [K in keyof T]: (ctx: {
93
+ transaction: Transaction;
94
+ }) => Promise<T[K]>;
95
+ }): Promise<T>;
96
+ }
97
+ //# sourceMappingURL=ogm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ogm.d.ts","sourceRoot":"","sources":["../../src/ogm.ts"],"names":[],"mappings":"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"}