@xtandard/webhooks 0.1.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 (279) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +315 -0
  3. package/bin/xtandard-webhooks.mjs +3 -0
  4. package/dist/basic-BIW3Rvuz.cjs +199 -0
  5. package/dist/basic-BIW3Rvuz.cjs.map +1 -0
  6. package/dist/basic-DKk0Xfuu.mjs +176 -0
  7. package/dist/basic-DKk0Xfuu.mjs.map +1 -0
  8. package/dist/chunk-D7D4PA-g.mjs +13 -0
  9. package/dist/cli.cjs +655 -0
  10. package/dist/cli.cjs.map +1 -0
  11. package/dist/cli.d.cts +42 -0
  12. package/dist/cli.d.mts +42 -0
  13. package/dist/cli.mjs +653 -0
  14. package/dist/cli.mjs.map +1 -0
  15. package/dist/contract-8h-Azxa5.d.cts +71 -0
  16. package/dist/contract-9XpcwcCn.mjs +22 -0
  17. package/dist/contract-9XpcwcCn.mjs.map +1 -0
  18. package/dist/contract-B2d5dNU3.cjs +33 -0
  19. package/dist/contract-B2d5dNU3.cjs.map +1 -0
  20. package/dist/contract-BEhDcd_5.mjs +28 -0
  21. package/dist/contract-BEhDcd_5.mjs.map +1 -0
  22. package/dist/contract-Bf1qguwt.cjs +57 -0
  23. package/dist/contract-Bf1qguwt.cjs.map +1 -0
  24. package/dist/contract-Bnb3fgRJ.d.cts +177 -0
  25. package/dist/contract-C2r2Xzwp.d.mts +46 -0
  26. package/dist/contract-CiPskNvS.d.cts +46 -0
  27. package/dist/contract-DhQ4JjGG.d.mts +71 -0
  28. package/dist/contract-T1kcZNdG.d.mts +177 -0
  29. package/dist/contract-lETlIuXo.d.cts +30 -0
  30. package/dist/contract-lETlIuXo.d.mts +30 -0
  31. package/dist/core-CMpnmI5Q.mjs +1605 -0
  32. package/dist/core-CMpnmI5Q.mjs.map +1 -0
  33. package/dist/core-DT4ppWh8.d.mts +502 -0
  34. package/dist/core-KJawHjFF.d.cts +502 -0
  35. package/dist/core-ZGhH6Vs2.cjs +1790 -0
  36. package/dist/core-ZGhH6Vs2.cjs.map +1 -0
  37. package/dist/core.cjs +8 -0
  38. package/dist/core.d.cts +2 -0
  39. package/dist/core.d.mts +2 -0
  40. package/dist/core.mjs +2 -0
  41. package/dist/create-fetch-handler-BIdk9P30.mjs +1724 -0
  42. package/dist/create-fetch-handler-BIdk9P30.mjs.map +1 -0
  43. package/dist/create-fetch-handler-CmooujQo.cjs +1771 -0
  44. package/dist/create-fetch-handler-CmooujQo.cjs.map +1 -0
  45. package/dist/create-fetch-handler-Dlkhustu.d.cts +162 -0
  46. package/dist/create-fetch-handler-jy3hy5nZ.d.mts +162 -0
  47. package/dist/dispatcher-B0xTEHt1.cjs +212 -0
  48. package/dist/dispatcher-B0xTEHt1.cjs.map +1 -0
  49. package/dist/dispatcher-Coubwrka.mjs +196 -0
  50. package/dist/dispatcher-Coubwrka.mjs.map +1 -0
  51. package/dist/entry-auth-basic.cjs +5 -0
  52. package/dist/entry-auth-basic.d.cts +83 -0
  53. package/dist/entry-auth-basic.d.mts +83 -0
  54. package/dist/entry-auth-basic.mjs +2 -0
  55. package/dist/entry-auth-delegated.cjs +28 -0
  56. package/dist/entry-auth-delegated.cjs.map +1 -0
  57. package/dist/entry-auth-delegated.d.cts +36 -0
  58. package/dist/entry-auth-delegated.d.mts +36 -0
  59. package/dist/entry-auth-delegated.mjs +27 -0
  60. package/dist/entry-auth-delegated.mjs.map +1 -0
  61. package/dist/entry-auth-none.cjs +4 -0
  62. package/dist/entry-auth-none.d.cts +25 -0
  63. package/dist/entry-auth-none.d.mts +25 -0
  64. package/dist/entry-auth-none.mjs +2 -0
  65. package/dist/entry-authorization-delegated.cjs +27 -0
  66. package/dist/entry-authorization-delegated.cjs.map +1 -0
  67. package/dist/entry-authorization-delegated.d.cts +31 -0
  68. package/dist/entry-authorization-delegated.d.mts +31 -0
  69. package/dist/entry-authorization-delegated.mjs +26 -0
  70. package/dist/entry-authorization-delegated.mjs.map +1 -0
  71. package/dist/entry-authorization-none.cjs +3 -0
  72. package/dist/entry-authorization-none.d.cts +18 -0
  73. package/dist/entry-authorization-none.d.mts +18 -0
  74. package/dist/entry-authorization-none.mjs +2 -0
  75. package/dist/entry-authorization-roles.cjs +6 -0
  76. package/dist/entry-authorization-roles.d.cts +65 -0
  77. package/dist/entry-authorization-roles.d.mts +65 -0
  78. package/dist/entry-authorization-roles.mjs +2 -0
  79. package/dist/entry-bun.cjs +24 -0
  80. package/dist/entry-bun.cjs.map +1 -0
  81. package/dist/entry-bun.d.cts +8 -0
  82. package/dist/entry-bun.d.mts +8 -0
  83. package/dist/entry-bun.mjs +23 -0
  84. package/dist/entry-bun.mjs.map +1 -0
  85. package/dist/entry-drizzle-mysql.cjs +20 -0
  86. package/dist/entry-drizzle-mysql.cjs.map +1 -0
  87. package/dist/entry-drizzle-mysql.d.cts +27 -0
  88. package/dist/entry-drizzle-mysql.d.mts +27 -0
  89. package/dist/entry-drizzle-mysql.mjs +19 -0
  90. package/dist/entry-drizzle-mysql.mjs.map +1 -0
  91. package/dist/entry-drizzle-pg.cjs +21 -0
  92. package/dist/entry-drizzle-pg.cjs.map +1 -0
  93. package/dist/entry-drizzle-pg.d.cts +26 -0
  94. package/dist/entry-drizzle-pg.d.mts +26 -0
  95. package/dist/entry-drizzle-pg.mjs +20 -0
  96. package/dist/entry-drizzle-pg.mjs.map +1 -0
  97. package/dist/entry-drizzle-sqlite.cjs +21 -0
  98. package/dist/entry-drizzle-sqlite.cjs.map +1 -0
  99. package/dist/entry-drizzle-sqlite.d.cts +23 -0
  100. package/dist/entry-drizzle-sqlite.d.mts +23 -0
  101. package/dist/entry-drizzle-sqlite.mjs +20 -0
  102. package/dist/entry-drizzle-sqlite.mjs.map +1 -0
  103. package/dist/entry-elysia.cjs +125 -0
  104. package/dist/entry-elysia.cjs.map +1 -0
  105. package/dist/entry-elysia.d.cts +1017 -0
  106. package/dist/entry-elysia.d.mts +1017 -0
  107. package/dist/entry-elysia.mjs +123 -0
  108. package/dist/entry-elysia.mjs.map +1 -0
  109. package/dist/entry-express.cjs +57 -0
  110. package/dist/entry-express.cjs.map +1 -0
  111. package/dist/entry-express.d.cts +15 -0
  112. package/dist/entry-express.d.mts +15 -0
  113. package/dist/entry-express.mjs +56 -0
  114. package/dist/entry-express.mjs.map +1 -0
  115. package/dist/entry-hono.cjs +35 -0
  116. package/dist/entry-hono.cjs.map +1 -0
  117. package/dist/entry-hono.d.cts +16 -0
  118. package/dist/entry-hono.d.mts +16 -0
  119. package/dist/entry-hono.mjs +34 -0
  120. package/dist/entry-hono.mjs.map +1 -0
  121. package/dist/entry-hooks-log.cjs +22 -0
  122. package/dist/entry-hooks-log.cjs.map +1 -0
  123. package/dist/entry-hooks-log.d.cts +23 -0
  124. package/dist/entry-hooks-log.d.mts +23 -0
  125. package/dist/entry-hooks-log.mjs +21 -0
  126. package/dist/entry-hooks-log.mjs.map +1 -0
  127. package/dist/entry-storage-cloudflare-kv.cjs +47 -0
  128. package/dist/entry-storage-cloudflare-kv.cjs.map +1 -0
  129. package/dist/entry-storage-cloudflare-kv.d.cts +42 -0
  130. package/dist/entry-storage-cloudflare-kv.d.mts +42 -0
  131. package/dist/entry-storage-cloudflare-kv.mjs +46 -0
  132. package/dist/entry-storage-cloudflare-kv.mjs.map +1 -0
  133. package/dist/entry-storage-drizzle.cjs +78 -0
  134. package/dist/entry-storage-drizzle.cjs.map +1 -0
  135. package/dist/entry-storage-drizzle.d.cts +30 -0
  136. package/dist/entry-storage-drizzle.d.mts +30 -0
  137. package/dist/entry-storage-drizzle.mjs +77 -0
  138. package/dist/entry-storage-drizzle.mjs.map +1 -0
  139. package/dist/entry-storage-file.cjs +4 -0
  140. package/dist/entry-storage-file.d.cts +30 -0
  141. package/dist/entry-storage-file.d.mts +30 -0
  142. package/dist/entry-storage-file.mjs +2 -0
  143. package/dist/entry-storage-libsql.cjs +3 -0
  144. package/dist/entry-storage-libsql.d.cts +48 -0
  145. package/dist/entry-storage-libsql.d.mts +48 -0
  146. package/dist/entry-storage-libsql.mjs +2 -0
  147. package/dist/entry-storage-memory.cjs +3 -0
  148. package/dist/entry-storage-memory.d.cts +2 -0
  149. package/dist/entry-storage-memory.d.mts +2 -0
  150. package/dist/entry-storage-memory.mjs +2 -0
  151. package/dist/entry-storage-mongodb.cjs +3 -0
  152. package/dist/entry-storage-mongodb.d.cts +55 -0
  153. package/dist/entry-storage-mongodb.d.mts +55 -0
  154. package/dist/entry-storage-mongodb.mjs +2 -0
  155. package/dist/entry-storage-postgres.cjs +3 -0
  156. package/dist/entry-storage-postgres.d.cts +62 -0
  157. package/dist/entry-storage-postgres.d.mts +62 -0
  158. package/dist/entry-storage-postgres.mjs +2 -0
  159. package/dist/entry-storage-redis.cjs +4 -0
  160. package/dist/entry-storage-redis.d.cts +77 -0
  161. package/dist/entry-storage-redis.d.mts +77 -0
  162. package/dist/entry-storage-redis.mjs +2 -0
  163. package/dist/entry-storage-sqlite.cjs +3 -0
  164. package/dist/entry-storage-sqlite.d.cts +36 -0
  165. package/dist/entry-storage-sqlite.d.mts +36 -0
  166. package/dist/entry-storage-sqlite.mjs +2 -0
  167. package/dist/entry-storage-unstorage.cjs +42 -0
  168. package/dist/entry-storage-unstorage.cjs.map +1 -0
  169. package/dist/entry-storage-unstorage.d.cts +29 -0
  170. package/dist/entry-storage-unstorage.d.mts +29 -0
  171. package/dist/entry-storage-unstorage.mjs +41 -0
  172. package/dist/entry-storage-unstorage.mjs.map +1 -0
  173. package/dist/file-COBYZA4Q.cjs +148 -0
  174. package/dist/file-COBYZA4Q.cjs.map +1 -0
  175. package/dist/file-fi02eFHk.mjs +131 -0
  176. package/dist/file-fi02eFHk.mjs.map +1 -0
  177. package/dist/index.cjs +123 -0
  178. package/dist/index.cjs.map +1 -0
  179. package/dist/index.d.cts +368 -0
  180. package/dist/index.d.mts +366 -0
  181. package/dist/index.mjs +61 -0
  182. package/dist/index.mjs.map +1 -0
  183. package/dist/keys-Byyj4quQ.mjs +111 -0
  184. package/dist/keys-Byyj4quQ.mjs.map +1 -0
  185. package/dist/keys-FiKpaVHX.cjs +302 -0
  186. package/dist/keys-FiKpaVHX.cjs.map +1 -0
  187. package/dist/libsql-bpVi0bXN.mjs +113 -0
  188. package/dist/libsql-bpVi0bXN.mjs.map +1 -0
  189. package/dist/libsql-pPJEo1e4.cjs +124 -0
  190. package/dist/libsql-pPJEo1e4.cjs.map +1 -0
  191. package/dist/memory-8Ef-PL5a.cjs +137 -0
  192. package/dist/memory-8Ef-PL5a.cjs.map +1 -0
  193. package/dist/memory-BMsSSwqn.mjs +127 -0
  194. package/dist/memory-BMsSSwqn.mjs.map +1 -0
  195. package/dist/memory-FnMJWCmB.d.cts +28 -0
  196. package/dist/memory-qIvANEs_.d.mts +28 -0
  197. package/dist/mongodb-Cy8yo0uk.cjs +108 -0
  198. package/dist/mongodb-Cy8yo0uk.cjs.map +1 -0
  199. package/dist/mongodb-Ddaq9mml.mjs +97 -0
  200. package/dist/mongodb-Ddaq9mml.mjs.map +1 -0
  201. package/dist/none-BnZtaGNJ.mjs +23 -0
  202. package/dist/none-BnZtaGNJ.mjs.map +1 -0
  203. package/dist/none-CAsxCOWN.cjs +49 -0
  204. package/dist/none-CAsxCOWN.cjs.map +1 -0
  205. package/dist/none-CZVrfnmF.cjs +33 -0
  206. package/dist/none-CZVrfnmF.cjs.map +1 -0
  207. package/dist/none-GhVIoh_s.mjs +33 -0
  208. package/dist/none-GhVIoh_s.mjs.map +1 -0
  209. package/dist/postgres-C8WbchFa.cjs +134 -0
  210. package/dist/postgres-C8WbchFa.cjs.map +1 -0
  211. package/dist/postgres-c3pAhmhr.mjs +123 -0
  212. package/dist/postgres-c3pAhmhr.mjs.map +1 -0
  213. package/dist/react.css +1 -0
  214. package/dist/react.js +31465 -0
  215. package/dist/receiver.cjs +43 -0
  216. package/dist/receiver.cjs.map +1 -0
  217. package/dist/receiver.d.cts +36 -0
  218. package/dist/receiver.d.mts +36 -0
  219. package/dist/receiver.mjs +40 -0
  220. package/dist/receiver.mjs.map +1 -0
  221. package/dist/redis-CFJkuSgB.cjs +270 -0
  222. package/dist/redis-CFJkuSgB.cjs.map +1 -0
  223. package/dist/redis-CvLi0KF7.mjs +254 -0
  224. package/dist/redis-CvLi0KF7.mjs.map +1 -0
  225. package/dist/roles-D0G9XqBq.cjs +128 -0
  226. package/dist/roles-D0G9XqBq.cjs.map +1 -0
  227. package/dist/roles-vp361lTk.mjs +99 -0
  228. package/dist/roles-vp361lTk.mjs.map +1 -0
  229. package/dist/schema-mo__wv4P.d.cts +233 -0
  230. package/dist/schema-mo__wv4P.d.mts +233 -0
  231. package/dist/schema.cjs +13 -0
  232. package/dist/schema.cjs.map +1 -0
  233. package/dist/schema.d.cts +2 -0
  234. package/dist/schema.d.mts +2 -0
  235. package/dist/schema.mjs +11 -0
  236. package/dist/schema.mjs.map +1 -0
  237. package/dist/signing.cjs +162 -0
  238. package/dist/signing.cjs.map +1 -0
  239. package/dist/signing.d.cts +73 -0
  240. package/dist/signing.d.mts +73 -0
  241. package/dist/signing.mjs +156 -0
  242. package/dist/signing.mjs.map +1 -0
  243. package/dist/sqlite-Cmqnrjes.mjs +67 -0
  244. package/dist/sqlite-Cmqnrjes.mjs.map +1 -0
  245. package/dist/sqlite-Dcufk0x3.cjs +78 -0
  246. package/dist/sqlite-Dcufk0x3.cjs.map +1 -0
  247. package/dist/table-Ce3Tzwqs.d.cts +11 -0
  248. package/dist/table-Ce3Tzwqs.d.mts +11 -0
  249. package/dist/testing.cjs +134 -0
  250. package/dist/testing.cjs.map +1 -0
  251. package/dist/testing.d.cts +80 -0
  252. package/dist/testing.d.mts +80 -0
  253. package/dist/testing.mjs +131 -0
  254. package/dist/testing.mjs.map +1 -0
  255. package/dist/types-react/react.d.ts +98 -0
  256. package/dist/types-react/schema.d.ts +229 -0
  257. package/dist/types-react/ui/App.d.ts +22 -0
  258. package/dist/types-react/ui/api.d.ts +97 -0
  259. package/dist/types-react/ui/components/JsonCodeEditor.d.ts +12 -0
  260. package/dist/types-react/ui/components/ThemeToggle.d.ts +2 -0
  261. package/dist/types-react/ui/components/Toast.d.ts +16 -0
  262. package/dist/types-react/ui/components/primitives.d.ts +50 -0
  263. package/dist/types-react/ui/components/ui-bits.d.ts +22 -0
  264. package/dist/types-react/ui/components/webhook-bits.d.ts +51 -0
  265. package/dist/types-react/ui/lib/format.d.ts +39 -0
  266. package/dist/types-react/ui/lib/nav-guard.d.ts +20 -0
  267. package/dist/types-react/ui/lib/utils.d.ts +3 -0
  268. package/dist/types-react/ui/theme.d.ts +12 -0
  269. package/dist/types-react/ui/types.d.ts +80 -0
  270. package/dist/types-react/ui/views/AuditView.d.ts +6 -0
  271. package/dist/types-react/ui/views/DeliveriesView.d.ts +12 -0
  272. package/dist/types-react/ui/views/EndpointsView.d.ts +11 -0
  273. package/dist/types-react/ui/views/EventTypesView.d.ts +11 -0
  274. package/dist/types-react/ui/views/MessagesView.d.ts +10 -0
  275. package/dist/types-react/ui/views/OverviewView.d.ts +12 -0
  276. package/dist/ui/assets/index-B0eoQX2U.css +1 -0
  277. package/dist/ui/assets/index-S5t_CLOe.js +209 -0
  278. package/dist/ui/index.html +14 -0
  279. package/package.json +487 -0
