@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.
Files changed (53) hide show
  1. package/dist/contract/models.d.ts +87 -0
  2. package/dist/contract/models.d.ts.map +1 -1
  3. package/dist/contract/models.js +73 -0
  4. package/dist/contract/models.js.map +1 -1
  5. package/dist/contract/permissions.d.ts.map +1 -1
  6. package/dist/contract/permissions.js +32 -0
  7. package/dist/contract/permissions.js.map +1 -1
  8. package/dist/contract/router.d.ts +645 -0
  9. package/dist/contract/router.d.ts.map +1 -1
  10. package/dist/contract/router.js +137 -2
  11. package/dist/contract/router.js.map +1 -1
  12. package/dist/server/_impl.d.ts +877 -0
  13. package/dist/server/_impl.d.ts.map +1 -1
  14. package/dist/server/_impl.js +127 -1
  15. package/dist/server/_impl.js.map +1 -1
  16. package/dist/server/schema.d.ts +482 -1
  17. package/dist/server/schema.d.ts.map +1 -1
  18. package/dist/server/schema.js +115 -1
  19. package/dist/server/schema.js.map +1 -1
  20. package/dist/server/services/index.d.ts +3 -0
  21. package/dist/server/services/index.d.ts.map +1 -1
  22. package/dist/server/services/index.js +3 -0
  23. package/dist/server/services/index.js.map +1 -1
  24. package/dist/server/services/organisation.d.ts +117 -0
  25. package/dist/server/services/organisation.d.ts.map +1 -0
  26. package/dist/server/services/organisation.js +319 -0
  27. package/dist/server/services/organisation.js.map +1 -0
  28. package/dist/server/services/pages.d.ts +16 -1
  29. package/dist/server/services/pages.d.ts.map +1 -1
  30. package/dist/server/services/pages.js +62 -3
  31. package/dist/server/services/pages.js.map +1 -1
  32. package/migrations/0007_organisation.sql +114 -0
  33. package/migrations/meta/0007_snapshot.json +1588 -0
  34. package/migrations/meta/_journal.json +7 -0
  35. package/package.json +1 -1
  36. package/src/client/components/ConfirmDialog.svelte +123 -0
  37. package/src/client/components/FavoriteStar.svelte +81 -0
  38. package/src/client/components/LabelChip.svelte +46 -0
  39. package/src/client/components/LabelManager.svelte +336 -0
  40. package/src/client/components/PageLabels.svelte +158 -0
  41. package/src/client/components/SidebarFavorites.svelte +262 -0
  42. package/src/client/components/SidebarRecents.svelte +98 -0
  43. package/src/client/components/SidebarSpaces.svelte +266 -1
  44. package/src/client/i18n.ts +387 -0
  45. package/src/client/index.ts +8 -0
  46. package/src/client/mock.ts +306 -0
  47. package/src/client/module.ts +18 -0
  48. package/src/client/pages/PageView.svelte +235 -5
  49. package/src/client/pages/TrashPage.svelte +378 -0
  50. package/src/client/query.ts +24 -0
  51. package/src/contract/models.ts +83 -0
  52. package/src/contract/permissions.ts +36 -0
  53. package/src/contract/router.ts +153 -1
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/server/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/server/schema.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import type { Kernel } from '@kernhq/kernel';
2
2
  import { quireAccess } from './access.js';
3
3
  import { quireComments } from './comments.js';
4
4
  import { quireDatabases } from './databases.js';
5
+ import { quireOrganisation } from './organisation.js';
5
6
  import { quirePages } from './pages.js';
6
7
  import { quireSpaces } from './spaces.js';
7
8
  import { quireVersions } from './versions.js';
@@ -12,12 +13,14 @@ export interface QuireServices {
12
13
  versions: ReturnType<typeof quireVersions>;
13
14
  comments: ReturnType<typeof quireComments>;
14
15
  databases: ReturnType<typeof quireDatabases>;
16
+ organisation: ReturnType<typeof quireOrganisation>;
15
17
  }
16
18
  /** One set of services per kernel: they are stateless, and rebuilding them per request is waste. */
17
19
  export declare function quireServices(kernel: Kernel): QuireServices;
18
20
  export * from './access.js';
19
21
  export * from './comments.js';
20
22
  export * from './databases.js';
23
+ export * from './organisation.js';
21
24
  export * from './pages.js';
22
25
  export * from './spaces.js';
23
26
  export * from './versions.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAA;IACtC,MAAM,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAA;IACtC,KAAK,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;IACpC,QAAQ,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAA;IAC1C,QAAQ,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAA;IAC1C,SAAS,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;CAC7C;AAID,oGAAoG;AACpG,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAc3D;AAED,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAA;IACtC,MAAM,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAA;IACtC,KAAK,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;IACpC,QAAQ,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAA;IAC1C,QAAQ,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAA;IAC1C,SAAS,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;IAC5C,YAAY,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAA;CACnD;AAID,oGAAoG;AACpG,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAe3D;AAED,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import { quireAccess } from './access.js';
