iterate 0.2.7 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/README.md +86 -76
  2. package/THIRD_PARTY_NOTICES.md +55 -0
  3. package/bin/iterate.js +11 -3
  4. package/dist/api-url-B6404M82.mjs +17 -0
  5. package/dist/api-url-B6404M82.mjs.map +1 -0
  6. package/dist/app-ref-BipL0feU.mjs +35 -0
  7. package/dist/app-ref-BipL0feU.mjs.map +1 -0
  8. package/dist/app-ref-C1CrgXqX.mjs +7 -0
  9. package/dist/app-ref-C1CrgXqX.mjs.map +1 -0
  10. package/dist/app-ref-DYai_om1.mjs +7 -0
  11. package/dist/app-ref-DYai_om1.mjs.map +1 -0
  12. package/dist/cli-D0c-pDL_.mjs +1010 -0
  13. package/dist/cli-D0c-pDL_.mjs.map +1 -0
  14. package/dist/client.d.ts +3 -0
  15. package/dist/client.mjs +4 -0
  16. package/dist/cloudflare-BTm90gQ4.mjs +951 -0
  17. package/dist/cloudflare-BTm90gQ4.mjs.map +1 -0
  18. package/dist/contract-s4FW4eES.mjs +309 -0
  19. package/dist/contract-s4FW4eES.mjs.map +1 -0
  20. package/dist/document-review/index.d.ts +5 -0
  21. package/dist/document-review/types.d.ts +107 -0
  22. package/dist/document-review.mjs +7015 -0
  23. package/dist/document-review.mjs.map +1 -0
  24. package/dist/durable-object-processor-durability-CNsTjAJS.mjs +205 -0
  25. package/dist/durable-object-processor-durability-CNsTjAJS.mjs.map +1 -0
  26. package/dist/idempotency-DleloJNt.mjs +28 -0
  27. package/dist/idempotency-DleloJNt.mjs.map +1 -0
  28. package/dist/index.mjs +1 -1
  29. package/dist/itx/api-url.d.ts +6 -0
  30. package/dist/itx/itx-node-client.d.ts +65 -0
  31. package/dist/itx/itx-session.d.ts +215 -0
  32. package/dist/itx/owned-rpc-session.d.ts +14 -0
  33. package/dist/itx/query-client.d.ts +10 -0
  34. package/dist/itx-api.generated.d.ts +6195 -0
  35. package/dist/itx-session-sjud8GiT.mjs +534 -0
  36. package/dist/itx-session-sjud8GiT.mjs.map +1 -0
  37. package/dist/live-state-BJNqOwFw.mjs +299 -0
  38. package/dist/live-state-BJNqOwFw.mjs.map +1 -0
  39. package/dist/next/api.d.ts +479 -0
  40. package/dist/next/api.mjs +0 -0
  41. package/dist/next/app-server.d.ts +44 -0
  42. package/dist/next/app-server.mjs +479 -0
  43. package/dist/next/app-server.mjs.map +1 -0
  44. package/dist/next/app-session.d.ts +49 -0
  45. package/dist/next/app-session.mjs +238 -0
  46. package/dist/next/app-session.mjs.map +1 -0
  47. package/dist/next/app.d.ts +29 -0
  48. package/dist/next/app.mjs +141 -0
  49. package/dist/next/app.mjs.map +1 -0
  50. package/dist/next/client/live-state.d.ts +63 -0
  51. package/dist/next/client/oauth.d.ts +12 -0
  52. package/dist/next/client/react.d.ts +109 -0
  53. package/dist/next/client/socket.d.ts +6 -0
  54. package/dist/next/client.mjs +156 -0
  55. package/dist/next/client.mjs.map +1 -0
  56. package/dist/next/expression.d.ts +146 -0
  57. package/dist/next/expression.mjs +399 -0
  58. package/dist/next/expression.mjs.map +1 -0
  59. package/dist/next/lib.d.ts +56 -0
  60. package/dist/next/lib.mjs +199 -0
  61. package/dist/next/lib.mjs.map +1 -0
  62. package/dist/next/oauth-scopes.d.ts +32 -0
  63. package/dist/next/oauth-scopes.mjs +40 -0
  64. package/dist/next/oauth-scopes.mjs.map +1 -0
  65. package/dist/next/oauth.mjs +29 -0
  66. package/dist/next/oauth.mjs.map +1 -0
  67. package/dist/next/principal.d.ts +64 -0
  68. package/dist/next/principal.mjs +98 -0
  69. package/dist/next/principal.mjs.map +1 -0
  70. package/dist/next/project-ingress.d.ts +37 -0
  71. package/dist/next/project-ingress.mjs +75 -0
  72. package/dist/next/project-ingress.mjs.map +1 -0
  73. package/dist/next/react.mjs +285 -0
  74. package/dist/next/react.mjs.map +1 -0
  75. package/dist/next/sdk/auth.d.ts +5 -0
  76. package/dist/next/sdk/index.d.ts +112 -0
  77. package/dist/next/sdk.mjs +139 -0
  78. package/dist/next/sdk.mjs.map +1 -0
  79. package/dist/next/stream/processor.d.ts +378 -0
  80. package/dist/next/stream/processor.mjs +582 -0
  81. package/dist/next/stream/processor.mjs.map +1 -0
  82. package/dist/next/stream/run.d.ts +58 -0
  83. package/dist/next/stream/run.mjs +40 -0
  84. package/dist/next/stream/run.mjs.map +1 -0
  85. package/dist/next-node.d.ts +15 -0
  86. package/dist/next-node.mjs +51 -0
  87. package/dist/next-node.mjs.map +1 -0
  88. package/dist/node.d.ts +3 -0
  89. package/dist/node.mjs +185 -0
  90. package/dist/node.mjs.map +1 -0
  91. package/dist/processor-host-capabilities-BMFH3KTM.mjs +56 -0
  92. package/dist/processor-host-capabilities-BMFH3KTM.mjs.map +1 -0
  93. package/dist/processors/cloudflare.d.ts +3 -0
  94. package/dist/processors/durable-object-processor-durability.d.ts +79 -0
  95. package/dist/processors/event-consumption-metrics.d.ts +82 -0
  96. package/dist/processors/idempotency.d.ts +13 -0
  97. package/dist/processors/index.d.ts +12 -0
  98. package/dist/processors/processor-contracts.d.ts +342 -0
  99. package/dist/processors/processor-facet.d.ts +186 -0
  100. package/dist/processors/processor-host-capabilities.d.ts +60 -0
  101. package/dist/processors/prompt-sections.d.ts +17 -0
  102. package/dist/processors/rpc-types.d.ts +515 -0
  103. package/dist/processors/schemas.d.ts +102 -0
  104. package/dist/processors/stream-handle.d.ts +45 -0
  105. package/dist/processors/stream-processor-keepalive.d.ts +95 -0
  106. package/dist/processors/stream-processor-registry.d.ts +233 -0
  107. package/dist/processors/stream-processor-runner.d.ts +289 -0
  108. package/dist/processors/stream-processor.d.ts +339 -0
  109. package/dist/processors/stream-runtime-metrics.d.ts +107 -0
  110. package/dist/processors/testing.d.ts +302 -0
  111. package/dist/processors-BoNyeBfQ.mjs +10 -0
  112. package/dist/processors-BoNyeBfQ.mjs.map +1 -0
  113. package/dist/processors-cloudflare.mjs +3 -0
  114. package/dist/processors-testing.mjs +435 -0
  115. package/dist/processors-testing.mjs.map +1 -0
  116. package/dist/processors.mjs +52 -0
  117. package/dist/processors.mjs.map +1 -0
  118. package/dist/protocol-DnK_f2m6.mjs +251 -0
  119. package/dist/protocol-DnK_f2m6.mjs.map +1 -0
  120. package/dist/sdk/capnweb/index.d.ts +2 -0
  121. package/dist/sdk/capnweb/live-state/compact.d.ts +5 -0
  122. package/dist/sdk/capnweb/live-state/diff.d.ts +41 -0
  123. package/dist/sdk/capnweb/live-state/engine.d.ts +44 -0
  124. package/dist/sdk/capnweb/live-state/index.d.ts +41 -0
  125. package/dist/sdk/capnweb/live-state/protocol.d.ts +87 -0
  126. package/dist/sdk/capnweb/live-state/retain.d.ts +23 -0
  127. package/dist/sdk/capnweb/live-state/store.d.ts +20 -0
  128. package/dist/sdk/capnweb/live-state/types.d.ts +11 -0
  129. package/dist/sdk/capnweb/react.d.ts +45 -0
  130. package/dist/sdk/capnweb/react.mjs +316 -0
  131. package/dist/sdk/capnweb/react.mjs.map +1 -0
  132. package/dist/sdk/capnweb.mjs +4 -0
  133. package/dist/sdk/itx/react.d.ts +191 -0
  134. package/dist/sdk/itx/react.mjs +383 -0
  135. package/dist/sdk/itx/react.mjs.map +1 -0
  136. package/dist/sdk-DMB-IM11.mjs +933 -0
  137. package/dist/sdk-DMB-IM11.mjs.map +1 -0
  138. package/dist/sdk.d.ts +339 -0
  139. package/dist/sdk.mjs +2 -0
  140. package/dist/serve-itx.d.ts +46 -0
  141. package/dist/starter-apps/flake-dashboard/app-ref.d.ts +31 -0
  142. package/dist/starter-apps/flake-dashboard/configured-worker.mjs +1055 -0
  143. package/dist/starter-apps/flake-dashboard/configured-worker.mjs.map +1 -0
  144. package/dist/starter-apps/flake-dashboard/contract.d.ts +4839 -0
  145. package/dist/starter-apps/flake-dashboard/contract.mjs +2 -0
  146. package/dist/starter-apps/flake-dashboard/index.d.ts +17 -0
  147. package/dist/starter-apps/flake-dashboard/index.mjs +56 -0
  148. package/dist/starter-apps/flake-dashboard/index.mjs.map +1 -0
  149. package/dist/starter-apps/flake-dashboard/worker.d.ts +4607 -0
  150. package/dist/starter-apps/github-ai-linter/ai-linter.d.ts +8914 -0
  151. package/dist/starter-apps/github-ai-linter/configured-worker.mjs +17987 -0
  152. package/dist/starter-apps/github-ai-linter/configured-worker.mjs.map +1 -0
  153. package/dist/starter-apps/github-ai-linter/contract.d.ts +9193 -0
  154. package/dist/starter-apps/github-ai-linter/index.d.ts +10 -0
  155. package/dist/starter-apps/github-ai-linter/index.mjs +36 -0
  156. package/dist/starter-apps/github-ai-linter/index.mjs.map +1 -0
  157. package/dist/starter-apps/github-ai-linter/prompt.d.ts +13 -0
  158. package/dist/starter-apps/github-ai-linter/review-bot.d.ts +808 -0
  159. package/dist/starter-apps/github-ai-linter/rules.d.ts +34 -0
  160. package/dist/starter-apps/github-ai-linter/worker-ref.d.ts +19 -0
  161. package/dist/starter-apps/github-ai-linter/worker.d.ts +19 -0
  162. package/dist/starter-apps/github-ai-linter/worker.mjs +947 -0
  163. package/dist/starter-apps/github-ai-linter/worker.mjs.map +1 -0
  164. package/dist/starter-apps/guestbook/app-ref.d.ts +27 -0
  165. package/dist/starter-apps/guestbook/client.d.ts +7 -0
  166. package/dist/starter-apps/guestbook/client.mjs +59 -0
  167. package/dist/starter-apps/guestbook/configured-worker.mjs +205 -0
  168. package/dist/starter-apps/guestbook/configured-worker.mjs.map +1 -0
  169. package/dist/starter-apps/guestbook/index.d.ts +9 -0
  170. package/dist/starter-apps/guestbook/index.mjs +31 -0
  171. package/dist/starter-apps/guestbook/index.mjs.map +1 -0
  172. package/dist/starter-apps/guestbook/processor.d.ts +2267 -0
  173. package/dist/starter-apps/guestbook/worker.d.ts +26 -0
  174. package/dist/starter-apps/guestbook/worker.mjs +191 -0
  175. package/dist/starter-apps/guestbook/worker.mjs.map +1 -0
  176. package/dist/starter-apps/media/configured-worker.mjs +577 -0
  177. package/dist/starter-apps/media/configured-worker.mjs.map +1 -0
  178. package/dist/starter-apps/media/index.mjs +36 -0
  179. package/dist/starter-apps/media/index.mjs.map +1 -0
  180. package/dist/starter-apps/media/ref.mjs +20 -0
  181. package/dist/starter-apps/media/ref.mjs.map +1 -0
  182. package/dist/starter-apps/media/worker.mjs +579 -0
  183. package/dist/starter-apps/media/worker.mjs.map +1 -0
  184. package/dist/starter-apps/notes/configured-worker.mjs +6134 -0
  185. package/dist/starter-apps/notes/configured-worker.mjs.map +1 -0
  186. package/dist/starter-apps/notes/index.mjs +23 -0
  187. package/dist/starter-apps/notes/index.mjs.map +1 -0
  188. package/dist/starter-apps/notes/ref.mjs +21 -0
  189. package/dist/starter-apps/notes/ref.mjs.map +1 -0
  190. package/dist/starter-apps/notes/worker.mjs +427 -0
  191. package/dist/starter-apps/notes/worker.mjs.map +1 -0
  192. package/dist/starter-apps/todo/client.mjs +59 -0
  193. package/dist/starter-apps/todo/configured-worker.mjs +2864 -0
  194. package/dist/starter-apps/todo/configured-worker.mjs.map +1 -0
  195. package/dist/starter-apps/todo/index.d.ts +8 -0
  196. package/dist/starter-apps/todo/index.mjs +29 -0
  197. package/dist/starter-apps/todo/index.mjs.map +1 -0
  198. package/dist/stream-processor-keepalive-DAQTP6m3.mjs +2082 -0
  199. package/dist/stream-processor-keepalive-DAQTP6m3.mjs.map +1 -0
  200. package/dist/usingCtx-inzbY1Qz.mjs +57 -0
  201. package/dist/usingCtx-mZx5nsAW.mjs +11800 -0
  202. package/dist/usingCtx-mZx5nsAW.mjs.map +1 -0
  203. package/dist/worker-ref-DZxPDmb_.mjs +390 -0
  204. package/dist/worker-ref-DZxPDmb_.mjs.map +1 -0
  205. package/menubar/Iterate.entitlements +12 -0
  206. package/menubar/Iterate.swift +914 -0
  207. package/menubar/IterateIcon.swift +145 -0
  208. package/menubar/README.md +28 -0
  209. package/menubar/build-menubar-app.sh +59 -0
  210. package/package.json +235 -18
  211. package/dist/cli-DMS4kJph.mjs +0 -868
  212. package/dist/cli-DMS4kJph.mjs.map +0 -1
  213. package/dist/config-DtnR7Lv7.mjs +0 -170
  214. package/dist/config-DtnR7Lv7.mjs.map +0 -1
  215. package/dist/index.d.mts.map +0 -1
  216. package/dist/stream-tui/agent-chat-terminal.d.mts +0 -1
  217. package/dist/stream-tui/agent-chat-terminal.mjs +0 -933
  218. package/dist/stream-tui/agent-chat-terminal.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configured-worker.mjs","names":["#client","stripSqlComments","scanSqlIgnoredRange","scanQuotedSql","scanBracketedSqlIdentifier","scanSqlLineComment","scanSqlBlockComment","_","K","u","C","c","I","F","S","H","M","L","n","P","l","A","_","M","S","U","I","r","s","L","P","C","t","N","n","K","defineConfig","defineConfigFs","#db","#live","#load","#refresh","todoClientSource","#app","#liveState"],"sources":["../../../../../node_modules/.pnpm/sqlfu@0.1.1_@opentelemetry+api@1.9.0_@trpc+server@11.12.0_typescript@5.9.3__@valibot+to_ee11eb6f7603427d35b5576eef14168d/node_modules/sqlfu/dist/sql.js","../../../../../node_modules/.pnpm/sqlfu@0.1.1_@opentelemetry+api@1.9.0_@trpc+server@11.12.0_typescript@5.9.3__@valibot+to_ee11eb6f7603427d35b5576eef14168d/node_modules/sqlfu/dist/util.js","../../../../../node_modules/.pnpm/sqlfu@0.1.1_@opentelemetry+api@1.9.0_@trpc+server@11.12.0_typescript@5.9.3__@valibot+to_ee11eb6f7603427d35b5576eef14168d/node_modules/sqlfu/dist/naming.js","../../../../../node_modules/.pnpm/sqlfu@0.1.1_@opentelemetry+api@1.9.0_@trpc+server@11.12.0_typescript@5.9.3__@valibot+to_ee11eb6f7603427d35b5576eef14168d/node_modules/sqlfu/dist/errors.js","../../../../../node_modules/.pnpm/sqlfu@0.1.1_@opentelemetry+api@1.9.0_@trpc+server@11.12.0_typescript@5.9.3__@valibot+to_ee11eb6f7603427d35b5576eef14168d/node_modules/sqlfu/dist/otel.js","../../../../../node_modules/.pnpm/sqlfu@0.1.1_@opentelemetry+api@1.9.0_@trpc+server@11.12.0_typescript@5.9.3__@valibot+to_ee11eb6f7603427d35b5576eef14168d/node_modules/sqlfu/dist/instrument.js","../../../../../node_modules/.pnpm/sqlfu@0.1.1_@opentelemetry+api@1.9.0_@trpc+server@11.12.0_typescript@5.9.3__@valibot+to_ee11eb6f7603427d35b5576eef14168d/node_modules/sqlfu/dist/adapter-errors.js","../../../../../node_modules/.pnpm/sqlfu@0.1.1_@opentelemetry+api@1.9.0_@trpc+server@11.12.0_typescript@5.9.3__@valibot+to_ee11eb6f7603427d35b5576eef14168d/node_modules/sqlfu/dist/sql-params.js","../../../../../node_modules/.pnpm/sqlfu@0.1.1_@opentelemetry+api@1.9.0_@trpc+server@11.12.0_typescript@5.9.3__@valibot+to_ee11eb6f7603427d35b5576eef14168d/node_modules/sqlfu/dist/sqlite-text.js","../../../../../node_modules/.pnpm/sqlfu@0.1.1_@opentelemetry+api@1.9.0_@trpc+server@11.12.0_typescript@5.9.3__@valibot+to_ee11eb6f7603427d35b5576eef14168d/node_modules/sqlfu/dist/adapters/durable-object.js","../../../../../node_modules/.pnpm/sqlfu@0.1.1_@opentelemetry+api@1.9.0_@trpc+server@11.12.0_typescript@5.9.3__@valibot+to_ee11eb6f7603427d35b5576eef14168d/node_modules/sqlfu/dist/vendor/sql-formatter/sqlFormatter.js","../../../../../node_modules/.pnpm/sqlfu@0.1.1_@opentelemetry+api@1.9.0_@trpc+server@11.12.0_typescript@5.9.3__@valibot+to_ee11eb6f7603427d35b5576eef14168d/node_modules/sqlfu/dist/vendor/sql-formatter/languages/postgresql/postgresql.formatter.js","../../../../../node_modules/.pnpm/sqlfu@0.1.1_@opentelemetry+api@1.9.0_@trpc+server@11.12.0_typescript@5.9.3__@valibot+to_ee11eb6f7603427d35b5576eef14168d/node_modules/sqlfu/dist/vendor/sql-formatter/languages/sqlite/sqlite.formatter.js","../../../../../node_modules/.pnpm/sqlfu@0.1.1_@opentelemetry+api@1.9.0_@trpc+server@11.12.0_typescript@5.9.3__@valibot+to_ee11eb6f7603427d35b5576eef14168d/node_modules/sqlfu/dist/dual-dispatch.js","../../../../../node_modules/.pnpm/sqlfu@0.1.1_@opentelemetry+api@1.9.0_@trpc+server@11.12.0_typescript@5.9.3__@valibot+to_ee11eb6f7603427d35b5576eef14168d/node_modules/sqlfu/dist/migrations/preset-queries.js","../../../../../node_modules/.pnpm/sqlfu@0.1.1_@opentelemetry+api@1.9.0_@trpc+server@11.12.0_typescript@5.9.3__@valibot+to_ee11eb6f7603427d35b5576eef14168d/node_modules/sqlfu/dist/paths.js","../../../../../node_modules/.pnpm/sqlfu@0.1.1_@opentelemetry+api@1.9.0_@trpc+server@11.12.0_typescript@5.9.3__@valibot+to_ee11eb6f7603427d35b5576eef14168d/node_modules/sqlfu/dist/config.js","../../../../../node_modules/.pnpm/sqlfu@0.1.1_@opentelemetry+api@1.9.0_@trpc+server@11.12.0_typescript@5.9.3__@valibot+to_ee11eb6f7603427d35b5576eef14168d/node_modules/sqlfu/dist/vendor/sha256.js","../../../../../node_modules/.pnpm/sqlfu@0.1.1_@opentelemetry+api@1.9.0_@trpc+server@11.12.0_typescript@5.9.3__@valibot+to_ee11eb6f7603427d35b5576eef14168d/node_modules/sqlfu/dist/migrations/index.js","../../../../../node_modules/.pnpm/sqlfu@0.1.1_@opentelemetry+api@1.9.0_@trpc+server@11.12.0_typescript@5.9.3__@valibot+to_ee11eb6f7603427d35b5576eef14168d/node_modules/sqlfu/dist/config-inline.js","../../../../../node_modules/.pnpm/sqlfu@0.1.1_@opentelemetry+api@1.9.0_@trpc+server@11.12.0_typescript@5.9.3__@valibot+to_ee11eb6f7603427d35b5576eef14168d/node_modules/sqlfu/dist/index.js","../../../src/starter-apps/todo/worker.ts"],"sourcesContent":["const emptyFragment = { sql: '', args: [] };\nexport class AsyncBoundRows {\n query;\n #client;\n constructor(client, query) {\n this.#client = client;\n this.query = query;\n }\n then(onfulfilled, onrejected) {\n try {\n return Promise.resolve(this.#client.all(this.query)).then(onfulfilled, onrejected);\n }\n catch (error) {\n return Promise.reject(error).then(onfulfilled, onrejected);\n }\n }\n catch(onrejected) {\n return this.then(undefined, onrejected);\n }\n finally(onfinally) {\n return Promise.resolve(this.then((value) => value)).finally(onfinally ?? undefined);\n }\n}\nexport class SyncBoundRows {\n query;\n #client;\n constructor(client, query) {\n this.#client = client;\n this.query = query;\n }\n then(onfulfilled, onrejected) {\n try {\n return Promise.resolve(this.#client.all(this.query)).then(onfulfilled, onrejected);\n }\n catch (error) {\n return Promise.reject(error).then(onfulfilled, onrejected);\n }\n }\n catch(onrejected) {\n return this.then(undefined, onrejected);\n }\n finally(onfinally) {\n return Promise.resolve(this.then((value) => value)).finally(onfinally ?? undefined);\n }\n}\nexport function isSqlFragment(value) {\n return Boolean(value &&\n typeof value === 'object' &&\n 'sql' in value &&\n 'args' in value &&\n Array.isArray(value.args));\n}\nfunction runtimeSql(strings, ...values) {\n let text = '';\n const args = [];\n for (const [index, chunk] of strings.entries()) {\n text += chunk;\n if (index >= values.length) {\n continue;\n }\n const value = values[index];\n if (isSqlFragment(value)) {\n text += value.sql;\n args.push(...value.args);\n continue;\n }\n text += '?';\n args.push(value);\n }\n return { sql: collapseWhitespace(stripSqlComments(text)), args };\n}\nexport const sql = Object.assign(runtimeSql, {\n many: modeSqlTag('many'),\n nullableOne: modeSqlTag('nullableOne'),\n one: modeSqlTag('one'),\n run: modeSqlTag('metadata'),\n metadata: modeSqlTag('metadata'),\n});\nfunction modeSqlTag(mode) {\n return ((strings, ...values) => {\n return { ...runtimeSql(strings, ...values), mode };\n });\n}\nexport function raw(value) {\n return { sql: value, args: [] };\n}\nexport function join(values, separator = ', ') {\n if (values.length === 0) {\n return emptyFragment;\n }\n let text = '';\n const args = [];\n values.forEach((value, index) => {\n if (index > 0) {\n text += separator;\n }\n if (isSqlFragment(value)) {\n text += value.sql;\n args.push(...value.args);\n return;\n }\n text += '?';\n args.push(value);\n });\n return { sql: text, args };\n}\nexport function bindSyncSql(client) {\n const boundSql = (strings, ...values) => new SyncBoundRows(client, sql(strings, ...values));\n boundSql.all = (strings, ...values) => client.all(sql(strings, ...values));\n boundSql.run = (strings, ...values) => client.run(sql(strings, ...values));\n return boundSql;\n}\nexport function bindAsyncSql(client) {\n const boundSql = (strings, ...values) => new AsyncBoundRows(client, sql(strings, ...values));\n boundSql.all = (strings, ...values) => client.all(sql(strings, ...values));\n boundSql.run = (strings, ...values) => client.run(sql(strings, ...values));\n return boundSql;\n}\nfunction collapseWhitespace(value) {\n return value.replace(/\\s+/g, ' ').trim();\n}\n/**\n * Remove sql comments before whitespace collapsing — otherwise a `--` line\n * comment swallows everything after it once newlines become spaces. Respects\n * string literals and quoted identifiers so `--` inside them survives.\n */\nfunction stripSqlComments(value) {\n let out = '';\n let i = 0;\n while (i < value.length) {\n const char = value[i];\n const next = value[i + 1];\n if (char === '-' && next === '-') {\n const lineEnd = value.indexOf('\\n', i + 2);\n if (lineEnd === -1)\n break;\n i = lineEnd;\n continue;\n }\n if (char === '/' && next === '*') {\n const end = value.indexOf('*/', i + 2);\n out += ' ';\n i = end === -1 ? value.length : end + 2;\n continue;\n }\n if (char === \"'\" || char === '\"' || char === '`') {\n const end = scanQuoted(value, i, char);\n out += value.slice(i, end);\n i = end;\n continue;\n }\n if (char === '$') {\n // Postgres dollar-quoted strings ($$...$$, $tag$...$tag$) are data;\n // @sqlfu/pg shares this tag. Null means \"not a dollar string\" (e.g. a\n // $1 placeholder) and the $ is treated as a plain character.\n const end = scanDollarQuoted(value, i);\n if (end !== null) {\n out += value.slice(i, end);\n i = end;\n continue;\n }\n }\n if (char === '[') {\n const end = value.indexOf(']', i + 1);\n const stop = end === -1 ? value.length : end + 1;\n out += value.slice(i, stop);\n i = stop;\n continue;\n }\n out += char;\n i += 1;\n }\n return out;\n}\nfunction scanDollarQuoted(value, start) {\n let cursor = start + 1;\n while (cursor < value.length) {\n const char = value[cursor];\n if (char === '$') {\n const tag = value.slice(start, cursor + 1);\n const end = value.indexOf(tag, cursor + 1);\n return end === -1 ? null : end + tag.length;\n }\n if (!/[A-Za-z0-9_]/.test(char))\n return null;\n cursor += 1;\n }\n return null;\n}\nfunction scanQuoted(value, start, quote) {\n let cursor = start + 1;\n while (cursor < value.length) {\n if (value[cursor] === quote) {\n if (value[cursor + 1] === quote) {\n cursor += 2;\n continue;\n }\n return cursor + 1;\n }\n cursor += 1;\n }\n return value.length;\n}\n","/**\n * Tagged-template dedent. Strips the common leading whitespace from every\n * non-empty line so SQL and other multi-line strings can be indented in\n * source without that indentation landing in the runtime value.\n */\nexport function dedent(strings, ...values) {\n const raw = strings.reduce((accumulator, part, index) => {\n const value = index < values.length ? String(values[index]) : '';\n return accumulator + part + value;\n }, '');\n return dedentString(raw);\n}\nfunction dedentString(value) {\n const lines = value.split('\\n');\n const indents = lines.filter((line) => line.trim().length > 0).map((line) => line.match(/^[\\t ]*/)?.[0].length ?? 0);\n const minIndent = indents.length > 0 ? Math.min(...indents) : 0;\n return lines.map((line) => line.slice(minIndent)).join('\\n');\n}\n/**\n * Normalize SQL for identity hashing. Dedents, trims, and collapses\n * internal whitespace so cosmetic formatting nudges don't change the\n * resulting hash.\n */\nexport function normalizeSqlForHash(sql) {\n return dedentString(sql).trim().replace(/\\s+/g, ' ');\n}\n/**\n * 7-character hex hash over the input. djb2 — deterministic, synchronous,\n * runtime-agnostic (works in node, bun, workerd, expo). Used to distinguish\n * ad-hoc queries in observability without overwhelming dashboard cardinality.\n */\nexport function shortHash(value) {\n let hash = 5381;\n for (let index = 0; index < value.length; index += 1) {\n hash = ((hash * 33) ^ value.charCodeAt(index)) | 0;\n }\n return (hash >>> 0).toString(16).padStart(8, '0').slice(0, 7);\n}\n","/**\n * Inspired by github.com/mmkal/pgkit/tree/main/src/pgkit/packages/client/src/naming.ts\n *\n * Modifications for sqlfu:\n * - focused on migration SQL naming rather than general query naming\n * - keeps only a short slug from the first statement\n * - falls back to `migration` instead of hashing\n */\nimport { normalizeSqlForHash, shortHash } from './util.js';\nconst tokenize = (sql) => {\n const tokens = [];\n let index = 0;\n while (index < sql.length) {\n if (/\\s/.test(sql[index])) {\n index += 1;\n continue;\n }\n if (sql[index] === '-' && sql[index + 1] === '-') {\n while (index < sql.length && sql[index] !== '\\n') {\n index += 1;\n }\n continue;\n }\n if (sql[index] === '/' && sql[index + 1] === '*') {\n index += 2;\n while (index < sql.length && !(sql[index] === '*' && sql[index + 1] === '/')) {\n index += 1;\n }\n index += 2;\n continue;\n }\n if (sql[index] === '\"') {\n index += 1;\n let identifier = '';\n while (index < sql.length && sql[index] !== '\"') {\n identifier += sql[index];\n index += 1;\n }\n index += 1;\n tokens.push(identifier);\n continue;\n }\n if (sql[index] === \"'\") {\n index += 1;\n while (index < sql.length) {\n if (sql[index] === \"'\" && sql[index + 1] === \"'\") {\n index += 2;\n continue;\n }\n if (sql[index] === \"'\") {\n index += 1;\n break;\n }\n index += 1;\n }\n continue;\n }\n if ('();,=<>!+-*/.'.includes(sql[index])) {\n tokens.push(sql[index]);\n index += 1;\n continue;\n }\n if (/[\\w$]/.test(sql[index])) {\n let word = '';\n while (index < sql.length && /[\\w$]/.test(sql[index])) {\n word += sql[index];\n index += 1;\n }\n tokens.push(word);\n continue;\n }\n index += 1;\n }\n return tokens;\n};\nexport function migrationNickname(sql) {\n const tokens = tokenize(sql);\n const parts = [];\n for (let index = 0; index < tokens.length; index += 1) {\n const token = tokens[index];\n const lower = token.toLowerCase();\n if (token === ';') {\n break;\n }\n const pushNextIdentifier = () => {\n const candidate = tokens[index + 1];\n if (!candidate) {\n return;\n }\n if (/^[;,()=<>!+\\-*/.]+$/.test(candidate)) {\n return;\n }\n parts.push(candidate.toLowerCase());\n index += 1;\n };\n if ((lower === 'create' || lower === 'alter' || lower === 'drop') && tokens[index + 1]) {\n const next = tokens[index + 1].toLowerCase();\n if (next === 'table' || next === 'index' || next === 'view' || next === 'trigger') {\n parts.push(`${lower}_${next}`);\n index += 1;\n pushNextIdentifier();\n continue;\n }\n }\n if (lower === 'add' && tokens[index + 1]?.toLowerCase() === 'column') {\n parts.push('add_column');\n index += 1;\n pushNextIdentifier();\n continue;\n }\n if (lower === 'rename' && tokens[index + 1]?.toLowerCase() === 'to') {\n parts.push('rename_to');\n index += 1;\n pushNextIdentifier();\n continue;\n }\n if (lower === 'update' || lower === 'into' || lower === 'from') {\n parts.push(lower);\n pushNextIdentifier();\n continue;\n }\n }\n const slug = parts\n .join('_')\n .replace(/[^a-z0-9_]+/g, '_')\n .replace(/^_+|_+$/g, '');\n return slug || 'migration';\n}\nexport function queryNickname(sql) {\n const tokens = tokenize(sql);\n const parts = [];\n for (let index = 0; index < tokens.length; index += 1) {\n const token = tokens[index];\n const lower = token.toLowerCase();\n if (token === ';') {\n break;\n }\n const nextIdentifier = () => {\n for (let offset = 1; offset <= 2; offset += 1) {\n const candidate = tokens[index + offset];\n if (!candidate) {\n return undefined;\n }\n if (/^[;,()=<>!+\\-*/.]+$/.test(candidate)) {\n continue;\n }\n return candidate.toLowerCase();\n }\n return undefined;\n };\n if (lower === 'select') {\n const fromIndex = tokens.slice(index + 1).findIndex((candidate) => candidate.toLowerCase() === 'from');\n if (fromIndex !== -1) {\n index += fromIndex + 1;\n const relation = nextIdentifier();\n if (relation) {\n parts.push('list', relation);\n break;\n }\n }\n }\n if (lower === 'insert' && tokens[index + 1]?.toLowerCase() === 'into') {\n index += 1;\n parts.push('insert', nextIdentifier() ?? 'query');\n break;\n }\n if (lower === 'update') {\n parts.push('update', nextIdentifier() ?? 'query');\n break;\n }\n if (lower === 'delete') {\n const fromIndex = tokens.slice(index + 1).findIndex((candidate) => candidate.toLowerCase() === 'from');\n if (fromIndex !== -1) {\n index += fromIndex + 1;\n }\n parts.push('delete', nextIdentifier() ?? 'query');\n break;\n }\n }\n const slug = parts\n .join('-')\n .replace(/[^a-z0-9-]+/g, '-')\n .replace(/^-+|-+$/g, '');\n return slug || 'query';\n}\n/** one hundred positive adjectives, comma-separated, which are all different from each other */\nexport const adjectives = 'admirable,adored,affable,agreeable,amazing,amiable,angelic,appealing,astonishing,astute,authentic,awesome,beauteous,beloved,blissful,bold,brave,bright,brilliant,bubbly,calm,capable,celebrated,charming,cheerful,classy,clever,compassionate,confident,considerate,courageous,creative,credible,dazzling,dear,delightful,dependable,devoted,dynamic,eager,earnest,easygoing,elegant,enchanting,encouraging,energetic,engaging,excellent,exceptional,fabulous,fair,faithful,fantastic,fine,friendly,funny,generous,gentle,genuine,gifted,glad,glorious,goodhearted,graceful,gracious,great,happy,harmonious,helpful,honest,hopeful,imaginative,impressive,incredible,insightful,inspiring,intelligent,joyful,kind,lively,lovable,lovely,loyal,marvelous,neat,noble,optimistic,outstanding,peaceful,pleasant,polished,positive,radiant,remarkable,resilient,spectacular,splendid,stellar,terrific,thoughtful,vibrant,wonderful'.split(',');\nexport const animals = 'aardvark,alligator,alpaca,antelope,armadillo,badger,bat,bear,beaver,bison,buffalo,butterfly,camel,cat,cheetah,chicken,chimpanzee,cobra,cougar,cow,coyote,crocodile,deer,dog,dolphin,donkey,duck,eagle,elephant,falcon,ferret,flamingo,fox,frog,gazelle,giraffe,goat,gorilla,hamster,hawk,hedgehog,hippopotamus,horse,hyena,iguana,jaguar,jellyfish,kangaroo,koala,leopard,lion,lizard,llama,lobster,lynx,meerkat,monkey,moose,mouse,octopus,otter,owl,panda,panther,parrot,peacock,pelican,penguin,pig,pigeon,polar bear,pony,porcupine,rabbit,raccoon,rat,raven,reindeer,rhinoceros,salmon,seal,shark,sheep,skunk,sloth,snail,snake,sparrow,spider,squid,squirrel,swan,tiger,toad,turkey,turtle,walrus,whale,wolf,wombat,zebra'.split(',');\nexport function generateRandomName(rng = Math.random) {\n return `${adjectives[Math.floor(rng() * adjectives.length)]} ${animals[Math.floor(rng() * animals.length)]}`;\n}\n/**\n * Span-name derivation for observability hooks. Named queries get their\n * author-given name verbatim; ad-hoc queries get a readable nickname plus a\n * stable short hash of the (normalized) parameterized SQL, so the same\n * ad-hoc call site buckets together across different parameter values.\n *\n * `client.raw()` is not uniquely identified — the raw SQL string has values\n * interpolated into it, so the hash becomes per-value. If you need named\n * observability on dynamic SQL, pass a `name` on the SqlQuery directly:\n * `client.run({ sql, args, name: 'myQuery' })`.\n */\nexport function spanNameFor(query) {\n if (query.name) {\n return query.name;\n }\n const nickname = queryNickname(query.sql);\n const hash = shortHash(normalizeSqlForHash(query.sql));\n return `sql-${nickname}-${hash}`;\n}\n","/**\n * Every sqlfu adapter throws this. `kind` is the normalized discriminator;\n * `cause` preserves the driver's original error byte-identical so users who\n * need adapter-specific fields (`rawCode`, `errcode`, `resultCode`, etc.)\n * still have a path. `query` and `system` are on the error itself so a\n * plain `catch` block can tag a query name or system without restructuring\n * around the hook API.\n *\n * `message` and `stack` come from the driver error verbatim — the user's\n * call-site frame is the first useful frame, and sqlfu internals would be\n * noise in production stacks.\n */\nexport class SqlfuError extends Error {\n kind;\n query;\n system;\n cause;\n constructor(params) {\n super(extractMessage(params.cause));\n this.name = 'SqlfuError';\n this.kind = params.kind;\n this.query = params.query;\n this.system = params.system;\n this.cause = params.cause;\n const driverStack = extractStack(params.cause);\n if (driverStack)\n this.stack = driverStack;\n }\n}\n/** Normalize a sqlite driver error onto `SqlfuError`. Idempotent. */\nexport function mapSqliteDriverError(error, context) {\n if (error instanceof SqlfuError)\n return error;\n return new SqlfuError({\n kind: classifySqliteError(error),\n query: context.query,\n system: context.system,\n cause: error,\n });\n}\nfunction classifySqliteError(error) {\n const numericCode = extractNumericCode(error);\n if (numericCode != null) {\n const kind = kindFromNumericCode(numericCode);\n if (kind)\n return kind;\n }\n const extendedString = extractExtendedCodeString(error);\n if (extendedString) {\n const kind = kindFromExtendedCodeString(extendedString);\n if (kind)\n return kind;\n }\n // Message-substring fallback. Motivated by adapters that surface errors as\n // plain `Error` objects with no structured code (D1, expo-sqlite, and any\n // future driver whose transport strips the numeric code). SQLite's message\n // strings come from the C library itself, so drift risk is low; the\n // per-adapter integration sweep in test/errors.test.ts catches any that do.\n return kindFromMessage(extractMessage(error));\n}\n// SQLite extended result codes. https://www.sqlite.org/rescode.html\nfunction kindFromNumericCode(code) {\n switch (code) {\n // Constraint kinds. primary_key collapses into unique_violation —\n // from a product POV both are \"that row already exists\".\n case 1555: // SQLITE_CONSTRAINT_PRIMARYKEY\n case 2067: // SQLITE_CONSTRAINT_UNIQUE\n return 'unique_violation';\n case 1299: // SQLITE_CONSTRAINT_NOTNULL\n return 'not_null_violation';\n case 787: // SQLITE_CONSTRAINT_FOREIGNKEY\n return 'foreign_key_violation';\n case 275: // SQLITE_CONSTRAINT_CHECK\n return 'check_violation';\n // Transient kinds (BUSY/LOCKED families).\n case 5: // SQLITE_BUSY\n case 261: // SQLITE_BUSY_RECOVERY\n case 517: // SQLITE_BUSY_SNAPSHOT\n case 773: // SQLITE_BUSY_TIMEOUT\n case 6: // SQLITE_LOCKED\n case 262: // SQLITE_LOCKED_SHAREDCACHE\n case 518: // SQLITE_LOCKED_VTAB\n return 'transient';\n }\n // Base constraint code (19) is ambiguous — defer to extended string / message.\n return null;\n}\nfunction kindFromExtendedCodeString(code) {\n if (code === 'SQLITE_CONSTRAINT_PRIMARYKEY' || code === 'SQLITE_CONSTRAINT_UNIQUE')\n return 'unique_violation';\n if (code === 'SQLITE_CONSTRAINT_NOTNULL')\n return 'not_null_violation';\n if (code === 'SQLITE_CONSTRAINT_FOREIGNKEY')\n return 'foreign_key_violation';\n if (code === 'SQLITE_CONSTRAINT_CHECK')\n return 'check_violation';\n if (code === 'SQLITE_BUSY' || code.startsWith('SQLITE_BUSY_'))\n return 'transient';\n if (code === 'SQLITE_LOCKED' || code.startsWith('SQLITE_LOCKED_'))\n return 'transient';\n return null;\n}\nfunction kindFromMessage(message) {\n const lower = message.toLowerCase();\n if (lower.includes('no such table'))\n return 'missing_table';\n if (lower.includes('no such column'))\n return 'missing_column';\n if (lower.includes('syntax error'))\n return 'syntax';\n if (lower.includes('unique constraint failed'))\n return 'unique_violation';\n if (lower.includes('not null constraint failed'))\n return 'not_null_violation';\n if (lower.includes('foreign key constraint failed'))\n return 'foreign_key_violation';\n if (lower.includes('check constraint failed'))\n return 'check_violation';\n if (lower.includes('database is locked') || lower.includes('busy'))\n return 'transient';\n return 'unknown';\n}\nfunction extractNumericCode(error) {\n if (!error || typeof error !== 'object')\n return null;\n const bag = error;\n // Different drivers expose the numeric extended result code under different keys.\n // node:sqlite → errcode\n // libsql, @libsql/client, durable-object → rawCode\n // sqlite-wasm → resultCode\n for (const key of ['rawCode', 'errcode', 'resultCode']) {\n const value = bag[key];\n if (typeof value === 'number')\n return value;\n }\n // @libsql/client's LibsqlError wraps a better-sqlite3-style SqliteError on `cause`.\n const cause = bag.cause;\n if (cause && typeof cause === 'object') {\n for (const key of ['rawCode', 'errcode', 'resultCode']) {\n const value = cause[key];\n if (typeof value === 'number')\n return value;\n }\n }\n return null;\n}\nfunction extractExtendedCodeString(error) {\n if (!error || typeof error !== 'object')\n return null;\n const bag = error;\n // better-sqlite3 / libsql put the extended code string on `.code`.\n // @libsql/client's top-level `.code` is the *base* category; the extended\n // string lives on `.cause.code`. Prefer the nested one when present.\n const direct = typeof bag.code === 'string' ? bag.code : null;\n const cause = bag.cause;\n const nested = cause && typeof cause === 'object' && typeof cause.code === 'string'\n ? cause.code\n : null;\n return nested || direct;\n}\nfunction extractMessage(error) {\n if (error instanceof Error)\n return error.message;\n if (typeof error === 'string')\n return error;\n return String(error);\n}\nfunction extractStack(error) {\n if (error instanceof Error && typeof error.stack === 'string')\n return error.stack;\n return undefined;\n}\n","import { spanNameFor } from './naming.js';\n/**\n * Reference OTel hook. Emits a span per query with `db.query.summary`,\n * `db.query.text`, `db.system.name`; records exceptions and sets ERROR\n * status on throw.\n *\n * This is a deliberately small and readable reference implementation. If\n * your team has different conventions (different attribute names, extra\n * resource attributes, custom span kind, sampling hints, etc.), copy this\n * function body into your codebase and edit it — that's expected and fine.\n * `QueryExecutionHook` is a stable contract; `createOtelHook` is one way\n * to satisfy it, not the only way.\n */\nexport function createOtelHook(options) {\n // OTel's SpanStatusCode: UNSET = 0, OK = 1, ERROR = 2. Inlined so the\n // library doesn't need to import from @opentelemetry/api.\n const OTEL_STATUS_OK = 1;\n const OTEL_STATUS_ERROR = 2;\n const { tracer } = options;\n return {\n sync: ({ context, execute }) => {\n const name = spanNameFor(context.query);\n return tracer.startActiveSpan(name, (span) => {\n setQueryAttributes(span, context);\n try {\n const value = execute();\n span.setStatus({ code: OTEL_STATUS_OK });\n span.end();\n return value;\n }\n catch (error) {\n span.recordException(error);\n span.setStatus({ code: OTEL_STATUS_ERROR, message: String(error) });\n span.end();\n throw error;\n }\n });\n },\n async: ({ context, execute }) => {\n const name = spanNameFor(context.query);\n return tracer.startActiveSpan(name, async (span) => {\n setQueryAttributes(span, context);\n try {\n const value = await execute();\n span.setStatus({ code: OTEL_STATUS_OK });\n span.end();\n return value;\n }\n catch (error) {\n span.recordException(error);\n span.setStatus({ code: OTEL_STATUS_ERROR, message: String(error) });\n span.end();\n throw error;\n }\n });\n },\n };\n}\nfunction setQueryAttributes(span, context) {\n if (context.query.name) {\n span.setAttribute('db.query.summary', context.query.name);\n }\n span.setAttribute('db.query.text', context.query.sql);\n span.setAttribute('db.system.name', context.system);\n}\n","import { bindAsyncSql, bindSyncSql } from './sql.js';\nimport { createOtelHook } from './otel.js';\nexport function instrumentClient(client, hook) {\n if (client.sync) {\n return instrumentSync(client, syncHookFrom(hook));\n }\n return instrumentAsync(client, asyncHookFrom(hook));\n}\n/**\n * Run `hooks` left-to-right, each wrapping the next. The first hook is the\n * outermost — it sees the call before any others and gets the final result\n * or error last.\n */\nexport function composeSyncHooks(...hooks) {\n if (hooks.length === 0) {\n return ({ execute }) => execute();\n }\n if (hooks.length === 1) {\n return syncHookFrom(hooks[0]);\n }\n const syncHooks = hooks.map(syncHookFrom);\n return (args) => {\n let chained = args.execute;\n for (let index = syncHooks.length - 1; index >= 0; index -= 1) {\n const hook = syncHooks[index];\n const next = chained;\n chained = () => hook({ ...args, execute: next });\n }\n return chained();\n };\n}\n/**\n * Async variant of `composeSyncHooks`. The first hook is still outermost.\n */\nexport function composeAsyncHooks(...hooks) {\n if (hooks.length === 0) {\n return ({ execute }) => execute();\n }\n if (hooks.length === 1) {\n return asyncHookFrom(hooks[0]);\n }\n const asyncHooks = hooks.map(asyncHookFrom);\n return (args) => {\n let chained = args.execute;\n for (let index = asyncHooks.length - 1; index >= 0; index -= 1) {\n const hook = asyncHooks[index];\n const next = chained;\n chained = () => hook({ ...args, execute: next });\n }\n return chained();\n };\n}\nexport function composeHooks(...hooks) {\n return {\n sync: composeSyncHooks(...hooks),\n async: composeAsyncHooks(...hooks),\n };\n}\n/**\n * Reference error-reporter hook. Invokes `report` whenever a query throws\n * (or its promise rejects), then always rethrows so higher hooks (and the\n * caller) still see the error. `report`'s return value is discarded; any\n * promise it returns is not awaited.\n *\n * Like `createOtelHook`, this is a deliberately small reference impl — if\n * you want extra context (breadcrumbs, rate limiting, redaction), copy\n * this body and edit it.\n *\n * Useful for Sentry-style capture without pulling Sentry into the library:\n * `createErrorReporterHook(({ context, error }) => Sentry.captureException(error, { tags: { 'db.query.summary': context.query.name || 'sql' } }))`.\n */\nexport function createErrorReporterHook(report) {\n return {\n sync: ({ context, execute }) => {\n try {\n return execute();\n }\n catch (error) {\n try {\n report({ context, error });\n }\n catch {\n // the error handler itself failing shouldn't mask the original error\n }\n throw error;\n }\n },\n async: async ({ context, execute }) => {\n try {\n return await execute();\n }\n catch (error) {\n try {\n report({ context, error });\n }\n catch {\n // the error handler itself failing shouldn't mask the original error\n }\n throw error;\n }\n },\n };\n}\nfunction buildSyncHookArgs(context, execute) {\n return { context, execute };\n}\nfunction buildAsyncHookArgs(context, execute) {\n return { context, execute };\n}\nfunction instrumentAsync(client, hook) {\n const wrapped = {\n driver: client.driver,\n system: client.system,\n sync: false,\n all: (query) => hook(buildAsyncHookArgs({ query, operation: 'all', system: client.system }, () => client.all(query))),\n run: (query) => hook(buildAsyncHookArgs({ query, operation: 'run', system: client.system }, () => client.run(query))),\n raw: (sql) => client.raw(sql),\n iterate: (query) => client.iterate(query),\n // prepare bypasses the hook because the hook contract takes a `SqlQuery`\n // and a single execute thunk; a prepared handle has no bound `args` and\n // can be invoked many times. If we ran the hook here, every `.all/.run`\n // call on the handle would record `args: []` against the original SQL,\n // which is misleading and worse than skipping. Re-instrumentation can\n // wrap the handle's methods explicitly if needed in a follow-up.\n prepare: (sql) => client.prepare(sql),\n transaction: (fn) => client.transaction((tx) => fn(instrumentAsync(tx, hook))),\n sql: undefined,\n };\n wrapped.sql = bindAsyncSql(wrapped);\n return wrapped;\n}\nfunction instrumentSync(client, hook) {\n const wrapped = {\n driver: client.driver,\n system: client.system,\n sync: true,\n all: (query) => hook(buildSyncHookArgs({ query, operation: 'all', system: client.system }, () => client.all(query))),\n run: (query) => hook(buildSyncHookArgs({ query, operation: 'run', system: client.system }, () => client.run(query))),\n raw: (sql) => client.raw(sql),\n iterate: (query) => client.iterate(query),\n prepare: (sql) => client.prepare(sql),\n transaction: ((fn) => client.transaction((tx) => fn(instrumentSync(tx, hook)))),\n sql: undefined,\n };\n wrapped.sql = bindSyncSql(wrapped);\n return wrapped;\n}\nfunction syncHookFrom(hook) {\n return typeof hook === 'function' ? hook : hook.sync;\n}\nfunction asyncHookFrom(hook) {\n return typeof hook === 'function' ? hook : hook.async;\n}\nfunction instrumentImpl(client, ...hooks) {\n if (client.sync) {\n return instrumentSync(client, composeSyncHooks(...hooks));\n }\n return instrumentAsync(client, composeAsyncHooks(...hooks));\n}\n/**\n * Wrap a Client with one or more query-execution hooks. Hooks run\n * left-to-right — the first one is the outermost, seeing the call first\n * and the result/error last.\n *\n * ```ts\n * const client = instrument(baseClient,\n * instrument.otel({tracer}),\n * instrument.onError(({context, error}) => Sentry.captureException(error)),\n * )\n * ```\n *\n * `instrument.otel` and `instrument.onError` are small reference\n * implementations. If your team has different conventions (different\n * attribute names, extra resource attributes, rate limiting, redaction)\n * copy their bodies and edit them. The stable contract is\n * `QueryExecutionHook`; these helpers are just one way to satisfy it.\n */\nexport const instrument = Object.assign(instrumentImpl, {\n otel: createOtelHook,\n onError: createErrorReporterHook,\n});\n","import { mapSqliteDriverError } from './errors.js';\nimport { bindAsyncSql, bindSyncSql } from './sql.js';\n/**\n * Wrap a `SyncClient` so every error from `all` / `run` / `raw` / `iterate`\n * is normalized via `mapSqliteDriverError`. Mirrors `instrumentClient`\n * structurally — applied once at adapter-factory exit rather than per call.\n *\n * The error's `system` comes from the client's own `.system` field, so\n * adapters don't have to pass it twice.\n *\n * Transactions re-wrap the inner client so queries inside a tx get the same\n * error contract as queries outside it.\n */\nexport function wrapSyncClientErrors(client) {\n const mapQuery = (error, query) => mapSqliteDriverError(error, { query, system: client.system });\n const wrapped = {\n driver: client.driver,\n system: client.system,\n sync: true,\n all(query) {\n try {\n return client.all(query);\n }\n catch (error) {\n throw mapQuery(error, query);\n }\n },\n run(query) {\n try {\n return client.run(query);\n }\n catch (error) {\n throw mapQuery(error, query);\n }\n },\n raw(sql) {\n try {\n return client.raw(sql);\n }\n catch (error) {\n throw mapQuery(error, { sql, args: [] });\n }\n },\n *iterate(query) {\n try {\n yield* client.iterate(query);\n }\n catch (error) {\n throw mapQuery(error, query);\n }\n },\n prepare(sql) {\n let stmt;\n try {\n stmt = client.prepare(sql);\n }\n catch (error) {\n throw mapQuery(error, { sql, args: [] });\n }\n return {\n all(params) {\n try {\n return stmt.all(params);\n }\n catch (error) {\n throw mapQuery(error, { sql, args: [] });\n }\n },\n run(params) {\n try {\n return stmt.run(params);\n }\n catch (error) {\n throw mapQuery(error, { sql, args: [] });\n }\n },\n *iterate(params) {\n try {\n yield* stmt.iterate(params);\n }\n catch (error) {\n throw mapQuery(error, { sql, args: [] });\n }\n },\n [Symbol.dispose]() {\n stmt[Symbol.dispose]();\n },\n };\n },\n transaction: ((fn) => client.transaction((tx) => fn(wrapSyncClientErrors(tx)))),\n sql: undefined,\n };\n wrapped.sql = bindSyncSql(wrapped);\n return wrapped;\n}\nexport function wrapAsyncClientErrors(client) {\n const mapQuery = (error, query) => mapSqliteDriverError(error, { query, system: client.system });\n const wrapped = {\n driver: client.driver,\n system: client.system,\n sync: false,\n async all(query) {\n try {\n return await client.all(query);\n }\n catch (error) {\n throw mapQuery(error, query);\n }\n },\n async run(query) {\n try {\n return await client.run(query);\n }\n catch (error) {\n throw mapQuery(error, query);\n }\n },\n async raw(sql) {\n try {\n return await client.raw(sql);\n }\n catch (error) {\n throw mapQuery(error, { sql, args: [] });\n }\n },\n async *iterate(query) {\n try {\n yield* client.iterate(query);\n }\n catch (error) {\n throw mapQuery(error, query);\n }\n },\n prepare(sql) {\n let stmt;\n try {\n stmt = client.prepare(sql);\n }\n catch (error) {\n throw mapQuery(error, { sql, args: [] });\n }\n return {\n async all(params) {\n try {\n return await stmt.all(params);\n }\n catch (error) {\n throw mapQuery(error, { sql, args: [] });\n }\n },\n async run(params) {\n try {\n return await stmt.run(params);\n }\n catch (error) {\n throw mapQuery(error, { sql, args: [] });\n }\n },\n async *iterate(params) {\n try {\n yield* stmt.iterate(params);\n }\n catch (error) {\n throw mapQuery(error, { sql, args: [] });\n }\n },\n async [Symbol.asyncDispose]() {\n await stmt[Symbol.asyncDispose]();\n },\n };\n },\n transaction: (fn) => client.transaction((tx) => fn(wrapAsyncClientErrors(tx))),\n sql: undefined,\n };\n wrapped.sql = bindAsyncSql(wrapped);\n return wrapped;\n}\n","export function bindSqlParamsToPositional(sql, params, placeholderStyle) {\n return prepareSqlParamsBinding(sql, placeholderStyle).bind(params);\n}\n/**\n * Scan the SQL once and return a binder for repeated calls — the rewritten SQL\n * is a pure function of the input, so adapters that re-issue the same\n * statement (durable objects re-exec per call) can cache this instead of\n * rescanning every execution. Only the args extraction depends on `params`.\n */\nexport function prepareSqlParamsBinding(sql, placeholderStyle) {\n const parameters = scanSqlParameters(sql, placeholderStyle);\n const positionalOnlySql = renderPositionalSql(sql, parameters.filter((parameter) => parameter.kind === 'positional'), placeholderStyle);\n const allPositionalSql = renderPositionalSql(sql, parameters, placeholderStyle);\n const namedParameterNames = parameters.flatMap((parameter) => (parameter.kind === 'named' ? [parameter.name] : []));\n return {\n bind(params) {\n if (params == null || Array.isArray(params)) {\n return { sql: positionalOnlySql, args: params ? params : [] };\n }\n const named = params;\n const args = [];\n for (const name of namedParameterNames) {\n if (!Object.prototype.hasOwnProperty.call(named, name)) {\n throw new Error(`SQL: missing value for named parameter \"${name}\".`);\n }\n args.push(named[name]);\n }\n return { sql: allPositionalSql, args };\n },\n };\n}\nfunction renderPositionalSql(sql, parameters, placeholderStyle) {\n let out = '';\n let cursor = 0;\n let placeholderIndex = 0;\n for (const parameter of parameters) {\n out += sql.slice(cursor, parameter.start);\n out += positionalPlaceholder(placeholderStyle, ++placeholderIndex);\n cursor = parameter.end;\n }\n out += sql.slice(cursor);\n return out;\n}\nexport function bindSqlParamsToPrefixedRecord(sql, params) {\n if (params == null)\n return undefined;\n if (Array.isArray(params))\n return params;\n const namedParameters = new Map();\n for (const parameter of scanSqlNamedParameters(sql)) {\n const parameters = namedParameters.get(parameter.name);\n if (parameters) {\n if (!parameters.includes(parameter.parameter))\n parameters.push(parameter.parameter);\n }\n else {\n namedParameters.set(parameter.name, [parameter.parameter]);\n }\n }\n const out = {};\n for (const [key, value] of Object.entries(params)) {\n for (const bindKey of sqlBindKeys(key, namedParameters)) {\n out[bindKey] = value;\n }\n }\n return out;\n}\nexport function scanSqlNamedParameters(sql) {\n const out = [];\n for (const parameter of scanSqlParameters(sql, 'question')) {\n if (parameter.kind === 'named')\n out.push(parameter);\n }\n return out;\n}\nfunction scanSqlParameters(sql, placeholderStyle) {\n const out = [];\n let index = 0;\n while (index < sql.length) {\n const skippedEnd = scanSqlIgnoredRange(sql, index, placeholderStyle);\n if (skippedEnd !== null) {\n index = skippedEnd;\n continue;\n }\n const code = sql.charCodeAt(index);\n if (code === 0x3f /* ? */) {\n if (placeholderStyle === 'postgres' && isPostgresQuestionOperator(sql, index)) {\n index += 1;\n continue;\n }\n out.push({ kind: 'positional', parameter: '?', start: index, end: index + 1 });\n index += 1;\n continue;\n }\n if (isNamedParameterPrefix(code) && isNamedParameterStart(sql, index)) {\n const start = index;\n index += 2;\n while (index < sql.length && isIdentCont(sql.charCodeAt(index)))\n index += 1;\n const parameter = sql.slice(start, index);\n out.push({ kind: 'named', parameter, name: parameter.slice(1), start, end: index });\n continue;\n }\n index += 1;\n }\n return out;\n}\nfunction scanSqlIgnoredRange(sql, start, placeholderStyle) {\n const code = sql.charCodeAt(start);\n if (code === 0x27 /* ' */)\n return scanQuotedSql(sql, start, 0x27);\n if (code === 0x22 /* \" */)\n return scanQuotedSql(sql, start, 0x22);\n if (code === 0x60 /* ` */)\n return scanQuotedSql(sql, start, 0x60);\n if (code === 0x5b /* [ */ && placeholderStyle !== 'postgres')\n return scanBracketedSqlIdentifier(sql, start);\n if (code === 0x2d /* - */ && sql.charCodeAt(start + 1) === 0x2d /* - */) {\n return scanSqlLineComment(sql, start + 2);\n }\n if (code === 0x2f /* / */ && sql.charCodeAt(start + 1) === 0x2a /* * */) {\n return scanSqlBlockComment(sql, start + 2);\n }\n if (code === 0x24 /* $ */)\n return scanDollarQuotedString(sql, start);\n return null;\n}\nfunction scanQuotedSql(sql, start, quote) {\n let index = start + 1;\n while (index < sql.length) {\n if (sql.charCodeAt(index) === quote) {\n if (sql.charCodeAt(index + 1) === quote) {\n index += 2;\n continue;\n }\n return index + 1;\n }\n index += 1;\n }\n return sql.length;\n}\nfunction scanBracketedSqlIdentifier(sql, start) {\n let index = start + 1;\n while (index < sql.length) {\n if (sql.charCodeAt(index) === 0x5d /* ] */)\n return index + 1;\n index += 1;\n }\n return sql.length;\n}\nfunction scanSqlLineComment(sql, start) {\n let index = start;\n while (index < sql.length && sql.charCodeAt(index) !== 0x0a /* \\n */)\n index += 1;\n return index;\n}\nfunction scanSqlBlockComment(sql, start) {\n let index = start;\n while (index < sql.length) {\n if (sql.charCodeAt(index) === 0x2a /* * */ && sql.charCodeAt(index + 1) === 0x2f /* / */) {\n return index + 2;\n }\n index += 1;\n }\n return sql.length;\n}\nfunction scanDollarQuotedString(sql, start) {\n let index = start + 1;\n while (index < sql.length) {\n const code = sql.charCodeAt(index);\n if (code === 0x24 /* $ */) {\n const tag = sql.slice(start, index + 1);\n const end = sql.indexOf(tag, index + 1);\n return end === -1 ? null : end + tag.length;\n }\n if (!isIdentCont(code))\n return null;\n index += 1;\n }\n return null;\n}\nfunction positionalPlaceholder(placeholderStyle, index) {\n return placeholderStyle === 'postgres' ? `$${index}` : '?';\n}\nfunction isPostgresQuestionOperator(sql, index) {\n const next = sql.charCodeAt(index + 1);\n if (next === 0x7c /* | */ || next === 0x26 /* & */)\n return true;\n const previousIndex = previousNonWhitespaceIndex(sql, index - 1);\n const nextIndex = nextNonWhitespaceIndex(sql, index + 1);\n if (previousIndex === -1 || nextIndex === -1)\n return false;\n return isExpressionTokenEnd(sql, previousIndex) && isExpressionTokenStart(sql, nextIndex);\n}\nfunction sqlBindKeys(key, namedParameters) {\n if (hasBindPrefix(key))\n return [key];\n return namedParameters.get(key) || [`:${key}`];\n}\nfunction hasBindPrefix(key) {\n return key.startsWith(':') || key.startsWith('$') || key.startsWith('@');\n}\nfunction isIdentStart(code) {\n return (code >= 0x41 && code <= 0x5a) || (code >= 0x61 && code <= 0x7a) || code === 0x5f;\n}\nfunction isIdentCont(code) {\n return isIdentStart(code) || (code >= 0x30 && code <= 0x39);\n}\nfunction isNamedParameterPrefix(code) {\n return code === 0x3a /* : */ || code === 0x40 /* @ */ || code === 0x24 /* $ */;\n}\nfunction isNamedParameterStart(sql, index) {\n if (sql.charCodeAt(index) === 0x3a /* : */) {\n if (sql.charCodeAt(index - 1) === 0x3a /* : */ || sql.charCodeAt(index + 1) === 0x3a /* : */) {\n return false;\n }\n }\n return isIdentStart(sql.charCodeAt(index + 1));\n}\nfunction previousNonWhitespaceIndex(sql, start) {\n for (let index = start; index >= 0; index -= 1) {\n if (!/\\s/u.test(sql[index]))\n return index;\n }\n return -1;\n}\nfunction nextNonWhitespaceIndex(sql, start) {\n for (let index = start; index < sql.length; index += 1) {\n if (!/\\s/u.test(sql[index]))\n return index;\n }\n return -1;\n}\nfunction isExpressionTokenEnd(sql, index) {\n const code = sql.charCodeAt(index);\n if (isIdentCont(code))\n return !previousWordIsNonExpression(sql, index);\n return code === 0x27 /* ' */ || code === 0x22 /* \" */ || code === 0x5d /* ] */ || code === 0x29 /* ) */;\n}\nfunction isExpressionTokenStart(sql, index) {\n const code = sql.charCodeAt(index);\n return (isIdentStart(code) ||\n (code >= 0x30 && code <= 0x39) ||\n code === 0x27 /* ' */ ||\n code === 0x22 /* \" */ ||\n code === 0x28 /* ( */ ||\n code === 0x5b /* [ */ ||\n code === 0x3a /* : */ ||\n code === 0x40 /* @ */ ||\n code === 0x24 /* $ */ ||\n code === 0x3f /* ? */ ||\n code === 0x2d /* - */);\n}\nfunction previousWordIsNonExpression(sql, end) {\n let start = end;\n while (start > 0 && isIdentCont(sql.charCodeAt(start - 1)))\n start -= 1;\n const word = sql.slice(start, end + 1).toLowerCase();\n return NON_EXPRESSION_PREVIOUS_WORDS.has(word);\n}\nconst NON_EXPRESSION_PREVIOUS_WORDS = new Set([\n 'all',\n 'and',\n 'as',\n 'between',\n 'by',\n 'case',\n 'delete',\n 'distinct',\n 'else',\n 'end',\n 'except',\n 'from',\n 'group',\n 'having',\n 'in',\n 'insert',\n 'intersect',\n 'is',\n 'join',\n 'like',\n 'limit',\n 'not',\n 'offset',\n 'on',\n 'or',\n 'order',\n 'returning',\n 'select',\n 'set',\n 'then',\n 'union',\n 'update',\n 'using',\n 'values',\n 'when',\n 'where',\n 'with',\n]);\n","import { normalizeSchemaSqlForExtraction } from './schemadiff/sqlite/sqltext.js';\nimport { containsSqliteKeyword, firstSqliteKeyword } from './sqlite-parser.js';\n/**\n * Returns true for statements that produce a result set. Heuristic by design;\n * union of sqlite and postgres row-returning keywords:\n *\n * - `select`, `with`, `explain`, `values` — both dialects.\n * - `pragma` — sqlite only (invalid syntax in pg; never matches a valid pg\n * statement so over-inclusion is harmless).\n * - `show`, `table`, `fetch` — pg only (invalid syntax in sqlite; same\n * harmless-overinclusion argument).\n * - …plus any write statement with a `returning` clause.\n *\n * Used by `execAdHocSql` to decide whether the UI should render rows or a\n * row-count summary. Strips leading comments/whitespace so a commented query\n * is classified by its actual first keyword.\n *\n * Try/catch on `.all()` is *not* a safe substitute: node:sqlite returns `[]`\n * for writes (no error to catch), and better-sqlite3 may execute partial side\n * effects before throwing — falling back to `.run()` would double-execute.\n * Keyword classification sidesteps both.\n */\nexport function sqlReturnsRows(sql) {\n const firstKeyword = firstSqliteKeyword(sql);\n if (firstKeyword && rowReturningFirstKeywords.has(firstKeyword))\n return true;\n return containsSqliteKeyword(sql, 'returning');\n}\nconst rowReturningFirstKeywords = new Set(['select', 'with', 'pragma', 'explain', 'values', 'show', 'table', 'fetch']);\nfunction scanSqlIgnoredRange(sql, start) {\n const code = sql.charCodeAt(start);\n if (code === 0x27 /* ' */)\n return scanQuotedSql(sql, start, 0x27);\n if (code === 0x22 /* \" */)\n return scanQuotedSql(sql, start, 0x22);\n if (code === 0x60 /* ` */)\n return scanQuotedSql(sql, start, 0x60);\n if (code === 0x5b /* [ */)\n return scanBracketedSqlIdentifier(sql, start);\n if (code === 0x2d /* - */ && sql.charCodeAt(start + 1) === 0x2d /* - */) {\n return scanSqlLineComment(sql, start + 2);\n }\n if (code === 0x2f /* / */ && sql.charCodeAt(start + 1) === 0x2a /* * */) {\n return scanSqlBlockComment(sql, start + 2);\n }\n return null;\n}\nfunction scanQuotedSql(sql, start, quote) {\n let index = start + 1;\n while (index < sql.length) {\n if (sql.charCodeAt(index) === quote) {\n if (sql.charCodeAt(index + 1) === quote) {\n index += 2;\n continue;\n }\n return index + 1;\n }\n index += 1;\n }\n return sql.length;\n}\nfunction scanBracketedSqlIdentifier(sql, start) {\n let index = start + 1;\n while (index < sql.length) {\n if (sql.charCodeAt(index) === 0x5d /* ] */)\n return index + 1;\n index += 1;\n }\n return sql.length;\n}\nfunction scanSqlLineComment(sql, start) {\n let index = start;\n while (index < sql.length && sql.charCodeAt(index) !== 0x0a /* \\n */)\n index += 1;\n return index;\n}\nfunction scanSqlBlockComment(sql, start) {\n let index = start;\n while (index < sql.length) {\n if (sql.charCodeAt(index) === 0x2a /* * */ && sql.charCodeAt(index + 1) === 0x2f /* / */) {\n return index + 2;\n }\n index += 1;\n }\n return sql.length;\n}\n/**\n * Standard WHERE-clause fragment for user-table introspection queries. Excludes:\n * - SQLite's own internal tables (`sqlite_master`, `sqlite_sequence`, etc.).\n * - Cloudflare's reserved `_cf_*` prefix. Workerd's D1 binding emits a warning\n * for any identifier matching this prefix case-insensitively. Backslash-escape\n * `_` so it matches literally instead of as LIKE's single-char wildcard.\n * https://developers.cloudflare.com/d1/reference/database-size/#internal-metadata\n */\nexport const excludeReservedSqliteObjects = `name not like 'sqlite\\\\_%' escape '\\\\' and name not like '\\\\_cf\\\\_%' escape '\\\\'`;\nexport async function extractSchema(client, schemaName = 'main', input = {}) {\n const excludedTables = input.excludedTables ?? [];\n const excludedTableFilter = excludedTables\n .map((tableName) => `and name != ${sqlStringLiteral(tableName)}`)\n .join('\\n ');\n const rows = await client.all({\n sql: `\n select sql\n from ${schemaName}.sqlite_schema\n where sql is not null\n and ${excludeReservedSqliteObjects}\n ${excludedTableFilter}\n order by\n case type\n when 'table' then 0\n when 'view' then 1\n when 'index' then 2\n when 'trigger' then 3\n end,\n name\n `,\n args: [],\n });\n return rows.map((row) => `${normalizeSchemaSqlForExtraction(String(row.sql))};`).join('\\n');\n}\nfunction sqlStringLiteral(value) {\n return `'${value.replaceAll(`'`, `''`)}'`;\n}\nexport async function inspectSchemaFingerprint(client, schemaName = 'main', input = {}) {\n const excludedTables = input.excludedTables ?? [];\n const excludedTableFilter = excludedTables\n .map((tableName) => `and name != ${sqlStringLiteral(tableName)}`)\n .join('\\n ');\n const objects = await client.all({\n sql: `\n select type, name, sql\n from ${schemaName}.sqlite_schema\n where type in ('table', 'view')\n and ${excludeReservedSqliteObjects}\n ${excludedTableFilter}\n order by type, name\n `,\n args: [],\n });\n const tables = [];\n const views = [];\n for (const object of objects) {\n if (object.type === 'view') {\n views.push({\n name: object.name,\n sql: normalizeSchemaStatement(object.sql ?? ''),\n });\n continue;\n }\n const tableNameLiteral = quoteSqlString(object.name);\n const columns = await client.all({\n sql: `select name, type, \"notnull\", dflt_value, pk, hidden from pragma_table_xinfo(${tableNameLiteral}) order by cid`,\n args: [],\n });\n const indexList = await client.all({\n sql: `select name, \"unique\", origin, partial from pragma_index_list(${tableNameLiteral}) order by name`,\n args: [],\n });\n const indexes = [];\n for (const index of indexList) {\n const indexNameLiteral = quoteSqlString(index.name);\n const indexColumns = await client.all({\n sql: `select name from pragma_index_info(${indexNameLiteral}) order by seqno`,\n args: [],\n });\n indexes.push({\n unique: Boolean(index.unique),\n origin: index.origin,\n partial: Boolean(index.partial),\n columns: indexColumns.map((column) => column.name),\n });\n }\n tables.push({\n name: object.name,\n columns: columns.map((column) => ({\n name: column.name,\n type: String(column.type ?? '').toLowerCase(),\n notNull: Boolean(column.notnull),\n defaultValue: column.dflt_value,\n primaryKeyPosition: column.pk,\n hidden: column.hidden,\n })),\n indexes,\n });\n }\n return { tables, views };\n}\nexport function rawSqlWithSqlSplittingSync(runOne, sql) {\n if (!sql.trim()) {\n return {};\n }\n const statements = splitSqlStatements(sql).filter((statement) => !isCommentOnlySql(statement));\n if (statements.length === 0) {\n return {};\n }\n if (statements.length <= 1) {\n return runOne({ sql: statements[0], args: [] });\n }\n let lastResult = {};\n for (const statement of statements) {\n lastResult = runOne({ sql: statement, args: [] });\n }\n return lastResult;\n}\nexport async function rawSqlWithSqlSplittingAsync(runOne, sql) {\n if (!sql.trim()) {\n return {};\n }\n const statements = splitSqlStatements(sql).filter((statement) => !isCommentOnlySql(statement));\n if (statements.length === 0) {\n return {};\n }\n if (statements.length <= 1) {\n return runOne({ sql: statements[0], args: [] });\n }\n let lastResult = {};\n for (const statement of statements) {\n lastResult = await runOne({ sql: statement, args: [] });\n }\n return lastResult;\n}\nexport function splitSqlStatements(sql) {\n const statements = [];\n let current = '';\n let index = 0;\n while (index < sql.length) {\n const char = sql[index];\n const skippedEnd = scanSqlIgnoredRange(sql, index);\n if (skippedEnd !== null) {\n current += sql.slice(index, skippedEnd);\n index = skippedEnd;\n continue;\n }\n if (char === ';') {\n if (isTriggerStatementInProgress(current) && !isTriggerTerminator(current)) {\n current += char;\n index += 1;\n continue;\n }\n const statement = current.trim();\n if (statement && stripSqlComments(statement).trim()) {\n statements.push(`${statement};`);\n }\n current = '';\n index += 1;\n continue;\n }\n current += char;\n index += 1;\n }\n const trailing = current.trim();\n if (trailing && stripSqlComments(trailing).trim()) {\n statements.push(trailing);\n }\n return statements;\n}\nfunction isCommentOnlySql(sql) {\n let index = 0;\n while (index < sql.length) {\n const char = sql[index];\n const skippedEnd = scanSqlIgnoredRange(sql, index);\n if (skippedEnd !== null) {\n if (char !== '-' && char !== '/')\n return false;\n index = skippedEnd;\n continue;\n }\n if (!/\\s/u.test(char)) {\n return false;\n }\n index += 1;\n }\n return true;\n}\nexport function surroundWithBeginCommitRollbackSync(client, fn) {\n client.run({ sql: 'begin', args: [] });\n try {\n const result = fn(client);\n if (isPromiseLike(result)) {\n return result.then((value) => {\n client.run({ sql: 'commit', args: [] });\n return value;\n }, (error) => {\n tryRollbackSync(client);\n throw error;\n });\n }\n client.run({ sql: 'commit', args: [] });\n return result;\n }\n catch (error) {\n tryRollbackSync(client);\n throw error;\n }\n}\nexport async function surroundWithBeginCommitRollbackAsync(client, fn) {\n await client.run({ sql: 'begin', args: [] });\n try {\n const result = await fn(client);\n await client.run({ sql: 'commit', args: [] });\n return result;\n }\n catch (error) {\n await tryRollbackAsync(client);\n throw error;\n }\n}\n// if a rollback fails (e.g. because the inner sql included its own commit), preserve the\n// original error. the caller only cares about what actually went wrong in their code.\nfunction tryRollbackSync(client) {\n try {\n client.run({ sql: 'rollback', args: [] });\n }\n catch {\n // ignore\n }\n}\nasync function tryRollbackAsync(client) {\n try {\n await client.run({ sql: 'rollback', args: [] });\n }\n catch {\n // ignore\n }\n}\nfunction stripSqlComments(sql) {\n return sql\n .split('\\n')\n .filter((line) => !line.trim().startsWith('--'))\n .join('\\n');\n}\nfunction normalizeSchemaStatement(sql) {\n return sql.toLowerCase().replace(/\\s+/g, ' ').trim();\n}\nfunction quoteSqlString(value) {\n return `'${value.replace(/'/g, \"''\")}'`;\n}\nfunction isPromiseLike(value) {\n return typeof value === 'object' && value !== null && 'then' in value;\n}\nfunction isTriggerStatementInProgress(sql) {\n return /^\\s*create\\s+trigger\\b/iu.test(stripSqlComments(sql));\n}\nfunction isTriggerTerminator(sql) {\n return /\\bend\\s*$/iu.test(stripSqlComments(sql).trim());\n}\n","import { wrapSyncClientErrors } from '../adapter-errors.js';\nimport { bindSyncSql } from '../sql.js';\nimport { prepareSqlParamsBinding } from '../sql-params.js';\nimport { rawSqlWithSqlSplittingSync } from '../sqlite-text.js';\nexport function createDurableObjectClient(storage) {\n const sqlStorage = getSqlStorage(storage);\n const transactionSync = getTransactionSync(storage);\n // Cached per distinct SQL string: prepare() is called with static query text\n // (generated wrappers, inline configs), so this stays bounded while saving a\n // full character scan + SQL rewrite on every execution.\n const paramBindings = new Map();\n const paramBindingFor = (sql) => {\n let binding = paramBindings.get(sql);\n if (!binding) {\n binding = prepareSqlParamsBinding(sql, 'question');\n paramBindings.set(sql, binding);\n }\n return binding;\n };\n const client = {\n driver: storage,\n system: 'sqlite',\n sync: true,\n all(query) {\n return sqlStorage.exec(query.sql, ...query.args).toArray();\n },\n run(query) {\n const cursor = sqlStorage.exec(query.sql, ...query.args);\n return {\n rowsAffected: cursor.rowsWritten,\n };\n },\n raw(sql) {\n return rawSqlWithSqlSplittingSync((singleQuery) => {\n const cursor = sqlStorage.exec(singleQuery.sql, ...singleQuery.args);\n return {\n rowsAffected: cursor.rowsWritten,\n };\n }, sql);\n },\n *iterate(query) {\n const rows = sqlStorage.exec(query.sql, ...query.args).toArray();\n yield* rows;\n },\n prepare(sql) {\n // DO storage has no native prepared-statement concept; this shim\n // captures the SQL string and re-issues `storage.exec` on every call.\n // workerd parses the SQL fresh each time — tolerable for DO writes,\n // which the design grills already declared cheap. Named params are\n // bound to positional because `storage.exec` only accepts a\n // positional `...bindings` spread.\n const binding = paramBindingFor(sql);\n return {\n all(params) {\n const bound = binding.bind(params);\n return sqlStorage.exec(bound.sql, ...bound.args).toArray();\n },\n run(params) {\n const bound = binding.bind(params);\n const cursor = sqlStorage.exec(bound.sql, ...bound.args);\n return { rowsAffected: cursor.rowsWritten };\n },\n *iterate(params) {\n const bound = binding.bind(params);\n yield* sqlStorage.exec(bound.sql, ...bound.args).toArray();\n },\n [Symbol.dispose]() { },\n };\n },\n transaction(fn) {\n // Durable Objects reject transaction-control SQL. When callers pass full\n // ctx.storage we can use the storage-native synchronous transaction API.\n // Passing {sql: ctx.storage.sql} is still supported for query-only\n // clients, but sqlfu cannot call transactionSync from that narrower\n // handle.\n if (!transactionSync) {\n return fn(client);\n }\n return transactionSync(() => {\n const result = fn(client);\n if (isPromiseLike(result)) {\n throw new Error('Durable Object transactions must be synchronous. Pass a synchronous callback or run async work outside client.transaction().');\n }\n return result;\n });\n },\n sql: undefined,\n };\n client.sql = bindSyncSql(client);\n return wrapSyncClientErrors(client);\n}\nexport const createDurableObjectDatabase = createDurableObjectClient;\nfunction getSqlStorage(storage) {\n if (isObject(storage) && 'sql' in storage) {\n return storage.sql;\n }\n throw new Error('createDurableObjectClient expects ctx.storage or {sql, transactionSync}; pass ctx.storage.sql as {sql}.');\n}\nfunction getTransactionSync(storage) {\n if (typeof storage.transactionSync === 'function') {\n return storage.transactionSync.bind(storage);\n }\n return null;\n}\nfunction isObject(value) {\n return typeof value === 'object' && value !== null;\n}\nfunction isPromiseLike(value) {\n return typeof value === 'object' && value !== null && 'then' in value;\n}\n","var _=t=>t.flatMap(Ve),Ve=t=>K(Xe(t)).map(Ke),Ke=t=>t.replace(/ +/g,\" \").trim(),Xe=t=>({type:\"mandatory_block\",items:z(t,0)[0]}),z=(t,e,s)=>{let r=[];for(;t[e];){let[a,E]=Je(t,e);if(r.push(a),e=E,t[e]===\"|\")e++;else if(t[e]===\"}\"||t[e]===\"]\"){if(s!==t[e])throw new Error(`Unbalanced parenthesis in: ${t}`);return e++,[r,e]}else if(e===t.length){if(s)throw new Error(`Unbalanced parenthesis in: ${t}`);return[r,e]}else throw new Error(`Unexpected \"${t[e]}\"`)}return[r,e]},Je=(t,e)=>{let s=[];for(;;){let[r,a]=qe(t,e);if(r)s.push(r),e=a;else break}return s.length===1?[s[0],e]:[{type:\"concatenation\",items:s},e]},qe=(t,e)=>{if(t[e]===\"{\")return Qe(t,e+1);if(t[e]===\"[\")return Ze(t,e+1);{let s=\"\";for(;t[e]&&/[A-Za-z0-9_ ]/.test(t[e]);)s+=t[e],e++;return[s,e]}},Qe=(t,e)=>{let[s,r]=z(t,e,\"}\");return[{type:\"mandatory_block\",items:s},r]},Ze=(t,e)=>{let[s,r]=z(t,e,\"]\");return[{type:\"optional_block\",items:s},r]},K=t=>{if(typeof t==\"string\")return[t];if(t.type===\"concatenation\")return t.items.map(K).reduce(ze,[\"\"]);if(t.type===\"mandatory_block\")return t.items.flatMap(K);if(t.type===\"optional_block\")return[\"\",...t.items.flatMap(K)];throw new Error(`Unknown node type: ${t}`)},ze=(t,e)=>{let s=[];for(let r of t)for(let a of e)s.push(r+a);return s};var Ae=[\"ABS\",\"CHANGES\",\"CHAR\",\"COALESCE\",\"FORMAT\",\"GLOB\",\"HEX\",\"IFNULL\",\"IIF\",\"INSTR\",\"LAST_INSERT_ROWID\",\"LENGTH\",\"LIKE\",\"LIKELIHOOD\",\"LIKELY\",\"LOAD_EXTENSION\",\"LOWER\",\"LTRIM\",\"NULLIF\",\"PRINTF\",\"QUOTE\",\"RANDOM\",\"RANDOMBLOB\",\"REPLACE\",\"ROUND\",\"RTRIM\",\"SIGN\",\"SOUNDEX\",\"SQLITE_COMPILEOPTION_GET\",\"SQLITE_COMPILEOPTION_USED\",\"SQLITE_OFFSET\",\"SQLITE_SOURCE_ID\",\"SQLITE_VERSION\",\"SUBSTR\",\"SUBSTRING\",\"TOTAL_CHANGES\",\"TRIM\",\"TYPEOF\",\"UNICODE\",\"UNLIKELY\",\"UPPER\",\"ZEROBLOB\",\"AVG\",\"COUNT\",\"GROUP_CONCAT\",\"MAX\",\"MIN\",\"SUM\",\"TOTAL\",\"DATE\",\"TIME\",\"DATETIME\",\"JULIANDAY\",\"UNIXEPOCH\",\"STRFTIME\",\"row_number\",\"rank\",\"dense_rank\",\"percent_rank\",\"cume_dist\",\"ntile\",\"lag\",\"lead\",\"first_value\",\"last_value\",\"nth_value\",\"ACOS\",\"ACOSH\",\"ASIN\",\"ASINH\",\"ATAN\",\"ATAN2\",\"ATANH\",\"CEIL\",\"CEILING\",\"COS\",\"COSH\",\"DEGREES\",\"EXP\",\"FLOOR\",\"LN\",\"LOG\",\"LOG\",\"LOG10\",\"LOG2\",\"MOD\",\"PI\",\"POW\",\"POWER\",\"RADIANS\",\"SIN\",\"SINH\",\"SQRT\",\"TAN\",\"TANH\",\"TRUNC\",\"JSON\",\"JSON_ARRAY\",\"JSON_ARRAY_LENGTH\",\"JSON_ARRAY_LENGTH\",\"JSON_EXTRACT\",\"JSON_INSERT\",\"JSON_OBJECT\",\"JSON_PATCH\",\"JSON_REMOVE\",\"JSON_REPLACE\",\"JSON_SET\",\"JSON_TYPE\",\"JSON_TYPE\",\"JSON_VALID\",\"JSON_QUOTE\",\"JSON_GROUP_ARRAY\",\"JSON_GROUP_OBJECT\",\"JSON_EACH\",\"JSON_TREE\",\"CAST\"];var Ne=[\"ABORT\",\"ACTION\",\"ADD\",\"AFTER\",\"ALL\",\"ALTER\",\"AND\",\"ARE\",\"ALWAYS\",\"ANALYZE\",\"AS\",\"ASC\",\"ATTACH\",\"AUTOINCREMENT\",\"BEFORE\",\"BEGIN\",\"BETWEEN\",\"BY\",\"CASCADE\",\"CASE\",\"CAST\",\"CHECK\",\"COLLATE\",\"COLUMN\",\"COMMIT\",\"CONFLICT\",\"CONSTRAINT\",\"CREATE\",\"CROSS\",\"CURRENT\",\"CURRENT_DATE\",\"CURRENT_TIME\",\"CURRENT_TIMESTAMP\",\"DATABASE\",\"DEFAULT\",\"DEFERRABLE\",\"DEFERRED\",\"DELETE\",\"DESC\",\"DETACH\",\"DISTINCT\",\"DO\",\"DROP\",\"EACH\",\"ELSE\",\"END\",\"ESCAPE\",\"EXCEPT\",\"EXCLUDE\",\"EXCLUSIVE\",\"EXISTS\",\"EXPLAIN\",\"FAIL\",\"FILTER\",\"FIRST\",\"FOLLOWING\",\"FOR\",\"FOREIGN\",\"FROM\",\"FULL\",\"GENERATED\",\"GLOB\",\"GROUP\",\"HAVING\",\"IF\",\"IGNORE\",\"IMMEDIATE\",\"IN\",\"INDEX\",\"INDEXED\",\"INITIALLY\",\"INNER\",\"INSERT\",\"INSTEAD\",\"INTERSECT\",\"INTO\",\"IS\",\"ISNULL\",\"JOIN\",\"KEY\",\"LAST\",\"LEFT\",\"LIKE\",\"LIMIT\",\"MATCH\",\"MATERIALIZED\",\"NATURAL\",\"NO\",\"NOT\",\"NOTHING\",\"NOTNULL\",\"NULL\",\"NULLS\",\"OF\",\"OFFSET\",\"ON\",\"ONLY\",\"OPEN\",\"OR\",\"ORDER\",\"OTHERS\",\"OUTER\",\"OVER\",\"PARTITION\",\"PLAN\",\"PRAGMA\",\"PRECEDING\",\"PRIMARY\",\"QUERY\",\"RAISE\",\"RANGE\",\"RECURSIVE\",\"REFERENCES\",\"REGEXP\",\"REINDEX\",\"RELEASE\",\"RENAME\",\"REPLACE\",\"RESTRICT\",\"RETURNING\",\"RIGHT\",\"ROLLBACK\",\"ROW\",\"ROWS\",\"SAVEPOINT\",\"SELECT\",\"SET\",\"TABLE\",\"TEMP\",\"TEMPORARY\",\"THEN\",\"TIES\",\"TO\",\"TRANSACTION\",\"TRIGGER\",\"UNBOUNDED\",\"UNION\",\"UNIQUE\",\"UPDATE\",\"USING\",\"VACUUM\",\"VALUES\",\"VIEW\",\"VIRTUAL\",\"WHEN\",\"WHERE\",\"WINDOW\",\"WITH\",\"WITHOUT\"],Se=[\"ANY\",\"ARRAY\",\"BLOB\",\"CHARACTER\",\"DECIMAL\",\"INT\",\"INTEGER\",\"NATIVE CHARACTER\",\"NCHAR\",\"NUMERIC\",\"NVARCHAR\",\"REAL\",\"TEXT\",\"VARCHAR\",\"VARYING CHARACTER\"];var je=_([\"SELECT [ALL | DISTINCT]\"]),et=_([\"WITH [RECURSIVE]\",\"FROM\",\"WHERE\",\"GROUP BY\",\"HAVING\",\"WINDOW\",\"PARTITION BY\",\"ORDER BY\",\"LIMIT\",\"OFFSET\",\"INSERT [OR ABORT | OR FAIL | OR IGNORE | OR REPLACE | OR ROLLBACK] INTO\",\"REPLACE INTO\",\"VALUES\",\"SET\",\"RETURNING\"]),Oe=_([\"CREATE [TEMPORARY | TEMP] TABLE [IF NOT EXISTS]\"]),j=_([\"CREATE [TEMPORARY | TEMP] VIEW [IF NOT EXISTS]\",\"UPDATE [OR ABORT | OR FAIL | OR IGNORE | OR REPLACE | OR ROLLBACK]\",\"ON CONFLICT\",\"DELETE FROM\",\"DROP TABLE [IF EXISTS]\",\"ALTER TABLE\",\"ADD [COLUMN]\",\"DROP [COLUMN]\",\"RENAME [COLUMN]\",\"RENAME TO\",\"SET SCHEMA\"]),tt=_([\"UNION [ALL]\",\"EXCEPT\",\"INTERSECT\"]),st=_([\"JOIN\",\"{LEFT | RIGHT | FULL} [OUTER] JOIN\",\"{INNER | CROSS} JOIN\",\"NATURAL [INNER] JOIN\",\"NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN\"]),rt=_([\"ON {UPDATE | DELETE} [SET NULL | SET DEFAULT]\",\"{ROWS | RANGE | GROUPS} BETWEEN\",\"DO UPDATE\"]),at=_([]),Et={name:\"sqlite\",tokenizerOptions:{reservedSelect:je,reservedClauses:[...et,...Oe,...j],reservedSetOperations:tt,reservedJoins:st,reservedKeywordPhrases:rt,reservedDataTypePhrases:at,reservedKeywords:Ne,reservedDataTypes:Se,reservedFunctionNames:Ae,stringTypes:[\"''-qq\",{quote:\"''-raw\",prefixes:[\"X\"],requirePrefix:!0}],identTypes:['\"\"-qq',\"``\",\"[]\"],paramTypes:{positional:!0,numbered:[\"?\"],named:[\":\",\"@\",\"$\"]},operators:[\"%\",\"~\",\"&\",\"|\",\"<<\",\">>\",\"==\",\"->\",\"->>\",\"||\"]},formatOptions:{onelineClauses:[...Oe,...j],tabularOnelineClauses:j}};var me=[\"ABS\",\"ACOS\",\"ACOSD\",\"ACOSH\",\"ASIN\",\"ASIND\",\"ASINH\",\"ATAN\",\"ATAN2\",\"ATAN2D\",\"ATAND\",\"ATANH\",\"CBRT\",\"CEIL\",\"CEILING\",\"COS\",\"COSD\",\"COSH\",\"COT\",\"COTD\",\"DEGREES\",\"DIV\",\"EXP\",\"FACTORIAL\",\"FLOOR\",\"GCD\",\"LCM\",\"LN\",\"LOG\",\"LOG10\",\"MIN_SCALE\",\"MOD\",\"PI\",\"POWER\",\"RADIANS\",\"RANDOM\",\"ROUND\",\"SCALE\",\"SETSEED\",\"SIGN\",\"SIN\",\"SIND\",\"SINH\",\"SQRT\",\"TAN\",\"TAND\",\"TANH\",\"TRIM_SCALE\",\"TRUNC\",\"WIDTH_BUCKET\",\"ABS\",\"ASCII\",\"BIT_LENGTH\",\"BTRIM\",\"CHARACTER_LENGTH\",\"CHAR_LENGTH\",\"CHR\",\"CONCAT\",\"CONCAT_WS\",\"FORMAT\",\"INITCAP\",\"LEFT\",\"LENGTH\",\"LOWER\",\"LPAD\",\"LTRIM\",\"MD5\",\"NORMALIZE\",\"OCTET_LENGTH\",\"OVERLAY\",\"PARSE_IDENT\",\"PG_CLIENT_ENCODING\",\"POSITION\",\"QUOTE_IDENT\",\"QUOTE_LITERAL\",\"QUOTE_NULLABLE\",\"REGEXP_MATCH\",\"REGEXP_MATCHES\",\"REGEXP_REPLACE\",\"REGEXP_SPLIT_TO_ARRAY\",\"REGEXP_SPLIT_TO_TABLE\",\"REPEAT\",\"REPLACE\",\"REVERSE\",\"RIGHT\",\"RPAD\",\"RTRIM\",\"SPLIT_PART\",\"SPRINTF\",\"STARTS_WITH\",\"STRING_AGG\",\"STRING_TO_ARRAY\",\"STRING_TO_TABLE\",\"STRPOS\",\"SUBSTR\",\"SUBSTRING\",\"TO_ASCII\",\"TO_HEX\",\"TRANSLATE\",\"TRIM\",\"UNISTR\",\"UPPER\",\"BIT_COUNT\",\"BIT_LENGTH\",\"BTRIM\",\"CONVERT\",\"CONVERT_FROM\",\"CONVERT_TO\",\"DECODE\",\"ENCODE\",\"GET_BIT\",\"GET_BYTE\",\"LENGTH\",\"LTRIM\",\"MD5\",\"OCTET_LENGTH\",\"OVERLAY\",\"POSITION\",\"RTRIM\",\"SET_BIT\",\"SET_BYTE\",\"SHA224\",\"SHA256\",\"SHA384\",\"SHA512\",\"STRING_AGG\",\"SUBSTR\",\"SUBSTRING\",\"TRIM\",\"BIT_COUNT\",\"BIT_LENGTH\",\"GET_BIT\",\"LENGTH\",\"OCTET_LENGTH\",\"OVERLAY\",\"POSITION\",\"SET_BIT\",\"SUBSTRING\",\"REGEXP_MATCH\",\"REGEXP_MATCHES\",\"REGEXP_REPLACE\",\"REGEXP_SPLIT_TO_ARRAY\",\"REGEXP_SPLIT_TO_TABLE\",\"TO_CHAR\",\"TO_DATE\",\"TO_NUMBER\",\"TO_TIMESTAMP\",\"CLOCK_TIMESTAMP\",\"CURRENT_DATE\",\"CURRENT_TIME\",\"CURRENT_TIMESTAMP\",\"DATE_BIN\",\"DATE_PART\",\"DATE_TRUNC\",\"EXTRACT\",\"ISFINITE\",\"JUSTIFY_DAYS\",\"JUSTIFY_HOURS\",\"JUSTIFY_INTERVAL\",\"LOCALTIME\",\"LOCALTIMESTAMP\",\"MAKE_DATE\",\"MAKE_INTERVAL\",\"MAKE_TIME\",\"MAKE_TIMESTAMP\",\"MAKE_TIMESTAMPTZ\",\"NOW\",\"PG_SLEEP\",\"PG_SLEEP_FOR\",\"PG_SLEEP_UNTIL\",\"STATEMENT_TIMESTAMP\",\"TIMEOFDAY\",\"TO_TIMESTAMP\",\"TRANSACTION_TIMESTAMP\",\"ENUM_FIRST\",\"ENUM_LAST\",\"ENUM_RANGE\",\"AREA\",\"BOUND_BOX\",\"BOX\",\"CENTER\",\"CIRCLE\",\"DIAGONAL\",\"DIAMETER\",\"HEIGHT\",\"ISCLOSED\",\"ISOPEN\",\"LENGTH\",\"LINE\",\"LSEG\",\"NPOINTS\",\"PATH\",\"PCLOSE\",\"POINT\",\"POLYGON\",\"POPEN\",\"RADIUS\",\"SLOPE\",\"WIDTH\",\"ABBREV\",\"BROADCAST\",\"FAMILY\",\"HOST\",\"HOSTMASK\",\"INET_MERGE\",\"INET_SAME_FAMILY\",\"MACADDR8_SET7BIT\",\"MASKLEN\",\"NETMASK\",\"NETWORK\",\"SET_MASKLEN\",\"TRUNC\",\"ARRAY_TO_TSVECTOR\",\"GET_CURRENT_TS_CONFIG\",\"JSONB_TO_TSVECTOR\",\"JSON_TO_TSVECTOR\",\"LENGTH\",\"NUMNODE\",\"PHRASETO_TSQUERY\",\"PLAINTO_TSQUERY\",\"QUERYTREE\",\"SETWEIGHT\",\"STRIP\",\"TO_TSQUERY\",\"TO_TSVECTOR\",\"TSQUERY_PHRASE\",\"TSVECTOR_TO_ARRAY\",\"TS_DEBUG\",\"TS_DELETE\",\"TS_FILTER\",\"TS_HEADLINE\",\"TS_LEXIZE\",\"TS_PARSE\",\"TS_RANK\",\"TS_RANK_CD\",\"TS_REWRITE\",\"TS_STAT\",\"TS_TOKEN_TYPE\",\"WEBSEARCH_TO_TSQUERY\",\"GEN_RANDOM_UUID\",\"UUIDV4\",\"UUIDV7\",\"UUID_EXTRACT_TIMESTAMP\",\"UUID_EXTRACT_VERSION\",\"CURSOR_TO_XML\",\"CURSOR_TO_XMLSCHEMA\",\"DATABASE_TO_XML\",\"DATABASE_TO_XMLSCHEMA\",\"DATABASE_TO_XML_AND_XMLSCHEMA\",\"NEXTVAL\",\"QUERY_TO_XML\",\"QUERY_TO_XMLSCHEMA\",\"QUERY_TO_XML_AND_XMLSCHEMA\",\"SCHEMA_TO_XML\",\"SCHEMA_TO_XMLSCHEMA\",\"SCHEMA_TO_XML_AND_XMLSCHEMA\",\"STRING\",\"TABLE_TO_XML\",\"TABLE_TO_XMLSCHEMA\",\"TABLE_TO_XML_AND_XMLSCHEMA\",\"XMLAGG\",\"XMLCOMMENT\",\"XMLCONCAT\",\"XMLELEMENT\",\"XMLEXISTS\",\"XMLFOREST\",\"XMLPARSE\",\"XMLPI\",\"XMLROOT\",\"XMLSERIALIZE\",\"XMLTABLE\",\"XML_IS_WELL_FORMED\",\"XML_IS_WELL_FORMED_CONTENT\",\"XML_IS_WELL_FORMED_DOCUMENT\",\"XPATH\",\"XPATH_EXISTS\",\"ARRAY_TO_JSON\",\"JSONB_AGG\",\"JSONB_ARRAY_ELEMENTS\",\"JSONB_ARRAY_ELEMENTS_TEXT\",\"JSONB_ARRAY_LENGTH\",\"JSONB_BUILD_ARRAY\",\"JSONB_BUILD_OBJECT\",\"JSONB_EACH\",\"JSONB_EACH_TEXT\",\"JSONB_EXTRACT_PATH\",\"JSONB_EXTRACT_PATH_TEXT\",\"JSONB_INSERT\",\"JSONB_OBJECT\",\"JSONB_OBJECT_AGG\",\"JSONB_OBJECT_KEYS\",\"JSONB_PATH_EXISTS\",\"JSONB_PATH_EXISTS_TZ\",\"JSONB_PATH_MATCH\",\"JSONB_PATH_MATCH_TZ\",\"JSONB_PATH_QUERY\",\"JSONB_PATH_QUERY_ARRAY\",\"JSONB_PATH_QUERY_ARRAY_TZ\",\"JSONB_PATH_QUERY_FIRST\",\"JSONB_PATH_QUERY_FIRST_TZ\",\"JSONB_PATH_QUERY_TZ\",\"JSONB_POPULATE_RECORD\",\"JSONB_POPULATE_RECORDSET\",\"JSONB_PRETTY\",\"JSONB_SET\",\"JSONB_SET_LAX\",\"JSONB_STRIP_NULLS\",\"JSONB_TO_RECORD\",\"JSONB_TO_RECORDSET\",\"JSONB_TYPEOF\",\"JSON_AGG\",\"JSON_ARRAY_ELEMENTS\",\"JSON_ARRAY_ELEMENTS_TEXT\",\"JSON_ARRAY_LENGTH\",\"JSON_BUILD_ARRAY\",\"JSON_BUILD_OBJECT\",\"JSON_EACH\",\"JSON_EACH_TEXT\",\"JSON_EXTRACT_PATH\",\"JSON_EXTRACT_PATH_TEXT\",\"JSON_OBJECT\",\"JSON_OBJECT_AGG\",\"JSON_OBJECT_KEYS\",\"JSON_POPULATE_RECORD\",\"JSON_POPULATE_RECORDSET\",\"JSON_STRIP_NULLS\",\"JSON_TO_RECORD\",\"JSON_TO_RECORDSET\",\"JSON_TYPEOF\",\"ROW_TO_JSON\",\"TO_JSON\",\"TO_JSONB\",\"TO_TIMESTAMP\",\"CURRVAL\",\"LASTVAL\",\"NEXTVAL\",\"SETVAL\",\"COALESCE\",\"GREATEST\",\"LEAST\",\"NULLIF\",\"ARRAY_AGG\",\"ARRAY_APPEND\",\"ARRAY_CAT\",\"ARRAY_DIMS\",\"ARRAY_FILL\",\"ARRAY_LENGTH\",\"ARRAY_LOWER\",\"ARRAY_NDIMS\",\"ARRAY_POSITION\",\"ARRAY_POSITIONS\",\"ARRAY_PREPEND\",\"ARRAY_REMOVE\",\"ARRAY_REPLACE\",\"ARRAY_TO_STRING\",\"ARRAY_UPPER\",\"CARDINALITY\",\"STRING_TO_ARRAY\",\"TRIM_ARRAY\",\"UNNEST\",\"ISEMPTY\",\"LOWER\",\"LOWER_INC\",\"LOWER_INF\",\"MULTIRANGE\",\"RANGE_MERGE\",\"UPPER\",\"UPPER_INC\",\"UPPER_INF\",\"ARRAY_AGG\",\"AVG\",\"BIT_AND\",\"BIT_OR\",\"BIT_XOR\",\"BOOL_AND\",\"BOOL_OR\",\"COALESCE\",\"CORR\",\"COUNT\",\"COVAR_POP\",\"COVAR_SAMP\",\"CUME_DIST\",\"DENSE_RANK\",\"EVERY\",\"GROUPING\",\"JSONB_AGG\",\"JSONB_OBJECT_AGG\",\"JSON_AGG\",\"JSON_OBJECT_AGG\",\"MAX\",\"MIN\",\"MODE\",\"PERCENTILE_CONT\",\"PERCENTILE_DISC\",\"PERCENT_RANK\",\"RANGE_AGG\",\"RANGE_INTERSECT_AGG\",\"RANK\",\"REGR_AVGX\",\"REGR_AVGY\",\"REGR_COUNT\",\"REGR_INTERCEPT\",\"REGR_R2\",\"REGR_SLOPE\",\"REGR_SXX\",\"REGR_SXY\",\"REGR_SYY\",\"STDDEV\",\"STDDEV_POP\",\"STDDEV_SAMP\",\"STRING_AGG\",\"SUM\",\"TO_JSON\",\"TO_JSONB\",\"VARIANCE\",\"VAR_POP\",\"VAR_SAMP\",\"XMLAGG\",\"CUME_DIST\",\"DENSE_RANK\",\"FIRST_VALUE\",\"LAG\",\"LAST_VALUE\",\"LEAD\",\"NTH_VALUE\",\"NTILE\",\"PERCENT_RANK\",\"RANK\",\"ROW_NUMBER\",\"GENERATE_SERIES\",\"GENERATE_SUBSCRIPTS\",\"ACLDEFAULT\",\"ACLEXPLODE\",\"COL_DESCRIPTION\",\"CURRENT_CATALOG\",\"CURRENT_DATABASE\",\"CURRENT_QUERY\",\"CURRENT_ROLE\",\"CURRENT_SCHEMA\",\"CURRENT_SCHEMAS\",\"CURRENT_USER\",\"FORMAT_TYPE\",\"HAS_ANY_COLUMN_PRIVILEGE\",\"HAS_COLUMN_PRIVILEGE\",\"HAS_DATABASE_PRIVILEGE\",\"HAS_FOREIGN_DATA_WRAPPER_PRIVILEGE\",\"HAS_FUNCTION_PRIVILEGE\",\"HAS_LANGUAGE_PRIVILEGE\",\"HAS_SCHEMA_PRIVILEGE\",\"HAS_SEQUENCE_PRIVILEGE\",\"HAS_SERVER_PRIVILEGE\",\"HAS_TABLESPACE_PRIVILEGE\",\"HAS_TABLE_PRIVILEGE\",\"HAS_TYPE_PRIVILEGE\",\"INET_CLIENT_ADDR\",\"INET_CLIENT_PORT\",\"INET_SERVER_ADDR\",\"INET_SERVER_PORT\",\"MAKEACLITEM\",\"OBJ_DESCRIPTION\",\"PG_BACKEND_PID\",\"PG_BLOCKING_PIDS\",\"PG_COLLATION_IS_VISIBLE\",\"PG_CONF_LOAD_TIME\",\"PG_CONTROL_CHECKPOINT\",\"PG_CONTROL_INIT\",\"PG_CONTROL_SYSTEM\",\"PG_CONVERSION_IS_VISIBLE\",\"PG_CURRENT_LOGFILE\",\"PG_CURRENT_SNAPSHOT\",\"PG_CURRENT_XACT_ID\",\"PG_CURRENT_XACT_ID_IF_ASSIGNED\",\"PG_DESCRIBE_OBJECT\",\"PG_FUNCTION_IS_VISIBLE\",\"PG_GET_CATALOG_FOREIGN_KEYS\",\"PG_GET_CONSTRAINTDEF\",\"PG_GET_EXPR\",\"PG_GET_FUNCTIONDEF\",\"PG_GET_FUNCTION_ARGUMENTS\",\"PG_GET_FUNCTION_IDENTITY_ARGUMENTS\",\"PG_GET_FUNCTION_RESULT\",\"PG_GET_INDEXDEF\",\"PG_GET_KEYWORDS\",\"PG_GET_OBJECT_ADDRESS\",\"PG_GET_OWNED_SEQUENCE\",\"PG_GET_RULEDEF\",\"PG_GET_SERIAL_SEQUENCE\",\"PG_GET_STATISTICSOBJDEF\",\"PG_GET_TRIGGERDEF\",\"PG_GET_USERBYID\",\"PG_GET_VIEWDEF\",\"PG_HAS_ROLE\",\"PG_IDENTIFY_OBJECT\",\"PG_IDENTIFY_OBJECT_AS_ADDRESS\",\"PG_INDEXAM_HAS_PROPERTY\",\"PG_INDEX_COLUMN_HAS_PROPERTY\",\"PG_INDEX_HAS_PROPERTY\",\"PG_IS_OTHER_TEMP_SCHEMA\",\"PG_JIT_AVAILABLE\",\"PG_LAST_COMMITTED_XACT\",\"PG_LISTENING_CHANNELS\",\"PG_MY_TEMP_SCHEMA\",\"PG_NOTIFICATION_QUEUE_USAGE\",\"PG_OPCLASS_IS_VISIBLE\",\"PG_OPERATOR_IS_VISIBLE\",\"PG_OPFAMILY_IS_VISIBLE\",\"PG_OPTIONS_TO_TABLE\",\"PG_POSTMASTER_START_TIME\",\"PG_SAFE_SNAPSHOT_BLOCKING_PIDS\",\"PG_SNAPSHOT_XIP\",\"PG_SNAPSHOT_XMAX\",\"PG_SNAPSHOT_XMIN\",\"PG_STATISTICS_OBJ_IS_VISIBLE\",\"PG_TABLESPACE_DATABASES\",\"PG_TABLESPACE_LOCATION\",\"PG_TABLE_IS_VISIBLE\",\"PG_TRIGGER_DEPTH\",\"PG_TS_CONFIG_IS_VISIBLE\",\"PG_TS_DICT_IS_VISIBLE\",\"PG_TS_PARSER_IS_VISIBLE\",\"PG_TS_TEMPLATE_IS_VISIBLE\",\"PG_TYPEOF\",\"PG_TYPE_IS_VISIBLE\",\"PG_VISIBLE_IN_SNAPSHOT\",\"PG_XACT_COMMIT_TIMESTAMP\",\"PG_XACT_COMMIT_TIMESTAMP_ORIGIN\",\"PG_XACT_STATUS\",\"PQSERVERVERSION\",\"ROW_SECURITY_ACTIVE\",\"SESSION_USER\",\"SHOBJ_DESCRIPTION\",\"TO_REGCLASS\",\"TO_REGCOLLATION\",\"TO_REGNAMESPACE\",\"TO_REGOPER\",\"TO_REGOPERATOR\",\"TO_REGPROC\",\"TO_REGPROCEDURE\",\"TO_REGROLE\",\"TO_REGTYPE\",\"TXID_CURRENT\",\"TXID_CURRENT_IF_ASSIGNED\",\"TXID_CURRENT_SNAPSHOT\",\"TXID_SNAPSHOT_XIP\",\"TXID_SNAPSHOT_XMAX\",\"TXID_SNAPSHOT_XMIN\",\"TXID_STATUS\",\"TXID_VISIBLE_IN_SNAPSHOT\",\"USER\",\"VERSION\",\"BRIN_DESUMMARIZE_RANGE\",\"BRIN_SUMMARIZE_NEW_VALUES\",\"BRIN_SUMMARIZE_RANGE\",\"CONVERT_FROM\",\"CURRENT_SETTING\",\"GIN_CLEAN_PENDING_LIST\",\"PG_ADVISORY_LOCK\",\"PG_ADVISORY_LOCK_SHARED\",\"PG_ADVISORY_UNLOCK\",\"PG_ADVISORY_UNLOCK_ALL\",\"PG_ADVISORY_UNLOCK_SHARED\",\"PG_ADVISORY_XACT_LOCK\",\"PG_ADVISORY_XACT_LOCK_SHARED\",\"PG_BACKUP_START_TIME\",\"PG_CANCEL_BACKEND\",\"PG_COLLATION_ACTUAL_VERSION\",\"PG_COLUMN_COMPRESSION\",\"PG_COLUMN_SIZE\",\"PG_COPY_LOGICAL_REPLICATION_SLOT\",\"PG_COPY_PHYSICAL_REPLICATION_SLOT\",\"PG_CREATE_LOGICAL_REPLICATION_SLOT\",\"PG_CREATE_PHYSICAL_REPLICATION_SLOT\",\"PG_CREATE_RESTORE_POINT\",\"PG_CURRENT_WAL_FLUSH_LSN\",\"PG_CURRENT_WAL_INSERT_LSN\",\"PG_CURRENT_WAL_LSN\",\"PG_DATABASE_SIZE\",\"PG_DROP_REPLICATION_SLOT\",\"PG_EXPORT_SNAPSHOT\",\"PG_FILENODE_RELATION\",\"PG_GET_WAL_REPLAY_PAUSE_STATE\",\"PG_IMPORT_SYSTEM_COLLATIONS\",\"PG_INDEXES_SIZE\",\"PG_IS_IN_BACKUP\",\"PG_IS_IN_RECOVERY\",\"PG_IS_WAL_REPLAY_PAUSED\",\"PG_LAST_WAL_RECEIVE_LSN\",\"PG_LAST_WAL_REPLAY_LSN\",\"PG_LAST_XACT_REPLAY_TIMESTAMP\",\"PG_LOGICAL_EMIT_MESSAGE\",\"PG_LOGICAL_SLOT_GET_BINARY_CHANGES\",\"PG_LOGICAL_SLOT_GET_CHANGES\",\"PG_LOGICAL_SLOT_PEEK_BINARY_CHANGES\",\"PG_LOGICAL_SLOT_PEEK_CHANGES\",\"PG_LOG_BACKEND_MEMORY_CONTEXTS\",\"PG_LS_ARCHIVE_STATUSDIR\",\"PG_LS_DIR\",\"PG_LS_LOGDIR\",\"PG_LS_TMPDIR\",\"PG_LS_WALDIR\",\"PG_PARTITION_ANCESTORS\",\"PG_PARTITION_ROOT\",\"PG_PARTITION_TREE\",\"PG_PROMOTE\",\"PG_READ_BINARY_FILE\",\"PG_READ_FILE\",\"PG_RELATION_FILENODE\",\"PG_RELATION_FILEPATH\",\"PG_RELATION_SIZE\",\"PG_RELOAD_CONF\",\"PG_REPLICATION_ORIGIN_ADVANCE\",\"PG_REPLICATION_ORIGIN_CREATE\",\"PG_REPLICATION_ORIGIN_DROP\",\"PG_REPLICATION_ORIGIN_OID\",\"PG_REPLICATION_ORIGIN_PROGRESS\",\"PG_REPLICATION_ORIGIN_SESSION_IS_SETUP\",\"PG_REPLICATION_ORIGIN_SESSION_PROGRESS\",\"PG_REPLICATION_ORIGIN_SESSION_RESET\",\"PG_REPLICATION_ORIGIN_SESSION_SETUP\",\"PG_REPLICATION_ORIGIN_XACT_RESET\",\"PG_REPLICATION_ORIGIN_XACT_SETUP\",\"PG_REPLICATION_SLOT_ADVANCE\",\"PG_ROTATE_LOGFILE\",\"PG_SIZE_BYTES\",\"PG_SIZE_PRETTY\",\"PG_START_BACKUP\",\"PG_STAT_FILE\",\"PG_STOP_BACKUP\",\"PG_SWITCH_WAL\",\"PG_TABLESPACE_SIZE\",\"PG_TABLE_SIZE\",\"PG_TERMINATE_BACKEND\",\"PG_TOTAL_RELATION_SIZE\",\"PG_TRY_ADVISORY_LOCK\",\"PG_TRY_ADVISORY_LOCK_SHARED\",\"PG_TRY_ADVISORY_XACT_LOCK\",\"PG_TRY_ADVISORY_XACT_LOCK_SHARED\",\"PG_WALFILE_NAME\",\"PG_WALFILE_NAME_OFFSET\",\"PG_WAL_LSN_DIFF\",\"PG_WAL_REPLAY_PAUSE\",\"PG_WAL_REPLAY_RESUME\",\"SET_CONFIG\",\"SUPPRESS_REDUNDANT_UPDATES_TRIGGER\",\"TSVECTOR_UPDATE_TRIGGER\",\"TSVECTOR_UPDATE_TRIGGER_COLUMN\",\"PG_EVENT_TRIGGER_DDL_COMMANDS\",\"PG_EVENT_TRIGGER_DROPPED_OBJECTS\",\"PG_EVENT_TRIGGER_TABLE_REWRITE_OID\",\"PG_EVENT_TRIGGER_TABLE_REWRITE_REASON\",\"PG_GET_OBJECT_ADDRESS\",\"PG_MCV_LIST_ITEMS\",\"CAST\"];var Ie=[\"ALL\",\"ANALYSE\",\"ANALYZE\",\"AND\",\"ANY\",\"AS\",\"ASC\",\"ASYMMETRIC\",\"AUTHORIZATION\",\"BETWEEN\",\"BINARY\",\"BOTH\",\"CASE\",\"CAST\",\"CHECK\",\"COLLATE\",\"COLLATION\",\"COLUMN\",\"CONCURRENTLY\",\"CONSTRAINT\",\"CREATE\",\"CROSS\",\"CURRENT_CATALOG\",\"CURRENT_DATE\",\"CURRENT_ROLE\",\"CURRENT_SCHEMA\",\"CURRENT_TIME\",\"CURRENT_TIMESTAMP\",\"CURRENT_USER\",\"DAY\",\"DEFAULT\",\"DEFERRABLE\",\"DESC\",\"DISTINCT\",\"DO\",\"ELSE\",\"END\",\"EXCEPT\",\"EXISTS\",\"FALSE\",\"FETCH\",\"FILTER\",\"FOR\",\"FOREIGN\",\"FREEZE\",\"FROM\",\"FULL\",\"GRANT\",\"GROUP\",\"HAVING\",\"HOUR\",\"ILIKE\",\"IN\",\"INITIALLY\",\"INNER\",\"INOUT\",\"INTERSECT\",\"INTO\",\"IS\",\"ISNULL\",\"JOIN\",\"LATERAL\",\"LEADING\",\"LEFT\",\"LIKE\",\"LIMIT\",\"LOCALTIME\",\"LOCALTIMESTAMP\",\"MINUTE\",\"MONTH\",\"NATURAL\",\"NOT\",\"NOTNULL\",\"NULL\",\"NULLIF\",\"OFFSET\",\"ON\",\"ONLY\",\"OR\",\"ORDER\",\"OUT\",\"OUTER\",\"OVER\",\"OVERLAPS\",\"PLACING\",\"PRIMARY\",\"REFERENCES\",\"RETURNING\",\"RIGHT\",\"ROW\",\"SECOND\",\"SELECT\",\"SESSION_USER\",\"SIMILAR\",\"SOME\",\"SYMMETRIC\",\"TABLE\",\"TABLESAMPLE\",\"THEN\",\"TO\",\"TRAILING\",\"TRUE\",\"UNION\",\"UNIQUE\",\"USER\",\"USING\",\"VALUES\",\"VARIADIC\",\"VERBOSE\",\"WHEN\",\"WHERE\",\"WINDOW\",\"WITH\",\"WITHIN\",\"WITHOUT\",\"YEAR\"],ce=[\"ARRAY\",\"BIGINT\",\"BIT\",\"BIT VARYING\",\"BOOL\",\"BOOLEAN\",\"CHAR\",\"CHARACTER\",\"CHARACTER VARYING\",\"DECIMAL\",\"DEC\",\"DOUBLE\",\"ENUM\",\"FLOAT\",\"INT\",\"INTEGER\",\"INTERVAL\",\"NCHAR\",\"NUMERIC\",\"JSON\",\"JSONB\",\"PRECISION\",\"REAL\",\"SMALLINT\",\"TEXT\",\"TIME\",\"TIMESTAMP\",\"TIMESTAMPTZ\",\"UUID\",\"VARCHAR\",\"XML\",\"ZONE\"];var nt=_([\"SELECT [ALL | DISTINCT]\"]),ot=_([\"WITH [RECURSIVE]\",\"FROM\",\"WHERE\",\"GROUP BY [ALL | DISTINCT]\",\"HAVING\",\"WINDOW\",\"PARTITION BY\",\"ORDER BY\",\"LIMIT\",\"OFFSET\",\"FETCH {FIRST | NEXT}\",\"FOR {UPDATE | NO KEY UPDATE | SHARE | KEY SHARE} [OF]\",\"INSERT INTO\",\"VALUES\",\"DEFAULT VALUES\",\"SET\",\"RETURNING\"]),ue=_([\"CREATE [GLOBAL | LOCAL] [TEMPORARY | TEMP | UNLOGGED] TABLE [IF NOT EXISTS]\"]),ee=_([\"CREATE [OR REPLACE] [TEMP | TEMPORARY] [RECURSIVE] VIEW\",\"CREATE [MATERIALIZED] VIEW [IF NOT EXISTS]\",\"UPDATE [ONLY]\",\"WHERE CURRENT OF\",\"ON CONFLICT\",\"DELETE FROM [ONLY]\",\"DROP TABLE [IF EXISTS]\",\"ALTER TABLE [IF EXISTS] [ONLY]\",\"ALTER TABLE ALL IN TABLESPACE\",\"RENAME [COLUMN]\",\"RENAME TO\",\"ADD [COLUMN] [IF NOT EXISTS]\",\"DROP [COLUMN] [IF EXISTS]\",\"ALTER [COLUMN]\",\"SET DATA TYPE\",\"{SET | DROP} DEFAULT\",\"{SET | DROP} NOT NULL\",\"TRUNCATE [TABLE] [ONLY]\",\"SET SCHEMA\",\"AFTER\",\"ABORT\",\"ALTER AGGREGATE\",\"ALTER COLLATION\",\"ALTER CONVERSION\",\"ALTER DATABASE\",\"ALTER DEFAULT PRIVILEGES\",\"ALTER DOMAIN\",\"ALTER EVENT TRIGGER\",\"ALTER EXTENSION\",\"ALTER FOREIGN DATA WRAPPER\",\"ALTER FOREIGN TABLE\",\"ALTER FUNCTION\",\"ALTER GROUP\",\"ALTER INDEX\",\"ALTER LANGUAGE\",\"ALTER LARGE OBJECT\",\"ALTER MATERIALIZED VIEW\",\"ALTER OPERATOR\",\"ALTER OPERATOR CLASS\",\"ALTER OPERATOR FAMILY\",\"ALTER POLICY\",\"ALTER PROCEDURE\",\"ALTER PUBLICATION\",\"ALTER ROLE\",\"ALTER ROUTINE\",\"ALTER RULE\",\"ALTER SCHEMA\",\"ALTER SEQUENCE\",\"ALTER SERVER\",\"ALTER STATISTICS\",\"ALTER SUBSCRIPTION\",\"ALTER SYSTEM\",\"ALTER TABLESPACE\",\"ALTER TEXT SEARCH CONFIGURATION\",\"ALTER TEXT SEARCH DICTIONARY\",\"ALTER TEXT SEARCH PARSER\",\"ALTER TEXT SEARCH TEMPLATE\",\"ALTER TRIGGER\",\"ALTER TYPE\",\"ALTER USER\",\"ALTER USER MAPPING\",\"ALTER VIEW\",\"ANALYZE\",\"BEGIN\",\"CALL\",\"CHECKPOINT\",\"CLOSE\",\"CLUSTER\",\"COMMENT ON\",\"COMMIT\",\"COMMIT PREPARED\",\"COPY\",\"CREATE ACCESS METHOD\",\"CREATE [OR REPLACE] AGGREGATE\",\"CREATE CAST\",\"CREATE COLLATION\",\"CREATE [DEFAULT] CONVERSION\",\"CREATE DATABASE\",\"CREATE DOMAIN\",\"CREATE EVENT TRIGGER\",\"CREATE EXTENSION\",\"CREATE FOREIGN DATA WRAPPER\",\"CREATE FOREIGN TABLE\",\"CREATE [OR REPLACE] FUNCTION\",\"CREATE GROUP\",\"CREATE [UNIQUE] INDEX\",\"CREATE [OR REPLACE] [TRUSTED] [PROCEDURAL] LANGUAGE\",\"CREATE OPERATOR\",\"CREATE OPERATOR CLASS\",\"CREATE OPERATOR FAMILY\",\"CREATE POLICY\",\"CREATE [OR REPLACE] PROCEDURE\",\"CREATE PUBLICATION\",\"CREATE ROLE\",\"CREATE [OR REPLACE] RULE\",\"CREATE SCHEMA [AUTHORIZATION]\",\"CREATE [TEMPORARY | TEMP | UNLOGGED] SEQUENCE\",\"CREATE SERVER\",\"CREATE STATISTICS\",\"CREATE SUBSCRIPTION\",\"CREATE TABLESPACE\",\"CREATE TEXT SEARCH CONFIGURATION\",\"CREATE TEXT SEARCH DICTIONARY\",\"CREATE TEXT SEARCH PARSER\",\"CREATE TEXT SEARCH TEMPLATE\",\"CREATE [OR REPLACE] TRANSFORM\",\"CREATE [OR REPLACE] [CONSTRAINT] TRIGGER\",\"CREATE TYPE\",\"CREATE USER\",\"CREATE USER MAPPING\",\"DEALLOCATE\",\"DECLARE\",\"DISCARD\",\"DROP ACCESS METHOD\",\"DROP AGGREGATE\",\"DROP CAST\",\"DROP COLLATION\",\"DROP CONVERSION\",\"DROP DATABASE\",\"DROP DOMAIN\",\"DROP EVENT TRIGGER\",\"DROP EXTENSION\",\"DROP FOREIGN DATA WRAPPER\",\"DROP FOREIGN TABLE\",\"DROP FUNCTION\",\"DROP GROUP\",\"DROP IDENTITY\",\"DROP INDEX\",\"DROP LANGUAGE\",\"DROP MATERIALIZED VIEW [IF EXISTS]\",\"DROP OPERATOR\",\"DROP OPERATOR CLASS\",\"DROP OPERATOR FAMILY\",\"DROP OWNED\",\"DROP POLICY\",\"DROP PROCEDURE\",\"DROP PUBLICATION\",\"DROP ROLE\",\"DROP ROUTINE\",\"DROP RULE\",\"DROP SCHEMA\",\"DROP SEQUENCE\",\"DROP SERVER\",\"DROP STATISTICS\",\"DROP SUBSCRIPTION\",\"DROP TABLESPACE\",\"DROP TEXT SEARCH CONFIGURATION\",\"DROP TEXT SEARCH DICTIONARY\",\"DROP TEXT SEARCH PARSER\",\"DROP TEXT SEARCH TEMPLATE\",\"DROP TRANSFORM\",\"DROP TRIGGER\",\"DROP TYPE\",\"DROP USER\",\"DROP USER MAPPING\",\"DROP VIEW\",\"EXECUTE\",\"EXPLAIN\",\"FETCH\",\"GRANT\",\"IMPORT FOREIGN SCHEMA\",\"LISTEN\",\"LOAD\",\"LOCK\",\"MOVE\",\"NOTIFY\",\"OVERRIDING SYSTEM VALUE\",\"PREPARE\",\"PREPARE TRANSACTION\",\"REASSIGN OWNED\",\"REFRESH MATERIALIZED VIEW\",\"REINDEX\",\"RELEASE SAVEPOINT\",\"RESET [ALL|ROLE|SESSION AUTHORIZATION]\",\"REVOKE\",\"ROLLBACK\",\"ROLLBACK PREPARED\",\"ROLLBACK TO SAVEPOINT\",\"SAVEPOINT\",\"SECURITY LABEL\",\"SELECT INTO\",\"SET CONSTRAINTS\",\"SET ROLE\",\"SET SESSION AUTHORIZATION\",\"SET TRANSACTION\",\"SHOW\",\"START TRANSACTION\",\"UNLISTEN\",\"VACUUM\"]),it=_([\"UNION [ALL | DISTINCT]\",\"EXCEPT [ALL | DISTINCT]\",\"INTERSECT [ALL | DISTINCT]\"]),Tt=_([\"JOIN\",\"{LEFT | RIGHT | FULL} [OUTER] JOIN\",\"{INNER | CROSS} JOIN\",\"NATURAL [INNER] JOIN\",\"NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN\"]),Rt=_([\"PRIMARY KEY\",\"GENERATED {ALWAYS | BY DEFAULT} AS IDENTITY\",\"ON {UPDATE | DELETE} [NO ACTION | RESTRICT | CASCADE | SET NULL | SET DEFAULT]\",\"DO {NOTHING | UPDATE}\",\"AS MATERIALIZED\",\"{ROWS | RANGE | GROUPS} BETWEEN\",\"IS [NOT] DISTINCT FROM\",\"NULLS {FIRST | LAST}\",\"WITH ORDINALITY\"]),pt=_([\"[TIMESTAMP | TIME] {WITH | WITHOUT} TIME ZONE\"]),_t={name:\"postgresql\",tokenizerOptions:{reservedSelect:nt,reservedClauses:[...ot,...ue,...ee],reservedSetOperations:it,reservedJoins:Tt,reservedKeywordPhrases:Rt,reservedDataTypePhrases:pt,reservedKeywords:Ie,reservedDataTypes:ce,reservedFunctionNames:me,nestedBlockComments:!0,extraParens:[\"[]\"],underscoresInNumbers:!0,stringTypes:[\"$$\",{quote:\"''-qq\",prefixes:[\"U&\"]},{quote:\"''-qq-bs\",prefixes:[\"E\"],requirePrefix:!0},{quote:\"''-raw\",prefixes:[\"B\",\"X\"],requirePrefix:!0}],identTypes:[{quote:'\"\"-qq',prefixes:[\"U&\"]}],identChars:{rest:\"$\"},paramTypes:{numbered:[\"$\"]},operators:[\"%\",\"^\",\"|/\",\"||/\",\"@\",\":=\",\"&\",\"|\",\"#\",\"~\",\"<<\",\">>\",\"~>~\",\"~<~\",\"~>=~\",\"~<=~\",\"@-@\",\"@@\",\"##\",\"<->\",\"&&\",\"&<\",\"&>\",\"<<|\",\"&<|\",\"|>>\",\"|&>\",\"<^\",\">^\",\"?#\",\"?-\",\"?|\",\"?-|\",\"?||\",\"@>\",\"<@\",\"<@>\",\"~=\",\"?\",\"@?\",\"?&\",\"->\",\"->>\",\"#>\",\"#>>\",\"#-\",\"=>\",\">>=\",\"<<=\",\"~~\",\"~~*\",\"!~~\",\"!~~*\",\"~\",\"~*\",\"!~\",\"!~*\",\"-|-\",\"||\",\"@@@\",\"!!\",\"^@\",\"<%\",\"%>\",\"<<%\",\"%>>\",\"<<->\",\"<->>\",\"<<<->\",\"<->>>\",\"~>\",\"#=\",\"::\",\":\",\"<#>\",\"<=>\",\"<+>\",\"<~>\",\"<%>\",\"&&&\",\"|=|\"],operatorKeyword:!0},formatOptions:{alwaysDenseOperators:[\"::\",\":\"],onelineClauses:[...ue,...ee],tabularOnelineClauses:ee}};var u=(o=>(o.QUOTED_IDENTIFIER=\"QUOTED_IDENTIFIER\",o.IDENTIFIER=\"IDENTIFIER\",o.STRING=\"STRING\",o.VARIABLE=\"VARIABLE\",o.RESERVED_DATA_TYPE=\"RESERVED_DATA_TYPE\",o.RESERVED_PARAMETERIZED_DATA_TYPE=\"RESERVED_PARAMETERIZED_DATA_TYPE\",o.RESERVED_KEYWORD=\"RESERVED_KEYWORD\",o.RESERVED_FUNCTION_NAME=\"RESERVED_FUNCTION_NAME\",o.RESERVED_KEYWORD_PHRASE=\"RESERVED_KEYWORD_PHRASE\",o.RESERVED_DATA_TYPE_PHRASE=\"RESERVED_DATA_TYPE_PHRASE\",o.RESERVED_SET_OPERATION=\"RESERVED_SET_OPERATION\",o.RESERVED_CLAUSE=\"RESERVED_CLAUSE\",o.RESERVED_SELECT=\"RESERVED_SELECT\",o.RESERVED_JOIN=\"RESERVED_JOIN\",o.ARRAY_IDENTIFIER=\"ARRAY_IDENTIFIER\",o.ARRAY_KEYWORD=\"ARRAY_KEYWORD\",o.CASE=\"CASE\",o.END=\"END\",o.WHEN=\"WHEN\",o.ELSE=\"ELSE\",o.THEN=\"THEN\",o.LIMIT=\"LIMIT\",o.BETWEEN=\"BETWEEN\",o.AND=\"AND\",o.OR=\"OR\",o.XOR=\"XOR\",o.OPERATOR=\"OPERATOR\",o.COMMA=\"COMMA\",o.ASTERISK=\"ASTERISK\",o.PROPERTY_ACCESS_OPERATOR=\"PROPERTY_ACCESS_OPERATOR\",o.OPEN_PAREN=\"OPEN_PAREN\",o.CLOSE_PAREN=\"CLOSE_PAREN\",o.LINE_COMMENT=\"LINE_COMMENT\",o.BLOCK_COMMENT=\"BLOCK_COMMENT\",o.DISABLE_COMMENT=\"DISABLE_COMMENT\",o.NUMBER=\"NUMBER\",o.NAMED_PARAMETER=\"NAMED_PARAMETER\",o.QUOTED_PARAMETER=\"QUOTED_PARAMETER\",o.NUMBERED_PARAMETER=\"NUMBERED_PARAMETER\",o.POSITIONAL_PARAMETER=\"POSITIONAL_PARAMETER\",o.CUSTOM_PARAMETER=\"CUSTOM_PARAMETER\",o.DELIMITER=\"DELIMITER\",o.EOF=\"EOF\",o))(u||{}),te=t=>({type:\"EOF\",raw:\"\\xABEOF\\xBB\",text:\"\\xABEOF\\xBB\",start:t}),as=te(1/0),f=t=>e=>e.type===t.type&&e.text===t.text,Es={ARRAY:f({text:\"ARRAY\",type:\"RESERVED_DATA_TYPE\"}),BY:f({text:\"BY\",type:\"RESERVED_KEYWORD\"}),SET:f({text:\"SET\",type:\"RESERVED_CLAUSE\"}),STRUCT:f({text:\"STRUCT\",type:\"RESERVED_DATA_TYPE\"}),WINDOW:f({text:\"WINDOW\",type:\"RESERVED_CLAUSE\"}),VALUES:f({text:\"VALUES\",type:\"RESERVED_CLAUSE\"})},Ce=t=>t===\"RESERVED_DATA_TYPE\"||t===\"RESERVED_KEYWORD\"||t===\"RESERVED_FUNCTION_NAME\"||t===\"RESERVED_KEYWORD_PHRASE\"||t===\"RESERVED_DATA_TYPE_PHRASE\"||t===\"RESERVED_CLAUSE\"||t===\"RESERVED_SELECT\"||t===\"RESERVED_SET_OPERATION\"||t===\"RESERVED_JOIN\"||t===\"ARRAY_KEYWORD\"||t===\"CASE\"||t===\"END\"||t===\"WHEN\"||t===\"ELSE\"||t===\"THEN\"||t===\"LIMIT\"||t===\"BETWEEN\"||t===\"AND\"||t===\"OR\"||t===\"XOR\",de=t=>t===\"AND\"||t===\"OR\"||t===\"XOR\";var C=t=>t[t.length-1],se=t=>t.sort((e,s)=>s.length-e.length||e.localeCompare(s));var D=t=>t.replace(/\\s+/gu,\" \"),X=t=>/\\n/.test(t);var O=t=>t.replace(/[.*+?^${}()|[\\]\\\\]/gu,\"\\\\$&\"),re=/\\s+/uy,c=t=>new RegExp(`(?:${t})`,\"uy\"),At=t=>t.split(\"\").map(e=>/ /gu.test(e)?\"\\\\s+\":`[${e.toUpperCase()}${e.toLowerCase()}]`).join(\"\"),Le=t=>t+\"(?:-\"+t+\")*\",Pe=({prefixes:t,requirePrefix:e})=>`(?:${t.map(At).join(\"|\")}${e?\"\":\"|\"})`;var ye=t=>new RegExp(`(?:${t.map(O).join(\"|\")}).*?(?=\\r\n|\\r|\n|$)`,\"uy\"),ae=(t,e=[])=>{let s=t===\"open\"?0:1,r=[\"()\",...e].map(a=>a[s]);return c(r.map(O).join(\"|\"))},Ee=t=>c(`${se(t).map(O).join(\"|\")}`),Nt=({rest:t,dashes:e})=>t||e?`(?![${t||\"\"}${e?\"-\":\"\"}])`:\"\",I=(t,e={})=>{if(t.length===0)return/^\\b$/u;let s=Nt(e),r=se(t).map(O).join(\"|\").replace(/ /gu,\"\\\\s+\");return new RegExp(`(?:${r})${s}\\\\b`,\"iuy\")},J=(t,e)=>{if(!t.length)return;let s=t.map(O).join(\"|\");return c(`(?:${s})(?:${e})`)},St=()=>{let t={\"<\":\">\",\"[\":\"]\",\"(\":\")\",\"{\":\"}\"},e=\"{left}(?:(?!{right}').)*?{right}\",s=Object.entries(t).map(([i,T])=>e.replace(/{left}/g,O(i)).replace(/{right}/g,O(T))),r=O(Object.keys(t).join(\"\"));return`[Qq]'(?:${String.raw`(?<tag>[^\\s${r}])(?:(?!\\k<tag>').)*?\\k<tag>`}|${s.join(\"|\")})'`},he={\"``\":\"(?:`[^`]*`)+\",\"[]\":String.raw`(?:\\[[^\\]]*\\])(?:\\][^\\]]*\\])*`,'\"\"-qq':String.raw`(?:\"[^\"]*\")+`,'\"\"-bs':String.raw`(?:\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\")`,'\"\"-qq-bs':String.raw`(?:\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\")+`,'\"\"-raw':String.raw`(?:\"[^\"]*\")`,\"''-qq\":String.raw`(?:'[^']*')+`,\"''-bs\":String.raw`(?:'[^'\\\\]*(?:\\\\.[^'\\\\]*)*')`,\"''-qq-bs\":String.raw`(?:'[^'\\\\]*(?:\\\\.[^'\\\\]*)*')+`,\"''-raw\":String.raw`(?:'[^']*')`,$$:String.raw`(?<tag>\\$\\w*\\$)[\\s\\S]*?\\k<tag>`,\"'''..'''\":String.raw`'''[^\\\\]*?(?:\\\\.[^\\\\]*?)*?'''`,'\"\"\"..\"\"\"':String.raw`\"\"\"[^\\\\]*?(?:\\\\.[^\\\\]*?)*?\"\"\"`,\"{}\":String.raw`(?:\\{[^\\}]*\\})`,\"q''\":St()},fe=t=>typeof t==\"string\"?he[t]:\"regex\"in t?t.regex:Pe(t)+he[t.quote],De=t=>c(t.map(e=>\"regex\"in e?e.regex:fe(e)).join(\"|\")),ne=t=>t.map(fe).join(\"|\"),oe=t=>c(ne(t)),xe=(t={})=>c(ie(t)),ie=({first:t,rest:e,dashes:s,allowFirstCharNumber:r}={})=>{let a=\"\\\\p{Alphabetic}\\\\p{Mark}_\",E=\"\\\\p{Decimal_Number}\",i=O(t??\"\"),T=O(e??\"\"),N=r?`[${a}${E}${i}][${a}${E}${T}]*`:`[${a}${i}][${a}${E}${T}]*`;return s?Le(N):N};function q(t,e){let s=t.slice(0,e).split(/\\n/);return{line:s.length,col:s[s.length-1].length+1}}var w=class{constructor(e,s){this.rules=e;this.dialectName=s}input=\"\";index=0;tokenize(e){this.input=e,this.index=0;let s=[],r;for(;this.index<this.input.length;){let a=this.getWhitespace();if(this.index<this.input.length){if(r=this.getNextToken(),!r)throw this.createParseError();s.push({...r,precedingWhitespace:a})}}return s}createParseError(){let e=this.input.slice(this.index,this.index+10),{line:s,col:r}=q(this.input,this.index);return new Error(`Parse error: Unexpected \"${e}\" at line ${s} column ${r}.\n${this.dialectInfo()}`)}dialectInfo(){return this.dialectName===\"sql\"?`This likely happens because you're using the default \"sql\" dialect.\nIf possible, please select a more specific dialect (like sqlite, postgresql, etc).`:`SQL dialect used: \"${this.dialectName}\".`}getWhitespace(){re.lastIndex=this.index;let e=re.exec(this.input);if(e)return this.index+=e[0].length,e[0]}getNextToken(){for(let e of this.rules){let s=this.match(e);if(s)return s}}match(e){e.regex.lastIndex=this.index;let s=e.regex.exec(this.input);if(s){let r=s[0],a={type:e.type,raw:r,text:e.text?e.text(r):r,start:this.index};return e.key&&(a.key=e.key(r)),this.index+=r.length,a}}};var be=/\\/\\*/uy,mt=/[\\s\\S]/uy,It=/\\*\\//uy,Q=class{lastIndex=0;exec(e){let s=\"\",r,a=0;if(r=this.matchSection(be,e))s+=r,a++;else return null;for(;a>0;)if(r=this.matchSection(be,e))s+=r,a++;else if(r=this.matchSection(It,e))s+=r,a--;else if(r=this.matchSection(mt,e))s+=r;else return null;return[s]}matchSection(e,s){e.lastIndex=this.lastIndex;let r=e.exec(s);return r&&(this.lastIndex+=r[0].length),r?r[0]:null}};var v=class{constructor(e,s){this.cfg=e;this.dialectName=s;this.rulesBeforeParams=this.buildRulesBeforeParams(e),this.rulesAfterParams=this.buildRulesAfterParams(e)}rulesBeforeParams;rulesAfterParams;tokenize(e,s){let r=[...this.rulesBeforeParams,...this.buildParamRules(this.cfg,s),...this.rulesAfterParams],a=new w(r,this.dialectName).tokenize(e);return this.cfg.postProcess?this.cfg.postProcess(a):a}buildRulesBeforeParams(e){return this.validRules([{type:\"DISABLE_COMMENT\",regex:/(\\/\\* *sql-formatter-disable *\\*\\/[\\s\\S]*?(?:\\/\\* *sql-formatter-enable *\\*\\/|$))/uy},{type:\"BLOCK_COMMENT\",regex:e.nestedBlockComments?new Q:/(\\/\\*[^]*?\\*\\/)/uy},{type:\"LINE_COMMENT\",regex:ye(e.lineCommentTypes??[\"--\"])},{type:\"QUOTED_IDENTIFIER\",regex:oe(e.identTypes)},{type:\"NUMBER\",regex:e.underscoresInNumbers?/(?:0x[0-9a-fA-F_]+|0b[01_]+|(?:-\\s*)?(?:[0-9_]*\\.[0-9_]+|[0-9_]+(?:\\.[0-9_]*)?)(?:[eE][-+]?[0-9_]+(?:\\.[0-9_]+)?)?)(?![\\w\\p{Alphabetic}])/uy:/(?:0x[0-9a-fA-F]+|0b[01]+|(?:-\\s*)?(?:[0-9]*\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)(?:[eE][-+]?[0-9]+(?:\\.[0-9]+)?)?)(?![\\w\\p{Alphabetic}])/uy},{type:\"RESERVED_KEYWORD_PHRASE\",regex:I(e.reservedKeywordPhrases??[],e.identChars),text:p},{type:\"RESERVED_DATA_TYPE_PHRASE\",regex:I(e.reservedDataTypePhrases??[],e.identChars),text:p},{type:\"CASE\",regex:/CASE\\b/iuy,text:p},{type:\"END\",regex:/END\\b/iuy,text:p},{type:\"BETWEEN\",regex:/BETWEEN\\b/iuy,text:p},{type:\"LIMIT\",regex:e.reservedClauses.includes(\"LIMIT\")?/LIMIT\\b/iuy:void 0,text:p},{type:\"RESERVED_CLAUSE\",regex:I(e.reservedClauses,e.identChars),text:p},{type:\"RESERVED_SELECT\",regex:I(e.reservedSelect,e.identChars),text:p},{type:\"RESERVED_SET_OPERATION\",regex:I(e.reservedSetOperations,e.identChars),text:p},{type:\"WHEN\",regex:/WHEN\\b/iuy,text:p},{type:\"ELSE\",regex:/ELSE\\b/iuy,text:p},{type:\"THEN\",regex:/THEN\\b/iuy,text:p},{type:\"RESERVED_JOIN\",regex:I(e.reservedJoins,e.identChars),text:p},{type:\"AND\",regex:/AND\\b/iuy,text:p},{type:\"OR\",regex:/OR\\b/iuy,text:p},{type:\"XOR\",regex:e.supportsXor?/XOR\\b/iuy:void 0,text:p},...e.operatorKeyword?[{type:\"OPERATOR\",regex:/OPERATOR *\\([^)]+\\)/iuy}]:[],{type:\"RESERVED_FUNCTION_NAME\",regex:I(e.reservedFunctionNames,e.identChars),text:p},{type:\"RESERVED_DATA_TYPE\",regex:I(e.reservedDataTypes,e.identChars),text:p},{type:\"RESERVED_KEYWORD\",regex:I(e.reservedKeywords,e.identChars),text:p}])}buildRulesAfterParams(e){return this.validRules([{type:\"VARIABLE\",regex:e.variableTypes?De(e.variableTypes):void 0},{type:\"STRING\",regex:oe(e.stringTypes)},{type:\"IDENTIFIER\",regex:xe(e.identChars)},{type:\"DELIMITER\",regex:/[;]/uy},{type:\"COMMA\",regex:/[,]/y},{type:\"OPEN_PAREN\",regex:ae(\"open\",e.extraParens)},{type:\"CLOSE_PAREN\",regex:ae(\"close\",e.extraParens)},{type:\"OPERATOR\",regex:Ee([\"+\",\"-\",\"/\",\">\",\"<\",\"=\",\"<>\",\"<=\",\">=\",\"!=\",...e.operators??[]])},{type:\"ASTERISK\",regex:/[*]/uy},{type:\"PROPERTY_ACCESS_OPERATOR\",regex:Ee([\".\",...e.propertyAccessOperators??[]])}])}buildParamRules(e,s){let r={named:s?.named||e.paramTypes?.named||[],quoted:s?.quoted||e.paramTypes?.quoted||[],numbered:s?.numbered||e.paramTypes?.numbered||[],positional:typeof s?.positional==\"boolean\"?s.positional:e.paramTypes?.positional,custom:s?.custom||e.paramTypes?.custom||[]};return this.validRules([{type:\"NAMED_PARAMETER\",regex:J(r.named,ie(e.paramChars||e.identChars)),key:a=>a.slice(1)},{type:\"QUOTED_PARAMETER\",regex:J(r.quoted,ne(e.identTypes)),key:a=>(({tokenKey:E,quoteChar:i})=>E.replace(new RegExp(O(\"\\\\\"+i),\"gu\"),i))({tokenKey:a.slice(2,-1),quoteChar:a.slice(-1)})},{type:\"NUMBERED_PARAMETER\",regex:J(r.numbered,\"[0-9]+\"),key:a=>a.slice(1)},{type:\"POSITIONAL_PARAMETER\",regex:r.positional?/[?]/y:void 0},...r.custom.map(a=>({type:\"CUSTOM_PARAMETER\",regex:c(a.regex),key:a.key??(E=>E)}))])}validRules(e){return e.filter(s=>!!s.regex)}},p=t=>D(t.toUpperCase());var Me=new Map,Ge=t=>{let e=Me.get(t);return e||(e=ct(t),Me.set(t,e)),e},ct=t=>({tokenizer:new v(t.tokenizerOptions,t.name),formatOptions:ut(t.formatOptions)}),ut=t=>({alwaysDenseOperators:t.alwaysDenseOperators||[],onelineClauses:Object.fromEntries(t.onelineClauses.map(e=>[e,!0])),tabularOnelineClauses:Object.fromEntries((t.tabularOnelineClauses??t.onelineClauses).map(e=>[e,!0]))});function ge(t){return t.indentStyle===\"tabularLeft\"||t.indentStyle===\"tabularRight\"?\" \".repeat(10):t.useTabs?\"\t\":\" \".repeat(t.tabWidth)}function d(t){return t.indentStyle===\"tabularLeft\"||t.indentStyle===\"tabularRight\"}var Y=class{params;index;constructor(e){this.params=e,this.index=0}get({key:e,text:s}){return this.params?e?this.params[e]:this.params[this.index++]:s}getPositionalParameterIndex(){return this.index}setPositionalParameterIndex(e){this.index=e}};function F(t,e,s){return this.id=++F.highestId,this.name=t,this.symbols=e,this.postprocess=s,this}F.highestId=0;F.prototype.toString=function(t){var e=typeof t>\"u\"?this.symbols.map(Te).join(\" \"):this.symbols.slice(0,t).map(Te).join(\" \")+\" \\u25CF \"+this.symbols.slice(t).map(Te).join(\" \");return this.name+\" \\u2192 \"+e};function x(t,e,s,r){this.rule=t,this.dot=e,this.reference=s,this.data=[],this.wantedBy=r,this.isComplete=this.dot===t.symbols.length}x.prototype.toString=function(){return\"{\"+this.rule.toString(this.dot)+\"}, from: \"+(this.reference||0)};x.prototype.nextState=function(t){var e=new x(this.rule,this.dot+1,this.reference,this.wantedBy);return e.left=this,e.right=t,e.isComplete&&(e.data=e.build(),e.right=void 0),e};x.prototype.build=function(){var t=[],e=this;do t.push(e.right.data),e=e.left;while(e.left);return t.reverse(),t};x.prototype.finish=function(){this.rule.postprocess&&(this.data=this.rule.postprocess(this.data,this.reference,S.fail))};function b(t,e){this.grammar=t,this.index=e,this.states=[],this.wants={},this.scannable=[],this.completed={}}b.prototype.process=function(t){for(var e=this.states,s=this.wants,r=this.completed,a=0;a<e.length;a++){var E=e[a];if(E.isComplete){if(E.finish(),E.data!==S.fail){for(var i=E.wantedBy,T=i.length;T--;){var N=i[T];this.complete(N,E)}if(E.reference===this.index){var R=E.rule.name;(this.completed[R]=this.completed[R]||[]).push(E)}}}else{var R=E.rule.symbols[E.dot];if(typeof R!=\"string\"){this.scannable.push(E);continue}if(s[R]){if(s[R].push(E),r.hasOwnProperty(R))for(var m=r[R],T=0;T<m.length;T++){var $=m[T];this.complete(E,$)}}else s[R]=[E],this.predict(R)}}};b.prototype.predict=function(t){for(var e=this.grammar.byName[t]||[],s=0;s<e.length;s++){var r=e[s],a=this.wants[t],E=new x(r,0,this.index,a);this.states.push(E)}};b.prototype.complete=function(t,e){var s=t.nextState(e);this.states.push(s)};function H(t,e){this.rules=t,this.start=e||this.rules[0].name;var s=this.byName={};this.rules.forEach(function(r){s.hasOwnProperty(r.name)||(s[r.name]=[]),s[r.name].push(r)})}H.fromCompiled=function(r,e){var s=r.Lexer;r.ParserStart&&(e=r.ParserStart,r=r.ParserRules);var r=r.map(function(E){return new F(E.name,E.symbols,E.postprocess)}),a=new H(r,e);return a.lexer=s,a};function M(){this.reset(\"\")}M.prototype.reset=function(t,e){this.buffer=t,this.index=0,this.line=e?e.line:1,this.lastLineBreak=e?-e.col:0};M.prototype.next=function(){if(this.index<this.buffer.length){var t=this.buffer[this.index++];return t===`\n`&&(this.line+=1,this.lastLineBreak=this.index),{value:t}}};M.prototype.save=function(){return{line:this.line,col:this.index-this.lastLineBreak}};M.prototype.formatError=function(t,e){var s=this.buffer;if(typeof s==\"string\"){var r=s.split(`\n`).slice(Math.max(0,this.line-5),this.line),a=s.indexOf(`\n`,this.index);a===-1&&(a=s.length);var E=this.index-this.lastLineBreak,i=String(this.line).length;return e+=\" at line \"+this.line+\" col \"+E+`:\n\n`,e+=r.map(function(N,R){return T(this.line-r.length+R+1,i)+\" \"+N},this).join(`\n`),e+=`\n`+T(\"\",i+E)+`^\n`,e}else return e+\" at index \"+(this.index-1);function T(N,R){var m=String(N);return Array(R-m.length+1).join(\" \")+m}};function S(t,e,s){if(t instanceof H)var r=t,s=e;else var r=H.fromCompiled(t,e);this.grammar=r,this.options={keepHistory:!1,lexer:r.lexer||new M};for(var a in s||{})this.options[a]=s[a];this.lexer=this.options.lexer,this.lexerState=void 0;var E=new b(r,0),i=this.table=[E];E.wants[r.start]=[],E.predict(r.start),E.process(),this.current=0}S.fail={};S.prototype.feed=function(t){var e=this.lexer;e.reset(t,this.lexerState);for(var s;;){try{if(s=e.next(),!s)break}catch(le){var i=new b(this.grammar,this.current+1);this.table.push(i);var r=new Error(this.reportLexerError(le));throw r.offset=this.current,r.token=le.token,r}var a=this.table[this.current];this.options.keepHistory||delete this.table[this.current-1];var E=this.current+1,i=new b(this.grammar,E);this.table.push(i);for(var T=s.text!==void 0?s.text:s.value,N=e.constructor===M?s.value:s,R=a.scannable,m=R.length;m--;){var $=R[m],B=$.rule.symbols[$.dot];if(B.test?B.test(N):B.type?B.type===s.type:B.literal===T){var We=$.nextState({data:N,token:s,isToken:!0,reference:E-1});i.states.push(We)}}if(i.process(),i.states.length===0){var r=new Error(this.reportError(s));throw r.offset=this.current,r.token=s,r}this.options.keepHistory&&(a.lexerState=e.save()),this.current++}return a&&(this.lexerState=e.save()),this.results=this.finish(),this};S.prototype.reportLexerError=function(t){var e,s,r=t.token;return r?(e=\"input \"+JSON.stringify(r.text[0])+\" (lexer error)\",s=this.lexer.formatError(r,\"Syntax error\")):(e=\"input (lexer error)\",s=t.message),this.reportErrorCommon(s,e)};S.prototype.reportError=function(t){var e=(t.type?t.type+\" token: \":\"\")+JSON.stringify(t.value!==void 0?t.value:t),s=this.lexer.formatError(t,\"Syntax error\");return this.reportErrorCommon(s,e)};S.prototype.reportErrorCommon=function(t,e){var s=[];s.push(t);var r=this.table.length-2,a=this.table[r],E=a.states.filter(function(T){var N=T.rule.symbols[T.dot];return N&&typeof N!=\"string\"});if(E.length===0)s.push(\"Unexpected \"+e+`. I did not expect any more input. Here is the state of my parse table:\n`),this.displayStateStack(a.states,s);else{s.push(\"Unexpected \"+e+`. Instead, I was expecting to see one of the following:\n`);var i=E.map(function(T){return this.buildFirstStateStack(T,[])||[T]},this);i.forEach(function(T){var N=T[0],R=N.rule.symbols[N.dot],m=this.getSymbolDisplay(R);s.push(\"A \"+m+\" based on:\"),this.displayStateStack(T,s)},this)}return s.push(\"\"),s.join(`\n`)};S.prototype.displayStateStack=function(t,e){for(var s,r=0,a=0;a<t.length;a++){var E=t[a],i=E.rule.toString(E.dot);i===s?r++:(r>0&&e.push(\" ^ \"+r+\" more lines identical to this\"),r=0,e.push(\" \"+i)),s=i}};S.prototype.getSymbolDisplay=function(t){return Ct(t)};S.prototype.buildFirstStateStack=function(t,e){if(e.indexOf(t)!==-1)return null;if(t.wantedBy.length===0)return[t];var s=t.wantedBy[0],r=[t].concat(e),a=this.buildFirstStateStack(s,r);return a===null?null:[t].concat(a)};S.prototype.save=function(){var t=this.table[this.current];return t.lexerState=this.lexerState,t};S.prototype.restore=function(t){var e=t.index;this.current=e,this.table[e]=t,this.table.splice(e+1),this.lexerState=t.lexerState,this.results=this.finish()};S.prototype.rewind=function(t){if(!this.options.keepHistory)throw new Error(\"set option `keepHistory` to enable rewinding\");this.restore(this.table[t])};S.prototype.finish=function(){var t=[],e=this.grammar.start,s=this.table[this.table.length-1];return s.states.forEach(function(r){r.rule.name===e&&r.dot===r.rule.symbols.length&&r.reference===0&&r.data!==S.fail&&t.push(r)}),t.map(function(r){return r.data})};function Ct(t){var e=typeof t;if(e===\"string\")return t;if(e===\"object\"){if(t.literal)return JSON.stringify(t.literal);if(t instanceof RegExp)return\"character matching \"+t;if(t.type)return t.type+\" token\";if(t.test)return\"token matching \"+String(t.test);throw new Error(\"Unknown symbol type: \"+t)}}function Te(t){var e=typeof t;if(e===\"string\")return t;if(e===\"object\"){if(t.literal)return JSON.stringify(t.literal);if(t instanceof RegExp)return t.toString();if(t.type)return\"%\"+t.type;if(t.test)return\"<\"+String(t.test)+\">\";throw new Error(\"Unknown symbol type: \"+t)}}var Ue={Parser:S,Grammar:H,Rule:F};function $e(t){return t.map(dt).map(Lt).map(Pt).map(ht).map(yt)}var dt=(t,e,s)=>{if(Ce(t.type)){let r=ft(s,e);if(r&&r.type===\"PROPERTY_ACCESS_OPERATOR\")return{...t,type:\"IDENTIFIER\",text:t.raw};let a=G(s,e);if(a&&a.type===\"PROPERTY_ACCESS_OPERATOR\")return{...t,type:\"IDENTIFIER\",text:t.raw}}return t},Lt=(t,e,s)=>{if(t.type===\"RESERVED_FUNCTION_NAME\"){let r=G(s,e);if(!r||!Be(r))return{...t,type:\"IDENTIFIER\",text:t.raw}}return t},Pt=(t,e,s)=>{if(t.type===\"RESERVED_DATA_TYPE\"){let r=G(s,e);if(r&&Be(r))return{...t,type:\"RESERVED_PARAMETERIZED_DATA_TYPE\"}}return t},ht=(t,e,s)=>{if(t.type===\"IDENTIFIER\"){let r=G(s,e);if(r&&we(r))return{...t,type:\"ARRAY_IDENTIFIER\"}}return t},yt=(t,e,s)=>{if(t.type===\"RESERVED_DATA_TYPE\"){let r=G(s,e);if(r&&we(r))return{...t,type:\"ARRAY_KEYWORD\"}}return t},ft=(t,e)=>G(t,e,-1),G=(t,e,s=1)=>{let r=1;for(;t[e+r*s]&&Dt(t[e+r*s]);)r++;return t[e+r*s]},Be=t=>t.type===\"OPEN_PAREN\"&&t.text===\"(\",we=t=>t.type===\"OPEN_PAREN\"&&t.text===\"[\",Dt=t=>t.type===\"BLOCK_COMMENT\"||t.type===\"LINE_COMMENT\";var L=class{constructor(e){this.tokenize=e}index=0;tokens=[];input=\"\";reset(e,s){this.input=e,this.index=0,this.tokens=this.tokenize(e)}next(){return this.tokens[this.index++]}save(){}formatError(e){let{line:s,col:r}=q(this.input,e.start);return`Parse error at token: ${e.text} at line ${s} column ${r}`}has(e){return e in u}};function Re(t){return t[0]}var n=new L(t=>[]),P=([[t]])=>t,l=t=>({type:\"keyword\",tokenType:t.type,text:t.text,raw:t.raw}),ve=t=>({type:\"data_type\",text:t.text,raw:t.raw}),A=(t,{leading:e,trailing:s})=>(e?.length&&(t={...t,leadingComments:e}),s?.length&&(t={...t,trailingComments:s}),t),bt=(t,{leading:e,trailing:s})=>{if(e?.length){let[r,...a]=t;t=[A(r,{leading:e}),...a]}if(s?.length){let r=t.slice(0,-1),a=t[t.length-1];t=[...r,A(a,{trailing:s})]}return t},Mt={Lexer:n,ParserRules:[{name:\"main$ebnf$1\",symbols:[]},{name:\"main$ebnf$1\",symbols:[\"main$ebnf$1\",\"statement\"],postprocess:t=>t[0].concat([t[1]])},{name:\"main\",symbols:[\"main$ebnf$1\"],postprocess:([t])=>{let e=t[t.length-1];return e&&!e.hasSemicolon?e.children.length>0?t:t.slice(0,-1):t}},{name:\"statement$subexpression$1\",symbols:[n.has(\"DELIMITER\")?{type:\"DELIMITER\"}:DELIMITER]},{name:\"statement$subexpression$1\",symbols:[n.has(\"EOF\")?{type:\"EOF\"}:EOF]},{name:\"statement\",symbols:[\"expressions_or_clauses\",\"statement$subexpression$1\"],postprocess:([t,[e]])=>({type:\"statement\",children:t,hasSemicolon:e.type===\"DELIMITER\"})},{name:\"expressions_or_clauses$ebnf$1\",symbols:[]},{name:\"expressions_or_clauses$ebnf$1\",symbols:[\"expressions_or_clauses$ebnf$1\",\"free_form_sql\"],postprocess:t=>t[0].concat([t[1]])},{name:\"expressions_or_clauses$ebnf$2\",symbols:[]},{name:\"expressions_or_clauses$ebnf$2\",symbols:[\"expressions_or_clauses$ebnf$2\",\"clause\"],postprocess:t=>t[0].concat([t[1]])},{name:\"expressions_or_clauses\",symbols:[\"expressions_or_clauses$ebnf$1\",\"expressions_or_clauses$ebnf$2\"],postprocess:([t,e])=>[...t,...e]},{name:\"clause$subexpression$1\",symbols:[\"limit_clause\"]},{name:\"clause$subexpression$1\",symbols:[\"select_clause\"]},{name:\"clause$subexpression$1\",symbols:[\"other_clause\"]},{name:\"clause$subexpression$1\",symbols:[\"set_operation\"]},{name:\"clause\",symbols:[\"clause$subexpression$1\"],postprocess:P},{name:\"limit_clause$ebnf$1$subexpression$1$ebnf$1\",symbols:[\"free_form_sql\"]},{name:\"limit_clause$ebnf$1$subexpression$1$ebnf$1\",symbols:[\"limit_clause$ebnf$1$subexpression$1$ebnf$1\",\"free_form_sql\"],postprocess:t=>t[0].concat([t[1]])},{name:\"limit_clause$ebnf$1$subexpression$1\",symbols:[n.has(\"COMMA\")?{type:\"COMMA\"}:COMMA,\"limit_clause$ebnf$1$subexpression$1$ebnf$1\"]},{name:\"limit_clause$ebnf$1\",symbols:[\"limit_clause$ebnf$1$subexpression$1\"],postprocess:Re},{name:\"limit_clause$ebnf$1\",symbols:[],postprocess:()=>null},{name:\"limit_clause\",symbols:[n.has(\"LIMIT\")?{type:\"LIMIT\"}:LIMIT,\"_\",\"expression_chain_\",\"limit_clause$ebnf$1\"],postprocess:([t,e,s,r])=>{if(r){let[a,E]=r;return{type:\"limit_clause\",limitKw:A(l(t),{trailing:e}),offset:s,count:E}}else return{type:\"limit_clause\",limitKw:A(l(t),{trailing:e}),count:s}}},{name:\"select_clause$subexpression$1$ebnf$1\",symbols:[]},{name:\"select_clause$subexpression$1$ebnf$1\",symbols:[\"select_clause$subexpression$1$ebnf$1\",\"free_form_sql\"],postprocess:t=>t[0].concat([t[1]])},{name:\"select_clause$subexpression$1\",symbols:[\"all_columns_asterisk\",\"select_clause$subexpression$1$ebnf$1\"]},{name:\"select_clause$subexpression$1$ebnf$2\",symbols:[]},{name:\"select_clause$subexpression$1$ebnf$2\",symbols:[\"select_clause$subexpression$1$ebnf$2\",\"free_form_sql\"],postprocess:t=>t[0].concat([t[1]])},{name:\"select_clause$subexpression$1\",symbols:[\"asteriskless_free_form_sql\",\"select_clause$subexpression$1$ebnf$2\"]},{name:\"select_clause\",symbols:[n.has(\"RESERVED_SELECT\")?{type:\"RESERVED_SELECT\"}:RESERVED_SELECT,\"select_clause$subexpression$1\"],postprocess:([t,[e,s]])=>({type:\"clause\",nameKw:l(t),children:[e,...s]})},{name:\"select_clause\",symbols:[n.has(\"RESERVED_SELECT\")?{type:\"RESERVED_SELECT\"}:RESERVED_SELECT],postprocess:([t])=>({type:\"clause\",nameKw:l(t),children:[]})},{name:\"all_columns_asterisk\",symbols:[n.has(\"ASTERISK\")?{type:\"ASTERISK\"}:ASTERISK],postprocess:()=>({type:\"all_columns_asterisk\"})},{name:\"other_clause$ebnf$1\",symbols:[]},{name:\"other_clause$ebnf$1\",symbols:[\"other_clause$ebnf$1\",\"free_form_sql\"],postprocess:t=>t[0].concat([t[1]])},{name:\"other_clause\",symbols:[n.has(\"RESERVED_CLAUSE\")?{type:\"RESERVED_CLAUSE\"}:RESERVED_CLAUSE,\"other_clause$ebnf$1\"],postprocess:([t,e])=>({type:\"clause\",nameKw:l(t),children:e})},{name:\"set_operation$ebnf$1\",symbols:[]},{name:\"set_operation$ebnf$1\",symbols:[\"set_operation$ebnf$1\",\"free_form_sql\"],postprocess:t=>t[0].concat([t[1]])},{name:\"set_operation\",symbols:[n.has(\"RESERVED_SET_OPERATION\")?{type:\"RESERVED_SET_OPERATION\"}:RESERVED_SET_OPERATION,\"set_operation$ebnf$1\"],postprocess:([t,e])=>({type:\"set_operation\",nameKw:l(t),children:e})},{name:\"expression_chain_$ebnf$1\",symbols:[\"expression_with_comments_\"]},{name:\"expression_chain_$ebnf$1\",symbols:[\"expression_chain_$ebnf$1\",\"expression_with_comments_\"],postprocess:t=>t[0].concat([t[1]])},{name:\"expression_chain_\",symbols:[\"expression_chain_$ebnf$1\"],postprocess:Re},{name:\"expression_chain$ebnf$1\",symbols:[]},{name:\"expression_chain$ebnf$1\",symbols:[\"expression_chain$ebnf$1\",\"_expression_with_comments\"],postprocess:t=>t[0].concat([t[1]])},{name:\"expression_chain\",symbols:[\"expression\",\"expression_chain$ebnf$1\"],postprocess:([t,e])=>[t,...e]},{name:\"andless_expression_chain$ebnf$1\",symbols:[]},{name:\"andless_expression_chain$ebnf$1\",symbols:[\"andless_expression_chain$ebnf$1\",\"_andless_expression_with_comments\"],postprocess:t=>t[0].concat([t[1]])},{name:\"andless_expression_chain\",symbols:[\"andless_expression\",\"andless_expression_chain$ebnf$1\"],postprocess:([t,e])=>[t,...e]},{name:\"expression_with_comments_\",symbols:[\"expression\",\"_\"],postprocess:([t,e])=>A(t,{trailing:e})},{name:\"_expression_with_comments\",symbols:[\"_\",\"expression\"],postprocess:([t,e])=>A(e,{leading:t})},{name:\"_andless_expression_with_comments\",symbols:[\"_\",\"andless_expression\"],postprocess:([t,e])=>A(e,{leading:t})},{name:\"free_form_sql$subexpression$1\",symbols:[\"asteriskless_free_form_sql\"]},{name:\"free_form_sql$subexpression$1\",symbols:[\"asterisk\"]},{name:\"free_form_sql\",symbols:[\"free_form_sql$subexpression$1\"],postprocess:P},{name:\"asteriskless_free_form_sql$subexpression$1\",symbols:[\"asteriskless_andless_expression\"]},{name:\"asteriskless_free_form_sql$subexpression$1\",symbols:[\"logic_operator\"]},{name:\"asteriskless_free_form_sql$subexpression$1\",symbols:[\"comma\"]},{name:\"asteriskless_free_form_sql$subexpression$1\",symbols:[\"comment\"]},{name:\"asteriskless_free_form_sql$subexpression$1\",symbols:[\"other_keyword\"]},{name:\"asteriskless_free_form_sql\",symbols:[\"asteriskless_free_form_sql$subexpression$1\"],postprocess:P},{name:\"expression$subexpression$1\",symbols:[\"andless_expression\"]},{name:\"expression$subexpression$1\",symbols:[\"logic_operator\"]},{name:\"expression\",symbols:[\"expression$subexpression$1\"],postprocess:P},{name:\"andless_expression$subexpression$1\",symbols:[\"asteriskless_andless_expression\"]},{name:\"andless_expression$subexpression$1\",symbols:[\"asterisk\"]},{name:\"andless_expression\",symbols:[\"andless_expression$subexpression$1\"],postprocess:P},{name:\"asteriskless_andless_expression$subexpression$1\",symbols:[\"atomic_expression\"]},{name:\"asteriskless_andless_expression$subexpression$1\",symbols:[\"between_predicate\"]},{name:\"asteriskless_andless_expression$subexpression$1\",symbols:[\"case_expression\"]},{name:\"asteriskless_andless_expression\",symbols:[\"asteriskless_andless_expression$subexpression$1\"],postprocess:P},{name:\"atomic_expression$subexpression$1\",symbols:[\"array_subscript\"]},{name:\"atomic_expression$subexpression$1\",symbols:[\"function_call\"]},{name:\"atomic_expression$subexpression$1\",symbols:[\"property_access\"]},{name:\"atomic_expression$subexpression$1\",symbols:[\"parenthesis\"]},{name:\"atomic_expression$subexpression$1\",symbols:[\"curly_braces\"]},{name:\"atomic_expression$subexpression$1\",symbols:[\"square_brackets\"]},{name:\"atomic_expression$subexpression$1\",symbols:[\"operator\"]},{name:\"atomic_expression$subexpression$1\",symbols:[\"identifier\"]},{name:\"atomic_expression$subexpression$1\",symbols:[\"parameter\"]},{name:\"atomic_expression$subexpression$1\",symbols:[\"literal\"]},{name:\"atomic_expression$subexpression$1\",symbols:[\"data_type\"]},{name:\"atomic_expression$subexpression$1\",symbols:[\"keyword\"]},{name:\"atomic_expression\",symbols:[\"atomic_expression$subexpression$1\"],postprocess:P},{name:\"array_subscript\",symbols:[n.has(\"ARRAY_IDENTIFIER\")?{type:\"ARRAY_IDENTIFIER\"}:ARRAY_IDENTIFIER,\"_\",\"square_brackets\"],postprocess:([t,e,s])=>({type:\"array_subscript\",array:A({type:\"identifier\",quoted:!1,text:t.text},{trailing:e}),parenthesis:s})},{name:\"array_subscript\",symbols:[n.has(\"ARRAY_KEYWORD\")?{type:\"ARRAY_KEYWORD\"}:ARRAY_KEYWORD,\"_\",\"square_brackets\"],postprocess:([t,e,s])=>({type:\"array_subscript\",array:A(l(t),{trailing:e}),parenthesis:s})},{name:\"function_call\",symbols:[n.has(\"RESERVED_FUNCTION_NAME\")?{type:\"RESERVED_FUNCTION_NAME\"}:RESERVED_FUNCTION_NAME,\"_\",\"parenthesis\"],postprocess:([t,e,s])=>({type:\"function_call\",nameKw:A(l(t),{trailing:e}),parenthesis:s})},{name:\"parenthesis\",symbols:[{literal:\"(\"},\"expressions_or_clauses\",{literal:\")\"}],postprocess:([t,e,s])=>({type:\"parenthesis\",children:e,openParen:\"(\",closeParen:\")\"})},{name:\"curly_braces$ebnf$1\",symbols:[]},{name:\"curly_braces$ebnf$1\",symbols:[\"curly_braces$ebnf$1\",\"free_form_sql\"],postprocess:t=>t[0].concat([t[1]])},{name:\"curly_braces\",symbols:[{literal:\"{\"},\"curly_braces$ebnf$1\",{literal:\"}\"}],postprocess:([t,e,s])=>({type:\"parenthesis\",children:e,openParen:\"{\",closeParen:\"}\"})},{name:\"square_brackets$ebnf$1\",symbols:[]},{name:\"square_brackets$ebnf$1\",symbols:[\"square_brackets$ebnf$1\",\"free_form_sql\"],postprocess:t=>t[0].concat([t[1]])},{name:\"square_brackets\",symbols:[{literal:\"[\"},\"square_brackets$ebnf$1\",{literal:\"]\"}],postprocess:([t,e,s])=>({type:\"parenthesis\",children:e,openParen:\"[\",closeParen:\"]\"})},{name:\"property_access$subexpression$1\",symbols:[\"identifier\"]},{name:\"property_access$subexpression$1\",symbols:[\"array_subscript\"]},{name:\"property_access$subexpression$1\",symbols:[\"all_columns_asterisk\"]},{name:\"property_access$subexpression$1\",symbols:[\"parameter\"]},{name:\"property_access\",symbols:[\"atomic_expression\",\"_\",n.has(\"PROPERTY_ACCESS_OPERATOR\")?{type:\"PROPERTY_ACCESS_OPERATOR\"}:PROPERTY_ACCESS_OPERATOR,\"_\",\"property_access$subexpression$1\"],postprocess:([t,e,s,r,[a]])=>({type:\"property_access\",object:A(t,{trailing:e}),operator:s.text,property:A(a,{leading:r})})},{name:\"between_predicate\",symbols:[n.has(\"BETWEEN\")?{type:\"BETWEEN\"}:BETWEEN,\"_\",\"andless_expression_chain\",\"_\",n.has(\"AND\")?{type:\"AND\"}:AND,\"_\",\"andless_expression\"],postprocess:([t,e,s,r,a,E,i])=>({type:\"between_predicate\",betweenKw:l(t),expr1:bt(s,{leading:e,trailing:r}),andKw:l(a),expr2:[A(i,{leading:E})]})},{name:\"case_expression$ebnf$1\",symbols:[\"expression_chain_\"],postprocess:Re},{name:\"case_expression$ebnf$1\",symbols:[],postprocess:()=>null},{name:\"case_expression$ebnf$2\",symbols:[]},{name:\"case_expression$ebnf$2\",symbols:[\"case_expression$ebnf$2\",\"case_clause\"],postprocess:t=>t[0].concat([t[1]])},{name:\"case_expression\",symbols:[n.has(\"CASE\")?{type:\"CASE\"}:CASE,\"_\",\"case_expression$ebnf$1\",\"case_expression$ebnf$2\",n.has(\"END\")?{type:\"END\"}:END],postprocess:([t,e,s,r,a])=>({type:\"case_expression\",caseKw:A(l(t),{trailing:e}),endKw:l(a),expr:s||[],clauses:r})},{name:\"case_clause\",symbols:[n.has(\"WHEN\")?{type:\"WHEN\"}:WHEN,\"_\",\"expression_chain_\",n.has(\"THEN\")?{type:\"THEN\"}:THEN,\"_\",\"expression_chain_\"],postprocess:([t,e,s,r,a,E])=>({type:\"case_when\",whenKw:A(l(t),{trailing:e}),thenKw:A(l(r),{trailing:a}),condition:s,result:E})},{name:\"case_clause\",symbols:[n.has(\"ELSE\")?{type:\"ELSE\"}:ELSE,\"_\",\"expression_chain_\"],postprocess:([t,e,s])=>({type:\"case_else\",elseKw:A(l(t),{trailing:e}),result:s})},{name:\"comma$subexpression$1\",symbols:[n.has(\"COMMA\")?{type:\"COMMA\"}:COMMA]},{name:\"comma\",symbols:[\"comma$subexpression$1\"],postprocess:([[t]])=>({type:\"comma\"})},{name:\"asterisk$subexpression$1\",symbols:[n.has(\"ASTERISK\")?{type:\"ASTERISK\"}:ASTERISK]},{name:\"asterisk\",symbols:[\"asterisk$subexpression$1\"],postprocess:([[t]])=>({type:\"operator\",text:t.text})},{name:\"operator$subexpression$1\",symbols:[n.has(\"OPERATOR\")?{type:\"OPERATOR\"}:OPERATOR]},{name:\"operator\",symbols:[\"operator$subexpression$1\"],postprocess:([[t]])=>({type:\"operator\",text:t.text})},{name:\"identifier$subexpression$1\",symbols:[n.has(\"IDENTIFIER\")?{type:\"IDENTIFIER\"}:IDENTIFIER]},{name:\"identifier$subexpression$1\",symbols:[n.has(\"QUOTED_IDENTIFIER\")?{type:\"QUOTED_IDENTIFIER\"}:QUOTED_IDENTIFIER]},{name:\"identifier$subexpression$1\",symbols:[n.has(\"VARIABLE\")?{type:\"VARIABLE\"}:VARIABLE]},{name:\"identifier\",symbols:[\"identifier$subexpression$1\"],postprocess:([[t]])=>({type:\"identifier\",quoted:t.type!==\"IDENTIFIER\",text:t.text})},{name:\"parameter$subexpression$1\",symbols:[n.has(\"NAMED_PARAMETER\")?{type:\"NAMED_PARAMETER\"}:NAMED_PARAMETER]},{name:\"parameter$subexpression$1\",symbols:[n.has(\"QUOTED_PARAMETER\")?{type:\"QUOTED_PARAMETER\"}:QUOTED_PARAMETER]},{name:\"parameter$subexpression$1\",symbols:[n.has(\"NUMBERED_PARAMETER\")?{type:\"NUMBERED_PARAMETER\"}:NUMBERED_PARAMETER]},{name:\"parameter$subexpression$1\",symbols:[n.has(\"POSITIONAL_PARAMETER\")?{type:\"POSITIONAL_PARAMETER\"}:POSITIONAL_PARAMETER]},{name:\"parameter$subexpression$1\",symbols:[n.has(\"CUSTOM_PARAMETER\")?{type:\"CUSTOM_PARAMETER\"}:CUSTOM_PARAMETER]},{name:\"parameter\",symbols:[\"parameter$subexpression$1\"],postprocess:([[t]])=>({type:\"parameter\",key:t.key,text:t.text})},{name:\"literal$subexpression$1\",symbols:[n.has(\"NUMBER\")?{type:\"NUMBER\"}:NUMBER]},{name:\"literal$subexpression$1\",symbols:[n.has(\"STRING\")?{type:\"STRING\"}:STRING]},{name:\"literal\",symbols:[\"literal$subexpression$1\"],postprocess:([[t]])=>({type:\"literal\",text:t.text})},{name:\"keyword$subexpression$1\",symbols:[n.has(\"RESERVED_KEYWORD\")?{type:\"RESERVED_KEYWORD\"}:RESERVED_KEYWORD]},{name:\"keyword$subexpression$1\",symbols:[n.has(\"RESERVED_KEYWORD_PHRASE\")?{type:\"RESERVED_KEYWORD_PHRASE\"}:RESERVED_KEYWORD_PHRASE]},{name:\"keyword$subexpression$1\",symbols:[n.has(\"RESERVED_JOIN\")?{type:\"RESERVED_JOIN\"}:RESERVED_JOIN]},{name:\"keyword\",symbols:[\"keyword$subexpression$1\"],postprocess:([[t]])=>l(t)},{name:\"data_type$subexpression$1\",symbols:[n.has(\"RESERVED_DATA_TYPE\")?{type:\"RESERVED_DATA_TYPE\"}:RESERVED_DATA_TYPE]},{name:\"data_type$subexpression$1\",symbols:[n.has(\"RESERVED_DATA_TYPE_PHRASE\")?{type:\"RESERVED_DATA_TYPE_PHRASE\"}:RESERVED_DATA_TYPE_PHRASE]},{name:\"data_type\",symbols:[\"data_type$subexpression$1\"],postprocess:([[t]])=>ve(t)},{name:\"data_type\",symbols:[n.has(\"RESERVED_PARAMETERIZED_DATA_TYPE\")?{type:\"RESERVED_PARAMETERIZED_DATA_TYPE\"}:RESERVED_PARAMETERIZED_DATA_TYPE,\"_\",\"parenthesis\"],postprocess:([t,e,s])=>({type:\"parameterized_data_type\",dataType:A(ve(t),{trailing:e}),parenthesis:s})},{name:\"logic_operator$subexpression$1\",symbols:[n.has(\"AND\")?{type:\"AND\"}:AND]},{name:\"logic_operator$subexpression$1\",symbols:[n.has(\"OR\")?{type:\"OR\"}:OR]},{name:\"logic_operator$subexpression$1\",symbols:[n.has(\"XOR\")?{type:\"XOR\"}:XOR]},{name:\"logic_operator\",symbols:[\"logic_operator$subexpression$1\"],postprocess:([[t]])=>l(t)},{name:\"other_keyword$subexpression$1\",symbols:[n.has(\"WHEN\")?{type:\"WHEN\"}:WHEN]},{name:\"other_keyword$subexpression$1\",symbols:[n.has(\"THEN\")?{type:\"THEN\"}:THEN]},{name:\"other_keyword$subexpression$1\",symbols:[n.has(\"ELSE\")?{type:\"ELSE\"}:ELSE]},{name:\"other_keyword$subexpression$1\",symbols:[n.has(\"END\")?{type:\"END\"}:END]},{name:\"other_keyword\",symbols:[\"other_keyword$subexpression$1\"],postprocess:([[t]])=>l(t)},{name:\"_$ebnf$1\",symbols:[]},{name:\"_$ebnf$1\",symbols:[\"_$ebnf$1\",\"comment\"],postprocess:t=>t[0].concat([t[1]])},{name:\"_\",symbols:[\"_$ebnf$1\"],postprocess:([t])=>t},{name:\"comment\",symbols:[n.has(\"LINE_COMMENT\")?{type:\"LINE_COMMENT\"}:LINE_COMMENT],postprocess:([t])=>({type:\"line_comment\",text:t.text,precedingWhitespace:t.precedingWhitespace})},{name:\"comment\",symbols:[n.has(\"BLOCK_COMMENT\")?{type:\"BLOCK_COMMENT\"}:BLOCK_COMMENT],postprocess:([t])=>({type:\"block_comment\",text:t.text,precedingWhitespace:t.precedingWhitespace})},{name:\"comment\",symbols:[n.has(\"DISABLE_COMMENT\")?{type:\"DISABLE_COMMENT\"}:DISABLE_COMMENT],postprocess:([t])=>({type:\"disable_comment\",text:t.text,precedingWhitespace:t.precedingWhitespace})}],ParserStart:\"main\"},Ye=Mt;var{Parser:Gt,Grammar:gt}=Ue;function He(t){let e={},s=new L(a=>[...$e(t.tokenize(a,e)),te(a.length)]),r=new Gt(gt.fromCompiled(Ye),{lexer:s});return{parse:(a,E)=>{e=E;let{results:i}=r.feed(a);if(i.length===1)return i[0];throw i.length===0?new Error(\"Parse error: Invalid SQL\"):new Error(`Parse error: Ambiguous grammar\n${JSON.stringify(i,void 0,2)}`)}}}var h=class{constructor(e){this.indentation=e}items=[];add(...e){for(let s of e)switch(s){case 0:this.items.push(0);break;case 1:this.trimHorizontalWhitespace();break;case 2:this.trimWhitespace();break;case 3:this.trimHorizontalWhitespace(),this.addNewline(3);break;case 4:this.trimHorizontalWhitespace(),this.addNewline(4);break;case 5:this.addIndentation();break;case 6:this.items.push(6);break;default:this.items.push(s)}}trimHorizontalWhitespace(){for(;Ut(C(this.items));)this.items.pop()}trimWhitespace(){for(;$t(C(this.items));)this.items.pop()}addNewline(e){if(this.items.length>0)switch(C(this.items)){case 3:this.items.pop(),this.items.push(e);break;case 4:break;default:this.items.push(e);break}}addIndentation(){for(let e=0;e<this.indentation.getLevel();e++)this.items.push(6)}toString(){return this.items.map(e=>this.itemToString(e)).join(\"\")}getLayoutItems(){return this.items}itemToString(e){switch(e){case 0:return\" \";case 3:case 4:return`\n`;case 6:return this.indentation.getSingleIndent();default:return e}}},Ut=t=>t===0||t===6,$t=t=>t===0||t===6||t===3;function Z(t,e){if(e===\"standard\")return t;let s=[];return t.length>=10&&t.includes(\" \")&&([t,...s]=t.split(\" \")),e===\"tabularLeft\"?t=t.padEnd(9,\" \"):t=t.padStart(9,\" \"),t+[\"\",...s].join(\" \")}function pe(t){return de(t)||t===\"RESERVED_CLAUSE\"||t===\"RESERVED_SELECT\"||t===\"RESERVED_SET_OPERATION\"||t===\"RESERVED_JOIN\"||t===\"LIMIT\"}var _e=\"top-level\",Bt=\"block-level\",y=class{constructor(e){this.indent=e}indentTypes=[];getSingleIndent(){return this.indent}getLevel(){return this.indentTypes.length}increaseTopLevel(){this.indentTypes.push(_e)}increaseBlockLevel(){this.indentTypes.push(Bt)}decreaseTopLevel(){this.indentTypes.length>0&&C(this.indentTypes)===_e&&this.indentTypes.pop()}decreaseBlockLevel(){for(;this.indentTypes.length>0&&this.indentTypes.pop()===_e;);}};var k=class extends h{constructor(s){super(new y(\"\"));this.expressionWidth=s}length=0;trailingSpace=!1;add(...s){if(s.forEach(r=>this.addToLength(r)),this.length>this.expressionWidth)throw new g;super.add(...s)}addToLength(s){if(typeof s==\"string\")this.length+=s.length,this.trailingSpace=!1;else{if(s===4||s===3)throw new g;s===5||s===6||s===0?this.trailingSpace||(this.length++,this.trailingSpace=!0):(s===2||s===1)&&this.trailingSpace&&(this.trailingSpace=!1,this.length--)}}},g=class extends Error{};var W=class t{cfg;dialectCfg;params;layout;inline=!1;nodes=[];index=-1;constructor({cfg:e,dialectCfg:s,params:r,layout:a,inline:E=!1}){this.cfg=e,this.dialectCfg=s,this.inline=E,this.params=r,this.layout=a}format(e){for(this.nodes=e,this.index=0;this.index<this.nodes.length;this.index++)this.formatNode(this.nodes[this.index]);return this.layout}formatNode(e){this.formatComments(e.leadingComments),this.formatNodeWithoutComments(e),this.formatComments(e.trailingComments)}formatNodeWithoutComments(e){switch(e.type){case\"function_call\":return this.formatFunctionCall(e);case\"parameterized_data_type\":return this.formatParameterizedDataType(e);case\"array_subscript\":return this.formatArraySubscript(e);case\"property_access\":return this.formatPropertyAccess(e);case\"parenthesis\":return this.formatParenthesis(e);case\"between_predicate\":return this.formatBetweenPredicate(e);case\"case_expression\":return this.formatCaseExpression(e);case\"case_when\":return this.formatCaseWhen(e);case\"case_else\":return this.formatCaseElse(e);case\"clause\":return this.formatClause(e);case\"set_operation\":return this.formatSetOperation(e);case\"limit_clause\":return this.formatLimitClause(e);case\"all_columns_asterisk\":return this.formatAllColumnsAsterisk(e);case\"literal\":return this.formatLiteral(e);case\"identifier\":return this.formatIdentifier(e);case\"parameter\":return this.formatParameter(e);case\"operator\":return this.formatOperator(e);case\"comma\":return this.formatComma(e);case\"line_comment\":return this.formatLineComment(e);case\"block_comment\":return this.formatBlockComment(e);case\"disable_comment\":return this.formatBlockComment(e);case\"data_type\":return this.formatDataType(e);case\"keyword\":return this.formatKeywordNode(e)}}formatFunctionCall(e){this.withComments(e.nameKw,()=>{this.layout.add(this.showFunctionKw(e.nameKw))}),this.formatNode(e.parenthesis)}formatParameterizedDataType(e){this.withComments(e.dataType,()=>{this.layout.add(this.showDataType(e.dataType))}),this.formatNode(e.parenthesis)}formatArraySubscript(e){let s;switch(e.array.type){case\"data_type\":s=this.showDataType(e.array);break;case\"keyword\":s=this.showKw(e.array);break;default:s=this.showIdentifier(e.array);break}this.withComments(e.array,()=>{this.layout.add(s)}),this.formatNode(e.parenthesis)}formatPropertyAccess(e){this.formatNode(e.object),this.layout.add(1,e.operator),this.formatNode(e.property)}formatParenthesis(e){let s=this.formatInlineExpression(e.children);s?(this.layout.add(e.openParen),this.layout.add(...s.getLayoutItems()),this.layout.add(1,e.closeParen,0)):(this.layout.add(e.openParen,3),d(this.cfg)?(this.layout.add(5),this.layout=this.formatSubExpression(e.children)):(this.layout.indentation.increaseBlockLevel(),this.layout.add(5),this.layout=this.formatSubExpression(e.children),this.layout.indentation.decreaseBlockLevel()),this.layout.add(3,5,e.closeParen,0))}formatBetweenPredicate(e){this.layout.add(this.showKw(e.betweenKw),0),this.layout=this.formatSubExpression(e.expr1),this.layout.add(1,0,this.showNonTabularKw(e.andKw),0),this.layout=this.formatSubExpression(e.expr2),this.layout.add(0)}formatCaseExpression(e){this.formatNode(e.caseKw),this.layout.indentation.increaseBlockLevel(),this.layout=this.formatSubExpression(e.expr),this.layout=this.formatSubExpression(e.clauses),this.layout.indentation.decreaseBlockLevel(),this.layout.add(3,5),this.formatNode(e.endKw)}formatCaseWhen(e){this.layout.add(3,5),this.formatNode(e.whenKw),this.layout=this.formatSubExpression(e.condition),this.formatNode(e.thenKw),this.layout=this.formatSubExpression(e.result)}formatCaseElse(e){this.layout.add(3,5),this.formatNode(e.elseKw),this.layout=this.formatSubExpression(e.result)}formatClause(e){this.isOnelineClause(e)?this.formatClauseInOnelineStyle(e):d(this.cfg)?this.formatClauseInTabularStyle(e):this.formatClauseInIndentedStyle(e)}isOnelineClause(e){return d(this.cfg)?this.dialectCfg.tabularOnelineClauses[e.nameKw.text]:this.dialectCfg.onelineClauses[e.nameKw.text]}formatClauseInIndentedStyle(e){this.layout.add(3,5,this.showKw(e.nameKw),3),this.layout.indentation.increaseTopLevel(),this.layout.add(5),this.layout=this.formatSubExpression(e.children),this.layout.indentation.decreaseTopLevel()}formatClauseInOnelineStyle(e){this.layout.add(3,5,this.showKw(e.nameKw),0),this.layout=this.formatSubExpression(e.children)}formatClauseInTabularStyle(e){this.layout.add(3,5,this.showKw(e.nameKw),0),this.layout.indentation.increaseTopLevel(),this.layout=this.formatSubExpression(e.children),this.layout.indentation.decreaseTopLevel()}formatSetOperation(e){this.layout.add(3,5,this.showKw(e.nameKw),3),this.layout.add(5),this.layout=this.formatSubExpression(e.children)}formatLimitClause(e){this.withComments(e.limitKw,()=>{this.layout.add(3,5,this.showKw(e.limitKw))}),this.layout.indentation.increaseTopLevel(),d(this.cfg)?this.layout.add(0):this.layout.add(3,5),e.offset?(this.layout=this.formatSubExpression(e.offset),this.layout.add(1,\",\",0),this.layout=this.formatSubExpression(e.count)):this.layout=this.formatSubExpression(e.count),this.layout.indentation.decreaseTopLevel()}formatAllColumnsAsterisk(e){this.layout.add(\"*\",0)}formatLiteral(e){this.layout.add(e.text,0)}formatIdentifier(e){this.layout.add(this.showIdentifier(e),0)}formatParameter(e){this.layout.add(this.params.get(e),0)}formatOperator({text:e}){this.cfg.denseOperators||this.dialectCfg.alwaysDenseOperators.includes(e)?this.layout.add(1,e):e===\":\"?this.layout.add(1,e,0):this.layout.add(e,0)}formatComma(e){this.inline?this.layout.add(1,\",\",0):this.layout.add(1,\",\",3,5)}withComments(e,s){this.formatComments(e.leadingComments),s(),this.formatComments(e.trailingComments)}formatComments(e){e&&e.forEach(s=>{s.type===\"line_comment\"?this.formatLineComment(s):this.formatBlockComment(s)})}formatLineComment(e){X(e.precedingWhitespace||\"\")?this.layout.add(3,5,e.text,4,5):this.layout.getLayoutItems().length>0?this.layout.add(2,0,e.text,4,5):this.layout.add(e.text,4,5)}formatBlockComment(e){e.type===\"block_comment\"&&this.isMultilineBlockComment(e)?(this.splitBlockComment(e.text).forEach(s=>{this.layout.add(3,5,s)}),this.layout.add(3,5)):this.layout.add(e.text,0)}isMultilineBlockComment(e){return X(e.text)||X(e.precedingWhitespace||\"\")}isDocComment(e){let s=e.split(/\\n/);return/^\\/\\*\\*?$/.test(s[0])&&s.slice(1,s.length-1).every(r=>/^\\s*\\*/.test(r))&&/^\\s*\\*\\/$/.test(C(s))}splitBlockComment(e){return this.isDocComment(e)?e.split(/\\n/).map(s=>/^\\s*\\*/.test(s)?\" \"+s.replace(/^\\s*/,\"\"):s):e.split(/\\n/).map(s=>s.replace(/^\\s*/,\"\"))}formatSubExpression(e){return new t({cfg:this.cfg,dialectCfg:this.dialectCfg,params:this.params,layout:this.layout,inline:this.inline}).format(e)}formatInlineExpression(e){let s=this.params.getPositionalParameterIndex();try{return new t({cfg:this.cfg,dialectCfg:this.dialectCfg,params:this.params,layout:new k(this.cfg.expressionWidth),inline:!0}).format(e)}catch(r){if(r instanceof g){this.params.setPositionalParameterIndex(s);return}else throw r}}formatKeywordNode(e){switch(e.tokenType){case\"RESERVED_JOIN\":return this.formatJoin(e);case\"AND\":case\"OR\":case\"XOR\":return this.formatLogicalOperator(e);default:return this.formatKeyword(e)}}formatJoin(e){d(this.cfg)?(this.layout.indentation.decreaseTopLevel(),this.layout.add(3,5,this.showKw(e),0),this.layout.indentation.increaseTopLevel()):this.layout.add(3,5,this.showKw(e),0)}formatKeyword(e){this.layout.add(this.showKw(e),0)}formatLogicalOperator(e){this.cfg.logicalOperatorNewline===\"before\"?d(this.cfg)?(this.layout.indentation.decreaseTopLevel(),this.layout.add(3,5,this.showKw(e),0),this.layout.indentation.increaseTopLevel()):this.layout.add(3,5,this.showKw(e),0):this.layout.add(this.showKw(e),3,5)}formatDataType(e){this.layout.add(this.showDataType(e),0)}showKw(e){return pe(e.tokenType)?Z(this.showNonTabularKw(e),this.cfg.indentStyle):this.showNonTabularKw(e)}showNonTabularKw(e){switch(this.cfg.keywordCase){case\"preserve\":return D(e.raw);case\"upper\":return e.text;case\"lower\":return e.text.toLowerCase()}}showFunctionKw(e){return pe(e.tokenType)?Z(this.showNonTabularFunctionKw(e),this.cfg.indentStyle):this.showNonTabularFunctionKw(e)}showNonTabularFunctionKw(e){switch(this.cfg.functionCase){case\"preserve\":return D(e.raw);case\"upper\":return e.text;case\"lower\":return e.text.toLowerCase()}}showIdentifier(e){if(e.quoted)return e.text;switch(this.cfg.identifierCase){case\"preserve\":return e.text;case\"upper\":return e.text.toUpperCase();case\"lower\":return e.text.toLowerCase()}}showDataType(e){switch(this.cfg.dataTypeCase){case\"preserve\":return D(e.raw);case\"upper\":return e.text;case\"lower\":return e.text.toLowerCase()}}};var V=class{dialect;cfg;params;constructor(e,s){this.dialect=e,this.cfg=s,this.params=new Y(this.cfg.params)}format(e){let s=this.parse(e);return this.formatAst(s).trimEnd()}parse(e){return He(this.dialect.tokenizer).parse(e,this.cfg.paramTypes||{})}formatAst(e){return e.map(s=>this.formatStatement(s)).join(`\n`.repeat(this.cfg.linesBetweenQueries+1))}formatStatement(e){let s=new W({cfg:this.cfg,dialectCfg:this.dialect.formatOptions,params:this.params,layout:new h(new y(ge(this.cfg)))}).format(e.children);return e.hasSemicolon&&(this.cfg.newlineBeforeSemicolon?s.add(3,\";\"):s.add(2,\";\")),s.toString()}};var U=class extends Error{};function ke(t){let e=[\"multilineLists\",\"newlineBeforeOpenParen\",\"newlineBeforeCloseParen\",\"aliasAs\",\"commaPosition\",\"tabulateAlias\"];for(let s of e)if(s in t)throw new U(`${s} config is no more supported.`);if(t.expressionWidth<=0)throw new U(`expressionWidth config must be positive number. Received ${t.expressionWidth} instead.`);if(t.params&&!wt(t.params)&&console.warn('WARNING: All \"params\" option values should be strings.'),t.paramTypes&&!vt(t.paramTypes))throw new U(\"Empty regex given in custom paramTypes. That would result in matching infinite amount of parameters.\");return t}function wt(t){return(t instanceof Array?t:Object.values(t)).every(s=>typeof s==\"string\")}function vt(t){return t.custom&&Array.isArray(t.custom)?t.custom.every(e=>e.regex!==\"\"):!0}var Yt={bigquery:\"bigquery\",clickhouse:\"clickhouse\",db2:\"db2\",db2i:\"db2i\",duckdb:\"duckdb\",hive:\"hive\",mariadb:\"mariadb\",mysql:\"mysql\",n1ql:\"n1ql\",plsql:\"plsql\",postgresql:\"postgresql\",redshift:\"redshift\",spark:\"spark\",sqlite:\"sqlite\",sql:\"sql\",tidb:\"tidb\",trino:\"trino\",transactsql:\"transactsql\",tsql:\"transactsql\",singlestoredb:\"singlestoredb\",snowflake:\"snowflake\"},ta=Object.keys(Yt),Ht={tabWidth:2,useTabs:!1,keywordCase:\"preserve\",identifierCase:\"preserve\",dataTypeCase:\"preserve\",functionCase:\"preserve\",indentStyle:\"standard\",logicalOperatorNewline:\"before\",expressionWidth:50,linesBetweenQueries:1,denseOperators:!1,newlineBeforeSemicolon:!1};var Ft=(t,{dialect:e,...s})=>{if(typeof t!=\"string\")throw new Error(\"Invalid query argument. Expected string, instead got \"+typeof t);let r=ke({...Ht,...s});return new V(Ge(e),r).format(t)};export{Ft as formatDialect};\n","var _=E=>E.flatMap(M),M=E=>S(B(E)).map(U),U=E=>E.replace(/ +/g,\" \").trim(),B=E=>({type:\"mandatory_block\",items:I(E,0)[0]}),I=(E,T,R)=>{let A=[];for(;E[T];){let[O,D]=e(E,T);if(A.push(O),T=D,E[T]===\"|\")T++;else if(E[T]===\"}\"||E[T]===\"]\"){if(R!==E[T])throw new Error(`Unbalanced parenthesis in: ${E}`);return T++,[A,T]}else if(T===E.length){if(R)throw new Error(`Unbalanced parenthesis in: ${E}`);return[A,T]}else throw new Error(`Unexpected \"${E[T]}\"`)}return[A,T]},e=(E,T)=>{let R=[];for(;;){let[A,O]=r(E,T);if(A)R.push(A),T=O;else break}return R.length===1?[R[0],T]:[{type:\"concatenation\",items:R},T]},r=(E,T)=>{if(E[T]===\"{\")return H(E,T+1);if(E[T]===\"[\")return Y(E,T+1);{let R=\"\";for(;E[T]&&/[A-Za-z0-9_ ]/.test(E[T]);)R+=E[T],T++;return[R,T]}},H=(E,T)=>{let[R,A]=I(E,T,\"}\");return[{type:\"mandatory_block\",items:R},A]},Y=(E,T)=>{let[R,A]=I(E,T,\"]\");return[{type:\"optional_block\",items:R},A]},S=E=>{if(typeof E==\"string\")return[E];if(E.type===\"concatenation\")return E.items.map(S).reduce(s,[\"\"]);if(E.type===\"mandatory_block\")return E.items.flatMap(S);if(E.type===\"optional_block\")return[\"\",...E.items.flatMap(S)];throw new Error(`Unknown node type: ${E}`)},s=(E,T)=>{let R=[];for(let A of E)for(let O of T)R.push(A+O);return R};var L=[\"ABS\",\"ACOS\",\"ACOSD\",\"ACOSH\",\"ASIN\",\"ASIND\",\"ASINH\",\"ATAN\",\"ATAN2\",\"ATAN2D\",\"ATAND\",\"ATANH\",\"CBRT\",\"CEIL\",\"CEILING\",\"COS\",\"COSD\",\"COSH\",\"COT\",\"COTD\",\"DEGREES\",\"DIV\",\"EXP\",\"FACTORIAL\",\"FLOOR\",\"GCD\",\"LCM\",\"LN\",\"LOG\",\"LOG10\",\"MIN_SCALE\",\"MOD\",\"PI\",\"POWER\",\"RADIANS\",\"RANDOM\",\"ROUND\",\"SCALE\",\"SETSEED\",\"SIGN\",\"SIN\",\"SIND\",\"SINH\",\"SQRT\",\"TAN\",\"TAND\",\"TANH\",\"TRIM_SCALE\",\"TRUNC\",\"WIDTH_BUCKET\",\"ABS\",\"ASCII\",\"BIT_LENGTH\",\"BTRIM\",\"CHARACTER_LENGTH\",\"CHAR_LENGTH\",\"CHR\",\"CONCAT\",\"CONCAT_WS\",\"FORMAT\",\"INITCAP\",\"LEFT\",\"LENGTH\",\"LOWER\",\"LPAD\",\"LTRIM\",\"MD5\",\"NORMALIZE\",\"OCTET_LENGTH\",\"OVERLAY\",\"PARSE_IDENT\",\"PG_CLIENT_ENCODING\",\"POSITION\",\"QUOTE_IDENT\",\"QUOTE_LITERAL\",\"QUOTE_NULLABLE\",\"REGEXP_MATCH\",\"REGEXP_MATCHES\",\"REGEXP_REPLACE\",\"REGEXP_SPLIT_TO_ARRAY\",\"REGEXP_SPLIT_TO_TABLE\",\"REPEAT\",\"REPLACE\",\"REVERSE\",\"RIGHT\",\"RPAD\",\"RTRIM\",\"SPLIT_PART\",\"SPRINTF\",\"STARTS_WITH\",\"STRING_AGG\",\"STRING_TO_ARRAY\",\"STRING_TO_TABLE\",\"STRPOS\",\"SUBSTR\",\"SUBSTRING\",\"TO_ASCII\",\"TO_HEX\",\"TRANSLATE\",\"TRIM\",\"UNISTR\",\"UPPER\",\"BIT_COUNT\",\"BIT_LENGTH\",\"BTRIM\",\"CONVERT\",\"CONVERT_FROM\",\"CONVERT_TO\",\"DECODE\",\"ENCODE\",\"GET_BIT\",\"GET_BYTE\",\"LENGTH\",\"LTRIM\",\"MD5\",\"OCTET_LENGTH\",\"OVERLAY\",\"POSITION\",\"RTRIM\",\"SET_BIT\",\"SET_BYTE\",\"SHA224\",\"SHA256\",\"SHA384\",\"SHA512\",\"STRING_AGG\",\"SUBSTR\",\"SUBSTRING\",\"TRIM\",\"BIT_COUNT\",\"BIT_LENGTH\",\"GET_BIT\",\"LENGTH\",\"OCTET_LENGTH\",\"OVERLAY\",\"POSITION\",\"SET_BIT\",\"SUBSTRING\",\"REGEXP_MATCH\",\"REGEXP_MATCHES\",\"REGEXP_REPLACE\",\"REGEXP_SPLIT_TO_ARRAY\",\"REGEXP_SPLIT_TO_TABLE\",\"TO_CHAR\",\"TO_DATE\",\"TO_NUMBER\",\"TO_TIMESTAMP\",\"CLOCK_TIMESTAMP\",\"CURRENT_DATE\",\"CURRENT_TIME\",\"CURRENT_TIMESTAMP\",\"DATE_BIN\",\"DATE_PART\",\"DATE_TRUNC\",\"EXTRACT\",\"ISFINITE\",\"JUSTIFY_DAYS\",\"JUSTIFY_HOURS\",\"JUSTIFY_INTERVAL\",\"LOCALTIME\",\"LOCALTIMESTAMP\",\"MAKE_DATE\",\"MAKE_INTERVAL\",\"MAKE_TIME\",\"MAKE_TIMESTAMP\",\"MAKE_TIMESTAMPTZ\",\"NOW\",\"PG_SLEEP\",\"PG_SLEEP_FOR\",\"PG_SLEEP_UNTIL\",\"STATEMENT_TIMESTAMP\",\"TIMEOFDAY\",\"TO_TIMESTAMP\",\"TRANSACTION_TIMESTAMP\",\"ENUM_FIRST\",\"ENUM_LAST\",\"ENUM_RANGE\",\"AREA\",\"BOUND_BOX\",\"BOX\",\"CENTER\",\"CIRCLE\",\"DIAGONAL\",\"DIAMETER\",\"HEIGHT\",\"ISCLOSED\",\"ISOPEN\",\"LENGTH\",\"LINE\",\"LSEG\",\"NPOINTS\",\"PATH\",\"PCLOSE\",\"POINT\",\"POLYGON\",\"POPEN\",\"RADIUS\",\"SLOPE\",\"WIDTH\",\"ABBREV\",\"BROADCAST\",\"FAMILY\",\"HOST\",\"HOSTMASK\",\"INET_MERGE\",\"INET_SAME_FAMILY\",\"MACADDR8_SET7BIT\",\"MASKLEN\",\"NETMASK\",\"NETWORK\",\"SET_MASKLEN\",\"TRUNC\",\"ARRAY_TO_TSVECTOR\",\"GET_CURRENT_TS_CONFIG\",\"JSONB_TO_TSVECTOR\",\"JSON_TO_TSVECTOR\",\"LENGTH\",\"NUMNODE\",\"PHRASETO_TSQUERY\",\"PLAINTO_TSQUERY\",\"QUERYTREE\",\"SETWEIGHT\",\"STRIP\",\"TO_TSQUERY\",\"TO_TSVECTOR\",\"TSQUERY_PHRASE\",\"TSVECTOR_TO_ARRAY\",\"TS_DEBUG\",\"TS_DELETE\",\"TS_FILTER\",\"TS_HEADLINE\",\"TS_LEXIZE\",\"TS_PARSE\",\"TS_RANK\",\"TS_RANK_CD\",\"TS_REWRITE\",\"TS_STAT\",\"TS_TOKEN_TYPE\",\"WEBSEARCH_TO_TSQUERY\",\"GEN_RANDOM_UUID\",\"UUIDV4\",\"UUIDV7\",\"UUID_EXTRACT_TIMESTAMP\",\"UUID_EXTRACT_VERSION\",\"CURSOR_TO_XML\",\"CURSOR_TO_XMLSCHEMA\",\"DATABASE_TO_XML\",\"DATABASE_TO_XMLSCHEMA\",\"DATABASE_TO_XML_AND_XMLSCHEMA\",\"NEXTVAL\",\"QUERY_TO_XML\",\"QUERY_TO_XMLSCHEMA\",\"QUERY_TO_XML_AND_XMLSCHEMA\",\"SCHEMA_TO_XML\",\"SCHEMA_TO_XMLSCHEMA\",\"SCHEMA_TO_XML_AND_XMLSCHEMA\",\"STRING\",\"TABLE_TO_XML\",\"TABLE_TO_XMLSCHEMA\",\"TABLE_TO_XML_AND_XMLSCHEMA\",\"XMLAGG\",\"XMLCOMMENT\",\"XMLCONCAT\",\"XMLELEMENT\",\"XMLEXISTS\",\"XMLFOREST\",\"XMLPARSE\",\"XMLPI\",\"XMLROOT\",\"XMLSERIALIZE\",\"XMLTABLE\",\"XML_IS_WELL_FORMED\",\"XML_IS_WELL_FORMED_CONTENT\",\"XML_IS_WELL_FORMED_DOCUMENT\",\"XPATH\",\"XPATH_EXISTS\",\"ARRAY_TO_JSON\",\"JSONB_AGG\",\"JSONB_ARRAY_ELEMENTS\",\"JSONB_ARRAY_ELEMENTS_TEXT\",\"JSONB_ARRAY_LENGTH\",\"JSONB_BUILD_ARRAY\",\"JSONB_BUILD_OBJECT\",\"JSONB_EACH\",\"JSONB_EACH_TEXT\",\"JSONB_EXTRACT_PATH\",\"JSONB_EXTRACT_PATH_TEXT\",\"JSONB_INSERT\",\"JSONB_OBJECT\",\"JSONB_OBJECT_AGG\",\"JSONB_OBJECT_KEYS\",\"JSONB_PATH_EXISTS\",\"JSONB_PATH_EXISTS_TZ\",\"JSONB_PATH_MATCH\",\"JSONB_PATH_MATCH_TZ\",\"JSONB_PATH_QUERY\",\"JSONB_PATH_QUERY_ARRAY\",\"JSONB_PATH_QUERY_ARRAY_TZ\",\"JSONB_PATH_QUERY_FIRST\",\"JSONB_PATH_QUERY_FIRST_TZ\",\"JSONB_PATH_QUERY_TZ\",\"JSONB_POPULATE_RECORD\",\"JSONB_POPULATE_RECORDSET\",\"JSONB_PRETTY\",\"JSONB_SET\",\"JSONB_SET_LAX\",\"JSONB_STRIP_NULLS\",\"JSONB_TO_RECORD\",\"JSONB_TO_RECORDSET\",\"JSONB_TYPEOF\",\"JSON_AGG\",\"JSON_ARRAY_ELEMENTS\",\"JSON_ARRAY_ELEMENTS_TEXT\",\"JSON_ARRAY_LENGTH\",\"JSON_BUILD_ARRAY\",\"JSON_BUILD_OBJECT\",\"JSON_EACH\",\"JSON_EACH_TEXT\",\"JSON_EXTRACT_PATH\",\"JSON_EXTRACT_PATH_TEXT\",\"JSON_OBJECT\",\"JSON_OBJECT_AGG\",\"JSON_OBJECT_KEYS\",\"JSON_POPULATE_RECORD\",\"JSON_POPULATE_RECORDSET\",\"JSON_STRIP_NULLS\",\"JSON_TO_RECORD\",\"JSON_TO_RECORDSET\",\"JSON_TYPEOF\",\"ROW_TO_JSON\",\"TO_JSON\",\"TO_JSONB\",\"TO_TIMESTAMP\",\"CURRVAL\",\"LASTVAL\",\"NEXTVAL\",\"SETVAL\",\"COALESCE\",\"GREATEST\",\"LEAST\",\"NULLIF\",\"ARRAY_AGG\",\"ARRAY_APPEND\",\"ARRAY_CAT\",\"ARRAY_DIMS\",\"ARRAY_FILL\",\"ARRAY_LENGTH\",\"ARRAY_LOWER\",\"ARRAY_NDIMS\",\"ARRAY_POSITION\",\"ARRAY_POSITIONS\",\"ARRAY_PREPEND\",\"ARRAY_REMOVE\",\"ARRAY_REPLACE\",\"ARRAY_TO_STRING\",\"ARRAY_UPPER\",\"CARDINALITY\",\"STRING_TO_ARRAY\",\"TRIM_ARRAY\",\"UNNEST\",\"ISEMPTY\",\"LOWER\",\"LOWER_INC\",\"LOWER_INF\",\"MULTIRANGE\",\"RANGE_MERGE\",\"UPPER\",\"UPPER_INC\",\"UPPER_INF\",\"ARRAY_AGG\",\"AVG\",\"BIT_AND\",\"BIT_OR\",\"BIT_XOR\",\"BOOL_AND\",\"BOOL_OR\",\"COALESCE\",\"CORR\",\"COUNT\",\"COVAR_POP\",\"COVAR_SAMP\",\"CUME_DIST\",\"DENSE_RANK\",\"EVERY\",\"GROUPING\",\"JSONB_AGG\",\"JSONB_OBJECT_AGG\",\"JSON_AGG\",\"JSON_OBJECT_AGG\",\"MAX\",\"MIN\",\"MODE\",\"PERCENTILE_CONT\",\"PERCENTILE_DISC\",\"PERCENT_RANK\",\"RANGE_AGG\",\"RANGE_INTERSECT_AGG\",\"RANK\",\"REGR_AVGX\",\"REGR_AVGY\",\"REGR_COUNT\",\"REGR_INTERCEPT\",\"REGR_R2\",\"REGR_SLOPE\",\"REGR_SXX\",\"REGR_SXY\",\"REGR_SYY\",\"STDDEV\",\"STDDEV_POP\",\"STDDEV_SAMP\",\"STRING_AGG\",\"SUM\",\"TO_JSON\",\"TO_JSONB\",\"VARIANCE\",\"VAR_POP\",\"VAR_SAMP\",\"XMLAGG\",\"CUME_DIST\",\"DENSE_RANK\",\"FIRST_VALUE\",\"LAG\",\"LAST_VALUE\",\"LEAD\",\"NTH_VALUE\",\"NTILE\",\"PERCENT_RANK\",\"RANK\",\"ROW_NUMBER\",\"GENERATE_SERIES\",\"GENERATE_SUBSCRIPTS\",\"ACLDEFAULT\",\"ACLEXPLODE\",\"COL_DESCRIPTION\",\"CURRENT_CATALOG\",\"CURRENT_DATABASE\",\"CURRENT_QUERY\",\"CURRENT_ROLE\",\"CURRENT_SCHEMA\",\"CURRENT_SCHEMAS\",\"CURRENT_USER\",\"FORMAT_TYPE\",\"HAS_ANY_COLUMN_PRIVILEGE\",\"HAS_COLUMN_PRIVILEGE\",\"HAS_DATABASE_PRIVILEGE\",\"HAS_FOREIGN_DATA_WRAPPER_PRIVILEGE\",\"HAS_FUNCTION_PRIVILEGE\",\"HAS_LANGUAGE_PRIVILEGE\",\"HAS_SCHEMA_PRIVILEGE\",\"HAS_SEQUENCE_PRIVILEGE\",\"HAS_SERVER_PRIVILEGE\",\"HAS_TABLESPACE_PRIVILEGE\",\"HAS_TABLE_PRIVILEGE\",\"HAS_TYPE_PRIVILEGE\",\"INET_CLIENT_ADDR\",\"INET_CLIENT_PORT\",\"INET_SERVER_ADDR\",\"INET_SERVER_PORT\",\"MAKEACLITEM\",\"OBJ_DESCRIPTION\",\"PG_BACKEND_PID\",\"PG_BLOCKING_PIDS\",\"PG_COLLATION_IS_VISIBLE\",\"PG_CONF_LOAD_TIME\",\"PG_CONTROL_CHECKPOINT\",\"PG_CONTROL_INIT\",\"PG_CONTROL_SYSTEM\",\"PG_CONVERSION_IS_VISIBLE\",\"PG_CURRENT_LOGFILE\",\"PG_CURRENT_SNAPSHOT\",\"PG_CURRENT_XACT_ID\",\"PG_CURRENT_XACT_ID_IF_ASSIGNED\",\"PG_DESCRIBE_OBJECT\",\"PG_FUNCTION_IS_VISIBLE\",\"PG_GET_CATALOG_FOREIGN_KEYS\",\"PG_GET_CONSTRAINTDEF\",\"PG_GET_EXPR\",\"PG_GET_FUNCTIONDEF\",\"PG_GET_FUNCTION_ARGUMENTS\",\"PG_GET_FUNCTION_IDENTITY_ARGUMENTS\",\"PG_GET_FUNCTION_RESULT\",\"PG_GET_INDEXDEF\",\"PG_GET_KEYWORDS\",\"PG_GET_OBJECT_ADDRESS\",\"PG_GET_OWNED_SEQUENCE\",\"PG_GET_RULEDEF\",\"PG_GET_SERIAL_SEQUENCE\",\"PG_GET_STATISTICSOBJDEF\",\"PG_GET_TRIGGERDEF\",\"PG_GET_USERBYID\",\"PG_GET_VIEWDEF\",\"PG_HAS_ROLE\",\"PG_IDENTIFY_OBJECT\",\"PG_IDENTIFY_OBJECT_AS_ADDRESS\",\"PG_INDEXAM_HAS_PROPERTY\",\"PG_INDEX_COLUMN_HAS_PROPERTY\",\"PG_INDEX_HAS_PROPERTY\",\"PG_IS_OTHER_TEMP_SCHEMA\",\"PG_JIT_AVAILABLE\",\"PG_LAST_COMMITTED_XACT\",\"PG_LISTENING_CHANNELS\",\"PG_MY_TEMP_SCHEMA\",\"PG_NOTIFICATION_QUEUE_USAGE\",\"PG_OPCLASS_IS_VISIBLE\",\"PG_OPERATOR_IS_VISIBLE\",\"PG_OPFAMILY_IS_VISIBLE\",\"PG_OPTIONS_TO_TABLE\",\"PG_POSTMASTER_START_TIME\",\"PG_SAFE_SNAPSHOT_BLOCKING_PIDS\",\"PG_SNAPSHOT_XIP\",\"PG_SNAPSHOT_XMAX\",\"PG_SNAPSHOT_XMIN\",\"PG_STATISTICS_OBJ_IS_VISIBLE\",\"PG_TABLESPACE_DATABASES\",\"PG_TABLESPACE_LOCATION\",\"PG_TABLE_IS_VISIBLE\",\"PG_TRIGGER_DEPTH\",\"PG_TS_CONFIG_IS_VISIBLE\",\"PG_TS_DICT_IS_VISIBLE\",\"PG_TS_PARSER_IS_VISIBLE\",\"PG_TS_TEMPLATE_IS_VISIBLE\",\"PG_TYPEOF\",\"PG_TYPE_IS_VISIBLE\",\"PG_VISIBLE_IN_SNAPSHOT\",\"PG_XACT_COMMIT_TIMESTAMP\",\"PG_XACT_COMMIT_TIMESTAMP_ORIGIN\",\"PG_XACT_STATUS\",\"PQSERVERVERSION\",\"ROW_SECURITY_ACTIVE\",\"SESSION_USER\",\"SHOBJ_DESCRIPTION\",\"TO_REGCLASS\",\"TO_REGCOLLATION\",\"TO_REGNAMESPACE\",\"TO_REGOPER\",\"TO_REGOPERATOR\",\"TO_REGPROC\",\"TO_REGPROCEDURE\",\"TO_REGROLE\",\"TO_REGTYPE\",\"TXID_CURRENT\",\"TXID_CURRENT_IF_ASSIGNED\",\"TXID_CURRENT_SNAPSHOT\",\"TXID_SNAPSHOT_XIP\",\"TXID_SNAPSHOT_XMAX\",\"TXID_SNAPSHOT_XMIN\",\"TXID_STATUS\",\"TXID_VISIBLE_IN_SNAPSHOT\",\"USER\",\"VERSION\",\"BRIN_DESUMMARIZE_RANGE\",\"BRIN_SUMMARIZE_NEW_VALUES\",\"BRIN_SUMMARIZE_RANGE\",\"CONVERT_FROM\",\"CURRENT_SETTING\",\"GIN_CLEAN_PENDING_LIST\",\"PG_ADVISORY_LOCK\",\"PG_ADVISORY_LOCK_SHARED\",\"PG_ADVISORY_UNLOCK\",\"PG_ADVISORY_UNLOCK_ALL\",\"PG_ADVISORY_UNLOCK_SHARED\",\"PG_ADVISORY_XACT_LOCK\",\"PG_ADVISORY_XACT_LOCK_SHARED\",\"PG_BACKUP_START_TIME\",\"PG_CANCEL_BACKEND\",\"PG_COLLATION_ACTUAL_VERSION\",\"PG_COLUMN_COMPRESSION\",\"PG_COLUMN_SIZE\",\"PG_COPY_LOGICAL_REPLICATION_SLOT\",\"PG_COPY_PHYSICAL_REPLICATION_SLOT\",\"PG_CREATE_LOGICAL_REPLICATION_SLOT\",\"PG_CREATE_PHYSICAL_REPLICATION_SLOT\",\"PG_CREATE_RESTORE_POINT\",\"PG_CURRENT_WAL_FLUSH_LSN\",\"PG_CURRENT_WAL_INSERT_LSN\",\"PG_CURRENT_WAL_LSN\",\"PG_DATABASE_SIZE\",\"PG_DROP_REPLICATION_SLOT\",\"PG_EXPORT_SNAPSHOT\",\"PG_FILENODE_RELATION\",\"PG_GET_WAL_REPLAY_PAUSE_STATE\",\"PG_IMPORT_SYSTEM_COLLATIONS\",\"PG_INDEXES_SIZE\",\"PG_IS_IN_BACKUP\",\"PG_IS_IN_RECOVERY\",\"PG_IS_WAL_REPLAY_PAUSED\",\"PG_LAST_WAL_RECEIVE_LSN\",\"PG_LAST_WAL_REPLAY_LSN\",\"PG_LAST_XACT_REPLAY_TIMESTAMP\",\"PG_LOGICAL_EMIT_MESSAGE\",\"PG_LOGICAL_SLOT_GET_BINARY_CHANGES\",\"PG_LOGICAL_SLOT_GET_CHANGES\",\"PG_LOGICAL_SLOT_PEEK_BINARY_CHANGES\",\"PG_LOGICAL_SLOT_PEEK_CHANGES\",\"PG_LOG_BACKEND_MEMORY_CONTEXTS\",\"PG_LS_ARCHIVE_STATUSDIR\",\"PG_LS_DIR\",\"PG_LS_LOGDIR\",\"PG_LS_TMPDIR\",\"PG_LS_WALDIR\",\"PG_PARTITION_ANCESTORS\",\"PG_PARTITION_ROOT\",\"PG_PARTITION_TREE\",\"PG_PROMOTE\",\"PG_READ_BINARY_FILE\",\"PG_READ_FILE\",\"PG_RELATION_FILENODE\",\"PG_RELATION_FILEPATH\",\"PG_RELATION_SIZE\",\"PG_RELOAD_CONF\",\"PG_REPLICATION_ORIGIN_ADVANCE\",\"PG_REPLICATION_ORIGIN_CREATE\",\"PG_REPLICATION_ORIGIN_DROP\",\"PG_REPLICATION_ORIGIN_OID\",\"PG_REPLICATION_ORIGIN_PROGRESS\",\"PG_REPLICATION_ORIGIN_SESSION_IS_SETUP\",\"PG_REPLICATION_ORIGIN_SESSION_PROGRESS\",\"PG_REPLICATION_ORIGIN_SESSION_RESET\",\"PG_REPLICATION_ORIGIN_SESSION_SETUP\",\"PG_REPLICATION_ORIGIN_XACT_RESET\",\"PG_REPLICATION_ORIGIN_XACT_SETUP\",\"PG_REPLICATION_SLOT_ADVANCE\",\"PG_ROTATE_LOGFILE\",\"PG_SIZE_BYTES\",\"PG_SIZE_PRETTY\",\"PG_START_BACKUP\",\"PG_STAT_FILE\",\"PG_STOP_BACKUP\",\"PG_SWITCH_WAL\",\"PG_TABLESPACE_SIZE\",\"PG_TABLE_SIZE\",\"PG_TERMINATE_BACKEND\",\"PG_TOTAL_RELATION_SIZE\",\"PG_TRY_ADVISORY_LOCK\",\"PG_TRY_ADVISORY_LOCK_SHARED\",\"PG_TRY_ADVISORY_XACT_LOCK\",\"PG_TRY_ADVISORY_XACT_LOCK_SHARED\",\"PG_WALFILE_NAME\",\"PG_WALFILE_NAME_OFFSET\",\"PG_WAL_LSN_DIFF\",\"PG_WAL_REPLAY_PAUSE\",\"PG_WAL_REPLAY_RESUME\",\"SET_CONFIG\",\"SUPPRESS_REDUNDANT_UPDATES_TRIGGER\",\"TSVECTOR_UPDATE_TRIGGER\",\"TSVECTOR_UPDATE_TRIGGER_COLUMN\",\"PG_EVENT_TRIGGER_DDL_COMMANDS\",\"PG_EVENT_TRIGGER_DROPPED_OBJECTS\",\"PG_EVENT_TRIGGER_TABLE_REWRITE_OID\",\"PG_EVENT_TRIGGER_TABLE_REWRITE_REASON\",\"PG_GET_OBJECT_ADDRESS\",\"PG_MCV_LIST_ITEMS\",\"CAST\"];var P=[\"ALL\",\"ANALYSE\",\"ANALYZE\",\"AND\",\"ANY\",\"AS\",\"ASC\",\"ASYMMETRIC\",\"AUTHORIZATION\",\"BETWEEN\",\"BINARY\",\"BOTH\",\"CASE\",\"CAST\",\"CHECK\",\"COLLATE\",\"COLLATION\",\"COLUMN\",\"CONCURRENTLY\",\"CONSTRAINT\",\"CREATE\",\"CROSS\",\"CURRENT_CATALOG\",\"CURRENT_DATE\",\"CURRENT_ROLE\",\"CURRENT_SCHEMA\",\"CURRENT_TIME\",\"CURRENT_TIMESTAMP\",\"CURRENT_USER\",\"DAY\",\"DEFAULT\",\"DEFERRABLE\",\"DESC\",\"DISTINCT\",\"DO\",\"ELSE\",\"END\",\"EXCEPT\",\"EXISTS\",\"FALSE\",\"FETCH\",\"FILTER\",\"FOR\",\"FOREIGN\",\"FREEZE\",\"FROM\",\"FULL\",\"GRANT\",\"GROUP\",\"HAVING\",\"HOUR\",\"ILIKE\",\"IN\",\"INITIALLY\",\"INNER\",\"INOUT\",\"INTERSECT\",\"INTO\",\"IS\",\"ISNULL\",\"JOIN\",\"LATERAL\",\"LEADING\",\"LEFT\",\"LIKE\",\"LIMIT\",\"LOCALTIME\",\"LOCALTIMESTAMP\",\"MINUTE\",\"MONTH\",\"NATURAL\",\"NOT\",\"NOTNULL\",\"NULL\",\"NULLIF\",\"OFFSET\",\"ON\",\"ONLY\",\"OR\",\"ORDER\",\"OUT\",\"OUTER\",\"OVER\",\"OVERLAPS\",\"PLACING\",\"PRIMARY\",\"REFERENCES\",\"RETURNING\",\"RIGHT\",\"ROW\",\"SECOND\",\"SELECT\",\"SESSION_USER\",\"SIMILAR\",\"SOME\",\"SYMMETRIC\",\"TABLE\",\"TABLESAMPLE\",\"THEN\",\"TO\",\"TRAILING\",\"TRUE\",\"UNION\",\"UNIQUE\",\"USER\",\"USING\",\"VALUES\",\"VARIADIC\",\"VERBOSE\",\"WHEN\",\"WHERE\",\"WINDOW\",\"WITH\",\"WITHIN\",\"WITHOUT\",\"YEAR\"],C=[\"ARRAY\",\"BIGINT\",\"BIT\",\"BIT VARYING\",\"BOOL\",\"BOOLEAN\",\"CHAR\",\"CHARACTER\",\"CHARACTER VARYING\",\"DECIMAL\",\"DEC\",\"DOUBLE\",\"ENUM\",\"FLOAT\",\"INT\",\"INTEGER\",\"INTERVAL\",\"NCHAR\",\"NUMERIC\",\"JSON\",\"JSONB\",\"PRECISION\",\"REAL\",\"SMALLINT\",\"TEXT\",\"TIME\",\"TIMESTAMP\",\"TIMESTAMPTZ\",\"UUID\",\"VARCHAR\",\"XML\",\"ZONE\"];var t=_([\"SELECT [ALL | DISTINCT]\"]),X=_([\"WITH [RECURSIVE]\",\"FROM\",\"WHERE\",\"GROUP BY [ALL | DISTINCT]\",\"HAVING\",\"WINDOW\",\"PARTITION BY\",\"ORDER BY\",\"LIMIT\",\"OFFSET\",\"FETCH {FIRST | NEXT}\",\"FOR {UPDATE | NO KEY UPDATE | SHARE | KEY SHARE} [OF]\",\"INSERT INTO\",\"VALUES\",\"DEFAULT VALUES\",\"SET\",\"RETURNING\"]),G=_([\"CREATE [GLOBAL | LOCAL] [TEMPORARY | TEMP | UNLOGGED] TABLE [IF NOT EXISTS]\"]),N=_([\"CREATE [OR REPLACE] [TEMP | TEMPORARY] [RECURSIVE] VIEW\",\"CREATE [MATERIALIZED] VIEW [IF NOT EXISTS]\",\"UPDATE [ONLY]\",\"WHERE CURRENT OF\",\"ON CONFLICT\",\"DELETE FROM [ONLY]\",\"DROP TABLE [IF EXISTS]\",\"ALTER TABLE [IF EXISTS] [ONLY]\",\"ALTER TABLE ALL IN TABLESPACE\",\"RENAME [COLUMN]\",\"RENAME TO\",\"ADD [COLUMN] [IF NOT EXISTS]\",\"DROP [COLUMN] [IF EXISTS]\",\"ALTER [COLUMN]\",\"SET DATA TYPE\",\"{SET | DROP} DEFAULT\",\"{SET | DROP} NOT NULL\",\"TRUNCATE [TABLE] [ONLY]\",\"SET SCHEMA\",\"AFTER\",\"ABORT\",\"ALTER AGGREGATE\",\"ALTER COLLATION\",\"ALTER CONVERSION\",\"ALTER DATABASE\",\"ALTER DEFAULT PRIVILEGES\",\"ALTER DOMAIN\",\"ALTER EVENT TRIGGER\",\"ALTER EXTENSION\",\"ALTER FOREIGN DATA WRAPPER\",\"ALTER FOREIGN TABLE\",\"ALTER FUNCTION\",\"ALTER GROUP\",\"ALTER INDEX\",\"ALTER LANGUAGE\",\"ALTER LARGE OBJECT\",\"ALTER MATERIALIZED VIEW\",\"ALTER OPERATOR\",\"ALTER OPERATOR CLASS\",\"ALTER OPERATOR FAMILY\",\"ALTER POLICY\",\"ALTER PROCEDURE\",\"ALTER PUBLICATION\",\"ALTER ROLE\",\"ALTER ROUTINE\",\"ALTER RULE\",\"ALTER SCHEMA\",\"ALTER SEQUENCE\",\"ALTER SERVER\",\"ALTER STATISTICS\",\"ALTER SUBSCRIPTION\",\"ALTER SYSTEM\",\"ALTER TABLESPACE\",\"ALTER TEXT SEARCH CONFIGURATION\",\"ALTER TEXT SEARCH DICTIONARY\",\"ALTER TEXT SEARCH PARSER\",\"ALTER TEXT SEARCH TEMPLATE\",\"ALTER TRIGGER\",\"ALTER TYPE\",\"ALTER USER\",\"ALTER USER MAPPING\",\"ALTER VIEW\",\"ANALYZE\",\"BEGIN\",\"CALL\",\"CHECKPOINT\",\"CLOSE\",\"CLUSTER\",\"COMMENT ON\",\"COMMIT\",\"COMMIT PREPARED\",\"COPY\",\"CREATE ACCESS METHOD\",\"CREATE [OR REPLACE] AGGREGATE\",\"CREATE CAST\",\"CREATE COLLATION\",\"CREATE [DEFAULT] CONVERSION\",\"CREATE DATABASE\",\"CREATE DOMAIN\",\"CREATE EVENT TRIGGER\",\"CREATE EXTENSION\",\"CREATE FOREIGN DATA WRAPPER\",\"CREATE FOREIGN TABLE\",\"CREATE [OR REPLACE] FUNCTION\",\"CREATE GROUP\",\"CREATE [UNIQUE] INDEX\",\"CREATE [OR REPLACE] [TRUSTED] [PROCEDURAL] LANGUAGE\",\"CREATE OPERATOR\",\"CREATE OPERATOR CLASS\",\"CREATE OPERATOR FAMILY\",\"CREATE POLICY\",\"CREATE [OR REPLACE] PROCEDURE\",\"CREATE PUBLICATION\",\"CREATE ROLE\",\"CREATE [OR REPLACE] RULE\",\"CREATE SCHEMA [AUTHORIZATION]\",\"CREATE [TEMPORARY | TEMP | UNLOGGED] SEQUENCE\",\"CREATE SERVER\",\"CREATE STATISTICS\",\"CREATE SUBSCRIPTION\",\"CREATE TABLESPACE\",\"CREATE TEXT SEARCH CONFIGURATION\",\"CREATE TEXT SEARCH DICTIONARY\",\"CREATE TEXT SEARCH PARSER\",\"CREATE TEXT SEARCH TEMPLATE\",\"CREATE [OR REPLACE] TRANSFORM\",\"CREATE [OR REPLACE] [CONSTRAINT] TRIGGER\",\"CREATE TYPE\",\"CREATE USER\",\"CREATE USER MAPPING\",\"DEALLOCATE\",\"DECLARE\",\"DISCARD\",\"DROP ACCESS METHOD\",\"DROP AGGREGATE\",\"DROP CAST\",\"DROP COLLATION\",\"DROP CONVERSION\",\"DROP DATABASE\",\"DROP DOMAIN\",\"DROP EVENT TRIGGER\",\"DROP EXTENSION\",\"DROP FOREIGN DATA WRAPPER\",\"DROP FOREIGN TABLE\",\"DROP FUNCTION\",\"DROP GROUP\",\"DROP IDENTITY\",\"DROP INDEX\",\"DROP LANGUAGE\",\"DROP MATERIALIZED VIEW [IF EXISTS]\",\"DROP OPERATOR\",\"DROP OPERATOR CLASS\",\"DROP OPERATOR FAMILY\",\"DROP OWNED\",\"DROP POLICY\",\"DROP PROCEDURE\",\"DROP PUBLICATION\",\"DROP ROLE\",\"DROP ROUTINE\",\"DROP RULE\",\"DROP SCHEMA\",\"DROP SEQUENCE\",\"DROP SERVER\",\"DROP STATISTICS\",\"DROP SUBSCRIPTION\",\"DROP TABLESPACE\",\"DROP TEXT SEARCH CONFIGURATION\",\"DROP TEXT SEARCH DICTIONARY\",\"DROP TEXT SEARCH PARSER\",\"DROP TEXT SEARCH TEMPLATE\",\"DROP TRANSFORM\",\"DROP TRIGGER\",\"DROP TYPE\",\"DROP USER\",\"DROP USER MAPPING\",\"DROP VIEW\",\"EXECUTE\",\"EXPLAIN\",\"FETCH\",\"GRANT\",\"IMPORT FOREIGN SCHEMA\",\"LISTEN\",\"LOAD\",\"LOCK\",\"MOVE\",\"NOTIFY\",\"OVERRIDING SYSTEM VALUE\",\"PREPARE\",\"PREPARE TRANSACTION\",\"REASSIGN OWNED\",\"REFRESH MATERIALIZED VIEW\",\"REINDEX\",\"RELEASE SAVEPOINT\",\"RESET [ALL|ROLE|SESSION AUTHORIZATION]\",\"REVOKE\",\"ROLLBACK\",\"ROLLBACK PREPARED\",\"ROLLBACK TO SAVEPOINT\",\"SAVEPOINT\",\"SECURITY LABEL\",\"SELECT INTO\",\"SET CONSTRAINTS\",\"SET ROLE\",\"SET SESSION AUTHORIZATION\",\"SET TRANSACTION\",\"SHOW\",\"START TRANSACTION\",\"UNLISTEN\",\"VACUUM\"]),n=_([\"UNION [ALL | DISTINCT]\",\"EXCEPT [ALL | DISTINCT]\",\"INTERSECT [ALL | DISTINCT]\"]),F=_([\"JOIN\",\"{LEFT | RIGHT | FULL} [OUTER] JOIN\",\"{INNER | CROSS} JOIN\",\"NATURAL [INNER] JOIN\",\"NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN\"]),V=_([\"PRIMARY KEY\",\"GENERATED {ALWAYS | BY DEFAULT} AS IDENTITY\",\"ON {UPDATE | DELETE} [NO ACTION | RESTRICT | CASCADE | SET NULL | SET DEFAULT]\",\"DO {NOTHING | UPDATE}\",\"AS MATERIALIZED\",\"{ROWS | RANGE | GROUPS} BETWEEN\",\"IS [NOT] DISTINCT FROM\",\"NULLS {FIRST | LAST}\",\"WITH ORDINALITY\"]),o=_([\"[TIMESTAMP | TIME] {WITH | WITHOUT} TIME ZONE\"]),K={name:\"postgresql\",tokenizerOptions:{reservedSelect:t,reservedClauses:[...X,...G,...N],reservedSetOperations:n,reservedJoins:F,reservedKeywordPhrases:V,reservedDataTypePhrases:o,reservedKeywords:P,reservedDataTypes:C,reservedFunctionNames:L,nestedBlockComments:!0,extraParens:[\"[]\"],underscoresInNumbers:!0,stringTypes:[\"$$\",{quote:\"''-qq\",prefixes:[\"U&\"]},{quote:\"''-qq-bs\",prefixes:[\"E\"],requirePrefix:!0},{quote:\"''-raw\",prefixes:[\"B\",\"X\"],requirePrefix:!0}],identTypes:[{quote:'\"\"-qq',prefixes:[\"U&\"]}],identChars:{rest:\"$\"},paramTypes:{numbered:[\"$\"]},operators:[\"%\",\"^\",\"|/\",\"||/\",\"@\",\":=\",\"&\",\"|\",\"#\",\"~\",\"<<\",\">>\",\"~>~\",\"~<~\",\"~>=~\",\"~<=~\",\"@-@\",\"@@\",\"##\",\"<->\",\"&&\",\"&<\",\"&>\",\"<<|\",\"&<|\",\"|>>\",\"|&>\",\"<^\",\">^\",\"?#\",\"?-\",\"?|\",\"?-|\",\"?||\",\"@>\",\"<@\",\"<@>\",\"~=\",\"?\",\"@?\",\"?&\",\"->\",\"->>\",\"#>\",\"#>>\",\"#-\",\"=>\",\">>=\",\"<<=\",\"~~\",\"~~*\",\"!~~\",\"!~~*\",\"~\",\"~*\",\"!~\",\"!~*\",\"-|-\",\"||\",\"@@@\",\"!!\",\"^@\",\"<%\",\"%>\",\"<<%\",\"%>>\",\"<<->\",\"<->>\",\"<<<->\",\"<->>>\",\"~>\",\"#=\",\"::\",\":\",\"<#>\",\"<=>\",\"<+>\",\"<~>\",\"<%>\",\"&&&\",\"|=|\"],operatorKeyword:!0},formatOptions:{alwaysDenseOperators:[\"::\",\":\"],onelineClauses:[...G,...N],tabularOnelineClauses:N}};export{K as postgresql};\n","var r=E=>E.flatMap(S),S=E=>N(C(E)).map(a),a=E=>E.replace(/ +/g,\" \").trim(),C=E=>({type:\"mandatory_block\",items:A(E,0)[0]}),A=(E,T,e)=>{let R=[];for(;E[T];){let[O,o]=i(E,T);if(R.push(O),T=o,E[T]===\"|\")T++;else if(E[T]===\"}\"||E[T]===\"]\"){if(e!==E[T])throw new Error(`Unbalanced parenthesis in: ${E}`);return T++,[R,T]}else if(T===E.length){if(e)throw new Error(`Unbalanced parenthesis in: ${E}`);return[R,T]}else throw new Error(`Unexpected \"${E[T]}\"`)}return[R,T]},i=(E,T)=>{let e=[];for(;;){let[R,O]=U(E,T);if(R)e.push(R),T=O;else break}return e.length===1?[e[0],T]:[{type:\"concatenation\",items:e},T]},U=(E,T)=>{if(E[T]===\"{\")return P(E,T+1);if(E[T]===\"[\")return p(E,T+1);{let e=\"\";for(;E[T]&&/[A-Za-z0-9_ ]/.test(E[T]);)e+=E[T],T++;return[e,T]}},P=(E,T)=>{let[e,R]=A(E,T,\"}\");return[{type:\"mandatory_block\",items:e},R]},p=(E,T)=>{let[e,R]=A(E,T,\"]\");return[{type:\"optional_block\",items:e},R]},N=E=>{if(typeof E==\"string\")return[E];if(E.type===\"concatenation\")return E.items.map(N).reduce(l,[\"\"]);if(E.type===\"mandatory_block\")return E.items.flatMap(N);if(E.type===\"optional_block\")return[\"\",...E.items.flatMap(N)];throw new Error(`Unknown node type: ${E}`)},l=(E,T)=>{let e=[];for(let R of E)for(let O of T)e.push(R+O);return e};var t=[\"ABS\",\"CHANGES\",\"CHAR\",\"COALESCE\",\"FORMAT\",\"GLOB\",\"HEX\",\"IFNULL\",\"IIF\",\"INSTR\",\"LAST_INSERT_ROWID\",\"LENGTH\",\"LIKE\",\"LIKELIHOOD\",\"LIKELY\",\"LOAD_EXTENSION\",\"LOWER\",\"LTRIM\",\"NULLIF\",\"PRINTF\",\"QUOTE\",\"RANDOM\",\"RANDOMBLOB\",\"REPLACE\",\"ROUND\",\"RTRIM\",\"SIGN\",\"SOUNDEX\",\"SQLITE_COMPILEOPTION_GET\",\"SQLITE_COMPILEOPTION_USED\",\"SQLITE_OFFSET\",\"SQLITE_SOURCE_ID\",\"SQLITE_VERSION\",\"SUBSTR\",\"SUBSTRING\",\"TOTAL_CHANGES\",\"TRIM\",\"TYPEOF\",\"UNICODE\",\"UNLIKELY\",\"UPPER\",\"ZEROBLOB\",\"AVG\",\"COUNT\",\"GROUP_CONCAT\",\"MAX\",\"MIN\",\"SUM\",\"TOTAL\",\"DATE\",\"TIME\",\"DATETIME\",\"JULIANDAY\",\"UNIXEPOCH\",\"STRFTIME\",\"row_number\",\"rank\",\"dense_rank\",\"percent_rank\",\"cume_dist\",\"ntile\",\"lag\",\"lead\",\"first_value\",\"last_value\",\"nth_value\",\"ACOS\",\"ACOSH\",\"ASIN\",\"ASINH\",\"ATAN\",\"ATAN2\",\"ATANH\",\"CEIL\",\"CEILING\",\"COS\",\"COSH\",\"DEGREES\",\"EXP\",\"FLOOR\",\"LN\",\"LOG\",\"LOG\",\"LOG10\",\"LOG2\",\"MOD\",\"PI\",\"POW\",\"POWER\",\"RADIANS\",\"SIN\",\"SINH\",\"SQRT\",\"TAN\",\"TANH\",\"TRUNC\",\"JSON\",\"JSON_ARRAY\",\"JSON_ARRAY_LENGTH\",\"JSON_ARRAY_LENGTH\",\"JSON_EXTRACT\",\"JSON_INSERT\",\"JSON_OBJECT\",\"JSON_PATCH\",\"JSON_REMOVE\",\"JSON_REPLACE\",\"JSON_SET\",\"JSON_TYPE\",\"JSON_TYPE\",\"JSON_VALID\",\"JSON_QUOTE\",\"JSON_GROUP_ARRAY\",\"JSON_GROUP_OBJECT\",\"JSON_EACH\",\"JSON_TREE\",\"CAST\"];var I=[\"ABORT\",\"ACTION\",\"ADD\",\"AFTER\",\"ALL\",\"ALTER\",\"AND\",\"ARE\",\"ALWAYS\",\"ANALYZE\",\"AS\",\"ASC\",\"ATTACH\",\"AUTOINCREMENT\",\"BEFORE\",\"BEGIN\",\"BETWEEN\",\"BY\",\"CASCADE\",\"CASE\",\"CAST\",\"CHECK\",\"COLLATE\",\"COLUMN\",\"COMMIT\",\"CONFLICT\",\"CONSTRAINT\",\"CREATE\",\"CROSS\",\"CURRENT\",\"CURRENT_DATE\",\"CURRENT_TIME\",\"CURRENT_TIMESTAMP\",\"DATABASE\",\"DEFAULT\",\"DEFERRABLE\",\"DEFERRED\",\"DELETE\",\"DESC\",\"DETACH\",\"DISTINCT\",\"DO\",\"DROP\",\"EACH\",\"ELSE\",\"END\",\"ESCAPE\",\"EXCEPT\",\"EXCLUDE\",\"EXCLUSIVE\",\"EXISTS\",\"EXPLAIN\",\"FAIL\",\"FILTER\",\"FIRST\",\"FOLLOWING\",\"FOR\",\"FOREIGN\",\"FROM\",\"FULL\",\"GENERATED\",\"GLOB\",\"GROUP\",\"HAVING\",\"IF\",\"IGNORE\",\"IMMEDIATE\",\"IN\",\"INDEX\",\"INDEXED\",\"INITIALLY\",\"INNER\",\"INSERT\",\"INSTEAD\",\"INTERSECT\",\"INTO\",\"IS\",\"ISNULL\",\"JOIN\",\"KEY\",\"LAST\",\"LEFT\",\"LIKE\",\"LIMIT\",\"MATCH\",\"MATERIALIZED\",\"NATURAL\",\"NO\",\"NOT\",\"NOTHING\",\"NOTNULL\",\"NULL\",\"NULLS\",\"OF\",\"OFFSET\",\"ON\",\"ONLY\",\"OPEN\",\"OR\",\"ORDER\",\"OTHERS\",\"OUTER\",\"OVER\",\"PARTITION\",\"PLAN\",\"PRAGMA\",\"PRECEDING\",\"PRIMARY\",\"QUERY\",\"RAISE\",\"RANGE\",\"RECURSIVE\",\"REFERENCES\",\"REGEXP\",\"REINDEX\",\"RELEASE\",\"RENAME\",\"REPLACE\",\"RESTRICT\",\"RETURNING\",\"RIGHT\",\"ROLLBACK\",\"ROW\",\"ROWS\",\"SAVEPOINT\",\"SELECT\",\"SET\",\"TABLE\",\"TEMP\",\"TEMPORARY\",\"THEN\",\"TIES\",\"TO\",\"TRANSACTION\",\"TRIGGER\",\"UNBOUNDED\",\"UNION\",\"UNIQUE\",\"UPDATE\",\"USING\",\"VACUUM\",\"VALUES\",\"VIEW\",\"VIRTUAL\",\"WHEN\",\"WHERE\",\"WINDOW\",\"WITH\",\"WITHOUT\"],n=[\"ANY\",\"ARRAY\",\"BLOB\",\"CHARACTER\",\"DECIMAL\",\"INT\",\"INTEGER\",\"NATIVE CHARACTER\",\"NCHAR\",\"NUMERIC\",\"NVARCHAR\",\"REAL\",\"TEXT\",\"VARCHAR\",\"VARYING CHARACTER\"];var c=r([\"SELECT [ALL | DISTINCT]\"]),D=r([\"WITH [RECURSIVE]\",\"FROM\",\"WHERE\",\"GROUP BY\",\"HAVING\",\"WINDOW\",\"PARTITION BY\",\"ORDER BY\",\"LIMIT\",\"OFFSET\",\"INSERT [OR ABORT | OR FAIL | OR IGNORE | OR REPLACE | OR ROLLBACK] INTO\",\"REPLACE INTO\",\"VALUES\",\"SET\",\"RETURNING\"]),L=r([\"CREATE [TEMPORARY | TEMP] TABLE [IF NOT EXISTS]\"]),s=r([\"CREATE [TEMPORARY | TEMP] VIEW [IF NOT EXISTS]\",\"UPDATE [OR ABORT | OR FAIL | OR IGNORE | OR REPLACE | OR ROLLBACK]\",\"ON CONFLICT\",\"DELETE FROM\",\"DROP TABLE [IF EXISTS]\",\"ALTER TABLE\",\"ADD [COLUMN]\",\"DROP [COLUMN]\",\"RENAME [COLUMN]\",\"RENAME TO\",\"SET SCHEMA\"]),M=r([\"UNION [ALL]\",\"EXCEPT\",\"INTERSECT\"]),_=r([\"JOIN\",\"{LEFT | RIGHT | FULL} [OUTER] JOIN\",\"{INNER | CROSS} JOIN\",\"NATURAL [INNER] JOIN\",\"NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN\"]),u=r([\"ON {UPDATE | DELETE} [SET NULL | SET DEFAULT]\",\"{ROWS | RANGE | GROUPS} BETWEEN\",\"DO UPDATE\"]),m=r([]),f={name:\"sqlite\",tokenizerOptions:{reservedSelect:c,reservedClauses:[...D,...L,...s],reservedSetOperations:M,reservedJoins:_,reservedKeywordPhrases:u,reservedDataTypePhrases:m,reservedKeywords:I,reservedDataTypes:n,reservedFunctionNames:t,stringTypes:[\"''-qq\",{quote:\"''-raw\",prefixes:[\"X\"],requirePrefix:!0}],identTypes:['\"\"-qq',\"``\",\"[]\"],paramTypes:{positional:!0,numbered:[\"?\"],named:[\":\",\"@\",\"$\"]},operators:[\"%\",\"~\",\"&\",\"|\",\"<<\",\">>\",\"==\",\"->\",\"->>\",\"||\"]},formatOptions:{onelineClauses:[...L,...s],tabularOnelineClauses:s}};export{f as sqlite};\n","// A tiny dual-dispatch helper in the spirit of `quansync`\n// (https://github.com/quansync-dev/quansync). Lets us write a body once as a\n// generator function; each `yield` of a value awaits it in async mode and\n// passes it through unchanged in sync mode. Callers that need to branch on\n// mode (to wire up a nested callback like `client.transaction(cb)`, where\n// `cb` itself is sync for sync clients and async for async clients) can read\n// `client.sync` directly — no sentinel needed inside the generator.\n//\n// Why not a dependency on `quansync`? The whole utility is ~50 lines and the\n// cost of a fresh runtime dep would be larger than the file itself.\nfunction isThenable(value) {\n return typeof value?.then === 'function';\n}\nexport function driveSync(generator) {\n let current = generator.next();\n while (!current.done) {\n if (isThenable(current.value)) {\n throw new Error('sqlfu: unexpected promise in sync dual-dispatch context');\n }\n try {\n current = generator.next(current.value);\n }\n catch (error) {\n current = generator.throw(error);\n }\n }\n return current.value;\n}\nexport async function driveAsync(generator) {\n let current = generator.next();\n while (!current.done) {\n let resumed;\n try {\n resumed = await current.value;\n }\n catch (error) {\n current = generator.throw(error);\n continue;\n }\n current = generator.next(resumed);\n }\n return current.value;\n}\n/**\n * Yield a value (or promise, or nested promise) and recover it with its fully\n * unwrapped type. Use with `yield*` so the call site reads as\n * `const x = yield* awaited(client.all(...))` with no per-yield cast. In sync\n * mode the value passes through unchanged; in async mode the driver awaits it\n * before resuming. `Awaited<T>` collapses any level of `Promise<>` so this is\n * safe to use with `client.transaction(...)`'s `T | Promise<T>` overload union.\n */\nexport function* awaited(value) {\n return (yield value);\n}\n","// Runtime SQL builders for sqlfu's migration bookkeeping. Replaces the four\n// hand-written generated wrappers in `./queries/.generated/` — those are too\n// rigid once the table name, column set, and id-generation strategy vary by\n// preset (sqlfu vs d1/alchemy).\n//\n// `'sqlfu'` preset stays byte-for-byte compatible with the previous generated\n// output. `'d1'` preset emits alchemy/wrangler-compatible SQL for the\n// `d1_migrations` table. Alchemy uses two different schemas depending on where\n// it's running (remote D1 vs local/miniflare), so `ensureMigrationTableGen`\n// detects the existing column set via `pragma table_info` and encodes the\n// variant in the returned `ResolvedPresetShape` so downstream inserts/selects\n// adapt.\nimport { awaited } from '../dual-dispatch.js';\nconst SQLFU_TABLE = 'sqlfu_migrations';\nconst D1_TABLE = 'd1_migrations';\n/**\n * The canonical sqlfu migration-table DDL. Used directly when no dialect is\n * passed (inline `defineConfig().migrate()`, generated migration bundles) and\n * re-exported as `sqliteDialect().defaultMigrationTableDdl`, so every sqlite\n * path creates an identical table. Dialects with different column flavors\n * (e.g. `@sqlfu/pg`'s timestamptz) override via `defaultMigrationTableDdl`.\n */\nexport const sqlfuMigrationTableDdl = (tableName) => `create table if not exists ${tableName} (\\n name text primary key check (name not like '%.sql'),\\n checksum text not null,\\n applied_at text not null\\n);`;\nexport function presetTableName(preset) {\n return preset === 'd1' ? D1_TABLE : SQLFU_TABLE;\n}\nexport function* ensureMigrationTableGen(client, preset, dialect) {\n if (preset === 'sqlfu') {\n yield client.run({\n sql: dialect ? dialect.defaultMigrationTableDdl(SQLFU_TABLE) : sqlfuMigrationTableDdl(SQLFU_TABLE),\n args: [],\n name: 'ensureMigrationTable',\n });\n return { kind: 'sqlfu', table: SQLFU_TABLE, hasChecksum: true };\n }\n // preset === 'd1'\n const info = yield* awaited(client.all({\n sql: `pragma table_info(${D1_TABLE})`,\n args: [],\n name: 'pragma-d1-migrations',\n }));\n if (info.length === 0) {\n // Fresh DB — create alchemy's \"remote\" shape. Alchemy itself creates this\n // when running against production D1.\n yield client.run({\n sql: `create table ${D1_TABLE} (\\n id text primary key,\\n name text not null,\\n applied_at text not null\\n);`,\n args: [],\n name: 'create-d1-migrations-remote',\n });\n return { kind: 'd1', table: D1_TABLE, hasChecksum: false, variant: 'remote' };\n }\n // Existing table — detect which variant alchemy created.\n const hasType = info.some((row) => row.name === 'type');\n return { kind: 'd1', table: D1_TABLE, hasChecksum: false, variant: hasType ? 'local' : 'remote' };\n}\nexport function selectHistoryQuery(shape) {\n if (shape.kind === 'sqlfu') {\n return {\n sql: `select name, checksum, applied_at from ${shape.table} order by name;`,\n args: [],\n name: 'selectMigrationHistory',\n };\n }\n // D1/local also stores data imports (type = 'import') in the same table;\n // filter to schema migrations so imports don't show up as sqlfu state.\n const typeFilter = shape.variant === 'local' ? ` where type = 'migration'` : '';\n return {\n sql: `select id, name, applied_at from ${shape.table}${typeFilter} order by id;`,\n args: [],\n name: 'selectMigrationHistory',\n };\n}\n/**\n * Alchemy stores migration filenames with the `.sql` suffix in `d1_migrations`\n * (both remote and local variants). Sqlfu's internal representation drops the\n * suffix via `migrationName()`. These helpers normalize at the read/write\n * boundary so callers can keep operating on the sqlfu-native form regardless\n * of preset.\n */\nexport function normalizeHistoryName(shape, name) {\n if (shape.kind === 'd1' && name.endsWith('.sql')) {\n return name.slice(0, -'.sql'.length);\n }\n return name;\n}\nexport function serializeHistoryName(shape, name) {\n return shape.kind === 'd1' && !name.endsWith('.sql') ? `${name}.sql` : name;\n}\nexport function deleteHistoryQuery(shape) {\n return { sql: `delete from ${shape.table};`, args: [], name: 'deleteMigrationHistory' };\n}\nexport function insertMigrationQuery(shape, params) {\n if (shape.kind === 'sqlfu') {\n return {\n sql: `insert into ${shape.table} (name, checksum, applied_at) values (?, ?, ?);`,\n args: [params.name, params.checksum, params.applied_at],\n name: 'insertMigration',\n };\n }\n const wireName = serializeHistoryName(shape, params.name);\n if (shape.variant === 'local') {\n // Local schema: id INTEGER AUTOINCREMENT, applied_at DEFAULT CURRENT_TIMESTAMP.\n // Matches alchemy's local insert shape so alchemy tooling keeps working.\n return {\n sql: `insert into ${shape.table} (name, type) values (?, ?);`,\n args: [wireName, 'migration'],\n name: 'insertMigration',\n };\n }\n // Remote schema: id is a 5-digit zero-padded string computed as max + 1.\n // Matches the convention alchemy uses (see alchemy/src/cloudflare/d1-migrations.ts).\n return {\n sql: `insert into ${shape.table} (id, name, applied_at) values (printf('%05d', (select coalesce(max(cast(id as integer)), 0) + 1 from ${shape.table})), ?, datetime('now'));`,\n args: [wireName],\n name: 'insertMigration',\n };\n}\n","// Minimal POSIX-style path helpers for code that runs in both node and the\n// browser. Works for the `/`-delimited paths we store in SqlfuProjectConfig\n// and migration/query records — does not attempt to handle Windows separators\n// or `..` normalization.\nexport function joinPath(...parts) {\n const joined = parts.filter((part) => part !== '').join('/');\n return joined.replace(/\\/+/g, '/');\n}\nexport function basename(value, extension) {\n const last = value.split('/').pop() ?? '';\n if (extension && last.endsWith(extension)) {\n return last.slice(0, -extension.length);\n }\n return last;\n}\nexport function dirname(value) {\n const idx = value.lastIndexOf('/');\n if (idx === -1)\n return '.';\n if (idx === 0)\n return '/';\n return value.slice(0, idx);\n}\n// If `value` is absolute (starts with `/`), return it unchanged; otherwise join\n// it onto `base`. Matches the two-arg `path.resolve(base, value)` case we rely\n// on in `resolveProjectConfig` — not a full replacement for `path.resolve`.\nexport function resolvePath(base, value) {\n if (value.startsWith('/'))\n return value;\n return joinPath(base, value);\n}\n","import { sqliteDialect } from './dialect.js';\nimport { createDefaultInitPreview } from './init-preview.js';\nimport { dirname, resolvePath } from './paths.js';\nexport { createDefaultInitPreview };\nexport function defineConfig(config) {\n return config;\n}\nexport function resolveProjectConfig(fileConfig, configPath, tsconfigPreferences = {}) {\n const configDir = dirname(configPath);\n return {\n projectRoot: configDir,\n db: typeof fileConfig.db === 'string' ? resolveConfigPathValue(configDir, fileConfig.db) : fileConfig.db,\n migrations: resolveMigrationsConfig(configDir, fileConfig.migrations),\n definitions: resolveConfigPathValue(configDir, fileConfig.definitions),\n queries: resolveConfigPathValue(configDir, fileConfig.queries),\n generate: {\n validator: fileConfig.generate?.validator ?? null,\n prettyErrors: fileConfig.generate?.prettyErrors !== false,\n sync: fileConfig.generate?.sync === true,\n experimentalJsonTypes: fileConfig.generate?.experimentalJsonTypes === true,\n casing: fileConfig.generate?.casing || 'camel',\n runtime: fileConfig.generate?.runtime || 'sqlfu',\n importExtension: fileConfig.generate?.importExtension ?? inferImportExtension(tsconfigPreferences),\n authority: fileConfig.generate?.authority ?? 'desired_schema',\n },\n dialect: fileConfig.dialect || sqliteDialect(),\n };\n}\nexport function inferImportExtension(tsconfigPreferences) {\n return tsconfigPreferences.prefersTsImportExtensions ? '.ts' : '.js';\n}\nconst validValidators = ['arktype', 'valibot', 'zod', 'zod-mini'];\nconst validGenerateCasings = ['camel', 'preserve'];\nconst validGenerateRuntimes = [\n 'sqlfu',\n 'effect-v3',\n 'effect-v4-unstable',\n 'node:sqlite',\n 'better-sqlite3',\n 'bun:sqlite',\n 'libsql',\n '@libsql/client',\n];\nconst validAuthorities = ['desired_schema', 'migrations', 'migration_history', 'live_schema'];\nconst validPrefixes = ['iso', 'four-digit'];\nconst validPresets = ['sqlfu', 'd1'];\nconst presetDefaultPrefix = {\n sqlfu: 'iso',\n d1: 'four-digit',\n};\nexport function assertConfigShape(configPath, config) {\n for (const field of ['definitions', 'queries']) {\n if (!(field in config) || typeof config[field] !== 'string') {\n throw new Error(`Invalid sqlfu config at ${configPath}: missing required string field \"${field}\".`);\n }\n }\n const dbField = config.db;\n if (dbField !== undefined && typeof dbField !== 'string' && typeof dbField !== 'function') {\n throw new Error(`Invalid sqlfu config at ${configPath}: \"db\" must be a filesystem path, a factory function returning a DisposableAsyncClient, or omitted.`);\n }\n const migrations = config.migrations;\n if (migrations !== undefined && typeof migrations !== 'string') {\n if (typeof migrations !== 'object' || migrations === null || Array.isArray(migrations)) {\n throw new Error(`Invalid sqlfu config at ${configPath}: \"migrations\" must be a string or ` +\n `{ path: string; prefix?: 'iso' | 'four-digit'; preset?: 'sqlfu' | 'd1' } if provided.`);\n }\n const migrationsRecord = migrations;\n if (typeof migrationsRecord.path !== 'string') {\n throw new Error(`Invalid sqlfu config at ${configPath}: \"migrations.path\" must be a string.`);\n }\n if (migrationsRecord.prefix !== undefined &&\n !validPrefixes.includes(migrationsRecord.prefix)) {\n throw new Error(`Invalid sqlfu config at ${configPath}: \"migrations.prefix\" must be 'iso' or 'four-digit'. ` +\n `Got ${JSON.stringify(migrationsRecord.prefix)}.`);\n }\n if (migrationsRecord.preset !== undefined &&\n !validPresets.includes(migrationsRecord.preset)) {\n throw new Error(`Invalid sqlfu config at ${configPath}: \"migrations.preset\" must be 'sqlfu' or 'd1'. ` +\n `Got ${JSON.stringify(migrationsRecord.preset)}.`);\n }\n }\n const generate = config.generate;\n if (generate !== undefined) {\n if (typeof generate !== 'object' || generate === null || Array.isArray(generate)) {\n throw new Error(`Invalid sqlfu config at ${configPath}: \"generate\" must be an object.`);\n }\n const generateRecord = generate;\n if ('zod' in generateRecord) {\n throw new Error(`Invalid sqlfu config at ${configPath}: \"generate.zod\" is no longer supported. ` +\n `Use \"generate.validator: 'zod' | 'valibot' | 'zod-mini' | null\" instead.`);\n }\n const validator = generateRecord.validator;\n if (validator !== undefined && validator !== null && !validValidators.includes(validator)) {\n throw new Error(`Invalid sqlfu config at ${configPath}: \"generate.validator\" must be one of ` +\n `${validValidators.map((v) => `'${v}'`).join(', ')}, null, or undefined. Got ${JSON.stringify(validator)}.`);\n }\n const prettyErrors = generateRecord.prettyErrors;\n if (prettyErrors !== undefined && typeof prettyErrors !== 'boolean') {\n throw new Error(`Invalid sqlfu config at ${configPath}: \"generate.prettyErrors\" must be a boolean.`);\n }\n const sync = generateRecord.sync;\n if (sync !== undefined && typeof sync !== 'boolean') {\n throw new Error(`Invalid sqlfu config at ${configPath}: \"generate.sync\" must be a boolean.`);\n }\n const experimentalJsonTypes = generateRecord.experimentalJsonTypes;\n if (experimentalJsonTypes !== undefined && typeof experimentalJsonTypes !== 'boolean') {\n throw new Error(`Invalid sqlfu config at ${configPath}: \"generate.experimentalJsonTypes\" must be a boolean.`);\n }\n const casing = generateRecord.casing;\n if (casing !== undefined && !validGenerateCasings.includes(casing)) {\n throw new Error(`Invalid sqlfu config at ${configPath}: \"generate.casing\" must be 'camel', 'preserve', or undefined. ` +\n `Got ${JSON.stringify(casing)}.`);\n }\n const runtime = generateRecord.runtime;\n if (runtime !== undefined && !validGenerateRuntimes.includes(runtime)) {\n throw new Error(`Invalid sqlfu config at ${configPath}: \"generate.runtime\" must be one of ` +\n `${validGenerateRuntimes.map((value) => `'${value}'`).join(', ')}, or undefined. Got ${JSON.stringify(runtime)}.`);\n }\n const importExtension = generateRecord.importExtension;\n if (importExtension !== undefined && importExtension !== '.js' && importExtension !== '.ts') {\n throw new Error(`Invalid sqlfu config at ${configPath}: \"generate.importExtension\" must be '.js' or '.ts'.`);\n }\n const authority = generateRecord.authority;\n if (authority !== undefined && !validAuthorities.includes(authority)) {\n throw new Error(`Invalid sqlfu config at ${configPath}: \"generate.authority\" must be one of ` +\n `${validAuthorities.map((value) => `'${value}'`).join(', ')}, or undefined. Got ${JSON.stringify(authority)}.`);\n }\n }\n if ('generatedImportExtension' in config) {\n throw new Error(`Invalid sqlfu config at ${configPath}: \"generatedImportExtension\" at the top level is no longer supported. ` +\n `Use \"generate.importExtension: '.js' | '.ts'\" instead.`);\n }\n}\nfunction resolveConfigPathValue(configDir, configValue) {\n return resolvePath(configDir, configValue);\n}\nfunction resolveMigrationsConfig(configDir, value) {\n if (!value)\n return undefined;\n if (typeof value === 'string') {\n return { path: resolveConfigPathValue(configDir, value), prefix: 'iso', preset: 'sqlfu' };\n }\n const preset = value.preset ?? 'sqlfu';\n const prefix = value.prefix ?? presetDefaultPrefix[preset];\n return { path: resolveConfigPathValue(configDir, value.path), prefix, preset };\n}\n/**\n * The UI server deliberately serves uninitialized directories (it has an init\n * flow), but an inline defineConfig module would start a server whose every\n * request fails — `serve` rejects those up front like the other non-inline\n * commands.\n */\nexport function assertServableProject(project) {\n if (project.initialized && 'inline' in project) {\n throw new Error(`No file-backed sqlfu config found at ${project.configPath}; inline defineConfig modules support generate and draft only.`);\n }\n}\n","/*\n * Minimal SHA-256 implementation, vendored to drop the `@noble/hashes`\n * dependency. sqlfu only needs `sha256(bytes) -> bytes` for migration\n * checksums (src/migrations/index.ts), which picks a pure-JS hash so it\n * works identically in Node and Cloudflare Workers.\n *\n * Algorithm: FIPS 180-4 / RFC 6234 §6.2. The constants are public-domain\n * (they're fractional parts of primes). Comments below mirror the spec\n * section numbers so a future reader can audit against RFC 6234 directly.\n *\n * Inspired by (and tested to byte-match) the upstream `@noble/hashes/sha2`\n * implementation at noble-hashes v2.2.0; we ship our own because we use\n * exactly one 32-byte hash function and don't want the wider noble tree.\n */\n// §5.1: first 32 bits of the fractional parts of the cube roots of the first\n// 64 primes (2..311). Public-domain constants.\nconst K = Uint32Array.from([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\n]);\nfunction rotr(x, n) {\n return (x >>> n) | (x << (32 - n));\n}\nexport function sha256(data) {\n // §5.3.3: initial hash values. Fractional parts of the square roots of\n // the first 8 primes.\n let h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372, h3 = 0xa54ff53a;\n let h4 = 0x510e527f, h5 = 0x9b05688c, h6 = 0x1f83d9ab, h7 = 0x5be0cd19;\n // §5.1.1: append a 1 bit, pad with zeros so length ≡ 56 (mod 64), then\n // append the original length as a big-endian 64-bit count in bits.\n const bitLenHi = Math.floor(data.length / 0x20000000) | 0;\n const bitLenLo = (data.length * 8) >>> 0;\n const padLen = (data.length % 64 < 56 ? 56 : 120) - (data.length % 64);\n const padded = new Uint8Array(data.length + padLen + 8);\n padded.set(data);\n padded[data.length] = 0x80;\n const dv = new DataView(padded.buffer);\n dv.setUint32(padded.length - 8, bitLenHi, false);\n dv.setUint32(padded.length - 4, bitLenLo, false);\n const W = new Uint32Array(64);\n for (let offset = 0; offset < padded.length; offset += 64) {\n // §6.2 step 1: prepare message schedule W[0..63].\n for (let t = 0; t < 16; t++)\n W[t] = dv.getUint32(offset + t * 4, false);\n for (let t = 16; t < 64; t++) {\n const s0 = rotr(W[t - 15], 7) ^ rotr(W[t - 15], 18) ^ (W[t - 15] >>> 3);\n const s1 = rotr(W[t - 2], 17) ^ rotr(W[t - 2], 19) ^ (W[t - 2] >>> 10);\n W[t] = (W[t - 16] + s0 + W[t - 7] + s1) | 0;\n }\n // §6.2 step 3: compression function.\n let a = h0, b = h1, c = h2, d = h3, e = h4, f = h5, g = h6, h = h7;\n for (let t = 0; t < 64; t++) {\n const S1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25);\n const ch = (e & f) ^ (~e & g);\n const temp1 = (h + S1 + ch + K[t] + W[t]) | 0;\n const S0 = rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22);\n const maj = (a & b) ^ (a & c) ^ (b & c);\n const temp2 = (S0 + maj) | 0;\n h = g;\n g = f;\n f = e;\n e = (d + temp1) | 0;\n d = c;\n c = b;\n b = a;\n a = (temp1 + temp2) | 0;\n }\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n }\n const out = new Uint8Array(32);\n const outDv = new DataView(out.buffer);\n outDv.setUint32(0, h0, false);\n outDv.setUint32(4, h1, false);\n outDv.setUint32(8, h2, false);\n outDv.setUint32(12, h3, false);\n outDv.setUint32(16, h4, false);\n outDv.setUint32(20, h5, false);\n outDv.setUint32(24, h6, false);\n outDv.setUint32(28, h7, false);\n return out;\n}\n","import { sha256 } from '../vendor/sha256.js';\nimport { basename } from '../paths.js';\nimport { awaited, driveAsync, driveSync } from '../dual-dispatch.js';\nimport { deleteHistoryQuery, ensureMigrationTableGen, insertMigrationQuery, normalizeHistoryName, selectHistoryQuery, } from './preset-queries.js';\n/**\n * Convert a `MigrationBundle` (as emitted by `sqlfu generate`) into the\n * `Migration[]` shape `applyMigrations` consumes. Migrations are returned\n * sorted by bundle key, which is the same order the CLI applies them in.\n */\nexport function migrationsFromBundle(bundle) {\n return Object.entries(bundle)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([path, content]) => ({ path, content }));\n}\nexport function migrationName(migration) {\n return basename(migration.path, '.sql');\n}\nexport function readMigrationHistory(client, params = {}) {\n const preset = params.preset ?? 'sqlfu';\n return client.sync\n ? driveSync(readMigrationHistoryGen(client, preset, params.dialect))\n : driveAsync(readMigrationHistoryGen(client, preset, params.dialect));\n}\nfunction* readMigrationHistoryGen(client, preset, dialect) {\n const shape = yield* ensureMigrationTableGen(client, preset, dialect);\n const rows = yield* awaited(client.all(selectHistoryQuery(shape)));\n return rows.map((row) => ({ ...row, name: normalizeHistoryName(shape, row.name) }));\n}\nexport function applyMigrations(client, params) {\n if (client.sync) {\n return driveSync(applyMigrationsGen(client, params));\n }\n // tsgo-narrowing wart: even though `client.sync === true` early-returns\n // above, the discriminated-union narrowing on the else path doesn't\n // always carry through into the dialect call below. Manually re-typing\n // via cast keeps the call site honest.\n const asyncClient = client;\n const run = () => driveAsync(applyMigrationsGen(asyncClient, params));\n return params.dialect?.withMigrationLock ? params.dialect.withMigrationLock(asyncClient, run) : run();\n}\nexport function baselineMigrationHistory(client, params) {\n return client.sync\n ? driveSync(baselineMigrationHistoryGen(client, params))\n : driveAsync(baselineMigrationHistoryGen(client, params));\n}\nexport function replaceMigrationHistory(client, params) {\n return client.sync\n ? driveSync(replaceMigrationHistoryGen(client, params))\n : driveAsync(replaceMigrationHistoryGen(client, params));\n}\nfunction* applyMigrationsGen(client, params) {\n const preset = params.preset ?? 'sqlfu';\n const shape = yield* ensureMigrationTableGen(client, preset, params.dialect);\n const appliedRaw = yield* awaited(client.all(selectHistoryQuery(shape)));\n const applied = appliedRaw.map((row) => ({ ...row, name: normalizeHistoryName(shape, row.name) }));\n const byName = new Map(params.migrations.map((migration) => [migrationName(migration), migration]));\n for (const historical of applied) {\n const current = byName.get(historical.name);\n if (!current) {\n throw new Error(`deleted applied migration: ${historical.name}`);\n }\n // Under presets without a checksum column (d1), we can't detect edits.\n // Documented downgrade — see docs/migration-model.md.\n if (shape.hasChecksum && historical.checksum && digest(current.content) !== historical.checksum) {\n throw new Error(`applied migration checksum mismatch: ${historical.name}`);\n }\n }\n const appliedNames = applied.map((migration) => migration.name);\n const expectedAppliedPrefix = params.migrations.slice(0, applied.length).map((migration) => migrationName(migration));\n if (appliedNames.some((name, index) => name !== expectedAppliedPrefix[index])) {\n throw new Error('migration history is not a prefix of migrations');\n }\n for (const migration of params.migrations) {\n const name = migrationName(migration);\n if (applied.some((row) => row.name === name)) {\n continue;\n }\n const checksum = digest(migration.content);\n const applied_at = new Date().toISOString();\n // the sync transaction method takes a sync callback and returns its value;\n // the async transaction method awaits an async callback. we route the\n // inner generator through the matching driver so the same generator body\n // services both shapes.\n yield client.transaction((tx) => {\n const innerGen = applyOneMigrationGen(tx, shape, { content: migration.content, name, checksum, applied_at });\n return tx.sync ? driveSync(innerGen) : driveAsync(innerGen);\n });\n }\n}\nfunction* applyOneMigrationGen(client, shape, input) {\n yield client.raw(input.content);\n yield client.run(insertMigrationQuery(shape, { name: input.name, checksum: input.checksum, applied_at: input.applied_at }));\n}\nfunction* baselineMigrationHistoryGen(client, params) {\n const targetIndex = params.migrations.findIndex((migration) => migrationName(migration) === params.target);\n if (targetIndex === -1) {\n throw new Error(`migration ${params.target} not found`);\n }\n const appliedSlice = params.migrations.slice(0, targetIndex + 1);\n yield client.transaction((tx) => {\n const innerGen = replaceMigrationHistoryGen(tx, {\n migrations: appliedSlice,\n preset: params.preset,\n dialect: params.dialect,\n });\n return tx.sync ? driveSync(innerGen) : driveAsync(innerGen);\n });\n}\nfunction* replaceMigrationHistoryGen(client, params) {\n const preset = params.preset ?? 'sqlfu';\n const shape = yield* ensureMigrationTableGen(client, preset, params.dialect);\n yield client.run(deleteHistoryQuery(shape));\n for (const migration of params.migrations) {\n yield client.run(insertMigrationQuery(shape, {\n name: migrationName(migration),\n checksum: digest(migration.content),\n applied_at: new Date().toISOString(),\n }));\n }\n}\nfunction digest(content) {\n // Pure-JS sha256 (vendored from @noble/hashes in src/vendor/sha256.ts).\n // Sync, portable, and avoids shimming node:crypto into Workers runtimes.\n const bytes = sha256(new TextEncoder().encode(content));\n return Array.from(bytes, (byte) => byte.toString(16).padStart(2, '0')).join('');\n}\n","import { applyMigrations } from './migrations/index.js';\nexport function defineInlineConfig(definition) {\n const factory = ((client) => {\n const bound = {\n migrate() {\n return applyMigrations(client, {\n migrations: inlineMigrations(definition.migrations || []),\n preset: 'sqlfu',\n });\n },\n };\n for (const [name, query] of Object.entries(definition.queries)) {\n bound[name] = bindInlineQuery(client, query);\n }\n return bound;\n });\n factory.$type = {};\n factory.config = definition;\n return factory;\n}\nfunction inlineMigrations(migrations) {\n return migrations.map((migration) => {\n if (migration.content.args.length > 0) {\n throw new Error(`Inline migration ${JSON.stringify(migration.name)} cannot use template interpolations.`);\n }\n return {\n path: `${migration.name}.sql`,\n content: migration.content.sql,\n };\n });\n}\n/**\n * Mode and shape validation depend only on the static query definition, so\n * they run once at bind time and the per-call closure only executes — this\n * runs on every query inside a durable object's single-threaded event loop.\n * Validation errors still surface on first call rather than at bind, so an\n * ungenerated module can still construct its durable object.\n */\nfunction bindInlineQuery(client, query) {\n try {\n const mode = readInlineQueryMode(query);\n if (query.args.length > 0) {\n throw new Error('Inline queries cannot use template interpolations.');\n }\n return client.sync\n ? (params) => runInlineSyncQuery(client, query.sql, mode, params)\n : (params) => runInlineAsyncQuery(client, query.sql, mode, params);\n }\n catch (error) {\n return () => {\n throw error;\n };\n }\n}\nfunction runInlineSyncQuery(client, sql, mode, params) {\n using stmt = client.prepare(sql);\n if (mode === 'metadata')\n return stmt.run(params);\n return inlineRowsResult(stmt.all(params), mode);\n}\nasync function runInlineAsyncQuery(client, sql, mode, params) {\n const stmt = client.prepare(sql);\n try {\n if (mode === 'metadata')\n return await stmt.run(params);\n return inlineRowsResult(await stmt.all(params), mode);\n }\n finally {\n await stmt[Symbol.asyncDispose]();\n }\n}\nfunction readInlineQueryMode(query) {\n const mode = 'mode' in query ? query.mode : undefined;\n if (isQueryResultMode(mode)) {\n return mode;\n }\n if (!mode) {\n throw new Error('Inline query is missing generated mode. Run sqlfu generate before binding inline defineConfig().');\n }\n throw new Error(`Inline query has unsupported generated mode ${JSON.stringify(mode)}.`);\n}\nfunction isQueryResultMode(value) {\n return value === 'many' || value === 'nullableOne' || value === 'one' || value === 'metadata';\n}\nfunction inlineRowsResult(rows, mode) {\n if (mode === 'many')\n return rows;\n if (mode === 'nullableOne')\n return rows[0] || null;\n if (mode === 'one')\n return rows[0];\n throw new Error(`Inline query mode ${JSON.stringify(mode)} cannot return rows.`);\n}\n","// The sqlfu root export. Strict-tier: zero node:* imports, zero bare\n// specifiers in the runtime graph of dist/index.js. Enforced by\n// test/import-surface.test.ts. If you're reaching for node:*, or for a\n// vendor bundle like the formatter or typegen, the right home is\n// sqlfu/api (heavy tier) or sqlfu/analyze (zero-node:* + vendor OK).\nexport * from './sql.js';\nexport * from './types.js';\nexport * from './naming.js';\nexport * from './util.js';\nexport * from './errors.js';\nexport * from './instrument.js';\nexport * from './adapters/d1.js';\nexport * from './adapters/libsql.js';\nexport * from './adapters/libsql-client.js';\nexport * from './adapters/bun.js';\nexport * from './adapters/better-sqlite3.js';\nexport * from './adapters/node-sqlite.js';\nexport * from './adapters/durable-object.js';\nexport * from './adapters/expo-sqlite.js';\nexport * from './adapters/sqlite-wasm.js';\nexport * from './adapters/turso-database.js';\nexport * from './adapters/turso-serverless.js';\nexport * from './adapters/pg.js';\nimport { defineConfig as defineConfigFs } from './config.js';\nimport { defineInlineConfig, } from './config-inline.js';\nexport function defineConfig(config) {\n const fileDefinitions = typeof config?.definitions === 'string';\n const fileQueries = typeof config?.queries === 'string';\n // The overloads reject this at compile time; the runtime guard is for\n // untyped callers, who would otherwise get the plain file-backed object back\n // and a confusing \"db is not a function\" far away from the config.\n if (fileDefinitions !== fileQueries && config?.definitions !== undefined && config?.queries !== undefined) {\n throw new Error('defineConfig(...) mixes inline and file-backed shapes: use string paths for both \"definitions\" and ' +\n '\"queries\" (file-backed config), or sql`...` templates for both (inline config).');\n }\n if (fileDefinitions || fileQueries) {\n return defineConfigFs(config);\n }\n return defineInlineConfig(config);\n}\n// Pluggable dialect surface. The default `sqliteDialect` is wired up\n// automatically when `defineConfig` omits `dialect`. Postgres support arrives\n// via `pgDialect` from `@sqlfu/pg` (separate package, dev-only dependency).\nexport { sqliteDialect } from './dialect.js';\n// Pure-SQLite text helpers — no node:*, useful on the light path for\n// anyone wrangling migration SQL, splitting statements, or extracting\n// schema from a running client.\nexport { extractSchema, rawSqlWithSqlSplittingAsync, rawSqlWithSqlSplittingSync, splitSqlStatements, sqlReturnsRows, surroundWithBeginCommitRollbackAsync, surroundWithBeginCommitRollbackSync, } from './sqlite-text.js';\n// The \"just-run-the-sql-bro\" migrator: enough to apply migrations from a\n// bundle at Cloudflare Worker / Bun boot. History-reconciliation helpers\n// (baseline, replace, readHistory, drift helpers) stay internal to\n// sqlfu/api — workers don't reconcile, they just apply.\nexport { applyMigrations, migrationsFromBundle } from './migrations/index.js';\nexport { prettifyStandardSchemaError } from './vendor/standard-schema/errors.js';\n","import todoClientSource from \"iterate:todo-client-source\";\nimport { createDurableObjectClient, defineConfig, sql } from \"sqlfu\";\nimport {\n LiveState,\n LiveStateRpcTarget,\n RpcTarget,\n newWorkersWebSocketRpcResponse,\n type LiveStateRpc,\n} from \"../../sdk/capnweb/index.ts\";\nimport { IterateDurableObject } from \"../../sdk.ts\";\n\ntype Todo = {\n createdAt: string;\n done: boolean;\n id: string;\n title: string;\n};\n\ntype TodoListState = { todos: Todo[] };\n\n/** One packaged Durable Object owns the page, API, persistence, and live value. */\nexport class TodoApp extends IterateDurableObject {\n static db = defineConfig({\n definitions: sql`\n create table todos (\n id text primary key,\n title text not null,\n done integer not null default 0,\n created_at text not null\n );\n `,\n migrations: [\n {\n name: \"20260718000001_create_todos\",\n content: sql`\n create table if not exists todos (\n id text primary key,\n title text not null,\n done integer not null default 0,\n created_at text not null\n );\n `,\n },\n ],\n queries: {\n list: sql.many<{\n result: { created_at: string; done: number; id: string; title: string };\n }>`\n select id, title, done, created_at from todos order by created_at asc, id asc\n `,\n insert: sql.run<{ parameters: { createdAt: string; id: string; title: string } }>`\n insert into todos (id, title, done, created_at) values (:id, :title, 0, :createdAt)\n `,\n setDone: sql.run<{ parameters: { done: number; id: string } }>`\n update todos set done = :done where id = :id\n `,\n remove: sql.run<{ parameters: { id: string } }>`\n delete from todos where id = :id\n `,\n },\n });\n\n readonly #db: ReturnType<typeof TodoApp.db<ReturnType<typeof createDurableObjectClient>>>;\n readonly #live: LiveState<TodoListState>;\n\n constructor(...args: ConstructorParameters<typeof IterateDurableObject>) {\n super(...args);\n this.#db = TodoApp.db(createDurableObjectClient({ sql: this.ctx.storage.sql }));\n this.#db.migrate();\n this.#live = new LiveState<TodoListState>({ todos: this.#load() });\n }\n\n #load(): Todo[] {\n return this.#db.list().map((row) => ({\n createdAt: row.created_at,\n done: row.done !== 0,\n id: row.id,\n title: row.title,\n }));\n }\n\n #refresh(): void {\n this.#live.setState({ todos: this.#load() });\n }\n\n /** Internal worker RPC surface used to verify state continuity across source upgrades. */\n getTodos(): Todo[] {\n return this.#load();\n }\n\n // The browser supplies its optimistic ID; existing server-side callers\n // can still ask this app to allocate one.\n add(title: string, id: string = crypto.randomUUID()): string {\n const trimmed = title.trim().slice(0, 200);\n if (trimmed.length === 0) throw new Error(\"Todo title must not be empty.\");\n this.#db.insert({\n createdAt: new Date().toISOString(),\n id,\n title: trimmed,\n });\n this.#refresh();\n return id;\n }\n\n setDone(id: string, done: boolean): void {\n this.#db.setDone({ done: done ? 1 : 0, id });\n this.#refresh();\n }\n\n remove(id: string): void {\n this.#db.remove({ id });\n this.#refresh();\n }\n\n async fetch(request: Request): Promise<Response> {\n const url = new URL(request.url);\n if (url.pathname === \"/api\") {\n return newWorkersWebSocketRpcResponse(request, new TodoApi(this, this.#live));\n }\n if (request.method === \"GET\" && url.pathname === \"/apps/todo/client.js\") {\n return new Response(todoClientSource, {\n headers: {\n \"content-type\": \"application/javascript; charset=utf-8\",\n \"x-content-type-options\": \"nosniff\",\n },\n });\n }\n if (request.method !== \"GET\" || url.pathname !== \"/\") {\n return new Response(\"not found\", { status: 404 });\n }\n return new Response(\n `<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n <title>Todo</title>\n <style>\n :root { color-scheme: light dark; font-family: system-ui, sans-serif; }\n body { margin: 0; padding: 2rem; }\n main { margin: 0 auto; max-width: 38rem; }\n form, li { display: flex; gap: .75rem; margin-block: .75rem; }\n input[type=\"text\"] { flex: 1; padding: .6rem; }\n button { padding: .45rem .75rem; }\n .done { text-decoration: line-through; opacity: .65; }\n [role=\"alert\"] { color: #c33; }\n </style>\n </head>\n <body>\n <main id=\"root\"><p>Loading…</p></main>\n <script type=\"module\" src=\"/apps/todo/client.js\"></script>\n </body>\n</html>`,\n {\n headers: {\n \"content-type\": \"text/html; charset=utf-8\",\n \"x-content-type-options\": \"nosniff\",\n },\n },\n );\n }\n}\n\nexport class TodoApi extends RpcTarget {\n readonly #app: TodoApp;\n readonly #liveState: LiveStateRpcTarget<TodoListState>;\n\n constructor(app: TodoApp, live: LiveState<TodoListState>) {\n super();\n this.#app = app;\n this.#liveState = new LiveStateRpcTarget(live);\n }\n\n get liveState(): LiveStateRpc<TodoListState> {\n return this.#liveState;\n }\n\n async add(title: string, id: string): Promise<string> {\n return this.#app.add(title, id);\n }\n\n async setDone(id: string, done: boolean): Promise<void> {\n this.#app.setDone(id, done);\n }\n\n async remove(id: string): Promise<void> {\n this.#app.remove(id);\n }\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],"mappings":"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"}