@kernhq/module-quire 0.13.1 → 0.15.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 +394 -0
- package/dist/contract/models.d.ts.map +1 -1
- package/dist/contract/models.js +284 -0
- package/dist/contract/models.js.map +1 -1
- package/dist/contract/permissions.d.ts +14 -0
- package/dist/contract/permissions.d.ts.map +1 -1
- package/dist/contract/permissions.js +114 -0
- package/dist/contract/permissions.js.map +1 -1
- package/dist/contract/properties.d.ts +7 -7
- package/dist/contract/router.d.ts +1124 -96
- package/dist/contract/router.d.ts.map +1 -1
- package/dist/contract/router.js +343 -1
- package/dist/contract/router.js.map +1 -1
- package/dist/server/_impl.d.ts +983 -1168
- package/dist/server/_impl.d.ts.map +1 -1
- package/dist/server/_impl.js +308 -0
- package/dist/server/_impl.js.map +1 -1
- package/dist/server/export/html.d.ts +67 -0
- package/dist/server/export/html.d.ts.map +1 -0
- package/dist/server/export/html.js +206 -0
- package/dist/server/export/html.js.map +1 -0
- package/dist/server/export/markdown.d.ts +51 -0
- package/dist/server/export/markdown.d.ts.map +1 -0
- package/dist/server/export/markdown.js +351 -0
- package/dist/server/export/markdown.js.map +1 -0
- package/dist/server/export/pdf.d.ts +20 -0
- package/dist/server/export/pdf.d.ts.map +1 -0
- package/dist/server/export/pdf.js +91 -0
- package/dist/server/export/pdf.js.map +1 -0
- package/dist/server/export/zip.d.ts +31 -0
- package/dist/server/export/zip.d.ts.map +1 -0
- package/dist/server/export/zip.js +158 -0
- package/dist/server/export/zip.js.map +1 -0
- package/dist/server/import/csv.d.ts +77 -0
- package/dist/server/import/csv.d.ts.map +1 -0
- package/dist/server/import/csv.js +263 -0
- package/dist/server/import/csv.js.map +1 -0
- package/dist/server/import/html.d.ts +52 -0
- package/dist/server/import/html.d.ts.map +1 -0
- package/dist/server/import/html.js +472 -0
- package/dist/server/import/html.js.map +1 -0
- package/dist/server/import/markdown.d.ts +63 -0
- package/dist/server/import/markdown.d.ts.map +1 -0
- package/dist/server/import/markdown.js +692 -0
- package/dist/server/import/markdown.js.map +1 -0
- package/dist/server/import/plan.d.ts +70 -0
- package/dist/server/import/plan.d.ts.map +1 -0
- package/dist/server/import/plan.js +761 -0
- package/dist/server/import/plan.js.map +1 -0
- package/dist/server/import/ydoc.d.ts +35 -0
- package/dist/server/import/ydoc.d.ts.map +1 -0
- package/dist/server/import/ydoc.js +91 -0
- package/dist/server/import/ydoc.js.map +1 -0
- package/dist/server/import/zip.d.ts +63 -0
- package/dist/server/import/zip.d.ts.map +1 -0
- package/dist/server/import/zip.js +308 -0
- package/dist/server/import/zip.js.map +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +3 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/render.d.ts +158 -0
- package/dist/server/render.d.ts.map +1 -1
- package/dist/server/render.js +240 -0
- package/dist/server/render.js.map +1 -1
- package/dist/server/schema.d.ts +704 -1
- package/dist/server/schema.d.ts.map +1 -1
- package/dist/server/schema.js +254 -1
- package/dist/server/schema.js.map +1 -1
- package/dist/server/services/databases.d.ts +10 -10
- package/dist/server/services/export.d.ts +176 -0
- package/dist/server/services/export.d.ts.map +1 -0
- package/dist/server/services/export.js +822 -0
- package/dist/server/services/export.js.map +1 -0
- package/dist/server/services/import.d.ts +109 -0
- package/dist/server/services/import.d.ts.map +1 -0
- package/dist/server/services/import.js +570 -0
- package/dist/server/services/import.js.map +1 -0
- package/dist/server/services/index.d.ts +32 -1
- package/dist/server/services/index.d.ts.map +1 -1
- package/dist/server/services/index.js +87 -4
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/macros.d.ts +83 -0
- package/dist/server/services/macros.d.ts.map +1 -0
- package/dist/server/services/macros.js +488 -0
- package/dist/server/services/macros.js.map +1 -0
- package/dist/server/services/publications.d.ts +2 -1
- package/dist/server/services/publications.d.ts.map +1 -1
- package/dist/server/services/publications.js +43 -4
- package/dist/server/services/publications.js.map +1 -1
- package/dist/server/services/templates.d.ts +135 -0
- package/dist/server/services/templates.d.ts.map +1 -0
- package/dist/server/services/templates.js +897 -0
- package/dist/server/services/templates.js.map +1 -0
- package/dist/server/services/versions.d.ts +13 -1
- package/dist/server/services/versions.d.ts.map +1 -1
- package/dist/server/services/versions.js +3 -1
- package/dist/server/services/versions.js.map +1 -1
- package/migrations/0010_transfers.sql +154 -0
- package/migrations/0011_templates.sql +157 -0
- package/migrations/meta/_journal.json +14 -0
- package/package.json +5 -5
- package/src/client/components/ExportDialog.svelte +685 -0
- package/src/client/components/ImportDialog.svelte +702 -0
- package/src/client/components/ImportReport.svelte +310 -0
- package/src/client/components/NewSpaceDialog.svelte +77 -8
- package/src/client/components/PageEditor.svelte +80 -0
- package/src/client/components/PagePicker.svelte +264 -0
- package/src/client/components/SaveAsTemplateDialog.svelte +502 -0
- package/src/client/components/SidebarSpaces.svelte +112 -1
- package/src/client/components/TemplatePicker.svelte +437 -0
- package/src/client/i18n.ts +941 -0
- package/src/client/index.ts +51 -0
- package/src/client/mock.ts +592 -0
- package/src/client/module.ts +36 -0
- package/src/client/pages/PageView.svelte +86 -0
- package/src/client/pages/SpacePage.svelte +20 -4
- package/src/client/pages/TransfersPage.svelte +570 -0
- package/src/client/permissions.ts +11 -0
- package/src/client/query.ts +40 -0
- package/src/client/transfers.ts +142 -0
- package/src/contract/models.ts +343 -0
- package/src/contract/permissions.ts +117 -0
- package/src/contract/router.ts +375 -0
package/dist/contract/models.js
CHANGED
|
@@ -284,5 +284,289 @@ export const Publication = z.object({
|
|
|
284
284
|
createdAt: Timestamp,
|
|
285
285
|
updatedAt: Timestamp,
|
|
286
286
|
});
|
|
287
|
+
// =====================================================================================
|
|
288
|
+
// Getting work in and out
|
|
289
|
+
// =====================================================================================
|
|
290
|
+
/**
|
|
291
|
+
* How much of the tree an export takes.
|
|
292
|
+
*
|
|
293
|
+
* `page` is one page; `subtree` is a page and everything under it; `space` is every page in a space.
|
|
294
|
+
* The three are not a convenience — they are the three questions people actually ask ("send me this",
|
|
295
|
+
* "send me this section", "get us off this product"), and the middle one is the one a flat
|
|
296
|
+
* page-by-page export cannot answer without somebody clicking three hundred times.
|
|
297
|
+
*/
|
|
298
|
+
export const ExportScope = z.enum(['page', 'subtree', 'space']);
|
|
299
|
+
/**
|
|
300
|
+
* What comes out.
|
|
301
|
+
*
|
|
302
|
+
* `html` and `pdf` are rendered by the same static renderer the public site uses — never the live
|
|
303
|
+
* document and never the draft, so an export of a `page` is what a reader is served rather than what
|
|
304
|
+
* the last person to open it happened to be typing.
|
|
305
|
+
*/
|
|
306
|
+
export const ExportFormat = z.enum(['markdown', 'html', 'docx', 'pdf']);
|
|
307
|
+
/** Where a transfer is. `done` and `failed` are terminal; nothing moves out of either. */
|
|
308
|
+
export const TransferState = z.enum(['queued', 'running', 'done', 'failed']);
|
|
309
|
+
/**
|
|
310
|
+
* A job's own progress, shared by both directions.
|
|
311
|
+
*
|
|
312
|
+
* `skipped` is the counter that matters and the one a progress bar leaves out. An export skips a page
|
|
313
|
+
* the requester may not read; an import skips a file it cannot map. Reporting the count is the
|
|
314
|
+
* difference between an artefact that is quietly missing things and one that says how many.
|
|
315
|
+
*
|
|
316
|
+
* Every field defaults, so a job that has not started yet parses as four zeroes rather than as
|
|
317
|
+
* absent — a client should never have to distinguish "no progress" from "no counters".
|
|
318
|
+
*/
|
|
319
|
+
export const TransferCounts = z.object({
|
|
320
|
+
total: z.number().int().nonnegative().default(0),
|
|
321
|
+
done: z.number().int().nonnegative().default(0),
|
|
322
|
+
skipped: z.number().int().nonnegative().default(0),
|
|
323
|
+
failed: z.number().int().nonnegative().default(0),
|
|
324
|
+
});
|
|
325
|
+
/**
|
|
326
|
+
* A request to take a page, a subtree or a space out of Quire as a file.
|
|
327
|
+
*
|
|
328
|
+
* There is no artefact URL here and there should not be. `fileId` is an opaque id, not an address:
|
|
329
|
+
* the download is a signed URL a procedure mints per request, so that the fence on who may fetch a
|
|
330
|
+
* subtree export — which flattens pages of different readerships into one file — is applied at the
|
|
331
|
+
* moment of the fetch rather than baked into a link that outlives it. A client that builds a storage
|
|
332
|
+
* key from an id is the mistake `migrations/0009` had to go back and scrub out of published HTML.
|
|
333
|
+
*/
|
|
334
|
+
export const ExportJob = z.object({
|
|
335
|
+
id: Id,
|
|
336
|
+
workspaceId: WorkspaceId,
|
|
337
|
+
requestedBy: UserId,
|
|
338
|
+
scope: ExportScope,
|
|
339
|
+
/** the page for `page` and `subtree`, the space for `space`; `scope` says which */
|
|
340
|
+
targetId: Id,
|
|
341
|
+
format: ExportFormat,
|
|
342
|
+
state: TransferState,
|
|
343
|
+
/** null until the job succeeds — an artefact that is still being written is not offered */
|
|
344
|
+
fileId: Id.nullable(),
|
|
345
|
+
/**
|
|
346
|
+
* Why it failed, in the words of whatever failed — a Gotenberg refusal, the name of a page that
|
|
347
|
+
* would not render. Diagnostic, not a user-facing string: a screen says its piece from a message
|
|
348
|
+
* key chosen by `state`, and shows this beside it for the person who has to act on it.
|
|
349
|
+
*/
|
|
350
|
+
error: z.string().nullable(),
|
|
351
|
+
counts: TransferCounts,
|
|
352
|
+
createdAt: Timestamp,
|
|
353
|
+
/** null while `queued` or `running` */
|
|
354
|
+
finishedAt: Timestamp.nullable(),
|
|
355
|
+
});
|
|
356
|
+
/** What kind of export is being read in. */
|
|
357
|
+
export const ImportSource = z.enum(['notion', 'confluence', 'markdown']);
|
|
358
|
+
/**
|
|
359
|
+
* What happened to one file.
|
|
360
|
+
*
|
|
361
|
+
* Three outcomes and not two, because "not imported" covers two different situations a person needs
|
|
362
|
+
* to tell apart: a file Quire deliberately did not want (an asset already inlined, a Notion index
|
|
363
|
+
* page that duplicates the folder) is `skipped`, and a file that should have become a page and did
|
|
364
|
+
* not is `failed`. Collapsing them turns a broken import into a tidy-looking one.
|
|
365
|
+
*/
|
|
366
|
+
export const ImportOutcome = z.enum(['imported', 'skipped', 'failed']);
|
|
367
|
+
/**
|
|
368
|
+
* One row of the report: what the file was, what became of it, and which.
|
|
369
|
+
*
|
|
370
|
+
* The failure list is the feature. A real Notion export has files that will not map, and an import
|
|
371
|
+
* that silently drops forty pages is worse than one that refuses — so every file in the upload gets
|
|
372
|
+
* an entry, including the ones that worked, and the report is complete rather than a list of
|
|
373
|
+
* complaints. `path` is the path inside the archive, which is what somebody has to go and look at.
|
|
374
|
+
*/
|
|
375
|
+
export const ImportReportEntry = z.object({
|
|
376
|
+
/** the file's path inside the uploaded archive, exactly as it appeared */
|
|
377
|
+
path: z.string(),
|
|
378
|
+
outcome: ImportOutcome,
|
|
379
|
+
/** the page it became, for `imported`; null for the other two */
|
|
380
|
+
pageId: Id.nullable().default(null),
|
|
381
|
+
/**
|
|
382
|
+
* Why, for `skipped` and `failed`; null for `imported`.
|
|
383
|
+
*
|
|
384
|
+
* Free text on purpose: the reasons are as varied as the exports people have, and a closed enum
|
|
385
|
+
* here would either be wrong within a week or force every unexpected file into an `other` that
|
|
386
|
+
* tells nobody anything.
|
|
387
|
+
*/
|
|
388
|
+
reason: z.string().nullable().default(null),
|
|
389
|
+
});
|
|
390
|
+
/**
|
|
391
|
+
* A Notion export zip, a Confluence export or a folder of Markdown, on its way into one space.
|
|
392
|
+
*
|
|
393
|
+
* `sourceFileId` is the upload, not an artefact — the opposite direction from `ExportJob.fileId`, and
|
|
394
|
+
* named differently for that reason. An import produces pages, not a file.
|
|
395
|
+
*
|
|
396
|
+
* Internal links between imported pages are rewritten to Quire page ids as the import goes; a link
|
|
397
|
+
* that cannot be resolved becomes plain text rather than a dead link, and the page that carried it
|
|
398
|
+
* still counts as `imported`. That choice is why `report` is per *file* and not per *link*: a page
|
|
399
|
+
* that arrived with one unresolvable link is an imported page, not a failure.
|
|
400
|
+
*/
|
|
401
|
+
export const ImportJob = z.object({
|
|
402
|
+
id: Id,
|
|
403
|
+
workspaceId: WorkspaceId,
|
|
404
|
+
requestedBy: UserId,
|
|
405
|
+
source: ImportSource,
|
|
406
|
+
/** the space being written into. An import always targets one space; there is no scope here. */
|
|
407
|
+
targetId: Id,
|
|
408
|
+
/** the uploaded archive — consumed by the job, and present before the job exists */
|
|
409
|
+
sourceFileId: Id,
|
|
410
|
+
state: TransferState,
|
|
411
|
+
/** why the *job* failed; why one *file* failed is that file's entry in `report` */
|
|
412
|
+
error: z.string().nullable(),
|
|
413
|
+
counts: TransferCounts,
|
|
414
|
+
/** one entry per file in the upload, in the order they were read */
|
|
415
|
+
report: z.array(ImportReportEntry),
|
|
416
|
+
createdAt: Timestamp,
|
|
417
|
+
/** null while `queued` or `running` */
|
|
418
|
+
finishedAt: Timestamp.nullable(),
|
|
419
|
+
});
|
|
420
|
+
// =====================================================================================
|
|
421
|
+
// Templates
|
|
422
|
+
// =====================================================================================
|
|
423
|
+
/**
|
|
424
|
+
* What a template makes.
|
|
425
|
+
*
|
|
426
|
+
* `page` — one page; the body is a page doc.
|
|
427
|
+
* `space` — a whole space; the body is a tree of pages, each with its own body.
|
|
428
|
+
*
|
|
429
|
+
* Two rather than one with a "just make the root" flag, because they are made from different places
|
|
430
|
+
* and answer different questions: a page template is offered on "New page" inside a space that
|
|
431
|
+
* already exists, and a space template is what somebody reaches for when there is no space yet.
|
|
432
|
+
*/
|
|
433
|
+
export const TemplateKind = z.enum(['page', 'space']);
|
|
434
|
+
/**
|
|
435
|
+
* The starters this module ships.
|
|
436
|
+
*
|
|
437
|
+
* **They are constants in the module, not rows in a customer's database**, and the key is what a
|
|
438
|
+
* constant has instead of an id. `migrations/0011_templates.sql` argues the choice at length; the
|
|
439
|
+
* short of it is that a migration runs once per *database* and has no workspace to seed into, that a
|
|
440
|
+
* seeded row is frozen at the release that wrote it, and that a row holds one language in a product
|
|
441
|
+
* that ships five.
|
|
442
|
+
*
|
|
443
|
+
* A workspace edits a starter by **overriding** it: a `Template` row carrying one of these keys takes
|
|
444
|
+
* that starter's place in the picker rather than sitting beside it, so the first edit writes one row,
|
|
445
|
+
* a workspace that never touches them has none, and resetting is deleting the row.
|
|
446
|
+
*
|
|
447
|
+
* `Template.key` is deliberately **not** this enum — see the comment there.
|
|
448
|
+
*/
|
|
449
|
+
export const TemplateStarterKey = z.enum([
|
|
450
|
+
'meeting-notes',
|
|
451
|
+
'decision-record',
|
|
452
|
+
'requirements',
|
|
453
|
+
'retrospective',
|
|
454
|
+
'how-to',
|
|
455
|
+
]);
|
|
456
|
+
export const TEMPLATE_STARTER_KEYS = TemplateStarterKey.options;
|
|
457
|
+
/**
|
|
458
|
+
* What a variable's type decides, which is **the control somebody is shown and not the storage**.
|
|
459
|
+
*
|
|
460
|
+
* Every filled value is substituted into prose as text, whatever the type: `{{sprint}}` in a heading
|
|
461
|
+
* becomes characters in a heading. The type is what turns "type the date" into a date picker and
|
|
462
|
+
* "type one of these four" into a menu — the difference between a form somebody fills correctly and
|
|
463
|
+
* one they fill approximately.
|
|
464
|
+
*/
|
|
465
|
+
export const TemplateVariableType = z.enum(['text', 'number', 'date', 'select', 'user']);
|
|
466
|
+
/**
|
|
467
|
+
* The names a template author may not take, because the module already fills them.
|
|
468
|
+
*
|
|
469
|
+
* `date` and `author` are the two the plan names. The other three are reserved now rather than
|
|
470
|
+
* later, and that is the whole reason the list is longer than it needs to be today: adding
|
|
471
|
+
* `{{time}}` in a future release would silently change what an existing template renders if some
|
|
472
|
+
* author had already declared a variable of that name. Reserving a name costs an author one
|
|
473
|
+
* synonym; taking one back costs somebody a document that used to be right.
|
|
474
|
+
*/
|
|
475
|
+
export const TEMPLATE_BUILT_IN_VARIABLES = ['date', 'time', 'author', 'space', 'workspace'];
|
|
476
|
+
/**
|
|
477
|
+
* What appears between the braces.
|
|
478
|
+
*
|
|
479
|
+
* ASCII, lowercase, no spaces — the same shape as `Space.key` and for the same reason: this string
|
|
480
|
+
* is matched against the body, so `{{Sprint}}` and `{{sprint}}` being two variables is exactly the
|
|
481
|
+
* near-duplicate that `labels_ws_space_name_uq` refuses next door. An author's own language belongs
|
|
482
|
+
* in `label`, which is the half a person actually reads.
|
|
483
|
+
*/
|
|
484
|
+
export const TemplateVariableName = z
|
|
485
|
+
.string()
|
|
486
|
+
.min(1)
|
|
487
|
+
.max(40)
|
|
488
|
+
.regex(/^[a-z][a-z0-9_]*$/, 'lowercase letters, digits and underscores, starting with a letter')
|
|
489
|
+
.refine((name) => !TEMPLATE_BUILT_IN_VARIABLES.includes(name), 'that name is filled by the module itself');
|
|
490
|
+
/**
|
|
491
|
+
* One thing somebody is asked before the page is made.
|
|
492
|
+
*
|
|
493
|
+
* Every field but `name`, `label` and `type` defaults, so a variable written by an older client
|
|
494
|
+
* still parses. Note what that does to the *output* type: it makes them required, so anything
|
|
495
|
+
* constructing a variable supplies all six — which is the point, and the reason a widened contract
|
|
496
|
+
* is additive for parsing and breaking for constructing.
|
|
497
|
+
*/
|
|
498
|
+
export const TemplateVariable = z.object({
|
|
499
|
+
name: TemplateVariableName,
|
|
500
|
+
/** what the person filling it in reads; their own language goes here, not in `name` */
|
|
501
|
+
label: z.string().min(1).max(120),
|
|
502
|
+
type: TemplateVariableType,
|
|
503
|
+
/** the menu, for `select`; empty for every other type */
|
|
504
|
+
options: z.array(z.string().min(1).max(120)).max(50).default([]),
|
|
505
|
+
/** what the field starts with — text whatever the type, because substitution is textual */
|
|
506
|
+
default: z.string().max(2000).nullable().default(null),
|
|
507
|
+
/** whether the page can be made without it */
|
|
508
|
+
required: z.boolean().default(false),
|
|
509
|
+
});
|
|
510
|
+
export const TemplateSpaceNode = z.lazy(() => z.object({
|
|
511
|
+
title: z.string().max(300),
|
|
512
|
+
icon: z.string().max(64).nullable(),
|
|
513
|
+
/** the page's body, with the same `{{variables}}` in it as any other */
|
|
514
|
+
doc: RichDoc,
|
|
515
|
+
children: z.array(TemplateSpaceNode),
|
|
516
|
+
}));
|
|
517
|
+
/**
|
|
518
|
+
* The body of a `space` template: the tree, under one key.
|
|
519
|
+
*
|
|
520
|
+
* An object rather than a bare array so that `Template.doc` is a JSON object for both kinds — the
|
|
521
|
+
* column defaults to `'{}'`, and a default that is the wrong *type* for half the rows is a default
|
|
522
|
+
* that lies. It also means the two bodies are told apart by their keys rather than by `typeof`.
|
|
523
|
+
*/
|
|
524
|
+
export const TemplateSpaceBody = z.object({ pages: z.array(TemplateSpaceNode) });
|
|
525
|
+
/**
|
|
526
|
+
* A page, or a whole space, saved so it can be made again.
|
|
527
|
+
*
|
|
528
|
+
* `doc` is left opaque here for the reason `RichDoc` is: this file is not what knows the shape of a
|
|
529
|
+
* document. It is a page doc when `kind` is `page` and a `TemplateSpaceBody` when `kind` is `space`,
|
|
530
|
+
* and the server parses the second with the schema above.
|
|
531
|
+
*
|
|
532
|
+
* A shipped starter is not one of these — it has no id, no workspace and no timestamps, because it
|
|
533
|
+
* is a constant. What the picker returns is the starters and these together, with a row carrying a
|
|
534
|
+
* starter's `key` standing in for that starter.
|
|
535
|
+
*/
|
|
536
|
+
export const Template = z.object({
|
|
537
|
+
id: Id,
|
|
538
|
+
workspaceId: WorkspaceId,
|
|
539
|
+
/** null is workspace-wide; a space id scopes it to one space. Always null when `kind` is `space`. */
|
|
540
|
+
spaceId: Id.nullable(),
|
|
541
|
+
kind: TemplateKind,
|
|
542
|
+
/**
|
|
543
|
+
* The starter this row replaces, or null for somebody's own template.
|
|
544
|
+
*
|
|
545
|
+
* `z.string()` and **not** `TemplateStarterKey`, deliberately. This is stored data: a release that
|
|
546
|
+
* stopped shipping a starter would turn every override of it into a parse failure, which is a
|
|
547
|
+
* picker that throws rather than a picker missing one entry. A key naming a starter that no longer
|
|
548
|
+
* exists is an ordinary custom template, and the read side treats it as one.
|
|
549
|
+
*/
|
|
550
|
+
key: z.string().min(1).max(64).nullable(),
|
|
551
|
+
/** true exactly when `key` is set — the database holds the pair to that with a check constraint */
|
|
552
|
+
builtIn: z.boolean(),
|
|
553
|
+
name: z.string().min(1).max(120),
|
|
554
|
+
description: z.string().max(2000),
|
|
555
|
+
/** a Lucide icon name, or an emoji */
|
|
556
|
+
icon: z.string().max(64).nullable(),
|
|
557
|
+
doc: RichDoc,
|
|
558
|
+
variables: z.array(TemplateVariable),
|
|
559
|
+
createdBy: UserId.nullable(),
|
|
560
|
+
createdAt: Timestamp,
|
|
561
|
+
updatedAt: Timestamp,
|
|
562
|
+
});
|
|
563
|
+
/**
|
|
564
|
+
* A template without its body.
|
|
565
|
+
*
|
|
566
|
+
* This exists so that opening a picker does not download every template's prose to draw a list of
|
|
567
|
+
* names — thirty page docs to render thirty rows, of which one is ever used. The body is fetched
|
|
568
|
+
* when a template is chosen.
|
|
569
|
+
*/
|
|
570
|
+
export const TemplateSummary = Template.omit({ doc: true });
|
|
287
571
|
export const Ok = z.object({ ok: z.literal(true) });
|
|
288
572
|
//# sourceMappingURL=models.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/contract/models.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/contract/models.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,6 +54,20 @@ export declare const quirePermissions: readonly [{
|
|
|
54
54
|
readonly scope: "space";
|
|
55
55
|
readonly defaultRoles: ["owner", "admin", "member"];
|
|
56
56
|
readonly dangerous: false;
|
|
57
|
+
}, {
|
|
58
|
+
readonly key: "quire.page.export";
|
|
59
|
+
readonly label: "Export pages";
|
|
60
|
+
readonly description: "Take a page, a section or a space out as Markdown, HTML or PDF";
|
|
61
|
+
readonly scope: "space";
|
|
62
|
+
readonly defaultRoles: ["owner", "admin", "member"];
|
|
63
|
+
readonly dangerous: false;
|
|
64
|
+
}, {
|
|
65
|
+
readonly key: "quire.page.import";
|
|
66
|
+
readonly label: "Import pages";
|
|
67
|
+
readonly description: "Bring a Notion, Confluence or Markdown export into a space as pages";
|
|
68
|
+
readonly scope: "space";
|
|
69
|
+
readonly defaultRoles: ["owner", "admin"];
|
|
70
|
+
readonly dangerous: true;
|
|
57
71
|
}, {
|
|
58
72
|
readonly key: "quire.page.delete";
|
|
59
73
|
readonly label: "Delete pages permanently";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/contract/permissions.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/contract/permissions.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiH3B,CAAA;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAA;IAC3D,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CA4L9D,CAAA"}
|
|
@@ -63,6 +63,56 @@ export const quirePermissions = definePermissions([
|
|
|
63
63
|
defaultRoles: ['owner', 'admin', 'member'],
|
|
64
64
|
dangerous: false,
|
|
65
65
|
},
|
|
66
|
+
/**
|
|
67
|
+
* Taking pages out of Kern as a file.
|
|
68
|
+
*
|
|
69
|
+
* A separate key from `quire.page.view` rather than a consequence of it, and the distinction is
|
|
70
|
+
* one administrators actually make: reading a handbook a page at a time and walking out with the
|
|
71
|
+
* whole thing in a zip are different acts, and the second is the one a leaver does on their last
|
|
72
|
+
* afternoon. Every page in an export is still checked against `quire.page.view` as it is written,
|
|
73
|
+
* so this grants nothing extra — it decides whether the bulk shape is available at all.
|
|
74
|
+
*
|
|
75
|
+
* Not `dangerous`, because it destroys nothing and every page in the result is one the exporter
|
|
76
|
+
* could already open. The import side is the dangerous half: that one writes.
|
|
77
|
+
*
|
|
78
|
+
* A guest is deliberately not in the default set. A guest is somebody invited to read one thing,
|
|
79
|
+
* and the difference between reading it and keeping a copy of the section around it is exactly
|
|
80
|
+
* what a guest is a guest for.
|
|
81
|
+
*/
|
|
82
|
+
{
|
|
83
|
+
key: 'quire.page.export',
|
|
84
|
+
label: 'Export pages',
|
|
85
|
+
description: 'Take a page, a section or a space out as Markdown, HTML or PDF',
|
|
86
|
+
scope: 'space',
|
|
87
|
+
defaultRoles: ['owner', 'admin', 'member'],
|
|
88
|
+
dangerous: false,
|
|
89
|
+
},
|
|
90
|
+
/**
|
|
91
|
+
* Bringing pages in from somewhere else, in bulk.
|
|
92
|
+
*
|
|
93
|
+
* **`dangerous`, where the export half is not**, and the asymmetry is the whole reason this is a
|
|
94
|
+
* separate key rather than `quire.page.create` applied a thousand times. An export reads pages the
|
|
95
|
+
* exporter could already open; an import *writes* — hundreds of pages, a page tree, databases with
|
|
96
|
+
* their columns — into a space, in one act, from a file nobody in the workspace has read. Undoing
|
|
97
|
+
* it means finding every page it made and trashing them, which is not a button. The tracker marks
|
|
98
|
+
* `tracker.import.run` the same way and for the same reason.
|
|
99
|
+
*
|
|
100
|
+
* Owner and admin only, and that is a deliberate step up from `quire.page.create`. Somebody who may
|
|
101
|
+
* write in a space is not thereby somebody who may reshape it: an ordinary member creating pages
|
|
102
|
+
* makes them one at a time, with the tree in front of them.
|
|
103
|
+
*
|
|
104
|
+
* It is not a substitute for the narrower keys. An import still writes only where the requester
|
|
105
|
+
* holds this permission *on that space*, and the job re-asks when it runs rather than trusting the
|
|
106
|
+
* answer from when it was queued — a permission taken away between the two is a job that fails.
|
|
107
|
+
*/
|
|
108
|
+
{
|
|
109
|
+
key: 'quire.page.import',
|
|
110
|
+
label: 'Import pages',
|
|
111
|
+
description: 'Bring a Notion, Confluence or Markdown export into a space as pages',
|
|
112
|
+
scope: 'space',
|
|
113
|
+
defaultRoles: ['owner', 'admin'],
|
|
114
|
+
dangerous: true,
|
|
115
|
+
},
|
|
66
116
|
{
|
|
67
117
|
key: 'quire.page.delete',
|
|
68
118
|
label: 'Delete pages permanently',
|
|
@@ -145,6 +195,70 @@ export const quireProcedureAuthz = {
|
|
|
145
195
|
'databases.updateView': { check: 'page', permission: 'quire.page.edit' },
|
|
146
196
|
'databases.removeView': { check: 'page', permission: 'quire.page.edit' },
|
|
147
197
|
'databases.setRelation': { check: 'page', permission: 'quire.page.edit' },
|
|
198
|
+
/*
|
|
199
|
+
* `start` is declared `page` because that is the branch that can be bound narrowly and therefore
|
|
200
|
+
* the branch worth proving: a `page` or `subtree` export resolves the target page's own ancestor
|
|
201
|
+
* chain and asks about it, so a page-scoped DENY of `quire.page.export` refuses the export of that
|
|
202
|
+
* page and of any section containing it. A `space` export has no one page to resolve — it is the
|
|
203
|
+
* whole space — so that branch asks the same permission at space scope, which is the narrowest
|
|
204
|
+
* scope that exists for it. `export.int.test.ts` covers the space branch against a space-scoped
|
|
205
|
+
* DENY, because the sweep in `authz.int.test.ts` only ever sends the page branch.
|
|
206
|
+
*
|
|
207
|
+
* `get` and `list` are `workspace` for the same reason `favorites.list` is: "my own exports" has
|
|
208
|
+
* no narrower scope. What keeps them private is not a permission at all but the `requested_by`
|
|
209
|
+
* filter in the query — row-level security fences the tenant, and a tenant is not a person.
|
|
210
|
+
*/
|
|
211
|
+
'exports.start': { check: 'page', permission: 'quire.page.export' },
|
|
212
|
+
'exports.get': { check: 'workspace', permission: 'quire.page.export' },
|
|
213
|
+
'exports.list': { check: 'workspace', permission: 'quire.page.export' },
|
|
214
|
+
/*
|
|
215
|
+
* `start` is `space` where its export counterpart is `page`, and the difference is not an
|
|
216
|
+
* oversight. An import has no page to be scoped to — it *creates* the pages — so the space it
|
|
217
|
+
* writes into is the narrowest scope that exists for it, and a space-scoped DENY of
|
|
218
|
+
* `quire.page.import` is what has to refuse it. The check is asked twice on purpose: once here,
|
|
219
|
+
* before a row is recorded, and again inside the job as the person who asked, because a job runs
|
|
220
|
+
* minutes later and a permission can be taken away in between.
|
|
221
|
+
*
|
|
222
|
+
* `get` and `list` are `workspace` for the same reason `exports.get` and `favorites.list` are:
|
|
223
|
+
* "my own imports" has no narrower scope. What keeps them private is the `requested_by` filter in
|
|
224
|
+
* the query rather than a permission — row-level security fences the tenant, and a tenant is not
|
|
225
|
+
* a person.
|
|
226
|
+
*/
|
|
227
|
+
'imports.start': { check: 'space', permission: 'quire.page.import' },
|
|
228
|
+
'imports.get': { check: 'workspace', permission: 'quire.page.import' },
|
|
229
|
+
'imports.list': { check: 'workspace', permission: 'quire.page.import' },
|
|
230
|
+
/*
|
|
231
|
+
* A template is a space's furniture, so it follows `labels.*` exactly: reading is
|
|
232
|
+
* `quire.space.view` and writing is `quire.space.manage`. Changing one changes what everybody in
|
|
233
|
+
* the space is offered the next time they make a page, which is not a thing somebody who may edit
|
|
234
|
+
* one page should be able to do to everybody else's.
|
|
235
|
+
*
|
|
236
|
+
* Three of the five are `check: 'space'` although four of them take a *template* id, not a space
|
|
237
|
+
* id. A template id carries no scope of its own, so the row is read first and the question is
|
|
238
|
+
* asked about the space it belongs to — the same shape as `labels.update` next door. A
|
|
239
|
+
* workspace-wide template (`space_id is null`) has no narrower scope than the workspace, and the
|
|
240
|
+
* handlers say so out loud rather than silently falling back to the space of whoever asked.
|
|
241
|
+
*
|
|
242
|
+
* `createFromPage` is the one that is `check: 'page'`, and it is the interesting one: it *copies a
|
|
243
|
+
* page's prose into a template*, so the question that actually protects anything is whether this
|
|
244
|
+
* person may read that page. A page-scoped DENY of `quire.page.view` has to refuse it, or a
|
|
245
|
+
* contractor allowed one page of a handbook could lift a page they cannot open into a template and
|
|
246
|
+
* read it there. `quire.space.manage` is asked as well, in the same handler, and
|
|
247
|
+
* `templates.int.test.ts` covers that half — this column names one permission, and the one worth
|
|
248
|
+
* proving with a page-scoped binding is the read.
|
|
249
|
+
*
|
|
250
|
+
* `instantiate` asks `quire.page.create` and not `space.manage`: what it does is make a page.
|
|
251
|
+
* Somebody who may write in a space may use its templates; only somebody who configures the space
|
|
252
|
+
* may change them. Its `space` branch — which makes a *space* — asks `quire.space.manage` at
|
|
253
|
+
* workspace scope on top, for the same reason `spaces.create` does; the sweep sends the page
|
|
254
|
+
* branch, and `templates.int.test.ts` covers the other.
|
|
255
|
+
*/
|
|
256
|
+
'templates.list': { check: 'space', permission: 'quire.space.view' },
|
|
257
|
+
'templates.get': { check: 'space', permission: 'quire.space.view' },
|
|
258
|
+
'templates.createFromPage': { check: 'page', permission: 'quire.page.view' },
|
|
259
|
+
'templates.update': { check: 'space', permission: 'quire.space.manage' },
|
|
260
|
+
'templates.remove': { check: 'space', permission: 'quire.space.manage' },
|
|
261
|
+
'templates.instantiate': { check: 'space', permission: 'quire.page.create' },
|
|
148
262
|
'publishing.publish': { check: 'page', permission: 'quire.page.publish' },
|
|
149
263
|
'publishing.revert': { check: 'page', permission: 'quire.page.edit' },
|
|
150
264
|
/*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/contract/permissions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/contract/permissions.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,9 +9,9 @@ import { z } from 'zod';
|
|
|
9
9
|
export declare const PropertyType: z.ZodEnum<{
|
|
10
10
|
number: "number";
|
|
11
11
|
date: "date";
|
|
12
|
-
email: "email";
|
|
13
12
|
text: "text";
|
|
14
13
|
select: "select";
|
|
14
|
+
email: "email";
|
|
15
15
|
multi_select: "multi_select";
|
|
16
16
|
status: "status";
|
|
17
17
|
person: "person";
|
|
@@ -34,9 +34,9 @@ export declare const SelectOption: z.ZodObject<{
|
|
|
34
34
|
label: z.ZodString;
|
|
35
35
|
colour: z.ZodDefault<z.ZodString>;
|
|
36
36
|
group: z.ZodOptional<z.ZodEnum<{
|
|
37
|
+
done: "done";
|
|
37
38
|
todo: "todo";
|
|
38
39
|
doing: "doing";
|
|
39
|
-
done: "done";
|
|
40
40
|
}>>;
|
|
41
41
|
}, z.core.$strip>;
|
|
42
42
|
export type SelectOption = z.infer<typeof SelectOption>;
|
|
@@ -69,9 +69,9 @@ export declare const PropertyConfig: z.ZodObject<{
|
|
|
69
69
|
label: z.ZodString;
|
|
70
70
|
colour: z.ZodDefault<z.ZodString>;
|
|
71
71
|
group: z.ZodOptional<z.ZodEnum<{
|
|
72
|
+
done: "done";
|
|
72
73
|
todo: "todo";
|
|
73
74
|
doing: "doing";
|
|
74
|
-
done: "done";
|
|
75
75
|
}>>;
|
|
76
76
|
}, z.core.$strip>>>;
|
|
77
77
|
format: z.ZodOptional<z.ZodString>;
|
|
@@ -108,9 +108,9 @@ export declare const Property: z.ZodObject<{
|
|
|
108
108
|
type: z.ZodEnum<{
|
|
109
109
|
number: "number";
|
|
110
110
|
date: "date";
|
|
111
|
-
email: "email";
|
|
112
111
|
text: "text";
|
|
113
112
|
select: "select";
|
|
113
|
+
email: "email";
|
|
114
114
|
multi_select: "multi_select";
|
|
115
115
|
status: "status";
|
|
116
116
|
person: "person";
|
|
@@ -132,9 +132,9 @@ export declare const Property: z.ZodObject<{
|
|
|
132
132
|
label: z.ZodString;
|
|
133
133
|
colour: z.ZodDefault<z.ZodString>;
|
|
134
134
|
group: z.ZodOptional<z.ZodEnum<{
|
|
135
|
+
done: "done";
|
|
135
136
|
todo: "todo";
|
|
136
137
|
doing: "doing";
|
|
137
|
-
done: "done";
|
|
138
138
|
}>>;
|
|
139
139
|
}, z.core.$strip>>>;
|
|
140
140
|
format: z.ZodOptional<z.ZodString>;
|
|
@@ -349,9 +349,9 @@ export declare const Database: z.ZodObject<{
|
|
|
349
349
|
type: z.ZodEnum<{
|
|
350
350
|
number: "number";
|
|
351
351
|
date: "date";
|
|
352
|
-
email: "email";
|
|
353
352
|
text: "text";
|
|
354
353
|
select: "select";
|
|
354
|
+
email: "email";
|
|
355
355
|
multi_select: "multi_select";
|
|
356
356
|
status: "status";
|
|
357
357
|
person: "person";
|
|
@@ -373,9 +373,9 @@ export declare const Database: z.ZodObject<{
|
|
|
373
373
|
label: z.ZodString;
|
|
374
374
|
colour: z.ZodDefault<z.ZodString>;
|
|
375
375
|
group: z.ZodOptional<z.ZodEnum<{
|
|
376
|
+
done: "done";
|
|
376
377
|
todo: "todo";
|
|
377
378
|
doing: "doing";
|
|
378
|
-
done: "done";
|
|
379
379
|
}>>;
|
|
380
380
|
}, z.core.$strip>>>;
|
|
381
381
|
format: z.ZodOptional<z.ZodString>;
|