61 lines
2.5 KiB
Markdown
61 lines
2.5 KiB
Markdown
|
|
# Word editor — a Theseus community extension
|
|||
|
|
|
|||
|
|
Opens, edits and saves Word documents (`.docx`) in a full Theseus tab.
|
|||
|
|
|
|||
|
|
This is **not** a bundled add-on. It isn't in `bundled-addons/`, it isn't in
|
|||
|
|
the installer's `extraResources`, and a fresh Theseus profile doesn't have it.
|
|||
|
|
Users get it the same way they'd get anyone else's extension: from
|
|||
|
|
**Settings › Extensions › Community**, which lists whatever is in the
|
|||
|
|
catalogue at theseus.x/extensions.
|
|||
|
|
|
|||
|
|
Living outside the browser build is the point. A .docx editor is a big
|
|||
|
|
dependency — a megabyte of vendored library — and nobody should carry it
|
|||
|
|
because they wanted a browser.
|
|||
|
|
|
|||
|
|
## Building
|
|||
|
|
|
|||
|
|
The vendored libraries (mammoth, ProseMirror, docx, JSZip) are bundled by a
|
|||
|
|
build step that lives outside this folder, because mammoth needs local patches
|
|||
|
|
before it can carry everything the editor edits:
|
|||
|
|
|
|||
|
|
cd ../../addon-build/docx-editor
|
|||
|
|
npm install
|
|||
|
|
npm run build # writes vendor/docx-vendor.js here
|
|||
|
|
npm run pack # writes out/docx-editor-<version>.tar.gz
|
|||
|
|
|
|||
|
|
`vendor/docx-vendor.js` is committed, so the extension is installable straight
|
|||
|
|
from a checkout; re-run `npm run build` after touching anything under
|
|||
|
|
`addon-build/`.
|
|||
|
|
|
|||
|
|
## Publishing
|
|||
|
|
|
|||
|
|
`npm run pack` produces the tarball and its sha256. Uploading it is a separate
|
|||
|
|
step, and this repo can't do it: a community extension is signed by the
|
|||
|
|
**owner of a BNS name**, using that name's wallet.
|
|||
|
|
|
|||
|
|
The straightforward route is the publish page at
|
|||
|
|
**theseus.x/extensions/publish** — it unlocks a wallet in the browser, checks
|
|||
|
|
that the name is yours, then signs and `PUT`s the tarball to
|
|||
|
|
`/api/ext/<publisher-name>/docx-editor/<version>`. The gateway verifies both
|
|||
|
|
signatures against the name's current owner, stores the tarball on Sia and
|
|||
|
|
updates `catalog.json`, which is what Settings and the site both read.
|
|||
|
|
|
|||
|
|
Version numbers must increase, and the id `docx-editor` belongs to whichever
|
|||
|
|
name publishes it first.
|
|||
|
|
|
|||
|
|
## Testing
|
|||
|
|
|
|||
|
|
Three levels, all re-runnable, all from `../../addon-build/docx-editor`:
|
|||
|
|
|
|||
|
|
node test/roundtrip.mjs # the built-in fixture
|
|||
|
|
node test/corpus.mjs <folder of .docx> # real documents
|
|||
|
|
node ../../../scratchpad/verify-docx-editor/drive.mjs # a real Theseus, over CDP
|
|||
|
|
|
|||
|
|
The last one installs this folder into a throwaway profile the way the
|
|||
|
|
community channel would, and is the only one that catches browser-only
|
|||
|
|
breakage.
|
|||
|
|
|
|||
|
|
What survives a round trip, and what doesn't, is written up in
|
|||
|
|
[ROUND-TRIP.md](ROUND-TRIP.md). Read that before promising anyone a Word
|
|||
|
|
feature.
|