@lightdash/warehouses 2.228.1 → 2.229.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 (90) hide show
  1. package/dist/.tsbuildinfo.build +1 -0
  2. package/package.json +4 -4
  3. package/dist/.tsbuildinfo +0 -1
  4. package/dist/ssh/sshTunnelFailure.test.d.ts +0 -2
  5. package/dist/ssh/sshTunnelFailure.test.d.ts.map +0 -1
  6. package/dist/ssh/sshTunnelFailure.test.js +0 -90
  7. package/dist/validateWarehouseColumnReferences.test.d.ts +0 -2
  8. package/dist/validateWarehouseColumnReferences.test.d.ts.map +0 -1
  9. package/dist/validateWarehouseColumnReferences.test.js +0 -168
  10. package/dist/warehouseClients/AthenaWarehouseClient.test.d.ts +0 -2
  11. package/dist/warehouseClients/AthenaWarehouseClient.test.d.ts.map +0 -1
  12. package/dist/warehouseClients/AthenaWarehouseClient.test.js +0 -261
  13. package/dist/warehouseClients/BigqueryWarehouseClient.mock.d.ts +0 -83
  14. package/dist/warehouseClients/BigqueryWarehouseClient.mock.d.ts.map +0 -1
  15. package/dist/warehouseClients/BigqueryWarehouseClient.mock.js +0 -130
  16. package/dist/warehouseClients/BigqueryWarehouseClient.test.d.ts +0 -2
  17. package/dist/warehouseClients/BigqueryWarehouseClient.test.d.ts.map +0 -1
  18. package/dist/warehouseClients/BigqueryWarehouseClient.test.js +0 -493
  19. package/dist/warehouseClients/ClickhouseWarehouseClient.test.d.ts +0 -2
  20. package/dist/warehouseClients/ClickhouseWarehouseClient.test.d.ts.map +0 -1
  21. package/dist/warehouseClients/ClickhouseWarehouseClient.test.js +0 -115
  22. package/dist/warehouseClients/DatabricksWarehouseClient.mock.d.ts +0 -17
  23. package/dist/warehouseClients/DatabricksWarehouseClient.mock.d.ts.map +0 -1
  24. package/dist/warehouseClients/DatabricksWarehouseClient.mock.js +0 -111
  25. package/dist/warehouseClients/DatabricksWarehouseClient.test.d.ts +0 -2
  26. package/dist/warehouseClients/DatabricksWarehouseClient.test.d.ts.map +0 -1
  27. package/dist/warehouseClients/DatabricksWarehouseClient.test.js +0 -592
  28. package/dist/warehouseClients/DatabricksWarehouseStartupRetry.test.d.ts +0 -2
  29. package/dist/warehouseClients/DatabricksWarehouseStartupRetry.test.d.ts.map +0 -1
  30. package/dist/warehouseClients/DatabricksWarehouseStartupRetry.test.js +0 -129
  31. package/dist/warehouseClients/DuckdbWarehouseClient.embedded.test.d.ts +0 -2
  32. package/dist/warehouseClients/DuckdbWarehouseClient.embedded.test.d.ts.map +0 -1
  33. package/dist/warehouseClients/DuckdbWarehouseClient.embedded.test.js +0 -92
  34. package/dist/warehouseClients/DuckdbWarehouseClient.test.d.ts +0 -2
  35. package/dist/warehouseClients/DuckdbWarehouseClient.test.d.ts.map +0 -1
  36. package/dist/warehouseClients/DuckdbWarehouseClient.test.js +0 -1749
  37. package/dist/warehouseClients/MotherduckErrorClassifier.test.d.ts +0 -2
  38. package/dist/warehouseClients/MotherduckErrorClassifier.test.d.ts.map +0 -1
  39. package/dist/warehouseClients/MotherduckErrorClassifier.test.js +0 -31
  40. package/dist/warehouseClients/MotherduckInstanceCache.catalog.test.d.ts +0 -2
  41. package/dist/warehouseClients/MotherduckInstanceCache.catalog.test.d.ts.map +0 -1
  42. package/dist/warehouseClients/MotherduckInstanceCache.catalog.test.js +0 -52
  43. package/dist/warehouseClients/MotherduckInstanceCache.integration.test.d.ts +0 -2
  44. package/dist/warehouseClients/MotherduckInstanceCache.integration.test.d.ts.map +0 -1
  45. package/dist/warehouseClients/MotherduckInstanceCache.integration.test.js +0 -172
  46. package/dist/warehouseClients/MotherduckInstanceCache.security.test.d.ts +0 -2
  47. package/dist/warehouseClients/MotherduckInstanceCache.security.test.d.ts.map +0 -1
  48. package/dist/warehouseClients/MotherduckInstanceCache.security.test.js +0 -192
  49. package/dist/warehouseClients/MotherduckInstanceCache.test.d.ts +0 -2
  50. package/dist/warehouseClients/MotherduckInstanceCache.test.d.ts.map +0 -1
  51. package/dist/warehouseClients/MotherduckInstanceCache.test.js +0 -302
  52. package/dist/warehouseClients/PostgresWarehouseClient.mock.d.ts +0 -8
  53. package/dist/warehouseClients/PostgresWarehouseClient.mock.d.ts.map +0 -1
  54. package/dist/warehouseClients/PostgresWarehouseClient.mock.js +0 -66
  55. package/dist/warehouseClients/PostgresWarehouseClient.test.d.ts +0 -2
  56. package/dist/warehouseClients/PostgresWarehouseClient.test.d.ts.map +0 -1
  57. package/dist/warehouseClients/PostgresWarehouseClient.test.js +0 -371
  58. package/dist/warehouseClients/RedshiftWarehouseClient.test.d.ts +0 -2
  59. package/dist/warehouseClients/RedshiftWarehouseClient.test.d.ts.map +0 -1
  60. package/dist/warehouseClients/RedshiftWarehouseClient.test.js +0 -126
  61. package/dist/warehouseClients/SnowflakeWarehouseClient.mock.d.ts +0 -41
  62. package/dist/warehouseClients/SnowflakeWarehouseClient.mock.d.ts.map +0 -1
  63. package/dist/warehouseClients/SnowflakeWarehouseClient.mock.js +0 -184
  64. package/dist/warehouseClients/SnowflakeWarehouseClient.test.d.ts +0 -2
  65. package/dist/warehouseClients/SnowflakeWarehouseClient.test.d.ts.map +0 -1
  66. package/dist/warehouseClients/SnowflakeWarehouseClient.test.js +0 -777
  67. package/dist/warehouseClients/TrinoWarehouseClient.mock.d.ts +0 -23
  68. package/dist/warehouseClients/TrinoWarehouseClient.mock.d.ts.map +0 -1
  69. package/dist/warehouseClients/TrinoWarehouseClient.mock.js +0 -102
  70. package/dist/warehouseClients/TrinoWarehouseClient.test.d.ts +0 -2
  71. package/dist/warehouseClients/TrinoWarehouseClient.test.d.ts.map +0 -1
  72. package/dist/warehouseClients/TrinoWarehouseClient.test.js +0 -230
  73. package/dist/warehouseClients/WarehouseClient.mock.d.ts +0 -13
  74. package/dist/warehouseClients/WarehouseClient.mock.d.ts.map +0 -1
  75. package/dist/warehouseClients/WarehouseClient.mock.js +0 -51
  76. package/dist/warehouseClients/numericKinds.test.d.ts +0 -2
  77. package/dist/warehouseClients/numericKinds.test.d.ts.map +0 -1
  78. package/dist/warehouseClients/numericKinds.test.js +0 -168
  79. package/dist/warehouseClients/pgProtocolGuard.integration.test.d.ts +0 -2
  80. package/dist/warehouseClients/pgProtocolGuard.integration.test.d.ts.map +0 -1
  81. package/dist/warehouseClients/pgProtocolGuard.integration.test.js +0 -93
  82. package/dist/warehouseClients/pgProtocolGuard.test.d.ts +0 -2
  83. package/dist/warehouseClients/pgProtocolGuard.test.d.ts.map +0 -1
  84. package/dist/warehouseClients/pgProtocolGuard.test.js +0 -48
  85. package/dist/warehouseClients/redshiftIamCredentials.test.d.ts +0 -2
  86. package/dist/warehouseClients/redshiftIamCredentials.test.d.ts.map +0 -1
  87. package/dist/warehouseClients/redshiftIamCredentials.test.js +0 -210
  88. package/dist/warehouseClients/timestampDomain.test.d.ts +0 -2
  89. package/dist/warehouseClients/timestampDomain.test.d.ts.map +0 -1
  90. package/dist/warehouseClients/timestampDomain.test.js +0 -101
