@geekity/cms 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +870 -0
  3. package/admin/layouts/_flash.njk +5 -0
  4. package/admin/layouts/base.njk +27 -0
  5. package/admin/layouts/dashboard.njk +78 -0
  6. package/admin/layouts/document-conflict.njk +49 -0
  7. package/admin/layouts/document-editor.njk +167 -0
  8. package/admin/layouts/document-list.njk +92 -0
  9. package/admin/layouts/federation.njk +145 -0
  10. package/admin/layouts/login.njk +23 -0
  11. package/admin/layouts/placeholder.njk +10 -0
  12. package/admin/layouts/settings.njk +116 -0
  13. package/admin/layouts/setup.njk +27 -0
  14. package/admin/layouts/shell.njk +37 -0
  15. package/admin/layouts/users.njk +91 -0
  16. package/admin/static/admin.css +726 -0
  17. package/admin/static/editor.js +30 -0
  18. package/dist/admin/assets.d.ts +26 -0
  19. package/dist/admin/assets.d.ts.map +1 -0
  20. package/dist/admin/assets.js +38 -0
  21. package/dist/admin/assets.js.map +1 -0
  22. package/dist/admin/credentials.d.ts +28 -0
  23. package/dist/admin/credentials.d.ts.map +1 -0
  24. package/dist/admin/credentials.js +39 -0
  25. package/dist/admin/credentials.js.map +1 -0
  26. package/dist/admin/documents.d.ts +134 -0
  27. package/dist/admin/documents.d.ts.map +1 -0
  28. package/dist/admin/documents.js +613 -0
  29. package/dist/admin/documents.js.map +1 -0
  30. package/dist/admin/federation.d.ts +194 -0
  31. package/dist/admin/federation.d.ts.map +1 -0
  32. package/dist/admin/federation.js +299 -0
  33. package/dist/admin/federation.js.map +1 -0
  34. package/dist/admin/flash.d.ts +24 -0
  35. package/dist/admin/flash.d.ts.map +1 -0
  36. package/dist/admin/flash.js +31 -0
  37. package/dist/admin/flash.js.map +1 -0
  38. package/dist/admin/index.d.ts +23 -0
  39. package/dist/admin/index.d.ts.map +1 -0
  40. package/dist/admin/index.js +15 -0
  41. package/dist/admin/index.js.map +1 -0
  42. package/dist/admin/passwords.d.ts +49 -0
  43. package/dist/admin/passwords.d.ts.map +1 -0
  44. package/dist/admin/passwords.js +122 -0
  45. package/dist/admin/passwords.js.map +1 -0
  46. package/dist/admin/preview.d.ts +18 -0
  47. package/dist/admin/preview.d.ts.map +1 -0
  48. package/dist/admin/preview.js +83 -0
  49. package/dist/admin/preview.js.map +1 -0
  50. package/dist/admin/routes.d.ts +54 -0
  51. package/dist/admin/routes.d.ts.map +1 -0
  52. package/dist/admin/routes.js +383 -0
  53. package/dist/admin/routes.js.map +1 -0
  54. package/dist/admin/session.d.ts +44 -0
  55. package/dist/admin/session.d.ts.map +1 -0
  56. package/dist/admin/session.js +69 -0
  57. package/dist/admin/session.js.map +1 -0
  58. package/dist/admin/settings.d.ts +194 -0
  59. package/dist/admin/settings.d.ts.map +1 -0
  60. package/dist/admin/settings.js +470 -0
  61. package/dist/admin/settings.js.map +1 -0
  62. package/dist/admin/store.d.ts +407 -0
  63. package/dist/admin/store.d.ts.map +1 -0
  64. package/dist/admin/store.js +704 -0
  65. package/dist/admin/store.js.map +1 -0
  66. package/dist/admin/templates.d.ts +36 -0
  67. package/dist/admin/templates.d.ts.map +1 -0
  68. package/dist/admin/templates.js +43 -0
  69. package/dist/admin/templates.js.map +1 -0
  70. package/dist/admin/uploads.d.ts +96 -0
  71. package/dist/admin/uploads.d.ts.map +1 -0
  72. package/dist/admin/uploads.js +179 -0
  73. package/dist/admin/uploads.js.map +1 -0
  74. package/dist/admin/users.d.ts +95 -0
  75. package/dist/admin/users.d.ts.map +1 -0
  76. package/dist/admin/users.js +233 -0
  77. package/dist/admin/users.js.map +1 -0
  78. package/dist/cli.d.ts +85 -0
  79. package/dist/cli.d.ts.map +1 -0
  80. package/dist/cli.js +424 -0
  81. package/dist/cli.js.map +1 -0
  82. package/dist/config.d.ts +172 -0
  83. package/dist/config.d.ts.map +1 -0
  84. package/dist/config.js +184 -0
  85. package/dist/config.js.map +1 -0
  86. package/dist/content/document.d.ts +66 -0
  87. package/dist/content/document.d.ts.map +1 -0
  88. package/dist/content/document.js +13 -0
  89. package/dist/content/document.js.map +1 -0
  90. package/dist/content/index.d.ts +17 -0
  91. package/dist/content/index.d.ts.map +1 -0
  92. package/dist/content/index.js +10 -0
  93. package/dist/content/index.js.map +1 -0
  94. package/dist/content/markdown.d.ts +3 -0
  95. package/dist/content/markdown.d.ts.map +1 -0
  96. package/dist/content/markdown.js +39 -0
  97. package/dist/content/markdown.js.map +1 -0
  98. package/dist/content/media.d.ts +65 -0
  99. package/dist/content/media.d.ts.map +1 -0
  100. package/dist/content/media.js +143 -0
  101. package/dist/content/media.js.map +1 -0
  102. package/dist/content/parser.d.ts +24 -0
  103. package/dist/content/parser.d.ts.map +1 -0
  104. package/dist/content/parser.js +165 -0
  105. package/dist/content/parser.js.map +1 -0
  106. package/dist/content/save.d.ts +60 -0
  107. package/dist/content/save.d.ts.map +1 -0
  108. package/dist/content/save.js +103 -0
  109. package/dist/content/save.js.map +1 -0
  110. package/dist/content/slug.d.ts +25 -0
  111. package/dist/content/slug.d.ts.map +1 -0
  112. package/dist/content/slug.js +75 -0
  113. package/dist/content/slug.js.map +1 -0
  114. package/dist/content/store.d.ts +133 -0
  115. package/dist/content/store.d.ts.map +1 -0
  116. package/dist/content/store.js +411 -0
  117. package/dist/content/store.js.map +1 -0
  118. package/dist/content/sync.d.ts +146 -0
  119. package/dist/content/sync.d.ts.map +1 -0
  120. package/dist/content/sync.js +421 -0
  121. package/dist/content/sync.js.map +1 -0
  122. package/dist/content/writer.d.ts +37 -0
  123. package/dist/content/writer.d.ts.map +1 -0
  124. package/dist/content/writer.js +97 -0
  125. package/dist/content/writer.js.map +1 -0
  126. package/dist/env.d.ts +48 -0
  127. package/dist/env.d.ts.map +1 -0
  128. package/dist/env.js +2 -0
  129. package/dist/env.js.map +1 -0
  130. package/dist/federation/actor.d.ts +55 -0
  131. package/dist/federation/actor.d.ts.map +1 -0
  132. package/dist/federation/actor.js +101 -0
  133. package/dist/federation/actor.js.map +1 -0
  134. package/dist/federation/article.d.ts +83 -0
  135. package/dist/federation/article.d.ts.map +1 -0
  136. package/dist/federation/article.js +169 -0
  137. package/dist/federation/article.js.map +1 -0
  138. package/dist/federation/delivery.d.ts +90 -0
  139. package/dist/federation/delivery.d.ts.map +1 -0
  140. package/dist/federation/delivery.js +289 -0
  141. package/dist/federation/delivery.js.map +1 -0
  142. package/dist/federation/federation.d.ts +75 -0
  143. package/dist/federation/federation.d.ts.map +1 -0
  144. package/dist/federation/federation.js +190 -0
  145. package/dist/federation/federation.js.map +1 -0
  146. package/dist/federation/followers.d.ts +43 -0
  147. package/dist/federation/followers.d.ts.map +1 -0
  148. package/dist/federation/followers.js +69 -0
  149. package/dist/federation/followers.js.map +1 -0
  150. package/dist/federation/inbox.d.ts +68 -0
  151. package/dist/federation/inbox.d.ts.map +1 -0
  152. package/dist/federation/inbox.js +171 -0
  153. package/dist/federation/inbox.js.map +1 -0
  154. package/dist/federation/index.d.ts +14 -0
  155. package/dist/federation/index.d.ts.map +1 -0
  156. package/dist/federation/index.js +10 -0
  157. package/dist/federation/index.js.map +1 -0
  158. package/dist/federation/keys.d.ts +27 -0
  159. package/dist/federation/keys.d.ts.map +1 -0
  160. package/dist/federation/keys.js +60 -0
  161. package/dist/federation/keys.js.map +1 -0
  162. package/dist/federation/mount.d.ts +23 -0
  163. package/dist/federation/mount.d.ts.map +1 -0
  164. package/dist/federation/mount.js +71 -0
  165. package/dist/federation/mount.js.map +1 -0
  166. package/dist/federation/paths.d.ts +85 -0
  167. package/dist/federation/paths.d.ts.map +1 -0
  168. package/dist/federation/paths.js +97 -0
  169. package/dist/federation/paths.js.map +1 -0
  170. package/dist/index.d.ts +106 -0
  171. package/dist/index.d.ts.map +1 -0
  172. package/dist/index.js +148 -0
  173. package/dist/index.js.map +1 -0
  174. package/dist/init.d.ts +71 -0
  175. package/dist/init.d.ts.map +1 -0
  176. package/dist/init.js +125 -0
  177. package/dist/init.js.map +1 -0
  178. package/dist/web/assets.d.ts +65 -0
  179. package/dist/web/assets.d.ts.map +1 -0
  180. package/dist/web/assets.js +152 -0
  181. package/dist/web/assets.js.map +1 -0
  182. package/dist/web/context.d.ts +121 -0
  183. package/dist/web/context.d.ts.map +1 -0
  184. package/dist/web/context.js +112 -0
  185. package/dist/web/context.js.map +1 -0
  186. package/dist/web/documents.d.ts +28 -0
  187. package/dist/web/documents.d.ts.map +1 -0
  188. package/dist/web/documents.js +39 -0
  189. package/dist/web/documents.js.map +1 -0
  190. package/dist/web/feeds.d.ts +122 -0
  191. package/dist/web/feeds.d.ts.map +1 -0
  192. package/dist/web/feeds.js +229 -0
  193. package/dist/web/feeds.js.map +1 -0
  194. package/dist/web/index.d.ts +17 -0
  195. package/dist/web/index.d.ts.map +1 -0
  196. package/dist/web/index.js +10 -0
  197. package/dist/web/index.js.map +1 -0
  198. package/dist/web/negotiate.d.ts +219 -0
  199. package/dist/web/negotiate.d.ts.map +1 -0
  200. package/dist/web/negotiate.js +409 -0
  201. package/dist/web/negotiate.js.map +1 -0
  202. package/dist/web/pagination.d.ts +48 -0
  203. package/dist/web/pagination.d.ts.map +1 -0
  204. package/dist/web/pagination.js +30 -0
  205. package/dist/web/pagination.js.map +1 -0
  206. package/dist/web/render.d.ts +72 -0
  207. package/dist/web/render.d.ts.map +1 -0
  208. package/dist/web/render.js +73 -0
  209. package/dist/web/render.js.map +1 -0
  210. package/dist/web/routes.d.ts +31 -0
  211. package/dist/web/routes.d.ts.map +1 -0
  212. package/dist/web/routes.js +366 -0
  213. package/dist/web/routes.js.map +1 -0
  214. package/dist/web/templates.d.ts +34 -0
  215. package/dist/web/templates.d.ts.map +1 -0
  216. package/dist/web/templates.js +106 -0
  217. package/dist/web/templates.js.map +1 -0
  218. package/package.json +68 -0
  219. package/templates/site/content/_data/site.json +8 -0
  220. package/templates/site/content/pages/about.md +11 -0
  221. package/templates/site/content/pages/pages.json +3 -0
  222. package/templates/site/content/posts/2026-01-01-hello-world.md +34 -0
  223. package/templates/site/content/posts/posts.json +4 -0
  224. package/templates/site/geekity.config.ts +11 -0
  225. package/templates/site/gitignore +3 -0
  226. package/templates/site/server.ts +20 -0
  227. package/templates/site/tsconfig.json +18 -0
  228. package/themes/default/README.md +148 -0
  229. package/themes/default/layouts/404.njk +9 -0
  230. package/themes/default/layouts/base.njk +59 -0
  231. package/themes/default/layouts/home.njk +9 -0
  232. package/themes/default/layouts/page.njk +13 -0
  233. package/themes/default/layouts/post.njk +30 -0
  234. package/themes/default/layouts/tag.njk +19 -0
  235. package/themes/default/partials/pagination.njk +14 -0
  236. package/themes/default/partials/post-list.njk +24 -0
  237. package/themes/default/partials/tags.njk +12 -0
  238. package/themes/default/static/style.css +327 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/admin/settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,407 @@
