Skip to content

Commit 46e3524

Browse files
authored
Deploy December 18, 2025 (#5727)
Changes: [Markus Stange] Use a longer test timeout when debugging with VS code. (#5679) [Markus Stange] Move Jest config from package.json to jest.config.js (#5680) [Markus Stange] Make binary profile format parsing use Uint8Array instead of ArrayBuffer (#5678) [Markus Stange] Use workbox-cli to generate the service worker (#5681) [Nazım Can Altınova] Migrate from Appveyor to GitHub Actions Windows runners (#5660) [Nazım Can Altınova] Remove some unused dependencies (#5696) [Nazım Can Altınova] Update the document links and sections (#5705) [Nazım Can Altınova] Clear selected and expanded call node paths on browser back button if it removes transforms (#5701) [Nazım Can Altınova] Properly type the Map and Set objects (#5623) [Valentin Gosu] Add priorityHeader field to network requests (#5707) [Nazım Can Altınova] Redirect unpublished url loads to the homepage similar to from-file (#5712) [Florian Quèze/Nazım Can Altınova] Add an importer for the text format taken as input by flamegraph.pl. (#5359) [Florian Quèze] Improve the import of profiles generated from clang -ftime-trace=file.json (#5714) [Markus Stange] Move React stuff out of marker schema logic module. (#5720) And thanks to our localizers: en-CA: chutten en-CA: Paul es-CL: ravmn fr: Théo Chevalier fur: Fabio Tomat ru: berry tr: Selim Şumlu zh-CN: Olvcpr423 zh-CN: wxie
2 parents 1206942 + eedf646 commit 46e3524

Some content is hidden

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

63 files changed

+310183
-1014
lines changed

.github/workflows/ci.yml

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ on:
99

1010
jobs:
1111
lint:
12-
runs-on: ubuntu-latest
12+
runs-on: ${{ matrix.os }}
13+
strategy:
14+
matrix:
15+
os: [ubuntu-latest, windows-latest]
1316
steps:
1417
- name: Checkout code
1518
uses: actions/checkout@v5
@@ -21,7 +24,10 @@ jobs:
2124
run: yarn lint
2225

2326
tests:
24-
runs-on: ubuntu-latest
27+
runs-on: ${{ matrix.os }}
28+
strategy:
29+
matrix:
30+
os: [ubuntu-latest, windows-latest]
2531
steps:
2632
- name: Checkout code
2733
uses: actions/checkout@v5
@@ -35,12 +41,16 @@ jobs:
3541
run: yarn test --coverage --logHeapUsage -w=4 --workerIdleMemoryLimit=1.5G
3642

3743
- name: Upload coverage to Codecov
44+
if: matrix.os == 'ubuntu-latest'
3845
uses: codecov/codecov-action@v5
3946
with:
4047
fail_ci_if_error: false
4148

4249
build-prod:
43-
runs-on: ubuntu-latest
50+
runs-on: ${{ matrix.os }}
51+
strategy:
52+
matrix:
53+
os: [ubuntu-latest, windows-latest]
4454
steps:
4555
- name: Checkout code
4656
uses: actions/checkout@v5
@@ -55,7 +65,10 @@ jobs:
5565
run: yarn build-symbolicator-cli:quiet
5666

5767
licence-check:
58-
runs-on: ubuntu-latest
68+
runs-on: ${{ matrix.os }}
69+
strategy:
70+
matrix:
71+
os: [ubuntu-latest, windows-latest]
5972
steps:
6073
- name: Checkout code
6174
uses: actions/checkout@v5
@@ -67,7 +80,10 @@ jobs:
6780
run: yarn license-check
6881

6982
typecheck:
70-
runs-on: ubuntu-latest
83+
runs-on: ${{ matrix.os }}
84+
strategy:
85+
matrix:
86+
os: [ubuntu-latest, windows-latest]
7187
steps:
7288
- name: Checkout code
7389
uses: actions/checkout@v5
@@ -79,7 +95,10 @@ jobs:
7995
run: yarn ts
8096

8197
alex:
82-
runs-on: ubuntu-latest
98+
runs-on: ${{ matrix.os }}
99+
strategy:
100+
matrix:
101+
os: [ubuntu-latest, windows-latest]
83102
steps:
84103
- name: Checkout code
85104
uses: actions/checkout@v5
@@ -91,7 +110,10 @@ jobs:
91110
run: yarn test-alex
92111

93112
yarn-lock:
94-
runs-on: ubuntu-latest
113+
runs-on: ${{ matrix.os }}
114+
strategy:
115+
matrix:
116+
os: [ubuntu-latest, windows-latest]
95117
steps:
96118
- name: Checkout code
97119
uses: actions/checkout@v5

.prettierrc.js

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,4 @@
11
module.exports = {
22
singleQuote: true,
33
trailingComma: 'es5',
4-
overrides: [
5-
{
6-
files: 'src/utils/path.js',
7-
options: {
8-
// New versions of Prettier rewrite Flow comments to non-comments, but
9-
// this is a problem in this file because it contains a Flow comment
10-
// that's not parsed properly by Babel.
11-
// This file uses Flow in a way that's Typescript compatible, so we can
12-
// use a typescript parser. This typescript parser doesn't rewrite
13-
// comments, so it works in this case.
14-
parser: 'babel-ts',
15-
},
16-
},
17-
{
18-
files: 'bin/*.js',
19-
options: {
20-
// Files in bin/ are javascript files that may use Flow comments. We
21-
// don't want the content of these Flow comments to be output outside of
22-
// comments so that the file can still be run directly with node.
23-
parser: 'espree',
24-
},
25-
},
26-
],
274
};

.vscode/launch.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"runtimeExecutable": "yarn",
99
"runtimeArgs": ["test"],
1010
"program": "${workspaceFolder}/node_modules/jest/bin/jest",
11-
"args": ["--runInBand", "${file}"],
11+
"args": ["--runInBand", "--testTimeout=300000", "${file}"],
1212
"cwd": "${workspaceFolder}",
1313
"internalConsoleOptions": "openOnSessionStart",
1414
"request": "launch",

appveyor.yml

Lines changed: 0 additions & 37 deletions
This file was deleted.

bin/l10n-sync.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const readline = require('readline');
1313
const { promisify } = require('util');
1414

1515
/**
16-
* @typeef {Object} ExecFilePromiseResult
16+
* @typedef {Object} ExecFilePromiseResult
1717
* @property {string | Buffer} stdout
1818
* @property {string | Buffer} stderr
1919
*/

bin/pre-install.js

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
* License, v. 2.0. If a copy of the MPL was not distributed with this
33
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
44

5-
/*:: type AgentsVersion = { [agentName: string]: string }; */
5+
/**
6+
* @typedef {Object.<string, string>} AgentsVersion
7+
*/
68

79
/*
810
* This file is run when a user runs `yarn install`, before doing anything else.
@@ -21,13 +23,12 @@ function checkVersions() {
2123
return;
2224
}
2325

24-
const agents /*: AgentsVersion */ = userAgent
25-
.split(' ')
26-
.reduce((agents, agent) => {
27-
const [key, value] = agent.split('/');
28-
agents[key] = value;
29-
return agents;
30-
}, {});
26+
/** @type {AgentsVersion} */
27+
const agents = userAgent.split(' ').reduce((agents, agent) => {
28+
const [key, value] = agent.split('/');
29+
agents[key] = value;
30+
return agents;
31+
}, {});
3132

3233
const checks = [checkNode(agents), checkYarn(agents)];
3334

@@ -47,7 +48,10 @@ function versionCompare(a, b) {
4748
return a.localeCompare(b, undefined, { numeric: true });
4849
}
4950

50-
function checkNode(agents /*: AgentsVersion */) {
51+
/**
52+
* @param {AgentsVersion} agents
53+
*/
54+
function checkNode(agents) {
5155
// Node versions usually have a starting `v`.
5256
const nodeVersion = agents.node.replace(/^v/, '');
5357
const expectedNodeVersion = parseExpectedNodeVersion();
@@ -75,7 +79,10 @@ function checkNode(agents /*: AgentsVersion */) {
7579
return true;
7680
}
7781

78-
function checkYarn(agents /*: AgentsVersion */) {
82+
/**
83+
* @param {AgentsVersion} agents
84+
*/
85+
function checkYarn(agents) {
7986
if (!('yarn' in agents)) {
8087
console.error(
8188
'This project uses Yarn instead of npm, please run `yarn install` instead of `npm install`.\n'

docs-developer/call-tree.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,9 @@ One key point of the aggregation done in the call tree is that it's focused on w
6767

6868
Imagine this simplified example of 3 samples of mixed C++, JavaScript Code (js), and JIT optimized JavaScript (JIT). The functions are all labeled as to their implementation.
6969

70-
| Sample index | Sample's stack |
71-
| ------------ | ---------------------------------------------------------------------------------------------- |
72-
| 0 | `JS::RunScript [c++] ➡ onLoad [js] ➡ a [js] ➡ b [js]` |
70+
| Sample index | Sample's stack |
71+
| ------------ | ------------------------------------------------------------------------------------------ |
72+
| 0 | `JS::RunScript [c++] ➡ onLoad [js] ➡ a [js] ➡ b [js]` |
7373
| 1 | `JS::RunScript [c++] ➡ onLoad [js] ➡ js::jit::IonCannon [c++] ➡ a [JIT] ➡ b [JIT]` |
7474
| 2 | `JS::RunScript [c++] ➡ onLoad [js] ➡ js::jit::IonCannon [c++] ➡ a [JIT] ➡ b [JIT]` |
7575

@@ -113,8 +113,8 @@ Now, taking the stacks and building a call tree produces the following:
113113

114114
This is the correct tree of what you would want to see. But since we are mixing languages together into the same stack system, it might be nice to view only JS functions. In order to do that we hide any C++ stacks, and assign them to the nearest JS stack. Our tables would be updated to look like the following.
115115

116-
| Sample index | Sample's stack |
117-
| ------------ | --------------------------------------- |
116+
| Sample index | Sample's stack |
117+
| ------------ | ------------------------------------- |
118118
| 0 | `onLoad [js] ➡ a [js] ➡ b [js]` |
119119
| 1 | `onLoad [js] ➡ a [JIT] ➡ b [JIT]` |
120120
| 2 | `onLoad [js] ➡ a [JIT] ➡ b [JIT]` |

docs-developer/data-sources.md

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,6 @@ Samples don't record every event that happens within the system, so some informa
1616

1717
### More Documentation on the Gecko Profiler:
1818

19-
- [nsIProfiler.idl](https://dxr.mozilla.org/mozilla-central/source/tools/profiler/gecko/nsIProfiler.idl)
20-
- [ProfileEntry.h](https://dxr.mozilla.org/mozilla-central/rev/b043233ec04f06768d59dcdfb9e928142280f3cc/tools/profiler/core/ProfileBufferEntry.h#322-411)
21-
22-
- [Profile Data Format](./profile-data)
23-
24-
## Timeline - DocShell Markers (unused in the Firefox Profiler)
25-
26-
The Gecko Profiler records marker data, but it doesn't include all of the markers available in the system. There is a competing implementation of markers used exclusively by the Firefox Devtools that are recorded per DocShell. These are not currently integrated into the Firefox Profiler.
27-
28-
- [Timeline C++ Implementation](https://dxr.mozilla.org/mozilla-central/source/docshell/base/timeline)
29-
- [Timeline Devtools JS Server](https://dxr.mozilla.org/mozilla-central/source/devtools/server/performance/timeline.ts)
30-
31-
## Tracelogger (unused in the Firefox Profiler)
32-
33-
While the previous performance tools collect information about how Gecko runs as a whole, Tracelogger is specific to the SpiderMonkey engine. Tracelogger is not sample based, therefore it records every step that the SpiderMonkey engine performs to run a given chunk of JavaScript code. It's primarily used by JavaScript engineers, and includes a firehose of information often reaching into the several gigs of information. There is no current integration of this information with the Firefox Profiler.
34-
35-
- [Tracelogger on GitHub](https://github.com/h4writer/tracelogger)
19+
- [nsIProfiler.idl](https://searchfox.org/firefox-main/source/tools/profiler/gecko/nsIProfiler.idl)
20+
- [ProfileBufferEntry.h](https://searchfox.org/firefox-main/rev/5ccf4a7d77a329f237d3a41e400049f9c47dc71f/tools/profiler/core/ProfileBufferEntry.h#433-566)
21+
- [Gecko Profile Data Format](./gecko-profile-format.md)

docs-developer/gecko-profile-format.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,6 @@ funcTable: {
326326
}
327327
```
328328

329-
[nsIProfiler]: https://dxr.mozilla.org/mozilla-central/source/tools/profiler/gecko/nsIProfiler.idl
329+
[nsIProfiler]: https://searchfox.org/firefox-main/source/tools/profiler/gecko/nsIProfiler.idl
330330
[ProfileBufferEntry.h]: https://searchfox.org/mozilla-central/rev/5966e98bdfa7355e0a3d9cce482f4717dc3419b0/tools/profiler/core/ProfileBufferEntry.h#358
331331
[profiler.firefox.com]: https://profiler.firefox.com

jest.config.js

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/* This Source Code Form is subject to the terms of the Mozilla Public
2+
* License, v. 2.0. If a copy of the MPL was not distributed with this
3+
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4+
5+
module.exports = {
6+
testMatch: ['<rootDir>/src/**/*.test.{js,jsx,ts,tsx}'],
7+
moduleFileExtensions: ['js', 'jsx', 'ts', 'tsx'],
8+
9+
testEnvironment: './src/test/custom-environment',
10+
setupFilesAfterEnv: ['jest-extended/all', './src/test/setup.ts'],
11+
12+
collectCoverageFrom: [
13+
'src/**/*.{js,jsx,ts,tsx}',
14+
'!**/node_modules/**',
15+
'!src/types/libdef/**',
16+
],
17+
18+
// Transform ESM modules to CommonJS for Jest
19+
// These packages ship as pure ESM and need to be transformed by Babel
20+
transformIgnorePatterns: [
21+
'/node_modules/(?!(query-string|decode-uri-component|iongraph-web|split-on-first|filter-obj|fetch-mock)/)',
22+
],
23+
24+
// Mock static assets (images, CSS, etc.)
25+
moduleNameMapper: {
26+
'\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga|ftl)$':
27+
'<rootDir>/src/test/fixtures/mocks/file-mock.ts',
28+
'\\.(css|less)$': '<rootDir>/src/test/fixtures/mocks/style-mock.ts',
29+
},
30+
31+
globals: {
32+
AVAILABLE_STAGING_LOCALES: null,
33+
},
34+
35+
snapshotFormat: {
36+
escapeString: true,
37+
printBasicPrototype: true,
38+
},
39+
verbose: false,
40+
};

0 commit comments

Comments
 (0)