From 32ddb6df43307e7819aff2825cdf8d0544c00690 Mon Sep 17 00:00:00 2001 From: Bastien Caudan Date: Fri, 20 Nov 2020 12:15:23 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=A5=20prefer=20constant=20union=20over?= =?UTF-8?q?=20enum=20in=20APIs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit reasoning: make APIs easier to use with TypeScript by using directly constants instead of importing our enums --- packages/core/src/domain/configuration.ts | 2 +- packages/logs/src/boot/logs.entry.ts | 8 +++----- packages/logs/src/domain/logger.ts | 14 +++++++------- packages/logs/src/index.ts | 5 ++--- packages/rum/src/boot/rum.entry.ts | 8 ++------ .../error/errorCollection.spec.ts | 3 +-- packages/rum/src/index.ts | 1 - 7 files changed, 16 insertions(+), 25 deletions(-) diff --git a/packages/core/src/domain/configuration.ts b/packages/core/src/domain/configuration.ts index 605cf91a06..dc9be4bdbf 100644 --- a/packages/core/src/domain/configuration.ts +++ b/packages/core/src/domain/configuration.ts @@ -44,7 +44,7 @@ export interface UserConfiguration { allowedTracingOrigins?: Array sampleRate?: number resourceSampleRate?: number - datacenter?: Datacenter // deprecated + datacenter?: 'us' | 'eu' // deprecated site?: string enableExperimentalFeatures?: string[] silentMultipleInit?: boolean diff --git a/packages/logs/src/boot/logs.entry.ts b/packages/logs/src/boot/logs.entry.ts index 08965f79c2..a4f895e5a2 100644 --- a/packages/logs/src/boot/logs.entry.ts +++ b/packages/logs/src/boot/logs.entry.ts @@ -19,13 +19,11 @@ export interface LogsUserConfiguration extends UserConfiguration { } export interface LoggerConfiguration { - level?: StatusType - handler?: HandlerType + level?: 'debug' | 'info' | 'warn' | 'error' + handler?: 'http' | 'console' | 'silent' context?: Context } -export type Status = keyof typeof StatusType - export type LogsGlobal = ReturnType export const datadogLogs = makeLogsGlobal(startLogs) @@ -77,7 +75,7 @@ export function makeLogsGlobal(startLogsImpl: StartLogs) { removeLoggerGlobalContext: monitor(globalContextManager.remove), createLogger: monitor((name: string, conf: LoggerConfiguration = {}) => { - customLoggers[name] = new Logger(sendLog, conf.handler, conf.level, { + customLoggers[name] = new Logger(sendLog, conf.handler as HandlerType, conf.level as StatusType, { ...conf.context, logger: { name }, }) diff --git a/packages/logs/src/domain/logger.ts b/packages/logs/src/domain/logger.ts index 7f462e848b..8d68039b1a 100644 --- a/packages/logs/src/domain/logger.ts +++ b/packages/logs/src/domain/logger.ts @@ -7,7 +7,7 @@ export enum StatusType { error = 'error', } -export const STATUS_PRIORITIES: { [key in StatusType]: number } = { +const STATUS_PRIORITIES: { [key in StatusType]: number } = { [StatusType.debug]: 0, [StatusType.info]: 1, [StatusType.warn]: 2, @@ -41,13 +41,13 @@ export class Logger { } @monitored - log(message: string, messageContext?: Context, status = StatusType.info) { + log(message: string, messageContext?: Context, status: 'debug' | 'info' | 'warn' | 'error' = StatusType.info) { if (STATUS_PRIORITIES[status] >= STATUS_PRIORITIES[this.level]) { switch (this.handlerType) { case HandlerType.http: this.sendLog({ message, - status, + status: status as StatusType, ...combine(this.contextManager.get(), messageContext), }) break @@ -93,11 +93,11 @@ export class Logger { this.contextManager.remove(key) } - setHandler(handler: HandlerType) { - this.handlerType = handler + setHandler(handler: 'http' | 'console' | 'silent') { + this.handlerType = handler as HandlerType } - setLevel(level: StatusType) { - this.level = level + setLevel(level: 'debug' | 'info' | 'warn' | 'error') { + this.level = level as StatusType } } diff --git a/packages/logs/src/index.ts b/packages/logs/src/index.ts index cbb07d9a0c..e4977bba23 100644 --- a/packages/logs/src/index.ts +++ b/packages/logs/src/index.ts @@ -1,3 +1,2 @@ -export { Datacenter } from '@datadog/browser-core' -export { StatusType, HandlerType, Logger, LogsMessage } from './domain/logger' -export { LogsUserConfiguration, Status, LoggerConfiguration, LogsGlobal, datadogLogs } from './boot/logs.entry' +export { Logger, LogsMessage } from './domain/logger' +export { LogsUserConfiguration, LoggerConfiguration, LogsGlobal, datadogLogs } from './boot/logs.entry' diff --git a/packages/rum/src/boot/rum.entry.ts b/packages/rum/src/boot/rum.entry.ts index 4480877900..26a3f1654a 100644 --- a/packages/rum/src/boot/rum.entry.ts +++ b/packages/rum/src/boot/rum.entry.ts @@ -105,14 +105,10 @@ export function makeRumGlobal(startRumImpl: StartRum) { }, addError: monitor( - ( - error: unknown, - context?: Context, - source: ErrorSource.CUSTOM | ErrorSource.NETWORK | ErrorSource.SOURCE = ErrorSource.CUSTOM - ) => { + (error: unknown, context?: Context, source: 'custom' | 'network' | 'source' = ErrorSource.CUSTOM) => { let checkedSource if (source === ErrorSource.CUSTOM || source === ErrorSource.NETWORK || source === ErrorSource.SOURCE) { - checkedSource = source + checkedSource = source as ErrorSource } else { console.error(`DD_RUM.addError: Invalid source '${source}'`) checkedSource = ErrorSource.CUSTOM diff --git a/packages/rum/src/domain/rumEventsCollection/error/errorCollection.spec.ts b/packages/rum/src/domain/rumEventsCollection/error/errorCollection.spec.ts index ac1a0a2dc7..b15c51317f 100644 --- a/packages/rum/src/domain/rumEventsCollection/error/errorCollection.spec.ts +++ b/packages/rum/src/domain/rumEventsCollection/error/errorCollection.spec.ts @@ -1,6 +1,5 @@ -import { Observable, RawError } from '@datadog/browser-core' +import { ErrorSource, Observable, RawError } from '@datadog/browser-core' import { setup, TestSetupBuilder } from '../../../../test/specHelper' -import { ErrorSource } from '../../../index' import { RumEventType } from '../../../types' import { doStartErrorCollection } from './errorCollection' diff --git a/packages/rum/src/index.ts b/packages/rum/src/index.ts index 335f4b0d30..4cb9f1d7ac 100644 --- a/packages/rum/src/index.ts +++ b/packages/rum/src/index.ts @@ -1,2 +1 @@ -export { Datacenter, ErrorSource } from '@datadog/browser-core' export { RumUserConfiguration, RumGlobal, datadogRum } from './boot/rum.entry'