From 713e4f5274ce8561268e8348da21968be0350a99 Mon Sep 17 00:00:00 2001
From: Jane Chu <7559015+janechu@users.noreply.github.com>
Date: Mon, 20 Apr 2026 13:25:37 -0700
Subject: [PATCH 1/3] chore: update webui to 0.0.10 (#7455)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
# Pull Request
## 📖 Description
This change updates the `webui` dependency to 0.0.10.
## 📑 Test Plan
This will allow for us to update our integration tests.
## ✅ Checklist
### General
- [x] I have included a change request file using `$ npm run change`
- [ ] I have added tests for my changes.
- [x] I have tested my changes.
- [ ] I have updated the project documentation to reflect my changes.
- [x] I have read the [CONTRIBUTING](https://github.com/microsoft/fast/blob/main/CONTRIBUTING.md) documentation and followed the [standards](https://github.com/microsoft/fast/blob/main/CODE_OF_CONDUCT.md#our-standards) for this project.
---
...-ee5e1a5d-0ff4-46fe-96c9-ed982e93e391.json | 7 +++
package-lock.json | 56 +++++++++----------
packages/fast-html/package.json | 2 +-
3 files changed, 36 insertions(+), 29 deletions(-)
create mode 100644 change/@microsoft-fast-html-ee5e1a5d-0ff4-46fe-96c9-ed982e93e391.json
diff --git a/change/@microsoft-fast-html-ee5e1a5d-0ff4-46fe-96c9-ed982e93e391.json b/change/@microsoft-fast-html-ee5e1a5d-0ff4-46fe-96c9-ed982e93e391.json
new file mode 100644
index 00000000000..293e17774d4
--- /dev/null
+++ b/change/@microsoft-fast-html-ee5e1a5d-0ff4-46fe-96c9-ed982e93e391.json
@@ -0,0 +1,7 @@
+{
+ "type": "none",
+ "comment": "chore: update webui to 0.0.10",
+ "packageName": "@microsoft/fast-html",
+ "email": "7559015+janechu@users.noreply.github.com",
+ "dependentChangeType": "none"
+}
diff --git a/package-lock.json b/package-lock.json
index e47196b67a3..b24f9f73030 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1617,9 +1617,9 @@
}
},
"node_modules/@microsoft/webui": {
- "version": "0.0.9",
- "resolved": "https://registry.npmjs.org/@microsoft/webui/-/webui-0.0.9.tgz",
- "integrity": "sha512-jAV7GiTeICbuAhNmwc5Fyf07oNGcRqbsqrC8DqUM0P6yxqnFTt1PmB/VzTP8NhMVxufaqGcy2qY6QueG9Asypg==",
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/@microsoft/webui/-/webui-0.0.10.tgz",
+ "integrity": "sha512-lGj0PyVoYUOOJ1MWhseGSe5ZJQurp7KWvSgYtNMBiAb140rD2MXQsHwbwIPsqEPFPtqtCZcxuNzbDqJ7Bl8gRQ==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -1630,18 +1630,18 @@
"node": ">=18"
},
"optionalDependencies": {
- "@microsoft/webui-darwin-arm64": "0.0.9",
- "@microsoft/webui-darwin-x64": "0.0.9",
- "@microsoft/webui-linux-arm64": "0.0.9",
- "@microsoft/webui-linux-x64": "0.0.9",
- "@microsoft/webui-win32-arm64": "0.0.9",
- "@microsoft/webui-win32-x64": "0.0.9"
+ "@microsoft/webui-darwin-arm64": "0.0.10",
+ "@microsoft/webui-darwin-x64": "0.0.10",
+ "@microsoft/webui-linux-arm64": "0.0.10",
+ "@microsoft/webui-linux-x64": "0.0.10",
+ "@microsoft/webui-win32-arm64": "0.0.10",
+ "@microsoft/webui-win32-x64": "0.0.10"
}
},
"node_modules/@microsoft/webui-darwin-arm64": {
- "version": "0.0.9",
- "resolved": "https://registry.npmjs.org/@microsoft/webui-darwin-arm64/-/webui-darwin-arm64-0.0.9.tgz",
- "integrity": "sha512-91HprvaitU62IzdYgt22qMCiEXvr0Utg9vxUc6Mt3mh4KVfSsFVmN7Z6J7eXZQ858CEW4xXKSfpeiEXKkpNGSg==",
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/@microsoft/webui-darwin-arm64/-/webui-darwin-arm64-0.0.10.tgz",
+ "integrity": "sha512-ApVNle/cU++YYeSG1qiyyP6wC2B5lxPhoKUZI8KZlPLViTwgrJ9Th37HhPqvCPqLMnY06jYtAQlPXbjGZxCNsQ==",
"cpu": [
"arm64"
],
@@ -1653,9 +1653,9 @@
]
},
"node_modules/@microsoft/webui-darwin-x64": {
- "version": "0.0.9",
- "resolved": "https://registry.npmjs.org/@microsoft/webui-darwin-x64/-/webui-darwin-x64-0.0.9.tgz",
- "integrity": "sha512-JDVmFki6CRRpj+F9CNTPI+b67fIQicLn3AmUQLFFCp0JQqaeGwpdUmXjzPy/Am+dQDCYVL4bKOeysmz4pHDDMA==",
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/@microsoft/webui-darwin-x64/-/webui-darwin-x64-0.0.10.tgz",
+ "integrity": "sha512-BfKIrhqNDFWA1UZPLccZGq1LEDbA8pNEAsJXaaidAFdzB6Mwhezk9tTKArATthctBOd8O9k5sx5rm7+5FnE15A==",
"cpu": [
"x64"
],
@@ -1667,9 +1667,9 @@
]
},
"node_modules/@microsoft/webui-linux-arm64": {
- "version": "0.0.9",
- "resolved": "https://registry.npmjs.org/@microsoft/webui-linux-arm64/-/webui-linux-arm64-0.0.9.tgz",
- "integrity": "sha512-fGcSTZi3QfqtdTXsGkSVQ8JT8o4gLpx/32i10qCxf/FvVxkxs7DosgjXgl7lx+kJ2XuTqCOCbSrLLjIK8T/WdA==",
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/@microsoft/webui-linux-arm64/-/webui-linux-arm64-0.0.10.tgz",
+ "integrity": "sha512-D5gg78/s3QEph3zwcL7PxaHEp33r7EIX2/CpzVXhYq+nTE50Kx3MYQVkyVoSFCp80dz8NpgEB771/JeFGOQ3lQ==",
"cpu": [
"arm64"
],
@@ -1681,9 +1681,9 @@
]
},
"node_modules/@microsoft/webui-linux-x64": {
- "version": "0.0.9",
- "resolved": "https://registry.npmjs.org/@microsoft/webui-linux-x64/-/webui-linux-x64-0.0.9.tgz",
- "integrity": "sha512-w4AtqZevHbf+AUSMuSq0388DPfZEDi0DoajxVdNas5NBZ8qEr4d/2iP0VSx1vMBcH7nIPHjzM7DJnr9rYnt4Mw==",
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/@microsoft/webui-linux-x64/-/webui-linux-x64-0.0.10.tgz",
+ "integrity": "sha512-RCnwb7F6Wf75LYDnva/vIN0sNEuKRAXS5BEL8Yg5LuoZtncTGctGxSvMoqhLbBAeD4nnlhTyLn/ZFQVRWJluGw==",
"cpu": [
"x64"
],
@@ -1695,9 +1695,9 @@
]
},
"node_modules/@microsoft/webui-win32-arm64": {
- "version": "0.0.9",
- "resolved": "https://registry.npmjs.org/@microsoft/webui-win32-arm64/-/webui-win32-arm64-0.0.9.tgz",
- "integrity": "sha512-nNl7yvIu7uZ2y0/ViJ9tpOwflB0sqd1hHF0P53PK8dBfT7bqhby+UNv6tLAFjUYiu1xjnpTje8QIeQZKh2+Qow==",
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/@microsoft/webui-win32-arm64/-/webui-win32-arm64-0.0.10.tgz",
+ "integrity": "sha512-dFHzxCCOhEPX9kC64uWvw3gV5ldeVdlQ2QreAHt/ewlnOQQmUFWQpzJaSWwirEezWwE20+uakECSt65LBnRuxQ==",
"cpu": [
"arm64"
],
@@ -1709,9 +1709,9 @@
]
},
"node_modules/@microsoft/webui-win32-x64": {
- "version": "0.0.9",
- "resolved": "https://registry.npmjs.org/@microsoft/webui-win32-x64/-/webui-win32-x64-0.0.9.tgz",
- "integrity": "sha512-FH4gprnUnNcEYgDkPHQS9D8h9gRQqYiy5Wswkgi75EgcELg2k8usGERexLOl/nmLMv4E3su7alhDKQm5oMXIJQ==",
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/@microsoft/webui-win32-x64/-/webui-win32-x64-0.0.10.tgz",
+ "integrity": "sha512-9nrveoR0Cu9ZRAlXdGh1SI6ljSRwhWSlDj2vAmf4XAWSA4P5nOwL7krQtX/QTbj3xjytTC5t6vxOvASJdqCnSg==",
"cpu": [
"x64"
],
@@ -8713,7 +8713,7 @@
"devDependencies": {
"@microsoft/fast-build": "^0.4.0",
"@microsoft/fast-element": "^2.10.4",
- "@microsoft/webui": "0.0.9"
+ "@microsoft/webui": "0.0.10"
},
"peerDependencies": {
"@microsoft/fast-element": "^2.10.4"
diff --git a/packages/fast-html/package.json b/packages/fast-html/package.json
index f6aeba4ecb6..e6bf7594474 100644
--- a/packages/fast-html/package.json
+++ b/packages/fast-html/package.json
@@ -66,7 +66,7 @@
"devDependencies": {
"@microsoft/fast-build": "^0.4.0",
"@microsoft/fast-element": "^2.10.4",
- "@microsoft/webui": "0.0.9"
+ "@microsoft/webui": "0.0.10"
},
"beachball": {
"disallowedChangeTypes": [
From 9e39b1a2c9bd2ffde847a61b6829dc984ee76fb5 Mon Sep 17 00:00:00 2001
From: Jane Chu <7559015+janechu@users.noreply.github.com>
Date: Mon, 20 Apr 2026 15:02:03 -0700
Subject: [PATCH 2/3] chore: add an all benchmark (#7454)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
# Pull Request
## 📖 Description
This change adds an "all" benchmark that includes all other benchmark components to allow for better performance benchmarking against multiple components.
### 🎫 Issues
Further work on #7248
## 👩💻 Reviewer Notes
This fills a gap where instead of multiple of the same component being iterated on this is all of the components. This should show more meaningful results for performance checking against things like many different components on a page.
## ✅ Checklist
### General
- [ ] I have included a change request file using `$ npm run change`
- [ ] I have added tests for my changes.
- [x] I have tested my changes.
- [ ] I have updated the project documentation to reflect my changes.
- [x] I have read the [CONTRIBUTING](https://github.com/microsoft/fast/blob/main/CONTRIBUTING.md) documentation and followed the [standards](https://github.com/microsoft/fast/blob/main/CODE_OF_CONDUCT.md#our-standards) for this project.
---
.../bench/src/scenarios/all/csr/index.html | 13 +++
packages/bench/src/scenarios/all/csr/main.ts | 16 ++++
packages/bench/src/scenarios/all/element.ts | 80 +++++++++++++++++++
.../src/scenarios/all/hydration/index.html | 16 ++++
.../bench/src/scenarios/all/hydration/main.ts | 17 ++++
.../src/scenarios/attr-reflect/csr/main.ts | 11 +--
.../src/scenarios/attr-reflect/element.ts | 11 ++-
.../scenarios/attr-reflect/hydration/main.ts | 2 +-
.../attr-reflect/hydration/render.ts | 4 +-
.../src/scenarios/attr-reflect/template.html | 2 +-
.../bench/src/scenarios/basic/csr/main.ts | 11 +--
packages/bench/src/scenarios/basic/element.ts | 6 +-
.../src/scenarios/basic/hydration/main.ts | 2 +-
.../src/scenarios/basic/hydration/render.ts | 4 +-
.../bench/src/scenarios/basic/template.html | 2 +-
.../src/scenarios/bind-event/csr/main.ts | 11 +--
.../bench/src/scenarios/bind-event/element.ts | 6 +-
.../scenarios/bind-event/hydration/main.ts | 2 +-
.../scenarios/bind-event/hydration/render.ts | 4 +-
.../src/scenarios/bind-event/template.html | 2 +-
.../src/scenarios/dot-syntax/csr/main.ts | 8 +-
.../scenarios/dot-syntax/hydration/main.ts | 4 +-
.../scenarios/dot-syntax/hydration/render.ts | 4 +-
.../src/scenarios/dot-syntax/template.html | 2 +-
.../src/scenarios/ref-slotted/csr/main.ts | 12 +--
.../src/scenarios/ref-slotted/element.ts | 7 +-
.../scenarios/ref-slotted/hydration/main.ts | 2 +-
.../scenarios/ref-slotted/hydration/render.ts | 4 +-
.../src/scenarios/ref-slotted/template.html | 2 +-
.../bench/src/scenarios/repeat/csr/main.ts | 18 +----
.../bench/src/scenarios/repeat/element.ts | 13 ++-
.../src/scenarios/repeat/hydration/main.ts | 2 +-
.../src/scenarios/repeat/hydration/render.ts | 6 +-
.../bench/src/scenarios/repeat/template.html | 2 +-
packages/bench/src/scenarios/when/csr/main.ts | 22 +----
packages/bench/src/scenarios/when/element.ts | 17 +++-
.../src/scenarios/when/hydration/main.ts | 2 +-
.../src/scenarios/when/hydration/render.ts | 4 +-
.../bench/src/scenarios/when/template.html | 2 +-
packages/bench/vite.config.ts | 69 ++++++++++++----
40 files changed, 309 insertions(+), 115 deletions(-)
create mode 100644 packages/bench/src/scenarios/all/csr/index.html
create mode 100644 packages/bench/src/scenarios/all/csr/main.ts
create mode 100644 packages/bench/src/scenarios/all/element.ts
create mode 100644 packages/bench/src/scenarios/all/hydration/index.html
create mode 100644 packages/bench/src/scenarios/all/hydration/main.ts
diff --git a/packages/bench/src/scenarios/all/csr/index.html b/packages/bench/src/scenarios/all/csr/index.html
new file mode 100644
index 00000000000..91a37515abc
--- /dev/null
+++ b/packages/bench/src/scenarios/all/csr/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+ all / csr
+
+
+
+
+
+
+
diff --git a/packages/bench/src/scenarios/all/csr/main.ts b/packages/bench/src/scenarios/all/csr/main.ts
new file mode 100644
index 00000000000..01d61076e34
--- /dev/null
+++ b/packages/bench/src/scenarios/all/csr/main.ts
@@ -0,0 +1,16 @@
+import { runBenchmark } from "../../harness.js";
+import { BenchElement, template } from "../element.js";
+
+BenchElement.define({
+ name: "all-bench-element",
+ template,
+});
+
+let id = 0;
+
+runBenchmark(() => {
+ const count = ++id;
+ const el = document.createElement("all-bench-element") as BenchElement;
+ el.count = count;
+ return el;
+});
diff --git a/packages/bench/src/scenarios/all/element.ts b/packages/bench/src/scenarios/all/element.ts
new file mode 100644
index 00000000000..29d57422db9
--- /dev/null
+++ b/packages/bench/src/scenarios/all/element.ts
@@ -0,0 +1,80 @@
+import {
+ attr,
+ FASTElement,
+ html,
+ nullableNumberConverter,
+} from "@microsoft/fast-element";
+import {
+ BenchElement as AttrReflectBenchElement,
+ template as attrReflectTemplate,
+} from "../attr-reflect/element.js";
+import {
+ BenchElement as BasicBenchElement,
+ template as basicTemplate,
+} from "../basic/element.js";
+import {
+ BenchElement as BindEventBenchElement,
+ template as bindEventTemplate,
+} from "../bind-event/element.js";
+import { BenchElement as DotSyntaxElement } from "../dot-syntax/element.js";
+import {
+ BenchElement as RefSlottedBenchElement,
+ template as refSlottedTemplate,
+} from "../ref-slotted/element.js";
+import {
+ BenchElement as RepeatBenchElement,
+ template as repeatTemplate,
+} from "../repeat/element.js";
+import {
+ BenchElement as WhenBenchElement,
+ template as whenTemplate,
+} from "../when/element.js";
+
+AttrReflectBenchElement.define({
+ name: "attr-reflect-bench-element",
+ template: attrReflectTemplate,
+});
+
+BasicBenchElement.define({
+ name: "basic-bench-element",
+ template: basicTemplate,
+});
+
+BindEventBenchElement.define({
+ name: "bind-event-bench-element",
+ template: bindEventTemplate,
+});
+
+RefSlottedBenchElement.define({
+ name: "ref-slotted-bench-element",
+ template: refSlottedTemplate,
+});
+
+RepeatBenchElement.define({
+ name: "repeat-bench-element",
+ template: repeatTemplate,
+});
+
+WhenBenchElement.define({
+ name: "when-bench-element",
+ template: whenTemplate,
+});
+
+DotSyntaxElement.define({
+ name: "dot-syntax-bench-element",
+});
+
+export class BenchElement extends FASTElement {
+ @attr({ converter: nullableNumberConverter })
+ count?: number;
+}
+
+export const template = html`
+
+
+
+ slotted content
+
+
+
+`;
diff --git a/packages/bench/src/scenarios/all/hydration/index.html b/packages/bench/src/scenarios/all/hydration/index.html
new file mode 100644
index 00000000000..a32384c7bba
--- /dev/null
+++ b/packages/bench/src/scenarios/all/hydration/index.html
@@ -0,0 +1,16 @@
+
+
+
+
+
+ all / hydration
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/bench/src/scenarios/all/hydration/main.ts b/packages/bench/src/scenarios/all/hydration/main.ts
new file mode 100644
index 00000000000..6559a23726f
--- /dev/null
+++ b/packages/bench/src/scenarios/all/hydration/main.ts
@@ -0,0 +1,17 @@
+import { RenderableFASTElement, TemplateElement } from "@microsoft/fast-html";
+import { signalDone } from "../../harness.js";
+import { BenchElement } from "../element.js";
+
+RenderableFASTElement(BenchElement).defineAsync({
+ name: "all-bench-element",
+ templateOptions: "defer-and-hydrate",
+});
+
+performance.mark("bench-start");
+
+TemplateElement.config({
+ hydrationComplete() {
+ performance.mark("bench-end");
+ signalDone();
+ },
+}).define({ name: "f-template" });
diff --git a/packages/bench/src/scenarios/attr-reflect/csr/main.ts b/packages/bench/src/scenarios/attr-reflect/csr/main.ts
index 258bb980ded..497eea9005b 100644
--- a/packages/bench/src/scenarios/attr-reflect/csr/main.ts
+++ b/packages/bench/src/scenarios/attr-reflect/csr/main.ts
@@ -1,19 +1,16 @@
-import { html } from "@microsoft/fast-element";
import { runBenchmark } from "../../harness.js";
-import { BenchElement } from "../element.js";
+import { BenchElement, template } from "../element.js";
BenchElement.define({
- name: "bench-element",
- template: html`
- ${x => x.label} (${x => x.count})
- `,
+ name: "attr-reflect-bench-element",
+ template,
});
let id = 0;
runBenchmark(() => {
const count = ++id;
- const el = document.createElement("bench-element") as BenchElement;
+ const el = document.createElement("attr-reflect-bench-element") as BenchElement;
el.label = `item-${count}`;
el.count = count;
el.active = true;
diff --git a/packages/bench/src/scenarios/attr-reflect/element.ts b/packages/bench/src/scenarios/attr-reflect/element.ts
index f2406393c26..c3ead39418e 100644
--- a/packages/bench/src/scenarios/attr-reflect/element.ts
+++ b/packages/bench/src/scenarios/attr-reflect/element.ts
@@ -1,4 +1,9 @@
-import { attr, FASTElement, nullableNumberConverter } from "@microsoft/fast-element";
+import {
+ attr,
+ FASTElement,
+ html,
+ nullableNumberConverter,
+} from "@microsoft/fast-element";
export class BenchElement extends FASTElement {
@attr
@@ -10,3 +15,7 @@ export class BenchElement extends FASTElement {
@attr({ mode: "boolean" })
active?: boolean;
}
+
+export const template = html`
+ ${x => x.label} (${x => x.count})
+`;
diff --git a/packages/bench/src/scenarios/attr-reflect/hydration/main.ts b/packages/bench/src/scenarios/attr-reflect/hydration/main.ts
index 17cbaddee9f..8a107a80e03 100644
--- a/packages/bench/src/scenarios/attr-reflect/hydration/main.ts
+++ b/packages/bench/src/scenarios/attr-reflect/hydration/main.ts
@@ -3,7 +3,7 @@ import { signalDone } from "../../harness.js";
import { BenchElement } from "../element.js";
RenderableFASTElement(BenchElement).defineAsync({
- name: "bench-element",
+ name: "attr-reflect-bench-element",
templateOptions: "defer-and-hydrate",
});
diff --git a/packages/bench/src/scenarios/attr-reflect/hydration/render.ts b/packages/bench/src/scenarios/attr-reflect/hydration/render.ts
index 4f0ed4ffcf5..18a7391f300 100644
--- a/packages/bench/src/scenarios/attr-reflect/hydration/render.ts
+++ b/packages/bench/src/scenarios/attr-reflect/hydration/render.ts
@@ -2,13 +2,13 @@ export function render(index: number): string {
const count = `${index + 1}`;
const label = `item-${count}`;
return /* html */ `
-
+
${label}
(${count})
-
+
`;
}
diff --git a/packages/bench/src/scenarios/attr-reflect/template.html b/packages/bench/src/scenarios/attr-reflect/template.html
index dcb945208c4..c02297339f3 100644
--- a/packages/bench/src/scenarios/attr-reflect/template.html
+++ b/packages/bench/src/scenarios/attr-reflect/template.html
@@ -1,4 +1,4 @@
-
+
{{label}} ({{count}})
diff --git a/packages/bench/src/scenarios/basic/csr/main.ts b/packages/bench/src/scenarios/basic/csr/main.ts
index 7c5ffc5af7f..948c683dac1 100644
--- a/packages/bench/src/scenarios/basic/csr/main.ts
+++ b/packages/bench/src/scenarios/basic/csr/main.ts
@@ -1,16 +1,13 @@
-import { html } from "@microsoft/fast-element";
import { runBenchmark } from "../../harness.js";
-import { BenchElement } from "../element.js";
+import { BenchElement, template } from "../element.js";
BenchElement.define({
- name: "bench-element",
- template: html`
-
- `,
+ name: "basic-bench-element",
+ template,
});
runBenchmark(() => {
- const el = document.createElement("bench-element");
+ const el = document.createElement("basic-bench-element");
el.innerHTML = "hello";
return el;
});
diff --git a/packages/bench/src/scenarios/basic/element.ts b/packages/bench/src/scenarios/basic/element.ts
index 1247ab9e4ba..986d1346b2e 100644
--- a/packages/bench/src/scenarios/basic/element.ts
+++ b/packages/bench/src/scenarios/basic/element.ts
@@ -1,3 +1,7 @@
-import { FASTElement } from "@microsoft/fast-element";
+import { FASTElement, html } from "@microsoft/fast-element";
export class BenchElement extends FASTElement {}
+
+export const template = html`
+
+`;
diff --git a/packages/bench/src/scenarios/basic/hydration/main.ts b/packages/bench/src/scenarios/basic/hydration/main.ts
index 84c6f4629da..96607c01b96 100644
--- a/packages/bench/src/scenarios/basic/hydration/main.ts
+++ b/packages/bench/src/scenarios/basic/hydration/main.ts
@@ -3,7 +3,7 @@ import { signalDone } from "../../harness.js";
import { BenchElement } from "../element.js";
BenchElement.defineAsync({
- name: "bench-element",
+ name: "basic-bench-element",
});
performance.mark("bench-start");
diff --git a/packages/bench/src/scenarios/basic/hydration/render.ts b/packages/bench/src/scenarios/basic/hydration/render.ts
index 0d2d63c8299..0c13e232869 100644
--- a/packages/bench/src/scenarios/basic/hydration/render.ts
+++ b/packages/bench/src/scenarios/basic/hydration/render.ts
@@ -1,10 +1,10 @@
export function render(): string {
return /* html */ `
-
+
hello
-
+
`;
}
diff --git a/packages/bench/src/scenarios/basic/template.html b/packages/bench/src/scenarios/basic/template.html
index c0be9263dff..6d7384de8a3 100644
--- a/packages/bench/src/scenarios/basic/template.html
+++ b/packages/bench/src/scenarios/basic/template.html
@@ -1,4 +1,4 @@
-
+
diff --git a/packages/bench/src/scenarios/bind-event/csr/main.ts b/packages/bench/src/scenarios/bind-event/csr/main.ts
index 06d29b8d0f3..2bb1c18f7b7 100644
--- a/packages/bench/src/scenarios/bind-event/csr/main.ts
+++ b/packages/bench/src/scenarios/bind-event/csr/main.ts
@@ -1,12 +1,9 @@
-import { html } from "@microsoft/fast-element";
import { runBenchmark } from "../../harness.js";
-import { BenchElement } from "../element.js";
+import { BenchElement, template } from "../element.js";
BenchElement.define({
- name: "bench-element",
- template: html`
-
- `,
+ name: "bind-event-bench-element",
+ template,
});
-runBenchmark(() => document.createElement("bench-element"));
+runBenchmark(() => document.createElement("bind-event-bench-element"));
diff --git a/packages/bench/src/scenarios/bind-event/element.ts b/packages/bench/src/scenarios/bind-event/element.ts
index 2cee5bcaf5b..098b12d4ad4 100644
--- a/packages/bench/src/scenarios/bind-event/element.ts
+++ b/packages/bench/src/scenarios/bind-event/element.ts
@@ -1,4 +1,4 @@
-import { attr, FASTElement } from "@microsoft/fast-element";
+import { attr, FASTElement, html } from "@microsoft/fast-element";
export class BenchElement extends FASTElement {
@attr count: string = "0";
@@ -7,3 +7,7 @@ export class BenchElement extends FASTElement {
this.count = String(parseInt(this.count, 10) + 1);
}
}
+
+export const template = html`
+
+`;
diff --git a/packages/bench/src/scenarios/bind-event/hydration/main.ts b/packages/bench/src/scenarios/bind-event/hydration/main.ts
index 17cbaddee9f..403a1513ed0 100644
--- a/packages/bench/src/scenarios/bind-event/hydration/main.ts
+++ b/packages/bench/src/scenarios/bind-event/hydration/main.ts
@@ -3,7 +3,7 @@ import { signalDone } from "../../harness.js";
import { BenchElement } from "../element.js";
RenderableFASTElement(BenchElement).defineAsync({
- name: "bench-element",
+ name: "bind-event-bench-element",
templateOptions: "defer-and-hydrate",
});
diff --git a/packages/bench/src/scenarios/bind-event/hydration/render.ts b/packages/bench/src/scenarios/bind-event/hydration/render.ts
index c0856c6811c..cb8189b3fff 100644
--- a/packages/bench/src/scenarios/bind-event/hydration/render.ts
+++ b/packages/bench/src/scenarios/bind-event/hydration/render.ts
@@ -1,9 +1,9 @@
export function render(): string {
return /* html */ `
-
+
-
+
`;
}
diff --git a/packages/bench/src/scenarios/bind-event/template.html b/packages/bench/src/scenarios/bind-event/template.html
index 44cbfd5eb5b..922e7234649 100644
--- a/packages/bench/src/scenarios/bind-event/template.html
+++ b/packages/bench/src/scenarios/bind-event/template.html
@@ -1,4 +1,4 @@
-
+
diff --git a/packages/bench/src/scenarios/dot-syntax/csr/main.ts b/packages/bench/src/scenarios/dot-syntax/csr/main.ts
index b2ff1d05e48..94d489c25da 100644
--- a/packages/bench/src/scenarios/dot-syntax/csr/main.ts
+++ b/packages/bench/src/scenarios/dot-syntax/csr/main.ts
@@ -3,14 +3,14 @@ import { runBenchmark } from "../../harness.js";
import { BenchElement } from "../element.js";
BenchElement.defineAsync({
- name: "bench-element",
+ name: "dot-syntax-bench-element",
templateOptions: "defer-and-hydrate",
});
TemplateElement.options({
- "bench-element": { observerMap: "all" },
+ "dot-syntax-bench-element": { observerMap: "all" },
}).define({ name: "f-template" });
-await customElements.whenDefined("bench-element");
+await customElements.whenDefined("dot-syntax-bench-element");
-runBenchmark(() => document.createElement("bench-element"));
+runBenchmark(() => document.createElement("dot-syntax-bench-element"));
diff --git a/packages/bench/src/scenarios/dot-syntax/hydration/main.ts b/packages/bench/src/scenarios/dot-syntax/hydration/main.ts
index b3190bfda4f..e3347057e6d 100644
--- a/packages/bench/src/scenarios/dot-syntax/hydration/main.ts
+++ b/packages/bench/src/scenarios/dot-syntax/hydration/main.ts
@@ -3,7 +3,7 @@ import { signalDone } from "../../harness.js";
import { BenchElement } from "../element.js";
RenderableFASTElement(BenchElement).defineAsync({
- name: "bench-element",
+ name: "dot-syntax-bench-element",
templateOptions: "defer-and-hydrate",
});
@@ -16,6 +16,6 @@ TemplateElement.config({
},
})
.options({
- "bench-element": { observerMap: "all" },
+ "dot-syntax-bench-element": { observerMap: "all" },
})
.define({ name: "f-template" });
diff --git a/packages/bench/src/scenarios/dot-syntax/hydration/render.ts b/packages/bench/src/scenarios/dot-syntax/hydration/render.ts
index 9baa2ab3b88..fcbc7566792 100644
--- a/packages/bench/src/scenarios/dot-syntax/hydration/render.ts
+++ b/packages/bench/src/scenarios/dot-syntax/hydration/render.ts
@@ -1,6 +1,6 @@
export function render(): string {
return /* html */ `
-
+
Jane
@@ -8,6 +8,6 @@ export function render(): string {
47.6
-
+
`;
}
diff --git a/packages/bench/src/scenarios/dot-syntax/template.html b/packages/bench/src/scenarios/dot-syntax/template.html
index 28dc743c5a7..f7d45a0a93c 100644
--- a/packages/bench/src/scenarios/dot-syntax/template.html
+++ b/packages/bench/src/scenarios/dot-syntax/template.html
@@ -1,4 +1,4 @@
-
+
{{user.name}}
diff --git a/packages/bench/src/scenarios/ref-slotted/csr/main.ts b/packages/bench/src/scenarios/ref-slotted/csr/main.ts
index 83ba22f5426..9fe7ae025a7 100644
--- a/packages/bench/src/scenarios/ref-slotted/csr/main.ts
+++ b/packages/bench/src/scenarios/ref-slotted/csr/main.ts
@@ -1,17 +1,13 @@
-import { html, ref, slotted } from "@microsoft/fast-element";
import { runBenchmark } from "../../harness.js";
-import { BenchElement } from "../element.js";
+import { BenchElement, template } from "../element.js";
BenchElement.define({
- name: "bench-element",
- template: html
`
- Title
-
- `,
+ name: "ref-slotted-bench-element",
+ template,
});
runBenchmark(() => {
- const el = document.createElement("bench-element") as BenchElement;
+ const el = document.createElement("ref-slotted-bench-element") as BenchElement;
const child = document.createElement("span");
child.textContent = "slotted content";
el.appendChild(child);
diff --git a/packages/bench/src/scenarios/ref-slotted/element.ts b/packages/bench/src/scenarios/ref-slotted/element.ts
index 3ada06f6730..a9c88edec0c 100644
--- a/packages/bench/src/scenarios/ref-slotted/element.ts
+++ b/packages/bench/src/scenarios/ref-slotted/element.ts
@@ -1,6 +1,11 @@
-import { FASTElement } from "@microsoft/fast-element";
+import { FASTElement, html, ref, slotted } from "@microsoft/fast-element";
export class BenchElement extends FASTElement {
heading!: HTMLHeadingElement;
slottedItems!: Element[];
}
+
+export const template = html`
+ Title
+
+`;
diff --git a/packages/bench/src/scenarios/ref-slotted/hydration/main.ts b/packages/bench/src/scenarios/ref-slotted/hydration/main.ts
index 17cbaddee9f..ca0126a4cec 100644
--- a/packages/bench/src/scenarios/ref-slotted/hydration/main.ts
+++ b/packages/bench/src/scenarios/ref-slotted/hydration/main.ts
@@ -3,7 +3,7 @@ import { signalDone } from "../../harness.js";
import { BenchElement } from "../element.js";
RenderableFASTElement(BenchElement).defineAsync({
- name: "bench-element",
+ name: "ref-slotted-bench-element",
templateOptions: "defer-and-hydrate",
});
diff --git a/packages/bench/src/scenarios/ref-slotted/hydration/render.ts b/packages/bench/src/scenarios/ref-slotted/hydration/render.ts
index 1c2a6cac98d..18f5b6039bc 100644
--- a/packages/bench/src/scenarios/ref-slotted/hydration/render.ts
+++ b/packages/bench/src/scenarios/ref-slotted/hydration/render.ts
@@ -1,11 +1,11 @@
export function render(): string {
return /* html */ `
-
+
Title
slotted content
-
+
`;
}
diff --git a/packages/bench/src/scenarios/ref-slotted/template.html b/packages/bench/src/scenarios/ref-slotted/template.html
index 3e26d425821..a9366c44068 100644
--- a/packages/bench/src/scenarios/ref-slotted/template.html
+++ b/packages/bench/src/scenarios/ref-slotted/template.html
@@ -1,4 +1,4 @@
-
+
Title
diff --git a/packages/bench/src/scenarios/repeat/csr/main.ts b/packages/bench/src/scenarios/repeat/csr/main.ts
index 6483c5d3703..eb171fcb8b5 100644
--- a/packages/bench/src/scenarios/repeat/csr/main.ts
+++ b/packages/bench/src/scenarios/repeat/csr/main.ts
@@ -1,19 +1,9 @@
-import { html, repeat } from "@microsoft/fast-element";
import { runBenchmark } from "../../harness.js";
-import { BenchElement } from "../element.js";
+import { BenchElement, template } from "../element.js";
BenchElement.define({
- name: "bench-element",
- template: html`
-
- ${repeat(
- x => x.items,
- html`
- - ${x => x}
- `
- )}
-
- `,
+ name: "repeat-bench-element",
+ template,
});
-runBenchmark(() => document.createElement("bench-element"), 100);
+runBenchmark(() => document.createElement("repeat-bench-element"), 100);
diff --git a/packages/bench/src/scenarios/repeat/element.ts b/packages/bench/src/scenarios/repeat/element.ts
index 8c97a9966cb..32ab036c8ed 100644
--- a/packages/bench/src/scenarios/repeat/element.ts
+++ b/packages/bench/src/scenarios/repeat/element.ts
@@ -1,7 +1,18 @@
-import { FASTElement } from "@microsoft/fast-element";
+import { FASTElement, html, repeat } from "@microsoft/fast-element";
const items = Array.from({ length: 20 }, (_, i) => `Item ${i}`);
export class BenchElement extends FASTElement {
items = items;
}
+
+export const template = html`
+
+ ${repeat(
+ x => x.items,
+ html`
+ - ${x => x}
+ `,
+ )}
+
+`;
diff --git a/packages/bench/src/scenarios/repeat/hydration/main.ts b/packages/bench/src/scenarios/repeat/hydration/main.ts
index 17cbaddee9f..4916a19061d 100644
--- a/packages/bench/src/scenarios/repeat/hydration/main.ts
+++ b/packages/bench/src/scenarios/repeat/hydration/main.ts
@@ -3,7 +3,7 @@ import { signalDone } from "../../harness.js";
import { BenchElement } from "../element.js";
RenderableFASTElement(BenchElement).defineAsync({
- name: "bench-element",
+ name: "repeat-bench-element",
templateOptions: "defer-and-hydrate",
});
diff --git a/packages/bench/src/scenarios/repeat/hydration/render.ts b/packages/bench/src/scenarios/repeat/hydration/render.ts
index 8750617e4b9..48e3ddba82f 100644
--- a/packages/bench/src/scenarios/repeat/hydration/render.ts
+++ b/packages/bench/src/scenarios/repeat/hydration/render.ts
@@ -2,7 +2,7 @@ const items = Array.from({ length: 20 }, (_, i) => `Item ${i}`);
const listItems = items
.map(
(item, i) =>
- `${item}`
+ `${item}`,
)
.join("");
@@ -10,8 +10,8 @@ const shadowContent = `
-
+
`;
}
diff --git a/packages/bench/src/scenarios/when/template.html b/packages/bench/src/scenarios/when/template.html
index 526f74f0447..3b4a0c89eae 100644
--- a/packages/bench/src/scenarios/when/template.html
+++ b/packages/bench/src/scenarios/when/template.html
@@ -1,4 +1,4 @@
-
+
Visible
Hidden
diff --git a/packages/bench/vite.config.ts b/packages/bench/vite.config.ts
index c1267385824..1dff1501f21 100644
--- a/packages/bench/vite.config.ts
+++ b/packages/bench/vite.config.ts
@@ -1,18 +1,41 @@
import { existsSync, readdirSync, readFileSync } from "node:fs";
import { dirname, resolve } from "node:path";
-import { fileURLToPath, pathToFileURL } from "node:url";
+import { fileURLToPath } from "node:url";
import { defineConfig } from "vite";
+import { render as attrReflectRender } from "./src/scenarios/attr-reflect/hydration/render.ts";
+import { render as basicRender } from "./src/scenarios/basic/hydration/render.ts";
+import { render as bindEventRender } from "./src/scenarios/bind-event/hydration/render.ts";
+import { render as dotSyntaxRender } from "./src/scenarios/dot-syntax/hydration/render.ts";
+import { render as refSlottedRender } from "./src/scenarios/ref-slotted/hydration/render.ts";
+import { render as repeatRender } from "./src/scenarios/repeat/hydration/render.ts";
import {
BENCH_TREE_CONFIG,
buildTree,
renderTreeToHTMLWith,
} from "./src/scenarios/tree.js";
+import { render as whenRender } from "./src/scenarios/when/hydration/render.ts";
const __dirname = dirname(fileURLToPath(import.meta.url));
const benchmarksDir = resolve(__dirname, "src", "scenarios");
const buildId = process.env.BUILD_ID;
const base = buildId ? `/${buildId}/` : "/";
+const scenarioRenders: Record string> = {
+ "attr-reflect": attrReflectRender,
+ basic: basicRender,
+ "bind-event": bindEventRender,
+ "dot-syntax": dotSyntaxRender,
+ "ref-slotted": refSlottedRender,
+ repeat: repeatRender,
+ when: whenRender,
+};
+
+function allRender(index: number): string {
+ return Object.values(scenarioRenders)
+ .map(render => render(index))
+ .join("");
+}
+
function discoverBenchmarkInputs(): Record {
const inputs: Record = {
main: resolve(benchmarksDir, "index.html"),
@@ -25,7 +48,7 @@ function discoverBenchmarkInputs(): Record {
const scenarioDir = resolve(benchmarksDir, scenario.name);
const variants = readdirSync(scenarioDir, { withFileTypes: true }).filter(d =>
- d.isDirectory()
+ d.isDirectory(),
);
for (const variant of variants) {
@@ -49,17 +72,34 @@ export default defineConfig({
name: "html-transform",
enforce: "pre",
async transformIndexHtml(html, { filename }) {
- // Render-function driven SSR: builds a deterministic
- // tree (~1 000 nodes) and calls the scenario's render()
- // function discovered next to the index.html being processed.
- //
- const renderModulePath = resolve(dirname(filename), "render.ts");
+ if (html.includes("")) {
+ const allTemplates: string[] = [];
+ for (const entry of readdirSync(benchmarksDir, {
+ withFileTypes: true,
+ })) {
+ if (!entry.isDirectory() || entry.name === "all") {
+ continue;
+ }
+ const tplPath = resolve(
+ benchmarksDir,
+ entry.name,
+ "template.html",
+ );
+ if (existsSync(tplPath)) {
+ allTemplates.push(readFileSync(tplPath, "utf-8"));
+ }
+ }
+ html = html.replace(
+ "",
+ allTemplates.join("\n"),
+ );
+ }
if (html.includes("")) {
const templatePath = resolve(
dirname(filename),
"..",
- "template.html"
+ "template.html",
);
if (existsSync(templatePath)) {
const template = readFileSync(templatePath, "utf-8");
@@ -67,10 +107,11 @@ export default defineConfig({
}
}
- if (html.includes("@bench-ssr-render") && existsSync(renderModulePath)) {
- const { render } = (await import(
- pathToFileURL(renderModulePath).href
- )) as { render: (index: number) => string };
+ if (html.includes("@bench-ssr-render")) {
+ const scenarioName = resolve(dirname(filename), "..")
+ .split("/")
+ .pop()!;
+ const render = scenarioRenders[scenarioName] ?? allRender;
html = html.replace(
//g,
@@ -83,7 +124,7 @@ export default defineConfig({
: BENCH_TREE_CONFIG;
const tree = buildTree(config);
return renderTreeToHTMLWith(tree, render);
- }
+ },
);
}
@@ -93,7 +134,7 @@ export default defineConfig({
Object.keys(discoverBenchmarkInputs())
.filter(key => key !== "main")
.map(key => `${key}`)
- .join("\n")
+ .join("\n"),
);
return html;
From 6bedad915e88e6d0d4c4cf38d91da1d59abc3618 Mon Sep 17 00:00:00 2001
From: Jane Chu <7559015+janechu@users.noreply.github.com>
Date: Mon, 20 Apr 2026 15:20:20 -0700
Subject: [PATCH 3/3] refactor: move bench package from packages/bench to
sites/benchmarks (#7459)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
# Pull Request
## 📖 Description
Moves the private `@microsoft/fast-bench` package from `packages/bench/` to `sites/benchmarks/` to better reflect its role as an internal site/tool rather than a publishable package. Also simplifies the root `package.json` workspaces by using glob patterns (`sites/*`, `examples/*`) instead of listing each workspace explicitly.
**Changes:**
- Move `packages/bench/` → `sites/benchmarks/` via `git mv`
- Update root `package.json` workspaces to use `sites/*` and `examples/*` globs
- Update `copilot-instructions.md` to reflect new location
- Update `README.md` folder path reference
- Regenerate `package-lock.json`
## 📑 Test Plan
- All existing tests pass — the bench package is private with no dependents
- `npm run checkchange` confirms no change files are needed (private package excluded from beachball scope)
- Workspace resolution verified via `npm ls`
## ✅ Checklist
### General
- [x] I have included a change request file using `$ npm run change`
- [ ] I have added tests for my changes.
- [x] I have tested my changes.
- [x] I have updated the project documentation to reflect my changes.
- [x] I have read the [CONTRIBUTING](https://github.com/microsoft/fast/blob/main/CONTRIBUTING.md) documentation and followed the [standards](https://github.com/microsoft/fast/blob/main/CODE_OF_CONDUCT.md#our-standards) for this project.
---
.github/copilot-instructions.md | 2 +-
package-lock.json | 209 ++++--------------
package.json | 5 +-
.../bench => sites/benchmarks}/.gitignore | 0
.../bench => sites/benchmarks}/README.md | 2 +-
.../bench => sites/benchmarks}/package.json | 0
.../benchmarks}/server/package.json | 0
.../benchmarks}/server/server.mjs | 0
.../bench => sites/benchmarks}/src/bench.ts | 0
.../bench => sites/benchmarks}/src/chart.ts | 0
.../bench => sites/benchmarks}/src/report.ts | 0
.../src/scenarios/all/csr/index.html | 0
.../benchmarks}/src/scenarios/all/csr/main.ts | 0
.../benchmarks}/src/scenarios/all/element.ts | 0
.../src/scenarios/all/hydration/index.html | 0
.../src/scenarios/all/hydration/main.ts | 0
.../src/scenarios/attr-reflect/csr/index.html | 0
.../src/scenarios/attr-reflect/csr/main.ts | 0
.../src/scenarios/attr-reflect/element.ts | 0
.../attr-reflect/hydration/index.html | 0
.../scenarios/attr-reflect/hydration/main.ts | 0
.../attr-reflect/hydration/render.ts | 0
.../src/scenarios/attr-reflect/template.html | 0
.../src/scenarios/basic/csr/index.html | 0
.../src/scenarios/basic/csr/main.ts | 0
.../src/scenarios/basic/element.ts | 0
.../src/scenarios/basic/hydration/index.html | 0
.../src/scenarios/basic/hydration/main.ts | 0
.../src/scenarios/basic/hydration/render.ts | 0
.../src/scenarios/basic/template.html | 0
.../src/scenarios/bind-event/csr/index.html | 0
.../src/scenarios/bind-event/csr/main.ts | 0
.../src/scenarios/bind-event/element.ts | 0
.../scenarios/bind-event/hydration/index.html | 0
.../scenarios/bind-event/hydration/main.ts | 0
.../scenarios/bind-event/hydration/render.ts | 0
.../src/scenarios/bind-event/template.html | 0
.../src/scenarios/dot-syntax/csr/index.html | 0
.../src/scenarios/dot-syntax/csr/main.ts | 0
.../src/scenarios/dot-syntax/element.ts | 0
.../scenarios/dot-syntax/hydration/index.html | 0
.../scenarios/dot-syntax/hydration/main.ts | 0
.../scenarios/dot-syntax/hydration/render.ts | 0
.../src/scenarios/dot-syntax/template.html | 0
.../benchmarks}/src/scenarios/harness.ts | 0
.../benchmarks}/src/scenarios/index.html | 0
.../src/scenarios/ref-slotted/csr/index.html | 0
.../src/scenarios/ref-slotted/csr/main.ts | 0
.../src/scenarios/ref-slotted/element.ts | 0
.../ref-slotted/hydration/index.html | 0
.../scenarios/ref-slotted/hydration/main.ts | 0
.../scenarios/ref-slotted/hydration/render.ts | 0
.../src/scenarios/ref-slotted/template.html | 0
.../src/scenarios/repeat/csr/index.html | 0
.../src/scenarios/repeat/csr/main.ts | 0
.../src/scenarios/repeat/element.ts | 0
.../src/scenarios/repeat/hydration/index.html | 0
.../src/scenarios/repeat/hydration/main.ts | 0
.../src/scenarios/repeat/hydration/render.ts | 0
.../src/scenarios/repeat/template.html | 0
.../benchmarks}/src/scenarios/report.css | 0
.../benchmarks}/src/scenarios/report.js | 0
.../benchmarks}/src/scenarios/tree.ts | 0
.../src/scenarios/when/csr/index.html | 0
.../src/scenarios/when/csr/main.ts | 0
.../benchmarks}/src/scenarios/when/element.ts | 0
.../src/scenarios/when/hydration/index.html | 0
.../src/scenarios/when/hydration/main.ts | 0
.../src/scenarios/when/hydration/render.ts | 0
.../src/scenarios/when/template.html | 0
.../bench => sites/benchmarks}/src/trace.ts | 0
.../bench => sites/benchmarks}/tsconfig.json | 0
.../bench => sites/benchmarks}/vite.config.ts | 0
73 files changed, 50 insertions(+), 168 deletions(-)
rename {packages/bench => sites/benchmarks}/.gitignore (100%)
rename {packages/bench => sites/benchmarks}/README.md (98%)
rename {packages/bench => sites/benchmarks}/package.json (100%)
rename {packages/bench => sites/benchmarks}/server/package.json (100%)
rename {packages/bench => sites/benchmarks}/server/server.mjs (100%)
rename {packages/bench => sites/benchmarks}/src/bench.ts (100%)
rename {packages/bench => sites/benchmarks}/src/chart.ts (100%)
rename {packages/bench => sites/benchmarks}/src/report.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/all/csr/index.html (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/all/csr/main.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/all/element.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/all/hydration/index.html (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/all/hydration/main.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/attr-reflect/csr/index.html (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/attr-reflect/csr/main.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/attr-reflect/element.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/attr-reflect/hydration/index.html (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/attr-reflect/hydration/main.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/attr-reflect/hydration/render.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/attr-reflect/template.html (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/basic/csr/index.html (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/basic/csr/main.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/basic/element.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/basic/hydration/index.html (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/basic/hydration/main.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/basic/hydration/render.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/basic/template.html (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/bind-event/csr/index.html (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/bind-event/csr/main.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/bind-event/element.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/bind-event/hydration/index.html (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/bind-event/hydration/main.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/bind-event/hydration/render.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/bind-event/template.html (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/dot-syntax/csr/index.html (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/dot-syntax/csr/main.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/dot-syntax/element.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/dot-syntax/hydration/index.html (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/dot-syntax/hydration/main.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/dot-syntax/hydration/render.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/dot-syntax/template.html (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/harness.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/index.html (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/ref-slotted/csr/index.html (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/ref-slotted/csr/main.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/ref-slotted/element.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/ref-slotted/hydration/index.html (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/ref-slotted/hydration/main.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/ref-slotted/hydration/render.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/ref-slotted/template.html (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/repeat/csr/index.html (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/repeat/csr/main.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/repeat/element.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/repeat/hydration/index.html (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/repeat/hydration/main.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/repeat/hydration/render.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/repeat/template.html (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/report.css (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/report.js (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/tree.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/when/csr/index.html (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/when/csr/main.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/when/element.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/when/hydration/index.html (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/when/hydration/main.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/when/hydration/render.ts (100%)
rename {packages/bench => sites/benchmarks}/src/scenarios/when/template.html (100%)
rename {packages/bench => sites/benchmarks}/src/trace.ts (100%)
rename {packages/bench => sites/benchmarks}/tsconfig.json (100%)
rename {packages/bench => sites/benchmarks}/vite.config.ts (100%)
diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md
index f8a84e735df..dd1f5e1b04a 100644
--- a/.github/copilot-instructions.md
+++ b/.github/copilot-instructions.md
@@ -27,8 +27,8 @@ FAST (`@microsoft/fast`) is a Microsoft open-source monorepo for building W3C-st
| Package | Status | Purpose |
|---|---|---|
-| `@microsoft/fast-bench` | Private (not published as a package) | Benchmarking utilities |
| `sites/website` | Private (not published as a package) | Documentation website source |
+| `sites/benchmarks` | Private (not published as a package) | Benchmarking utilities |
| `@microsoft/fast-ssr` | Alpha (not actively maintained) | Server-side rendering utilities |
### Example projects
diff --git a/package-lock.json b/package-lock.json
index b24f9f73030..d5a5976c200 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,9 +11,8 @@
"workspaces": [
"build",
"packages/*",
- "sites/website",
- "examples/todo-app",
- "examples/ssr"
+ "sites/*",
+ "examples/*"
],
"devDependencies": {
"@ast-grep/cli": "0.37.0",
@@ -1415,9 +1414,9 @@
}
},
"node_modules/@github/catalyst": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/@github/catalyst/-/catalyst-1.8.0.tgz",
- "integrity": "sha512-uLpi/D/mKfylYaFLfzNuloXNENi0AlcM0Z7hwYLH8Z030jBCr+ueMdX2xLxCzpMH/keYXKh0uPrHSMfcbxU6KA==",
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/@github/catalyst/-/catalyst-1.8.1.tgz",
+ "integrity": "sha512-dnN4WWpbeuQvA17LvsGdlXEueJdBk9y+I+WO5pdNpoHNOXPsFcz3hJrq1iRmdsNgQOf4S8e83axtwIxvG62eWA==",
"dev": true,
"license": "MIT"
},
@@ -1555,7 +1554,7 @@
}
},
"node_modules/@microsoft/fast-bench": {
- "resolved": "packages/bench",
+ "resolved": "sites/benchmarks",
"link": true
},
"node_modules/@microsoft/fast-build": {
@@ -4595,9 +4594,9 @@
}
},
"node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"hasInstallScript": true,
"license": "MIT",
"optional": true,
@@ -4678,9 +4677,9 @@
}
},
"node_modules/get-tsconfig": {
- "version": "4.13.7",
- "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.7.tgz",
- "integrity": "sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==",
+ "version": "4.14.0",
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz",
+ "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4992,9 +4991,9 @@
}
},
"node_modules/hasown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz",
+ "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==",
"license": "MIT",
"dependencies": {
"function-bind": "^1.1.2"
@@ -5470,12 +5469,6 @@
"node": ">=0.12.0"
}
},
- "node_modules/is-promise": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
- "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==",
- "license": "MIT"
- },
"node_modules/is-ssh": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.1.tgz",
@@ -5576,9 +5569,9 @@
"license": "MIT"
},
"node_modules/jsonfile": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
- "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz",
+ "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==",
"license": "MIT",
"dependencies": {
"universalify": "^2.0.0"
@@ -5824,9 +5817,9 @@
}
},
"node_modules/liquidjs": {
- "version": "10.25.5",
- "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-10.25.5.tgz",
- "integrity": "sha512-GKiKeZjJDdVoQAu+S9rzkYsYnYhcep5W3WwZXgb5f+yq484P/k9JqamBbGYu+LBEixcUAXZr2jogdAIjB3ki1w==",
+ "version": "10.25.6",
+ "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-10.25.6.tgz",
+ "integrity": "sha512-h5ki5HS1PiL9/NmLw3iUcTF1jQswKJd8KLEXNrtSf8XHF0v3c5+d+8llz3N9I5IUdc5rsOuVLb9AVnqvqqscPg==",
"license": "MIT",
"dependencies": {
"commander": "^10.0.0"
@@ -6604,15 +6597,6 @@
"node": ">= 0.8"
}
},
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "license": "ISC",
- "dependencies": {
- "wrappy": "1"
- }
- },
"node_modules/onetime": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
@@ -6879,6 +6863,20 @@
"node": ">=18"
}
},
+ "node_modules/playwright/node_modules/fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
"node_modules/please-upgrade-node": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz",
@@ -6889,9 +6887,9 @@
}
},
"node_modules/postcss": {
- "version": "8.5.9",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.9.tgz",
- "integrity": "sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw==",
+ "version": "8.5.10",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.10.tgz",
+ "integrity": "sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==",
"funding": [
{
"type": "opencollective",
@@ -7300,55 +7298,6 @@
"node": ">=16.0.0"
}
},
- "node_modules/router": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz",
- "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==",
- "license": "MIT",
- "dependencies": {
- "debug": "^4.4.0",
- "depd": "^2.0.0",
- "is-promise": "^4.0.0",
- "parseurl": "^1.3.3",
- "path-to-regexp": "^8.0.0"
- },
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/router/node_modules/debug": {
- "version": "4.4.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
- "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
- "license": "MIT",
- "dependencies": {
- "ms": "^2.1.3"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/router/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "license": "MIT"
- },
- "node_modules/router/node_modules/path-to-regexp": {
- "version": "8.4.2",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz",
- "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==",
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
"node_modules/run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -8349,20 +8298,6 @@
}
}
},
- "node_modules/vite/node_modules/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "hasInstallScript": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -8548,12 +8483,6 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "license": "ISC"
- },
"node_modules/ws": {
"version": "8.20.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz",
@@ -8682,14 +8611,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "packages/bench": {
- "name": "@microsoft/fast-bench",
- "version": "0.0.0",
- "dependencies": {
- "@microsoft/fast-element": "*",
- "@microsoft/fast-html": "*"
- }
- },
"packages/fast-build": {
"name": "@microsoft/fast-build",
"version": "0.4.0",
@@ -8784,8 +8705,6 @@
},
"packages/fast-test-harness/node_modules/accepts": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz",
- "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
"license": "MIT",
"dependencies": {
"mime-types": "^3.0.0",
@@ -8797,8 +8716,6 @@
},
"packages/fast-test-harness/node_modules/body-parser": {
"version": "2.2.2",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz",
- "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==",
"license": "MIT",
"dependencies": {
"bytes": "^3.1.2",
@@ -8821,8 +8738,6 @@
},
"packages/fast-test-harness/node_modules/content-disposition": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz",
- "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==",
"license": "MIT",
"engines": {
"node": ">=18"
@@ -8834,8 +8749,6 @@
},
"packages/fast-test-harness/node_modules/cookie-signature": {
"version": "1.2.2",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz",
- "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==",
"license": "MIT",
"engines": {
"node": ">=6.6.0"
@@ -8843,8 +8756,6 @@
},
"packages/fast-test-harness/node_modules/debug": {
"version": "4.4.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
- "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
"license": "MIT",
"dependencies": {
"ms": "^2.1.3"
@@ -8860,8 +8771,6 @@
},
"packages/fast-test-harness/node_modules/express": {
"version": "5.2.1",
- "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz",
- "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==",
"license": "MIT",
"dependencies": {
"accepts": "^2.0.0",
@@ -8903,8 +8812,6 @@
},
"packages/fast-test-harness/node_modules/finalhandler": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz",
- "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==",
"license": "MIT",
"dependencies": {
"debug": "^4.4.0",
@@ -8924,8 +8831,6 @@
},
"packages/fast-test-harness/node_modules/fresh": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz",
- "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==",
"license": "MIT",
"engines": {
"node": ">= 0.8"
@@ -8933,8 +8838,6 @@
},
"packages/fast-test-harness/node_modules/iconv-lite": {
"version": "0.7.2",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz",
- "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==",
"license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
@@ -8949,8 +8852,6 @@
},
"packages/fast-test-harness/node_modules/media-typer": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
- "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==",
"license": "MIT",
"engines": {
"node": ">= 0.8"
@@ -8958,8 +8859,6 @@
},
"packages/fast-test-harness/node_modules/merge-descriptors": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz",
- "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==",
"license": "MIT",
"engines": {
"node": ">=18"
@@ -8970,8 +8869,6 @@
},
"packages/fast-test-harness/node_modules/mime-db": {
"version": "1.54.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
- "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
@@ -8979,8 +8876,6 @@
},
"packages/fast-test-harness/node_modules/mime-types": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
- "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
"license": "MIT",
"dependencies": {
"mime-db": "^1.54.0"
@@ -8995,14 +8890,10 @@
},
"packages/fast-test-harness/node_modules/ms": {
"version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"license": "MIT"
},
"packages/fast-test-harness/node_modules/negotiator": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
- "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
@@ -9010,8 +8901,6 @@
},
"packages/fast-test-harness/node_modules/raw-body": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz",
- "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==",
"license": "MIT",
"dependencies": {
"bytes": "~3.1.2",
@@ -9025,8 +8914,6 @@
},
"packages/fast-test-harness/node_modules/send": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz",
- "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==",
"license": "MIT",
"dependencies": {
"debug": "^4.4.3",
@@ -9051,8 +8938,6 @@
},
"packages/fast-test-harness/node_modules/serve-static": {
"version": "2.2.1",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz",
- "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==",
"license": "MIT",
"dependencies": {
"encodeurl": "^2.0.0",
@@ -9070,8 +8955,6 @@
},
"packages/fast-test-harness/node_modules/type-is": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz",
- "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==",
"license": "MIT",
"dependencies": {
"content-type": "^1.0.5",
@@ -9082,6 +8965,14 @@
"node": ">= 0.6"
}
},
+ "sites/benchmarks": {
+ "name": "@microsoft/fast-bench",
+ "version": "0.0.0",
+ "dependencies": {
+ "@microsoft/fast-element": "*",
+ "@microsoft/fast-html": "*"
+ }
+ },
"sites/website": {
"name": "@microsoft/fast-site",
"version": "0.6.2",
@@ -9114,8 +9005,6 @@
},
"sites/website/node_modules/@microsoft/api-extractor-model": {
"version": "7.33.4",
- "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.33.4.tgz",
- "integrity": "sha512-u1LTaNTikZAQ9uK6KG1Ms7nvNedsnODnspq/gH2dcyETWvH4hVNGNDvRAEutH66kAmxA4/necElqGNs1FggC8w==",
"license": "MIT",
"dependencies": {
"@microsoft/tsdoc": "~0.16.0",
@@ -9125,8 +9014,6 @@
},
"sites/website/node_modules/@rushstack/node-core-library": {
"version": "5.20.3",
- "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.20.3.tgz",
- "integrity": "sha512-95JgEPq2k7tHxhF9/OJnnyHDXfC9cLhhta0An/6MlkDsX2A6dTzDrTUG18vx4vjc280V0fi0xDH9iQczpSuWsw==",
"license": "MIT",
"dependencies": {
"ajv": "~8.18.0",
@@ -9149,8 +9036,6 @@
},
"sites/website/node_modules/@rushstack/terminal": {
"version": "0.22.3",
- "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.22.3.tgz",
- "integrity": "sha512-gHC9pIMrUPzAbBiI4VZMU7Q+rsCzb8hJl36lFIulIzoceKotyKL3Rd76AZ2CryCTKEg+0bnTj406HE5YY5OQvw==",
"license": "MIT",
"dependencies": {
"@rushstack/node-core-library": "5.20.3",
@@ -9168,8 +9053,6 @@
},
"sites/website/node_modules/@rushstack/ts-command-line": {
"version": "5.3.3",
- "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.3.3.tgz",
- "integrity": "sha512-c+ltdcvC7ym+10lhwR/vWiOhsrm/bP3By2VsFcs5qTKv+6tTmxgbVrtJ5NdNjANiV5TcmOZgUN+5KYQ4llsvEw==",
"license": "MIT",
"dependencies": {
"@rushstack/terminal": "0.22.3",
diff --git a/package.json b/package.json
index 80308cfcaee..c8c7e0bd438 100644
--- a/package.json
+++ b/package.json
@@ -11,9 +11,8 @@
"workspaces": [
"build",
"packages/*",
- "sites/website",
- "examples/todo-app",
- "examples/ssr"
+ "sites/*",
+ "examples/*"
],
"engines": {
"npm": ">=10.0.0",
diff --git a/packages/bench/.gitignore b/sites/benchmarks/.gitignore
similarity index 100%
rename from packages/bench/.gitignore
rename to sites/benchmarks/.gitignore
diff --git a/packages/bench/README.md b/sites/benchmarks/README.md
similarity index 98%
rename from packages/bench/README.md
rename to sites/benchmarks/README.md
index 251a11ffc58..d6c1be5111b 100644
--- a/packages/bench/README.md
+++ b/sites/benchmarks/README.md
@@ -14,7 +14,7 @@ npm install
## Running benchmarks
-From this folder (`packages/bench`):
+From this folder (`sites/benchmarks`):
```bash
npm run bench
diff --git a/packages/bench/package.json b/sites/benchmarks/package.json
similarity index 100%
rename from packages/bench/package.json
rename to sites/benchmarks/package.json
diff --git a/packages/bench/server/package.json b/sites/benchmarks/server/package.json
similarity index 100%
rename from packages/bench/server/package.json
rename to sites/benchmarks/server/package.json
diff --git a/packages/bench/server/server.mjs b/sites/benchmarks/server/server.mjs
similarity index 100%
rename from packages/bench/server/server.mjs
rename to sites/benchmarks/server/server.mjs
diff --git a/packages/bench/src/bench.ts b/sites/benchmarks/src/bench.ts
similarity index 100%
rename from packages/bench/src/bench.ts
rename to sites/benchmarks/src/bench.ts
diff --git a/packages/bench/src/chart.ts b/sites/benchmarks/src/chart.ts
similarity index 100%
rename from packages/bench/src/chart.ts
rename to sites/benchmarks/src/chart.ts
diff --git a/packages/bench/src/report.ts b/sites/benchmarks/src/report.ts
similarity index 100%
rename from packages/bench/src/report.ts
rename to sites/benchmarks/src/report.ts
diff --git a/packages/bench/src/scenarios/all/csr/index.html b/sites/benchmarks/src/scenarios/all/csr/index.html
similarity index 100%
rename from packages/bench/src/scenarios/all/csr/index.html
rename to sites/benchmarks/src/scenarios/all/csr/index.html
diff --git a/packages/bench/src/scenarios/all/csr/main.ts b/sites/benchmarks/src/scenarios/all/csr/main.ts
similarity index 100%
rename from packages/bench/src/scenarios/all/csr/main.ts
rename to sites/benchmarks/src/scenarios/all/csr/main.ts
diff --git a/packages/bench/src/scenarios/all/element.ts b/sites/benchmarks/src/scenarios/all/element.ts
similarity index 100%
rename from packages/bench/src/scenarios/all/element.ts
rename to sites/benchmarks/src/scenarios/all/element.ts
diff --git a/packages/bench/src/scenarios/all/hydration/index.html b/sites/benchmarks/src/scenarios/all/hydration/index.html
similarity index 100%
rename from packages/bench/src/scenarios/all/hydration/index.html
rename to sites/benchmarks/src/scenarios/all/hydration/index.html
diff --git a/packages/bench/src/scenarios/all/hydration/main.ts b/sites/benchmarks/src/scenarios/all/hydration/main.ts
similarity index 100%
rename from packages/bench/src/scenarios/all/hydration/main.ts
rename to sites/benchmarks/src/scenarios/all/hydration/main.ts
diff --git a/packages/bench/src/scenarios/attr-reflect/csr/index.html b/sites/benchmarks/src/scenarios/attr-reflect/csr/index.html
similarity index 100%
rename from packages/bench/src/scenarios/attr-reflect/csr/index.html
rename to sites/benchmarks/src/scenarios/attr-reflect/csr/index.html
diff --git a/packages/bench/src/scenarios/attr-reflect/csr/main.ts b/sites/benchmarks/src/scenarios/attr-reflect/csr/main.ts
similarity index 100%
rename from packages/bench/src/scenarios/attr-reflect/csr/main.ts
rename to sites/benchmarks/src/scenarios/attr-reflect/csr/main.ts
diff --git a/packages/bench/src/scenarios/attr-reflect/element.ts b/sites/benchmarks/src/scenarios/attr-reflect/element.ts
similarity index 100%
rename from packages/bench/src/scenarios/attr-reflect/element.ts
rename to sites/benchmarks/src/scenarios/attr-reflect/element.ts
diff --git a/packages/bench/src/scenarios/attr-reflect/hydration/index.html b/sites/benchmarks/src/scenarios/attr-reflect/hydration/index.html
similarity index 100%
rename from packages/bench/src/scenarios/attr-reflect/hydration/index.html
rename to sites/benchmarks/src/scenarios/attr-reflect/hydration/index.html
diff --git a/packages/bench/src/scenarios/attr-reflect/hydration/main.ts b/sites/benchmarks/src/scenarios/attr-reflect/hydration/main.ts
similarity index 100%
rename from packages/bench/src/scenarios/attr-reflect/hydration/main.ts
rename to sites/benchmarks/src/scenarios/attr-reflect/hydration/main.ts
diff --git a/packages/bench/src/scenarios/attr-reflect/hydration/render.ts b/sites/benchmarks/src/scenarios/attr-reflect/hydration/render.ts
similarity index 100%
rename from packages/bench/src/scenarios/attr-reflect/hydration/render.ts
rename to sites/benchmarks/src/scenarios/attr-reflect/hydration/render.ts
diff --git a/packages/bench/src/scenarios/attr-reflect/template.html b/sites/benchmarks/src/scenarios/attr-reflect/template.html
similarity index 100%
rename from packages/bench/src/scenarios/attr-reflect/template.html
rename to sites/benchmarks/src/scenarios/attr-reflect/template.html
diff --git a/packages/bench/src/scenarios/basic/csr/index.html b/sites/benchmarks/src/scenarios/basic/csr/index.html
similarity index 100%
rename from packages/bench/src/scenarios/basic/csr/index.html
rename to sites/benchmarks/src/scenarios/basic/csr/index.html
diff --git a/packages/bench/src/scenarios/basic/csr/main.ts b/sites/benchmarks/src/scenarios/basic/csr/main.ts
similarity index 100%
rename from packages/bench/src/scenarios/basic/csr/main.ts
rename to sites/benchmarks/src/scenarios/basic/csr/main.ts
diff --git a/packages/bench/src/scenarios/basic/element.ts b/sites/benchmarks/src/scenarios/basic/element.ts
similarity index 100%
rename from packages/bench/src/scenarios/basic/element.ts
rename to sites/benchmarks/src/scenarios/basic/element.ts
diff --git a/packages/bench/src/scenarios/basic/hydration/index.html b/sites/benchmarks/src/scenarios/basic/hydration/index.html
similarity index 100%
rename from packages/bench/src/scenarios/basic/hydration/index.html
rename to sites/benchmarks/src/scenarios/basic/hydration/index.html
diff --git a/packages/bench/src/scenarios/basic/hydration/main.ts b/sites/benchmarks/src/scenarios/basic/hydration/main.ts
similarity index 100%
rename from packages/bench/src/scenarios/basic/hydration/main.ts
rename to sites/benchmarks/src/scenarios/basic/hydration/main.ts
diff --git a/packages/bench/src/scenarios/basic/hydration/render.ts b/sites/benchmarks/src/scenarios/basic/hydration/render.ts
similarity index 100%
rename from packages/bench/src/scenarios/basic/hydration/render.ts
rename to sites/benchmarks/src/scenarios/basic/hydration/render.ts
diff --git a/packages/bench/src/scenarios/basic/template.html b/sites/benchmarks/src/scenarios/basic/template.html
similarity index 100%
rename from packages/bench/src/scenarios/basic/template.html
rename to sites/benchmarks/src/scenarios/basic/template.html
diff --git a/packages/bench/src/scenarios/bind-event/csr/index.html b/sites/benchmarks/src/scenarios/bind-event/csr/index.html
similarity index 100%
rename from packages/bench/src/scenarios/bind-event/csr/index.html
rename to sites/benchmarks/src/scenarios/bind-event/csr/index.html
diff --git a/packages/bench/src/scenarios/bind-event/csr/main.ts b/sites/benchmarks/src/scenarios/bind-event/csr/main.ts
similarity index 100%
rename from packages/bench/src/scenarios/bind-event/csr/main.ts
rename to sites/benchmarks/src/scenarios/bind-event/csr/main.ts
diff --git a/packages/bench/src/scenarios/bind-event/element.ts b/sites/benchmarks/src/scenarios/bind-event/element.ts
similarity index 100%
rename from packages/bench/src/scenarios/bind-event/element.ts
rename to sites/benchmarks/src/scenarios/bind-event/element.ts
diff --git a/packages/bench/src/scenarios/bind-event/hydration/index.html b/sites/benchmarks/src/scenarios/bind-event/hydration/index.html
similarity index 100%
rename from packages/bench/src/scenarios/bind-event/hydration/index.html
rename to sites/benchmarks/src/scenarios/bind-event/hydration/index.html
diff --git a/packages/bench/src/scenarios/bind-event/hydration/main.ts b/sites/benchmarks/src/scenarios/bind-event/hydration/main.ts
similarity index 100%
rename from packages/bench/src/scenarios/bind-event/hydration/main.ts
rename to sites/benchmarks/src/scenarios/bind-event/hydration/main.ts
diff --git a/packages/bench/src/scenarios/bind-event/hydration/render.ts b/sites/benchmarks/src/scenarios/bind-event/hydration/render.ts
similarity index 100%
rename from packages/bench/src/scenarios/bind-event/hydration/render.ts
rename to sites/benchmarks/src/scenarios/bind-event/hydration/render.ts
diff --git a/packages/bench/src/scenarios/bind-event/template.html b/sites/benchmarks/src/scenarios/bind-event/template.html
similarity index 100%
rename from packages/bench/src/scenarios/bind-event/template.html
rename to sites/benchmarks/src/scenarios/bind-event/template.html
diff --git a/packages/bench/src/scenarios/dot-syntax/csr/index.html b/sites/benchmarks/src/scenarios/dot-syntax/csr/index.html
similarity index 100%
rename from packages/bench/src/scenarios/dot-syntax/csr/index.html
rename to sites/benchmarks/src/scenarios/dot-syntax/csr/index.html
diff --git a/packages/bench/src/scenarios/dot-syntax/csr/main.ts b/sites/benchmarks/src/scenarios/dot-syntax/csr/main.ts
similarity index 100%
rename from packages/bench/src/scenarios/dot-syntax/csr/main.ts
rename to sites/benchmarks/src/scenarios/dot-syntax/csr/main.ts
diff --git a/packages/bench/src/scenarios/dot-syntax/element.ts b/sites/benchmarks/src/scenarios/dot-syntax/element.ts
similarity index 100%
rename from packages/bench/src/scenarios/dot-syntax/element.ts
rename to sites/benchmarks/src/scenarios/dot-syntax/element.ts
diff --git a/packages/bench/src/scenarios/dot-syntax/hydration/index.html b/sites/benchmarks/src/scenarios/dot-syntax/hydration/index.html
similarity index 100%
rename from packages/bench/src/scenarios/dot-syntax/hydration/index.html
rename to sites/benchmarks/src/scenarios/dot-syntax/hydration/index.html
diff --git a/packages/bench/src/scenarios/dot-syntax/hydration/main.ts b/sites/benchmarks/src/scenarios/dot-syntax/hydration/main.ts
similarity index 100%
rename from packages/bench/src/scenarios/dot-syntax/hydration/main.ts
rename to sites/benchmarks/src/scenarios/dot-syntax/hydration/main.ts
diff --git a/packages/bench/src/scenarios/dot-syntax/hydration/render.ts b/sites/benchmarks/src/scenarios/dot-syntax/hydration/render.ts
similarity index 100%
rename from packages/bench/src/scenarios/dot-syntax/hydration/render.ts
rename to sites/benchmarks/src/scenarios/dot-syntax/hydration/render.ts
diff --git a/packages/bench/src/scenarios/dot-syntax/template.html b/sites/benchmarks/src/scenarios/dot-syntax/template.html
similarity index 100%
rename from packages/bench/src/scenarios/dot-syntax/template.html
rename to sites/benchmarks/src/scenarios/dot-syntax/template.html
diff --git a/packages/bench/src/scenarios/harness.ts b/sites/benchmarks/src/scenarios/harness.ts
similarity index 100%
rename from packages/bench/src/scenarios/harness.ts
rename to sites/benchmarks/src/scenarios/harness.ts
diff --git a/packages/bench/src/scenarios/index.html b/sites/benchmarks/src/scenarios/index.html
similarity index 100%
rename from packages/bench/src/scenarios/index.html
rename to sites/benchmarks/src/scenarios/index.html
diff --git a/packages/bench/src/scenarios/ref-slotted/csr/index.html b/sites/benchmarks/src/scenarios/ref-slotted/csr/index.html
similarity index 100%
rename from packages/bench/src/scenarios/ref-slotted/csr/index.html
rename to sites/benchmarks/src/scenarios/ref-slotted/csr/index.html
diff --git a/packages/bench/src/scenarios/ref-slotted/csr/main.ts b/sites/benchmarks/src/scenarios/ref-slotted/csr/main.ts
similarity index 100%
rename from packages/bench/src/scenarios/ref-slotted/csr/main.ts
rename to sites/benchmarks/src/scenarios/ref-slotted/csr/main.ts
diff --git a/packages/bench/src/scenarios/ref-slotted/element.ts b/sites/benchmarks/src/scenarios/ref-slotted/element.ts
similarity index 100%
rename from packages/bench/src/scenarios/ref-slotted/element.ts
rename to sites/benchmarks/src/scenarios/ref-slotted/element.ts
diff --git a/packages/bench/src/scenarios/ref-slotted/hydration/index.html b/sites/benchmarks/src/scenarios/ref-slotted/hydration/index.html
similarity index 100%
rename from packages/bench/src/scenarios/ref-slotted/hydration/index.html
rename to sites/benchmarks/src/scenarios/ref-slotted/hydration/index.html
diff --git a/packages/bench/src/scenarios/ref-slotted/hydration/main.ts b/sites/benchmarks/src/scenarios/ref-slotted/hydration/main.ts
similarity index 100%
rename from packages/bench/src/scenarios/ref-slotted/hydration/main.ts
rename to sites/benchmarks/src/scenarios/ref-slotted/hydration/main.ts
diff --git a/packages/bench/src/scenarios/ref-slotted/hydration/render.ts b/sites/benchmarks/src/scenarios/ref-slotted/hydration/render.ts
similarity index 100%
rename from packages/bench/src/scenarios/ref-slotted/hydration/render.ts
rename to sites/benchmarks/src/scenarios/ref-slotted/hydration/render.ts
diff --git a/packages/bench/src/scenarios/ref-slotted/template.html b/sites/benchmarks/src/scenarios/ref-slotted/template.html
similarity index 100%
rename from packages/bench/src/scenarios/ref-slotted/template.html
rename to sites/benchmarks/src/scenarios/ref-slotted/template.html
diff --git a/packages/bench/src/scenarios/repeat/csr/index.html b/sites/benchmarks/src/scenarios/repeat/csr/index.html
similarity index 100%
rename from packages/bench/src/scenarios/repeat/csr/index.html
rename to sites/benchmarks/src/scenarios/repeat/csr/index.html
diff --git a/packages/bench/src/scenarios/repeat/csr/main.ts b/sites/benchmarks/src/scenarios/repeat/csr/main.ts
similarity index 100%
rename from packages/bench/src/scenarios/repeat/csr/main.ts
rename to sites/benchmarks/src/scenarios/repeat/csr/main.ts
diff --git a/packages/bench/src/scenarios/repeat/element.ts b/sites/benchmarks/src/scenarios/repeat/element.ts
similarity index 100%
rename from packages/bench/src/scenarios/repeat/element.ts
rename to sites/benchmarks/src/scenarios/repeat/element.ts
diff --git a/packages/bench/src/scenarios/repeat/hydration/index.html b/sites/benchmarks/src/scenarios/repeat/hydration/index.html
similarity index 100%
rename from packages/bench/src/scenarios/repeat/hydration/index.html
rename to sites/benchmarks/src/scenarios/repeat/hydration/index.html
diff --git a/packages/bench/src/scenarios/repeat/hydration/main.ts b/sites/benchmarks/src/scenarios/repeat/hydration/main.ts
similarity index 100%
rename from packages/bench/src/scenarios/repeat/hydration/main.ts
rename to sites/benchmarks/src/scenarios/repeat/hydration/main.ts
diff --git a/packages/bench/src/scenarios/repeat/hydration/render.ts b/sites/benchmarks/src/scenarios/repeat/hydration/render.ts
similarity index 100%
rename from packages/bench/src/scenarios/repeat/hydration/render.ts
rename to sites/benchmarks/src/scenarios/repeat/hydration/render.ts
diff --git a/packages/bench/src/scenarios/repeat/template.html b/sites/benchmarks/src/scenarios/repeat/template.html
similarity index 100%
rename from packages/bench/src/scenarios/repeat/template.html
rename to sites/benchmarks/src/scenarios/repeat/template.html
diff --git a/packages/bench/src/scenarios/report.css b/sites/benchmarks/src/scenarios/report.css
similarity index 100%
rename from packages/bench/src/scenarios/report.css
rename to sites/benchmarks/src/scenarios/report.css
diff --git a/packages/bench/src/scenarios/report.js b/sites/benchmarks/src/scenarios/report.js
similarity index 100%
rename from packages/bench/src/scenarios/report.js
rename to sites/benchmarks/src/scenarios/report.js
diff --git a/packages/bench/src/scenarios/tree.ts b/sites/benchmarks/src/scenarios/tree.ts
similarity index 100%
rename from packages/bench/src/scenarios/tree.ts
rename to sites/benchmarks/src/scenarios/tree.ts
diff --git a/packages/bench/src/scenarios/when/csr/index.html b/sites/benchmarks/src/scenarios/when/csr/index.html
similarity index 100%
rename from packages/bench/src/scenarios/when/csr/index.html
rename to sites/benchmarks/src/scenarios/when/csr/index.html
diff --git a/packages/bench/src/scenarios/when/csr/main.ts b/sites/benchmarks/src/scenarios/when/csr/main.ts
similarity index 100%
rename from packages/bench/src/scenarios/when/csr/main.ts
rename to sites/benchmarks/src/scenarios/when/csr/main.ts
diff --git a/packages/bench/src/scenarios/when/element.ts b/sites/benchmarks/src/scenarios/when/element.ts
similarity index 100%
rename from packages/bench/src/scenarios/when/element.ts
rename to sites/benchmarks/src/scenarios/when/element.ts
diff --git a/packages/bench/src/scenarios/when/hydration/index.html b/sites/benchmarks/src/scenarios/when/hydration/index.html
similarity index 100%
rename from packages/bench/src/scenarios/when/hydration/index.html
rename to sites/benchmarks/src/scenarios/when/hydration/index.html
diff --git a/packages/bench/src/scenarios/when/hydration/main.ts b/sites/benchmarks/src/scenarios/when/hydration/main.ts
similarity index 100%
rename from packages/bench/src/scenarios/when/hydration/main.ts
rename to sites/benchmarks/src/scenarios/when/hydration/main.ts
diff --git a/packages/bench/src/scenarios/when/hydration/render.ts b/sites/benchmarks/src/scenarios/when/hydration/render.ts
similarity index 100%
rename from packages/bench/src/scenarios/when/hydration/render.ts
rename to sites/benchmarks/src/scenarios/when/hydration/render.ts
diff --git a/packages/bench/src/scenarios/when/template.html b/sites/benchmarks/src/scenarios/when/template.html
similarity index 100%
rename from packages/bench/src/scenarios/when/template.html
rename to sites/benchmarks/src/scenarios/when/template.html
diff --git a/packages/bench/src/trace.ts b/sites/benchmarks/src/trace.ts
similarity index 100%
rename from packages/bench/src/trace.ts
rename to sites/benchmarks/src/trace.ts
diff --git a/packages/bench/tsconfig.json b/sites/benchmarks/tsconfig.json
similarity index 100%
rename from packages/bench/tsconfig.json
rename to sites/benchmarks/tsconfig.json
diff --git a/packages/bench/vite.config.ts b/sites/benchmarks/vite.config.ts
similarity index 100%
rename from packages/bench/vite.config.ts
rename to sites/benchmarks/vite.config.ts