@kernhq/module-quire 0.13.0 → 0.14.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 (101) hide show
  1. package/dist/contract/models.d.ts +185 -0
  2. package/dist/contract/models.d.ts.map +1 -1
  3. package/dist/contract/models.js +133 -0
  4. package/dist/contract/models.js.map +1 -1
  5. package/dist/contract/permissions.d.ts +14 -0
  6. package/dist/contract/permissions.d.ts.map +1 -1
  7. package/dist/contract/permissions.js +82 -0
  8. package/dist/contract/permissions.js.map +1 -1
  9. package/dist/contract/properties.d.ts +4 -4
  10. package/dist/contract/router.d.ts +542 -15
  11. package/dist/contract/router.d.ts.map +1 -1
  12. package/dist/contract/router.js +155 -8
  13. package/dist/contract/router.js.map +1 -1
  14. package/dist/server/_impl.d.ts +526 -15
  15. package/dist/server/_impl.d.ts.map +1 -1
  16. package/dist/server/_impl.js +166 -23
  17. package/dist/server/_impl.js.map +1 -1
  18. package/dist/server/export/html.d.ts +67 -0
  19. package/dist/server/export/html.d.ts.map +1 -0
  20. package/dist/server/export/html.js +206 -0
  21. package/dist/server/export/html.js.map +1 -0
  22. package/dist/server/export/markdown.d.ts +51 -0
  23. package/dist/server/export/markdown.d.ts.map +1 -0
  24. package/dist/server/export/markdown.js +312 -0
  25. package/dist/server/export/markdown.js.map +1 -0
  26. package/dist/server/export/pdf.d.ts +20 -0
  27. package/dist/server/export/pdf.d.ts.map +1 -0
  28. package/dist/server/export/pdf.js +91 -0
  29. package/dist/server/export/pdf.js.map +1 -0
  30. package/dist/server/export/zip.d.ts +31 -0
  31. package/dist/server/export/zip.d.ts.map +1 -0
  32. package/dist/server/export/zip.js +158 -0
  33. package/dist/server/export/zip.js.map +1 -0
  34. package/dist/server/import/csv.d.ts +77 -0
  35. package/dist/server/import/csv.d.ts.map +1 -0
  36. package/dist/server/import/csv.js +263 -0
  37. package/dist/server/import/csv.js.map +1 -0
  38. package/dist/server/import/html.d.ts +52 -0
  39. package/dist/server/import/html.d.ts.map +1 -0
  40. package/dist/server/import/html.js +472 -0
  41. package/dist/server/import/html.js.map +1 -0
  42. package/dist/server/import/markdown.d.ts +63 -0
  43. package/dist/server/import/markdown.d.ts.map +1 -0
  44. package/dist/server/import/markdown.js +692 -0
  45. package/dist/server/import/markdown.js.map +1 -0
  46. package/dist/server/import/plan.d.ts +70 -0
  47. package/dist/server/import/plan.d.ts.map +1 -0
  48. package/dist/server/import/plan.js +761 -0
  49. package/dist/server/import/plan.js.map +1 -0
  50. package/dist/server/import/ydoc.d.ts +35 -0
  51. package/dist/server/import/ydoc.d.ts.map +1 -0
  52. package/dist/server/import/ydoc.js +91 -0
  53. package/dist/server/import/ydoc.js.map +1 -0
  54. package/dist/server/import/zip.d.ts +63 -0
  55. package/dist/server/import/zip.d.ts.map +1 -0
  56. package/dist/server/import/zip.js +308 -0
  57. package/dist/server/import/zip.js.map +1 -0
  58. package/dist/server/index.d.ts.map +1 -1
  59. package/dist/server/index.js +3 -1
  60. package/dist/server/index.js.map +1 -1
  61. package/dist/server/schema.d.ts +445 -1
  62. package/dist/server/schema.d.ts.map +1 -1
  63. package/dist/server/schema.js +146 -0
  64. package/dist/server/schema.js.map +1 -1
  65. package/dist/server/services/databases.d.ts +5 -5
  66. package/dist/server/services/export.d.ts +176 -0
  67. package/dist/server/services/export.d.ts.map +1 -0
  68. package/dist/server/services/export.js +822 -0
  69. package/dist/server/services/export.js.map +1 -0
  70. package/dist/server/services/import.d.ts +109 -0
  71. package/dist/server/services/import.d.ts.map +1 -0
  72. package/dist/server/services/import.js +570 -0
  73. package/dist/server/services/import.js.map +1 -0
  74. package/dist/server/services/index.d.ts +28 -1
  75. package/dist/server/services/index.d.ts.map +1 -1
  76. package/dist/server/services/index.js +62 -1
  77. package/dist/server/services/index.js.map +1 -1
  78. package/dist/server/services/publications.d.ts +34 -1
  79. package/dist/server/services/publications.d.ts.map +1 -1
  80. package/dist/server/services/publications.js +62 -3
  81. package/dist/server/services/publications.js.map +1 -1
  82. package/dist/server/services/versions.d.ts +1 -1
  83. package/migrations/0010_transfers.sql +154 -0
  84. package/migrations/meta/_journal.json +7 -0
  85. package/package.json +1 -1
  86. package/src/client/components/ExportDialog.svelte +685 -0
  87. package/src/client/components/ImportDialog.svelte +702 -0
  88. package/src/client/components/ImportReport.svelte +310 -0
  89. package/src/client/components/SidebarSpaces.svelte +79 -0
  90. package/src/client/i18n.ts +614 -0
  91. package/src/client/index.ts +32 -0
  92. package/src/client/mock.ts +318 -0
  93. package/src/client/module.ts +36 -0
  94. package/src/client/pages/PageView.svelte +36 -0
  95. package/src/client/pages/TransfersPage.svelte +570 -0
  96. package/src/client/permissions.ts +11 -0
  97. package/src/client/query.ts +23 -0
  98. package/src/client/transfers.ts +142 -0
  99. package/src/contract/models.ts +152 -0
  100. package/src/contract/permissions.ts +84 -0
  101. package/src/contract/router.ts +170 -7
