@kernhq/module-quire 0.8.0 → 0.9.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 (73) hide show
  1. package/README.md +93 -55
  2. package/dist/{server → client}/formula.d.ts +6 -0
  3. package/dist/client/formula.d.ts.map +1 -0
  4. package/dist/{server → client}/formula.js +6 -0
  5. package/dist/client/formula.js.map +1 -0
  6. package/dist/contract/properties.d.ts +26 -0
  7. package/dist/contract/properties.d.ts.map +1 -1
  8. package/dist/contract/properties.js +24 -0
  9. package/dist/contract/properties.js.map +1 -1
  10. package/dist/contract/router.d.ts +334 -0
  11. package/dist/contract/router.d.ts.map +1 -1
  12. package/dist/contract/router.js +43 -1
  13. package/dist/contract/router.js.map +1 -1
  14. package/dist/server/_impl.d.ts +341 -0
  15. package/dist/server/_impl.d.ts.map +1 -1
  16. package/dist/server/_impl.js +79 -10
  17. package/dist/server/_impl.js.map +1 -1
  18. package/dist/server/services/databases.d.ts +73 -1
  19. package/dist/server/services/databases.d.ts.map +1 -1
  20. package/dist/server/services/databases.js +167 -10
  21. package/dist/server/services/databases.js.map +1 -1
  22. package/dist/server/services/pages.d.ts.map +1 -1
  23. package/dist/server/services/pages.js +11 -1
  24. package/dist/server/services/pages.js.map +1 -1
  25. package/dist/server/services/query.d.ts.map +1 -1
  26. package/dist/server/services/query.js +93 -37
  27. package/dist/server/services/query.js.map +1 -1
  28. package/migrations/0006_rank_collation.sql +14 -0
  29. package/migrations/meta/_journal.json +7 -0
  30. package/package.json +3 -2
  31. package/src/client/components/PageTreeRow.svelte +1 -1
  32. package/src/client/core-api.ts +38 -0
  33. package/src/client/database/BoardView.svelte +354 -0
  34. package/src/client/database/CalendarView.svelte +346 -0
  35. package/src/client/database/DatabaseView.svelte +785 -0
  36. package/src/client/database/FilterMenu.svelte +281 -0
  37. package/src/client/database/FilterValue.svelte +176 -0
  38. package/src/client/database/GalleryView.svelte +177 -0
  39. package/src/client/database/ListView.svelte +108 -0
  40. package/src/client/database/OptionChip.svelte +38 -0
  41. package/src/client/database/PropertyDialog.svelte +460 -0
  42. package/src/client/database/PropertyMenu.svelte +162 -0
  43. package/src/client/database/RowPanel.svelte +157 -0
  44. package/src/client/database/SortMenu.svelte +199 -0
  45. package/src/client/database/TableView.svelte +388 -0
  46. package/src/client/database/ViewDialog.svelte +229 -0
  47. package/src/client/database/cells/Cell.svelte +103 -0
  48. package/src/client/database/cells/CheckboxCell.svelte +33 -0
  49. package/src/client/database/cells/ComputedCell.svelte +100 -0
  50. package/src/client/database/cells/DateCell.svelte +97 -0
  51. package/src/client/database/cells/LinkCell.svelte +143 -0
  52. package/src/client/database/cells/NumberCell.svelte +131 -0
  53. package/src/client/database/cells/PersonCell.svelte +116 -0
  54. package/src/client/database/cells/RelationCell.svelte +222 -0
  55. package/src/client/database/cells/SelectCell.svelte +133 -0
  56. package/src/client/database/cells/TextCell.svelte +85 -0
  57. package/src/client/database/colours.ts +27 -0
  58. package/src/client/database/property-types.test.ts +64 -0
  59. package/src/client/database/property-types.ts +294 -0
  60. package/src/client/database/view-config.test.ts +148 -0
  61. package/src/client/database/view-config.ts +102 -0
  62. package/src/client/formula.test.ts +139 -0
  63. package/src/client/formula.ts +430 -0
  64. package/src/client/i18n.ts +1176 -0
  65. package/src/client/index.ts +31 -0
  66. package/src/client/mock.ts +511 -1
  67. package/src/client/pages/PageView.svelte +47 -17
  68. package/src/client/pages/SpacePage.svelte +8 -2
  69. package/src/client/query.ts +17 -4
  70. package/src/contract/properties.ts +28 -0
  71. package/src/contract/router.ts +46 -0
  72. package/dist/server/formula.d.ts.map +0 -1
  73. package/dist/server/formula.js.map +0 -1
