@mikeatlast/ponder 0.16.1-fork.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 (619) hide show
  1. package/CHANGELOG.md +3415 -0
  2. package/README.md +186 -0
  3. package/dist/esm/bin/commands/codegen.js +46 -0
  4. package/dist/esm/bin/commands/codegen.js.map +1 -0
  5. package/dist/esm/bin/commands/createViews.js +196 -0
  6. package/dist/esm/bin/commands/createViews.js.map +1 -0
  7. package/dist/esm/bin/commands/dev.js +430 -0
  8. package/dist/esm/bin/commands/dev.js.map +1 -0
  9. package/dist/esm/bin/commands/list.js +148 -0
  10. package/dist/esm/bin/commands/list.js.map +1 -0
  11. package/dist/esm/bin/commands/prune.js +223 -0
  12. package/dist/esm/bin/commands/prune.js.map +1 -0
  13. package/dist/esm/bin/commands/serve.js +198 -0
  14. package/dist/esm/bin/commands/serve.js.map +1 -0
  15. package/dist/esm/bin/commands/start.js +253 -0
  16. package/dist/esm/bin/commands/start.js.map +1 -0
  17. package/dist/esm/bin/isolatedController.js +200 -0
  18. package/dist/esm/bin/isolatedController.js.map +1 -0
  19. package/dist/esm/bin/isolatedWorker.js +146 -0
  20. package/dist/esm/bin/isolatedWorker.js.map +1 -0
  21. package/dist/esm/bin/ponder.js +137 -0
  22. package/dist/esm/bin/ponder.js.map +1 -0
  23. package/dist/esm/bin/utils/codegen.js +25 -0
  24. package/dist/esm/bin/utils/codegen.js.map +1 -0
  25. package/dist/esm/bin/utils/exit.js +100 -0
  26. package/dist/esm/bin/utils/exit.js.map +1 -0
  27. package/dist/esm/build/config.js +745 -0
  28. package/dist/esm/build/config.js.map +1 -0
  29. package/dist/esm/build/factory.js +82 -0
  30. package/dist/esm/build/factory.js.map +1 -0
  31. package/dist/esm/build/index.js +567 -0
  32. package/dist/esm/build/index.js.map +1 -0
  33. package/dist/esm/build/plugin.js +53 -0
  34. package/dist/esm/build/plugin.js.map +1 -0
  35. package/dist/esm/build/pre.js +83 -0
  36. package/dist/esm/build/pre.js.map +1 -0
  37. package/dist/esm/build/schema.js +202 -0
  38. package/dist/esm/build/schema.js.map +1 -0
  39. package/dist/esm/build/stacktrace.js +137 -0
  40. package/dist/esm/build/stacktrace.js.map +1 -0
  41. package/dist/esm/client/index.js +441 -0
  42. package/dist/esm/client/index.js.map +1 -0
  43. package/dist/esm/config/address.js +2 -0
  44. package/dist/esm/config/address.js.map +1 -0
  45. package/dist/esm/config/eventFilter.js +2 -0
  46. package/dist/esm/config/eventFilter.js.map +1 -0
  47. package/dist/esm/config/index.js +2 -0
  48. package/dist/esm/config/index.js.map +1 -0
  49. package/dist/esm/config/utilityTypes.js +2 -0
  50. package/dist/esm/config/utilityTypes.js.map +1 -0
  51. package/dist/esm/database/actions.js +445 -0
  52. package/dist/esm/database/actions.js.map +1 -0
  53. package/dist/esm/database/index.js +604 -0
  54. package/dist/esm/database/index.js.map +1 -0
  55. package/dist/esm/database/queryBuilder.js +314 -0
  56. package/dist/esm/database/queryBuilder.js.map +1 -0
  57. package/dist/esm/drizzle/bigint.js +38 -0
  58. package/dist/esm/drizzle/bigint.js.map +1 -0
  59. package/dist/esm/drizzle/bytes.js +47 -0
  60. package/dist/esm/drizzle/bytes.js.map +1 -0
  61. package/dist/esm/drizzle/hex.js +40 -0
  62. package/dist/esm/drizzle/hex.js.map +1 -0
  63. package/dist/esm/drizzle/index.js +28 -0
  64. package/dist/esm/drizzle/index.js.map +1 -0
  65. package/dist/esm/drizzle/json.js +123 -0
  66. package/dist/esm/drizzle/json.js.map +1 -0
  67. package/dist/esm/drizzle/kit/index.js +927 -0
  68. package/dist/esm/drizzle/kit/index.js.map +1 -0
  69. package/dist/esm/drizzle/onchain.js +184 -0
  70. package/dist/esm/drizzle/onchain.js.map +1 -0
  71. package/dist/esm/drizzle/text.js +61 -0
  72. package/dist/esm/drizzle/text.js.map +1 -0
  73. package/dist/esm/graphql/graphiql.html.js +59 -0
  74. package/dist/esm/graphql/graphiql.html.js.map +1 -0
  75. package/dist/esm/graphql/index.js +934 -0
  76. package/dist/esm/graphql/index.js.map +1 -0
  77. package/dist/esm/graphql/json.js +42 -0
  78. package/dist/esm/graphql/json.js.map +1 -0
  79. package/dist/esm/graphql/middleware.js +83 -0
  80. package/dist/esm/graphql/middleware.js.map +1 -0
  81. package/dist/esm/index.js +9 -0
  82. package/dist/esm/index.js.map +1 -0
  83. package/dist/esm/indexing/addStackTrace.js +54 -0
  84. package/dist/esm/indexing/addStackTrace.js.map +1 -0
  85. package/dist/esm/indexing/client.js +675 -0
  86. package/dist/esm/indexing/client.js.map +1 -0
  87. package/dist/esm/indexing/index.js +663 -0
  88. package/dist/esm/indexing/index.js.map +1 -0
  89. package/dist/esm/indexing/profile.js +584 -0
  90. package/dist/esm/indexing/profile.js.map +1 -0
  91. package/dist/esm/indexing-store/cache.js +666 -0
  92. package/dist/esm/indexing-store/cache.js.map +1 -0
  93. package/dist/esm/indexing-store/index.js +461 -0
  94. package/dist/esm/indexing-store/index.js.map +1 -0
  95. package/dist/esm/indexing-store/profile.js +428 -0
  96. package/dist/esm/indexing-store/profile.js.map +1 -0
  97. package/dist/esm/indexing-store/utils.js +111 -0
  98. package/dist/esm/indexing-store/utils.js.map +1 -0
  99. package/dist/esm/internal/common.js +2 -0
  100. package/dist/esm/internal/common.js.map +1 -0
  101. package/dist/esm/internal/errors.js +300 -0
  102. package/dist/esm/internal/errors.js.map +1 -0
  103. package/dist/esm/internal/logger.js +178 -0
  104. package/dist/esm/internal/logger.js.map +1 -0
  105. package/dist/esm/internal/metrics.js +1049 -0
  106. package/dist/esm/internal/metrics.js.map +1 -0
  107. package/dist/esm/internal/options.js +73 -0
  108. package/dist/esm/internal/options.js.map +1 -0
  109. package/dist/esm/internal/shutdown.js +24 -0
  110. package/dist/esm/internal/shutdown.js.map +1 -0
  111. package/dist/esm/internal/telemetry.js +200 -0
  112. package/dist/esm/internal/telemetry.js.map +1 -0
  113. package/dist/esm/internal/types.js +2 -0
  114. package/dist/esm/internal/types.js.map +1 -0
  115. package/dist/esm/rpc/actions.js +988 -0
  116. package/dist/esm/rpc/actions.js.map +1 -0
  117. package/dist/esm/rpc/http.js +130 -0
  118. package/dist/esm/rpc/http.js.map +1 -0
  119. package/dist/esm/rpc/index.js +749 -0
  120. package/dist/esm/rpc/index.js.map +1 -0
  121. package/dist/esm/runtime/events.js +664 -0
  122. package/dist/esm/runtime/events.js.map +1 -0
  123. package/dist/esm/runtime/filter.js +476 -0
  124. package/dist/esm/runtime/filter.js.map +1 -0
  125. package/dist/esm/runtime/fragments.js +478 -0
  126. package/dist/esm/runtime/fragments.js.map +1 -0
  127. package/dist/esm/runtime/historical.js +954 -0
  128. package/dist/esm/runtime/historical.js.map +1 -0
  129. package/dist/esm/runtime/index.js +316 -0
  130. package/dist/esm/runtime/index.js.map +1 -0
  131. package/dist/esm/runtime/init.js +12 -0
  132. package/dist/esm/runtime/init.js.map +1 -0
  133. package/dist/esm/runtime/isolated.js +464 -0
  134. package/dist/esm/runtime/isolated.js.map +1 -0
  135. package/dist/esm/runtime/multichain.js +511 -0
  136. package/dist/esm/runtime/multichain.js.map +1 -0
  137. package/dist/esm/runtime/omnichain.js +546 -0
  138. package/dist/esm/runtime/omnichain.js.map +1 -0
  139. package/dist/esm/runtime/realtime.js +722 -0
  140. package/dist/esm/runtime/realtime.js.map +1 -0
  141. package/dist/esm/server/error.js +56 -0
  142. package/dist/esm/server/error.js.map +1 -0
  143. package/dist/esm/server/index.js +121 -0
  144. package/dist/esm/server/index.js.map +1 -0
  145. package/dist/esm/sync-historical/index.js +703 -0
  146. package/dist/esm/sync-historical/index.js.map +1 -0
  147. package/dist/esm/sync-realtime/bloom.js +76 -0
  148. package/dist/esm/sync-realtime/bloom.js.map +1 -0
  149. package/dist/esm/sync-realtime/index.js +918 -0
  150. package/dist/esm/sync-realtime/index.js.map +1 -0
  151. package/dist/esm/sync-store/encode.js +105 -0
  152. package/dist/esm/sync-store/encode.js.map +1 -0
  153. package/dist/esm/sync-store/index.js +885 -0
  154. package/dist/esm/sync-store/index.js.map +1 -0
  155. package/dist/esm/sync-store/migrations.js +1595 -0
  156. package/dist/esm/sync-store/migrations.js.map +1 -0
  157. package/dist/esm/sync-store/schema.js +181 -0
  158. package/dist/esm/sync-store/schema.js.map +1 -0
  159. package/dist/esm/types/db.js +2 -0
  160. package/dist/esm/types/db.js.map +1 -0
  161. package/dist/esm/types/eth.js +2 -0
  162. package/dist/esm/types/eth.js.map +1 -0
  163. package/dist/esm/types/utils.js +2 -0
  164. package/dist/esm/types/utils.js.map +1 -0
  165. package/dist/esm/types/virtual.js +2 -0
  166. package/dist/esm/types/virtual.js.map +1 -0
  167. package/dist/esm/ui/app.js +157 -0
  168. package/dist/esm/ui/app.js.map +1 -0
  169. package/dist/esm/ui/index.js +29 -0
  170. package/dist/esm/ui/index.js.map +1 -0
  171. package/dist/esm/ui/patch.js +140 -0
  172. package/dist/esm/ui/patch.js.map +1 -0
  173. package/dist/esm/utils/abi.js +55 -0
  174. package/dist/esm/utils/abi.js.map +1 -0
  175. package/dist/esm/utils/bigint.js +37 -0
  176. package/dist/esm/utils/bigint.js.map +1 -0
  177. package/dist/esm/utils/chains.js +21 -0
  178. package/dist/esm/utils/chains.js.map +1 -0
  179. package/dist/esm/utils/checkpoint.js +139 -0
  180. package/dist/esm/utils/checkpoint.js.map +1 -0
  181. package/dist/esm/utils/chunk.js +8 -0
  182. package/dist/esm/utils/chunk.js.map +1 -0
  183. package/dist/esm/utils/copy.js +129 -0
  184. package/dist/esm/utils/copy.js.map +1 -0
  185. package/dist/esm/utils/date.js +27 -0
  186. package/dist/esm/utils/date.js.map +1 -0
  187. package/dist/esm/utils/debug.js +2 -0
  188. package/dist/esm/utils/debug.js.map +1 -0
  189. package/dist/esm/utils/decodeAbiParameters.js +290 -0
  190. package/dist/esm/utils/decodeAbiParameters.js.map +1 -0
  191. package/dist/esm/utils/decodeEventLog.js +75 -0
  192. package/dist/esm/utils/decodeEventLog.js.map +1 -0
  193. package/dist/esm/utils/dedupe.js +29 -0
  194. package/dist/esm/utils/dedupe.js.map +1 -0
  195. package/dist/esm/utils/duplicates.js +19 -0
  196. package/dist/esm/utils/duplicates.js.map +1 -0
  197. package/dist/esm/utils/estimate.js +6 -0
  198. package/dist/esm/utils/estimate.js.map +1 -0
  199. package/dist/esm/utils/finality.js +38 -0
  200. package/dist/esm/utils/finality.js.map +1 -0
  201. package/dist/esm/utils/format.js +20 -0
  202. package/dist/esm/utils/format.js.map +1 -0
  203. package/dist/esm/utils/generators.js +121 -0
  204. package/dist/esm/utils/generators.js.map +1 -0
  205. package/dist/esm/utils/hash.js +11 -0
  206. package/dist/esm/utils/hash.js.map +1 -0
  207. package/dist/esm/utils/interval.js +171 -0
  208. package/dist/esm/utils/interval.js.map +1 -0
  209. package/dist/esm/utils/lowercase.js +7 -0
  210. package/dist/esm/utils/lowercase.js.map +1 -0
  211. package/dist/esm/utils/mutex.js +26 -0
  212. package/dist/esm/utils/mutex.js.map +1 -0
  213. package/dist/esm/utils/never.js +4 -0
  214. package/dist/esm/utils/never.js.map +1 -0
  215. package/dist/esm/utils/offset.js +101 -0
  216. package/dist/esm/utils/offset.js.map +1 -0
  217. package/dist/esm/utils/order.js +18 -0
  218. package/dist/esm/utils/order.js.map +1 -0
  219. package/dist/esm/utils/partition.js +46 -0
  220. package/dist/esm/utils/partition.js.map +1 -0
  221. package/dist/esm/utils/pg.js +175 -0
  222. package/dist/esm/utils/pg.js.map +1 -0
  223. package/dist/esm/utils/pglite.js +80 -0
  224. package/dist/esm/utils/pglite.js.map +1 -0
  225. package/dist/esm/utils/port.js +30 -0
  226. package/dist/esm/utils/port.js.map +1 -0
  227. package/dist/esm/utils/print.js +23 -0
  228. package/dist/esm/utils/print.js.map +1 -0
  229. package/dist/esm/utils/promiseAllSettledWithThrow.js +19 -0
  230. package/dist/esm/utils/promiseAllSettledWithThrow.js.map +1 -0
  231. package/dist/esm/utils/promiseWithResolvers.js +13 -0
  232. package/dist/esm/utils/promiseWithResolvers.js.map +1 -0
  233. package/dist/esm/utils/queue.js +150 -0
  234. package/dist/esm/utils/queue.js.map +1 -0
  235. package/dist/esm/utils/range.js +8 -0
  236. package/dist/esm/utils/range.js.map +1 -0
  237. package/dist/esm/utils/result.js +10 -0
  238. package/dist/esm/utils/result.js.map +1 -0
  239. package/dist/esm/utils/sql-parse.js +1326 -0
  240. package/dist/esm/utils/sql-parse.js.map +1 -0
  241. package/dist/esm/utils/timer.js +9 -0
  242. package/dist/esm/utils/timer.js.map +1 -0
  243. package/dist/esm/utils/truncate.js +15 -0
  244. package/dist/esm/utils/truncate.js.map +1 -0
  245. package/dist/esm/utils/wait.js +10 -0
  246. package/dist/esm/utils/wait.js.map +1 -0
  247. package/dist/esm/utils/zipper.js +67 -0
  248. package/dist/esm/utils/zipper.js.map +1 -0
  249. package/dist/types/bin/commands/codegen.d.ts +5 -0
  250. package/dist/types/bin/commands/codegen.d.ts.map +1 -0
  251. package/dist/types/bin/commands/createViews.d.ts +8 -0
  252. package/dist/types/bin/commands/createViews.d.ts.map +1 -0
  253. package/dist/types/bin/commands/dev.d.ts +5 -0
  254. package/dist/types/bin/commands/dev.d.ts.map +1 -0
  255. package/dist/types/bin/commands/list.d.ts +5 -0
  256. package/dist/types/bin/commands/list.d.ts.map +1 -0
  257. package/dist/types/bin/commands/prune.d.ts +5 -0
  258. package/dist/types/bin/commands/prune.d.ts.map +1 -0
  259. package/dist/types/bin/commands/serve.d.ts +5 -0
  260. package/dist/types/bin/commands/serve.d.ts.map +1 -0
  261. package/dist/types/bin/commands/start.d.ts +19 -0
  262. package/dist/types/bin/commands/start.d.ts.map +1 -0
  263. package/dist/types/bin/isolatedController.d.ts +13 -0
  264. package/dist/types/bin/isolatedController.d.ts.map +1 -0
  265. package/dist/types/bin/isolatedWorker.d.ts +9 -0
  266. package/dist/types/bin/isolatedWorker.d.ts.map +1 -0
  267. package/dist/types/bin/ponder.d.ts +37 -0
  268. package/dist/types/bin/ponder.d.ts.map +1 -0
  269. package/dist/types/bin/utils/codegen.d.ts +6 -0
  270. package/dist/types/bin/utils/codegen.d.ts.map +1 -0
  271. package/dist/types/bin/utils/exit.d.ts +10 -0
  272. package/dist/types/bin/utils/exit.d.ts.map +1 -0
  273. package/dist/types/build/config.d.ts +97 -0
  274. package/dist/types/build/config.d.ts.map +1 -0
  275. package/dist/types/build/factory.d.ts +15 -0
  276. package/dist/types/build/factory.d.ts.map +1 -0
  277. package/dist/types/build/index.d.ts +84 -0
  278. package/dist/types/build/index.d.ts.map +1 -0
  279. package/dist/types/build/plugin.d.ts +4 -0
  280. package/dist/types/build/plugin.d.ts.map +1 -0
  281. package/dist/types/build/pre.d.ts +29 -0
  282. package/dist/types/build/pre.d.ts.map +1 -0
  283. package/dist/types/build/schema.d.ts +20 -0
  284. package/dist/types/build/schema.d.ts.map +1 -0
  285. package/dist/types/build/stacktrace.d.ts +13 -0
  286. package/dist/types/build/stacktrace.d.ts.map +1 -0
  287. package/dist/types/client/index.d.ts +27 -0
  288. package/dist/types/client/index.d.ts.map +1 -0
  289. package/dist/types/config/address.d.ts +34 -0
  290. package/dist/types/config/address.d.ts.map +1 -0
  291. package/dist/types/config/eventFilter.d.ts +18 -0
  292. package/dist/types/config/eventFilter.d.ts.map +1 -0
  293. package/dist/types/config/index.d.ts +144 -0
  294. package/dist/types/config/index.d.ts.map +1 -0
  295. package/dist/types/config/utilityTypes.d.ts +43 -0
  296. package/dist/types/config/utilityTypes.d.ts.map +1 -0
  297. package/dist/types/database/actions.d.ts +99 -0
  298. package/dist/types/database/actions.d.ts.map +1 -0
  299. package/dist/types/database/index.d.ts +493 -0
  300. package/dist/types/database/index.d.ts.map +1 -0
  301. package/dist/types/database/queryBuilder.d.ts +65 -0
  302. package/dist/types/database/queryBuilder.d.ts.map +1 -0
  303. package/dist/types/drizzle/bigint.d.ts +25 -0
  304. package/dist/types/drizzle/bigint.d.ts.map +1 -0
  305. package/dist/types/drizzle/bytes.d.ts +31 -0
  306. package/dist/types/drizzle/bytes.d.ts.map +1 -0
  307. package/dist/types/drizzle/hex.d.ts +25 -0
  308. package/dist/types/drizzle/hex.d.ts.map +1 -0
  309. package/dist/types/drizzle/index.d.ts +6 -0
  310. package/dist/types/drizzle/index.d.ts.map +1 -0
  311. package/dist/types/drizzle/json.d.ts +51 -0
  312. package/dist/types/drizzle/json.d.ts.map +1 -0
  313. package/dist/types/drizzle/kit/index.d.ts +187 -0
  314. package/dist/types/drizzle/kit/index.d.ts.map +1 -0
  315. package/dist/types/drizzle/onchain.d.ts +298 -0
  316. package/dist/types/drizzle/onchain.d.ts.map +1 -0
  317. package/dist/types/drizzle/text.d.ts +29 -0
  318. package/dist/types/drizzle/text.d.ts.map +1 -0
  319. package/dist/types/graphql/graphiql.html.d.ts +2 -0
  320. package/dist/types/graphql/graphiql.html.d.ts.map +1 -0
  321. package/dist/types/graphql/index.d.ts +12 -0
  322. package/dist/types/graphql/index.d.ts.map +1 -0
  323. package/dist/types/graphql/json.d.ts +3 -0
  324. package/dist/types/graphql/json.d.ts.map +1 -0
  325. package/dist/types/graphql/middleware.d.ts +29 -0
  326. package/dist/types/graphql/middleware.d.ts.map +1 -0
  327. package/dist/types/index.d.ts +23 -0
  328. package/dist/types/index.d.ts.map +1 -0
  329. package/dist/types/indexing/addStackTrace.d.ts +3 -0
  330. package/dist/types/indexing/addStackTrace.d.ts.map +1 -0
  331. package/dist/types/indexing/client.d.ts +154 -0
  332. package/dist/types/indexing/client.d.ts.map +1 -0
  333. package/dist/types/indexing/index.d.ts +72 -0
  334. package/dist/types/indexing/index.d.ts.map +1 -0
  335. package/dist/types/indexing/profile.d.ts +16 -0
  336. package/dist/types/indexing/profile.d.ts.map +1 -0
  337. package/dist/types/indexing-store/cache.d.ts +115 -0
  338. package/dist/types/indexing-store/cache.d.ts.map +1 -0
  339. package/dist/types/indexing-store/index.d.ts +24 -0
  340. package/dist/types/indexing-store/index.d.ts.map +1 -0
  341. package/dist/types/indexing-store/profile.d.ts +7 -0
  342. package/dist/types/indexing-store/profile.d.ts.map +1 -0
  343. package/dist/types/indexing-store/utils.d.ts +19 -0
  344. package/dist/types/indexing-store/utils.d.ts.map +1 -0
  345. package/dist/types/internal/common.d.ts +15 -0
  346. package/dist/types/internal/common.d.ts.map +1 -0
  347. package/dist/types/internal/errors.d.ts +101 -0
  348. package/dist/types/internal/errors.d.ts.map +1 -0
  349. package/dist/types/internal/logger.d.ts +37 -0
  350. package/dist/types/internal/logger.d.ts.map +1 -0
  351. package/dist/types/internal/metrics.d.ts +120 -0
  352. package/dist/types/internal/metrics.d.ts.map +1 -0
  353. package/dist/types/internal/options.d.ts +62 -0
  354. package/dist/types/internal/options.d.ts.map +1 -0
  355. package/dist/types/internal/shutdown.d.ts +8 -0
  356. package/dist/types/internal/shutdown.d.ts.map +1 -0
  357. package/dist/types/internal/telemetry.d.ts +43 -0
  358. package/dist/types/internal/telemetry.d.ts.map +1 -0
  359. package/dist/types/internal/types.d.ts +443 -0
  360. package/dist/types/internal/types.d.ts.map +1 -0
  361. package/dist/types/rpc/actions.d.ts +360 -0
  362. package/dist/types/rpc/actions.d.ts.map +1 -0
  363. package/dist/types/rpc/http.d.ts +17 -0
  364. package/dist/types/rpc/http.d.ts.map +1 -0
  365. package/dist/types/rpc/index.d.ts +43 -0
  366. package/dist/types/rpc/index.d.ts.map +1 -0
  367. package/dist/types/runtime/events.d.ts +40 -0
  368. package/dist/types/runtime/events.d.ts.map +1 -0
  369. package/dist/types/runtime/filter.d.ts +96 -0
  370. package/dist/types/runtime/filter.d.ts.map +1 -0
  371. package/dist/types/runtime/fragments.d.ts +30 -0
  372. package/dist/types/runtime/fragments.d.ts.map +1 -0
  373. package/dist/types/runtime/historical.d.ts +123 -0
  374. package/dist/types/runtime/historical.d.ts.map +1 -0
  375. package/dist/types/runtime/index.d.ts +89 -0
  376. package/dist/types/runtime/index.d.ts.map +1 -0
  377. package/dist/types/runtime/init.d.ts +28 -0
  378. package/dist/types/runtime/init.d.ts.map +1 -0
  379. package/dist/types/runtime/isolated.d.ts +14 -0
  380. package/dist/types/runtime/isolated.d.ts.map +1 -0
  381. package/dist/types/runtime/multichain.d.ts +13 -0
  382. package/dist/types/runtime/multichain.d.ts.map +1 -0
  383. package/dist/types/runtime/omnichain.d.ts +23 -0
  384. package/dist/types/runtime/omnichain.d.ts.map +1 -0
  385. package/dist/types/runtime/realtime.d.ts +93 -0
  386. package/dist/types/runtime/realtime.d.ts.map +1 -0
  387. package/dist/types/server/error.d.ts +5 -0
  388. package/dist/types/server/error.d.ts.map +1 -0
  389. package/dist/types/server/index.d.ts +13 -0
  390. package/dist/types/server/index.d.ts.map +1 -0
  391. package/dist/types/sync-historical/index.d.ts +36 -0
  392. package/dist/types/sync-historical/index.d.ts.map +1 -0
  393. package/dist/types/sync-realtime/bloom.d.ts +18 -0
  394. package/dist/types/sync-realtime/bloom.d.ts.map +1 -0
  395. package/dist/types/sync-realtime/index.d.ts +48 -0
  396. package/dist/types/sync-realtime/index.d.ts.map +1 -0
  397. package/dist/types/sync-store/encode.d.ts +25 -0
  398. package/dist/types/sync-store/encode.d.ts.map +1 -0
  399. package/dist/types/sync-store/index.d.ts +135 -0
  400. package/dist/types/sync-store/index.d.ts.map +1 -0
  401. package/dist/types/sync-store/migrations.d.ts +8 -0
  402. package/dist/types/sync-store/migrations.d.ts.map +1 -0
  403. package/dist/types/sync-store/schema.d.ts +1828 -0
  404. package/dist/types/sync-store/schema.d.ts.map +1 -0
  405. package/dist/types/types/db.d.ts +213 -0
  406. package/dist/types/types/db.d.ts.map +1 -0
  407. package/dist/types/types/eth.d.ts +196 -0
  408. package/dist/types/types/eth.d.ts.map +1 -0
  409. package/dist/types/types/utils.d.ts +38 -0
  410. package/dist/types/types/utils.d.ts.map +1 -0
  411. package/dist/types/types/virtual.d.ts +99 -0
  412. package/dist/types/types/virtual.d.ts.map +1 -0
  413. package/dist/types/ui/app.d.ts +22 -0
  414. package/dist/types/ui/app.d.ts.map +1 -0
  415. package/dist/types/ui/index.d.ts +5 -0
  416. package/dist/types/ui/index.d.ts.map +1 -0
  417. package/dist/types/ui/patch.d.ts +7 -0
  418. package/dist/types/ui/patch.d.ts.map +1 -0
  419. package/dist/types/utils/abi.d.ts +23 -0
  420. package/dist/types/utils/abi.d.ts.map +1 -0
  421. package/dist/types/utils/bigint.d.ts +15 -0
  422. package/dist/types/utils/bigint.d.ts.map +1 -0
  423. package/dist/types/utils/chains.d.ts +42 -0
  424. package/dist/types/utils/chains.d.ts.map +1 -0
  425. package/dist/types/utils/checkpoint.d.ts +52 -0
  426. package/dist/types/utils/checkpoint.d.ts.map +1 -0
  427. package/dist/types/utils/chunk.d.ts +2 -0
  428. package/dist/types/utils/chunk.d.ts.map +1 -0
  429. package/dist/types/utils/copy.d.ts +16 -0
  430. package/dist/types/utils/copy.d.ts.map +1 -0
  431. package/dist/types/utils/date.d.ts +7 -0
  432. package/dist/types/utils/date.d.ts.map +1 -0
  433. package/dist/types/utils/debug.d.ts +105 -0
  434. package/dist/types/utils/debug.d.ts.map +1 -0
  435. package/dist/types/utils/decodeAbiParameters.d.ts +28 -0
  436. package/dist/types/utils/decodeAbiParameters.d.ts.map +1 -0
  437. package/dist/types/utils/decodeEventLog.d.ts +12 -0
  438. package/dist/types/utils/decodeEventLog.d.ts.map +1 -0
  439. package/dist/types/utils/dedupe.d.ts +20 -0
  440. package/dist/types/utils/dedupe.d.ts.map +1 -0
  441. package/dist/types/utils/duplicates.d.ts +7 -0
  442. package/dist/types/utils/duplicates.d.ts.map +1 -0
  443. package/dist/types/utils/estimate.d.ts +11 -0
  444. package/dist/types/utils/estimate.d.ts.map +1 -0
  445. package/dist/types/utils/finality.d.ts +12 -0
  446. package/dist/types/utils/finality.d.ts.map +1 -0
  447. package/dist/types/utils/format.d.ts +3 -0
  448. package/dist/types/utils/format.d.ts.map +1 -0
  449. package/dist/types/utils/generators.d.ts +42 -0
  450. package/dist/types/utils/generators.d.ts.map +1 -0
  451. package/dist/types/utils/hash.d.ts +11 -0
  452. package/dist/types/utils/hash.d.ts.map +1 -0
  453. package/dist/types/utils/interval.d.ts +53 -0
  454. package/dist/types/utils/interval.d.ts.map +1 -0
  455. package/dist/types/utils/lowercase.d.ts +5 -0
  456. package/dist/types/utils/lowercase.d.ts.map +1 -0
  457. package/dist/types/utils/mutex.d.ts +5 -0
  458. package/dist/types/utils/mutex.d.ts.map +1 -0
  459. package/dist/types/utils/never.d.ts +2 -0
  460. package/dist/types/utils/never.d.ts.map +1 -0
  461. package/dist/types/utils/offset.d.ts +8 -0
  462. package/dist/types/utils/offset.d.ts.map +1 -0
  463. package/dist/types/utils/order.d.ts +2 -0
  464. package/dist/types/utils/order.d.ts.map +1 -0
  465. package/dist/types/utils/partition.d.ts +22 -0
  466. package/dist/types/utils/partition.d.ts.map +1 -0
  467. package/dist/types/utils/pg.d.ts +8 -0
  468. package/dist/types/utils/pg.d.ts.map +1 -0
  469. package/dist/types/utils/pglite.d.ts +25 -0
  470. package/dist/types/utils/pglite.d.ts.map +1 -0
  471. package/dist/types/utils/port.d.ts +5 -0
  472. package/dist/types/utils/port.d.ts.map +1 -0
  473. package/dist/types/utils/print.d.ts +2 -0
  474. package/dist/types/utils/print.d.ts.map +1 -0
  475. package/dist/types/utils/promiseAllSettledWithThrow.d.ts +8 -0
  476. package/dist/types/utils/promiseAllSettledWithThrow.d.ts.map +1 -0
  477. package/dist/types/utils/promiseWithResolvers.d.ts +10 -0
  478. package/dist/types/utils/promiseWithResolvers.d.ts.map +1 -0
  479. package/dist/types/utils/queue.d.ts +33 -0
  480. package/dist/types/utils/queue.d.ts.map +1 -0
  481. package/dist/types/utils/range.d.ts +8 -0
  482. package/dist/types/utils/range.d.ts.map +1 -0
  483. package/dist/types/utils/result.d.ts +17 -0
  484. package/dist/types/utils/result.d.ts.map +1 -0
  485. package/dist/types/utils/sql-parse.d.ts +21 -0
  486. package/dist/types/utils/sql-parse.d.ts.map +1 -0
  487. package/dist/types/utils/timer.d.ts +6 -0
  488. package/dist/types/utils/timer.d.ts.map +1 -0
  489. package/dist/types/utils/truncate.d.ts +9 -0
  490. package/dist/types/utils/truncate.d.ts.map +1 -0
  491. package/dist/types/utils/wait.d.ts +6 -0
  492. package/dist/types/utils/wait.d.ts.map +1 -0
  493. package/dist/types/utils/zipper.d.ts +36 -0
  494. package/dist/types/utils/zipper.d.ts.map +1 -0
  495. package/package.json +114 -0
  496. package/src/bin/commands/codegen.ts +56 -0
  497. package/src/bin/commands/createViews.ts +318 -0
  498. package/src/bin/commands/dev.ts +490 -0
  499. package/src/bin/commands/list.ts +208 -0
  500. package/src/bin/commands/prune.ts +322 -0
  501. package/src/bin/commands/serve.ts +236 -0
  502. package/src/bin/commands/start.ts +319 -0
  503. package/src/bin/isolatedController.ts +300 -0
  504. package/src/bin/isolatedWorker.ts +192 -0
  505. package/src/bin/ponder.ts +208 -0
  506. package/src/bin/utils/codegen.ts +32 -0
  507. package/src/bin/utils/exit.ts +112 -0
  508. package/src/build/config.ts +1141 -0
  509. package/src/build/factory.ts +147 -0
  510. package/src/build/index.ts +790 -0
  511. package/src/build/plugin.ts +58 -0
  512. package/src/build/pre.ts +114 -0
  513. package/src/build/schema.ts +358 -0
  514. package/src/build/stacktrace.ts +137 -0
  515. package/src/client/index.ts +551 -0
  516. package/src/config/address.ts +45 -0
  517. package/src/config/eventFilter.ts +33 -0
  518. package/src/config/index.ts +240 -0
  519. package/src/config/utilityTypes.ts +152 -0
  520. package/src/database/actions.ts +873 -0
  521. package/src/database/index.ts +1029 -0
  522. package/src/database/queryBuilder.ts +537 -0
  523. package/src/drizzle/bigint.ts +57 -0
  524. package/src/drizzle/bytes.ts +68 -0
  525. package/src/drizzle/hex.ts +58 -0
  526. package/src/drizzle/index.ts +40 -0
  527. package/src/drizzle/json.ts +159 -0
  528. package/src/drizzle/kit/index.ts +1348 -0
  529. package/src/drizzle/onchain.ts +476 -0
  530. package/src/drizzle/text.ts +77 -0
  531. package/src/graphql/graphiql.html.ts +59 -0
  532. package/src/graphql/index.ts +1351 -0
  533. package/src/graphql/json.ts +62 -0
  534. package/src/graphql/middleware.ts +115 -0
  535. package/src/index.ts +139 -0
  536. package/src/indexing/addStackTrace.ts +69 -0
  537. package/src/indexing/client.ts +1184 -0
  538. package/src/indexing/index.ts +976 -0
  539. package/src/indexing/profile.ts +771 -0
  540. package/src/indexing-store/cache.ts +1057 -0
  541. package/src/indexing-store/index.ts +628 -0
  542. package/src/indexing-store/profile.ts +557 -0
  543. package/src/indexing-store/utils.ts +162 -0
  544. package/src/internal/common.ts +15 -0
  545. package/src/internal/errors.ts +228 -0
  546. package/src/internal/logger.ts +252 -0
  547. package/src/internal/metrics.ts +1030 -0
  548. package/src/internal/options.ts +130 -0
  549. package/src/internal/shutdown.ts +32 -0
  550. package/src/internal/telemetry.ts +303 -0
  551. package/src/internal/types.ts +611 -0
  552. package/src/rpc/actions.ts +1344 -0
  553. package/src/rpc/http.ts +164 -0
  554. package/src/rpc/index.ts +959 -0
  555. package/src/runtime/events.ts +875 -0
  556. package/src/runtime/filter.ts +705 -0
  557. package/src/runtime/fragments.ts +674 -0
  558. package/src/runtime/historical.ts +1522 -0
  559. package/src/runtime/index.ts +569 -0
  560. package/src/runtime/init.ts +49 -0
  561. package/src/runtime/isolated.ts +775 -0
  562. package/src/runtime/multichain.ts +860 -0
  563. package/src/runtime/omnichain.ts +920 -0
  564. package/src/runtime/realtime.ts +1164 -0
  565. package/src/server/error.ts +68 -0
  566. package/src/server/index.ts +173 -0
  567. package/src/sync-historical/index.ts +1065 -0
  568. package/src/sync-realtime/bloom.ts +102 -0
  569. package/src/sync-realtime/index.ts +1304 -0
  570. package/src/sync-store/encode.ts +153 -0
  571. package/src/sync-store/index.ts +1633 -0
  572. package/src/sync-store/migrations.ts +1801 -0
  573. package/src/sync-store/schema.ts +248 -0
  574. package/src/types/db.ts +292 -0
  575. package/src/types/eth.ts +216 -0
  576. package/src/types/utils.ts +47 -0
  577. package/src/types/virtual.ts +244 -0
  578. package/src/types.d.ts +38 -0
  579. package/src/ui/app.ts +207 -0
  580. package/src/ui/index.ts +37 -0
  581. package/src/ui/patch.ts +204 -0
  582. package/src/utils/abi.ts +103 -0
  583. package/src/utils/bigint.ts +41 -0
  584. package/src/utils/chains.ts +22 -0
  585. package/src/utils/checkpoint.ts +203 -0
  586. package/src/utils/chunk.ts +7 -0
  587. package/src/utils/copy.ts +151 -0
  588. package/src/utils/date.ts +26 -0
  589. package/src/utils/debug.ts +110 -0
  590. package/src/utils/decodeAbiParameters.ts +428 -0
  591. package/src/utils/decodeEventLog.ts +100 -0
  592. package/src/utils/dedupe.ts +32 -0
  593. package/src/utils/duplicates.ts +19 -0
  594. package/src/utils/estimate.ts +27 -0
  595. package/src/utils/finality.ts +40 -0
  596. package/src/utils/format.ts +22 -0
  597. package/src/utils/generators.ts +157 -0
  598. package/src/utils/hash.ts +22 -0
  599. package/src/utils/interval.ts +212 -0
  600. package/src/utils/lowercase.ts +6 -0
  601. package/src/utils/mutex.ts +33 -0
  602. package/src/utils/never.ts +3 -0
  603. package/src/utils/offset.ts +133 -0
  604. package/src/utils/order.ts +16 -0
  605. package/src/utils/partition.ts +53 -0
  606. package/src/utils/pg.ts +230 -0
  607. package/src/utils/pglite.ts +97 -0
  608. package/src/utils/port.ts +34 -0
  609. package/src/utils/print.ts +31 -0
  610. package/src/utils/promiseAllSettledWithThrow.ts +27 -0
  611. package/src/utils/promiseWithResolvers.ts +20 -0
  612. package/src/utils/queue.ts +258 -0
  613. package/src/utils/range.ts +8 -0
  614. package/src/utils/result.ts +26 -0
  615. package/src/utils/sql-parse.ts +1477 -0
  616. package/src/utils/timer.ts +8 -0
  617. package/src/utils/truncate.ts +15 -0
  618. package/src/utils/wait.ts +8 -0
  619. package/src/utils/zipper.ts +80 -0
