@gooddata/sdk-code-convertors 11.51.0-alpha.3 → 11.51.0-alpha.4

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.
@@ -0,0 +1,50 @@
1
+ import { YAMLMap } from "yaml";
2
+ import { type IAbsoluteDateFilter, type IFilter, type IMeasureValueFilterBody, type INegativeAttributeFilterBody, type IPositiveAttributeFilterBody, type IRankingFilterBody, type IRelativeDateFilter } from "@gooddata/sdk-model";
3
+ import { type FromEntities } from "../types.js";
4
+ import { type IErrorContext } from "../utils/errors.js";
5
+ /** @internal */
6
+ export type YamlFilterMapEntry = {
7
+ yaml: YAMLMap;
8
+ filter: IFilter;
9
+ };
10
+ /** @internal */
11
+ export type YamlFilters = {
12
+ filtersMap: Record<string, YamlFilterMapEntry>;
13
+ filtersArray: YAMLMap;
14
+ };
15
+ /** @internal Claims a document-unique key, given the name a filter's content suggests. */
16
+ export type ClaimFilterKey = (baseKey: string) => string;
17
+ /** @internal */
18
+ export type WrittenFilter = {
19
+ key: string;
20
+ yaml: YAMLMap;
21
+ filter: IFilter;
22
+ };
23
+ /** @internal */
24
+ export declare function declarativeFiltersToYaml(entities: FromEntities, filters: IFilter[], errorContext?: IErrorContext): YamlFilters;
25
+ /** @internal */
26
+ export type DateFilterEmitOptions = {
27
+ entities: FromEntities;
28
+ claimKey: ClaimFilterKey;
29
+ connectedAttributeFilters?: IFilter[];
30
+ errorContext?: IErrorContext;
31
+ };
32
+ /** @internal */
33
+ export declare function declarativeAbsoluteDateFilterToYaml(absoluteDateFilter: IAbsoluteDateFilter["absoluteDateFilter"], { entities, claimKey, connectedAttributeFilters, errorContext }: DateFilterEmitOptions): {
34
+ yaml: YAMLMap;
35
+ carried: WrittenFilter[];
36
+ };
37
+ /** @internal */
38
+ export declare function declarativeRelativeDateFilterToYaml(relativeDateFilter: IRelativeDateFilter["relativeDateFilter"], { entities, claimKey, connectedAttributeFilters, errorContext }: DateFilterEmitOptions): {
39
+ yaml: YAMLMap;
40
+ carried: WrittenFilter[];
41
+ };
42
+ /** @internal */
43
+ export declare function declarativePositiveAttributeFilterToYaml(entities: FromEntities, attributeFilter: IPositiveAttributeFilterBody, errorContext?: IErrorContext): YAMLMap;
44
+ /** @internal */
45
+ export declare function declarativeNegativeAttributeFilterToYaml(entities: FromEntities, attributeFilter: INegativeAttributeFilterBody, errorContext?: IErrorContext): YAMLMap;
46
+ /** @internal */
47
+ export declare function declarativeMeasureValueFilterToYaml(measureValueFilter: IMeasureValueFilterBody, errorContext?: IErrorContext): YAMLMap;
48
+ /** @internal */
49
+ export declare function declarativeRankingFilterToYaml(rankingFilter: IRankingFilterBody, errorContext?: IErrorContext): YAMLMap;
50
+ //# sourceMappingURL=filtersToYaml.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filtersToYaml.d.ts","sourceRoot":"","sources":["../../src/from/filtersToYaml.ts"],"names":[],"mappings":"AAEA,OAAO,EAAQ,OAAO,EAAW,MAAM,MAAM,CAAC;AAG9C,OAAO,EACH,KAAK,mBAAmB,EAGxB,KAAK,OAAO,EAEZ,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,EACjC,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAsB3B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAiB,KAAK,aAAa,EAAgC,MAAM,oBAAoB,CAAC;AAKrG,gBAAgB;AAChB,MAAM,MAAM,kBAAkB,GAAG;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,gBAAgB;AAChB,MAAM,MAAM,WAAW,GAAG;IACtB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC/C,YAAY,EAAE,OAAO,CAAC;CACzB,CAAC;AAmHF,0FAA0F;AAC1F,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;AAEzD,gBAAgB;AAChB,MAAM,MAAM,aAAa,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;AAK5E,gBAAgB;AAChB,wBAAgB,wBAAwB,CACpC,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,OAAO,EAAE,EAClB,YAAY,CAAC,EAAE,aAAa,GAC7B,WAAW,CAsEb;AA+JD,gBAAgB;AAChB,MAAM,MAAM,qBAAqB,GAAG;IAChC,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,cAAc,CAAC;IACzB,yBAAyB,CAAC,EAAE,OAAO,EAAE,CAAC;IACtC,YAAY,CAAC,EAAE,aAAa,CAAC;CAChC,CAAC;AAEF,gBAAgB;AAChB,wBAAgB,mCAAmC,CAC/C,kBAAkB,EAAE,mBAAmB,CAAC,oBAAoB,CAAC,EAC7D,EAAE,QAAQ,EAAE,QAAQ,EAAE,yBAA8B,EAAE,YAAY,EAAE,EAAE,qBAAqB,GAC5F;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,aAAa,EAAE,CAAA;CAAE,CA8B7C;AAgBD,gBAAgB;AAChB,wBAAgB,mCAAmC,CAC/C,kBAAkB,EAAE,mBAAmB,CAAC,oBAAoB,CAAC,EAC7D,EAAE,QAAQ,EAAE,QAAQ,EAAE,yBAA8B,EAAE,YAAY,EAAE,EAAE,qBAAqB,GAC5F;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,aAAa,EAAE,CAAA;CAAE,CAsC7C;AAsBD,gBAAgB;AAChB,wBAAgB,wCAAwC,CACpD,QAAQ,EAAE,YAAY,EACtB,eAAe,EAAE,4BAA4B,EAC7C,YAAY,CAAC,EAAE,aAAa,GAC7B,OAAO,CAkBT;AAED,gBAAgB;AAChB,wBAAgB,wCAAwC,CACpD,QAAQ,EAAE,YAAY,EACtB,eAAe,EAAE,4BAA4B,EAC7C,YAAY,CAAC,EAAE,aAAa,GAC7B,OAAO,CAyBT;AAmJD,gBAAgB;AAChB,wBAAgB,mCAAmC,CAC/C,kBAAkB,EAAE,uBAAuB,EAC3C,YAAY,CAAC,EAAE,aAAa,GAC7B,OAAO,CA4DT;AAED,gBAAgB;AAChB,wBAAgB,8BAA8B,CAC1C,aAAa,EAAE,kBAAkB,EACjC,YAAY,CAAC,EAAE,aAAa,GAC7B,OAAO,CAmDT"}
@@ -0,0 +1,508 @@
1
+ // (C) 2023-2026 GoodData Corporation
2
+ import { Pair, YAMLMap, YAMLSeq } from "yaml";
3
+ import { filterAttributeElements, filterObjRef, getAttributeElementsItems, isAbsoluteDateFilter, isArbitraryAttributeFilter, isAttributeElementsByRef, isAttributeElementsByValue, isComparisonCondition, isDateFilter, isFilter, isLocalIdRef, isMatchAttributeFilter, isMeasureValueFilter, isNegativeAttributeFilter, isPositiveAttributeFilter, isRangeCondition, isRankingFilter, isRelativeDateFilter, serializeObjRef, } from "@gooddata/sdk-model";
4
+ import { CoreErrorCode, newError, updateErrorContext } from "../utils/errors.js";
5
+ import { matchConditionToYaml, parseDateValues } from "../utils/filterUtils.js";
6
+ import { parseGranularity } from "../utils/granularityUtils.js";
7
+ import { createFilterItemKeyName, getIdentifier } from "../utils/yamlUtils.js";
8
+ function detectEmptyValuesFilterType(filter) {
9
+ const attributeElements = filterAttributeElements(filter);
10
+ const items = attributeElements ? getAttributeElementsItems(attributeElements) : [];
11
+ if (items.length !== 1 || items[0] !== "") {
12
+ return undefined;
13
+ }
14
+ return isPositiveAttributeFilter(filter) ? "only" : "exclude";
15
+ }
16
+ function getObjRefGroupingKey(objRef) {
17
+ if (!objRef || typeof objRef !== "object") {
18
+ return undefined;
19
+ }
20
+ if ("identifier" in objRef) {
21
+ const identifier = objRef.identifier;
22
+ if (typeof identifier === "string") {
23
+ return identifier;
24
+ }
25
+ if (identifier && typeof identifier === "object" && "id" in identifier) {
26
+ const id = identifier.id;
27
+ if (typeof id === "string") {
28
+ return id;
29
+ }
30
+ }
31
+ }
32
+ if ("uri" in objRef) {
33
+ const uri = objRef.uri;
34
+ if (typeof uri === "string") {
35
+ return uri;
36
+ }
37
+ }
38
+ if ("localIdentifier" in objRef) {
39
+ const localIdentifier = objRef.localIdentifier;
40
+ if (typeof localIdentifier === "string") {
41
+ return localIdentifier;
42
+ }
43
+ }
44
+ return serializeObjRef(objRef);
45
+ }
46
+ /**
47
+ * Groups date filters with their associated attribute filters. Leaves the rest alone.
48
+ */
49
+ function groupFiltersByDateFilter(filters) {
50
+ const dateFilters = [...filters].filter(isDateFilter);
51
+ const nonDateFilters = [...filters].filter((f) => !isDateFilter(f));
52
+ const result = { grouped: {}, rest: [] };
53
+ const getFilterRefDetails = (filter) => {
54
+ const objRef = filterObjRef(filter);
55
+ if (!objRef) {
56
+ return {
57
+ objRef: undefined,
58
+ filterRef: undefined,
59
+ };
60
+ }
61
+ return {
62
+ objRef,
63
+ filterRef: getObjRefGroupingKey(objRef),
64
+ };
65
+ };
66
+ dateFilters.forEach((dateFilter) => {
67
+ const { filterRef: datasetId } = getFilterRefDetails(dateFilter);
68
+ const fi = filters.indexOf(dateFilter);
69
+ if (datasetId === undefined) {
70
+ result.rest.push([dateFilter, fi]);
71
+ return;
72
+ }
73
+ if (result.grouped[datasetId]) {
74
+ result.rest.push([dateFilter, fi]);
75
+ }
76
+ else {
77
+ result.grouped[datasetId] = { dateFilter: [dateFilter, fi], attributeFilters: [] };
78
+ }
79
+ });
80
+ nonDateFilters.forEach((filter) => {
81
+ const { filterRef: filterId } = getFilterRefDetails(filter);
82
+ const fi = filters.indexOf(filter);
83
+ if (filterId === undefined) {
84
+ result.rest.push([filter, fi]);
85
+ return;
86
+ }
87
+ const datasetId = filterId.split(".")[0];
88
+ const group = result.grouped[datasetId];
89
+ if (group) {
90
+ group.attributeFilters.push([filter, fi]);
91
+ }
92
+ else {
93
+ result.rest.push([filter, fi]);
94
+ }
95
+ });
96
+ return result;
97
+ }
98
+ /** @internal */
99
+ export function declarativeFiltersToYaml(entities, filters, errorContext) {
100
+ const filtersArray = [];
101
+ const filtersMap = {};
102
+ const usedKeys = new Set();
103
+ const claimKey = (baseKey) => {
104
+ let key = baseKey;
105
+ let suffix = 2;
106
+ while (usedKeys.has(key)) {
107
+ key = `${baseKey}_${suffix}`;
108
+ suffix += 1;
109
+ }
110
+ usedKeys.add(key);
111
+ return key;
112
+ };
113
+ // A carried filter is reachable by name for its config, but is not a filter of the query's own.
114
+ const fold = ({ carried = [], ...written }) => {
115
+ filtersArray.push(new Pair(written.key, written.yaml));
116
+ [written, ...carried].forEach(({ key, yaml, filter }) => {
117
+ filtersMap[key] = { yaml, filter };
118
+ });
119
+ };
120
+ const filtersGroupedByDateFilter = groupFiltersByDateFilter(filters);
121
+ filtersGroupedByDateFilter.rest.forEach(([filter, fi]) => {
122
+ const result = declarativeFilterToYaml(entities, filter, claimKey, undefined, updateErrorContext(errorContext, {
123
+ path: [fi.toString()],
124
+ }));
125
+ if (!result) {
126
+ return;
127
+ }
128
+ fold(result);
129
+ });
130
+ Object.values(filtersGroupedByDateFilter.grouped).forEach(({ dateFilter, attributeFilters }) => {
131
+ const result = declarativeFilterToYaml(entities, dateFilter[0], claimKey, attributeFilters.map(([f]) => f), updateErrorContext(errorContext, {
132
+ path: [dateFilter[1].toString()],
133
+ }));
134
+ if (!result) {
135
+ return;
136
+ }
137
+ fold(result);
138
+ });
139
+ return {
140
+ filtersMap,
141
+ filtersArray: filtersArray.reduce((map, filter) => {
142
+ map.add(filter);
143
+ return map;
144
+ }, new YAMLMap()),
145
+ };
146
+ }
147
+ function declarativeFilterToYaml(entities, filter, claimKey, connectedAttributeFilters, errorContext) {
148
+ if (!isFilter(filter)) {
149
+ return null;
150
+ }
151
+ const key = claimKey(createFilterItemKeyName(filter, "date", updateErrorContext(errorContext, {
152
+ path: ["date"],
153
+ })));
154
+ if (isAbsoluteDateFilter(filter)) {
155
+ const { yaml, carried } = declarativeAbsoluteDateFilterToYaml(filter.absoluteDateFilter, {
156
+ entities,
157
+ claimKey,
158
+ connectedAttributeFilters,
159
+ errorContext: updateErrorContext(errorContext, { path: ["absoluteDateFilter"] }),
160
+ });
161
+ return { key, yaml, filter, carried };
162
+ }
163
+ if (isRelativeDateFilter(filter)) {
164
+ const { yaml, carried } = declarativeRelativeDateFilterToYaml(filter.relativeDateFilter, {
165
+ entities,
166
+ claimKey,
167
+ connectedAttributeFilters,
168
+ errorContext: updateErrorContext(errorContext, { path: ["relativeDateFilter"] }),
169
+ });
170
+ return { key, yaml, filter, carried };
171
+ }
172
+ if (isPositiveAttributeFilter(filter)) {
173
+ return {
174
+ key,
175
+ yaml: declarativePositiveAttributeFilterToYaml(entities, filter.positiveAttributeFilter, updateErrorContext(errorContext, {
176
+ path: ["positiveAttributeFilter"],
177
+ })),
178
+ filter,
179
+ };
180
+ }
181
+ if (isNegativeAttributeFilter(filter)) {
182
+ return {
183
+ key,
184
+ yaml: declarativeNegativeAttributeFilterToYaml(entities, filter.negativeAttributeFilter, updateErrorContext(errorContext, {
185
+ path: ["negativeAttributeFilter"],
186
+ })),
187
+ filter,
188
+ };
189
+ }
190
+ if (isArbitraryAttributeFilter(filter)) {
191
+ return {
192
+ key,
193
+ yaml: declarativeArbitraryAttributeFilterToYaml(filter.arbitraryAttributeFilter, updateErrorContext(errorContext, {
194
+ path: ["arbitraryAttributeFilter"],
195
+ })),
196
+ filter,
197
+ };
198
+ }
199
+ if (isMatchAttributeFilter(filter)) {
200
+ return {
201
+ key,
202
+ yaml: declarativeMatchAttributeFilterToYaml(filter.matchAttributeFilter, updateErrorContext(errorContext, {
203
+ path: ["matchAttributeFilter"],
204
+ })),
205
+ filter,
206
+ };
207
+ }
208
+ if (isMeasureValueFilter(filter)) {
209
+ return {
210
+ key,
211
+ yaml: declarativeMeasureValueFilterToYaml(filter.measureValueFilter, updateErrorContext(errorContext, {
212
+ path: ["measureValueFilter"],
213
+ })),
214
+ filter,
215
+ };
216
+ }
217
+ if (isRankingFilter(filter)) {
218
+ return {
219
+ key,
220
+ yaml: declarativeRankingFilterToYaml(filter.rankingFilter, updateErrorContext(errorContext, {
221
+ path: ["rankingFilter"],
222
+ })),
223
+ filter,
224
+ };
225
+ }
226
+ throw newError(CoreErrorCode.FilterItemTypeNotSupported, [JSON.stringify(filter)], errorContext);
227
+ }
228
+ /** Adds `empty_values` and `with` to `map`, returning the filters written under the latter. */
229
+ function processConnectedAttributeFilters(map, connectedAttributeFilters, entities, claimKey, errorContext) {
230
+ // empty values filter
231
+ const emptyValuesFilter = connectedAttributeFilters.find((filter) => detectEmptyValuesFilterType(filter));
232
+ if (emptyValuesFilter) {
233
+ map.add(new Pair("empty_values", detectEmptyValuesFilterType(emptyValuesFilter)));
234
+ }
235
+ // additional attribute filters
236
+ const additionalAttributeFilters = connectedAttributeFilters.filter((filter) => filter !== emptyValuesFilter);
237
+ if (additionalAttributeFilters.length === 0) {
238
+ return [];
239
+ }
240
+ const withMap = new YAMLMap();
241
+ map.add(new Pair("with", withMap));
242
+ return additionalAttributeFilters.flatMap((filter) => {
243
+ const written = declarativeFilterToYaml(entities, filter, claimKey, undefined, errorContext);
244
+ if (!written) {
245
+ return [];
246
+ }
247
+ withMap.add(new Pair(written.key, written.yaml));
248
+ return [written, ...(written.carried ?? [])];
249
+ });
250
+ }
251
+ /** @internal */
252
+ export function declarativeAbsoluteDateFilterToYaml(absoluteDateFilter, { entities, claimKey, connectedAttributeFilters = [], errorContext }) {
253
+ const map = new YAMLMap();
254
+ // base date filter attributes
255
+ map.add(new Pair("type", "date_filter"));
256
+ map.add(new Pair("from", absoluteDateFilter.from));
257
+ map.add(new Pair("to", absoluteDateFilter.to));
258
+ const id = getIdentifier(absoluteDateFilter.dataSet, true, updateErrorContext(errorContext, {
259
+ path: ["dateSet"],
260
+ }));
261
+ map.add(new Pair("using", id));
262
+ // connected attribute filters
263
+ const carried = processConnectedAttributeFilters(map, connectedAttributeFilters, entities, claimKey, errorContext);
264
+ return { yaml: map, carried };
265
+ }
266
+ function isRelativeDateFilterAllTime(relativeDateFilter) {
267
+ const { granularity, from, to } = relativeDateFilter;
268
+ // This should be enough to tell the type is IRelativeDateFilterAllTimeBody
269
+ if (granularity === "ALL_TIME_GRANULARITY") {
270
+ return true;
271
+ }
272
+ // But unfortunately AD emits granularity as GDC.time.year for an all time date filter, so we need this check as well
273
+ return granularity === "GDC.time.year" && from === undefined && to === undefined;
274
+ }
275
+ /** @internal */
276
+ export function declarativeRelativeDateFilterToYaml(relativeDateFilter, { entities, claimKey, connectedAttributeFilters = [], errorContext }) {
277
+ const map = new YAMLMap();
278
+ map.add(new Pair("type", "date_filter"));
279
+ if (isRelativeDateFilterAllTime(relativeDateFilter)) {
280
+ // Do not add anything
281
+ }
282
+ else {
283
+ // Add granularity
284
+ if (relativeDateFilter.granularity) {
285
+ map.add(new Pair("granularity", parseGranularity(relativeDateFilter.granularity)));
286
+ }
287
+ // Add from/to only if both are defined
288
+ if (relativeDateFilter.from !== undefined && relativeDateFilter.to !== undefined) {
289
+ map.add(new Pair("from", relativeDateFilter.from));
290
+ map.add(new Pair("to", relativeDateFilter.to));
291
+ }
292
+ }
293
+ const id = getIdentifier(relativeDateFilter.dataSet, true, updateErrorContext(errorContext, {
294
+ path: ["dataSet"],
295
+ }));
296
+ map.add(new Pair("using", id));
297
+ const carried = processConnectedAttributeFilters(map, connectedAttributeFilters, entities, claimKey, errorContext);
298
+ return { yaml: map, carried };
299
+ }
300
+ /**
301
+ * A selection given by uri has no form here: written without any `state` it reads back as listing none,
302
+ * which an attribute filter takes to mean every element.
303
+ */
304
+ function attributeElementValues(elements, field, errorContext) {
305
+ if (!isAttributeElementsByValue(elements)) {
306
+ throw newError(CoreErrorCode.ItemNotSupported, ["attribute elements not given by value"], updateErrorContext(errorContext, { path: [field] }));
307
+ }
308
+ // An empty string is a valid attribute element value.
309
+ return elements.values.filter((v) => v !== null && v !== undefined);
310
+ }
311
+ /** @internal */
312
+ export function declarativePositiveAttributeFilterToYaml(entities, attributeFilter, errorContext) {
313
+ const map = new YAMLMap();
314
+ map.add(new Pair("type", "attribute_filter"));
315
+ const id = getIdentifier(attributeFilter.displayForm, undefined, updateErrorContext(errorContext, {
316
+ path: ["displayForm"],
317
+ }));
318
+ map.add(new Pair("using", id));
319
+ const values = attributeElementValues(attributeFilter.in, "in", errorContext);
320
+ map.add(new Pair("state", new Pair("include", parseDateValues(entities, id, values))));
321
+ return map;
322
+ }
323
+ /** @internal */
324
+ export function declarativeNegativeAttributeFilterToYaml(entities, attributeFilter, errorContext) {
325
+ const map = new YAMLMap();
326
+ map.add(new Pair("type", "attribute_filter"));
327
+ const id = getIdentifier(attributeFilter.displayForm, undefined, updateErrorContext(errorContext, {
328
+ path: ["displayForm"],
329
+ }));
330
+ map.add(new Pair("using", id));
331
+ // An exclusion of nothing is what a filter with no `state` reads back as, so its form is immaterial.
332
+ const excludesNothingByRef = isAttributeElementsByRef(attributeFilter.notIn) && attributeFilter.notIn.uris.length === 0;
333
+ const values = excludesNothingByRef
334
+ ? []
335
+ : attributeElementValues(attributeFilter.notIn, "notIn", errorContext);
336
+ if (values.length > 0) {
337
+ map.add(new Pair("state", new Pair("exclude", parseDateValues(entities, id, values))));
338
+ }
339
+ return map;
340
+ }
341
+ function declarativeArbitraryAttributeFilterToYaml(attributeFilter, errorContext) {
342
+ const map = new YAMLMap();
343
+ map.add(new Pair("type", "text_filter"));
344
+ map.add(new Pair("using", getIdentifier(attributeFilter.label, undefined, updateErrorContext(errorContext, {
345
+ path: ["label"],
346
+ }))));
347
+ map.add(new Pair("condition", attributeFilter.negativeSelection ? "isNot" : "is"));
348
+ map.add(new Pair("values", attributeFilter.values));
349
+ return map;
350
+ }
351
+ function declarativeMatchAttributeFilterToYaml(attributeFilter, errorContext) {
352
+ const map = new YAMLMap();
353
+ map.add(new Pair("type", "text_filter"));
354
+ map.add(new Pair("using", getIdentifier(attributeFilter.label, undefined, updateErrorContext(errorContext, {
355
+ path: ["label"],
356
+ }))));
357
+ map.add(new Pair("condition", matchConditionToYaml(attributeFilter.operator, attributeFilter.negativeSelection)));
358
+ map.add(new Pair("value", attributeFilter.literal));
359
+ if (attributeFilter.caseSensitive !== undefined) {
360
+ map.add(new Pair("case_sensitive", attributeFilter.caseSensitive));
361
+ }
362
+ return map;
363
+ }
364
+ function asCompoundCondition(condition) {
365
+ const { compound } = condition;
366
+ return Array.isArray(compound?.conditions) ? compound : null;
367
+ }
368
+ function addConditionsToYaml(map, conditions, options) {
369
+ const { nullsCountAsZero, errorContext } = options;
370
+ const conditionsSeq = new YAMLSeq();
371
+ let treatNullValuesAsZero = nullsCountAsZero;
372
+ conditions.forEach((condition) => {
373
+ const conditionMap = new YAMLMap();
374
+ if (addConditionToYamlMap(conditionMap, condition, errorContext)) {
375
+ treatNullValuesAsZero = true;
376
+ }
377
+ conditionsSeq.add(conditionMap);
378
+ });
379
+ map.add(new Pair("conditions", conditionsSeq));
380
+ if (treatNullValuesAsZero) {
381
+ map.add(new Pair("null_values_as_zero", true));
382
+ }
383
+ }
384
+ /** Nulls are recorded only as counting for zero or not, so any other stand-in has no form here. */
385
+ function assertNullsCountAsZero(treatNullValuesAs, errorContext) {
386
+ if (treatNullValuesAs !== undefined && treatNullValuesAs !== 0) {
387
+ throw newError(CoreErrorCode.ItemNotSupported, [`null values treated as ${treatNullValuesAs}`], updateErrorContext(errorContext, { path: ["treatNullValuesAs"] }));
388
+ }
389
+ }
390
+ function addSingleConditionToYaml(map, condition, errorContext) {
391
+ // A lone condition carries the flag itself, where a list lifts it out over all of them.
392
+ const nullsCountAsZero = addConditionToYamlMap(map, condition, errorContext);
393
+ map.add(new Pair("null_values_as_zero", nullsCountAsZero));
394
+ }
395
+ function addConditionToYamlMap(conditionMap, condition, errorContext) {
396
+ let hasTreatNullValues = false;
397
+ if (isComparisonCondition(condition)) {
398
+ const comp = condition.comparison;
399
+ assertNullsCountAsZero(comp.treatNullValuesAs, errorContext);
400
+ conditionMap.add(new Pair("condition", comp.operator.toUpperCase()));
401
+ conditionMap.add(new Pair("value", comp.value));
402
+ if (comp.treatNullValuesAs !== undefined) {
403
+ hasTreatNullValues = true;
404
+ }
405
+ }
406
+ else if (isRangeCondition(condition)) {
407
+ const range = condition.range;
408
+ assertNullsCountAsZero(range.treatNullValuesAs, errorContext);
409
+ conditionMap.add(new Pair("condition", range.operator.toUpperCase()));
410
+ conditionMap.add(new Pair("from", range.from));
411
+ conditionMap.add(new Pair("to", range.to));
412
+ if (range.treatNullValuesAs !== undefined) {
413
+ hasTreatNullValues = true;
414
+ }
415
+ }
416
+ else {
417
+ throw newError(CoreErrorCode.ItemNotSupported, [`condition ${JSON.stringify(condition)}`], errorContext);
418
+ }
419
+ return hasTreatNullValues;
420
+ }
421
+ /** @internal */
422
+ export function declarativeMeasureValueFilterToYaml(measureValueFilter, errorContext) {
423
+ const map = new YAMLMap();
424
+ map.add(new Pair("type", "metric_value_filter"));
425
+ if (isLocalIdRef(measureValueFilter.measure)) {
426
+ map.add(new Pair("using", measureValueFilter.measure.localIdentifier));
427
+ }
428
+ else {
429
+ map.add(new Pair("using", getIdentifier(measureValueFilter.measure, undefined, updateErrorContext(errorContext, {
430
+ path: ["measure"],
431
+ }))));
432
+ }
433
+ const conditionContext = updateErrorContext(errorContext, { path: ["condition"] });
434
+ const compound = measureValueFilter.condition ? asCompoundCondition(measureValueFilter.condition) : null;
435
+ if (compound) {
436
+ // Nesting lifts the shared null handling out of the conditions, so it is read from the compound.
437
+ assertNullsCountAsZero(compound.treatNullValuesAs, conditionContext);
438
+ // A written condition list may not be empty, and the absent key already means no filtering.
439
+ if (compound.conditions.length > 0) {
440
+ addConditionsToYaml(map, compound.conditions, {
441
+ nullsCountAsZero: compound.treatNullValuesAs !== undefined,
442
+ errorContext: conditionContext,
443
+ });
444
+ }
445
+ }
446
+ else if (measureValueFilter.conditions && measureValueFilter.conditions.length > 1) {
447
+ addConditionsToYaml(map, measureValueFilter.conditions, {
448
+ nullsCountAsZero: false,
449
+ errorContext: conditionContext,
450
+ });
451
+ }
452
+ else if (measureValueFilter.conditions?.length === 1) {
453
+ addSingleConditionToYaml(map, measureValueFilter.conditions[0], conditionContext);
454
+ }
455
+ else if (measureValueFilter.condition) {
456
+ addSingleConditionToYaml(map, measureValueFilter.condition, conditionContext);
457
+ }
458
+ // Handle dimensionality field
459
+ if (measureValueFilter.dimensionality && Array.isArray(measureValueFilter.dimensionality)) {
460
+ const dimensionalitySeq = new YAMLSeq();
461
+ measureValueFilter.dimensionality.forEach((item) => {
462
+ if (isLocalIdRef(item)) {
463
+ dimensionalitySeq.add(item.localIdentifier);
464
+ }
465
+ else {
466
+ dimensionalitySeq.add(getIdentifier(item));
467
+ }
468
+ });
469
+ map.add(new Pair("dimensionality", dimensionalitySeq));
470
+ }
471
+ return map;
472
+ }
473
+ /** @internal */
474
+ export function declarativeRankingFilterToYaml(rankingFilter, errorContext) {
475
+ const map = new YAMLMap();
476
+ map.add(new Pair("type", "ranking_filter"));
477
+ if (isLocalIdRef(rankingFilter.measure)) {
478
+ map.add(new Pair("using", rankingFilter.measure.localIdentifier));
479
+ }
480
+ else {
481
+ map.add(new Pair("using", getIdentifier(rankingFilter.measure, undefined, updateErrorContext(errorContext, {
482
+ path: ["measure"],
483
+ }))));
484
+ }
485
+ if (rankingFilter.operator === "TOP") {
486
+ map.add(new Pair("top", rankingFilter.value));
487
+ }
488
+ if (rankingFilter.operator === "BOTTOM") {
489
+ map.add(new Pair("bottom", rankingFilter.value));
490
+ }
491
+ const rankedBy = (rankingFilter.attributes ?? []).filter(Boolean);
492
+ if (rankedBy.length > 1) {
493
+ throw newError(CoreErrorCode.ItemNotSupported, [`ranking over ${rankedBy.length} attributes`], updateErrorContext(errorContext, { path: ["attributes"] }));
494
+ }
495
+ if (rankedBy[0]) {
496
+ const first = rankedBy[0];
497
+ if (isLocalIdRef(first)) {
498
+ map.add(new Pair("attribute", first.localIdentifier));
499
+ }
500
+ else {
501
+ map.add(new Pair("attribute", getIdentifier(first)));
502
+ }
503
+ }
504
+ if (rankingFilter.strictLimitOfRows !== undefined) {
505
+ map.add(new Pair("strict_limit_of_rows", rankingFilter.strictLimitOfRows));
506
+ }
507
+ return map;
508
+ }
package/esm/index.d.ts CHANGED
@@ -10,7 +10,8 @@ export { yamlAttributeHierarchyToDeclarative } from "./to/yamlAttributeHierarchy
10
10
  export { declarativeDatasetToYaml } from "./from/declarativeDatasetToYaml.js";