@@ -13,10 +13,16 @@ import PageView from './PageView.svelte'
13
13
  * If the space has a home page, that is what opening it means; otherwise this is the first thing
14
14
  * somebody sees, so it has to offer the one action that gets them out of it.
15
15
  */
16
+ /**
17
+ * The shell hands a module route one `params` object and never a named prop, so reading `spaceKey`
18
+ * alone left the query disabled and every space rendered "Space not found".
19
+ */
16
20
  interface Props {
17
- spaceKey: string
21
+ params?: Record<string, string>
22
+ spaceKey?: string
18
23
  }
19
- const { spaceKey }: Props = $props()
24
+ const { params, spaceKey: spaceKeyProp }: Props = $props()
25
+ const spaceKey = $derived(spaceKeyProp ?? params?.space ?? '')
20
26
 
21
27
  const api = getQuireApi()
22
28
  const workspaceSlug = $derived(navigation.workspaceSlug)
@@ -1,10 +1,11 @@
1
1
  /**
2
2
  * Query keys, shaped `[module, entity, …scope]` so a realtime `change` message invalidates exactly
3
- * the queries it touches — `lib/realtime.svelte.ts` compares the `[module, entity]` prefix.
3
+ * the queries it touches — `realtime.svelte.ts` in `@kernhq/ui` compares the `[module, entity]`
4
+ * prefix.
4
5
  *
5
- * The entity names have to match what the server sends in `kernel.realtime.change`: `space` and
6
- * `page`. A key that spells one differently is a screen that never refreshes and nobody notices
7
- * until somebody else edits something.
6
+ * The entity names have to match what the server sends in `kernel.realtime.change`: `space`,
7
+ * `page`, `database` and `row`. A key that spells one differently is a screen that never refreshes
8
+ * and nobody notices until somebody else edits something.
8
9
  */
