@kernhq/module-quire 0.10.8 → 0.11.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/dist/contract/models.d.ts +87 -0
- package/dist/contract/models.d.ts.map +1 -1
- package/dist/contract/models.js +73 -0
- package/dist/contract/models.js.map +1 -1
- package/dist/contract/permissions.d.ts.map +1 -1
- package/dist/contract/permissions.js +32 -0
- package/dist/contract/permissions.js.map +1 -1
- package/dist/contract/router.d.ts +645 -0
- package/dist/contract/router.d.ts.map +1 -1
- package/dist/contract/router.js +137 -2
- package/dist/contract/router.js.map +1 -1
- package/dist/server/_impl.d.ts +877 -0
- package/dist/server/_impl.d.ts.map +1 -1
- package/dist/server/_impl.js +127 -1
- package/dist/server/_impl.js.map +1 -1
- package/dist/server/schema.d.ts +482 -1
- package/dist/server/schema.d.ts.map +1 -1
- package/dist/server/schema.js +115 -1
- package/dist/server/schema.js.map +1 -1
- package/dist/server/services/index.d.ts +3 -0
- package/dist/server/services/index.d.ts.map +1 -1
- package/dist/server/services/index.js +3 -0
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/organisation.d.ts +117 -0
- package/dist/server/services/organisation.d.ts.map +1 -0
- package/dist/server/services/organisation.js +319 -0
- package/dist/server/services/organisation.js.map +1 -0
- package/dist/server/services/pages.d.ts +16 -1
- package/dist/server/services/pages.d.ts.map +1 -1
- package/dist/server/services/pages.js +62 -3
- package/dist/server/services/pages.js.map +1 -1
- package/migrations/0007_organisation.sql +114 -0
- package/migrations/meta/0007_snapshot.json +1588 -0
- package/migrations/meta/_journal.json +7 -0
- package/package.json +1 -1
- package/src/client/components/ConfirmDialog.svelte +123 -0
- package/src/client/components/FavoriteStar.svelte +81 -0
- package/src/client/components/LabelChip.svelte +46 -0
- package/src/client/components/LabelManager.svelte +336 -0
- package/src/client/components/PageLabels.svelte +158 -0
- package/src/client/components/SidebarFavorites.svelte +262 -0
- package/src/client/components/SidebarRecents.svelte +98 -0
- package/src/client/components/SidebarSpaces.svelte +266 -1
- package/src/client/i18n.ts +387 -0
- package/src/client/index.ts +8 -0
- package/src/client/mock.ts +306 -0
- package/src/client/module.ts +18 -0
- package/src/client/pages/PageView.svelte +235 -5
- package/src/client/pages/TrashPage.svelte +378 -0
- package/src/client/query.ts +24 -0
- package/src/contract/models.ts +83 -0
- package/src/contract/permissions.ts +36 -0
- package/src/contract/router.ts +153 -1
|
@@ -50,6 +50,48 @@ export function quirePages(access) {
|
|
|
50
50
|
throw KernError.badRequest('afterId is not a sibling at this position');
|
|
51
51
|
return rankBetween(ordered[at].position, ordered[at + 1]?.position ?? null);
|
|
52
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Keep only the rows of one space whose page this person may still read.
|
|
55
|
+
*
|
|
56
|
+
* The ancestor chains are built from one flat read of the space rather than from `scopeOf` per
|
|
57
|
+
* row: `scopeOf` is a recursive query each time, and a listing is exactly where that turns one
|
|
58
|
+
* screen into a round trip per page. Every ancestor of a page is in the same space by
|
|
59
|
+
* construction — `create` and `move` both refuse a parent from another one — so the flat read
|
|
60
|
+
* has the whole chain.
|
|
61
|
+
*
|
|
62
|
+
* The permission check is still one call per row, because the engine answers about one scope at
|
|
63
|
+
* a time. That is the same cost `favorites.list` pays, and the listing is bounded by its page
|
|
64
|
+
* size.
|
|
65
|
+
*/
|
|
66
|
+
async function readableInSpace(tx, principal, workspaceId, spaceId, rows) {
|
|
67
|
+
if (rows.length === 0)
|
|
68
|
+
return rows;
|
|
69
|
+
const all = await tx
|
|
70
|
+
.select({ id: pages.id, parentId: pages.parentId })
|
|
71
|
+
.from(pages)
|
|
72
|
+
.where(and(eq(pages.workspaceId, workspaceId), eq(pages.spaceId, spaceId)));
|
|
73
|
+
const parentOf = new Map(all.map((row) => [row.id, row.parentId]));
|
|
74
|
+
/** Nearest ancestor first, and `seen` is what stops a cycle from hanging the request. */
|
|
75
|
+
const ancestorsOf = (id) => {
|
|
76
|
+
const chain = [];
|
|
77
|
+
const seen = new Set([id]);
|
|
78
|
+
let at = parentOf.get(id) ?? null;
|
|
79
|
+
while (at !== null && !seen.has(at)) {
|
|
80
|
+
chain.push(at);
|
|
81
|
+
seen.add(at);
|
|
82
|
+
at = parentOf.get(at) ?? null;
|
|
83
|
+
}
|
|
84
|
+
return chain;
|
|
85
|
+
};
|
|
86
|
+
const kept = await Promise.all(rows.map(async (row) => (await access.canPage(principal, 'quire.page.view', workspaceId, {
|
|
87
|
+
pageId: row.id,
|
|
88
|
+
spaceId,
|
|
89
|
+
ancestorIds: ancestorsOf(row.id),
|
|
90
|
+
}))
|
|
91
|
+
? row
|
|
92
|
+
: null));
|
|
93
|
+
return kept.filter((row) => row !== null);
|
|
94
|
+
}
|
|
53
95
|
return {
|
|
54
96
|
/**
|
|
55
97
|
* Every page in the space, flat, ordered so the caller can build the tree without sorting.
|
|
@@ -96,15 +138,32 @@ export function quirePages(access) {
|
|
|
96
138
|
async get(tx, workspaceId, pageId) {
|
|
97
139
|
return toPage(await access.pageRow(tx, workspaceId, pageId));
|
|
98
140
|
},
|
|
99
|
-
|
|
141
|
+
/**
|
|
142
|
+
* What is in the space's trash, filtered to what this person may actually read.
|
|
143
|
+
*
|
|
144
|
+
* The procedure is space-scoped — you reach the screen by being allowed to edit *somewhere* in
|
|
145
|
+
* the space — so without a second, narrower question every row here is a title handed to
|
|
146
|
+
* whoever can open the screen, including the pages a page-scoped DENY closed to them. That is
|
|
147
|
+
* a real leak rather than a tidiness point: `pages.get`, `pages.restore` and `pages.purge` are
|
|
148
|
+
* all page-scoped, so an unfiltered row names a page its reader can neither open, put back nor
|
|
149
|
+
* delete. It exists only to say what it was called.
|
|
150
|
+
*
|
|
151
|
+
* The check is `quire.page.view`, the permission that governs seeing a title, and it is asked
|
|
152
|
+
* per page rather than per space — the same rule `favorites.list` and `recents.list` follow.
|
|
153
|
+
* The cursor is taken from the window *before* filtering, so removing a row cannot make the
|
|
154
|
+
* next page skip one.
|
|
155
|
+
*/
|
|
156
|
+
async trash(tx, principal, workspaceId, spaceId, limit, cursor) {
|
|
100
157
|
const rows = await tx
|
|
101
158
|
.select()
|
|
102
159
|
.from(pages)
|
|
103
160
|
.where(and(eq(pages.workspaceId, workspaceId), eq(pages.spaceId, spaceId), isNotNull(pages.deletedAt), cursor ? lt(pages.id, cursor) : undefined))
|
|
104
161
|
.orderBy(desc(pages.id))
|
|
105
162
|
.limit(limit + 1);
|
|
106
|
-
const
|
|
107
|
-
|
|
163
|
+
const window = rows.slice(0, limit);
|
|
164
|
+
const nextCursor = rows.length > limit ? (window.at(-1)?.id ?? null) : null;
|
|
165
|
+
const readable = await readableInSpace(tx, principal, workspaceId, spaceId, window);
|
|
166
|
+
return { items: readable.map(toPage), nextCursor };
|
|
108
167
|
},
|
|
109
168
|
async create(tx, principal, workspaceId, input) {
|
|
110
169
|
if (input.parentId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pages.js","sourceRoot":"","sources":["../../../src/server/services/pages.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pages.js","sourceRoot":"","sources":["../../../src/server/services/pages.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
-- Labels, favourites, recent views and watchers: the ways a page is reached that are not the tree.
|
|
2
|
+
--
|
|
3
|
+
-- Generated from `src/server/schema.ts`, then edited in two ways drizzle-kit cannot do for itself.
|
|
4
|
+
--
|
|
5
|
+
-- Every statement is guarded. `create table`, `create index` and `create policy` throw on a replay,
|
|
6
|
+
-- and a module migration that throws takes down the whole host service rather than its own module —
|
|
7
|
+
-- core hosts five. Drizzle keys applied migrations by content hash, so regenerating the journal
|
|
8
|
+
-- replays every file against a schema that already has its objects. The composite primary keys are
|
|
9
|
+
-- inline in `create table` rather than a following `alter table … add primary key`, so they inherit
|
|
10
|
+
-- that guard instead of needing one of their own.
|
|
11
|
+
--
|
|
12
|
+
-- `favorites.position` is `COLLATE "C"`. It is a fractional index over a base-62 alphabet ordered by
|
|
13
|
+
-- code point, so `ORDER BY position` is only the order the algorithm intended under byte comparison.
|
|
14
|
+
-- This database is `en_US.UTF-8`, where `'U' < 'c'` is false — somebody's sidebar would come back
|
|
15
|
+
-- shuffled, and nothing would fail. drizzle-kit does not carry collation in its snapshot, which is
|
|
16
|
+
-- how `properties.position` and `views.position` lost theirs; if this file is ever regenerated, put
|
|
17
|
+
-- it back.
|
|
18
|
+
CREATE TABLE IF NOT EXISTS "mod_quire"."favorites" (
|
|
19
|
+
"workspace_id" uuid NOT NULL,
|
|
20
|
+
"user_id" uuid NOT NULL,
|
|
21
|
+
"page_id" uuid NOT NULL,
|
|
22
|
+
"position" text COLLATE "C" NOT NULL,
|
|
23
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
24
|
+
CONSTRAINT "favorites_user_id_page_id_pk" PRIMARY KEY("user_id","page_id")
|
|
25
|
+
);
|
|
26
|
+
--> statement-breakpoint
|
|
27
|
+
CREATE TABLE IF NOT EXISTS "mod_quire"."labels" (
|
|
28
|
+
"id" uuid PRIMARY KEY DEFAULT uuidv7() NOT NULL,
|
|
29
|
+
"workspace_id" uuid NOT NULL,
|
|
30
|
+
"space_id" uuid NOT NULL,
|
|
31
|
+
"name" text NOT NULL,
|
|
32
|
+
"colour" text DEFAULT 'grey' NOT NULL,
|
|
33
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
34
|
+
);
|
|
35
|
+
--> statement-breakpoint
|
|
36
|
+
CREATE TABLE IF NOT EXISTS "mod_quire"."page_labels" (
|
|
37
|
+
"page_id" uuid NOT NULL,
|
|
38
|
+
"label_id" uuid NOT NULL,
|
|
39
|
+
"workspace_id" uuid NOT NULL,
|
|
40
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
41
|
+
CONSTRAINT "page_labels_page_id_label_id_pk" PRIMARY KEY("page_id","label_id")
|
|
42
|
+
);
|
|
43
|
+
--> statement-breakpoint
|
|
44
|
+
CREATE TABLE IF NOT EXISTS "mod_quire"."recent_views" (
|
|
45
|
+
"workspace_id" uuid NOT NULL,
|
|
46
|
+
"user_id" uuid NOT NULL,
|
|
47
|
+
"page_id" uuid NOT NULL,
|
|
48
|
+
"viewed_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
49
|
+
CONSTRAINT "recent_views_user_id_page_id_pk" PRIMARY KEY("user_id","page_id")
|
|
50
|
+
);
|
|
51
|
+
--> statement-breakpoint
|
|
52
|
+
CREATE TABLE IF NOT EXISTS "mod_quire"."watchers" (
|
|
53
|
+
"workspace_id" uuid NOT NULL,
|
|
54
|
+
"user_id" uuid NOT NULL,
|
|
55
|
+
"page_id" uuid NOT NULL,
|
|
56
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
57
|
+
CONSTRAINT "watchers_user_id_page_id_pk" PRIMARY KEY("user_id","page_id")
|
|
58
|
+
);
|
|
59
|
+
--> statement-breakpoint
|
|
60
|
+
CREATE INDEX IF NOT EXISTS "favorites_ws_user_idx" ON "mod_quire"."favorites" USING btree ("workspace_id","user_id","position");--> statement-breakpoint
|
|
61
|
+
|
|
62
|
+
-- On `lower(name)`, not on `name`. Case is not a distinction anybody means here: "Draft" and "draft"
|
|
63
|
+
-- side by side in a picker read as broken data, and which one a person clicks is a coin toss.
|
|
64
|
+
CREATE UNIQUE INDEX IF NOT EXISTS "labels_ws_space_name_uq" ON "mod_quire"."labels" USING btree ("workspace_id","space_id",lower("name"));--> statement-breakpoint
|
|
65
|
+
CREATE INDEX IF NOT EXISTS "labels_ws_space_idx" ON "mod_quire"."labels" USING btree ("workspace_id","space_id","name");--> statement-breakpoint
|
|
66
|
+
CREATE INDEX IF NOT EXISTS "page_labels_ws_label_idx" ON "mod_quire"."page_labels" USING btree ("workspace_id","label_id","page_id");--> statement-breakpoint
|
|
67
|
+
CREATE INDEX IF NOT EXISTS "recent_views_ws_user_idx" ON "mod_quire"."recent_views" USING btree ("workspace_id","user_id","viewed_at" DESC NULLS LAST);--> statement-breakpoint
|
|
68
|
+
CREATE INDEX IF NOT EXISTS "watchers_ws_page_idx" ON "mod_quire"."watchers" USING btree ("workspace_id","page_id","user_id");--> statement-breakpoint
|
|
69
|
+
|
|
70
|
+
-- Row-level security, the same triple every tenant table gets.
|
|
71
|
+
--
|
|
72
|
+
-- `force` matters: without it the table owner bypasses the policy, and the owner is the role the
|
|
73
|
+
-- service connects as. A *superuser* bypasses RLS whatever this says, and the development and CI
|
|
74
|
+
-- roles are superusers — so a test that does not connect as an unprivileged role proves nothing
|
|
75
|
+
-- about isolation.
|
|
76
|
+
--
|
|
77
|
+
-- Note what is fenced and what is not. These five tables are keyed by a person, not only by a
|
|
78
|
+
-- workspace, and the policy is still on `workspace_id` alone: it is the tenant boundary, not a
|
|
79
|
+
-- privacy boundary. Keeping one person's favourites out of another's reading is the procedure's
|
|
80
|
+
-- job, and there is nothing here that does it yet.
|
|
81
|
+
ALTER TABLE "mod_quire"."labels" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
82
|
+
ALTER TABLE "mod_quire"."labels" FORCE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
83
|
+
DROP POLICY IF EXISTS "labels_ws_isolation" ON "mod_quire"."labels";--> statement-breakpoint
|
|
84
|
+
CREATE POLICY "labels_ws_isolation" ON "mod_quire"."labels"
|
|
85
|
+
USING (workspace_id::text = current_setting('app.workspace_id', true))
|
|
86
|
+
WITH CHECK (workspace_id::text = current_setting('app.workspace_id', true));--> statement-breakpoint
|
|
87
|
+
|
|
88
|
+
ALTER TABLE "mod_quire"."page_labels" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
89
|
+
ALTER TABLE "mod_quire"."page_labels" FORCE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
90
|
+
DROP POLICY IF EXISTS "page_labels_ws_isolation" ON "mod_quire"."page_labels";--> statement-breakpoint
|
|
91
|
+
CREATE POLICY "page_labels_ws_isolation" ON "mod_quire"."page_labels"
|
|
92
|
+
USING (workspace_id::text = current_setting('app.workspace_id', true))
|
|
93
|
+
WITH CHECK (workspace_id::text = current_setting('app.workspace_id', true));--> statement-breakpoint
|
|
94
|
+
|
|
95
|
+
ALTER TABLE "mod_quire"."favorites" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
96
|
+
ALTER TABLE "mod_quire"."favorites" FORCE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
97
|
+
DROP POLICY IF EXISTS "favorites_ws_isolation" ON "mod_quire"."favorites";--> statement-breakpoint
|
|
98
|
+
CREATE POLICY "favorites_ws_isolation" ON "mod_quire"."favorites"
|
|
99
|
+
USING (workspace_id::text = current_setting('app.workspace_id', true))
|
|
100
|
+
WITH CHECK (workspace_id::text = current_setting('app.workspace_id', true));--> statement-breakpoint
|
|
101
|
+
|
|
102
|
+
ALTER TABLE "mod_quire"."recent_views" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
103
|
+
ALTER TABLE "mod_quire"."recent_views" FORCE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
104
|
+
DROP POLICY IF EXISTS "recent_views_ws_isolation" ON "mod_quire"."recent_views";--> statement-breakpoint
|
|
105
|
+
CREATE POLICY "recent_views_ws_isolation" ON "mod_quire"."recent_views"
|
|
106
|
+
USING (workspace_id::text = current_setting('app.workspace_id', true))
|
|
107
|
+
WITH CHECK (workspace_id::text = current_setting('app.workspace_id', true));--> statement-breakpoint
|
|
108
|
+
|
|
109
|
+
ALTER TABLE "mod_quire"."watchers" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
110
|
+
ALTER TABLE "mod_quire"."watchers" FORCE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
111
|
+
DROP POLICY IF EXISTS "watchers_ws_isolation" ON "mod_quire"."watchers";--> statement-breakpoint
|
|
112
|
+
CREATE POLICY "watchers_ws_isolation" ON "mod_quire"."watchers"
|
|
113
|
+
USING (workspace_id::text = current_setting('app.workspace_id', true))
|
|
114
|
+
WITH CHECK (workspace_id::text = current_setting('app.workspace_id', true));
|