@ezpaarse-project/ezreeport-sdk-js 3.0.0-rc.0 → 3.1.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api-BMa8Xm_O.js +14 -0
- package/dist/api-Bux99RKM.d.ts +27 -0
- package/dist/api-Bux99RKM.d.ts.map +1 -0
- package/dist/api-CAycTX8Z.d.mts +27 -0
- package/dist/api-CAycTX8Z.d.mts.map +1 -0
- package/dist/api-DFielZ98.mjs +10 -0
- package/dist/api-DFielZ98.mjs.map +1 -0
- package/dist/asyncToGenerator-BTgp0X8Q.mjs +28 -0
- package/dist/asyncToGenerator-D0muCXnm.js +34 -0
- package/dist/auth.d.mts +47 -0
- package/dist/auth.d.mts.map +1 -0
- package/dist/auth.d.ts +20 -16
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +8 -2
- package/dist/auth.mjs +6 -7
- package/dist/body-BeZQpy9P.d.mts +20 -0
- package/dist/body-BeZQpy9P.d.mts.map +1 -0
- package/dist/{body-ADynkNh0.d.ts → body-CBEqKjUe.d.ts} +12 -10
- package/dist/body-CBEqKjUe.d.ts.map +1 -0
- package/dist/crons.d.mts +19 -0
- package/dist/crons.d.mts.map +1 -0
- package/dist/crons.d.ts +10 -7
- package/dist/crons.d.ts.map +1 -0
- package/dist/crons.js +70 -2
- package/dist/crons.mjs +62 -87
- package/dist/crons.mjs.map +1 -1
- package/dist/decorator-Bjs7qJx3.mjs +46 -0
- package/dist/decorator-Bjs7qJx3.mjs.map +1 -0
- package/dist/decorator-DkHkhO2_.js +63 -0
- package/dist/elastic.d.mts +29 -0
- package/dist/elastic.d.mts.map +1 -0
- package/dist/elastic.d.ts +6 -3
- package/dist/elastic.d.ts.map +1 -0
- package/dist/elastic.js +53 -2
- package/dist/elastic.mjs +51 -48
- package/dist/elastic.mjs.map +1 -1
- package/dist/fetch-BoGJTvlB.js +84 -0
- package/dist/fetch-DcGZzMm-.mjs +73 -0
- package/dist/fetch-DcGZzMm-.mjs.map +1 -0
- package/dist/figures-Bdr-CTN1.mjs +252 -0
- package/dist/figures-Bdr-CTN1.mjs.map +1 -0
- package/dist/figures-cK0cMwpV.js +454 -0
- package/dist/generations.d.mts +20 -0
- package/dist/generations.d.mts.map +1 -0
- package/dist/generations.d.ts +13 -10
- package/dist/generations.d.ts.map +1 -0
- package/dist/generations.js +13 -2
- package/dist/generations.mjs +11 -7
- package/dist/health.d.mts +38 -0
- package/dist/health.d.mts.map +1 -0
- package/dist/health.d.ts +25 -22
- package/dist/health.d.ts.map +1 -0
- package/dist/health.js +25 -2
- package/dist/health.mjs +25 -42
- package/dist/health.mjs.map +1 -1
- package/dist/helpers/aggregations.d.mts +5 -0
- package/dist/helpers/aggregations.d.ts +5 -120
- package/dist/helpers/aggregations.js +128 -2
- package/dist/helpers/aggregations.mjs +123 -39
- package/dist/helpers/aggregations.mjs.map +1 -1
- package/dist/helpers/figures.d.mts +7 -0
- package/dist/helpers/figures.d.ts +7 -221
- package/dist/helpers/figures.js +32 -2
- package/dist/helpers/figures.mjs +4 -33
- package/dist/helpers/filters.d.mts +12 -0
- package/dist/helpers/filters.d.mts.map +1 -0
- package/dist/helpers/filters.d.ts +8 -4
- package/dist/helpers/filters.d.ts.map +1 -0
- package/dist/helpers/filters.js +8 -2
- package/dist/helpers/filters.mjs +7 -6
- package/dist/helpers/filters.mjs.map +1 -1
- package/dist/helpers/generations.d.mts +62 -0
- package/dist/helpers/generations.d.mts.map +1 -0
- package/dist/helpers/generations.d.ts +24 -17
- package/dist/helpers/generations.d.ts.map +1 -0
- package/dist/helpers/generations.js +120 -2
- package/dist/helpers/generations.mjs +116 -306
- package/dist/helpers/generations.mjs.map +1 -1
- package/dist/helpers/layouts.d.mts +11 -0
- package/dist/helpers/layouts.d.ts +11 -24
- package/dist/helpers/layouts.js +17 -2
- package/dist/helpers/layouts.mjs +5 -44
- package/dist/helpers/permissions.d.mts +20 -0
- package/dist/helpers/permissions.d.mts.map +1 -0
- package/dist/helpers/permissions.d.ts +5 -2
- package/dist/helpers/permissions.d.ts.map +1 -0
- package/dist/helpers/permissions.js +49 -2
- package/dist/helpers/permissions.mjs +47 -42
- package/dist/helpers/permissions.mjs.map +1 -1
- package/dist/helpers/task-presets.d.mts +21 -0
- package/dist/helpers/task-presets.d.mts.map +1 -0
- package/dist/helpers/task-presets.d.ts +10 -5
- package/dist/helpers/task-presets.d.ts.map +1 -0
- package/dist/helpers/task-presets.js +41 -2
- package/dist/helpers/task-presets.mjs +41 -38
- package/dist/helpers/task-presets.mjs.map +1 -1
- package/dist/helpers/tasks.d.mts +81 -0
- package/dist/helpers/tasks.d.mts.map +1 -0
- package/dist/helpers/tasks.d.ts +44 -34
- package/dist/helpers/tasks.d.ts.map +1 -0
- package/dist/helpers/tasks.js +220 -2
- package/dist/helpers/tasks.mjs +193 -210
- package/dist/helpers/tasks.mjs.map +1 -1
- package/dist/helpers/templates.d.mts +43 -0
- package/dist/helpers/templates.d.mts.map +1 -0
- package/dist/helpers/templates.d.ts +27 -18
- package/dist/helpers/templates.d.ts.map +1 -0
- package/dist/helpers/templates.js +132 -2
- package/dist/helpers/templates.mjs +111 -120
- package/dist/helpers/templates.mjs.map +1 -1
- package/dist/index-8Jjx2sF7.d.ts +123 -0
- package/dist/index-8Jjx2sF7.d.ts.map +1 -0
- package/dist/index-B1i_oJHZ.d.mts +62 -0
- package/dist/index-B1i_oJHZ.d.mts.map +1 -0
- package/dist/index-BM9ZEIo1.d.mts +112 -0
- package/dist/index-BM9ZEIo1.d.mts.map +1 -0
- package/dist/index-BQMs7hcI.d.mts +123 -0
- package/dist/index-BQMs7hcI.d.mts.map +1 -0
- package/dist/index-BwnTPP7V.d.mts +34 -0
- package/dist/index-BwnTPP7V.d.mts.map +1 -0
- package/dist/index-CFTcAzkv.d.ts +62 -0
- package/dist/index-CFTcAzkv.d.ts.map +1 -0
- package/dist/index-CLUuJN2U.d.ts +34 -0
- package/dist/index-CLUuJN2U.d.ts.map +1 -0
- package/dist/index-C_kFLsnO.d.ts +229 -0
- package/dist/index-C_kFLsnO.d.ts.map +1 -0
- package/dist/index-DIYCM-ZC.d.mts +73 -0
- package/dist/index-DIYCM-ZC.d.mts.map +1 -0
- package/dist/index-DdWYJWZx.d.mts +57 -0
- package/dist/index-DdWYJWZx.d.mts.map +1 -0
- package/dist/index-DwY7Gx4v.d.ts +73 -0
- package/dist/index-DwY7Gx4v.d.ts.map +1 -0
- package/dist/index-WThwo4GE.d.mts +229 -0
- package/dist/index-WThwo4GE.d.mts.map +1 -0
- package/dist/index-ikFTh5Of.d.ts +57 -0
- package/dist/index-ikFTh5Of.d.ts.map +1 -0
- package/dist/index-vQuyEowr.d.ts +112 -0
- package/dist/index-vQuyEowr.d.ts.map +1 -0
- package/dist/index.d.mts +169 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.d.ts +157 -6
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -2
- package/dist/index.mjs +8 -7
- package/dist/index.mjs.map +1 -1
- package/dist/layouts-B4-6tFOc.js +146 -0
- package/dist/layouts-BjVGZ985.mjs +69 -0
- package/dist/layouts-BjVGZ985.mjs.map +1 -0
- package/dist/methods-1m6HC-Cq.js +74 -0
- package/dist/methods-B-5Y4mYI.js +244 -0
- package/dist/methods-BJmwe8TB.mjs +150 -0
- package/dist/methods-BJmwe8TB.mjs.map +1 -0
- package/dist/methods-BT7d3cn_.mjs +60 -0
- package/dist/methods-BT7d3cn_.mjs.map +1 -0
- package/dist/methods-COQbKdUK.mjs +191 -0
- package/dist/methods-COQbKdUK.mjs.map +1 -0
- package/dist/methods-Cwsy79oP.mjs +58 -0
- package/dist/methods-Cwsy79oP.mjs.map +1 -0
- package/dist/methods-D22WgfeH.js +83 -0
- package/dist/methods-DywJ3kNL.js +197 -0
- package/dist/namespaces.d.mts +2 -0
- package/dist/namespaces.d.ts +2 -28
- package/dist/namespaces.js +0 -2
- package/dist/namespaces.mjs +0 -2
- package/dist/objectSpread2-CqB2zXI4.mjs +67 -0
- package/dist/objectSpread2-D6h_DL8D.js +73 -0
- package/dist/objectWithoutProperties-BW1v2UJb.mjs +25 -0
- package/dist/objectWithoutProperties-WR0nj2yB.js +31 -0
- package/dist/recurrence.d.mts +34 -0
- package/dist/recurrence.d.mts.map +1 -0
- package/dist/recurrence.d.ts +12 -6
- package/dist/recurrence.d.ts.map +1 -0
- package/dist/recurrence.js +54 -2
- package/dist/recurrence.mjs +51 -49
- package/dist/recurrence.mjs.map +1 -1
- package/dist/reports.d.mts +88 -0
- package/dist/reports.d.mts.map +1 -0
- package/dist/reports.d.ts +14 -10
- package/dist/reports.d.ts.map +1 -0
- package/dist/reports.js +15 -2
- package/dist/reports.mjs +8 -12
- package/dist/task-activity.d.mts +38 -0
- package/dist/task-activity.d.mts.map +1 -0
- package/dist/task-activity.d.ts +26 -21
- package/dist/task-activity.d.ts.map +1 -0
- package/dist/task-activity.js +35 -2
- package/dist/task-activity.mjs +35 -61
- package/dist/task-activity.mjs.map +1 -1
- package/dist/task-presets-DiNjCcoY.js +178 -0
- package/dist/task-presets-gBDbKXvf.mjs +144 -0
- package/dist/task-presets-gBDbKXvf.mjs.map +1 -0
- package/dist/task-presets.d.mts +8 -0
- package/dist/task-presets.d.ts +8 -61
- package/dist/task-presets.js +16 -2
- package/dist/task-presets.mjs +11 -10
- package/dist/tasks-C7BDH9DB.mjs +0 -0
- package/dist/tasks-CvWlwPt4.js +0 -0
- package/dist/tasks.d.mts +8 -0
- package/dist/tasks.d.ts +8 -60
- package/dist/tasks.js +16 -2
- package/dist/tasks.mjs +11 -10
- package/dist/template-tags.d.mts +3 -0
- package/dist/template-tags.d.ts +3 -0
- package/dist/template-tags.js +125 -0
- package/dist/template-tags.mjs +122 -0
- package/dist/template-tags.mjs.map +1 -0
- package/dist/templates-4-HG94_R.mjs +123 -0
- package/dist/templates-4-HG94_R.mjs.map +1 -0
- package/dist/templates-BDeiW4cQ.js +151 -0
- package/dist/templates.d.mts +5 -0
- package/dist/templates.d.ts +5 -51
- package/dist/templates.js +14 -2
- package/dist/templates.mjs +10 -9
- package/dist/transform-BwhdwBpm.js +51 -0
- package/dist/transform-qQl1fxH9.mjs +40 -0
- package/dist/transform-qQl1fxH9.mjs.map +1 -0
- package/dist/types-BMxmOgXj.d.ts +80 -0
- package/dist/types-BMxmOgXj.d.ts.map +1 -0
- package/dist/types-BzHI9Ite.d.mts +25 -0
- package/dist/types-BzHI9Ite.d.mts.map +1 -0
- package/dist/types-C1-YTWbn.d.ts +25 -0
- package/dist/types-C1-YTWbn.d.ts.map +1 -0
- package/dist/types-C45-jPGm.d.ts +104 -0
- package/dist/types-C45-jPGm.d.ts.map +1 -0
- package/dist/types-Cog_jwWQ.d.ts +30 -0
- package/dist/types-Cog_jwWQ.d.ts.map +1 -0
- package/dist/types-D3Or9gzv.d.mts +104 -0
- package/dist/types-D3Or9gzv.d.mts.map +1 -0
- package/dist/types-DHTY3l5T.d.mts +30 -0
- package/dist/types-DHTY3l5T.d.mts.map +1 -0
- package/dist/types-EvlWp0P4.d.mts +69 -0
- package/dist/types-EvlWp0P4.d.mts.map +1 -0
- package/dist/types-GqzHU1o3.d.ts +69 -0
- package/dist/types-GqzHU1o3.d.ts.map +1 -0
- package/dist/types-O3D5ZCFu.d.mts +80 -0
- package/dist/types-O3D5ZCFu.d.mts.map +1 -0
- package/package.json +75 -91
- package/dist/_commonjsHelpers-C6fGbg64.mjs +0 -7
- package/dist/_commonjsHelpers-C6fGbg64.mjs.map +0 -1
- package/dist/_commonjsHelpers-DwGv2jUC.js +0 -2
- package/dist/_commonjsHelpers-DwGv2jUC.js.map +0 -1
- package/dist/api-BSUnyE6V.js +0 -2
- package/dist/api-BSUnyE6V.js.map +0 -1
- package/dist/api-Beaugm6M.d.ts +0 -24
- package/dist/api-Cwb98wAh.mjs +0 -18
- package/dist/api-Cwb98wAh.mjs.map +0 -1
- package/dist/auth.js.map +0 -1
- package/dist/auth.mjs.map +0 -1
- package/dist/crons.js.map +0 -1
- package/dist/decorator-C2gcn2rK.js +0 -2
- package/dist/decorator-C2gcn2rK.js.map +0 -1
- package/dist/decorator-DCiVxI72.mjs +0 -24
- package/dist/decorator-DCiVxI72.mjs.map +0 -1
- package/dist/elastic.js.map +0 -1
- package/dist/fetch-DldyAFkY.js +0 -2
- package/dist/fetch-DldyAFkY.js.map +0 -1
- package/dist/fetch-FK-Cz8Ty.mjs +0 -52
- package/dist/fetch-FK-Cz8Ty.mjs.map +0 -1
- package/dist/generations.js.map +0 -1
- package/dist/generations.mjs.map +0 -1
- package/dist/health.js.map +0 -1
- package/dist/helpers/aggregations.js.map +0 -1
- package/dist/helpers/figures.js.map +0 -1
- package/dist/helpers/figures.mjs.map +0 -1
- package/dist/helpers/filters.js.map +0 -1
- package/dist/helpers/generations.js.map +0 -1
- package/dist/helpers/layouts.js.map +0 -1
- package/dist/helpers/layouts.mjs.map +0 -1
- package/dist/helpers/permissions.js.map +0 -1
- package/dist/helpers/task-presets.js.map +0 -1
- package/dist/helpers/tasks.js.map +0 -1
- package/dist/helpers/templates.js.map +0 -1
- package/dist/index-CVa-i8Jy.js +0 -7
- package/dist/index-CVa-i8Jy.js.map +0 -1
- package/dist/index-CqG3FOrT.mjs +0 -1113
- package/dist/index-CqG3FOrT.mjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/methods-B1u-wrM_.js +0 -2
- package/dist/methods-B1u-wrM_.js.map +0 -1
- package/dist/methods-BArV-Of4.js +0 -2
- package/dist/methods-BArV-Of4.js.map +0 -1
- package/dist/methods-C1KfMC_9.mjs +0 -158
- package/dist/methods-C1KfMC_9.mjs.map +0 -1
- package/dist/methods-CBNMk0T-.mjs +0 -47
- package/dist/methods-CBNMk0T-.mjs.map +0 -1
- package/dist/methods-CEARrYHM.mjs +0 -151
- package/dist/methods-CEARrYHM.mjs.map +0 -1
- package/dist/methods-CXuFuv8n.js +0 -2
- package/dist/methods-CXuFuv8n.js.map +0 -1
- package/dist/methods-DbOs99Zw.js +0 -2
- package/dist/methods-DbOs99Zw.js.map +0 -1
- package/dist/methods-DieaE_8I.js +0 -2
- package/dist/methods-DieaE_8I.js.map +0 -1
- package/dist/methods-DkGCHQdm.mjs +0 -144
- package/dist/methods-DkGCHQdm.mjs.map +0 -1
- package/dist/methods-YvctuH6v.js +0 -2
- package/dist/methods-YvctuH6v.js.map +0 -1
- package/dist/methods-byDDsdem.mjs +0 -122
- package/dist/methods-byDDsdem.mjs.map +0 -1
- package/dist/methods-k68hJDbY.mjs +0 -90
- package/dist/methods-k68hJDbY.mjs.map +0 -1
- package/dist/namespaces.js.map +0 -1
- package/dist/namespaces.mjs.map +0 -1
- package/dist/recurrence.js.map +0 -1
- package/dist/reports.js.map +0 -1
- package/dist/reports.mjs.map +0 -1
- package/dist/task-activity.js.map +0 -1
- package/dist/task-presets.js.map +0 -1
- package/dist/task-presets.mjs.map +0 -1
- package/dist/tasks-C-Si9c_j.js +0 -2
- package/dist/tasks-C-Si9c_j.js.map +0 -1
- package/dist/tasks-rnhGl39m.mjs +0 -34
- package/dist/tasks-rnhGl39m.mjs.map +0 -1
- package/dist/tasks.js.map +0 -1
- package/dist/tasks.mjs.map +0 -1
- package/dist/templates-BNAX4vB8.mjs +0 -29
- package/dist/templates-BNAX4vB8.mjs.map +0 -1
- package/dist/templates-BgRTZc5c.d.ts +0 -14
- package/dist/templates-D7C0TH1C.js +0 -2
- package/dist/templates-D7C0TH1C.js.map +0 -1
- package/dist/templates.js.map +0 -1
- package/dist/templates.mjs.map +0 -1
- package/dist/transform-DrB-Z9tA.mjs +0 -26
- package/dist/transform-DrB-Z9tA.mjs.map +0 -1
- package/dist/transform-DzLAfSJo.js +0 -2
- package/dist/transform-DzLAfSJo.js.map +0 -1
- package/dist/types-BxhkIhgG.d.ts +0 -50
- package/dist/types-CCDLyhAJ.d.ts +0 -77
- package/dist/types-Cac8HEO5.d.ts +0 -23
- package/dist/types-CgKoQCwb.d.ts +0 -67
- package/dist/types-DcoMmjs3.d.ts +0 -101
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { ofetch } from "ofetch";
|
|
2
|
+
import { io } from "socket.io-client";
|
|
3
|
+
|
|
4
|
+
//#region src/lib/fetch.ts
|
|
5
|
+
const sockets = /* @__PURE__ */ new Map();
|
|
6
|
+
/**
|
|
7
|
+
* Client for the API
|
|
8
|
+
*/
|
|
9
|
+
const client = {
|
|
10
|
+
token: "",
|
|
11
|
+
fetch: ofetch.create({}),
|
|
12
|
+
socket: (() => {})
|
|
13
|
+
};
|
|
14
|
+
const prepareSocketCreator = (baseURL, auth) => {
|
|
15
|
+
const wsURL = new URL(baseURL);
|
|
16
|
+
wsURL.protocol = wsURL.protocol.replace("http", "ws");
|
|
17
|
+
if (wsURL.href.at(-1) !== "/") wsURL.href = `${wsURL.href}/`;
|
|
18
|
+
const socketIoPath = new URL("socket.io/", wsURL).pathname;
|
|
19
|
+
return (namespaceName, rooms) => {
|
|
20
|
+
var _namespace$rooms;
|
|
21
|
+
let namespace = sockets.get(namespaceName);
|
|
22
|
+
if (!((_namespace$rooms = namespace === null || namespace === void 0 ? void 0 : namespace.rooms) !== null && _namespace$rooms !== void 0 ? _namespace$rooms : []).every((rs) => (rooms !== null && rooms !== void 0 ? rooms : []).includes(rs))) {
|
|
23
|
+
namespace === null || namespace === void 0 || namespace.con.disconnect();
|
|
24
|
+
namespace = void 0;
|
|
25
|
+
}
|
|
26
|
+
if (!namespace) {
|
|
27
|
+
const url = new URL(namespaceName, wsURL);
|
|
28
|
+
try {
|
|
29
|
+
namespace = {
|
|
30
|
+
con: io(url.href, {
|
|
31
|
+
path: socketIoPath,
|
|
32
|
+
auth: auth || void 0,
|
|
33
|
+
query: rooms ? { rooms } : void 0
|
|
34
|
+
}),
|
|
35
|
+
rooms
|
|
36
|
+
};
|
|
37
|
+
sockets.set(namespaceName, namespace);
|
|
38
|
+
} catch (error) {
|
|
39
|
+
console.error(`[ezreeport-sdk-js] Couldn't create socket for ${namespaceName}`, error);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return namespace.con;
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Prepare the client for the rest of the SDK, will update config if needed
|
|
48
|
+
*
|
|
49
|
+
* @param baseURL Base HTTP URL of the API
|
|
50
|
+
* @param auth Auth options to be authenticated
|
|
51
|
+
*/
|
|
52
|
+
function prepareClient(baseURL, auth) {
|
|
53
|
+
const headers = {};
|
|
54
|
+
if (auth === null || auth === void 0 ? void 0 : auth.token) headers.Authorization = `Bearer ${auth.token}`;
|
|
55
|
+
let href;
|
|
56
|
+
let url;
|
|
57
|
+
if (typeof baseURL === "string") {
|
|
58
|
+
href = baseURL;
|
|
59
|
+
url = new URL(baseURL);
|
|
60
|
+
} else {
|
|
61
|
+
href = baseURL.href;
|
|
62
|
+
url = baseURL;
|
|
63
|
+
}
|
|
64
|
+
client.fetch = ofetch.create({
|
|
65
|
+
baseURL: href,
|
|
66
|
+
headers
|
|
67
|
+
});
|
|
68
|
+
client.socket = prepareSocketCreator(url, auth);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
//#endregion
|
|
72
|
+
export { prepareClient as n, client as t };
|
|
73
|
+
//# sourceMappingURL=fetch-DcGZzMm-.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-DcGZzMm-.mjs","names":["headers: Record<string, string>"],"sources":["../src/lib/fetch.ts"],"sourcesContent":["import { ofetch } from 'ofetch';\nimport { io, type Socket } from 'socket.io-client';\n\nexport interface ApiAuthOptions {\n token?: string;\n // apiKey?: string;\n}\n\ntype SocketCreator = (\n namespace: string,\n rooms?: string[]\n) => Socket | undefined;\n\nconst sockets = new Map<string, { con: Socket; rooms?: string[] }>();\n\n/**\n * Client for the API\n */\nexport const client = {\n token: '',\n fetch: ofetch.create({}),\n socket: (() => {\n // Will be init later\n }) as SocketCreator,\n};\n\nconst prepareSocketCreator = (\n baseURL: URL,\n auth?: ApiAuthOptions\n): SocketCreator => {\n const wsURL = new URL(baseURL);\n wsURL.protocol = wsURL.protocol.replace('http', 'ws');\n // Ensure URL ends with / so we'll respect the baseURL when getting socket.io path\n if (wsURL.href.at(-1) !== '/') {\n wsURL.href = `${wsURL.href}/`;\n }\n // Respect baseURL for socket.io (allows running behind reverse proxy)\n const socketIoPath = new URL('socket.io/', wsURL).pathname;\n\n return (namespaceName, rooms) => {\n let namespace = sockets.get(namespaceName);\n const haveSameRooms = (namespace?.rooms ?? []).every((rs) =>\n (rooms ?? []).includes(rs)\n );\n if (!haveSameRooms) {\n namespace?.con.disconnect();\n namespace = undefined;\n }\n if (!namespace) {\n const url = new URL(namespaceName, wsURL);\n\n try {\n namespace = {\n con: io(url.href, {\n path: socketIoPath,\n auth: auth || undefined,\n query: rooms ? { rooms } : undefined,\n }),\n rooms,\n };\n sockets.set(namespaceName, namespace);\n } catch (error) {\n // oxlint-disable-next-line no-console\n console.error(\n `[ezreeport-sdk-js] Couldn't create socket for ${namespaceName}`,\n error\n );\n return;\n }\n }\n\n return namespace.con;\n };\n};\n\n/**\n * Prepare the client for the rest of the SDK, will update config if needed\n *\n * @param baseURL Base HTTP URL of the API\n * @param auth Auth options to be authenticated\n */\nexport function prepareClient(\n baseURL: string | URL,\n auth?: ApiAuthOptions\n): void {\n // Create HTTP client\n const headers: Record<string, string> = {};\n\n if (auth?.token) {\n headers.Authorization = `Bearer ${auth.token}`;\n }\n // if (auth?.apiKey) {\n // headers['X-Api-Key'] = auth.apiKey;\n // }\n\n let href;\n let url;\n if (typeof baseURL === 'string') {\n href = baseURL;\n url = new URL(baseURL);\n } else {\n href = baseURL.href;\n url = baseURL;\n }\n\n client.fetch = ofetch.create({\n baseURL: href,\n headers,\n });\n\n // Set function to handle sockets\n client.socket = prepareSocketCreator(url, auth);\n}\n"],"mappings":";;;;AAaA,MAAM,0BAAU,IAAI,KAAgD;;;;AAKpE,MAAa,SAAS;CACpB,OAAO;CACP,OAAO,OAAO,OAAO,EAAE,CAAC;CACxB,eAAe;CAGhB;AAED,MAAM,wBACJ,SACA,SACkB;CAClB,MAAM,QAAQ,IAAI,IAAI,QAAQ;AAC9B,OAAM,WAAW,MAAM,SAAS,QAAQ,QAAQ,KAAK;AAErD,KAAI,MAAM,KAAK,GAAG,GAAG,KAAK,IACxB,OAAM,OAAO,GAAG,MAAM,KAAK;CAG7B,MAAM,eAAe,IAAI,IAAI,cAAc,MAAM,CAAC;AAElD,SAAQ,eAAe,UAAU;;EAC/B,IAAI,YAAY,QAAQ,IAAI,cAAc;AAI1C,MAAI,4EAHmB,UAAW,oEAAS,EAAE,EAAE,OAAO,QACnD,6CAAS,EAAE,EAAE,SAAS,GAAG,CAC3B,EACmB;AAClB,2DAAW,IAAI,YAAY;AAC3B,eAAY;;AAEd,MAAI,CAAC,WAAW;GACd,MAAM,MAAM,IAAI,IAAI,eAAe,MAAM;AAEzC,OAAI;AACF,gBAAY;KACV,KAAK,GAAG,IAAI,MAAM;MAChB,MAAM;MACN,MAAM,QAAQ;MACd,OAAO,QAAQ,EAAE,OAAO,GAAG;MAC5B,CAAC;KACF;KACD;AACD,YAAQ,IAAI,eAAe,UAAU;YAC9B,OAAO;AAEd,YAAQ,MACN,iDAAiD,iBACjD,MACD;AACD;;;AAIJ,SAAO,UAAU;;;;;;;;;AAUrB,SAAgB,cACd,SACA,MACM;CAEN,MAAMA,UAAkC,EAAE;AAE1C,iDAAI,KAAM,MACR,SAAQ,gBAAgB,UAAU,KAAK;CAMzC,IAAI;CACJ,IAAI;AACJ,KAAI,OAAO,YAAY,UAAU;AAC/B,SAAO;AACP,QAAM,IAAI,IAAI,QAAQ;QACjB;AACL,SAAO,QAAQ;AACf,QAAM;;AAGR,QAAO,QAAQ,OAAO,OAAO;EAC3B,SAAS;EACT;EACD,CAAC;AAGF,QAAO,SAAS,qBAAqB,KAAK,KAAK"}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { t as _objectSpread2 } from "./objectSpread2-CqB2zXI4.mjs";
|
|
2
|
+
import { nanoid } from "nanoid/non-secure";
|
|
3
|
+
import objectHash from "object-hash";
|
|
4
|
+
|
|
5
|
+
//#region src/helpers/templates/editor/figures/base.ts
|
|
6
|
+
function hashFigure(figure) {
|
|
7
|
+
return objectHash({
|
|
8
|
+
type: figure.type,
|
|
9
|
+
data: "data" in figure ? figure.data : void 0,
|
|
10
|
+
filters: "filters" in figure ? figure.filters : void 0,
|
|
11
|
+
params: figure.params,
|
|
12
|
+
slots: figure.slots
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
function createFigureHelper$1(type, params = {}, slots) {
|
|
16
|
+
return {
|
|
17
|
+
id: nanoid(),
|
|
18
|
+
type,
|
|
19
|
+
params,
|
|
20
|
+
slots: new Set(slots !== null && slots !== void 0 ? slots : []),
|
|
21
|
+
hash: ""
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function createFigureHelperWithData(type, data, params = {}, slots) {
|
|
25
|
+
const figure = _objectSpread2(_objectSpread2({}, createFigureHelper$1(type, params, slots)), {}, { data });
|
|
26
|
+
figure.hash = hashFigure(figure);
|
|
27
|
+
return figure;
|
|
28
|
+
}
|
|
29
|
+
function createFigureHelperWithFilters(type, filters = [], params = {}, slots) {
|
|
30
|
+
var _filters$map;
|
|
31
|
+
const figure = _objectSpread2(_objectSpread2({}, createFigureHelper$1(type, params, slots)), {}, {
|
|
32
|
+
filters: new Map((_filters$map = filters === null || filters === void 0 ? void 0 : filters.map((filter) => [filter.name, filter])) !== null && _filters$map !== void 0 ? _filters$map : []),
|
|
33
|
+
hash: ""
|
|
34
|
+
});
|
|
35
|
+
figure.hash = hashFigure(figure);
|
|
36
|
+
return figure;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
//#endregion
|
|
40
|
+
//#region src/helpers/templates/editor/figures/md.ts
|
|
41
|
+
function createMdFigureHelper(data = "", slots) {
|
|
42
|
+
return createFigureHelperWithData("md", data, {}, slots);
|
|
43
|
+
}
|
|
44
|
+
function createMdFigureHelperFrom(figure) {
|
|
45
|
+
return createMdFigureHelper(typeof figure.data === "string" ? figure.data : "", figure.slots);
|
|
46
|
+
}
|
|
47
|
+
function mdHelperParamsToJSON(params) {
|
|
48
|
+
return params;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
//#endregion
|
|
52
|
+
//#region src/helpers/templates/editor/figures/metric.ts
|
|
53
|
+
function createMetricFigureHelper(labels = [], filters = [], order = true, slots) {
|
|
54
|
+
return createFigureHelperWithFilters("metric", filters, {
|
|
55
|
+
labels,
|
|
56
|
+
order
|
|
57
|
+
}, slots);
|
|
58
|
+
}
|
|
59
|
+
function createMetricFigureHelperFrom(figure) {
|
|
60
|
+
var _figure$params$labels, _figure$params, _figure$filters, _figure$params$order, _figure$params2;
|
|
61
|
+
return createMetricFigureHelper((_figure$params$labels = (_figure$params = figure.params) === null || _figure$params === void 0 ? void 0 : _figure$params.labels) !== null && _figure$params$labels !== void 0 ? _figure$params$labels : [], (_figure$filters = figure.filters) !== null && _figure$filters !== void 0 ? _figure$filters : [], (_figure$params$order = (_figure$params2 = figure.params) === null || _figure$params2 === void 0 ? void 0 : _figure$params2.order) !== null && _figure$params$order !== void 0 ? _figure$params$order : true, figure.slots);
|
|
62
|
+
}
|
|
63
|
+
function metricHelperParamsToJSON(params) {
|
|
64
|
+
return {
|
|
65
|
+
labels: params.labels,
|
|
66
|
+
order: params.order
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
function getMetricLabelKey(label) {
|
|
70
|
+
return label.text;
|
|
71
|
+
}
|
|
72
|
+
function getAllMetricLabelKeysOfHelper(figure) {
|
|
73
|
+
return figure.params.labels.map(getMetricLabelKey);
|
|
74
|
+
}
|
|
75
|
+
function addMetricLabelOfHelper(figure, element, index) {
|
|
76
|
+
const key = getMetricLabelKey(element);
|
|
77
|
+
if (figure.params.labels.some((lab) => getMetricLabelKey(lab) === key)) throw new Error(`Label "${element.text}" already exists`);
|
|
78
|
+
figure.params.labels.splice(index !== null && index !== void 0 ? index : figure.params.labels.length, 0, element);
|
|
79
|
+
return figure;
|
|
80
|
+
}
|
|
81
|
+
function removeMetricLabelOfHelper(figure, element) {
|
|
82
|
+
const fig = figure;
|
|
83
|
+
const key = getMetricLabelKey(element);
|
|
84
|
+
fig.params.labels = figure.params.labels.filter((lab) => getMetricLabelKey(lab) !== key);
|
|
85
|
+
return figure;
|
|
86
|
+
}
|
|
87
|
+
function updateMetricLabelOfHelper(figure, oldElement, newElement) {
|
|
88
|
+
const oldKey = getMetricLabelKey(oldElement);
|
|
89
|
+
const index = figure.params.labels.findIndex((lab) => getMetricLabelKey(lab) === oldKey);
|
|
90
|
+
if (index < 0) throw new Error(`Label "${oldElement.text}" not found`);
|
|
91
|
+
const fig = figure;
|
|
92
|
+
fig.params.labels[index] = newElement;
|
|
93
|
+
return figure;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
//#endregion
|
|
97
|
+
//#region src/helpers/templates/editor/figures/table.ts
|
|
98
|
+
function createTableFigureHelper(title = "", columns = [], total = false, filters = [], order = true, slots) {
|
|
99
|
+
return createFigureHelperWithFilters("table", filters, {
|
|
100
|
+
title,
|
|
101
|
+
columns,
|
|
102
|
+
total,
|
|
103
|
+
order
|
|
104
|
+
}, slots);
|
|
105
|
+
}
|
|
106
|
+
function createTableFigureHelperFrom(figure) {
|
|
107
|
+
var _figure$params, _figure$params$column, _figure$params2, _figure$params$total, _figure$params3, _figure$filters, _figure$params$order, _figure$params4;
|
|
108
|
+
return createTableFigureHelper((_figure$params = figure.params) === null || _figure$params === void 0 ? void 0 : _figure$params.title, (_figure$params$column = (_figure$params2 = figure.params) === null || _figure$params2 === void 0 ? void 0 : _figure$params2.columns) !== null && _figure$params$column !== void 0 ? _figure$params$column : [], (_figure$params$total = (_figure$params3 = figure.params) === null || _figure$params3 === void 0 ? void 0 : _figure$params3.total) !== null && _figure$params$total !== void 0 ? _figure$params$total : false, (_figure$filters = figure.filters) !== null && _figure$filters !== void 0 ? _figure$filters : [], (_figure$params$order = (_figure$params4 = figure.params) === null || _figure$params4 === void 0 ? void 0 : _figure$params4.order) !== null && _figure$params$order !== void 0 ? _figure$params$order : true, figure.slots);
|
|
109
|
+
}
|
|
110
|
+
function tableHelperParamsToJSON(params) {
|
|
111
|
+
return {
|
|
112
|
+
title: params.title,
|
|
113
|
+
columns: params.columns,
|
|
114
|
+
total: params.total,
|
|
115
|
+
order: params.order
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
function getTableColumnKey(column) {
|
|
119
|
+
return column.header;
|
|
120
|
+
}
|
|
121
|
+
function getAllTableColumnKeysOfHelper(figure) {
|
|
122
|
+
return figure.params.columns.map(getTableColumnKey);
|
|
123
|
+
}
|
|
124
|
+
function addTableColumnOfHelper(figure, element, index) {
|
|
125
|
+
const key = getTableColumnKey(element);
|
|
126
|
+
if (figure.params.columns.some((col) => getTableColumnKey(col) === key)) throw new Error(`Column "${element.header}" already exists`);
|
|
127
|
+
figure.params.columns.splice(index !== null && index !== void 0 ? index : figure.params.columns.length, 0, element);
|
|
128
|
+
return figure;
|
|
129
|
+
}
|
|
130
|
+
function removeTableColumnOfHelper(figure, element) {
|
|
131
|
+
const fig = figure;
|
|
132
|
+
const key = getTableColumnKey(element);
|
|
133
|
+
fig.params.columns = figure.params.columns.filter((col) => getTableColumnKey(col) !== key);
|
|
134
|
+
return figure;
|
|
135
|
+
}
|
|
136
|
+
function updateTableColumnOfHelper(figure, oldElement, newElement) {
|
|
137
|
+
const oldKey = getTableColumnKey(oldElement);
|
|
138
|
+
const index = figure.params.columns.findIndex((col) => getTableColumnKey(col) === oldKey);
|
|
139
|
+
if (index < 0) throw new Error(`Column "${oldKey}" not found`);
|
|
140
|
+
const fig = figure;
|
|
141
|
+
fig.params.columns[index] = newElement;
|
|
142
|
+
return figure;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
//#endregion
|
|
146
|
+
//#region src/helpers/templates/editor/figures/vega.ts
|
|
147
|
+
function createVegaFigureHelper(type, title = "", label = {}, value = {}, color, dataLabel, invertAxis = false, filters = [], order = true, slots) {
|
|
148
|
+
return createFigureHelperWithFilters(type, filters, {
|
|
149
|
+
title,
|
|
150
|
+
invertAxis,
|
|
151
|
+
label,
|
|
152
|
+
value,
|
|
153
|
+
color,
|
|
154
|
+
dataLabel,
|
|
155
|
+
order
|
|
156
|
+
}, slots);
|
|
157
|
+
}
|
|
158
|
+
function createVegaFigureHelperFrom(figure) {
|
|
159
|
+
var _figure$params$title, _figure$params, _figure$params$label, _figure$params2, _figure$params$value, _figure$params3, _figure$params4, _figure$params5, _figure$params$invert, _figure$params6, _figure$filters, _figure$params$order, _figure$params7;
|
|
160
|
+
return createVegaFigureHelper(figure.type, (_figure$params$title = (_figure$params = figure.params) === null || _figure$params === void 0 ? void 0 : _figure$params.title) !== null && _figure$params$title !== void 0 ? _figure$params$title : "", (_figure$params$label = (_figure$params2 = figure.params) === null || _figure$params2 === void 0 ? void 0 : _figure$params2.label) !== null && _figure$params$label !== void 0 ? _figure$params$label : {}, (_figure$params$value = (_figure$params3 = figure.params) === null || _figure$params3 === void 0 ? void 0 : _figure$params3.value) !== null && _figure$params$value !== void 0 ? _figure$params$value : {}, (_figure$params4 = figure.params) === null || _figure$params4 === void 0 ? void 0 : _figure$params4.color, (_figure$params5 = figure.params) === null || _figure$params5 === void 0 ? void 0 : _figure$params5.dataLabel, (_figure$params$invert = (_figure$params6 = figure.params) === null || _figure$params6 === void 0 ? void 0 : _figure$params6.invertAxis) !== null && _figure$params$invert !== void 0 ? _figure$params$invert : false, (_figure$filters = figure.filters) !== null && _figure$filters !== void 0 ? _figure$filters : [], (_figure$params$order = (_figure$params7 = figure.params) === null || _figure$params7 === void 0 ? void 0 : _figure$params7.order) !== null && _figure$params$order !== void 0 ? _figure$params$order : true, figure.slots);
|
|
161
|
+
}
|
|
162
|
+
function vegaHelperParamsToJSON(params) {
|
|
163
|
+
return {
|
|
164
|
+
title: params.title,
|
|
165
|
+
invertAxis: params.invertAxis,
|
|
166
|
+
label: params.label,
|
|
167
|
+
value: params.value,
|
|
168
|
+
color: params.color,
|
|
169
|
+
dataLabel: params.dataLabel,
|
|
170
|
+
order: params.order
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
//#endregion
|
|
175
|
+
//#region src/helpers/templates/editor/figures/index.ts
|
|
176
|
+
/**
|
|
177
|
+
* Create a figure helper
|
|
178
|
+
*
|
|
179
|
+
* @param figure The figure object
|
|
180
|
+
*
|
|
181
|
+
* @returns The figure helper
|
|
182
|
+
*/
|
|
183
|
+
function createFigureHelper(type, filters, order, slots) {
|
|
184
|
+
switch (type) {
|
|
185
|
+
case "md": return createMdFigureHelper(void 0, slots);
|
|
186
|
+
case "metric": return createMetricFigureHelper(void 0, filters, order, slots);
|
|
187
|
+
case "table": return createTableFigureHelper(void 0, void 0, void 0, filters, order, slots);
|
|
188
|
+
default: return createVegaFigureHelper(type, void 0, void 0, void 0, void 0, void 0, void 0, filters, order, slots);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Create a figure helper from a figure object
|
|
193
|
+
*
|
|
194
|
+
* @param figure The figure object
|
|
195
|
+
*
|
|
196
|
+
* @returns The figure helper
|
|
197
|
+
*/
|
|
198
|
+
function createFigureHelperFrom(figure) {
|
|
199
|
+
switch (figure.type) {
|
|
200
|
+
case "md": return createMdFigureHelperFrom(figure);
|
|
201
|
+
case "metric": return createMetricFigureHelperFrom(figure);
|
|
202
|
+
case "table": return createTableFigureHelperFrom(figure);
|
|
203
|
+
default: return createVegaFigureHelperFrom(figure);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Create a figure object from a figure helper
|
|
208
|
+
*
|
|
209
|
+
* @param figure The figure helper
|
|
210
|
+
*
|
|
211
|
+
* @returns The figure object
|
|
212
|
+
*/
|
|
213
|
+
function figureHelperToJSON(figure) {
|
|
214
|
+
let params = {};
|
|
215
|
+
switch (figure.type) {
|
|
216
|
+
case "md":
|
|
217
|
+
params = mdHelperParamsToJSON(figure.params);
|
|
218
|
+
break;
|
|
219
|
+
case "metric":
|
|
220
|
+
params = metricHelperParamsToJSON(figure.params);
|
|
221
|
+
break;
|
|
222
|
+
case "table":
|
|
223
|
+
params = tableHelperParamsToJSON(figure.params);
|
|
224
|
+
break;
|
|
225
|
+
default:
|
|
226
|
+
params = vegaHelperParamsToJSON(figure.params);
|
|
227
|
+
break;
|
|
228
|
+
}
|
|
229
|
+
return {
|
|
230
|
+
type: figure.type,
|
|
231
|
+
data: "data" in figure ? figure.data : void 0,
|
|
232
|
+
filters: "filters" in figure ? Array.from(figure.filters.values()) : void 0,
|
|
233
|
+
params,
|
|
234
|
+
slots: Array.from(figure.slots)
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
function isFigureHelperMarkdown(figure) {
|
|
238
|
+
return figure.type === "md";
|
|
239
|
+
}
|
|
240
|
+
function isFigureHelperMetric(figure) {
|
|
241
|
+
return figure.type === "metric";
|
|
242
|
+
}
|
|
243
|
+
function isFigureHelperTable(figure) {
|
|
244
|
+
return figure.type === "table";
|
|
245
|
+
}
|
|
246
|
+
function isFigureHelperVega(figure) {
|
|
247
|
+
return !isFigureHelperMarkdown(figure) && !isFigureHelperMetric(figure) && !isFigureHelperTable(figure);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
//#endregion
|
|
251
|
+
export { getMetricLabelKey as C, createMdFigureHelper as D, updateMetricLabelOfHelper as E, createMdFigureHelperFrom as O, getAllMetricLabelKeysOfHelper as S, removeMetricLabelOfHelper as T, tableHelperParamsToJSON as _, isFigureHelperMetric as a, createMetricFigureHelper as b, createVegaFigureHelper as c, addTableColumnOfHelper as d, createTableFigureHelper as f, removeTableColumnOfHelper as g, getTableColumnKey as h, isFigureHelperMarkdown as i, mdHelperParamsToJSON as k, createVegaFigureHelperFrom as l, getAllTableColumnKeysOfHelper as m, createFigureHelperFrom as n, isFigureHelperTable as o, createTableFigureHelperFrom as p, figureHelperToJSON as r, isFigureHelperVega as s, createFigureHelper as t, vegaHelperParamsToJSON as u, updateTableColumnOfHelper as v, metricHelperParamsToJSON as w, createMetricFigureHelperFrom as x, addMetricLabelOfHelper as y };
|
|
252
|
+
//# sourceMappingURL=figures-Bdr-CTN1.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"figures-Bdr-CTN1.mjs","names":["createFigureHelper","params: IFigure['params']"],"sources":["../src/helpers/templates/editor/figures/base.ts","../src/helpers/templates/editor/figures/md.ts","../src/helpers/templates/editor/figures/metric.ts","../src/helpers/templates/editor/figures/table.ts","../src/helpers/templates/editor/figures/vega.ts","../src/helpers/templates/editor/figures/index.ts"],"sourcesContent":["import { nanoid } from 'nanoid/non-secure';\nimport objectHash from 'object-hash';\n\nimport type { TemplateFilter, TemplateBodyFigure } from '~/modules/templates';\n\ninterface FigureHelper {\n readonly id: string;\n readonly type: string;\n // oxlint-disable-next-line no-explicit-any\n params: Record<string, any>;\n slots: Set<number>;\n readonly hash: string;\n}\n\nfunction hashFigure(figure: FigureHelper | TemplateBodyFigure): string {\n return objectHash({\n type: figure.type,\n data: 'data' in figure ? figure.data : undefined,\n filters: 'filters' in figure ? figure.filters : undefined,\n params: figure.params,\n slots: figure.slots,\n });\n}\n\nfunction createFigureHelper<Fig extends FigureHelper = FigureHelper>(\n type: string,\n params: Record<string, unknown> = {},\n slots?: number[]\n): Fig {\n return {\n id: nanoid(),\n type,\n params,\n slots: new Set(slots ?? []),\n hash: '',\n } satisfies FigureHelper as Fig;\n}\n\nexport interface FigureHelperWithData extends FigureHelper {\n data: string | unknown[];\n}\n\nexport function createFigureHelperWithData<\n Fig extends FigureHelperWithData = FigureHelperWithData,\n>(\n type: string,\n data: string | unknown[],\n params: Record<string, unknown> = {},\n slots?: number[]\n): Fig {\n const figure = {\n ...createFigureHelper(type, params, slots),\n data,\n } satisfies FigureHelperWithData;\n\n figure.hash = hashFigure(figure);\n return figure as Fig;\n}\n\nexport interface FigureHelperWithFilters extends FigureHelper {\n filters: Map<string, TemplateFilter>;\n}\n\nexport function createFigureHelperWithFilters<\n Fig extends FigureHelperWithFilters = FigureHelperWithFilters,\n>(\n type: string,\n filters: TemplateFilter[] = [],\n params: Record<string, unknown> = {},\n slots?: number[]\n): Fig {\n const figure = {\n ...createFigureHelper(type, params, slots),\n filters: new Map(filters?.map((filter) => [filter.name, filter]) ?? []),\n hash: '',\n } satisfies FigureHelperWithFilters;\n\n figure.hash = hashFigure(figure);\n return figure as Fig;\n}\n","import type { TemplateBodyFigure } from '~/modules/templates';\nimport { type FigureHelperWithData, createFigureHelperWithData } from './base';\n\nexport interface MdFigure extends FigureHelperWithData {\n readonly type: 'md';\n data: string;\n readonly params: Record<string, never>;\n}\n\nexport function createMdFigureHelper(data = '', slots?: number[]): MdFigure {\n return createFigureHelperWithData('md', data, {}, slots);\n}\n\nexport function createMdFigureHelperFrom(figure: TemplateBodyFigure): MdFigure {\n const data = typeof figure.data === 'string' ? figure.data : '';\n return createMdFigureHelper(data, figure.slots);\n}\n\nexport function mdHelperParamsToJSON(\n params: MdFigure['params']\n): TemplateBodyFigure['params'] {\n return params;\n}\n","import type { TemplateFilter, TemplateBodyFigure } from '~/modules/templates';\nimport type { FigureAggregation } from '../aggregations';\nimport type { FigureOrder } from './utils';\nimport {\n type FigureHelperWithFilters,\n createFigureHelperWithFilters,\n} from './base';\n\n/**\n * Type for labels used in metrics\n */\nexport interface MetricLabel {\n /**\n * The text of the label (rendered under the value)\n */\n text: string;\n /**\n * The aggregation used to fetch data,\n * if not set, the count of documents will be used\n */\n aggregation?: FigureAggregation;\n /**\n * Format options used to format the data\n */\n format?: {\n type: 'date' | 'number';\n params?: string[];\n };\n}\n\nexport interface MetricFigureHelper extends FigureHelperWithFilters {\n readonly type: 'metric';\n params: {\n labels: MetricLabel[];\n order: FigureOrder;\n };\n}\n\nexport function createMetricFigureHelper(\n labels: MetricLabel[] = [],\n filters: TemplateFilter[] = [],\n order: FigureOrder = true,\n slots?: number[]\n): MetricFigureHelper {\n return createFigureHelperWithFilters(\n 'metric',\n filters,\n {\n labels,\n order,\n },\n slots\n );\n}\n\nexport function createMetricFigureHelperFrom(\n figure: TemplateBodyFigure\n): MetricFigureHelper {\n return createMetricFigureHelper(\n figure.params?.labels ?? [],\n figure.filters ?? [],\n figure.params?.order ?? true,\n figure.slots\n );\n}\n\nexport function metricHelperParamsToJSON(\n params: MetricFigureHelper['params']\n): TemplateBodyFigure['params'] {\n return {\n labels: params.labels,\n order: params.order,\n };\n}\n\nexport function getMetricLabelKey(label: MetricLabel): string {\n return label.text;\n}\n\nexport function getAllMetricLabelKeysOfHelper(\n figure: MetricFigureHelper\n): string[] {\n return figure.params.labels.map(getMetricLabelKey);\n}\n\nexport function addMetricLabelOfHelper(\n figure: MetricFigureHelper,\n element: MetricLabel,\n index?: number\n): MetricFigureHelper {\n const key = getMetricLabelKey(element);\n if (figure.params.labels.some((lab) => getMetricLabelKey(lab) === key)) {\n throw new Error(`Label \"${element.text}\" already exists`);\n }\n figure.params.labels.splice(index ?? figure.params.labels.length, 0, element);\n return figure;\n}\n\nexport function removeMetricLabelOfHelper(\n figure: MetricFigureHelper,\n element: MetricLabel\n): MetricFigureHelper {\n const fig = figure;\n const key = getMetricLabelKey(element);\n fig.params.labels = figure.params.labels.filter(\n (lab) => getMetricLabelKey(lab) !== key\n );\n return figure;\n}\n\nexport function updateMetricLabelOfHelper(\n figure: MetricFigureHelper,\n oldElement: MetricLabel,\n newElement: MetricLabel\n): MetricFigureHelper {\n const oldKey = getMetricLabelKey(oldElement);\n const index = figure.params.labels.findIndex(\n (lab) => getMetricLabelKey(lab) === oldKey\n );\n if (index < 0) {\n throw new Error(`Label \"${oldElement.text}\" not found`);\n }\n const fig = figure;\n fig.params.labels[index] = newElement;\n return figure;\n}\n","import type { TemplateFilter, TemplateBodyFigure } from '~/modules/templates';\nimport type { FigureAggregation } from '../aggregations';\nimport type { FigureOrder } from './utils';\nimport {\n type FigureHelperWithFilters,\n createFigureHelperWithFilters,\n} from './base';\n\n/**\n * Type for columns used in tables\n */\nexport interface TableColumn {\n /**\n * The name of the column\n */\n header: string;\n /**\n * Whether the column is a metric,\n * can only be used once in a table\n */\n metric?: boolean;\n /**\n * The aggregation used to fetch data,\n * if not set, the \"value\" of the previous column will be used\n */\n aggregation?: FigureAggregation;\n /**\n * The style of the cells in this column\n */\n styles?: {\n fontStyle?: 'normal' | 'bold' | 'italic' | 'bolditalic';\n fillColor?: string | [number, number, number];\n textColor?: string | [number, number, number];\n headerColor?: string | [number, number, number];\n halign?: 'left' | 'center' | 'right' | 'justify';\n valign?: 'top' | 'middle' | 'bottom';\n fontSize?: number;\n lineColor?: string | [number, number, number];\n };\n}\n\n/**\n * Type for tables\n */\nexport interface TableFigureHelper extends FigureHelperWithFilters {\n readonly type: 'table';\n params: {\n title: string;\n columns: TableColumn[];\n total?: boolean;\n order?: FigureOrder;\n };\n}\n\nexport function createTableFigureHelper(\n title: string = '',\n columns: TableColumn[] = [],\n total: boolean = false,\n filters: TemplateFilter[] = [],\n order: FigureOrder = true,\n slots?: number[]\n): TableFigureHelper {\n return createFigureHelperWithFilters(\n 'table',\n filters,\n {\n title,\n columns,\n total,\n order,\n },\n slots\n );\n}\n\nexport function createTableFigureHelperFrom(\n figure: TemplateBodyFigure\n): TableFigureHelper {\n return createTableFigureHelper(\n figure.params?.title,\n figure.params?.columns ?? [],\n figure.params?.total ?? false,\n figure.filters ?? [],\n figure.params?.order ?? true,\n figure.slots\n );\n}\n\nexport function tableHelperParamsToJSON(\n params: TableFigureHelper['params']\n): TemplateBodyFigure['params'] {\n return {\n title: params.title,\n columns: params.columns,\n total: params.total,\n order: params.order,\n };\n}\n\nexport function getTableColumnKey(column: TableColumn): string {\n return column.header;\n}\n\nexport function getAllTableColumnKeysOfHelper(\n figure: TableFigureHelper\n): string[] {\n return figure.params.columns.map(getTableColumnKey);\n}\n\nexport function addTableColumnOfHelper(\n figure: TableFigureHelper,\n element: TableColumn,\n index?: number\n): TableFigureHelper {\n const key = getTableColumnKey(element);\n if (figure.params.columns.some((col) => getTableColumnKey(col) === key)) {\n throw new Error(`Column \"${element.header}\" already exists`);\n }\n figure.params.columns.splice(\n index ?? figure.params.columns.length,\n 0,\n element\n );\n return figure;\n}\n\nexport function removeTableColumnOfHelper(\n figure: TableFigureHelper,\n element: TableColumn\n): TableFigureHelper {\n const fig = figure;\n const key = getTableColumnKey(element);\n fig.params.columns = figure.params.columns.filter(\n (col) => getTableColumnKey(col) !== key\n );\n return figure;\n}\n\nexport function updateTableColumnOfHelper(\n figure: TableFigureHelper,\n oldElement: TableColumn,\n newElement: TableColumn\n): TableFigureHelper {\n const oldKey = getTableColumnKey(oldElement);\n const index = figure.params.columns.findIndex(\n (col) => getTableColumnKey(col) === oldKey\n );\n if (index < 0) {\n throw new Error(`Column \"${oldKey}\" not found`);\n }\n const fig = figure;\n fig.params.columns[index] = newElement;\n return figure;\n}\n","import type { TemplateFilter, TemplateBodyFigure } from '~/modules/templates';\nimport type { FigureAggregation } from '../aggregations';\nimport type { FigureOrder } from './utils';\nimport {\n type FigureHelperWithFilters,\n createFigureHelperWithFilters,\n} from './base';\n\n/**\n * Type for layers used in vega\n */\nexport interface VegaLayer extends Record<string, unknown> {\n /**\n * The aggregation used to fetch data,\n * if not set, the \"value\" of the label (or color if present) layer will be used\n */\n aggregation?: FigureAggregation;\n /**\n * The title of the axis\n */\n title?: string;\n /**\n * The legend, if `null` no legend will be shown\n */\n legend?: null | { title?: string };\n}\n\n/**\n * Type for data label options\n */\nexport interface VegaDataLabelOptions {\n format: 'percent' | 'numeric';\n position?: 'out' | 'in';\n showLabel?: boolean;\n minValue?: number;\n}\n\nexport interface VegaFigureHelper extends FigureHelperWithFilters {\n params: {\n /**\n * The title of the figure\n */\n title: string;\n /**\n * Whether the axis should be inverted\n */\n invertAxis?: boolean;\n /**\n * The label layer of the figure, often used for the x axis\n */\n label: VegaLayer;\n /**\n * The value layer of the figure, often used for the y axis\n */\n value: VegaLayer;\n /**\n * The color layer of the figure, often used for splitting the value\n */\n color?: VegaLayer;\n /**\n * The data label options\n *\n * Data labels are displayed on top of the value layer, and show details about values\n */\n dataLabel?: VegaDataLabelOptions;\n /**\n * The order of the data in the chart\n */\n order?: FigureOrder;\n };\n}\n\nexport function createVegaFigureHelper(\n type: string,\n title: string = '',\n label: VegaLayer = {},\n value: VegaLayer = {},\n color?: VegaLayer,\n dataLabel?: VegaDataLabelOptions,\n invertAxis: boolean = false,\n filters: TemplateFilter[] = [],\n order: FigureOrder = true,\n slots?: number[]\n): VegaFigureHelper {\n return createFigureHelperWithFilters(\n type,\n filters,\n {\n title,\n invertAxis,\n label,\n value,\n color,\n dataLabel,\n order,\n },\n slots\n );\n}\n\nexport function createVegaFigureHelperFrom(\n figure: TemplateBodyFigure\n): VegaFigureHelper {\n return createVegaFigureHelper(\n figure.type,\n figure.params?.title ?? '',\n figure.params?.label ?? {},\n figure.params?.value ?? {},\n figure.params?.color,\n figure.params?.dataLabel,\n figure.params?.invertAxis ?? false,\n figure.filters ?? [],\n figure.params?.order ?? true,\n figure.slots\n );\n}\n\nexport function vegaHelperParamsToJSON(\n params: VegaFigureHelper['params']\n): TemplateBodyFigure['params'] {\n return {\n title: params.title,\n invertAxis: params.invertAxis,\n label: params.label,\n value: params.value,\n color: params.color,\n dataLabel: params.dataLabel,\n order: params.order,\n };\n}\n","import type {\n TemplateFilter,\n TemplateBodyFigure as IFigure,\n} from '~/modules/templates';\nimport type { FigureOrder } from './utils';\n\nimport {\n type MdFigure,\n createMdFigureHelper,\n createMdFigureHelperFrom,\n mdHelperParamsToJSON,\n} from './md';\nimport {\n type MetricFigureHelper,\n createMetricFigureHelper,\n createMetricFigureHelperFrom,\n metricHelperParamsToJSON,\n} from './metric';\nimport {\n type TableFigureHelper,\n createTableFigureHelper,\n createTableFigureHelperFrom,\n tableHelperParamsToJSON,\n} from './table';\nimport {\n type VegaFigureHelper,\n createVegaFigureHelper,\n createVegaFigureHelperFrom,\n vegaHelperParamsToJSON,\n} from './vega';\n\nexport type AnyFigureHelper =\n | MdFigure\n | MetricFigureHelper\n | TableFigureHelper\n | VegaFigureHelper;\n\nexport type FigureHelperSet = Map<string, AnyFigureHelper>;\n\n/**\n * Create a figure helper\n *\n * @param figure The figure object\n *\n * @returns The figure helper\n */\nexport function createFigureHelper(\n type: AnyFigureHelper['type'],\n filters?: TemplateFilter[],\n order?: FigureOrder,\n slots?: number[]\n): AnyFigureHelper {\n switch (type) {\n case 'md':\n return createMdFigureHelper(undefined, slots);\n\n case 'metric':\n return createMetricFigureHelper(undefined, filters, order, slots);\n\n case 'table':\n return createTableFigureHelper(\n undefined,\n undefined,\n undefined,\n filters,\n order,\n slots\n );\n\n default:\n return createVegaFigureHelper(\n type,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n filters,\n order,\n slots\n );\n }\n}\n\n/**\n * Create a figure helper from a figure object\n *\n * @param figure The figure object\n *\n * @returns The figure helper\n */\nexport function createFigureHelperFrom(figure: IFigure): AnyFigureHelper {\n switch (figure.type) {\n case 'md':\n return createMdFigureHelperFrom(figure);\n\n case 'metric':\n return createMetricFigureHelperFrom(figure);\n\n case 'table':\n return createTableFigureHelperFrom(figure);\n\n default:\n return createVegaFigureHelperFrom(figure);\n }\n}\n\n/**\n * Create a figure object from a figure helper\n *\n * @param figure The figure helper\n *\n * @returns The figure object\n */\nexport function figureHelperToJSON(figure: AnyFigureHelper): IFigure {\n let params: IFigure['params'] = {};\n switch (figure.type) {\n case 'md':\n params = mdHelperParamsToJSON((figure as MdFigure).params);\n break;\n\n case 'metric':\n params = metricHelperParamsToJSON((figure as MetricFigureHelper).params);\n break;\n\n case 'table':\n params = tableHelperParamsToJSON((figure as TableFigureHelper).params);\n break;\n\n default:\n params = vegaHelperParamsToJSON((figure as VegaFigureHelper).params);\n break;\n }\n\n return {\n type: figure.type,\n data: 'data' in figure ? figure.data : undefined,\n filters:\n 'filters' in figure ? Array.from(figure.filters.values()) : undefined,\n params,\n slots: Array.from(figure.slots),\n };\n}\n\nexport function isFigureHelperMarkdown(\n figure: AnyFigureHelper\n): figure is MdFigure {\n return figure.type === 'md';\n}\nexport function isFigureHelperMetric(\n figure: AnyFigureHelper\n): figure is MetricFigureHelper {\n return figure.type === 'metric';\n}\nexport function isFigureHelperTable(\n figure: AnyFigureHelper\n): figure is TableFigureHelper {\n return figure.type === 'table';\n}\nexport function isFigureHelperVega(\n figure: AnyFigureHelper\n): figure is VegaFigureHelper {\n return (\n !isFigureHelperMarkdown(figure) &&\n !isFigureHelperMetric(figure) &&\n !isFigureHelperTable(figure)\n );\n}\n\nexport * from './utils';\nexport * from './md';\nexport * from './metric';\nexport * from './table';\nexport * from './vega';\n"],"mappings":"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"}
|