import { bench, group, run } from "mitata";
import fastDeepEquals from "fast-deep-equal/es6/index";
// const Date = globalThis.Date;
function func1() {}
function func2() {}
const s = Symbol("foo");
const a1 = [1, 2, 3, 4];
a1[s] = "f00";
const a2 = [1, 2, 3, 4];
a2[s] = "f00";
const e1 = new Set();
e1.add([1, 2, 3]);
e1.add("test1");
e1.add(498);
e1.add({ a: 1, b: 2 });
e1.add({ a: 1, b: 434221 });
e1.add({ a: 1, b: 25 });
e1.add({ a: 1, b: 4 });
e1.add({ a: 1, b: 2667 });
e1.add({ a: 1, b: 2 });
e1.add({ a: 1, b: 23426 });
e1.add({ a: 1, b: 672 });
e1.add({ a: 1, b: 28465 });
const e2 = new Set();
e2.add([1, 2, 3]);
e2.add("test1");
e2.add(498);
e1.add({ a: 1, b: 2 });
e1.add({ a: 1, b: 434221 });
e1.add({ a: 1, b: 25 });
e1.add({ a: 1, b: 4 });
e1.add({ a: 1, b: 2667 });
e1.add({ a: 1, b: 2 });
e1.add({ a: 1, b: 23426 });
e1.add({ a: 1, b: 672 });
e1.add({ a: 1, b: 28465 });
const d1 = new Set();
d1.add({ a: 1, b: 2 });
const d2 = new Set();
d2.add({ a: 1, b: 2 });
const fixture = [
{
description: "scalars",
tests: [
{
description: "equal numbers",
value1: 1,
value2: 1,
equal: true,
},
{
description: "not equal numbers",
value1: 1,
value2: 2,
equal: false,
},
{
description: "number and array are not equal",
value1: 1,
value2: [],
equal: false,
},
{
description: "0 and null are not equal",
value1: 0,
value2: null,
equal: false,
},
{
description: "equal strings",
value1: "azzzz",
value2: "azzzz",
equal: true,
},
{
description: "not equal strings",
value1: "azzzz",
value2: "bzzzz",
equal: false,
},
{
description: "empty string and null are not equal",
value1: "",
value2: null,
equal: false,
},
{
description: "null is equal to null",
value1: null,
value2: null,
equal: true,
},
{
description: "equal booleans (true)",
value1: true,
value2: true,
equal: true,
},
{
description: "equal booleans (false)",
value1: false,
value2: false,
equal: true,
},
{
description: "not equal booleans",
value1: true,
value2: false,
equal: false,
},
{
description: "1 and true are not equal",
value1: 1,
value2: true,
equal: false,
},
{
description: "0 and false are not equal",
value1: 0,
value2: false,
equal: false,
},
{
description: "NaN and NaN are equal",
value1: NaN,
value2: NaN,
equal: true,
},
{
description: "0 and -0 are equal",
value1: 0,
value2: -0,
equal: true,
},
{
description: "Infinity and Infinity are equal",
value1: Infinity,
value2: Infinity,
equal: true,
},
{
description: "Infinity and -Infinity are not equal",
value1: Infinity,
value2: -Infinity,
equal: false,
},
],
},
{
description: "objects",
tests: [
{
description: "empty objects are equal",
value1: {},
value2: {},
equal: true,
},
{
description: 'equal objects (same properties "order")',
value1: { a: 1, b: "2" },
value2: { a: 1, b: "2" },
equal: true,
},
{
description: 'equal objects (different properties "order")',
value1: { a: 1, b: "2" },
value2: { b: "2", a: 1 },
equal: true,
},
{
description: "not equal objects (extra property)",
value1: { a: 1, b: "2" },
value2: { a: 1, b: "2", c: [] },
equal: false,
},
{
description: "not equal objects (different property values)",
value1: { a: 1, b: "2", c: 3 },
value2: { a: 1, b: "2", c: 4 },
equal: false,
},
{
description: "not equal objects (different properties)",
value1: { a: 1, b: "2", c: 3 },
value2: { a: 1, b: "2", d: 3 },
equal: false,
},
{
description: "equal objects (same sub-properties)",
value1: { a: [{ b: "c" }] },
value2: { a: [{ b: "c" }] },
equal: true,
},
{
description: "not equal objects (different sub-property value)",
value1: { a: [{ b: "c" }] },
value2: { a: [{ b: "d" }] },
equal: false,
},
{
description: "not equal objects (different sub-property)",
value1: { a: [{ b: "c" }] },
value2: { a: [{ c: "c" }] },
equal: false,
},
{
description: "empty array and empty object are not equal",
value1: {},
value2: [],
equal: false,
},
{
description: "object with extra undefined properties are not equal #1",
value1: {},
value2: { foo: undefined },
equal: false,
},
{
description: "object with extra undefined properties are not equal #2",
value1: { foo: undefined },
value2: {},
equal: false,
},
{
description: "object with extra undefined properties are not equal #3",
value1: { foo: undefined },
value2: { bar: undefined },
equal: false,
},
{
description: "nulls are equal",
value1: null,
value2: null,
equal: true,
},
{
description: "null and undefined are not equal",
value1: null,
value2: undefined,
equal: false,
},
{
description: "null and empty object are not equal",
value1: null,
value2: {},
equal: false,
},
{
description: "undefined and empty object are not equal",
value1: undefined,
value2: {},
equal: false,
},
{
description:
"objects with different `toString` functions returning same values are equal",
value1: { toString: () => "Hello world!" },
value2: { toString: () => "Hello world!" },
equal: true,
},
{
description:
"objects with `toString` functions returning different values are not equal",
value1: { toString: () => "Hello world!" },
value2: { toString: () => "Hi!" },
equal: false,
},
],
},
{
description: "arrays",
tests: [
{
description: "two empty arrays are equal",
value1: [],
value2: [],
equal: true,
},
{
description: "equal arrays",
value1: [1, 2, 3],
value2: [1, 2, 3],
equal: true,
},
{
description: "equal arrays with symbols",
value1: a1,
value2: a2,
equal: true,
},
// {
// description: "not equal arrays (different item)",
// value1: [1, 2, 3],
// value2: [1, 2, 4],
// equal: false,
// },
// {
// description: "not equal arrays (different length)",
// value1: [1, 2, 3],
// value2: [1, 2],
// equal: false,
// },
{
description: "equal arrays of objects",
value1: [
...Array.from({ length: 200000 }, (i) => ({
a: 1,
b: 2,
})),
],
value2: [
...Array.from({ length: 200000 }, (i) => ({
a: 1,
b: 2,
})),
],
equal: true,
},
{
description: "equal objects",
value1: {
a: 1,
b: 2,
c: 3,
d: 4,
// get foo() {
// return 1;
// },
},
value2: {
a: 1,
b: 2,
c: 3,
d: 4,
// get foo() {
// return 1;
// },
},
equal: true,
},
{
description: "equal sets",
value1: d1,
value2: d2,
equal: true,
},
// {
// description: "not equal arrays of objects",
// value1: [{ a: "a" }, { b: "b" }],
// value2: [{ a: "a" }, { b: "c" }],
// equal: false,
// },
// {
// description: "pseudo array and equivalent array are not equal",
// value1: { 0: 0, 1: 1, length: 2 },
// value2: [0, 1],
// equal: false,
// },
],
},
{
description: "Date objects",
tests: [
{
description: "equal date objects",
value1: new Date("2017-06-16T21:36:48.362Z"),
value2: new Date("2017-06-16T21:36:48.362Z"),
equal: true,
},
{
description: "not equal date objects",
value1: new Date("2017-06-16T21:36:48.362Z"),
value2: new Date("2017-01-01T00:00:00.000Z"),
equal: false,
},
{
description: "date and string are not equal",
value1: new Date("2017-06-16T21:36:48.362Z"),
value2: "2017-06-16T21:36:48.362Z",
equal: false,
},
{
description: "date and object are not equal",
value1: new Date("2017-06-16T21:36:48.362Z"),
value2: {},
equal: false,
},
],
},
{
description: "RegExp objects",
tests: [
{
description: "equal RegExp objects",
value1: /foo/,
value2: /foo/,
equal: true,
},
{
description: "not equal RegExp objects (different pattern)",
value1: /foo/,
value2: /bar/,
equal: false,
},
{
description: "not equal RegExp objects (different flags)",
value1: /foo/,
value2: /foo/i,
equal: false,
},
{
description: "RegExp and string are not equal",
value1: /foo/,
value2: "foo",
equal: false,
},
{
description: "RegExp and object are not equal",
value1: /foo/,
value2: {},
equal: false,
},
],
},
{
description: "functions",
tests: [
{
description: "same function is equal",
value1: func1,
value2: func1,
equal: true,
},
{
description: "different functions are not equal",
value1: func1,
value2: func2,
equal: false,
},
],
},
{
description: "sample objects",
tests: [
{
description: "big object",
value1: {
prop1: "value1",
prop2: "value2",
prop3: "value3",
prop4: {
subProp1: "sub value1",
subProp2: {
subSubProp1: "sub sub value1",
subSubProp2: [1, 2, { prop2: 1, prop: 2 }, 4, 5],
},
},
prop5: 1000,
// prop6: new Date(2016, 2, 10),
},
value2: {
prop5: 1000,
prop3: "value3",
prop1: "value1",
prop2: "value2",
// prop6: new Date(2016, 2, 10),
prop4: {
subProp2: {
subSubProp1: "sub sub value1",
subSubProp2: [1, 2, { prop2: 1, prop: 2 }, 4, 5],
},
subProp1: "sub value1",
},
},
equal: true,
},
],
},
];
for (let { tests, description } of fixture) {
// if (description === "sample objects") {
for (let { description: describe, value1, value2, equal } of tests) {
var expected;
group(describe, () => {
for (let equalsFn of [Bun.deepEquals, fastDeepEquals]) {
bench(equalsFn.name, () => {
expected = equalsFn(value1, value2);
if (expected !== equal) {
throw new Error(
`Expected ${expected} to be ${equal} for ${description}`,
);
}
});
}
});
// }
}
}
await run();
mpty-slots'>fix/empty-slots
fix/filepath-layer
fix/frontmatter-file-url
fix/head-propagation
fix/hmr-css-deps
fix/import-ts-errors
fix/main-build-failure
fix/map-file-404-logs
fix/mdx-named-slots
fix/middleware-import
fix/multi-images
fix/nested-get-collection-call
fix/preact-package-build-failure
fix/primary-key-optional
fix/regex-flags
fix/server-headers
fix/stable-renderer-order
fix/transaction-type
fix/vue-nested
fix/webapi-dev
fork/markdoc-poc-with-md-support
fork/markdoc-poc-with-parser
format-imports-run
formatting
forward-button
framework-agnostic-astro-components
fryuni/db-pluggable-backend
fryuni/test-route-setup-hook
fryuni/tracing-hooks
hippotastic/legitimate-bat
hoisted-script-ts
host-ssr-example-2
hostfornode
image-non-node
improve-base-handling
inline-hoisted-scripts-now
jn.convert-assertions-to-query-params
latest
live-loaders
main
mandar1jn/ci-repo-check
markdoc-embed-prototyping
markdown
markdown-poc
mdx-path
mk/render-slot-template-backup
move-default-md-code-component
mt/lit-DSD
mt/lit-regen
mt/parse-DSD
mt/router_refactoring
nate/new-blog-template
netlify-1
netlify-preview
new-adapter-api
next
next-render
no-more-vite-postprocess
no-more-vite-postprocess2
old-build
plt-1006/unified-and-mdx
plt-1768-trailing-slash-object
preact-shared-signals
process-env-override
progress-log
re-export-drivers
react-fast-refresh
redirects-priority2
redirects-ssg-object
refactor-how-client-directives-work
refactor/image-internals
refactor/markdoc-renderer
refactor/rendere-queue
refactor/sitemap
refactor/ssr-size
release/0.17
release/0.18
remote-cdn-link
remove-fs-abstraction
remove-start
restart-on-lock
revert-13008-renovate/all-minor-patch
revert-lockfile
route-manifest-adapter
sarah11918-image-errors
sarah11918-patch-2
sb-tests2
seroval
server-islands-children
session-docs
single-file-build-2
slash-404-hint
slot-bug-1
solid-ecosystem-pkg
spike/app-setup
spike/autonav
spike/codehike
spike/context
spike/csr
spike/default-content
spike/incremental
spike/incremental-ii
spike/markdown-wasm
spike/render
spike/streaming
spike/svg
sqlite-test
squeal
ssr-redirect
stream-buffer
streaming
telemetry-audit-1
test/new-integrations-demo
test/new-ssr-demo
top-level-exports-integrations
ts-in-hoisted-script
ts-no-err
upd-vite-vendored
upgrade-deps
v1-beta
vercel-test
vite-fork
vscode-astro-global
vt-follow-redirects
warn-exp-flag
win
windows-tests-beta
wip-assets
wip-component-api-2
wip-docs-components
wip-docs-reference-gen
wip-fetch-cache
wip-fun-flags
wip-icons
wip-logging
wip-logging-saved
wip-mdc
wip-mdx-to-astro-js
wip-preview-command-integrations
wip-setup-content
wip-smoke
wip-speed-up-markdown
wip-stage
wip/react-19-test
Unnamed repository; edit this file 'description' to name the repository.
Age Commit message (Collapse ) Author Files Lines
* fixed search bar not working
* fixed search bar not working during build
* fix search bar throwing error on production site
* Add config option customPages
Add config option customPages to be able to add custom URL pages to the sitemap.xml
* add comment to document customPages option
* Re-export vite types and added them to zod schema
* Removed casted typed
* Changeset
* [ci] update lockfile
* chore: fix lockfile
* fix: pin turbo
Co-authored-by: FredKSchott <FredKSchott@users.noreply.github.com>
Co-authored-by: Nate Moore <nate@skypack.dev>
* add error hints
* chore: add changeset
Co-authored-by: Nate Moore <nate@skypack.dev>
* feat: pass "client" directive to clientEntrypoints
* refactor: remove hydration warning suppression react 17
* feat: remove hydration warning suppression react 18
* chore: changeset
* fix: change metadata to options bag
* WIP: adding test coverage
* test fixes
* moving the shared lib up a directory to reproduce the bug
* fix: transform with the module ID instead of parsing the filepath
* adding the shared lib to the workspaces list
* fix: client-only assets now get the full URL from vite
* why is this needed for windows?
* WIP: using /@fs to handle windows filepaths
* fix: remove /@fs from hoisted script imports
* nit: removing unused imports
* fix: strip off the path root when mapping client:only styles
* had to reverse the `/@fs` handling to work on windows and unix
* chore: adding comments to explain the fix
* chore: adding changeset
* fix: exclude `node-fetch` from vite.optimizeDeps
* chore: format
* Removed ignores
* Migration to v3
* More changes
* Remove legacy redirects
* Fail when there is no ENABLE_VC_BUILD
* Fix edge
* Updated readme
* Changeset
* Added static mode
* Updated documentation
* Updated shim
* Made edge work!
* Updated changeset
* Ensure empty dir
* Fixed redirects for dynamic paths
* Removed extra declaration
* Splited imports
* Updated readme
* Fixed some urls
* Deprecated shim!
* [test]: Vercel NFT
* Beautify
* Edge bundle to node 14.19
Vercel runs 14.19.1 (I've checked it manually)
* Re-added shim (#3304)
* Added `node:` prefix
* Use the same bundling as Deno for Edge
* Remove esbuild
* Fixed shim
* Moved nft
* Updated changeset
* Added note about Edge
* fix typo
* Added support for Node 16 (vercel/vercel#7772)
* Fix APIRoute type
* Adds a changeset
* Update usage of the two API route signatures
* wip: port gradient helpers from sandbox ideas
* feat: wire up rocket gradient 🚀
* feat: wire up rocket gradient on install step
* refactor: update "next steps" wording
* deps: add chalk (for rendering gradient)
* chore: changeset
* chore: clean up sstray template string