Skip to content

Commit 2764d2b

Browse files
Integrate congyao/ops-vital (#3804) into staging-35
Integrated commit sha: 494418a Co-authored-by: cy-moi <[email protected]>
2 parents 5d01463 + 494418a commit 2764d2b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+446
-191
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ specs.log
1010
browserstack.err
1111
package.tgz
1212
docs/
13+
*.tsbuildinfo
1314

1415
# https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored
1516
.pnp.*

developer-extension/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
"version": "6.18.1",
44
"private": true,
55
"scripts": {
6-
"build": "rm -rf dist && webpack --mode production",
7-
"dev": "rm -rf dist && webpack --mode development && webpack serve --mode development --config-name=panel --hot"
6+
"build": "rm -rf dist && webpack --disable-interpret --mode production",
7+
"dev": "rm -rf dist && webpack --disable-interpret --mode development && webpack serve --mode development --config-name=panel --hot"
88
},
99
"devDependencies": {
1010
"@pmmmwh/react-refresh-webpack-plugin": "^0.6.0",

developer-extension/tsconfig.json renamed to developer-extension/tsconfig.webpack.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,7 @@
99
"lib": ["ES2022", "DOM"],
1010
"types": ["chrome", "react", "react-dom", "jasmine"],
1111
"skipLibCheck": true
12-
}
12+
},
13+
14+
"include": ["src"]
1315
}

developer-extension/webpack.config.js renamed to developer-extension/webpack.config.ts

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
const HtmlWebpackPlugin = require('html-webpack-plugin')
2-
const { default: WebextensionPlugin } = require('@webextension-toolbox/webpack-webextension-plugin')
3-
const CopyPlugin = require('copy-webpack-plugin')
4-
const { HotModuleReplacementPlugin } = require('webpack')
5-
const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin')
6-
const { createDefinePlugin } = require('../webpack.base')
1+
import HtmlWebpackPlugin from 'html-webpack-plugin'
2+
import { WebextensionPlugin } from '@webextension-toolbox/webpack-webextension-plugin'
3+
import CopyPlugin from 'copy-webpack-plugin'
4+
import ReactRefreshWebpackPlugin from '@pmmmwh/react-refresh-webpack-plugin'
5+
import webpack from 'webpack'
6+
import { createDefinePlugin } from '../webpack.base.ts'
7+
import packageJson from './package.json' with { type: 'json' }
78

