@lightdash/cli 2.573.4 → 2.575.0

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 (65) hide show
  1. package/README.md +31 -0
  2. package/dist/.tsbuildinfo.build +1 -1
  3. package/dist/agentConnections/agentTokenProvider.d.ts.map +1 -1
  4. package/dist/agentConnections/agentTokenProvider.js +5 -4
  5. package/dist/agentConnections/responseValidation.d.ts +3 -0
  6. package/dist/agentConnections/responseValidation.d.ts.map +1 -0
  7. package/dist/agentConnections/responseValidation.js +12 -0
  8. package/dist/agentConnections/schema.d.ts.map +1 -1
  9. package/dist/agentConnections/schema.js +70 -4
  10. package/dist/agentConnections/serverError.d.ts +5 -0
  11. package/dist/agentConnections/serverError.d.ts.map +1 -0
  12. package/dist/agentConnections/serverError.js +38 -0
  13. package/dist/agentConnections/statusResponse.d.ts.map +1 -1
  14. package/dist/agentConnections/statusResponse.js +19 -11
  15. package/dist/agentConnections/store.d.ts.map +1 -1
  16. package/dist/agentConnections/store.js +6 -32
  17. package/dist/agentConnections/warehouseStatus.d.ts.map +1 -1
  18. package/dist/agentConnections/warehouseStatus.js +4 -26
  19. package/dist/config.d.ts.map +1 -1
  20. package/dist/config.js +2 -0
  21. package/dist/connectionErrors.fixture.d.ts +2 -0
  22. package/dist/connectionErrors.fixture.d.ts.map +1 -0
  23. package/dist/connectionErrors.fixture.js +38 -0
  24. package/dist/dbt/targets/Databricks/oauth.d.ts.map +1 -1
  25. package/dist/dbt/targets/Databricks/oauth.js +3 -3
  26. package/dist/errorHandler.fixture.d.ts +2 -0
  27. package/dist/errorHandler.fixture.d.ts.map +1 -0
  28. package/dist/errorHandler.fixture.js +48 -0
  29. package/dist/handlers/agentConnectionConnect.d.ts.map +1 -1
  30. package/dist/handlers/agentConnectionConnect.js +18 -8
  31. package/dist/handlers/agentConnectionStatus.d.ts.map +1 -1
  32. package/dist/handlers/agentConnectionStatus.js +5 -1
  33. package/dist/handlers/agentRevoke.d.ts.map +1 -1
  34. package/dist/handlers/agentRevoke.js +5 -0
  35. package/dist/handlers/apps/appCodeFiles.d.ts.map +1 -1
  36. package/dist/handlers/apps/appCodeFiles.js +4 -1
  37. package/dist/handlers/apps/appsDownload.d.ts.map +1 -1
  38. package/dist/handlers/apps/appsDownload.js +22 -6
  39. package/dist/handlers/asyncQuery.d.ts +1 -0
  40. package/dist/handlers/asyncQuery.d.ts.map +1 -1
  41. package/dist/handlers/asyncQuery.js +15 -0
  42. package/dist/handlers/compile.d.ts.map +1 -1
  43. package/dist/handlers/compile.js +3 -1
  44. package/dist/handlers/dbt/apiClient.d.ts +1 -0
  45. package/dist/handlers/dbt/apiClient.d.ts.map +1 -1
  46. package/dist/handlers/dbt/apiClient.js +68 -17
  47. package/dist/handlers/deploy.d.ts.map +1 -1
  48. package/dist/handlers/deploy.js +10 -0
  49. package/dist/handlers/download.d.ts.map +1 -1
  50. package/dist/handlers/download.js +31 -8
  51. package/dist/handlers/getProject.d.ts.map +1 -1
  52. package/dist/handlers/getProject.js +10 -1
  53. package/dist/handlers/homepagesAsCode.d.ts.map +1 -1
  54. package/dist/handlers/homepagesAsCode.js +4 -1
  55. package/dist/handlers/runChart.d.ts.map +1 -1
  56. package/dist/handlers/runChart.js +8 -2
  57. package/dist/handlers/spacesAsCode.d.ts.map +1 -1
  58. package/dist/handlers/spacesAsCode.js +16 -3
  59. package/dist/handlers/sql.d.ts.map +1 -1
  60. package/dist/handlers/sql.js +3 -2
  61. package/dist/handlers/timestampConversion.d.ts.map +1 -1
  62. package/dist/handlers/timestampConversion.js +6 -0
  63. package/dist/ordinaryError.main.json +20 -0
  64. package/dist/outputUnchanged.main.json +30 -0
  65. package/package.json +3 -3
@@ -11,6 +11,7 @@ const initialToken_1 = require("../agentConnections/initialToken");
11
11
  const lifecycle_1 = require("../agentConnections/lifecycle");
12
12
  const personalRecovery_1 = require("../agentConnections/personalRecovery");
13
13
  const schema_1 = require("../agentConnections/schema");
14
+ const serverError_1 = require("../agentConnections/serverError");
14
15
  const statusResponse_1 = require("../agentConnections/statusResponse");
15
16
  const store_1 = require("../agentConnections/store");
16
17
  const warehouseStatus_1 = require("../agentConnections/warehouseStatus");
