@lightdash/common 0.2881.3 → 0.2882.1

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 (31) hide show
  1. package/dist/cjs/.tsbuildinfo +1 -1
  2. package/dist/cjs/pivot/derivePivotConfigFromChart.d.ts.map +1 -1
  3. package/dist/cjs/pivot/derivePivotConfigFromChart.js +2 -1
  4. package/dist/cjs/pivot/derivePivotConfigFromChart.js.map +1 -1
  5. package/dist/cjs/pivot/derivePivotConfigFromChart.test.js +227 -0
  6. package/dist/cjs/pivot/derivePivotConfigFromChart.test.js.map +1 -1
  7. package/dist/cjs/pivot/pivotQueryResults.test.js +45 -0
  8. package/dist/cjs/pivot/pivotQueryResults.test.js.map +1 -1
  9. package/dist/cjs/pivot/pivotResultsAsCsv.test.js +56 -0
  10. package/dist/cjs/pivot/pivotResultsAsCsv.test.js.map +1 -1
  11. package/dist/esm/.tsbuildinfo +1 -1
  12. package/dist/esm/pivot/derivePivotConfigFromChart.d.ts.map +1 -1
  13. package/dist/esm/pivot/derivePivotConfigFromChart.js +2 -1
  14. package/dist/esm/pivot/derivePivotConfigFromChart.js.map +1 -1
  15. package/dist/esm/pivot/derivePivotConfigFromChart.test.js +228 -1
  16. package/dist/esm/pivot/derivePivotConfigFromChart.test.js.map +1 -1
  17. package/dist/esm/pivot/pivotQueryResults.test.js +45 -0
  18. package/dist/esm/pivot/pivotQueryResults.test.js.map +1 -1
  19. package/dist/esm/pivot/pivotResultsAsCsv.test.js +56 -0
  20. package/dist/esm/pivot/pivotResultsAsCsv.test.js.map +1 -1
  21. package/dist/types/.tsbuildinfo +1 -1
  22. package/dist/types/pivot/derivePivotConfigFromChart.d.ts.map +1 -1
  23. package/dist/types/pivot/derivePivotConfigFromChart.js +2 -1
  24. package/dist/types/pivot/derivePivotConfigFromChart.js.map +1 -1
  25. package/dist/types/pivot/derivePivotConfigFromChart.test.js +228 -1
  26. package/dist/types/pivot/derivePivotConfigFromChart.test.js.map +1 -1
  27. package/dist/types/pivot/pivotQueryResults.test.js +45 -0
  28. package/dist/types/pivot/pivotQueryResults.test.js.map +1 -1
  29. package/dist/types/pivot/pivotResultsAsCsv.test.js +56 -0
  30. package/dist/types/pivot/pivotResultsAsCsv.test.js.map +1 -1
  31. package/package.json +1 -1
@@ -74,6 +74,62 @@ describe('pivotResultsAsCsv', () => {
74
74
  const allValues = result.flat();
75
75
  expect(allValues).toContain('Page Views');
76
76
  });
