@helia/verified-fetch 0.0.0-31cdfa8

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 (44) hide show
  1. package/LICENSE +4 -0
  2. package/README.md +299 -0
  3. package/dist/index.min.js +115 -0
  4. package/dist/src/index.d.ts +321 -0
  5. package/dist/src/index.d.ts.map +1 -0
  6. package/dist/src/index.js +290 -0
  7. package/dist/src/index.js.map +1 -0
  8. package/dist/src/singleton.d.ts +3 -0
  9. package/dist/src/singleton.d.ts.map +1 -0
  10. package/dist/src/singleton.js +15 -0
  11. package/dist/src/singleton.js.map +1 -0
  12. package/dist/src/utils/get-stream-from-async-iterable.d.ts +10 -0
  13. package/dist/src/utils/get-stream-from-async-iterable.d.ts.map +1 -0
  14. package/dist/src/utils/get-stream-from-async-iterable.js +38 -0
  15. package/dist/src/utils/get-stream-from-async-iterable.js.map +1 -0
  16. package/dist/src/utils/parse-resource.d.ts +18 -0
  17. package/dist/src/utils/parse-resource.d.ts.map +1 -0
  18. package/dist/src/utils/parse-resource.js +24 -0
  19. package/dist/src/utils/parse-resource.js.map +1 -0
  20. package/dist/src/utils/parse-url-string.d.ts +26 -0
  21. package/dist/src/utils/parse-url-string.d.ts.map +1 -0
  22. package/dist/src/utils/parse-url-string.js +109 -0
  23. package/dist/src/utils/parse-url-string.js.map +1 -0
  24. package/dist/src/utils/tlru.d.ts +15 -0
  25. package/dist/src/utils/tlru.d.ts.map +1 -0
  26. package/dist/src/utils/tlru.js +40 -0
  27. package/dist/src/utils/tlru.js.map +1 -0
  28. package/dist/src/utils/walk-path.d.ts +13 -0
  29. package/dist/src/utils/walk-path.d.ts.map +1 -0
  30. package/dist/src/utils/walk-path.js +17 -0
  31. package/dist/src/utils/walk-path.js.map +1 -0
  32. package/dist/src/verified-fetch.d.ts +67 -0
  33. package/dist/src/verified-fetch.d.ts.map +1 -0
  34. package/dist/src/verified-fetch.js +303 -0
  35. package/dist/src/verified-fetch.js.map +1 -0
  36. package/package.json +180 -0
  37. package/src/index.ts +377 -0
  38. package/src/singleton.ts +20 -0
  39. package/src/utils/get-stream-from-async-iterable.ts +45 -0
  40. package/src/utils/parse-resource.ts +40 -0
  41. package/src/utils/parse-url-string.ts +139 -0
  42. package/src/utils/tlru.ts +52 -0
  43. package/src/utils/walk-path.ts +34 -0
  44. package/src/verified-fetch.ts +370 -0