@@ -0,0 +1,1477 @@
1
+ import type { Node, RangeVar, RawStmt } from "@pgsql/types";
2
+
3
+ type ValidatorNode<
4
+ node extends Node extends infer T ? (T extends T ? keyof T : never) : never,
5
+ > = {
6
+ node: node | (string & {});
7
+ children: (node: Extract<Node, { [key in node]: unknown }>[node]) => Node[];
8
+ validate?: (node: Extract<Node, { [key in node]: unknown }>[node]) => void;
9
+ };
10
+
11
+ const getNodeType = (node: Node) => Object.keys(node)[0]!;
12
+
13
+ const ALLOW_CACHE = new Map<string, boolean>();
14
+ const RELATIONS_CACHE = new Map<string, Set<string>>();
15
+
16
+ export const parseSQLQuery = async (sql: string): Promise<Node> => {
17
+ // @ts-ignore
18
+ const Parser = await import(/* webpackIgnore: true */ "pg-query-emscripten");
19
+
20
+ if (sql.length > 5_000) {
21
+ throw new Error("Invalid query");
22
+ }
23
+
24
+ const { parse } = await Parser.default();
25
+ const parseResult = parse(sql) as {
26
+ parse_tree: { stmts: RawStmt[] };
27
+ error: string | null;
28
+ };
29
+
30
+ if (parseResult.error !== null) {
31
+ throw new Error(parseResult.error);
32
+ }
33
+
34
+ if (parseResult.parse_tree.stmts.length === 0) {
35
+ throw new Error("Invalid query");
36
+ }
37
+
38
+ if (parseResult.parse_tree.stmts.length > 1) {
39
+ throw new Error("Multiple statements not supported");
40
+ }
41
+
42
+ const stmt = parseResult.parse_tree.stmts[0]!;
43
+
44
+ if (stmt.stmt === undefined) {
45
+ throw new Error("Invalid query");
46
+ }
47
+
48
+ return stmt.stmt;
49
+ };
50
+
51
+ /**
52
+ * Validate a SQL query.
53
+ *
54
+ * @param sql - SQL query
55
+ */
56
+ export const validateAllowableSQLQuery = async (sql: string) => {
57
+ const crypto = await import(/* webpackIgnore: true */ "node:crypto");
58
+
59
+ const hash = crypto
60
+ .createHash("sha256")
61
+ .update(sql)
62
+ .digest("hex")
63
+ .slice(0, 10);
64
+
65
+ if (ALLOW_CACHE.has(hash)) {
66
+ const result = ALLOW_CACHE.get(hash)!;
67
+
68
+ ALLOW_CACHE.delete(hash);
69
+ ALLOW_CACHE.set(hash, result);
70
+
71
+ if (result) return;
72
+ throw new Error("Invalid query");
73
+ }
74
+
75
+ let root: Node;
76
+ try {
77
+ root = await parseSQLQuery(sql);
78
+ } catch (error) {
79
+ ALLOW_CACHE.set(hash, false);
80
+ throw error;
81
+ }
82
+
83
+ const validate = (node: Node) => {
84
+ if (ALLOW_LIST.has(getNodeType(node)) === false) {
85
+ throw new Error(`${getNodeType(node)} not supported`);
86
+ }
87
+
88
+ // @ts-ignore
89
+ ALLOW_LIST.get(getNodeType(node))!.validate?.(node[getNodeType(node)]);
90
+
91
+ for (const child of ALLOW_LIST.get(getNodeType(node))!.children(
92
+ // @ts-ignore
93
+ node[getNodeType(node)],
94
+ )) {
95
+ validate(child);
96
+ }
97
+ };
98
+
99
+ try {
100
+ validate(root);
101
+ } catch (error) {
102
+ ALLOW_CACHE.set(hash, false);
103
+ throw error;
104
+ }
105
+
106
+ ALLOW_CACHE.set(hash, true);
107
+ if (ALLOW_CACHE.size > 1_000_000) {
108
+ const firstKey = ALLOW_CACHE.keys().next().value;
109
+ if (firstKey) ALLOW_CACHE.delete(firstKey);
110
+ }
111
+ };
112
+
113
+ /**
114
+ * Return `true` if the SQL query is readonly, else `false`.
115
+ *
116
+ * @param sql - SQL query
117
+ */
118
+ export const isReadonlySQLQuery = async (sql: string): Promise<boolean> => {
119
+ let root: Node;
120
+ try {
121
+ root = await parseSQLQuery(sql);
122
+ } catch {
123
+ return false;
124
+ }
125
+
126
+ const validate = (node: Node) => {
127
+ if (ALLOW_LIST.has(getNodeType(node)) === false) {
128
+ throw new Error(`${getNodeType(node)} not supported`);
129
+ }
130
+
131
+ for (const child of ALLOW_LIST.get(getNodeType(node))!.children(
132
+ // @ts-ignore
133
+ node[getNodeType(node)],
134
+ )) {
135
+ validate(child);
136
+ }
137
+ };
138
+
139
+ try {
140
+ validate(root);
141
+ return true;
142
+ } catch {
143
+ return false;
144
+ }
145
+ };
146
+
147
+ /**
148
+ * Find all referenced relations in a SQL query.
149
+ *
150
+ * @param sql - SQL query
151
+ */
152
+ export const getSQLQueryRelations = async (
153
+ sql: string,
154
+ ): Promise<Set<string>> => {
155
+ const crypto = await import(/* webpackIgnore: true */ "node:crypto");
156
+
157
+ if (sql.length > 5_000) {
158
+ throw new Error("Invalid query");
159
+ }
160
+
161
+ const hash = crypto
162
+ .createHash("sha256")
163
+ .update(sql)
164
+ .digest("hex")
165
+ .slice(0, 10);
166
+
167
+ if (RELATIONS_CACHE.has(hash)) {
168
+ const result = RELATIONS_CACHE.get(hash)!;
169
+
170
+ RELATIONS_CACHE.delete(hash);
171
+ RELATIONS_CACHE.set(hash, result);
172
+
173
+ return result;
174
+ }
175
+
176
+ const root = await parseSQLQuery(sql);
177
+
178
+ const find = (node: Node) => {
179
+ if (FIND_LIST.has(getNodeType(node)) === false) {
180
+ throw new Error(`${getNodeType(node)} not supported`);
181
+ }
182
+
183
+ if (getNodeType(node) === "RangeVar") {
184
+ const relation = (node as { RangeVar: RangeVar }).RangeVar.relname;
185
+ if (relation) relations.add(relation);
186
+ }
187
+
188
+ for (const child of FIND_LIST.get(getNodeType(node))!.children(
189
+ // @ts-ignore
190
+ node[getNodeType(node)],
191
+ )) {
192
+ find(child);
193
+ }
194
+ };
195
+
196
+ const relations = new Set<string>();
197
+ find(root);
198
+
199
+ RELATIONS_CACHE.set(hash, relations);
200
+ if (RELATIONS_CACHE.size > 1_000_000) {
201
+ const firstKey = RELATIONS_CACHE.keys().next().value;
202
+ if (firstKey) RELATIONS_CACHE.delete(firstKey);
203
+ }
204
+
205
+ return relations;
206
+ };
207
+
208
+ // https://github.com/launchql/pgsql-parser/blob/f1df82ed4358e47c682e007bc5aa306b58f25514/packages/types/src/types.ts#L38
209
+
210
+ const INTEGER_VALIDATOR: ValidatorNode<"Integer"> = {
211
+ node: "Integer",
212
+ children: () => [],
213
+ };
214
+
215
+ const FLOAT_VALIDATOR: ValidatorNode<"Float"> = {
216
+ node: "Float",
217
+ children: () => [],
218
+ };
219
+
220
+ const BOOLEAN_VALIDATOR: ValidatorNode<"Boolean"> = {
221
+ node: "Boolean",
222
+ children: () => [],
223
+ };
224
+
225
+ const STRING_VALIDATOR: ValidatorNode<"String"> = {
226
+ node: "String",
227
+ children: () => [],
228
+ };
229
+
230
+ const BIT_STRING_VALIDATOR: ValidatorNode<"BitString"> = {
231
+ node: "BitString",
232
+ children: () => [],
233
+ };
234
+
235
+ const LIST_VALIDATOR: ValidatorNode<"List"> = {
236
+ node: "List",
237
+ children: (node) => [...(node.items ?? [])],
238
+ };
239
+
240
+ const OID_LIST_VALIDATOR: ValidatorNode<"OidList"> = {
241
+ node: "OidList",
242
+ children: (node) => [...(node.items ?? [])],
243
+ };
244
+
245
+ const INT_LIST_VALIDATOR: ValidatorNode<"IntList"> = {
246
+ node: "IntList",
247
+ children: (node) => [...(node.items ?? [])],
248
+ };
249
+
250
+ const A_CONST_VALIDATOR: ValidatorNode<"A_Const"> = {
251
+ node: "A_Const",
252
+ children: () => [],
253
+ };
254
+
255
+ const ALIAS_VALIDATOR: ValidatorNode<"Alias"> = {
256
+ node: "Alias",
257
+ children: (node) => [...(node.colnames ?? [])],
258
+ };
259
+
260
+ const RANGE_VAR_VALIDATOR: ValidatorNode<"RangeVar"> = {
261
+ node: "RangeVar",
262
+ children: (node) => [...(node.alias ? [{ Alias: node.alias }] : [])],
263
+ validate: (node) => {
264
+ if (node.schemaname) {
265
+ throw new Error("Schema name not supported");
266
+ }
267
+
268
+ if (node.relname && SYSTEM_TABLES.has(node.relname)) {
269
+ throw new Error("System tables not supported");
270
+ }
271
+ },
272
+ };
273
+
274
+ const VAR_VALIDATOR: ValidatorNode<"Var"> = {
275
+ node: "Var",
276
+ children: (node) => [...(node.xpr ? [node.xpr] : [])],
277
+ };
278
+
279
+ const PARAM_VALIDATOR: ValidatorNode<"Param"> = {
280
+ node: "Param",
281
+ children: (node) => [...(node.xpr ? [node.xpr] : [])],
282
+ };
283
+
284
+ const AGGREF_VALIDATOR: ValidatorNode<"Aggref"> = {
285
+ node: "Aggref",
286
+ children: (node) => [
287
+ ...(node.aggargtypes ?? []),
288
+ ...(node.aggdirectargs ?? []),
289
+ ...(node.args ?? []),
290
+ ...(node.aggorder ?? []),
291
+ ...(node.aggdistinct ?? []),
292
+ ...(node.aggfilter ? [node.aggfilter] : []),
293
+ ],
294
+ };
295
+
296
+ const GROUPING_FUNC_VALIDATOR: ValidatorNode<"GroupingFunc"> = {
297
+ node: "GroupingFunc",
298
+ children: (node) => [...(node.args ?? []), ...(node.refs ?? [])],
299
+ };
300
+
301
+ const WINDOW_FUNC_VALIDATOR: ValidatorNode<"WindowFunc"> = {
302
+ node: "WindowFunc",
303
+ children: (node) => [
304
+ ...(node.args ?? []),
305
+ ...(node.aggfilter ? [node.aggfilter] : []),
306
+ ],
307
+ };
308
+
309
+ const NAMED_ARG_EXPR_VALIDATOR: ValidatorNode<"NamedArgExpr"> = {
310
+ node: "NamedArgExpr",
311
+ children: (node) => [
312
+ ...(node.xpr ? [node.xpr] : []),
313
+ ...(node.arg ? [node.arg] : []),
314
+ ],
315
+ };
316
+
317
+ const OP_EXPR_VALIDATOR: ValidatorNode<"OpExpr"> = {
318
+ node: "OpExpr",
319
+ children: (node) => [...(node.xpr ? [node.xpr] : []), ...(node.args ?? [])],
320
+ };
321
+
322
+ const DISTINCT_EXPR_VALIDATOR: ValidatorNode<"DistinctExpr"> = {
323
+ node: "DistinctExpr",
324
+ children: (node) => [...(node.xpr ? [node.xpr] : []), ...(node.args ?? [])],
325
+ };
326
+
327
+ const NULL_IF_EXPR_VALIDATOR: ValidatorNode<"NullIfExpr"> = {
328
+ node: "NullIfExpr",
329
+ children: (node) => [...(node.xpr ? [node.xpr] : []), ...(node.args ?? [])],
330
+ };
331
+
332
+ const SCALAR_ARRAY_OP_EXPR_VALIDATOR: ValidatorNode<"ScalarArrayOpExpr"> = {
333
+ node: "ScalarArrayOpExpr",
334
+ children: (node) => [...(node.xpr ? [node.xpr] : []), ...(node.args ?? [])],
335
+ };
336
+
337
+ const BOOL_EXPR_VALIDATOR: ValidatorNode<"BoolExpr"> = {
338
+ node: "BoolExpr",
339
+ children: (node) => [...(node.xpr ? [node.xpr] : []), ...(node.args ?? [])],
340
+ };
341
+
342
+ const FIELD_SELECT_VALIDATOR: ValidatorNode<"FieldSelect"> = {
343
+ node: "FieldSelect",
344
+ children: (node) => [
345
+ ...(node.xpr ? [node.xpr] : []),
346
+ ...(node.arg ? [node.arg] : []),
347
+ ],
348
+ };
349
+
350
+ const RELABEL_TYPE_VALIDATOR: ValidatorNode<"RelabelType"> = {
351
+ node: "RelabelType",
352
+ children: (node) => [
353
+ ...(node.xpr ? [node.xpr] : []),
354
+ ...(node.arg ? [node.arg] : []),
355
+ ],
356
+ };
357
+
358
+ const ARRAY_COERCE_EXPR_VALIDATOR: ValidatorNode<"ArrayCoerceExpr"> = {
359
+ node: "ArrayCoerceExpr",
360
+ children: (node) => [
361
+ ...(node.xpr ? [node.xpr] : []),
362
+ ...(node.arg ? [node.arg] : []),
363
+ ...(node.elemexpr ? [node.elemexpr] : []),
364
+ ],
365
+ };
366
+
367
+ const CONVERT_ROWTYPE_EXPR_VALIDATOR: ValidatorNode<"ConvertRowtypeExpr"> = {
368
+ node: "ConvertRowtypeExpr",
369
+ children: (node) => [
370
+ ...(node.xpr ? [node.xpr] : []),
371
+ ...(node.arg ? [node.arg] : []),
372
+ ],
373
+ };
374
+
375
+ const COLLATE_EXPR_VALIDATOR: ValidatorNode<"CollateExpr"> = {
376
+ node: "CollateExpr",
377
+ children: (node) => [
378
+ ...(node.xpr ? [node.xpr] : []),
379
+ ...(node.arg ? [node.arg] : []),
380
+ ],
381
+ };
382
+
383
+ const CASE_EXPR_VALIDATOR: ValidatorNode<"CaseExpr"> = {
384
+ node: "CaseExpr",
385
+ children: (node) => [
386
+ ...(node.xpr ? [node.xpr] : []),
387
+ ...(node.arg ? [node.arg] : []),
388
+ ...(node.args ?? []),
389
+ ...(node.defresult ? [node.defresult] : []),
390
+ ],
391
+ };
392
+
393
+ const CASE_WHEN_VALIDATOR: ValidatorNode<"CaseWhen"> = {
394
+ node: "CaseWhen",
395
+ children: (node) => [
396
+ ...(node.xpr ? [node.xpr] : []),
397
+ ...(node.expr ? [node.expr] : []),
398
+ ...(node.result ? [node.result] : []),
399
+ ],
400
+ };
401
+
402
+ const CASE_TEST_EXPR_VALIDATOR: ValidatorNode<"CaseTestExpr"> = {
403
+ node: "CaseTestExpr",
404
+ children: (node) => [...(node.xpr ? [node.xpr] : [])],
405
+ };
406
+
407
+ const ARRAY_EXPR_VALIDATOR: ValidatorNode<"ArrayExpr"> = {
408
+ node: "ArrayExpr",
409
+ children: (node) => [
410
+ ...(node.xpr ? [node.xpr] : []),
411
+ ...(node.elements ?? []),
412
+ ],
413
+ };
414
+
415
+ const ROW_EXPR_VALIDATOR: ValidatorNode<"RowExpr"> = {
416
+ node: "RowExpr",
417
+ children: (node) => [
418
+ ...(node.xpr ? [node.xpr] : []),
419
+ ...(node.args ?? []),
420
+ ...(node.colnames ?? []),
421
+ ],
422
+ };
423
+
424
+ const ROW_COMPARE_EXPR_VALIDATOR: ValidatorNode<"RowCompareExpr"> = {
425
+ node: "RowCompareExpr",
426
+ children: (node) => [
427
+ ...(node.xpr ? [node.xpr] : []),
428
+ ...(node.opnos ?? []),
429
+ ...(node.opfamilies ?? []),
430
+ ...(node.inputcollids ?? []),
431
+ ...(node.largs ?? []),
432
+ ...(node.rargs ?? []),
433
+ ],
434
+ };
435
+
436
+ const COALESC_EXPR_VALIDATOR: ValidatorNode<"CoalesceExpr"> = {
437
+ node: "CoalesceExpr",
438
+ children: (node) => [...(node.xpr ? [node.xpr] : []), ...(node.args ?? [])],
439
+ };
440
+
441
+ const MIN_MAX_EXPR_VALIDATOR: ValidatorNode<"MinMaxExpr"> = {
442
+ node: "MinMaxExpr",
443
+ children: (node) => [...(node.xpr ? [node.xpr] : []), ...(node.args ?? [])],
444
+ };
445
+
446
+ const SQL_VALUE_FUNCTION_VALIDATOR: ValidatorNode<"SQLValueFunction"> = {
447
+ node: "SQLValueFunction",
448
+ children: (node) => [...(node.xpr ? [node.xpr] : [])],
449
+ };
450
+
451
+ const JSON_FORMAT_VALIDATOR: ValidatorNode<"JsonFormat"> = {
452
+ node: "JsonFormat",
453
+ children: () => [],
454
+ };
455
+
456
+ const JSON_RETURNING_VALIDATOR: ValidatorNode<"JsonReturning"> = {
457
+ node: "JsonReturning",
458
+ children: (node) => [...(node.format ? [{ JsonFormat: node.format }] : [])],
459
+ };
460
+
461
+ const JSON_VALUE_EXPR_VALIDATOR: ValidatorNode<"JsonValueExpr"> = {
462
+ node: "JsonValueExpr",
463
+ children: (node) => [
464
+ ...(node.raw_expr ? [node.raw_expr] : []),
465
+ ...(node.formatted_expr ? [node.formatted_expr] : []),
466
+ ...(node.format ? [{ JsonFormat: node.format }] : []),
467
+ ],
468
+ };
469
+
470
+ const JSON_CONSTRUCTOR_EXPR_VALIDATOR: ValidatorNode<"JsonConstructorExpr"> = {
471
+ node: "JsonConstructorExpr",
472
+ children: (node) => [
473
+ ...(node.xpr ? [node.xpr] : []),
474
+ ...(node.args ?? []),
475
+ ...(node.func ? [node.func] : []),
476
+ ...(node.coercion ? [node.coercion] : []),
477
+ ...(node.returning ? [{ JsonReturning: node.returning }] : []),
478
+ ],
479
+ };
480
+
481
+ const JSON_IS_PREDICATE_VALIDATOR: ValidatorNode<"JsonIsPredicate"> = {
482
+ node: "JsonIsPredicate",
483
+ children: (node) => [
484
+ ...(node.expr ? [node.expr] : []),
485
+ ...(node.format ? [{ JsonFormat: node.format }] : []),
486
+ ],
487
+ };
488
+
489
+ const NULL_TEST_VALIDATOR: ValidatorNode<"NullTest"> = {
490
+ node: "NullTest",
491
+ children: (node) => [
492
+ ...(node.xpr ? [node.xpr] : []),
493
+ ...(node.arg ? [node.arg] : []),
494
+ ],
495
+ };
496
+
497
+ const BOOLEAN_TEST_VALIDATOR: ValidatorNode<"BooleanTest"> = {
498
+ node: "BooleanTest",
499
+ children: (node) => [
500
+ ...(node.xpr ? [node.xpr] : []),
501
+ ...(node.arg ? [node.arg] : []),
502
+ ],
503
+ };
504
+
505
+ const COERCE_TO_DOMAIN_VALIDATOR: ValidatorNode<"CoerceToDomain"> = {
506
+ node: "CoerceToDomain",
507
+ children: (node) => [
508
+ ...(node.xpr ? [node.xpr] : []),
509
+ ...(node.arg ? [node.arg] : []),
510
+ ],
511
+ };
512
+
513
+ const COERCE_TO_DOMAIN_VALUE_VALIDATOR: ValidatorNode<"CoerceToDomainValue"> = {
514
+ node: "CoerceToDomainValue",
515
+ children: (node) => [...(node.xpr ? [node.xpr] : [])],
516
+ };
517
+
518
+ const CURRENT_OF_EXPR_VALIDATOR: ValidatorNode<"CurrentOfExpr"> = {
519
+ node: "CurrentOfExpr",
520
+ children: (node) => [...(node.xpr ? [node.xpr] : [])],
521
+ };
522
+
523
+ const NEXT_VALUE_EXPR_VALIDATOR: ValidatorNode<"NextValueExpr"> = {
524
+ node: "NextValueExpr",
525
+ children: (node) => [...(node.xpr ? [node.xpr] : [])],
526
+ };
527
+
528
+ const INFERENCE_ELEM_VALIDATOR: ValidatorNode<"InferenceElem"> = {
529
+ node: "InferenceElem",
530
+ children: (node) => [
531
+ ...(node.xpr ? [node.xpr] : []),
532
+ ...(node.expr ? [node.expr] : []),
533
+ ],
534
+ };
535
+
536
+ const TARGET_ENTRY_VALIDATOR: ValidatorNode<"TargetEntry"> = {
537
+ node: "TargetEntry",
538
+ children: (node) => [
539
+ ...(node.xpr ? [node.xpr] : []),
540
+ ...(node.expr ? [node.expr] : []),
541
+ ],
542
+ };
543
+
544
+ const RANGE_TBL_REF_VALIDATOR: ValidatorNode<"RangeTblRef"> = {
545
+ node: "RangeTblRef",
546
+ children: () => [],
547
+ };
548
+
549
+ const JOIN_EXPR_VALIDATOR: ValidatorNode<"JoinExpr"> = {
550
+ node: "JoinExpr",
551
+ children: (node) => [
552
+ ...(node.larg ? [node.larg] : []),
553
+ ...(node.rarg ? [node.rarg] : []),
554
+ ...(node.usingClause ?? []),
555
+ ...(node.join_using_alias ? [{ Alias: node.join_using_alias }] : []),
556
+ ...(node.quals ? [node.quals] : []),
557
+ ...(node.alias ? [{ Alias: node.alias }] : []),
558
+ ],
559
+ };
560
+
561
+ const FROM_EXPR_VALIDATOR: ValidatorNode<"FromExpr"> = {
562
+ node: "FromExpr",
563
+ children: (node) => [
564
+ ...(node.fromlist ?? []),
565
+ ...(node.quals ? [node.quals] : []),
566
+ ],
567
+ };
568
+
569
+ const ON_CONFLICT_EXPR_VALIDATOR: ValidatorNode<"OnConflictExpr"> = {
570
+ node: "OnConflictExpr",
571
+ children: (node) => [
572
+ ...(node.arbiterElems ?? []),
573
+ ...(node.arbiterWhere ? [node.arbiterWhere] : []),
574
+ ...(node.onConflictSet ?? []),
575
+ ...(node.onConflictWhere ? [node.onConflictWhere] : []),
576
+ ...(node.exclRelTlist ?? []),
577
+ ],
578
+ };
579
+
580
+ const TYPE_NAME_VALIDATOR: ValidatorNode<"TypeName"> = {
581
+ node: "TypeName",
582
+ children: (node) => [
583
+ ...(node.names ?? []),
584
+ ...(node.typmods ?? []),
585
+ ...(node.arrayBounds ?? []),
586
+ ],
587
+ };
588
+
589
+ const COLUMN_REF_VALIDATOR: ValidatorNode<"ColumnRef"> = {
590
+ node: "ColumnRef",
591
+ children: (node) => [...(node.fields ?? [])],
592
+ };
593
+
594
+ const PARAM_REF_VALIDATOR: ValidatorNode<"ParamRef"> = {
595
+ node: "ParamRef",
596
+ children: () => [],
597
+ };
598
+
599
+ const A_EXPR_VALIDATOR: ValidatorNode<"A_Expr"> = {
600
+ node: "A_Expr",
601
+ children: (node) => [
602
+ ...(node.name ?? []),
603
+ ...(node.lexpr ? [node.lexpr] : []),
604
+ ...(node.rexpr ? [node.rexpr] : []),
605
+ ],
606
+ };
607
+
608
+ const TYPE_CAST_VALIDATOR: ValidatorNode<"TypeCast"> = {
609
+ node: "TypeCast",
610
+ children: (node) => [
611
+ ...(node.arg ? [node.arg] : []),
612
+ ...(node.typeName ? [{ TypeName: node.typeName }] : []),
613
+ ],
614
+ };
615
+
616
+ const COLLATE_CLAUSE_VALIDATOR: ValidatorNode<"CollateClause"> = {
617
+ node: "CollateClause",
618
+ children: (node) => [
619
+ ...(node.arg ? [node.arg] : []),
620
+ ...(node.collname ?? []),
621
+ ],
622
+ };
623
+
624
+ const ALLOWED_FUNCTIONS = new Set([
625
+ "count",
626
+ "sum",
627
+ "avg",
628
+ "min",
629
+ "max",
630
+ "lower",
631
+ "upper",
632
+ "length",
633
+ "trim",
634
+ "replace",
635
+ "substring",
636
+ "cast",
637
+ "concat",
638
+ "now",
639
+ "current_timestamp",
640
+ "current_date",
641
+ "current_time",
642
+ "coalesce",
643
+ "json_agg",
644
+ "json_object",
645
+ "json_array",
646
+ "json_object_agg",
647
+ "json_array_agg",
648
+ "json_build_array",
649
+ "row_number",
650
+ "rank",
651
+ "dense_rank",
652
+ "percent_rank",
653
+ "cume_dist",
654
+ "ntile",
655
+ "lag",
656
+ "lead",
657
+ "first_value",
658
+ "last_value",
659
+ "nth_value",
660
+ "abs",
661
+ "cbrt",
662
+ "ceil",
663
+ "ceiling",
664
+ "degrees",
665
+ "div",
666
+ "exp",
667
+ "floor",
668
+ "ln",
669
+ "log",
670
+ "mod",
671
+ "pi",
672
+ "power",
673
+ "radians",
674
+ "random",
675
+ "round",
676
+ "sign",
677
+ "sqrt",
678
+ "width_bucket",
679
+ "acos",
680
+ "asin",
681
+ "atan",
682
+ "atan2",
683
+ "cos",
684
+ "cot",
685
+ "sin",
686
+ "tan",
687
+ ]);
688
+
689
+ const FUNC_CALL_VALIDATOR: ValidatorNode<"FuncCall"> = {
690
+ node: "FuncCall",
691
+ children: (node) => [
692
+ ...(node.funcname ?? []),
693
+ ...(node.args ?? []),
694
+ ...(node.agg_order ?? []),
695
+ ...(node.agg_filter ? [node.agg_filter] : []),
696
+ ...(node.over ? [{ WindowDef: node.over }] : []),
697
+ ],
698
+ validate: (node) => {
699
+ if (
700
+ node.funcname?.every(
701
+ (name) =>
702
+ getNodeType(name) === "String" &&
703
+ // @ts-ignore
704
+ ALLOWED_FUNCTIONS.has(name.String.sval),
705
+ )
706
+ ) {
707
+ return;
708
+ }
709
+ throw new Error("Function call not supported");
710
+ },
711
+ };
712
+
713
+ const A_STAR_VALIDATOR: ValidatorNode<"A_Star"> = {
714
+ node: "A_Star",
715
+ children: () => [],
716
+ };
717
+
718
+ const A_INDICES_VALIDATOR: ValidatorNode<"A_Indices"> = {
719
+ node: "A_Indices",
720
+ children: (node) => [
721
+ ...(node.lidx ? [node.lidx] : []),
722
+ ...(node.uidx ? [node.uidx] : []),
723
+ ],
724
+ };
725
+
726
+ const A_INDIRECTION_VALIDATOR: ValidatorNode<"A_Indirection"> = {
727
+ node: "A_Indirection",
728
+ children: (node) => [
729
+ ...(node.arg ? [node.arg] : []),
730
+ ...(node.indirection ?? []),
731
+ ],
732
+ };
733
+
734
+ const A_ARRAY_EXPR_VALIDATOR: ValidatorNode<"A_ArrayExpr"> = {
735
+ node: "A_ArrayExpr",
736
+ children: (node) => [...(node.elements ?? [])],
737
+ };
738
+
739
+ const RES_TARGET_VALIDATOR: ValidatorNode<"ResTarget"> = {
740
+ node: "ResTarget",
741
+ children: (node) => [
742
+ ...(node.indirection ?? []),
743
+ ...(node.val ? [node.val] : []),
744
+ ],
745
+ };
746
+
747
+ const MULTI_ASSIGN_REF_VALIDATOR: ValidatorNode<"MultiAssignRef"> = {
748
+ node: "MultiAssignRef",
749
+ children: (node) => [...(node.source ? [node.source] : [])],
750
+ };
751
+
752
+ const SORT_BY_VALIDATOR: ValidatorNode<"SortBy"> = {
753
+ node: "SortBy",
754
+ children: (node) => [
755
+ ...(node.node ? [node.node] : []),
756
+ ...(node.useOp ?? []),
757
+ ],
758
+ };
759
+
760
+ const WINDOW_DEF_VALIDATOR: ValidatorNode<"WindowDef"> = {
761
+ node: "WindowDef",
762
+ children: (node) => [
763
+ ...(node.partitionClause ?? []),
764
+ ...(node.orderClause ?? []),
765
+ ...(node.startOffset ? [node.startOffset] : []),
766
+ ...(node.endOffset ? [node.endOffset] : []),
767
+ ],
768
+ };
769
+
770
+ const RANGE_SUBSELECT_VALIDATOR: ValidatorNode<"RangeSubselect"> = {
771
+ node: "RangeSubselect",
772
+ children: (node) => [
773
+ ...(node.subquery ? [node.subquery] : []),
774
+ ...(node.alias ? [{ Alias: node.alias }] : []),
775
+ ],
776
+ };
777
+
778
+ const SORT_GROUP_CLAUSE_VALIDATOR: ValidatorNode<"SortGroupClause"> = {
779
+ node: "SortGroupClause",
780
+ children: () => [],
781
+ };
782
+
783
+ const GROUPING_SET_VALIDATOR: ValidatorNode<"GroupingSet"> = {
784
+ node: "GroupingSet",
785
+ children: (node) => [...(node.content ?? [])],
786
+ };
787
+
788
+ const WITH_CLAUSE_VALIDATOR: ValidatorNode<"WithClause"> = {
789
+ node: "WithClause",
790
+ children: (node) => [...(node.ctes ?? [])],
791
+ validate: (node) => {
792
+ if (node.recursive) {
793
+ throw new Error("Recursive CTEs not supported");
794
+ }
795
+ },
796
+ };
797
+
798
+ const COMMON_TABLE_EXPR_VALIDATOR: ValidatorNode<"CommonTableExpr"> = {
799
+ node: "CommonTableExpr",
800
+ children: (node) => [
801
+ ...(node.aliascolnames ?? []),
802
+ ...(node.ctequery ? [node.ctequery] : []),
803
+ ...(node.search_clause ? [{ CTESearchClause: node.search_clause }] : []),
804
+ ...(node.cycle_clause ? [{ CTECycleClause: node.cycle_clause }] : []),
805
+ ...(node.ctecolnames ?? []),
806
+ ...(node.ctecoltypes ?? []),
807
+ ...(node.ctecoltypmods ?? []),
808
+ ...(node.ctecolcollations ?? []),
809
+ ],
810
+ validate: (node) => {
811
+ if (node.ctematerialized === "CTEMaterializeAlways" || node.cterecursive) {
812
+ throw new Error("Invalid CTE");
813
+ }
814
+ },
815
+ };
816
+
817
+ const JSON_OUTPUT_VALIDATOR: ValidatorNode<"JsonOutput"> = {
818
+ node: "JsonOutput",
819
+ children: (node) => [
820
+ ...(node.returning ? [{ JsonReturning: node.returning }] : []),
821
+ ],
822
+ };
823
+
824
+ const JSON_KEY_VALUE_VALIDATOR: ValidatorNode<"JsonKeyValue"> = {
825
+ node: "JsonKeyValue",
826
+ children: (node) => [
827
+ ...(node.key ? [node.key] : []),
828
+ ...(node.value ? [{ JsonValueExpr: node.value }] : []),
829
+ ],
830
+ };
831
+
832
+ const JSON_OBJECT_CONSTRUCTOR_VALIDATOR: ValidatorNode<"JsonObjectConstructor"> =
833
+ {
834
+ node: "JsonObjectConstructor",
835
+ children: (node) => [
836
+ ...(node.exprs ?? []),
837
+ ...(node.output ? [{ JsonOutput: node.output }] : []),
838
+ ],
839
+ };
840
+
841
+ const JSON_ARRAY_CONSTRUCTOR_VALIDATOR: ValidatorNode<"JsonArrayConstructor"> =
842
+ {
843
+ node: "JsonArrayConstructor",
844
+ children: (node) => [
845
+ ...(node.exprs ?? []),
846
+ ...(node.output ? [{ JsonOutput: node.output }] : []),
847
+ ],
848
+ };
849
+
850
+ const JSON_ARRAY_QUERY_CONSTRUCTOR_VALIDATOR: ValidatorNode<"JsonArrayQueryConstructor"> =
851
+ {
852
+ node: "JsonArrayQueryConstructor",
853
+ children: (node) => [
854
+ ...(node.query ? [node.query] : []),
855
+ ...(node.output ? [{ JsonOutput: node.output }] : []),
856
+ ...(node.format ? [{ JsonFormat: node.format }] : []),
857
+ ],
858
+ };
859
+
860
+ const JSON_AGG_CONSTRUCTOR_VALIDATOR: ValidatorNode<"JsonAggConstructor"> = {
861
+ node: "JsonAggConstructor",
862
+ children: (node) => [
863
+ ...(node.output ? [{ JsonOutput: node.output }] : []),
864
+ ...(node.agg_filter ? [node.agg_filter] : []),
865
+ ...(node.agg_order ?? []),
866
+ ...(node.over ? [{ WindowDef: node.over }] : []),
867
+ ],
868
+ };
869
+
870
+ const JSON_OBJECT_AGG_VALIDATOR: ValidatorNode<"JsonObjectAgg"> = {
871
+ node: "JsonObjectAgg",
872
+ children: (node) => [
873
+ ...(node.constructor ? [{ JsonAggConstructor: node.constructor }] : []),
874
+ ...(node.arg ? [{ JsonKeyValue: node.arg }] : []),
875
+ ],
876
+ };
877
+
878
+ const JSON_ARRAY_AGG_VALIDATOR: ValidatorNode<"JsonArrayAgg"> = {
879
+ node: "JsonArrayAgg",
880
+ children: (node) => [
881
+ ...(node.constructor ? [{ JsonAggConstructor: node.constructor }] : []),
882
+ ...(node.arg ? [{ JsonValueExpr: node.arg }] : []),
883
+ ],
884
+ };
885
+
886
+ const SELECT_STMT_VALIDATOR: ValidatorNode<"SelectStmt"> = {
887
+ node: "SelectStmt",
888
+ children: (node) => [
889
+ ...(node.distinctClause ?? []),
890
+ ...(node.intoClause ? [{ IntoClause: node.intoClause }] : []),
891
+ ...(node.targetList ?? []),
892
+ ...(node.fromClause ?? []),
893
+ ...(node.whereClause ? [node.whereClause] : []),
894
+ ...(node.groupClause ?? []),
895
+ ...(node.havingClause ? [node.havingClause] : []),
896
+ ...(node.windowClause ?? []),
897
+ ...(node.valuesLists ?? []),
898
+ ...(node.sortClause ?? []),
899
+ ...(node.limitOffset ? [node.limitOffset] : []),
900
+ ...(node.limitCount ? [node.limitCount] : []),
901
+ ...(node.lockingClause ?? []),
902
+ ...(node.withClause ? [{ WithClause: node.withClause }] : []),
903
+ ...(node.larg ? [{ SelectStmt: node.larg }] : []),
904
+ ...(node.rarg ? [{ SelectStmt: node.rarg }] : []),
905
+ ],
906
+ validate: (node) => {
907
+ if (node.lockingClause) {
908
+ throw new Error("Invalid query");
909
+ }
910
+ },
911
+ };
912
+
913
+ const COMMENT_STMT_VALIDATOR: ValidatorNode<"CommentStmt"> = {
914
+ node: "CommentStmt",
915
+ children: (node) => [...(node.object ? [node.object] : [])],
916
+ };
917
+
918
+ /** Validation rules for allowed Postgres SQL AST nodes. */
919
+ const ALLOW_LIST = new Map(
920
+ [
921
+ INTEGER_VALIDATOR,
922
+ FLOAT_VALIDATOR,
923
+ BOOLEAN_VALIDATOR,
924
+ STRING_VALIDATOR,
925
+ BIT_STRING_VALIDATOR,
926
+ LIST_VALIDATOR,
927
+ OID_LIST_VALIDATOR,
928
+ INT_LIST_VALIDATOR,
929
+ A_CONST_VALIDATOR,
930
+ ALIAS_VALIDATOR,
931
+ RANGE_VAR_VALIDATOR,
932
+ VAR_VALIDATOR,
933
+ PARAM_VALIDATOR,
934
+ AGGREF_VALIDATOR,
935
+ GROUPING_FUNC_VALIDATOR,
936
+ WINDOW_FUNC_VALIDATOR,
937
+ NAMED_ARG_EXPR_VALIDATOR,
938
+ OP_EXPR_VALIDATOR,
939
+ DISTINCT_EXPR_VALIDATOR,
940
+ NULL_IF_EXPR_VALIDATOR,
941
+ SCALAR_ARRAY_OP_EXPR_VALIDATOR,
942
+ BOOL_EXPR_VALIDATOR,
943
+ FIELD_SELECT_VALIDATOR,
944
+ RELABEL_TYPE_VALIDATOR,
945
+ ARRAY_COERCE_EXPR_VALIDATOR,
946
+ CONVERT_ROWTYPE_EXPR_VALIDATOR,
947
+ COLLATE_EXPR_VALIDATOR,
948
+ CASE_EXPR_VALIDATOR,
949
+ CASE_WHEN_VALIDATOR,
950
+ CASE_TEST_EXPR_VALIDATOR,
951
+ ARRAY_EXPR_VALIDATOR,
952
+ ROW_EXPR_VALIDATOR,
953
+ ROW_COMPARE_EXPR_VALIDATOR,
954
+ COALESC_EXPR_VALIDATOR,
955
+ MIN_MAX_EXPR_VALIDATOR,
956
+ SQL_VALUE_FUNCTION_VALIDATOR,
957
+ JSON_FORMAT_VALIDATOR,
958
+ JSON_RETURNING_VALIDATOR,
959
+ JSON_VALUE_EXPR_VALIDATOR,
960
+ JSON_CONSTRUCTOR_EXPR_VALIDATOR,
961
+ JSON_IS_PREDICATE_VALIDATOR,
962
+ NULL_TEST_VALIDATOR,
963
+ BOOLEAN_TEST_VALIDATOR,
964
+ COERCE_TO_DOMAIN_VALIDATOR,
965
+ COERCE_TO_DOMAIN_VALUE_VALIDATOR,
966
+ CURRENT_OF_EXPR_VALIDATOR,
967
+ NEXT_VALUE_EXPR_VALIDATOR,
968
+ INFERENCE_ELEM_VALIDATOR,
969
+ TARGET_ENTRY_VALIDATOR,
970
+ RANGE_TBL_REF_VALIDATOR,
971
+ JOIN_EXPR_VALIDATOR,
972
+ FROM_EXPR_VALIDATOR,
973
+ ON_CONFLICT_EXPR_VALIDATOR,
974
+ TYPE_NAME_VALIDATOR,
975
+ COLUMN_REF_VALIDATOR,
976
+ PARAM_REF_VALIDATOR,
977
+ A_EXPR_VALIDATOR,
978
+ TYPE_CAST_VALIDATOR,
979
+ COLLATE_CLAUSE_VALIDATOR,
980
+ FUNC_CALL_VALIDATOR,
981
+ A_STAR_VALIDATOR,
982
+ A_INDICES_VALIDATOR,
983
+ A_INDIRECTION_VALIDATOR,
984
+ A_ARRAY_EXPR_VALIDATOR,
985
+ RES_TARGET_VALIDATOR,
986
+ MULTI_ASSIGN_REF_VALIDATOR,
987
+ SORT_BY_VALIDATOR,
988
+ WINDOW_DEF_VALIDATOR,
989
+ RANGE_SUBSELECT_VALIDATOR,
990
+ SORT_GROUP_CLAUSE_VALIDATOR,
991
+ GROUPING_SET_VALIDATOR,
992
+ WITH_CLAUSE_VALIDATOR,
993
+ COMMON_TABLE_EXPR_VALIDATOR,
994
+ JSON_OUTPUT_VALIDATOR,
995
+ JSON_KEY_VALUE_VALIDATOR,
996
+ JSON_OBJECT_CONSTRUCTOR_VALIDATOR,
997
+ JSON_ARRAY_CONSTRUCTOR_VALIDATOR,
998
+ JSON_ARRAY_QUERY_CONSTRUCTOR_VALIDATOR,
999
+ JSON_AGG_CONSTRUCTOR_VALIDATOR,
1000
+ JSON_OBJECT_AGG_VALIDATOR,
1001
+ JSON_ARRAY_AGG_VALIDATOR,
1002
+ SELECT_STMT_VALIDATOR,
1003
+ COMMENT_STMT_VALIDATOR,
1004
+ ].map((node) => [node.node, node]),
1005
+ );
1006
+
1007
+ const UPDATE_STMT_VALIDATOR: ValidatorNode<"UpdateStmt"> = {
1008
+ node: "UpdateStmt",
1009
+ children: (node) => [
1010
+ ...(node.relation ? [{ RangeVar: node.relation }] : []),
1011
+ ...(node.targetList ?? []),
1012
+ ...(node.whereClause ? [node.whereClause] : []),
1013
+ ...(node.fromClause ?? []),
1014
+ ...(node.returningList ?? []),
1015
+ ...(node.withClause ? [{ WithClause: node.withClause }] : []),
1016
+ ],
1017
+ };
1018
+
1019
+ const DELETE_STMT_VALIDATOR: ValidatorNode<"DeleteStmt"> = {
1020
+ node: "DeleteStmt",
1021
+ children: (node) => [
1022
+ ...(node.relation ? [{ RangeVar: node.relation }] : []),
1023
+ ...(node.usingClause ?? []),
1024
+ ...(node.whereClause ? [node.whereClause] : []),
1025
+ ...(node.returningList ?? []),
1026
+ ...(node.withClause ? [{ WithClause: node.withClause }] : []),
1027
+ ],
1028
+ };
1029
+
1030
+ const FIND_LIST = new Map(
1031
+ [
1032
+ ...Array.from(ALLOW_LIST.values()),
1033
+ UPDATE_STMT_VALIDATOR,
1034
+ DELETE_STMT_VALIDATOR,
1035
+ ].map((node) => [node.node, node]),
1036
+ );
1037
+
1038
+ // NOT_ALLOW_LIST
1039
+ // ParseResult
1040
+ // ScanResult
1041
+ // TableFunc
1042
+ // IntoClause
1043
+ // SubscriptingRef
1044
+ // FuncExpr
1045
+ // SubLink
1046
+ // SubPlan
1047
+ // AlternativeSubPlan
1048
+ // FieldStore
1049
+ // CoerceViaIO
1050
+ // XmlExpr
1051
+ // SetToDefault
1052
+ // Query
1053
+ // RoleSpec
1054
+ // RangeFunction
1055
+ // RangeTableFunc
1056
+ // RangeTableFuncCol
1057
+ // RangeTableSample
1058
+ // ColumnDef
1059
+ // TableLikeClause
1060
+ // IndexElem
1061
+ // DefElem
1062
+ // LockingClause
1063
+ // XmlSerialize
1064
+ // PartitionElem
1065
+ // PartitionSpec
1066
+ // PartitionBounSpec
1067
+ // PartitionRangeDatum
1068
+ // PartitionCmd
1069
+ // RangeTableEntry
1070
+ // RTEPermissionInfo
1071
+ // RangeTblFunction
1072
+ // TableSampleClause
1073
+ // WithCheckOption
1074
+ // WindowClause
1075
+ // RowMarkClause
1076
+ // InferClausej
1077
+ // OnConflictClause
1078
+ // CTESearchClause
1079
+ // CTECycleClause
1080
+ // MergeWhenClause
1081
+ // MergeAction
1082
+ // TriggerTransition
1083
+ // RawStmt
1084
+ // InsertStmt
1085
+ // DeleteStmt
1086
+ // UpdateStmt
1087
+ // MergeStmt
1088
+ // SetOperationStmt
1089
+ // ReturnStmt
1090
+ // PLAssignStmt
1091
+ // CreateSchemaStmt
1092
+ // AlterTableStmt
1093
+ // ReplicaIdentityStmt
1094
+ // AlterTableCmd
1095
+ // AlterCollationStmt
1096
+ // AlterDomainStmt
1097
+ // GrantStmt
1098
+ // ObjectWithArgs
1099
+ // AccessPriv
1100
+ // GrantRoleStmt
1101
+ // AlterDefaultPrivilegesStmt
1102
+ // CopyStmt
1103
+ // VariableSetStmt
1104
+ // VariableShowStmt
1105
+ // CreateStmt
1106
+ // Constraint
1107
+ // CreateTableSpaceStmt
1108
+ // DropTableSpaceStmt
1109
+ // AlterTableSpaceOptionsStmt
1110
+ // AlterTableMoveAllStmt
1111
+ // CreateExtensionStmt
1112
+ // AlterExtensionStmt
1113
+ // AlterExtensionContentsStmt
1114
+ // CreateFdwStmt
1115
+ // AlterFdwStmt
1116
+ // CreateForeignServerStmt
1117
+ // AlterForeignServerStmt
1118
+ // CreateForeignTableStmt
1119
+ // CreateUserMappingStmt
1120
+ // AlterUserMappingStmt
1121
+ // DropUserMappingStmt
1122
+ // ImportForeignSchemaStmt
1123
+ // CreatePolicyStmt
1124
+ // AlterPolicyStmt
1125
+ // CreateAmStmt
1126
+ // CreateTrigStmt
1127
+ // CreateEventTrigStmt
1128
+ // AlterEventTrigStmt
1129
+ // CreatePLangStmt
1130
+ // CreateRoleStmt
1131
+ // AlterRoleStmt
1132
+ // AlterRoleSetStmt
1133
+ // DropRoleStmt
1134
+ // CreateSeqStmt
1135
+ // AlterSeqStmt
1136
+ // DefineStmt
1137
+ // CreateDomainStmt
1138
+ // CreateOpClassStmt
1139
+ // CreateOpClassItem
1140
+ // CreateOpFamilyStmt
1141
+ // AlterOpFamilyStmt
1142
+ // DropStmt
1143
+ // TruncateStmt
1144
+ // SecLabelStmt
1145
+ // DeclareCursorStmt
1146
+ // ClosePortalStmt
1147
+ // FetchStmt
1148
+ // IndexStmt
1149
+ // CreateStatsStmt
1150
+ // StatsElem
1151
+ // AlterStatsStmt
1152
+ // CreateFunctionStmt
1153
+ // FunctionParameter
1154
+ // AlterFunctionStmt
1155
+ // DoStmt
1156
+ // InlineCodeBlock
1157
+ // CallStmt
1158
+ // CallContext
1159
+ // RenameStmt
1160
+ // AlterObjectDependsStmt
1161
+ // AlterObjectSchemaStmt
1162
+ // AlterOwnerStmt
1163
+ // AlterOperatorStmt
1164
+ // AlterTypeStmt
1165
+ // RuleStmt
1166
+ // NotifyStmt
1167
+ // ListenStmt
1168
+ // UnlistenStmt
1169
+ // TransactionStmt
1170
+ // CompositeTypeStmt
1171
+ // CreateEnumStmt
1172
+ // CreateRangeStmt
1173
+ // AlterEnumStmt
1174
+ // ViewStmt
1175
+ // LoadStmt
1176
+ // CreatedbStmt
1177
+ // AlterDatabaseStmt
1178
+ // AlterDatabaseRefreshCollStmt
1179
+ // AlterDatabaseSetStmt
1180
+ // DropdbStmt
1181
+ // AlterSystemStmt
1182
+ // ClusterStmt
1183
+ // VacuumStmt
1184
+ // VacuumRelation
1185
+ // ExplainStmt
1186
+ // CreateTableAsStmt
1187
+ // RefreshMatViewStmt
1188
+ // CheckPointStmt
1189
+ // DiscardStmt
1190
+ // LockStmt
1191
+ // ConstraintsSetStmt
1192
+ // ReindexStmt
1193
+ // CreateConversionStmt
1194
+ // CreateCastStmt
1195
+ // CreateTransformStmt
1196
+ // PrepareStmt
1197
+ // ExecuteStmt
1198
+ // DeallocateStmt
1199
+ // DropOwnedStmt
1200
+ // ReassignOwnedStmt
1201
+ // AlterTSDictionaryStmt
1202
+ // AlterTSConfigurationStmt
1203
+ // PublicationTable
1204
+ // PublicationObjSpec
1205
+ // CreatePublicationStmt
1206
+ // AlterPublicationStmt
1207
+ // CreateSubscriptionStmt
1208
+ // AlterSubscriptionStmt
1209
+ // DropSubscriptionStmt
1210
+ // ScanToken
1211
+
1212
+ const SYSTEM_TABLES = new Set([
1213
+ "pg_statistic",
1214
+ "pg_type",
1215
+ "pg_foreign_table",
1216
+ "pg_proc_oid_index",
1217
+ "pg_proc_proname_args_nsp_index",
1218
+ "pg_type_oid_index",
1219
+ "pg_type_typname_nsp_index",
1220
+ "pg_attribute_relid_attnam_index",
1221
+ "pg_attribute_relid_attnum_index",
1222
+ "pg_class_oid_index",
1223
+ "pg_class_relname_nsp_index",
1224
+ "pg_class_tblspc_relfilenode_index",
1225
+ "pg_attrdef_adrelid_adnum_index",
1226
+ "pg_attrdef_oid_index",
1227
+ "pg_constraint_conname_nsp_index",
1228
+ "pg_constraint_conrelid_contypid_conname_index",
1229
+ "pg_constraint_contypid_index",
1230
+ "pg_constraint_oid_index",
1231
+ "pg_constraint_conparentid_index",
1232
+ "pg_inherits_relid_seqno_index",
1233
+ "pg_inherits_parent_index",
1234
+ "pg_index_indrelid_index",
1235
+ "pg_index_indexrelid_index",
1236
+ "pg_operator_oid_index",
1237
+ "pg_operator_oprname_l_r_n_index",
1238
+ "pg_opfamily_am_name_nsp_index",
1239
+ "pg_opfamily_oid_index",
1240
+ "pg_opclass_am_name_nsp_index",
1241
+ "pg_opclass_oid_index",
1242
+ "pg_am_name_index",
1243
+ "pg_am_oid_index",
1244
+ "pg_amop_fam_strat_index",
1245
+ "pg_amop_opr_fam_index",
1246
+ "pg_amop_oid_index",
1247
+ "pg_amproc_fam_proc_index",
1248
+ "pg_amproc_oid_index",
1249
+ "pg_language_name_index",
1250
+ "pg_language_oid_index",
1251
+ "pg_largeobject_metadata_oid_index",
1252
+ "pg_largeobject_loid_pn_index",
1253
+ "pg_aggregate_fnoid_index",
1254
+ "pg_statistic_relid_att_inh_index",
1255
+ "pg_statistic_ext_oid_index",
1256
+ "pg_statistic_ext_name_index",
1257
+ "pg_statistic_ext_relid_index",
1258
+ "pg_statistic_ext_data_stxoid_inh_index",
1259
+ "pg_rewrite_oid_index",
1260
+ "pg_rewrite_rel_rulename_index",
1261
+ "pg_trigger_tgconstraint_index",
1262
+ "pg_trigger_tgrelid_tgname_index",
1263
+ "pg_trigger_oid_index",
1264
+ "pg_event_trigger_evtname_index",
1265
+ "pg_event_trigger_oid_index",
1266
+ "pg_description_o_c_o_index",
1267
+ "pg_cast_oid_index",
1268
+ "pg_cast_source_target_index",
1269
+ "pg_enum_oid_index",
1270
+ "pg_enum_typid_label_index",
1271
+ "pg_enum_typid_sortorder_index",
1272
+ "pg_namespace_nspname_index",
1273
+ "pg_namespace_oid_index",
1274
+ "pg_conversion_default_index",
1275
+ "pg_conversion_name_nsp_index",
1276
+ "pg_conversion_oid_index",
1277
+ "pg_depend_depender_index",
1278
+ "pg_depend_reference_index",
1279
+ "pg_database_datname_index",
1280
+ "pg_database_oid_index",
1281
+ "pg_db_role_setting_databaseid_rol_index",
1282
+ "pg_tablespace_oid_index",
1283
+ "pg_tablespace_spcname_index",
1284
+ "pg_authid_rolname_index",
1285
+ "pg_authid_oid_index",
1286
+ "pg_auth_members_oid_index",
1287
+ "pg_auth_members_role_member_index",
1288
+ "pg_auth_members_member_role_index",
1289
+ "pg_auth_members_grantor_index",
1290
+ "pg_shdepend_depender_index",
1291
+ "pg_shdepend_reference_index",
1292
+ "pg_shdescription_o_c_index",
1293
+ "pg_ts_config_cfgname_index",
1294
+ "pg_ts_config_oid_index",
1295
+ "pg_ts_config_map_index",
1296
+ "pg_ts_dict_dictname_index",
1297
+ "pg_ts_dict_oid_index",
1298
+ "pg_ts_parser_prsname_index",
1299
+ "pg_ts_parser_oid_index",
1300
+ "pg_ts_template_tmplname_index",
1301
+ "pg_ts_template_oid_index",
1302
+ "pg_extension_oid_index",
1303
+ "pg_extension_name_index",
1304
+ "pg_foreign_data_wrapper_oid_index",
1305
+ "pg_foreign_data_wrapper_name_index",
1306
+ "pg_foreign_server_oid_index",
1307
+ "pg_foreign_server_name_index",
1308
+ "pg_user_mapping_oid_index",
1309
+ "pg_user_mapping_user_server_index",
1310
+ "pg_foreign_table_relid_index",
1311
+ "pg_policy_oid_index",
1312
+ "pg_policy_polrelid_polname_index",
1313
+ "pg_replication_origin_roiident_index",
1314
+ "pg_replication_origin_roname_index",
1315
+ "pg_default_acl_role_nsp_obj_index",
1316
+ "pg_default_acl_oid_index",
1317
+ "pg_init_privs_o_c_o_index",
1318
+ "pg_seclabel_object_index",
1319
+ "pg_shseclabel_object_index",
1320
+ "pg_collation_name_enc_nsp_index",
1321
+ "pg_collation_oid_index",
1322
+ "pg_parameter_acl_parname_index",
1323
+ "pg_parameter_acl_oid_index",
1324
+ "pg_partitioned_table_partrelid_index",
1325
+ "pg_range_rngtypid_index",
1326
+ "pg_range_rngmultitypid_index",
1327
+ "pg_transform_oid_index",
1328
+ "pg_transform_type_lang_index",
1329
+ "pg_sequence_seqrelid_index",
1330
+ "pg_publication_oid_index",
1331
+ "pg_publication_pubname_index",
1332
+ "pg_publication_namespace_oid_index",
1333
+ "pg_publication_namespace_pnnspid_pnpubid_index",
1334
+ "pg_publication_rel_oid_index",
1335
+ "pg_publication_rel_prrelid_prpubid_index",
1336
+ "pg_publication_rel_prpubid_index",
1337
+ "pg_subscription_oid_index",
1338
+ "pg_subscription_subname_index",
1339
+ "pg_subscription_rel_srrelid_srsubid_index",
1340
+ "pg_authid",
1341
+ "pg_shadow",
1342
+ "pg_roles",
1343
+ "pg_statistic_ext_data",
1344
+ "pg_hba_file_rules",
1345
+ "pg_settings",
1346
+ "pg_file_settings",
1347
+ "pg_backend_memory_contexts",
1348
+ "pg_ident_file_mappings",
1349
+ "pg_config",
1350
+ "pg_shmem_allocations",
1351
+ "pg_tables",
1352
+ "pg_user_mapping",
1353
+ "pg_replication_origin_status",
1354
+ "pg_subscription",
1355
+ "pg_attribute",
1356
+ "pg_proc",
1357
+ "pg_class",
1358
+ "pg_attrdef",
1359
+ "pg_constraint",
1360
+ "pg_inherits",
1361
+ "pg_index",
1362
+ "pg_operator",
1363
+ "pg_statio_all_sequences",
1364
+ "pg_opfamily",
1365
+ "pg_opclass",
1366
+ "pg_am",
1367
+ "pg_amop",
1368
+ "pg_amproc",
1369
+ "pg_language",
1370
+ "pg_largeobject_metadata",
1371
+ "pg_aggregate",
1372
+ "pg_statistic_ext",
1373
+ "pg_rewrite",
1374
+ "pg_trigger",
1375
+ "pg_event_trigger",
1376
+ "pg_description",
1377
+ "pg_cast",
1378
+ "pg_enum",
1379
+ "pg_namespace",
1380
+ "pg_conversion",
1381
+ "pg_depend",
1382
+ "pg_database",
1383
+ "pg_db_role_setting",
1384
+ "pg_tablespace",
1385
+ "pg_auth_members",
1386
+ "pg_shdepend",
1387
+ "pg_shdescription",
1388
+ "pg_ts_config",
1389
+ "pg_ts_config_map",
1390
+ "pg_ts_dict",
1391
+ "pg_ts_parser",
1392
+ "pg_ts_template",
1393
+ "pg_extension",
1394
+ "pg_foreign_data_wrapper",
1395
+ "pg_foreign_server",
1396
+ "pg_policy",
1397
+ "pg_replication_origin",
1398
+ "pg_default_acl",
1399
+ "pg_init_privs",
1400
+ "pg_seclabel",
1401
+ "pg_shseclabel",
1402
+ "pg_collation",
1403
+ "pg_parameter_acl",
1404
+ "pg_partitioned_table",
1405
+ "pg_range",
1406
+ "pg_transform",
1407
+ "pg_sequence",
1408
+ "pg_publication",
1409
+ "pg_publication_namespace",
1410
+ "pg_publication_rel",
1411
+ "pg_subscription_rel",
1412
+ "pg_group",
1413
+ "pg_user",
1414
+ "pg_policies",
1415
+ "pg_rules",
1416
+ "pg_views",
1417
+ "pg_matviews",
1418
+ "pg_indexes",
1419
+ "pg_sequences",
1420
+ "pg_stats",
1421
+ "pg_stats_ext",
1422
+ "pg_stats_ext_exprs",
1423
+ "pg_publication_tables",
1424
+ "pg_locks",
1425
+ "pg_cursors",
1426
+ "pg_available_extensions",
1427
+ "pg_available_extension_versions",
1428
+ "pg_prepared_xacts",
1429
+ "pg_prepared_statements",
1430
+ "pg_seclabels",
1431
+ "pg_timezone_abbrevs",
1432
+ "pg_timezone_names",
1433
+ "pg_stat_all_tables",
1434
+ "pg_stat_xact_all_tables",
1435
+ "pg_stat_xact_user_tables",
1436
+ "pg_stat_sys_tables",
1437
+ "pg_stat_xact_sys_tables",
1438
+ "pg_stat_user_tables",
1439
+ "pg_statio_all_tables",
1440
+ "pg_statio_sys_tables",
1441
+ "pg_statio_user_tables",
1442
+ "pg_stat_all_indexes",
1443
+ "pg_stat_sys_indexes",
1444
+ "pg_stat_user_indexes",
1445
+ "pg_statio_all_indexes",
1446
+ "pg_statio_sys_indexes",
1447
+ "pg_statio_user_indexes",
1448
+ "pg_statio_sys_sequences",
1449
+ "pg_statio_user_sequences",
1450
+ "pg_stat_activity",
1451
+ "pg_stat_replication",
1452
+ "pg_stat_slru",
1453
+ "pg_stat_wal_receiver",
1454
+ "pg_stat_recovery_prefetch",
1455
+ "pg_stat_subscription",
1456
+ "pg_stat_ssl",
1457
+ "pg_stat_gssapi",
1458
+ "pg_replication_slots",
1459
+ "pg_stat_replication_slots",
1460
+ "pg_stat_database",
1461
+ "pg_stat_database_conflicts",
1462
+ "pg_stat_user_functions",
1463
+ "pg_stat_xact_user_functions",
1464
+ "pg_stat_archiver",
1465
+ "pg_stat_bgwriter",
1466
+ "pg_stat_io",
1467
+ "pg_stat_wal",
1468
+ "pg_stat_progress_analyze",
1469
+ "pg_stat_progress_vacuum",
1470
+ "pg_stat_progress_cluster",
1471
+ "pg_stat_progress_create_index",
1472
+ "pg_stat_progress_basebackup",
1473
+ "pg_stat_progress_copy",
1474
+ "pg_user_mappings",
1475
+ "pg_stat_subscription_stats",
1476
+ "pg_largeobject",
1477
+ ]);