@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.
- package/LICENSE +21 -0
- package/README.md +870 -0
- package/admin/layouts/_flash.njk +5 -0
- package/admin/layouts/base.njk +27 -0
- package/admin/layouts/dashboard.njk +78 -0
- package/admin/layouts/document-conflict.njk +49 -0
- package/admin/layouts/document-editor.njk +167 -0
- package/admin/layouts/document-list.njk +92 -0
- package/admin/layouts/federation.njk +145 -0
- package/admin/layouts/login.njk +23 -0
- package/admin/layouts/placeholder.njk +10 -0
- package/admin/layouts/settings.njk +116 -0
- package/admin/layouts/setup.njk +27 -0
- package/admin/layouts/shell.njk +37 -0
- package/admin/layouts/users.njk +91 -0
- package/admin/static/admin.css +726 -0
- package/admin/static/editor.js +30 -0
- package/dist/admin/assets.d.ts +26 -0
- package/dist/admin/assets.d.ts.map +1 -0
- package/dist/admin/assets.js +38 -0
- package/dist/admin/assets.js.map +1 -0
- package/dist/admin/credentials.d.ts +28 -0
- package/dist/admin/credentials.d.ts.map +1 -0
- package/dist/admin/credentials.js +39 -0
- package/dist/admin/credentials.js.map +1 -0
- package/dist/admin/documents.d.ts +134 -0
- package/dist/admin/documents.d.ts.map +1 -0
- package/dist/admin/documents.js +613 -0
- package/dist/admin/documents.js.map +1 -0
- package/dist/admin/federation.d.ts +194 -0
- package/dist/admin/federation.d.ts.map +1 -0
- package/dist/admin/federation.js +299 -0
- package/dist/admin/federation.js.map +1 -0
- package/dist/admin/flash.d.ts +24 -0
- package/dist/admin/flash.d.ts.map +1 -0
- package/dist/admin/flash.js +31 -0
- package/dist/admin/flash.js.map +1 -0
- package/dist/admin/index.d.ts +23 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +15 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/passwords.d.ts +49 -0
- package/dist/admin/passwords.d.ts.map +1 -0
- package/dist/admin/passwords.js +122 -0
- package/dist/admin/passwords.js.map +1 -0
- package/dist/admin/preview.d.ts +18 -0
- package/dist/admin/preview.d.ts.map +1 -0
- package/dist/admin/preview.js +83 -0
- package/dist/admin/preview.js.map +1 -0
- package/dist/admin/routes.d.ts +54 -0
- package/dist/admin/routes.d.ts.map +1 -0
- package/dist/admin/routes.js +383 -0
- package/dist/admin/routes.js.map +1 -0
- package/dist/admin/session.d.ts +44 -0
- package/dist/admin/session.d.ts.map +1 -0
- package/dist/admin/session.js +69 -0
- package/dist/admin/session.js.map +1 -0
- package/dist/admin/settings.d.ts +194 -0
- package/dist/admin/settings.d.ts.map +1 -0
- package/dist/admin/settings.js +470 -0
- package/dist/admin/settings.js.map +1 -0
- package/dist/admin/store.d.ts +407 -0
- package/dist/admin/store.d.ts.map +1 -0
- package/dist/admin/store.js +704 -0
- package/dist/admin/store.js.map +1 -0
- package/dist/admin/templates.d.ts +36 -0
- package/dist/admin/templates.d.ts.map +1 -0
- package/dist/admin/templates.js +43 -0
- package/dist/admin/templates.js.map +1 -0
- package/dist/admin/uploads.d.ts +96 -0
- package/dist/admin/uploads.d.ts.map +1 -0
- package/dist/admin/uploads.js +179 -0
- package/dist/admin/uploads.js.map +1 -0
- package/dist/admin/users.d.ts +95 -0
- package/dist/admin/users.d.ts.map +1 -0
- package/dist/admin/users.js +233 -0
- package/dist/admin/users.js.map +1 -0
- package/dist/cli.d.ts +85 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +424 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +172 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +184 -0
- package/dist/config.js.map +1 -0
- package/dist/content/document.d.ts +66 -0
- package/dist/content/document.d.ts.map +1 -0
- package/dist/content/document.js +13 -0
- package/dist/content/document.js.map +1 -0
- package/dist/content/index.d.ts +17 -0
- package/dist/content/index.d.ts.map +1 -0
- package/dist/content/index.js +10 -0
- package/dist/content/index.js.map +1 -0
- package/dist/content/markdown.d.ts +3 -0
- package/dist/content/markdown.d.ts.map +1 -0
- package/dist/content/markdown.js +39 -0
- package/dist/content/markdown.js.map +1 -0
- package/dist/content/media.d.ts +65 -0
- package/dist/content/media.d.ts.map +1 -0
- package/dist/content/media.js +143 -0
- package/dist/content/media.js.map +1 -0
- package/dist/content/parser.d.ts +24 -0
- package/dist/content/parser.d.ts.map +1 -0
- package/dist/content/parser.js +165 -0
- package/dist/content/parser.js.map +1 -0
- package/dist/content/save.d.ts +60 -0
- package/dist/content/save.d.ts.map +1 -0
- package/dist/content/save.js +103 -0
- package/dist/content/save.js.map +1 -0
- package/dist/content/slug.d.ts +25 -0
- package/dist/content/slug.d.ts.map +1 -0
- package/dist/content/slug.js +75 -0
- package/dist/content/slug.js.map +1 -0
- package/dist/content/store.d.ts +133 -0
- package/dist/content/store.d.ts.map +1 -0
- package/dist/content/store.js +411 -0
- package/dist/content/store.js.map +1 -0
- package/dist/content/sync.d.ts +146 -0
- package/dist/content/sync.d.ts.map +1 -0
- package/dist/content/sync.js +421 -0
- package/dist/content/sync.js.map +1 -0
- package/dist/content/writer.d.ts +37 -0
- package/dist/content/writer.d.ts.map +1 -0
- package/dist/content/writer.js +97 -0
- package/dist/content/writer.js.map +1 -0
- package/dist/env.d.ts +48 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +2 -0
- package/dist/env.js.map +1 -0
- package/dist/federation/actor.d.ts +55 -0
- package/dist/federation/actor.d.ts.map +1 -0
- package/dist/federation/actor.js +101 -0
- package/dist/federation/actor.js.map +1 -0
- package/dist/federation/article.d.ts +83 -0
- package/dist/federation/article.d.ts.map +1 -0
- package/dist/federation/article.js +169 -0
- package/dist/federation/article.js.map +1 -0
- package/dist/federation/delivery.d.ts +90 -0
- package/dist/federation/delivery.d.ts.map +1 -0
- package/dist/federation/delivery.js +289 -0
- package/dist/federation/delivery.js.map +1 -0
- package/dist/federation/federation.d.ts +75 -0
- package/dist/federation/federation.d.ts.map +1 -0
- package/dist/federation/federation.js +190 -0
- package/dist/federation/federation.js.map +1 -0
- package/dist/federation/followers.d.ts +43 -0
- package/dist/federation/followers.d.ts.map +1 -0
- package/dist/federation/followers.js +69 -0
- package/dist/federation/followers.js.map +1 -0
- package/dist/federation/inbox.d.ts +68 -0
- package/dist/federation/inbox.d.ts.map +1 -0
- package/dist/federation/inbox.js +171 -0
- package/dist/federation/inbox.js.map +1 -0
- package/dist/federation/index.d.ts +14 -0
- package/dist/federation/index.d.ts.map +1 -0
- package/dist/federation/index.js +10 -0
- package/dist/federation/index.js.map +1 -0
- package/dist/federation/keys.d.ts +27 -0
- package/dist/federation/keys.d.ts.map +1 -0
- package/dist/federation/keys.js +60 -0
- package/dist/federation/keys.js.map +1 -0
- package/dist/federation/mount.d.ts +23 -0
- package/dist/federation/mount.d.ts.map +1 -0
- package/dist/federation/mount.js +71 -0
- package/dist/federation/mount.js.map +1 -0
- package/dist/federation/paths.d.ts +85 -0
- package/dist/federation/paths.d.ts.map +1 -0
- package/dist/federation/paths.js +97 -0
- package/dist/federation/paths.js.map +1 -0
- package/dist/index.d.ts +106 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +148 -0
- package/dist/index.js.map +1 -0
- package/dist/init.d.ts +71 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +125 -0
- package/dist/init.js.map +1 -0
- package/dist/web/assets.d.ts +65 -0
- package/dist/web/assets.d.ts.map +1 -0
- package/dist/web/assets.js +152 -0
- package/dist/web/assets.js.map +1 -0
- package/dist/web/context.d.ts +121 -0
- package/dist/web/context.d.ts.map +1 -0
- package/dist/web/context.js +112 -0
- package/dist/web/context.js.map +1 -0
- package/dist/web/documents.d.ts +28 -0
- package/dist/web/documents.d.ts.map +1 -0
- package/dist/web/documents.js +39 -0
- package/dist/web/documents.js.map +1 -0
- package/dist/web/feeds.d.ts +122 -0
- package/dist/web/feeds.d.ts.map +1 -0
- package/dist/web/feeds.js +229 -0
- package/dist/web/feeds.js.map +1 -0
- package/dist/web/index.d.ts +17 -0
- package/dist/web/index.d.ts.map +1 -0
- package/dist/web/index.js +10 -0
- package/dist/web/index.js.map +1 -0
- package/dist/web/negotiate.d.ts +219 -0
- package/dist/web/negotiate.d.ts.map +1 -0
- package/dist/web/negotiate.js +409 -0
- package/dist/web/negotiate.js.map +1 -0
- package/dist/web/pagination.d.ts +48 -0
- package/dist/web/pagination.d.ts.map +1 -0
- package/dist/web/pagination.js +30 -0
- package/dist/web/pagination.js.map +1 -0
- package/dist/web/render.d.ts +72 -0
- package/dist/web/render.d.ts.map +1 -0
- package/dist/web/render.js +73 -0
- package/dist/web/render.js.map +1 -0
- package/dist/web/routes.d.ts +31 -0
- package/dist/web/routes.d.ts.map +1 -0
- package/dist/web/routes.js +366 -0
- package/dist/web/routes.js.map +1 -0
- package/dist/web/templates.d.ts +34 -0
- package/dist/web/templates.d.ts.map +1 -0
- package/dist/web/templates.js +106 -0
- package/dist/web/templates.js.map +1 -0
- package/package.json +68 -0
- package/templates/site/content/_data/site.json +8 -0
- package/templates/site/content/pages/about.md +11 -0
- package/templates/site/content/pages/pages.json +3 -0
- package/templates/site/content/posts/2026-01-01-hello-world.md +34 -0
- package/templates/site/content/posts/posts.json +4 -0
- package/templates/site/geekity.config.ts +11 -0
- package/templates/site/gitignore +3 -0
- package/templates/site/server.ts +20 -0
- package/templates/site/tsconfig.json +18 -0
- package/themes/default/README.md +148 -0
- package/themes/default/layouts/404.njk +9 -0
- package/themes/default/layouts/base.njk +59 -0
- package/themes/default/layouts/home.njk +9 -0
- package/themes/default/layouts/page.njk +13 -0
- package/themes/default/layouts/post.njk +30 -0
- package/themes/default/layouts/tag.njk +19 -0
- package/themes/default/partials/pagination.njk +14 -0
- package/themes/default/partials/post-list.njk +24 -0
- package/themes/default/partials/tags.njk +12 -0
- 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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"}
|