@@ -0,0 +1,303 @@
1
+ import { dagCbor as heliaDagCbor } from '@helia/dag-cbor';
2
+ import { dagJson as heliaDagJson } from '@helia/dag-json';
3
+ import { ipns as heliaIpns } from '@helia/ipns';
4
+ import { dnsJsonOverHttps } from '@helia/ipns/dns-resolvers';
5
+ import { json as heliaJson } from '@helia/json';
6
+ import { unixfs as heliaUnixFs } from '@helia/unixfs';
7
+ import { code as dagCborCode } from '@ipld/dag-cbor';
8
+ import { code as dagJsonCode } from '@ipld/dag-json';
9
+ import { code as dagPbCode } from '@ipld/dag-pb';
10
+ import { code as jsonCode } from 'multiformats/codecs/json';
11
+ import { decode, code as rawCode } from 'multiformats/codecs/raw';
12
+ import { identity } from 'multiformats/hashes/identity';
13
+ import { CustomProgressEvent } from 'progress-events';
14
+ import { getStreamFromAsyncIterable } from './utils/get-stream-from-async-iterable.js';
15
+ import { parseResource } from './utils/parse-resource.js';
16
+ import { walkPath } from './utils/walk-path.js';
17
+ function convertOptions(options) {
18
+ if (options == null) {
19
+ return undefined;
20
+ }
21
+ let signal;
22
+ if (options?.signal === null) {
23
+ signal = undefined;
24
+ }
25
+ return {
26
+ ...options,
27
+ signal
28
+ };
29
+ }
30
+ function okResponse(body) {
31
+ return new Response(body, {
32
+ status: 200,
33
+ statusText: 'OK'
34
+ });
35
+ }
36
+ function notSupportedResponse(body) {
37
+ return new Response(body, {
38
+ status: 501,
39
+ statusText: 'Not Implemented'
40
+ });
41
+ }
42
+ export class VerifiedFetch {
43
+ helia;
44
+ ipns;
45
+ unixfs;
46
+ dagJson;
47
+ dagCbor;
48
+ json;
49
+ pathWalker;
50
+ log;
51
+ contentTypeParser;
52
+ constructor({ helia, ipns, unixfs, dagJson, json, dagCbor, pathWalker }, init) {
53
+ this.helia = helia;
54
+ this.log = helia.logger.forComponent('helia:verified-fetch');
55
+ this.ipns = ipns ?? heliaIpns(helia, {
56
+ resolvers: [
57
+ dnsJsonOverHttps('https://mozilla.cloudflare-dns.com/dns-query'),
58
+ dnsJsonOverHttps('https://dns.google/resolve')
59
+ ]
60
+ });
61
+ this.unixfs = unixfs ?? heliaUnixFs(helia);
62
+ this.dagJson = dagJson ?? heliaDagJson(helia);
63
+ this.json = json ?? heliaJson(helia);
64
+ this.dagCbor = dagCbor ?? heliaDagCbor(helia);
65
+ this.pathWalker = pathWalker ?? walkPath;
66
+ this.contentTypeParser = init?.contentTypeParser;
67
+ this.log.trace('created VerifiedFetch instance');
68
+ }
69
+ // handle vnd.ipfs.ipns-record
70
+ async handleIPNSRecord({ cid, path, options }) {
71
+ const response = notSupportedResponse('vnd.ipfs.ipns-record support is not implemented');
72
+ response.headers.set('X-Content-Type-Options', 'nosniff'); // see https://specs.ipfs.tech/http-gateways/path-gateway/#x-content-type-options-response-header
73
+ return response;
74
+ }
75
+ // handle vnd.ipld.car
76
+ async handleIPLDCar({ cid, path, options }) {
77
+ const response = notSupportedResponse('vnd.ipld.car support is not implemented');
78
+ response.headers.set('X-Content-Type-Options', 'nosniff'); // see https://specs.ipfs.tech/http-gateways/path-gateway/#x-content-type-options-response-header
79
+ return response;
80
+ }
81
+ async handleDagJson({ cid, path, options }) {
82
+ this.log.trace('fetching %c/%s', cid, path);
83
+ options?.onProgress?.(new CustomProgressEvent('verified-fetch:request:start', { cid, path }));
84
+ const result = await this.dagJson.get(cid, {
85
+ signal: options?.signal,
86
+ onProgress: options?.onProgress
87
+ });
88
+ options?.onProgress?.(new CustomProgressEvent('verified-fetch:request:end', { cid, path }));
89
+ const response = okResponse(JSON.stringify(result));
90
+ response.headers.set('content-type', 'application/json');
91
+ return response;
92
+ }
93
+ async handleJson({ cid, path, options }) {
94
+ this.log.trace('fetching %c/%s', cid, path);
95
+ options?.onProgress?.(new CustomProgressEvent('verified-fetch:request:start', { cid, path }));
96
+ const result = await this.json.get(cid, {
97
+ signal: options?.signal,
98
+ onProgress: options?.onProgress
99
+ });
100
+ options?.onProgress?.(new CustomProgressEvent('verified-fetch:request:end', { cid, path }));
101
+ const response = okResponse(JSON.stringify(result));
102
+ response.headers.set('content-type', 'application/json');
103
+ return response;
104
+ }
105
+ async handleDagCbor({ cid, path, options }) {
106
+ this.log.trace('fetching %c/%s', cid, path);
107
+ options?.onProgress?.(new CustomProgressEvent('verified-fetch:request:start', { cid, path }));
108
+ const result = await this.dagCbor.get(cid, {
109
+ signal: options?.signal,
110
+ onProgress: options?.onProgress
111
+ });
112
+ options?.onProgress?.(new CustomProgressEvent('verified-fetch:request:end', { cid, path }));
113
+ const response = okResponse(JSON.stringify(result));
114
+ await this.setContentType(result, path, response);
115
+ return response;
116
+ }
117
+ async handleDagPb({ cid, path, options, terminalElement }) {
118
+ this.log.trace('fetching %c/%s', cid, path);
119
+ let resolvedCID = terminalElement?.cid ?? cid;
120
+ let stat;
121
+ if (terminalElement?.type === 'directory') {
122
+ const dirCid = terminalElement.cid;
123
+ const rootFilePath = 'index.html';
124
+ try {
125
+ this.log.trace('found directory at %c/%s, looking for index.html', cid, path);
126
+ options?.onProgress?.(new CustomProgressEvent('verified-fetch:request:start', { cid: dirCid, path: rootFilePath }));
127
+ stat = await this.unixfs.stat(dirCid, {
128
+ path: rootFilePath,
129
+ signal: options?.signal,
130
+ onProgress: options?.onProgress
131
+ });
132
+ this.log.trace('found root file at %c/%s with cid %c', dirCid, rootFilePath, stat.cid);
133
+ path = rootFilePath;
134
+ resolvedCID = stat.cid;
135
+ // terminalElement = stat
136
+ }
137
+ catch (err) {
138
+ this.log('error loading path %c/%s', dirCid, rootFilePath, err);
139
+ return notSupportedResponse('Unable to find index.html for directory at given path. Support for directories with implicit root is not implemented');
140
+ }
141
+ finally {
142
+ options?.onProgress?.(new CustomProgressEvent('verified-fetch:request:end', { cid: dirCid, path: rootFilePath }));
143
+ }
144
+ }
145
+ options?.onProgress?.(new CustomProgressEvent('verified-fetch:request:start', { cid: resolvedCID, path: '' }));
146
+ const asyncIter = this.unixfs.cat(resolvedCID, {
147
+ signal: options?.signal,
148
+ onProgress: options?.onProgress
149
+ });
150
+ options?.onProgress?.(new CustomProgressEvent('verified-fetch:request:end', { cid: resolvedCID, path: '' }));
151
+ this.log('got async iterator for %c/%s', cid, path);
152
+ const { stream, firstChunk } = await getStreamFromAsyncIterable(asyncIter, path ?? '', this.helia.logger, {
153
+ onProgress: options?.onProgress
154
+ });
155
+ const response = okResponse(stream);
156
+ await this.setContentType(firstChunk, path, response);
157
+ return response;
158
+ }
159
+ async handleRaw({ cid, path, options }) {
160
+ this.log.trace('fetching %c/%s', cid, path);
161
+ options?.onProgress?.(new CustomProgressEvent('verified-fetch:request:start', { cid, path }));
162
+ const result = await this.helia.blockstore.get(cid);
163
+ options?.onProgress?.(new CustomProgressEvent('verified-fetch:request:end', { cid, path }));
164
+ const response = okResponse(decode(result));
165
+ await this.setContentType(result, path, response);
166
+ return response;
167
+ }
168
+ async setContentType(bytes, path, response) {
169
+ let contentType = 'application/octet-stream';
170
+ if (this.contentTypeParser != null) {
171
+ try {
172
+ let fileName = path.split('/').pop()?.trim();
173
+ fileName = fileName === '' ? undefined : fileName;
174
+ const parsed = this.contentTypeParser(bytes, fileName);
175
+ if (isPromise(parsed)) {
176
+ const result = await parsed;
177
+ if (result != null) {
178
+ contentType = result;
179
+ }
180
+ }
181
+ else if (parsed != null) {
182
+ contentType = parsed;
183
+ }
184
+ }
185
+ catch (err) {
186
+ this.log.error('Error parsing content type', err);
187
+ }
188
+ }
189
+ response.headers.set('content-type', contentType);
190
+ }
191
+ /**
192
+ * Determines the format requested by the client, defaults to `null` if no format is requested.
193
+ *
194
+ * @see https://specs.ipfs.tech/http-gateways/path-gateway/#format-request-query-parameter
195
+ * @default 'raw'
196
+ */
197
+ getFormat({ headerFormat, queryFormat }) {
198
+ const formatMap = {
199
+ 'vnd.ipld.raw': 'raw',
200
+ 'vnd.ipld.car': 'car',
201
+ 'application/x-tar': 'tar',
202
+ 'application/vnd.ipld.dag-json': 'dag-json',
203
+ 'application/vnd.ipld.dag-cbor': 'dag-cbor',
204
+ 'application/json': 'json',
205
+ 'application/cbor': 'cbor',
206
+ 'vnd.ipfs.ipns-record': 'ipns-record'
207
+ };
208
+ if (headerFormat != null) {
209
+ for (const format in formatMap) {
210
+ if (headerFormat.includes(format)) {
211
+ return formatMap[format];
212
+ }
213
+ }
214
+ }
215
+ else if (queryFormat != null) {
216
+ return queryFormat;
217
+ }
218
+ return null;
219
+ }
220
+ /**
221
+ * Map of format to specific handlers for that format.
222
+ * These format handlers should adjust the response headers as specified in https://specs.ipfs.tech/http-gateways/path-gateway/#response-headers
223
+ */
224
+ formatHandlers = {
225
+ raw: async () => notSupportedResponse('application/vnd.ipld.raw support is not implemented'),
226
+ car: this.handleIPLDCar,
227
+ 'ipns-record': this.handleIPNSRecord,
228
+ tar: async () => notSupportedResponse('application/x-tar support is not implemented'),
229
+ 'dag-json': async () => notSupportedResponse('application/vnd.ipld.dag-json support is not implemented'),
230
+ 'dag-cbor': async () => notSupportedResponse('application/vnd.ipld.dag-cbor support is not implemented'),
231
+ json: async () => notSupportedResponse('application/json support is not implemented'),
232
+ cbor: async () => notSupportedResponse('application/cbor support is not implemented')
233
+ };
234
+ codecHandlers = {
235
+ [dagJsonCode]: this.handleDagJson,
236
+ [dagPbCode]: this.handleDagPb,
237
+ [jsonCode]: this.handleJson,
238
+ [dagCborCode]: this.handleDagCbor,
239
+ [rawCode]: this.handleRaw,
240
+ [identity.code]: this.handleRaw
241
+ };
242
+ async fetch(resource, opts) {
243
+ const options = convertOptions(opts);
244
+ const { path, query, ...rest } = await parseResource(resource, { ipns: this.ipns, logger: this.helia.logger }, options);
245
+ const cid = rest.cid;
246
+ let response;
247
+ const format = this.getFormat({ headerFormat: new Headers(options?.headers).get('accept'), queryFormat: query.format ?? null });
248
+ if (format != null) {
249
+ // TODO: These should be handled last when they're returning something other than 501
250
+ const formatHandler = this.formatHandlers[format];
251
+ if (formatHandler != null) {
252
+ response = await formatHandler.call(this, { cid, path, options });
253
+ if (response.status === 501) {
254
+ return response;
255
+ }
256
+ }
257
+ }
258
+ let terminalElement;
259
+ let ipfsRoots;
260
+ try {
261
+ const pathDetails = await this.pathWalker(this.helia.blockstore, `${cid.toString()}/${path}`, options);
262
+ ipfsRoots = pathDetails.ipfsRoots;
263
+ terminalElement = pathDetails.terminalElement;
264
+ }
265
+ catch (err) {
266
+ this.log.error('Error walking path %s', path, err);
267
+ // return new Response(`Error walking path: ${(err as Error).message}`, { status: 500 })
268
+ }
269
+ if (response == null) {
270
+ const codecHandler = this.codecHandlers[cid.code];
271
+ if (codecHandler != null) {
272
+ response = await codecHandler.call(this, { cid, path, options, terminalElement });
273
+ }
274
+ else {
275
+ return notSupportedResponse(`Support for codec with code ${cid.code} is not yet implemented. Please open an issue at https://github.com/ipfs/helia/issues/new`);
276
+ }
277
+ }
278
+ response.headers.set('etag', cid.toString()); // https://specs.ipfs.tech/http-gateways/path-gateway/#etag-response-header
279
+ response.headers.set('cache-control', 'public, max-age=29030400, immutable');
280
+ response.headers.set('X-Ipfs-Path', resource.toString()); // https://specs.ipfs.tech/http-gateways/path-gateway/#x-ipfs-path-response-header
281
+ if (ipfsRoots != null) {
282
+ response.headers.set('X-Ipfs-Roots', ipfsRoots.map(cid => cid.toV1().toString()).join(',')); // https://specs.ipfs.tech/http-gateways/path-gateway/#x-ipfs-roots-response-header
283
+ }
284
+ // response.headers.set('Content-Disposition', `TODO`) // https://specs.ipfs.tech/http-gateways/path-gateway/#content-disposition-response-header
285
+ return response;
286
+ }
287
+ /**
288
+ * Start the Helia instance
289
+ */
290
+ async start() {
291
+ await this.helia.start();
292
+ }
293
+ /**
294
+ * Shut down the Helia instance
295
+ */
296
+ async stop() {
297
+ await this.helia.stop();
298
+ }
299
+ }
300
+ function isPromise(p) {
301
+ return p?.then != null;
302
+ }
303
+ //# sourceMappingURL=verified-fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verified-fetch.js","sourceRoot":"","sources":["../../src/verified-fetch.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,180 @@
1
+ {
2
+ "name": "@helia/verified-fetch",
3
+ "version": "0.0.0-31cdfa8",
4
+ "description": "A fetch-like API for obtaining verified & trustless IPFS content on the web.",
5
+ "license": "Apache-2.0 OR MIT",
6
+ "homepage": "https://github.com/ipfs/helia/tree/main/packages/verified-fetch#readme",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/ipfs/helia.git"
10
+ },
11
+ "bugs": {
12
+ "url": "https://github.com/ipfs/helia/issues"
13
+ },
14
+ "publishConfig": {
15
+ "access": "public",
16
+ "provenance": true
17
+ },
18
+ "keywords": [
19
+ "IPFS",
20
+ "fetch",
21
+ "helia"
22
+ ],
23
+ "type": "module",
24
+ "types": "./dist/src/index.d.ts",
25
+ "files": [
26
+ "src",
27
+ "dist",
28
+ "!dist/test",
29
+ "!**/*.tsbuildinfo"
30
+ ],
31
+ "exports": {
32
+ ".": {
33
+ "types": "./dist/src/index.d.ts",
34
+ "import": "./dist/src/index.js"
35
+ }
36
+ },
37
+ "eslintConfig": {
38
+ "extends": "ipfs",
39
+ "parserOptions": {
40
+ "project": true,
41
+ "sourceType": "module"
42
+ }
43
+ },
44
+ "release": {
45
+ "branches": [
46
+ "main"
47
+ ],
48
+ "plugins": [
49
+ [
50
+ "@semantic-release/commit-analyzer",
51
+ {
52
+ "preset": "conventionalcommits",
53
+ "releaseRules": [
54
+ {
55
+ "breaking": true,
56
+ "release": "major"
57
+ },
58
+ {
59
+ "revert": true,
60
+ "release": "patch"
61
+ },
62
+ {
63
+ "type": "feat",
64
+ "release": "minor"
65
+ },
66
+ {
67
+ "type": "fix",
68
+ "release": "patch"
69
+ },
70
+ {
71
+ "type": "docs",
72
+ "release": "patch"
73
+ },
74
+ {
75
+ "type": "test",
76
+ "release": "patch"
77
+ },
78
+ {
79
+ "type": "deps",
80
+ "release": "patch"
81
+ },
82
+ {
83
+ "scope": "no-release",
84
+ "release": false
85
+ }
86
+ ]
87
+ }
88
+ ],
89
+ [
90
+ "@semantic-release/release-notes-generator",
91
+ {
92
+ "preset": "conventionalcommits",
93
+ "presetConfig": {
94
+ "types": [
95
+ {
96
+ "type": "feat",
97
+ "section": "Features"
98
+ },
99
+ {
100
+ "type": "fix",
101
+ "section": "Bug Fixes"
102
+ },
103
+ {
104
+ "type": "chore",
105
+ "section": "Trivial Changes"
106
+ },
107
+ {
108
+ "type": "docs",
109
+ "section": "Documentation"
110
+ },
111
+ {
112
+ "type": "deps",
113
+ "section": "Dependencies"
114
+ },
115
+ {
116
+ "type": "test",
117
+ "section": "Tests"
118
+ }
119
+ ]
120
+ }
121
+ }
122
+ ],
123
+ "@semantic-release/changelog",
124
+ "@semantic-release/npm",
125
+ "@semantic-release/github",
126
+ "@semantic-release/git"
127
+ ]
128
+ },
129
+ "scripts": {
130
+ "clean": "aegir clean",
131
+ "lint": "aegir lint",
132
+ "dep-check": "aegir dep-check",
133
+ "build": "aegir build",
134
+ "test": "aegir test",
135
+ "test:chrome": "aegir test -t browser --cov",
136
+ "test:chrome-webworker": "aegir test -t webworker",
137
+ "test:firefox": "aegir test -t browser -- --browser firefox",
138
+ "test:firefox-webworker": "aegir test -t webworker -- --browser firefox",
139
+ "test:node": "aegir test -t node --cov",
140
+ "test:electron-main": "aegir test -t electron-main",
141
+ "release": "aegir release"
142
+ },
143
+ "dependencies": {
144
+ "@helia/block-brokers": "2.0.1-31cdfa8",
145
+ "@helia/dag-cbor": "3.0.0-31cdfa8",
146
+ "@helia/dag-json": "3.0.0-31cdfa8",
147
+ "@helia/http": "1.0.1-31cdfa8",
148
+ "@helia/interface": "4.0.0-31cdfa8",
149
+ "@helia/ipns": "6.0.0-31cdfa8",
150
+ "@helia/json": "3.0.0-31cdfa8",
151
+ "@helia/routers": "1.0.0-31cdfa8",
152
+ "@helia/unixfs": "3.0.0-31cdfa8",
153
+ "@ipld/dag-cbor": "^9.1.0",
154
+ "@ipld/dag-json": "^10.1.7",
155
+ "@ipld/dag-pb": "^4.0.8",
156
+ "@libp2p/interface": "^1.1.2",
157
+ "@libp2p/peer-id": "^4.0.5",
158
+ "hashlru": "^2.3.0",
159
+ "ipfs-unixfs-exporter": "^13.5.0",
160
+ "multiformats": "^13.0.1",
161
+ "progress-events": "^1.0.0"
162
+ },
163
+ "devDependencies": {
164
+ "@helia/utils": "0.0.1-31cdfa8",
165
+ "@libp2p/logger": "^4.0.5",
166
+ "@libp2p/peer-id-factory": "^4.0.5",
167
+ "@sgtpooki/file-type": "^1.0.1",
168
+ "@types/sinon": "^17.0.3",
169
+ "aegir": "^42.2.2",
170
+ "blockstore-core": "^4.4.0",
171
+ "datastore-core": "^9.2.8",
172
+ "helia": "4.0.1-31cdfa8",
173
+ "it-last": "^3.0.4",
174
+ "magic-bytes.js": "^1.8.0",
175
+ "sinon": "^17.0.1",
176
+ "sinon-ts": "^2.0.0",
177
+ "uint8arrays": "^5.0.1"
178
+ },
179
+ "sideEffects": false
180
+ }