@gooddata/sdk-backend-tiger 11.65.0-alpha.13 → 11.65.0-alpha.14

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/README.md CHANGED
@@ -17,6 +17,6 @@ https://gooddata.atlassian.net/wiki/spaces/Quality/pages/1454276716/Play+with+sd
17
17
 
18
18
  ## License
19
19
 
20
- (C) 2017-2022 GoodData Corporation
20
+ (C) 2017-2026 GoodData Corporation
21
21
 
22
22
  This project is under MIT License. See [LICENSE](https://github.com/gooddata/gooddata-ui-sdk/blob/master/libs/sdk-backend-tiger/LICENSE).
@@ -1,4 +1,4 @@
1
- export declare const LIB_VERSION = "11.65.0-alpha.13";
1
+ export declare const LIB_VERSION = "11.65.0-alpha.14";
2
2
  export declare const LIB_DESCRIPTION = "GoodData Backend SPI implementation for GoodData Cloud and GoodData.CN";
3
3
  export declare const LIB_NAME = "@gooddata/sdk-backend-tiger";
4
4
  //# sourceMappingURL=__version.d.ts.map
package/esm/__version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // (C) 2021 GoodData Corporation
2
2
  // DO NOT CHANGE THIS FILE, IT IS RE-GENERATED ON EVERY BUILD
3
- export const LIB_VERSION = "11.65.0-alpha.13";
3
+ export const LIB_VERSION = "11.65.0-alpha.14";
4
4
  export const LIB_DESCRIPTION = "GoodData Backend SPI implementation for GoodData Cloud and GoodData.CN";
5
5
  export const LIB_NAME = "@gooddata/sdk-backend-tiger";
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../src/backend/localization/aggregate.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,gCAAgC,EAErC,KAAK,6BAA6B,EAElC,KAAK,kBAAkB,EAEvB,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAEhC,KAAK,uBAAuB,EAC5B,KAAK,iCAAiC,EAEtC,KAAK,uBAAuB,EAC/B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAEH,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAEzB,MAAM,cAAc,CAAC;AAYtB,KAAK,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,uBAAuB,EAAE,0BAA0B,CAAC,CAAC,CAAC;AAM7F,MAAM,WAAW,WAAW;IACxB,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,MAAM,EAAE,KAAK,CAAC,cAAc,GAAG;QAAE,QAAQ,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAAC;IAC/D;;OAEG;IACH,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C;;OAEG;IACH,iBAAiB,CAAC,EAAE,CAChB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,iCAAiC,KACzC,WAAW,CAAC,MAAM,CAAC,CAAC;CAC5B;AA4CD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,6BAA6B,CA2DlF;AAED,wBAAgB,mBAAmB,CAC/B,UAAU,EAAE,iBAAiB,EAAE,EAC/B,UAAU,EAAE,gCAAgC,EAAE,GAC/C,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,iCAAiC,KAAK,WAAW,CAAC,MAAM,CAAC,CAkB1F;AAgCD,wBAAgB,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,KAAK,GAAG,WAAW,GAAG,kBAAkB,CAgDzG;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,OAAO,CAGpG;AAED,wBAAgB,OAAO,CACnB,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,EAAE,2BAA2B,GACnC,uBAAuB,GAAG,SAAS,CAcrC;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,sBAAsB,GAAG,CAAC,EAAE,CAItE;AAgBD,wBAAgB,eAAe,CAC3B,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,2BAA2B,GACnC;IAAE,UAAU,EAAE,2BAA2B,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CA4BnE;AAED,wBAAgB,UAAU,CACtB,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,2BAA2B,GACnC;IAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAqBzD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,uBAAuB,CAYnG;AAED,wBAAgB,cAAc,CAC1B,IAAI,EAAE,gCAAgC,EAAE,EACxC,KAAK,EAAE,sBAAsB,GAC9B;IAAE,UAAU,EAAE,gCAAgC,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAExE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,CAIpE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,GAAG,gBAAgB,CAOxG"}
1
+ {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../src/backend/localization/aggregate.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,gCAAgC,EAErC,KAAK,6BAA6B,EAElC,KAAK,kBAAkB,EAEvB,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAEhC,KAAK,uBAAuB,EAC5B,KAAK,iCAAiC,EAEtC,KAAK,uBAAuB,EAC/B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAEH,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAEzB,MAAM,cAAc,CAAC;AAYtB,KAAK,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,uBAAuB,EAAE,0BAA0B,CAAC,CAAC,CAAC;AAM7F,MAAM,WAAW,WAAW;IACxB,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,MAAM,EAAE,KAAK,CAAC,cAAc,GAAG;QAAE,QAAQ,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAAC;IAC/D;;OAEG;IACH,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C;;OAEG;IACH,iBAAiB,CAAC,EAAE,CAChB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,iCAAiC,KACzC,WAAW,CAAC,MAAM,CAAC,CAAC;CAC5B;AA2ED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,6BAA6B,CA4ClF;AAED,wBAAgB,mBAAmB,CAC/B,UAAU,EAAE,iBAAiB,EAAE,EAC/B,UAAU,EAAE,gCAAgC,EAAE,GAC/C,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,iCAAiC,KAAK,WAAW,CAAC,MAAM,CAAC,CAkB1F;AAgCD,wBAAgB,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,KAAK,GAAG,WAAW,GAAG,kBAAkB,CAgDzG;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,OAAO,CAGpG;AAED,wBAAgB,OAAO,CACnB,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,EAAE,2BAA2B,GACnC,uBAAuB,GAAG,SAAS,CAcrC;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,sBAAsB,GAAG,CAAC,EAAE,CAItE;AAgBD,wBAAgB,eAAe,CAC3B,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,2BAA2B,GACnC;IAAE,UAAU,EAAE,2BAA2B,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CA4BnE;AAED,wBAAgB,UAAU,CACtB,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,2BAA2B,GACnC;IAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAqBzD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,uBAAuB,CAYnG;AAED,wBAAgB,cAAc,CAC1B,IAAI,EAAE,gCAAgC,EAAE,EACxC,KAAK,EAAE,sBAAsB,GAC9B;IAAE,UAAU,EAAE,gCAAgC,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAExE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,CAIpE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,GAAG,gBAAgB,CAOxG"}
@@ -10,24 +10,53 @@ const SOURCE_STRENGTH = [
10
10
  ];
11
11
  const DEFAULT_PAGE_SIZE = 100;
12
12
  const TRANSLATED_SETTINGS = ["METADATA_LOCALE", "DATA_LOCALE"];
13
- const TRANSLATION_STATES = ["missing", "available"];
13
+ const TRANSLATION_USAGE_SETTINGS = ["LOCALE", ...TRANSLATED_SETTINGS];
14
+ function isEnglish(code) {
15
+ return code === "en" || code.startsWith("en-");
16
+ }
17
+ function languageOf(code) {
18
+ try {
19
+ return new Intl.Locale(code).language;
20
+ }
21
+ catch {
22
+ return undefined;
23
+ }
24
+ }
25
+ function hasSameLanguage(locales, code) {
26
+ const language = languageOf(code);
27
+ return !!language && [...locales].some((locale) => languageOf(locale) === language);
28
+ }
14
29
  // Workspaces outside the scope still count for the people who can open them.
15
30
  function translationState(scope, settings, workspaceIds, value, setting) {
16
- const translated = (workspaceId) => scope.translatedLocales?.(workspaceId, setting).has(value);
31
+ if (isEnglish(value)) {
32
+ return undefined;
33
+ }
34
+ const localesOf = (workspaceId, translated) => scope.translatedLocales?.(workspaceId, translated) ?? new Set();
35
+ if (setting === "LOCALE") {
36
+ return settings.LOCALE?.content.value === value &&
37
+ workspaceIds.some((workspaceId) => !localesOf(workspaceId, "METADATA_LOCALE").has(value))
38
+ ? "missing"
39
+ : undefined;
40
+ }
17
41
  if (settings[setting]?.content.value === value) {
18
- return workspaceIds.some((workspaceId) => !translated(workspaceId)) ? "missing" : undefined;
42
+ const untranslated = workspaceIds.filter((workspaceId) => !localesOf(workspaceId, setting).has(value));
43
+ if (untranslated.length === 0) {
44
+ return undefined;
45
+ }
46
+ return untranslated.every((workspaceId) => hasSameLanguage(localesOf(workspaceId, setting), value))
47
+ ? "variant"
48
+ : "missing";
19
49
  }
20
50
  if (settings.LOCALE?.content.value === value) {
21
- return workspaceIds.some(translated) ? "available" : undefined;
51
+ return workspaceIds.some((workspaceId) => localesOf(workspaceId, setting).has(value))
52
+ ? "available"
53
+ : undefined;
22
54
  }
23
55
  return undefined;
24
56
  }
25
- function isTranslationSetting(setting) {
26
- return setting === "METADATA_LOCALE" || setting === "DATA_LOCALE";
27
- }
28
57
  function matchesTranslation(scope, settings, workspaceIds, query) {
29
58
  const { value, setting } = query;
30
- if (value === undefined || !isTranslationSetting(setting)) {
59
+ if (value === undefined || setting === undefined) {
31
60
  return undefined;
32
61
  }
33
62
  return translationState(scope, settings, workspaceIds, value, setting) === query.translation
@@ -42,11 +71,8 @@ export function translationUsage(scope) {
42
71
  entry = { content: { value }, bySetting: {} };
43
72
  entries.set(value, entry);
44
73
  }
45
- const bySetting = (entry.bySetting[setting] ??= {
46
- missing: { workspaces: 0, users: 0 },
47
- available: { workspaces: 0, users: 0 },
48
- });
49
- return bySetting[state];
74
+ const bySetting = (entry.bySetting[setting] ??= {});
75
+ return (bySetting[state] ??= { workspaces: 0, users: 0 });
50
76
  };
51
77
  const subjects = [
52
78
  ...scope.workspaces.map((workspace) => ({
@@ -65,7 +91,7 @@ export function translationUsage(scope) {
65
91
  .map((setting) => setting?.content.value)
66
92
  .filter((value) => !!value));
67
93
  for (const value of values) {
68
- for (const setting of TRANSLATED_SETTINGS) {
94
+ for (const setting of TRANSLATION_USAGE_SETTINGS) {
69
95
  const state = translationState(scope, subject.settings, subject.workspaceIds, value, setting);
70
96
  if (state) {
71
97
  countOf(value, setting, state)[subject.kind] += 1;
@@ -73,15 +99,6 @@ export function translationUsage(scope) {
73
99
  }
74
100
  }
75
101
  }
76
- for (const entry of entries.values()) {
77
- for (const setting of TRANSLATED_SETTINGS) {
78
- const counts = entry.bySetting[setting];
79
- if (counts &&
80
- TRANSLATION_STATES.every((state) => counts[state].workspaces + counts[state].users === 0)) {
81
- delete entry.bySetting[setting];
82
- }
83
- }
84
- }
85
102
  return { values: [...entries.values()] };
86
103
  }
87
104
  export function translatedLocalesOf(workspaces, statistics) {
@@ -340,10 +340,6 @@ export declare const TigerFeatureDefinitions: {
340
340
  type: "BOOLEAN";
341
341
  defaultValue: boolean;
342
342
  };
343
- readonly enableShellApplication_dashboards: {
344
- type: "BOOLEAN";
345
- defaultValue: boolean;
346
- };
347
343
  readonly enableLogicalModelExtensionsFromParentsCall: {
348
344
  type: "BOOLEAN";
349
345
  defaultValue: boolean;
@@ -528,6 +524,10 @@ export declare const TigerFeatureDefinitions: {
528
524
  type: "BOOLEAN";
529
525
  defaultValue: boolean;
530
526
  };
527
+ readonly enableLocalizationValidations: {
528
+ type: "BOOLEAN";
529
+ defaultValue: boolean;
530
+ };
531
531
  };
532
532
  export type ITigerFeatureFlags = {
533
533
  -readonly [Key in keyof typeof TigerFeatureDefinitions]: (typeof TigerFeatureDefinitions)[Key]["defaultValue"];
@@ -1 +1 @@
1
- {"version":3,"file":"uiFeatures.d.ts","sourceRoot":"","sources":["../../src/backend/uiFeatures.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uiFeatures.d.ts","sourceRoot":"","sources":["../../src/backend/uiFeatures.ts"],"names":[],"mappings":"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"}
@@ -89,7 +89,6 @@ export const TigerFeatureDefinitions = {
89
89
  enableMeasureValueFilterKD: booleanFeature(true),
90
90
  enableVisualizationFilteringByTags: booleanFeature(false),
91
91
  enableShellApplication: booleanFeature(true),
92
- enableShellApplication_dashboards: booleanFeature(true),
93
92
  enableLogicalModelExtensionsFromParentsCall: booleanFeature(false),
94
93
  enableDashboardDensitySetting: booleanFeature(false),
95
94
  enableDashboardsSearch: booleanFeature(false),
@@ -136,6 +135,7 @@ export const TigerFeatureDefinitions = {
136
135
  earlyAccessFeatures: jsonFeature(),
137
136
  enableAnalyticalDesignerCatalogSideload: booleanFeature(false),
138
137
  enableAiAssistantEmbedding: booleanFeature(false),
138
+ enableLocalizationValidations: booleanFeature(false),
139
139
  };
140
140
  export const DefaultFeatureFlags = Object.fromEntries(Object.entries(TigerFeatureDefinitions).map(([key, definition]) => [key, definition.defaultValue]));
141
141
  /**
@@ -3,7 +3,7 @@ import { type IChatConversation, type IChatConversationError, type IChatConversa
3
3
  import type { FormattingLocale } from "./dateFormatting/defaultDateFormatter.js";
4
4
  import { type DateNormalizer } from "./dateFormatting/types.js";
5
5
  export declare function convertChatConversationFromBackend(conversation: AiConversationResponse): IChatConversation;
6
- export declare function convertChatConversationItemFromBackend(item: AiConversationItemResponse, responses: AiConversationResponseList["responses"] | undefined, history: IChatConversationItem[], dateNormalizer: DateNormalizer, locale?: FormattingLocale, timezone?: string): IChatConversationItem | undefined;
6
+ export declare function convertChatConversationItemFromBackend(item: AiConversationItemResponse, responses: AiConversationResponseList["responses"] | undefined, history: (IChatConversationItem | IChatConversationError)[], dateNormalizer: DateNormalizer, locale?: FormattingLocale, timezone?: string): IChatConversationItem | IChatConversationError | undefined;
7
7
  export declare function convertChatConversationItemsFromBackend(items: AiConversationItemResponse[], responses: AiConversationResponseList["responses"] | undefined, dateNormalizer: DateNormalizer, locale?: FormattingLocale, timezone?: string): IChatConversationItem[];
8
8
  export declare function convertChatConversationErrorFromBackend(item: Partial<{
9
9
  statusCode: number;
@@ -1 +1 @@
1
- {"version":3,"file":"genAIConvertor.d.ts","sourceRoot":"","sources":["../../../src/convertors/fromBackend/genAIConvertor.ts"],"names":[],"mappings":"AAKA,OAAO,EAGH,KAAK,0BAA0B,EAC/B,KAAK,gCAAgC,EACrC,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAK/B,KAAK,yBAAyB,EAM9B,KAAK,aAAa,EAUrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEH,KAAK,iBAAiB,EAGtB,KAAK,sBAAsB,EAE3B,KAAK,gCAAgC,EACrC,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAIhC,KAAK,gBAAgB,EAExB,MAAM,2BAA2B,CAAC;AAyCnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAMhE,wBAAgB,kCAAkC,CAAC,YAAY,EAAE,sBAAsB,GAAG,iBAAiB,CAS1G;AAED,wBAAgB,sCAAsC,CAClD,IAAI,EAAE,0BAA0B,EAChC,SAAS,EAAE,0BAA0B,CAAC,WAAW,CAAC,GAAG,SAAS,EAC9D,OAAO,EAAE,qBAAqB,EAAE,EAChC,cAAc,EAAE,cAAc,EAC9B,MAAM,CAAC,EAAE,gBAAgB,EACzB,QAAQ,CAAC,EAAE,MAAM,GAClB,qBAAqB,GAAG,SAAS,CA6BnC;AAED,wBAAgB,uCAAuC,CACnD,KAAK,EAAE,0BAA0B,EAAE,EACnC,SAAS,EAAE,0BAA0B,CAAC,WAAW,CAAC,GAAG,SAAS,EAC9D,cAAc,EAAE,cAAc,EAC9B,MAAM,CAAC,EAAE,gBAAgB,EACzB,QAAQ,CAAC,EAAE,MAAM,GAClB,qBAAqB,EAAE,CAkBzB;AA8ND,wBAAgB,uCAAuC,CACnD,IAAI,EAAE,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,EACrE,OAAO,CAAC,EAAE,MAAM,GACjB,sBAAsB,CAQxB;AAED;;;GAGG;AACH,wBAAgB,iDAAiD,CAC7D,IAAI,EAAE,yBAAyB,EAC/B,OAAO,CAAC,EAAE,MAAM,GACjB,gCAAgC,CAgBlC;AAED;;;;GAIG;AACH,wBAAgB,4CAA4C,CACxD,MAAM,EAAE,gCAAgC,GAAG,IAAI,GAAG,SAAS,GAC5D,2BAA2B,GAAG,SAAS,CAgEzC;AA2FD,wBAAgB,oCAAoC,CAChD,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,GACvC,gBAAgB,CAQlB"}
1
+ {"version":3,"file":"genAIConvertor.d.ts","sourceRoot":"","sources":["../../../src/convertors/fromBackend/genAIConvertor.ts"],"names":[],"mappings":"AAKA,OAAO,EAGH,KAAK,0BAA0B,EAC/B,KAAK,gCAAgC,EACrC,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAK/B,KAAK,yBAAyB,EAM9B,KAAK,aAAa,EAUrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEH,KAAK,iBAAiB,EAGtB,KAAK,sBAAsB,EAE3B,KAAK,gCAAgC,EACrC,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAIhC,KAAK,gBAAgB,EAExB,MAAM,2BAA2B,CAAC;AAyCnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAMhE,wBAAgB,kCAAkC,CAAC,YAAY,EAAE,sBAAsB,GAAG,iBAAiB,CAS1G;AAED,wBAAgB,sCAAsC,CAClD,IAAI,EAAE,0BAA0B,EAChC,SAAS,EAAE,0BAA0B,CAAC,WAAW,CAAC,GAAG,SAAS,EAC9D,OAAO,EAAE,CAAC,qBAAqB,GAAG,sBAAsB,CAAC,EAAE,EAC3D,cAAc,EAAE,cAAc,EAC9B,MAAM,CAAC,EAAE,gBAAgB,EACzB,QAAQ,CAAC,EAAE,MAAM,GAClB,qBAAqB,GAAG,sBAAsB,GAAG,SAAS,CAuC5D;AAED,wBAAgB,uCAAuC,CACnD,KAAK,EAAE,0BAA0B,EAAE,EACnC,SAAS,EAAE,0BAA0B,CAAC,WAAW,CAAC,GAAG,SAAS,EAC9D,cAAc,EAAE,cAAc,EAC9B,MAAM,CAAC,EAAE,gBAAgB,EACzB,QAAQ,CAAC,EAAE,MAAM,GAClB,qBAAqB,EAAE,CAkBzB;AAwOD,wBAAgB,uCAAuC,CACnD,IAAI,EAAE,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,EACrE,OAAO,CAAC,EAAE,MAAM,GACjB,sBAAsB,CAQxB;AAED;;;GAGG;AACH,wBAAgB,iDAAiD,CAC7D,IAAI,EAAE,yBAAyB,EAC/B,OAAO,CAAC,EAAE,MAAM,GACjB,gCAAgC,CAgBlC;AAED;;;;GAIG;AACH,wBAAgB,4CAA4C,CACxD,MAAM,EAAE,gCAAgC,GAAG,IAAI,GAAG,SAAS,GAC5D,2BAA2B,GAAG,SAAS,CAgEzC;AA2FD,wBAAgB,oCAAoC,CAChD,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,GACvC,gBAAgB,CAQlB"}
@@ -23,26 +23,37 @@ export function convertChatConversationFromBackend(conversation) {
23
23
  };
24
24
  }
25
25
  export function convertChatConversationItemFromBackend(item, responses, history, dateNormalizer, locale, timezone) {
26
- const content = convertChatConversationContentFromBackend(item.content, history, dateNormalizer, locale, timezone);
27
- if (!content) {
28
- return undefined;
26
+ try {
27
+ const content = convertChatConversationContentFromBackend(item.content, history, dateNormalizer, locale, timezone);
28
+ if (!content) {
29
+ return undefined;
30
+ }
31
+ const response = responses?.find((r) => r.responseId === item.responseId);
32
+ return {
33
+ type: "item",
34
+ id: item.itemId,
35
+ role: item.role,
36
+ responseId: item.responseId ?? "",
37
+ replyTo: item.replyTo ?? undefined,
38
+ createdAt: new Date(item.createdAt).getTime(),
39
+ feedback: convertChatConversationFeedbackFromBackend(response),
40
+ content,
41
+ stepId: item.stepId ?? undefined,
42
+ detail: convertChatConversationItemDetailFromBackend(item.detail),
43
+ agentId: item.newAgentId ?? undefined,
44
+ oldAgentId: item.oldAgentId ?? undefined,
45
+ reasoningEffort: item.reasoningEffort ?? undefined,
46
+ };
47
+ }
48
+ catch (e) {
49
+ const error = e;
50
+ console.error("Failed to convert conversation item", item.itemId, e);
51
+ return {
52
+ type: "error",
53
+ code: 0,
54
+ message: error.message,
55
+ };
29
56
  }
30
- const response = responses?.find((r) => r.responseId === item.responseId);
31
- return {
32
- type: "item",
33
- id: item.itemId,
34
- role: item.role,
35
- responseId: item.responseId ?? "",
36
- replyTo: item.replyTo ?? undefined,
37
- createdAt: new Date(item.createdAt).getTime(),
38
- feedback: convertChatConversationFeedbackFromBackend(response),
39
- content,
40
- stepId: item.stepId ?? undefined,
41
- detail: convertChatConversationItemDetailFromBackend(item.detail),
42
- agentId: item.newAgentId ?? undefined,
43
- oldAgentId: item.oldAgentId ?? undefined,
44
- reasoningEffort: item.reasoningEffort ?? undefined,
45
- };
46
57
  }
47
58
  export function convertChatConversationItemsFromBackend(items, responses, dateNormalizer, locale, timezone) {
48
59
  const history = [];
@@ -135,19 +146,30 @@ function convertMultipartParts(rawParts, history, dateNormalizer, locale, timezo
135
146
  const siblings = [];
136
147
  const parts = [];
137
148
  rawParts.forEach((rawPart) => {
138
- const part = convertMultipartPart(rawPart, history, siblings, dateNormalizer, locale, timezone);
139
- // Unknown parts are dropped rather than failing the whole item, so the rest
140
- // of the message (known parts) keeps rendering normally.
141
- if (!part) {
142
- return;
149
+ try {
150
+ const part = convertMultipartPart(rawPart, history, siblings, dateNormalizer, locale, timezone);
151
+ // Unknown parts are dropped rather than failing the whole item, so the rest
152
+ // of the message (known parts) keeps rendering normally.
153
+ if (!part) {
154
+ return;
155
+ }
156
+ siblings.push(part);
157
+ const isPatchBase = rawPart.type === "dashboard" &&
158
+ part.type === "dashboard" &&
159
+ !!part.dashboard &&
160
+ patchedDashboardIds.has(part.dashboard.identifier);
161
+ if (!isPatchBase) {
162
+ parts.push(part);
163
+ }
143
164
  }
144
- siblings.push(part);
145
- const isPatchBase = rawPart.type === "dashboard" &&
146
- part.type === "dashboard" &&
147
- !!part.dashboard &&
148
- patchedDashboardIds.has(part.dashboard.identifier);
149
- if (!isPatchBase) {
150
- parts.push(part);
165
+ catch (e) {
166
+ const error = e;
167
+ history.push({
168
+ type: "error",
169
+ code: 0,
170
+ message: error.message,
171
+ });
172
+ console.error("Failed to convert conversation part", rawPart.type, e);
151
173
  }
152
174
  });
153
175
  return parts;
@@ -601,6 +623,9 @@ function collectRelatedItems(items, siblings, ref) {
601
623
  }
602
624
  };
603
625
  items.forEach((item) => {
626
+ if (item.type === "error") {
627
+ return;
628
+ }
604
629
  if (item.content.type === "multipart") {
605
630
  item.content.parts.forEach(collect);
606
631
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-backend-tiger",
3
- "version": "11.65.0-alpha.13",
3
+ "version": "11.65.0-alpha.14",
4
4
  "description": "GoodData Backend SPI implementation for GoodData Cloud and GoodData.CN",
5
5
  "license": "MIT",
6
6
  "author": "GoodData",
@@ -34,12 +34,12 @@
34
34
  "ts-invariant": "0.10.3",
35
35
  "tslib": "2.8.1",
36
36
  "uuid": "11.1.1",
37
- "@gooddata/api-client-tiger": "11.65.0-alpha.13",
38
- "@gooddata/sdk-backend-base": "11.65.0-alpha.13",
39
- "@gooddata/sdk-backend-spi": "11.65.0-alpha.13",
40
- "@gooddata/sdk-code-convertors": "11.65.0-alpha.13",
41
- "@gooddata/sdk-model": "11.65.0-alpha.13",
42
- "@gooddata/util": "11.65.0-alpha.13"
37
+ "@gooddata/api-client-tiger": "11.65.0-alpha.14",
38
+ "@gooddata/sdk-backend-spi": "11.65.0-alpha.14",
39
+ "@gooddata/sdk-backend-base": "11.65.0-alpha.14",
40
+ "@gooddata/sdk-code-convertors": "11.65.0-alpha.14",
41
+ "@gooddata/util": "11.65.0-alpha.14",
42
+ "@gooddata/sdk-model": "11.65.0-alpha.14"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@gooddata/fixtures": "3.7.0",
@@ -64,10 +64,10 @@
64
64
  "oxlint-tsgolint": "7.0.2001",
65
65
  "typescript": "7.0.2",
66
66
  "vitest": "5.0.4",
67
- "@gooddata/catalog-export": "11.65.0-alpha.13",
68
- "@gooddata/oxlint-config": "11.65.0-alpha.13",
69
- "@gooddata/eslint-config": "11.65.0-alpha.13",
70
- "@gooddata/reference-workspace": "11.65.0-alpha.13"
67
+ "@gooddata/catalog-export": "11.65.0-alpha.14",
68
+ "@gooddata/eslint-config": "11.65.0-alpha.14",
69
+ "@gooddata/oxlint-config": "11.65.0-alpha.14",
70
+ "@gooddata/reference-workspace": "11.65.0-alpha.14"
71
71
  },
72
72
  "scripts": {
73
73
  "_phase:build": "npm run build",