11
11
  export { declarativeDateInstanceToYaml } from "./from/declarativeDateInstanceToYaml.js";
12
12
  export { declarativeMetricToYaml } from "./from/declarativeMetricToYaml.js";
13
- export { declarativeVisualisationToYaml, declarativeVisTypeToYaml, declarativeAbsoluteDateFilterToYaml, declarativeArithmeticMetricToYaml, declarativeAttributeSortToYaml, declarativeAttributeToYaml, declarativeBucketsToYaml, declarativeFiltersToYaml, declarativeInlineMetricToYaml, declarativeMeasureSortToYaml, declarativeMeasureValueFilterToYaml, declarativeNegativeAttributeFilterToYaml, declarativeNormalMetricToYaml, declarativePoPMetricToYaml, declarativePreviousPeriodMetricToYaml, declarativePositiveAttributeFilterToYaml, declarativeRankingFilterToYaml, declarativeRelativeDateFilterToYaml, declarativeSortsToYaml, declarativeTotalToYaml, type YamlSorts, type YamlPostProcessors, type YamlBuckets, type YamlBucketGroup, type YamlBucketGroupItems, type YamlFieldData, type YamlFilterMapEntry, type YamlFilters, } from "./from/declarativeVisualisationToYaml.js";
13
+ export { declarativeVisualisationToYaml, declarativeVisTypeToYaml, declarativeArithmeticMetricToYaml, declarativeAttributeSortToYaml, declarativeAttributeToYaml, declarativeBucketsToYaml, declarativeInlineMetricToYaml, declarativeMeasureSortToYaml, declarativeNormalMetricToYaml, declarativePoPMetricToYaml, declarativePreviousPeriodMetricToYaml, declarativeSortsToYaml, declarativeTotalToYaml, type YamlSorts, type YamlPostProcessors, type YamlBuckets, type YamlBucketGroup, type YamlBucketGroupItems, type YamlFieldData, } from "./from/declarativeVisualisationToYaml.js";
14
+ export { type ClaimFilterKey, type DateFilterEmitOptions, type WrittenFilter, declarativeAbsoluteDateFilterToYaml, declarativeFiltersToYaml, declarativeMeasureValueFilterToYaml, declarativeNegativeAttributeFilterToYaml, declarativePositiveAttributeFilterToYaml, declarativeRankingFilterToYaml, declarativeRelativeDateFilterToYaml, type YamlFilterMapEntry, type YamlFilters, } from "./from/filtersToYaml.js";
14
15
  export { declarativeDashboardToYaml, declarativeDrillToYaml, declarativeFilterContextToYaml, declarativeFiltersConfigToYaml, declarativePluginsToYaml, declarativeSectionsToYaml, declarativeTabsToYaml, declarativeWidgetToYaml, type FilterContextItem, type OverrideDashboardDefinition, } from "./from/declarativeDashboardToYaml.js";