@@ -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,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,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;IAClD,YAAY,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAA;CACnD;AAID,oGAAoG;AACpG,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAiB3D;AAED,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,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,EAAE,MAAM,gBAAgB,CAAA;AAEpD,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,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,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;IAClD,YAAY,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAA;IAClD,OAAO,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAA;IACvC,OAAO,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAA;CACxC;AAID,oGAAoG;AACpG,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAsB3D;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAiCrE,CAAA;AAED,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,uFAAuF;AACvF,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA"}
@@ -1,6 +1,9 @@
1
+ import { z } from 'zod';
1
2
  import { quireAccess } from './access.js';
2
3
  import { quireComments } from './comments.js';
3
4
  import { quireDatabases } from './databases.js';
5
+ import { quireExport } from './export.js';
6
+ import { quireImport } from './import.js';
4
7
  import { quireOrganisation } from './organisation.js';
5
8
  import { quirePages } from './pages.js';
6
9
  import { quirePublications } from './publications.js';
@@ -14,25 +17,83 @@ export function quireServices(kernel) {
14
17
  return existing;
15
18
  const access = quireAccess(kernel);
16
19
  const versions = quireVersions(kernel, access);
20
+ // An import writes pages *and* databases, so it is the one service built on another one: it needs
21
+ // `databases` to mint the properties whose keys its rows are keyed by. See `import.ts`'s `write`.
22
+ const databases = quireDatabases(kernel, access);
17
23
  const services = {
18
24
  access,
19
25
  spaces: quireSpaces(access),
20
26
  pages: quirePages(access),
21
27
  versions,
22
28
  comments: quireComments(access),
23
- databases: quireDatabases(kernel, access),
29
+ databases,
24
30
  organisation: quireOrganisation(access),
25
31
  publications: quirePublications(kernel, access, versions),
32
+ exports: quireExport(kernel, access),
33
+ imports: quireImport(kernel, access, databases),
26
34
  };
27
35
  cache.set(kernel, services);
28
36
  return services;
29
37
  }