2
2
  import { quireComments } from './comments.js';
3
3
  import { quireDatabases } from './databases.js';
4
+ import { quireOrganisation } from './organisation.js';
4
5
  import { quirePages } from './pages.js';
5
6
  import { quireSpaces } from './spaces.js';
6
7
  import { quireVersions } from './versions.js';
@@ -18,6 +19,7 @@ export function quireServices(kernel) {
18
19
  versions: quireVersions(kernel, access),
19
20
  comments: quireComments(access),
20
21
  databases: quireDatabases(kernel, access),
22
+ organisation: quireOrganisation(access),
21
23
  };
22
24
  cache.set(kernel, services);
23
25
  return services;
@@ -25,6 +27,7 @@ export function quireServices(kernel) {
25
27
  export * from './access.js';
26
28
  export * from './comments.js';
27
29
  export * from './databases.js';
30
+ export * from './organisation.js';
28
31
  export * from './pages.js';
29
32
  export * from './spaces.js';
30
33
  export * from './versions.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/services/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAW7C,MAAM,KAAK,GAAG,IAAI,OAAO,EAAyB,CAAA;AAElD,oGAAoG;AACpG,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAClC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAC7B,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;IAClC,MAAM,QAAQ,GAAkB;QAC9B,MAAM;QACN,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;QAC3B,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC;QACzB,QAAQ,EAAE,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC;QACvC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC;QAC/B,SAAS,EAAE,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;KAC1C,CAAA;IACD,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC3B,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/services/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAY7C,MAAM,KAAK,GAAG,IAAI,OAAO,EAAyB,CAAA;AAElD,oGAAoG;AACpG,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAClC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAC7B,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;IAClC,MAAM,QAAQ,GAAkB;QAC9B,MAAM;QACN,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;QAC3B,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC;QACzB,QAAQ,EAAE,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC;QACvC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC;QAC/B,SAAS,EAAE,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;QACzC,YAAY,EAAE,iBAAiB,CAAC,MAAM,CAAC;KACxC,CAAA;IACD,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC3B,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * The ways a page is reached that are not the tree: labels, favourites, watchers, recent views.
3
+ *
4
+ * One service rather than four, because they share the thing that makes them easy to get wrong.
5
+ * Three of these four tables are keyed by a **person**, and row-level security is not: the policy on
6
+ * every table in this module fences `workspace_id`, which is the tenant boundary and says nothing
7
+ * about who inside a tenant may read a row. A colleague's favourites are as visible to the policy as
8
+ * your own. So the `user_id` predicate written into each query below is the *entire* privacy
9
+ * mechanism for a sidebar, and a query here that forgets it does not fail, does not warn, and shows
10
+ * one person another person's bookmarks.
11
+ *
12
+ * The second shared concern is that none of these tables has a foreign key to `pages` — a purge
13
+ * leaves rows behind. Every read therefore joins to `pages` and drops what has been deleted or
14
+ * trashed, so an orphan is invisible rather than a broken row; and every list re-asks the permission
15
+ * question per page, because a page a space closed to you after you bookmarked it must leave your
16
+ * sidebar rather than sit there refusing to open.
17
+ */
18
+ import type { Principal } from '@kernhq/contracts';
19
+ import { type Tx } from '@kernhq/kernel';
20
+ import type { FavoriteEntry, Label, RecentEntry, WatchState } from '../../contract/index.js';
21
+ import { labels } from '../schema.js';
22
+ import type { QuireAccess } from './access.js';
23
+ type LabelRow = typeof labels.$inferSelect;
24
+ /**
25
+ * `colour` is `text` in the database and a closed enum in the contract, so a value the enum does not
26
+ * know would fail *output* validation — a 500 on a read, for a row that is merely odd. Grey is the
27
+ * same fallback `toneFor` renders, which is the one the client would draw anyway.
28
+ */
29
+ export declare function toLabel(row: LabelRow): Label;
30
+ export declare function quireOrganisation(access: QuireAccess): {
31
+ /** Every label in the space, by name — what a picker draws. */
32
+ listLabels(tx: Tx, workspaceId: string, spaceId: string): Promise<Label[]>;
33
+ /** The label row, or `notFound` — a label id carries no scope, so this is what resolves one. */
34
+ labelRow(tx: Tx, workspaceId: string, labelId: string): Promise<{
35
+ id: string;
36
+ workspaceId: string;
37
+ spaceId: string;
38
+ name: string;
39
+ colour: string;
40
+ createdAt: Date;
41
+ }>;
42
+ createLabel(tx: Tx, workspaceId: string, spaceId: string, input: {
43
+ name: string;
44
+ colour: Label["colour"];
45
+ }): Promise<Label>;
46
+ updateLabel(tx: Tx, workspaceId: string, labelId: string, patch: {
47
+ name?: string;
48
+ colour?: Label["colour"];
49
+ }): Promise<Label>;
50
+ /**
51
+ * Gone, and off every page that wore it.
52
+ *
53
+ * There is no foreign key to cascade through, so leaving the join rows would leave every page
54
+ * that wore this label carrying a tag nothing can name — invisible in a picker, undeletable, and
55
+ * ready to reappear the day a new label is minted with the same id, which uuidv7 will not do but
56
+ * is the wrong thing to be relying on.
57
+ */
58
+ removeLabel(tx: Tx, workspaceId: string, labelId: string): Promise<void>;
59
+ /**
60
+ * The unique index is on `lower(name)`, so this asks the same question the index would answer.
61
+ *
62
+ * Checked here as well as enforced there because the index's answer is a raw `23505` — a 500 to
63
+ * whoever typed the name, rather than "there is already one of those".
64
+ */
65
+ refuseDuplicate(tx: Tx, workspaceId: string, spaceId: string, name: string, exceptId: string | null): Promise<void>;
66
+ labelsForPage(tx: Tx, workspaceId: string, pageId: string): Promise<Label[]>;
67
+ /**
68
+ * Replace what the page wears with exactly this set.
69
+ *
70
+ * Delete-then-insert inside the caller's transaction, rather than working out a difference: the
71
+ * set is at most fifty ids and the difference is the part that gets a duplicate wrong. Every id
72
+ * has to name a label of *this page's own space* — a label belongs to a space, so accepting one
73
+ * from elsewhere would put another team's vocabulary on this page and leave a picker showing a
74
+ * tag it has no entry for.
75
+ */
76
+ setLabels(tx: Tx, workspaceId: string, pageId: string, spaceId: string, labelIds: string[]): Promise<Label[]>;
77
+ /**
78
+ * This person's favourites, in the order they arranged them.
79
+ *
80
+ * `eq(favorites.userId, userId)` is the privacy boundary — see the note at the top of the file.
81
+ */
82
+ listFavorites(tx: Tx, principal: Principal, workspaceId: string, userId: string): Promise<FavoriteEntry[]>;
83
+ /**
84
+ * Star a page. Lands at the end of the list, and starring one twice is the same star.
85
+ *
86
+ * Idempotent on purpose: `disabled={mutation.isPending}` reaches the button a render late, so
87
+ * two quick clicks are two requests, and the second one must not be an error the person sees.
88
+ */
89
+ addFavorite(tx: Tx, workspaceId: string, userId: string, pageId: string): Promise<void>;
90
+ /** Only ever your own: without `userId` this deletes whoever else starred the same page. */
91
+ removeFavorite(tx: Tx, workspaceId: string, userId: string, pageId: string): Promise<void>;
92
+ /** `afterId` is the favourite to land behind; null means first. Only this person's list moves. */
93
+ reorderFavorite(tx: Tx, workspaceId: string, userId: string, pageId: string, afterId: string | null): Promise<void>;
94
+ /**
95
+ * Who is watching this page, and whether you are among them.
96
+ *
97
+ * The list is not filtered to the caller: unlike a favourite, a watch is a fact about the page
98
+ * that everyone who can read the page can see — it is what a "3 people are watching" line beside
99
+ * the button is drawn from.
100
+ */
101
+ watchState(tx: Tx, workspaceId: string, pageId: string, userId: string): Promise<WatchState>;
102
+ setWatching(tx: Tx, workspaceId: string, pageId: string, userId: string, watching: boolean): Promise<WatchState>;
103
+ /**
104
+ * Where this person has just been, newest first.
105
+ *
106
+ * Over-fetched before the permission filter and sliced after it: filtering a page of exactly
107
+ * `limit` rows would hand back four entries when six of the ten most recent are pages somebody
108
+ * has since been shut out of, and the older ones they can still read would never appear. The
109
+ * over-fetch is bounded so a denied stretch costs one wider query rather than a scan.
110
+ */
111
+ listRecents(tx: Tx, principal: Principal, workspaceId: string, userId: string, limit: number): Promise<RecentEntry[]>;
112
+ /** One row per person per page, bumped rather than appended — re-opening moves it up the list. */
113
+ recordRecent(tx: Tx, workspaceId: string, userId: string, pageId: string): Promise<void>;
114
+ };
115
+ export type QuireOrganisation = ReturnType<typeof quireOrganisation>;
116
+ export {};
117
+ //# sourceMappingURL=organisation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organisation.d.ts","sourceRoot":"","sources":["../../../src/server/services/organisation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAa,KAAK,EAAE,EAAU,MAAM,gBAAgB,CAAA;AAG3D,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAE5F,OAAO,EAAa,MAAM,EAA4C,MAAM,cAAc,CAAA;AAC1F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,KAAK,QAAQ,GAAG,OAAO,MAAM,CAAC,YAAY,CAAA;AAE1C;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,QAAQ,GAAG,KAAK,CAS5C;AAUD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW;IAqCjD,+DAA+D;mBAC1C,EAAE,eAAe,MAAM,WAAW,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAShF,gGAAgG;iBAC7E,EAAE,eAAe,MAAM,WAAW,MAAM;;;;;;;;oBAWrD,EAAE,eACO,MAAM,WACV,MAAM,SACR;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;KAAE,GAC/C,OAAO,CAAC,KAAK,CAAC;oBAYX,EAAE,eACO,MAAM,WACV,MAAM,SACR;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;KAAE,GACjD,OAAO,CAAC,KAAK,CAAC;IAcjB;;;;;;;OAOG;oBACmB,EAAE,eAAe,MAAM,WAAW,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ9E;;;;;OAKG;wBAEG,EAAE,eACO,MAAM,WACV,MAAM,QACT,MAAM,YACF,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC,IAAI,CAAC;sBAgBQ,EAAE,eAAe,MAAM,UAAU,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAoBlF;;;;;;;;OAQG;kBAEG,EAAE,eACO,MAAM,UACX,MAAM,WACL,MAAM,YACL,MAAM,EAAE,GACjB,OAAO,CAAC,KAAK,EAAE,CAAC;IAuBnB;;;;OAIG;sBAEG,EAAE,aACK,SAAS,eACP,MAAM,UACX,MAAM,GACb,OAAO,CAAC,aAAa,EAAE,CAAC;IA6B3B;;;;;OAKG;oBACmB,EAAE,eAAe,MAAM,UAAU,MAAM,UAAU,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO7F,4FAA4F;uBACnE,EAAE,eAAe,MAAM,UAAU,MAAM,UAAU,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYhG,kGAAkG;wBAE5F,EAAE,eACO,MAAM,UACX,MAAM,UACN,MAAM,WACL,MAAM,GAAG,IAAI,GACrB,OAAO,CAAC,IAAI,CAAC;IAuBhB;;;;;;OAMG;mBACkB,EAAE,eAAe,MAAM,UAAU,MAAM,UAAU,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;oBAa5F,EAAE,eACO,MAAM,UACX,MAAM,UACN,MAAM,YACJ,OAAO,GAChB,OAAO,CAAC,UAAU,CAAC;IAetB;;;;;;;OAOG;oBAEG,EAAE,aACK,SAAS,eACP,MAAM,UACX,MAAM,SACP,MAAM,GACZ,OAAO,CAAC,WAAW,EAAE,CAAC;IAmCzB,kGAAkG;qBAC3E,EAAE,eAAe,MAAM,UAAU,MAAM,UAAU,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;EAQjG;AACD,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAA"}
@@ -0,0 +1,319 @@
1
+ import { KernError, uuidv7 } from '@kernhq/kernel';
2
+ import { and, asc, desc, eq, inArray, isNull, ne, sql } from 'drizzle-orm';
3
+ import { rankBetween } from '../../client/rank.js';
4
+ import { LabelColour } from '../../contract/index.js';
5
+ import { favorites, labels, pageLabels, pages, recentViews, watchers } from '../schema.js';
6
+ /**
7
+ * `colour` is `text` in the database and a closed enum in the contract, so a value the enum does not
8
+ * know would fail *output* validation — a 500 on a read, for a row that is merely odd. Grey is the
9
+ * same fallback `toneFor` renders, which is the one the client would draw anyway.
10
+ */
11
+ export function toLabel(row) {
12
+ return {
13
+ id: row.id,
14
+ workspaceId: row.workspaceId,
15
+ spaceId: row.spaceId,
16
+ name: row.name,
17
+ colour: LabelColour.safeParse(row.colour).success ? row.colour : 'grey',
18
+ createdAt: row.createdAt.toISOString(),
19
+ };
20
+ }
21
+ /** The columns a shortcut row draws, joined from the page it points at. */
22
+ const pageBits = {
23
+ spaceId: pages.spaceId,
24
+ title: pages.title,
25
+ icon: pages.icon,
26
+ kind: pages.kind,
27
+ };
28
+ export function quireOrganisation(access) {
29
+ /**
30
+ * Keep only the rows whose page this person may still read.
31
+ *
32
+ * Per page rather than per space, because a page-scoped DENY is the narrow case the whole
33
+ * permission model exists for — a space check would let exactly the page somebody was shut out of
34
+ * stay in their sidebar. `scopeOf` throws for a page that no longer exists; the join already
35
+ * excludes those, and the `catch` is what stops a race between the two turning a sidebar into an
36
+ * error.
37
+ */
38
+ async function readable(tx, principal, workspaceId, rows) {
39
+ const kept = await Promise.all(rows.map(async (row) => {
40
+ const scope = await access.scopeOf(tx, workspaceId, row.pageId).catch(() => null);
41
+ if (!scope)
42
+ return null;
43
+ return (await access.canPage(principal, 'quire.page.view', workspaceId, scope)) ? row : null;
44
+ }));
45
+ return kept.filter((row) => row !== null);
46
+ }
47
+ /** The ranks of this person's favourites, in order, optionally without the one being moved. */
48
+ async function ordered(tx, workspaceId, userId, movingId) {
49
+ const rows = await tx
50
+ .select({ pageId: favorites.pageId, position: favorites.position })
51
+ .from(favorites)
52
+ .where(and(eq(favorites.workspaceId, workspaceId), eq(favorites.userId, userId)))
53
+ .orderBy(asc(favorites.position));
54
+ return rows.filter((row) => row.pageId !== movingId);
55
+ }
56
+ return {
57
+ /** Every label in the space, by name — what a picker draws. */
58
+ async listLabels(tx, workspaceId, spaceId) {
59
+ const rows = await tx
60
+ .select()
61
+ .from(labels)
62
+ .where(and(eq(labels.workspaceId, workspaceId), eq(labels.spaceId, spaceId)))
63
+ .orderBy(asc(labels.name));
64
+ return rows.map(toLabel);
65
+ },
66
+ /** The label row, or `notFound` — a label id carries no scope, so this is what resolves one. */
67
+ async labelRow(tx, workspaceId, labelId) {
68
+ const [row] = await tx
69
+ .select()
70
+ .from(labels)
71
+ .where(and(eq(labels.workspaceId, workspaceId), eq(labels.id, labelId)))
72
+ .limit(1);
73
+ if (!row)
74
+ throw KernError.notFound('Label');
75
+ return row;
76
+ },
77
+ async createLabel(tx, workspaceId, spaceId, input) {
78
+ const name = input.name.trim();
79
+ if (!name)
80
+ throw KernError.badRequest('A label needs a name');
81
+ await this.refuseDuplicate(tx, workspaceId, spaceId, name, null);
82
+ const [row] = await tx
83
+ .insert(labels)
84
+ .values({ id: uuidv7(), workspaceId, spaceId, name, colour: input.colour })
85
+ .returning();
86
+ return toLabel(row);
87
+ },
88
+ async updateLabel(tx, workspaceId, labelId, patch) {
89
+ const existing = await this.labelRow(tx, workspaceId, labelId);
90
+ const name = patch.name?.trim();
91
+ if (patch.name !== undefined && !name)
92
+ throw KernError.badRequest('A label needs a name');
93
+ if (name)
94
+ await this.refuseDuplicate(tx, workspaceId, existing.spaceId, name, labelId);
95
+ const [row] = await tx
96
+ .update(labels)
97
+ .set({ ...(name ? { name } : {}), ...(patch.colour ? { colour: patch.colour } : {}) })
98
+ .where(and(eq(labels.workspaceId, workspaceId), eq(labels.id, labelId)))
99
+ .returning();
100
+ if (!row)
101
+ throw KernError.notFound('Label');
102
+ return toLabel(row);
103
+ },
104
+ /**
105
+ * Gone, and off every page that wore it.
106
+ *
107
+ * There is no foreign key to cascade through, so leaving the join rows would leave every page
108
+ * that wore this label carrying a tag nothing can name — invisible in a picker, undeletable, and
109
+ * ready to reappear the day a new label is minted with the same id, which uuidv7 will not do but
110
+ * is the wrong thing to be relying on.
111
+ */
112
+ async removeLabel(tx, workspaceId, labelId) {
113
+ await this.labelRow(tx, workspaceId, labelId);
114
+ await tx
115
+ .delete(pageLabels)
116
+ .where(and(eq(pageLabels.workspaceId, workspaceId), eq(pageLabels.labelId, labelId)));
117
+ await tx.delete(labels).where(and(eq(labels.workspaceId, workspaceId), eq(labels.id, labelId)));
118
+ },
119
+ /**
120
+ * The unique index is on `lower(name)`, so this asks the same question the index would answer.
121
+ *
122
+ * Checked here as well as enforced there because the index's answer is a raw `23505` — a 500 to
123
+ * whoever typed the name, rather than "there is already one of those".
124
+ */
125
+ async refuseDuplicate(tx, workspaceId, spaceId, name, exceptId) {
126
+ const [clash] = await tx
127
+ .select({ id: labels.id })
128
+ .from(labels)
129
+ .where(and(eq(labels.workspaceId, workspaceId), eq(labels.spaceId, spaceId), sql `lower(${labels.name}) = lower(${name})`, exceptId ? ne(labels.id, exceptId) : undefined))
130
+ .limit(1);
131
+ if (clash)
132
+ throw KernError.conflict(`This space already has a label called "${name}"`);
133
+ },
134
+ async labelsForPage(tx, workspaceId, pageId) {
135
+ const rows = await tx
136
+ .select({
137
+ id: labels.id,
138
+ workspaceId: labels.workspaceId,
139
+ spaceId: labels.spaceId,
140
+ name: labels.name,
141
+ colour: labels.colour,
142
+ createdAt: labels.createdAt,
143
+ })
144
+ .from(pageLabels)
145
+ .innerJoin(labels, and(eq(labels.workspaceId, pageLabels.workspaceId), eq(labels.id, pageLabels.labelId)))
146
+ .where(and(eq(pageLabels.workspaceId, workspaceId), eq(pageLabels.pageId, pageId)))
147
+ .orderBy(asc(labels.name));
148
+ return rows.map(toLabel);
149
+ },
150
+ /**
151
+ * Replace what the page wears with exactly this set.
152
+ *
153
+ * Delete-then-insert inside the caller's transaction, rather than working out a difference: the
154
+ * set is at most fifty ids and the difference is the part that gets a duplicate wrong. Every id
155
+ * has to name a label of *this page's own space* — a label belongs to a space, so accepting one
156
+ * from elsewhere would put another team's vocabulary on this page and leave a picker showing a
157
+ * tag it has no entry for.
158
+ */
159
+ async setLabels(tx, workspaceId, pageId, spaceId, labelIds) {
160
+ const wanted = [...new Set(labelIds)];
161
+ if (wanted.length > 0) {
162
+ const found = await tx
163
+ .select({ id: labels.id })
164
+ .from(labels)
165
+ .where(and(eq(labels.workspaceId, workspaceId), eq(labels.spaceId, spaceId), inArray(labels.id, wanted)));
166
+ if (found.length !== wanted.length)
167
+ throw KernError.badRequest('Every label has to be one this space declares');
168
+ }
169
+ await tx
170
+ .delete(pageLabels)
171
+ .where(and(eq(pageLabels.workspaceId, workspaceId), eq(pageLabels.pageId, pageId)));
172
+ if (wanted.length > 0)
173
+ await tx
174
+ .insert(pageLabels)
175
+ .values(wanted.map((labelId) => ({ workspaceId, pageId, labelId })))
176
+ .onConflictDoNothing();
177
+ return this.labelsForPage(tx, workspaceId, pageId);
178
+ },
179
+ /**
180
+ * This person's favourites, in the order they arranged them.
181
+ *
182
+ * `eq(favorites.userId, userId)` is the privacy boundary — see the note at the top of the file.
183
+ */
184
+ async listFavorites(tx, principal, workspaceId, userId) {
185
+ const rows = await tx
186
+ .select({
187
+ workspaceId: favorites.workspaceId,
188
+ userId: favorites.userId,
189
+ pageId: favorites.pageId,
190
+ position: favorites.position,
191
+ createdAt: favorites.createdAt,
192
+ ...pageBits,
193
+ })
194
+ .from(favorites)
195
+ .innerJoin(pages, and(eq(pages.workspaceId, favorites.workspaceId), eq(pages.id, favorites.pageId)))
196
+ .where(and(eq(favorites.workspaceId, workspaceId), eq(favorites.userId, userId), isNull(pages.deletedAt)))
197
+ .orderBy(asc(favorites.position));
198
+ return (await readable(tx, principal, workspaceId, rows)).map((row) => ({
199
+ workspaceId: row.workspaceId,
200
+ userId: row.userId,
201
+ pageId: row.pageId,
202
+ position: row.position,
203
+ createdAt: row.createdAt.toISOString(),
204
+ spaceId: row.spaceId,
205
+ title: row.title,
206
+ icon: row.icon,
207
+ kind: row.kind,
208
+ }));
209
+ },
210
+ /**
211
+ * Star a page. Lands at the end of the list, and starring one twice is the same star.
212
+ *
213
+ * Idempotent on purpose: `disabled={mutation.isPending}` reaches the button a render late, so
214
+ * two quick clicks are two requests, and the second one must not be an error the person sees.
215
+ */
216
+ async addFavorite(tx, workspaceId, userId, pageId) {
217
+ const existing = await ordered(tx, workspaceId, userId);
218
+ if (existing.some((row) => row.pageId === pageId))
219
+ return;
220
+ const position = rankBetween(existing.at(-1)?.position ?? null, null);
221
+ await tx.insert(favorites).values({ workspaceId, userId, pageId, position }).onConflictDoNothing();
222
+ },
223
+ /** Only ever your own: without `userId` this deletes whoever else starred the same page. */
224
+ async removeFavorite(tx, workspaceId, userId, pageId) {
225
+ await tx
226
+ .delete(favorites)
227
+ .where(and(eq(favorites.workspaceId, workspaceId), eq(favorites.userId, userId), eq(favorites.pageId, pageId)));
228
+ },
229
+ /** `afterId` is the favourite to land behind; null means first. Only this person's list moves. */
230
+ async reorderFavorite(tx, workspaceId, userId, pageId, afterId) {
231
+ const all = await ordered(tx, workspaceId, userId);
232
+ if (!all.some((row) => row.pageId === pageId))
233
+ throw KernError.notFound('Favourite');
234
+ const rest = all.filter((row) => row.pageId !== pageId);
235
+ let position;
236
+ if (afterId === null)
237
+ position = rankBetween(null, rest[0]?.position ?? null);
238
+ else {
239
+ const at = rest.findIndex((row) => row.pageId === afterId);
240
+ if (at < 0)
241
+ throw KernError.badRequest('afterId is not one of your favourites');
242
+ position = rankBetween(rest[at].position, rest[at + 1]?.position ?? null);
243
+ }
244
+ await tx
245
+ .update(favorites)
246
+ .set({ position })
247
+ .where(and(eq(favorites.workspaceId, workspaceId), eq(favorites.userId, userId), eq(favorites.pageId, pageId)));
248
+ },
249
+ /**
250
+ * Who is watching this page, and whether you are among them.
251
+ *
252
+ * The list is not filtered to the caller: unlike a favourite, a watch is a fact about the page
253
+ * that everyone who can read the page can see — it is what a "3 people are watching" line beside
254
+ * the button is drawn from.
255
+ */
256
+ async watchState(tx, workspaceId, pageId, userId) {
257
+ const rows = await tx
258
+ .select({ userId: watchers.userId })
259
+ .from(watchers)
260
+ .where(and(eq(watchers.workspaceId, workspaceId), eq(watchers.pageId, pageId)))
261
+ .orderBy(asc(watchers.userId));
262
+ return {
263
+ watching: rows.some((row) => row.userId === userId),
264
+ watchers: rows.map((row) => row.userId),
265
+ };
266
+ },
267
+ async setWatching(tx, workspaceId, pageId, userId, watching) {
268
+ if (watching)
269
+ await tx.insert(watchers).values({ workspaceId, userId, pageId }).onConflictDoNothing();
270
+ else
271
+ await tx
272
+ .delete(watchers)
273
+ .where(and(eq(watchers.workspaceId, workspaceId), eq(watchers.userId, userId), eq(watchers.pageId, pageId)));
274
+ return this.watchState(tx, workspaceId, pageId, userId);
275
+ },
276
+ /**
277
+ * Where this person has just been, newest first.
278
+ *
279
+ * Over-fetched before the permission filter and sliced after it: filtering a page of exactly
280
+ * `limit` rows would hand back four entries when six of the ten most recent are pages somebody
281
+ * has since been shut out of, and the older ones they can still read would never appear. The
282
+ * over-fetch is bounded so a denied stretch costs one wider query rather than a scan.
283
+ */
284
+ async listRecents(tx, principal, workspaceId, userId, limit) {
285
+ const rows = await tx
286
+ .select({
287
+ workspaceId: recentViews.workspaceId,
288
+ userId: recentViews.userId,
289
+ pageId: recentViews.pageId,
290
+ viewedAt: recentViews.viewedAt,
291
+ ...pageBits,
292
+ })
293
+ .from(recentViews)
294
+ .innerJoin(pages, and(eq(pages.workspaceId, recentViews.workspaceId), eq(pages.id, recentViews.pageId)))
295
+ .where(and(eq(recentViews.workspaceId, workspaceId), eq(recentViews.userId, userId), isNull(pages.deletedAt)))
296
+ .orderBy(desc(recentViews.viewedAt))
297
+ .limit(Math.min(limit * 3, 150));
298
+ return (await readable(tx, principal, workspaceId, rows)).slice(0, limit).map((row) => ({
299
+ workspaceId: row.workspaceId,
300
+ userId: row.userId,
301
+ pageId: row.pageId,
302
+ viewedAt: row.viewedAt.toISOString(),
303
+ spaceId: row.spaceId,
304
+ title: row.title,
305
+ icon: row.icon,
306
+ kind: row.kind,
307
+ }));
308
+ },
309
+ /** One row per person per page, bumped rather than appended — re-opening moves it up the list. */
310
+ async recordRecent(tx, workspaceId, userId, pageId) {
311
+ const viewedAt = new Date();
312
+ await tx
313
+ .insert(recentViews)
314
+ .values({ workspaceId, userId, pageId, viewedAt })
315
+ .onConflictDoUpdate({ target: [recentViews.userId, recentViews.pageId], set: { viewedAt } });
316
+ },
317
+ };
318
+ }
319
+ //# sourceMappingURL=organisation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organisation.js","sourceRoot":"","sources":["../../../src/server/services/organisation.ts"],"names":[],"mappings":"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"}
@@ -37,7 +37,22 @@ export declare function quirePages(access: QuireAccess): {
37
37
  archivedAt: string | null;
38
38
  deletedAt: string | null;
39
39
  }>;
40
- trash(tx: Tx, workspaceId: string, spaceId: string, limit: number, cursor: string | null): Promise<{
40
+ /**
41
+ * What is in the space's trash, filtered to what this person may actually read.
42
+ *
43
+ * The procedure is space-scoped — you reach the screen by being allowed to edit *somewhere* in
44
+ * the space — so without a second, narrower question every row here is a title handed to
45
+ * whoever can open the screen, including the pages a page-scoped DENY closed to them. That is
46
+ * a real leak rather than a tidiness point: `pages.get`, `pages.restore` and `pages.purge` are
47
+ * all page-scoped, so an unfiltered row names a page its reader can neither open, put back nor
48
+ * delete. It exists only to say what it was called.
49
+ *
50
+ * The check is `quire.page.view`, the permission that governs seeing a title, and it is asked
51
+ * per page rather than per space — the same rule `favorites.list` and `recents.list` follow.
52
+ * The cursor is taken from the window *before* filtering, so removing a row cannot make the
53
+ * next page skip one.
54
+ */
55
+ trash(tx: Tx, principal: Principal, workspaceId: string, spaceId: string, limit: number, cursor: string | null): Promise<{
41
56
  items: {
42
57
  id: string;
43
58
  workspaceId: string & import("zod").$brand<"WorkspaceId">;
@@ -1 +1 @@
1
- {"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../../src/server/services/pages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,EAAa,KAAK,EAAE,EAAU,MAAM,gBAAgB,CAAA;AAG3D,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,KAAK,OAAO,GAAG,OAAO,KAAK,CAAC,YAAY,CAAA;AAExC,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,GAAG,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAO/E;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAoBzC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW;IA8B1C;;;;;OAKG;aACY,EAAE,eAAe,MAAM,WAAW,MAAM,mBAAmB,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YA6CzF,EAAE,eAAe,MAAM,UAAU,MAAM;;;;;;;;;;;;;;;;;;;cAIrC,EAAE,eAAe,MAAM,WAAW,MAAM,SAAS,MAAM,UAAU,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;eAmBxF,EAAE,aACK,SAAS,eACP,MAAM,SACZ;QACL,OAAO,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;QACvB,KAAK,EAAE,MAAM,CAAA;QACb,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;QACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KACvB;;;;;;;;;;;;;;;;;;;eA2BG,EAAE,aACK,SAAS,eACP,MAAM,UACX,MAAM,SACP,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC,CAAC;;;;;;;;;;;;;;;;;;;IAWvE;;;;;;OAMG;aAEG,EAAE,aACK,SAAS,eACP,MAAM,UACX,MAAM,YACJ,MAAM,GAAG,IAAI,WACd,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;;;;;gBAqBN,EAAE,aAAa,SAAS,eAAe,MAAM,UAAU,MAAM,YAAY,OAAO;;;;;;;;;;;;;;;;;;;IAclG,iFAAiF;mBAC5D,EAAE,eAAe,MAAM,UAAU,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAehF,0FAA0F;kBACtE,EAAE,eAAe,MAAM,UAAU,MAAM;;;IAU3D;;;OAGG;gBACe,EAAE,eAAe,MAAM,UAAU,MAAM;;;;;;;;;;;;;;;;;;;IA0BzD,kFAAkF;cAClE,EAAE,eAAe,MAAM,UAAU,MAAM;;;IAOvD,gFAAgF;;EAGnF;AACD,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA"}
1
+ {"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../../src/server/services/pages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,EAAa,KAAK,EAAE,EAAU,MAAM,gBAAgB,CAAA;AAG3D,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,KAAK,OAAO,GAAG,OAAO,KAAK,CAAC,YAAY,CAAA;AAExC,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,GAAG,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAO/E;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAoBzC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW;IAmF1C;;;;;OAKG;aACY,EAAE,eAAe,MAAM,WAAW,MAAM,mBAAmB,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YA6CzF,EAAE,eAAe,MAAM,UAAU,MAAM;;;;;;;;;;;;;;;;;;;IAIrD;;;;;;;;;;;;;;OAcG;cAEG,EAAE,aACK,SAAS,eACP,MAAM,WACV,MAAM,SACR,MAAM,UACL,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;eAsBjB,EAAE,aACK,SAAS,eACP,MAAM,SACZ;QACL,OAAO,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;QACvB,KAAK,EAAE,MAAM,CAAA;QACb,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;QACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KACvB;;;;;;;;;;;;;;;;;;;eA2BG,EAAE,aACK,SAAS,eACP,MAAM,UACX,MAAM,SACP,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC,CAAC;;;;;;;;;;;;;;;;;;;IAWvE;;;;;;OAMG;aAEG,EAAE,aACK,SAAS,eACP,MAAM,UACX,MAAM,YACJ,MAAM,GAAG,IAAI,WACd,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;;;;;gBAqBN,EAAE,aAAa,SAAS,eAAe,MAAM,UAAU,MAAM,YAAY,OAAO;;;;;;;;;;;;;;;;;;;IAclG,iFAAiF;mBAC5D,EAAE,eAAe,MAAM,UAAU,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAehF,0FAA0F;kBACtE,EAAE,eAAe,MAAM,UAAU,MAAM;;;IAU3D;;;OAGG;gBACe,EAAE,eAAe,MAAM,UAAU,MAAM;;;;;;;;;;;;;;;;;;;IA0BzD,kFAAkF;cAClE,EAAE,eAAe,MAAM,UAAU,MAAM;;;IAOvD,gFAAgF;;EAGnF;AACD,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA"}