@we8/cms 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 (304) hide show
  1. package/README.md +78 -0
  2. package/dist/auth/auth.d.ts +87 -0
  3. package/dist/auth/auth.d.ts.map +1 -0
  4. package/dist/auth/auth.js +90 -0
  5. package/dist/auth/auth.js.map +1 -0
  6. package/dist/auth/routes.admin.d.ts +22 -0
  7. package/dist/auth/routes.admin.d.ts.map +1 -0
  8. package/dist/auth/routes.admin.js +106 -0
  9. package/dist/auth/routes.admin.js.map +1 -0
  10. package/dist/auth/schema.d.ts +1395 -0
  11. package/dist/auth/schema.d.ts.map +1 -0
  12. package/dist/auth/schema.js +76 -0
  13. package/dist/auth/schema.js.map +1 -0
  14. package/dist/env.d.ts +64 -0
  15. package/dist/env.d.ts.map +1 -0
  16. package/dist/env.js +48 -0
  17. package/dist/env.js.map +1 -0
  18. package/dist/index.d.ts +22 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +170 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/keys/middleware.d.ts +54 -0
  23. package/dist/keys/middleware.d.ts.map +1 -0
  24. package/dist/keys/middleware.js +84 -0
  25. package/dist/keys/middleware.js.map +1 -0
  26. package/dist/keys/routes.admin.d.ts +16 -0
  27. package/dist/keys/routes.admin.d.ts.map +1 -0
  28. package/dist/keys/routes.admin.js +34 -0
  29. package/dist/keys/routes.admin.js.map +1 -0
  30. package/dist/keys/service.d.ts +36 -0
  31. package/dist/keys/service.d.ts.map +1 -0
  32. package/dist/keys/service.js +120 -0
  33. package/dist/keys/service.js.map +1 -0
  34. package/dist/lib/bots.d.ts +24 -0
  35. package/dist/lib/bots.d.ts.map +1 -0
  36. package/dist/lib/bots.js +79 -0
  37. package/dist/lib/bots.js.map +1 -0
  38. package/dist/lib/email.d.ts +62 -0
  39. package/dist/lib/email.d.ts.map +1 -0
  40. package/dist/lib/email.js +64 -0
  41. package/dist/lib/email.js.map +1 -0
  42. package/dist/lib/errors.d.ts +12 -0
  43. package/dist/lib/errors.d.ts.map +1 -0
  44. package/dist/lib/errors.js +23 -0
  45. package/dist/lib/errors.js.map +1 -0
  46. package/dist/lib/notify.d.ts +20 -0
  47. package/dist/lib/notify.d.ts.map +1 -0
  48. package/dist/lib/notify.js +60 -0
  49. package/dist/lib/notify.js.map +1 -0
  50. package/dist/lib/retention.d.ts +15 -0
  51. package/dist/lib/retention.d.ts.map +1 -0
  52. package/dist/lib/retention.js +40 -0
  53. package/dist/lib/retention.js.map +1 -0
  54. package/dist/lib/sanitize.d.ts +14 -0
  55. package/dist/lib/sanitize.d.ts.map +1 -0
  56. package/dist/lib/sanitize.js +145 -0
  57. package/dist/lib/sanitize.js.map +1 -0
  58. package/dist/lib/turnstile.d.ts +7 -0
  59. package/dist/lib/turnstile.d.ts.map +1 -0
  60. package/dist/lib/turnstile.js +32 -0
  61. package/dist/lib/turnstile.js.map +1 -0
  62. package/dist/lib/validate.d.ts +11 -0
  63. package/dist/lib/validate.d.ts.map +1 -0
  64. package/dist/lib/validate.js +22 -0
  65. package/dist/lib/validate.js.map +1 -0
  66. package/dist/lib/word-count.d.ts +7 -0
  67. package/dist/lib/word-count.d.ts.map +1 -0
  68. package/dist/lib/word-count.js +14 -0
  69. package/dist/lib/word-count.js.map +1 -0
  70. package/dist/middleware/auth.d.ts +46 -0
  71. package/dist/middleware/auth.d.ts.map +1 -0
  72. package/dist/middleware/auth.js +60 -0
  73. package/dist/middleware/auth.js.map +1 -0
  74. package/dist/middleware/cors.d.ts +33 -0
  75. package/dist/middleware/cors.d.ts.map +1 -0
  76. package/dist/middleware/cors.js +55 -0
  77. package/dist/middleware/cors.js.map +1 -0
  78. package/dist/middleware/module-gate.d.ts +11 -0
  79. package/dist/middleware/module-gate.d.ts.map +1 -0
  80. package/dist/middleware/module-gate.js +18 -0
  81. package/dist/middleware/module-gate.js.map +1 -0
  82. package/dist/middleware/rate-limit.d.ts +13 -0
  83. package/dist/middleware/rate-limit.d.ts.map +1 -0
  84. package/dist/middleware/rate-limit.js +30 -0
  85. package/dist/middleware/rate-limit.js.map +1 -0
  86. package/dist/middleware/request-id.d.ts +8 -0
  87. package/dist/middleware/request-id.d.ts.map +1 -0
  88. package/dist/middleware/request-id.js +11 -0
  89. package/dist/middleware/request-id.js.map +1 -0
  90. package/dist/modules/aeo/checks.d.ts +41 -0
  91. package/dist/modules/aeo/checks.d.ts.map +1 -0
  92. package/dist/modules/aeo/checks.js +127 -0
  93. package/dist/modules/aeo/checks.js.map +1 -0
  94. package/dist/modules/aeo/llms.d.ts +24 -0
  95. package/dist/modules/aeo/llms.d.ts.map +1 -0
  96. package/dist/modules/aeo/llms.js +92 -0
  97. package/dist/modules/aeo/llms.js.map +1 -0
  98. package/dist/modules/aeo/routes.admin.d.ts +12 -0
  99. package/dist/modules/aeo/routes.admin.d.ts.map +1 -0
  100. package/dist/modules/aeo/routes.admin.js +37 -0
  101. package/dist/modules/aeo/routes.admin.js.map +1 -0
  102. package/dist/modules/analytics/db.d.ts +24 -0
  103. package/dist/modules/analytics/db.d.ts.map +1 -0
  104. package/dist/modules/analytics/db.js +24 -0
  105. package/dist/modules/analytics/db.js.map +1 -0
  106. package/dist/modules/analytics/routes.admin.d.ts +6 -0
  107. package/dist/modules/analytics/routes.admin.d.ts.map +1 -0
  108. package/dist/modules/analytics/routes.admin.js +21 -0
  109. package/dist/modules/analytics/routes.admin.js.map +1 -0
  110. package/dist/modules/analytics/routes.public.d.ts +6 -0
  111. package/dist/modules/analytics/routes.public.d.ts.map +1 -0
  112. package/dist/modules/analytics/routes.public.js +33 -0
  113. package/dist/modules/analytics/routes.public.js.map +1 -0
  114. package/dist/modules/analytics/service.d.ts +16 -0
  115. package/dist/modules/analytics/service.d.ts.map +1 -0
  116. package/dist/modules/analytics/service.js +148 -0
  117. package/dist/modules/analytics/service.js.map +1 -0
  118. package/dist/modules/authors/routes.admin.d.ts +6 -0
  119. package/dist/modules/authors/routes.admin.d.ts.map +1 -0
  120. package/dist/modules/authors/routes.admin.js +29 -0
  121. package/dist/modules/authors/routes.admin.js.map +1 -0
  122. package/dist/modules/authors/routes.public.d.ts +6 -0
  123. package/dist/modules/authors/routes.public.d.ts.map +1 -0
  124. package/dist/modules/authors/routes.public.js +11 -0
  125. package/dist/modules/authors/routes.public.js.map +1 -0
  126. package/dist/modules/authors/service.d.ts +26 -0
  127. package/dist/modules/authors/service.d.ts.map +1 -0
  128. package/dist/modules/authors/service.js +116 -0
  129. package/dist/modules/authors/service.js.map +1 -0
  130. package/dist/modules/content/db.d.ts +127 -0
  131. package/dist/modules/content/db.d.ts.map +1 -0
  132. package/dist/modules/content/db.js +203 -0
  133. package/dist/modules/content/db.js.map +1 -0
  134. package/dist/modules/content/publish.d.ts +38 -0
  135. package/dist/modules/content/publish.d.ts.map +1 -0
  136. package/dist/modules/content/publish.js +184 -0
  137. package/dist/modules/content/publish.js.map +1 -0
  138. package/dist/modules/content/routes.admin.d.ts +8 -0
  139. package/dist/modules/content/routes.admin.d.ts.map +1 -0
  140. package/dist/modules/content/routes.admin.js +122 -0
  141. package/dist/modules/content/routes.admin.js.map +1 -0
  142. package/dist/modules/content/routes.public.d.ts +6 -0
  143. package/dist/modules/content/routes.public.d.ts.map +1 -0
  144. package/dist/modules/content/routes.public.js +56 -0
  145. package/dist/modules/content/routes.public.js.map +1 -0
  146. package/dist/modules/content/service.d.ts +137 -0
  147. package/dist/modules/content/service.d.ts.map +1 -0
  148. package/dist/modules/content/service.js +348 -0
  149. package/dist/modules/content/service.js.map +1 -0
  150. package/dist/modules/forms/db.d.ts +42 -0
  151. package/dist/modules/forms/db.d.ts.map +1 -0
  152. package/dist/modules/forms/db.js +62 -0
  153. package/dist/modules/forms/db.js.map +1 -0
  154. package/dist/modules/forms/forms-routes.admin.d.ts +6 -0
  155. package/dist/modules/forms/forms-routes.admin.d.ts.map +1 -0
  156. package/dist/modules/forms/forms-routes.admin.js +37 -0
  157. package/dist/modules/forms/forms-routes.admin.js.map +1 -0
  158. package/dist/modules/forms/forms-service.d.ts +18 -0
  159. package/dist/modules/forms/forms-service.d.ts.map +1 -0
  160. package/dist/modules/forms/forms-service.js +121 -0
  161. package/dist/modules/forms/forms-service.js.map +1 -0
  162. package/dist/modules/forms/routes.public.d.ts +6 -0
  163. package/dist/modules/forms/routes.public.d.ts.map +1 -0
  164. package/dist/modules/forms/routes.public.js +41 -0
  165. package/dist/modules/forms/routes.public.js.map +1 -0
  166. package/dist/modules/forms/submissions-routes.admin.d.ts +6 -0
  167. package/dist/modules/forms/submissions-routes.admin.d.ts.map +1 -0
  168. package/dist/modules/forms/submissions-routes.admin.js +46 -0
  169. package/dist/modules/forms/submissions-routes.admin.js.map +1 -0
  170. package/dist/modules/forms/submissions-service.d.ts +45 -0
  171. package/dist/modules/forms/submissions-service.d.ts.map +1 -0
  172. package/dist/modules/forms/submissions-service.js +174 -0
  173. package/dist/modules/forms/submissions-service.js.map +1 -0
  174. package/dist/modules/media/db.d.ts +15 -0
  175. package/dist/modules/media/db.d.ts.map +1 -0
  176. package/dist/modules/media/db.js +24 -0
  177. package/dist/modules/media/db.js.map +1 -0
  178. package/dist/modules/media/routes.admin.d.ts +6 -0
  179. package/dist/modules/media/routes.admin.d.ts.map +1 -0
  180. package/dist/modules/media/routes.admin.js +30 -0
  181. package/dist/modules/media/routes.admin.js.map +1 -0
  182. package/dist/modules/media/routes.public.d.ts +6 -0
  183. package/dist/modules/media/routes.public.d.ts.map +1 -0
  184. package/dist/modules/media/routes.public.js +35 -0
  185. package/dist/modules/media/routes.public.js.map +1 -0
  186. package/dist/modules/media/service.d.ts +32 -0
  187. package/dist/modules/media/service.d.ts.map +1 -0
  188. package/dist/modules/media/service.js +99 -0
  189. package/dist/modules/media/service.js.map +1 -0
  190. package/dist/modules/openapi/spec.d.ts +21 -0
  191. package/dist/modules/openapi/spec.d.ts.map +1 -0
  192. package/dist/modules/openapi/spec.js +468 -0
  193. package/dist/modules/openapi/spec.js.map +1 -0
  194. package/dist/modules/seo/jsonld.d.ts +25 -0
  195. package/dist/modules/seo/jsonld.d.ts.map +1 -0
  196. package/dist/modules/seo/jsonld.js +67 -0
  197. package/dist/modules/seo/jsonld.js.map +1 -0
  198. package/dist/modules/seo/routes.public.d.ts +6 -0
  199. package/dist/modules/seo/routes.public.d.ts.map +1 -0
  200. package/dist/modules/seo/routes.public.js +39 -0
  201. package/dist/modules/seo/routes.public.js.map +1 -0
  202. package/dist/modules/seo/sitemap.d.ts +3 -0
  203. package/dist/modules/seo/sitemap.d.ts.map +1 -0
  204. package/dist/modules/seo/sitemap.js +39 -0
  205. package/dist/modules/seo/sitemap.js.map +1 -0
  206. package/dist/modules/settings/routes.admin.d.ts +12 -0
  207. package/dist/modules/settings/routes.admin.d.ts.map +1 -0
  208. package/dist/modules/settings/routes.admin.js +27 -0
  209. package/dist/modules/settings/routes.admin.js.map +1 -0
  210. package/dist/modules/site-documents/routes.admin.d.ts +10 -0
  211. package/dist/modules/site-documents/routes.admin.d.ts.map +1 -0
  212. package/dist/modules/site-documents/routes.admin.js +29 -0
  213. package/dist/modules/site-documents/routes.admin.js.map +1 -0
  214. package/dist/modules/site-documents/routes.public.d.ts +6 -0
  215. package/dist/modules/site-documents/routes.public.d.ts.map +1 -0
  216. package/dist/modules/site-documents/routes.public.js +16 -0
  217. package/dist/modules/site-documents/routes.public.js.map +1 -0
  218. package/dist/modules/site-documents/service.d.ts +11 -0
  219. package/dist/modules/site-documents/service.d.ts.map +1 -0
  220. package/dist/modules/site-documents/service.js +42 -0
  221. package/dist/modules/site-documents/service.js.map +1 -0
  222. package/dist/modules/webhooks/dispatch.d.ts +14 -0
  223. package/dist/modules/webhooks/dispatch.d.ts.map +1 -0
  224. package/dist/modules/webhooks/dispatch.js +84 -0
  225. package/dist/modules/webhooks/dispatch.js.map +1 -0
  226. package/dist/shared/constants.d.ts +79 -0
  227. package/dist/shared/constants.d.ts.map +1 -0
  228. package/dist/shared/constants.js +89 -0
  229. package/dist/shared/constants.js.map +1 -0
  230. package/dist/shared/envelope.d.ts +37 -0
  231. package/dist/shared/envelope.d.ts.map +1 -0
  232. package/dist/shared/envelope.js +46 -0
  233. package/dist/shared/envelope.js.map +1 -0
  234. package/dist/shared/hash.d.ts +2 -0
  235. package/dist/shared/hash.d.ts.map +1 -0
  236. package/dist/shared/hash.js +8 -0
  237. package/dist/shared/hash.js.map +1 -0
  238. package/dist/shared/index.d.ts +13 -0
  239. package/dist/shared/index.d.ts.map +1 -0
  240. package/dist/shared/index.js +13 -0
  241. package/dist/shared/index.js.map +1 -0
  242. package/dist/shared/schemas/aeo.d.ts +182 -0
  243. package/dist/shared/schemas/aeo.d.ts.map +1 -0
  244. package/dist/shared/schemas/aeo.js +43 -0
  245. package/dist/shared/schemas/aeo.js.map +1 -0
  246. package/dist/shared/schemas/analytics.d.ts +277 -0
  247. package/dist/shared/schemas/analytics.d.ts.map +1 -0
  248. package/dist/shared/schemas/analytics.js +74 -0
  249. package/dist/shared/schemas/analytics.js.map +1 -0
  250. package/dist/shared/schemas/api-key.d.ts +77 -0
  251. package/dist/shared/schemas/api-key.d.ts.map +1 -0
  252. package/dist/shared/schemas/api-key.js +27 -0
  253. package/dist/shared/schemas/api-key.js.map +1 -0
  254. package/dist/shared/schemas/author.d.ts +147 -0
  255. package/dist/shared/schemas/author.d.ts.map +1 -0
  256. package/dist/shared/schemas/author.js +27 -0
  257. package/dist/shared/schemas/author.js.map +1 -0
  258. package/dist/shared/schemas/form.d.ts +341 -0
  259. package/dist/shared/schemas/form.d.ts.map +1 -0
  260. package/dist/shared/schemas/form.js +117 -0
  261. package/dist/shared/schemas/form.js.map +1 -0
  262. package/dist/shared/schemas/index.d.ts +12 -0
  263. package/dist/shared/schemas/index.d.ts.map +1 -0
  264. package/dist/shared/schemas/index.js +12 -0
  265. package/dist/shared/schemas/index.js.map +1 -0
  266. package/dist/shared/schemas/media.d.ts +42 -0
  267. package/dist/shared/schemas/media.d.ts.map +1 -0
  268. package/dist/shared/schemas/media.js +16 -0
  269. package/dist/shared/schemas/media.js.map +1 -0
  270. package/dist/shared/schemas/pagination.d.ts +34 -0
  271. package/dist/shared/schemas/pagination.d.ts.map +1 -0
  272. package/dist/shared/schemas/pagination.js +21 -0
  273. package/dist/shared/schemas/pagination.js.map +1 -0
  274. package/dist/shared/schemas/post.d.ts +862 -0
  275. package/dist/shared/schemas/post.d.ts.map +1 -0
  276. package/dist/shared/schemas/post.js +187 -0
  277. package/dist/shared/schemas/post.js.map +1 -0
  278. package/dist/shared/schemas/settings.d.ts +839 -0
  279. package/dist/shared/schemas/settings.d.ts.map +1 -0
  280. package/dist/shared/schemas/settings.js +202 -0
  281. package/dist/shared/schemas/settings.js.map +1 -0
  282. package/dist/shared/schemas/site-document.d.ts +38 -0
  283. package/dist/shared/schemas/site-document.d.ts.map +1 -0
  284. package/dist/shared/schemas/site-document.js +21 -0
  285. package/dist/shared/schemas/site-document.js.map +1 -0
  286. package/dist/shared/schemas/webhook.d.ts +39 -0
  287. package/dist/shared/schemas/webhook.d.ts.map +1 -0
  288. package/dist/shared/schemas/webhook.js +20 -0
  289. package/dist/shared/schemas/webhook.js.map +1 -0
  290. package/dist/spa.d.ts +9 -0
  291. package/dist/spa.d.ts.map +1 -0
  292. package/dist/spa.js +57 -0
  293. package/dist/spa.js.map +1 -0
  294. package/migrations/0001_settings.sql +39 -0
  295. package/migrations/0002_content.sql +135 -0
  296. package/migrations/0003_forms.sql +35 -0
  297. package/migrations/0004_analytics.sql +42 -0
  298. package/migrations/0005_media.sql +17 -0
  299. package/migrations/0006_site_documents.sql +18 -0
  300. package/migrations/0007_auth.sql +81 -0
  301. package/migrations/0008_api_keys.sql +20 -0
  302. package/package.json +68 -0
  303. package/scripts/bundle-admin.mjs +54 -0
  304. package/seed/local.sql +63 -0