77
+ it('returns empty cells for rows missing an expected pivot field instead of throwing (#16866)', () => {
78
+ // https://github.com/lightdash/lightdash/issues/16866
79
+ // Repro: a CSV export with a pivoted chart whose result rows are
80
+ // missing one of the value-column fields used to throw
81
+ // `Cannot get key 'X' from object` deep inside the pivot pipeline,
82
+ // crashing scheduled deliveries silently.
83
+ // Expectation: pivotResultsAsCsv tolerates missing fields by
84
+ // emitting empty/placeholder cells, so the export still succeeds.
85
+ // The safe accessor lives in pivotResultsAsData and reads
86
+ // `row[fieldId]?.value?.raw ?? ''` — locking the empty-string
87
+ // fallback prevents a regression that re-introduces the throw.
88
+ const partialRows = RESULT_ROWS_2DIM_2METRIC.map((row, idx) => {
89
+ if (idx === 1) {
90
+ // Strip the devices metric on one row to simulate a
91
+ // results-set missing a field that valuesColumns expects.
92
+ const { devices, ...rest } = row;
93
+ return rest;
94
+ }
95
+ return row;
96
+ });
97
+ const callPivot = () => pivotResultsAsCsv({
98
+ pivotConfig: {
99
+ pivotDimensions: ['page'],
100
+ metricsAsRows: false,
101
+ },
102
+ rows: partialRows,
103
+ itemMap: buildItemsMap(),
104
+ metricQuery: {
105
+ exploreName: 'test',
106
+ ...METRIC_QUERY_2DIM_2METRIC,
107
+ filters: {},
108
+ sorts: [],
109
+ limit: 500,
110
+ customDimensions: [],
111
+ metricOverrides: {},
112
+ dimensionOverrides: {},
113
+ },
114
+ customLabels: undefined,
115
+ onlyRaw: false,
116
+ maxColumnLimit: 60,
117
+ pivotDetails: null,
118
+ undefinedCharacter: '',
119
+ });
120
+ expect(callPivot).not.toThrow();
121
+ const result = callPivot();
122
+ // The output is still a 2D string array of the same surface shape.
123
+ expect(Array.isArray(result)).toBe(true);
124
+ result.forEach((row) => {
125
+ expect(Array.isArray(row)).toBe(true);
126
+ row.forEach((cell) => {
127
+ // No undefined cells leak through — the safe accessor
128
+ // returns empty string when the source field is missing.
129
+ expect(typeof cell).toBe('string');
130
+ });
131
+ });
132
+ });
77
133
  it('produces same number of columns as pivotResultsAsData', () => {
78
134
  const params = {
79
135
  pivotConfig: {
@@ -1 +1 @@
1
- {"version":3,"file":"pivotResultsAsCsv.test.js","sourceRoot":"","sources":["../../../src/pivot/pivotResultsAsCsv.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EACH,YAAY,EACZ,yBAAyB,EACzB,wBAAwB,GAC3B,MAAM,0BAA0B,CAAC;AAElC,MAAM,aAAa,GAAG,GAAa,EAAE;IACjC,MAAM,QAAQ,GAAG;QACb,GAAG,yBAAyB,CAAC,UAAU;QACvC,GAAG,yBAAyB,CAAC,OAAO;KACvC,CAAC;IACF,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;QACpB,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,KAAK;YAAE,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;IAC/B,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AAEF,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QAC/D,MAAM,MAAM,GAAG,iBAAiB,CAAC;YAC7B,WAAW,EAAE;gBACT,eAAe,EAAE,CAAC,MAAM,CAAC;gBACzB,aAAa,EAAE,KAAK;aACvB;YACD,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,aAAa,EAAE;YACxB,WAAW,EAAE;gBACT,WAAW,EAAE,MAAM;gBACnB,GAAG,yBAAyB;gBAC5B,OAAO,EAAE,EAAE;gBACX,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,GAAG;gBACV,gBAAgB,EAAE,EAAE;gBACpB,eAAe,EAAE,EAAE;gBACnB,kBAAkB,EAAE,EAAE;aACzB;YACD,YAAY,EAAE,SAAS;YACvB,OAAO,EAAE,KAAK;YACd,cAAc,EAAE,EAAE;YAClB,YAAY,EAAE,IAAI;SACrB,CAAC,CAAC;QAEH,qCAAqC;QACrC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACnB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACjB,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,gDAAgD;QAChD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACvC,MAAM,MAAM,GAAG,iBAAiB,CAAC;YAC7B,WAAW,EAAE;gBACT,eAAe,EAAE,CAAC,MAAM,CAAC;gBACzB,aAAa,EAAE,KAAK;aACvB;YACD,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,aAAa,EAAE;YACxB,WAAW,EAAE;gBACT,WAAW,EAAE,MAAM;gBACnB,GAAG,yBAAyB;gBAC5B,OAAO,EAAE,EAAE;gBACX,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,GAAG;gBACV,gBAAgB,EAAE,EAAE;gBACpB,eAAe,EAAE,EAAE;gBACnB,kBAAkB,EAAE,EAAE;aACzB;YACD,YAAY,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;YACrC,OAAO,EAAE,KAAK;YACd,cAAc,EAAE,EAAE;YAClB,YAAY,EAAE,IAAI;SACrB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC7D,MAAM,MAAM,GAAG;YACX,WAAW,EAAE;gBACT,eAAe,EAAE,CAAC,MAAM,CAAC;gBACzB,aAAa,EAAE,KAAK;aACvB;YACD,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,aAAa,EAAE;YACxB,WAAW,EAAE;gBACT,WAAW,EAAE,MAAM;gBACnB,GAAG,yBAAyB;gBAC5B,OAAO,EAAE,EAAE;gBACX,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,GAAG;gBACV,gBAAgB,EAAE,EAAE;gBACpB,eAAe,EAAE,EAAE;gBACnB,kBAAkB,EAAE,EAAE;aACzB;YACD,YAAY,EAAE,SAAS;YACvB,OAAO,EAAE,KAAK;YACd,cAAc,EAAE,EAAE;YAClB,YAAY,EAAE,IAAI;SACrB,CAAC;QAEF,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAE9C,iEAAiE;QACjE,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/D,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAE5D,sEAAsE;QACtE,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC9B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"pivotResultsAsCsv.test.js","sourceRoot":"","sources":["../../../src/pivot/pivotResultsAsCsv.test.ts"],"names":[],"mappings":"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"}