2
0
mirror of https://github.com/tenrok/BBob.git synced 2026-05-15 11:59:37 +03:00
Files
Nikolay Kost 8797f7f363 feat: typescript support (#185)
* feat: initial typescript support

* feat: typescript support

* feat(plugin-helper): move files to typescript

* chore: update lock files

* feat: preset types

* fix: build

* fix: benchmark

* fix: remove pnpm cache

* fix: bench action

* fix: pnpm recursive install

* fix: nx cache

* fix: lock file

* fix: workflows

* fix: lerna support in pnpm

* fix: pnpm workspace

* fix: remove unused files

* fix: pnpm lock file

* fix: update lerna for support pnpm

* fix: lerna bootstrap

* fix: rollup build

* fix: update nx

* fix: build

* fix: add nx dep target

* fix: remove nx cache

* fix: workflow run on push only for master

* fix: test workflow run on push only for master

* fix: remove parallel for gen types

* fix: benchmark

* fix: benchmark imports

* fix: pnpm

* fix: types errors and pnpm

* fix: types

* fix: types

* refactor: parser

* fix(parser): tests

* fix: preset tests

* fix: react types

* fix: react type declarations

* fix: pnpm lock file

* fix: react preset types

* fix: lock file

* fix: vue2 types

* feat: dev container support

* fix: types

* fix: types

* refactor: rewrite pkg-task, add nx gen-types deps, fix react/render.ts

* refactor: types

* fix: types

* fix: rename gen-types to types

* fix: nx build order

* fix: nx reset

* fix: define nx deps explicit

* fix: build

* fix: nx

* fix: nx order build

* fix: nx deps

* fix: bbob cli tests

* fix: tests

* fix: cli tests and import

* fix: test cover

* fix: cli cover
2024-04-23 21:11:14 +02:00

84 lines
2.0 KiB
JavaScript
Vendored

/* eslint-disable global-require */
const Benchmark = require('benchmark');
const pico = require('picocolors');
const stub = require('./test/stub');
function formatNumber(number) {
return String(number)
// .replace(/\d{3}$/, ',$&')
.replace(/^(\d|\d\d)(\d{3},)/, '$1,$2');
}
const suite = new Benchmark.Suite();
suite
.add('regex/parser', () => require('./test/RegexParser').parse(stub, {
ch: {
closable: true,
},
}))
.add('ya-bbcode', () => {
const Yabbcode = require('ya-bbcode');
const parser = new Yabbcode();
parser.clearTags();
parser.registerTag('ch', {
type: 'replace',
open: () => '<div>',
close: () => '</div>',
});
return parser.parse(stub);
})
.add('xbbcode/parser', () => {
const xbbcode = require('xbbcode-parser');
xbbcode.addTags({
ch: {
openTag: () => '<div>',
closeTag: () => '</div>',
restrictChildrenTo: [],
},
});
return xbbcode.process({
text: stub,
removeMisalignedTags: false,
addInLineBreaks: false,
});
})
.add('@bbob/parser lexer old', () => {
const lexer1 = require('./lexer_old');
return require('@bbob/parser').parse(stub, {
onlyAllowTags: ['ch'],
createTokenizer: lexer1.createLexer,
});
})
.add('@bbob/parser lexer', () => {
const lexer2 = require('@bbob/parser');
return require('@bbob/parser').parse(stub, {
onlyAllowTags: ['ch'],
createTokenizer: lexer2.createLexer,
});
})
// add listeners
.on('cycle', (event) => {
const name = event.target.name.padEnd('@bbob/parser lexer old'.length);
const hz = formatNumber(event.target.hz.toFixed(0)).padStart(10);
process.stdout.write(`${name}${pico.bold(hz)}${pico.dim(' ops/sec')}\n`);
})
.on('complete', function onComplete() {
const name = this.filter('fastest').map('name').toString();
process.stdout.write(`Fastest is ${pico.bold(name)}`);
if (name.indexOf('@bbob') === -1) {
process.exit(1);
}
})
// run async
.run();