@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/server/import/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A page document as Yjs bytes — the exact inverse of `../document.ts`.
|
|
3
|
+
*
|
|
4
|
+
* `document.ts` reads a stored page *out* of Yjs without a ProseMirror schema, because the Yjs tree
|
|
5
|
+
* already carries the node names and attributes. Writing has the same property and it is what makes
|
|
6
|
+
* an import possible at all: `prosemirrorJSONToYDoc` in `@tiptap/y-tiptap` needs a schema, the schema
|
|
7
|
+
* is `@kernhq/ui`'s `page-schema.ts`, and that is a dozen Tiptap extensions of browser code this
|
|
8
|
+
* server has deliberately never loaded. (It is the same wall the Word export ran into — see
|
|
9
|
+
* `services/export.ts`. The difference is that the Yjs shape is small and fully determined, and a
|
|
10
|
+
* `.docx` is not.)
|
|
11
|
+
*
|
|
12
|
+
* **The shape is not guessed; it is the one y-prosemirror writes and the one the reader expects.**
|
|
13
|
+
*
|
|
14
|
+
* - a block node is a `Y.XmlElement` whose `nodeName` is the ProseMirror type;
|
|
15
|
+
* - its attributes are set as-is — **not stringified**. `Y.XmlElement.setAttribute` is *typed* as
|
|
16
|
+
* taking a string and stores whatever it is handed, and y-prosemirror hands it the node's real
|
|
17
|
+
* attributes, so `heading.level` is the number 2 and `taskItem.checked` is the boolean `true`. A
|
|
18
|
+
* document written with `'true'` looks right and renders as unchecked in both the HTML renderer
|
|
19
|
+
* and the Markdown writer;
|
|
20
|
+
* - a run of adjacent text nodes is **one** `Y.XmlText` carrying a delta, not one per node, which
|
|
21
|
+
* is what `createTypeFromTextNodes` does. Marks are the delta's attributes, keyed by mark name
|
|
22
|
+
* with the mark's own attributes as the value — `{ bold: {} }`, `{ link: { href } }`.
|
|
23
|
+
*
|
|
24
|
+
* The round trip is the test: anything this writes, `pageDocFromState` has to read back as the same
|
|
25
|
+
* document, and `import.int.test.ts` asserts exactly that rather than asserting the byte layout.
|
|
26
|
+
*/
|
|
27
|
+
import type { PageDoc } from '@kernhq/ui/editor/page-doc';
|
|
28
|
+
/**
|
|
29
|
+
* A page document as the update bytes `page_versions.state` holds and `collab.document.replace` takes.
|
|
30
|
+
*
|
|
31
|
+
* A document with no content still produces a valid, empty update rather than throwing: an imported
|
|
32
|
+
* file that turned out to hold nothing but its own title is an empty page, which is what it was.
|
|
33
|
+
*/
|
|
34
|
+
export declare function pageDocToYState(doc: PageDoc | null | undefined): Buffer;
|
|
35
|
+
//# sourceMappingURL=ydoc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ydoc.d.ts","sourceRoot":"","sources":["../../../src/server/import/ydoc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,4BAA4B,CAAA;AAyEtE;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAUvE"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import * as Y from 'yjs';
|
|
2
|
+
/** Marks as a delta's attributes: `[{ type: 'bold' }, { type: 'link', attrs }]` → `{ bold: {}, link: attrs }`. */
|
|
3
|
+
function attributesOf(node) {
|
|
4
|
+
const marks = node.marks ?? [];
|
|
5
|
+
if (marks.length === 0)
|
|
6
|
+
return undefined;
|
|
7
|
+
const attributes = {};
|
|
8
|
+
for (const mark of marks) {
|
|
9
|
+
if (!mark || typeof mark.type !== 'string')
|
|
10
|
+
continue;
|
|
11
|
+
attributes[mark.type] = mark.attrs ?? {};
|
|
12
|
+
}
|
|
13
|
+
return Object.keys(attributes).length > 0 ? attributes : undefined;
|
|
14
|
+
}
|
|
15
|
+
const isTextNode = (node) => typeof node.text === 'string';
|
|
16
|
+
/**
|
|
17
|
+
* Children as Yjs types, with contiguous text folded into single `Y.XmlText` runs.
|
|
18
|
+
*
|
|
19
|
+
* The folding is not an optimisation. Two adjacent `Y.XmlText` siblings are what y-prosemirror's own
|
|
20
|
+
* reader goes out of its way to merge (its issue #160, character duplication), and a document that
|
|
21
|
+
* arrives with them is a document no editor would have produced — which is the definition of a
|
|
22
|
+
* fixture that proves nothing.
|
|
23
|
+
*/
|
|
24
|
+
function childrenOf(nodes) {
|
|
25
|
+
const out = [];
|
|
26
|
+
let run = [];
|
|
27
|
+
const flush = () => {
|
|
28
|
+
if (run.length === 0)
|
|
29
|
+
return;
|
|
30
|
+
const text = new Y.XmlText();
|
|
31
|
+
text.applyDelta(run.map((node) => ({ insert: node.text ?? '', attributes: attributesOf(node) })));
|
|
32
|
+
out.push(text);
|
|
33
|
+
run = [];
|
|
34
|
+
};
|
|
35
|
+
for (const node of nodes ?? []) {
|
|
36
|
+
if (!node || typeof node !== 'object')
|
|
37
|
+
continue;
|
|
38
|
+
if (isTextNode(node)) {
|
|
39
|
+
// An empty string contributes nothing to a delta and would leave an empty run behind.
|
|
40
|
+
if ((node.text ?? '').length > 0)
|
|
41
|
+
run.push(node);
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
flush();
|
|
45
|
+
out.push(elementOf(node));
|
|
46
|
+
}
|
|
47
|
+
flush();
|
|
48
|
+
return out;
|
|
49
|
+
}
|
|
50
|
+
function elementOf(node) {
|
|
51
|
+
const element = new Y.XmlElement(node.type ?? 'paragraph');
|
|
52
|
+
for (const [key, value] of Object.entries(node.attrs ?? {})) {
|
|
53
|
+
// A null attribute is how ProseMirror spells "not set"; y-prosemirror skips those, and setting
|
|
54
|
+
// one would put `null` where the renderer expects an absent attribute.
|
|
55
|
+
if (value === null || value === undefined || key === 'ychange')
|
|
56
|
+
continue;
|
|
57
|
+
element.setAttribute(key, value);
|
|
58
|
+
}
|
|
59
|
+
const children = childrenOf(node.content);
|
|
60
|
+
if (children.length > 0)
|
|
61
|
+
element.insert(0, children);
|
|
62
|
+
return element;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The shared field the editor writes into.
|
|
66
|
+
*
|
|
67
|
+
* The same constant as `document.ts`, and for the same reason: `collab.ts` in `@kernhq/ui` configures
|
|
68
|
+
* `Collaboration` with no `field`, whose default is `default`. Writing into any other name produces
|
|
69
|
+
* bytes that decode to an empty document, silently — a whole import of blank pages.
|
|
70
|
+
*/
|
|
71
|
+
const FIELD = 'default';
|
|
72
|
+
/**
|
|
73
|
+
* A page document as the update bytes `page_versions.state` holds and `collab.document.replace` takes.
|
|
74
|
+
*
|
|
75
|
+
* A document with no content still produces a valid, empty update rather than throwing: an imported
|
|
76
|
+
* file that turned out to hold nothing but its own title is an empty page, which is what it was.
|
|
77
|
+
*/
|
|
78
|
+
export function pageDocToYState(doc) {
|
|
79
|
+
const ydoc = new Y.Doc();
|
|
80
|
+
try {
|
|
81
|
+
const fragment = ydoc.getXmlFragment(FIELD);
|
|
82
|
+
const children = childrenOf(doc?.content);
|
|
83
|
+
if (children.length > 0)
|
|
84
|
+
fragment.insert(0, children);
|
|
85
|
+
return Buffer.from(Y.encodeStateAsUpdate(ydoc));
|
|
86
|
+
}
|
|
87
|
+
finally {
|
|
88
|
+
ydoc.destroy();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=ydoc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ydoc.js","sourceRoot":"","sources":["../../../src/server/import/ydoc.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export interface ArchiveLimits {
|
|
2
|
+
/** how many entries may be listed at all */
|
|
3
|
+
maxEntries: number;
|
|
4
|
+
/** the sum of every entry's declared uncompressed size */
|
|
5
|
+
maxTotalBytes: number;
|
|
6
|
+
/** the largest single file that will be inflated */
|
|
7
|
+
maxEntryBytes: number;
|
|
8
|
+
}
|
|
9
|
+
export declare const DEFAULT_ARCHIVE_LIMITS: ArchiveLimits;
|
|
10
|
+
/**
|
|
11
|
+
* One file out of the archive.
|
|
12
|
+
*
|
|
13
|
+
* `data` and `error` are exclusive: an entry either came out or says why it did not. The error is
|
|
14
|
+
* carried rather than thrown so that one corrupt picture in a five-thousand-file Notion export is a
|
|
15
|
+
* line in the report instead of an import nobody can run.
|
|
16
|
+
*/
|
|
17
|
+
export interface ArchiveEntry {
|
|
18
|
+
/** the path exactly as the archive spelled it, which is what a report has to name */
|
|
19
|
+
path: string;
|
|
20
|
+
/** the same path normalised: `/`-separated, no `.`, no `..`, no leading slash, never empty */
|
|
21
|
+
key: string;
|
|
22
|
+
data: Buffer | null;
|
|
23
|
+
error: string | null;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* A path that names a place *inside* the archive and nowhere else.
|
|
27
|
+
*
|
|
28
|
+
* Returns null for anything that would climb out of it. Nothing here writes to disk, so this is not
|
|
29
|
+
* the last line of defence it would be in an unzipper — but the path becomes a lookup key, a parent
|
|
30
|
+
* and sometimes a page title, and `../../secrets/keys.md` resolving to the same key as a real file is
|
|
31
|
+
* how two files silently become one.
|
|
32
|
+
*/
|
|
33
|
+
export declare function normaliseArchivePath(raw: string): string | null;
|
|
34
|
+
/** `a/b/c.md` → `a/b`; a file at the top is `''`. */
|
|
35
|
+
export declare const dirnameOf: (key: string) => string;
|
|
36
|
+
/** `a/b/c.md` → `c.md`. */
|
|
37
|
+
export declare const basenameOf: (key: string) => string;
|
|
38
|
+
/** `c.md` → `.md`, lower-cased; a name with no dot has no extension. */
|
|
39
|
+
export declare function extensionOf(key: string): string;
|
|
40
|
+
/**
|
|
41
|
+
* Resolve one archive path against another, the way a browser resolves a relative href.
|
|
42
|
+
*
|
|
43
|
+
* `from` is the *file* the link is written in, not its folder — passing the file is what makes the
|
|
44
|
+
* call sites read correctly, and forgetting to take the dirname is the bug this signature removes.
|
|
45
|
+
*/
|
|
46
|
+
export declare function resolveArchivePath(fromFile: string, href: string): string | null;
|
|
47
|
+
/**
|
|
48
|
+
* Every file in the archive, in central-directory order.
|
|
49
|
+
*
|
|
50
|
+
* Order matters more than it looks: it is the order the report is written in, and a report whose rows
|
|
51
|
+
* are in a different order every time is one nobody can compare against the last run.
|
|
52
|
+
*/
|
|
53
|
+
export declare function readZip(buffer: Buffer, limits?: ArchiveLimits): ArchiveEntry[];
|
|
54
|
+
export declare function crc32(data: Uint8Array): number;
|
|
55
|
+
/**
|
|
56
|
+
* The bytes as text, if they are text at all.
|
|
57
|
+
*
|
|
58
|
+
* A UTF-8 BOM is stripped — Confluence's HTML export writes one, and a `# Heading` behind a BOM is a
|
|
59
|
+
* paragraph beginning with an invisible character rather than a heading. A file holding a NUL in its
|
|
60
|
+
* first kilobyte is binary and is refused here, so a JPEG never reaches the Markdown parser.
|
|
61
|
+
*/
|
|
62
|
+
export declare function textOf(data: Buffer): string | null;
|
|
63
|
+
//# sourceMappingURL=zip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zip.d.ts","sourceRoot":"","sources":["../../../src/server/import/zip.ts"],"names":[],"mappings":"AAwCA,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAA;IAClB,0DAA0D;IAC1D,aAAa,EAAE,MAAM,CAAA;IACrB,oDAAoD;IACpD,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,eAAO,MAAM,sBAAsB,EAAE,aAIpC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,qFAAqF;IACrF,IAAI,EAAE,MAAM,CAAA;IACZ,8FAA8F;IAC9F,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA0B/D;AAED,qDAAqD;AACrD,eAAO,MAAM,SAAS,GAAI,KAAK,MAAM,KAAG,MAGvC,CAAA;AAED,2BAA2B;AAC3B,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,KAAG,MAA6C,CAAA;AAEtF,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIhF;AAUD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,aAAsC,GAAG,YAAY,EAAE,CAkJtG;AA8DD,wBAAgB,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAI9C;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKlD"}
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A zip container, read by hand — the mirror of `../export/zip.ts`.
|
|
3
|
+
*
|
|
4
|
+
* The same trade, for the same reason: a Notion export, a Confluence export and a folder of Markdown
|
|
5
|
+
* are all the 1989 format — store or deflate, no encryption, sizes in the header — and that is about
|
|
6
|
+
* a hundred lines of well-specified reading. Every module repository commits its own lockfile, so a
|
|
7
|
+
* dependency here is a lockfile refresh outside the workspace before it is a line of code.
|
|
8
|
+
*
|
|
9
|
+
* **Reading is the dangerous direction, and the danger is not the format.** An archive somebody
|
|
10
|
+
* uploads is hostile input, so three things are refused rather than trusted:
|
|
11
|
+
*
|
|
12
|
+
* 1. **Sizes are what the header claims until the bytes prove otherwise.** A 40 KB entry that
|
|
13
|
+
* declares 4 GB uncompressed is the classic zip bomb; `inflateRawSync` is therefore given a hard
|
|
14
|
+
* `maxOutputLength` and the result is checked against the declared length *and* the CRC. A
|
|
15
|
+
* mismatch is that entry's failure, not the archive's.
|
|
16
|
+
* 2. **The whole archive is bounded before any of it is decompressed**, by entry count and by the
|
|
17
|
+
* sum of the declared uncompressed sizes. A thousand entries each declaring 500 MB is refused
|
|
18
|
+
* without inflating one of them.
|
|
19
|
+
* 3. **A path is never a place on disk.** Nothing here writes a file, which removes the classic
|
|
20
|
+
* traversal — but a path is still used as a key, a parent and a title, so `..`, an absolute
|
|
21
|
+
* path and a backslash separator are normalised or refused here rather than in four readers.
|
|
22
|
+
*
|
|
23
|
+
* A malformed *entry* is reported and skipped; a malformed *archive* throws, because there is nothing
|
|
24
|
+
* to report against. That split is the whole shape of this file's error handling and it matches what
|
|
25
|
+
* the import promises: a file that cannot be read gets a row saying so, and an upload that is not a
|
|
26
|
+
* zip is a job that fails before anything is written.
|
|
27
|
+
*/
|
|
28
|
+
import { inflateRawSync } from 'node:zlib';
|
|
29
|
+
import { KernError } from '@kernhq/kernel';
|
|
30
|
+
/** Signatures, spelled out so a misread offset fails loudly instead of producing plausible bytes. */
|
|
31
|
+
const SIG_EOCD = 0x0605_4b50;
|
|
32
|
+
const SIG_EOCD64_LOCATOR = 0x0706_4b50;
|
|
33
|
+
const SIG_CENTRAL = 0x0201_4b50;
|
|
34
|
+
const SIG_LOCAL = 0x0403_4b50;
|
|
35
|
+
/** The end-of-central-directory record is 22 bytes plus a comment of up to 64 KB. */
|
|
36
|
+
const EOCD_MIN = 22;
|
|
37
|
+
const MAX_COMMENT = 0xffff;
|
|
38
|
+
export const DEFAULT_ARCHIVE_LIMITS = {
|
|
39
|
+
maxEntries: 5_000,
|
|
40
|
+
maxTotalBytes: 512 * 1024 * 1024,
|
|
41
|
+
maxEntryBytes: 64 * 1024 * 1024,
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* A path that names a place *inside* the archive and nowhere else.
|
|
45
|
+
*
|
|
46
|
+
* Returns null for anything that would climb out of it. Nothing here writes to disk, so this is not
|
|
47
|
+
* the last line of defence it would be in an unzipper — but the path becomes a lookup key, a parent
|
|
48
|
+
* and sometimes a page title, and `../../secrets/keys.md` resolving to the same key as a real file is
|
|
49
|
+
* how two files silently become one.
|
|
50
|
+
*/
|
|
51
|
+
export function normaliseArchivePath(raw) {
|
|
52
|
+
const out = [];
|
|
53
|
+
for (const segment of raw.replaceAll('\\', '/').split('/')) {
|
|
54
|
+
if (segment === '' || segment === '.')
|
|
55
|
+
continue;
|
|
56
|
+
if (segment === '..') {
|
|
57
|
+
/*
|
|
58
|
+
* A `..` that stays inside the archive is resolved, not refused. Refusing every one of them
|
|
59
|
+
* looks like the safe reading and is the wrong one: `../` is how a *correct* relative link
|
|
60
|
+
* between two folders is spelled, and it is what this module's own exporter writes for every
|
|
61
|
+
* link that is not strictly downward — a child to its parent, a page to its sibling. Refusing
|
|
62
|
+
* them turned those links into plain text on re-import and reported the target as absent when
|
|
63
|
+
* it was sitting in the archive.
|
|
64
|
+
*
|
|
65
|
+
* The property the refusal was there for is kept exactly: a `..` with nothing left to pop
|
|
66
|
+
* would name something above the archive root, so it still returns null. `../secrets/keys.md`
|
|
67
|
+
* and `a/../../secrets/keys.md` are both refused; `a/../b.md` is `b.md`, which is what every
|
|
68
|
+
* reader of the format resolves it to. Two entries that normalise to one key are caught by
|
|
69
|
+
* `readZip`'s duplicate check rather than silently becoming one file.
|
|
70
|
+
*/
|
|
71
|
+
if (out.length === 0)
|
|
72
|
+
return null;
|
|
73
|
+
out.pop();
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
out.push(segment);
|
|
77
|
+
}
|
|
78
|
+
return out.length > 0 ? out.join('/') : null;
|
|
79
|
+
}
|
|
80
|
+
/** `a/b/c.md` → `a/b`; a file at the top is `''`. */
|
|
81
|
+
export const dirnameOf = (key) => {
|
|
82
|
+
const at = key.lastIndexOf('/');
|
|
83
|
+
return at < 0 ? '' : key.slice(0, at);
|
|
84
|
+
};
|
|
85
|
+
/** `a/b/c.md` → `c.md`. */
|
|
86
|
+
export const basenameOf = (key) => key.slice(key.lastIndexOf('/') + 1);
|
|
87
|
+
/** `c.md` → `.md`, lower-cased; a name with no dot has no extension. */
|
|
88
|
+
export function extensionOf(key) {
|
|
89
|
+
const name = basenameOf(key);
|
|
90
|
+
const at = name.lastIndexOf('.');
|
|
91
|
+
return at > 0 ? name.slice(at).toLowerCase() : '';
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Resolve one archive path against another, the way a browser resolves a relative href.
|
|
95
|
+
*
|
|
96
|
+
* `from` is the *file* the link is written in, not its folder — passing the file is what makes the
|
|
97
|
+
* call sites read correctly, and forgetting to take the dirname is the bug this signature removes.
|
|
98
|
+
*/
|
|
99
|
+
export function resolveArchivePath(fromFile, href) {
|
|
100
|
+
if (href.startsWith('/'))
|
|
101
|
+
return normaliseArchivePath(href);
|
|
102
|
+
const base = dirnameOf(fromFile);
|
|
103
|
+
return normaliseArchivePath(base ? `${base}/${href}` : href);
|
|
104
|
+
}
|
|
105
|
+
/** Find the end-of-central-directory record, scanning back over a comment of any legal length. */
|
|
106
|
+
function findEocd(buffer) {
|
|
107
|
+
const earliest = Math.max(0, buffer.length - EOCD_MIN - MAX_COMMENT);
|
|
108
|
+
for (let at = buffer.length - EOCD_MIN; at >= earliest; at--)
|
|
109
|
+
if (buffer.readUInt32LE(at) === SIG_EOCD)
|
|
110
|
+
return at;
|
|
111
|
+
return -1;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Every file in the archive, in central-directory order.
|
|
115
|
+
*
|
|
116
|
+
* Order matters more than it looks: it is the order the report is written in, and a report whose rows
|
|
117
|
+
* are in a different order every time is one nobody can compare against the last run.
|
|
118
|
+
*/
|
|
119
|
+
export function readZip(buffer, limits = DEFAULT_ARCHIVE_LIMITS) {
|
|
120
|
+
if (buffer.length < EOCD_MIN)
|
|
121
|
+
throw KernError.badRequest('That upload is too small to be a zip archive');
|
|
122
|
+
const eocd = findEocd(buffer);
|
|
123
|
+
if (eocd < 0)
|
|
124
|
+
throw KernError.badRequest('That upload is not a zip archive: it has no end-of-central-directory record. ' +
|
|
125
|
+
'Export again and upload the .zip file itself rather than a folder or a single document.');
|
|
126
|
+
const declaredCount = buffer.readUInt16LE(eocd + 10);
|
|
127
|
+
const directoryAt = buffer.readUInt32LE(eocd + 16);
|
|
128
|
+
/*
|
|
129
|
+
* ZIP64 is refused rather than half-read. Both markers mean the real numbers live in a record this
|
|
130
|
+
* reader does not parse, so carrying on would silently read the *wrong* offsets — an archive that
|
|
131
|
+
* appears to hold 65,535 files. An archive that large is beyond the import's own limits anyway, so
|
|
132
|
+
* the refusal costs nothing and the alternative is a wrong answer.
|
|
133
|
+
*/
|
|
134
|
+
const hasZip64Locator = eocd >= 20 && buffer.readUInt32LE(eocd - 20) === SIG_EOCD64_LOCATOR;
|
|
135
|
+
if (declaredCount === 0xffff || directoryAt === 0xffff_ffff || hasZip64Locator)
|
|
136
|
+
throw KernError.badRequest('That archive is in ZIP64 format, which is more than one import can carry. Export it in ' +
|
|
137
|
+
'smaller pieces — one space, or one section at a time.');
|
|
138
|
+
if (declaredCount > limits.maxEntries)
|
|
139
|
+
throw KernError.badRequest(`That archive holds ${declaredCount} files, and one import may carry ${limits.maxEntries}. ` +
|
|
140
|
+
'Export it in smaller pieces — one space, or one section at a time.');
|
|
141
|
+
const entries = [];
|
|
142
|
+
const seen = new Set();
|
|
143
|
+
let declaredTotal = 0;
|
|
144
|
+
let at = directoryAt;
|
|
145
|
+
for (let n = 0; n < declaredCount; n++) {
|
|
146
|
+
if (at + 46 > buffer.length || buffer.readUInt32LE(at) !== SIG_CENTRAL)
|
|
147
|
+
throw KernError.badRequest(`That archive is damaged: its file list stops after ${n} of ${declaredCount} entries.`);
|
|
148
|
+
const flags = buffer.readUInt16LE(at + 8);
|
|
149
|
+
const method = buffer.readUInt16LE(at + 10);
|
|
150
|
+
const crc = buffer.readUInt32LE(at + 16);
|
|
151
|
+
const compressedSize = buffer.readUInt32LE(at + 20);
|
|
152
|
+
const uncompressedSize = buffer.readUInt32LE(at + 24);
|
|
153
|
+
const nameLength = buffer.readUInt16LE(at + 28);
|
|
154
|
+
const extraLength = buffer.readUInt16LE(at + 30);
|
|
155
|
+
const commentLength = buffer.readUInt16LE(at + 32);
|
|
156
|
+
const localAt = buffer.readUInt32LE(at + 42);
|
|
157
|
+
/*
|
|
158
|
+
* The name is decoded as UTF-8 whatever bit 11 says.
|
|
159
|
+
*
|
|
160
|
+
* That bit means "this name is UTF-8", and without it the name is nominally CP437 — but every
|
|
161
|
+
* archiver that matters has written UTF-8 for a decade, Notion, Confluence and macOS included,
|
|
162
|
+
* and plenty of them omit the flag anyway. Honouring the flag would turn a correct Persian page
|
|
163
|
+
* title into mojibake on the archives that forget it, and CP437 and UTF-8 agree on ASCII, so
|
|
164
|
+
* decoding as UTF-8 is right for every archive either of them produces.
|
|
165
|
+
*/
|
|
166
|
+
const rawName = buffer.toString('utf8', at + 46, at + 46 + nameLength);
|
|
167
|
+
at += 46 + nameLength + extraLength + commentLength;
|
|
168
|
+
// A directory entry carries no bytes and is not a file anybody can report on.
|
|
169
|
+
if (rawName.endsWith('/') || rawName.endsWith('\\'))
|
|
170
|
+
continue;
|
|
171
|
+
const key = normaliseArchivePath(rawName);
|
|
172
|
+
if (key === null) {
|
|
173
|
+
entries.push({
|
|
174
|
+
path: rawName,
|
|
175
|
+
key: rawName,
|
|
176
|
+
data: null,
|
|
177
|
+
error: 'the archive gives this file a path that points outside the archive',
|
|
178
|
+
});
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
if (seen.has(key)) {
|
|
182
|
+
entries.push({
|
|
183
|
+
path: rawName,
|
|
184
|
+
key,
|
|
185
|
+
data: null,
|
|
186
|
+
error: 'the archive holds two files at this path, and only the first was read',
|
|
187
|
+
});
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
seen.add(key);
|
|
191
|
+
declaredTotal += uncompressedSize;
|
|
192
|
+
if (declaredTotal > limits.maxTotalBytes)
|
|
193
|
+
throw KernError.badRequest(`That archive unpacks to more than ${Math.round(limits.maxTotalBytes / 1_048_576)} MB, ` +
|
|
194
|
+
'which is more than one import may carry. Export it in smaller pieces.');
|
|
195
|
+
if (uncompressedSize > limits.maxEntryBytes) {
|
|
196
|
+
entries.push({
|
|
197
|
+
path: rawName,
|
|
198
|
+
key,
|
|
199
|
+
data: null,
|
|
200
|
+
error: `it is ${Math.round(uncompressedSize / 1_048_576)} MB, and one file may be ${Math.round(limits.maxEntryBytes / 1_048_576)} MB`,
|
|
201
|
+
});
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
// Bit 0 is "encrypted". The bytes are unreadable without a password nobody has given us.
|
|
205
|
+
if ((flags & 0x0001) !== 0) {
|
|
206
|
+
entries.push({
|
|
207
|
+
path: rawName,
|
|
208
|
+
key,
|
|
209
|
+
data: null,
|
|
210
|
+
error: 'it is encrypted, and an import has no password',
|
|
211
|
+
});
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
if (method !== 0 && method !== 8) {
|
|
215
|
+
entries.push({
|
|
216
|
+
path: rawName,
|
|
217
|
+
key,
|
|
218
|
+
data: null,
|
|
219
|
+
error: `it uses compression method ${method}, and an import reads only stored and deflated files`,
|
|
220
|
+
});
|
|
221
|
+
continue;
|
|
222
|
+
}
|
|
223
|
+
entries.push(readEntry(buffer, { rawName, key, localAt, method, crc, compressedSize, uncompressedSize }));
|
|
224
|
+
}
|
|
225
|
+
/*
|
|
226
|
+
* The count in the end record has to agree with the directory it counts.
|
|
227
|
+
*
|
|
228
|
+
* The loop above reads exactly `declaredCount` headers, so an archive that lists twelve files and
|
|
229
|
+
* says ten hands back ten — and the two it did not read appear in no report row, which is the one
|
|
230
|
+
* silent drop this reader could still produce. Everything else that goes wrong with a file becomes
|
|
231
|
+
* a row; a file nobody read cannot. The directory continuing past the count is the whole test, and
|
|
232
|
+
* it fires on nothing else: a well-formed archive has the end record (or a ZIP64 one, already
|
|
233
|
+
* refused above) at exactly this offset.
|
|
234
|
+
*/
|
|
235
|
+
if (at + 4 <= buffer.length && buffer.readUInt32LE(at) === SIG_CENTRAL)
|
|
236
|
+
throw KernError.badRequest(`That archive is damaged: it says it holds ${declaredCount} files and its file list holds more, ` +
|
|
237
|
+
'so some of them would be imported without being read. Export it again.');
|
|
238
|
+
return entries;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* One entry's bytes, checked against everything the archive claimed about them.
|
|
242
|
+
*
|
|
243
|
+
* The local header is re-read rather than trusted from the central directory, which is what a real
|
|
244
|
+
* unzipper does: the two disagree in archives written by tools that patch one and not the other, and
|
|
245
|
+
* the local header is the one the data actually follows.
|
|
246
|
+
*/
|
|
247
|
+
function readEntry(buffer, header) {
|
|
248
|
+
const { rawName, key } = header;
|
|
249
|
+
const fail = (error) => ({ path: rawName, key, data: null, error });
|
|
250
|
+
if (header.localAt + 30 > buffer.length || buffer.readUInt32LE(header.localAt) !== SIG_LOCAL)
|
|
251
|
+
return fail('the archive has no record of where this file starts');
|
|
252
|
+
const nameLength = buffer.readUInt16LE(header.localAt + 26);
|
|
253
|
+
const extraLength = buffer.readUInt16LE(header.localAt + 28);
|
|
254
|
+
const start = header.localAt + 30 + nameLength + extraLength;
|
|
255
|
+
const end = start + header.compressedSize;
|
|
256
|
+
if (end > buffer.length)
|
|
257
|
+
return fail('the archive ends before this file does');
|
|
258
|
+
const raw = buffer.subarray(start, end);
|
|
259
|
+
let data;
|
|
260
|
+
try {
|
|
261
|
+
data =
|
|
262
|
+
header.method === 8
|
|
263
|
+
? // The cap is what turns a zip bomb into one refused entry rather than the process's memory.
|
|
264
|
+
Buffer.from(inflateRawSync(raw, { maxOutputLength: header.uncompressedSize + 1 }))
|
|
265
|
+
: Buffer.from(raw);
|
|
266
|
+
}
|
|
267
|
+
catch (err) {
|
|
268
|
+
return fail(`it could not be decompressed (${err instanceof Error ? err.message : String(err)})`);
|
|
269
|
+
}
|
|
270
|
+
if (data.length !== header.uncompressedSize)
|
|
271
|
+
return fail(`it unpacked to ${data.length} bytes where the archive said ${header.uncompressedSize}`);
|
|
272
|
+
if (crc32(data) !== header.crc)
|
|
273
|
+
return fail('its checksum does not match, so the file is damaged');
|
|
274
|
+
return { path: rawName, key, data, error: null };
|
|
275
|
+
}
|
|
276
|
+
/** The same polynomial the writer next door uses; a wrong one reads as "every file is damaged". */
|
|
277
|
+
const CRC_TABLE = (() => {
|
|
278
|
+
const table = new Int32Array(256);
|
|
279
|
+
for (let n = 0; n < 256; n++) {
|
|
280
|
+
let c = n;
|
|
281
|
+
for (let k = 0; k < 8; k++)
|
|
282
|
+
c = c & 1 ? 0xedb8_8320 ^ (c >>> 1) : c >>> 1;
|
|
283
|
+
table[n] = c;
|
|
284
|
+
}
|
|
285
|
+
return table;
|
|
286
|
+
})();
|
|
287
|
+
export function crc32(data) {
|
|
288
|
+
let c = 0xffff_ffff;
|
|
289
|
+
for (let i = 0; i < data.length; i++)
|
|
290
|
+
c = CRC_TABLE[(c ^ data[i]) & 0xff] ^ (c >>> 8);
|
|
291
|
+
return (c ^ 0xffff_ffff) >>> 0;
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* The bytes as text, if they are text at all.
|
|
295
|
+
*
|
|
296
|
+
* A UTF-8 BOM is stripped — Confluence's HTML export writes one, and a `# Heading` behind a BOM is a
|
|
297
|
+
* paragraph beginning with an invisible character rather than a heading. A file holding a NUL in its
|
|
298
|
+
* first kilobyte is binary and is refused here, so a JPEG never reaches the Markdown parser.
|
|
299
|
+
*/
|
|
300
|
+
export function textOf(data) {
|
|
301
|
+
const probe = data.subarray(0, 1024);
|
|
302
|
+
for (const byte of probe)
|
|
303
|
+
if (byte === 0)
|
|
304
|
+
return null;
|
|
305
|
+
const text = data.toString('utf8');
|
|
306
|
+
return text.charCodeAt(0) === 0xfeff ? text.slice(1) : text;
|
|
307
|
+
}
|
|
308
|
+
//# sourceMappingURL=zip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zip.js","sourceRoot":"","sources":["../../../src/server/import/zip.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AA6DA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACnE,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,KAAK,aAAa,EAClB,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,eAAe,GAChB,MAAM,aAAa,CAAA;AAEpB,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AA6DA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACnE,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,KAAK,aAAa,EAClB,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,eAAe,GAChB,MAAM,aAAa,CAAA;AAEpB,eAAO,MAAM,WAAW,2IAuRtB,CAAA;AAEF,eAAe,WAAW,CAAA"}
|
package/dist/server/index.js
CHANGED
|
@@ -8,7 +8,7 @@ import { defineModule, defineServerModule, implement_, packageVersion } from './
|
|
|
8
8
|
import { pageDocFromBase64 } from './document.js';
|
|
9
9
|
import { textFromPageDoc } from './render.js';
|
|
10
10
|
import { pages, schema, spaces } from './schema.js';
|
|
11
|
-
import { quireServices } from './services/index.js';
|
|
11
|
+
import { quireJobs, quireServices } from './services/index.js';
|
|
12
12
|
import { createNotify } from './services/notify.js';
|
|
13
13
|
/**
|
|
14
14
|
* How long a page may go without an automatic version while somebody is writing in it.
|
|
@@ -84,6 +84,8 @@ export const quireModule = defineServerModule({
|
|
|
84
84
|
schema,
|
|
85
85
|
migrationsFolder: join(dirname(fileURLToPath(import.meta.url)), '../../migrations'),
|
|
86
86
|
router: implement_,
|
|
87
|
+
/** Gathered in `services/index.ts`, so adding one is not an edit to this file. */
|
|
88
|
+
jobs: quireJobs,
|
|
87
89
|
/**
|
|
88
90
|
* `quire:page:<id>` documents for the workspace-wide search index.
|
|
89
91
|
*
|