@@ -1,129 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- const HiveDriverError_1 = __importDefault(require("@databricks/sql/dist/errors/HiveDriverError"));
40
- const OperationStateError_1 = __importStar(require("@databricks/sql/dist/errors/OperationStateError"));
41
- const StatusError_1 = __importDefault(require("@databricks/sql/dist/errors/StatusError"));
42
- const TCLIService_types_1 = require("@databricks/sql/thrift/TCLIService_types");
43
- const DatabricksWarehouseStartupRetry_1 = require("./DatabricksWarehouseStartupRetry");
44
- const statusError = (errorMessage) => new StatusError_1.default({ statusCode: TCLIService_types_1.TStatusCode.ERROR_STATUS, errorMessage });
45
- const sessionHandleError = statusError('requirement failed: Session handle: SessionHandle [01f19fd1-ac81-1e09-bb7c-357018ed26f1] has not been initialized or had already closed.');
46
- const diskDirectoryError = statusError("Couldn't create directory /local_disk0/tmp/a1b2c3d4-0000-1111-2222-333344445555/_resources");
47
- const warehouseStartingError = statusError('SQL warehouse xyz is not ready to accept connections (current state: STARTING)');
48
- // Pro/classic warehouse in STARTING: 503s until the driver's own HTTP retries give up
49
- const driverRetriesExhaustedError = new HiveDriverError_1.default('Hive driver: 503 when connecting to resource. Max retry count exceeded.');
50
- describe('isDatabricksWarehouseStartingError', () => {
51
- it('matches the errors Databricks returns while a SQL warehouse is stopped or starting', () => {
52
- expect((0, DatabricksWarehouseStartupRetry_1.isDatabricksWarehouseStartingError)(sessionHandleError)).toBe(true);
53
- expect((0, DatabricksWarehouseStartupRetry_1.isDatabricksWarehouseStartingError)(diskDirectoryError)).toBe(true);
54
- expect((0, DatabricksWarehouseStartupRetry_1.isDatabricksWarehouseStartingError)(warehouseStartingError)).toBe(true);
55
- expect((0, DatabricksWarehouseStartupRetry_1.isDatabricksWarehouseStartingError)(driverRetriesExhaustedError)).toBe(true);
56
- });
57
- it('does not match other HTTP failures the driver gave up on', () => {
58
- expect((0, DatabricksWarehouseStartupRetry_1.isDatabricksWarehouseStartingError)(new HiveDriverError_1.default('Hive driver: 500 when connecting to resource. Max retry count exceeded.'))).toBe(false);
59
- });
60
- it('matches the same messages when the operation fails during polling', () => {
61
- const error = new OperationStateError_1.default(OperationStateError_1.OperationStateErrorCode.Error, {
62
- displayMessage: diskDirectoryError.message,
63
- });
64
- expect((0, DatabricksWarehouseStartupRetry_1.isDatabricksWarehouseStartingError)(error)).toBe(true);
65
- expect((0, DatabricksWarehouseStartupRetry_1.isDatabricksWarehouseStartingError)(new OperationStateError_1.default(OperationStateError_1.OperationStateErrorCode.Timeout))).toBe(false);
66
- });
67
- it('does not match SQL, permission or auth failures', () => {
68
- expect((0, DatabricksWarehouseStartupRetry_1.isDatabricksWarehouseStartingError)(statusError('[PARSE_SYNTAX_ERROR] Syntax error at or near FROM'))).toBe(false);
69
- expect((0, DatabricksWarehouseStartupRetry_1.isDatabricksWarehouseStartingError)(statusError('PERMISSION_DENIED: User does not have USE SCHEMA on Schema'))).toBe(false);
70
- expect((0, DatabricksWarehouseStartupRetry_1.isDatabricksWarehouseStartingError)(new Error('Request failed with status 401: Unauthorized'))).toBe(false);
71
- });
72
- it('only matches driver status errors, not other errors with the same text', () => {
73
- expect((0, DatabricksWarehouseStartupRetry_1.isDatabricksWarehouseStartingError)(new Error(sessionHandleError.message))).toBe(false);
74
- });
75
- });
76
- describe('getDatabricksWarehouseStartupRetryDelayMs', () => {
77
- it('backs off exponentially from 2s, capped at 30s', () => {
78
- const delays = [1, 2, 3, 4, 5, 6].map((attempt) => (0, DatabricksWarehouseStartupRetry_1.getDatabricksWarehouseStartupRetryDelayMs)(attempt, 0));
79
- expect(delays).toEqual([2000, 4000, 8000, 16000, 30000, 30000]);
80
- });
81
- it('stops once the next wait would pass the deadline', () => {
82
- const { deadlineMs } = DatabricksWarehouseStartupRetry_1.DATABRICKS_WAREHOUSE_STARTUP_RETRY;
83
- expect((0, DatabricksWarehouseStartupRetry_1.getDatabricksWarehouseStartupRetryDelayMs)(9, deadlineMs - 30000)).toBe(30000);
84
- expect((0, DatabricksWarehouseStartupRetry_1.getDatabricksWarehouseStartupRetryDelayMs)(9, deadlineMs - 29999)).toBeNull();
85
- });
86
- });
87
- describe('DatabricksWarehouseStartupRetry', () => {
88
- beforeEach(() => {
89
- vi.useFakeTimers();
90
- vi.spyOn(console, 'warn').mockImplementation(() => { });
91
- });
92
- afterEach(() => {
93
- vi.useRealTimers();
94
- vi.restoreAllMocks();
95
- });
96
- // Drains the backoff timer so the wait resolves under fake timers
97
- const waitBeforeRetry = async (retry, error) => {
98
- const result = retry.waitBeforeRetry(error);
99
- await vi.runAllTimersAsync();
100
- return result;
101
- };
102
- it('waits with backoff before retrying a warehouse startup error', async () => {
103
- const retry = new DatabricksWarehouseStartupRetry_1.DatabricksWarehouseStartupRetry();
104
- const start = Date.now();
105
- await expect(waitBeforeRetry(retry, sessionHandleError)).resolves.toBe(true);
106
- expect(Date.now() - start).toBe(2000);
107
- await expect(waitBeforeRetry(retry, diskDirectoryError)).resolves.toBe(true);
108
- expect(Date.now() - start).toBe(6000);
109
- expect(console.warn).toHaveBeenCalledTimes(2);
110
- expect(vi.mocked(console.warn).mock.calls[0][0]).toContain('has not been initialized');
111
- });
112
- it('does not wait for errors that are not warehouse startup errors', async () => {
113
- const retry = new DatabricksWarehouseStartupRetry_1.DatabricksWarehouseStartupRetry();
114
- await expect(retry.waitBeforeRetry(statusError('Syntax error near FROM'))).resolves.toBe(false);
115
- expect(vi.getTimerCount()).toBe(0);
116
- });
117
- it('counts time spent outside the wait against the deadline', async () => {
118
- const retry = new DatabricksWarehouseStartupRetry_1.DatabricksWarehouseStartupRetry();
119
- const start = Date.now();
120
- let retries = 0;
121
- // eslint-disable-next-line no-await-in-loop
122
- while (await waitBeforeRetry(retry, sessionHandleError)) {
123
- retries += 1;
124
- vi.advanceTimersByTime(31000); // the driver's own HTTP retries per attempt
125
- }
126
- expect(retries).toBe(11);
127
- expect(Date.now() - start).toBeLessThanOrEqual(DatabricksWarehouseStartupRetry_1.DATABRICKS_WAREHOUSE_STARTUP_RETRY.deadlineMs + 31000);
128
- });
129
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=DuckdbWarehouseClient.embedded.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DuckdbWarehouseClient.embedded.test.d.ts","sourceRoot":"","sources":["../../src/warehouseClients/DuckdbWarehouseClient.embedded.test.ts"],"names":[],"mappings":""}
@@ -1,92 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const node_api_1 = require("@duckdb/node-api");
7
- const common_1 = require("@lightdash/common");
8
- const promises_1 = __importDefault(require("fs/promises"));
9
- const os_1 = __importDefault(require("os"));
10
- const path_1 = __importDefault(require("path"));
11
- const DuckdbWarehouseClient_1 = require("./DuckdbWarehouseClient");
12
- describe.sequential('DuckdbWarehouseClient embedded credentials', () => {
13
- let dataDirectory;
14
- let previousDataDirectory;
15
- beforeEach(async () => {
16
- previousDataDirectory = process.env.PLAYGROUND_DATA_DIR;
17
- dataDirectory = await promises_1.default.mkdtemp(path_1.default.join(os_1.default.tmpdir(), 'lightdash-playground-'));
18
- process.env.PLAYGROUND_DATA_DIR = dataDirectory;
19
- });
20
- afterEach(async () => {
21
- if (previousDataDirectory === undefined) {
22
- delete process.env.PLAYGROUND_DATA_DIR;
23
- }
24
- else {
25
- process.env.PLAYGROUND_DATA_DIR = previousDataDirectory;
26
- }
27
- await promises_1.default.rm(dataDirectory, { recursive: true, force: true });
28
- });
29
- const embeddedCredentials = (dataset) => ({
30
- type: common_1.WarehouseTypes.DUCKDB,
31
- connectionType: common_1.DuckdbConnectionType.EMBEDDED,
32
- dataset,
33
- });
34
- const createEmbeddedDatabase = async (dataset) => {
35
- const databasePath = path_1.default.join(dataDirectory, `${dataset}.duckdb`);
36
- const instance = await node_api_1.DuckDBInstance.create(databasePath);
37
- const connection = await instance.connect();
38
- await connection.run('CREATE TABLE sample AS SELECT 1 AS value');
39
- await connection.run('CREATE MACRO csv_sniffer(file_path) AS TABLE (FROM sniff_csv(file_path))');
40
- connection.closeSync();
41
- instance.closeSync();
42
- };
43
- it.each(['../etc', 'foo/bar', '/tmp/sample'])('rejects unsafe dataset identifiers: %s', (dataset) => {
44
- expect(() => new DuckdbWarehouseClient_1.DuckdbWarehouseClient(embeddedCredentials(dataset))).toThrow('Embedded DuckDB dataset must contain only lowercase letters, numbers, hyphens, and underscores');
45
- });
46
- it('names the missing dataset and base directory', () => {
47
- expect(() => new DuckdbWarehouseClient_1.DuckdbWarehouseClient(embeddedCredentials('missing'))).toThrow(`Embedded DuckDB dataset "missing" was not found in ${dataDirectory}`);
48
- });
49
- it('resolves datasets from the server-configured data directory', async () => {
50
- const databasePath = path_1.default.join(dataDirectory, 'sample.duckdb');
51
- const instance = await node_api_1.DuckDBInstance.create(databasePath);
52
- instance.closeSync();
53
- expect(() => new DuckdbWarehouseClient_1.DuckdbWarehouseClient(embeddedCredentials('sample'))).not.toThrow();
54
- });
55
- it('opens an embedded database read-only', async () => {
56
- await createEmbeddedDatabase('sample');
57
- const client = new DuckdbWarehouseClient_1.DuckdbWarehouseClient(embeddedCredentials('sample'));
58
- await expect(client.runQuery('SELECT value FROM sample')).resolves.toMatchObject({
59
- rows: [{ value: 1 }],
60
- });
61
- });
62
- it('interrupts embedded queries that exceed their execution deadline', async () => {
63
- await createEmbeddedDatabase('sample');
64
- const client = new DuckdbWarehouseClient_1.DuckdbWarehouseClient(embeddedCredentials('sample'), { embeddedQueryTimeoutMs: 50 });
65
- await expect(client.runQuery('SELECT sum(sqrt(i)) FROM range(1000000000000) values(i)')).rejects.toThrow('Playground query exceeded the 0.05 second execution limit and was stopped. Try a simpler query.');
66
- await expect(client.runQuery('SELECT 1 AS value')).resolves.toMatchObject({ rows: [{ value: 1 }] });
67
- });
68
- it.each([
69
- [`SELECT * FROM "read_parquet"('/etc/passwd')`, 'read_parquet'],
70
- [`SELECT * FROM parquet_metadata('/etc/passwd')`, 'parquet_metadata'],
71
- [`SELECT * FROM csv_sniffer('/etc/passwd')`, 'csv_sniffer'],
72
- [`SELECT * FROM sniff_csv('/etc/passwd')`, 'sniff_csv'],
73
- ])('rejects file-reading table functions before execution: %s', async (sql, blockedFunction) => {
74
- await createEmbeddedDatabase('sample');
75
- const client = new DuckdbWarehouseClient_1.DuckdbWarehouseClient(embeddedCredentials('sample'));
76
- await expect(client.runQuery(sql)).rejects.toThrow(`SQL validation error: function '${blockedFunction}' is not allowed`);
77
- });
78
- it.each([
79
- "SELECT '--' AS marker FROM read_csv('/tmp/data.csv')",
80
- `SELECT "--" FROM read_csv('/tmp/data.csv')`,
81
- "SELECT $$--$$ AS marker FROM read_csv('/tmp/data.csv')",
82
- ])('rejects file functions after comment markers in literals', async (sql) => {
83
- await createEmbeddedDatabase('sample');
84
- const client = new DuckdbWarehouseClient_1.DuckdbWarehouseClient(embeddedCredentials('sample'));
85
- await expect(client.runQuery(sql)).rejects.toThrow("SQL validation error: function 'read_csv' is not allowed");
86
- });
87
- it('rejects file functions split by block comments', async () => {
88
- await createEmbeddedDatabase('sample');
89
- const client = new DuckdbWarehouseClient_1.DuckdbWarehouseClient(embeddedCredentials('sample'));
90
- await expect(client.runQuery("SELECT * FROM read_/**/csv('/tmp/data.csv')")).rejects.toThrow("SQL validation error: function 'read_csv' is not allowed");
91
- });
92
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=DuckdbWarehouseClient.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DuckdbWarehouseClient.test.d.ts","sourceRoot":"","sources":["../../src/warehouseClients/DuckdbWarehouseClient.test.ts"],"names":[],"mappings":""}