@@ -0,0 +1,862 @@
1
+ import { z } from 'zod';
2
+ export declare const postStatusSchema: z.ZodEnum<["draft", "published", "archived"]>;
3
+ export declare const postTypeSchema: z.ZodEnum<["blog", "article", "news", "research", "whitepaper", "case-study"]>;
4
+ export declare const ctaStyleSchema: z.ZodEnum<["link", "gated-download"]>;
5
+ /**
6
+ * Optional inline CTA, versioned with the post's content. "link"
7
+ * renders a plain button to `url`; "gated-download" embeds the referenced
8
+ * form and reveals `assetUrl` (a keyless media URL, the same public-URL
9
+ * convention as coverImageUrl/ogImageUrl) once the form submits
10
+ * successfully: thank-you-surface delivery, the mainstream v1, not DRM.
11
+ * Every field but `style`/`buttonLabel` stays optional at the object level
12
+ * so this is one flat shape matching the wire contract exactly; the
13
+ * style-specific requirement (a link needs a url, a gated download needs a
14
+ * form) is enforced by the refinements below instead of a discriminated
15
+ * union, since it's a single cross-field rule, not a structurally different
16
+ * shape per style.
17
+ */
18
+ export declare const ctaSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
19
+ style: z.ZodEnum<["link", "gated-download"]>;
20
+ heading: z.ZodOptional<z.ZodString>;
21
+ buttonLabel: z.ZodString;
22
+ url: z.ZodOptional<z.ZodString>;
23
+ formKey: z.ZodOptional<z.ZodString>;
24
+ assetUrl: z.ZodOptional<z.ZodString>;
25
+ }, "strip", z.ZodTypeAny, {
26
+ style: "link" | "gated-download";
27
+ buttonLabel: string;
28
+ url?: string | undefined;
29
+ heading?: string | undefined;
30
+ formKey?: string | undefined;
31
+ assetUrl?: string | undefined;
32
+ }, {
33
+ style: "link" | "gated-download";
34
+ buttonLabel: string;
35
+ url?: string | undefined;
36
+ heading?: string | undefined;
37
+ formKey?: string | undefined;
38
+ assetUrl?: string | undefined;
39
+ }>, {
40
+ style: "link" | "gated-download";
41
+ buttonLabel: string;
42
+ url?: string | undefined;
43
+ heading?: string | undefined;
44
+ formKey?: string | undefined;
45
+ assetUrl?: string | undefined;
46
+ }, {
47
+ style: "link" | "gated-download";
48
+ buttonLabel: string;
49
+ url?: string | undefined;
50
+ heading?: string | undefined;
51
+ formKey?: string | undefined;
52
+ assetUrl?: string | undefined;
53
+ }>, {
54
+ style: "link" | "gated-download";
55
+ buttonLabel: string;
56
+ url?: string | undefined;
57
+ heading?: string | undefined;
58
+ formKey?: string | undefined;
59
+ assetUrl?: string | undefined;
60
+ }, {
61
+ style: "link" | "gated-download";
62
+ buttonLabel: string;
63
+ url?: string | undefined;
64
+ heading?: string | undefined;
65
+ formKey?: string | undefined;
66
+ assetUrl?: string | undefined;
67
+ }>;
68
+ /** Editable content fields, shared by direct-draft edits and the post_drafts staging row. */
69
+ export declare const postContentInputSchema: z.ZodObject<{
70
+ title: z.ZodString;
71
+ slug: z.ZodString;
72
+ type: z.ZodDefault<z.ZodEnum<["blog", "article", "news", "research", "whitepaper", "case-study"]>>;
73
+ excerpt: z.ZodOptional<z.ZodString>;
74
+ content: z.ZodString;
75
+ coverImageUrl: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodLiteral<"">]>>;
76
+ category: z.ZodOptional<z.ZodString>;
77
+ tags: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
78
+ ogTitle: z.ZodOptional<z.ZodString>;
79
+ ogDescription: z.ZodOptional<z.ZodString>;
80
+ ogImageUrl: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodLiteral<"">]>>;
81
+ /**
82
+ * AEO (0.1): the answer an engine should be able to lift verbatim, written
83
+ * as one or two plain sentences that stand on their own without the rest of
84
+ * the page. Distinct from `excerpt`, which is a teaser meant to make a human
85
+ * click; this one is meant to be quoted instead of clicked. Versioned with
86
+ * the content like every other content field, served on the public post
87
+ * response, and fed into the generated llms.txt. "" clears, like the sibling
88
+ * string fields.
89
+ */
90
+ answerSummary: z.ZodOptional<z.ZodString>;
91
+ /**
92
+ * AEO (0.1): the question this content answers, phrased as a question
93
+ * ("How do I rotate an API key?"). Answer engines match on question shape,
94
+ * and a title written as a noun phrase gives them nothing to match; this
95
+ * carries the question form without forcing the display title into it.
96
+ */
97
+ questionHeading: z.ZodOptional<z.ZodString>;
98
+ authorIds: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
99
+ cta: z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodEffects<z.ZodObject<{
100
+ style: z.ZodEnum<["link", "gated-download"]>;
101
+ heading: z.ZodOptional<z.ZodString>;
102
+ buttonLabel: z.ZodString;
103
+ url: z.ZodOptional<z.ZodString>;
104
+ formKey: z.ZodOptional<z.ZodString>;
105
+ assetUrl: z.ZodOptional<z.ZodString>;
106
+ }, "strip", z.ZodTypeAny, {
107
+ style: "link" | "gated-download";
108
+ buttonLabel: string;
109
+ url?: string | undefined;
110
+ heading?: string | undefined;
111
+ formKey?: string | undefined;
112
+ assetUrl?: string | undefined;
113
+ }, {
114
+ style: "link" | "gated-download";
115
+ buttonLabel: string;
116
+ url?: string | undefined;
117
+ heading?: string | undefined;
118
+ formKey?: string | undefined;
119
+ assetUrl?: string | undefined;
120
+ }>, {
121
+ style: "link" | "gated-download";
122
+ buttonLabel: string;
123
+ url?: string | undefined;
124
+ heading?: string | undefined;
125
+ formKey?: string | undefined;
126
+ assetUrl?: string | undefined;
127
+ }, {
128
+ style: "link" | "gated-download";
129
+ buttonLabel: string;
130
+ url?: string | undefined;
131
+ heading?: string | undefined;
132
+ formKey?: string | undefined;
133
+ assetUrl?: string | undefined;
134
+ }>, {
135
+ style: "link" | "gated-download";
136
+ buttonLabel: string;
137
+ url?: string | undefined;
138
+ heading?: string | undefined;
139
+ formKey?: string | undefined;
140
+ assetUrl?: string | undefined;
141
+ }, {
142
+ style: "link" | "gated-download";
143
+ buttonLabel: string;
144
+ url?: string | undefined;
145
+ heading?: string | undefined;
146
+ formKey?: string | undefined;
147
+ assetUrl?: string | undefined;
148
+ }>>>;
149
+ }, "strip", z.ZodTypeAny, {
150
+ type: "blog" | "article" | "news" | "research" | "whitepaper" | "case-study";
151
+ slug: string;
152
+ title: string;
153
+ content: string;
154
+ tags: string[];
155
+ authorIds: string[];
156
+ excerpt?: string | undefined;
157
+ coverImageUrl?: string | undefined;
158
+ category?: string | undefined;
159
+ ogTitle?: string | undefined;
160
+ ogDescription?: string | undefined;
161
+ ogImageUrl?: string | undefined;
162
+ answerSummary?: string | undefined;
163
+ questionHeading?: string | undefined;
164
+ cta?: {
165
+ style: "link" | "gated-download";
166
+ buttonLabel: string;
167
+ url?: string | undefined;
168
+ heading?: string | undefined;
169
+ formKey?: string | undefined;
170
+ assetUrl?: string | undefined;
171
+ } | null | undefined;
172
+ }, {
173
+ slug: string;
174
+ title: string;
175
+ content: string;
176
+ type?: "blog" | "article" | "news" | "research" | "whitepaper" | "case-study" | undefined;
177
+ excerpt?: string | undefined;
178
+ coverImageUrl?: string | undefined;
179
+ category?: string | undefined;
180
+ tags?: string[] | undefined;
181
+ ogTitle?: string | undefined;
182
+ ogDescription?: string | undefined;
183
+ ogImageUrl?: string | undefined;
184
+ answerSummary?: string | undefined;
185
+ questionHeading?: string | undefined;
186
+ authorIds?: string[] | undefined;
187
+ cta?: {
188
+ style: "link" | "gated-download";
189
+ buttonLabel: string;
190
+ url?: string | undefined;
191
+ heading?: string | undefined;
192
+ formKey?: string | undefined;
193
+ assetUrl?: string | undefined;
194
+ } | null | undefined;
195
+ }>;
196
+ export declare const createPostInputSchema: z.ZodObject<{
197
+ title: z.ZodString;
198
+ slug: z.ZodString;
199
+ type: z.ZodDefault<z.ZodEnum<["blog", "article", "news", "research", "whitepaper", "case-study"]>>;
200
+ excerpt: z.ZodOptional<z.ZodString>;
201
+ content: z.ZodString;
202
+ coverImageUrl: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodLiteral<"">]>>;
203
+ category: z.ZodOptional<z.ZodString>;
204
+ tags: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
205
+ ogTitle: z.ZodOptional<z.ZodString>;
206
+ ogDescription: z.ZodOptional<z.ZodString>;
207
+ ogImageUrl: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodLiteral<"">]>>;
208
+ /**
209
+ * AEO (0.1): the answer an engine should be able to lift verbatim, written
210
+ * as one or two plain sentences that stand on their own without the rest of
211
+ * the page. Distinct from `excerpt`, which is a teaser meant to make a human
212
+ * click; this one is meant to be quoted instead of clicked. Versioned with
213
+ * the content like every other content field, served on the public post
214
+ * response, and fed into the generated llms.txt. "" clears, like the sibling
215
+ * string fields.
216
+ */
217
+ answerSummary: z.ZodOptional<z.ZodString>;
218
+ /**
219
+ * AEO (0.1): the question this content answers, phrased as a question
220
+ * ("How do I rotate an API key?"). Answer engines match on question shape,
221
+ * and a title written as a noun phrase gives them nothing to match; this
222
+ * carries the question form without forcing the display title into it.
223
+ */
224
+ questionHeading: z.ZodOptional<z.ZodString>;
225
+ authorIds: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
226
+ cta: z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodEffects<z.ZodObject<{
227
+ style: z.ZodEnum<["link", "gated-download"]>;
228
+ heading: z.ZodOptional<z.ZodString>;
229
+ buttonLabel: z.ZodString;
230
+ url: z.ZodOptional<z.ZodString>;
231
+ formKey: z.ZodOptional<z.ZodString>;
232
+ assetUrl: z.ZodOptional<z.ZodString>;
233
+ }, "strip", z.ZodTypeAny, {
234
+ style: "link" | "gated-download";
235
+ buttonLabel: string;
236
+ url?: string | undefined;
237
+ heading?: string | undefined;
238
+ formKey?: string | undefined;
239
+ assetUrl?: string | undefined;
240
+ }, {
241
+ style: "link" | "gated-download";
242
+ buttonLabel: string;
243
+ url?: string | undefined;
244
+ heading?: string | undefined;
245
+ formKey?: string | undefined;
246
+ assetUrl?: string | undefined;
247
+ }>, {
248
+ style: "link" | "gated-download";
249
+ buttonLabel: string;
250
+ url?: string | undefined;
251
+ heading?: string | undefined;
252
+ formKey?: string | undefined;
253
+ assetUrl?: string | undefined;
254
+ }, {
255
+ style: "link" | "gated-download";
256
+ buttonLabel: string;
257
+ url?: string | undefined;
258
+ heading?: string | undefined;
259
+ formKey?: string | undefined;
260
+ assetUrl?: string | undefined;
261
+ }>, {
262
+ style: "link" | "gated-download";
263
+ buttonLabel: string;
264
+ url?: string | undefined;
265
+ heading?: string | undefined;
266
+ formKey?: string | undefined;
267
+ assetUrl?: string | undefined;
268
+ }, {
269
+ style: "link" | "gated-download";
270
+ buttonLabel: string;
271
+ url?: string | undefined;
272
+ heading?: string | undefined;
273
+ formKey?: string | undefined;
274
+ assetUrl?: string | undefined;
275
+ }>>>;
276
+ }, "strip", z.ZodTypeAny, {
277
+ type: "blog" | "article" | "news" | "research" | "whitepaper" | "case-study";
278
+ slug: string;
279
+ title: string;
280
+ content: string;
281
+ tags: string[];
282
+ authorIds: string[];
283
+ excerpt?: string | undefined;
284
+ coverImageUrl?: string | undefined;
285
+ category?: string | undefined;
286
+ ogTitle?: string | undefined;
287
+ ogDescription?: string | undefined;
288
+ ogImageUrl?: string | undefined;
289
+ answerSummary?: string | undefined;
290
+ questionHeading?: string | undefined;
291
+ cta?: {
292
+ style: "link" | "gated-download";
293
+ buttonLabel: string;
294
+ url?: string | undefined;
295
+ heading?: string | undefined;
296
+ formKey?: string | undefined;
297
+ assetUrl?: string | undefined;
298
+ } | null | undefined;
299
+ }, {
300
+ slug: string;
301
+ title: string;
302
+ content: string;
303
+ type?: "blog" | "article" | "news" | "research" | "whitepaper" | "case-study" | undefined;
304
+ excerpt?: string | undefined;
305
+ coverImageUrl?: string | undefined;
306
+ category?: string | undefined;
307
+ tags?: string[] | undefined;
308
+ ogTitle?: string | undefined;
309
+ ogDescription?: string | undefined;
310
+ ogImageUrl?: string | undefined;
311
+ answerSummary?: string | undefined;
312
+ questionHeading?: string | undefined;
313
+ authorIds?: string[] | undefined;
314
+ cta?: {
315
+ style: "link" | "gated-download";
316
+ buttonLabel: string;
317
+ url?: string | undefined;
318
+ heading?: string | undefined;
319
+ formKey?: string | undefined;
320
+ assetUrl?: string | undefined;
321
+ } | null | undefined;
322
+ }>;
323
+ export declare const updatePostInputSchema: z.ZodObject<{
324
+ title: z.ZodOptional<z.ZodString>;
325
+ slug: z.ZodOptional<z.ZodString>;
326
+ type: z.ZodOptional<z.ZodDefault<z.ZodEnum<["blog", "article", "news", "research", "whitepaper", "case-study"]>>>;
327
+ excerpt: z.ZodOptional<z.ZodOptional<z.ZodString>>;
328
+ content: z.ZodOptional<z.ZodString>;
329
+ coverImageUrl: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodLiteral<"">]>>>;
330
+ category: z.ZodOptional<z.ZodOptional<z.ZodString>>;
331
+ tags: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodString, "many">>>;
332
+ ogTitle: z.ZodOptional<z.ZodOptional<z.ZodString>>;
333
+ ogDescription: z.ZodOptional<z.ZodOptional<z.ZodString>>;
334
+ ogImageUrl: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodLiteral<"">]>>>;
335
+ answerSummary: z.ZodOptional<z.ZodOptional<z.ZodString>>;
336
+ questionHeading: z.ZodOptional<z.ZodOptional<z.ZodString>>;
337
+ authorIds: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodString, "many">>>;
338
+ cta: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodEffects<z.ZodObject<{
339
+ style: z.ZodEnum<["link", "gated-download"]>;
340
+ heading: z.ZodOptional<z.ZodString>;
341
+ buttonLabel: z.ZodString;
342
+ url: z.ZodOptional<z.ZodString>;
343
+ formKey: z.ZodOptional<z.ZodString>;
344
+ assetUrl: z.ZodOptional<z.ZodString>;
345
+ }, "strip", z.ZodTypeAny, {
346
+ style: "link" | "gated-download";
347
+ buttonLabel: string;
348
+ url?: string | undefined;
349
+ heading?: string | undefined;
350
+ formKey?: string | undefined;
351
+ assetUrl?: string | undefined;
352
+ }, {
353
+ style: "link" | "gated-download";
354
+ buttonLabel: string;
355
+ url?: string | undefined;
356
+ heading?: string | undefined;
357
+ formKey?: string | undefined;
358
+ assetUrl?: string | undefined;
359
+ }>, {
360
+ style: "link" | "gated-download";
361
+ buttonLabel: string;
362
+ url?: string | undefined;
363
+ heading?: string | undefined;
364
+ formKey?: string | undefined;
365
+ assetUrl?: string | undefined;
366
+ }, {
367
+ style: "link" | "gated-download";
368
+ buttonLabel: string;
369
+ url?: string | undefined;
370
+ heading?: string | undefined;
371
+ formKey?: string | undefined;
372
+ assetUrl?: string | undefined;
373
+ }>, {
374
+ style: "link" | "gated-download";
375
+ buttonLabel: string;
376
+ url?: string | undefined;
377
+ heading?: string | undefined;
378
+ formKey?: string | undefined;
379
+ assetUrl?: string | undefined;
380
+ }, {
381
+ style: "link" | "gated-download";
382
+ buttonLabel: string;
383
+ url?: string | undefined;
384
+ heading?: string | undefined;
385
+ formKey?: string | undefined;
386
+ assetUrl?: string | undefined;
387
+ }>>>>;
388
+ }, "strip", z.ZodTypeAny, {
389
+ type?: "blog" | "article" | "news" | "research" | "whitepaper" | "case-study" | undefined;
390
+ slug?: string | undefined;
391
+ title?: string | undefined;
392
+ excerpt?: string | undefined;
393
+ content?: string | undefined;
394
+ coverImageUrl?: string | undefined;
395
+ category?: string | undefined;
396
+ tags?: string[] | undefined;
397
+ ogTitle?: string | undefined;
398
+ ogDescription?: string | undefined;
399
+ ogImageUrl?: string | undefined;
400
+ answerSummary?: string | undefined;
401
+ questionHeading?: string | undefined;
402
+ authorIds?: string[] | undefined;
403
+ cta?: {
404
+ style: "link" | "gated-download";
405
+ buttonLabel: string;
406
+ url?: string | undefined;
407
+ heading?: string | undefined;
408
+ formKey?: string | undefined;
409
+ assetUrl?: string | undefined;
410
+ } | null | undefined;
411
+ }, {
412
+ type?: "blog" | "article" | "news" | "research" | "whitepaper" | "case-study" | undefined;
413
+ slug?: string | undefined;
414
+ title?: string | undefined;
415
+ excerpt?: string | undefined;
416
+ content?: string | undefined;
417
+ coverImageUrl?: string | undefined;
418
+ category?: string | undefined;
419
+ tags?: string[] | undefined;
420
+ ogTitle?: string | undefined;
421
+ ogDescription?: string | undefined;
422
+ ogImageUrl?: string | undefined;
423
+ answerSummary?: string | undefined;
424
+ questionHeading?: string | undefined;
425
+ authorIds?: string[] | undefined;
426
+ cta?: {
427
+ style: "link" | "gated-download";
428
+ buttonLabel: string;
429
+ url?: string | undefined;
430
+ heading?: string | undefined;
431
+ formKey?: string | undefined;
432
+ assetUrl?: string | undefined;
433
+ } | null | undefined;
434
+ }>;
435
+ export declare const publishInputSchema: z.ZodObject<{
436
+ note: z.ZodOptional<z.ZodString>;
437
+ }, "strip", z.ZodTypeAny, {
438
+ note?: string | undefined;
439
+ }, {
440
+ note?: string | undefined;
441
+ }>;
442
+ export declare const rollbackInputSchema: z.ZodObject<{
443
+ version: z.ZodNumber;
444
+ }, "strip", z.ZodTypeAny, {
445
+ version: number;
446
+ }, {
447
+ version: number;
448
+ }>;
449
+ export declare const postRecordSchema: z.ZodObject<{
450
+ id: z.ZodString;
451
+ slug: z.ZodString;
452
+ type: z.ZodEnum<["blog", "article", "news", "research", "whitepaper", "case-study"]>;
453
+ title: z.ZodString;
454
+ excerpt: z.ZodNullable<z.ZodString>;
455
+ content: z.ZodString;
456
+ coverImageUrl: z.ZodNullable<z.ZodString>;
457
+ category: z.ZodNullable<z.ZodString>;
458
+ tags: z.ZodArray<z.ZodString, "many">;
459
+ status: z.ZodEnum<["draft", "published", "archived"]>;
460
+ ogTitle: z.ZodNullable<z.ZodString>;
461
+ ogDescription: z.ZodNullable<z.ZodString>;
462
+ ogImageUrl: z.ZodNullable<z.ZodString>;
463
+ answerSummary: z.ZodNullable<z.ZodString>;
464
+ questionHeading: z.ZodNullable<z.ZodString>;
465
+ cta: z.ZodNullable<z.ZodEffects<z.ZodEffects<z.ZodObject<{
466
+ style: z.ZodEnum<["link", "gated-download"]>;
467
+ heading: z.ZodOptional<z.ZodString>;
468
+ buttonLabel: z.ZodString;
469
+ url: z.ZodOptional<z.ZodString>;
470
+ formKey: z.ZodOptional<z.ZodString>;
471
+ assetUrl: z.ZodOptional<z.ZodString>;
472
+ }, "strip", z.ZodTypeAny, {
473
+ style: "link" | "gated-download";
474
+ buttonLabel: string;
475
+ url?: string | undefined;
476
+ heading?: string | undefined;
477
+ formKey?: string | undefined;
478
+ assetUrl?: string | undefined;
479
+ }, {
480
+ style: "link" | "gated-download";
481
+ buttonLabel: string;
482
+ url?: string | undefined;
483
+ heading?: string | undefined;
484
+ formKey?: string | undefined;
485
+ assetUrl?: string | undefined;
486
+ }>, {
487
+ style: "link" | "gated-download";
488
+ buttonLabel: string;
489
+ url?: string | undefined;
490
+ heading?: string | undefined;
491
+ formKey?: string | undefined;
492
+ assetUrl?: string | undefined;
493
+ }, {
494
+ style: "link" | "gated-download";
495
+ buttonLabel: string;
496
+ url?: string | undefined;
497
+ heading?: string | undefined;
498
+ formKey?: string | undefined;
499
+ assetUrl?: string | undefined;
500
+ }>, {
501
+ style: "link" | "gated-download";
502
+ buttonLabel: string;
503
+ url?: string | undefined;
504
+ heading?: string | undefined;
505
+ formKey?: string | undefined;
506
+ assetUrl?: string | undefined;
507
+ }, {
508
+ style: "link" | "gated-download";
509
+ buttonLabel: string;
510
+ url?: string | undefined;
511
+ heading?: string | undefined;
512
+ formKey?: string | undefined;
513
+ assetUrl?: string | undefined;
514
+ }>>;
515
+ currentVersionId: z.ZodNullable<z.ZodString>;
516
+ currentVersionNumber: z.ZodNullable<z.ZodNumber>;
517
+ viewCount: z.ZodNumber;
518
+ likeCount: z.ZodNumber;
519
+ wordCount: z.ZodNullable<z.ZodNumber>;
520
+ publishedAt: z.ZodNullable<z.ZodString>;
521
+ createdAt: z.ZodString;
522
+ updatedAt: z.ZodString;
523
+ hasPendingDraft: z.ZodOptional<z.ZodBoolean>;
524
+ /**
525
+ * Only populated by the single-post admin fetch (getPostAdmin), which the
526
+ * editor screen needs to pre-populate its author multi-select. Omitted
527
+ * from list responses (listPostsAdmin) to avoid an N+1 post_authors
528
+ * lookup per row on a screen that doesn't display authors anyway.
529
+ */
530
+ authorIds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
531
+ }, "strip", z.ZodTypeAny, {
532
+ type: "blog" | "article" | "news" | "research" | "whitepaper" | "case-study";
533
+ status: "draft" | "published" | "archived";
534
+ slug: string;
535
+ id: string;
536
+ createdAt: string;
537
+ updatedAt: string;
538
+ title: string;
539
+ excerpt: string | null;
540
+ content: string;
541
+ coverImageUrl: string | null;
542
+ category: string | null;
543
+ tags: string[];
544
+ ogTitle: string | null;
545
+ ogDescription: string | null;
546
+ ogImageUrl: string | null;
547
+ answerSummary: string | null;
548
+ questionHeading: string | null;
549
+ cta: {
550
+ style: "link" | "gated-download";
551
+ buttonLabel: string;
552
+ url?: string | undefined;
553
+ heading?: string | undefined;
554
+ formKey?: string | undefined;
555
+ assetUrl?: string | undefined;
556
+ } | null;
557
+ currentVersionId: string | null;
558
+ currentVersionNumber: number | null;
559
+ viewCount: number;
560
+ likeCount: number;
561
+ wordCount: number | null;
562
+ publishedAt: string | null;
563
+ authorIds?: string[] | undefined;
564
+ hasPendingDraft?: boolean | undefined;
565
+ }, {
566
+ type: "blog" | "article" | "news" | "research" | "whitepaper" | "case-study";
567
+ status: "draft" | "published" | "archived";
568
+ slug: string;
569
+ id: string;
570
+ createdAt: string;
571
+ updatedAt: string;
572
+ title: string;
573
+ excerpt: string | null;
574
+ content: string;
575
+ coverImageUrl: string | null;
576
+ category: string | null;
577
+ tags: string[];
578
+ ogTitle: string | null;
579
+ ogDescription: string | null;
580
+ ogImageUrl: string | null;
581
+ answerSummary: string | null;
582
+ questionHeading: string | null;
583
+ cta: {
584
+ style: "link" | "gated-download";
585
+ buttonLabel: string;
586
+ url?: string | undefined;
587
+ heading?: string | undefined;
588
+ formKey?: string | undefined;
589
+ assetUrl?: string | undefined;
590
+ } | null;
591
+ currentVersionId: string | null;
592
+ currentVersionNumber: number | null;
593
+ viewCount: number;
594
+ likeCount: number;
595
+ wordCount: number | null;
596
+ publishedAt: string | null;
597
+ authorIds?: string[] | undefined;
598
+ hasPendingDraft?: boolean | undefined;
599
+ }>;
600
+ export declare const postVersionRecordSchema: z.ZodObject<{
601
+ id: z.ZodString;
602
+ postId: z.ZodString;
603
+ version: z.ZodNumber;
604
+ title: z.ZodString;
605
+ excerpt: z.ZodNullable<z.ZodString>;
606
+ content: z.ZodString;
607
+ coverImageUrl: z.ZodNullable<z.ZodString>;
608
+ category: z.ZodNullable<z.ZodString>;
609
+ tags: z.ZodArray<z.ZodString, "many">;
610
+ ogTitle: z.ZodNullable<z.ZodString>;
611
+ ogDescription: z.ZodNullable<z.ZodString>;
612
+ ogImageUrl: z.ZodNullable<z.ZodString>;
613
+ answerSummary: z.ZodNullable<z.ZodString>;
614
+ questionHeading: z.ZodNullable<z.ZodString>;
615
+ cta: z.ZodNullable<z.ZodEffects<z.ZodEffects<z.ZodObject<{
616
+ style: z.ZodEnum<["link", "gated-download"]>;
617
+ heading: z.ZodOptional<z.ZodString>;
618
+ buttonLabel: z.ZodString;
619
+ url: z.ZodOptional<z.ZodString>;
620
+ formKey: z.ZodOptional<z.ZodString>;
621
+ assetUrl: z.ZodOptional<z.ZodString>;
622
+ }, "strip", z.ZodTypeAny, {
623
+ style: "link" | "gated-download";
624
+ buttonLabel: string;
625
+ url?: string | undefined;
626
+ heading?: string | undefined;
627
+ formKey?: string | undefined;
628
+ assetUrl?: string | undefined;
629
+ }, {
630
+ style: "link" | "gated-download";
631
+ buttonLabel: string;
632
+ url?: string | undefined;
633
+ heading?: string | undefined;
634
+ formKey?: string | undefined;
635
+ assetUrl?: string | undefined;
636
+ }>, {
637
+ style: "link" | "gated-download";
638
+ buttonLabel: string;
639
+ url?: string | undefined;
640
+ heading?: string | undefined;
641
+ formKey?: string | undefined;
642
+ assetUrl?: string | undefined;
643
+ }, {
644
+ style: "link" | "gated-download";
645
+ buttonLabel: string;
646
+ url?: string | undefined;
647
+ heading?: string | undefined;
648
+ formKey?: string | undefined;
649
+ assetUrl?: string | undefined;
650
+ }>, {
651
+ style: "link" | "gated-download";
652
+ buttonLabel: string;
653
+ url?: string | undefined;
654
+ heading?: string | undefined;
655
+ formKey?: string | undefined;
656
+ assetUrl?: string | undefined;
657
+ }, {
658
+ style: "link" | "gated-download";
659
+ buttonLabel: string;
660
+ url?: string | undefined;
661
+ heading?: string | undefined;
662
+ formKey?: string | undefined;
663
+ assetUrl?: string | undefined;
664
+ }>>;
665
+ authorIds: z.ZodArray<z.ZodString, "many">;
666
+ wordCount: z.ZodNullable<z.ZodNumber>;
667
+ note: z.ZodNullable<z.ZodString>;
668
+ publishedAt: z.ZodString;
669
+ publishedBy: z.ZodNullable<z.ZodString>;
670
+ }, "strip", z.ZodTypeAny, {
671
+ id: string;
672
+ title: string;
673
+ excerpt: string | null;
674
+ content: string;
675
+ coverImageUrl: string | null;
676
+ category: string | null;
677
+ tags: string[];
678
+ ogTitle: string | null;
679
+ ogDescription: string | null;
680
+ ogImageUrl: string | null;
681
+ answerSummary: string | null;
682
+ questionHeading: string | null;
683
+ authorIds: string[];
684
+ cta: {
685
+ style: "link" | "gated-download";
686
+ buttonLabel: string;
687
+ url?: string | undefined;
688
+ heading?: string | undefined;
689
+ formKey?: string | undefined;
690
+ assetUrl?: string | undefined;
691
+ } | null;
692
+ note: string | null;
693
+ version: number;
694
+ wordCount: number | null;
695
+ publishedAt: string;
696
+ postId: string;
697
+ publishedBy: string | null;
698
+ }, {
699
+ id: string;
700
+ title: string;
701
+ excerpt: string | null;
702
+ content: string;
703
+ coverImageUrl: string | null;
704
+ category: string | null;
705
+ tags: string[];
706
+ ogTitle: string | null;
707
+ ogDescription: string | null;
708
+ ogImageUrl: string | null;
709
+ answerSummary: string | null;
710
+ questionHeading: string | null;
711
+ authorIds: string[];
712
+ cta: {
713
+ style: "link" | "gated-download";
714
+ buttonLabel: string;
715
+ url?: string | undefined;
716
+ heading?: string | undefined;
717
+ formKey?: string | undefined;
718
+ assetUrl?: string | undefined;
719
+ } | null;
720
+ note: string | null;
721
+ version: number;
722
+ wordCount: number | null;
723
+ publishedAt: string;
724
+ postId: string;
725
+ publishedBy: string | null;
726
+ }>;
727
+ export declare const postListQuerySchema: z.ZodObject<{
728
+ page: z.ZodDefault<z.ZodNumber>;
729
+ pageSize: z.ZodDefault<z.ZodNumber>;
730
+ } & {
731
+ tag: z.ZodOptional<z.ZodString>;
732
+ category: z.ZodOptional<z.ZodString>;
733
+ type: z.ZodOptional<z.ZodEnum<["blog", "article", "news", "research", "whitepaper", "case-study"]>>;
734
+ }, "strip", z.ZodTypeAny, {
735
+ page: number;
736
+ pageSize: number;
737
+ type?: "blog" | "article" | "news" | "research" | "whitepaper" | "case-study" | undefined;
738
+ category?: string | undefined;
739
+ tag?: string | undefined;
740
+ }, {
741
+ page?: number | undefined;
742
+ pageSize?: number | undefined;
743
+ type?: "blog" | "article" | "news" | "research" | "whitepaper" | "case-study" | undefined;
744
+ category?: string | undefined;
745
+ tag?: string | undefined;
746
+ }>;
747
+ export declare const versionStatsEntrySchema: z.ZodObject<{
748
+ versionNumber: z.ZodNullable<z.ZodNumber>;
749
+ viewCount: z.ZodNumber;
750
+ likeCount: z.ZodNumber;
751
+ }, "strip", z.ZodTypeAny, {
752
+ viewCount: number;
753
+ likeCount: number;
754
+ versionNumber: number | null;
755
+ }, {
756
+ viewCount: number;
757
+ likeCount: number;
758
+ versionNumber: number | null;
759
+ }>;
760
+ export declare const topPostEntrySchema: z.ZodObject<{
761
+ id: z.ZodString;
762
+ slug: z.ZodString;
763
+ title: z.ZodString;
764
+ type: z.ZodEnum<["blog", "article", "news", "research", "whitepaper", "case-study"]>;
765
+ status: z.ZodEnum<["draft", "published", "archived"]>;
766
+ viewCount: z.ZodNumber;
767
+ likeCount: z.ZodNumber;
768
+ publishedAt: z.ZodNullable<z.ZodString>;
769
+ }, "strip", z.ZodTypeAny, {
770
+ type: "blog" | "article" | "news" | "research" | "whitepaper" | "case-study";
771
+ status: "draft" | "published" | "archived";
772
+ slug: string;
773
+ id: string;
774
+ title: string;
775
+ viewCount: number;
776
+ likeCount: number;
777
+ publishedAt: string | null;
778
+ }, {
779
+ type: "blog" | "article" | "news" | "research" | "whitepaper" | "case-study";
780
+ status: "draft" | "published" | "archived";
781
+ slug: string;
782
+ id: string;
783
+ title: string;
784
+ viewCount: number;
785
+ likeCount: number;
786
+ publishedAt: string | null;
787
+ }>;
788
+ export declare const contentStatsSchema: z.ZodObject<{
789
+ totalViews: z.ZodNumber;
790
+ totalLikes: z.ZodNumber;
791
+ publishedCount: z.ZodNumber;
792
+ topPosts: z.ZodArray<z.ZodObject<{
793
+ id: z.ZodString;
794
+ slug: z.ZodString;
795
+ title: z.ZodString;
796
+ type: z.ZodEnum<["blog", "article", "news", "research", "whitepaper", "case-study"]>;
797
+ status: z.ZodEnum<["draft", "published", "archived"]>;
798
+ viewCount: z.ZodNumber;
799
+ likeCount: z.ZodNumber;
800
+ publishedAt: z.ZodNullable<z.ZodString>;
801
+ }, "strip", z.ZodTypeAny, {
802
+ type: "blog" | "article" | "news" | "research" | "whitepaper" | "case-study";
803
+ status: "draft" | "published" | "archived";
804
+ slug: string;
805
+ id: string;
806
+ title: string;
807
+ viewCount: number;
808
+ likeCount: number;
809
+ publishedAt: string | null;
810
+ }, {
811
+ type: "blog" | "article" | "news" | "research" | "whitepaper" | "case-study";
812
+ status: "draft" | "published" | "archived";
813
+ slug: string;
814
+ id: string;
815
+ title: string;
816
+ viewCount: number;
817
+ likeCount: number;
818
+ publishedAt: string | null;
819
+ }>, "many">;
820
+ }, "strip", z.ZodTypeAny, {
821
+ totalViews: number;
822
+ totalLikes: number;
823
+ publishedCount: number;
824
+ topPosts: {
825
+ type: "blog" | "article" | "news" | "research" | "whitepaper" | "case-study";
826
+ status: "draft" | "published" | "archived";
827
+ slug: string;
828
+ id: string;
829
+ title: string;
830
+ viewCount: number;
831
+ likeCount: number;
832
+ publishedAt: string | null;
833
+ }[];
834
+ }, {
835
+ totalViews: number;
836
+ totalLikes: number;
837
+ publishedCount: number;
838
+ topPosts: {
839
+ type: "blog" | "article" | "news" | "research" | "whitepaper" | "case-study";
840
+ status: "draft" | "published" | "archived";
841
+ slug: string;
842
+ id: string;
843
+ title: string;
844
+ viewCount: number;
845
+ likeCount: number;
846
+ publishedAt: string | null;
847
+ }[];
848
+ }>;
849
+ export type CtaStyle = z.infer<typeof ctaStyleSchema>;
850
+ export type Cta = z.infer<typeof ctaSchema>;
851
+ export type PostContentInput = z.infer<typeof postContentInputSchema>;
852
+ export type CreatePostInput = z.infer<typeof createPostInputSchema>;
853
+ export type UpdatePostInput = z.infer<typeof updatePostInputSchema>;
854
+ export type PublishInput = z.infer<typeof publishInputSchema>;
855
+ export type RollbackInput = z.infer<typeof rollbackInputSchema>;
856
+ export type PostRecord = z.infer<typeof postRecordSchema>;
857
+ export type PostVersionRecord = z.infer<typeof postVersionRecordSchema>;
858
+ export type VersionStatsEntry = z.infer<typeof versionStatsEntrySchema>;
859
+ export type PostListQuery = z.infer<typeof postListQuerySchema>;
860
+ export type TopPostEntry = z.infer<typeof topPostEntrySchema>;
861
+ export type ContentStats = z.infer<typeof contentStatsSchema>;
862
+ //# sourceMappingURL=post.d.ts.map