@helia/verified-fetch 2.4.0 → 2.5.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 (108) hide show
  1. package/README.md +192 -0
  2. package/dist/index.min.js +354 -32
  3. package/dist/src/index.d.ts +198 -0
  4. package/dist/src/index.d.ts.map +1 -1
  5. package/dist/src/index.js +192 -0
  6. package/dist/src/index.js.map +1 -1
  7. package/dist/src/plugins/errors.d.ts +25 -0
  8. package/dist/src/plugins/errors.d.ts.map +1 -0
  9. package/dist/src/plugins/errors.js +33 -0
  10. package/dist/src/plugins/errors.js.map +1 -0
  11. package/dist/src/plugins/index.d.ts +8 -0
  12. package/dist/src/plugins/index.d.ts.map +1 -0
  13. package/dist/src/plugins/index.js +7 -0
  14. package/dist/src/plugins/index.js.map +1 -0
  15. package/dist/src/plugins/plugin-base.d.ts +19 -0
  16. package/dist/src/plugins/plugin-base.d.ts.map +1 -0
  17. package/dist/src/plugins/plugin-base.js +26 -0
  18. package/dist/src/plugins/plugin-base.js.map +1 -0
  19. package/dist/src/plugins/plugin-handle-car.d.ts +11 -0
  20. package/dist/src/plugins/plugin-handle-car.d.ts.map +1 -0
  21. package/dist/src/plugins/plugin-handle-car.js +28 -0
  22. package/dist/src/plugins/plugin-handle-car.js.map +1 -0
  23. package/dist/src/plugins/plugin-handle-dag-cbor.d.ts +11 -0
  24. package/dist/src/plugins/plugin-handle-dag-cbor.d.ts.map +1 -0
  25. package/dist/src/plugins/plugin-handle-dag-cbor.js +73 -0
  26. package/dist/src/plugins/plugin-handle-dag-cbor.js.map +1 -0
  27. package/dist/src/plugins/plugin-handle-dag-pb.d.ts +15 -0
  28. package/dist/src/plugins/plugin-handle-dag-pb.d.ts.map +1 -0
  29. package/dist/src/plugins/plugin-handle-dag-pb.js +152 -0
  30. package/dist/src/plugins/plugin-handle-dag-pb.js.map +1 -0
  31. package/dist/src/plugins/plugin-handle-dag-walk.d.ts +16 -0
  32. package/dist/src/plugins/plugin-handle-dag-walk.d.ts.map +1 -0
  33. package/dist/src/plugins/plugin-handle-dag-walk.js +45 -0
  34. package/dist/src/plugins/plugin-handle-dag-walk.js.map +1 -0
  35. package/dist/src/plugins/plugin-handle-dir-index-html.d.ts +9 -0
  36. package/dist/src/plugins/plugin-handle-dir-index-html.d.ts.map +1 -0
  37. package/dist/src/plugins/plugin-handle-dir-index-html.js +42 -0
  38. package/dist/src/plugins/plugin-handle-dir-index-html.js.map +1 -0
  39. package/dist/src/plugins/plugin-handle-ipns-record.d.ts +12 -0
  40. package/dist/src/plugins/plugin-handle-ipns-record.d.ts.map +1 -0
  41. package/dist/src/plugins/plugin-handle-ipns-record.js +62 -0
  42. package/dist/src/plugins/plugin-handle-ipns-record.js.map +1 -0
  43. package/dist/src/plugins/plugin-handle-json.d.ts +11 -0
  44. package/dist/src/plugins/plugin-handle-json.d.ts.map +1 -0
  45. package/dist/src/plugins/plugin-handle-json.js +51 -0
  46. package/dist/src/plugins/plugin-handle-json.js.map +1 -0
  47. package/dist/src/plugins/plugin-handle-raw.d.ts +8 -0
  48. package/dist/src/plugins/plugin-handle-raw.d.ts.map +1 -0
  49. package/dist/src/plugins/plugin-handle-raw.js +80 -0
  50. package/dist/src/plugins/plugin-handle-raw.js.map +1 -0
  51. package/dist/src/plugins/plugin-handle-tar.d.ts +12 -0
  52. package/dist/src/plugins/plugin-handle-tar.d.ts.map +1 -0
  53. package/dist/src/plugins/plugin-handle-tar.js +36 -0
  54. package/dist/src/plugins/plugin-handle-tar.js.map +1 -0
  55. package/dist/src/plugins/plugins.d.ts +5 -0
  56. package/dist/src/plugins/plugins.d.ts.map +1 -0
  57. package/dist/src/plugins/plugins.js +5 -0
  58. package/dist/src/plugins/plugins.js.map +1 -0
  59. package/dist/src/plugins/types.d.ts +68 -0
  60. package/dist/src/plugins/types.d.ts.map +1 -0
  61. package/dist/src/plugins/types.js +2 -0
  62. package/dist/src/plugins/types.js.map +1 -0
  63. package/dist/src/types.d.ts +0 -27
  64. package/dist/src/types.d.ts.map +1 -1
  65. package/dist/src/types.js +1 -2
  66. package/dist/src/types.js.map +1 -1
  67. package/dist/src/utils/dir-index-html.d.ts +16 -0
  68. package/dist/src/utils/dir-index-html.d.ts.map +1 -0
  69. package/dist/src/utils/dir-index-html.js +384 -0
  70. package/dist/src/utils/dir-index-html.js.map +1 -0
  71. package/dist/src/utils/get-e-tag.d.ts +1 -1
  72. package/dist/src/utils/get-e-tag.d.ts.map +1 -1
  73. package/dist/src/utils/get-e-tag.js +18 -3
  74. package/dist/src/utils/get-e-tag.js.map +1 -1
  75. package/dist/src/utils/response-headers.d.ts.map +1 -1
  76. package/dist/src/utils/response-headers.js +4 -0
  77. package/dist/src/utils/response-headers.js.map +1 -1
  78. package/dist/src/utils/walk-path.d.ts +3 -2
  79. package/dist/src/utils/walk-path.d.ts.map +1 -1
  80. package/dist/src/utils/walk-path.js +1 -1
  81. package/dist/src/utils/walk-path.js.map +1 -1
  82. package/dist/src/verified-fetch.d.ts +6 -24
  83. package/dist/src/verified-fetch.d.ts.map +1 -1
  84. package/dist/src/verified-fetch.js +164 -387
  85. package/dist/src/verified-fetch.js.map +1 -1
  86. package/dist/typedoc-urls.json +32 -24
  87. package/package.json +6 -2
  88. package/src/index.ts +199 -0
  89. package/src/plugins/errors.ts +37 -0
  90. package/src/plugins/index.ts +8 -0
  91. package/src/plugins/plugin-base.ts +30 -0
  92. package/src/plugins/plugin-handle-car.ts +32 -0
  93. package/src/plugins/plugin-handle-dag-cbor.ts +84 -0
  94. package/src/plugins/plugin-handle-dag-pb.ts +168 -0
  95. package/src/plugins/plugin-handle-dag-walk.ts +53 -0
  96. package/src/plugins/plugin-handle-dir-index-html.ts +50 -0
  97. package/src/plugins/plugin-handle-ipns-record.ts +69 -0
  98. package/src/plugins/plugin-handle-json.ts +57 -0
  99. package/src/plugins/plugin-handle-raw.ts +92 -0
  100. package/src/plugins/plugin-handle-tar.ts +44 -0
  101. package/src/plugins/plugins.ts +4 -0
  102. package/src/plugins/types.ts +73 -0
  103. package/src/types.ts +0 -34
  104. package/src/utils/dir-index-html.ts +442 -0
  105. package/src/utils/get-e-tag.ts +20 -3
  106. package/src/utils/response-headers.ts +4 -0
  107. package/src/utils/walk-path.ts +3 -3
  108. package/src/verified-fetch.ts +187 -430