15
16
  export { declarativePluginToYaml } from "./from/declarativePluginToYaml.js";
16
17
  export { declarativeAttributeHierarchyToYaml } from "./from/declarativeAttributeHierarchyToYaml.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/esm/index.js CHANGED
@@ -13,7 +13,8 @@ export { yamlAttributeHierarchyToDeclarative } from "./to/yamlAttributeHierarchy
13
13
  export { declarativeDatasetToYaml } from "./from/declarativeDatasetToYaml.js";
14
14
  export { declarativeDateInstanceToYaml } from "./from/declarativeDateInstanceToYaml.js";
15
15
  export { declarativeMetricToYaml } from "./from/declarativeMetricToYaml.js";
16
- export { declarativeVisualisationToYaml, declarativeVisTypeToYaml, declarativeAbsoluteDateFilterToYaml, declarativeArithmeticMetricToYaml, declarativeAttributeSortToYaml, declarativeAttributeToYaml, declarativeBucketsToYaml, declarativeFiltersToYaml, declarativeInlineMetricToYaml, declarativeMeasureSortToYaml, declarativeMeasureValueFilterToYaml, declarativeNegativeAttributeFilterToYaml, declarativeNormalMetricToYaml, declarativePoPMetricToYaml, declarativePreviousPeriodMetricToYaml, declarativePositiveAttributeFilterToYaml, declarativeRankingFilterToYaml, declarativeRelativeDateFilterToYaml, declarativeSortsToYaml, declarativeTotalToYaml, } from "./from/declarativeVisualisationToYaml.js";
16
+ export { declarativeVisualisationToYaml, declarativeVisTypeToYaml, declarativeArithmeticMetricToYaml, declarativeAttributeSortToYaml, declarativeAttributeToYaml, declarativeBucketsToYaml, declarativeInlineMetricToYaml, declarativeMeasureSortToYaml, declarativeNormalMetricToYaml, declarativePoPMetricToYaml, declarativePreviousPeriodMetricToYaml, declarativeSortsToYaml, declarativeTotalToYaml, } from "./from/declarativeVisualisationToYaml.js";
17
+ export { declarativeAbsoluteDateFilterToYaml, declarativeFiltersToYaml, declarativeMeasureValueFilterToYaml, declarativeNegativeAttributeFilterToYaml, declarativePositiveAttributeFilterToYaml, declarativeRankingFilterToYaml, declarativeRelativeDateFilterToYaml, } from "./from/filtersToYaml.js";
17
18
  export { declarativeDashboardToYaml, declarativeDrillToYaml, declarativeFilterContextToYaml, declarativeFiltersConfigToYaml, declarativePluginsToYaml, declarativeSectionsToYaml, declarativeTabsToYaml, declarativeWidgetToYaml, } from "./from/declarativeDashboardToYaml.js";
18
19
  export { declarativePluginToYaml } from "./from/declarativePluginToYaml.js";
19
20
  export { declarativeAttributeHierarchyToYaml } from "./from/declarativeAttributeHierarchyToYaml.js";