diff --git a/src/EnumOrString.ts b/src/EnumOrString.ts deleted file mode 100644 index 43a038e3..00000000 --- a/src/EnumOrString.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * A TypeScript utility type which creates a union of an enum member and its string representation. - * - * @remarks - * Allows interfaces to support both enums and strings. - * - * @public - */ -export type EnumOrString = T | `${T}`; diff --git a/src/Environment.ts b/src/Environment.ts index f34e58fc..ce4be59e 100644 --- a/src/Environment.ts +++ b/src/Environment.ts @@ -1,18 +1,3 @@ -import { EnumOrString } from './EnumOrString'; -/** - * An enum for the Yext Environments - * - * @remarks - * Affects the domain the requests are sent to. - * - * @public - */ -export enum EnvironmentEnum { - Production = 'PRODUCTION', - /** unsupported in the EU region */ - Sandbox = 'SANDBOX' -} - /** * The Yext Environments * @@ -21,4 +6,4 @@ export enum EnvironmentEnum { * * @public */ -export type Environment = EnumOrString; +export type Environment = 'PRODUCTION' | 'SANDBOX'; diff --git a/src/Region.ts b/src/Region.ts index 5cfde3f8..33bcfbbf 100644 --- a/src/Region.ts +++ b/src/Region.ts @@ -1,17 +1,3 @@ -import { EnumOrString } from './EnumOrString'; -/** - * An enum of the physical region the Yext account - * - * @remarks - * Affects the domain the requests are sent to. - * - * @public - */ -export enum RegionEnum { - US = 'us', - EU = 'eu' -} - /** * The physical region of the Yext account * @@ -20,4 +6,5 @@ export enum RegionEnum { * * @public */ -export type Region = EnumOrString; + +export type Region = 'US' | 'EU'; diff --git a/src/VersionLabel.ts b/src/VersionLabel.ts index 4cddfd2f..eca5ddac 100644 --- a/src/VersionLabel.ts +++ b/src/VersionLabel.ts @@ -1,5 +1,3 @@ -import { EnumOrString } from './EnumOrString'; - /** * An enum for the Search Version Labels * @@ -8,17 +6,4 @@ import { EnumOrString } from './EnumOrString'; * * @public */ -export enum VersionLabelEnum { - Production = 'PRODUCTION', - Staging = 'STAGING' -} - -/** - * The Search Version Label - * - * @remarks - * Affects the contents of the versionLabel field in the search object field in the event payload. - * - * @public - */ -export type VersionLabel = EnumOrString; +export type VersionLabel = 'PRODUCTION' | 'STAGING'; diff --git a/src/index.ts b/src/index.ts index b2fa8fd2..0edd6cb8 100644 --- a/src/index.ts +++ b/src/index.ts @@ -50,7 +50,6 @@ export * from './AnalyticsEventService'; export * from './Environment'; export * from './Region'; export * from './EventPayload'; -export * from './EnumOrString'; export * from './Action'; export * from './VersionLabel'; diff --git a/src/setupRequestUrl.ts b/src/setupRequestUrl.ts index 8495f80d..585b13b7 100644 --- a/src/setupRequestUrl.ts +++ b/src/setupRequestUrl.ts @@ -1,16 +1,18 @@ -import { Environment, EnvironmentEnum } from './Environment'; -import { Region, RegionEnum } from './Region'; +import { Environment } from './Environment'; +import { Region } from './Region'; const urlBase = 'yextevents.com/accounts/me/events'; export function setupRequestUrl(env?: Environment, region?: Region): string { - if (env === EnvironmentEnum.Sandbox && region === RegionEnum.EU) { + const isSandbox = env === 'SANDBOX'; + const lowerRegion = region?.toLowerCase(); + if (isSandbox && lowerRegion === 'eu') { throw new Error('Sandbox environment is not available in the EU region.'); } return ( 'https://' + - (env === EnvironmentEnum.Sandbox ? 'sbx.' : '') + - (region ?? 'us') + + (isSandbox ? 'sbx.' : '') + + (lowerRegion ?? 'us') + '.' + urlBase ); diff --git a/test-cdn/index.html b/test-cdn/index.html index 457a3532..8a992e35 100644 --- a/test-cdn/index.html +++ b/test-cdn/index.html @@ -13,7 +13,7 @@ const analyticsProvider = window.AnalyticsSDK.analytics({ key: '', sessionTrackingEnabled: false, - region: 'eu' + region: 'EU' }).with({ action: 'CHAT_LINK_CLICK', pageUrl: 'http://www.yext-test-pageurl.com', diff --git a/tests/AnalyticsEventReporter.test.ts b/tests/AnalyticsEventReporter.test.ts index 1f88fba6..5647c593 100644 --- a/tests/AnalyticsEventReporter.test.ts +++ b/tests/AnalyticsEventReporter.test.ts @@ -1,8 +1,6 @@ import { AnalyticsConfig } from '../src/AnalyticsConfig'; import { AnalyticsEventReporter } from '../src/AnalyticsEventReporter'; -import { RegionEnum } from '../src/Region'; import { postWithBeacon, postWithFetch, useBeacon } from '../src/post'; -import { EnvironmentEnum } from '../src/Environment'; import { getOrSetupSessionId } from '../src/setupSessionId'; import { AnalyticsEventService } from '../src/AnalyticsEventService'; @@ -96,7 +94,7 @@ describe('Test report function', () => { const config: AnalyticsConfig = { authorizationType: 'apiKey', authorization: 'validKey', - region: RegionEnum.EU, + region: 'EU', forceFetch: false }; const reporter = new AnalyticsEventReporter(config).with({ @@ -139,7 +137,7 @@ describe('Test report function', () => { const config: AnalyticsConfig = { authorizationType: 'bearer', authorization: 'bearerToken', - env: EnvironmentEnum.Sandbox + env: 'SANDBOX' }; const reporter = new AnalyticsEventReporter(config).with({ action: 'c_lowercase_custom_action', @@ -354,7 +352,7 @@ describe('Test report function', () => { const config: AnalyticsConfig = { authorizationType: 'apiKey', authorization: 'validKey', - region: RegionEnum.EU, + region: 'EU', forceFetch: false }; const reporter = new AnalyticsEventReporter(config).with({ @@ -400,7 +398,7 @@ describe('Test report function', () => { const config: AnalyticsConfig = { authorizationType: 'apiKey', authorization: 'validKey', - region: RegionEnum.EU, + region: 'EU', forceFetch: false }; @@ -448,7 +446,7 @@ describe('Test report function', () => { const config: AnalyticsConfig = { authorizationType: 'apiKey', authorization: 'validKey', - region: RegionEnum.EU, + region: 'EU', forceFetch: true }; @@ -486,7 +484,7 @@ describe('Test report function', () => { const config: AnalyticsConfig = { authorizationType: 'apiKey', authorization: 'validKey', - region: RegionEnum.EU, + region: 'EU', forceFetch: false }; @@ -525,7 +523,7 @@ describe('Test report function', () => { const config: AnalyticsConfig = { authorizationType: 'apiKey', authorization: 'validKey', - region: RegionEnum.EU, + region: 'EU', forceFetch: false }; @@ -601,7 +599,7 @@ describe('Test report function', () => { const config: AnalyticsConfig = { authorizationType: 'apiKey', authorization: 'validKey', - region: RegionEnum.EU, + region: 'EU', forceFetch: false, sessionTrackingEnabled: true }; @@ -657,7 +655,7 @@ describe('Test report function', () => { }, searchTerm: 'searchTerm', sessionId: 'sessionId', - sites: { + pages: { siteUid: 321, template: 'template' }, @@ -736,7 +734,7 @@ describe('Test report function', () => { }, searchTerm: 'searchTerm', sessionId: 'sessionId', - sites: { + pages: { siteUid: 321, template: 'template' }, diff --git a/tests/setupRequestUrl.test.ts b/tests/setupRequestUrl.test.ts index 9534f25c..75b641c6 100644 --- a/tests/setupRequestUrl.test.ts +++ b/tests/setupRequestUrl.test.ts @@ -1,71 +1,30 @@ -import { EnvironmentEnum } from '../src/Environment'; -import { RegionEnum } from '../src/Region'; import { setupRequestUrl } from '../src/setupRequestUrl'; describe('setUpRequestUrl Test', () => { - it('should set url correctly for env: prod, region: us using their Enums', () => { - const resultUrl = setupRequestUrl( - EnvironmentEnum.Production, - RegionEnum.US - ); + it('should set url correctly for env: prod, region: US', () => { + const resultUrl = setupRequestUrl('PRODUCTION', 'US'); const expectedUrl = 'https://us.yextevents.com/accounts/me/events'; expect(resultUrl).toEqual(expectedUrl); }); - it('should set url correctly for env: prod, region: us using their string literals', () => { - const resultUrl = setupRequestUrl('PRODUCTION', 'us'); - const expectedUrl = 'https://us.yextevents.com/accounts/me/events'; - - expect(resultUrl).toEqual(expectedUrl); - }); - - it('should set url correctly for env: prod, region: eu using their Enums', () => { - const resultUrl = setupRequestUrl( - EnvironmentEnum.Production, - RegionEnum.EU - ); - const expectedUrl = 'https://eu.yextevents.com/accounts/me/events'; - - expect(resultUrl).toEqual(expectedUrl); - }); - - it('should set url correctly for env: prod, region: eu using their string literals', () => { - const resultUrl = setupRequestUrl('PRODUCTION', 'eu'); + it('should set url correctly for env: prod, region: EU', () => { + const resultUrl = setupRequestUrl('PRODUCTION', 'EU'); const expectedUrl = 'https://eu.yextevents.com/accounts/me/events'; expect(resultUrl).toEqual(expectedUrl); }); - it('should set url correctly for env: sbx, region: us using their Enums', () => { - const resultUrl = setupRequestUrl(EnvironmentEnum.Sandbox, RegionEnum.US); + it('should set url correctly for env: sbx, region: US', () => { + const resultUrl = setupRequestUrl('SANDBOX', 'US'); const expectedUrl = 'https://sbx.us.yextevents.com/accounts/me/events'; expect(resultUrl).toEqual(expectedUrl); }); - it('should set url correctly for env: sbx, region: us using their string literals', () => { - const resultUrl = setupRequestUrl('SANDBOX', 'us'); - const expectedUrl = 'https://sbx.us.yextevents.com/accounts/me/events'; - - expect(resultUrl).toEqual(expectedUrl); - }); - - it('should throw error for env: sbx, region: eu using their Enums', () => { + it('should throw error for env: sbx, region: EU', () => { try { - setupRequestUrl(EnvironmentEnum.Sandbox, RegionEnum.EU); - // Fail test if above expression doesn't throw anything. - expect(true).toBe(false); - } catch (e) { - expect(e.message).toBe( - 'Sandbox environment is not available in the EU region.' - ); - } - }); - - it('should throw error for env: sbx, region: eu using their string literals', () => { - try { - setupRequestUrl('SANDBOX', 'eu'); + setupRequestUrl('SANDBOX', 'EU'); // Fail test if above expression doesn't throw anything. expect(true).toBe(false); } catch (e) { @@ -82,28 +41,14 @@ describe('setUpRequestUrl Test', () => { expect(resultUrl).toEqual(expectedUrl); }); - it('should set url correctly with no env argument passed in using its Enum', () => { - const resultUrl = setupRequestUrl(undefined, RegionEnum.EU); + it('should set url correctly with no env argument passed in', () => { + const resultUrl = setupRequestUrl(undefined, 'EU'); const expectedUrl = 'https://eu.yextevents.com/accounts/me/events'; expect(resultUrl).toEqual(expectedUrl); }); - it('should set url correctly with no env argument passed in using their string literals', () => { - const resultUrl = setupRequestUrl(undefined, 'eu'); - const expectedUrl = 'https://eu.yextevents.com/accounts/me/events'; - - expect(resultUrl).toEqual(expectedUrl); - }); - - it('should set url correctly with no region argument passed in using its Enum', () => { - const resultUrl = setupRequestUrl(EnvironmentEnum.Sandbox, undefined); - const expectedUrl = 'https://sbx.us.yextevents.com/accounts/me/events'; - - expect(resultUrl).toEqual(expectedUrl); - }); - - it('should set url correctly with no region argument passed in using their string literals', () => { + it('should set url correctly with no region argument passed in', () => { const resultUrl = setupRequestUrl('SANDBOX', undefined); const expectedUrl = 'https://sbx.us.yextevents.com/accounts/me/events';