38
+ /**
39
+ * The background work this module hands to a worker process, gathered here rather than in
40
+ * `index.ts`.
41
+ *
42
+ * One line in the module definition, so adding a job is an edit to this file and not to the file
43
+ * every other part of the module is also editing. The names reach pg-boss as `quire.<name>` — the
44
+ * kernel prefixes them — and only a process started with a worker role runs them; an API process
45
+ * registers nothing and merely sends.
46
+ *
47
+ * `retryLimit` is deliberately small. An export that fails for a reason of its own — Gotenberg is
48
+ * not running, a page will not render — records that reason on its row and returns *successfully*,
49
+ * because it has finished: it failed, and it said so, and repeating it would only write the same
50
+ * sentence three more times. A throw out of the handler means something underneath went wrong
51
+ * (the database, the broker), which is the case a retry is for.
52
+ */
53
+ export const quireJobs = [
54
+ {
55
+ name: 'export',
56
+ schema: z.object({ workspaceId: z.uuid(), jobId: z.uuid() }),
57
+ handler: async (input, { kernel }) => {
58
+ await quireServices(kernel).exports.run(input.workspaceId, input.jobId);
59
+ },
60
+ options: { retryLimit: 2, retryDelay: 30, expireInSeconds: 900 },
61
+ },
62
+ /**
63
+ * An import, with **no retries at all** — the one place in this module where that is the safe
64
+ * setting rather than the timid one.
65
+ *
66
+ * `run` is idempotent against its own row (`done` and `failed` are terminal, and it claims the row
67
+ * before it does anything), so a retry after a *completed* run is a no-op. What a retry cannot be
68
+ * safe against is the case pg-boss actually retries: a handler that threw. An import commits its
69
+ * pages and its finished row in one transaction, so a throw means nothing was written — but a
70
+ * *lost connection after the commit* looks exactly the same from here, and running it again would
71
+ * write every page in the archive a second time. Two hundred duplicate pages in somebody's space
72
+ * is a worse outcome than a job that says it failed and can be started again by a person who can
73
+ * see what is in the space.
74
+ *
75
+ * The window is longer than an export's for the obvious reason: reading a few hundred megabytes of
76
+ * zip and writing four thousand rows is not a fifteen-minute job on a busy instance.
77
+ */
78
+ {
79
+ name: 'import',
80
+ schema: z.object({ workspaceId: z.uuid(), jobId: z.uuid() }),
81
+ handler: async (input, { kernel }) => {
82
+ await quireServices(kernel).imports.run(input.workspaceId, input.jobId);
83
+ },
84
+ options: { retryLimit: 0, expireInSeconds: 3600 },
85
+ },
86
+ ];
30
87
  export * from './access.js';
31
88
  export * from './comments.js';
32
89
  export * from './databases.js';
90
+ export * from './export.js';
91
+ export * from './import.js';
33
92
  export * from './organisation.js';
34
93
  export * from './pages.js';
35
94
  export * from './publications.js';
95
+ /** The public surface resolves a workspace slug before anything touches the schema. */
96
+ export { resolveWorkspaceSegment } from './publications.js';
36
97
  export * from './spaces.js';
37
98
  export * from './versions.js';
38
99
  //# sourceMappingURL=index.js.map
@@ -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,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAa7C,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,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9C,MAAM,QAAQ,GAAkB;QAC9B,MAAM;QACN,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;QAC3B,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC;QACzB,QAAQ;QACR,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC;QAC/B,SAAS,EAAE,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;QACzC,YAAY,EAAE,iBAAiB,CAAC,MAAM,CAAC;QACvC,YAAY,EAAE,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;KAC1D,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,mBAAmB,CAAA;AACjC,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/services/index.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,22 @@ import { type Kernel, type Tx } from '@kernhq/kernel';
3
3
  import type { Publication } from '../../contract/index.js';
4
4
  import { publications } from '../schema.js';
5
5
  import type { QuireAccess } from './access.js';