1
+ /** Where {@link openAdminStore} puts, and finds, its tables. */
2
+ export interface OpenAdminStoreOptions {
3
+ /** Directory the database lives in. Created if it is missing. */
4
+ dataDir: string;
5
+ }
6
+ /** An admin user. There is one role, so there is no role column. */
7
+ export interface User {
8
+ /** Row id, stable for the life of the user. */
9
+ readonly id: number;
10
+ /** Login name, unique and compared case sensitively. */
11
+ readonly username: string;
12
+ /** When the user was created, as an ISO 8601 instant. */
13
+ readonly createdAt: string;
14
+ }
15
+ /** A user with the column no screen may render: its password hash. */
16
+ export interface StoredUser extends User {
17
+ /** The PHC-encoded argon2id hash. */
18
+ readonly passwordHash: string;
19
+ }
20
+ /** What {@link AdminStore.createUser} is given. */
21
+ export interface CreateUserInput {
22
+ username: string;
23
+ /** The plain password. It is hashed on the way in and never stored. */
24
+ password: string;
25
+ }
26
+ /**
27
+ * A login, or the anonymous session that carries a CSRF token to a visitor who
28
+ * has not logged in yet.
29
+ */
30
+ export interface Session {
31
+ /** 256 random bits, hex encoded. This is the value in the cookie. */
32
+ readonly id: string;
33
+ /** The user, or `null` while the session is anonymous. */
34
+ readonly userId: number | null;
35
+ /**
36
+ * The token every mutating form on this session has to send back. It is a
37
+ * second secret rather than the session id, so a token that leaks through a
38
+ * form, a log or a referrer is not a login.
39
+ */
40
+ readonly csrfToken: string;
41
+ /** When the session was created, as an ISO 8601 instant. */
42
+ readonly createdAt: string;
43
+ /** When it stops being valid, as an ISO 8601 instant. */
44
+ readonly expiresAt: string;
45
+ }
46
+ /** How loudly a flash message reads. */
47
+ export type FlashKind = 'notice' | 'error';
48
+ /**
49
+ * One message queued for the next page a session asks for.
50
+ *
51
+ * Flashes live on the session row rather than in a cookie so they cannot be
52
+ * replayed, forged or grown past a cookie's size, and so they disappear with
53
+ * the session.
54
+ */
55
+ export interface FlashMessage {
56
+ /** Which style the message renders in. */
57
+ kind: FlashKind;
58
+ /** The message itself, in plain text. Templates escape it. */
59
+ message: string;
60
+ }
61
+ /** What {@link AdminStore.createSession} is given. */
62
+ export interface CreateSessionInput {
63
+ /** The user logging in, or `null` for the pre-login CSRF session. */
64
+ userId: number | null;
65
+ /** How long the session lasts, in seconds. */
66
+ lifetimeSeconds: number;
67
+ /** The clock, injectable so expiry is testable. Defaults to now. */
68
+ now?: Date | undefined;
69
+ }
70
+ /** How long a session id is, in bytes. 32 is the 256 bits doc-5 asks for. */
71
+ export declare const SESSION_ID_BYTES = 32;
72
+ /**
73
+ * The two signature algorithms doc-4 asks a site actor to hold.
74
+ *
75
+ * `RSASSA-PKCS1-v1_5` signs HTTP Signatures, which is what Mastodon and most
76
+ * of the fediverse verify; `Ed25519` signs FEP-8b32 object integrity proofs.
77
+ * They are Fedify's own spellings, so a row round-trips into
78
+ * `generateCryptoKeyPair` without translation.
79
+ */
80
+ export declare const ACTOR_KEY_ALGORITHMS: readonly ['RSASSA-PKCS1-v1_5', 'Ed25519'];
81
+ /** One of {@link ACTOR_KEY_ALGORITHMS}. */
82
+ export type ActorKeyAlgorithm = (typeof ACTOR_KEY_ALGORITHMS)[number];
83
+ /** A stored actor key pair, both halves as serialized JWK. */
84
+ export interface ActorKey {
85
+ /**
86
+ * Which actor the pair belongs to. The site actor's identifier is a
87
+ * constant, not the handle, so renaming the handle does not orphan the keys.
88
+ */
89
+ readonly identifier: string;
90
+ /** Which algorithm the pair is for. */
91
+ readonly algorithm: ActorKeyAlgorithm;
92
+ /** The private key as JWK, JSON encoded. Never leaves the server. */
93
+ readonly privateJwk: string;
94
+ /** The public key as JWK, JSON encoded. This is what the actor publishes. */
95
+ readonly publicJwk: string;
96
+ /** When the pair was generated, as an ISO 8601 instant. */
97
+ readonly createdAt: string;
98
+ }
99
+ /** An {@link ActorKey} before the store has stamped it with a creation time. */
100
+ export type NewActorKey = Omit<ActorKey, 'createdAt'>;
101
+ /**
102
+ * A remote actor that follows this site.
103
+ *
104
+ * doc-4 keeps the followers in SQLite rather than in Fedify's KV store,
105
+ * because they are the one thing an ActivityPub site cannot regenerate: an
106
+ * actor that followed and was forgotten never hears from the site again and
107
+ * has no way of noticing. The display columns are a copy of what the actor
108
+ * said about itself when it followed, so the admin can list its followers
109
+ * without dereferencing every one of them.
110
+ */
111
+ export interface Follower {
112
+ /** The follower's ActivityStreams id, which is what identifies it. */
113
+ readonly actorId: string;
114
+ /** Where an activity addressed to this follower is delivered. */
115
+ readonly inboxId: string;
116
+ /**
117
+ * The follower's instance-wide inbox, when it published one. Delivering one
118
+ * activity to a shared inbox reaches every follower on that instance, so it
119
+ * is what keeps a popular post from becoming a thousand POSTs.
120
+ */
121
+ readonly sharedInboxId: string | null;
122
+ /** `@name@host`, as the follower's own instance spells it, or `null`. */
123
+ readonly handle: string | null;
124
+ /** The display name the actor published, or `null`. */
125
+ readonly name: string | null;
126
+ /** The actor's avatar, or `null`. */
127
+ readonly iconUrl: string | null;
128
+ /** The actor's profile page, for a human following the link, or `null`. */
129
+ readonly url: string | null;
130
+ /** When the follow arrived, as an ISO 8601 instant. */
131
+ readonly followedAt: string;
132
+ }
133
+ /**
134
+ * A {@link Follower} on its way in.
135
+ *
136
+ * `followedAt` is optional and defaults to now; naming one is what makes an
137
+ * import — or a test — able to say when a follow really happened.
138
+ */
139
+ export type NewFollower = Omit<Follower, 'followedAt'> & {
140
+ followedAt?: string | undefined;
141
+ };
142
+ /** How {@link AdminStore.listFollowers} and its inbox-log sibling page. */
143
+ export interface ListPageOptions {
144
+ /** Largest number of rows to return. Everything, when it is not given. */
145
+ limit?: number | undefined;
146
+ /** How many rows to skip first. Zero when it is not given. */
147
+ offset?: number | undefined;
148
+ }
149
+ /**
150
+ * One activity that arrived in the inbox and was recorded rather than acted
151
+ * on: doc-4's `Like`, `Announce` and `Create(Note)` reply, and the follow
152
+ * traffic alongside them.
153
+ *
154
+ * The raw JSON-LD is kept whole because a later phase surfaces likes, boosts
155
+ * and comments, and what that phase needs out of an activity is not knowable
156
+ * from here.
157
+ */
158
+ export interface InboxActivity {
159
+ /** Row id, and the order activities arrived in. */
160
+ readonly id: number;
161
+ /** The activity's own id, or `null` for one that arrived without one. */
162
+ readonly activityId: string | null;
163
+ /** The compacted ActivityStreams type name, such as `Like` or `Announce`. */
164
+ readonly activityType: string;
165
+ /** Who sent it. */
166
+ readonly actorId: string;
167
+ /** What it was about — the post that was liked, the note replied to — or `null`. */
168
+ readonly objectId: string | null;
169
+ /** When it arrived, as an ISO 8601 instant. */
170
+ readonly receivedAt: string;
171
+ /** The activity as compacted JSON-LD, exactly as it was received. */
172
+ readonly json: string;
173
+ }
174
+ /** An {@link InboxActivity} before the store has given it a row and a time. */
175
+ export type NewInboxActivity = Omit<InboxActivity, 'id' | 'receivedAt'>;
176
+ /**
177
+ * One activity this site sent, kept whole so it can be sent again.
178
+ *
179
+ * decision-5 accepts that an activity queued when the process exits is lost,
180
+ * on the understanding that the outcome is recorded per follower and that an
181
+ * admin can re-send. Re-sending needs the activity itself, and rebuilding one
182
+ * from the content directory is not always possible — a `Delete` is about a
183
+ * post that is no longer there — so the compacted JSON-LD is stored as it went
184
+ * out.
185
+ */
186
+ export interface OutboundActivity {
187
+ /** The activity's own id, which is what a redelivery is asked for by. */
188
+ readonly activityId: string;
189
+ /** `Create`, `Update` or `Delete`. */
190
+ readonly activityType: string;
191
+ /** The ActivityStreams id of the post the activity is about. */
192
+ readonly objectId: string;
193
+ /** The post's slug when the activity was built, for a human reading the log. */
194
+ readonly slug: string | null;
195
+ /** When the activity was first built, as an ISO 8601 instant. */
196
+ readonly createdAt: string;
197
+ /** The activity as compacted JSON-LD, exactly as it was delivered. */
198
+ readonly json: string;
199
+ }
200
+ /** An {@link OutboundActivity} before the store has timed it. */
201
+ export type NewOutboundActivity = Omit<OutboundActivity, 'createdAt'> & {
202
+ createdAt?: string | undefined;
203
+ };
204
+ /** How one delivery of one activity to one follower ended. */
205
+ export declare const DELIVERY_STATUSES: readonly ['sent', 'queued', 'failed'];
206
+ /**
207
+ * One of {@link DELIVERY_STATUSES}.
208
+ *
209
+ * `sent` is a POST the follower's server accepted. `queued` is one handed to
210
+ * Fedify's outbox queue, which is as much as a site running with a queue can
211
+ * know from the call: the queue retries out of band and does not report back.
212
+ * `failed` is a delivery that threw, with the reason in the row.
213
+ */
214
+ export type DeliveryStatus = (typeof DELIVERY_STATUSES)[number];
215
+ /** How one attempt to deliver one activity to one follower ended. */
216
+ export interface Delivery {
217
+ /** Which activity was delivered. */
218
+ readonly activityId: string;
219
+ /** Which follower it was delivered to. */
220
+ readonly actorId: string;
221
+ /** The inbox actually used, which is the shared one when the follower has one. */
222
+ readonly inboxId: string;
223
+ /** How it went. */
224
+ readonly status: DeliveryStatus;
225
+ /** Why it failed, or `null`. */
226
+ readonly error: string | null;
227
+ /** When the attempt was made, as an ISO 8601 instant. */
228
+ readonly attemptedAt: string;
229
+ }
230
+ /** A {@link Delivery} before the store has timed it. */
231
+ export type NewDelivery = Omit<Delivery, 'attemptedAt'> & {
232
+ attemptedAt?: string | undefined;
233
+ };
234
+ /**
235
+ * The auth half of the SQLite database: the data doc-1 says lives only there.
236
+ *
237
+ * It is deliberately not part of the {@link ContentStore}. That store is the
238
+ * derived index over the Markdown files and can be deleted and rebuilt at any
239
+ * time; users and sessions are the one thing in the database that cannot. They
240
+ * share the file (one database per site, one set of migrations on boot) and
241
+ * nothing else.
242
+ */
243
+ export interface AdminStore {
244
+ /** Absolute path of the SQLite file, the same one the content index uses. */
245
+ readonly file: string;
246
+ /** How many users exist. Zero is what puts the admin into first-run setup. */
247
+ countUsers(): number;
248
+ /** Every user, by name, without password hashes. */
249
+ listUsers(): User[];
250
+ /** One user with its password hash, or `undefined`. For auth, not for screens. */
251
+ getUser(username: string): StoredUser | undefined;
252
+ /** The user behind a session's `userId`, or `undefined`. */
253
+ getUserById(id: number): User | undefined;
254
+ /**
255
+ * Hash the password and insert the user.
256
+ *
257
+ * Throws {@link DuplicateUsernameError} when the name is taken.
258
+ */
259
+ createUser(input: CreateUserInput): User;
260
+ /**
261
+ * The user, when the password is theirs; `undefined` when it is not, or when
262
+ * there is no such user. The two failures are deliberately indistinguishable.
263
+ */
264
+ verifyPassword(username: string, password: string): User | undefined;
265
+ /**
266
+ * Hash a new password and put it on a user, replacing the old one. Returns
267
+ * `false` when there is no such user. Sessions are left alone; deciding
268
+ * which of them a password change should end is the caller's business.
269
+ */
270
+ setPassword(userId: number, password: string): boolean;
271
+ /**
272
+ * Delete a user. Their sessions go with them, because the foreign key
273
+ * cascades. Returns `false` when there was nothing to delete.
274
+ */
275
+ deleteUser(userId: number): boolean;
276
+ /** Start a session and hand back its id and CSRF token. */
277
+ createSession(input: CreateSessionInput): Session;
278
+ /**
279
+ * The session behind an id, or `undefined` when there is none or it has
280
+ * expired. An expired row is deleted on the way past, so an expired session
281
+ * is gone rather than merely ignored.
282
+ */
283
+ getSession(id: string, now?: Date): Session | undefined;
284
+ /** Delete a session. Returns `false` when there was nothing to delete. */
285
+ deleteSession(id: string): boolean;
286
+ /**
287
+ * End every session a user has, optionally sparing one. Returns how many
288
+ * went.
289
+ *
290
+ * `except` is what makes a password change sign out every other browser
291
+ * holding that login without signing out the one doing the changing.
292
+ */
293
+ deleteSessionsForUser(userId: number, options?: {
294
+ except?: string;
295
+ }): number;
296
+ /**
297
+ * How many settings are stored. Zero on a site that has never saved the
298
+ * settings form, which is what decides whether to seed from
299
+ * `content/_data/site.json`.
300
+ */
301
+ countSettings(): number;
302
+ /**
303
+ * Every stored setting, by key. The store keeps no opinion about what the
304
+ * keys mean or what they are worth; `readSiteSettings` in `settings.ts` is
305
+ * what turns them into a typed shape with defaults.
306
+ */
307
+ allSettings(): Record<string, string>;
308
+ /**
309
+ * Write settings, in one transaction, leaving keys not named alone. An
310
+ * existing key is replaced.
311
+ */
312
+ setSettings(values: Record<string, string>): void;
313
+ /**
314
+ * Every key pair an actor holds, in {@link ACTOR_KEY_ALGORITHMS} order, so a
315
+ * caller handing them to Fedify gets HTTP Signatures first whatever order
316
+ * they were written in. Empty on a site that has not federated yet.
317
+ */
318
+ listActorKeys(identifier: string): ActorKey[];
319
+ /**
320
+ * Store one key pair, replacing whatever that actor held for the same
321
+ * algorithm. Rotating a key is therefore a write rather than a migration.
322
+ */
323
+ putActorKey(key: NewActorKey): ActorKey;
324
+ /** How many actors follow the site. What the followers collection counts. */
325
+ countFollowers(): number;
326
+ /**
327
+ * Followers, newest follow first, optionally one page of them.
328
+ *
329
+ * Newest first matches the outbox, and means the collection's first page is
330
+ * the followers a human is most likely to be looking for. A follow that
331
+ * arrives while somebody is walking the collection shifts the pages under
332
+ * them by one, which is the same trade the outbox makes.
333
+ */
334
+ listFollowers(options?: ListPageOptions): Follower[];
335
+ /** One follower by actor id, or `undefined`. */
336
+ getFollower(actorId: string): Follower | undefined;
337
+ /**
338
+ * Store a follower, replacing whatever was known about that actor. The
339
+ * original `followedAt` is kept, because a repeat `Follow` from an actor
340
+ * that already follows is a redelivery rather than a new follow.
341
+ */
342
+ putFollower(follower: NewFollower): Follower;
343
+ /** Forget a follower. Returns `false` when there was nothing to forget. */
344
+ deleteFollower(actorId: string): boolean;
345
+ /** How many activities the inbound log holds. */
346
+ countInboxActivities(): number;
347
+ /** Logged activities, newest first, optionally one page of them. */
348
+ listInboxActivities(options?: ListPageOptions): InboxActivity[];
349
+ /**
350
+ * Record an inbound activity, replacing an earlier row with the same
351
+ * activity id so a redelivered `Like` stays one like. An activity that
352
+ * arrived without an id is always a new row: there is nothing to match it
353
+ * against.
354
+ */
355
+ logInboxActivity(activity: NewInboxActivity): InboxActivity;
356
+ /** How many activities this site has sent. */
357
+ countOutboundActivities(): number;
358
+ /** Activities this site sent, newest first, optionally one page of them. */
359
+ listOutboundActivities(options?: ListPageOptions): OutboundActivity[];
360
+ /** One sent activity by its id, or `undefined`. */
361
+ getOutboundActivity(activityId: string): OutboundActivity | undefined;
362
+ /**
363
+ * Record an activity on its way out, leaving the original `created_at` alone
364
+ * so a redelivery does not pretend the activity is new.
365
+ */
366
+ putOutboundActivity(activity: NewOutboundActivity): OutboundActivity;
367
+ /**
368
+ * Record how one delivery to one follower ended, replacing the previous
369
+ * outcome for that pair: the table answers "where does this activity stand
370
+ * with each follower", which a redelivery moves rather than adds to.
371
+ */
372
+ recordDelivery(delivery: NewDelivery): Delivery;
373
+ /** Every follower's outcome for one activity, in follower order. */
374
+ listDeliveries(activityId: string): Delivery[];
375
+ /** How many followers this activity stands at each status with. */
376
+ countDeliveriesByStatus(activityId: string): Record<DeliveryStatus, number>;
377
+ /** Delete every expired session. Returns how many went. */
378
+ pruneSessions(now?: Date): number;
379
+ /**
380
+ * Queue a message for the next page this session asks for. Does nothing when
381
+ * there is no such session, which is what a logout followed by a flash is.
382
+ */
383
+ pushFlash(sessionId: string, entry: FlashMessage): void;
384
+ /**
385
+ * Every queued message for a session, in order, removed as it is read, so a
386
+ * flash survives exactly one page and no more.
387
+ */
388
+ takeFlash(sessionId: string): FlashMessage[];
389
+ /** Close the database. Safe to call twice. */
390
+ close(): void;
391
+ }
392
+ /** Thrown when a username is already taken. Usernames are the login key. */
393
+ export declare class DuplicateUsernameError extends Error {
394
+ readonly name = "DuplicateUsernameError";
395
+ /** The name that was already in use. */
396
+ readonly username: string;
397
+ constructor(username: string);
398
+ }
399
+ /**
400
+ * Open (and if needed create) the admin tables in `dataDir`, applying every
401
+ * migration the package ships. Applying them is idempotent.
402
+ *
403
+ * The connection is its own; SQLite in WAL mode is happy with the content
404
+ * index holding a second one on the same file.
405
+ */
406
+ export declare function openAdminStore(options: OpenAdminStoreOptions): AdminStore;
407
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/admin/store.ts"],"names":[],"mappings":"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"}