@@ -44,7 +45,7 @@ const requestResults = async (response) => {
44
45
  catch {
45
46
  throw new ApprovalStartError(couldNotStart);
46
47
  }
47
- if (!response.ok) {
48
+ if (!response.ok || envelope.status !== 'ok') {
48
49
  const error = typeof envelope.error === 'object' && envelope.error !== null
49
50
  ? (0, statusResponse_1.responseRecord)(envelope.error)
50
51
  : {};
@@ -53,10 +54,8 @@ const requestResults = async (response) => {
53
54
  throw availabilityError;
54
55
  if (response.status === 403)
55
56
  throw new ApprovalStartError('The server refused agent connection approval. Check your permissions with an administrator.');
56
- throw new ApprovalStartError(couldNotStart);
57
+ throw new ApprovalStartError(`${couldNotStart} ${(0, serverError_1.connectionServerError)(response.status, envelope).message}`);
57
58
  }
58
- if (envelope.status !== 'ok')
59
- throw new ApprovalStartError(couldNotStart);
60
59
  return (0, statusResponse_1.responseRecord)(envelope.results);
61
60
  };
62
61
  const personIdentity = (person) => {
@@ -125,6 +124,7 @@ const agentConnectionConnectHandler = async (options, dependencies = {
125
124
  console.error(`Replacing agent connection slot ${safeText(input.name)}. The old credential stays until the new approval is verified. The old connection will not be revoked.`);
126
125
  const state = (0, crypto_1.randomBytes)(32).toString('base64url');
127
126
  const verifier = (0, crypto_1.randomBytes)(32).toString('base64url');
127
+ secrets.push(verifier);
128
128
  const codeChallenge = (0, crypto_1.createHash)('sha256')
129
129
  .update(verifier)
130
130
  .digest('base64url');
@@ -152,7 +152,9 @@ const agentConnectionConnectHandler = async (options, dependencies = {
152
152
  }),
153
153
  }));
154
154
  if (typeof approval.authorizationUrl !== 'string' ||
155
- !bootstrap.publicTextIsSafe(approval.authorizationUrl) ||
155
+ !bootstrap.publicTextIsSafe(approval.authorizationUrl, [
156
+ verifier,
157
+ ]) ||
156
158
  !/^https?:\/\//.test(approval.authorizationUrl) ||
157
159
  approval.issuer !== instance ||
158
160
  approval.resource !== instance ||
@@ -162,13 +164,21 @@ const agentConnectionConnectHandler = async (options, dependencies = {
162
164
  Date.parse(approval.expiresAt) <= Date.now())
163
165
  throw new ApprovalStartError(couldNotStart);
164
166
  const approvalDeadline = Date.parse(approval.expiresAt);
165
- const authorizationUrl = (0, apiUrl_1.agentConnectionApiUrl)(instance, approval.authorizationUrl);
166
- const destination = new URL(authorizationUrl);
167
- if (!bootstrap.publicTextIsSafe(authorizationUrl) ||
167
+ const suppliedAuthorizationUrl = (0, apiUrl_1.agentConnectionApiUrl)(instance, approval.authorizationUrl);
168
+ const destination = new URL(suppliedAuthorizationUrl);
169
+ if (!bootstrap.publicTextIsSafe(suppliedAuthorizationUrl, [verifier]) ||
168
170
  destination.pathname !==
169
171
  new URL(`${instance}/api/v1/oauth/authorize`).pathname ||
170
172
  destination.hash)
171
173
  throw new ApprovalStartError(couldNotStart);
174
+ const requestUuid = destination.searchParams.get('agent_request');
175
+ if (!requestUuid ||
176
+ !(0, uuid_1.validate)(requestUuid) ||
177
+ destination.searchParams.getAll('agent_request').length !== 1)
178
+ throw new ApprovalStartError(couldNotStart);
179
+ const localAuthorizationUrl = new URL(`${instance}/api/v1/oauth/authorize`);
180
+ localAuthorizationUrl.searchParams.set('agent_request', requestUuid);
181
+ const authorizationUrl = localAuthorizationUrl.href;
172
182
  console.error(`Open this page to approve the agent connection:\n${authorizationUrl}`);
173
183
  console.error('Waiting for browser approval and warehouse setup...');
174
184
  phase = 'callback';
@@ -1 +1 @@
1
- {"version":3,"file":"agentConnectionStatus.d.ts","sourceRoot":"","sources":["../../src/handlers/agentConnectionStatus.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD,MAAM,MAAM,uBAAuB,GAAG,YAAY,GAAG;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAyCF,eAAO,MAAM,4BAA4B,YAC5B,uBAAuB,KACjC,OAAO,CAAC,IAAI,CA6Od,CAAC"}
1
+ {"version":3,"file":"agentConnectionStatus.d.ts","sourceRoot":"","sources":["../../src/handlers/agentConnectionStatus.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD,MAAM,MAAM,uBAAuB,GAAG,YAAY,GAAG;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAyCF,eAAO,MAAM,4BAA4B,YAC5B,uBAAuB,KACjC,OAAO,CAAC,IAAI,CAgPd,CAAC"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.agentConnectionStatusHandler = void 0;
4
4
  const common_1 = require("@lightdash/common");
5
5
  const lifecycle_1 = require("../agentConnections/lifecycle");
6
+ const serverError_1 = require("../agentConnections/serverError");
6
7
  const statusResponse_1 = require("../agentConnections/statusResponse");
7
8
  const store_1 = require("../agentConnections/store");
8
9
  const warehouseStatus_1 = require("../agentConnections/warehouseStatus");
@@ -62,6 +63,7 @@ const agentConnectionStatusHandler = async (options) => {
62
63
  },
63
64
  });
64
65
  const value = await response.json();
66
+ (0, serverError_1.checkConnectionErrorEnvelope)(response.status, value);
65
67
  const requestedSlot = slot;
66
68
  const latest = await store.readSlot(slot);
67
69
  if (!latest || latest.grantUuid !== slot.grantUuid)
@@ -95,7 +97,9 @@ const agentConnectionStatusHandler = async (options) => {
95
97
  state = failure.state;
96
98
  else if (failure instanceof statusResponse_1.ConnectionMismatchError)
97
99
  state = 'mismatched';
98
- if (state === 'invalid')
100
+ if (failure instanceof serverError_1.ConnectionServerError)
101
+ error = `Connection status is unconfirmed. ${failure.message}`;
102
+ else if (state === 'invalid')
99
103
  error =
100
104
  slot === null
101
105
  ? 'Invalid agent connection data. Reconnect before using this slot.'
@@ -1 +1 @@
1
- {"version":3,"file":"agentRevoke.d.ts","sourceRoot":"","sources":["../../src/handlers/agentRevoke.ts"],"names":[],"mappings":"AAyBA,MAAM,MAAM,kBAAkB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AACF,eAAO,MAAM,kBAAkB,YAClB,kBAAkB,KAC5B,OAAO,CAAC,IAAI,CAqJd,CAAC"}
1
+ {"version":3,"file":"agentRevoke.d.ts","sourceRoot":"","sources":["../../src/handlers/agentRevoke.ts"],"names":[],"mappings":"AA6BA,MAAM,MAAM,kBAAkB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AACF,eAAO,MAAM,kBAAkB,YAClB,kBAAkB,KAC5B,OAAO,CAAC,IAAI,CAyJd,CAAC"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.agentRevokeHandler = void 0;
4
4
  const lifecycle_1 = require("../agentConnections/lifecycle");
5
5
  const personalRecovery_1 = require("../agentConnections/personalRecovery");
6
+ const serverError_1 = require("../agentConnections/serverError");
6
7
  const statusResponse_1 = require("../agentConnections/statusResponse");
7
8
  const store_1 = require("../agentConnections/store");
8
9
  const config_1 = require("../config");
@@ -41,6 +42,7 @@ const agentRevokeHandler = async (options) => {
41
42
  signal: AbortSignal.timeout(15_000),
42
43
  });
43
44
  const value = await response.json();
45
+ (0, serverError_1.checkConnectionErrorEnvelope)(response.status, value);
44
46
  const envelope = (0, statusResponse_1.responseRecord)(value);
45
47
  const person = (0, statusResponse_1.responseRecord)(envelope.results);
46
48
  if (envelope.status !== 'ok' ||
@@ -85,6 +87,7 @@ const agentRevokeHandler = async (options) => {
85
87
  },
86
88
  });
87
89
  const value = await response.json();
90
+ (0, serverError_1.checkConnectionErrorEnvelope)(response.status, value);
88
91
  const checked = (0, statusResponse_1.connectionResponse)(value, slot, false);
89
92
  if (checked.lastReported.status !== 'revoked' ||
90
93
  checked.lastReported.revokedAt === null)
@@ -99,6 +102,8 @@ const agentRevokeHandler = async (options) => {
99
102
  if (confirmed)
100
103
  error =
101
104
  'The server confirmed revocation, but the local credential could not be removed.';
105
+ else if (failure instanceof serverError_1.ConnectionServerError)
106
+ error = `Revocation was not confirmed. The local slot was kept. ${failure.message}`;
102
107
  else if (slot === null)
103
108
  error =
104
109
  key === null
@@ -1 +1 @@
1
- {"version":3,"file":"appCodeFiles.d.ts","sourceRoot":"","sources":["../../../src/handlers/apps/appCodeFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAKH,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,cAAc,EAEnB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAChC,MAAM,mBAAmB,CAAC;AAO3B;;;;GAIG;AACH,eAAO,MAAM,aAAa,SAChB,MAAM,WACH,MAAM,gBACD,GAAG,CAAC,MAAM,CAAC,KAC1B,MAcF,CAAC;AAEF,eAAO,MAAM,eAAe,QACnB,MAAM,SACJ,eAAe,EAAE,KACzB,OAAO,CAAC,IAAI,CAsBd,CAAC;AAEF,eAAO,MAAM,iBAAiB,QACrB,MAAM,WACF,cAAc,KACxB,OAAO,CAAC,IAAI,CAiBd,CAAC;AAEF,eAAO,MAAM,gBAAgB,QACpB,MAAM,QACL,WAAW,KAClB,OAAO,CAAC,IAAI,CAWd,CAAC;AAmCF,eAAO,MAAM,eAAe,SAClB,WAAW,qBACE,MAAM,QACnB;IACF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB,KACF,wBAqBF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,aACnB,eAAe,gBACX,GAAG,CAAC,MAAM,CAAC,KAC1B,MAgBF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,QAC1B,MAAM,QACL,mBAAmB,KAC1B,OAAO,CAAC,IAAI,CAGd,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,WAAW,EAAE,MAAM,CAAC;IAKpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAIxB,cAAc,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,QAC3B,MAAM,KACZ,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAmCrC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,eAClB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,wBACZ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC7C,MAAM,EAOH,CAAC;AAEP;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,yBACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,eAC/B,MAAM,KACpB,MAAM,CAAC,MAAM,EAAE,MAAM,CAgBvB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,SAC3B,WAAW,cACL,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAC5B,mBAAmB,KAC1B,WAC4E,CAAC;AAEhF,eAAO,MAAM,mBAAmB,QACvB,MAAM,KACZ,OAAO,CAAC,eAAe,CAYzB,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAAe,MAAM,KAAG,OAAO,CAAC,WAAW,CAYxE,CAAC"}
1
+ {"version":3,"file":"appCodeFiles.d.ts","sourceRoot":"","sources":["../../../src/handlers/apps/appCodeFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAKH,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,cAAc,EAEnB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAChC,MAAM,mBAAmB,CAAC;AAQ3B;;;;GAIG;AACH,eAAO,MAAM,aAAa,SAChB,MAAM,WACH,MAAM,gBACD,GAAG,CAAC,MAAM,CAAC,KAC1B,MAcF,CAAC;AAEF,eAAO,MAAM,eAAe,QACnB,MAAM,SACJ,eAAe,EAAE,KACzB,OAAO,CAAC,IAAI,CAwBd,CAAC;AAEF,eAAO,MAAM,iBAAiB,QACrB,MAAM,WACF,cAAc,KACxB,OAAO,CAAC,IAAI,CAiBd,CAAC;AAEF,eAAO,MAAM,gBAAgB,QACpB,MAAM,QACL,WAAW,KAClB,OAAO,CAAC,IAAI,CAWd,CAAC;AAmCF,eAAO,MAAM,eAAe,SAClB,WAAW,qBACE,MAAM,QACnB;IACF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB,KACF,wBAqBF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,aACnB,eAAe,gBACX,GAAG,CAAC,MAAM,CAAC,KAC1B,MAgBF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,QAC1B,MAAM,QACL,mBAAmB,KAC1B,OAAO,CAAC,IAAI,CAGd,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,WAAW,EAAE,MAAM,CAAC;IAKpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAIxB,cAAc,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,QAC3B,MAAM,KACZ,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAmCrC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,eAClB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,wBACZ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC7C,MAAM,EAOH,CAAC;AAEP;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,yBACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,eAC/B,MAAM,KACpB,MAAM,CAAC,MAAM,EAAE,MAAM,CAgBvB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,SAC3B,WAAW,cACL,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAC5B,mBAAmB,KAC1B,WAC4E,CAAC;AAEhF,eAAO,MAAM,mBAAmB,QACvB,MAAM,KACZ,OAAO,CAAC,eAAe,CAYzB,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAAe,MAAM,KAAG,OAAO,CAAC,WAAW,CAYxE,CAAC"}
@@ -6,6 +6,7 @@ const common_1 = require("@lightdash/common");
6
6
  const fs_1 = require("fs");
7
7
  const path = tslib_1.__importStar(require("path"));
8
8
  const YAML = tslib_1.__importStar(require("yaml"));
9
+ const credentials_1 = require("../../credentials");
9
10
  const MANIFEST_FILENAME = 'lightdash-app.yml';
10
11
  /**
11
12
  * Derives a collision-safe folder name for a data app.
@@ -36,7 +37,9 @@ const writeFilesToDir = async (dir, files) => {
36
37
  // if the server returns a traversal path.
37
38
  if (filePath !== resolvedRoot &&
38
39
  !filePath.startsWith(resolvedRoot + path.sep)) {
39
- throw new Error(`Refusing to write file outside the target directory: ${file.path}`);
40
+ throw new Error((0, credentials_1.getAgentConnectionSelection)() !== null
41
+ ? 'Refusing to write a file outside the target directory.'
42
+ : `Refusing to write file outside the target directory: ${file.path}`);
40
43
  }
41
44
  await fs_1.promises.mkdir(path.dirname(filePath), { recursive: true });
42
45
  await fs_1.promises.writeFile(filePath, Buffer.from(file.contentBase64, 'base64'));
@@ -1 +1 @@
1
- {"version":3,"file":"appsDownload.d.ts","sourceRoot":"","sources":["../../../src/handlers/apps/appsDownload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"appsDownload.d.ts","sourceRoot":"","sources":["../../../src/handlers/apps/appsDownload.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const common_1 = require("@lightdash/common");
6
6
  const path = tslib_1.__importStar(require("path"));
7
7
  const uuid_1 = require("uuid");
8
+ const credentials_1 = require("../../credentials");
8
9
  const globalState_1 = tslib_1.__importDefault(require("../../globalState"));
9
10
  const styles = tslib_1.__importStar(require("../../styles"));
10
11
  const appCodeFiles_1 = require("./appCodeFiles");
@@ -159,7 +160,9 @@ exports.computeLinkedAppSlugs = computeLinkedAppSlugs;
159
160
  */
160
161
  const ensureDownloadedAppContext = (appRef, code) => {
161
162
  if (code.context === undefined) {
162
- throw new Error(`This Lightdash server does not support app context downloads (app ${code.manifest.slug ?? appRef}). Upgrade the server, or use a CLI version matching your server.`);
163
+ throw new Error((0, credentials_1.getAgentConnectionSelection)() !== null
164
+ ? 'This server does not support app context downloads. Upgrade the server, or use a CLI version matching your server.'
165
+ : `This Lightdash server does not support app context downloads (app ${code.manifest.slug ?? appRef}). Upgrade the server, or use a CLI version matching your server.`);
163
166
  }
164
167
  return code;
165
168
  };
@@ -232,7 +235,9 @@ const appsDownloadSummary = (successCount, total, failures, appsDir, skippedNotB
232
235
  return {
233
236
  ok: false,
234
237
  message: `${base} — ${failures.length} failed`,
235
- failureLines: failures.map((failure) => ` ✖ ${failure.appRef}: ${failure.message}`),
238
+ failureLines: failures.map((failure) => (0, credentials_1.getAgentConnectionSelection)() !== null
239
+ ? ' ✖ An app could not be downloaded.'
240
+ : ` ✖ ${failure.appRef}: ${failure.message}`),
236
241
  };
237
242
  };
238
243
  exports.appsDownloadSummary = appsDownloadSummary;
@@ -256,7 +261,9 @@ const downloadAppsToDir = async (args) => {
256
261
  const skipReason = skipBundle?.(code.manifest) ?? null;
257
262
  if (skipReason !== null) {
258
263
  skippedWrongKindCount += 1;
259
- globalState_1.default.log(styles.warning(`Skipped ${appRef}: ${skipReason}`));
264
+ globalState_1.default.log(styles.warning((0, credentials_1.getAgentConnectionSelection)() !== null
265
+ ? 'An app was skipped because its kind does not match the requested kind.'
266
+ : `Skipped ${appRef}: ${skipReason}`));
260
267
  onProgress?.(successCount +
261
268
  skippedNotBuiltCount +
262
269
  skippedWrongKindCount +
@@ -297,11 +304,20 @@ const downloadAppsToDir = async (args) => {
297
304
  const outcome = (0, exports.classifyAppDownloadError)(appErr);
298
305
  if (outcome.kind === 'skip-not-built') {
299
306
  skippedNotBuiltCount += 1;
300
- globalState_1.default.debug(`> Skipped app ${appRef}: no built version to download`);
307
+ globalState_1.default.debug((0, credentials_1.getAgentConnectionSelection)() !== null
308
+ ? 'An app was skipped because it has no built version.'
309
+ : `> Skipped app ${appRef}: no built version to download`);
301
310
  }
302
311
  else {
303
- failures.push({ appRef, message: outcome.message });
304
- globalState_1.default.log(styles.error(`Failed to download app ${appRef}: ${outcome.message}`));
312
+ failures.push({
313
+ appRef: (0, credentials_1.getAgentConnectionSelection)() !== null ? 'App' : appRef,
314
+ message: (0, credentials_1.getAgentConnectionSelection)() !== null
315
+ ? 'An app could not be downloaded.'
316
+ : outcome.message,
317
+ });
318
+ globalState_1.default.log(styles.error((0, credentials_1.getAgentConnectionSelection)() !== null
319
+ ? 'An app could not be downloaded.'
320
+ : `Failed to download app ${appRef}: ${outcome.message}`));
305
321
  }
306
322
  }
307
323
  onProgress?.(successCount +
@@ -1,4 +1,5 @@
1
1
  import { ApiGetAsyncQueryResults, ResultRow } from '@lightdash/common';
2
+ export declare const validateConnectionQueryUuid: (value: string) => string;
2
3
  export declare function pollForResults(projectUuid: string, queryUuid: string, options?: {
3
4
  pageSize?: number;
4
5
  backoffMs?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"asyncQuery.d.ts","sourceRoot":"","sources":["../../src/handlers/asyncQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,uBAAuB,EAEvB,SAAS,EACZ,MAAM,mBAAmB,CAAC;AAa3B,wBAAsB,cAAc,CAChC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACxD,OAAO,CAAC,uBAAuB,CAAC,CAwBlC;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,CAkBzE"}
1
+ {"version":3,"file":"asyncQuery.d.ts","sourceRoot":"","sources":["../../src/handlers/asyncQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,uBAAuB,EAEvB,SAAS,EACZ,MAAM,mBAAmB,CAAC;AAe3B,eAAO,MAAM,2BAA2B,UAAW,MAAM,KAAG,MAI3D,CAAC;AAEF,wBAAsB,cAAc,CAChC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACxD,OAAO,CAAC,uBAAuB,CAAC,CA+BlC;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,CAkBzE"}
@@ -1,9 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateConnectionQueryUuid = void 0;
3
4
  exports.pollForResults = pollForResults;
4
5
  exports.resultsToCsv = resultsToCsv;
5
6
  const tslib_1 = require("tslib");
6
7
  const common_1 = require("@lightdash/common");
8
+ const uuid_1 = require("uuid");
9
+ const credentials_1 = require("../credentials");
7
10
  const globalState_1 = tslib_1.__importDefault(require("../globalState"));
8
11
  const apiClient_1 = require("./dbt/apiClient");
9
12
  const INITIAL_BACKOFF_MS = 250;
@@ -13,6 +16,12 @@ function sleep(ms) {
13
16
  setTimeout(resolve, ms);
14
17
  });
15
18
  }
19
+ const validateConnectionQueryUuid = (value) => {
20
+ if ((0, credentials_1.getAgentConnectionSelection)() !== null && !(0, uuid_1.validate)(value))
21
+ throw new Error('The server returned an invalid query identifier.');
22
+ return value;
23
+ };
24
+ exports.validateConnectionQueryUuid = validateConnectionQueryUuid;
16
25
  async function pollForResults(projectUuid, queryUuid, options = {}) {
17
26
  const { pageSize, backoffMs = INITIAL_BACKOFF_MS } = options;
18
27
  const pageSizeParam = pageSize ? `?pageSize=${pageSize}` : '';
@@ -21,6 +30,12 @@ async function pollForResults(projectUuid, queryUuid, options = {}) {
21
30
  url: `/api/v2/projects/${projectUuid}/query/${queryUuid}${pageSizeParam}`,
22
31
  body: undefined,
23
32
  });
33
+ if ((0, credentials_1.getAgentConnectionSelection)() !== null) {
34
+ if (!Object.values(common_1.QueryHistoryStatus).includes(result.status))
35
+ throw new Error('The server returned an invalid query status.');
36
+ if (result.status === common_1.QueryHistoryStatus.ERROR)
37
+ throw new Error('Query execution failed.');
38
+ }
24
39
  globalState_1.default.debug(`> Query status: ${result.status}`);
25
40
  if (result.status === common_1.QueryHistoryStatus.PENDING ||
26
41
  result.status === common_1.QueryHistoryStatus.QUEUED ||
@@ -1 +1 @@
1
- {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/handlers/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EAOH,OAAO,EACP,YAAY,EAgBf,MAAM,mBAAmB,CAAC;AAsB3B,OAAO,EAAE,iBAAiB,EAA8B,MAAM,eAAe,CAAC;AAI9E,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,GAAG;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,CAAC,OAAO,GAAG,YAAY,CAAC,EAAE,CAAC;IACrC,iBAAiB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,uBAAuB,YACvB,OAAO,GAAG,YAAY,KAChC,OAIW,CAAC;AAEf,eAAO,MAAM,0BAA0B,YAC1B,OAAO,GAAG,YAAY,KAChC,OAAO,GAAG,YAiBZ,CAAC;AAgTF,eAAO,MAAM,cAAc,YACd,qBAAqB,KAC/B,OAAO,CAAC,oBAAoB,CA8b9B,CAAC;AAEF,eAAO,MAAM,OAAO,YACP,qBAAqB,KAC/B,OAAO,CAAC,CAAC,OAAO,GAAG,YAAY,CAAC,EAAE,CACO,CAAC;AAE7C,eAAO,MAAM,cAAc,oBACN,qBAAqB,kBAmCzC,CAAC"}
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/handlers/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EAOH,OAAO,EACP,YAAY,EAgBf,MAAM,mBAAmB,CAAC;AAsB3B,OAAO,EAAE,iBAAiB,EAA8B,MAAM,eAAe,CAAC;AAI9E,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,GAAG;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,CAAC,OAAO,GAAG,YAAY,CAAC,EAAE,CAAC;IACrC,iBAAiB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,uBAAuB,YACvB,OAAO,GAAG,YAAY,KAChC,OAIW,CAAC;AAEf,eAAO,MAAM,0BAA0B,YAC1B,OAAO,GAAG,YAAY,KAChC,OAAO,GAAG,YAiBZ,CAAC;AAgTF,eAAO,MAAM,cAAc,YACd,qBAAqB,KAC/B,OAAO,CAAC,oBAAoB,CAic9B,CAAC;AAEF,eAAO,MAAM,OAAO,YACP,qBAAqB,KAC/B,OAAO,CAAC,CAAC,OAAO,GAAG,YAAY,CAAC,EAAE,CACO,CAAC;AAE7C,eAAO,MAAM,cAAc,oBACN,qBAAqB,kBAmCzC,CAAC"}
@@ -286,7 +286,9 @@ const compileProject = async (options) => {
286
286
  url: manifestEndpoint,
287
287
  body: undefined,
288
288
  });
289
- const servedManifest = await response.json();
289
+ const servedManifest = await ((0, credentials_1.getAgentConnectionSelection)() === null
290
+ ? response.json()
291
+ : (0, apiClient_1.readRawApiJson)(response));
290
292
  if (!isServedDbtManifest(servedManifest)) {
291
293
  throw new Error(`${manifestEndpoint} returned an invalid manifest: expected an object with metadata and a nodes record`);
292
294
  }
@@ -13,6 +13,7 @@ type LightdashRawApiProps = LightdashApiProps & {
13
13
  };
14
14
  export declare const setGzipEnabled: (enabled: boolean) => void;
15
15
  export declare const lightdashRawApi: ({ method, url, body, headers: requestHeaders, signal, safeToRetry, lifecycle, }: LightdashRawApiProps) => Promise<Response>;
16
+ export declare const readRawApiJson: (response: Response) => Promise<unknown>;
16
17
  export declare const lightdashApi: <T extends ApiResponse['results']>({ method, url, body, signal, safeToRetry, }: LightdashApiProps) => Promise<T>;
17
18
  export declare const getUserContext: () => Promise<LightdashUserWithAbilityRules>;
18
19
  export type ContentAsCodeUploadPermissions = {
@@ -1 +1 @@
1
- {"version":3,"file":"apiClient.d.ts","sourceRoot":"","sources":["../../../src/handlers/dbt/apiClient.ts"],"names":[],"mappings":"AACA,OAAO,EAGH,WAAW,EAIX,WAAW,EAEX,KAAK,6BAA6B,EAGrC,MAAM,mBAAmB,CAAC;AAC3B,OAAc,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAc5D,KAAK,iBAAiB,GAAG;IACrB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACpD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,KAAK,oBAAoB,GAAG,iBAAiB,GAAG;IAC5C,SAAS,CAAC,EAAE,OAAO,kCAAkC,EAAE,kBAAkB,CAAC;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC,CAAC;AAKF,eAAO,MAAM,cAAc,YAAa,OAAO,SAE9C,CAAC;AAmDF,eAAO,MAAM,eAAe,oFAQzB,oBAAoB,KAAG,OAAO,CAAC,QAAQ,CAuMzC,CAAC;AAoBF,eAAO,MAAM,YAAY,GAAU,CAAC,SAAS,WAAW,CAAC,SAAS,CAAC,+CAMhE,iBAAiB,KAAG,OAAO,CAAC,CAAC,CAyD/B,CAAC;AAEF,eAAO,MAAM,cAAc,QACb,OAAO,CAAC,6BAA6B,CAMzC,CAAC;AAEX,MAAM,MAAM,8BAA8B,GAAG;IACzC,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,mBAAmB,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF,eAAO,MAAM,iCAAiC,gBAC7B,MAAM,KACpB,OAAO,CAAC,8BAA8B,CAiGxC,CAAC;AAEF,eAAO,MAAM,8BAA8B,wBAClB,MAAM,GAAG,SAAS,eAC1B,WAAW,KACzB,OAAO,CAAC,IAAI,CA+Gd,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAAa,OAAO,CAAC,IAAI,CA+B1D,CAAC"}
1
+ {"version":3,"file":"apiClient.d.ts","sourceRoot":"","sources":["../../../src/handlers/dbt/apiClient.ts"],"names":[],"mappings":"AACA,OAAO,EAGH,WAAW,EAIX,WAAW,EAEX,KAAK,6BAA6B,EAGrC,MAAM,mBAAmB,CAAC;AAC3B,OAAc,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAkB5D,KAAK,iBAAiB,GAAG;IACrB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACpD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,KAAK,oBAAoB,GAAG,iBAAiB,GAAG;IAC5C,SAAS,CAAC,EAAE,OAAO,kCAAkC,EAAE,kBAAkB,CAAC;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC,CAAC;AAKF,eAAO,MAAM,cAAc,YAAa,OAAO,SAE9C,CAAC;AAqDF,eAAO,MAAM,eAAe,oFAQzB,oBAAoB,KAAG,OAAO,CAAC,QAAQ,CAyMzC,CAAC;AAEF,eAAO,MAAM,cAAc,aAAoB,QAAQ,KAAG,OAAO,CAAC,OAAO,CAsBxE,CAAC;AA6BF,eAAO,MAAM,YAAY,GAAU,CAAC,SAAS,WAAW,CAAC,SAAS,CAAC,+CAMhE,iBAAiB,KAAG,OAAO,CAAC,CAAC,CAsE/B,CAAC;AAEF,eAAO,MAAM,cAAc,QACb,OAAO,CAAC,6BAA6B,CAMzC,CAAC;AAEX,MAAM,MAAM,8BAA8B,GAAG;IACzC,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,mBAAmB,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF,eAAO,MAAM,iCAAiC,gBAC7B,MAAM,KACpB,OAAO,CAAC,8BAA8B,CAiGxC,CAAC;AAEF,eAAO,MAAM,8BAA8B,wBAClB,MAAM,GAAG,SAAS,eAC1B,WAAW,KACzB,OAAO,CAAC,IAAI,CA+Gd,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAAa,OAAO,CAAC,IAAI,CA8C1D,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.checkLightdashVersion = exports.checkProjectCreationPermission = exports.getContentAsCodeUploadPermissions = exports.getUserContext = exports.lightdashApi = exports.lightdashRawApi = exports.setGzipEnabled = void 0;
3
+ exports.checkLightdashVersion = exports.checkProjectCreationPermission = exports.getContentAsCodeUploadPermissions = exports.getUserContext = exports.lightdashApi = exports.readRawApiJson = exports.lightdashRawApi = exports.setGzipEnabled = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const ability_1 = require("@casl/ability");
6
6
  const common_1 = require("@lightdash/common");
@@ -8,6 +8,7 @@ const node_fetch_1 = tslib_1.__importDefault(require("node-fetch"));
8
8
  const stream_1 = require("stream");
9
9
  const url_1 = require("url");
10
10
  const zlib_1 = require("zlib");
11
+ const serverError_1 = require("../../agentConnections/serverError");
11
12
  const config_1 = require("../../config");
12
13
  const credentials_1 = require("../../credentials");
13
14
  const env_1 = require("../../env");
@@ -58,6 +59,7 @@ const fetchWithTimeout = async (fullUrl, init) => {
58
59
  clearTimeout(timer);
59
60
  }
60
61
  };
62
+ const connectionResponses = new WeakSet();
61
63
  const lightdashRawApi = async ({ method, url, body, headers: requestHeaders = {}, signal, safeToRetry = false, lifecycle, }) => {
62
64
  const config = await ((0, credentials_1.getAgentConnectionSelection)() === null
63
65
  ? (0, config_1.getConfig)()
@@ -162,7 +164,8 @@ const lightdashRawApi = async ({ method, url, body, headers: requestHeaders = {}
162
164
  if (response.status === 401)
163
165
  throw new Error(`Agent connection ${(0, credentials_1.getAgentConnectionSelection)()} could not authenticate. No personal credential was used.`);
164
166
  if (!response.ok)
165
- throw new Error(`The server rejected the agent connection request (status ${response.status}).`);
167
+ throw (0, serverError_1.connectionServerError)(response.status, await response.json().catch(() => null));
168
+ connectionResponses.add(response);
166
169
  return response;
167
170
  }
168
171
  if (!(config.context?.apiKey && config.context.serverUrl)) {
@@ -193,27 +196,59 @@ const lightdashRawApi = async ({ method, url, body, headers: requestHeaders = {}
193
196
  return response;
194
197
  };
195
198
  exports.lightdashRawApi = lightdashRawApi;
196
- async function agentSafeReadApi(props) {
197
- return (0, exports.lightdashRawApi)({ ...props })
198
- .then((r) => r.json())
199
- .then((d) => {
200
- globalState_1.default.debug(`> HTTP request returned status: ${d.status}`);
201
- switch (d.status) {
202
- case 'ok':
203
- return d.results;
204
- case 'error':
205
- throw new common_1.LightdashError(d.error);
206
- default:
207
- throw new Error(d);
199
+ const readRawApiJson = async (response) => {
200
+ const connection = connectionResponses.has(response) ||
201
+ (0, credentials_1.getAgentConnectionSelection)() !== null;
202
+ try {
203
+ const value = await response.json();
204
+ if (connection &&
205
+ typeof value === 'object' &&
206
+ value !== null &&
207
+ 'status' in value &&
208
+ value.status === 'error')
209
+ throw (0, serverError_1.connectionServerError)(response.status, value);
210
+ return value;
211
+ }
212
+ catch (error) {
213
+ if (connection) {
214
+ if (error instanceof serverError_1.ConnectionServerError)
215
+ throw error;
216
+ throw (0, serverError_1.connectionServerError)(response.status, null);
208
217
  }
209
- });
210
- }
218
+ throw error;
219
+ }
220
+ };
221
+ exports.readRawApiJson = readRawApiJson;
222
+ const readApiResults = async (response) => {
223
+ const connection = (0, credentials_1.getAgentConnectionSelection)() !== null;
224
+ let data;
225
+ try {
226
+ data = await response.json();
227
+ }
228
+ catch (error) {
229
+ if (connection)
230
+ throw (0, serverError_1.connectionServerError)(response.status, null);
231
+ throw error;
232
+ }
233
+ if (connection &&
234
+ (typeof data !== 'object' || data === null || data.status !== 'ok'))
235
+ throw (0, serverError_1.connectionServerError)(response.status, data);
236
+ globalState_1.default.debug(`> HTTP request returned status: ${data.status}`);
237
+ switch (data.status) {
238
+ case 'ok':
239
+ return data.results;
240
+ case 'error':
241
+ throw new common_1.LightdashError(data.error);
242
+ default:
243
+ throw new Error(data);
244
+ }
245
+ };
211
246
  const lightdashApi = async ({ method, url, body, signal, safeToRetry, }) => {
212
247
  if ((0, credentials_1.getAgentConnectionSelection)() !== null &&
213
248
  safeToRetry &&
214
249
  method === 'GET' &&
215
250
  body === undefined) {
216
- return agentSafeReadApi({ method, url, body, signal, safeToRetry });
251
+ return readApiResults(await (0, exports.lightdashRawApi)({ method, url, body, signal, safeToRetry }));
217
252
  }
218
253
  const headers = {};
219
254
  let requestBody = body;
@@ -232,6 +267,14 @@ const lightdashApi = async ({ method, url, body, signal, safeToRetry, }) => {
232
267
  globalState_1.default.debug(`> Gzip compression failed, sending uncompressed: ${err}`);
233
268
  }
234
269
  }
270
+ if ((0, credentials_1.getAgentConnectionSelection)() !== null)
271
+ return readApiResults(await (0, exports.lightdashRawApi)({
272
+ method,
273
+ url,
274
+ body: requestBody,
275
+ headers,
276
+ signal,
277
+ }));
235
278
  return (0, exports.lightdashRawApi)({
236
279
  method,
237
280
  url,
@@ -415,9 +458,17 @@ const checkLightdashVersion = async () => {
415
458
  body: undefined,
416
459
  safeToRetry: true,
417
460
  });
461
+ if ((0, credentials_1.getAgentConnectionSelection)() !== null &&
462
+ (typeof health?.version !== 'string' ||
463
+ !/^\d+\.\d+\.\d+(?:-[a-z0-9.-]+)?(?:\+[a-z0-9.-]+)?$/i.test(health.version)))
464
+ throw new Error('The server returned invalid version data.');
418
465
  const cliMajor = env_1.CLI_VERSION.split('.')[0];
419
466
  const serverMajor = health.version.split('.')[0];
420
467
  if (cliMajor !== serverMajor) {
468
+ if ((0, credentials_1.getAgentConnectionSelection)() !== null) {
469
+ console.error('The CLI and server use different major versions. Use a CLI version that matches your server.');
470
+ return;
471
+ }
421
472
  const config = await ((0, credentials_1.getAgentConnectionSelection)() === null
422
473
  ? (0, config_1.getConfig)()
423
474
  : (0, config_1.getConfig)({ readOnly: true }));
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/handlers/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,OAAO,EACP,YAAY,EASZ,KAAK,eAAe,EACpB,KAAK,YAAY,EAGpB,MAAM,mBAAmB,CAAC;AAgB3B,OAAO,EAAE,cAAc,EAAqB,MAAM,0BAA0B,CAAC;AAgB7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAUlD,KAAK,oBAAoB,GAAG,iBAAiB,GAAG;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,wBAAwB,EAAE,OAAO,CAAC;IAClC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,UAAU,GAAG,oBAAoB,GAAG;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC/B,CAAC;AAkBF,eAAO,MAAM,eAAe,YACf,IAAI,CACT,oBAAoB,EACpB,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,SAAS,GAAG,QAAQ,CACrE,eACY,cAAc,mBACV,eAAe,GAAG,SAAS,KAC7C,OAAO,CAAC,YAAY,GAAG,SAAS,CA+BlC,CAAC;AAmSF,eAAO,MAAM,MAAM,aACL,CAAC,OAAO,GAAG,YAAY,CAAC,EAAE,WAC3B,UAAU,KACpB,OAAO,CAAC,IAAI,CAkLd,CAAC;AAiGF,eAAO,MAAM,aAAa,oBAA2B,oBAAoB,kBA+LxE,CAAC"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/handlers/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,OAAO,EACP,YAAY,EASZ,KAAK,eAAe,EACpB,KAAK,YAAY,EAGpB,MAAM,mBAAmB,CAAC;AAoB3B,OAAO,EAAE,cAAc,EAAqB,MAAM,0BAA0B,CAAC;AAgB7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAUlD,KAAK,oBAAoB,GAAG,iBAAiB,GAAG;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,wBAAwB,EAAE,OAAO,CAAC;IAClC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,UAAU,GAAG,oBAAoB,GAAG;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC/B,CAAC;AAkBF,eAAO,MAAM,eAAe,YACf,IAAI,CACT,oBAAoB,EACpB,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,SAAS,GAAG,QAAQ,CACrE,eACY,cAAc,mBACV,eAAe,GAAG,SAAS,KAC7C,OAAO,CAAC,YAAY,GAAG,SAAS,CA+BlC,CAAC;AAmTF,eAAO,MAAM,MAAM,aACL,CAAC,OAAO,GAAG,YAAY,CAAC,EAAE,WAC3B,UAAU,KACpB,OAAO,CAAC,IAAI,CAkLd,CAAC;AAiGF,eAAO,MAAM,aAAa,oBAA2B,oBAAoB,kBA+LxE,CAAC"}
@@ -8,6 +8,7 @@ const path_1 = tslib_1.__importDefault(require("path"));
8
8
  const url_1 = require("url");
9
9
  const uuid_1 = require("uuid");
10
10
  const commandPolicy_1 = require("../agentConnections/commandPolicy");
11
+ const responseValidation_1 = require("../agentConnections/responseValidation");
11
12
  const analytics_1 = require("../analytics/analytics");
12
13
  const config_1 = require("../config");
13
14
  const credentials_1 = require("../credentials");
@@ -78,6 +79,10 @@ const logDeployWarnings = (warningResults) => {
78
79
  !warningResults.exploresWithWarnings?.length) {
79
80
  return;
80
81
  }
82
+ if ((0, credentials_1.getAgentConnectionSelection)() !== null) {
83
+ console.error('The server reported compilation warnings. Review the project in the app.');
84
+ return;
85
+ }
81
86
  console.error(styles.warning(`\nCompilation warnings (${warningResults.warningCount})`));
82
87
  warningResults.exploresWithWarnings.forEach((explore) => {
83
88
  explore.warnings.forEach((warning) => {
@@ -183,6 +188,8 @@ const deployBatched = async (explores, options) => {
183
188
  url: `/api/v2/projects/${options.projectUuid}/deploy`,
184
189
  body: JSON.stringify({}),
185
190
  }));
191
+ (0, responseValidation_1.assertConnectionResponse)(typeof startSessionResponse?.deploySessionUuid === 'string' &&
192
+ (0, uuid_1.validate)(startSessionResponse.deploySessionUuid));
186
193
  sessionUuid = startSessionResponse.deploySessionUuid;
187
194
  }
188
195
  catch (error) {
@@ -215,6 +222,8 @@ const deployBatched = async (explores, options) => {
215
222
  complete: options.complete === true,
216
223
  }),
217
224
  }), batchIndex + 1);
225
+ (0, responseValidation_1.assertConnectionResponse)((0, responseValidation_1.isResponseCount)(response?.exploreCount) &&
226
+ (0, responseValidation_1.isResponseCount)(response?.batchNumber));
218
227
  globalState_1.default.log(styles.success(` ✓ Batch ${batchIndex + 1} uploaded (${response.exploreCount} explores)`));
219
228
  return response;
220
229
  };
@@ -245,6 +254,7 @@ const deployBatched = async (explores, options) => {
245
254
  target: options.deployTarget,
246
255
  }),
247
256
  });
257
+ (0, responseValidation_1.assertConnectionResponse)((0, responseValidation_1.isResponseCount)(finalizeResponse?.exploreCount));
248
258
  globalState_1.default.log(styles.success(`Deploy completed! ${finalizeResponse.exploreCount} explores deployed.`));
249
259
  logDeployWarnings(finalizeResponse.warnings);
250
260
  await analytics_1.LightdashAnalytics.track({
@@ -1 +1 @@
1
- {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../src/handlers/download.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../src/handlers/download.ts"],"names":[],"mappings":"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"}