@homeflare/alchemy 0.43.0 → 0.45.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 (612) hide show
  1. package/README.md +10 -1
  2. package/dist/caddy/index.js +35 -1
  3. package/dist/caddy/index.js.map +3 -3
  4. package/dist/launchd/index.js +35 -1
  5. package/dist/launchd/index.js.map +3 -3
  6. package/dist/linux/index.js +35 -1
  7. package/dist/linux/index.js.map +3 -3
  8. package/dist/litellm/access-group-form.d.ts +26 -0
  9. package/dist/litellm/access-group-form.d.ts.map +1 -0
  10. package/dist/litellm/access-group-operations.d.ts +37 -0
  11. package/dist/litellm/access-group-operations.d.ts.map +1 -0
  12. package/dist/litellm/access-group-types.d.ts +49 -0
  13. package/dist/litellm/access-group-types.d.ts.map +1 -0
  14. package/dist/litellm/access-group.d.ts +55 -0
  15. package/dist/litellm/access-group.d.ts.map +1 -0
  16. package/dist/litellm/credential-errors.d.ts +131 -0
  17. package/dist/litellm/credential-errors.d.ts.map +1 -0
  18. package/dist/litellm/credential-form.d.ts +79 -0
  19. package/dist/litellm/credential-form.d.ts.map +1 -0
  20. package/dist/litellm/credential-operations.d.ts +84 -0
  21. package/dist/litellm/credential-operations.d.ts.map +1 -0
  22. package/dist/litellm/credential-rewrite.d.ts +6 -0
  23. package/dist/litellm/credential-rewrite.d.ts.map +1 -0
  24. package/dist/litellm/credential-types.d.ts +87 -0
  25. package/dist/litellm/credential-types.d.ts.map +1 -0
  26. package/dist/litellm/credential-values.d.ts +53 -0
  27. package/dist/litellm/credential-values.d.ts.map +1 -0
  28. package/dist/litellm/credential.d.ts +83 -0
  29. package/dist/litellm/credential.d.ts.map +1 -0
  30. package/dist/litellm/fake-access-group-litellm.d.ts +34 -0
  31. package/dist/litellm/fake-access-group-litellm.d.ts.map +1 -0
  32. package/dist/litellm/fake-credential-litellm.d.ts +54 -0
  33. package/dist/litellm/fake-credential-litellm.d.ts.map +1 -0
  34. package/dist/litellm/fake-keys.d.ts +53 -0
  35. package/dist/litellm/fake-keys.d.ts.map +1 -0
  36. package/dist/litellm/fake-litellm.d.ts +4 -1
  37. package/dist/litellm/fake-litellm.d.ts.map +1 -1
  38. package/dist/litellm/fake-mcp-litellm.d.ts +67 -0
  39. package/dist/litellm/fake-mcp-litellm.d.ts.map +1 -0
  40. package/dist/litellm/fake-model-litellm-post-update.d.ts +49 -0
  41. package/dist/litellm/fake-model-litellm-post-update.d.ts.map +1 -0
  42. package/dist/litellm/fake-model-litellm.d.ts +48 -0
  43. package/dist/litellm/fake-model-litellm.d.ts.map +1 -0
  44. package/dist/litellm/fake-policy-attachment-litellm.d.ts +33 -0
  45. package/dist/litellm/fake-policy-attachment-litellm.d.ts.map +1 -0
  46. package/dist/litellm/fake-policy-litellm.d.ts +32 -0
  47. package/dist/litellm/fake-policy-litellm.d.ts.map +1 -0
  48. package/dist/litellm/fake-registry-base.d.ts +42 -0
  49. package/dist/litellm/fake-registry-base.d.ts.map +1 -0
  50. package/dist/litellm/fake-stack.d.ts +8 -1
  51. package/dist/litellm/fake-stack.d.ts.map +1 -1
  52. package/dist/litellm/fake-team-litellm.d.ts +47 -0
  53. package/dist/litellm/fake-team-litellm.d.ts.map +1 -0
  54. package/dist/litellm/fake-tool-litellm.d.ts +28 -0
  55. package/dist/litellm/fake-tool-litellm.d.ts.map +1 -0
  56. package/dist/litellm/fake-toolset-litellm.d.ts +29 -0
  57. package/dist/litellm/fake-toolset-litellm.d.ts.map +1 -0
  58. package/dist/litellm/index.d.ts +18 -0
  59. package/dist/litellm/index.d.ts.map +1 -1
  60. package/dist/litellm/index.js +3078 -2
  61. package/dist/litellm/index.js.map +65 -4
  62. package/dist/litellm/key-errors.d.ts +169 -0
  63. package/dist/litellm/key-errors.d.ts.map +1 -0
  64. package/dist/litellm/key-form.d.ts +119 -0
  65. package/dist/litellm/key-form.d.ts.map +1 -0
  66. package/dist/litellm/key-harness.d.ts +41 -0
  67. package/dist/litellm/key-harness.d.ts.map +1 -0
  68. package/dist/litellm/key-metadata-errors.d.ts +30 -0
  69. package/dist/litellm/key-metadata-errors.d.ts.map +1 -0
  70. package/dist/litellm/key-metadata.d.ts +22 -0
  71. package/dist/litellm/key-metadata.d.ts.map +1 -0
  72. package/dist/litellm/key-operations.d.ts +63 -0
  73. package/dist/litellm/key-operations.d.ts.map +1 -0
  74. package/dist/litellm/key-secret.d.ts +33 -0
  75. package/dist/litellm/key-secret.d.ts.map +1 -0
  76. package/dist/litellm/key.d.ts +78 -0
  77. package/dist/litellm/key.d.ts.map +1 -0
  78. package/dist/litellm/mcp-server-credential.d.ts +50 -0
  79. package/dist/litellm/mcp-server-credential.d.ts.map +1 -0
  80. package/dist/litellm/mcp-server-errors.d.ts +101 -0
  81. package/dist/litellm/mcp-server-errors.d.ts.map +1 -0
  82. package/dist/litellm/mcp-server-form.d.ts +56 -0
  83. package/dist/litellm/mcp-server-form.d.ts.map +1 -0
  84. package/dist/litellm/mcp-server-locate.d.ts +26 -0
  85. package/dist/litellm/mcp-server-locate.d.ts.map +1 -0
  86. package/dist/litellm/mcp-server-operations.d.ts +63 -0
  87. package/dist/litellm/mcp-server-operations.d.ts.map +1 -0
  88. package/dist/litellm/mcp-server-shadow.d.ts +24 -0
  89. package/dist/litellm/mcp-server-shadow.d.ts.map +1 -0
  90. package/dist/litellm/mcp-server-types.d.ts +118 -0
  91. package/dist/litellm/mcp-server-types.d.ts.map +1 -0
  92. package/dist/litellm/mcp-server-url.d.ts +11 -0
  93. package/dist/litellm/mcp-server-url.d.ts.map +1 -0
  94. package/dist/litellm/mcp-server.d.ts +95 -0
  95. package/dist/litellm/mcp-server.d.ts.map +1 -0
  96. package/dist/litellm/model-claim.d.ts +24 -0
  97. package/dist/litellm/model-claim.d.ts.map +1 -0
  98. package/dist/litellm/model-credential.d.ts +12 -0
  99. package/dist/litellm/model-credential.d.ts.map +1 -0
  100. package/dist/litellm/model-errors.d.ts +119 -0
  101. package/dist/litellm/model-errors.d.ts.map +1 -0
  102. package/dist/litellm/model-form.d.ts +78 -0
  103. package/dist/litellm/model-form.d.ts.map +1 -0
  104. package/dist/litellm/model-locate.d.ts +13 -0
  105. package/dist/litellm/model-locate.d.ts.map +1 -0
  106. package/dist/litellm/model-operations.d.ts +59 -0
  107. package/dist/litellm/model-operations.d.ts.map +1 -0
  108. package/dist/litellm/model-types.d.ts +91 -0
  109. package/dist/litellm/model-types.d.ts.map +1 -0
  110. package/dist/litellm/model.d.ts +88 -0
  111. package/dist/litellm/model.d.ts.map +1 -0
  112. package/dist/litellm/policy-attachment-form.d.ts +19 -0
  113. package/dist/litellm/policy-attachment-form.d.ts.map +1 -0
  114. package/dist/litellm/policy-attachment-operations.d.ts +31 -0
  115. package/dist/litellm/policy-attachment-operations.d.ts.map +1 -0
  116. package/dist/litellm/policy-attachment-types.d.ts +48 -0
  117. package/dist/litellm/policy-attachment-types.d.ts.map +1 -0
  118. package/dist/litellm/policy-attachment.d.ts +61 -0
  119. package/dist/litellm/policy-attachment.d.ts.map +1 -0
  120. package/dist/litellm/policy-form.d.ts +22 -0
  121. package/dist/litellm/policy-form.d.ts.map +1 -0
  122. package/dist/litellm/policy-operations.d.ts +42 -0
  123. package/dist/litellm/policy-operations.d.ts.map +1 -0
  124. package/dist/litellm/policy-types.d.ts +57 -0
  125. package/dist/litellm/policy-types.d.ts.map +1 -0
  126. package/dist/litellm/policy.d.ts +65 -0
  127. package/dist/litellm/policy.d.ts.map +1 -0
  128. package/dist/litellm/providers.d.ts +1 -1
  129. package/dist/litellm/providers.d.ts.map +1 -1
  130. package/dist/litellm/registry-errors.d.ts +62 -0
  131. package/dist/litellm/registry-errors.d.ts.map +1 -0
  132. package/dist/litellm/registry-support.d.ts +42 -0
  133. package/dist/litellm/registry-support.d.ts.map +1 -0
  134. package/dist/litellm/team-form.d.ts +26 -0
  135. package/dist/litellm/team-form.d.ts.map +1 -0
  136. package/dist/litellm/team-members.d.ts +10 -0
  137. package/dist/litellm/team-members.d.ts.map +1 -0
  138. package/dist/litellm/team-operations.d.ts +38 -0
  139. package/dist/litellm/team-operations.d.ts.map +1 -0
  140. package/dist/litellm/team-permission.d.ts +35 -0
  141. package/dist/litellm/team-permission.d.ts.map +1 -0
  142. package/dist/litellm/team-types.d.ts +101 -0
  143. package/dist/litellm/team-types.d.ts.map +1 -0
  144. package/dist/litellm/team.d.ts +67 -0
  145. package/dist/litellm/team.d.ts.map +1 -0
  146. package/dist/litellm/tool-policy-form.d.ts +21 -0
  147. package/dist/litellm/tool-policy-form.d.ts.map +1 -0
  148. package/dist/litellm/tool-policy-operations.d.ts +30 -0
  149. package/dist/litellm/tool-policy-operations.d.ts.map +1 -0
  150. package/dist/litellm/tool-policy-types.d.ts +46 -0
  151. package/dist/litellm/tool-policy-types.d.ts.map +1 -0
  152. package/dist/litellm/tool-policy.d.ts +62 -0
  153. package/dist/litellm/tool-policy.d.ts.map +1 -0
  154. package/dist/litellm/toolset-form.d.ts +20 -0
  155. package/dist/litellm/toolset-form.d.ts.map +1 -0
  156. package/dist/litellm/toolset-operations.d.ts +39 -0
  157. package/dist/litellm/toolset-operations.d.ts.map +1 -0
  158. package/dist/litellm/toolset-types.d.ts +46 -0
  159. package/dist/litellm/toolset-types.d.ts.map +1 -0
  160. package/dist/litellm/toolset.d.ts +55 -0
  161. package/dist/litellm/toolset.d.ts.map +1 -0
  162. package/dist/openbao/index.js +35 -1
  163. package/dist/openbao/index.js.map +3 -3
  164. package/dist/ownership/rows.d.ts +11 -0
  165. package/dist/ownership/rows.d.ts.map +1 -1
  166. package/dist/postgres/connection.d.ts +14 -2
  167. package/dist/postgres/connection.d.ts.map +1 -1
  168. package/dist/postgres/database-sql.d.ts +27 -8
  169. package/dist/postgres/database-sql.d.ts.map +1 -1
  170. package/dist/postgres/fake-grants-parse.d.ts +37 -0
  171. package/dist/postgres/fake-grants-parse.d.ts.map +1 -0
  172. package/dist/postgres/fake-grants-read.d.ts +61 -0
  173. package/dist/postgres/fake-grants-read.d.ts.map +1 -0
  174. package/dist/postgres/fake-grants-sql.d.ts +46 -0
  175. package/dist/postgres/fake-grants-sql.d.ts.map +1 -0
  176. package/dist/postgres/fake-grants-write.d.ts +29 -0
  177. package/dist/postgres/fake-grants-write.d.ts.map +1 -0
  178. package/dist/postgres/fake-role-sql.d.ts +41 -0
  179. package/dist/postgres/fake-role-sql.d.ts.map +1 -0
  180. package/dist/postgres/fake-schema-sql.d.ts +42 -0
  181. package/dist/postgres/fake-schema-sql.d.ts.map +1 -0
  182. package/dist/postgres/fake-sql-parse.d.ts +23 -0
  183. package/dist/postgres/fake-sql-parse.d.ts.map +1 -0
  184. package/dist/postgres/fake-sql-quote.d.ts +12 -0
  185. package/dist/postgres/fake-sql-quote.d.ts.map +1 -0
  186. package/dist/postgres/fake-sql.d.ts +42 -0
  187. package/dist/postgres/fake-sql.d.ts.map +1 -1
  188. package/dist/postgres/grants-attrs.d.ts +115 -0
  189. package/dist/postgres/grants-attrs.d.ts.map +1 -0
  190. package/dist/postgres/grants-declare.d.ts +88 -0
  191. package/dist/postgres/grants-declare.d.ts.map +1 -0
  192. package/dist/postgres/grants-diff.d.ts +25 -0
  193. package/dist/postgres/grants-diff.d.ts.map +1 -0
  194. package/dist/postgres/grants-errors.d.ts +137 -0
  195. package/dist/postgres/grants-errors.d.ts.map +1 -0
  196. package/dist/postgres/grants-existence.d.ts +14 -0
  197. package/dist/postgres/grants-existence.d.ts.map +1 -0
  198. package/dist/postgres/grants-ops.d.ts +65 -0
  199. package/dist/postgres/grants-ops.d.ts.map +1 -0
  200. package/dist/postgres/grants-ownership.d.ts +18 -0
  201. package/dist/postgres/grants-ownership.d.ts.map +1 -0
  202. package/dist/postgres/grants-plan-restore.d.ts +22 -0
  203. package/dist/postgres/grants-plan-restore.d.ts.map +1 -0
  204. package/dist/postgres/grants-plan.d.ts +65 -0
  205. package/dist/postgres/grants-plan.d.ts.map +1 -0
  206. package/dist/postgres/grants-read-defaults.d.ts +17 -0
  207. package/dist/postgres/grants-read-defaults.d.ts.map +1 -0
  208. package/dist/postgres/grants-read.d.ts +77 -0
  209. package/dist/postgres/grants-read.d.ts.map +1 -0
  210. package/dist/postgres/grants-refuse.d.ts +25 -0
  211. package/dist/postgres/grants-refuse.d.ts.map +1 -0
  212. package/dist/postgres/grants-sql.d.ts +42 -0
  213. package/dist/postgres/grants-sql.d.ts.map +1 -0
  214. package/dist/postgres/grants-words.d.ts +29 -0
  215. package/dist/postgres/grants-words.d.ts.map +1 -0
  216. package/dist/postgres/grants.d.ts +37 -0
  217. package/dist/postgres/grants.d.ts.map +1 -0
  218. package/dist/postgres/index.d.ts +31 -6
  219. package/dist/postgres/index.d.ts.map +1 -1
  220. package/dist/postgres/index.js +1998 -37
  221. package/dist/postgres/index.js.map +46 -7
  222. package/dist/postgres/installed-classifier.d.ts +13 -0
  223. package/dist/postgres/installed-classifier.d.ts.map +1 -0
  224. package/dist/postgres/providers.d.ts +16 -8
  225. package/dist/postgres/providers.d.ts.map +1 -1
  226. package/dist/postgres/psql-executor.d.ts +4 -0
  227. package/dist/postgres/psql-executor.d.ts.map +1 -1
  228. package/dist/postgres/role-attrs.d.ts +112 -0
  229. package/dist/postgres/role-attrs.d.ts.map +1 -0
  230. package/dist/postgres/role-diff.d.ts +22 -0
  231. package/dist/postgres/role-diff.d.ts.map +1 -0
  232. package/dist/postgres/role-errors.d.ts +132 -0
  233. package/dist/postgres/role-errors.d.ts.map +1 -0
  234. package/dist/postgres/role-membership-sql.d.ts +78 -0
  235. package/dist/postgres/role-membership-sql.d.ts.map +1 -0
  236. package/dist/postgres/role-provider.d.ts +11 -0
  237. package/dist/postgres/role-provider.d.ts.map +1 -0
  238. package/dist/postgres/role-scram.d.ts +8 -0
  239. package/dist/postgres/role-scram.d.ts.map +1 -0
  240. package/dist/postgres/role-secrets.d.ts +38 -0
  241. package/dist/postgres/role-secrets.d.ts.map +1 -0
  242. package/dist/postgres/role-sql.d.ts +68 -0
  243. package/dist/postgres/role-sql.d.ts.map +1 -0
  244. package/dist/postgres/role.d.ts +57 -0
  245. package/dist/postgres/role.d.ts.map +1 -0
  246. package/dist/postgres/schema-assert.d.ts +50 -0
  247. package/dist/postgres/schema-assert.d.ts.map +1 -0
  248. package/dist/postgres/schema-attrs.d.ts +51 -0
  249. package/dist/postgres/schema-attrs.d.ts.map +1 -0
  250. package/dist/postgres/schema-delete.d.ts +28 -0
  251. package/dist/postgres/schema-delete.d.ts.map +1 -0
  252. package/dist/postgres/schema-diff.d.ts +14 -0
  253. package/dist/postgres/schema-diff.d.ts.map +1 -0
  254. package/dist/postgres/schema-errors.d.ts +139 -0
  255. package/dist/postgres/schema-errors.d.ts.map +1 -0
  256. package/dist/postgres/schema-identity.d.ts +8 -0
  257. package/dist/postgres/schema-identity.d.ts.map +1 -0
  258. package/dist/postgres/schema-reconcile.d.ts +12 -0
  259. package/dist/postgres/schema-reconcile.d.ts.map +1 -0
  260. package/dist/postgres/schema-sql.d.ts +45 -0
  261. package/dist/postgres/schema-sql.d.ts.map +1 -0
  262. package/dist/postgres/schema-test-kit.d.ts +67 -0
  263. package/dist/postgres/schema-test-kit.d.ts.map +1 -0
  264. package/dist/postgres/schema.d.ts +54 -0
  265. package/dist/postgres/schema.d.ts.map +1 -0
  266. package/dist/proxmox/index.js +35 -1
  267. package/dist/proxmox/index.js.map +3 -3
  268. package/dist/release/fake-engine.d.ts +10 -0
  269. package/dist/release/fake-engine.d.ts.map +1 -1
  270. package/dist/release/index.js +35 -1
  271. package/dist/release/index.js.map +3 -3
  272. package/dist/valkey/acl-attrs.d.ts +94 -0
  273. package/dist/valkey/acl-attrs.d.ts.map +1 -0
  274. package/dist/valkey/acl-compare.d.ts +28 -0
  275. package/dist/valkey/acl-compare.d.ts.map +1 -0
  276. package/dist/valkey/acl-connection.d.ts +6 -0
  277. package/dist/valkey/acl-connection.d.ts.map +1 -0
  278. package/dist/valkey/acl-form.d.ts +62 -0
  279. package/dist/valkey/acl-form.d.ts.map +1 -0
  280. package/dist/valkey/acl-managed.d.ts +4 -0
  281. package/dist/valkey/acl-managed.d.ts.map +1 -0
  282. package/dist/valkey/acl-ops.d.ts +37 -0
  283. package/dist/valkey/acl-ops.d.ts.map +1 -0
  284. package/dist/valkey/acl-profiles.d.ts +53 -0
  285. package/dist/valkey/acl-profiles.d.ts.map +1 -0
  286. package/dist/valkey/acl-reconcile.d.ts +26 -0
  287. package/dist/valkey/acl-reconcile.d.ts.map +1 -0
  288. package/dist/valkey/acl.d.ts +24 -0
  289. package/dist/valkey/acl.d.ts.map +1 -0
  290. package/dist/valkey/connection-service.d.ts +22 -0
  291. package/dist/valkey/connection-service.d.ts.map +1 -0
  292. package/dist/valkey/connection.d.ts +59 -0
  293. package/dist/valkey/connection.d.ts.map +1 -0
  294. package/dist/valkey/errors.d.ts +165 -0
  295. package/dist/valkey/errors.d.ts.map +1 -0
  296. package/dist/valkey/fake-acl.d.ts +29 -0
  297. package/dist/valkey/fake-acl.d.ts.map +1 -0
  298. package/dist/valkey/fake-valkey.d.ts +35 -0
  299. package/dist/valkey/fake-valkey.d.ts.map +1 -0
  300. package/dist/valkey/handler-test-fixture.d.ts +20 -0
  301. package/dist/valkey/handler-test-fixture.d.ts.map +1 -0
  302. package/dist/valkey/index.d.ts +18 -0
  303. package/dist/valkey/index.d.ts.map +1 -0
  304. package/dist/valkey/index.js +964 -0
  305. package/dist/valkey/index.js.map +27 -0
  306. package/dist/valkey/instance-attrs.d.ts +46 -0
  307. package/dist/valkey/instance-attrs.d.ts.map +1 -0
  308. package/dist/valkey/instance-form.d.ts +22 -0
  309. package/dist/valkey/instance-form.d.ts.map +1 -0
  310. package/dist/valkey/instance.d.ts +48 -0
  311. package/dist/valkey/instance.d.ts.map +1 -0
  312. package/dist/valkey/provider-socket-fixture.d.ts +8 -0
  313. package/dist/valkey/provider-socket-fixture.d.ts.map +1 -0
  314. package/dist/valkey/providers.d.ts +16 -0
  315. package/dist/valkey/providers.d.ts.map +1 -0
  316. package/dist/valkey/resp.d.ts +38 -0
  317. package/dist/valkey/resp.d.ts.map +1 -0
  318. package/dist/valkey/transport-error.d.ts +36 -0
  319. package/dist/valkey/transport-error.d.ts.map +1 -0
  320. package/dist/valkey/transport.d.ts +50 -0
  321. package/dist/valkey/transport.d.ts.map +1 -0
  322. package/docs/litellm-access-group.md +105 -0
  323. package/docs/litellm-credential.md +60 -0
  324. package/docs/litellm-key-metadata.md +56 -0
  325. package/docs/litellm-key.md +194 -0
  326. package/docs/litellm-mcp.md +187 -0
  327. package/docs/litellm-model.md +111 -0
  328. package/docs/litellm-policy-attachment.md +86 -0
  329. package/docs/litellm-policy.md +103 -0
  330. package/docs/litellm-team.md +117 -0
  331. package/docs/litellm-tool-policy.md +90 -0
  332. package/docs/litellm-toolset.md +92 -0
  333. package/docs/litellm.md +16 -9
  334. package/docs/peers.md +15 -6
  335. package/docs/postgres-grants-example.md +55 -0
  336. package/docs/postgres-grants.md +157 -0
  337. package/docs/postgres-role.md +126 -0
  338. package/docs/postgres-schema.md +139 -0
  339. package/docs/postgres.md +20 -3
  340. package/docs/valkey-transport.md +29 -0
  341. package/docs/valkey.md +187 -0
  342. package/package.json +6 -2
  343. package/src/ceph/ceph-argv.test.ts +1 -1
  344. package/src/launchd/sudo-allowlist.test.ts +2 -2
  345. package/src/linux/sudo-allowlist.test.ts +3 -3
  346. package/src/linux/sudo-runner.test.ts +2 -2
  347. package/src/litellm/access-group-form.ts +105 -0
  348. package/src/litellm/access-group-operations.ts +92 -0
  349. package/src/litellm/access-group-types.ts +49 -0
  350. package/src/litellm/access-group.test.ts +197 -0
  351. package/src/litellm/access-group.ts +151 -0
  352. package/src/litellm/credential-errors.ts +183 -0
  353. package/src/litellm/credential-form.test.ts +151 -0
  354. package/src/litellm/credential-form.ts +211 -0
  355. package/src/litellm/credential-guards.test.ts +241 -0
  356. package/src/litellm/credential-operations.ts +208 -0
  357. package/src/litellm/credential-recovery.test.ts +93 -0
  358. package/src/litellm/credential-rewrite.test.ts +164 -0
  359. package/src/litellm/credential-rewrite.ts +50 -0
  360. package/src/litellm/credential-types.ts +117 -0
  361. package/src/litellm/credential-values.ts +94 -0
  362. package/src/litellm/credential.test.ts +218 -0
  363. package/src/litellm/credential.ts +227 -0
  364. package/src/litellm/fake-access-group-litellm.ts +127 -0
  365. package/src/litellm/fake-credential-litellm.ts +216 -0
  366. package/src/litellm/fake-keys.ts +190 -0
  367. package/src/litellm/fake-litellm.ts +19 -9
  368. package/src/litellm/fake-mcp-litellm.ts +214 -0
  369. package/src/litellm/fake-model-litellm-post-update.ts +103 -0
  370. package/src/litellm/fake-model-litellm.ts +233 -0
  371. package/src/litellm/fake-policy-attachment-litellm.ts +97 -0
  372. package/src/litellm/fake-policy-litellm.ts +186 -0
  373. package/src/litellm/fake-registry-base.ts +69 -0
  374. package/src/litellm/fake-stack.ts +17 -1
  375. package/src/litellm/fake-team-litellm.ts +229 -0
  376. package/src/litellm/fake-tool-litellm.ts +88 -0
  377. package/src/litellm/fake-toolset-litellm.ts +110 -0
  378. package/src/litellm/index.ts +140 -0
  379. package/src/litellm/key-delete.test.ts +212 -0
  380. package/src/litellm/key-errors.ts +241 -0
  381. package/src/litellm/key-form.ts +200 -0
  382. package/src/litellm/key-harness.ts +121 -0
  383. package/src/litellm/key-metadata-errors.ts +49 -0
  384. package/src/litellm/key-metadata.test.ts +156 -0
  385. package/src/litellm/key-metadata.ts +74 -0
  386. package/src/litellm/key-operations.ts +184 -0
  387. package/src/litellm/key-rotation.test.ts +110 -0
  388. package/src/litellm/key-scope.test.ts +135 -0
  389. package/src/litellm/key-secret.test.ts +248 -0
  390. package/src/litellm/key-secret.ts +137 -0
  391. package/src/litellm/key-transport.test.ts +166 -0
  392. package/src/litellm/key.test.ts +231 -0
  393. package/src/litellm/key.ts +213 -0
  394. package/src/litellm/mcp-server-adopt.test.ts +86 -0
  395. package/src/litellm/mcp-server-alias.test.ts +184 -0
  396. package/src/litellm/mcp-server-credential.ts +85 -0
  397. package/src/litellm/mcp-server-errors.ts +141 -0
  398. package/src/litellm/mcp-server-exports.test.ts +15 -0
  399. package/src/litellm/mcp-server-form.test.ts +241 -0
  400. package/src/litellm/mcp-server-form.ts +233 -0
  401. package/src/litellm/mcp-server-handlers.test.ts +150 -0
  402. package/src/litellm/mcp-server-locate.ts +66 -0
  403. package/src/litellm/mcp-server-operations.ts +111 -0
  404. package/src/litellm/mcp-server-registry.test.ts +146 -0
  405. package/src/litellm/mcp-server-retype.test.ts +114 -0
  406. package/src/litellm/mcp-server-shadow.test.ts +91 -0
  407. package/src/litellm/mcp-server-shadow.ts +45 -0
  408. package/src/litellm/mcp-server-tools.test.ts +85 -0
  409. package/src/litellm/mcp-server-types.ts +143 -0
  410. package/src/litellm/mcp-server-url.ts +66 -0
  411. package/src/litellm/mcp-server.test.ts +213 -0
  412. package/src/litellm/mcp-server.ts +225 -0
  413. package/src/litellm/model-claim.ts +69 -0
  414. package/src/litellm/model-credential.ts +45 -0
  415. package/src/litellm/model-errors.ts +168 -0
  416. package/src/litellm/model-foreign-row.test.ts +173 -0
  417. package/src/litellm/model-form.test.ts +228 -0
  418. package/src/litellm/model-form.ts +223 -0
  419. package/src/litellm/model-locate.test.ts +128 -0
  420. package/src/litellm/model-locate.ts +67 -0
  421. package/src/litellm/model-operations.test.ts +93 -0
  422. package/src/litellm/model-operations.ts +146 -0
  423. package/src/litellm/model-params-preserve.test.ts +119 -0
  424. package/src/litellm/model-recovery.test.ts +57 -0
  425. package/src/litellm/model-types.ts +112 -0
  426. package/src/litellm/model.test.ts +222 -0
  427. package/src/litellm/model.ts +237 -0
  428. package/src/litellm/policy-attachment-form.ts +103 -0
  429. package/src/litellm/policy-attachment-operations.ts +74 -0
  430. package/src/litellm/policy-attachment-types.ts +48 -0
  431. package/src/litellm/policy-attachment.test.ts +198 -0
  432. package/src/litellm/policy-attachment.ts +178 -0
  433. package/src/litellm/policy-form.ts +122 -0
  434. package/src/litellm/policy-operations.ts +112 -0
  435. package/src/litellm/policy-types.ts +58 -0
  436. package/src/litellm/policy.test.ts +214 -0
  437. package/src/litellm/policy.ts +146 -0
  438. package/src/litellm/providers.ts +24 -3
  439. package/src/litellm/registry-errors.ts +88 -0
  440. package/src/litellm/registry-exports.test.ts +66 -0
  441. package/src/litellm/registry-support.ts +109 -0
  442. package/src/litellm/team-form.ts +140 -0
  443. package/src/litellm/team-members.test.ts +150 -0
  444. package/src/litellm/team-members.ts +58 -0
  445. package/src/litellm/team-operations.ts +90 -0
  446. package/src/litellm/team-permission.ts +159 -0
  447. package/src/litellm/team-read.test.ts +89 -0
  448. package/src/litellm/team-types.ts +106 -0
  449. package/src/litellm/team.test.ts +206 -0
  450. package/src/litellm/team.ts +159 -0
  451. package/src/litellm/tool-policy-form.ts +94 -0
  452. package/src/litellm/tool-policy-operations.ts +58 -0
  453. package/src/litellm/tool-policy-types.ts +48 -0
  454. package/src/litellm/tool-policy.test.ts +172 -0
  455. package/src/litellm/tool-policy.ts +125 -0
  456. package/src/litellm/toolset-form.ts +104 -0
  457. package/src/litellm/toolset-operations.ts +90 -0
  458. package/src/litellm/toolset-types.ts +47 -0
  459. package/src/litellm/toolset.test.ts +198 -0
  460. package/src/litellm/toolset.ts +151 -0
  461. package/src/ownership/ownership.test.ts +33 -1
  462. package/src/ownership/rows.ts +53 -0
  463. package/src/postgres/connection.ts +42 -7
  464. package/src/postgres/database-bigint-serialization.test.ts +1 -0
  465. package/src/postgres/database-refusals.test.ts +2 -2
  466. package/src/postgres/database-sql.ts +36 -9
  467. package/src/postgres/fake-grants-parse.ts +189 -0
  468. package/src/postgres/fake-grants-read.ts +250 -0
  469. package/src/postgres/fake-grants-sql.ts +207 -0
  470. package/src/postgres/fake-grants-write.ts +90 -0
  471. package/src/postgres/fake-role-sql.ts +240 -0
  472. package/src/postgres/fake-schema-semantics.test.ts +36 -0
  473. package/src/postgres/fake-schema-sql.ts +146 -0
  474. package/src/postgres/fake-sql-parse.ts +86 -0
  475. package/src/postgres/fake-sql-quote.ts +36 -0
  476. package/src/postgres/fake-sql.ts +166 -46
  477. package/src/postgres/fixtures/pg-REL_18_6-acl.h.txt +147 -0
  478. package/src/postgres/fixtures/pg-REL_18_6-aclexplode-func.txt +31 -0
  479. package/src/postgres/fixtures/pg-REL_18_6-alter-default-privileges-synopsis.txt +82 -0
  480. package/src/postgres/fixtures/pg-REL_18_6-alter_role.sgml.txt +44 -0
  481. package/src/postgres/fixtures/pg-REL_18_6-create_role.sgml.txt +26 -0
  482. package/src/postgres/fixtures/pg-REL_18_6-grant-synopsis.txt +95 -0
  483. package/src/postgres/fixtures/pg-REL_18_6-pg_attribute.h.txt +24 -0
  484. package/src/postgres/fixtures/pg-REL_18_6-pg_auth_members.h.txt +62 -0
  485. package/src/postgres/fixtures/pg-REL_18_6-pg_authid.h.txt +70 -0
  486. package/src/postgres/fixtures/pg-REL_18_6-pg_class.h.txt +33 -0
  487. package/src/postgres/fixtures/pg-REL_18_6-pg_default_acl.h.txt +81 -0
  488. package/src/postgres/fixtures/pg-REL_18_6-pg_namespace.h.txt +28 -0
  489. package/src/postgres/fixtures/pg-REL_18_6-revoke-synopsis.txt +124 -0
  490. package/src/postgres/grants-acl.test.ts +61 -0
  491. package/src/postgres/grants-attrs.ts +185 -0
  492. package/src/postgres/grants-database.test.ts +158 -0
  493. package/src/postgres/grants-declare.ts +172 -0
  494. package/src/postgres/grants-delete-proof.test.ts +154 -0
  495. package/src/postgres/grants-diff.ts +101 -0
  496. package/src/postgres/grants-errors.ts +215 -0
  497. package/src/postgres/grants-existence-guards.test.ts +113 -0
  498. package/src/postgres/grants-existence.ts +101 -0
  499. package/src/postgres/grants-lifecycle-guards.test.ts +208 -0
  500. package/src/postgres/grants-lifecycle-repair.test.ts +208 -0
  501. package/src/postgres/grants-lifecycle.test.ts +181 -0
  502. package/src/postgres/grants-ops.ts +229 -0
  503. package/src/postgres/grants-owner-revoke.test.ts +121 -0
  504. package/src/postgres/grants-ownership.ts +49 -0
  505. package/src/postgres/grants-plan-collateral.test.ts +202 -0
  506. package/src/postgres/grants-plan-diff.test.ts +204 -0
  507. package/src/postgres/grants-plan-restore.ts +43 -0
  508. package/src/postgres/grants-plan-revocations.test.ts +69 -0
  509. package/src/postgres/grants-plan.test.ts +148 -0
  510. package/src/postgres/grants-plan.ts +245 -0
  511. package/src/postgres/grants-provenance.test.ts +134 -0
  512. package/src/postgres/grants-psql-lifecycle.test.ts +105 -0
  513. package/src/postgres/grants-read-absent.test.ts +91 -0
  514. package/src/postgres/grants-read-defaults.ts +51 -0
  515. package/src/postgres/grants-read.ts +250 -0
  516. package/src/postgres/grants-refusals.test.ts +136 -0
  517. package/src/postgres/grants-refuse.ts +119 -0
  518. package/src/postgres/grants-relkind-wire.test.ts +111 -0
  519. package/src/postgres/grants-repair-plan.test.ts +201 -0
  520. package/src/postgres/grants-sql.test.ts +128 -0
  521. package/src/postgres/grants-sql.ts +144 -0
  522. package/src/postgres/grants-words.ts +34 -0
  523. package/src/postgres/grants.ts +110 -0
  524. package/src/postgres/index.ts +129 -5
  525. package/src/postgres/installed-classifier.ts +36 -0
  526. package/src/postgres/providers.ts +33 -9
  527. package/src/postgres/psql-executor-escaping.test.ts +67 -0
  528. package/src/postgres/psql-executor.test.ts +63 -2
  529. package/src/postgres/psql-executor.ts +74 -34
  530. package/src/postgres/role-adopt.test.ts +98 -0
  531. package/src/postgres/role-attrs.ts +137 -0
  532. package/src/postgres/role-diff.ts +93 -0
  533. package/src/postgres/role-errors.ts +206 -0
  534. package/src/postgres/role-guard.test.ts +60 -0
  535. package/src/postgres/role-identity.test.ts +197 -0
  536. package/src/postgres/role-lifecycle.test.ts +228 -0
  537. package/src/postgres/role-membership-options.test.ts +73 -0
  538. package/src/postgres/role-membership-repair.test.ts +153 -0
  539. package/src/postgres/role-membership-sql.ts +223 -0
  540. package/src/postgres/role-password-ascii.test.ts +53 -0
  541. package/src/postgres/role-password-transports.test.ts +123 -0
  542. package/src/postgres/role-password.test.ts +158 -0
  543. package/src/postgres/role-privilege.test.ts +107 -0
  544. package/src/postgres/role-provenance.test.ts +200 -0
  545. package/src/postgres/role-provider.ts +105 -0
  546. package/src/postgres/role-refusals.test.ts +225 -0
  547. package/src/postgres/role-scram.test.ts +38 -0
  548. package/src/postgres/role-scram.ts +40 -0
  549. package/src/postgres/role-secrets.ts +61 -0
  550. package/src/postgres/role-sql.ts +213 -0
  551. package/src/postgres/role-valid-until.test.ts +68 -0
  552. package/src/postgres/role.ts +226 -0
  553. package/src/postgres/schema-assert.ts +139 -0
  554. package/src/postgres/schema-attrs.ts +71 -0
  555. package/src/postgres/schema-delete-proofs.test.ts +192 -0
  556. package/src/postgres/schema-delete.ts +96 -0
  557. package/src/postgres/schema-diff.ts +44 -0
  558. package/src/postgres/schema-drop-2bp01.test.ts +146 -0
  559. package/src/postgres/schema-errors.ts +209 -0
  560. package/src/postgres/schema-handlers.test.ts +193 -0
  561. package/src/postgres/schema-identity.ts +39 -0
  562. package/src/postgres/schema-lifecycle.test.ts +246 -0
  563. package/src/postgres/schema-race.test.ts +70 -0
  564. package/src/postgres/schema-reconcile.ts +100 -0
  565. package/src/postgres/schema-refusals.test.ts +144 -0
  566. package/src/postgres/schema-socket.test.ts +162 -0
  567. package/src/postgres/schema-sql.ts +130 -0
  568. package/src/postgres/schema-takeover.test.ts +149 -0
  569. package/src/postgres/schema-test-kit.ts +85 -0
  570. package/src/postgres/schema.ts +130 -0
  571. package/src/release/binary-alias.test.ts +3 -3
  572. package/src/release/binary-claims.test.ts +3 -3
  573. package/src/release/binary-directory-umask.test.ts +65 -0
  574. package/src/release/fake-engine.ts +15 -0
  575. package/src/valkey/acl-attrs.ts +98 -0
  576. package/src/valkey/acl-compare.ts +57 -0
  577. package/src/valkey/acl-connection.ts +13 -0
  578. package/src/valkey/acl-delete.test.ts +127 -0
  579. package/src/valkey/acl-form.ts +239 -0
  580. package/src/valkey/acl-managed.ts +13 -0
  581. package/src/valkey/acl-ops.ts +122 -0
  582. package/src/valkey/acl-ownership.test.ts +118 -0
  583. package/src/valkey/acl-prefix.test.ts +38 -0
  584. package/src/valkey/acl-profiles.ts +81 -0
  585. package/src/valkey/acl-reconcile.ts +180 -0
  586. package/src/valkey/acl-reserved.test.ts +69 -0
  587. package/src/valkey/acl-revocation.test.ts +94 -0
  588. package/src/valkey/acl-seat-prefix.test.ts +111 -0
  589. package/src/valkey/acl-validation.test.ts +54 -0
  590. package/src/valkey/acl.test.ts +215 -0
  591. package/src/valkey/acl.ts +169 -0
  592. package/src/valkey/connection-service.ts +46 -0
  593. package/src/valkey/connection.ts +180 -0
  594. package/src/valkey/errors.ts +239 -0
  595. package/src/valkey/fake-acl.ts +128 -0
  596. package/src/valkey/fake-valkey.ts +224 -0
  597. package/src/valkey/handler-test-fixture.ts +43 -0
  598. package/src/valkey/handlers.test.ts +205 -0
  599. package/src/valkey/index.ts +54 -0
  600. package/src/valkey/instance-attrs.ts +48 -0
  601. package/src/valkey/instance-form.ts +104 -0
  602. package/src/valkey/instance.test.ts +108 -0
  603. package/src/valkey/instance.ts +160 -0
  604. package/src/valkey/provider-socket-fixture.ts +71 -0
  605. package/src/valkey/providers.test.ts +129 -0
  606. package/src/valkey/providers.ts +21 -0
  607. package/src/valkey/resp.ts +212 -0
  608. package/src/valkey/transport-bounds.test.ts +150 -0
  609. package/src/valkey/transport-error.ts +37 -0
  610. package/src/valkey/transport.test.ts +158 -0
  611. package/src/valkey/transport.ts +109 -0
  612. package/src/valkey/upstream-bounds.test.ts +14 -0
