@helia/verified-fetch 7.0.1 → 7.0.3

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.
@@ -1,5 +1,6 @@
1
1
  export declare const CODEC_IDENTITY = 0;
2
2
  export declare const CODEC_CBOR = 81;
3
+ export declare const CODEC_LIBP2P_KEY = 114;
3
4
  export declare const SESSION_CACHE_MAX_SIZE = 100;
4
5
  export declare const SESSION_CACHE_TTL_MS: number;
5
6
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,IAAO,CAAA;AAClC,eAAO,MAAM,UAAU,KAAO,CAAA;AAE9B,eAAO,MAAM,sBAAsB,MAAM,CAAA;AACzC,eAAO,MAAM,oBAAoB,QAAY,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,IAAO,CAAA;AAClC,eAAO,MAAM,UAAU,KAAO,CAAA;AAC9B,eAAO,MAAM,gBAAgB,MAAO,CAAA;AAEpC,eAAO,MAAM,sBAAsB,MAAM,CAAA;AACzC,eAAO,MAAM,oBAAoB,QAAY,CAAA"}
@@ -1,5 +1,6 @@
1
1
  export const CODEC_IDENTITY = 0x00;
2
2
  export const CODEC_CBOR = 0x51;
3
+ export const CODEC_LIBP2P_KEY = 0x72;
3
4
  export const SESSION_CACHE_MAX_SIZE = 100;
4
5
  export const SESSION_CACHE_TTL_MS = 60 * 1000;
