diff --git a/packages/api/package.json b/packages/api/package.json
index 24d1b844f..9352b5b73 100644
--- a/packages/api/package.json
+++ b/packages/api/package.json
@@ -31,7 +31,7 @@
"cors": "^2.8.5",
"cross-env": "^6.0.3",
"dbgate-datalib": "^6.0.0-alpha.1",
- "dbgate-query-splitter": "^4.11.4",
+ "dbgate-query-splitter": "^4.11.5",
"dbgate-sqltree": "^6.0.0-alpha.1",
"dbgate-tools": "^6.0.0-alpha.1",
"debug": "^4.3.4",
diff --git a/packages/api/src/controllers/sessions.js b/packages/api/src/controllers/sessions.js
index 08e3e11e2..4f2751483 100644
--- a/packages/api/src/controllers/sessions.js
+++ b/packages/api/src/controllers/sessions.js
@@ -141,7 +141,7 @@ module.exports = {
},
executeQuery_meta: true,
- async executeQuery({ sesid, sql, autoCommit }) {
+ async executeQuery({ sesid, sql, autoCommit, limitRows }) {
const session = this.opened.find(x => x.sesid == sesid);
if (!session) {
throw new Error('Invalid session');
@@ -149,7 +149,7 @@ module.exports = {
logger.info({ sesid, sql }, 'Processing query');
this.dispatchMessage(sesid, 'Query execution started');
- session.subprocess.send({ msgtype: 'executeQuery', sql, autoCommit });
+ session.subprocess.send({ msgtype: 'executeQuery', sql, autoCommit, limitRows });
return { state: 'ok' };
},
diff --git a/packages/api/src/proc/sessionProcess.js b/packages/api/src/proc/sessionProcess.js
index 7560f30f9..8dd193db5 100644
--- a/packages/api/src/proc/sessionProcess.js
+++ b/packages/api/src/proc/sessionProcess.js
@@ -117,7 +117,7 @@ async function handleExecuteControlCommand({ command }) {
}
}
-async function handleExecuteQuery({ sql, autoCommit }) {
+async function handleExecuteQuery({ sql, autoCommit, limitRows }) {
lastActivity = new Date().getTime();
await waitConnected();
@@ -146,7 +146,7 @@ async function handleExecuteQuery({ sql, autoCommit }) {
...driver.getQuerySplitterOptions('stream'),
returnRichInfo: true,
})) {
- await handleQueryStream(dbhan, driver, queryStreamInfoHolder, sqlItem);
+ await handleQueryStream(dbhan, driver, queryStreamInfoHolder, sqlItem, undefined, limitRows);
// const handler = new StreamHandler(resultIndex);
// const stream = await driver.stream(systemConnection, sqlItem, handler);
// handler.stream = stream;
diff --git a/packages/api/src/utility/handleQueryStream.js b/packages/api/src/utility/handleQueryStream.js
index 76e573a57..f57cb46fd 100644
--- a/packages/api/src/utility/handleQueryStream.js
+++ b/packages/api/src/utility/handleQueryStream.js
@@ -82,20 +82,27 @@ class QueryStreamTableWriter {
}
close(afterClose) {
- if (this.currentStream) {
- this.currentStream.end(() => {
- this.writeCurrentStats(true, true);
- if (afterClose) afterClose();
- });
- }
+ return new Promise(resolve => {
+ if (this.currentStream) {
+ this.currentStream.end(() => {
+ this.writeCurrentStats(true, true);
+ if (afterClose) afterClose();
+ resolve();
+ });
+ } else {
+ resolve();
+ }
+ });
}
}
class StreamHandler {
- constructor(queryStreamInfoHolder, resolve, startLine, sesid = undefined) {
+ constructor(queryStreamInfoHolder, resolve, startLine, sesid = undefined, limitRows = undefined) {
this.recordset = this.recordset.bind(this);
this.startLine = startLine;
this.sesid = sesid;
+ this.limitRows = limitRows;
+ this.rowsLimitOverflow = false;
this.row = this.row.bind(this);
// this.error = this.error.bind(this);
this.done = this.done.bind(this);
@@ -107,6 +114,7 @@ class StreamHandler {
this.plannedStats = false;
this.queryStreamInfoHolder = queryStreamInfoHolder;
this.resolve = resolve;
+ this.rowCounter = 0;
// currentHandlers = [...currentHandlers, this];
}
@@ -118,6 +126,9 @@ class StreamHandler {
}
recordset(columns) {
+ if (this.rowsLimitOverflow) {
+ return;
+ }
this.closeCurrentWriter();
this.currentWriter = new QueryStreamTableWriter(this.sesid);
this.currentWriter.initializeFromQuery(
@@ -125,6 +136,7 @@ class StreamHandler {
this.queryStreamInfoHolder.resultIndex
);
this.queryStreamInfoHolder.resultIndex += 1;
+ this.rowCounter = 0;
// this.writeCurrentStats();
@@ -135,8 +147,36 @@ class StreamHandler {
// }, 500);
}
row(row) {
- if (this.currentWriter) this.currentWriter.row(row);
- else if (row.message) process.send({ msgtype: 'info', info: { message: row.message }, sesid: this.sesid });
+ if (this.rowsLimitOverflow) {
+ return;
+ }
+
+ if (this.limitRows && this.rowCounter >= this.limitRows) {
+ process.send({
+ msgtype: 'info',
+ info: { message: `Rows limit overflow, loaded ${this.rowCounter} rows, canceling query`, severity: 'error' },
+ sesid: this.sesid,
+ });
+ this.rowsLimitOverflow = true;
+
+ this.queryStreamInfoHolder.canceled = true;
+ if (this.currentWriter) {
+ this.currentWriter.close().then(() => {
+ process.exit(0);
+ });
+ } else {
+ process.exit(0);
+ }
+
+ return;
+ }
+
+ if (this.currentWriter) {
+ this.currentWriter.row(row);
+ this.rowCounter += 1;
+ } else if (row.message) {
+ process.send({ msgtype: 'info', info: { message: row.message }, sesid: this.sesid });
+ }
// this.onRow(this.jslid);
}
// error(error) {
@@ -161,10 +201,10 @@ class StreamHandler {
}
}
-function handleQueryStream(dbhan, driver, queryStreamInfoHolder, sqlItem, sesid = undefined) {
+function handleQueryStream(dbhan, driver, queryStreamInfoHolder, sqlItem, sesid = undefined, limitRows = undefined) {
return new Promise((resolve, reject) => {
const start = sqlItem.trimStart || sqlItem.start;
- const handler = new StreamHandler(queryStreamInfoHolder, resolve, start && start.line, sesid);
+ const handler = new StreamHandler(queryStreamInfoHolder, resolve, start && start.line, sesid, limitRows);
driver.stream(dbhan, sqlItem.text, handler);
});
}
diff --git a/packages/tools/package.json b/packages/tools/package.json
index 146c7a58f..a569a91a2 100644
--- a/packages/tools/package.json
+++ b/packages/tools/package.json
@@ -32,7 +32,7 @@
"typescript": "^4.4.3"
},
"dependencies": {
- "dbgate-query-splitter": "^4.11.4",
+ "dbgate-query-splitter": "^4.11.5",
"dbgate-sqltree": "^6.0.0-alpha.1",
"debug": "^4.3.4",
"json-stable-stringify": "^1.0.1",
diff --git a/packages/web/package.json b/packages/web/package.json
index bc756de37..eb5223a84 100644
--- a/packages/web/package.json
+++ b/packages/web/package.json
@@ -26,7 +26,7 @@
"chartjs-adapter-moment": "^1.0.0",
"cross-env": "^7.0.3",
"dbgate-datalib": "^6.0.0-alpha.1",
- "dbgate-query-splitter": "^4.11.4",
+ "dbgate-query-splitter": "^4.11.5",
"dbgate-sqltree": "^6.0.0-alpha.1",
"dbgate-tools": "^6.0.0-alpha.1",
"dbgate-types": "^6.0.0-alpha.1",
diff --git a/packages/web/src/icons/FontIcon.svelte b/packages/web/src/icons/FontIcon.svelte
index 8190919fc..bd9d0df51 100644
--- a/packages/web/src/icons/FontIcon.svelte
+++ b/packages/web/src/icons/FontIcon.svelte
@@ -222,6 +222,7 @@
'icon premium': 'mdi mdi-star',
'icon upload': 'mdi mdi-upload',
+ 'icon limit': 'mdi mdi-car-speed-limiter',
'img ok': 'mdi mdi-check-circle color-icon-green',
'img ok-inv': 'mdi mdi-check-circle color-icon-inv-green',
diff --git a/packages/web/src/modals/RowsLimitModal.svelte b/packages/web/src/modals/RowsLimitModal.svelte
new file mode 100644
index 000000000..12f62606f
--- /dev/null
+++ b/packages/web/src/modals/RowsLimitModal.svelte
@@ -0,0 +1,41 @@
+
+
+
+
+ Rows limit
+
+
+
+
+ handleSubmit(parseInt(e.detail.value) || null)}
+ data-testid="RowsLimitModal_setLimit"
+ />
+ handleSubmit(null)} data-testid="RowsLimitModal_setNoLimit" />
+
+
+
+
diff --git a/packages/web/src/settings/SettingsModal.svelte b/packages/web/src/settings/SettingsModal.svelte
index 0cec20629..6e66932ab 100644
--- a/packages/web/src/settings/SettingsModal.svelte
+++ b/packages/web/src/settings/SettingsModal.svelte
@@ -227,6 +227,12 @@ ORDER BY
+
+
Connection
diff --git a/packages/web/src/tabs/QueryTab.svelte b/packages/web/src/tabs/QueryTab.svelte
index 41ae484d2..da772adb9 100644
--- a/packages/web/src/tabs/QueryTab.svelte
+++ b/packages/web/src/tabs/QueryTab.svelte
@@ -144,6 +144,9 @@
import HorizontalSplitter from '../elements/HorizontalSplitter.svelte';
import QueryAiAssistant from '../query/QueryAiAssistant.svelte';
import uuidv1 from 'uuid/v1';
+ import ToolStripButton from '../buttons/ToolStripButton.svelte';
+ import { getIntSettingsValue } from '../settings/settingsTools';
+ import RowsLimitModal from '../modals/RowsLimitModal.svelte';
export let tabid;
export let conid;
@@ -197,6 +200,21 @@
let isInTransaction = false;
let isAutocommit = false;
+ const queryRowsLimitLocalStorageKey = `tabdata_limitRows_${tabid}`;
+ function getInitialRowsLimit() {
+ const storageValue = localStorage.getItem(queryRowsLimitLocalStorageKey);
+ if (storageValue == 'nolimit') {
+ return null;
+ }
+ if (storageValue) {
+ return parseInt(storageValue) ?? null;
+ }
+ return getIntSettingsValue('sqlEditor.limitRows', null, 1);
+ }
+
+ let queryRowsLimit = getInitialRowsLimit();
+ $: localStorage.setItem(queryRowsLimitLocalStorageKey, queryRowsLimit ? queryRowsLimit.toString() : 'nolimit');
+
onMount(() => {
intervalId = setInterval(() => {
if (!driver?.singleConnectionOnly && sessionId) {
@@ -362,6 +380,7 @@
sesid,
sql,
autoCommit: driver?.implicitTransactions && isAutocommit,
+ limitRows: queryRowsLimit ? queryRowsLimit : undefined,
});
}
await apiCall('query-history/write', {
@@ -713,6 +732,20 @@
+ {#if !driver?.singleConnectionOnly}
+
+ showModal(RowsLimitModal, {
+ value: queryRowsLimit,
+ onConfirm: value => {
+ queryRowsLimit = value;
+ },
+ })}
+ >
+ {queryRowsLimit ? `Limit ${queryRowsLimit} rows` : 'Unlimited rows'}
+ {/if}
{#if resultCount == 1}
{/if}
diff --git a/plugins/dbgate-plugin-duckdb/package.json b/plugins/dbgate-plugin-duckdb/package.json
index fd1b853c1..77b0e5f48 100644
--- a/plugins/dbgate-plugin-duckdb/package.json
+++ b/plugins/dbgate-plugin-duckdb/package.json
@@ -37,7 +37,7 @@
"dependencies": {
"dbgate-tools": "^6.0.0-alpha.1",
"lodash": "^4.17.21",
- "dbgate-query-splitter": "^4.11.3"
+ "dbgate-query-splitter": "^4.11.5"
},
"optionalDependencies": {
"@duckdb/node-api": "^1.2.1-alpha.16"
diff --git a/plugins/dbgate-plugin-mongo/package.json b/plugins/dbgate-plugin-mongo/package.json
index 8d26925f8..91076b030 100644
--- a/plugins/dbgate-plugin-mongo/package.json
+++ b/plugins/dbgate-plugin-mongo/package.json
@@ -37,7 +37,7 @@
},
"dependencies": {
"bson": "^6.8.0",
- "dbgate-query-splitter": "^4.11.4",
+ "dbgate-query-splitter": "^4.11.5",
"dbgate-tools": "^6.0.0-alpha.1",
"is-promise": "^4.0.0",
"lodash": "^4.17.21",
diff --git a/plugins/dbgate-plugin-mssql/package.json b/plugins/dbgate-plugin-mssql/package.json
index 1de07ca9b..1e0e21477 100644
--- a/plugins/dbgate-plugin-mssql/package.json
+++ b/plugins/dbgate-plugin-mssql/package.json
@@ -38,7 +38,7 @@
"dependencies": {
"@azure/identity": "^4.6.0",
"async-lock": "^1.2.6",
- "dbgate-query-splitter": "^4.11.4",
+ "dbgate-query-splitter": "^4.11.5",
"dbgate-tools": "^6.0.0-alpha.1",
"lodash": "^4.17.21",
"tedious": "^18.6.1"
diff --git a/plugins/dbgate-plugin-mysql/package.json b/plugins/dbgate-plugin-mysql/package.json
index 09b74f0a1..b98ebbc44 100644
--- a/plugins/dbgate-plugin-mysql/package.json
+++ b/plugins/dbgate-plugin-mysql/package.json
@@ -36,7 +36,7 @@
"webpack-cli": "^5.1.4"
},
"dependencies": {
- "dbgate-query-splitter": "^4.11.4",
+ "dbgate-query-splitter": "^4.11.5",
"dbgate-tools": "^6.0.0-alpha.1",
"lodash": "^4.17.21",
"mysql2": "^3.11.3"
diff --git a/plugins/dbgate-plugin-oracle/package.json b/plugins/dbgate-plugin-oracle/package.json
index 38544c880..bdec6926a 100644
--- a/plugins/dbgate-plugin-oracle/package.json
+++ b/plugins/dbgate-plugin-oracle/package.json
@@ -35,7 +35,7 @@
"webpack-cli": "^5.1.4"
},
"dependencies": {
- "dbgate-query-splitter": "^4.11.4",
+ "dbgate-query-splitter": "^4.11.5",
"dbgate-tools": "^6.0.0-alpha.1",
"lodash": "^4.17.21"
},
diff --git a/plugins/dbgate-plugin-postgres/package.json b/plugins/dbgate-plugin-postgres/package.json
index db0892ccf..fe38f9a72 100644
--- a/plugins/dbgate-plugin-postgres/package.json
+++ b/plugins/dbgate-plugin-postgres/package.json
@@ -37,7 +37,7 @@
"dependencies": {
"wkx": "^0.5.0",
"pg-copy-streams": "^6.0.6",
- "dbgate-query-splitter": "^4.11.4",
+ "dbgate-query-splitter": "^4.11.5",
"dbgate-tools": "^6.0.0-alpha.1",
"lodash": "^4.17.21",
"pg": "^8.11.5"
diff --git a/plugins/dbgate-plugin-postgres/src/backend/drivers.js b/plugins/dbgate-plugin-postgres/src/backend/drivers.js
index 3413915b6..1daf620da 100644
--- a/plugins/dbgate-plugin-postgres/src/backend/drivers.js
+++ b/plugins/dbgate-plugin-postgres/src/backend/drivers.js
@@ -164,6 +164,17 @@ const drivers = driverBases.map(driverBase => ({
return { rows: (res.rows || []).map(row => zipDataRow(row, columns)), columns };
},
stream(dbhan, sql, options) {
+ const handleNotice = notice => {
+ const { message, where } = notice;
+ options.info({
+ message,
+ procedure: where,
+ time: new Date(),
+ severity: 'info',
+ detail: notice,
+ });
+ };
+
const query = new pg.Query({
text: sql,
rowMode: 'array',
@@ -171,6 +182,7 @@ const drivers = driverBases.map(driverBase => ({
let wasHeader = false;
let columnsToTransform = null;
+ dbhan.client.on('notice', handleNotice);
query.on('row', row => {
if (!wasHeader) {
@@ -211,6 +223,7 @@ const drivers = driverBases.map(driverBase => ({
wasHeader = true;
}
+ dbhan.client.off('notice', handleNotice);
options.done();
});
@@ -228,6 +241,7 @@ const drivers = driverBases.map(driverBase => ({
time: new Date(),
severity: 'error',
});
+ dbhan.client.off('notice', handleNotice);
options.done();
});
diff --git a/plugins/dbgate-plugin-redis/package.json b/plugins/dbgate-plugin-redis/package.json
index 89ef1a763..e0581f65c 100644
--- a/plugins/dbgate-plugin-redis/package.json
+++ b/plugins/dbgate-plugin-redis/package.json
@@ -34,7 +34,7 @@
"webpack-cli": "^5.1.4"
},
"dependencies": {
- "dbgate-query-splitter": "^4.11.4",
+ "dbgate-query-splitter": "^4.11.5",
"dbgate-tools": "^6.0.0-alpha.1",
"lodash": "^4.17.21",
"async": "^3.2.3",
diff --git a/plugins/dbgate-plugin-sqlite/package.json b/plugins/dbgate-plugin-sqlite/package.json
index 9c45ac25d..6c599ccae 100644
--- a/plugins/dbgate-plugin-sqlite/package.json
+++ b/plugins/dbgate-plugin-sqlite/package.json
@@ -37,7 +37,7 @@
"dependencies": {
"dbgate-tools": "^6.0.0-alpha.1",
"lodash": "^4.17.21",
- "dbgate-query-splitter": "^4.11.4"
+ "dbgate-query-splitter": "^4.11.5"
},
"optionalDependencies": {
"libsql": "0.5.0-pre.6",
diff --git a/yarn.lock b/yarn.lock
index 92632a452..3d12564cb 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -542,7 +542,7 @@
"@azure/core-util" "^1.1.0"
tslib "^2.6.2"
-"@azure/core-auth@^1.7.2", "@azure/core-auth@^1.8.0", "@azure/core-auth@^1.9.0":
+"@azure/core-auth@^1.7.1", "@azure/core-auth@^1.7.2", "@azure/core-auth@^1.8.0", "@azure/core-auth@^1.9.0":
version "1.9.0"
resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.9.0.tgz#ac725b03fabe3c892371065ee9e2041bee0fd1ac"
integrity sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==
@@ -590,6 +590,19 @@
dependencies:
tslib "^2.6.2"
+"@azure/core-rest-pipeline@^1.15.1", "@azure/core-rest-pipeline@^1.8.0":
+ version "1.20.0"
+ resolved "https://registry.yarnpkg.com/@azure/core-rest-pipeline/-/core-rest-pipeline-1.20.0.tgz#916d8d6c9cff6b556f0b0bfd5b923526d590e2d9"
+ integrity sha512-ASoP8uqZBS3H/8N8at/XwFr6vYrRP3syTK0EUjDXQy0Y1/AUS+QeIRThKmTNJO2RggvBBxaXDPM7YoIwDGeA0g==
+ dependencies:
+ "@azure/abort-controller" "^2.0.0"
+ "@azure/core-auth" "^1.8.0"
+ "@azure/core-tracing" "^1.0.1"
+ "@azure/core-util" "^1.11.0"
+ "@azure/logger" "^1.0.0"
+ "@typespec/ts-http-runtime" "^0.2.2"
+ tslib "^2.6.2"
+
"@azure/core-rest-pipeline@^1.17.0":
version "1.18.2"
resolved "https://registry.yarnpkg.com/@azure/core-rest-pipeline/-/core-rest-pipeline-1.18.2.tgz#fa3a83b412d4b3e33edca30a71b1d5838306c075"
@@ -625,6 +638,13 @@
dependencies:
tslib "^2.6.2"
+"@azure/core-tracing@^1.1.1":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.2.0.tgz#7be5d53c3522d639cf19042cbcdb19f71bc35ab2"
+ integrity sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg==
+ dependencies:
+ tslib "^2.6.2"
+
"@azure/core-util@^1.0.0", "@azure/core-util@^1.1.0", "@azure/core-util@^1.2.0", "@azure/core-util@^1.6.1", "@azure/core-util@^1.9.0":
version "1.9.0"
resolved "https://registry.yarnpkg.com/@azure/core-util/-/core-util-1.9.0.tgz#469afd7e6452d5388b189f90d33f7756b0b210d1"
@@ -633,6 +653,15 @@
"@azure/abort-controller" "^2.0.0"
tslib "^2.6.2"
+"@azure/core-util@^1.10.0", "@azure/core-util@^1.8.1":
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/@azure/core-util/-/core-util-1.12.0.tgz#0b8c2837e6d67c3fbaeae20df34cf07f66b3480d"
+ integrity sha512-13IyjTQgABPARvG90+N2dXpC+hwp466XCdQXPCRlbWHgd3SJd5Q1VvaBGv6k1BIa4MQm6hAF1UBU1m8QUxV8sQ==
+ dependencies:
+ "@azure/abort-controller" "^2.0.0"
+ "@typespec/ts-http-runtime" "^0.2.2"
+ tslib "^2.6.2"
+
"@azure/core-util@^1.11.0":
version "1.11.0"
resolved "https://registry.yarnpkg.com/@azure/core-util/-/core-util-1.11.0.tgz#f530fc67e738aea872fbdd1cc8416e70219fada7"
@@ -641,6 +670,23 @@
"@azure/abort-controller" "^2.0.0"
tslib "^2.6.2"
+"@azure/cosmos@^4.1.0":
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/@azure/cosmos/-/cosmos-4.3.0.tgz#aeb809f2c7837ea0f5613f2376b9b756ab7f348d"
+ integrity sha512-0Ls3l1uWBBSphx6YRhnM+w7rSvq8qVugBCdO6kSiNuRYXEf6+YWLjbzz4e7L2kkz/6ScFdZIOJYP+XtkiRYOhA==
+ dependencies:
+ "@azure/abort-controller" "^2.0.0"
+ "@azure/core-auth" "^1.7.1"
+ "@azure/core-rest-pipeline" "^1.15.1"
+ "@azure/core-tracing" "^1.1.1"
+ "@azure/core-util" "^1.8.1"
+ "@azure/keyvault-keys" "^4.8.0"
+ fast-json-stable-stringify "^2.1.0"
+ jsbi "^4.3.0"
+ priorityqueuejs "^2.0.0"
+ semaphore "^1.1.0"
+ tslib "^2.6.2"
+
"@azure/identity@^4.2.1":
version "4.9.1"
resolved "https://registry.yarnpkg.com/@azure/identity/-/identity-4.9.1.tgz#ee4b9435f1b96bea5985e7dec989760a67d9a119"
@@ -678,6 +724,20 @@
stoppable "^1.1.0"
tslib "^2.2.0"
+"@azure/keyvault-common@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@azure/keyvault-common/-/keyvault-common-2.0.0.tgz#91e50df01d9bfa8f55f107bb9cdbc57586b2b2a4"
+ integrity sha512-wRLVaroQtOqfg60cxkzUkGKrKMsCP6uYXAOomOIysSMyt1/YM0eUn9LqieAWM8DLcU4+07Fio2YGpPeqUbpP9w==
+ dependencies:
+ "@azure/abort-controller" "^2.0.0"
+ "@azure/core-auth" "^1.3.0"
+ "@azure/core-client" "^1.5.0"
+ "@azure/core-rest-pipeline" "^1.8.0"
+ "@azure/core-tracing" "^1.0.0"
+ "@azure/core-util" "^1.10.0"
+ "@azure/logger" "^1.1.4"
+ tslib "^2.2.0"
+
"@azure/keyvault-keys@^4.4.0":
version "4.8.0"
resolved "https://registry.yarnpkg.com/@azure/keyvault-keys/-/keyvault-keys-4.8.0.tgz#1513b3a187bb3a9a372b5980c593962fb793b2ad"
@@ -695,6 +755,24 @@
"@azure/logger" "^1.0.0"
tslib "^2.2.0"
+"@azure/keyvault-keys@^4.8.0":
+ version "4.9.0"
+ resolved "https://registry.yarnpkg.com/@azure/keyvault-keys/-/keyvault-keys-4.9.0.tgz#83ad2370429d1f576e6c5c59ff165761e2d8feab"
+ integrity sha512-ZBP07+K4Pj3kS4TF4XdkqFcspWwBHry3vJSOFM5k5ZABvf7JfiMonvaFk2nBF6xjlEbMpz5PE1g45iTMme0raQ==
+ dependencies:
+ "@azure/abort-controller" "^2.0.0"
+ "@azure/core-auth" "^1.3.0"
+ "@azure/core-client" "^1.5.0"
+ "@azure/core-http-compat" "^2.0.1"
+ "@azure/core-lro" "^2.2.0"
+ "@azure/core-paging" "^1.1.1"
+ "@azure/core-rest-pipeline" "^1.8.1"
+ "@azure/core-tracing" "^1.0.0"
+ "@azure/core-util" "^1.0.0"
+ "@azure/keyvault-common" "^2.0.0"
+ "@azure/logger" "^1.0.0"
+ tslib "^2.2.0"
+
"@azure/logger@^1.0.0":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.1.2.tgz#3f4b876cefad328dc14aff8b850d63b611e249dc"
@@ -702,6 +780,14 @@
dependencies:
tslib "^2.6.2"
+"@azure/logger@^1.1.4":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.2.0.tgz#a79aefcdd57d2a96603fab59c9a66e0d9022a564"
+ integrity sha512-0hKEzLhpw+ZTAfNJyRrn6s+V0nDWzXk9OjBr2TiGIu0OfMr5s2V4FpKLTAK3Ca5r5OKLbf4hkOGDPyiRjie/jA==
+ dependencies:
+ "@typespec/ts-http-runtime" "^0.2.2"
+ tslib "^2.6.2"
+
"@azure/msal-browser@^4.0.1":
version "4.2.0"
resolved "https://registry.yarnpkg.com/@azure/msal-browser/-/msal-browser-4.2.0.tgz#3d817357cfb0e6aef68bb708df7ccce9fe14ca65"
@@ -2576,6 +2662,15 @@
dependencies:
"@types/yargs-parser" "*"
+"@typespec/ts-http-runtime@^0.2.2":
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/@typespec/ts-http-runtime/-/ts-http-runtime-0.2.2.tgz#a0c7458ed99aae6d7eb22efc17a839cec0b4a1b3"
+ integrity sha512-Gz/Sm64+Sq/vklJu1tt9t+4R2lvnud8NbTD/ZfpZtMiUX7YeVpCA8j6NSW8ptwcoLL+NmYANwqP8DV0q/bwl2w==
+ dependencies:
+ http-proxy-agent "^7.0.0"
+ https-proxy-agent "^7.0.0"
+ tslib "^2.6.2"
+
"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1":
version "1.12.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb"
@@ -4275,15 +4370,10 @@ dbgate-plugin-tools@^1.0.4, dbgate-plugin-tools@^1.0.7, dbgate-plugin-tools@^1.0
pacote "^11.1.13"
rimraf "^3.0.2"
-dbgate-query-splitter@^4.11.3:
- version "4.11.3"
- resolved "https://registry.yarnpkg.com/dbgate-query-splitter/-/dbgate-query-splitter-4.11.3.tgz#8391363be4cac1bd41793e1aebb8c85b5b296f28"
- integrity sha512-rdAGiaQ3f02gvN2SPMX5j3DqojIL/WE+EArvc7OkVk5QuCDNojWvDjqSxJoOBG593+Ob3lQ8/FYbKRCOYhAVYg==
-
-dbgate-query-splitter@^4.11.4:
- version "4.11.4"
- resolved "https://registry.yarnpkg.com/dbgate-query-splitter/-/dbgate-query-splitter-4.11.4.tgz#9a137329b84a5b353aedf41bdf58721fd9e32614"
- integrity sha512-t0lsumpMsX0WSAAjsiFoYBSgj/bVOmmt6yFaPdmQcDBp1nq1wVt1iLS6oYYH9d20nrCwjhdUHBxuJFJ+bhimRw==
+dbgate-query-splitter@^4.11.5:
+ version "4.11.5"
+ resolved "https://registry.yarnpkg.com/dbgate-query-splitter/-/dbgate-query-splitter-4.11.5.tgz#ed57b570303146258bc5e727c6d7f76d19082e29"
+ integrity sha512-xr4rWhuLeaaDdfdDpMOesCAnZGPUKTH9WPU/GSCHzoKR6NI60IyPjMccShLY+rPIsNw2SZQtbic2aCoFcwI4kg==
debug@2.6.9, debug@^2.2.0, debug@^2.3.3:
version "2.6.9"
@@ -5153,7 +5243,7 @@ fast-glob@^3.0.3, fast-glob@^3.3.2:
merge2 "^1.3.0"
micromatch "^4.0.4"
-fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0:
+fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
@@ -7365,6 +7455,11 @@ js2xmlparser@^4.0.2:
dependencies:
xmlcreate "^2.0.4"
+jsbi@^4.3.0:
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/jsbi/-/jsbi-4.3.2.tgz#8a4d05d4e09907d73042135b6aa55a6d161ee955"
+ integrity sha512-9fqMSQbhJykSeii05nxKl4m6Eqn2P6rOlYiS+C5Dr/HPIU/7yZxu5qzbs40tgaFORiw2Amd0mirjxatXYMkIew==
+
jsbn@1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040"
@@ -9254,6 +9349,11 @@ printj@~1.1.0:
resolved "https://registry.yarnpkg.com/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222"
integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==
+priorityqueuejs@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/priorityqueuejs/-/priorityqueuejs-2.0.0.tgz#96064040edd847ee9dd3013d8e16297399a6bd4f"
+ integrity sha512-19BMarhgpq3x4ccvVi8k2QpJZcymo/iFUcrhPd4V96kYGovOdTsWwy7fxChYi4QY+m2EnGBWSX9Buakz+tWNQQ==
+
process-nextick-args@~1.0.6:
version "1.0.7"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
@@ -9905,6 +10005,11 @@ secure-json-parse@^2.4.0:
resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.7.0.tgz#5a5f9cd6ae47df23dba3151edd06855d47e09862"
integrity sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==
+semaphore@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa"
+ integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==
+
semiver@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/semiver/-/semiver-1.1.0.tgz#9c97fb02c21c7ce4fcf1b73e2c7a24324bdddd5f"