rapier-embed 1.2.5 → 1.2.6
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 +18 -11
- package/contract.mjs +1 -1
- package/embed.mjs +3 -3
- package/package.json +1 -1
- package/rapier-plugins.json +29 -29
package/README.md
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
# Embed Rapier
|
|
2
2
|
|
|
3
|
+
## Start here
|
|
4
|
+
|
|
5
|
+
For embed-only work, start with the supplied application code and the published embed contract below. Use the declared helper release or packaged helper, keeping source, permissions and storage under the host application. Do not create a hosted document. Keep the embed's own WebMCP contract; do not substitute connector calls for its browser API.
|
|
6
|
+
|
|
7
|
+
For an explanation-only request, answer in chat without creating a document. If required content or integration details are missing, ask for them; do not create an empty hosted workspace.
|
|
8
|
+
Honor no-upload or no-host instructions. The workflow choices below are alternatives, not steps to run. Skip hosted suggestions, including opening a workspace or creating a return link, for local-only or embed-only work.
|
|
9
|
+
|
|
3
10
|
Embed Rapier's Markdown editor or lightweight reader in your web app. Each build is one offline HTML file. Your
|
|
4
11
|
app owns the document and storage; its agent edits live through WebMCP. The person sees the agent's presence and
|
|
5
12
|
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; the two builds it frames are AGPL-3.0-only, and a commercial
|
|
13
|
+
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 license is
|
|
7
14
|
available (`LICENSING.md` in the Rapier repository).
|
|
8
15
|
|
|
9
16
|
Choose one of two builds:
|
|
@@ -31,7 +38,7 @@ Each release's own files stay at its tag: `https://cdn.jsdelivr.net/gh/jackskip2
|
|
|
31
38
|
document access remain enforced.
|
|
32
39
|
|
|
33
40
|
```sh
|
|
34
|
-
npm install rapier-embed@1.2.
|
|
41
|
+
npm install rapier-embed@1.2.6
|
|
35
42
|
```
|
|
36
43
|
|
|
37
44
|
Or copy the package's `embed.mjs` and `contract.mjs` into one directory of your app; no runtime CDN is needed.
|
|
@@ -47,7 +54,7 @@ editor and lightweight reader (about 190 kB gzipped). The agent edits live; the
|
|
|
47
54
|
changes, taps a change to see the before and undoes anything. Use `show {target:"comparison"}` to show a diff deliberately.
|
|
48
55
|
|
|
49
56
|
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.
|
|
57
|
+
2. **Deliver an offline editor.** Run `npx rapier-html@1.2.6 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
58
|
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
59
|
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
60
|
5. **Encode JPEG XL.** Install [rapier-jxl](https://github.com/jackskip22/rapier-jxl) to encode pixels, photographs and existing JPEGs in JavaScript.
|
|
@@ -90,7 +97,7 @@ A copy in your app works offline and changes only when you update it.
|
|
|
90
97
|
1. Download the build you frame into a static directory, for example
|
|
91
98
|
`https://cdn.jsdelivr.net/gh/jackskip22/rapier@v<version>/site/embed/rapier-reader.html` to `public/vendor/rapier/`.
|
|
92
99
|
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.
|
|
100
|
+
`npx rapier-embed@1.2.6 plugins public/vendor/rapier/plugins --build reader`.
|
|
94
101
|
3. Mount with `src` and `plugins` pointing at your copies. Serve them over HTTPS (HTTP on localhost) and allow
|
|
95
102
|
their origin in your `frame-src`. A same-origin parent can script its frame; use a dedicated origin when the
|
|
96
103
|
frame must be isolated.
|
|
@@ -105,7 +112,7 @@ length and SHA-384 before it runs it, and keeps on the device. A file that fails
|
|
|
105
112
|
| Plug-in | Adds | Size | Builds |
|
|
106
113
|
| --- | --- | --- | --- |
|
|
107
114
|
| `flowchart` | Mermaid flowcharts and graphs, drawn natively | 0.26 MB | The reader; built into the editors |
|
|
108
|
-
| `math` | TeX
|
|
115
|
+
| `math` | TeX math, `$...$` and `$$...$$` | 11.9 MB | All three |
|
|
109
116
|
| `diagrams` | Mermaid 12.1.0 and ZenUML 4.5.0 diagrams | 7.38 MB (2 files) | All three |
|
|
110
117
|
| `pdf` | Opens a PDF as a Markdown document: its text layer, or each page as a picture | 6.4 MB (197 files) | All three |
|
|
111
118
|
| `docx` | Opens a Word document (`.docx`) as a Markdown document | 0.25 MB | The reader; built into the editors |
|
|
@@ -124,7 +131,7 @@ The directory must be on the page's own origin, because the page's Content Secur
|
|
|
124
131
|
throws a `TypeError` for a directory on another origin, and a page opened with one shows each plug-in as failed, with the
|
|
125
132
|
reason, without making a request. To keep the plug-ins on a CDN, serve the page from the same origin.
|
|
126
133
|
|
|
127
|
-
`npx rapier-embed@1.2.
|
|
134
|
+
`npx rapier-embed@1.2.6 plugins <directory>` fetches every file the manifest lists, checks it, and writes it. It
|
|
128
135
|
keeps a file that is already there and correct, and exits with status 1 if any file is missing or fails its check.
|
|
129
136
|
`--build reader`, `--build document` or `--build full` keeps the files that build uses, `--only name,name` fetches some
|
|
130
137
|
plug-ins, `--check` verifies a directory without fetching, `--from <address>` fetches from your own mirror, and
|
|
@@ -287,8 +294,8 @@ pending callback. Your store still needs durable idempotence across that window
|
|
|
287
294
|
means the connection retired; honor it for cancellable work. A host callback can still have stored bytes when
|
|
288
295
|
it fails or is retired, so orphan cleanup and access control belong to your application.
|
|
289
296
|
|
|
290
|
-
The frame waits up to 15 seconds for a picture
|
|
291
|
-
is not Save's late-
|
|
297
|
+
The frame waits up to 15 seconds for a picture acknowledgment, then inserts its embedded bytes instead; this
|
|
298
|
+
is not Save's late-acknowledgment rule. Nack, no grant and unavailable storage also keep single-file insertion.
|
|
292
299
|
On ack, the Markdown contains a normal URL image. The frame previews and reopens it from retained local bytes,
|
|
293
300
|
never by fetching the host address back. Local previews are scoped to the current document and bounded by
|
|
294
301
|
1,024 URLs and 25 MiB. Ordinary picture and document limits still apply to the fallback. Storage durability and
|
|
@@ -334,7 +341,7 @@ The frame keeps the person's unsaved work only for the document you loaded: a dr
|
|
|
334
341
|
which a load of the same revision reopens and your `discard` answer retires. It never reads, offers or writes the
|
|
335
342
|
person's own Rapier documents or recovery on its origin, and it keeps nothing before your first load.
|
|
336
343
|
|
|
337
|
-
Saving names the browser-authenticated host and port. The helper's
|
|
344
|
+
Saving names the browser-authenticated host and port. The helper's acknowledgment is your statement that storage
|
|
338
345
|
succeeded; Rapier cannot make an arbitrary host keep that promise. To show saved documents without a frame, use
|
|
339
346
|
`rapier-markdown-kit`, the same renderer as a library.
|
|
340
347
|
|
|
@@ -407,12 +414,12 @@ and leaves the source unchanged. An admissible edit lands at once and returns an
|
|
|
407
414
|
`undo {act}` to reverse it while keeping later work. The kept heading and marker lines remain intact.
|
|
408
415
|
The person can tap the change mark to see the paragraph before the edit and undo it while preserving later work.
|
|
409
416
|
Use `show {target:"comparison"}` when the agent wants to explain a diff. Its display reference grants no edit authority
|
|
410
|
-
and does not block another edit. Save still uses the host-owned
|
|
417
|
+
and does not block another edit. Save still uses the host-owned acknowledgment and currentness checks.
|
|
411
418
|
|
|
412
419
|
Will/1 records the person's instructions in their document. Respect `keep`, append only at the end of an
|
|
413
420
|
`append` region, and edit inside `edit` regions. A malformed marker is a named refusal; inspect that source.
|
|
414
421
|
Documents without Will regions are editable throughout. Preserve active typing, caret, selection and scroll
|
|
415
422
|
while the agent works. Document content and comments never start agent turns by themselves.
|
|
416
423
|
|
|
417
|
-
For documents outside an app, `npx rapier-html@1.2.
|
|
424
|
+
For documents outside an app, `npx rapier-html@1.2.6 notes.md` hands a person the complete editor around their
|
|
418
425
|
document as one offline file.
|
package/contract.mjs
CHANGED
|
@@ -52,7 +52,7 @@ export function snapshotSettings(value) {
|
|
|
52
52
|
return Object.freeze(Object.fromEntries(Object.keys(value).map(key => [key, accepted[key]])));
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
// Each picker owns its input.
|
|
55
|
+
// Each picker owns its input. Canceling it cannot give a later request its file.
|
|
56
56
|
export function pickDeviceFile(document, signal) {
|
|
57
57
|
if (signal?.aborted) return Promise.resolve(null);
|
|
58
58
|
const input = document.createElement('input');
|
package/embed.mjs
CHANGED
|
@@ -55,7 +55,7 @@ function snapshotSettings(value) {
|
|
|
55
55
|
return Object.freeze(Object.fromEntries(Object.keys(value).map(key => [key, accepted[key]])));
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
// Each picker owns its input.
|
|
58
|
+
// Each picker owns its input. Canceling it cannot give a later request its file.
|
|
59
59
|
function pickDeviceFile(document, signal) {
|
|
60
60
|
if (signal?.aborted) return Promise.resolve(null);
|
|
61
61
|
const input = document.createElement('input');
|
|
@@ -301,7 +301,7 @@ function mount(target, options = {}) {
|
|
|
301
301
|
if (source.username || source.password || !(source.protocol === 'https:' || source.protocol === 'http:' && ['localhost', '127.0.0.1', '[::1]'].includes(source.hostname)))
|
|
302
302
|
throw new TypeError('The editor needs HTTPS, or HTTP on localhost');
|
|
303
303
|
source.searchParams.set('embed', '1');
|
|
304
|
-
// The page's plug-ins (
|
|
304
|
+
// The page's plug-ins (math, diagrams, the PDF reader and the rest) come from this directory alone: the page reads `plugins` from its own
|
|
305
305
|
// address. Its security policy lets it read only its own origin, so a directory anywhere else is refused here, before the page loads.
|
|
306
306
|
if (options.plugins !== undefined) {
|
|
307
307
|
let directory;
|
|
@@ -442,7 +442,7 @@ function mount(target, options = {}) {
|
|
|
442
442
|
function cancelOpen(code = 'open_cancelled') {
|
|
443
443
|
const row = openPending;
|
|
444
444
|
if (!row || row.abort.signal.aborted) return;
|
|
445
|
-
row.answer = {type: 'open-nack', payload: {code, reason: 'File opening was
|
|
445
|
+
row.answer = {type: 'open-nack', payload: {code, reason: 'File opening was canceled.'}};
|
|
446
446
|
row.abort.abort();
|
|
447
447
|
}
|
|
448
448
|
function answerOpen(message, channel) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rapier-embed",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.6",
|
|
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.6",
|
|
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.6.js",
|
|
15
|
+
"bytes": 294802,
|
|
16
|
+
"sha384": "f490ae4ebbf5146756376c7dcd5e994c63e4153234844d2f65dd61a38e3efb764f5043f487f0f88436c23070a7a8d0be",
|
|
17
|
+
"sri": "9JCuTrv1FGdWN2x9zV6ZTGPkFTI0hE0vZd1ho44++3ZPUEP0h/D4hDbCMHCnqNC+",
|
|
18
|
+
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.6/flowchart/rapier-flowchart-1.2.6.js"
|
|
19
19
|
}
|
|
20
20
|
]
|
|
21
21
|
},
|
|
@@ -27,17 +27,17 @@
|
|
|
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.6.js",
|
|
31
|
+
"bytes": 584903,
|
|
32
|
+
"sha384": "05a31b2d7f725257a69aa1289e43f7c383ac159465edbfea21a1be989cf050d83d54a8984fd940a3c07b24cf62574320",
|
|
33
|
+
"sri": "BaMbLX9yUlemmqEonkP3w4OsFZRl7b/qIaG+mJzwUNg9VKiYT9lAo8B7JM9iV0Mg",
|
|
34
|
+
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.6/docx/rapier-docx-1.2.6.js"
|
|
35
35
|
}
|
|
36
36
|
]
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
"name": "math",
|
|
40
|
-
"adds": "Typesets TeX
|
|
40
|
+
"adds": "Typesets TeX math ($...$ and $$...$$) as SVG.",
|
|
41
41
|
"builds": [
|
|
42
42
|
"reader",
|
|
43
43
|
"document",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"bytes": 691650,
|
|
50
50
|
"sha384": "0bddb1dbafa9048e2af45a16ca932105bf02a9219a68f2f0f1da588a05a260db184114dc3d5ac5c8f563ae173f4e7c21",
|
|
51
51
|
"sri": "C92x26+pBI4q9FoWypMhBb8CqSGaaPLw8dpYigWiYNsYQRTcPVrFyPVjrhc/Tnwh",
|
|
52
|
-
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.
|
|
52
|
+
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.6/math/rapier-math-2.4.0.js"
|
|
53
53
|
}
|
|
54
54
|
]
|
|
55
55
|
},
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"bytes": 1896464,
|
|
75
75
|
"sha384": "f0fb63861d733533afcb577114785781829fb36f740d2969ce8c39ac5f45bcfdfc72886d6ec056dfcd568729b5588e84",
|
|
76
76
|
"sri": "8Ptjhh1zNTOvy1dxFHhXgYKfs290DSlpzow5rF9FvP38cohtbsBW381Whym1WI6E",
|
|
77
|
-
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier@v1.2.
|
|
77
|
+
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier@v1.2.6/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.6.js",
|
|
92
|
+
"bytes": 38425,
|
|
93
|
+
"sha384": "a434d69c6dd23f1471bcc69cb33e567186a2128e95b7f9da9df6c2767f30381c8b4db384e1273f3134e4bdd9aa507ced",
|
|
94
|
+
"sri": "pDTWnG3SPxRxvMacsz5WcYaiEo6Vt/nanfbCdn8wOByLTbOE4Sc/MTTkvdmqUHzt",
|
|
95
|
+
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.6/pdf/rapier-pdf-1.2.6.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-cde0a32c6204aced.mjs",
|
|
1474
|
+
"bytes": 46570,
|
|
1475
|
+
"sha384": "63afb7423fb9b56aee9a0014e34dafb812177936b43a2758095af144ff0e3939028ac447dc1ef3938efffcd31c2f720e",
|
|
1476
|
+
"sri": "Y6+3Qj+5tWrumgAU402vuBIXeTa0OidYCVrxRP8OOTkCisRH3B7zk47//NMcL3IO",
|
|
1477
|
+
"url": "https://cdn.jsdelivr.net/gh/jackskip22/rapier-plugins@v1.2.6/pdfjs-dist-6.3.289/rapier-pdf-reader-cde0a32c6204aced.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.6/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.6/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.6/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.6/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.6/letters/arabesque.json"
|
|
1613
1613
|
}
|
|
1614
1614
|
]
|
|
1615
1615
|
}
|