@@ -0,0 +1,27 @@
1
+ import { t as DrizzleKvTable } from "./table-Ce3Tzwqs.mjs";
2
+ import { BuildColumns } from "drizzle-orm";
3
+ import { MySqlColumnBuilderBase, MySqlTableExtraConfigValue } from "drizzle-orm/mysql-core";
4
+
5
+ //#region src/drizzle/mysql.d.ts
6
+ /** The `self` passed to an {@link MysqlWebhooksTableOptions.extraIndexes} callback. */
7
+ type MysqlWebhooksColumns = BuildColumns<string, Record<string, MySqlColumnBuilderBase>, "mysql">;
8
+ /** Options for {@link mysqlWebhooksTable}. */
9
+ interface MysqlWebhooksTableOptions {
10
+ /**
11
+ * `varchar` length for the `key` primary key. Default `512` (store keys are
12
+ * short slash-delimited paths). Keep within your InnoDB index-prefix limit.
13
+ */
14
+ keyLength?: number;
15
+ /** Additional columns merged into the table. */
16
+ extraColumns?: () => Record<string, MySqlColumnBuilderBase>;
17
+ /** Additional indexes/constraints; receives the built table for column references. */
18
+ extraIndexes?: (table: MysqlWebhooksColumns) => MySqlTableExtraConfigValue[];
19
+ }
20
+ /**
21
+ * Build the MySQL `mysqlTable` for the webhooks KV store: `key varchar PRIMARY
22
+ * KEY`, `value json NOT NULL`. The table name defaults to `"xtandard_webhooks"`.
23
+ */
24
+ declare function mysqlWebhooksTable(name?: string, opts?: MysqlWebhooksTableOptions): DrizzleKvTable;
25
+ //#endregion
26
+ export { type DrizzleKvTable, MysqlWebhooksTableOptions, mysqlWebhooksTable };
27
+ //# sourceMappingURL=entry-drizzle-mysql.d.mts.map
@@ -0,0 +1,19 @@
1
+ import { json, mysqlTable, varchar } from "drizzle-orm/mysql-core";
2
+ //#region src/drizzle/mysql.ts
3
+ /**
4
+ * Build the MySQL `mysqlTable` for the webhooks KV store: `key varchar PRIMARY
5
+ * KEY`, `value json NOT NULL`. The table name defaults to `"xtandard_webhooks"`.
6
+ */
7
+ function mysqlWebhooksTable(name = "xtandard_webhooks", opts) {
8
+ const columns = {
9
+ key: varchar("key", { length: opts?.keyLength ?? 512 }).primaryKey(),
10
+ value: json("value").notNull(),
11
+ ...opts?.extraColumns?.()
12
+ };
13
+ const extraConfig = opts?.extraIndexes;
14
+ return mysqlTable(name, columns, extraConfig);
15
+ }
16
+ //#endregion
17
+ export { mysqlWebhooksTable };
18
+
19
+ //# sourceMappingURL=entry-drizzle-mysql.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-drizzle-mysql.mjs","names":[],"sources":["../src/drizzle/mysql.ts"],"sourcesContent":["/**\n * `@xtandard/webhooks/drizzle/mysql` — MySQL Drizzle table factory for the\n * webhooks KV store. Schema-only (imports just `drizzle-orm/mysql-core`).\n *\n * Base columns: `key varchar PRIMARY KEY` (length configurable), `value json\n * NOT NULL`. `extraColumns`/`extraIndexes` mirror `drizzle-audit`.\n *\n * @example\n * ```ts\n * import { mysqlWebhooksTable } from \"@xtandard/webhooks/drizzle/mysql\";\n * export const webhooksKv = mysqlWebhooksTable();\n * ```\n *\n * @module\n */\n\nimport type { BuildColumns } from \"drizzle-orm\";\nimport {\n json,\n mysqlTable,\n varchar,\n type MySqlColumnBuilderBase,\n type MySqlTableExtraConfigValue,\n} from \"drizzle-orm/mysql-core\";\nimport type { DrizzleKvTable } from \"./table.ts\";\n\nexport type { DrizzleKvTable } from \"./table.ts\";\n\n/** The `self` passed to an {@link MysqlWebhooksTableOptions.extraIndexes} callback. */\ntype MysqlWebhooksColumns = BuildColumns<string, Record<string, MySqlColumnBuilderBase>, \"mysql\">;\n\n/** Options for {@link mysqlWebhooksTable}. */\nexport interface MysqlWebhooksTableOptions {\n /**\n * `varchar` length for the `key` primary key. Default `512` (store keys are\n * short slash-delimited paths). Keep within your InnoDB index-prefix limit.\n */\n keyLength?: number;\n /** Additional columns merged into the table. */\n extraColumns?: () => Record<string, MySqlColumnBuilderBase>;\n /** Additional indexes/constraints; receives the built table for column references. */\n extraIndexes?: (table: MysqlWebhooksColumns) => MySqlTableExtraConfigValue[];\n}\n\n/**\n * Build the MySQL `mysqlTable` for the webhooks KV store: `key varchar PRIMARY\n * KEY`, `value json NOT NULL`. The table name defaults to `\"xtandard_webhooks\"`.\n */\nexport function mysqlWebhooksTable(\n name = \"xtandard_webhooks\",\n opts?: MysqlWebhooksTableOptions,\n): DrizzleKvTable {\n const columns = {\n key: varchar(\"key\", { length: opts?.keyLength ?? 512 }).primaryKey(),\n value: json(\"value\").notNull(),\n ...opts?.extraColumns?.(),\n };\n // Cast to the exact `self` type Drizzle infers from `columns` — the public\n // `extraIndexes` type uses a generic column map, which is a supertype.\n const extraConfig = opts?.extraIndexes as\n | ((self: BuildColumns<string, typeof columns, \"mysql\">) => MySqlTableExtraConfigValue[])\n | undefined;\n return mysqlTable(name, columns, extraConfig);\n}\n"],"mappings":";;;;;;AAgDA,SAAgB,mBACd,OAAO,qBACP,MACgB;CAChB,MAAM,UAAU;EACd,KAAK,QAAQ,OAAO,EAAE,QAAQ,MAAM,aAAa,IAAI,CAAC,EAAE,WAAW;EACnE,OAAO,KAAK,OAAO,EAAE,QAAQ;EAC7B,GAAG,MAAM,eAAe;CAC1B;CAGA,MAAM,cAAc,MAAM;CAG1B,OAAO,WAAW,MAAM,SAAS,WAAW;AAC9C"}
@@ -0,0 +1,21 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ let drizzle_orm_pg_core = require("drizzle-orm/pg-core");
3
+ //#region src/drizzle/pg.ts
4
+ /**
5
+ * Build the Drizzle `pgTable` for the webhooks KV store. Base columns are fixed —
6
+ * `key text PRIMARY KEY`, `value jsonb NOT NULL` — and required by
7
+ * `createDrizzleStorage`; `schema`/`extraColumns`/`extraIndexes` extend it.
8
+ * The table name defaults to `"xtandard_webhooks"`.
9
+ */
10
+ function pgWebhooksTable(name = "xtandard_webhooks", opts) {
11
+ const columns = {
12
+ key: (0, drizzle_orm_pg_core.text)("key").primaryKey(),
13
+ value: (0, drizzle_orm_pg_core.jsonb)("value").notNull(),
14
+ ...opts?.extraColumns?.()
15
+ };
16
+ return opts?.schema ? (0, drizzle_orm_pg_core.pgSchema)(opts.schema).table(name, columns, opts.extraIndexes) : (0, drizzle_orm_pg_core.pgTable)(name, columns, opts?.extraIndexes);
17
+ }
18
+ //#endregion
19
+ exports.pgWebhooksTable = pgWebhooksTable;
20
+
21
+ //# sourceMappingURL=entry-drizzle-pg.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-drizzle-pg.cjs","names":[],"sources":["../src/drizzle/pg.ts"],"sourcesContent":["/**\n * `@xtandard/webhooks/drizzle/pg` — a Drizzle table factory for the webhooks KV\n * store.\n *\n * Schema-only (imports just `drizzle-orm/pg-core`, never the webhooks core), so\n * it is safe to use inside a Drizzle schema file. The base table is the store's\n * KV shape (`key text PRIMARY KEY`, `value jsonb NOT NULL`); adding it to your\n * schema brings the webhooks table into your normal `drizzle-kit`\n * generate/migrate flow instead of an adapter-side `CREATE TABLE`.\n * `extraColumns`/`extraIndexes` mirror the `drizzle-audit` factories for when\n * you want to extend it.\n *\n * @example\n * ```ts\n * // schema.ts\n * import { pgWebhooksTable } from \"@xtandard/webhooks/drizzle/pg\";\n * export const webhooksKv = pgWebhooksTable();\n *\n * // then: createDrizzleStorage({ db, table: webhooksKv })\n * ```\n *\n * @module\n */\n\nimport type { BuildExtraConfigColumns } from \"drizzle-orm\";\nimport {\n jsonb,\n pgSchema,\n pgTable,\n text,\n type PgColumnBuilderBase,\n type PgTableExtraConfigValue,\n} from \"drizzle-orm/pg-core\";\nimport type { DrizzleKvTable } from \"./table.ts\";\n\nexport type { DrizzleKvTable } from \"./table.ts\";\n\n/** The `self` passed to an {@link PgWebhooksTableOptions.extraIndexes} callback. */\ntype PgWebhooksColumns = BuildExtraConfigColumns<string, Record<string, PgColumnBuilderBase>, \"pg\">;\n\n/** Options for {@link pgWebhooksTable}. */\nexport interface PgWebhooksTableOptions {\n /** Postgres schema (namespace) to place the table in. Defaults to the public schema. */\n schema?: string;\n /** Additional columns merged into the table (e.g. a tenant discriminator). */\n extraColumns?: () => Record<string, PgColumnBuilderBase>;\n /** Additional indexes/constraints; receives the built table for column references. */\n extraIndexes?: (table: PgWebhooksColumns) => PgTableExtraConfigValue[];\n}\n\n/**\n * Build the Drizzle `pgTable` for the webhooks KV store. Base columns are fixed —\n * `key text PRIMARY KEY`, `value jsonb NOT NULL` — and required by\n * `createDrizzleStorage`; `schema`/`extraColumns`/`extraIndexes` extend it.\n * The table name defaults to `\"xtandard_webhooks\"`.\n */\nexport function pgWebhooksTable(\n name = \"xtandard_webhooks\",\n opts?: PgWebhooksTableOptions,\n): DrizzleKvTable {\n const columns = {\n key: text(\"key\").primaryKey(),\n value: jsonb(\"value\").notNull(),\n ...opts?.extraColumns?.(),\n };\n return opts?.schema\n ? pgSchema(opts.schema).table(name, columns, opts.extraIndexes)\n : pgTable(name, columns, opts?.extraIndexes);\n}\n"],"mappings":";;;;;;;;;AAwDA,SAAgB,gBACd,OAAO,qBACP,MACgB;CAChB,MAAM,UAAU;EACd,MAAA,GAAA,oBAAA,MAAU,KAAK,EAAE,WAAW;EAC5B,QAAA,GAAA,oBAAA,OAAa,OAAO,EAAE,QAAQ;EAC9B,GAAG,MAAM,eAAe;CAC1B;CACA,OAAO,MAAM,UAAA,GAAA,oBAAA,UACA,KAAK,MAAM,EAAE,MAAM,MAAM,SAAS,KAAK,YAAY,KAAA,GAAA,oBAAA,SACpD,MAAM,SAAS,MAAM,YAAY;AAC/C"}
@@ -0,0 +1,26 @@
1
+ import { t as DrizzleKvTable } from "./table-Ce3Tzwqs.cjs";
2
+ import { BuildExtraConfigColumns } from "drizzle-orm";
3
+ import { PgColumnBuilderBase, PgTableExtraConfigValue } from "drizzle-orm/pg-core";
4
+
5
+ //#region src/drizzle/pg.d.ts
6
+ /** The `self` passed to an {@link PgWebhooksTableOptions.extraIndexes} callback. */
7
+ type PgWebhooksColumns = BuildExtraConfigColumns<string, Record<string, PgColumnBuilderBase>, "pg">;
8
+ /** Options for {@link pgWebhooksTable}. */
9
+ interface PgWebhooksTableOptions {
10
+ /** Postgres schema (namespace) to place the table in. Defaults to the public schema. */
11
+ schema?: string;
12
+ /** Additional columns merged into the table (e.g. a tenant discriminator). */
13
+ extraColumns?: () => Record<string, PgColumnBuilderBase>;
14
+ /** Additional indexes/constraints; receives the built table for column references. */
15
+ extraIndexes?: (table: PgWebhooksColumns) => PgTableExtraConfigValue[];
16
+ }
17
+ /**
18
+ * Build the Drizzle `pgTable` for the webhooks KV store. Base columns are fixed —
19
+ * `key text PRIMARY KEY`, `value jsonb NOT NULL` — and required by
20
+ * `createDrizzleStorage`; `schema`/`extraColumns`/`extraIndexes` extend it.
21
+ * The table name defaults to `"xtandard_webhooks"`.
22
+ */
23
+ declare function pgWebhooksTable(name?: string, opts?: PgWebhooksTableOptions): DrizzleKvTable;
24
+ //#endregion
25
+ export { type DrizzleKvTable, PgWebhooksTableOptions, pgWebhooksTable };
26
+ //# sourceMappingURL=entry-drizzle-pg.d.cts.map
@@ -0,0 +1,26 @@
1
+ import { t as DrizzleKvTable } from "./table-Ce3Tzwqs.mjs";
2
+ import { BuildExtraConfigColumns } from "drizzle-orm";
3
+ import { PgColumnBuilderBase, PgTableExtraConfigValue } from "drizzle-orm/pg-core";
4
+
5
+ //#region src/drizzle/pg.d.ts
6
+ /** The `self` passed to an {@link PgWebhooksTableOptions.extraIndexes} callback. */
7
+ type PgWebhooksColumns = BuildExtraConfigColumns<string, Record<string, PgColumnBuilderBase>, "pg">;
8
+ /** Options for {@link pgWebhooksTable}. */
9
+ interface PgWebhooksTableOptions {
10
+ /** Postgres schema (namespace) to place the table in. Defaults to the public schema. */
11
+ schema?: string;
12
+ /** Additional columns merged into the table (e.g. a tenant discriminator). */
13
+ extraColumns?: () => Record<string, PgColumnBuilderBase>;
14
+ /** Additional indexes/constraints; receives the built table for column references. */
15
+ extraIndexes?: (table: PgWebhooksColumns) => PgTableExtraConfigValue[];
16
+ }
17
+ /**
18
+ * Build the Drizzle `pgTable` for the webhooks KV store. Base columns are fixed —
19
+ * `key text PRIMARY KEY`, `value jsonb NOT NULL` — and required by
20
+ * `createDrizzleStorage`; `schema`/`extraColumns`/`extraIndexes` extend it.
21
+ * The table name defaults to `"xtandard_webhooks"`.
22
+ */
23
+ declare function pgWebhooksTable(name?: string, opts?: PgWebhooksTableOptions): DrizzleKvTable;
24
+ //#endregion
25
+ export { type DrizzleKvTable, PgWebhooksTableOptions, pgWebhooksTable };
26
+ //# sourceMappingURL=entry-drizzle-pg.d.mts.map
@@ -0,0 +1,20 @@
1
+ import { jsonb, pgSchema, pgTable, text } from "drizzle-orm/pg-core";
2
+ //#region src/drizzle/pg.ts
3
+ /**
4
+ * Build the Drizzle `pgTable` for the webhooks KV store. Base columns are fixed —
5
+ * `key text PRIMARY KEY`, `value jsonb NOT NULL` — and required by
6
+ * `createDrizzleStorage`; `schema`/`extraColumns`/`extraIndexes` extend it.
7
+ * The table name defaults to `"xtandard_webhooks"`.
8
+ */
9
+ function pgWebhooksTable(name = "xtandard_webhooks", opts) {
10
+ const columns = {
11
+ key: text("key").primaryKey(),
12
+ value: jsonb("value").notNull(),
13
+ ...opts?.extraColumns?.()
14
+ };
15
+ return opts?.schema ? pgSchema(opts.schema).table(name, columns, opts.extraIndexes) : pgTable(name, columns, opts?.extraIndexes);
16
+ }
17
+ //#endregion
18
+ export { pgWebhooksTable };
19
+
20
+ //# sourceMappingURL=entry-drizzle-pg.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-drizzle-pg.mjs","names":[],"sources":["../src/drizzle/pg.ts"],"sourcesContent":["/**\n * `@xtandard/webhooks/drizzle/pg` — a Drizzle table factory for the webhooks KV\n * store.\n *\n * Schema-only (imports just `drizzle-orm/pg-core`, never the webhooks core), so\n * it is safe to use inside a Drizzle schema file. The base table is the store's\n * KV shape (`key text PRIMARY KEY`, `value jsonb NOT NULL`); adding it to your\n * schema brings the webhooks table into your normal `drizzle-kit`\n * generate/migrate flow instead of an adapter-side `CREATE TABLE`.\n * `extraColumns`/`extraIndexes` mirror the `drizzle-audit` factories for when\n * you want to extend it.\n *\n * @example\n * ```ts\n * // schema.ts\n * import { pgWebhooksTable } from \"@xtandard/webhooks/drizzle/pg\";\n * export const webhooksKv = pgWebhooksTable();\n *\n * // then: createDrizzleStorage({ db, table: webhooksKv })\n * ```\n *\n * @module\n */\n\nimport type { BuildExtraConfigColumns } from \"drizzle-orm\";\nimport {\n jsonb,\n pgSchema,\n pgTable,\n text,\n type PgColumnBuilderBase,\n type PgTableExtraConfigValue,\n} from \"drizzle-orm/pg-core\";\nimport type { DrizzleKvTable } from \"./table.ts\";\n\nexport type { DrizzleKvTable } from \"./table.ts\";\n\n/** The `self` passed to an {@link PgWebhooksTableOptions.extraIndexes} callback. */\ntype PgWebhooksColumns = BuildExtraConfigColumns<string, Record<string, PgColumnBuilderBase>, \"pg\">;\n\n/** Options for {@link pgWebhooksTable}. */\nexport interface PgWebhooksTableOptions {\n /** Postgres schema (namespace) to place the table in. Defaults to the public schema. */\n schema?: string;\n /** Additional columns merged into the table (e.g. a tenant discriminator). */\n extraColumns?: () => Record<string, PgColumnBuilderBase>;\n /** Additional indexes/constraints; receives the built table for column references. */\n extraIndexes?: (table: PgWebhooksColumns) => PgTableExtraConfigValue[];\n}\n\n/**\n * Build the Drizzle `pgTable` for the webhooks KV store. Base columns are fixed —\n * `key text PRIMARY KEY`, `value jsonb NOT NULL` — and required by\n * `createDrizzleStorage`; `schema`/`extraColumns`/`extraIndexes` extend it.\n * The table name defaults to `\"xtandard_webhooks\"`.\n */\nexport function pgWebhooksTable(\n name = \"xtandard_webhooks\",\n opts?: PgWebhooksTableOptions,\n): DrizzleKvTable {\n const columns = {\n key: text(\"key\").primaryKey(),\n value: jsonb(\"value\").notNull(),\n ...opts?.extraColumns?.(),\n };\n return opts?.schema\n ? pgSchema(opts.schema).table(name, columns, opts.extraIndexes)\n : pgTable(name, columns, opts?.extraIndexes);\n}\n"],"mappings":";;;;;;;;AAwDA,SAAgB,gBACd,OAAO,qBACP,MACgB;CAChB,MAAM,UAAU;EACd,KAAK,KAAK,KAAK,EAAE,WAAW;EAC5B,OAAO,MAAM,OAAO,EAAE,QAAQ;EAC9B,GAAG,MAAM,eAAe;CAC1B;CACA,OAAO,MAAM,SACT,SAAS,KAAK,MAAM,EAAE,MAAM,MAAM,SAAS,KAAK,YAAY,IAC5D,QAAQ,MAAM,SAAS,MAAM,YAAY;AAC/C"}
@@ -0,0 +1,21 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ let drizzle_orm_sqlite_core = require("drizzle-orm/sqlite-core");
3
+ //#region src/drizzle/sqlite.ts
4
+ /**
5
+ * Build the SQLite `sqliteTable` for the webhooks KV store: `key text PRIMARY
6
+ * KEY`, `value text NOT NULL` (JSON mode). The table name defaults to
7
+ * `"xtandard_webhooks"`.
8
+ */
9
+ function sqliteWebhooksTable(name = "xtandard_webhooks", opts) {
10
+ const columns = {
11
+ key: (0, drizzle_orm_sqlite_core.text)("key").primaryKey(),
12
+ value: (0, drizzle_orm_sqlite_core.text)("value", { mode: "json" }).notNull(),
13
+ ...opts?.extraColumns?.()
14
+ };
15
+ const extraConfig = opts?.extraIndexes;
16
+ return (0, drizzle_orm_sqlite_core.sqliteTable)(name, columns, extraConfig);
17
+ }
18
+ //#endregion
19
+ exports.sqliteWebhooksTable = sqliteWebhooksTable;
20
+
21
+ //# sourceMappingURL=entry-drizzle-sqlite.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-drizzle-sqlite.cjs","names":[],"sources":["../src/drizzle/sqlite.ts"],"sourcesContent":["/**\n * `@xtandard/webhooks/drizzle/sqlite` — SQLite Drizzle table factory for the\n * webhooks KV store. Schema-only (imports just `drizzle-orm/sqlite-core`).\n *\n * Base columns: `key text PRIMARY KEY`, `value text NOT NULL` in JSON mode\n * (Drizzle serializes/parses transparently). `extraColumns`/`extraIndexes`\n * mirror `drizzle-audit`.\n *\n * @example\n * ```ts\n * import { sqliteWebhooksTable } from \"@xtandard/webhooks/drizzle/sqlite\";\n * export const webhooksKv = sqliteWebhooksTable();\n * ```\n *\n * @module\n */\n\nimport type { BuildColumns } from \"drizzle-orm\";\nimport {\n sqliteTable,\n text,\n type SQLiteColumnBuilderBase,\n type SQLiteTableExtraConfigValue,\n} from \"drizzle-orm/sqlite-core\";\nimport type { DrizzleKvTable } from \"./table.ts\";\n\nexport type { DrizzleKvTable } from \"./table.ts\";\n\n/** The `self` passed to an {@link SqliteWebhooksTableOptions.extraIndexes} callback. */\ntype SqliteWebhooksColumns = BuildColumns<\n string,\n Record<string, SQLiteColumnBuilderBase>,\n \"sqlite\"\n>;\n\n/** Options for {@link sqliteWebhooksTable}. */\nexport interface SqliteWebhooksTableOptions {\n /** Additional columns merged into the table. */\n extraColumns?: () => Record<string, SQLiteColumnBuilderBase>;\n /** Additional indexes/constraints; receives the built table for column references. */\n extraIndexes?: (table: SqliteWebhooksColumns) => SQLiteTableExtraConfigValue[];\n}\n\n/**\n * Build the SQLite `sqliteTable` for the webhooks KV store: `key text PRIMARY\n * KEY`, `value text NOT NULL` (JSON mode). The table name defaults to\n * `\"xtandard_webhooks\"`.\n */\nexport function sqliteWebhooksTable(\n name = \"xtandard_webhooks\",\n opts?: SqliteWebhooksTableOptions,\n): DrizzleKvTable {\n const columns = {\n key: text(\"key\").primaryKey(),\n value: text(\"value\", { mode: \"json\" }).notNull(),\n ...opts?.extraColumns?.(),\n };\n // Cast to the exact `self` type Drizzle infers from `columns` — the public\n // `extraIndexes` type uses a generic column map, which is a supertype.\n const extraConfig = opts?.extraIndexes as\n | ((self: BuildColumns<string, typeof columns, \"sqlite\">) => SQLiteTableExtraConfigValue[])\n | undefined;\n return sqliteTable(name, columns, extraConfig);\n}\n"],"mappings":";;;;;;;;AAgDA,SAAgB,oBACd,OAAO,qBACP,MACgB;CAChB,MAAM,UAAU;EACd,MAAA,GAAA,wBAAA,MAAU,KAAK,EAAE,WAAW;EAC5B,QAAA,GAAA,wBAAA,MAAY,SAAS,EAAE,MAAM,OAAO,CAAC,EAAE,QAAQ;EAC/C,GAAG,MAAM,eAAe;CAC1B;CAGA,MAAM,cAAc,MAAM;CAG1B,QAAA,GAAA,wBAAA,aAAmB,MAAM,SAAS,WAAW;AAC/C"}
@@ -0,0 +1,23 @@
1
+ import { t as DrizzleKvTable } from "./table-Ce3Tzwqs.cjs";
2
+ import { BuildColumns } from "drizzle-orm";
3
+ import { SQLiteColumnBuilderBase, SQLiteTableExtraConfigValue } from "drizzle-orm/sqlite-core";
4
+
5
+ //#region src/drizzle/sqlite.d.ts
6
+ /** The `self` passed to an {@link SqliteWebhooksTableOptions.extraIndexes} callback. */
7
+ type SqliteWebhooksColumns = BuildColumns<string, Record<string, SQLiteColumnBuilderBase>, "sqlite">;
8
+ /** Options for {@link sqliteWebhooksTable}. */
9
+ interface SqliteWebhooksTableOptions {
10
+ /** Additional columns merged into the table. */
11
+ extraColumns?: () => Record<string, SQLiteColumnBuilderBase>;
12
+ /** Additional indexes/constraints; receives the built table for column references. */
13
+ extraIndexes?: (table: SqliteWebhooksColumns) => SQLiteTableExtraConfigValue[];
14
+ }
15
+ /**
16
+ * Build the SQLite `sqliteTable` for the webhooks KV store: `key text PRIMARY
17
+ * KEY`, `value text NOT NULL` (JSON mode). The table name defaults to
18
+ * `"xtandard_webhooks"`.
19
+ */
20
+ declare function sqliteWebhooksTable(name?: string, opts?: SqliteWebhooksTableOptions): DrizzleKvTable;
21
+ //#endregion
22
+ export { type DrizzleKvTable, SqliteWebhooksTableOptions, sqliteWebhooksTable };
23
+ //# sourceMappingURL=entry-drizzle-sqlite.d.cts.map
@@ -0,0 +1,23 @@
1
+ import { t as DrizzleKvTable } from "./table-Ce3Tzwqs.mjs";
2
+ import { BuildColumns } from "drizzle-orm";
3
+ import { SQLiteColumnBuilderBase, SQLiteTableExtraConfigValue } from "drizzle-orm/sqlite-core";
4
+
5
+ //#region src/drizzle/sqlite.d.ts
6
+ /** The `self` passed to an {@link SqliteWebhooksTableOptions.extraIndexes} callback. */
7
+ type SqliteWebhooksColumns = BuildColumns<string, Record<string, SQLiteColumnBuilderBase>, "sqlite">;
8
+ /** Options for {@link sqliteWebhooksTable}. */
9
+ interface SqliteWebhooksTableOptions {
10
+ /** Additional columns merged into the table. */
11
+ extraColumns?: () => Record<string, SQLiteColumnBuilderBase>;
12
+ /** Additional indexes/constraints; receives the built table for column references. */
13
+ extraIndexes?: (table: SqliteWebhooksColumns) => SQLiteTableExtraConfigValue[];
14
+ }
15
+ /**
16
+ * Build the SQLite `sqliteTable` for the webhooks KV store: `key text PRIMARY
17
+ * KEY`, `value text NOT NULL` (JSON mode). The table name defaults to
18
+ * `"xtandard_webhooks"`.
19
+ */
20
+ declare function sqliteWebhooksTable(name?: string, opts?: SqliteWebhooksTableOptions): DrizzleKvTable;
21
+ //#endregion
22
+ export { type DrizzleKvTable, SqliteWebhooksTableOptions, sqliteWebhooksTable };
23
+ //# sourceMappingURL=entry-drizzle-sqlite.d.mts.map
@@ -0,0 +1,20 @@
1
+ import { sqliteTable, text } from "drizzle-orm/sqlite-core";
2
+ //#region src/drizzle/sqlite.ts
3
+ /**
4
+ * Build the SQLite `sqliteTable` for the webhooks KV store: `key text PRIMARY
5
+ * KEY`, `value text NOT NULL` (JSON mode). The table name defaults to
6
+ * `"xtandard_webhooks"`.
7
+ */
8
+ function sqliteWebhooksTable(name = "xtandard_webhooks", opts) {
9
+ const columns = {
10
+ key: text("key").primaryKey(),
11
+ value: text("value", { mode: "json" }).notNull(),
12
+ ...opts?.extraColumns?.()
13
+ };
14
+ const extraConfig = opts?.extraIndexes;
15
+ return sqliteTable(name, columns, extraConfig);
16
+ }
17
+ //#endregion
18
+ export { sqliteWebhooksTable };
19
+
20
+ //# sourceMappingURL=entry-drizzle-sqlite.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-drizzle-sqlite.mjs","names":[],"sources":["../src/drizzle/sqlite.ts"],"sourcesContent":["/**\n * `@xtandard/webhooks/drizzle/sqlite` — SQLite Drizzle table factory for the\n * webhooks KV store. Schema-only (imports just `drizzle-orm/sqlite-core`).\n *\n * Base columns: `key text PRIMARY KEY`, `value text NOT NULL` in JSON mode\n * (Drizzle serializes/parses transparently). `extraColumns`/`extraIndexes`\n * mirror `drizzle-audit`.\n *\n * @example\n * ```ts\n * import { sqliteWebhooksTable } from \"@xtandard/webhooks/drizzle/sqlite\";\n * export const webhooksKv = sqliteWebhooksTable();\n * ```\n *\n * @module\n */\n\nimport type { BuildColumns } from \"drizzle-orm\";\nimport {\n sqliteTable,\n text,\n type SQLiteColumnBuilderBase,\n type SQLiteTableExtraConfigValue,\n} from \"drizzle-orm/sqlite-core\";\nimport type { DrizzleKvTable } from \"./table.ts\";\n\nexport type { DrizzleKvTable } from \"./table.ts\";\n\n/** The `self` passed to an {@link SqliteWebhooksTableOptions.extraIndexes} callback. */\ntype SqliteWebhooksColumns = BuildColumns<\n string,\n Record<string, SQLiteColumnBuilderBase>,\n \"sqlite\"\n>;\n\n/** Options for {@link sqliteWebhooksTable}. */\nexport interface SqliteWebhooksTableOptions {\n /** Additional columns merged into the table. */\n extraColumns?: () => Record<string, SQLiteColumnBuilderBase>;\n /** Additional indexes/constraints; receives the built table for column references. */\n extraIndexes?: (table: SqliteWebhooksColumns) => SQLiteTableExtraConfigValue[];\n}\n\n/**\n * Build the SQLite `sqliteTable` for the webhooks KV store: `key text PRIMARY\n * KEY`, `value text NOT NULL` (JSON mode). The table name defaults to\n * `\"xtandard_webhooks\"`.\n */\nexport function sqliteWebhooksTable(\n name = \"xtandard_webhooks\",\n opts?: SqliteWebhooksTableOptions,\n): DrizzleKvTable {\n const columns = {\n key: text(\"key\").primaryKey(),\n value: text(\"value\", { mode: \"json\" }).notNull(),\n ...opts?.extraColumns?.(),\n };\n // Cast to the exact `self` type Drizzle infers from `columns` — the public\n // `extraIndexes` type uses a generic column map, which is a supertype.\n const extraConfig = opts?.extraIndexes as\n | ((self: BuildColumns<string, typeof columns, \"sqlite\">) => SQLiteTableExtraConfigValue[])\n | undefined;\n return sqliteTable(name, columns, extraConfig);\n}\n"],"mappings":";;;;;;;AAgDA,SAAgB,oBACd,OAAO,qBACP,MACgB;CAChB,MAAM,UAAU;EACd,KAAK,KAAK,KAAK,EAAE,WAAW;EAC5B,OAAO,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC,EAAE,QAAQ;EAC/C,GAAG,MAAM,eAAe;CAC1B;CAGA,MAAM,cAAc,MAAM;CAG1B,OAAO,YAAY,MAAM,SAAS,WAAW;AAC/C"}
@@ -0,0 +1,125 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_create_fetch_handler = require("./create-fetch-handler-CmooujQo.cjs");
3
+ let elysia = require("elysia");
4
+ //#region src/adapters/elysia.ts
5
+ /**
6
+ * Elysia adapter. Two ways to mount:
7
+ *
8
+ * 1. {@link webhooksPanel} — a web-standard handler for `Elysia.mount(path, handler)`.
9
+ * Simplest, but opaque to Eden (the typed client can't see the routes).
10
+ *
11
+ * ```ts
12
+ * new Elysia().mount("/webhooks", webhooksPanel({ basePath: "/webhooks", storage }));
13
+ * ```
14
+ *
15
+ * 2. {@link webhooksElysia} — a typed Elysia plugin that *declares* the admin routes,
16
+ * so **Eden treaty** infers them: `edenClient.webhooks.api.applications.get()`, etc.
17
+ * Each handler delegates to the same pipeline (auth/validation/logic reused).
18
+ *
19
+ * ```ts
20
+ * import { treaty } from "@elysiajs/eden";
21
+ * const app = new Elysia().use(webhooksElysia({ prefix: "/webhooks", storage }));
22
+ * const client = treaty<typeof app>("localhost:3000");
23
+ * await client.webhooks.api.applications.get();
24
+ * ```
25
+ *
26
+ * The panel starts the delivery dispatcher by default; pass `dispatcher: false`
27
+ * for split-worker deployments.
28
+ *
29
+ * @module
30
+ */
31
+ /** Create a panel handler suitable for `Elysia.mount(path, handler)`. */
32
+ function webhooksPanel(options) {
33
+ const handler = require_create_fetch_handler.createFetchHandler(options);
34
+ const fn = ((request) => handler.fetch(request));
35
+ fn.core = handler.core;
36
+ fn.dispatcher = handler.dispatcher;
37
+ fn.openapi = handler.openapi;
38
+ return fn;
39
+ }
40
+ const appParams = elysia.t.Object({ app: elysia.t.String() });
41
+ const endpointParams = elysia.t.Object({
42
+ app: elysia.t.String(),
43
+ id: elysia.t.String()
44
+ });
45
+ const nameParams = elysia.t.Object({ name: elysia.t.String() });
46
+ /**
47
+ * Typed Elysia plugin exposing the admin API so the **Eden** client can call it
48
+ * with full path/method/param typing (`edenClient.webhooks.api.applications.get()`).
49
+ * Routes are declared for the typed surface; every handler delegates to the
50
+ * shared fetch pipeline (auth, authorization, portal scoping, error mapping
51
+ * reused). A catch-all also serves the bundled UI.
52
+ */
53
+ function webhooksElysia(options) {
54
+ const prefix = options.prefix ?? "/webhooks";
55
+ const handler = require_create_fetch_handler.createFetchHandler({
56
+ ...options,
57
+ basePath: options.basePath ?? prefix
58
+ });
59
+ const pass = (ctx) => {
60
+ const r = ctx.request;
61
+ if (ctx.body != null && (r.method === "POST" || r.method === "PUT")) return handler.fetch(new Request(r.url, {
62
+ method: r.method,
63
+ headers: r.headers,
64
+ body: JSON.stringify(ctx.body)
65
+ }));
66
+ return handler.fetch(r);
67
+ };
68
+ const app = "/api/applications/:app";
69
+ const endpoint = `${app}/endpoints/:id`;
70
+ return new elysia.Elysia({
71
+ prefix,
72
+ name: "xtandard-webhooks"
73
+ }).get("/config", pass).get("/api/openapi.json", pass).get("/api/event-types.json", pass).get("/api/applications", pass).post("/api/applications", pass, { body: elysia.t.Object({
74
+ key: elysia.t.String(),
75
+ name: elysia.t.Optional(elysia.t.String()),
76
+ metadata: elysia.t.Optional(elysia.t.Any())
77
+ }) }).get(app, pass, { params: appParams }).put(app, pass, {
78
+ params: appParams,
79
+ body: elysia.t.Any()
80
+ }).delete(app, pass, { params: appParams }).get("/api/event-types", pass).post("/api/event-types", pass, { body: elysia.t.Object({
81
+ name: elysia.t.String(),
82
+ description: elysia.t.Optional(elysia.t.String()),
83
+ groupName: elysia.t.Optional(elysia.t.String()),
84
+ schema: elysia.t.Optional(elysia.t.Any()),
85
+ deprecated: elysia.t.Optional(elysia.t.Boolean())
86
+ }) }).get("/api/event-types/:name", pass, { params: nameParams }).put("/api/event-types/:name", pass, {
87
+ params: nameParams,
88
+ body: elysia.t.Any()
89
+ }).delete("/api/event-types/:name", pass, { params: nameParams }).get(`${app}/endpoints`, pass, { params: appParams }).post(`${app}/endpoints`, pass, {
90
+ params: appParams,
91
+ body: elysia.t.Object({
92
+ url: elysia.t.String(),
93
+ description: elysia.t.Optional(elysia.t.String()),
94
+ eventTypes: elysia.t.Optional(elysia.t.Array(elysia.t.String())),
95
+ headers: elysia.t.Optional(elysia.t.Record(elysia.t.String(), elysia.t.String())),
96
+ metadata: elysia.t.Optional(elysia.t.Any()),
97
+ disabled: elysia.t.Optional(elysia.t.Boolean())
98
+ })
99
+ }).get(endpoint, pass, { params: endpointParams }).put(endpoint, pass, {
100
+ params: endpointParams,
101
+ body: elysia.t.Any()
102
+ }).delete(endpoint, pass, { params: endpointParams }).get(`${endpoint}/secret`, pass, { params: endpointParams }).post(`${endpoint}/rotate-secret`, pass, { params: endpointParams }).post(`${endpoint}/enable`, pass, { params: endpointParams }).post(`${endpoint}/disable`, pass, { params: endpointParams }).post(`${endpoint}/test`, pass, {
103
+ params: endpointParams,
104
+ body: elysia.t.Object({
105
+ eventType: elysia.t.String(),
106
+ payload: elysia.t.Optional(elysia.t.Any())
107
+ })
108
+ }).post(`${endpoint}/recover`, pass, {
109
+ params: endpointParams,
110
+ body: elysia.t.Object({ since: elysia.t.String() })
111
+ }).get(`${app}/messages`, pass, { params: appParams }).post(`${app}/messages`, pass, {
112
+ params: appParams,
113
+ body: elysia.t.Object({
114
+ eventType: elysia.t.String(),
115
+ payload: elysia.t.Any(),
116
+ timestamp: elysia.t.Optional(elysia.t.String()),
117
+ idempotencyKey: elysia.t.Optional(elysia.t.String())
118
+ })
119
+ }).get(`${app}/messages/:id`, pass, { params: endpointParams }).get(`${app}/deliveries`, pass, { params: appParams }).get(`${app}/deliveries/:id`, pass, { params: endpointParams }).post(`${app}/deliveries/:id/retry`, pass, { params: endpointParams }).get(`${app}/audit`, pass, { params: appParams }).all("/*", pass);
120
+ }
121
+ //#endregion
122
+ exports.webhooksElysia = webhooksElysia;
123
+ exports.webhooksPanel = webhooksPanel;
124
+
125
+ //# sourceMappingURL=entry-elysia.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-elysia.cjs","names":["createFetchHandler","t","Elysia"],"sources":["../src/adapters/elysia.ts"],"sourcesContent":["/**\n * Elysia adapter. Two ways to mount:\n *\n * 1. {@link webhooksPanel} — a web-standard handler for `Elysia.mount(path, handler)`.\n * Simplest, but opaque to Eden (the typed client can't see the routes).\n *\n * ```ts\n * new Elysia().mount(\"/webhooks\", webhooksPanel({ basePath: \"/webhooks\", storage }));\n * ```\n *\n * 2. {@link webhooksElysia} — a typed Elysia plugin that *declares* the admin routes,\n * so **Eden treaty** infers them: `edenClient.webhooks.api.applications.get()`, etc.\n * Each handler delegates to the same pipeline (auth/validation/logic reused).\n *\n * ```ts\n * import { treaty } from \"@elysiajs/eden\";\n * const app = new Elysia().use(webhooksElysia({ prefix: \"/webhooks\", storage }));\n * const client = treaty<typeof app>(\"localhost:3000\");\n * await client.webhooks.api.applications.get();\n * ```\n *\n * The panel starts the delivery dispatcher by default; pass `dispatcher: false`\n * for split-worker deployments.\n *\n * @module\n */\n\nimport { Elysia, t } from \"elysia\";\nimport { createFetchHandler, type WebhooksPanelOptions } from \"../server/create-fetch-handler.ts\";\n\n/** A web-standard fetch handler with `core` + `dispatcher` + `openapi()` attached. */\nexport type ElysiaWebhooksHandler = ((request: Request) => Promise<Response>) & {\n core: ReturnType<typeof createFetchHandler>[\"core\"];\n dispatcher: ReturnType<typeof createFetchHandler>[\"dispatcher\"];\n openapi: ReturnType<typeof createFetchHandler>[\"openapi\"];\n};\n\n/** Create a panel handler suitable for `Elysia.mount(path, handler)`. */\nexport function webhooksPanel(options: WebhooksPanelOptions): ElysiaWebhooksHandler {\n const handler = createFetchHandler(options);\n const fn = ((request: Request) => handler.fetch(request)) as ElysiaWebhooksHandler;\n fn.core = handler.core;\n fn.dispatcher = handler.dispatcher;\n fn.openapi = handler.openapi;\n return fn;\n}\n\n/** Options for {@link webhooksElysia}. */\nexport interface WebhooksElysiaOptions extends WebhooksPanelOptions {\n /** Mount prefix; also used as the panel basePath. Default `\"/webhooks\"`. */\n prefix?: string;\n}\n\nconst appParams = t.Object({ app: t.String() });\nconst endpointParams = t.Object({ app: t.String(), id: t.String() });\nconst nameParams = t.Object({ name: t.String() });\n\n/**\n * Typed Elysia plugin exposing the admin API so the **Eden** client can call it\n * with full path/method/param typing (`edenClient.webhooks.api.applications.get()`).\n * Routes are declared for the typed surface; every handler delegates to the\n * shared fetch pipeline (auth, authorization, portal scoping, error mapping\n * reused). A catch-all also serves the bundled UI.\n */\nexport function webhooksElysia(options: WebhooksElysiaOptions) {\n const prefix = options.prefix ?? \"/webhooks\";\n const handler = createFetchHandler({ ...options, basePath: options.basePath ?? prefix });\n\n // Elysia parses the body for declared routes, draining the stream; rebuild the\n // Request from the parsed body before delegating (mirrors the Express adapter).\n const pass = (ctx: { request: Request; body?: unknown }): Promise<Response> => {\n const r = ctx.request;\n if (ctx.body != null && (r.method === \"POST\" || r.method === \"PUT\")) {\n return handler.fetch(\n new Request(r.url, {\n method: r.method,\n headers: r.headers,\n body: JSON.stringify(ctx.body),\n }),\n );\n }\n return handler.fetch(r);\n };\n\n const app = \"/api/applications/:app\";\n const endpoint = `${app}/endpoints/:id`;\n\n return new Elysia({ prefix, name: \"xtandard-webhooks\" })\n .get(\"/config\", pass)\n .get(\"/api/openapi.json\", pass)\n .get(\"/api/event-types.json\", pass)\n .get(\"/api/applications\", pass)\n .post(\"/api/applications\", pass, {\n body: t.Object({\n key: t.String(),\n name: t.Optional(t.String()),\n metadata: t.Optional(t.Any()),\n }),\n })\n .get(app, pass, { params: appParams })\n .put(app, pass, { params: appParams, body: t.Any() })\n .delete(app, pass, { params: appParams })\n .get(\"/api/event-types\", pass)\n .post(\"/api/event-types\", pass, {\n body: t.Object({\n name: t.String(),\n description: t.Optional(t.String()),\n groupName: t.Optional(t.String()),\n schema: t.Optional(t.Any()),\n deprecated: t.Optional(t.Boolean()),\n }),\n })\n .get(\"/api/event-types/:name\", pass, { params: nameParams })\n .put(\"/api/event-types/:name\", pass, { params: nameParams, body: t.Any() })\n .delete(\"/api/event-types/:name\", pass, { params: nameParams })\n .get(`${app}/endpoints`, pass, { params: appParams })\n .post(`${app}/endpoints`, pass, {\n params: appParams,\n body: t.Object({\n url: t.String(),\n description: t.Optional(t.String()),\n eventTypes: t.Optional(t.Array(t.String())),\n headers: t.Optional(t.Record(t.String(), t.String())),\n metadata: t.Optional(t.Any()),\n disabled: t.Optional(t.Boolean()),\n }),\n })\n .get(endpoint, pass, { params: endpointParams })\n .put(endpoint, pass, { params: endpointParams, body: t.Any() })\n .delete(endpoint, pass, { params: endpointParams })\n .get(`${endpoint}/secret`, pass, { params: endpointParams })\n .post(`${endpoint}/rotate-secret`, pass, { params: endpointParams })\n .post(`${endpoint}/enable`, pass, { params: endpointParams })\n .post(`${endpoint}/disable`, pass, { params: endpointParams })\n .post(`${endpoint}/test`, pass, {\n params: endpointParams,\n body: t.Object({ eventType: t.String(), payload: t.Optional(t.Any()) }),\n })\n .post(`${endpoint}/recover`, pass, {\n params: endpointParams,\n body: t.Object({ since: t.String() }),\n })\n .get(`${app}/messages`, pass, { params: appParams })\n .post(`${app}/messages`, pass, {\n params: appParams,\n body: t.Object({\n eventType: t.String(),\n payload: t.Any(),\n timestamp: t.Optional(t.String()),\n idempotencyKey: t.Optional(t.String()),\n }),\n })\n .get(`${app}/messages/:id`, pass, { params: endpointParams })\n .get(`${app}/deliveries`, pass, { params: appParams })\n .get(`${app}/deliveries/:id`, pass, { params: endpointParams })\n .post(`${app}/deliveries/:id/retry`, pass, { params: endpointParams })\n .get(`${app}/audit`, pass, { params: appParams })\n .all(\"/*\", pass); // bundled UI assets + SPA fallback\n}\n\nexport type { WebhooksPanelOptions };\n"],"mappings":"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"}