@@ -0,0 +1,95 @@
1
+ # path: doc/src/sgml/ref/grant.sgml
2
+ # blob: 999f657d5c008970e290793c54ad74fb7b9342bb
3
+ # tag: REL_18_6 (commit 724edf9bde9d356724ad384a2e196edc3c9f80f7)
4
+ # fetched: 2026-09-30 via gh api repos/postgres/postgres/contents/...?ref=724edf9bde9d356724ad384a2e196edc3c9f80f7
5
+ # excerpt: the <synopsis> block only (lines 23-111 of the full file), cut per house doc-size convention
6
+ #
7
+ <synopsis>
8
+ GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | MAINTAIN }
9
+ [, ...] | ALL [ PRIVILEGES ] }
10
+ ON { [ TABLE ] <replaceable class="parameter">table_name</replaceable> [, ...]
11
+ | ALL TABLES IN SCHEMA <replaceable class="parameter">schema_name</replaceable> [, ...] }
12
+ TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
13
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
14
+
15
+ GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( <replaceable class="parameter">column_name</replaceable> [, ...] )
16
+ [, ...] | ALL [ PRIVILEGES ] ( <replaceable class="parameter">column_name</replaceable> [, ...] ) }
17
+ ON [ TABLE ] <replaceable class="parameter">table_name</replaceable> [, ...]
18
+ TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
19
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
20
+
21
+ GRANT { { USAGE | SELECT | UPDATE }
22
+ [, ...] | ALL [ PRIVILEGES ] }
23
+ ON { SEQUENCE <replaceable class="parameter">sequence_name</replaceable> [, ...]
24
+ | ALL SEQUENCES IN SCHEMA <replaceable class="parameter">schema_name</replaceable> [, ...] }
25
+ TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
26
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
27
+
28
+ GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }
29
+ ON DATABASE <replaceable>database_name</replaceable> [, ...]
30
+ TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
31
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
32
+
33
+ GRANT { USAGE | ALL [ PRIVILEGES ] }
34
+ ON DOMAIN <replaceable>domain_name</replaceable> [, ...]
35
+ TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
36
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
37
+
38
+ GRANT { USAGE | ALL [ PRIVILEGES ] }
39
+ ON FOREIGN DATA WRAPPER <replaceable>fdw_name</replaceable> [, ...]
40
+ TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
41
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
42
+
43
+ GRANT { USAGE | ALL [ PRIVILEGES ] }
44
+ ON FOREIGN SERVER <replaceable>server_name</replaceable> [, ...]
45
+ TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
46
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
47
+
48
+ GRANT { EXECUTE | ALL [ PRIVILEGES ] }
49
+ ON { { FUNCTION | PROCEDURE | ROUTINE } <replaceable>routine_name</replaceable> [ ( [ [ <replaceable class="parameter">argmode</replaceable> ] [ <replaceable class="parameter">arg_name</replaceable> ] <replaceable class="parameter">arg_type</replaceable> [, ...] ] ) ] [, ...]
50
+ | ALL { FUNCTIONS | PROCEDURES | ROUTINES } IN SCHEMA <replaceable class="parameter">schema_name</replaceable> [, ...] }
51
+ TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
52
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
53
+
54
+ GRANT { USAGE | ALL [ PRIVILEGES ] }
55
+ ON LANGUAGE <replaceable>lang_name</replaceable> [, ...]
56
+ TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
57
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
58
+
59
+ GRANT { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }
60
+ ON LARGE OBJECT <replaceable class="parameter">loid</replaceable> [, ...]
61
+ TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
62
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
63
+
64
+ GRANT { { SET | ALTER SYSTEM } [, ... ] | ALL [ PRIVILEGES ] }
65
+ ON PARAMETER <replaceable class="parameter">configuration_parameter</replaceable> [, ...]
66
+ TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
67
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
68
+
69
+ GRANT { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }
70
+ ON SCHEMA <replaceable>schema_name</replaceable> [, ...]
71
+ TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
72
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
73
+
74
+ GRANT { CREATE | ALL [ PRIVILEGES ] }
75
+ ON TABLESPACE <replaceable>tablespace_name</replaceable> [, ...]
76
+ TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
77
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
78
+
79
+ GRANT { USAGE | ALL [ PRIVILEGES ] }
80
+ ON TYPE <replaceable>type_name</replaceable> [, ...]
81
+ TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
82
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
83
+
84
+ GRANT <replaceable class="parameter">role_name</replaceable> [, ...] TO <replaceable class="parameter">role_specification</replaceable> [, ...]
85
+ [ WITH { ADMIN | INHERIT | SET } { OPTION | TRUE | FALSE } ]
86
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
87
+
88
+ <phrase>where <replaceable class="parameter">role_specification</replaceable> can be:</phrase>
89
+
90
+ [ GROUP ] <replaceable class="parameter">role_name</replaceable>
91
+ | PUBLIC
92
+ | CURRENT_ROLE
93
+ | CURRENT_USER
94
+ | SESSION_USER
95
+ </synopsis>
@@ -0,0 +1,24 @@
1
+ # path: src/include/catalog/pg_attribute.h
2
+ # blob: c612aed620f63dd871f2f2cfa4ae78106992f1b9
3
+ # tag: REL_18_6 (commit 724edf9bde9d356724ad384a2e196edc3c9f80f7)
4
+ # fetched: 2026-09-30 via gh api repos/postgres/postgres/contents/...?ref=724edf9bde9d356724ad384a2e196edc3c9f80f7
5
+ # excerpt: the struct header columns attrelid/attname (lines 37-46) and the attacl column (lines 170-174) of the full file, two ranges
6
+ #
7
+ CATALOG(pg_attribute,1249,AttributeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(75,AttributeRelation_Rowtype_Id) BKI_SCHEMA_MACRO
8
+ {
9
+ Oid attrelid BKI_LOOKUP(pg_class); /* OID of relation containing
10
+ * this attribute */
11
+ NameData attname; /* name of attribute */
12
+
13
+ /*
14
+ * atttypid is the OID of the instance in Catalog Class pg_type that
15
+ * defines the data type of this attribute (e.g. int4). Information in
16
+ * that instance is redundant with the attlen, attbyval, and attalign
17
+ #
18
+ # excerpt continued: lines 170-174
19
+ #
20
+
21
+ /* Column-level access permissions */
22
+ aclitem attacl[1] BKI_DEFAULT(_null_);
23
+
24
+ /* Column-level options */
@@ -0,0 +1,62 @@
1
+ # path: src/include/catalog/pg_auth_members.h
2
+ # blob: 387316e44f07982264482f01f2298f4f85ffbafb
3
+ # tag: REL_18_6 (commit 724edf9bde9d356724ad384a2e196edc3c9f80f7)
4
+ # fetched: 2026-09-29 via gh api repos/postgres/postgres/contents/...?ref=724edf9bde9d356724ad384a2e196edc3c9f80f7
5
+ # excerpt: the full file, as fetched
6
+ #
7
+ /*-------------------------------------------------------------------------
8
+ *
9
+ * pg_auth_members.h
10
+ * definition of the "authorization identifier members" system catalog
11
+ * (pg_auth_members).
12
+ *
13
+ *
14
+ * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
15
+ * Portions Copyright (c) 1994, Regents of the University of California
16
+ *
17
+ * src/include/catalog/pg_auth_members.h
18
+ *
19
+ * NOTES
20
+ * The Catalog.pm module reads this file and derives schema
21
+ * information.
22
+ *
23
+ *-------------------------------------------------------------------------
24
+ */
25
+ #ifndef PG_AUTH_MEMBERS_H
26
+ #define PG_AUTH_MEMBERS_H
27
+
28
+ #include "catalog/genbki.h"
29
+ #include "catalog/pg_auth_members_d.h" /* IWYU pragma: export */
30
+
31
+ /* ----------------
32
+ * pg_auth_members definition. cpp turns this into
33
+ * typedef struct FormData_pg_auth_members
34
+ * ----------------
35
+ */
36
+ CATALOG(pg_auth_members,1261,AuthMemRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2843,AuthMemRelation_Rowtype_Id) BKI_SCHEMA_MACRO
37
+ {
38
+ Oid oid; /* oid */
39
+ Oid roleid BKI_LOOKUP(pg_authid); /* ID of a role */
40
+ Oid member BKI_LOOKUP(pg_authid); /* ID of a member of that role */
41
+ Oid grantor BKI_LOOKUP(pg_authid); /* who granted the membership */
42
+ bool admin_option; /* granted with admin option? */
43
+ bool inherit_option; /* exercise privileges without SET ROLE? */
44
+ bool set_option; /* use SET ROLE to the target role? */
45
+ } FormData_pg_auth_members;
46
+
47
+ /* ----------------
48
+ * Form_pg_auth_members corresponds to a pointer to a tuple with
49
+ * the format of pg_auth_members relation.
50
+ * ----------------
51
+ */
52
+ typedef FormData_pg_auth_members *Form_pg_auth_members;
53
+
54
+ DECLARE_UNIQUE_INDEX_PKEY(pg_auth_members_oid_index, 6303, AuthMemOidIndexId, pg_auth_members, btree(oid oid_ops));
55
+ DECLARE_UNIQUE_INDEX(pg_auth_members_role_member_index, 2694, AuthMemRoleMemIndexId, pg_auth_members, btree(roleid oid_ops, member oid_ops, grantor oid_ops));
56
+ DECLARE_UNIQUE_INDEX(pg_auth_members_member_role_index, 2695, AuthMemMemRoleIndexId, pg_auth_members, btree(member oid_ops, roleid oid_ops, grantor oid_ops));
57
+ DECLARE_INDEX(pg_auth_members_grantor_index, 6302, AuthMemGrantorIndexId, pg_auth_members, btree(grantor oid_ops));
58
+
59
+ MAKE_SYSCACHE(AUTHMEMROLEMEM, pg_auth_members_role_member_index, 8);
60
+ MAKE_SYSCACHE(AUTHMEMMEMROLE, pg_auth_members_member_role_index, 8);
61
+
62
+ #endif /* PG_AUTH_MEMBERS_H */
@@ -0,0 +1,70 @@
1
+ # path: src/include/catalog/pg_authid.h
2
+ # blob: b2f3e9d01eec972a3392e7037c9679ac644ddc7b
3
+ # tag: REL_18_6 (commit 724edf9bde9d356724ad384a2e196edc3c9f80f7)
4
+ # fetched: 2026-09-29 via gh api repos/postgres/postgres/contents/...?ref=724edf9bde9d356724ad384a2e196edc3c9f80f7
5
+ # excerpt: the full file, as fetched
6
+ #
7
+ /*-------------------------------------------------------------------------
8
+ *
9
+ * pg_authid.h
10
+ * definition of the "authorization identifier" system catalog (pg_authid)
11
+ *
12
+ * pg_shadow and pg_group are now views on pg_authid.
13
+ *
14
+ *
15
+ * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
16
+ * Portions Copyright (c) 1994, Regents of the University of California
17
+ *
18
+ * src/include/catalog/pg_authid.h
19
+ *
20
+ * NOTES
21
+ * The Catalog.pm module reads this file and derives schema
22
+ * information.
23
+ *
24
+ *-------------------------------------------------------------------------
25
+ */
26
+ #ifndef PG_AUTHID_H
27
+ #define PG_AUTHID_H
28
+
29
+ #include "catalog/genbki.h"
30
+ #include "catalog/pg_authid_d.h" /* IWYU pragma: export */
31
+
32
+ /* ----------------
33
+ * pg_authid definition. cpp turns this into
34
+ * typedef struct FormData_pg_authid
35
+ * ----------------
36
+ */
37
+ CATALOG(pg_authid,1260,AuthIdRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842,AuthIdRelation_Rowtype_Id) BKI_SCHEMA_MACRO
38
+ {
39
+ Oid oid; /* oid */
40
+ NameData rolname; /* name of role */
41
+ bool rolsuper; /* read this field via superuser() only! */
42
+ bool rolinherit; /* inherit privileges from other roles? */
43
+ bool rolcreaterole; /* allowed to create more roles? */
44
+ bool rolcreatedb; /* allowed to create databases? */
45
+ bool rolcanlogin; /* allowed to log in as session user? */
46
+ bool rolreplication; /* role used for streaming replication */
47
+ bool rolbypassrls; /* bypasses row-level security? */
48
+ int32 rolconnlimit; /* max connections allowed (-1=no limit) */
49
+
50
+ /* remaining fields may be null; use heap_getattr to read them! */
51
+ #ifdef CATALOG_VARLEN /* variable-length fields start here */
52
+ text rolpassword; /* password, if any */
53
+ timestamptz rolvaliduntil; /* password expiration time, if any */
54
+ #endif
55
+ } FormData_pg_authid;
56
+
57
+ /* ----------------
58
+ * Form_pg_authid corresponds to a pointer to a tuple with
59
+ * the format of pg_authid relation.
60
+ * ----------------
61
+ */
62
+ typedef FormData_pg_authid *Form_pg_authid;
63
+
64
+ DECLARE_UNIQUE_INDEX(pg_authid_rolname_index, 2676, AuthIdRolnameIndexId, pg_authid, btree(rolname name_ops));
65
+ DECLARE_UNIQUE_INDEX_PKEY(pg_authid_oid_index, 2677, AuthIdOidIndexId, pg_authid, btree(oid oid_ops));
66
+
67
+ MAKE_SYSCACHE(AUTHNAME, pg_authid_rolname_index, 8);
68
+ MAKE_SYSCACHE(AUTHOID, pg_authid_oid_index, 8);
69
+
70
+ #endif /* PG_AUTHID_H */
@@ -0,0 +1,33 @@
1
+ # path: src/include/catalog/pg_class.h
2
+ # blob: 07d182da796a0c798d0ded6d97b61671d37ac491
3
+ # tag: REL_18_6 (commit 724edf9bde9d356724ad384a2e196edc3c9f80f7)
4
+ # fetched: 2026-09-30 via gh api repos/postgres/postgres/contents/...?ref=724edf9bde9d356724ad384a2e196edc3c9f80f7
5
+ # excerpt: the struct header columns relname/relnamespace (lines 33-48) and the relacl column (lines 133-140) of the full file, two ranges
6
+ #
7
+ {
8
+ /* oid */
9
+ Oid oid;
10
+
11
+ /* class name */
12
+ NameData relname;
13
+
14
+ /* OID of namespace containing this class */
15
+ Oid relnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
16
+
17
+ /* OID of entry in pg_type for relation's implicit row type, if any */
18
+ Oid reltype BKI_LOOKUP_OPT(pg_type);
19
+
20
+ /* OID of entry in pg_type for underlying composite type, if any */
21
+ Oid reloftype BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_type);
22
+
23
+ #
24
+ # excerpt continued: lines 133-140
25
+ #
26
+
27
+ #ifdef CATALOG_VARLEN /* variable-length fields start here */
28
+ /* NOTE: These fields are not present in a relcache entry's rd_rel field. */
29
+ /* access permissions */
30
+ aclitem relacl[1] BKI_DEFAULT(_null_);
31
+
32
+ /* access-method-specific options */
33
+ text reloptions[1] BKI_DEFAULT(_null_);
@@ -0,0 +1,81 @@
1
+ # path: src/include/catalog/pg_default_acl.h
2
+ # blob: ce6e5098eaf02d8c3d72dbbba9191f54bc54312b
3
+ # tag: REL_18_6 (commit 724edf9bde9d356724ad384a2e196edc3c9f80f7)
4
+ # fetched: 2026-09-30 via gh api repos/postgres/postgres/contents/...?ref=724edf9bde9d356724ad384a2e196edc3c9f80f7
5
+ # excerpt: the whole file (75 lines): the CATALOG(pg_default_acl...) struct and the DEFACLOBJ_* constants
6
+ #
7
+ /*-------------------------------------------------------------------------
8
+ *
9
+ * pg_default_acl.h
10
+ * definition of the system catalog for default ACLs of new objects
11
+ * (pg_default_acl)
12
+ *
13
+ *
14
+ * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
15
+ * Portions Copyright (c) 1994, Regents of the University of California
16
+ *
17
+ * src/include/catalog/pg_default_acl.h
18
+ *
19
+ * NOTES
20
+ * The Catalog.pm module reads this file and derives schema
21
+ * information.
22
+ *
23
+ *-------------------------------------------------------------------------
24
+ */
25
+ #ifndef PG_DEFAULT_ACL_H
26
+ #define PG_DEFAULT_ACL_H
27
+
28
+ #include "catalog/genbki.h"
29
+ #include "catalog/pg_default_acl_d.h" /* IWYU pragma: export */
30
+
31
+ /* ----------------
32
+ * pg_default_acl definition. cpp turns this into
33
+ * typedef struct FormData_pg_default_acl
34
+ * ----------------
35
+ */
36
+ CATALOG(pg_default_acl,826,DefaultAclRelationId)
37
+ {
38
+ Oid oid; /* oid */
39
+ Oid defaclrole BKI_LOOKUP(pg_authid); /* OID of role owning this
40
+ * ACL */
41
+ Oid defaclnamespace BKI_LOOKUP_OPT(pg_namespace); /* OID of namespace, or
42
+ * 0 for all */
43
+ char defaclobjtype; /* see DEFACLOBJ_xxx constants below */
44
+
45
+ #ifdef CATALOG_VARLEN /* variable-length fields start here */
46
+ aclitem defaclacl[1] BKI_FORCE_NOT_NULL; /* permissions to add at
47
+ * CREATE time */
48
+ #endif
49
+ } FormData_pg_default_acl;
50
+
51
+ /* ----------------
52
+ * Form_pg_default_acl corresponds to a pointer to a tuple with
53
+ * the format of pg_default_acl relation.
54
+ * ----------------
55
+ */
56
+ typedef FormData_pg_default_acl *Form_pg_default_acl;
57
+
58
+ DECLARE_TOAST(pg_default_acl, 4143, 4144);
59
+
60
+ DECLARE_UNIQUE_INDEX(pg_default_acl_role_nsp_obj_index, 827, DefaultAclRoleNspObjIndexId, pg_default_acl, btree(defaclrole oid_ops, defaclnamespace oid_ops, defaclobjtype char_ops));
61
+ DECLARE_UNIQUE_INDEX_PKEY(pg_default_acl_oid_index, 828, DefaultAclOidIndexId, pg_default_acl, btree(oid oid_ops));
62
+
63
+ MAKE_SYSCACHE(DEFACLROLENSPOBJ, pg_default_acl_role_nsp_obj_index, 8);
64
+
65
+ #ifdef EXPOSE_TO_CLIENT_CODE
66
+
67
+ /*
68
+ * Types of objects for which the user is allowed to specify default
69
+ * permissions through pg_default_acl. These codes are used in the
70
+ * defaclobjtype column.
71
+ */
72
+ #define DEFACLOBJ_RELATION 'r' /* table, view */
73
+ #define DEFACLOBJ_SEQUENCE 'S' /* sequence */
74
+ #define DEFACLOBJ_FUNCTION 'f' /* function */
75
+ #define DEFACLOBJ_TYPE 'T' /* type */
76
+ #define DEFACLOBJ_NAMESPACE 'n' /* namespace */
77
+ #define DEFACLOBJ_LARGEOBJECT 'L' /* large object */
78
+
79
+ #endif /* EXPOSE_TO_CLIENT_CODE */
80
+
81
+ #endif /* PG_DEFAULT_ACL_H */
@@ -0,0 +1,28 @@
1
+ # path: src/include/catalog/pg_namespace.h
2
+ # blob: affb36f11407eada553d5cf27675386e1bbe17af
3
+ # tag: REL_18_6 (commit 724edf9bde9d356724ad384a2e196edc3c9f80f7)
4
+ # fetched: 2026-09-30 via gh api repos/postgres/postgres/contents/...?ref=724edf9bde9d356724ad384a2e196edc3c9f80f7
5
+ # excerpt: the CATALOG(pg_namespace...) struct (lines 27-48 of the full file)
6
+ #
7
+ *
8
+ * cpp turns this into typedef struct FormData_pg_namespace
9
+ *
10
+ * nspname name of the namespace
11
+ * nspowner owner (creator) of the namespace
12
+ * nspacl access privilege list
13
+ * ----------------------------------------------------------------
14
+ */
15
+ CATALOG(pg_namespace,2615,NamespaceRelationId)
16
+ {
17
+ Oid oid; /* oid */
18
+
19
+ NameData nspname;
20
+ Oid nspowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
21
+
22
+ #ifdef CATALOG_VARLEN /* variable-length fields start here */
23
+ aclitem nspacl[1];
24
+ #endif
25
+ } FormData_pg_namespace;
26
+
27
+ /* ----------------
28
+ * Form_pg_namespace corresponds to a pointer to a tuple with
@@ -0,0 +1,124 @@
1
+ # path: doc/src/sgml/ref/revoke.sgml
2
+ # blob: 8df492281a1c519754da38197b0a865c8a30c94d
3
+ # tag: REL_18_6 (commit 724edf9bde9d356724ad384a2e196edc3c9f80f7)
4
+ # fetched: 2026-09-30 via gh api repos/postgres/postgres/contents/...?ref=724edf9bde9d356724ad384a2e196edc3c9f80f7
5
+ # excerpt: the <synopsis> block only (lines 23-140 of the full file), cut per house doc-size convention
6
+ #
7
+ <synopsis>
8
+ REVOKE [ GRANT OPTION FOR ]
9
+ { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | MAINTAIN }
10
+ [, ...] | ALL [ PRIVILEGES ] }
11
+ ON { [ TABLE ] <replaceable class="parameter">table_name</replaceable> [, ...]
12
+ | ALL TABLES IN SCHEMA <replaceable>schema_name</replaceable> [, ...] }
13
+ FROM <replaceable class="parameter">role_specification</replaceable> [, ...]
14
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
15
+ [ CASCADE | RESTRICT ]
16
+
17
+ REVOKE [ GRANT OPTION FOR ]
18
+ { { SELECT | INSERT | UPDATE | REFERENCES } ( <replaceable class="parameter">column_name</replaceable> [, ...] )
19
+ [, ...] | ALL [ PRIVILEGES ] ( <replaceable class="parameter">column_name</replaceable> [, ...] ) }
20
+ ON [ TABLE ] <replaceable class="parameter">table_name</replaceable> [, ...]
21
+ FROM <replaceable class="parameter">role_specification</replaceable> [, ...]
22
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
23
+ [ CASCADE | RESTRICT ]
24
+
25
+ REVOKE [ GRANT OPTION FOR ]
26
+ { { USAGE | SELECT | UPDATE }
27
+ [, ...] | ALL [ PRIVILEGES ] }
28
+ ON { SEQUENCE <replaceable class="parameter">sequence_name</replaceable> [, ...]
29
+ | ALL SEQUENCES IN SCHEMA <replaceable>schema_name</replaceable> [, ...] }
30
+ FROM <replaceable class="parameter">role_specification</replaceable> [, ...]
31
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
32
+ [ CASCADE | RESTRICT ]
33
+
34
+ REVOKE [ GRANT OPTION FOR ]
35
+ { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }
36
+ ON DATABASE <replaceable>database_name</replaceable> [, ...]
37
+ FROM <replaceable class="parameter">role_specification</replaceable> [, ...]
38
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
39
+ [ CASCADE | RESTRICT ]
40
+
41
+ REVOKE [ GRANT OPTION FOR ]
42
+ { USAGE | ALL [ PRIVILEGES ] }
43
+ ON DOMAIN <replaceable>domain_name</replaceable> [, ...]
44
+ FROM <replaceable class="parameter">role_specification</replaceable> [, ...]
45
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
46
+ [ CASCADE | RESTRICT ]
47
+
48
+ REVOKE [ GRANT OPTION FOR ]
49
+ { USAGE | ALL [ PRIVILEGES ] }
50
+ ON FOREIGN DATA WRAPPER <replaceable>fdw_name</replaceable> [, ...]
51
+ FROM <replaceable class="parameter">role_specification</replaceable> [, ...]
52
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
53
+ [ CASCADE | RESTRICT ]
54
+
55
+ REVOKE [ GRANT OPTION FOR ]
56
+ { USAGE | ALL [ PRIVILEGES ] }
57
+ ON FOREIGN SERVER <replaceable>server_name</replaceable> [, ...]
58
+ FROM <replaceable class="parameter">role_specification</replaceable> [, ...]
59
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
60
+ [ CASCADE | RESTRICT ]
61
+
62
+ REVOKE [ GRANT OPTION FOR ]
63
+ { EXECUTE | ALL [ PRIVILEGES ] }
64
+ ON { { FUNCTION | PROCEDURE | ROUTINE } <replaceable>function_name</replaceable> [ ( [ [ <replaceable class="parameter">argmode</replaceable> ] [ <replaceable class="parameter">arg_name</replaceable> ] <replaceable class="parameter">arg_type</replaceable> [, ...] ] ) ] [, ...]
65
+ | ALL { FUNCTIONS | PROCEDURES | ROUTINES } IN SCHEMA <replaceable>schema_name</replaceable> [, ...] }
66
+ FROM <replaceable class="parameter">role_specification</replaceable> [, ...]
67
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
68
+ [ CASCADE | RESTRICT ]
69
+
70
+ REVOKE [ GRANT OPTION FOR ]
71
+ { USAGE | ALL [ PRIVILEGES ] }
72
+ ON LANGUAGE <replaceable>lang_name</replaceable> [, ...]
73
+ FROM <replaceable class="parameter">role_specification</replaceable> [, ...]
74
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
75
+ [ CASCADE | RESTRICT ]
76
+
77
+ REVOKE [ GRANT OPTION FOR ]
78
+ { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }
79
+ ON LARGE OBJECT <replaceable class="parameter">loid</replaceable> [, ...]
80
+ FROM <replaceable class="parameter">role_specification</replaceable> [, ...]
81
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
82
+ [ CASCADE | RESTRICT ]
83
+
84
+ REVOKE [ GRANT OPTION FOR ]
85
+ { { SET | ALTER SYSTEM } [, ...] | ALL [ PRIVILEGES ] }
86
+ ON PARAMETER <replaceable class="parameter">configuration_parameter</replaceable> [, ...]
87
+ FROM <replaceable class="parameter">role_specification</replaceable> [, ...]
88
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
89
+ [ CASCADE | RESTRICT ]
90
+
91
+ REVOKE [ GRANT OPTION FOR ]
92
+ { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }
93
+ ON SCHEMA <replaceable>schema_name</replaceable> [, ...]
94
+ FROM <replaceable class="parameter">role_specification</replaceable> [, ...]
95
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
96
+ [ CASCADE | RESTRICT ]
97
+
98
+ REVOKE [ GRANT OPTION FOR ]
99
+ { CREATE | ALL [ PRIVILEGES ] }
100
+ ON TABLESPACE <replaceable>tablespace_name</replaceable> [, ...]
101
+ FROM <replaceable class="parameter">role_specification</replaceable> [, ...]
102
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
103
+ [ CASCADE | RESTRICT ]
104
+
105
+ REVOKE [ GRANT OPTION FOR ]
106
+ { USAGE | ALL [ PRIVILEGES ] }
107
+ ON TYPE <replaceable>type_name</replaceable> [, ...]
108
+ FROM <replaceable class="parameter">role_specification</replaceable> [, ...]
109
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
110
+ [ CASCADE | RESTRICT ]
111
+
112
+ REVOKE [ { ADMIN | INHERIT | SET } OPTION FOR ]
113
+ <replaceable class="parameter">role_name</replaceable> [, ...] FROM <replaceable class="parameter">role_specification</replaceable> [, ...]
114
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
115
+ [ CASCADE | RESTRICT ]
116
+
117
+ <phrase>where <replaceable class="parameter">role_specification</replaceable> can be:</phrase>
118
+
119
+ [ GROUP ] <replaceable class="parameter">role_name</replaceable>
120
+ | PUBLIC
121
+ | CURRENT_ROLE
122
+ | CURRENT_USER
123
+ | SESSION_USER
124
+ </synopsis>
@@ -0,0 +1,61 @@
1
+ /**
2
+ * The letter↔word map against PostgreSQL 18.6's own constants. The fixture
3
+ * (`pg-REL_18_6-acl.h.txt`) is parsed in `grants-provenance.test.ts`; here the map's OUTPUT
4
+ * is pinned: the exact letters the server stores for each declared word. There is no
5
+ * `aclitem` text parser to test — the read path goes through `aclexplode`
6
+ * (`grants-read.ts`), never the `grantee=privs/grantor` text shape.
7
+ */
8
+ import { describe, expect, test } from 'bun:test';
9
+ import {
10
+ COLUMN_PRIVILEGES,
11
+ SCHEMA_PRIVILEGES,
12
+ TABLE_PRIVILEGES,
13
+ grantsNameByteRefusal,
14
+ letterForPrivilege,
15
+ } from './grants-attrs.ts';
16
+
17
+ describe('letterForPrivilege', () => {
18
+ test('maps the table vocabulary to ACL_ALL_RIGHTS_RELATION letters', () => {
19
+ expect([...TABLE_PRIVILEGES].map(letterForPrivilege)).toEqual([
20
+ 'r',
21
+ 'a',
22
+ 'w',
23
+ 'd',
24
+ 'D',
25
+ 'x',
26
+ 't',
27
+ 'm',
28
+ ]);
29
+ });
30
+
31
+ test('maps the schema vocabulary to ACL_ALL_RIGHTS_SCHEMA letters', () => {
32
+ expect([...SCHEMA_PRIVILEGES].map(letterForPrivilege)).toEqual(['U', 'C']);
33
+ });
34
+
35
+ test('maps the column vocabulary to ACL_ALL_RIGHTS_COLUMN letters', () => {
36
+ expect([...COLUMN_PRIVILEGES].map(letterForPrivilege)).toEqual(['r', 'a', 'w', 'x']);
37
+ });
38
+
39
+ test('CREATE is the UPPERCASE letter, never the lowercase CONNECT letter', () => {
40
+ expect(letterForPrivilege('create')).toBe('C');
41
+ expect(TABLE_PRIVILEGES.some((p) => letterForPrivilege(p) === 'c')).toBe(false);
42
+ });
43
+
44
+ test('a word outside the vocabularies throws (the caller validates first, always)', () => {
45
+ expect(() => letterForPrivilege('execute')).toThrow(/no ACL letter/);
46
+ expect(() => letterForPrivilege('connect')).toThrow(/no ACL letter/);
47
+ });
48
+ });
49
+
50
+ describe('grantsNameByteRefusal', () => {
51
+ test('a 64-byte name is refused, a 63-byte one is not', () => {
52
+ expect(grantsNameByteRefusal('a'.repeat(63))).toBeUndefined();
53
+ expect(grantsNameByteRefusal('a'.repeat(64))).toEqual({ byteLength: 64, limit: 63 });
54
+ });
55
+
56
+ test('multibyte names count UTF-8 bytes, never JS length', () => {
57
+ // é is 2 UTF-8 bytes: a 32-char string of them is 64 bytes, over the line.
58
+ expect(grantsNameByteRefusal('é'.repeat(32))).toEqual({ byteLength: 64, limit: 63 });
59
+ expect(grantsNameByteRefusal('é'.repeat(31))).toBeUndefined();
60
+ });
61
+ });