From 9d1fdcb7fbf54f864a344f9e0878d76221f64c3a Mon Sep 17 00:00:00 2001 From: Segev Finer Date: Mon, 19 Aug 2024 19:18:59 +0300 Subject: [PATCH 1/4] Allow a custom path in Firebase functions custom domain --- packages/functions/src/service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/functions/src/service.ts b/packages/functions/src/service.ts index b70a5b1fe57..e87c27d6e1c 100644 --- a/packages/functions/src/service.ts +++ b/packages/functions/src/service.ts @@ -122,7 +122,7 @@ export class FunctionsService implements _FirebaseService { // Resolve the region or custom domain overload by attempting to parse it. try { const url = new URL(regionOrCustomDomain); - this.customDomain = url.origin; + this.customDomain = url.origin + url.pathname; this.region = DEFAULT_REGION; } catch (e) { this.customDomain = null; From df7d718ccec51b99852add9c34f87006d30bb8fa Mon Sep 17 00:00:00 2001 From: Segev Finer Date: Mon, 19 Aug 2024 19:22:57 +0300 Subject: [PATCH 2/4] Add a test --- packages/functions/src/service.test.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/functions/src/service.test.ts b/packages/functions/src/service.test.ts index 1a43b32136f..bb29f9025fe 100644 --- a/packages/functions/src/service.test.ts +++ b/packages/functions/src/service.test.ts @@ -70,6 +70,11 @@ describe('Firebase Functions > Service', () => { assert.equal(service._url('foo'), 'https://mydomain.com/foo'); }); + it('correctly sets custom domain with path', () => { + service = createTestService(app, 'https://mydomain.com/functions'); + assert.equal(service._url('foo'), 'https://mydomain.com/functions/foo'); + }); + it('prefers emulator to custom domain', () => { const service = createTestService(app, 'https://mydomain.com'); connectFunctionsEmulator(service, 'localhost', 5005); From fc0968d49bd439c09d105621d4da173c2c877a4d Mon Sep 17 00:00:00 2001 From: Segev Finer Date: Mon, 19 Aug 2024 19:29:38 +0300 Subject: [PATCH 3/4] Add changeset --- .changeset/dull-nails-kneel.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/dull-nails-kneel.md diff --git a/.changeset/dull-nails-kneel.md b/.changeset/dull-nails-kneel.md new file mode 100644 index 00000000000..09403953549 --- /dev/null +++ b/.changeset/dull-nails-kneel.md @@ -0,0 +1,5 @@ +--- +'@firebase/functions': patch +--- + +Allow a custom path in Firebase functions custom domain From 1eeb5354ab7b1e4141b8a6473846e2a5ea0dd2c6 Mon Sep 17 00:00:00 2001 From: Segev Finer Date: Tue, 20 Aug 2024 00:49:23 +0300 Subject: [PATCH 4/4] Update packages/functions/src/service.ts Co-authored-by: Daniel La Rocque --- packages/functions/src/service.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/functions/src/service.ts b/packages/functions/src/service.ts index e87c27d6e1c..c5fe7fa8a85 100644 --- a/packages/functions/src/service.ts +++ b/packages/functions/src/service.ts @@ -122,7 +122,8 @@ export class FunctionsService implements _FirebaseService { // Resolve the region or custom domain overload by attempting to parse it. try { const url = new URL(regionOrCustomDomain); - this.customDomain = url.origin + url.pathname; + this.customDomain = + url.origin + (url.pathname === '/' ? '' : url.pathname); this.region = DEFAULT_REGION; } catch (e) { this.customDomain = null;