@@ -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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"}
@@ -1,26 +1,34 @@
1
1
  {
2
- "CIDDetail": "https://ipfs.github.io/helia-verified-fetch/interfaces/CIDDetail.html",
3
- ".:CIDDetail": "https://ipfs.github.io/helia-verified-fetch/interfaces/CIDDetail.html",
4
- "CIDDetailError": "https://ipfs.github.io/helia-verified-fetch/interfaces/CIDDetailError.html",
5
- ".:CIDDetailError": "https://ipfs.github.io/helia-verified-fetch/interfaces/CIDDetailError.html",
6
- "ContentTypeParser": "https://ipfs.github.io/helia-verified-fetch/interfaces/ContentTypeParser.html",
7
- "CreateVerifiedFetchInit": "https://ipfs.github.io/helia-verified-fetch/interfaces/CreateVerifiedFetchInit.html",
8
- ".:CreateVerifiedFetchInit": "https://ipfs.github.io/helia-verified-fetch/interfaces/CreateVerifiedFetchInit.html",
9
- "CreateVerifiedFetchOptions": "https://ipfs.github.io/helia-verified-fetch/interfaces/CreateVerifiedFetchOptions.html",
10
- ".:CreateVerifiedFetchOptions": "https://ipfs.github.io/helia-verified-fetch/interfaces/CreateVerifiedFetchOptions.html",
11
- "ResourceDetail": "https://ipfs.github.io/helia-verified-fetch/interfaces/ResourceDetail.html",
12
- ".:ResourceDetail": "https://ipfs.github.io/helia-verified-fetch/interfaces/ResourceDetail.html",
13
- "VerifiedFetch": "https://ipfs.github.io/helia-verified-fetch/interfaces/VerifiedFetch.html",
14
- ".:VerifiedFetch": "https://ipfs.github.io/helia-verified-fetch/interfaces/VerifiedFetch.html",
15
- "VerifiedFetchInit": "https://ipfs.github.io/helia-verified-fetch/interfaces/VerifiedFetchInit.html",
16
- ".:VerifiedFetchInit": "https://ipfs.github.io/helia-verified-fetch/interfaces/VerifiedFetchInit.html",
17
- "BubbledProgressEvents": "https://ipfs.github.io/helia-verified-fetch/types/BubbledProgressEvents.html",
18
- ".:BubbledProgressEvents": "https://ipfs.github.io/helia-verified-fetch/types/BubbledProgressEvents.html",
19
- "Resource": "https://ipfs.github.io/helia-verified-fetch/types/Resource.html",
20
- ".:Resource": "https://ipfs.github.io/helia-verified-fetch/types/Resource.html",
21
- "VerifiedFetchProgressEvents": "https://ipfs.github.io/helia-verified-fetch/types/VerifiedFetchProgressEvents.html",
22
- ".:VerifiedFetchProgressEvents": "https://ipfs.github.io/helia-verified-fetch/types/VerifiedFetchProgressEvents.html",
23
- "createVerifiedFetch": "https://ipfs.github.io/helia-verified-fetch/functions/createVerifiedFetch.html",
24
- ".:createVerifiedFetch": "https://ipfs.github.io/helia-verified-fetch/functions/createVerifiedFetch.html",
25
- "verifiedFetch": "https://ipfs.github.io/helia-verified-fetch/functions/verifiedFetch-1.html"
2
+ "BasePlugin": "https://ipfs.github.io/helia-verified-fetch/classes/index.BasePlugin.html",
3
+ "DirIndexHtmlPlugin": "https://ipfs.github.io/helia-verified-fetch/classes/index.DirIndexHtmlPlugin.html",
4
+ "PluginError": "https://ipfs.github.io/helia-verified-fetch/classes/index.PluginError.html",
5
+ "PluginFatalError": "https://ipfs.github.io/helia-verified-fetch/classes/index.PluginFatalError.html",
6
+ "CIDDetail": "https://ipfs.github.io/helia-verified-fetch/interfaces/index.CIDDetail.html",
7
+ ".:CIDDetail": "https://ipfs.github.io/helia-verified-fetch/interfaces/index.CIDDetail.html",
8
+ "CIDDetailError": "https://ipfs.github.io/helia-verified-fetch/interfaces/index.CIDDetailError.html",
9
+ ".:CIDDetailError": "https://ipfs.github.io/helia-verified-fetch/interfaces/index.CIDDetailError.html",
10
+ "ContentTypeParser": "https://ipfs.github.io/helia-verified-fetch/interfaces/index.ContentTypeParser.html",
11
+ "CreateVerifiedFetchInit": "https://ipfs.github.io/helia-verified-fetch/interfaces/index.CreateVerifiedFetchInit.html",
12
+ ".:CreateVerifiedFetchInit": "https://ipfs.github.io/helia-verified-fetch/interfaces/index.CreateVerifiedFetchInit.html",
13
+ "CreateVerifiedFetchOptions": "https://ipfs.github.io/helia-verified-fetch/interfaces/index.CreateVerifiedFetchOptions.html",
14
+ ".:CreateVerifiedFetchOptions": "https://ipfs.github.io/helia-verified-fetch/interfaces/index.CreateVerifiedFetchOptions.html",
15
+ "PluginContext": "https://ipfs.github.io/helia-verified-fetch/interfaces/index.PluginContext.html",
16
+ "PluginOptions": "https://ipfs.github.io/helia-verified-fetch/interfaces/index.PluginOptions.html",
17
+ "ResourceDetail": "https://ipfs.github.io/helia-verified-fetch/interfaces/index.ResourceDetail.html",
18
+ ".:ResourceDetail": "https://ipfs.github.io/helia-verified-fetch/interfaces/index.ResourceDetail.html",
19
+ "VerifiedFetch": "https://ipfs.github.io/helia-verified-fetch/interfaces/index.VerifiedFetch.html",
20
+ ".:VerifiedFetch": "https://ipfs.github.io/helia-verified-fetch/interfaces/index.VerifiedFetch.html",
21
+ "VerifiedFetchInit": "https://ipfs.github.io/helia-verified-fetch/interfaces/index.VerifiedFetchInit.html",
22
+ ".:VerifiedFetchInit": "https://ipfs.github.io/helia-verified-fetch/interfaces/index.VerifiedFetchInit.html",
23
+ "VerifiedFetchPluginFactory": "https://ipfs.github.io/helia-verified-fetch/interfaces/index.VerifiedFetchPluginFactory.html",
24
+ "BubbledProgressEvents": "https://ipfs.github.io/helia-verified-fetch/types/index.BubbledProgressEvents.html",
25
+ ".:BubbledProgressEvents": "https://ipfs.github.io/helia-verified-fetch/types/index.BubbledProgressEvents.html",
26
+ "Resource": "https://ipfs.github.io/helia-verified-fetch/types/index.Resource.html",
27
+ ".:Resource": "https://ipfs.github.io/helia-verified-fetch/types/index.Resource.html",
28
+ "VerifiedFetchProgressEvents": "https://ipfs.github.io/helia-verified-fetch/types/index.VerifiedFetchProgressEvents.html",
29
+ ".:VerifiedFetchProgressEvents": "https://ipfs.github.io/helia-verified-fetch/types/index.VerifiedFetchProgressEvents.html",
30
+ "createVerifiedFetch": "https://ipfs.github.io/helia-verified-fetch/functions/index.createVerifiedFetch.html",
31
+ ".:createVerifiedFetch": "https://ipfs.github.io/helia-verified-fetch/functions/index.createVerifiedFetch.html",
32
+ "dirIndexHtmlPluginFactory": "https://ipfs.github.io/helia-verified-fetch/functions/index.dirIndexHtmlPluginFactory.html",
33
+ "verifiedFetch": "https://ipfs.github.io/helia-verified-fetch/functions/index.verifiedFetch-1.html"
26
34
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@helia/verified-fetch",
3
- "version": "2.4.0",
3
+ "version": "2.5.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",
@@ -32,6 +32,10 @@
32
32
  ".": {
33
33
  "types": "./dist/src/index.d.ts",
34
34
  "import": "./dist/src/index.js"
35
+ },
36
+ "./plugins": {
37
+ "types": "./dist/src/plugins/plugins.d.ts",
38
+ "import": "./dist/src/plugins/plugins.js"
35
39
  }
36
40
  },
