rapier-embed 1.2.3 → 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 +17 -17
- package/embed.mjs +4 -3
- package/package.json +1 -1
- package/rapier-plugins.json +36 -36
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
|
|
18
|
+
`https://rapier.website/embed/rapier-reader.html` and `https://rapier.website/embed/rapier.html` (current).
|
|
19
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 @@ Each release's own files stay at its tag: `https://cdn.jsdelivr.net/gh/jackskip2
|
|
|
31
31
|
document access remain enforced.
|
|
32
32
|
|
|
33
33
|
```sh
|
|
34
|
-
npm install rapier-embed@1.2.
|
|
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.
|
|
@@ -47,7 +47,7 @@ editor and lightweight reader (about 190 kB gzipped). The agent edits live; the
|
|
|
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
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.
|
|
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.
|
|
@@ -90,7 +90,7 @@ A copy in your app works offline and changes only when you update it.
|
|
|
90
90
|
1. Download the build you frame into a static directory, for example
|
|
91
91
|
`https://cdn.jsdelivr.net/gh/jackskip22/rapier@v<version>/site/embed/rapier-reader.html` to `public/vendor/rapier/`.
|
|
92
92
|
2. Fetch the plug-ins your build uses into one directory beside it, from the manifest of the same version:
|
|
93
|
-
`npx rapier-embed@1.2.
|
|
93
|
+
`npx rapier-embed@1.2.5 plugins public/vendor/rapier/plugins --build reader`.
|
|
94
94
|
3. Mount with `src` and `plugins` pointing at your copies. Serve them over HTTPS (HTTP on localhost) and allow
|
|
95
95
|
their origin in your `frame-src`. A same-origin parent can script its frame; use a dedicated origin when the
|
|
96
96
|
frame must be isolated.
|
|
@@ -115,7 +115,7 @@ length and SHA-384 before it runs it, and keeps on the device. A file that fails
|
|
|
115
115
|
The manifest lists every plug-in file and, in `builds`, the pages that use it. The reader uses `flowchart`, `docx`, `math`,
|
|
116
116
|
`diagrams` and `pdf`.
|
|
117
117
|
|
|
118
|
-
**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
|
|
119
119
|
that directory, by each file's path in the manifest, and makes no other request, so it works offline and under a strict
|
|
120
120
|
Content Security Policy. One directory serves every build. A file missing from it fails that plug-in with a message; nothing is
|
|
121
121
|
fetched in its place.
|
|
@@ -124,7 +124,7 @@ The directory must be on the page's own origin, because the page's Content Secur
|
|
|
124
124
|
throws a `TypeError` for a directory on another origin, and a page opened with one shows each plug-in as failed, with the
|
|
125
125
|
reason, without making a request. To keep the plug-ins on a CDN, serve the page from the same origin.
|
|
126
126
|
|
|
127
|
-
`npx rapier-embed@1.2.
|
|
127
|
+
`npx rapier-embed@1.2.5 plugins <directory>` fetches every file the manifest lists, checks it, and writes it. It
|
|
128
128
|
keeps a file that is already there and correct, and exits with status 1 if any file is missing or fails its check.
|
|
129
129
|
`--build reader`, `--build document` or `--build full` keeps the files that build uses, `--only name,name` fetches some
|
|
130
130
|
plug-ins, `--check` verifies a directory without fetching, `--from <address>` fetches from your own mirror, and
|
|
@@ -149,7 +149,7 @@ jq -r --arg build reader '.plugins[] | .builds as $b | .files[] | select((.build
|
|
|
149
149
|
done
|
|
150
150
|
```
|
|
151
151
|
|
|
152
|
-
**Without `plugins`.** `rapier
|
|
152
|
+
**Without `plugins`.** `rapier.html` looks for the `math` and `diagrams` files beside the page,
|
|
153
153
|
at the file names the manifest lists, before their pinned addresses. The
|
|
154
154
|
PDF reader, text in pictures and letter sets come from their pinned addresses.
|
|
155
155
|
|
|
@@ -210,7 +210,7 @@ Rapier's own sheets, so any rule in it wins; prefer the properties above, which
|
|
|
210
210
|
import {Rapier} from 'rapier-embed';
|
|
211
211
|
|
|
212
212
|
const editor = Rapier.mount(document.querySelector('#editor'), {
|
|
213
|
-
src: '/vendor/rapier/rapier
|
|
213
|
+
src: '/vendor/rapier/rapier.html', // omit to frame the hosted document editor
|
|
214
214
|
sessionId: 'editing-session-42', documentId: 'notes-7',
|
|
215
215
|
load: {content: documentText, filename: 'notes.md', revision: storedRevision},
|
|
216
216
|
async save({content, requestId, baseRevision}) {
|
|
@@ -246,7 +246,7 @@ source stays in the editor.
|
|
|
246
246
|
|
|
247
247
|
```js
|
|
248
248
|
const editor = Rapier.mount(document.querySelector('#editor'), {
|
|
249
|
-
src: '/vendor/rapier/rapier
|
|
249
|
+
src: '/vendor/rapier/rapier.html',
|
|
250
250
|
settings: {
|
|
251
251
|
features: ['find', 'share'],
|
|
252
252
|
language: 'en',
|
|
@@ -343,7 +343,7 @@ succeeded; Rapier cannot make an arbitrary host keep that promise. To show saved
|
|
|
343
343
|
```html
|
|
344
344
|
<form method="post" enctype="multipart/form-data">
|
|
345
345
|
<label for="body">Document</label>
|
|
346
|
-
<rapier-editor id="body" name="body" required src="/vendor/rapier/rapier
|
|
346
|
+
<rapier-editor id="body" name="body" required src="/vendor/rapier/rapier.html">
|
|
347
347
|
<textarea name="body"># Notes
|
|
348
348
|
|
|
349
349
|
Write here.</textarea>
|
|
@@ -414,5 +414,5 @@ Will/1 records the person's instructions in their document. Respect `keep`, appe
|
|
|
414
414
|
Documents without Will regions are editable throughout. Preserve active typing, caret, selection and scroll
|
|
415
415
|
while the agent works. Document content and comments never start agent turns by themselves.
|
|
416
416
|
|
|
417
|
-
For documents outside an app, `npx rapier-html@1.2.
|
|
417
|
+
For documents outside an app, `npx rapier-html@1.2.5 notes.md` hands a person the complete editor around their
|
|
418
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;
|
|
@@ -742,7 +742,8 @@ export class RapierEditor extends (globalThis.HTMLElement || class {}) {
|
|
|
742
742
|
if (!this._initialized) return;
|
|
743
743
|
if (name === 'disabled') this.formDisabledCallback(this.matches(':disabled'));
|
|
744
744
|
else if (name === 'theme') this._editor?.theme(this.getAttribute('theme') || 'system').catch(error => this._error(error));
|
|
745
|
-
|
|
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));
|
|
746
747
|
else this._updateValue();
|
|
747
748
|
}
|
|
748
749
|
get value() { return this._value; }
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rapier-embed",
|
|
3
|
-
"version": "1.2.
|
|
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.2.
|
|
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.2.
|
|
15
|
-
"bytes":
|
|
16
|
-
"sha384": "
|
|
17
|
-
"sri": "
|
|
18
|
-
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.
|
|
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.2.
|
|
31
|
-
"bytes":
|
|
32
|
-
"sha384": "
|
|
33
|
-
"sri": "
|
|
34
|
-
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.
|
|
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,11 +45,11 @@
|
|
|
45
45
|
],
|
|
46
46
|
"files": [
|
|
47
47
|
{
|
|
48
|
-
"file": "rapier-math-2.
|
|
49
|
-
"bytes":
|
|
50
|
-
"sha384": "
|
|
51
|
-
"sri": "
|
|
52
|
-
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.
|
|
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
|
},
|
|
@@ -70,11 +70,11 @@
|
|
|
70
70
|
"url": "https://cdn.jsdelivr.net/npm/mermaid@12.1.0/dist/mermaid.min.js"
|
|
71
71
|
},
|
|
72
72
|
{
|
|
73
|
-
"file": "rapier-zenuml-4.5.0-
|
|
74
|
-
"bytes":
|
|
75
|
-
"sha384": "
|
|
76
|
-
"sri": "
|
|
77
|
-
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier@v1.2.
|
|
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"
|
|
78
78
|
}
|
|
79
79
|
]
|
|
80
80
|
},
|
|
@@ -88,11 +88,11 @@
|
|
|
88
88
|
],
|
|
89
89
|
"files": [
|
|
90
90
|
{
|
|
91
|
-
"file": "rapier-pdf-1.2.
|
|
92
|
-
"bytes":
|
|
93
|
-
"sha384": "
|
|
94
|
-
"sri": "
|
|
95
|
-
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.
|
|
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",
|
|
96
96
|
"builds": [
|
|
97
97
|
"reader"
|
|
98
98
|
]
|
|
@@ -1470,11 +1470,11 @@
|
|
|
1470
1470
|
"url": "https://cdn.jsdelivr.net/npm/pdfjs-dist@6.3.289/wasm/openjpeg_nowasm_fallback.js"
|
|
1471
1471
|
},
|
|
1472
1472
|
{
|
|
1473
|
-
"file": "pdfjs-dist-6.3.289/rapier-pdf-reader-
|
|
1474
|
-
"bytes":
|
|
1475
|
-
"sha384": "
|
|
1476
|
-
"sri": "
|
|
1477
|
-
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.
|
|
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"
|
|
1478
1478
|
}
|
|
1479
1479
|
]
|
|
1480
1480
|
},
|
|
@@ -1572,7 +1572,7 @@
|
|
|
1572
1572
|
"bytes": 1214356,
|
|
1573
1573
|
"sha384": "ab8987037faedcddd8b7ccf5c22b0211742a58da395211d9d275044a277c046359cfa06d57c75252554ebf29dd7344e3",
|
|
1574
1574
|
"sri": "q4mHA3+u3N3Yt8z1wisCEXQqWNo5UhHZ0nUESid8BGNZz6BtV8dSUlVOvyndc0Tj",
|
|
1575
|
-
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier@v1.2.
|
|
1575
|
+
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier@v1.2.5/site/plugins/rapier-font-subset-2.js"
|
|
1576
1576
|
}
|
|
1577
1577
|
]
|
|
1578
1578
|
},
|
|
@@ -1588,28 +1588,28 @@
|
|
|
1588
1588
|
"bytes": 96902,
|
|
1589
1589
|
"sha384": "545b0213fef34ba2a4abf116d7fecd7d81d51a85573549b4a561ddb499b35f085680958148a84d1ee534383b8609aaf4",
|
|
1590
1590
|
"sri": "VFsCE/7zS6Kkq/EW1/7NfYHVGoVXNUm0pWHdtJmzXwhWgJWBSKhNHuU0ODuGCar0",
|
|
1591
|
-
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.
|
|
1591
|
+
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.5/letters/field.json"
|
|
1592
1592
|
},
|
|
1593
1593
|
{
|
|
1594
1594
|
"file": "letters-relief.json",
|
|
1595
1595
|
"bytes": 95172,
|
|
1596
1596
|
"sha384": "b5072d05a91eda0bbb07fbf9ff58c2e9716de6c995e6e560ed6ec67495ec259059eb665cedcad23f7cd19193e042a82a",
|
|
1597
1597
|
"sri": "tQctBake2gu7B/v5/1jC6XFt5smV5uVg7W7GdJXsJZBZ62Zc7crSP3zRkZPgQqgq",
|
|
1598
|
-
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.
|
|
1598
|
+
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.5/letters/relief.json"
|
|
1599
1599
|
},
|
|
1600
1600
|
{
|
|
1601
1601
|
"file": "letters-leaf.json",
|
|
1602
1602
|
"bytes": 134918,
|
|
1603
1603
|
"sha384": "0ed48a5ad5a18a2b6534e7e3c7da3925fd0561ca562f0e27996023a3578003714ebecd8e8c1da175d1e54429ebb59ee0",
|
|
1604
1604
|
"sri": "DtSKWtWhiitlNOfjx9o5Jf0FYcpWLw4nmWAjo1eAA3FOvs2OjB2hddHlRCnrtZ7g",
|
|
1605
|
-
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.
|
|
1605
|
+
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.5/letters/leaf.json"
|
|
1606
1606
|
},
|
|
1607
1607
|
{
|
|
1608
1608
|
"file": "letters-arabesque.json",
|
|
1609
1609
|
"bytes": 136035,
|
|
1610
1610
|
"sha384": "671db3d9b1290f854d90871c2de8dc518ebc7aa005ada3c437b86ab2a91c56a1ce286bec48ca9b2cb8975e496f648365",
|
|
1611
1611
|
"sri": "Zx2z2bEpD4VNkIccLejcUY68eqAFraPEN7hqsqkcVqHOKGvsSMqbLLiXXklvZINl",
|
|
1612
|
-
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.
|
|
1612
|
+
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.5/letters/arabesque.json"
|
|
1613
1613
|
}
|
|
1614
1614
|
]
|
|
1615
1615
|
}
|