Skip to content

Commit 9de7558

Browse files
committed
✨ add logs and rum-and-logs variants, __DD_BASE_CONFIG__ merge, static imports
1 parent 0d060dc commit 9de7558

3 files changed

Lines changed: 31 additions & 11 deletions

File tree

packages/endpoint/src/bundleGenerator.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import type { SdkVariant } from './sdkDownloader.ts'
2-
import { getDefaultVersion } from './sdkDownloader.ts'
2+
import { getDefaultVersion, downloadSDK } from './sdkDownloader.ts'
33
import { INLINE_HELPERS } from './helpers.ts'
4+
import { fetchRemoteConfiguration } from '@datadog/browser-remote-config'
5+
import { resolveDynamicValues, serializeConfigToJs } from '@datadog/browser-remote-config/node'
46

57
export type { SdkVariant } from './sdkDownloader.ts'
68

@@ -26,10 +28,9 @@ export interface GenerateBundleOptions {
2628
}
2729

2830
const CONFIG_FETCH_TIMEOUT_MS = 30_000
29-
const VALID_VARIANTS: SdkVariant[] = ['rum', 'rum-slim']
31+
const VALID_VARIANTS: SdkVariant[] = ['rum', 'rum-slim', 'logs', 'rum-and-logs']
3032

3133
export async function fetchConfig(options: FetchConfigOptions) {
32-
const { fetchRemoteConfiguration } = await import('@datadog/browser-remote-config')
3334
const result = await fetchRemoteConfiguration({
3435
applicationId: options.applicationId,
3536
remoteConfigurationId: options.remoteConfigurationId,
@@ -69,9 +70,11 @@ export function generateCombinedBundle(options: CombineBundleOptions): string {
6970
// SDK bundle (${variant}) from CDN
7071
${sdkCode}
7172
72-
// Auto-initialize
73-
if (typeof window !== 'undefined' && window.DD_RUM) {
74-
window.DD_RUM.init(__DATADOG_REMOTE_CONFIG__);
73+
// Auto-initialize — merge base config (clientToken, site, etc.) set by the page before this script
74+
var __DD_CONFIG__ = Object.assign({}, window.__DD_BASE_CONFIG__ || {}, __DATADOG_REMOTE_CONFIG__);
75+
if (typeof window !== 'undefined') {
76+
if (window.DD_RUM) { window.DD_RUM.init(__DD_CONFIG__); }
77+
if (window.DD_LOGS) { window.DD_LOGS.init(__DD_CONFIG__); }
7578
}
7679
})();`
7780
}
@@ -93,11 +96,9 @@ export async function generateBundle(options: GenerateBundleOptions): Promise<st
9396
site: options.site,
9497
})
9598

96-
const { resolveDynamicValues, serializeConfigToJs } = await import('@datadog/browser-remote-config/node')
9799
const resolved = resolveDynamicValues(configResult.value)
98100
const configJs = serializeConfigToJs(resolved)
99101

100-
const { downloadSDK } = await import('./sdkDownloader.ts')
101102
const sdkCode = await downloadSDK({ variant: options.variant, datacenter: options.datacenter })
102103
const sdkVersion = getDefaultVersion()
103104

packages/endpoint/src/sdkDownloader.ts

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,14 @@ import https from 'node:https'
33
// eslint-disable-next-line local-rules/disallow-side-effects, local-rules/enforce-prod-deps-imports -- Node.js build tool
44
import { createRequire } from 'node:module'
55

6-
export type SdkVariant = 'rum' | 'rum-slim'
6+
export type SdkVariant = 'rum' | 'rum-slim' | 'logs' | 'rum-and-logs'
7+
8+
// Variants that map to a single CDN file
9+
const CDN_VARIANTS: Record<Exclude<SdkVariant, 'rum-and-logs'>, string> = {
10+
rum: 'rum',
11+
'rum-slim': 'rum-slim',
12+
logs: 'logs',
13+
}
714

815
export interface DownloadSDKOptions {
916
variant: SdkVariant
@@ -34,15 +41,26 @@ export async function downloadSDK(options: SdkVariant | DownloadSDKOptions): Pro
3441
const variant = typeof options === 'string' ? options : options.variant
3542
const datacenter = typeof options === 'string' ? DEFAULT_DATACENTER : (options.datacenter ?? DEFAULT_DATACENTER)
3643
const version = typeof options === 'string' ? getDefaultVersion() : (options.version ?? getDefaultVersion())
44+
45+
// rum-and-logs: download both SDKs and concatenate
46+
if (variant === 'rum-and-logs') {
47+
const [rum, logs] = await Promise.all([
48+
downloadSDK({ variant: 'rum', datacenter, version }),
49+
downloadSDK({ variant: 'logs', datacenter, version }),
50+
])
51+
return `${rum}\n${logs}`
52+
}
53+
3754
const majorVersion = getMajorVersion(version)
55+
const cdnVariant = CDN_VARIANTS[variant]
3856

3957
const cacheKey = `${variant}-${majorVersion}-${datacenter}`
4058
const cached = sdkCache.get(cacheKey)
4159
if (cached) {
4260
return cached
4361
}
4462

45-
const cdnUrl = `${CDN_HOST}/${datacenter}/v${majorVersion}/datadog-${variant}.js`
63+
const cdnUrl = `${CDN_HOST}/${datacenter}/v${majorVersion}/datadog-${cdnVariant}.js`
4664

4765
const sdkCode = await new Promise<string>((resolve, reject) => {
4866
const request = https.get(cdnUrl, { timeout: 30000 }, (res) => {

packages/remote-config/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
"types": "cjs/index.d.ts",
88
"exports": {
99
".": "./src/index.ts",
10-
"./node": "./src/entries/node.ts"
10+
"./node": "./src/entries/node.ts",
11+
"./package.json": "./package.json"
1112
},
1213
"scripts": {
1314
"build": "node ../../scripts/build/build-package.ts --modules"

0 commit comments

Comments
 (0)