37
41
  "eslintConfig": {
@@ -155,6 +159,7 @@
155
159
  "@ipld/dag-pb": "^4.1.2",
156
160
  "@libp2p/interface": "^2.2.1",
157
161
  "@libp2p/kad-dht": "^14.1.3",
162
+ "@libp2p/logger": "^5.1.6",
158
163
  "@libp2p/peer-id": "^5.0.8",
159
164
  "@libp2p/webrtc": "^5.0.16",
160
165
  "@libp2p/websockets": "^9.0.11",
@@ -183,7 +188,6 @@
183
188
  "@helia/json": "^4.0.1",
184
189
  "@ipld/car": "^5.3.2",
185
190
  "@libp2p/crypto": "^5.0.7",
186
- "@libp2p/logger": "^5.1.4",
187
191
  "@sgtpooki/file-type": "^1.0.1",
188
192
  "@types/sinon": "^17.0.3",
189
193
  "aegir": "^45.0.8",
package/src/index.ts CHANGED
@@ -626,6 +626,197 @@
626
626
  * 2. `TypeError` - If the options argument is passed and not an object.
627
627
  * 3. `TypeError` - If the options argument is passed and is malformed.
628
628
  * 4. `AbortError` - If the content request is aborted due to user aborting provided AbortSignal. Note that this is a `AbortError` from `@libp2p/interface` and not the standard `AbortError` from the Fetch API.
629
+ *
630
+ * ## Pluggability and Extensibility
631
+ *
632
+ * Verified‑fetch can now be extended to alter how it handles requests by using plugins.
633
+ * Plugins are classes that extend the `BasePlugin` class and implement the `VerifiedFetchPlugin`
634
+ * interface. They are instantiated with `PluginOptions` when the `VerifiedFetch` class is created.
635
+ *
636
+ * Each plugin must implement two methods:
637
+ *
638
+ * - **`canHandle(context: PluginContext): boolean`**
639
+ * Inspects the current `PluginContext` (which includes the CID, path, query, accept header, etc.)
640
+ * and returns `true` if the plugin can operate on the current state of the request.
641
+ *
642
+ * - **`handle(context: PluginContext): Promise<Response | null>`**
643
+ * Performs the plugin’s work. It may:
644
+ * - **Return a final `Response`**: This stops the pipeline immediately.
645
+ * - **Return `null`**: This indicates that the plugin has only partially processed the request
646
+ * (for example, by performing path walking or decoding) and the pipeline should continue.
647
+ * - **Throw a `PluginError`**: This logs a non-fatal error and continues the pipeline.
648
+ * - **Throw a `PluginFatalError`**: This logs a fatal error and stops the pipeline immediately.
649
+ *
650
+ * Plugins are executed in a chain (a **plugin pipeline**):
651
+ *
652
+ * 1. **Initialization:**
653
+ * - The `VerifiedFetch` class is instantiated with a list of plugins.
654
+ * - When a request is made via the `fetch` method, the resource and options are parsed to
655
+ * create a mutable `PluginContext` object.
656
+ *
657
+ * 2. **Pipeline Execution:**
658
+ * - The pipeline repeatedly checks, up to a maximum number of passes (default = 3), which plugins
659
+ * are currently able to handle the request by calling each plugin’s `canHandle()` method.
660
+ * - Plugins that have not yet been called in the current run and return `true` for `canHandle()`
661
+ * are invoked in sequence.
662
+ * - If a plugin returns a final `Response` or throws a `PluginFatalError`, the pipeline immediately
663
+ * stops and that response is returned.
664
+ * - If a plugin returns `null`, it may have updated the context (for example, by
665
+ * performing path walking), other plugins that said they `canHandle` will run.
666
+ * - If no plugin modifies the context (i.e. no change to `context.modified`) and no final response is
667
+ * produced after iterating through all plugins, the pipeline exits and a default “Not Supported”
668
+ * response is returned.
669
+ *
670
+ * **Diagram of the Plugin Pipeline:**
671
+ *
672
+ * ```mermaid
673
+ * flowchart TD
674
+ * A[Resource & Options] --> B[Parse into PluginContext]
675
+ * B --> C[Plugin Pipeline]
676
+ * subgraph IP[Iterative Passes max 3 passes]
677
+ * C1[Check canHandle for each plugin]
678
+ * C2[Call handle on ready plugins]
679
+ * C3[Update PluginContext if partial work is done]
680
+ * C1 --> C2
681
+ * C2 --> C3
682
+ * end
683
+ * C --> IP
684
+ * IP --> D[Final Response]
685
+ * ```
686
+ *
687
+ * 3. **Finalization:**
688
+ * - After the pipeline completes, the resulting response & context is processed (e.g. headers such as ETag,
689
+ * Cache‑Control, and Content‑Disposition are set) and returned.
690
+ *
691
+ * Please see the original discussion on extensibility in [Issue #167](https://github.com/ipfs/helia-verified-fetch/issues/167).
692
+ *
693
+ * ---
694
+ *
695
+ * ### Extending Verified‑Fetch with Custom Plugins
696
+ *
697
+ * To add your own plugin:
698
+ *
699
+ * 1. **Extend the BasePlugin:**
700
+ *
701
+ * Create a new class that extends `BasePlugin` and implements:
702
+ *
703
+ * - `canHandle(context: PluginContext): boolean`
704
+ * - `handle(context: PluginContext): Promise<Response | null>`
705
+ *
706
+ * @example custom plugin
707
+ *
708
+ * ```typescript
709
+ * import { BasePlugin, type PluginContext, type VerifiedFetchPluginFactory, type PluginOptions } from '@helia/verified-fetch'
710
+ * import { okResponse } from './dist/src/utils/responses.js'
711
+ *
712
+ * export class MyCustomPlugin extends BasePlugin {
713
+ * // Optionally, list any codec codes your plugin supports:
714
+ * codes = [] //
715
+ *
716
+ * canHandle(context: PluginContext): boolean {
717
+ * // Only handle requests if the Accept header matches your custom type
718
+ * // Or check context for pathDetails, custom values, etc...
719
+ * return context.accept === 'application/vnd.my-custom-type'
720
+ * }
721
+ *
722
+ * async handle(context: PluginContext): Promise<Response | null> {
723
+ * // Perform any partial processing here, e.g., modify the context:
724
+ * context.customProcessed = true;
725
+ *
726
+ * // If you are ready to finalize the response:
727
+ * return new Response('Hello, world!', {
728
+ * status: 200,
729
+ * headers: {
730
+ * 'Content-Type': 'text/plain'
731
+ * }
732
+ });
733
+ *
734
+ * // Or, if further processing is needed by another plugin, simply return null.
735
+ * }
736
+ * }
737
+ * export const myCustomPluginFactory: VerifiedFetchPluginFactory = (opts: PluginOptions) => new MyCustomPlugin(opts)
738
+ * ```
739
+ *
740
+ * 2. **Integrate Your Plugin:**
741
+ *
742
+ * Add your custom plugin to Verified‑Fetch’s plugin list when instantiating Verified‑Fetch:
743
+ *
744
+ * @example Integrate custom plugin
745
+ *
746
+ * ```typescript
747
+ * import { createVerifiedFetch, type VerifiedFetchPluginFactory } from '@helia/verified-fetch'
748
+ * import { createHelia } from 'helia'
749
+ *
750
+ * const helia = await createHelia()
751
+ * const plugins: VerifiedFetchPluginFactory[] = [
752
+ * // myCustomPluginFactory
753
+ * ]
754
+ *
755
+ * const fetch = await createVerifiedFetch(helia, { plugins })
756
+ * ```
757
+ *
758
+ * ---
759
+ *
760
+ * ### Error Handling in the Plugin Pipeline
761
+ *
762
+ * Verified‑Fetch distinguishes between two types of errors thrown by plugins:
763
+ *
764
+ * - **PluginError (Non‑Fatal):**
765
+ * - Use this when your plugin encounters an issue that should be logged but does not prevent the pipeline
766
+ * from continuing.
767
+ * - When a plugin throws a `PluginError`, the error is logged and the pipeline continues with the next plugin.
768
+ *
769
+ * - **PluginFatalError (Fatal):**
770
+ * - Use this when a critical error occurs that should immediately abort the request.
771
+ * - When a plugin throws a `PluginFatalError`, the pipeline immediately terminates and the provided error
772
+ * response is returned.
773
+ *
774
+ * @example Plugin error Handling
775
+ *
776
+ * ```typescript
777
+ * import { PluginError, PluginFatalError } from '@helia/verified-fetch'
778
+ *
779
+ * // async handle(context: PluginContext): Promise<Response | null> {
780
+ * const recoverable = Math.random() > 0.5 // Use more sophisticated logic here ;)
781
+ * if (recoverable === true) {
782
+ * throw new PluginError('MY_CUSTOM_WARNING', 'A non‑fatal issue occurred', {
783
+ * details: {
784
+ * someKey: 'Additional details here'
785
+ * }
786
+ * });
787
+ * }
788
+ *
789
+ * if (recoverable === false) {
790
+ * throw new PluginFatalError('MY_CUSTOM_FATAL', 'A critical error occurred', {
791
+ * response: new Response('Something happened', { status: 500 }) // Required: supply your own error response
792
+ * });
793
+ * }
794
+ *
795
+ * // Otherwise, continue processing...
796
+ * // }
797
+ * ```
798
+ *
799
+ * ### How the Plugin Pipeline Works
800
+ *
801
+ * - **Shared Context:**
802
+ * A mutable `PluginContext` is created for each request. It includes the parsed CID, path, query parameters,
803
+ * accept header, and any other metadata. Plugins can update this context as they perform partial work (for example,
804
+ * by doing path walking or decoding).
805
+ *
806
+ * - **Iterative Processing:**
807
+ * The pipeline repeatedly checks which plugins can currently handle the request by calling `canHandle(context)`.
808
+ * - Plugins that perform partial processing update the context and return `null`, allowing subsequent passes by other plugins.
809
+ * - Once a plugin is ready to finalize the response, it returns a final `Response` and the pipeline terminates.
810
+ *
811
+ * - **No Strict Ordering:**
812
+ * Plugins are invoked based solely on whether they can handle the current state of the context.
813
+ * This means you do not have to specify a rigid order, each plugin simply checks the context and acts if appropriate.
814
+ *
815
+ * - **Error Handling:**
816
+ * - A thrown `PluginError` is considered non‑fatal and is logged, allowing the pipeline to continue.
817
+ * - A thrown `PluginFatalError` immediately stops the pipeline and returns the error response.
818
+ *
819
+ * For a detailed explanation of the pipeline, please refer to the discussion in [Issue #167](https://github.com/ipfs/helia-verified-fetch/issues/167).
629
820
  */
630
821
 
631
822
  import { bitswap, trustlessGateway } from '@helia/block-brokers'
@@ -639,6 +830,7 @@ import { createLibp2p, type Libp2pOptions } from 'libp2p'
639
830
  import { type ContentTypeParser } from './types.js'
640
831
  import { getLibp2pConfig } from './utils/libp2p-defaults.js'
641
832
  import { VerifiedFetch as VerifiedFetchClass } from './verified-fetch.js'
833
+ import type { VerifiedFetchPluginFactory } from './plugins/types.js'
642
834
  import type { GetBlockProgressEvents, Helia, Routing } from '@helia/interface'
643
835
  import type { DNSResolvers, DNS } from '@multiformats/dns'
644
836
  import type { DNSResolver } from '@multiformats/dns/resolvers'
@@ -766,6 +958,12 @@ export interface CreateVerifiedFetchOptions {
766
958
  * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Server-Timing
767
959
  */
768
960
  withServerTiming?: boolean
961
+
962
+ /**
963
+ * Plugins to use with the verified-fetch instance. Note that we have a set of default plugins that are always used.
964
+ * If you want to replace one of the default plugins, you can do so by passing a plugin with the same name.
965
+ */
966
+ plugins?: VerifiedFetchPluginFactory[]
769
967
  }
770
968
 
771
969
  export type { ContentTypeParser } from './types.js'
@@ -898,6 +1096,7 @@ export async function createVerifiedFetch (init?: Helia | CreateVerifiedFetchIni
898
1096
  }
899
1097
 
900
1098
  export { verifiedFetch } from './singleton.js'
1099
+ export * from './plugins/index.js'
901
1100
 
902
1101
  function isHelia (obj: any): obj is Helia {
903
1102
  // test for the presence of known Helia properties, return a boolean value
@@ -0,0 +1,37 @@
1
+ import type { FatalPluginErrorOptions, PluginErrorOptions } from './types.js'
2
+
3
+ /**
4
+ * If a plugin encounters an error, it should throw an instance of this class.
5
+ */
6
+ export class PluginError extends Error {
7
+ public name = 'PluginError'
8
+ public code: string
9
+ public fatal: boolean
10
+ public details?: Record<string, any>
11
+ public response?: any
12
+
13
+ constructor (code: string, message: string, options?: PluginErrorOptions) {
14
+ super(message)
15
+ this.code = code
16
+ this.fatal = options?.fatal ?? false
17
+ this.details = options?.details
18
+ this.response = options?.response
19
+ }
20
+ }
21
+
22
+ /**
23
+ * If a plugin encounters a fatal error and verified-fetch should not continue processing the request, it should throw
24
+ * an instance of this class.
25
+ *
26
+ * Note that you should be very careful when throwing a `PluginFatalError`, as it will stop the request from being
27
+ * processed further. If you do not have a response to return to the client, you should consider throwing a
28
+ * `PluginError` instead.
29
+ */
30
+ export class PluginFatalError extends PluginError {
31
+ public name = 'PluginFatalError'
32
+
33
+ constructor (code: string, message: string, options: FatalPluginErrorOptions) {
34
+ super(code, message, { ...options, fatal: true })
35
+ this.name = 'PluginFatalError'
36
+ }
37
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * This file is the entry into all things we export from the `src/plugins` directory.
3
+ */
4
+
5
+ export { PluginError, PluginFatalError } from './errors.js'
6
+ export { BasePlugin } from './plugin-base.js'
7
+ export type { PluginOptions, PluginContext, VerifiedFetchPluginFactory } from './types.js'
8
+ export * from './plugins.js'
@@ -0,0 +1,30 @@
1
+ import type { VerifiedFetchPlugin, PluginContext, PluginOptions } from './types.js'
2
+ import type { Logger } from '@libp2p/interface'
3
+
4
+ /**
5
+ * Base class for verified-fetch plugins. This class provides a basic implementation of the `FetchHandlerPlugin`
6
+ * interface.
7
+ *
8
+ * Subclasses should implement the `canHandle` and `handle` methods, and may override the `codes` and `log` properties.
9
+ *
10
+ * If your plugin adds/edits the context supplied in `handle`, you should increment the `context.modified` property.
11
+ */
12
+ export class BasePlugin implements VerifiedFetchPlugin {
13
+ readonly codes: number[] = []
14
+ readonly log: Logger
15
+ readonly pluginOptions: PluginOptions
16
+ constructor (options: PluginOptions) {
17
+ // convert a CamelCase string to a kebab-case string for the logger name of subclasses
18
+ const loggerName = this.constructor.name.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase()
19
+ this.log = options.logger.forComponent(loggerName)
20
+ this.pluginOptions = options
21
+ }
22
+
23
+ canHandle (context: PluginContext): boolean {
24
+ throw new Error('Not implemented')
25
+ }
26
+
27
+ async handle (context: PluginContext): Promise<Response | null> {
28
+ throw new Error('Not implemented')
29
+ }
30
+ }
@@ -0,0 +1,32 @@
1
+ import { car } from '@helia/car'
2
+ import toBrowserReadableStream from 'it-to-browser-readablestream'
3
+ import { okResponse } from '../utils/responses.js'
4
+ import { BasePlugin } from './plugin-base.js'
5
+ import type { PluginContext } from './types.js'
6
+
7
+ /**
8
+ * Accepts a `CID` and returns a `Response` with a body stream that is a CAR
9
+ * of the `DAG` referenced by the `CID`.
10
+ */
11
+ export class CarPlugin extends BasePlugin {
12
+ canHandle (context: PluginContext): boolean {
13
+ this.log('checking if we can handle %c with accept %s', context.cid, context.accept)
14
+ return context.accept?.startsWith('application/vnd.ipld.car') === true || context.query.format === 'car' // application/vnd.ipld.car
15
+ }
16
+
17
+ async handle (context: PluginContext): Promise<Response> {
18
+ const { options } = context
19
+ const { getBlockstore, helia } = this.pluginOptions
20
+ context.reqFormat = 'car'
21
+ context.query.download = true
22
+ context.query.filename = context.query.filename ?? `${context.cid.toString()}.car`
23
+ const blockstore = getBlockstore(context.cid, context.resource, options?.session ?? true, options)
24
+ const c = car({ blockstore, getCodec: helia.getCodec })
25
+ const stream = toBrowserReadableStream(c.stream(context.cid, options))
26
+
27
+ const response = okResponse(context.resource, stream)
28
+ response.headers.set('content-type', 'application/vnd.ipld.car; version=1')
29
+
30
+ return response
31
+ }
32
+ }
@@ -0,0 +1,84 @@
1
+ import * as ipldDagCbor from '@ipld/dag-cbor'
2
+ import * as ipldDagJson from '@ipld/dag-json'
3
+ import { dagCborToSafeJSON } from '../utils/dag-cbor-to-safe-json.js'
4
+ import { setIpfsRoots } from '../utils/response-headers.js'
5
+ import { notAcceptableResponse, okResponse } from '../utils/responses.js'
6
+ import { isObjectNode } from '../utils/walk-path.js'
7
+ import { BasePlugin } from './plugin-base.js'
8
+ import type { PluginContext } from './types.js'
9
+ import type { ObjectNode } from 'ipfs-unixfs-exporter'
10
+
11
+ /**
12
+ * Handles `dag-cbor` content, including requests with Accept: `application/vnd.ipld.dag-json` and `application/json`.
13
+ */
14
+ export class DagCborPlugin extends BasePlugin {
15
+ readonly codes = [ipldDagCbor.code]
16
+
17
+ canHandle ({ cid, accept, pathDetails }: PluginContext): boolean {
18
+ this.log('checking if we can handle %c with accept %s', cid, accept)
19
+ if (pathDetails == null) {
20
+ return false
21
+ }
22
+ if (!isObjectNode(pathDetails.terminalElement)) {
23
+ return false
24
+ }
25
+ if (cid.code !== ipldDagCbor.code) {
26
+ return false
27
+ }
28
+
29
+ return isObjectNode(pathDetails.terminalElement)
30
+ }
31
+
32
+ async handle (context: PluginContext): Promise<Response> {
33
+ const { cid, path, resource, accept, pathDetails } = context
34
+
35
+ this.log.trace('fetching %c/%s', cid, path)
36
+ if (pathDetails == null) {
37
+ throw new Error('pathDetails is null')
38
+ }
39
+ const ipfsRoots = pathDetails.ipfsRoots
40
+ const terminalElement = pathDetails.terminalElement as ObjectNode // checked in canHandle fn.
41
+
42
+ const block = terminalElement.node
43
+
44
+ let body: string | Uint8Array
45
+
46
+ if (accept === 'application/octet-stream' || accept === 'application/vnd.ipld.dag-cbor' || accept === 'application/cbor') {
47
+ // skip decoding
48
+ body = block
49
+ } else if (accept === 'application/vnd.ipld.dag-json') {
50
+ try {
51
+ // if vnd.ipld.dag-json has been specified, convert to the format - note
52
+ // that this supports more data types than regular JSON, the content-type
53
+ // response header is set so the user knows to process it differently
54
+ const obj = ipldDagCbor.decode(block)
55
+ body = ipldDagJson.encode(obj)
56
+ } catch (err) {
57
+ this.log.error('could not transform %c to application/vnd.ipld.dag-json', err)
58
+ return notAcceptableResponse(resource)
59
+ }
60
+ } else {
61
+ try {
62
+ body = dagCborToSafeJSON(block)
63
+ } catch (err) {
64
+ if (accept === 'application/json') {
65
+ this.log('could not decode DAG-CBOR as JSON-safe, but the client sent "Accept: application/json"', err)
66
+
67
+ return notAcceptableResponse(resource)
68
+ }
69
+
70
+ this.log('could not decode DAG-CBOR as JSON-safe, falling back to `application/octet-stream`', err)
71
+ body = block
72
+ }
73
+ }
74
+
75
+ const response = okResponse(resource, body)
76
+
77
+ const responseContentType = accept ?? (body instanceof Uint8Array ? 'application/octet-stream' : 'application/json')
78
+
79
+ response.headers.set('content-type', responseContentType)
80
+ setIpfsRoots(response, ipfsRoots)
81
+
82
+ return response
83
+ }
84
+ }