@backstage/integration
Advanced tools
Comparing version 0.0.0-nightly-202121022744 to 0.0.0-nightly-202121122711
# @backstage/integration | ||
## 0.0.0-nightly-202121022744 | ||
## 0.0.0-nightly-202121122711 | ||
@@ -11,2 +11,3 @@ ### Patch Changes | ||
a file in the web interfaces of an SCM. | ||
- d4e77ec5f: Add option to `resolveUrl` that allows for linking to a specific line number when resolving a file URL. | ||
@@ -13,0 +14,0 @@ ## 0.5.0 |
@@ -44,3 +44,3 @@ 'use strict'; | ||
function defaultScmResolveUrl(options) { | ||
const {url, base} = options; | ||
const {url, base, lineNumber} = options; | ||
try { | ||
@@ -61,2 +61,5 @@ new URL(url); | ||
updated.search = new URL(base).search; | ||
if (lineNumber) { | ||
updated.hash = `L${lineNumber}`; | ||
} | ||
return updated.toString(); | ||
@@ -111,2 +114,8 @@ } | ||
newUrl.searchParams.set("path", updatedPath); | ||
if (options.lineNumber) { | ||
newUrl.searchParams.set("line", String(options.lineNumber)); | ||
newUrl.searchParams.set("lineEnd", String(options.lineNumber + 1)); | ||
newUrl.searchParams.set("lineStartColumn", "1"); | ||
newUrl.searchParams.set("lineEndColumn", "1"); | ||
} | ||
return newUrl.toString(); | ||
@@ -269,3 +278,10 @@ } | ||
resolveUrl(options) { | ||
return defaultScmResolveUrl(options); | ||
const resolved = defaultScmResolveUrl(options); | ||
if (options.lineNumber) { | ||
const url = new URL(resolved); | ||
const filename = url.pathname.split("/").slice(-1)[0]; | ||
url.hash = `${filename}-${options.lineNumber}`; | ||
return url.toString(); | ||
} | ||
return resolved; | ||
} | ||
@@ -272,0 +288,0 @@ resolveEditUrl(url) { |
@@ -64,2 +64,3 @@ import { Config } from '@backstage/config'; | ||
base: string; | ||
lineNumber?: number; | ||
}): string; | ||
@@ -161,2 +162,3 @@ resolveEditUrl(url: string): string; | ||
base: string; | ||
lineNumber?: number; | ||
}): string; | ||
@@ -219,2 +221,3 @@ resolveEditUrl(url: string): string; | ||
base: string; | ||
lineNumber?: number; | ||
}): string; | ||
@@ -251,2 +254,3 @@ resolveEditUrl(url: string): string; | ||
* @param options.base The base URL onto which this resolution happens | ||
* @param options.lineNumber The line number in the target file to link to, starting with 1. Only applicable when linking to files. | ||
*/ | ||
@@ -256,2 +260,3 @@ resolveUrl(options: { | ||
base: string; | ||
lineNumber?: number; | ||
}): string; | ||
@@ -314,2 +319,3 @@ /** | ||
* @param options.base The base URL onto which this resolution happens | ||
* @param options.lineNumber The line number in the target file to link to, starting with 1. Only applicable when linking to files. | ||
*/ | ||
@@ -319,2 +325,3 @@ resolveUrl(options: { | ||
base: string; | ||
lineNumber?: number; | ||
}): string; | ||
@@ -379,2 +386,3 @@ /** | ||
base: string; | ||
lineNumber?: number; | ||
}): string; | ||
@@ -523,2 +531,3 @@ resolveEditUrl(url: string): string; | ||
base: string; | ||
lineNumber?: number; | ||
}): string; | ||
@@ -546,2 +555,3 @@ | ||
base: string; | ||
lineNumber?: number; | ||
}): string; | ||
@@ -548,0 +558,0 @@ resolveEditUrl(url: string): string; |
@@ -35,3 +35,3 @@ import parseGitUrl from 'git-url-parse'; | ||
function defaultScmResolveUrl(options) { | ||
const {url, base} = options; | ||
const {url, base, lineNumber} = options; | ||
try { | ||
@@ -52,2 +52,5 @@ new URL(url); | ||
updated.search = new URL(base).search; | ||
if (lineNumber) { | ||
updated.hash = `L${lineNumber}`; | ||
} | ||
return updated.toString(); | ||
@@ -102,2 +105,8 @@ } | ||
newUrl.searchParams.set("path", updatedPath); | ||
if (options.lineNumber) { | ||
newUrl.searchParams.set("line", String(options.lineNumber)); | ||
newUrl.searchParams.set("lineEnd", String(options.lineNumber + 1)); | ||
newUrl.searchParams.set("lineStartColumn", "1"); | ||
newUrl.searchParams.set("lineEndColumn", "1"); | ||
} | ||
return newUrl.toString(); | ||
@@ -260,3 +269,10 @@ } | ||
resolveUrl(options) { | ||
return defaultScmResolveUrl(options); | ||
const resolved = defaultScmResolveUrl(options); | ||
if (options.lineNumber) { | ||
const url = new URL(resolved); | ||
const filename = url.pathname.split("/").slice(-1)[0]; | ||
url.hash = `${filename}-${options.lineNumber}`; | ||
return url.toString(); | ||
} | ||
return resolved; | ||
} | ||
@@ -263,0 +279,0 @@ resolveEditUrl(url) { |
{ | ||
"name": "@backstage/integration", | ||
"version": "0.0.0-nightly-202121022744", | ||
"version": "0.0.0-nightly-202121122711", | ||
"main": "dist/index.cjs.js", | ||
@@ -40,3 +40,3 @@ "types": "dist/index.d.ts", | ||
"devDependencies": { | ||
"@backstage/cli": "^0.0.0-nightly-202121022744", | ||
"@backstage/cli": "^0.0.0-nightly-202121122711", | ||
"@backstage/config-loader": "^0.5.1", | ||
@@ -43,0 +43,0 @@ "@backstage/test-utils": "^0.1.7", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
230752
2288