6
+ /**
7
+ * A public URL names its workspace by slug or by id; every query needs the id.
8
+ *
9
+ * Exported because two places need it and they are on opposite sides of the module: the anonymous
10
+ * middleware in `_impl.ts`, which is the first thing to see the segment and must not hand a slug to
11
+ * `isModuleEnabled` (whose schema is `z.uuid()`), and `publications.read`, which sets the workspace
12
+ * for row-level security.
13
+ *
14
+ * Resolving it inside this module rather than in `core` is what stops it being an oracle. Core
15
+ * could only answer "is there a workspace called this" — a fact about private workspaces too.
16
+ * Here, a slug naming a workspace with no such publication reaches exactly the same `NOT_FOUND` as
17
+ * a slug nobody has taken, so the answer gives away nothing a published site does not.
18
+ *
19
+ * Returns null rather than throwing; every caller turns that into the one 404.
20
+ */
21
+ export declare function resolveWorkspaceSegment(kernel: Kernel, segment: string): Promise<string | null>;
6
22
  import { type QuireVersions } from './versions.js';
7
23
  type PublicationRow = typeof publications.$inferSelect;
8
24
  /**
@@ -67,7 +83,24 @@ export declare function quirePublications(kernel: Kernel, access: QuireAccess, v
67
83
  * and covers `pages` and `page_versions` as well as `publications`. It is the second fence, not
68
84
  * the first: the first is that every query below carries the publication.
69
85
  */
70
- read<T>(workspaceId: string, fn: (tx: Tx) => Promise<T>): Promise<T>;
86
+ /**
87
+ * A public URL names its workspace by slug; every query below needs its id.
88
+ *
89
+ * The address the share dialog copies is `/p/<workspace-slug>/<publication-slug>/`, because a
90
+ * uuid in a link somebody is meant to send to a colleague is not an address, it is a receipt.
91
+ * The `public.*` procedures take an id and have to: anonymous means no principal, so nothing
92
+ * downstream can resolve a slug for itself.
93
+ *
94
+ * Resolving it here rather than in `core` is what stops it becoming an oracle. Core could only
95
+ * answer "is there a workspace called this", which is true whether or not anybody publishes —
96
+ * and that is a fact about a private workspace. Here, a slug that resolves to a workspace with
97
+ * no publication of that name reaches exactly the same `NOT_FOUND` as a slug nobody has taken,
98
+ * so the answer carries no information a published site does not already give away.
99
+ *
100
+ * Returns null rather than throwing: the caller turns every failure into the one 404.
101
+ */
102
+ resolveWorkspace: (segment: string) => Promise<string | null>;
103
+ read<T>(segment: string, fn: (tx: Tx, workspaceId: string) => Promise<T>): Promise<T>;
71
104
  /**
72
105
  * The publication behind a slug, or `notFound`.
73
106
  *
@@ -1 +1 @@
1
- {"version":3,"file":"publications.d.ts","sourceRoot":"","sources":["../../../src/server/services/publications.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publications.d.ts","sourceRoot":"","sources":["../../../src/server/services/publications.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,40 @@ import { and, desc, eq, inArray, sql } from 'drizzle-orm';
34
34
  import { PUBLIC_ASSET_SEGMENT } from '../../contract/index.js';
35
35
  import { escapeHtml } from '../render.js';
36
36
  import { pages, pageVersions, publications } from '../schema.js';
37
+ /** A workspace segment is either its uuid or its slug; anything else is not an address. */
38
+ const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
39
+ const SLUG_RE = /^[a-z0-9][a-z0-9-]{0,62}$/;
40
+ /**
41
+ * A public URL names its workspace by slug or by id; every query needs the id.
42
+ *
43
+ * Exported because two places need it and they are on opposite sides of the module: the anonymous
44
+ * middleware in `_impl.ts`, which is the first thing to see the segment and must not hand a slug to
45
+ * `isModuleEnabled` (whose schema is `z.uuid()`), and `publications.read`, which sets the workspace
46
+ * for row-level security.
47
+ *
48
+ * Resolving it inside this module rather than in `core` is what stops it being an oracle. Core
49
+ * could only answer "is there a workspace called this" — a fact about private workspaces too.
50
+ * Here, a slug naming a workspace with no such publication reaches exactly the same `NOT_FOUND` as
51
+ * a slug nobody has taken, so the answer gives away nothing a published site does not.
52
+ *
53
+ * Returns null rather than throwing; every caller turns that into the one 404.
54
+ */
55
+ export async function resolveWorkspaceSegment(kernel, segment) {
56
+ if (UUID_RE.test(segment))
57
+ return segment.toLowerCase();
58
+ if (!SLUG_RE.test(segment))
59
+ return null;
60
+ try {
61
+ const found = (await kernel.call('core.workspaces.list', { q: segment, limit: 50 }));
62
+ const items = Array.isArray(found) ? found : (found?.items ?? []);
63
+ // `q` is a search over names; only an exact slug is an address.
64
+ return items.find((w) => w.slug === segment)?.id?.toLowerCase() ?? null;
65
+ }
66
+ catch {
67
+ // Core unreachable is not "no such site", but the reader is owed one answer either way.
68
+ return null;
69
+ }
70
+ }
37
71
  import { ASSET_REFERENCE_PREFIX } from './versions.js';
