(value: string)
| 376 | }; |
| 377 | |
| 378 | const canonicalResource = (value: string): string | null => { |
| 379 | try { |
| 380 | const url = new URL(value); |
| 381 | return `${url.protocol.toLowerCase()}//${url.host.toLowerCase()}${url.pathname.replace(/\/+$/, "")}`; |
| 382 | } catch { |
| 383 | return null; |
| 384 | } |
| 385 | }; |
| 386 | |
| 387 | const resourceMatchesEndpoint = (resource: string, endpoint: string): boolean => { |
| 388 | const actual = canonicalResource(resource); |
no test coverage detected