diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fdb0982487..7d430b52a6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -168,10 +168,12 @@ deploy-staging: image: $CI_IMAGE script: - yarn - - TARGET_DATACENTER=eu TARGET_ENV=staging BUILD_MODE=staging yarn build:bundle + - WITH_SUFFIX=true TARGET_DATACENTER=eu BUILD_MODE=staging yarn build:bundle - ./scripts/deploy.sh staging eu - - TARGET_DATACENTER=us TARGET_ENV=staging BUILD_MODE=staging yarn build:bundle + - WITH_SUFFIX=true TARGET_DATACENTER=us BUILD_MODE=staging yarn build:bundle - ./scripts/deploy.sh staging us + - TARGET_DATACENTER=us BUILD_MODE=staging yarn build:bundle + - ./scripts/deploy.sh staging deploy-release: only: @@ -184,10 +186,12 @@ deploy-release: image: $CI_IMAGE script: - yarn - - TARGET_DATACENTER=us TARGET_ENV=production BUILD_MODE=release yarn build:bundle + - WITH_SUFFIX=true TARGET_DATACENTER=us BUILD_MODE=release yarn build:bundle - ./scripts/deploy.sh prod us - - TARGET_DATACENTER=eu TARGET_ENV=production BUILD_MODE=release yarn build:bundle + - WITH_SUFFIX=true TARGET_DATACENTER=eu BUILD_MODE=release yarn build:bundle - ./scripts/deploy.sh prod eu + - TARGET_DATACENTER=us BUILD_MODE=release yarn build:bundle + - ./scripts/deploy.sh prod ######################################################################################################################## # Notify diff --git a/README.md b/README.md index 688103e99d..f2e2ee7fa7 100644 --- a/README.md +++ b/README.md @@ -6,11 +6,11 @@ The browser SDK is used to collect logs and RUM data from the browser. This repository contains several packages: -| Package | npm | size | cdn | doc | -| ------------ | ------------------------ | ------------------------ | ----------------- | ----------------------------------- | -| browser-logs | [![npm version][01]][02] | [![bundle size][03]][04] | [us][05] [eu][06] | [![API][1]][07] [![product][2]][08] | -| browser-rum | [![npm version][11]][12] | [![bundle size][13]][14] | [us][15] [eu][16] | [![API][1]][17] [![product][2]][18] | -| browser-core | [![npm version][21]][22] | [![bundle size][23]][24] | | +| Package | npm | size | cdn | doc | +| ------------ | ------------------------ | ------------------------ | ------------------ | ----------------------------------- | +| browser-logs | [![npm version][01]][02] | [![bundle size][03]][04] | [datadog-logs][05] | [![API][1]][07] [![product][2]][08] | +| browser-rum | [![npm version][11]][12] | [![bundle size][13]][14] | [datadog-rum][15] | [![API][1]][17] [![product][2]][18] | +| browser-core | [![npm version][21]][22] | [![bundle size][23]][24] | | [1]: https://github.githubassets.com/favicons/favicon.png [2]: https://imgix.datadoghq.com/img/favicons/favicon-32x32.png @@ -18,16 +18,14 @@ This repository contains several packages: [02]: https://badge.fury.io/js/%40datadog%2Fbrowser-logs [03]: https://badgen.net/bundlephobia/minzip/@datadog/browser-logs [04]: https://bundlephobia.com/result?p=@datadog/browser-logs -[05]: https://www.datadoghq-browser-agent.com/datadog-logs-us.js -[06]: https://www.datadoghq-browser-agent.com/datadog-logs-eu.js +[05]: https://www.datadoghq-browser-agent.com/datadog-logs.js [07]: ./packages/logs/README.md [08]: https://docs.datadoghq.com/logs/log_collection/javascript/?tab=npm [11]: https://badge.fury.io/js/%40datadog%2Fbrowser-rum.svg [12]: https://badge.fury.io/js/%40datadog%2Fbrowser-rum [13]: https://badgen.net/bundlephobia/minzip/@datadog/browser-rum [14]: https://bundlephobia.com/result?p=@datadog/browser-rum -[15]: https://www.datadoghq-browser-agent.com/datadog-rum-us.js -[16]: https://www.datadoghq-browser-agent.com/datadog-rum-eu.js +[15]: https://www.datadoghq-browser-agent.com/datadog-rum.js [17]: ./packages/rum/README.md [18]: https://docs.datadoghq.com/real_user_monitoring/ [21]: https://badge.fury.io/js/%40datadog%2Fbrowser-core.svg diff --git a/package.json b/package.json index 1e9feff248..c890763140 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "dev": "ENV=development node test/server/server.js", "release": "lerna version --exact", "version": "node ./scripts/generate-changelog.js", - "publish:npm": "TARGET_DATACENTER=us TARGET_ENV=production BUILD_MODE=release yarn build && lerna publish from-package", + "publish:npm": "TARGET_DATACENTER=us BUILD_MODE=release yarn build && lerna publish from-package", "fail": "./scripts/fail.sh", "test": "yarn test:unit", "test:unit": "karma start ./test/unit/karma.local.conf.js", diff --git a/packages/core/src/configuration.ts b/packages/core/src/configuration.ts index 2bcc5fa3d6..f4267df579 100644 --- a/packages/core/src/configuration.ts +++ b/packages/core/src/configuration.ts @@ -1,4 +1,4 @@ -import { BuildEnv, BuildMode, Datacenter, SdkEnv } from './init' +import { BuildEnv, BuildMode, Datacenter, INTAKE_SITE } from './init' import { includes, ONE_KILO_BYTE, ONE_SECOND } from './utils' export const DEFAULT_CONFIGURATION = { @@ -42,7 +42,8 @@ export interface UserConfiguration { isCollectingError?: boolean sampleRate?: number resourceSampleRate?: number - datacenter?: Datacenter + datacenter?: Datacenter // deprecated + site?: string enableExperimentalFeatures?: string[] silentMultipleInit?: boolean trackInteractions?: boolean @@ -87,8 +88,7 @@ interface ReplicaConfiguration { interface TransportConfiguration { clientToken: string - datacenter: Datacenter - sdkEnv: SdkEnv + site: string buildMode: BuildMode sdkVersion: string applicationId?: string @@ -104,12 +104,11 @@ export function buildConfiguration(userConfiguration: UserConfiguration, buildEn applicationId: userConfiguration.applicationId, buildMode: buildEnv.buildMode, clientToken: userConfiguration.clientToken, - datacenter: userConfiguration.datacenter || buildEnv.datacenter, env: userConfiguration.env, proxyHost: userConfiguration.proxyHost, - sdkEnv: buildEnv.sdkEnv, sdkVersion: buildEnv.sdkVersion, service: userConfiguration.service, + site: userConfiguration.site || INTAKE_SITE[userConfiguration.datacenter || buildEnv.datacenter], version: userConfiguration.version, } @@ -164,11 +163,11 @@ export function buildConfiguration(userConfiguration: UserConfiguration, buildEn if (transportConfiguration.buildMode === BuildMode.STAGING) { if (userConfiguration.replica !== undefined) { - const replicaTransportConfiguration = { + const replicaTransportConfiguration: TransportConfiguration = { ...transportConfiguration, applicationId: userConfiguration.replica.applicationId, clientToken: userConfiguration.replica.clientToken, - sdkEnv: SdkEnv.PRODUCTION, + site: INTAKE_SITE[Datacenter.US], } configuration.replica = { applicationId: userConfiguration.replica.applicationId, @@ -187,14 +186,12 @@ export function buildConfiguration(userConfiguration: UserConfiguration, buildEn } function getEndpoint(type: string, conf: TransportConfiguration, source?: string) { - const tld = conf.datacenter === Datacenter.US ? 'com' : 'eu' - const domain = conf.sdkEnv === SdkEnv.PRODUCTION ? `datadoghq.${tld}` : `datad0g.${tld}` const tags = `sdk_version:${conf.sdkVersion}` + `${conf.env ? `,env:${conf.env}` : ''}` + `${conf.service ? `,service:${conf.service}` : ''}` + `${conf.version ? `,version:${conf.version}` : ''}` - const datadogHost = `${type}-http-intake.logs.${domain}` + const datadogHost = `${type}-http-intake.logs.${conf.site}` const host = conf.proxyHost ? conf.proxyHost : datadogHost const proxyParameter = conf.proxyHost ? `ddhost=${datadogHost}&` : '' const applicationIdParameter = conf.applicationId ? `_dd.application_id=${conf.applicationId}&` : '' diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index edaf7fbdaa..6cb7e5661f 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -4,7 +4,6 @@ export { BuildEnv, BuildMode, Datacenter, - SdkEnv, makeStub, makeGlobal, commonInit, diff --git a/packages/core/src/init.ts b/packages/core/src/init.ts index 0cd227aad3..0d89009bc2 100644 --- a/packages/core/src/init.ts +++ b/packages/core/src/init.ts @@ -26,10 +26,12 @@ export enum Datacenter { US = 'us', EU = 'eu', } -export enum SdkEnv { - PRODUCTION = 'production', - STAGING = 'staging', + +export const INTAKE_SITE = { + [Datacenter.EU]: 'datadoghq.eu', + [Datacenter.US]: 'datadoghq.com', } + export enum BuildMode { RELEASE = 'release', STAGING = 'staging', @@ -38,7 +40,6 @@ export enum BuildMode { export interface BuildEnv { datacenter: Datacenter - sdkEnv: SdkEnv buildMode: BuildMode sdkVersion: string } diff --git a/packages/core/test/configuration.spec.ts b/packages/core/test/configuration.spec.ts index 28a63c0ef2..f07574c61d 100644 --- a/packages/core/test/configuration.spec.ts +++ b/packages/core/test/configuration.spec.ts @@ -1,21 +1,20 @@ -import { BuildMode, Datacenter, SdkEnv } from '../src' +import { BuildEnv, BuildMode, Datacenter } from '../src' import { buildConfiguration } from '../src/configuration' describe('configuration', () => { const clientToken = 'some_client_token' - const prodEnv = { + const usEnv: BuildEnv = { buildMode: BuildMode.RELEASE, datacenter: Datacenter.US, - sdkEnv: SdkEnv.PRODUCTION, sdkVersion: 'some_version', } describe('internal monitoring endpoint', () => { it('should only be defined when api key is provided', () => { - let configuration = buildConfiguration({ clientToken }, prodEnv) + let configuration = buildConfiguration({ clientToken }, usEnv) expect(configuration.internalMonitoringEndpoint).toBeUndefined() - configuration = buildConfiguration({ clientToken, internalMonitoringApiKey: clientToken }, prodEnv) + configuration = buildConfiguration({ clientToken, internalMonitoringApiKey: clientToken }, usEnv) expect(configuration.internalMonitoringEndpoint).toContain(clientToken) }) }) @@ -25,7 +24,7 @@ describe('configuration', () => { const endpoint = 'bbbbbbbbbbbbbbb' const configuration = buildConfiguration( { clientToken, rumEndpoint: endpoint, logsEndpoint: endpoint, internalMonitoringEndpoint: endpoint }, - prodEnv + usEnv ) expect(configuration.rumEndpoint).not.toEqual(endpoint) expect(configuration.logsEndpoint).not.toEqual(endpoint) @@ -37,7 +36,6 @@ describe('configuration', () => { const e2eEnv = { buildMode: BuildMode.E2E_TEST, datacenter: Datacenter.US, - sdkEnv: SdkEnv.STAGING, sdkVersion: 'some_version', } const configuration = buildConfiguration( @@ -52,31 +50,36 @@ describe('configuration', () => { describe('isCollectingError', () => { it('should be enabled by default', () => { - const configuration = buildConfiguration({ clientToken }, prodEnv) + const configuration = buildConfiguration({ clientToken }, usEnv) expect(configuration.isCollectingError).toEqual(true) }) it('should be disabled when defined to false', () => { - const configuration = buildConfiguration({ clientToken, isCollectingError: false }, prodEnv) + const configuration = buildConfiguration({ clientToken, isCollectingError: false }, usEnv) expect(configuration.isCollectingError).toEqual(false) }) }) - describe('datacenter', () => { + describe('site', () => { it('should use buildEnv value by default', () => { - const configuration = buildConfiguration({ clientToken }, prodEnv) + const configuration = buildConfiguration({ clientToken }, usEnv) expect(configuration.rumEndpoint).toContain('datadoghq.com') }) - it('should use user value when set', () => { - const configuration = buildConfiguration({ clientToken, datacenter: Datacenter.EU }, prodEnv) + it('should use datacenter value when set', () => { + const configuration = buildConfiguration({ clientToken, datacenter: Datacenter.EU }, usEnv) expect(configuration.rumEndpoint).toContain('datadoghq.eu') }) + + it('should use site value when set', () => { + const configuration = buildConfiguration({ clientToken, datacenter: Datacenter.EU, site: 'foo.com' }, usEnv) + expect(configuration.rumEndpoint).toContain('foo.com') + }) }) describe('proxyHost', () => { it('should replace endpoint host add set it as a query parameter', () => { - const configuration = buildConfiguration({ clientToken, proxyHost: 'proxy.io' }, prodEnv) + const configuration = buildConfiguration({ clientToken, proxyHost: 'proxy.io' }, usEnv) expect(configuration.rumEndpoint).toMatch(/^https:\/\/proxy\.io\//) expect(configuration.rumEndpoint).toContain('?ddhost=rum-http-intake.logs.datadoghq.com&') }) @@ -84,8 +87,8 @@ describe('configuration', () => { describe('sdk_version, env, version and service', () => { it('should not modify the logs and rum endpoints tags when not defined', () => { - const configuration = buildConfiguration({ clientToken }, prodEnv) - expect(configuration.rumEndpoint).toContain(`&ddtags=sdk_version:${prodEnv.sdkVersion}`) + const configuration = buildConfiguration({ clientToken }, usEnv) + expect(configuration.rumEndpoint).toContain(`&ddtags=sdk_version:${usEnv.sdkVersion}`) expect(configuration.rumEndpoint).not.toContain(',env:') expect(configuration.rumEndpoint).not.toContain(',service:') @@ -96,12 +99,12 @@ describe('configuration', () => { }) it('should be set as tags in the logs and rum endpoints', () => { - const configuration = buildConfiguration({ clientToken, env: 'foo', service: 'bar', version: 'baz' }, prodEnv) + const configuration = buildConfiguration({ clientToken, env: 'foo', service: 'bar', version: 'baz' }, usEnv) expect(configuration.rumEndpoint).toContain( - `&ddtags=sdk_version:${prodEnv.sdkVersion},env:foo,service:bar,version:baz` + `&ddtags=sdk_version:${usEnv.sdkVersion},env:foo,service:bar,version:baz` ) expect(configuration.logsEndpoint).toContain( - `&ddtags=sdk_version:${prodEnv.sdkVersion},env:foo,service:bar,version:baz` + `&ddtags=sdk_version:${usEnv.sdkVersion},env:foo,service:bar,version:baz` ) }) }) diff --git a/packages/logs/README.md b/packages/logs/README.md index c0af6a62fa..760ae431e3 100644 --- a/packages/logs/README.md +++ b/packages/logs/README.md @@ -9,10 +9,10 @@ Datadog browser logs library. ### NPM ``` -import { Datacenter, datadogLogs } from '@datadog/browser-logs' +import { datadogLogs } from '@datadog/browser-logs' datadogLogs.init({ clientToken: 'XXX', - datacenter: Datacenter.US, + site: 'datadoghq.com', forwardErrorsToLogs: true, sampleRate: 100 }) @@ -21,11 +21,11 @@ datadogLogs.init({ ### Bundle ``` - + - +