@helia/verified-fetch 3.1.1 → 3.2.1

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.
Files changed (36) hide show
  1. package/README.md +27 -0
  2. package/dist/index.min.js +196 -58
  3. package/dist/index.min.js.map +4 -4
  4. package/dist/src/index.d.ts +27 -0
  5. package/dist/src/index.d.ts.map +1 -1
  6. package/dist/src/index.js +27 -0
  7. package/dist/src/index.js.map +1 -1
  8. package/dist/src/plugins/plugin-handle-dag-cbor-html-preview.d.ts +27 -0
  9. package/dist/src/plugins/plugin-handle-dag-cbor-html-preview.d.ts.map +1 -0
  10. package/dist/src/plugins/plugin-handle-dag-cbor-html-preview.js +280 -0
  11. package/dist/src/plugins/plugin-handle-dag-cbor-html-preview.js.map +1 -0
  12. package/dist/src/plugins/plugin-handle-dag-cbor.d.ts +7 -2
  13. package/dist/src/plugins/plugin-handle-dag-cbor.d.ts.map +1 -1
  14. package/dist/src/plugins/plugin-handle-dag-cbor.js +6 -4
  15. package/dist/src/plugins/plugin-handle-dag-cbor.js.map +1 -1
  16. package/dist/src/plugins/plugins.d.ts +1 -0
  17. package/dist/src/plugins/plugins.d.ts.map +1 -1
  18. package/dist/src/plugins/plugins.js +1 -0
  19. package/dist/src/plugins/plugins.js.map +1 -1
  20. package/dist/src/plugins/types.d.ts +4 -0
  21. package/dist/src/plugins/types.d.ts.map +1 -1
  22. package/dist/src/utils/select-output-type.d.ts.map +1 -1
  23. package/dist/src/utils/select-output-type.js +2 -1
  24. package/dist/src/utils/select-output-type.js.map +1 -1
  25. package/dist/src/verified-fetch.d.ts.map +1 -1
  26. package/dist/src/verified-fetch.js +2 -1
  27. package/dist/src/verified-fetch.js.map +1 -1
  28. package/dist/typedoc-urls.json +2 -0
  29. package/package.json +2 -2
  30. package/src/index.ts +27 -0
  31. package/src/plugins/plugin-handle-dag-cbor-html-preview.ts +294 -0
  32. package/src/plugins/plugin-handle-dag-cbor.ts +8 -6
  33. package/src/plugins/plugins.ts +1 -0
  34. package/src/plugins/types.ts +5 -0
  35. package/src/utils/select-output-type.ts +2 -1
  36. package/src/verified-fetch.ts +2 -1
@@ -316,7 +316,8 @@ export class VerifiedFetch {
316
316
  options,
317
317
  withServerTiming,
318
318
  onProgress: options?.onProgress,
319
- modified: 0
319
+ modified: 0,
320
+ plugins: this.plugins.map(p => p.id)
320
321
  };
321
322
  this.log.trace('finding handler for cid code "%s" and response content type "%s"', parsedResult.cid.code, responseContentType);
322
323
  const response = await this.runPluginPipeline(context);
