mirror of
https://github.com/CorentinTh/it-tools.git
synced 2025-05-06 06:17:11 -04:00
🔧:build SSR dist and deploy
This commit is contained in:
parent
76c26901d7
commit
c59ad6aedb
465 changed files with 214127 additions and 2 deletions
520
dist/server/chunks/chunk-671791a3.js
vendored
Normal file
520
dist/server/chunks/chunk-671791a3.js
vendored
Normal file
|
@ -0,0 +1,520 @@
|
|||
import { _ as _sfc_main$3 } from './chunk-aab02bfe.js';
|
||||
import { NInputNumber, NIcon, NScrollbar, NDivider, NFormItem } from 'naive-ui';
|
||||
import { a as __unplugin_components_0 } from './chunk-6003391e.js';
|
||||
import { _ as __unplugin_components_3 } from './chunk-4e7a6a8d.js';
|
||||
import { _ as _sfc_main$2, a as __unplugin_components_1 } from './chunk-8109fd17.js';
|
||||
import { defineComponent, unref, withCtx, createVNode, createTextVNode, nextTick, useSSRContext, computed, openBlock, createBlock, Fragment, renderList, createCommentVNode, isRef } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderList, ssrRenderComponent, ssrRenderStyle } from 'vue/server-renderer';
|
||||
import { Trash, Plus } from '@vicons/tabler';
|
||||
import { useTemplateRefsList, useVModel, useStorage } from '@vueuse/core';
|
||||
import _ from 'lodash';
|
||||
import { u as useCopy } from './chunk-77c5cc16.js';
|
||||
import 'pinia';
|
||||
import './chunk-11f44f81.js';
|
||||
import './chunk-35c3d701.js';
|
||||
|
||||
function computeAverage({ data }) {
|
||||
if (data.length === 0) {
|
||||
return 0;
|
||||
}
|
||||
return _.sum(data) / data.length;
|
||||
}
|
||||
function computeVariance({ data }) {
|
||||
const mean = computeAverage({ data });
|
||||
const squaredDiffs = data.map((value) => (value - mean) ** 2);
|
||||
return computeAverage({ data: squaredDiffs });
|
||||
}
|
||||
function arrayToMarkdownTable({ data, headerMap = {} }) {
|
||||
if (!Array.isArray(data) || data.length === 0) {
|
||||
return "";
|
||||
}
|
||||
const headers = Object.keys(data[0]);
|
||||
const rows = data.map((obj) => Object.values(obj));
|
||||
const headerRow = `| ${headers.map((header) => headerMap[header] ?? header).join(" | ")} |`;
|
||||
const separatorRow = `| ${headers.map(() => "---").join(" | ")} |`;
|
||||
const dataRows = rows.map((row) => `| ${row.join(" | ")} |`).join("\n");
|
||||
return `${headerRow}
|
||||
${separatorRow}
|
||||
${dataRows}`;
|
||||
}
|
||||
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "dynamic-values",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
values: {}
|
||||
},
|
||||
emits: ["update:values"],
|
||||
setup(__props, { emit }) {
|
||||
const props = __props;
|
||||
const refs = useTemplateRefsList();
|
||||
const values = useVModel(props, "values", emit);
|
||||
async function addValue() {
|
||||
values.value.push(null);
|
||||
await nextTick();
|
||||
refs.value.at(-1)?.focus();
|
||||
}
|
||||
function onInputEnter(index) {
|
||||
if (index === values.value.length - 1) {
|
||||
addValue();
|
||||
return;
|
||||
}
|
||||
refs.value.at(index + 1)?.focus();
|
||||
}
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_c_tooltip = _sfc_main$2;
|
||||
const _component_c_button = __unplugin_components_0;
|
||||
const _component_n_icon = NIcon;
|
||||
_push(`<div${ssrRenderAttrs(_attrs)}><!--[-->`);
|
||||
ssrRenderList(unref(values), (value, index) => {
|
||||
_push(`<div mb-2 flex flex-nowrap gap-2>`);
|
||||
_push(ssrRenderComponent(unref(NInputNumber), {
|
||||
ref_for: true,
|
||||
ref: unref(refs).set,
|
||||
value: unref(values)[index],
|
||||
"onUpdate:value": ($event) => unref(values)[index] = $event,
|
||||
"show-button": false,
|
||||
placeholder: "Set your measure...",
|
||||
autofocus: "",
|
||||
onKeydown: ($event) => onInputEnter(index)
|
||||
}, null, _parent));
|
||||
_push(ssrRenderComponent(_component_c_tooltip, { tooltip: "Delete this value" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(ssrRenderComponent(_component_c_button, {
|
||||
circle: "",
|
||||
variant: "text",
|
||||
onClick: ($event) => unref(values).splice(index, 1)
|
||||
}, {
|
||||
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(ssrRenderComponent(_component_n_icon, {
|
||||
component: unref(Trash),
|
||||
depth: "3",
|
||||
size: "18"
|
||||
}, null, _parent3, _scopeId2));
|
||||
} else {
|
||||
return [
|
||||
createVNode(_component_n_icon, {
|
||||
component: unref(Trash),
|
||||
depth: "3",
|
||||
size: "18"
|
||||
}, null, 8, ["component"])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 2
|
||||
}, _parent2, _scopeId));
|
||||
} else {
|
||||
return [
|
||||
createVNode(_component_c_button, {
|
||||
circle: "",
|
||||
variant: "text",
|
||||
onClick: ($event) => unref(values).splice(index, 1)
|
||||
}, {
|
||||
default: withCtx(() => [
|
||||
createVNode(_component_n_icon, {
|
||||
component: unref(Trash),
|
||||
depth: "3",
|
||||
size: "18"
|
||||
}, null, 8, ["component"])
|
||||
]),
|
||||
_: 2
|
||||
}, 1032, ["onClick"])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 2
|
||||
}, _parent));
|
||||
_push(`</div>`);
|
||||
});
|
||||
_push(`<!--]-->`);
|
||||
_push(ssrRenderComponent(_component_c_button, { onClick: addValue }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(ssrRenderComponent(_component_n_icon, {
|
||||
component: unref(Plus),
|
||||
depth: "3",
|
||||
"mr-2": "",
|
||||
size: "18"
|
||||
}, null, _parent2, _scopeId));
|
||||
_push2(` Add a measure `);
|
||||
} else {
|
||||
return [
|
||||
createVNode(_component_n_icon, {
|
||||
component: unref(Plus),
|
||||
depth: "3",
|
||||
"mr-2": "",
|
||||
size: "18"
|
||||
}, null, 8, ["component"]),
|
||||
createTextVNode(" Add a measure ")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
const _sfc_setup$1 = _sfc_main$1.setup;
|
||||
_sfc_main$1.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("src/tools/benchmark-builder/dynamic-values.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "benchmark-builder",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const suites = useStorage("benchmark-builder:suites", [
|
||||
{ title: "Suite 1", data: [5, 10] },
|
||||
{ title: "Suite 2", data: [8, 12] }
|
||||
]);
|
||||
const unit = useStorage("benchmark-builder:unit", "");
|
||||
const round = (v) => Math.round(v * 1e3) / 1e3;
|
||||
const results = computed(() => {
|
||||
return suites.value.map(({ data: dirtyData, title }) => {
|
||||
const data = dirtyData.filter(_.isNumber);
|
||||
return {
|
||||
title,
|
||||
size: data.length,
|
||||
mean: computeAverage({ data }),
|
||||
variance: computeVariance({ data })
|
||||
};
|
||||
}).sort((a, b) => a.mean - b.mean).map(({ mean, variance, size, title }, index, suites2) => {
|
||||
const cleanUnit = unit.value.trim();
|
||||
const bestMean = suites2[0].mean;
|
||||
const deltaWithBestMean = mean - bestMean;
|
||||
const ratioWithBestMean = bestMean === 0 ? "∞" : round(mean / bestMean);
|
||||
const comparisonValues = index !== 0 && bestMean !== mean ? ` (+${round(deltaWithBestMean)}${cleanUnit} ; x${ratioWithBestMean})` : "";
|
||||
return {
|
||||
position: index + 1,
|
||||
title,
|
||||
mean: `${round(mean)}${cleanUnit}${comparisonValues}`,
|
||||
variance: `${round(variance)}${cleanUnit}${cleanUnit ? "²" : ""}`,
|
||||
size
|
||||
};
|
||||
});
|
||||
});
|
||||
const { copy } = useCopy({ createToast: false });
|
||||
const header = {
|
||||
position: "Position",
|
||||
title: "Suite",
|
||||
size: "Samples",
|
||||
mean: "Mean",
|
||||
variance: "Variance"
|
||||
};
|
||||
function copyAsMarkdown() {
|
||||
copy(arrayToMarkdownTable({ data: results.value, headerMap: header }));
|
||||
}
|
||||
function copyAsBulletList() {
|
||||
const bulletList = results.value.flatMap(({ title, ...sections }) => {
|
||||
return [
|
||||
` - ${title}`,
|
||||
...Object.entries(sections).map(
|
||||
([key, value]) => ` - ${header[key] ?? key}: ${value}`
|
||||
)
|
||||
];
|
||||
}).join("\n");
|
||||
copy(bulletList);
|
||||
}
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_n_scrollbar = NScrollbar;
|
||||
const _component_c_card = __unplugin_components_1;
|
||||
const _component_c_input_text = __unplugin_components_3;
|
||||
const _component_n_divider = NDivider;
|
||||
const _component_n_form_item = NFormItem;
|
||||
const _component_c_button = __unplugin_components_0;
|
||||
const _component_n_icon = NIcon;
|
||||
const _component_c_table = _sfc_main$3;
|
||||
_push(`<!--[-->`);
|
||||
_push(ssrRenderComponent(_component_n_scrollbar, {
|
||||
style: { "flex": "1" },
|
||||
"x-scrollable": ""
|
||||
}, {
|
||||
default: withCtx((_2, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`<div mb-5 flex flex-1 flex-nowrap justify-center gap-12px${_scopeId}><!--[-->`);
|
||||
ssrRenderList(unref(suites), (suite, index) => {
|
||||
_push2(`<div${_scopeId}>`);
|
||||
_push2(ssrRenderComponent(_component_c_card, { style: { "width": "294px" } }, {
|
||||
default: withCtx((_3, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(ssrRenderComponent(_component_c_input_text, {
|
||||
value: suite.title,
|
||||
"onUpdate:value": ($event) => suite.title = $event,
|
||||
"label-position": "left",
|
||||
label: "Suite name",
|
||||
placeholder: "Suite name...",
|
||||
clearable: ""
|
||||
}, null, _parent3, _scopeId2));
|
||||
_push3(ssrRenderComponent(_component_n_divider, null, null, _parent3, _scopeId2));
|
||||
_push3(ssrRenderComponent(_component_n_form_item, {
|
||||
label: "Suite values",
|
||||
"show-feedback": false
|
||||
}, {
|
||||
default: withCtx((_4, _push4, _parent4, _scopeId3) => {
|
||||
if (_push4) {
|
||||
_push4(ssrRenderComponent(_sfc_main$1, {
|
||||
values: suite.data,
|
||||
"onUpdate:values": ($event) => suite.data = $event
|
||||
}, null, _parent4, _scopeId3));
|
||||
} else {
|
||||
return [
|
||||
createVNode(_sfc_main$1, {
|
||||
values: suite.data,
|
||||
"onUpdate:values": ($event) => suite.data = $event
|
||||
}, null, 8, ["values", "onUpdate:values"])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 2
|
||||
}, _parent3, _scopeId2));
|
||||
} else {
|
||||
return [
|
||||
createVNode(_component_c_input_text, {
|
||||
value: suite.title,
|
||||
"onUpdate:value": ($event) => suite.title = $event,
|
||||
"label-position": "left",
|
||||
label: "Suite name",
|
||||
placeholder: "Suite name...",
|
||||
clearable: ""
|
||||
}, null, 8, ["value", "onUpdate:value"]),
|
||||
createVNode(_component_n_divider),
|
||||
createVNode(_component_n_form_item, {
|
||||
label: "Suite values",
|
||||
"show-feedback": false
|
||||
}, {
|
||||
default: withCtx(() => [
|
||||
createVNode(_sfc_main$1, {
|
||||
values: suite.data,
|
||||
"onUpdate:values": ($event) => suite.data = $event
|
||||
}, null, 8, ["values", "onUpdate:values"])
|
||||
]),
|
||||
_: 2
|
||||
}, 1024)
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 2
|
||||
}, _parent2, _scopeId));
|
||||
_push2(`<div flex justify-center${_scopeId}>`);
|
||||
if (unref(suites).length > 1) {
|
||||
_push2(ssrRenderComponent(_component_c_button, {
|
||||
variant: "text",
|
||||
onClick: ($event) => unref(suites).splice(index, 1)
|
||||
}, {
|
||||
default: withCtx((_3, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(ssrRenderComponent(_component_n_icon, {
|
||||
component: unref(Trash),
|
||||
depth: "3",
|
||||
"mr-2": "",
|
||||
size: "18"
|
||||
}, null, _parent3, _scopeId2));
|
||||
_push3(` Delete suite `);
|
||||
} else {
|
||||
return [
|
||||
createVNode(_component_n_icon, {
|
||||
component: unref(Trash),
|
||||
depth: "3",
|
||||
"mr-2": "",
|
||||
size: "18"
|
||||
}, null, 8, ["component"]),
|
||||
createTextVNode(" Delete suite ")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 2
|
||||
}, _parent2, _scopeId));
|
||||
} else {
|
||||
_push2(`<!---->`);
|
||||
}
|
||||
_push2(ssrRenderComponent(_component_c_button, {
|
||||
variant: "text",
|
||||
onClick: ($event) => unref(suites).splice(index + 1, 0, { data: [0], title: `Suite ${unref(suites).length + 1}` })
|
||||
}, {
|
||||
default: withCtx((_3, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(ssrRenderComponent(_component_n_icon, {
|
||||
component: unref(Plus),
|
||||
depth: "3",
|
||||
"mr-2": "",
|
||||
size: "18"
|
||||
}, null, _parent3, _scopeId2));
|
||||
_push3(` Add suite `);
|
||||
} else {
|
||||
return [
|
||||
createVNode(_component_n_icon, {
|
||||
component: unref(Plus),
|
||||
depth: "3",
|
||||
"mr-2": "",
|
||||
size: "18"
|
||||
}, null, 8, ["component"]),
|
||||
createTextVNode(" Add suite ")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 2
|
||||
}, _parent2, _scopeId));
|
||||
_push2(`</div></div>`);
|
||||
});
|
||||
_push2(`<!--]--></div>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("div", {
|
||||
"mb-5": "",
|
||||
flex: "",
|
||||
"flex-1": "",
|
||||
"flex-nowrap": "",
|
||||
"justify-center": "",
|
||||
"gap-12px": ""
|
||||
}, [
|
||||
(openBlock(true), createBlock(Fragment, null, renderList(unref(suites), (suite, index) => {
|
||||
return openBlock(), createBlock("div", { key: index }, [
|
||||
createVNode(_component_c_card, { style: { "width": "294px" } }, {
|
||||
default: withCtx(() => [
|
||||
createVNode(_component_c_input_text, {
|
||||
value: suite.title,
|
||||
"onUpdate:value": ($event) => suite.title = $event,
|
||||
"label-position": "left",
|
||||
label: "Suite name",
|
||||
placeholder: "Suite name...",
|
||||
clearable: ""
|
||||
}, null, 8, ["value", "onUpdate:value"]),
|
||||
createVNode(_component_n_divider),
|
||||
createVNode(_component_n_form_item, {
|
||||
label: "Suite values",
|
||||
"show-feedback": false
|
||||
}, {
|
||||
default: withCtx(() => [
|
||||
createVNode(_sfc_main$1, {
|
||||
values: suite.data,
|
||||
"onUpdate:values": ($event) => suite.data = $event
|
||||
}, null, 8, ["values", "onUpdate:values"])
|
||||
]),
|
||||
_: 2
|
||||
}, 1024)
|
||||
]),
|
||||
_: 2
|
||||
}, 1024),
|
||||
createVNode("div", {
|
||||
flex: "",
|
||||
"justify-center": ""
|
||||
}, [
|
||||
unref(suites).length > 1 ? (openBlock(), createBlock(_component_c_button, {
|
||||
key: 0,
|
||||
variant: "text",
|
||||
onClick: ($event) => unref(suites).splice(index, 1)
|
||||
}, {
|
||||
default: withCtx(() => [
|
||||
createVNode(_component_n_icon, {
|
||||
component: unref(Trash),
|
||||
depth: "3",
|
||||
"mr-2": "",
|
||||
size: "18"
|
||||
}, null, 8, ["component"]),
|
||||
createTextVNode(" Delete suite ")
|
||||
]),
|
||||
_: 2
|
||||
}, 1032, ["onClick"])) : createCommentVNode("", true),
|
||||
createVNode(_component_c_button, {
|
||||
variant: "text",
|
||||
onClick: ($event) => unref(suites).splice(index + 1, 0, { data: [0], title: `Suite ${unref(suites).length + 1}` })
|
||||
}, {
|
||||
default: withCtx(() => [
|
||||
createVNode(_component_n_icon, {
|
||||
component: unref(Plus),
|
||||
depth: "3",
|
||||
"mr-2": "",
|
||||
size: "18"
|
||||
}, null, 8, ["component"]),
|
||||
createTextVNode(" Add suite ")
|
||||
]),
|
||||
_: 2
|
||||
}, 1032, ["onClick"])
|
||||
])
|
||||
]);
|
||||
}), 128))
|
||||
])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`<div style="${ssrRenderStyle({ "flex": "0 0 100%" })}"><div style="${ssrRenderStyle({ "max-width": "600px", "margin": "0 auto" })}"><div mx-auto max-w-sm flex justify-center gap-3>`);
|
||||
_push(ssrRenderComponent(_component_c_input_text, {
|
||||
value: unref(unit),
|
||||
"onUpdate:value": ($event) => isRef(unit) ? unit.value = $event : null,
|
||||
placeholder: "Unit (eg: ms)",
|
||||
label: "Unit",
|
||||
"label-position": "left",
|
||||
"mb-4": ""
|
||||
}, null, _parent));
|
||||
_push(ssrRenderComponent(_component_c_button, {
|
||||
onClick: ($event) => suites.value = [
|
||||
{ title: "Suite 1", data: [] },
|
||||
{ title: "Suite 2", data: [] }
|
||||
]
|
||||
}, {
|
||||
default: withCtx((_2, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(` Reset suites `);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode(" Reset suites ")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div>`);
|
||||
_push(ssrRenderComponent(_component_c_table, {
|
||||
data: unref(results),
|
||||
headers: header
|
||||
}, null, _parent));
|
||||
_push(`<div mt-5 flex justify-center gap-3>`);
|
||||
_push(ssrRenderComponent(_component_c_button, {
|
||||
onClick: ($event) => copyAsMarkdown()
|
||||
}, {
|
||||
default: withCtx((_2, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(` Copy as markdown table `);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode(" Copy as markdown table ")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(ssrRenderComponent(_component_c_button, {
|
||||
onClick: ($event) => copyAsBulletList()
|
||||
}, {
|
||||
default: withCtx((_2, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(` Copy as bullet list `);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode(" Copy as bullet list ")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div></div></div><!--]-->`);
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("src/tools/benchmark-builder/benchmark-builder.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
Loading…
Add table
Add a link
Reference in a new issue