diff --git a/LICENSE-3rdparty.csv b/LICENSE-3rdparty.csv index 09ceab21b9..68319d400b 100644 --- a/LICENSE-3rdparty.csv +++ b/LICENSE-3rdparty.csv @@ -56,7 +56,6 @@ dev,karma-webpack,MIT,Copyright JS Foundation and other contributors dev,lerna,MIT,Copyright 2015-present Lerna Contributors dev,minimatch,ISC,Copyright (c) Isaac Z. Schlueter and Contributors dev,node-forge,BSD,Copyright (c) 2010, Digital Bazaar, Inc. -dev,npm-run-all,MIT,Copyright 2015 Toru Nagashima dev,pako,MIT,(C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin dev,prettier,MIT,Copyright James Long and contributors dev,puppeteer,Apache-2.0,Copyright 2017 Google Inc. diff --git a/package.json b/package.json index f40fe00b83..3f7befb1d4 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,6 @@ "karma-webpack": "5.0.0", "lerna": "9.0.0", "minimatch": "10.0.3", - "npm-run-all": "4.1.5", "prettier": "3.6.2", "puppeteer": "24.26.0", "swc-loader": "0.2.6", diff --git a/packages/core/package.json b/packages/core/package.json index cefb22ed8e..a75630310a 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -8,10 +8,7 @@ "sideEffects": false, "scripts": { "pack": "yarn pack", - "build": "run-p build:cjs build:esm", - "build:cjs": "rm -rf cjs && tsc -p tsconfig.cjs.json && yarn replace-build-env cjs", - "build:esm": "rm -rf esm && tsc -p tsconfig.esm.json && yarn replace-build-env esm", - "replace-build-env": "node ../../scripts/build/replace-build-env.ts" + "build": "node ../../scripts/build/build-package.ts --modules" }, "repository": { "type": "git", diff --git a/packages/core/tsconfig.cjs.json b/packages/core/tsconfig.cjs.json deleted file mode 100644 index d78ac200b2..0000000000 --- a/packages/core/tsconfig.cjs.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "module": "commonjs", - "rootDir": "./src/", - "outDir": "./cjs/" - }, - "include": ["./src/**/*.ts"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/core/tsconfig.esm.json b/packages/core/tsconfig.esm.json deleted file mode 100644 index 9d1d447af3..0000000000 --- a/packages/core/tsconfig.esm.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "rootDir": "./src/", - "outDir": "./esm/" - }, - "include": ["./src/**/*.ts"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/flagging/package.json b/packages/flagging/package.json index bc188a9716..523f64e9fe 100644 --- a/packages/flagging/package.json +++ b/packages/flagging/package.json @@ -7,11 +7,8 @@ "types": "cjs/entries/main.d.ts", "scripts": { "pack": "yarn pack", - "build": "run-p build:cjs build:esm build:bundle", - "build:bundle": "rm -rf bundle && SDK_SETUP=cdn webpack --disable-interpret --mode=production", - "build:cjs": "rm -rf cjs && tsc -p tsconfig.cjs.json && yarn replace-build-env cjs", - "build:esm": "rm -rf esm && tsc -p tsconfig.esm.json && yarn replace-build-env esm", - "replace-build-env": "node ../../scripts/build/replace-build-env.ts" + "build": "node ../../scripts/build/build-package.ts --modules --bundle datadog-flagging.js", + "build:bundle": "node ../../scripts/build/build-package.ts --bundle datadog-flagging.js" }, "dependencies": { "@datadog/browser-core": "6.22.0" @@ -36,7 +33,6 @@ "access": "public" }, "devDependencies": { - "npm-run-all": "4.1.5", "webpack": "5.102.1" } } diff --git a/packages/flagging/tsconfig.cjs.json b/packages/flagging/tsconfig.cjs.json deleted file mode 100644 index d78ac200b2..0000000000 --- a/packages/flagging/tsconfig.cjs.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "module": "commonjs", - "rootDir": "./src/", - "outDir": "./cjs/" - }, - "include": ["./src/**/*.ts"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/flagging/tsconfig.esm.json b/packages/flagging/tsconfig.esm.json deleted file mode 100644 index fee4f61227..0000000000 --- a/packages/flagging/tsconfig.esm.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "module": "es6", - "rootDir": "./src/", - "outDir": "./esm/" - }, - "include": ["./src/**/*.ts"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/flagging/webpack.config.mts b/packages/flagging/webpack.config.mts deleted file mode 100644 index f12387f8d3..0000000000 --- a/packages/flagging/webpack.config.mts +++ /dev/null @@ -1,10 +0,0 @@ -import path from 'path' -import type webpack from 'webpack' -import webpackBase from '../../webpack.base.ts' - -export default (_env: unknown, argv: { mode?: webpack.Configuration['mode'] }) => - webpackBase({ - mode: argv.mode, - entry: path.resolve(import.meta.dirname, 'src/entries/main.ts'), - filename: 'datadog-flagging.js', - }) diff --git a/packages/logs/package.json b/packages/logs/package.json index a3a96902d2..3d00c9cd30 100644 --- a/packages/logs/package.json +++ b/packages/logs/package.json @@ -7,11 +7,8 @@ "types": "cjs/entries/main.d.ts", "scripts": { "pack": "yarn pack", - "build": "run-p build:cjs build:esm build:bundle", - "build:bundle": "rm -rf bundle && SDK_SETUP=cdn webpack --disable-interpret --mode=production", - "build:cjs": "rm -rf cjs && tsc -p tsconfig.cjs.json && yarn replace-build-env cjs", - "build:esm": "rm -rf esm && tsc -p tsconfig.esm.json && yarn replace-build-env esm", - "replace-build-env": "node ../../scripts/build/replace-build-env.ts" + "build": "node ../../scripts/build/build-package.ts --modules --bundle datadog-logs.js", + "build:bundle": "node ../../scripts/build/build-package.ts --bundle datadog-logs.js" }, "dependencies": { "@datadog/browser-core": "6.23.0" diff --git a/packages/logs/tsconfig.cjs.json b/packages/logs/tsconfig.cjs.json deleted file mode 100644 index d78ac200b2..0000000000 --- a/packages/logs/tsconfig.cjs.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "module": "commonjs", - "rootDir": "./src/", - "outDir": "./cjs/" - }, - "include": ["./src/**/*.ts"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/logs/tsconfig.esm.json b/packages/logs/tsconfig.esm.json deleted file mode 100644 index fee4f61227..0000000000 --- a/packages/logs/tsconfig.esm.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "module": "es6", - "rootDir": "./src/", - "outDir": "./esm/" - }, - "include": ["./src/**/*.ts"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/logs/webpack.config.mts b/packages/logs/webpack.config.mts deleted file mode 100644 index 0ab813e642..0000000000 --- a/packages/logs/webpack.config.mts +++ /dev/null @@ -1,10 +0,0 @@ -import path from 'path' -import type webpack from 'webpack' -import webpackBase from '../../webpack.base.ts' - -export default (_env: unknown, argv: { mode?: webpack.Configuration['mode'] }) => - webpackBase({ - mode: argv.mode, - entry: path.resolve(import.meta.dirname, 'src/entries/main.ts'), - filename: 'datadog-logs.js', - }) diff --git a/packages/rum-core/package.json b/packages/rum-core/package.json index f0dd7783da..f541f747c1 100644 --- a/packages/rum-core/package.json +++ b/packages/rum-core/package.json @@ -7,10 +7,7 @@ "types": "cjs/index.d.ts", "scripts": { "pack": "yarn pack", - "build": "run-p build:cjs build:esm", - "build:cjs": "rm -rf cjs && tsc -p tsconfig.cjs.json && yarn replace-build-env cjs", - "build:esm": "rm -rf esm && tsc -p tsconfig.esm.json && yarn replace-build-env esm", - "replace-build-env": "node ../../scripts/build/replace-build-env.ts" + "build": "node ../../scripts/build/build-package.ts --modules" }, "dependencies": { "@datadog/browser-core": "6.23.0" diff --git a/packages/rum-core/tsconfig.cjs.json b/packages/rum-core/tsconfig.cjs.json deleted file mode 100644 index d78ac200b2..0000000000 --- a/packages/rum-core/tsconfig.cjs.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "module": "commonjs", - "rootDir": "./src/", - "outDir": "./cjs/" - }, - "include": ["./src/**/*.ts"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/rum-core/tsconfig.esm.json b/packages/rum-core/tsconfig.esm.json deleted file mode 100644 index 9d1d447af3..0000000000 --- a/packages/rum-core/tsconfig.esm.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "rootDir": "./src/", - "outDir": "./esm/" - }, - "include": ["./src/**/*.ts"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/rum-react/package.json b/packages/rum-react/package.json index ac24842189..0171cdd876 100644 --- a/packages/rum-react/package.json +++ b/packages/rum-react/package.json @@ -7,9 +7,7 @@ "types": "cjs/entries/main.d.ts", "scripts": { "pack": "yarn pack", - "build": "run-p build:cjs build:esm", - "build:cjs": "rm -rf cjs && tsc -p tsconfig.cjs.json --noCheck", - "build:esm": "rm -rf esm && tsc -p tsconfig.esm.json --noCheck", + "build": "node ../../scripts/build/build-package.ts --modules", "prepack": "npm run build" }, "dependencies": { diff --git a/packages/rum-react/tsconfig.cjs.json b/packages/rum-react/tsconfig.cjs.json deleted file mode 100644 index d78ac200b2..0000000000 --- a/packages/rum-react/tsconfig.cjs.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "module": "commonjs", - "rootDir": "./src/", - "outDir": "./cjs/" - }, - "include": ["./src/**/*.ts"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/rum-react/tsconfig.esm.json b/packages/rum-react/tsconfig.esm.json deleted file mode 100644 index 9d1d447af3..0000000000 --- a/packages/rum-react/tsconfig.esm.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "rootDir": "./src/", - "outDir": "./esm/" - }, - "include": ["./src/**/*.ts"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/rum-slim/package.json b/packages/rum-slim/package.json index 8f67cb2401..a974852aba 100644 --- a/packages/rum-slim/package.json +++ b/packages/rum-slim/package.json @@ -7,10 +7,8 @@ "types": "cjs/entries/main.d.ts", "scripts": { "pack": "yarn pack", - "build": "run-p build:cjs build:esm build:bundle", - "build:bundle": "rm -rf bundle && SDK_SETUP=cdn webpack --disable-interpret --mode=production", - "build:cjs": "rm -rf cjs && tsc -p tsconfig.cjs.json", - "build:esm": "rm -rf esm && tsc -p tsconfig.esm.json" + "build": "node ../../scripts/build/build-package.ts --modules --bundle datadog-rum-slim.js", + "build:bundle": "node ../../scripts/build/build-package.ts --bundle datadog-rum-slim.js" }, "dependencies": { "@datadog/browser-core": "6.23.0", diff --git a/packages/rum-slim/tsconfig.cjs.json b/packages/rum-slim/tsconfig.cjs.json deleted file mode 100644 index d78ac200b2..0000000000 --- a/packages/rum-slim/tsconfig.cjs.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "module": "commonjs", - "rootDir": "./src/", - "outDir": "./cjs/" - }, - "include": ["./src/**/*.ts"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/rum-slim/tsconfig.esm.json b/packages/rum-slim/tsconfig.esm.json deleted file mode 100644 index 9d1d447af3..0000000000 --- a/packages/rum-slim/tsconfig.esm.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "rootDir": "./src/", - "outDir": "./esm/" - }, - "include": ["./src/**/*.ts"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/rum-slim/webpack.config.mts b/packages/rum-slim/webpack.config.mts deleted file mode 100644 index 26cb6f3743..0000000000 --- a/packages/rum-slim/webpack.config.mts +++ /dev/null @@ -1,10 +0,0 @@ -import path from 'path' -import type webpack from 'webpack' -import webpackBase from '../../webpack.base.ts' - -export default (_env: unknown, argv: { mode?: webpack.Configuration['mode'] }) => - webpackBase({ - mode: argv.mode, - entry: path.resolve(import.meta.dirname, 'src/entries/main.ts'), - filename: 'datadog-rum-slim.js', - }) diff --git a/packages/rum/package.json b/packages/rum/package.json index 8c3ad07013..46e16fdd53 100644 --- a/packages/rum/package.json +++ b/packages/rum/package.json @@ -7,11 +7,8 @@ "types": "cjs/entries/main.d.ts", "scripts": { "pack": "yarn pack", - "build": "run-p build:cjs build:esm build:bundle", - "build:bundle": "rm -rf bundle && SDK_SETUP=cdn webpack --disable-interpret --mode=production", - "build:cjs": "rm -rf cjs && tsc -p tsconfig.cjs.json && yarn replace-build-env cjs", - "build:esm": "rm -rf esm && tsc -p tsconfig.esm.json && yarn replace-build-env esm", - "replace-build-env": "node ../../scripts/build/replace-build-env.ts" + "build": "node ../../scripts/build/build-package.ts --modules --bundle datadog-rum.js", + "build:bundle": "node ../../scripts/build/build-package.ts --bundle datadog-rum.js" }, "dependencies": { "@datadog/browser-core": "6.23.0", diff --git a/packages/rum/tsconfig.cjs.json b/packages/rum/tsconfig.cjs.json deleted file mode 100644 index 1106af4343..0000000000 --- a/packages/rum/tsconfig.cjs.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "allowJs": true, - "module": "commonjs", - "rootDir": "./src/", - "outDir": "./cjs/" - }, - "include": ["./src"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/rum/tsconfig.esm.json b/packages/rum/tsconfig.esm.json deleted file mode 100644 index 815687627a..0000000000 --- a/packages/rum/tsconfig.esm.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "allowJs": true, - "rootDir": "./src/", - "outDir": "./esm/" - }, - "include": ["./src"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/rum/webpack.config.mts b/packages/rum/webpack.config.mts deleted file mode 100644 index 74361fe83d..0000000000 --- a/packages/rum/webpack.config.mts +++ /dev/null @@ -1,10 +0,0 @@ -import path from 'path' -import type webpack from 'webpack' -import webpackBase from '../../webpack.base.ts' - -export default (_env: unknown, argv: { mode?: webpack.Configuration['mode'] }) => - webpackBase({ - mode: argv.mode, - entry: path.resolve(import.meta.dirname, 'src/entries/main.ts'), - filename: 'datadog-rum.js', - }) diff --git a/packages/worker/package.json b/packages/worker/package.json index b6e1cdb9c2..eb2e6ad622 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -5,7 +5,8 @@ "main": "bundle/worker.js", "scripts": { "pack": "yarn pack", - "build": "rm -rf bundle && webpack --disable-interpret --mode=production" + "build": "node ../../scripts/build/build-package.ts --bundle worker.js", + "build:bundle": "yarn build" }, "dependencies": { "@datadog/browser-core": "6.23.0" diff --git a/packages/worker/webpack.config.mts b/packages/worker/webpack.config.mts deleted file mode 100644 index 7f75d48873..0000000000 --- a/packages/worker/webpack.config.mts +++ /dev/null @@ -1,10 +0,0 @@ -import path from 'path' -import type webpack from 'webpack' -import webpackBase from '../../webpack.base.ts' - -export default (_env: unknown, argv: { mode?: webpack.Configuration['mode'] }) => - webpackBase({ - mode: argv.mode, - entry: path.resolve(import.meta.dirname, 'src/entries/main.ts'), - filename: 'worker.js', - }) diff --git a/scripts/build/build-package.ts b/scripts/build/build-package.ts new file mode 100644 index 0000000000..35de4985c5 --- /dev/null +++ b/scripts/build/build-package.ts @@ -0,0 +1,156 @@ +import fs from 'node:fs/promises' +import { parseArgs } from 'node:util' +import path from 'node:path' +import { globSync } from 'node:fs' +import ts from 'typescript' +import webpack from 'webpack' +import webpackBase from '../../webpack.base.ts' + +import { printLog, runMain } from '../lib/executionUtils.ts' +import { modifyFile } from '../lib/filesUtils.ts' +import { buildEnvKeys, getBuildEnvValue } from '../lib/buildEnv.ts' + +runMain(async () => { + const { values } = parseArgs({ + options: { + modules: { + type: 'boolean', + }, + bundle: { + type: 'string', + }, + verbose: { + type: 'boolean', + default: false, + }, + }, + }) + + if (values.modules) { + printLog('Building modules...') + await buildModules({ + outDir: './cjs', + module: 'commonjs', + verbose: values.verbose, + }) + await buildModules({ + outDir: './esm', + module: 'es2020', + verbose: values.verbose, + }) + } + + if (values.bundle) { + printLog('Building bundle...') + await buildBundle({ + filename: values.bundle, + verbose: values.verbose, + }) + } + + printLog('Done.') +}) + +async function buildBundle({ filename, verbose }: { filename: string; verbose: boolean }) { + await fs.rm('./bundle', { recursive: true, force: true }) + return new Promise((resolve, reject) => { + webpack( + webpackBase({ + mode: 'production', + entry: './src/entries/main.ts', + filename, + }), + (error, stats) => { + if (error) { + reject(error) + return + } + + if (verbose) { + console.log(stats!.toString({ colors: true })) + } + resolve() + } + ) + }) +} + +async function buildModules({ outDir, module, verbose }: { outDir: string; module: string; verbose: boolean }) { + await fs.rm(outDir, { recursive: true, force: true }) + + // TODO: in the future, consider building packages with something else than typescript (ex: + // rspack, tsdown...) + + const diagnostics = buildWithTypeScript({ + extends: '../../tsconfig.base.json', + compilerOptions: { + baseUrl: '.', + declaration: true, + allowJs: true, + module, + rootDir: './src/', + outDir, + }, + include: ['./src'], + exclude: ['./src/**/*.spec.*', './src/**/*.specHelper.*'], + }) + + if (diagnostics.length) { + printTypeScriptDiagnostics(diagnostics) + throw new Error('Failed to build package due to TypeScript errors') + } + + await replaceBuildEnvInDirectory(outDir, { verbose }) +} + +async function replaceBuildEnvInDirectory(dir: string, { verbose }: { verbose: boolean }) { + for (const relativePath of globSync('**/*.js', { cwd: dir })) { + const absolutePath = path.resolve(dir, relativePath) + if (await modifyFile(absolutePath, (content: string) => replaceBuildEnv(content))) { + if (verbose) { + printLog(`Replaced BuildEnv in ${absolutePath}`) + } + } + } + + function replaceBuildEnv(content: string): string { + return buildEnvKeys.reduce( + (content, key) => content.replaceAll(`__BUILD_ENV__${key}__`, () => JSON.stringify(getBuildEnvValue(key))), + content + ) + } +} + +function buildWithTypeScript(configuration: { [key: string]: unknown }) { + const parsedConfiguration = ts.parseJsonConfigFileContent( + configuration, + ts.sys, + process.cwd(), + undefined, + 'tsconfig.json' // just used in messages + ) + + const host = ts.createCompilerHost(parsedConfiguration.options) + const program = ts.createProgram({ + rootNames: parsedConfiguration.fileNames, + options: parsedConfiguration.options, + host, + }) + + const emitResult = program.emit() + if (emitResult.emitSkipped) { + throw new Error('No files were emitted') + } + + return [...ts.getPreEmitDiagnostics(program), ...emitResult.diagnostics] +} + +function printTypeScriptDiagnostics(diagnostics: ts.Diagnostic[]) { + const formatHost: ts.FormatDiagnosticsHost = { + getCanonicalFileName: (f) => f, + // eslint-disable-next-line @typescript-eslint/unbound-method + getCurrentDirectory: ts.sys.getCurrentDirectory, + getNewLine: () => ts.sys.newLine, + } + console.error(ts.formatDiagnosticsWithColorAndContext(diagnostics, formatHost)) +} diff --git a/scripts/build/replace-build-env.ts b/scripts/build/replace-build-env.ts deleted file mode 100644 index 781070e4db..0000000000 --- a/scripts/build/replace-build-env.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { globSync } from 'node:fs' -import { resolve } from 'node:path' -import { printLog, runMain } from '../lib/executionUtils.ts' -import { modifyFile } from '../lib/filesUtils.ts' -import { buildEnvKeys, getBuildEnvValue } from '../lib/buildEnv.ts' - -/** - * Replace BuildEnv in build files - * Usage: - * BUILD_MODE=zzz node replace-build-env.ts /path/to/build/directory - */ - -runMain(async () => { - const buildDirectory = process.argv[2] - - for (const path of globSync('**/*.js', { cwd: buildDirectory })) { - if (await modifyFile(resolve(buildDirectory, path), (content: string) => replaceBuildEnv(content))) { - printLog(`Replaced BuildEnv in ${path}`) - } - } -}) - -function replaceBuildEnv(content: string): string { - return buildEnvKeys.reduce( - (content, key) => content.replaceAll(`__BUILD_ENV__${key}__`, () => JSON.stringify(getBuildEnvValue(key))), - content - ) -} diff --git a/scripts/check-packages.ts b/scripts/check-packages.ts index 09e69491d5..69a1c11568 100644 --- a/scripts/check-packages.ts +++ b/scripts/check-packages.ts @@ -48,7 +48,7 @@ function getPackageFiles(packagePath: string): string[] { // // [1]: Quoting Lerna doc: "Lerna always uses npm to publish packages." // https://lerna.js.org/docs/features/version-and-publish#from-package - const output = command`npm pack --dry-run --json`.withCurrentWorkingDirectory(packagePath).run() + const output = command`npm pack --ignore-scripts --dry-run --json`.withCurrentWorkingDirectory(packagePath).run() const parsed: NpmPackOutput[] = JSON.parse(output) return parsed[0].files.map((file) => file.path) } diff --git a/scripts/dev-server.ts b/scripts/dev-server.ts index f08be09627..64e8706fb9 100644 --- a/scripts/dev-server.ts +++ b/scripts/dev-server.ts @@ -4,16 +4,13 @@ import HtmlWebpackPlugin from 'html-webpack-plugin' import webpack from 'webpack' import cors from 'cors' import webpackBase from '../webpack.base.ts' -import logsConfig from '../packages/logs/webpack.config.mts' -import rumSlimConfig from '../packages/rum-slim/webpack.config.mts' -import rumConfig from '../packages/rum/webpack.config.mts' -import flaggingConfig from '../packages/flagging/webpack.config.mts' -import workerConfig from '../packages/worker/webpack.config.mts' import { printLog, runMain } from './lib/executionUtils.ts' const sandboxPath = './sandbox' const port = 8080 +const PACKAGES_WITH_BUNDLE = ['rum', 'rum-slim', 'logs', 'flagging', 'worker'] + runMain(() => { const app = express() app.use(createStaticSandboxApp()) @@ -25,8 +22,19 @@ function createStaticSandboxApp(): express.Application { const app = express() app.use(cors()) app.use(express.static(sandboxPath)) - for (const config of [rumConfig, rumSlimConfig, logsConfig, flaggingConfig, workerConfig]) { - app.use(middleware(webpack(config(null, { mode: 'development' }))!)) + for (const packageName of PACKAGES_WITH_BUNDLE) { + const packagePath = `./packages/${packageName}` + app.use( + middleware( + webpack( + webpackBase({ + mode: 'development', + entry: `${packagePath}/src/entries/main.ts`, + filename: packageName === 'worker' ? 'worker.js' : `datadog-${packageName}.js`, + }) + )! + ) + ) } // Redirect suffixed files diff --git a/yarn.lock b/yarn.lock index 9e7fc29780..196759c986 100644 --- a/yarn.lock +++ b/yarn.lock @@ -236,7 +236,6 @@ __metadata: resolution: "@datadog/browser-flagging@workspace:packages/flagging" dependencies: "@datadog/browser-core": "npm:6.22.0" - npm-run-all: "npm:4.1.5" webpack: "npm:5.102.1" peerDependencies: "@datadog/browser-rum": 6.22.0 @@ -3339,15 +3338,6 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^3.2.1": - version: 3.2.1 - resolution: "ansi-styles@npm:3.2.1" - dependencies: - color-convert: "npm:^1.9.0" - checksum: 10c0/ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b - languageName: node - linkType: hard - "ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": version: 4.3.0 resolution: "ansi-styles@npm:4.3.0" @@ -3911,7 +3901,6 @@ __metadata: karma-webpack: "npm:5.0.0" lerna: "npm:9.0.0" minimatch: "npm:10.0.3" - npm-run-all: "npm:4.1.5" prettier: "npm:3.6.2" puppeteer: "npm:24.26.0" swc-loader: "npm:0.2.6" @@ -4165,17 +4154,6 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^2.4.1": - version: 2.4.2 - resolution: "chalk@npm:2.4.2" - dependencies: - ansi-styles: "npm:^3.2.1" - escape-string-regexp: "npm:^1.0.5" - supports-color: "npm:^5.3.0" - checksum: 10c0/e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073 - languageName: node - linkType: hard - "chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.2": version: 4.1.2 resolution: "chalk@npm:4.1.2" @@ -4405,15 +4383,6 @@ __metadata: languageName: node linkType: hard -"color-convert@npm:^1.9.0": - version: 1.9.3 - resolution: "color-convert@npm:1.9.3" - dependencies: - color-name: "npm:1.1.3" - checksum: 10c0/5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c - languageName: node - linkType: hard - "color-convert@npm:^2.0.1": version: 2.0.1 resolution: "color-convert@npm:2.0.1" @@ -4423,13 +4392,6 @@ __metadata: languageName: node linkType: hard -"color-name@npm:1.1.3": - version: 1.1.3 - resolution: "color-name@npm:1.1.3" - checksum: 10c0/566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6 - languageName: node - linkType: hard - "color-name@npm:~1.1.4": version: 1.1.4 resolution: "color-name@npm:1.1.4" @@ -4848,19 +4810,6 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^6.0.5": - version: 6.0.6 - resolution: "cross-spawn@npm:6.0.6" - dependencies: - nice-try: "npm:^1.0.4" - path-key: "npm:^2.0.1" - semver: "npm:^5.5.0" - shebang-command: "npm:^1.2.0" - which: "npm:^1.2.9" - checksum: 10c0/bf61fb890e8635102ea9bce050515cf915ff6a50ccaa0b37a17dc82fded0fb3ed7af5478b9367b86baee19127ad86af4be51d209f64fd6638c0862dca185fe1d - languageName: node - linkType: hard - "cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.6": version: 7.0.6 resolution: "cross-spawn@npm:7.0.6" @@ -7098,13 +7047,6 @@ __metadata: languageName: node linkType: hard -"has-flag@npm:^3.0.0": - version: 3.0.0 - resolution: "has-flag@npm:3.0.0" - checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 - languageName: node - linkType: hard - "has-flag@npm:^4.0.0": version: 4.0.0 resolution: "has-flag@npm:4.0.0" @@ -9132,13 +9074,6 @@ __metadata: languageName: node linkType: hard -"memorystream@npm:^0.3.1": - version: 0.3.1 - resolution: "memorystream@npm:0.3.1" - checksum: 10c0/4bd164657711d9747ff5edb0508b2944414da3464b7fe21ac5c67cf35bba975c4b446a0124bd0f9a8be54cfc18faf92e92bd77563a20328b1ccf2ff04e9f39b9 - languageName: node - linkType: hard - "meow@npm:^8.1.2": version: 8.1.2 resolution: "meow@npm:8.1.2" @@ -9631,13 +9566,6 @@ __metadata: languageName: node linkType: hard -"nice-try@npm:^1.0.4": - version: 1.0.5 - resolution: "nice-try@npm:1.0.5" - checksum: 10c0/95568c1b73e1d0d4069a3e3061a2102d854513d37bcfda73300015b7ba4868d3b27c198d1dbbd8ebdef4112fc2ed9e895d4a0f2e1cce0bd334f2a1346dc9205f - languageName: node - linkType: hard - "no-case@npm:^3.0.4": version: 3.0.4 resolution: "no-case@npm:3.0.4" @@ -9899,27 +9827,6 @@ __metadata: languageName: node linkType: hard -"npm-run-all@npm:4.1.5": - version: 4.1.5 - resolution: "npm-run-all@npm:4.1.5" - dependencies: - ansi-styles: "npm:^3.2.1" - chalk: "npm:^2.4.1" - cross-spawn: "npm:^6.0.5" - memorystream: "npm:^0.3.1" - minimatch: "npm:^3.0.4" - pidtree: "npm:^0.3.0" - read-pkg: "npm:^3.0.0" - shell-quote: "npm:^1.6.1" - string.prototype.padend: "npm:^3.0.0" - bin: - npm-run-all: bin/npm-run-all/index.js - run-p: bin/run-p/index.js - run-s: bin/run-s/index.js - checksum: 10c0/736ee39bd35454d3efaa4a2e53eba6c523e2e17fba21a18edcce6b221f5cab62000bef16bb6ae8aff9e615831e6b0eb25ab51d52d60e6fa6f4ea880e4c6d31f4 - languageName: node - linkType: hard - "npm-run-path@npm:^4.0.1": version: 4.0.1 resolution: "npm-run-path@npm:4.0.1" @@ -10592,13 +10499,6 @@ __metadata: languageName: node linkType: hard -"path-key@npm:^2.0.1": - version: 2.0.1 - resolution: "path-key@npm:2.0.1" - checksum: 10c0/dd2044f029a8e58ac31d2bf34c34b93c3095c1481942960e84dd2faa95bbb71b9b762a106aead0646695330936414b31ca0bd862bf488a937ad17c8c5d73b32b - languageName: node - linkType: hard - "path-key@npm:^3.0.0, path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" @@ -10705,15 +10605,6 @@ __metadata: languageName: node linkType: hard -"pidtree@npm:^0.3.0": - version: 0.3.1 - resolution: "pidtree@npm:0.3.1" - bin: - pidtree: bin/pidtree.js - checksum: 10c0/cd69b0182f749f45ab48584e3442c48c5dc4512502c18d5b0147a33b042c41a4db4269b9ce2f7c48f11833ee5e79d81f5ebc6f7bf8372d4ea55726f60dc505a1 - languageName: node - linkType: hard - "pify@npm:5.0.0": version: 5.0.0 resolution: "pify@npm:5.0.0" @@ -11873,7 +11764,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.5.0, semver@npm:^5.6.0": +"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.6.0": version: 5.7.2 resolution: "semver@npm:5.7.2" bin: @@ -12071,15 +11962,6 @@ __metadata: languageName: node linkType: hard -"shebang-command@npm:^1.2.0": - version: 1.2.0 - resolution: "shebang-command@npm:1.2.0" - dependencies: - shebang-regex: "npm:^1.0.0" - checksum: 10c0/7b20dbf04112c456b7fc258622dafd566553184ac9b6938dd30b943b065b21dabd3776460df534cc02480db5e1b6aec44700d985153a3da46e7db7f9bd21326d - languageName: node - linkType: hard - "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" @@ -12089,13 +11971,6 @@ __metadata: languageName: node linkType: hard -"shebang-regex@npm:^1.0.0": - version: 1.0.0 - resolution: "shebang-regex@npm:1.0.0" - checksum: 10c0/9abc45dee35f554ae9453098a13fdc2f1730e525a5eb33c51f096cc31f6f10a4b38074c1ebf354ae7bffa7229506083844008dfc3bb7818228568c0b2dc1fff2 - languageName: node - linkType: hard - "shebang-regex@npm:^3.0.0": version: 3.0.0 resolution: "shebang-regex@npm:3.0.0" @@ -12103,7 +11978,7 @@ __metadata: languageName: node linkType: hard -"shell-quote@npm:^1.6.1, shell-quote@npm:^1.8.3": +"shell-quote@npm:^1.8.3": version: 1.8.3 resolution: "shell-quote@npm:1.8.3" checksum: 10c0/bee87c34e1e986cfb4c30846b8e6327d18874f10b535699866f368ade11ea4ee45433d97bf5eada22c4320c27df79c3a6a7eb1bf3ecfc47f2c997d9e5e2672fd @@ -12533,18 +12408,6 @@ __metadata: languageName: node linkType: hard -"string.prototype.padend@npm:^3.0.0": - version: 3.1.6 - resolution: "string.prototype.padend@npm:3.1.6" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.2" - es-object-atoms: "npm:^1.0.0" - checksum: 10c0/8f2c8c1f3db1efcdc210668c80c87f2cea1253d6029ff296a172b5e13edc9adebeed4942d023de8d31f9b13b69f3f5d73de7141959b1f09817fba5f527e83be1 - languageName: node - linkType: hard - "string.prototype.trim@npm:^1.2.10": version: 1.2.10 resolution: "string.prototype.trim@npm:1.2.10" @@ -12672,15 +12535,6 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^5.3.0": - version: 5.5.0 - resolution: "supports-color@npm:5.5.0" - dependencies: - has-flag: "npm:^3.0.0" - checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 - languageName: node - linkType: hard - "supports-color@npm:^7.1.0": version: 7.2.0 resolution: "supports-color@npm:7.2.0" @@ -13903,7 +13757,7 @@ __metadata: languageName: node linkType: hard -"which@npm:^1.2.1, which@npm:^1.2.9": +"which@npm:^1.2.1": version: 1.3.1 resolution: "which@npm:1.3.1" dependencies: