@ptc-org/nestjs-query-graphql 0.30.1 → 1.0.0-alpha.1

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 (452) hide show
  1. package/CHANGELOG.md +149 -149
  2. package/README.md +4 -4
  3. package/package.json +7 -6
  4. package/src/auth/authorizer.d.ts +26 -0
  5. package/src/auth/authorizer.js +12 -0
  6. package/src/auth/authorizer.js.map +1 -0
  7. package/src/auth/default-crud.authorizer.d.ts +6 -0
  8. package/src/auth/default-crud.authorizer.js +74 -0
  9. package/src/auth/default-crud.authorizer.js.map +1 -0
  10. package/src/auth/index.d.ts +3 -0
  11. package/src/auth/index.js +7 -0
  12. package/src/auth/index.js.map +1 -0
  13. package/src/auth/tokens.d.ts +3 -0
  14. package/src/auth/tokens.js +8 -0
  15. package/src/auth/tokens.js.map +1 -0
  16. package/src/common/dto.utils.d.ts +15 -0
  17. package/src/common/dto.utils.js +32 -0
  18. package/src/common/dto.utils.js.map +1 -0
  19. package/src/common/external.utils.d.ts +10 -0
  20. package/src/common/external.utils.js +33 -0
  21. package/src/common/external.utils.js.map +1 -0
  22. package/src/common/index.d.ts +4 -0
  23. package/src/common/index.js +11 -0
  24. package/src/common/index.js.map +1 -0
  25. package/src/common/object.utils.d.ts +1 -0
  26. package/src/common/object.utils.js +14 -0
  27. package/src/common/object.utils.js.map +1 -0
  28. package/src/common/resolver.utils.d.ts +2 -0
  29. package/src/common/resolver.utils.js +19 -0
  30. package/src/common/resolver.utils.js.map +1 -0
  31. package/src/decorators/aggregate-query-param.decorator.d.ts +1 -0
  32. package/src/decorators/aggregate-query-param.decorator.js +21 -0
  33. package/src/decorators/aggregate-query-param.decorator.js.map +1 -0
  34. package/src/decorators/authorize-filter.decorator.d.ts +6 -0
  35. package/src/decorators/authorize-filter.decorator.js +67 -0
  36. package/src/decorators/authorize-filter.decorator.js.map +1 -0
  37. package/src/decorators/authorizer.decorator.d.ts +5 -0
  38. package/src/decorators/authorizer.decorator.js +24 -0
  39. package/src/decorators/authorizer.decorator.js.map +1 -0
  40. package/src/decorators/constants.d.ts +8 -0
  41. package/src/decorators/constants.js +12 -0
  42. package/src/decorators/constants.js.map +1 -0
  43. package/src/decorators/decorator.utils.d.ts +3 -0
  44. package/src/decorators/decorator.utils.js +21 -0
  45. package/src/decorators/decorator.utils.js.map +1 -0
  46. package/src/decorators/filterable-field.decorator.d.ts +47 -0
  47. package/src/decorators/filterable-field.decorator.js +53 -0
  48. package/src/decorators/filterable-field.decorator.js.map +1 -0
  49. package/src/decorators/hook-args.decorator.d.ts +3 -0
  50. package/src/decorators/hook-args.decorator.js +43 -0
  51. package/src/decorators/hook-args.decorator.js.map +1 -0
  52. package/src/decorators/hook.decorator.d.ts +13 -0
  53. package/src/decorators/hook.decorator.js +31 -0
  54. package/src/decorators/hook.decorator.js.map +1 -0
  55. package/src/decorators/id-field.decorator.d.ts +32 -0
  56. package/src/decorators/id-field.decorator.js +48 -0
  57. package/src/decorators/id-field.decorator.js.map +1 -0
  58. package/src/decorators/index.d.ts +21 -0
  59. package/src/decorators/index.js +39 -0
  60. package/src/decorators/index.js.map +1 -0
  61. package/src/decorators/inject-authorizer.decorator.d.ts +2 -0
  62. package/src/decorators/inject-authorizer.decorator.js +8 -0
  63. package/src/decorators/inject-authorizer.decorator.js.map +1 -0
  64. package/src/decorators/inject-custom-authorizer.decorator.d.ts +2 -0
  65. package/src/decorators/inject-custom-authorizer.decorator.js +8 -0
  66. package/src/decorators/inject-custom-authorizer.decorator.js.map +1 -0
  67. package/src/decorators/inject-pub-sub.decorator.d.ts +1 -0
  68. package/src/decorators/inject-pub-sub.decorator.js +8 -0
  69. package/src/decorators/inject-pub-sub.decorator.js.map +1 -0
  70. package/src/decorators/key-set.decorator.d.ts +3 -0
  71. package/src/decorators/key-set.decorator.js +13 -0
  72. package/src/decorators/key-set.decorator.js.map +1 -0
  73. package/src/decorators/query-options.decorator.d.ts +5 -0
  74. package/src/decorators/query-options.decorator.js +16 -0
  75. package/src/decorators/query-options.decorator.js.map +1 -0
  76. package/src/decorators/reference.decorator.d.ts +8 -0
  77. package/src/decorators/reference.decorator.js +36 -0
  78. package/src/decorators/reference.decorator.js.map +1 -0
  79. package/src/decorators/relation.decorator.d.ts +16 -0
  80. package/src/decorators/relation.decorator.js +53 -0
  81. package/src/decorators/relation.decorator.js.map +1 -0
  82. package/src/decorators/resolver-field.decorator.d.ts +11 -0
  83. package/src/decorators/resolver-field.decorator.js +22 -0
  84. package/src/decorators/resolver-field.decorator.js.map +1 -0
  85. package/src/decorators/resolver-method.decorator.d.ts +34 -0
  86. package/src/decorators/resolver-method.decorator.js +35 -0
  87. package/src/decorators/resolver-method.decorator.js.map +1 -0
  88. package/src/decorators/resolver-mutation.decorator.d.ts +10 -0
  89. package/src/decorators/resolver-mutation.decorator.js +21 -0
  90. package/src/decorators/resolver-mutation.decorator.js.map +1 -0
  91. package/src/decorators/resolver-query.decorator.d.ts +13 -0
  92. package/src/decorators/resolver-query.decorator.js +21 -0
  93. package/src/decorators/resolver-query.decorator.js.map +1 -0
  94. package/src/decorators/resolver-subscription.decorator.d.ts +7 -0
  95. package/src/decorators/resolver-subscription.decorator.js +18 -0
  96. package/src/decorators/resolver-subscription.decorator.js.map +1 -0
  97. package/src/decorators/skip-if.decorator.d.ts +8 -0
  98. package/src/decorators/skip-if.decorator.js +18 -0
  99. package/src/decorators/skip-if.decorator.js.map +1 -0
  100. package/src/federation/index.d.ts +1 -0
  101. package/src/federation/index.js +3 -0
  102. package/src/federation/index.js.map +1 -0
  103. package/src/federation/representation.type.d.ts +3 -0
  104. package/src/federation/representation.type.js +3 -0
  105. package/src/federation/representation.type.js.map +1 -0
  106. package/src/hooks/default.hook.d.ts +3 -0
  107. package/src/hooks/default.hook.js +13 -0
  108. package/src/hooks/default.hook.js.map +1 -0
  109. package/src/hooks/hooks.d.ts +14 -0
  110. package/src/hooks/hooks.js +8 -0
  111. package/src/hooks/hooks.js.map +1 -0
  112. package/src/hooks/index.d.ts +4 -0
  113. package/src/hooks/index.js +10 -0
  114. package/src/hooks/index.js.map +1 -0
  115. package/src/hooks/tokens.d.ts +3 -0
  116. package/src/hooks/tokens.js +6 -0
  117. package/src/hooks/tokens.js.map +1 -0
  118. package/src/hooks/types.d.ts +10 -0
  119. package/src/hooks/types.js +15 -0
  120. package/src/hooks/types.js.map +1 -0
  121. package/src/index.d.ts +11 -0
  122. package/src/index.js.map +1 -0
  123. package/src/interceptors/authorizer.interceptor.d.ts +7 -0
  124. package/src/interceptors/authorizer.interceptor.js +33 -0
  125. package/src/interceptors/authorizer.interceptor.js.map +1 -0
  126. package/src/interceptors/hook.interceptor.d.ts +7 -0
  127. package/src/interceptors/hook.interceptor.js +44 -0
  128. package/src/interceptors/hook.interceptor.js.map +1 -0
  129. package/src/interceptors/index.d.ts +2 -0
  130. package/src/interceptors/index.js +6 -0
  131. package/src/interceptors/index.js.map +1 -0
  132. package/src/loader/aggregate-relations.loader.d.ts +16 -0
  133. package/src/loader/aggregate-relations.loader.js +43 -0
  134. package/src/loader/aggregate-relations.loader.js.map +1 -0
  135. package/src/loader/count-relations.loader.d.ts +15 -0
  136. package/src/loader/count-relations.loader.js +42 -0
  137. package/src/loader/count-relations.loader.js.map +1 -0
  138. package/src/loader/dataloader.factory.d.ts +9 -0
  139. package/src/loader/dataloader.factory.js +27 -0
  140. package/src/loader/dataloader.factory.js.map +1 -0
  141. package/src/loader/find-relations.loader.d.ts +14 -0
  142. package/src/loader/find-relations.loader.js +42 -0
  143. package/src/loader/find-relations.loader.js.map +1 -0
  144. package/src/loader/index.d.ts +5 -0
  145. package/src/loader/index.js +9 -0
  146. package/src/loader/index.js.map +1 -0
  147. package/src/loader/query-relations.loader.d.ts +15 -0
  148. package/src/loader/query-relations.loader.js +43 -0
  149. package/src/loader/query-relations.loader.js.map +1 -0
  150. package/src/loader/relations.loader.d.ts +4 -0
  151. package/src/loader/relations.loader.js +3 -0
  152. package/src/loader/relations.loader.js.map +1 -0
  153. package/src/module.d.ts +31 -0
  154. package/src/module.js +55 -0
  155. package/src/module.js.map +1 -0
  156. package/src/providers/authorizer.provider.d.ts +3 -0
  157. package/src/providers/authorizer.provider.js +31 -0
  158. package/src/providers/authorizer.provider.js.map +1 -0
  159. package/src/providers/hook.provider.d.ts +5 -0
  160. package/src/providers/hook.provider.js +33 -0
  161. package/src/providers/hook.provider.js.map +1 -0
  162. package/src/providers/index.d.ts +3 -0
  163. package/src/providers/index.js +7 -0
  164. package/src/providers/index.js.map +1 -0
  165. package/src/providers/resolver.provider.d.ts +26 -0
  166. package/src/providers/resolver.provider.js +112 -0
  167. package/src/providers/resolver.provider.js.map +1 -0
  168. package/src/resolvers/aggregate.resolver.d.ts +16 -0
  169. package/src/resolvers/aggregate.resolver.js +56 -0
  170. package/src/resolvers/aggregate.resolver.js.map +1 -0
  171. package/src/resolvers/create.resolver.d.ts +57 -0
  172. package/src/resolvers/create.resolver.js +190 -0
  173. package/src/resolvers/create.resolver.js.map +1 -0
  174. package/src/resolvers/crud.resolver.d.ts +52 -0
  175. package/src/resolvers/crud.resolver.js +68 -0
  176. package/src/resolvers/crud.resolver.js.map +1 -0
  177. package/src/resolvers/delete.resolver.d.ts +32 -0
  178. package/src/resolvers/delete.resolver.js +186 -0
  179. package/src/resolvers/delete.resolver.js.map +1 -0
  180. package/src/resolvers/federation/federation.resolver.d.ts +4 -0
  181. package/src/resolvers/federation/federation.resolver.js +8 -0
  182. package/src/resolvers/federation/federation.resolver.js.map +1 -0
  183. package/src/resolvers/federation/index.d.ts +1 -0
  184. package/src/resolvers/federation/index.js +6 -0
  185. package/src/resolvers/federation/index.js.map +1 -0
  186. package/src/resolvers/helpers.d.ts +6 -0
  187. package/src/resolvers/helpers.js +38 -0
  188. package/src/resolvers/helpers.js.map +1 -0
  189. package/src/resolvers/index.d.ts +9 -0
  190. package/src/resolvers/index.js +20 -0
  191. package/src/resolvers/index.js.map +1 -0
  192. package/src/resolvers/read.resolver.d.ts +18 -0
  193. package/src/resolvers/read.resolver.js +75 -0
  194. package/src/resolvers/read.resolver.js.map +1 -0
  195. package/src/resolvers/reference.resolver.d.ts +11 -0
  196. package/src/resolvers/reference.resolver.js +41 -0
  197. package/src/resolvers/reference.resolver.js.map +1 -0
  198. package/src/resolvers/relations/aggregate-relations.resolver.d.ts +11 -0
  199. package/src/resolvers/relations/aggregate-relations.resolver.js +76 -0
  200. package/src/resolvers/relations/aggregate-relations.resolver.js.map +1 -0
  201. package/src/resolvers/relations/helpers.d.ts +4 -0
  202. package/src/resolvers/relations/helpers.js +10 -0
  203. package/src/resolvers/relations/helpers.js.map +1 -0
  204. package/src/resolvers/relations/index.d.ts +7 -0
  205. package/src/resolvers/relations/index.js +16 -0
  206. package/src/resolvers/relations/index.js.map +1 -0
  207. package/src/resolvers/relations/read-relations.resolver.d.ts +8 -0
  208. package/src/resolvers/relations/read-relations.resolver.js +114 -0
  209. package/src/resolvers/relations/read-relations.resolver.js.map +1 -0
  210. package/src/resolvers/relations/references-relation.resolver.d.ts +5 -0
  211. package/src/resolvers/relations/references-relation.resolver.js +55 -0
  212. package/src/resolvers/relations/references-relation.resolver.js.map +1 -0
  213. package/src/resolvers/relations/relations.interface.d.ts +78 -0
  214. package/src/resolvers/relations/relations.interface.js +3 -0
  215. package/src/resolvers/relations/relations.interface.js.map +1 -0
  216. package/src/resolvers/relations/relations.resolver.d.ts +8 -0
  217. package/src/resolvers/relations/relations.resolver.js +22 -0
  218. package/src/resolvers/relations/relations.resolver.js.map +1 -0
  219. package/src/resolvers/relations/remove-relations.resolver.d.ts +5 -0
  220. package/src/resolvers/relations/remove-relations.resolver.js +107 -0
  221. package/src/resolvers/relations/remove-relations.resolver.js.map +1 -0
  222. package/src/resolvers/relations/update-relations.resolver.d.ts +5 -0
  223. package/src/resolvers/relations/update-relations.resolver.js +138 -0
  224. package/src/resolvers/relations/update-relations.resolver.js.map +1 -0
  225. package/src/resolvers/resolver.interface.d.ts +47 -0
  226. package/src/resolvers/resolver.interface.js +14 -0
  227. package/src/resolvers/resolver.interface.js.map +1 -0
  228. package/src/resolvers/update.resolver.d.ts +23 -0
  229. package/src/resolvers/update.resolver.js +198 -0
  230. package/src/resolvers/update.resolver.js.map +1 -0
  231. package/src/subscription/index.d.ts +14 -0
  232. package/src/subscription/index.js +32 -0
  233. package/src/subscription/index.js.map +1 -0
  234. package/src/subscription/pub-sub.interface.d.ts +6 -0
  235. package/src/subscription/pub-sub.interface.js +3 -0
  236. package/src/subscription/pub-sub.interface.js.map +1 -0
  237. package/src/types/aggregate/aggregate-args.type.d.ts +9 -0
  238. package/src/types/aggregate/aggregate-args.type.js +30 -0
  239. package/src/types/aggregate/aggregate-args.type.js.map +1 -0
  240. package/src/types/aggregate/aggregate-response.type.d.ts +5 -0
  241. package/src/types/aggregate/aggregate-response.type.js +96 -0
  242. package/src/types/aggregate/aggregate-response.type.js.map +1 -0
  243. package/src/types/aggregate/index.d.ts +2 -0
  244. package/src/types/aggregate/index.js +8 -0
  245. package/src/types/aggregate/index.js.map +1 -0
  246. package/src/types/connection/array-connection.type.d.ts +4 -0
  247. package/src/types/connection/array-connection.type.js +20 -0
  248. package/src/types/connection/array-connection.type.js.map +1 -0
  249. package/src/types/connection/cursor/cursor-connection.type.d.ts +4 -0
  250. package/src/types/connection/cursor/cursor-connection.type.js +72 -0
  251. package/src/types/connection/cursor/cursor-connection.type.js.map +1 -0
  252. package/src/types/connection/cursor/edge.type.d.ts +7 -0
  253. package/src/types/connection/cursor/edge.type.js +36 -0
  254. package/src/types/connection/cursor/edge.type.js.map +1 -0
  255. package/src/types/connection/cursor/index.d.ts +1 -0
  256. package/src/types/connection/cursor/index.js +5 -0
  257. package/src/types/connection/cursor/index.js.map +1 -0
  258. package/src/types/connection/cursor/page-info.type.d.ts +6 -0
  259. package/src/types/connection/cursor/page-info.type.js +49 -0
  260. package/src/types/connection/cursor/page-info.type.js.map +1 -0
  261. package/src/types/connection/cursor/pager/index.d.ts +7 -0
  262. package/src/types/connection/cursor/pager/index.js +16 -0
  263. package/src/types/connection/cursor/pager/index.js.map +1 -0
  264. package/src/types/connection/cursor/pager/interfaces.d.ts +12 -0
  265. package/src/types/connection/cursor/pager/interfaces.js +3 -0
  266. package/src/types/connection/cursor/pager/interfaces.js.map +1 -0
  267. package/src/types/connection/cursor/pager/pager.d.ts +15 -0
  268. package/src/types/connection/cursor/pager/pager.js +83 -0
  269. package/src/types/connection/cursor/pager/pager.js.map +1 -0
  270. package/src/types/connection/cursor/pager/strategies/helpers.d.ts +6 -0
  271. package/src/types/connection/cursor/pager/strategies/helpers.js +24 -0
  272. package/src/types/connection/cursor/pager/strategies/helpers.js.map +1 -0
  273. package/src/types/connection/cursor/pager/strategies/index.d.ts +4 -0
  274. package/src/types/connection/cursor/pager/strategies/index.js +8 -0
  275. package/src/types/connection/cursor/pager/strategies/index.js.map +1 -0
  276. package/src/types/connection/cursor/pager/strategies/keyset.pager-strategy.d.ts +19 -0
  277. package/src/types/connection/cursor/pager/strategies/keyset.pager-strategy.js +123 -0
  278. package/src/types/connection/cursor/pager/strategies/keyset.pager-strategy.js.map +1 -0
  279. package/src/types/connection/cursor/pager/strategies/limit-offset.pager-strategy.d.ts +15 -0
  280. package/src/types/connection/cursor/pager/strategies/limit-offset.pager-strategy.js +88 -0
  281. package/src/types/connection/cursor/pager/strategies/limit-offset.pager-strategy.js.map +1 -0
  282. package/src/types/connection/cursor/pager/strategies/pager-strategy.d.ts +33 -0
  283. package/src/types/connection/cursor/pager/strategies/pager-strategy.js +3 -0
  284. package/src/types/connection/cursor/pager/strategies/pager-strategy.js.map +1 -0
  285. package/src/types/connection/index.d.ts +4 -0
  286. package/src/types/connection/index.js +10 -0
  287. package/src/types/connection/index.js.map +1 -0
  288. package/src/types/connection/interfaces.d.ts +60 -0
  289. package/src/types/connection/interfaces.js +3 -0
  290. package/src/types/connection/interfaces.js.map +1 -0
  291. package/src/types/connection/offset/index.d.ts +2 -0
  292. package/src/types/connection/offset/index.js +6 -0
  293. package/src/types/connection/offset/index.js.map +1 -0
  294. package/src/types/connection/offset/offset-connection.type.d.ts +4 -0
  295. package/src/types/connection/offset/offset-connection.type.js +68 -0
  296. package/src/types/connection/offset/offset-connection.type.js.map +1 -0
  297. package/src/types/connection/offset/offset-page-info.type.d.ts +5 -0
  298. package/src/types/connection/offset/offset-page-info.type.js +35 -0
  299. package/src/types/connection/offset/offset-page-info.type.js.map +1 -0
  300. package/src/types/connection/offset/pager/index.d.ts +4 -0
  301. package/src/types/connection/offset/pager/index.js +8 -0
  302. package/src/types/connection/offset/pager/index.js.map +1 -0
  303. package/src/types/connection/offset/pager/interfaces.d.ts +12 -0
  304. package/src/types/connection/offset/pager/interfaces.js +3 -0
  305. package/src/types/connection/offset/pager/interfaces.js.map +1 -0
  306. package/src/types/connection/offset/pager/pager.d.ts +12 -0
  307. package/src/types/connection/offset/pager/pager.js +62 -0
  308. package/src/types/connection/offset/pager/pager.js.map +1 -0
  309. package/src/types/create-many-input.type.d.ts +10 -0
  310. package/src/types/create-many-input.type.js +42 -0
  311. package/src/types/create-many-input.type.js.map +1 -0
  312. package/src/types/create-one-input.type.d.ts +11 -0
  313. package/src/types/create-one-input.type.js +42 -0
  314. package/src/types/create-one-input.type.js.map +1 -0
  315. package/src/types/cursor.scalar.d.ts +3 -0
  316. package/src/types/cursor.scalar.js +21 -0
  317. package/src/types/cursor.scalar.js.map +1 -0
  318. package/src/types/delete-many-input.type.d.ts +9 -0
  319. package/src/types/delete-many-input.type.js +31 -0
  320. package/src/types/delete-many-input.type.js.map +1 -0
  321. package/src/types/delete-many-reponse.type.d.ts +2 -0
  322. package/src/types/delete-many-reponse.type.js +25 -0
  323. package/src/types/delete-many-reponse.type.js.map +1 -0
  324. package/src/types/delete-one-input.type.d.ts +8 -0
  325. package/src/types/delete-one-input.type.js +27 -0
  326. package/src/types/delete-one-input.type.js.map +1 -0
  327. package/src/types/find-one-args.type.d.ts +8 -0
  328. package/src/types/find-one-args.type.js +27 -0
  329. package/src/types/find-one-args.type.js.map +1 -0
  330. package/src/types/index.d.ts +18 -0
  331. package/src/types/index.js +44 -0
  332. package/src/types/index.js.map +1 -0
  333. package/src/types/mutation-args.type.d.ts +5 -0
  334. package/src/types/mutation-args.type.js +24 -0
  335. package/src/types/mutation-args.type.js.map +1 -0
  336. package/src/types/query/field-comparison/boolean-field-comparison.type.d.ts +3 -0
  337. package/src/types/query/field-comparison/boolean-field-comparison.type.js +35 -0
  338. package/src/types/query/field-comparison/boolean-field-comparison.type.js.map +1 -0
  339. package/src/types/query/field-comparison/date-field-comparison.type.d.ts +3 -0
  340. package/src/types/query/field-comparison/date-field-comparison.type.js +112 -0
  341. package/src/types/query/field-comparison/date-field-comparison.type.js.map +1 -0
  342. package/src/types/query/field-comparison/field-comparison.factory.d.ts +11 -0
  343. package/src/types/query/field-comparison/field-comparison.factory.js +166 -0
  344. package/src/types/query/field-comparison/field-comparison.factory.js.map +1 -0
  345. package/src/types/query/field-comparison/float-field-comparison.type.d.ts +3 -0
  346. package/src/types/query/field-comparison/float-field-comparison.type.js +112 -0
  347. package/src/types/query/field-comparison/float-field-comparison.type.js.map +1 -0
  348. package/src/types/query/field-comparison/index.d.ts +8 -0
  349. package/src/types/query/field-comparison/index.js +12 -0
  350. package/src/types/query/field-comparison/index.js.map +1 -0
  351. package/src/types/query/field-comparison/int-field-comparison.type.d.ts +3 -0
  352. package/src/types/query/field-comparison/int-field-comparison.type.js +112 -0
  353. package/src/types/query/field-comparison/int-field-comparison.type.js.map +1 -0
  354. package/src/types/query/field-comparison/number-field-comparison.type.d.ts +3 -0
  355. package/src/types/query/field-comparison/number-field-comparison.type.js +112 -0
  356. package/src/types/query/field-comparison/number-field-comparison.type.js.map +1 -0
  357. package/src/types/query/field-comparison/string-field-comparison.type.d.ts +3 -0
  358. package/src/types/query/field-comparison/string-field-comparison.type.js +108 -0
  359. package/src/types/query/field-comparison/string-field-comparison.type.js.map +1 -0
  360. package/src/types/query/field-comparison/timestamp-field-comparison.type.d.ts +3 -0
  361. package/src/types/query/field-comparison/timestamp-field-comparison.type.js +112 -0
  362. package/src/types/query/field-comparison/timestamp-field-comparison.type.js.map +1 -0
  363. package/src/types/query/filter.type.d.ts +14 -0
  364. package/src/types/query/filter.type.js +103 -0
  365. package/src/types/query/filter.type.js.map +1 -0
  366. package/src/types/query/helpers.d.ts +1 -0
  367. package/src/types/query/helpers.js +6 -0
  368. package/src/types/query/helpers.js.map +1 -0
  369. package/src/types/query/index.d.ts +4 -0
  370. package/src/types/query/index.js +14 -0
  371. package/src/types/query/index.js.map +1 -0
  372. package/src/types/query/paging/constants.d.ts +5 -0
  373. package/src/types/query/paging/constants.js +10 -0
  374. package/src/types/query/paging/constants.js.map +1 -0
  375. package/src/types/query/paging/cursor-paging.type.d.ts +3 -0
  376. package/src/types/query/paging/cursor-paging.type.js +69 -0
  377. package/src/types/query/paging/cursor-paging.type.js.map +1 -0
  378. package/src/types/query/paging/index.d.ts +5 -0
  379. package/src/types/query/paging/index.js +12 -0
  380. package/src/types/query/paging/index.js.map +1 -0
  381. package/src/types/query/paging/interfaces.d.ts +13 -0
  382. package/src/types/query/paging/interfaces.js +3 -0
  383. package/src/types/query/paging/interfaces.js.map +1 -0
  384. package/src/types/query/paging/none-paging.type.d.ts +3 -0
  385. package/src/types/query/paging/none-paging.type.js +18 -0
  386. package/src/types/query/paging/none-paging.type.js.map +1 -0
  387. package/src/types/query/paging/offset-paging.type.d.ts +3 -0
  388. package/src/types/query/paging/offset-paging.type.js +43 -0
  389. package/src/types/query/paging/offset-paging.type.js.map +1 -0
  390. package/src/types/query/query-args/constants.d.ts +6 -0
  391. package/src/types/query/query-args/constants.js +10 -0
  392. package/src/types/query/query-args/constants.js.map +1 -0
  393. package/src/types/query/query-args/cursor-query-args.type.d.ts +5 -0
  394. package/src/types/query/query-args/cursor-query-args.type.js +61 -0
  395. package/src/types/query/query-args/cursor-query-args.type.js.map +1 -0
  396. package/src/types/query/query-args/index.d.ts +5 -0
  397. package/src/types/query/query-args/index.js +9 -0
  398. package/src/types/query/query-args/index.js.map +1 -0
  399. package/src/types/query/query-args/interfaces.d.ts +45 -0
  400. package/src/types/query/query-args/interfaces.js +3 -0
  401. package/src/types/query/query-args/interfaces.js.map +1 -0
  402. package/src/types/query/query-args/none-paging-query-args.type.d.ts +5 -0
  403. package/src/types/query/query-args/none-paging-query-args.type.js +49 -0
  404. package/src/types/query/query-args/none-paging-query-args.type.js.map +1 -0
  405. package/src/types/query/query-args/offset-query-args.type.d.ts +5 -0
  406. package/src/types/query/query-args/offset-query-args.type.js +60 -0
  407. package/src/types/query/query-args/offset-query-args.type.js.map +1 -0
  408. package/src/types/query/query-args.type.d.ts +8 -0
  409. package/src/types/query/query-args.type.js +33 -0
  410. package/src/types/query/query-args.type.js.map +1 -0
  411. package/src/types/query/sorting.type.d.ts +2 -0
  412. package/src/types/query/sorting.type.js +55 -0
  413. package/src/types/query/sorting.type.js.map +1 -0
  414. package/src/types/relation-input.type.d.ts +6 -0
  415. package/src/types/relation-input.type.js +30 -0
  416. package/src/types/relation-input.type.js.map +1 -0
  417. package/src/types/relations-input.type.d.ts +6 -0
  418. package/src/types/relations-input.type.js +31 -0
  419. package/src/types/relations-input.type.js.map +1 -0
  420. package/src/types/subscription-args.type.d.ts +5 -0
  421. package/src/types/subscription-args.type.js +24 -0
  422. package/src/types/subscription-args.type.js.map +1 -0
  423. package/src/types/subscription-filter-input.type.d.ts +9 -0
  424. package/src/types/subscription-filter-input.type.js +32 -0
  425. package/src/types/subscription-filter-input.type.js.map +1 -0
  426. package/src/types/type.errors.d.ts +5 -0
  427. package/src/types/type.errors.js +11 -0
  428. package/src/types/type.errors.js.map +1 -0
  429. package/src/types/update-many-input.type.d.ts +11 -0
  430. package/src/types/update-many-input.type.js +38 -0
  431. package/src/types/update-many-input.type.js.map +1 -0
  432. package/src/types/update-many-response.type.d.ts +2 -0
  433. package/src/types/update-many-response.type.js +25 -0
  434. package/src/types/update-many-response.type.js.map +1 -0
  435. package/src/types/update-one-input.type.d.ts +11 -0
  436. package/src/types/update-one-input.type.js +36 -0
  437. package/src/types/update-one-input.type.js.map +1 -0
  438. package/src/types/validators/cannot-use-with.validator.d.ts +6 -0
  439. package/src/types/validators/cannot-use-with.validator.js +21 -0
  440. package/src/types/validators/cannot-use-with.validator.js.map +1 -0
  441. package/src/types/validators/cannot-use-without.validator.d.ts +6 -0
  442. package/src/types/validators/cannot-use-without.validator.js +22 -0
  443. package/src/types/validators/cannot-use-without.validator.js.map +1 -0
  444. package/src/types/validators/index.d.ts +3 -0
  445. package/src/types/validators/index.js +7 -0
  446. package/src/types/validators/index.js.map +1 -0
  447. package/src/types/validators/is-undefined.validator.d.ts +3 -0
  448. package/src/types/validators/is-undefined.validator.js +11 -0
  449. package/src/types/validators/is-undefined.validator.js.map +1 -0
  450. package/src/types/validators/property-max.validator.d.ts +6 -0
  451. package/src/types/validators/property-max.validator.js +30 -0
  452. package/src/types/validators/property-max.validator.js.map +1 -0
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getOrCreateCursorConnectionType = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const graphql_1 = require("@nestjs/graphql");
6
+ const nestjs_query_core_1 = require("@ptc-org/nestjs-query-core");
7
+ const common_1 = require("@nestjs/common");
8
+ const decorators_1 = require("../../../decorators");
9
+ const query_1 = require("../../query");
10
+ const pager_1 = require("./pager");
11
+ const edge_type_1 = require("./edge.type");
12
+ const page_info_type_1 = require("./page-info.type");
13
+ const common_2 = require("../../../common");
14
+ const DEFAULT_COUNT = () => Promise.reject(new common_1.NotImplementedException('totalCount not implemented'));
15
+ const reflector = new nestjs_query_core_1.MapReflector('nestjs-query:cursor-connection-type');
16
+ function getOrCreateConnectionName(DTOClass, opts) {
17
+ const { connectionName } = opts;
18
+ if (connectionName) {
19
+ return connectionName;
20
+ }
21
+ const objName = (0, common_2.getGraphqlObjectName)(DTOClass, 'Unable to make ConnectionType.');
22
+ return `${objName}Connection`;
23
+ }
24
+ function getOrCreateCursorConnectionType(TItemClass, maybeOpts) {
25
+ const opts = maybeOpts ?? { pagingStrategy: query_1.PagingStrategies.CURSOR };
26
+ const connectionName = getOrCreateConnectionName(TItemClass, opts);
27
+ return reflector.memoize(TItemClass, connectionName, () => {
28
+ var AbstractConnection_1;
29
+ const pager = (0, pager_1.createPager)(TItemClass, opts);
30
+ const E = (0, edge_type_1.getOrCreateEdgeType)(TItemClass);
31
+ const PIT = (0, page_info_type_1.getOrCreatePageInfoType)();
32
+ let AbstractConnection = AbstractConnection_1 = class AbstractConnection {
33
+ constructor(pageInfo, edges, totalCountFn) {
34
+ this.pageInfo = pageInfo ?? { hasNextPage: false, hasPreviousPage: false };
35
+ this.edges = edges ?? [];
36
+ this.totalCountFn = totalCountFn ?? DEFAULT_COUNT;
37
+ }
38
+ static get resolveType() {
39
+ return this;
40
+ }
41
+ static async createFromPromise(queryMany, query, count) {
42
+ const { pageInfo, edges, totalCount } = await pager.page(queryMany, query, count ?? DEFAULT_COUNT);
43
+ return new AbstractConnection_1(
44
+ // create the appropriate graphql instance
45
+ new PIT(pageInfo.hasNextPage, pageInfo.hasPreviousPage, pageInfo.startCursor, pageInfo.endCursor), edges.map(({ node, cursor }) => new E(node, cursor)), totalCount);
46
+ }
47
+ get totalCount() {
48
+ return this.totalCountFn();
49
+ }
50
+ };
51
+ (0, tslib_1.__decorate)([
52
+ (0, graphql_1.Field)(() => PIT, { description: 'Paging information' }),
53
+ (0, tslib_1.__metadata)("design:type", Object)
54
+ ], AbstractConnection.prototype, "pageInfo", void 0);
55
+ (0, tslib_1.__decorate)([
56
+ (0, graphql_1.Field)(() => [E], { description: 'Array of edges.' }),
57
+ (0, tslib_1.__metadata)("design:type", Array)
58
+ ], AbstractConnection.prototype, "edges", void 0);
59
+ (0, tslib_1.__decorate)([
60
+ (0, decorators_1.SkipIf)(() => !opts.enableTotalCount, (0, graphql_1.Field)(() => graphql_1.Int, { description: 'Fetch total count of records' })),
61
+ (0, tslib_1.__metadata)("design:type", Promise),
62
+ (0, tslib_1.__metadata)("design:paramtypes", [])
63
+ ], AbstractConnection.prototype, "totalCount", null);
64
+ AbstractConnection = AbstractConnection_1 = (0, tslib_1.__decorate)([
65
+ (0, graphql_1.ObjectType)(connectionName),
66
+ (0, tslib_1.__metadata)("design:paramtypes", [Object, Array, Function])
67
+ ], AbstractConnection);
68
+ return AbstractConnection;
69
+ });
70
+ }
71
+ exports.getOrCreateCursorConnectionType = getOrCreateCursorConnectionType;
72
+ //# sourceMappingURL=cursor-connection.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor-connection.type.js","sourceRoot":"","sources":["../../../../../../../packages/query-graphql/src/types/connection/cursor/cursor-connection.type.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Class } from '@ptc-org/nestjs-query-core';
2
+ import { ConnectionCursorType } from '../../cursor.scalar';
3
+ import { EdgeType } from '../interfaces';
4
+ export interface EdgeTypeConstructor<DTO> {
5
+ new (node: DTO, cursor: ConnectionCursorType): EdgeType<DTO>;
6
+ }
7
+ export declare function getOrCreateEdgeType<DTO>(DTOClass: Class<DTO>): EdgeTypeConstructor<DTO>;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getOrCreateEdgeType = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const graphql_1 = require("@nestjs/graphql");
6
+ const nestjs_query_core_1 = require("@ptc-org/nestjs-query-core");
7
+ const cursor_scalar_1 = require("../../cursor.scalar");
8
+ const common_1 = require("../../../common");
9
+ const reflector = new nestjs_query_core_1.ValueReflector('nestjs-query:edge-type');
10
+ // eslint-disable-next-line @typescript-eslint/no-redeclare -- intentional
11
+ function getOrCreateEdgeType(DTOClass) {
12
+ return reflector.memoize(DTOClass, () => {
13
+ const objName = (0, common_1.getGraphqlObjectName)(DTOClass, 'Unable to make EdgeType for class.');
14
+ let AbstractEdge = class AbstractEdge {
15
+ constructor(node, cursor) {
16
+ this.node = node;
17
+ this.cursor = cursor;
18
+ }
19
+ };
20
+ (0, tslib_1.__decorate)([
21
+ (0, graphql_1.Field)(() => DTOClass, { description: `The node containing the ${objName}` }),
22
+ (0, tslib_1.__metadata)("design:type", Object)
23
+ ], AbstractEdge.prototype, "node", void 0);
24
+ (0, tslib_1.__decorate)([
25
+ (0, graphql_1.Field)(() => cursor_scalar_1.ConnectionCursorScalar, { description: 'Cursor for this node.' }),
26
+ (0, tslib_1.__metadata)("design:type", String)
27
+ ], AbstractEdge.prototype, "cursor", void 0);
28
+ AbstractEdge = (0, tslib_1.__decorate)([
29
+ (0, graphql_1.ObjectType)(`${objName}Edge`),
30
+ (0, tslib_1.__metadata)("design:paramtypes", [Object, String])
31
+ ], AbstractEdge);
32
+ return AbstractEdge;
33
+ });
34
+ }
35
+ exports.getOrCreateEdgeType = getOrCreateEdgeType;
36
+ //# sourceMappingURL=edge.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge.type.js","sourceRoot":"","sources":["../../../../../../../packages/query-graphql/src/types/connection/cursor/edge.type.ts"],"names":[],"mappings":";;;;AAAA,6CAAoD;AACpD,kEAAmE;AACnE,uDAAmF;AACnF,4CAAuD;AAOvD,MAAM,SAAS,GAAG,IAAI,kCAAc,CAAC,wBAAwB,CAAC,CAAC;AAC/D,0EAA0E;AAC1E,SAAgB,mBAAmB,CAAM,QAAoB;IAC3D,OAAO,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtC,MAAM,OAAO,GAAG,IAAA,6BAAoB,EAAC,QAAQ,EAAE,oCAAoC,CAAC,CAAC;QAErF,IAAM,YAAY,GAAlB,MAAM,YAAY;YAChB,YAAY,IAAS,EAAE,MAA4B;gBACjD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACvB,CAAC;SAOF,CAAA;QAJC;YADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,2BAA2B,OAAO,EAAE,EAAE,CAAC;;kDAClE;QAGX;YADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,sCAAsB,EAAE,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC;;oDAChD;QAV1B,YAAY;YADjB,IAAA,oBAAU,EAAC,GAAG,OAAO,MAAM,CAAC;;WACvB,YAAY,CAWjB;QACD,OAAO,YAAY,CAAC;IACtB,CAAC,CAAC,CAAC;AACL,CAAC;AAlBD,kDAkBC"}
@@ -0,0 +1 @@
1
+ export * from './cursor-connection.type';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ (0, tslib_1.__exportStar)(require("./cursor-connection.type"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/query-graphql/src/types/connection/cursor/index.ts"],"names":[],"mappings":";;;AAAA,wEAAyC"}
@@ -0,0 +1,6 @@
1
+ import { ConnectionCursorType } from '../../cursor.scalar';
2
+ import { PageInfoType } from '../interfaces';
3
+ export interface PageInfoTypeConstructor {
4
+ new (hasNextPage: boolean, hasPreviousPage: boolean, startCursor: ConnectionCursorType | undefined, endCursor: ConnectionCursorType | undefined): PageInfoType;
5
+ }
6
+ export declare const getOrCreatePageInfoType: () => PageInfoTypeConstructor;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getOrCreatePageInfoType = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const graphql_1 = require("@nestjs/graphql");
6
+ const cursor_scalar_1 = require("../../cursor.scalar");
7
+ /** @internal */
8
+ let pageInfoType = null;
9
+ // eslint-disable-next-line @typescript-eslint/no-redeclare -- intentional
10
+ const getOrCreatePageInfoType = () => {
11
+ if (pageInfoType) {
12
+ return pageInfoType;
13
+ }
14
+ let PageInfoTypeImpl = class PageInfoTypeImpl {
15
+ constructor(hasNextPage, hasPreviousPage, startCursor, endCursor) {
16
+ this.hasNextPage = hasNextPage;
17
+ this.hasPreviousPage = hasPreviousPage;
18
+ this.startCursor = startCursor;
19
+ this.endCursor = endCursor;
20
+ }
21
+ };
22
+ (0, tslib_1.__decorate)([
23
+ (0, graphql_1.Field)(() => Boolean, { nullable: true, description: 'true if paging forward and there are more records.' }),
24
+ (0, tslib_1.__metadata)("design:type", Boolean)
25
+ ], PageInfoTypeImpl.prototype, "hasNextPage", void 0);
26
+ (0, tslib_1.__decorate)([
27
+ (0, graphql_1.Field)(() => Boolean, { nullable: true, description: 'true if paging backwards and there are more records.' }),
28
+ (0, tslib_1.__metadata)("design:type", Boolean)
29
+ ], PageInfoTypeImpl.prototype, "hasPreviousPage", void 0);
30
+ (0, tslib_1.__decorate)([
31
+ (0, graphql_1.Field)(() => cursor_scalar_1.ConnectionCursorScalar, { nullable: true, description: 'The cursor of the first returned record.' }),
32
+ (0, tslib_1.__metadata)("design:type", String)
33
+ ], PageInfoTypeImpl.prototype, "startCursor", void 0);
34
+ (0, tslib_1.__decorate)([
35
+ (0, graphql_1.Field)(() => cursor_scalar_1.ConnectionCursorScalar, {
36
+ nullable: true,
37
+ description: 'The cursor of the last returned record.',
38
+ }),
39
+ (0, tslib_1.__metadata)("design:type", String)
40
+ ], PageInfoTypeImpl.prototype, "endCursor", void 0);
41
+ PageInfoTypeImpl = (0, tslib_1.__decorate)([
42
+ (0, graphql_1.ObjectType)('PageInfo'),
43
+ (0, tslib_1.__metadata)("design:paramtypes", [Boolean, Boolean, String, String])
44
+ ], PageInfoTypeImpl);
45
+ pageInfoType = PageInfoTypeImpl;
46
+ return pageInfoType;
47
+ };
48
+ exports.getOrCreatePageInfoType = getOrCreatePageInfoType;
49
+ //# sourceMappingURL=page-info.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-info.type.js","sourceRoot":"","sources":["../../../../../../../packages/query-graphql/src/types/connection/cursor/page-info.type.ts"],"names":[],"mappings":";;;;AAAA,6CAAoD;AAEpD,uDAAmF;AAYnF,gBAAgB;AAChB,IAAI,YAAY,GAA+B,IAAI,CAAC;AACpD,0EAA0E;AACnE,MAAM,uBAAuB,GAAG,GAA4B,EAAE;IACnE,IAAI,YAAY,EAAE;QAChB,OAAO,YAAY,CAAC;KACrB;IAGD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;QACpB,YACE,WAAoB,EACpB,eAAwB,EACxB,WAA6C,EAC7C,SAA2C;YAE3C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;YAC/B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;YACvC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;YAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,CAAC;KAgBF,CAAA;IAbC;QADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,oDAAoD,EAAE,CAAC;;yDACvF;IAGrB;QADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,sDAAsD,EAAE,CAAC;;6DACrF;IAGzB;QADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,sCAAsB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,0CAA0C,EAAE,CAAC;;yDAClE;IAM/C;QAJC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,sCAAsB,EAAE;YACnC,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,yCAAyC;SACvD,CAAC;;uDAC2C;IA1BzC,gBAAgB;QADrB,IAAA,oBAAU,EAAC,UAAU,CAAC;;OACjB,gBAAgB,CA2BrB;IAED,YAAY,GAAG,gBAAgB,CAAC;IAChC,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AArCW,QAAA,uBAAuB,2BAqClC"}
@@ -0,0 +1,7 @@
1
+ import { Class } from '@ptc-org/nestjs-query-core';
2
+ import { Pager } from '../../interfaces';
3
+ import { CursorPagerResult } from './interfaces';
4
+ export declare type PagerOpts = {
5
+ disableKeySetPagination?: boolean;
6
+ };
7
+ export declare const createPager: <DTO>(DTOClass: Class<DTO>, opts: PagerOpts) => Pager<DTO, CursorPagerResult<DTO>>;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPager = void 0;
4
+ const decorators_1 = require("../../../../decorators");
5
+ const pager_1 = require("./pager");
6
+ const strategies_1 = require("./strategies");
7
+ // default pager factory to plug in addition paging strategies later on.
8
+ const createPager = (DTOClass, opts) => {
9
+ const keySet = opts.disableKeySetPagination ? undefined : (0, decorators_1.getKeySet)(DTOClass);
10
+ if (keySet && keySet.length) {
11
+ return new pager_1.CursorPager(new strategies_1.KeysetPagerStrategy(DTOClass, keySet));
12
+ }
13
+ return new pager_1.CursorPager(new strategies_1.LimitOffsetPagerStrategy());
14
+ };
15
+ exports.createPager = createPager;
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/query-graphql/src/types/connection/cursor/pager/index.ts"],"names":[],"mappings":";;;AACA,uDAAmD;AAGnD,mCAAsC;AACtC,6CAA6E;AAM7E,wEAAwE;AACjE,MAAM,WAAW,GAAG,CAAM,QAAoB,EAAE,IAAe,EAAsC,EAAE;IAC5G,MAAM,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,sBAAS,EAAC,QAAQ,CAAC,CAAC;IAC9E,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;QAC3B,OAAO,IAAI,mBAAW,CAAM,IAAI,gCAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;KACxE;IACD,OAAO,IAAI,mBAAW,CAAM,IAAI,qCAAwB,EAAE,CAAC,CAAC;AAC9D,CAAC,CAAC;AANW,QAAA,WAAW,eAMtB"}
@@ -0,0 +1,12 @@
1
+ import { Query } from '@ptc-org/nestjs-query-core';
2
+ import { CursorPagingOpts } from './strategies';
3
+ import { CursorConnectionType, PagerResult } from '../../interfaces';
4
+ export interface PagingMeta<DTO, Opts extends CursorPagingOpts<DTO>> {
5
+ opts: Opts;
6
+ query: Query<DTO>;
7
+ }
8
+ export interface QueryResults<DTO> {
9
+ nodes: DTO[];
10
+ hasExtraNode: boolean;
11
+ }
12
+ export declare type CursorPagerResult<DTO> = PagerResult & Omit<CursorConnectionType<DTO>, 'totalCount'>;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../../../../../packages/query-graphql/src/types/connection/cursor/pager/interfaces.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ import { PagerStrategy } from './strategies';
2
+ import { Count, Pager, QueryMany } from '../../interfaces';
3
+ import { CursorQueryArgsType } from '../../../query';
4
+ import { CursorPagerResult } from './interfaces';
5
+ export declare class CursorPager<DTO> implements Pager<DTO, CursorPagerResult<DTO>> {
6
+ readonly strategy: PagerStrategy<DTO>;
7
+ constructor(strategy: PagerStrategy<DTO>);
8
+ page<Q extends CursorQueryArgsType<DTO>>(queryMany: QueryMany<DTO, Q>, query: Q, count: Count<DTO>): Promise<CursorPagerResult<DTO>>;
9
+ private isValidPaging;
10
+ private runQuery;
11
+ private getPageMeta;
12
+ private createPagingResult;
13
+ private hasPreviousPage;
14
+ private isEmptyPage;
15
+ }
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CursorPager = void 0;
4
+ const EMPTY_PAGING_RESULTS = () => ({
5
+ edges: [],
6
+ pageInfo: { hasNextPage: false, hasPreviousPage: false },
7
+ totalCount: () => Promise.resolve(0),
8
+ });
9
+ const DEFAULT_PAGING_META = (query) => ({
10
+ opts: { offset: 0, limit: 0, isBackward: false, isForward: true, hasBefore: false },
11
+ query,
12
+ });
13
+ class CursorPager {
14
+ constructor(strategy) {
15
+ this.strategy = strategy;
16
+ }
17
+ async page(queryMany, query, count) {
18
+ const pagingMeta = this.getPageMeta(query);
19
+ if (!this.isValidPaging(pagingMeta)) {
20
+ return EMPTY_PAGING_RESULTS();
21
+ }
22
+ const results = await this.runQuery(queryMany, query, pagingMeta);
23
+ if (this.isEmptyPage(results, pagingMeta)) {
24
+ return EMPTY_PAGING_RESULTS();
25
+ }
26
+ return this.createPagingResult(results, pagingMeta, () => count(query.filter ?? {}));
27
+ }
28
+ isValidPaging(pagingMeta) {
29
+ if ('offset' in pagingMeta.opts) {
30
+ return pagingMeta.opts.offset > 0 || pagingMeta.opts.limit > 0;
31
+ }
32
+ return pagingMeta.opts.limit > 0;
33
+ }
34
+ async runQuery(queryMany, query, pagingMeta) {
35
+ const { opts } = pagingMeta;
36
+ const windowedQuery = this.strategy.createQuery(query, opts, true);
37
+ const nodes = await queryMany(windowedQuery);
38
+ const returnNodes = this.strategy.checkForExtraNode(nodes, opts);
39
+ const hasExtraNode = returnNodes.length !== nodes.length;
40
+ return { nodes: returnNodes, hasExtraNode };
41
+ }
42
+ getPageMeta(query) {
43
+ const { paging } = query;
44
+ if (!paging) {
45
+ return DEFAULT_PAGING_META(query);
46
+ }
47
+ return { opts: this.strategy.fromCursorArgs(paging), query };
48
+ }
49
+ createPagingResult(results, pagingMeta, totalCount) {
50
+ const { nodes, hasExtraNode } = results;
51
+ const { isForward, hasBefore } = pagingMeta.opts;
52
+ const edges = nodes.map((node, i) => ({
53
+ node,
54
+ cursor: this.strategy.toCursor(node, i, pagingMeta.opts, pagingMeta.query),
55
+ }));
56
+ const pageInfo = {
57
+ startCursor: edges[0]?.cursor,
58
+ endCursor: edges[edges.length - 1]?.cursor,
59
+ // if we have are going forward and have an extra node or there was a before cursor
60
+ hasNextPage: isForward ? hasExtraNode : hasBefore,
61
+ // we have a previous page if we are going backwards and have an extra node.
62
+ hasPreviousPage: this.hasPreviousPage(results, pagingMeta),
63
+ };
64
+ return { edges, pageInfo, totalCount };
65
+ }
66
+ hasPreviousPage(results, pagingMeta) {
67
+ const { hasExtraNode } = results;
68
+ const { opts } = pagingMeta;
69
+ return opts.isBackward ? hasExtraNode : !this.strategy.isEmptyCursor(opts);
70
+ }
71
+ isEmptyPage(results, pagingMeta) {
72
+ // it is an empty page if
73
+ // 1. we dont have an extra node
74
+ // 2. there were no nodes returned
75
+ // 3. we're paging forward
76
+ // 4. and we dont have an offset
77
+ const { opts } = pagingMeta;
78
+ const isEmpty = !results.hasExtraNode && !results.nodes.length && pagingMeta.opts.isForward;
79
+ return isEmpty && this.strategy.isEmptyCursor(opts);
80
+ }
81
+ }
82
+ exports.CursorPager = CursorPager;
83
+ //# sourceMappingURL=pager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pager.js","sourceRoot":"","sources":["../../../../../../../../packages/query-graphql/src/types/connection/cursor/pager/pager.ts"],"names":[],"mappings":";;;AAMA,MAAM,oBAAoB,GAAG,GAAgC,EAAE,CAAC,CAAC;IAC/D,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;IACxD,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;CACrC,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,CAAM,KAAiB,EAAqC,EAAE,CAAC,CAAC;IAC1F,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE;IACnF,KAAK;CACN,CAAC,CAAC;AAEH,MAAa,WAAW;IACtB,YAAqB,QAA4B;QAA5B,aAAQ,GAAR,QAAQ,CAAoB;IAAG,CAAC;IAErD,KAAK,CAAC,IAAI,CACR,SAA4B,EAC5B,KAAQ,EACR,KAAiB;QAEjB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;YACnC,OAAO,oBAAoB,EAAE,CAAC;SAC/B;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAClE,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE;YACzC,OAAO,oBAAoB,EAAE,CAAC;SAC/B;QACD,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;IACvF,CAAC;IAEO,aAAa,CAAC,UAAkD;QACtE,IAAI,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE;YAC/B,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;SAChE;QACD,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,QAAQ,CACpB,SAA4B,EAC5B,KAAQ,EACR,UAAkD;QAElD,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;QAC5B,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACjE,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;QACzD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;IAC9C,CAAC;IAEO,WAAW,CAAC,KAA+B;QACjD,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;SACnC;QACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IAC/D,CAAC;IAEO,kBAAkB,CACxB,OAA0B,EAC1B,UAAkD,EAClD,UAAiC;QAEjC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;QACxC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC;QACjD,MAAM,KAAK,GAAoB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACrD,IAAI;YACJ,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC;SAC3E,CAAC,CAAC,CAAC;QACJ,MAAM,QAAQ,GAAG;YACf,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM;YAC7B,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM;YAC1C,mFAAmF;YACnF,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;YACjD,4EAA4E;YAC5E,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC;SAC3D,CAAC;QAEF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IACzC,CAAC;IAEO,eAAe,CAAC,OAA0B,EAAE,UAAkD;QACpG,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;QACjC,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7E,CAAC;IAEO,WAAW,CAAC,OAA0B,EAAE,UAAkD;QAChG,yBAAyB;QACzB,gCAAgC;QAChC,kCAAkC;QAClC,0BAA0B;QAC1B,gCAAgC;QAChC,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;QAC5B,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;QAC5F,OAAO,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;CACF;AAtFD,kCAsFC"}
@@ -0,0 +1,6 @@
1
+ import { CursorPagingType } from '../../../../query';
2
+ export declare function isBackwardPaging(cursor: CursorPagingType): boolean;
3
+ export declare function isForwardPaging(cursor: CursorPagingType): boolean;
4
+ export declare function hasBeforeCursor(cursor: CursorPagingType): boolean;
5
+ export declare function encodeBase64(str: string): string;
6
+ export declare function decodeBase64(str: string): string;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decodeBase64 = exports.encodeBase64 = exports.hasBeforeCursor = exports.isForwardPaging = exports.isBackwardPaging = void 0;
4
+ function isBackwardPaging(cursor) {
5
+ return typeof cursor.last !== 'undefined';
6
+ }
7
+ exports.isBackwardPaging = isBackwardPaging;
8
+ function isForwardPaging(cursor) {
9
+ return !isBackwardPaging(cursor);
10
+ }
11
+ exports.isForwardPaging = isForwardPaging;
12
+ function hasBeforeCursor(cursor) {
13
+ return isBackwardPaging(cursor) && !!cursor.before;
14
+ }
15
+ exports.hasBeforeCursor = hasBeforeCursor;
16
+ function encodeBase64(str) {
17
+ return Buffer.from(str, 'utf8').toString('base64');
18
+ }
19
+ exports.encodeBase64 = encodeBase64;
20
+ function decodeBase64(str) {
21
+ return Buffer.from(str, 'base64').toString('utf8');
22
+ }
23
+ exports.decodeBase64 = decodeBase64;
24
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../../../../../../packages/query-graphql/src/types/connection/cursor/pager/strategies/helpers.ts"],"names":[],"mappings":";;;AAEA,SAAgB,gBAAgB,CAAC,MAAwB;IACvD,OAAO,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC;AAC5C,CAAC;AAFD,4CAEC;AAED,SAAgB,eAAe,CAAC,MAAwB;IACtD,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAFD,0CAEC;AAED,SAAgB,eAAe,CAAC,MAAwB;IACtD,OAAO,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AACrD,CAAC;AAFD,0CAEC;AAED,SAAgB,YAAY,CAAC,GAAW;IACtC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACrD,CAAC;AAFD,oCAEC;AAED,SAAgB,YAAY,CAAC,GAAW;IACtC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrD,CAAC;AAFD,oCAEC"}
@@ -0,0 +1,4 @@
1
+ export * from './pager-strategy';
2
+ export * from './limit-offset.pager-strategy';
3
+ export * from './keyset.pager-strategy';
4
+ export * from './helpers';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ (0, tslib_1.__exportStar)(require("./pager-strategy"), exports);
5
+ (0, tslib_1.__exportStar)(require("./limit-offset.pager-strategy"), exports);
6
+ (0, tslib_1.__exportStar)(require("./keyset.pager-strategy"), exports);
7
+ (0, tslib_1.__exportStar)(require("./helpers"), exports);
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../packages/query-graphql/src/types/connection/cursor/pager/strategies/index.ts"],"names":[],"mappings":";;;AAAA,gEAAiC;AACjC,6EAA8C;AAC9C,uEAAwC;AACxC,yDAA0B"}
@@ -0,0 +1,19 @@
1
+ import { Class, Query } from '@ptc-org/nestjs-query-core';
2
+ import { KeySetPagingOpts, PagerStrategy } from './pager-strategy';
3
+ import { CursorPagingType } from '../../../../query';
4
+ export declare class KeysetPagerStrategy<DTO> implements PagerStrategy<DTO> {
5
+ readonly DTOClass: Class<DTO>;
6
+ readonly pageFields: (keyof DTO)[];
7
+ constructor(DTOClass: Class<DTO>, pageFields: (keyof DTO)[]);
8
+ fromCursorArgs(cursor: CursorPagingType): KeySetPagingOpts<DTO>;
9
+ toCursor(dto: DTO, index: number, opts: KeySetPagingOpts<DTO>, query: Query<DTO>): string;
10
+ isEmptyCursor(opts: KeySetPagingOpts<DTO>): boolean;
11
+ createQuery<Q extends Query<DTO>>(query: Q, opts: KeySetPagingOpts<DTO>, includeExtraNode: boolean): Q;
12
+ checkForExtraNode(nodes: DTO[], opts: KeySetPagingOpts<DTO>): DTO[];
13
+ private get defaultSort();
14
+ private encodeCursor;
15
+ private decodeCursor;
16
+ private createFieldsFilter;
17
+ private getSortFields;
18
+ private createKeySetPayload;
19
+ }
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KeysetPagerStrategy = void 0;
4
+ const nestjs_query_core_1 = require("@ptc-org/nestjs-query-core");
5
+ const class_transformer_1 = require("class-transformer");
6
+ const common_1 = require("@nestjs/common");
7
+ const helpers_1 = require("./helpers");
8
+ class KeysetPagerStrategy {
9
+ constructor(DTOClass, pageFields) {
10
+ this.DTOClass = DTOClass;
11
+ this.pageFields = pageFields;
12
+ }
13
+ fromCursorArgs(cursor) {
14
+ const { defaultSort } = this;
15
+ const isForward = (0, helpers_1.isForwardPaging)(cursor);
16
+ const isBackward = (0, helpers_1.isBackwardPaging)(cursor);
17
+ const hasBefore = (0, helpers_1.hasBeforeCursor)(cursor);
18
+ let payload;
19
+ let limit = 0;
20
+ if ((0, helpers_1.isForwardPaging)(cursor)) {
21
+ payload = cursor.after ? this.decodeCursor(cursor.after) : undefined;
22
+ limit = cursor.first ?? 0;
23
+ }
24
+ if ((0, helpers_1.isBackwardPaging)(cursor)) {
25
+ payload = cursor.before ? this.decodeCursor(cursor.before) : undefined;
26
+ limit = cursor.last ?? 0;
27
+ }
28
+ return { payload, defaultSort, limit, isBackward, isForward, hasBefore };
29
+ }
30
+ toCursor(dto, index, opts, query) {
31
+ const cursorFields = [
32
+ ...(query.sorting ?? []).map((f) => f.field),
33
+ ...this.pageFields,
34
+ ];
35
+ return this.encodeCursor(this.createKeySetPayload(dto, cursorFields));
36
+ }
37
+ isEmptyCursor(opts) {
38
+ return !opts.payload || !opts.payload.fields.length;
39
+ }
40
+ createQuery(query, opts, includeExtraNode) {
41
+ const paging = { limit: opts.limit };
42
+ if (includeExtraNode) {
43
+ // Add 1 to the limit so we will fetch an additional node
44
+ paging.limit += 1;
45
+ }
46
+ const { payload } = opts;
47
+ // Add 1 to the limit so we will fetch an additional node with the current node
48
+ const sorting = this.getSortFields(query, opts);
49
+ const filter = (0, nestjs_query_core_1.mergeFilter)(query.filter ?? {}, this.createFieldsFilter(sorting, payload));
50
+ return { ...query, filter, paging, sorting };
51
+ }
52
+ checkForExtraNode(nodes, opts) {
53
+ const hasExtraNode = nodes.length > opts.limit;
54
+ const returnNodes = [...nodes];
55
+ if (hasExtraNode) {
56
+ returnNodes.pop();
57
+ }
58
+ if (opts.isBackward) {
59
+ returnNodes.reverse();
60
+ }
61
+ return returnNodes;
62
+ }
63
+ get defaultSort() {
64
+ return this.pageFields.map((field) => ({ field, direction: nestjs_query_core_1.SortDirection.ASC }));
65
+ }
66
+ encodeCursor(fields) {
67
+ return (0, helpers_1.encodeBase64)(JSON.stringify(fields));
68
+ }
69
+ decodeCursor(cursor) {
70
+ try {
71
+ const payload = JSON.parse((0, helpers_1.decodeBase64)(cursor));
72
+ if (payload.type !== 'keyset') {
73
+ throw new common_1.BadRequestException('Invalid cursor');
74
+ }
75
+ const partial = payload.fields.reduce((dtoPartial, { field, value }) => ({ ...dtoPartial, [field]: value }), {});
76
+ const transformed = (0, class_transformer_1.plainToClass)(this.DTOClass, partial);
77
+ const typesafeFields = payload.fields.map(({ field }) => ({ field, value: transformed[field] }));
78
+ return { ...payload, fields: typesafeFields };
79
+ }
80
+ catch (e) {
81
+ throw new common_1.BadRequestException('Invalid cursor');
82
+ }
83
+ }
84
+ createFieldsFilter(sortFields, payload) {
85
+ if (!payload) {
86
+ return {};
87
+ }
88
+ const { fields } = payload;
89
+ const equalities = [];
90
+ const oredFilter = sortFields.reduce((dtoFilters, sortField, index) => {
91
+ const keySetField = fields[index];
92
+ if (keySetField.field !== sortField.field) {
93
+ throw new Error(`Cursor Payload does not match query sort expected ${keySetField.field} found ${sortField.field}`);
94
+ }
95
+ const isAsc = sortField.direction === nestjs_query_core_1.SortDirection.ASC;
96
+ const subFilter = {
97
+ and: [...equalities, { [keySetField.field]: { [isAsc ? 'gt' : 'lt']: keySetField.value } }],
98
+ };
99
+ equalities.push({ [keySetField.field]: { eq: keySetField.value } });
100
+ return [...dtoFilters, subFilter];
101
+ }, []);
102
+ return { or: oredFilter };
103
+ }
104
+ getSortFields(query, opts) {
105
+ const { sorting = [] } = query;
106
+ const defaultSort = opts.defaultSort.filter((dsf) => !sorting.some((sf) => dsf.field === sf.field));
107
+ const sortFields = [...sorting, ...defaultSort];
108
+ return opts.isForward ? sortFields : (0, nestjs_query_core_1.invertSort)(sortFields);
109
+ }
110
+ createKeySetPayload(dto, fields) {
111
+ const fieldSet = new Set();
112
+ return fields.reduce((payload, field) => {
113
+ if (fieldSet.has(field)) {
114
+ return payload;
115
+ }
116
+ fieldSet.add(field);
117
+ payload.fields.push({ field, value: dto[field] });
118
+ return payload;
119
+ }, { type: 'keyset', fields: [] });
120
+ }
121
+ }
122
+ exports.KeysetPagerStrategy = KeysetPagerStrategy;
123
+ //# sourceMappingURL=keyset.pager-strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyset.pager-strategy.js","sourceRoot":"","sources":["../../../../../../../../../packages/query-graphql/src/types/connection/cursor/pager/strategies/keyset.pager-strategy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { Query } from '@ptc-org/nestjs-query-core';
2
+ import { CursorPagingType } from '../../../../query';
3
+ import { OffsetPagingOpts, PagerStrategy } from './pager-strategy';
4
+ export declare class LimitOffsetPagerStrategy<DTO> implements PagerStrategy<DTO> {
5
+ private static CURSOR_PREFIX;
6
+ toCursor(dto: DTO, index: number, pagingOpts: OffsetPagingOpts): string;
7
+ fromCursorArgs(cursor: CursorPagingType): OffsetPagingOpts;
8
+ isEmptyCursor(opts: OffsetPagingOpts): boolean;
9
+ createQuery<Q extends Query<DTO>>(query: Q, opts: OffsetPagingOpts, includeExtraNode: boolean): Q;
10
+ checkForExtraNode(nodes: DTO[], opts: OffsetPagingOpts): DTO[];
11
+ private getLimit;
12
+ private getOffset;
13
+ private static offsetToCursor;
14
+ private static cursorToOffset;
15
+ }