5
6
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAA;AAClC,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAA;AAE9B,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAA;AACzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,CAAA"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAA;AAClC,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAA;AAC9B,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAA;AAEpC,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAA;AACzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"url-resolver.d.ts","sourceRoot":"","sources":["../../src/url-resolver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAKtC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAC1G,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,OAAO,KAAK,EAAE,KAAK,EAAsC,MAAM,OAAO,CAAA;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,sBAAsB,CAAA;AASlE,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,GAAG,EAAE,CAAA;IAChB,eAAe,EAAE,SAAS,CAAA;IAC1B,UAAU,EAAE,UAAU,CAAA;IACtB,UAAU,EAAE,OAAO,CAAA;CACpB;AAcD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,KAAK,CAAA;IACZ,YAAY,EAAE,YAAY,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,qBAAa,WAAY,YAAW,oBAAoB;IACtD,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAClD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqC;gBAE3D,UAAU,EAAE,qBAAqB,EAAE,IAAI,GAAE,eAAoB;IAapE,OAAO,CAAE,GAAG,EAAE,GAAG,EAAE,YAAY,GAAE,YAAiC,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,GAAG,QAAQ,CAAC;YAgBlI,aAAa;YAmCb,cAAc;YAuCd,eAAe;YAuBf,eAAe;YAef,QAAQ;CAgFvB"}
1
+ {"version":3,"file":"url-resolver.d.ts","sourceRoot":"","sources":["../../src/url-resolver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAKtC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAC1G,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,OAAO,KAAK,EAAE,KAAK,EAAsC,MAAM,OAAO,CAAA;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,sBAAsB,CAAA;AASlE,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,GAAG,EAAE,CAAA;IAChB,eAAe,EAAE,SAAS,CAAA;IAC1B,UAAU,EAAE,UAAU,CAAA;IACtB,UAAU,EAAE,OAAO,CAAA;CACpB;AAcD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,KAAK,CAAA;IACZ,YAAY,EAAE,YAAY,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,qBAAa,WAAY,YAAW,oBAAoB;IACtD,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAClD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqC;gBAE3D,UAAU,EAAE,qBAAqB,EAAE,IAAI,GAAE,eAAoB;IAapE,OAAO,CAAE,GAAG,EAAE,GAAG,EAAE,YAAY,GAAE,YAAiC,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,GAAG,QAAQ,CAAC;YAgBlI,aAAa;YAmCb,cAAc;YAoCd,eAAe;YAoBf,eAAe;YA8Bf,QAAQ;CAgFvB"}
@@ -1,11 +1,11 @@
1
1
  import { DoesNotExistError } from '@helia/unixfs/errors';
2
- import { peerIdFromString } from '@libp2p/peer-id';
2
+ import { peerIdFromCID, peerIdFromString } from '@libp2p/peer-id';
3
3
  import { exporter, InvalidParametersError, walkPath } from 'ipfs-unixfs-exporter';
4
4
  import toBuffer from 'it-to-buffer';
5
5
  import { CID } from 'multiformats/cid';
6
6
  import QuickLRU from 'quick-lru';
7
7
  import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
8
- import { SESSION_CACHE_MAX_SIZE, SESSION_CACHE_TTL_MS } from "./constants.js";
8
+ import { CODEC_LIBP2P_KEY, SESSION_CACHE_MAX_SIZE, SESSION_CACHE_TTL_MS } from "./constants.js";
9
9
  import { applyRedirects } from "./utils/apply-redirect.js";
10
10
  import { ServerTiming } from "./utils/server-timing.js";
11
11
  // 1 year in seconds for ipfs content
@@ -81,24 +81,22 @@ export class URLResolver {
81
81
  if (result == null) {
82
82
  throw new TypeError(`Invalid resource. Cannot resolve DNSLink from domain: ${url.hostname}`);
83
83
  }
84
- if (result.path != null && (url.pathname !== '' && url.pathname !== '/')) {
85
- // path conflict?
86
- }
87
84
  let resolveResult;
85
+ const path = normalizePath(`${result.path}/${url.pathname}`);
88
86
  if (result.namespace === 'ipns') {
89
87
  // dnslink resolved to IPNS name
90
- const ipnsUrl = new URL(`ipns://${result.peerId.toCID()}${url.pathname}`);
88
+ const ipnsUrl = new URL(`ipns://${result.peerId}${path}`);
91
89
  resolveResult = await this.resolveIPNSName(ipnsUrl, serverTiming, options);
92
90
  }
93
91
  else if (result.namespace === 'ipfs') {
94
92
  // dnslink resolved to CID
95
- const ipfsUrl = new URL(`ipfs://${result.cid}/${url.pathname}`);
93
+ const ipfsUrl = new URL(`ipfs://${result.cid}${path}`);
96
94
  resolveResult = await this.resolveIPFSPath(ipfsUrl, serverTiming, options);
97
95
  }
98
96
  else {
99
97
  // @ts-expect-error @helia/dnslink follows recursive DNSLink records so
100
98
  // result namespace should only be ipns or ipfs
101
- throw new TypeError(`Invalid resource. Unexpected DNSLink namespace ${result.namespace} from domain: ${domain}`);
99
+ throw new TypeError(`Invalid resource. Unexpected DNSLink namespace ${result.namespace} from domain: ${url.hostname}`);
102
100
  }
103
101
  if (resolveResult instanceof Response) {
104
102
  return resolveResult;
@@ -112,10 +110,8 @@ export class URLResolver {
112
110
  async resolveIPNSName(url, serverTiming, options) {
113
111
  const peerId = peerIdFromString(url.hostname);
114
112
  const result = await serverTiming.time('ipns.resolve', `Resolve IPNS name ${peerId}`, this.components.ipnsResolver.resolve(peerId, options));
115
- if (result.path != null && (url.pathname !== '' && url.pathname !== '/')) {
116
- // path conflict?
117
- }
118
- const ipfsUrl = new URL(`ipfs://${result.cid}/${url.pathname}`);
113
+ const path = normalizePath(`${result.path ?? ''}/${url.pathname}`);
114
+ const ipfsUrl = new URL(`ipfs://${result.cid}${path}`);
119
115
  const ipfsResult = await this.resolveIPFSPath(ipfsUrl, serverTiming, options);
120
116
  if (ipfsResult instanceof Response) {
121
117
  return ipfsResult;
@@ -132,6 +128,18 @@ export class URLResolver {
132
128
  if (walkPathResult instanceof Response) {
133
129
  return walkPathResult;
134
130
  }
131
+ if (walkPathResult.terminalElement.cid.code === CODEC_LIBP2P_KEY) {
132
+ // special case, peer id encoded as libp2p key CID - interpret as IPNS
133
+ const ipnsUrl = new URL(`ipns://${peerIdFromCID(walkPathResult.terminalElement.cid)}`);
134
+ const ipnsResult = await this.resolveIPNSName(ipnsUrl, serverTiming, options);
135
+ if (ipnsResult instanceof Response) {
136
+ return ipnsResult;
137
+ }
138
+ return {
139
+ ...ipnsResult,
140
+ url
141
+ };
142
+ }
135
143
  return {
136
144
  ...walkPathResult,
137
145
  url,
@@ -215,4 +223,24 @@ export class URLResolver {
215
223
  function toIPFSPath(url) {
216
224
  return `/ipfs/${url.hostname}${decodeURI(url.pathname)}`;
217
225
  }
226
+ /**
227
+ * E.g.
228
+ *
229
+ * `''` -> `''`
230
+ * `'/'` -> `''`
231
+ * `'///'` -> `''`
232
+ * `'/foo/bar/'` -> `'/foo/bar'`
233
+ * `'foo/bar'` -> `'/foo/bar'`
234
+ * etc
235
+ */
236
+ function normalizePath(path) {
237
+ path = path.split('/')
238
+ .map(s => s.trim())
239
+ .filter(Boolean)
240
+ .join('/');
241
+ if (path !== '') {
242
+ return `/${path}`;
243
+ }
244
+ return '';
245
+ }
218
246
  //# sourceMappingURL=url-resolver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"url-resolver.js","sourceRoot":"","sources":["../../src/url-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"url-resolver.js","sourceRoot":"","sources":["../../src/url-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACjE,OAAO,EAAE,QAAQ,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AACjF,OAAO,QAAQ,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,QAAQ,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAC/F,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AASvD,qCAAqC;AACrC,MAAM,gBAAgB,GAAG,QAAQ,CAAA;AAajC,SAAS,UAAU,CAAE,GAAQ;IAC3B,OAAO;QACL,GAAG;QACH,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE;QACpB,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE;QACpB,KAAK,EAAE;YACL,GAAG;SACJ;QACD,SAAS,EAAE,EAAE;KACd,CAAA;AACH,CAAC;AAaD,MAAM,OAAO,WAAW;IACd,GAAG,CAAQ;IACF,UAAU,CAAuB;IACjC,kBAAkB,CAAqC;IAExE,YAAa,UAAiC,EAAE,OAAwB,EAAE;QACxE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAE5B,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,mCAAmC,CAAC,CAAA;QACpF,IAAI,CAAC,kBAAkB,GAAG,IAAI,QAAQ,CAAC;YACrC,OAAO,EAAE,IAAI,CAAC,gBAAgB,IAAI,sBAAsB;YACxD,MAAM,EAAE,IAAI,CAAC,YAAY,IAAI,oBAAoB;YACjD,UAAU,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;gBACzB,KAAK,CAAC,KAAK,EAAE,CAAA;YACf,CAAC;SACF,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAE,GAAQ,EAAE,eAA6B,IAAI,YAAY,EAAE,EAAE,UAA6B,EAAE;QACvG,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;QACzD,CAAC;QAED,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;QACzD,CAAC;QAED,IAAI,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;QACxD,CAAC;QAED,MAAM,IAAI,sBAAsB,CAAC,oFAAoF,GAAG,EAAE,CAAC,CAAA;IAC7H,CAAC;IAEO,KAAK,CAAC,aAAa,CAAE,IAAS,EAAE,UAAgC,EAAE;QACxE,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAA;QACzC,CAAC;QAED,MAAM,GAAG,GAAG,QAAQ,IAAI,EAAE,CAAA;QAC1B,IAAI,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC9C,IAAI,cAAc,GAAG,KAAK,CAAA;QAE1B,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC,sDAAsD,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;YACtG,cAAc,GAAG,IAAI,CAAA;YACrB,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YACvE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAC3C,CAAC;QAED,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjF,IAAI,CAAC,GAAG,CAAC,qDAAqD,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAE/F,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAC3B,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE;oBACjC,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;gBACtC,CAAC,CAAC,IAAI,EAAE,CACT,CAAA;gBAED,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,CAAA;YAChC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAA;YACjD,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAEO,KAAK,CAAC,cAAc,CAAE,GAAQ,EAAE,YAA0B,EAAE,OAA2B;QAC7F,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,mBAAmB,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;QACrJ,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;QAE3B,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,SAAS,CAAC,yDAAyD,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC9F,CAAC;QAED,IAAI,aAA0C,CAAA;QAC9C,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;QAE5D,IAAI,MAAM,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YAChC,gCAAgC;YAChC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAA;YACzD,aAAa,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;QAC5E,CAAC;aAAM,IAAI,MAAM,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YACvC,0BAA0B;YAC1B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,MAAM,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,CAAA;YACtD,aAAa,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;QAC5E,CAAC;aAAM,CAAC;YACN,uEAAuE;YACvE,+CAA+C;YAC/C,MAAM,IAAI,SAAS,CAAC,kDAAkD,MAAM,CAAC,SAAS,iBAAiB,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;QACxH,CAAC;QAED,IAAI,aAAa,YAAY,QAAQ,EAAE,CAAC;YACtC,OAAO,aAAa,CAAA;QACtB,CAAC;QAED,OAAO;YACL,GAAG,aAAa;YAChB,GAAG;YACH,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG;SACvB,CAAA;IACH,CAAC;IAEO,KAAK,CAAC,eAAe,CAAE,GAAQ,EAAE,YAA0B,EAAE,OAA2B;QAC9F,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,qBAAqB,MAAM,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;QAC5I,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;QAElE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,MAAM,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,CAAA;QACtD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;QAE7E,IAAI,UAAU,YAAY,QAAQ,EAAE,CAAC;YACnC,OAAO,UAAU,CAAA;QACnB,CAAC;QAED,OAAO;YACL,GAAG,UAAU;YACb,GAAG;YACH,iDAAiD;YACjD,GAAG,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;SACrD,CAAA;IACH,CAAC;IAEO,KAAK,CAAC,eAAe,CAAE,GAAQ,EAAE,YAA0B,EAAE,OAA2B;QAC9F,MAAM,cAAc,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;QAE/F,IAAI,cAAc,YAAY,QAAQ,EAAE,CAAC;YACvC,OAAO,cAAc,CAAA;QACvB,CAAC;QAED,IAAI,cAAc,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YACjE,sEAAsE;YACtE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,aAAa,CAAC,cAAc,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACtF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;YAE7E,IAAI,UAAU,YAAY,QAAQ,EAAE,CAAC;gBACnC,OAAO,UAAU,CAAA;YACnB,CAAC;YAED,OAAO;gBACL,GAAG,UAAU;gBACb,GAAG;aACJ,CAAA;QACH,CAAC;QAED,OAAO;YACL,GAAG,cAAc;YACjB,GAAG;YACH,GAAG,EAAE,gBAAgB;YACrB,UAAU,EAAE,cAAc,CAAC,UAAU;SACtC,CAAA;IACH,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAE,GAAQ,EAAE,UAA6B,EAAE;QAC/D,IAAI,GAAQ,CAAA;QAEZ,IAAI,CAAC;YACH,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,sBAAsB,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAA;QAClE,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAEzD,IAAI,CAAC;YACH,MAAM,SAAS,GAAU,EAAE,CAAA;YAC3B,IAAI,eAAsC,CAAA;YAC1C,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;YAEhC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE;gBACvD,GAAG,OAAO;gBACV,cAAc,EAAE,IAAI;aACrB,CAAC,EAAE,CAAC;gBACH,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBACzB,eAAe,GAAG,KAAK,CAAA;YACzB,CAAC;YAED,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;gBAC5B,MAAM,IAAI,iBAAiB,CAAC,2BAA2B,CAAC,CAAA;YAC1D,CAAC;YAED,OAAO;gBACL,SAAS;gBACT,eAAe;gBACf,UAAU;gBACV,UAAU,EAAE,OAAO,CAAC,UAAU,KAAK,IAAI;aACxC,CAAA;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;gBAChE,qEAAqE;gBACrE,8DAA8D;gBAC9D,qFAAqF;gBAErF,IAAI,cAAuC,CAAA;gBAE3C,IAAI,CAAC;oBACH,cAAc,GAAG,MAAM,QAAQ,CAAC,GAAG,GAAG,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;gBAC3E,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,iCAAiC;oBACjC,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;wBACjC,MAAM,GAAG,CAAA;oBACX,CAAC;gBACH,CAAC;gBAED,IAAI,cAAc,EAAE,IAAI,KAAK,MAAM,IAAI,cAAc,EAAE,IAAI,KAAK,KAAK,EAAE,CAAC;oBACtE,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;oBACrF,MAAM,gBAAgB,GAAG,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;oBAEhE,IAAI,gBAAgB,YAAY,QAAQ,EAAE,CAAC;wBACzC,OAAO,gBAAgB,CAAA;oBACzB,CAAC;yBAAM,IAAI,gBAAgB,YAAY,GAAG,EAAE,CAAC;wBAC3C,kBAAkB;wBAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;4BACrC,GAAG,OAAO;4BACV,UAAU,EAAE,IAAI;yBACjB,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;gBACnC,0BAA0B;gBAC1B,OAAO;oBACL,SAAS,EAAE,CAAC,GAAG,CAAC;oBAChB,eAAe,EAAE,UAAU,CAAC,GAAG,CAAC;oBAChC,UAAU;oBACV,UAAU,EAAE,KAAK;iBAClB,CAAA;YACH,CAAC;YAED,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC;CACF;AAED,SAAS,UAAU,CAAE,GAAQ;IAC3B,OAAO,SAAS,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAA;AAC1D,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,aAAa,CAAE,IAAY;IAClC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;SACnB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAClB,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAA;IAEZ,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QAChB,OAAO,IAAI,IAAI,EAAE,CAAA;IACnB,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@helia/verified-fetch",
3
- "version": "7.0.1",
3
+ "version": "7.0.3",
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",
package/src/constants.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export const CODEC_IDENTITY = 0x00
2
2
  export const CODEC_CBOR = 0x51
3
+ export const CODEC_LIBP2P_KEY = 0x72
3
4
 
4
5
  export const SESSION_CACHE_MAX_SIZE = 100
5
6
  export const SESSION_CACHE_TTL_MS = 60 * 1000
@@ -1,11 +1,11 @@
1
1
  import { DoesNotExistError } from '@helia/unixfs/errors'
2
- import { peerIdFromString } from '@libp2p/peer-id'
2
+ import { peerIdFromCID, peerIdFromString } from '@libp2p/peer-id'
3
3
  import { exporter, InvalidParametersError, walkPath } from 'ipfs-unixfs-exporter'
4
4
  import toBuffer from 'it-to-buffer'
5
5
  import { CID } from 'multiformats/cid'
6
6
  import QuickLRU from 'quick-lru'
7
7
  import { toString as uint8ArrayToString } from 'uint8arrays/to-string'
8
- import { SESSION_CACHE_MAX_SIZE, SESSION_CACHE_TTL_MS } from './constants.ts'
8
+ import { CODEC_LIBP2P_KEY, SESSION_CACHE_MAX_SIZE, SESSION_CACHE_TTL_MS } from './constants.ts'
9
9
  import { applyRedirects } from './utils/apply-redirect.ts'
10
10
  import { ServerTiming } from './utils/server-timing.ts'
11
11
  import type { ResolveURLOptions, ResolveURLResult, URLResolver as URLResolverInterface } from './index.ts'
@@ -130,24 +130,21 @@ export class URLResolver implements URLResolverInterface {
130
130
  throw new TypeError(`Invalid resource. Cannot resolve DNSLink from domain: ${url.hostname}`)
131
131
  }
132
132
 
133
- if (result.path != null && (url.pathname !== '' && url.pathname !== '/')) {
134
- // path conflict?
135
- }
136
-
137
133
  let resolveResult: ResolveURLResult | Response
134
+ const path = normalizePath(`${result.path}/${url.pathname}`)
138
135
 
139
136
  if (result.namespace === 'ipns') {
140
137
  // dnslink resolved to IPNS name
141
- const ipnsUrl = new URL(`ipns://${result.peerId.toCID()}${url.pathname}`)
138
+ const ipnsUrl = new URL(`ipns://${result.peerId}${path}`)
142
139
  resolveResult = await this.resolveIPNSName(ipnsUrl, serverTiming, options)
143
140
  } else if (result.namespace === 'ipfs') {
144
141
  // dnslink resolved to CID
145
- const ipfsUrl = new URL(`ipfs://${result.cid}/${url.pathname}`)
142
+ const ipfsUrl = new URL(`ipfs://${result.cid}${path}`)
146
143
  resolveResult = await this.resolveIPFSPath(ipfsUrl, serverTiming, options)
147
144
  } else {
148
145
  // @ts-expect-error @helia/dnslink follows recursive DNSLink records so
149
146
  // result namespace should only be ipns or ipfs
150
- throw new TypeError(`Invalid resource. Unexpected DNSLink namespace ${result.namespace} from domain: ${domain}`)
147
+ throw new TypeError(`Invalid resource. Unexpected DNSLink namespace ${result.namespace} from domain: ${url.hostname}`)
151
148
  }
152
149
 
153
150
  if (resolveResult instanceof Response) {
@@ -164,12 +161,9 @@ export class URLResolver implements URLResolverInterface {
164
161
  private async resolveIPNSName (url: URL, serverTiming: ServerTiming, options?: ResolveURLOptions): Promise<ResolveURLResult | Response> {
165
162
  const peerId = peerIdFromString(url.hostname)
166
163
  const result = await serverTiming.time('ipns.resolve', `Resolve IPNS name ${peerId}`, this.components.ipnsResolver.resolve(peerId, options))
164
+ const path = normalizePath(`${result.path ?? ''}/${url.pathname}`)
167
165
 
168
- if (result.path != null && (url.pathname !== '' && url.pathname !== '/')) {
169
- // path conflict?
170
- }
171
-
172
- const ipfsUrl = new URL(`ipfs://${result.cid}/${url.pathname}`)
166
+ const ipfsUrl = new URL(`ipfs://${result.cid}${path}`)
173
167
  const ipfsResult = await this.resolveIPFSPath(ipfsUrl, serverTiming, options)
174
168
 
175
169
  if (ipfsResult instanceof Response) {
@@ -191,6 +185,21 @@ export class URLResolver implements URLResolverInterface {
191
185
  return walkPathResult
192
186
  }
193
187
 
188
+ if (walkPathResult.terminalElement.cid.code === CODEC_LIBP2P_KEY) {
189
+ // special case, peer id encoded as libp2p key CID - interpret as IPNS
190
+ const ipnsUrl = new URL(`ipns://${peerIdFromCID(walkPathResult.terminalElement.cid)}`)
191
+ const ipnsResult = await this.resolveIPNSName(ipnsUrl, serverTiming, options)
192
+
193
+ if (ipnsResult instanceof Response) {
194
+ return ipnsResult
195
+ }
196
+
197
+ return {
198
+ ...ipnsResult,
199
+ url
200
+ }
201
+ }
202
+
194
203
  return {
195
204
  ...walkPathResult,
196
205
  url,
@@ -284,3 +293,26 @@ export class URLResolver implements URLResolverInterface {
284
293
  function toIPFSPath (url: URL): string {
285
294
  return `/ipfs/${url.hostname}${decodeURI(url.pathname)}`
286
295
  }
296
+
297
+ /**
298
+ * E.g.
299
+ *
300
+ * `''` -> `''`
301
+ * `'/'` -> `''`
302
+ * `'///'` -> `''`
303
+ * `'/foo/bar/'` -> `'/foo/bar'`
304
+ * `'foo/bar'` -> `'/foo/bar'`
305
+ * etc
306
+ */
307
+ function normalizePath (path: string): string {
308
+ path = path.split('/')
309
+ .map(s => s.trim())
310
+ .filter(Boolean)
311
+ .join('/')
312
+
313
+ if (path !== '') {
314
+ return `/${path}`
315
+ }
316
+
317
+ return ''
318
+ }