@gooddata/sdk-code-convertors 11.68.0-alpha.0 → 11.68.0-alpha.10

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.
Files changed (35) hide show
  1. package/NOTICE +2007 -0
  2. package/esm/configs/barChart.d.ts +5 -46
  3. package/esm/configs/barChart.d.ts.map +1 -1
  4. package/esm/configs/barChart.js +9 -2
  5. package/esm/configs/columnChart.d.ts +5 -46
  6. package/esm/configs/columnChart.d.ts.map +1 -1
  7. package/esm/configs/columnChart.js +9 -2
  8. package/esm/configs/lineChart.d.ts +5 -46
  9. package/esm/configs/lineChart.d.ts.map +1 -1
  10. package/esm/configs/lineChart.js +9 -2
  11. package/esm/configs/secondaryAxis.d.ts +43 -0
  12. package/esm/configs/secondaryAxis.d.ts.map +1 -0
  13. package/esm/configs/secondaryAxis.js +62 -0
  14. package/esm/configs/utils.d.ts +2 -1
  15. package/esm/configs/utils.d.ts.map +1 -1
  16. package/esm/from/declarativeDashboardToYaml.d.ts +5 -2
  17. package/esm/from/declarativeDashboardToYaml.d.ts.map +1 -1
  18. package/esm/from/declarativeDashboardToYaml.js +41 -2
  19. package/esm/from/declarativeVisualisationToYaml.d.ts.map +1 -1
  20. package/esm/from/declarativeVisualisationToYaml.js +17 -3
  21. package/esm/index.d.ts +1 -0
  22. package/esm/index.d.ts.map +1 -1
  23. package/esm/sdk-code-convertors.d.ts +37 -138
  24. package/esm/to/yamlDashboardToDeclarative.d.ts +1 -1
  25. package/esm/to/yamlDashboardToDeclarative.d.ts.map +1 -1
  26. package/esm/to/yamlDashboardToDeclarative.js +19 -2
  27. package/esm/to/yamlVisualisationToDeclarative.js +3 -3
  28. package/esm/types.d.ts +1 -0
  29. package/esm/types.d.ts.map +1 -1
  30. package/esm/utils/errors.js +1 -1
  31. package/esm/utils/yamlUtils.d.ts +1 -1
  32. package/esm/utils/yamlUtils.d.ts.map +1 -1
  33. package/esm/validateDeclarativePublisherEntityV2.d.ts.map +1 -1
  34. package/esm/validateDeclarativePublisherEntityV2.js +35 -6
  35. package/package.json +8 -7
@@ -49,7 +49,7 @@ export const CoreErrorMessages = {
49
49
  [CoreErrorCode.DuplicateFilterName]: `Duplicate filter name "{0}". Each filter in a query must have a unique name, including the filters a date filter carries.`,
50
50
  [CoreErrorCode.DuplicateLayerIdentifier]: `Duplicate layer id "{0}". Each layer of a visualisation must have a unique id.`,
51
51
  [CoreErrorCode.DuplicateTabIdentifier]: `Duplicate tab identifier "{0}". Each tab must have a unique identifier within the dashboard.`,
52
- [CoreErrorCode.TabsAndRootContentMutuallyExclusive]: `Dashboard "{0}" defines both "tabs" and root-level "sections" or "filters". These are mutually exclusive — keep all content inside tabs or at the root, not both.`,
52
+ [CoreErrorCode.TabsAndRootContentMutuallyExclusive]: `Dashboard "{0}" defines both "tabs" and root-level "sections", "filters" or "parameters". These are mutually exclusive — keep all content inside tabs or at the root, not both.`,
53
53
  [CoreErrorCode.InvalidIanaTimezoneId]: `"{0}" is not a valid IANA timezone ID. Use a real timezone such as Europe/Prague or $browserDetected.`,
54
54
  [CoreErrorCode.UnsupportedContentVersion]: `Expected "{0}", got {1}.`,
55
55
  [CoreErrorCode.DateFilterWithoutDataSet]: `Date filter "{0}" names no date dataset. A document date filter must name the date dataset it applies to.`,
@@ -23,7 +23,7 @@ export declare function getIdentifier(obj: ObjRef | ObjRefInScope | AfmObjectIde
23
23
  /** @public */
24
24
  export declare function createIdentifier<T = AfmObjectIdentifier>(data: string, { forceMetric, forceType, }?: {
25
25
  forceMetric?: boolean;
26
- forceType?: "user" | "userGroup" | "dataset" | "date" | "attribute" | "label" | "measure" | "workspaceDataFilter" | "visualizationObject" | "analyticalDashboard" | "dashboardPlugin" | "filterContext";
26
+ forceType?: "user" | "userGroup" | "dataset" | "date" | "attribute" | "label" | "measure" | "workspaceDataFilter" | "visualizationObject" | "analyticalDashboard" | "dashboardPlugin" | "filterContext" | "parameter";
27
27
  }): T | null;
28
28
  export declare function createLocalIdentifier(data: string): AfmLocalIdentifier;
29
29
  export declare function cleanUpItems<T>(items: Array<T | null>): Array<T | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"yamlUtils.d.ts","sourceRoot":"","sources":["../../src/utils/yamlUtils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EACH,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAExB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EAExB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,MAAM,EACX,KAAK,aAAa,EAgBrB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAiB,KAAK,aAAa,EAAgC,MAAM,aAAa,CAAC;AAK9F,KAAK,eAAe,GAAG;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,wBAAgB,sBAAsB,CAClC,GAAG,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,EACjC,GAAG,EAAE,eAAe,EACpB,SAAS,UAAO,QAiBnB;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,uCAKrD;AAED,wBAAgB,wBAAwB,CACpC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,EAC7C,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,6EAUzB;AAED,wBAAgB,SAAS,CACrB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,EAC7C,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,OAAO,EAAE,kBAAkB,GAAG,SAAS,GACxC;IAAE,KAAK,CAAC,EAAE,gBAAgB,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CA0B7C;AAED,wBAAgB,8BAA8B,CAC1C,IAAI,EAAE,iBAAiB,EACvB,IAAI,GAAE,MAAe,EACrB,YAAY,CAAC,EAAE,aAAa,UAyC/B;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,GAAE,MAAe,EAAE,YAAY,CAAC,EAAE,aAAa,UA6DzG;AAED,cAAc;AACd,wBAAgB,aAAa,CACzB,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,mBAAmB,EACjD,MAAM,CAAC,EAAE,OAAO,EAChB,YAAY,CAAC,EAAE,aAAa,GAC7B,MAAM,CAgBR;AA6BD,cAAc;AACd,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,mBAAmB,EACpD,IAAI,EAAE,MAAM,EACZ,EACI,WAAW,EACX,SAAS,GACZ,GAAE;IACC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EACJ,MAAM,GACN,WAAW,GACX,SAAS,GACT,MAAM,GACN,WAAW,GACX,OAAO,GACP,SAAS,GACT,qBAAqB,GACrB,qBAAqB,GACrB,qBAAqB,GACrB,iBAAiB,GACjB,eAAe,CAAC;CACpB,GACP,CAAC,GAAG,IAAI,CA2BV;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAItE;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAUvE"}
1
+ {"version":3,"file":"yamlUtils.d.ts","sourceRoot":"","sources":["../../src/utils/yamlUtils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EACH,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAExB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EAExB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,MAAM,EACX,KAAK,aAAa,EAgBrB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAiB,KAAK,aAAa,EAAgC,MAAM,aAAa,CAAC;AAK9F,KAAK,eAAe,GAAG;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,wBAAgB,sBAAsB,CAClC,GAAG,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,EACjC,GAAG,EAAE,eAAe,EACpB,SAAS,UAAO,QAiBnB;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,uCAKrD;AAED,wBAAgB,wBAAwB,CACpC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,EAC7C,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,6EAUzB;AAED,wBAAgB,SAAS,CACrB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,EAC7C,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,OAAO,EAAE,kBAAkB,GAAG,SAAS,GACxC;IAAE,KAAK,CAAC,EAAE,gBAAgB,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CA0B7C;AAED,wBAAgB,8BAA8B,CAC1C,IAAI,EAAE,iBAAiB,EACvB,IAAI,GAAE,MAAe,EACrB,YAAY,CAAC,EAAE,aAAa,UAyC/B;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,GAAE,MAAe,EAAE,YAAY,CAAC,EAAE,aAAa,UA6DzG;AAED,cAAc;AACd,wBAAgB,aAAa,CACzB,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,mBAAmB,EACjD,MAAM,CAAC,EAAE,OAAO,EAChB,YAAY,CAAC,EAAE,aAAa,GAC7B,MAAM,CAgBR;AA6BD,cAAc;AACd,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,mBAAmB,EACpD,IAAI,EAAE,MAAM,EACZ,EACI,WAAW,EACX,SAAS,GACZ,GAAE;IACC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EACJ,MAAM,GACN,WAAW,GACX,SAAS,GACT,MAAM,GACN,WAAW,GACX,OAAO,GACP,SAAS,GACT,qBAAqB,GACrB,qBAAqB,GACrB,qBAAqB,GACrB,iBAAiB,GACjB,eAAe,GACf,WAAW,CAAC;CAChB,GACP,CAAC,GAAG,IAAI,CA2BV;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAItE;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAUvE"}
@@ -1 +1 @@
1
- {"version":3,"file":"validateDeclarativePublisherEntityV2.d.ts","sourceRoot":"","sources":["../src/validateDeclarativePublisherEntityV2.ts"],"names":[],"mappings":"AAOA,OAAO,EACH,KAAK,2BAA2B,EAKnC,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,gCAAgC,EAAE,MAAM,kCAAkC,CAAC;AAwIzF;;;;GAIG;AACH,wBAAgB,oDAAoD,CAChE,MAAM,EAAE,OAAO,EACf,IAAI,CAAC,EAAE,MAAM,GACd,2BAA2B,EAAE,CAoB/B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oCAAoC,CAChD,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,gCAAgC,GACvC,2BAA2B,EAAE,CAE/B"}
1
+ {"version":3,"file":"validateDeclarativePublisherEntityV2.d.ts","sourceRoot":"","sources":["../src/validateDeclarativePublisherEntityV2.ts"],"names":[],"mappings":"AAOA,OAAO,EACH,KAAK,2BAA2B,EAKnC,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,gCAAgC,EAAE,MAAM,kCAAkC,CAAC;AA8KzF;;;;GAIG;AACH,wBAAgB,oDAAoD,CAChE,MAAM,EAAE,OAAO,EACf,IAAI,CAAC,EAAE,MAAM,GACd,2BAA2B,EAAE,CAoB/B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oCAAoC,CAChD,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,gCAAgC,GACvC,2BAA2B,EAAE,CAE/B"}
@@ -9,6 +9,10 @@ const declarativeKeys = {
9
9
  version: true,
10
10
  period: true,
11
11
  content: true,
12
+ createdAt: true,
13
+ createdBy: true,
14
+ modifiedAt: true,
15
+ modifiedBy: true,
12
16
  }),
13
17
  documentTemplate: keySet({
14
18
  id: true,
@@ -31,6 +35,15 @@ const declarativeKeys = {
31
35
  isDefault: true,
32
36
  }),
33
37
  };
38
+ // The backend sets these audit keys on a stored document. The sdk-model definition has them under
39
+ // other names, so they are renamed for its validator, and its issues are renamed back.
40
+ const auditKeyToModelKey = {
41
+ createdAt: "created",
42
+ createdBy: "createdBy",
43
+ modifiedAt: "updated",
44
+ modifiedBy: "updatedBy",
45
+ };
46
+ const modelKeyToAuditKey = Object.fromEntries(Object.entries(auditKeyToModelKey).map(([auditKey, modelKey]) => [modelKey, auditKey]));
34
47
  const kinds = Object.keys(declarativeKeys);
35
48
  function isKind(value) {
36
49
  return typeof value === "string" && Object.hasOwn(declarativeKeys, value);
@@ -51,10 +64,19 @@ function keySet(keys) {
51
64
  function isRecord(value) {
52
65
  return typeof value === "object" && value !== null && !Array.isArray(value);
53
66
  }
54
- function onId(issue) {
55
- return issue.path === "ref" || issue.path.startsWith("ref.")
56
- ? { ...issue, path: `id${issue.path.slice("ref".length)}` }
57
- : issue;
67
+ function renamedPath(path, from, to) {
68
+ return path === from || path.startsWith(`${from}.`) ? `${to}${path.slice(from.length)}` : undefined;
69
+ }
70
+ // An issue on the reference is reported on the id, and an issue on an audit key on its stored name.
71
+ function onStoredKeys(issue) {
72
+ const renames = [["ref", "id"], ...Object.entries(modelKeyToAuditKey)];
73
+ for (const [from, to] of renames) {
74
+ const path = renamedPath(issue.path, from, to);
75
+ if (path !== undefined) {
76
+ return { ...issue, path };
77
+ }
78
+ }
79
+ return issue;
58
80
  }
59
81
  function unknownKeyIssues(entity, knownKeys) {
60
82
  return Object.keys(entity)
@@ -92,7 +114,14 @@ function isBackendDefaultPageTemplate(entity, kind) {
92
114
  // so it is validated without its reference; idIssues still checks the id itself.
93
115
  function asDefinition(entity, kind) {
94
116
  const { id, ...rest } = entity;
95
- const known = Object.fromEntries(Object.entries(rest).filter(([key]) => declarativeKeys[kind].has(key)));
117
+ const known = Object.fromEntries(Object.entries(rest)
118
+ .filter(([key]) => declarativeKeys[kind].has(key))
119
+ // The api client allows a null audit date; the model leaves the key out instead.
120
+ .filter(([key, value]) => !(Object.hasOwn(auditKeyToModelKey, key) && value === null))
121
+ .map(([key, value]) => [
122
+ Object.hasOwn(auditKeyToModelKey, key) ? auditKeyToModelKey[key] : key,
123
+ value,
124
+ ]));
96
125
  const typed = { ...known, type: kind };
97
126
  return isPublisherEntityIdV2(id) && !isBackendDefaultPageTemplate(entity, kind)
98
127
  ? { ...typed, ref: idRef(id) }
@@ -102,7 +131,7 @@ function issuesOfKind(entity, kind, knownKeys) {
102
131
  return [
103
132
  ...unknownKeyIssues(entity, knownKeys),
104
133
  ...idIssues(entity["id"]),
105
- ...validatePublisherEntityV2(asDefinition(entity, kind)).map(onId),
134
+ ...validatePublisherEntityV2(asDefinition(entity, kind)).map(onStoredKeys),
106
135
  ];
107
136
  }
108
137
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-code-convertors",
3
- "version": "11.68.0-alpha.0",
3
+ "version": "11.68.0-alpha.10",
4
4
  "description": "GoodData AAC declarative converters",
5
5
  "license": "MIT",
6
6
  "author": "GoodData",
@@ -10,7 +10,8 @@
10
10
  "directory": "libs/sdk-code-convertors"
11
11
  },
12
12
  "files": [
13
- "esm/**"
13
+ "esm/**",
14
+ "NOTICE"
14
15
  ],
15
16
  "type": "module",
16
17
  "sideEffects": false,
@@ -26,9 +27,9 @@
26
27
  "dependencies": {
27
28
  "uuid": "11.1.1",
28
29
  "yaml": "2.9.1",
29
- "@gooddata/api-client-tiger": "11.68.0-alpha.0",
30
- "@gooddata/sdk-code-schemas": "11.68.0-alpha.0",
31
- "@gooddata/sdk-model": "11.68.0-alpha.0"
30
+ "@gooddata/api-client-tiger": "11.68.0-alpha.10",
31
+ "@gooddata/sdk-code-schemas": "11.68.0-alpha.10",
32
+ "@gooddata/sdk-model": "11.68.0-alpha.10"
32
33
  },
33
34
  "devDependencies": {
34
35
  "@microsoft/api-extractor": "7.59.2",
@@ -49,8 +50,8 @@
49
50
  "oxlint-tsgolint": "7.0.2001",
50
51
  "typescript": "7.0.2",
51
52
  "vitest": "5.0.4",
52
- "@gooddata/eslint-config": "11.68.0-alpha.0",
53
- "@gooddata/oxlint-config": "11.68.0-alpha.0"
53
+ "@gooddata/eslint-config": "11.68.0-alpha.10",
54
+ "@gooddata/oxlint-config": "11.68.0-alpha.10"
54
55
  },
55
56
  "scripts": {
56
57
  "_phase:build": "npm run build",