8-
module.exports = (_env, argv) => {
9+
export default (_env: unknown, argv: { mode?: webpack.Configuration['mode'] }) => {
910
const isDevelopment = argv.mode === 'development'
1011

1112
return [
@@ -31,16 +32,12 @@ module.exports = (_env, argv) => {
3132
{
3233
from: './manifest.json',
3334
to: 'manifest.json',
34-
transform(content) {
35+
transform(content: Buffer) {
3536
const manifest = JSON.parse(content.toString())
36-
const packageJson = require('./package.json')
37-
38-
// Add required fields
3937
manifest.version = packageJson.version
4038
manifest.version_name = packageJson.version
4139

4240
if (isDevelopment) {
43-
// Inject dev CSP
4441
manifest.content_security_policy = {
4542
extension_pages: "script-src 'self' http://localhost:3001; object-src 'self'",
4643
}
@@ -72,11 +69,10 @@ module.exports = (_env, argv) => {
7269
errors: true,
7370
warnings: false,
7471
},
75-
// Disable webpack hot client injection to avoid CSP issues
7672
webSocketTransport: 'ws',
7773
},
7874
devMiddleware: {
79-
writeToDisk: (filePath) => filePath.endsWith('panel.html'),
75+
writeToDisk: (filePath: string) => filePath.endsWith('panel.html'),
8076
},
8177
}
8278
: undefined,
@@ -87,8 +83,8 @@ module.exports = (_env, argv) => {
8783
plugins: [
8884
new HtmlWebpackPlugin({
8985
filename: 'panel.html',
90-
inject: false, // Disable auto script injection - we handle it manually
91-
templateContent: ({ isDevelopment }) => `
86+
inject: false,
87+
templateContent: () => `
9288
<!doctype html>
9389
<html>
9490
<head>
@@ -109,7 +105,7 @@ module.exports = (_env, argv) => {
109105
templateParameters: { isDevelopment },
110106
}),
111107
createDefinePlugin(),
112-
...(isDevelopment ? [new HotModuleReplacementPlugin(), new ReactRefreshWebpackPlugin()] : []),
108+
...(isDevelopment ? [new webpack.HotModuleReplacementPlugin(), new ReactRefreshWebpackPlugin()] : []),
113109
],
114110
}),
115111
baseConfig({
@@ -140,29 +136,40 @@ module.exports = (_env, argv) => {
140136
}),
141137
]
142138

143-
function baseConfig({ name, entry, output, plugins, devServer }) {
139+
function baseConfig({
140+
name,
141+
entry,
142+
output,
143+
plugins,
144+
devServer,
145+
}: {
146+
name: string
147+
entry: string
148+
output?: webpack.Configuration['output']
149+
plugins?: webpack.Configuration['plugins']
150+
devServer?: any
151+
}): webpack.Configuration & { devServer?: any } {
144152
return {
145153
name,
146154
entry,
147155
output,
148-
// Use source-map instead of eval-based devtools for CSP compatibility
149156
devtool: isDevelopment ? 'source-map' : false,
150157
devServer,
151-
152158
module: {
153159
rules: [
154160
{
155161
test: /\.tsx?$/,
156162
loader: 'ts-loader',
157163
exclude: /node_modules/,
158164
options: {
165+
configFile: 'tsconfig.webpack.json',
159166
onlyCompileBundledFiles: true,
160167
...(isDevelopment && {
161168
getCustomTransformers: () => ({
162-
before: [require('react-refresh-typescript').default()],
169+
before: [new ReactRefreshWebpackPlugin()],
163170
}),
164-
transpileOnly: true,
165171
}),
172+
transpileOnly: true,
166173
},
167174
},
168175
{
@@ -183,18 +190,16 @@ module.exports = (_env, argv) => {
183190
},
184191
],
185192
},
186-
187193
resolve: {
188194
extensions: ['.ts', '.tsx', '.js'],
189195
},
190-
191196
plugins,
192197
}
193198
}
194199
}
195200

196201
function getVersion() {
197-
const version = require('./package.json').version
202+
const version: string = packageJson.version
198203

199204
return {
200205
version: version.replace(/-(alpha|beta)/, ''),

eslint.config.mjs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,13 @@ export default tseslint.config(
4545
languageOptions: {
4646
parserOptions: {
4747
project: [
48-
'./tsconfig.json',
49-
'./test/apps/**/tsconfig.json',
48+
'./tsconfig.default.json',
49+
'./tsconfig.scripts.json',
50+
'./developer-extension/tsconfig.webpack.json',
5051
'./test/e2e/tsconfig.json',
51-
'./scripts/tsconfig.json',
52-
'./developer-extension/tsconfig.json',
5352
'./performances/tsconfig.json',
53+
54+
'./test/apps/**/tsconfig.json',
5455
],
5556
sourceType: 'module',
5657

@@ -404,7 +405,6 @@ export default tseslint.config(
404405
{
405406
// Files executed by nodejs
406407
files: [
407-
'**/webpack.*.js',
408408
'scripts/**',
409409
'test/**/*.js',
410410
'eslint-local-rules/**/*.js',
@@ -419,6 +419,14 @@ export default tseslint.config(
419419
},
420420
},
421421

422+
{
423+
files: ['**/webpack.*.ts'],
424+
rules: {
425+
// Webpack configuration files are expected to use a default export.
426+
'import/no-default-export': 'off',
427+
},
428+
},
429+
422430
{
423431
files: ['test/e2e/**/*.ts'],
424432
rules: {

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"build:docs:html": "typedoc --out ./docs",
1717
"format": "prettier --check .",
1818
"lint": "scripts/cli lint .",
19-
"typecheck": "scripts/cli typecheck . && scripts/cli typecheck developer-extension && scripts/cli typecheck scripts",
19+
"typecheck": "tsc -b --noEmit true",
2020
"dev": "node scripts/dev-server.ts",
2121
"release": "scripts/cli release",
2222
"version": "scripts/cli version",

packages/core/src/tools/experimentalFeatures.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export enum ExperimentalFeature {
1919
EARLY_REQUEST_COLLECTION = 'early_request_collection',
2020
WATCH_COOKIE_WITHOUT_LOCK = 'watch_cookie_without_lock',
2121
USE_TREE_WALKER_FOR_ACTION_NAME = 'use_tree_walker_for_action_name',
22+
FEATURE_OPERATION_VITAL = 'feature_operation_vital',
2223
}
2324

2425
const enabledExperimentalFeatures: Set<ExperimentalFeature> = new Set()

packages/flagging/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"scripts": {
1010
"pack": "yarn pack",
1111
"build": "run-p build:cjs build:esm build:bundle",
12-
"build:bundle": "rm -rf bundle && SDK_SETUP=cdn webpack --mode=production",
12+
"build:bundle": "rm -rf bundle && SDK_SETUP=cdn webpack --disable-interpret --mode=production",
1313
"build:cjs": "rm -rf cjs && tsc -p tsconfig.cjs.json && yarn replace-build-env cjs",
1414
"build:esm": "rm -rf esm && tsc -p tsconfig.esm.json && yarn replace-build-env esm",
1515
"replace-build-env": "node ../../scripts/build/replace-build-env.ts"

packages/flagging/webpack.config.js

Lines changed: 0 additions & 10 deletions
This file was deleted.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import path from 'path'
2+
import type webpack from 'webpack'
3+
import webpackBase from '../../webpack.base.ts'
4+
5+
export default (_env: unknown, argv: { mode?: webpack.Configuration['mode'] }) =>
6+
webpackBase({
7+
mode: argv.mode,
8+
entry: path.resolve(import.meta.dirname, 'src/entries/main.ts'),
9+
filename: 'datadog-flagging.js',
10+
})

0 commit comments

Comments
 (0)