rapier-embed 1.1.104 → 1.2.5
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/README.md +45 -27
- package/embed.mjs +9 -4
- package/package.json +1 -1
- package/rapier-plugins.json +46 -32
package/README.md
CHANGED
|
@@ -3,22 +3,22 @@
|
|
|
3
3
|
Embed Rapier's Markdown editor or lightweight reader in your web app. Each build is one offline HTML file. Your
|
|
4
4
|
app owns the document and storage; its agent edits live through WebMCP. The person sees the agent's presence and
|
|
5
5
|
change marks, taps a change to see the before and undoes anything. Honor the person's Will/1 regions.
|
|
6
|
-
The reader is about 190 kB gzipped, with optional fonts and plug-ins. The helper is MIT with no dependencies.
|
|
6
|
+
The reader is about 190 kB gzipped, with optional fonts and plug-ins. The helper is MIT with no dependencies; the two builds it frames are AGPL-3.0-only, and a commercial licence is
|
|
7
|
+
available (`LICENSING.md` in the Rapier repository).
|
|
7
8
|
|
|
8
|
-
Choose one of
|
|
9
|
+
Choose one of two builds:
|
|
9
10
|
|
|
10
11
|
| Build | Contains | Use it to |
|
|
11
12
|
| --- | --- | --- |
|
|
12
13
|
| `rapier-reader.html` | Rendering, search, the outline, reading settings, the fast-scroll circle, read aloud, copy, share, text export and print; opens Word and PDF files. No editing, agent tools or fonts. | Show documents: agent briefs, reports, help. |
|
|
13
|
-
| `rapier
|
|
14
|
-
| `rapier.html` | The whole app: the editor, Draw, Paint, Water, Notes and the JPEG XL encoder. | Give people the complete app. |
|
|
14
|
+
| `rapier.html` | The full editor, with Notes and Draw inline: formatted and source views, find and replace, compare, comments, Word and PDF, Draw, Paint, Water, Notes and the agent tools. | Edit documents inside your app. |
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
Both render the same Markdown standard with the same layout. Download the reader from the root of the
|
|
17
17
|
[rapier repository](https://github.com/jackskip22/rapier), or frame the hosted copies:
|
|
18
|
-
`https://rapier.website/embed/rapier-reader.html` and `https://rapier.website/embed/rapier
|
|
19
|
-
|
|
18
|
+
`https://rapier.website/embed/rapier-reader.html` and `https://rapier.website/embed/rapier.html` (current).
|
|
19
|
+
Each release's own files stay at its tag: `https://cdn.jsdelivr.net/gh/jackskip22/rapier@v<version>/site/embed/<file>` (download a copy to pin a version).
|
|
20
20
|
|
|
21
|
-
`rapier-embed` mounts the reader or the
|
|
21
|
+
`rapier-embed` mounts the reader or the editor in an iframe and speaks the
|
|
22
22
|
[embed contract](https://github.com/jackskip22/rapier/blob/main/docs/embed-contract.md) for you.
|
|
23
23
|
|
|
24
24
|
- Your app owns the document, its revisions, its storage and its users.
|
|
@@ -31,7 +31,7 @@ or `https://rapier.website/embed/<version>/<file>` (permanent).
|
|
|
31
31
|
document access remain enforced.
|
|
32
32
|
|
|
33
33
|
```sh
|
|
34
|
-
npm install rapier-embed@1.
|
|
34
|
+
npm install rapier-embed@1.2.5
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
Or copy the package's `embed.mjs` and `contract.mjs` into one directory of your app; no runtime CDN is needed.
|
|
@@ -46,8 +46,8 @@ Collaborate over MCP and WebMCP, use optional encrypted sync to your own Cloudfl
|
|
|
46
46
|
editor and lightweight reader (about 190 kB gzipped). The agent edits live; the person sees its presence and
|
|
47
47
|
changes, taps a change to see the before and undoes anything. Use `show {target:"comparison"}` to show a diff deliberately.
|
|
48
48
|
|
|
49
|
-
1. **Work together live.** Connect to `https://mcp.rapier.website/mcp`, then call `open` to share one document with the person.
|
|
50
|
-
2. **Deliver an offline editor.** Run `npx rapier-html@1.
|
|
49
|
+
1. **Work together live.** Connect to `https://mcp.rapier.website/door/mcp`, then call `open` to share one document with the person.
|
|
50
|
+
2. **Deliver an offline editor.** Run `npx rapier-html@1.2.5 notes.md` to put the document and editor in one HTML file ([rapier-html](https://github.com/jackskip22/rapier-plugins/tree/main/npm/rapier-html)).
|
|
51
51
|
3. **Embed in your app.** Install [rapier-embed](https://github.com/jackskip22/rapier-plugins/tree/main/npm/rapier-embed); mount the editor or reader, with your app's agent over WebMCP in the editor.
|
|
52
52
|
4. **Keep portable Markdown.** Use [rapier-markdown-kit](https://github.com/jackskip22/rapier-plugins/tree/main/npm/rapier-markdown-kit) for pictures, editable SVG drawings and layout in one `.md` file. Respect [Will/1](https://github.com/jackskip22/will) `keep`, `append` and `edit` regions.
|
|
53
53
|
5. **Encode JPEG XL.** Install [rapier-jxl](https://github.com/jackskip22/rapier-jxl) to encode pixels, photographs and existing JPEGs in JavaScript.
|
|
@@ -76,8 +76,9 @@ await reader.load(nextBrief, {revision: 2, filename: 'brief.md'});
|
|
|
76
76
|
```
|
|
77
77
|
|
|
78
78
|
The reader takes `load`, `onState`, `theme`, `settings`, `style`, `plugins` and `title`, and refuses `save`,
|
|
79
|
-
`compare`, `onClose`, `agent`, `agentName` and `assets`. Every document it shows is read-only.
|
|
80
|
-
|
|
79
|
+
`compare`, `onClose`, `agent`, `agentName` and `assets`. Every document it shows is read-only. Content arrives
|
|
80
|
+
through `load`. After your first load, the person can open a local file with the reader's Open; dropping a file
|
|
81
|
+
opens it only in a reader standing alone.
|
|
81
82
|
Its `settings` features are `find`, `readAloud` and `share`; pass `settings: {features: ['find']}` to leave the
|
|
82
83
|
others out. For a plain iframe, put the options in its address:
|
|
83
84
|
`<iframe src="/vendor/rapier/rapier-reader.html?plugins=/vendor/rapier/plugins/">`.
|
|
@@ -87,9 +88,9 @@ others out. For a plain iframe, put the options in its address:
|
|
|
87
88
|
A copy in your app works offline and changes only when you update it.
|
|
88
89
|
|
|
89
90
|
1. Download the build you frame into a static directory, for example
|
|
90
|
-
`https://
|
|
91
|
+
`https://cdn.jsdelivr.net/gh/jackskip22/rapier@v<version>/site/embed/rapier-reader.html` to `public/vendor/rapier/`.
|
|
91
92
|
2. Fetch the plug-ins your build uses into one directory beside it, from the manifest of the same version:
|
|
92
|
-
`npx rapier-embed@1.
|
|
93
|
+
`npx rapier-embed@1.2.5 plugins public/vendor/rapier/plugins --build reader`.
|
|
93
94
|
3. Mount with `src` and `plugins` pointing at your copies. Serve them over HTTPS (HTTP on localhost) and allow
|
|
94
95
|
their origin in your `frame-src`. A same-origin parent can script its frame; use a dedicated origin when the
|
|
95
96
|
frame must be isolated.
|
|
@@ -105,7 +106,7 @@ length and SHA-384 before it runs it, and keeps on the device. A file that fails
|
|
|
105
106
|
| --- | --- | --- | --- |
|
|
106
107
|
| `flowchart` | Mermaid flowcharts and graphs, drawn natively | 0.26 MB | The reader; built into the editors |
|
|
107
108
|
| `math` | TeX maths, `$...$` and `$$...$$` | 11.9 MB | All three |
|
|
108
|
-
| `diagrams` | Mermaid and ZenUML diagrams
|
|
109
|
+
| `diagrams` | Mermaid 12.1.0 and ZenUML 4.5.0 diagrams | 7.38 MB (2 files) | All three |
|
|
109
110
|
| `pdf` | Opens a PDF as a Markdown document: its text layer, or each page as a picture | 6.4 MB (197 files) | All three |
|
|
110
111
|
| `docx` | Opens a Word document (`.docx`) as a Markdown document | 0.25 MB | The reader; built into the editors |
|
|
111
112
|
| `ocr` | Finds text in pictures, so search reaches words inside them | 21.5 MB | All three |
|
|
@@ -114,7 +115,7 @@ length and SHA-384 before it runs it, and keeps on the device. A file that fails
|
|
|
114
115
|
The manifest lists every plug-in file and, in `builds`, the pages that use it. The reader uses `flowchart`, `docx`, `math`,
|
|
115
116
|
`diagrams` and `pdf`.
|
|
116
117
|
|
|
117
|
-
**With `plugins`.** With `plugins` set, a page (the reader
|
|
118
|
+
**With `plugins`.** With `plugins` set, a page (the reader or `rapier.html`) reads every plug-in from
|
|
118
119
|
that directory, by each file's path in the manifest, and makes no other request, so it works offline and under a strict
|
|
119
120
|
Content Security Policy. One directory serves every build. A file missing from it fails that plug-in with a message; nothing is
|
|
120
121
|
fetched in its place.
|
|
@@ -123,7 +124,7 @@ The directory must be on the page's own origin, because the page's Content Secur
|
|
|
123
124
|
throws a `TypeError` for a directory on another origin, and a page opened with one shows each plug-in as failed, with the
|
|
124
125
|
reason, without making a request. To keep the plug-ins on a CDN, serve the page from the same origin.
|
|
125
126
|
|
|
126
|
-
`npx rapier-embed@1.
|
|
127
|
+
`npx rapier-embed@1.2.5 plugins <directory>` fetches every file the manifest lists, checks it, and writes it. It
|
|
127
128
|
keeps a file that is already there and correct, and exits with status 1 if any file is missing or fails its check.
|
|
128
129
|
`--build reader`, `--build document` or `--build full` keeps the files that build uses, `--only name,name` fetches some
|
|
129
130
|
plug-ins, `--check` verifies a directory without fetching, `--from <address>` fetches from your own mirror, and
|
|
@@ -135,7 +136,7 @@ manifest must be present unless you supply one. Only regular files are accepted
|
|
|
135
136
|
symbolic links in plug-in paths are refused. Keep the directory under your control while the command runs.
|
|
136
137
|
|
|
137
138
|
The manifest, `rapier-plugins.json`, ships in the package and stands beside each published reader at
|
|
138
|
-
`https://
|
|
139
|
+
`https://cdn.jsdelivr.net/gh/jackskip22/rapier@v<version>/site/embed/rapier-plugins.json`. Use the manifest of the same version as your
|
|
139
140
|
`rapier-reader.html`: each reader pins the files it was built with. It names every plug-in, what it adds, and each
|
|
140
141
|
file's `file` (a path: the PDF reader's pdf.js files keep their folders), `bytes`, `sha384` (hex), `sri` (base64)
|
|
141
142
|
and source `url`. Without Node, fetch and check the files like this:
|
|
@@ -148,7 +149,7 @@ jq -r --arg build reader '.plugins[] | .builds as $b | .files[] | select((.build
|
|
|
148
149
|
done
|
|
149
150
|
```
|
|
150
151
|
|
|
151
|
-
**Without `plugins`.** `rapier
|
|
152
|
+
**Without `plugins`.** `rapier.html` looks for the `math` and `diagrams` files beside the page,
|
|
152
153
|
at the file names the manifest lists, before their pinned addresses. The
|
|
153
154
|
PDF reader, text in pictures and letter sets come from their pinned addresses.
|
|
154
155
|
|
|
@@ -209,7 +210,7 @@ Rapier's own sheets, so any rule in it wins; prefer the properties above, which
|
|
|
209
210
|
import {Rapier} from 'rapier-embed';
|
|
210
211
|
|
|
211
212
|
const editor = Rapier.mount(document.querySelector('#editor'), {
|
|
212
|
-
src: '/vendor/rapier/rapier
|
|
213
|
+
src: '/vendor/rapier/rapier.html', // omit to frame the hosted document editor
|
|
213
214
|
sessionId: 'editing-session-42', documentId: 'notes-7',
|
|
214
215
|
load: {content: documentText, filename: 'notes.md', revision: storedRevision},
|
|
215
216
|
async save({content, requestId, baseRevision}) {
|
|
@@ -245,7 +246,7 @@ source stays in the editor.
|
|
|
245
246
|
|
|
246
247
|
```js
|
|
247
248
|
const editor = Rapier.mount(document.querySelector('#editor'), {
|
|
248
|
-
src: '/vendor/rapier/rapier
|
|
249
|
+
src: '/vendor/rapier/rapier.html',
|
|
249
250
|
settings: {
|
|
250
251
|
features: ['find', 'share'],
|
|
251
252
|
language: 'en',
|
|
@@ -314,11 +315,25 @@ apply the old insertion to the replacement document. Asset failures do not rejec
|
|
|
314
315
|
|
|
315
316
|
The handle has `iframe`, `ready` (a promise) and `connected`. `load(content, {revision, filename?, readOnly?,
|
|
316
317
|
title?})`, `save()`, `compare(content, {filename?})` and `close()` use their grants. `theme(value)` changes the
|
|
317
|
-
host theme; `style({css, fonts})` restyles the reader; `disconnect()` ends the connection
|
|
318
|
-
operations
|
|
318
|
+
host theme; `style({css, fonts})` restyles the reader; `disconnect()` ends the connection, rejects unfinished
|
|
319
|
+
operations and removes the iframe that mount created in a container (an iframe you passed stays). Mount does not size
|
|
320
|
+
a frame it creates: give it a size in your CSS, for example `#editor iframe {width: 100%; height: 100%; border: 0}`.
|
|
321
|
+
`on('connected' | 'state' | 'close-request' | 'closed' | 'error', fn)` returns an
|
|
319
322
|
unsubscribe function. State is `{loaded, dirty, saving, closing, readOnly, filename, docKind}`. Mount a fresh frame to
|
|
320
323
|
change grants or settings. A denied or dirty replacement load rejects.
|
|
321
324
|
|
|
325
|
+
Every refusal is an `Error` with a `code`. A connect the frame refuses rejects `ready`: `contract_unsupported`,
|
|
326
|
+
`capabilities_invalid`, a `settings_*` code, or `invalid_payload` with a `reason`. `save()` resolves with
|
|
327
|
+
`{revision}` once the frame holds no newer edits, and rejects with `conflict`, `failed` (your callback threw),
|
|
328
|
+
`document_too_large`, `save_payload_invalid`, `not_loaded` (no load yet), `read_only` or `save_unavailable` (the
|
|
329
|
+
frame could not capture; the person is told why). `close()` resolves with the frame's `close-ready` payload:
|
|
330
|
+
`{saved: true}` or `{discarded: true}` after your answer, `{forced: true}` when the person closes without your
|
|
331
|
+
answer, or `{cancelled: true}` when you answer `cancel`.
|
|
332
|
+
|
|
333
|
+
The frame keeps the person's unsaved work only for the document you loaded: a draft in that tab's session storage,
|
|
334
|
+
which a load of the same revision reopens and your `discard` answer retires. It never reads, offers or writes the
|
|
335
|
+
person's own Rapier documents or recovery on its origin, and it keeps nothing before your first load.
|
|
336
|
+
|
|
322
337
|
Saving names the browser-authenticated host and port. The helper's acknowledgement is your statement that storage
|
|
323
338
|
succeeded; Rapier cannot make an arbitrary host keep that promise. To show saved documents without a frame, use
|
|
324
339
|
`rapier-markdown-kit`, the same renderer as a library.
|
|
@@ -328,7 +343,7 @@ succeeded; Rapier cannot make an arbitrary host keep that promise. To show saved
|
|
|
328
343
|
```html
|
|
329
344
|
<form method="post" enctype="multipart/form-data">
|
|
330
345
|
<label for="body">Document</label>
|
|
331
|
-
<rapier-editor id="body" name="body" required src="/vendor/rapier/rapier
|
|
346
|
+
<rapier-editor id="body" name="body" required src="/vendor/rapier/rapier.html">
|
|
332
347
|
<textarea name="body"># Notes
|
|
333
348
|
|
|
334
349
|
Write here.</textarea>
|
|
@@ -361,7 +376,10 @@ submission; they are not durable server saves.
|
|
|
361
376
|
## Work with your app's agent
|
|
362
377
|
|
|
363
378
|
With `agent: true`, the frame registers Rapier's six tools through WebMCP for your page's origin; the
|
|
364
|
-
browser needs WebMCP and the `tools` permission, which mount grants the frame.
|
|
379
|
+
browser needs WebMCP and the `tools` permission, which mount grants the frame. Where WebMCP is still an origin
|
|
380
|
+
trial, the published pages carry the trial token for `rapier.website` only: serve your own copy with your origin's
|
|
381
|
+
WebMCP trial token (an `Origin-Trial` response header). After `disconnect`, the tools refuse with
|
|
382
|
+
`host_not_connected`; the document stays in the frame for the person to copy or download. There is no arbitrary `invoke`
|
|
365
383
|
postMessage. The tools are `open`, `read`, `edit`, `undo`, `show` and `export`, as on the hosted door
|
|
366
384
|
(see the [agent guide](https://rapier.website/agents)). Read exact text and its revision; edit unique text
|
|
367
385
|
at that revision. Native drawing and painting are fenced text; painting needs the full `rapier.html`.
|
|
@@ -396,5 +414,5 @@ Will/1 records the person's instructions in their document. Respect `keep`, appe
|
|
|
396
414
|
Documents without Will regions are editable throughout. Preserve active typing, caret, selection and scroll
|
|
397
415
|
while the agent works. Document content and comments never start agent turns by themselves.
|
|
398
416
|
|
|
399
|
-
For documents outside an app, `npx rapier-html@1.
|
|
417
|
+
For documents outside an app, `npx rapier-html@1.2.5 notes.md` hands a person the complete editor around their
|
|
400
418
|
document as one offline file.
|
package/embed.mjs
CHANGED
|
@@ -250,8 +250,8 @@ function createAssetBroker({current, send}) {
|
|
|
250
250
|
return {FEATURES, LIMITS, ASSET_TYPES, refusal, normalizeSettings, snapshotSettings, pickDeviceFile, createFilePicker, assetURL, assetBytes, bytesHash, externalImage, createAssetBroker};
|
|
251
251
|
})();
|
|
252
252
|
// ---- END contract.mjs ----
|
|
253
|
-
// The hosted builds a mount can name: the editor
|
|
254
|
-
const BUILDS = Object.freeze({document: 'https://rapier.website/embed/rapier
|
|
253
|
+
// The hosted builds a mount can name: the full editor, with Notes and Draw inline, and the read-only reader.
|
|
254
|
+
const BUILDS = Object.freeze({document: 'https://rapier.website/embed/rapier.html', reader: 'https://rapier.website/embed/rapier-reader.html'});
|
|
255
255
|
const DEFAULT_SRC = BUILDS.document;
|
|
256
256
|
const revision = value => Number.isSafeInteger(value) && value >= 0 || typeof value === 'string' && value.length > 0 && value.length <= 256;
|
|
257
257
|
const identifier = value => typeof value === 'string' && value.length > 0 && value.length <= 256;
|
|
@@ -360,7 +360,10 @@ function mount(target, options = {}) {
|
|
|
360
360
|
const {requestId, baseRevision, payload} = message;
|
|
361
361
|
if (!options.save || !identifier(requestId) || !revision(baseRevision) || typeof payload?.content !== 'string') return;
|
|
362
362
|
const reject = code => {
|
|
363
|
-
if (
|
|
363
|
+
if (ended || channel !== port) return;
|
|
364
|
+
channel.postMessage({type: 'save-nack', ...ids, requestId, baseRevision, payload: {code, reason: code}});
|
|
365
|
+
// A capture that can never be stored ends the host's save(); a changed repeat of an ID is only that repeat's refusal.
|
|
366
|
+
if (code !== 'save_request_conflict') { activeSave?.reject(refused({code})); activeSave = null; }
|
|
364
367
|
};
|
|
365
368
|
if (!payload.content.isWellFormed() || Object.keys(payload).some(key => !['content', 'filename', 'docKind', 'codeLang'].includes(key)) ||
|
|
366
369
|
typeof payload.filename !== 'string' || payload.filename.length > 255 ||
|
|
@@ -636,6 +639,7 @@ function mount(target, options = {}) {
|
|
|
636
639
|
rejectPending(error); connectedWait.reject(error); ready.reject(error);
|
|
637
640
|
host.removeEventListener('message', onWindowMessage); iframe.removeEventListener('load', onLoad);
|
|
638
641
|
port?.close(); port = null; listeners.clear();
|
|
642
|
+
if (iframe !== target) iframe.remove();
|
|
639
643
|
},
|
|
640
644
|
on(type, fn) {
|
|
641
645
|
if (typeof fn !== 'function') throw new TypeError('An event listener must be a function');
|
|
@@ -738,7 +742,8 @@ export class RapierEditor extends (globalThis.HTMLElement || class {}) {
|
|
|
738
742
|
if (!this._initialized) return;
|
|
739
743
|
if (name === 'disabled') this.formDisabledCallback(this.matches(':disabled'));
|
|
740
744
|
else if (name === 'theme') this._editor?.theme(this.getAttribute('theme') || 'system').catch(error => this._error(error));
|
|
741
|
-
|
|
745
|
+
// Only a connected editor holds edits to keep; one that never booted is replaced, or its save would wait forever.
|
|
746
|
+
else if (name === 'src') (this._editor?.connected ? this.save() : Promise.resolve()).then(() => this._replace(this._value)).catch(error => this._error(error));
|
|
742
747
|
else this._updateValue();
|
|
743
748
|
}
|
|
744
749
|
get value() { return this._value; }
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rapier-embed",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.5",
|
|
4
4
|
"description": "Embed the Rapier Markdown editor or its lightweight reader (about 190 kB) in your web app. Runs offline from your own copy, saves to your storage, and takes your CSS and fonts. Your app's AI agent edits directly over WebMCP under the Will. MIT, no dependencies.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"markdown",
|
package/rapier-plugins.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": 1,
|
|
3
|
-
"release": "1.
|
|
3
|
+
"release": "1.2.5",
|
|
4
4
|
"directory": "Put every file in one directory, keeping each file's folder, and give the page its address with `plugins`. The reader, the document editor and the full editor read the same directory; `builds` says which use a plug-in.",
|
|
5
5
|
"plugins": [
|
|
6
6
|
{
|
|
@@ -11,11 +11,11 @@
|
|
|
11
11
|
],
|
|
12
12
|
"files": [
|
|
13
13
|
{
|
|
14
|
-
"file": "rapier-flowchart-1.
|
|
15
|
-
"bytes":
|
|
16
|
-
"sha384": "
|
|
17
|
-
"sri": "
|
|
18
|
-
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@
|
|
14
|
+
"file": "rapier-flowchart-1.2.5.js",
|
|
15
|
+
"bytes": 294821,
|
|
16
|
+
"sha384": "33a5670c4ab7a81572173b4648c9459f8750c52efd23f65ef3abf864ec6dedcf354efd54b9d12b30983880bfc721e50e",
|
|
17
|
+
"sri": "M6VnDEq3qBVyFztGSMlFn4dQxS79I/Ze86v4ZOxt7c81Tv1UudErMJg4gL/HIeUO",
|
|
18
|
+
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.5/flowchart/rapier-flowchart-1.2.5.js"
|
|
19
19
|
}
|
|
20
20
|
]
|
|
21
21
|
},
|
|
@@ -27,11 +27,11 @@
|
|
|
27
27
|
],
|
|
28
28
|
"files": [
|
|
29
29
|
{
|
|
30
|
-
"file": "rapier-docx-1.
|
|
31
|
-
"bytes":
|
|
32
|
-
"sha384": "
|
|
33
|
-
"sri": "
|
|
34
|
-
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@
|
|
30
|
+
"file": "rapier-docx-1.2.5.js",
|
|
31
|
+
"bytes": 584926,
|
|
32
|
+
"sha384": "3329387ba6e4b1eb0a3fc1f6f10cd6721fdd9784661bae4a38a020ec6d98f167f68429fb61f873086f89ac8ad2f88abc",
|
|
33
|
+
"sri": "Myk4e6bksesKP8H28QzWch/dl4RmG65KOKAg7G2Y8Wf2hCn7YfhzCG+JrIrS+Iq8",
|
|
34
|
+
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.5/docx/rapier-docx-1.2.5.js"
|
|
35
35
|
}
|
|
36
36
|
]
|
|
37
37
|
},
|
|
@@ -45,17 +45,17 @@
|
|
|
45
45
|
],
|
|
46
46
|
"files": [
|
|
47
47
|
{
|
|
48
|
-
"file": "rapier-math-
|
|
49
|
-
"bytes":
|
|
50
|
-
"sha384": "
|
|
51
|
-
"sri": "
|
|
52
|
-
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@
|
|
48
|
+
"file": "rapier-math-2.4.0.js",
|
|
49
|
+
"bytes": 691650,
|
|
50
|
+
"sha384": "0bddb1dbafa9048e2af45a16ca932105bf02a9219a68f2f0f1da588a05a260db184114dc3d5ac5c8f563ae173f4e7c21",
|
|
51
|
+
"sri": "C92x26+pBI4q9FoWypMhBb8CqSGaaPLw8dpYigWiYNsYQRTcPVrFyPVjrhc/Tnwh",
|
|
52
|
+
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.5/math/rapier-math-2.4.0.js"
|
|
53
53
|
}
|
|
54
54
|
]
|
|
55
55
|
},
|
|
56
56
|
{
|
|
57
57
|
"name": "diagrams",
|
|
58
|
-
"adds": "Draws
|
|
58
|
+
"adds": "Draws every other Mermaid diagram: sequence, class, state, ER, Gantt, pie and more.",
|
|
59
59
|
"builds": [
|
|
60
60
|
"reader",
|
|
61
61
|
"document",
|
|
@@ -63,11 +63,18 @@
|
|
|
63
63
|
],
|
|
64
64
|
"files": [
|
|
65
65
|
{
|
|
66
|
-
"file": "
|
|
67
|
-
"bytes":
|
|
68
|
-
"sha384": "
|
|
69
|
-
"sri": "
|
|
70
|
-
"url": "https://cdn.jsdelivr.net/
|
|
66
|
+
"file": "mermaid.min.js",
|
|
67
|
+
"bytes": 5493176,
|
|
68
|
+
"sha384": "11b0698ceeeb951e9ea9911c1bb19a3e9ca4f47f56accc8f597e1ddcabcf625b60b7c67c974cfa479e81d6a3f8d29478",
|
|
69
|
+
"sri": "EbBpjO7rlR6eqZEcG7GaPpyk9H9WrMyPWX4d3KvPYltgt8Z8l0z6R56B1qP40pR4",
|
|
70
|
+
"url": "https://cdn.jsdelivr.net/npm/mermaid@12.1.0/dist/mermaid.min.js"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"file": "rapier-zenuml-4.5.0-2.js",
|
|
74
|
+
"bytes": 1896464,
|
|
75
|
+
"sha384": "f0fb63861d733533afcb577114785781829fb36f740d2969ce8c39ac5f45bcfdfc72886d6ec056dfcd568729b5588e84",
|
|
76
|
+
"sri": "8Ptjhh1zNTOvy1dxFHhXgYKfs290DSlpzow5rF9FvP38cohtbsBW381Whym1WI6E",
|
|
77
|
+
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier@v1.2.5/site/plugins/rapier-zenuml-4.5.0-2.js"
|
|
71
78
|
}
|
|
72
79
|
]
|
|
73
80
|
},
|
|
@@ -81,11 +88,11 @@
|
|
|
81
88
|
],
|
|
82
89
|
"files": [
|
|
83
90
|
{
|
|
84
|
-
"file": "rapier-pdf-1.
|
|
85
|
-
"bytes":
|
|
86
|
-
"sha384": "
|
|
87
|
-
"sri": "
|
|
88
|
-
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@
|
|
91
|
+
"file": "rapier-pdf-1.2.5.js",
|
|
92
|
+
"bytes": 38428,
|
|
93
|
+
"sha384": "acc2af2a331402d92163a2b222fe9153753fc1b4696ec4ee8a58f089dab8d6a65221a761aeb53fcf559363da90e5e7a8",
|
|
94
|
+
"sri": "rMKvKjMUAtkhY6KyIv6RU3U/wbRpbsTuiljwidq41qZSIadhrrU/z1WTY9qQ5eeo",
|
|
95
|
+
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.5/pdf/rapier-pdf-1.2.5.js",
|
|
89
96
|
"builds": [
|
|
90
97
|
"reader"
|
|
91
98
|
]
|
|
@@ -1461,6 +1468,13 @@
|
|
|
1461
1468
|
"sha384": "d15b737dc9862bad40cdfd1f46dfb5801e7dff77f70aefbd4945ea5a404e13b205463efcaa8ad206940e1427d7c29573",
|
|
1462
1469
|
"sri": "0VtzfcmGK61Azf0fRt+1gB59/3f3Cu+9SUXqWkBOE7IFRj78qorSBpQOFCfXwpVz",
|
|
1463
1470
|
"url": "https://cdn.jsdelivr.net/npm/pdfjs-dist@6.3.289/wasm/openjpeg_nowasm_fallback.js"
|
|
1471
|
+
},
|
|
1472
|
+
{
|
|
1473
|
+
"file": "pdfjs-dist-6.3.289/rapier-pdf-reader-48f8f3878a017431.mjs",
|
|
1474
|
+
"bytes": 46571,
|
|
1475
|
+
"sha384": "9d7b78d43b0b54f4ea92d57aeaf3c68739974d31fda64cb295be7d49a19aeee24ca20b42658f21a80f850218ffd7aab0",
|
|
1476
|
+
"sri": "nXt41DsLVPTqktV66vPGhzmXTTH9pkyylb59SaGa7uJMogtCZY8hqA+FAhj/16qw",
|
|
1477
|
+
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.5/pdfjs-dist-6.3.289/rapier-pdf-reader-48f8f3878a017431.mjs"
|
|
1464
1478
|
}
|
|
1465
1479
|
]
|
|
1466
1480
|
},
|
|
@@ -1558,7 +1572,7 @@
|
|
|
1558
1572
|
"bytes": 1214356,
|
|
1559
1573
|
"sha384": "ab8987037faedcddd8b7ccf5c22b0211742a58da395211d9d275044a277c046359cfa06d57c75252554ebf29dd7344e3",
|
|
1560
1574
|
"sri": "q4mHA3+u3N3Yt8z1wisCEXQqWNo5UhHZ0nUESid8BGNZz6BtV8dSUlVOvyndc0Tj",
|
|
1561
|
-
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier@
|
|
1575
|
+
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier@v1.2.5/site/plugins/rapier-font-subset-2.js"
|
|
1562
1576
|
}
|
|
1563
1577
|
]
|
|
1564
1578
|
},
|
|
@@ -1574,28 +1588,28 @@
|
|
|
1574
1588
|
"bytes": 96902,
|
|
1575
1589
|
"sha384": "545b0213fef34ba2a4abf116d7fecd7d81d51a85573549b4a561ddb499b35f085680958148a84d1ee534383b8609aaf4",
|
|
1576
1590
|
"sri": "VFsCE/7zS6Kkq/EW1/7NfYHVGoVXNUm0pWHdtJmzXwhWgJWBSKhNHuU0ODuGCar0",
|
|
1577
|
-
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@
|
|
1591
|
+
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.5/letters/field.json"
|
|
1578
1592
|
},
|
|
1579
1593
|
{
|
|
1580
1594
|
"file": "letters-relief.json",
|
|
1581
1595
|
"bytes": 95172,
|
|
1582
1596
|
"sha384": "b5072d05a91eda0bbb07fbf9ff58c2e9716de6c995e6e560ed6ec67495ec259059eb665cedcad23f7cd19193e042a82a",
|
|
1583
1597
|
"sri": "tQctBake2gu7B/v5/1jC6XFt5smV5uVg7W7GdJXsJZBZ62Zc7crSP3zRkZPgQqgq",
|
|
1584
|
-
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@
|
|
1598
|
+
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.5/letters/relief.json"
|
|
1585
1599
|
},
|
|
1586
1600
|
{
|
|
1587
1601
|
"file": "letters-leaf.json",
|
|
1588
1602
|
"bytes": 134918,
|
|
1589
1603
|
"sha384": "0ed48a5ad5a18a2b6534e7e3c7da3925fd0561ca562f0e27996023a3578003714ebecd8e8c1da175d1e54429ebb59ee0",
|
|
1590
1604
|
"sri": "DtSKWtWhiitlNOfjx9o5Jf0FYcpWLw4nmWAjo1eAA3FOvs2OjB2hddHlRCnrtZ7g",
|
|
1591
|
-
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@
|
|
1605
|
+
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.5/letters/leaf.json"
|
|
1592
1606
|
},
|
|
1593
1607
|
{
|
|
1594
1608
|
"file": "letters-arabesque.json",
|
|
1595
1609
|
"bytes": 136035,
|
|
1596
1610
|
"sha384": "671db3d9b1290f854d90871c2de8dc518ebc7aa005ada3c437b86ab2a91c56a1ce286bec48ca9b2cb8975e496f648365",
|
|
1597
1611
|
"sri": "Zx2z2bEpD4VNkIccLejcUY68eqAFraPEN7hqsqkcVqHOKGvsSMqbLLiXXklvZINl",
|
|
1598
|
-
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@
|
|
1612
|
+
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.5/letters/arabesque.json"
|
|
1599
1613
|
}
|
|
1600
1614
|
]
|
|
1601
1615
|
}
|