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,220 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
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 { Executor } from './execution/executor';
8
+ import { ResultMapper } from './execution/result-mapper';
9
+ import { InterfaceModel } from './interface-model';
10
+ import { Model } from './model';
11
+ import { parseSchema } from './schema/parser';
12
+ import { clearResolveTargetDefCache } from './schema/utils';
13
+ import { OGMError } from './errors';
14
+ import { assertSafeIdentifier, assertSafeLabel } from './utils/validation';
15
+ export class OGM {
16
+ constructor(config) {
17
+ this.models = new Map();
18
+ this.interfaceModels = new Map();
19
+ this.relPropsToRelType = new Map();
20
+ this.config = config;
21
+ // Parse schema synchronously so model() works before init()
22
+ this.schema = parseSchema(this.config.typeDefs);
23
+ const whereOptions = {};
24
+ if (config.features?.filters?.String?.MATCHES === false)
25
+ whereOptions.disabledOperators = new Set(['_MATCHES']);
26
+ const where = new WhereCompiler(this.schema, whereOptions);
27
+ const selection = new SelectionCompiler(this.schema, where);
28
+ const fulltext = new FulltextCompiler(this.schema);
29
+ this.modelCompilers = {
30
+ where,
31
+ selection,
32
+ selectNormalizer: new SelectNormalizer(this.schema),
33
+ mutation: new MutationCompiler(this.schema),
34
+ fulltext,
35
+ };
36
+ this.interfaceModelCompilers = {
37
+ where,
38
+ selection,
39
+ fulltext,
40
+ };
41
+ // Pre-build reverse lookup: propsTypeName → relationship type
42
+ for (const [, nodeDef] of this.schema.nodes)
43
+ for (const [, relDef] of nodeDef.relationships)
44
+ if (relDef.properties && !this.relPropsToRelType.has(relDef.properties))
45
+ this.relPropsToRelType.set(relDef.properties, relDef.type);
46
+ }
47
+ async init() {
48
+ // Schema is already parsed in constructor.
49
+ // init() is kept for backward compatibility and for any future async setup.
50
+ }
51
+ async assertIndexesAndConstraints(options) {
52
+ if (!options?.options?.create)
53
+ return;
54
+ const session = this.config.driver.session();
55
+ try {
56
+ // Create node fulltext indexes
57
+ for (const [, nodeDef] of this.schema.nodes)
58
+ for (const ftIndex of nodeDef.fulltextIndexes)
59
+ if (ftIndex.fields.length > 0) {
60
+ assertSafeLabel(nodeDef.label);
61
+ assertSafeIdentifier(ftIndex.name, 'fulltext index name');
62
+ for (const f of ftIndex.fields)
63
+ assertSafeIdentifier(f, 'fulltext index field');
64
+ const fieldsStr = ftIndex.fields.map((f) => `n.${f}`).join(', ');
65
+ const cypher = `CREATE FULLTEXT INDEX ${ftIndex.name} IF NOT EXISTS FOR (n:${nodeDef.label}) ON EACH [${fieldsStr}]`;
66
+ await session.run(cypher);
67
+ }
68
+ // Create relationship fulltext indexes (from @fulltext on @relationshipProperties)
69
+ for (const [, relPropsDef] of this.schema.relationshipProperties)
70
+ for (const ftIndex of relPropsDef.fulltextIndexes ?? []) {
71
+ assertSafeIdentifier(ftIndex.name, 'fulltext index name');
72
+ for (const f of ftIndex.fields)
73
+ assertSafeIdentifier(f, 'fulltext index field');
74
+ const relType = this.findRelTypeForProps(relPropsDef.typeName);
75
+ assertSafeIdentifier(relType, 'relationship type');
76
+ const fieldsStr = ftIndex.fields.map((f) => `r.${f}`).join(', ');
77
+ const cypher = `CREATE FULLTEXT INDEX ${ftIndex.name} IF NOT EXISTS FOR ()-[r:${relType}]-() ON EACH [${fieldsStr}]`;
78
+ await session.run(cypher);
79
+ }
80
+ // Create uniqueness constraints
81
+ for (const [, nodeDef] of this.schema.nodes)
82
+ for (const [, prop] of nodeDef.properties)
83
+ if (prop.isUnique) {
84
+ assertSafeLabel(nodeDef.label);
85
+ assertSafeIdentifier(prop.name, 'property name');
86
+ const constraintName = `${nodeDef.label}_${prop.name}_unique`;
87
+ assertSafeIdentifier(constraintName, 'constraint name');
88
+ const cypher = `CREATE CONSTRAINT ${constraintName} IF NOT EXISTS FOR (n:${nodeDef.label}) REQUIRE n.${prop.name} IS UNIQUE`;
89
+ await session.run(cypher);
90
+ }
91
+ }
92
+ finally {
93
+ await session.close();
94
+ }
95
+ }
96
+ /** Resolve which relationship type uses a given @relationshipProperties type name. */
97
+ findRelTypeForProps(propsTypeName) {
98
+ const relType = this.relPropsToRelType.get(propsTypeName);
99
+ if (relType)
100
+ return relType;
101
+ throw new OGMError(`No relationship found using properties type "${propsTypeName}"`);
102
+ }
103
+ model(name) {
104
+ const existing = this.models.get(name);
105
+ if (existing)
106
+ return existing;
107
+ // Also check interface model cache
108
+ const existingInterface = this.interfaceModels.get(name);
109
+ if (existingInterface)
110
+ return existingInterface;
111
+ const nodeDef = this.schema.nodes.get(name);
112
+ if (nodeDef) {
113
+ const model = new Model(nodeDef, this.schema, this.config.driver, this.modelCompilers, this.config.logger);
114
+ this.models.set(name, model);
115
+ return model;
116
+ }
117
+ // Fallback: check interfaces
118
+ const interfaceDef = this.schema.interfaces.get(name);
119
+ if (interfaceDef) {
120
+ const model = new InterfaceModel(interfaceDef, this.schema, this.config.driver, this.interfaceModelCompilers);
121
+ this.interfaceModels.set(name, model);
122
+ return model;
123
+ }
124
+ throw new OGMError(`Unknown type: ${name}. Not found in nodes or interfaces.`);
125
+ }
126
+ interfaceModel(name) {
127
+ const existing = this.interfaceModels.get(name);
128
+ if (existing)
129
+ return existing;
130
+ const interfaceDef = this.schema.interfaces.get(name);
131
+ if (!interfaceDef)
132
+ throw new OGMError(`Unknown interface type: ${name}`);
133
+ const model = new InterfaceModel(interfaceDef, this.schema, this.config.driver, this.interfaceModelCompilers);
134
+ this.interfaceModels.set(name, model);
135
+ return model;
136
+ }
137
+ /**
138
+ * Clear all internal caches and release model references.
139
+ * Call when disposing the OGM instance (e.g., in tests or module teardown).
140
+ */
141
+ close() {
142
+ this.models.clear();
143
+ this.interfaceModels.clear();
144
+ this.modelCompilers.mutation.clearCaches();
145
+ this.modelCompilers.selection.clearCache();
146
+ this.modelCompilers.selectNormalizer.clearCache();
147
+ Model.clearSelectionCache();
148
+ clearResolveTargetDefCache();
149
+ }
150
+ // --- $queryRaw / $executeRaw -----------------------------------------------
151
+ /**
152
+ * Execute a raw Cypher query and return mapped results.
153
+ * Uses OGM-managed sessions with debug logging.
154
+ */
155
+ async $queryRaw(cypher, params = {}) {
156
+ if (Executor.debug && this.config.logger) {
157
+ this.config.logger.debug('[OGM $queryRaw] Cypher: %s', cypher);
158
+ this.config.logger.debug('[OGM $queryRaw] Params: %s', JSON.stringify(params, null, 2));
159
+ }
160
+ const session = this.config.driver.session();
161
+ try {
162
+ const result = await session.run(cypher, params);
163
+ return ResultMapper.mapRecords(result.records);
164
+ }
165
+ finally {
166
+ await session.close();
167
+ }
168
+ }
169
+ /**
170
+ * Execute a raw Cypher write operation and return affected counts.
171
+ * Uses OGM-managed sessions with debug logging.
172
+ */
173
+ async $executeRaw(cypher, params = {}) {
174
+ if (Executor.debug && this.config.logger) {
175
+ this.config.logger.debug('[OGM $executeRaw] Cypher: %s', cypher);
176
+ this.config.logger.debug('[OGM $executeRaw] Params: %s', JSON.stringify(params, null, 2));
177
+ }
178
+ const session = this.config.driver.session();
179
+ try {
180
+ const result = await session.run(cypher, params);
181
+ const counters = result.summary.counters.updates();
182
+ const recordsAffected = (counters.nodesCreated ?? 0) +
183
+ (counters.nodesDeleted ?? 0) +
184
+ (counters.relationshipsCreated ?? 0) +
185
+ (counters.relationshipsDeleted ?? 0) +
186
+ (counters.propertiesSet ?? 0);
187
+ return { recordsAffected };
188
+ }
189
+ finally {
190
+ await session.close();
191
+ }
192
+ }
193
+ async $transaction(fnOrOps) {
194
+ const session = this.config.driver.session();
195
+ const tx = session.beginTransaction();
196
+ try {
197
+ let result;
198
+ if (Array.isArray(fnOrOps)) {
199
+ // Sequential: execute each operation in order within the same tx
200
+ const results = [];
201
+ const ctx = { transaction: tx };
202
+ for (const op of fnOrOps)
203
+ results.push(await op(ctx));
204
+ result = results;
205
+ }
206
+ else
207
+ result = await fnOrOps({ transaction: tx });
208
+ await tx.commit();
209
+ return result;
210
+ }
211
+ catch (error) {
212
+ await tx.rollback();
213
+ throw error;
214
+ }
215
+ finally {
216
+ await session.close();
217
+ }
218
+ }
219
+ }
220
+ //# sourceMappingURL=ogm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ogm.js","sourceRoot":"","sources":["../../src/ogm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,12 @@
1
+ import type { SchemaMetadata } from './types';
2
+ /**
3
+ * Generate a plural name from a type name following OGM conventions.
4
+ * Uses the `pluralize` npm package for correct English pluralization
5
+ * (handles uncountable words like "equipment", irregular plurals, etc.)
6
+ */
7
+ export declare function pluralize(name: string): string;
8
+ /**
9
+ * Parse a GraphQL schema string into SchemaMetadata.
10
+ */
11
+ export declare function parseSchema(schemaSource: string): SchemaMetadata;
12
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/schema/parser.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACV,cAAc,EAMf,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9C;AA8PD;;GAEG;AACH,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,CA4IhE"}
@@ -0,0 +1,324 @@
1
+ import { parse, Kind, } from 'graphql';
2
+ import pluralizeLib from 'pluralize';
3
+ /**
4
+ * Generate a plural name from a type name following OGM conventions.
5
+ * Uses the `pluralize` npm package for correct English pluralization
6
+ * (handles uncountable words like "equipment", irregular plurals, etc.)
7
+ */
8
+ export function pluralize(name) {
9
+ const lcFirst = name.charAt(0).toLowerCase() + name.slice(1);
10
+ return pluralizeLib(lcFirst);
11
+ }
12
+ /** Extract the named type from a potentially wrapped (NonNull, List) type node */
13
+ function unwrapType(typeNode) {
14
+ let isArray = false;
15
+ let isRequired = false;
16
+ let isListItemRequired = false;
17
+ let current = typeNode;
18
+ // Outer NonNullType means the field itself is required
19
+ if (current.kind === Kind.NON_NULL_TYPE) {
20
+ isRequired = true;
21
+ current = current.type;
22
+ }
23
+ if (current.kind === Kind.LIST_TYPE) {
24
+ isArray = true;
25
+ current = current.type;
26
+ // Inner NonNullType on list element: [Type!]
27
+ if (current.kind === Kind.NON_NULL_TYPE) {
28
+ isListItemRequired = true;
29
+ current = current.type;
30
+ }
31
+ }
32
+ if (current.kind === Kind.NAMED_TYPE)
33
+ return {
34
+ typeName: current.name.value,
35
+ isArray,
36
+ isRequired,
37
+ isListItemRequired,
38
+ };
39
+ // Fallback - shouldn't happen with valid GraphQL
40
+ return { typeName: 'Unknown', isArray, isRequired, isListItemRequired };
41
+ }
42
+ /** Check if a type name is a scalar (not a node/interface/enum relationship target) */
43
+ const SCALAR_TYPES = new Set([
44
+ 'String',
45
+ 'Int',
46
+ 'Float',
47
+ 'Boolean',
48
+ 'ID',
49
+ 'DateTime',
50
+ 'BigInt',
51
+ 'Date',
52
+ 'Time',
53
+ 'LocalTime',
54
+ 'LocalDateTime',
55
+ 'Duration',
56
+ 'Point',
57
+ 'CartesianPoint',
58
+ ]);
59
+ function getDirective(node, name) {
60
+ return node.directives?.find((d) => d.name.value === name);
61
+ }
62
+ function getDirectiveArgStringValue(directive, argName) {
63
+ const arg = directive.arguments?.find((a) => a.name.value === argName);
64
+ if (arg && arg.value.kind === Kind.STRING)
65
+ return arg.value.value;
66
+ if (arg && arg.value.kind === Kind.ENUM)
67
+ return arg.value.value;
68
+ return undefined;
69
+ }
70
+ function getDirectiveArgValue(directive, argName) {
71
+ const arg = directive.arguments?.find((a) => a.name.value === argName);
72
+ if (!arg)
73
+ return undefined;
74
+ return arg.value;
75
+ }
76
+ /** Parse a field definition into either a PropertyDefinition or RelationshipDefinition */
77
+ function parseField(field, enumNames) {
78
+ const { typeName, isArray, isRequired, isListItemRequired } = unwrapType(field.type);
79
+ const relationshipDirective = getDirective(field, 'relationship');
80
+ const declareRelDirective = getDirective(field, 'declareRelationship');
81
+ // If it has @relationship directive, it's a relationship
82
+ if (relationshipDirective) {
83
+ const relType = getDirectiveArgStringValue(relationshipDirective, 'type');
84
+ const direction = getDirectiveArgStringValue(relationshipDirective, 'direction');
85
+ const properties = getDirectiveArgStringValue(relationshipDirective, 'properties');
86
+ if (!relType || !direction)
87
+ // Malformed directive, skip
88
+ return {};
89
+ const rel = {
90
+ fieldName: field.name.value,
91
+ type: relType,
92
+ direction: direction,
93
+ target: typeName,
94
+ isArray,
95
+ isRequired,
96
+ };
97
+ if (properties)
98
+ rel.properties = properties;
99
+ return { relationship: rel };
100
+ }
101
+ // If it has @declareRelationship, treat as a relationship declaration
102
+ // (used for interface types — direction/type come from concrete implementors)
103
+ if (declareRelDirective) {
104
+ const rel = {
105
+ fieldName: field.name.value,
106
+ type: '', // Unknown at interface level
107
+ direction: 'OUT', // Default; concrete types provide actual direction
108
+ target: typeName,
109
+ isArray,
110
+ isRequired,
111
+ };
112
+ return { relationship: rel };
113
+ }
114
+ // Otherwise it's a property (scalar, enum, or unknown type treated as scalar)
115
+ const idDirective = getDirective(field, 'id');
116
+ const uniqueDirective = getDirective(field, 'unique');
117
+ const cypherDirective = getDirective(field, 'cypher');
118
+ const defaultDirective = getDirective(field, 'default');
119
+ let defaultValue;
120
+ if (defaultDirective) {
121
+ const val = getDirectiveArgValue(defaultDirective, 'value');
122
+ if (val)
123
+ if (val.kind === Kind.STRING)
124
+ defaultValue = val.value;
125
+ else if (val.kind === Kind.BOOLEAN)
126
+ defaultValue = String(val.value);
127
+ else if (val.kind === Kind.ENUM)
128
+ defaultValue = val.value;
129
+ else if (val.kind === Kind.INT)
130
+ defaultValue = val.value;
131
+ else if (val.kind === Kind.FLOAT)
132
+ defaultValue = val.value;
133
+ }
134
+ // Determine if this is truly a scalar property
135
+ // A non-scalar, non-enum type without @relationship is unusual but we treat it as a property
136
+ // if it's a known scalar or enum
137
+ const isScalarOrEnum = SCALAR_TYPES.has(typeName) || enumNames.has(typeName);
138
+ if (!isScalarOrEnum && !isArray) {
139
+ // Could be a relationship to a node type without @relationship directive
140
+ // but per the schema patterns we've seen, we'll still treat it as property
141
+ // unless it's array of a non-scalar
142
+ }
143
+ const directives = field.directives?.map((d) => d.name.value) ?? [];
144
+ const prop = {
145
+ name: field.name.value,
146
+ type: typeName,
147
+ required: isRequired,
148
+ isArray,
149
+ isListItemRequired,
150
+ isGenerated: !!idDirective,
151
+ isUnique: !!uniqueDirective,
152
+ isCypher: !!cypherDirective,
153
+ directives,
154
+ defaultValue,
155
+ };
156
+ return { property: prop };
157
+ }
158
+ /** Parse @fulltext indexes from a type definition */
159
+ function parseFulltextIndexes(node) {
160
+ const ftDirective = getDirective(node, 'fulltext');
161
+ if (!ftDirective)
162
+ return [];
163
+ const indexesArg = getDirectiveArgValue(ftDirective, 'indexes');
164
+ if (!indexesArg || indexesArg.kind !== Kind.LIST)
165
+ return [];
166
+ const results = [];
167
+ for (const item of indexesArg.values) {
168
+ if (item.kind !== Kind.OBJECT)
169
+ continue;
170
+ const obj = item;
171
+ let name = '';
172
+ const fields = [];
173
+ for (const field of obj.fields) {
174
+ if (field.name.value === 'name' && field.value.kind === Kind.STRING)
175
+ name = field.value.value;
176
+ if (field.name.value === 'fields' && field.value.kind === Kind.LIST)
177
+ for (const f of field.value.values)
178
+ if (f.kind === Kind.STRING)
179
+ fields.push(f.value);
180
+ }
181
+ if (name && fields.length > 0)
182
+ results.push({ name, fields });
183
+ }
184
+ return results;
185
+ }
186
+ /** Parse @node labels directive */
187
+ function parseNodeLabels(node) {
188
+ const nodeDirective = getDirective(node, 'node');
189
+ if (!nodeDirective)
190
+ return undefined;
191
+ const labelsArg = getDirectiveArgValue(nodeDirective, 'labels');
192
+ if (!labelsArg || labelsArg.kind !== Kind.LIST)
193
+ return undefined;
194
+ const labels = [];
195
+ for (const val of labelsArg.values)
196
+ if (val.kind === Kind.STRING)
197
+ labels.push(val.value);
198
+ return labels.length > 0 ? labels : undefined;
199
+ }
200
+ /**
201
+ * Parse a GraphQL schema string into SchemaMetadata.
202
+ */
203
+ export function parseSchema(schemaSource) {
204
+ const document = parse(schemaSource);
205
+ const metadata = {
206
+ nodes: new Map(),
207
+ interfaces: new Map(),
208
+ relationshipProperties: new Map(),
209
+ enums: new Map(),
210
+ unions: new Map(),
211
+ };
212
+ // First pass: collect enum names and relationship properties type names
213
+ const enumNames = new Set();
214
+ const relPropsTypeNames = new Set();
215
+ const unionMembers = new Map();
216
+ for (const def of document.definitions) {
217
+ if (def.kind === Kind.ENUM_TYPE_DEFINITION) {
218
+ const enumDef = def;
219
+ const values = enumDef.values?.map((v) => v.name.value) ?? [];
220
+ metadata.enums.set(enumDef.name.value, values);
221
+ enumNames.add(enumDef.name.value);
222
+ }
223
+ if (def.kind === Kind.OBJECT_TYPE_DEFINITION) {
224
+ const objDef = def;
225
+ if (getDirective(objDef, 'relationshipProperties'))
226
+ relPropsTypeNames.add(objDef.name.value);
227
+ }
228
+ if (def.kind === Kind.UNION_TYPE_DEFINITION) {
229
+ const members = def.types?.map((t) => t.name.value) ?? [];
230
+ unionMembers.set(def.name.value, members);
231
+ metadata.unions.set(def.name.value, members);
232
+ }
233
+ }
234
+ // Second pass: parse interfaces
235
+ for (const def of document.definitions)
236
+ if (def.kind === Kind.INTERFACE_TYPE_DEFINITION) {
237
+ const intDef = def;
238
+ const properties = new Map();
239
+ const relationships = new Map();
240
+ for (const field of intDef.fields ?? []) {
241
+ const parsed = parseField(field, enumNames);
242
+ if (parsed.property)
243
+ properties.set(parsed.property.name, parsed.property);
244
+ if (parsed.relationship)
245
+ relationships.set(parsed.relationship.fieldName, parsed.relationship);
246
+ }
247
+ const interfaceDef = {
248
+ name: intDef.name.value,
249
+ label: intDef.name.value,
250
+ properties,
251
+ relationships,
252
+ implementedBy: [], // populated in third pass
253
+ };
254
+ metadata.interfaces.set(intDef.name.value, interfaceDef);
255
+ }
256
+ // Third pass: parse object types (nodes and relationship properties)
257
+ for (const def of document.definitions) {
258
+ if (def.kind !== Kind.OBJECT_TYPE_DEFINITION)
259
+ continue;
260
+ const objDef = def;
261
+ const typeName = objDef.name.value;
262
+ // Handle @relationshipProperties types
263
+ if (relPropsTypeNames.has(typeName)) {
264
+ const properties = new Map();
265
+ for (const field of objDef.fields ?? []) {
266
+ const parsed = parseField(field, enumNames);
267
+ if (parsed.property)
268
+ properties.set(parsed.property.name, parsed.property);
269
+ }
270
+ const fulltextIndexes = parseFulltextIndexes(objDef);
271
+ metadata.relationshipProperties.set(typeName, {
272
+ typeName,
273
+ properties,
274
+ fulltextIndexes,
275
+ });
276
+ continue;
277
+ }
278
+ // Regular node type
279
+ const properties = new Map();
280
+ const relationships = new Map();
281
+ for (const field of objDef.fields ?? []) {
282
+ const parsed = parseField(field, enumNames);
283
+ if (parsed.property)
284
+ properties.set(parsed.property.name, parsed.property);
285
+ if (parsed.relationship)
286
+ relationships.set(parsed.relationship.fieldName, parsed.relationship);
287
+ }
288
+ // Determine labels
289
+ const nodeLabels = parseNodeLabels(objDef);
290
+ const implementsInterfaces = objDef.interfaces?.map((i) => i.name.value) ?? [];
291
+ // Register with interfaces
292
+ for (const ifaceName of implementsInterfaces) {
293
+ const iface = metadata.interfaces.get(ifaceName);
294
+ if (iface)
295
+ iface.implementedBy.push(typeName);
296
+ }
297
+ // If @node(labels: [...]) is specified, use those labels
298
+ // Otherwise, use the typeName as the single label
299
+ let labels;
300
+ let label;
301
+ if (nodeLabels) {
302
+ labels = nodeLabels;
303
+ label = typeName;
304
+ }
305
+ else {
306
+ labels = [typeName];
307
+ label = typeName;
308
+ }
309
+ const fulltextIndexes = parseFulltextIndexes(objDef);
310
+ const nodeDef = {
311
+ typeName,
312
+ label,
313
+ labels,
314
+ pluralName: pluralize(typeName),
315
+ properties,
316
+ relationships,
317
+ fulltextIndexes,
318
+ implementsInterfaces,
319
+ };
320
+ metadata.nodes.set(typeName, nodeDef);
321
+ }
322
+ return metadata;
323
+ }
324
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/schema/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /** Recursive type for Neo4j property values (no `any`) */
2
+ export type Neo4jValue = string | number | boolean | null | Neo4jValue[] | {
3
+ [key: string]: Neo4jValue;
4
+ };
5
+ /** Generic fallback types */
6
+ export interface WhereInput {
7
+ [key: string]: Neo4jValue | WhereInput | WhereInput[];
8
+ }
9
+ export interface MutationInput {
10
+ [key: string]: Neo4jValue | MutationInput | MutationInput[];
11
+ }
12
+ export interface PropertyDefinition {
13
+ name: string;
14
+ type: string;
15
+ required: boolean;
16
+ isArray: boolean;
17
+ isListItemRequired: boolean;
18
+ isGenerated: boolean;
19
+ isUnique: boolean;
20
+ isCypher: boolean;
21
+ directives: string[];
22
+ defaultValue?: string;
23
+ }
24
+ export interface RelationshipDefinition {
25
+ fieldName: string;
26
+ type: string;
27
+ direction: 'IN' | 'OUT';
28
+ target: string;
29
+ properties?: string;
30
+ isArray: boolean;
31
+ isRequired: boolean;
32
+ }
33
+ export interface FulltextIndex {
34
+ name: string;
35
+ fields: string[];
36
+ }
37
+ export interface NodeDefinition {
38
+ typeName: string;
39
+ label: string;
40
+ labels: string[];
41
+ pluralName: string;
42
+ properties: Map<string, PropertyDefinition>;
43
+ relationships: Map<string, RelationshipDefinition>;
44
+ fulltextIndexes: FulltextIndex[];
45
+ implementsInterfaces: string[];
46
+ }
47
+ export interface InterfaceDefinition {
48
+ name: string;
49
+ label: string;
50
+ properties: Map<string, PropertyDefinition>;
51
+ relationships: Map<string, RelationshipDefinition>;
52
+ implementedBy: string[];
53
+ }
54
+ export interface RelationshipPropertiesDefinition {
55
+ typeName: string;
56
+ properties: Map<string, PropertyDefinition>;
57
+ fulltextIndexes?: FulltextIndex[];
58
+ }
59
+ export interface SchemaMetadata {
60
+ nodes: Map<string, NodeDefinition>;
61
+ interfaces: Map<string, InterfaceDefinition>;
62
+ relationshipProperties: Map<string, RelationshipPropertiesDefinition>;
63
+ enums: Map<string, string[]>;
64
+ unions: Map<string, string[]>;
65
+ }
66
+ //# sourceMappingURL=types.d.ts.map