@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,927 @@
1
+ import { SQL, is, sql } from "drizzle-orm";
2
+ import { CasingCache, toCamelCase, toSnakeCase } from "drizzle-orm/casing";
3
+ import { PgColumn, PgDialect, PgEnumColumn, PgMaterializedView, PgSchema, PgTable, PgView, getTableConfig, getViewConfig, index, integer, isPgEnum, isPgSequence, pgSchema, pgTable, varchar, } from "drizzle-orm/pg-core";
4
+ import { getReorgSequenceName, getReorgTableName } from "../onchain.js";
5
+ export const getReorgTable = (table) => {
6
+ const schema = getTableConfig(table).schema;
7
+ if (schema && schema !== "public") {
8
+ return pgSchema(schema).table(getReorgTableName(table), {
9
+ operation_id: integer()
10
+ .notNull()
11
+ .primaryKey()
12
+ .default(sql.raw(`nextval('"${schema}"."${getReorgSequenceName()}"')`)),
13
+ operation: integer().notNull().$type(),
14
+ checkpoint: varchar({ length: 75 }).notNull(),
15
+ }, (table) => [index().on(table.checkpoint)]);
16
+ }
17
+ return pgTable(getReorgTableName(table), {
18
+ operation_id: integer()
19
+ .notNull()
20
+ .primaryKey()
21
+ .default(sql.raw(`nextval('"${getReorgSequenceName()}"')`)),
22
+ operation: integer().notNull().$type(),
23
+ checkpoint: varchar({ length: 75 }).notNull(),
24
+ }, (table) => [index().on(table.checkpoint)]);
25
+ };
26
+ export const getSql = (schema) => {
27
+ const { tables, views, enums, schemas } = prepareFromExports(schema);
28
+ const json = generatePgSnapshot(tables, views, enums, schemas, "snake_case");
29
+ const squashed = squashPgScheme(json);
30
+ const jsonCreateIndexesForCreatedTables = Object.values(squashed.tables).flatMap((it) => {
31
+ // @ts-ignore
32
+ return preparePgCreateIndexesJson(it.name, it.schema, it.indexes);
33
+ });
34
+ const jsonCreateEnums = Object.values(squashed.enums).map((it) => {
35
+ // @ts-ignore
36
+ return prepareCreateEnumJson(it.name, it.schema, it.values);
37
+ }) ?? [];
38
+ const jsonCreateTables = Object.values(squashed.tables).map((it) => {
39
+ return preparePgCreateTableJson(it, json);
40
+ });
41
+ const jsonCreateViews = Object.values(squashed.views).map((it) => {
42
+ return preparePgCreateViewJson(it.name, it.schema, it.definition, it.materialized, it.withNoData, it.with, it.using, it.tablespace);
43
+ });
44
+ const fromJson = (statements) => statements
45
+ .flatMap((statement) => {
46
+ const filtered = convertors.filter((it) => {
47
+ return it.can(statement, "postgresql");
48
+ });
49
+ const convertor = filtered.length === 1 ? filtered[0] : undefined;
50
+ if (!convertor) {
51
+ return "";
52
+ }
53
+ return convertor.convert(statement);
54
+ })
55
+ .filter((it) => it !== "");
56
+ const combinedTables = jsonCreateTables.flatMap((statement) => [
57
+ statement,
58
+ createReorgTableStatement(statement),
59
+ ]);
60
+ return {
61
+ tables: {
62
+ sql: fromJson(combinedTables),
63
+ json: combinedTables,
64
+ },
65
+ views: { sql: fromJson(jsonCreateViews), json: jsonCreateViews },
66
+ enums: { sql: fromJson(jsonCreateEnums), json: jsonCreateEnums },
67
+ indexes: {
68
+ sql: fromJson(jsonCreateIndexesForCreatedTables),
69
+ json: jsonCreateIndexesForCreatedTables,
70
+ },
71
+ };
72
+ };
73
+ const createReorgTableStatement = (statement) => {
74
+ const reorgStatement = structuredClone(statement);
75
+ reorgStatement.compositePkName = undefined;
76
+ reorgStatement.compositePKs = [];
77
+ for (const column of reorgStatement.columns) {
78
+ column.primaryKey = false;
79
+ }
80
+ const reorgColumns = Object.values(squashPgScheme(generatePgSnapshot([
81
+ pgTable("", {
82
+ operation_id: integer()
83
+ .notNull()
84
+ .primaryKey()
85
+ .default(sql.raw(`nextval('"${statement.schema === "" ? "public" : statement.schema}"."${getReorgSequenceName()}"')`)),
86
+ operation: integer().notNull(),
87
+ checkpoint: varchar({ length: 75 }).notNull(),
88
+ }),
89
+ ], [], [], [], "snake_case")).tables)[0].columns;
90
+ reorgStatement.columns.push(...Object.values(reorgColumns));
91
+ reorgStatement.tableName = getReorgTableName(reorgStatement.tableName);
92
+ return reorgStatement;
93
+ };
94
+ const PgSquasher = {
95
+ squashIdx: (idx) => {
96
+ return `${idx.name};${idx.columns
97
+ .map((c) => `${c.expression}--${c.isExpression}--${c.asc}--${c.nulls}--${c.opclass && ""}`)
98
+ .join(",,")};${idx.isUnique};${idx.concurrently};${idx.method};${idx.where};${JSON.stringify(idx.with)}`;
99
+ },
100
+ unsquashIdx: (input) => {
101
+ const [name, columnsString, isUnique, concurrently, method, where, idxWith,] = input.split(";");
102
+ const columnString = columnsString.split(",,");
103
+ const columns = [];
104
+ for (const column of columnString) {
105
+ const [expression, isExpression, asc, nulls, opclass] = column.split("--");
106
+ columns.push({
107
+ nulls: nulls,
108
+ isExpression: isExpression === "true",
109
+ asc: asc === "true",
110
+ expression: expression,
111
+ opclass: opclass === "undefined" ? undefined : opclass,
112
+ });
113
+ }
114
+ return {
115
+ name,
116
+ columns,
117
+ isUnique: isUnique === "true",
118
+ concurrently: concurrently === "true",
119
+ method,
120
+ where: where === "undefined" ? undefined : where,
121
+ with: !idxWith || idxWith === "undefined" ? undefined : JSON.parse(idxWith),
122
+ };
123
+ },
124
+ squashPK: (pk) => {
125
+ return `${pk.columns.join(",")};${pk.name}`;
126
+ },
127
+ unsquashPK: (pk) => {
128
+ const splitted = pk.split(";");
129
+ return { name: splitted[1], columns: splitted[0].split(",") };
130
+ },
131
+ };
132
+ ////////
133
+ // Generator
134
+ ////////
135
+ const parseType = (schemaPrefix, type) => {
136
+ const pgNativeTypes = [
137
+ "uuid",
138
+ "smallint",
139
+ "integer",
140
+ "bigint",
141
+ "boolean",
142
+ "text",
143
+ "varchar",
144
+ "serial",
145
+ "bigserial",
146
+ "decimal",
147
+ "numeric",
148
+ "real",
149
+ "json",
150
+ "jsonb",
151
+ "time",
152
+ "time with time zone",
153
+ "time without time zone",
154
+ "time",
155
+ "timestamp",
156
+ "timestamp with time zone",
157
+ "timestamp without time zone",
158
+ "date",
159
+ "interval",
160
+ "bigint",
161
+ "bigserial",
162
+ "double precision",
163
+ "interval year",
164
+ "interval month",
165
+ "interval day",
166
+ "interval hour",
167
+ "interval minute",
168
+ "interval second",
169
+ "interval year to month",
170
+ "interval day to hour",
171
+ "interval day to minute",
172
+ "interval day to second",
173
+ "interval hour to minute",
174
+ "interval hour to second",
175
+ "interval minute to second",
176
+ ];
177
+ const arrayDefinitionRegex = /\[\d*(?:\[\d*\])*\]/g;
178
+ const arrayDefinition = (type.match(arrayDefinitionRegex) ?? []).join("");
179
+ const withoutArrayDefinition = type.replace(arrayDefinitionRegex, "");
180
+ return pgNativeTypes.some((it) => type.startsWith(it))
181
+ ? `${withoutArrayDefinition}${arrayDefinition}`
182
+ : `${schemaPrefix}"${withoutArrayDefinition}"${arrayDefinition}`;
183
+ };
184
+ class Convertor {
185
+ }
186
+ class PgCreateTableConvertor extends Convertor {
187
+ can(statement, dialect) {
188
+ return statement.type === "create_table" && dialect === "postgresql";
189
+ }
190
+ convert(st) {
191
+ const { tableName, schema, columns, compositePKs } = st;
192
+ let statement = "";
193
+ const name = schema ? `"${schema}"."${tableName}"` : `"${tableName}"`;
194
+ statement += `CREATE TABLE ${name} (\n`;
195
+ for (let i = 0; i < columns.length; i++) {
196
+ const column = columns[i];
197
+ const primaryKeyStatement = column.primaryKey ? " PRIMARY KEY" : "";
198
+ const notNullStatement = column.notNull && !column.identity ? " NOT NULL" : "";
199
+ const defaultStatement = column.default !== undefined ? ` DEFAULT ${column.default}` : "";
200
+ // const uniqueConstraint = column.isUnique
201
+ // ? ` CONSTRAINT "${column.uniqueName}" UNIQUE${column.nullsNotDistinct ? " NULLS NOT DISTINCT" : ""}`
202
+ // : "";
203
+ const schemaPrefix = column.typeSchema && column.typeSchema !== "public"
204
+ ? `"${column.typeSchema}".`
205
+ : "";
206
+ const type = parseType(schemaPrefix, column.type);
207
+ // const generated = column.generated;
208
+ // const generatedStatement = generated
209
+ // ? ` GENERATED ALWAYS AS (${generated?.as}) STORED`
210
+ // : "";
211
+ // const unsquashedIdentity = column.identity
212
+ // ? PgSquasher.unsquashIdentity(column.identity)
213
+ // : undefined;
214
+ // const identityWithSchema = schema
215
+ // ? `"${schema}"."${unsquashedIdentity?.name}"`
216
+ // : `"${unsquashedIdentity?.name}"`;
217
+ // const identity = unsquashedIdentity
218
+ // ? ` GENERATED ${
219
+ // unsquashedIdentity.type === "always" ? "ALWAYS" : "BY DEFAULT"
220
+ // } AS IDENTITY (sequence name ${identityWithSchema}${
221
+ // unsquashedIdentity.increment
222
+ // ? ` INCREMENT BY ${unsquashedIdentity.increment}`
223
+ // : ""
224
+ // }${
225
+ // unsquashedIdentity.minValue
226
+ // ? ` MINVALUE ${unsquashedIdentity.minValue}`
227
+ // : ""
228
+ // }${
229
+ // unsquashedIdentity.maxValue
230
+ // ? ` MAXVALUE ${unsquashedIdentity.maxValue}`
231
+ // : ""
232
+ // }${
233
+ // unsquashedIdentity.startWith
234
+ // ? ` START WITH ${unsquashedIdentity.startWith}`
235
+ // : ""
236
+ // }${unsquashedIdentity.cache ? ` CACHE ${unsquashedIdentity.cache}` : ""}${
237
+ // unsquashedIdentity.cycle ? " CYCLE" : ""
238
+ // })`
239
+ // : "";
240
+ statement += `\t"${column.name}" ${type}${primaryKeyStatement}${defaultStatement}${notNullStatement}`;
241
+ statement += i === columns.length - 1 ? "" : ",\n";
242
+ }
243
+ if (typeof compositePKs !== "undefined" && compositePKs.length > 0) {
244
+ statement += ",\n";
245
+ const compositePK = PgSquasher.unsquashPK(compositePKs[0]);
246
+ statement += `\tCONSTRAINT "${st.compositePkName}" PRIMARY KEY(\"${compositePK.columns.join(`","`)}\")`;
247
+ // statement += `\n`;
248
+ }
249
+ // if (
250
+ // typeof uniqueConstraints !== "undefined" &&
251
+ // uniqueConstraints.length > 0
252
+ // ) {
253
+ // for (const uniqueConstraint of uniqueConstraints) {
254
+ // statement += ",\n";
255
+ // const unsquashedUnique = PgSquasher.unsquashUnique(uniqueConstraint);
256
+ // statement += `\tCONSTRAINT "${unsquashedUnique.name}" UNIQUE${
257
+ // unsquashedUnique.nullsNotDistinct ? " NULLS NOT DISTINCT" : ""
258
+ // }(\"${unsquashedUnique.columns.join(`","`)}\")`;
259
+ // // statement += `\n`;
260
+ // }
261
+ // }
262
+ // if (
263
+ // typeof checkConstraints !== "undefined" &&
264
+ // checkConstraints.length > 0
265
+ // ) {
266
+ // for (const checkConstraint of checkConstraints) {
267
+ // statement += ",\n";
268
+ // const unsquashedCheck = PgSquasher.unsquashCheck(checkConstraint);
269
+ // statement += `\tCONSTRAINT "${unsquashedCheck.name}" CHECK (${unsquashedCheck.value})`;
270
+ // }
271
+ // }
272
+ statement += "\n);";
273
+ statement += "\n";
274
+ return statement;
275
+ }
276
+ }
277
+ class PgCreateViewConvertor extends Convertor {
278
+ can(statement, dialect) {
279
+ return statement.type === "create_view" && dialect === "postgresql";
280
+ }
281
+ convert(st) {
282
+ const { definition, name: viewName, schema, with: withOption, materialized, withNoData, tablespace, using, } = st;
283
+ const name = schema ? `"${schema}"."${viewName}"` : `"${viewName}"`;
284
+ let statement = materialized
285
+ ? `CREATE MATERIALIZED VIEW ${name}`
286
+ : `CREATE VIEW ${name}`;
287
+ if (using)
288
+ statement += ` USING "${using}"`;
289
+ const options = [];
290
+ if (withOption) {
291
+ statement += " WITH (";
292
+ Object.entries(withOption).forEach(([key, value]) => {
293
+ if (typeof value === "undefined")
294
+ return;
295
+ options.push(`${toSnakeCase(key)} = ${value}`);
296
+ });
297
+ statement += options.join(", ");
298
+ statement += ")";
299
+ }
300
+ if (tablespace)
301
+ statement += ` TABLESPACE ${tablespace}`;
302
+ statement += ` AS (${definition})`;
303
+ if (withNoData)
304
+ statement += " WITH NO DATA";
305
+ statement += ";";
306
+ return statement;
307
+ }
308
+ }
309
+ class CreateTypeEnumConvertor extends Convertor {
310
+ can(statement) {
311
+ return statement.type === "create_type_enum";
312
+ }
313
+ convert(st) {
314
+ const { name, values, schema } = st;
315
+ const enumNameWithSchema = schema ? `"${schema}"."${name}"` : `"${name}"`;
316
+ let valuesStatement = "(";
317
+ valuesStatement += values.map((it) => `'${it}'`).join(", ");
318
+ valuesStatement += ")";
319
+ // TODO do we need this?
320
+ // let statement = 'DO $$ BEGIN';
321
+ // statement += '\n';
322
+ const statement = `CREATE TYPE ${enumNameWithSchema} AS ENUM${valuesStatement};`;
323
+ // statement += '\n';
324
+ // statement += 'EXCEPTION';
325
+ // statement += '\n';
326
+ // statement += ' WHEN duplicate_object THEN null;';
327
+ // statement += '\n';
328
+ // statement += 'END $$;';
329
+ // statement += '\n';
330
+ return statement;
331
+ }
332
+ }
333
+ class CreatePgIndexConvertor extends Convertor {
334
+ can(statement, dialect) {
335
+ return statement.type === "create_index_pg" && dialect === "postgresql";
336
+ }
337
+ convert(statement) {
338
+ const { name, columns, isUnique, concurrently, with: withMap, method, where, } = statement.data;
339
+ // // since postgresql 9.5
340
+ const indexPart = isUnique ? "UNIQUE INDEX" : "INDEX";
341
+ const value = columns
342
+ .map((it) => `${it.isExpression ? it.expression : `"${it.expression}"`}${it.opclass ? ` ${it.opclass}` : it.asc ? "" : " DESC"}${(it.asc && it.nulls && it.nulls === "last") || it.opclass
343
+ ? ""
344
+ : ` NULLS ${it.nulls.toUpperCase()}`}`)
345
+ .join(",");
346
+ const tableNameWithSchema = statement.schema
347
+ ? `"${statement.schema}"."${statement.tableName}"`
348
+ : `"${statement.tableName}"`;
349
+ function reverseLogic(mappedWith) {
350
+ let reversedString = "";
351
+ for (const key in mappedWith) {
352
+ // biome-ignore lint/suspicious/noPrototypeBuiltins: <explanation>
353
+ if (mappedWith.hasOwnProperty(key)) {
354
+ reversedString += `${key}=${mappedWith[key]},`;
355
+ }
356
+ }
357
+ reversedString = reversedString.slice(0, -1);
358
+ return reversedString;
359
+ }
360
+ return `CREATE ${indexPart}${concurrently ? " CONCURRENTLY" : ""} IF NOT EXISTS "${name}" ON ${tableNameWithSchema} USING ${method} (${value})${Object.keys(withMap).length !== 0
361
+ ? ` WITH (${reverseLogic(withMap)})`
362
+ : ""}${where ? ` WHERE ${where}` : ""};`;
363
+ }
364
+ }
365
+ class PgCreateSchemaConvertor extends Convertor {
366
+ can(statement, dialect) {
367
+ return statement.type === "create_schema" && dialect === "postgresql";
368
+ }
369
+ convert(statement) {
370
+ const { name } = statement;
371
+ return `CREATE SCHEMA IF NOT EXISTS"${name}";\n`;
372
+ }
373
+ }
374
+ const convertors = [];
375
+ convertors.push(new PgCreateTableConvertor());
376
+ convertors.push(new PgCreateViewConvertor());
377
+ convertors.push(new CreateTypeEnumConvertor());
378
+ convertors.push(new CreatePgIndexConvertor());
379
+ convertors.push(new PgCreateSchemaConvertor());
380
+ const preparePgCreateTableJson = (table, json) => {
381
+ const { name, schema, columns, compositePrimaryKeys } = table;
382
+ const tableKey = `${schema || "public"}.${name}`;
383
+ // TODO: @AndriiSherman. We need this, will add test cases
384
+ const compositePkName = Object.values(compositePrimaryKeys).length > 0
385
+ ? json.tables[tableKey].compositePrimaryKeys[`${PgSquasher.unsquashPK(Object.values(compositePrimaryKeys)[0]).name}`].name
386
+ : "";
387
+ return {
388
+ type: "create_table",
389
+ tableName: name,
390
+ schema,
391
+ columns: Object.values(columns),
392
+ compositePKs: Object.values(compositePrimaryKeys),
393
+ compositePkName: compositePkName,
394
+ };
395
+ };
396
+ const preparePgCreateViewJson = (name, schema, definition, materialized, withNoData = false, withOption, using, tablespace) => {
397
+ return {
398
+ type: "create_view",
399
+ name: name,
400
+ schema: schema,
401
+ definition: definition,
402
+ with: withOption,
403
+ materialized: materialized,
404
+ withNoData,
405
+ using,
406
+ tablespace,
407
+ };
408
+ };
409
+ const preparePgCreateIndexesJson = (tableName, schema, indexes) => {
410
+ return Object.values(indexes).map((indexData) => {
411
+ return {
412
+ type: "create_index_pg",
413
+ tableName,
414
+ data: PgSquasher.unsquashIdx(indexData),
415
+ schema,
416
+ };
417
+ });
418
+ };
419
+ const prepareCreateEnumJson = (name, schema, values) => {
420
+ return {
421
+ type: "create_type_enum",
422
+ name: name,
423
+ schema: schema,
424
+ values,
425
+ };
426
+ };
427
+ const prepareFromExports = (exports) => {
428
+ const tables = [];
429
+ const enums = [];
430
+ const schemas = [];
431
+ const sequences = [];
432
+ const views = [];
433
+ const matViews = [];
434
+ const i0values = Object.values(exports);
435
+ i0values.forEach((t) => {
436
+ if (isPgEnum(t)) {
437
+ enums.push(t);
438
+ return;
439
+ }
440
+ if (is(t, PgTable)) {
441
+ tables.push(t);
442
+ }
443
+ if (is(t, PgSchema)) {
444
+ schemas.push(t);
445
+ }
446
+ if (is(t, PgView)) {
447
+ views.push(t);
448
+ }
449
+ if (is(t, PgMaterializedView)) {
450
+ matViews.push(t);
451
+ }
452
+ if (isPgSequence(t)) {
453
+ sequences.push(t);
454
+ }
455
+ });
456
+ return { tables, enums, schemas, sequences, views, matViews };
457
+ };
458
+ export function getColumnCasing(column, casing) {
459
+ if (!column.name)
460
+ return "";
461
+ return !column.keyAsName || casing === undefined
462
+ ? column.name
463
+ : casing === "camelCase"
464
+ ? toCamelCase(column.name)
465
+ : toSnakeCase(column.name);
466
+ }
467
+ const sqlToStr = (sql, casing) => {
468
+ return sql.toQuery({
469
+ escapeName: () => {
470
+ throw new Error("we don't support params for `sql` default values");
471
+ },
472
+ escapeParam: () => {
473
+ throw new Error("we don't support params for `sql` default values");
474
+ },
475
+ escapeString: () => {
476
+ throw new Error("we don't support params for `sql` default values");
477
+ },
478
+ casing: new CasingCache(casing),
479
+ }).sql;
480
+ };
481
+ function isPgArrayType(sqlType) {
482
+ return sqlType.match(/.*\[\d*\].*|.*\[\].*/g) !== null;
483
+ }
484
+ function buildArrayString(array, sqlType) {
485
+ sqlType = sqlType.split("[")[0];
486
+ const values = array
487
+ .map((value) => {
488
+ if (typeof value === "number" || typeof value === "bigint") {
489
+ return value.toString();
490
+ }
491
+ else if (typeof value === "boolean") {
492
+ return value ? "true" : "false";
493
+ }
494
+ else if (Array.isArray(value)) {
495
+ return buildArrayString(value, sqlType);
496
+ }
497
+ else if (value instanceof Date) {
498
+ if (sqlType === "date") {
499
+ return `"${value.toISOString().split("T")[0]}"`;
500
+ }
501
+ else if (sqlType === "timestamp") {
502
+ return `"${value.toISOString().replace("T", " ").slice(0, 23)}"`;
503
+ }
504
+ else {
505
+ return `"${value.toISOString()}"`;
506
+ }
507
+ }
508
+ else if (typeof value === "object") {
509
+ return `"${JSON.stringify(value).replaceAll('"', '\\"')}"`;
510
+ }
511
+ return `"${value}"`;
512
+ })
513
+ .join(",");
514
+ return `{${values}}`;
515
+ }
516
+ const indexName = (tableName, columns) => {
517
+ return `${tableName}_${columns.join("_")}_index`;
518
+ };
519
+ const generatePgSnapshot = (tables, views, enums, schemas, casing) => {
520
+ const dialect = new PgDialect({ casing });
521
+ const result = {};
522
+ const resultViews = {};
523
+ // This object stores unique names for indexes and will be used to detect if you have the same names for indexes
524
+ // within the same PostgreSQL schema
525
+ const indexesInSchema = {};
526
+ for (const table of tables) {
527
+ const { name: tableName, columns, indexes, schema, primaryKeys, } = getTableConfig(table);
528
+ const columnsObject = {};
529
+ const indexesObject = {};
530
+ const primaryKeysObject = {};
531
+ columns.forEach((column) => {
532
+ const name = getColumnCasing(column, casing);
533
+ const notNull = column.notNull;
534
+ const primaryKey = column.primary;
535
+ const sqlTypeLowered = column.getSQLType().toLowerCase();
536
+ const typeSchema = is(column, PgEnumColumn)
537
+ ? column.enum.schema || "public"
538
+ : undefined;
539
+ const columnToSet = {
540
+ name,
541
+ type: column.getSQLType(),
542
+ typeSchema: typeSchema,
543
+ primaryKey,
544
+ notNull,
545
+ };
546
+ if (column.default !== undefined) {
547
+ if (is(column.default, SQL)) {
548
+ columnToSet.default = sqlToStr(column.default, casing);
549
+ }
550
+ else {
551
+ if (typeof column.default === "string") {
552
+ columnToSet.default = `'${column.default}'`;
553
+ }
554
+ else {
555
+ if (sqlTypeLowered === "jsonb" || sqlTypeLowered === "json") {
556
+ columnToSet.default = `'${JSON.stringify(column.default)}'::${sqlTypeLowered}`;
557
+ }
558
+ else if (column.default instanceof Date) {
559
+ if (sqlTypeLowered === "date") {
560
+ columnToSet.default = `'${column.default.toISOString().split("T")[0]}'`;
561
+ }
562
+ else if (sqlTypeLowered === "timestamp") {
563
+ columnToSet.default = `'${column.default.toISOString().replace("T", " ").slice(0, 23)}'`;
564
+ }
565
+ else {
566
+ columnToSet.default = `'${column.default.toISOString()}'`;
567
+ }
568
+ }
569
+ else if (isPgArrayType(sqlTypeLowered) &&
570
+ Array.isArray(column.default)) {
571
+ columnToSet.default = `'${buildArrayString(column.default, sqlTypeLowered)}'`;
572
+ }
573
+ else {
574
+ // Should do for all types
575
+ // columnToSet.default = `'${column.default}'::${sqlTypeLowered}`;
576
+ columnToSet.default = column.default;
577
+ }
578
+ }
579
+ }
580
+ }
581
+ columnsObject[name] = columnToSet;
582
+ });
583
+ primaryKeys.map((pk) => {
584
+ const originalColumnNames = pk.columns.map((c) => c.name);
585
+ const columnNames = pk.columns.map((c) => getColumnCasing(c, casing));
586
+ let name = pk.getName();
587
+ if (casing !== undefined) {
588
+ for (let i = 0; i < originalColumnNames.length; i++) {
589
+ name = name.replace(originalColumnNames[i], columnNames[i]);
590
+ }
591
+ }
592
+ primaryKeysObject[name] = {
593
+ name,
594
+ columns: columnNames,
595
+ };
596
+ });
597
+ indexes.forEach((value) => {
598
+ const columns = value.config.columns;
599
+ const indexColumnNames = [];
600
+ columns.forEach((it) => {
601
+ const name = getColumnCasing(it, casing);
602
+ indexColumnNames.push(name);
603
+ });
604
+ const name = value.config.name
605
+ ? value.config.name
606
+ : indexName(tableName, indexColumnNames);
607
+ const indexColumns = columns.map((it) => {
608
+ if (is(it, SQL)) {
609
+ return {
610
+ expression: dialect.sqlToQuery(it, "indexes").sql,
611
+ asc: true,
612
+ isExpression: true,
613
+ nulls: "last",
614
+ };
615
+ }
616
+ else {
617
+ it = it;
618
+ return {
619
+ expression: getColumnCasing(it, casing),
620
+ isExpression: false,
621
+ // @ts-ignore
622
+ asc: it.indexConfig?.order === "asc",
623
+ // @ts-ignore
624
+ nulls: it.indexConfig?.nulls
625
+ ? // @ts-ignore
626
+ it.indexConfig?.nulls
627
+ : // @ts-ignore
628
+ it.indexConfig?.order === "desc"
629
+ ? "first"
630
+ : "last",
631
+ // @ts-ignore
632
+ opclass: it.indexConfig?.opClass,
633
+ };
634
+ }
635
+ });
636
+ // check for index names duplicates
637
+ if (typeof indexesInSchema[schema ?? "public"] !== "undefined") {
638
+ indexesInSchema[schema ?? "public"].push(name);
639
+ }
640
+ else {
641
+ indexesInSchema[schema ?? "public"] = [name];
642
+ }
643
+ indexesObject[name] = {
644
+ name,
645
+ columns: indexColumns,
646
+ isUnique: value.config.unique ?? false,
647
+ where: value.config.where
648
+ ? dialect.sqlToQuery(value.config.where).sql
649
+ : undefined,
650
+ concurrently: value.config.concurrently ?? false,
651
+ method: value.config.method ?? "btree",
652
+ with: value.config.with ?? {},
653
+ };
654
+ });
655
+ const tableKey = `${schema ?? "public"}.${tableName}`;
656
+ result[tableKey] = {
657
+ name: tableName,
658
+ schema: schema ?? "",
659
+ columns: columnsObject,
660
+ indexes: indexesObject,
661
+ compositePrimaryKeys: primaryKeysObject,
662
+ };
663
+ }
664
+ const combinedViews = [...views];
665
+ for (const view of combinedViews) {
666
+ // @ts-ignore
667
+ // biome-ignore lint/suspicious/noImplicitAnyLet: <explanation>
668
+ // biome-ignore lint/style/useConst: <explanation>
669
+ let viewName;
670
+ // @ts-ignore
671
+ // biome-ignore lint/suspicious/noImplicitAnyLet: <explanation>
672
+ // biome-ignore lint/style/useConst: <explanation>
673
+ let schema;
674
+ // @ts-ignore
675
+ // biome-ignore lint/suspicious/noImplicitAnyLet: <explanation>
676
+ // biome-ignore lint/style/useConst: <explanation>
677
+ let query;
678
+ // @ts-ignore
679
+ // biome-ignore lint/suspicious/noImplicitAnyLet: <explanation>
680
+ // biome-ignore lint/style/useConst: <explanation>
681
+ let selectedFields;
682
+ // @ts-ignore
683
+ // biome-ignore lint/suspicious/noImplicitAnyLet: <explanation>
684
+ // biome-ignore lint/style/useConst: <explanation>
685
+ let isExisting;
686
+ // @ts-ignore
687
+ // biome-ignore lint/suspicious/noImplicitAnyLet: <explanation>
688
+ // biome-ignore lint/style/useConst: <explanation>
689
+ let withOption;
690
+ // @ts-ignore
691
+ // biome-ignore lint/suspicious/noImplicitAnyLet: <explanation>
692
+ // biome-ignore lint/style/useConst: <explanation>
693
+ let tablespace;
694
+ // @ts-ignore
695
+ // biome-ignore lint/suspicious/noImplicitAnyLet: <explanation>
696
+ // biome-ignore lint/style/useConst: <explanation>
697
+ let using;
698
+ // @ts-ignore
699
+ // biome-ignore lint/suspicious/noImplicitAnyLet: <explanation>
700
+ // biome-ignore lint/style/useConst: <explanation>
701
+ let withNoData;
702
+ const materialized = false;
703
+ // if (is(view, PgView)) {
704
+ ({
705
+ name: viewName,
706
+ schema,
707
+ query,
708
+ selectedFields,
709
+ isExisting,
710
+ with: withOption,
711
+ } = getViewConfig(view));
712
+ // } else {
713
+ // ({ name: viewName, schema, query, selectedFields, isExisting, with: withOption, tablespace, using, withNoData } =
714
+ // getMaterializedViewConfig(view));
715
+ // materialized = true;
716
+ // }
717
+ const viewSchema = schema ?? "public";
718
+ const viewKey = `${viewSchema}.${viewName}`;
719
+ const columnsObject = {};
720
+ // const uniqueConstraintObject: Record<string, UniqueConstraint> = {};
721
+ // const existingView = resultViews[viewKey];
722
+ // if (typeof existingView !== 'undefined') {
723
+ // console.log(
724
+ // `\n${
725
+ // withStyle.errorWarning(
726
+ // `We\'ve found duplicated view name across ${
727
+ // chalk.underline.blue(schema ?? 'public')
728
+ // } schema. Please rename your view`,
729
+ // )
730
+ // }`,
731
+ // );
732
+ // process.exit(1);
733
+ // }
734
+ for (const key in selectedFields) {
735
+ if (is(selectedFields[key], PgColumn)) {
736
+ const column = selectedFields[key];
737
+ const notNull = column.notNull;
738
+ const primaryKey = column.primary;
739
+ const sqlTypeLowered = column.getSQLType().toLowerCase();
740
+ const typeSchema = is(column, PgEnumColumn)
741
+ ? column.enum.schema || "public"
742
+ : undefined;
743
+ // const generated = column.generated;
744
+ // const identity = column.generatedIdentity;
745
+ // const increment = stringFromIdentityProperty(identity?.sequenceOptions?.increment) ?? '1';
746
+ // const minValue = stringFromIdentityProperty(identity?.sequenceOptions?.minValue)
747
+ // ?? (Number.parseFloat(increment) < 0 ? minRangeForIdentityBasedOn(column.columnType) : '1');
748
+ // const maxValue = stringFromIdentityProperty(identity?.sequenceOptions?.maxValue)
749
+ // ?? (Number.parseFloat(increment) < 0 ? '-1' : maxRangeForIdentityBasedOn(column.getSQLType()));
750
+ // const startWith = stringFromIdentityProperty(identity?.sequenceOptions?.startWith)
751
+ // ?? (Number.parseFloat(increment) < 0 ? maxValue : minValue);
752
+ // const cache = stringFromIdentityProperty(identity?.sequenceOptions?.cache) ?? '1';
753
+ const columnToSet = {
754
+ name: column.name,
755
+ type: column.getSQLType(),
756
+ typeSchema: typeSchema,
757
+ primaryKey,
758
+ notNull,
759
+ // generated: generated
760
+ // ? {
761
+ // as: is(generated.as, SQL)
762
+ // ? dialect.sqlToQuery(generated.as as SQL).sql
763
+ // : typeof generated.as === 'function'
764
+ // ? dialect.sqlToQuery(generated.as() as SQL).sql
765
+ // : (generated.as as any),
766
+ // type: 'stored',
767
+ // }
768
+ // : undefined,
769
+ // identity: identity
770
+ // ? {
771
+ // type: identity.type,
772
+ // name: identity.sequenceName ?? `${viewName}_${column.name}_seq`,
773
+ // schema: schema ?? 'public',
774
+ // increment,
775
+ // startWith,
776
+ // minValue,
777
+ // maxValue,
778
+ // cache,
779
+ // cycle: identity?.sequenceOptions?.cycle ?? false,
780
+ // }
781
+ // : undefined,
782
+ };
783
+ // if (column.isUnique) {
784
+ // // const existingUnique = uniqueConstraintObject[column.uniqueName!];
785
+ // // if (typeof existingUnique !== 'undefined') {
786
+ // // console.log(
787
+ // // `\n${
788
+ // // withStyle.errorWarning(
789
+ // // `We\'ve found duplicated unique constraint names in ${chalk.underline.blue(viewName)} table.
790
+ // // The unique constraint ${chalk.underline.blue(column.uniqueName)} on the ${
791
+ // // chalk.underline.blue(
792
+ // // column.name,
793
+ // // )
794
+ // // } column is conflicting with a unique constraint name already defined for ${
795
+ // // chalk.underline.blue(existingUnique.columns.join(','))
796
+ // // } columns\n`,
797
+ // // )
798
+ // // }`,
799
+ // // );
800
+ // // process.exit(1);
801
+ // // }
802
+ // uniqueConstraintObject[column.uniqueName!] = {
803
+ // name: column.uniqueName!,
804
+ // nullsNotDistinct: column.uniqueType === 'not distinct',
805
+ // columns: [columnToSet.name],
806
+ // };
807
+ // }
808
+ if (column.default !== undefined) {
809
+ if (is(column.default, SQL)) {
810
+ columnToSet.default = sqlToStr(column.default, casing);
811
+ }
812
+ else {
813
+ if (typeof column.default === "string") {
814
+ columnToSet.default = `'${column.default}'`;
815
+ }
816
+ else {
817
+ if (sqlTypeLowered === "jsonb" || sqlTypeLowered === "json") {
818
+ columnToSet.default = `'${JSON.stringify(column.default)}'::${sqlTypeLowered}`;
819
+ }
820
+ else if (column.default instanceof Date) {
821
+ if (sqlTypeLowered === "date") {
822
+ columnToSet.default = `'${column.default.toISOString().split("T")[0]}'`;
823
+ }
824
+ else if (sqlTypeLowered === "timestamp") {
825
+ columnToSet.default = `'${column.default.toISOString().replace("T", " ").slice(0, 23)}'`;
826
+ }
827
+ else {
828
+ columnToSet.default = `'${column.default.toISOString()}'`;
829
+ }
830
+ }
831
+ else if (isPgArrayType(sqlTypeLowered) &&
832
+ Array.isArray(column.default)) {
833
+ columnToSet.default = `'${buildArrayString(column.default, sqlTypeLowered)}'`;
834
+ }
835
+ else {
836
+ // Should do for all types
837
+ // columnToSet.default = `'${column.default}'::${sqlTypeLowered}`;
838
+ columnToSet.default = column.default;
839
+ }
840
+ }
841
+ }
842
+ }
843
+ columnsObject[column.name] = columnToSet;
844
+ }
845
+ }
846
+ resultViews[viewKey] = {
847
+ columns: columnsObject,
848
+ definition: isExisting ? undefined : dialect.sqlToQuery(query).sql,
849
+ name: viewName,
850
+ schema: viewSchema,
851
+ isExisting,
852
+ with: withOption,
853
+ withNoData,
854
+ materialized,
855
+ tablespace,
856
+ using,
857
+ };
858
+ }
859
+ const enumsToReturn = enums.reduce((map, obj) => {
860
+ const enumSchema = obj.schema || "public";
861
+ const key = `${enumSchema}.${obj.enumName}`;
862
+ map[key] = {
863
+ name: obj.enumName,
864
+ schema: enumSchema,
865
+ values: obj.enumValues,
866
+ };
867
+ return map;
868
+ }, {});
869
+ const schemasObject = Object.fromEntries(schemas
870
+ .filter((it) => {
871
+ return it.schemaName !== "public";
872
+ })
873
+ .map((it) => [it.schemaName, it.schemaName]));
874
+ return {
875
+ version: "7",
876
+ dialect: "postgresql",
877
+ tables: result,
878
+ enums: enumsToReturn,
879
+ schemas: schemasObject,
880
+ views: resultViews,
881
+ };
882
+ };
883
+ const mapValues = (obj, map) => {
884
+ const result = Object.keys(obj).reduce((result, key) => {
885
+ result[key] = map(obj[key]);
886
+ return result;
887
+ }, {});
888
+ return result;
889
+ };
890
+ const squashPgScheme = (json) => {
891
+ const mappedTables = Object.fromEntries(Object.entries(json.tables).map((it) => {
892
+ const squashedIndexes = mapValues(it[1].indexes, (index) => {
893
+ return PgSquasher.squashIdx(index);
894
+ });
895
+ const squashedPKs = mapValues(it[1].compositePrimaryKeys, (pk) => {
896
+ return PgSquasher.squashPK(pk);
897
+ });
898
+ const mappedColumns = Object.fromEntries(Object.entries(it[1].columns).map((it) => {
899
+ return [
900
+ it[0],
901
+ {
902
+ ...it[1],
903
+ identity: undefined,
904
+ },
905
+ ];
906
+ }));
907
+ return [
908
+ it[0],
909
+ {
910
+ name: it[1].name,
911
+ schema: it[1].schema,
912
+ columns: mappedColumns,
913
+ indexes: squashedIndexes,
914
+ compositePrimaryKeys: squashedPKs,
915
+ },
916
+ ];
917
+ }));
918
+ return {
919
+ version: "7",
920
+ dialect: json.dialect,
921
+ tables: mappedTables,
922
+ enums: json.enums,
923
+ schemas: json.schemas,
924
+ views: json.views,
925
+ };
926
+ };
927
+ //# sourceMappingURL=index.js.map