First commit.

Signed-off-by: Chen Xiao <abigwc@gmail.com>
This commit is contained in:
Chen Xiao
2026-05-08 14:43:16 +08:00
commit 0b64e2de94
10989 changed files with 2253791 additions and 0 deletions
+3
View File
@@ -0,0 +1,3 @@
export { PRINT_WARNING, PRINT_ERROR } from "./print.js";
export { timer } from "./timer.js";
export { toFastProperties } from "./to-fast-properties.js";
+14
View File
@@ -0,0 +1,14 @@
export function PRINT_ERROR(msg: string) {
/* istanbul ignore else - can't override global.console in node.js */
if (console && console.error) {
console.error(`Error: ${msg}`);
}
}
export function PRINT_WARNING(msg: string) {
/* istanbul ignore else - can't override global.console in node.js*/
if (console && console.warn) {
// TODO: modify docs accordingly
console.warn(`Warning: ${msg}`);
}
}
+7
View File
@@ -0,0 +1,7 @@
export function timer<T>(func: () => T): { time: number; value: T } {
const start = new Date().getTime();
const val = func();
const end = new Date().getTime();
const total = end - start;
return { time: total, value: val };
}
+27
View File
@@ -0,0 +1,27 @@
// based on: https://github.com/petkaantonov/bluebird/blob/b97c0d2d487e8c5076e8bd897e0dcd4622d31846/src/util.js#L201-L216
export function toFastProperties(toBecomeFast: any) {
function FakeConstructor() {}
// If our object is used as a constructor, it would receive
FakeConstructor.prototype = toBecomeFast;
const fakeInstance = new (FakeConstructor as any)();
function fakeAccess() {
return typeof fakeInstance.bar;
}
// help V8 understand this is a "real" prototype by actually using
// the fake instance.
fakeAccess();
fakeAccess();
// Always true condition to suppress the Firefox warning of unreachable
// code after a return statement.
if (1) return toBecomeFast;
// Eval prevents optimization of this method (even though this is dead code)
// - https://esbuild.github.io/content-types/#direct-eval
/* istanbul ignore next */
// tslint:disable-next-line
(0, eval)(toBecomeFast);
}