@forge/cli

14.1.0-next.1-experimental-13c2f8d14.1.0-next.21-experimental-554d417
out/installations/site-translation/bitbucket.js
~out/installations/site-translation/bitbucket.jsModified
+10−2
Index: package/out/installations/site-translation/bitbucket.js
===================================================================
--- package/out/installations/site-translation/bitbucket.js
+++ package/out/installations/site-translation/bitbucket.js
@@ -41,9 +41,9 @@
         });
         return workspaceAriToHostname;
     }
     async getWorkspaceId(site) {
-        const workspaceName = this.extractWorkspaceName(site);
+        const workspaceName = BitbucketTranslator.extractWorkspaceName(site);
         const url = this.buildFetchUrl(workspaceName);
         const res = await fetch(url);
         if (!res.ok) {
             throw new InvalidWorkspaceError(site);
@@ -87,9 +87,17 @@
     buildFetchUrl(workspaceNameOrId) {
         const urlObj = new url_1.URL(`${(0, exports.getBitbucketEndpoint)()}/2.0/workspaces/${workspaceNameOrId}`);
         return urlObj.toString();
     }
-    extractWorkspaceName(workspaceURL) {
+    static normalizeWorkspaceInput(input) {
+        const trimmed = input.trim();
+        if (trimmed.toLowerCase().includes(BITBUCKET_URL.hostname)) {
+            return trimmed;
+        }
+        const slug = trimmed.replace(/^https?:\/\//i, '').replace(/(?:^\/+)|(?:\/+$)/g, '');
+        return `${BITBUCKET_URL.origin}/${slug}`;
+    }
+    static extractWorkspaceName(workspaceURL) {
         if (workspaceURL.hostname !== BITBUCKET_URL.hostname) {
             throw new InvalidWorkspaceError(workspaceURL);
         }
         const pathnames = workspaceURL.pathname.substring(1).split('/');