@platforma-sdk/ui-vue 1.42.14 → 1.42.18
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/.turbo/turbo-build.log +25 -24
- package/.turbo/turbo-type-check.log +1 -1
- package/CHANGELOG.md +16 -0
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue2.js +5 -5
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js +21 -21
- package/dist/components/PlAgDataTable/sources/table-source-v2.d.ts.map +1 -1
- package/dist/components/PlAgDataTable/sources/table-source-v2.js +122 -123
- package/dist/components/PlAgDataTable/sources/table-source-v2.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/table-state-v2.js +9 -9
- package/dist/components/PlAgDataTable/sources/value-rendering.d.ts.map +1 -1
- package/dist/components/PlAgDataTable/sources/value-rendering.js +24 -25
- package/dist/components/PlAgDataTable/sources/value-rendering.js.map +1 -1
- package/dist/components/PlAnnotations/components/DynamicForm.vue2.js +12 -12
- package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js +2 -2
- package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.d.ts.map +1 -1
- package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js +21 -20
- package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js.map +1 -1
- package/dist/components/PlMultiSequenceAlignment/data.d.ts.map +1 -1
- package/dist/components/PlMultiSequenceAlignment/data.js +169 -184
- package/dist/components/PlMultiSequenceAlignment/data.js.map +1 -1
- package/dist/components/PlTableFilters/filters-state.js +8 -8
- package/dist/components/PlTableFilters/filters_logic.d.ts.map +1 -1
- package/dist/components/PlTableFilters/filters_logic.js +67 -77
- package/dist/components/PlTableFilters/filters_logic.js.map +1 -1
- package/dist/defineApp.js +20 -20
- package/dist/internal/UpdateSerializer.js +3 -3
- package/dist/lib/model/common/dist/index.js +576 -444
- package/dist/lib/model/common/dist/index.js.map +1 -1
- package/dist/lib/ui/uikit/dist/components/DataTable/TableComponent.vue.js +1 -1
- package/dist/lib/ui/uikit/dist/components/PlAccordion/PlAccordionSection.vue2.js +1 -1
- package/dist/lib/ui/uikit/dist/components/PlFileDialog/Local.vue.js +6 -6
- package/dist/lib/ui/uikit/dist/components/PlFileInput/PlFileInput.vue.js +17 -17
- package/dist/lib/ui/uikit/dist/components/PlFileInput/PlFileInput.vue.js.map +1 -1
- package/dist/lib/ui/uikit/dist/components/PlLogView/PlLogView.vue.js +89 -63
- package/dist/lib/ui/uikit/dist/components/PlLogView/PlLogView.vue.js.map +1 -1
- package/dist/lib/ui/uikit/dist/components/PlSlideModal/PlPureSlideModal.vue.js +1 -1
- package/dist/lib/ui/uikit/dist/helpers/dom.js.map +1 -1
- package/dist/lib/ui/uikit/dist/helpers/downloadContent.js +32 -0
- package/dist/lib/ui/uikit/dist/helpers/downloadContent.js.map +1 -0
- package/dist/lib/ui/uikit/dist/lib/model/common/dist/index.js +257 -192
- package/dist/lib/ui/uikit/dist/lib/model/common/dist/index.js.map +1 -1
- package/dist/lib/ui/uikit/dist/sdk/model/dist/index.js +473 -457
- package/dist/lib/ui/uikit/dist/sdk/model/dist/index.js.map +1 -1
- package/dist/lib.js +52 -50
- package/dist/lib.js.map +1 -1
- package/dist/sdk/model/dist/index.js +542 -526
- package/dist/sdk/model/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/src/components/PlAgDataTable/sources/table-source-v2.ts +20 -16
- package/src/components/PlAgDataTable/sources/value-rendering.ts +15 -7
- package/src/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue +1 -0
- package/src/components/PlMultiSequenceAlignment/data.ts +12 -12
- package/src/components/PlTableFilters/filters_logic.ts +18 -15
- package/.turbo/turbo-test.log +0 -565
- package/dist/lib/ui/uikit/dist/components/PlAccordion/ExpandTransition.vue.js +0 -27
- package/dist/lib/ui/uikit/dist/components/PlAccordion/ExpandTransition.vue.js.map +0 -1
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { getRawPlatformaInstance as
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { getRawPlatformaInstance as d } from "../../sdk/model/dist/index.js";
|
|
2
|
+
import h from "../../_virtual/index.js";
|
|
3
|
+
import { readAnnotationJson as p, readDomain as i, readAnnotation as u, parseJson as m, Annotation as a, Domain as c } from "../../lib/model/common/dist/index.js";
|
|
4
|
+
function w(e, r, n) {
|
|
5
|
+
if (!r.some((s) => s.value === e.type)) return !1;
|
|
6
|
+
if (l(e.type) && n.length > 0) {
|
|
7
|
+
const s = g(e);
|
|
8
|
+
return n.some((o) => o.value === s);
|
|
8
9
|
}
|
|
9
10
|
return !0;
|
|
10
11
|
}
|
|
11
|
-
function
|
|
12
|
+
function _(e) {
|
|
12
13
|
switch (e) {
|
|
13
14
|
case "isNotNA":
|
|
14
15
|
return "Is not NA";
|
|
@@ -44,7 +45,7 @@ function g(e) {
|
|
|
44
45
|
throw Error(`unsupported filter type: ${e}`);
|
|
45
46
|
}
|
|
46
47
|
}
|
|
47
|
-
const
|
|
48
|
+
const b = [
|
|
48
49
|
"isNotNA",
|
|
49
50
|
"isNA",
|
|
50
51
|
"number_equals",
|
|
@@ -54,7 +55,7 @@ const m = [
|
|
|
54
55
|
"number_lessThan",
|
|
55
56
|
"number_lessThanOrEqualTo",
|
|
56
57
|
"number_between"
|
|
57
|
-
],
|
|
58
|
+
], f = [
|
|
58
59
|
"isNotNA",
|
|
59
60
|
"isNA",
|
|
60
61
|
"string_equals",
|
|
@@ -65,20 +66,20 @@ const m = [
|
|
|
65
66
|
"string_doesNotMatch",
|
|
66
67
|
"string_containsFuzzyMatch"
|
|
67
68
|
];
|
|
68
|
-
function
|
|
69
|
-
return ((e.type === "column" ? e.spec.valueType : e.spec.type) === "String" ?
|
|
69
|
+
function A(e) {
|
|
70
|
+
return ((e.type === "column" ? e.spec.valueType : e.spec.type) === "String" ? f : b).filter((t) => e.type === "axis" ? t !== "isNotNA" && t !== "isNA" : !0).map((t) => ({ value: t, text: _(t) }));
|
|
70
71
|
}
|
|
71
|
-
const
|
|
72
|
+
const N = [
|
|
72
73
|
"number_equals",
|
|
73
74
|
"number_notEquals",
|
|
74
75
|
"string_equals",
|
|
75
76
|
"string_notEquals"
|
|
76
|
-
],
|
|
77
|
-
function
|
|
78
|
-
var n
|
|
79
|
-
return ((
|
|
77
|
+
], l = (e) => N.includes(e), v = (e) => l(e.type);
|
|
78
|
+
function M(e, r) {
|
|
79
|
+
var n;
|
|
80
|
+
return ((n = u(e.spec, a.Label)) == null ? void 0 : n.trim()) ?? "Unlabeled " + e.type + " " + r.toString();
|
|
80
81
|
}
|
|
81
|
-
function
|
|
82
|
+
function g(e) {
|
|
82
83
|
const r = e.type;
|
|
83
84
|
switch (r) {
|
|
84
85
|
case "isNotNA":
|
|
@@ -105,7 +106,7 @@ function p(e) {
|
|
|
105
106
|
throw Error(`unsupported filter type: ${r}`);
|
|
106
107
|
}
|
|
107
108
|
}
|
|
108
|
-
function
|
|
109
|
+
function E(e, r) {
|
|
109
110
|
switch (e) {
|
|
110
111
|
case "isNotNA":
|
|
111
112
|
case "isNA":
|
|
@@ -144,76 +145,65 @@ function b(e, r) {
|
|
|
144
145
|
throw Error(`unsupported filter type: ${e}`);
|
|
145
146
|
}
|
|
146
147
|
}
|
|
147
|
-
function
|
|
148
|
-
let t =
|
|
149
|
-
return
|
|
148
|
+
function F(e, r, n) {
|
|
149
|
+
let t = g(e);
|
|
150
|
+
return l(r) && n !== void 0 && n.length > 0 && !n.some((s) => s.value === t) && (t = n[0].value), E(r, t);
|
|
150
151
|
}
|
|
151
|
-
function
|
|
152
|
-
var o, c;
|
|
152
|
+
function O(e, r) {
|
|
153
153
|
const n = Number(r);
|
|
154
154
|
if (!Number.isFinite(n)) throw Error("Model value is not a number.");
|
|
155
155
|
const t = e.type === "column" ? e.spec.valueType : e.spec.type;
|
|
156
156
|
if ((t === "Int" || t === "Long") && !Number.isInteger(n)) throw Error("Model value is not an integer.");
|
|
157
|
-
const
|
|
158
|
-
if (
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
const s = (c = e.spec.annotations) == null ? void 0 : c["pl7.app/max"];
|
|
164
|
-
if (s !== void 0) {
|
|
165
|
-
const u = Number(s);
|
|
166
|
-
if (Number.isFinite(u) && n > Number(s))
|
|
167
|
-
throw Error("Model value is too high.");
|
|
168
|
-
}
|
|
157
|
+
const s = p(e.spec, a.Min);
|
|
158
|
+
if (s !== void 0 && Number.isFinite(s) && n < s)
|
|
159
|
+
throw Error("Model value is too low.");
|
|
160
|
+
const o = p(e.spec, a.Max);
|
|
161
|
+
if (o !== void 0 && Number.isFinite(o) && n > o)
|
|
162
|
+
throw Error("Model value is too high.");
|
|
169
163
|
return n;
|
|
170
164
|
}
|
|
171
|
-
function
|
|
172
|
-
|
|
173
|
-
const n = ((t = e.spec.domain) == null ? void 0 : t["pl7.app/alphabet"]) ?? ((a = e.spec.annotations) == null ? void 0 : a["pl7.app/alphabet"]);
|
|
165
|
+
function z(e, r) {
|
|
166
|
+
const n = i(e.spec, c.Alphabet) ?? u(e.spec, a.Alphabet);
|
|
174
167
|
if (n === "nucleotide" && !/^[AaTtGgCcNn]+$/.test(r)) throw Error("Model value is not a nucleotide.");
|
|
175
168
|
if (n === "aminoacid" && !/^[AaCcDdEeFfGgHhIiKkLlMmNnPpQqRrSsTtVvWwYyXx*_]+$/.test(r)) throw Error("Model value is not an aminoacid.");
|
|
176
169
|
return r;
|
|
177
170
|
}
|
|
178
|
-
function
|
|
171
|
+
function C(e) {
|
|
179
172
|
try {
|
|
180
173
|
return new RegExp(e), e;
|
|
181
174
|
} catch (r) {
|
|
182
175
|
throw r instanceof SyntaxError ? Error("Model value is not a regexp.") : r;
|
|
183
176
|
}
|
|
184
177
|
}
|
|
185
|
-
function
|
|
186
|
-
|
|
187
|
-
const n = ((a = e.spec.domain) == null ? void 0 : a["pl7.app/alphabet"]) ?? ((s = e.spec.annotations) == null ? void 0 : s["pl7.app/alphabet"]);
|
|
178
|
+
function x(e, r) {
|
|
179
|
+
const n = i(e.spec, c.Alphabet) ?? u(e.spec, a.Alphabet);
|
|
188
180
|
return n === "nucleotide" ? [{
|
|
189
181
|
label: "N",
|
|
190
182
|
value: "N"
|
|
191
183
|
}] : n === "aminoacid" ? [{
|
|
192
184
|
label: "X",
|
|
193
185
|
value: "X"
|
|
194
|
-
}] : [...new Set(r).keys()].sort().map((
|
|
195
|
-
label:
|
|
196
|
-
value:
|
|
186
|
+
}] : [...new Set(r).keys()].sort().map((s) => ({
|
|
187
|
+
label: s,
|
|
188
|
+
value: s
|
|
197
189
|
}));
|
|
198
190
|
}
|
|
199
|
-
function
|
|
200
|
-
|
|
201
|
-
const r = (n = e.spec.annotations) == null ? void 0 : n["pl7.app/discreteValues"];
|
|
191
|
+
function I(e) {
|
|
192
|
+
const r = u(e.spec, a.DiscreteValues);
|
|
202
193
|
if (!r) return [];
|
|
203
194
|
try {
|
|
204
|
-
return
|
|
205
|
-
label:
|
|
206
|
-
value:
|
|
195
|
+
return m(r).map((t) => ({
|
|
196
|
+
label: `${t}`,
|
|
197
|
+
value: t
|
|
207
198
|
}));
|
|
208
|
-
} catch (
|
|
209
|
-
return console.error(`Column ${e.id} has invalid '
|
|
199
|
+
} catch (n) {
|
|
200
|
+
return console.error(`Column ${e.id} has invalid '${a.DiscreteValues}' annotation: '${r}'`, n), [];
|
|
210
201
|
}
|
|
211
202
|
}
|
|
212
|
-
function
|
|
213
|
-
|
|
214
|
-
return d.gt(l().sdkInfo.sdkVersion, "1.14.0") && (e.type === "column" ? e.spec.valueType : e.spec.type) === "String" && (((r = e.spec.domain) == null ? void 0 : r["pl7.app/alphabet"]) ?? ((n = e.spec.annotations) == null ? void 0 : n["pl7.app/alphabet"])) !== void 0;
|
|
203
|
+
function S(e) {
|
|
204
|
+
return h.gt(d().sdkInfo.sdkVersion, "1.14.0") && (e.type === "column" ? e.spec.valueType : e.spec.type) === "String" && (i(e.spec, c.Alphabet) ?? u(e.spec, a.Alphabet)) !== void 0;
|
|
215
205
|
}
|
|
216
|
-
function
|
|
206
|
+
function D(e, r) {
|
|
217
207
|
const n = r.type;
|
|
218
208
|
switch (n) {
|
|
219
209
|
case "isNotNA":
|
|
@@ -326,24 +316,24 @@ function x(e, r) {
|
|
|
326
316
|
}
|
|
327
317
|
}
|
|
328
318
|
export {
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
319
|
+
F as changeFilter,
|
|
320
|
+
N as filterTypesDiscrete,
|
|
321
|
+
b as filterTypesNumber,
|
|
322
|
+
f as filterTypesString,
|
|
323
|
+
M as getColumnName,
|
|
324
|
+
E as getFilterDefault,
|
|
325
|
+
_ as getFilterLabel,
|
|
326
|
+
A as getFilterOptions,
|
|
327
|
+
g as getFilterReference,
|
|
328
|
+
S as isAlphabetic,
|
|
329
|
+
v as isFilterDiscrete,
|
|
330
|
+
l as isFilterDiscreteType,
|
|
331
|
+
w as isFilterValid,
|
|
332
|
+
I as makeDiscreteOptions,
|
|
333
|
+
D as makePredicate,
|
|
334
|
+
x as makeWildcardOptions,
|
|
335
|
+
O as parseNumber,
|
|
336
|
+
C as parseRegex,
|
|
337
|
+
z as parseString
|
|
348
338
|
};
|
|
349
339
|
//# sourceMappingURL=filters_logic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filters_logic.js","sources":["../../../src/components/PlTableFilters/filters_logic.ts"],"sourcesContent":["import type {\n PlTableFilterNumberEquals,\n PlTableFilterNumberNotEquals,\n PlTableFilterStringEquals,\n PlTableFilterStringNotEquals,\n} from '@platforma-sdk/model';\nimport {\n type SingleValuePredicateV2,\n type PlTableFilterType,\n type PlTableFilterNumberType,\n type PlTableFilterStringType,\n type PlTableFilter,\n type PTableColumnSpec,\n getRawPlatformaInstance,\n} from '@platforma-sdk/model';\nimport semver from 'semver';\nimport type { ListOption } from '@milaboratories/uikit';\n\nexport function isFilterValid(\n filter: PlTableFilter,\n options: ListOption<number | string>[],\n discreteOptions: ListOption<number | string>[],\n): boolean {\n const validOption = options.some((o) => o.value === filter.type);\n if (!validOption) return false;\n\n if (isFilterDiscreteType(filter.type) && discreteOptions.length > 0) {\n const reference = getFilterReference(filter);\n return discreteOptions.some((option) => option.value === reference);\n }\n\n return true;\n}\n\nexport function getFilterLabel(type: PlTableFilterType): string {\n switch (type) {\n case 'isNotNA':\n return 'Is not NA';\n case 'isNA':\n return 'Is NA';\n case 'number_equals':\n case 'string_equals':\n return 'Equals';\n case 'number_notEquals':\n case 'string_notEquals':\n return 'Not equals';\n case 'number_greaterThan':\n return 'Greater than';\n case 'number_greaterThanOrEqualTo':\n return 'Greater than or equal to';\n case 'number_lessThan':\n return 'Less than';\n case 'number_lessThanOrEqualTo':\n return 'Less than or equal to';\n case 'number_between':\n return 'Between';\n case 'string_contains':\n return 'Contains';\n case 'string_doesNotContain':\n return 'Does not contain';\n case 'string_matches':\n return 'Matches';\n case 'string_doesNotMatch':\n return 'Does not match';\n case 'string_containsFuzzyMatch':\n return 'Contains fuzzy match';\n default:\n throw Error(`unsupported filter type: ${type satisfies never}`);\n }\n}\n\nexport const filterTypesNumber: PlTableFilterNumberType[] = [\n 'isNotNA',\n 'isNA',\n 'number_equals',\n 'number_notEquals',\n 'number_greaterThan',\n 'number_greaterThanOrEqualTo',\n 'number_lessThan',\n 'number_lessThanOrEqualTo',\n 'number_between',\n] as const;\n\nexport const filterTypesString: PlTableFilterStringType[] = [\n 'isNotNA',\n 'isNA',\n 'string_equals',\n 'string_notEquals',\n 'string_contains',\n 'string_doesNotContain',\n 'string_matches',\n 'string_doesNotMatch',\n 'string_containsFuzzyMatch',\n] as const;\n\nexport function getFilterOptions(column: PTableColumnSpec): ListOption<PlTableFilterType>[] {\n const valueType = column.type === 'column' ? column.spec.valueType : column.spec.type;\n const types: PlTableFilterType[] = valueType === 'String' ? filterTypesString : filterTypesNumber;\n return types\n .filter((type) => column.type === 'axis' ? type !== 'isNotNA' && type !== 'isNA' : true)\n .map((type) => ({ value: type, text: getFilterLabel(type) }));\n}\n\nexport type PlTableFilterDiscrete =\n | PlTableFilterNumberEquals\n | PlTableFilterNumberNotEquals\n | PlTableFilterStringEquals\n | PlTableFilterStringNotEquals;\n\nexport type PlTableFilterDiscreteType = PlTableFilterDiscrete['type'];\n\nexport const filterTypesDiscrete: PlTableFilterDiscreteType[] = [\n 'number_equals',\n 'number_notEquals',\n 'string_equals',\n 'string_notEquals',\n] as const;\n\nexport const isFilterDiscreteType = (\n filter: PlTableFilterType,\n): filter is PlTableFilterDiscreteType => {\n return (filterTypesDiscrete as PlTableFilterType[]).includes(filter);\n};\n\nexport const isFilterDiscrete = (filter: PlTableFilter): filter is PlTableFilterDiscrete => {\n return isFilterDiscreteType(filter.type);\n};\n\nexport function getColumnName(column: PTableColumnSpec, index: string | number) {\n return column.spec.annotations?.['pl7.app/label']?.trim() ?? 'Unlabeled ' + column.type + ' ' + index.toString();\n}\n\nexport function getFilterReference(filter: PlTableFilter): undefined | number | string {\n const type = filter.type;\n switch (type) {\n case 'isNotNA':\n case 'isNA':\n return undefined;\n case 'number_equals':\n case 'number_notEquals':\n case 'number_greaterThan':\n case 'number_greaterThanOrEqualTo':\n case 'number_lessThan':\n case 'number_lessThanOrEqualTo':\n return filter.reference;\n case 'number_between':\n return filter.lowerBound;\n case 'string_equals':\n case 'string_notEquals':\n case 'string_contains':\n case 'string_doesNotContain':\n case 'string_matches':\n case 'string_doesNotMatch':\n case 'string_containsFuzzyMatch':\n return filter.reference;\n default:\n throw Error(`unsupported filter type: ${type satisfies never}`);\n }\n}\n\nexport function getFilterDefault(type: PlTableFilterType, reference?: undefined | number | string): PlTableFilter {\n switch (type) {\n case 'isNotNA':\n case 'isNA':\n return { type };\n case 'number_equals':\n case 'number_notEquals':\n case 'number_greaterThan':\n case 'number_greaterThanOrEqualTo':\n case 'number_lessThan':\n case 'number_lessThanOrEqualTo':\n return { type, reference: typeof reference === 'number' ? reference : 0 };\n case 'number_between':\n return {\n type,\n lowerBound: typeof reference === 'number' ? reference : 0,\n includeLowerBound: true,\n upperBound: 100,\n includeUpperBound: false,\n };\n case 'string_equals':\n case 'string_notEquals':\n case 'string_contains':\n case 'string_doesNotContain':\n case 'string_matches':\n case 'string_doesNotMatch':\n return { type, reference: typeof reference === 'string' ? reference : '' };\n case 'string_containsFuzzyMatch':\n return {\n type,\n reference: typeof reference === 'string' ? reference : '',\n maxEdits: 2,\n substitutionsOnly: false,\n wildcard: undefined,\n };\n default:\n throw Error(`unsupported filter type: ${type satisfies never}`);\n }\n}\n\nexport function changeFilter(\n filter: PlTableFilter,\n type: PlTableFilterType,\n discreteOptions: ListOption<number | string>[],\n): PlTableFilter {\n let reference = getFilterReference(filter);\n if (isFilterDiscreteType(type)\n && discreteOptions !== undefined\n && discreteOptions.length > 0\n && !discreteOptions.some((option) => option.value === reference)) {\n reference = discreteOptions[0].value;\n }\n return getFilterDefault(type, reference);\n}\n\nexport function parseNumber(column: PTableColumnSpec, value: string): number {\n const parsed = Number(value);\n if (!Number.isFinite(parsed)) throw Error('Model value is not a number.');\n\n const type = column.type === 'column' ? column.spec.valueType : column.spec.type;\n if ((type === 'Int' || type === 'Long') && !Number.isInteger(parsed)) throw Error('Model value is not an integer.');\n\n const min = column.spec.annotations?.['pl7.app/min'];\n if (min !== undefined) {\n const minValue = Number(min);\n if (Number.isFinite(minValue) && parsed < Number(min)) {\n throw Error('Model value is too low.');\n }\n }\n\n const max = column.spec.annotations?.['pl7.app/max'];\n if (max !== undefined) {\n const maxValue = Number(max);\n if (Number.isFinite(maxValue) && parsed > Number(max)) {\n throw Error('Model value is too high.');\n }\n }\n\n return parsed;\n}\n\nexport function parseString(column: PTableColumnSpec, value: string): string {\n const alphabet = column.spec.domain?.['pl7.app/alphabet'] ?? column.spec.annotations?.['pl7.app/alphabet'];\n if (alphabet === 'nucleotide' && !/^[AaTtGgCcNn]+$/.test(value)) throw Error('Model value is not a nucleotide.');\n if (alphabet === 'aminoacid' && !/^[AaCcDdEeFfGgHhIiKkLlMmNnPpQqRrSsTtVvWwYyXx*_]+$/.test(value)) throw Error('Model value is not an aminoacid.');\n return value;\n}\n\nexport function parseRegex(value: string): string {\n try {\n new RegExp(value);\n return value;\n } catch (err: unknown) {\n if (err instanceof SyntaxError) throw Error('Model value is not a regexp.');\n throw err;\n }\n}\n\nexport function makeWildcardOptions(\n column: PTableColumnSpec,\n reference: string,\n): ListOption<string>[] {\n const alphabet = column.spec.domain?.['pl7.app/alphabet']\n ?? column.spec.annotations?.['pl7.app/alphabet'];\n if (alphabet === 'nucleotide') {\n return [{\n label: 'N',\n value: 'N',\n }];\n }\n if (alphabet === 'aminoacid') {\n return [{\n label: 'X',\n value: 'X',\n }];\n }\n\n const chars = [...new Set<string>(reference).keys()];\n return chars.sort().map((char) => ({\n label: char,\n value: char,\n }));\n}\n\nexport function makeDiscreteOptions(column: PTableColumnSpec): ListOption<number | string>[] {\n const discreteValuesAnnotation = column.spec.annotations?.['pl7.app/discreteValues'];\n if (!discreteValuesAnnotation) return [];\n\n try {\n const discreteValues: (string | number)[] = JSON.parse(discreteValuesAnnotation);\n return discreteValues.map((v) => ({\n label: v.toString(),\n value: v,\n }));\n } catch (err: unknown) {\n console.error(`Column ${column.id} has invalid 'pl7.app/discreteValues' annotation: '${discreteValuesAnnotation}'`, err);\n return [];\n }\n}\n\nexport function isAlphabetic(column: PTableColumnSpec): boolean {\n return semver.gt(getRawPlatformaInstance().sdkInfo.sdkVersion, '1.14.0')\n && (column.type === 'column' ? column.spec.valueType : column.spec.type) === 'String'\n && (column.spec.domain?.['pl7.app/alphabet'] ?? column.spec.annotations?.['pl7.app/alphabet']) !== undefined;\n}\n\nexport function makePredicate(alphabetic: boolean, filter: PlTableFilter): SingleValuePredicateV2 {\n const type = filter.type;\n switch (type) {\n case 'isNotNA':\n return {\n operator: 'Not',\n operand: {\n operator: 'IsNA',\n },\n };\n case 'isNA':\n return {\n operator: 'IsNA',\n };\n case 'number_equals':\n return {\n operator: 'Equal',\n reference: filter.reference,\n };\n case 'string_equals':\n return {\n operator: alphabetic ? 'IEqual' : 'Equal',\n reference: filter.reference as string,\n };\n case 'number_notEquals':\n return {\n operator: 'Not',\n operand: {\n operator: 'Equal',\n reference: filter.reference,\n },\n };\n case 'string_notEquals':\n return {\n operator: 'Not',\n operand: {\n operator: alphabetic ? 'IEqual' : 'Equal',\n reference: filter.reference,\n },\n };\n case 'number_greaterThan':\n return {\n operator: 'Greater',\n reference: filter.reference,\n };\n case 'number_greaterThanOrEqualTo':\n return {\n operator: 'GreaterOrEqual',\n reference: filter.reference,\n };\n case 'number_lessThan':\n return {\n operator: 'Less',\n reference: filter.reference,\n };\n case 'number_lessThanOrEqualTo':\n return {\n operator: 'LessOrEqual',\n reference: filter.reference,\n };\n case 'number_between':\n return {\n operator: 'And',\n operands: [\n {\n operator: filter.includeLowerBound ? 'GreaterOrEqual' : 'Greater',\n reference: filter.lowerBound,\n },\n {\n operator: filter.includeUpperBound ? 'LessOrEqual' : 'Less',\n reference: filter.upperBound,\n },\n ],\n };\n case 'string_contains':\n return {\n operator: alphabetic ? 'StringIContains' : 'StringContains',\n substring: filter.reference,\n };\n case 'string_doesNotContain':\n return {\n operator: 'Not',\n operand: {\n operator: alphabetic ? 'StringIContains' : 'StringContains',\n substring: filter.reference,\n },\n };\n case 'string_matches':\n return {\n operator: 'Matches',\n regex: filter.reference,\n };\n case 'string_doesNotMatch':\n return {\n operator: 'Not',\n operand: {\n operator: 'Matches',\n regex: filter.reference,\n },\n };\n case 'string_containsFuzzyMatch':\n return {\n operator: alphabetic ? 'StringIContainsFuzzy' : 'StringContainsFuzzy',\n reference: filter.reference,\n maxEdits: filter.maxEdits,\n substitutionsOnly: filter.substitutionsOnly,\n wildcard: filter.wildcard,\n };\n default:\n throw Error(`unsupported filter type: ${type satisfies never}`);\n }\n}\n"],"names":["isFilterValid","filter","options","discreteOptions","o","isFilterDiscreteType","reference","getFilterReference","option","getFilterLabel","type","filterTypesNumber","filterTypesString","getFilterOptions","column","filterTypesDiscrete","isFilterDiscrete","getColumnName","index","_b","_a","getFilterDefault","changeFilter","parseNumber","value","parsed","min","minValue","max","maxValue","parseString","alphabet","parseRegex","err","makeWildcardOptions","char","makeDiscreteOptions","discreteValuesAnnotation","v","isAlphabetic","semver","getRawPlatformaInstance","makePredicate","alphabetic"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"filters_logic.js","sources":["../../../src/components/PlTableFilters/filters_logic.ts"],"sourcesContent":["import type {\n PlTableFilterNumberEquals,\n PlTableFilterNumberNotEquals,\n PlTableFilterStringEquals,\n PlTableFilterStringNotEquals,\n} from '@platforma-sdk/model';\nimport {\n type SingleValuePredicateV2,\n type PlTableFilterType,\n type PlTableFilterNumberType,\n type PlTableFilterStringType,\n type PlTableFilter,\n type PTableColumnSpec,\n getRawPlatformaInstance,\n readDomain,\n Annotation,\n Domain,\n readAnnotation,\n parseJson,\n readAnnotationJson,\n} from '@platforma-sdk/model';\nimport semver from 'semver';\nimport type { ListOption } from '@milaboratories/uikit';\n\nexport function isFilterValid(\n filter: PlTableFilter,\n options: ListOption<number | string>[],\n discreteOptions: ListOption<number | string>[],\n): boolean {\n const validOption = options.some((o) => o.value === filter.type);\n if (!validOption) return false;\n\n if (isFilterDiscreteType(filter.type) && discreteOptions.length > 0) {\n const reference = getFilterReference(filter);\n return discreteOptions.some((option) => option.value === reference);\n }\n\n return true;\n}\n\nexport function getFilterLabel(type: PlTableFilterType): string {\n switch (type) {\n case 'isNotNA':\n return 'Is not NA';\n case 'isNA':\n return 'Is NA';\n case 'number_equals':\n case 'string_equals':\n return 'Equals';\n case 'number_notEquals':\n case 'string_notEquals':\n return 'Not equals';\n case 'number_greaterThan':\n return 'Greater than';\n case 'number_greaterThanOrEqualTo':\n return 'Greater than or equal to';\n case 'number_lessThan':\n return 'Less than';\n case 'number_lessThanOrEqualTo':\n return 'Less than or equal to';\n case 'number_between':\n return 'Between';\n case 'string_contains':\n return 'Contains';\n case 'string_doesNotContain':\n return 'Does not contain';\n case 'string_matches':\n return 'Matches';\n case 'string_doesNotMatch':\n return 'Does not match';\n case 'string_containsFuzzyMatch':\n return 'Contains fuzzy match';\n default:\n throw Error(`unsupported filter type: ${type satisfies never}`);\n }\n}\n\nexport const filterTypesNumber: PlTableFilterNumberType[] = [\n 'isNotNA',\n 'isNA',\n 'number_equals',\n 'number_notEquals',\n 'number_greaterThan',\n 'number_greaterThanOrEqualTo',\n 'number_lessThan',\n 'number_lessThanOrEqualTo',\n 'number_between',\n] as const;\n\nexport const filterTypesString: PlTableFilterStringType[] = [\n 'isNotNA',\n 'isNA',\n 'string_equals',\n 'string_notEquals',\n 'string_contains',\n 'string_doesNotContain',\n 'string_matches',\n 'string_doesNotMatch',\n 'string_containsFuzzyMatch',\n] as const;\n\nexport function getFilterOptions(column: PTableColumnSpec): ListOption<PlTableFilterType>[] {\n const valueType = column.type === 'column' ? column.spec.valueType : column.spec.type;\n const types: PlTableFilterType[] = valueType === 'String' ? filterTypesString : filterTypesNumber;\n return types\n .filter((type) => column.type === 'axis' ? type !== 'isNotNA' && type !== 'isNA' : true)\n .map((type) => ({ value: type, text: getFilterLabel(type) }));\n}\n\nexport type PlTableFilterDiscrete =\n | PlTableFilterNumberEquals\n | PlTableFilterNumberNotEquals\n | PlTableFilterStringEquals\n | PlTableFilterStringNotEquals;\n\nexport type PlTableFilterDiscreteType = PlTableFilterDiscrete['type'];\n\nexport const filterTypesDiscrete: PlTableFilterDiscreteType[] = [\n 'number_equals',\n 'number_notEquals',\n 'string_equals',\n 'string_notEquals',\n] as const;\n\nexport const isFilterDiscreteType = (\n filter: PlTableFilterType,\n): filter is PlTableFilterDiscreteType => {\n return (filterTypesDiscrete as PlTableFilterType[]).includes(filter);\n};\n\nexport const isFilterDiscrete = (filter: PlTableFilter): filter is PlTableFilterDiscrete => {\n return isFilterDiscreteType(filter.type);\n};\n\nexport function getColumnName(column: PTableColumnSpec, index: string | number) {\n return readAnnotation(column.spec, Annotation.Label)?.trim() ?? 'Unlabeled ' + column.type + ' ' + index.toString();\n}\n\nexport function getFilterReference(filter: PlTableFilter): undefined | number | string {\n const type = filter.type;\n switch (type) {\n case 'isNotNA':\n case 'isNA':\n return undefined;\n case 'number_equals':\n case 'number_notEquals':\n case 'number_greaterThan':\n case 'number_greaterThanOrEqualTo':\n case 'number_lessThan':\n case 'number_lessThanOrEqualTo':\n return filter.reference;\n case 'number_between':\n return filter.lowerBound;\n case 'string_equals':\n case 'string_notEquals':\n case 'string_contains':\n case 'string_doesNotContain':\n case 'string_matches':\n case 'string_doesNotMatch':\n case 'string_containsFuzzyMatch':\n return filter.reference;\n default:\n throw Error(`unsupported filter type: ${type satisfies never}`);\n }\n}\n\nexport function getFilterDefault(type: PlTableFilterType, reference?: undefined | number | string): PlTableFilter {\n switch (type) {\n case 'isNotNA':\n case 'isNA':\n return { type };\n case 'number_equals':\n case 'number_notEquals':\n case 'number_greaterThan':\n case 'number_greaterThanOrEqualTo':\n case 'number_lessThan':\n case 'number_lessThanOrEqualTo':\n return { type, reference: typeof reference === 'number' ? reference : 0 };\n case 'number_between':\n return {\n type,\n lowerBound: typeof reference === 'number' ? reference : 0,\n includeLowerBound: true,\n upperBound: 100,\n includeUpperBound: false,\n };\n case 'string_equals':\n case 'string_notEquals':\n case 'string_contains':\n case 'string_doesNotContain':\n case 'string_matches':\n case 'string_doesNotMatch':\n return { type, reference: typeof reference === 'string' ? reference : '' };\n case 'string_containsFuzzyMatch':\n return {\n type,\n reference: typeof reference === 'string' ? reference : '',\n maxEdits: 2,\n substitutionsOnly: false,\n wildcard: undefined,\n };\n default:\n throw Error(`unsupported filter type: ${type satisfies never}`);\n }\n}\n\nexport function changeFilter(\n filter: PlTableFilter,\n type: PlTableFilterType,\n discreteOptions: ListOption<number | string>[],\n): PlTableFilter {\n let reference = getFilterReference(filter);\n if (isFilterDiscreteType(type)\n && discreteOptions !== undefined\n && discreteOptions.length > 0\n && !discreteOptions.some((option) => option.value === reference)) {\n reference = discreteOptions[0].value;\n }\n return getFilterDefault(type, reference);\n}\n\nexport function parseNumber(column: PTableColumnSpec, value: string): number {\n const parsed = Number(value);\n if (!Number.isFinite(parsed)) throw Error('Model value is not a number.');\n\n const type = column.type === 'column' ? column.spec.valueType : column.spec.type;\n if ((type === 'Int' || type === 'Long') && !Number.isInteger(parsed)) throw Error('Model value is not an integer.');\n\n const min = readAnnotationJson(column.spec, Annotation.Min);\n if (min !== undefined) {\n if (Number.isFinite(min) && parsed < min) {\n throw Error('Model value is too low.');\n }\n }\n\n const max = readAnnotationJson(column.spec, Annotation.Max);\n if (max !== undefined) {\n if (Number.isFinite(max) && parsed > max) {\n throw Error('Model value is too high.');\n }\n }\n\n return parsed;\n}\n\nexport function parseString(column: PTableColumnSpec, value: string): string {\n const alphabet = readDomain(column.spec, Domain.Alphabet) ?? readAnnotation(column.spec, Annotation.Alphabet);\n if (alphabet === 'nucleotide' && !/^[AaTtGgCcNn]+$/.test(value)) throw Error('Model value is not a nucleotide.');\n if (alphabet === 'aminoacid' && !/^[AaCcDdEeFfGgHhIiKkLlMmNnPpQqRrSsTtVvWwYyXx*_]+$/.test(value)) throw Error('Model value is not an aminoacid.');\n return value;\n}\n\nexport function parseRegex(value: string): string {\n try {\n new RegExp(value);\n return value;\n } catch (err: unknown) {\n if (err instanceof SyntaxError) throw Error('Model value is not a regexp.');\n throw err;\n }\n}\n\nexport function makeWildcardOptions(\n column: PTableColumnSpec,\n reference: string,\n): ListOption<string>[] {\n const alphabet = readDomain(column.spec, Domain.Alphabet) ?? readAnnotation(column.spec, Annotation.Alphabet);\n if (alphabet === 'nucleotide') {\n return [{\n label: 'N',\n value: 'N',\n }];\n }\n if (alphabet === 'aminoacid') {\n return [{\n label: 'X',\n value: 'X',\n }];\n }\n\n const chars = [...new Set<string>(reference).keys()];\n return chars.sort().map((char) => ({\n label: char,\n value: char,\n }));\n}\n\nexport function makeDiscreteOptions(column: PTableColumnSpec): ListOption<number | string>[] {\n const discreteValuesAnnotation = readAnnotation(column.spec, Annotation.DiscreteValues);\n if (!discreteValuesAnnotation) return [];\n\n try {\n const discreteValues = parseJson<number[] | string[]>(discreteValuesAnnotation);\n return discreteValues.map((v) => ({\n label: `${v}`,\n value: v,\n }));\n } catch (err: unknown) {\n console.error(`Column ${column.id} has invalid '${Annotation.DiscreteValues}' annotation: '${discreteValuesAnnotation}'`, err);\n return [];\n }\n}\n\nexport function isAlphabetic(column: PTableColumnSpec): boolean {\n return semver.gt(getRawPlatformaInstance().sdkInfo.sdkVersion, '1.14.0')\n && (column.type === 'column' ? column.spec.valueType : column.spec.type) === 'String'\n && (readDomain(column.spec, Domain.Alphabet) ?? readAnnotation(column.spec, Annotation.Alphabet)) !== undefined;\n}\n\nexport function makePredicate(alphabetic: boolean, filter: PlTableFilter): SingleValuePredicateV2 {\n const type = filter.type;\n switch (type) {\n case 'isNotNA':\n return {\n operator: 'Not',\n operand: {\n operator: 'IsNA',\n },\n };\n case 'isNA':\n return {\n operator: 'IsNA',\n };\n case 'number_equals':\n return {\n operator: 'Equal',\n reference: filter.reference,\n };\n case 'string_equals':\n return {\n operator: alphabetic ? 'IEqual' : 'Equal',\n reference: filter.reference as string,\n };\n case 'number_notEquals':\n return {\n operator: 'Not',\n operand: {\n operator: 'Equal',\n reference: filter.reference,\n },\n };\n case 'string_notEquals':\n return {\n operator: 'Not',\n operand: {\n operator: alphabetic ? 'IEqual' : 'Equal',\n reference: filter.reference,\n },\n };\n case 'number_greaterThan':\n return {\n operator: 'Greater',\n reference: filter.reference,\n };\n case 'number_greaterThanOrEqualTo':\n return {\n operator: 'GreaterOrEqual',\n reference: filter.reference,\n };\n case 'number_lessThan':\n return {\n operator: 'Less',\n reference: filter.reference,\n };\n case 'number_lessThanOrEqualTo':\n return {\n operator: 'LessOrEqual',\n reference: filter.reference,\n };\n case 'number_between':\n return {\n operator: 'And',\n operands: [\n {\n operator: filter.includeLowerBound ? 'GreaterOrEqual' : 'Greater',\n reference: filter.lowerBound,\n },\n {\n operator: filter.includeUpperBound ? 'LessOrEqual' : 'Less',\n reference: filter.upperBound,\n },\n ],\n };\n case 'string_contains':\n return {\n operator: alphabetic ? 'StringIContains' : 'StringContains',\n substring: filter.reference,\n };\n case 'string_doesNotContain':\n return {\n operator: 'Not',\n operand: {\n operator: alphabetic ? 'StringIContains' : 'StringContains',\n substring: filter.reference,\n },\n };\n case 'string_matches':\n return {\n operator: 'Matches',\n regex: filter.reference,\n };\n case 'string_doesNotMatch':\n return {\n operator: 'Not',\n operand: {\n operator: 'Matches',\n regex: filter.reference,\n },\n };\n case 'string_containsFuzzyMatch':\n return {\n operator: alphabetic ? 'StringIContainsFuzzy' : 'StringContainsFuzzy',\n reference: filter.reference,\n maxEdits: filter.maxEdits,\n substitutionsOnly: filter.substitutionsOnly,\n wildcard: filter.wildcard,\n };\n default:\n throw Error(`unsupported filter type: ${type satisfies never}`);\n }\n}\n"],"names":["isFilterValid","filter","options","discreteOptions","o","isFilterDiscreteType","reference","getFilterReference","option","getFilterLabel","type","filterTypesNumber","filterTypesString","getFilterOptions","column","filterTypesDiscrete","isFilterDiscrete","getColumnName","index","readAnnotation","Annotation","getFilterDefault","changeFilter","parseNumber","value","parsed","min","readAnnotationJson","max","parseString","alphabet","readDomain","Domain","parseRegex","err","makeWildcardOptions","char","makeDiscreteOptions","discreteValuesAnnotation","parseJson","v","isAlphabetic","semver","getRawPlatformaInstance","makePredicate","alphabetic"],"mappings":"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"}
|
package/dist/defineApp.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { notEmpty as
|
|
2
|
-
import { getPlatformaApiVersion as
|
|
1
|
+
import { notEmpty as V } from "./lib/util/helpers/dist/index.js";
|
|
2
|
+
import { getPlatformaApiVersion as g } from "./sdk/model/dist/index.js";
|
|
3
3
|
import { inject as k, reactive as h, markRaw as A } from "vue";
|
|
4
4
|
import { createAppV1 as j } from "./internal/createAppV1.js";
|
|
5
5
|
import { createAppV2 as w } from "./internal/createAppV2.js";
|
|
@@ -9,18 +9,18 @@ const m = Symbol("sdk-vue");
|
|
|
9
9
|
function $() {
|
|
10
10
|
return k(m);
|
|
11
11
|
}
|
|
12
|
-
function C(e, p,
|
|
12
|
+
function C(e, p, d = {}) {
|
|
13
13
|
let u;
|
|
14
14
|
y();
|
|
15
|
-
const
|
|
16
|
-
if (f !==
|
|
17
|
-
throw new Error(`Block requested API version ${f} but runtime API version is ${
|
|
15
|
+
const l = e.apiVersion ?? 1, f = g(), b = async () => {
|
|
16
|
+
if (f !== l)
|
|
17
|
+
throw new Error(`Block requested API version ${f} but runtime API version is ${l}.
|
|
18
18
|
Please update the desktop app to use the latest API version.`);
|
|
19
|
-
e.apiVersion === void 0 || e.apiVersion === 1 ? await e.loadBlockState().then((
|
|
19
|
+
e.apiVersion === void 0 || e.apiVersion === 1 ? await e.loadBlockState().then((r) => {
|
|
20
20
|
a.loaded = !0;
|
|
21
|
-
const t = j(
|
|
22
|
-
Object.entries(i.routes).map(([s,
|
|
23
|
-
const n = typeof
|
|
21
|
+
const t = j(r, e, d), i = p(t), c = Object.fromEntries(
|
|
22
|
+
Object.entries(i.routes).map(([s, o]) => {
|
|
23
|
+
const n = typeof o == "function" ? o() : o;
|
|
24
24
|
return [s, A(n)];
|
|
25
25
|
})
|
|
26
26
|
);
|
|
@@ -30,19 +30,19 @@ function C(e, p, l = {}) {
|
|
|
30
30
|
return c[s];
|
|
31
31
|
}
|
|
32
32
|
});
|
|
33
|
-
}) : e.apiVersion === 2 && await e.loadBlockState().then((
|
|
34
|
-
const t = O(
|
|
33
|
+
}) : e.apiVersion === 2 && await e.loadBlockState().then((r) => {
|
|
34
|
+
const t = O(r);
|
|
35
35
|
a.loaded = !0;
|
|
36
|
-
const i = w(t, e,
|
|
37
|
-
Object.entries(c.routes).map(([
|
|
36
|
+
const i = w(t, e, d), c = p(i), s = Object.fromEntries(
|
|
37
|
+
Object.entries(c.routes).map(([o, n]) => {
|
|
38
38
|
const v = typeof n == "function" ? n() : n;
|
|
39
|
-
return [
|
|
39
|
+
return [o, A(v)];
|
|
40
40
|
})
|
|
41
41
|
);
|
|
42
42
|
u = Object.assign(i, {
|
|
43
43
|
...c,
|
|
44
|
-
getRoute(
|
|
45
|
-
return s[
|
|
44
|
+
getRoute(o) {
|
|
45
|
+
return s[o];
|
|
46
46
|
}
|
|
47
47
|
});
|
|
48
48
|
});
|
|
@@ -51,12 +51,12 @@ function C(e, p, l = {}) {
|
|
|
51
51
|
error: void 0,
|
|
52
52
|
// Href to get typed query parameters for a specific route
|
|
53
53
|
useApp() {
|
|
54
|
-
return
|
|
54
|
+
return V(u, "App is not loaded");
|
|
55
55
|
},
|
|
56
56
|
// @todo type portability issue with Vue
|
|
57
57
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
58
|
-
install(
|
|
59
|
-
|
|
58
|
+
install(r) {
|
|
59
|
+
r.provide(m, this), b().catch((t) => {
|
|
60
60
|
console.error("load initial state error", t), a.error = t;
|
|
61
61
|
});
|
|
62
62
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var i = (e, t, r) =>
|
|
1
|
+
var c = Object.defineProperty;
|
|
2
|
+
var u = (e, t, r) => t in e ? c(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r;
|
|
3
|
+
var i = (e, t, r) => u(e, typeof t != "symbol" ? t + "" : t, r);
|
|
4
4
|
import { delay as a } from "../lib/util/helpers/dist/index.js";
|
|
5
5
|
import "../sdk/model/dist/index.js";
|
|
6
6
|
import { hasAbortError as h } from "../lib/model/common/dist/index.js";
|