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,513 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Model = void 0;
4
+ exports.isFulltextLeaf = isFulltextLeaf;
5
+ exports.isFulltextIndexEntry = isFulltextIndexEntry;
6
+ const neo4j_driver_1 = require("neo4j-driver");
7
+ const fulltext_compiler_1 = require("./compilers/fulltext.compiler");
8
+ const mutation_compiler_1 = require("./compilers/mutation.compiler");
9
+ const select_normalizer_1 = require("./compilers/select-normalizer");
10
+ const selection_compiler_1 = require("./compilers/selection.compiler");
11
+ const where_compiler_1 = require("./compilers/where.compiler");
12
+ const errors_1 = require("./errors");
13
+ const executor_1 = require("./execution/executor");
14
+ const result_mapper_1 = require("./execution/result-mapper");
15
+ const validation_1 = require("./utils/validation");
16
+ /** Type guard: checks if a fulltext input is a leaf (not a logical operator) */
17
+ function isFulltextLeaf(input) {
18
+ return !('OR' in input || 'AND' in input || 'NOT' in input);
19
+ }
20
+ /** Type guard: checks if a value is a direct index entry (has `phrase`) */
21
+ function isFulltextIndexEntry(value) {
22
+ return 'phrase' in value;
23
+ }
24
+ class Model {
25
+ /** Clear the static selection cache. Useful in tests to prevent cross-test pollution. */
26
+ static clearSelectionCache() {
27
+ Model._selectionCache.clear();
28
+ }
29
+ constructor(nodeDef, schema, driver, compilers, logger) {
30
+ this.nodeDef = nodeDef;
31
+ this.schema = schema;
32
+ this._maxDepth = 5;
33
+ this.whereCompiler = compilers?.where ?? new where_compiler_1.WhereCompiler(schema);
34
+ this.selectionCompiler =
35
+ compilers?.selection ?? new selection_compiler_1.SelectionCompiler(schema, this.whereCompiler);
36
+ this.selectNormalizer =
37
+ compilers?.selectNormalizer ?? new select_normalizer_1.SelectNormalizer(schema);
38
+ this.mutationCompiler = compilers?.mutation ?? new mutation_compiler_1.MutationCompiler(schema);
39
+ this.fulltextCompiler = compilers?.fulltext ?? new fulltext_compiler_1.FulltextCompiler(schema);
40
+ this.executor = new executor_1.Executor(driver, logger);
41
+ }
42
+ /** Override the default RETURN clause -- legacy escape hatch */
43
+ set selectionSet(value) {
44
+ if (typeof value === 'string') {
45
+ this._selectionSet = value;
46
+ this._parsedSelection = this.selectionCompiler.parseSelectionSet(value);
47
+ }
48
+ else {
49
+ // DocumentNode -- convert to string first
50
+ const str = typeof value === 'object' && 'loc' in value && value.loc?.source?.body
51
+ ? value.loc.source.body
52
+ : String(value);
53
+ this._selectionSet = str;
54
+ this._parsedSelection = this.selectionCompiler.parseSelectionSet(str);
55
+ }
56
+ }
57
+ set maxDepth(value) {
58
+ this._maxDepth = value;
59
+ }
60
+ // --- find -----------------------------------------------------------------
61
+ async find(params) {
62
+ if (params?.select && params?.selectionSet)
63
+ throw new errors_1.OGMError('Cannot provide both "select" and "selectionSet". They are mutually exclusive.');
64
+ const cypherParts = [];
65
+ const allParams = {};
66
+ const paramCounter = { count: 0 };
67
+ // Determine selection
68
+ let selection;
69
+ if (params?.select)
70
+ selection = this.selectNormalizer.normalize(params.select, this.nodeDef);
71
+ else if (params?.selectionSet) {
72
+ const selStr = typeof params.selectionSet === 'string'
73
+ ? params.selectionSet
74
+ : (params.selectionSet.loc?.source?.body ??
75
+ String(params.selectionSet));
76
+ if (Model._selectionCache.has(selStr))
77
+ selection = Model._selectionCache.get(selStr);
78
+ else {
79
+ selection = this.selectionCompiler.parseSelectionSet(selStr);
80
+ if (Model._selectionCache.size < 500)
81
+ Model._selectionCache.set(selStr, selection);
82
+ }
83
+ }
84
+ else if (this._parsedSelection)
85
+ selection = this._parsedSelection;
86
+ else
87
+ // Default: return all scalar properties
88
+ selection = this.defaultSelection();
89
+ // Fulltext or MATCH
90
+ if (params?.fulltext) {
91
+ const ft = this.fulltextCompiler.compile(params.fulltext, this.nodeDef, 'n');
92
+ cypherParts.push(ft.cypher);
93
+ Object.assign(allParams, ft.params);
94
+ // Add label filter in WHERE for fulltext queries
95
+ const labelFilters = [
96
+ `n:${(0, validation_1.escapeIdentifier)(this.nodeDef.label)}`,
97
+ ];
98
+ if (params.labels)
99
+ for (const label of params.labels)
100
+ labelFilters.push(`n:${(0, validation_1.assertSafeLabel)(label)}`);
101
+ // Compile WHERE
102
+ const whereResult = this.whereCompiler.compile(params?.where, 'n', this.nodeDef, paramCounter);
103
+ Object.assign(allParams, whereResult.params);
104
+ const whereParts = [labelFilters.join(' AND ')];
105
+ if (ft.scoreThreshold !== undefined)
106
+ whereParts.push('score >= $ft_score');
107
+ if (whereResult.cypher)
108
+ whereParts.push(whereResult.cypher);
109
+ cypherParts.push(`WHERE ${whereParts.join(' AND ')}`);
110
+ }
111
+ else {
112
+ // Standard MATCH
113
+ const validatedLabels = (params?.labels ?? []).map((l) => (0, validation_1.assertSafeLabel)(l));
114
+ const labels = [(0, validation_1.escapeIdentifier)(this.nodeDef.label), ...validatedLabels];
115
+ cypherParts.push(`MATCH (n:${labels.join(':')})`);
116
+ // WHERE
117
+ const whereResult = this.whereCompiler.compile(params?.where, 'n', this.nodeDef, paramCounter);
118
+ if (whereResult.cypher) {
119
+ cypherParts.push(`WHERE ${whereResult.cypher}`);
120
+ Object.assign(allParams, whereResult.params);
121
+ }
122
+ }
123
+ // RETURN
124
+ const returnClause = this.selectionCompiler.compile(selection, 'n', this.nodeDef, this._maxDepth, 0, allParams, paramCounter);
125
+ cypherParts.push(`RETURN ${returnClause}`);
126
+ // OPTIONS (sort, limit, offset)
127
+ if (params?.options) {
128
+ const optCypher = this.compileOptions(params.options, allParams);
129
+ if (optCypher)
130
+ cypherParts.push(optCypher);
131
+ }
132
+ const cypher = cypherParts.join('\n');
133
+ const result = await this.executor.execute(cypher, allParams, params?.context);
134
+ return result_mapper_1.ResultMapper.mapRecords(result.records, 'n');
135
+ }
136
+ // --- create ---------------------------------------------------------------
137
+ async create(params) {
138
+ if (params.select && params.selectionSet)
139
+ throw new errors_1.OGMError('Cannot provide both "select" and "selectionSet". They are mutually exclusive.');
140
+ const { cypher, params: mutParams } = this.mutationCompiler.compileCreate(params.input, this.nodeDef, params.labels);
141
+ let finalCypher;
142
+ if (params.select)
143
+ finalCypher = this.applySelectToMutation(cypher, params.select, mutParams);
144
+ else
145
+ finalCypher = this.applySelectionSetToMutation(cypher, params.selectionSet ?? this._selectionSet, mutParams);
146
+ const result = await this.executor.execute(finalCypher, mutParams, params.context);
147
+ const summary = result.summary;
148
+ const counters = summary.counters.updates();
149
+ const mapped = result_mapper_1.ResultMapper.mapRecords(result.records, 'n');
150
+ if (params.select)
151
+ return this.buildSelectResult(params.select, counters, mapped);
152
+ return {
153
+ info: {
154
+ nodesCreated: counters.nodesCreated,
155
+ nodesDeleted: counters.nodesDeleted,
156
+ relationshipsCreated: counters.relationshipsCreated,
157
+ relationshipsDeleted: counters.relationshipsDeleted,
158
+ },
159
+ [this.nodeDef.pluralName]: mapped,
160
+ };
161
+ }
162
+ // --- update ---------------------------------------------------------------
163
+ async update(params) {
164
+ if (params.select && params.selectionSet)
165
+ throw new errors_1.OGMError('Cannot provide both "select" and "selectionSet". They are mutually exclusive.');
166
+ const paramCounter = { count: 0 };
167
+ const whereResult = this.whereCompiler.compile(params.where, 'n', this.nodeDef, paramCounter);
168
+ const { cypher, params: mutParams } = this.mutationCompiler.compileUpdate(params.where ?? {}, params.update, params.connect, params.disconnect, this.nodeDef, whereResult, params.labels);
169
+ let finalCypher;
170
+ if (params.select)
171
+ finalCypher = this.applySelectToMutation(cypher, params.select, mutParams);
172
+ else
173
+ finalCypher = this.applySelectionSetToMutation(cypher, params.selectionSet ?? this._selectionSet, mutParams);
174
+ const result = await this.executor.execute(finalCypher, mutParams, params.context);
175
+ const summary = result.summary;
176
+ const counters = summary.counters.updates();
177
+ const mapped = result_mapper_1.ResultMapper.mapRecords(result.records, 'n');
178
+ if (params.select)
179
+ return this.buildSelectResult(params.select, counters, mapped);
180
+ return {
181
+ info: {
182
+ nodesCreated: counters.nodesCreated,
183
+ nodesDeleted: counters.nodesDeleted,
184
+ relationshipsCreated: counters.relationshipsCreated,
185
+ relationshipsDeleted: counters.relationshipsDeleted,
186
+ },
187
+ [this.nodeDef.pluralName]: mapped,
188
+ };
189
+ }
190
+ // --- delete ---------------------------------------------------------------
191
+ async delete(params) {
192
+ const paramCounter = { count: 0 };
193
+ const whereResult = this.whereCompiler.compile(params.where, 'n', this.nodeDef, paramCounter);
194
+ const { cypher, params: mutParams } = this.mutationCompiler.compileDelete(this.nodeDef, whereResult, params.delete);
195
+ const result = await this.executor.execute(cypher, mutParams, params.context);
196
+ const counters = result.summary.counters.updates();
197
+ return {
198
+ nodesDeleted: counters.nodesDeleted,
199
+ relationshipsDeleted: counters.relationshipsDeleted,
200
+ };
201
+ }
202
+ // --- aggregate ------------------------------------------------------------
203
+ async aggregate(params) {
204
+ const cypherParts = [];
205
+ const allParams = {};
206
+ const paramCounter = { count: 0 };
207
+ if (params.fulltext) {
208
+ const ft = this.fulltextCompiler.compile(params.fulltext, this.nodeDef, 'n');
209
+ cypherParts.push(ft.cypher);
210
+ Object.assign(allParams, ft.params);
211
+ const labelFilters = [`n:${(0, validation_1.escapeIdentifier)(this.nodeDef.label)}`];
212
+ if (params.labels)
213
+ for (const label of params.labels)
214
+ labelFilters.push(`n:${(0, validation_1.assertSafeLabel)(label)}`);
215
+ const whereResult = this.whereCompiler.compile(params.where, 'n', this.nodeDef, paramCounter);
216
+ Object.assign(allParams, whereResult.params);
217
+ const whereParts = [labelFilters.join(' AND ')];
218
+ if (ft.scoreThreshold !== undefined)
219
+ whereParts.push('score >= $ft_score');
220
+ if (whereResult.cypher)
221
+ whereParts.push(whereResult.cypher);
222
+ cypherParts.push(`WHERE ${whereParts.join(' AND ')}`);
223
+ }
224
+ else {
225
+ const validatedLabels = (params.labels ?? []).map((l) => (0, validation_1.assertSafeLabel)(l));
226
+ const labels = [(0, validation_1.escapeIdentifier)(this.nodeDef.label), ...validatedLabels];
227
+ cypherParts.push(`MATCH (n:${labels.join(':')})`);
228
+ const whereResult = this.whereCompiler.compile(params.where, 'n', this.nodeDef, paramCounter);
229
+ if (whereResult.cypher) {
230
+ cypherParts.push(`WHERE ${whereResult.cypher}`);
231
+ Object.assign(allParams, whereResult.params);
232
+ }
233
+ }
234
+ // Build RETURN clause for aggregation
235
+ const returnParts = [];
236
+ if (params.aggregate.count)
237
+ returnParts.push('count(n) AS count');
238
+ for (const [field, enabled] of Object.entries(params.aggregate)) {
239
+ if (field === 'count' || !enabled)
240
+ continue;
241
+ (0, validation_1.assertSafeIdentifier)(field, 'aggregate field');
242
+ returnParts.push(`min(n.${(0, validation_1.escapeIdentifier)(field)}) AS ${field}_min`);
243
+ returnParts.push(`max(n.${(0, validation_1.escapeIdentifier)(field)}) AS ${field}_max`);
244
+ returnParts.push(`avg(n.${(0, validation_1.escapeIdentifier)(field)}) AS ${field}_avg`);
245
+ }
246
+ cypherParts.push(`RETURN ${returnParts.join(', ')}`);
247
+ const cypher = cypherParts.join('\n');
248
+ const result = await this.executor.execute(cypher, allParams, params.context);
249
+ if (result.records.length === 0)
250
+ return params.aggregate.count ? { count: 0 } : {};
251
+ const record = result.records[0];
252
+ const aggregateResult = {};
253
+ if (params.aggregate.count) {
254
+ const countVal = record.get('count');
255
+ aggregateResult.count = result_mapper_1.ResultMapper.convertNeo4jTypes(countVal);
256
+ }
257
+ for (const [field, enabled] of Object.entries(params.aggregate)) {
258
+ if (field === 'count' || !enabled)
259
+ continue;
260
+ aggregateResult[field] = {
261
+ min: result_mapper_1.ResultMapper.convertNeo4jTypes(record.get(`${field}_min`)),
262
+ max: result_mapper_1.ResultMapper.convertNeo4jTypes(record.get(`${field}_max`)),
263
+ average: result_mapper_1.ResultMapper.convertNeo4jTypes(record.get(`${field}_avg`)),
264
+ };
265
+ }
266
+ return aggregateResult;
267
+ }
268
+ // --- setLabels ------------------------------------------------------------
269
+ async setLabels(params) {
270
+ const paramCounter = { count: 0 };
271
+ const whereResult = this.whereCompiler.compile(params.where, 'n', this.nodeDef, paramCounter);
272
+ const { cypher, params: mutParams } = this.mutationCompiler.compileSetLabels(this.nodeDef, whereResult, params.addLabels, params.removeLabels);
273
+ await this.executor.execute(cypher, mutParams, params.context);
274
+ }
275
+ // --- findFirst / findUnique ------------------------------------------------
276
+ async findFirst(params) {
277
+ const results = await this.find({
278
+ ...params,
279
+ options: { ...params?.options, limit: 1 },
280
+ });
281
+ return results[0] ?? null;
282
+ }
283
+ async findUnique(params) {
284
+ return this.findFirst(params);
285
+ }
286
+ async findFirstOrThrow(params) {
287
+ const result = await this.findFirst(params);
288
+ if (result === null)
289
+ throw new errors_1.RecordNotFoundError(this.nodeDef.typeName, params?.where);
290
+ return result;
291
+ }
292
+ async findUniqueOrThrow(params) {
293
+ const result = await this.findUnique(params);
294
+ if (result === null)
295
+ throw new errors_1.RecordNotFoundError(this.nodeDef.typeName, params.where);
296
+ return result;
297
+ }
298
+ // --- count ----------------------------------------------------------------
299
+ async count(params) {
300
+ const result = await this.aggregate({
301
+ where: params?.where,
302
+ aggregate: { count: true },
303
+ labels: params?.labels,
304
+ fulltext: params?.fulltext,
305
+ context: params?.context,
306
+ });
307
+ return result.count ?? 0;
308
+ }
309
+ // --- upsert ---------------------------------------------------------------
310
+ async upsert(params) {
311
+ if (params.select && params.selectionSet)
312
+ throw new errors_1.OGMError('Cannot provide both "select" and "selectionSet". They are mutually exclusive.');
313
+ const { cypher, params: mergeParams } = this.mutationCompiler.compileMerge(params.where, params.create, params.update, this.nodeDef, params.labels);
314
+ let finalCypher;
315
+ if (params.select)
316
+ finalCypher = this.applySelectToUpsert(cypher, params.select, mergeParams);
317
+ else
318
+ finalCypher = this.applySelectionSetToUpsert(cypher, params.selectionSet ?? this._selectionSet, mergeParams);
319
+ const result = await this.executor.execute(finalCypher, mergeParams, params.context);
320
+ const mapped = result_mapper_1.ResultMapper.mapRecords(result.records, 'n');
321
+ return mapped[0] ?? null;
322
+ }
323
+ // --- createMany -----------------------------------------------------------
324
+ async createMany(params) {
325
+ const { cypher, params: mutParams } = this.mutationCompiler.compileCreateMany(params.data, this.nodeDef, params.skipDuplicates, params.labels);
326
+ const result = await this.executor.execute(cypher, mutParams, params.context);
327
+ const record = result.records[0];
328
+ const count = record
329
+ ? result_mapper_1.ResultMapper.convertNeo4jTypes(record.get('count'))
330
+ : 0;
331
+ return { count: count };
332
+ }
333
+ // --- updateMany ----------------------------------------------------------
334
+ async updateMany(params) {
335
+ const paramCounter = { count: 0 };
336
+ const whereResult = this.whereCompiler.compile(params.where, 'n', this.nodeDef, paramCounter);
337
+ const { cypher, params: mutParams } = this.mutationCompiler.compileUpdate(params.where ?? {}, params.data, undefined, // no connect
338
+ undefined, // no disconnect
339
+ this.nodeDef, whereResult, params.labels, 'count');
340
+ const result = await this.executor.execute(cypher, mutParams, params.context);
341
+ const record = result.records[0];
342
+ const count = record
343
+ ? result_mapper_1.ResultMapper.convertNeo4jTypes(record.get('count'))
344
+ : 0;
345
+ return { count: count };
346
+ }
347
+ // --- deleteMany ----------------------------------------------------------
348
+ async deleteMany(params) {
349
+ const paramCounter = { count: 0 };
350
+ const whereResult = this.whereCompiler.compile(params.where, 'n', this.nodeDef, paramCounter);
351
+ const { cypher, params: mutParams } = this.mutationCompiler.compileDelete(this.nodeDef, whereResult, undefined);
352
+ const result = await this.executor.execute(cypher, mutParams, params.context);
353
+ const counters = result.summary.counters.updates();
354
+ return { count: counters.nodesDeleted };
355
+ }
356
+ // --- Private helpers ------------------------------------------------------
357
+ defaultSelection() {
358
+ if (this._defaultSelection)
359
+ return this._defaultSelection;
360
+ const nodes = [];
361
+ for (const [, prop] of this.nodeDef.properties) {
362
+ if (prop.isCypher)
363
+ continue;
364
+ nodes.push({
365
+ fieldName: prop.name,
366
+ isScalar: true,
367
+ isRelationship: false,
368
+ isConnection: false,
369
+ });
370
+ }
371
+ this._defaultSelection = nodes;
372
+ return nodes;
373
+ }
374
+ /**
375
+ * Replace the plain "RETURN n" in mutation cypher with a projected RETURN
376
+ * when a selectionSet is provided, enabling relationship traversals.
377
+ */
378
+ applySelectionSetToMutation(cypher, selectionSet, params) {
379
+ if (!selectionSet)
380
+ return cypher;
381
+ const selStr = typeof selectionSet === 'string'
382
+ ? selectionSet
383
+ : (selectionSet.loc?.source?.body ?? String(selectionSet));
384
+ let selection;
385
+ if (Model._selectionCache.has(selStr))
386
+ selection = Model._selectionCache.get(selStr);
387
+ else {
388
+ selection = this.selectionCompiler.parseSelectionSet(selStr);
389
+ if (Model._selectionCache.size < 500)
390
+ Model._selectionCache.set(selStr, selection);
391
+ }
392
+ // Mutation selectionSets use the pattern: { <pluralName> { <actual fields> } }
393
+ // or { info { ... } <pluralName> { <actual fields> } }
394
+ // Unwrap the outer response key to get the inner node fields.
395
+ if (selection.length === 1 &&
396
+ !selection[0].isScalar &&
397
+ selection[0].children?.length) {
398
+ const outer = selection[0];
399
+ if (outer.fieldName === this.nodeDef.pluralName ||
400
+ !this.nodeDef.relationships.has(outer.fieldName))
401
+ selection = outer.children;
402
+ }
403
+ else if (selection.length > 1) {
404
+ // Multi-field mutation response (e.g., { info { ... } drugs { id } })
405
+ // Find the field matching the plural name and use its children.
406
+ const entityField = selection.find((s) => s.fieldName === this.nodeDef.pluralName &&
407
+ !s.isScalar &&
408
+ s.children?.length);
409
+ if (entityField)
410
+ selection = entityField.children;
411
+ }
412
+ const paramCounter = { count: 0 };
413
+ const returnClause = this.selectionCompiler.compile(selection, 'n', this.nodeDef, this._maxDepth, 0, params, paramCounter);
414
+ return cypher.replace(/RETURN n\s*$/, `RETURN ${returnClause}`);
415
+ }
416
+ /**
417
+ * Apply a type-safe `select` object to a mutation's RETURN clause.
418
+ * Only projects entity fields when select[pluralName] is present.
419
+ */
420
+ applySelectToMutation(cypher, select, params) {
421
+ const entitySelect = select[this.nodeDef.pluralName];
422
+ if (!entitySelect || typeof entitySelect !== 'object')
423
+ return cypher;
424
+ const selection = this.selectNormalizer.normalize(entitySelect, this.nodeDef);
425
+ const paramCounter = { count: 0 };
426
+ const returnClause = this.selectionCompiler.compile(selection, 'n', this.nodeDef, this._maxDepth, 0, params, paramCounter);
427
+ return cypher.replace(/RETURN n\s*$/, `RETURN ${returnClause}`);
428
+ }
429
+ /**
430
+ * Build a narrowed result object based on which keys are present in `select`.
431
+ */
432
+ buildSelectResult(select, counters, mapped) {
433
+ const result = {};
434
+ if (select.info && typeof select.info === 'object') {
435
+ const infoSelect = select.info;
436
+ const info = {};
437
+ for (const [key, val] of Object.entries(infoSelect))
438
+ if (val && key in counters)
439
+ info[key] = counters[key];
440
+ result.info = info;
441
+ }
442
+ if (select[this.nodeDef.pluralName])
443
+ result[this.nodeDef.pluralName] = mapped;
444
+ return result;
445
+ }
446
+ /**
447
+ * Replace "RETURN n" in upsert cypher with a projected RETURN clause.
448
+ */
449
+ applySelectionSetToUpsert(cypher, selectionSet, params) {
450
+ if (!selectionSet)
451
+ return cypher;
452
+ const selStr = typeof selectionSet === 'string'
453
+ ? selectionSet
454
+ : (selectionSet.loc?.source?.body ?? String(selectionSet));
455
+ let selection;
456
+ if (Model._selectionCache.has(selStr))
457
+ selection = Model._selectionCache.get(selStr);
458
+ else {
459
+ selection = this.selectionCompiler.parseSelectionSet(selStr);
460
+ if (Model._selectionCache.size < 500)
461
+ Model._selectionCache.set(selStr, selection);
462
+ }
463
+ const paramCounter = { count: 0 };
464
+ const returnClause = this.selectionCompiler.compile(selection, 'n', this.nodeDef, this._maxDepth, 0, params, paramCounter);
465
+ return cypher.replace(/RETURN n\s*$/, `RETURN ${returnClause}`);
466
+ }
467
+ /**
468
+ * Apply a type-safe `select` object to an upsert's RETURN clause.
469
+ */
470
+ applySelectToUpsert(cypher, select, params) {
471
+ const selection = this.selectNormalizer.normalize(select, this.nodeDef);
472
+ const paramCounter = { count: 0 };
473
+ const returnClause = this.selectionCompiler.compile(selection, 'n', this.nodeDef, this._maxDepth, 0, params, paramCounter);
474
+ return cypher.replace(/RETURN n\s*$/, `RETURN ${returnClause}`);
475
+ }
476
+ compileOptions(options, params) {
477
+ const parts = [];
478
+ if (options.sort && options.sort.length > 0) {
479
+ const sortItems = options.sort.map((sortObj) => {
480
+ const [field, direction] = Object.entries(sortObj)[0];
481
+ (0, validation_1.assertSafeIdentifier)(field, 'sort field');
482
+ const validDirection = (0, validation_1.assertSortDirection)(direction);
483
+ return `n.${(0, validation_1.escapeIdentifier)(field)} ${validDirection}`;
484
+ });
485
+ parts.push(`ORDER BY ${sortItems.join(', ')}`);
486
+ }
487
+ if (options.offset != null) {
488
+ const offset = Math.trunc(Number(options.offset));
489
+ if (!Number.isFinite(offset) || offset < 0)
490
+ throw new errors_1.OGMError('offset must be a non-negative integer');
491
+ params.options_offset = (0, neo4j_driver_1.int)(offset);
492
+ parts.push(`SKIP $options_offset`);
493
+ }
494
+ if (options.limit != null) {
495
+ const limit = Math.trunc(Number(options.limit));
496
+ if (!Number.isFinite(limit) || limit < 0)
497
+ throw new errors_1.OGMError('limit must be a non-negative integer');
498
+ // Cap at 10,000 to prevent runaway queries
499
+ const MAX_LIMIT = 10000;
500
+ params.options_limit = (0, neo4j_driver_1.int)(Math.min(limit, MAX_LIMIT));
501
+ parts.push(`LIMIT $options_limit`);
502
+ }
503
+ return parts.join('\n');
504
+ }
505
+ }
506
+ exports.Model = Model;
507
+ /**
508
+ * Global selection cache capped at 500 entries. No eviction — assumes bounded
509
+ * selection set variety (fixed set of selectionSet strings used across resolvers).
510
+ * In practice, NestJS services use a fixed set of selection strings, so growth is bounded.
511
+ */
512
+ Model._selectionCache = new Map();
513
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":";;;AAsDA,wCAEC;AAGD,oDAIC;AA9DD,+CAAuD;AACvD,qEAAiE;AACjE,qEAAiE;AACjE,qEAAiE;AACjE,uEAGwC;AACxC,+DAA2D;AAC3D,qCAAyD;AACzD,mDAA6E;AAC7E,6DAAyD;AAEzD,mDAK4B;AAkC5B,gFAAgF;AAChF,SAAgB,cAAc,CAAC,KAAoB;IACjD,OAAO,CAAC,CAAC,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED,2EAA2E;AAC3E,SAAgB,oBAAoB,CAClC,KAAqD;IAErD,OAAO,QAAQ,IAAI,KAAK,CAAC;AAC3B,CAAC;AA2JD,MAAa,KAAK;IA6ChB,yFAAyF;IACzF,MAAM,CAAC,mBAAmB;QACxB,KAAK,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IASD,YACU,OAAuB,EACvB,MAAsB,EAC9B,MAAc,EACd,SAA0B,EAC1B,MAAkB;QAJV,YAAO,GAAP,OAAO,CAAgB;QACvB,WAAM,GAAN,MAAM,CAAgB;QAxBxB,cAAS,GAAW,CAAC,CAAC;QA6B5B,IAAI,CAAC,aAAa,GAAG,SAAS,EAAE,KAAK,IAAI,IAAI,8BAAa,CAAC,MAAM,CAAC,CAAC;QACnE,IAAI,CAAC,iBAAiB;YACpB,SAAS,EAAE,SAAS,IAAI,IAAI,sCAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5E,IAAI,CAAC,gBAAgB;YACnB,SAAS,EAAE,gBAAgB,IAAI,IAAI,oCAAgB,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,gBAAgB,GAAG,SAAS,EAAE,QAAQ,IAAI,IAAI,oCAAgB,CAAC,MAAM,CAAC,CAAC;QAC5E,IAAI,CAAC,gBAAgB,GAAG,SAAS,EAAE,QAAQ,IAAI,IAAI,oCAAgB,CAAC,MAAM,CAAC,CAAC;QAC5E,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,gEAAgE;IAChE,IAAI,YAAY,CAAC,KAA4B;QAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,0CAA0C;YAC1C,MAAM,GAAG,GACP,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI;gBACpE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI;gBACvB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;YACzB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,KAAa;QACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,6EAA6E;IAE7E,KAAK,CAAC,IAAI,CAAC,MAQV;QACC,IAAI,MAAM,EAAE,MAAM,IAAI,MAAM,EAAE,YAAY;YACxC,MAAM,IAAI,iBAAQ,CAChB,+EAA+E,CAChF,CAAC;QAEJ,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,MAAM,SAAS,GAA4B,EAAE,CAAC;QAC9C,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAElC,sBAAsB;QACtB,IAAI,SAA0B,CAAC;QAC/B,IAAI,MAAM,EAAE,MAAM;YAChB,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aACtE,IAAI,MAAM,EAAE,YAAY,EAAE,CAAC;YAC9B,MAAM,MAAM,GACV,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ;gBACrC,CAAC,CAAC,MAAM,CAAC,YAAY;gBACrB,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI;oBACtC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;YACnC,IAAI,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC;gBACnC,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;iBAC5C,CAAC;gBACJ,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBAC7D,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,GAAG,GAAG;oBAClC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,gBAAgB;YAAE,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC;;YAElE,wCAAwC;YACxC,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAEtC,oBAAoB;QACpB,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC;YACrB,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACtC,MAAM,CAAC,QAAQ,EACf,IAAI,CAAC,OAAO,EACZ,GAAG,CACJ,CAAC;YACF,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YAC5B,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;YAEpC,iDAAiD;YACjD,MAAM,YAAY,GAAa;gBAC7B,KAAK,IAAA,6BAAgB,EAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;aAC5C,CAAC;YACF,IAAI,MAAM,CAAC,MAAM;gBACf,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM;oBAC/B,YAAY,CAAC,IAAI,CAAC,KAAK,IAAA,4BAAe,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAErD,gBAAgB;YAChB,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAC5C,MAAM,EAAE,KAAK,EACb,GAAG,EACH,IAAI,CAAC,OAAO,EACZ,YAAY,CACb,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;YAE7C,MAAM,UAAU,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAChD,IAAI,EAAE,CAAC,cAAc,KAAK,SAAS;gBACjC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAExC,IAAI,WAAW,CAAC,MAAM;gBAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAE5D,WAAW,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,iBAAiB;YACjB,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACvD,IAAA,4BAAe,EAAC,CAAC,CAAC,CACnB,CAAC;YACF,MAAM,MAAM,GAAG,CAAC,IAAA,6BAAgB,EAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,eAAe,CAAC,CAAC;YAC1E,WAAW,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAElD,QAAQ;YACR,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAC5C,MAAM,EAAE,KAAK,EACb,GAAG,EACH,IAAI,CAAC,OAAO,EACZ,YAAY,CACb,CAAC;YACF,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;gBACvB,WAAW,CAAC,IAAI,CAAC,SAAS,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;gBAChD,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,SAAS;QACT,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CACjD,SAAS,EACT,GAAG,EACH,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,SAAS,EACd,CAAC,EACD,SAAS,EACT,YAAY,CACb,CAAC;QACF,WAAW,CAAC,IAAI,CAAC,UAAU,YAAY,EAAE,CAAC,CAAC;QAE3C,gCAAgC;QAChC,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACjE,IAAI,SAAS;gBAAE,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CACxC,MAAM,EACN,SAAS,EACT,MAAM,EAAE,OAAO,CAChB,CAAC;QACF,OAAO,4BAAY,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAQ,CAAC;IAC7D,CAAC;IAED,6EAA6E;IAE7E,KAAK,CAAC,MAAM,CAAC,MAMZ;QACC,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY;YACtC,MAAM,IAAI,iBAAQ,CAChB,+EAA+E,CAChF,CAAC;QAEJ,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CACvE,MAAM,CAAC,KAAK,EACZ,IAAI,CAAC,OAAO,EACZ,MAAM,CAAC,MAAM,CACd,CAAC;QAEF,IAAI,WAAmB,CAAC;QACxB,IAAI,MAAM,CAAC,MAAM;YACf,WAAW,GAAG,IAAI,CAAC,qBAAqB,CACtC,MAAM,EACN,MAAM,CAAC,MAAM,EACb,SAAS,CACV,CAAC;;YAEF,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAC5C,MAAM,EACN,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,EACzC,SAAS,CACV,CAAC;QAEJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CACxC,WAAW,EACX,SAAS,EACT,MAAM,CAAC,OAAO,CACf,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,4BAAY,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAQ,CAAC;QAEnE,IAAI,MAAM,CAAC,MAAM;YACf,OAAO,IAAI,CAAC,iBAAiB,CAC3B,MAAM,CAAC,MAAM,EACb,QAAQ,EACR,MAAM,CAC4B,CAAC;QAEvC,OAAO;YACL,IAAI,EAAE;gBACJ,YAAY,EAAE,QAAQ,CAAC,YAAY;gBACnC,YAAY,EAAE,QAAQ,CAAC,YAAY;gBACnC,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB;gBACnD,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB;aACpD;YACD,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM;SACC,CAAC;IACvC,CAAC;IAED,6EAA6E;IAE7E,KAAK,CAAC,MAAM,CAAC,MASZ;QACC,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY;YACtC,MAAM,IAAI,iBAAQ,CAChB,+EAA+E,CAChF,CAAC;QAEJ,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAC5C,MAAM,CAAC,KAAK,EACZ,GAAG,EACH,IAAI,CAAC,OAAO,EACZ,YAAY,CACb,CAAC;QAEF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CACvE,MAAM,CAAC,KAAK,IAAI,EAAE,EAClB,MAAM,CAAC,MAA6C,EACpD,MAAM,CAAC,OAA8C,EACrD,MAAM,CAAC,UAAiD,EACxD,IAAI,CAAC,OAAO,EACZ,WAAW,EACX,MAAM,CAAC,MAAM,CACd,CAAC;QAEF,IAAI,WAAmB,CAAC;QACxB,IAAI,MAAM,CAAC,MAAM;YACf,WAAW,GAAG,IAAI,CAAC,qBAAqB,CACtC,MAAM,EACN,MAAM,CAAC,MAAM,EACb,SAAS,CACV,CAAC;;YAEF,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAC5C,MAAM,EACN,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,EACzC,SAAS,CACV,CAAC;QAEJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CACxC,WAAW,EACX,SAAS,EACT,MAAM,CAAC,OAAO,CACf,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,4BAAY,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAQ,CAAC;QAEnE,IAAI,MAAM,CAAC,MAAM;YACf,OAAO,IAAI,CAAC,iBAAiB,CAC3B,MAAM,CAAC,MAAM,EACb,QAAQ,EACR,MAAM,CAC4B,CAAC;QAEvC,OAAO;YACL,IAAI,EAAE;gBACJ,YAAY,EAAE,QAAQ,CAAC,YAAY;gBACnC,YAAY,EAAE,QAAQ,CAAC,YAAY;gBACnC,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB;gBACnD,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB;aACpD;YACD,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM;SACC,CAAC;IACvC,CAAC;IAED,6EAA6E;IAE7E,KAAK,CAAC,MAAM,CAAC,MAIZ;QACC,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAC5C,MAAM,CAAC,KAAK,EACZ,GAAG,EACH,IAAI,CAAC,OAAO,EACZ,YAAY,CACb,CAAC;QAEF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CACvE,IAAI,CAAC,OAAO,EACZ,WAAW,EACX,MAAM,CAAC,MAAM,CACd,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CACxC,MAAM,EACN,SAAS,EACT,MAAM,CAAC,OAAO,CACf,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnD,OAAO;YACL,YAAY,EAAE,QAAQ,CAAC,YAAY;YACnC,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB;SACpD,CAAC;IACJ,CAAC;IAED,6EAA6E;IAE7E,KAAK,CAAC,SAAS,CAAC,MAMf;QACC,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,MAAM,SAAS,GAA4B,EAAE,CAAC;QAC9C,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAElC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACtC,MAAM,CAAC,QAAQ,EACf,IAAI,CAAC,OAAO,EACZ,GAAG,CACJ,CAAC;YACF,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YAC5B,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;YAEpC,MAAM,YAAY,GAAG,CAAC,KAAK,IAAA,6BAAgB,EAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACnE,IAAI,MAAM,CAAC,MAAM;gBACf,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM;oBAC/B,YAAY,CAAC,IAAI,CAAC,KAAK,IAAA,4BAAe,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAErD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAC5C,MAAM,CAAC,KAAK,EACZ,GAAG,EACH,IAAI,CAAC,OAAO,EACZ,YAAY,CACb,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;YAE7C,MAAM,UAAU,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAChD,IAAI,EAAE,CAAC,cAAc,KAAK,SAAS;gBACjC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAExC,IAAI,WAAW,CAAC,MAAM;gBAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAE5D,WAAW,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,MAAM,eAAe,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACtD,IAAA,4BAAe,EAAC,CAAC,CAAC,CACnB,CAAC;YACF,MAAM,MAAM,GAAG,CAAC,IAAA,6BAAgB,EAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,eAAe,CAAC,CAAC;YAC1E,WAAW,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAElD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAC5C,MAAM,CAAC,KAAK,EACZ,GAAG,EACH,IAAI,CAAC,OAAO,EACZ,YAAY,CACb,CAAC;YACF,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;gBACvB,WAAW,CAAC,IAAI,CAAC,SAAS,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;gBAChD,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK;YAAE,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAElE,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YAChE,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,OAAO;gBAAE,SAAS;YAC5C,IAAA,iCAAoB,EAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;YAC/C,WAAW,CAAC,IAAI,CAAC,SAAS,IAAA,6BAAgB,EAAC,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;YACtE,WAAW,CAAC,IAAI,CAAC,SAAS,IAAA,6BAAgB,EAAC,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;YACtE,WAAW,CAAC,IAAI,CAAC,SAAS,IAAA,6BAAgB,EAAC,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;QACxE,CAAC;QAED,WAAW,CAAC,IAAI,CAAC,UAAU,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAErD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CACxC,MAAM,EACN,SAAS,EACT,MAAM,CAAC,OAAO,CACf,CAAC;QAEF,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAC7B,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAEpD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,eAAe,GAA4B,EAAE,CAAC;QAEpD,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrC,eAAe,CAAC,KAAK,GAAG,4BAAY,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACnE,CAAC;QAED,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YAChE,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,OAAO;gBAAE,SAAS;YAC5C,eAAe,CAAC,KAAK,CAAC,GAAG;gBACvB,GAAG,EAAE,4BAAY,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC;gBAC/D,GAAG,EAAE,4BAAY,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC;gBAC/D,OAAO,EAAE,4BAAY,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC;aACpE,CAAC;QACJ,CAAC;QAED,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,6EAA6E;IAE7E,KAAK,CAAC,SAAS,CAAC,MAKf;QACC,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAC5C,MAAM,CAAC,KAAK,EACZ,GAAG,EACH,IAAI,CAAC,OAAO,EACZ,YAAY,CACb,CAAC;QAEF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GACjC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CACpC,IAAI,CAAC,OAAO,EACZ,WAAW,EACX,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,YAAY,CACpB,CAAC;QAEJ,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,8EAA8E;IAE9E,KAAK,CAAC,SAAS,CAAC,MAQf;QACC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;YAC9B,GAAG,MAAM;YACT,OAAO,EAAE,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;SAC1C,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAMhB;QACC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAQtB;QACC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,MAAM,KAAK,IAAI;YACjB,MAAM,IAAI,4BAAmB,CAC3B,IAAI,CAAC,OAAO,CAAC,QAAQ,EACrB,MAAM,EAAE,KAA4C,CACrD,CAAC;QACJ,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,MAMvB;QACC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,MAAM,KAAK,IAAI;YACjB,MAAM,IAAI,4BAAmB,CAC3B,IAAI,CAAC,OAAO,CAAC,QAAQ,EACrB,MAAM,CAAC,KAAgC,CACxC,CAAC;QACJ,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,6EAA6E;IAE7E,KAAK,CAAC,KAAK,CAAC,MAKX;QACC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC;YAClC,KAAK,EAAE,MAAM,EAAE,KAAK;YACpB,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;YAC1B,MAAM,EAAE,MAAM,EAAE,MAAM;YACtB,QAAQ,EAAE,MAAM,EAAE,QAAQ;YAC1B,OAAO,EAAE,MAAM,EAAE,OAAO;SACzB,CAAC,CAAC;QACH,OAAQ,MAAM,CAAC,KAAgB,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,6EAA6E;IAE7E,KAAK,CAAC,MAAM,CAAC,MAQZ;QACC,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY;YACtC,MAAM,IAAI,iBAAQ,CAChB,+EAA+E,CAChF,CAAC;QAEJ,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CACxE,MAAM,CAAC,KAAgC,EACvC,MAAM,CAAC,MAAiC,EACxC,MAAM,CAAC,MAAiC,EACxC,IAAI,CAAC,OAAO,EACZ,MAAM,CAAC,MAAM,CACd,CAAC;QAEF,IAAI,WAAmB,CAAC;QACxB,IAAI,MAAM,CAAC,MAAM;YACf,WAAW,GAAG,IAAI,CAAC,mBAAmB,CACpC,MAAM,EACN,MAAM,CAAC,MAAM,EACb,WAAW,CACZ,CAAC;;YAEF,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAC1C,MAAM,EACN,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,EACzC,WAAW,CACZ,CAAC;QAEJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CACxC,WAAW,EACX,WAAW,EACX,MAAM,CAAC,OAAO,CACf,CAAC;QACF,MAAM,MAAM,GAAG,4BAAY,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAQ,CAAC;QACnE,OAAO,MAAM,CAAC,CAAC,CAAC,IAAK,IAAqB,CAAC;IAC7C,CAAC;IAED,6EAA6E;IAE7E,KAAK,CAAC,UAAU,CAAC,MAKhB;QACC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GACjC,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CACrC,MAAM,CAAC,IAAiC,EACxC,IAAI,CAAC,OAAO,EACZ,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,MAAM,CACd,CAAC;QAEJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CACxC,MAAM,EACN,SAAS,EACT,MAAM,CAAC,OAAO,CACf,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,MAAM;YAClB,CAAC,CAAC,4BAAY,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC,CAAC;QACN,OAAO,EAAE,KAAK,EAAE,KAAe,EAAE,CAAC;IACpC,CAAC;IAED,4EAA4E;IAE5E,KAAK,CAAC,UAAU,CAAC,MAKhB;QACC,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAC5C,MAAM,CAAC,KAAK,EACZ,GAAG,EACH,IAAI,CAAC,OAAO,EACZ,YAAY,CACb,CAAC;QAEF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CACvE,MAAM,CAAC,KAAK,IAAI,EAAE,EAClB,MAAM,CAAC,IAA+B,EACtC,SAAS,EAAE,aAAa;QACxB,SAAS,EAAE,gBAAgB;QAC3B,IAAI,CAAC,OAAO,EACZ,WAAW,EACX,MAAM,CAAC,MAAM,EACb,OAAO,CACR,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CACxC,MAAM,EACN,SAAS,EACT,MAAM,CAAC,OAAO,CACf,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,MAAM;YAClB,CAAC,CAAC,4BAAY,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC,CAAC;QACN,OAAO,EAAE,KAAK,EAAE,KAAe,EAAE,CAAC;IACpC,CAAC;IAED,4EAA4E;IAE5E,KAAK,CAAC,UAAU,CAAC,MAGhB;QACC,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAC5C,MAAM,CAAC,KAAK,EACZ,GAAG,EACH,IAAI,CAAC,OAAO,EACZ,YAAY,CACb,CAAC;QAEF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CACvE,IAAI,CAAC,OAAO,EACZ,WAAW,EACX,SAAS,CACV,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CACxC,MAAM,EACN,SAAS,EACT,MAAM,CAAC,OAAO,CACf,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnD,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC;IAC1C,CAAC;IAED,6EAA6E;IAErE,gBAAgB;QACtB,IAAI,IAAI,CAAC,iBAAiB;YAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAC1D,MAAM,KAAK,GAAoB,EAAE,CAAC;QAClC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAC/C,IAAI,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAC5B,KAAK,CAAC,IAAI,CAAC;gBACT,SAAS,EAAE,IAAI,CAAC,IAAI;gBACpB,QAAQ,EAAE,IAAI;gBACd,cAAc,EAAE,KAAK;gBACrB,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACK,2BAA2B,CACjC,MAAc,EACd,YAA+C,EAC/C,MAA+B;QAE/B,IAAI,CAAC,YAAY;YAAE,OAAO,MAAM,CAAC;QAEjC,MAAM,MAAM,GACV,OAAO,YAAY,KAAK,QAAQ;YAC9B,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QAE/D,IAAI,SAA0B,CAAC;QAC/B,IAAI,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC;YACnC,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;aAC5C,CAAC;YACJ,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC7D,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,GAAG,GAAG;gBAClC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACjD,CAAC;QAED,+EAA+E;QAC/E,uDAAuD;QACvD,8DAA8D;QAC9D,IACE,SAAS,CAAC,MAAM,KAAK,CAAC;YACtB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ;YACtB,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,EAC7B,CAAC;YACD,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC3B,IACE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU;gBAC3C,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC;gBAEhD,SAAS,GAAG,KAAK,CAAC,QAAS,CAAC;QAChC,CAAC;aAAM,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,sEAAsE;YACtE,gEAAgE;YAChE,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAChC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU;gBACvC,CAAC,CAAC,CAAC,QAAQ;gBACX,CAAC,CAAC,QAAQ,EAAE,MAAM,CACrB,CAAC;YACF,IAAI,WAAW;gBAAE,SAAS,GAAG,WAAW,CAAC,QAAS,CAAC;QACrD,CAAC;QAED,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CACjD,SAAS,EACT,GAAG,EACH,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,SAAS,EACd,CAAC,EACD,MAAM,EACN,YAAY,CACb,CAAC;QAEF,OAAO,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,YAAY,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;;OAGG;IACK,qBAAqB,CAC3B,MAAc,EACd,MAA+B,EAC/B,MAA+B;QAE/B,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC;QAErE,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAC/C,YAAuC,EACvC,IAAI,CAAC,OAAO,CACb,CAAC;QACF,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CACjD,SAAS,EACT,GAAG,EACH,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,SAAS,EACd,CAAC,EACD,MAAM,EACN,YAAY,CACb,CAAC;QACF,OAAO,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,YAAY,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACK,iBAAiB,CACvB,MAA+B,EAC/B,QAAgC,EAChC,MAAW;QAEX,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC,IAAI,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnD,MAAM,UAAU,GAAG,MAAM,CAAC,IAA+B,CAAC;YAC1D,MAAM,IAAI,GAA2B,EAAE,CAAC;YACxC,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;gBACjD,IAAI,GAAG,IAAI,GAAG,IAAI,QAAQ;oBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAExD,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;QAE3C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,yBAAyB,CAC/B,MAAc,EACd,YAA+C,EAC/C,MAA+B;QAE/B,IAAI,CAAC,YAAY;YAAE,OAAO,MAAM,CAAC;QAEjC,MAAM,MAAM,GACV,OAAO,YAAY,KAAK,QAAQ;YAC9B,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QAE/D,IAAI,SAA0B,CAAC;QAC/B,IAAI,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC;YACnC,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;aAC5C,CAAC;YACJ,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC7D,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,GAAG,GAAG;gBAClC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CACjD,SAAS,EACT,GAAG,EACH,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,SAAS,EACd,CAAC,EACD,MAAM,EACN,YAAY,CACb,CAAC;QAEF,OAAO,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,YAAY,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACK,mBAAmB,CACzB,MAAc,EACd,MAA+B,EAC/B,MAA+B;QAE/B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACxE,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CACjD,SAAS,EACT,GAAG,EACH,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,SAAS,EACd,CAAC,EACD,MAAM,EACN,YAAY,CACb,CAAC;QACF,OAAO,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,YAAY,EAAE,CAAC,CAAC;IAClE,CAAC;IAEO,cAAc,CACpB,OAAoB,EACpB,MAA+B;QAE/B,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC7C,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,IAAA,iCAAoB,EAAC,KAAK,EAAE,YAAY,CAAC,CAAC;gBAC1C,MAAM,cAAc,GAAG,IAAA,gCAAmB,EAAC,SAAS,CAAC,CAAC;gBACtD,OAAO,KAAK,IAAA,6BAAgB,EAAC,KAAK,CAAC,IAAI,cAAc,EAAE,CAAC;YAC1D,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,YAAY,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;gBACxC,MAAM,IAAI,iBAAQ,CAAC,uCAAuC,CAAC,CAAC;YAC9D,MAAM,CAAC,cAAc,GAAG,IAAA,kBAAQ,EAAC,MAAM,CAAC,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;gBACtC,MAAM,IAAI,iBAAQ,CAAC,sCAAsC,CAAC,CAAC;YAC7D,2CAA2C;YAC3C,MAAM,SAAS,GAAG,KAAM,CAAC;YACzB,MAAM,CAAC,aAAa,GAAG,IAAA,kBAAQ,EAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;YAC5D,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACrC,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;;AA78BH,sBA88BC;AAx6BC;;;;GAIG;AACY,qBAAe,GAAG,IAAI,GAAG,EAA2B,AAArC,CAAsC"}
@@ -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