38
72
  const scrypt = promisify(scryptCb);
39
73
  /** How deep a published site may nest before the walk stops descending. */
@@ -392,7 +426,32 @@ export function quirePublications(kernel, access, versions) {
392
426
  * and covers `pages` and `page_versions` as well as `publications`. It is the second fence, not
393
427
  * the first: the first is that every query below carries the publication.
394
428
  */
395
- read(workspaceId, fn) {
429
+ /**
430
+ * A public URL names its workspace by slug; every query below needs its id.
431
+ *
432
+ * The address the share dialog copies is `/p/<workspace-slug>/<publication-slug>/`, because a
433
+ * uuid in a link somebody is meant to send to a colleague is not an address, it is a receipt.
434
+ * The `public.*` procedures take an id and have to: anonymous means no principal, so nothing
435
+ * downstream can resolve a slug for itself.
436
+ *
437
+ * Resolving it here rather than in `core` is what stops it becoming an oracle. Core could only
438
+ * answer "is there a workspace called this", which is true whether or not anybody publishes —
439
+ * and that is a fact about a private workspace. Here, a slug that resolves to a workspace with
440
+ * no publication of that name reaches exactly the same `NOT_FOUND` as a slug nobody has taken,
441
+ * so the answer carries no information a published site does not already give away.
442
+ *
443
+ * Returns null rather than throwing: the caller turns every failure into the one 404.
444
+ */
445
+ resolveWorkspace: (segment) => resolveWorkspaceSegment(kernel, segment),
446
+ async read(segment, fn) {
447
+ /*
448
+ * The segment is resolved here, once, rather than in each of the eight handlers — and a
449
+ * segment that resolves to nothing raises the same `NOT_FOUND` those handlers raise for a
450
+ * page nobody published, so the two are indistinguishable from outside.
451
+ */
452
+ const workspaceId = await this.resolveWorkspace(segment);
453
+ if (!workspaceId)
454
+ throw KernError.notFound('There is no published site at this address');
396
455
  /*
397
456
  * Lower-cased before it is set, and that is not tidiness.
398
457
  *
@@ -404,9 +463,9 @@ export function quirePublications(kernel, access, versions) {
404
463
  * altogether. That is the direction that hides a bug rather than the one that shows it, and
405
464
  * this is the only anonymous entry point, so it is normalised here.
406
465
  */
407
- return kernel.database.withWorkspace(workspaceId.toLowerCase(), async (tx) => {
466
+ return kernel.database.withWorkspace(workspaceId, async (tx) => {
408
467
  await tx.execute(sql `set transaction read only`);
409
- return fn(tx);
468
+ return fn(tx, workspaceId);
410
469
  }, { userId: null });
411
470
  },
412
471
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"publications.js","sourceRoot":"","sources":["../../../src/server/services/publications.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publications.js","sourceRoot":"","sources":["../../../src/server/services/publications.ts"],"names":[],"mappings":"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"}
@@ -76,9 +76,9 @@ export declare function quireVersions(kernel: Kernel, access: QuireAccess): {
76
76
  kind: string;
77
77
  size: number;
78
78
  authorId: string | null;
79
- text: string;
80
79
  html: string | null;
81
80
  state: Buffer<ArrayBufferLike>;
81
+ text: string;
82
82
  snapshot: Buffer<ArrayBufferLike> | null;
83
83
  }>;
84
84
  /** What a reader is served, once somebody decides it is ready. */
@@ -0,0 +1,154 @@
1
+ -- Getting work in and out: a request to export a page, a subtree or a space, and a request to import
2
+ -- a Notion, Confluence or Markdown export into a space.
3
+ --
4
+ -- Hand-written rather than generated, like 0001, 0006 and 0008, because drizzle-kit writes neither
5
+ -- the policy nor the guards. Every statement is idempotent: `create table`, `create index` and
6
+ -- `create policy` throw on a replay, and a module migration that throws takes down the **whole host
7
+ -- service** rather than its own module — `core` hosts five. Drizzle keys applied migrations by
8
+ -- content hash, so regenerating the journal replays every file against a schema that already has its
9
+ -- objects.
10
+ --
11
+ --
12
+ -- WHY THESE ARE ROWS AND NOT REQUESTS
13
+ --
14
+ -- The work is unbounded on both sides. A space is a tree of arbitrary size; PDF means a round trip to
15
+ -- Gotenberg per page; a Notion export is a zip with thousands of files in it. A job that outlives its
16
+ -- HTTP request is what lets progress be reported, a failure be read afterwards by somebody who was
17
+ -- not watching, and a retry happen without the browser having stayed open. That is the whole reason
18
+ -- `state`, `counts`, `error` and `finished_at` are columns rather than fields of a response.
19
+ --
20
+ --
21
+ -- WHAT THESE TABLES DO NOT DO
22
+ --
23
+ -- Neither of them is a permission. "You may not export a page you may not read" and "an import writes
24
+ -- only into a space you may write to" are decided by the procedure, against the same space bindings
25
+ -- every other read in this module goes through, before a row is written at all. The policy below is
26
+ -- the tenant fence and nothing more — it stops workspace B seeing workspace A's jobs, and it has
27
+ -- nothing to say about which pages within one workspace went into an artefact. Do not read a row's
28
+ -- existence as evidence that anybody was allowed to ask for it.
29
+ CREATE TABLE IF NOT EXISTS "mod_quire"."export_jobs" (
30
+ "id" uuid PRIMARY KEY DEFAULT uuidv7() NOT NULL,
31
+ "workspace_id" uuid NOT NULL,
32
+ -- Not null, where every other `created_by` in this schema is nullable. The artefact is the hazard:
33
+ -- a subtree export flattens pages with different readerships into one file, so whoever may fetch
34
+ -- it may read everything that went into it. Fencing the download to the person who asked needs a
35
+ -- person to fence it to, and a row whose requester has gone null cannot be fenced.
36
+ "requested_by" uuid NOT NULL,
37
+ -- `page` | `subtree` | `space`
38
+ "scope" text NOT NULL,
39
+ -- the page for `page` and `subtree`, the space for `space`; `scope` says which
40
+ "target_id" uuid NOT NULL,
41
+ -- `markdown` | `html` | `docx` | `pdf`
42
+ "format" text NOT NULL,
43
+ -- `queued` | `running` | `done` | `failed`
44
+ "state" text DEFAULT 'queued' NOT NULL,
45
+ -- The artefact in storage: written when the job finishes, null until then. Null while running is
46
+ -- what keeps a half file from being offered — the uploader writes the bytes, then the job records
47
+ -- the id, so this never points at a file that is still arriving. An id is not a URL: the download
48
+ -- is a signed URL a procedure mints, never a storage key a client assembles. See 0009 for what
49
+ -- that rule cost the last time it was broken.
50
+ "file_id" uuid,
51
+ -- Diagnostic text, in the language of whatever failed. Not a user-facing string: what a screen
52
+ -- shows comes from a message key chosen from `state`, and this is what makes the same failure
53
+ -- answerable a week later.
54
+ "error" text,
55
+ -- `{ total, done, skipped, failed }`. `skipped` is load-bearing: a subtree export by somebody who
56
+ -- may not read one of its children leaves that child out, and the count is the difference between
57
+ -- an export that is missing pages and an export that says so.
58
+ "counts" jsonb DEFAULT '{}'::jsonb NOT NULL,
59
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
60
+ -- null while `queued` or `running`; set once, on the move to `done` or `failed`
61
+ "finished_at" timestamp with time zone
62
+ );
63
+ --> statement-breakpoint
64
+
65
+ -- The same shape pointed the other way, with one addition that carries the weight of the feature.
66
+ --
67
+ -- `report` is jsonb rather than a table, and that is a decision rather than a shortcut.
68
+ --
69
+ -- It is written by one job and read whole, as one document, by one screen: the person who ran the
70
+ -- import looking at what happened to their import. Nothing joins to an entry, nothing updates an
71
+ -- entry after the fact, nothing holds a foreign key into one, and no entry outlives its job. A
72
+ -- row-per-file table would be four thousand inserts to render a list only ever fetched by
73
+ -- `where job_id = $1`, plus a second tenant table with its own `workspace_id`, its own policy, its
74
+ -- own `TENANT_TABLES` entry and its own retention rule — all to store a document. Here, dropping the
75
+ -- job drops its report; there is nothing to sweep. The size is the part worth checking rather than
76
+ -- assuming: an entry is a path, one of three words, and either a uuid or a sentence, so a
77
+ -- five-thousand-file import is a few hundred kilobytes — one TOASTed value, read once.
78
+ --
79
+ -- **What would change if somebody wanted to query across imports** — "every file that failed for this
80
+ -- reason, across every import this month" — is that this stops being the right shape, and not by a
81
+ -- little. `jsonb_array_elements` over the whole table can answer it, but no index helps: a GIN index
82
+ -- on the column serves containment (`@>`), not a predicate plus an ordering inside the array. The
83
+ -- change is a `mod_quire.import_entries` table — `job_id`, `workspace_id`, `path`, `outcome`,
84
+ -- `page_id`, `reason` — indexed on `(workspace_id, outcome, created_at)`, written by the same worker,
85
+ -- with the existing rows backfilled by expanding this column through `jsonb_to_recordset`. It is a
86
+ -- tenant table, so it arrives with the full triple and a `TENANT_TABLES` entry, and it needs the
87
+ -- retention rule the column gets for free. The threshold is exactly that question: while every read
88
+ -- names one job, the column is right.
89
+ CREATE TABLE IF NOT EXISTS "mod_quire"."import_jobs" (
90
+ "id" uuid PRIMARY KEY DEFAULT uuidv7() NOT NULL,
91
+ "workspace_id" uuid NOT NULL,
92
+ -- not null for the same reason as `export_jobs.requested_by`
93
+ "requested_by" uuid NOT NULL,
94
+ -- `notion` | `confluence` | `markdown`
95
+ "source" text NOT NULL,
96
+ -- the space being written into. An import always targets one space; there is no `scope` here.
97
+ "target_id" uuid NOT NULL,
98
+ -- The uploaded archive, and **not** called `file_id` on purpose. `export_jobs.file_id` is the file
99
+ -- a job produces and is null until it succeeds; this is the file a job consumes and exists before
100
+ -- the job does. One name pointing in two directions across two tables read by one screen is how a
101
+ -- worker writes its output id over the pointer to its input — losing the archive, so the job
102
+ -- cannot be retried and nothing reports that anything went missing.
103
+ "source_file_id" uuid NOT NULL,
104
+ -- `queued` | `running` | `done` | `failed`
105
+ "state" text DEFAULT 'queued' NOT NULL,
106
+ -- why the *job* failed; why one *file* failed is that file's entry in `report`
107
+ "error" text,
108
+ -- `{ total, done, skipped, failed }` — the same counters as an export, over files rather than pages
109
+ "counts" jsonb DEFAULT '{}'::jsonb NOT NULL,
110
+ -- one entry per file: `{ path, outcome, pageId, reason }`, where outcome is imported|skipped|failed
111
+ "report" jsonb DEFAULT '[]'::jsonb NOT NULL,
112
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
113
+ -- null while `queued` or `running`; set once, on the move to `done` or `failed`
114
+ "finished_at" timestamp with time zone
115
+ );
116
+ --> statement-breakpoint
117
+
118
+ -- Newest first, because that is the only order a list of jobs is ever read in — the one you just
119
+ -- started is the one you are looking for. `DESC NULLS LAST` rather than a plain index scanned
120
+ -- backwards so the ordering is the index's own, matching `recent_views_ws_user_idx` in 0007.
121
+ CREATE INDEX IF NOT EXISTS "export_jobs_ws_created_idx" ON "mod_quire"."export_jobs" USING btree ("workspace_id","created_at" DESC NULLS LAST);--> statement-breakpoint
122
+
123
+ -- "What is still running here", asked by the worker picking up work and by every client polling a
124
+ -- job it started. Leading with the state after the workspace keeps that probe off the rows of every
125
+ -- export the workspace has ever finished.
126
+ CREATE INDEX IF NOT EXISTS "export_jobs_ws_state_idx" ON "mod_quire"."export_jobs" USING btree ("workspace_id","state","created_at");--> statement-breakpoint
127
+ CREATE INDEX IF NOT EXISTS "import_jobs_ws_created_idx" ON "mod_quire"."import_jobs" USING btree ("workspace_id","created_at" DESC NULLS LAST);--> statement-breakpoint
128
+ CREATE INDEX IF NOT EXISTS "import_jobs_ws_state_idx" ON "mod_quire"."import_jobs" USING btree ("workspace_id","state","created_at");--> statement-breakpoint
129
+
130
+ -- Row-level security, the same triple every tenant table gets.
131
+ --
132
+ -- `force` matters: without it the table owner bypasses the policy, and the owner is the role the
133
+ -- service connects as. A *superuser* bypasses RLS whatever this says, and the development and CI
134
+ -- roles are superusers — so a test that does not connect as an unprivileged NOBYPASSRLS role proves
135
+ -- nothing about isolation.
136
+ --
137
+ -- Note what this does and does not fence, because these two tables invite the wrong reading. It is
138
+ -- the tenant boundary: workspace B cannot see workspace A's jobs, in either direction. It says
139
+ -- nothing about which *pages* went into an artefact, nothing about whether the requester was allowed
140
+ -- to ask, and nothing about who may download the result. Those are the procedure's job, decided
141
+ -- against the same space bindings as every other read in this module, before the row exists.
142
+ ALTER TABLE "mod_quire"."export_jobs" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
143
+ ALTER TABLE "mod_quire"."export_jobs" FORCE ROW LEVEL SECURITY;--> statement-breakpoint
144
+ DROP POLICY IF EXISTS "export_jobs_ws_isolation" ON "mod_quire"."export_jobs";--> statement-breakpoint
145
+ CREATE POLICY "export_jobs_ws_isolation" ON "mod_quire"."export_jobs"
146
+ USING (workspace_id::text = current_setting('app.workspace_id', true))
147
+ WITH CHECK (workspace_id::text = current_setting('app.workspace_id', true));--> statement-breakpoint
148
+
149
+ ALTER TABLE "mod_quire"."import_jobs" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
150
+ ALTER TABLE "mod_quire"."import_jobs" FORCE ROW LEVEL SECURITY;--> statement-breakpoint
151
+ DROP POLICY IF EXISTS "import_jobs_ws_isolation" ON "mod_quire"."import_jobs";--> statement-breakpoint
152
+ CREATE POLICY "import_jobs_ws_isolation" ON "mod_quire"."import_jobs"
153
+ USING (workspace_id::text = current_setting('app.workspace_id', true))
154
+ WITH CHECK (workspace_id::text = current_setting('app.workspace_id', true));
@@ -71,6 +71,13 @@
71
71
  "when": 1787954227617,
72
72
  "tag": "0009_public_asset_references",
73
73
  "breakpoints": true
74
+ },
75
+ {
76
+ "idx": 10,
77
+ "version": "7",
78
+ "when": 1788040627617,
79
+ "tag": "0010_transfers",
80
+ "breakpoints": true
74
81
  }
75
82
  ]
76
83
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kernhq/module-quire",
3
- "version": "0.13.0",
3
+ "version": "0.14.0",
4
4
  "description": "Kern Quire: collaborative documents, spaces and page trees",
5
5
  "homepage": "https://github.com/KernAIO/module-quire#readme",
6
6
  "license": "AGPL-3.0-only",