@@ -1 +1 @@
1
- {"version":3,"file":"verified-fetch.js","sourceRoot":"","sources":["../../src/verified-fetch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verified-fetch.js","sourceRoot":"","sources":["../../src/verified-fetch.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  "start": "https://ipfs.github.io/helia-verified-fetch/functions/index.verifiedFetch.start.html",
3
3
  "stop": "https://ipfs.github.io/helia-verified-fetch/functions/index.verifiedFetch.stop.html",
4
4
  "BasePlugin": "https://ipfs.github.io/helia-verified-fetch/classes/index.BasePlugin.html",
5
+ "DagCborHtmlPreviewPlugin": "https://ipfs.github.io/helia-verified-fetch/classes/index.DagCborHtmlPreviewPlugin.html",
5
6
  "DirIndexHtmlPlugin": "https://ipfs.github.io/helia-verified-fetch/classes/index.DirIndexHtmlPlugin.html",
6
7
  "PluginError": "https://ipfs.github.io/helia-verified-fetch/classes/index.PluginError.html",
7
8
  "PluginFatalError": "https://ipfs.github.io/helia-verified-fetch/classes/index.PluginFatalError.html",
@@ -29,6 +30,7 @@
29
30
  ".:Resource": "https://ipfs.github.io/helia-verified-fetch/types/index.Resource.html",
30
31
  "VerifiedFetchProgressEvents": "https://ipfs.github.io/helia-verified-fetch/types/index.VerifiedFetchProgressEvents.html",
31
32
  ".:VerifiedFetchProgressEvents": "https://ipfs.github.io/helia-verified-fetch/types/index.VerifiedFetchProgressEvents.html",
33
+ "dagCborHtmlPreviewPluginFactory": "https://ipfs.github.io/helia-verified-fetch/variables/index.dagCborHtmlPreviewPluginFactory.html",
32
34
  "dirIndexHtmlPluginFactory": "https://ipfs.github.io/helia-verified-fetch/variables/index.dirIndexHtmlPluginFactory.html",
33
35
  "verifiedFetch": "https://ipfs.github.io/helia-verified-fetch/variables/index.verifiedFetch.html",
34
36
  "createVerifiedFetch": "https://ipfs.github.io/helia-verified-fetch/functions/index.createVerifiedFetch.html",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@helia/verified-fetch",
3
- "version": "3.1.1",
3
+ "version": "3.2.1",
4
4
  "description": "A fetch-like API for obtaining verified & trustless IPFS content on the web",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/ipfs/helia-verified-fetch/tree/main/packages/verified-fetch#readme",
@@ -206,7 +206,7 @@
206
206
  "@helia/json": "^4.0.5",
207
207
  "@libp2p/crypto": "^5.1.3",
208
208
  "@types/sinon": "^17.0.4",
209
- "aegir": "^47.0.11",
209
+ "aegir": "^47.0.21",
210
210
  "blockstore-core": "^5.0.2",
211
211
  "browser-readablestream-to-it": "^2.0.9",
212
212
  "datastore-core": "^10.0.2",
package/src/index.ts CHANGED
@@ -633,6 +633,8 @@
633
633
  * Plugins are classes that extend the `BasePlugin` class and implement the `VerifiedFetchPlugin`
634
634
  * interface. They are instantiated with `PluginOptions` when the `VerifiedFetch` class is created.
635
635
  *
636
+ * ### Plugin Interface
637
+ *
636
638
  * Each plugin must implement two methods:
637
639
  *
638
640
  * - **`canHandle(context: PluginContext): boolean`**
@@ -647,6 +649,8 @@
647
649
  * - **Throw a `PluginError`**: This logs a non-fatal error and continues the pipeline.
648
650
  * - **Throw a `PluginFatalError`**: This logs a fatal error and stops the pipeline immediately.
649
651
  *
652
+ * ### Plugin Pipeline
653
+ *
650
654
  * Plugins are executed in a chain (a **plugin pipeline**):
651
655
  *
652
656
  * 1. **Initialization:**
@@ -692,6 +696,29 @@
692
696
  *
693
697
  * ---
694
698
  *
699
+ * ### Non-default plugins provided by this library
700
+ *
701
+ * #### `dir-index-html-plugin`
702
+ *
703
+ * This plugin is used to serve dag-pb/unixfs without an `index.html` child as HTML directory listing of the content requested.
704
+ *
705
+ * #### `dag-cbor-html-preview-plugin`
706
+ *
707
+ * This plugin is used to serve the requested dag-cbor object as HTML when the Accept header includes `text/html`.
708
+ *
709
+ * @example Using the plugins
710
+ *
711
+ * ```typescript
712
+ * import { createVerifiedFetch } from '@helia/verified-fetch'
713
+ * import { dagCborHtmlPreviewPluginFactory, dirIndexHtmlPluginFactory } from '@helia/verified-fetch/plugins'
714
+ * import { createHelia } from 'helia'
715
+ *
716
+ * const helia = await createHelia()
717
+ * const fetch = await createVerifiedFetch(helia, {
718
+ * plugins: [dagCborHtmlPreviewPluginFactory, dirIndexHtmlPluginFactory, ]
719
+ * })
720
+ * ```
721
+ *
695
722
  * ### Extending Verified‑Fetch with Custom Plugins
696
723
  *
697
724
  * To add your own plugin:
@@ -0,0 +1,294 @@
1
+ import * as ipldDagCbor from '@ipld/dag-cbor'
2
+ import { base32 } from 'multiformats/bases/base32'
3
+ import { CID } from 'multiformats/cid'
4
+ import { sha256 } from 'multiformats/hashes/sha2'
5
+ import { isLink } from 'multiformats/link'
6
+ import { getETag } from '../utils/get-e-tag.js'
7
+ import { getIpfsRoots } from '../utils/response-headers.js'
8
+ import { isObjectNode } from '../utils/walk-path.js'
9
+ import { BasePlugin } from './plugin-base.js'
10
+ import type { PluginContext, VerifiedFetchPluginFactory } from './types.js'
11
+ import type { ObjectNode } from 'ipfs-unixfs-exporter'
12
+
13
+ function isPrimitive (value: unknown): boolean {
14
+ return value === null ||
15
+ value === undefined ||
16
+ typeof value === 'string' ||
17
+ typeof value === 'number' ||
18
+ typeof value === 'boolean' ||
19
+ typeof value === 'bigint' ||
20
+ typeof value === 'symbol'
21
+ }
22
+
23
+ /**
24
+ * Converts a cborObject and it's children into a small hash that can be used in the etag header.
25
+ *
26
+ * @see https://github.com/ipfs/boxo/blob/dc60fe747c375c631a92fcfd6c7456f44a760d24/gateway/assets/assets.go#L84
27
+ * @see https://github.com/ipfs/boxo/blob/dc60fe747c375c631a92fcfd6c7456f44a760d24/gateway/handler_unixfs_dir.go#L233-L235
28
+ */
29
+ async function getAssetHash (cborObject: Record<string, any>): Promise<string> {
30
+ /**
31
+ * Plugin Version represents a "version of gateway implementation" that allows for cache busting if necessary.
32
+ *
33
+ * @see https://specs.ipfs.tech/http-gateways/path-gateway/#etag-response-header
34
+ */
35
+ const pluginVersion = '0.0.1'
36
+ const entryDetails = Object.entries(cborObject).reduce((acc, [key, value]) => {
37
+ if (isPrimitive(value)) {
38
+ return `${acc}${key}${value}`
39
+ }
40
+ return `${acc}${key}${getAssetHash(value)}`
41
+ }, '')
42
+ const hashBytes = await sha256.encode(new TextEncoder().encode(pluginVersion + entryDetails))
43
+ return base32.encode(hashBytes)
44
+ }
45
+
46
+ /**
47
+ * Handles `dag-cbor` content where the Accept: `text/html` header is present.
48
+ */
49
+ export class DagCborHtmlPreviewPlugin extends BasePlugin {
50
+ readonly id = 'dag-cbor-plugin-html-preview'
51
+ readonly codes = [ipldDagCbor.code]
52
+
53
+ canHandle ({ cid, accept, pathDetails }: PluginContext): boolean {
54
+ this.log('checking if we can handle %c with accept %s', cid, accept)
55
+ if (pathDetails == null) {
56
+ return false
57
+ }
58
+ if (!isObjectNode(pathDetails.terminalElement)) {
59
+ return false
60
+ }
61
+ if (cid.code !== ipldDagCbor.code) {
62
+ return false
63
+ }
64
+
65
+ if (accept == null || !accept.includes('text/html')) {
66
+ return false
67
+ }
68
+
69
+ return isObjectNode(pathDetails.terminalElement)
70
+ }
71
+
72
+ async handle (context: PluginContext & Required<Pick<PluginContext, 'byteRangeContext' | 'pathDetails'>> & { pathDetails: { terminalElement: ObjectNode } }): Promise<Response> {
73
+ const { cid, path, pathDetails: { terminalElement, ipfsRoots } } = context
74
+ this.log.trace('generating html preview for %c/%s', cid, path)
75
+
76
+ const block = terminalElement.node
77
+ let obj: Record<string, any>
78
+ try {
79
+ obj = ipldDagCbor.decode(block)
80
+ } catch (err) {
81
+ return new Response(`<pre>Failed to decode DAG-CBOR: ${String(err)}</pre>`, {
82
+ status: 500,
83
+ headers: { 'Content-Type': 'text/html' }
84
+ })
85
+ }
86
+
87
+ const html = this.getHtml({ path, obj, cid })
88
+
89
+ return new Response(html, {
90
+ status: 200,
91
+ headers: {
92
+ 'Content-Type': 'text/html',
93
+ 'X-Ipfs-Roots': getIpfsRoots(ipfsRoots),
94
+ 'Cache-Control': 'public, max-age=604800, stale-while-revalidate=2678400',
95
+ Etag: getETag({ cid, reqFormat: context.reqFormat, contentPrefix: `DagIndex-${await getAssetHash(obj)}_CID-` })
96
+ }
97
+ })
98
+ }
99
+
100
+ getHtml ({ path, obj, cid }: { path: string, obj: Record<string, any>, cid: CID }): string {
101
+ const style = `
102
+ :root {
103
+ --sans-serif: "Plex", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif;
104
+ --monospace: Consolas, monaco, monospace;
105
+ --navy: #073a53;
106
+ --teal: #6bc4ce;
107
+ --turquoise: #47AFB4;
108
+ --steel-gray: #3f5667;
109
+ --dark-white: #d9dbe2;
110
+ --light-white: #edf0f4;
111
+ --near-white: #f7f8fa;
112
+ --radius: 4px;
113
+ }
114
+ body {
115
+ color: #34373f;
116
+ font-family: var(--sans-serif);
117
+ line-height: 1.43;
118
+ margin: 0;
119
+ word-break: break-all;
120
+ -webkit-text-size-adjust: 100%;
121
+ -ms-text-size-adjust: 100%;
122
+ -webkit-tap-highlight-color: transparent;
123
+ }
124
+ main {
125
+ border: 1px solid var(--dark-white);
126
+ border-radius: var(--radius);
127
+ overflow: hidden;
128
+ margin: 1em;
129
+ font-size: .875em;
130
+ }
131
+ main section header {
132
+ background-color: var(--near-white);
133
+ }
134
+ main header, main section:not(:last-child) {
135
+ border-bottom: 1px solid var(--dark-white);
136
+ }
137
+ main header {
138
+ padding-top: .7em;
139
+ padding-bottom: .7em;
140
+ background-color: var(--light-white);
141
+ }
142
+ main header, main .container {
143
+ padding-left: 1em;
144
+ padding-right: 1em;
145
+ }
146
+ section {
147
+ display: block;
148
+ }
149
+ .grid.dag {
150
+ grid-template-columns: max-content 1fr;
151
+ }
152
+ .grid {
153
+ display: grid;
154
+ overflow-x: auto;
155
+ }
156
+ .grid.dag > div {
157
+ background: white;
158
+ }
159
+ .grid.dag > div:nth-of-type(2n+1) {
160
+ padding-left: 1em;
161
+ }
162
+ .grid.dag > div:nth-child(4n), .grid.dag > div:nth-child(4n+3) {
163
+ background-color: var(--near-white);
164
+ }
165
+ .grid.dag .grid {
166
+ padding: 0;
167
+ }
168
+ /* change coloring of nested grid
169
+ .grid.dag .grid.dag > div:nth-child(4n), .grid.dag .grid.dag > div:nth-child(4n+3) {
170
+ background-color: white;
171
+ }
172
+ .grid.dag .grid.dag div:nth-child(4n+1), .grid.dag .grid.dag div:nth-child(4n+2) {
173
+ background-color: var(--near-white);
174
+ } */
175
+ .grid.dag > div:nth-last-child(-n+2) {
176
+ border-bottom: 0;
177
+ }
178
+ .grid .grid {
179
+ overflow-x: visible;
180
+ }
181
+ .grid > div {
182
+ padding: .7em;
183
+ border-bottom: 1px solid var(--dark-white);
184
+ }
185
+ .nowrap {
186
+ white-space: nowrap;
187
+ }
188
+ pre, code {
189
+ font-family: var(--monospace);
190
+ }
191
+ strong {
192
+ font-weight: bolder;
193
+ }
194
+ a:active, a:visited {
195
+ color: #00b0e9;
196
+ }
197
+ .ipfs-hash {
198
+ color: #7f8491;
199
+ font-family: var(--monospace);
200
+ }
201
+ a {
202
+ color: #117eb3;
203
+ text-decoration: none;
204
+ }
205
+ header { margin-bottom: 2em; }
206
+ .ipfs-logo { width: 32px; height: 32px; background: url('data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlo89/56ZQ/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUjDu1lo89/6mhTP+zrVP/nplD/5+aRK8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHNiIS6Wjz3/ubFY/761W/+vp1D/urRZ/8vDZf/GvmH/nplD/1BNIm8AAAAAAAAAAAAAAAAAAAAAAAAAAJaPPf+knEj/vrVb/761W/++tVv/r6dQ/7q0Wf/Lw2X/y8Nl/8vDZf+tpk7/nplD/wAAAAAAAAAAAAAAAJaPPf+2rVX/vrVb/761W/++tVv/vrVb/6+nUP+6tFn/y8Nl/8vDZf/Lw2X/y8Nl/8G6Xv+emUP/AAAAAAAAAACWjz3/vrVb/761W/++tVv/vrVb/761W/+vp1D/urRZ/8vDZf/Lw2X/y8Nl/8vDZf/Lw2X/nplD/wAAAAAAAAAAlo89/761W/++tVv/vrVb/761W/++tVv/r6dQ/7q0Wf/Lw2X/y8Nl/8vDZf/Lw2X/y8Nl/56ZQ/8AAAAAAAAAAJaPPf++tVv/vrVb/761W/++tVv/vbRa/5aPPf+emUP/y8Nl/8vDZf/Lw2X/y8Nl/8vDZf+emUP/AAAAAAAAAACWjz3/vrVb/761W/++tVv/vrVb/5qTQP+inkb/op5G/6KdRv/Lw2X/y8Nl/8vDZf/Lw2X/nplD/wAAAAAAAAAAlo89/761W/++tVv/sqlS/56ZQ//LxWb/0Mlp/9DJaf/Kw2X/oJtE/7+3XP/Lw2X/y8Nl/56ZQ/8AAAAAAAAAAJaPPf+9tFr/mJE+/7GsUv/Rymr/0cpq/9HKav/Rymr/0cpq/9HKav+xrFL/nplD/8vDZf+emUP/AAAAAAAAAACWjz3/op5G/9HKav/Rymr/0cpq/9HKav/Rymr/0cpq/9HKav/Rymr/0cpq/9HKav+inkb/nplD/wAAAAAAAAAAAAAAAKKeRv+3slb/0cpq/9HKav/Rymr/0cpq/9HKav/Rymr/0cpq/9HKav+1sFX/op5G/wAAAAAAAAAAAAAAAAAAAAAAAAAAop5GUKKeRv/Nxmf/0cpq/9HKav/Rymr/0cpq/83GZ/+inkb/op5GSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAop5G16KeRv/LxWb/y8Vm/6KeRv+inkaPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAop5G/6KeRtcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/n8AAPgfAADwDwAAwAMAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAwAMAAPAPAAD4HwAA/n8AAA==') no-repeat center/contain; display: inline-block; }
207
+ `
208
+
209
+ return `<!DOCTYPE html>
210
+ <html lang="en">
211
+ <head>
212
+ <meta charset="utf-8">
213
+ <meta name="description" content="Content-addressed dag-cbor document hosted on IPFS.">
214
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
215
+ <link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlo89/56ZQ/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUjDu1lo89/6mhTP+zrVP/nplD/5+aRK8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHNiIS6Wjz3/ubFY/761W/+vp1D/urRZ/8vDZf/GvmH/nplD/1BNIm8AAAAAAAAAAAAAAAAAAAAAAAAAAJaPPf+knEj/vrVb/761W/++tVv/r6dQ/7q0Wf/Lw2X/y8Nl/8vDZf+tpk7/nplD/wAAAAAAAAAAAAAAAJaPPf+2rVX/vrVb/761W/++tVv/vrVb/6+nUP+6tFn/y8Nl/8vDZf/Lw2X/y8Nl/8G6Xv+emUP/AAAAAAAAAACWjz3/vrVb/761W/++tVv/vrVb/761W/+vp1D/urRZ/8vDZf/Lw2X/y8Nl/8vDZf/Lw2X/nplD/wAAAAAAAAAAlo89/761W/++tVv/vrVb/761W/++tVv/r6dQ/7q0Wf/Lw2X/y8Nl/8vDZf/Lw2X/y8Nl/56ZQ/8AAAAAAAAAAJaPPf++tVv/vrVb/761W/++tVv/vbRa/5aPPf+emUP/y8Nl/8vDZf/Lw2X/y8Nl/8vDZf+emUP/AAAAAAAAAACWjz3/vrVb/761W/++tVv/vrVb/5qTQP+inkb/op5G/6KdRv/Lw2X/y8Nl/8vDZf/Lw2X/nplD/wAAAAAAAAAAlo89/761W/++tVv/sqlS/56ZQ//LxWb/0Mlp/9DJaf/Kw2X/oJtE/7+3XP/Lw2X/y8Nl/56ZQ/8AAAAAAAAAAJaPPf+9tFr/mJE+/7GsUv/Rymr/0cpq/9HKav/Rymr/0cpq/9HKav+xrFL/nplD/8vDZf+emUP/AAAAAAAAAACWjz3/op5G/9HKav/Rymr/0cpq/9HKav/Rymr/0cpq/9HKav/Rymr/0cpq/9HKav+inkb/nplD/wAAAAAAAAAAAAAAAKKeRv+3slb/0cpq/9HKav/Rymr/0cpq/9HKav/Rymr/0cpq/9HKav+1sFX/op5G/wAAAAAAAAAAAAAAAAAAAAAAAAAAop5GUKKeRv/Nxmf/0cpq/9HKav/Rymr/0cpq/83GZ/+inkb/op5GSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAop5G16KeRv/LxWb/y8Vm/6KeRv+inkaPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAop5G/6KeRtcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/n8AAPgfAADwDwAAwAMAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAwAMAAPAPAAD4HwAA/n8AAA==">
216
+ <title>${cid.toString()} DAG-CBOR Preview</title>
217
+ <style>${style}</style>
218
+ </head>
219
+ <body>
220
+ <main>
221
+ <header>
222
+ <div><strong>CID: </strong> <code class="nowrap">${cid}</code></div>
223
+ <div><strong>Codec: </strong> ${this.valueHTML('dag-cbor (0x71)', null)}</div>
224
+ </header>
225
+ <section class="container">
226
+ <p>You can download this block as:</p>
227
+ <ul>
228
+ <li><a href="?format=raw&download=true&filename=${cid.toString()}.bin" rel="nofollow" download="${cid.toString()}.bin">Raw Block</a> (no conversion)</li>
229
+ <li><a href="?format=dag-json&download=true&filename=${cid.toString()}.json" rel="nofollow" download="${cid.toString()}">Valid DAG-JSON</a> (specs at <a href="https://ipld.io/specs/codecs/dag-json/spec/" target="_blank" rel="noopener noreferrer">IPLD</a> and <a href="https://www.iana.org/assignments/media-types/application/vnd.ipld.dag-json" target="_blank" rel="noopener noreferrer">IANA</a>)</li>
230
+ <li><a href="?format=dag-cbor&download=true&filename=${cid.toString()}.dag-cbor" rel="nofollow" download="${cid.toString()}.dag-cbor">Valid DAG-CBOR</a> (specs at <a href="https://ipld.io/specs/codecs/dag-cbor/spec/" target="_blank" rel="noopener noreferrer">IPLD</a> and <a href="https://www.iana.org/assignments/media-types/application/vnd.ipld.dag-cbor" target="_blank" rel="noopener noreferrer">IANA</a>)</li>
231
+ </ul>
232
+ </section>
233
+ <section>
234
+ <header><strong>DAG-CBOR Preview</strong></header>
235
+ <div class="grid dag">
236
+ ${this.renderRows(obj, path)}
237
+ </div>
238
+ </section>
239
+ </main>
240
+ </body>
241
+ </html>`
242
+ }
243
+
244
+ valueHTML (value: any, link: string | null): string {
245
+ let valueString: string
246
+ const isALinkObject = isLink(value)
247
+ if (!isALinkObject && typeof value !== 'string') {
248
+ valueString = JSON.stringify(value)
249
+ } else {
250
+ // it can be a string or a link object.. call .toString() on it
251
+ valueString = value.toString()
252
+ }
253
+ const valueCodeBlock = `<code class="nowrap">${valueString}</code>`
254
+ if (isALinkObject && link != null) {
255
+ return `<a class="ipfs-hash" href="/${link}">${valueCodeBlock}</a>`
256
+ }
257
+
258
+ return valueCodeBlock
259
+ }
260
+
261
+ private renderValue (key: string, value: any, currentPath: string): string {
262
+ let rows = ''
263
+ value.forEach((item: any, idx: number) => {
264
+ const itemPath = currentPath ? `${currentPath}/${key}/${idx}` : `${key}/${idx}`
265
+ rows += `<div>${this.valueHTML(idx, null)}</div>`
266
+ if (isPrimitive(item)) {
267
+ rows += `<div>${this.valueHTML(item, itemPath)}</div>`
268
+ } else {
269
+ rows += '<div class="grid dag">'
270
+ rows += this.renderRows(item, itemPath)
271
+ rows += '</div>'
272
+ }
273
+ })
274
+ return rows
275
+ }
276
+
277
+ renderRows (obj: Record<string, any>, currentPath: string = ''): string {
278
+ let rows = ''
279
+ for (const [key, value] of Object.entries(obj)) {
280
+ if (Array.isArray(value)) {
281
+ rows += `<div>${key}</div>`
282
+ rows += '<div class="grid dag">'
283
+ rows += this.renderValue(key, value, currentPath)
284
+ rows += '</div>'
285
+ } else {
286
+ const valuePath = currentPath ? `${currentPath}/${key}` : key
287
+ rows += `<div>${key}</div><div>${this.valueHTML(value, valuePath)}</div>`
288
+ }
289
+ }
290
+ return rows
291
+ }
292
+ }
293
+
294
+ export const dagCborHtmlPreviewPluginFactory: VerifiedFetchPluginFactory = (opts) => new DagCborHtmlPreviewPlugin(opts)
@@ -15,7 +15,7 @@ export class DagCborPlugin extends BasePlugin {
15
15
  readonly id = 'dag-cbor-plugin'
16
16
  readonly codes = [ipldDagCbor.code]
17
17
 
18
- canHandle ({ cid, accept, pathDetails, byteRangeContext }: PluginContext): boolean {
18
+ canHandle ({ cid, accept, pathDetails, byteRangeContext, plugins }: PluginContext): boolean {
19
19
  this.log('checking if we can handle %c with accept %s', cid, accept)
20
20
  if (pathDetails == null) {
21
21
  return false
@@ -30,17 +30,19 @@ export class DagCborPlugin extends BasePlugin {
30
30
  return false
31
31
  }
32
32
 
33
+ if (accept != null && accept.includes('text/html') && plugins.includes('dag-cbor-plugin-html-preview')) {
34
+ // let the dag-cbor-html-preview plugin handle it
35
+ return false
36
+ }
37
+
33
38
  return isObjectNode(pathDetails.terminalElement)
34
39
  }
35
40
 
36
- async handle (context: PluginContext & Required<Pick<PluginContext, 'byteRangeContext' | 'pathDetails'>>): Promise<Response> {
37
- const { cid, path, resource, accept, pathDetails } = context
41
+ async handle (context: PluginContext & Required<Pick<PluginContext, 'byteRangeContext' | 'pathDetails'>> & { pathDetails: { terminalElement: ObjectNode } }): Promise<Response> {
42
+ const { cid, path, resource, accept, pathDetails: { terminalElement, ipfsRoots } } = context
38
43
 
39
44
  this.log.trace('fetching %c/%s', cid, path)
40
45
 
41
- const ipfsRoots = pathDetails.ipfsRoots
42
- const terminalElement = pathDetails.terminalElement as ObjectNode // checked in canHandle fn.
43
-
44
46
  const block = terminalElement.node
45
47
 
46
48
  let body: string | Uint8Array
@@ -2,3 +2,4 @@
2
2
  * Export extension (non-default) plugins here
3
3
  */
4
4
  export { DirIndexHtmlPlugin, dirIndexHtmlPluginFactory } from './plugin-handle-dir-index-html.js'
5
+ export { DagCborHtmlPreviewPlugin, dagCborHtmlPreviewPluginFactory } from './plugin-handle-dag-cbor-html-preview.js'
@@ -35,6 +35,11 @@ export interface PluginContext extends ParsedUrlStringResults {
35
35
  readonly path: string
36
36
  readonly resource: string
37
37
  readonly accept?: string
38
+
39
+ /**
40
+ * An array of plugin IDs that are all enabled. You can use this to check if a plugin is enabled and respond accordingly.
41
+ */
42
+ plugins: string[]
38
43
  /**
39
44
  * The last time the context is modified, so we know whether a plugin has modified it.
40
45
  * A plugin should increment this value if it modifies the context.
@@ -18,7 +18,8 @@ const CID_TYPE_MAP: Record<number, string[]> = {
18
18
  'application/octet-stream',
19
19
  'application/vnd.ipld.raw',
20
20
  'application/vnd.ipfs.ipns-record',
21
- 'application/vnd.ipld.car'
21
+ 'application/vnd.ipld.car',
22
+ 'text/html'
22
23
  ],
23
24
  [dagJsonCode]: [
24
25
  'application/json',
@@ -377,7 +377,8 @@ export class VerifiedFetch {
377
377
  options,
378
378
  withServerTiming,
379
379
  onProgress: options?.onProgress,
380
- modified: 0
380
+ modified: 0,
381
+ plugins: this.plugins.map(p => p.id)
381
382
  }
382
383
 
383
384
  this.log.trace('finding handler for cid code "%s" and response content type "%s"', parsedResult.cid.code, responseContentType)