9
10
  export const quireKeys = {
10
11
  spaces: (workspaceId: string) => ['quire', 'space', workspaceId] as const,
@@ -12,4 +13,16 @@ export const quireKeys = {
12
13
  tree: (workspaceId: string, spaceId: string) => ['quire', 'page', workspaceId, 'tree', spaceId] as const,
13
14
  page: (workspaceId: string, pageId: string) => ['quire', 'page', workspaceId, pageId] as const,
14
15
  trash: (workspaceId: string, spaceId: string) => ['quire', 'page', workspaceId, 'trash', spaceId] as const,
16
+
17
+ /** the schema — properties and views — which every open tab of a database is drawing */
18
+ database: (workspaceId: string, databaseId: string) =>
19
+ ['quire', 'database', workspaceId, databaseId] as const,
20
+ /** keyed under `database` too, because adding a column has to refresh the lookup that finds it */
21
+ databaseForPage: (workspaceId: string, pageId: string) =>
22
+ ['quire', 'database', workspaceId, 'page', pageId] as const,
23
+ rows: (workspaceId: string, databaseId: string, viewId: string | null) =>
24
+ ['quire', 'row', workspaceId, databaseId, viewId ?? 'default'] as const,
25
+ /** a relation cell's search; `row` so any row edit re-resolves the names it draws */
26
+ lookup: (workspaceId: string, databaseId: string, query: string) =>
27
+ ['quire', 'row', workspaceId, databaseId, 'lookup', query] as const,
15
28
  }
@@ -199,3 +199,31 @@ export const Row = z.object({
199
199
  updatedAt: Timestamp,
200
200
  })
201
201
  export type Row = z.infer<typeof Row>
202
+
203
+ /**
204
+ * A row named rather than identified.
205
+ *
206
+ * A relation cell holds page ids and nothing else, so drawing one without this shows a column of
207
+ * uuids. `databases.lookup` answers in this shape for both jobs the cell has — resolving the ids it
208
+ * already holds, and searching for the next one.
209
+ */
210
+ export const RowRef = z.object({
211
+ id: Id,
212
+ title: z.string(),
213
+ icon: z.string().nullable(),
214
+ })
215
+ export type RowRef = z.infer<typeof RowRef>
216
+
217
+ /**
218
+ * A database named rather than identified.
219
+ *
220
+ * A relation column has to point at another database, and a rollup has to walk one — so the
221
+ * property editor needs the list of them. `Database` itself carries every property and every view,
222
+ * which is a large answer to "what may I link to".
223
+ */
224
+ export const DatabaseRef = z.object({
225
+ id: Id,
226
+ pageId: Id,
227
+ name: z.string(),
228
+ })
229
+ export type DatabaseRef = z.infer<typeof DatabaseRef>
@@ -14,10 +14,12 @@ import {
14
14
  } from './models.js'
15
15
  import {
16
16
  Database,
17
+ DatabaseRef,
17
18
  Property,
18
19
  PropertyConfig,
19
20
  PropertyType,
20
21
  Row,
22
+ RowRef,
21
23
  View,
22
24
  ViewConfig,
23
25
  ViewKind,
@@ -202,6 +204,40 @@ export const quireContract = {
202
204
  .route({ method: 'GET', path: '/databases/{databaseId}', ...t('databases') })
203
205
  .input(ws.extend({ databaseId: Id }))
204
206
  .output(Database),
207
+ /**
208
+ * The database a `database` page draws, or null.
209
+ *
210
+ * A page carries no field pointing at it: `pages.database_id` already means "this page is a
211
+ * *row of* that database", and giving the same name a second, opposite meaning is what made the
212
+ * database appear as the first row of itself. So the direction nobody can express in `Page` is
213
+ * asked for here instead.
214
+ */
215
+ forPage: baseContract
216
+ .route({ method: 'GET', path: '/pages/{pageId}/database', ...t('databases') })
217
+ .input(ws.extend({ pageId: Id }))
218
+ .output(Database.nullable()),
219
+ /** Every database in a space, named — what a relation or a rollup is allowed to point at. */
220
+ list: baseContract
221
+ .route({ method: 'GET', path: '/spaces/{spaceId}/databases', ...t('databases') })
222
+ .input(ws.extend({ spaceId: Id }))
223
+ .output(z.array(DatabaseRef)),
224
+ /**
225
+ * Rows named rather than identified — what a relation cell draws, and what it searches.
226
+ *
227
+ * `ids` resolves what a cell already holds; `query` finds the next one. Both in one procedure
228
+ * because a cell needs both within a keystroke of each other.
229
+ */
230
+ lookup: baseContract
231
+ .route({ method: 'GET', path: '/databases/{databaseId}/lookup', ...t('databases') })
232
+ .input(
233
+ ws.extend({
234
+ databaseId: Id,
235
+ query: z.string().max(200).default(''),
236
+ ids: z.array(Id).max(200).default([]),
237
+ limit: z.number().int().min(1).max(100).default(25),
238
+ }),
239
+ )
240
+ .output(z.array(RowRef)),
205
241
  /** Turn a page into a database. It arrives with one column and one view, never empty. */
206
242
  create: baseContract
207
243
  .route({ method: 'POST', path: '/databases', ...t('databases') })
@@ -263,6 +299,16 @@ export const quireContract = {
263
299
  }),
264
300
  )
265
301
  .output(Property),
302
+ /**
303
+ * Reorder a column. `afterId` is the column to land behind; null means first.
304
+ *
305
+ * The rank is minted by the server, exactly as `pages.move` does it — a client that sends a
306
+ * raw fractional index is a client that can write one two other people are already using.
307
+ */
308
+ moveProperty: baseContract
309
+ .route({ method: 'POST', path: '/properties/{propertyId}/move', ...t('databases') })
310
+ .input(ws.extend({ propertyId: Id, afterId: Id.nullable().default(null) }))
311
+ .output(Property),
266
312
  removeProperty: baseContract
267
313
  .route({ method: 'DELETE', path: '/properties/{propertyId}', ...t('databases') })
268
314
  .input(ws.extend({ propertyId: Id }))
@@ -1 +0,0 @@
1
- {"version":3,"file":"formula.d.ts","sourceRoot":"","sources":["../../src/server/formula.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,CAAA;AAElE,MAAM,MAAM,GAAG,GACX;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,GAAG,GAAG,KAAK,CAAC;IAAC,OAAO,EAAE,GAAG,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,GAAG,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,GAAG,EAAE,CAAA;CAAE;AAC7C;;;;;;;;GAQG;GACD;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC;IAAC,UAAU,EAAE,GAAG,CAAC;IAAC,SAAS,EAAE,GAAG,CAAA;CAAE,CAAA;AAE9D,qBAAa,YAAa,SAAQ,KAAK;CAAG;AAyG1C,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAgF/C;AAqHD,MAAM,WAAW,cAAc;IAC7B,wFAAwF;IACxF,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAA;CACjC;AAKD,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,SAAI,GAAG,YAAY,CAwDtF;AAED,0GAA0G;AAC1G,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,cAAoB,GAAG,GAAG,CAAC,MAAM,CAAC,CAsBlF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"formula.js","sourceRoot":"","sources":["../../src/server/formula.ts"],"names":[],"mappings":"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"}