mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-28 09:36:00 +00:00
Merge branch 'master' of https://github.com/dbgate/dbgate
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -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' };
|
||||
},
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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',
|
||||
|
||||
41
packages/web/src/modals/RowsLimitModal.svelte
Normal file
41
packages/web/src/modals/RowsLimitModal.svelte
Normal file
@@ -0,0 +1,41 @@
|
||||
<script lang="ts">
|
||||
import FormStyledButton from '../buttons/FormStyledButton.svelte';
|
||||
|
||||
import FormProvider from '../forms/FormProvider.svelte';
|
||||
import FormSubmit from '../forms/FormSubmit.svelte';
|
||||
import FormTextField from '../forms/FormTextField.svelte';
|
||||
import ModalBase from './ModalBase.svelte';
|
||||
import { closeCurrentModal } from './modalTools';
|
||||
|
||||
export let value;
|
||||
export let onConfirm;
|
||||
|
||||
const handleSubmit = async value => {
|
||||
closeCurrentModal();
|
||||
onConfirm(value);
|
||||
};
|
||||
</script>
|
||||
|
||||
<FormProvider initialValues={{ value }}>
|
||||
<ModalBase {...$$restProps}>
|
||||
<svelte:fragment slot="header">Rows limit</svelte:fragment>
|
||||
|
||||
<FormTextField
|
||||
label="Return only N rows from query"
|
||||
name="value"
|
||||
focused
|
||||
data-testid="RowsLimitModal_value"
|
||||
placeholder="(No rows limit)"
|
||||
/>
|
||||
|
||||
<svelte:fragment slot="footer">
|
||||
<FormSubmit
|
||||
value="OK"
|
||||
on:click={e => handleSubmit(parseInt(e.detail.value) || null)}
|
||||
data-testid="RowsLimitModal_setLimit"
|
||||
/>
|
||||
<FormStyledButton value="Set no limit" on:click={e => handleSubmit(null)} data-testid="RowsLimitModal_setNoLimit" />
|
||||
<FormStyledButton type="button" value="Cancel" on:click={closeCurrentModal} data-testid="RowsLimitModal_cancel" />
|
||||
</svelte:fragment>
|
||||
</ModalBase>
|
||||
</FormProvider>
|
||||
@@ -227,6 +227,12 @@ ORDER BY
|
||||
</FormFieldTemplateLarge>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<FormTextField
|
||||
name="sqlEditor.limitRows"
|
||||
label="Return only N rows from query"
|
||||
placeholder="(No rows limit)"
|
||||
/>
|
||||
</svelte:fragment>
|
||||
<svelte:fragment slot="2">
|
||||
<div class="heading">Connection</div>
|
||||
|
||||
@@ -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 @@
|
||||
<ToolStripCommandButton command="query.kill" data-testid="QueryTab_killButton" />
|
||||
<ToolStripSaveButton idPrefix="query" />
|
||||
<ToolStripCommandButton command="query.formatCode" />
|
||||
{#if !driver?.singleConnectionOnly}
|
||||
<ToolStripButton
|
||||
icon="icon limit"
|
||||
on:click={() =>
|
||||
showModal(RowsLimitModal, {
|
||||
value: queryRowsLimit,
|
||||
onConfirm: value => {
|
||||
queryRowsLimit = value;
|
||||
},
|
||||
})}
|
||||
>
|
||||
{queryRowsLimit ? `Limit ${queryRowsLimit} rows` : 'Unlimited rows'}</ToolStripButton
|
||||
>
|
||||
{/if}
|
||||
{#if resultCount == 1}
|
||||
<ToolStripExportButton command="jslTableGrid.export" {quickExportHandlerRef} label="Export result" />
|
||||
{/if}
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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();
|
||||
});
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
127
yarn.lock
127
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"
|
||||
|
||||
Reference in New Issue
Block a user