@datapos/datapos-shared 0.3.197 → 0.3.199

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.
@@ -1,64 +1,64 @@
1
- const U = ["createObject", "dropObject", "removeRecords", "upsertRecords"], B = ["findObject", "getRecord", "listNodes", "previewObject", "retrieveRecords"];
2
- function P() {
1
+ const V = ["createObject", "dropObject", "removeRecords", "upsertRecords"], X = ["findObject", "getRecord", "listNodes", "previewObject", "retrieveRecords"];
2
+ function G() {
3
3
  function e(a, r, t) {
4
4
  t.textContent = "Cytoscape.js diagram goes here...";
5
5
  }
6
6
  return { render: e };
7
7
  }
8
- function H() {
8
+ function z() {
9
9
  function e(a, r, t) {
10
10
  t.textContent = "values table goes here...";
11
11
  }
12
12
  return { render: e };
13
13
  }
14
- const S = "https://cdn.jsdelivr.net/npm/highcharts@11.4.3/es-modules/masters/", I = "highcharts";
15
- let b, D = !1;
16
- function W() {
14
+ const _ = "https://cdn.jsdelivr.net/npm/highcharts@11.4.3/es-modules/masters/", x = "highcharts";
15
+ let b, w = !1;
16
+ function K() {
17
17
  async function e(n, s, m, h) {
18
18
  await t();
19
- const c = [];
20
- for (const l of s.data.measures)
21
- c.push({ type: n.options.highchartsType, name: l.name, data: l.data });
22
- const p = {
19
+ const l = [];
20
+ for (const c of s.data.measures)
21
+ l.push({ type: n.options.highchartsType, name: c.name, data: c.data });
22
+ const g = {
23
23
  chart: { type: n.options.highchartsType },
24
24
  plotOptions: { series: { borderColor: "#333" } },
25
- series: c,
25
+ series: l,
26
26
  title: { text: s.title.text },
27
27
  xAxis: { categories: s.data.categoryLabels },
28
28
  yAxis: { title: { text: s.data.name } }
29
- }, u = b.chart(m, p, h);
30
- return { chart: u, resize: () => u.reflow(), vendorId: I };
29
+ }, u = b.chart(m, g, h);
30
+ return { chart: u, resize: () => u.reflow(), vendorId: x };
31
31
  }
32
32
  async function a(n, s, m, h) {
33
33
  await Promise.all([t(), o()]);
34
- const c = [];
35
- for (const l of s.data.measures)
36
- c.push({ type: n.options.highchartsType, name: l.name, data: l.data });
37
- const p = {
34
+ const l = [];
35
+ for (const c of s.data.measures)
36
+ l.push({ type: n.options.highchartsType, name: c.name, data: c.data });
37
+ const g = {
38
38
  chart: { polar: !0 },
39
39
  plotOptions: { series: { borderColor: "#333" } },
40
- series: c,
40
+ series: l,
41
41
  title: { text: s.title.text },
42
42
  xAxis: { categories: s.data.categoryLabels },
43
43
  yAxis: { title: { text: s.data.name } }
44
- }, u = b.chart(m, p, h);
45
- return { chart: u, resize: () => u.reflow(), vendorId: I };
44
+ }, u = b.chart(m, g, h);
45
+ return { chart: u, resize: () => u.reflow(), vendorId: x };
46
46
  }
47
47
  async function r(n, s, m, h) {
48
48
  await Promise.all([t(), o()]);
49
- const c = [], p = [];
49
+ const l = [], g = [];
50
50
  for (let f = 0; f < s.data.measures[0].data.length; f++)
51
- p.push([s.data.measures[0].data[f][0], s.data.measures[1].data[f][0]]);
52
- c.push({ type: n.options.highchartsType, name: "Unknown", data: p });
51
+ g.push([s.data.measures[0].data[f][0], s.data.measures[1].data[f][0]]);
52
+ l.push({ type: n.options.highchartsType, name: "Unknown", data: g });
53
53
  const u = {
54
54
  chart: { type: n.options.highchartsType, inverted: n.options.inverted },
55
55
  plotOptions: { series: { borderColor: "#333" } },
56
- series: c,
56
+ series: l,
57
57
  title: { text: s.title.text },
58
58
  xAxis: { categories: s.data.categoryLabels },
59
59
  yAxis: { title: { text: s.data.name } }
60
- }, l = b.chart(m, u, h);
61
- return { chart: l, resize: () => l.reflow(), vendorId: I };
60
+ }, c = b.chart(m, u, h);
61
+ return { chart: c, resize: () => c.reflow(), vendorId: x };
62
62
  }
63
63
  async function t() {
64
64
  if (b) return;
@@ -72,41 +72,51 @@ function W() {
72
72
  );
73
73
  }
74
74
  async function o() {
75
- if (D) return;
76
- await import(`${S}highcharts-more.src.js`), D = !0;
75
+ if (w) return;
76
+ await import(`${_}highcharts-more.src.js`), w = !0;
77
77
  }
78
78
  return { renderCartesianChart: e, renderPolarChart: a, renderRangeChart: r };
79
79
  }
80
- const v = 4, O = `https://cdn.jsdelivr.net/npm/micromark@${v}/+esm`, A = 3, _ = `https://cdn.jsdelivr.net/npm/micromark-extension-gfm@${A}/+esm`, C = 1, L = `https://cdn.jsdelivr.net/npm/prismjs@${C}/+esm`;
81
- let x, T;
82
- function V() {
80
+ const A = 4, C = `https://cdn.jsdelivr.net/npm/micromark@${A}/+esm`, L = 3, $ = `https://cdn.jsdelivr.net/npm/micromark-extension-gfm@${L}/+esm`, F = 3, M = `https://cdn.jsdelivr.net/npm/micromark-extension-math@${F}/+esm`, k = 1, j = `https://cdn.jsdelivr.net/npm/prismjs@${k}/+esm`;
81
+ let I, T, D, O, v;
82
+ function J() {
83
83
  async function e() {
84
- return await r(), { gfmExtension: T, micromark: x };
84
+ return await r(), {
85
+ gfmExtension: T,
86
+ gfmHtmlExtension: D,
87
+ mathExtension: O,
88
+ mathHtmlExtension: v,
89
+ micromark: I
90
+ };
85
91
  }
86
92
  async function a() {
87
93
  await r();
88
94
  }
89
95
  async function r() {
90
- if (x && T) return;
96
+ if (I && T) return;
91
97
  const t = await Promise.all([
92
98
  import(
93
99
  /* @vite-ignore */
94
- O
100
+ C
95
101
  ),
96
102
  import(
97
103
  /* @vite-ignore */
98
- _
104
+ $
99
105
  ),
100
106
  import(
101
107
  /* @vite-ignore */
102
- L
108
+ M
109
+ ),
110
+ import(
111
+ /* @vite-ignore */
112
+ j
103
113
  )
104
114
  ]);
105
- x = t[0].micromark, T = t[1].gfm;
115
+ console.log(t), console.log(t[1]), I = t[0].micromark, T = t[1].gfm, D = t[1].gfmHtml, O = t[2].math, v = t[2].mathHtml;
106
116
  }
107
117
  return { getStuff: e, render: a };
108
118
  }
109
- const X = 0, G = (e) => e, z = () => Date.now(), K = {
119
+ const q = 0, Q = (e) => e, Y = () => Date.now(), Z = {
110
120
  cartesian_areaLine: { categoryId: "cartesian", typeId: "areaLine", label: { "en-gb": "Area Line" }, options: { highchartsType: "area" } },
111
121
  cartesian_areaSpline: { categoryId: "cartesian", typeId: "areaSpline", label: { "en-gb": "Area Spline" }, options: { highchartsType: "area" } },
112
122
  cartesian_bar: { categoryId: "cartesian", typeId: "bar", label: { "en-gb": "Bar" }, options: { highchartsType: "bar" } },
@@ -125,63 +135,63 @@ const X = 0, G = (e) => e, z = () => Date.now(), K = {
125
135
  streamgraph: { categoryId: "streamgraph", label: { "en-gb": "Streamgraph" }, options: {} },
126
136
  values: { categoryId: "values", label: { "en-gb": "Values" }, options: {} }
127
137
  };
128
- class w extends Error {
138
+ class N extends Error {
129
139
  locator;
130
140
  constructor(a, r, t) {
131
141
  super(a, t), this.name = "DataPosError", this.locator = r, Error.captureStackTrace?.(this, new.target);
132
142
  }
133
143
  }
134
- class g extends w {
144
+ class p extends N {
135
145
  constructor(a, r, t) {
136
146
  super(a, r, t), this.name = "ApplicationError";
137
147
  }
138
148
  }
139
- class J extends g {
149
+ class ee extends p {
140
150
  constructor(a, r, t) {
141
151
  super(a, r, t), this.name = "APIError";
142
152
  }
143
153
  }
144
- class q extends g {
154
+ class te extends p {
145
155
  constructor(a, r, t) {
146
156
  super(a, r, t), this.name = "EngineError";
147
157
  }
148
158
  }
149
- class N extends g {
159
+ class R extends p {
150
160
  body;
151
161
  constructor(a, r, t, o) {
152
162
  super(a, r, o), this.name = "FetchError", this.body = t;
153
163
  }
154
164
  }
155
- class $ extends g {
165
+ class U extends p {
156
166
  componentName;
157
167
  info;
158
168
  constructor(a, r, t, o, n) {
159
169
  super(a, r, n), this.name = "VueHandledError", this.info = t, this.componentName = o;
160
170
  }
161
171
  }
162
- class Q extends g {
172
+ class re extends p {
163
173
  constructor(a, r, t) {
164
174
  super(a, r, t), this.name = "WindowHandledRuntimeError";
165
175
  }
166
176
  }
167
- class Y extends g {
177
+ class ae extends p {
168
178
  constructor(a, r, t) {
169
179
  super(a, r, t), this.name = "WindowHandledPromiseRejectionError";
170
180
  }
171
181
  }
172
- class Z extends w {
182
+ class ne extends N {
173
183
  constructor(a, r, t) {
174
184
  super(a, r, t), this.name = "OperationalError";
175
185
  }
176
186
  }
177
- async function ee(e, a, r) {
187
+ async function oe(e, a, r) {
178
188
  const t = `${a} Response status '${e.status}${e.statusText ? ` - ${e.statusText}` : ""}' received.`, o = await e.text();
179
- return new N(t, r, o);
189
+ return new R(t, r, o);
180
190
  }
181
- function te(e) {
191
+ function se(e) {
182
192
  return e.map((a) => a.message).join(" ");
183
193
  }
184
- function re(e, a = "Unknown error.") {
194
+ function ie(e, a = "Unknown error.") {
185
195
  if (e instanceof Error) return e;
186
196
  if (typeof e == "string") return new Error(e);
187
197
  try {
@@ -190,17 +200,17 @@ function re(e, a = "Unknown error.") {
190
200
  return new Error(a);
191
201
  }
192
202
  }
193
- function ae(e) {
203
+ function le(e) {
194
204
  const a = /* @__PURE__ */ new Set(), r = [];
195
205
  let t = e;
196
206
  for (; t && !a.has(t); ) {
197
207
  a.add(t);
198
208
  let o;
199
- if (t instanceof N)
209
+ if (t instanceof R)
200
210
  o = { body: t.body, locator: t.locator, message: t.message, name: t.name, stack: t.stack }, t = t.cause;
201
- else if (t instanceof $)
211
+ else if (t instanceof U)
202
212
  o = { componentName: t.componentName, info: t.info, locator: t.locator, message: t.message, name: t.name, stack: t.stack }, t = t.cause;
203
- else if (t instanceof w)
213
+ else if (t instanceof N)
204
214
  o = { locator: t.locator, message: t.message, name: t.name, stack: t.stack }, t = t.cause;
205
215
  else if (t instanceof Error) {
206
216
  const n = t;
@@ -210,7 +220,7 @@ function ae(e) {
210
220
  }
211
221
  return r;
212
222
  }
213
- const R = "en-US", y = {}, ne = (e) => {
223
+ const S = "en-US", y = {}, ce = (e) => {
214
224
  switch (e) {
215
225
  case "Edm.Binary":
216
226
  return "unknown";
@@ -249,17 +259,17 @@ const R = "en-US", y = {}, ne = (e) => {
249
259
  default:
250
260
  return "unknown";
251
261
  }
252
- }, oe = (e) => {
262
+ }, de = (e) => {
253
263
  if (e) {
254
264
  const a = e.lastIndexOf("/"), r = e.lastIndexOf(".", a > -1 ? a : e.length);
255
265
  return r > -1 ? e.substring(0, r) : e;
256
266
  }
257
- }, se = (e) => {
267
+ }, me = (e) => {
258
268
  if (e) {
259
269
  const a = e.lastIndexOf(".");
260
270
  if (a > -1) return e.substring(a + 1);
261
271
  }
262
- }, i = (e, a = 2, r = a, t = R) => {
272
+ }, i = (e, a = 2, r = a, t = S) => {
263
273
  if (e == null) return "";
264
274
  const o = `${t}decimal${a}.${r}`;
265
275
  let n = y[o];
@@ -271,7 +281,7 @@ const R = "en-US", y = {}, ne = (e) => {
271
281
  style: "decimal",
272
282
  useGrouping: !0
273
283
  }), y[o] = n), n.format(e);
274
- }, ie = (e) => e == null ? "" : e < 1e3 ? E(e) : e < 1e6 ? `${i(e / 1e3, 2, 0)}K` : e < 1e9 ? `${i(e / 1e6, 2, 0)}M` : e < 1e12 ? `${i(e / 1e9, 2, 0)}B` : `${i(e / 1e12, 2, 0)}T`, ce = (e) => e == null ? "" : e === 1 ? "1 byte" : e < 1024 ? `${E(e)} bytes` : e < 1048576 ? `${i(e / 1024, 2, 0)} KB` : e < 1073741824 ? `${i(e / 1048576, 2, 0)} MB` : e < 1099511627776 ? `${i(e / 1073741824, 2, 0)} GB` : `${i(e / 1099511627776, 2, 0)} TB`, le = (e) => e == null ? "" : e < 1e3 ? `${E(e)} ms` : e === 1e3 ? `${E(e)} sec` : e < 6e4 ? `${i(e / 1e3, 2, 0)} secs` : e === 6e4 ? "1 min" : e < 36e5 ? `${i(e / 6e4, 2, 0)} mins` : e === 36e5 ? "1 hr" : e < 864e5 ? `${i(e / 36e5, 2, 0)} hrs` : e === 864e5 ? "1 day" : `${i(e / 864e5, 2, 0)} days`, E = (e, a = R) => {
284
+ }, ue = (e) => e == null ? "" : e < 1e3 ? E(e) : e < 1e6 ? `${i(e / 1e3, 2, 0)}K` : e < 1e9 ? `${i(e / 1e6, 2, 0)}M` : e < 1e12 ? `${i(e / 1e9, 2, 0)}B` : `${i(e / 1e12, 2, 0)}T`, ge = (e) => e == null ? "" : e === 1 ? "1 byte" : e < 1024 ? `${E(e)} bytes` : e < 1048576 ? `${i(e / 1024, 2, 0)} KB` : e < 1073741824 ? `${i(e / 1048576, 2, 0)} MB` : e < 1099511627776 ? `${i(e / 1073741824, 2, 0)} GB` : `${i(e / 1099511627776, 2, 0)} TB`, pe = (e) => e == null ? "" : e < 1e3 ? `${E(e)} ms` : e === 1e3 ? `${E(e)} sec` : e < 6e4 ? `${i(e / 1e3, 2, 0)} secs` : e === 6e4 ? "1 min" : e < 36e5 ? `${i(e / 6e4, 2, 0)} mins` : e === 36e5 ? "1 hr" : e < 864e5 ? `${i(e / 36e5, 2, 0)} hrs` : e === 864e5 ? "1 day" : `${i(e / 864e5, 2, 0)} days`, E = (e, a = S) => {
275
285
  if (e == null) return "";
276
286
  const r = `${a}decimal0.0`;
277
287
  let t = y[r];
@@ -283,7 +293,7 @@ const R = "en-US", y = {}, ne = (e) => {
283
293
  style: "decimal",
284
294
  useGrouping: !0
285
295
  }), y[r] = t), t.format(e);
286
- }, de = (e) => {
296
+ }, he = (e) => {
287
297
  switch (e) {
288
298
  case "csv":
289
299
  return "text/csv";
@@ -297,7 +307,7 @@ const R = "en-US", y = {}, ne = (e) => {
297
307
  default:
298
308
  return "application/octet-stream";
299
309
  }
300
- }, k = [
310
+ }, H = [
301
311
  { id: "dtv", label: { "en-gb": "Delimited Text" } },
302
312
  { id: "e/e", label: { "en-gb": "Entity/Event" } },
303
313
  { id: "jsonArray", label: { "en-gb": "JSON Array" } },
@@ -305,22 +315,22 @@ const R = "en-US", y = {}, ne = (e) => {
305
315
  { id: "xls", label: { "en-gb": "XLS" } },
306
316
  { id: "xlsx", label: { "en-gb": "XLSX" } },
307
317
  { id: "xml", label: { "en-gb": "XML" } }
308
- ], me = (e = d) => {
318
+ ], be = (e = d) => {
309
319
  const a = [];
310
- for (const r of k) a.push({ ...r, label: r.label[e] || r.label[d] || r.id });
320
+ for (const r of H) a.push({ ...r, label: r.label[e] || r.label[d] || r.id });
311
321
  return a;
312
- }, F = [
322
+ }, B = [
313
323
  { id: `
314
324
  `, label: { "en-gb": "Newline" } },
315
325
  { id: "\r", label: { "en-gb": "Carriage Return" } },
316
326
  { id: `\r
317
327
  `, label: { "en-gb": "Carriage Return/Newline" } }
318
- ], ue = (e = d) => {
328
+ ], fe = (e = d) => {
319
329
  const a = [];
320
- for (const r of F)
330
+ for (const r of B)
321
331
  a.push({ ...r, label: r.label[e] || r.label[d] || r.id });
322
332
  return a;
323
- }, M = [
333
+ }, P = [
324
334
  { id: ":", label: { "en-gb": "Colon" } },
325
335
  { id: ",", label: { "en-gb": "Comma" } },
326
336
  { id: "!", label: { "en-gb": "Exclamation Mark" } },
@@ -332,12 +342,12 @@ const R = "en-US", y = {}, ne = (e) => {
332
342
  { id: "_", label: { "en-gb": "Underscore" } },
333
343
  { id: "0x1F", label: { "en-gb": "Unit Separator" } },
334
344
  { id: "|", label: { "en-gb": "Vertical Bar" } }
335
- ], pe = (e = d) => {
345
+ ], ye = (e = d) => {
336
346
  const a = [];
337
- for (const r of M)
347
+ for (const r of P)
338
348
  a.push({ ...r, label: r.label[e] || r.label[d] || r.id });
339
349
  return a;
340
- }, j = [
350
+ }, W = [
341
351
  { id: "alpha", color: "red", label: { "en-gb": "alpha" } },
342
352
  { id: "beta", color: "amber", label: { "en-gb": "beta" } },
343
353
  { id: "generalAvailability", color: "green", label: { "en-gb": "" } },
@@ -347,45 +357,45 @@ const R = "en-US", y = {}, ne = (e) => {
347
357
  { id: "releaseCandidate", color: "green", label: { "en-gb": "release-candidate" } },
348
358
  { id: "unavailable", color: "other", label: { "en-gb": "unavailable" } },
349
359
  { id: "underReview", color: "other", label: { "en-gb": "under-review" } }
350
- ], ge = (e, a = d) => {
351
- const r = j.find((t) => t.id === e);
360
+ ], Ee = (e, a = d) => {
361
+ const r = W.find((t) => t.id === e);
352
362
  return r ? { ...r, label: r.label[a] || r.label[d] || e } : { id: e, color: "other", label: e };
353
363
  }, d = "en-gb";
354
364
  export {
355
- J as APIError,
356
- g as ApplicationError,
357
- U as CONNECTOR_DESTINATION_OPERATIONS,
358
- B as CONNECTOR_SOURCE_OPERATIONS,
365
+ ee as APIError,
366
+ p as ApplicationError,
367
+ V as CONNECTOR_DESTINATION_OPERATIONS,
368
+ X as CONNECTOR_SOURCE_OPERATIONS,
359
369
  d as DEFAULT_LOCALE_CODE,
360
- X as DefaultTimestamp,
361
- q as EngineError,
362
- N as FetchError,
363
- Z as OperationalError,
364
- $ as VueError,
365
- Y as WindowPromiseRejectionError,
366
- Q as WindowRuntimeError,
367
- ee as buildFetchError,
368
- te as concatenateSerialisedErrorMessages,
369
- G as convertMillisecondsToTimestamp,
370
- ne as convertODataTypeIdToUsageTypeId,
371
- se as extractExtensionFromPath,
372
- oe as extractNameFromPath,
370
+ q as DefaultTimestamp,
371
+ te as EngineError,
372
+ R as FetchError,
373
+ ne as OperationalError,
374
+ U as VueError,
375
+ ae as WindowPromiseRejectionError,
376
+ re as WindowRuntimeError,
377
+ oe as buildFetchError,
378
+ se as concatenateSerialisedErrorMessages,
379
+ Q as convertMillisecondsToTimestamp,
380
+ ce as convertODataTypeIdToUsageTypeId,
381
+ me as extractExtensionFromPath,
382
+ de as extractNameFromPath,
373
383
  i as formatNumberAsDecimalNumber,
374
- le as formatNumberAsDuration,
375
- ie as formatNumberAsSize,
376
- ce as formatNumberAsStorageSize,
384
+ pe as formatNumberAsDuration,
385
+ ue as formatNumberAsSize,
386
+ ge as formatNumberAsStorageSize,
377
387
  E as formatNumberAsWholeNumber,
378
- ge as getComponentStatus,
379
- z as getCurrentTimestamp,
380
- me as getDataFormats,
381
- ue as getRecordDelimiters,
382
- pe as getValueDelimiters,
383
- de as lookupMimeTypeForExtension,
384
- re as normalizeToError,
385
- K as presentationViewTypeMap,
386
- ae as serialiseError,
387
- P as useCytoscapeJS,
388
- H as useDataTable,
389
- W as useHighcharts,
390
- V as useMicromark
388
+ Ee as getComponentStatus,
389
+ Y as getCurrentTimestamp,
390
+ be as getDataFormats,
391
+ fe as getRecordDelimiters,
392
+ ye as getValueDelimiters,
393
+ he as lookupMimeTypeForExtension,
394
+ ie as normalizeToError,
395
+ Z as presentationViewTypeMap,
396
+ le as serialiseError,
397
+ G as useCytoscapeJS,
398
+ z as useDataTable,
399
+ K as useHighcharts,
400
+ J as useMicromark
391
401
  };
@@ -1,5 +1,6 @@
1
- import { gfm } from 'micromark-extension-gfm';
2
1
  import { micromark } from 'micromark';
2
+ import { gfm, gfmHtml } from 'micromark-extension-gfm';
3
+ import { math, mathHtml } from 'micromark-extension-math';
3
4
  import { Module } from '../../module';
4
5
  import { Component, ComponentConfig, ComponentRef } from '..';
5
6
  export interface Presenter extends Module, Component {
@@ -18,5 +19,8 @@ export type PresenterLocalisedConfig = Omit<PresenterConfig, 'label' | 'descript
18
19
  };
19
20
  export type PresenterTools = {
20
21
  gfmExtension: typeof gfm;
22
+ gfmHtmlExtension: typeof gfmHtml;
23
+ mathExtension: typeof math;
24
+ mathHtmlExtension: typeof mathHtml;
21
25
  micromark: typeof micromark;
22
26
  };
@@ -1,8 +1,12 @@
1
- import { gfm } from 'micromark-extension-gfm';
2
1
  import { micromark } from 'micromark';
2
+ import { gfm, gfmHtml } from 'micromark-extension-gfm';
3
+ import { math, mathHtml } from 'micromark-extension-math';
3
4
  export declare function useMicromark(): {
4
5
  getStuff: () => Promise<{
5
6
  gfmExtension: typeof gfm;
7
+ gfmHtmlExtension: typeof gfmHtml;
8
+ mathExtension: typeof math;
9
+ mathHtmlExtension: typeof mathHtml;
6
10
  micromark: typeof micromark;
7
11
  }>;
8
12
  render: () => Promise<void>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datapos/datapos-shared",
3
- "version": "0.3.197",
3
+ "version": "0.3.199",
4
4
  "description": "A TypeScript library containing common declarations and utilities used across other Data Positioning repositories.",
5
5
  "license": "MIT",
6
6
  "private": false,
@@ -30,6 +30,7 @@
30
30
  "highcharts": "^12.4.0",
31
31
  "micromark": "^4.0.2",
32
32
  "micromark-extension-gfm": "^3.0.0",
33
+ "micromark-extension-math": "^3.1.0",
33
34
  "nanoid": "^5.1.6",
34
35
  "zod": "^4.1.12"
35
36
  },